; 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 " 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 " ^ write "GIVE TO " ^ write "SHOW TO " ^ write "ASK FOR " ^ write "ASK ABOUT " ^ write "TELL ABOUT " ^^ 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 }