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

  1. -- A level for Enigma
  2. -- Name:        Stay there!
  3. -- Filename:     ralf05.lua
  4. -- Copyright:     (C) Apr 2003 Ralf Westram
  5. -- Contact:     amgine@reallysoft.de
  6. -- License:     GPL v2.0 or above
  7.  
  8. dofile(enigma.FindDataFile("levels/ralf.lua"))
  9.  
  10. --debug_mode()
  11.  
  12. level={
  13.    "!!#######y#!!!!!!!!!",
  14.    "!!y       #!!0!!!0!!",
  15.    "!!# #y### #!! !!! !!",
  16.    "!!# #     y!#_#!#_#!",
  17.    "!!# # #y##y## ### ##",
  18.    "!!#ay   #          y",
  19.    "#yy y## #  ## ##   #",
  20.    "#     y #  #...#   #",
  21.    "y xxx y     ...    #",
  22.    "# x x #%#  #...#   #",
  23.    "y xxx x%%  ## ##   #",
  24.    "y     #,#          #",
  25.    "##y#yy############y#",
  26. }
  27.  
  28. triggers = 0
  29. doors = 0
  30. doorsopen = 0
  31.  
  32. state = {0,0,0,0,0,0,0,0,0}
  33.  
  34. function trigger(num)
  35.    state[num] = 1-state[num]
  36.    all=1
  37.    for x=0,triggers-1 do
  38.       if (state[x]==0) then
  39.          all = 0
  40.       end
  41.    end
  42.  
  43.    if (doorsopen==0 and all==1) then
  44.       enigma.SendMessage(enigma.GetNamedObject("door1"),"open",nil)
  45.       enigma.SendMessage(enigma.GetNamedObject("door2"),"open",nil)
  46.       doorsopen = 1
  47.    elseif (doorsopen==1 and all==0) then
  48.       enigma.SendMessage(enigma.GetNamedObject("door1"),"close",nil)
  49.       enigma.SendMessage(enigma.GetNamedObject("door2"),"close",nil)
  50.       doorsopen = 0
  51.    end
  52. end
  53.  
  54. function set_trigger(x,y)
  55.    triggers = triggers + 1
  56.    state[triggers] = 0
  57.    local funcn = "trig_"..triggers
  58.    dostring(funcn.." = function() trigger("..triggers..") end")
  59.    set_item("it-trigger",x,y,{action="callback",target=funcn});
  60. end
  61.  
  62. function set_door(x,y)
  63.    doors = doors + 1
  64.    set_stone("st-door",x,y,{name="door"..doors,type="h"})
  65. end
  66.  
  67. cells={}
  68.  
  69. cells[" "] = cell{floor="fl-tigris"}
  70. cells["!"] = cell{floor="fl-space"}
  71.  
  72. cells["."] = cell{parent={cells[" "],set_trigger}}
  73.  
  74. cells["#"] = cell{parent=cells[" "],stone="st-rock1"}
  75. cells["y"] = cell{parent=cells[" "],stone="st-stoneimpulse"}
  76.  
  77. cells["%"] = cell{parent=cells[" "],stone="st-grate1"}
  78. cells[","] = cell{parent=cells["%"],item="it-seed"}
  79.  
  80. cells["x"] = cell{parent=cells[" "],stone="st-stoneimpulse_movable"}
  81. cells["a"] = cell{parent=cells[" "],actor={"ac-blackball", {player=0}}}
  82. cells["_"] = cell{parent={cells[" "],set_door}}
  83.  
  84. -- debug
  85. --cells["."] = cell{parent={cells["x"],set_trigger}}
  86.  
  87.  
  88. rs_create_world(level,cells)
  89.