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

  1. -- Cannonball -- the Enigma Level
  2. -- (c) 2003 Petr Machata/ant_39
  3. -- Licensed under GPL v2.0 or above
  4. -- 2003-01-08
  5. -- 2003-01-10 -- modified base floor beneath doorE, doorF, removed document
  6. -- 2003-01-11 -- modified so that it uses object groups from ant.lua
  7. -- 2003-02-09 -- fixes in object groups
  8. -- 2003-06-24 -- changes in AddConstantForce
  9.  
  10. Require("levels/ant.lua")
  11.  
  12. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  13. function construct(x, y) set_floor("fl-metal", x, y) end
  14. function destruct(x, y)  set_floor("fl-abyss", x, y) end
  15.  
  16. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  17. forcecount = 0
  18. force = 100
  19. act_state = 0
  20. DOORCOUNT = 0
  21.  
  22. function forceup()
  23.    forcecount = forcecount + 1
  24.    enigma.AddConstantForce(forcecount*force,0)
  25. end
  26.  
  27. function forcedn()
  28.    enigma.AddConstantForce(0,0)
  29.    forcecount = 0
  30. end
  31.  
  32. function run_trigger_action()
  33.    if (act_state == 0) then
  34.       act_state = 1
  35.    end
  36. end
  37.  
  38. function restart_trigger_action()
  39.    act_state = 0
  40.    forcedn()
  41. end
  42.  
  43. function tick()
  44.    if (act_state == 0) then
  45.       send_group_message(doors_A, "open", nil)
  46.    elseif (act_state == 1) then
  47.       send_group_message(doors_A, "close", nil)
  48.       act_state = act_state + 1
  49.    elseif (act_state == 2) then
  50.       send_group_message(doors_B, "open", nil)
  51.       act_state = act_state + 1
  52.    elseif (act_state == 3) then
  53.       forceup()
  54.       act_state = act_state + 1
  55.    elseif (act_state == 4) then
  56.       send_group_message(doors_B, "close", nil)
  57.       act_state = 0
  58.    else
  59.       act_state = 0
  60.    end
  61. end
  62.  
  63. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  64.  
  65. cells={}
  66. cells[";"]=cell{floor="fl-tigris"}
  67. cells[":"]=cell{floor="fl-sahara"}
  68. cells["."]=cell{floor="fl-abyss"}
  69. cells["_"]=cell{floor="fl-metal"}
  70. cells["w"]=cell{floor="fl-wood"}
  71.  
  72. cells["v"]=cell{{{gradient, 01}}}
  73. cells["^"]=cell{{{gradient, 02}}}
  74. cells[">"]=cell{{{gradient, 23}}}
  75. cells["|"]=cell{{{gradient, 03}}}
  76. cells["T"]=cell{{{gradient, 05}}}
  77. cells["L"]=cell{{{gradient, 07}}}
  78. cells["R"]=cell{{{gradient, 09}}}
  79. cells["/"]=cell{{{gradient, 10}}}
  80.  
  81. cells[" "]=cell{{{checkerfloor,{cells[":"], cells[";"]}}}}
  82.  
  83. cells["="]=cell{stone="st-rock5"}
  84. cells["#"]=cell{stone="st-rock6"}
  85.  
  86. cells["&"]=cell{{{oneway, EAST}}}
  87. cells["%"]=cell{{{oneway, WEST}}}
  88.  
  89. cells["x"]=cell{stone="st-grate1"}
  90. cells["e"]=cell{parent=cells["w"],stone={"st-door", {name="doorE", type="v"}}}
  91. cells["f"]=cell{parent=cells["w"],stone={"st-door", {name="doorF", type="v"}}}
  92.  
  93. doors_A = {};
  94. doors_B = {};
  95. cells["?"]=cell{{{add_multistone, "st-door", doors_A, {type="h"}}}}
  96. cells["!"]=cell{{{add_multistone, "st-door_b", doors_B, {type="v"}}}}
  97.  
  98. cells["D"]=cell{parent=cells["w"],stone="st-death"}
  99. cells["W"]=cell{parent=cells["w"],stone="st-brick"}
  100. cells["E"]=cell{parent=cells["w"],stone={"st-floppy", {action="openclose", target="doorE"}}}
  101. cells["F"]=cell{parent=cells["w"],stone={"st-floppy", {action="openclose", target="doorF"}}}
  102.  
  103. path0 = {}
  104. loco0 = {}
  105. cells["$"]=cell{parent={cells["."], {add_multicell, path0, 0}}}
  106. cells["@"]=cell{parent={cells["$"], {add_multicell, path0, 1}, cells["_"]}}
  107. cells["c"]=cell{parent={cells["@"], {add_multicell, loco0, construct}}}
  108. cells["d"]=cell{parent={cells["$"], {add_multicell, loco0, destruct}}}
  109. rail0 = new_rail(loco0, path0)
  110.  
  111. cells["~"]=cell{stone={"st-timer", {action="callback", target="tick", interval=1}}}
  112. cells["`"]=cell{stone={"st-timer", {action="callback", target="rail0", interval=0.15}}}
  113.  
  114. cells["+"]=cell{item={"it-trigger", {action="callback", target="forceup"}}}
  115. cells["-"]=cell{parent=cells["_"],item={"it-trigger", {action="callback", target="forcedn"}}}
  116. cells["*"]=cell{parent={cells[">"], cells["+"]}}
  117. cells["o"]=cell{item={"it-trigger", {action="callback", target="run_trigger_action"}}}
  118. cells["9"]=cell{item={"it-trigger", {action="callback", target="restart_trigger_action", invisible=1}}}
  119.  
  120. cells["h"]=cell{parent=cells["w"],item="it-floppy"}
  121. cells["s"]=cell{parent=cells["x"],item="it-spring1"}
  122.  
  123. cells["X"]=cell{{cells["x"], cells["$"]}}
  124. cells["Y"]=cell{{cells["x"], cells["@"]}}
  125. cells["y"]=cell{{cells["x"], cells["w"]}}
  126.  
  127. cells["0"]=oxyd
  128.  
  129. cells["O"]=cell{parent=cells["9"],actor={"ac-blackball", {player=0}}}
  130.  
  131. level = {
  132.    "====================.....................................~WWWWWWWWWWWWWWWWWWW",
  133.    "=xxxxxxxxxxxxxxxxxx==wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWW......$$c@Y@@d$...W",
  134.    "=xx        O       %ww=..............www..............Www%wwwwwwXwwwWwwwXwwwW",
  135.    "=x 9               ====...............w...............WWWW...wwwXXXXXXXXXwwwW",
  136.    "=x#?###############=..................w............WWWWWWW...wwwwwwwWwwwwwWWW",
  137.    "=x# !TvvvvvvvvvvvR&__................www...........wwwwww&wwwwwwwwwwWEwwwwe0W",
  138.    "=x#o!|>>*>>>*>>>*>&____________-.....whw.........wwwwwwwDWWWWWWWWWWWWWWWWWWWW",
  139.    "=x# !L^^^^^^^^^^^/&__................www...........wwwwww&wwwwwwwwwwWFwwwwf0W",
  140.    "=x#?###############=..................w............WWWWWWW...wwwwwwwWwwwwwWWW",
  141.    "=x 9               ====...............w...............WWWW...wwwXXXXXXXXXwwwW",
  142.    "=xx                %ww=..............www..............Www%wwwwwwXwwwWwwwXwwwW",
  143.    "=sxxxxxxxxxxxxxxxxx==wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWW......$$c@Y@@d$...W",
  144.    "====================.....................................`WWWWWWWWWWWWWWWWWWW"
  145. }
  146.  
  147. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  148. randomseed(enigma.GetTicks())
  149. set_default_parent(cells[" "])
  150. create_world_by_map(level)
  151. oxyd_shuffle()
  152.