;------------------------------------------------------------
; Deeply modified installscript for Populous with patcher, by Harry
; Adapted from a script by Bert Jahn
;------------------------------------------------------------
;****************************

(set #readme-file "Readme")		;name of readme file
(set #CI_drive "Populous:")		;default source drive
(set #cleanup "")			;files to delete after install

;****************************

(procedure P_decrfiles
  (run ("5064decr p:ad.pic"))
  (run ("5064decr p:mo.pic"))
  (run ("5064decr p:nd0"))
  (run ("5064decr p:nd1"))
  (run ("5064decr p:nd2"))
  (run ("5064decr p:nd3"))
  (run ("5064decr p:nt.dat"))
  (run ("5064decr p:ords"))
  (run ("5064decr p:rd.pic"))
  (run ("5064decr p:rites0.dat"))
  (run ("5064decr p:r_320.dat"))
  (run ("5064decr p:uths.pic"))
  (run ("5064decr p:z.pic"))
)

;****************************

(procedure P_installdatadisk
  (
    (message "Please insert your Populous Data disk in any drive and select it.")
    (set #CI_drive 
      (askdir
        (prompt ("What is your Populous data disk?"))
        (help @askdir-help)
        (default @default-dest)
        (disk)
      )
    )
    (if
      (= (exists ("%sland4" #CI_drive)) 1)
      (
        (copyfiles
          (help @copyfiles-help)
          (source ("%slevel.dat" #CI_drive))
          (newname ("vel.dat"))
          (dest #dest)
        )
        (copyfiles
          (help @copyfiles-help)
          (source ("%sland4" #CI_drive))
          (newname ("nd4"))
          (dest #dest)
        )
        (if
          (= (exists ("%sland5" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%sland5" #CI_drive))
              (newname ("nd5"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%sland6" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%sland6" #CI_drive))
              (newname ("nd6"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%sland7" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%sland7" #CI_drive))
              (newname ("nd7"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%sland8" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%sland8" #CI_drive))
              (newname ("nd8"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%sland9" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%sland9" #CI_drive))
              (newname ("nd9"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%ssprites4.dat" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%ssprites4.dat" #CI_drive))
              (newname ("rites4.dat"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%ssprites5.dat" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%ssprites5.dat" #CI_drive))
              (newname ("rites5.dat"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%ssprites6.dat" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%ssprites6.dat" #CI_drive))
              (newname ("rites6.dat"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%ssprites7.dat" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%ssprites7.dat" #CI_drive))
              (newname ("rites7.dat"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%ssprites8.dat" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%ssprites8.dat" #CI_drive))
              (newname ("rites8.dat"))
              (dest #dest)
            )
          )
        )
        (if
          (= (exists ("%ssprites9.dat" #CI_drive)) 1)
          (
            (copyfiles
              (help @copyfiles-help)
              (source ("%ssprites9.dat" #CI_drive))
              (newname ("rites9.dat"))
              (dest #dest)
            )
          )
        )
      )
      (abort "That was not the Populous Data disk.")
    )
  )
)
;****************************
(set #paramver "27")
(set #instmode
  (askchoice
    (prompt "Please select installation-mode")
    (default 0)
    (choices "Install your original (or backup) on harddisk" "Patch a backup of your original" "Install an already patched backup to harddisk")
    (help @askchoice-help "\n\n Installing your original on harddisk will copy your disk to hd, then patch it.\nPatching a backup of your original requires a backup (who had ever thought this?).\nWith install an already patched backup to hd you may install a former with that script patched backup to hd.")
  )
)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(if
  (= #instmode 1)
  (
    (message "Please insert now a BACKUP copy of your original in any drive.")
    (set @default-dest "Backup-Disk")
    (if
      (= (exists "populous:1") 1)
      (set #paramver "27cr")
    )
    (if
      (= #paramver "27cr")
      (rename "populous:1" "populous:populous")
    )
    (run ("patcher -ppopulous.param"))
    (if
      (= #paramver "27cr")
      (rename "populous:populous" "populous:1")
    )
  )
)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(if
  (= #instmode 0)
  (
    (set #toinstall
      (askchoice
        (prompt "Select installation procedure")
        (default 0)
        (choices "Original Populous" "Datadisk (requires also original Populous)")
	(help @askchoice-help)
      )
    )
    (if
      (= #toinstall 0)
      (
        (set #toinstall "game")
      )
    )
    (if
      (= #toinstall 1)
      (
        (set #toinstall "data")
        (set @app-name "Populousdata")
      )
    )
    (set @default-dest
      (askdir
        (prompt ("Where should \"%s\" installed ?\nA drawer \"%s\" will automatically created." @app-name @app-name))
        (help @askdir-help)
        (default @default-dest)
        (disk)
      )
    )

    (set #dest (tackon @default-dest @app-name))

;if anything similar exist delete it
    (if
      (exists #dest)
      (if
	(= (askbool
	  (prompt "Destinationdrawer already exists, delete it?")
	  (help @askbool-help)
        ) 1)
        (run ("Delete \"%s\" \"%s.info\" all" #dest #dest))
      )
    )

    (makedir #dest
      (help @makedir-help)
      (infos)
    )

;----------------------------

    (working "Please insert now your writeprotected original or backup.")

    (if
      (= (exists "populous:1") 1)
      (set #paramver "27cr")
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%s" #CI_drive))
      (dest #dest)
      (pattern "~(c|devs|l|libs|s|2|pipemania|#?.info)")
    )

;----------------------------

    (message "Please remove your original disk from the drive.")
    (if
      (= (exists #CI_drive (noreq)) 2)
      (abort "Quittet due not removed disk.")
    )
    (run ("c:assign \"%s\" \"%s\"" #CI_drive #dest))
    (if
      (= #paramver "27cr")
      (rename "populous:1" "populous:populous")
    )

    (run ("patcher -ppopulous.param"))

    (run ("c:assign \"%s\" remove" #CI_drive))

    (run ("c:assign P: \"%s\"" #dest))

    (rename "p:populous" "p:populous1")
    (rename "p:demo.pic" "p:mo.pic")
    (rename "p:font.dat" "p:nt.dat")
    (rename "p:gmusic1" "p:usic1")
    (rename "p:gwords" "p:ords")
    (rename "p:land0" "p:nd0")
    (rename "p:land1" "p:nd1")
    (rename "p:land2" "p:nd2")
    (rename "p:land3" "p:nd3")
    (rename "p:level.dat" "p:vel.dat")
    (rename "p:load.pic" "p:ad.pic")
    (rename "p:lord.pic" "p:rd.pic")
    (rename "p:mouths.pic" "p:uths.pic")
    (rename "p:popsam" "p:psam")
    (rename "p:qaz.pic" "p:z.pic")
    (rename "p:sprites0.dat" "p:rites0.dat")
    (rename "p:spr_320.dat" "p:r_320.dat")

    (run ("populoushd"))
    (if
      (= #paramver "27cr")
      (P_decrfiles)
    )

    (run ("c:assign P: remove"))

    (copyfiles
      (help @copyfiles-help)
      (source ("Populous.inf"))
      (newname ("Populous.info"))
      (dest #dest)
    )
    (if
      (exists #readme-file)
      (
        (copyfiles
          (help @copyfiles-help)
          (source #readme-file)
          (dest #dest)
        )
        (copyfiles
          (help @copyfiles-help)
          (source ("%s.info" #readme-file))
          (dest #dest)
        )
      )
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("Populous_st"))
      (newname ("Populous"))
      (dest #dest)
    )

    (if
      (= #toinstall "data")
      (P_installdatadisk)
    )

    (run ("Delete %s ALL QUIET FORCE" #cleanup))	;delete all temporary files

    (if
      (exists #readme-file)
      (if 
	(= 0 (run ("SYS:Utilities/Multiview %s" #readme-file)))
	("")
	(run ("SYS:Utilities/More %s" #readme-file))
      )
    )
  )
)
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(if
  (= #instmode 2)
  (
    (set #toinstall
      (askchoice
        (prompt "Select installation procedure")
        (default 0)
        (choices "Original Populous" "Datadisk (requires also original Populous)")
	(help @askchoice-help)
      )
    )
    (if
      (= #toinstall 0)
      (
        (set #toinstall "game")
      )
    )
    (if
      (= #toinstall 1)
      (
        (set #toinstall "data")
        (set @app-name "Populousdata")
      )
    )
    (set @default-dest
      (askdir
        (prompt ("Where should \"%s\" installed ?\nA drawer \"%s\" will automatically created." @app-name @app-name))
        (help @askdir-help)
        (default @default-dest)
        (disk)
      )
    )

    (set #dest (tackon @default-dest @app-name))

;if anything similar exist delete it
    (if
      (exists #dest)
      (if
	(= (askbool
	  (prompt "Destinationdrawer already exists, delete it?")
	  (help @askbool-help)
        ) 1)
        (run ("Delete \"%s\" \"%s.info\" all" #dest #dest))
      )
    )

    (makedir #dest
      (help @makedir-help)
      (infos)
    )
    (if
      (exists #readme-file)
      (
        (copyfiles
          (help @copyfiles-help)
          (source #readme-file)
          (dest #dest)
        )
        (copyfiles
          (help @copyfiles-help)
          (source ("%s.info" #readme-file))
          (dest #dest)
        )
      )
    )
;----------------------------

    (working "Please insert now your already modified backup disk.")
    (if
      (= (exists "populous:1") 1)
      (set #paramver "27cr")
    )

    (run ("c:assign P: \"%s\"" #dest))

    (if
      (= #paramver "27cr")
      (copyfiles
        (help @copyfiles-help)
        (source ("%s1" #CI_drive))
        (newname ("populous1"))
        (dest #dest)
      )
      (copyfiles
        (help @copyfiles-help)
        (source ("%spopulous" #CI_drive))
        (newname ("populous1"))
        (dest #dest)
      )
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%spopulous.prg" #CI_drive))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sdemo.pic" #CI_drive))
      (newname ("mo.pic"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sfont.dat" #CI_drive))
      (newname ("nt.dat"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sgmusic1" #CI_drive))
      (newname ("usic1"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sgwords" #CI_drive))
      (newname ("ords"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sland0" #CI_drive))
      (newname ("nd0"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sland1" #CI_drive))
      (newname ("nd1"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sland2" #CI_drive))
      (newname ("nd2"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sland3" #CI_drive))
      (newname ("nd3"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%slevel.dat" #CI_drive))
      (newname ("vel.dat"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sload.pic" #CI_drive))
      (newname ("ad.pic"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%slord.pic" #CI_drive))
      (newname ("rd.pic"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%smouths.pic" #CI_drive))
      (newname ("uths.pic"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%spopsam" #CI_drive))
      (newname ("psam"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sqaz.pic" #CI_drive))
      (newname ("z.pic"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%ssprites0.dat" #CI_drive))
      (newname ("rites0.dat"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("%sspr_320.dat" #CI_drive))
      (newname ("r_320.dat"))
      (dest #dest)
    )


    (copyfiles
      (help @copyfiles-help)
      (source ("Populous.inf"))
      (newname ("Populous.info"))
      (dest #dest)
    )
    (copyfiles
      (help @copyfiles-help)
      (source ("Populous_st"))
      (newname ("Populous"))
      (dest #dest)
    )

    (run ("populoushd"))
    (if
      (= #paramver "27cr")
      (P_decrfiles)
    )

    (run ("c:assign P: remove"))

    (if
      (= #toinstall "data")
      (P_installdatadisk)
    )

;----------------------------

    (run ("Delete %s ALL QUIET FORCE" #cleanup))	;delete all temporary files

    (if
      (exists #readme-file)
      (if 
	(= 0 (run ("SYS:Utilities/Multiview %s" #readme-file)))
	("")
	(run ("SYS:Utilities/More %s" #readme-file))
      )
    )
  )
)

(exit)
