home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 August / GSSH0804.iso / Geschicklichkeit / Enigma / Enigma-081.exe / data / levels / qq2.lua < prev    next >
Text File  |  2003-06-29  |  5KB  |  178 lines

  1. -- 2003-06-28 -- [ant]: fixes due to changes in enigma:
  2. --   + unnecessary Dynamite remove
  3. --   + changed pathway 'cdefghiJ'
  4. --   + changed hammer/stone_break puzzle, as laser destroys stone_break
  5.  
  6. --        a   b   c   d   e   f   g   h   i   j   k
  7. targets={"b","b","b","b","b","b","h","b","b","h","v"}
  8.  
  9. floors={}
  10. stones={}
  11. items={}
  12.  
  13. floors[" "]={"water"}
  14. floors["%"]={"wood"}
  15.  
  16. stones["#"]={"rock1"}
  17. stones["&"]={"grate1"}
  18. stones["@"]={"wood"}
  19.  
  20. floors["!"]={"wood"}
  21. stones["!"]={"bolder", {direction=SOUTH}}
  22.  
  23. floors["'"]={"wood"}
  24. stones["'"]={"puzzle",{connections=PUZ_1000}}
  25.  
  26. floors[","]={"wood"}
  27. stones[","]={"puzzle",{connections=PUZ_0010}}
  28.  
  29. stones["v"]={"oneway",{orientation=SOUTH}}
  30.  
  31. stones[">"]={"laser", {direction=EAST, on=1, name="laser"}}
  32. stones[")"]={"switch", {target="laser", action="onoff", on=1}}
  33. stones["="]={"pmirror", {movable=1, transparent=0, orientation=2}}
  34.  
  35. stones["~"]={"glass"}
  36. stones["-"]={"oxyd"}
  37.  
  38. stones["1"]={"stoneimpulse",{name="impulse1"}}
  39. stones["2"]={"stoneimpulse",{name="impulse2"}}
  40. stones["3"]={"stoneimpulse",{name="impulse3"}}
  41.  
  42. stones[";"]={"stoneimpulse"}
  43. stones["}"]={"bombs"}
  44.  
  45. items["s"]={"seed"}
  46. items["("]={"spring1"}
  47.  
  48.     for tgt, kind in targets do
  49.     local C=format("%c", tgt+64)
  50.     local c=format("%c", tgt+96)
  51.     
  52.         if tgt <= 2 then
  53.         items[C]={"trigger", { action="callback", target="tr"..tgt }}
  54.         else
  55.         items[C]={"trigger", { action="openclose", target="tgt"..tgt}}
  56.         end
  57.     
  58.         if kind == "b" then
  59.         floors[c]={"bridge", { name="tgt"..tgt, type="a"}}
  60.         else
  61.         stones[c]={"door", {type=kind, name="tgt"..tgt}}
  62.         end
  63.     end
  64.  
  65. stones["|"]={"timer", {target="pulse", action="callback", interval=3}}
  66. items["+"]={"blackbomb"}
  67. --items["k"]={"blackbomb"}
  68.  
  69. stones["?"]={"stone_break"}
  70. items["/"]={"hammer"}
  71.  
  72. level = {
  73. "###########         ",
  74. "#.........#!        ",
  75. "#.........#,        ",
  76. "#........A %%%      ",
  77. "#.....*...a%%%      ",
  78. "#.........b%%%      ",
  79. "####.....B %%%%%%   ",
  80. "#..########%'%%%%%  ",
  81. "1........2#%%G   c  ",
  82. "#@.#v###@####g#  d  ",
  83. "#..;@........@#  e  ",
  84. "#..#@@........3  fh ",
  85. "|..#;##########   i ",    -- screen boundary
  86. "#.CDE#..&....}#   J ",
  87. "#.FHI#K@@.....####j#",
  88. "########...........#",
  89. "#..)#/.#.###########",
  90. "#..>(?.k.~&=......&#",
  91. "#....?####.........#",
  92. "#..................#",
  93. "###########........#",
  94. "          #........#",
  95. "          #~~~~~~~##",
  96. "          #-~-~-~-# ",
  97. "          ##-###-## ",
  98. }
  99.  
  100. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  101.  
  102. function pulse()
  103. enigma.SendMessage(enigma.GetNamedObject("impulse1"), "trigger", nil)
  104. enigma.SendMessage(enigma.GetNamedObject("impulse2"), "trigger", nil)
  105. enigma.SendMessage(enigma.GetNamedObject("impulse3"), "trigger", nil)
  106. end
  107.  
  108. p1=0
  109. p2=0
  110.  
  111. function check_buttons()
  112.     if p1 > 0 and p2 > 0 then
  113.     enigma.SendMessage(enigma.GetNamedObject("tgt1"), "close", nil)
  114.     enigma.SendMessage(enigma.GetNamedObject("tgt2"), "close", nil)
  115.     else
  116.     enigma.SendMessage(enigma.GetNamedObject("tgt1"), "open", nil)
  117.     enigma.SendMessage(enigma.GetNamedObject("tgt2"), "open", nil)
  118.     end
  119. end
  120.  
  121. function tr1(q)    p1=q    check_buttons()    end
  122. function tr2(q)    p2=q    check_buttons()    end
  123.  
  124. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  125.  
  126. function puzzle_box(x, y, w, h)
  127. draw_stones("st-puzzle", {x, y}, {1, 0}, w, { connections=PUZ_0101} )
  128. draw_stones("st-puzzle", {x, y+h}, {1, 0}, w, { connections=PUZ_0101} )
  129.  
  130. draw_stones("st-puzzle", {x, y}, {0, 1}, h, { connections=PUZ_1010} )
  131. draw_stones("st-puzzle", {x+w, y}, {0, 1}, h, { connections=PUZ_1010} )
  132.  
  133. puzzle(x, y, PUZ_0110)        -- TL
  134. puzzle(x+w, y, PUZ_0011)    -- TR
  135. puzzle(x, y+h, PUZ_1100)    -- BL
  136. puzzle(x+w, y+h, PUZ_1001)    -- BR
  137. end
  138.  
  139. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  140.  
  141. create_world( strlen(level[1]), getn(level) )
  142. fill_floor("fl-leaves", 0, 0, level_width, level_height)
  143.     
  144.     for y,line in level do
  145.     y=y-1
  146.         for x = 0, level_width-1 do
  147.         local cell = strchar(strbyte(line,x+1))
  148.         local asc=ascii(cell)
  149.         
  150.             if floors[cell] then
  151.             set_floor("fl-"..floors[cell][1], x, y, floors[cell][2])
  152.             end
  153.             
  154.             if stones[cell]=="oxyd" then
  155.             oxyd(x, y)
  156.             elseif stones[cell] then
  157.             set_stone("st-"..stones[cell][1], x, y, stones[cell][2])
  158.             end
  159.  
  160.             if items[cell] then
  161.             set_item("it-"..items[cell][1], x, y, items[cell][2])
  162.             end
  163.         
  164.             if cell == "*" then
  165.             set_actor("ac-blackball", x+0.5, y+0.5, {player=0})
  166.             end
  167.         end
  168.     y=y+1
  169.     end
  170.  
  171. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  172.  
  173. puzzle_box(1, 1, 3, 3 )
  174. puzzle(3, 1, PUZ_0000)    -- holes
  175. puzzle(3, 4, PUZ_0000)
  176.  
  177. oxyd_shuffle()
  178.