-- ----------------------------------------------------------------- -- actor codes: -- 111 ... piskac -- 121 ... basak -- 131 ... melodak1, melodak2 local PISKAC_SONG = 111 local BASAK_SONG = 121 local MELODAK_SONG = 131 -- ----------------------------------------------------------------- -- Init -- ----------------------------------------------------------------- local function prog_init() initModels() local pokus = getRestartCount() -- ------------------------------------------------------------- local function prog_init_room() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false room.blok = -1 room.startblok = 0 room.uvod = 0 room.dohrat = randint(300, 700) sound_playMusic("music/rybky04.ogg") return function() room.startblok = 0 if room.blok >= 0 then if not model_isTalking(PISKAC_SONG) then room.blok = room.blok + 1 if room.blok == 17 then room.blok = 1 end room.startblok = 1 end end if room.blok > 0 then sound_stopMusic() end if no_dialog() and isReady(small) and isReady(big) then if room.dohrat > 0 then room.dohrat = room.dohrat - 1 end if room.uvod == 0 then room.uvod = 1 switch(pokus){ [1] = function() pom1 = 4 end, [2] = function() pom1 = random(5) end, [3] = function() pom1 = random(5) end, default = function() if random(2) == 0 then pom1 = 0 else pom1 = random(5) end end, } if pom1 > 0 then addm(20, "dr-m-tojesnad") if random(2) == 0 then addv(3, "dr-v-jiste") end end if pom1 >= 2 then addm(random(20) + 5, "dr-m-musela") end if pom1 >= 4 then addv(random(15) + 3, "dr-v-mozna") else adddel(random(20) + 25) end if pom1 >= 3 then addm(0, "dr-m-hruza") end elseif room.dohrat == 0 then room.dohrat = -1 sound_stopMusic() adddel(10) planSet(melodak1, "afaze", 3) melodak1:planDialog(random(10) + 5, "d1-1-hudba"..random(3)) adddel(5) planSet(basak, "hlasky", 2) planSet(piskac, "hlasky", 2) adddel(10) planSet(melodak1, "hlasky", 1) hlavni:planDialog(30 + random(10), "d1-5-nevadi"..random(3)) adddel(10) planSet(room, "blok", 0) end end end end -- ------------------------------------------------------------- local function prog_init_melodak1() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false melodak1.hrat = -1 melodak1.mrk = 0 melodak1.hlasky = 0 melodak1.posl = -1 return function() if melodak1.hlasky > 0 and not melodak1:isTalking() then repeat pom1 = random(3) until pom1 ~= melodak1.posl melodak1.posl = pom1 melodak1:talk("d1-2-brb"..pom1) melodak1.hlasky = melodak1.hlasky - 1 end if room.startblok == 1 then if isIn(room.blok, {7, 8, 11, 12, 15, 16}) then melodak1.hrat = 0 else melodak1.hrat = -1 end if melodak1.hrat > -1 then model_killSound(MELODAK_SONG) model_talk(MELODAK_SONG, "d1-z-v"..melodak1.hrat) setanim(melodak1, "a4a2a4a2a4a2a4a2a4a2d2a4a2d2a4a2d2a4a2d2a4a2d2a4a2d2" .. "a4a2a4a2a4a2a4a2a4a2d2a4a2d2a4a2d2a4a2d2a4a2d4a4") else setanim(melodak1, "d?5-10a0") end end if melodak1.mrk == 1 and melodak1.afaze ~= 0 then melodak1.afaze = melodak1.afaze + 1 end goanim(melodak1) if melodak1:isTalking() then melodak1.afaze = random(2) * 2 + 2 elseif room.blok < 0 and random(100) < 5 then melodak1.afaze = 0 end if random(100) < 5 then melodak1.mrk = 1 else melodak1.mrk = 0 end if melodak1.mrk == 1 and melodak1.afaze > 0 then melodak1.afaze = melodak1.afaze - 1 end melodak1:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_hlavni() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false return function() if hlavni:isTalking() then hlavni.afaze = random(3) else hlavni.afaze = 0 end hlavni:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_basak() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false basak.hrat = -1 basak.mrk = 0 basak.afaze = 2 basak.hlasky = 0 basak.posl = -1 return function() if basak.hlasky > 0 and not basak:isTalking() then repeat pom1 = random(3) until pom1 ~= basak.posl basak.posl = pom1 basak:talk("d1-4-brb"..pom1) basak.hlasky = basak.hlasky - 1 end if room.startblok == 1 then if isIn(room.blok, {1, 2, 3}) then basak.hrat = -1 elseif room.blok == 4 then basak.hrat = 1 elseif isIn(room.blok, {5, 6, 9, 10, 13, 14}) then basak.hrat = 2 else basak.hrat = 3 end if basak.hrat > -1 then model_killSound(BASAK_SONG) model_talk(BASAK_SONG, "d1-z-b"..basak.hrat) if basak.hrat == 1 then setanim(basak, "a0d3a2d3a0d19a2d3a0d3a2d3a0d19a2d3") else setanim(basak, "a0d3a2d3a0d19a2d3a0d3a2d3a0d6a2a0d3a2d3a0d6a2") end end end if basak.mrk == 1 then basak.afaze = basak.afaze - 1 end if basak:isTalking() then basak.afaze = random(2) * 2 elseif room.blok < 0 then basak.afaze = 2 end goanim(basak) if random(100) < 5 then basak.mrk = 1 else basak.mrk = 0 end if basak.mrk == 1 then basak.afaze = basak.afaze + 1 end basak:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_piskac() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false piskac.hrat = -1 piskac.xicht = 0 piskac.hlasky = 0 piskac.posl = -1 return function() if piskac.hlasky > 0 and not piskac:isTalking() then repeat pom1 = random(3) until pom1 ~= piskac.posl piskac.posl = pom1 piskac:talk("d1-3-brb"..pom1) piskac.hlasky = piskac.hlasky - 1 end if piskac:isTalking() then piskac.xicht = random(2) * 2 else piskac.xicht = 0 end if room.blok > -1 then piskac.xicht = 6 end if room.startblok == 1 then if isIn(room.blok, {1, 2, 5, 6, 9, 10, 13, 14}) then piskac.hrat = 1 else piskac.hrat = 2 end piskac.xicht = 4 model_killSound(PISKAC_SONG) model_talk(PISKAC_SONG, "d1-z-p"..piskac.hrat) end if random(100) < 5 then piskac.afaze = piskac.xicht + 1 else piskac.afaze = piskac.xicht end piskac:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_melodak2() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false melodak2.hrat = -1 melodak2.mrk = 0 return function() if room.startblok == 1 then if isIn(room.blok, {9, 13}) then melodak2.hrat = 1 elseif isIn(room.blok, {10, 14}) then melodak2.hrat = 2 else melodak2.hrat = -1 end if melodak2.hrat > -1 then model_killSound(MELODAK_SONG) model_talk(MELODAK_SONG, "d1-z-v"..melodak2.hrat) if melodak2.hrat == 1 then setanim(melodak2, "a2d15a3d15a2d28a0") else setanim(melodak2, "a3d15a2d15a3d15a2d7") end else melodak2.afaze = 0 end end if melodak2.mrk == 1 and melodak2.afaze == 1 then melodak2.afaze = melodak2.afaze - 1 end goanim(melodak2) if random(100) < 5 then melodak2.mrk = 1 else melodak2.mrk = 0 end if melodak2.mrk == 1 and melodak2.afaze == 0 then melodak2.afaze = melodak2.afaze + 1 end melodak2:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_snecek() return function() if room.blok > 0 then if snecek.afaze < 2 then snecek.afaze = snecek.afaze + 1 end end snecek:updateAnim() end end -- -------------------- local update_table = {} local subinit subinit = prog_init_room() if subinit then table.insert(update_table, subinit) end subinit = prog_init_melodak1() if subinit then table.insert(update_table, subinit) end subinit = prog_init_hlavni() if subinit then table.insert(update_table, subinit) end subinit = prog_init_basak() if subinit then table.insert(update_table, subinit) end subinit = prog_init_piskac() if subinit then table.insert(update_table, subinit) end subinit = prog_init_melodak2() if subinit then table.insert(update_table, subinit) end subinit = prog_init_snecek() 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