-- Knock Knock!
-- A level for Enigma
-- Copyright (c) 2002 Nat Pryce
-- License: GPL v2.0 or above


function send_message( obj_name, message )
    obj = enigma.GetNamedObject( obj_name )
    enigma.SendMessage( obj, message, nil )
end

function noop()
    -- do nothing
end

function trigger( x, y )
    set_item( "it-trigger", x, y, {target="callback",action="noop"}  )
end



-- An island with a sandy beach

create_world(20,13)
fill_floor( "fl-water", 0, 0, level_width, level_height )
fill_floor( "fl-sand", 1, 1, level_width-2, level_height-2 )
fill_floor( "fl-leaves", 2, 2, level_width-4, level_height-4 )
fill_floor( "fl-gray", 10,3, 7, 7 )


-- A castle on the east side of the island

function toggle_door( toggle_on )
    if toggle_on == 1 then
        send_message( "door", "close" )
    else
        send_message( "door", "open" )
    end
end

draw_stones( "st-greenbrown", {11,3},  {1,0}, 5 )
draw_stones( "st-greenbrown", {11,9}, {1,0}, 5 )
set_stone( "st-greenbrown", 10, 4 )
set_stone( "st-greenbrown", 10, 5 )
doorv( 10, 6, {name="door"} )
set_stone( "st-greenbrown", 10, 7 )
set_stone( "st-greenbrown", 10, 8 )
draw_stones( "st-greenbrown", {16,4}, {0,1}, 5 )
y = random(5,7)
set_item( "it-trigger", 16, y, {action="callback",target="toggle_door"} )
set_stone( "st-greenbrown_move", 16, y )

oxyd_default_flavor = "a"       -- Default flavor for oxyd stones.
oxyd(10,3)
oxyd(11,4)
oxyd(16,3)
oxyd(15,4)
oxyd(10,9)
oxyd(11,8)
oxyd(16,9)
oxyd(15,8)


-- The puzzle to open the front door.

trigger(4,4)
trigger(5,5)
trigger(7,7)
trigger(8,8)
trigger(8,4)
trigger(7,5)
trigger(5,7)
trigger(4,8)

set_stone( "st-brownie", 3, 6 )
set_stone( "st-brownie", 6, 3 )
set_stone( "st-brownie", 6, 9 )
set_stone( "st-brownie", 9, 6 )


set_actor("ac-blackball", 6.5, 6.5, {player=0})

