Advertisement
Guest User

Jeden level ve Fish Fillets

a guest
Jul 24th, 2011
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.96 KB | None | 0 0
  1. -- -----------------------------------------------------------------
  2. -- Init
  3. -- -----------------------------------------------------------------
  4. local function prog_init()
  5.     initModels()
  6.     sound_playMusic("music/rybky07.ogg")
  7.     local pokus = getRestartCount()
  8.     local main = {}
  9.     local roompole = createArray(2)
  10.  
  11.  
  12.     -- -------------------------------------------------------------
  13.     local function prog_init_room()
  14.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  15.  
  16.         room.aktivni = main
  17.         room.poc = random(50 + pokus) + 100
  18.         room.halo = 0
  19.         room.mikros = 0
  20.         room.nemam = 200
  21.         room.odsud = 0
  22.         room.pronej = 10 + random(50)
  23.         room.uhnu = 500 + random(500)
  24.         room.teduz = 0
  25.  
  26.         return function()
  27.             switch(room.aktivni){
  28.                 [main] = function()
  29.                     if room.poc > 0 then
  30.                         room.poc = room.poc - 1
  31.                     else
  32.                         pomb1 = zluty.X == ztel.X and zluty.Y + 3 == ztel.Y
  33.                         pomb2 = modry.X == mtel.X and modry.Y + 3 == mtel.Y
  34.                         room.poc = random(80) + 50
  35.                         room.zvon = 0
  36.                         if pomb1 then
  37.                             if pomb2 then
  38.                                 if odd(random(10)) then
  39.                                     room.aktivni = zluty
  40.                                 else
  41.                                     room.aktivni = modry
  42.                                 end
  43.                             else
  44.                                 room.aktivni = zluty
  45.                             end
  46.                         elseif pomb2 then
  47.                             room.aktivni = modry
  48.                         else
  49.                             room.aktivni = ibudik
  50.                         end
  51.                     end
  52.                 end,
  53.                 [zluty] = function()
  54.                     if room.poc == 0 then
  55.                         zluty:killSound()
  56.                         room.poc = random(30) + 30
  57.                         room.aktivni = main
  58.                         zluty.afaze = 0
  59.                     else
  60.                         room.poc = room.poc - 1
  61.                         if room.pronej > 0 then
  62.                             room.pronej = room.pronej - 1
  63.                         end
  64.                         if zluty.X == ztel.X and zluty.Y + 3 == ztel.Y then
  65.                             if zluty:isTalking() then
  66.                                 room.zvon = room.zvon + 1
  67.                                 if odd(room.zvon) then
  68.                                     zluty.afaze = 1
  69.                                 else
  70.                                     zluty.afaze = 2
  71.                                 end
  72.                             elseif room.zvon > 0 then
  73.                                 room.zvon = room.zvon - 1
  74.                                 zluty.afaze = 0
  75.                             else
  76.                                 zluty:talk("bat-t-phone0", VOLUME_FULL)
  77.                             end
  78.                         else
  79.                             zluty:killSound()
  80.                             zluty.afaze = 0
  81.                             room.aktivni = ztel
  82.                             room.halo = 1
  83.                         end
  84.                     end
  85.                     zluty:updateAnim()
  86.                 end,
  87.                 [modry] = function()
  88.                     if room.poc == 0 then
  89.                         modry:killSound()
  90.                         room.poc = random(30) + 30
  91.                         room.aktivni = main
  92.                         modry.afaze = 0
  93.                     else
  94.                         room.poc = room.poc - 1
  95.                         if room.pronej > 0 then
  96.                             room.pronej = room.pronej - 1
  97.                         end
  98.                         if modry.X == mtel.X and modry.Y + 3 == mtel.Y then
  99.                             if modry:isTalking() then
  100.                                 room.zvon = room.zvon + 1
  101.                                 if odd(room.zvon) then
  102.                                     modry.afaze = 1
  103.                                 else
  104.                                     modry.afaze = 2
  105.                                 end
  106.                             elseif room.zvon > 0 then
  107.                                 room.zvon = room.zvon - 1
  108.                                 modry.afaze = 0
  109.                             else
  110.                                 modry:talk("bat-t-phone1", VOLUME_FULL)
  111.                             end
  112.                         else
  113.                             modry:killSound()
  114.                             modry.afaze = 0
  115.                             room.aktivni = mtel
  116.                             room.halo = 1
  117.                         end
  118.                     end
  119.                     modry:updateAnim()
  120.                 end,
  121.                 [ztel] = function()
  122.                     if room.halo ~= 2 then
  123.                         room.aktivni = main
  124.                         room.poc = random(100) + 30
  125.                     end
  126.                 end,
  127.                 [mtel] = function()
  128.                     if room.halo ~= 2 then
  129.                         room.aktivni = main
  130.                         room.poc = random(100) + 30
  131.                     end
  132.                 end,
  133.                 [ibudik] = function()
  134.                     if room.poc > 0 then
  135.                         room.poc = room.poc - 1
  136.                     elseif not ibudik:isTalking() then
  137.                         ibudik:talk("bat-t-budik", VOLUME_FULL, -1)
  138.                     elseif ibudik.dir ~= dir_no then
  139.                         ibudik:killSound()
  140.                         room.aktivni = -1
  141.                     end
  142.                 end,
  143.             }
  144.             if room.halo == 1 then
  145.                 room.halo = 2
  146.                 if pokus > 5 then
  147.                     pom1 = random(11)
  148.                 else
  149.                     pom1 = random(8)
  150.                 end
  151.                 local bin_table = {}
  152.                 switch(pom1){
  153.                     [0] = function()
  154.                         bin_table[0] = true
  155.                         bin_table[1] = true
  156.                     end,
  157.                     [1] = function()
  158.                         bin_table[0] = true
  159.                         bin_table[2] = true
  160.                         bin_table[4] = true
  161.                     end,
  162.                     [2] = function()
  163.                         bin_table[0] = true
  164.                         bin_table[3] = true
  165.                     end,
  166.                     [3] = function()
  167.                         bin_table[5] = true
  168.                     end,
  169.                     [4] = function()
  170.                         bin_table[4] = true
  171.                         bin_table[5] = true
  172.                     end,
  173.                     [5] = function()
  174.                         bin_table[1] = true
  175.                         bin_table[2] = true
  176.                     end,
  177.                     [6] = function()
  178.                         bin_table[0] = true
  179.                         bin_table[3] = true
  180.                         bin_table[4] = true
  181.                     end,
  182.                     [7] = function()
  183.                         bin_table[1] = true
  184.                     end,
  185.                     default = function()
  186.                         bin_table = {}
  187.                     end,
  188.                 }
  189.                 if bin_table[0] then
  190.                     room:planDialog(5, "bat-p-0")
  191.                 end
  192.                 if bin_table[1] then
  193.                     room:planDialog(5, "bat-p-1")
  194.                 end
  195.                 if bin_table[2] then
  196.                     room:planDialog(5, "bat-p-2")
  197.                 end
  198.                 if bin_table[3] then
  199.                     room:planDialog(5, "bat-p-3")
  200.                 end
  201.                 if bin_table[5] then
  202.                     room:planDialog(5, "bat-p-5")
  203.                 end
  204.                 if bin_table[4] then
  205.                     room:planDialog(5, "bat-p-4")
  206.                 end
  207.                 if countPairs(bin_table) == 0 then
  208.                     room:planDialog(5, "bat-p-zhov"..random(2))
  209.                 end
  210.                 planSet(room, "halo", 0)
  211.             end
  212.             if no_dialog() and isReady(small) and isReady(big) then
  213.                 if game_getCycles() == 20 and random(pokus) < 3 then
  214.                     addm(5, "bat-m-tohle")
  215.                 elseif room.mikros == 0 and dist(small, mikroskop) < 3 and mikroskop.dir ~= dir_no and random(10) == 1 then
  216.                     room.mikros = 1
  217.                     addm(6, "bat-m-mikro")
  218.                 elseif room.odsud == 0 and zluty.X > 32 and dist(small, zluty) < 4 and random(30) == 1 then
  219.                     room.odsud = 1
  220.                     addm(7, "bat-m-sluch")
  221.                 elseif room.teduz == 0 and room.aktivni == -1 and random(70) == 1 then
  222.                     room.teduz = 1
  223.                     addv(8, "bat-v-klid")
  224.                 elseif room.nemam > 0 then
  225.                     room.nemam = room.nemam - 1
  226.                 else
  227.                     switch(room.aktivni){
  228.                         [ibudik] = function()
  229.                             if random(100) == 1 then
  230.                                 room.nemam = 200 + random(200)
  231.                                 addv(1, "bat-v-vyp")
  232.                             end
  233.                         end,
  234.                         default = function()
  235.                             if room.aktivni == zluty or room.aktivni == modry then
  236.                                 if random(100) == 1 then
  237.                                     room.nemam = 200 + random(200)
  238.                                     if dist(small, room.aktivni) < dist(big, room.aktivni) then
  239.                                         addv(1, "bat-v-zved1")
  240.                                     else
  241.                                         addv(1, "bat-v-zved0")
  242.                                     end
  243.                                 end
  244.                             end
  245.                         end,
  246.                     }
  247.                 end
  248.             end
  249.             if no_dialog() then
  250.                 if room.pronej == 0 and (room.aktivni == zluty or room.aktivni == modry) and random(30) == 1 then
  251.                     room.pronej = random(100)
  252.                     planDialogSet(3, "bat-s-prome"..random(3), 111, snek, "mluvi")
  253.                 elseif room.uhnu == 0 and (room.aktivni == -1 or room.poc > 30 and room.aktivni == main) then
  254.                     room.uhnu = 300 + random(300)
  255.                     pom2 = random(4)
  256.                     if pom2 ~= 1 or roompole[1] > 0 then
  257.                         planDialogSet(12, "bat-s-snek"..pom2, 111, snek, "mluvi")
  258.                     end
  259.                     roompole[1] = roompole[1] + 1
  260.                 end
  261.             end
  262.             if room.uhnu > 0 then
  263.                 room.uhnu = room.uhnu - 1
  264.             end
  265.         end
  266.     end
  267.  
  268.     -- -------------------------------------------------------------
  269.     local function prog_init_dhled()
  270.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  271.  
  272.         dhled.padal = 0
  273.  
  274.         return function()
  275.             if dhled.padal == 4 then
  276.                 dhled.afaze = 0
  277.                 dhled.padal = 0
  278.             elseif dhled.padal == 3 then
  279.                 dhled.padal = 4
  280.             elseif dhled.padal == 2 then
  281.                 dhled.padal = 3
  282.             elseif dhled.dir == dir_down then
  283.                 dhled.padal = 1
  284.             elseif dhled.padal == 1 then
  285.                 dhled.afaze = 1
  286.                 dhled.padal = 2
  287.             end
  288.             dhled:updateAnim()
  289.         end
  290.     end
  291.  
  292.     -- -------------------------------------------------------------
  293.     local function prog_init_snek()
  294.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  295.  
  296.         snek.mluvi = 0
  297.  
  298.         return function()
  299.             if odd(game_getCycles()) and snek.mluvi ~= 0 then
  300.                 snek.afaze = random(2)
  301.             else
  302.                 snek.afaze = 0
  303.             end
  304.             snek:updateAnim()
  305.         end
  306.     end
  307.  
  308.     -- -------------------------------------------------------------
  309.     local function prog_init_ibudik()
  310.         return function()
  311.             if odd(game_getCycles()) and ibudik:isTalking() then
  312.                 ibudik.afaze = 1
  313.             else
  314.                 ibudik.afaze = 0
  315.             end
  316.             ibudik:updateAnim()
  317.         end
  318.     end
  319.  
  320.     -- -------------------------------------------------------------
  321.     local function prog_init_mikroskop()
  322.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  323.  
  324.         mikroskop.poc = 0
  325.  
  326.         return function()
  327.             if mikroskop.poc > 0 then
  328.                 mikroskop.poc = mikroskop.poc - 1
  329.             else
  330.                 mikroskop.afaze = random(3)
  331.                 mikroskop.poc = random(6)
  332.             end
  333.             if mikroskop.dir ~= dir_no then
  334.                 mikroskop.poc = 0
  335.             end
  336.             mikroskop:updateAnim()
  337.         end
  338.     end
  339.  
  340.     -- --------------------
  341.     local update_table = {}
  342.     local subinit
  343.     subinit = prog_init_room()
  344.     if subinit then
  345.         table.insert(update_table, subinit)
  346.     end
  347.     subinit = prog_init_dhled()
  348.     if subinit then
  349.         table.insert(update_table, subinit)
  350.     end
  351.     subinit = prog_init_snek()
  352.     if subinit then
  353.         table.insert(update_table, subinit)
  354.     end
  355.     subinit = prog_init_ibudik()
  356.     if subinit then
  357.         table.insert(update_table, subinit)
  358.     end
  359.     subinit = prog_init_mikroskop()
  360.     if subinit then
  361.         table.insert(update_table, subinit)
  362.     end
  363.     return update_table
  364. end
  365. local update_table = prog_init()
  366.  
  367.  
  368. -- -----------------------------------------------------------------
  369. -- Update
  370. -- -----------------------------------------------------------------
  371. function prog_update()
  372.     for key, subupdate in pairs(update_table) do
  373.         subupdate()
  374.     end
  375. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement