-- ----------------------------------------------------------------- -- Init -- ----------------------------------------------------------------- local function prog_init() initModels() sound_playMusic("music/rybky04.ogg") local pokus = getRestartCount() -- ------------------------------------------------------------- local function prog_init_room() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false room.uvod = 10 + random(10) room.poslvykrik = -1 room.pocetvykriku = 0 room.venku = 1 room.obaloncich = random(20) + 40 room.omeste = random(2) room.okrabech = 0 room.osose = random(4000) + 3000 if pokus > 1 and random(100) < 50 then room.opocitech = random(1500) + 1000 else room.opocitech = -1 end return function() if no_dialog() and isReady(small) and isReady(big) then if room.uvod > 0 then if cihla.X == cihla.XStart and cihla.Y == cihla.YStart then room.uvod = room.uvod - 1 else room.uvod = -1 room.venku = 0 end end if room.osose > 0 then room.osose = room.osose - 1 end if room.opocitech > 0 then room.opocitech = room.opocitech - 1 end if room.obaloncich > 0 then if balon1.dir ~= dir_no or balon2.dir ~= dir_no or balon3.dir ~= dir_no or lbalon.dir ~= dir_no or rbalon.dir ~= dir_no then room.obaloncich = room.obaloncich - 1 end end if room.uvod == 0 then room.uvod = 100 + random(200) room.pocetvykriku = room.pocetvykriku + 1 pom1 = random(2) if pom1 == room.poslvykrik then pom1 = 2 end if isIn(room.pocetvykriku, {5, 11, 16}) then pom1 = 3 end room.poslvykrik = pom1 switch(pom1){ [3] = function() addv(3, "sec-v-zavreny") addm(10, "sec-m-kamen") end, default = function() if 0 <= pom1 and pom1 <= 2 then addv(3, "sec-v-ven"..pom1) end end, } elseif room.venku == 0 then room.venku = 1 addm(random(10) + 10, "sec-m-ven"..random(2)) elseif room.obaloncich == 0 then room.obaloncich = -1 addm(5, "sec-m-balonky") elseif room.omeste == 0 and random(3000) == 0 then room.omeste = 1 addv(10, "sec-v-mesto") elseif room.okrabech == 0 and random(2000) == 0 then room.okrabech = 1 addm(20, "sec-m-krab") addv(10, "sec-v-ktery") addm(5, "sec-m-dole"..random(2)) addv(5 + random(20), "sec-v-normalni"..random(2)) elseif room.osose == 0 then room.osose = -1 addv(40, "sec-v-socha") addm(random(10) + 4, "sec-m-situace") adddel(random(15) + 5) planSet(drzka, "cinnost", 1) elseif room.opocitech == 0 then room.opocitech = -1 addv(20, "sec-v-pocit") addm(5, "sec-m-pocity") addv(0, "sec-v-pockej") addv(random(30) + 40, "sec-v-oci") addm(4, "sec-m-program") end end end end -- ------------------------------------------------------------- local function prog_init_drzka() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false drzka.cinnost = 0 drzka.afaze = 0 return function() switch(drzka.cinnost){ [1] = function() setanim(drzka, "a5d2a10d11a11d4a10d4a11d4a10d4a11d4a10d?20-40a9") drzka.cinnost = drzka.cinnost + 1 end, [2] = function() goanim(drzka) end, } drzka:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_lbalon() return function() if lbalon.dir == dir_left then if lbalon.afaze == 0 then lbalon.afaze = 3 else lbalon.afaze = lbalon.afaze - 1 end elseif lbalon.dir == dir_right then if lbalon.afaze == 3 then lbalon.afaze = 0 else lbalon.afaze = lbalon.afaze + 1 end elseif lbalon.X == krab.X and lbalon.Y - 3 == krab.Y then if lbalon.afaze == 3 then lbalon.afaze = 0 else lbalon.afaze = lbalon.afaze + 1 end krab.beh = 1 end lbalon:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_rbalon() return function() if rbalon.dir == dir_left then if rbalon.afaze == 0 then rbalon.afaze = 3 else rbalon.afaze = rbalon.afaze - 1 end elseif rbalon.dir == dir_right then if rbalon.afaze == 3 then rbalon.afaze = 0 else rbalon.afaze = rbalon.afaze + 1 end elseif rbalon.X - 5 == krab.X and rbalon.Y - 3 == krab.Y then if rbalon.afaze == 0 then rbalon.afaze = 3 else rbalon.afaze = rbalon.afaze - 1 end krab.beh = 1 end rbalon:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_balon1() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false balon1.pauza = random(200) return function() if balon1.dir == dir_left then if balon1.afaze == 0 then balon1.afaze = 3 else balon1.afaze = balon1.afaze - 1 end elseif balon1.dir == dir_right then if balon1.afaze == 3 then balon1.afaze = 0 else balon1.afaze = balon1.afaze + 1 end elseif balon1.pauza == 0 then balon1.pauza = random(320) - 60 end if balon1.pauza < 0 then if balon1.afaze == 3 then balon1.afaze = 0 else balon1.afaze = balon1.afaze + 1 end balon1.pauza = balon1.pauza + 1 else balon1.pauza = balon1.pauza - 1 end balon1:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_balon2() return function() if balon2.dir == dir_left then if balon2.afaze == 0 then balon2.afaze = 3 else balon2.afaze = balon2.afaze - 1 end elseif balon2.dir == dir_right then if balon2.afaze == 3 then balon2.afaze = 0 else balon2.afaze = balon2.afaze + 1 end end balon2:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_balon3() return function() if balon3.dir == dir_left then if balon3.afaze == 0 then balon3.afaze = 3 else balon3.afaze = balon3.afaze - 1 end elseif balon3.dir == dir_right then if balon3.afaze == 3 then balon3.afaze = 0 else balon3.afaze = balon3.afaze + 1 end end balon3:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_hlava1() return function() end end -- ------------------------------------------------------------- local function prog_init_hlava2() return function() end end -- ------------------------------------------------------------- local function prog_init_hlava3() return function() end end -- ------------------------------------------------------------- local function prog_init_krab() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false krab.beh = 0 krab.oci = 1 krab.voci = 1 krab.mrac = 1 krab.nohy = 1 krab.afaze = 10 return function() if krab.beh == 1 then if krab.nohy == 2 then krab.nohy = 0 else krab.nohy = krab.nohy + 1 end krab.beh = 0 else krab.nohy = 1 end if random(20) == 1 then krab.mrac = 1 - krab.mrac end if xdist(small, krab) == 0 and ydist(small, krab) <= 0 then if small.X < krab.X then krab.oci = 0 elseif small.X > krab.X + 3 then krab.oci = 2 else krab.oci = 1 end elseif xdist(big, krab) == 0 and ydist(big, krab) <= 0 then if big.X < krab.X - 1 then krab.oci = 0 elseif big.X > krab.X + 3 then krab.oci = 2 else krab.oci = 1 end elseif odd(game_getCycles()) then local rand11 = random(11) switch(rand11){ [6] = function() if krab.voci == 0 then krab.voci = 3 else krab.voci = krab.voci - 1 end end, [9] = function() krab.voci = random(4) end, default = function() if 0 <= rand11 and rand11 <= 5 then if krab.voci == 3 then krab.voci = 0 else krab.voci = krab.voci + 1 end end end, } if krab.voci == 3 then krab.oci = 1 else krab.oci = krab.voci end end krab.afaze = krab.oci + krab.mrac * 3 + krab.nohy * 6 krab:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_shrimp() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false shrimp.afaze = 4 return function() if odd(game_getCycles()) then switch(krab.oci){ [0] = function() shrimp.afaze = 2 end, [2] = function() shrimp.afaze = 0 end, [1] = function() switch(krab.voci){ [1] = function() local rand10 = random(10) switch(rand10){ [0] = function() shrimp.afaze = 3 end, default = function() if 1 <= rand10 and rand10 <= 6 then shrimp.afaze = 4 else shrimp.afaze = 1 end end, } end, [3] = function() local rand10 = random(10) if 0 <= rand10 and rand10 <= 3 then shrimp.afaze = 3 elseif 4 <= rand10 and rand10 <= 9 then shrimp.afaze = 4 else shrimp.afaze = 1 end end, default = function() switch(math.mod(game_getCycles(), 8)){ [0] = function() shrimp.afaze = 1 end, [1] = function() shrimp.afaze = 1 end, [4] = function() shrimp.afaze = 3 end, [5] = function() shrimp.afaze = 3 end, default = function() shrimp.afaze = 4 end, } end, } end, } end shrimp:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_krabik() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false krabik.spi = 0 krabik.afaze = 0 return function() if odd(game_getCycles()) then if krabik.spi > 0 then krabik.afaze = 1 krabik.spi = krabik.spi - 1 else switch(shrimp.afaze){ [0] = function() krabik.afaze = 5 end, [1] = function() krabik.afaze = 2 end, [2] = function() krabik.afaze = 4 end, [3] = function() krabik.afaze = 3 end, [4] = function() krabik.afaze = 0 end, } if random(100) == 14 then krabik.spi = random(30) end end end krabik:updateAnim() end end -- -------------------- local update_table = {} local subinit subinit = prog_init_room() if subinit then table.insert(update_table, subinit) end subinit = prog_init_drzka() if subinit then table.insert(update_table, subinit) end subinit = prog_init_lbalon() if subinit then table.insert(update_table, subinit) end subinit = prog_init_rbalon() if subinit then table.insert(update_table, subinit) end subinit = prog_init_balon1() if subinit then table.insert(update_table, subinit) end subinit = prog_init_balon2() if subinit then table.insert(update_table, subinit) end subinit = prog_init_balon3() if subinit then table.insert(update_table, subinit) end subinit = prog_init_hlava1() if subinit then table.insert(update_table, subinit) end subinit = prog_init_hlava2() if subinit then table.insert(update_table, subinit) end subinit = prog_init_hlava3() if subinit then table.insert(update_table, subinit) end subinit = prog_init_krab() if subinit then table.insert(update_table, subinit) end subinit = prog_init_shrimp() if subinit then table.insert(update_table, subinit) end subinit = prog_init_krabik() 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