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 if pokus == 1 then 16 room.uvod = 3 17 else 18 room.uvod = random(3) 19 end 20 room.oregistry = random(5000) + 500 21 room.odolech = 0 22 room.oblizardu = 0 23 24 return function() 25 if room.oblizardu == 0 and isReady(big) and big.X == 47 and big.Y == 11 then 26 room.oblizardu = 1 27 big:setBusy(true) 28 addv(5, "war-v-blizzard") 29 if isReady(small) then 30 small:setBusy(true) 31 addm(4, "war-m-hodiny") 32 end 33 planBusy(big, false) 34 planBusy(small, false) 35 end 36 if no_dialog() and isReady(small) and isReady(big) then 37 for pom1 = 1, 10 do 38 if room.oregistry > 0 then 39 room.oregistry = room.oregistry - 1 40 end 41 end 42 if room.uvod > 0 then 43 if room.uvod == 1 or room.uvod == 3 then 44 addm(random(30) + 10, "war-m-kam") 45 addv(random(30) + 10, "war-v-povedome") 46 end 47 if room.uvod == 2 or room.uvod == 3 then 48 switch(random(2)){ 49 [0] = function() 50 addm(random(30) + 20, "war-m-hrad") 51 end, 52 [1] = function() 53 addm(random(30) + 20, "war-m-ocel") 54 end, 55 } 56 if random(100) < 50 or pokus == 1 then 57 addv(random(200) + 10, "war-v-vesnicane") 58 addm(4, "war-m-peoni") 59 end 60 end 61 room.uvod = 0 62 elseif room.odolech == 0 and (dul1.dir ~= dir_no or dul2.dir ~= dir_no) and random(100) < 10 then 63 room.odolech = 0 64 addv(random(30) + 10, "war-v-doly") 65 addm(random(20), "war-m-povazuji") 66 elseif room.oregistry == 0 then 67 room.oregistry = -1 68 addv(20, "war-v-pohadka") 69 addm(random(40) + 10, "war-m-pichat") 70 addv(2, "war-v-prozradit") 71 addm(4, "war-m-aznato") 72 end 73 end 74 end 75 end 76 77 -- ------------------------------------------------------------- 78 local function prog_init_knight1() 79 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 80 81 knight1.hybese = 0 82 knight1.unejvelka = 1 83 knight1.unejmala = 0 84 85 return function() 86 pom2 = 0 87 if dist(big, knight1) <= 1 then 88 pom1 = 1 89 else 90 pom1 = 0 91 end 92 if knight1.unejvelka == 0 and pom1 == 1 then 93 pom2 = 1 94 end 95 knight1.unejvelka = pom1 96 if dist(small, knight1) <= 1 then 97 pom1 = 1 98 else 99 pom1 = 0 100 end 101 if knight1.unejmala == 0 and pom1 == 1 then 102 pom2 = 1 103 end 104 knight1.unejmala = pom1 105 if knight1.dir ~= dir_no and knight1.hybese == 0 then 106 pom2 = 2 107 end 108 if knight1.dir ~= dir_no then 109 knight1.hybese = 1 110 else 111 knight1.hybese = 0 112 end 113 switch(pom2){ 114 [1] = function() 115 knight1:talk("war-k-ready"..random(3), VOLUME_FULL) 116 end, 117 [2] = function() 118 knight1:talk("war-k-move" ..random(3), VOLUME_FULL) 119 end, 120 } 121 end 122 end 123 124 -- ------------------------------------------------------------- 125 local function prog_init_knight2() 126 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 127 128 knight2.hybese = 0 129 knight2.unejvelka = 0 130 knight2.unejmala = 0 131 132 return function() 133 pom2 = 0 134 if dist(big, knight2) <= 1 then 135 pom1 = 1 136 else 137 pom1 = 0 138 end 139 if knight2.unejvelka == 0 and pom1 == 1 then 140 pom2 = 1 141 end 142 knight2.unejvelka = pom1 143 if dist(small, knight2) <= 1 then 144 pom1 = 1 145 else 146 pom1 = 0 147 end 148 if knight2.unejmala == 0 and pom1 == 1 then 149 pom2 = 1 150 end 151 knight2.unejmala = pom1 152 if knight2.dir ~= dir_no and knight2.hybese == 0 then 153 pom2 = 2 154 end 155 if knight2.dir ~= dir_no then 156 knight2.hybese = 1 157 else 158 knight2.hybese = 0 159 end 160 switch(pom2){ 161 [1] = function() 162 knight2:talk("war-k-ready"..random(3), VOLUME_FULL) 163 end, 164 [2] = function() 165 knight2:talk("war-k-move"..random(3), VOLUME_FULL) 166 end, 167 } 168 end 169 end 170 171 -- ------------------------------------------------------------- 172 local function prog_init_archer1() 173 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 174 175 archer1.hybese = 0 176 archer1.unejvelka = 1 177 archer1.unejmala = 0 178 179 return function() 180 pom2 = 0 181 if dist(big, archer1) <= 1 then 182 pom1 = 1 183 else 184 pom1 = 0 185 end 186 if archer1.unejvelka == 0 and pom1 == 1 then 187 pom2 = 1 188 end 189 archer1.unejvelka = pom1 190 if dist(small, archer1) <= 1 then 191 pom1 = 1 192 else 193 pom1 = 0 194 end 195 if archer1.unejmala == 0 and pom1 == 1 then 196 pom2 = 1 197 end 198 archer1.unejmala = pom1 199 if archer1.dir ~= dir_no and archer1.hybese == 0 then 200 pom2 = 2 201 end 202 if archer1.dir ~= dir_no then 203 archer1.hybese = 1 204 else 205 archer1.hybese = 0 206 end 207 switch(pom2){ 208 [1] = function() 209 archer1:talk("war-a-ready"..random(2), VOLUME_FULL) 210 end, 211 [2] = function() 212 archer1:talk("war-a-move"..random(2), VOLUME_FULL) 213 end, 214 } 215 end 216 end 217 218 -- ------------------------------------------------------------- 219 local function prog_init_archer2() 220 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 221 222 archer2.hybese = 0 223 archer2.unejvelka = 1 224 archer2.unejmala = 0 225 226 return function() 227 pom2 = 0 228 if dist(big, archer2) <= 1 then 229 pom1 = 1 230 else 231 pom1 = 0 232 end 233 if archer2.unejvelka == 0 and pom1 == 1 then 234 pom2 = 1 235 end 236 archer2.unejvelka = pom1 237 if dist(small, archer2) <= 1 then 238 pom1 = 1 239 else 240 pom1 = 0 241 end 242 if archer2.unejmala == 0 and pom1 == 1 then 243 pom2 = 1 244 end 245 archer2.unejmala = pom1 246 if archer2.dir ~= dir_no and archer2.hybese == 0 then 247 pom2 = 2 248 end 249 if archer2.dir ~= dir_no then 250 archer2.hybese = 1 251 else 252 archer2.hybese = 0 253 end 254 switch(pom2){ 255 [1] = function() 256 archer2:talk("war-a-ready"..random(2), VOLUME_FULL) 257 end, 258 [2] = function() 259 archer2:talk("war-a-move"..random(2), VOLUME_FULL) 260 end, 261 } 262 end 263 end 264 265 -- -------------------- 266 local update_table = {} 267 local subinit 268 subinit = prog_init_room() 269 if subinit then 270 table.insert(update_table, subinit) 271 end 272 subinit = prog_init_knight1() 273 if subinit then 274 table.insert(update_table, subinit) 275 end 276 subinit = prog_init_knight2() 277 if subinit then 278 table.insert(update_table, subinit) 279 end 280 subinit = prog_init_archer1() 281 if subinit then 282 table.insert(update_table, subinit) 283 end 284 subinit = prog_init_archer2() 285 if subinit then 286 table.insert(update_table, subinit) 287 end 288 return update_table 289end 290local update_table = prog_init() 291 292 293-- ----------------------------------------------------------------- 294-- Update 295-- ----------------------------------------------------------------- 296function prog_update() 297 for key, subupdate in pairs(update_table) do 298 subupdate() 299 end 300end 301 302