home *** CD-ROM | disk | FTP | other *** search
-
- -- -----------------------------------------------------------------
- -- Init
- -- -----------------------------------------------------------------
- local function prog_init()
- initModels()
- sound_playMusic("music/rybky01.ogg")
- local pokus = getRestartCount()
- local roompole = createArray(1)
-
-
- -- -------------------------------------------------------------
- local function prog_init_room()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- room.uvod = 0
- room.lebzna = 0
- room.lastura = 0
- room.jizdam = random(15) + 3
- room.jizdav = random(50) + 10
- if pokus > 1 then
- if random(100) < 30 then
- room.uvod = 1
- end
- if random(100) < 50 then
- room.lastura = 1
- end
- if random(100) < 60 then
- room.lebzna = 1
- end
- if random(100) < 20 then
- room.jizdam = -1
- end
- if random(100) < 30 then
- room.jizdav = -1
- end
- end
- room.huhuh = 0
-
- return function()
- if isReady(small) and isReady(big) and no_dialog() then
- if room.uvod == 0 then
- addv(random(20) + 50, "zd1-v-civil")
- switch(roompole[0]){
- [0] = function()
- addm(random(10), "zd1-m-dolu")
- end,
- [1] = function()
- addm(random(10), "zd1-m-tlac")
- roompole[0] = roompole[0] + 1
- end,
- [2] = function()
- if random(2) == 0 then
- addm(random(10), "zd1-m-tlac")
- else
- addm(random(10), "zd1-m-dolu")
- end
- end,
- }
- room.uvod = 1
- end
- if room.lastura == 0 and look_at(small, shelka) and math.abs(ydist(small, shelka)) < 3 and random(100) < 1 then
- if random(2) == 0 then
- addm(0, "zd1-m-last")
- else
- addm(0, "zd1-m-poved")
- end
- if random(2) == 0 then
- addv(random(10), "zd1-v-talis")
- else
- addv(random(3), "zd1-v-styd")
- end
- room.lastura = 1
- elseif room.lebzna == 0 and look_at(big, llebka) and math.abs(ydist(big, llebka)) < 3 and random(100) < 1 then
- addv(20, "zd1-v-lebka")
- addm(random(8), "zd1-m-stejne")
- room.lebzna = 1
- elseif small.jede == room.jizdam then
- addm(0, "zd1-m-cesta")
- room.jizdam = -1
- elseif big.jede == room.jizdav then
- addv(0, "zd1-v-krecek")
- addm(3, "zd1-m-slap")
- room.jizdav = -1
- elseif random(1000) < 8 then
- pom1 = room.huhuh
- if room.huhuh == 0 then
- room.huhuh = random(3) + 1
- else
- room.huhuh = random(4) + 1
- end
- if pom1 == room.huhuh then
- room.huhuh = 5
- end
- planDialogSet(5, "zd1-x-huhu"..room.huhuh, 101, dedek, "mluvi")
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_vytah()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- --NOTE: double rope
- game_addDecor("rope", vytah.index, stroj.index, 43, 0, 58, 27)
- game_addDecor("rope", vytah.index, stroj.index, 43 + 3, 0, 58 + 3, 27)
-
- return function()
- if vytah.dir == dir_up then
- if roompole[0] == 0 then
- roompole[0] = 1
- end
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_stroj()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- return function()
- if stroj.X == vytah.X - 1 then
- if stroj.dir == dir_no and vytah.dir == dir_down then
- pom1 = 2
- elseif stroj.dir == dir_up and vytah.dir == dir_no then
- pom1 = 1
- elseif stroj.dir == dir_no and vytah.dir == dir_up then
- pom1 = -1
- elseif stroj.dir == dir_down and vytah.dir == dir_no then
- pom1 = -2
- else
- pom1 = 0
- end
- stroj.afaze = stroj.afaze + pom1
- if stroj.afaze > 5 then
- stroj.afaze = stroj.afaze - 6
- elseif stroj.afaze < 0 then
- stroj.afaze = stroj.afaze + 6
- end
- end
-
- stroj:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_hlavicka()
- return function()
- if hlavicka.afaze == 0 and random(100) < 2 or hlavicka.afaze ~= 0 and random(100) < 5 then
- hlavicka.afaze = random(3)
- end
-
- hlavicka:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_dedek()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- dedek.mluvi = 0
-
- return function()
- if dedek.mluvi ~= 0 then
- dedek.afaze = random(2) + 1
- else
- dedek.afaze = 0
- end
-
- dedek:updateAnim()
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_small()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- small.jede = 0
-
- return function()
- if vytah.dir == dir_up and small.X >= vytah.X and small.X < vytah.X + 4 and small.Y > vytah.Y and small.Y < vytah.Y + 6 then
- small.jede = small.jede + 1
- end
- end
- end
-
- -- -------------------------------------------------------------
- local function prog_init_big()
- local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
-
- big.jede = 0
-
- return function()
- if vytah.dir == dir_up and big.X >= vytah.X and big.X < vytah.X + 3 and big.Y > vytah.Y and big.Y < vytah.Y + 5 then
- big.jede = big.jede + 1
- end
- end
- end
-
- -- --------------------
- local update_table = {}
- local subinit
- subinit = prog_init_room()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_vytah()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_stroj()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_hlavicka()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_dedek()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_small()
- if subinit then
- table.insert(update_table, subinit)
- end
- subinit = prog_init_big()
- if subinit then
- table.insert(update_table, subinit)
- end
- return update_table
- end
- local update_table = prog_init()
-
-
- -- -----------------------------------------------------------------
- -- Update
- -- -----------------------------------------------------------------
- function prog_update()
- for key, subupdate in pairs(update_table) do
- subupdate()
- end
- end
-
-