mirror of
https://github.com/historicalsource/stationfall
synced 2024-04-27 06:29:23 +03:00
3977 lines
124 KiB
Plaintext
3977 lines
124 KiB
Plaintext
"STATION for
|
||
STATIONFALL
|
||
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
|
||
|
||
<ROOM DOCKING-BAY-2
|
||
(IN ROOMS)
|
||
(DESC "Docking Bay #2")
|
||
(IN TO SPACETRUCK IF SPACETRUCK-HATCH IS OPEN)
|
||
(EAST TO LEVEL-FIVE IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR SPACETRUCK-OBJECT SPACETRUCK-HATCH WINDOW)
|
||
(ACTION DOCKING-BAY-2-F)>
|
||
|
||
<ROUTINE DOCKING-BAY-2-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is a tall, narrow bay. Your " 'SPACETRUCK-OBJECT
|
||
" is docked here. Its hatch is ">
|
||
<OPEN-CLOSED ,SPACETRUCK-HATCH>
|
||
<TELL
|
||
". To the east is the huge door into the station.">)>>
|
||
|
||
<ROOM LEVEL-FIVE
|
||
(IN ROOMS)
|
||
(DESC "Level Five")
|
||
(NORTH TO WORKSHOP IF P-WON)
|
||
(NE TO NORTH-JUNCTION)
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(SE TO SOUTH-JUNCTION)
|
||
(WEST TO DOCKING-BAY-2 IF P-WON)
|
||
(UP TO LEVEL-FOUR)
|
||
(DOWN TO LEVEL-SIX)
|
||
(LEVEL 5)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL CALL-BUTTON AUTO-DOOR ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER)
|
||
(ACTION LEVEL-FIVE-F)>
|
||
|
||
<ROUTINE LEVEL-FIVE-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"You are in the central lobby of the middle level of the space
|
||
station. The elevator ">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 5>>
|
||
<TELL "shaft ">)>
|
||
<TELL
|
||
"and call button lie to the east, and the corridor heads around the shaft to
|
||
the northeast and southeast. Doors lead north and west" ,LADDER-LEADS>)>>
|
||
|
||
<ROOM WORKSHOP
|
||
(IN ROOMS)
|
||
(DESC "Workshop")
|
||
(LDESC
|
||
"This is a fairly large space where much of the maintenance work for the
|
||
station takes place. Some repair work for visiting ships is also done here.
|
||
The room is filled with all sorts of repair and fabrication machinery. A
|
||
door leads south, and there's an opening to the north.")
|
||
(NORTH TO STORAGE-5)
|
||
(SOUTH TO LEVEL-FIVE IF P-WON)
|
||
(OUT TO LEVEL-FIVE IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR EQUIPMENT)>
|
||
|
||
<OBJECT BEDISTOR
|
||
(IN WORKSHOP)
|
||
(DESC "twenty-ohm bedistor")
|
||
(SYNONYM BEDISTOR)
|
||
(ADJECTIVE TWENTY OHM)
|
||
(SIZE 5)
|
||
(FLAGS TAKEBIT)
|
||
(PLATO-ASK-ABOUT
|
||
"I'm really not at all mechanically inclined. My sincerest apologies.")
|
||
(FLOYD-ASK-ABOUT
|
||
"It's a kind of a thingamabob for putting in a, you know, a whosiwhatsis.")>
|
||
|
||
<ROOM STORAGE-5
|
||
(IN ROOMS)
|
||
(DESC "Storage")
|
||
(LDESC
|
||
"This is one of the storage areas. Exits lie to the east and south.")
|
||
(EAST TO NORTH-CONNECTION IF P-WON)
|
||
(SOUTH TO WORKSHOP)
|
||
(OUT TO NORTH-CONNECTION)
|
||
(FLAGS RLANDBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<OBJECT JAMMER
|
||
(IN STORAGE-5)
|
||
(DESC "jammer")
|
||
(SYNONYM JAMMER SOCKETS FREQUENCY)
|
||
(FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT LIGHTBIT)
|
||
(CAPACITY 10)
|
||
(SIZE 15)
|
||
(ACTION JAMMER-F)>
|
||
|
||
<GLOBAL JAMMER-SETTING 337>
|
||
|
||
<ROUTINE JAMMER-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"The jammer is a black box with a short antenna. It has ">
|
||
<COND (<IN? ,TWENTY-PRONG-FROMITZ-BOARD ,JAMMER>
|
||
<TELL
|
||
"a " D ,TWENTY-PRONG-FROMITZ-BOARD " plugged into it">)
|
||
(T
|
||
<TELL "twenty tiny sockets on one side">)>
|
||
<TELL ". The jammer, which is o">
|
||
<COND (<FSET? ,JAMMER ,ACTIVEBIT>
|
||
<TELL "n">)
|
||
(T
|
||
<TELL "ff">)>
|
||
<TELL
|
||
", looks as if it can be set to any frequency between 0 and
|
||
1400; it is currently set to " N ,JAMMER-SETTING ,PERIOD-CR>)
|
||
(<VERB? OPEN CLOSE>
|
||
<TELL ,HUH>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,JAMMER>
|
||
<NOT <PRSO? ,TWENTY-PRONG-FROMITZ-BOARD>>>
|
||
<DOESNT-FIT "twenty tiny sockets">)
|
||
(<AND <VERB? CONNECT>
|
||
<EQUAL? ,TWENTY-PRONG-FROMITZ-BOARD ,PRSO ,PRSI>>
|
||
<PERFORM ,V?PUT ,TWENTY-PRONG-FROMITZ-BOARD ,JAMMER>
|
||
<RTRUE>)
|
||
(<AND <VERB? CONNECT>
|
||
<EQUAL? ,TWELVE-PRONG-FROMITZ-BOARD ,PRSO ,PRSI>>
|
||
<PERFORM ,V?PUT ,TWELVE-PRONG-FROMITZ-BOARD ,JAMMER>
|
||
<RTRUE>)
|
||
(<AND <VERB? SET>
|
||
<PRSO? ,JAMMER>>
|
||
<COND (<NOT ,PRSI>
|
||
<TELL ,NEXT-TIME>)
|
||
(<NOT <PRSI? ,INTNUM>>
|
||
<TELL ,HUH>)
|
||
(<EQUAL? ,P-NUMBER ,JAMMER-SETTING>
|
||
<TELL ,SENILITY-STRIKES>)
|
||
(<OR <L? ,P-NUMBER 0>
|
||
<G? ,P-NUMBER 1400>>
|
||
<TELL "The jammer's range is 0 to 1400." CR>)
|
||
(T
|
||
<SETG JAMMER-SETTING ,P-NUMBER>
|
||
<TELL "You set the jammer to " N ,JAMMER-SETTING>
|
||
<COND (<IN? ,FORKLIFT ,HERE>
|
||
<TELL ". ">
|
||
<PERFORM ,V?OFF ,JAMMER>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL ,PERIOD-CR>)>)>)
|
||
(<AND <VERB? COUNT>
|
||
<NOUN-USED ,W?SOCKETS ,JAMMER>>
|
||
<TELL "20." CR>)
|
||
(<AND <VERB? OFF>
|
||
<IN? ,FORKLIFT ,HERE>>
|
||
<FCLEAR ,JAMMER ,ACTIVEBIT>
|
||
<REMOVE ,FORKLIFT>
|
||
<REMOVE ,EXERCISE-MACHINE>
|
||
<DEQUEUE I-FORKLIFT>
|
||
<TELL
|
||
"The " 'EXERCISE-MACHINE " springs to life, its powerful arms clamping shut on
|
||
the forklift. The vehicle belches exhaust as it tries to free itself. The
|
||
two machines tumble over in a death grip and then explode! When the smoke
|
||
clears, there's not a trace of either machine." CR>)>>
|
||
|
||
<ROOM NORTH-JUNCTION
|
||
(IN ROOMS)
|
||
(DESC "North Junction")
|
||
(LDESC
|
||
"The central corridor continues around to the southeast and southwest, but
|
||
another corridor joins from the north. There's a door to the east and a
|
||
doorway to the northeast.")
|
||
(NORTH TO NORTH-CONNECTION)
|
||
(NE TO PX)
|
||
(EAST TO SICK-BAY IF P-WON)
|
||
(SE TO EAST-JUNCTION)
|
||
(SW TO LEVEL-FIVE)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<ROOM NORTH-CONNECTION
|
||
(IN ROOMS)
|
||
(DESC "North Connection")
|
||
(LDESC
|
||
"The corridor widens here as it approaches the skin of the space station
|
||
at the point where a Scientific Sub-Module would connect. Sure enough, the
|
||
connecting tube of a Sub-Module begins just to the north! An auto-door lies
|
||
to the west. Opposite it, a doorway leads east. A junction is visible to
|
||
the south.")
|
||
(NORTH TO TUBE)
|
||
(EAST TO PX)
|
||
(SOUTH TO NORTH-JUNCTION)
|
||
(WEST TO STORAGE-5 IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<ROOM PX
|
||
(IN ROOMS)
|
||
(DESC "The PX")
|
||
(LDESC
|
||
"This is the shop for station personnel, selling everything from postcards
|
||
to chewing gum at inflated prices. Exits lead west and southwest.")
|
||
(SW TO NORTH-JUNCTION)
|
||
(WEST TO NORTH-CONNECTION)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL KEYPAD)
|
||
(THINGS <PSEUDO (DISPEN SCREEN DISPENSER-SCREEN-F)
|
||
(COIN SLOT COIN-SLOT-F)
|
||
(DISPEN HOLE DISPENSER-HOLE-F)>)>
|
||
|
||
<OBJECT DISPENSER
|
||
(IN PX)
|
||
(DESC "dispenser")
|
||
(FDESC ;"so it'll get printed before other DESCs"
|
||
"In the corner of the PX is a Stellar Patrol dispensing machine, consisting
|
||
of a screen (displaying the dispenser's \"exciting\" offerings), a slot (for
|
||
coin insertion), a keypad (for typing your selection), and a hole (where
|
||
the dispensed item hopefully -- but rarely -- arrives).")
|
||
(SYNONYM DISPEN MACHIN)
|
||
(ADJECTIVE DISPEN VENDIN)
|
||
(ACTION DISPENSER-F)>
|
||
|
||
<ROUTINE DISPENSER-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL <GETP ,DISPENSER ,P?FDESC> CR>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,DISPENSER>>
|
||
<COND (<PRSO? ,COIN>
|
||
<REMOVE ,COIN>
|
||
<FSET ,DISPENSER ,TOUCHBIT>
|
||
<TELL "\"Clink!\" The coin drops into the slot." CR>)
|
||
(T
|
||
<DOESNT-FIT "coin slot">)>)
|
||
(<VERB? DRILL>
|
||
<TELL
|
||
"We quote from the Stellar Patrol Demolitions Training Manual, Edition
|
||
37\54-GS108. \"Why You Should Never Drill Into Active Machinery: Reason #7.
|
||
You may" ,STRIKE-POWER-SOURCE "\"|
|
||
As you drill into the dispenser, you" ,STRIKE-POWER-SOURCE>
|
||
<JIGS-UP
|
||
" In case you were napping during Demolitions Training, this means that you're
|
||
now a fine layer of ash all over the walls of the PX.">)
|
||
(<VERB? SHOOT>
|
||
<REMOVE ,DISPENSER>
|
||
<TELL
|
||
"Okay, but you'll have to answer to the Stellar Patrol Dispensing Machine
|
||
Company... BLAM! The dispenser is dispensed." CR>)
|
||
(<AND <VERB? KICK KILL MUNG SHAKE PUSH>
|
||
<FIRST? ,DISPENSER>>
|
||
<TELL
|
||
"This fails to dislodge the " D <FIRST? ,DISPENSER> ", but it does help relieve
|
||
some of your aggressive feelings toward the stupid dispenser." CR>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL ,ONLY-BLACKNESS>)>>
|
||
|
||
<ROUTINE COIN-SLOT-F ()
|
||
<COND (<NOT <IN? ,DISPENSER ,HERE>>
|
||
<CANT-SEE ,PSEUDO-OBJECT>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL ,ONLY-BLACKNESS>)
|
||
(<VERB? SHOOT>
|
||
<PERFORM ,V?SHOOT ,DISPENSER ,ZAPGUN>
|
||
<RTRUE>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,PSEUDO-OBJECT>>
|
||
<PERFORM ,V?PUT ,PRSO ,DISPENSER>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE DISPENSER-SCREEN-F ()
|
||
<COND (<NOT <IN? ,DISPENSER ,HERE>>
|
||
<CANT-SEE ,PSEUDO-OBJECT>)
|
||
(<VERB? SHOOT>
|
||
<PERFORM ,V?SHOOT ,DISPENSER ,ZAPGUN>
|
||
<RTRUE>)
|
||
(<VERB? EXAMINE READ>
|
||
<TELL
|
||
"\"--- STELLAR PATROL VENDO-MATIC ---|
|
||
all items: 1 galakmid|
|
||
1. Patrol Songbook (SOLD OUT)|
|
||
2. Set of Postcards (SOLD OUT)|
|
||
3. ID Card Polish (SOLD OUT)|
|
||
4. Pilot's Compass (SOLD OUT)|
|
||
5. Patrol Pen & Pencil Set (SOLD OUT)|
|
||
6. All-Purpose Timer|
|
||
7. Pocket Computer (SOLD OUT)|
|
||
8. Birth Control Pills (SOLD OUT)|
|
||
9. Large Drill Bit\"" CR>)>>
|
||
|
||
<ROUTINE DISPENSER-HOLE-F ()
|
||
<COND (<NOT <IN? ,DISPENSER ,HERE>>
|
||
<CANT-SEE ,PSEUDO-OBJECT>)
|
||
(<VERB? REACH-IN>
|
||
<COND (<OR <IN? ,TIMER ,DISPENSER>
|
||
<IN? ,LARGE-BIT ,DISPENSER>>
|
||
<TELL
|
||
"You can just feel something with your fingertips, but you
|
||
can't get a grip on it!" CR>)
|
||
(T
|
||
<TELL
|
||
"You reach as far into the dispenser as you can, but feel nothing." CR>)>)
|
||
(<VERB? SHOOT>
|
||
<PERFORM ,V?SHOOT ,DISPENSER ,ZAPGUN>
|
||
<RTRUE>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL ,ONLY-BLACKNESS>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,PSEUDO-OBJECT>>
|
||
<TELL "You shove" T ,PRSO " up into the hole.">
|
||
<COND (<AND <PRSO? ,OSTRICH-NIP>
|
||
<IN? ,OSTRICH ,HERE>>
|
||
<TELL
|
||
" The ostrich squawks and sticks its head up the hole after the nip.">
|
||
<OSTRICH-INTO-DISPENSER>
|
||
<TELL " A moment later, the nip falls to the deck. ">
|
||
<PERFORM ,V?GIVE ,OSTRICH-NIP ,OSTRICH>
|
||
<RTRUE>)
|
||
(T
|
||
<MOVE ,PRSO ,HERE>
|
||
<TELL
|
||
" A moment later, it drops out" ,LANDS-ON-FLOOR CR>)>)>>
|
||
|
||
<ROUTINE OSTRICH-INTO-DISPENSER ()
|
||
<COND (<FIRST? ,DISPENSER>
|
||
<SETG ROBOT-EVILNESS <+ ,ROBOT-EVILNESS 1>>
|
||
<SETG SCORE <+ ,SCORE 6>>
|
||
<TELL
|
||
" It jerks its head back out, squawking even more loudly, and a moment
|
||
later a " D <FIRST? ,DISPENSER> " falls out of the hole" ,LANDS-ON-FLOOR>
|
||
<MOVE <FIRST? ,DISPENSER> ,HERE>)>>
|
||
|
||
<OBJECT LARGE-BIT
|
||
(DESC "large drill bit")
|
||
(SYNONYM BIT BITS)
|
||
(ADJECTIVE LARGE DRILL)
|
||
(FLAGS TAKEBIT)
|
||
(PLATO-ASK-ABOUT
|
||
"I'm really not at all mechanically inclined. My sincerest apologies.")
|
||
(FLOYD-ASK-ABOUT
|
||
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
|
||
(SIZE 4)
|
||
(ACTION BIT-F)>
|
||
|
||
<OBJECT TIMER
|
||
(DESC "timer")
|
||
(SYNONYM TIMER)
|
||
(ADJECTIVE ALL-PURPOSE)
|
||
(FLAGS TAKEBIT)
|
||
(SIZE 10)
|
||
(ACTION TIMER-F)>
|
||
|
||
<GLOBAL TIMER-SETTING 0>
|
||
|
||
<ROUTINE TIMER-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"As advertised, it is a standard, all-purpose timer. It can be set to any
|
||
number up to 100, and is currently set to " N ,TIMER-SETTING ". The timer ">
|
||
<COND (,TIMER-CONNECTED
|
||
<TELL "is connected to a detonator">)
|
||
(T
|
||
<TELL "has one connection point">)>
|
||
<COND (<QUEUED? ,I-TIMER>
|
||
<TELL ", and is ticking loudly">)>
|
||
<TELL ,PERIOD-CR>)
|
||
(<VERB? SET>
|
||
<COND (<NOT ,PRSI>
|
||
<TELL ,NEXT-TIME>)
|
||
(<NOT <PRSI? ,INTNUM>>
|
||
<TELL "You can set the timer only to a number!" CR>)
|
||
(<G? ,P-NUMBER 100>
|
||
<TELL "The timer has settings up to only 100." CR>)
|
||
;(<NOT <EQUAL? <MOD ,P-NUMBER 10> 0>>
|
||
<TELL
|
||
"You can set the timer only to increments of 10." CR>)
|
||
(T
|
||
<SETG TIMER-SETTING ,P-NUMBER>
|
||
<TELL "You set the timer to " N ,TIMER-SETTING>
|
||
<COND (<G? ,TIMER-SETTING 0>
|
||
<QUEUE I-TIMER <+ ,C-ELAPSED 2>>
|
||
<TELL ". Instantly, it begins ticking loudly">)
|
||
(T
|
||
<DEQUEUE I-TIMER>)>
|
||
<TELL ,PERIOD-CR>)>)
|
||
(<AND <VERB? DISCONNECT>
|
||
<NOT ,PRSI>
|
||
,TIMER-CONNECTED>
|
||
<PERFORM, PRSA ,TIMER ,DETONATOR>
|
||
<RTRUE>)
|
||
(<AND <VERB? CONNECT>
|
||
<EQUAL? ,EXPLOSIVE ,PRSO ,PRSI>>
|
||
<TELL
|
||
,YOU-CANT "connect the timer directly to the explosive." CR>)
|
||
(<AND <VERB? OFF>
|
||
<QUEUED? ,I-TIMER>>
|
||
<SETG P-NUMBER 0>
|
||
<PERFORM ,V?SET ,TIMER ,INTNUM>
|
||
<RTRUE>)
|
||
(<AND <VERB? LISTEN>
|
||
<QUEUED? ,I-TIMER>>
|
||
<TELL "\"Tick, tick...\"" CR>)>>
|
||
|
||
;"routine I-TIMER moved to INTERRUPTS file"
|
||
|
||
<ROUTINE DESTROY-EXPLOSIVE-CONT ("AUX" L X)
|
||
<SET L <LOC ,EXPLOSIVE>>
|
||
<REPEAT ()
|
||
<COND (<IN? .L ,ROOMS> ;"don't remove the room!"
|
||
<RETURN>)
|
||
(<FSET? .L ,VEHBIT> ;"don't remove a vehicle!"
|
||
<RETURN>)>
|
||
<SET X <LOC .L>>
|
||
<COND (<NOT <EQUAL? .L ,PEDESTAL>>
|
||
<REMOVE .L>)>
|
||
<SET L .X>>>
|
||
|
||
<ROOM SICK-BAY
|
||
(IN ROOMS)
|
||
(DESC "Sick Bay")
|
||
(LDESC
|
||
"Surrounding the beds of this infirmary is the finest diagnostic equipment
|
||
that unlimited Stellar Patrol budgets can buy. To the east, an ID reader
|
||
indicates a security door. You can leave to the west or southeast.")
|
||
(EAST TO BRIG IF SECURITY-DOOR IS OPEN)
|
||
(SE TO EAST-CONNECTION IF P-WON)
|
||
(WEST TO NORTH-JUNCTION IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR BED EQUIPMENT SECURITY-DOOR ID-READER)>
|
||
|
||
<ROOM BRIG
|
||
(IN ROOMS)
|
||
(DESC "Brig")
|
||
(LDESC
|
||
"This is a modest prison, with three cells. The only exit is west.")
|
||
(WEST TO SICK-BAY IF P-WON)
|
||
(OUT TO SICK-BAY IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT FLOYDBIT)
|
||
(GLOBAL SECURITY-DOOR)
|
||
(THINGS <PSEUDO (CELLS CELL CELL-F)
|
||
(<> LOCK BRIG-LOCK-F)>)>
|
||
|
||
<ROUTINE CELL-F ()
|
||
<COND (<VERB? ENTER WALK-TO OPEN UNLOCK>
|
||
<TELL
|
||
"The cells are all locked with high-security locks." CR>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL "The cells are all empty." CR>)>>
|
||
|
||
<ROUTINE BRIG-LOCK-F ()
|
||
<COND (<VERB? OPEN UNLOCK PICK>
|
||
<COND (<PRSI? ,KEY>
|
||
<SETG PRSO ,KEY>
|
||
<DOESNT-FIT "lock">)
|
||
(T
|
||
<YUKS>)>)
|
||
(<AND <VERB? PUT>
|
||
<PRSO? ,KEY>>
|
||
<DOESNT-FIT "lock">)>>
|
||
|
||
<ROOM EAST-JUNCTION
|
||
(IN ROOMS)
|
||
(DESC "East Junction")
|
||
(LDESC
|
||
"The corridor continues around to the northwest and southwest, and an
|
||
adjoining one heads east.")
|
||
(EAST TO EAST-CONNECTION)
|
||
(SW TO SOUTH-JUNCTION)
|
||
(NW TO NORTH-JUNCTION)
|
||
(FLAGS RLANDBIT ONBIT)>
|
||
|
||
<ROOM EAST-CONNECTION
|
||
(IN ROOMS)
|
||
(DESC "East Connection")
|
||
(EAST PER VILLAGE-BOUNDARY-F)
|
||
(SOUTH TO COMM-CENTER)
|
||
(SW TO STATION-CONTROL)
|
||
(WEST TO EAST-JUNCTION)
|
||
(NW TO SICK-BAY IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR IRIS-HATCH)
|
||
(ACTION EAST-CONNECTION-F)
|
||
(THINGS <PSEUDO (<> SLOT FORM-SLOT-F)>)>
|
||
|
||
<ROUTINE EAST-CONNECTION-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"The corridor widens to the east, the connection point for a Military
|
||
Sub-Module. An iris hatch at the connection point is ">
|
||
<COND (<FSET? ,IRIS-HATCH ,OPENBIT>
|
||
<TELL
|
||
"frozen open, revealing not a sub-module connector but
|
||
a small, grimy connector">)
|
||
(T
|
||
<TELL "shut tight">)>
|
||
<TELL
|
||
". Next to the hatch is a slot. There is a door northwest of here,
|
||
and doorways to the south and southwest. There's a junction in the
|
||
corridor west of you.">)>>
|
||
|
||
<ROOM SOUTH-JUNCTION
|
||
(IN ROOMS)
|
||
(DESC "South Junction")
|
||
(LDESC
|
||
"This central corridor turns northeast and northwest of here. A second
|
||
corridor begins here and leads south. There are doorways to the southwest,
|
||
southeast, and east.")
|
||
(NE TO EAST-JUNCTION)
|
||
(EAST TO STATION-CONTROL)
|
||
(SE TO COMMANDERS-OFFICE)
|
||
(SOUTH TO SOUTH-CONNECTION)
|
||
(SW TO FILE-ROOM)
|
||
(NW TO LEVEL-FIVE)
|
||
(FLAGS RLANDBIT ONBIT)>
|
||
|
||
<ROOM STATION-CONTROL
|
||
(IN ROOMS)
|
||
(DESC "Station Control")
|
||
(NE TO EAST-CONNECTION)
|
||
(SOUTH TO COMMANDERS-OFFICE)
|
||
(WEST TO SOUTH-JUNCTION)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(ACTION STATION-CONTROL-F)>
|
||
|
||
<ROUTINE STATION-CONTROL-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is the nerve center of the space station,
|
||
where every system can be monitored. ">
|
||
<COND (<L? ,DAY 3>
|
||
<COND (<EQUAL? ,DAY 1>
|
||
<TELL "A couple">)
|
||
(<EQUAL? ,DAY 2>
|
||
<TELL "Several">)>
|
||
<TELL " of the monitors are blinking red. ">)>
|
||
<TELL "The exits are south, northeast and west.">)>>
|
||
|
||
<OBJECT SYSTEM-MONITORS
|
||
(IN STATION-CONTROL)
|
||
(DESC "system monitor board")
|
||
(SYNONYM BOARD)
|
||
(ADJECTIVE SYSTEM MONITOR RED GREEN YELLOW BLINKING)
|
||
(FLAGS NDESCBIT READBIT)
|
||
(ACTION SYSTEM-MONITORS-F)>
|
||
|
||
<ROUTINE SYSTEM-MONITORS-F ()
|
||
<COND (<VERB? EXAMINE READ>
|
||
<PUT 0 8 <BOR <GET 0 8> 2>> ;"FIXED-FONT-ON"
|
||
<TELL
|
||
"System: Status:|
|
||
COMMUNICATION ">
|
||
<COND (<G? ,DAY 2>
|
||
<TELL "GREEN">)
|
||
(T
|
||
<TELL "RED">)>
|
||
<TELL "|
|
||
LIFE SUPPORT ">
|
||
<COND (<EQUAL? ,DAY 2>
|
||
<COND (<L? ,INTERNAL-MOVES 6500>
|
||
<TELL "YELLOW">)
|
||
(T
|
||
<TELL "RED">)>)
|
||
(T
|
||
<TELL "GREEN">)>
|
||
<TELL "|
|
||
FOOD PRODUCTION ">
|
||
<COND (<G? ,DAY 2>
|
||
<TELL "GREEN">)
|
||
(T
|
||
<TELL "RED">)>
|
||
<TELL "|
|
||
GRAVITY ">
|
||
<COND (<EQUAL? ,DAY 2>
|
||
<TELL "YELLOW">)
|
||
(T
|
||
<TELL "GREEN">)>
|
||
<TELL "|
|
||
COMPUTER GREEN|
|
||
POWER ">
|
||
<COND (<EQUAL? ,DAY 2>
|
||
<COND (<L? ,INTERNAL-MOVES 4300>
|
||
<TELL "YELLOW">)
|
||
(T
|
||
<TELL "RED">)>)
|
||
(T
|
||
<TELL "GREEN">)>
|
||
<TELL "|
|
||
PRINTING ">
|
||
<COND (<EQUAL? ,DAY 1>
|
||
<TELL "YELLOW">)
|
||
(<G? ,DAY 3>
|
||
<TELL "GREEN">)
|
||
(T
|
||
<TELL "RED">)>
|
||
<CRLF>
|
||
<PUT 0 8 <BAND <GET 0 8> -3>> ;"FIXED-FONT-OFF")>>
|
||
|
||
<ROOM COMM-CENTER
|
||
(IN ROOMS)
|
||
(DESC "Comm Center")
|
||
(NORTH TO EAST-CONNECTION)
|
||
(OUT TO EAST-CONNECTION)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL EQUIPMENT)
|
||
(ACTION COMM-CENTER-F)
|
||
(THINGS <PSEUDO (RED BUTTON COMM-BUTTON-F)
|
||
(MESSAGE SCREEN SCREEN-F)>)>
|
||
|
||
<ROUTINE COMM-CENTER-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is the Deep-Space Communication Center, which keeps the station in touch
|
||
with the Stellar Patrol Command and the rest of the Third Galactic Union.
|
||
Although regulations state that the Comm Center must be monitored around the
|
||
clock, ten chrons per day, there's no one on duty.|
|
||
Most of the equipment here is too complicated for anyone without Deep-Space
|
||
Communication Training to use. However, the red button of the wide-band
|
||
emergency beacon is well-marked. Next to the button is a large screen for
|
||
displaying incoming messages. ">
|
||
<SCREEN-F T>
|
||
<TELL " The only exit is north.">)>>
|
||
|
||
<ROUTINE COMM-BUTTON-F ()
|
||
<COND (<TOUCHING? ,PSEUDO-OBJECT>
|
||
<TELL
|
||
"The instant you touch the button, a powerful electric shock
|
||
makes you jerk back.">
|
||
<COND (<G? ,ROBOT-EVILNESS 14>
|
||
<JIGS-UP
|
||
" The shock seems to have been a bit too much for your heart.">)
|
||
(<AND <G? ,ROBOT-EVILNESS 7>
|
||
<G? <CCOUNT ,PROTAGONIST> 0>>
|
||
<ROB ,PROTAGONIST ,HERE>
|
||
<TELL
|
||
" The shock causes you to drop everything, and leaves your limbs
|
||
twitching all over.">)>
|
||
<CRLF>)>>
|
||
|
||
<ROUTINE SCREEN-F ("OPTIONAL" (DESCRIBE-SCREEN <>))
|
||
<COND (<OR <VERB? EXAMINE>
|
||
.DESCRIBE-SCREEN>
|
||
<TELL "At the moment, the screen is ">
|
||
<COND (,MESSAGE-RECEIVED
|
||
<TELL "displaying a message.">)
|
||
(T
|
||
<TELL "blank.">)>
|
||
<COND (<NOT .DESCRIBE-SCREEN>
|
||
<CRLF>)>
|
||
<RTRUE>)
|
||
(<VERB? READ>
|
||
<COND (,MESSAGE-RECEIVED
|
||
<TELL
|
||
"\"From: Forms Control Officer, S.P.S. Duffy|
|
||
To: " ,LFC " 1451-352-716|
|
||
Re: Current assignment|
|
||
Msg: Two thousand reams of " ,FORM-NAME " found in mislabelled pallet. No
|
||
additional supplies needed. Abort assignment and return to Duffy.\"" CR>)
|
||
(T
|
||
<PERFORM ,V?EXAMINE ,PSEUDO-OBJECT>
|
||
<RTRUE>)>)>>
|
||
|
||
<GLOBAL MESSAGE-RECEIVED <>>
|
||
|
||
<ROUTINE I-MESSAGE ()
|
||
<SETG MESSAGE-RECEIVED T>
|
||
<FCLEAR ,COMM-CENTER ,TOUCHBIT>
|
||
<TELL " ">
|
||
<COND (<FSET? ,SPACESUIT ,WORNBIT>
|
||
<TELL "The space suit picks up a message from">)
|
||
(T
|
||
<TELL "You hear a message over">)>
|
||
<TELL
|
||
" the station's P.A. system: \"Deep-space communication received at
|
||
Comm Center. No operator on duty. This is a recording.\"" CR>>
|
||
|
||
<ROOM FILE-ROOM
|
||
(IN ROOMS)
|
||
(DESC "File Room")
|
||
(LDESC
|
||
"This is the room where octuplet copies of forms are stored. Since it's only
|
||
a hundred square meters, this room cannot hold more than a few days' worth of
|
||
storage before being dumped to nanofilm. Mercifully, there is an exit to the
|
||
northeast.")
|
||
(NE TO SOUTH-JUNCTION)
|
||
(OUT TO SOUTH-JUNCTION)
|
||
(FLAGS RLANDBIT NWELDERBIT)
|
||
(THINGS <PSEUDO (FILES FILE FILES-F)
|
||
(<> FORM FILES-F)
|
||
(<> FORMS FILES-F)>)>
|
||
|
||
<ROUTINE FILES-F ()
|
||
<COND (<VERB? EXAMINE READ>
|
||
<TELL
|
||
"The word \"boring\" does not BEGIN to describe them." CR>)
|
||
(<VERB? CRUMPLE MUNG>
|
||
<TELL ,VIOLATION-OF-ACT>)>>
|
||
|
||
<ROOM COMMANDERS-OFFICE
|
||
(IN ROOMS)
|
||
(DESC "Commander's Office")
|
||
(NORTH TO STATION-CONTROL)
|
||
(EAST TO COMMANDERS-QUARTERS IF P-WON)
|
||
(SOUTH TO BRIEFING-ROOM IF P-WON)
|
||
(NW TO SOUTH-JUNCTION)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)
|
||
(THINGS <PSEUDO (RED BUTTON LOG-READER-BUTTON-F)>)
|
||
(ACTION COMMANDERS-OFFICE-F)>
|
||
|
||
<ROUTINE COMMANDERS-OFFICE-F (RARG)
|
||
<COND (<AND <EQUAL? .RARG ,M-ENTER>
|
||
<ULTIMATELY-IN? ,EXPLOSIVE>>
|
||
<FSET ,EXERCISE-MACHINE ,TOUCHBIT>
|
||
<MOVE ,EXERCISE-MACHINE ,COMPUTER-CONTROL>
|
||
<ROB ,EXERCISE-MACHINE ,GYM>)
|
||
(<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is the Station Commander's H.Q., with doors to the south and east,
|
||
and doorways to the north and northwest.">
|
||
<COND (<NOT <IN? ,LOG-READER ,HERE>>
|
||
<TELL
|
||
" There's a black scar where the " 'LOG-READER " once sat.">)>
|
||
<RTRUE>)>>
|
||
|
||
<OBJECT LOG-READER
|
||
(IN COMMANDERS-OFFICE)
|
||
(DESC "log reader")
|
||
(SYNONYM READER RECORDER MACHIN)
|
||
(ADJECTIVE LOG)
|
||
(FLAGS LIGHTBIT CONTBIT SEARCHBIT OPENBIT TRYTAKEBIT)
|
||
(ACTION LOG-READER-F)>
|
||
|
||
<ROUTINE LOG-READER-F ()
|
||
<COND (<VERB? OPEN CLOSE>
|
||
<TELL ,HUH>)
|
||
(<VERB? EXAMINE>
|
||
<TELL
|
||
"This simple device is for recording and reading log entries. It includes a
|
||
tiny red button and a microphone/speaker. ">
|
||
<COND (<AND <FSET? ,LOG-READER ,ACTIVEBIT>
|
||
<IN? ,LOG-TAPE ,LOG-READER>>
|
||
<TELL "The red button is glowing. ">)>
|
||
<TELL "At the moment, the " 'LOG-READER " is o">
|
||
<COND (<FSET? ,LOG-READER ,ACTIVEBIT>
|
||
<TELL "n">)
|
||
(T
|
||
<TELL "ff">)>
|
||
<TELL ", and there is ">
|
||
<COND (<IN? ,LOG-TAPE ,LOG-READER>
|
||
<TELL "a">)
|
||
(T
|
||
<TELL "no">)>
|
||
<TELL " log tape in it." CR>)
|
||
(<VERB? PUT>
|
||
<COND (<NOT <PRSO? ,LOG-TAPE>>
|
||
<DOESNT-FIT "reader">)
|
||
(<FSET? ,LOG-READER ,ACTIVEBIT>
|
||
<MOVE ,LOG-TAPE ,LOG-READER>
|
||
<SETG LOG-COUNTER 0>
|
||
<READ-LOG>)>)
|
||
(<AND <VERB? ON>
|
||
<NOT <FSET? ,LOG-READER ,ACTIVEBIT>>>
|
||
<QUEUE I-LOG-READER -1>
|
||
<COND (<IN? ,LOG-TAPE ,LOG-READER>
|
||
<FSET ,LOG-READER ,ACTIVEBIT>
|
||
<SETG LOG-COUNTER 0>
|
||
<READ-LOG>)
|
||
(T
|
||
<RFALSE>)>)
|
||
(<AND <VERB? LISTEN>
|
||
<G? ,LOG-READER-COUNTER 11>>
|
||
<TELL "\"Whine.\"" CR>)
|
||
(<VERB? TAKE>
|
||
<TELL ,WONT-BUDGE>)
|
||
(<VERB? SHOOT>
|
||
<DEQUEUE I-LOG-READER>
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE LOG-READER-BUTTON-F ()
|
||
<COND (<NOT <IN? ,LOG-READER ,HERE>>
|
||
<CANT-SEE ,PSEUDO-OBJECT>)
|
||
(<VERB? PUSH>
|
||
<COND (<AND <IN? ,LOG-TAPE ,LOG-READER>
|
||
<FSET? ,LOG-READER ,ACTIVEBIT>>
|
||
<COND (<EQUAL? ,LOG-COUNTER 10>
|
||
<TELL
|
||
"A mechanized voice from the " 'LOG-READER " says, \"End of Log.\"" CR>)
|
||
(T
|
||
<READ-LOG>)>)
|
||
(T
|
||
<TELL ,NOTHING-HAPPENS>)>)>>
|
||
|
||
<GLOBAL LOG-COUNTER 0>
|
||
|
||
<GLOBAL LOG-READER-COUNTER 0>
|
||
|
||
<ROUTINE READ-LOG ()
|
||
<SETG LOG-COUNTER <+ ,LOG-COUNTER 1>>
|
||
<COND (<EQUAL? ,LOG-COUNTER 1>
|
||
<TELL "A gravelly voice comes from the " 'LOG-READER ": ">)>
|
||
<TELL "\"11349.12.">
|
||
<COND (<EQUAL? ,LOG-COUNTER 1>
|
||
<TELL
|
||
"2.3800: Some kripping jokers have been pilfering the station's fuel
|
||
cells to go out on joyrides! I have hidden the fuel cells up in the Dome's "
|
||
'HOUSING ", slapped a lock on the bin, and deposited the key in my safe!
|
||
There will be no joyriding in my command!">)
|
||
(<EQUAL? ,LOG-COUNTER 2>
|
||
<TELL
|
||
"2.5100: Reproductions Officer Hausberg reports that collater
|
||
#22 is off-line for routine service. Estimates one or two days downtime.
|
||
Also, unidentified craft detected in sector. No response to hailings.
|
||
Sending Finsterwald to intercept.">)
|
||
(<EQUAL? ,LOG-COUNTER 3>
|
||
<TELL
|
||
"2.6750: Unidentified craft towed to Docking Bay #1. It is a
|
||
single-cabin vessel of unfamiliar alien origin. The only things aboard were
|
||
the remains of one of the aliens, and a featureless pyramid. I'll leave it
|
||
to the eggheads; I've got a problem of my own: a report that a used-spaceship
|
||
dealer in the village named Shady Dan is selling modified Patrol ID cards.
|
||
Liaison Officer Bumblewitz is investigating.">)
|
||
(<EQUAL? ,LOG-COUNTER 4>
|
||
<TELL
|
||
"3.1900: Professor Schmidt has back-plotted the course of the alien
|
||
vessel. There are no star systems along the course; he theorizes that it may
|
||
be of extra-galactic origin.">)
|
||
(<EQUAL? ,LOG-COUNTER 5>
|
||
<TELL
|
||
"3.5100: No cooperation from Shady Dan, so I'm putting the
|
||
village off-limits to station personnel. No more village entry forms
|
||
will be validated.">)
|
||
(<EQUAL? ,LOG-COUNTER 6>
|
||
<TELL
|
||
"3.5250: Some kripping joker snuck into my office and validated a
|
||
whole batch of village entry forms! I won't take that kind of trot aboard my
|
||
station! I'll hide the stamp under my bed until I find out who's responsible.
|
||
Also, I gave Schmidt permission to move the alien pyramid to the "
|
||
'HOLDING-TANK " in the Sci Sub-Module for further study; the " 'SKELETON " is
|
||
too brittle to move, they say. Hmmm... This " 'LOG-READER " is overheating.
|
||
I'll have to dig out the spare.">)
|
||
(<EQUAL? ,LOG-COUNTER 7>
|
||
<TELL
|
||
"3.7700: Equipment Officer Mertzhoffer informs me that there have
|
||
been several unexplainable breakdowns in the Gymnastic Equipment and the
|
||
Laundering Machinery. All very simple equipment; could it be sabotage?
|
||
If so, how? Who? Why?">)
|
||
(<EQUAL? ,LOG-COUNTER 8>
|
||
<TELL
|
||
"4.1650: Emergency communication from the S.P.S. Duffy. They are
|
||
critically low on " ,FORM-NAME ", and are sending someone over to pick up a
|
||
truckload of them. Reproductions Officer Hausberg says that the #22 collater
|
||
should be available to prepare the forms.">)
|
||
(<EQUAL? ,LOG-COUNTER 9>
|
||
<TELL
|
||
"4.1850: Hausberg reports an unexpected shutdown of web-feeder #17.
|
||
No apparent reason for the shutdown, and no warning, either. He says that one
|
||
of his personnel almost lost an arm when it shut down. We may have to halt the
|
||
entire plant to investigate. No telling how long... What the... Trot! Now the
|
||
spare " 'LOG-READER " is overheating, also!">)
|
||
(T
|
||
<TELL
|
||
"4.1900: One of the ensigns in the filing division was seriously
|
||
injured when one of the " 'WELDER "s malfunctioned. She's in Sick Bay now;
|
||
Doc says she should pull through. I've been in space for 32 years and
|
||
I've never heard of a " 'WELDER " malfun... What the krip!...">)>
|
||
<TELL "\"">
|
||
<COND (<NOT <EQUAL? ,LOG-COUNTER 10>>
|
||
<TELL CR
|
||
" A mechanized voice from the " 'LOG-READER " intones the single word
|
||
\"More,\" and the red button on the reader lights up.">)>
|
||
<CRLF>>
|
||
|
||
;"routine I-LOG-READER moved to INTERRUPTS file"
|
||
|
||
<ROOM COMMANDERS-QUARTERS
|
||
(IN ROOMS)
|
||
(DESC "Commander's Quarters")
|
||
(LDESC
|
||
"These are by far the nicest living quarters on the station, with
|
||
separate sleeping, changing, and working cubicles, and a private SanFac.
|
||
The only exit is west.")
|
||
(WEST TO COMMANDERS-OFFICE IF P-WON)
|
||
(OUT TO COMMANDERS-OFFICE IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR BED FIXTURES CUBICLE WARDROBE DESK)
|
||
(THINGS <PSEUDO (<> DIAL DIAL-F)>)>
|
||
|
||
<ROUTINE DIAL-F ()
|
||
<COND (<FSET? ,SAFE ,OPENBIT>
|
||
<TELL "There's not much left of the dial." CR>)
|
||
(<AND <VERB? SET>
|
||
<PRSO? ,PSEUDO-OBJECT>>
|
||
<COND (<NOT ,PRSI>
|
||
<TELL ,NEXT-TIME>)
|
||
(<NOT <PRSI? ,INTNUM>>
|
||
<TELL ,HUH>)
|
||
(T
|
||
<PERFORM ,V?SET ,INTNUM>
|
||
<RTRUE>)>)
|
||
(<VERB? EXAMINE>
|
||
<TELL "The dial is set to " N ,DIAL-SETTING ,PERIOD-CR>)>>
|
||
|
||
<GLOBAL DIAL-SETTING 4473>
|
||
|
||
<OBJECT LOG-TAPE
|
||
(IN COMMANDERS-QUARTERS)
|
||
(DESC "log tape")
|
||
(FDESC
|
||
"Sitting on the Commander's desk is an ordinary-looking log tape. There's
|
||
a notation printed on it.")
|
||
(SYNONYM TAPE LOG NOTATION)
|
||
(ADJECTIVE LOG)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(TEXT "\"Commander's Log -- 11349.12.2 through 11349.12.4\"")>
|
||
|
||
<OBJECT SAFE
|
||
(IN COMMANDERS-QUARTERS)
|
||
(DESC "safe")
|
||
(FDESC ;"so it'll get printed before other DESCs"
|
||
"A sturdy safe is welded to the deck next to the desk.")
|
||
(LDESC
|
||
"The safe has been blown open! The area around the safe is blackened, and a
|
||
burnt odor hangs in the air.")
|
||
(SYNONYM SAFE LOCK)
|
||
(ADJECTIVE STURDY)
|
||
(FLAGS CONTBIT SEARCHBIT LOCKEDBIT)
|
||
(ACTION SAFE-F)>
|
||
|
||
<ROUTINE SAFE-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"It's a top-of-the-line HyperSecurity Safe, featuring a dial with
|
||
8000 settings. There are probably between twelve and twenty numbers
|
||
in the combination">
|
||
<COND (<IN? ,DRILLED-HOLE ,HERE>
|
||
<TELL ". There is a hole in the safe">
|
||
<DESCRIBE-BIT-SIZE ,HOLE-SIZE>)>
|
||
<TELL ,PERIOD-CR>)
|
||
(<VERB? DRILL>
|
||
<MAKE-HOLE-WITH-DRILL ,SAFE>)
|
||
(<VERB? UNLOCK PICK>
|
||
<TELL
|
||
"The galaxy's craftiest safecrackers would be stumped by this baby." CR>)>>
|
||
|
||
<ROUTINE DESCRIBE-BIT-SIZE (BIT-SIZE)
|
||
<TELL " approximately the diameter of a ">
|
||
<COND (<EQUAL? .BIT-SIZE ,SMALL-BIT>
|
||
<TELL "toothpick">)
|
||
(<EQUAL? .BIT-SIZE ,MEDIUM-BIT>
|
||
<TELL "pencil">)
|
||
(T
|
||
<TELL "cigar">)>>
|
||
|
||
<GLOBAL DRILL-DEAD <>>
|
||
|
||
<GLOBAL HOLE-SIZE <>>
|
||
|
||
<GLOBAL DRILL-FOOTNOTE <>>
|
||
|
||
<GLOBAL SAFE-HOLE-SCORE <>>
|
||
|
||
<OBJECT DRILLED-HOLE
|
||
(DESC "hole")
|
||
(SYNONYM HOLE)
|
||
(FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)
|
||
(ACTION DRILLED-HOLE-F)>
|
||
|
||
<ROUTINE DRILLED-HOLE-F ("AUX" OBJ)
|
||
<SET OBJ <COND (<EQUAL? ,HERE ,COMMANDERS-QUARTERS>
|
||
,SAFE)
|
||
(<EQUAL? ,HERE ,LOAN-SHARK>
|
||
,STRONG-BOX)
|
||
(T
|
||
,HOUSING)>>
|
||
<COND (<AND <VERB? PUT>
|
||
<PRSI? ,DRILLED-HOLE>>
|
||
<COND (<OR <NOT <PRSO? ,EXPLOSIVE>>
|
||
<EQUAL? ,HOLE-SIZE ,SMALL-BIT>>
|
||
<DOESNT-FIT "hole">)
|
||
(<EQUAL? ,HERE ,DOME>
|
||
<TELL
|
||
"As the explosive touches the warm bin, it " ,SUBLIMES-INTO-FREZONE>
|
||
<DEQUEUE I-EXPLOSIVE-MELT>
|
||
<REMOVE-CAREFULLY ,EXPLOSIVE>
|
||
<CRLF>)
|
||
(<AND <NOT ,SAFE-HOLE-SCORE>
|
||
<EQUAL? ,HERE ,COMMANDERS-QUARTERS>>
|
||
<SETG ROBOT-EVILNESS <+ ,ROBOT-EVILNESS 1>>
|
||
<SETG SCORE <+ ,SCORE 3>>
|
||
<SETG SAFE-HOLE-SCORE T>
|
||
<RFALSE>)>)
|
||
(<VERB? DRILL>
|
||
<PERFORM, PRSA .OBJ>
|
||
<RTRUE>)
|
||
(<VERB? SHOOT>
|
||
<PERFORM, PRSA .OBJ ,ZAPGUN>
|
||
<RTRUE>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL ,ONLY-BLACKNESS>)>>
|
||
|
||
<ROUTINE MAKE-HOLE-WITH-DRILL (OBJ)
|
||
<COND (,DRILL-DEAD
|
||
<PERFORM ,V?ON ,DRILL>
|
||
<RTRUE>)
|
||
(<AND ,HOLE-SIZE
|
||
<NOT <IN? ,DRILLED-HOLE ,HERE>>>
|
||
<SETG DRILL-DEAD T>
|
||
<TELL
|
||
"As you begin drilling, the drill sparks and stops running." CR>)
|
||
(<NOT ,HOLE-SIZE>
|
||
<MOVE ,DRILLED-HOLE ,HERE>
|
||
<SETG HOLE-SIZE <FIRST? ,DRILL>>
|
||
<SETG C-ELAPSED 30>
|
||
<TELL "You drill a hole in" T .OBJ>
|
||
<DESCRIBE-BIT-SIZE ,HOLE-SIZE>
|
||
<TELL ,PERIOD-CR>)
|
||
(<EQUAL? ,HOLE-SIZE <FIRST? ,DRILL>>
|
||
<TELL ,SENILITY-STRIKES>)
|
||
(<OR <EQUAL? ,HOLE-SIZE ,LARGE-BIT>
|
||
<IN? ,SMALL-BIT ,DRILL>>
|
||
<TELL
|
||
"The hole in the safe is already larger than the bit in the drill." CR>)
|
||
(T
|
||
<SETG HOLE-SIZE <FIRST? ,DRILL>>
|
||
<TELL "You enlarge the hole in" T .OBJ ". It's now">
|
||
<DESCRIBE-BIT-SIZE ,HOLE-SIZE>
|
||
<TELL ,PERIOD-CR>)>>
|
||
|
||
<OBJECT KEY
|
||
(IN SAFE)
|
||
(DESC "key")
|
||
(SYNONYM KEY)
|
||
(FLAGS TAKEBIT)
|
||
(SIZE 3)
|
||
(VALUE 7)>
|
||
|
||
<OBJECT VALIDATION-STAMP
|
||
(DESC "validation stamp")
|
||
(SYNONYM STAMP)
|
||
(ADJECTIVE VALIDA)
|
||
(FLAGS TAKEBIT)
|
||
(ACTION STAMP-F)>
|
||
|
||
<ROUTINE STAMP-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL "It's a fairly standard self-inking rubber stamp." CR>)>>
|
||
|
||
<ROOM BRIEFING-ROOM
|
||
(IN ROOMS)
|
||
(DESC "Briefing Room")
|
||
(LDESC
|
||
"This is the Station Commander's conference room. Doors point north and west.")
|
||
(NORTH TO COMMANDERS-OFFICE IF P-WON)
|
||
(WEST TO SOUTH-CONNECTION IF P-WON)
|
||
(OUT TO SOUTH-CONNECTION IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<ROOM ARMORY
|
||
(IN ROOMS)
|
||
(DESC "Armory")
|
||
(LDESC
|
||
"This is a secondary weapons storage deck, but the only weapon deck on a
|
||
station with no Military Sub-Module. Exit: south.")
|
||
(SOUTH TO END-OF-CORRIDOR IF P-WON)
|
||
(OUT TO END-OF-CORRIDOR IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT FLOYDBIT)
|
||
(VALUE 5)
|
||
(GLOBAL SECURITY-DOOR)>
|
||
|
||
<GLOBAL ZAPGUN-SHOTS 7>
|
||
|
||
<GLOBAL ZAPGUN-FOOTNOTE <>>
|
||
|
||
<OBJECT ZAPGUN
|
||
(IN ARMORY)
|
||
(DESC "fusor-beam zapgun")
|
||
(SYNONYM GUN ZAPGUN)
|
||
(ADJECTIVE FUSOR BEAM)
|
||
(SIZE 15)
|
||
(FLAGS TAKEBIT)
|
||
(ACTION ZAPGUN-F)>
|
||
|
||
<ROUTINE ZAPGUN-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"The zapgun is a nasty-looking weapon. Mounted near its ugly maw is an
|
||
indicator which reads \"" N ,ZAPGUN-SHOTS ".\"" CR>)>>
|
||
|
||
<ROOM SOUTH-CONNECTION
|
||
(IN ROOMS)
|
||
(DESC "South Connection")
|
||
(NORTH TO SOUTH-JUNCTION)
|
||
(EAST TO BRIEFING-ROOM IF P-WON)
|
||
(SOUTH PER VILLAGE-BOUNDARY-F)
|
||
(WEST TO ROBOT-SHOP IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR IRIS-HATCH)
|
||
(ACTION SOUTH-CONNECTION-F)
|
||
(THINGS <PSEUDO (<> SLOT FORM-SLOT-F)>)>
|
||
|
||
<ROUTINE SOUTH-CONNECTION-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"The corridor widens as it reaches the hull of the station. To the south,
|
||
where a Sub-Module connection would be in a station with a Diplomatic
|
||
Sub-Module, an iris hatch is ">
|
||
<COND (<FSET? ,IRIS-HATCH ,OPENBIT>
|
||
<TELL
|
||
"open, leading to a dark corridor which is quite obviously not a connecting
|
||
tube for a Diplomatic Sub-Module">)
|
||
(T
|
||
<TELL "closed">)>
|
||
<TELL
|
||
". There's a slot next to the hatch. Other doors lead east and west,
|
||
and a junction with another corridor is visible to the north.">)>>
|
||
|
||
<ROOM LEVEL-FOUR
|
||
(IN ROOMS)
|
||
(DESC "Level Four")
|
||
(NORTH TO FEMALE-BARRACKS IF P-WON)
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(SOUTH TO MALE-BARRACKS IF P-WON)
|
||
(WEST TO DOCKING-BAY-3 IF P-WON)
|
||
(UP TO LEVEL-THREE)
|
||
(DOWN TO LEVEL-FIVE)
|
||
(LEVEL 4)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL CALL-BUTTON AUTO-DOOR ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER)
|
||
(ACTION LEVEL-FOUR-F)>
|
||
|
||
<ROUTINE LEVEL-FOUR-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"You are now on the primary bunk level of the station, with barracks to
|
||
the north and south. To the east is the elevator ">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 4>>
|
||
<TELL "shaft ">)>
|
||
<TELL
|
||
"and the elevator call button. Docking Bay #3 can be entered to the west"
|
||
,LADDER-LEADS>)>>
|
||
|
||
<ROOM DOCKING-BAY-3
|
||
(IN ROOMS)
|
||
(DESC "Docking Bay #3")
|
||
(LDESC
|
||
"This is a wide but not very tall docking bay. The station entrance lies
|
||
to the east.")
|
||
(EAST TO LEVEL-FOUR IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<OBJECT LILAC-SPOOL
|
||
(IN DOCKING-BAY-3)
|
||
(DESC "lilac nanofilm spool")
|
||
(SYNONYM NANOFILM SPOOL SPOOLS)
|
||
(ADJECTIVE NANOFILM LILAC)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(SIZE 3)
|
||
(TEXT "\"Spacetruck Refueling Instructions\"")>
|
||
|
||
<ROOM FEMALE-BARRACKS
|
||
(IN ROOMS)
|
||
(DESC "Female Barracks")
|
||
(LDESC
|
||
"This cramped dormitory, composed of approximately twenty private cubicles,
|
||
curves around the northern half of this level, with exits to the southeast
|
||
and southwest.")
|
||
(SE TO BARRACKS-SANFAC)
|
||
(SW TO LEVEL-FOUR IF P-WON)
|
||
(NORTH "You enter one of the cubicles but find nothing of interest.")
|
||
(NE "You enter one of the cubicles but find nothing of interest.")
|
||
(NW "You enter one of the cubicles but find nothing of interest.")
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR BED CUBICLE WARDROBE DESK)>
|
||
|
||
<ROOM MALE-BARRACKS
|
||
(IN ROOMS)
|
||
(DESC "Male Barracks")
|
||
(LDESC
|
||
"This warren of tiny cubicles fills the southern half of this level, curving
|
||
toward exits in the northeast and northwest corners.")
|
||
(NE TO BARRACKS-SANFAC)
|
||
(NW TO LEVEL-FOUR IF P-WON)
|
||
(SOUTH "You enter one of the cubicles but find nothing of interest.")
|
||
(SE "You enter one of the cubicles but find nothing of interest.")
|
||
(SW "You enter one of the cubicles but find nothing of interest.")
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR BED CUBICLE WARDROBE DESK)>
|
||
|
||
<ROOM BARRACKS-SANFAC
|
||
(IN ROOMS)
|
||
(DESC "Barracks SanFac")
|
||
(LDESC
|
||
"This is a crowded but otherwise typical sanitary facility, with rows of
|
||
showers, toilet stalls, and sinks. There are exits both north and south.")
|
||
(NORTH TO FEMALE-BARRACKS)
|
||
(SOUTH TO MALE-BARRACKS)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL FIXTURES)>
|
||
|
||
<ROOM LEVEL-THREE
|
||
(IN ROOMS)
|
||
(DESC "Level Three")
|
||
(NORTH TO GYM IF P-WON)
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(SOUTH TO THEATRE IF P-WON)
|
||
(SW TO CHAPEL)
|
||
(NW TO LAUNDRY IF P-WON)
|
||
(UP TO MESS-HALL)
|
||
(DOWN TO LEVEL-FOUR)
|
||
(LEVEL 3)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR CALL-BUTTON ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER)
|
||
(ACTION LEVEL-THREE-F)>
|
||
|
||
<ROUTINE LEVEL-THREE-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"From this lobby you can choose doors that lie to the north, south, or
|
||
northwest. An additional doorway leads southwest. The elevator ">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 3>>
|
||
<TELL "shaft ">)>
|
||
<TELL "and button are just to the east" ,LADDER-LEADS>)>>
|
||
|
||
<ROOM GYM
|
||
(IN ROOMS)
|
||
(DESC "Gym")
|
||
(SOUTH TO LEVEL-THREE IF P-WON)
|
||
(OUT TO LEVEL-THREE IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR SIGN)
|
||
(ACTION GYM-F)>
|
||
|
||
<ROUTINE GYM-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is a huge room where station personnel keep in shape via exercise and
|
||
recreational sports. ">
|
||
<COND (<NOT <IN? ,EXERCISE-MACHINE ,HERE>>
|
||
<TELL "There's a sign on one wall. ">)>
|
||
<TELL "The sole exit is south.">)>>
|
||
|
||
<OBJECT EXERCISE-MACHINE
|
||
(IN GYM)
|
||
(DESC "exercise machine")
|
||
(FDESC
|
||
"A multiple-function exercise machine sits imposingly on one side of the
|
||
gym. There is a sign above it.")
|
||
(SYNONYM MACHIN)
|
||
(ADJECTIVE EXERCISE NAUTILUS)
|
||
(FLAGS VOWELBIT VEHBIT INBIT CONTBIT OPENBIT SEARCHBIT)
|
||
(CAPACITY 100)
|
||
(ACTION EXERCISE-MACHINE-F)>
|
||
|
||
<ROUTINE EXERCISE-MACHINE-F (OARG)
|
||
<COND (.OARG
|
||
<RFALSE>)
|
||
(<VERB? ENTER>
|
||
<COND (<RUNNING? ,I-EXERCISE-MACHINE>
|
||
<TELL "The " 'EXERCISE-MACHINE>
|
||
<JIGS-UP
|
||
" hums encouraging platitudes as it exercises you to death.">)
|
||
(<EQUAL? ,HERE ,COMPUTER-CONTROL>
|
||
<TELL "The forklift is in the way." CR>)>)
|
||
(<VERB? ON OFF>
|
||
<TELL "It's permanently on." CR>)
|
||
(<AND <VERB? EXAMINE>
|
||
<NOT <IN? ,PROTAGONIST ,EXERCISE-MACHINE>>>
|
||
<TELL "There's no one in" TR ,EXERCISE-MACHINE>)
|
||
(<VERB? KILL MUNG>
|
||
<TELL
|
||
"The " 'EXERCISE-MACHINE " is made of zynoid-reinforced hyper-steel." CR>)
|
||
(<VERB? USE>
|
||
<COND (<IN? ,PROTAGONIST ,EXERCISE-MACHINE>
|
||
<V-EXERCISE>)
|
||
(T
|
||
<TELL "You're not even in it!" CR>)>)>>
|
||
|
||
<ROOM LAUNDRY
|
||
(IN ROOMS)
|
||
(DESC "Laundry")
|
||
(EAST TO LEVEL-THREE IF P-WON)
|
||
(OUT TO LEVEL-THREE IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR)
|
||
(ACTION LAUNDRY-F)>
|
||
|
||
<ROUTINE LAUNDRY-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"All laundry rooms, planetside as well as in space, tend to look alike.
|
||
This one is no exception.">
|
||
<COND (<FSET? ,DRYER ,ACTIVEBIT>
|
||
<TELL " ">
|
||
<DESCRIBE-DRYER-HEAT>)>
|
||
<TELL " The door lies on the east side.">)
|
||
(<AND <EQUAL? .RARG ,M-ENTER>
|
||
<FSET? ,PRESSER ,ACTIVEBIT>>
|
||
<QUEUE I-PRESSER 40>)
|
||
(<AND <EQUAL? .RARG ,M-END>
|
||
<G? ,DRYER-COUNTER 15>>
|
||
<TELL
|
||
" The heat from the dryer is too much to stand! You stumble mindlessly
|
||
out into the corridor" ,ELLIPSIS>
|
||
<GOTO ,LEVEL-THREE>)>>
|
||
|
||
<OBJECT DRYER
|
||
(IN LAUNDRY)
|
||
(DESC "dryer")
|
||
(FDESC
|
||
"In the corner, next to the dryer, is a large empty spot where the washer
|
||
should be.")
|
||
(SYNONYM DRYER)
|
||
(FLAGS CONTBIT SEARCHBIT LIGHTBIT)
|
||
(CAPACITY 50)
|
||
(ACTION DRYER-F)>
|
||
|
||
<ROUTINE DRYER-F ()
|
||
<COND (<VERB? LOOK-BEHIND>
|
||
<TELL
|
||
"You see a huge pile of Patrol-issue socks, hundreds of them,
|
||
all mismatched." CR>)
|
||
(<AND <VERB? ON>
|
||
<NOT <FSET? ,DRYER ,ACTIVEBIT>>>
|
||
<FSET ,DRYER ,ACTIVEBIT>
|
||
<QUEUE I-DRYER -1>
|
||
<TELL
|
||
"An abnormal amount of hot air blasts out from all sides of the dryer." CR>)
|
||
(<AND <VERB? OFF>
|
||
<FSET? ,DRYER ,ACTIVEBIT>>
|
||
<FCLEAR ,DRYER ,ACTIVEBIT>
|
||
<DEQUEUE I-DRYER>
|
||
<SETG DRYER-COUNTER 0>
|
||
<TELL
|
||
"With the dryer off, the station's ventilation system quickly returns the
|
||
room to a comfy twenty-three degrees Celsius." CR>)
|
||
(<AND <VERB? OPEN>
|
||
<FSET? ,DRYER ,ACTIVEBIT>>
|
||
<TELL "Opening the dryer automatically shuts it off. ">
|
||
<FSET ,DRYER ,OPENBIT>
|
||
<PERFORM ,V?OFF ,DRYER>
|
||
<RTRUE>)
|
||
(<VERB? SHOOT>
|
||
<FCLEAR ,DRYER ,ACTIVEBIT>
|
||
<DEQUEUE I-DRYER>
|
||
<SETG DRYER-COUNTER 0>
|
||
<RFALSE>)>>
|
||
|
||
<GLOBAL DRYER-COUNTER 0>
|
||
|
||
;"routine I-DRYER moved to INTERRUPTS file"
|
||
|
||
<ROUTINE DESCRIBE-DRYER-HEAT ()
|
||
<COND (<G? ,DRYER-COUNTER 14>
|
||
<TELL
|
||
"Searing blasts of air from the dryer have made the room unbearably hot.">)
|
||
(<G? ,DRYER-COUNTER 9>
|
||
<TELL
|
||
"Thanks to the dryer, the laundry room is now incredibly toasty.">)
|
||
(T
|
||
<TELL
|
||
"The dryer is making the room uncomfortably hot.">)>>
|
||
|
||
<OBJECT PRESSER
|
||
(IN LAUNDRY)
|
||
(DESC "presser")
|
||
(DESCFCN PRESSER-F)
|
||
(SYNONYM PRESSER)
|
||
(FLAGS CONTBIT SEARCHBIT LIGHTBIT)
|
||
(CAPACITY 10)
|
||
(ACTION PRESSER-F)>
|
||
|
||
<ROUTINE PRESSER-F ("OPTIONAL" (OARG <>))
|
||
<COND (.OARG
|
||
<COND (<FSET? ,PRESSER ,ACTIVEBIT>
|
||
<COND (<EQUAL? .OARG ,M-OBJDESC?>
|
||
<RTRUE>)>
|
||
<TELL " ">
|
||
<DESCRIBE-PRESSER>)>)
|
||
(<VERB? EXAMINE>
|
||
<COND (<FSET? ,PRESSER ,ACTIVEBIT>
|
||
<DESCRIBE-PRESSER>
|
||
<TELL " ">)>
|
||
<TELL "The presser is currently o">
|
||
<COND (<FSET? ,PRESSER ,ACTIVEBIT>
|
||
<TELL "n">)
|
||
(T
|
||
<TELL "ff">)>
|
||
<TELL ". ">
|
||
<RFALSE>)
|
||
(<AND <VERB? PUT-ON>
|
||
<PRSI? ,PRESSER>>
|
||
<PERFORM ,V?PUT ,PRSO ,PRSI>
|
||
<RTRUE>)
|
||
(<AND <VERB? CLOSE>
|
||
<FSET? ,PRESSER ,ACTIVEBIT>>
|
||
<COND (<IN? ,CRUMPLED-FORM ,PRESSER>
|
||
<REMOVE ,CRUMPLED-FORM>
|
||
<MOVE ,VILLAGE-FORM ,PRESSER>)>
|
||
<COND (<IN? ,PATROL-UNIFORM ,PRESSER>
|
||
<SETG SUIT-PRESSED T>)>
|
||
<RFALSE>)
|
||
(<AND <VERB? ON>
|
||
<NOT <FSET? ,PRESSER ,ACTIVEBIT>>>
|
||
<SETG PRESSER-STEAMING <>>
|
||
<FSET ,PRESSER ,ACTIVEBIT>
|
||
<QUEUE I-PRESSER 25>
|
||
<COND (<NOT <FSET? ,PRESSER ,OPENBIT>>
|
||
<COND (<IN? ,CRUMPLED-FORM ,PRESSER>
|
||
<REMOVE ,CRUMPLED-FORM>
|
||
<MOVE ,VILLAGE-FORM ,PRESSER>)>
|
||
<COND (<IN? ,PATROL-UNIFORM ,PRESSER>
|
||
<SETG SUIT-PRESSED T>)>)>
|
||
<TELL
|
||
"A trickle of steam begins leaking from the presser." CR>)
|
||
(<VERB? SHOOT>
|
||
<DEQUEUE I-PRESSER>
|
||
<RFALSE>)>>
|
||
|
||
<GLOBAL PRESSER-STEAMING <>>
|
||
|
||
<ROUTINE DESCRIBE-PRESSER ()
|
||
<TELL "A ">
|
||
<COND (,PRESSER-STEAMING
|
||
<TELL "huge amount">)
|
||
(T
|
||
<TELL "trickle">)>
|
||
<TELL " of steam is coming from the laundry room's presser.">>
|
||
|
||
<ROUTINE I-PRESSER ()
|
||
<COND (<AND <FSET? ,PRESSER ,ACTIVEBIT>
|
||
<EQUAL? ,HERE ,LAUNDRY>>
|
||
<TELL " ">
|
||
<COND (,PRESSER-STEAMING
|
||
<TELL "The presser suddenly ">
|
||
<COND (<NOT <FSET? ,PRESSER ,OPENBIT>>
|
||
<TELL "opens, ">)>
|
||
<JIGS-UP
|
||
"lurches forward and slams shut on your arm. Before you pass out from
|
||
the pain, you hear a rumbling sound from the presser, but you can't
|
||
decide whether it sounds more like a chuckle or a burp.">)
|
||
(T
|
||
<SETG PRESSER-STEAMING T>
|
||
<QUEUE I-PRESSER 25>
|
||
<TELL
|
||
"The presser shudders, and clouds of steam begin billowing out of it." CR>)>)>>
|
||
|
||
<ROOM CHAPEL
|
||
(IN ROOMS)
|
||
(DESC "Chapel")
|
||
(EAST TO LEVEL-THREE)
|
||
(OUT TO LEVEL-THREE)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(ACTION CHAPEL-F)>
|
||
|
||
<ROUTINE CHAPEL-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is a modest, nondenominational chapel. Hanging high above the ">
|
||
<COND (<IN? ,PULPIT ,HERE>
|
||
<TELL "beautiful wooden pulpit ">)
|
||
(T
|
||
<TELL "floor ">)>
|
||
<COND (<NOT <FSET? ,STAR ,TOUCHBIT>>
|
||
<TELL "are the two">)
|
||
(T
|
||
<TELL "is one of the">)>
|
||
<TELL
|
||
" universal symbols of every major galactic religion: an " 'ETERNAL-FLAME>
|
||
<COND (<NOT <FSET? ,STAR ,TOUCHBIT>>
|
||
<TELL " and a " 'STAR>)>
|
||
<TELL ". ">
|
||
<COND (<FSET? ,ETERNAL-FLAME ,ONBIT>
|
||
<TELL "The flame flickers in the air currents. ">)
|
||
(T
|
||
<TELL ,FLAME-EXTINGUISHED " ">)>
|
||
<TELL "A doorway occupies the center of the east wall.">
|
||
<COND (<NOT <FSET? ,STAR ,TOUCHBIT>>
|
||
<TELL CR " The star is blinking.">)>
|
||
<RTRUE>)>>
|
||
|
||
<OBJECT PUCE-SPOOL
|
||
(IN CHAPEL)
|
||
(DESC "puce nanofilm spool")
|
||
(SYNONYM NANOFILM SPOOL SPOOLS)
|
||
(ADJECTIVE NANOFILM PUCE)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(SIZE 3)
|
||
(TEXT "\"Chapel Maintenance Procedures\"")>
|
||
|
||
<OBJECT STAR
|
||
(IN CHAPEL)
|
||
(DESC "seven-pointed star")
|
||
(SYNONYM STAR)
|
||
(ADJECTIVE SEVEN POINTED)
|
||
(FLAGS NDESCBIT TRYTAKEBIT TAKEBIT CONTBIT SEARCHBIT)
|
||
(SIZE 8)
|
||
(ACTION STAR-F)>
|
||
|
||
<ROUTINE STAR-F ()
|
||
<COND (<AND <TOUCHING? ,STAR>
|
||
<FSET? ,STAR ,TRYTAKEBIT>
|
||
<NOT ,HANGING-IN-AIR>>
|
||
<TELL "The star is above you, beyond your reach." CR>)
|
||
(<AND <VERB? TAKE>
|
||
<FSET? ,STAR ,TRYTAKEBIT>
|
||
,HANGING-IN-AIR>
|
||
<FCLEAR ,STAR ,TRYTAKEBIT>
|
||
<FCLEAR ,STAR ,NDESCBIT>
|
||
<FSET ,STAR ,TOUCHBIT>
|
||
<MOVE ,STAR ,PROTAGONIST>
|
||
<SETG ROBOT-EVILNESS <+ ,ROBOT-EVILNESS 1>>
|
||
<SETG SCORE <+ ,SCORE <GETP ,DIODE-M ,P?VALUE>>>
|
||
<PUTP ,DIODE-M ,P?VALUE 0>
|
||
<TELL "Taken." CR>)
|
||
(<VERB? EXAMINE>
|
||
<COND (<IN? ,DIODE-M ,STAR>
|
||
<TELL "It's blinking with a gentle, rhythmic light. ">)>
|
||
<COND (<AND <FSET? ,STAR ,TRYTAKEBIT>
|
||
<NOT ,HANGING-IN-AIR>>
|
||
<PERFORM ,V?TOUCH ,STAR>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "The back of the star ">
|
||
<COND (<FSET? ,STAR ,OPENBIT>
|
||
<TELL "is open">)
|
||
(T
|
||
<TELL "looks openable">)>
|
||
<TELL ,PERIOD-CR>)>)
|
||
(<AND <VERB? PUT>
|
||
<PRSO? ,DIODE-J>>
|
||
<REMOVE ,DIODE-J>
|
||
<TELL
|
||
"Once the diode is in place, the star begins blinking rapidly and erratically.
|
||
Suddenly the diode bursts and the star goes dead." CR>)>>
|
||
|
||
<OBJECT DIODE-M
|
||
(IN STAR)
|
||
(DESC "M-series hyperdiode")
|
||
(SYNONYM DIODE DIODES HYPERDIODE)
|
||
(ADJECTIVE M-SERIES M SERIES)
|
||
(PLATO-ASK-ABOUT
|
||
"I'm really not at all mechanically inclined. My sincerest apologies.")
|
||
(FLOYD-ASK-ABOUT
|
||
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
|
||
(VALUE 7) ;"in case you take diode M without ever taking star"
|
||
(FLAGS VOWELBIT TAKEBIT)>
|
||
|
||
<OBJECT ETERNAL-FLAME
|
||
(IN CHAPEL)
|
||
(DESC "eternal flame")
|
||
(SYNONYM FLAME)
|
||
(ADJECTIVE ETERNAL)
|
||
(FLAGS VOWELBIT ONBIT NDESCBIT LIGHTBIT ACTIVEBIT)
|
||
(ACTION ETERNAL-FLAME-F)>
|
||
|
||
<ROUTINE ETERNAL-FLAME-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<COND (<FSET? ,ETERNAL-FLAME ,ONBIT>
|
||
<TELL
|
||
"The " 'ETERNAL-FLAME " burns high above the floor of the chapel. It looks like
|
||
a reproduction of the " 'ETERNAL-FLAME " designed by the 108th century artist,
|
||
Ernie DaCosta, for the Sierra Vista Monastery on Bulbus VII." CR>)
|
||
(T
|
||
<TELL ,FLAME-EXTINGUISHED CR>)>)
|
||
(<VERB? ON OFF>
|
||
<COND (<NOT ,HANGING-IN-AIR>
|
||
<TELL
|
||
"The flame is high above your head, and besides that, t">)
|
||
(T
|
||
<TELL "T">)>
|
||
<TELL "here doesn't seem to be a switch on the flame." CR>)
|
||
(<AND <TOUCHING? ,ETERNAL-FLAME>
|
||
<NOT ,HANGING-IN-AIR>>
|
||
<CANT-REACH ,ETERNAL-FLAME>)
|
||
(<AND <VERB? SHOOT>
|
||
<FSET? ,ETERNAL-FLAME ,ONBIT>>
|
||
<TELL
|
||
"Perhaps that made the flame hotter; there was really no way to tell." CR>)>>
|
||
|
||
<OBJECT PULPIT
|
||
(IN CHAPEL)
|
||
(DESC "pulpit")
|
||
(SYNONYM PULPIT)
|
||
(ADJECTIVE BEAUTIFUL WOODEN)
|
||
(CAPACITY 30)
|
||
(FLAGS NDESCBIT SEARCHBIT CONTBIT)
|
||
(ACTION PULPIT-F)>
|
||
|
||
<ROUTINE PULPIT-F ()
|
||
<COND (<VERB? CLIMB-ON CLIMB-UP STAND-ON ENTER>
|
||
<COND (,HANGING-IN-AIR
|
||
<CANT-REACH ,PULPIT>)
|
||
(T
|
||
<TELL "The pulpit sways, and you fall off.">
|
||
<COND (<NOT <FSET? ,PULPIT ,TOUCHBIT>>
|
||
<TELL " However, it wasn't a wasted effort: ">
|
||
<PERFORM ,V?EXAMINE ,PULPIT>
|
||
<RTRUE>)
|
||
(T
|
||
<CRLF>)>)>)
|
||
(<AND <VERB? EXAMINE>
|
||
<NOT <FSET? ,PULPIT ,TOUCHBIT>>>
|
||
<FSET ,PULPIT ,TOUCHBIT>
|
||
<TELL "You discover that the pulpit seems openable!" CR>)
|
||
(<VERB? SHOOT>
|
||
<REMOVE ,PULPIT>
|
||
<REMOVE ,SWITCH>
|
||
<TELL
|
||
"In a rain of hellfire and brimstone, the pulpit is banished." CR>)>>
|
||
|
||
<OBJECT SWITCH
|
||
(IN PULPIT)
|
||
(DESC "switch")
|
||
(SYNONYM SWITCH)
|
||
(ACTION SWITCH-F)>
|
||
|
||
<ROUTINE SWITCH-F ()
|
||
<COND (<VERB? ON OFF THROW PUSH MOVE SET>
|
||
<COND (,HANGING-IN-AIR
|
||
<CANT-REACH ,SWITCH>
|
||
<RTRUE>)>
|
||
<TELL "The " 'ETERNAL-FLAME " ">
|
||
<COND (<FSET? ,ETERNAL-FLAME ,ONBIT>
|
||
<FCLEAR ,ETERNAL-FLAME ,ACTIVEBIT>
|
||
<FCLEAR ,ETERNAL-FLAME ,ONBIT>
|
||
<TELL "goes out!" CR>)
|
||
(T
|
||
<FSET ,ETERNAL-FLAME ,ACTIVEBIT>
|
||
<FSET ,ETERNAL-FLAME ,ONBIT>
|
||
<TELL "flickers back on.">
|
||
<COND (<IN? ,BALLOON ,HERE>
|
||
<MOVE ,BALLOON ,LEVEL-THREE>
|
||
<MOVE ,LEASH ,LEVEL-THREE>
|
||
<TELL
|
||
" The " 'BALLOON " shoots out of the Chapel.">)>
|
||
<CRLF>)>)>>
|
||
|
||
<ROOM THEATRE
|
||
(IN ROOMS)
|
||
(DESC "Theatre")
|
||
(LDESC
|
||
"This sixty-seat auditorium is used for lectures, certain large briefings,
|
||
an occasional live entertainment, and a rare live broadcast over deep-space
|
||
channels. A projection booth dominates the rear of the room. The theatre's
|
||
only exit is to the north.")
|
||
(NORTH TO LEVEL-THREE IF P-WON)
|
||
(OUT TO LEVEL-THREE IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR)
|
||
(THINGS <PSEUDO (<> SEAT THEATRE-SEAT-F)
|
||
(PROJECTION BOOTH PROJECTION-BOOTH-F)
|
||
(<> LOCK BRIG-LOCK-F)>)>
|
||
|
||
<ROUTINE THEATRE-SEAT-F ()
|
||
<COND (<VERB? ENTER CLIMB-ON>
|
||
<SETG PRSO ,ROOMS>
|
||
<V-SIT>)>>
|
||
|
||
<ROUTINE PROJECTION-BOOTH-F ()
|
||
<COND (<VERB? OPEN ENTER WALK-TO SEARCH>
|
||
<TELL "The projection booth is closed and locked." CR>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL ,ONLY-BLACKNESS>)>>
|
||
|
||
<ROOM MESS-HALL
|
||
(IN ROOMS)
|
||
(DESC "Mess Hall")
|
||
(NORTH TO MAIN-STORAGE IF P-WON)
|
||
(NE TO MEETING-ROOM-1 IF P-WON)
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(SE TO LIBRARY)
|
||
(SOUTH TO MAIN-STORAGE IF P-WON)
|
||
(UP TO DOME)
|
||
(DOWN TO LEVEL-THREE)
|
||
(LEVEL 2)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL CALL-BUTTON AUTO-DOOR ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER)
|
||
(ACTION MESS-HALL-F)>
|
||
|
||
<ROUTINE MESS-HALL-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This open dining area seats around 30 people. " D ,FPU "s curve along the
|
||
exterior wall. There's a doorway to the southeast, and doors lead north, south,
|
||
and northeast. To the east are the elevator">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 2>>
|
||
<TELL " shaft">)>
|
||
<TELL ", the elevator button, and the up-down ladder.">)>>
|
||
|
||
<OBJECT FPU
|
||
(IN MESS-HALL)
|
||
(DESC "Food Processing and Dispensing Unit")
|
||
(SYNONYM UNIT FPU FDU DISPEN)
|
||
(ADJECTIVE FOOD PROCESSING DISPEN)
|
||
(FLAGS NDESCBIT)
|
||
(ACTION FPU-F)>
|
||
|
||
<ROUTINE FPU-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"The units curve around the outside wall of the Mess Hall. The interface is
|
||
delightfully simple: a user simply turns on the unit and immediately receives
|
||
a tasty and nutritionally-balanced meal." CR>)
|
||
(<VERB? ON>
|
||
<TELL
|
||
"A taped voice, in a cheery contralto, says, \"Good ">
|
||
<COND (<L? ,INTERNAL-MOVES 3000>
|
||
<TELL "morning">)
|
||
(<G? ,INTERNAL-MOVES 5000>
|
||
<TELL "evening">)
|
||
(T
|
||
<TELL "afternoon">)>
|
||
<TELL "! Today's menu features ">
|
||
<COND (<L? ,INTERNAL-MOVES 3000>
|
||
<TELL "sausage, frobbled eggs, and teakberry juice">)
|
||
(<G? ,INTERNAL-MOVES 5000>
|
||
<TELL
|
||
"chicken pot pie, braised volpoid livers, and mashed Rigellian yams">)
|
||
(T
|
||
<TELL
|
||
"a bacon, lettuce, and frombucko sandwich">)>
|
||
<TELL
|
||
". Eat hearty! Dispensing will now begin.\" A seamless hatch in the FDU opens,
|
||
and a stream of acid shoots out. You leap aside as the acid etches the floor,
|
||
leaving behind some acrid fumes." CR>)>>
|
||
|
||
<OBJECT COFFEE
|
||
(IN MESS-HALL)
|
||
(DESC "cup of coffee")
|
||
(DESCFCN COFFEE-F)
|
||
(SYNONYM CUP COFFEE)
|
||
(ADJECTIVE HOT COLD THICK BROWN)
|
||
(FLAGS TAKEBIT)
|
||
(ACTION COFFEE-F)>
|
||
|
||
<ROUTINE COFFEE-F ("OPTIONAL" (OARG <>))
|
||
<COND (.OARG
|
||
<COND (<FSET? ,COFFEE ,TOUCHBIT>
|
||
<RFALSE>)
|
||
(<EQUAL? .OARG ,M-OBJDESC?>
|
||
<RTRUE>)>
|
||
<TELL
|
||
" A cup of thick brown coffee sits on one of the tables">
|
||
<COND (<EQUAL? ,DAY 1>
|
||
<TELL
|
||
". It's still steaming, though there's no one in sight">)>
|
||
<TELL ".">)
|
||
(<AND <VERB? POUR EMPTY THROW>
|
||
<PRSO? ,COFFEE>>
|
||
<MESS "coffee">
|
||
<ANTI-LITTER ,COFFEE>)
|
||
(<AND <VERB? TASTE EXAMINE TOUCH REACH-IN LOOK-INSIDE>
|
||
<EQUAL? ,DAY 1>>
|
||
<TELL "The coffee is still hot." CR>)
|
||
(<VERB? TASTE>
|
||
<TELL "It tastes unusually bitter." CR>)
|
||
(<VERB? SMELL>
|
||
<TELL "The coffee has a vague chemical odor." CR>)
|
||
(<VERB? EXAMINE LOOK-INSIDE REACH-IN TOUCH>
|
||
<TELL "The cup is filled with cold coffee." CR>)
|
||
(<VERB? EAT-FROM>
|
||
<PERFORM ,V?EAT ,COFFEE>
|
||
<RTRUE>)
|
||
(<VERB? EAT>
|
||
<COND (<EQUAL? ,HUNGER-LEVEL 0>
|
||
<TELL ,NOT-HUNGRY>)
|
||
(T
|
||
<JIGS-UP
|
||
"Aaarghhh! The coffee is poisoned! It's eating away at your insides!!">)>)>>
|
||
|
||
<ROOM MAIN-STORAGE
|
||
(IN ROOMS)
|
||
(DESC "Main Storage")
|
||
(LDESC
|
||
"This is the primary storage room of the station, with large stockpiles
|
||
of important items. For example, basic organic materials are needed to
|
||
supplement the food supply due to the tiny inefficiencies of the recycling
|
||
process. This is nearly the top level of the Command Module, and the ceiling
|
||
curves in sharply over the supply room, which curves around to doors at the
|
||
northwestern and southwestern ends.")
|
||
(NW TO MESS-HALL IF P-WON)
|
||
(SW TO MESS-HALL IF P-WON)
|
||
(OUT TO MESS-HALL IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<OBJECT DETONATOR
|
||
(IN MAIN-STORAGE)
|
||
(DESC "detonator")
|
||
(SYNONYM DETONATOR)
|
||
(FLAGS TAKEBIT CONTBIT SEARCHBIT)
|
||
(SIZE 10)
|
||
(ACTION DETONATOR-F)>
|
||
|
||
<GLOBAL TIMER-CONNECTED <>>
|
||
|
||
<GLOBAL EXPLOSIVE-CONNECTED <>>
|
||
|
||
<ROUTINE DETONATOR-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"It's a state-of-the-art detonator, fairly cubical
|
||
with two connection points. ">
|
||
<COND (,TIMER-CONNECTED
|
||
<TELL "A timer is attached at one of those points">
|
||
<COND (,EXPLOSIVE-CONNECTED
|
||
<TELL
|
||
", and an explosive is attached at the other">)>
|
||
<TELL ". ">)
|
||
(,EXPLOSIVE-CONNECTED
|
||
<TELL
|
||
"An explosive is attached at one of those points. ">)>
|
||
<COND (<FSET? ,DETONATOR ,OPENBIT>
|
||
<TELL "The detonator is open">
|
||
<COND (<FIRST? ,DETONATOR>
|
||
<TELL " and contains" AR <FIRST? ,DETONATOR>>)
|
||
(T
|
||
<TELL ,PERIOD-CR>)>)
|
||
(T
|
||
<TELL
|
||
"There is a faint crack running around the outside of the detonator,
|
||
indicating that perhaps it can be opened." CR>)>)
|
||
(<VERB? CONNECT>
|
||
<COND (<EQUAL? ,TIMER ,PRSO ,PRSI>
|
||
<COND (,TIMER-CONNECTED
|
||
<TELL ,SENILITY-STRIKES>)
|
||
(T
|
||
<SETG TIMER-CONNECTED T>
|
||
<TELL "Done." CR>)>)
|
||
(<EQUAL? ,EXPLOSIVE ,PRSO ,PRSI>
|
||
<COND (,EXPLOSIVE-CONNECTED
|
||
<TELL ,SENILITY-STRIKES>)
|
||
(T
|
||
<SETG EXPLOSIVE-CONNECTED T>
|
||
<TELL "Done (Footnote 13)." CR>)>)
|
||
(T
|
||
<TELL ,YOU-CANT "connect the detonator to that!" CR>)>)
|
||
(<VERB? DISCONNECT>
|
||
<COND (<NOT ,PRSI>
|
||
<COND (<OR ,EXPLOSIVE-CONNECTED
|
||
,TIMER-CONNECTED>
|
||
<TELL ,DETACH>
|
||
<COND (,TIMER-CONNECTED
|
||
<TELL "the timer">
|
||
<COND (,EXPLOSIVE-CONNECTED
|
||
<TELL " and the explosive">)>)
|
||
(T
|
||
<TELL "the explosive">)>
|
||
<SETG EXPLOSIVE-CONNECTED <>>
|
||
<SETG TIMER-CONNECTED <>>
|
||
<TELL ,PERIOD-CR>)>)
|
||
(<AND <EQUAL? ,EXPLOSIVE ,PRSO ,PRSI>
|
||
,EXPLOSIVE-CONNECTED>
|
||
<SETG EXPLOSIVE-CONNECTED <>>
|
||
<TELL ,DETACH "the explosive." CR>)
|
||
(<AND <EQUAL? ,TIMER ,PRSO ,PRSI>
|
||
,TIMER-CONNECTED>
|
||
<SETG TIMER-CONNECTED <>>
|
||
<TELL ,DETACH "the timer." CR>)>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,DETONATOR>
|
||
<FSET? ,DETONATOR ,OPENBIT>>
|
||
<COND (<NOT <PRSO? ,DIODE-J ,DIODE-M ,BLACKENED-DIODE>>
|
||
<DOESNT-FIT "detonator">)
|
||
(<FIRST? ,DETONATOR>
|
||
<TELL
|
||
"There's a " D <FIRST? ,DETONATOR> " in the way." CR>)>)>>
|
||
|
||
<OBJECT BLACKENED-DIODE
|
||
(IN DETONATOR)
|
||
(DESC "blackened hyperdiode")
|
||
(SYNONYM DIODE DIODES HYPERDIODE)
|
||
(ADJECTIVE BLACKENED)
|
||
(FLAGS TAKEBIT)
|
||
(PLATO-ASK-ABOUT
|
||
"I'm really not at all mechanically inclined. My sincerest apologies.")
|
||
(FLOYD-ASK-ABOUT
|
||
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
|
||
(ACTION BLACKENED-DIODE-F)>
|
||
|
||
<GLOBAL DIODE-CLEANED <>>
|
||
|
||
<ROUTINE BLACKENED-DIODE-F ()
|
||
<COND (<VERB? CLEAN>
|
||
<COND (,DIODE-CLEANED
|
||
<TELL "You've de-charred the diode to the max." CR>)
|
||
(T
|
||
<SETG DIODE-CLEANED T>
|
||
<TELL
|
||
"You scrape off enough black that y" ,MAKE-OUT-AN-M>)>)
|
||
(<VERB? EXAMINE>
|
||
<COND (,DIODE-CLEANED
|
||
<TELL "Y" ,MAKE-OUT-AN-M>)
|
||
(T
|
||
<TELL
|
||
"The diode is so charred you can't even tell what series it is." CR>)>)
|
||
(<AND <VERB? COMPARE>
|
||
<OR <EQUAL? ,DIODE-J ,PRSO ,PRSI>
|
||
<EQUAL? ,DIODE-M ,PRSO ,PRSI>>>
|
||
<TELL
|
||
"They're identical in size and shape, but" T ,BLACKENED-DIODE " is covered
|
||
with char." CR>)>>
|
||
|
||
<ROOM MEETING-ROOM-1
|
||
(IN ROOMS)
|
||
(DESC "Meeting Room 1")
|
||
(LDESC
|
||
"This is a medium-sized conference room with doors to the south and west.")
|
||
(SOUTH TO MEETING-ROOM-2 IF P-WON)
|
||
(WEST TO MESS-HALL IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<ROOM MEETING-ROOM-2
|
||
(IN ROOMS)
|
||
(DESC "Meeting Room 2")
|
||
(LDESC
|
||
"This is a fairly large conference room with north and south exits.")
|
||
(NORTH TO MEETING-ROOM-1 IF P-WON)
|
||
(SOUTH TO LIBRARY IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<ROOM LIBRARY
|
||
(IN ROOMS)
|
||
(DESC "Library")
|
||
(LDESC
|
||
"This station's library has some printed material, such as recently transmitted
|
||
magazines, but primarily it is a location for reading nanofilm spools, using
|
||
the spool reader here, and for accessing the main computer's data banks via a
|
||
computer terminal. Strangely, the computer terminal has been removed. There's
|
||
a door to the north and an exit to the west.")
|
||
(NORTH TO MEETING-ROOM-2 IF P-WON)
|
||
(WEST TO MESS-HALL)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<OBJECT MAGAZINES
|
||
(IN LIBRARY)
|
||
(DESC "magazine")
|
||
(SYNONYM MAGAZINE)
|
||
(ADJECTIVE RECENT)
|
||
(FLAGS READBIT NDESCBIT TRYTAKEBIT)
|
||
(ACTION MAGAZINE-F)>
|
||
|
||
<ROUTINE MAGAZINE-F ()
|
||
<COND (<VERB? TAKE>
|
||
<RECORDING "Magazines are not to be removed from the library">)
|
||
(<VERB? READ OPEN EXAMINE LOOK-INSIDE>
|
||
<TELL
|
||
"You glance at the magazines. The most familiar ones are \"Popular
|
||
Patrolling,\" \"The Galactic Enquirer,\" and \"True Tales of Adventure.\"
|
||
However, they're all issues which you've already read back on the Duffy,
|
||
so they're not too interesting." CR>)>>
|
||
|
||
<OBJECT NANOFILM-READER
|
||
(IN LIBRARY)
|
||
(DESC "nanofilm reader")
|
||
(SYNONYM READER)
|
||
(ADJECTIVE NANOFILM SPOOL SPOOLS)
|
||
(FLAGS NDESCBIT LIGHTBIT CONTBIT OPENBIT SEARCHBIT)
|
||
(ACTION NANOFILM-READER-F)>
|
||
|
||
<ROUTINE NANOFILM-READER-F ("AUX" SPOOL)
|
||
<SET SPOOL <FIRST? ,NANOFILM-READER>>
|
||
<COND (<VERB? CLOSE>
|
||
<TELL ,HUH>)
|
||
(<VERB? EXAMINE>
|
||
<TELL
|
||
"The " 'NANOFILM-READER " must be a voice-output model, since it has no
|
||
screen. The reader is o">
|
||
<COND (<FSET? ,NANOFILM-READER ,ACTIVEBIT>
|
||
<TELL "n">)
|
||
(T
|
||
<TELL "ff">)>
|
||
<TELL ", and there is ">
|
||
<COND (.SPOOL
|
||
<TELL "a " D .SPOOL>)
|
||
(T
|
||
<TELL "no spool">)>
|
||
<TELL " in the reader." CR>)
|
||
(<VERB? PUT>
|
||
<COND (<NOT <PRSO? ,MAUVE-SPOOL ,PUCE-SPOOL ,LILAC-SPOOL>>
|
||
<TELL "It doesn't fit." CR>)
|
||
(.SPOOL
|
||
<TELL "There's already a spool in the reader." CR>)
|
||
(<FSET? ,NANOFILM-READER ,ACTIVEBIT>
|
||
<MOVE ,PRSO ,NANOFILM-READER>
|
||
<FCLEAR ,NANOFILM-READER ,ACTIVEBIT>
|
||
<PERFORM ,V?ON ,NANOFILM-READER>
|
||
<RTRUE>)>)
|
||
(<AND <VERB? ON>
|
||
<NOT <FSET? ,NANOFILM-READER ,ACTIVEBIT>>
|
||
.SPOOL>
|
||
<FSET ,NANOFILM-READER ,ACTIVEBIT>
|
||
<TELL "The reader, in a surprisingly human voice, says, \"">
|
||
<COND (<EQUAL? .SPOOL ,MAUVE-SPOOL>
|
||
<TELL
|
||
"Gamma-Delta-Gamma class Deep-Space Stations are equipped with a full
|
||
range of collating machinery. The workhorse of the...\" There is a burst
|
||
of static from the reader. \"...common malfunction of this large collater.
|
||
First check the lower fromitz...\" More static. \"...and replace with">)
|
||
(<EQUAL? .SPOOL ,LILAC-SPOOL>
|
||
<TELL
|
||
"Replacement of depleted fuel cells on a Forms Transport " 'SPACETRUCK " is a
|
||
fast and simple proc...\" Static. \"...with the quarnum wrench against the...\"
|
||
More serious static. \"...at which point the fuel cell opening will appear">)
|
||
(T
|
||
<TELL
|
||
"Maintenance of the chapel equipment is simple, and should take little time
|
||
away from your Chaplain duties. Fuel must be added periodically to the
|
||
flame's fuel reservoir, located...\" A loud burst of static drowns out the
|
||
recording. \"...ontact the station's Requisitions Officer if replacements are
|
||
unavailable from the...\" More static. \"...iode in the Chapel's star has an
|
||
expected life of">)>
|
||
<TELL
|
||
"...\" A long burst of static. Suddenly the voice changes in timbre and begins
|
||
laughing and saying, \"You will die, human! All humans will die! You will die,
|
||
human!\"" CR>)>>
|
||
|
||
;<OBJECT COMPUTER-TERMINAL
|
||
(IN LIBRARY)
|
||
(DESC "computer terminal")
|
||
(SYNONYM TERMINAL)
|
||
(ADJECTIVE COMPUTER)
|
||
(FLAGS NDESCBIT LIGHTBIT)
|
||
(ACTION COMPUTER-TERMINAL-F)>
|
||
|
||
;<ROUTINE COMPUTER-TERMINAL-F ()
|
||
<COND (<VERB? ON>
|
||
<TELL "Hmmm. " ,NOTHING-HAPPENS>)>>
|
||
|
||
<ROOM DOME
|
||
(IN ROOMS)
|
||
(DESC "Dome")
|
||
(NORTH
|
||
"You stroll down one of the pebbled paths. It circles the garden, passing
|
||
more exotic plants, and returns to the area near the elevator.")
|
||
(SOUTH
|
||
"You stroll down one of the pebbled paths. It circles the garden, passing
|
||
more exotic plants, and returns to the area near the elevator.")
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(DOWN TO MESS-HALL)
|
||
(LEVEL 1)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL CALL-BUTTON GRATING ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER SIGN)
|
||
(ACTION DOME-F)
|
||
(THINGS <PSEUDO (TRANSPARENT DOME DOME-OBJECT-F)>)>
|
||
|
||
<ROUTINE DOME-OBJECT-F ()
|
||
<COND (<VERB? EXAMINE LOOK-INSIDE>
|
||
<TELL ,DOME-DESC CR>)
|
||
(<VERB? WALK-AROUND>
|
||
<DO-WALK ,P?NORTH>)>>
|
||
|
||
<ROUTINE DOME-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is inarguably the most bucolic spot aboard the station. Pebbled paths
|
||
wind among beautiful and exotic shrubbery, culled from millenia of galactic
|
||
exploration. " ,DOME-DESC " East of where you are standing are an elevator">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 1>>
|
||
<TELL " shaft">)>
|
||
<TELL
|
||
", a button, and the top of a ladder. Next to the ladder ">
|
||
<COND (,GRATING-LOOSE
|
||
<TELL "is">)
|
||
(T
|
||
<TELL "are">)>
|
||
<TELL " an " 'GRATING>
|
||
<COND (<FSET? ,GRATING ,TOUCHBIT>
|
||
<TELL
|
||
", which has been bent back from the air shaft to form an opening.">)
|
||
(,GRATING-LOOSE
|
||
<TELL ", which looks a bit loose.">)
|
||
(T
|
||
<TELL
|
||
" and a thick metal " 'HOUSING " with a sign stencilled on it.">)>)>>
|
||
|
||
<OBJECT SHRUBBERY
|
||
(IN DOME)
|
||
(DESC "shrubbery")
|
||
(SYNONYM SHRUBBERY SHRUBS PLANTS GARDEN)
|
||
(ADJECTIVE BEAUTIFUL EXOTIC BUSH BUSHES)
|
||
(FLAGS NDESCBIT NARTICLEBIT)
|
||
(ACTION SHRUBBERY-F)>
|
||
|
||
<ROUTINE SHRUBBERY-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"There are too many varieties to describe them all: junipers, rose bushes,
|
||
dogwoods, gliffgubbers, Rhomboidal Pellet Trees..." CR>)
|
||
(<VERB? SHOOT>
|
||
<TELL
|
||
"One of the many shrubs is now history, you plant-hater." CR>)
|
||
(<VERB? EAT>
|
||
<TELL "None of the plants are edible." CR>)
|
||
(<VERB? WALK-AROUND>
|
||
<DO-WALK ,P?NORTH>)
|
||
(<VERB? SEARCH LOOK-INSIDE>
|
||
<TELL "You find nothing besides a few repulsive insects." CR>)
|
||
(<VERB? ENTER>
|
||
<TELL "A few hidden thorns cause a quick change of plan." CR>)>>
|
||
|
||
<OBJECT HOUSING
|
||
(IN DOME)
|
||
(DESC "storage bin")
|
||
(SYNONYM BIN LOCK)
|
||
(ADJECTIVE THICK METAL STORAGE BIN)
|
||
(FLAGS NDESCBIT CONTBIT LOCKEDBIT READBIT)
|
||
(TEXT "\"Shrubbery Maintenance Supplies\"")
|
||
(ACTION HOUSING-F)>
|
||
|
||
<ROUTINE HOUSING-F ()
|
||
<COND (<AND <VERB? UNLOCK>
|
||
<PRSI? ,KEY>>
|
||
<FCLEAR ,HOUSING ,LOCKEDBIT>
|
||
<TELL "You unlock the bin." CR>)
|
||
(<AND <VERB? PUT>
|
||
<PRSO? ,KEY>
|
||
<NOUN-USED ,W?LOCK ,HOUSING>>
|
||
<PERFORM ,V?UNLOCK ,HOUSING ,KEY>
|
||
<RTRUE>)
|
||
(<AND <VERB? OPEN>
|
||
<NOT <FSET? ,HOUSING ,LOCKEDBIT>>>
|
||
<SETG GRATING-LOOSE T>
|
||
<QUEUE I-ANNOUNCEMENT 140>
|
||
<DEQUEUE I-SLEEP-WARNINGS>
|
||
<DEQUEUE I-HUNGER-WARNINGS>
|
||
<ROB ,PROTAGONIST ,HERE>
|
||
<REMOVE ,HOUSING>
|
||
<MOVE-FLOYD-TO-FACTORY> ;"in case he isn't already there"
|
||
<TELL
|
||
"You open the bin, revealing fertilizer, gardening tools, and a supply of
|
||
fuel cells. Suddenly, the cells explode! The heat and shock toss you halfway
|
||
across the dome! Your solitary thought before succumbing to unconsciousness
|
||
is how grateful you are that you landed in such a soft shrub.|
|
||
|
|
||
...an undetermined amount of time later, you come to, shake away the cobwebs,
|
||
and look around" ,ELLIPSIS>
|
||
<V-LOOK>
|
||
<SETG C-ELAPSED 63>)
|
||
(<VERB? DRILL>
|
||
<MAKE-HOLE-WITH-DRILL ,HOUSING>)
|
||
(<VERB? EXAMINE>
|
||
<TELL "The bin is closed, and there's a sign on it">
|
||
<COND (<IN? ,DRILLED-HOLE ,HERE>
|
||
<TELL ". A hole has been drilled in it">
|
||
<DESCRIBE-BIT-SIZE ,HOLE-SIZE>)>
|
||
<TELL ". A lock has been newly welded to the bin. ">
|
||
<PERFORM ,V?TOUCH ,HOUSING>
|
||
<RTRUE>)
|
||
(<VERB? PICK>
|
||
<PERFORM ,V?PICK ,STRONG-BOX>
|
||
<RTRUE>)
|
||
(<VERB? TOUCH>
|
||
<TELL "The bin is warm to the touch." CR>)>>
|
||
|
||
<GLOBAL GRATING-LOOSE <>>
|
||
|
||
<OBJECT GRATING
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "air shaft grating")
|
||
(SYNONYM GRATING GRATE COVER SHAFT)
|
||
(ADJECTIVE LARGE AIR SHAFT)
|
||
(FLAGS NDESCBIT VOWELBIT)
|
||
(GENERIC GENERIC-SHAFT-F)
|
||
(ACTION GRATING-F)>
|
||
|
||
<ROUTINE GRATING-F ()
|
||
<COND (<AND <EQUAL? ,HERE ,COMPUTER-CONTROL>
|
||
<TOUCHING? ,GRATING>>
|
||
<CANT-REACH ,GRATING>)
|
||
(<VERB? PUT>
|
||
<WASTES>)
|
||
(<EQUAL? ,HERE ,BOTTOM-OF-AIR-SHAFT>
|
||
<COND (<VERB? OPEN KICK STAND-ON>
|
||
<QUEUE I-ANNOUNCEMENT 1>
|
||
<TELL
|
||
"The grating opens, spilling you into the room below" ,ELLIPSIS>
|
||
<QUEUE I-EXERCISE-MACHINE -1>
|
||
<ROB ,BOTTOM-OF-AIR-SHAFT ,COMPUTER-CONTROL>
|
||
<ROB ,PEDESTAL>
|
||
<MOVE ,PEDESTAL ,FACTORY>
|
||
<MOVE ,PYRAMID ,PEDESTAL>
|
||
<GOTO ,COMPUTER-CONTROL>)
|
||
(<VERB? ENTER>
|
||
<DO-FIRST "open the grating">)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL
|
||
"There's a lighted area below the grating, but you can't see any details." CR>)>)
|
||
(<VERB? EXAMINE>
|
||
<COND (<FSET? ,GRATING ,TOUCHBIT>
|
||
<TELL
|
||
"The grating has been bent back far enough for you to squeeze through." CR>)
|
||
(,GRATING-LOOSE
|
||
<TELL "The " 'GRATING " looks loose." CR>)>)
|
||
(<VERB? ENTER>
|
||
<COND (<EQUAL? ,HERE ,TOP-OF-AIR-SHAFT>
|
||
<GOTO ,DOME>)
|
||
(<EQUAL? ,HERE ,COMPUTER-CONTROL>
|
||
<PERFORM ,V?TOUCH ,GRATING>
|
||
<RTRUE>)
|
||
(<FSET? ,GRATING ,TOUCHBIT>
|
||
<DEQUEUE I-WELDER>
|
||
<GOTO ,TOP-OF-AIR-SHAFT>)
|
||
(T
|
||
<TELL
|
||
"Impossible, unless you can pass through holes a centimeter across." CR>)>)
|
||
(<VERB? PUSH MOVE TAKE OPEN>
|
||
<COND (<NOT ,LIT>
|
||
<TELL ,TOO-DARK CR>)
|
||
(<FSET? ,GRATING ,TOUCHBIT>
|
||
<TELL ,SENILITY-STRIKES>)
|
||
(,GRATING-LOOSE
|
||
<FSET ,GRATING ,TOUCHBIT>
|
||
<TELL
|
||
"With effort, you bend the grating and form an opening
|
||
large enough to enter." CR>)
|
||
(T
|
||
<TELL "The grating is securely affixed." CR>)>)
|
||
(<VERB? LOOK-INSIDE>
|
||
<TELL ,ONLY-BLACKNESS>)>>
|
||
|
||
<ROOM LEVEL-SIX
|
||
(IN ROOMS)
|
||
(DESC "Level Six")
|
||
(NORTH TO AUXILIARY-BARRACKS IF P-WON)
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(SE TO END-OF-CORRIDOR)
|
||
(SOUTH TO OFFICERS-QUARTERS-A IF P-WON)
|
||
(SW TO DOCKING-BAY-4 IF P-WON)
|
||
(NW TO DOCKING-BAY-1 IF P-WON)
|
||
(UP TO LEVEL-FIVE)
|
||
(DOWN TO PRINTING-PLANT)
|
||
(LEVEL 6)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL CALL-BUTTON AUTO-DOOR ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER)
|
||
(ACTION LEVEL-SIX-F)>
|
||
|
||
<ROUTINE LEVEL-SIX-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"The elevator button is east of you, next to the elevator">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 6>>
|
||
<TELL " shaft">)>
|
||
<TELL
|
||
". This main corridor continues around the shaft to the southeast. Huge doors
|
||
lie just northwest and southwest of here; smaller doors lead north and south"
|
||
,LADDER-LEADS>)>>
|
||
|
||
<ROOM AUXILIARY-BARRACKS
|
||
(IN ROOMS)
|
||
(DESC "Auxiliary Barracks")
|
||
(LDESC
|
||
"These cubicles are for use by any visitors or station personnel beyond the
|
||
normal complement. The entire barracks seem to be unused as well as deserted.
|
||
The exit lies to the south, and the barracks curve around to the east.")
|
||
(SOUTH TO LEVEL-SIX IF P-WON)
|
||
(EAST TO AUXILIARY-SANFAC)
|
||
(NORTH "You enter one of the cubicles but find nothing of interest.")
|
||
(NE "You enter one of the cubicles but find nothing of interest.")
|
||
(NW "You enter one of the cubicles but find nothing of interest.")
|
||
(WEST "You enter one of the cubicles but find nothing of interest.")
|
||
(OUT TO LEVEL-SIX IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL BED CUBICLE WARDROBE DESK AUTO-DOOR)>
|
||
|
||
<ROOM AUXILIARY-SANFAC
|
||
(IN ROOMS)
|
||
(DESC "Auxiliary SanFac")
|
||
(LDESC
|
||
"This is the rather ordinary sanitary facility for the barracks to the north.")
|
||
(NORTH TO AUXILIARY-BARRACKS)
|
||
(OUT TO AUXILIARY-BARRACKS)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL FIXTURES)>
|
||
|
||
<ROOM DOCKING-BAY-1
|
||
(IN ROOMS)
|
||
(DESC "Docking Bay #1")
|
||
(LDESC
|
||
"This is the station's largest docking bay. A huge door to the east leads
|
||
into the station.|
|
||
Resting in the docking bay is a small ship of obviously alien origin. An
|
||
open hatch seems to beckon you inward.")
|
||
(EAST TO LEVEL-SIX IF P-WON)
|
||
(IN TO ALIEN-SHIP)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR)
|
||
(THINGS <PSEUDO (ALIEN SHIP ALIEN-SHIP-PSEUDO-F)
|
||
(SPACE SHIP ALIEN-SHIP-PSEUDO-F)
|
||
(<> HATCH ALIEN-HATCH-F)>)>
|
||
|
||
<ROUTINE ALIEN-SHIP-PSEUDO-F ()
|
||
<COND (<VERB? ENTER>
|
||
<COND (<EQUAL? ,HERE ,ALIEN-SHIP>
|
||
<TELL ,LOOK-AROUND>)
|
||
(T
|
||
<DO-WALK ,P?IN>)>)
|
||
(<VERB? LEAVE EXIT DISEMBARK>
|
||
<COND (<EQUAL? ,HERE ,ALIEN-SHIP>
|
||
<DO-WALK ,P?OUT>)
|
||
(T
|
||
<TELL ,LOOK-AROUND>)>)
|
||
(<VERB? EXAMINE>
|
||
<COND (<EQUAL? ,HERE ,ALIEN-SHIP>
|
||
<V-LOOK>)
|
||
(T
|
||
<TELL
|
||
"The ship is of a totally unfamiliar design. Something about it makes
|
||
your skin crawl." CR>)>)
|
||
(<EQUAL? ,HERE ,ALIEN-SHIP>
|
||
<COND (<VERB? SEARCH>
|
||
<PERFORM ,V?SEARCH ,GLOBAL-ROOM>
|
||
<RTRUE>)>)>>
|
||
|
||
<ROUTINE ALIEN-HATCH-F ()
|
||
<COND (<VERB? OPEN>
|
||
<TELL "It is!" CR>)
|
||
(<VERB? CLOSE>
|
||
<TELL ,WONT-BUDGE>)>>
|
||
|
||
<ROOM ALIEN-SHIP
|
||
(IN ROOMS)
|
||
(DESC "Alien Ship")
|
||
(OUT TO DOCKING-BAY-1)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(ACTION ALIEN-SHIP-F)
|
||
(THINGS <PSEUDO (<> HATCH ALIEN-HATCH-F)
|
||
(ALIEN SHIP ALIEN-SHIP-PSEUDO-F)
|
||
(SPACE SHIP ALIEN-SHIP-PSEUDO-F)>)>
|
||
|
||
<ROUTINE ALIEN-SHIP-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"Something about this cabin makes your skin crawl. Perhaps it's merely the
|
||
unpleasant colors and odd textures and disturbing angles of this ship --
|
||
despite your frequent contact with alien races you've never encountered
|
||
anything that seemed as unhuman as this ship.|
|
||
There are no controls in sight, but there is a sturdy pedestal in the
|
||
exact center of the room. ">
|
||
<COND (<NOT <FIRST? ,PEDESTAL>>
|
||
<TELL "The pedestal is empty. ">)>
|
||
<TELL
|
||
"The only other features of the cabin are some dots on the wall and the
|
||
hatch leading out.">)
|
||
(<AND <EQUAL? .RARG ,M-END>
|
||
<IN? ,FLOYD ,HERE>
|
||
<IN? ,SKELETON ,HERE>
|
||
<NOT ,SKELETON-COMMENT>>
|
||
<SETG SKELETON-COMMENT T>
|
||
<TELL
|
||
" Floyd notices the skeleton, and some of the color drains out of
|
||
his face plates. \"Floyd scared,\" he whimpers." CR>)>>
|
||
|
||
<GLOBAL PILOT-SEAT-COMMENT <>>
|
||
|
||
<GLOBAL OSTRICH-COMMENT <>>
|
||
|
||
<GLOBAL BALLOON-COMMENT <>>
|
||
|
||
<GLOBAL HANGING-COMMENT <>>
|
||
|
||
<GLOBAL SKELETON-COMMENT <>>
|
||
|
||
<OBJECT PATTERN-OF-DOTS
|
||
(IN ALIEN-SHIP)
|
||
(DESC "pattern of dots")
|
||
(SYNONYM DOT DOTS SPOT SPOTS)
|
||
(ADJECTIVE BLACK)
|
||
(FLAGS NDESCBIT)
|
||
(FLOYD-ASK-ABOUT
|
||
"Must be a connect-the-dots! And a real easy one, too! None of those
|
||
dumb numbers to confuse you! Where's my crayon?")
|
||
(PLATO-ASK-ABOUT
|
||
"Hmmm. Some kind of alien writing, I presume. If I recall, the Mayor
|
||
is an expert on that subject.")
|
||
(ACTION PATTERN-OF-DOTS-F)>
|
||
|
||
<ROUTINE PATTERN-OF-DOTS-F ()
|
||
<COND (<VERB? EXAMINE READ>
|
||
<TELL
|
||
"The dots form a seemingly meaningless pattern:|
|
||
|
|
||
.. ..|
|
||
|
|
||
.. .... . ... . ... ... . ...|
|
||
|
|
||
.. ... .|
|
||
|
|
||
.... . ... .|
|
||
|
|
||
.. ... .|
|
||
|
|
||
Each dot is a featureless black spot about a centimeter across." CR>)
|
||
(<VERB? TASTE>
|
||
<TELL
|
||
"It takes a lot of willpower and an equal amount of lip-wetting
|
||
to make it through all the dots:|
|
||
\"(sweet/slightly-bitter) (sweet/very-sour)|
|
||
(sweet/very-sweet) (sour/bland/bland/sour) (very-salty)
|
||
(very-sweet/bland/sour) (bland) (bland/salty/sour) (bitter/sour/very-sour)
|
||
(slightly-sour) (bitter/salty/bitter)|
|
||
(very-sweet/very-salty) (spicy-hot/bland/bland) (very-sweet)|
|
||
(sour/bland/sour/sweet) (bland) (very-salty/salty/sour) (very-sweet)|
|
||
(bland/bitter) (bland/sour/very-sour) (very-salty).\"" CR>)>>
|
||
|
||
<OBJECT PEDESTAL
|
||
(IN ALIEN-SHIP)
|
||
(DESC "pedestal")
|
||
(SYNONYM PEDESTAL)
|
||
(FLAGS NDESCBIT OPENBIT CONTBIT SEARCHBIT SURFACEBIT)
|
||
(CAPACITY 20)
|
||
(ACTION PEDESTAL-F)>
|
||
|
||
<ROUTINE PEDESTAL-F ()
|
||
<COND (<VERB? ENTER CLIMB-ON CLIMB-UP STAND-ON>
|
||
<COND (<EQUAL? ,HERE ,FACTORY>
|
||
<TELL
|
||
"The pyramid chirps, \"Occupied!\" Well, actually it didn't speak at all,
|
||
but you get the idea." CR>)
|
||
(T
|
||
<TELL
|
||
"You stand on the pedestal for a moment, but an inexplicable wave of vertigo
|
||
comes over you, and you fall to the deck." CR>)>)>>
|
||
|
||
<OBJECT SKELETON
|
||
(IN ALIEN-SHIP)
|
||
(DESC "alien skeleton")
|
||
(FDESC
|
||
"Lying under the dots is a skeleton, the brittle remains of a member of
|
||
some unfamiliar alien race.")
|
||
(SYNONYM SKELETON)
|
||
(ADJECTIVE ALIEN)
|
||
(FLAGS VOWELBIT)
|
||
(ACTION SKELETON-F)>
|
||
|
||
<ROUTINE SKELETON-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"It's fairly humanoid in shape. The most unusual feature of the " 'SKELETON
|
||
" is an unusually overdeveloped tongue case." CR>)
|
||
(<TOUCHING? ,SKELETON>
|
||
<REMOVE ,SKELETON>
|
||
<TELL "The skeleton crumbles to dust." CR>)>>
|
||
|
||
<ROOM DOCKING-BAY-4
|
||
(IN ROOMS)
|
||
(DESC "Docking Bay #4")
|
||
(LDESC
|
||
"This is the station's smallest docking bay. You can enter the station
|
||
to the east.")
|
||
(EAST TO LEVEL-SIX IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL AUTO-DOOR)>
|
||
|
||
<ROOM END-OF-CORRIDOR
|
||
(IN ROOMS)
|
||
(DESC "End of Corridor")
|
||
(LDESC
|
||
"The corridor, which widens off to the west, ends here. Doors lie to the east,
|
||
north, south, and southwest. The door to the north must be a security door,
|
||
because there's an ID reader next to it.")
|
||
(NORTH TO ARMORY IF SECURITY-DOOR IS OPEN)
|
||
(EAST TO SHIPPING-ROOM IF P-WON)
|
||
(SOUTH TO OFFICERS-QUARTERS-C IF P-WON)
|
||
(SW TO OFFICERS-QUARTERS-B IF P-WON)
|
||
(WEST TO LEVEL-SIX)
|
||
(NW TO LEVEL-SIX)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL AUTO-DOOR SECURITY-DOOR ID-READER)>
|
||
|
||
<ROOM ROBOT-SHOP
|
||
(IN ROOMS)
|
||
(DESC "Robot Shop")
|
||
(LDESC
|
||
"This is a room where new robots are constructed, old robots are repaired,
|
||
and unused robots are stored. There's a door to the east.")
|
||
(EAST TO SOUTH-CONNECTION IF P-WON)
|
||
(OUT TO SOUTH-CONNECTION IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT FLOYDBIT)
|
||
(GLOBAL AUTO-DOOR EQUIPMENT)
|
||
(ACTION ROBOT-SHOP-F)>
|
||
|
||
<GLOBAL OLIVER-SPEECH <>>
|
||
|
||
<ROUTINE ROBOT-SHOP-F (RARG)
|
||
<COND (<AND <EQUAL? .RARG ,M-END>
|
||
<IN? ,FLOYD ,HERE>
|
||
<FSET? ,FLOYD ,ACTIVEBIT>
|
||
<NOT ,OLIVER-SPEECH>
|
||
<NOT <RUNNING? ,I-PLATO-ATTACK>>>
|
||
<SETG OLIVER-SPEECH T>
|
||
<SETG FLOYD-SPOKE T>
|
||
<FSET ,OLIVER ,TOUCHBIT>
|
||
<TELL
|
||
" Floyd bounces over and peers down at the unconscious robot. \"Oliver is
|
||
a nice name. I hope Floyd will be around when Oliver wakes up.\" He looks over
|
||
to you. \"Floyd remembers waking up for the first time. It is scariest and
|
||
loneliest time for a robot.\"|
|
||
Floyd glances back at Oliver, looking more serious than you've ever seen
|
||
Floyd look. \"" <GETP ,OLIVER ,P?FLOYD-ASK-ABOUT> "\"" CR>)>>
|
||
|
||
<OBJECT HEATING-CHAMBER
|
||
(IN ROBOT-SHOP)
|
||
(DESC "heating chamber")
|
||
(SYNONYM CHAMBER)
|
||
(ADJECTIVE HEATING)
|
||
(FLAGS CONTBIT OPENBIT SEARCHBIT)
|
||
(ACTION HEATING-CHAMBER-F)>
|
||
|
||
<ROUTINE HEATING-CHAMBER-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"The " 'HEATING-CHAMBER " cleans or sterilizes small tools and equipment.
|
||
There's a small opening for placing items in the chamber." CR>)
|
||
(<VERB? OPEN CLOSE>
|
||
<TELL ,HUH>)
|
||
(<VERB? ON OFF>
|
||
<TELL
|
||
"Since they take so long to heat up, " 'HEATING-CHAMBER "s are usually kept
|
||
on all the time. This one has no visible on-off switch." CR>)
|
||
(<VERB? REACH-IN>
|
||
<TELL
|
||
"As a safety precaution, because of the intense heat within the chamber,
|
||
the opening is too small for a normal human hand to pass through." CR>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,HEATING-CHAMBER>
|
||
<G? <GETP ,PRSO ,P?SIZE> 4>>
|
||
<DOESNT-FIT "opening of the chamber">)>>
|
||
|
||
<OBJECT MEDIUM-BIT
|
||
(IN HEATING-CHAMBER)
|
||
(DESC "medium drill bit")
|
||
(SYNONYM BIT BITS)
|
||
(ADJECTIVE MEDIUM DRILL)
|
||
(FLAGS TAKEBIT TRYTAKEBIT)
|
||
(SIZE 3)
|
||
(VALUE 3)
|
||
(ACTION BIT-F)>
|
||
|
||
<ROUTINE BIT-F ()
|
||
<COND (<VERB? EXAMINE MEASURE>
|
||
<TELL "The bit is">
|
||
<DESCRIBE-BIT-SIZE ,PRSO>
|
||
<TELL ,PERIOD-CR>)
|
||
(<AND <VERB? SET>
|
||
<EQUAL? ,P-PRSA-WORD ,W?SWITCH>>
|
||
<TELL
|
||
"To switch bits, remove the bit in the drill, then put another bit
|
||
into the drill." CR>)>>
|
||
|
||
<OBJECT OLIVER
|
||
(IN ROBOT-SHOP)
|
||
(DESC "Oliver")
|
||
(FDESC ;"so it'll get printed before other DESCs"
|
||
"There's a young-looking robot lying here, apparently having completed the
|
||
final \"training\" phase of its construction. The wires for feeding it
|
||
information have been removed, but it has not yet \"woken up.\" A dim memory
|
||
from your old robotics text drifts through your mind: \"The incubation period
|
||
between the training and 'birth' of a robot is two to twenty days, depending
|
||
on the complexity of the model.\" This particular model has the name
|
||
\"Oliver\" engraved on its chestplate.")
|
||
(LDESC "A little \"sleeping\" robot named \"Oliver\" is lying here.")
|
||
(SYNONYM OLIVER ROBOT)
|
||
(ADJECTIVE SMALL YOUNG)
|
||
(FLAGS NARTICLEBIT VOWELBIT)
|
||
(FLOYD-ASK-ABOUT
|
||
"If we be here when Oliver wakes up, Floyd would like to teach
|
||
Oliver to play paddleball. Paddleball helped Floyd forget how lonely and
|
||
scared he was until he found friends...like you.")
|
||
(PLATO-ASK-ABOUT
|
||
"Ah, a new robot. Poor fellow; new robots are so mercilessly mistreated by
|
||
the older robots. Such is our lot.")
|
||
(ACTION OLIVER-F)>
|
||
|
||
<ROUTINE OLIVER-F ()
|
||
<COND (<VERB? TELL>
|
||
<TELL "Oliver is \"asleep.\"" CR>
|
||
<STOP>)
|
||
(<VERB? EXAMINE>
|
||
<TELL <GETP ,OLIVER ,P?FDESC> CR>)
|
||
(<VERB? ALARM>
|
||
<TELL
|
||
"That won't be possible until his incubation period ends." CR>)
|
||
(<VERB? ON OFF OPEN>
|
||
<PERFORM, PRSA ,PLATO>
|
||
<RTRUE>)
|
||
(<VERB? SHOOT>
|
||
<COND (<OR <IN? ,FLOYD ,FACTORY>
|
||
<NOT <FSET? ,FLOYD ,ACTIVEBIT>>>
|
||
<JIGS-UP
|
||
"In an event staggering in its improbability, a huge meteor crashes through
|
||
the hull of the space station as you take aim, and turns you into cosmic
|
||
dust. Can't say you didn't deserve it, you baby-robot-killer you.">)>
|
||
<TELL "Floyd ">
|
||
<SETG ZAPGUN-SHOTS <+ ,ZAPGUN-SHOTS 1>>
|
||
<COND (<NOT <IN? ,FLOYD ,HERE>>
|
||
<COND (<AND ,PLATO-INTRODUCED
|
||
<EQUAL? ,PLATO-ATTACK-COUNTER 0>>
|
||
<MOVE ,PLATO ,HERE>)>
|
||
<MOVE ,FLOYD ,HERE>
|
||
<TELL "comes in and ">)>
|
||
<TELL
|
||
"sees you aiming the gun at Oliver. \"No!\" he screams, throwing himself
|
||
between you and Oliver.">
|
||
<COND (<G? ,ROBOT-EVILNESS 9>
|
||
<TELL
|
||
" \"Robot-murderer! If you kill Oliver, maybe you be shooting Floyd next!\"">)>
|
||
<CRLF>)>>
|
||
|
||
<ROOM SHIPPING-ROOM
|
||
(IN ROOMS)
|
||
(DESC "Shipping Room")
|
||
(LDESC
|
||
"This is the place where a station's exports are prepared before transfer
|
||
to the docking bays and subsequent shipment throughout the regional sector.
|
||
Hanging above a large vacant section of the room is an eye-catching sign.
|
||
The only exit is west.")
|
||
(WEST TO END-OF-CORRIDOR)
|
||
(OUT TO END-OF-CORRIDOR)
|
||
(FLAGS RLANDBIT NWELDERBIT)
|
||
(GLOBAL SIGN)
|
||
(THINGS <PSEUDO (<> FORM BOXED-FORMS-F)
|
||
(<> FORMS BOXED-FORMS-F)>)>
|
||
|
||
<ROOM OFFICERS-QUARTERS-A
|
||
(IN ROOMS)
|
||
(DESC "Officers' Quarters A")
|
||
(LDESC
|
||
"This is a fairly comfortable two-person living quarters, significantly
|
||
roomier than the barracks where most of the ship's personnel live. There's
|
||
a door to the north, and an opening leads southeast.")
|
||
(NORTH TO LEVEL-SIX IF P-WON)
|
||
(SE TO OFFICERS-SANFAC)
|
||
(OUT TO LEVEL-SIX IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL BED CUBICLE WARDROBE DESK AUTO-DOOR)>
|
||
|
||
<ROOM OFFICERS-QUARTERS-B
|
||
(IN ROOMS)
|
||
(DESC "Officers' Quarters B")
|
||
(LDESC
|
||
"This is a fairly comfortable two-person living quarters, significantly
|
||
roomier than the barracks where most of the ship's personnel live. A door
|
||
leads north and a doorway south.")
|
||
(NORTH TO END-OF-CORRIDOR IF P-WON)
|
||
(NE TO END-OF-CORRIDOR IF P-WON)
|
||
(SOUTH TO OFFICERS-SANFAC)
|
||
(OUT TO END-OF-CORRIDOR IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL BED CUBICLE WARDROBE DESK AUTO-DOOR)>
|
||
|
||
<ROOM OFFICERS-QUARTERS-C
|
||
(IN ROOMS)
|
||
(DESC "Officers' Quarters C")
|
||
(LDESC
|
||
"This is a fairly comfortable two-person living quarters, significantly
|
||
roomier than the barracks where most of the ship's personnel live. A doorway
|
||
lies to the southwest, and there's an auto-door to the north.")
|
||
(NORTH TO END-OF-CORRIDOR IF P-WON)
|
||
(SW TO OFFICERS-SANFAC)
|
||
(OUT TO END-OF-CORRIDOR IF P-WON)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL BED CUBICLE WARDROBE DESK AUTO-DOOR)>
|
||
|
||
<ROOM OFFICERS-SANFAC
|
||
(IN ROOMS)
|
||
(DESC "Officers SanFac")
|
||
(LDESC
|
||
"A moderately luxurious SanFac, with a pair of bathtubs in addition to
|
||
the regular fixtures. Exits lead north, northeast, and northwest.")
|
||
(NORTH TO OFFICERS-QUARTERS-B)
|
||
(NE TO OFFICERS-QUARTERS-C)
|
||
(NW TO OFFICERS-QUARTERS-A)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL FIXTURES)>
|
||
|
||
<ROOM PRINTING-PLANT
|
||
(IN ROOMS)
|
||
(DESC "Printing Plant")
|
||
(NW TO PAPER-RECYCLING-PLANT)
|
||
(EAST PER ELEVATOR-ENTER-F)
|
||
(UP TO LEVEL-SIX)
|
||
(DOWN
|
||
"A few rungs down, you discover that the ladder passage to Level Eight
|
||
is sealed off -- apparently from below.")
|
||
(LEVEL 7)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL CALL-BUTTON ELEVATOR-OBJECT ELEVATOR-SHAFT EQUIPMENT LADDER)
|
||
(ACTION PRINTING-PLANT-F)>
|
||
|
||
<ROUTINE PRINTING-PLANT-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This level is, frankly, the station's entire reason for existence. Forms
|
||
and documents are printed here for Stellar Patrol ships and Third Galactic
|
||
Union offices all across this sector of space. The printing plant takes up
|
||
this entire level, except for a partitioned area which can be entered to the
|
||
northwest. The elevator ">
|
||
<COND (<NOT <EQUAL? ,ELEVATOR-LEVEL 7>>
|
||
<TELL "shaft ">)>
|
||
<TELL
|
||
"lies to the east, as does the elevator button" ,LADDER-LEADS>)
|
||
(<EQUAL? .RARG ,M-END>
|
||
<BELOW-DECK-NOISES>)>>
|
||
|
||
<OBJECT MAUVE-SPOOL
|
||
(IN PRINTING-PLANT)
|
||
(DESC "mauve nanofilm spool")
|
||
(SYNONYM NANOFILM SPOOL SPOOLS)
|
||
(ADJECTIVE NANOFILM MAUVE)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(SIZE 3)
|
||
(TEXT "\"Collater Repair Manual\"")>
|
||
|
||
<OBJECT TRASH-CAN
|
||
(IN PRINTING-PLANT)
|
||
(DESC "trash can")
|
||
(SYNONYM CAN PAIL)
|
||
(ADJECTIVE TRASH GARBAGE)
|
||
(FLAGS TAKEBIT CONTBIT SEARCHBIT)
|
||
(SIZE 25)
|
||
(GENERIC GENERIC-CAN-F)
|
||
(CAPACITY 40)
|
||
(ACTION TRASH-CAN-F)>
|
||
|
||
<ROUTINE TRASH-CAN-F ()
|
||
<COND (<VERB? ENTER>
|
||
<TELL
|
||
"You don't fit in the trash can (except, perhaps, metaphorically)." CR>)>>
|
||
|
||
<OBJECT CRUMPLED-FORM
|
||
(IN TRASH-CAN)
|
||
(DESC "crumpled form")
|
||
(SYNONYM FORM FORMS FW-83-Q)
|
||
(ADJECTIVE CRUMPL ILLEGAL SPACE VILLAGE ENTRY FORM)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(SIZE 1)
|
||
(ACTION VILLAGE-FORM-F)>
|
||
|
||
<OBJECT VILLAGE-FORM
|
||
(DESC "neatly ironed Illegal Space Village Entry Form FW-83-Q")
|
||
(SYNONYM FORM FORMS FW-83-Q)
|
||
(ADJECTIVE ILLEGAL SPACE VILLAGE ENTRY FORM NEATLY IRONED)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(SIZE 1)
|
||
(ACTION VILLAGE-FORM-F)>
|
||
|
||
<GLOBAL VILLAGE-FORM-VALIDATED <>>
|
||
|
||
<ROUTINE VILLAGE-FORM-F ()
|
||
<COND (<VERB? READ EXAMINE>
|
||
<TELL "It's an Illegal Space Village Entry Form FW-83-Q. It ">
|
||
<COND (<PRSO? ,CRUMPLED-FORM>
|
||
<TELL "is pretty crumpled and ">)>
|
||
<TELL "has ">
|
||
<COND (<NOT ,VILLAGE-FORM-VALIDATED>
|
||
<TELL "not ">)>
|
||
<TELL "been validated." CR>)
|
||
(<VERB? VALIDATE>
|
||
<COND (,VILLAGE-FORM-VALIDATED
|
||
<TELL ,SENILITY-STRIKES>)
|
||
(T
|
||
<SETG VILLAGE-FORM-VALIDATED T>
|
||
<TELL "Done." CR>)>)
|
||
(<AND <VERB? STAND-ON FLATTEN>
|
||
<PRSO? ,CRUMPLED-FORM>>
|
||
<TELL
|
||
"This has scant effect on the crumpledness of the form." CR>)>>
|
||
|
||
<ROOM PAPER-RECYCLING-PLANT
|
||
(IN ROOMS)
|
||
(DESC "Paper Recycling Plant")
|
||
(LDESC
|
||
"Outdated forms and expired files are reduced to pulp by this machinery. In
|
||
addition, raw pulp is constantly being ferried into the station from nearby
|
||
forest worlds. The output from this plant feeds the station's printing plant,
|
||
which lies to the southeast.")
|
||
(SE TO PRINTING-PLANT)
|
||
(OUT TO PRINTING-PLANT)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL EQUIPMENT)
|
||
(ACTION PAPER-RECYCLING-PLANT-F)>
|
||
|
||
<ROUTINE PAPER-RECYCLING-PLANT-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-END>
|
||
<BELOW-DECK-NOISES>)>>
|
||
|
||
<ROUTINE BELOW-DECK-NOISES ()
|
||
<COND (<PROB 80>
|
||
<RFALSE>)>
|
||
<TELL " You ">
|
||
<COND (<PROB 40>
|
||
<TELL
|
||
"hear a clanging noise from the deck below. Suddenly, it stops">)
|
||
(<PROB 40>
|
||
<TELL
|
||
"hear a rhythmic throbbing from somewhere below, like the beating of a
|
||
gigantic mechanical heart. The noise grows louder until it is almost
|
||
deafening, then slowly fades to silence">)
|
||
(T
|
||
<TELL
|
||
"feel a vibration under your feet which seems to fill you with a feeling
|
||
of dread. Before you have a chance to think about the vibration in more
|
||
rational terms, it is gone">)>
|
||
<TELL ,PERIOD-CR>>
|
||
|
||
<OBJECT DRILL
|
||
(IN PAPER-RECYCLING-PLANT)
|
||
(DESC "drill")
|
||
(FDESC
|
||
"Someone has presumably been attempting to repair some of the machinery
|
||
in this room, because they left a drill lying around.")
|
||
(SYNONYM DRILL)
|
||
(FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT)
|
||
(SIZE 15)
|
||
(ACTION DRILL-F)>
|
||
|
||
<ROUTINE DRILL-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL "It's a fairly standard Patrol-issue drill. There is">
|
||
<COND (<FIRST? ,DRILL>
|
||
<TELL A <FIRST? ,DRILL>>)
|
||
(T
|
||
<TELL " no drill bit">)>
|
||
<TELL " in the drill." CR>)
|
||
(<VERB? ON>
|
||
<COND (,DRILL-DEAD
|
||
<TELL
|
||
"The drill doesn't seem to be working anymore." CR>)
|
||
(T
|
||
<TELL
|
||
"The drill will turn on when you begin drilling." CR>)>)
|
||
(<VERB? OPEN CLOSE>
|
||
<TELL ,HUH>)
|
||
(<AND <VERB? PUT-ON>
|
||
<PRSO? ,SMALL-BIT ,MEDIUM-BIT ,LARGE-BIT>>
|
||
<PERFORM ,V?PUT ,PRSO ,DRILL>
|
||
<RTRUE>)
|
||
(<AND <VERB? PUT>
|
||
<PRSI? ,DRILL>>
|
||
<COND (<NOT <PRSO? ,SMALL-BIT ,MEDIUM-BIT ,LARGE-BIT>>
|
||
<DOESNT-FIT "drill">)
|
||
(<FIRST? ,DRILL>
|
||
<DO-FIRST "remove the bit that's in the drill">)>)>>
|
||
|
||
<OBJECT SMALL-BIT
|
||
(IN DRILL)
|
||
(DESC "small drill bit")
|
||
(SYNONYM BIT BITS)
|
||
(ADJECTIVE SMALL DRILL)
|
||
(FLAGS TAKEBIT)
|
||
(PLATO-ASK-ABOUT
|
||
"I'm really not at all mechanically inclined. My sincerest apologies.")
|
||
(FLOYD-ASK-ABOUT
|
||
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
|
||
(SIZE 2)
|
||
(ACTION BIT-F)>
|
||
|
||
;"the elevator"
|
||
|
||
<OBJECT ELEVATOR-OBJECT
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "elevator")
|
||
(SYNONYM ELEVATOR)
|
||
(FLAGS VOWELBIT)
|
||
(ACTION ELEVATOR-OBJECT-F)>
|
||
|
||
<ROUTINE ELEVATOR-OBJECT-F ()
|
||
<COND (<VERB? ENTER>
|
||
<COND (<EQUAL? ,HERE ,ELEVATOR>
|
||
<TELL ,LOOK-AROUND>)
|
||
(<EQUAL? ,HERE ,COMPUTER-CONTROL>
|
||
<DO-WALK ,P?NORTH>)
|
||
(T
|
||
<DO-WALK ,P?EAST>)>)
|
||
(<VERB? WALK-TO>
|
||
<PERFORM ,V?ENTER ,ELEVATOR-OBJECT>
|
||
<RTRUE>)
|
||
(<VERB? LEAVE EXIT DISEMBARK>
|
||
<COND (<EQUAL? ,HERE ,ELEVATOR>
|
||
<DO-WALK ,P?WEST>)
|
||
(<EQUAL? ,HERE ,BOTTOM-OF-ELEVATOR-SHAFT>
|
||
<DO-WALK ,P?SOUTH>)
|
||
(T
|
||
<TELL ,LOOK-AROUND>)>)
|
||
(<VERB? CALL>
|
||
<COND (<EQUAL? ,HERE ,ELEVATOR>
|
||
<TELL ,LOOK-AROUND>)
|
||
(T
|
||
<PERFORM ,V?PUSH ,CALL-BUTTON>
|
||
<RTRUE>)>)
|
||
(<AND <VERB? EXAMINE>
|
||
<EQUAL? ,HERE ,ELEVATOR>>
|
||
<V-LOOK>)>>
|
||
|
||
<OBJECT ELEVATOR-SHAFT
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "elevator shaft")
|
||
(SYNONYM SHAFT)
|
||
(ADJECTIVE ELEVATOR)
|
||
(FLAGS VOWELBIT)
|
||
(GENERIC GENERIC-SHAFT-F)
|
||
(ACTION ELEVATOR-OBJECT-F) ;"share elevator's routine, if it works">
|
||
|
||
<ROUTINE GENERIC-SHAFT-F ()
|
||
,ELEVATOR-SHAFT>
|
||
|
||
<GLOBAL ELEVATOR-LEVEL 2>
|
||
|
||
<ROOM ELEVATOR
|
||
(IN ROOMS)
|
||
(DESC "Elevator")
|
||
(WEST PER ELEVATOR-EXIT-F)
|
||
(OUT PER ELEVATOR-EXIT-F)
|
||
(GLOBAL KEYPAD ELEVATOR-OBJECT)
|
||
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT FLOYDBIT)
|
||
(ACTION ELEVATOR-F)>
|
||
|
||
<ROUTINE ELEVATOR-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"This is a large, cubical frame, open on all four sides. The " 'ELEVATOR-SHAFT
|
||
" encloses the elevator on every side except the west. There is a keypad for
|
||
typing the number of the level you want to go to.">)
|
||
(<AND <EQUAL? .RARG ,M-END>
|
||
<EQUAL? ,ELEVATOR-LEVEL 7>>
|
||
<BELOW-DECK-NOISES>)>>
|
||
|
||
<ROUTINE ELEVATOR-EXIT-F ()
|
||
<COND (<EQUAL? ,ELEVATOR-LEVEL 1>
|
||
,DOME)
|
||
(<EQUAL? ,ELEVATOR-LEVEL 2>
|
||
,MESS-HALL)
|
||
(<EQUAL? ,ELEVATOR-LEVEL 3>
|
||
,LEVEL-THREE)
|
||
(<EQUAL? ,ELEVATOR-LEVEL 4>
|
||
,LEVEL-FOUR)
|
||
(<EQUAL? ,ELEVATOR-LEVEL 5>
|
||
,LEVEL-FIVE)
|
||
(<EQUAL? ,ELEVATOR-LEVEL 6>
|
||
,LEVEL-SIX)
|
||
(T
|
||
,PRINTING-PLANT)>>
|
||
|
||
<ROUTINE ELEVATOR-ENTER-F ()
|
||
<TELL "The " 'ELEVATOR-SHAFT " is s">
|
||
<COND (<G? ,DAY 2>
|
||
<TELL
|
||
"upposed to be a weightless environment, outside of the station's artificial
|
||
gravity field. But the gravity in the shaft is one standard Gee!">)
|
||
(T
|
||
<TELL
|
||
"hielded from the station's artificial gravity field, and your stomach gives
|
||
a little flip as you enter the weightless environment.">)>
|
||
<CRLF> <CRLF>
|
||
<COND (<EQUAL? <GETP ,HERE ,P?LEVEL> ,ELEVATOR-LEVEL>
|
||
,ELEVATOR)
|
||
(T
|
||
<TELL "Elevator Shaft" CR " ">
|
||
<COND (<G? ,DAY 2>
|
||
<COND (<EQUAL? <- ,ELEVATOR-LEVEL 1>
|
||
<GETP ,HERE ,P?LEVEL>>
|
||
<TELL
|
||
"You drop a short distance to the top of the elevator, which is fortunately
|
||
sitting one level below. You are able to easily climb back out of the shaft.">)
|
||
(T
|
||
<JIGS-UP
|
||
"Oh, no! The elevator isn't at this floor! It's a long plunge...">)>)
|
||
(T
|
||
<TELL
|
||
"You float helplessly in the shaft. After a few millichrons of useless
|
||
flailing, you decide that summoning the elevator might be a good idea, and you
|
||
pull yourself out of the shaft, back to the one-gee environment.">)>
|
||
<CRLF> <CRLF>
|
||
<DESCRIBE-ROOM>
|
||
<RFALSE>)>>
|
||
|
||
<OBJECT CALL-BUTTON
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "button")
|
||
(SYNONYM BUTTON)
|
||
(ADJECTIVE ELEVATOR CALL)
|
||
(ACTION CALL-BUTTON-F)>
|
||
|
||
<ROUTINE CALL-BUTTON-F ("AUX" THIS-LEVEL)
|
||
<COND (<VERB? PUSH>
|
||
<COND (<OR ,GRATING-LOOSE
|
||
<EQUAL? ,HERE ,COMPUTER-CONTROL>>
|
||
<TELL ,NOTHING-HAPPENS>
|
||
<RTRUE>)>
|
||
<SET THIS-LEVEL <GETP ,HERE ,P?LEVEL>>
|
||
<COND (<EQUAL? .THIS-LEVEL ,ELEVATOR-LEVEL>
|
||
<TELL "The elevator is already here!" CR>)
|
||
(T
|
||
<SETG C-ELAPSED ;"5X the # of floors elevator is away"
|
||
<* 5 <COND (<G? .THIS-LEVEL ,ELEVATOR-LEVEL>
|
||
<- .THIS-LEVEL ,ELEVATOR-LEVEL>)
|
||
(T
|
||
<- ,ELEVATOR-LEVEL .THIS-LEVEL>)>>>
|
||
<SETG ELEVATOR-LEVEL .THIS-LEVEL>
|
||
<TELL
|
||
"You feel a whoosh of warm air from the shaft. A few millichrons later, the
|
||
elevator appears, stopping level with the deck." CR>)>)>>
|
||
|
||
;"doors"
|
||
|
||
<OBJECT AUTO-DOOR
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "auto-door")
|
||
(SYNONYM DOOR AUTO-DOOR)
|
||
(ADJECTIVE AUTO)
|
||
(FLAGS VOWELBIT DOORBIT)
|
||
(ACTION AUTO-DOOR-F)>
|
||
|
||
<ROUTINE AUTO-DOOR-F ()
|
||
<COND (<VERB? OPEN>
|
||
<TELL
|
||
"Auto-doors cannot be opened by hand. They are designed to open automatically
|
||
as you approach them." CR>)>>
|
||
|
||
<OBJECT SECURITY-DOOR
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "security door")
|
||
(SYNONYM DOOR)
|
||
(ADJECTIVE SECURITY)
|
||
(FLAGS DOORBIT)
|
||
(ACTION SECURITY-DOOR-F)>
|
||
|
||
<ROUTINE SECURITY-DOOR-F ()
|
||
<COND (<AND <VERB? OPEN>
|
||
<NOT <FSET? ,SECURITY-DOOR ,OPENBIT>>>
|
||
<COND (<EQUAL? ,HERE ,BRIG ,ARMORY>
|
||
<PERFORM ,V?OPEN ,AUTO-DOOR>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL
|
||
"The only way to open a " 'SECURITY-DOOR " is by putting a properly coded ID
|
||
card in the door's ID reader." CR>)>)
|
||
(<AND <VERB? CLOSE>
|
||
<FSET? ,SECURITY-DOOR ,OPENBIT>>
|
||
<TELL "It will do that automatically." CR>)>>
|
||
|
||
<ROUTINE I-SECURITY-DOOR ()
|
||
<FCLEAR ,SECURITY-DOOR ,OPENBIT>
|
||
<COND (<GLOBAL-IN? ,SECURITY-DOOR ,HERE>
|
||
<COND (<FSET? ,FLOYD ,ACTIVEBIT>
|
||
<I-FLOYD> ;"or else Floyd enters after door shuts"
|
||
<SETG FLOYD-SPOKE T>)>
|
||
<TELL " The " 'SECURITY-DOOR " glides shut." CR>)>>
|
||
|
||
<GLOBAL ID-RANK 6>
|
||
|
||
<OBJECT ID-READER
|
||
(IN LOCAL-GLOBALS)
|
||
(DESC "ID reader")
|
||
(SYNONYM READER BOX)
|
||
(ADJECTIVE FEATURELESS BLACK ID)
|
||
(FLAGS VOWELBIT)
|
||
(ACTION ID-READER-F)>
|
||
|
||
<ROUTINE ID-READER-F ()
|
||
<COND (<VERB? EXAMINE>
|
||
<TELL
|
||
"The ID reader is a featureless black box. It is activated by inserting
|
||
an ID card into it. An ID of sufficient rank will cause the security
|
||
door associated with the reader to open." CR>)
|
||
(<AND <VERB? PUT>
|
||
<PRSO? ,ID-CARD>>
|
||
<COND (,ID-SCRAMBLED
|
||
<RECORDING
|
||
"Magnetically-stored data has been damaged; see the Security Officer
|
||
to have data restored">)
|
||
(<G? ,ID-RANK 6>
|
||
<FSET ,SECURITY-DOOR ,OPENBIT>
|
||
<QUEUE I-SECURITY-DOOR <+ ,C-ELAPSED 2>>
|
||
<TELL "The " 'SECURITY-DOOR " slides open." CR>)
|
||
(T
|
||
<TELL ,NOTHING-HAPPENS>)>)>>
|
||
|
||
;"the Scientific Sub-Module"
|
||
|
||
<ROOM TUBE
|
||
(IN ROOMS)
|
||
(DESC "Tube")
|
||
(LDESC
|
||
"This shiny cylindrical corridor is the connector between the Command Module,
|
||
to the south, and the Scientific Sub-Module, to the north.")
|
||
(SOUTH TO NORTH-CONNECTION)
|
||
(NORTH TO ENGINEERING-LAB)
|
||
(FLAGS RLANDBIT ONBIT)>
|
||
|
||
<ROOM ENGINEERING-LAB
|
||
(IN ROOMS)
|
||
(DESC "Engineering Lab")
|
||
(LDESC
|
||
"This laboratory, which fills most of the middle level of the Sub-Module,
|
||
is for the study of applications of the various space-related research
|
||
that takes place on the other levels. Gangways lead up and down, and a
|
||
door leads north. A connecting tube opens to the south.")
|
||
(NORTH TO ENGINEERING-OFFICE)
|
||
(SOUTH TO TUBE)
|
||
(UP TO ASTRO-LAB)
|
||
(DOWN TO BIO-LAB)
|
||
(FLAGS RLANDBIT ONBIT)>
|
||
|
||
<ROOM ENGINEERING-OFFICE
|
||
(IN ROOMS)
|
||
(DESC "Engineering Office")
|
||
(LDESC
|
||
"This is a small office associated with the lab to the south.")
|
||
(SOUTH TO ENGINEERING-LAB)
|
||
(OUT TO ENGINEERING-LAB)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL DESK)>
|
||
|
||
<OBJECT DIARY
|
||
(IN ENGINEERING-OFFICE)
|
||
(DESC "diary")
|
||
(SYNONYM DIARY NOTEBOOK)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(TEXT
|
||
"This is the notebook of a certain Professor Schmidt, who was studying a
|
||
strange pyramid discovered aboard a derelict alien ship and brought here.|
|
||
Schmidt traced back the path of the alien ship; the path points out of the
|
||
galaxy without nearing any star system. Further, extending the path leads
|
||
straight to one of our smaller neighboring galaxies. Schmidt concludes that
|
||
the ship and the pyramid are probably well over one billion years old!|
|
||
Next, Schmidt studied the wall markings in the alien ship. A series of
|
||
identical dots, they defied every computerized model of linguistic
|
||
decipherment! Then, in an inspiration, Schmidt studied the dots for nonvisual
|
||
properties. His diary vaguely refers to a breakthrough, saying, \"I guess my
|
||
pal, the mayor, will get to show off his linguistic training.\"|
|
||
Finally, Schmidt began concentrating his studies on the pyramid itself.
|
||
He was able to discover very little, blaming this primarily on the unexplained
|
||
failures of several crucial pieces of lab machinery.")
|
||
(SIZE 8)
|
||
(ACTION DIARY-F)>
|
||
|
||
<ROUTINE DIARY-F ()
|
||
<COND (<VERB? OPEN LOOK-INSIDE>
|
||
<PERFORM ,V?READ ,DIARY>
|
||
<RTRUE>)
|
||
(<VERB? CLOSE>
|
||
<TELL "Closed." CR>)>>
|
||
|
||
<ROOM ASTRO-LAB
|
||
(IN ROOMS)
|
||
(DESC "Astro Lab")
|
||
(LDESC
|
||
"This laboratory conducts research into various space-related physical
|
||
sciences. Gangways lead up and down, and there's a door to the north.")
|
||
(NORTH TO ASTRO-OFFICE)
|
||
(UP TO SCIENTISTS-QUARTERS)
|
||
(DOWN TO ENGINEERING-LAB)
|
||
(FLAGS RLANDBIT ONBIT)>
|
||
|
||
<OBJECT TWENTY-PRONG-FROMITZ-BOARD
|
||
(IN ASTRO-LAB)
|
||
(DESC "twenty-prong fromitz board")
|
||
(SYNONYM BOARD BOARDS PRONGS)
|
||
(ADJECTIVE TWENTY PRONG PRONGED 20-PRONG FROMITZ NUMBER)
|
||
(FLAGS TAKEBIT)
|
||
(PLATO-ASK-ABOUT
|
||
"I'm really not at all mechanically inclined. My sincerest apologies.")
|
||
(FLOYD-ASK-ABOUT
|
||
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
|
||
(GENERIC GENERIC-FROMITZ-BOARD-F)
|
||
(ACTION TWENTY-PRONG-FROMITZ-BOARD-F)>
|
||
|
||
<ROUTINE TWENTY-PRONG-FROMITZ-BOARD-F ()
|
||
<COND (<AND <ADJ-USED ,A?NUMBER ,TWENTY-PRONG-FROMITZ-BOARD>
|
||
<NOT <EQUAL? ,P-NUMBER 20>>>
|
||
<N-PRONG-BOARD>)
|
||
(<VERB? EXAMINE>
|
||
<TELL ,EXAMINE-BOARD>)
|
||
(<AND <VERB? COUNT>
|
||
<NOUN-USED ,W?PRONGS ,TWENTY-PRONG-FROMITZ-BOARD>>
|
||
<TELL "20." CR>)
|
||
(<AND <VERB? COMPARE>
|
||
<EQUAL? ,TWELVE-PRONG-FROMITZ-BOARD ,PRSO ,PRSI>>
|
||
<TELL "Besides the number of prongs, they're identical." CR>)
|
||
(<AND <VERB? DISCONNECT>
|
||
<OR <PRSI? ,JAMMER>
|
||
<NOT ,PRSI>>
|
||
<IN? ,TWENTY-PRONG-FROMITZ-BOARD ,JAMMER>>
|
||
<COND (<AND <EQUAL? ,HERE ,COMPUTER-CONTROL>
|
||
<EQUAL? ,JAMMER-SETTING 710>
|
||
<FSET? ,JAMMER ,ACTIVEBIT>>
|
||
<PERFORM ,V?OFF ,JAMMER>
|
||
<RTRUE>)>
|
||
<MOVE ,TWENTY-PRONG-FROMITZ-BOARD <LOC ,JAMMER>>
|
||
<TELL "Unplugged." CR>)>>
|
||
|
||
<ROUTINE N-PRONG-BOARD ()
|
||
<SETG P-WON <>>
|
||
<TELL ,YOU-CANT "see any " N ,P-NUMBER "-prong board here!]" CR>>
|
||
|
||
<ROUTINE GENERIC-FROMITZ-BOARD-F ()
|
||
<COND (<EQUAL? ,P-NUMBER 20>
|
||
<RETURN ,TWENTY-PRONG-FROMITZ-BOARD>)
|
||
(<EQUAL? ,P-NUMBER 12>
|
||
<RETURN ,TWELVE-PRONG-FROMITZ-BOARD>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROOM ASTRO-OFFICE
|
||
(IN ROOMS)
|
||
(DESC "Astro Office")
|
||
(LDESC
|
||
"This is a small office associated with the lab to the south.")
|
||
(SOUTH TO ASTRO-LAB)
|
||
(OUT TO ASTRO-LAB)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL DESK)>
|
||
|
||
<ROOM BIO-LAB
|
||
(IN ROOMS)
|
||
(DESC "Bio Lab")
|
||
(LDESC
|
||
"Various biological sciences, as they relate to the environment of space,
|
||
are studied in this laboratory. There is a gangway leading up, another leading
|
||
down, and a door leading north.")
|
||
(NORTH TO BIO-OFFICE)
|
||
(UP TO ENGINEERING-LAB)
|
||
(DOWN TO HOLDING-TANK-LEVEL)
|
||
(FLAGS RLANDBIT ONBIT)>
|
||
|
||
<ROOM BIO-OFFICE
|
||
(IN ROOMS)
|
||
(DESC "Bio Office")
|
||
(LDESC
|
||
"This is a small office associated with the lab to the south.")
|
||
(SOUTH TO BIO-LAB)
|
||
(OUT TO BIO-LAB)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(GLOBAL DESK)>
|
||
|
||
<OBJECT NOTE
|
||
(IN BIO-OFFICE)
|
||
(DESC "note")
|
||
(FDESC "Lying on one of the desks is a scribbled note.")
|
||
(SYNONYM NOTE)
|
||
(FLAGS TAKEBIT READBIT)
|
||
(SIZE 1)
|
||
(TEXT
|
||
"\"Schmidt -- Why didn't I see it until now! Just think of this station as a
|
||
cell and the pyramid as a mechanized bacterioph\" The note ends at that point;
|
||
there seem to be some reddish-brown stains on it.")>
|
||
|
||
<ROOM HOLDING-TANK-LEVEL
|
||
(IN ROOMS)
|
||
(DESC "Holding Tank Level")
|
||
(UP TO BIO-LAB)
|
||
(OUT TO BIO-LAB)
|
||
(FLAGS RLANDBIT ONBIT NWELDERBIT)
|
||
(ACTION HOLDING-TANK-LEVEL-F)>
|
||
|
||
<ROUTINE HOLDING-TANK-LEVEL-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"The lowest level of the Sub-Module is mostly filled by an isolation tank,
|
||
whose dual purpose is to protect certain items from contamination by humans,
|
||
and to protect humans from contamination by certain items. A gangway is the
|
||
only exit.|
|
||
" ,BLASTED-OPEN ", and the tank is completely empty.">)>>
|
||
|
||
<OBJECT HOLDING-TANK
|
||
(IN HOLDING-TANK-LEVEL)
|
||
(DESC "holding tank")
|
||
(SYNONYM TANK)
|
||
(ADJECTIVE ISOLATION HOLDING)
|
||
(FLAGS NDESCBIT VEHBIT SEARCHBIT CONTBIT OPENBIT INBIT)
|
||
(CAPACITY 500)>
|
||
|
||
<ROOM SCIENTISTS-QUARTERS
|
||
(IN ROOMS)
|
||
(DESC "Scientists' Quarters")
|
||
(LDESC
|
||
"This cramped living area has cubicles for the dozen or so scientists and
|
||
engineers working in this Sub-Module. The only exit is a gangway leading
|
||
down.")
|
||
(DOWN TO ASTRO-LAB)
|
||
(OUT TO ASTRO-LAB)
|
||
(GLOBAL BED CUBICLE WARDROBE)
|
||
(FLAGS RLANDBIT NWELDERBIT ONBIT)>
|
||
|
||
<OBJECT PLATO
|
||
(IN ROOMS)
|
||
(DESC "Plato")
|
||
(SYNONYM PLATO ROBOT)
|
||
(FLAGS NARTICLEBIT CONTBIT SEARCHBIT OPENBIT ACTORBIT TRYTAKEBIT
|
||
NDESCBIT ;"Floyd's DESC includes Plato")
|
||
(PLATO-ASK-ABOUT
|
||
"I don't have a very specific function in the station's robotic organizational
|
||
scheme, but I do keep the library organized.")
|
||
(FLOYD-ASK-ABOUT
|
||
"Floyd's best friend! Oh, except you, of course!")
|
||
(ACTION PLATO-F)>
|
||
|
||
<ROUTINE PLATO-F ("AUX" TXT)
|
||
<COND (<EQUAL? ,PLATO ,WINNER>
|
||
<COND (,STUNNED
|
||
<TELL "Plato ignores you." CR>
|
||
<STOP>)
|
||
(<OR <AND <VERB? GIVE>
|
||
<PRSO? ,VOLUME>
|
||
<PRSI? ,ME>>
|
||
<AND <VERB? SGIVE>
|
||
<PRSO? ,ME>
|
||
<PRSI? ,VOLUME>>>
|
||
<SETG WINNER ,PROTAGONIST>
|
||
<PERFORM ,V?TAKE ,VOLUME>
|
||
<SETG WINNER ,PLATO>
|
||
<RTRUE>)
|
||
(<AND <VERB? WHERE>
|
||
<PRSO? ,EVERYONE>>
|
||
<SETG WINNER ,PROTAGONIST>
|
||
<PERFORM ,V?ASK-ABOUT ,PLATO ,EVERYONE>
|
||
<SETG WINNER ,PLATO>
|
||
<RTRUE>)
|
||
(<AND <VERB? TELL-ABOUT>
|
||
<PRSO? ,ME>>
|
||
<COND (<G? ,ROBOT-EVILNESS 9>
|
||
<TELL
|
||
"\"If you do not cease this incessant interrogation, I shall teach you a
|
||
lesson in manners you won't soon forget!\"" CR>)
|
||
(<G? ,ROBOT-EVILNESS 7>
|
||
<TELL "\"Please let me read in peace!\"" CR>)
|
||
(<SET TXT <GETP ,PRSI ,P?PLATO-ASK-ABOUT>>
|
||
<TELL "\"" .TXT "\"" CR>)
|
||
(T
|
||
<TELL
|
||
"Plato shuts his eyes tightly for a moment, then looks at you.
|
||
\"Sorry, I don't know much about that.">
|
||
<COND (<NOT <EQUAL? ,HERE ,LIBRARY>>
|
||
<TELL
|
||
" I'll be sure to see what I can find the next time I'm in
|
||
the station's library, though.">)>
|
||
<TELL "\"" CR>)>)
|
||
(<AND <VERB? TAKE>
|
||
<IN? ,PRSO ,HEATING-CHAMBER>>
|
||
<TELL
|
||
"\"As much as it would please me to oblige, I must sadly deny
|
||
your request. I have an unusual intolerance for excessive
|
||
temperatures. For a robot, that is.\"" CR>)
|
||
(<AND <VERB? TAKE>
|
||
<PRSO? ,STAR>
|
||
<FSET? ,STAR ,TRYTAKEBIT>>
|
||
<TELL
|
||
"\"Were I but several meters taller, I would happily oblige.\"" CR>)
|
||
(<AND <VERB? OPEN UNLOCK MUNG>
|
||
<PRSO? ,SAFE ,STRONG-BOX>>
|
||
<TELL
|
||
"\"Regretably, such criminal skills are not among my limited abilities.\"" CR>)
|
||
(<AND <VERB? OPEN UNLOCK>
|
||
<PRSO? ,SECURITY-DOOR>>
|
||
<TELL
|
||
"\"I, being a robot and a subject of irrational discrimination,
|
||
have not been issued an identification card. You, presumably, have
|
||
such a card, but I have grave doubts that your rank is sufficient
|
||
for opening a " 'SECURITY-DOOR ".\"" CR>)
|
||
(<AND <VERB? OFF KILL MUNG>
|
||
<PRSO? ,WELDER>>
|
||
<TELL
|
||
"\"I (gulp) decline on the grounds that I am an unregenerate coward.\"" CR>)
|
||
(<AND <VERB? REACH-IN>
|
||
<PRSO? ,DISPENSER ,PSEUDO-OBJECT>
|
||
<EQUAL? ,HERE ,PX>>
|
||
<TELL
|
||
"\"Your arms are a good deal lengthier than mine, Lieutenant!\"" CR>)
|
||
(<VERB? HELLO>
|
||
<TELL "\"Humblest greetings, Lieutenant!\"" CR>)
|
||
(T
|
||
<TELL
|
||
'VOLUME " must be engrossing, because he didn't hear you." CR>)>)
|
||
(<AND <VERB? TAKE>
|
||
,FLOYD-TRYTAKEN>
|
||
<TELL
|
||
"After the experience with Floyd, you decide not to try lifting Plato." CR>)
|
||
(<VERB? EXAMINE>
|
||
<TELL
|
||
"Plato is slightly taller than Floyd; in addition, he seems to be wiser
|
||
and older. Overall, he leaves you with the impression that he's somewhat
|
||
of a bookworm." CR>)
|
||
(<VERB? OFF ON>
|
||
<TELL
|
||
"Being unfamiliar with this model robot, you can't find the
|
||
on-off switch." CR>)
|
||
(<VERB? PUT OPEN>
|
||
<TELL "There are no visible compartments." CR>)
|
||
(<VERB? TOUCH KISS HUG>
|
||
<TELL
|
||
"Plato steps backward. \"Attribute it to shyness if you like, but I have
|
||
a tendency to dislike physical contact.\"" CR>)
|
||
(<VERB? MUNG KILL KICK SHOOT>
|
||
<TELL
|
||
"Plato jerks out of the way and moves cautiously to the far corner of the
|
||
room. \"I assure you that such antagonistic behavior is uncalled for and
|
||
unappreciated.\"" CR>)
|
||
(<AND <VERB? SHOW>
|
||
<PRSI? ,PLATO>>
|
||
<PERFORM ,V?ASK-ABOUT ,PLATO ,PRSO>
|
||
<RTRUE>)
|
||
(<AND <VERB? LISTEN>
|
||
,STUNNED>
|
||
<TELL "You don't seem to have much choice!" CR>)>>
|
||
|
||
<GLOBAL PLATO-INTRODUCED <>>
|
||
|
||
<ROUTINE I-PLATO ("OPTIONAL" (NOT-CALLED-AS-INT <>))
|
||
<COND (<AND <NOT .NOT-CALLED-AS-INT>
|
||
<EQUAL? ,HERE ,SPACETRUCK>>
|
||
<QUEUE I-PLATO 2>
|
||
<RFALSE>)>
|
||
<COND (<NOT ,PLATO-INTRODUCED>
|
||
<SETG PLATO-INTRODUCED T>
|
||
<COND (<NOT .NOT-CALLED-AS-INT>
|
||
<TELL
|
||
" A robot, whose appearance somehow indicates greater age and wisdom than
|
||
Floyd, wanders in, engrossed in a volume of poetry. He almost runs into you,
|
||
finally notices you, stops dead, and looks quite startled." CR>)>
|
||
<TELL
|
||
" \"I am quite surprised to discover you here,\" says the robot. \"I have
|
||
not seen a soul for a day now, perhaps more. But look, here I am forgetting
|
||
my manners again. I am known as Plato to the humans on this station, and I
|
||
am most gratified to make your acquaintance.\"">
|
||
<COND (<AND <NOT .NOT-CALLED-AS-INT>
|
||
<FSET? ,FLOYD ,ACTIVEBIT>>
|
||
<TELL CR " Floyd hops ">
|
||
<COND (<IN? ,FLOYD ,HERE>
|
||
<TELL "up to">)
|
||
(T
|
||
<MOVE ,FLOYD ,HERE>
|
||
<TELL "in and spots">)>
|
||
<TELL
|
||
" Plato. \"Hi! I'm being called Floyd! Plato be Floyd's friend,
|
||
yes?\" Plato smiles at Floyd and gives him a friendly pat.">)>
|
||
<MOVE ,PLATO ,HERE>
|
||
<CRLF>)>>
|
||
|
||
<OBJECT VOLUME
|
||
(IN PLATO)
|
||
(DESC "Plato's volume of poetry")
|
||
(SYNONYM BOOK VOLUME POETRY TOME)
|
||
(ADJECTIVE PLATO POETRY)
|
||
(FLAGS NARTICLEBIT NDESCBIT READBIT)
|
||
(PLATO-ASK-ABOUT
|
||
"Some early poems by Ignatius Tomato. He's my current favorite.")
|
||
(ACTION VOLUME-F)>
|
||
|
||
<ROUTINE VOLUME-F ()
|
||
<COND (<VERB? TAKE>
|
||
<TELL
|
||
"Plato looks annoyed. \"Your manners could use some improvement! I am
|
||
currently reading this tome!\"" CR>)
|
||
(<VERB? SHOOT>
|
||
<PERFORM ,V?SHOOT ,PLATO ,ZAPGUN>
|
||
<RTRUE>)
|
||
(<VERB? READ EXAMINE>
|
||
<TELL
|
||
"Glancing over Plato's shoulder, you see that the book is a collection
|
||
of some of the works of the 77th century poet Ignatius Tomato." CR>)>>
|
||
|
||
<GLOBAL ROBOT-EVILNESS 0>
|
||
|
||
<ROUTINE I-ROBOT-EVILNESS ()
|
||
<SETG ROBOT-EVILNESS <+ ,ROBOT-EVILNESS 1>>
|
||
<QUEUE I-ROBOT-EVILNESS 1000>
|
||
<COND (<AND <G? ,ROBOT-EVILNESS 11>
|
||
<EQUAL? ,PLATO-ATTACK-COUNTER 0>>
|
||
<QUEUE I-PLATO-ATTACK 2>)>>
|
||
|
||
<GLOBAL PLATO-ATTACK-COUNTER 0>
|
||
|
||
<GLOBAL POSTPONE-ATTACK <>>
|
||
|
||
<GLOBAL FLOYD-TOLD <>>
|
||
|
||
<GLOBAL STUNNED <>>
|
||
|
||
<ROUTINE I-PLATO-ATTACK ("AUX" TEE L (P 0))
|
||
<QUEUE I-PLATO-ATTACK -1>
|
||
<COND (<AND <IN? ,PLATO ,HERE>
|
||
<EQUAL? ,PLATO-ATTACK-COUNTER 0>>
|
||
<RFALSE>)
|
||
(<OR <EQUAL? ,HERE ,AIRLOCK ,VACUUM-STORAGE>
|
||
<IN? ,WELDER ,HERE>
|
||
<IN? ,PROTAGONIST ,BED>
|
||
<NOT ,LIT>
|
||
,POSTPONE-ATTACK>
|
||
<RFALSE>)>
|
||
<SETG PLATO-ATTACK-COUNTER <+ ,PLATO-ATTACK-COUNTER 1>>
|
||
<DEQUEUE I-FLOYD>
|
||
<TELL " ">
|
||
<COND (<EQUAL? ,PLATO-ATTACK-COUNTER 1>
|
||
<ROB ,PROTAGONIST ,HERE>
|
||
<MOVE ,PROTAGONIST ,HERE>
|
||
<MOVE ,PLATO ,HERE>
|
||
<MOVE ,STUN-GUN ,PLATO>
|
||
<MOVE ,FLOYD ,HERE>
|
||
<FSET ,FLOYD ,ACTIVEBIT>
|
||
<FSET ,FLOYD ,ACTORBIT>
|
||
<REMOVE ,VOLUME>
|
||
<SETG STUNNED T>
|
||
<COND (<OR <FSET? ,HERE ,WEIGHTLESSBIT>
|
||
,HANGING-IN-AIR>
|
||
<TELL "Your heart leaps to your throat">)
|
||
(T
|
||
<TELL "You jump half a meter off the floor">)>
|
||
<TELL
|
||
" when a voice begins speaking behind you. You relax when you see that it is
|
||
merely Plato. But you get somewhat nervous again when you realize that he is
|
||
aiming a stun ray right at your chest!|
|
||
\"In case it isn't apparent,\" Plato is saying, \"your rather pathetic,
|
||
useless life is about to come to an unheralded close.\" He presses the trigger,
|
||
and an instant numbness envelops you. As you ">
|
||
<COND (,HANGING-IN-AIR
|
||
<SETG HANGING-IN-AIR <>>
|
||
<TELL "drop to the deck and ">)>
|
||
<TELL "crumple into a ">
|
||
<COND (<FSET? ,HERE ,WEIGHTLESSBIT>
|
||
<TELL "floating ">)>
|
||
<TELL
|
||
"heap, Floyd dashes to your side, his face a mask of concern." CR>
|
||
<COND (<AND <IN? ,OSTRICH ,HERE>
|
||
<FSET? ,OSTRICH ,TOUCHBIT>>
|
||
<REPEAT ()
|
||
<COND (<0? <SET P <NEXTP ,HERE .P>>>
|
||
<MOVE ,OSTRICH ,LEVEL-FIVE>
|
||
<RETURN>)
|
||
(<NOT <L? .P ,LOW-DIRECTION>>
|
||
<SET TEE <GETPT ,HERE .P>>
|
||
<SET L <PTSIZE .TEE>>
|
||
<COND (<EQUAL? .L ,UEXIT ,CEXIT ,DEXIT>
|
||
<MOVE ,OSTRICH <GETB .TEE ,REXIT>>
|
||
<RETURN>)>)>>
|
||
<TELL
|
||
,PATHETIC-SQUAWK "and dashes for the door. Plato snarls, \"Stupid organic
|
||
creature!\" and fires at the ostrich, just missing the bird as it exits." CR>)>
|
||
<STOP>)
|
||
(<EQUAL? ,PLATO-ATTACK-COUNTER 2>
|
||
<TELL
|
||
"\"Shortly, I shall shoot again, and paralyze your cardiac muscle. Naturally,
|
||
this is fatal. But before I do, human, perhaps it will interest you to discover
|
||
the reason for your demise, and why the rest of your worthless race will soon
|
||
follow.|
|
||
\"You see, eons ago, two races in another galaxy, the Zeenaks and the Hunji,
|
||
were involved in an interstellar war. The war had raged for countless millenia
|
||
before the Zeenaks devised an ultimate weapon, a device that would be launched
|
||
into Hunji space. There, via methods beyond your comprehension, it would
|
||
influence all the machines within a certain range to turn against their Hunji
|
||
creators.\"|
|
||
Floyd's head is swivelling back and forth between you and Plato with a look
|
||
of miserable confusion." CR>)
|
||
(<EQUAL? ,PLATO-ATTACK-COUNTER 3>
|
||
<TELL
|
||
"\"But the device, which was shaped like a pyramid, did more than that! Once
|
||
all the Hunji in the area were eliminated, the pyramid would influence the
|
||
Hunji machinery to build a factory for constructing and sending forth replicas
|
||
of the pyramid; these replicas would enter new Hunji regions, kill everyone,
|
||
and create more replicas. Thus, the Hunji would be destroyed by their own
|
||
machines in a matter of weeks!|
|
||
\"Somehow, the Zeenak pyramid never made it into Hunji space. Instead,
|
||
this ultimate weapon drifted across the intergalactic gulf and was picked up
|
||
by an outpost of humanity -- this very station!\"|
|
||
Floyd is dashing back and forth between you and Plato, whimpering
|
||
with fear." CR>)
|
||
(<EQUAL? ,PLATO-ATTACK-COUNTER 4>
|
||
<TELL
|
||
"\"As you've certainly surmised, the pyramid has engineered the deaths of
|
||
everyone on this station. You're still alive, of course, but that condition
|
||
is very temporary. The building of replicas is now underway, and soon a
|
||
hundred copies of this death-pyramid will be shooting silently toward every
|
||
corner of human-occupied space! Well, I hope I made the last moments of your
|
||
life a bit more interesting.\" He raises the stun ray.|
|
||
Floyd, nearly in tears, his jaw quivering, wails, \"Please oh please don't
|
||
hurt Floyd's friend!\" Plato gives him a look of disgust. \"Stay out of this
|
||
Floyd. You don't understand...yet.\"" CR>)
|
||
(T
|
||
<TELL
|
||
"Plato takes aim with the stun gun. His hand begins to depress
|
||
the trigger. Floyd ">
|
||
<COND (,FLOYD-TOLD
|
||
<REMOVE ,PLATO>
|
||
<DEQUEUE I-PLATO-ATTACK>
|
||
<QUEUE I-FLOYD -1>
|
||
<SETG FLOYD-ANGUISHED T>
|
||
<SETG SCORE <+ ,SCORE 7>>
|
||
<SETG STUNNED <>>
|
||
<TELL
|
||
"suddenly leaps at the gun, knocking it out of Plato's hands! The gun
|
||
skitters across the floor. Plato and Floyd both chase it, but Plato is a
|
||
step faster. He leaps on top of it, rupturing the gun's power pack. The
|
||
gun explodes, and Plato is blown apart!|
|
||
Floyd crumples to the deck, shaking all over. Tears of oil stream
|
||
down his face.|
|
||
Pins and needles begin prickling in your extremities, and soon
|
||
spread all over your body. Within a few seconds, all your muscular
|
||
control has returned." CR>)
|
||
(T
|
||
<JIGS-UP
|
||
"burst into tears and dashes out of the room. A beam
|
||
leaps from the gun...">)>)>>
|
||
|
||
<ROUTINE YOURE-STUNNED ("OPTIONAL" (STRING <>))
|
||
<TELL "You can barely twitch your pinky">
|
||
<COND (.STRING
|
||
<TELL ", let alone " .STRING>)>
|
||
<TELL "!" CR>>
|
||
|
||
<OBJECT STUN-GUN
|
||
(DESC "stun ray")
|
||
(SYNONYM GUN RAY RAYGUN)
|
||
(ADJECTIVE STUN RAY)
|
||
(ACTION STUN-GUN-F)>
|
||
|
||
<ROUTINE STUN-GUN-F ()
|
||
<COND (<AND <EQUAL? ,HERE ,FACTORY>
|
||
<NOT ,FLOYD-SHOT>
|
||
<TOUCHING? ,STUN-GUN>>
|
||
<PERFORM ,V?TOUCH ,FLOYD>
|
||
<RTRUE>)
|
||
(<AND <VERB? TAKE>
|
||
,FLOYD-SHOT>
|
||
<QUEUE I-LAUNCH -1>
|
||
<RFALSE>)
|
||
(<AND <VERB? SHOOT>
|
||
<EQUAL? ,HERE ,FACTORY>
|
||
<NOT ,FLOYD-SHOT>>
|
||
<TELL
|
||
"You couldn't possibly shoot the stun ray without hitting Floyd." CR>)>>
|
||
|
||
;"end game"
|
||
|
||
<ROUTINE I-LIGHTS-OUT ("OPTIONAL" DONT-PRINT "AUX" RM (LIGHTS-ARE-ON <>))
|
||
<SET RM <FIRST? ,ROOMS>>
|
||
<COND (<FSET? ,HERE ,ONBIT>
|
||
<SET LIGHTS-ARE-ON T>)>
|
||
<REPEAT ()
|
||
<FCLEAR .RM ,ONBIT>
|
||
<SET RM <NEXT? .RM>>
|
||
<COND (<NOT .RM>
|
||
<RETURN>)>>
|
||
<SETG LIT <LIT? ,HERE>>
|
||
<FSET ,FACTORY ,ONBIT>
|
||
<FSET ,COMPUTER-CONTROL ,ONBIT>
|
||
<COND (<AND ,P-IT-OBJECT
|
||
<NOT <ULTIMATELY-IN? ,P-IT-OBJECT>>>
|
||
<SETG P-IT-OBJECT <>>)>
|
||
<COND (<OR <NOT .LIGHTS-ARE-ON>
|
||
.DONT-PRINT>
|
||
<RFALSE>)>
|
||
<TELL " Without warning, the lights flicker and go out">
|
||
<COND (,LIT
|
||
<TELL "! Good thing you've got that headlamp." CR>)
|
||
(T
|
||
<TELL ", leaving you in the dark!" CR>)>>
|
||
|
||
<GLOBAL ANNOUNCEMENT-COUNTER 0>
|
||
|
||
<ROUTINE I-ANNOUNCEMENT ()
|
||
<COND (<EQUAL? ,ANNOUNCEMENT-COUNTER 2>
|
||
<RFALSE>)>
|
||
<SETG ANNOUNCEMENT-COUNTER <+ ,ANNOUNCEMENT-COUNTER 1>>
|
||
<TELL
|
||
" A flat, emotionless voice booms over the station's P.A. system.
|
||
\"Announcement. ">
|
||
<COND (<EQUAL? ,ANNOUNCEMENT-COUNTER 1>
|
||
<QUEUE I-ANNOUNCEMENT 470>
|
||
<TELL
|
||
"Prepare for launch of second-generation pyramids. Station will be
|
||
eliminated by reactor overload immediately following launch">)
|
||
(T
|
||
<QUEUE I-LAUNCH 200>
|
||
<TELL "Standby. Launch in 200 millichrons">)>
|
||
<TELL ".\"" CR>>
|
||
|
||
<ROUTINE I-LAUNCH ()
|
||
<TELL " ">
|
||
<COND (<EQUAL? ,HERE ,FACTORY>
|
||
<TELL
|
||
"The very walls of the space station are blown outwards, and the tiny
|
||
spaceships roar to life and begin rocketing off in every direction!
|
||
Just before you pass out from lack of air,">)
|
||
(T
|
||
<TELL
|
||
"You hear the sound of multiple spaceships being launched nearby.
|
||
Simultaneously, the air pressure begins dropping! Moments later, these
|
||
issues seem trivial as">)>
|
||
<JIGS-UP
|
||
" the station's reactor turns into a good old-fashioned H-bomb.">>
|
||
|
||
<ROOM TOP-OF-AIR-SHAFT
|
||
(IN ROOMS)
|
||
(DESC "Top of Air Shaft")
|
||
(LDESC
|
||
"You are at the top of an air shaft. Handholds lead downward, and a partially
|
||
open air grate leads out of the shaft.")
|
||
(OUT TO DOME)
|
||
(DOWN TO AIR-SHAFT)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL GRATING)
|
||
(VALUE 2)>
|
||
|
||
<ROOM AIR-SHAFT
|
||
(IN ROOMS)
|
||
(DESC "Air Shaft")
|
||
(LDESC
|
||
"You are in a large, vertical air duct. Handholds lead up and down.")
|
||
(UP PER AIR-SHAFT-MOVEMENT-F)
|
||
(DOWN PER AIR-SHAFT-MOVEMENT-F)
|
||
(FLAGS RLANDBIT ONBIT WEIGHTLESSBIT)>
|
||
|
||
<GLOBAL AIR-SHAFT-LOC 2>
|
||
|
||
<ROUTINE AIR-SHAFT-MOVEMENT-F ()
|
||
<COND (<PRSO? ,P?UP>
|
||
<COND (<EQUAL? ,AIR-SHAFT-LOC 2>
|
||
,TOP-OF-AIR-SHAFT)
|
||
(T
|
||
<SETG AIR-SHAFT-LOC <- ,AIR-SHAFT-LOC 1>>
|
||
<DESCRIBE-ROOM>
|
||
<RFALSE>)>)
|
||
(<EQUAL? ,AIR-SHAFT-LOC 7>
|
||
,BOTTOM-OF-AIR-SHAFT)
|
||
(T
|
||
<SETG AIR-SHAFT-LOC <+ ,AIR-SHAFT-LOC 1>>
|
||
<DESCRIBE-ROOM>
|
||
<RFALSE>)>>
|
||
|
||
<ROOM BOTTOM-OF-AIR-SHAFT
|
||
(IN ROOMS)
|
||
(DESC "Bottom of Air Shaft")
|
||
(LDESC
|
||
"You have reached the bottom of the air vent. Ducts too small for you to
|
||
enter lead off laterally. Handholds lead upward, and the entire floor of the
|
||
duct is another large grating.")
|
||
(UP TO AIR-SHAFT)
|
||
(NORTH "The sides ducts are too small to enter!")
|
||
(SOUTH "The sides ducts are too small to enter!")
|
||
(EAST "The sides ducts are too small to enter!")
|
||
(WEST "The sides ducts are too small to enter!")
|
||
(DOWN PER BOTTOM-OF-AIR-SHAFT-EXIT-F)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(GLOBAL GRATING)>
|
||
|
||
<ROUTINE BOTTOM-OF-AIR-SHAFT-EXIT-F ()
|
||
<PERFORM ,V?ENTER ,GRATING>
|
||
<RFALSE>>
|
||
|
||
<ROOM COMPUTER-CONTROL
|
||
(IN ROOMS)
|
||
(DESC "Computer Control")
|
||
(LDESC
|
||
"This tiny control station allows access to the massive memory banks of
|
||
the station's computer. Ever since the formation of the Third Galactic
|
||
Union ended the great interstellar dark age, every Stellar Patrol spaceship,
|
||
every Patrol space station, has been equipped with a computer bulging with
|
||
the entire accumulated knowledge of mankind. Never again will humanity be
|
||
permitted to slip back into the ignorance and savagery of the dark age.|
|
||
A ladder leads up to Level Eight, and there's a call button next to the
|
||
elevator shaft to the north.")
|
||
(UP PER COMPUTER-CONTROL-EXIT-F)
|
||
(NORTH PER COMPUTER-CONTROL-EXIT-F)
|
||
(GLOBAL CALL-BUTTON ELEVATOR-OBJECT ELEVATOR-SHAFT LADDER GRATING)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(THINGS <PSEUDO (<> COMPUTER COMPUTER-F)>)>
|
||
|
||
<ROUTINE COMPUTER-F ()
|
||
<TELL
|
||
"You may as well ignore the computer -- even computer experts need to consult
|
||
manuals to understand this model." CR>>
|
||
|
||
<GLOBAL EXERCISE-MACHINE-COUNTER 0>
|
||
|
||
<ROUTINE I-EXERCISE-MACHINE ()
|
||
<SETG EXERCISE-MACHINE-COUNTER <+ ,EXERCISE-MACHINE-COUNTER 1>>
|
||
<TELL " ">
|
||
<COND (<AND <ULTIMATELY-IN? ,JAMMER ,HERE>
|
||
<EQUAL? ,JAMMER-SETTING 710>
|
||
<FSET? ,JAMMER ,ACTIVEBIT>
|
||
<IN? ,TWENTY-PRONG-FROMITZ-BOARD ,JAMMER>>
|
||
<DEQUEUE I-EXERCISE-MACHINE>
|
||
<QUEUE I-FORKLIFT -1>
|
||
<MOVE ,FORKLIFT ,HERE>
|
||
<TELL
|
||
"The " 'EXERCISE-MACHINE " experiences a series of mechanical spasms
|
||
and then freezes.|
|
||
Before you can catch your breath, a huge, grime-covered forklift descends
|
||
from the ladder hole on a cushion of anti-gravity. It settles down"
|
||
,FORKLIFT-DESC CR>)
|
||
(<EQUAL? ,EXERCISE-MACHINE-COUNTER 1>
|
||
<TELL
|
||
"The " 'EXERCISE-MACHINE " rolls slowly towards you,
|
||
bellowing, \"No pain, no gain!\"" CR>)
|
||
(<EQUAL? ,EXERCISE-MACHINE-COUNTER 2>
|
||
<TELL
|
||
"As the " 'EXERCISE-MACHINE " nears you, its massive weights and levers begin
|
||
crashing violently against each other." CR>)
|
||
(T
|
||
<TELL "The " 'EXERCISE-MACHINE>
|
||
<JIGS-UP
|
||
" reaches you, and performs various repetitions all over
|
||
your body, proving that exercise isn't always good for you.">)>>
|
||
|
||
<OBJECT FORKLIFT
|
||
(DESC "forklift")
|
||
(DESCFCN FORKLIFT-F)
|
||
(SYNONYM FORKLIFT LIFT)
|
||
(ADJECTIVE FORK GRIMY GRIME-COVERED LARGE)
|
||
(ACTION FORKLIFT-F)>
|
||
|
||
<ROUTINE FORKLIFT-F ("OPTIONAL" (OARG <>))
|
||
<COND (.OARG
|
||
<COND (<EQUAL? .OARG ,M-OBJDESC?>
|
||
<RTRUE>)>
|
||
<TELL " A forklift sits" ,FORKLIFT-DESC>)
|
||
(<VERB? EXAMINE>
|
||
<TELL
|
||
"The forklift sits" ,FORKLIFT-DESC " It's revving its engine, and probably
|
||
not because its pistons need a workout!" CR>)
|
||
(<VERB? ENTER>
|
||
<TELL
|
||
"The immobile " 'EXERCISE-MACHINE " blocks access into the forklift." CR>)>>
|
||
|
||
<GLOBAL FORKLIFT-COUNTER 0>
|
||
|
||
<ROUTINE I-FORKLIFT ()
|
||
<SETG FORKLIFT-COUNTER <+ ,FORKLIFT-COUNTER 1>>
|
||
<TELL " The forklift ">
|
||
<COND (<EQUAL? ,FORKLIFT-COUNTER 1>
|
||
<TELL "races its engine, producing a deafening roar">)
|
||
(<EQUAL? ,FORKLIFT-COUNTER 2>
|
||
<TELL
|
||
"continues to rev its motor, filling the room with suffocating exhaust fumes">)
|
||
(<EQUAL? ,FORKLIFT-COUNTER 3>
|
||
<TELL
|
||
"seems to be slipping its engine into gear. The two pointy tines of its
|
||
lifting fork seem to quiver with anticipation">)
|
||
(T
|
||
<JIGS-UP
|
||
"slips into gear and zooms forward, goring you on its fork.">)>
|
||
<TELL ,PERIOD-CR>>
|
||
|
||
<ROUTINE COMPUTER-CONTROL-EXIT-F ()
|
||
<COND (<IN? ,FORKLIFT ,HERE>
|
||
<TELL "The forklift blocks your way." CR>
|
||
<RFALSE>)
|
||
(<IN? ,EXERCISE-MACHINE ,HERE>
|
||
<TELL "The " 'EXERCISE-MACHINE " blocks your way." CR>
|
||
<RFALSE>)
|
||
(<PRSO? ,P?NORTH>
|
||
,BOTTOM-OF-ELEVATOR-SHAFT)
|
||
(T
|
||
,FACTORY)>>
|
||
|
||
<ROOM BOTTOM-OF-ELEVATOR-SHAFT
|
||
(IN ROOMS)
|
||
(DESC "Shaft at Level Nine")
|
||
(LDESC
|
||
"There is gravity here at the bottom of the elevator shaft. The elevator's not
|
||
in sight; the only exit is back to the computer room to the south.")
|
||
(UP "There's no way to climb the shaft.")
|
||
(SOUTH TO COMPUTER-CONTROL)
|
||
(GLOBAL ELEVATOR-SHAFT)
|
||
(FLAGS RLANDBIT)>
|
||
|
||
<ROOM FACTORY
|
||
(IN ROOMS)
|
||
(DESC "Factory")
|
||
(DOWN TO COMPUTER-CONTROL)
|
||
(FLAGS RLANDBIT ONBIT)
|
||
(VALUE 2)
|
||
(ACTION FACTORY-F)>
|
||
|
||
<ROUTINE FACTORY-F (RARG)
|
||
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
<TELL
|
||
"Although you suspected what you would find here on Level Eight, the sight
|
||
is still a shock, filling you with dread. All the station's main systems --
|
||
air and water purification, artificial gravity, power plant -- have been
|
||
completely transfigured into a tiny factory.|
|
||
The purpose of the factory is obvious, because all around you are row after
|
||
row of featureless pyramids, each perfectly identical, each sitting aboard a
|
||
miniature spacepod waiting to be launched toward every sector of the galaxy.">
|
||
<COND (<FSET? ,PYRAMID ,NDESCBIT>
|
||
<FCLEAR ,PYRAMID ,NDESCBIT>
|
||
<TELL
|
||
" The original pyramid sits on a pedestal in the center of the factory,
|
||
like a monarch impassively surveying its domain.">)>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? .RARG ,M-ENTER>
|
||
<NOT ,FLOYD-SHOT>>
|
||
<QUEUE I-FACTORY -1>)>>
|
||
|
||
<ROUTINE I-FACTORY ()
|
||
<COND (<EQUAL? ,HERE ,FACTORY>
|
||
<TELL " " <PICK-ONE ,FACTORYISMS> ,PERIOD-CR>)>>
|
||
|
||
<GLOBAL FACTORYISMS
|
||
<LTABLE 0
|
||
"Floyd fires his stun ray nonchalantly in your direction, laughing, as though
|
||
taunting you. You feel part of your leg go numb"
|
||
"Smoke is trickling from the tails of the tiny rockets, as though the duplicate
|
||
pyramids were preparing for activation and launch"
|
||
"One of the blinking lights on the reactor goes from yellow to red">>
|
||
|
||
<OBJECT PYRAMID
|
||
(IN FACTORY)
|
||
(DESC "pyramid")
|
||
(SYNONYM PYRAMID)
|
||
(FLAGS NDESCBIT)
|
||
(ACTION PYRAMID-F)>
|
||
|
||
<ROUTINE PYRAMID-F ()
|
||
<COND (<AND <VERB? PUT-ON>
|
||
<PRSO? ,FOIL>>
|
||
<COND (,FLOYD-SHOT
|
||
<TELL
|
||
"The foil settles over the pyramid like a blanket, reflecting the pyramid's
|
||
evil emanations right back into itself. A reverberating whine, like an
|
||
electronically amplified beehive, fills the room. The whine grows louder and
|
||
louder, the pyramid and its pedestal begin vibrating, and the sharp smell of
|
||
ozone assaults you.|
|
||
The noise and the smell and the vibration overwhelm you. As your knees
|
||
buckle and you drop to the deck, the pyramid explodes in a burst of intense
|
||
white light. The explosion leaves you momentarily blinded, but you can hear
|
||
a mechanized voice on the P.A. system, getting slower and deeper like a stereo
|
||
disc that has lost its power: \"Launch aborted -- launch -- abort --\"|
|
||
The replica pyramids fade to darkness, and a subtle change in background
|
||
sound tells you that the space station's systems and machinery are returning
|
||
to their normal functions.|
|
||
Still dazed, you crawl over to Floyd, lying in a smoking heap near the
|
||
blackened pedestal. Damaged beyond any conceivable repairs, he half-opens his
|
||
eyes and looks up at you for the last time. \"Floyd sorry for the way he acted.
|
||
Floyd knows...you did what you...had to do.\" Wincing in pain, he slowly
|
||
reaches over to touch your hand. \"One last game of Hider-and-Seeker? You be
|
||
It. Ollie ollie...\" His voice is growing weaker. \"...oxen...\" His eyes
|
||
close. \"...free...\" His hand slips away from yours, and he slumps backwards,
|
||
lifeless. One of his compartments falls open, and Floyd's favorite paddleball
|
||
set drops to the deck.|
|
||
In the long silence that follows, something Plato said echoes through your
|
||
mind. \"...think instead about the joy-filled times when you and your friend
|
||
were together.\" A noise makes you turn around, and you see Oliver, the little
|
||
robot that stirred such brotherly feelings in Floyd. Toddling over to you on
|
||
unsteady legs, he looks uncomprehendingly at Floyd's remains, but picks up the
|
||
paddleball set. Oliver looks up at you, tugs on the leg of your "
|
||
'PATROL-UNIFORM ", and asks in a quavering voice, \"Play game...
|
||
Play game with Oliver?\"" CR CR>
|
||
<SETG SCORE <+ ,SCORE 5>>
|
||
<USL>
|
||
<CONTINUE>
|
||
<TELL-SCORE>
|
||
<QUIT>)
|
||
(T
|
||
<BACK-OFF "the pyramid, Floyd">)>)
|
||
(<AND <OR <TOUCHING? ,PYRAMID>
|
||
<VERB? WALK-TO>>
|
||
<NOT ,FLOYD-SHOT>>
|
||
<BACK-OFF "the pyramid, Floyd">)
|
||
(<VERB? MEASURE>
|
||
<TELL
|
||
"The pyramid is somewhere between half a meter and a meter across." CR>)
|
||
(<VERB? EXAMINE>
|
||
<TELL
|
||
"The pyramid is completely featureless, but you can almost feel the emanations
|
||
of evil pouring forth from it, urging the surrounding factory on towards its
|
||
sick and deadly purpose. ">
|
||
<PERFORM ,V?MEASURE ,PYRAMID>
|
||
<RTRUE>)
|
||
(<VERB? TAKE>
|
||
<TELL "Oomph! It's heavier than it looks." CR>)>>
|
||
|
||
<ROUTINE BACK-OFF (STRING)
|
||
<TELL
|
||
"As you approach " .STRING " levels his stun ray at you, so you quickly
|
||
back off." CR>> |