1 2-- ----------------------------------------------------------------- 3-- Init 4-- ----------------------------------------------------------------- 5local function prog_init() 6 initModels() 7 sound_playMusic("music/rybky01.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.okrikla = 0 16 room.maxdrzost = 20 17 room.kuk = 0 18 room.kobyla = 0 19 room.prekazka = 0 20 room.okriknuti = 2 21 room.vsichni = 0 22 23 return function() 24 if isReady(small) and isReady(big) and no_dialog() then 25 if valec.X == 7 and valec.Y == 9 and valec.dir == dir_no and room.prekazka == 0 then 26 switch(random(2)){ 27 [0] = function() 28 addv(0, "mik-v-sakra") 29 end, 30 [1] = function() 31 addv(random(4), "mik-v-projet") 32 end, 33 } 34 room.prekazka = 1 35 elseif room.okrikla ~= 1 and room.vsichni == 1 then 36 switch(random(room.okriknuti)){ 37 [0] = function() 38 addv(random(5), "mik-v-ticho0") 39 end, 40 [1] = function() 41 addv(random(5), "mik-v-ticho1") 42 end, 43 [2] = function() 44 addv(random(5), "mik-v-ticho2") 45 end, 46 } 47 planSet(room, "okrikla", 1) 48 elseif room.okrikla == 1 then 49 krab1:killSound() 50 krab2:killSound() 51 krab3:killSound() 52 krab4:killSound() 53 54 room.vsichni = 0 55 dialog_table = { 56 [0] = function() 57 addm(20 + random(15), "mik-m-krab") 58 if random(100) < 50 then 59 addm(random(6), "mik-m-poust") 60 end 61 end, 62 [1] = function() 63 addm(10 + random(25), "mik-m-tusit") 64 end, 65 [2] = function() 66 switch(random(2)){ 67 [0] = function() 68 addv(10 + random(15), "mik-v-proto") 69 end, 70 [1] = function() 71 addv(10 + random(15), "mik-v-tak") 72 end, 73 } 74 if room.okriknuti == 3 then 75 switch(random(6)){ 76 [0] = function() 77 addm(6 + random(5), "mik-m-nezlob") 78 end, 79 [1] = function() 80 addm(10 + random(25), "mik-m-myslit") 81 end, 82 [2] = function() 83 addm(random(5), "mik-m-nezlob") 84 addm(5 + random(15), "mik-m-myslit") 85 end, 86 } 87 end 88 room.okriknuti = 3 89 end, 90 } 91 92 dialog_table[3] = dialog_table[2] 93 dialog_table[4] = dialog_table[2] 94 switch(random(7))(dialog_table) 95 96 room.okrikla = 0 97 krab1.drzej = 0 98 krab2.drzej = 0 99 krab3.drzej = 0 100 krab4.drzej = 0 101 adddel(random(20) + 30) 102 planSet(krab1, "drzej", 1) 103 planSet(krab2, "drzej", 1) 104 planSet(krab3, "drzej", 1) 105 planSet(krab4, "drzej", 1) 106 elseif look_at(small, rybusa) and rybusa.afaze > 0 and random(100) < 10 and room.kuk == 0 then 107 addm(random(5), "mik-m-proc") 108 addv(random(5), "mik-v-videt") 109 room.kuk = 1 110 elseif look_at(small, kun) and room.kobyla == 0 and (small.Y == kun.Y or small.Y == kun.Y + 1) and xdist(small, kun) < 2 and kun.dir == dir_no and random(200) < 1 then 111 addm(0, "mik-m-konik") 112 room.kobyla = 1 113 end 114 end 115 end 116 end 117 118 -- ------------------------------------------------------------- 119 local function prog_init_kun() 120 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 121 122 kun.pauza = random(10) 123 124 return function() 125 if kun.pauza > 0 then 126 kun.pauza = kun.pauza - 1 127 else 128 switch(kun.afaze){ 129 [0] = function() 130 kun.afaze = random(2) + 2 131 kun.pauza = 10 - kun.afaze + random((5 - kun.afaze) * 20) 132 end, 133 [1] = function() 134 kun.afaze = random(4) 135 kun.pauza = 10 + random(10) 136 end, 137 [2] = function() 138 kun.pauza = random(150) 139 if kun.pauza < 20 then 140 kun.afaze = 3 141 else 142 kun.afaze = 1 143 end 144 end, 145 [3] = function() 146 kun.afaze = 0 147 kun.pauza = random(20) 148 end, 149 } 150 end 151 152 kun:updateAnim() 153 end 154 end 155 156 -- ------------------------------------------------------------- 157 local function prog_init_rybusa() 158 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 159 160 rybusa.pauza = random(50) 161 162 return function() 163 if rybusa.pauza > 0 then 164 rybusa.pauza = rybusa.pauza - 1 165 else 166 switch(rybusa.afaze){ 167 [0] = function() 168 rybusa.afaze = 1 169 rybusa.pauza = 10 + random(20) 170 end, 171 [1] = function() 172 rybusa.afaze = random(4) 173 if rybusa.afaze == 0 then 174 rybusa.pauza = 20 + random(100) 175 else 176 rybusa.pauza = 10 + random(5) 177 end 178 end, 179 [2] = function() 180 rybusa.afaze = 1 + random(2) * 2 181 rybusa.pauza = 10 + random(5) 182 end, 183 [3] = function() 184 rybusa.afaze = 1 + random(2) 185 rybusa.pauza = 10 + random(5) 186 end, 187 } 188 end 189 190 rybusa:updateAnim() 191 end 192 end 193 194 -- ------------------------------------------------------------- 195 local function prog_init_sepie() 196 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 197 198 sepie.mrk = 0 199 sepie.pozice = 0 200 201 return function() 202 if random(7) < 4 then 203 sepie.pozice = random(3) 204 end 205 if random(10) < 4 then 206 sepie.mrk = random(2) 207 end 208 sepie.afaze = sepie.mrk * 3 + sepie.pozice 209 210 sepie:updateAnim() 211 end 212 end 213 214 -- ------------------------------------------------------------- 215 local function prog_init_krab4() 216 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 217 218 krab4.drzej = 1 219 krab4.keca = 0 220 221 return function() 222 if krab4:isTalking() then 223 krab4.keca = 1 224 else 225 krab4.keca = 0 226 end 227 if krab4.keca == 0 and random(200) < krab4.drzej then 228 if krab1.keca == 1 and krab2.keca == 1 and krab3.keca == 1 then 229 room.vsichni = 1 230 end 231 switch(random(4)){ 232 [0] = function() 233 krab4:talk("mik-x-stebet0") 234 end, 235 [1] = function() 236 krab4:talk("mik-x-stebet1") 237 end, 238 [2] = function() 239 krab4:talk("mik-x-stebet2") 240 end, 241 [3] = function() 242 krab4:talk("mik-x-stebet3") 243 end, 244 } 245 krab4.drzej = krab4.drzej + 1 246 krab4.keca = 1 247 end 248 if krab4.keca == 1 then 249 krab4.afaze = random(2) * 2 250 else 251 krab4.afaze = 0 252 end 253 if random(100) < 5 then 254 krab4.afaze = krab4.afaze + 1 255 end 256 if room.okrikla == 1 then 257 krab4.drzej = 1 258 end 259 260 krab4:updateAnim() 261 end 262 end 263 264 -- ------------------------------------------------------------- 265 local function prog_init_krab3() 266 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 267 268 krab3.drzej = 1 269 krab3.keca = 0 270 271 return function() 272 if krab3:isTalking() then 273 krab3.keca = 1 274 else 275 krab3.keca = 0 276 end 277 if krab3.keca == 0 and random(200) < krab3.drzej then 278 if krab1.keca == 1 and krab2.keca == 1 and krab4.keca == 1 then 279 room.vsichni = 1 280 end 281 switch(random(4)){ 282 [0] = function() 283 krab3:talk("mik-x-stebet0") 284 end, 285 [1] = function() 286 krab3:talk("mik-x-stebet1") 287 end, 288 [2] = function() 289 krab3:talk("mik-x-stebet2") 290 end, 291 [3] = function() 292 krab3:talk("mik-x-stebet3") 293 end, 294 } 295 krab3.drzej = krab3.drzej + 1 296 krab3.keca = 1 297 end 298 if krab3.keca == 1 then 299 krab3.afaze = random(2) * 2 300 else 301 krab3.afaze = 0 302 end 303 if random(100) < 5 then 304 krab3.afaze = krab3.afaze + 1 305 end 306 if room.okrikla == 1 then 307 krab3.drzej = 1 308 end 309 310 krab3:updateAnim() 311 end 312 end 313 314 -- ------------------------------------------------------------- 315 local function prog_init_krab2() 316 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 317 318 krab2.drzej = 1 319 krab2.keca = 0 320 321 return function() 322 if krab2:isTalking() then 323 krab2.keca = 1 324 else 325 krab2.keca = 0 326 end 327 if krab2.keca == 0 and random(200) < krab2.drzej then 328 if krab1.keca == 1 and krab3.keca == 1 and krab4.keca == 1 then 329 room.vsichni = 1 330 end 331 switch(random(4)){ 332 [0] = function() 333 krab2:talk("mik-x-stebet0") 334 end, 335 [1] = function() 336 krab2:talk("mik-x-stebet1") 337 end, 338 [2] = function() 339 krab2:talk("mik-x-stebet2") 340 end, 341 [3] = function() 342 krab2:talk("mik-x-stebet3") 343 end, 344 } 345 krab2.drzej = krab2.drzej + 1 346 krab2.keca = 1 347 end 348 if krab2.keca == 1 then 349 krab2.afaze = random(2) * 2 350 else 351 krab2.afaze = 0 352 end 353 if random(100) < 5 then 354 krab2.afaze = krab2.afaze + 1 355 end 356 if room.okrikla == 1 then 357 krab2.drzej = 1 358 end 359 360 krab2:updateAnim() 361 end 362 end 363 364 -- ------------------------------------------------------------- 365 local function prog_init_snek() 366 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 367 368 snek.pauza = 3 369 370 return function() 371 if snek.pauza > 0 then 372 snek.pauza = snek.pauza - 1 373 else 374 switch(snek.afaze){ 375 [0] = function() 376 snek.afaze = random(2) * 2 377 end, 378 [1] = function() 379 snek.afaze = random(4) 380 end, 381 [2] = function() 382 snek.afaze = 1 + 2 * random(2) 383 end, 384 [3] = function() 385 snek.afaze = random(3) 386 end, 387 } 388 snek.pauza = random(20) + 5 389 end 390 391 snek:updateAnim() 392 end 393 end 394 395 -- ------------------------------------------------------------- 396 local function prog_init_krab1() 397 local pom1, pom2, pomb1, pomb2 = 0, 0, false, false 398 399 krab1.drzej = 1 400 krab1.keca = 0 401 402 return function() 403 if krab1:isTalking() then 404 krab1.keca = 1 405 else 406 krab1.keca = 0 407 end 408 if krab1.keca == 0 and random(300) < krab1.drzej then 409 if krab2.keca == 1 and krab3.keca == 1 and krab4.keca == 1 then 410 room.vsichni = 1 411 end 412 switch(random(4)){ 413 [0] = function() 414 krab1:talk("mik-x-stebet0") 415 end, 416 [1] = function() 417 krab1:talk("mik-x-stebet1") 418 end, 419 [2] = function() 420 krab1:talk("mik-x-stebet2") 421 end, 422 [3] = function() 423 krab1:talk("mik-x-stebet3") 424 end, 425 } 426 krab1.drzej = krab1.drzej + 1 427 krab1.keca = 1 428 end 429 if krab1.keca == 1 then 430 krab1.afaze = random(2) * 2 431 else 432 krab1.afaze = 0 433 end 434 if random(100) < 5 then 435 krab1.afaze = krab1.afaze + 1 436 end 437 if room.okrikla == 1 then 438 krab1.drzej = 1 439 end 440 441 krab1:updateAnim() 442 end 443 end 444 445 -- -------------------- 446 local update_table = {} 447 local subinit 448 subinit = prog_init_room() 449 if subinit then 450 table.insert(update_table, subinit) 451 end 452 subinit = prog_init_kun() 453 if subinit then 454 table.insert(update_table, subinit) 455 end 456 subinit = prog_init_rybusa() 457 if subinit then 458 table.insert(update_table, subinit) 459 end 460 subinit = prog_init_sepie() 461 if subinit then 462 table.insert(update_table, subinit) 463 end 464 subinit = prog_init_krab4() 465 if subinit then 466 table.insert(update_table, subinit) 467 end 468 subinit = prog_init_krab3() 469 if subinit then 470 table.insert(update_table, subinit) 471 end 472 subinit = prog_init_krab2() 473 if subinit then 474 table.insert(update_table, subinit) 475 end 476 subinit = prog_init_snek() 477 if subinit then 478 table.insert(update_table, subinit) 479 end 480 subinit = prog_init_krab1() 481 if subinit then 482 table.insert(update_table, subinit) 483 end 484 return update_table 485end 486local update_table = prog_init() 487 488 489-- ----------------------------------------------------------------- 490-- Update 491-- ----------------------------------------------------------------- 492function prog_update() 493 for key, subupdate in pairs(update_table) do 494 subupdate() 495 end 496end 497 498