home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar Special 2004 August
/
GSSH0804.iso
/
Geschicklichkeit
/
Enigma
/
Enigma-081.exe
/
data
/
levels
/
nat4.lua
< prev
next >
Wrap
Text File
|
2003-01-05
|
8KB
|
279 lines
-- Walk the Plank
-- A level for Enigma
-- Copyright (c) 2002 Nat Pryce
-- License: GPL v2.0 or above
function send_message( obj_name, message )
--print( "sending message " .. message .. " to " .. obj_name )
obj = enigma.GetNamedObject( obj_name )
enigma.SendMessage( obj, message, nil )
end
function island( left, top, width, height )
fill_floor( "fl-sand", left, top, width, height )
fill_floor( "fl-leaves", left+1, top+1, width-2, height-2 )
end
function stipple( setter, type, left, top, width, height, attrs )
if attrs == nil then
attrs = {}
end
for y = top, top+height-1 do
for x = left, left+width-1 do
if mod(x,2) == mod(y,2) then
setter( type, x, y, attrs )
end
end
end
end
screen_width = 20
screen_height = 13
screens_x = 5
screens_y = 3
create_world( (screens_x-1)*(screen_width-1) + screen_width,
(screens_y-1)*(screen_height-1) + screen_height )
draw_border( "st-greenbrown" )
fill_floor( "fl-water", 0, 0, level_width, level_height )
-------------------------------------------------------------------------------
-- An easter egg for curious players
island( 4, 16, 5, 5 )
document( 6, 18, "Here lies Black Ball the pirate, marooned in the year 1802 after travelling in the wrong direction.")
-------------------------------------------------------------------------------
-- Starting screen
island( 20, 13, 7, screen_height-2 )
stipple( set_stone, "st-wood", 21, 14, 5, screen_height-4 )
start_x = 23.5
start_y = 18.5
-------------------------------------------------------------------------------
-- Ferry terminal
ferry_started = nil
ferry_x = 45
ferry_y = 17
ferry_width = 4
ferry_height = 3
ferry_end = 80
ferry_floor = "fl-hay"
function move_ferry()
fill_floor( "fl-water", ferry_x, ferry_y, 1, ferry_height )
fill_floor( ferry_floor, ferry_x+ferry_width, ferry_y, 1, ferry_height )
ferry_x = ferry_x + 1
end
function timer_callback()
if ferry_started and ferry_x < ferry_end then
move_ferry()
end
end
function start_ferry()
if not ferry_started then
move_ferry()
send_message( "timer", "on" )
send_message( "laser_timer1", "on" )
send_message( "laser_timer2", "on" )
ferry_started = 1
end
end
island( 40, 16, 5, 5 )
set_stone( "st-timer", 42, 18,
{target="timer_callback", action="callback",
name="timer", interval=0.75} )
send_message( "timer", "off" )
set_item( "it-trigger", 44, 18,
{target="start_ferry", action="callback"} )
fill_floor( ferry_floor, ferry_x, ferry_y, ferry_width, ferry_height )
document( ferry_x+2, ferry_y+1, "To cure sea sickness hold a large bank note between your teeth and lean over the side")
-------------------------------------------------------------------------------
-- Ferry journey
set_stone( "st-fakeoxyd", 60, ferry_y )
set_stone( "st-fakeoxyd", 60, ferry_y+1 )
set_stone( "st-fakeoxyd", 63, ferry_y+2 )
set_stone( "st-fakeoxyd", 63, ferry_y+1 )
set_stone( "st-fakeoxyd", 66, ferry_y+1 )
set_stone( "st-fakeoxyd", 66, ferry_y )
set_stone( "st-fakeoxyd", 68, ferry_y+1 )
set_stone( "st-fakeoxyd", 68, ferry_y+2 )
set_stone( "st-fakeoxyd", 70, ferry_y )
set_stone( "st-fakeoxyd", 70, ferry_y+1 )
set_stone( "st-fakeoxyd", 72, ferry_y+1 )
set_stone( "st-fakeoxyd", 72, ferry_y+2 )
set_stone( "st-fakeoxyd", 74, ferry_y )
set_stone( "st-fakeoxyd", 74, ferry_y+1 )
set_stone( "st-fakeoxyd", 76, ferry_y )
set_stone( "st-fakeoxyd", 76, ferry_y+2 )
set_stone( "st-laser", 73, ferry_y-2, {name="laser1",dir=SOUTH,on=1} )
set_stone( "st-timer", 73, ferry_y+4,
{action="onoff",target="laser1",interval="1.75",
name="laser_timer1"} )
set_stone( "st-laser", 75, ferry_y+4, {name="laser2",dir=NORTH,on=0} )
set_stone( "st-timer", 75, ferry_y-2,
{action="onoff",target="laser2",interval="1.75",
name="laser_timer2"} )
send_message( "laser_timer1", "off" )
send_message( "laser_timer2", "off" )
-------------------------------------------------------------------------------
-- Final Destination
count = 0
function on_trigger( on )
if on == 1 then
count = count + 1
if count == 4 then
send_message( "door1", "open" )
send_message( "door2", "open" )
send_message( "door3", "open" )
end
else
count = count - 1
send_message( "door1", "close" )
send_message( "door2", "close" )
send_message( "door3", "close" )
end
end
function trigger( x, y )
set_item("it-trigger", x, y, {action="callback", target="on_trigger"} )
end
fill_floor( "fl-gray", 84, 11, 11, screen_height+2 )
set_floor( "fl-gray", 83, ferry_y-1 )
set_floor( "fl-gray", 83, ferry_y+ferry_height )
draw_stones( "st-greenbrown", {84,12}, {1,0}, 11 )
draw_stones( "st-greenbrown", {84,24}, {1,0}, 11 )
doorh( 86, 12, {name="door1"} )
doorh( 86, 24, {name="door2"} )
set_stone( "st-brick", 86, 17 )
set_stone( "st-brick", 86, 16 )
set_stone( "st-brick", 85, 17 )
doorv( 85, 18, {name="door4"} )
set_item( "it-trigger", 84, 18, {target="door4",action="open"} )
set_item( "it-trigger", 87, 18, {target="door4",action="close"} )
set_stone( "st-brick", 85, 19 )
set_stone( "st-brick", 86, 19)
set_stone( "st-brick", 86, 20 )
set_stone( "st-brick", 87, 16 )
set_stone( "st-brick", 87, 15 )
set_stone( "st-brick", 87, 20 )
set_stone( "st-brick", 87, 21 )
draw_stones( "st-brick", {87,14}, {1,0}, 5 )
draw_stones( "st-brick", {87,22}, {1,0}, 5 )
set_stone( "st-brick", 91, 15 )
set_stone( "st-brick", 91, 16 )
set_stone( "st-brick", 91, 20 )
set_stone( "st-brick", 91, 21 )
set_stone( "st-brick", 92, 16 )
set_stone( "st-brick", 92, 17 )
doorv( 92, 18, {name="door3"} )
set_stone( "st-brick", 92, 19 )
set_stone( "st-brick", 92, 20 )
set_stone( "st-brick", 88, 18 )
set_stone( "st-brick", 89, 16 )
set_stone( "st-brick", 89, 20 )
trigger( 89, 17 )
trigger( 89, 19 )
trigger( 90, 16 )
trigger( 90, 20 )
set_stone( "st-brownie", 89, 18 )
set_stone( "st-brownie", 90, 18 )
set_stone( "st-brownie", 88, 16 )
set_stone( "st-brownie", 88, 20 )
fill_floor( "fl-plank", 87, 15, 5, 7 )
set_floor( "fl-plank", 85, 18 )
set_floor( "fl-plank", 86, 18 )
set_floor( "fl-plank", 92, 18 )
-------------------------------------------------------------------------------
-- Harbour walls
draw_floor( "fl-gray", {39,11}, {1,0}, 46 )
set_floor( "fl-gray", 39, 10 )
set_floor( "fl-gray", 39, 9 )
draw_floor( "fl-leaves", {40,10}, {1,0}, 56 )
draw_floor( "fl-sand", {40,9}, {1,0}, 56 )
set_stone( "st-wood", 39, 11 )
set_stone( "st-wood", 39, 10 )
draw_floor( "fl-gray", {39,25}, {1,0}, 46 )
set_floor( "fl-gray", 39, 26 )
set_floor( "fl-gray", 39, 27 )
draw_floor( "fl-leaves", {40,26}, {1,0}, 56 )
draw_floor( "fl-sand", {40,27}, {1,0}, 56 )
set_stone( "st-wood", 39, 25 )
set_stone( "st-wood", 39, 26 )
-------------------------------------------------------------------------------
-- Place the Oxyds
oxyd(37,12)
oxyd(94,13)
oxyd(37,24)
oxyd(94,23)
-------------------------------------------------------------------------------
-- The starting point
set_actor( "ac-blackball", start_x, start_y, {player=0} )
-------------------------------------------------------------------------------
-- For testing: comment out the set_actor line above and uncomment one of these
-- To test the ferry start
--set_actor( "ac-blackball", 46.5, 18.5, {player=0} )
--set_stone( "st-wood", 45, 18 )
-- To test the final destination
--set_actor( "ac-blackball", 84.5, 18.5, {player=0} )
--fill_floor( ferry_floor, ferry_end, ferry_y, ferry_width, ferry_height )