<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<el:level xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://enigma-game.org/schema/level/1 level.xsd" xmlns:el="http://enigma-game.org/schema/level/1">
  <el:protected>
    <el:info el:type="level">
      <el:identity el:title="Sentry Duty" el:subtitle="" el:id="nat25"/>
      <el:version el:score="1" el:release="1" el:revision="0" el:status="released"/>
      <el:author  el:name="Nat Pryce" el:email="" el:homepage=""/>
      <el:copyright>Copyright © 2005 Nat Pryce</el:copyright>
      <el:license el:type="GPL version 2" el:open="true"/>
      <el:compatibility el:enigma="0.92">
      </el:compatibility>
      <el:modes el:easy="true" el:single="true" el:network="false"/>
      <el:comments>
        <el:code>Lua 5.1 and XML converted by Leveladministrators</el:code>
      </el:comments>
      <el:score el:easy="-" el:difficult="-"/>
    </el:info>
    <el:luamain><![CDATA[
set_oxyd = oxyd

function oxyd( type, color )
    return function( x, y, tiles )
        return set_oxyd( x, y, type or oxyd_default_flavor, color )
    end
end

function nothing(x, y, tiles)
    -- create nothing
end

function horizontal_bolder(x,y,tiles)
    if random() >= 0.5 then
        return set_stone( "st-bolder-w", x, y )
    else
        return set_stone( "st-bolder-e", x, y )
    end
end

function vertical_bolder(x,y,tiles)
    if random() >= 0.5 then
        return set_stone( "st-bolder-n", x, y )
    else
        return set_stone( "st-bolder-s", x, y )
    end
end

function checkerboard_floor( type1, type2, attribs1, attribs2 )
    return function( x, y, tiles )
        if mod(x,2) == mod(y,2) then
            return set_floor( type1, x, y, attribs1 or {} )
        else
            return set_floor( type2, x, y, attribs2 or {} )
        end
    end
end

function floor( floor_type, attribs )
    return function( x, y, tiles )
        return set_floor( floor_type, x, y, attribs or {} )
    end
end

function stone( stone_type, attribs )
    return function( x, y, tiles )
        return set_stone( stone_type, x, y, attribs or {} )
    end
end

function item( item_type, attribs )
    return function( x, y, tiles )
        return set_item( item_type, x, y, attribs or {} )
    end
end

function actor( actor_type, attribs )
    return function( x, y, tiles )
        return set_actor( actor_type, x+0.5, y+0.5, attribs or {} )
    end
end

function gradient( gradient_type )
    return function( x, y, tiles )
        return set_floor( "fl-gradient", x, y, {type=gradient_type} )
    end
end

function inherit(tile_type)
    return function( x, y, tiles )
        return create_tile( tiles, x, y, tile_type )
    end
end

function group( array, constructor )
    return function( x, y, tiles )
        object = constructor( x, y, tiles )
        tinsert( array, object )
        return object
    end
end

function difficulty( d, constructor )
    if options.Difficulty == d then
        return constructor
    else
        return nothing
    end
end

function create_world_from_map( tiles, map )
    create_world( strlen(map[1]), getn(map) )
    
    for y = 1,getn(map) do
        local line = map[y]
        for x = 1,strlen(line) do
            local tile = strchar(strbyte(line,x))
            create_tile( tiles, x-1, y-1, tile )
        end
    end
end

function create_tile( tiles, x, y, tile_type )
    local constructors = tiles[tile_type]

    if constructors then
    for i = 1,getn(constructors) do
        constructors[i](x,y,tiles)
    end
    else
    error("invalid tile identifier " .. tile_type )
    end
end


tiles = {}
tiles["."] = {floor("fl-leaves")}
tiles["#"] = {inherit("."), stone("st-stone1")}
tiles["x"] = {inherit("."), oxyd("d")}
tiles[" "] = {floor("fl-water")}
tiles["-"] = {difficulty(1,floor("fl-water")), difficulty(2,floor("fl-swamp"))}
tiles["+"] = {difficulty(1,inherit("#")), 
              difficulty(2,inherit("-"))}
tiles["@"] = {inherit("."), difficulty(1,actor("ac-top", {range=4, force=10})),
                            difficulty(2,actor("ac-top", {range=4, force=15}))}

create_world_from_map( tiles, {
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                     --- ---  --- ---                     ",
"                     +x+ +x+  +x+ +x+                     ",
"                     +.+ +.+  +.+ +.+                     ",
"                     +.+ +.+  +.+ +.+                     ",
"                   ###@###@####@###@###                   ",
"                   #..................#                   ",
"               -+++#..................#+++-               ",
"               -x..@..................@..x-               ",
"               -+++#..................#+++-               ",
"                   #..................#                   ",
"                   #..................#                   ",
"                   #..................#                   ",
"               -+++#..................#+++-               ",
"               -x..@..................@..x-               ",
"               -+++#..................#+++-               ",
"                   #..................#                   ",
"                   ###@###@####@###@###                   ",
"                     +.+ +.+  +.+ +.+                     ",
"                     +.+ +.+  +.+ +.+                     ",
"                     +x+ +x+  +x+ +x+                     ",
"                     --- ---  --- ---                     ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          ",
"                                                          "
})                         

set_actor("ac-blackball", level_width/2, level_height/2, {player=0})

oxyd_shuffle()
    ]]></el:luamain>
    <el:i18n>
      <el:string el:key="title">
        <el:english el:translate="false"/>
      </el:string>
    </el:i18n>
  </el:protected>
</el:level>
