home *** CD-ROM | disk | FTP | other *** search
- -- Sok it to 'em
- -- A public domain Sokoban level adapted for Enigma
- --
- -- Copyright (c) 2002 Nat Pryce
-
- INNER_FLOOR = "fl-plank"
- OUTER_FLOOR = "fl-water"
- WALL = "st-rock2"
-
-
- function trigger( id )
- return function( x, y )
- set_floor( INNER_FLOOR, x, y )
- set_item( "it-trigger", x, y, {target=%id, action="openclose"} )
- end
- end
-
- function door( id, type )
- return function( x, y )
- set_floor( INNER_FLOOR, x, y )
- set_stone( "st-door_a", x, y, {name=%id,type=%type} )
- end
- end
-
-
- level = {
- " x x x ",
- " #A#H#F# ",
- " #.....######### ",
- " xG.....#....#..## ",
- " #.+...#...+.+..# ",
- " xD..+..#..+.##..Cx ",
- " #.++..##+.+....# ",
- " ##.#..##.####### ",
- " ##.#..##....a~e# ",
- " xB..#+.......b~f# ",
- " #...++......c~g# ",
- " xE.....##o#..d~h# ",
- " ################ ",
- }
-
- cells = {}
- for i,id in {"a","b","c","d","e","f","g","h"} do
- cells[id] = trigger(strupper(id))
- end
- for i,id in {"A","H","F"} do
- cells[id] = door( id, "h" )
- end
- for i,id in {"G","D","B","E","C"} do
- cells[id] = door( id, "v" )
- end
- cells["."] = function( x, y )
- set_floor( INNER_FLOOR, x, y )
- end
- cells["#"] = function( x, y )
- set_floor( INNER_FLOOR, x, y )
- set_stone( WALL, x, y )
- end
- cells["o"] = function( x, y )
- set_floor( INNER_FLOOR, x, y )
- set_actor( "ac-blackball", x+0.5, y+0.5, {player=0} )
- end
- cells["x"] = function( x, y )
- set_floor( INNER_FLOOR, x, y )
- oxyd(x,y)
- end
- cells["+"] = function( x, y )
- set_floor( INNER_FLOOR, x, y )
- set_stone( "st-wood", x, y )
- end
- cells["~"] = function( x, y )
- set_floor( "fl-water", x, y )
- end
- cells[" "] = function( x, y )
- set_floor( OUTER_FLOOR, x,y )
- end
-
-
- create_world( strlen(level[1]), getn(level) )
- oxyd_default_flavor = "a"
- for y,line in level do
- for x = 1,strlen(line) do
- cell = strchar(strbyte(line,x))
- cells[cell]( x-1, y-1 )
- end
- end
- oxyd_shuffle()
-