home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / magnet / code.lua next >
Encoding:
Text File  |  2005-07-16  |  10.3 KB  |  262 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local 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
  249. end
  250. local update_table = prog_init()
  251.  
  252.  
  253. -- -----------------------------------------------------------------
  254. -- Update
  255. -- -----------------------------------------------------------------
  256. function prog_update()
  257.     for key, subupdate in pairs(update_table) do
  258.         subupdate()
  259.     end
  260. end
  261.  
  262.