1 2-- ----------------------------------------------------------------- 3-- Init 4-- ----------------------------------------------------------------- 5local function prog_init() 6 initModels() 7 sound_playMusic("music/rybky09.ogg") 8 local pokus = getRestartCount() 9 10 11 -- ------------------------------------------------------------- 12 local function prog_init_room() 13 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 14 15 room.zacatek = 0 16 room.vyresime = 0 17 room.pristrojek = 0 18 room.nahoda = 0 19 room.zelezo = 0 20 room.nezvlada = 0 21 room.cas = 500 + random(4000) 22 room.cas1 = 500 + random(7000) 23 room.blesky = 0 24 room.spatne = 0 25 room.husikuze = 0 26 room.bouchacka = 0 27 room.hybe = 0 28 room.malomista = 0 29 30 return function() 31 if no_dialog() and isReady(small) and isReady(big) then 32 if room.cas > 0 then 33 room.cas = room.cas - 1 34 end 35 if room.cas1 > 0 then 36 room.cas1 = room.cas1 - 1 37 end 38 if room.hybe == 0 and small.dir ~= dir_no and magnetek.dir ~= dir_no then 39 room.hybe = 1 40 addm(random(42) + 9, "pap-m-zvlastni") 41 addv(9, "pap-v-prekvapeni") 42 if room.vyresime == 0 and random(100) < 50 then 43 room.vyresime = 1 44 addm(5 + random(4), "pap-m-teorie") 45 end 46 elseif room.zacatek == 0 then 47 room.zacatek = 1 48 addv(42 + 9, "pap-v-ha") 49 addm(5 + random(4), "pap-m-magnet") 50 if random(100) < 35 then 51 addv(5 + random(4), "pap-v-potrebovat") 52 end 53 elseif room.pristrojek == 0 and dist(superpristroj, small) < 2 and random(100) < 30 then 54 room.pristrojek = 1 55 addm(9, "pap-m-radio") 56 room.nahoda = random(3) 57 if pokus > 5 and random(100) < 40 then 58 room.nahoda = 4 59 end 60 switch(room.nahoda){ 61 [0] = function() 62 addv(5 + random(4), "pap-v-radio") 63 if random(100) < 60 then 64 addm(5 + random(4), "pap-m-nechme") 65 end 66 addv(16, "pap-v-divny") 67 end, 68 [1] = function() 69 addv(5 + random(4), "pap-v-divny") 70 if random(100) < 50 then 71 addm(5 + random(4), "pap-m-nechme") 72 end 73 end, 74 [2] = function() 75 addv(5 + random(4), "pap-v-radio") 76 if room.vyresime == 0 and random(100) < 50 then 77 room.vyresime = 1 78 addm(5 + random(4), "pap-m-teorie") 79 end 80 end, 81 } 82 elseif room.zelezo == 0 and (dist(konstrukce1, small) < 1 or dist(konstrukce2, small) < 1) and random(100) < 10 then 83 room.zelezo = 1 84 addm(9, "pap-m-ocel") 85 room.nahoda = random(2) 86 if pokus > 5 and random(100) < 40 then 87 room.nahoda = 2 88 end 89 switch(room.nahoda){ 90 [0] = function() 91 addv(5 + random(4), "pap-v-vufu") 92 if room.nezvlada == 0 and random(100) < 40 then 93 room.nezvlada = 1 94 addm(9, "pap-m-naucit") 95 addm(15 + random(8), "pap-m-nepohnu") 96 end 97 end, 98 [1] = function() 99 room.nezvlada = 1 100 addm(9, "pap-m-naucit") 101 addm(15 + random(8), "pap-m-nepohnu") 102 end, 103 } 104 elseif room.nezvlada == 0 and room.cas == 0 then 105 room.nezvlada = 1 106 addm(9, "pap-m-naucit") 107 addm(15 + random(8), "pap-m-nepohnu") 108 elseif room.blesky == 0 and magnetek.kolik ~= 0 and room.cas1 == 0 then 109 if pokus < 6 or random(100) < 60 then 110 room.blesky = 1 111 addv(9, "pap-v-pole") 112 if random(100) < 70 then 113 room.spatne = 1 114 addm(5 + random(4), "pap-m-nedobre") 115 else 116 room.husikuze = 1 117 addm(5 + random(4), "pap-m-mraz") 118 end 119 end 120 elseif room.malomista == 0 and big.X == 26 and (14 <= big.Y and big.Y <= 17) and bambitka.X == bambitka.XStart and bambitka.Y == bambitka.YStart and random(100) < 30 then 121 room.malomista = 1 122 addv(9, "pap-v-tesno") 123 elseif room.bouchacka == 0 and dist(bambitka, small) < 3 then 124 room.bouchacka = 1 125 if pokus < 4 or random(100) < 30 then 126 addm(9, "pap-m-coje") 127 room.nahoda = random(5) 128 switch(room.nahoda){ 129 [0] = function() 130 addm(16, "pap-m-pistole") 131 addv(5 + random(4), "pap-v-laserova") 132 addm(12, "pap-m-jejedno") 133 addv(5 + random(4), "pap-v-nemir") 134 addm(5 + random(4), "pap-m-nejde") 135 end, 136 [1] = function() 137 addm(16, "pap-m-pistole") 138 end, 139 [2] = function() 140 addv(5 + random(4), "pap-v-laserova") 141 if random(100) < 40 then 142 addm(12, "pap-m-jejedno") 143 end 144 end, 145 } 146 end 147 end 148 end 149 end 150 end 151 152 -- ------------------------------------------------------------- 153 local function prog_init_magnetek() 154 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 155 156 magnetek.kolik = 0 157 158 return function() 159 magnetek.kolik = 0 160 if magnetek.anim == "" and isIn(magnetek.X, {12, 11}) and random(100) < 10 then 161 magnetek.kolik = random(11) + 1 162 end 163 kolik_table = { 164 [1] = function() 165 setanim(magnetek, "a1d?0-2a0S[kolik],0") 166 end, 167 [3] = function() 168 setanim(magnetek, "a1d?0-2a2a1a0S[kolik],0") 169 end, 170 [5] = function() 171 --TODO: was typo here? S11 or S1? 172 setanim(magnetek, "a1d?0-2a2a3a2a1a0S[kolik],0") 173 end, 174 [7] = function() 175 setanim(magnetek, "a1d?0-2a2a3a4a2a1a0S[kolik],0") 176 end, 177 [9] = function() 178 setanim(magnetek, "a1d?0-2a?1-4a?1-4a1a0S[kolik],0") 179 end, 180 [10] = function() 181 setanim(magnetek, "a1d?0-2a?1-4a?1-4a?1-4a1a0S[kolik],0") 182 end, 183 [11] = function() 184 setanim(magnetek, "a1d?0-2a?1-4a?1-4a?1-4a?1-4a1a0S[kolik],0") 185 end, 186 } 187 188 kolik_table[2] = kolik_table[1] 189 kolik_table[4] = kolik_table[3] 190 kolik_table[6] = kolik_table[5] 191 kolik_table[8] = kolik_table[7] 192 switch(magnetek.kolik)(kolik_table) 193 194 if magnetek.anim ~= "" then 195 goanim(magnetek) 196 end 197 magnetek:updateAnim() 198 end 199 end 200 201 -- ------------------------------------------------------------- 202 local function prog_init_superpristroj() 203 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 204 205 superpristroj.faze = 0 206 superpristroj.smer = 0 207 208 return function() 209 if superpristroj.faze < 6 and random(3) == 0 then 210 superpristroj.smer = 1 - superpristroj.smer 211 end 212 if superpristroj.anim ~= "" then 213 goanim(superpristroj) 214 elseif superpristroj.smer == 0 and superpristroj.faze < 6 then 215 superpristroj.faze = superpristroj.faze + 1 216 superpristroj.afaze = superpristroj.faze 217 elseif superpristroj.smer == 0 and superpristroj.faze == 6 then 218 superpristroj.faze = superpristroj.faze - 1 219 superpristroj.smer = 1 - superpristroj.smer 220 setanim(superpristroj, "a6a7a8a7a6") 221 elseif superpristroj.smer == 1 and superpristroj.faze > 0 then 222 superpristroj.faze = superpristroj.faze - 1 223 superpristroj.afaze = superpristroj.faze 224 else 225 superpristroj.smer = 1 - superpristroj.smer 226 superpristroj.faze = superpristroj.faze + 1 227 superpristroj.afaze = superpristroj.faze 228 end 229 superpristroj:updateAnim() 230 end 231 end 232 233 -- -------------------- 234 local update_table = {} 235 local subinit 236 subinit = prog_init_room() 237 if subinit then 238 table.insert(update_table, subinit) 239 end 240 subinit = prog_init_magnetek() 241 if subinit then 242 table.insert(update_table, subinit) 243 end 244 subinit = prog_init_superpristroj() 245 if subinit then 246 table.insert(update_table, subinit) 247 end 248 return update_table 249end 250local update_table = prog_init() 251 252 253-- ----------------------------------------------------------------- 254-- Update 255-- ----------------------------------------------------------------- 256function prog_update() 257 for key, subupdate in pairs(update_table) do 258 subupdate() 259 end 260end 261 262