;                                                              THE UNHOLY GRAIL 
; -----------------------------------------------------------------------------
; Copyright (C) Stuart Allen 1996, 1997. All rights resevered.
; email sallen@one.net.au
;
; Written for the 1997 rec.art.int-fiction Interactive Fiction Competition.
;  
; -----------------------------------------------------------------------------

location control_centre
 no_go		"The only exit from here is to the south."
 south		pool
 out		pool

{look
if here has VISITED
   write "You are back in the control centre." ^
   break
endif
if switch hasnt ON
   if blinds has CLOSED
      write "With the main light off and the blinds closed, only the dim "
      write "glow of the emergency lighting coupled with the many coloured "
      write "and flashing indicator lights allows you to see. The shadowy "
      write "form of the chair stands before the control panel as always." ^
      break
endall
write "Used more by Lisa than yourself, this is the main control centre "
write "for the research outpost's many instruments and sensors. A "
write "slimline high-backed chair is fixed to the floor in front of a "
write "long control panel. Above the controls stretches a wide "
write "rectangular window covered by a set of "
if blinds has CLOSED
   write "closed blinds. "
else
   write "open blinds providing a spectacular view of the ocean horizon. "
endif
write "A narrow doorway leads south from here; a light switch is attached "
write "to its frame. "
if switch hasnt ON
   write "With the main fluorescent light off, the diffuse sun light "
   write "filters unmasked through the blinds giving the room a warmer feel "
   write "than before."
endall
write ^
}

{first_hint
write "When a phosphorescent screen is turned off, the image on it doesn't "
write "fade instantly." ^
set TURN_WORKED = false
}

{second_hint
write "The afterimage doesn't last long, however, and you would only be able "
write "to see it if the room was quite dark." ^
set TURN_WORKED = false
}

{third_hint
write "Straight after entering the room: " ^^
write "  >TURN OFF THE MAIN LIGHT" ^
write "  >CLOSE THE BLINDS" ^
write "  >EXAMINE THE SCREEN" ^^
write "...and blob's your uncle! (sorry)"^
set TURN_WORKED = false
}

{sit
proxy "sit in chair"
}

object whale: humpback whale whales
 inventory	a "whale"
 starts		limbo

{look_up_in_book
write "whale" ^
write "any of various large fishlike marine mammals of the order Cetacea, "
write "which have forelimbs modified as fins, a tail with horizontal flukes, "
write "and nasal openings on top of the head, and which comprise the "
write "suborder Mysticeti, and the suborder Odontoceti." ^
}

object rec_window: wide rectangular window
 inventory	a "wide rectangular window"

{examine : look_through
if blinds has CLOSED
   write "The window is covered by a set of closed blinds." ^
   break
endall
write "Looking through the open blinds you can see the shallow arc of the "
write "ocean horizon spanning the heads of the lagoon." ^
}

object blinds: blinds
 has		CLOSABLE DAMAGED PLURAL
 inventory	some "blinds"

{close
if blinds has CLOSED
   write "The blinds are already closed." ^
   break
endall
write "You reach over the control panel and turn the rod until the blinds "
write "close. " ^^
ensure blinds has CLOSED
look
}

{open
if blinds hasnt CLOSED
   write "The blinds are already open." ^
   break
endall
write "You reach over the control panel and turn the rod until the blinds "
write "open. " ^^
ensure blinds hasnt CLOSED
look
}

{examine
write "Cheap and incredibly "
if blinds has DAMAGED 
   write "dusty"
else
   write "shiny"
endif
write ", the blinds are currently "
if blinds has CLOSED
   write "closed. "
else
   write "open. "
endif
write "A clear plastic rod dangles from one side." ^
}

{clean
if blinds hasnt DAMAGED
   write "They are already quite clean now, thank you." ^
   break
endall
write "That's very thoughtful of you." ^
ensure blinds hasnt DAMAGED
}

object rod: plastic rod
 inventory	a "plastic rod"

{examine : take
write "The plastic rod is attached to the blinds and can be turned in order "
write "to open and close them." ^
}

{turn
if blinds has CLOSED
   execute "open_blinds"
else
   execute "close_blinds"
}

object light: main fluorescent light
 has		ON SWITCHABLE
 inventory	a "main fluorescent light"

{turn_on_override : turn_off_override
proxy "flick switch"
}

object doorway: doorway door frame
 inventory	a "doorway frame"

{enter
proxy "s"
}

{look_through
write "You can see out into the docking pool." ^
}

{examine
write "There is a light switch attached to the door frame." ^
}

object switch: main fluorescent light switch
 has		ON SWITCHABLE
 inventory	a "light switch"

{examine
write "Simple, yet sturdy, the switch is in the "
if switch has ON
   write "on"
else
   write "off"
endif
write " position." ^
}

{flick : turn_off_override : turn_on_override : turn : press : pull : move
if switch has ON
   write "You flick the light switch into the off position causing the main " 
   write "fluorescent light to go out." ^^
   ensure light hasnt ON
   ensure switch hasnt ON
   look
   break
endall
write "You flick the light switch back into the on position causing the main "
write "fluorescent light to flicker briefly then come on." ^^
ensure light has ON
ensure switch has ON
look
}

object chair: red leather chair
 inventory	a "red leather chair"
 
{sit_on_override
if player has SITTING
   write "You are already sitting down." ^
   break
endall
write "You set over to the chair and sit down in it, swivelling around "
write "to face the control panel." ^
ensure player has SITTING
}

{examine 
write "The chair is made from fine-grade red leather and sits perched "
write "upon a single steel column directly in front of the control panel." ^
}

object c_pass: my civilian identification pass id card
 has		WEARABLE WORN
 described	"Your civilian identification pass is here."
 inventory	your "civilian pass"
 starts childof kryten
 mass		2

{examine : read
write "Your name, Dr Alex Meadows, and your authority level are printed "
write "beneath a small photograph of you looking your worst. On the back of "
write "the pass is a bar code strip, an expiry date and your signature." ^
}

{show_to_lisa
if c_pass hasnt CUSTOM4
   write "Lisa laughs at your mocking parody of the military security "
   write "protocols that you find so much humour in following to the "
   write "letter." ^ 
   ensure c_pass has CUSTOM4
   break
endall
write "Jokes are never quite as funny second time round." ^
}

{show_to_guard
write "~I'm sorry, Dr Meadows,~ the MP says stepping in front of you, ~only Dr "
write "Zuckerman, or personnel personally signed in by Dr Zuckerman, may pass "
write "this point.~" ^
}

object signature: signature
 inventory	your "signature"
 starts childof c_pass

{examine : read
write "A barely discernable squiggle." ^
}

object bar_code: bar code strip
 inventory	a "bar code"
 starts childof	c_pass

{examine
write "The thought has often crossed your mind to swipe your card at the "
write "supermarket to find out what you're worth, but so far you've resisted.^"
}

object authority: authority level
 inventory	your "authority level"
 starts childof c_pass

{read : examine
write "Your pass clearly identifies you as a civilian." ^
}

object lisa: lisa
 has		ANIMATE FEMALE
 described	"Lisa is here, sitting in the chair."
 inventory	name "Lisa"
 starts		here
 mass		heavy 
 quantity	20

{ask_about_speaker
write "~It's a speaker. You know, those things that sound comes out of.~"
}

{ask_about_screen
write "~It's a radar screen. Well, more or less,~ Lisa begins to explain. ~I "
write "don't really understand all the details, but it's some sort of new "
write "ultra-low frequency design for use underwater.~" ^
}

{ask_about_red_light
write "~As long as it stays off, it's nothing to worry about,~ Lisa responds "
write "rather evasively." ^
}

{ask_about_dial
write "~It's just a simple volume control,~ Lisa quips." ^
}

{untie
if lisa has CUSTOM3
   write "~Get away from her,~ the stranger "
   if stranger(location) = hangar_north
      write "warns"
   else 
      write "calls out from across the room"
   endif
   write ". Once again, you decide to obey." ^
   break
endif
break false
}

{apologise
if lisa has CUSTOM3
   write "Lisa seems far from impressed by your attempts at reconciliation." ^
   break
endif
if here = bathroom
   write "~Don't apologise, just get out!~ Lisa exclaims." ^
   break
endif
write "~It's all right, just don't do it again,~ Lisa says with a smile." ^
}

{hug
if lisa has CUSTOM3
   write "Lisa seems far from impressed by your attempts at reconciliation." ^
   break
endif
if kryten has CUSTOM3
   write "All right, once was enough." ^
   break
endif
write "You and Lisa indulge in a friendly hug." ^
ensure kryten has CUSTOM3
}

{examine
if lisa has CUSTOM3
   write "Kneeling on the floor, bound and gagged, Lisa looks quite "
   write "understandably upset." ^
   break
endif
if lisa has CUSTOM2
   write "Barely breaking her gaze to blink, Lisa is standing with her "
   write "pistol pointed at the stranger." ^
   break
endif
write "Tall with straight black shoulder-length hair, Lisa's "
write "immaculately pressed uniform and permanent expression of intense "
write "concentration belie her generally easy going nature. Having worked "
write "together for the last three months, spending much of the time here "
write "in cramped confines, you have come to know and trust each other well. "
execute "global_contents"
}

{look_up_in_book
write "You find a picture that resembles Lisa, much to your amusement, but no "
write "real reference." ^
}

{ask_about_whale
write "~We get quite a few out this way, Humpbacks mostly.~" ^
ensure lisa has DAMAGED 
}

{ask_about_lisa
if lisa hasnt CUSTOM5
   write "~Hi! My name is Lisa. I'm twenty eight years old, five foot "
   write "nine inches tall and weigh fifty nine kilograms. I enjoy eating out, "
   write "watching movies and going to the beach.~" ^^
   write "~Thank you, Lisa,~ you reply in the most serious voice "
   write "you can muster, ~and now contestant number two, tell me about "
   write "your favourite farm animal...~" ^^
   write "At this point neither of you can refrain from laughing, thus ending "
   write "your gruelling interrogation." ^
   ensure lisa has CUSTOM5
   ensure lisa has DAMAGED
   break
endall
write "Lisa just sighs." ^
ensure lisa has DAMAGED 
}

{ask_about_research : ask_about_panel
if research hasnt CUSTOM4
   write "As you probe Lisa for further information on her work, as you have "
   write "done many times in the past, an almost pained expression comes to "
   write "her face. ~You know just about everything. All I really "
   write "have to do is keep an eye on the radar screen, along "
   write "with a few other bits and pieces, then call through to the main "
   write "base if I see anything...~ pausing as if searching for the "
   write "right word, Lisa looks to her feet, ~...unusual.~" ^
   ensure research has CUSTOM4
   ensure lisa has DAMAGED 
   break
endall
write "~Honestly, Alex, I wish you would stop pestering me about it. "
write "Haven't you got some work you should be doing rather "
write "than poking your nose into mine?~ Considering "
write "Lisa's growing agitation you decide to drop the subject." ^
ensure lisa has DAMAGED
}

{ask_about_hangar_obj
write "~I believe the hangar is where Dr Zuckerman performs most of his "
write "research. I'm not sure exactly what it is that he is working on. "
write "You hear stories, of course, mostly speculation though - nothing I'd "
write "give any really credence to.~" ^
}

{ask_about_wise
write "~Oh, he's all right,~ Lisa says hesitantly. ~He might seem like a bit "
write "of an ogre, but I'm sure deep down he's not such a bad guy.~" ^
}

{ask_about_zuckerman
write "~Dr Zuckerman is a bit of a recluse I'm afraid. Even worse than "
write "you,~ Lisa adds with a slight chuckle. ~I've probably seen no more "
write "of him than you have - two or three times at the most, and never for "
write "long.~" ^
}

{kiss
if lisa has CUSTOM3
   write "Lisa hollers a muffled curse." ^
   break
endif 
write "Do you really think that would be appropriate?" ^
}

{lick
write "Classy move." ^
}

{shag
write "Hardly appropriate behaviour for a renowned scientist, is it?" ^
}

{ask_about_canister
write "You describe the canister to Lisa who, after a brief lecture as to the "
write "dangers of roaming around the restricted areas of a naval base, claims "
write "to have seen nothing of the sort during her posting here." ^
ensure lisa has DAMAGED
}
  
{ask_about_blue_slide : ask_about_red_slide : ask_about_green_slide
write "~You're the expert, you tell me!~ Lisa exclaims." ^
ensure lisa has DAMAGED 
}

{ask_about_purple_slide : ask_about_cyan_slide : ask_about_white_slide
write "~You're the expert, you tell me!~ Lisa exclaims." ^
ensure lisa has DAMAGED 
}

{ask_about_vial
if vial(location) = limbo
   break false
endall
if vial has CUSTOM3
   write "~I'll let you know if I have any new thoughts on the matter.~" ^
   break
endall
write "After you finish recounting the tale of its discovery, Lisa looks at "
write "you and shrugs, ~I don't have any idea what it could be. It's probably "
write "just some mock-up cargo used as a part of a training exercise. I "
write "really wouldn't be too worried about it,~ Lisa replies." ^
ensure lisa has DAMAGED
ensure vial has CUSTOM3
}

{greet
if lisa has CUSTOM3
   write "Lisa is not exactly in a good position to respond right now." ^
   break
endall
if lisa has ON
   write "~Alex, just give me the gun then get the hell out of here,~ "
   write "Lisa replies." ^
   break
endall
if lisa has BURNING
   write "~I'll talk to you later, Alex. Right now just get the hell out of "
   write "here.~" ^
   break
endall
if lisa has CUSTOM2
   write "~Come on, Alex,~ Lisa urges, ~take his gun.~" ^
   break
endall
write "~Oh Alex, it's so good to see you again. I've missed you these last "
write "few minutes,~ Lisa says with rather insulting smile." ^
}

{talk_to
if lisa has CUSTOM3
   write "Lisa is not exactly in a good position to respond right now." ^
   break
endall
if lisa has ON
   write "~I'll talk to you later, Alex. Right now just give me the gun "
   write "and get the hell out of here.~" ^
   break
endall
if lisa has BURNING
   write "~I'll talk to you later, Alex. Right now just get the hell out of "
   write "here.~" ^
   break
endall
if lisa has CUSTOM2
   write "~Come on, Alex,~ Lisa urges, ~take his gun.~" ^
   break
endall
ensure lisa has DAMAGED
if lisa hasnt CUSTOM1
   write "You and Lisa get talking about your work here on the island." ^^
   write "~You know it has always amazed me that you were called in to "
   write "investigate this case in the first place. I presume they were "
   write "having trouble confirming the cause of the problem,~ Lisa "
   write "speculates, ~which I guess is why they called you "
   write "in. I know there was also mounting pressure from concerned local "
   write "governments, not to mention the media, regarding the whole affair "
   write "so the sooner they had the matter cleared up the better. You "
   write "know, come to think of it, I remember getting the distinct "
   write "impression when I first heard of your involvement that the military "
   write "thought the opinion of a civilian would be more widely accepted "
   write "than the findings of an internal investigation. I suppose they "
   write "just wanted to put an end to any negative public attention to the "
   write "work being done here at the base once and for all.~" ^
   ensure lisa has CUSTOM1
   break
endif
write "You chat for a moment about nothing in particular." ^
}

{sniff
write "The familiar scent of Lisa's perfume fills your nostrils." ^
}

{listen_to
write "You hear the faint sound of Lisa breathing." ^
}

{ask_for_m_pass
if lisa has CUSTOM2
   write "~Take her gun, Alex, not her pass!~ the stranger exclaims." ^
   break
endif
write "~I can't give you my pass!~ Lisa exclaims." ^
}

{ask_for_pistol
if lisa has CUSTOM2
   write "Reluctantly you turn to Lisa and hold out your hand." ^^
   write "~But Alex...~ Lisa whispers softly, an expression of confusion "
   write "coming over her face. Sensing your resolve, she places her pistol "
   write "in your upturned palm." ^^
   write "~You've done the right thing, Alex,~ the stranger says as he steps "
   write "forward, taking the pistol from your hand then motioning for Lisa "
   write "to kneel down on ground. Producing a roll of thick tape from his "
   write "jacket, he tears off a short section and places it across Lisa's "
   write "mouth. Forcing her hands around behind her back he proceeds to tape "
   write "both wrists and ankles together. " 
   write "~The next question is: what am I going to do with you?~ he muses, "
   write "snapping you out of your horrified trance. ~No matter what "
   write "conclusion you arrive at in your investigation, Dr Meadows, the "
   write "truth will never be known. You are under the employment of the "
   write "military and your work will serve their purposes. Make no "
   write "mistake, they will manufacture that reality. It is what they do.~" ^^
   write "Satisfied that Lisa is now securely bound, he begins to search "
   write "around the room. ~If it's answers you want, Alex, you are going to "
   write "have to trust me. Now help me search this place.~" ^^
   write "~What for?~ you reply, still trying to comprehend what has just "
   write "happened."
   write ^^ "~Anything that will shed further light on the exact nature of Dr "
   write "Zuckerman's experiments.~" ^
   move pistol to stranger 
   ensure lisa hasnt CUSTOM2
   ensure lisa has CUSTOM3
   ensure stranger has POSSESSIVE
   set STRANGERS_SCRIPT = 1
   describe stranger as "The stranger is here, searching about the room."
   describe lisa as "Lisa, bound and gagged, is kneeling on the floor."
   break
endif
write "Lisa dismisses your request as a bad joke"
ensure lisa has DAMAGED
if pistol has CUSTOM4
   write ", again." ^
   break
endall
write .^
ensure pistol has CUSTOM4
}

{attack
if lisa has CUSTOM3
   write "You would really attack a bound and gagged woman?" ^
   break
endif
write "Assaulting a military officer"
if pistol childof lisa
   write ", particularly one carrying a pistol,"
endif
write " probably isn't such a good career move." ^
}

{shoot_override : shoot_with_gun : attack_with_gun
write "In the heat of the moment you pull the trigger and stand stunned as "
write "Lisa slumps to the ground." ^^
write "~You fool,~ the stranger yells as he heads for the rope." ^^
write "Almost instantly the access door busts open and the MP runs into the "
write "room. Before you know what is going on, you are on the floor, blood "
write "running from a painless wound. Looking up, you notice the stranger "
write "disappearing through the opening in the roof. It is the last thing you "
write "ever see." ^^
execute "global_death"
}

object research: research project work his her experiment experiments
 inventory	a "research project"
 starts		limbo

object tests: human test subjects tests
 inventory	a "human tests"
 starts		limbo

object m_pass: lisas lisa's military identification pass id
 has		WEARABLE WORN
 described	"Lisa's military identification pass is here."
 inventory	a "military identification pass"
 mass		2
 starts childof lisa 

{take
if lisa has CUSTOM2
   write "I don't think this is the right time to be playing with Lisa's "
   write "pass." ^
   set TURN_WORKED = false
   break
endif
break false
}

{examine
write "Lisa's pass is very similar to your own apart from the personal "
write "details and military authorisation." ^ 
}

{show_to_wise : give_to_wise
write "~Where did you get that from?~ Wise asks snatching the pass from your "
write "out-stretched hand." ^^
write "Explaining the situation he follows you back out into the compound "
write "where you repeat your story to the MP. "
execute "tell_about_stranger_guard"
}

{show_to_guard : give_to_guard
if lisa has CUSTOM3
   write "You show Lisa's military identification pass to the guard and "
   write "inform him of the situtation inside the hangar. "
   proxy "tell guard about stranger"
   break
endif
break false
}

{show_to_stranger
write "~Don't go showing that to anyone else, they're likely to start asking "
write "questions,~ the stranger warns." ^
}

object pistol: lisas lisa's gun military issue pistol her woman's womans
 inventory	a "military issue pistol"
 described	"Lisa's pistol rests here."
 mass		8
 starts childof lisa

{take_override
if pistol childof lisa
   proxy "ask lisa for lisa's pistol"
   break
endif
break false
}

object panel: control panel instrument instruments
 inventory	a "long control panel"
 
{examine
write "A large circular radar screen dominates the long control panel. To its "
write "left there is a dial while to its right there is a shiny metal grill "
write "covering a small audio speaker. Above the screen there is a red, "
write "dome-shaped light." ^
}

{turn_on
write "The equipment in this room is used almost exclusively by Lisa so you "
write "wouldn't know where to begin to bring it all back up online." ^
}

object speaker: small audio speaker under shiny grill
 inventory	an "small audio speaker"

{examine
write "The small audio speaker is covered by a shiny metal grill." ^
}

object grill: shiny metal grill
 inventory	a "shiny metal grill"

{examine
write "The shiny metal grill is covering a small audio speaker." ^
}

object red_light: red dome shaped light dome-shaped
 inventory	a "red light"

{examine
if red_light hasnt ON
   write "The red, dome-shaped light above the screen is presently out." ^
   break
endall
write "The red, dome-shaped light above the screen is flashing on and off "
write "at a regular rate." ^
}

object screen: radar circular screen
 inventory	a "circular screen"

{examine
write "Two perpendicular fine white lines form a large cross hair on the "
write "screen. Markings along both the X and Y axes indicate longitude and "
write "latitude to within point zero one of an arc second."
if blinds has CLOSED
   if switch hasnt ON
      if WORK_PHASE = 0
         if SCREEN_FADE != 0
            write ^^ "With the current low level of lighting, you can just "
            write "make out the rapidly fading afterimage of an unusually "
            write "large blob at precisely -171deg14'02.15~ longitude and "
            write "-23deg34'86.21~ latitude." ^^
            if whale hasnt CUSTOM4
               write "Watching you intently, Lisa points to the screen. "
               write "~It's a whale: we get a lot of them out here.~" ^
               points 10 
               ensure screen has SCORED
               ensure whale has CUSTOM4
            endif
          break
endall
write " Normally alive with the glow of pale green phosphorescent dots, the "
write "screen now appears blank." ^
}

{turn_on
write "The equipment in this room is used almost exclusively by Lisa so you "
write "wouldn't know where to begin to bring it all back up online." ^
}

object blob: large blob 
 inventory	a "large blob"
 starts		limbo

{examine
write "The blob is at -171deg14'02.15~ longitude and -23deg34'86.21~ latitude."
write ^
}

object dial: dial
 inventory	a "dial"

{examine
if dial(info) = 1
   write "The dial is turned anticlockwise." ^
   break
endall
write "The dial is turned clockwise." ^
}

{turn
if dial(info) = 0 
   write "You turn the dial anticlockwise." ^
   set dial(info) = 1
   break
endall
write "You turn the dial clockwise." ^
set dial(info) = 0
}

location your_quarters
 north		quarters
 out		quarters
 no_go		"The only exit from here is to the north, back into the common area."

{look
if here has VISITED
   write "You are back in your living quarters." ^
   break
endif
write "This small cube of space is your living quarters. A narrow bunk "
write "stretches out beneath a badly scratched window. At the foot of the "
write "bunk rests the only other piece of furniture in the room, a bright "
write "green clothes trunk." ^ 
}

object your_bunk: your plain bunk bed
 has		SURFACE
 inventory	name "your bunk bed"
 quantity	50

{jump_on
write "You have to sleep in there don't forget." ^
set TURN_WORKED = false
}

{lie_on : enter
write "As much as you would like to kick back and take it easy, you "
write "really should be getting on with the job." ^
set TURN_WORKED = false
}

{look_under
write "You discover a flea circus of unparalleled magnificence." ^
}

{examine
write "Messy and unmade, just the way you like it." ^
}

{clean
write "But you like it messy." ^
}

object circus: flea circus
 inventory	the "flea circus"

{examine
write "There is a sign at the front gate that reads, ~ADMISSION PRICE: ONE "
write "VIVID IMAGINATION.~" ^
}

{enter
write "Okay, you go. I'll wait here until you get back." ^
}

{take
write "I think it's time for a reality check." ^
set TURN_WORKED = false
}

object your_window: your my small round window
 inventory	name "your round window"

{look_through : examine
write "The window appears to be made from some sort of plastic. "
write "Through the window you can see out across the lagoon to the dense, "
write "green jungle beyond." ^
}

{open
write "You have often lamented the fact that the window cannot be opened. "
write "~The ultimate in portable construction technology,~ you recall being " 
write "told by a proud engineer. ~Air lifted in by a single "
write "chopper and erected from pre-fab panels in under four hours.~ His "
write "enthusiasm for this structure clearly shows that he has never actually "
write "spent a single night in one, let alone three months." ^
}   

{break
write "Control yourself, Dr Meadows!" ^
}

object trunk: bright green trunk
 has		CONTAINER CLOSED CLOSABLE
 inventory	a "bright green trunk"
 quantity	15
 
object your_clothes: my clothes
 has		PLURAL
 inventory	your "clothes"
 starts childof trunk
 
{examine
write "Just clothes." ^
}

{take
if tank has WORN
   write "Why? Didn't you know that scuba gear is the latest in fashion "
   write "wear?" ^
   break
endif
if kryten has DAMAGED
   write "Don't worry, this is the tropics, your clothes will be dry in no "
   write "time." ^
   break
endif
write "What you are wearing is just fine." ^
}

location lisas_quarters:
 west		quarters
 out		quarters

{look
if here has VISITED
   write "You are in Lisa's living quarters." ^
   break
endif
write "Almost identical to your own are Lisa's living quarters. In fact the "
write "only difference, other than the orientation, is a tall wardrobe "
write "standing against the north wall in place of the small clothes trunk "
write "you make do with." ^
}

{smell
write "The room smells vaguely of Lisa's perfume." ^
}

object lisas_bunk: lisas lisa's bunk bed
 has		SURFACE
 inventory	name "Lisa's bunk bed"
 quantity	50

{lie_on : enter
write "Lisa would be far from impressed to walk in and find you lounging "
write "about in her bunk." ^
set TURN_WORKED = false
}

{jump_on
write "The thought of Lisa catching you jumping up and down on her bed "
write "stops you." ^
set TURN_WORKED = false
}

{look_under
write "Nothing but dust." ^
}

object lisas_window: lisas lisa's small round window
 inventory	name "Lisa's round window"

{look_through : examine
write "Through the window you can see out across the lagoon to the hills "
write "that line its east shore." ^
}

{open
write "The window in Lisa's living quarters is no different to the one in "
write "your own." ^
}

{break
write "Control yourself, Dr Meadows!" ^
}

object wardrobe: lisas lisa's wardrobe
 has		CLOSABLE CLOSED CONTAINER
 inventory	name "Lisa's wardrobe"
 quantity	20

{look_behind
write "Just a wall." ^
}

object lisas_clothes: lisas lisa's clothes
 has		PLURAL
 inventory	name "Lisa's clothes"
 starts childof wardrobe

{take
write "I don't think Lisa would appreciate you walking off with her clothes." ^
set TURN_WORKED = false
}

{examine
write "You don't find anything that suits you." ^
}

location quarters:
west		pool
 north		bathroom
 south		your_quarters
 east		lisas_quarters
 no_north	"That will be a bit hard with the bathroom door closed."	
 no_go		"You can only go in one of the cardinal directions from here."

{look
if here has VISITED
   write "You have returned to the common area." ^
   break
endif
write "This space is used for both work and recreation. A writing desk stands "
write "in the southwest corner beside a comfortable-looking sofa. In the "
write "east wall, a recess forms a small yet serviceable kitchenette while "
write "to the north "
if bathroom_door has CLOSED
   write "there is a closed door. "
endall
if bathroom_door hasnt CLOSED
   write "there is an open door through which you can enter the bathroom. "
endall
write "A large poster of a blue whale, hanging on the west wall by a "
write "doorway, serves to soften the decidedly military feel of the room. "
write "Doorways to south and east lead into your and Lisa's quarters "
write "respectively." ^ 
}

{first_hint
write "The writing desk is where you keep all your work to date." ^
set TURN_WORKED = false
}

{second_hint
write "There are important objects both on the desk and in its drawer." ^
set TURN_WORKED = false
}

{third_hint
write "After opening the drawer and taking the cassette from it:" ^^
write "  >INSERT CASSETTE IN RECORDER" ^
write "  >PRESS PLAY" ^
set TURN_WORKED = false
}

object wooden_chair: simple wooden chair
 inventory	a "simple wooden chair"
 described	"A simple wooden chair stands here."
 initial	"A simple wooden chair stands before the writing desk."
 mass		35

{sit_on_override
if player has SITTING
   write "You are already sitting down." ^
   break
endall
write "You sit down on the simple wooden chair." ^
ensure player has SITTING
}

{examine
write "Typical of standard military furniture, the wooden chair has "
write "absolutely no aesthetic appeal whatsoever." ^
}

object sofa: comfortable-looking comfortable looking sofa lounge
 inventory	a "comfortable-looking sofa"

{examine
write "Although well padded, the sofa's drab grey fabric is positively "
write "uninspiring." ^
}

{feel
write "The comfortable-looking sofa could be equally well described as the "
write "comfortable-feeling sofa." ^
}

{sit_on_override
if player has SITTING
   write "You are already sitting down." ^
   break
endall
write "You sit down on the comfortable-looking sofa." ^
ensure player has SITTING
}

object bathroom_door: bathroom door
 has		CLOSABLE LOCKABLE
 inventory	a "bathroom door"
 
{unlock_override
if here = quarters
   write "You can only unlock the bathroom door from the inside." ^
   set TURN_WORKED = false
   break
endall
write "You flip the latch into the unlocked position." ^
ensure bathroom_door hasnt LOCKED
}

{listen_to
if here = quarters
   if bathroom_door has LOCKED
      write "I'm starting to worry about you." ^
      break
endall
write "You don't hear anything out of the ordinary." ^
}

{lock_override
if here = quarters
   write "You can only lock the bathroom door from the inside." ^
   set TURN_WORKED = false
   break
endall
write "You flip the latch into the locked position." ^
ensure bathroom_door has LOCKED
}

{close_override
ensure bathroom_door has CLOSED
if here = quarters
   write "You gently pull the door closed." ^
else
   write "You gently push the door closed." ^
endif
set quarters(north) = nowhere
set bathroom(south) = nowhere
}

{open_override
ensure bathroom_door hasnt CLOSED
if here = quarters
   write "You gently push the door open." ^
else
   write "You gently pull the door open." ^
endif
set quarters(north) = bathroom 
set bathroom(south) = quarters
}

{examine
write "The bathroom door is "
if bathroom_door has CLOSED
   write "closed."
endall
if bathroom_door hasnt CLOSED
   write "open."
endall
if here != bathroom
   write ^
   break
endall
write " There is a small latch, "
if bathroom_door has LOCKED
   write "currently in the locked position"
endall
if bathroom_door hasnt LOCKED
   write "currently in the unlocked position"
endall
write ", on the edge of the door." ^
}

{knock_on
if bathroom_door hasnt CLOSED
   write "There really isn't any need, the bathroom door is wide open." ^
   break
endall
if LISAS_SCRIPT > 28
   if LISA_SCRIPT < 35
      if bathroom_door hasnt CUSTOM1
         write "~Hang on, I won't be a minute,~ Lisa calls from "
         write "within the bathroom." ^
         ensure bathroom_door has CUSTOM1
         break
endall 
if LISAS_SCRIPT > 28
   if LISA_SCRIPT < 35
      write "~Go away!~" ^
      break
endall
break false
}

object kitchenette: kitchenette recess kitchen
 inventory	a "kitchenette"


{examine
write "The kitchenette's facilities are modest, but more than enough to "
write "support your fledgling culinary skills." ^
}

object poster: lisas lias's blue whale poster
 inventory	a "whale poster"

{take
write "The poster belongs to Lisa, actually, so it would only be polite to "
write "leave it where it is." ^
}

{examine
write "A bit tattered after the trip out here, the poster was bought by Lisa "
write "shortly before leaving the mainland. Your appreciation of it grows "
write "daily." ^
}

object desk: writing desk
 has		SURFACE
 inventory	a "writing desk"
 quantity	30
 
{look_under
write "You stumble across that space where your knees go when you sit at it." ^
}

{examine
write "The writing desk is very neat and organised, thanks to Lisa. It has "
write "a single drawer on its left side which is "
if drawer has CLOSED
   write "closed. "
else
   write "open. "
endif
execute "global_details"
}

{look_in
proxy "look in drawer"
}

{open
proxy "open drawer"
}

{close
proxy "close drawer"
}

object drawer: writing desk drawer
 has		CONTAINER CLOSABLE CLOSED
 inventory	a "desk drawer"
 quantity	12

object report: final report
 inventory	your "final report"
 described	"Your final report is here."
 starts childof drawer
 mass		2

{eat : break
write "I can understand your want to, but don't." ^
}

{read : examine
write "It is your final report, and is essentially a summary of your notes on "
write "the microcassette." ^^
write "In your conclusion you refer to Rotenone as the "
write "most likely cause of the deaths occurring in the local marine life. "
write "Due to the one-off, accidental nature of the spill, you reluctantly "
write "admit that you can see no reason to suspect any further occurrences "
write "and that operation at the base should proceed as normal." ^^
write "You have held off from submitting the report due to several unanswered "
write "questions, namely the reason for there being an almost completely "
write "mature fish population in the area. Time, though, is running out. "
write "You will soon have no choice but to submit the report and return to "
write "the mainland without having all the answers." ^
if report has DAMAGED
   write ^ "Although still readable, you can't help but be a tad concerned "
   write "about how badly the ink has run after getting it wet." ^
}

{submit
if here = office
   proxy "give report to wise"
   break
endif
write "In order to submit the report, you will have to take it and give it "
write "to Colonel Wise." ^
set TURN_WORKED = false
}

{insert_on_cos_desk
write "Picking up the report from his desk, Colonel Wise leans back "
execute "global_report_submitted"
}

{give_to_wise : show_to_wise
write "Colonel Wise grabs the report from your hand. Leaning forward, he "
write "places it on to his desk "
execute "global_report_submitted"
}

object cassette: microcassette tape cassette
 inventory	a "microcassette"
 described	"A microcassette lies nearby."
 starts childof drawer
 mass		2

{hint : play
write "To listen to the microcassette, insert it into the tape recorder and "
write "press play." ^
set TURN_WORKED = false
}

{insert_in_recorder
write "You gently insert the cassette into the recorder." ^
move cassette to recorder
}

{take : remove : remove_from_recorder
if recorder has ON
   write "You can not take the cassette out of the recorder while it is "
   write "playing." ^
   set TURN_WORKED = false
   break
endif
break false
}

{examine
write "The words ~CASE NOTES~ are written on the tape's label." ^
}

object book: book science encyclopedia
 inventory	a "science encyclopedia"
 described	"Your science encyclodedia lies nearby."
 mass		6
 starts childof desk

{hint
write "You can look up various things in the encyclopedia by typing ~look up "
write "<topic> in encyclopedia~." ^
set TURN_WORKED = false
}

{examine : open : read : look_in
if book has DAMAGED
   write "Much to your distress the book is looking worse for wear after "
   write "being in the water." ^
   break
endall
write "You bought the book during your early days at university and it has "
write "been your favourite ever since. A simple one-volume encyclopedia of "
write "science, it is the ideal reference while in the field, "
write "away from your main library at home." ^
}

object rec_speaker: microcassette cassette tape recorder's recorders speaker
 inventory	a "microcassette recorder's speaker"
 starts childof recorder

{examine
write "The speaker on the back of the microcassette recorder is small yet "
write "serviceable." ^
}

{listen_to
if recorder has ON
   write "You can hear a faint hiss coming from the microcassette recorder's "
   write "speaker." ^
   break
endif
write "At the moment, the microcassette recorder is silent." ^
}


object recorder: microcassette cassette tape recorder
 inventory	a "microcassette recorder"
 described	"There is a microcassette recorder here."
 starts childof desk
 mass		4

{examine
write "You use the microcassette recorder to take notes whenever you are "
write "working. It has five buttons labelled play, record, fast forward, "
write "rewind and stop. Tapes are manually inserted and removed (you couldn't "
write "afford the deluxe model at the time), while the sound comes out of a "
write "small yet serviceable speaker on its back. "
if cassette childof recorder
   write "There is currently a cassette in the recorder." ^
   break
endall
write "There is currently no cassette in the recorder." ^
}

{listen_to
if recorder has ON
   write "You can hear the faint hum of the microcassette recorder's "
   write "motor." ^
   break
endif
write "At the moment, the microcassette recorder is silent." ^
}

{remove_all_from
if cassette childof recorder
   execute "take_cassette"
   break
endif
break false
}

{turn_on
write "To use the microcassette recorder, simply press the button that "
write "matches the operation you require." ^
}

object play: play button
 inventory	a "play button"
 starts childof recorder

{press : move
if cassette !childof recorder
   write "Without a cassette in the recorder, there isn't much point." ^
   set TURN_WORKED = false
   break
endall
if recorder has DAMAGED
   write "From the astounding lack of response, I don't think the recorder "
   write "survived being in the water." ^
   break
endall
if recorder has ON
   write "The cassette is already playing." ^
   set TURN_WORKED = false
   break
endall
write "The tape begins to turn in the recorder. " ^
ensure recorder has ON
}

object stop: stop button
 inventory	a "stop button"
 starts childof recorder

{press : move
if cassette !childof recorder
   write "Without a cassette in the recorder, there isn't much point." ^
   set TURN_WORKED = false
   break
endall
if recorder hasnt ON
   write "The cassette is already stopped." ^
   set TURN_WORKED = false
   break
endall
write "You press the stop button, causing the cassette to cease playing." ^
ensure recorder hasnt ON
}

object forward: fast forward button
 inventory	a "fast forward button"
 starts childof recorder

{press : move
if cassette !childof recorder
   write "Without a cassette in the recorder, there isn't much point." ^
   set TURN_WORKED = false
   break
endall
if recorder has DAMAGED
   write "From the astounding lack of response, I don't think the recorder "
   write "survived being in the water." ^
   break
endall
if COUNTER_POSITION = 6
   write "The recorder hums indicating that you are already at the very end "
   write "of the tape." ^
   break
endall
set COUNTER_POSITION + 1
if recorder hasnt ON
   write "You press " noun1 ", causing the tape to skip forward "
   write "momentarily." ^
   break
endall
write "A high pitched squealing noise comes from the recorder's speaker as "
write "your skip the tape forward." ^
}

object rewind: rewind button
 inventory	a "rewind button"
 starts childof recorder

{press : move
if cassette !childof recorder
   write "Without a cassette in the recorder, there isn't much point." ^
   set TURN_WORKED = false
   break
endall
if recorder has DAMAGED
   write "From the astounding lack of response, I don't think the recorder "
   write "survived being in the water." ^
   break
endall
if COUNTER_POSITION = 0
   write "The recorder hums indicating that you are already at the very start "
   write "of the tape." ^
   break
endall
set COUNTER_POSITION - 1
if recorder hasnt ON
   write "You press " noun1 ", causing the tape to skip backwards "
   write "momentarily." ^
   break
endall
write "A high pitched squealing noise comes from the recorder's speaker as "
write "your skip the tape backwards." ^
}

object record: record button
 inventory	a "record button"
 starts childof recorder

{press : move
if cassette !childof recorder
   write "Without a cassette in the recorder, there isn't much point." ^
   set TURN_WORKED = false
   break
endall
write "The record button's resistance to be pressed reminds you that you "
write "removed the write-protect tab from the cassette." ^
}

location bathroom:
 south		quarters
 out		quarters
 no_go		"The only exit from here is back south into your quarters."
 no_south	"That will be a bit hard with the bathroom door closed."	

{look
if here has VISITED
   write "You are back in the bathroom." ^
   break
endif
write "A plain, stainless steel toilet faces a square shower cubicle in this "
write "small bathroom. In between, a mirrored vanity cabinet hangs on the wall "
write "above a sink. The only exit from here is back south into the common "
write "area." ^
}

object latch: bathroom door latch
 inventory	a "door latch"

{examine
write "The door latch is "
if bathroom_door has LOCKED
   write "currently in the locked position." ^
   break
endall
write "currently in the unlocked position." ^
}

{lock : close
proxy "lock bathroom door"
}

{unlock : open
proxy "unlock bathroom door"
}

object vanity: vanity cabinet mirror mirrored door
 has		CONTAINER CLOSABLE CLOSED
 inventory	a "vanity cabinet"
 quantity	20

{examine : look_in
if vanity hasnt CLOSED 
   write "The open vanity cabinet hangs crooked on the wall just above "
   write "the sink"  
   execute "global_contents"
   break
endall
write "You look at the vanity cabinet seeing only your own reflection in "
write "the closed mirrored door. You smile, then grimace." ^
}
   
object toothbrush: shaggy toothbrush brush
 inventory	a "shaggy toothbrush"
 described	"Lurking nearby is a shaggy toothbrush."
 mass		3
 starts childof vanity

{use
write "You did that when you got up this morning." ^
set TURN_WORKED = false
}

{examine
write "Shaggy, but useable." ^
}

object soap: bar of soap
 inventory	a "bar of soap"
 described	"There is a bar of soap here."
 mass		5
 starts childof vanity

{examine
if soap has DAMAGED
   write "Decidedly sloppy after being soaked in water." ^
   break
endall
write "It is a bar of regulation issue soap, guaranteed to remove at least "
write "four layers of skin." ^
}

object comb: plastic hair comb
 inventory	a "plastic hair comb"
 described	"On the ground there is a hair comb."
 mass		3
 starts childof vanity

{use
if comb is *held
   proxy "comb hair"
   break
endif
write "You need to be holding the comb in order to use it." ^
set TURN_WORKED = false
}

object pin: bobby hair pin
 inventory	a "bobby pin"
 described	"You can spot a bobby pin lying on the ground."
 mass		2
 starts childof vanity

{look_at_through_magnifying_glass
write "No fairy, unfortunately." ^
}

object q_r_water: small quantity of rain water
 has		LIQUID
 inventory	a "small quantity of rain water"
 starts		limbo
 mass		2

{taste
write "The rain water tastes wonderfully clean." ^
}

{drink_override
write "You drink the clear fresh rain water." ^
move q_r_water to limbo
}

{pour_on_contents
write "The dark brown stain doesn't appear to be water soluble." ^
}

{pour_on_label : pour_on_drum
write "If you are trying to soak the label off, don't bother, you really "
write "don't need it." ^
}

{pour_on_sink_override
if fuel !childof sink
   if sample !childof sink
      if q_s_water !childof sink 
	 write "You pour the quantity of rain water into the sink." ^
         set WATER_LEVEL + 1
         move q_r_water to limbo
         move r_water to sink
         break
endall
break false
}

object r_water: sink load of rain water
 has		LIQUID
 inventory	a "sink load of rain water"
 starts		limbo

{taste
write "The rain water tastes wonderfully clean." ^
}

{examine
write "Crystal clear." ^
}

{drink_override
if r_water has CUSTOM4
   write "You've had quite enough water for now." ^
   break
endall
write "You drink a small amount of the water - quite refreshing." ^
ensure r_water has CUSTOM4
}

object sink: sink
 has		CONTAINER
 inventory	a "sink"
 quantity	20

{fill
proxy "turn on tap"
}

{examine
write "A single tap attached to the sink, gravity fed from a rain water "
write "tank on the roof, is the only source of fresh water in the outpost. "
write "In the bottom of the sink there is a plug hole"
if plug !childof hole
   write ". "
endall
if plug childof hole
   write " which has a rubber plug inserted into it. " 
endall
if sink_tap hasnt CLOSED
   write "Water is flowing from the tap into the sink "
endall
if sink_tap hasnt CLOSED
   if plug !childof hole 
      write "and down the open plug hole causing it to remain "
endall
if sink_tap hasnt CLOSED
   if plug childof hole
      write "which is " 
endall
if sink_tap has CLOSED
   write "The sink is "
endall
if WATER_LEVEL = 0 
   write "empty of water"
endall
if WATER_LEVEL = 1
   write "a quarter full of rain water"
endall
if WATER_LEVEL = 2
   write "half full of rain water"
endall
if WATER_LEVEL = 3
   write "three quarters full rain water"
endall
if WATER_LEVEL = 4
   write "practically full of rain water"
endall
if WATER_LEVEL = 5
   write "completely full of rain water" 
endall
execute "global_sink_contents"
if WATER_LEVEL = 5
   write ^ "With the tap still running, the sink is now overflowing on to "
   write "the floor and down the drain." ^
   break
endall
}

object sink_tap: plain sink tap
 has		CLOSABLE CLOSED
 inventory	a "tap"

{examine
if sink_tap hasnt CLOSED 
   write "Water flows from the open tap." ^
else
   write "The tap is turned to the closed position." ^
}

{turn
if sink_tap hasnt CLOSED 
   execute "close_sink_tap"
else
   execute "open_sink_tap"
}

{open : turn_on
if sink_tap hasnt CLOSED 
   write "The tap is already open." ^
   break
endall
if sample childof sink
   write "If you were to open the tap, water would flow into the sink mixing "
   write "with the pale yellow liquid." ^
   set TURN_WORKED = false
   break
endall
if fuel childof sink
   write "If you were to open the tap water would flow into the sink mixing "
   write "with the clear liquid." ^
   set TURN_WORKED = false
   break
endall
write "Water begins to flow from the tap as you open it." ^
ensure sink_tap hasnt CLOSED 
execute "global_sink_damage"
}

{close : turn_off
if sink_tap has CLOSED
   write "The tap is already closed." ^
   break
endif
write "You turn the tap, shutting off the water." ^
ensure sink_tap has CLOSED
}

object plug: small rubber plug
 inventory	a "rubber plug"
 described	"A small rubber plug rests on the ground."
 starts childof vanity
 mass		2

{insert_in_hole : insert_in_sink
if WATER_LEVEL = 0
   write "You place the plug into the hole in the sink." ^
else
   write "You reach into the water and replace the plug." ^
endif
move plug to hole
}

{examine
write "This small rubber plug is designed to fit the hole in your bathroom "
write "sink." ^
}

{pull
if plug childof hole
   proxy "take plug"
   break
endall
break false
}

{take
if plug !childof hole
   break false
endall
if WATER_LEVEL > 0
   write "You reach into the water and pull out the plug." ^
   move plug to player
   break
endall
write "You reach into the sink and pull out the plug"
move plug to player
if sample childof sink
   write " causing the pale yellow liquid to flow down the plug hole." ^
   move sample to limbo
   break
endall
if fuel childof sink
   write " causing the clear liquid to flow down the plug hole." ^
   move fuel to limbo
   break
endall
write ^
}

{insert_in_drain
write "It'll be you mopping up the mess when half the outpost floods due "
write "to you blocking the drain (a thought that makes you change your "
write "mind)." ^
set TURN_WORKED = false
}

object hole: sink plug hole pvc piping
 inventory	a "plug hole"

{examine
if plug childof hole
   write "The sink hole has a rubber plug in it preventing any water from "
   write "escaping" ^
   break
endall
write "The plug hole is extended by a short piece of PVC piping down through "
write "the floor, emptying into the lagoon." ^
}

object drain: floor drain
 inventory	a "floor drain"

{examine : look_through : look_in
write "The drain is nothing more than a small hole in the floor through "
write "which you can see down to the surface of the lagoon." ^
}

object toilet: toilet stainless steel
 has		CONTAINER
 inventory	a "toilet"
 quantity	5

{flush
loop
  if noun3 childof toilet
     move noun3 to lagoon_bottom
  endif
endloop
write "You pull a small lever causing the toilet to flush." ^
}

{examine : look_in
write "Of a simple stainless steel design. "
execute "global_details"
}

{use
write "You don't need to go right now." ^
}

{enter
write "Were you picked on much at school?" ^
set TURN_WORKED = false
}

object lever: small lever
 inventory	a "small lever"

{examine
write "The small lever can be pulled in order to flush the toilet." ^
}

{pull
proxy "flush toilet"
}

object shower: shower cubicle 
 inventory	a "shower cubicle"

{clean_with_toothbrush
write "Well... you sure know how to party." ^
}

{examine
write "Serviceable, but nothing to write home about." ^
}

{use : take : enter
write "You took a shower this morning, and strict water rationing allows only "
write "one a day, sorry." ^
}

location storage:
 west     nowhere
 east     pool
 no_west  "You bang your head on the closed steel door."

{look
if here has VISITED
   write "You are in the storage area again." ^
   break
endif
write "A single incandescent bulb housed in a bare metal cage "
write "lights this stark room. Stacked wooden crates cover about two-thirds "
write "of the floor here, making movement difficult. In addition to the "
write "doorway to the east, there is a plain steel door to the west which is "
write "currently "
if steel_door has CLOSED
   write "closed."
else
   write "open."
endif
write " A short hose for refilling scuba tanks protrudes through the "
write "north wall." ^
}

object hose: air refill hose
 inventory	an "air refill hose"

{hint
write "If you empty the scuba tank, simply type REFILL TANK while holding it "
write "in the storage area." ^
set TURN_WORKED = false
}

{examine
write "The hose comes through the wall from a high-pressure tank outside, "
write "allowing you to refill the scuba tank several times without taking it "
write "back to the main base." ^
}

{pull
write "The hose doesn't have any extra slack in it." ^
}

{use
proxy "refill tank"
}

object steel_door: steel door
 has		CLOSABLE CLOSED
 inventory	a "steel door"
 
{close_override
ensure steel_door has CLOSED
write "With a sharp click the door pulls to." ^
set storage(west) = nowhere
set storage(out) = nowhere
set walkway(east) = nowhere
set walkway(in) = nowhere 
}

{open_override
ensure steel_door hasnt CLOSED
write "Silently the door swings open." ^
set storage(west) = walkway
set storage(out) = walkway
set walkway(east) = storage
set walkway(in) = storage
}

{examine
write "The steel door is indicative of the design philosophy of the outpost: "
write "simple, yet functional. "
if steel_door has CLOSED
   write "It is firmly shut." ^
   break
endall
if here = storage
   write "Beyond the open door you can see out along a walkway that leads to " 
   write "the shore." ^
   break
endall
write "Beyond the open door you can see into the storage area of the "
write "research outpost." ^
}

{enter
if here = storage
   proxy "w"
   break
endif
proxy "e"
}

object crates: stack of wooden crate crates supplies
 has		PLURAL
 inventory	a "wooden crates"

{examine
write "The wooden crates are filled with supplies - enough to sustain you and "
write "Lisa for over a month here at the research outpost without outside "
write "contact." ^
}

{look_behind
write "For a moment, you thought you saw Elvis." ^
}

{climb : stand_on : enter
write "There is no point to climbing all over the wooden crates. I mean that "
write "incandescent bulb isn't going to have a very good resale value if "
write "that's what you're thinking." ^
}

{open
write "There is no need to go unpacking the supplies right now." ^
}

object mask: scuba mask goggles
 has		WEARABLE
 inventory	a "scuba mask"
 initial	"Perched on one of the stacked wooden crates is a scuba mask."
 described	"There is a scuba mask here."
 mass		5
 starts		here

{wear
if here has UNDER_WATER
   write "Holding the mask against your face, you tilt your head back then "
   write "exhale gently through your nose, clearing the mask of water." ^
   set player(info) + noun1(mass)
   ensure mask has WORN
   break
endall
break false
}

{remove_override
if here has UNDER_WATER
   write "Salt water rushes unpleasantly into your eyes as you remove the "
   write "mask." ^
   ensure mask hasnt WORN
   set player(info) - noun1(mass)
   break
endall
break false
}

{examine
write "The mask is made from black silicon with a clear perspex face plate."
write ^
}

object fins: set of scuba fin fins
 has		WEARABLE PLURAL
 inventory	the "scuba fins"
 initial	"A set of scuba fins are lying on the floor in front of the wooden crates."
 described	"A set of scuba fins lie nearby."
 mass		5

{examine
write "The scuba fins are black with a piece of bright yellow tape wrapped "
write "around the tip of each, one with the word ~BACK~ written on it, the "
write "other with the word ~OFF~." ^
}

object tank: scuba tank 
 has		WEARABLE
 inventory	a "scuba tank"
 described	"Standing upright on the ground is a scuba tank."
 mass		25

{hint
write "You use the scuba tank by wearing it. If the tank is either empty or "
write "the tap is turned off, you will automatically remove it. Also be aware "
write "that the deeper you are (check your gauge often), the faster you will "
write "use up the air in the tank due to the increased pressure." ^
set TURN_WORKED = false
}

{turn_on
execute "open tap"
}

{turn_off
execute "close tap"
}

{examine
write "The tank is made from aluminium tha has been painted black. A tap at "
write "the top can be opened and closed to release the air within. Attached "
write "is a regulator and submersible pressure gauge. A simple arrangement "
write "of straps allows you to wear the tank on your back." ^
}

{wear : use
if here has UNDER_WATER
   write "Manoeuvring yourself around in the water, you manage to slip the "
   write "scuba tank onto your back."
endall
if here has ON_WATER
   write "Manoeuvring yourself around on the water, you manage to slip the "
   write "scuba tank on to your back."
endall
if here hasnt UNDER_WATER
   if here hasnt ON_WATER
      write "Heaving the scuba tank over your shoulder, you manage to contort "
      write "yourself enough to slip your other arm through the strap."
endall
write " Once comfortable, you place the regulator in your mouth"
if here has UNDER_WATER
   write ", exhale once sharply to clear out the water,"
endall
if tap hasnt CLOSED
   if TANK_PRESSURE > 0
      write " then begin to breathe normally." ^
      set player(info) + noun1(mass)
      ensure tank has WORN
      break
endall
write " only to find that no air comes out. Not being particularly fond of "
write "breathing nothing, you remove the scuba tank"
if here has WITHOUT_AIR
   write " and continue holding your breath." ^
   break
endall
write .^
}

{remove_override
write "Unfastening the cummerbund, you slip the scuba tank off your shoulder "
ensure tank hasnt WORN
set player(info) - noun1(mass)
if here hasnt UNDER_WATER
   write "and begin to breathe fresh air again." ^
   break
endall
write "and begin to hold your breath." ^
}

{fill : fill_with_hose : fill_from_hose
proxy "refill " noun1
}

object tap: scuba tank tap
 has		CLOSABLE CLOSED
 inventory	a "scuba tank tap"
 starts childof tank 
 
{examine
if tap hasnt CLOSED 
   write "The tap on the scuba tank is turned to the open position." ^
   break
endall
write "The tap on the scuba tank is turned to the closed position." ^
}

{turn
if tap hasnt CLOSED 
   execute "close_tap"
   break
endall
execute "open_tap"
}

{turn_on
execute "open_tap"
}

{turn_off
execute "close_tap"
}

{open
if tap hasnt CLOSED 
   write "The tap on the scuba tank is already open." ^
   break
endall
write "You turn the tap on the scuba tank into the open position." ^
ensure tap hasnt CLOSED 
}

{close
if tap has CLOSED
   write "The tap on the scuba tank is already closed." ^
   break
endall
write "You turn the tap on the scuba tank into the closed position" 
ensure tap has CLOSED
if tank has WORN
   write .^
   execute "global_tank_empty"
   break
endall
if TANK_PRESSURE > 0
   write ", pressing the purge button on the regulator to release air from "
   write "the low pressure hose." ^
   break
endall
write .^
}

object regulator: regulator
 inventory	a "regulator"
 starts childof tank 

{examine
write "Attached by a low pressure hose to the tank, the regulator has a "
write "comfortable moulded mouth piece. A large button on its front allows "
write "you to purge any water from within it." ^
}

object purge: purge button
 inventory	a "purge button"
 starts childof tank

{press : move
if tank has WORN
   write "You seal your mouth with your tongue then depress the purge button "
   write "causing a jet of air to be released from the regulator." ^
   break
endall
if here has UNDER_WATER
   write "A large cloud of bubbles rises from the regulator towards the "
   write "surface." ^
   set TANK_PRESSURE - CONSUMPTION_RATE
   if WORK_PHASE > 0
      if WORK_PHASE < 5
         if here = site
            write ^ "Spotting the cloud of rising bubbles, one of the divers "
            write "signals to his colleagues who all fire their spear guns "
            write "without the slightest hesitation. You have but a moment to "
            write "regret your actions." ^
            execute "global_death"
            break
          endif
      endif
   endif
   break
endall
if tap has CLOSED
   write "Nothing happens." ^
   break
endif 
if TANK_PRESSURE = 0
   write "Nothing happens." ^
   break
endif
write "The regulator makes a loud hissing sound as you depress the purge "
write "button." ^
set TANK_PRESSURE - 1 
}

object spg: submersible pressure gauge gauges spg
 inventory	a "submersible pressure gauge"
 starts childof tank 

{examine : read
write "Attached by a high pressure hose to the tank, the gauge indicates "
write "that the tank contains "
if tap has CLOSED
   write "0"
endall
if tap hasnt CLOSED
   write TANK_PRESSURE
endall
write " bar of air and that you are at a depth of " CURRENT_DEPTH
if CURRENT_DEPTH = 1
   write " metre." ^
   break
endall
write " metres." ^
}

{hint
write "The submersible pressure gauge tells you your current depth in "
write "metres and how much air remains in the tank in bar. It is "
write "important to be aware of both the whole time you are underwater." ^
set TURN_WORKED = false
}

object bulb: incandescent light bulb
 has		OUT_OF_REACH
 inventory	an "incandescent bulb"

{examine
write "A few moments of staring at the bulb leaves you with an annoying "
write "afterimage." ^
}

object cage: metal cage
 has		OUT_OF_REACH
 inventory	a "metal cage"

location lab:
 north		pool
 out		pool
 no_go		"The only exit from here is back out to the north."

{look
if here has VISITED
   write "You have returned to the laboratory." ^
   break
endif
write "This laboratory is where you do the majority of your work here on the "
write "island. A long bench through the centre of the room stands covered "
write "with a variety of equipment including a large biological microscope and "
write "a device for creating freeze fracture slides from bacterial samples. "
write "A tall glass-doored refrigerator stands against the far wall." ^
}

{first_hint
write "The laboratory is for analysing any strange, unidentified substances "
write "that you may have come across in your travels. If you have not found "
write "any such substances, there is nothing for you to do here yet (except "
write "take the GPS unit from the bench)." ^
set TURN_WORKED = false
}

{second_hint
write "The encyclopedia in your room contains many references relevant to "
write "this part of the story. Once you have the vial containing the clear "
write "liquid, you must perform an Ames test on it using a petri dish (namely "
write "the agar within it), the yellow fluid and the syringe. Once done, you "
write "must study the results by making a slide to look at through the "
write "microscope." ^ 
set TURN_WORKED = false
}

{third_hint
write "Once you have the vial and are in the laboratory:" ^^
write "  >POUR THE YELLOW FLUID ON THE BROWN AGAR" ^
write "  >FILL THE SYRINGE WITH THE CLEAR FLUID" ^
write "  >INJECT THE CLEAR FLUID INTO THE BROWN AGAR" ^
write "  >OPEN THE COMPARTMENT" ^
write "  >INSERT THE FIRST PETRI DISH IN THE COMPARTMENT" ^
write "  >CLOSE THE COMPARTMENT" ^
write "  >PRESS THE BUTTON" ^^
write "Insert the slide that is produced into the slot then:" ^^
write "  >LOOK THROUGH THE MICROSCOPE" ^
set TURN_WORKED = false
}

object lab_equipment: equipment
 inventory	the "equipment"

{examine
proxy "examine bench"
}

object bench: long bench table
 has		SURFACE
 inventory	a "long bench"
 quantity	50

{look_under
write "Beneath the work bench there is about fifteen cubic metres of air." ^
}

{examine
write "The long bench is cluttered, yet oddly organised. "
execute "global_contents"
}

object gps: gps unit
 inventory	a "GPS unit"
 described	"There is a GPS unit here."
 mass		5
 starts childof bench
 
{examine : read
write "The GPS unit is a small, sealed plastic device. On its front there "
write "is a back-lit LCD display which "
if here hasnt OUTDOORS
   write "is currently blank due to its inability to communicate with the "
   write "satellites while indoors." ^
   break
endif
if here has UNDER_WATER
   write "is currently blank due to its inability to communicate with the "
   write "satellites while under water." ^
   break
endif   
write "reads -171deg14'02." LONGITUDE "~ longitude and "
write "-23deg34'86." LATITUDE "~ south latitude." ^
}

{hint
write ~The GPS unit communicates with a series of orbiting satellite to "
write "calculate your current longitude and latitude." ^ 
}

object syringe: syringe
 inventory	a "syringe"
 quantity	2
 starts childof bench
 described	"A syringe rests at your feet."
 mass		2

{insert_in_fask
execute "global_noun1_liquid?"
if INDEX = false
   proxy "fill syringe from flask"
   break
endall
proxy "inject flask with syringe"
}

{insert_in_vial : insert_in_membrane
execute "global_noun1_liquid?"
if INDEX = false
   proxy "fill syringe from vial"
   break
endall
proxy "inject vial with syringe"
}

{examine
write "Never having been one for injections, just the sight of the "
write "syringe is enough to make you cringe. "
execute "global_noun1_liquid?"
if INDEX = false
   write "The syringe is empty, its plunger pushed all the way in." ^
   break
endall
write "The syringe appears even more sinister than ever now that it is filled "
write "with " noun3 ". "
if syringe has CUSTOM5 
   write "The liquid appears to be filled with many small bubbles." ^
   break
endall
if syringe has CUSTOM4
   write "On closer examination you notice there is a large air pocket "
   write "at the top of the syringe."
endall
write ^
}

{flick : knock_on
execute "global_noun1_liquid?"
if INDEX = false
   write "This achieves little." ^
   break
endall
if syringe has CUSTOM5
   write "You flick the syringe, causing the small bubbles in the liquid to "
   write "dislodge and rise to the surface." ^
   ensure syringe hasnt CUSTOM5
   ensure syringe has CUSTOM4
   break
endall
write "Once was enough." ^
}

{shake
execute "global_noun1_liquid?"
if INDEX = false
   write "This achieves little." ^
   break
endall
if syringe has CUSTOM4
   write "You shake the syringe, causing the small bubbles to form in the "
   write "liquid." ^
   ensure syringe has CUSTOM5
   ensure syringe hasnt CUSTOM4
   break
endif
write "This achieves little." ^
}

{open
write "The syringe would no longer be sterile if you were to remove the "
write "plunger from it." ^ 
}

{fill_from_vial
if fuel !childof vial
   write "The vial is empty." ^
   set TURN_WORKED = false
   break
endall
proxy "fill syringe with clear liquid"
}

{fill_with_sample
execute "global_noun1_liquid?"
if INDEX = true
   write "The syringe already contains " noun3 .^
   set TURN_WORKED = false
   break
endall
write "You place the tip of the needle into the pale yellow liquid and pull "
write "back on the plunger causing the liquid to be drawn into the syringe." ^
move sample to syringe
ensure sample has OUT_OF_REACH
ensure syringe has CUSTOM5
}

{take_all_from
execute "global_noun1_liquid?"
if INDEX = false
   write "The syringe is already empty." ^
   set TURN_WORKED = false
   break
endall
write "You depress the plunger, emptying the syringe of " noun3 .^
move noun3 to limbo
}

{fill_with_fuel
execute "global_noun1_liquid?"
if INDEX = true
   write "The syringe already contains " noun3 .^
   set TURN_WORKED = false
   break
endall
if fuel childof vial
   write "Puncturing the rubber membrane with the tip of the needle, you pull "
   write "back on the plunger drawing the clear liquid into the syringe." ^
endif
if fuel !childof vial
   write "You draw the clear liquid into the syringe." ^
endif
move fuel to syringe
ensure fuel has OUT_OF_REACH
ensure syringe has CUSTOM5
}

{fill_with_r_water : fill_with_q_r_water
write "The syringe would become contaminated if you were to fill it with "
write "the rain water." ^
set TURN_WORKED = false
}

{fill_with_s_water : fill_with_q_s_water
write "The syringe would become contaminated if you were to fill it with "
write "the sea water." ^
set TURN_WORKED = false
}

{insert_in_vial : insert_in_membrane
proxy "fill syringe from vial"
}

{insert_on_dish_1 : insert_in_dish_1 : insert_on_agar_1 : insert_in_agar_1
proxy "inject first dish with syringe"
}

{insert_on_dish_2 : insert_in_dish_2 : insert_on_agar_2 : insert_on_agar_2
proxy "inject second dish with syringe"
}

object scalpel: surgical scalpel
 inventory	a "surgical scalpel"
 starts childof bench
 described	"A surgical scalpel lies within reach."
 mass		2

{examine
write "Not the most sinister piece of surgical hardware you've every seen, "
write "but still frighteningly sharp." ^
}

object blue_slide: blue slide
 inventory	a "blue slide"
 described	"The blue slide rests nearby."
 mass		2
 starts		limbo

{look_at_through_magnifying_glass
write "You are going to need a bit more magnification than that." ^
}

{examine
write "The slide, made using the freeze fracture device, contains cells from "
write "an uncontaminated sample of Salmonella bacteria." ^
}

{look_at_through_microscope
write "What a good idea." ^
}

{insert_in_microscope
proxy "insert blue slide into slot"
}

{insert_in_slot
execute "global_noun2_contents"
if INDEX = true
   write "There is already another slide in the slot." ^
   set TURN_WORKED = false
   break
endall
write "With a sharp click, the slide fits neatly into the slot in the base of "
write "the microscope." ^
move blue_slide to slot
}

object purple_slide: purple slide
 described	"The purple slide rests nearby."
 inventory	a "purple slide"
 mass		2
 starts		limbo

{look_at_through_magnifying_glass
write "You are going to need a bit more magnification than that." ^
}

{examine
write "The slide, made using the freeze fracture device, contains cells from "
write "an uncontaminated sample of Salmonella bacteria." ^
}

{look_at_through_microscope
write "What a good idea." ^
}

{insert_in_microscope
proxy "insert purple slide into slot"
}

{insert_in_slot
execute "global_noun2_contents"
if INDEX = true
   write "There is already another slide in the slot." ^
   set TURN_WORKED = false
   break
endall
write "With a sharp click, the slide fits neatly into the slot in the base of "
write "the microscope." ^
move purple_slide to slot
}

object red_slide: red slide
 described	"The red slide rests nearby."
 inventory	a "red slide"
 mass		2
 starts		limbo

{look_at_through_magnifying_glass
write "You are going to need a bit more magnification than that." ^
}

{examine
write "The slide, made using the freeze fracture device, contains nothing "
write "more than plain agar." ^
} 

{look_at_through_microscope
write "What a good idea." ^
}

{insert_in_microscope
proxy "insert red slide into slot"
}

{insert_in_slot
execute "global_noun2_contents"
if INDEX = true
   write "There is already another slide in the slot." ^
   set TURN_WORKED = false
   break
endall
write "With a sharp click, the slide fits neatly into the slot in the base of "
write "the microscope." ^
move red_slide to slot
}

object cyan_slide: cyan slide
 described	"The cyan slide rests nearby."
 inventory	a "cyan slide"
 mass		2
 starts		limbo

{look_at_through_magnifying_glass
write "You are going to need a bit more magnification than that." ^
}

{examine
write "The slide, made using the freeze fracture device, contains nothing "
write "more than plain agar." ^
} 

{look_at_through_microscope
write "What a good idea." ^
}

{insert_in_microscope
proxy "insert cyan slide into slot"
}

{insert_in_slot
execute "global_noun2_contents"
if INDEX = true
   write "There is already another slide in the slot." ^
   set TURN_WORKED = false
   break
endall
write "With a sharp click, the slide fits neatly into the slot in the base of "
write "the microscope." ^
move cyan_slide to slot
}

object white_slide: white slide
 described	"The white slide rests nearby."
 inventory	a "white slide"
 mass		2
 starts		limbo

{examine
write "The slide, made using the freeze fracture device, contains a pure "
write "sample of the clear liquid." ^
} 

{look_at_through_microscope
write "What a good idea." ^
}

{insert_in_microscope
proxy "insert white slide into slot"
}

{insert_in_slot
execute "global_noun2_contents"
if INDEX = true
   write "There is already another slide in the slot." ^
   set TURN_WORKED = false
   break
endall
write "With a sharp click, the slide fits neatly into the slot in the base of "
write "the microscope." ^
move white_slide to slot
}

object green_slide: green slide
 described	"The green slide rests nearby."
 inventory	a "green slide"
 mass		2
 starts		limbo

{look_at_through_magnifying_glass
write "You are going to need a bit more magnification than that." ^
}

{give_to_zuckerman
if zuckerman hasnt CUSTOM5
   move green_slide to zuckerman
   write "~What's on it?~ Dr Zuckerman asks." ^
   break
endif
if writing_desk has CUSTOM1
   write "Dr Zuckerman glances briefly at the slide then places it on the "
   write "desk." ^
   move green_slide to writing_desk
   break
endif
write "~I would love to see the results of your investigation, Dr Meadows, but "
write "I'm afraid there isn't a microscope anywhere in the building,~ Dr "
write "Zuckerman informs you regretfully as he places the slide on the desk." ^
move gleen_slide to writing_desk
ensure writing_desk has CUSTOM1
set TOPICS_DISCUSSED + 1
}

{show_to_zuckerman
if zuckerman hasnt CUSTOM5
   write "~What is that?~ Dr Zuckerman asks." ^
   break
endif
if writing_desk has CUSTOM1
   write "Dr Zuckerman nods." ^
   break
endif
write "~I would love to see the results of your investigation, Dr Meadows, but "
write "I'm afraid there isn't a microscope anywhere in the building,~ Dr "
write "Zuckerman informs you regretfully." ^
ensure writing_desk has CUSTOM1
set TOPICS_DISCUSSED + 1
}

{show_to_stranger
execute "tell_about_green_slide_stranger"
}

{examine
write "The slide, made using the freeze fracture device, contains cells from "
write "the Salmonella bacteria after being contaminated with the clear "
write "liquid." ^
} 

{look_at_through_microscope
write "What a good idea." ^
}

{insert_in_microscope
proxy "insert green slide into slot"
}

{insert_in_slot
execute "global_noun2_contents"
if INDEX = true
   write "There is already another slide in the slot." ^
   set TURN_WORKED = false
   break
endall
write "With a sharp click, the slide fits neatly into the slot in the base of "
write "the microscope." ^
move green_slide to slot
}

object fridge: specimen fridge refrigerator
 has		CONTAINER CLOSABLE CLOSED
 inventory	a "specimen fridge"
 quantity	40

{examine
if fridge hasnt CLOSED
   write "The specimen fridge stands tall against the far wall of the room. "
   write "A set of frosted, double glass doors run its entire length from "
   write "top to bottom. The fridge is currently open"
   execute "global_contents"
   break
endall
write "The specimen fridge stands closed against the far wall of the room. "
write "A set of frosted, double glass doors run its entire length from "
write "top to bottom. " ^ 
}

{look_behind
write "The specimen fridge is right up against the south wall." ^
}

{move
write "The specimen fridge is far too heavy to move." ^
}

object petri_dish: petri dish plate
 inventory	a "petri dish"
 starts		limbo

{look_up_in_book
write "petri dish" ^ 
write "a shallow circular dish, usually made from glass, used for growing "
write "bacterial cultures and performing Ames tests etc. [named after German "
write "biologist J. R. Petri, died 1921." ^
}

object dish_1: first petri dish plate
 inventory	the "first petri dish"
 mass		2 
 described	"The first petri dish is here."
 starts childof fridge

{open
set TURN_WORKED = false
write "The petri dish is a small circular plate which has no lid." ^
}

{examine
write "The dish is circular and made from Pyrex."
if agar_1 childof dish_1
   write " It contains a solid gel of brown agar."
endall
write ^
}

{look_up_in_book
execute "look_up_in_book_petri_dish"
}

object agar: solid gel quantity of agar agar-agar
 inventory	a "quantity of agar"
 starts		limbo

{look_up_in_book
write "agar (agar-agar)" ^
write "a gelatine-like product of certain seaweeds used to solidify culture "
write "medium." ^
}
	
object agar_1: solid gel quantity of brown agar agar-agar
 inventory	a "quantity of brown agar"
 starts childof dish_1

{examine
write "The agar has been poured into the petri dish and set into a solid "
write "surface on which to grow bacterial cultures. "
if agar_1 has CUSTOM2;		HAS BEEN INJECTED WITH THE CLEAR FLUID 
   if agar_1 hasnt CUSTOM1;	BUT NOT COATED WITH BACTERIA
      write "The agar's upper surface has been coated with the clear "
      write "liquid."
endall
if agar_1 has CUSTOM1;		HAS BEEN COATED WITH BACTERIA	
   if agar_1 hasnt CUSTOM2;	BUT NOT INJECTED WITH CLEAR FLUID
      write "The bacteria you added to the agar is slowly dying due to "
      write "its dependence on exogenous histidine in its current form. "
endall
if agar_1 has CUSTOM1;		HAS BEEN COATED WITH BACTERIA
   if agar_1 has CUSTOM2;		AND HAS BEEN INJECTED WITH CLEAR FLUID
      write "The bacteria you added to the agar is slowly dying, indicating "
      write "that the clear liquid is not mutating it into a "
      write "non-histidine-requiring state. Due to this fact it is highly "
      write "unlikely that the clear liquid would act as a carcinogen in more "
      write "complex animals such as the fish surrounding the island."
endall
write ^
}

{look_up_in_book
execute "look_up_in_book_agar"
}

object dish_2: second petri dish  plate
 inventory	the "second petri dish"
 mass		2 
 described	"The second petri dish is here."
 starts childof fridge

{open
set TURN_WORKED = false
write "The petri dish is a small circular plate which has no lid." ^
}

{examine
write "The dish is circular and made from Pyrex."
if agar_2 childof dish_2
   write " It contains a solid gel of beige agar."
endall
write ^
}

{look_up_in_book
execute "look_up_in_book_petri_dish"
}

object agar_2: solid gel quantity of beige agar agar-agar
 inventory	a "quantity of beige agar"
 starts childof dish_2

{examine
write "The agar has been poured into the petri dish and set into a solid "
write "surface on which to grow bacterial cultures. "
if agar_2 has CUSTOM2;		HAS BEEN INJECTED WITH THE CLEAR FLUID 
   if agar_2 hasnt CUSTOM1;	BUT NOT COATED WITH BACTERIA
      write "The agar's upper surface has been coated with the clear "
      write "liquid." ^
      break
endall
if agar_2 has CUSTOM1;		HAS BEEN COATED WITH BACTERIA	
   if agar_2 hasnt CUSTOM2;	BUT NOT INJECTED WITH CLEAR FLUID
      write "The bacteria you added to the agar is slowly dying due to "
      write "its dependence on exogenous histidine in its current form. " ^
      break
   endif
   if agar_2 has CUSTOM2;	AND HAS BEEN INJECTED WITH CLEAR FLUID
      write "The bacteria you added to the agar is slowly dying, indicating "
      write "that the clear liquid is not mutating it into a "
      write "non-histidine-requiring state. Due to this fact it is highly "
      write "unlikely that the clear liquid would act as a carcinogen in more "
      write "complex animals such as the fish surrounding the island." ^
      break
endall
}

{look_up_in_book
write "agar (agar-agar)" ^ 
write "a gelatine-like product of certain seaweeds used to solidify culture "
write "medium." ^
}

object flask: conical flask
 has		CONTAINER
 inventory	a "conical flask"
 described	"A conical flask stands on the ground."
 mass		4
 quantity	5	
 starts childof fridge

{fill_from_stream
write "No." ^
}

{fill_from_sink_tap
execute "global_noun1_liquid?"
if INDEX = true
   write "The conical flask already contains " noun3 .^
   set TURN_WORKED = false
   break
endall
if tap hasnt CLOSED
   write "You hold the conical flask under the tap until it is full." ^
   move q_r_water to flask
   break
endall
write "You hold the conical flask under the tap, which you turn on until the "
write "flask is full." ^
move q_r_water to flask
}

{fill_with_r_water
execute "global_noun1_liquid?"
if INDEX = true
   if noun3 = q_r_water
      write "The conical flask is already full of rain water." ^
      set TURN_WORKED = false
      break
endall
if INDEX = true
   break false
endall
write "You scoop some of the rain water out of the sink with the conical "
write "flask." ^
move q_r_water to flask
}

{fill_with_s_water
execute "global_noun1_liquid?"
if INDEX = true
   break false
endall
write "You scoop some of the sea water up in the conical flask." ^
move q_s_water to flask
}

{examine
write "Made from tempered Pyrex, the conical flask is large enough to hold "
write "about 250ml. "
execute "global_contents"
}

{up_end
proxy "pour yellow fluid"
}

object fracture: freeze fracture
 inventory	a "freeze fracture"
 starts		limbo

{look_up_in_book
write "freeze fracture" ^
write "a process of solidifying a gelatinous sample through the use "
write "liquid nitrogen. The sample is then broken, fracturing through the "
write "weaker cell wall to produce a cross section for examination under "
write "high magnification." ^ 
}

object ames: ames test
 inventory	name "Ames test"
 starts		limbo

{look_up_in_book
write "Ames test" ^
write "a test to determine the mutagenetic potential of a chemical compound. "
write "Nutrient broth is inoculated with the appropriate Salmonella strain "
write "and incubated overnight. The culture is then added to an agar plate "
write "along with the chemical to be tested in order to assess mutagenicity."
write ^^
write "When the culture is exposed to a mutagen, some of the bacteria undergo "
write "genetic changes due to chemical interactions resulting in reversion of "
write "bacteria to a non-histidine-requiring state. The reverted bacteria "
write "will then grow in the absence of exogenous histidine thus providing "
write "an indication of the potential of the suspect chemical to cause "
write "mutation." ^^
write "There is a good correlation between mutagenicity in Salmonella and "
write "carcinogenicity in more complex organisms." ^
}

object mutagen: mutagen mutagenic mutagenicity
 inventory	name "mutagen"
 starts		limbo

{look_up_in_book
write mutagen ^
write "any substance which causes a change in a gene or chromosome (see "
write "Ames test)." ^
}

object carcinogen: carcinogen carcinogenic carcinogenicity
 inventory	name "carcinogen"
 starts		limbo

{look_up_in_book
write carcinogen ^
write "any substance which tends to produce cancer in an organism." ^
}

object histidine: histidine histamine
 inventory	name "histidine"
 starts		limbo

{look_up_in_book
write histidine ^
write "[C3 H2 N2 CH2 CH(NH3+)COO-] occurring in proteins and converted into "
write "histamine (an essential amino acid in man), in most cells." ^
}

object senescence: senescence senescent
 inventory	name "senescence"
 starts		limbo

{look_up_in_book
write senescence ^
write "the process or condition of growing old or ageing. Biol. loss of the "
write "power of cell division and growth." ^
}

object sample: pale yellow liquid salmonella bacterial sample
 has		LIQUID
 inventory	a "quantity of pale yellow liquid"
 mass		2
 starts childof flask

{sniff
write "The pale yellow liquid smells sweet." ^
}

{examine
write "The liquid is a pale yellow colour and contains a nutrient broth "
write "inoculated with Salmonella, a Histidine requiring strain of bacteria. "
write "It is used when performing an Ames test on a suspect compound in order "
write "to test its mutagenic potential." 
if sample childof syringe
   if syringe has CUSTOM5
      write " The liquid appears to filled with many small bubbles."
endall
write ^
}

{inject_in_dish_2_override
proxy "inject yellow fluid in beige agar"
}

{inject_in_agar_2_override
write "You inject a small amount of the pale yellow liquid into the beige "
write "agar." ^
ensure agar_2 has CUSTOM1
}

{inject_in_dish_1_override
proxy "inject yellow fluid in brown agar"
}

{inject_in_agar_1_override
write "You inject a small amount of the pale yellow liquid into the brown "
write "agar." ^
ensure agar_1 has CUSTOM1
}

{pour_on_dish_2_override
proxy "pour yellow fluid on beige agar"
}

{pour_on_agar_2_override
write "You pour a small amount of the pale yellow liquid on to the beige "
write "agar." ^
ensure agar_2 has CUSTOM1
}

{pour_on_dish_1_override
proxy "pour yellow fluid on brown agar"
}

{pour_on_agar_1_override 
write "You pour a small amount of the pale yellow liquid on to the brown "
write "agar." ^
ensure agar_1 has CUSTOM1
}

{inject_in_lisa_override
write "If you aren't willing to inject the pale yellow liquid into yourself, "
write "then you obviously don't want to know what will happen badly enough." ^
}

{inject_in_player_override
write "You roll up your sleeve and inject the pale yellow liquid into a "
write "vein in your arm. Withdrawing the needle, then applying a firm "
write "pressure on the puncture, you begin to feel slightly dizzy. "
write "You arch over, standing with you hands on your knees, fighting "
write "the increasing feeling of nausea. Closing your eyes, you attempt "
write "to regain control of your heart rate"
endall
if syringe hasnt CUSTOM4
   if syringe hasnt CUSTOM5
      write ", actively calming yourself until you begin to feel more "
      write "composed. Relieved, you stand up straight again, wipe an "
      write "abundance of sweat from your brow then take several deep "
      write "breaths, reassuring yourself that you are indeed still alive." ^
      move sample to limbo
      break
endall
write " only to find your dizziness increase and stabbing pains cause your "
write "body to convulse. Dropping to your knees you begin to have trouble "
write "breathing and soon lose consciousness..." ^
execute "global_death"
}

{taste
write "You take a small sip of the pale yellow liquid which is slightly sweet."
write ^
}

{drink_override
set sample(location) = limbo
write "You drink the yellow liquid which is slightly sweet." ^
ensure sample has CUSTOM4
}

object microscope: zeiss phase contrast microscope scope
 inventory	a "phase-contrast microscope"
 
{hint
write "Once you have made a slide using the freeze fracture device, you "
write "can INSERT IT IN THE MICROSCOPE then LOOK THROUGH THE "
write "MICROSCOPE." ^
set TURN_WORKED = false
}

{examine
write "Made by Zeiss, the phase-contrast microscope is of a binocular design "
write "and is worth a small fortune. A slot in the base of the unit is "
write "designed to receive slides created using the freeze fracture device." ^
}

{look_through : look_in : use
set noun4 = slot
execute "global_noun4_contents"
if INDEX = false
   write "With no slide in the microscope, you see nothing of interest." ^
   break
endif
write "You look into the microscope's eye pieces, slightly adjusting the "
write "focusing control until the image becomes crisp." ^^
if blue_slide childof slot
   write "The fragmented cell wall and internal structure indicate that "
   write "the Salmonella bacteria has died from a histidine deficiency. This "
   write "result is exactly as would be expected since this strain of "
   write "Salmonella is chosen specifically for Ames testing due to its "
   write "dependence on histidine for survival." ^
   break
endif
if purple_slide childof slot
   write "The fragmented cell wall and internal structure indicate that "
   write "the Salmonella bacteria has died from a histidine deficiency. This "
   write "result is exactly as would be expected since this strain of "
   write "Salmonella is chosen specifically for Ames testing due to its "
   write "dependence on histidine for survival." ^
   break
endif
if red_slide childof slot
   write "The slide is mostly blank, devoid of any bacterial sample." ^
   break
endif
if cyan_slide childof slot
   write "The slide is mostly blank, devoid of any bacterial sample." ^
   break
endif
if white_slide childof slot
   write "The slide is mostly blank, devoid of any bacterial sample." ^
   break
endif
if green_slide childof slot
   write "The fragmented cell wall and internal structure indicate that "
   write "the Salmonella bacteria has died from a histidine deficiency. "
   write "From this you conclude that the clear liquid does not act as a "
   write "mutagen and is therefore unlikely to be the cause of the deaths "
   write "observed in the local marine life. Some of the cells, however, "
   write "appear larger with thicker cell walls indicating the onset of "
   write "senescence. This is an odd phenomenon due to the short period "
   write "of incubation and the rate at which death due to the absence of "
   write "histidine would occur. In other words, the cells should have "
   write "died long before they grew old." ^ 
   if fuel hasnt SCORED
      points 10
      ensure fuel has SCORED
}

object slot: zeiss phase contrast microscope slot scope
 inventory	a "microscope slot"
 starts childof microscope

{examine
execute "global_noun1_contents"
if INDEX = 0
   write "The slot in the base of the microscope is empty." ^
   break
endif
write "The slot in the base of the microscope contains " noun3 .^
}

object device: freeze fracture device machine
 inventory	a "freeze fracture device"

{hint
write "Once you have put a substance in one of the petri dishes for testing, "
write "open the compartment on the freeze fracture device and put the dish "
write "in it. Once this is done, close the compartment and press the square "
write "button. A slide will then pop out on to the desk which can be viewed "
write "using the microscope." ^
set TURN_WORKED = false
}

{examine
write "A very impressive looking piece of hardware, the device was supplied "
write "to you upon your request at great expense to the military. On the top " 
write "surface of the device there is a square button which, when pressed, "
write "causes a freeze fracture slide to be produced from any sample placed "
write "within the small circular compartment next to it. "
set noun1 = compartment
execute "global_details"
}

{look_up_in_book
execute "look_up_in_book_fracture"
}

object button: square button
 inventory	a "square button"
 
{press : move
set noun4 = compartment
execute "global_noun4_contents"
if compartment hasnt CLOSED
   write "Three high pitched beeps, reminding you that the compartment is "
   write "still open, are your only reward." ^
   break
endif
if INDEX = 0
   write "A petri dish must be in the compartment in order to make a slide."
   write ^
   break
endif
write "A gentle hissing noise is followed by an electric whirr, a rather "
write "alarming chunking sound, then a triumphant beep. Moments later a "
set noun4 = noun3
execute "global_noun4_contents"
if noun3 has CUSTOM2
   if noun3 has CUSTOM1
      write "green slide"; Salmonella and clear liquid.
      move noun3 to limbo
      move noun4 to limbo
      move green_slide to bench
   endif
   if noun3 hasnt CUSTOM1
      write "white slide"; Only clear liquid.
      move noun3 to limbo
      move noun4 to limbo
      move white_slide to bench
endall
if noun3 hasnt CUSTOM2
   if noun3 hasnt CUSTOM1
      if cyan_slide(location) != limbo
         write "red slide"; Nothing at all.
         move noun3 to limbo
         move noun4 to limbo
         move red_slide to bench
endall
if noun3 hasnt CUSTOM2
   if noun3 hasnt CUSTOM1
      if cyan_slide(location) = limbo
         write "cyan slide"; Nothing at all.
         move noun3 to limbo
         move noun4 to limbo
         move cyan_slide to bench
      endif
   endif
   if noun3 has CUSTOM1
      if purple_slide(location) != limbo
         write "blue slide"; Salmonella only.
         move noun3 to limbo
         move noun4 to limbo
         move blue_slide to bench
      endif
      if purple_slide(location) = limbo
         write "purple slide"; Salmonella only.
         move noun3 to limbo
         move noun4 to limbo
         move purple_slide to bench
endall
write " pops out on to the work bench from an opening on the side of the "
write "device." ^
}

object compartment: compartment drawer
 has		CLOSABLE CLOSED CONTAINER
 inventory	a "compartment"
 starts	childof device
 quantity	6

{examine
write "The compartment is circular in shape, designed to receive a petri dish "
write "whose contents are to be made into a slide for the microscope. "
execute "global_details"
}

location pool:
 east		quarters
 north		control_centre
 south		lab
 west		storage
 down		surface
 go_down	"You carefully descend the ladder into the water."
 no_go		"You can either go in one of the cardinal directions or down, into the pool."

{look
if here has VISITED
   write "You are now back at the docking pool." ^
   break
endif
write "In the centre of the floor here there is a large circular opening. The "
write "surface of the lagoon sloshes gently against the internal walls of "
write "the opening less than a metre beneath your feet. A stainless steel "
write "ladder runs down, disappearing beneath the surface of the water while "
write "doorways allow passage in the four cardinal directions." ^
}

object dock: docking pool
 inventory	a "docking pool"

{examine
write "The docking pool is nothing more than a large circular opening in the "
write "floor. The surface of the lagoon can be seen through it about a metre "
write "below your feet." ^
}

{enter
proxy "d"
}

object ladder: steel ladder
 inventory	a "steel ladder"

{climb_down
if here = pool
   proxy "down"
   break
endall
if here = surface
   proxy "down"
   break
endall
if here = beneath_outpost
   write "The ladder only leads up from here." ^
   set TURN_WORKED = false
}

{climb_up
if here = pool
   write "You are already at the top of the ladder." ^
   set TURN_WORKED = false
   break
endall
if here = surface
   proxy "up"
   break
endall
if here = beneath_outpost
   proxy "up"
}

{climb
if here = pool
   proxy "down"
   break
endall 
if here = surface
   proxy "up"
   break
endall
if here = beneath_outpost 
   proxy "up"
}

{examine
write "The stainless steel ladder leads "
if here = pool
   write "down into the water." ^
   break
endif
if here = surface
   write "both back up into the outpost and further down under the water." ^
   break
endif
if here = beneath_outpost
   write "back up into the outpost." ^
   break
endif
}

object opening: large circular opening
 inventory	a "large circular opening"

{examine
execute "examine_dock"
}

{enter
proxy "go down"
}

location surface:
 has		ON_WATER
 down		beneath_outpost
 up		pool
 go_up		"With great effort you heave yourself up the ladder."
 no_go		"Up and down are your only options from here."

{look
if here has VISITED
   write "You are, once again, floating on the surface of docking pool." ^
   break
endif
write "You are bobbing on the surface of the lagoon, surrounded by a circular "
write "wall. A stainless steel ladder runs up from here into the research "
write "outpost." ^
}

{look_down
write "The ladder descends further down, into the water." ^
}

location beneath_outpost:
 has		UNDER_WATER WITHOUT_AIR OUTDOORS
 up		surface
 north		lagoon_bottom
 no_down	"The lagoon is not that deep at this point."
 no_go		"The lagoon opens up to the north towards the open ocean."

{look
if here has VISITED
   write "You are floating in the water beneath the outpost." ^
   break
endif
write "You are floating in the warm waters of the lagoon. The white sandy "
write "floor "
if mask hasnt WORN
   write "can barely be made out below, dimmed by the shadow of the research "
   write "outpost floating above. The blurry form of the ladder can be seen "
   write "within reach, guiding you back up out of the water." ^
   break
endall
write "can be seen below, dimmed by the shadow of the research outpost "
write "floating above. There is a stainless steel ladder within reach that "
write "leads up, out of the water." ^
} 

{first_hint
write "You can only hold you breath for a few turns so you will need to "
write "use the scuba gear if you want to swim very deep." ^
set TURN_WORKED = false
}

{third_hint
write "Once you are carrying at the SCUBA gear:" ^^
write "  >OPEN THE TAP" ^
write "  >WEAR THE TANK" ^
write "  >WEAR THE MASK" ^
write "  >WEAR THE FINS" ^
set TURN_WORKED = false
}

object s_water: surrounding sea water
 has LIQUID
 inventory	the "surrounding sea water"

{taste
write "Salty, as you would expect." ^
}

{drink_override
write "Given the fact that the water surrounding the island is almost "
write "certainly contaminated, that probably isn't such a good idea." ^
set TURN_WORKED = false
}

object q_s_water: quantity of sea water
 has		LIQUID
 inventory	a "quantity of sea water"
 starts		limbo
 mass		2

{taste
write "Salty, as you would expect." ^
}

{drink_override
write "Given the fact that the water surrounding the island is almost "
write "certainly contaminated, that probably isn't such a good idea." ^
set TURN_WORKED = false
}

{pour_on_contents
write "The dark brown stain doesn't appear to be water soluble." ^
}

{pour_on_label : pour_on_drum
write "If you are trying to soak the label off, don't bother, you really "
write "don't need it." ^
}

location lagoon_bottom:
 has		UNDER_WATER WITHOUT_AIR OUTDOORS
 up		lagoon_surface
 north		mid_water
 south		beneath_outpost
 no_east	"The base of the east head prevents your progress."
 no_west	"The base of the west head prevents your progress."
 no_down	"You are already on the bottom of the lagoon."

{look
if here has VISITED
   write "Once again, you are floating beneath the surface of the lagoon." ^
   break
endif
if mask hasnt WORN
   write "The shadowy image of the ground seems darker here, gently rising to "
   write "the south. To the north the ground appears to drop off, eventually "
   write "disappearing from sight all together." ^
   break
endall
write "The floor of the lagoon is rockier here, gently rising to the south. "
write "To the north a sharp drop-off marks the threshold to the deeper seas "
write "of the open ocean." ^
}

location lagoon_surface:
 has		ON_WATER OUTDOORS
 down		lagoon_bottom
 north		ocean_surface
 west		beach
 southwest	beach
 no_south	"There is no way to enter the outpost from here."
 no_up		"Kicking as hard as you can, you can't manage to muster the strength required to achieve escape velocity and leave the water."

{look
if here has VISITED
   write "You are back, floating on the surface of the lagoon." ^
   break
endif
write "The red tropical sun warms your face pleasingly as you float on the "
write "surface of the lagoon. A small sandy beach stretches southward of the "
write "west head while the research outpost can be seen floating to the "
write "south." ^
}

location ocean_surface:
 has		ON_WATER CUSTOM5 OUTDOORS
 down		mid_water	
 no_go		"Straying that far from the lagoon is not advisable."
 no_up		"Kicking as hard as you can, you can't manage to muster the strength required to achieve escape velocity and leave the water."
 no_south	"The rock wall is quite impenetrable."
 no_southwest	"The rock wall is quite impenetrable."
 no_southeast	"The rock wall is quite impenetrable."
 north		ocean_surface
 south		ocean_surface
 east		ocean_surface
 west		ocean_surface
 northeast	ocean_surface
 northwest	ocean_surface
 southeast	ocean_surface
 southwest	ocean_surface
 no_in		"You can't go that way."
 no_out		"You can't go that way."

{look
write "You are floating on the surface of the ocean. "
if LATITUDE < 30
   write "There is nothing but water from horizon to horizon in every " 
   write "direction." ^
   break
endall
if LATITUDE < 35 
   write "The island can be made out some distance to the south." ^
   break
endall
if LATITUDE < 40
   write "The island can be made out not far to the south." ^
   break
endall
if LONGITUDE = 36
   write "To the south, in between the heads, you can enter the lagoon." ^
   break
endall
write "The tall rocky cliffs of the north side of the island block your "
write "way to the south." ^
}

{first_hint
write "Unless you know exactly where you are going, you are unlikely to find "
write "anything of interest." ^
set TURN_WORKED = false
}

{second_hint
write "Once you know where you are going, you will need to use the GPS unit "
write "to navigate your way there." ^
set TURN_WORKED = false
}

{third_hint
execute "global_navigation"
set TURN_WORKED = false
}

location ocean_bottom:
 has		UNDER_WATER WITHOUT_AIR CUSTOM5 OUTDOORS
 no_go		"Straying that far from the lagoon is not advisable."
 no_in		"You can't go that way."
 no_out		"You can't go that way."
 no_down	"You are already on the bottom."
 up		mid_water
 north		ocean_bottom
 south		ocean_bottom
 east		ocean_bottom
 west		ocean_bottom
 northeast	ocean_bottom
 northwest	ocean_bottom
 southeast	ocean_bottom
 southwest	ocean_bottom
 no_south	"The rock wall is quite impenetrable."
 no_southwest	"The rock wall is quite impenetrable."
 no_southeast	"The rock wall is quite impenetrable."

{look
write "Hovering just above the ocean floor, you can see no sign of the surface "
write "above you. The fine silt and sand is marked only occasionally by an "
write "indiscriminate rock or scattered debris. "
if LATITUDE = 40
   write "An almost shear wall of rock bars your progress south." ^
   break
endall
write "There is nothing but water to the limit of visibility in every "
write "direction." ^
}

{look_up
write "Filtered through the mass of water above your head, the sunlight "
write "here is noticeably subdued." ^
}

{first_hint
write "Unless you know exactly where you are going, you are unlikely to find "
write "anything of interest. It may also be helpful to note that the deeper "
write "you are when you go scuba diving, the more quickly you use your air." ^
set TURN_WORKED = false
}

{second_hint
write "Once you know where you are going you will need to use the GPS to "
write "navigate your way there." ^
set TURN_WORKED = false
}

{third_hint
execute "global_navigation"
set TURN_WORKED = false
}

object debris: rock debris
 inventory	the "debris"

location mid_water:
 has		UNDER_WATER WITHOUT_AIR CUSTOM5 MID_WATER OUTDOORS
 north		mid_water
 south		lagoon_bottom
 east		mid_water
 west		mid_water
 northeast	mid_water
 northwest	mid_water
 southeast	mid_water
 southwest	mid_water
 down		mid_water
 no_out		"You can't go that way."
 no_go		"Straying that far from the lagoon is not advisable."

{look
if tank has WORN
   write "With your buoyancy finely adjusted, you float effortlessly in mid "
   write "water. "
endif
if tank hasnt WORN
   write "Gently waving your arms to stay as still as possible, you are "
   write "floating beneath the surface of the ocean. "
endif
if mask has WORN
   write "A wide variety of marine life darts this way and that providing "
   write "you with a show of unparalleled beauty. "
endall
if mask hasnt WORN
   write "A multitude of different sized shapes swirl around you, blurred "
   write "by the salty sea water in your eyes. " 
endall
if CURRENT_DEPTH = 5
   write "Sunlight dances brightly on the choppy surface of the water several "
   write "metres above your head. "
endall
if CURRENT_DEPTH > 5
   if CURRENT_DEPTH < 20
      write "Sunlight filters down from above giving the water an eerie blue "
      write "glow. "
endall
if CURRENT_DEPTH > 15
   if CURRENT_DEPTH < 35 
      write "Filtered through the mass of water above your head, the sunlight "
      write "here is noticeably subdued. "
endall
if CURRENT_DEPTH = 35
   write "Looking down, you can now begin to make out the sandy form of the "
   write "ocean floor. "
endall
if LATITUDE = 40
   if LONGITUDE = 36 
      if CURRENT_DEPTH = 5 
         write "To the south you can see the edge of a shelf running in "
         write "between the two heads of the lagoon." ^
         break
endall
if LATITUDE = 40
   write "An almost shear wall of rock bares your progress south." ^
   break
endall
if CURRENT_DEPTH = 35
   write ^
   break
endif
write "There is nothing but water to the limit of visibility in every "
write "direction. " ^
} 

{look_up
if CURRENT_DEPTH = 5
   write "Sunlight dances brightly on the choppy surface of the water several "
   write "metres above your head." ^
   break
endif
if CURRENT_DEPTH < 20
   write "Sunlight filters down from above giving the water an eerie blue "
   write "glow." ^
   break
endif 
write "Filtered through the mass of water above your head, the sunlight "
write "here is noticeably subdued." ^
}

{look_down
if LONGITUDE = 15
   if LATITUDE = 21
      if CURRENT_DEPTH = 35
         write "You can see tall rock formation on the ocean floor." ^
         break
endall
if CURRENT_DEPTH = 35
   write "Looking down, you can now begin to make out the sandy form of the "
   write "ocean floor." ^
   break
endif
write "You see nothing other than deep blue water." ^
}

{first_hint
write "Unless you know exactly where you are going, you are unlikely to find "
write "anything of interest. It may also be helpful to note that the deeper "
write "you are when you go scuba diving, the more quickly you use your air." ^
set TURN_WORKED = false
}

{second_hint
write "Once you know where you are going, you will need to use the GPS to "
write "navigate your way there." ^
set TURN_WORKED = false
}

{third_hint
execute "global_navigation"
set TURN_WORKED = false
}

object sea_life: sea marine life fish
 inventory the "marine life"

{examine
write "The marine life, mostly various species of fish, never fails to amaze "
write "you with its wondrous variety of colours and shapes." ^
}

{take
write "They dart elusively out of the way as you grab." ^
}

{attack
write "They dart elusively out of the way." ^
}

object wall: rock wall cliff cliffs
 inventory	a "rock wall"

{examine
write "Many nooks and crannies make the rock wall a haven for all types of "
write "marine life." ^
}

{climb
if here = ocean_surface
   write "You would be torn to shreds by the waves if you attempted to climb "
   write "the wall out of the water." ^
   set TURN_WORKED = false
   break
endif
proxy "up"
}

location site:
 has		UNDER_WATER WITHOUT_AIR CUSTOM5 OUTDOORS
 no_down	"You are already on the bottom."
 no_in		"A suicide mission you decide not to accept, Jim."
 up		mid_water
 north		ocean_bottom
 south		ocean_bottom
 east		ocean_bottom
 west		ocean_bottom
 northeast	ocean_bottom
 northwest	ocean_bottom
 southeast	ocean_bottom
 southwest	ocean_bottom

{look
if here has VISITED
   write "You have arrived back at the rock formation." ^
   break
endif
write "A large rock formation breaks up the monotony of the ocean floor "
write "here. Water stretches out in every direction as far as the eye "
write "can see." ^
}
 
{look_up
write "Filtered through the mass of water above your head, the sunlight "
write "here is noticeably subdued." ^
}

{wave
if WORK_PHASE > 0
   if WORK_PHASE < 5
      write "Waving your arms wildly, "
      execute "global_attention"
endall
break false
}

{first_hint
write "Just wait and keep out of sight." ^
set TURN_WORKED = false
}

{second_hint
write "When the divers eventually go, they will accidentally leave something "
write "behind. You will only be able to see this, however, if you are "
write "wearing the scuba mask." ^
set TURN_WORKED = false
}

{third_hint
write "Once the divers have gone (providing you are wearing the mask), "
write "simply TAKE THE VIAL." ^
set TURN_WORKED = false
}

object rock: rock formation
 inventory	a "rock formation"

{examine
write "Standing upright on the ocean floor, the rock formation looks very "
write "much like something, you just aren't quite sure what. Its multitude "
write "of crags and protrusions spark your imagination, its likeness shifting "
write "in your mind from that of a kneeling man to a gnarled coastal tree, "
write "then back to a plain old rock." ^
}

{look_behind
if WORK_PHASE = 0
   write "Just more water." ^ 
   break
endif
}

object submarine: small submarine sub
 has		OUT_OF_REACH
 inventory	a "small submarine"
 described	"A small submarine hovers just off the ocean floor beyond the rock formation."
 mass		heavy
 starts		limbo

{hint
write "There is nothing you can do with the submarine, just wait quietly for "
write "it to leave." ^
set TURN_WORKED = false
}

{examine
write "The sleek black submarine is about six metres long. Its many propellers "
write "whirr constantly as its pilot attempts to keep it hovering still in "
write "the capricious currents. A powerful spotlight shines down from its "
write "underside, brightly illuminating the area where the divers are "
write "working. The cargo hold into which they are attempting to load the "
write "canisters is accessed via an opening in its aft end, while passengers "
write "enter and exit through a rectangular opening along its underside. "
write "The only other notable feature of the submarine is that it is "
write "completely devoid of any identifying markings." ^
}
 
{enter
proxy "in"
}

{take
write "The submarine is not THAT small!" ^
set TURN_WORKED = false
}

object rec_opening: rectangular opening
 inventory	a "rectangular opening"

{examine
write "The rectangular opening is where the divers enter and exit the "
write "submarine." ^
}

{enter
proxy "in"
}

object aft_opening: aft opening
 inventory	the "aft opening"

{examine
write "The divers are loading the canisters into the submarine's interior "
write "through the aft opening." ^
}

{enter
proxy "in"
}

object canister: mysterious canister canisters
 has		OUT_OF_REACH
 inventory	a "mysterious canister"

{examine
write "The canisters are cylindrical in shape and completely smooth except for "
write "a small clip at one end. Their brushed steel exteriors shine brightly "
write "indicating the brevity of their visit to the ocean floor."
write ^
}

{open : take
write "There is no way for you to get close enough to the canister without "
write "being seen by the divers (which is probably not something that you "
write "want to have happen considering the fact that they all have spear "
write "guns)." ^
}

object vial: small glass vial vials
 has		OUT_OF_REACH
 described	"There is a small glass vial here."
 inventory	a "small glass vial"
 mass		4
 quantity	2
 starts		limbo

{take
if divers(location) = here
   write "There is no way you could get the small glass vial without being "
   write "seen by the divers." ^
   set TURN_WORKED = false
   break
endif
break false
}

{take_override
write "You take the small glass vial." ^
ensure noun1 has TOUCHED
move vial to player
if vial hasnt SCORED
   points 10 
   ensure vial has SCORED
}

{show_to_lisa
proxy "ask lisa about vial"
}

{show_to_wise
write "~Give me a closer look at it,~ Wise says holding out his hand." ^
}

{give_to_wise
write "~I think I'll hang on to this for now,~ Wise informs you as be "
write "places the vial into his top pocket." ^
move vial to wise
}

{examine
if vial !childof player
   write "The small glass vial is both small and made from glass." ^
   break
endif
write "The small glass vial has a metal rim at one end. A "
write "rubber membrane is stretched inside this metal rim in a fashion "
write "similar to the containers used to store pharmaceutical substances for "
write "injection. "
if fuel childof vial
   write "Inside the vial you can see a clear liquid."
else
   write "The vial is now empty."
endif
write ^
}

{shake
if fuel childof vial
   write "The clear liquid sloshes around inside the vial." ^
   break
endif
write "This achieves little." ^
}

{open
write "The vial has been designed in such a way that it never needs to be "
write "opened, thus remaining free from contaminants. Its contents would "
write "typically be extracted through the membrane with the use of a syringe."
write ^
}

{break
write "It is neither necessary nor desirable to break open the vial." ^
}

{show_to_stranger
if vial has CUSTOM5
   write "The stranger just ignores you." ^
   break
endif 
write "~I have monitored the transport of many vials such as the one you "
write "have discovered. I can not tell you much about them, as their exact "
write "source is still as yet unknown. This is mainly due to the "
write "extraordinary lengths that the couriers have gone to in order to "
write "conceal their transport route.~" ^
}

{show_to_zuckerman
if vial has CUSTOM3
   write "That would be a waste of time." ^
   set TURN_WORKED = false
   break
endif
write "~Oh. You have one too...~ Dr Zuckerman says with a smile." ^
set TOPICS_DISCUSSED + 1
}

{inject_with_syringe
proxy "fill syringe from vial"
}

object membrane: rubber membrane
 inventory	a "rubber membrane"
 starts childof vial

{examine
write "The rubber membrane is stretched out inside a metal rim at one end "
write "of the vial allowing its contents to be extracted with the use of a "
write "syringe." ^
}

{break
write "It is neither necessary nor desirable to break the rubber membrane." ^
}

object fuel: small quantity of perfectly clear liquid
 has		LIQUID OUT_OF_REACH
 inventory	a "small quantity of clear liquid"
 mass		2
 starts childof vial

{examine
write "The liquid is perfectly clear."
if fuel childof syringe
   if fuel has CUSTOM5
      write " It appears to be filled with many small bubbles."
endall
write ^
}

{inject_in_player_override
write "You roll up your sleeve and inject the pale yellow liquid into a "
write "vein in your arm. Withdrawing the needle, then applying a firm "
write "pressure on the puncture, you begin to feel slightly dizzy. "
write "You arch over, standing with you hands on your knees, fighting "
write "the increasing feeling of nausea. Closing your eyes, you attempt "
write "to regain control of your heart rate"
endall
if syringe hasnt CUSTOM4
   if syringe hasnt CUSTOM5
      write ", actively calming yourself until you begin to feel more "
      write "composed. Relieved, you stand up straight again, wipe an "
      write "abundance of sweat from your brow then take several deep "
      write "breaths, reassuring yourself that you are indeed still alive." ^
      move fuel to limbo
      set AGING_SCRIPT = true
      break
endall
write " only to find your dizziness increase and stabbing pains cause your "
write "body to convulse. Dropping to your knees you begin to have trouble "
write "breathing and soon lose consciousness..." ^
execute "global_death"
}

{taste
write "The clear liquid tastes indescribably foul." ^
}

{drink_override
write "The clear liquid tastes indescribably foul." ^
move fuel to limbo
set AGING_SCRIPT = true
}

{sniff
write "The clear liquid smells sort of musty or stale." ^
}

{inject_in_vial_override
write "You puncture the rubber membrane with the tip of the needle and "
write "inject the clear liquid back into the vial." ^
move fuel to noun2
ensure fuel has OUT_OF_REACH
}

{inject_in_dish_1_override
proxy "inject clear fluid in brown agar"
}

{inject_in_agar_1_override
write "You inject the clear liquid into the brown agar." ^
move fuel to limbo
ensure agar_1 has CUSTOM2
}

{inject_in_dish_2_override
proxy "inject clear fluid in beige agar"
}

{inject_in_agar_2_override
write "You inject the clear liquid into the beige agar." ^
move fuel to limbo
ensure agar_2 has CUSTOM2
}

{inject_in_lisa_override
write "If you aren't willing to inject the clear liquid into yourself, then "
write "you obviously don't want to known what will happen badly enough." ^
set TURN_WORKED = false
}

{pour_on_dish_2_override
proxy "pour clear liquid on beige agar"
}

{pour_on_dish_1_override
proxy "pour clear liquid on brown agar"
}

{pour_on_agar_2_override
write "You pour the clear liquid onto the beige agar." ^
ensure agar_2 has CUSTOM2
move fuel to limbo
}

{pour_on_agar_1_override
write "You pour the clear liquid onto the brown agar." ^
ensure agar_1 has CUSTOM2
move fuel to limbo
}

object divers: divers
 has		OUT_OF_REACH PLURAL ANIMATE
 inventory	the "divers"

{wave_at : greet
execute "wave_site"
}

{yell_at
write "Yelling, as well as you can underwater, "
execute "global_attention"
}

{examine
write "Working quickly and efficiently, the divers' tightly coordinated "
write "efforts make obvious their high level of training." ^
}

{attack
write "I should probably mention at this point that each of the divers is "
write "armed with a spear gun, so attacking them is a sure-fire way to end "
write "up dead." ^
}

location walkway:
 has		OUTDOORS
 east		nowhere
 west		beach
 no_east	"You bang your head on the closed steel door."
 no_go		"The walkway runs east-west."

{look
if here has VISITED
   write "You are standing on the walkway." ^
   break
endif
write "Keeping a wide stance to help stabilise yourself, you are standing "
write "on a floating walkway that leads from the research outpost in the "
write "east, to the shore of the lagoon in the west. "
if steel_door has CLOSED
   write "The door leading into the outpost is closed." ^
   break
endall
write "The door leading into the outpost is open." ^
}

{jump
write "It's hard enough to keep your balance without jumping up and down." ^
}

object walkway_obj: floating walkway
 inventory	a "floating walkway"

{examine
write "The floating walkway leads from the west shore of the lagoon to the "
write "research outpost." ^
}

object outpost_obj: research outpost
 inventory	a "research outpost"

{examine
if here = beach
   write "The research outpost is floating near the centre of the lagoon. A "
   write "long walkway connects to the beach where you are standing." ^
   break
endif
write "The research outpost is floating near the centre of the lagoon. A "
write "long walkway connects it to a beach on the west shore." ^
}

{enter
proxy "e"
}

object lagoon_obj: calm lagoon shore
 inventory	a "lagoon"

{enter
proxy "ne"
}

{examine
write "The lagoon is moderately calm and sheltered." ^
}

location beach:
 has		OUTDOORS
 east		walkway
 northeast	lagoon_surface
 south		trail
 no_north	"The west head of the lagoon bars your progress."
 no_west	"The bank is too steep and the palms too dense."
 no_go		"You can either walk south along the trail or east on to the walkway."

{look
if here has VISITED
   write "You have returned to the beach on the west shore of the lagoon." ^
   break
endif
write "You are standing on a beach that lines the west shore of the lagoon. "
write "Further to the west, the afternoon sun filters through a wall of tall "
write "palms that lines the bank of a steeply rising hill. To the south the "
write "beach narrows, eventually becoming nothing more than a meandering "
write "trail that gradually disappears into the jungle. A long walkway leads "
write "east from here, out across the calm waters of the lagoon to where the "
write "research outpost floats." ^
}

{listen
write "You hear the soothing sound of the lagoon waters washing up on to the "
write "beach." ^
}

object hill: steeply rising hill
 inventory	a "steeply rising hill"

{climb : enter
write "The hill is far too steep for you to climb." ^
}

object palms: palm palms tree trees
 has		PLURAL
 inventory 	the "palms"

{examine
write "The afternoon sun filters through the wall of tall palms." ^
}

{climb
write "And look for coconuts no doubt." ^
set TURN_WORKED = false
}

location trail:
 has		OUTDOORS
 north		beach
 go_north	"You follow the trail for several minutes over a gentle rise, finally arriving at the shore of the lagoon."
 go_south	"The trail winds its way through the jungle for several minutes before opening out at an estuary."
 south		estuary
 no_go		"Strange noises and rustlings convince you to stick to the trail."

{look
if here has VISITED
   write "You are back on the narrow trail." ^
   break
endif
write "You are on a narrow trail that winds its way north-south through the "
write "jungle. Weird and wonderful noises fill the air; some you recognise, "
write "some you don't." ^
}

{listen
write "Strange noises emanate from the surrounding jungle. None that entice "
write "you to investigate, however." ^
}

{smell
write "The sweet smell of tropical flowers hangs in the air." ^
}

object butteryfly: butterfly
 starts		limbo

location estuary:
 has		OUTDOORS
 north		trail
 east		compound
 northwest	hill
 up		hill
 south		south_beach

{look
if here has VISITED
   write "You have arrived back at the estuary." ^
   break
endif
write "The jungle thins and the trail fades as they approach the "
write "south shore of the island. Sparkling water flows down a sandy "
write "estuary from the northwest, bending to the south as it "
write "traverses the gentle slope towards the ocean. To the east lies the "
write "compound of the main military base." ^
} 

object estuary_obj: sandy estuary
 inventory	a "sandy estuary"

{examine
write "Sparkling water flows down the sandy estuary from the northwest, "
write "bending to the south as it traverses the gentle slop towards the "
write "ocean." ^
}

location behind_hangar:
 has		OUTDOORS
 southwest	south_beach
 up		on_crate

{look
if here has VISITED
   write "You are behind the hangar again." ^
   break
endif
write "Scattered coastal bushes provide minimal cover from sight here behind "
write "the hangar. Up against the back wall of the hangar there is a "
write "rectangular crate." ^
}

{first_hint
write "Examine the crate then climb on to it." ^
set TURN_WORKED = false
}

{second_hint
write "If the crate was up-ended, it would divide the height of the hangar "
write "into two manageable steps." ^  
set TURN_WORKED = false
}

{third_hint
write "Just type: " ^^
write "  >TIP CRATE OVER" ^
write "  >UP" ^
write "  >UP" ^
set TURN_WORKED = false
}

{jump
proxy "up"
}

object rect_crate: rectangular crate
 has		SURFACE
 inventory	a "rectangular crate"

{open
write "There is no obvious way to open the crate." ^
}

{move
write "The crate is far too heavy to push along the ground." ^
}

{up_end : turn
if rect_crate has CUSTOM4
   write "You lean your weight against the crate and tip it back on to its "
   write "side"
   ensure rect_crate hasnt CUSTOM4
   set on_crate(up) = nowhere
   set roof_south(down) = nowhere
   execute "global_contents_tumble"
   break
endif
write "Squeezing your fingers under the end of the crate, you manage to "
write "tip it up on to its end"
execute "global_contents_tumble"
ensure rect_crate has CUSTOM4
if rect_crate hasnt SCORED
   points 5
   ensure rect_crate has SCORED
endif
set on_crate(up) = roof_south
set roof_south(down) = on_crate 
}

{global_contents_tumble
set INDEX = 0 
loop
  if noun3(location) = on_crate
     if noun3(mass) < heavy
        set INDEX + 1
  endall
endloop
if INDEX = 0 
   write .^
   break
endall
write " causing "
loop
  if noun3(location) = on_crate
     if noun3(mass) < heavy
        set INDEX - 1
        write noun3(inventory)
        move noun3 to here
        execute "global_object_info"
        execute "global_list_structure"
        if INDEX = 0
           write " to tumble on to the ground." ^
           break
  endall
endloop
}

{examine
if rect_crate hasnt CUSTOM4
   write "The crate is resting up against the back wall of the hangar and is "
   write "about six feet wide and three feet tall." ^
   break
endif
write "The crate is resting up against the back wall of the hangar and is "
write "about three feet wide and six feet tall." ^
}

{climb : jump_on : enter
proxy "up"
}

{look_behind
write "Although very close to the back wall of the hangar, there is just "
write "enough room to see in behind the crate. Shielding your eyes until they "
write "adjust to the dark, you come to see that there is nothing there but "
write "bare wall." ^
}

object hangar_obj1: hangar large building
 inventory	a "hangar"

{enter
write "The entrance to the hangar is around the front at the north end." ^
}

location on_crate:
 has		OUTDOORS
 down		behind_hangar
 up		nowhere
 no_up		"The roof of the hangar, still another ten feet above the top of the crate, is out of your reach."
 go_up		"You jump up and hook your fingers over the edge of the guttering then pull yourself on to the roof."

{look
if here has VISITED
   write "You are standing on the crate." ^
   break
endif
write "You are standing on top of the rectangular crate with the ground "
if rect_crate hasnt CUSTOM4
   write "three feet below. The back wall of the hangar looms up over ten "
   write "feet taller than the top of the crate." ^
endif
if rect_crate has CUSTOM4
   write "six feet below. The back wall of the hangar stretches up another "
   write "seven feet taller than the top of the crate." ^
endif
}

{jump
proxy "up"
}

object hangar_obj3: large hangar building
 inventory	a "large hangar"

{climb
proxy "up"
}

{examine
if rect_crate hasnt CUSTOM4
   write "The hangar looms tall above you, its roof still another four or "
   write "five feet above your head." ^
   break
endif
write "The hangar wall stretches up beside you another seven feet above the "
write "top of the crate." ^
}

object rect_crate_2: rectangular crate crate
 inventory	a "rectangular crate"

{climb
proxy "down"
}

{up_end : turn
write "You can't tip the crate up while you are standing on it." ^
set TURN_WORKED = false
}

location roof_north:
 has		OUTDOORS
 south		roof_south	
 down		hangar_north
 no_down	"Without the rope tied to the ventilation pipe, the drop down to the floor is too far."
 go_down	"Cautiously you lower yourself down the rope."

{look
if here has VISITED
   write "You are crouching down at the north end of the hangar's roof." ^
   break
endif
write "You are near the north end of the hangar's roof, crouching down "
write "below the ridge line in order not to be seen. A square section of "
write "sheeting has been removed beside a ventilation pipe creating an "
write "opening large enough for you to pass through into the hangar's "
write "interior."
if rope childof vent
   write " A length of rope has one end tied to the ventilation pipe with "
   write "the other dangling down through the opening."
endif
write ^ 
}

{look_down
proxy "look through opening"
}

{listen
if lisa has BURNING
   write "Listening as carefully as you can, you are unable to make out what "
   write "the people below are saying." ^
   break
endif
write "You can hear what sounds like intermittent foot steps coming from "
write "within the hangar." ^
}

{jump : stand
write "Are you mad? You would be spotted a mile away if you did that." ^
}

object vent: vent ventilation pipe
 inventory	a "ventilation pipe"

{examine
write "The ventilation pipe protrudes about half a metre from the roof of "
write "the hangar and is capped with a galvanised cone to prevent rain from "
write "entering."
if rope childof vent
   write " A length of rope has one end tied around the ventilation pipe and "
   write "the other dangling down through the opening."
endif
write ^
}

object rope: length of rope
 has		CUSTOM5
 inventory	a "length of rope"
 described	"There is a length of rope here."
 mass		scenery; When untied, set mass to 10, allowing it to be taken.
 starts	childof	vent

{examine
write "The length of rope is quite thick and sturdy and about ten metres long."
if rope childof vent
   write " One end of the rope is tied around the ventilation pipe with the "
   write "other dangling down through the opening."
endif
write ^
}

{pull
if rope childof vent
   proxy "untie rope"
   break
endif
break false
}

{tie_to_vent
set rope(mass) = scenery
move rope to vent
move rope_end to hangar_north
set roof_north(down) = hangar_north
write "You tie the rope to the ventilation pipe allowing the other end to "
write "dangle down through the opening." ^
}

{untie
set rope(mass) = 10
move rope to here
move rope_end to limbo
set roof_north(down) = nowhere
write "You untie the rope from the ventilation pipe and pull the other end up "
write "onto the roof." ^
}

{climb
if rope childof vent
   proxy "go down"
   break
endif
write "The rope leads nowhere." ^
set TURN_WORKED to false
}

{climb_up
if rope childof vent
   write "You are already at the top of the rope." ^
   break
endif
write "The rope leads nowhere." ^
set TURN_WORKED to false
}

{climb_down
if rope childof vent
   proxy "go down"
   break
endif
write "The rope leads nowhere." ^
set TURN_WORKED to false
}

{cut_with_scalpel
write "It would take too long to hack through the thick rope using the "
write "scalpel." ^
set TURN_WORKED = false
}

object roof_opening: roof opening
 inventory	an "roof opening"

{look_through
if lisa has BURNING
   write "Through the opening you can see the stranger, Lisa and several "
   write "officials all in quiet conversation." ^
   break
endif
write "You can see the floor of the hangar over fifteen feet below." ^
}

{enter
proxy "d"
}

location roof_south:
 has		OUTDOORS
 north		roof_north
 down		on_crate

{look
if here has VISITED
   write "You are crouching down at the south end of the hangar's roof."^
   break
endif
write "You are near the south end of the hangar's roof, crouching down "
write "below the ridge line in order not to be seen." ^
}

{jump : stand
write "Are you mad? You would be spotted a mile away if you did that." ^
}

object hangar_obj: hangar large
 inventory	a "hangar"
 starts		limbo

location hangar_north:
 south		hangar_south
 up		roof_north
 no_north	"The front door is closed."

{look
if here has VISITED
   write "You are back at the north end of the hangar." ^
   break
endif
write "This enormous space is sparsely furnished with a small writing desk "
write "and filing cabinet. The main door to the hangar stands to the north, "
write "beside which there is a smaller access door for people to come and go. "
write "What appears to be a large fish tank occupies the majority of "
write "the space to the south. Light streams in from above through a square "
write "opening in the roof."
if rope childof vent
   write " A length of rope dangles down through the opening."
endif
write ^
}
 
{look_up
execute "examine_inside_opening"
}

{listen
write "The loudest sound you can hear is that of your heart beating." ^
}

{first_hint
write "You must either take Lisa's gun or take the stranger's gun." ^^
write "WARNING: The next clue will say whose gun to take." ^
set TURN_WORKED = false
}

{second_hint
write "Once you have resolved the stand-off by taking Lisa's gun, you will "
write "need to get the contents of the bottom drawer of the cabinet (which "
write "is locked, permanently)." ^
set TURN_WORKED = false
}
 
{third_hint
write "Just REMOVE THE TOP DRAWER and you will be able to TAKE THE DIARY out "
write "of the bottom one." ^^
set TURN_WORKED = false
}

object tank_view: apparent fish tank
 inventory	a "fish tank"

{shoot_override : shoot_with_gun : attack_with_gun
write "You quickly take aim then pull the trigger." ^^
write "~Alex!~ Lisa cries as the access door bursts open and the MP runs "
write "into the room." ^^
write "Seeing you with the gun in your hand, the MP shoots. A burning pain "
write "cuts through your chest as you hit the ground, your mind spinning "
write "from the shock. Before long, the cold fluid from the now shattered "
write "fish tank spreads across the floor of the hangar to wet your clothes "
write "and hair." ^
execute "global_death"
}
 
{examine : look_in
write "The fish tank, still some distance to the south, is standing on a "
write "metal frame." ^
}

object inside_opening: roof opening
 has		OUT_OF_REACH
 inventory	a "roof opening"

{look_through : examine
write "Through the opening you can see nothing but blue sky." ^
}

{enter
proxy "u"
}

object stranger: stranger tall middle-aged man
 has		ANIMATE
 inventory	the "stranger"
 described	"The stranger is here pointing his pistol at Lisa."
 starts 	limbo
 mass		heavy

{ask_about_fish_tank : ask_about_tank_view
if here = hangar_south
   write "The stranger places the palm of his hand against the glass wall "
   write "of the tank. " 
else
   write "The stranger looks at you, his face slightly contorted. "
endif
write "~Well, it's obviously the result of one of Dr Zuckerman's tests. "
write "Your guess is as good as mine as to the nature of it, though.~" ^
}

{ask_about_instruments
write "~Beats the shit out of me!~ the stranger exclaims." ^
}

{ask_about_rect_crate
write "~The crate has always been there,~ the stranger explains. ~I just "
write "tipped it up so that I could use it to get on to the roof. Once "
write "hanging from the gutter, I decided it would be best to kick it back "
write "over to avoid anyone noticing and thinking it suspicious.~" ^
}

{examine
if lisa has CUSTOM2
   write "The stranger is standing firm with his pistol pointed directly "
   write "at Lisa's head." ^
   break
endif
write "The stranger is a tall, middle-aged man with short dark hair. He is "
write "dressed almost completely in black." ^ 
}

{ask_about_submarine
write "~It's hard to say who it would have belonged to,~ the stranger "
write "begins in reply. ~There are so many people, knowingly or unknowingly, "
write "working on Dr Zuckerman's project. It is almost impossible to keep "
write "track of them all.~" ^
}

{ask_about_divers : tell_about_divers
write "~It's hard to say who they were,~ the stranger says with a frown. "
write "~There are so many people, knowingly or unknowingly, working on Dr "
write "Zuckerman's project. It is almost impossible to keep track of them "
write "all.~" ^
}

{shoot_override : shoot_with_gun : attack_with_gun
write "Seizing the opportunity, you take aim at the stranger and pull the "
write "trigger." ^^
write "~Alex!~ Lisa cries as the access door bursts open and the MP runs "
write "into the room. You recall thinking how you would explain, but never "
write "get the chance." ^
execute "global_death"
}

{ask_for_gun
if lisa has CUSTOM2
   write "With Lisa covering you, you walk up to the stranger and hold out "
   write "your hand." ^^
   write "~You're making a big mistake,~ he says as he hands over his pistol."
   write ^^
   write "~Good work, Alex,~ Lisa says, noticeably relieved. ~Now give me the "
   write "gun and get out of here before I call the guard in. Something tells "
   write "me you don't want have to explain to him what you are doing in "
   write "here.~" ^
   ensure lisa hasnt CUSTOM2
   ensure lisa has ON
   ensure lisa has POSSESSIVE
   describe stranger as "The stranger is here, standing with his hands above his head."
   describe lisa as "Lisa is standing with her pistol raised towards the middle aged man."
   move gun to kryten
   break
endif
write "The stranger doesn't even honour your request with a reply." ^
}

{ask_about_lisa
write "~Don't worry, she'll be fine. By the time they find her, both you and "
write "I will be far away from here. Then, by the time they catch up with us, "
write "we'll have enough evidence to close this whole operation down.~" ^
}

{tell_about_vial
execute "show_to_stranger_vial"
}
 
{ask_about_vial
write "~I have monitored the transport of many vials such as the ones you "
write "describe. I can not tell you much about them, as their exact source is "
write "still as yet unknown. This is mainly due to the extraordinary lengths "
write "that the couriers have gone to in order to conceal their transport "
write "route.~" ^
}

{tell_about_green_slide
if fuel has SCORED
   execute "tell_about_fuel_stranger"
   break
endif
if green_slide(location) = limbo
   write "What green slide?" ^
   break
endif
write "Perhaps if you took a look at it through the microscope you would "
write "have something of interest to tell him." ^
}

{tell_about_fuel : tell_about_ames
if stranger has CUSTOM4
   write "~Yes, I recall,~ the stranger replies." ^
   break
endif
write "You tell the stranger about your discovery of the vial and "
if fuel has SCORED
   write "your experiments regarding the clear liquid within it." ^^
   write "As you do so the stranger's eyes light up. "
   if stranger has CUSTOM5
      write "~Well, that would confirm what I was telling you about the "
      write "human test subjects.~" ^^
   else
      write "~Your tests appear to confirm our findings,~ the stranger says "
      write "as he rubs his chin thoughtfully. ~You see, several of Dr "
      write "Zuckerman's experiments involved involuntary human subjects, two "
      write "of which we were fortunate enough to have the opportunity to "
      write "interview. Although neither could remember anything of the "
      write "tests themselves, both showed signs of accelerated aging.~" ^
      ensure stranger has CUSTOM1
   endif
   points 5
   ensure stranger has CUSTOM4 
   if diary has SCORED
      execute "global_stranger_offer"
   endif
   break
endall
write "the clear liquid within it." ^
}

{ask_about_tests
write "~You see, several of Dr Zuckerman's experiments involved involuntary "
write "human subjects, two of which we were fortunate enough to have the "
write "opportunity to interview. Although neither could remember anything "
write "of the tests themselves, both showed signs of accelerated aging.~" ^
}

{ask_about_stranger
if stranger hasnt CUSTOM2
   write "~Let's just say I'm a sort of public servant, a government "
   write "watchdog so to speak.~" ^
   ensure stranger has CUSTOM2
   break
endif
write "The stranger just frowns." ^
}

{ask_about_zuckerman
if stranger has CUSTOM5
   write "~There's not much more I can tell you at this stage.~" ^
   break
endif
write "~Over a year ago now, our department received information regarding "
write "tests being performing by Dr Zuckerman here on the island. "
if stranger hasnt CUSTOM1
   write "Tests involving involuntary human guinea pigs. F"
else
   write "As I was saying earlier, f"
endif
write "rom what we can gather the tests appear to increase the rate at which "
write "the subjects age, but for what reason we can not say. Security is "
write "high around the project, so progress has been slow. The doctor is also "
write "somewhat of a recluse, rarely straying out into the public eye, which "
write "has made monitoring his actions almost impossible.~" ^
ensure stranger has CUSTOM5
}

{talk_to
if lisa has CUSTOM2
   write "~There'll be time to talk later,~ the stranger replies tensely." ^
   break
endif
if lisa has ON
   write "Lisa butts in, ~Don't talk to him, Alex. Just give me the gun then "
   write "get out of here.~ ^
   break
endif
if lisa has BURNING
   write "Lisa butts in, ~Don't talk to him, Alex. Just get out of here.~ ^
   break
endif
write "~What would you like to know, Dr Meadows?~ ^
}

{attack
if lisa has CUSTOM2
   write "Why don't you just take his gun instead." ^
   break
endif
if lisa has ON
   write "I don't think taking a cheap shot at the stranger is going to help "
   write "your situation at all." ^
   break
endif
if lisa has BURNING
   write "I don't think taking a cheap shot at the stranger is going to help "
   write "your situation at all." ^
   break
endif
write "Are you out of your mind!" ^
}

object gun: strangers stranger's gun plain black pistol his mans man's
 inventory	a "plain black pistol"
 described	"The stranger's pistol is lying here."
 starts childof	stranger
 mass		5

{take_override
if gun childof stranger
   proxy "ask stranger for strangers pistol"
   break
endif
break false
}

{give_to_lisa
write "You hand the stranger's pistol to Lisa." ^^
write "~Now get out of here,~ Lisa orders sternly. ~I'll talk to you when we "
write "both get back to the outpost.~" ^
move gun to lisa
ensure lisa hasnt ON
ensure lisa has BURNING 
}

{examine
write "Never having been one for guns, you don't much like the look of it." ^
}

object rope_end: length of thick sturdy rope
 inventory	a "length of rope"
 mass		scenery
 
{examine
write "The rope dangles down from above through the square opening in the "
write "roof." ^
}

{take : pull
write "The rope appears to be quite firmly attached to something outside." ^
}

{climb : climb_up
proxy "go up"
}

{climb_down
write "You are already at the bottom of the rope." ^
}

object hangar_door: main door
 inventory	the  "main door"

{open
write "The main door to the hangar can't be opened by hand." ^
}

{examine
write "The main door is about four metres tall and almost ten metres wide." ^
}

object access_door: access door
 has		CLOSABLE CLOSED LOCKED
 inventory	the "access door"

{open : knock_on
if here = compound
   proxy "s"
   break
endif
if lisa has CUSTOM2
   write "You walk behind Lisa towards the access door."
   execute "global_lisa_shoots"
   write "you and forces you on to the ground."
   execute "global_busted"
   break
endif
if lisa has ON
   write "~Don't do it, Alex. You really don't want have to explain to the "
   write "guard what you were doing in here,~ Lisa says as you approach the "
   write "door." ^
   break
endif
if lisa has BURNING
   write "~I strongly suggest leaving by the rope,~ Lisa says before you "
   write "reach the door." ^
   break
endif
write "That is more than likely going to get you killed." ^
}

object filing: filing cabinet
 has		SURFACE
 inventory	a "filing cabinet"
 quantity	20

{examine
write "The filing cabinet is of a simple two drawer design. Its pale brown "
write "paint is badly scratched from years of apparent wear. The top drawer "
if top_drawer !childof filing
   write "is missing, allowing you to see into the bottom drawer." ^
   break
endif
if top_drawer has CLOSED
   write "is closed, as is the one." ^
else
   write "is open while the bottom one is closed." ^
}

{look_in
if top_drawer !childof filing
   proxy "look in bottom drawer"
   break
endif
proxy "examine filing cabinet"
}

{unlock_with_pin : pick_with_pin
write "Lock picking is not a skill you have ever managed to master." ^
set TURN_WORKED = false
}

object desk_leif: sturdy desk
 has		SURFACE
 inventory	a "sturdy desk"
 quantity	30
 
{examine
write "The desk's stark, yet sturdy construction is reminiscent of the design "
write "philosophy prevalent in communist Russia in the nineteen forties. "
execute "global_details"
}

{clean : clean_with_toothbrush
if desk_leif hasnt CUSTOM2
   ensure desk_leif has CUSTOM2
   if desk_leif has CUSTOM1
      write "You clean away the grime further to reveal a mysterious message: "
      write "~Made in Taiwan.~" ^
      break 
   endif
   write "You clean away the grime to reveal a mysterious message: ~Made in "
   write "Taiwan.~^"
   break
endall
write "What more do you expect?" ^
}

{look_under
if desk_leif has CUSTOM2
   write "You can see your recently revealed message informing you that the "
   write "desk was made in Taiwan." ^
   break
endif
if desk_leif has CUSTOM1
   write "There is nothing but a streak in the grime where the stranger has "
   write "run his hand." ^
   break
endif
write "Nothing but a thin layer of grime." ^
}

object grime: grime
 inventory	the "grime"

{clean : clean_with_toothbrush
proxy "clean desk"
}

{examine
proxy "look under desk"
}

{look_at_through_magnifying_glass
if desk_leif hasnt CUSTOM2
   if desk_leif hasnt CUSTOM1
      write "There appears to be some writing underneath the grime." ^
endall
write "There really isn't much of it left." ^
}

object top_drawer: top cabinet drawer
 has		CONTAINER CLOSABLE CLOSED
 inventory	a "top drawer"
 described	"The top drawer of the filing cabinet is here."
 mass		10
 quantity	15
 starts childof filing

{insert_in_filing
write "Carefully you guide the drawer back onto its railing and push it "
write "closed." ^
move top_drawer to filing
ensure top_drawer has CLOSED
ensure top_drawer has CLOSABLE
ensure bottom_drawer has CLOSED
}

{take
if top_drawer childof filing
   write "Pulling the drawer out to its extreme and then angling it upwards, "
   write "you manage to remove the top drawer from its railing." ^
   move top_drawer to player
   ensure bottom_drawer hasnt CLOSED
   ensure top_drawer hasnt CLOSABLE
   ensure top_drawer hasnt CLOSED
   break
endif
break false
}

object magazine: copy of cigar aficianado magazine
 inventory	a "copy of Cigar Aficionado magazine"
 mass		4
 starts	childof	top_drawer

{examine : read : open
if magazine has DAMAGED
   write "The magazine is very, very soggy." ^
   break
endif
if magazine hasnt CUSTOM1
   write "You briefly skim through an article on the Cuban embargo." ^
   ensure magazine has CUSTOM1
   break
endif
write "The copy of Cigar Aficionado magazine is inexplicably thick and "
write "you have no desire to read it all." ^
}

object eraser: white board eraser
 inventory	a "white board eraser"
 mass		2
 starts	childof	top_drawer

object magnifying_glass: magnifying glass
 inventory	a "magnifying glass"
 mass		2
 starts	childof	top_drawer

{examine
write "The magnifying glass is unusually large." ^
}

object paper: piece of paper
 inventory	a "piece of paper"
 described	"There is a piece of paper nearby."
 mass		5
 starts childof	top_drawer

{give_to_stranger
write "You hand the piece of paper to the stranger." ^^
move paper to stranger
execute "show_to_stranger"
}

{show_to_stranger
if paper has CUSTOM4
   write "~I'm still none the wiser,~ he says, shaking his head." ^
   break
endif
write "The stranger looks at the piece of paper and shrugs. ~Beats me,~ he "
write "says with a faint smile. ~It does support our reports of him using "
write "human subjects in his experiments, I suppose, but it doesn't prove "
write "anything.~" ^ 
ensure paper has CUSTOM4
}

{examine : read
if paper has DAMAGED
   write "The ink of the paper has run too badly to read." ^
   break
endif
write "The writing on the paper is very hard to read. About the only section "
write "you can make out appears to say something about the energy obtained "
write "from fish only being good for other fish." ^
}

object bottom_drawer: bottom cabinet drawer
 has		CONTAINER CLOSED LOCKED
 inventory	a "bottom drawer"
 quantity	15
 starts childof filing
 mass		10

{examine : look_in
if top_drawer !childof filing
   write "With the top drawer removed, you are able to see into the bottom "
   write "drawer. "
   execute "global_contents"
   break
endif
write "The filing cabinet's bottom drawer is closed." ^
}

{take
write "The bottom drawer is locked and therefore can't be taken." ^
}

{unlock_with_pin : pick_with_pin
write "Lock picking is not a skill you have ever managed to master." ^
set TURN_WORKED = false
}

object diary: diary small black
 inventory	a "diary"
 described	"A small black diary is here."
 mass		5
 starts childof	bottom_drawer

{examine : read : look_in : open
if diary has DAMAGED
   write "Soaking wet, the diary is now unreadable." ^
   break
endif
write "Embossed in gold letters on the cover of the small black diary is "
write "the name Dr Leif Zuckerman. "
write "As you flick through the diary, you notice that it is mostly filled "
write "with cryptic fragments that mean next to nothing to you. On the last "
write "page, however, is a scrawled appointment for next Wednesday night: " ^^
centre "MICROBIOLOGY CONFERENCE"
centre "HOTEL LES TERRASSES D'EZE"
centre "MONTE CARLO 7:30 PM"
}

{show_to_stranger
if diary has DAMAGED
   write "Soaking wet, the diary is now unreadable." ^
   break
endif
if diary has SCORED
   write "~Yes, yes, I know.~" ^
   break
endif
write "The stranger begins to laugh. Unable to grasp the exact nature of the "
write "joke you can but wait. ~That stupid bastard,~ he blurts finally. ~All "
write "this time he's been looked after by the military. Top security "
write "consultants whisking him here and there as though he doesn't exist, "
write "and now, not only does he go to a public conference, but he writes it "
write "down in his diary. For a brilliant man, he's not very bright.~ "
write "Lowering his voice, the stranger continues with a more subdued tone, "
write "~That is if it isn't just a set up, of course.~" ^
points 5
ensure diary has SCORED
if stranger has CUSTOM4
   execute "global_stranger_offer"
}

{give_to_stranger
move diary to stranger
write "You hand the diary to the stranger." ^^
execute "show_to_stranger_diary"
}

location hangar_south:
 north		hangar_north
 no_up		"The walls of the tank are perfectly smooth, and therefore unclimbable."

{look
if here has VISITED
   write "You are back at the south end of the hangar." ^
   break
endif
write "Rows of powerful fluorescent lights along the ceiling illuminate a "
write "gigantic fish tank perched upon a steel frame in the centre of the "
write "room. Several groups of wires rise out of the top of the tank, "
write "stretching across the room to a tall bank of instruments against the "
write "west wall. A compressor housed within the steel frame pumps air into "
write "the tank, filling the room with a loud bubbling sound." ^
}

{first_hint
write "Have you discovered any other clear liquids yet? If you have, and "
write "you have performed the Ames test on it in the laboratory, then "
write "perhaps the stranger would be interested in the results." ^
set TURN_WORKED = false
}

{second_hint
write "Once you have shown the green slide to the stranger, find the diary "
write "if you have not done so already and show it to the stranger as well." ^
set TURN_WORKED = false
}

{third_hint
write "Once you have shown both the diary and the green slide to the "
write "stranger, you will have proven to him that you are of use to his "
write "investigation. He will then offer to send you to the "
write "convention in Monte Carlo mentioned in the diary. To accept this "
write "offer, give your final report to Colonel Wise as he suggests." ^
set TURN_WORKED = false
}

{listen
write "You can hear only the sound of air bubbling through the water in the "
write "tank." ^
}

object tank_liquid: tank full of clear liquid 
 has		OUT_OF_REACH
 inventory	the "tank full of clear liquid"

{examine
write "The liquid is perfectly clear, possibly just water." ^
}

object hangar_lights: row rows of powerful fluorescent lights light
 has		OUT_OF_REACH
 inventory	the "rows of fluorescent lights"
 
{turn_off
write "There is no obvious way to switch the lights off." ^
}

{turn_on
write "The lights are already on." ^
}

object fish_tank: fish tank
 inventory	an "fish tank"

{examine : look_in
write "The fish tank is about three metres by six metres and divided evenly "
write "in half by a glass partition. One half of the tank is filled with "
write "fish, almost all dead, while the other appears to be filled with many "
write "young, healthy fish. Two large probes reach down into the water, one "
write "into each half. Attached to each probe is a set of wires that run " 
write "along the roof then down into the top of the bank of instruments. "
write "Large bubbles of air come from several openings in the bottom of the "
write "tank, rising to break at the surface." ^
}

{climb
write "The walls of the tank are perfectly smooth, and therefore "
write "unclimbable." ^
}

{enter
write "The tank is too high off the ground to get into." ^
}

{break
write "You would seriously hurt your hand if you attempted that." ^
}
 
{break_with_wooden_chair
write "Swinging the wooden chair with all your strength, it bounces off "
write "fish tank's wall. On closer examination you estimate the glass to be "
write "over an inch thick." ^
}

{knock_on
write "The glass walls of the fish tank sound inches thick." ^
}

object probes: probes probe
 has		OUT_OF_REACH PLURAL
 inventory	the "probes"

{examine
write "Like something out of a nineteen seventies sci-fi movie, the probes "
write "have flat discs circling them at intervals, gradually decreasing in "
write "diameter towards the tip." ^
}

object discs: flat discs
 has		OUT_OF_REACH PLURAL
 inventory	the "flat discs"

{examine
write "The discs appear to be made from some sort of translucent plastic." ^
}

object wires: wires
 has		OUT_OF_REACH PLURAL
 inventory 	the "wires"

{examine
write "The wires run from the tops of the probes, along the ceiling, then down "
write "into the bank of instruments." ^
}

object frame: steel frame
 inventory	a "steel frame"

{climb
write "The steel frame leads nowhere." ^
set TURN_WORKED = false
}

object instruments: tall bank of instruments dials knobs switches buttons
 inventory	a "bank of instruments"

{examine
write "The bank of instruments consists of many dials, switches, knobs and "
write "buttons, none of which make the slightest bit of sense to you." ^
}

{look_behind
write "The bank of instruments is right up against the wall." ^
}

{move
write "You can't even get it to budge" ^
}

object compressor: electrical air compressor
 inventory	an "air compressor"

{examine
write "The compressor is powered by electricity and is pumping large amounts "
write "of air into the tank." ^
}

{turn_off
write "There is no obvious way to switch the compressor off." ^
}

{turn_on
write "The compressor is already on." ^
}

location south_beach:
 has		OUTDOORS
 north		estuary
 northeast	behind_hangar
 no_southeast	"There is no need to go swimming here."
 no_southwest	"There is no need to go swimming here."
 no_south	"There is no need to go swimming here."


{look
if here has VISITED
   write "You are again at the south beach." ^
   break
endif
write "Stretching out before the gently rolling waves of the Pacific ocean, "
write "this beach is undoubtedly the most beautiful on the island. Fresh " 
write "water from the surrounding hills flows down to meet the ocean here, "
write "digging deep grooves in the soft white sand. To the northeast, "
write "through a band of sparse costal bushes, you can make out the back of "
write "a large hangar." ^
}

{listen
write "The sound of gently rolling waves fills you ears." ^
}

object dolphin: dolphin dolphins
 has		PLURAL
 inventory	the "dolphins"
 starts		limbo

location hill:
 has		OUTDOORS
 southeast	estuary
 down		estuary
 north		shed
 in		shed
 no_go		"You can enter the shed to the north or follow the stream back down to the south-east."

{look
if here has VISITED
   write "Once again, you are standing on the grassy hill." ^
   break
endif
write "The side of this grassy hill affords a magnificent view of the "
write "south coast of the island. Much more hospitable than the shear "
write "cliffs of the north, the long white sandy beach has been a popular "
write "spot for fishing, swimming or just lying about in the warm tropical "
write "sun. "
if here hasnt SOLVED
   write "Looking around, you almost didn't notice a small wooden shed, "
   write "partially covered in camouflage netting, standing crooked on the "
   write "north bank of the stream." ^
   ensure here has SOLVED
   break
endif
write "A small wooden shed, partially covered in camouflage netting, stands "
write "crooked on the north bank of the stream." ^ 
}

object netting: camouflage netting
 inventory	the "camouflage netting"

{examine
write "The netting contains many strips of green and brown cloth. Although "
write "covering most of the shed, it has been pulled aside by the doorway "
write "allowing you access." ^
}

{take : remove
write "It would take more than a few men to remove the netting." ^
set TURN_WORKED = false
}

object shed_obj: shed
 inventory	a "shed"

{examine : look_in
write "The wooden shed, enterable to the north, is in an obvious state of "
write "disrepair." ^
}

{enter
proxy "go north"
}

object stream: sparkling stream
 inventory	a "sparkling stream"

{examine
write "The stream flows from further up the hill, down past the front of the "
write "shed, then on to the southeast towards the ocean." ^
}

{drink
if stream has CUSTOM1
   write "You are still feeling a bit on the waterlogged side." ^
   set TURN_WORKED = false
   break
endif
write "You give it your best shot, but you are full before it is finished." ^
ensure stream has CUSTOM1
}

{drink_from
write "You're not thirsty." ^
set TURN_WORKED = false
}

location shed:
 south		hill
 out		hill

{look
if here has VISITED
   write "You are back in the disused shed." ^
   break
endif
write "Many crooked shelves line the walls of this disused shed. Its door, "
write "long ago ripped from its hinges, lies flat on the floor beside a large "
write "red metal drum. The ground can be seen clearly beneath your feet "
write "through large gaps in the decaying floor boards." ^ 
}

{first_hint
write "EXAMINE THE DRUM carefully." ^
set TURN_WORKED = false
}

{second_hint
write "Take a LOOK IN THE HOLE." ^
set TURN_WORKED = false
}

{third_hint
write "Don't forget to LOOK BEHIND THE DRUM." ^
set TURN_WORKED = false
}

object boards: decaying floor boards
 has		SURFACE PLURAL
 inventory	the "decaying floor boards"
 quantity	100

{examine
write "The floor boards around the drum are stained a dark brown colour." ^
}

object shelves: crooked shelves shelf
 has		SURFACE PLURAL
 inventory	the "crooked shelves"
 quantity	30

{examine
write "The shelves are lined with a variety of metal and plastic containers, "
write "all baring warnings as to their poisonous nature." ^
}

object containers: metal plastic containers
 has		PLURAL
 inventory	the "metal and plastic containers"

{examine
write "Most of the containers hold substances you have never heard of." ^
}

object bullet_hole: small bullet hole
 inventory	a "small hole"

{examine
write "The hole is about the size of a five cent piece. The metal around "
write "its edges appears to have been pushed in with great force." ^
}

{look_through : look_in
write "At first you see nothing but blackness. However, as you continue to "
write "peer through, bobbing your head from side to side, you notice a dim "
write "spot of light. Focusing more intently, you come to realise it is "
write "another hole in the far side of the drum." ^
}

object bullet: bullet
 inventory	a "bullet"

{take
write "Try as you might, the bullet is too firmly embedded to remove." ^
}

object drum: red metal drum
 has		SURFACE CLOSABLE CLOSED
 inventory	a "red drum"
 quantity	15

{examine
write "The drum is painted red. A large label on its side reads:" ^^
centre "--------------------------"
centre "[                WARNING ]"
centre "[              Poison S2 ]"
centre "[                        ]"
centre "[ ROTOL                  ]"
centre "[ 20g/L Rotenone actives ]"
centre "[ 810g/L Toluene solvent ]" 
centre "--------------------------"
write "^The base of drum has been stained dark brown by the apparent "
write "leaking of its contents through a small hole in its side." ^
}

{look_behind
write "Looking around behind the drum, you notice there is another hole "
write "directly opposite to, and slightly lower than, the one on the front. "
if bullet hasnt SCORED
   write ^^ "As you step back to stand up straight again, the cause of the "
   write "damage to the drum becomes evident. A bullet, firmly embedded in "
   write "the base of the wall, lines up perfectly with the two holes." ^
   points 5
   ensure bullet has SCORED
   break
endall
write "Directly in line with the two holes is a bullet, firmly embedded into "
write "the base of the wall." ^
}

{open
write "The drum is sealed tight." ^
}

{move
write "The drum, although empty, is still impossible to move due to the "
write "dried substance around its base glueing it to the floor." ^
}

object contents: drums drum's contents dark brown stain substance glue
 inventory	the "dark brown substance"
 
{examine
write "The dark brown substance was obviously once the contents of the drum." ^
}

object label: label on red metal drum
 inventory	the "label on the drum"

{take
write "It would be impossible to peel the label off the drum without tearing "
write "it in to a hundred pieces." ^
}

{examine : read
execute "examine_drum"
}

object rotenone: quantity of rotenone derris rotol
 inventory	a "quantity of rotenone"
 starts childof drum
 mass	 	2	
	
{examine
execute "examine_drum"
}

{look_up_in_book
write "rotenone" ^
write "[C10 H18 O] "
write "a long-known insecticide derived from various tropical plants, "
write "especially species of Derris and Lonchocarpus. The plants have been "
write "used by natives in some cultures for hunting fish due to its effect of "
write "paralysing their respiratory systems, effectively causing them to "
write "drown. The poisonous ingredient, sometimes called derris, is a dark "
write "brown liquid extracted from the root." ^
}

object shed_door: shed door
 inventory	a "shed door"

{take
write "Far too heavy and useless to consider lugging around." ^
set TURN_WORKED = false
}

{examine
write "By all accounts, a door (just not a very healthy one)." ^
}

{open
write "It's sort of permanently open." ^
}

{close
write "Not without the aid of several power tools you won't." ^
}

location compound:
 has		OUTDOORS
 west		estuary
 north		office
 east		base
 south		hangar_north

{look
if here has VISITED
   write "You are standing in the main compound again." ^
   break
endif
write "The compound is a reasonably low-key affair, nothing more than a large "
write "cleared area of bare earth. A small hut to the north serves as the "
write "CO's office while a large hangar stands to the south. The majority of "
write "the base lies further to the east." ^
}

object hangar_obj2: hangar large building
 inventory	a "hangar"

{examine
write "The hangar is an enormous building guarded by an enormous MP. The " ^
write "front wall of the hangar has a large main door and a smaller access "
write "door for people to come and go." ^ 
}

object guard: burly mp guard man
 has		ANIMATE POSSESSIVE
 inventory	the "MP"
 described	"A burly MP stands guard at the door to the hangar."
 mass		heavy

{greet
write "The MP continues to stare straight ahead." ^
}

{kiss
write "Didn't your mother warn you about kissing strange men with M16s?" ^
}

{hug
write "Didn't your mother warn you about hugging strange men with M16s?" ^
}

{talk_to
if guard hasnt CUSTOM4
   write "You inquire of the MP as to the possibility of taking a look "
   write "around the hangarr, to which he replies, ~Only Dr Zuckerman, or "
   write "personnel personally signed in by Dr Zuckerman, may pass this "
   write "point.~" ^
   ensure guard has CUSTOM4
   break
endif
write "The MP stares blankly ahead, barely acknowledging your presence." ^
}

{ask_about_hangar_obj
write "~The hangar is a restricted area, Dr Meadows, and its contents "
write "classified.~" ^
}

{examine
write "The MP stands tall and straight by the door to the hangar with an M16 "
write "machine gun slung over his shoulder." ^
}

{attack
write "You have to be joking." ^
set TURN_WORKED = false
}

{tell_about_rope : tell_about_rope_end : tell_about_stranger 
if lisa has BURNING
   write "~Yes, I am well aware of the situation, Dr Meadows,~ the MP "
   write "replies." ^
   break
endif
write "The guard gives you wary look of disbelief, quietly unlocks the door, "
write "opens it a crack, then peers through. "
if lisa has CUSTOM3
   write "Spying Lisa bound and gagged, he kicks open the door and enters the "
   write "hangar. Through the open doorway you see him, gun drawn, ordering "
   write "the stranger onto the ground. You almost hit your head against the "
   write "frame of the door as two more MPs push past you into the hangar, "
   write "eventually helping to lead the stranger and Lisa (who is "
   write "foruntately safe and sound), out into the compound." ^^
   write "Inevitably, you spend the rest of your stay on the island "
   write "explaining to Colonel Wise exactly what you were doing in the "
   write "hangar in the first place." ^^
   execute "global_gameover"
   break
endif
write "Spying the stranger, he kicks open the door and enters the hangar. "
write "Through the open doorway you see him, gun drawn, ordering the "
write "stranger on to the ground. You almost hit your head against the "
write "frame of the door as two more MPs push past you into the hangar, "
write "eventually helping to lead the stranger out into the compound." ^^
write "Inevitably, you spend the rest of your stay on the island explaining "
write "to Colonel Wise exactly how you knew about the stranger in the "
write "first place." ^^
execute "global_gameover"
}

{tell_about_lisa
if lisa has CUSTOM3
   proxy "tell guard about stranger"
   break
endif
break false
}

object machine_gun: guards guard's his machine rifle gun m16
 inventory	a "machine gun"
 starts childof guard
 mass		15

{examine
write "About the only thing you know about the MP's M16 is that you don't "
write "like the look of it." ^
}

location base:
 has		OUTDOORS
 west		compound
 east		pad
 up		pad
 no_go		"Most of the structures are either private or restricted."
 no_down	"You can't go that way."
 no_up		"You can't go that way."
 no_out		"You can't go that way."

{look
if here has VISITED
   write "You have arrived back at the main base." ^
   break
endif
write "The base here is alive with people coming and going. A large tower, "
write "ultimately destined to house many meteorological instruments, is "
write "currently under construction. Sturdy tents and pre-fab structures lie "
write "to the north and south while to the east a set of roughly hewn steps "
write "lead up to a helicopter pad." ^ 
}

{listen
write "All you can hear is the sound of power tools." ^
}

{look_up
write "Work is still going at the top of the tower." ^
}

object tower: meteorological tower
 inventory	a "meteorological tower"

{examine
write "The tower is about three quarters finished, its tall steel frame "
write "now standing over twenty metres tall." ^
}

{climb
write "I agree, that does sound like a lot of fun, but it's also a bit too "
write "dangerous." ^
set TURN_WORKED = false
}

{move
write "Try as you might, you just can't manage to push the tower over." ^
}

location pad:
 has		OUTDOORS
 west		base
 down		base
 no_go		"Back down the steps is the only way from here."

{look
if here has VISITED
   write "You have returned to the helicopter pad." ^
   break
endif
write "Cut into the side of a gentle hill, the helicopter pad is surfaced "
write "by nothing more than compacted earth. The surrounding area is quite "
write "barren, stripped of all vegetation over a metre tall." ^
}

object helicopter: helicopter
 inventory	a "helicopter"
 starts		limbo

location office:
 south		compound
 go_south	"Excusing yourself to Colonel Wise, you turn to leave." ^
 out		compound
 no_go		"The only exit is back out to the south."

{look
if here has VISITED
   write "You are back in Colonel Wise's office." ^
   break
endif
write "Leaning back in his chair, feet on his desk and hands behind "
write "his head, is Colonel Wise. Many years older now than in the "
write "black-and-white photographs that adorn the walls, he is obviously a "
write "man of great experience. The blades of a slowly turning ceiling fan "
write "cut through the golden rays of the afternoon sun casting flickering "
write "shadows across the floor." ^ 
}

{first_hint
write "If you give your final report to Colonel Wise you will leave the "
write "island." ^
set TURN_WORKED = false
}

{second_hint
write "Depending of whether you have had a better offer or not, you may only "
write "end up going home." ^
set TURN_WORKED = false
}

{third_hint
write "Once you have shown the stranger the green slide and the diary, "
write "give Colonel Wise the report and you will be on your way to "
write "Monte Carlo." ^
set TURN_WORKED = false
}

object photos: photos black-and-white photographs
 has		PLURAL
 inventory	the "photographs"

{examine
write "The photographs are mostly action shots from training exercises." ^
}

{look_behind
write "There is, quite surprisingly, a wall there." ^
}

object cos_desk: desk
 has		SURFACE
 inventory	the "desk"
 quantity	30

{examine
write "The desk is not exactly what would expect a colonel to be "
write "sitting behind. "
execute "global_details" 
}

object telephone: colonel wises wise's telephone rap-rod phone
 inventory	name "Colonel Wise's telephone"
 starts childof cos_desk

{take
write "I don't think Colonel Wise would appreciate you walking off with his "
write "telephone." ^
}

object feet: colonel wises wise's feet smelly
 has		PLURAL
 inventory	name "Colonel Wise's feet"
 starts childof cos_desk

{take
write "Give me a break." ^
}

{examine
write "No clues there." ^
}

{move
write "Moving a man's feet off his own desk is just plain rude." ^
}

{sniff
write "Is passing out one of your favourite hobbies?" ^
}

object fan: slow turning ceiling fan
 has		OUT_OF_REACH
 inventory	a "ceiling fan"
 
{examine
write "The slowly turning ceiling fan is made from woven bamboo." ^
}

object wise: officer colonel wise man
 has		ANIMATE POSSESSIVE
 inventory	name "Colonel Wise"

{ask_about_helicopter
write "~When you give me that report of yours, I will call through to the "
write "transport division and get a pilot to fly you out to the mainland.~" ^
}

{greet
write "You nod your head slightly in reluctant recognition of Colonel Wise's "
write "existence. He does not repsond." ^
}

{talk_to
write "You find it hard to think of anything to say to Colonel Wise that "
write "wouldn't get you arrested." ^
}

{tell_about_bullet : tell_about_drum : tell_about_hole
if drum hasnt CUSTOM4
   write "~This is a military base, Doctor Meadows, accidents do happen. "
   write "Just be thankful it was only a metal drum and not yourself.~"
   write ^^ "Taking Colonel Wise's point, you decide not to press the matter."
   write ^
   ensure drum has CUSTOM4
   break
endall
write "~If you spend less time poking your nose where it isn't wanted "
write "and more time where it is, you might actually get that report finished "
write "before I have you thrown off my base for trespassing!~" ^
}

{attack
write "Colonel Wise is an ex-frontline Marine; you, on the other hand, are "
write "a scientist. I know who I'd put my money on." ^
}

{ask_for_vial
if vial !childof wise
   write "~I don't know what you're talking about,~ Colonel Wise replies." ^
else
   write "Colonel Wise doesn't even begin to look like giving the vial back." ^
}

{ask_about_hangar_obj
write "~That hangar, Dr Meadows, has absolutely nothing to do with the "
write "investigation we are paying you to perform. Perhaps you should stop "
write "asking irrelevant questions and get on with your job.~" ^
}

{ask_about_zuckerman
write "Colonel Wise appears put out by your question regarding Dr Zuckerman. "
write "~Dr Zuckerman, unlike you, is a man who keeps his mind on his job,~ "
write "he replies eventually." ^
}

{ask_about_wise
write "~I don't see any need for you to know any more about me than you "
write "already do, Dr Meadows,~ Colonel Wise replies disdainfully." ^
}

{tell_about_rope : tell_about_rope_end : tell_about_stranger 
if lisa has BURNING
   write "~Yes, I am well aware of the situation, Dr Meadows,~ "
   write "Colonel Wise replies." ^
   break
endif
write "~If you have any security concerns, Dr Meadows, be sure to take them "
write "up with one of the MPs,~ Colonel Wise replies." ^
}

{tell_about_lisa
if lisa has CUSTOM3
   proxy "tell wise about stranger"
   break
endif
break false
}

object jacket: formal jacket
 has		WEARABLE WORN
 inventory	a "formal jacket"
 described	"Your jacket is here."
 mass		10
 starts 	limbo

{drop
if here = van
   write "~Without you having the jacket on you, we won't be able to here a "
   write "word Zuckerman says,~ Agent Petrescu reminds you." ^
   break
endif
break false
}

object ear_piece: ear piece
 has		WEARABLE WORN
 inventory	an "ear piece"
 described 	"The miniature ear piece is here."
 mass		1
 starts		limbo

{remove
if here = van
   write "~Leave it in, Alex, you'll need it,~ Agent Petrescu says to you." ^
   break
endif
break false
}

{drop
if here = van
   write "~Take it with you, Alex, you'll need it,~ Agent Petrescu says to "
   write "you." ^
   break
endif
break false
}

location van:
 out		nowhere
 no_out		"The sliding door is closed."
 east		nowhere
 no_east	"The sliding door is closed."

{look
if here has VISITED
   write "You are back in the van." ^
   break
endif
write "You are in the back of a large white van with all manner of monitoring "
write "equipment lining the walls. A "
if van_doors has CLOSED
   write "closed,"
else
   write "open,"
endif
write " windowless sliding door to the east is the only exit from the "
write "vehicle.^"
}

{first_hint
write "There is nothing to do here, it all happens in the hotel across the "
write "road." ^
set TURN_WORKED = false
}

object equipment: monitoring equipment
 inventory	the "monitoring equipment"

{turn_on : turn_off : use
write "I don't think you should be touching the monitoring equipment." ^
}

{examine
write "The monitoring equipment includes several small black-and-white video "
write "monitors, a microphone, a radio scanner and a reel-to-reel tape "
write "recorder." ^
}

object microphone: microphone
 inventory	a "microphone"

{turn_on : turn_off : use
write "I don't think you should be touching the monitoring equipment." ^
}

object video_monitors: black-and-white black and white video monitors
 has		PLURAL
 inventory 	the "black-and-white video monitors"
	
{turn_on : turn_off : use
write "I don't think you should be touching the monitoring equipment." ^
}

{examine
write "The black-and-white video monitors are all blank at the moment "
write "except for one that is showing tonight's football." ^
}

object scanner: radio scanner
 inventory	a "radio scanner"

{turn_on : turn_off : use
write "I don't think you should be touching the monitoring equipment." ^
}

object reel-to-reel: reel-to-reel reel to reel tape recorder
 inventory	a "reel-to-reel tape recorder"

{turn_on : turn_off : use
write "I don't think you should be touching the monitoring equipment." ^
}

object van_doors: sliding door
 has		CLOSED CLOSABLE
 inventory	the "sliding door"

{open_override
write "You open the sliding door." ^
ensure van_doors hasnt CLOSED
set van(out) = street
set van(east) = street
set street(in) = van
set street(west) = van
}

{close_override
write "You close the sliding door again." ^
ensure van_doors has CLOSED
set van(out) = nowhere
set van(east) = nowhere
set street(in) = nowhere
set street(west) = nowhere
}

object hughes: special agent hughes man
 has		ANIMATE POSSESSIVE
 inventory	name "Agent Hughes"
 described 	"Agent Hughes is sitting here, wearing a set of headphones."
 mass		heavy

{attack
write "Not a good idea." ^
set TURN_WORKED = false
}

{ask_about_jacket : ask_about_headphones
if jacket has CUSTOM4
   write "~I've already told you about that,~ Agent Hughes snaps, obviously "
   write "keen for you to stop stalling and get on with the job." ^
   break
endif
write "~The jacket has a transmitter sewn into its lining. This allows me to "
write "hear everything that is going on around you from here in the van.~" ^
ensure jacket has CUSTOM4
}

{ask_about_ear_piece
if ear_piece has CUSTOM4
   write "Agent Hughes just shakes his head." ^
   break
endif
write "~While ever you are wearing the earpiece, I will be able to communicate "
write "with you from here in the van. I'll use it to let you know when "
write "we have enough information out of Zuckerman.~" ^
ensure ear_piece has CUSTOM4
}

{talk_to
if hughes has CUSTOM1
   write "~There'll be time to talk later, Alex,~ Agent Hughes responds, "
   write "cutting you short." ^
   break
endif
write "Agent Hughes swivels around in his chair to face you. "
write "~Just be sure to talk to him one scientist to another - it's the only "
write "way you are going to get him to open up. As I said earlier, once he "
write "has divulged enough information about the project, I will let you "
write "know and you can work on getting out of there.~" ^ 
ensure hughes has CUSTOM1
}

{ask_about_petrescu
if petrescu has CUSTOM3
   write "~What else do you expect me to say while he's sitting right next to "
   write "me!~ Agent Hughes replies." ^
   break
endif
write "~Oh, he's not a bad bloke I guess,~ Agent Hughes grins." ^
ensure petrescu has CUSTOM3
}

{ask_about_stranger : tell_about_stranger
if stranger has CUSTOM3
   write "Agents Hughes and Petrescu just shake their heads." ^
   break
endif
write "As you ask about the stranger, both Agent Hughes and Agent Petrescu "
write "begin to laugh." ^^
write "~Don't worry about him,~ Agent Hughes says." ^^
write "~He's just watched one too many Bond movies,~ Agent Petrescu adds.^^"
ensure stranger has CUSTOM3
}

{examine
write "Quite a solid man, Agent Hughes has a mop of curly blonde hair." ^
}

{ask_about_zuckerman
if van_obj has CUSTOM1
   write "~We'll know a lot more once you go and talk to him,~ Agent Hughes "
   write "replies." ^
   break
endif
write "~We've been tracking him for some time now,~ Agent Hughes begins, "
write "~though reliable information has been hard to come by. He has managed "
write "to keep a remarkably low profile up until now, which hasn't made our "
write "job easy.~" ^
}

{ask_about_van
write "~Ah, she's a wee rippa!~ Agent Hughes exclaims, much to your dismay." ^
}

{ask_about_equipment : ask_about_scannar : ask_about_microphone : ask_about_reel-to-reel :ask_about_video_monitors
write "~We don't really have time for this now, Alex,~ Agent hughes replies." ^
}

object headphones: headphones
 has		WORN
 inventory	the "headphones"
 starts childof hughes
 mass		5

object petrescu: special agent petrescu man
 has		ANIMATE POSSESSIVE
 inventory	name "Agent Petrescu"
 described	"Agent Petrescu is standing here."
 mass		heavy

{thank
write "~No - thank you, Dr Meadows,~ Agent Petrescu replies." ^
}
 
{ask_about_equipment : ask_about_scannar : ask_about_microphone : ask_about_reel-to-reel :ask_about_video_monitors
write "~Perhaps we can give you a run down on the equipment later,~ Agent "
write "Petrescu says, obviously eager for you to get going." ^
}

{ask_about_zuckerman
if van_obj has CUSTOM1
   write "~We'll know a lot more once you go and talk to him,~ Agent Petrescu "
   write "replies." ^
   break
endif
write "~We've been tracking him for some time now,~ Agent Petrescu begins, "
write "~though reliable information has been hard to come by. He has managed "
write "to keep a remarkably low profile up until now which hasn't made our "
write "job easy.~" ^
}

{attack
write "Not a good idea." ^
set TURN_WORKED = false
}

{ask_about_ear_piece
write "Agent Petrescu, admitting he's not the expert, turns to Agent Hughes"
if ear_piece has CUSTOM4
   write " who just shakes his head." ^
   break
endif
write " who replies, "
execute "ask_about_ear_piece_hughes"
}

{ask_about_jacket
if jacket has CUSTOM4
   execute "ask_about_jacket_hughes"
   write "^You turn back to agent Petrescu who just shrugs." ^
   break
endif
write "Before Agent Petrescu has a chance to answer, Agent Hughes interrupts, "
execute "ask_about_jacket_hughes"
}

{talk_to
if petrescu has CUSTOM1
   write "~If we keep talking, the conference will be over before you get "
   write "in there,~ Agent Petrescu says with a smile." ^
   break
endif
write "~You're going to be fine,~ Agent Petrescu reassures you. ~Dr "
write "Zuckerman, as unethical as he may be, poses no threat. Well, not to "
write "you anyway.~^"
ensure petrescu has CUSTOM1
}
  
{ask_about_hughes
if hughes has CUSTOM3
   write "~I'm not about to change my mind in a hurry,~ Agent Petrescu "
   write "replies." ^
   break
endif
write "~He's a grumpy old bastard if you ask me,~ Agent Petrescu says with "
write "his tongue firmly embedded in his cheek." ^
ensure hughes has CUSTOM3
}

{ask_about_stranger : tell_about_stranger
execute "ask_about_stranger_hughes"
}

{examine
write "You can't help but think Agent Petrescu looks a little bit like David "
write "Duchovny." ^
}

location street:
 has		OUTDOORS
 in		van
 west		van
 no_go		"You can either go north towards the hotel or back into the van."
 north		driveway

{look
if here has VISITED
   write "You are out on the street, opposite the Hotel Les Terrasses d'Eze.^"
   break
endif
write "Light from the street lamps is softened by a dense fog that is slowly "
write "beginning to roll in. To the south you can see down the steep rocky "
write "cliffs out across the Mediterranean Sea. To the west, parked against "
write "the curb, is a white Mercedes van while the Hotel Les Terrasses d'Eze "
write "lies across the road to the north. The sliding door to the van is "
write "currently "
if van_doors has CLOSED
   write "closed." ^
else
   write "open." ^
endif
} 

{look_south
write "You can see down the steep rocky cliffs out across the Mediterranean "
write "Sea." ^
}

{look_up
write "The light drizzle moistens your face." ^
}

object street_lamps: street lamps lamp
 has		OUT_OF_REACH
 inventory	the "street lamps"

{examine
write "Light from the street lamps is softened by a dense fog that is slowly "
write "beginning to roll in." ^
}

{climb
write "The street lamps are too slippery to climb due to the light rain." ^
}

object fog: dense fog
 inventory	the "dense fog"

{examine
write "The dense fog is slowly rolling in from over the sea." ^
}

object hotel_obj: hotel les terrasses d'eze
 inventory	the "Hotel Les Terrasses d'Eze"

{examine
write "Only five stories tall, the Hotel Les Terrasses d'Eze is quite a grand "
write "old building. Its broad structure is made almost entirely from carved "
write "stone blocks." ^
}

{enter
proxy "north"
}

object van_obj: white mercedes van
 inventory	a "white Mercedes van"

{open
proxy "open sliding door"
}

{close
proxy "close sliding door"
}

{enter
if here = van
   write "You are already in the van!" ^
   break
endif
proxy "in"
}

{look_under
if here = van
   write "You can't see under the van while you are in it." ^
   break
endif
write "Just dirty water flowing along a shallow stone gutter." ^
}

location driveway:
 has		OUTDOORS
 north		lobby
 south		street
 southeast	street
 southwest	street
 go_southwest	"Dodging cars, you make your way back out to the street."
 go_southeast	"Dodging cars, you make your way back out to the street."
 no_west	"There is no pedestrian access to the underground car park from here."
 no_east	"There is no pedestrian access to the underground car park from here."
 no_down	"There is no pedestrian access to the underground car park from here."
 go_north	"As you approach the front doors of the hotel, one of the uniformed men opens them and bids you a good evening."

{look
if here has VISITED
   write "Once again, you are standing in the hotel driveway." ^
   break
endif
write "Several uniformed men stand here escorting hotel guests from their "
write "cars into the brightly lit lobby to the north. Valet parking "
write "attendants briskly dispatch each private vehicle to the hotel's "
write "underground car park while an endless stream of hire cars come and "
write "go at a chaotic rate. A black Lotus Esprit, standing opposite "
write "the main entrance, appears to be the only car parked here." ^ 
}

{look_east
write "To the east the driveway curls down to the entrance of the underground "
write "car park." ^
}

{look_west
write "To the west the driveway curls down to the exit of the underground "
write "car park." ^
}

{look_southwest
write "Cars enter from the street to the southwest." ^
}

{look_southeast
write "Cars exit to the street to the southeast." ^
}

object attendants: valet parking attendants
 has		ANIMATE PLURAL
 inventory	the "valet parking attendants"

object door_men: uniformed men doormen doorman
 has		ANIMATE PLURAL
 inventory	the "uniformed men"

{greet
write "One of the uniformed men bows politely and bids you a good evening." ^
}

{examine
write "The uniformed men look like something out of a story book. Brightly "
write "polished shoes and brass buttons, their presentation is impeccable." ^
}

object esprit: black lotus esprit car
 has		CLOSABLE CLOSED LOCKED
 inventory	a "black Lotus Esprit"

{examine
write "The light rain beads on Lotus Esprit's highly waxed and polished duco. "
write "Through the heavily tinted windows you can barely make out the light "
write "tan leather of its interior." ^
}

{look_under
write "There is a small oil stain on the driveway." ^
}

{open
write "You surreptitiously try the handle, but it is locked." ^
}

location lobby: 
 south		driveway
 north		ground_floor
 northeast	mezzanine
 northwest	mezzanine
 go_northeast	"The stairs turn a half-circle as you ascend to the mezzanine level."
 go_northwest	"The stairs turn a half-circle as you ascend to the mezzanine level."
 up		mezzanine
 east		concierge_desk
 west		bar
 
{look
if here has VISITED
   write "You have arrived back at the hotel lobby." ^
   break
endif
write "Tall marble pillars stretch from the polished floor here to the "
write "ceiling several stories above your head. Ahead of you to the northeast "
write "and northwest, wide stairs turn a half circle from each side of the "
write "room, leading up to a mezzanine level that overlooks the lobby. "
write "Directly north, in between the stairs, you can see the lifts. "
write "Light from an elaborate chandelier reflects brightly off the gold "
write "leaf trimmings that edge banisters and floor tiles. "
write "To the east several hotel guests are milling around the concierge "
write "desk while a dimly lit piano bar can be entered to the west." ^
}

object sign: a-frame sign
 inventory	an "A-frame sign"
 described	"An A-frame sign stands to one side."
 mass		heavy

{examine : read
write "The sign reads..." ^^
centre "-----------------------------------------"
centre "[  12th Annual Microbiology Conference  ]"
centre "[                                       ]"
centre "[             fourth floor              ]
centre "[                                       ]"
centre "[                                       ]"
centre "[            KEYNOTE SPEAKER            ]"
centre "[           Dr Leif Zuckerman           ]"
centre "[                                       ]"
centre "[                                       ]"
centre "[        Sponsered by the Anderson-Dale ]"
centre "[           Centre for Genetic Research ]"
centre "-----------------------------------------"
}

object stairs_bottom: wide stairs
 has		PLURAL
 inventory	the "wide stairs"

{examine
write "The stairs are made from marble and covered with a thick, richly "
write "coloured carpet. The railings are made from a highly polished "
write "hardwood, inlaid with gold edging." ^
}

{climb : climb_up
proxy "go up"
}

{climb_down
write "You are already at the bottom of the stairs." ^
}

object chandelier: elaborate chandelier
 has		OUT_OF_REACH
 inventory	an "elaborate chandelier"
	
{examine
write "You can't help but think the chandelier is a little bit over the top." ^
}

location concierge_desk:
 west		lobby
 out		lobby
 no_go		"The only exit from here is back west into the lobby."

{look
if here has VISITED
   write "You are now back at the concierge desk." ^
   break
endif
write "Several hotel guests are standing here before a long curved counter, "
write "carefully keeping an eye on their luggage. A set of wooden pigeon "
write "holes line the far wall." ^
}

{first_hint
write "You are going to need to know the name of someone who is attending the "
write "conference who is able to come down. You will also need the name of "
write "someone they would bother to come down for." ^
set TURN_WORKED = false
}

{second_hint
write "The elderly man in the piano bar has a friend attending the "
write "conference, try to find out his name and the name of his friend." ^^
write "Once the person has been paged, you will want to make sure they come "
write "down in the lift you want. The only way to make this happen is to "
write "ensure they only have one choice." ^
set TURN_WORKED = false
}

{third_hint
write "All you need to do is:" ^^
write "  >TELL THE CONCIERGE ABOUT THE FLICKERING LIGHT" ^
write "  >CONCIERGE, PAGE GULLIT" ^
write "  >CONCIERGE, ZOLA" ^
set TURN_WORKED = false
}

object guests: hotel guest guests
 has		PLURAL ANIMATE
 inventory	the "hotel guests"

object luggage: hotel guests guest's luggage
 has		OUT_OF_REACH
 inventory	the "guest's luggage"

{take
write "I don't think the hotel guests would appreciate that." ^
set TURN_WORKED = false
}

object hotel_phone: hotel concierge's concierges telephone franks frank's phone
 inventory	the "concierge's telephone"
 starts childof counter
 mass		heavy

{take
write "I think the concierge might having something to say about you "
write "walking off with his telephone." ^
}

object holes: pigeon holes
 has		PLURAL OUT_OF_REACH
 inventory	the "pigeon holes"

{examine
write "The pigeon holes contain a variety of keys and phone messages." ^
}

object keys: variety of keys key
 has		PLURAL OUT_OF_REACH
 inventory	the "variety of keys"

object messages: guests guest's phone messages notes message note letter
 has		PLURAL OUT_OF_REACH
 inventory	the "phone messages"

{read : examine
write "Only one of the messages is angled in such a way that allows you to "
write "see it clearly and it reads, ~Played your game last night and loved "
write "it, a definite ten out of ten, Dave Lebling~." ^
}

object guest_list: conference hotel guest list
 has		OUT_OF_REACH
 inventory	the "guest list"

{read : examine
write "The writing on the guest list is too small to read from here." ^
}

object concierge: concierge man frank leboeuf 
 has		ANIMATE
 inventory	the "concierge"
 described	"A single concierge stands behind the counter."
 mass		heavy

{ask_for_mil_key
write "~I'm sorry. I am not authorised to issue you with a MIL key,~ the "
write "concierge replies." ^
}

{tell_about_zola
if WHO_I_AM = false
   if PAGE_REQUESTED != false
      proxy "tell concierge my name is zola"
      break
endall
break false
}

{ask_for_guest_list
write "~I am sorry, the guest list is confidential so I am unable to give it "
write "to you,~ the concierge apologises." ^
}

{talk_to
if concierge has CUSTOM2
   write "The concierge doesn't appear to have time for idle conversation.^"
   break
endif
if concierge has CUSTOM4
   write "~If you know of someone who could sign you in, just ask me to page "
   write "them for you,~ the concierge reaffirms politely." ^ 
   break
endif
write "You explain to the concierge how you had been invited to attend the "
write "conference this evening, only to have your bag stolen containing both "
write "your invitation and your identification." ^^
write "~The best I can do is to have one of the other guests sign you "
write "in. If there is anyone you know who would be willing to come down, I "
write "would be happy page them for you,~ the concierge explains." ^
ensure concierge has CUSTOM4
}
 
{ask_to_page_zuckerman_override
if concierge has CUSTOM1
   write "~I am afraid Monsieur Zuckerman is currently unavailable.~" ^
   break
endif
write "~One moment...~ the concierge says as he picks up the telephone." ^^
write "After a few brief words, he hangs the phone up again and turns back to "
write "you. ~I am afraid Monsieur Zuckerman is currently speaking and cannot, "
write "therefore, come down at this moment.~" ^ 
ensure concierge has CUSTOM1
}

{greet
write "~Hello,~ the concierge replies with a smile." ^
}

{ask_to_page_ruud_override
if concierge has CUSTOM2
   write "~I have already paged him for you.~" ^
   break
endif
write "~One moment...~ the concierge says as he picks up the telephone." ^^
write "After a few brief words, he hangs the phone up again and turns back to "
write "you. ~Monsieur Gullit will be down shortly.~" ^
if WHO_I_AM = zola
   set GULLITS_SCRIPT = 1
endif
ensure concierge has CUSTOM2
}

{tell_about_lift_1_obj : tell_about_lift_1_light
if lift_1 hasnt CUSTOM1
   write "You tell the concierge about the flickering light in east lift. " ^^
   write "~Thank you for taking the time to mention it to me. I will have "
   write "the lift disabled until the maintenance man has an opportunity to "
   write "attend to it.~" ^^
   write "Reaching down, the concierge picks up the telephone and engages in "
   write "a brief conversation held entirely in French." ^
   ensure lift_1 has CUSTOM1
   points 5
   break
endif
write "~I recall, thank you.~" ^
}

{tell_about_lift_2_obj
if lift_2 hasnt CUSTOM1
   write "You engage in a brief discussion on the merits of the west lift." ^
   break
endif
write "There is only so much that can be said about a lift." ^
}

{examine
write "The concierge is a tall man in his middle twenties. He is wearing a "
write "gold coloured name tag that reads, ~Frank Leboeuf~." ^
}

object knob: knob
 inventory	a "knob"

{turn
write "The bell is rung by tapping the knob." ^
}

{knock_on : flick
proxy "ring bell"
}

object bell: small brass bell
 inventory	a "small brass bell"
 starts childof counter
 mass		heavy

{examine
write "The small bell is nothing more than a highly polished brass dome with "
write "a knob at its peak for ringing it. You amuse yourself briefly by "
write "moving your head around, admiring your comically distorted reflection "
write "on its curved exterior." ^
}

{ring
if bell has CUSTOM4
   write "Feeling hungry?" ^
   set TURN_WORKED = false
   break
endif
write "The concierge looks at you and smiles, although you can tell he is "
write "thinking, ~Ring that bell again and I'll make you eat it.~" ^
ensure bell has CUSTOM4
}

{take
write "The bell is glued quite firmly to the counter." ^
set TURN_WORKED = false
}

{eat
if bell has CUSTOM4
   write "In an attempt to amaze the concierge with your psychic powers?" ^
   set TURN_WORKED = false
   break
endif
break false
}

object counter: long curved counter
 has		SURFACE
 inventory	a "long curved counter"
 quantity	50

location bar:
 east		lobby
 south		lounge
 no_go		"You can either go south into the lounge area or east back into the lobby."

{look
if here has VISITED
   write "You have arrived back at the bar." ^
   break
endif
write "Behind the bar, rows of bottles of all shapes and sizes line the "
write "narrow glass shelves. Coloured fluorescent light reflects off the "
write "bottles and the mirrored wall behind them, filling your eyes with a "
write "dazzling display. Low rectangular tables squat before comfortable "
write "leather chairs where many guests are talking loudly. To the "
write "south you can enter a sunken lounge area." ^
}

{sit
write "I don't think you should be lounging around in bars at this point in "
write "time." ^
set TURN_WORKED = false
}

{smell
write "All you can smell is stale tobacco." ^
}

{listen
write "Over the many loud voices you can barely hear "
execute "global_song"
write " being played on the piano in the lounge to the south." ^
}

{first_hint
write "The hints in the lounge area cover this location." ^
set TURN_WORKED = false
}

object waitress: waitress bar lady women
 has		ANIMATE FEMALE
 inventory	the "waitress"
 described	"Standing by the table at which the men are seated is a waitress."
 mass		heavy
 starts		lounge

{tell_about_lift_1_obj : tell_about_lift_1_light
write "~The concierge will be able to help you with that,~ the waitress "
write "replies politely." ^
}

{examine
write "The waitress appears to be in her mid thirties and is as impeccably "
write "dressed as the other staff members. The waitress is carrying a silver "
write "drinks tray." ^
}

{ask_for_credit_card
write "Unable to believe you would ask her to give you another guest's "
write "credit card the waitress fails to respond." ^
}

{ask_for_drink
write "~I'll be with you in a moment,~ the waitress tells you politely." ^
}

{greet
write "The waitress smiles." ^
}

{talk_to
write "In order to attend to her duties, the waitress politely excuses "
write "herself from engaging in a long conversation." ^
}
 
object tray: silver drinks tray
 has		SURFACE OUT_OF_REACH
 inventory	a "silver drinks tray"
 quantity	10
 starts childof waitress
 mass		10

{take
write "Fighting the waitress for the drinks tray in the middle of the bar "
write "is more than likely to cause a scene. ~Be sure to make your "
write "entrance discreet,~ you recall Agent Petrescu warning back in the van, "
write "so you resist." ^
set TURN_WORKED = false
}

object ordered_drinks: ordered guest's guests variety of drinks
 has		PLURAL OUT_OF_REACH
 inventory 	a "variety of drinks"
 starts		limbo	
 
{examine
write "There are no useful clues in the hotel guest's drinks." ^
}

{take
write "But they're not yours!" ^
set TURN_WORKED = false
}

object credit_card: credit card
 has		OUT_OF_REACH
 inventory	a "credit card"
 starts childof tray
 mass		2

{examine : read
write "The credit card is an American Express Gold Card with the name "
write "~G. Zola~ on it." ^
move zola to lounge
move elderly_man to limbo
describe younger_man as "A younger man is sitting with the Mr Zola, listening intently."
if credit_card hasnt SCORED
   points 5
   ensure credit_card has SCORED
endif
}

{take
set TURN_WORKED = false
if credit_card childof try
   write "You dare not try to steal the credit card from the waitress's "
   write "drinks tray in the middle of a crowded hotel." ^
   break
endif
write "You dare not clamber over the bar and attempt to steal the credit card."
write ^
}

object square_tables: low rectangular tables
 has		PLURAL 
 inventory	the "low rectangular tables"

object lounges: leather lounge chairs
 inventory	the "leather lounge chairs"

{sit_on_override
execute "sit_bar"
}

{examine
write "The leather lounge chairs are all occupied by guests." ^
}

object drink: drink beer martini lager and coke red white wine champagne scotch coniac port water ale rum malibu tequila gin cherry
 inventory	a "drink"
 starts childof landlord
 mass		10

{order
if here = bar
   proxy "ask waiter for drink"
   break
endif
write "There is nobody here taking drinks orders." ^
set TURN_WORKED = false
}

object landlord: barman man cocktail waiter landlord
 has		ANIMATE OUT_OF_REACH
 inventory	the "cocktail waiter"
 described	"Behind the bar, wearing a neatly pressed dinner suit, is a cocktail waiter."
 mass		heavy
 
{examine
write "The cocktail waiter is wearing a neatly pressed dinner suit. He "
write "appears to be about fifty years old, although it is hard to be sure." ^
}

{tell_about_lift_1_obj : tell_about_lift_1_light
write "~If you tell the concierge, he will have it seen to immediately,~ the "
write "cocktail waiter says with a smile." ^
}

{talk_to : greet
write "You should know better than to get a barman talking when you're in a "
write "hurry." ^
}

{ask_about_bottles
write "~They are made from glass,~ the cocktail waiter informs you with a "
write "polite yet insulting smile." ^
}

{ask_for_bottles : ask_for_drink : order_bottles : order_drink
if hughes has CUSTOM2
   write "Recalling Agent Hughes' reaction, you decide not to." ^
   set TURN_WORKED = false
   break
endif
if noun2 = bottles
   write "~Planning on a big night?~" ^
endif
if noun2 = drink
   write "~Will that be cash or charge?~" ^
endif
if hughes hasnt CUSTOM2
   if ear_piece has WORN
      if jacket is *present
         write ^ "~You haven't got time for a drink!~ you hear Agent Hughes "
         write "exclaim through the ear piece."^
         ensure hughes has CUSTOM2
endall
}

object bar_shelves: narrow glass shelves shelf
 has		PLURAL OUT_OF_REACH
 inventory	the "narrow glass shelves"

{examine
write "Rows of bottles of all shapes and sizes line the narrow glass shelves. "
if credit_card childof bar_shelves
   write "Resting on one of the lower shelves is the elderly man's credit "
   write "card."
endif
write ^
}

object bottles: bottles
 has		PLURAL OUT_OF_REACH
 inventory	the "bottles"

object long_bar: long bar
 has		SURFACE
 inventory	a "bar"
 quantity	100

{examine
write "The dark wood of the bar has been highly polished. "
execute "global_details"
}

{sit_on
write "I'm sure that will please the cocktail waiter." ^
}

object coaster: cardboard coaster
 has		WEARABLE
 inventory	a "cardboard coaster"
 described	"There is a cardboard coaster here."
 starts childof long_bar
 mass		1

{examine : read
write "The coaster has the hotel name and emblem on it." ^
}

{wear_override
if coaster has CUSTOM2
   write "You decide that you have made a big enough fool of yourself for one "
   write "day." ^
   break
endif
write "Tearing a small triangle out of one side of the coaster, you wedge "
write "it onto your nose. Standing up, you shout at the top of your voice, "
write "~Okay, who threw that!~" ^
ensure coaster has WORN
ensure coaster has CUSTOM2
}

object wooden_bowl: shallow wooden bowl
 has		CONTAINER
 inventory	a "shallow wooden bowl"
 described	"A shallow wooden bowl rests on the ground."
 quantity	1
 starts childof long_bar
 mass		4

{examine
write "The shallow wooden bowl contains the usual assortment of pretzels." ^
}

object bar_guests: bar guest guests patrons
 has		PLURAL ANIMATE
 inventory	the "bar guests"

{examine
write "The guests appear to be enjoying themselves." ^
}

object pretzels: pretzels
 has		PLURAL
 inventory	some "pretzels"
 starts	childof wooden_bowl
 mass		1

{examine
write "They look edible." ^
}

{sniff
write "They smell edible." ^
}

{take : eat
set PRETZELS_EATEN + 1
if PRETZELS_EATEN = 5
   write "You have had your fill of the pretzels." ^
   set TURN_WORKED = false
   break
endif
write "You nibble one of the pretzels from the shallow wooden bowl." ^
}

{move
write "You sift through the pretzels looking for an appealing one. You fail." ^
}

location lounge:
 north		bar
 out		bar
 no_go		"The only exit from here is back north."

{look
if here has VISITED
   write "You have returned to the lounge area." ^
   break
endif
write "Dimly lit compared to the main bar, this area is also noticeably "
write "quieter. Several round tables surrounded by chairs are scattered about "
write "the room. A young lady, sitting at a black baby grand piano, is "
write "currently playing "
execute "global_song"
write ". Large ceiling to floor windows afford a view out across the street "
write "to the south, blurred slightly by a film of water formed by the light "
write "drizzle and fog." ^
}

{sit
execute "sit_bar"
}

{listen
write "You can hear "
execute "global_song"
write " currently being played on the piano." ^
}

{first_hint
write "The elderly man has a friend who is attending the conference and "
write "is discussing this very fact with the younger man when you first "
write "arrive." ^
set TURN_WORKED = false
}

{second_hint
write "You will also need to know the name of the elderly man. When the "
write "waitress arrives with their drinks, he gives his credit card to "
write "her. His name is on the card." ^
}

{third_hint
write "When you first arrive type:" ^^
write "  >LISTEN TO THE ELDERLY MAN" ^
write "  >NORTH" ^
write "  >EXAMINE THE CREDIT CARD" ^
set TURN_WORKED = false
}

object large_windows: large windows window
 inventory	the "large windows"

{examine : look_through
write "Peering through the drizzle and fog you can see people hurrying along "
write "the cold and wet street outside." ^ 
}

object zola: gianfranco mr zola elderly man
 has		ANIMATE
 inventory	name "Mr Zola"
 described	"Mr Zola is still sitting at one of the tables."
 mass		heavy
 starts		limbo

{talk_to : greet
execute "talk_to_elderly_man"
}

{examine
execute "examine_elderly_man"
}

{listen_to
execute "listen_to_elderly_man"
}

{ask_about_ruud
write "Mr Zola appears to resent you trying to get involved in the "
write "conversation." ^
}

object elderly_man: elderly man elder
 has		ANIMATE
 inventory	the "elderly man"
 described	"Sitting at one of the tables is an elderly man."
 mass		heavy

{ask_about_ruud
write "Mr Zola appears to resent you trying to get involved in the "
write "conversation." ^
}

{talk_to : greet
if elderly_man hasnt CUSTOM4
   write "Barely looking up at you, the elderly man grunts a terse "
   write "reply in a heavy Italian accent." ^
   ensure elderly_man has CUSTOM4
   break
endif
write "The elderly man ignores you." ^
}

{examine
write "The elderly man is wearing a brown, and rather outdated, three piece "
write "suit." ^
}

{listen_to
if GULLITS_SCRIPT = 24 
   if ruud hasnt CUSTOM4
      write "The elderly man is currently listening to his recently arrived "
      write "friend." ^^
      write "~Even if the hotel did make a mistake,~ the well dressed "
      write "gentleman says with a smile, ~it is probably for the best. I "
      write "don't know how much longer I could have listened to that insane "
      write "old man babble on about his ludicrous theories.~" ^
      ensure ruud has CUSTOM4
      break
   endif
   write "All three men are currently engaged in a conversation regarding "
   write "the merits of thigh-high boots." ^
   break
endall 
if elderly_man hasnt SCORED
   write "The elderly man is telling the younger man how a friend of his, "
   write "Ruud Gullit, is attending the conference upstairs tonight." ^
   ensure elderly_man has SCORED
   points 5
   break
endif
write "The elderly man is now telling the younger man all about the '97 F.A. "
write "Cup final." ^ 
}

object younger_man: younger man young
 has		ANIMATE
 inventory	the "younger man"
 described	"A younger man is sitting with the elderly man, listening intently."
 mass		heavy

{examine
write "The younger man is quite lean with short dark hair. He appears to be "
write "looking at the elderly man with much admiration." ^
}

{talk_to : greet
if younger_man hasnt CUSTOM4
   write "The younger man looks up at you and smiles." ^
   ensure younger_man has CUSTOM4
   break
endif
write "The younger man pretends to be listening so intently to the elderly "
write "man that he doesn't notice you." ^
}

{listen_to
if GULLITS_SCRIPT = 24
   if ruud hasnt CUSTOM4
      write "The younger man is currently listening to the elderly man's "
      write "recently arrived friend." ^^
      write "~Even if the hotel did make a mistake,~ the well dressed "
      write "gentleman says with a smile, ~it is probably for the best. I "
      write "don't know how much longer I could have listened to that insane "
      write "old man babble on about his ludicrous theories.~" ^
      ensure ruud has CUSTOM4
      break
   endif
   write "All three men are currently engaged in a conversation regarding "
   write "the merits of thigh high boots." ^
   break
endall 
if elderly_man hasnt SCORED
   write "The elderly man is telling the younger man how a friend of his, "
   write "Ruud Gullit, is attending the conference upstairs tonight." ^
   ensure elderly_man has SCORED
   points 5
   break
endif
write "The elderly man is now telling the younger man all about the '97 F.A. "
write "Cup final." ^ 
}

object ruud: ruud gullit well dressed man god
 has		ANIMATE
 inventory	the "well dressed gentleman"
 described	"Standing casually nearby is a well dressed gentleman."
 starts		limbo
 mass		heavy

{talk_to : greet
write "The well dressed gentleman smiles, but says nothing." ^
}

{ask_about_zola : ask_about_elderly_man
if ruud hasnt CUSTOM5 
   write "~He is a good friend of mine from way back.~" ^
   ensure ruud has CUSTOM5
   break
endif
write "~If you want to know anything more, you will have to ask him "
write "yourself.~" ^
}

{attack
write "Moments later you pick yourself up off the ground and wonder what "
write "happened." ^
}

{listen_to
if GULLITS_SCRIPT = 24
   if ruud hasnt CUSTOM4
      write "~Even if the hotel did make a mistake,~ the well dressed "
      write "gentleman says with a smile, ~it is probably for the best. I "
      write "don't know how much longer I could have listened to that insane "
      write "old man babble on about his ludicrous theories.~" ^
      ensure ruud has CUSTOM4
      break
   endif
   write "All three men are currently engaged in a conversation regarding "
   write "the merits of thigh high boots." ^
   break
endif
break false
}

object piano: black yamaha baby grand piano
 inventory	a "piano"

{play
write "A duet perhaps?" ^
set TURN_WORKED = false
}

{examine
write "A large potted palm stands before the piano - a black Yamaha baby "
write "grand." ^
}

{look_behind
write "There is a lady behind the piano playing "
execute "global_song"
write .^
}

{listen_to
execute "listen_lounge"
}

object plant: pot potted palm plant
 inventory	a "potted palm"

{look_in
write "Just a bit of dirt." ^
}

{examine
write "Almost two metres tall, the palm's flickering shadow is cast on to the "
write "open lid of the piano." ^
}

{look_behind
write "There is a baby grand piano there." ^
}

object piano_player: piano player pretty women lady musician
 has		ANIMATE
 inventory	the "piano player"
 
{examine
write "Young, and quite pretty, the lady is playing "
execute "global_song"
write .^
}

{talk_to
write "She's a little busy right now." ^
set TURN_WORKED = false
}

object tables: several round tables
 has		PLURAL
 inventory	the "round tables"

{examine
write "Each of the round tables has a candle on it and three or four chairs "
write "around it." ^
}

object candles: candles candle
 has		PLURAL LUMINOUS

{examine
write "The soft light from the candles creates a warm relaxing atmosphere "
write "here." ^
}

location mezzanine:
 north		first_floor
 no_east	"The hallway leads only to guest's private rooms."
 no_west	"The hallway leads only to guest's private rooms."
 northwest	lobby
 go_northwest	"The stairs turn a half-circle as you descend down into the lobby." ^
 go_southwest	"The stairs turn a half-circle as you descend down into the lobby." ^
 northeast	lobby
 down		lobby

{look
if here has VISITED
   write "Once again, you are standing on the mezzanine level." ^
   break
endif
write "This mezzanine level is mostly bare marble floor space. Looking over "
write "a waist high railing that runs along its south edge, you can see "
write "down into the lobby below. Stairs in the northwest and northeast "
write "corner lead back down to the street level while the lift area can "
write "be reached to the north. To the east and west extends a long corridor "
write "with many doors along each side." ^
}

{jump
write "Over the railing?" ^
}

object stairs_top: wide stairs
 has		PLURAL
 inventory	the "wide stairs"

{examine
execute "examine_stairs_bottom"
}

{climb : climb_down
proxy "go down"
}

{climb_up
write "You are already at the top of the stairs." ^
}

object railing: waist high railing
 inventory	a "waist high railing"

{examine
write "The railing matches the one on the stairs leading up here in both "
write "style and purpose." ^
}

{jump_over
write "I don't think performing a swan dive into the lobby is going to help "
write "at all." ^
set TURN_WORKED = false
}

{climb
write "Sounds a bit dangerous to me." ^
set TURN_WORKED = false
}

location ground_floor:
 west		nowhere
 no_west	"The lift doors are closed." ^
 east		nowhere
 no_east	"The lift doors are closed." ^
 south		lobby
 no_in		"Did you want to go in the west lift or the east lift."

{look
if here has VISITED
   write "You are back on the ground floor, standing outside the lifts." ^
   break
endif
write "You are on the ground floor standing outside two lifts, one to the "
write "east, one to the west. A lift can be called by pressing a button "
write "located on the north wall next a large gold framed mirror. "
write "Beneath the mirror there is an ornate side table. The hotel lobby "
write "can be seen to the south." ^
}

object mirror: large gold framed mirror
 inventory	a "large gold framed mirror"
 
{examine : look_in
write "It has been a long time since you have dressed up for a formal "
write "occasion and the results please you." ^
}

{look_behind
write "Not a sausage." ^
}

object vase: brass vase
 has		CONTAINER
 inventory	a "brass vase"
 described	"There is a brass vase resting on the ground."
 quantity	5
 mass		10
 starts childof side_table

object butt: cigarette butt
 described	"An old cigarette butt rests on the ground." ^
 inventory	a "cigarette butt"
 mass		2
 starts childof vase
 
{examine : sniff
write "Quite repugnant really." ^
}

{eat
write "There are pretzels in the bar, you know." ^
set TURN_WORKED = false
}

object flowers: dried flowers
 has		PLURAL
 inventory	some "dried flowers"
 described	"A bunch of dried flowers rest here."
 mass		5
 starts childof vase

{sniff
write "The flowers are dried and therefore practically odourless." ^
}

object side_table: ornate side table
 has		SURFACE
 inventory	a "ornate side table"
 quantity	10

object call_button_0: call button
 inventory	a "call button"

{examine
write "The call button is currently "
if call_button_0 has ON
   write "lit." ^
   break
endif
write "out." ^
}

{press : move
if call_button_1 has ON
   write "Pressing the call button on the first floor then running down the "
   write "stairs to press it on the ground floor might be awfully good fun, "
   write "but it really isn't going to help." ^
   set TURN_WORKED = false
   break
endif
if call_button_0 has ON
   write "The call button has already been pressed." ^
   set TURN_WORKED = false
   break
endif
if LIFT_1_POSITION = 0
   if lift_1 hasnt CUSTOM1
      if lift_1_obj(info) > 0
          write "There is already a lift here." ^
          set TURN_WORKED = false
          break
      endif
      execute "global_lift_1_open"
      break
endall
if LIFT_2_POSITION = 0
   if lift_2_obj(info) > 0
      write "There is already a lift here." ^
      set TURN_WORKED = false
      break
   endif
   execute "global_lift_2_open"
   break
endif
write "As you press the call button it lights up." ^
ensure call_button_0 has ON
}

location lift_1:
 out		nowhere
 west		nowhere
 no_west	"The lift doors are currently closed."
 no_go		"The only way out of the lift is to the west."
 
{look
if here has VISITED
   write "You are back in the east lift." ^
   break
endif
write "The lift is about three metres square and every bit as opulent as the "
write "rest of the hotel. There is a panel of buttons on the wall directly "
write "beneath a small metal plaque. The lift doors are to the west and "
write "currently "
if lift_1_obj(info) = 0
   write "closed."
else
   write "open."
write ^^ "The light in this lift is flickering quite badly." ^
}

{first_hint
write "The hotel management would be quite interested in hearing about that "
write "flickering light, and it is in your interest that they do." ^
set TURN_WORKED = false
}

{second_hint
write "See the hints at the concierge desk for further information." ^
set TURN_WORKED = false
}

object lift_1_red: small red light lift one led
 inventory	a "small red light in lift one"

{examine
write "The small red light is currently out." ^
}
 
object lift_1_green: small green light lift one led
 inventory	a "small green light in lift one"

{examine
write "The small green light is currently out." ^
}
 
object lift_1_light: flickering fluorescent light
 has		OUT_OF_REACH
 inventory	a "flickering fluorescent light"

{examine
write "The fluorescent light in the ceiling of the lift is flickering badly." ^
}

object lift_1_door: east eastern lift door one
 has		PLURAL
 inventory	the "east lift doors" 

{examine
write "The lift doors are currently "
if here(out) = nowhere
   write "closed." ^
else
   write "open." ^
}

{open
write "(by pressing the open doors button)" ^
proxy "press open doors button"
}

{close
write "(by pressing the close doors button)" ^
proxy "press close doors button"
}

object plaque_1: small metal plaque
 inventory	a "small metal plaque"

{examine : read
write "The plaque simply reads, ~LIFT 1~." ^
}

object c_button_1: east eastern close door button control one
 inventory	a "close doors button"

{press : move
if lift_1_obj(info) = 0
   write "The doors are already closed." ^
   set TURN_WORKED = false
   break
endif
set lift_1_obj(info) = 0
execute "global_lift_1_close"
}

object o_button_1: east eastern open door button control one
 inventory	a "open doors button"

{press : move
if lift_1_obj(info) > 0
   write "The doors are already open." ^
   set TURN_WORKED = false
   break
endif
if LIFT_1_TASK != 42
   write "The lift doors refuse to open while the lift is in motion." ^
   break
endif
execute "global_lift_1_open"
write "The lift doors slide open." ^
}

object g_button_1: ground floor button g
 inventory	a "ground floor button"

{press : move
if LIFT_1_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_1_POSITION = 0
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_1_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_1_TASK = 0
ensure g_button_1 has ON
write "The button lights up as you press it." ^
}

object 1_button_1: first floor button one
 inventory	a "first floor button"

{press : move
if LIFT_1_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_1_POSITION = 1
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_1_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_1_TASK = 1
ensure 1_button_1 has ON
write "The button lights up as you press it." ^
}

object 2_button_1: second floor button two
 inventory	a "second floor button"

{press : move
if LIFT_1_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_1_POSITION = 2
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_1_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_1_TASK = 2
ensure 2_button_1 has ON
write "The button lights up as you press it." ^
}

object 3_button_1: third floor button three
 inventory	a "third floor button"

{press : move
if LIFT_1_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_1_POSITION = 3
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_1_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_1_TASK = 3
ensure 3_button_1 has ON
write "The button lights up as you press it." ^
}

object 4_button_1: fourth floor button four
 inventory	a "fourth floor button"

{press : move
write "The button lights as you press it, only to go off again when you "
write "release it. Stepping back, you notice the red light beside the MIL key "
write "slot flash on and off momentarily." ^
}

object panel_1: panel of buttons
 inventory 	a "panel of buttons"

{examine
write "The panel consists of seven buttons labelled ground, one, two, three, "
write "four, open and close. Beneath the buttons there is a MIL key slot "
write "which has a red light to its left and a green light to its right. "
if g_button_1 has ON
   write "The button for the ground floor is currently lit." ^
   break
endif
if 1_button_1 has ON
   write "The button for the first floor is currently lit." ^
   break
endif
if 2_button_1 has ON
   write "The button for the second floor is currently lit." ^
   break
endif
if 3_button_1 has ON
   write "The button for the third floor is currently lit." ^
   break
endif
write ^
}

object slot_1: mil key slot
 inventory	a "MIL key slot"

object mil_key: mil key
 inventory	a "MIL key"
 starts		limbo

object lift_1_obj: eastern east lift one
 inventory	name "east lift"

{enter
if here = lift_1
   write "You are already in the lift." ^
   set TURN_WORKED = false
   break
endif
proxy "east"
}

{open
if here = lift_1
   write "(by pressing the open doors button)" ^
   proxy "press open doors button"
   break
endif
proxy "press call button"
}

{close
if here = lift_1
   write "(by pressing the close doors button)" ^
   proxy "press close doors button"
   break
endif
write "There is no way to close the lift doors from the outside." ^
}

location lift_2:
 out		nowhere
 east		nowhere
 no_east	"The lift doors are currently closed."
 no_go		"The only way out of the lift is to the east."

{look
if here has VISITED
   write "You are back in the west lift." ^
   break
endif
write "The lift is about three metres square and every bit as opulent as the "
write "rest of the hotel. There is panel of buttons on the wall directly "
write "beneath a small metal plaque. The lift doors are to the east and "
write "currently "
if lift_2_obj(info) = 0
   write "closed.^"
else
   write "open.^"
endif
}

{first_hint
write "If you have not spoken to the concierge yet, do that now." ^
set TURN_WORKED = false
}

{second_hint
write "Once you have paged someone to come down, and have made sure that they "
write "will be using this lift, wait here." ^
set TURN_WORKED = false
}

{third_hint
write "Eventually they will leave their table and press the call button on "
write "the fourth floor. This will cause the lift to go to that floor to "
write "pick them up. When it gets there, the doors will open and they "
write "will get in. Get out before the doors close again." ^
set TURN_WORKED = false
}

object lift_2_red: small red light lift one led
 inventory	a "small red light in lift one"

{examine
write "The small red light is currently out." ^
}
 
object lift_2_green: small green light lift one led
 inventory	a "small green light in lift one"

{examine
write "The small green light is currently out." ^
}
 
object lift_2_light: normal fluorescent light west lift one
 has		OUT_OF_REACH
 inventory	a "fluorescent light"

object lift_2_door: west western lift door two
 has		PLURAL
 inventory	the "west lift doors" 

{examine
write "The lift doors are currently "
if here(out) = nowhere
   write "closed." ^
else
   write "open." ^
}

{open
write "(by pressing the open doors button)" ^
proxy "press open doors button"
}

{close
write "(by pressing the close doors button)" ^
proxy "press close doors button"
}

object plaque_2: small metal plaque
 inventory	a "small metal plaque"

{examine : read
write "The plaque simply reads, ~LIFT 2~." ^
}

object c_button_2: west western close door button control two
 inventory	a "close doors button"

{press : move
if lift_2_obj(info) = 0
   write "The doors are already closed." ^
   set TURN_WORKED = false
   break
endif
set lift_2_obj(info) = 0
execute "global_lift_2_close"
}

object o_button_2: west western open door button control two
 inventory	a "open doors button"

{press : move
if lift_2_obj(info) > 0
   write "The doors are already open." ^
   set TURN_WORKED = false
   break
endif
if LIFT_2_TASK != 42
   write "The lift doors refuse to open while the lift is in motion." ^
   break
endif
write "The lift doors slide open." ^
execute "global_lift_2_open"
}

object g_button_2: ground floor button g
 inventory	a "ground floor button"

{press : move
if LIFT_2_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_2_POSITION = 0
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_2_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_2_TASK = 0
ensure g_button_2 has ON
write "The button lights up as you press it." ^
}

object 1_button_2: first floor button one
 inventory	a "first floor button"

{press : move
if LIFT_2_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_2_POSITION = 1
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_2_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
set LIFT_2_TASK = 1
ensure 1_button_2 has ON
write "The button lights up as you press it." ^
}

object 2_button_2: second floor button two
 inventory	a "second floor button"

{press : move
if LIFT_2_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_2_POSITION = 2
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_2_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_2_TASK = 2
ensure 2_button_2 has ON
write "The button lights up as you press it." ^
}

object 3_button_2: third floor button three
 inventory	a "third floor button"

{press : move
if LIFT_2_TASK != 42
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endif
if LIFT_2_POSITION = 3
   if here(out) = nowhere
      write "The lift doors slide open." ^
      execute "global_lift_2_open"
      break
   endif
   write "The button lights as you press it, only to go off again when you "
   write "release it." ^
   break
endall
set LIFT_2_TASK = 3
ensure 3_button_2 has ON
write "The button lights up as you press it." ^
}

object 4_button_2: fourth floor button four
 inventory	a "fourth floor button"

{press : move
write "The button lights as you press it, only to go off again when you "
write "release it. Stepping back, you notice the red light beside the MIL key "
write "slot flash on and off momentarily." ^
}

object panel_2: panel of buttons
 inventory 	a "panel of buttons"

{examine
write "The panel consists of seven buttons labelled ground, one, two, three, "
write "four, open and close. Beneath the buttons there is a MIL key slot "
write "which has a red light to its left and a green light to its right. "
if g_button_2 has ON
   write "The button for the ground floor is currently lit." ^
   break
endif
if 1_button_2 has ON
   write "The button for the first floor is currently lit." ^
   break
endif
if 2_button_2 has ON
   write "The button for the second floor is currently lit." ^
   break
endif
if 3_button_2 has ON
   write "The button for the third floor is currently lit." ^
   break
endif
write ^
}

object slot_2: mil key slot
 inventory	a "MIL key slot"

object lift_2_obj: western west lift two
 inventory	name "west lift"

{enter
if here = lift_2
   write "You are already in the lift." ^
   set TURN_WORKED = false
   break
endif
proxy "west"
}

{open
if here = lift_2
   write "(by pressing the open doors button)" ^
   proxy "press open doors button"
   break
endif
write "press call button"
}

{close
if here = lift_2
   write "(by pressing the close doors button)" ^
   proxy "press close doors button"
   break
endif
write "There is no way to close the lift doors from the outside." ^
}

location first_floor:
 west		nowhere
 no_west	"The lift doors are closed." ^
 east		nowhere
 no_east	"The lift doors are closed." ^
 south		mezzanine
 no_in		"Did you want to go in the west lift or the east lift."

{look
if here has VISITED
   write "You are back on the first floor, standing outside the lifts." ^
   break
endif
write "You are on the first floor standing outside two lifts, one to the "
write "east and one to the west. To the south you can enter a mezzanine "
write "level that overlooks the lobby. There is a call button on the wall." ^
}

object call_button_1: call button
 inventory	a "call button"

{examine
write "The call button is currently "
if call_button_1 has ON
   write "lit." ^
   break
endif
write "out." ^
}

{press : move
if call_button_0 has ON
   write "Pressing the call button on the ground floor then running up the "
   write "stairs to press it on the first floor might be awfully good fun, "
   write "but it really isn't going to help." ^
   set TURN_WORKED = false
   break
endif
if call_button_1 has ON
   write "The call button has already been pressed." ^
   set TURN_WORKED = false
   break
endif
if LIFT_1_POSITION = 1
   if lift_1 hasnt CUSTOM1
      if lift_1_obj(info) > 0
         write "There is already a lift here." ^
         set TURN_WORKED = false
         break
      endif
      execute "global_lift_1_open"
      break
endall
if LIFT_2_POSITION = 1
   if lift_2_obj(info) > 0
      write "There is already a lift here." ^
      set TURN_WORKED = false
      break
   endif
   execute "global_lift_2_open"
   break
endif
write "As you press the call button it lights up." ^
ensure call_button_1 has ON
}

location second_floor:
 west		nowhere
 no_west	"The lift doors are closed." ^
 east		nowhere
 no_east	"The lift doors are closed." ^
 no_in		"Did you want to go in the west lift or the east lift."
 south		second_hallway

{look
if here has VISITED
   write "You are back on the second floor, standing outside the lifts." ^
   break
endif
write "You are on the second floor standing outside two lifts, one to the "
write "east and one to the west. There is a call button on the wall and an "
write "east-west hallway to the south." ^
}

object call_button_2: call button
 inventory	a "call button"

{examine
write "The call button is currently "
if call_button_2 has ON
   write "lit." ^
   break
endif
write "out." ^
}

{press : move
if call_button_2 has ON
   write "The call button has already been pressed." ^
   set TURN_WORKED = false
   break
endif
if LIFT_1_POSITION = 2
   if lift_1 hasnt CUSTOM1
      if lift_1_obj(info) > 0
         write "There is already a lift here." ^
         set TURN_WORKED = false
         break
      endif
      execute "global_lift_1_open"
      break
endall
if LIFT_2_POSITION = 2
   if lift_2_obj(info) > 0
      write "There is already a lift here." ^
      set TURN_WORKED = false
      break
   endif
   execute "global_lift_2_open"
   break
endif
write "As you press the call button it lights up." ^
ensure call_button_2 has ON
}

location second_hallway:
 north		second_floor
 no_east	"The hallway leads only to guest's private rooms."
 no_west	"The hallway leads only to guest's private rooms."

{look
if here has VISITED
   write "You are standing in the second floor hallway again." ^
   break
endif
write "This long hallway, lined with many numbered doors, heads east and west "
write "from here. A painting hangs on the south wall opposite the lift "
write "area." ^
}

object painting_1: seurat painting
 inventory	a "Seurat painting"

{examine
write "The painting is a print of George Seurat's ~Sunday Afternoon on the "
write "Island of la Grande Jatte~." ^
}

object doors_2: numbered second floor doors
 has		CLOSABLE CLOSED LOCKED PLURAL
 inventory	the "second floor doors"

{open
write "You try a few of the doors, but they are all locked." ^
}

location third_floor:
 west		nowhere
 no_west	"The lift doors are closed." ^
 east		nowhere
 no_east	"The lift doors are closed." ^
 no_in		"Did you want to go in the west lift or the east lift."
 south		third_hallway

{look
if here has VISITED
   write "You are back on the third floor, standing outside the lifts." ^
   break
endif
write "You are on the third floor standing outside two lifts, one to the "
write "east and one to the west. There is a call button on the wall and an "
write "east-west hallway to the south." ^
}

object call_button_3: call button
 inventory	a "call button"

{examine
write "The call button is currently "
if call_button_1 has ON
   write "lit." ^
   break
endif
write "out." ^
}

{press : move
if call_button_3 has ON
   write "The call button has already been pressed." ^
   set TURN_WORKED = false
   break
endif
if LIFT_1_POSITION = 3
   if lift_1 hasnt CUSTOM1
      if lift_1_obj(info) > 0
         write "There is already a lift here." ^
         set TURN_WORKED = false
         break
      endif
      execute "global_lift_1_open"
      break
endall
if LIFT_2_POSITION = 3
   if lift_2_obj(info) > 0
      write "There is already a lift here." ^
      set TURN_WORKED = false
      break
   endif
   execute "global_lift_2_open"
   break
endif
write "As you press the call button it lights up." ^
ensure call_button_3 has ON
}

location third_hallway:
 north		third_floor
 no_east	"The hallway leads only to guest's private rooms."
 no_west	"The hallway leads only to guest's private rooms."

{look
if here has VISITED
   write "You are standing in the third floor hallway again." ^
   break
endif
write "This long hallway, lined with many numbered doors, heads east and west "
write "from here. A painting hangs on the south wall opposite the lift "
write "area." ^
}

object painting_2: gauguin painting
 inventory	a "Gauguin painting"

{examine
write "The painting is a print of Paul Gauguin's ~Spirit of the Dead "
write "Watching~." ^
}

object doors_3: numbered third floor doors
 has		CLOSABLE CLOSED LOCKED PLURAL
 inventory	the "third floor doors"

{open
write "You try a few of the doors, but they are all locked." ^
}

location fourth_floor:
 no_go		"You can either go east or west into a lift or south into the conference room."
 west		nowhere
 no_west	"The lift doors are closed." ^
 east		nowhere
 no_east	"The lift doors are closed." ^
 south		conference_room
 no_in		"Did you want to go in the west lift or the east lift."

{look
if here has VISITED
   write "You are back on the fourth floor, standing outside the lifts." ^
   break
endif
write "You are on the fourth floor standing outside two lifts, one to the "
write "east and one to the west. As with all the other floors, there is a "
write "call button on the north wall. To the south, instead of the usual "
write "hallway, there is a large conference room." ^ 
if here hasnt SCORED
   points 10 
   ensure here has SCORED
endif
}

object call_button_4: call button
 inventory	a "call button"

{examine
write "The call button is currently "
if call_button_1 has ON
   write "lit." ^
   break
endif
write "out." ^
}

{press : move
if call_button_4 has ON
   write "The call button has already been pressed." ^
   set TURN_WORKED = false
   break
endif
if LIFT_1_POSITION = 4
   if lift_1 hasnt CUSTOM1
      if lift_1_obj(info) > 0
         write "There is already a lift here." ^
         set TURN_WORKED = false
         break
      endif
      execute "global_lift_1_open"
      break
endall
if LIFT_2_POSITION = 4
   if lift_2_obj(info) > 0
      write "There is already a lift here." ^
      set TURN_WORKED = false
      break
   endif
   execute "global_lift_2_open"
   break
endif
write "As you press the call button it lights up." ^
ensure call_button_4 has ON
}

location conference_room: 
 north		fourth_floor
 southwest	backstage
 go_southwest	"Looking around to make sure no one is looking, you slip through the doorway."
 go_west	"Looking around to make sure no one is looking, you slip through the doorway."
 west		backstage
 no_go		"The only exits from here are either south to the lifts or southwest through the doorway."

{look
if here has VISITED
   write "You are now in the conference room." ^
   break
endif
write "The conference room is filled with over a hundred guests. "
write "Seated in groups of four or five to a table, they sit facing towards "
write "a lectern at the south end of the room. Behind the lectern, a dark "
write "maroon curtain runs the entire width of the room, ending at a doorway "
write "in the southwest corner." ^
}

object mc: distinguished-looking distinguished gentleman man
 has		ANIMATE
 inventory	the "distinguished-looking gentleman"

{examine
write "The distinguished-looking gentleman is currently seated at a table "
write "near the front of the room." ^
}

{talk_to
write "The distinguished-looking gentleman looks up at you and smiles." ^
}

object lectern: lectern podium stand
 has		SURFACE
 inventory	a "lectern"
 quantity	20

{jump_on
write "Attention deficiency syndrome can be cured you know?" ^
set TURN_WORKED = false
}

{examine
write "The lectern is reasonably plain." ^
}

{look_behind
write "There is nothing other than the dark maroon curtain." ^
}

object curtain: dark maroon curtain
 inventory	a "dark maroon curtain"

{look_behind
write "The curtain is obviously for decoration only, as behind it lies "
write "nothing other than a blank wall." ^
}

{open
write "There is no apparent way (or need) to open the dark maroon curtain." ^
}

{close
write "There is no apparent way (or need) to close the dark maroon curtain." ^
}

object conference_guests: conference guest guests patrons
 has		ANIMATE PLURAL
 inventory	the "conference guests"

object conf_tables: conference tables table
 has		PLURAL
 inventory	the "tables"

location backstage:
 east		conference_room
 northeast	conference_room
 no_south	"The door to the south is closed."
 no_west	"The door to the west is closed."
 south		nowhere

{look
if here has VISITED
   write "You are back, standing in the north-south hallway again." ^
   break
endif
write "You are in a north-south hallway which runs along the west side of "
write "the conference room. The conference room can be entered through a "
write "doorway to the east while there "
if south_door hasnt CLOSED
   write "is an open door to the south and closed one to the west." ^
   break
endif
write "are closed doors to the west and south." ^
}

{listen
write "You can hear the sound of many idly chatting voices coming from the "
write "other side of the doorway." ^
}

object south_door: south door
 has		CLOSABLE CLOSED
 inventory	the "south door"
	
{knock_on
if south_door hasnt CLOSED
   write "There really isn't any need, the south door is wide open." ^
   break
endif
if south_door has CUSTOM1
   write "There is no reply." ^
   break
endif
write "~Come in,~ you hear an elderly male voice call from beyond the door." ^
ensure south_door has CUSTOM1
}

{listen_to
write "Silence." ^
}

{open_override
ensure south_door hasnt CLOSED
set backstage(south) = z_office
set z_office(north) = backstage
write "You gently open the door." ^
}

{close_override
ensure south_door has CLOSED
set backstage(south) = nowhere
set z_office(north) = nowhere
write "You gently close the door." ^
}

object west_door: west door
 has		LOCKED CLOSABLE CLOSED
 inventory	the "west door"

{knock_on
write "There is no reply." ^
}

location z_office:
 out		backstage
 north		backstage
 no_south	"The door is currently closed."
 no_go		"The only exit from here north, back into the hallway."

{look
if here has VISITED
   write "You have returned to Dr Zuckerman's office." ^
   break
endif
write "Furnished in fine leather and mahogany, this dimly lit office has a "
write "refined feel to it. The rain, now falling harder than before, beats "
write "against an ornately framed window in the south wall. The entire "
write "east wall is given over to a bookcase before which stands a "
write "desk, large enough to endow anyone sitting behind it with an "
write "air of authority." ^
}

{no
proxy "zuckerman, no"
}

{yes
proxy "zuckerman, yes"
}

{listen
write "You hear the soothing sound of rain on the window." ^
}

{first_hint
write "How you approach this part of the game is largely up to you. All that "
write "is really required of you by the agents, is to get Dr Zuckerman "
write "to talk about the human tests he has performed." 
set TURN_WORKED = false
}

{second_hint
write "Dr Zuckerman will not discuss the human tests he has performed until "
write "you have talked about several other things to gain his trust and "
write "put him at ease. This is also a good opportunity to get answers to "
write "any questions you might have that you think he may know something "
write "about." ^
set TURN_WORKED = false
}

{third_hint
write "One of the main turning points in this game depends on whether you "
write "are still carrying the jacket when you ask him about the human tests. "
write "There is no right and wrong here, the choice is yours." ^
set TURN_WORKED = false
}

{sit
proxy "sit in chair"
}

object jing: jing life force life-force energy prenatal congenital essence
 inventory	name "congenital jing"
 starts		limbo

object bookcase: bookcase books bookshelf bookshelves book shelf shelves
 inventory	a "bookcase"

{examine
write "Literally thousands of books line the shelves of the bookcase." ^
}

object writing_desk: mahogany desk
 has		SURFACE
 inventory	a "mahogany desk"
 quantity	40

{examine : look_behind
write "Behind the desk is a fine leather chair, worthy of its place behind "
write "such an impressive piece of furniture." ^
}

object arm_chair: leather chair
 inventory	an "leather chair"

{sit_on
write "Sitting in a man's office chair is like sitting on his throne - not "
write "very polite." ^
}

object ornate_window: ornate_window
 has		CLOSED CLOSABLE
 inventory	an "ornate window"

{listen_to
write "You hear the soothing sound of rain beating against the window." ^
}

{open
write "The windows in five story buildings are best left closed, especially "
write "on cold rainy nights such as this." ^
}

object zuckerman: dr doctor leif zuckerman man
 has		ANIMATE
 inventory	name "Dr Leif Zuckerman"
 described	"Standing with his back to you, staring out the window, is Dr Zuckerman."
 mass		heavy

{examine
if TOPICS_DISCUSSED < 4
   write "Staring back at you intently through a pair of gold rimmed bifocals, "
   write "Dr Zuckerman shuffles his feet nervously." ^
   break
endif
write "Staring back at you intently through a pair of gold rimmed bifocals, "
write "Dr Zuckerman appears more relaxed than before." ^
}

{kiss : shag
write "Take it easy." ^
}

{talk_to
if zuckerman has CUSTOM1
   write "~Just answer the question, Alex: yes or no?~ Dr Zuckerman says "
   write "staring at you keenly." ^
   break
endall
if jacket has CUSTOM5
   if jacket is *present
      write "Pointing to the jacket, Dr Zuckerman refuses to answer your "
      write "question." ^
endall
if writing_desk has CUSTOM3
   write "You and Dr Zuckerman chat about nothing for a moment or two." ^
   break
endif
ensure writing_desk has CUSTOM3
write "~I see you are the keynote speaker at this conference,~ you say to "
write "Dr Zuckerman"
if TOPICS_DISCUSSED = 0
   write " in an attempt to break the ice"
endif
write .^^
write "~Yes,~ he says with a chuckle. ~The military don't know that, of "
write "course. They barely let me leave the house without an escort. Coming "
write "here is definitely something they would not approve of.~" ^
ensure writing_desk has CUSTOM3
set TOPICS_DISCUSSED + 1
set REPUTATION_CURRENT = false
}

{attack
write "Let's leave the law enforcement to the professionals, okay?" ^
set TURN_WORKED = false
}

{greet
write "~Doctor,~ you say with a nod." ^^
write "~Doctor,~ Dr Zuckerman replies." ^
write "(did we miss anyone)" ^
set TOPICS_DISCUSSED + 1
}

{tell_about_jacket
if jacket is *present
   write "You point to the jacket and inform Dr Zuckerman of the microphone "
   write "and transmitter sewn into its lining." ^ 
   execute "global_defect"
   break
endall
write "You tell Dr Zuckerman of the jacket and the microphone and transmitter "
write "sewn into its lining. ~It's okay though,~ you tell him, ~I've left it "
write "behind.~ A fact that does little to alleviate his anxiety." ^
set TOPICS_DISCUSSED + 1
}

{tell_about_van : tell_about_petrescu : tell_about_hughes
if van has CUSTOM1
   write "Dr Zuckerman indicates that he understands." ^
   break
endif
write "~There are two agents in a van down on the street,~ you inform Dr "
write "Zuckerman. ~They are here to arrest you.~" ^^
write "Quite understandably, this news appears to distress him greatly." ^
if jacket is *present
   execute "global_defect"
   break
endif
ensure van has CUSTOM1
set TOPICS_DISCUSSED + 1
}

{ask_about_wise
if wise has CUSTOM3
   write "Dr Zuckerman shrugs, ~I don't know what else I can tell you.~" ^
   break
endif
write "~An obstinate man,~ Dr Zuckerman says. ~I shan't regret it if I never "
write "see him again.~" ^
ensure wise has CUSTOM3
set TOPICS_DISCUSSED + 1
}

{tell_about_ear_piece : show_ear_piece
if ear_piece has CUSTOM5
   write "Dr Zuckerman nods knowingly." ^
   break
endif
set TOPICS_DISCUSSED + 1
if ear_piece has WORN
   write "~The ear piece I am wearing "
else
   write "~I have in my possession an ear piece that "
endif
write "enables me to stay in contact with two agents in a van down on the "
write "street,~ you inform Dr Zuckerman. News that makes him obviously "
write "nervous." ^ 
ensure ear_piece has CUSTOM5
if jacket is *present
   execute "global_defect"
   break
endall
}

{tell_about_ames : ask_about_green_slide : tell_about_green_slide
if zuckerman has CUSTOM5
   write "Dr Zuckerman appears to ignore you." ^
   break
endif
write "Dr Zuckerman listens patiently while you explain to him the tests that "
write "you have performed on the clear liquid." ^^
write "~You have been very thorough, Dr Meadows, although I would have "
write "expected nothing less,~ Dr Zuckerman begins in reply. ~When an "
write "organism is placed in contact with the clear liquid, its life force is "
write "sapped at an amazing rate. Without following the correct procedure, "
write "however, this energy will only dissipate to be lost forever.~" ^
ensure zuckerman has CUSTOM5 
set TOPICS_DISCUSSED + 1
}

{ask_about_diary : tell_about_diary
if diary has CUSTOM3
   write "Dr Zuckerman seems bored with the topic." ^
   break
endif
write "You tell Dr Zuckerman about your discovery of his diary and the "
write "appointment for the conference within it. ~To be honest with you,~ "
write "you continue, ~I half suspected that it would turn out to be some "
write "sort of set-up.~ ^^
write "~Well you were right, it was a set-up. When I said that I would have "
write "been disappointed if you hadn't come, it was because I knew you would "
write "investigate beyond that which Colonel Wise had intended. In some ways "
write "I guess it was really a cry for help - just one locked in the bottom "
write "drawer of a filing cabinet in a restricted access hangar on a remote "
write "tropical island.~" ^
ensure diary has CUSTOM3
set TOPICS_DISCUSSED + 1
}

{ask_about_zuckerman
if writing_desk has CUSTOM2
   write "~There's not much more I can tell you, Alex,~ Dr Zuckerman says." ^
   break
endif
write "~I tend to think of myself as a misunderstood man,~ Dr Zuckerman says "
write "looking slightly forlorn. ~I know a lot of people don't agree with "
write "what I am doing. They say I'm nothing more than a criminal, but one "
write "day I will be recognised for my achievements.~" ^ 
ensure writing_desk has CUSTOM2
set TOPICS_DISCUSSED + 1
}

{ask_about_fuel : ask_about_vial : tell_about_vial : tell_about_fuel
if fuel has CUSTOM3
   write "~I could talk about it all day, if I had the time,~ Dr Zuckerman "
   write "replies." ^
   break
endif
write "~The clear liquid you are referring to has one amazing property. It has "
write "the ability to efficiently conduct the energy that is the very "
write "essence of life. The Chinese studied it over two millennia ago, "
write "calling it congenital or prenatal jing. They discovered that everybody "
write "has a finite amount of this energy to conserve or to squander. "
write "Everybody except me that is.~ Taking a moment to bask in the glory of "
write "his achievement, Dr Zuckerman final continues, ~I have an unlimited "
write "supply, and that is the key to immortality.~" ^
ensure fuel has CUSTOM3
set TOPICS_DISCUSSED + 1
}

{ask_about_jing
write "~Congenital jing was thought to be inherited from the parents, fused "
write "at the moment of conception. It was seen as the material that "
write "imbues an organism with the possibility of development from birth to "
write "death. The quality and quantity of this energy was said to be fixed "
write "for life, something my work is going to change.~" ^
set TOPICS_DISCUSSED + 1
}

{ask_about_research
if zuckerman has CUSTOM3
   write "~You know enough for now,~ Dr Zuckerman responds." ^
   break
endif
write "~Most of my work on the island revolved around marine tests using "
write "a large fish tank in a hangar on the south side of the island. It was "
write "careless management by the military of the waste from those "
write "experiments that led to the original deaths of marine life in the "
write "waters surrounding the island, not the Rotenone.~" ^
ensure zuckerman has CUSTOM3
set TOPICS_DISCUSSED + 1
}

{ask_about_rotenone : tell_about_rotenone : ask_about_drum : tell_about_drum : tell_about_contents : ask_about_contents
if rotenone has CUSTOM3
   write "~I'm sure you can piece the rest together,~ Dr Zuckerman replies." ^
   break
endif
write "~The Rotenone,~ Dr Zuckerman explains, ~was added to the water shortly "
write "before you arrived. It was supposed to draw your attention away from "
write "the real cause of the deaths and help the whole thing just blow over.~"
write ^
ensure rotenone has CUSTOM3
set TOPICS_DISCUSSED + 1
}

{ask_about_bullet_hole : tell_about_bullet_hole : ask_about_bullet : tell_about_bullet
if writing_desk has CUSTOM4
   write "Dr Zuckerman just shakes his head." ^
   break
endif
write "~There's no such thing as delicacy in the military. `If there's a job "
write "worth doing, do it with a gun,' seems to be about the extent of "
write "Colonel Wise's mentality. It drives me mad,~ Dr Zuckerman replies." ^
ensure writing_desk has CUSTOM4
set TOPICS_DISCUSSED + 1
}

{ask_about_fish_tank : tell_about_fish_tank : ask_about_tank_liquid : tell_about_tank_liquid
if fish_tank has CUSTOM3
   write "Dr Zuckerman appears to have nothing more to say about the fish "
   write "tank." ^
   break
endif
write "~The tank,~ Dr Zuckerman begins after a moments thought, ~is the "
write "remanence of the last non... well, the last marine tests I performed. "
write "It's quite a crude setup really. I simply filled the tank with the "
write "clear liquid, divided it in two with a non-conductive sheet, then "
write "linked the two compartments together with a set of polarised probes. "
write "The fish I put in one half almost all died within the day while those "
write "in the other lived close to twice their normal life expectancy.~" ^
ensure fish_tank has CUSTOM3
set TOPICS_DISCUSSED + 1
}

{tell_about_tests
write "I think the human tests are probably something you should be asking Dr "
write "Zuckerman about, not telling him about." ^
}

{ask_about_lisa
write "~Lisa is both ambitious and naive, a combination just waiting to be "
write "exploited by men like Colonel Wise,~ Dr Zuckerman replies." ^
}

{ask_about_tests
ensure zuckerman has CUSTOM2
if TOPICS_DISCUSSED < 4
   write "Dr Zuckerman appears nervous about the directness of your question "
   write "and avoids commenting on the subject." ^
   break
endif
if south_door hasnt CLOSED
   write "Glancing at you briefly, Dr Zuckerman walks across the room and "
   write "closes the door. "
   ensure south_door hasnt CLOSED
   set z_office(north) = backstage
   set backstage(south) = z_office
endif 
write "~All great advances demand sacrifice,~ Dr Zuckerman says sombrely. "
write "~All the people who were used in the tests were volunteers, terminally "
write "ill people who had their chance to make a difference before they died. "
write "If a person dies of old age, their energy is depleted. But a young "
write "person who is dying of some incurable disease, now that is a different "
write "thing altogether. Everyday people willingly sign organ donor cards so "
write "that they can have the chance to help someone else live. The only "
write "difference with my work is that energy must be donated immediately "
write "prior to death, not after, and when death is imminent anyway...~ "
write "Gazing out the window for a moment, Dr Zuckerman eventually turns back "
write "around and stares you straight in the eye, ~I don't want to die, Dr "
write "Meadows. All my life I have searched for the secret of immortality, "
write "the Elixer of Life, and now I have found it. Some call me mad, some "
write "immoral, but when the time comes, they too will choose their life over "
write "that of another. I am a firm believer in survival of the fittest. I "
write "have simply perfected what nature began, and for that I make no "
write "excuses. Think about it, Alex, it's analogous to discovering the Holy "
write "Grail.~" ^^
write "~The Unholy Grail don't you mean,~ you interject sternly." ^^
if ear_piece has WORN
   if jacket is *present
      write ^ "~That's all we needed to hear,~ Agent Hughes' voice says, "
      write "emanating from the ear piece. ~Hold tight and we'll radio for "
      write "our inside Agents to make the arrest.~" ^^
endall
write "~Come on, Dr Meadows, you and I are"
if jacket is *present
   write "...~ Dr Zuckerman continues, stopping at the sound of footsteps "
   write "running down the hallway." ^^
   write "Quickly becoming louder, neither of you have a chance to react "
   write "before a man and a woman burst into the room, guns drawn. The woman "
   write "begins to read Dr Zuckerman his rights while the man keeps his gun "
   write "trained on him." ^^
   write "Obviously shocked, Dr Zuckerman turns to you. ~I was a fool to have "
   write "trusted you,~ he says solemnly. ~I thought you would have taken "
   write "the side of science, but I was wrong. All the work that I have "
   write "done will have been for nothing now, all because people are unable "
   write "to accept that for something to live, something else must die. It "
   write "may be against the law of man, but not the law of nature.~" ^^
   write "His hands now forced behind his back, Dr Zuckerman is placed "
   write "into handcuffs then led out of the room." ^^
   write "~You've done well, Dr Meadows,~ the man says to you. ~If you will "
   write "follow me I will take you back to the office where we can begin "
   write "your debriefing.~" ^
   points 5
   ensure z_office has CUSTOM3
   execute "global_gameover"
   break
endall
write " scientists. It is our job to decided what can be done, not what may "
write "be done. Don't you want to live forever?~" ^
ensure zuckerman has CUSTOM1
describe zuckerman as "Dr Zuckerman is standing here, awaiting your answer."
}

{say_yes
if REPUTATION_CURRENT = true
   write "~You are very modest, Dr Meadows,~ Dr Zuckerman replies." ^
   set REPUTATION_CURRENT = false
   break
endif
if zuckerman hasnt CUSTOM1
   write "~Yes what?~ Dr Zuckerman asks with a puzzled expression." ^
   break
endif
write "~Of course you do,~ Dr Zuckerman exclaims, his eyes noticeably "
write "brightening, ~and science can grant you that wish.~" ^^
write "Reaching into the inside pocket of his jacket, Dr Zuckerman produces "
write "a worn leather wallet. Zipping it open, he takes a small syringe from "
write "within and holds it up for you to see. ~This syringe contains a "
write "quantity of the clear liquid that you have studied. There is, however, "
write "one significant difference. The liquid you had in your possession was "
write "like a block of ice. Place it in contact with a living organism and it "
write "would absorb the energy from it in a matter of moments. This liquid, "
write "on the other hand, is charged and holds the warmth of life.~" ^^
write "Stepping closer, Dr Zuckerman begins to roll up the sleeve of your "
write "shirt. ~Join me, Dr Meadows. Accept the fruits of my labour and "
write "rejoice in the gift of eternal life.~" ^^
write "Shaking, you give Dr Zuckerman a nervous nod of consent and he "
write "injects the liquid into your arm." ^^
points 5
ensure z_office has CUSTOM2
execute "global_gameover"
}

{say_no
if REPUTATION_CURRENT = true
   write "~Good,~ Dr Zuckerman says with a faint smile." ^
   set REPUTATION_CURRENT = false
   break
endif
if zuckerman hasnt CUSTOM1
   write "~No what?~ Dr Zuckerman asks with a puzzled expression." ^
   break
endif
write "~There is a tree outside my bedrom window. When winter comes, and the "
write "leaves fall from its branches, I always admire its ability to let go. "
write "Let go of the very leaves that gave it life through the spring and "
write "summer, then lay dormant and wait for its chance to rise again. "
write "Perhaps this is the will of nature and it is only fear that causes me "
write "to hang on when all around says to let go. If this is the destiny you "
write "choose, then I admire you also. Maybe one day I too will choose this "
write "path, but not today. Goodbye, Dr Meadows. Goodbye.~" ^
points 5
ensure z_office has CUSTOM1
execute "global_gameover"
}

;                                                                 LOCAL GRAMMAR
;------------------------------------------------------------------------------

grammar insert *held under *present	->insert_in
grammar load *held under *present	->insert_in
grammar mount *held under *present	->insert_in
grammar wedge *held under *present	->insert_in
grammar thrust *held under *present	->insert_in
grammar poke *held under *present	->insert_in
grammar put *held under *present	->insert_in
grammar place *held under *present	->insert_in

grammar full score	->full_score
grammar full points	->full_score

{global_full_score
execute "global_score"
write ^ "NOTE: It is possible to ~complete~ this story without a score of "
write "100%." ^
if CURRENT_SCORE = 0
   break
endif
write ^ "So far, you have scored:" ^
if screen has SCORED
   write "    10 points for seeing the blob on the radar screen" ^
endif
if fuel has SCORED
   write "    10 points for viewing the green slide through the microscope" ^
endif
if vial has SCORED
   write "    10 points for taking the small glass vial" ^
endif
if rect_crate has SCORED
   write "     5 points for up-ending the crate behind the hangar" ^
endif
if stranger has CUSTOM4
   write "     5 points for telling the stranger about the green slide" ^
endif
if filing has SCORED
   write "     5 points for taking the diary" ^
endif
if diary has SCORED
   write "     5 points for showing the diary to the stranger" ^
endif
if bullet has SCORED
   write "     5 points for finding the bullet behind the drum" ^
endif
if office has SCORED
   write "    15 points for arriving in Monte Carlo" ^
endif
if lift_1 has CUSTOM1
   write "     5 points for telling the concierge about the flickering light" ^
endif
if credit_card has SCORED
   write "     5 points for finding out the elderly man's name" ^
endif
if elderly_man has SCORED
   write "     5 points for finding out the name of a conference guest" ^
endif
if fourth_floor has SCORED
   write "    10 points for getting to the fourth floor" ^
endif
if z_office has CUSTOM1
   write "     5 points for confronting Dr Zuckerman" ^
endif
if z_office has CUSTOM2
   write "     5 points for choosing life" ^
endif
if z_office has CUSTOM3
   write "     5 points for helping to arrest Dr Zuckerman" ^
endif
}

grammar say *anywhere to *present	->say_to

{global_say_to
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun2 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun2 has DEAD 
   write Noun1 noun1(is) " a bit too dead to respond." ^
   set TURN_WORKED = false
   break
endall
if noun2 = CURRENT_PLAYER
   write "It's the first sign of madness you know..." ^
   break
endall
override
if noun2 = concierge
   if WHO_I_AM = false
      if PAGE_REQUESTED != false
         proxy "tell concierge my name is " noun1
         break
endall
write Noun2 noun2(doesnt) "seem to respond." ^
}

grammar call *anywhere		->page
grammar phone *anywhere		->page
grammar page *anywhere		->page
grammar contact *anywhere	->page

{global_page
set TURN_WORKED = false
if noun1 hasnt ANIMATE
   write "You can only page people." ^
   break
endif
write "If you want to page someone, you should ask the concierge to do it for "
write "you." ^
}

grammar ring *present	->ring

{global_ring
write "You can't ring " noun1 .^
set TURN_WORKED = false
}

grammar flush *present	->flush

{global_flush
write "You can't flush " noun1 .^
set TURN_WORKED = false
}

grammar refill *held	->refill

{global_refill
if noun1 != tank
   write "You can't refill " noun1 .^
   set TURN_WORKED = false
   break
endif
if here != storage
   write "The hose to refill the tank from is in the storage area." ^ 
   set TURN_WORKED = false
   break
endif
if TANK_PRESSURE = 220
   write "The scuba tank is already full." ^
   set TURN_WORKED = false
   break
endif
if RESERVE_PRESSURE = 0
   write "The high pressure tank is now empty." ^
   set TURN_WORKED = false
   break
endif
if RESERVE_PRESSURE < 220
   set TANK_PRESSURE = RESERVE_PRESSURE
   set RESERVE_PRESSURE = 0 
else
   set TANK_PRESSURE = 220
   set RESERVE_PRESSURE - 220
endif
if tap has CLOSED
   write "Removing the first stage regulator from the tank you attach the "
   write "refill hose. Turning the tap you wait a few moments for the tank "
   write "fill then replace the regulator."
endif
if tap hasnt CLOSED
   write "Closing the tap on the scuba tank you remove the first stage "
   write "regulator then attach the refill hose. Opening the tap again, "
   write "you wait a few moments for the tank to fill then replace the "
   write "regulator."
   ensure tap has CLOSED
endif
if RESERVE_PRESSURE = 0
   write " Due to the high pressure tank running out, however, the scuba "
   write "tank is not completely full."
endif
write ^
}

grammar shoot *present	->shoot

{global_shoot
if gun !childof kryten
   write "What did you intend to shoot " noun1 " with?" ^
   set TURN_WORKED = false
   break
endif
override
write "It's no wonder they don't issue guns to scientists." ^
}

grammar comb *present	->comb

{global_comb
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "I don't think " noun1 " really needs combing." ^
set TURN_WORKED = false
} 

grammar tell *present im *anywhere		->tell_im
grammar tell *present i'm *anywhere		->tell_im
grammar tell *present i am *anywhere		->tell_im
grammar tell *present that i am *anywhere	->tell_im
grammar tell *present that im *anywhere		->tell_im
grammar tell *present my name is *anywhere	->tell_im
grammar tell *present that my name is *anywhere	->tell_im

{global_tell_im
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to care." ^
   set TURN_WORKED = false
   break
endall
if noun1 = CURRENT_PLAYER
   write "Talking to yourself is the first sign of madness you know..." ^
   break
endall
override
write Noun1 " appears to ignore you." ^
}

grammar ask *present to page *anywhere		->ask_to_page
grammar ask *present to contact *anywhere	->ask_to_page
grammar ask *present to call *anywhere		->ask_to_page
grammar ask *present to ring *anywhere		->ask_to_page
grammar tell *present to page *anywhere		->ask_to_page
grammar tell *present to call *anywhere		->ask_to_page
grammar tell *present to contact *anywhere	->ask_to_page
grammar tell *present to ring *anywhere		->ask_to_page

{global_ask_to_page
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to tell you anything useful." ^
   set TURN_WORKED = false
   break
endall
if noun1 = CURRENT_PLAYER
   write "Talking to yourself is the first sign of madness you know..." ^
   break
endall
if noun1 != concierge
   write Noun1 " look" noun1(s) " at you and blinks." ^
   break
endall
if noun2 hasnt ANIMATE
   write "~Only people can be paged,~ the concierge says with a frown." ^
   break
endif
if noun2 = younger_man
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = elderly_man
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = door_men
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = waitress
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = guests
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = attendants
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = piano_player
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = landlord
   write "~In order to page someone, you will need to give me their name.~" ^
   break
endif
if noun2 = concierge
   write "~But that's me!~ the concierge exclaims." ^
   break
endif
if WHO_I_AM = false
   write "~And who shall I say is paging?~" ^
   set PAGE_REQUESTED = noun2
   break
endif
if WHO_I_AM = noun2
   write "~You want to page yourself?~" ^
   break
endif
override
write "~I am sorry, there is no " noun2 " on the guest list,~ the "
write "concierge apologises." ^
}

grammar shoot *present with *held	->shoot_with

{global_shoot_with
if noun2 = gun
   write "It's no wonder they don't issue guns to scientists." ^
   set TURN_WORKED = false
   break 
endif
write "I don't see how you can shoot " noun1 " with " noun2 .^
set TURN_WORKED = false
}

grammar submit *held	->submit

{global_submit
write "I'm afraid you will have to do that yourself." ^
set TURN_WORKED = false
}

grammar inject *present with *present		->inject_with
grammar inoculate *present with *present	->inject_with

{global_inject_with
if noun2 childof syringe
   proxy "inject " noun2 " in " noun1 
   break
endif
if noun2 isnt *held
   write "You are not holding " noun2 .^
   set TURN_WORKED = false
   break
endif
if noun2 != syringe
   write Noun2 noun2(isnt) " for giving injections." ^
   break
endif
execute "global_noun2_liquid?"
if INDEX = true 
   proxy "inject " noun3 " in " noun1
   break
endall
write "There is nothing in the syringe." ^
}

grammar inject *present in *present ->inject_in

{global_inject_in
if noun1 = syringe
   proxy "inject " noun2 " with " noun1
   break
endif
if noun1 !childof syringe
   write "You can't inject " noun1 " into " noun2 " unless it is in "
   write "the syringe." ^
   set TURN_WORKED = false
   break
endall
if syringe !childof player 
   write "You are not holding the syringe." ^
   set TURN_WORKED = false
   break
endall
execute "global_noun2_liquid?"
if INDEX = true 
   write Noun2 " already contains " noun3 . " If you were to also add " noun1
   write " they would mix together." ^
   set TURN_WORKED = false
   break
endall
if noun2 = compartment
   write "Only the petri dishes containing the agar may be put into "
   write "the compartment in the freeze fracture device." ^
   break
endif
if noun2 has CONTAINER
   if noun2 hasnt CLOSED 
      override
      write "You inject " noun1 " in " noun2 .^
      move noun1 to noun2
      ensure noun1 hasnt OUT_OF_REACH
      break
endall
override
if noun2 = vial
   write "The vial would become contaminated if you were to fill it with "
   write noun1 .^
   set TURN_WORKED = false
   break
endall
write "Inject " noun1 " into " noun2 "? I don't think so." ^
}

;                                                                      SYNONYMS
;------------------------------------------------------------------------------

synonym fluid		liquid
synonym doors		door
synonym elevator	lift
synonym lights		light

;                                                                     VARIABLES
;------------------------------------------------------------------------------

variable ENERGY_LEVEL		5
variable WISE_INFORMED
variable WISE_ASKED
variable WORK_PHASE
variable FLASK_TEMPERATURE	4
variable LONGITUDE		37	
variable LATITUDE		42
variable CURRENT_DEPTH
variable TANK_PRESSURE		220
variable RESERVE_PRESSURE	1000
variable WATER_LEVEL
variable COUNTER_POSITION
variable SCREEN_FADE
variable CONSUMPTION_RATE
variable LISAS_SCRIPT
variable GULLITS_SCRIPT
variable STRANGERS_SCRIPT
variable HUGHES_SCRIPT
variable AGING_SCRIPT
variable SONG_PLAYED
variable LIFT_1_POSITION	1
variable LIFT_2_POSITION	3
variable LIFT_1_TASK		42
variable LIFT_2_TASK		42
variable NEEDS_LINEFEED
variable WHO_I_AM
variable PAGE_REQUESTED
variable TOPICS_DISCUSSED
variable VAN_ABSENCE
variable WISES_SCRIPT
variable MPS_SCRIPT
variable BEACH_SCRIPT
variable JUNGLE_SCRIPT		13
variable FRANKS_SCRIPT
variable BARMANS_SCRIPT
variable WAITRESS_SCRIPT
variable PRETZELS_EATEN
variable REPUTATION_CURRENT	true

;                                                              GLOBAL FUNCTIONS
;------------------------------------------------------------------------------

{global_waitress_actions
if WAITRESS_SCRIPT = 1
   if here = waitress(location)
      write ^ "The waitress takes two drinks from a tray that she "
      write "is holding and places them onto the table occupied by the men. "
      write "Thanking the waitress, the elderly man takes a credit card from "
      write "his wallet and places it on the now empty tray. With a brief "
      write "smile, the waitress heads off to the north." ^
   endif
   move waitress to bar
   describe waitress as "There is a waitress wandering about here taking peoples' orders."
   break
endall
if WAITRESS_SCRIPT = 11
   if here = waitress(location)
      write ^ "The waitress heads over to the bar and begins giving the "
      write "cocktail waiter a series of orders." ^
   endif
   describe waitress as "Standing on the near side of the bar is a waitress." 
   break
endall
if WAITRESS_SCRIPT = 12
   if here = waitress(location)
      write ^ "The waitress hands the elderly man's credit card to the "
      write "cocktail waiter who places it on the shelf behind the bar." ^
   endif
   move credit_card to bar_shelves 
   break
endall
if WAITRESS_SCRIPT = 16 
   if here = waitress(location)
      write ^ "Her tray now fully loaded, the waitress begins walking "
      write "about the room delivering the drinks." ^
   endif
   describe waitress as "There is a waitress wandering about here delivering "
   move ordered_drinks to tray
   break
}

{global_franks_actions
if FRANKS_SCRIPT = 5 
   write ^ "A hotel guest walks over to the counter and gives her key to "
   write "the concierge. He places it in the appropriate pigeon hole "
   write "before she walks away." ^
   break
endif
if FRANKS_SCRIPT = 10
   write ^ "A rather distressed looking man asks the concierge for "
   write "directions to the bathrooms. Baffled, the concierge replies that he "
   write "doesn't understand the word bathrooms in that context. The "
   write "man, now looking even more distressed, waddles away." ^
   break
endif
if FRANKS_SCRIPT = 15 
   write ^ "~I trust you enjoyed your meal, Monsieur Grodas,~ the concierge "
   write "says to a recently arrived hotel guest as he passes him his key "
   write "unprompted. The guest simply smiles before disappearing back "
   write "into the crowd." ^
   break
endif
if FRANKS_SCRIPT = 20
   write ^ "A tall, dark man walks up to the counter and asks the concierge "
   write "for a pen and piece of paper. Scrawling a quick note, he tells "
   write "the concierge that it is for room 314, then leaves." ^
   break
endif
if FRANKS_SCRIPT = 25
   write ^ "A shrill ring emits from the telephone on the counter which is "
   write "answered promptly by the concierge. ~Hotel les Terrasses d'Eze,~ he "
   write "says in what is obviously his chirpiest voice. ~Of course madame, I "
   write "will send someone straight away,~ he says before hanging up." ^
}

{global_barmans_actions
if BARMANS_SCRIPT = 5 
   write ^ "Whistling quietly along with the piano, the cocktail waiter "
   write "begins to polish some glasses." ^
   break
endif
if BARMANS_SCRIPT = 10 
   write ^ "The cocktail waiter begins to make a dry martini for one of the "
   write "guests. ~Just take a seat sir,~ he says with a smile, ~I'll have "
   write "the waitress bring it over to you when it is ready.~" ^
   break
endif
if BARMANS_SCRIPT = 15 
   write ^ "Making the most of a quite moment the cocktail waiter wipes down "
   write "the top of the bar." ^
   break
endif
if BARMANS_SCRIPT = 20
   write ^ "Turning around to face the mirrored wall behind him, the cocktail "
   write "waiter straightens his bow tie." ^
   break
endif
if BARMANS_SCRIPT = 25 
   write ^ "Glancing quickly around the room, the cocktail waiter "
   if wooden_bowl childof long_bar
      write "eats one of the pretzels from the bowl on the bar." ^
      break
   endif
   write "reaches for a pretzel, surprised to see the bowl missing." ^
}

{global_change_song
if SONG_PLAYED = 10
   execute "global_new_song"
endif
if SONG_PLAYED = 20
   execute "global_new_song"
endif
if SONG_PLAYED = 30
   execute "global_new_song"
endif
if SONG_PLAYED = 40
   execute "global_new_song"
endif
if SONG_PLAYED = 50
   execute "global_new_song"
endif
if SONG_PLAYED = 60
   execute "global_new_song"
endif
if SONG_PLAYED = 70
   execute "global_new_song"
endif
if SONG_PLAYED = 80
   execute "global_new_song"
endif
if SONG_PLAYED = 90
   execute "global_new_song"
endif
if SONG_PLAYED = 100
   execute "global_new_song"
endif
}

{global_new_song
write ^ "After a short pause, the lady behind the piano changes to playing "
execute "global_song"
write .^
}

{global_wise_hassle
if mask hasnt CUSTOM5
   if mask has WORN
      write " And by the way, take that dive gear off, you look "
      write "ridiculous.~" ^
      ensure mask has CUSTOM5
      break
endall
if mask hasnt CUSTOM5
   if tank has WORN
      write " And by the way, take that dive gear off, you look "
      write "ridiculous.~" ^
      ensure mask has CUSTOM5
      break
endall
write ~^
}

{global_wise_fashion
write ^ "Looking you up and down, Colonel Wise begins to laugh. ~I don't "
write "recall dive gear becoming standard military wear, Dr Meadows?~" ^
}

{global_navigation
write "To get back to the lagoon you must go:" ^
if LONGITUDE < 36 
   set INDEX = 36
   set INDEX - LONGITUDE  
   write "   east " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LONGITUDE > 36
   set INDEX = LONGITUDE
   set INDEX - 36 
   write "   west " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LATITUDE < 41
   set INDEX = 41
   set INDEX - LATITUDE
   write "   south " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LATITUDE > 41
   set INDEX = LATITUDE
   set INDEX - 41 
   write "   north " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if screen hasnt SCORED
   break
endif
write ^ "To be at the same co-ordinates as the blob on the radar screen you "
write "must go:" ^
if LONGITUDE < 15
   set INDEX = 15
   set INDEX - LONGITUDE  
   write "   east " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LONGITUDE > 15
   set INDEX = LONGITUDE
   set INDEX - 15
   write "   west " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LATITUDE < 21
   set INDEX = 21
   set INDEX - LATITUDE
   write "   south " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LATITUDE > 21
   set INDEX = LATITUDE
   set INDEX - 21 
   write "   north " INDEX " time"
   if INDEX != 1
      write "s"
   endif
   write ^
endif
if LONGITUDE = 15
   if LATITUDE = 21
      write "   absolutely nowhere" ^
endall
}

{global_before_sit
if wooden_chair is *here
   proxy "sit in chair"
   break
endif 
break false
}

{global_defect
if ear_piece has WORN
   write ^ "~Shit! Alex! What the hell are you doing?~ Agent Hughes voice "
   write "barks through the ear piece." ^
endif
write ^ "Suddenly the sound of hurried footsteps draws your attention to the "
write "hallway outside. Before you have a chance to react, a man and a woman "
write "burst into the room, guns drawn." ^^
write "~Place your hands against the far wall and stand with your legs apart. "
write "Both of you,~ the woman orders in a loud voice while the man stands on "
write "guard, gun drawn. After frisking you briefly the woman "
write "places you both in handcuffs and leads you down the lifts and out of "
write "the building. Once on the street, you meet up with a very disappointed "
write "pair of agents, Hughes and Petrescu." ^
execute "global_gameover"
}

{global_gullit_journey
if GULLITS_SCRIPT = 24 
   break
endif
if GULLITS_SCRIPT < 15
   set GULLITS_SCRIPT + 1
   break
endif
if GULLITS_SCRIPT = 15
   if here != lift_1
      if lift_1 hasnt CUSTOM1
         set LIFT_1_TASK = 4
         set GULLITS_SCRIPT = 16
         break
      endif
   endif
   if here != lift_2
      ensure call_button_4 has ON
      set LIFT_2_TASK = 42
      set GULLITS_SCRIPT = 16
      break
   endif
   if lift_1 has CUSTOM1
      ensure call_button_4 has ON
      set LIFT_2_TASK = 42
      set GULLITS_SCRIPT = 16
      break
endall
if GULLITS_SCRIPT = 16
   if fourth_floor(east) != nowhere
      set GULLITS_SCRIPT = 17
      move ruud to lift_1
      set LIFT_1_TASK = 0
      ensure g_button_1 has ON
      break
   endif
   if fourth_floor(west) != nowhere
      set GULLITS_SCRIPT = 17
      move ruud to lift_2
      if here = lift_2
         write ^ "A well dressed gentleman with dreadlocks enters the lift "
         write "from outside and presses the button for the ground floor." ^
      endif
      set LIFT_2_TASK = 0
      ensure g_button_2 has ON
      break
endall
if GULLITS_SCRIPT = 17
   if ruud(location) = lift_1 
      if lift_1(out) != false
         if LIFT_1_POSITION = 0
            set GULLITS_SCRIPT = 18
            set DIRECTION = WEST
            set DESTINATION = ground_floor
            set noun4 = ruud
            execute "global_push_object"
            break
         endif
      endif
   endif
   if ruud(location) = lift_2
      if lift_2(out) != false
         if LIFT_2_POSITION = 0
            set GULLITS_SCRIPT = 18
            set DIRECTION = EAST
            set DESTINATION = ground_floor
            set noun4 = ruud
            execute "global_push_object"
            break
         endif
      endif
   endif
endall
if GULLITS_SCRIPT = 18
   set GULLITS_SCRIPT = 19
   set DIRECTION = SOUTH
   set DESTINATION = lobby
   set noun4 = ruud
   execute "global_push_object"
   break
endall
if GULLITS_SCRIPT = 19
   if here = lobby
      write ^ "The well dressed gentleman begins gazing about the room as if "
      write "looking for someone." ^
   endif
   set GULLITS_SCRIPT = 20 
   break
endall
if GULLITS_SCRIPT = 20 
   set GULLITS_SCRIPT = 21 
   set DIRECTION = WEST
   set DESTINATION = bar
   set noun4 = ruud
   execute "global_push_object"
   break
endall
if GULLITS_SCRIPT = 21 
   if here = bar
      write ^ "Craning to see over the crowds, the well dressed gentleman "
      write "scans the room with his eyes." ^
   endif
   set GULLITS_SCRIPT = 22 
   break
endall
if GULLITS_SCRIPT = 22 
   set GULLITS_SCRIPT = 23 
   set DIRECTION = SOUTH
   set DESTINATION = lounge
   set noun4 = ruud
   execute "global_push_object"
   break
endall
if GULLITS_SCRIPT = 23 
   if here = lounge
      write ^ "Spotting each other from across the room, the well dressed "
      write "gentleman and the elderly man embrace like old friends. They "
      write "speak quickly for a moment, apparently concerning some "
      write "confusion as to when they had intended to meet, then sit down "
      write "around the table with the younger man." ^
   endif
   describe younger_man as "Seated at the table with the elderly man is a younger man."
   describe ruud as "There is a well dressed gentleman seated with the other two men."
   set GULLITS_SCRIPT = 24 
}

{global_lift_1_close
if here = lift_1
   if NEEDS_LINEFEED = true
      write ^
   endif
   write "The lift doors slide closed." ^
endif
if LIFT_1_POSITION = 0
   if here = ground_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the east lift slide closed." ^
   endif
   set lift_1(west) = nowhere
   set lift_1(out) = nowhere
   set ground_floor(in) = nowhere
   set ground_floor(west) = nowhere
endif
if LIFT_1_POSITION = 1
   if here = first_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the east lift slide closed." ^
   endif
   set lift_1(west) = nowhere
   set lift_1(out) = nowhere
   set first_floor(in) = nowhere
   set first_floor(east) = nowhere
endif
if LIFT_1_POSITION = 2
   if here = second_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the east lift slide closed." ^
   endif
   set lift_1(west) = nowhere
   set lift_1(out) = nowhere
   set second_floor(in) = nowhere
   set second_floor(east) = nowhere
endif
if LIFT_1_POSITION = 3
   if here = third_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the east lift slide closed." ^
   endif
   set lift_1(west) = nowhere
   set lift_1(out) = nowhere
   set third_floor(in) = nowhere
   set third_floor(east) = nowhere
endif
if LIFT_1_POSITION = 4
   if here = fourth_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the east lift slide closed." ^
   endif
   set lift_1(west) = nowhere
   set lift_1(out) = nowhere
   set fourth_floor(in) = nowhere
   set fourth_floor(east) = nowhere
}

{global_lift_2_close
if here = lift_2
   if NEEDS_LINEFEED = true
      write ^
   endif
   write "The lift doors slide closed." ^
endif
if LIFT_2_POSITION = 0
   if here = ground_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the west lift slide closed." ^
   endif
   set lift_2(east) = nowhere
   set lift_2(out) = nowhere
   set ground_floor(in) = nowhere
   set ground_floor(west) = nowhere
endif
if LIFT_2_POSITION = 1
   if here = first_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the west lift slide closed." ^
   endif
   set lift_2(east) = nowhere
   set lift_2(out) = nowhere
   set first_floor(in) = nowhere
   set first_floor(west) = nowhere
endif
if LIFT_2_POSITION = 2
   if here = second_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the west lift slide closed." ^
   endif
   set lift_2(east) = nowhere
   set lift_2(out) = nowhere
   set second_floor(in) = nowhere
   set second_floor(west) = nowhere
endif
if LIFT_2_POSITION = 3
   if here = third_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the west lift slide closed." ^
   endif
   set lift_2(east) = nowhere
   set lift_2(out) = nowhere
   set third_floor(in) = nowhere
   set third_floor(west) = nowhere
endif
if LIFT_2_POSITION = 4
   if here = fourth_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "The doors to the west lift slide closed." ^
   endif
   set lift_2(east) = nowhere
   set lift_2(out) = nowhere
   set fourth_floor(in) = nowhere
   set fourth_floor(west) = nowhere
}

{global_lift_1_open
set lift_1_obj(info) = 4;                    MOVES UNTIL LIFT DOORS CLOSE AGAIN
if LIFT_1_POSITION = 0
   if here = ground_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the east "
      write "lift slide open." ^
   endif
   ensure call_button_0 hasnt ON
   set lift_1(west) = ground_floor
   set lift_1(out) = ground_floor
   set ground_floor(in) = lift_1
   set ground_floor(east) = lift_1
endif
if LIFT_1_POSITION = 1
   if here = first_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the east "
      write "lift slide open." ^
   endif
   ensure call_button_1 hasnt ON
   set lift_1(west) = first_floor
   set lift_1(out) = first_floor
   set first_floor(in) = lift_1
   set first_floor(east) = lift_1
endif
if LIFT_1_POSITION = 2
   if here = second_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the east "
      write "lift slide open." ^
   endif
   ensure call_button_2 hasnt ON
   set lift_1(west) = second_floor
   set lift_1(out) = second_floor
   set second_floor(in) = lift_1
   set second_floor(east) = lift_1
endif
if LIFT_1_POSITION = 3
   if here = third_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the east "
      write "lift slide open." ^
   endif
   ensure call_button_3 hasnt ON
   set lift_1(west) = third_floor
   set lift_1(out) = third_floor
   set third_floor(in) = lift_1
   set third_floor(east) = lift_1
endif
if LIFT_1_POSITION = 4
   if here = fourth_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the east "
      write "lift slide open." ^
   endif
   ensure call_button_4 hasnt ON
   set lift_1(west) = fourth_floor
   set lift_1(out) = fourth_floor
   set fourth_floor(in) = lift_1
   set fourth_floor(east) = lift_1
}

{global_lift_2_open
set lift_2_obj(info) = 4;                    MOVES UNTIL LIFT DOORS CLOSE AGAIN
if LIFT_2_POSITION = 0
   if here = ground_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the west "
      write "lift slide open." ^
   endif
   ensure call_button_0 hasnt ON
   set lift_2(east) = ground_floor
   set lift_2(out) = ground_floor
   set ground_floor(in) = lift_2
   set ground_floor(west) = lift_2
endif
if LIFT_2_POSITION = 1
   if here = first_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the west "
      write "lift slide open." ^
   endif
   ensure call_button_1 hasnt ON
   set lift_2(east) = first_floor
   set lift_2(out) = first_floor
   set first_floor(in) = lift_2
   set first_floor(west) = lift_2
endif
if LIFT_2_POSITION = 2
   if here = second_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the west "
      write "lift slide open." ^
   endif
   ensure call_button_2 hasnt ON
   set lift_2(east) = second_floor
   set lift_2(out) = second_floor
   set second_floor(in) = lift_2
   set second_floor(west) = lift_2
endif
if LIFT_2_POSITION = 3
   if here = third_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the west "
      write "lift slide open." ^
   endif
   ensure call_button_3 hasnt ON
   set lift_2(east) = third_floor
   set lift_2(out) = third_floor
   set third_floor(in) = lift_2
   set third_floor(west) = lift_2
endif
if LIFT_2_POSITION = 4
   if here = fourth_floor
      if NEEDS_LINEFEED = true
         write ^
      endif
      write "A crisp sounding bell rings briefly and the doors to the west "
      write "lift slide open." ^
   endif
   ensure call_button_4 hasnt ON
   set lift_2(east) = fourth_floor
   set lift_2(out) = fourth_floor
   set fourth_floor(in) = lift_2
   set fourth_floor(west) = lift_2
}

{global_lift_brains
if lift_1_obj(info) > 0
   set lift_1_obj(info) - 1
   if lift_1_obj(info) = 0
      set NEEDS_LINEFEED = true
      execute "global_lift_1_close"
endall
if lift_2_obj(info) > 0
   set lift_2_obj(info) - 1
   if lift_2_obj(info) = 0
      set NEEDS_LINEFEED = true
      execute "global_lift_2_close"
endall
if call_button_0 has ON
   if LIFT_2_TASK = 42
      set LIFT_2_TASK = 0
endall
if call_button_1 has ON
   if LIFT_2_TASK = 42
      set LIFT_2_TASK = 1
endall
if call_button_2 has ON
   if LIFT_2_TASK = 42
      set LIFT_2_TASK = 2
endall
if call_button_3 has ON
   if LIFT_2_TASK = 42
      set LIFT_2_TASK = 3
endall
if call_button_4 has ON
   if LIFT_2_TASK = 42
      set LIFT_2_TASK = 4
endall
if LIFT_1_TASK != 42
   if LIFT_1_TASK < LIFT_1_POSITION
      if lift_1_obj(info) = 0
         set LIFT_1_POSITION - 1
         if here = lift_1
            if LIFT_1_POSTITION != LIFT_1_TASK
               write ^ "The lift vibrates as it slowly descends." ^
            endif
         endif
         if LIFT_1_POSITION = LIFT_1_TASK
            if here = lift_1
               write ^ "Having arrived at the selected floor, the lift gently "
               write "comes to a halt and the doors open." ^ 
            endif
            set LIFT_1_TASK = 42
            set NEEDS_LINEFEED = true
            execute "global_lift_1_open"
            execute "global_disable_call_buttons"
         endif
      endif
   endif
   if LIFT_1_TASK > LIFT_1_POSITION
      if lift_1_obj(info) = 0
         set LIFT_1_POSITION + 1
         if here = lift_1
            if LIFT_1_POSTITION != LIFT_1_TASK
               write ^ "The lift vibrates as it slowly ascends." ^
            endif
         endif
         if LIFT_1_POSITION = LIFT_1_TASK
            if here = lift_1
               write ^ "Having arrived at the selected floor, the lift gently "
               write "comes to a halt and the doors open." ^ 
            endif
            set LIFT_1_TASK = 42
            set NEEDS_LINEFEED = true
            execute "global_lift_1_open"
            execute "global_disable_call_buttons"
endall
if LIFT_2_TASK != 42
   if LIFT_2_TASK < LIFT_2_POSITION
      if lift_2_obj(info) = 0
         set LIFT_2_POSITION - 1
         if here = lift_2
            if LIFT_2_POSITION != LIFT_2_TASK
               write ^ "The lift vibrates as it slowly descends." ^
            endif
         endif
         if LIFT_2_POSITION = LIFT_2_TASK
            if here = lift_2
               write ^ "Having arrived at the selected floor, the lift gently "
               write "comes to a halt and the doors open." ^ 
            endif
            set LIFT_2_TASK = 42
            set NEEDS_LINEFEED = true
            execute "global_lift_2_open"
            execute "global_disable_call_buttons"
         endif
      endif
   endif
   if LIFT_2_TASK > LIFT_2_POSITION
      if lift_2_obj(info) = 0
         set LIFT_2_POSITION + 1
         if here = lift_2
            if LIFT_2_POSTION != LIFT_2_TASK
               write ^ "The lift vibrates as it slowly ascends." ^
            endif
         endif
         if LIFT_2_POSITION = LIFT_2_TASK
            if here = lift_2
               write ^ "Having arrived at the selected floor, the lift gently "
               write "comes to a halt and the doors open." ^ 
            endif
            set LIFT_2_TASK = 42
            set NEEDS_LINEFEED = true
            execute "global_lift_2_open"
            execute "global_disable_call_buttons"
endall
break
}

{global_disable_call_buttons
ensure g_button_1 hasnt ON
ensure 1_button_1 hasnt ON
ensure 2_button_1 hasnt ON
ensure 3_button_1 hasnt ON
ensure 4_button_1 hasnt ON
ensure g_button_2 hasnt ON
ensure 1_button_2 hasnt ON
ensure 2_button_2 hasnt ON
ensure 3_button_2 hasnt ON
ensure 4_button_2 hasnt ON
}

{global_song
if SONG_PLAYED < 10
   write "~Who Wants to Live Forever~"
   break
endif
if SONG_PLAYED < 20
   write "~Some Enchanted Evening~"
   break
endif
if SONG_PLAYED < 30
   write "~As Time Goes By~"
   break
endif
if SONG_PLAYED < 40
   write "~Warriors of Ghengis Kahn~"
   break
endif
if SONG_PLAYED < 50
   write "~Blue Moon~"
   break
endif
if SONG_PLAYED < 60
   write "~Diamonds Are Forever~"
   break
endif
if SONG_PLAYED < 70
   write "~Ace of Spades~"
   break
endif
if SONG_PLAYED < 80
   write "~Honesty~" 
   break
endif
if SONG_PLAYED < 90
   write "~The Wild Wild Sea~"
   break
endif
write "~I'm in Love with my Car~"
}

{global_attention
write "you manage to attract the attention of one of the divers. Looking up, "
write "he signals to his colleagues who all fire their spear guns without the "
write "slightest hesitation. You have but a moment to regret your actions." ^
execute "global_death"
}

{global_report_submitted
move report to wise
write "and begins to skim through its contents. "
if report has DAMAGED
   write "~Do you make a habit of bathing all your reports, Dr Meadows?~ "
   write "Colonel Wise asks as he carefully turns the soggy pages. "
endall
write "After a moment of awkward silence he places the report into one of his "
write "desk drawers then leans back into his chair again." ^^
write "~Fine,~ Colonel Wise remarks blandly with an obvious expression of "
write "relief on his face. Picking up the telephone he calls through to the "
write "transport division and after a brief conversation informs you that "
write "your flight back to the mainland will be leaving on the hour." ^^
write "Walking back to the outpost, you collect what few possessions you "
write "brought with you then head out to the helicopter pad. A few hurried "
write "signatures on the regulation paper work and you are soon in the air "
write "flying rapidly across the warm tropical waters of the Pacific ocean." ^^
if diary has SCORED
   if stranger has CUSTOM4
      more
      clear
      write ^^^ "HONG KONG"
      right "TUESDAY 6:14 AM"
      write "INTERNATIONAL AIRPORT" ^^
      write "A long and bumpy flight sees you arrive in Hong Kong feeling "
      write "tired and sore. Stumbling across the tarmac, you start to "
      write "consider the fact that you have absolutely no idea where "
      write "to meet your contact. This thought is soon driven from your "
      if rope !childof vent
         write "mind by an even more alarming thought: how did the stranger "
         write "escape the hangar after I left the rope untied? After several "
         write "hours of waiting, there is still no sign of your contact, a "
         write "fact that leads you to believe that he did not escaped at "
         write "all." ^
         execute "global_gameover"
         break
      endif
      write "mind, however, by the sight of two tall men in dark grey suits "
      write "standing before you.^^"
      write "~Dr Alex Meadows?~ one of the men asks.^^"
      write "~Yes,~ you reply with a weary and nervous nod.^^"
      write "~This is agent Petrescu,~ the man continues, leading you towards "
      write "the main airport terminal, ~and I am agent Hughes.~ Reaching "
      write "into his jacket he pulls out a plane ticket and hands it to you. "
      write "~We have a connecting flight leaving for France in fifteen "
      write "minutes. A change of clothes has been arranged.~" ^^
      write "Excited as you are about your adventure ahead, if no one was "
      write "looking, you would cry." ^
      points 15
      ensure office has SCORED
      write ^
      more
      clear
      write "^^^MONTE CARLO, MONACO"
      right "WEDNESDAY 8:15 PM"
      write "OUTSIDE HOTEL LES TERRASSES D'EZE" ^^
      set kryten(location) = van
      look
      loop
         if noun3 childof kryten
            move noun3 to limbo
         endif
      endloop
      move jacket to kryten
      move ear_piece to kryten
      move hair to kryten
      move teeth to kryten
      move vial to kryten
      move green_slide to kryten
      break
endall
execute "global_home_again"
}

{global_home_again
more
clear
write ^^^ "MEADOWS RESIDENCE"
right "WEDNESDAY 8:37 PM"
write "SYDNEY, AUSTRALIA" ^^
write "After a long and boring connecting flight, followed by an equally "
write "arduous taxi ride across town, you find yourself standing on the "
write "front doorstep of your home. Your brief knock is answered almost "
write "instantly and you collapse into the warm embrace of your spouse. "
write "Once inside, you wash and change while a pot of tea draws, then "
write "proceed to explain all that has happened.^^"
execute "global_gameover"
}

{global_evicted
write "~Right, that's it,~ Colonel Wise says sharply." ^^
write "Picking up the telephone on his desk, he dials through to the "
write "transport division. After a brief conversation, he informs you that "
write "your flight back to the mainland will be leaving on the hour." ^^
write "Walking back to the outpost, you collect what few possessions you "
write "brought with you then head out to the helicopter pad. A few hurried "
write "signatures on the regulation paper work and you are soon in the air, "
write "flying rapidly across the warm tropical waters of the Pacific ocean." ^^
execute "global_home_again"
}

{global_before_clean_with
if noun2 = toothbrush
   if noun1 = toilet
      write "Well, you sure know how to party." ^
      break
   endif
   if noun1 != teeth
      write "I think you've been watching too many army movies." ^
      break
endall
break false
}

{global_before_attack_with
if noun1 = divers
   write "I think at this point we should take a moment to assess the "
   write "situation. We have you, wielding " noun2 " menacingly, and the MP "
   write "who has an M16 and many years of combat training under his belt. "
   write "I don't think it takes a rocket scientist to figure out what the "
   write "likely outcome of any altercation would be." ^
   break
endif
if noun1 = wise
   execute "attack_wise"
   break
endif
if noun1 = guard
   execute "attack_guard" 
   break
endif
if noun1 = lisa
   write "Assaulting a military officer"
   if pistol childof lisa
      write ", particularly one carrying a pistol,"
   endif
   write " with " noun2 " probably isn't such a good career move." ^
   break
endif
break false
}

{global_before_listen
if recorder is *present
   if recorder has ON
      write "You can hear the gentle hum of the microcassette recorder's "
      write "motor." ^
      break
endall
break false
}

{global_default_look_at_through
if noun2 = magnifying_glass
   if here has MID_WATER
      write "You can't see anything through the magnifying glass while "
      write "underwater." ^
   endif
   if noun1 has ANIMATE
      write "You don't think that might be a tad rude?" ^
      break
   endif
   if noun1 has OUT_OF_REACH
      write Noun1 noun1(is) " too far away to look at through the magnifying "
      write "glass." ^
      break
   endif
   write "You don't notice anything of any significance." ^
   break
endif
break false
}

{global_default_drop
if here = lagoon_surface
   write "You drop " noun1 " which rapidly sink" noun1(s) " out of view." ^
   move noun1 to lagoon_bottom
   break
endall
if here = lagoon_bottom
   write "You drop " noun1 .^
   move noun1 to here
   break
endif
if here = surface
   write "You drop " noun1 " which rapidly sink" noun1(s) " out of view." ^
   move noun1 to beneath_outpost
   break
endall
if here = beneath_outpost 
   write "You drop " noun1 .^
   move noun1 to here
   break
endif
break false
}

{global_before_drop_all
if here = ocean_bottom
   write "Littering the world's oceans isn't a requirement for the completion "
   write "of this story." ^
   set TURN_WORKED = false
   break
endall
break false
}

{global_before_drop
if here = ocean_bottom
   write "Littering the world's oceans isn't a requirement for the completion "
   write "of this story." ^
   set TURN_WORKED = false
   break
endall
break false
}

{global_before_examine
if here has UNDER_WATER
   if mask hasnt WORN
      write "With the salt water in your eyes, " noun1 " looks nothing other "
      write "than blurry." ^
      break
endall
break false
}

{global_before_look_up_in
if noun1 = book
   if noun1 has DAMAGED
      write "You take extra care not to rip the pages while turning them "
      write "due to their rather soggy and fragile state." ^^
endall
break false
}

{global_fill_with_vial
proxy "fill syringe from vial"
}

{global_tank_empty
ensure tank hasnt WORN
write ^ "Breathing through the regulator has suddenly become more "
write "difficult. The resistance, dramatically increasing with each breath, "
write "has now reached the point where taking another is impossible. "
write "Slipping out of the scuba gear you begin "
ensure tank hasnt WORN
if here has WITHOUT_AIR
   write "to hold you breath." ^
   break
endall
write "to breathe fresh air again." ^
}

{global_movement
if destination = walkway 
   if wooden_chair childof player
      write "You would look a bit suspicious walking around a military base "
      write "while carrying a wooden chair." ^
      set TURN_WORKED = false
      break
endall
if destination = on_crate
   if tank childof player
      write "It would be almost impossible to climb onto the crate while "
      write "carrying the scuba tank." ^
      set TURN_WORKED = false
      break
endall
if destination = on_crate
   if fins has WORN
      write "It would be almost impossible to climb onto the crate while "
      write "wearing the fins." ^
      set TURN_WORKED = false
      break
endall
if destination = surface
   if wooden_chair childof player
      write "You can't go swimming while you are carrying the wooden chair." ^
      set TURN_WORKED = false
      break
endall
if destination = surface 
   execute "global_ocean_damage"
endall
if destination = street
   move van_obj to street
   move van_doors to street
   if VAN_ABSENCE = 0
      set VAN_ABSENCE = 1
endall
if destination = hangar_south
   if lisa has CUSTOM2
      write "Determined to escape the situation, you turn and head towards "
      write "the other end of the room."
      execute "global_lisa_shoots"
      write "you and forces you onto the ground."
      execute "global_busted"
      break
   endif
   if lisa has ON
      write "Determined to escape the situation, you turn and head towards "
      write "the other end of the room." ^
      execute "global_guard_called"
      write "you and forces you onto the ground."
      execute "global_busted"
      break
   endif
endall
if destination = roof_north
   if lisa has CUSTOM2
      write "Determined to escape the situation, you head towards the rope "
      write "as begin to climb up."
      execute "global_lisa_shoots"
      write "the base of the rope and orders you to climb back down. Having "
      write "no doubt that he too would shoot if you failed to obey his "
      write "orders, you slowly drop back down onto the floor."
      execute "global_busted"
      break
   endif
   if lisa has ON
      write "Determined to escape the situation, you head towards the rope "
      write "as begin to climb up." ^
      execute "global_guard_called"
      write "the base of the rope and orders, you to climb back down. Having "
      write "no doubt that he too would shoot if you failed to obey his "
      write "orders, you slowly drop back down onto the floor."
      execute "global_busted"
      break
   endif
   if lisa has BURNING
      write "Once you are safely at the top of the rope, Lisa calls the MP in "
      write "from outside. Before long, several other officials enter the "
      write "room and begin to question the stranger once the MP has resumed "
      write "his post outside." ^^
      ;GOOBER
   endif
   if filing has CUSTOM5
      ensure rope hasnt CUSTOM5
   endif
endall
if destination = hangar_north
   if DIRECTION_TRAVELLED = SOUTH
      execute "show_to_guard_c_pass"
      break
   endif
   if DIRECTION_TRAVELLED = DOWN 
      if lisa has BURNING
         write "With all the officials down there interrogating the stranger, "
         write "back in the hangar is the last place you want to be." ^
         set TURN_WORKED = false
         break
endall
if here has CUSTOM5
   if fins hasnt WORN
      if ENERGY_LEVEL = 1 
         write "Exhaustion undermines your will to go on." ^
         set TURN_WORKED = false
         break
      endif
   endif
   if fins hasnt WORN
      write "Kicking ferociously, your progress is slow and tiring in "
      write "the gentle yet persistent currents." ^^
      set ENERGY_LEVEL - 2
endall
if player has SITTING 
   if destination != false
      write "(standing up first)" ^^
      ensure player hasnt SITTING
      break false
endall
if lisa has DAMAGED
   if destination != false
      write "You thank Lisa for the information before turning to leave." ^^
      ensure lisa hasnt DAMAGED
endall
if fins has WORN 
   if destination != false
      if here hasnt ON_WATER
         if here hasnt UNDER_WATER
            if here hasnt MID_WATER
               if destination hasnt ON_WATER
                  if destination hasnt UNDER_WATER
                     if destination hasnt MID_WATER
                        write "Shuffling backwards, you try your best not to "
                        write "trip over in the fins." ^^
endall
if destination = conference_room
   if conference_room hasnt CUSTOM4
      write "As you leave the lift area, you are overwhelmed by the sound of "
      write "applause errupting from within the conference room." ^^
endall
if destination = nowhere
   break false
endall
if DIRECTION_TRAVELLED = NORTH
   set LATITUDE - 1
endall
if DIRECTION_TRAVELLED = NORTHEAST
   set LATITUDE - 1
   set LONGITUDE + 1
endall
if DIRECTION_TRAVELLED = EAST
   set LONGITUDE + 1
endall
if DIRECTION_TRAVELLED = SOUTHEAST
   set LATITUDE + 1
   set LONGITUDE + 1
endall
if DIRECTION_TRAVELLED = SOUTH
   set LATITUDE + 1
   if here = control_centre
      if lisa(location) = control_centre
         ensure screen has ON
endall
if DIRECTION_TRAVELLED = SOUTHWEST
   set LATITUDE + 1
   set LONGITUDE - 1
endif
if DIRECTION_TRAVELLED = WEST
   set LONGITUDE - 1
endall
if DIRECTION_TRAVELLED = NORTHWEST
   set LONGITUDE - 1
   set LATITUDE - 1
endall
if DIRECTION_TRAVELLED = UP
   if here has UNDER_WATER
      set CURRENT_DEPTH - 5
   endif
   if here = estuary 
      set LONGITUDE - 1
      set LATITUDE - 1
   endif
   if here = base
      set LONGITUDE + 1
endall
if DIRECTION_TRAVELLED = DOWN
   if here = hill
      set LONGITUDE + 1
      set LATITUDE + 1
   endif
   if here = pad
      set LONGITUDE - 1
   endif
   if here has UNDER_WATER
      set CURRENT_DEPTH + 5
   endif
   if here has ON_WATER
      set CURRENT_DEPTH + 5
endall
if DIRECTION_TRAVELLED = IN
   if here = hill
      set LATITUDE - 1
endall
if DIRECTION_TRAVELLED = OUT
   if here = shed 
      set LATITUDE + 1
endall
if destination has OUTDOORS
   move north_wall to limbo
   move south_wall to limbo
   move east_wall to limbo
   move west_wall to limbo
   if destination = behind_hangar
      move south_wall to destination
   endif
   if destination = on_crate
      move south_wall to destination
endall
if destination hasnt OUTDOORS
   move north_wall to destination
   move south_wall to destination
   move east_wall to destination
   move west_wall to destination
endall
move ground to destination
break false
}

{global_bad_move
execute "global_guard_called"
write "you and forces you on to the ground."
execute "global_busted"
}

{global_guard_called
write ^ "~Guard!~ Lisa calls at the top of her voice. Almost instantly the "
write "access door to the hangar bursts open and the MP enters, gun raised. "
write "Quickly assessing the situation, he runs over to "
}

{global_lisa_shoots
write " As you do so, a deafening bang echos throughout the hangar. Startled, "
write "you turn your head to see Lisa standing over the slumped body of the "
write "stranger. Almost instantly the access door bursts open and the MP "
write "enters, gun raised. Quickly assessing the situation, he runs over to "
}

{global_busted
write ^^ "Moments later you are being led handcuffed back out into the "
write "cool air of the evening. Through the gathering crowd you spot Colonel "
write "Wise, obviously pleased at the thought of you spending the next ten "
write "years in prison, far away from him and his base." ^^
execute "global_gameover"
}

{global_before_insert_all_on
if noun1 = rect_crate
   write "No." ^
   set TURN_WORKED = false
   break
endall
if noun1 = drain
   write "It'll be you mopping up the mess when half the outpost floods due "
   write "to you blocking the drain (a thought that makes you change your "
   write "mind)." ^
   set TURN_WORKED = false
   break
endall
break false
}

{global_before_insert_on
if noun2 = rect_crate
   write "No." ^
   set TURN_WORKED = false
   break
endall
if noun2 hasnt SURFACE 
   write "There isn't a flat surface on " noun2 .^
   set TURN_WORKED = false
   break
endall
if noun2 = micrscope
   proxy "insert " noun1 " in " noun2
   break
endall
if noun2 = rect_crate_2
   proxy "drop" noun1
   break
endall
if noun2 = ground
   proxy "drop " noun1
   break
endall
if noun2 = drain
   write "It'll be you mopping up the mess when half the outpost floods due "
   write "to you blocking the drain (a thought that makes you change your "
   write "mind)." ^
   set TURN_WORKED = false
   break
endall
break false
}

{global_before_pour_in : global_before_pour_on
if noun2 = compartment
   write "Only the petri dishes containing the agar may be put into "
   write "the compartment in the freeze fracture device." ^
   break
endif
break false
}

{global_before_insert_in
if noun2 = device
   set noun2 = compartment
endif
if noun2 = compartment
   if noun1 = dish_1
      if agar_1 !childof dish_1
         write "With the agar no longer in the petri dish, there is no point.^" 
         set TURN_WORKED = false
         break
      endif
      break false
   endif
   if noun1 = dish_2
      if agar_2 !childof dish_2
         write "With the agar no longer in the petri dish, there is no point.^" 
         set TURN_WORKED = false
         break
      endif
      break false
   endif
   write "Only the petri dishes containing the agar may be put into "
   write "the compartment in the freeze fracture device." ^
   set TURN_WORKED = false
   break
endall
break false
}

{global_default_throw_at
if noun1(mass) > 4
   if noun2 = mirror
      write "I don't know if that's such a good idea, the mirror might "
      write "break." ^
      set TURN_WORKED = false
      break
   endif
   if noun2 = lift_1_light
      write "I don't know if that's such a good idea, the light might "
      write "break." ^
      set TURN_WORKED = false
      break
   endif
   if noun2 = lift_2_light
      write "I don't know if that's such a good idea, the light might "
      write "break." ^
      set TURN_WORKED = false
      break
   endif
endall
break false
}

{global_default_give_to
if noun1 = flowers
   write "Never mix business with pleasure." ^
   set TURN_WORKED = false
   break
endif
if noun1 = butt
   write Noun2 " seems repulsed by your offer." ^
   break
endif
if noun2 = piano_player
   write "The piano player is a bit too busy to accept your offer." ^
   break
endif
break false
}

{global_default_ask_for
if noun1 = piano_player
   proxy "talk to piano player"
   break
endif
if noun1 = divers
   proxy "talk to divers"
   break
endif
if noun1 = waitress
   write "The waitress refuses to hand over " noun2 .^
   break
endif
break false
}

{global_default_ask_about
if noun1 = divers
   proxy "talk to divers"
   break
endif
if noun1 = wise
   if WISE_ASKED = 3
      write "~I've had just about enough of your ridiculous questions, Dr "
      write "Meadows,~ Colonel Wise bellows. ~Either get on with your "
      write "investigation or I'll have you thrown off my island.~" ^
      set WISE_ASKED + 1
      break
   endif
   if WISE_ASKED = 4
      execute "global_evicted"
      break
   endif
   write "~It's not my job to answer your questions, it's yours to answer "
   write "mine,~ Wise barks at you coldly." ^
   set WISE_ASKED + 1
   break 
endall
if noun1 = zola
   write "The eldery man seems less than impressed by your badgering." ^
   break
endif
if noun1 = elderly_man
   write "The eldery man seems less than impressed by your badgering." ^
   break
endall
if noun1 = younger_man
   if noun2 hasnt ANIMATE
      break false
   endif
   write "~How much do you ever know about another person?~ the younger man "
   write "says looking to the elderly man." ^
   break
endall
if noun1 = piano_player
   proxy "talk to piano player"
   break
endif
if noun1 = guard
   write "~I'm afraid that's not something I can help you with, Dr Meadows." ^
   break
endall
if noun1 = lisa
   write "~I probably don't know any more than you do,~ Lisa "
   write "replies with a shrug of her shoulders. "
   if noun2 = senescence
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = ames
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = histidine
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = salmonella
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = carcinogen
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = dish_1
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = dish_2
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = agar
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = agar_1
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   if noun2 = agar_2
      write "~Perhaps there's a reference in your encyclopedia.~" ^
      break
   endif
   write ^
   break
endall
break false
}

{global_before_give_to
if noun2 = guard
   write "The MP is not in a position to accept gifts." ^
   break
endif
if noun2 = lisa
   if lisa has CUSTOM2
      write "Lisa is a little bit busy right now to pay any attention to your "
      write "offer." ^
      break
   endif
   if lisa has CUSTOM3
      write "Lisa doesn't exactly have a free hand to accept your offer." ^
      break
   endif
   if lisa has ON
      if noun1 != gun
         write "~Not now Alex, just give me the gun and get the hell out of "
         write "here.~" ^
         break
   endif
   if lisa has BURNING
      write "~Not now Alex, just get the hell out of here.~" ^
      break
endall
if noun2 = stranger
   if lisa has CUSTOM2
      write "The stranger is a little bit busy right now to pay any "
      write "attention to your offer." ^
      break
   endif
   if lisa has ON
      if noun1 = gun
         write "Seeing you go to hand the stranger his pistol back, Lisa "
         write "fires. A burning pain cuts through your chest as you hit the "
         write "ground, your mind spinning from the shock. Eyes closed, you "
         write "hear hurried footsteps, raised voices, then nothing." ^^
         execute "global_death"
         break
      endif
      write "~Stand away from him, Alex,~ Lisa orders." ^
      break
   endif
   if lisa has BURNING
      write "~Stand away from him, Alex,~ Lisa orders." ^
      break 
   endif
endall
break false
}

{global_before_show_to
if noun2 = zuckerman
   set REPUTATION_CURRENT = false
   if jacket has CUSTOM5
      if jacket is *present
         write "Concerned about the jacket, Dr Zuckerman refuses to comment." ^
      endif
   endif
   if HUGHES_SCRIPT = 0
      set HUGHES_SCRIPT = 1
   endif
   if zuckerman has CUSTOM1
      write "~Just answer the question, Alex: yes or no?~ Dr Zuckerman says "
      write "staring at you keenly." ^
      break
endall
if noun1 = teeth
   write "You smile at " noun2 .^
   break
endif
if noun2 = lisa
   if lisa has CUSTOM2
      write "Lisa is a little bit busy right now to pay any attention to your "
      write "offer." ^
      break
   endif
   if lisa has CUSTOM3
      write "Lisa is far from impressed. Very, very far." ^
      break
   endif
   if lisa has ON
      write "~Not now, Alex, just give me the gun and get the hell out of "
      write "here.~" ^
      break
   endif
   if lisa has BURNING
      write "~Not now, Alex, just get the hell out of here.~" ^
      break
endall
if noun2 = stranger
   if lisa has CUSTOM2
      write "The stranger is a little bit busy right now to pay any "
      write "attention to your offer." ^
      break
   endif
   if lisa has ON
      write "~Stand away from him, Alex,~ Lisa orders." ^
      break
   endif
   if lisa has BURNING
      write "~Stand away from him, Alex,~ Lisa orders." ^
      break 
   endif
endall
break false
}

{global_before_ask_about
if noun1 = lisa
   if lisa has CUSTOM2
      write "~Not now, Alex, just take his gun.~ ^
      break
   endif
   if lisa has ON
      write "~I'll talk to you later, Alex. Right now, just give me the gun "
      write "and get the hell out of here.~" ^
      break
   endif
   if lisa has BURNING
      write "~I'll talk to you later, Alex. Right now, just get the hell out "
      write "of here.~" ^
      break
   endif
   if lisa has CUSTOM3
      write "Lisa is not exactly in a good position to respond right now." ^
      break
endall
if noun1 = zuckerman
   set REPUTATION_CURRENT = false
   if jacket has CUSTOM5
      if jacket is *present
         write "Pointing to the jacket, Dr Zuckerman refuses to answer your "
         write "question." ^
      endif
   endif
   if HUGHES_SCRIPT = 0
      set HUGHES_SCRIPT = 1
   endif
   if zuckerman has CUSTOM1
      write "~Just answer the question, Alex: yes or no?~ Dr Zuckerman says "
      write "staring at you keenly." ^
      break
endall
if noun1 = stranger
   if lisa has CUSTOM2
      write "~There'll be time for questions later,~ he replies tensely." ^
      break
   endif
   if lisa has ON
      write "Lisa butts in, ~Don't talk to him, Alex. Just give me the gun "
      write "then get the hell out of here.~ ^
      break
   endif
   if lisa has BURNING
      write "Lisa butts in, ~Don't talk to him, Alex, just get out of here.~ ^
      break
   endif
endall
break false
}

{global_default_show_to
if noun2 = lisa
   write "~Fascinating, Alex,~ Lisa says blandly." ^
   break
endall
if noun2 = guard
   write "The guard continues to stare blankly ahead." ^
   break
endall
if noun2 = wise
   write "Colonel Wise just shakes his head in disbelief, astounded that "
   write "you could think he would be even remotely interested." ^
   break
endif 
if noun2 = stranger
   write "The stranger just shrugs." ^
   break
endall
break false
}

{global_default_pour_on
if noun2 = drain
   write Noun1 " flows through the drain and into the lagoon." ^
   move noun1 to limbo
   break
endif
break false
}

{global_after_take
if noun1 = diary 
   if filing hasnt SCORED
      if diary childof player
         ensure filing has SCORED
         points 5
endall
}

{global_after_pour_on
if noun2 = sink
   if noun1 != q_r_water
      if noun1 childof sink
         if plug !childof hole
            write ^ "You hear a loud gurgling sound as the last of "
            write noun1 " drains out of the sink." ^
            move noun1 to limbo
endall
}

{global_before_tell_about
if noun1 = zuckerman
   set REPUTATION_CURRENT = false
   if jacket has CUSTOM5
      if jacket is *present
         write "Concerned about the jacket, Dr Zuckerman refuses to comment." ^
      endif
   endif
   if HUGHES_SCRIPT = 0
      set HUGHES_SCRIPT = 1
   endif
   if zuckerman has CUSTOM1
      write "~Just answer the question, Alex: yes or no?~ Dr Zuckerman says "
      write "staring at you keenly." ^
      break
endall
if noun1 = lisa
   if lisa has CUSTOM2
      write "~Not now, Alex, just take his gun.~ ^
      break
   endif
   if lisa has ON
      write "~I'll talk to you later, Alex, right now just give me the gun "
      write "and get the hell out of here.~" ^
      break
   endif
   if lisa has BURNING
      write "~I'll talk to you later, Alex, right now just get the hell out of "
      write "here.~" ^
      break
   endif
   if lisa has CUSTOM3
      write "Lisa is not exactly in a good position to respond right now." ^
      break
endall
if noun1 = stranger
   if lisa has CUSTOM2
      write "~There'll be time to talk later,~ the stranger replies tensely." ^
      break
   if lisa has ON
      write "Lisa butts in, ~Don't talk to him, Alex, just give me the gun "
      write "then get out of here.~ ^
      break
   endif
   if lisa has BURNING
      write "Lisa butts in, ~Don't talk to him, Alex, just get out of here.~ ^
      break
   endif
endall
break false
}

{global_sink_contents
set INDEX = 0 
loop
  if noun3 childof noun1
     if noun3 != r_water
        set INDEX + 1
  endall
endloop
if INDEX = 0 
   write .^
   break
endall
if sink_tap hasnt CLOSED
   if plug !childof hole 
      execute "global_plug_out"
      break
endall
if r_water !childof sink
   write " but contains "
endall
if r_water childof sink
   write " and contains "
endall
loop
  if noun3 childof noun1
     if noun3 != r_water
        set INDEX - 1
        write noun3(inventory)
        execute "global_object_info"
        execute "global_list_structure"
        if INDEX = 0
           write .^
           break
  endall
endloop
}

{global_plug_out
write ". The sink contains "
loop
  if noun3 childof noun1
     if noun3 != r_water
        set INDEX - 1
        write noun3(inventory)
        execute "global_object_info"
        execute "global_list_structure"
        if INDEX = 0
           write .^
           break
  endall
endloop
}

{global_default_tell_im
if noun1 = concierge
   if noun2 hasnt ANIMATE
      write "~You are " noun2 "?~^"
      break
   endif
   if noun2 = stranger
      write "~You are " noun2 "?~^"
      break
   endif
   if noun2 = piano_player
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = younger_man
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = elderly_man
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = landlord
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = waitress
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = door_men
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = attendants
      write "~And do you have a name?~^"
      break
   endif
   if noun2 = guests
      write "~And do you have a name?~^"
      break
   endif
   if WHO_I_AM = false
      set WHO_I_AM = noun2
      if PAGE_REQUESTED != false
         set noun4 = PAGE_REQUESTED
         proxy "tell frank leboeuf to page " noun4
         break
      endif
      write "~Pleased to meet you,~ the concierge responds with a "
      write "shallow bow." ^
      break
   endif
   if WHO_I_AM = noun2
      write "~Yes, I know.~" ^
      break
   endif
   set noun4 = WHO_I_AM
   write "~But a moment ago you were "
   if noun4 = elderly_man
      write "Zola!~^"
      break
   endif
   if noun4 = kryten
      write "Dr Meadows!~^"
      break
   endif
   if noun4 = ruud
      write "Mr Gullit!~^"
      break
   endif
   write noun4 "!~^"
   break
endif
break false
}

{global_default_tell_about
if noun1 = piano_player
   proxy "talk to piano player"
   break
endif
if noun1 = divers
   proxy "talk to divers"
   break
endif
if noun1 = guard
   write "The MP stares blankly ahead." ^
   break
endif
if noun1 = lisa
   write "~Great,~ Lisa says with a smirk." ^
   break
endall
if noun1 = stranger
   write "~I'm afraid that doesn't help me, Alex,~ the stranger replies." ^
   break
endall
if noun1 = wise
   if WISE_INFORMED = 3
      write "~I think I've heard enough of your stories for one day, Meadows.~"
      write ^
      set WISE_INFORMED + 1
      break
   endif
   if WISE_INFORMED = 4
      execute "global_evicted"
      break
   endif
   write "~Fascinating story, Meadows,~ Colonel Wise replies with a blank "
   write "expression." ^
   set WISE_INFORMED + 1
   break
endif 
break false
}

{global_after_insert_in
if noun2 = sink
   if r_water childof sink
      execute "global_sink_damage"
endall
}

{global_sink_damage
if flask childof sink
   set noun4 = flask
   execute "global_noun4_liquid?"
   if INDEX = true
      move noun3 to limbo
endall   
if flask childof sink
   move q_r_water to flask
endall
if sink grandof agar_1 
   if sink grandof agar_2 
      write ^ "The agar begins to dissolve in the rain water, "
      write "disappearing altogether before long." ^ 
      move agar_1 limbo 
      move agar_2 limbo
   endif
   if sink !grandof agar_2
      write ^ "The agar begins to dissolve in the rain water, "
      write "disappearing altogether before long." ^ 
      move agar_1 limbo 
endall
if sink grandof agar_2
   if sink !grandof agar_1
      write ^ "The agar begins to dissolve in the rain water, "
      write "disappearing altogether before long." ^ 
      move agar_2 limbo 
endall
if recorder childof sink
   ensure recorder has DAMAGED
   ensure recorder hasnt ON
endall
if magazine childof sink
   ensure magazine has DAMAGED
endall
if paper childof sink
   ensure paper has DAMAGED
endall
if cassette childof sink
   ensure cassette has DAMAGED
endall
if book childof sink
   ensure book has DAMAGED
endall
if soap childof sink
   ensure soap has DAMAGED
endall
if report childof sink
   ensure report has DAMAGED
endall
if diary childof sink
   ensure diary has DAMAGED
endall
}

{global_ocean_damage
ensure hair hasnt CUSTOM4
if flask is *present
   set noun4 = flask
   execute "global_noun4_liquid?"
   if INDEX != false
      move noun3 to limbo
endall   
if flask is *present
   move q_s_water to flask
endall
if agar_1 is *present
   if agar_2 childof player
      write ^ "Floating in the sea water appears to have caused the agar "
      write "to dissolve." ^
      move agar_1 limbo 
      move agar_2 limbo
endall
if agar_1 is *present
   if agar_2 isnt present
      write ^ "Floating in the sea water appears to have caused the agar "
      write "to dissolve." ^
      move agar_1 limbo 
endall
if agar_2 is *present
   if agar_1 isnt present
      write ^ "Floating in the sea water appears to have caused the agar "
      write "to dissolve." ^
      move agar_2 limbo 
endall
if recorder is *present
   ensure recorder has DAMAGED
   ensure recorder hasnt ON
endall
if cassette is *present
   ensure cassette has DAMAGED
endall
if magazine is *present
   ensure magazine has DAMAGED
endall
if book is *present
   ensure book has DAMAGED
endall
if paper is *present
   ensure paper has DAMAGED
endall
if soap is *present
   ensure soap has DAMAGED
endall
if report is *present
   ensure report has DAMAGED
endall
if diary childof sink
   ensure diary has DAMAGED
endall
ensure kryten has DAMAGED
}

{global_before_sleep
if AGING_SCRIPT < 20 
   break false
endall
if here has UNDER_WATER
   write "I don't think this is the best place to sleep, no matter how tired "
   write "you feel." ^
   set TURN_WORKED = false
   break
endall
if here has MID_WATER
   write "I don't think this is the best place to sleep, no matter how tired "
   write "you feel." ^
   set TURN_WORKED = false
   break
endall
if here has ON_WATER
   write "I don't think this is the best place to sleep, no matter how tired "
   write "you feel." ^
   set TURN_WORKED = false
   break
endall
execute "global_endless_sleep"
}

{global_endless_sleep
if here has ON_WATER
   write "Closing your eyes, you fall asleep floating face down in the water, "
   write "never to regain consciousness." ^
   execute "global_death"
   break
endif
if here has UNDER_WATER
   write "Closing your eyes, you fall asleep and float endlessly in the "
   write "gentle ocean currents." ^ 
   execute "global_death"
   break
endif
write "Slumping to the ground, you barely close your eyes before you fall "
write "asleep, never to regain consciousness." ^
execute "global_death"
}

{global_eachturn
if here = bathroom
   if WATER_LEVEL = 5
      write ^ "Water runs from the overflowing sink down a drain in the "
      write "floor." ^
endall  
if here = lounge
   if WAITRESS_SCRIPT = 0
      set WAITRESS_SCRIPT = 1
endall
if WAITRESS_SCRIPT != 0
   execute "global_waitress_actions"
   set WAITRESS_SCRIPT + 1
endall
if here = lounge
   if SONG_PLAYED > 19 
      if SONG_PLAYED < 30
         if hughes hasnt CUSTOM5
            if jacket is *present
               if ear_piece has WORN
                  write ^ "~You must remember this, a kiss is just a kiss...~ "
                  write "your hear Agent Hughes sing horribly off key through "
                  write "the earpiece." ^
                  ensure hughes has CUSTOM5
endall
if VAN_ABSENCE != 0
   set VAN_ABSENCE + 1
endall
if here = concierge_desk
   set FRANKS_SCRIPT + 1
   execute "global_franks_actions"
endall
if here = bar
   set BARMANS_SCRIPT + 1
   execute "global_barmans_actions"
endall
if here > van
   execute "global_lift_brains"
endall
if here = trail
   set JUNGLE_SCRIPT + 1
   if JUNGLE_SCRIPT = 15 
      write ^ "A butterfly flutters past on the gentle breeze, disappearing "
      write "again between the trees." ^
      set JUNGLE_SCRIPT = 0
endall
if here = bar
   move guests to here
endall
if here = lobby
   move guests to here
endall
if here = concierge_desk
   move guests to here
endall
if here = street
   move hotel_obj to here
   ensure hotel_obj has OUT_OF_REACH
endall
if here = driveway
   move guests to here
   move hotel_obj to here
   ensure hotel_obj hasnt OUT_OF_REACH
endall
if here = lagoon_surface
   move lagoon_obj to here
   move outpost_obj to here
   ensure outpost_obj hasnt OUT_OF_REACH
endall
if here = beach
   move lagoon_obj to here
   move outpost_obj to here
   move walkway_obj to here
   ensure outpost_obj has OUT_OF_REACH
endall
if here = walkway
   move lagoon_obj to here
   move outpost_obj to here
   move walkway_obj to here
   ensure outpost_obj hasnt OUT_OF_REACH
endall
if here = lift_1
   move lift_1_obj to here
endall
if here = lift_2
   move lift_2_obj to here
endall
if here = ground_floor
   move lift_1_obj to here
   move lift_2_obj to here
endall
if here = first_floor
   move lift_1_obj to here
   move lift_2_obj to here
endall
if here = second_floor
   move lift_1_obj to here
   move lift_2_obj to here
endall
if here = third_floor
   move lift_1_obj to here
   move lift_2_obj to here
endall
if here = fourth_floor
   move lift_1_obj to here
   move lift_2_obj to here
endall
if here = south_beach
   set BEACH_SCRIPT + 1
   if BEACH_SCRIPT = 20
      write ^ "Several hundred metres away from the shore, you spot several "
      write "dolphins bobbing in and out of the water playfully, only to "
      write "lose them again moments later." ^
      set BEACH_SCRIPT = 0
endall
if here = office
   set WISES_SCRIPT + 1
   if WISES_SCRIPT = 30
      write ^ "Emitting and enormous racket, Colonel Wise's phone barely "
      write "rings twice before he answers it with a bland, ~Wise~." ^^
      write "A terse conversation ensues, through which you wait patiently "
      write "until he eventually slams the handset back down onto its cradle.^"
      set WISES_SCRIPT = 0
endall
if here = compound
   set MPS_SCRIPT + 1
   if MPS_SCRIPT = 10
      write ^ "The MP indulges in an absent minded scratch." ^
   endif
   if MPS_SCRIPT = 20
      write ^ "The MP shifts his weight from one foot to the other." ^
   endif
   if MPS_SCRIPT = 30
      write ^ "The MP squints briefly into the sky." ^
      set MPS_SCRIPT = 0 
endall
if here = van
   move van_obj to van 
   move van_doors to van
   if VAN_ABSENCE > 0
      if VAN_ABSENCE < 20
         write ^ "~Back already,~ Agent Petrescu says as you climb into the "
         write "van. ~Not having second thoughts, I hope.~" ^
         set VAN_ABSENCE = 0
endall
if here = van
   if VAN_ABSENCE >= 20
      write ^ "~What are you doing back here, you haven't got a confession "
      write "out of Dr Zuckerman yet!~ Agent Petrescu exclaims." ^
      set VAN_ABSENCE = 0
endall
if here = conference_room
   if conference_room hasnt CUSTOM4
      write ^ "~Our next speaker will not be for several minutes ladies and "
      write "gentlemen, so please relax and enjoy yourselves. Tea and coffee "
      write "will be served shortly along with your choice of dessert from "
      write "the menu,~ a distinguished-looking gentlemen says from behind "
      write "the lectern, before taking his seat at a table near the front." ^
      ensure conference_room has CUSTOM4
endall
if here = z_office
   if zuckerman hasnt CUSTOM4
      write ^ "~Dr Alex Meadows,~ Dr Zuckerman says without looking away from "
      write "the window. ~I would have been dissapointed if you hadn't come,~ "
      write "he continues, slowly turning around to face you. ~It was me who "
      write "had you called to the base you know. Colonel Wise was against "
      write "the idea, of course, but in the end I managed to convince him "
      write "that the findings of a civilian would be more widely accepted by "
      write "the public. He insisted that an informed officer be permanently "
      write "assigned to keep an eye on you and make sure that your findings "
      write "were those we wanted them to be.~" ^^
      write "Pausing for a while, Dr Zuckerman's face softens slightly. ~But, "
      write "somewhere deep inside, I hoped that you would discover the "
      write "truth - that you would come and end the loneliness of my work. "
      write "I do hope my faith in you and your reputation was not "
      write "misplaced.~^"
      ensure zuckerman has CUSTOM4
      describe zuckerman as "Dr Zuckerman is here, standing by the window."
endall
set ENERGY_LEVEL + 1
if HUGHES_SCRIPT != 0
   set HUGHES_SCRIPT + 1
endall
if HUGHES_SCRIPT = 4
   if zuckerman hasnt CUSTOM2
      if ear_piece has WORN
         write ^ "~Ask him about the project, about the human tests,~ Agent "
         write "Hughes voice says, emanating from the ear piece." ^
endall
if GULLITS_SCRIPT != false
   execute "global_gullit_journey"
endall
if here = hangar_north
   if rope has CUSTOM4
      if stranger(location) = here
         if rope hasnt CUSTOM5
            write ^ "The stranger, obviously startled by another intrusion, "
            write "relaxes noticeably on seeing that it is just you again." ^
            ensure rope has CUSTOM5
endall
if here = hangar_north
   if rope hasnt CUSTOM4
      execute "global_stranger_encounter"
      execute "global_stranger_standoff"
      ensure filing has CUSTOM5
endall
if STRANGERS_SCRIPT != false
   set STRANGERS_SCRIPT + 1
   if STRANGERS_SCRIPT = 6
      if desk_leif has CUSTOM1
         if here = hangar_north
            if diary hasnt SCORED
               write ^ "~Have you found anything yet?~ the stranger inquires." ^
            endif
         endif
      endif
      if desk_leif hasnt CUSTOM1
         if here = hangar_north
            write ^ "The stranger runs his fingers along the underside of the "
            write "desk." ^
            ensure desk_leif has CUSTOM1
         endif
      endif
   endif
   if STRANGERS_SCRIPT = 10
      describe stranger as "The stranger is here examining the tank and bank of instruments."
      set noun4 = stranger
      set DIRECTION = SOUTH
      set DESTINATION = hangar_south
      execute "global_push_object"
   endif
   if STRANGERS_SCRIPT = 15
      if fish_tank hasnt CUSTOM1
         if here = hangar_south
            write ^ "The stranger taps the glass wall of the fish tank." ^
            ensure fish_tank has CUSTOM1
         endif
      endif
   endif
   if STRANGERS_SCRIPT = 20
      describe stranger as "The stranger is here, searching about the room."
      set noun4 = stranger
      set DIRECTION = NORTH
      set DESTINATION = hangar_north
      execute "global_push_object"
      set STRANGERS_SCRIPT = 1
endall
if LISAS_SCRIPT != false
   if LISAS_SCRIPT < 25
      set LISAS_SCRIPT + 1
endall
if SONG_PLAYED = 100
   set SONG_PLAYED = 1
endall
set SONG_PLAYED + 1
if here = lounge
   execute "global_change_song"
endall
if LISAS_SCRIPT > 24 
   if LISA_SCRIPT < 38
      if lisa(location) != hangar_north
         execute "global_toilet_break"
endall
if AGING_SCRIPT != false
   set AGING_SCRIPT + 1
endall
if AGING_SCRIPT = 20
   write ^ "You begin to feel oddly tired, sort of run down." ^
endall
if AGING_SCRIPT > 20
   if AGING_SCRIPT < 30
   write ^ "Minute by minute now you feel yourself growing more tired and "
   write "weary." ^
endall
if AGING_SCRIPT = 30
   write ^ "The tiredness is now overwhelming. "
   execite "global_endless_sleep"
endall
if ENERGY_LEVEL > 5
   set ENERGY_LEVEL = 5
endall
if tank has WORN
   set CONSUMPTION_RATE = CURRENT_DEPTH
   set CONSUMPTION_RATE / 5
   set CONSUMPTION_RATE + 1
   set TANK_PRESSURE - CONSUMPTION_RATE
   if TANK_PRESSURE < 0 
      set TANK_PRESSURE = 0
endall
if TANK_PRESSURE = 0
   if tank has WORN
      execute "global_tank_empty"
endall
if here hasnt WITHOUT_AIR
   set OXYGEN_LEFT = 5
endall
if tank has WORN
   set OXYGEN_LEFT = 5
endall
if here has WITHOUT_AIR
   if tank hasnt WORN
      set OXYGEN_LEFT - 1
endall
if OXYGEN_LEFT = 0
   execute "global_out_of_air"
endall
if OXYGEN_LEFT = 1
   write ^ "Your lungs begin to burn as the last scraps of oxygen are "
   write "extracted from the air within them." ^
endall
move blob to limbo
if SCREEN_FADE != 0
   if blinds has CLOSED
      if switch hasnt ON 
         if WORK_PHASE != 5
            move blob to control_centre
      endif
   endif
   set SCREEN_FADE - 1
   if SCREEN_FADE = 0
      move blob to limbo
endall
if WATER_LEVEL > 0
   if plug !childof hole
      set WATER_LEVEL - 1
      if WATER_LEVEL = 0
         move r_water to limbo
         set sink(info) - 100 
         if player(location) = bathroom
            if sink_tap has CLOSED
               write ^ "You hear a loud gurgling sound as the last of "
               write "the water drains out of the sink." ^
endall 
if sink_tap hasnt CLOSED
   set WATER_LEVEL + 1 
   move r_water to sink
   set sink(info) + 100
   if WATER_LEVEL > 5
      set WATER_LEVEL = 5
endall
if sink_tap has CLOSED
   if WATER_LEVEL = 5
      set WATER_LEVEL = 4
endall
if here = site
   execute "global_site_script"
endall
if petrescu has CUSTOM4
   if hughes hasnt CUSTOM4
      write ^ "~Can you hear me, Dr Meadows?~ you hear Agent Hughes's voice "
      write "ask, emanating from the ear piece." ^^
      write "~Yes, clearly,~ you reply with a nod." ^^
      write "~Good,~ Agent Petrescu continues. ~The conference is strictly by "
      write "invitation only, so be sure to make your entrance discreet. "
      write "Remember, the reason you are here is to relate to Dr Zuckerman as "
      write "a fellow scientist. Once you have made contact, try to get him "
      write "talking about his project. When we have enough information, we "
      write "will radio two undercover agents on the inside to make the "
      write "arrest. Oh yeah, and good luck.~" ^
      ensure hughes has CUSTOM4
endall
if petrescu hasnt CUSTOM4
   if here = van
      write ^ "~The jacket you are wearing, Dr Meadows, has a small "
      write "microphone and transmitter sewn into the lining,~ Agent Petrescu "
      write "says as he steps back to admire the fit. ~Agent Hughes will be "
      write "monitoring and recording everything from here in the van and "
      write "will prompt you as necessary through the use of this miniature "
      write "ear piece.~" ^^
      write "Taking the ear piece from Agent Petrescu's hand you place it in "
      write "your ear." ^
      ensure petrescu has CUSTOM4
endall
if wise hasnt CUSTOM4
   if here = office
      write ^ "~I had been expecting you a lot sooner than this,"
      write "~ Colonel Wise grumbles as you enter. ~There's a "
      write "helicopter leaving for the mainland this evening,~ he "
      write "continues after a moment's pause, strategically weighted to make "
      write "you feel as uneasy as possible. ~Under no circumstances "
      write "do I want to go to sleep tonight without your report on my desk "
      write "and your butt on that helicopter. Understood?"
      ensure wise has CUSTOM4
      execute "global_wise_hassle"
endall
if here = control_centre
   if screen has ON
      if lisa has CUSTOM4
         if lisa(location) = control_centre
            write ^ "~What now, Alex?~ Lisa asks, flicking off the main screen "
            write "once again as you enter." ^
            ensure screen hasnt ON
            set SCREEN_FADE = 4
endall
if here = control_centre
   if lisa hasnt CUSTOM4
      write ^ "Lisa quickly flicks off the main screen of the control panel "
      write "as you enter the room. Shooting up out of her chair, " 
      write "she turns to face you. "
      describe lisa as "Lisa is here, standing close by. "
      ensure lisa has CUSTOM4
      set SCREEN_FADE = 4
      set LISAS_SCRIPT = 1 
      write "~You startled me,~ she blurts nervously." ^
endall
if mask hasnt CUSTOM5
   if mask has WORN
      if here = wise(location)
         execute "global_wise_fashion"
         ensure mask has CUSTOM5
endall
if mask hasnt CUSTOM5
   if tank has WORN
      if here = wise(location)
         execute "global_wise_fashion"
         ensure mask has CUSTOM5
endall
if mask hasnt CUSTOM5
   if tank has WORN
      if here = wise(location)
         ensure mask has CUSTOM5
if mask hasnt CUSTOM4
   if mask has WORN
      if here = lisa(location)
         write ^ "Suddenly realising what you are wearing, Lisa covers "
         write "her mouth trying hard not to laugh. ~It suits you,"
         write "~ she chortles pointing at the mask, ~but I "
         write "really think you need a long white scarf to go with it, and "
         write "perhaps some leather driving gloves.~" ^
         ensure mask has CUSTOM4
endall  
if here = pool
   move ladder to pool
   move s_water to here
endall
if here = surface
   move ladder to surface
   move s_water to here
endall
if here = beneath_outpost
   move ladder to beneath_outpost
   move s_water to here
endall
if here = backstage
   move south_door to backstage
endall
if here = z_office
   move south_door to z_office
endall
if here = compound
   move hangar_door to compound
   ensure hangar_door has OUT_OF_REACH
   move access_door to compound
   ensure access_door to OUT_OF_REACH
endall
if here = hangar_north
   move hangar_door to hangar_north
   ensure hangar_door hasnt OUT_OF_REACH
   move access_door to hangar_north
   ensure access_door hasnt OUT_OF_REACH
endall
if here = storage
   move steel_door to storage
endall
if here = walkway
   move steel_door to walkway
endall
if here = quarters
   move bathroom_door to quarters
endall
if here = bathroom
   move bathroom_door to bathroom
endall
if here has CUSTOM5
   execute "global_ocean"
endall
if recorder has ON
   set COUNTER_POSITION + 1
   if recorder is *present
      execute "global_recorder"
endall
set NEEDS_LINEFEED = false
}

{global_site_script
if WORK_PHASE = 4
   write ^ "The submarines propellers, previously turning slowly to "
   write "counter the mild current, now spring to life. Its powerful "
   write "spotlight sweeps past as it turns, forcing you to duck down "
   write "further behind the rock formation in order to avoid being seen. "
   write "Now facing roughly to the southeast, the submarine begins to move "
   write "off, gently rising and increasing in speed as it goes." ^
   move submarine to limbo 
   set WORK_PHASE + 1
   if mask has WORN
      write ^ "As the silt stirred up by the submarine's propellers "
      write "begins to clear, a soft glint catches your eye. It would "
      write "appear that one of the spilt vials, having up until now been "
      write "covered by a layer of soft sediment, has been inadvertently "
      write "left behind." ^
      move vial to here
    endif
endif
if WORK_PHASE = 3
   write ^ "With the canisters now firmly in place, one of the divers "
   write "closes the hatch to the submarine. Glancing around briefly, "
   write "he turns then follows the other divers up through an opening in "
   write "the submarine's base. " ^
   move divers to limbo 
   move canister to limbo
   move vial to limbo
   ensure vial hasnt OUT_OF_REACH
   set WORK_PHASE + 1
endif
if WORK_PHASE = 2
   write ^ "Sudden commotion near the submarine draws your attention "
   write "back to it. It appears that one of the canisters has somehow "
   write "come open while being loaded, spilling several small glass vials " 
   write "on to the ocean floor. Divers quickly scramble to recover them, "
   write "then continue to finish loading the canister from which they "
   write "came." ^ 
   set WORK_PHASE + 1
   move vial to here
endif
if WORK_PHASE = 1
   write ^ "As each canister is lined up with an opening in the aft "
   write "end of the submarine, the divers slowly begin to slide it along "
   write "a set of rollers until it disappears into the submarine's "
   write "interior." ^
   set WORK_PHASE + 1
endif
if WORK_PHASE = 0
   write ^ "Put on guard by the soft humming noise of an electric "
   write "motor, you squat down behind the rock formation. Peering out and "
   write "around, you see a group of four divers working to load several "
   write "long steel canisters, neatly stacked on the ocean floor, into an "
   write "unmarked submarine hovering nearby. The divers appear to be unaware "
   write "of your presence." ^
   move submarine to here
   set WORK_PHASE + 1
}

{global_stranger_encounter
ensure rope has CUSTOM4
ensure lisa has CUSTOM2
ensure lisa hasnt POSSESSIVE
move lisa to here
set LISAS_SCRIPT = 42
move stranger to here
describe lisa as "Lisa is here poining her pistol at the stranger."
write ^ "The moment your feet hit the ground, the sound of a gun "
write "cocking from behind makes you freeze. ~Place your hands behind "
write "your head and stay facing forward,~ a calm male voice instructs."
write ^^ "You obey." ^^ "Footsteps echoing on the hard concrete floor "
write "approach slowly. A set of rough hands frisk you briefly"
if c_pass childof player
   if c_pass has WORN
      write ", ripping your identification pass from your shirt."
      write ^^ "~Dr Alex Meadows,~ the tall middle aged man reads out loud "
      write "as he turns you around to face him for the first time. ~So what "
      write "brings you here?~ ^^
      ensure c_pass hasnt WORN
      move c_pass to stranger
      break
endall
write " then spin you around to face their owner, a tall middle aged man "
write "whom you don't recognise. ~So what you brings you here, Dr Meadows?~"
write " he inquires, staring at you intently." ^^
}

{global_stranger_standoff
write "Nervously you shift your weight from one foot to the other, ~I'm a "
write "scientist, working here on the island, a civilian. I just... I...~" ^^
write "~I know who you are. I presume you...~" ^^
write "The access door opening stops your assailant in mid-sentence as "
write "he spins around, leveling his pistol at the newcomer. "
write "Straining to see in the glare of the open doorway you are "
write "surprised, not to mention relieved, to see Lisa. Gun drawn, she "
write "back-heels the door closed again, never taking her eyes or aim off "
write "the stranger." ^^
write "~Drop your weapon,~ they both yell simultaneously, now standing "
write "face to face merely metres away from each other."
write ^^ "~Take his gun, Alex,~ Lisa says to you, not breaking her gaze."
write ^^ "~Don't do it, Dr Meadows,~ the stranger protests, ~you don't know "
write "what's going on. I've been investigating Dr Zuckerman and his work "
write "for over a year. If I get turned in now, chances are it will "
write "have all been for nothing. He's an evil man, Alex. Don't help the "
write "military protect him any longer.~" ^
}

{global_stranger_offer
write "^After a lengthy pause, the stranger turns and looks you directly in "
write "in the eye. ~How would you feel about going to this conference? I "
write "mean, it makes perfect sense. If there is anyone who can make contact "
write "with Zuckerman and extract the necessary information from him, it's "
write "you. We can put a couple of agents on the inside to support you, but "
write "he would never confide in them. He is highly contemptuous of anyone "
write "outside the scientific comunity.~^^"
write "~I don't know, ~ you reply warily. As appealing as the idea of an "
write "undercover assignment at a conference in Monte Carlo is, you are, "
write "after all, just a scientist and it might be dangerous." ^^
write "~The fact that you are a scientist is exactly why we need you,~ the "
write "stranger interjects, making you aware of the fact that you had been "
write "thinking out loud. ~Go and submit your final report as normal. Wise "
write "will then have you flown out to the mainland where one of our "
write "operatives will rendezvous with you. He will then escort you to "
write "Monte Carlo, where you will be briefed as to what we will require. "
write "We need you, Alex; the truth needs you.~" ^
}

{global_toilet_break
set noun4 = lisa
if LISAS_SCRIPT = 25
   if lisa(location) = player(location)
      if lisa has DAMAGED
         write ^ "~Excuse me, Alex, I'll be back in a moment,~"
         write " Lisa says touching you on the elbow." ^
      endif
   endif
   set DIRECTION = SOUTH
   set DESTINATION = pool
   execute "global_push_object"
   set LISAS_SCRIPT + 1
   if screen has ON
      ensure screen hasnt ON
      set SCREEN_FADE = 4
   break
endall
if LISAS_SCRIPT = 26
   set DIRECTION = EAST
   set DESTINATION = quarters
   execute "global_push_object"
   set LISAS_SCRIPT + 1
   break
endall
if LISAS_SCRIPT = 27
   if bathroom_door has LOCKED
      if bathroom_door has CUSTOM4
         break
      endif
   endif
   if bathroom_door has LOCKED
      write ^ "A sharp rap on the bathroom door startles you. ~" 
      write "Hey! Hurry up in there will you,~ Lisa calls from the 
      write "other side." ^
      ensure bathroom_door has CUSTOM4
      break
   endif
   if bathroom_door has CLOSED
      if player(location) = bathroom
         if bathroom_door has CUSTOM2
            write ^ "~Sorry,~ chirps Lisa, ~I'll come back later.~" ^
	    set lisa(location) = control_centre
            set LISAS_SCRIPT = 1
         endif
      endif
      if bathroom_door has CUSTOM3
         write ^ "~I take it you don't want me to go in there,~"
         write " Lisa says shrugging her shoulders." ^
         set LISAS_SCRIPT = 36
         break
      endif
      if player(location) = quarters 
         if bathroom_door has CUSTOM2
            write ^ "~Knock it off will you,~ Lisa barks "
            write "as she re-opens the bathroom door." ^
            ensure bathroom_door hasnt CLOSED
            ensure bathroom_door has CUSTOM3
            set quarters(north) = bathroom 
            set bathroom(south) = quarters
            break
         endif
      endif
      if player(location) = bathroom
         write ^ "Lisa opens the bathroom door." ^
      endif
      if player(location) = quarters
         write ^ "Lisa opens the door to the bathroom." ^
      endif
      ensure bathroom_door hasnt CLOSED
      ensure bathroom_door has CUSTOM2
      set quarters(north) = bathroom 
      set bathroom(south) = quarters
      break
   endif
   if bathroom_door hasnt CLOSED
      set DIRECTION = NORTH
      set DESTINATION = bathroom
      ensure bathroom_door hasnt CUSTOM2
      ensure bathroom_door hasnt CUSTOM3
      execute "global_push_object"
      set LISAS_SCRIPT + 1
      break
endall 
if LISAS_SCRIPT = 28
   if player(location) = quarters
      write ^ "Lisa closes the door to the bathroom." ^
      ensure bathroom_door has CLOSED
      ensure bathroom_door has LOCKED
      set quarters(north) = nowhere
      set bathroom(south) = nowhere
      set LISAS_SCRIPT + 1
      break
   endif
   if player(location) = bathroom
      if bathroom_door hasnt CUSTOM5
         write ^ "~Would you mind leaving,~ Lisa asks, "
         write "~I'm really not in the mood for an audience.~" ^
         ensure bathroom_door has CUSTOM5
         break
      endif
      if bathroom_door has CUSTOM5
         break
      endif
   endif
   ensure bathroom_door has CLOSED
   ensure bathroom_door has LOCKED
   set quarters(north) = nowhere
   set bathroom(south) = nowhere
   set LISAS_SCRIPT + 1
   break
endall
if LISAS_SCRIPT > 28 
   if LISAS_SCRIPT < 34
      set LISAS_SCRIPT + 1
      break
endall
if LISAS_SCRIPT = 34
   set LISAS_SCRIPT + 1
   if player(location) = quarters
      write ^ "You hear the toilet flush from behind the closed bathroom "
      write "door." ^
   break
endall
if LISAS_SCRIPT = 35 
   if bathroom_door has CLOSED
      if player(location) = quarters 
         if bathroom_door has CUSTOM2
            write ^ "~Knock it off will you,~ Lisa barks as she re-opens the "
            write "bathroom door." ^
            ensure bathroom_door hasnt CLOSED
            set quarters(north) = bathroom 
            set bathroom(south) = quarters
            break
         endif
         write ^ "Lisa opens the door to the bathroom." ^
         ensure bathroom_door has CUSTOM2
      endif
      ensure bathroom_door hasnt CLOSED
      ensure bathroom_door hasnt LOCKED
      set quarters(north) = bathroom 
      set bathroom(south) = quarters
      break
   endif
   if bathroom_door hasnt CLOSED
      set DIRECTION = SOUTH
      set DESTINATION = quarters
      execute "global_push_object"
      set LISAS_SCRIPT + 1
      break
endall
if LISAS_SCRIPT = 36
   set DIRECTION = WEST 
   set DESTINATION = pool
   execute "global_push_object"
   set LISAS_SCRIPT + 1
   break
endall
if LISAS_SCRIPT = 37
   set DIRECTION = NORTH
   set DESTINATION = control_centre 
   execute "global_push_object"
   set LISAS_SCRIPT + 1
}

{global_recorder
if cassette has DAMAGED
   write "A dull, unintelligible, warble emits from the recorder. Apparently "
   write "the cassette didn't like getting wet." ^
   break
endall
if COUNTER_POSITION = 1
   write ^ "After a brief pause you hear your own voice emanating from the "
   write "recorder. ~Initial examination of the supplied sample "
   write "of affected marine life reveals a high number of cancer related "
   write "deaths. All specimens are fully mature, suggesting a natural "
   write "immunity or resilience amongst younger fish to the as yet "
   write "unidentified toxin.~" ^
endall
if COUNTER_POSITION = 2
   write ^ "You hear a brief click from the recorder followed by your own "
   write "voice. ~Results from the toxicological analysis show extremely high "
   write "doses of Rotenone, more than sufficient to cause the various forms "
   write "of cancer found. There is not, however, any reason for the younger "
   write "fish to remain practically one hundred perecent unaffected. Time "
   write "permitting, I will investigate this phenomenon further.~" ^
endall
if COUNTER_POSITION = 3
   write ^ "A short pause is followed by your voice again. ~Use of "
   write "Rotenone on the island has been confirmed. An internal "
   write "investigation by the military into the exact nature of the "
   write "contamination has been initiated, the results of which should be "
   write "available to me before the end of the week.~" ^
endall
if COUNTER_POSITION = 4
   write ^ "The recorder continues to play. ~With the source of "
   write "contamination identified and rectified, my work here is all but "
   write "done. I am still perplexed, however, by the absence of "
   write "younger specimens amongst those affected. Following several "
   write "informal discussions with local fishermen, anecdotal evidence "
   write "appears to indicate that almost all recent catches of living fish "
   write "are also devoid of younger fish. Given the deaths in adult fish, I "
   write "would have anticipated the opposite to have been so, with catches "
   write "having a relatively high percentage of young. Despite mounting "
   write "pressure from the military to have the case closed, I am going to "
   write "stall the submission of my final report in order to investigate "
   write "for another few days.~" ^ 
endall
if COUNTER_POSITION = 5
   write ^ "A gentle hissing from the recorder gives way to the sound "
   write "of your voice. ~After much consideration, I have concluded that "
   write "the only possible cause of the heavily skewed age demographic must "
   write "be that the contamination has interrupted the breeding cycle. "
   write "This interruption must have occurred long enough ago to explain "
   write "the almost completely mature population. It is this theory that I "
   write "will pursue for my remaining days on the island.~" ^
endall
if COUNTER_POSITION = 6
   write ^ "The recorder's motor hums indicating the end of the cassette has "
   write "been reached. Seconds later a loud click announces that the "
   write "cassette has stoped playing." ^
   ensure recorder hasnt ON
endall
}

{global_ocean
set ocean_bottom(north) = ocean_bottom
set ocean_bottom(northeast) = ocean_bottom
set ocean_bottom(east) = ocean_bottom
set ocean_bottom(southeast) = ocean_bottom
set ocean_bottom(south) = ocean_bottom
set ocean_bottom(southwest) = ocean_bottom
set ocean_bottom(west) = ocean_bottom
set ocean_bottom(northwest) = ocean_bottom
set ocean_surface(north) = ocean_surface
set ocean_surface(northeast) = ocean_surface
set ocean_surface(east) = ocean_surface
set ocean_surface(southeast) = ocean_surface
set ocean_surface(south) = ocean_surface
set ocean_surface(southwest) = ocean_surface
set ocean_surface(west) = ocean_surface
set ocean_surface(northwest) = ocean_surface
set mid_water(north) = mid_water
set mid_water(northeast) = mid_water
set mid_water(east) = mid_water
set mid_water(southeast) = mid_water
set mid_water(south) = mid_water
set mid_water(southwest) = mid_water
set mid_water(west) = mid_water
set mid_water(northwest) = mid_water
if CURRENT_DEPTH = 35
   set mid_water(down) = ocean_bottom
   if LONGITUDE = 15
      if LATITUDE = 21
         set mid_water(down) = site
endall
if CURRENT_DEPTH = 30
   set mid_water(down) = mid_water
endall
if CURRENT_DEPTH = 5
   set mid_water(up) = ocean_surface
endall
if CURRENT_DEPTH = 10
   set mid_water(up) = mid_water
endall
if LONGITUDE = 14
   if LATITUDE = 22
       set ocean_bottom(northeast) = site
endall
if LONGITUDE = 15
   if LATITUDE = 22
      set ocean_bottom(north) = site
endall
if LONDITUDE = 16
   if LATITUDE = 22
      set ocean_bottom(northwest) = site
endall
if LONGITUDE = 14
   if LATITUDE = 21
      set ocean_bottom(east) = site
endall
if LONGITUDE = 16
   if LATITUDE = 21
      set ocean_bottom(west) = site
endall
if LONGITUDE = 14
   if LATITUDE = 20
       set ocean_bottom(southeast) = site
endall
if LONGITUDE = 15
   if LATITUDE = 20
      set ocean_bottom(south) = site
endall
if LONGITUDE = 16
   if LATITUDE = 20
      set ocean_bottom(southwest) = site
endall
if LONGITUDE = 10
   set ocean_bottom(west) = nowhere
   set ocean_bottom(southwest) = nowhere
   set ocean_bottom(northwest) = nowhere
   set ocean_surface(west) = nowhere
   set ocean_surface(southwest) = nowhere
   set ocean_surface(northwest) = nowhere
   set mid_water(west) = nowhere
   set mid_water(southwest) = nowhere
   set mid_water(northwest) = nowhere
endall
if LONGITUDE = 73 
   set ocean_bottom(east) = nowhere
   set ocean_bottom(southeast) = nowhere
   set ocean_bottom(northeast) = nowhere
   set ocean_surface(east) = nowhere
   set ocean_surface(southeast) = nowhere
   set ocean_surface(northeast) = nowhere
   set mid_water(east) = nowhere
   set mid_water(southeast) = nowhere
   set mid_water(northeast) = nowhere
endall
if LATITUDE = 14 
   set ocean_bottom(north) = nowhere
   set ocean_bottom(northwest) = nowhere
   set ocean_bottom(northeast) = nowhere
   set ocean_surface(north) = nowhere
   set ocean_surface(northwest) = nowhere
   set ocean_surface(northeast) = nowhere
   set mid_water(north) = nowhere
   set mid_water(northwest) = nowhere
   set mid_water(northeast) = nowhere
endall
if LATITUDE = 39
   move wall to limbo
endall
if LATITUDE = 40
   move wall to here 
   set ocean_bottom(south) = nowhere
   set ocean_bottom(southwest) = nowhere
   set ocean_bottom(southeast) = nowhere
   set ocean_surface(south) = nowhere
   set ocean_surface(southwest) = nowhere
   set ocean_surface(southeast) = nowhere
   set mid_water(south) = nowhere
   set mid_water(southwest) = nowhere
   set mid_water(southeast) = nowhere
   if LONGITUDE = 36 
      set ocean_surface(south) = lagoon_surface
      if CURRENT_DEPTH <= 5 
         set mid_water(south) = lagoon_bottom
         move wall to limbo
endall
ensure mid_water hasnt VISITED
ensure ocean_surface hasnt VISITED
ensure ocean_bottom hasnt VISITED
move s_water to here
}

{global_out_of_air
write ^ "The burning sensation in your lungs has now become unbearable. "
if here = beneath_outpost
   write "You swim upwards, desperate for air, gasping the moment you break "
   write "the surface." ^
   set player(location) = surface
   set CURRENT_DEPTH = 0
   break
endall
write "Gazing desperately upward, you begin to panic as it becomes "
write "increasingly obvious to you that you are not going to reach the "
write "surface in time. You pass out, dreaming momentarily of a high mountain "
write "outcrop overlooking a green valley. A brightly coloured bird flies "
write "by, its large beating wings forcing a gentle breath of cool, clean "
write "air against your upturned face. Moments later it has passed over "
write "a distant rise, and you into the melting pot of humanity." ^ 
execute "global_death"
}

grammar about	->about

{global_about
write "THE UNHOLY GRAIL by Stuart Allen (email sallen@one.net.au)" ^
write "release " GAME_VERSION ", copyright (C) 1996, 1997" ^^
write "Special thanks to:" ^^
write "  Bob Bruner          for his generous biology tuition, without which,^"
write "                      many parts of this game would not have been^" 
write "                      possible.^" 
write "  Geoff Mutton        for his assistance with both biology and^"
write "                      chemistry technicalities.^"
write "  Terry Dawson        for his patience and tuition with all things^"
write "                      C like.^"
write "  Vicki Worthington   for listening patiently and nodding politely^"
write "                      while I talked endlessly about this game.^"
write "  Rupert Lane         for his alpha testing, beta testing and moral^"
write "                      support.^"
write "  Mary Kuhner         for their invaluable beta testing.^"
write "  Stephen Granade" ^
write "  Jane Kerr" ^
write "  Paul Janzen" ^
write "  Michael Kinyon" ^
set TURN_WORKED = false
}

{global_intro
if INTERNAL_VERSION != 3
   write "This game requires version 2 of the JACL engine to run." ^
   terminate
endif
set GAME_VERSION = 1 
clear
write ^^
centre "T H E   U N H O L Y   G R A I L" 
write ^
centre "by Stuart Allen" 
write ^^^ "For over three months now you have been stationed at this drab "
write "research outpost, situated on a remote island somewhere in the "
write "Pacific ocean. You have been contracted by the military as a genetics "
write "specialist to study recent deaths occurring in the local marine life, "
write "determine the cause and assess any danger to human personnel." ^^
write "Due to the classified nature of the majority of other projects being "
write "carried out on the island, being one of the few civilians involved "
write "hasn't made life easy. Little respect and even less information has "
write "led you to find solace in the tranquillity of your tropical home, "
write "indulging in as little contact with the main core of workers as "
write "possible. Lisa, however, a Naval Officer and marine biologist based "
write "with you, has fortunately been compassionate to your situation, acting "
write "more as a scientific colleague than a military chaperone." ^^
set CURRENT_PLAYER = kryten 
set player(location) = quarters 
if here hasnt OUTDOORS
   move north_wall to here
   move south_wall to here
   move east_wall to here
   move west_wall to here
endall
move ground to here
more
clear
write ^^^ "REMOTE MILITARY BASE "
right "MONDAY 3:42 PM"
write "SOMEWHERE IN THE PACIFIC OCEAN" ^^
look
}

object plunger: plunger
 inventory	a "plunger"
 starts childof syringe

{press : move
set noun4 = syringe
execute "global_noun4_liquid?"
if INDEX = false
   write "There is nothing in the syringe, so the plunger is already fully "
   write "depressed." ^
   break
endall
if syringe has CUSTOM5
   write "A small portion of " noun3 " squirts out of the syringe and on to "
   write "the ground." ^
   break
endall
if syringe has CUSTOM4
   write "You depress the plunger until all the air is expelled and a small "
   write "amount of " noun3 " squirts out of the syringe." ^
   ensure syringe hasnt CUSTOM4
   break
endall
write "A small portion of " noun3 " squirts out of the syringe and on to the "
write "ground." ^
}

{pull
write "Filling the syringe with air is of no use." ^
}

object kryten: myself self me alex meadows
 has		ANIMATE
 inventory	name "yourself"
 quantity	42

{rub_with_soap : clean_with_soap : clean
write "Getting a little self conscious?" ^
}

{shoot_override : shoot_with_gun : attack_with_gun
write "Realising that you have got the game into an unsolveable state, you "
write "put the gun up against your head and pull the trigger." ^
execute "global_death"
}

{attack : cut_with_scalpel : attack_with_scalpel
write "Suicide is not the answer, this time..." ^
set TURN_WORKED = false
}

{examine
write "As beautiful as ever." ^^
execute "global_inventory"
}

{take
write "...seriously?" ^
set TURN_WORKED = false
}

object hair: my hair
 inventory	name "your hair"
 starts childof kryten

{clean
proxy "comb hair"
}

{comb
if comb !childof player
   write "You run your fingers through your hair to little effect." ^
   break
endif
if hair hasnt CUSTOM4
   write "You briefly run the comb through your hair." ^
   ensure hair has CUSTOM4
   break
endif
write "You hair looks just fine as it is." ^
}

{examine
write "Your hair is dark brown"
if hair hasnt CUSTOM4
   write " and a bit on the messy side." ^
   break
endall
write .^
}

object teeth: my teeth
 has		PLURAL
 inventory	name "your teeth"
 starts childof kryten

{clean
execute "clean_with_toothbrush_teeth"
}

{clean_with_toothbrush
write "You did that when you got up this morning." ^
set TURN_WORKED = false
}

{examine
if kryten(location) != bathroom
   write "You can't actually see them, but they feel okay." ^
   break
endif
if cabinet hasnt CLOSED
   write "You angle the door of the cabinet so as to see your teeth. They "
   write "seem fine." ^
   break
endif
write "Smiling into the mirror, your teeth seem fine." ^
}

{global_gameover
write ^^
centre "---[T H E    E N D]---"
write ^^
execute "global_full_score"
write ^
more
endgame
}

{global_death
write ^^
centre " ---[Y O U   H A V E   D I E D]---" ^^
write ^^
execute "global_score"
write ^
more
endgame
}

{global_grued
write ^ "Darkness is eternal." ^
execute "global_death"
}

{global_title
if here has WITHOUT_AIR
   if tank hasnt WORN
      write "(holding your breath)" ^
endall
if player has SITTING
      write "(sitting)" ^
endif
}

;                                                             JACL LIBRARY FILE
; -----------------------------------------------------------------------------
; Release 1, Copyright (C) Stuart Allen 1996.
;

filter the
filter a
filter some
filter please
filter quickly
filter slowly
filter carefully
filter quietly

variable INDEX
variable OBJECT_BACKUP1
variable OBJECT_BACKUP2
variable OBJECT_BACKUP3
variable OBJECT_BACKUP4
variable GAME_VERSION
variable OXYGEN_LEFT
variable DIRECTION_TRAVELLED
variable DIRECTION
variable DESTINATION

variable NORTH		1
variable NORTHEAST	2
variable EAST		3
variable SOUTHEAST	4
variable SOUTH		5
variable SOUTHWEST	6
variable WEST		7
variable NORTHWEST	8
variable UP		9
variable DOWN		10
variable IN		11
variable OUT		12

synonym onto		on
synonym into		in
synonym inside		in
synonym using		with
synonym me		myself
synonym gentleman	man
synonym 1		one
synonym 2		two
synonym 3		three
synonym 4		four
synonym 5		five
synonym 6		six
synonym 7		seven
synonym 8		eight
synonym 9		nine
synonym 10		ten

{global_push_object
; Set noun4 to the object to be pushed
; Set DIRECTION to the direction it is to go
; Set DESTINATION to the location it is to end up in

if player(location) = noun4(location)
   write ^ Noun4 
   execute "global_to_direction"
endall
set noun4(location) = DESTINATION
if player(location) = noun4(location)
   write ^ Noun4
   execute "global_from_direction"
endall
}

{global_to_direction
if DIRECTION = 1
   write " heads off to the north." ^
   break
endall
if DIRECTION = 2
   write " heads off to the northeast." ^
   break
endall
if DIRECTION = 2
   write " heads off to the northeast." ^
   break
endall
if DIRECTION = 3
   write " heads off to the east." ^
   break
endall
if DIRECTION = 4
   write " heads off to the southeast." ^
   break
endall
if DIRECTION = 5
   write " heads off to the south." ^
   break
endall
if DIRECTION = 6
   write " heads off to the southwest." ^
   break
endall
if DIRECTION = 7
   write " heads off to the west." ^
   break
endall
if DIRECTION = 8
   write " heads off to the northwest." ^
endall
if DIRECTION = 9
   write " heads up from here." ^
endall
if DIRECTION = 10
   write " heads down from here." ^
endall
}

{global_from_direction
if DIRECTION = 1
   write " enters from the south." ^
   break
endall
if DIRECTION = 2
   write " enters from the southwest." ^
   break
endall
if DIRECTION = 3
   write " enters from the west." ^
   break
endall
if DIRECTION = 4
   write " enters from the northwest." ^
   break
endall
if DIRECTION = 5
   write " enters from the north." ^
   break
endall
if DIRECTION = 6
   write " enters from the northeast." ^
   break
endall
if DIRECTION = 7
   write " enters from the east." ^
   break
endall
if DIRECTION = 8
   write " enters from the southeast." ^
endall
if DIRECTION = 9
   write " enters from below." ^
endall
if DIRECTION = 10
   write "enters from above." ^
endall
}

object north_wall: north north wall walls
 inventory	the "north wall"
 starts		limbo

{examine
if here = bar
   write "The north wall is covered with glass shelves." ^
   break
endif
if here = lisas_quarters
   write "There is a tall wardrobe against the north wall." ^
   break
endif
if here = fourth_floor
   write "There is a call button on the north wall." ^
   break
endif
if here = third_floor
   write "There is a call button on the north wall." ^
   break
endif
if here = second_floor
   write "There is a call button on the north wall." ^
   break
endif
if here = first_floor
   write "There is a call button on the north wall." ^
   break
endif
if here = ground_floor
   write "There is a call button on the north wall next to a large, gold "
   write "framed mirror." ^
   break
endif
if here = storage
   write " A short hose for refilling scuba tanks protrudes through the "
   write "north wall." ^
   break
endif
break false
}

object south_wall: south southern wall walls
 inventory	the "south wall"
 starts		limbo

{climb
if here = on_crate
   proxy "up"
   break
endif
break false
}

{examine
if here = second_hallway
   write "There is a painting hanging on the south wall." ^
   break
endif
if here = third_hallway
   write "There is a painting hanging on the south wall." ^
   break
endif
if here = z_office
   write "There is an ornately framed window in the south wall." ^
   break
endif
if here = conference_room
   write "A dark maroon curtain covers the south wall." ^
   break
endif
if here = lab
   write "The specimen fridge is standing up against the south wall." ^
   break
endif
break false  
}

object east_wall: east eastern wall walls
 inventory	the "east wall"
 starts		limbo

{examine
if here = van
   write "The east wall of the van is taken up by a sliding door which is "
   write "currently "
   if van_doors has CLOSED
      write "closed." ^
   else
      write "open." ^
   endif
   break
endif
if here = quarters
   write "A recess in the east wall forms a small yet serviceable "
   write "kitchenette." ^
   break
endif
if here = z_office
   write "The entire east wall is covered by an enormous bookcase." ^
   break
endif
break false
}

object west_wall: west western wall walls
 inventory	the "west wall"
 starts		limbo

{examine
if here = van
   write "The west wall is covered with monitoring equipment." ^
   break
endif
if here = quarters
   write "There is a poster of a blue whale hanging on the west wall "
   write "beside a doorway." ^
   break
endif
if here = hangar_south
   write "A tall bank of instruments stands against the west wall." ^
   break
endif
break false
}

object ground: ground floor
 has		SURFACE
 inventory	the "ground"
 starts		limbo
 quantity	1000

grammar where is *anywhere	->where_is
grammar where are *anywhere	->where_is

{global_where_is
if noun1 is *held
   write "You are carrying " noun1 .^
   break
endif
if noun1 is *present
   write Noun1 noun1(is) " right here."
   break
endif
write "Not telling." ^
set TURN_WORKED = false
}

grammar shake *held	->shake
grammar wave *held	->shake

{global_shake
write "Consider it done." ^
}

grammar say xyzzy ->xyzzy
grammar xyzzy     ->xyzzy

{global_xyzzy
write "Suddenly a magical white glove appears floating in the air before you, "
write "slaps you several times across the face, then disappears." ^
}

grammar verbose ->verbose

{global_verbose
if DISPLAY_MODE = 1
   write "Display mode already set to verbose." ^
   break
endall
write "Display mode set to verbose." ^^
set DISPLAY_MODE = 1
look
}

grammar brief ->brief

{global_brief
if DISPLAY_MODE = 0
   write "Display mode already set to brief." ^
   break
endall
write "Display mode set to brief." ^
set DISPLAY_MODE = 0
}

grammar offer to help *present  ->help_other
grammar help *present           ->help_other
grammar help out *present       ->help_other

{global_help_other
write "How did you intend to help " noun1 ?^ 
}

grammar hint *present	->hint

{global_hint
write "There is no specific hint available for " noun1 .^
set TURN_WORKED = false
}

grammar hint		->first_hint
grammar first hint	->first_hint
grammar hint one	->first_hint

{global_first_hint
write "There is no specific hint available for this location." ^
set TURN_WORKED = false
}

grammar second hint	->second_hint
grammar hint two	->second_hint

{global_second_hint
write "There is no second hint available for this location." ^
set TURN_WORKED = false
}

grammar third hint	->third_hint
grammar hint three	->third_hint

{global_third_hint
write "There is no third hint available for this location." ^
set TURN_WORKED = false
}

grammar fourth hint	->fourth_hint
grammar hint four	->fourth_hint

{global_fourth_hint
write "There is a maximum of three hints for each location." ^ 
set TURN_WORKED = false
}

grammar help ->help

{global_help
clear
write "Interactive fiction involves the reader in a way that static stories "
write "do not. Rather than reading sequentially from beginning to end, you "
write "control the actions of the main character by typing commands in the "
write "form of simple English sentences. Before setting out on your adventure "
write "there are a few concepts that must be explained in order for you to "
write "interact successfully with the virtual world created by the author." ^^
write "The physical space that you will be exploring is divided up into "
write "discrete units called locations. Locations may be travelled between "
write "using the following commands..." ^
write ^
write N "   to travel north          " 
write S "   to travel south" ^
write E "   to travel east           "
write W "   to travel west" ^
write NE "  to travel northeast      "
write NW "  to travel northwest" ^ 
write SE "  to travel southeast      "
write SW "  to travel southwest" ^
write U "   to travel up             "
write D "   to travel down" ^
write ^
write "The description of each location will tell you which way you can "
write "travel from it. Be aware however that some exits may only be "
write "available under certain circumstances such as while a door is open "
write "or a bridge lowered." ^^
more
clear
write "Within these locations you will find many objects that you may "
write "manipulate. These objects may be referred to by as few "
write "or as many of their names as is required to uniquely identify it."
write "For example, if the story informs you that ~There is a silver key "
write "resting here.~ Then it may be referred to as either ~silver~, ~key~ or "
write "~silver key~. If your reference is ambiguous, such as using ~key~ "
write "when there is both a silver and a gold key in the current location "
write "then you will be prompted to be more specific." ^^
more
clear
write "The next major concept of interactive fiction to understand is the "
write "way in which you interact with these objects within "
write "the locations. The main aspect of the command interface "
write "to come to grips with is the scale, in other words, how much can be "
write "achieved with a single command. As you have seen earlier, moving from "
write "one location to another requires a single command. Commands such as "
write "~find dave~ or ~go to the library~ are not valid. You must manually "
write "move around the available world to achieve these tasks yourself. For "
write "this reason, making a map as you go is highly recommended." ^^
write "The basic sentence structures understood by the game are..." ^^
write "action                            eg. scream" ^
write "action object                     eg. take book" ^
write "action object preposition object  eg. unlock door with key " ^^
write "An action does not necessarily have to be a single word. For instance, "
write "~examine rock through magnifying glass~, an example of the last "
write "syntax, may also be expressed as ~look at rock through magnifying "
write "glass~. ^^
more
clear
write "To further illustrate how much can be achieved in a single turn, "
write "consider the following list (being just some of the valid actions)... "
write ^^
write "         turn      read      pull      push      eat       cut" ^
write "         lock      unlock    rub       attack    taste     drink" ^
write "         break     smell     listen    pour      move      light" ^
write "         attack    blow      throw     wear      open      close" ^
write "         take      drop      insert    remove"
write ^^ "The words ~it,~ ~them,~ ~him~ and ~her~ may be used to indicate the "
write "last appropriate object referred to in one of your commands. "
write "The words ~itself,~ ~themselves,~ ~himself~ and ~herself~ may be used "
write "to refer to the subject of the current command such as, ~ask dan about "
write "himself~." ^^
write "The word ~all~ or ~everything~ may be used in place of an object "
write "when using one of the verbs in the bottom row of the table above." ^^
more
clear
write "A task such as defusing a bomb would generally not be achieved by "
write "typing ~defuse bomb~. The following is a sample transcript to give "
write "you a better idea of how this task such as this might be achieved." ^^
write ">examine bomb" ^ 
write "The bomb is about a foot square and has a small panel in its upper "
write "surface. The panel is currently closed." ^^
write ">listen to bomb" ^ 
write "The bomb is making an ominous ticking sound." ^^
write ">open panel" ^
write "You open the panel to reveal a red wire, a green wire, a blue wire, "
write "a clock and some dynamite." ^^
write > i ^
write "You are carrying a bomb manual, an insurance policy and some wire "
write "cutters. " ^^
write ">read manual" ^
write "Leafing through the book you come to the page on diffusing. Seems "
write "straight forward enough, just cut the blue wire then the red one." ^^
write ">cut blue wire with cutters" ^
write "Reaching carefully in to the bomb's casing you cut the blue wire. So "
write "far so good." ^^
write ">cut red wire with cutters" ^
write "Holding you breath you snip the red wire." ^^
write ">listen to bomb" ^
write "The bomb, thankfully, is now silent." ^^
write "As you can see, each task you wish to achieve must be broken down "
write "into its component actions. You may also have noticed that the "
write "> prompt appears each time the game is ready to accept "
write "another command." ^^
more
clear
write "During the course of the story you may encounter other computer "
write "controlled characters. These characters may be interacted with using "
write "the following commands..." ^^
write "TALK TO <character>" ^
write "GIVE <object> TO <character>" ^
write "SHOW <object> TO <character>" ^
write "ASK <character> FOR <object>" ^
write "ASK <character> ABOUT <object>" ^
write "TELL <character> ABOUT <object>" ^^
more
clear
write "There are also some special commands for interacting with the "
write "program rather than the world it simulates..." ^^
write "VERBOSE always describe locations        "
write "BRIEF   only describe new locations" ^
write "QUIT    exit from the game               "
write "RESTART start from the beginning" ^
write "SCORE   display your score and rank      "
write "LOOK    describe the current location" ^
write "SAVE    save the current position        "
write "RESTORE restore a saved position" ^
write "I       horizontal list of possessions   "
write "INV     vertical list of possessions" ^
write "UNDO    take back last command           "
write "AGAIN   repeat the last command" ^
write "INFO    display version information      "
write "ABOUT   display game information" ^^
write "NOTE: If you are looking for a clue relevant to a specific location, "
write "type ~hint~, ~first hint~ or ~hint one~ in that location. The first "
write "hint will be a subtle clue with ~hint two~ being more blatant and "
write "~hint three~ being exact commands to type." ^^
write "You are now ready to embark on your first adventure into the world of "
write "interactive fiction. Remember to make a map as you go and read each "
write "part carefully as vital clues may be hidden in the descriptions of the "
write "locations and objects you come across. Examining every object you can "
write "refer to is a good idea, as is saving your position often. Well, good "
write "luck, and above all have fun!" ^^
set TURN_WORKED = false
more
clear
look
}

grammar help games ->help_games

{global_help_games
write "`GAMES' REFERS TO MODELS, SIMULATIONS AND GAMES WHICH HAVE TACTICAL "
write "AND STRATEGIC APPLICATIONS." ^
}

grammar hug *present     ->hug
grammar comfort *present ->hug
grammar cuddle *present  ->hug
grammar console *present ->hug

{global_hug
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "Odd." ^
   break
endall
write "I'm sure " noun1 " feel" noun1(s) " a whole lot better now." ^
}

grammar kiss *present ->kiss
grammar snog *present ->kiss

{global_kiss
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "Hmmmmmm..." ^
}

grammar pick *present with *held ->pick_with

{global_pick_with
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "You can't pick " noun1 " with " noun2 .^
}

grammar rub *present    ->rub
grammar pat *present    ->rub
grammar stroke *present ->rub

{global_rub
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "I'm sure " noun1 noun1(is) " feeling a lot better now." ^
}

grammar rub *held on *present		->rub_on

{global_rub_on
proxy "rub " noun2 " with " noun1
}

grammar rub *present with *held    ->rub_with

{global_rub_with
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "They both just get a little warmer." ^
}

grammar lick *present  ->lick
grammar taste *present ->lick

{global_lick
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "Yeuucck!" ^
}

grammar pull *present ->pull
grammar yank *present ->pull
grammar tug *present  ->pull

{global_pull
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "You can't pull " noun1 .^
}

grammar cut *present	->cut
grammar chop *present	->cut
grammar slash *present	->cut
grammar stab *present	->cut
grammar slice *present	->cut

{global_cut
write "What did you want to cut " noun1 " with?" ^
set TURN_WORKED = false
}

grammar cut *present with *held		->cut_with
grammar chop *present with *held	->cut_with
grammar slash *present with *held	->cut_with
grammar stab *present with *held	->cut_with
grammar slice *present with *held	->cut_with

{global_cut_with
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has ANIMATE
   proxy "attack " noun1 " with " noun2
   break
endif
write "Vandal!" ^
set TURN_WORKED = false
}

grammar break *present		->break
grammar kick *present		->break
grammar smash *present		->break
grammar crush *present		->break
grammar destroy *present	->break
grammar wreck *present		->break
grammar crack *present		->break
grammar tear *present		->break
grammar tear up *present	->break
grammar tear *present up	->break

{global_break
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "Don't be so destructive." ^
set TURN_WORKED = false
}

grammar make *present	->clean
grammar clean *present	->clean
grammar wash *present	->clean
grammar wipe *present	->clean
grammar scrub *present	->clean
grammar sweep *present	->clean
grammar shine *present	->clean
grammar polish *present	->clean
grammar brush *present	->clean
grammar dust *present	->clean

{global_clean
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LIQUID
   write "How do you clean a liquid?" ^
   set TURN_WORKED = false
   break
endall
override
write "That's very thoughtful of you." ^
}

grammar clean *present with *held	->clean_with
grammar wipe *present with *held	->clean_with
grammar scrub *present with *held	->clean_with
grammar polish *present with *held	->clean_with
grammar brush *present with *held	->clean_with
grammar dust *present with *held	->clean_with

{global_clean_with
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LIQUID
   write "How do you clean a liquid?" ^
   set TURN_WORKED = false
   break
endall
override
write "You can't clean " noun1 " with " noun2 .^
set TURN_WORKED = false
}

grammar swear		->swear
grammar shit		->swear
grammar crap		->swear
grammar bollocks	->swear
grammar bugger		->swear
grammar smeg		->swear
grammar fuck		->swear
grammar sod		->swear
grammar sod off		->swear

{global_swear
write "Delightful." ^
}

grammar yell at *present	->yell_at
grammar scream at *present	->yell_at
grammar roar at *present	->yell_at
grammar scold *present		->yell_at

{global_yell_at
write "Oooo, scary..." ^
}

grammar pay *present       ->pay
grammar reimburse *present ->pay

{global_pay
write "You can't pay " noun1 .^
}

grammar order *carried	->order
grammar buy *carried	->order
grammar order *anywhere	->order
grammar buy *anywhere	->order


{global_order
write "Your order appears to have fallen on deaf ears." ^
}

grammar knock on *present	->knock_on
grammar tap on *present		->knock_on
grammar tap *present		->knock_on
grammar rap on *present		->knock_on

{global_knock_on
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LIQUID
   write "A wet hand is your only reward." ^
   break
endall
write "Devastatingly productive..." ^
}

grammar play *present ->play

{global_play
write "You can't play " noun1 .^
set TURN_WORKED = false
}

grammar empty *present with *held	->empty_with

{global_empty_with
proxy "fill " noun2 " from " noun1
}

grammar remove *present with *held	->remove_with

{global_remove_with
proxy "take " noun1 " with " noun2
}

grammar extract *here with *held	->take_with
grammar get *here with *held		->take_with
grammar take *here with *held		->take_with

{global_take_with
proxy "fill " noun2 " with " noun1
}

grammar fill *held from *present	->fill_from

{global_fill_from
execute "global_noun2_liquid?"
if INDEX = false
   write Noun2 noun2(doesnt) "contain a liquid to fill " noun1 " with." ^
   set TURN_WORKED = false
   break
endall
proxy "fill " noun1 " with " noun3
}

grammar extract *present with *held ->extract_with

{global_extract_with
proxy "fill " noun2 " with " noun1
}

grammar fill *held with *present ->fill_with

{global_fill_with
if noun2 has OUT_OF_REACH
   write Noun2 noun2(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt CONTAINER 
   write Noun1 noun1(isnt) " a container and therefore can't be filled." ^
   break
endall
if noun1 has CLOSED 
   write "You can't fill " noun1 " while "
   if noun1 has PLURAL
      write "they are"
   else
      write "it is"
   write " closed." ^
   set TURN_WORKED = false
   break
endall
if noun2 hasnt LIQUID
   write "You can only fill " noun1 " with a liquid." ^
   break
endall
execute "global_noun1_liquid?"
if INDEX = true 
   write Noun1 " already contains " noun3 . " If you were to also add " noun2
   write " they would mix together." ^
   set TURN_WORKED = false
   break
endall
if noun1(info) < noun2(mass)
   write Noun1 noun1(isnt) " large enough to hold " noun2 .^
   set TURN_WORKED = false
   break
endall
override
write "You fill " noun1 " with " noun2 .^
move noun2 to noun1
}

{global_noun1_liquid?
set INDEX = false
loop
  if noun3 childof noun1
     if noun3 has LIQUID
        set INDEX = true 
        break
  endall
endloop
}

{global_noun2_liquid?
set INDEX = false
loop
  if noun3 childof noun2
     if noun3 has LIQUID
        set INDEX = true 
        break
  endall
endloop
}

{global_noun4_liquid?
set INDEX = false
loop
  if noun3 childof noun4
     if noun3 has LIQUID
        set INDEX = true 
        break
  endall
endloop
}

grammar fill *present	->fill

{global_fill
write "What did you want to fill " noun1 " with?" ^
set TURN_WORKED = false
}

grammar stand		->stand
grammar stand up	->stand
grammar get up		->stand

{global_stand
if player has SITTING
   write "Using your arms to push yourself up, you stand." ^
   ensure player hasnt SITTING
   break
endall
write "You are already standing." ^
}

grammar sleep	->sleep
grammar snooze	->sleep
grammar kip	->sleep
grammar nap	->sleep

{global_sleep
write "There will be plenty of time for that later..." ^
set TURN_WORKED = false
}

grammar lie on *present		->lie_on
grammar lie down on *present	->lie_on
grammar snooze on *present	->lie_on
grammar snooze in *present	->lie_on
grammar kip on *present		->lie_on
grammar kip in *present		->lie_on
grammar sleep on *present	->lie_on
grammar sleep in *present	->lie_on
grammar nap on *present		->lie_on
grammar nap in *present		->lie_on

{global_lie_on
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write Noun1 noun1(doesnt) "look like the ideal place to take a nap." ^
}

grammar sit		->sit
grammar sit down	->sit
grammar squat		->sit
grammar squat down	->sit

{global_sit
set TURN_WORKED = false
if player has SITTING
   write "You are already sitting." ^
   break
endif
if here has UNDER_WATER
   write "Whilst underwater?" ^
   break
endif
if here has ON_WATER
   write "Whilst in water?" ^
   break
endif
write "You plonk youself down for a moments rest." ^
ensure player has SITTING
}

grammar sit on *here	->sit_on
grammar sit in *here	->sit_on

{global_sit_on
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
override
write Noun1 noun1(doesnt) "look very comfortable." ^
}

grammar drop everything          ->drop_all
grammar put everything down      ->drop_all
grammar put down everything      ->drop_all

{global_drop_all
set TURN_WORKED = false
if here has MID_WATER 
   write "Dropping everything you own while floating in water probably isn't "
   write "such a great idea." ^
   break
endall
if here has ON_WATER 
   write "Dropping everything you own into the water probably isn't such "
   write "a great idea." ^
   break
endall
set INDEX = 0
loop
if noun3 childof player 
   if noun3 hasnt WORN
      if noun3(mass) < heavy
         if TURN_WORKED = true
            set TOTAL_MOVES + 1
            execute "global_eachturn"
         endif
         write "You drop " noun3 .^
         move noun3 to here
         set TURN_WORKED = true
         set INDEX + 1
      endif
   endif
   if noun3 has WORN 
      write "You must first remove " noun3 .^
      set TURN_WORKED = false
      set INDEX + 1
endall
endloop
if INDEX = 0
   write "You are not carrying anything." ^
   break
endall
}

grammar drop everything except *held		->drop_all_except
grammar put everything down except *held	->drop_all_except
grammar put down everything except *held	->drop_all_except

synonym but	except

{global_drop_all_except
set TURN_WORKED = false
if here has MID_WATER 
   write "Dropping everything you own while floating in water probably isn't "
   write "such a great idea." ^
   break
endall
if here has ON_WATER 
   write "Dropping everything you own into the water probably isn't such "
   write "a great idea." ^
   break
endall
set INDEX = 0
loop
if noun3 childof player 
   if noun1 != noun3
      if noun3 hasnt WORN
         if noun3(mass) < heavy 
            if TURN_WORKED = true
               set TOTAL_MOVES + 1
               execute "global_eachturn"
            endif
            write "You drop " noun3 .^
            move noun3 to here
            set INDEX + 1
            set TURN_WORKED = true
         endif
      endif
      if noun3 has WORN 
         write "You must first remove " noun3 .^
         set INDEX + 1
         set TURN_WORKED = false
endall
endloop
if INDEX = 0
   write "You are not carrying anything else to drop." ^
   break
endall
}

grammar drop *held		->drop
grammar throw *held		->drop
grammar put *held down		->drop
grammar put down *held		->drop
grammar lose *held		->drop

{global_drop
if noun1 has WEARABLE 
  if noun1 has WORN 
     write "You must first remove " noun1 .^
     set TURN_WORKED = false
     break
endall
if noun1(mass) >= heavy
   execute "global_move_scenery"
   break
endall
override
if here has MID_WATER 
   write "You drop " noun1 " which rapidly sink" noun1(s) " out of view." ^
   move noun1 to limbo
   break
endall
if here has ON_WATER 
   write "You drop " noun1 " which rapidly sink" noun1(s) " out of view." ^
   move noun1 to limbo
   break
endall
write "You drop " noun1 .^
move noun1 to here
}

grammar remove everything from *present		->take_all_from
grammar take everything from *present		->take_all_from
grammar get everything from *present		->take_all_from
grammar take everything out of *present		->take_all_from
grammar get everything out of *present		->take_all_from
grammar empty *present				->take_all_from
grammar pick up everything on *present		->take_all_from
grammar pick up everything from on *present	->take_all_from
grammar take everything on *present		->take_all_from
grammar get everything on *present		->take_all_from
grammar take everything from on *present	->take_all_from
grammar get everything from on *present		->take_all_from
grammar pick up everything in *present		->take_all_from
grammar pick up everything from in *present	->take_all_from
grammar take everything in *present		->take_all_from
grammar get everything in *present		->take_all_from
grammar take everything from in *present	->take_all_from
grammar get everything from in *present		->take_all_from
grammar pick everything up from *present	->take_all_from
grammar pick up everything from *present	->take_all_from
grammar pick everything up from *present	->take_all_from

synonym taek take

{global_take_all_from
set TURN_WORKED = false
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has ANIMATE 
   write "You will have to ask " noun1 " for anything that you want." ^
   break
endall
if noun1 hasnt CONTAINER 
   if noun1 hasnt SURFACE
      write "There isn't anything in " noun1 .^
      break
endall
if noun1 has CLOSED 
   write "It's going to be a bit hard to take anything from " noun1 " while "
   write noun1 noun1(is) " closed." ^
   break
endall
set INDEX = 0
loop
if noun3 childof noun1 
   if noun3(mass) < heavy
      if noun3 hasnt LIQUID
         if noun3(mass) <= player(info)
	    if TURN_WORKED = true
               set TOTAL_MOVES + 1
               execute "global_eachturn"
            endif
            execute "global_take_routine"
            set INDEX + 1
         else
            write "You are carrying too much to take " noun3 .^
            set INDEX + 1
         endif
      else
         write Noun3 " run" noun3(s) " through your fingers." ^
         set INDEX + 1
endall
endloop
if INDEX = 0
   write "I don't see what you are referring to." ^
   break
endall
}

grammar drop *here and *here		->drop_two
grammar drop *here *here		->drop_two
grammar put down *here and *here	->drop_two
grammar put down *here *here		->drop_two
grammar put *here and *here down	->drop_two
grammar put *here *here down		->drop_two

{global_drop_two
set noun4 = noun2
proxy "drop " noun1
proxy "drop " noun4
}

grammar take *here and *here	->take_two
grammar take *here *here	->take_two
grammar get *here and *here	->take_two
grammar get *here *here		->take_two
grammar pick up *here and *here	->take_two
grammar pick up *here *here	->take_two
grammar pick *here and *here up	->take_two
grammar pick *here *here up	->take_two

{global_take_two
set noun4 = noun2
proxy "take " noun1
proxy "take " noun4
}

grammar take everything except *here	->take_all_except
grammar get everything except *here	->take_all_except
grammar pick everything up except *here	->take_all_except
grammar pick up everything except *here	->take_all_except

synonym all everything

{global_take_all_except
set TURN_WORKED = false
set INDEX = 0
loop
if noun3(location) = here 
   if noun1 != noun3
      if noun3(mass) < heavy
         if noun3 hasnt LIQUID
	    if TURN_WORKED = true
               set TOTAL_MOVES + 1
               execute "global_eachturn"
            endif
            execute "global_take_routine"
            set INDEX + 1
         else
            write Noun3 " run" noun3(s) " through your fingers." ^
            set INDEX + 1
endall
endloop
if INDEX = 0
   write "There is nothing other than " noun4 " to take." ^
   break
endall
}

grammar take everything		->take_all
grammar get everything		->take_all
grammar pick everything up	->take_all
grammar pick up everything	->take_all

synonym all everything

{global_take_all
set TURN_WORKED = false
set INDEX = 0
loop
if noun3(location) = here 
   if noun3(mass) < heavy
      if noun3 hasnt LIQUID
	 if TURN_WORKED = true
            set TOTAL_MOVES + 1
            execute "global_eachturn"
         endif
      execute "global_take_routine"
      set INDEX + 1
      endif
      if noun3 has LIQUID
         write Noun3 " run" noun3(s) " through your fingers." ^
         set INDEX + 1
endall
endloop
if INDEX = 0
   write "I don't see what you are referring to." ^
   break
endall
}

{global_take_routine
if noun3 has OUT_OF_REACH
   write Noun3 " is out of reach." ^
   set TURN_WORKED = false
   break
endif
if noun3(mass) > player(info)
   write "You are carrying too much to take " noun3 .^
   set TURN_WORKED = false
   break
endif
override
write "You take " noun3 .^
set TURN_WORKED = true
move noun3 to player 
ensure noun3 has TOUCHED
}

grammar take *here    ->take
grammar get *here     ->take
grammar pick *here up ->take
grammar pick up *here ->take

synonym steal           take
synonym snatch          take
synonym snaffle         take

{global_take
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endif
if player has SITTING
   write "You will have to stand up first." ^
   set TURN_WORKED = false
   break
endif
if noun1(mass) >= heavy 
   execute "global_move_scenery"
   break
endif
if noun1(mass) > player(info)
   write "You are carrying too much to take " noun1 .^
   set TURN_WORKED = false
   break
endif
if noun1 has LIQUID 
   write Noun1 " run" noun1(s) " through your fingers." ^
   break
endif
override
write "You take " noun1 .^
move noun1 to player 
ensure noun1 has TOUCHED
}

{global_move_scenery
set TURN_WORKED = false
set noun3 parentof noun1
if noun3 = false
   write Noun1 noun1(isnt) " something that you can pick up." ^
   break
endif
write Noun1 noun1(is) " attached to " noun3 .^
}

grammar insert *held on *present	->insert_on
grammar mount *held on *present		->insert_on
grammar wedge *held on *present		->insert_on
grammar thrust *held on *present	->insert_on
grammar poke *held on *present		->insert_on
grammar put *held on *present		->insert_on
grammar place *held on *present		->insert_on

{global_insert_on
if noun2 has OUT_OF_REACH
   write Noun2 noun2(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun2 = noun1
   write "Put " noun1 " on "
   if noun1 has PLURAL
      write "themselves"
   else
      write "itself"
   write "? I don't think so." ^
   set TURN_WORKED = false
   break
endall
if noun2 childof noun1
   write "I'm afraid that's just not possible." ^
   set TURN_WORKED = false
   break
endall
if noun1(mass) >= heavy
   execute "global_move_scenery"
   break
endall
if noun1 has WORN 
   write "You must first remove " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun2 hasnt SURFACE 
   write "There isn't a flat surface on " noun2 .^
   set TURN_WORKED = false
   break
endall
if noun2(info) < noun1(mass)
   write "There is not enough room on " noun2 " for " noun1 .^
   set TURN_WORKED = false
   break
endall
override
write "You put " noun1 " on " noun2 .^
move noun1 to noun2
}

grammar insert *held in *present	->insert_in
grammar load *held in *present		->insert_in
grammar mount *held in *present		->insert_in
grammar wedge *held in *present		->insert_in
grammar thrust *held in *present	->insert_in
grammar poke *held in *present		->insert_in
grammar put *held in *present		->insert_in
grammar place *held in *present		->insert_in

{global_insert_in
if noun2 has OUT_OF_REACH
   write Noun2 noun2(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1(mass) >= heavy
   execute "global_move_scenery"
   break
endall
if noun2 = noun1
   write "Put " noun1 " in "
   if noun1 has PLURAL
      write "themselves"
   else
      write "itself"
   write "? I don't think so." ^
   set TURN_WORKED = false
   break
endall
if noun2 childof noun1
   write "I'm afraid that's just not possible." ^
   set TURN_WORKED = false
   break
endall
if noun1 has WORN 
   write "You must first remove " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun2 = player
   write "I would ask how you intend to do that, but something tells me I "
   write "don't want to know." ^
   set TURN_WORKED = false
   break
endif
if noun2 hasnt CONTAINER 
   write Noun2 noun2(isnt) " designed to receive " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun2 has CLOSED 
   write Noun2 noun2(is) " closed." ^
   set TURN_WORKED = false
   break
endall
if noun2(info) < noun1(mass)
   write "There is not enough room in " noun2 " for " noun1 .^
   set TURN_WORKED = false
   break
endall
override
write "You put " noun1 " in " noun2 .^
move noun1 to noun2
}

grammar insert everything in *present	->insert_all_in
grammar poke everything in *present	->insert_all_in
grammar put everything in *present	->insert_all_in
grammar place everything in *present	->insert_all_in

{global_insert_all_in
if noun1 hasnt CONTAINER 
   write Noun1 noun1(isnt) " designed to hold things." ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has CLOSED 
   write Noun1 noun1(is) " closed." ^
   set TURN_WORKED = false
   break
endall
set INDEX = 0
loop
  if noun3 !childof player
     endloop
     execute "global_encumbered"
     break
  endall
  if noun3(mass) >= heavy
     endloop
     execute "global_encumbered"
     break
  endall
  if noun3 = noun1
     endloop
     execute "global_encumbered"
     break
  endall
  if noun1 has WORN 
     write "You must first remove " noun3 .^
     set INDEX + 1
     endloop
     break
  endall
  set OBJECT_BACKUP1 = noun1
  set OBJECT_BACKUP2 = noun3
  proxy "insert" noun3 " in " noun1
  set noun1 = OBJECT_BACKUP1
  set noun3 = OBJECT_BACKUP2
  set INDEX + 1
endloop
}

grammar insert everything on *present	->insert_all_on
grammar poke everything on *present	->insert_all_on
grammar put everything on *present	->insert_all_on
grammar place everything on *present	->insert_all_on

{global_insert_all_on
if noun1 hasnt SURFACE 
   write "There is no flat surface on the " noun1 " to put things." ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
set INDEX = 0
loop
  if noun3 !childof player
     endloop
     execute "global_encumbered"
     break
  endall
  if noun3 = noun1
     endloop
     execute "global_encumbered"
     break
  endall
  if noun3(mass) >= heavy
     endloop
     execute "global_encumbered"
     break
  endall
  if noun1 has WORN 
     write "You must first remove " noun3 .^
     set INDEX + 1
     endloop
     break
  endall
  set OBJECT_BACKUP1 = noun1
  set OBJECT_BACKUP2 = noun3
  proxy "insert" noun3 " on " noun1
  set noun1 = OBJECT_BACKUP1
  set noun3 = OBJECT_BACKUP2
  set INDEX + 1
endloop
}

{global_encumbered
if INDEX = 0 
   write "You are not carrying anything." ^
}

grammar ask *present for *carried		->ask_for
grammar tell *present to give me *carried	->ask_for

{global_ask_for
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write Noun1 " seem" noun1(s) " to be ignoring your request." ^
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to respond." ^
   set TURN_WORKED = false
   break
endall
if noun1 = CURRENT_PLAYER
   write "I think it might be time to take a break and get a cup of tea." ^
   set TURN_WORKED = false
   break
endall
if noun1 !grandof noun2
   write Noun1 noun1(doesnt) "seem to have " noun2 .^
   set TURN_WORKED = false
   break
endall
if noun2(mass) > player(info)
   write "With your current load you would be unable to accept " noun2 .^
   set TURN_WORKED = false
   break
endall
override
if noun1 has POSSESSIVE
   write Noun1 " refuses to give you " noun2 .^
   break
endif
move noun2 to player
if noun2 has WORN
   write Noun1 " remove" noun1(s) " " noun2 " then hand" noun1(s)
   if noun2 has PLURAL
      write " them"
   else
      write " it"
   write " to you." ^
   ensure noun2 hasnt WORN
   break
endall
write Noun1 " hands you " noun2 .^
}

grammar tell *present about *carried		->tell_about
grammar tell *present all about *carried	->tell_about
grammar talk to *present about *carried		->tell_about
grammar tell *present about *anywhere		->tell_about
grammar tell *present all about *anywhere	->tell_about
grammar talk to *present about *anywhere	->tell_about

{global_tell_about
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to even pretend to be interested." ^
   set TURN_WORKED = false
   break
endall
if noun1 = noun2
   write "I think "
   execute "global_who_noun1"
   write " probably know" noun1(s) " more than you do already." ^
endall
if noun1 = CURRENT_PLAYER
   write "It's the first sign of madness you know..." ^
   break
endall
override
write Noun1 " seems fascinated by your story about " noun2 .^
}

{global_who_noun1
if noun1 has PLURAL
   write "they"
   break
endif
if noun1 has FEMALE
   write "she"
   break
endif
if noun1 hasnt 
   write "he"
   break
endif
}

grammar ask *present about *carried		->ask_about
grammar ask *present all about *carried		->ask_about
grammar ask *present about *anywhere		->ask_about
grammar ask *present all about *anywhere	->ask_about

{global_ask_about
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to tell you anything useful." ^
   set TURN_WORKED = false
   break
endall
if noun1 = CURRENT_PLAYER
   write "It's the first sign of madness you know..." ^
   break
endall
override
if noun2 = noun1
   if noun1 has PLURAL
      write Noun1 " are too shy to say much." ^
   endif
   if noun1 hasnt PLURAL
      write Noun1 " is too shy to say much." ^
   endif
   break
endall
write Noun1 " reluctantly admit" noun1(s) " to knowing little about " noun2 .^
}

grammar offer *held to *present     ->give_to
grammar give *held to *present      ->give_to
grammar give over *held to *present ->give_to

{global_give_to
if noun2 hasnt ANIMATE
   write "You can't give " noun1 " to " noun2 .^
   set TURN_WORKED = false
   break
endall
if noun2 = CURRENT_PLAYER
   write "I think it might be time to take a break and get a cup of tea." ^
   break
endall
if noun2 has OUT_OF_REACH
   write Noun2 noun2(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1(mass) >= heavy
   execute "global_move_scenery"
   break
endall
if noun1 has WORN
   write "You must first remove " noun1 .^
   set TURN_WORKED = false
   break
endall
override
move noun1 to noun2
write "You give " noun1 " to " noun2 .^
}

grammar move *present         ->move
grammar push against *present ->move
grammar push *present         ->move

{global_move
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if player has SITTING
   write "You will have to stand up first." ^
   set TURN_WORKED = false
   break
endif
if noun1(mass) >= heavy 
   execute "global_move_scenery"
   break
endall
if noun1 has LIQUID
   write Noun1 " run" noun1(s) " through your fingers." ^
   break
endall
if noun1 has WORN 
   write "You must first remove " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 childof player 
   override
   write "You juggle " noun1 " in your hands." ^
   break
endall
override
write "You move " noun1 " a short distance to one side." ^
ensure noun1 has TOUCHED
}

grammar read *present ->read

{global_read
write "There is nothing on " noun1 " to read." ^
}

grammar look down ->look_down

{global_look_down
if here has TIGHT_ROPE
   write "You see the ground far below." ^
   break
endall
if here has MID_AIR 
   write "You see the ground far below." ^
   break
endall
if here has ON_WATER
   write "You can't see beyond the surface of the water." ^
   break
endall
write "You take a moment to admire your investigating feet." ^
}

grammar look up *anywhere in *present	->look_up_in
grammar look for *anywhere in *present	->look_up_in

{global_look_up_in
write "You don't find any reference to " noun1 " in " noun2 .^
}

grammar consult *present about *anywhere	->consult
grammar consult *present re *anywhere		->consult
grammar consult *present on *anywhere		->consult

{global_consult
proxy "look up " noun2 " in " noun1
}

grammar look up ->look_up

{global_look_up
if here has OUTDOORS
   write "You scan the sky with your eyes to no avail." ^
   break
endall
if here has UNDER_WATER
   write "You can see the surface of the water rippling above your head." ^
   break
endall
write "There is nothing unusual about the ceiling." ^
}

grammar look north ->look_north

{global_look_north
if here hasnt OUTDOORS
   proxy "examine north wall"
   break
endif
write "You see nothing unexpected." ^
}

grammar look northeast ->look_northeast

{global_look_northeast
write "You see nothing unexpected." ^
}

grammar look east ->look_east

{global_look_east
if here hasnt OUTDOORS
   proxy "examine east wall"
   break
endif
write "You see nothing unexpected." ^
}

grammar look southeast ->look_southeast

{global_look_southeast
write "You see nothing unexpected." ^
}

grammar look south ->look_south

{global_look_south
if here hasnt OUTDOORS
   proxy "examine south wall"
   break
endif
write "You see nothing unexpected." ^
}

grammar look southwest ->look_southwest

{global_look_southwest
write "You see nothing unexpected." ^
}

grammar look west ->look_west

{global_look_west
if here hasnt OUTDOORS
   proxy "examine west wall"
   break
endif
write "You see nothing unexpected." ^
}

grammar look northwest ->look_northwest

{global_look_northwest
write "You see nothing unexpected." ^
}

grammar look in ->look_inward

{global_look_inward
write "You see nothing unexpected." ^
}

grammar look out ->look_out

{global_look_out
write "You see nothing unexpected." ^
}

grammar feel *present  ->feel
grammar touch *present ->feel
grammar grope *present ->feel

{global_feel
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has ANIMATE
   write "I'm not so sure that would be polite." ^
   break
endall
write "Feels just like " noun1(inventory) .^
}

grammar smell	->smell
grammar sniff	->smell

{global_smell
write "Nothing stikes you as out of the ordinary." ^
}

grammar smell *present	->sniff
grammar sniff *present	->sniff

{global_sniff
if noun1 has ANIMATE
   write "I'm not so sure that would be polite." ^
   break
endall
write "Smells an awful lot like " noun1(inventory) .^
}

grammar taste *present ->taste
grammar lick *present  ->taste

{global_taste
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has ANIMATE
   write "You are one sick puppy." ^
   break
endall
write "Tastes just like you would expect " noun1(inventory) " to taste." ^
}

grammar look in *present	->look_in

{global_look_in
if noun1 hasnt CONTAINER
   write "There is nothing in " noun1 .^
   break
endall
if noun1 has CLOSED 
   write Noun1 noun1(is) " currently closed." ^
   break
endall
set INDEX = 0 
loop
  if noun3 childof noun1
     set INDEX + 1
  endall
endloop
if INDEX = 0 
   write "There is nothing in " noun1 .^
   break
endall
execute "global_details"
}

grammar look *present		->examine
grammar look at *present	->examine
grammar look on *present	->examine
grammar examine *present	->examine

synonym watch		examine
synonym search		examine
synonym x		examine

{global_examine
if noun1 hasnt CLOSABLE
   if noun1 hasnt CONTAINER
      if noun1 hasnt SURFACE
         write "There is nothing special about " noun1 .^
         break
endall
if noun1 has CLOSABLE 
   execute "global_details"
   break
endall
set INDEX = 0 
loop
  if noun3 childof noun1
     set INDEX + 1
  endall
endloop
if INDEX = 0 
   write "There is nothing special about " noun1 .^
   break
endall
execute "global_details"
}

{global_details
if noun1 has CLOSABLE
   if noun1 hasnt CLOSED 
      write Noun1 noun1(is) " open" 
endall
if noun1 has CLOSABLE
   if noun1 has CLOSED 
      write Noun1 noun1(is) " closed." ^
      break
endall
if noun1 has CONTAINER 
   execute "global_contents"
   break
endall
if noun1 has SURFACE
   execute "global_contents"
   break
endall
write .^
}

{global_contents
set INDEX = 0 
loop
  if noun3 childof noun1
     set INDEX + 1
  endall
endloop
if INDEX = 0 
   if noun1 has CLOSABLE 
      if noun1 has CONTAINER 
         write .^
         break
endall
if INDEX = 0
   write ^
   break
endall
if noun1 has CONCEALING
   write ^
   break
endall
if noun1 has ANIMATE 
   write Noun1 noun1(is) " carrying "
endall
if noun1 has SURFACE 
   write "On " noun1 " is "; removed "there", seemed bad when followed by "the"
endall
if noun1 has CONTAINER 
   if noun1 has CLOSABLE 
      write " and contains "
endall
if noun1 has CONTAINER 
   if noun1 hasnt CLOSABLE 
   write Noun1 " contains "
endall
loop
  if noun3 childof noun1
     set INDEX - 1
     write noun3(inventory)
     execute "global_object_info"
     execute "global_list_structure"
     if INDEX = 0
        write .^
        break
  endall
endloop
}

{global_noun1_contents
set INDEX = false
loop
   if noun3 childof noun1 
      set INDEX = true
      break
   endall
endloop
}

{global_noun2_contents
set INDEX = false
loop
   if noun3 childof noun2 
      set INDEX = true
      break
   endall
endloop
}

{global_noun4_contents
set INDEX = false
loop
   if noun3 childof noun4 
      set INDEX = true
      break
   endall
endloop
}

grammar inv	->list_inventory
grammar list	->list_inventory

{global_list_inventory
set INDEX = 0
loop
  if noun3 childof player
     if noun3(mass) != scenery
        set INDEX + 1
  endall
endloop
if INDEX = 0
   write "You are empty handed." ^
   break
endall
write "You are carrying:" ^
loop
  if noun3 childof player 
     if noun3(mass) != scenery
        write "    "noun3(inventory)
        execute "global_object_info"
        write ^
        if noun3 has CONTAINER
           if noun3 hasnt CLOSED
              execute "global_object_children"
  endall
endloop
}

{global_object_children
set noun4 = noun3
loop
  if noun3 childof noun4 
     write "       "noun3(inventory)
     execute "global_object_info"
     write ^
  endif
endloop
set noun3 = noun4
}

grammar inventory	->inventory
grammar i		->inventory

{global_inventory
set INDEX = 0
loop
  if noun3 childof player
     if noun3(mass) != scenery
        set INDEX + 1
  endall
endloop
if INDEX = 0
   write "You are empty handed." ^
   break
endall
write "You are carrying "
loop
  if noun3 childof player 
     if noun3(mass) != scenery
        set INDEX - 1
        write noun3(inventory)
        execute "global_object_info"
        execute "global_list_structure"
        if INDEX = 0
           write .^
           break
  endall
endloop
}

{global_list_structure
if INDEX > 1
   write ", " 
endall
if INDEX = 1
   write " and "
endall
}

{global_object_info
if noun3 has WORN 
   write " (being worn)"
endall
if noun3 has LUMINOUS 
   write " (providing light)"
endall
if noun3 has ON
   write " (on)"
endall
if noun3 has CLOSABLE
   if noun3 hasnt CLOSED 
      write " (open)"
endall
}

grammar relax ->relax

{global_relax
write "Taking a deep breath, you release the tension from your mind and "
write "body as you exhale slowly." ^
}

grammar sorry ->sorry

{global_sorry
write "That's quite all right." ^
}

grammar thanks		->thankyou
grammar thank you	->thankyou

{global_thankyou
write "You're welcome." ^
}

grammar score ->score
grammar points ->score

{global_score
set TURN_WORKED = false
if TOTAL_MOVES = 1
   write "Your score is " CURRENT_SCORE "% in 1 move giving you the rank of "
endall
if TOTAL_MOVES != 1
   write "Your score is " CURRENT_SCORE "% in " TOTAL_MOVES " moves giving "
   write "you the rank of "
endall
if CURRENT_SCORE < 20
   write "Lab Assistant." ^
   break
endall
if CURRENT_SCORE < 40
   write "Grad Student." ^
   break
endall
if CURRENT_SCORE < 60
   write "Scientist." ^
   break
endall
if CURRENT_SCORE < 80
   write "Nobel Laureate." ^
   break
endall
if CURRENT_SCORE < 100
   write "Mendel's Mentor." ^
   break
endall
write "Einstien Incarnate." ^
}

grammar open *present ->open

{global_open
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endif
if noun1 has LOCKED 
   write Noun1 noun1(is) " locked." ^
   set TURN_WORKED = false
   break
endif
if noun1 hasnt CLOSABLE 
   write "You can't open " noun1 .^
   set TURN_WORKED = false
   break
endif
if noun1 hasnt CLOSED 
   write Noun1 noun1(is) " already open." ^
   set TURN_WORKED = false
   break
endif
override
ensure noun1 hasnt CLOSED 
if noun1 has CONTAINER
   execute "global_revealing"
   break
endif
write "You open " noun1 .^
}

{global_revealing
set INDEX = 0 
loop
  if noun3 childof noun1
     set INDEX + 1
  endall
endloop
write "You open " noun1
if INDEX = 0 
   write ", which" noun1(is) " empty." ^
   break
endall
write " revealing "
loop
  if noun3 childof noun1
     set INDEX - 1
     write noun3(inventory)
     execute "global_object_info"
     execute "global_list_structure"
     if INDEX = 0
        write .^
	break
  endall
endloop
}

grammar close *present	->close
grammar shut *present	->close

{global_close
if noun1 hasnt CLOSABLE 
   write "You can't close " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has CLOSED 
   write Noun1 noun1(is) " already closed." ^
   set TURN_WORKED = false
   break
endall
override
write "You close " noun1 .^
ensure noun1 has CLOSED 
}

grammar lock *present ->lock

{global_lock
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LOCKABLE
   if noun1 has LOCKED 
      write Noun1 noun1(is) " already locked." ^
      break
endall
if noun1 has CLOSABLE
   if noun1 hasnt CLOSED
      write "You can't lock " noun1 " while "
      if noun1 has PLURAL
         write "they are"
      else
         write "it is"
      write " open." ^
      set TURN_WORKED = false
      break
endall
if noun1 hasnt LOCKABLE
   write "You can't lock " noun1 .^
   break
endall
override
write "What did you want to lock " noun1 " with?" ^
}

grammar lock *present with *held ->lock_with

{global_lock_with
if noun1 hasnt LOCKABLE
   write "You can't lock " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LOCKED 
   write Noun1 noun1(is) " already locked." ^
   break
endall
if noun1 has CLOSABLE
   if noun1 hasnt CLOSED
      write "You can't lock " noun1 " while "
      if noun1 has PLURAL
         write "they are"
      else
         write "it is"
      write " open." ^
      set TURN_WORKED = false
      break
endall
override
write "You can't lock " noun1 " with " noun2 .^
set TURN_WORKED = false
}

grammar unlock *present ->unlock

{global_unlock
if noun1 hasnt LOCKABLE 
   write "You can't unlock " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt LOCKED 
   write Noun1 noun1(is) " already unlocked." ^
   set TURN_WORKED = false
   break
endall
override
write "What did you want to unlock " noun1 " with?" ^
}

grammar unlock *present with *held	->unlock_with
grammar open *present with *held	->unlock_with

{global_unlock_with
if noun1 hasnt LOCKABLE
   write "You can't unlock " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt LOCKED 
   write Noun1 noun1(is) " already unlocked." ^
   break
endall
override
write "You can't unlock " noun1 " with " noun2 .^
set TURN_WORKED = false
}

grammar show *held to *present		->show_to
grammar show off *held to *present	->show_to
grammar display *held to *present	->show_to
grammar present *held to *present	->show_to
grammar expose *held to *present	->show_to

{global_show_to
if noun1 = noun2
   write "You can't show " noun1 " to "
   if noun1 has PLURAL
      write "themselves." ^
   else
      write "itself." ^
   set TURN_WORKED = false
   break
endall
override
write Noun2 noun2(doesnt) "seem overly impressed by " noun1 .^
}

grammar untie *present	->untie
grammar free *present	->untie
grammar undo *present	->untie

{global_untie
write Noun1 noun1(is) " not tied to anything." ^
set TURN_WORKED = false
}

grammar tie *held	->tie
grammar attach *held	->tie

{global_tie
write "What do you want to tie " noun1 " to?" ^
set TURN_WORKED to false
}

grammar tie *held to *present		->tie_to
grammar fix *held to *present		->tie_to
grammar attach *held to *present	->tie_to

{global_tie_to
if noun2 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
override
write "You can't tie " noun1 " to " noun2 .^
set TURN_WORKED = false
}

grammar attack *present	->attack
grammar thump *present	->attack
grammar hit *present	->attack
grammar fight *present	->attack
grammar kill *present	->attack
grammar murder *present	->attack
grammar punch *present	->attack

{global_attack
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has ANIMATE
   if noun1 has DEAD 
      write Noun1 noun1(is) " already dead." ^
      set TURN_WORKED = false
      break
endall
override
write "Attacking " noun1 " with your hands would have little effect." ^
set TURN_WORKED = false
}

grammar attack *present with *held	->attack_with
grammar thump *present with *held	->attack_with
grammar hit *present with *held		->attack_with
grammar fight *present with *held	->attack_with
grammar kill *present with *held	->attack_with
grammar murder *present with *held	->attack_with
grammar punch *present with *held	->attack_with
grammar stab *present with *held	->attack_with
grammar poke *present with *held	->attack_with

{global_attack_with
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun2 has LIQUID
   write Noun2 " run" noun2(s) " through your fingers." ^
   break
endall
if noun1 has WORN 
   write "You must first remove " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has ANIMATE
   if noun1 has DEAD 
      write Noun1 noun1(is) " already dead." ^
      set TURN_WORKED = false
      break
endall
override
write "Attacking " noun1 " with " noun2 " would have little effect." ^
set TURN_WORKED = false
}

grammar wave	->wave

{global_wave
write "You wave your arms around a bit." ^
}

grammar wave to	*present	->wave_to

{global_wave_to
if noun1 hasnt ANIMATE
   write "Not surpisingly, you get no response." ^
   break
endif
write Noun1 " barely raises an eye brow." ^
}

grammar jump on to *here ->jump_on
grammar hop on to *here  ->jump_on
grammar leap on to *here ->jump_on
grammar jump on *here    ->jump_on
grammar hop on *here     ->jump_on
grammar leap on *here    ->jump_on
grammar stamp on *here   ->jump_on
grammar stand on *here   ->jump_on

{global_jump_on
set TURN_WORKED = false
if noun1 hasnt SURFACE
   write "You can't jump on " noun1 .^
   break
endif
write "This would achieve little." ^
}

grammar jump over *here	->jump_over

{global_jump_over
write "You can't jump over " noun1 .^
set TURN_WORKED = false
}

grammar jump             ->jump
grammar jump up and down ->jump
grammar jump around      ->jump
grammar jump about       ->jump

{global_jump
if here has MID_AIR
   write "Not likely." ^
   break
endif
if here has TIGHT_ROPE
   write "Something tells me that might be a bit too dangerous, not to "
   write "mention totally unnecessary." ^
   break
endif
if here has UNDER_WATER
   write "Whilst underwater?" ^
   break
endif
if here has ON_WATER
   write "Whilst in water?" ^
   break
endif
if player has SITTING
   write "You would have to get up first." ^
   break
endif
write "Consider it done." ^
}

grammar yes	->yes
grammar okay	->yes
grammar yeah	->yes

{global_yes
write "That was a rhetorical question." ^
set TURN_WORKED = false
}

grammar no ->no

{global_no
write "That was a rhetorical question." ^
set TURN_WORKED = false
}

grammar why	->why?
grammar why?	->why

{global_why
write "Because." ^
set TURN_WORKED = false
}

grammar blow *held at *here	->blow_at
grammar blow *held to *here	->blow_at

{global_blow_at
write "You can't blow " noun1 " at " noun2 .^
set TURN_WORKED = false
}

grammar throw *held at *here ->throw_at
grammar throw *held to *here ->throw_at

synonym chuck                  throw
synonym pitch                  throw
synonym lob                    throw
synonym hurl                   throw

{global_throw_at
if noun2 has ANIMATE
   write "I don't think " noun2 " would really appreciate you throwing "
   write noun1 " at "
   if noun2 has FEMALE
      write "her." ^
   endif
   if noun2 hasnt FEMALE
      write "him." ^
   endif
   set TURN_WORKED = false
   break
endif
if noun1 has WORN 
   write "You must first remove " noun1 .^
   set TURN_WORKED = false
   break
endif
if noun2(location) > 100
   write "You can't throw " noun1 " at " noun2 " while "
   if noun1 has PLURAL
      write "they are"
   else
      write "it is"
   write " in something else." ^
   set TURN_WORKED = false
   break
endall
if noun1(mass) >= heavy
   execute "global_move_scenery"
   break
endall
override
if noun1(mass) => 20
   write Noun1 
   if noun1 has PLURAL
      write " are "
   endif
   if noun1 hasnt PLURAL
      write " is "
   endif
   write "a bit too heavy to go throwing around." ^
   set TURN_WORKED = false
   break
endif
if here has UNDER_WATER
   write "Throwing things underwater is never as easy as you might think."
   write ^
   set TURN_WORKED = false
   break
endall
if here has ON_WATER
      write "You throw " noun1 " at " noun2 " which "
      if noun1 has PLURAL
         write "they bounce"
      endif
      if noun1 hasnt PLURAL
         write "it bounces"
      endif
      write " off, landing in the water where "
      if noun1 has PLURAL
         write "they"
      endif
      if noun1 hasnt PLURAL
         write "it"
      endif
      write " rapidly sink" noun1(s) ", disappearing from sight." ^
      move noun1 to limbo
      break
endall
write Noun1 " bounce" noun1(s) " off " noun2 " and land" noun1(s) " on the "
write "ground." ^
move noun1 to here
}

grammar remove *present from *present		->remove_from
grammar take *present from *present		->remove_from
grammar take *present out of *present		->remove_from
grammar pick up *present on *present		->remove_from
grammar pick up *present from on *present	->remove_from
grammar take *present on *present		->remove_from
grammar take *present from on *present		->remove_from
grammar pick up *present in *present		->remove_from
grammar pick up *present from in *present	->remove_from
grammar take *present in *present		->remove_from
grammar take *present from in *present		->remove_from
grammar pick *present up from *present		->remove_from
grammar pick up *present from *present		->remove_from
grammar pick *present up from *present		->remove_from

{global_remove_from
if noun1 !childof noun2
   write Noun1 noun1(is) " not in " noun2 .^
   set TURN_WORKED = false
   break
endall
proxy "take" noun1
}

grammar shed *present		->remove
grammar unwear *present		->remove
grammar remove *present		->remove
grammar take off *present	->remove
grammar doff *present		->remove

{global_remove
if noun1 hasnt WORN
   if noun1 childof player
      write "You are not wearing " noun1 .^
      set TURN_WORKED = false
      break
endall
if noun1 hasnt WORN 
   proxy "take" noun1
   break
endall
if noun1(mass) > player(info) 
   write "You are carrying too much to remove " noun1 .^
   set TURN_WORKED = false
   break
endall
override
set player(info) - noun1(mass)
ensure noun1 hasnt WORN 
write "You remove " noun1 .^
}

grammar wear *held	->wear
grammar put on *held	->wear
grammar put *held on	->wear
grammar don *held	->wear

{global_wear
if noun1 hasnt WEARABLE
   write "You can't wear " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has WORN
   write "You are already wearing " noun1 .^
   set TURN_WORKED = false
   break
endall
override
set player(info) + noun1(mass)
ensure noun1 has WORN
write "You put on " noun1 .^
}

grammar talk to *present ->talk_to

synonym speak              talk

{global_talk_to
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to respond." ^
   set TURN_WORKED = false
   break
endall
if noun1 = CURRENT_PLAYER
   write "It's the first sign of madness you know..." ^
   break
endall
override
write Noun1 noun1(doesnt) "appear very interested in a conversation." ^
}

grammar eat *present		->eat
grammar consume *present	->eat
grammar munch *present		->eat
grammar nibble *present		->eat
grammar gobble *present		->eat

{global_eat
write "You can't eat " noun1 .^
set TURN_WORKED = false
}

grammar drink from *present	->drink_from
grammar sip from *present	->drink_from

{global_drink_from
execute "global_noun1_liquid?"
if INDEX = true
   proxy "drink " noun3
   set TURN_WORKED = false
   break
endall
write "There is nothing to drink in " noun1 .^
set TURN_WORKED = false
}

grammar drink *present	->drink
grammar sip *present	->drink

{global_drink
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt LIQUID
   write "You can't drink " noun1 .^
   set TURN_WORKED = false
   break
endall
override
write "You drink " noun1 .^
move noun1 to limbo
}

grammar flick *present ->flick

{global_flick
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LIQUID
   write "A wet hand is your only reward." ^
   break
endall
override
write "Flicking " noun1 " achieves nothing more than causing a sharp pain "
write "in your index finger." ^
}

grammar press *present	->press
grammar poke *present	->press

synonym depress press

{global_press
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has LIQUID
   write "A wet hand is your only reward." ^
   break
endall
override
write "Pressing " noun1 " has no discernible effect." ^
}

grammar light *present with *held	->light_with
grammar burn *present with *held	->light_with
grammar ignite *present with *held	->light_with
grammar set fire to *present with *held ->light_with

{global_light_with
if here has UNDER_WATER
   write "I don't think you are going to be lighting anything under water."
   write ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt FLAMMABLE 
   write Noun1 noun1(is) " not at all flammable." ^
   set TURN_WORKED = false
   break
endall
if noun2 hasnt IGNITABLE 
   write "I don't see how you can light " noun1 " using " noun2 .^
   set TURN_WORKED = false
   break
endall
if noun1(info) = 0
   write Noun1 " has run out." ^
   break
endall
if noun1 has BURNING 
   write Noun1 noun1(is) " already lit." ^
   set TURN_WORKED = false
   break
endall
override
write "You light " noun1 " using " noun2 .^
ensure noun1 has BURNING 
ensure noun1 has LUMINOUS
}

grammar burn *present	     ->light
grammar light *present	     ->light
grammar ignite *present	     ->light
grammar set fire to *present ->light

{global_light
if here has UNDER_WATER
   write "I don't think you are going to be lighting anything under water." ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has IGNITABLE 
   override
   write "You produce a brief flame." ^
   break
endall
if noun1 hasnt FLAMMABLE
   write Noun1 noun1(is) " not at all flammable." ^
   set TURN_WORKED = false
   break
endall
if noun1 has BURNING 
   write Noun1 noun1(is) " already alight." ^
   set TURN_WORKED = false
   break
endall
write "What did you intent to light " noun1 " with?" ^
set TURN_WORKED = false
}

grammar extinguish *present	->extinguish
grammar put out *present	->extinguish
grammar put *present out	->extinguish

{global_extinguish
if noun1 hasnt BURNING
   write Noun1 noun1(is) " not lit." ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
override
write "You put out " noun1 .^
ensure noun1 hasnt BURNING 
ensure noun1 hasnt LUMINOUS 
}

grammar swim west ->swim_west

synonym paddle      swim

{global_swim_west
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = WEST 
   move player to west
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = WEST 
   move player to west
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar west      ->west
grammar go west   ->west
grammar walk west ->west

synonym w      west

{global_west
set DIRECTION_TRAVELLED = WEST
move player to west
}

grammar swim east ->swim_east

{global_swim_east
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = EAST
   move player to east
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = EAST
   move player to east
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar east      ->east
grammar go east   ->east
grammar walk east ->east

synonym e      east

{global_east
set DIRECTION_TRAVELLED = EAST
move player to east
}

grammar swim south ->swim_south

{global_swim_south
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = SOUTH
   move player to south
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = SOUTH
   move player to south
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar south      ->south
grammar go south   ->south
grammar walk south ->south

synonym s       south

{global_south
set DIRECTION_TRAVELLED = SOUTH
move player to south
}

grammar swim southeast ->swim_southeast

{global_swim_southeast
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = SOUTHEAST
   move player to southeast
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = SOUTHEAST
   move player to southeast
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar southeast      ->southeast
grammar go southeast   ->southeast
grammar walk southeast ->southeast

synonym se          southeast

{global_southeast
set DIRECTION_TRAVELLED = SOUTHEAST
move player to southeast
}

grammar swim southwest ->swim_southwest

{global_swim_southwest
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = SOUTHWEST
   move player to southwest
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = SOUTHWEST
   move player to southwest
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar southwest      ->southwest
grammar go southwest   ->southwest
grammar walk southwest ->southwest

synonym sw          southwest

{global_southwest
set DIRECTION_TRAVELLED = SOUTHWEST
move player to southwest
}

grammar swim north ->swim_north

{global_swim_north
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = NORTH
   move player to north
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = NORTH
   move player to north
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar north		->north
grammar go north	->north
grammar walk north	->north

synonym n		north

{global_north
set DIRECTION_TRAVELLED = NORTH
move player to north
}

grammar swim northeast ->swim_northeast

{global_swim_northeast
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = NORTHEAST
   move player to northeast
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = NORTHEAST
   move player to northeast
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar northeast	->northeast
grammar go northeast	->northeast
grammar walk northeast	->northeast

synonym ne		northeast

{global_northeast
set DIRECTION_TRAVELLED = NORTHEAST
move player to northeast
}

grammar swim northwest ->swim_northwest

{global_swim_northwest
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = NORTHWEST
   move player to northwest
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = NORTHWEST
   move player to northwest
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar northwest	->northwest
grammar go northwest	->northwest
grammar walk northwest	->northwest

synonym nw		northwest

{global_northwest
set DIRECTION_TRAVELLED = NORTHWEST
move player to northwest
}

grammar climb up *here	->climb_up
grammar walk up *here	->climb_up
grammar go up *here	->climb_up

{global_climb_up
write "You can not climb up " noun1 .^
set TURN_WORKED = false
}

grammar climb down *here	->climb_down
grammar walk down *here		->climb_down
grammar go down *here		->climb_down

{global_climb_down
write "You can not climb down " noun1 .^
set TURN_WORKED = false
}

grammar enter *here		->enter
grammar go through *here	->enter
grammar go in *here		->enter
grammar climb on *here		->enter
grammar climb in *here		->enter
grammar get in *here		->enter
grammar get on *here		->enter
grammar jump in *here		->enter

{global_enter
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "You can not enter " noun1 .^
set TURN_WORKED = false
}

grammar climb *here ->climb
grammar scale *here ->climb

{global_climb
write "You can not climb up " noun1 .^
set TURN_WORKED = false
}

grammar swim in ->swim_in

{global_swim_in
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = IN
   move player to in
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = IN
   move player to in
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar get in		->in
grammar climb in	->in
grammar in		->in
grammar enter		->in
grammar walk in		->in

{global_in
set DIRECTION_TRAVELLED = IN
move player to in
}

grammar swim out ->swim_out

{global_swim_out
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = OUT
   move player to out
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = OUT
   move player to out
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar get out		->out
grammar out		->out
grammar exit		->out
grammar leave		->out
grammar climb out	->out
grammar walk out	->out
grammar go out		->out

{global_out
set DIRECTION_TRAVELLED = OUT
move player to out
}

grammar surface ->swim_up
grammar swim up ->swim_up

{global_swim_up
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = UP
   move player to up
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = UP
   move player to up
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar up		->up
grammar climb		->up
grammar climb up	->up
grammar jump up		->up
grammar go up		->up
grammar walk up		->up

synonym u		up

{global_up
set DIRECTION_TRAVELLED = UP
move player to up
}

grammar swim down	->swim_down
grammar dive down	->swim_down
grammar dive		->swim_down

{global_swim_down
if here has UNDER_WATER
   set DIRECTION_TRAVELLED = DOWN
   move player to down
   break
endall
if here has ON_WATER
   set DIRECTION_TRAVELLED = DOWN
   move player to down
   break
endall
write "I don't see how you can swim when you are not in water." ^
set TURN_WORKED = false
}

grammar down		->down
grammar climb down	->down
grammar jump down	->down
grammar go down		->down
grammar walk down	->down

synonym d		down

{global_down
set DIRECTION_TRAVELLED = DOWN
move player to down
}

grammar look	->look_around
grammar watch	->look_around

synonym l	look
synonym ls	look
synonym dir	look

{global_look_around
look
}

grammar look under *present ->look_under

synonym beneath under

{global_look_under
if noun1(mass) >= heavy
   write "You can't see under " noun1 .^
   set TURN_WORKED = false
   break
endall
write "There is nothing unusual under " noun1 .^
}

grammar look behind *present ->look_behind

{global_look_behind
if noun1(mass) >= heavy
   write "You can't see behind " noun1 .^
   set TURN_WORKED = false
   break
endall
write "There is nothing unusual behind " noun1 .^
}

grammar look through *present	->look_through
grammar look out *present	->look_through

{global_look_through
write "You can't look through " noun1 .^
set TURN_WORKED = false
}

grammar look through *held at *present		->look_through_at

{global_look
proxy "look at " noun2 " through " noun1
}

grammar look at *present through *held		->look_at_through
grammar look at *present with *held		->look_at_through

{global_look_at_through
if noun1 = noun2
   write "You can't look at " noun1 " through "
   if noun1 has PLURAL
      write "themselves." ^
   else
      write "itself." ^
   set TURN_WORKED = false
   break
endall
override
write "You can't look at " noun1 " through " noun2 .^
set TURN_WORKED = false
}

grammar wait	->wait
grammar stall	->wait
grammar pause	->wait
grammar z	->wait

{global_wait
write "Time passes..." ^
}

grammar listen	->listen

{global_listen
write "You don't hear anything out of the ordinary." ^
}

grammar listen to *present	->listen_to
grammar listen at *present	->listen_to

{global_listen_to
write "You don't hear anything out of the ordinary." ^
}

grammar use *present		->use
grammar work *present		->use
grammar operate *present	->use

{global_use
if noun1 has ANIMATE
   write "I acknoweledge that I probably don't want to know the answer to "
   write "this question, but in what way did you want to use " noun1 .^
   set TURN_WORKED = false
   break
endif
write "I'm afraid you are going to have to be a bit more specific." ^
}

grammar rotate *present	clockwise	->turn
grammar turn *present clockwise		->turn
grammar twist *present clockwise	->turn
grammar spin *present clockwise		->turn
grammar rotate *present anticlockwise	->turn
grammar turn *present anticlockwise	->turn
grammar twist *present anticlockwise	->turn
grammar spin *present anticlockwise	->turn
grammar rotate *present			->turn
grammar turn *present			->turn
grammar twist *present			->turn
grammar spin *present			->turn

{global_turn
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
write "You can't turn " noun1 .^
set TURN_WORKED = false
}

grammar turn on *present	->turn_on
grammar turn *present on	->turn_on
grammar switch on *present	->turn_on
grammar switch *present on	->turn_on

{global_turn_on
if noun1 hasnt SWITCHABLE
   write "You can't turn " noun1 " on." ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 has ON 
   write Noun1 noun1(is) " already on." ^
   set TURN_WORKED = false
   break
endall
override
write "You switch on " noun1 .^
ensure noun1 has ON
}

grammar turn off *present   ->turn_off
grammar turn *present off   ->turn_off
grammar switch off *present ->turn_off
grammar switch *present off ->turn_off

{global_turn_off
if noun1 hasnt SWITCHABLE
   write "You can't turn " noun1 " off." ^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ON 
   write Noun1 noun1(is) " already off." ^
   set TURN_WORKED = false
   break
endall
override
write "You switch off " noun1 .^
ensure noun1 hasnt ON
}

grammar tip *present		->up_end
grammar turn *present over	->up_end
grammar up-end *present		->up_end
grammar tip *present over	->up_end
grammar push *present over	->up_end
grammar push over *present	->up_end
grammar upturn *present		->up_end
grammar stand *present on end	->up_end
grammar tip *present on end	->up_end

{global_up_end
execute "global_noun1_liquid?"
if INDEX = true
   proxy "pour " noun3
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1(mass) => heavy
   write "You can't turn " noun1 " over." ^
   set TURN_WORKED = false
   break
endif
override
write "You turn over " noun1
if noun1 hasnt CONTAINER
   write .^
   break
endif
if noun1 has CLOSED
   write .^
   break
endif
set INDEX = 0 
loop
  if noun3 childof noun1
    if noun3(mass) < heavy
       set INDEX + 1
  endall
endloop
if INDEX = 0 
   write .^
   break
endall
write " causing "
loop
  if noun3 childof noun1
     if noun3(mass) < heavy
        set INDEX - 1
        write noun3(inventory)
        move noun3 to here
        execute "global_object_info"
        execute "global_list_structure"
        if INDEX = 0
           write " to tumble on to the ground." ^
           break
  endall
endloop
}

grammar pour *present		->pour

{global_pour
if noun1 hasnt LIQUID
   write "You can't pour " noun1 .^
   set TURN_WORKED = false
   break
endall
set noun3 parentof noun1
if noun3 = false
   write "You don't have " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun3 has CLOSED 
   write "I don't see " noun1 " here." ^
   set TURN_WORKED = false
   break
endall
if noun3 !childof player 
   write "You do not have " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
override
write "You pour " noun1 " all over the ground." ^
move noun1 to limbo 
}


grammar tip *present on *present	->pour_on
grammar tip *present down *present	->pour_on
grammar tip *present in *present	->pour_on
grammar tip *present over *present	->pour_on
grammar pour *present down *present	->pour_on
grammar pour *present on *present	->pour_on
grammar pour *present in *present	->pour_on
grammar pour *present over *present	->pour_on

{global_pour_on
if noun1 hasnt LIQUID
   write "You can't pour " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
set noun3 parentof noun1
if noun3 isnt *held
   write "You do not have " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun3 !childof player 
   write "You do not have " noun1 .^
   set TURN_WORKED = false
   break
endall
if noun3 has CLOSED
   write "I can't see " noun1 " here." ^
   set TURN_WORKED = false
   break
endall
if noun2 has OUT_OF_REACH
   write Noun2 noun2(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
override
execute "global_noun2_liquid?"
if INDEX = true 
   write Noun2 " already contain" noun2(s) " " noun3 . " If you were to also "
   write "add " noun1 " they would mix together." ^
   set TURN_WORKED = false
   break
endall
if noun2 has CONTAINER
   if noun2 hasnt CLOSED 
      override
      write "You pour " noun1 " into " noun2 .^
      move noun1 to noun2
      break
endall
if noun2(location) > objects
   set noun3 parentof noun2
   if noun3 has CONTAINER
      if noun3 hasnt CLOSED
         write Noun1 " run" noun1(s) " off " noun2 " and goes into " noun3 .^
         move noun1 to noun3
         break
endall
write Noun1 " runs off " noun2 " and goes all over the ground." ^
move noun1 to limbo 
}

grammar shag *present		->shag
grammar screw *present		->shag
grammar fuck *present		->shag
grammar root *present		->shag
grammar pork *present		->shag
grammar make love to *present	->shag
grammar make love with *present	->shag

{global_shag
if noun1 has OUT_OF_REACH
   write Noun1 noun1(is) " out of reach." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "Do you really find " noun1 " that attractive?" ^
   set TURN_WORKED to false
   break
endif
write "This isn't that kind of story." ^
set TURN_WORKED to false
}

;                                                     SPEAKING TO OTHER OBJECTS
; -----------------------------------------------------------------------------
; Grammar statements beginning with an object must be defined last in the game
; to avoid confusion with verbs that may also be objects such as "drink drink"

; LOCAL
grammar *present page *anywhere			->ask_to_page
grammar *present call *anywhere			->ask_to_page
grammar *present contact *anywhere		->ask_to_page
grammar *present ring *anywhere			->ask_to_page
grammar *present phone *anywhere		->ask_to_page
grammar *present page down *anywhere		->ask_to_page

grammar *present say im *anwhere		->tell_im
grammar *present say i am *anywhere		->tell_im
grammar *present say i'm *anywhere		->tell_im
grammar *present say it's *anywhere		->tell_im
grammar *present say its *anywhere		->tell_im
grammar *present say my name is *anywhere	->tell_im
grammar *present im *anwhere			->tell_im
grammar *present i am *anywhere			->tell_im
grammar *present i'm *anywhere			->tell_im
grammar *present my name is *anywhere		->tell_im
grammar *present it's *anywhere			->tell_im
grammar *present its *anywhere			->tell_im

grammar *present tell him my name is *anywhere	->tell_them
grammar *present tell them my name is *anywhere	->tell_them
grammar *present tell her my name is *anywhere	->tell_them
grammar *present tell him its *anywhere		->tell_them
grammar *present tell them its *anywhere	->tell_them
grammar *present tell her its *anywhere		->tell_them
grammar *present tell him it's *anywhere	->tell_them
grammar *present tell them it's *anywhere	->tell_them
grammar *present tell her it's *anywhere	->tell_them
grammar *present tell him it is *anywhere	->tell_them
grammar *present tell them it is *anywhere	->tell_them
grammar *present tell her it is *anywhere	->tell_them
grammar *present tell him im *anywhere		->tell_them 
grammar *present tell him i'm *anywhere		->tell_them 
grammar *present tell him i am *anywhere	->tell_them 
grammar *present tell her im *anywhere		->tell_them 
grammar *present tell her i'm *anywhere		->tell_them 
grammar *present tell her i am *anywhere	->tell_them 
grammar *present tell them im *anywhere		->tell_them 
grammar *present tell them i'm *anywhere	->tell_them 
grammar *present tell them i am *anywhere	->tell_them 
grammar *present tell him that im *anywhere	->tell_them 
grammar *present tell him that i'm *anywhere	->tell_them 
grammar *present tell him that i am *anywhere	->tell_them 
grammar *present tell her that im *anywhere	->tell_them 
grammar *present tell her that i'm *anywhere	->tell_them 
grammar *present tell her that i am *anywhere	->tell_them 
grammar *present tell them that im *anywhere	->tell_them 
grammar *present tell them that i'm *anywhere	->tell_them 
grammar *present tell them that i am *anywhere	->tell_them 

{global_tell_them
if PAGE_REQUESTED = false
   write "~Tell who?~, " noun1 " asks." ^
   break
endif  
proxy "tell " noun1 " my name is " noun2
}
; END LOCAL

grammar *present give myself *carried		->ask_for
grammar *present give *carried to myself	->ask_for
grammar *present give *carried to me		->ask_for
grammar *present give myself *anywhere		->ask_for
grammar *present give *anywhere to myself	->ask_for
grammar *present give *anywhere to me		->ask_for

grammar *present tell myself about *carried		->ask_about
grammar *present tell myself all about *carried		->ask_about
grammar *present what do you know about *carried	->ask_about
grammar *present tell myself about *anywhere		->ask_about
grammar *present tell myself all about *anywhere	->ask_about
grammar *present what do you know about *anwhere	->ask_about

grammar *present who are you		->who?
grammar *present what is your name	->who?
grammar *present what is your name?	->who?

{global_who?
proxy "ask " noun1 " about " noun1
}

grammar *present sorry		->apologise
grammar *present im sorry	->apologise
grammar *present i am sorry	->apologise
grammar apologise to *present	->apologise

{global_apologise
if noun1 hasnt ANIMATE
   write "Kooky." ^
   break
endall
write Noun1 " assure" noun1(s) " you that no apology is necessary." ^
}

grammar *present thanks		->thank
grammar *present thank you	->thank
grammar thank *present		->thank

{global_thank
if noun1 hasnt ANIMATE
   write "Kooky." ^
   break
endall
write "~Don't mention it,~ "  noun1 " replies." ^
}

grammar greet *present		->greet
grammar *present hello		->greet
grammar *present hi there	->greet
grammar *present dr		->greet
grammar *present doctor		->greet
grammar *present hi		->greet

{global_greet
if here has UNDER_WATER
   write "Talking under water isn't very easy." ^
   set TURN_WORKED = false
   break
endall
if noun1 hasnt ANIMATE
   write "I don't think talking to " noun1 " is going to help somehow." ^
   set TURN_WORKED = false
   break
endall
if noun1 has DEAD 
   write Noun1 noun1(is) " a bit too dead to respond." ^
   set TURN_WORKED = false
   break
endall
if noun1 = CURRENT_PLAYER
   write "It's the first sign of madness you know..." ^
   break
endall
override
write Noun1
if noun1 has PLURAL
   write " nod." ^
else
   write " nods." ^
}
 
grammar *present yes	->say_yes
grammar *present okay	->say_yes
grammar *present yeah	->say_yes

{global_say_yes
write Noun1 " appear" noun1(s) " to pay no attention." ^
}

grammar *present no	->say_no

{global_say_no
write Noun1 " appears to pay no attention." ^
}

grammar *present *carried	->say_object
grammar *present *anywhere	->say_object

{global_say_object
proxy "say " noun2 " to " noun1
}

grammar *anywhere ->noun_only

{global_noun_only
if here = concierge_desk
   if WHO_I_AM = false
      if PAGE_REQUESTED != false
         proxy "tell concierge my name is " noun1
         break
endall
if noun1 isnt *present
   write "You don't see any such thing." ^
   set TURN_WORKED = false
   break
endif
write "There is no verb in that sentence." ^
set TURN_WORKED = false
}
