seastalker/dome.zil

1802 lines
55 KiB
Plaintext

"DOME for SEASTALKER
Copyright (C) 1984 Infocom, Inc. All rights reserved."
<GLOBAL URS "Undersea Research Station">
<OBJECT AQUADOME
(IN GLOBAL-OBJECTS)
(DESC "Aquadome")
(ADJECTIVE UNDERSEA UNDERWATER RESEARCH AQUA PLASTIC TRANSPARENT)
(SYNONYM AQUADOME DOME STATION)
(ACTION AQUADOME-F)
(FLAGS VOWELBIT)
(VALUE 5)>
<ROUTINE AQUADOME-F ()
<COND (<OR <VERB? FIND WHAT>
<AND <VERB? ASK-ABOUT> <FSET? ,PRSO ,PERSON>>>
<COND (<AND <==? ,NOW-TERRAIN ,SEA-TERRAIN> <==? ,HERE ,SUB>>
<PERFORM ,V?FIND ,PLAYER>
<RTRUE>)
(,SUB-IN-OPEN-SEA
<TELL
"Its location is stored in the " D ,AUTO-PILOT "'s computer memory." CR>)
(<AND <NOT ,SUB-IN-DOME>
<NOT <==? ,NOW-TERRAIN ,SEA-TERRAIN>>>
<TELL
"\"The " D ,AQUADOME " encloses the " ,URS " of " D
,IU-GLOBAL ", on the ocean floor off the Atlantic coast. Most " LN "
subs can reach it by " D ,AUTO-PILOT ".\"" CR>)>)
(<AND <VERB? EXAMINE> <NOT <L? ,DISTANCE-FROM-BAY ,AQUADOME-VISIBLE>>>
<SETG P-WON <>>
<TELL <GETP ,LOCAL-SUB ,P?TEXT> CR>)
(<VERB? LOOK-INSIDE LOOK-OUTSIDE>
<PERFORM ,PRSA ,WINDOW>
<RTRUE>)
(<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
<TELL "Wait until you're close enough." CR>)>)
(<VERB? WALK-AROUND>
<COND (<AND <GO-NEXT ,IN-DOME-AROUND> <NOT <==? ,WINNER ,PLAYER>>>
<OKAY>)>
<RTRUE>)
(<VERB? WALK-TO>
<COND ;(<==? ,NOW-TERRAIN ,SEA-TERRAIN>
<TELL "Use this information: ">
<PERFORM ,V?FIND ,PLAYER>
<RTRUE>)
(,SUB-IN-DOME
<TELL "You're in it!" CR>)
(,SUB-IN-OPEN-SEA ;<FSET? ,AUTO-PILOT ,ONBIT>
<TELL "Let the " D ,AUTO-PILOT " handle that." CR>)
(T <TELL "First you must reach the open sea." CR>)>)>>
<ROUTINE IN-DOME? (RM)
<COND (<EQUAL? .RM ,SUB ,CRAWL-SPACE> ,SUB-IN-DOME)
(<ZMEMQ .RM ,IN-DOME-AROUND> T)>>
<ROUTINE AIR-ROOM? (RM)
<OR <EQUAL? .RM ,FOOT-OF-RAMP ,AIRLOCK ,AIRLOCK-WALL>
<EQUAL? .RM ,CENTER-OF-DOME ,OUTSIDE-ADMIN-BLDG>
<EQUAL? .RM ,BLY-OFFICE ,SUB>>>
<ROUTINE THROUGH-ROOF? (RM "OPTIONAL" (HR <>))
<COND (<NOT .HR> <SET HR ,HERE>)>
<COND (<EQUAL? .HR ,SUB ,CRAWL-SPACE ,AIRLOCK>
<NOT <EQUAL? .RM ,SUB ,CRAWL-SPACE ,AIRLOCK>>)
(T <EQUAL? .RM ,SUB ,CRAWL-SPACE ,AIRLOCK>)>>
<OBJECT WINDOW
(IN LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW)
(FLAGS NDESCBIT WINDOWBIT LOCKED)
(ACTION WINDOW-F)>
<ROUTINE WINDOW-F ("AUX" ;(RM <WINDOW-ROOM ,HERE ,PRSO>) POP)
<COND (<VERB? BRUSH>
<TELL
"The window is clean enough without your interference." CR>)
(<VERB? EXAMINE>
<TELL
"The window is a simple plastic sheet, giving a view of the dome outside."
CR>)
(<VERB? LOOK-INSIDE LOOK-OUTSIDE>
<COND (<0? ,SNARK-ATTACK-COUNT>
<TELL "You can see the dome outside." CR>)
(T
;<MOVE-HERE-NOT-SUB ,BLY>
<MOVE ,BLY ,HERE>
<TELL ;" to the southeast"
"The " D ,AQUADOME "'s search lights probe the ocean, but
the " D ,GLOBAL-WATER " is too murky for the beams to penetrate.|
\"Tip's right!\" " D ,BLY " says. \"That must be the " D ,SNARK " out there.
Its tentacles churned up silt from the seabed that way during its first
attack, "FN"!\"" CR>)>)
(<VERB? MUNG>
<TELL
"Vandalism is for vandals, not famous inventors!" CR>)
(<VERB? OPEN CLOSE LOCK UNLOCK>
<TELL "The window can't be opened." CR>)>>
<OBJECT EXERCISE-TRACK
(IN GLOBAL-OBJECTS)
(DESC "exercise track")
(ADJECTIVE RUNNING JOGGING EXERCISE)
(SYNONYM TRACK)
(FLAGS VOWELBIT)
(ACTION EXERCISE-TRACK-F)>
<ROUTINE EXERCISE-TRACK-F ()
<COND (<VERB? FIND THROUGH WALK-TO>
<COND (,SUB-IN-DOME ;<IN-DOME? ,HERE>
<TELL "You don't need exercise!" CR>)>)>>
[
<GLOBAL AIRLOCK-FULL T>
<ROOM AIRLOCK
(IN ROOMS)
(ADJECTIVE DOCKING)
(SYNONYM TANK AREA ROOM ;AIRLOCK DOCK)
(DESC ;"airlock" "docking tank")
(FLAGS RLANDBIT ONBIT)
(NORTH TO AIRLOCK-WALL IF AIRLOCK-ROOF IS OPEN)
(UP TO AIRLOCK-WALL IF AIRLOCK-ROOF IS OPEN)
(OUT TO AIRLOCK-WALL IF AIRLOCK-ROOF IS OPEN)
(DOWN TO SUB IF SUB-DOOR IS OPEN)
(IN TO SUB IF SUB-DOOR IS OPEN)
(SOUTH TO SUB IF SUB-DOOR IS OPEN)
(GLOBAL LOCAL-SUB SUB-DOOR AIRLOCK-RAMP AIR-SUPPLY-SYSTEM-GLOBAL)
(VALUE 1)
(ACTION AIRLOCK-F)>
<ROUTINE AIRLOCK-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (<OR ,GREENUP-ESCAPE ,GREENUP-TRAPPED>
<MOVE ,LOWELL ,HERE>
<MOVE ,ANTRIM ,HERE>
<TELL "Two of the crew are with you." CR>)>)
(<==? .RARG ,M-LOOK>
<TELL "You're now in the " D ,AIRLOCK", at the foot of the ramp." CR>)
(.RARG <RFALSE>)
(<AND <REMOTE-VERB?> <NOT <VERB? THROUGH WALK-TO>>>
<RFALSE>)
(<AND <NOT ,SUB-IN-DOME> <NOT <SUB-OUTSIDE-AIRLOCK?>>>
<NOT-HERE ,AIRLOCK>)
(<VERB? EMPTY>
<COND (<NOT ,AIRLOCK-FULL>
<ALREADY ,AIRLOCK "empty">)
(<FSET? ,AIRLOCK-HATCH ,OPENBIT>
<YOU-CANT <> ,AIRLOCK-HATCH "open">)
(<OR <EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
<EQUAL? ,HERE ,BLY-OFFICE ,FOOT-OF-RAMP>>
<ENABLE <QUEUE I-AIRLOCK-EMPTY 2>>
<TELL "This will take 1 turn." CR>
;<COND (,GREENUP-ESCAPE
<COND (<G? 4 ,GREENUP-ESCAPE>
<TELL
"Meanwhile, Greenup can't get into the " D ,SUB " and escape. ">
<GREENUP-CUFF>)
(<G? 5 ,GREENUP-ESCAPE>
<QUEUE I-GREENUP-ESCAPE 0>
<SETG GREENUP-ESCAPE 0>
<SETG GREENUP-TRAPPED T>
<FCLEAR ,SUB-DOOR ,OPENBIT>
<TELL
"Meanwhile, the " D ,STATION-MONITOR
" reveals the " D ,SUB " resting in the cradle.
The " D ,SUB-DOOR " is closed.|
\"Looks as if Greenup is holed up inside the " D ,SUB ",\" says " D ,BLY ".
\"Shall I have the crew bring tools to force open the hatch?\"">
<COND (<YES?>
<TELL
"\"I have the tools, skipper,\" one of the crew reports moments later."
CR>)>)>)>
<RTRUE>)>)
(<VERB? FILL>
<COND (,AIRLOCK-FULL
<ALREADY ,AIRLOCK "full">
<RTRUE>)
(<NOT <FSET? ,AIRLOCK-ELECTRICITY ,ONBIT>>
<YOU-CANT <> ,AIRLOCK-ELECTRICITY "off">
<RTRUE>)
(<AIRLOCK-POP?>
<YOU-CANT <> ,AIRLOCK "full of people">
;<TELL
"You can't open the " D ,AIRLOCK-HATCH " with people in the " D ,AIRLOCK "!"
CR>
<RTRUE>)>
<COND (<NOT ,GREENUP-ESCAPE>
<COND (<FSET? ,SUB-DOOR ,OPENBIT>
<YOU-CANT <> ,SUB-DOOR "open">
;<TELL
"You can't open the " D ,AIRLOCK-HATCH " while the " D ,SUB-DOOR " is open."
CR>
<RTRUE>)>
<COND (<FSET? ,AIRLOCK-ROOF ,OPENBIT>
;<ENABLE <QUEUE I-DOME-FLOODED 2>>
<THIS-IS-IT ,AIRLOCK-ROOF>
<TELL
"A safety mechanism prevents it. The " D ,AIRLOCK-ROOF " is open!" CR>
<RTRUE>)>)>
<COND (<AND ,GREENUP-ESCAPE <G? 4 ,GREENUP-ESCAPE>>
<TELL
"Greenup is frantically scrambling back up the ladder to avoid being
swept off and drowned! ">
<GREENUP-CUFF>
<TELL
"Tip immediately empties the " D ,AIRLOCK " again." CR>)
(<OR <EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
<EQUAL? ,HERE ,BLY-OFFICE ,FOOT-OF-RAMP>>
<ENABLE <QUEUE I-AIRLOCK-EMPTY 2>>
<TELL "This will take 1 turn." CR>
<RTRUE>)>)
(<VERB? OPEN CLOSE>
;<COND (<VERB? FILL>
<TELL ,I-ASSUME " open the " D ,AIRLOCK-HATCH ".)" CR>)>
<PERFORM ,PRSA ,AIRLOCK-HATCH>
<RTRUE>)
(<VERB? THROUGH WALK-TO>
<COND (<AND <NOT ,SUB-IN-DOME> <EQUAL? ,HERE ,SUB ,CRAWL-SPACE>>
<TOO-BAD-BUT ,PRSO "too far away">
;<TELL "It's too far away." CR>
<RTRUE>)>
<SETG PRSO ,AIRLOCK>
<CHEERS?>
;<DO-WALK ,P?SOUTH>
<RFALSE>)>>
<ROUTINE CHEERS? ()
<COND (<AND <==? ,WINNER ,PLAYER>
<ZMEMQ ,HERE ,IN-DOME-AROUND>
<NOT <EQUAL? ,HERE ,AIRLOCK ,AIRLOCK-WALL>>>
<COND (<READY-FOR-SNARK?>
<TELL
"Cheers follow as you start up the ladder into the " D ,AIRLOCK "." CR>)>)>>
<ROUTINE I-AIRLOCK-EMPTY ()
<COND (,AIRLOCK-FULL
<COND (<FSET? ,AIRLOCK-HATCH ,OPENBIT> <RFALSE>)>
<SETG AIRLOCK-FULL <>>
<TELL CR
"The " D ,AIRLOCK " is now clear of " D ,GLOBAL-WATER " and filled with
air at sea-level pressure.">
<COND (<FSET? ,ENGINE ,ONBIT>
<FCLEAR ,ENGINE ,ONBIT>
<TELL " The engine shuts off.">)>
<COND (T ;<EQUAL? ,HERE ,SUB>
<FSET ,AIRLOCK-ROOF ,OPENBIT>
<THIS-IS-IT ,SUB-DOOR>
<TELL CR
"The roof of the " D ,AIRLOCK " is sliding open, and the " D ,SUB
" is in dry dock.|
A ramp swings down from the top of the " D ,AIRLOCK "'s north wall to your "
D ,SUB-DOOR "." CR>
<RFATAL>)>)
(T
<SETG AIRLOCK-FULL T>
<TELL CR
"The " D ,AIRLOCK " is now filled with " D ,GLOBAL-WATER "." CR>
<COND (,SUB-IN-DOME
<TELL
"The adjustable cradle then releases the " D ,SUB "'s keel from its
grip." CR>)>)>>
<OBJECT GREENUP-LADDER
(IN AIRLOCK)
(DESC "emergency ladder")
(ADJECTIVE EMERGE)
(SYNONYM LADDER)
(FLAGS VOWELBIT NDESCBIT)
(ACTION GREENUP-LADDER-F)>
<ROUTINE GREENUP-LADDER-F ()
<COND (<VERB? BOARD ;ENTER CLIMB-DOWN CLIMB-ON CLIMB-UP THROUGH>
<TELL "The " D ,GREENUP-LADDER " is only for emergencies." CR>)>>
]
<OBJECT AIRLOCK-RAMP
(IN LOCAL-GLOBALS)
(DESC ;"airlock" "docking tank ramp")
(ADJECTIVE DOCKING TANK AIRLOCK)
(SYNONYM RAMP)
(ACTION AIRLOCK-RAMP-F)>
<ROUTINE AIRLOCK-RAMP-F ()
<COND (<AND <VERB? BOARD CLIMB-DOWN CLIMB-ON> <EQUAL? ,HERE ,AIRLOCK-WALL>>
<DO-WALK ,P?SOUTH>
<RTRUE>)
(<AND <VERB? BOARD CLIMB-UP CLIMB-ON> <EQUAL? ,HERE ,AIRLOCK>>
<DO-WALK ,P?NORTH>
<RTRUE>)>>
<ROOM AIRLOCK-WALL
(IN ROOMS)
(DESC ;"airlock" "docking tank entrance")
(ADJECTIVE DOCKING TANK AIRLOCK)
(SYNONYM ENTRANCE)
(FLAGS RLANDBIT ONBIT)
(DOWN "You can go down to the north or south.")
(SOUTH TO AIRLOCK IF AIRLOCK-ROOF IS OPEN)
(OUT TO AIRLOCK IF AIRLOCK-ROOF IS OPEN)
(IN TO FOOT-OF-RAMP)
(NORTH TO FOOT-OF-RAMP)
(GLOBAL LOCAL-SUB ;SUB-DOOR AIRLOCK-RAMP AIRLOCK-LADDER
AIR-SUPPLY-SYSTEM-GLOBAL)
(ACTION AIRLOCK-WALL-F)
;(LINE 2)
;(STATION FOOT-OF-RAMP)
(CORRIDOR *1000*)>
<ROUTINE AIRLOCK-WALL-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-LOOK>
<TELL
"You're now atop the north wall of the " D ,AQUADOME "'s " D ,AIRLOCK "."
CR>
<TELL
"This gives you a bird's-eye view of the whole " ,URS " of "
D ,IU-GLOBAL ".|
|
The dome is a transparent hemisphere made of plastic of great strength,
developed by you for this specific purpose. The dome encloses the four
attached buildings of the " ,URS ": the workshop/lab and dormitory in
the western half of the dome, and the administration and communication
buildings in the eastern half.|
">
<COND (<FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>
<TELL
"In the very center is the " D ,AIR-SUPPLY-SYSTEM ". This is in a cylinder that
runs from the floor to the top of the dome. It extracts oxygen from "
D ,GLOBAL-WATER "
and emits it through small holes around its base to keep the air fresh at all
times.|
">)>
<TELL
"A ladder goes from here down to the floor of the " D ,AQUADOME ",
outside the " D ,AIRLOCK "'s north wall.|
">
<COND (<AND <CREW-5-TOGETHER?>
<IN? ,CREW ,FOOT-OF-RAMP>
<NOT <FSET? ,BLY ,MUNGBIT>>>
<TELL D ,BLY " and her five " D ,CREW " are">
<COND (<NOT <FSET? ,FOOT-OF-RAMP ,TOUCHBIT>>
<TELL " waiting to greet you">)>
<TELL " at the foot of this ladder." CR>)>)>>
<OBJECT AIRLOCK-LADDER
(IN LOCAL-GLOBALS)
(DESC ;"airlock" "docking tank ladder")
(ADJECTIVE DOCKING TANK AIRLOCK)
(SYNONYM LADDER)
;(FLAGS VOWELBIT)
(ACTION AIRLOCK-LADDER-F)>
<ROUTINE AIRLOCK-LADDER-F ()
<COND (<AND <VERB? BOARD CLIMB-DOWN CLIMB-ON> <EQUAL? ,HERE ,AIRLOCK-WALL>>
<DO-WALK ,P?NORTH>
<RTRUE>)
(<AND <VERB? BOARD CLIMB-UP CLIMB-ON> <EQUAL? ,HERE ,FOOT-OF-RAMP>>
<DO-WALK ,P?SOUTH>
<RTRUE>)>>
<OBJECT CREW
(IN FOOT-OF-RAMP)
(DESC "Aquadome crew")
(ADJECTIVE AQUADOME ENTIRE)
(SYNONYM CREW DIVERS)
(FLAGS VOWELBIT NDESCBIT)
(ACTION CREW-F)>
<ROUTINE CREW-F ()
<COND (<AND <OR <NOT ,DOME-AIR-BAD?>
<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>>>
<OR <AND <VERB? ASK-ABOUT>
<FSET? ,PRSO ,PERSON>
<IOBJ? CREW CREW-GLOBAL>>
<AND <VERB? WHAT> <DOBJ? CREW CREW-GLOBAL>>
<AND <VERB? TELL-ABOUT> <DOBJ? PLAYER>>>>
<TELL
"\"The crew consists of:|
Doctor Walt Horvak, marine biologist and first-aid medic;|
" D ,ANTRIM ", laser expert and frogman;|
" D ,SIEGEL ", electronics expert in charge of communications; and|
" D ,GREENUP " and " D ,LOWELL ", diver-technicians.\"" CR>)
(<AND <VERB? ASK ASK-ABOUT ASK-FOR TELL TELL-ABOUT>
<DOBJ? CREW>>
<TELL "You'd better talk to one crew member at a time." CR>
<RFATAL>)
(<AND <VERB? GOODBYE HELLO>
<DOBJ? CREW>>
<TELL D ,PRSO " nods at you." CR>)
(<VERB? DIAGNOSE EXAMINE>
<COND (,DOME-AIR-BAD?
<TELL
D ,BLY " and the two divers, Greenup and Lowell, are without
oxygen." CR>)
(T <TELL "All the crew members are okay now." CR>)>)>>
<OBJECT CREW-GLOBAL
(IN GLOBAL-OBJECTS)
(DESC "Aquadome crew")
(ADJECTIVE AQUADOME ENTIRE)
(SYNONYM CREW DIVERS)
(FLAGS VOWELBIT)
(ACTION CREW-GLOBAL-F)>
<ROUTINE CREW-GLOBAL-F ("AUX" L)
<COND (<AND <SPEAKING-VERB?>
<DOBJ? CREW-GLOBAL>>
<TELL "The " D ,CREW-GLOBAL>
<NOT-HERE-PERSON ,CREW>
<SETG P-CONT <>>
<RTRUE>)
(<VERB? WALK-TO>
<PERFORM ,PRSA ,CREW>
<RTRUE>)
(T <CREW-F>)>>
<OBJECT BADGE-GLOBAL
(IN GLOBAL-OBJECTS)
(DESC "badge")
(ADJECTIVE THIS THESE ;BILL BILL\'S GREENUP ;AMY AMY\'S LOWELL)
(SYNONYM BADGE BADGES)
(GENERIC GENERIC-BADGE-F)
(ACTION BADGE-GLOBAL-F)>
<OBJECT BADGE-GLOBAL-2
(IN GLOBAL-OBJECTS)
(DESC "badge")
(ADJECTIVE COMMANDER ;ZOE ZOE\'S BLY\'S ;MICK MICK\'S ANTRIM)
(SYNONYM BADGE BADGES)
(GENERIC GENERIC-BADGE-F)
(ACTION BADGE-GLOBAL-F)>
<OBJECT BADGE-GLOBAL-3
(IN GLOBAL-OBJECTS)
(DESC "badge")
(ADJECTIVE ;DOC DOC\'S ;WALT WALT\'S HORVAK ;MARV MARV\'S SIEGEL)
(SYNONYM BADGE BADGES)
(GENERIC GENERIC-BADGE-F)
(ACTION BADGE-GLOBAL-F)>
<ROUTINE GENERIC-BADGE-F (OBJ) ,BADGE-GLOBAL>
<ROUTINE BADGE-GLOBAL-F ()
<COND (<OR <NOT ,SUB-IN-DOME ;<IN-DOME? ,HERE>>
<NOT <FIND-FLAG ,HERE ,PERSON ,WINNER>>>
<NOT-HERE ,BADGE-GLOBAL-3>)
(<VERB? ANALYZE EXAMINE READ>
<EXAMINE-BADGE>
<CRLF>)>>
<ROUTINE EXAMINE-BADGE ()
<COND (,DOME-AIR-BAD?
<COND (<FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>
<TELL
"The badge is turning red! The air is becoming unbreathable!">)
(T <TELL
"The badge is less red now. The air is improving.">)>)
(T <TELL
"When a badge turns red, the air is no longer breathable.
It's not red now.">)>>
<GLOBAL DOME-AIR-BAD? <>>
<CONSTANT DOME-AIR-ONSET 11>
<CONSTANT INITIAL-DOME-AIR-BAD 1>
<CONSTANT EXCLAM-DOME-AIR-BAD 3>
<CONSTANT DOME-AIR-FIX-RATE 5>
<GLOBAL DOME-AIR-CRIME <>>
<GLOBAL HORVAK-FIXED-AIR <>>
<ROUTINE BAD-AIR? ()
<COND (<NOT ,DOME-AIR-BAD?> <RFALSE>)
(<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>> <RFALSE>)
(<AIR-SUPPLY-VERB?> <RFALSE>)
(T
<TELL "Shouldn't you fix the " D ,AIR-SUPPLY-SYSTEM " first?" CR>)>>
<ROUTINE TROUBLE-BREATHING? ()
<COND (<VERB? WAIT-FOR WAIT-UNTIL>
<RFALSE>)
(<OR <NOT <IN? ,OXYGEN-GEAR ,PLAYER>>
<NOT <FSET? ,OXYGEN-GEAR ,ONBIT>>>
<TELL "You are having ">
<COND (<NOT <G? 13 ,DOME-AIR-BAD?>>
<TELL "real ">)>
<TELL "trouble breathing." CR>)>>
<ROUTINE TIP-REPORTS? ()
<COND (<AND <NOT <==? ,HERE ,CENTER-OF-DOME>>
<NOT <CORRIDOR-LOOK ,AIR-SUPPLY-SYSTEM>>>
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE ,AIRLOCK>
<MOVE ,TIP ,AIRLOCK-WALL>)>
<TELL "Tip, who is standing near the exit, reports that ">)>>
<ROUTINE I-DOME-AIR ("OPTIONAL" (CALLED? <>) "AUX" X)
<COND (<FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>
<COND (<NOT ,DOME-AIR-BAD?>
<SETG DOME-AIR-BAD? ,INITIAL-DOME-AIR-BAD>
<SETG DOME-AIR-CRIME T>
;<COND (,DEBUG <TELL "[Air=" N ,DOME-AIR-BAD? "]" CR>)>
<ENABLE <QUEUE I-DOME-AIR -1>>
<SET X <VISIBLE? ,BLY>>
<FSET ,BLY ,MUNGBIT>
<FSET ,GREENUP ,MUNGBIT>
<FSET ,LOWELL ,MUNGBIT>
<COND (<NOT <TIP-REPORTS?>>
<TELL "Suddenly you realize that ">)>
<TELL
"Zoe is literally gasping for breath. Her face is turning reddish-purple!
She clutches her throat...|
Everyone">
<COND (.CALLED? T)
(<AND <IN? ,OXYGEN-GEAR ,PLAYER>
<FSET? ,OXYGEN-GEAR ,ONBIT>>
<TELL ", except you,">)
(T <TELL ", including yourself,">)>
<TELL " is having trouble breathing!" CR>
<RTRUE>)>
<TROUBLE-BREATHING?>
<SETG DOME-AIR-BAD? <+ 1 ,DOME-AIR-BAD?>>
;<COND (,DEBUG <TELL "[Air=" N ,DOME-AIR-BAD? "]" CR>)>
<COND (<==? 7 ,DOME-AIR-BAD?>
<TELL CR
"In 10 turns Bly, Greenup and Lowell, who were not carrying "
D ,OXYGEN-GEAR ", will suffocate from
lack of oxygen. In 20 turns, ">
<COND (<IN? ,OXYGEN-GEAR ,PLAYER> <TELL "you and the others">)
(T <TELL "those">)>
<TELL
" who do have " D ,OXYGEN-GEAR " will have exhausted their supply of
oxygen. Need we say more?" CR>)
(<==? 13 ,DOME-AIR-BAD?>
<TELL CR
"Zoe Bly and the two crew members without " D ,OXYGEN-GEAR " now
have only 4 TURNS left to live! Their lives depend on you, " FN "!" CR>
<COND (<AND <NOT <FSET? ,ACCESS-PLATE ,OPENBIT>>
<NOT <FSET? ,UNIVERSAL-TOOL ,TOUCHBIT>>>
<FSET ,UNIVERSAL-TOOL ,TOUCHBIT>
<FCLEAR ,UNIVERSAL-TOOL ,NDESCBIT>
<MOVE ,UNIVERSAL-TOOL ,PLAYER>
<TELL "Tip">
<COND (<NOT <IN? ,TIP ,HERE>>
<MOVE ,TIP ,HERE>
<TELL " runs up and">)>
<TELL
" gives you a " D ,UNIVERSAL-TOOL " and says, \"Here, " FN>
<COND (<FSET? ,CENTER-OF-DOME ,TOUCHBIT>
<TELL
", open the cylinder with this! It'll fit anything!\"" CR>)
(T <TELL
", maybe you can use this somehow.\"" CR>)>)>
<RTRUE>)
(<==? 17 ,DOME-AIR-BAD?>
<SET X <EQUAL? <LOC ,SPECIAL-TOOL> ,BLY-OFFICE ,HORVAK>>
<MOVE ,HORVAK ,CENTER-OF-DOME>
<TELL "|
At this desperate moment, ">
<TIP-REPORTS?>
<TELL D ,HORVAK " runs from the " D ,BLY-OFFICE>
<COND (<AND .X
<EQUAL? <LOC ,ELECTROLYTE-RELAY>
,AIR-SUPPLY-SYSTEM ,CENTER-OF-DOME ,HORVAK>>
<ENABLE <QUEUE I-BLY-PRIVATELY 3>>
<MOVE ,SPECIAL-TOOL ,HORVAK>
<FCLEAR ,SPECIAL-TOOL ,INVISIBLE>
<FSET ,SPECIAL-TOOL ,TOUCHBIT>
<REMOVE ,SPECIAL-TOOL-GLOBAL>
<FIX-AIR-SUPPLY>
<SETG HORVAK-FIXED-AIR T>
<TELL
". He's clutching an oddly-shaped gadget.|
">
<TIP-SAYS>
<TELL
"Hey, that's the " D ,SPECIAL-TOOL "!\"|
">
<COND (<NOT <FSET? ,ACCESS-PLATE ,OPENBIT>>
<FSET ,ACCESS-PLATE ,OPENBIT>
<FSET ,AIR-SUPPLY-SYSTEM ,OPENBIT>
<TELL
"Using the " D ,SPECIAL-TOOL ", " D ,HORVAK " quickly opens the "
D ,ACCESS-PLATE ". ">)>
<TELL
"Inside the cylinder, the " D ,ELECTROLYTE-RELAY " has come unscrewed and
fallen out of its socket. Horvak">
<COND (<NOT <IN? ,ELECTROLYTE-RELAY ,HORVAK>>
<TELL " takes it and">)>
<TELL
" screws it back in place; and within seconds, a fresh supply of oxygen
is flowing out into the " D ,AQUADOME "." CR>)
(T
<TELL ". He "
<COND (<==? ,HERE <LOC ,HORVAK>> "say")
(T "shout")>
"s, \"I never wanted it to go this far! I sabotaged the " D ,AIR-SUPPLY-SYSTEM
" to embarrass " D ,BLY ", but now I can't find the ">
<COND (.X <TELL D ,ELECTROLYTE-RELAY>)
(T <TELL D ,SPECIAL-TOOL>)>
<TELL
" to fix it!\"|
As Doc breaks down in tears and Bly suffocates, you realize there's no
point in continuing your mission.">
<FINISH>)>)>)
(T
<SETG DOME-AIR-BAD? <- ,DOME-AIR-BAD? ,DOME-AIR-FIX-RATE>>
;<COND (,DEBUG <TELL "[Air=" N ,DOME-AIR-BAD? "]" CR>)>
<COND (<NOT <L? 0 ,DOME-AIR-BAD?>>
<DISABLE <INT I-DOME-AIR>>
<ENABLE <QUEUE I-ANTRIM-TO-SUB 10>>
<SETG DOME-AIR-BAD? <>>
;<COND (,DEBUG <TELL "[Air=" N ,DOME-AIR-BAD? "]" CR>)>
<COND (<FSET? ,BLY ,MUNGBIT>
<FCLEAR ,BLY ,MUNGBIT>
<FCLEAR ,GREENUP ,MUNGBIT>
<FCLEAR ,LOWELL ,MUNGBIT>
<COND (<AND <VISIBLE? ,BLY>
<VISIBLE? ,GREENUP>
<VISIBLE? ,LOWELL>>
<COND (<NOT ,HORVAK-FIXED-AIR>
<TELL CR
D ,HORVAK " has just returned from the " D ,BLY-OFFICE ", where he went
to get Bly's " D ,OXYGEN-GEAR ", but it's no longer needed." CR>)>
<TELL CR
D ,BLY " is sitting up and her normal color has returned. Ditto
for Greenup and Lowell, who collapsed. All are recovering from their
temporary lack of air." CR>
<TELL-HINT 41 ;11 ,ELECTROLYTE-RELAY>
<RTRUE>)>)>)>)>>
<ROOM FOOT-OF-RAMP
(IN ROOMS)
(DESC "reception area")
(ADJECTIVE RECEPTION)
(SYNONYM AREA ROOM)
(FLAGS RLANDBIT ONBIT)
(NORTH TO CENTER-OF-DOME)
(SOUTH TO AIRLOCK-WALL)
(UP TO AIRLOCK-WALL)
(WEST TO OUTSIDE-DORM)
(EAST TO OUTSIDE-ADMIN-BLDG)
(ACTION FOOT-OF-RAMP-F)
(GLOBAL AIRLOCK-LADDER AIR-SUPPLY-SYSTEM-GLOBAL)
;(LINE 2)
;(STATION FOOT-OF-RAMP)
(CORRIDOR *3000*)>
<ROUTINE FOOT-OF-RAMP-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-BEG>
<COND (<VERB? WALK>
<COND (<DOBJ? P?SOUTH P?UP>
<CHEERS?>
<RFALSE>)>)>)
(<==? .ARG ,M-ENTER>
<COND (<OR <READY-FOR-SNARK?>
,GREENUP-ESCAPE
,GREENUP-TRAPPED>
<MOVE ,BLY ,HERE>
<MOVE ,ANTRIM ,HERE>
<MOVE ,HORVAK ,HERE>
<MOVE ,SIEGEL ,HERE>
<MOVE ,LOWELL ,HERE>
<COND (<OR ,GREENUP-ESCAPE ,GREENUP-TRAPPED>
<TELL
"The rest of the " D ,CREW " are with you." CR>)
(T <TELL
D ,BLY " and the others gather to shake your hand and wish you
luck on your perilous mission." CR>)>)
(<NOT ,BLY-WELCOMED>
<SETG BLY-WELCOMED T>
<TELL D ,BLY " says, \"">
<BLY-WELCOME>
<TELL "\"" CR>)>)
(<==? .ARG ,M-LOOK>
<COND (<AND <CREW-5-TOGETHER?>
<IN? ,CREW ,FOOT-OF-RAMP>
<NOT <FSET? ,BLY ,MUNGBIT>>>
<COND (<NOT <FSET? ,CREW ,TOUCHBIT>>
<FSET ,CREW ,TOUCHBIT>
<ENABLE <QUEUE I-BLY-PRIVATELY 15>>
<TELL
"You're now face-to-face with Zoe Bly and the " D ,CREW ". They are wearing
badges which show the air quality in the " D ,AQUADOME "." CR>)
(T
<TELL "You're at the foot of the ladder. ">
<COND (<IN? ,BLY ,FOOT-OF-RAMP>
<TELL "Zoe Bly and t">)
(T <TELL "T">)>
<TELL "he " D ,CREW " are still here." CR>)>)
(T <TELL
"You're now at the foot of the ladder." CR>)>)
(<AND <==? .ARG ,M-END>
<==? ,EXCLAM-DOME-AIR-BAD ,DOME-AIR-BAD?>
<FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>>
<CRLF>
<BADGES-RED T>
<RTRUE>)>>
<GLOBAL BADGES-RED-SAID? <>>
<ROUTINE BADGES-RED ("OPTIONAL" (SHOUT? <>))
<COND (<NOT ,BADGES-RED-SAID?>
<SETG BADGES-RED-SAID? T>
<COND (.SHOUT? <TELL "Someone shouts, ">)>
<TELL
"\"Our badges are turning red! The air's bad! Everyone use your "
D ,OXYGEN-GEAR "!\"" CR>)>>
<ROOM OUTSIDE-DORM
(IN ROOMS)
(DESC ;"dorm" "southwest deck")
(ADJECTIVE SW FEMALE MALE DORM DORMITORY)
(SYNONYM DECK PORCH ENTRANCE)
(FLAGS RLANDBIT ONBIT)
(NORTH TO OUTSIDE-WORKSHOP)
(EAST TO FOOT-OF-RAMP)
(NE TO CENTER-OF-DOME)
(WEST TO WOMENS-QUARTERS IF WOMENS-QUARTERS-DOOR IS OPEN)
(SOUTH TO MENS-QUARTERS IF MENS-QUARTERS-DOOR IS OPEN)
(GLOBAL AIR-SUPPLY-SYSTEM-GLOBAL
WOMENS-QUARTERS-DOOR MENS-QUARTERS-DOOR)
;(LINE 2)
;(STATION OUTSIDE-DORM)
(CORRIDOR *6400*)
(ACTION OUTSIDE-DORM-F)>
<ROUTINE OUTSIDE-DORM-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<FROM-HERE ,P?WEST ,P?SOUTH ;"dorm">)>>
<ROUTINE FROM-HERE (DIR1 DIR2 ;PLACE)
<TELL "From here, you can go ">
<DIR-PRINT .DIR1 <>>
<TELL " or ">
<DIR-PRINT .DIR2 <>>
<TELL " into the building." CR>>
<OBJECT WOMENS-QUARTERS-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE RED)
(SYNONYM DOOR)
(DESC "red door")
(FLAGS DOORBIT)>
<ROOM WOMENS-QUARTERS
(IN ROOMS)
(DESC "female dorm" ;" living quarters")
(ADJECTIVE FEMALE ;LIVING)
(SYNONYM DORM DORMITORY ;QUARTERS AREA ROOM)
(FLAGS RLANDBIT ONBIT)
(EAST TO OUTSIDE-DORM IF WOMENS-QUARTERS-DOOR IS OPEN)
(OUT TO OUTSIDE-DORM IF WOMENS-QUARTERS-DOOR IS OPEN)
(GLOBAL WINDOW CHAIR WOMENS-QUARTERS-DOOR)
;(LINE 2)
;(STATION DORM)
(ACTION WOMENS-QUARTERS-F)>
<ROUTINE WOMENS-QUARTERS-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<QUARTERS-F ,WOMENS-QUARTERS "On each side">)>>
<OBJECT WOMENS-FURNITURE
(IN WOMENS-QUARTERS)
(DESC "furniture")
(ADJECTIVE COMMANDER ZOE\'S BLY\'S AMY\'S LOWELL)
(SYNONYM TABLE BUNK BED LOCKER)
(FLAGS SURFACEBIT NDESCBIT)
(CAPACITY 13)
(GENERIC GENERIC-FURNITURE-F)
(ACTION RANDOM-PSEUDO)>
<ROUTINE GENERIC-FURNITURE-F (OBJ)
<COND (,SUB-IN-TANK ,WORKBENCH) (T ,HORVAK-LOCKER)>>
<OBJECT MENS-QUARTERS-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE BLUE)
(SYNONYM DOOR)
(DESC "blue door")
(FLAGS DOORBIT)>
[
<ROOM MENS-QUARTERS
(IN ROOMS)
(DESC "male dorm" ;" living quarters")
(ADJECTIVE MALE ;LIVING)
(SYNONYM DORM DORMITORY ;QUARTERS AREA ROOM)
(FLAGS RLANDBIT ONBIT)
(OUT TO OUTSIDE-DORM IF MENS-QUARTERS-DOOR IS OPEN)
(NORTH TO OUTSIDE-DORM IF MENS-QUARTERS-DOOR IS OPEN)
(GLOBAL WINDOW CHAIR MENS-QUARTERS-DOOR)
;(LINE 2)
;(STATION DORM)
(ACTION MENS-QUARTERS-F)>
<ROUTINE MENS-QUARTERS-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<QUARTERS-F ,MENS-QUARTERS "In each corner">)>>
<ROUTINE QUARTERS-F (RM STR)
<TELL
"You're in the " D .RM ". " .STR " of the room is a
bunk and locker. In the center of the room are a table and chairs." CR>>
<OBJECT MENS-FURNITURE
(IN MENS-QUARTERS)
(DESC "furniture")
(ADJECTIVE DOC\'S ;WALT\'S HORVAK MARV\'S SIEGEL
MICK\'S ANTRIM BILL\'S GREENUP)
(SYNONYM TABLE BUNK BED FURNITURE ;LOCKER)
(FLAGS SURFACEBIT NDESCBIT)
(CAPACITY 13)
(GENERIC GENERIC-FURNITURE-F)
(ACTION RANDOM-PSEUDO)>
<OBJECT MENS-LOCKER
(IN MENS-QUARTERS)
(DESC "other locker")
(ADJECTIVE OTHER MARV\'S SIEGEL
MICK\'S ANTRIM BILL\'S GREENUP)
(SYNONYM LOCKER)
(FLAGS VOWELBIT NDESCBIT)
(GENERIC GENERIC-FURNITURE-F)
(ACTION RANDOM-PSEUDO)>
<OBJECT HORVAK-LOCKER
(IN MENS-QUARTERS)
(DESC "Horvak's locker")
(ADJECTIVE ;DOC DOC\'S ;WALT WALT\'S HORVAK DORM DORMITORY)
(SYNONYM LOCKER)
(FLAGS CONTBIT SEARCHBIT LOCKED NDESCBIT NARTICLEBIT)
(CAPACITY 13)
(GENERIC GENERIC-FURNITURE-F)
(ACTION HORVAK-LOCKER-F)>
<ROUTINE HORVAK-LOCKER-F ()
<COND (<AND <VERB? LOOK-INSIDE> <FSET? ,HORVAK-LOCKER ,OPENBIT>>
<TELL
"The locker contains mostly clothing, toilet articles and books.">
<COND (<IN? ,DIARY ,HORVAK-LOCKER>
<TELL " One of the books is labeled DIARY.">
<COND (<IN? ,PHOTO ,DIARY>
<FCLEAR ,PHOTO ,INVISIBLE>
<TELL
" Something has been inserted between its pages.">)>)>
<CRLF>)
(<AND <VERB? OPEN OPEN-WITH UNLOCK> <DOBJ? HORVAK-LOCKER>>
<COND (<FSET? ,HORVAK-LOCKER ,OPENBIT> <RFALSE>)
(<AND <FSET? ,HORVAK-LOCKER ,LOCKED>
<NOT <IOBJ? UNIVERSAL-TOOL>>>
<THIS-IS-IT ,HORVAK-KEY>
<TELL
"It's locked. The normal way to open its lock (which you yourself designed, " FN ") is with a key." CR>
<RTRUE>)>
<FCLEAR ,HORVAK-LOCKER ,LOCKED>
<FSET ,HORVAK-LOCKER ,OPENBIT>
<FSET ,DIARY ,TAKEBIT>
<PERFORM ,V?LOOK-INSIDE ,HORVAK-LOCKER>
<RTRUE>)>>
<OBJECT HORVAK-KEY
(IN GLOBAL-OBJECTS ;HORVAK)
(DESC "Horvak's key")
(ADJECTIVE ;DOC DOC\'S ;WALT WALT\'S HORVAK LOCKER)
(SYNONYM KEY)
(FLAGS TOOLBIT NDESCBIT NARTICLEBIT)
(ACTION HORVAK-KEY-F)>
<ROUTINE HORVAK-KEY-F ()
<COND (<OR <AND <IOBJ? HORVAK> <VERB? TAKE>>
<AND <DOBJ? HORVAK> <VERB? ASK-FOR SEARCH-FOR>>>
<COND (<==? ,WINNER ,PLAYER>
<TELL
"Be warned, " FN ", that he will never willingly surrender it.
You have no right to demand it without a search warrant.
The " D ,AQUADOME " is neither a military establishment
nor a ship at sea, so you could get in legal trouble." CR>)
(T
<HE-SHE-IT ,WINNER T "refuse">
<TELL
", " FN ". Do not pursue this any further, or you will lose the
respect and cooperation of the " D ,CREW ", and thereby abort your rescue
mission. If you attempt to use force, they may even mutiny and place you
under arrest." CR>)>)>>
<OBJECT DIARY
(IN HORVAK-LOCKER)
(DESC "diary")
(ADJECTIVE ;DOC DOC\'S ;WALT WALT\'S HORVAK)
(SYNONYM DIARY)
(FLAGS ;TAKEBIT CONTBIT SEARCHBIT READBIT)
(CAPACITY 5)
(ACTION DIARY-F)>
<ROUTINE DIARY-F ()
<COND (<AND <VERB? OPEN> <NOT <FSET? ,DIARY ,OPENBIT>> <IN? ,PHOTO ,DIARY>>
;<ENABLE <QUEUE I-TIP-SONAR-PLAN -1>>
<FSET ,DIARY ,OPENBIT>
<MOVE ,PHOTO ,HERE>
<TELL
"As you do so, a picture falls out. Oh, oh! It's a snapshot of Zoe Bly!" CR>)
(<VERB? READ LOOK-INSIDE>
<COND (<NOT <FSET? ,DIARY ,OPENBIT>>
<TELL "You must open it first." CR>)
(T <TELL
"You quickly discover references to Zoe Bly. It seems clear that "
D ,HORVAK " has fallen for Zoe. But her unsentimental manner is a
large obstacle.|
The last entry reads:|
\"If only I could find some way to break down that icy reserve of Zoe's,
and make her realize she's not just a scientific thinking machine or a
commanding officer...!|
There must be some way! She doesn't do everything by the rule book.
She even breaks regulations at times. If I can prove this and embarrass her,
maybe she'll realize she's just a human being like the rest of us -- and not
only a human being, but a warm, desirable woman...!\"|
">
<COND (<FSET? ,SPECIAL-TOOL ,TOUCHBIT> ;,DOME-AIR-CRIME
<TELL "|
Well! It sounds as if " D ,HORVAK " found the answer to his problem
by sabotaging the " D ,AIR-SUPPLY-SYSTEM " -- at a time when " D ,BLY
" was breaking regulations by not wearing her " D ,OXYGEN-GEAR
"!" CR>)>
<RTRUE>)>)>>
<OBJECT PHOTO
(IN DIARY)
(DESC "photograph")
(ADJECTIVE ;ZOE ZOE\'S BLY\'S ;DOC DOC\'S ;WALT WALT\'S HORVAK)
(SYNONYM PHOTO PHOTOGRAPH PICTURE SNAPSHOT)
(FLAGS TAKEBIT ;INVISIBLE)
(SIZE 1)
(ACTION PHOTO-F)>
<ROUTINE PHOTO-F ()
<COND (<VERB? ANALYZE EXAMINE ;READ TELL-ABOUT>
<TELL "It's a " D ,PHOTO " of " D ,BLY "." CR>)>>
]
<ROOM OUTSIDE-WORKSHOP
(IN ROOMS)
(DESC "northwest deck")
(ADJECTIVE NW WORKSHOP LAB LABORATORY)
(SYNONYM DECK PORCH ENTRANCE)
(FLAGS RLANDBIT ONBIT)
(EAST TO OUTSIDE-COMM-BLDG)
(SOUTH TO OUTSIDE-DORM)
(SE TO CENTER-OF-DOME)
(NORTH TO DOME-LAB IF DOME-LAB-DOOR IS OPEN)
(WEST TO WORKSHOP IF WORKSHOP-DOOR IS OPEN)
(GLOBAL AIR-SUPPLY-SYSTEM-GLOBAL WORKSHOP-DOOR DOME-LAB-DOOR)
;(LINE 3)
;(STATION OUTSIDE-WORKSHOP)
(CORRIDOR *14200*)
(ACTION OUTSIDE-WORKSHOP-F)>
<ROUTINE OUTSIDE-WORKSHOP-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<FROM-HERE ,P?WEST ,P?NORTH ;"building">)>>
<OBJECT WORKSHOP-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE WORKSHOP)
(SYNONYM DOOR)
(DESC "workshop door")
(FLAGS DOORBIT OPENBIT)>
<ROOM WORKSHOP
(IN ROOMS)
(DESC "workshop")
(ADJECTIVE WORK)
(SYNONYM WORKSHOP SHOP AREA ROOM)
(FLAGS RLANDBIT ONBIT)
(OUT TO OUTSIDE-WORKSHOP IF WORKSHOP-DOOR IS OPEN)
(EAST TO OUTSIDE-WORKSHOP IF WORKSHOP-DOOR IS OPEN)
(GLOBAL WINDOW CHAIR WORKSHOP-DOOR)
;(LINE 3)
;(STATION WORKSHOP)
(ACTION WORKSHOP-F)>
<ROUTINE WORKSHOP-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"The " D ,WORKSHOP " is equipped for mechanical repair work.
It contains assorted hand tools, machine tools, and spare parts." CR>)>>
<OBJECT WORKSHOP-STUFF
(IN WORKSHOP)
(ADJECTIVE ASSORTED HAND MACHIN SPARE WORKSHOP)
(SYNONYM TOOL ;TOOLS ;PART PARTS MATERIAL)
(DESC "workshop material")
(FLAGS NDESCBIT)
(GENERIC GENERIC-TOOL-F)
(ACTION WORKSHOP-STUFF-F)>
<ROUTINE WORKSHOP-STUFF-F ()
<COND (<VERB? MAKE>
<TELL
"That's too difficult, even for a famous young inventor." CR>)>>
<OBJECT DOME-LAB-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE LABORATORY)
(SYNONYM DOOR)
(DESC "laboratory door")
(FLAGS DOORBIT OPENBIT)>
<ROOM DOME-LAB
(IN ROOMS)
(DESC "Aquadome laboratory")
(ADJECTIVE ;DOC DOC\'S ;WALT WALT\'S HORVAK AQUADOME DOME)
(SYNONYM LAB LABORATORY)
(GENERIC GENERIC-LABORATORY-F)
(FLAGS RLANDBIT ONBIT ;NARTICLEBIT VOWELBIT)
(OUT TO OUTSIDE-WORKSHOP IF DOME-LAB-DOOR IS OPEN)
(SOUTH TO OUTSIDE-WORKSHOP IF DOME-LAB-DOOR IS OPEN)
(GLOBAL WINDOW CHAIR DOME-LAB-DOOR)
(PSEUDO "EQUIPM" RANDOM-PSEUDO "SUPPLIES" RANDOM-PSEUDO)
(ACTION DOME-LAB-F)
;(LINE 3)
;(STATION WORKSHOP)>
<GLOBAL HORVAK-TOLD-AH <>>
<ROUTINE DOME-LAB-F ("OPTIONAL" (RARG <>) MAGLOC)
<COND (<==? .RARG ,M-LOOK>
<TELL
"The " D ,DOME-LAB " is equipped for all sorts of marine biochemical
research. ">
<ROOM-IS-CROWDED>)
(<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>>>
<COND (<NOT <IN? ,BLY ,DOME-LAB>>
<MOVE ,BLY ,DOME-LAB>
<TELL D ,BLY " comes too." CR>)>
<COND (<AND <NOT <FSET? ,HORVAK ,BUSYBIT>>
<NOT <IN? ,HORVAK ,DOME-LAB>>>
<MOVE ,HORVAK ,DOME-LAB>
<TELL D ,HORVAK " comes too." CR>)>
<COND (<OR ,HORVAK-TOLD-AH
<NOT <FSET? ,DART ,MUNGBIT>>
<FSET? ,HORVAK ,BUSYBIT>>
<RTRUE>)>
<SETG HORVAK-TOLD-AH T>
<TELL CR
D ,HORVAK " says:|
\"" FN ", right after the Snark ceased
its attack, I detected a high concentration of A.H. molecules in the
" D ,GLOBAL-WATER " around the " D ,AQUADOME ". Have you ever heard of such a
phenomenon before?\"">
<COND (<NOT <YES?>>
<TELL
"\"I can make up an intense tranquilizer to subdue the " D ,SNARK ",\" "
D ,HORVAK " continues. \"You could use one of our aquatic dart
guns to inject it into the creature. You could mount the gun
on one of the " D ,SUB "'s " D ,CLAW "s.|
But without knowing the creature's biochemistry, there's no guarantee the
'trank' will work. Shall I go ahead and make some up, anyhow?\"">
<SET MAGLOC <YES?>>)>
<SET MAGLOC <META-LOC ,MAGAZINE>>
<COND (<NOT <IN-DOME? .MAGLOC>> <RTRUE>)>
<TIP-SAYS>
<TELL
"Wait a minute! Wasn't there something about A.H.
molecules in that " D ,MAGAZINE "? Shall ">
<COND (<EQUAL? .MAGLOC ,HERE>
<TELL "we">)
(T
<TELL "I get it and">)>
<TELL " see?\"">
<THIS-IS-IT ,MAGAZINE>
<COND (<YES?>
<COND (<NOT <IN? ,MAGAZINE ,PLAYER>>
<MOVE ,MAGAZINE ,PLAYER>
<TELL "Tip ">
<COND (<NOT <EQUAL? .MAGLOC ,HERE>>
<TELL "returns quickly and ">)>
<TELL "hands you the " D ,MAGAZINE ". ">)>
<THIS-IS-IT ,HORVAK>
<TELL
D ,HORVAK " looks interested. \"I'd like to see that.\"" CR>)>
<RTRUE>)>>
<ROOM OUTSIDE-COMM-BLDG
(IN ROOMS)
(DESC ;"comm bldg" "northeast deck")
(ADJECTIVE NE COMM COMMUN BLDG BUILDI GALLEY)
(SYNONYM DECK PORCH ENTRANCE)
(FLAGS RLANDBIT ONBIT)
(WEST TO OUTSIDE-WORKSHOP)
(SOUTH TO OUTSIDE-ADMIN-BLDG)
(SW TO CENTER-OF-DOME)
(NORTH TO COMM-BLDG IF COMM-BLDG-DOOR IS OPEN)
(EAST TO GALLEY IF GALLEY-DOOR IS OPEN)
(GLOBAL AIR-SUPPLY-SYSTEM-GLOBAL COMM-BLDG-DOOR GALLEY-DOOR)
;(LINE 3)
;(STATION OUTSIDE-COMM-BLDG)
(CORRIDOR *30400*)
(ACTION OUTSIDE-COMM-BLDG-F)>
<ROUTINE OUTSIDE-COMM-BLDG-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<FROM-HERE ,P?EAST ,P?NORTH ;"building">)>>
<OBJECT COMM-BLDG-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE COMM COMMUN CENTER CENTRE)
(SYNONYM DOOR)
(DESC "comm center door")
(FLAGS DOORBIT OPENBIT)>
<ROOM COMM-BLDG
(IN ROOMS)
(DESC "comm center")
(ADJECTIVE COMM COMMUN SONAR)
(SYNONYM CENTER CENTRE ;"BLDG BUILDI" AREA ROOM)
(FLAGS RLANDBIT ONBIT)
(OUT TO OUTSIDE-COMM-BLDG IF COMM-BLDG-DOOR IS OPEN)
(SOUTH TO OUTSIDE-COMM-BLDG IF COMM-BLDG-DOOR IS OPEN)
(GLOBAL WINDOW CHAIR COMM-BLDG-DOOR
TEST-BUTTON CONTROLS VIDEOPHONE VIDEOPHONE-2 ALARM)
(GENERIC GENERIC-CENTER-F)
;(LINE 3)
;(STATION COMM-BLDG)
(ACTION COMM-BLDG-F)>
<ROUTINE COMM-BLDG-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"The " D ,COMM-BLDG " has both a " D ,VIDEOPHONE " for
communicating with other places and the " D ,SONAR-EQUIPMENT " for
detecting objects in the " D ,GLOBAL-WATER " around the dome." CR>)>>
<OBJECT SONAR-EQUIPMENT
(IN COMM-BLDG)
(DESC "Aquadome sonar equipment")
(ADJECTIVE AQUADOME SONAR)
(SYNONYM SONAR SYSTEM EQUIPM SCREEN ;TRANSDUCER)
(FLAGS SURFACEBIT OPENBIT ONBIT ;ON?BIT VOWELBIT NDESCBIT NARTICLEBIT)
(CAPACITY 19)
(ACTION SONAR-EQUIPMENT-F)>
<ROUTINE SONAR-EQUIPMENT-F ()
<COND ;(<VERB? LAMP-ON> <ALREADY ,SONAR-EQUIPMENT "on">)
(<VERB? LAMP-OFF> <TELL "It should stay on all the time." CR>)
(<VERB? ANALYZE EXAMINE READ LOOK-INSIDE LOOK-ON TELL-ABOUT>
<TELL
"The " D ,SONAR-EQUIPMENT " detects objects in the " D ,GLOBAL-WATER "
near the " D ,AQUADOME "." CR>)
(<AND <VERB? TIE-TO> <IOBJ? SONAR-EQUIPMENT>>
<PERFORM ,V?PUT ,PRSO ,PRSI>
<RTRUE>)>>
<OBJECT MICROPHONE-DOME
(IN SONAR-EQUIPMENT)
(ADJECTIVE ;VIDEO ;YOUR HAND)
(SYNONYM MIKE ;VIDEOPHONE ;PHONE MICROPHONE)
(DESC "microphone" ;"hand mike")
(FLAGS TAKEBIT ON?BIT NDESCBIT)
(GENERIC GENERIC-MICROPHONE-F)
(ACTION MICROPHONE-DOME-F)>
<ROUTINE MICROPHONE-DOME-F () <MICROPHONE-F T>>
<OBJECT GALLEY-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE GALLEY)
(SYNONYM DOOR)
(DESC "galley door")
(FLAGS DOORBIT OPENBIT)>
<ROOM GALLEY
(IN ROOMS)
(DESC "galley")
(SYNONYM GALLEY MESS)
(FLAGS RLANDBIT ONBIT)
(OUT TO OUTSIDE-COMM-BLDG IF GALLEY-DOOR IS OPEN)
(WEST TO OUTSIDE-COMM-BLDG IF GALLEY-DOOR IS OPEN)
(GLOBAL WINDOW CHAIR GALLEY-DOOR)
;(LINE 3)
;(STATION COMM-BLDG)
(ACTION GALLEY-F)>
<ROUTINE GALLEY-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"This room serves as both galley and mess;
the crew can both prepare food and eat it here." CR>)>>
<ROOM OUTSIDE-ADMIN-BLDG
(IN ROOMS)
(DESC ;"admin bldg" "southeast deck")
(ADJECTIVE SE ADMIN ADMINI BLDG BUILDI OFFICE STORAGE)
(SYNONYM DECK PORCH ENTRANCE)
(FLAGS RLANDBIT ONBIT)
(WEST TO FOOT-OF-RAMP)
(NORTH TO OUTSIDE-COMM-BLDG)
(NW TO CENTER-OF-DOME)
(EAST TO BLY-OFFICE IF BLY-DOOR IS OPEN)
(SOUTH TO DOME-STORAGE IF DOME-STORAGE-DOOR IS OPEN)
(GLOBAL BLY-DOOR DOME-STORAGE-DOOR AIR-SUPPLY-SYSTEM-GLOBAL)
;(LINE 2)
;(STATION OUTSIDE-ADMIN-BLDG)
(CORRIDOR *22200*)
(ACTION OUTSIDE-ADMIN-BLDG-F)>
<ROUTINE OUTSIDE-ADMIN-BLDG-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<FROM-HERE ,P?EAST ,P?SOUTH ;"building">)>>
<OBJECT BLY-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE ;ZOE ZOE\'S BLY\'S AQUADOME DOME OFFICE)
(SYNONYM DOOR)
(DESC "office door")
(FLAGS DOORBIT VOWELBIT)>
[
<ROOM BLY-OFFICE
(IN ROOMS)
(DESC "Aquadome office")
(ADJECTIVE ;ZOE ZOE\'S BLY\'S AQUADOME DOME ;YOUR)
(SYNONYM OFFICE)
(FLAGS RLANDBIT ONBIT ;NARTICLEBIT VOWELBIT)
(WEST TO OUTSIDE-ADMIN-BLDG IF BLY-DOOR IS OPEN)
(OUT TO OUTSIDE-ADMIN-BLDG IF BLY-DOOR IS OPEN)
;(LINE 2)
;(STATION ADMIN-BLDG)
(GLOBAL BLY-DOOR AIR-SUPPLY-SYSTEM-GLOBAL WINDOW CHAIR
OPEN-GATE-BUTTON FILL-TANK-BUTTON)
(GENERIC GENERIC-OFFICE-F)
(ACTION BLY-OFFICE-F)>
<GLOBAL ZOE-MENTIONED-EVIDENCE <>>
<ROUTINE BLY-OFFICE-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-LOOK>
<TELL
"The " D ,BLY-OFFICE " is small but tidy, with a single door leading out
and a good view of the ocean through the " D ,WINDOW "." CR>)
(<AND <==? .ARG ,M-ENTER>
<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>>>
<COND (<AND <IN? ,BLY ,BLY-OFFICE>
<NOT ,GREENUP-ESCAPE>
<NOT ,GREENUP-TRAPPED>
<NOT ,GREENUP-CUFFED>
<NOT ,ZOE-MENTIONED-EVIDENCE>>
<FCLEAR ,BLY ,NDESCBIT>
<TELL "As you enter the office, ">
<ZOE-MENTIONS-EVIDENCE>)
(<AND ,GREENUP-ESCAPE <NOT <IN? ,BLY ,BLY-OFFICE>>>
<MOVE ,BLY ,BLY-OFFICE>
<TELL "Zoe comes with you." CR>)>)
(<AND <==? .ARG ,M-BEG> <EXIT-VERB?>>
<COND (,GREENUP-ESCAPE
<HE-SHE-IT ,WINNER T>
<TELL "'d better stay here and trap Greenup." CR>)
(<AND <FSET? ,SPECIAL-TOOL ,INVISIBLE> <==? ,WINNER ,PLAYER>>
<TELL "As you start to leave, you notice ">
<SPECIAL-TOOL-VISIBLE>)>)
(<AND <VERB? SEARCH SEARCH-FOR> <FSET? ,SPECIAL-TOOL ,INVISIBLE>>
<TELL "You find ">
<SPECIAL-TOOL-VISIBLE>)>>
<ROUTINE SPECIAL-TOOL-VISIBLE ()
<FCLEAR ,SPECIAL-TOOL ,INVISIBLE>
<FSET ,SPECIAL-TOOL ,TOUCHBIT>
<REMOVE ,SPECIAL-TOOL-GLOBAL>
<THIS-IS-IT ,SPECIAL-TOOL>
<TELL
"an oddly shaped metallic object lying under Zoe's desk. It must
be the " D ,SPECIAL-TOOL "!" CR>>
<ROUTINE ZOE-MENTIONS-EVIDENCE ()
<SETG ZOE-MENTIONED-EVIDENCE T>
<MOVE ,TRAITOR ,GLOBAL-OBJECTS>
;<FCLEAR ,EVIDENCE ,INVISIBLE>
<THIS-IS-IT ,EVIDENCE>
<ENABLE <QUEUE I-BLY-SAYS 6>>
<SAID-TO ,BLY>
<TELL "Zoe">
<COND (<FSET? ,BLY-DOOR ,OPENBIT>
<FCLEAR ,BLY-DOOR ,OPENBIT>
<TELL " closes the door and">)>
<TELL " says:|
\"There's a " D ,TRAITOR " here at the " D ,AQUADOME ", " FN "! ">
<COND (,DOME-AIR-CRIME
<TELL
"I'm not saying that just because the " D ,AIR-SUPPLY-SYSTEM
" was sabotaged. ">)>
<TELL "I discovered "
<COND (,DOME-AIR-CRIME "other ") (T "the ")>
D ,EVIDENCE " after we talked on the " D ,VIDEOPHONE
"!\"" CR>>
<OBJECT BLY-DESK
(IN BLY-OFFICE)
(ADJECTIVE ;ZOE ZOE\'S BLY\'S DESK)
(SYNONYM DESK DRAWER)
(DESC "Bly's desk")
(FLAGS NDESCBIT CONTBIT SEARCHBIT NARTICLEBIT)
(CAPACITY 99)
(GENERIC GENERIC-DESK-F)
(ACTION BLY-DESK-F)>
<ROUTINE BLY-DESK-F ()
<COND (<VERB? LOOK-UNDER>
<COND (<NOT <FSET? ,SPECIAL-TOOL ,TOUCHBIT>>
<TELL "There's ">
<SPECIAL-TOOL-VISIBLE>
;<RFALSE>)>)>>
<OBJECT BLACK-BOX
;(IN BLY-DESK)
(DESC "black box")
(ADJECTIVE SMALL ELECTR BLACK BOX)
(SYNONYM COVER BOX DEVICE)
(FLAGS TAKEBIT CONTBIT SEARCHBIT)
(CAPACITY 3)
(SIZE 5)
(ACTION BLACK-BOX-F)>
<GLOBAL BLACK-BOX-EXAMINED <>>
<ROUTINE BLACK-BOX-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<COND (<FSET? ,BLACK-BOX ,OPENBIT>
<SETG BLACK-BOX-EXAMINED T>
<TELL
"After a brief study of the " D ,BLACK-CIRCUITRY
", you deduce its purpose: it was
designed to change the sonar output so the ultrasonic pulses make a more
complex pattern (for example BURPETY BURP B'DURP) instead of just a simple,
clear-cut BURP. This would also make fuzzier blips." CR>)
(T <TELL
"You'll need a suitable tool to open its cover." CR>)>)
(<VERB? OPEN OPEN-WITH>
<COND (<FSET? ,BLACK-BOX ,OPENBIT>
<ALREADY ,BLACK-BOX "open">)
(<IOBJ? UNIVERSAL-TOOL>
<OKAY ,BLACK-BOX "open">)
(T
<TELL "You can't open it with">
<COND (,PRSI <TELL THE-PRSI>) (T <TELL " your bare hands">)>
<TELL "!" CR>)>)>>
<OBJECT BLACK-CIRCUITRY
(IN BLACK-BOX)
(DESC "circuit")
(SYNONYM CIRCUIT)
(ACTION BLACK-CIRCUITRY-F)>
<ROUTINE BLACK-CIRCUITRY-F ()
<COND (<DIVESTMENT? ,BLACK-CIRCUITRY>
<PERFORM ,PRSA ,BLACK-BOX ,PRSI>
<RTRUE>)>>
<OBJECT STATION-MONITOR
(DESC "station monitor")
(IN BLY-OFFICE)
(ADJECTIVE STATION)
(SYNONYM MONITOR)
(FLAGS NDESCBIT ONBIT)
(ACTION STATION-MONITOR-F)>
<ROUTINE STATION-MONITOR-F ()
<COND (<VERB? ANALYZE EXAMINE READ>
<COND (,GREENUP-ESCAPE
<ENABLE <QUEUE I-GREENUP-ESCAPE -1>>
<COND (<EQUAL? ,GREENUP-ESCAPE 1>
<TELL
"The monitor screen shows Greenup's head just coming into view
above the top of the " D ,AIRLOCK
"'s west wall, as he climbs the outside ladder.|
">
<COND (<NOT <FSET? ,AIRLOCK-ROOF ,OPENBIT>>
<TELL
"But since the " D ,AIRLOCK-ROOF " is closed,
Greenup can't get into the " D ,SUB " to escape. ">
<GREENUP-CUFF>
<RTRUE>)
(T <TELL
"Once he reaches the top of this wall, he will come down the inside
ladder to the " D ,SUB "." CR>)>)
(T <RTRUE> ;"output from I-GREENUP-ESCAPE")>)
(T <TELL
D ,BLY " uses this monitor to check on activities in the " D ,AQUADOME "."
CR>)>)>>
<OBJECT AIRLOCK-ELECTRICITY
(DESC ;"airlock" "docking tank electricity")
(IN BLY-OFFICE)
(ADJECTIVE DOCKING TANK AIRLOCK)
(SYNONYM ELECTR SUPPLY POWER)
(FLAGS ;VOWELBIT NDESCBIT ON?BIT ONBIT)
(ACTION AIRLOCK-ELECTRICITY-F)>
<ROUTINE AIRLOCK-ELECTRICITY-F ()
<COND (<VERB? CUT>
<PERFORM ,V?LAMP-OFF ,PRSO>
<RTRUE>)
(<VERB? LAMP-OFF>
<COND (<AND ,GREENUP-ESCAPE ;<G? 5 ,GREENUP-ESCAPE>>
<FCLEAR ,AIRLOCK-ELECTRICITY ,ONBIT>
<TELL
"Very good, " FN "! With the " D ,AIRLOCK-ELECTRICITY " off, the " D
,AIRLOCK-HATCH " won't respond to command signals from the " D ,SUB "
and will remain closed.|
">
<GREENUP-CUFF>
<RTRUE>)>)>>
<OBJECT CONTROLS-OFFICE
(IN BLY-OFFICE)
(DESC "docking tank control panel")
(ADJECTIVE DOCKING TANK CONTROL)
(SYNONYM CONTROL PANEL KNOB KNOBS)
(FLAGS NDESCBIT)
(ACTION CONTROLS-OFFICE-F)>
<ROUTINE CONTROLS-OFFICE-F ()
<COND (<VERB? CUT LAMP-OFF>
<PERFORM ,V?LAMP-OFF ,AIRLOCK-ELECTRICITY>
<RTRUE>)
(<VERB? ANALYZE EXAMINE READ>
<TELL
"MAIN OPERATING CONTROLS:|
">
<FIXED-FONT-ON>
<TELL D ,AIRLOCK-ROOF ": "
<COND (<FSET? ,AIRLOCK-ROOF ,OPENBIT> "open") (T "closed")> CR
D ,FILL-TANK-BUTTON " : " <TANK-STATUS> CR
D ,OPEN-GATE-BUTTON " : " <GATE-STATUS> CR>
<FIXED-FONT-OFF>
<RTRUE>)>>
]
<OBJECT DOME-STORAGE-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE STORAGE)
(SYNONYM DOOR)
(DESC "storage door")
(FLAGS DOORBIT OPENBIT)>
<ROOM DOME-STORAGE
(IN ROOMS)
(DESC "storage room")
(ADJECTIVE STORAGE SUPPLY)
(SYNONYM ROOM AREA)
(FLAGS RLANDBIT ONBIT)
(NORTH TO OUTSIDE-ADMIN-BLDG IF DOME-STORAGE-DOOR IS OPEN)
(OUT TO OUTSIDE-ADMIN-BLDG IF DOME-STORAGE-DOOR IS OPEN)
;(LINE 2)
;(STATION ADMIN-BLDG)
(GLOBAL DOME-STORAGE-DOOR WINDOW AIR-SUPPLY-SYSTEM-GLOBAL)
(PSEUDO "EQUIPM" RANDOM-PSEUDO "SUPPLIES" RANDOM-PSEUDO)
(GENERIC GENERIC-STORAGE-ROOM-F)
(ACTION DOME-STORAGE-F)>
<ROUTINE DOME-STORAGE-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<ROOM-IS-CROWDED>)>>
<ROUTINE ROOM-IS-CROWDED ()
<TELL
"The room is crowded with supplies and equipment. If you
want to find something, you'll have to search for it." CR>>
<OBJECT ESCAPE-POD-UNIT
(DESC "Emergency Survival Unit") ;"Escape Pod Ejector Unit"
(IN DOME-STORAGE ;GLOBAL-OBJECTS)
(ADJECTIVE EMERGE SURVIVAL)
(SYNONYM UNIT ;KIT)
(FLAGS CONTBIT SEARCHBIT ;OPENBIT VOWELBIT NDESCBIT TAKEBIT)
(CAPACITY 1)
;(FDESC
"The newly-installed Emergency Survival Unit is under the seats.")
(TEXT "(You'll find that information in your SEASTALKER package.)")
(VALUE 5)
(ACTION ESCAPE-POD-UNIT-F)>
<ROUTINE I-CHECK-POD ()
<COND (<AND <IN? ,SYRINGE ,ESCAPE-POD-UNIT> <FSET? ,SYRINGE ,MUNGBIT>>
<COND (,SUB-IN-DOME <TELL-HINT 51 ;12 ,ESCAPE-POD-UNIT>)>
<ENABLE <QUEUE I-CHECK-POD 7>>
<RFALSE>)>>
<ROUTINE ESCAPE-POD-UNIT-F ()
<COND (<REMOTE-VERB?> <RFALSE>)
;(<NOT <IN? ,ESCAPE-POD-UNIT ,HERE>>
<NOT-HERE ,ESCAPE-POD-UNIT>)
(<IN? ,ESCAPE-POD-UNIT ,SUB>
<COND (<VERB? ANALYZE EXAMINE>
<TELL
"A brief inspection under your seat leads to a horrifying discovery! A
body-heat sensor was substituted for the electronic monitor, and a wire
leads from the sensor to ">
<COND (<IN? ,SYRINGE ,ESCAPE-POD-UNIT>
<TELL "the " D ,SYRINGE>)
(T <TELL "where the " D ,SYRINGE " was">)>
<TELL ".|
Tip reports that the part under his seat appears to be okay.">
<COND (<AND <FSET? ,SYRINGE ,MUNGBIT>
<IN? ,SYRINGE ,ESCAPE-POD-UNIT>>
<TELL
" \"But I sure don't like the looks of that " D ,SYRINGE " in YOUR part, "
FN "!\" he adds. \"Let's take it to " D ,HORVAK " to analyze it.\"">)>
<CRLF>)
(<VERB? FIX>
<TELL "Maybe " D ,HORVAK " can do that." CR>)>)>>
<OBJECT SYRINGE
(IN ESCAPE-POD-UNIT)
(DESC "hypodermic syringe")
(ADJECTIVE HYPO HYPODERMIC THIS)
(SYNONYM SYRINGE CONTENTS NEEDLE)
(FLAGS TAKEBIT WEAPONBIT)
(SIZE 1)
;(TEXT "It's hard to tell anything by just looking at it.")
(ACTION SYRINGE-F)>
<ROUTINE SYRINGE-F ()
<COND (<DOBJ? SYRINGE>
<COND (<VERB? ANALYZE EXAMINE FIX>
<TELL "Maybe " D ,HORVAK " can do that." CR>)
(<VERB? TAKE>
<FSET ,ESCAPE-POD-UNIT ,NDESCBIT>
<SETG TEST-BUTTON-READOUT ,TEST-BUTTON-NORMAL>
<RFALSE>)
(<AND <VERB? PUT> <IOBJ? ESCAPE-POD-UNIT>>
<FCLEAR ,ESCAPE-POD-UNIT ,NDESCBIT>
<SETG TEST-BUTTON-READOUT ,TEST-BUTTON-POD>
<RFALSE>)>)>>
<OBJECT FINE-GRID
(IN DOME-STORAGE ;GLOBAL-OBJECTS)
(DESC "fine grid")
(ADJECTIVE FINE)
(SYNONYM GRID GRIDS)
(FLAGS NDESCBIT TAKEBIT)
(ACTION FINE-GRID-F)>
<ROUTINE FINE-GRID-F ()
<COND ;(<MOUNTING-VERB? ,FINE-GRID>
<SHOULD-ASK ,TIP>
<RTRUE>)
(<VERB? FIND>
<COND (,FINE-SONAR <TELL "It's installed in the " D ,SUB "." CR>)>)>>
<ROOM CENTER-OF-DOME
(IN ROOMS)
(DESC "dome center")
(ADJECTIVE DOME)
(SYNONYM CENTER CENTRE)
(FLAGS RLANDBIT ONBIT)
(NW TO OUTSIDE-WORKSHOP)
(NE TO OUTSIDE-COMM-BLDG)
(SW TO OUTSIDE-DORM)
(SE TO OUTSIDE-ADMIN-BLDG)
(SOUTH TO FOOT-OF-RAMP)
(GLOBAL AIR-SUPPLY-SYSTEM-GLOBAL)
(GENERIC GENERIC-CENTER-F)
(ACTION CENTER-OF-DOME-F)
;(LINE 3)
;(STATION CENTER-OF-DOME)
(CORRIDOR *1600*)>
<ROUTINE CENTER-OF-DOME-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-LOOK>
<TELL
"You're in the very center of the " D ,AQUADOME ", where the " D
,AIR-SUPPLY-SYSTEM " rises like a tower, almost to the top of the dome
itself." CR>)
;(<==? .ARG ,M-BEG>
<COND (<AND <VERB? RUB> <DOBJ? AIR>>
<TELL
"You can feel a definite outflow of air near the base of the cylinder.|
Oxygen and/or some other gas or gases is being generated, and
the blower is forcing this into the dome's atmosphere.|
But is this output good, breathable oxygen?" CR>)>)>>
<OBJECT AIR-SUPPLY-SYSTEM-GLOBAL
(IN LOCAL-GLOBALS)
(DESC "Air Supply System")
(ADJECTIVE AIR OXYGEN SUPPLY AQUADOME DOME STATION)
(SYNONYM SUPPLY SYSTEM CYLINDER HOUSING)
(FLAGS VOWELBIT)
(ACTION AIR-SUPPLY-SYSTEM-F)>
<OBJECT AIR-SUPPLY-SYSTEM
(IN CENTER-OF-DOME)
(DESC "Air Supply System")
(ADJECTIVE AIR OXYGEN SUPPLY AQUADOME DOME STATION)
(SYNONYM SUPPLY SYSTEM CYLINDER SIGN ;HOUSING)
(FLAGS NDESCBIT VOWELBIT CONTBIT ;SEARCHBIT MUNGBIT READBIT)
(CAPACITY 9)
(VALUE 5)
(ACTION AIR-SUPPLY-SYSTEM-F)>
<ROUTINE AIR-SUPPLY-SYSTEM-F ()
<COND (<VERB? ANALYZE>
<TELL "How do you propose to do that?" CR>)
(<VERB? EXAMINE LOOK-INSIDE READ>
<COND (<EQUAL? ,HERE ,CENTER-OF-DOME>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT>
<COND (<FSET? ,ELECTROLYTE-RELAY ,MUNGBIT>
<TELL
"You notice an " D ,EMPTY-SPACE " in the complicated assembly facing you.
Something has been unscrewed from this space!" CR>
<COND(<IN? ,ELECTROLYTE-RELAY ,AIR-SUPPLY-SYSTEM>
<THIS-IS-IT ,ELECTROLYTE-RELAY>
<TELL
"Something is lying at the base of the cylinder, just inside the
housing." CR>)>)
(T <TELL
"There's a lot of complicated machinery inside." CR>)>)
(T <TELL
"The first thing you notice is a stenciled sign saying: ">
<READ-AIR-SUPPLY>)>)
(T <TOO-FAR-AWAY ,AIR-SUPPLY-SYSTEM>)>)
(<VERB? FIND WALK-TO>
<COND (<DOBJ? AIR-SUPPLY-SYSTEM-GLOBAL>
<PERFORM ,PRSA ,AIR-SUPPLY-SYSTEM ,PRSI>
<RTRUE>)>)
(<VERB? FIX>
<TELL
"How do you propose doing that, when you don't know what's wrong with it?"
CR>)
(<VERB? OPEN OPEN-WITH CLOSE>
<PERFORM ,PRSA ,ACCESS-PLATE ,PRSI>
<RTRUE>)
;(<AND <VERB? TELL-ABOUT> <DOBJ? PLAYER>>
<TELL
"May we suggest that the best way to find out about the system is to
examine it." CR>)>>
<ROUTINE READ-AIR-SUPPLY ()
<TELL
"\"To repair " D ,AIR-SUPPLY-SYSTEM ", first open " D ,ACCESS-PLATE "
with " D ,SPECIAL-TOOL " hanging on hook at right.\" An arrow points to
this hook." CR>>
<ROUTINE AIR-SUPPLY-VERB? ()
<COND (<VERB? GIVE FIND TAKE YELL-FOR>
<COND (<DOBJ? UNIVERSAL-TOOL SPECIAL-TOOL SPECIAL-TOOL-GLOBAL
AIR-SUPPLY-SYSTEM AIR-SUPPLY-SYSTEM-GLOBAL>
<RTRUE>)>)
(<VERB? SGIVE ASK-ABOUT ASK-FOR TELL-ABOUT>
<COND (<IOBJ? UNIVERSAL-TOOL SPECIAL-TOOL SPECIAL-TOOL-GLOBAL
AIR-SUPPLY-SYSTEM AIR-SUPPLY-SYSTEM-GLOBAL>
<RTRUE>)>)>>
<OBJECT ACCESS-PLATE
(IN CENTER-OF-DOME)
(DESC "access door")
(ADJECTIVE ACCESS)
(SYNONYM DOOR PLATE PANEL)
(FLAGS VOWELBIT NDESCBIT)
(VALUE 5)
(ACTION ACCESS-PLATE-F)>
<ROUTINE ACCESS-PLATE-F ()
<COND (<VERB? READ>
<READ-AIR-SUPPLY>)
(<VERB? EXAMINE ANALYZE>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT> <TELL "It's open." CR>)
(T
<TELL
"It's held in place on the cylinder by curiously-shaped fram bolts, which
no ordinary wrench will fit.">
<COND (<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,TOUCHBIT>>
<TELL
" To open it, you need a " D ,SPECIAL-TOOL ", or something like it." CR>)>
<RTRUE>)>)
(<VERB? LOOK-INSIDE>
<PERFORM ,PRSA ,AIR-SUPPLY-SYSTEM ,PRSI>
<RTRUE>)
(<VERB? CLOSE>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT>
<FCLEAR ,ACCESS-PLATE ,OPENBIT>
<OKAY ,AIR-SUPPLY-SYSTEM "closed">)
(T <ALREADY ,AIR-SUPPLY-SYSTEM "closed">)>)
(<AND <VERB? OPEN OPEN-WITH TAKE-WITH>
<IOBJ? UNIVERSAL-TOOL SPECIAL-TOOL>>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT>
<ALREADY ,ACCESS-PLATE "open">)
(T
<OKAY ,ACCESS-PLATE "open">
<FSET ,AIR-SUPPLY-SYSTEM ,OPENBIT>
<FSET ,AIR-SUPPLY-SYSTEM ,TOUCHBIT>
<PERFORM ,V?LOOK-INSIDE ,AIR-SUPPLY-SYSTEM>
<SCORE-OBJ ,AIR-SUPPLY-SYSTEM>
<RTRUE>)>)
(<VERB? OPEN TAKE TAKE-WITH>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT>
<ALREADY ,ACCESS-PLATE "open">)
(<IOBJ? SPECIAL-TOOL-GLOBAL> <NOT-HERE ,PRSI> <RTRUE>)
(T <TELL
"You can't remove" THE-PRSO " with your bare hands!" CR>)>)>>
<OBJECT HOOK
(IN CENTER-OF-DOME)
(DESC "special hook")
(ADJECTIVE SPECIAL)
(SYNONYM HOOK)
(FLAGS SURFACEBIT NDESCBIT)
(ACTION HOOK-F)>
<ROUTINE HOOK-F ()
<COND (<NOT <FIRST? ,HOOK>>
<COND (<VERB? EXAMINE LOOK-ON>
<TELL "There's nothing hanging on the " D ,HOOK "." CR>)
(<VERB? PUT>
<COND (<DOBJ? SPECIAL-TOOL ;UNIVERSAL-TOOL>
<MOVE ,PRSO ,HOOK>
<TELL "Okay." CR>)
(T <TELL "It won't fit on the " D ,HOOK "." CR>)>)>)
(<VERB? EXAMINE LOOK-ON>
<TELL "There's " A ,SPECIAL-TOOL " hanging on the " D ,HOOK"."CR>)>>
<OBJECT ARROW
(IN CENTER-OF-DOME)
(DESC "arrow")
(SYNONYM ARROW)
(FLAGS VOWELBIT NDESCBIT)
(ACTION ARROW-F)>
<ROUTINE ARROW-F ()
<COND (<VERB? FOLLOW EXAMINE ANALYZE> <TELL "It points to the hook." CR>)>>
<OBJECT SPECIAL-TOOL-GLOBAL
(DESC "special Fram Bolt Wrench")
(IN GLOBAL-OBJECTS)
(ADJECTIVE SPECIAL FRAM BOLT)
(SYNONYM ;TOOL WRENCH)>
<OBJECT SPECIAL-TOOL
(DESC "special Fram Bolt Wrench")
(IN BLY-OFFICE)
(ADJECTIVE SPECIAL FRAM BOLT ODD ODDLY SHAPED METALLIC)
(SYNONYM ;TOOL WRENCH OBJECT)
(FLAGS TAKEBIT TOOLBIT INVISIBLE)
(TEXT "It's stamped: \"AIR SUPPLY SYSTEM / Fram Bolt Wrench.\"")>
<OBJECT ELECTROLYTE-RELAY
(IN AIR-SUPPLY-SYSTEM)
(DESC "electrolyte relay")
(ADJECTIVE ELECTR MISSING SOME)
(SYNONYM RELAY OBJECT SOMETHING THING)
(FLAGS TAKEBIT VOWELBIT MUNGBIT)
(TEXT "It has screw threads.")
(ACTION ELECTROLYTE-RELAY-F)>
<ROUTINE ELECTROLYTE-RELAY-F ()
<COND (<VERB? TAKE>
<COND (<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL
"What!? You don't want to spoil the " D ,AIR-SUPPLY-SYSTEM " again!" CR>)>)
(<REMOTE-VERB?> <RFALSE>)
(<NOT-HOLDING? ,ELECTROLYTE-RELAY>
<RTRUE>)
(<AND <VERB? COMPARE>
<OR <AND <IOBJ? ELECTROLYTE-RELAY> <DOBJ? EMPTY-SPACE>>
<AND <DOBJ? ELECTROLYTE-RELAY> <IOBJ? EMPTY-SPACE>>>>
<TELL
"It looks as if the " D ,ELECTROLYTE-RELAY " fits perfectly into the "
D ,EMPTY-SPACE "." CR>)
(<VERB? EXAMINE>
<TELL
"It has screw threads and, judging by its size and shape, it should
screw very neatly into that " D ,EMPTY-SPACE " in the "
D ,AIR-SUPPLY-SYSTEM " assembly." CR>)
(<OR <AND <VERB? PUT SCREW> <IOBJ? AIR-SUPPLY-SYSTEM EMPTY-SPACE>>
<AND <VERB? SCREW-IN> <EQUAL? ,HERE ,CENTER-OF-DOME>>>
<COND (<NOT <FSET? ,ACCESS-PLATE ,OPENBIT>>
<TOO-BAD-BUT ,ACCESS-PLATE "closed">
<RTRUE>)>
<FIX-AIR-SUPPLY>
<TELL "It fits!" CR>
<SCORE-OBJ ,ACCESS-PLATE>
<RTRUE>)>>
<ROUTINE FIX-AIR-SUPPLY ()
<FCLEAR ,AIR-SUPPLY-SYSTEM ,MUNGBIT>
<REMOVE ,EMPTY-SPACE>
<MOVE ,ELECTROLYTE-RELAY ,AIR-SUPPLY-SYSTEM>
<FCLEAR ,ELECTROLYTE-RELAY ,TAKEBIT>
<FSET ,ELECTROLYTE-RELAY ,NDESCBIT>
<FCLEAR ,ELECTROLYTE-RELAY ,MUNGBIT>
<PUTP ,ELECTROLYTE-RELAY ,P?TEXT "It's sitting neatly in place.">>
<OBJECT EMPTY-SPACE
(IN AIR-SUPPLY-SYSTEM)
(DESC "empty space")
(ADJECTIVE EMPTY)
(SYNONYM SPACE HOLE)
(FLAGS VOWELBIT)
(TEXT "It has screw threads.")
(ACTION EMPTY-SPACE-F)>
<ROUTINE EMPTY-SPACE-F ()
<COND (<AND <VERB? PUT> <IOBJ? EMPTY-SPACE>>
<TELL
"Sorry, but" THE-PRSO " won't stay unless you screw it in." CR>)>>
<GLOBAL IN-DOME-AROUND
<PLTABLE FOOT-OF-RAMP OUTSIDE-ADMIN-BLDG OUTSIDE-COMM-BLDG OUTSIDE-WORKSHOP
OUTSIDE-DORM FOOT-OF-RAMP ;"preceding for WALK AROUND DOME"
AIRLOCK AIRLOCK-WALL CENTER-OF-DOME BLY-OFFICE DOME-STORAGE
COMM-BLDG GALLEY WORKSHOP DOME-LAB WOMENS-QUARTERS MENS-QUARTERS>>