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

  1. -- Sok it to 'em
  2. -- A public domain Sokoban level adapted for Enigma
  3. -- 
  4. -- Copyright (c) 2002 Nat Pryce
  5.  
  6. INNER_FLOOR = "fl-plank"
  7. OUTER_FLOOR = "fl-water"
  8. WALL = "st-rock2"
  9.  
  10.  
  11. function trigger( id )
  12.     return function( x, y )
  13.         set_floor( INNER_FLOOR, x, y )
  14.         set_item( "it-trigger", x, y, {target=%id, action="openclose"} )
  15.     end
  16. end
  17.  
  18. function door( id, type )
  19.    return function( x, y )
  20.       set_floor( INNER_FLOOR, x, y )
  21.       set_stone( "st-door_a", x, y, {name=%id,type=%type} )
  22.    end
  23. end
  24.  
  25.  
  26. level = {
  27.     "   x x x            ",
  28.     "  #A#H#F#           ",
  29.     "  #.....#########   ",
  30.     " xG.....#....#..##  ",
  31.     "  #.+...#...+.+..#  ",
  32.     " xD..+..#..+.##..Cx ",
  33.     "  #.++..##+.+....#  ",
  34.     "  ##.#..##.#######  ",
  35.     "  ##.#..##....a~e#  ",
  36.     " xB..#+.......b~f#  ",
  37.     "  #...++......c~g#  ",
  38.     " xE.....##o#..d~h#  ",
  39.     "  ################  ",
  40. }
  41.  
  42. cells = {}
  43. for i,id in {"a","b","c","d","e","f","g","h"} do
  44.     cells[id] = trigger(strupper(id))
  45. end
  46. for i,id in {"A","H","F"} do
  47.     cells[id] = door( id, "h" )
  48. end
  49. for i,id in {"G","D","B","E","C"} do
  50.     cells[id] = door( id, "v" )
  51. end
  52. cells["."] = function( x, y )
  53.     set_floor( INNER_FLOOR, x, y )
  54. end
  55. cells["#"] = function( x, y )
  56.     set_floor( INNER_FLOOR, x, y )
  57.     set_stone( WALL, x, y )
  58. end
  59. cells["o"] = function( x, y )
  60.     set_floor( INNER_FLOOR, x, y )
  61.     set_actor( "ac-blackball", x+0.5, y+0.5, {player=0} )
  62. end
  63. cells["x"] = function( x, y )
  64.     set_floor( INNER_FLOOR, x, y )
  65.     oxyd(x,y)
  66. end
  67. cells["+"] = function( x, y )
  68.     set_floor( INNER_FLOOR, x, y )
  69.     set_stone( "st-wood", x, y )
  70. end
  71. cells["~"] = function( x, y )
  72.     set_floor( "fl-water", x, y )
  73. end
  74. cells[" "] = function( x, y )
  75.     set_floor( OUTER_FLOOR, x,y )
  76. end
  77.  
  78.  
  79. create_world( strlen(level[1]), getn(level) )
  80. oxyd_default_flavor = "a"
  81. for y,line in level do
  82.     for x = 1,strlen(line) do
  83.         cell = strchar(strbyte(line,x))
  84.         cells[cell]( x-1, y-1 )
  85.     end
  86. end
  87. oxyd_shuffle()
  88.