planetfall-gold/globals.zil

3061 lines
96 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"GLOBALS for PLANETFALL
(C) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED
This file contains Global Objects and their associated routines,
as well as all routines associated with BOTH complexes. It also
contains the opening sequence which occurs prior to planetfall."
<CONSTANT S-TEXT 0>
<CONSTANT S-WINDOW 1>
<CONSTANT H-NORMAL 0>
<CONSTANT H-INVERSE 1>
<CONSTANT H-BOLD 2>
<CONSTANT H-ITALIC 4>
<CONSTANT D-SCREEN-ON 1>
<CONSTANT D-SCREEN-OFF -1>
<CONSTANT D-PRINTER-ON 2>
<CONSTANT D-PRINTER-OFF -2>
<CONSTANT D-TABLE-ON 3>
<CONSTANT D-TABLE-OFF -3>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<CONSTANT SL-TABLE:TABLE <ITABLE NONE 80>> "status line constructed here"
<GLOBAL OHERE:OBJECT <>>
<GLOBAL OLD-LEN:NUMBER 0>
<ROUTINE INIT-STATUS-LINE ()
<COND (<L? ,WIDTH 38>
<TELL "[Screen too narrow.]" CR>
<QUIT>)>
<SETG OHERE <>>
<SETG OLD-LEN 0>
<SPLIT 1>
<SCREEN ,S-WINDOW>
<HLIGHT ,H-INVERSE>
<CURSET 1 1>
<PRINT-SPACES ,WIDTH>
<COND (<G? ,WIDTH 74>
<CURSET 1 51>
<TELL "Score:">
<CURSET 1 64>
<TELL "Time:">)>
<HLIGHT ,H-NORMAL>
<SCREEN ,S-TEXT>
<RTRUE>>
<ROUTINE UPDATE-STATUS-LINE ()
<SCREEN ,S-WINDOW>
;<BUFOUT <>>
<HLIGHT ,H-NORMAL>
<HLIGHT ,H-INVERSE>
<COND (<NOT <EQUAL? ,HERE ,OHERE>>
<SETG OHERE ,HERE>
;<DIROUT ,D-SCREEN-OFF> ; "Screen off."
<DIROUT ,D-TABLE-ON ,SL-TABLE> ; "Table on."
<SAY-HERE>
<DIROUT ,D-TABLE-OFF> ; "Table off."
;<DIROUT ,D-SCREEN-ON> ; "Screen on."
<CURSET 1 2>
<PRINT-SPACES ,OLD-LEN> ; "Erase old HERE desc"
<SETG OLD-LEN <GET ,SL-TABLE 0>> ;"Print new HERE desc."
<CURSET 1 2>
<SAY-HERE>)>
<COND (<G? ,WIDTH 74>
<CURSET 1 58>
<TELL N ,SCORE " "> ;"for 110 to 80 score bug"
<CURSET 1 70>
<TELL N ,MOVES>)
(T
<DIROUT ,D-TABLE-ON ,SL-TABLE>
<TELL N ,SCORE "/" N ,MOVES " ">
<DIROUT ,D-TABLE-OFF>
<CURSET 1 <- ,WIDTH <+ <GET ,SL-TABLE 0> 1>>>
<TELL N ,SCORE "/" N ,MOVES " ">)>
<HLIGHT ,H-NORMAL>
<SCREEN ,S-TEXT> ;"Back to main screen."
<RTRUE>>
<ROUTINE PRINT-SPACES (N "AUX" AMT)
<REPEAT ()
<COND (<G? .N ,BLANKS-LEN>
<SET AMT ,BLANKS-LEN>)
(T
<SET AMT .N>)>
<PRINTT ,BLANKS .AMT>
<COND (<L=? <SET N <- .N .AMT>> 0>
<RTRUE>)>>>
<CONSTANT BLANKS-LEN 10>
<CONSTANT BLANKS <ITABLE ,BLANKS-LEN (BYTE) !\ >>
<ROUTINE SAY-HERE ()
<COND (<ZERO? ,LIT?>
<TELL "Darkness">)
(T
<TELL D ,HERE>
<COND (<AND <G? ,WIDTH 74>
<FSET? <LOC ,ADVENTURER> ,VEHBIT>>
<TELL ", in the " D <LOC ,ADVENTURER>>)>)>
<RTRUE>>
<CONSTANT DEFAULT-MOVE 20>
;"REM OFFSETS 31 30 29 28 27 26 25 24 23 22 21 20 ,LOW-DIRECTION "
;<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
"SUBTITLE GLOBAL OBJECTS"
<GLOBAL LOAD-ALLOWED 100>
<OBJECT GLOBAL-OBJECTS
(SYNONYM ZZMGCK)
(DESC "it")
(FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT MUNGBIT MUNGEDBIT
SCRAMBLEDBIT WORNBIT OPENBIT SEARCHBIT TRANSBIT WEARBIT
READBIT ACIDBIT ACTIVEBIT)>
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(SYNONYM ZZMGCK)
(VALUE 0)
(CONTFCN 0)
(DESCFCN 0)
(SIZE 0)
;(PSEUDO "FOO")>
;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
<OBJECT ROOMS
(IN TO ROOMS)
(DESC "it")>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(SYNONYM INTNUM)
(DESC "number")>
<OBJECT PSEUDO-OBJECT
(DESC "pseudoxyz")
(ACTION GO)>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(SYNONYM IT THAT THIS HIM)
(DESC "random object")
(FLAGS NDESCBIT)>
<OBJECT STAIRS
(LOC LOCAL-GLOBALS)
(SYNONYM STAIRS STEPS GANGWAY STAIRWAY)
(DESC "stairway")
(FLAGS NDESCBIT CLIMBBIT)>
<OBJECT GROUND
(LOC GLOBAL-OBJECTS)
(SYNONYM GROUND EARTH FLOOR DECK)
(DESC "floor")
(FLAGS NDESCBIT)
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<AND <VERB? PUT>
<EQUAL? ,PRSI ,GROUND>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<VERB? CLIMB-ON BOARD>
<SETG C-ELAPSED 28>
<TELL
"You sit down on the floor. After a brief rest, you stand again." CR>)
(<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,ADMIN-CORRIDOR-S>>
<TELL "A narrow, jagged crevice runs across the floor." CR>)>>
<OBJECT WINDOW
(LOC LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW PORT VIEWPORT)
(ADJECTIVE VIEW)
(FLAGS NDESCBIT)
(ACTION WINDOW-F)>
<ROUTINE WINDOW-F ()
<COND (<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,BIO-LOCK-EAST>
<TELL
"You can see a large laboratory, dimly illuminated. A blue glow comes from
a crack in the northern wall of the lab. Shadowy, ominous shapes move about
within the room.">
<COND (<NOT <FSET? ,MINI-CARD ,TOUCHBIT>>
<TELL
" On the floor, just inside the door, you can see a magnetic-striped card.">)>
<CRLF>)
(<EQUAL? ,HERE ,BIO-LAB>
<TELL "You see the Bio Lock." CR>)
(<OR
<EQUAL? ,HERE ,ALFIE-CONTROL-EAST ,ALFIE-CONTROL-WEST>
<EQUAL? ,HERE ,BETTY-CONTROL-EAST ,BETTY-CONTROL-WEST>>
<TELL "You see ">
<DESCRIBE-VIEW>
<TELL CR>)
(<EQUAL? ,HERE ,BALCONY>
<TELL "Water. Lots and lots of water." CR>)
(<EQUAL? ,HERE ,HELICOPTER>
<TELL "You see the helipad and the ocean beyond." CR>)
(<EQUAL? ,HERE ,ESCAPE-POD>
<COND (<L? ,TRIP-COUNTER 2>
<TELL
"You can see debris from the exploding Feinstein." CR>)
(<G? ,TRIP-COUNTER 8>
<TELL
"You can see a planet, hopefully a hospitable one." CR>)
(T
<TELL
"The window has polarized to blackness." CR>)>)
(<EQUAL? ,HERE ,LARGE-OFFICE>
<TELL
"You can see the dormitories and other parts of the
complex in the distance. Water is visible in every direction." CR>)>)
(<AND <VERB? THROUGH>
<EQUAL? ,HERE ,BALCONY>>
<JIGS-UP
"You slice yourself to ribbons on the broken windows and then plummet
into the swirling ocean below. Very clever.">)
(<VERB? OPEN>
<TELL "This window doesn't open." CR>)
(<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,BALCONY>>
<TELL "They're shattered." CR>)
(<VERB? MUNG>
<COND (<EQUAL? ,HERE ,BALCONY>
<TELL "They're already broken." CR>)
(T
<TELL "It's made of tough Zynoid plastic." CR>)>)>>
<OBJECT CLIFF
(LOC LOCAL-GLOBALS)
(DESC "cliff")
(SYNONYM CLIFF)
(FLAGS NDESCBIT)
(ACTION CLIFF-F)>
<ROUTINE CLIFF-F ()
<COND (<EQUAL? ,HERE ,WEST-WING>
<COND (<VERB? LEAP>
<JIGS-UP "Brilliant idea!">)
(<VERB? THROW-OFF>
<COND (<EQUAL? ,PRSO ,LASER>
<DISABLE <INT I-WARMTH>>)>
<REMOVE ,PRSO>
<TELL
"The " D ,PRSO " falls into the ocean below." CR>)>)
(T
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<DO-WALK ,P?UP>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>)>)>>
<OBJECT OCEAN
(LOC LOCAL-GLOBALS)
(DESC "ocean")
(SYNONYM OCEAN)
(ADJECTIVE ENDLESS)
(FLAGS VOWELBIT NDESCBIT)
(ACTION OCEAN-F)>
<ROUTINE OCEAN-F ()
<COND (<VERB? TAKE THROUGH RUB>
<TELL "You can't reach the ocean from here." CR>)
(<VERB? EXAMINE>
<TELL "It stretches as far as you can see." CR>)>>
<OBJECT TABLES
(LOC LOCAL-GLOBALS)
(DESC "table")
(SYNONYM TABLE TABLES)
(FLAGS NDESCBIT)
(ADJECTIVE ROUND CONFERENCE SMALL WIDE LONG)
(ACTION TABLES-F)>
<ROUTINE TABLES-F ()
<COND (<AND <VERB? LOOK-UNDER>
<EQUAL? ,HERE ,MESS-HALL>>
<TELL
"Wow!!! Under the table are three keys, a sack of food, a reactor elevator
access pass, one hundred gold pieces ... Just kidding. Actually, there's
nothing there." CR>)
(<AND <VERB? PUT-ON>
<EQUAL? ,PRSI ,TABLES>>
<TELL
"That would accomplish nothing useful." CR>)>>
<OBJECT SHELVES
(LOC LOCAL-GLOBALS)
(SYNONYM SHELF SHELVES)
(DESC "shelf")
(FLAGS NDESCBIT)
(ACTION SHELVES-F)>
<ROUTINE SHELVES-F ()
<COND (<VERB? EXAMINE>
<TELL "The shelves are pretty dusty." CR>)
(<AND <VERB? PUT-ON>
<EQUAL? ,PRSI ,SHELVES>>
<TELL "That would be a waste of time." CR>)>>
<OBJECT LIGHTS
(LOC LOCAL-GLOBALS)
(SYNONYM LIGHT LIGHTS)
(ADJECTIVE RED DAZZLING GLOWING BLINKING WARNING BRIGHT COLORED FLASHING)
(DESC "light")
(FLAGS NDESCBIT)
(ACTION LIGHTS-F)>
<ROUTINE LIGHTS-F ()
<COND (<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,COMPUTER-ROOM>>
<TELL
"The red light would seem to indicate a malfunction in the computer." CR>)>>
<OBJECT GLOBAL-DOORWAY
(LOC GLOBAL-OBJECTS)
(SYNONYM DOORWAY PORTAL OPENING)
(ADJECTIVE NORTH SOUTH EAST WEST NE SE NW SW)
(DESC "doorway")
(FLAGS NDESCBIT)
(ACTION GLOBAL-DOORWAY-F)>
<ROUTINE GLOBAL-DOORWAY-F ()
<COND (<VERB? THROUGH>
<USE-DIRECTIONS>)
(<VERB? OPEN CLOSE>
<TELL "It's just an opening; you can't open or close it." CR>)
(<VERB? LOOK-INSIDE>
<TELL "Can't see much from here. Try going there." CR>)>>
<ROUTINE USE-DIRECTIONS ()
<TELL "Use compass directions for movement." CR>>
<ROUTINE NO-CLOSE ()
<TELL "There's no way to close it." CR>>
<OBJECT CONTROLS
(LOC LOCAL-GLOBALS)
(SYNONYM CONTROL PANEL DIALS GAUGES)
(ADJECTIVE CONTROL COMPLEX)
(DESC "set of controls")
(FLAGS NDESCBIT)
(ACTION CONTROLS-F)>
<ROUTINE CONTROLS-F ()
<COND (<OR <EQUAL? ,HERE ,UPPER-ELEVATOR ,LOWER-ELEVATOR ,BOOTH-1>
<EQUAL? ,HERE ,REACTOR-ELEVATOR ,BOOTH-2 ,BOOTH-3>>
<COND (<VERB? EXAMINE>
<TELL
"The control panel is a simple one, as described. Just a small slot
and two buttons." CR>)>)
(<VERB? RUB MOVE TURN SET TAKE EXAMINE PUSH PULL>
<COND (<EQUAL? ,HERE ,HELICOPTER>
<TELL
"The controls are covered and locked." CR>)
(<EQUAL? ,HERE ,ESCAPE-POD>
<TELL
"The controls are entirely automated." CR>)
(T
<TELL
"The controls are incredibly complicated and you shouldn't even
be thinking about touching them." CR>)>)
(<AND <EQUAL? ,HERE ,HELICOPTER>
<VERB? OPEN UNLOCK>>
<TELL
"You don't even have the orange key!" CR>)>>
<OBJECT GLOBAL-GAMES
(LOC GLOBAL-OBJECTS)
(DESC "game")
(SYNONYM BOCCI CHESS HIDER-AND-SEEKER HUCKA-BUCKA SEEKER BEANSTALK)
(ADJECTIVE HIDER HUCKA BUCKA)
(FLAGS NDESCBIT)
(ACTION GLOBAL-GAMES-F)>
<ROUTINE GLOBAL-GAMES-F ()
<COND (<VERB? PLAY>
<COND (<IN? ,FLOYD ,HERE>
<PERFORM ,V?PLAY-WITH ,FLOYD>
<RTRUE>)
(T
<TELL "Okay. Gee, that was fun." CR>)>)>>
<OBJECT HANDS
(LOC GLOBAL-OBJECTS)
(SYNONYM PAIR HANDS)
(ADJECTIVE BARE)
(DESC "pair of hands")
(FLAGS NDESCBIT)
(ACTION HANDS-F)>
<ROUTINE HANDS-F ()
<COND (<VERB? SHAKE>
<COND (<IN? ,AMBASSADOR ,HERE>
<TELL "A repulsive idea." CR>)
(<IN? ,BLATHER ,HERE>
<TELL "Saluting might be a better idea." CR>)
(<AND <IN? ,FLOYD ,HERE>
<FSET? ,FLOYD ,RLANDBIT>>
<TELL
"You shake one of Floyd's grasping extensions." CR>)
(T
<TELL "There's no one to shake hands with." CR>)>)>>
<OBJECT SLEEP
(LOC GLOBAL-OBJECTS)
(DESC "sacred act of sleeping")
(SYNONYM SLEEP)
(FLAGS NDESCBIT)
(ACTION SLEEP-F)>
<ROUTINE SLEEP-F ()
<COND (<VERB? WALK-TO>
<V-SLEEP>)>>
<OBJECT ADVENTURER
(LOC DECK-NINE)
(SYNONYM ADMIRAL SMITHE SPAM EGGS)
(ADJECTIVE ORANGE OPENER)
(DESC "player")
(FLAGS NDESCBIT INVISIBLE)>
<OBJECT ME
(LOC GLOBAL-OBJECTS)
(SYNONYM ME MYSELF SELF WE)
(DESC "you")
(FLAGS ACTORBIT)
(ACTION CRETIN-F)>
<ROUTINE CRETIN-F ()
<COND (<VERB? GIVE>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<VERB? SCRUB>
<TELL
"If only you'd done that before the last inspection, you wouldn't have
gotten 300 demerits." CR>)
(<VERB? DROP>
<TELL "Huh?" CR>)
(<VERB? SMELL>
<TELL "Phew!" CR>)
(<VERB? FOLLOW>
<TELL "It would be hard not to." CR>)
(<VERB? EAT>
<TELL "Auto-cannibalism is not the answer." CR>)
(<VERB? ATTACK MUNG>
<COND (<==? ,PRSO ,ME>
<JIGS-UP "If you insist.... Poof, you're dead!">)
(ELSE <TELL "What a silly idea!" CR>)>)
(<VERB? TAKE>
<TELL "How romantic!" CR>)
(<VERB? DISEMBARK>
<TELL "You'll have to do that on your own." CR>)
(<VERB? EXAMINE>
<TELL "That's difficult unless your eyes are prehensile."
CR>)>>
;<GLOBAL DUMMY
<PLTABLE "Look around."
"You think it isn't?"
"I think you've already done that.">>
<ROUTINE DDESC (DOOR)
<COND (<FSET? .DOOR ,OPENBIT>
<TELL "open">)
(T
<TELL "closed">)>>
<ROUTINE ALREADY-OPEN ()
<TELL "It's already open!" CR>>
<ROUTINE IS-CLOSED ()
<TELL "It is closed!" CR>>
<ROUTINE V-THROUGH ("OPTIONAL" (OBJ <>) "AUX" M)
<COND (<AND <NOT .OBJ> <FSET? ,PRSO ,VEHBIT>>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<AND <NOT .OBJ> <NOT <FSET? ,PRSO ,TAKEBIT>>>
<TELL
"You hit your head against the " D ,PRSO " as you attempt this feat." CR>)
(.OBJ
<TELL "You can't do that!" CR>)
(<IN? ,PRSO ,ADVENTURER>
<TELL "That would involve quite a contortion!" CR>)
(T
<TELL <PICK-ONE ,YUKS> CR>)>>
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
<SET W <FIRST? .WHERE>>
<COND (<NOT .W> <RFALSE>)>
<REPEAT ()
<COND (<FSET? .W .WHAT> <RETURN .W>)
(<NOT <SET W <NEXT? .W>>> <RETURN <>>)>>>
;"Stuff added for the NOT-HERE object"
<OBJECT NOT-HERE-OBJECT
(DESC "such thing" ;"[not here]")
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
<COND (<AND <PRSO? ,NOT-HERE-OBJECT>
<PRSI? ,NOT-HERE-OBJECT>>
<TELL "Those things aren't here!" CR>
<RTRUE>)
(<PRSO? ,NOT-HERE-OBJECT>
<SET TBL ,P-PRSO>)
(T
<SET TBL ,P-PRSI>
<SET PRSO? <>>)>
<COND (.PRSO?
<COND (<VERB? TYPE>
<PERFORM ,V?TYPE ,FLOYD>
<RTRUE>)
(<OR <VERB? EXAMINE>
<AND <EQUAL? ,WINNER ,FLOYD>
<VERB? TAKE FIND>>>
<COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
<COND (<NOT <==? .OBJ ,NOT-HERE-OBJECT>>
<RTRUE>)>)
(T
<RFALSE>)>)>)>
;"Here is the default 'cant see any' printer"
<COND (<EQUAL? ,WINNER ,ADVENTURER>
<TELL "You can't see any">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!" CR>
<COND (<VERB? TELL>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RFATAL>)>)
(T
<TELL "The " D ,WINNER " seems confused. \"I don't see any">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!\"" CR>)>
<RTRUE>>
<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
;"Protocol: return T if case was handled and msg TELLed,
,NOT-HERE-OBJECT if 'can't see' msg TELLed,
<> if PRSO/PRSI ready to use"
;"Here is where special-case code goes. <MOBY-FIND .TBL> returns
number of matches. If 1, then P-MOBY-FOUND is it. One may treat
the 0 and >1 cases alike or different. It doesn't matter. Always
return RFALSE (not handled) if you have resolved the problem."
<SET M-F <MOBY-FIND .TBL>>
;<COND (<AND <G? .M-F 1>
<SET OBJ <GETP <1 .TBL> ,P?GLOBAL>>>
<SET M-F 1>
<SETG P-MOBY-FOUND .OBJ>)>
<COND (<==? 1 .M-F>
<COND (.PRSO? <SETG PRSO ,P-MOBY-FOUND>)
(T <SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<NOT .PRSO?>
<TELL "You wouldn't find any">
<NOT-HERE-PRINT .PRSO?>
<TELL " there." CR>
<RTRUE>)
(T ,NOT-HERE-OBJECT)>>
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (<OR ,P-OFLAG ,P-MERGED>
<COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJ>)>
<COND (,P-XNAM <TELL " "> <PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
^L
;"Begin-game stuff aboard the Feinstein"
<ROOM BRIG
(LOC ROOMS)
(DESC "Brig")
(LDESC
"You are in the Feinstein's brig. Graffiti cover
the walls. The cell door to the south is locked.")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(SOUTH SORRY "The cell door is locked.")
(FLAGS RLANDBIT ONBIT)
(PSEUDO "GRAFFITI" GRAFFITI-PSEUDO "DOOR" DOOR-PSEUDO)>
<ROOM DECK-NINE
(LOC ROOMS)
(DESC "Deck Nine")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST"15 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST"15 ;"NE" 0 ;"NORTH" 0>)
(EAST TO REACTOR-LOBBY IF CORRIDOR-DOOR IS OPEN)
(WEST TO ESCAPE-POD IF POD-DOOR IS OPEN)
(IN TO ESCAPE-POD IF POD-DOOR IS OPEN)
(UP TO GANGWAY IF GANGWAY-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL POD-DOOR CORRIDOR-DOOR GANGWAY-DOOR STAIRS GLOBAL-POD)
(PSEUDO "TRANSL" TRANSLATOR-PSEUDO "SLIME" SLIME-PSEUDO)
(ACTION DECK-NINE-F)>
<ROUTINE DECK-NINE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a featureless corridor similar to every other corridor on the ship.
It curves away to starboard, and a gangway leads up">
<COND (<FSET? ,GANGWAY-DOOR ,OPENBIT>
<TELL ".">)
(T
<TELL
", but both of these are blocked by closed bulkheads.">)>
<TELL
" To port is the entrance to one of the ship's primary escape pods. The
pod bulkhead is ">
<DDESC ,POD-DOOR>
<TELL "." CR>)>>
<OBJECT SCRUB-BRUSH
(LOC ADVENTURER)
(DESC "Patrol-issue self-contained multi-purpose scrub brush")
(SYNONYM BRUSH SCRUBBRUSH SCRUBRUSH)
(ADJECTIVE SCRUB PATROL SELF-CONTAINED MULTI MULTI-PURPOSE PURPOSE)
(FLAGS TAKEBIT)
(SIZE 10)>
<OBJECT CHRONOMETER
(LOC ADVENTURER)
(DESC "chronometer")
(SYNONYM CHRONOMETER WRISTWATCH WATCH)
(ADJECTIVE WRIST)
(SIZE 10)
(FLAGS MUNGBIT TAKEBIT WEARBIT WORNBIT)
(ACTION CHRONOMETER-F)>
<ROUTINE CHRONOMETER-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"It is a standard wrist chronometer with a digital display. ">
<TELL-TIME>
<TELL " The back is engraved with
the message \"Good luck in the Patrol! Love, Mom and Dad.\"" CR>)>>
<ROUTINE TELL-TIME ()
<TELL "According to the chronometer, the current time is ">
<COND (<FSET? ,CHRONOMETER ,MUNGEDBIT>
<TELL N ,MUNGED-TIME>)
(T
<TELL N ,INTERNAL-MOVES>)>
<TELL ".">>
<GLOBAL MUNGED-TIME 0>
<OBJECT ID-CARD
(LOC PATROL-UNIFORM)
(DESC "ID card")
(SYNONYM CARD CARDS)
(ADJECTIVE PATROL ID IDENTIFICATION)
(FLAGS VOWELBIT TAKEBIT READBIT)
(SIZE 3)
(TEXT
"\"STELLAR PATROL|
Special Assignment Task Force|
ID Number: 6172-531-541\"")>
<OBJECT PATROL-UNIFORM
(LOC ADVENTURER)
(DESC "Patrol uniform")
(LDESC
"A slightly wrinkled Patrol uniform is lying here.")
(SYNONYM UNIFORM POCKET SUIT)
(ADJECTIVE PATROL WRINKLED)
(FLAGS TAKEBIT WORNBIT WEARBIT CONTBIT SEARCHBIT OPENBIT)
(CAPACITY 10)
(ACTION PATROL-UNIFORM-F)>
<ROUTINE PATROL-UNIFORM-F ()
<COND (<VERB? EXAMINE>
<TELL
"It is a standard-issue one-pocket Stellar Patrol uniform, a miracle of modern
technology. It will keep its owner warm in cold climates and cool in warm
locales. It provides protection against mild radiation, repels all insects,
absorbs sweat, promotes healthy skin tone, and on top of everything else,
it is supercomfy.">
<COND (<EQUAL? ,TRIP-COUNTER 15>
<TELL
" There are definitely worse things to find yourself wearing when stranded
on a strange planet.">)>
<TELL CR>)
(<AND <VERB? WEAR>
<FSET? ,LAB-UNIFORM ,WORNBIT>>
<TELL
"It won't fit over the lab uniform." CR>)
(<AND <VERB? TAKE-OFF>
<FSET? ,PATROL-UNIFORM ,WORNBIT>>
<FCLEAR ,PATROL-UNIFORM ,WORNBIT>
<TELL "You have removed your Patrol uniform.">
<COND (<EQUAL? ,TRIP-COUNTER 15>
<TELL
" You suddenly realize how warm it is. You also feel naked and vulnerable.">)>
<COND (<IN? ,BLATHER ,HERE>
<TELL
" \"Removing your uniform while on duty? Five hundred demerits!\"">)
(<IN? ,FLOYD ,HERE>
<TELL
" Floyd giggles. \"You look funny without any clothes on.\"">)>
<TELL CR>)
(<VERB? OPEN CLOSE>
<TELL
"There's no way to open or close the pocket of the " D ,PRSO "." CR>)>>
<OBJECT DIARY
(LOC ADVENTURER)
(DESC "diary")
(SYNONYM DIARY MACHINE RECORDER)
(ADJECTIVE BATTERED OLD)
(FLAGS ACIDBIT TAKEBIT READBIT TRANSBIT)
(CAPACITY 0)
(SIZE 3)
(ACTION DIARY-F)>
;<ROUTINE DIARY-F ()
<COND (<VERB? READ EXAMINE>
<TELL "You've scribbled in a diary ever since you can
remember. You turn on this battered old electro-book; the screen blanks,
clears and types, \"Doo not plaee with mee until Aamee kodes mee in.\""
CR>)>>
<GLOBAL DIARY-CTR 0>
<ROUTINE DIARY-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "It's not that kind of diary." CR>)
(<VERB? EXAMINE>
<TELL
"You've used this battered old recording machine as a diary for years. It
includes a little button">
<COND (<FSET? ,DIARY ,ACTIVEBIT>
<TELL ", which is flashing,">)>
<TELL
" and a microphone/speaker. To read its screen, type READ DIARY." CR>)
;(<AND <VERB? READ>
<NOT <FSET? ,DIARY ,ACTIVEBIT>>>
;<QUEUE I-DIARY-READER -1>
<FSET ,DIARY ,ACTIVEBIT>
<SETG DIARY-CTR 0>
<READ-DIARY>)
(<VERB? READ>
<COND (<IN? ,BLATHER ,HERE>
<TELL
"Blather stops you, scribbling madly. \"I warned you, Ensign!
That's another two hundred demerits!\"" CR>)
(<NOT <FSET? ,DIARY ,ACTIVEBIT>>
;<QUEUE I-DIARY-READER -1>
<FSET ,DIARY ,ACTIVEBIT>
<SETG DIARY-CTR 0>
<READ-DIARY>)
(T
<WORDS-ON-SCREEN>)>)>>
<OBJECT DIARY-BUTTON
(LOC DIARY)
(DESC "little button")
(SYNONYM BUTTON)
(ADJECTIVE LITTLE)
(FLAGS NDESCBIT)
(SIZE 0)
(ACTION DIARY-BUTTON-F)>
<ROUTINE DIARY-BUTTON-F ()
<COND (<VERB? PUSH>
<COND (<FSET? ,DIARY ,ACTIVEBIT>
<COND (<EQUAL? ,DIARY-CTR 14>
<FCLEAR ,DIARY ,ACTIVEBIT>
<SETG DIARY-CTR 0>
<TELL
"\"END OF DIARY -- REWINDING\" flashes across the screen; the machine whirrs,
stops, and the little button flickers off." CR>)
(T
<READ-DIARY>)>)
(T
<TELL "Nothing happens." CR>)>)
(<AND <VERB? EXAMINE>
<FSET? ,DIARY ,ACTIVEBIT>>
<TELL "It is flashing." CR>)>>
<CONSTANT DIARY-ENTRIES
<PTABLE
"Bug #46"
"July 22 -- Transferred from S.P.S. Trilobyte to S.P.S.
Feinstein for the third of my four tours of duty. I'm truly going to miss
my commander, Ensign First Class Lim. He was a friend in every respect --
someone you could always go to with a problem, someone I could really look
up to. We would sometimes talk long into the night. He would tell me
about his home world of Ash-Down V, and I would talk about growing up on
Gallium. I'd get pretty homesick sometimes, even though Gallium is not
exactly one of the garden spots of the universe. I just hope my new
commander is half as nice as Lim.||
This new ship seems pretty swell. I'm in a cabin with only five
other ensigns, and I've got one-and-a-half cubic meters of locker space!"
"July 23 -- Met my new commander today -- Ensign Cadet First
Class Blather. He seems like a real krip. (Excuse the language, Diary.) But
that might just be a bad first impression."
"July 25 -- One of my cabin mates, Gorund, organized a Double
Fanucci tournament among all the Ensigns Seventh Class. We were playing
during the 150-millichron rec period after lunch, and Blather burst in and
confiscated the sets and told us that playing war games was a violation of
patrol regulations. But Ensign Whirp, who's studying to be a patrol lawyer,
said she couldn't find anything about it in the regulations anywhere.|
BLATHER IS REALLY A TOTAL MEGAKRIP!!!"
"July 28 -- I went to see the personnel officer today to find
out what my new duties would involve. He showed me a list of all the open
assignments, and I decided to put in for the grotch-feeding detail. We picked
up a few grotches when we were on Crassus, and we're taking them to the
Zoology Labs on Tremain so that maybe they can figure out how an animal can
produce 47 times its weight in trot every day."
"Bozbar 7 -- Everyone from the P.O. to the ship's cook has
approved my application for the grotch-feeding detail -- except Blather. I
have an appointment to see him tomorrow. Wish me luck."
"Bozbar 8 -- TROT!! Blather rejected my application! And to
make it worse, he said that since I seem to love grotches so much, he's
assigning me to clean out their cages. TROT AND DOUBLE TROT!!"
"Bozbar 26 -- I haven't had time to keep my diary lately,
because Blather's been watching us all like a Teleran bird. Also, last
week he found the diary during a surprise inspection, gave me 200 demerits,
and told me that diaries were against regulations. But I'll be frobbed if
I'm going to stop. I've started hiding the diary inside my official documents
file, and I keep that hidden in the air duct. From now on I'll have to sneak
away somewhere to use it."
"Bozbar 27 -- Greeting from the Deck Four Supply Closet of the
S.P.S. Feinstein. I hope I'm not tempting fate, sneaking around with my diary
this way. I used to be as much of a disbeliever in destiny as the next guy,
but not anymore. Not since the time my mom warned my dad not to tempt fate
by walking across the astral plains after dark, when the computerized analysis
showed a 43% chance of resulting injury. My dad, stubborn as always, just
laughed at her and went right on taking his nightly strolls. THE VERY NEXT
SUMMER HE WENT WALKING AT NIGHT ON THE PLAINS AND STUMBLED OVER A CRATER AND
BRUISED HIS KNEE! Gosh!"
"Bozbar 28 -- We entered planetary orbit today, a non-human
world called Accardi-3 (although the natives call it something like
Blow'k-bibben-gordo). They're not officially part of the union. The rumors
say that we're picking up a special ambassador to take back to Tremain for
negotiations on joining the union. Tomorrow we have to put on our dress
uniforms for some special welcoming ceremony."
"August 2 -- I caught a glimpse of the alien ambassador during
the welcoming ceremonies yesterday. He looks like a cross between a tree
trunk and a melting ice cream cone. But at least the ceremony got me out of
cleaning the grotch cages today."
"August 7 -- Went to the mandatory Patrol Informational
Tri-vision Triple Feature last night. We saw 'Treatment For Space Lice
Infestation,' 'Shoreleave Shirley: How to Guard Against Contracting Alien
Diseases,' and 'The Oxygen Tank: Your Galvanized Buddy in the Vacuum.'
Blather confined half the ensigns to quarters for hooting during the second
feature. (The other half had fallen asleep during the first feature.)"
"August 24 -- TROT THAT TROTTING KRIP!! I applied for
astrophysics training for the next quarter, but Blather says my work for the
special assignment task force hasn't been good enough, so not only did he
reject my astrophysics application, but he says I'll have to take remedial
scrubbing next quarter. WHAT A TROTTING KRIP!||
You know, for the first time I'm beginning to have doubts about
whether I'm really cut out for the patrol. When I was growing up on Gallium,
it was always taken for granted that I would join up when I came of age. My
family has served in the patrol for five generations. In fact, my
great-great-grandfather was a high admiral and one of the founding fathers of
the Patrol! But I seem to be permanently stuck at Ensign 7th, and Blather is
making my life miserable..."
"Septem 4 -- We left hyperspace today at about 7600; weren't
scheduled to for about another two weeks. The grapevine says we have special
orders to investigate a planetary system here. Apparently, some of the
archaeologists back on Varshon think it might have been part of the Second
Union. I can't imagine why anyone would settle out here in this remote
corner of the galaxy."
"Septem 5 -- That krip has done it again! I missed two little
pellets of trot when I was when I was cleaning out the grotch cages yesterday,
and Blather gave me 100 demerits and assigned me two extra shifts of deck
scrubbing -- including Deck Nine, the filthiest deck on the ship! I'm
considering asking for a transfer -- or if things get worse, I might even
abandon ship!">>
<ROUTINE READ-DIARY ()
<SETG DIARY-CTR <+ ,DIARY-CTR 1>>
<COND (<EQUAL? ,DIARY-CTR 1>
<TELL "Words start to scroll across the screen:||">)>
<WORDS-ON-SCREEN>>
<ROUTINE WORDS-ON-SCREEN ()
<TELL "\"11,344 ">
<TELL <GET ,DIARY-ENTRIES ,DIARY-CTR> "\"">
<COND (<NOT <EQUAL? ,DIARY-CTR 14>>
<TELL CR CR
"The single word, \"More,\" appears at the bottom of the diary
screen, and the little button flashes.">)>
<CRLF>>
<ROOM REACTOR-LOBBY
(LOC ROOMS)
(DESC "Reactor Lobby")
(LDESC
"The corridor widens here as it nears the main drive area. To starboard is
the Ion Reactor that powers the vessel, and aft of here is the Auxiliary
Control Room. The corridor continues to port.")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST"15 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(WEST TO DECK-NINE IF CORRIDOR-DOOR IS OPEN)
(SOUTH SORRY "Ensign Blather pushes you roughly back toward your post.")
(EAST SORRY "Ensign Blather blocks your way, snarling angrily.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL CORRIDOR-DOOR)>
<ROOM GANGWAY
(LOC ROOMS)
(DESC "Gangway")
(LDESC
"This is a steep metal gangway connecting Deck Eight, above, and Deck
Nine, below.")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN"10 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(UP TO DECK-EIGHT)
(DOWN TO DECK-NINE IF GANGWAY-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GANGWAY-DOOR STAIRS)
(ACTION GANGWAY-F)>
<ROUTINE GANGWAY-F (RARG)
<COND (<EQUAL? .RARG ,M-END>
<COND (<AND <PROB 15>
<EQUAL? ,BLOWUP-COUNTER 0>>
<TELL
"You hear a distant bellowing ... something about an Ensign Seventh Class
whose life is in danger." CR>)>)>>
<ROOM DECK-EIGHT
(LOC ROOMS)
(DESC "Deck Eight")
(LDESC
"This is a featureless corridor leading port and starboard. A gangway leads
down, and to fore is the Hyperspatial Jump Machinery Room.")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN"10 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(DOWN TO GANGWAY)
(EAST SORRY "Blather throws you to the deck and makes you do 20 push-ups.")
(WEST SORRY "Blather throws you to the deck and makes you do 20 push-ups.")
(NORTH SORRY "Blather blocks your path, growling about extra galley duty.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL STAIRS)>
;<OBJECT MEASLE
(DESC "Lt. Measle")
(LDESC
"The Feinstein's record officer, Lieutenant Measle, is here.")
(SYNONYM MEASLE OFFICER)
(ADJECTIVE LT LIEUTENANT RECORD)
(FLAGS ACTORBIT)
(ACTION MEASLE-F)>
;<ROUTINE MEASLE-F ()
<COND (<VERB? ATTACK KICK>
<TELL "Lt. Measle summons Ensign Blather, who throws
you in the brig." CR>
<GOTO ,BRIG>)>>
<GLOBAL BLATHER-LEAVE 0>
<GLOBAL BRIGS-UP 0>
<ROUTINE I-BLATHER ()
<COND (<EQUAL? ,HERE ,DECK-EIGHT ,REACTOR-LOBBY>
<COND (<IN? ,BLATHER ,HERE>
<SETG BRIGS-UP <+ ,BRIGS-UP 1>>
<COND (<G? ,BRIGS-UP 3>
<TELL CR
"Blather loses his last vestige of patience and drags you to the Feinstein's
brig. He throws you in, and the door clangs shut behind you." CR CR>
<GOTO ,BRIG>
<ROB ,ADVENTURER ,CRAG>
<MOVE ,PADLOCK ,HERE>
<FCLEAR ,PADLOCK ,TAKEBIT>)
(T
<TELL CR
"\"I said to return to your post, Ensign Seventh Class!\" bellows Blather,
turning a deepening shade of crimson." CR>)>)
(<EQUAL? ,BLOWUP-COUNTER 0>
<MOVE ,BLATHER ,HERE>
<THIS-IS-IT ,BLATHER>
<TELL CR
"Ensign Blather, his uniform immaculate, enters and notices you are away
from your post. \"Twenty demerits, Ensign Seventh Class!\" bellows Blather.
\"Forty if you're not back on Deck Nine in five seconds!\" He curls his face
into a hideous mask of disgust at your unbelievable negligence." CR>)>)
(<EQUAL? ,HERE ,DECK-NINE>
<COND (<AND <EQUAL? ,BLATHER-LEAVE 3>
<IN? ,BLATHER ,HERE>>
<SETG BLATHER-LEAVE 0>
<REMOVE ,BLATHER>
<TELL CR
"Blather, adding fifty more demerits for good measure, moves off in search
of more young ensigns to terrorize." CR>)
(<IN? ,BLATHER ,DECK-NINE>
<SETG BLATHER-LEAVE <+ ,BLATHER-LEAVE 1>>
<RFALSE>)
(<AND <NOT <IN? ,AMBASSADOR ,HERE>>
<EQUAL? ,BLOWUP-COUNTER 0>
<PROB 5>>
<MOVE ,BLATHER ,HERE>
<THIS-IS-IT ,BLATHER>
<TELL CR
"Ensign First Class Blather swaggers in. He studies your work with half-closed
eyes. \"You call this polishing, Ensign Seventh Class?\" he sneers. \"We have
a position for an Ensign Ninth Class in the toilet-scrubbing division,
you know. Thirty demerits.">
<COND (<NOT <FSET? ,PATROL-UNIFORM ,WORNBIT>>
<TELL
" And another sixty for improper dress!">)>
<TELL
"\" He glares at you, his arms crossed." CR>)>)>>
<OBJECT BLATHER
(DESC "Ensign First Class")
(LDESC
"Ensign First Class Blather is standing before you, furiously scribbling
demerits onto an oversized clipboard.")
(SYNONYM ENSIGN BLATHER)
(ADJECTIVE ENSIGN FIRST CLASS)
(SIZE 150)
(FLAGS VOWELBIT ACTORBIT)
(ACTION BLATHER-F)>
<ROUTINE BLATHER-F ()
<COND (<OR <VERB? TALK HELLO>
<EQUAL? ,BLATHER ,WINNER>>
<TELL
"Blather shouts \"Speak when you're spoken to, Ensign Seventh Class!\" He
breaks three pencil points in a frenzied rush to give you more demerits." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RFATAL>)
(<VERB? ATTACK KICK>
<JIGS-UP
"Blather removes several of your appendages and internal organs.">)
(<VERB? SALUTE>
<TELL
"Blather's sneer softens a bit. \"First right thing you've done today. Only
five demerits.\"" CR>)
(<AND <VERB? THROW>
<EQUAL? ,BLATHER ,PRSI>>
<MOVE ,PRSO ,HERE>
<TELL
"The " D ,PRSO " bounces off Blather's bulbous nose. He becomes livid, orders
you to do five hundred push-ups, gives you ten thousand demerits, and assigns
you five years of extra galley duty." CR>)
(<VERB? EXAMINE>
<TELL
"Ensign Blather is a tall, beefy officer with a tremendous, misshapen nose.
His uniform is perfect in every respect, and the crease in his trousers
could probably slice diamonds in half." CR>)
(<VERB? TAKE>
<TELL
"Blather brushes you away, muttering about suspended shore leave." CR>)>>
<OBJECT AMBASSADOR
(DESC "alien ambassador")
(LDESC
"A high-ranking ambassador from a newly contacted alien race is standing
here on three of his legs, and watching you with seven of his eyes.")
(SYNONYM AMBASSADOR)
(ADJECTIVE VERY IMPORTANT ALIEN HIGH-RANKING HIGH RANKING)
(SIZE 150)
(FLAGS VOWELBIT ACTORBIT)
(ACTION AMBASSADOR-F)>
<OBJECT CELERY
(DESC "piece of celery")
(SYNONYM CELERY PIECE STALK)
(FLAGS NDESCBIT FOODBIT)
(ACTION CELERY-F)>
<ROUTINE CELERY-F ()
<COND (<VERB? EAT>
<JIGS-UP
"Oops. Looks like Blow'k-Bibben-Gordoan metabolism is not
compatible with our own. You die of all sorts of convulsions.">)
(<VERB? TAKE>
<TELL
"The ambassador seems perturbed by your lack of normal protocol." CR>)>>
<GLOBAL AMBASSADOR-LEAVE 0>
<ROUTINE I-AMBASSADOR ()
<COND (<AND <G? ,AMBASSADOR-LEAVE 2>
<IN? ,AMBASSADOR ,HERE>>
<REMOVE ,AMBASSADOR>
<REMOVE ,CELERY>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL CR
"The ambassador grunts a polite farewell, and disappears up the gangway,
leaving a trail of dripping slime." CR>)>
<DISABLE <INT I-AMBASSADOR>>)
(<IN? ,AMBASSADOR ,DECK-NINE>
<SETG AMBASSADOR-LEAVE <+ ,AMBASSADOR-LEAVE 1>>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL CR "The ambassador ">
<TELL <PICK-ONE ,AMBASSADOR-QUOTES> CR>)
(T
<RFALSE>)>)
(<EQUAL? ,HERE ,DECK-NINE>
<COND (<AND <NOT <IN? ,AMBASSADOR ,HERE>>
<NOT <IN? ,BLATHER ,HERE>>
<EQUAL? ,BLOWUP-COUNTER 0>
<PROB 15>>
<MOVE ,AMBASSADOR ,HERE>
<MOVE ,CELERY ,HERE>
<THIS-IS-IT ,AMBASSADOR>
<MOVE ,BROCHURE ,ADVENTURER>
<TELL CR
"The alien ambassador from the planet Blow'k-bibben-Gordo ambles toward you
from down the corridor. He is munching on something resembling an enormous
stalk of celery, and he leaves a trail of green slime on the deck. He stops
nearby, and you wince as a pool of slime begins forming beneath him on your
newly polished deck. The ambassador wheezes loudly and hands you a brochure
outlining his planet's major exports."CR>)>)>>
<OBJECT BROCHURE
(DESC "brochure")
(LDESC
"Unfortunately, one of those stupid Blow'k-bibben-Gordo brochures is here.")
(SYNONYM BROCHURE PAMPHLET LEAFLET)
(FLAGS ACIDBIT TAKEBIT READBIT)
(SIZE 4)
(TEXT
"\"The leading export of Blow'k-bibben-Gordo is the adventure game|
|
*** PLANETFALL ***|
|
written by S. Eric Meretzky.|
Buy one today. Better yet, buy a thousand.\"")>
<CONSTANT AMBASSADOR-QUOTES
<PLTABLE
"introduces himself as Br'gun-te'elkner-ipg'nun."
"asks if you are performing some sort of religious ceremony."
"inquires whether you are interested in a game of Bocci."
"recites a plea for coexistence between your races."
"asks where Admiral Smithers can be found."
"remarks that all humans look alike to him."
"offers you a bit of celery.">>
<ROUTINE AMBASSADOR-F ()
<COND (<OR <VERB? TALK HELLO>
<EQUAL? ,AMBASSADOR ,WINNER>>
<TELL
"The ambassador taps his translator, and then touches his center knee to his
left ear (the Blow'k-bibben-Gordoan equivalent of shrugging)." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RFATAL>)
(<AND <VERB? ASK-FOR>
<EQUAL? ,PRSI ,CELERY>>
<TELL
"The ambassador seems willing to let you eat some of it, but I doubt he wants
to part with the entire stalk." CR>)
(<VERB? ATTACK KICK>
<TELL
"The ambassador is startled, and emits an amazing quantity of slime which
spreads across the section of the deck you just polished." CR>)
(<VERB? EXAMINE>
<TELL
"The ambassador has around twenty eyes, seven of which are currently
open. Half of his six legs are retracted. Green slime oozes from
multiple orifices in his scaly skin. He speaks through a mechanical
translator slung around his neck." CR>)
(<VERB? LISTEN>
<TELL
"The alien makes a wheezing noise as he breathes." CR>)>>
<ROOM ESCAPE-POD
(LOC ROOMS)
(DESC "Escape Pod")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(EAST PER POD-EXIT-F)
(OUT PER POD-EXIT-F)
(UP PER POD-EXIT-F)
(FLAGS RLANDBIT ONBIT)
(VALUE 3)
(GLOBAL POD-DOOR CONTROLS LIGHTS GLOBAL-POD WINDOW)
(ACTION ESCAPE-POD-F)>
<OBJECT GLOBAL-POD
(LOC LOCAL-GLOBALS)
(DESC "escape pod")
(SYNONYM POD)
(ADJECTIVE EMERGENCY ESCAPE PRIMARY)
(FLAGS VOWELBIT VEHBIT NDESCBIT)
(ACTION GLOBAL-POD-F)>
<ROUTINE GLOBAL-POD-F ()
<COND (<VERB? THROUGH BOARD WALK-TO>
<COND (<EQUAL? ,HERE ,ESCAPE-POD>
<TELL "You're already in it!" CR>)
(T
<DO-WALK ,P?WEST>
<RTRUE>)>)
(<VERB? EXIT DISEMBARK DROP>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL "You're not in it!" CR>)
(T
<DO-WALK ,P?OUT>
<RTRUE>)>)
(<VERB? OPEN>
<PERFORM ,V?OPEN ,POD-DOOR>
<RTRUE>)>>
<ROUTINE POD-EXIT-F ()
<COND (<G? ,BLOWUP-COUNTER 4>
<COND (<EQUAL? ,PRSO ,P?EAST>
<TELL ,CANT-GO CR>
<RFALSE>)
(<NOT <FSET? ,POD-DOOR ,OPENBIT>>
<TELL "The pod door is closed." CR>
<RFALSE>)
(T
<SETG C-ELAPSED 30>
,UNDERWATER)>)
(T
<COND (<EQUAL? ,PRSO ,P?UP>
<TELL ,CANT-GO CR>
<RFALSE>)
(<NOT <FSET? ,POD-DOOR ,OPENBIT>>
<TELL "The pod door is closed." CR>
<RFALSE>)
(T
,DECK-NINE)>)>>
<OBJECT SAFETY-WEB
(LOC ESCAPE-POD)
(DESC "safety web")
(SYNONYM MASS WEB WEBBING NET)
(ADJECTIVE SAFETY)
(FLAGS CLIMBBIT VEHBIT NDESCBIT)
(ACTION SAFETY-WEB-F)>
<ROUTINE SAFETY-WEB-F ("OPTIONAL" (RARG ,M-OBJECT))
<COND (<AND <VERB? EXAMINE>
<EQUAL? .RARG ,M-OBJECT>>
<TELL
"The safety webbing fills most of the pod. It could accomodate
from one to, perhaps, twenty people." CR>)
(<AND <VERB? TAKE>
<EQUAL? .RARG ,M-OBJECT>>
<TELL
"The safety web seems to be more intended for getting into than
grabbing onto." CR>)
(<AND <VERB? BOARD CLIMB-ON>
<EQUAL? .RARG ,M-OBJECT>>
<GOTO ,SAFETY-WEB>
;<MOVE ,ADVENTURER ,SAFETY-WEB>
;<SETG OHERE <>> ;"arb"
<TELL
"You are now safely cushioned within the web." CR>)
(<AND <VERB? OPEN TAKE>
<EQUAL? .RARG ,M-BEG>>
<COND (<EQUAL? ,PRSO ,SAFETY-WEB>
<TELL "You're in it!" CR>)
(T
<TELL "You can't reach it from here." CR>)>)
(<AND <VERB? WALK>
<EQUAL? .RARG ,M-BEG>>
<TELL "You'll have to stand up, first." CR>)
(<AND <VERB? EXIT DISEMBARK DROP STAND>
<EQUAL? .RARG ,M-OBJECT>
<IN? ,ADVENTURER ,SAFETY-WEB>>
<GOTO ,HERE>
;<MOVE ,ADVENTURER ,HERE>
;<SETG OHERE <>> ;"arb"
<COND (<AND <G? ,TRIP-COUNTER 14>
<EQUAL? <GET <INT I-SINK-POD> ,C-ENABLED?> 0>>
<ENABLE <QUEUE I-SINK-POD -1>>
<TELL
"As you stand, the pod shifts slightly and you feel it falling.
A moment later, the fall stops with a shock, and you see water
rising past the viewport." CR>)
(T
<TELL "You are standing again." CR>)>)>>
<OBJECT TOWEL
(DESC "towel")
(SYNONYM TOWEL)
(SIZE 10)
(FLAGS READBIT TAKEBIT)
(TEXT
"\"S.P.S. FEINSTEIN|
Escape Pod #42|
Don't Panic!\"")
(ACTION TOWEL-F)>
<ROUTINE TOWEL-F ()
<COND (<VERB? EXAMINE>
<TELL
"A pretty ordinary towel. Something is written in its corner." CR>)>>
<OBJECT FOOD-KIT
(DESC "survival kit")
(SYNONYM PROVISIONS KIT)
(ADJECTIVE SURVIVAL EMERGENCY)
(SIZE 10)
(CAPACITY 25)
(FLAGS TAKEBIT CONTBIT SEARCHBIT)
(ACTION FOOD-KIT-F)>
<ROUTINE FOOD-KIT-F ()
<COND (<VERB? EMPTY>
<COND (<NOT <FSET? ,FOOD-KIT ,OPENBIT>>
<TELL "The kit is closed!" CR>)
(<FIRST? ,PRSO>
<TELL
"The goo, being gooey, sticks to the inside of the kit. You would probably
have to shake the kit to get the goo out." CR>)>)>>
<OBJECT RED-GOO
(LOC FOOD-KIT)
(DESC "blob of red goo")
(SYNONYM GOO BLOB FOOD PIE)
(ADJECTIVE RED CHERRY)
(FLAGS ACIDBIT FOODBIT)
(ACTION GOO-F)>
<OBJECT BROWN-GOO
(LOC FOOD-KIT)
(DESC "blob of brown goo")
(SYNONYM GOO BLOB FOOD STEW)
(ADJECTIVE BROWN BEEF)
(FLAGS ACIDBIT FOODBIT)
(ACTION GOO-F)>
<OBJECT GREEN-GOO
(LOC FOOD-KIT)
(DESC "blob of green goo")
(SYNONYM GOO BLOB FOOD BEANS)
(ADJECTIVE GREEN LIMA)
(FLAGS ACIDBIT FOODBIT)
(ACTION GOO-F)>
<ROUTINE GOO-F ()
<COND (<VERB? EAT>
<COND (<EQUAL? ,HUNGER-LEVEL 0>
<TELL ,NOT-HUNGRY CR>)
(<NOT <IN? ,FOOD-KIT ,ADVENTURER>>
<SETG PRSO ,FOOD-KIT>
<NOT-HOLDING>
<THIS-IS-IT ,FOOD-KIT>)
(T
<REMOVE ,PRSO>
<SETG C-ELAPSED 15>
<SETG HUNGER-LEVEL 0>
<ENABLE <QUEUE I-HUNGER-WARNINGS 1450>>
<TELL "Mmmm...that tasted just like ">
<COND (<EQUAL? ,PRSO ,BROWN-GOO>
<TELL "delicious Nebulan fungus pudding">)
(<EQUAL? ,PRSO ,RED-GOO>
<TELL "scrumptious cherry pie">)
(T
<TELL "yummy lima beans">)>
<TELL "." CR>)>)
(<VERB? TAKE DROP>
<COND (<VERB? DROP>
<TELL "The goo, being gooey, sticks where it is">)
(<VERB? TAKE>
<TELL "It would ooze through your fingers">)>
<TELL
". You'll have to eat it right from the survival kit." CR>)>>
<ROUTINE ESCAPE-POD-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is one of the Feinstein's primary escape pods, for use in extreme
emergencies. A mass of safety webbing, large enough to hold several dozen
people, fills half the pod. The controls are entirely automated. The
bulkhead leading out is ">
<DDESC ,POD-DOOR>
<TELL "." CR>)>>
<OBJECT POD-DOOR
(LOC LOCAL-GLOBALS)
(DESC "escape pod bulkhead")
(SYNONYM DOOR BULKHEAD)
(ADJECTIVE EMERGENCY ESCAPE POD)
(FLAGS VOWELBIT DOORBIT NDESCBIT)
(ACTION POD-DOOR-F)>
<ROUTINE POD-DOOR-F ()
<COND (<VERB? OPEN>
<COND (<FSET? ,POD-DOOR ,OPENBIT>
<ALREADY-OPEN>)
(<G? ,TRIP-COUNTER 14>
<FSET ,POD-DOOR ,OPENBIT>
<TELL
"The bulkhead opens and cold ocean water rushes in!" CR>)
(<G? ,BLOWUP-COUNTER 0>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL
"Too late. The pod's launching procedure has already begun." CR>)
(T
<TELL
"Opening the door now would be a phenomenally stupid idea." CR>)>)
(T
<TELL
"Why open the door to the emergency escape pod if there's no emergency?" CR>)>)
(<VERB? CLOSE>
<COND (<NOT <FSET? ,POD-DOOR ,OPENBIT>>
<IS-CLOSED>)
(T
<TELL "You can't close it yourself." CR>)>)
(<VERB? THROUGH>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<DO-WALK ,P?WEST>)
(T
<DO-WALK ,P?OUT>)>)>>
<OBJECT CORRIDOR-DOOR
(LOC LOCAL-GLOBALS)
(DESC "wide bulkhead")
(SYNONYM DOOR BULKHEAD)
(ADJECTIVE EMERGENCY WIDE)
(FLAGS INVISIBLE DOORBIT OPENBIT NDESCBIT)
(ACTION GANGWAY-DOOR-F)>
<OBJECT GANGWAY-DOOR
(LOC LOCAL-GLOBALS)
(DESC "narrow bulkhead")
(SYNONYM DOOR BULKHEAD)
(ADJECTIVE EMERGENCY NARROW)
(FLAGS INVISIBLE DOORBIT OPENBIT NDESCBIT)
(ACTION GANGWAY-DOOR-F)>
<ROUTINE GANGWAY-DOOR-F ()
<COND (<VERB? OPEN>
<COND (<FSET? ,PRSO ,OPENBIT>
<ALREADY-OPEN>)
(T
<TELL
"There doesn't seem to be any way to open it." CR>)>)
(<VERB? CLOSE>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "You can't close it yourself." CR>)
(T
<IS-CLOSED>)>)>>
<GLOBAL BLOWUP-COUNTER 0>
<ROUTINE I-BLOWUP-FEINSTEIN ()
<ENABLE <QUEUE I-BLOWUP-FEINSTEIN -1>>
<SETG BLOWUP-COUNTER <+ ,BLOWUP-COUNTER 1>>
<COND (<EQUAL? ,BLOWUP-COUNTER 5>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<JIGS-UP
"|
An enormous explosion tears the walls of the ship apart. If only you
had made it to an escape pod...">)
(T
<TELL CR
"Through the viewport of the pod you see the Feinstein dwindle as you head
away. Bursts of light dot its hull. Suddenly, a huge explosion blows the
Feinstein into tiny pieces, sending the escape pod tumbling away! " CR>
<ENABLE <QUEUE I-POD-TRIP -1>>
<DISABLE <INT I-BLOWUP-FEINSTEIN>>
<COND (<AND <NOT <IN? ,ADVENTURER ,SAFETY-WEB>>
<PROB 20>>
<JIGS-UP
"|
You are thrown against the bulkhead, head first. It seems that getting in
the safety webbing would have been a good idea.">)
(<NOT <IN? ,ADVENTURER ,SAFETY-WEB>>
<TELL CR
"You are thrown against the bulkhead, bruising a few limbs. The safety
webbing might have offered a bit more protection." CR>)>)>)
(<EQUAL? ,BLOWUP-COUNTER 4>
<DISABLE <INT I-BLATHER>>
<DISABLE <INT I-AMBASSADOR>>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL CR "Explosions continue to rock the ship." CR>)
(T
<TELL CR
"You feel the pod begin to slide down its ejection tube as explosions shake
the mother ship." CR>)>)
(<EQUAL? ,BLOWUP-COUNTER 3>
<FCLEAR ,POD-DOOR ,OPENBIT>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL CR
"More powerful explosions buffet the ship. The lights flicker madly,
and the escape-pod bulkhead clangs shut." CR>)
(<EQUAL? ,HERE ,ESCAPE-POD>
<TELL CR
"The pod door clangs shut as heavy explosions continue to buffet the
Feinstein." CR>)
(T
<JIGS-UP
"|
The ship rocks from the force of multiple explosions. The lights go out, and
you feel a sudden drop in pressure accompanied by a loud hissing. Too bad you
weren't in the escape pod...">)>)
(<EQUAL? ,BLOWUP-COUNTER 2>
<FCLEAR ,CORRIDOR-DOOR ,OPENBIT>
<FCLEAR ,CORRIDOR-DOOR ,INVISIBLE>
<FCLEAR ,GANGWAY-DOOR ,OPENBIT>
<FCLEAR ,GANGWAY-DOOR ,INVISIBLE>
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL CR
"More distant explosions! A narrow emergency bulkhead at the base of the
gangway and a wider one along the corridor to starboard both crash shut!" CR>)
(<EQUAL? ,HERE ,ESCAPE-POD ,BRIG>
<TELL CR
"The ship shakes again. You hear, from close by, the sounds of emergency
bulkheads closing." CR>)
(<EQUAL? ,HERE ,GANGWAY>
<TELL CR
"Another explosion. A narrow bulkhead at the base of the
gangway slams shut!" CR>)
(T
<TELL CR
"You are deafened by more explosions and by the sound of emergency bulkheads
slamming closed. ">
<COND (<IN? ,BLATHER ,HERE>
<TELL
"Blather, foaming slightly at the mouth, screams at you to swab the decks">)
(T
<MOVE ,BLATHER ,HERE>
<TELL
"Blather enters, looking confused, and begins ranting madly at you">)>
<TELL "." CR>)>)
(<EQUAL? ,BLOWUP-COUNTER 1>
<SETG BRIGS-UP 0>
<FSET ,POD-DOOR ,OPENBIT>
<TELL CR
"A massive explosion rocks the ship. Echoes from the explosion resound
deafeningly down the halls. ">
<COND (<EQUAL? ,HERE ,DECK-NINE>
<TELL "The door to port slides open. ">
<COND (<IN? ,AMBASSADOR ,HERE>
<REMOVE ,AMBASSADOR>
<REMOVE ,CELERY>
<TELL
"The ambassador squawks frantically, evacuates a massive load of gooey
slime, and rushes away." CR>)
(<IN? ,BLATHER ,HERE>
<REMOVE ,BLATHER>
<TELL
"Blather, confused by this nonroutine occurrence, orders you to continue
scrubbing the floor, and then dashes off." CR>)
(T
<TELL CR>)>)
(<EQUAL? ,HERE ,ESCAPE-POD ,GANGWAY ,BRIG>
<TELL CR>)
(T
<TELL
"Blather, looking slightly disoriented, barks at you to resume your assigned
duties." CR>)>)>>
<GLOBAL TRIP-COUNTER 0>
<ROUTINE I-POD-TRIP ()
<SETG TRIP-COUNTER <+ ,TRIP-COUNTER 1>>
<COND (<EQUAL? ,TRIP-COUNTER 1>
<TELL CR
"As the escape pod tumbles away from the former location of the Feinstein, its
gyroscopes whine. The pod slowly stops tumbling. Lights on the control panel
blink furiously as the autopilot searches for a reasonable destination." CR>)
(<EQUAL? ,TRIP-COUNTER 2>
<TELL CR
"The auxiliary rockets fire briefly, and a nearby planet swings into view
through the port. It appears to be almost entirely ocean, with just a few
visible islands and an unusually small polar ice cap. A moment later, the
system's sun swings into view, and the viewport polarizes into a featureless
black rectangle." CR>)
(<EQUAL? ,TRIP-COUNTER 3>
<TELL CR
"The main thrusters fire a long, gentle burst. A monotonic voice issues
from the control panel. \"Approaching planet...human-habitable.\"" CR>)
(<EQUAL? ,TRIP-COUNTER 7>
<TELL CR
"The pod is buffeted as it enters the planet's atmosphere." CR>)
(<EQUAL? ,TRIP-COUNTER 8>
<TELL CR
"You feel the temperature begin to rise, and the pod's climate
control system roars as it labors to compensate." CR>)
(<EQUAL? ,TRIP-COUNTER 9>
<TELL CR
"The viewport suddenly becomes transparent again, giving you a view of
endless ocean below. The lights on the control panel flash madly as
the pod's computer searches for a suitable landing site. The thrusters fire
long and hard, slowing the pod's descent." CR>)
(<EQUAL? ,TRIP-COUNTER 10>
<TELL CR
"The pod is now approaching the closer of a pair of islands. It appears
to be surrounded by sheer cliffs rising from the water, and is topped by
a wide plateau. The plateau seems to be covered by a sprawling complex
of buildings." CR>)
(<EQUAL? ,TRIP-COUNTER 11>
<COND (<IN? ,ADVENTURER ,SAFETY-WEB>
<MOVE ,FOOD-KIT ,HERE>
<MOVE ,TOWEL ,HERE>
<TELL CR
"The pod lands with a thud. Through the viewport you can see a rocky cleft
and some water below. The pod rocks gently back and forth as if it was
precariously balanced. A previously unseen panel slides open, revealing
some emergency provisions, including a survival kit and a towel." CR>
<SETG TRIP-COUNTER 15>
<DISABLE <INT I-POD-TRIP>>)
(T
<JIGS-UP
"|
The pod, whose automated controls were unfortunately designed by computer
scientists, lands with a good deal of force. Your body sails across the pod
until it is stopped by one of the sharper corners of the control panel.">)>)>>
<GLOBAL SINK-COUNTER 0>
<ROUTINE I-SINK-POD ()
<SETG SINK-COUNTER <+ ,SINK-COUNTER 1>>
<COND (<AND <EQUAL? ,SINK-COUNTER 3>
<EQUAL? ,HERE ,ESCAPE-POD>>
<TELL CR
"The pod is now completely submerged, and you feel it smash against underwater
rocks. Bubbles streaming upward past the window indicate that the pod is
continuing to sink." CR>)
(<AND <EQUAL? ,SINK-COUNTER 4>
<EQUAL? ,HERE ,ESCAPE-POD>
<NOT <FSET? ,POD-DOOR ,OPENBIT>>>
<TELL CR
"The pod creaks ominously from the increasing pressure." CR>)
(<AND <EQUAL? ,SINK-COUNTER 5>
<EQUAL? ,HERE ,ESCAPE-POD>>
<COND (<FSET? ,POD-DOOR ,OPENBIT>
<JIGS-UP
"|
Between the swirling waters and the increasing pressure, it's curtains
for you. Perhaps you should have left the pod a bit sooner.">)
(T
<JIGS-UP
"|
The pod splits open, and water pours in.">)>)>>
^L
"The next bunch of stuff is for the cards, slots, and associated junk."
<OBJECT SLOT
(LOC LOCAL-GLOBALS)
(DESC "slot")
(SYNONYM SLOT)
(ADJECTIVE SMALL)
(FLAGS NDESCBIT)
(ACTION SLOT-F)>
<ROUTINE SLOT-F ()
<COND (<AND <VERB? PUT>
<EQUAL? ,SLOT ,PRSI>>
<TELL
"The slot is shallow, so you can't put anything in it. It may be possible to
slide something through the slot, though." CR>)
(<VERB? EXAMINE>
<TELL
"The slot is about ten centimeters wide, but only about two centimeters deep.
It is surrounded on its long sides by parallel ridges of metal." CR>)
(<AND <VERB? SLIDE>
<EQUAL? ,SLOT ,PRSI>>
<MOVE ,PRSO ,ADVENTURER>
<COND (<FSET? ,PRSO ,SCRAMBLEDBIT>
<TELL
"A sign flashes \"Magnetik striip randumiizd...konsult Prajekt Handbuk abowt
propur kaar uv awtharazaashun kardz.\"" CR>)
(<EQUAL? ,PRSO ,KITCHEN-CARD>
<COND (<EQUAL? ,HERE ,MESS-HALL>
<COND (<FSET? ,KITCHEN-DOOR ,OPENBIT>
<TELL "Nothing happens." CR>)
(T
<FSET ,KITCHEN-DOOR ,OPENBIT>
<ENABLE <QUEUE I-KITCHEN-DOOR-CLOSES 50>>
<TELL
"The kitchen door quietly slides open." CR>
<FLOYD-REVEAL-CARD-F>
<RTRUE>)>)
(T
<TELL ,WRONG-CARD CR>)>)
(<EQUAL? ,PRSO ,UPPER-ELEVATOR-CARD>
<COND (<EQUAL? ,HERE ,UPPER-ELEVATOR>
<SETG UPPER-ELEVATOR-ON T>
<ENABLE <QUEUE I-TURNOFF-UPPER-ELEVATOR 180>>
<TELL ,ELEVATOR-ENABLED CR>
<FLOYD-REVEAL-CARD-F>
<RTRUE>)
(T
<TELL ,WRONG-CARD CR>)>)
(<EQUAL? ,PRSO ,LOWER-ELEVATOR-CARD>
<COND (<EQUAL? ,HERE ,LOWER-ELEVATOR>
<SETG LOWER-ELEVATOR-ON T>Y
<ENABLE <QUEUE I-TURNOFF-LOWER-ELEVATOR 200>>
<TELL ,ELEVATOR-ENABLED CR>)
(T
<TELL ,WRONG-CARD CR>)>)
(<EQUAL? ,PRSO ,TELEPORTATION-CARD>
<COND (<EQUAL? ,HERE ,BOOTH-1 ,BOOTH-2 ,BOOTH-3>
<SETG TELEPORTATION-ON T>
<ENABLE <QUEUE I-TURNOFF-TELEPORTATION 30>>
<TELL
"Nothing happens for a moment. Then a light flashes \"Redee.\"" CR>)
(T
<TELL ,WRONG-CARD CR>)>)
(<EQUAL? ,PRSO ,SHUTTLE-CARD>
<SHUTTLE-ACTIVATE>)
(<EQUAL? ,PRSO ,MINI-CARD>
<COND (<EQUAL? ,HERE ,MINI-BOOTH>
<SETG MINI-ACTIVATED T>
<ENABLE <QUEUE I-TURNOFF-MINI 30>>
<TELL
"A melodic high-pitched voice says \"Miniaturization and teleportation booth
activated. Please type in damaged sector number.\"" CR>)
(T
<TELL ,WRONG-CARD CR>)>)
(<EQUAL? ,PRSO ,ID-CARD>
<TELL ,WRONG-CARD CR>)>)>>
<CONSTANT ELEVATOR-ENABLED "A recorded voice chimes \"Elevator enabled.\"">
<CONSTANT WRONG-CARD
"A sign flashes \"Inkorekt awtharazaashun kard...akses deeniid.\"">
<GLOBAL CARD-REVEALED <>> ;"checks whether Floyd has already revealed his card"
<ROUTINE FLOYD-REVEAL-CARD-F ()
<COND (<AND <IN? ,FLOYD ,HERE>
<NOT ,CARD-REVEALED>
<OR <AND <EQUAL? ,DAY 2>
<L? ,INTERNAL-MOVES 5000>
<PROB 5>>
<AND <EQUAL? ,DAY 2>
<G? ,INTERNAL-MOVES 4999>
<PROB 10>>
<AND <EQUAL? ,DAY 3>
<L? ,INTERNAL-MOVES 5000>
<PROB 20>>
<AND <EQUAL? ,DAY 3>
<G? ,INTERNAL-MOVES 4999>
<PROB 40>>
<G? ,DAY 3>>>
<SETG CARD-REVEALED T>
<SETG FLOYD-SPOKE T>
<COND (<NOT ,CARD-STOLEN>
<MOVE ,LOWER-ELEVATOR-CARD ,FLOYD>
<TELL
"Floyd claps his hands with excitement. \"Those cards are really neat, huh?
Floyd has one for himself--see?\" He reaches behind one of his panels and
retrieves a magnetic-striped card. He waves it exuberantly in the air." CR>)
(T
<TELL
"Floyd bobs up and down with excitement. \"Those cards are really neat! Floyd
has one, too.\" He begins searching through his compartments, but finds
nothing. He scratches his head and looks confused." CR>)>)>>
<ROUTINE I-KITCHEN-DOOR-CLOSES ()
<COND (<EQUAL? ,HERE ,KITCHEN>
<ENABLE <QUEUE I-KITCHEN-DOOR-CLOSES -1>>
<RFALSE>)
(T
<FCLEAR ,KITCHEN-DOOR ,OPENBIT>
<DISABLE <INT I-KITCHEN-DOOR-CLOSES>>
<COND (<EQUAL? ,HERE ,MESS-HALL>
<TELL CR
"The kitchen door slides quietly closed." CR>)>)>>
^L
;"teleportation stuff"
<OBJECT TELEPORTATION-BUTTON-1
(LOC LOCAL-GLOBALS)
(DESC "brown button")
(SYNONYM BUTTON)
(ADJECTIVE BROWN FIRST)
(FLAGS NDESCBIT)
(ACTION TELEPORTATION-BUTTON-1-F)>
<OBJECT TELEPORTATION-BUTTON-2
(LOC LOCAL-GLOBALS)
(DESC "beige button")
(SYNONYM BUTTON)
(ADJECTIVE BEIGE SECOND)
(FLAGS NDESCBIT)
(ACTION TELEPORTATION-BUTTON-2-F)>
<OBJECT TELEPORTATION-BUTTON-3
(LOC LOCAL-GLOBALS)
(DESC "tan button")
(SYNONYM BUTTON)
(ADJECTIVE TAN THIRD)
(FLAGS NDESCBIT)
(ACTION TELEPORTATION-BUTTON-3-F)>
<GLOBAL TELEPORTATION-ON <>>
<ROUTINE TELEPORT (BOOTH)
<COND (<VERB? PUSH>
<COND (<EQUAL? ,TELEPORTATION-ON T>
<TELL
"You experience a strange feeling in the pit of your stomach." CR>
<COND (<IN? ,FLOYD ,HERE>
<TELL
"Floyd gives a terrified squeal, and clutches at his guidance mechanism." CR>
<SETG FLOYD-SPOKE T>
<ENABLE <QUEUE I-FLOYD 1>>)>
<ROB ,HERE .BOOTH>
<GOTO .BOOTH <>>
<DISABLE <INT I-TURNOFF-TELEPORTATION>>
<SETG TELEPORTATION-ON <>>
<RTRUE>)
(T
<TELL
"A sign flashes \"Teleportaashun buux not aktivaatid.\"" CR>)>)>>
<ROUTINE TELEPORTATION-BUTTON-1-F ()
<TELEPORT ,BOOTH-1>>
<ROUTINE TELEPORTATION-BUTTON-2-F ()
<TELEPORT ,BOOTH-2>>
<ROUTINE TELEPORTATION-BUTTON-3-F ()
<TELEPORT ,BOOTH-3>>
<ROUTINE I-TURNOFF-TELEPORTATION ()
<SETG TELEPORTATION-ON <>>
<COND (<EQUAL? ,HERE ,BOOTH-1 ,BOOTH-2 ,BOOTH-3>
<TELL CR "The ready light goes dark." CR>)>>
^L
;"shuttle system"
<OBJECT GLOBAL-SHUTTLE
(LOC LOCAL-GLOBALS)
(DESC "shuttle car")
(SYNONYM CAR SHUTTLE)
(ADJECTIVE SHUTTLE)
(FLAGS NDESCBIT)
(ACTION GLOBAL-SHUTTLE-F)>
<ROUTINE GLOBAL-SHUTTLE-F ()
<COND (<VERB? ENTER THROUGH WALK-TO BOARD>
<COND (<OR <EQUAL? ,HERE ,SHUTTLE-CAR-ALFIE
,ALFIE-CONTROL-EAST
,ALFIE-CONTROL-WEST>
<EQUAL? ,HERE ,SHUTTLE-CAR-BETTY
,BETTY-CONTROL-EAST
,BETTY-CONTROL-WEST>>
<TELL "You ARE in the shuttle car." CR>)
(T
<TELL "Use 'north' or 'south'." CR>)>)
(<VERB? EXIT DISEMBARK DROP>
<COND (<EQUAL? ,HERE ,SHUTTLE-CAR-ALFIE>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,HERE ,SHUTTLE-CAR-BETTY>
<DO-WALK ,P?SOUTH>)
(<OR <EQUAL? ,HERE ,BETTY-CONTROL-EAST
,BETTY-CONTROL-WEST>
<EQUAL? ,HERE ,ALFIE-CONTROL-EAST
,ALFIE-CONTROL-WEST>>
<TELL "You can't exit the shuttle car from here." CR>)
(T
<TELL "You're not in the shuttle car!" CR>)>)>>
<ROOM SHUTTLE-CAR-ALFIE
(LOC ROOMS)
(DESC "Shuttle Car Alfie")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(NORTH PER SHUTTLE-EXIT-F)
(EAST TO ALFIE-CONTROL-EAST)
(WEST TO ALFIE-CONTROL-WEST)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GLOBAL-SHUTTLE SHUTTLE-DOOR)
(ACTION SHUTTLE-CAR-F)>
<ROOM ALFIE-CONTROL-EAST
(LOC ROOMS)
(DESC "Alfie Control East")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(WEST TO SHUTTLE-CAR-ALFIE IF SHUTTLE-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL SLOT WINDOW LEVER SHUTTLE-DOOR GLOBAL-SHUTTLE)
(ACTION CONTROL-CABIN-F)>
<ROOM ALFIE-CONTROL-WEST
(LOC ROOMS)
(DESC "Alfie Control West")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(EAST TO SHUTTLE-CAR-ALFIE IF SHUTTLE-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL SLOT LEVER WINDOW SHUTTLE-DOOR GLOBAL-SHUTTLE)
(ACTION CONTROL-CABIN-F)>
<OBJECT LEVER
(LOC LOCAL-GLOBALS)
(DESC "lever")
(SYNONYM LEVER)
(FLAGS NDESCBIT)
(ACTION LEVER-F)>
<OBJECT SHUTTLE-DOOR
(LOC LOCAL-GLOBALS)
(DESC "door")
(SYNONYM DOOR)
(FLAGS DOORBIT OPENBIT INVISIBLE)
(ACTION SHUTTLE-DOOR-F)>
<ROUTINE SHUTTLE-CAR-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is the cabin of a large transport, with seating for around 20 people
plus space for freight. There are open doors at the eastern and western ends
of the cabin, and a doorway leads out to a wide platform to the ">
<COND (<EQUAL? ,HERE ,SHUTTLE-CAR-ALFIE>
<TELL "north">)
(T
<TELL "south">)>
<TELL "." CR>)>>
<ROOM SHUTTLE-CAR-BETTY
(LOC ROOMS)
(DESC "Shuttle Car Betty")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(SOUTH PER SHUTTLE-EXIT-F)
(EAST TO BETTY-CONTROL-EAST)
(WEST TO BETTY-CONTROL-WEST)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GLOBAL-SHUTTLE SHUTTLE-DOOR)
(ACTION SHUTTLE-CAR-F)>
<ROOM BETTY-CONTROL-EAST
(LOC ROOMS)
(DESC "Betty Control East")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(WEST TO SHUTTLE-CAR-BETTY IF SHUTTLE-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GLOBAL-SHUTTLE SLOT WINDOW LEVER SHUTTLE-DOOR)
(ACTION CONTROL-CABIN-F)>
<ROOM BETTY-CONTROL-WEST
(LOC ROOMS)
(DESC "Betty Control West")
(C-MOVE <TABLE
;"OUT" 0 ;"IN" 0 ;"DOWN" 0 ;"UP" 0
;"NW" 0 ;"WEST" 0 ;"SW" 0 ;"SOUTH" 0
;"SE" 0 ;"EAST" 0 ;"NE" 0 ;"NORTH" 0>)
(EAST TO SHUTTLE-CAR-BETTY IF SHUTTLE-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(GLOBAL GLOBAL-SHUTTLE SLOT LEVER WINDOW SHUTTLE-DOOR)
(ACTION CONTROL-CABIN-F)>
<ROUTINE CONTROL-CABIN-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a small control cabin. A control panel contains a slot, a lever,
and a display. The lever can be set at a central position, or it could be
pushed up to a position labelled \"+\", or pulled down to a position
labelled \"-\". It is currently at the ">
<COND (<EQUAL? ,LEVER-SETTING 0>
<TELL "center">)
(<EQUAL? ,LEVER-SETTING 1>
<TELL "upper">)
(T
<TELL "lower">)>
<TELL
" setting. The display, a digital readout, currently reads ">
<TELL N ,SHUTTLE-VELOCITY>
<TELL ". Through the cabin window you can see ">
<DESCRIBE-VIEW>
<TELL CR>)>>
<ROUTINE DESCRIBE-VIEW ()
<COND (<OR <AND <EQUAL? ,HERE ,ALFIE-CONTROL-WEST>
,ALFIE-AT-KALAMONTEE>
<AND <EQUAL? ,HERE ,BETTY-CONTROL-WEST>
,BETTY-AT-KALAMONTEE>
<AND <EQUAL? ,HERE ,ALFIE-CONTROL-EAST>
<NOT ,ALFIE-AT-KALAMONTEE>>
<AND <EQUAL? ,HERE ,BETTY-CONTROL-EAST>
<NOT ,BETTY-AT-KALAMONTEE>>>
<TELL "a featureless concrete wall.">)
(<AND ,SHUTTLE-MOVING
<EQUAL? ,SHUTTLE-COUNTER 23>>
<TELL
"parallel rails ending at a brightly lit station ahead.">)
(T
<TELL "parallel rails running along the floor of a long
tunnel, vanishing in the distance.">)>>
<ROUTINE SHUTTLE-DOOR-F ()
<COND (<VERB? OPEN>
<COND (,SHUTTLE-MOVING
<TELL
"A recorded voice says \"Operator should remain in control cabin while shuttle
car is between stations.\"" CR>)
(T
<TELL "Are you sure it isn't?" CR>)>)>>
<ROUTINE SHUTTLE-ENTER-F ()
<COND (<EQUAL? ,HERE ,KALAMONTEE-PLATFORM>
<COND (<EQUAL? ,PRSO ,P?NORTH>
<COND (,BETTY-AT-KALAMONTEE
,SHUTTLE-CAR-BETTY)
(T
<TELL ,CANT-GO CR>
<RFALSE>)>)
(<EQUAL? ,PRSO ,P?SOUTH>
<COND (,ALFIE-AT-KALAMONTEE
,SHUTTLE-CAR-ALFIE)
(T
<TELL ,CANT-GO CR>
<RFALSE>)>)>)
(<EQUAL? ,HERE ,LAWANDA-PLATFORM>
<COND (<EQUAL? ,PRSO, P?NORTH>
<COND (,BETTY-AT-KALAMONTEE
<TELL ,CANT-GO CR>
<RFALSE>)
(T
,SHUTTLE-CAR-BETTY)>)
(<EQUAL? ,PRSO ,P?SOUTH>
<COND (,ALFIE-AT-KALAMONTEE
<TELL ,CANT-GO CR>
<RFALSE>)
(T
,SHUTTLE-CAR-ALFIE)>)>)>>
<CONSTANT CANT-GO "You can't go that way.">
<ROUTINE SHUTTLE-EXIT-F ()
<COND (<EQUAL? ,HERE ,SHUTTLE-CAR-ALFIE>
<COND (,ALFIE-AT-KALAMONTEE
,KALAMONTEE-PLATFORM)
(T
,LAWANDA-PLATFORM)>)
(<EQUAL? ,HERE ,SHUTTLE-CAR-BETTY>
<COND (,BETTY-AT-KALAMONTEE
,KALAMONTEE-PLATFORM)
(T
,LAWANDA-PLATFORM)>)>>
<GLOBAL ALFIE-AT-KALAMONTEE T> ;"true if Alfie is at Kalamontee Station"
<GLOBAL BETTY-AT-KALAMONTEE <>> ;"true if Betty is at Kalamontee Station"
<GLOBAL SHUTTLE-MOVING <>> ;"true if Shuttle is between Stations"
<GLOBAL SHUTTLE-ON <>> ;"true if shuttle is activated"
<GLOBAL SHUTTLE-VELOCITY 0>
<GLOBAL SHUTTLE-COUNTER 0> ;"number of moves in shuttle trip so far"
<ROUTINE SHUTTLE-ACTIVATE ()
<COND (<AND <NOT <EQUAL? ,HERE ,ALFIE-CONTROL-EAST
,ALFIE-CONTROL-WEST>>
<NOT <EQUAL? ,HERE ,BETTY-CONTROL-EAST
,BETTY-CONTROL-WEST>>>
<TELL ,WRONG-CARD CR>
<RTRUE>)
(<OR <AND ,ALFIE-BROKEN
<EQUAL? ,HERE ,ALFIE-CONTROL-EAST ,ALFIE-CONTROL-WEST>>
<AND ,BETTY-BROKEN
<EQUAL? ,HERE ,BETTY-CONTROL-EAST ,BETTY-CONTROL-WEST>>>
<TELL
"A garbled recording mentions that the shuttle car has undergone some
damage and that the repair robot has been summoned." CR>
<RTRUE>)
(<G? ,INTERNAL-MOVES 6000>
<TELL
"A recorded voice explains that using the shuttle car during the evening
hours requires special authorization." CR>
<RTRUE>)>
<COND (<EQUAL? ,HERE ,ALFIE-CONTROL-EAST>
<COND (,SHUTTLE-ON
<TELL ,SHUTTLE-RECORDING-1 CR>)
(<NOT ,ALFIE-AT-KALAMONTEE>
<TELL ,SHUTTLE-RECORDING-2 CR>)
(T
<SETG SHUTTLE-ON T>
<ENABLE <QUEUE I-TURNOFF-SHUTTLE 80>>
<TELL ,SHUTTLE-RECORDING-3 CR>)>)
(<EQUAL? ,HERE ,ALFIE-CONTROL-WEST>
<COND (,SHUTTLE-ON
<TELL ,SHUTTLE-RECORDING-1 CR>)
(,ALFIE-AT-KALAMONTEE
<TELL ,SHUTTLE-RECORDING-2 CR>)
(T
<SETG SHUTTLE-ON T>
<ENABLE <QUEUE I-TURNOFF-SHUTTLE 80>>
<TELL ,SHUTTLE-RECORDING-3 CR>)>)
(<EQUAL? ,HERE ,BETTY-CONTROL-EAST>
<COND (,SHUTTLE-ON
<TELL ,SHUTTLE-RECORDING-1 CR>)
(<NOT ,BETTY-AT-KALAMONTEE>
<TELL ,SHUTTLE-RECORDING-2 CR>)
(T
<SETG SHUTTLE-ON T>
<ENABLE <QUEUE I-TURNOFF-SHUTTLE 80>>
<TELL ,SHUTTLE-RECORDING-3 CR>)>)
(<EQUAL? ,HERE ,BETTY-CONTROL-WEST>
<COND (,SHUTTLE-ON
<TELL ,SHUTTLE-RECORDING-1 CR>)
(,BETTY-AT-KALAMONTEE
<TELL ,SHUTTLE-RECORDING-2 CR>)
(T
<SETG SHUTTLE-ON T>
<ENABLE <QUEUE I-TURNOFF-SHUTTLE 80>>
<TELL ,SHUTTLE-RECORDING-3 CR>)>)
(T
<TELL ,WRONG-CARD CR>)>>
<CONSTANT SHUTTLE-RECORDING-1
"A recorded voice says \"Shuttle controls are already activated.\"">
<CONSTANT SHUTTLE-RECORDING-2
"A recorded voice says \"Use other control cabin. Control activation
overridden.\"">
<CONSTANT SHUTTLE-RECORDING-3
"A recording of a deep male voice says \"Shuttle controls activated.\"">
<CONSTANT SHUTTLE-RECORDING-4
"A recorded voice says \"Shuttle controls are not currently activated.\"">
<ROUTINE I-TURNOFF-SHUTTLE ()
<COND (,SHUTTLE-MOVING
<ENABLE <QUEUE I-TURNOFF-SHUTTLE 80>>)
(T
<SETG SHUTTLE-ON <>>)>
<RFALSE>>
<GLOBAL LEVER-SETTING 0> ;"0 is the center position, 1 the upper, -1 the lower"
<ROUTINE LEVER-F ()
<COND (<VERB? PUSH PUSH-UP>
<COND (,SHUTTLE-ON
<COND (<EQUAL? ,LEVER-SETTING 1>
<TELL
"The lever is already in the upper position." CR>)
(<EQUAL? ,LEVER-SETTING 0>
<SETG LEVER-SETTING 1>
<ENABLE <QUEUE I-SHUTTLE 1>>
<TELL
"The lever is now in the upper position." CR>)
(T
<SETG LEVER-SETTING 0>
<TELL
"The lever is now in the central position." CR>)>)
(T
<TELL ,SHUTTLE-RECORDING-4 CR>)>)
(<VERB? PULL PUSH-DOWN>
<COND (,SHUTTLE-ON
<COND (<EQUAL? ,LEVER-SETTING 1>
<SETG LEVER-SETTING 0>
<TELL
"The lever is now in the central position." CR>)
(<EQUAL? ,LEVER-SETTING 0>
<COND (<EQUAL? ,SHUTTLE-VELOCITY 0>
<TELL
"The lever immediately pops back to the central position." CR>)
(T
<SETG LEVER-SETTING -1>
<ENABLE <QUEUE I-SHUTTLE 1>>
<TELL
"The lever is now in the lower position." CR>)>)
(T
<TELL
"The lever is already in the lower position." CR>)>)
(T
<TELL ,SHUTTLE-RECORDING-4 CR>)>)>>
<ROUTINE I-SHUTTLE ()
<ENABLE <QUEUE I-SHUTTLE -1>>
<COND (<NOT ,SHUTTLE-MOVING>
<SETG SHUTTLE-MOVING T>
<FCLEAR ,SHUTTLE-DOOR ,OPENBIT>
<FCLEAR ,SHUTTLE-DOOR ,INVISIBLE>
<TELL
"The control cabin door slides shut and the shuttle car begins to move ">
<COND (<EQUAL? ,LEVER-SETTING 1>
<SETG SHUTTLE-VELOCITY <+ ,SHUTTLE-VELOCITY 5>>
<TELL
"forward! The display changes to 5." CR>)
;(<EQUAL? ,LEVER-SETTING -1>
<TELL "backward. You hear a loud crunch as the
shuttle car runs into the rear wall of the station.">
<SETG SHUTTLE-ON <>>
<SETG SHUTTLE-MOVING <>>
<SETG LEVER-SETTING 0>
<SETG SHUTTLE-ON <>>
<FSET ,SHUTTLE-DOOR ,INVISIBLE>
<FSET ,SHUTTLE-DOOR ,OPENBIT>
<DISABLE <INT I-SHUTTLE>>)>)
(T
<COND (<G? ,SHUTTLE-VELOCITY 0>
<SETG SHUTTLE-COUNTER <+ ,SHUTTLE-COUNTER 1>>)>
<COND (<EQUAL? ,LEVER-SETTING 1>
<SETG SHUTTLE-VELOCITY <+ ,SHUTTLE-VELOCITY 5>>)
(<EQUAL? ,LEVER-SETTING -1>
<COND (<G? ,SHUTTLE-VELOCITY 0>
<SETG SHUTTLE-VELOCITY <- ,SHUTTLE-VELOCITY 5>>)
(T
<SETG LEVER-SETTING 0>
<TELL
"The shuttle car comes to a stop and the lever pops back to the central
position." CR>)>)>
<COND (<EQUAL? ,SHUTTLE-COUNTER 24>
<DESCRIBE-SHUTTLE-ARRIVE>)
(<G? ,SHUTTLE-VELOCITY 0>
<DESCRIBE-SHUTTLE-TRIP>
<RTRUE>)>)>>
<ROUTINE DESCRIBE-SHUTTLE-TRIP ()
<TELL
"The shuttle car continues to move. The display ">
<COND (<EQUAL? ,LEVER-SETTING 0>
<TELL "still reads ">)
(T
<TELL "blinks, and now reads ">)>
<TELL N ,SHUTTLE-VELOCITY>
<TELL "." CR>
<COND (<EQUAL? ,SHUTTLE-COUNTER 2>
<TELL
"You pass a sign which says \"Limit 45.\"" CR>)>
<COND (<EQUAL? ,SHUTTLE-COUNTER 12>
<TELL
"The tunnel levels out and begins to slope upward. A sign flashes by which
reads \"Hafwaa Mark -- Beegin Deeseluraashun.\"" CR>)>
<COND (<EQUAL? ,SHUTTLE-COUNTER 20>
<TELL ,SIGN-PASS>
<TELL "\"15.\"" CR>)>
<COND (<EQUAL? ,SHUTTLE-COUNTER 21>
<TELL ,SIGN-PASS>
<TELL "\"10.\"" CR>)>
<COND (<EQUAL? ,SHUTTLE-COUNTER 22>
<TELL ,SIGN-PASS>
<TELL "\"5.\"" CR>)>
<COND (<EQUAL? ,SHUTTLE-COUNTER 23>
<TELL
"The shuttle car is approaching a brightly lit area. As you near it, you
make out the concrete platforms of a shuttle station." CR>)>>
<GLOBAL ALFIE-BROKEN <>>
<GLOBAL BETTY-BROKEN <>>
<ROUTINE DESCRIBE-SHUTTLE-ARRIVE ()
<COND (<EQUAL? ,SHUTTLE-COUNTER 24>
<COND (<EQUAL? ,SHUTTLE-VELOCITY 0>
<TELL
"The shuttle car glides into the station and comes to rest at the concrete
platform. You hear the cabin doors slide open." CR>)
(<L? ,SHUTTLE-VELOCITY 20>
<COND (<EQUAL? ,HERE ,ALFIE-CONTROL-EAST
,ALFIE-CONTROL-WEST>
<SETG ALFIE-BROKEN T>)
(T
<SETG BETTY-BROKEN T>)>
<TELL
"The shuttle car rumbles through the station and smashes into the wall at
the far end. You are thrown forward into the control panel. Both you
and the shuttle car produce unhealthy crunching sounds as the cabin
doors creak slowly open." CR>)
(T
<JIGS-UP
"The shuttle car hurtles past the platforms and rams into the wall at the
far end of the station. The shuttle car is destroyed, but you're in no
condition to care.">)>
<SETG SHUTTLE-VELOCITY 0>
<SETG SHUTTLE-MOVING <>>
<SETG SHUTTLE-COUNTER 0>
<SETG LEVER-SETTING 0>
<SETG SHUTTLE-ON <>>
<FSET ,SHUTTLE-DOOR ,INVISIBLE>
<FSET ,SHUTTLE-DOOR ,OPENBIT>
<DISABLE <INT I-SHUTTLE>>
<COND (<EQUAL? ,HERE ,ALFIE-CONTROL-EAST ,ALFIE-CONTROL-WEST>
<COND (,ALFIE-AT-KALAMONTEE
<SETG ALFIE-AT-KALAMONTEE <>>)
(T
<SETG ALFIE-AT-KALAMONTEE T>)>)
(T
<COND (,BETTY-AT-KALAMONTEE
<SETG BETTY-AT-KALAMONTEE <>>)
(T
<SETG BETTY-AT-KALAMONTEE T>)>)>)>>
<CONSTANT SIGN-PASS
"You pass a sign, surrounded by blinking red lights, which says ">
^L
"To sleep, perchance to dream..."
<GLOBAL SLEEPY-LEVEL 0>
<ROUTINE I-SLEEP-WARNINGS ()
<SETG SLEEPY-LEVEL <+ ,SLEEPY-LEVEL 1>>
<COND (<IN? ,ADVENTURER ,BED>
<TELL CR
"You suddenly realize how tired you were and how comfortable the bed is.
You should be asleep in no time." CR>
<DISABLE <INT I-SLEEP-WARNINGS>>
<ENABLE <QUEUE I-FALL-ASLEEP 16>>
<RTRUE>)>
<COND (<EQUAL? ,SLEEPY-LEVEL 1>
<TELL CR
"You begin to feel weary. It might be time to think about finding
a nice safe place to sleep." CR>
<ENABLE <QUEUE I-SLEEP-WARNINGS 400>>)
(<EQUAL? ,SLEEPY-LEVEL 2>
<TELL CR
"You're really tired now. You'd better find a place to sleep real soon." CR>
<ENABLE <QUEUE I-SLEEP-WARNINGS 135>>)
(<EQUAL? ,SLEEPY-LEVEL 3>
<TELL CR
"If you don't get some sleep soon you'll probably drop." CR>
<ENABLE <QUEUE I-SLEEP-WARNINGS 60>>)
(<EQUAL? ,SLEEPY-LEVEL 4>
<TELL CR "You can barely keep your eyes open." CR>
<ENABLE <QUEUE I-SLEEP-WARNINGS 50>>)
(<EQUAL? ,SLEEPY-LEVEL 5>
<COND (<EQUAL? ,HERE ,BED>
<TELL CR
"You slowly sink into a deep and blissful sleep." CR>
<DREAMING>)
(<OR <EQUAL? ,HERE ,DORM-A ,DORM-B>
<EQUAL? ,HERE ,DORM-C ,DORM-D>>
<TELL CR
"You climb into one of the bunk beds and immediately fall asleep." CR>
<GOTO ,BED> ;"arb"
;<MOVE ,ADVENTURER ,BED>
;<SETG OHERE <>>
<DREAMING>)
(T
<TELL CR
"You can't stay awake a moment longer. You drop to the ground and fall
into a deep but fitful sleep." CR>
<COND (<OR <AND <EQUAL? ,DAY 1>
<EQUAL? ,HERE ,CRAG>>
<AND <EQUAL? ,DAY 3>
<EQUAL? ,HERE ,BALCONY>>
<AND <EQUAL? ,DAY 5>
<EQUAL? ,HERE ,WINDING-STAIR>>>
<JIGS-UP
"|
|
|
Suddenly, in the middle of the night, a wave of water washes over you. Before
you can quite get your bearings, you drown.">)
(<PROB 30>
<JIGS-UP
"|
|
|
Suddenly, in the middle of the night, you awake as several ferocious beasts
(could they be grues?) surround and attack you. Perhaps you should have found
a slightly safer place to sleep.">)
(T
<DREAMING>)>)>)>>
<OBJECT BED
(LOC LOCAL-GLOBALS)
(DESC "bed")
(SYNONYM BUNK BED)
(ADJECTIVE MULTI TIERED MULTI-TIERED BUNK)
(FLAGS NDESCBIT CLIMBBIT VEHBIT)
(ACTION BED-F)>
<ROUTINE BED-F ("OPTIONAL" (RARG ,M-OBJECT))
<COND (<AND <VERB? WALK>
<EQUAL? .RARG ,M-BEG>>
<TELL "You'll have to stand up, first." CR>)
(<AND <VERB? TAKE OPEN CLOSE RUB>
<EQUAL? .RARG ,M-BEG>
<NOT <EQUAL? ,PRSO ,BED>>>
<TELL "You can't reach it from here." CR>)
(.RARG
<RFALSE>)
(<VERB? THROUGH BOARD WALK-TO>
<COND (<EQUAL? ,HERE ,INFIRMARY>
<JIGS-UP
"You climb into the bed. It is soft and comfortable. After a few moments, a
previously unseen panel opens, and a diagnostic robot comes wheeling out. It
is very rusty and sways unsteadily, bumping into several pieces of infirmary
equipment as it crosses the room. As the robot straps you to the bed, you
notice some smoke curling from its cracks. Beeping happily, the robot injects
you with all 347 serums and medicines it carries. The last thing you notice
before you pass out is the robot preparing to saw your legs off.">)
(<G? ,SLEEPY-LEVEL 0>
<GOTO ,BED> ;"arb"
;<MOVE ,ADVENTURER ,BED>
;<SETG OHERE <>>
<ENABLE <QUEUE I-FALL-ASLEEP 16>>
<DISABLE <INT I-SLEEP-WARNINGS>>
<TELL
"Ahhh...the bed is soft and comfortable. You should be asleep in short
order." CR>)
(T
<GOTO ,BED> ;"arb"
;<MOVE ,ADVENTURER ,BED>
;<SETG OHERE <>>
<TELL "You are now in bed." CR>)>)
(<AND <VERB? DISEMBARK STAND EXIT DROP>
<GET <INT I-FALL-ASLEEP> ,C-TICK>>
<TELL
"How could you suggest such a thing when you're so tired and this
bed is so comfy?" CR>)
(<VERB? LEAVE EXIT DROP>
<PERFORM ,V?DISEMBARK ,BED>
<RTRUE>)
(<AND <VERB? PUT> <EQUAL? ,BED ,PRSI>>
<MOVE ,PRSO ,HERE>
<TELL
"The " D ,PRSO " bounces off the bed and lands on the floor." CR>)>>
<ROUTINE I-FALL-ASLEEP ()
<TELL CR "You slowly sink into a deep and restful sleep." CR>
<DISABLE <INT I-FALL-ASLEEP>>
<DREAMING>>
<ROUTINE DREAMING ()
<COND (<AND <FSET? ,FORK ,TOUCHBIT>
<PROB 13>>
<TELL
"You are in a busy office crowded with people. The only one you
recognize is Floyd. He rushes back and forth between the desks, carrying
papers and delivering coffee. He notices you, and asks how your project
is coming, and whether you have time to tell him a story. You look into
his deep, trusting eyes..." CR>)
(<PROB 60>
<CRLF>
<TELL <PICK-ONE ,DREAMS> CR>)>
<WAKING-UP>>
<CONSTANT DREAMS
<PLTABLE
"...You find yourself on the bridge of the Feinstein. Ensign Blather is here,
as well as Admiral Smithers. You are diligently scrubbing the control panel.
Blather keeps yelling at you to scrub harder. Suddenly you hit the ship's
self-destruct switch! Smithers and Blather howl at you as the ship begins
exploding! You try to run, but your feet seem to be fused to the deck..."
"...You gulp down the last of your Ramosian Fire Nectar and ask the
andro-waiter for another pitcher. This pub makes the finest Nectar on
all of Ramos Two, and you and your shipmates are having a pretty rowdy
time. Through the windows of the pub you can see a mighty, ancient castle,
shining in the light of the three Ramosian moons. The Fire Nectar spreads
through your blood and you begin to feel drowsy..."
"...Strangely, you wake to find yourself back home on Gallium. Even more
strangely, you are only eight years old again. You are playing with your
pet sponge-cat, Swanzo, on the edge of the pond in your backyard. Mom is
hanging orange towels on the clothesline. Suddenly the school bully jumps
out from behind a bush, grabs you, and pushes your head under the water.
You try to scream, but cannot. You feel your life draining away..."
"...Your vision slowly returns. You are on a wooded cliff overlooking
a waterfall. A rainbow spans the falls. Blather stands above you, bellowing
that the ground is filthy -- scrub harder! You throw your brush at Blather,
but it passes thru him as though he were a ghost, and sails over the cliff.
Blather leaps after the valuable piece of Patrol property, and both plummet
into the void..."
"...At last, the Feinstein has arrived at the historic Nebulon system. It's
been five months since the last shore leave, and you're anxious for
Planetfall. You and some other Ensigns Seventh Class enter the shuttle for
surfaceside. Suddenly, you're alone on the shuttle, and it's tumbling out of
control! It lands in the ocean and begins sinking! You try to clamber out,
but you are stuck in a giant spider web. A giant spider crawls closer and
closer...">>
<ROUTINE WAKING-UP ("AUX" X N)
<SETG DAY <+ ,DAY 1>>
<SETG SICKNESS-WARNING-FLAG T>
<SETG SLEEPY-LEVEL 0>
<RESET-TIME>
<SET X <FIRST? ,ADVENTURER>>
<REPEAT ()
<COND (.X
<SET N <NEXT? .X>>
<COND (<NOT <FSET? .X ,WORNBIT>>
<MOVE .X ,HERE>)>
<COND (<AND <EQUAL? .X ,CANTEEN>
<IN? ,HIGH-PROTEIN ,CANTEEN>
<FSET? ,CANTEEN ,OPENBIT>>
<REMOVE ,HIGH-PROTEIN>)>
<COND (<AND <EQUAL? .X ,FLASK>
<IN? ,CHEMICAL-FLUID ,FLASK>>
<REMOVE ,CHEMICAL-FLUID>)>
<SET X .N>)
(T
<RETURN>)>>
<TELL
"|
***** SEPTEM " N <+ ,DAY 5> ", 11344 *****|
|">
<COND (<NOT <IN? ,ADVENTURER ,BED>>
<TELL
"You wake and slowly stand up, feeling stiff from your
night on the floor.">)
(<L? ,SICKNESS-LEVEL 3>
<TELL
"You wake up feeling refreshed and ready to face the challenges of this
mysterious world.">)
(<L? ,SICKNESS-LEVEL 6>
<TELL
"You wake after sleeping restlessly. You feel weak and listless.">)
(T
<TELL
"You wake feeling weak and worn-out. It will be an effort just to stand up.">)>
<COND (<G? ,HUNGER-LEVEL 0>
<SETG HUNGER-LEVEL 4>
<ENABLE <QUEUE I-HUNGER-WARNINGS 100>>
<TELL
" You are also incredibly famished. Better get some breakfast!">)
(T
<ENABLE <QUEUE I-HUNGER-WARNINGS 400>>)>
<CRLF>
<COND (<AND <FSET? ,FLOYD ,RLANDBIT>
,FLOYD-INTRODUCED>
<MOVE ,FLOYD ,HERE>
<SETG FLOYD-SPOKE T>
<COND (<IN? ,ADVENTURER ,BED>
<TELL
"Floyd bounces impatiently at the foot of the bed. \"About time you woke
up, you lazy bones! Let's explore around some more!\"" CR>)
(T
<TELL
"Floyd gives you a nudge with his foot and giggles. \"You sure look silly
sleeping on the floor,\" he says." CR>)>)>>
<ROUTINE RESET-TIME ()
<COND (<EQUAL? ,DAY 2>
<FCLEAR ,BALCONY ,TOUCHBIT>
<SETG INTERNAL-MOVES <+ 1600 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 5800>>)
(<EQUAL? ,DAY 3>
<FCLEAR ,BALCONY ,TOUCHBIT>
<SETG INTERNAL-MOVES <+ 1750 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 5550>>)
(<EQUAL? ,DAY 4>
<FCLEAR ,WINDING-STAIR ,TOUCHBIT>
<SETG INTERNAL-MOVES <+ 1950 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 5200>>)
(<EQUAL? ,DAY 5>
<FCLEAR ,WINDING-STAIR ,TOUCHBIT>
<SETG INTERNAL-MOVES <+ 2150 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 4800>>)
(<EQUAL? ,DAY 6>
<FCLEAR ,COURTYARD ,TOUCHBIT>
<SETG INTERNAL-MOVES <+ 2450 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 4300>>)
(<EQUAL? ,DAY 7>
<FCLEAR ,COURTYARD ,TOUCHBIT>
<SETG INTERNAL-MOVES <+ 2800 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 3700>>)
(<EQUAL? ,DAY 8>
<SETG INTERNAL-MOVES <+ 3200 <RANDOM 80>>>
<ENABLE <QUEUE I-SLEEP-WARNINGS 3000>>)
(<EQUAL? ,DAY 9>
<JIGS-UP
"Unfortunately, you don't seem to have survived the night.">)>>
^L
"Feed me!"
<GLOBAL HUNGER-LEVEL 0>
<ROUTINE I-HUNGER-WARNINGS ()
<SETG HUNGER-LEVEL <+ ,HUNGER-LEVEL 1>>
<COND (<EQUAL? ,HUNGER-LEVEL 1>
<ENABLE <QUEUE I-HUNGER-WARNINGS 450>>
<TELL CR
"A growl from your stomach warns that you're getting pretty hungry and
thirsty." CR>)
(<EQUAL? ,HUNGER-LEVEL 2>
<ENABLE <QUEUE I-HUNGER-WARNINGS 150>>
<TELL CR
"You're now really ravenous and your lips are quite parched." CR>)
(<EQUAL? ,HUNGER-LEVEL 3>
<ENABLE <QUEUE I-HUNGER-WARNINGS 100>>
<TELL CR
"You're starting to feel faint from lack of food and liquid." CR>)
(<EQUAL? ,HUNGER-LEVEL 4>
<ENABLE <QUEUE I-HUNGER-WARNINGS 50>>
<TELL CR
"If you don't eat or drink something in a few millichrons, you'll probably
pass out." CR>)
(<EQUAL? ,HUNGER-LEVEL 5>
<JIGS-UP
"|
You collapse from extreme thirst and hunger.">)>>
<CONSTANT NOT-HUNGRY "Thanks, but you're not hungry.">
^L
"Sickness and disease"
<GLOBAL SICKNESS-LEVEL 0>
<GLOBAL SICKNESS-WARNING-FLAG <>>
<ROUTINE I-SICKNESS-WARNINGS ()
<ENABLE <QUEUE I-SICKNESS-WARNINGS 700>>
<COND (,SICKNESS-WARNING-FLAG
<SETG SICKNESS-WARNING-FLAG <>>
<SETG LOAD-ALLOWED <- ,LOAD-ALLOWED 10>>
<SETG SICKNESS-LEVEL <+ ,SICKNESS-LEVEL 1>>
<COND (<EQUAL? ,SICKNESS-LEVEL 1>
<TELL CR
"You notice that you feel a bit weak and slightly flushed,
but you're not sure why." CR>)
(<EQUAL? ,SICKNESS-LEVEL 2>
<TELL CR
"You notice that you feel unusually weak, and you suspect
that you have a fever." CR>)
(<EQUAL? ,SICKNESS-LEVEL 3>
<TELL CR
"You are now feeling quite under the weather, not unlike a bad flu." CR>)
(<EQUAL? ,SICKNESS-LEVEL 4>
<TELL CR
"Your fever seems to have gotten worse, and you're
developing a bad headache." CR>)
(<EQUAL? ,SICKNESS-LEVEL 5>
<TELL CR
"Your health has deteriorated further. You feel hot and weak, and your
head is throbbing." CR>)
(<EQUAL? ,SICKNESS-LEVEL 6>
<TELL CR
"You feel very, very sick, and have almost no strength left." CR>)
(<EQUAL? ,SICKNESS-LEVEL 7>
<TELL CR
"You feel like you're on fire, burning up from the fever. You're almost too
weak to move, and your brain is reeling from the pounding headache." CR>)
(<EQUAL? ,SICKNESS-LEVEL 8>
<TELL CR
"You're no longer sure of where you are and what you're doing. You stumble
about, your pain subsiding into a dull numbness." CR>)
(<EQUAL? ,SICKNESS-LEVEL 9>
<JIGS-UP
"|
You finally succumb to the ravages of your illness and collapse.">)>)>>
"Oh, Boy! Pseudo objects!"
<ROUTINE TRANSLATOR-PSEUDO ()
<COND (<IN? ,AMBASSADOR ,HERE>
<COND (<VERB? TAKE>
<TELL
"The ambassador whimpers and slaps your wrist." CR>)
(<VERB? MUNG>
<TELL
"Are you trying to create an interplanetary incident?" CR>)>)
(T
<TELL "What translator?" CR>)>>
<ROUTINE SLIME-PSEUDO ()
<COND (<OR <IN? ,AMBASSADOR ,HERE>
<G? ,AMBASSADOR-LEAVE 0>>
<COND (<VERB? EAT TASTE>
<LIKE-SLIME "tastes">)
(<VERB? TAKE RUB>
<LIKE-SLIME "feels">)
(<VERB? EXAMINE>
<LIKE-SLIME "looks">)
(<VERB? SMELL>
<LIKE-SLIME "smells">)
(<VERB? SCRUB REMOVE>
<TELL
"Whew. You've cleaned up maybe one ten-thousandth of the slime.">
<COND (<NOT <IN? ,BLATHER ,HERE>>
<TELL
" If you hurry, it might be all cleaned up before Ensign Blather gets here.">)>
<CRLF>)>)
(T
<TELL "What slime?" CR>)>>
<ROUTINE LIKE-SLIME (STRING)
<TELL "It ">
<TELL .STRING>
<TELL " like slime. Aren't you glad you didn't step in it?" CR>>
<ROUTINE GRAFFITI-PSEUDO ()
<COND (<VERB? READ>
<SETG C-ELAPSED 28>
<TELL "All the graffiti seem to be about Blather. One of
the least obscene items reads:|
|
There once was a krip, name of Blather|
Who told a young Ensign named Smather|
\"I'll make you inherit|
A trotting demerit|
And ship you off to those stinking fawg-infested tar pools of Krather.\"|
|
It's not a very good limerick, is it?" CR>)>>
<ROUTINE DOOR-PSEUDO ()
<COND (<VERB? OPEN UNLOCK>
<TELL "No way, Jose." CR>)>>
<ROUTINE WALKWAY-PSEUDO ()
<COND (<VERB? EXAMINE LAMP-ON>
<TELL "The walkway, which hastened the trip down that
long corridor, is no longer in service." CR>)>>
<ROUTINE BENCH-PSEUDO ()
<COND (<VERB? CLIMB-ON BOARD>
<TELL "The benches look uncomfortable." CR>)>>
<ROUTINE CATWALK-PSEUDO ()
<COND (<VERB? CLIMB-ON CLIMB-UP CLIMB-FOO>
<TELL "The catwalks are too high for you to access." CR>)>>
<ROUTINE EQUIPMENT-PSEUDO ()
<COND (<VERB? EXAMINE RUB LAMP-ON LAMP-OFF>
<TELL
"The equipment here is so complicated that you couldn't even begin to
figure out how to operate it." CR>)>>
<ROUTINE MONITORS-PSEUDO ()
<COND (<VERB? EXAMINE READ>
<DESCRIBE-MONITORS>)>>
<ROUTINE MURAL-PSEUDO ()
<COND (,COMPUTER-FIXED
<ANYMORE>)
(T
<COND (<VERB? EXAMINE>
<TELL
"It's a gaudy work of orange and purple abstract shapes, reminiscent of the
early works of Burstini Bonz. It doesn't appear to fit the decor of the room
at all. The mural seems to ripple now and then, as though a breeze were
blowing behind it." CR>)
(<VERB? MUNG>
<TELL "My sentiments also, but let's be civil." CR>)
(<VERB? MOVE LOOK-BEHIND>
<TELL "It won't budge." CR>)>)>>
<ROUTINE LOGO-PSEUDO ()
<COND (<VERB? READ EXAMINE>
<TELL
"The logo shows a flame burning over a sleep chamber of some type. Under
that is the phrase \"Prajekt Kuntrool.\"" CR>)>>
<ROUTINE KEYBOARD-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL
"It is a standard numeric keyboard with ten keys labelled from 0
through 9." CR>)>>
<ROUTINE CRACK-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL
"The crack is too small to go through, but large enough to look through." CR>)
(<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,RADIATION-LAB>
<TELL
"You see a dimly lit Bio Lab. Sinister shapes lurk about within." CR>)
(T
<TELL
"You see a laboratory suffused with a pale blue glow." CR>)>)>>
<ROUTINE VOID-PSEUDO ()
<COND (<AND <VERB? PUT>
<EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<PERFORM ,V?THROW-OFF ,PRSO ,STRIP>
<RTRUE>)
(<AND <VERB? ZAP>
<EQUAL? ,PRSO ,LASER>
<EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<SETG PRSI <>>
<PERFORM ,V?ZAP ,LASER>
<RTRUE>)
(<VERB? THROUGH LEAP>
<JIGS-UP "Plummet.">)
(<VERB? LOOK-INSIDE EXAMINE>
<TELL
"The void extends downward into the gloom far below." CR>)>>
<ROUTINE SPOUT-PSEUDO ()
<COND (<AND <VERB? PUT-UNDER>
<EQUAL? ,PRSO ,CANTEEN>>
<PERFORM ,V?PUT ,CANTEEN ,DISPENSER>
<RTRUE>)
(<AND <VERB? LOOK-UNDER>
<IN? ,CANTEEN ,DISPENSER>>
<TELL "The canteen is sitting under the spout." CR>)>>
<ROUTINE TOILET-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "The fixtures are all dry and dusty." CR>)
(<VERB? FLUSH>
<TELL "The water seems to be turned off." CR>)>>
<ROUTINE GAMES-PSEUDO ()
<COND (<VERB? PLAY TAKE> ;"TAKE added arb"
<PERFORM ,V?PLAY ,GLOBAL-GAMES>
<RTRUE>)
(<VERB? EXAMINE>
<TELL "All the usual games -- Chess, Cribbage, Galactic
Overlord, Double Fannucci..." CR>)
;(<AND <VERB? SHOW>
<EQUAL? ,PRSI ,FLOYD>>
<TELL
"\"Floyd doesn't like those tough, thinker games. Any paddleball sets
around?\"" CR>)>>
<ROUTINE TAPES-PSEUDO ()
<COND (<VERB? READ PLAY TAKE>
<TELL
"Hardly the time or place for reading recreational tapes." CR>)
(<VERB? EXAMINE>
<TELL "Let's see...here are some musical selections, here are
some bestselling romantic novels, here is a biography of a famous Double
Fannucci champion..." CR>)>>
<ROUTINE PARTITION-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "The partitions are very plain, and were
obviously intended to separate this huge room into smaller areas." CR>)>>
<ROUTINE CUBBYHOLE-PSEUDO ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<TELL
"The cubbyholes look like the kind that are used to hold maps or
blueprints. They are all empty now." CR>)>>
<ROUTINE MAPS-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "Examining the maps reveals no new information." CR>)>>
<ROUTINE DEVICES-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL
"They are components of disassembled robots, beyond repair." CR>)>>
<ROUTINE CABLES-PSEUDO ()
<COND (<VERB? EXAMINE FOLLOW>
<TELL
"These heavy cables merely run from the two consoles up into the ceiling." CR>)
(<VERB? MUNG>
<JIGS-UP
"So, that's what it's like to have twenty million volts run through your
body!">)>>
<ROUTINE STRUCTURE-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL
"You'd be able to tell more about it if you climbed up to it." CR>)
(<VERB? CLIMB-UP>
<DO-WALK ,P?UP>)>>
<ROUTINE BUTTON-PSEUDO ()
<COND (<VERB? PUSH>
<COND (<FSET? ,DISPENSER ,MUNGEDBIT>
<TELL
"The dispenser sputters a few times." CR>)
(<IN? ,CANTEEN ,DISPENSER>
<COND (<NOT <FSET? ,CANTEEN ,OPENBIT>>
<TELL
"A thick, brown liquid spills over the closed canteen, dribbles down the side
of the machine, and forms a puddle on the floor which quickly dries up." CR>)
(<IN? ,HIGH-PROTEIN ,CANTEEN>
<TELL
"The brown liquid splashes over the mouth of the already-filled canteen,
creating a mess">
<COND (<FSET? ,PATROL-UNIFORM ,WORNBIT>
<TELL " and staining your uniform">)>
<TELL "." CR>)
(T
<MOVE ,HIGH-PROTEIN ,CANTEEN>
<TELL
"The canteen fills almost to the brim with a brown liquid." CR>)>)
(T
<TELL "A thick, brownish liquid pours from the spout
and splashes to the floor, where it quickly evaporates." CR>)>)>>
<ROUTINE CARPET-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "It's pretty dusty." CR>)>>
<ROUTINE CABINETS-PSEUDO ()
<COND (<VERB? EXAMINE OPEN>
<TELL "The cabinets are locked." CR>)
(<VERB? UNLOCK>
<TELL "You don't have the correct key." CR>)>>
<ROUTINE PLATE-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "The plates seem to be featureless metal squares." CR>)>>
<ROUTINE ESCALATOR-PSEUDO ()
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<COND (<EQUAL? ,HERE ,FORK>
<TELL
"You're already at the top of the escalator." CR>)
(T
<DO-WALK ,P?UP>)>)
(<VERB? CLIMB-DOWN>
<COND (<EQUAL? ,HERE ,LAWANDA-PLATFORM>
<TELL
"You're already at the bottom of the escalator." CR>)
(T
<DO-WALK ,P?DOWN>)>)
(<VERB? LAMP-ON>
<TELL <PICK-ONE ,YUKS> CR>)>>
<ROUTINE REACTOR-BUTTON-PSEUDO ()
<COND (<VERB? PUSH>
<FSET ,REACTOR-ELEVATOR-DOOR ,OPENBIT>
<ENABLE <QUEUE I-REACTOR-DOOR-CLOSE 30>>
<TELL
"The metal doors slide open, revealing a small room to the east." CR>)>>
<ROUTINE SUPPLIES-PSEUDO ()
<COND (<VERB? TAKE>
<TELL "These supplies are of absolutely no use." CR>)>>
<ROUTINE DESK-PSEUDO ()
<COND (<VERB? OPEN>
<TELL "All the drawers are empty." CR>)
(<VERB? EXAMINE>
<TELL "It is bare except for the microfilm reader." CR>)>>
<ROUTINE CRYO-BUTTON-PSEUDO ()
<COND (<AND <VERB? PUSH>
<NOT ,CRYO-SCORE-FLAG>>
<ENABLE <QUEUE I-CRYO-ELEVATOR-ARRIVE 100>>
<DISABLE <INT I-CHASE-SCENE>>
<FCLEAR ,CRYO-ELEVATOR-DOOR ,OPENBIT>
<SETG CRYO-SCORE-FLAG T>
<SETG SCORE <+ ,SCORE 5>>
<TELL
"The elevator door closes just as the monsters reach it! You slump
back against the wall, exhausted from the chase. The elevator begins
to move downward." CR>)
(<AND <VERB? PUSH>
,CRYO-SCORE-FLAG
<FSET? ,CRYO-ELEVATOR-DOOR ,OPENBIT>>
<JIGS-UP
"Stunning. After days of surviving on a hostile, plague-ridden planet, solving
several of Infocom's toughest puzzles, and coming within one move of completing
Planetfall, you blow it all in one amazingly dumb input.|
|
The doors close and the elevator rises quickly to the top of the shaft. The
doors open, and the mutants, which were waiting impatiently in the ProjCon
Office for just such an occurence, happily saunter in and begin munching.">)>>
<ROUTINE CASTLE-PSEUDO ()
<COND (<VERB? EXAMINE>
<TELL "The castle is ancient and crumbling." CR>)>>
<ROUTINE CHEM-SPOUT-PSEUDO ()
<COND (<AND <VERB? PUT-UNDER>
<EQUAL? ,PRSI ,PSEUDO-OBJECT>>
<PERFORM ,V?PUT-UNDER ,PRSO ,CHEMICAL-DISPENSER>
<RTRUE>)
(<AND <VERB? LOOK-UNDER>
,SPOUT-PLACED>
<TELL "There is ">
<A-AN>
<TELL D ,SPOUT-PLACED " under the spout." CR>)>>
<ROUTINE CLEFT-PSEUDO ()
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<DO-WALK ,P?UP>)>>
<ROUTINE RUBBLE-PSEUDO ()
<COND (<VERB? MOVE>
<TELL <PICK-ONE ,YUKS> CR>)>>
<ROUTINE PLAQUE-PSEUDO ()
<COND (<VERB? READ EXAMINE>
<TELL
"|
SEENIK VISTA
|
Xis stuneeng vuu uf xee Kalamontee Valee kuvurz oovur fortee skwaar miilz
uf xat faamus tuurist spot. Xee larj bildeeng at xee bend in xee Gulmaan Rivur
iz xee formur pravincul kapitul bildeeng." CR>)>>
<ROUTINE FENCE-PSEUDO ()
<COND (<VERB? CLIMB-UP CLIMB-FOO LEAP>
<TELL "You can't." CR>)>>
<ROUTINE LOCK-PSEUDO ()
<COND (<VERB? OPEN UNLOCK>
<COND (,PRSI
<TELL "That won't unlock it." CR>)
(T
<TELL "But you don't have the orange key!" CR>)>)>>
<ROUTINE DIAGRAM-PSEUDO ()
<COND (<VERB? READ>
<TELL "Not unless you've taken a special
twelve-year course in ninth-order molecular physics." CR>)>>
<ROUTINE ENUNCIATOR-PSEUDO ()
<COND (<VERB? LOOK-INSIDE PUSH MOVE>
<TELL <PICK-ONE ,YUKS>>)>>
<ROUTINE NEAR-BOOTH-PSEUDO ()
<COND (<VERB? DROP EXIT DISEMBARK>
<TELL "You're not in the booth!" CR>)
(<VERB? THROUGH BOARD WALK-TO>
<DO-WALK ,P?IN>)>>
<ROUTINE IN-BOOTH-PSEUDO ()
<COND (<VERB? THROUGH BOARD WALK-TO>
<TELL "You're already in the booth!" CR>)
(<VERB? DROP EXIT DISEMBARK>
<DO-WALK ,P?OUT>)>>
<ROUTINE CANT-USE-THAT-WAY (STRING)
<TELL "[You can't use " .STRING " that way.]" CR>>
<CONSTANT TOO-DARK "It's too dark to see a thing.">