-- ----------------------------------------------------------------- -- Init -- ----------------------------------------------------------------- local function prog_init() initModels() sound_playMusic("music/rybky05.ogg") local pokus = getRestartCount() -- ------------------------------------------------------------- local function prog_init_room() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false if pokus == 1 or random(100) < 40 then room.quvod = random(10) + 10 else room.quvod = -2 end room.chechtoni = 0 room.chechthlaska = 0 room.moczbabelcu = 0 room.qvousy = 0 room.pravvousy = 70 room.qpejsek = 300 + random(600) room.lastval = 0 return function() if not isReady(small) or not isReady(big) then room.quvod = -1 room.qpejsek = -1 end if room.quvod > 0 then room.quvod = room.quvod - 1 elseif room.quvod == 0 then room.quvod = -1 addm(5, "dr1-m-dlouho") addv(5, "dr1-v-urcite") if random(4) > 0 then addv(30 + random(30), "dr1-v-olaf") end if random(4) > 0 then addv(30 + random(30), "dr1-v-leif") end if random(4) > 0 then addv(30 + random(30), "dr1-v-harold") end if random(4) > 0 then addv(30 + random(30), "dr1-v-snorr") end if random(4) > 0 then addv(30 + random(30), "dr1-v-thorson") end if random(6) > 0 then planDialogSet(50 + random(30), "dr1-x-erik", 116, hlavadr, "mluvi") end planSet(room, "quvod", -2) elseif room.quvod == -2 then if viking7.dostal == -1 then viking7.dostal = 0 end end if not pesos:isTalking() and room.qpejsek > 0 then room.qpejsek = room.qpejsek - 1 end if room.quvod == -2 then if room.moczbabelcu == 1 then if no_dialog() then planDialogSet(2 + random(20), "dr-1-achjo", 210, viking1, "cinnost") end room.moczbabelcu = 0 elseif room.chechtoni == 1 then if no_dialog() then room.chechthlaska = room.chechthlaska + 1 switch(room.chechthlaska){ [1] = function() planDialogSet(5 + random(20), "dr-1-procja", 210, viking1, "cinnost") end, [2] = function() planDialogSet(5 + random(20), "dr-1-chechtajici", 210, viking1, "cinnost") end, } end room.chechtoni = 0 elseif no_dialog() then if random(1000) < 7 and viking5.cinnost == 0 then viking5.cinnost = 1 elseif random(10000) < room.pravvousy then local qvousy_table = { [0] = function() switch(random(2)){ [0] = function() planDialogSet(10, "dr-3-spravny", 230, viking3, "cinnost") end, [1] = function() planDialogSet(10, "dr-3-cojeto", 230, viking3, "cinnost") end, } switch(random(2)){ [0] = function() planDialogSet(6, "dr-4-magazin", 240, viking4, "cinnost") end, [1] = function() planDialogSet(6, "dr-4-copy", 240, viking4, "cinnost") end, } room.qvousy = 10 room.pravvousy = 50 end, [10] = function() repeat pom1 = random(3) + 1 until pom1 ~= room.qvousy - 10 if room.qvousy == 10 then room.qvousy = pom1 + 10 else room.qvousy = 20 end switch(pom1){ [1] = function() planDialogSet(6, "dr-3-radeji", 230, viking3, "cinnost") planDialogSet(3, "dr-4-moderni", 240, viking4, "cinnost") end, [2] = function() planDialogSet(6, "dr-4-myslis", 240, viking4, "cinnost") planDialogSet(0, "dr-3-samozrejme", 230, viking3, "cinnost") planDialogSet(10, "dr-4-budu", 240, viking4, "cinnost") planDialogSet(5, "dr-4-hmmm", 241, viking4, "cinnost") planDialogSet(2, "dr-4-ne", 240, viking4, "cinnost") end, [3] = function() planDialogSet(6, "dr-4-erik", 240, viking4, "cinnost") planDialogSet(0, "dr-3-nesmysl", 230, viking3, "cinnost") planDialogSet(0, "dr-4-taky", 240, viking4, "cinnost") planDialogSet(0, "dr-3-nemel", 230, viking3, "cinnost") end, } room.pravvousy = 40 end, [20] = function() room.pravvousy = room.pravvousy - 5 switch(random(4)){ [0] = function() planDialogSet(10, "dr-3-mladez", 230, viking3, "cinnost") end, [1] = function() planDialogSet(10, "dr-3-chlap", 230, viking3, "cinnost") end, [2] = function() planDialogSet(10, "dr-3-mladi", 230, viking3, "cinnost") end, [3] = function() planDialogSet(10, "dr-4-stejne", 240, viking4, "cinnost") end, } end, } qvousy_table[11] = qvousy_table[10] qvousy_table[12] = qvousy_table[10] qvousy_table[13] = qvousy_table[10] switch(room.qvousy)(qvousy_table) elseif random(1000) < 4 then pom1 = random(3) + 1 if pom1 == room.lastval then pom1 = 4 end room.lastval = pom1 switch(pom1){ [1] = function() planSet(viking2, "cinnost", -1) viking2:planDialog(5, "dr-2-uzbudeme"..(random(2) + 1)) planDialogSet(3, "dr-1-aztambudem", 210, viking1, "cinnost") end, [2] = function() planSet(viking2, "cinnost", -1) viking2:planDialog(5, "dr-2-odskocit") planDialogSet(3, "dr-1-pockej", 210, viking1, "cinnost") end, [3] = function() planSet(viking2, "cinnost", -1) viking2:planDialog(5, "dr-2-netrva") planDialogSet(3, "dr-1-trpelivost", 210, viking1, "cinnost") end, [4] = function() planSet(viking2, "cinnost", -1) viking2:planDialog(5, "dr-2-urcite") planDialogSet(3, "dr-1-bojovnik", 210, viking1, "cinnost") end, } elseif room.qpejsek == 0 and pesos:isTalking() then room.qpejsek = -1 addm(10 + random(30), "dr-m-podivej") pom1 = random(2) if pom1 == 0 or random(2) == 0 then addm(3, "dr-m-nedycha") end switch(pom1){ [0] = function() addv(6, "dr-v-napsa") end, [1] = function() addv(7, "dr-v-nato") end, } end end end end end -- ------------------------------------------------------------- local function prog_init_viking1() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking1.cinnost = 0 return function() switch(viking1.cinnost){ [0] = function() if random(100) < 5 then viking1.afaze = random(3) end end, [210] = function() viking1.afaze = random(3) end, } viking1:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking3() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking3.cinnost = 0 return function() switch(viking3.cinnost){ [0] = function() viking3.afaze = 0 end, [230] = function() viking3.afaze = random(2) * 2 end, } if random(100) < 5 then viking3.afaze = viking3.afaze + 1 end viking3:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking4() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking4.cinnost = 0 return function() switch(viking4.cinnost){ [0] = function() viking4.afaze = 0 end, [240] = function() if odd(game_getCycles()) then viking4.afaze = math.floor(viking4.afaze / 2) if viking4.afaze == 0 or viking4.afaze == 1 then if random(100) < 20 then viking4.afaze = 2 + random(2) else viking4.afaze = 1 - viking4.afaze end elseif viking4.afaze == 2 or viking4.afaze == 3 then if random(100) < 35 then viking4.afaze = random(2) else viking4.afaze = 5 - viking4.afaze end end viking4.afaze = viking4.afaze + viking4.afaze end end, [241] = function() viking4.afaze = 6 end, } if random(100) < 5 then viking4.afaze = viking4.afaze + 1 end viking4:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking5() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking5.cinnost = 0 viking5.poslhlaska = 0 viking5.pochlasek = 0 return function() switch(viking5.cinnost){ [0] = function() viking5.faze = 0 if random(1000) < 3 then viking5.cinnost = 2 end end, [1] = function() switch(viking5.faze){ [0] = function() viking5.afaze = 4 pom1 = random(4) + 1 if pom1 == viking5.poslhlaska then pom1 = 5 end viking5:planDialog(0, "dr-5-srab"..pom1) viking5.poslhlaska = pom1 viking5.faze = viking5.faze + 1 viking5.pochlasek = viking5.pochlasek + 1 end, [1] = function() if viking5:isTalking() then viking5.afaze = 2 + random(2) * 2 if viking5.afaze == 2 then if random(100) < 20 then viking5.afaze = viking5.afaze - 1 + 2 * random(2) end end else viking5.faze = viking5.faze + 1 end end, [2] = function() if isIn(viking5.pochlasek, {3, 8, 15, 20, 30, 50}) then room.moczbabelcu = 1 end viking5.cinnost = 2 viking5.faze = 0 end, } end, [2] = function() switch(viking5.faze){ [0] = function() viking5.delay = random(5) + 10 viking5.faze = viking5.faze + 1 end, [1] = function() if viking5.afaze == 3 then if random(2) == 0 then viking5.afaze = 2 else end elseif random(100) < 10 then if random(2) == 0 then viking5.afaze = 3 else viking5.afaze = 1 end else viking5.afaze = 2 end if viking5.delay == 0 then viking5.faze = 2 else viking5.delay = viking5.delay - 1 end end, [2] = function() viking5.afaze = 0 viking5.cinnost = 0 end, } end, } viking5:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking6() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking6.smich = 0 return function() switch(viking6.smich){ [0] = function() if random(100) < 5 then viking6.afaze = 1 else viking6.afaze = 0 end end, [1] = function() game_killPlan() viking6:planDialog(0, "dr-6-checheche") viking6.smich = viking6.smich + 1 end, [2] = function() if viking6:isTalking() then if viking6.afaze == 2 then viking6.afaze = 3 else viking6.afaze = 2 end else viking6.afaze = 0 viking6.smich = 0 room.chechtoni = 1 end end, } viking6:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking7() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking7.dostal = -1 viking7.afaze = 1 return function() switch(viking7.dostal){ [0] = function() if viking7:isTalking() then if viking7.afaze == 1 then viking7.afaze = 2 else viking7.afaze = 1 end else viking7.afaze = 1 if random(100) < 10 then viking7:talk("dr-7-sm"..(random(8) + 1), VOLUME_FULL) end end end, [1] = function() viking7.dostal = viking7.dostal + 1 viking7.afaze = 0 end, [2] = function() viking7.dostal = viking7.dostal + 1 viking7.afaze = 0 end, [3] = function() viking7.dostal = viking7.dostal + 1 viking7.afaze = 0 end, [4] = function() viking7.otrne = random(1200) + 600 viking7.dostal = viking7.dostal + 1 viking6.smich = 1 end, [5] = function() if viking7.otrne > 0 then viking7.otrne = viking7.otrne - 1 end if model_isTalking(271) then viking7.afaze = random(2) * 2 + 3 if random(100) < 7 then viking7.afaze = viking7.afaze + 1 end else viking7.afaze = 3 if random(100) < 7 then viking7.afaze = viking7.afaze + 1 end if viking7.otrne == 0 then viking7.dostal = 0 elseif random(100) < 3 then model_talk(271, "dr-7-brble"..(random(5) + 1), VOLUME_FULL) end end end, } viking7:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking8() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking8.nervozita = 0 viking8.cinnost = 0 return function() if viking8.nervozita == 0 then viking8.nervozita = 1 viking8.mira1 = random(200) + 200 viking8.mira2 = viking8.mira1 + random(150) + 150 viking8.mira0 = random(viking8.mira1 - 80) + 90 end if viking7:isTalking() then viking8.nervozita = viking8.nervozita + 1 end switch(viking8.cinnost){ [0] = function() if viking8.nervozita == viking8.mira1 then viking8.nervozita = viking8.nervozita + 1 if no_dialog() then viking8.cinnost = 10 else viking8.nervozita = viking8.nervozita - 20 end elseif viking8.nervozita == viking8.mira2 then viking8.nervozita = viking8.nervozita + 1 if no_dialog() then viking8.cinnost = 20 else viking8.nervozita = viking8.nervozita - 20 end elseif viking8.nervozita == viking8.mira0 then viking8.nervozita = viking8.nervozita + 1 viking8.cinnost = 5 end end, [5] = function() viking8.afaze = 3 viking8.delay = 5 viking8.cinnost = viking8.cinnost + 1 end, [6] = function() if viking8.delay > 0 then viking8.delay = viking8.delay - 1 else viking8.cinnost = viking8.cinnost + 1 end end, [7] = function() viking8.cinnost = 0 viking8.afaze = 0 end, [10] = function() viking8.afaze = 3 viking8:talk("dr-8-ztichni"..(random(2) + 1)) viking8.cinnost = viking8.cinnost + 1 end, [11] = function() if viking8:isTalking() then viking8.afaze = random(3) + 3 else viking8.afaze = 0 viking8.cinnost = 0 end end, [20] = function() viking8.afaze = 3 viking8:talk("dr-8-nenechas") viking8.cinnost = viking8.cinnost + 1 end, [21] = function() if viking8:isTalking() then viking8.afaze = random(3) + 3 else viking8.cinnost = viking8.cinnost + 1 viking8.delay = 20 end end, [22] = function() viking8.afaze = 1 viking8:talk("dr-8-aaa") viking8.cinnost = viking8.cinnost + 1 viking8.delay = 9 end, [23] = function() if viking8.delay == 0 then viking8.cinnost = viking8.cinnost + 1 else viking8.delay = viking8.delay - 1 end end, [24] = function() viking8.afaze = 2 model_talk(281, "dr-x-buch", VOLUME_FULL) viking7.dostal = 1 viking8.nervozita = 0 viking8.cinnost = viking8.cinnost + 1 viking8.delay = 4 end, [25] = function() if viking8.delay == 0 then viking8.afaze = 1 viking8.cinnost = viking8.cinnost + 1 viking8.delay = 3 else viking8.delay = viking8.delay - 1 end end, [26] = function() if viking8.delay == 0 then viking8.afaze = 0 viking8.cinnost = 0 viking8.delay = 3 else viking8.delay = viking8.delay - 1 end end, } viking8:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_pesos() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false pesos.cinnost = 0 return function() switch(pesos.cinnost){ [0] = function() pesos.afaze = 2 pesos.cinnost = 1 pesos.delay = random(100) + 50 end, [1] = function() if pesos.delay == 0 then pesos.cinnost = pesos.cinnost + 1 else pesos.delay = pesos.delay - 1 end end, [2] = function() pesos:talk("dr-x-pes", VOLUME_FULL, -1) pesos.delay = random(100) + 20 pesos.cinnost = pesos.cinnost + 1 end, [3] = function() if pesos.delay == 0 then pesos:killSound() pesos.cinnost = 0 else if pesos.afaze == 0 then pesos.afaze = 1 else pesos.afaze = 0 end pesos.delay = pesos.delay - 1 end end, } pesos:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_viking2() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false viking2.cinnost = 0 return function() switch(viking2.cinnost){ [0] = function() viking2.faze = 0 if random(1000) < 3 then viking2.cinnost = 2 end end, [-1] = function() viking2.afaze = 2 if viking2:isTalking() then viking2.cinnost = 1 end end, [1] = function() if viking2:isTalking() then viking2.afaze = 2 + random(2) * 2 if viking2.afaze == 2 then if random(100) < 7 then viking2.afaze = viking2.afaze - 1 + 2 * random(2) end end else viking2.faze = 0 viking2.cinnost = viking2.cinnost + 1 end end, [2] = function() switch(viking2.faze){ [0] = function() viking2.delay = random(5) + 10 viking2.faze = viking2.faze + 1 end, [1] = function() if viking2.afaze == 3 then if random(2) == 0 then viking2.afaze = 2 else end elseif random(100) < 7 then if random(2) == 0 then viking2.afaze = 3 else viking2.afaze = 1 end else viking2.afaze = 2 end if viking2.delay == 0 then viking2.faze = 2 else viking2.delay = viking2.delay - 1 end end, [2] = function() viking2.afaze = 0 viking2.cinnost = 0 end, } end, } viking2:updateAnim() end end -- ------------------------------------------------------------- local function prog_init_hlavadr() local pom1, pom2, pomb1, pomb2 = 0, 0, false, false hlavadr.mluvi = 0 return function() if math.mod(game_getCycles(), 3) == 1 then if hlavadr.mluvi ~= 0 then pom1 = hlavadr.afaze repeat hlavadr.afaze = random(3) until hlavadr.afaze ~= pom1 else hlavadr.afaze = 0 end end hlavadr:updateAnim() end end -- -------------------- local update_table = {} local subinit subinit = prog_init_room() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking1() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking3() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking4() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking5() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking6() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking7() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking8() if subinit then table.insert(update_table, subinit) end subinit = prog_init_pesos() if subinit then table.insert(update_table, subinit) end subinit = prog_init_viking2() if subinit then table.insert(update_table, subinit) end subinit = prog_init_hlavadr() 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