home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 August / GSSH0804.iso / Geschicklichkeit / Enigma / Enigma-081.exe / data / levels / ant03.lua < prev    next >
Text File  |  2003-01-05  |  3KB  |  119 lines

  1. -- MetaPuzzles -- the Enigma Level
  2. -- (c) 2002 Petr Machata/ant_39
  3. -- Licensed under GPL v2.0 or above
  4.  
  5. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  6.  
  7. floortile = "fl-rough"
  8. bordertile = "st-brick"
  9. walltile = "st-glass"
  10. flbridge = "fl-wood"
  11.  
  12. levelw = 20+19
  13. levelh = 13
  14.  
  15. waterx0 = 5
  16. waterw0 = 8
  17.  
  18. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  19.  
  20. create_world(levelw, levelh)
  21. fill_floor(floortile,   0, 0, level_width, level_height)
  22.  
  23. draw_border(bordertile)
  24.  
  25.  
  26. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  27. -- the generator
  28.  
  29. x0 = 1
  30. y0 = 1
  31. x1 = 11
  32. y1 = 4
  33. sid = 0
  34. sw = {}
  35. sws = {}
  36. barx = 27
  37. abyssw = 34-barx-1
  38.  
  39. function proceed()
  40.    function isstone(arr, x, y)
  41.       if ((x>=1)and(y>=1)and(x<=4)and(y<=4)) then
  42.          if sws[(x-1)*4+y] == 1 then
  43.         return 1
  44.          else
  45.         return 0
  46.          end
  47.       else
  48.     return 0
  49.       end
  50.    end
  51.  
  52.    for x=1,4 do
  53.       for y=1,4 do
  54.      if (isstone(sarr, x, y)==1) then -- sarr[x..","..y]==1 then
  55.         --look around where are other stones
  56.         up   = isstone(sws, x, y-1)
  57.         down = isstone(sws, x, y+1)
  58.         left = isstone(sws, x-1, y)
  59.         right= isstone(sws, x+1, y)
  60.         --and convert this information to puzzle stone
  61.         dostring("puz = PUZ_"..up..right..down..left)
  62.         puzzle(x1+x, y1+y, puz)
  63.          end
  64.       end
  65.    end
  66. end
  67.  
  68. for x=1,4 do
  69.    for y=1,4 do
  70.       sid = sid+1
  71.       set_stone("st-switch", x0+2*x, y0+2*y, {action="callback", target="sw"..sid})
  72.       func = "function sw"..sid.."() k="..sid.."; if sws[k]==0 then sws[k]=1 else sws[k]=0 end end"
  73.       dostring(func)
  74.       sws[sid] = 0
  75.    end
  76. end
  77.  
  78. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  79. -- the abyss
  80.  
  81. fill_floor("fl-metal", x0+1, y0+1, 9, 9)
  82. fill_floor("fl-floor_001", x1+1, y1+1, 4, 4)
  83. fill_floor("fl-metal", x1+1, y1+5, 4, 2)
  84. fill_floor("fl-abyss",  barx+1, 1, abyssw, level_height-2)
  85.  
  86. draw_stones(walltile, {x1+1, y1+5}, {1, 0}, 4);
  87.  
  88. -- Keep the marble in safe distance from the "generator" \dh\
  89. set_stone("st-switch", x1+2, y1+6, {action="callback", target="proceed"})
  90.  
  91. fill_floor("fl-normal", 34, 1, 2, level_height-2)
  92. set_stones(bordertile, {{34, 1}, {34, 5}, {34, 7}, {34, 11}})
  93. draw_stones(bordertile, {35, 1}, {0, 1}, 2)
  94. draw_stones(bordertile, {35, 4}, {0, 1}, 2)
  95. draw_stones(bordertile, {35, 7}, {0, 1}, 2)
  96. draw_stones(bordertile, {35, 10}, {0, 1}, 2)
  97. fill_floor("fl-normal", barx, 1, 1, level_height-2)
  98. set_stones(bordertile, {{barx, 1}, {barx, 5}, {barx, 7}, {barx, 11}})
  99. set_item("it-trigger", 34, 3, {action="openclose", target="bridge1"})
  100. set_item("it-trigger", 34, 9, {action="openclose", target="bridge2"})
  101. set_floor("fl-normal", barx+1,  1)
  102. set_floor("fl-normal", barx+1, 11)
  103. set_item("it-spring1", barx+1,  1)
  104. set_item("it-hammer", barx+1, 11)
  105. set_floor("fl-bridge", barx+1,  2, {name="bridge1"})
  106. set_floor("fl-bridge", barx+1, 10, {name="bridge2"})
  107. fill_floor("fl-normal", barx+2, 6, abyssw-2, 1)
  108.  
  109. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  110. -- oxyd stones and stuff
  111.  
  112. oxyd_default_flavor="d"
  113. oxyd (level_width-2,1)
  114. set_stones("st-stone_break", {{level_width-3,1},{level_width-3,2},{level_width-2,2}})
  115. oxyd (level_width-2,level_height-2)
  116. set_stones("st-stone_break", {{level_width-3,level_height-2},{level_width-3,level_height-3},{level_width-2,level_height-3}})
  117. oxyd_shuffle()
  118. set_actor("ac-blackball", 1.5, 5.5, {player=0})
  119.