Revision 37 (Original Source)
authorhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 01:34:42 +0000 (21:34 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 01:34:42 +0000 (21:34 -0400)
README.md [new file with mode: 0644]
compone.zil [new file with mode: 0644]
comptwo.zil [new file with mode: 0644]
globals.zil [new file with mode: 0644]
misc.zil [new file with mode: 0644]
parser.zil [new file with mode: 0644]
planetfall.zil [new file with mode: 0644]
planetfall.zip [new file with mode: 0644]
syntax.zil [new file with mode: 0644]
verbs.zil [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..962ebf1
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# planetfall
diff --git a/compone.zil b/compone.zil
new file mode 100644 (file)
index 0000000..753293c
--- /dev/null
@@ -0,0 +1,3216 @@
+"COMPONE for PLANETFALL 
+(C) COPYRIGHT 1983 INFOCOM, INC. ALL RIGHTS RESERVED
+
+This file contains all the rooms, objects, and actions associated
+with Complex One / the Western Complex / the Kalamontee Compleks."
+
+<ROOM UNDERWATER
+      (IN ROOMS)
+      (DESC "Underwater")
+      (LDESC
+"You are momentarily disoriented as you enter the turbulent waters.
+Currents buffet you against the sharp rocks of an underwater
+cliff. A dim light filters down from above.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"    35
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (UP TO CRAG)
+      (DOWN TO UNDERWATER)
+      (WEST TO UNDERWATER)
+      (NORTH TO UNDERWATER)
+      (SOUTH TO UNDERWATER)
+      (FLAGS ONBIT RWATERBIT)
+      (ACTION UNDERWATER-F)>
+
+<GLOBAL DROWN 0> ;"you die if you return to Underwater or stay too long"
+
+<ROUTINE UNDERWATER-F (RARG)
+        <COND (<EQUAL? .RARG ,M-END>
+               <SETG DROWN <+ ,DROWN 1>>
+               <COND (<G? ,DROWN 2>
+                      <JIGS-UP
+"A mighty undertow drags you across some underwater obstructions.">)>)>>
+
+<ROOM CRAG
+      (IN ROOMS)
+      (DESC "Crag")
+      (LDESC
+"You have reached a cleft in the cliff wall where the island rises from the
+water. The edge of the cleft displays recently exposed rock where it collapsed
+under the weight of the escape pod. About two meters below, turbulent waters
+swirl against sharp rocks. A small structure clings to the face of the cliff
+about eight meters above you. Even an out-of-shape Ensign Seventh Class could
+probably climb up to it.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"10  ;"UP"    40
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN TO UNDERWATER)
+      (UP TO BALCONY)
+      (FLAGS ONBIT RLANDBIT)
+      (VALUE 3)
+      (GLOBAL CLIFF OCEAN)
+      (PSEUDO "STRUCTURE" STRUCTURE-PSEUDO "CLEFT" CLEFT-PSEUDO)
+      (ACTION CRAG-F)>
+
+<ROUTINE CRAG-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <SETG DROWN 3>)>>
+
+<ROOM BALCONY
+      (IN ROOMS)
+      (DESC "Balcony")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"25  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN PER WATER-LEVEL-F)
+      (UP TO WINDING-STAIR)
+      (FLAGS ONBIT RLANDBIT)
+      (PSEUDO "PLAQUE" PLAQUE-PSEUDO)
+      (GLOBAL CLIFF OCEAN STAIRS WINDOW)
+      (ACTION BALCONY-F)>
+
+<ROUTINE BALCONY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is an octagonal room, half carved into and half built out from the cliff
+wall. Through the shattered windows which ring the outer wall you can see
+ocean to the horizon. A weathered metal plaque with barely readable lettering
+rests below the windows. The language seems to be a corrupt form of
+Galalingua. A steep stairway, roughly cut into the face of the cliff, leads
+upward. ">
+               <COND (<EQUAL? ,DAY 1>
+                      <TELL
+"A rocky crag can be seen about eight meters below." CR>)
+                     (<EQUAL? ,DAY 2>
+                      <TELL
+"The ocean waters swirl below. The crag where you landed yesterday is
+now underwater!" CR>)
+                     (<EQUAL? ,DAY 3>
+                      <TELL
+"Ocean waters are lapping at the base of the balcony." CR>)>)>>
+
+<ROOM WINDING-STAIR
+      (IN ROOMS)
+      (DESC "Winding Stair")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"15  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN PER WATER-LEVEL-F)
+      (UP TO COURTYARD)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL CLIFF STAIRS)
+      (ACTION WINDING-STAIR-F)>
+
+<ROUTINE WINDING-STAIR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The middle of a long, steep stairway carved into the face of a cliff.">
+               <COND (<EQUAL? ,DAY 4>
+                      <TELL
+" You hear the lapping of water from below.">)
+                     (<EQUAL? ,DAY 5>
+                      <TELL
+" You can see ocean water splashing against the steps below you.">)>
+               <CRLF>)>>
+
+<ROOM COURTYARD
+      (IN ROOMS)
+      (DESC "Courtyard")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"15  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN TO WINDING-STAIR)
+      (SOUTH TO WINDING-STAIR)
+      (WEST TO WEST-WING)
+      (NORTH TO  PLAIN-HALL)
+      (FLAGS ONBIT RLANDBIT FLOYDBIT)
+      (GLOBAL STAIRS)
+      (PSEUDO "CASTLE" CASTLE-PSEUDO "RUBBLE" RUBBLE-PSEUDO)
+      (ACTION COURTYARD-F)>
+
+<ROUTINE COURTYARD-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You are in the courtyard of an ancient stone edifice, vaguely reminiscent of
+the castles you saw during your leave on Ramos Two. It has decayed to
+the point where it can probably be termed a ruin. Openings lead north and west,
+and a stairway downward is visible to the south. ">
+               <COND (<EQUAL? ,DAY 6 7>
+                      <TELL
+"From the direction of the stairway comes the sound of ocean surf.">)
+                     (<EQUAL? ,DAY 8>
+                      <TELL
+"Ocean water washes against the top few steps.">)>
+               <CRLF>)>>
+
+<ROUTINE WATER-LEVEL-F ()
+        <COND (<EQUAL? ,HERE ,BALCONY>
+               <COND (<EQUAL? ,DAY 1> ,CRAG)
+                     (T ,UNDERWATER)>)
+              (<EQUAL? ,HERE ,WINDING-STAIR>
+               <COND (<L? ,DAY 4> ,BALCONY)
+                     (T ,UNDERWATER)>)
+              (<EQUAL? ,HERE ,COURTYARD>
+               <COND (<L? ,DAY 6> ,WINDING-STAIR)
+                     (T ,UNDERWATER)>)>>
+
+<ROOM WEST-WING
+      (IN ROOMS)
+      (DESC "West Wing")
+      (LDESC
+"This was once the west wing of the castle, but the walls are now mostly
+rubble, allowing a view of the cliff and ocean below. Rubble blocks all exits
+save one, eastward to the courtyard.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO COURTYARD)
+      (DOWN "Certain death.")
+      (FLAGS ONBIT RLANDBIT FLOYDBIT)
+      (GLOBAL CLIFF OCEAN)
+      (PSEUDO "CASTLE" CASTLE-PSEUDO "RUBBLE" RUBBLE-PSEUDO)>
+
+<ROOM PLAIN-HALL
+      (IN ROOMS)
+      (DESC "Plain Hall")
+      (LDESC
+"This is a featureless hall leading north and south. Although the hallway is
+old and dusty, the construction is of a much more modern style than the
+castle to the south. A similar hall branches off to the northeast.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"  25  ;"NORTH"  0>)
+      (SOUTH TO COURTYARD)
+      (NORTH TO REC-AREA)
+      (NE TO REC-CORRIDOR)
+      (FLAGS ONBIT RLANDBIT)>
+
+<ROOM REC-AREA
+      (IN ROOMS)
+      (DESC "Rec Area")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO CONFERENCE-ROOM IF CONFERENCE-DOOR IS OPEN)
+      (SOUTH TO PLAIN-HALL)
+      (EAST TO REC-CORRIDOR)
+      (FLAGS ONBIT RLANDBIT FLOYDBIT)
+      (GLOBAL CONFERENCE-DOOR)
+      (PSEUDO "GAMES" GAMES-PSEUDO "TAPES" TAPES-PSEUDO)
+      (ACTION REC-AREA-F)>
+
+<GLOBAL DIAL-NUMBER 0>
+
+<GLOBAL NUMBER-NEEDED 0>
+
+<ROUTINE REC-AREA-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a recreational facility of some sort. Games and tapes are scattered
+about the room. Hallways head off to the east and south, and to the north is
+a door which is ">
+               <COND (<FSET? ,CONFERENCE-DOOR ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL
+"closed and locked. A dial on the door is currently set to "
+N ,DIAL-NUMBER>)>
+               <TELL "." CR>)>>
+
+<ROOM CONFERENCE-ROOM
+      (IN ROOMS)
+      (DESC "Conference Room")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO REC-AREA IF CONFERENCE-DOOR IS OPEN)
+      (OUT TO REC-AREA IF CONFERENCE-DOOR IS OPEN)
+      (IN TO BOOTH-1)
+      (NORTH TO BOOTH-1)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)
+      (GLOBAL CONFERENCE-DOOR TABLES)
+      (ACTION CONFERENCE-ROOM-F)>
+
+<ROUTINE CONFERENCE-ROOM-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a fairly square room, almost filled by a round conference table.
+To the south is a door which is ">
+               <DDESC ,CONFERENCE-DOOR>
+               <TELL
+". To the north is a small room about the size of a phone booth." CR>)>>
+
+<OBJECT CONFERENCE-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (FLAGS DOORBIT NDESCBIT)
+       (ACTION CONFERENCE-DOOR-F)>
+
+<OBJECT COMBINATION-DIAL
+       (IN REC-AREA)
+       (DESC "combination dial")
+       (SYNONYM DIAL)
+       (ADJECTIVE COMBINATION)
+       (FLAGS MUNGBIT NDESCBIT)
+       (ACTION COMBINATION-DIAL-F)>
+
+<ROUTINE COMBINATION-DIAL-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The dial can be turned to any number between 0 and 1000." CR>)
+              (<AND <VERB? SET>
+                    <EQUAL? ,PRSI ,INTNUM>>
+               <COND (<FSET? ,COMBINATION-DIAL ,MUNGEDBIT>
+                      <TELL
+"The dial has somehow become fused and won't move." CR>)
+                     (<EQUAL? ,P-NUMBER ,DIAL-NUMBER>
+                      <TELL "That's what the dial is set to now!" CR>)
+                     (<EQUAL? ,P-NUMBER ,NUMBER-NEEDED>
+                      <SETG DIAL-NUMBER 0>
+                      <FSET ,CONFERENCE-DOOR ,OPENBIT>
+                      <TELL
+"The door swings open, and the dial resets to 0." CR>)
+                     (<G? ,P-NUMBER 1000>
+                      <TELL
+"The dial cannot be turned to a number that high." CR>)
+                     (T
+                      <SETG DIAL-NUMBER ,P-NUMBER>
+                      <TELL "The dial is now set to " N ,P-NUMBER "." CR>)>)>>
+
+<ROUTINE CONFERENCE-DOOR-F ()
+       <COND (<VERB? OPEN>
+              <COND (<FSET? ,CONFERENCE-DOOR ,OPENBIT>
+                     <ALREADY-OPEN>)
+                    (T
+                     <COND (<EQUAL? ,HERE ,REC-AREA>
+                            <TELL
+"The door is locked. You probably have to turn the dial to some number to
+open it." CR>)
+                           (T
+                            <TELL
+"The door seems to be locked from the other side." CR>)>)>)
+             (<VERB? CLOSE>
+              <COND (<FSET? ,CONFERENCE-DOOR ,OPENBIT>
+                     <FCLEAR ,CONFERENCE-DOOR ,OPENBIT>
+                     <TELL
+"The door closes and you hear a click as it locks." CR>)
+                    (T
+                     <IS-CLOSED>)>)>>
+
+<ROOM BOOTH-1
+      (IN ROOMS)
+      (DESC "Booth 1")
+      (LDESC
+"This is a tiny room with a large \"1\" painted on the wall. A panel contains
+a slot about ten centimeters wide, a beige button labelled \"2\" and a tan
+button labelled \"3.\"")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO CONFERENCE-ROOM)
+      (OUT TO CONFERENCE-ROOM)
+      (PSEUDO "BOOTH" IN-BOOTH-PSEUDO)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL CONTROLS SLOT TELEPORTATION-BUTTON-2 TELEPORTATION-BUTTON-3)>
+
+<ROOM REC-CORRIDOR
+      (IN ROOMS)
+      (DESC "Rec Corridor")
+      (LDESC
+"This is a wide, east-west hallway. Portals lead north and south, and another
+corridor branches southwest.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"  25  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO REC-AREA)
+      (NORTH TO DORM-B)
+      (SOUTH TO DORM-A)
+      (EAST TO MESS-CORRIDOR)
+      (SW TO PLAIN-HALL)
+      (FLAGS ONBIT RLANDBIT)>
+
+<ROOM DORM-A
+      (IN ROOMS)
+      (DESC "Dorm A")
+      (LDESC
+"This is a very long room lined with multi-tiered bunks. Flimsy partitions
+between the tiers may have provided a modicum of privacy. These spartan
+living quarters could have once housed many hundreds, but it seems quite
+deserted now. There are openings at the north and south ends of the room.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO SANFAC-A)
+      (NORTH TO REC-CORRIDOR)
+      (FLAGS FLOYDBIT ONBIT RLANDBIT)
+      (GLOBAL BED)
+      (PSEUDO "PARTITION" PARTITION-PSEUDO)>
+
+<ROOM SANFAC-A
+      (IN ROOMS)
+      (DESC "SanFac A")
+      (LDESC
+"This must be the sanitary facility for the adjacent dormitory. The fixtures
+are dry and dusty, the room dead and deserted. You marvel at how little the
+millenia and cultural gulfs have changed toilet bowl design. The only exit is
+north.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO DORM-A)
+      (FLAGS ONBIT RLANDBIT FLOYDBIT)
+      (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)>
+
+<ROOM DORM-B
+      (IN ROOMS)
+      (DESC "Dorm B")
+      (LDESC
+"This is a very long room lined with multi-tiered bunks. Flimsy partitions
+between the tiers may have provided a modicum of privacy. These spartan
+living quarters could have once housed many hundreds, but it seems quite
+deserted now. There are openings at the north and south ends of the room.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO REC-CORRIDOR)
+      (NORTH TO SANFAC-B)
+      (FLAGS FLOYDBIT ONBIT RLANDBIT)
+      (GLOBAL BED)
+      (PSEUDO "PARTITION" PARTITION-PSEUDO)>
+
+<ROOM SANFAC-B
+      (IN ROOMS)
+      (DESC "SanFac B")
+      (LDESC
+"This must be the sanitary facility for the adjacent dormitory. The fixtures
+are dry and dusty, the room dead and deserted. You marvel at how little the
+millenia and cultural gulfs have changed toilet bowl design. The only exit is
+south.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO DORM-B)
+      (FLAGS FLOYDBIT ONBIT RLANDBIT)
+      (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)>
+
+<ROOM DORM-C
+      (IN ROOMS)
+      (DESC "Dorm C")
+      (LDESC
+"This is a very long room lined with multi-tiered bunks. Flimsy partitions
+between the tiers may have provided a modicum of privacy. These spartan
+living quarters could have once housed many hundreds, but it seems quite
+deserted now. There are openings at the north and south ends of the room.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO DORM-CORRIDOR)
+      (SOUTH TO SANFAC-C)
+      (FLAGS ONBIT FLOYDBIT RLANDBIT)
+      (GLOBAL BED)
+      (PSEUDO "PARTITION" PARTITION-PSEUDO)>
+
+<ROOM SANFAC-C
+      (IN ROOMS)
+      (DESC "SanFac C")
+      (LDESC
+"This must be the sanitary facility for the adjacent dormitory. The fixtures
+are dry and dusty, the room dead and deserted. You marvel at how little the
+millenia and cultural gulfs have changed toilet bowl design. The only exit is
+north.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO DORM-C)
+      (FLAGS FLOYDBIT ONBIT RLANDBIT)
+      (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)>
+
+<ROOM DORM-D
+      (IN ROOMS)
+      (DESC "Dorm D")
+      (LDESC
+"This is a very long room lined with multi-tiered bunks. Flimsy partitions
+between the tiers may have provided a modicum of privacy. These spartan
+living quarters could have once housed many hundreds, but it seems quite
+deserted now. There are openings at the north and south ends of the room.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO DORM-CORRIDOR)
+      (NORTH TO SANFAC-D)
+      (FLAGS FLOYDBIT ONBIT RLANDBIT)
+      (GLOBAL BED)
+      (PSEUDO "PARTITION" PARTITION-PSEUDO)>
+
+<ROOM SANFAC-D
+      (IN ROOMS)
+      (DESC "SanFac D")
+      (LDESC
+"This must be the sanitary facility for the adjacent dormitory. The fixtures
+are dry and dusty, the room dead and deserted. You marvel at how little the
+millenia and cultural gulfs have changed toilet bowl design. The only exit is
+south.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO DORM-D)
+      (FLAGS ONBIT FLOYDBIT RLANDBIT)
+      (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)>
+
+<ROOM MESS-CORRIDOR
+      (IN ROOMS)
+      (DESC "Mess Corridor")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO MESS-HALL)
+      (NORTH TO STORAGE-WEST IF STORAGE-WEST-DOOR IS OPEN)
+      (EAST TO DORM-CORRIDOR)
+      (WEST TO REC-CORRIDOR)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL STORAGE-WEST-DOOR)
+      (ACTION MESS-CORRIDOR-F)>
+
+<ROUTINE MESS-CORRIDOR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a wide, east-west hallway with a large portal to the south. A
+small door to the north is ">
+               <DDESC ,STORAGE-WEST-DOOR>
+               <COND (<NOT ,PADLOCK-REMOVED>
+                      <TELL " and hooked with a simple steel padlock">
+                      <COND (<FSET? ,PADLOCK ,OPENBIT>
+                             <TELL " which hangs unlocked">)
+                            (T
+                             <TELL " which is also closed">)>)>
+               <TELL "." CR>)>>
+
+<OBJECT STORAGE-WEST-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (FLAGS DOORBIT NDESCBIT)
+       (ACTION STORAGE-WEST-DOOR-F)>
+
+<ROUTINE STORAGE-WEST-DOOR-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,STORAGE-WEST-DOOR ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (,PADLOCK-REMOVED
+                      <FSET ,STORAGE-WEST-DOOR ,OPENBIT>
+                      <TELL "Opened." CR>)
+                     (T
+                      <TELL 
+"The door cannot be opened until the padlock is removed." CR>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,STORAGE-WEST-DOOR ,OPENBIT>
+                      <FCLEAR ,STORAGE-WEST-DOOR ,OPENBIT>
+                      <TELL "The door is now closed." CR>)
+                     (T
+                      <IS-CLOSED>)>)
+              (<VERB? UNLOCK>
+               <TELL "The door itself isn't locked.">
+               <COND (<NOT <FSET? ,PADLOCK ,OPENBIT>>
+                      <TELL
+" It is the padlock on the door which is locked.">)>
+               <TELL CR>)>>
+
+<OBJECT PADLOCK
+       (IN MESS-CORRIDOR)
+       (DESC "padlock")
+       (SYNONYM PADLOCK PAD LOCK)
+       (ADJECTIVE SIMPLE STEEL METAL)
+       (SIZE 10)
+       (FLAGS MUNGBIT NDESCBIT TAKEBIT TRYTAKEBIT)
+       (ACTION PADLOCK-F)>
+
+<GLOBAL PADLOCK-REMOVED <>> ;"is the padlock still on the door?"
+
+<ROUTINE PADLOCK-F ()
+        <COND (<EQUAL? ,HERE ,BRIG>
+               <TELL
+"You can't see or reach the lock from inside the cell." CR>)
+              (<AND <VERB? OPEN-WITH>
+                    <EQUAL? ,PADLOCK ,PRSO>>
+               <PERFORM ,V?UNLOCK ,PADLOCK ,PRSI>
+               <RTRUE>)
+              (<VERB? UNLOCK OPEN>
+               <COND (<NOT <FSET? ,PADLOCK ,OPENBIT>>
+                      <COND (<NOT ,PRSI>
+                             <TELL "You can't open it with your hands." CR>)
+                            (<EQUAL? ,PRSI ,KEY>
+                             <COND (<FSET? ,PADLOCK ,MUNGEDBIT>
+                                    <TELL
+"Tsk, tsk ... the padlock seems to be fused shut." CR>)
+                                   (T
+                                    <FSET ,PADLOCK ,OPENBIT>
+                                    <TELL "The padlock springs open." CR>)>)
+                            (T
+                             <TELL "That doesn't work." CR>)>)
+                     (T
+                      <TELL "The padlock is already unlocked." CR>)>)
+              (<VERB? CLOSE LOCK>
+               <COND (<FSET? ,PADLOCK ,OPENBIT>
+                      <FCLEAR ,PADLOCK ,OPENBIT>
+                      <TELL "The padlock closes with a sharp click." CR>)
+                     (T
+                      <TELL "The padlock is already locked." CR>)>)
+              (<AND <VERB? TAKE>
+                    <NOT ,PADLOCK-REMOVED>>
+               <COND (<FSET? ,PADLOCK ,OPENBIT>
+                      <SETG PADLOCK-REMOVED T>
+                      <FCLEAR ,PADLOCK ,TRYTAKEBIT>
+                      <FCLEAR ,PADLOCK ,NDESCBIT>
+                      <RFALSE>)
+                     (<NOT <FSET? ,PADLOCK ,OPENBIT>>
+                      <TELL "The padlock is locked to the door." CR>)>)
+              (<VERB? MUNG>
+               <TELL
+"And, as we go into the next round, it's Padlock 1, Adventurer 0..." CR>)>>
+
+<ROOM STORAGE-WEST
+      (IN ROOMS)
+      (DESC "Storage West")
+      (LDESC
+"This is a small room obviously intended as a storage area.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO MESS-CORRIDOR IF STORAGE-WEST-DOOR IS OPEN)
+      (OUT TO MESS-CORRIDOR IF STORAGE-WEST-DOOR IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 4)
+      (GLOBAL SHELVES STORAGE-WEST-DOOR)>
+
+<OBJECT CAN
+       (IN STORAGE-WEST)
+       (DESC "tin can")
+       (LDESC 
+"There is a large tin can, labelled \"Spam and Egz,\" sitting here.")
+       (FDESC
+"On a small shelf is a large, unopened tin can. It has a plain white
+label which reads \"Spam and Egz.\"")
+       (SIZE 15)
+       (SYNONYM CAN)
+       (ADJECTIVE LARGE TIN UNOPENED)
+       (FLAGS TAKEBIT)
+       (ACTION CAN-F)>
+
+<ROUTINE CAN-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"This is a rather normal tin can. It is large and is labelled \"Spam
+and Egz.\"" CR>)
+              (<VERB? OPEN>
+               <TELL
+"You certainly can't open it with your hands, and you don't seem to have
+found a can opener yet." CR>)>> 
+
+<OBJECT LADDER
+       (IN STORAGE-WEST)
+       (DESC "ladder")
+       (FDESC
+"A heavy-duty extendable ladder is leaning against the rear wall.")
+       (LDESC
+"There is a large aluminum ladder here.")
+       (SYNONYM LADDER)
+       (ADJECTIVE HEAVY DUTY ALUMINUM LARGE)
+       (SIZE 80)
+       (FLAGS TAKEBIT)
+       (ACTION LADDER-F)>
+
+<GLOBAL LADDER-EXTENDED <>> ;"is the ladder extended?"
+
+<GLOBAL LADDER-FLAG <>> ;"is the ladder spanning the rift?"
+
+<ROUTINE LADDER-F ()
+        <COND (<VERB? TAKE>
+               <COND (,LADDER-EXTENDED
+                      <TELL
+"You can't possibly carry the ladder while it's extended." CR>)>)
+              (<VERB? EXAMINE>
+               <TELL
+"It is a heavy-duty ladder built of sturdy aluminum tubing. It is currently ">
+               <COND (,LADDER-EXTENDED
+                      <TELL
+"extended to its full length of about 8 meters, but could be collapsed to
+a shorter length for easier carrying." CR>)
+                     (T
+                      <TELL
+"collapsed and is around two-and-a-half meters long, but if extended would
+obviously be much longer." CR>)>)
+              (<VERB? OPEN>
+               <COND (,LADDER-EXTENDED
+                      <TELL "The ladder is already extended." CR>)
+                     (<OR <EQUAL? ,HERE ,STORAGE-EAST ,STORAGE-WEST ,BOOTH-2>
+                          <EQUAL? ,HERE ,UPPER-ELEVATOR ,LOWER-ELEVATOR>>
+                      <TELL
+"You can't extend the ladder in this tiny space!" CR>)
+                     (<IN? ,LADDER ,ADVENTURER>
+                      <TELL
+"You couldn't possibly extend the ladder while you're holding it." CR>)
+                     (T
+                      <FSET ,LADDER ,TRYTAKEBIT>
+                      <SETG LADDER-EXTENDED T>
+                      <SETG C-ELAPSED 36>
+                      <TELL
+"The ladder extends to a length of around eight meters." CR>)>)
+              (<VERB? CLOSE>
+               <COND (,LADDER-EXTENDED
+                      <SETG C-ELAPSED 21>
+                      <COND (,LADDER-FLAG
+                             <SETG LADDER-FLAG <>>
+                             <REMOVE ,LADDER>
+                             <TELL
+"As the ladder shortens it plunges into the rift." CR>)
+                            (T
+                             <SETG LADDER-EXTENDED <>>
+                             <FCLEAR ,LADDER ,TRYTAKEBIT>
+                             <TELL
+"The ladder collapses to a length of around two-and-a-half meters." CR>)>)
+                     (T
+                      <TELL
+"The ladder is already in its collapsed state." CR>)>)
+              (<AND <VERB? SPAN ATTRACT>
+                    <EQUAL? ,PRSI ,RIFT>>
+               <COND (,LADDER-FLAG
+                      <TELL "The ladder already spans the rift." CR>)
+                     (T
+                      <COND (,LADDER-EXTENDED
+                             <SETG LADDER-FLAG T>
+                             <FSET ,LADDER ,NDESCBIT>
+                             <TELL
+"The ladder swings out across the rift and comes to rest on the far edge,
+spanning the precipice." CR>)
+                            (T
+                             <REMOVE ,LADDER>
+                             <TELL
+"The ladder, far too short to reach the other edge of the rift, plunges into
+the rift and is lost forever." CR>)>)>)
+              (<VERB? CLIMB-UP CLIMB-FOO>
+               <COND (,LADDER-FLAG
+                      <TELL "You can't climb a horizontal ladder!" CR>)
+                     (<IN? ,LADDER ,ADVENTURER>
+                      <TELL
+"That would be a neat trick, considering that you're holding it." CR>)>)>>
+
+<ROOM DORM-CORRIDOR
+      (IN ROOMS)
+      (DESC "Dorm Corridor")
+      (LDESC
+"This is a wide, east-west hallway with openings to the north and south.
+To the east, the corridor stretches off into the distance. That section of
+the hallway is lined with a motorized walkway (no longer running) that
+was probably intended to transport people or cargo down that tremendously
+long hall.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 160 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO DORM-D)
+      (SOUTH TO DORM-C)
+      (WEST TO MESS-CORRIDOR)
+      (EAST PER LONG-HALL-F)
+      (FLAGS ONBIT RLANDBIT)
+      (PSEUDO "WALKWAY" WALKWAY-PSEUDO)>
+
+<ROOM MESS-HALL
+      (IN ROOMS)
+      (DESC "Mess Hall")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO MESS-CORRIDOR)
+      (OUT TO MESS-CORRIDOR)
+      (SOUTH TO KITCHEN IF KITCHEN-DOOR IS OPEN)
+      (IN TO KITCHEN IF KITCHEN-DOOR IS OPEN)
+      (GLOBAL TABLES KITCHEN-DOOR SLOT)
+      (FLAGS ONBIT FLOYDBIT RLANDBIT)
+      (PSEUDO "BENCH" BENCH-PSEUDO "BENCHE" BENCH-PSEUDO)
+      (ACTION MESS-HALL-F)>
+
+<ROUTINE MESS-HALL-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a large hall lined with tables and benches. An opening to the north
+leads back to the corridor. A door to the south is ">
+               <DDESC ,KITCHEN-DOOR>
+               <TELL ". Next to the door is a small slot." CR>)>>
+
+<OBJECT KITCHEN-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "door")
+       (SYNONYM DOOR)
+       (ADJECTIVE KITCHEN)
+       (FLAGS DOORBIT NDESCBIT)
+       (ACTION KITCHEN-DOOR-F)>
+
+<ROUTINE KITCHEN-DOOR-F ()
+        <COND (<VERB? OPEN>
+               <TELL
+"A light flashes \"Pleez yuuz kitcin akses kard.\"" CR>)>>
+
+<ROOM KITCHEN
+      (IN ROOMS)
+      (DESC "Kitchen")
+      (LDESC
+"This is the food production and dispensary area for the dining hall to the
+north. Of particular interest is a machine near the door. You should probably
+examine it more closely.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO MESS-HALL)
+      (OUT TO MESS-HALL)
+      (GLOBAL KITCHEN-DOOR)
+      (PSEUDO "SPOUT" SPOUT-PSEUDO "BUTTON" BUTTON-PSEUDO)
+      (FLAGS ONBIT RLANDBIT)
+      (VALUE 4)>
+
+<OBJECT DISPENSER
+       (IN KITCHEN)
+       (DESC "dispenser unit")
+       (SYNONYM UNIT NICHE MACHIN DISPEN)
+       (ADJECTIVE DISPEN)
+       (FLAGS MUNGBIT CONTBIT SEARCHBIT OPENBIT TRANSBIT NDESCBIT)
+       (ACTION DISPENSER-F)>
+
+<OBJECT CANTEEN
+       (IN MESS-HALL)
+       (DESC "canteen")
+       (FDESC 
+"Although the room is quite barren, an octagonally-shaped
+canteen is sitting on one of the benches.")
+       (SYNONYM CANTEEN)
+       (ADJECTIVE OCTAGONAL)
+       (CAPACITY 5)
+       (SIZE 10)
+       (FLAGS TAKEBIT CONTBIT SEARCHBIT)>
+
+<ROUTINE DISPENSER-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"This wall-mounted unit contains an octagonal niche beneath a spout. ">
+               <COND (<IN? ,CANTEEN ,DISPENSER>
+                      <TELL
+"A canteen is resting in the niche, its mouth lying just below the spout. ">)>
+               <TELL
+"Above the spout is a button. The machine is labelled \"Hii Prooteen Likwid
+Dispensur.\"" CR>)
+              (<VERB? CLOSE>
+               <NO-CLOSE>
+               <RTRUE>)
+              (<VERB? PUT>
+               <COND (<EQUAL? ,PRSO ,CANTEEN>
+                      <MOVE ,CANTEEN ,DISPENSER>
+                      <TELL "The canteen fits snugly into the octagonal niche,
+its mouth resting just below the spout of the machine." CR>)
+                     (T
+                      <TELL "It doesn't fit in the niche." CR>)>)>>
+
+<OBJECT HIGH-PROTEIN
+       (DESC "quantity of protein-rich liquid")
+       (SYNONYM LIQUID FLUID FOOD QUANTITY)
+       (ADJECTIVE BROWN PROTEIN-RICH)
+       (SIZE 5)
+       (FLAGS FOODBIT)
+       (ACTION HIGH-PROTEIN-F)>
+
+<ROUTINE HIGH-PROTEIN-F ("AUX" (X <>))
+        <COND (<VERB? EAT>
+               <COND (<NOT <IN? ,CANTEEN ,ADVENTURER>>
+                      <SETG PRSO ,CANTEEN>
+                      <NOT-HOLDING>)
+                     (T
+                      <COND (<EQUAL? ,HUNGER-LEVEL 0>
+                             <TELL ,NOT-HUNGRY CR>)
+                            (T
+                             <REMOVE ,HIGH-PROTEIN>
+                             <SETG C-ELAPSED 15>
+                             <SETG HUNGER-LEVEL 0>
+                             <ENABLE <QUEUE I-HUNGER-WARNINGS 3600>>
+                             <TELL
+"Mmmm....that was good. It certainly quenched your thirst and satisfied your
+hunger." CR>)>)>)
+              (<AND <VERB? POUR>
+                    <EQUAL? ,PRSO ,HIGH-PROTEIN>>
+               <COND (<NOT <IN? ,CANTEEN ,ADVENTURER>>
+                      <TELL "Maybe if you were holding the canteen..." CR>
+                      <RTRUE>)
+                     (<NOT ,PRSI>
+                      <SETG PRSI ,GROUND>)>
+               <COND (<EQUAL? ,PRSI ,FLASK>
+                      <WORTHLESS-ACTION>)
+                     (<EQUAL? ,PRSI ,FUNNEL-HOLE>
+                      <COND (<IN? ,CHEMICAL-FLUID ,FLASK>
+                             <SET X T>)>
+                      <SETG CHEMICAL-REQUIRED 10>
+                      <REMOVE ,HIGH-PROTEIN>
+                      <PERFORM ,V?POUR ,CHEMICAL-FLUID ,FUNNEL-HOLE>
+                      <COND (.X
+                             <MOVE ,CHEMICAL-FLUID ,FLASK>)>
+                      <RTRUE>)
+                     (T
+                      <REMOVE ,HIGH-PROTEIN>
+                      <TELL
+"The protein-rich fluid pours over the " D ,PRSI " and then dries up." CR>)>)>>
+
+<ROUTINE WORTHLESS-ACTION ()
+        <TELL
+"A worthless action -- and much too difficult for a poorly-written program
+like this one to handle." CR>>
+
+<ROOM CORRIDOR-JUNCTION
+      (IN ROOMS)
+      (DESC "Corridor Junction")
+      (LDESC
+"A north-south corridor intersects the main corridor here. To the west, the
+main corridor extends as far as you can see; a non-working walkway from
+that direction ends here. To the east, the corridor widens into a well-lit
+area.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 160 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST"  30 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO ADMIN-CORRIDOR-S)
+      (SOUTH TO MECH-CORRIDOR-N)
+      (WEST PER LONG-HALL-F)
+      (EAST TO ELEVATOR-LOBBY)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (PSEUDO "WALKWAY" WALKWAY-PSEUDO)>
+
+<ROUTINE LONG-HALL-F ()
+        <TELL
+"You walk down the long, featureless hallway for a long time. Finally,
+you see ">
+        <SETG C-ELAPSED 160>
+        <COND (<EQUAL? ,HERE ,CORRIDOR-JUNCTION>
+               <TELL "some doorways ahead..." CR CR>
+               ,DORM-CORRIDOR)
+              (T
+               <TELL "an intersection ahead..." CR CR>
+               ,CORRIDOR-JUNCTION)>>
+               
+<ROOM ADMIN-CORRIDOR-S
+      (IN ROOMS)
+      (DESC "Admin Corridor South")
+      (LDESC
+"This section of hallway seems to have suffered some minor structural
+damage. The walls are cracked, and a jagged crevice crosses the floor.
+An opening leads east and the corridor heads north and south.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO CORRIDOR-JUNCTION)
+      (NORTH TO ADMIN-CORRIDOR)
+      (EAST TO SANFAC-E)
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION ADMIN-CORRIDOR-S-F)>
+
+<ROUTINE ADMIN-CORRIDOR-S-F (RARG)
+        <COND (<AND <EQUAL? .RARG ,M-END>
+                    <FSET? ,KEY ,INVISIBLE>
+                    <PROB 20>>
+               <TELL
+"You catch, out of the corner of your eye, a glint of light from the direction
+of the floor." CR>)>>
+
+<OBJECT CREVICE
+       (IN ADMIN-CORRIDOR-S)
+       (DESC "crevice")
+       (SYNONYM CREVICE CRACK HOLE)
+       (ADJECTIVE NARROW JAGGED)
+       (FLAGS NDESCBIT)
+       (ACTION CREVICE-F)>
+
+<ROUTINE CREVICE-F ()
+        <COND (<VERB? REACH>
+               <TELL "The crevice is too narrow to reach into." CR>)
+              (<VERB? LOOK-INSIDE EXAMINE SEARCH>
+               <COND (<FSET? ,KEY ,TOUCHBIT>
+                      <TELL "Nothing there but bunches of dust." CR>)
+                     (T
+                      <FCLEAR ,KEY ,INVISIBLE>
+                      <TELL
+"Lying at the bottom of the narrow crack, partly covered by layers of dust,
+is a shiny steel key!" CR>)>)>>
+
+<OBJECT KEY
+       (IN ADMIN-CORRIDOR-S)
+       (DESC "key")
+       (FDESC "Lying at the bottom of a narrow crevice is a shiny object.")
+       (SIZE 3)
+       (SYNONYM KEY METAL OBJECT)
+       (ADJECTIVE PIECE STEEL IRON SHINY)
+       (FLAGS ACIDBIT TAKEBIT TOOLBIT INVISIBLE TRYTAKEBIT)
+       (ACTION KEY-F)>
+
+<ROUTINE KEY-F ()
+        <COND (<AND <VERB? TAKE ZATTRACT MOVE>
+                    <NOT <FSET? ,KEY ,TOUCHBIT>>>
+               <COND (<EQUAL? ,PRSI ,PLIERS>
+                      <TELL
+"These are heavy-duty pliers, too large to reach into this narrow crack." CR>)
+                     (<EQUAL? ,PRSI ,MAGNET>
+                      <PERFORM ,V?ATTRACT ,MAGNET ,KEY>
+                      <RTRUE>)
+                     (,PRSI
+                      <TELL "Nice try." CR>)
+                     (T
+                      <TELL
+"Either the crevice is too narrow, or your fingers are too large." CR>)>)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,CREVICE>>
+               <TELL
+"And you wonder why you're still only an Ensign Seventh Class?" CR>)>>
+
+<ROOM ADMIN-CORRIDOR
+      (IN ROOMS)
+      (DESC "Admin Corridor") 
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO ADMIN-CORRIDOR-S)
+      (NORTH PER LADDER-EXIT-F)
+      (WEST TO SYSTEMS-MONITORS)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL RIFT)
+      (PSEUDO "RUBBLE" RUBBLE-PSEUDO)
+      (ACTION ADMIN-CORRIDOR-F)>
+
+<ROUTINE ADMIN-CORRIDOR-F (RARG)
+        <COND (<AND ,LADDER-FLAG
+                    <EQUAL? .RARG ,M-ENTER>>
+               <MOVE ,LADDER ,HERE>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <TELL 
+"The hallway, in fact the entire building, has been rent apart here, presumably
+by seismic upheaval. You can see the sky through the severed roof above, and
+the ground is thick with rubble. To the north is a gaping rift, at least eight
+meters across and thirty meters deep. ">
+               <COND (,LADDER-FLAG
+                      <TELL "A metal ladder spans the rift. ">)>
+               <TELL
+"A wide doorway, labelled \"Sistumz Moniturz,\" leads west." CR>)>>
+
+<ROOM ADMIN-CORRIDOR-N
+      (IN ROOMS)
+      (DESC "Admin Corridor North")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH PER LADDER-EXIT-F)
+      (NORTH TO TRANSPORTATION-SUPPLY)
+      (EAST TO PLAN-ROOM)
+      (WEST TO SMALL-OFFICE)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 4)
+      (GLOBAL RIFT)
+      (ACTION ADMIN-CORRIDOR-N-F)>
+
+<ROUTINE ADMIN-CORRIDOR-N-F (RARG)
+        <COND (<AND ,LADDER-FLAG
+                    <EQUAL? .RARG ,M-ENTER>>
+               <MOVE ,LADDER ,HERE>)
+              (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The corridor ends here. Portals lead west, north, and east. Signs above these
+portals read, respectively, \"Administraativ Awfisiz,\" \"Tranzportaashun
+Suplii,\" and \"Plan Ruum.\" To the south is a wide rift">
+               <COND (,LADDER-FLAG
+                      <TELL ", spanned by a metal ladder,">)>
+               <TELL
+" separating this area from the rest of the building." CR>)>>
+
+<ROUTINE LADDER-EXIT-F ()
+        <COND (,LADDER-FLAG
+               <SETG C-ELAPSED 33>
+               <TELL
+"You slowly make your way across the swaying ladder. You can see sharp,
+pointy rocks at the bottom of the rift, far below..." CR CR>
+               <COND (<EQUAL? ,HERE ,ADMIN-CORRIDOR-N>
+                      ,ADMIN-CORRIDOR)
+                     (T
+                      ,ADMIN-CORRIDOR-N)>)
+              (T
+               <TELL "The rift is too wide to jump across." CR>
+               <RFALSE>)>>
+
+<OBJECT RIFT
+       (IN LOCAL-GLOBALS)
+       (DESC "rift")
+       (SYNONYM RIFT GULF PRECIPICE HOLE)
+       (ADJECTIVE WIDE DEEP GAPING)
+       (FLAGS NDESCBIT)
+       (ACTION RIFT-F)>
+
+<ROUTINE RIFT-F ()
+        <COND (<VERB? LEAP>
+               <JIGS-UP
+"You get a brief (but much closer) view of the sharp and nasty rocks at
+the bottom of the rift.">)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,RIFT ,PRSI>>
+               <COND (<EQUAL? ,PRSO ,LASER>
+                             <DISABLE <INT I-WARMTH>>)>
+               <REMOVE ,PRSO>
+               <COND (<EQUAL? ,PRSO ,SCRUB-BRUSH>
+                      <TELL
+"You watch with tremendous satisfaction as the brush is lost forever." CR>)
+                     (T
+                      <TELL
+"The " D, PRSO " sails gracefully into the rift." CR>)>)
+              (<VERB? EXAMINE LOOK-INSIDE>
+               <TELL
+"The rift is at least eight meters wide and more than thirty meters deep. The
+bottom is covered with sharp and nasty rocks." CR>)>>
+
+<ROOM SANFAC-E
+      (IN ROOMS)
+      (DESC "SanFac E")
+      (LDESC
+"Here is another sanitary facility. Like the others, it is dusty and
+non-functional.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO ADMIN-CORRIDOR-S)
+      (OUT TO ADMIN-CORRIDOR-S)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)>
+
+<ROOM SYSTEMS-MONITORS
+      (IN ROOMS)
+      (DESC "Systems Monitors")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO ADMIN-CORRIDOR)
+      (OUT TO ADMIN-CORRIDOR)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (GLOBAL TABLES)
+      (PSEUDO "MONITORS" MONITORS-PSEUDO "EQUIPM" EQUIPMENT-PSEUDO)
+      (ACTION SYSTEMS-MONITORS-F)>
+
+<ROUTINE SYSTEMS-MONITORS-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a large room filled with tables full of strange equipment. ">
+               <DESCRIBE-MONITORS>)>>
+
+<ROUTINE DESCRIBE-MONITORS ()
+        <TELL
+"The far wall is filled with a number of monitors. Of these,
+the ones labelled ">
+        <COND (,DEFENSE-FIXED
+               <TELL "PLANATEREE DEFENS, ">)>
+        <COND (,COURSE-CONTROL-FIXED
+               <TELL "PLANATEREE KORS KUNTROOL, ">)>
+        <COND (,COMM-FIXED
+               <TELL "KUMUUNIKAASHUNZ, ">)>
+        <TELL
+"LIIBREREE, REEAKTURZ, and LIIF SUPORT are green, but the one">
+        <COND (<NOT <AND ,DEFENSE-FIXED
+                         ,COURSE-CONTROL-FIXED
+                         ,COMM-FIXED>>
+               <TELL "s">)>
+        <TELL " labelled ">
+        <COND (<NOT ,DEFENSE-FIXED>
+               <TELL "PLANATEREE DEFENS, ">)>
+        <COND (<NOT ,COURSE-CONTROL-FIXED>
+               <TELL "PLANATEREE KORS KUNTROOL, ">)>
+        <COND (<NOT ,COMM-FIXED>
+               <TELL "KUMUUNIKAASHUNZ, ">)>
+        <COND (<NOT <AND ,DEFENSE-FIXED
+                         ,COURSE-CONTROL-FIXED
+                         ,COMM-FIXED>>
+               <TELL "and ">)>
+        <TELL "PRAJEKT KUNTROOL indicate">
+        <COND (<AND ,DEFENSE-FIXED ,COURSE-CONTROL-FIXED ,COMM-FIXED>
+               <TELL "s">)>
+        <TELL " a malfunctioning condition." CR>>
+
+<ROOM PLAN-ROOM
+      (IN ROOMS)
+      (DESC "Plan Room")
+      (LDESC
+"This is a small room whose far wall is covered with many small cubbyholes,
+all empty. The left wall is covered with an enormous map, labelled
+\"Kalamontee Kompleks\", showing two installations connected by a long
+hallway. Near the upper part of this map is a red arrow saying \"Yuu ar
+heer.\" The right wall is covered with a similar map, labelled \"Lawanda
+Kompleks\", showing two installations, one apparently buried deep
+underground.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO ADMIN-CORRIDOR-N)
+      (FLAGS RLANDBIT ONBIT FLOYDBIT)
+      (PSEUDO "CUBBYHOLE" CUBBYHOLE-PSEUDO "MAPS" MAPS-PSEUDO)>
+
+<ROOM TRANSPORTATION-SUPPLY
+      (IN ROOMS)
+      (DESC "Transportation Supply")
+      (LDESC "You have just located a serious bug.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO ADMIN-CORRIDOR-N)
+      (NORTH TO TRANSPORTATION-SUPPLY)
+      (EAST TO TRANSPORTATION-SUPPLY)
+      (WEST TO TRANSPORTATION-SUPPLY)
+      (OUT TO ADMIN-CORRIDOR-N)
+      (FLAGS RLANDBIT)>
+
+<ROOM SMALL-OFFICE
+      (IN ROOMS)
+      (DESC "Small Office")
+      (LDESC
+"You have entered a small office of some sort. A small desk faces the main
+doorway which lies to the east. Another exit leads west.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO ADMIN-CORRIDOR-N)
+      (WEST TO LARGE-OFFICE)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)>
+
+<OBJECT SMALL-DESK
+       (IN SMALL-OFFICE)
+       (DESC "small desk")
+       (SYNONYM DESK DRAWER)
+       (ADJECTIVE SMALL)
+       (CAPACITY 10)
+       (FLAGS NDESCBIT CONTBIT SEARCHBIT)
+       (ACTION DESK-F)>
+
+<OBJECT KITCHEN-CARD
+       (IN SMALL-DESK)
+       (DESC "kitchen access card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE KITCHEN ACCESS)
+       (SIZE 3)
+       (FLAGS TAKEBIT READBIT)
+        (TEXT "The card is embossed \"kitcin akses kard.\"")
+       (VALUE 1)>
+
+<OBJECT UPPER-ELEVATOR-CARD
+       (IN SMALL-DESK)
+       (DESC "upper elevator access card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE UPPER ELEVATOR ACCESS)
+       (SIZE 3)
+       (FLAGS VOWELBIT TAKEBIT READBIT)
+       (TEXT "The card is embossed \"upur elivaatur akses kard.\"")
+       (VALUE 1)>
+
+<OBJECT SHUTTLE-CARD
+       (IN LARGE-DESK)
+       (DESC "shuttle access card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE SHUTTL ACCESS)
+       (SIZE 3)
+       (FLAGS TAKEBIT READBIT)
+       (TEXT "The card is embossed \"shutul akses kard.\"")
+       (VALUE 1)>
+
+<OBJECT LOWER-ELEVATOR-CARD
+       (DESC "lower elevator access card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE LOWER ELEVATOR ACCESS)
+       (SIZE 3)
+       (FLAGS TAKEBIT READBIT)
+       (TEXT "The card is embossed \"loowur elivaatur akses kard.\"")
+       (VALUE 1)>
+
+<ROOM LARGE-OFFICE
+      (IN ROOMS)
+      (DESC "Large Office")
+      (LDESC
+"This is a large, plush office. The far wall is one large picture window,
+scratched but unbroken, offering a view of this installation and the ocean
+beyond. In front of the window is a wide wooden desk. The only exit is east.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO SMALL-OFFICE)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (GLOBAL WINDOW OCEAN)>
+
+<OBJECT LARGE-DESK
+       (IN LARGE-OFFICE)
+       (DESC "large desk")
+       (SYNONYM DESK DRAWER)
+       (ADJECTIVE LARGE WIDE WOODEN)
+       (CAPACITY 20)
+       (FLAGS CONTBIT SEARCHBIT NDESCBIT)
+       (ACTION DESK-F)>
+
+<ROUTINE DESK-F ()
+        <COND (<VERB? SEARCH EXAMINE>
+               <TELL "The desk has a drawer which is currently ">
+               <DDESC ,PRSO>
+               <TELL "." CR>)>>
+
+<ROOM MECH-CORRIDOR-N
+      (IN ROOMS)
+      (DESC "Mech Corridor North")
+      (LDESC
+"Entrances to rooms lie to the east and west from this north-south hall.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO STORAGE-EAST)
+      (WEST TO PHYSICAL-PLANT)
+      (NORTH TO CORRIDOR-JUNCTION)
+      (SOUTH TO MECH-CORRIDOR)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM MECH-CORRIDOR
+      (IN ROOMS)
+      (DESC "Mech Corridor")
+      (LDESC
+"Entrances to rooms lie to the east and west from this north-south hall.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO REACTOR-CONTROL)
+      (WEST TO PHYSICAL-PLANT)
+      (NORTH TO MECH-CORRIDOR-N)
+      (SOUTH TO MECH-CORRIDOR-S)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM MECH-CORRIDOR-S
+      (IN ROOMS)
+      (DESC "Mech Corridor South")
+      (LDESC
+"The corridor ends here with doorways to the southwest, south, and southeast.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"  25  ;"SOUTH"  0 
+        ;"SE" 25 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO MECH-CORRIDOR)
+      (SW TO TOOL-ROOM)
+      (SOUTH TO MACHINE-SHOP)
+      (SE TO ROBOT-SHOP)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM STORAGE-EAST
+      (IN ROOMS)
+      (DESC "Storage East")
+      (LDESC
+"A small room for storage. The exit is to the west.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO MECH-CORRIDOR-N)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL SHELVES)>
+
+<OBJECT OIL-CAN
+       (IN STORAGE-EAST)
+       (DESC "oil can")
+       (FDESC
+"One dusty shelf, otherwise bare, holds a small oil can.")
+       (SYNONYM CAN)
+       (ADJECTIVE SMALL OIL)
+       (SIZE 10)
+       (FLAGS VOWELBIT TAKEBIT)
+       (ACTION OIL-CAN-F)>
+
+<ROUTINE OIL-CAN-F ()
+        <COND (<VERB? POUR>
+               <COND (<NOT ,PRSI>
+                      <SETG PRSI ,GROUND>)>
+               <PERFORM ,V?OIL ,PRSI>
+               <RTRUE>)
+              (<VERB? EMPTY>
+               <TELL
+"Pretty much impossible -- you could only do that one drop at a time." CR>)>>
+
+<OBJECT CARTON
+       (IN STORAGE-EAST)
+       (DESC "cardboard box")
+       (FDESC
+"On the floor beneath the shelves sits a small cardboard box.")
+       (SYNONYM BOX CARTON)
+       (ADJECTIVE SMALL CARDBOARD)
+       (SIZE 10)
+       (CAPACITY 50)
+       (FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT)
+       (ACTION CARTON-F)>
+
+<ROUTINE CARTON-F ()
+        <COND (<VERB? CLOSE>
+               <NO-CLOSE>
+               <RTRUE>)>>
+
+<OBJECT CRACKED-BOARD
+       (IN CARTON)
+       (DESC "cracked seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE CRACKED SEVENTEEN CENTIMETER FROMITZ)
+       (SIZE 10)
+       (FLAGS ACIDBIT TAKEBIT)
+       (ACTION CRACKED-BOARD-F)>
+
+<ROUTINE CRACKED-BOARD-F ()
+        <COND (<VERB? EXAMINE>
+               <EXAMINE-BOARD>
+               <TELL " This one looks as though it's been dropped." CR>)>>
+
+<OBJECT MEGAFUSE-B
+       (IN CARTON)
+       (DESC "B-series megafuse")
+       (SYNONYM FUSE MEGAFUSE)
+       (ADJECTIVE B-SERIES B SERIES MEGA)
+       (SIZE 5)
+       (FLAGS ACIDBIT TAKEBIT)>
+
+<OBJECT MEGAFUSE-K
+       (IN CARTON)
+       (DESC "K-series megafuse")
+       (SYNONYM FUSE MEGAFUSE)
+       (ADJECTIVE K-SERIES K SERIES MEGA)
+       (SIZE 5)
+       (FLAGS ACIDBIT TAKEBIT)>
+
+<OBJECT GOOD-BEDISTOR
+       (IN CARTON)
+       (DESC "good ninety-ohm bedistor")
+       (SYNONYM BEDISTOR)
+       (ADJECTIVE GOOD NINETY OHM)
+       (SIZE 8)
+       (FLAGS ACIDBIT TAKEBIT)
+       (ACTION GOOD-BEDISTOR-F)>
+
+<ROUTINE GOOD-BEDISTOR-F ()
+        <COND (<AND <VERB? TAKE>
+                    ,COURSE-CONTROL-FIXED>
+               <JIGS-UP
+"Kerzap!! You should know better than to touch an active bedistor!">)>>
+
+<ROOM PHYSICAL-PLANT
+      (IN ROOMS)
+      (DESC "Physical Plant")
+      (LDESC
+"This is a huge, dim room with exits in the northeast and southeast
+corners. The room is criss-crossed with catwalks and is filled with
+heavy equipment presumably intended to heat and ventilate this complex.
+Hardly any of the equipment is still operating.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NE TO MECH-CORRIDOR-N)
+      (SE TO MECH-CORRIDOR)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (PSEUDO "EQUIPM" EQUIPMENT-PSEUDO "CATWALK" CATWALK-PSEUDO)>
+
+<ROOM REACTOR-CONTROL
+      (IN ROOMS)
+      (DESC "Reactor Control")
+      (LDESC
+"This room contains many dials and gauges for controlling a massive planetary
+power reactor which, according to a diagram on the wall, must be buried far
+below this very complex. The exit is to the west. To the east is a metal door,
+and next to it, a button. A dark stairway winds downward.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"20  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO MECH-CORRIDOR)
+      (EAST TO REACTOR-ELEVATOR IF REACTOR-ELEVATOR-DOOR IS OPEN)
+      (IN TO REACTOR-ELEVATOR IF REACTOR-ELEVATOR-DOOR IS OPEN)
+      (DOWN TO REACTOR-ACCESS-STAIRS)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (PSEUDO "BUTTON" REACTOR-BUTTON-PSEUDO "DIAGRAM" DIAGRAM-PSEUDO)
+      (GLOBAL CONTROLS STAIRS REACTOR-ELEVATOR-DOOR)>
+
+<ROOM REACTOR-ACCESS-STAIRS
+      (IN ROOMS)
+      (DESC "Reactor Access Stairs")
+      (LDESC "You have just located a serious bug.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN TO REACTOR-ACCESS-STAIRS)
+      (UP TO REACTOR-CONTROL)
+      (FLAGS RLANDBIT)
+      (GLOBAL STAIRS)> 
+
+<OBJECT REACTOR-ELEVATOR-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "reactor elevator door")
+       (SYNONYM DOOR)
+       (ADJECTIVE REACTOR ELEVATOR)
+       (FLAGS DOORBIT)
+       (ACTION REACTOR-ELEVATOR-DOOR-F)>
+
+<ROUTINE REACTOR-ELEVATOR-DOOR-F ()
+        <COND (<VERB? OPEN CLOSE>
+               <TELL "It won't budge." CR>)>>
+
+<ROUTINE I-REACTOR-DOOR-CLOSE ()
+        <ENABLE <QUEUE I-REACTOR-DOOR-CLOSE -1>>
+        <COND (<NOT <EQUAL? ,HERE ,REACTOR-ELEVATOR>>
+               <FCLEAR ,REACTOR-ELEVATOR-DOOR ,OPENBIT>
+               <COND (<EQUAL? ,HERE ,REACTOR-CONTROL>
+                      <TELL CR "The elevator door slides shut." CR>)>
+               <DISABLE <INT I-REACTOR-DOOR-CLOSE>>)>>
+
+<ROOM REACTOR-ELEVATOR
+      (IN ROOMS)
+      (DESC "Reactor Elevator")
+      (LDESC
+"This is an elevator with a door to the west, currently open. A control panel
+contains an Up button, a Down button, and a small slot.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO REACTOR-CONTROL)
+      (OUT TO REACTOR-CONTROL)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL REACTOR-ELEVATOR-DOOR SLOT ELEVATOR-BUTTON CONTROLS)> 
+
+<ROOM TOOL-ROOM
+      (IN ROOMS)
+      (DESC "Tool Room")
+      (LDESC
+"This is apparently a storage room for tools. Exits lead northeast and east.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"  25  ;"NORTH"  0>)
+      (NE TO MECH-CORRIDOR-S)
+      (EAST TO MACHINE-SHOP)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL SHELVES)>
+
+;"LASER stuff has been moved to COMPTWO with the inside-the-computer stuff"
+
+<OBJECT FLASK
+       (IN TOOL-ROOM)
+       (DESC "glass flask")
+       (FDESC
+"Sitting on the floor below the lowest shelf is a large glass flask.")
+       (SYNONYM FLASK)
+       (ADJECTIVE GLASS LARGE PLASTIC)
+       (SIZE 10)
+       (CAPACITY 2)
+       (FLAGS CONTBIT SEARCHBIT OPENBIT TAKEBIT)
+       (ACTION FLASK-F)>
+
+<ROUTINE FLASK-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The flask has a wide mouth and looks large enough to hold one or two liters.
+It is made of glass, or perhaps some tough plastic">
+               <COND (<IN? ,CHEMICAL-FLUID ,FLASK>
+                      <TELL ", and is filled with a milky white fluid">)>
+               <TELL "." CR>)
+              (<VERB? CLOSE>
+               <NO-CLOSE>
+               <RTRUE>)
+              (<AND <VERB? EMPTY>
+                    <IN? ,CHEMICAL-FLUID ,FLASK>
+                    <EQUAL?  ,PRSI ,FUNNEL-HOLE>>
+               <PERFORM ,V?POUR ,CHEMICAL-FLUID ,FUNNEL-HOLE>
+               <RTRUE>)>>
+
+<OBJECT MAGNET
+       (IN TOOL-ROOM)
+       (SIZE 10)
+       (DESC "curved metal bar")
+       (FDESC "On an upper shelf is a metal bar, curved into a U-shape.")
+       (SYNONYM MAGNET BAR)
+       (ADJECTIVE CURVED METAL HORSESHOE)
+       (FLAGS TRYTAKEBIT TAKEBIT)
+       (ACTION MAGNET-F)>
+
+<ROUTINE MAGNET-F ()
+        <COND (<VERB? TAKE>
+               <ENABLE <QUEUE I-MAGNET -1>>
+               <RFALSE>)
+              (<VERB? ATTRACT PUT-ON>
+               <COND (<AND <EQUAL? ,PRSO ,MAGNET>
+                           <NOT <IN? ,MAGNET ,ADVENTURER>>>
+                      <NOT-HOLDING>)
+                     (<AND <FSET? ,KEY ,TOUCHBIT>
+                           <EQUAL? ,PRSI ,KEY>>
+                      <MOVE ,KEY ,ADVENTURER>
+                      <TELL
+"The key jumps against the ends of the magnet and sticks there. Proud of your
+feat, you remove the key from the magnet." CR>)
+                     (<AND <NOT <FSET? ,KEY ,TOUCHBIT>>
+                           <EQUAL? ,PRSI ,KEY ,CREVICE>>
+                      <MOVE ,KEY ,ADVENTURER>
+                      <FCLEAR ,KEY ,INVISIBLE>
+                      <FCLEAR ,KEY ,TRYTAKEBIT>
+                      <FSET ,KEY ,TOUCHBIT>
+                      <TELL 
+"With a spray of dust and a loud clank, a piece of metal leaps from the
+crevice and affixes itself to the magnet. It is a steel key! With a tug,
+you remove the key from the magnet." CR>)>)>>
+
+<ROUTINE I-MAGNET ()
+        <COND (<IN? ,MAGNET ,ADVENTURER>
+               <COND (<HELD? ,KITCHEN-CARD>
+                      <FSET ,KITCHEN-CARD ,SCRAMBLEDBIT>)
+                     (<HELD? ,SHUTTLE-CARD>
+                      <FSET ,SHUTTLE-CARD ,SCRAMBLEDBIT>)
+                     (<HELD? ,TELEPORTATION-CARD>
+                      <FSET ,TELEPORTATION-CARD ,SCRAMBLEDBIT>)
+                     (<HELD? ,UPPER-ELEVATOR-CARD>
+                      <FSET ,UPPER-ELEVATOR-CARD ,SCRAMBLEDBIT>)
+                     (<HELD? ,LOWER-ELEVATOR-CARD>
+                      <FSET ,LOWER-ELEVATOR-CARD ,SCRAMBLEDBIT>)
+                     (<HELD? ,MINI-CARD>
+                      <FSET ,MINI-CARD ,SCRAMBLEDBIT>)
+                     (<HELD? ,ID-CARD>
+                      <FSET ,ID-CARD ,SCRAMBLEDBIT>)>)
+              (T
+               <DISABLE <INT I-MAGNET>>)>
+        <RFALSE>>
+
+<OBJECT PLIERS
+       (IN TOOL-ROOM)
+       (DESC "pair of wide-nosed pliers")
+       (SYNONYM PAIR PLIERS)
+       (ADJECTIVE WIDE-NOSED WIDE NOSED)
+       (SIZE 15)
+       (FLAGS TAKEBIT)>
+
+<ROOM MACHINE-SHOP
+      (IN ROOMS)
+      (DESC "Machine Shop")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO MECH-CORRIDOR-S)
+      (EAST TO ROBOT-SHOP)
+      (WEST TO TOOL-ROOM)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (PSEUDO "SPOUT" CHEM-SPOUT-PSEUDO)
+      (ACTION MACHINE-SHOP-F)>
+
+<ROUTINE MACHINE-SHOP-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This room is probably some sort of machine shop filled with a variety
+of unusual machines. Doorways lead north, east, and west.|
+|
+Standing against the rear wall is a large dispensing machine with a
+spout. ">
+               <COND (<NOT <EQUAL? ,SPOUT-PLACED ,GROUND>>
+                      <TELL
+"Sitting under the spout is ">
+                      <COND (<FSET? ,SPOUT-PLACED ,VOWELBIT>
+                             <TELL "an ">)
+                            (T
+                             <TELL "a ">)>
+                      <TELL D ,SPOUT-PLACED". ">)>
+               <TELL
+"The dispenser is lined with brightly-colored buttons. The first four
+buttons, labelled \"KUULINTS 1 - 4\", are colored red, blue, green, and
+yellow. The next three buttons, labelled \"KATALISTS 1 - 3\", are colored
+gray, brown, and black. The last two buttons are both white. One of
+these is square and says \"BAAS.\" The other white button is round and
+says \"ASID.\"" CR>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <EQUAL? ,SPOUT-PLACED ,GROUND>
+                    <IN? ,FLOYD ,HERE>
+                    <FSET? ,FLOYD ,RLANDBIT>
+                    <PROB 15>>
+               <SETG FLOYD-SPOKE T>
+               <TELL
+"Floyd pushes one of the dispenser buttons. Fluid pours from the spout and
+splashes across the floor. Floyd jumps up and down, giggling." CR>)>>
+
+;<OBJECT DIGGER
+       (IN MACHINE-SHOP)
+       (DESC "wheelbarrow-like machine")
+       (FDESC
+"In the far corner is an odd machine, somewhat reminiscent of a wheelbarrow.")
+       (SYNONYM WHEELBARROW MACHINE DIGGER)
+       (ADJECTIVE ODD)>
+
+<OBJECT CHEMICAL-DISPENSER
+       (IN MACHINE-SHOP)
+       (DESC "chemical dispenser")
+       (SYNONYM DISPEN MACHIN)
+       (ADJECTIVE DISPEN LARGE CHEMICAL)
+       (FLAGS MUNGBIT NDESCBIT)
+       (ACTION CHEMICAL-DISPENSER-F)>
+
+<GLOBAL SPOUT-PLACED <>>
+
+<ROUTINE CHEMICAL-DISPENSER-F ()
+        <COND (<AND <VERB? PUT-UNDER>
+                    <EQUAL? ,PRSI ,CHEMICAL-DISPENSER>>
+               <COND (<EQUAL? ,SPOUT-PLACED ,GROUND>
+                      <MOVE ,PRSO ,HERE>
+                      <TELL
+"The " D ,PRSO " is now sitting under the spout." CR>
+                      <SETG SPOUT-PLACED ,PRSO>)
+                     (T
+                      <TELL
+"The " D ,SPOUT-PLACED " is already resting under the spout." CR>)>)>>
+
+<OBJECT RED-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "red button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE RED)
+       (FLAGS NDESCBIT)
+       (C-MOVE 1)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT BLUE-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "blue button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE BLUE)
+       (FLAGS NDESCBIT)
+       (C-MOVE 2)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT GREEN-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "green button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE GREEN)
+       (FLAGS NDESCBIT)
+       (C-MOVE 3)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT YELLOW-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "yellow button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE YELLOW)
+       (FLAGS NDESCBIT)
+       (C-MOVE 4)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT GRAY-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "gray button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE GRAY GREY)
+       (FLAGS NDESCBIT)
+       (C-MOVE 5)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT BROWN-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "brown button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE BROWN)
+       (FLAGS NDESCBIT)
+       (C-MOVE 6)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT BLACK-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "black button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE BLACK)
+       (FLAGS NDESCBIT)
+       (C-MOVE 7)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT ROUND-WHITE-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "round white button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE WHITE ROUND)
+       (FLAGS NDESCBIT)
+       (C-MOVE 8)
+       (ACTION CHEM-BUTTON-F)>
+
+<OBJECT SQUARE-WHITE-BUTTON
+       (IN MACHINE-SHOP)
+       (DESC "square white button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE SQUARE WHITE)
+       (FLAGS NDESCBIT)
+       (C-MOVE 9)
+       (ACTION CHEM-BUTTON-F)>
+
+<GLOBAL CHEMICAL-FLAG 0>
+
+<GLOBAL COLOR-LTBL
+        <PLTABLE
+         "red"
+         "blue"
+         "green"
+         "yellow"
+         "gray"
+         "brown"
+         "black"
+         "clear"
+         "clear">>
+
+<ROUTINE CHEM-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (<FSET? ,CHEMICAL-DISPENSER ,MUNGEDBIT>
+                      <TELL
+"The machine coughs a few times, but nothing else happens." CR>)
+                     (<EQUAL? ,SPOUT-PLACED ,FLASK>
+                      <COND (<IN? ,CHEMICAL-FLUID ,FLASK>
+                             <TELL
+"Another dose of the chemical fluid pours out of the spout, splashes over
+the already-full flask, spills onto the floor, and dries up." CR>)
+                            (T
+                             <MOVE ,CHEMICAL-FLUID ,FLASK>
+                             <TELL "The flask fills with some ">
+                             <SETG CHEMICAL-FLAG <GETP ,PRSO ,P?C-MOVE>>
+                             <TELL <GET ,COLOR-LTBL <GETP ,PRSO ,P?C-MOVE>>>
+                             <TELL
+" chemical fluid. The fluid gradually turns milky white." CR>)>)
+                     (<AND <EQUAL? ,SPOUT-PLACED ,CANTEEN>
+                           <FSET? ,CANTEEN ,OPENBIT>>
+                      <TELL
+"Chemical fluid gushes from the spout. Unfortunately, the mouth of the canteen
+is very narrow, and the fluid just splashes over it." CR>)
+                     (T
+                      <TELL
+"Some sort of chemical fluid pours out of the spout, spills all over the "
+D ,SPOUT-PLACED ", and dries up." CR>
+                      <COND (<AND <EQUAL? ,PRSO ,ROUND-WHITE-BUTTON
+                                                ,SQUARE-WHITE-BUTTON>
+                                  <OR <FSET? ,SPOUT-PLACED ,ACIDBIT>
+                                      <FSET? ,SPOUT-PLACED ,MUNGBIT>>>
+                             <SETG CHEMICAL-FLAG 9>
+                             <PERFORM ,V?POUR ,CHEMICAL-FLUID ,SPOUT-PLACED>
+                             <RTRUE>)>
+                      <RTRUE>)>)>>
+
+<ROOM ROBOT-SHOP
+      (IN ROOMS)
+      (DESC "Robot Shop")
+      (LDESC
+"This room, with exits west and northwest, is filled with robot-like
+devices of every conceivable description, all in various states of
+disassembly.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW" 25 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO MACHINE-SHOP)
+      (NW TO MECH-CORRIDOR-S)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (PSEUDO "DEVICE" DEVICES-PSEUDO)>
+
+<OBJECT FLOYD
+       (IN ROBOT-SHOP)
+       (DESC "multiple purpose robot")
+       (FDESC
+"Only one robot, about four feet high, looks even remotely close to being
+in working order.")
+       (SYNONYM FLOYD COMPAR ROBOT COMPAN)
+       (ADJECTIVE MULTIP PURPOS DIM- DIM WITTED)
+       (FLAGS CONTBIT SEARCHBIT TRANSBIT OPENBIT LIGHTBIT)
+       (CAPACITY 5)
+       (ACTION FLOYD-F)>
+
+<GLOBAL CARD-STOLEN <>> ;"true if you took elev. card from turned-off Floyd"
+
+<ROUTINE FLOYD-F ("AUX" X N)
+        <COND (<EQUAL? ,FLOYD ,WINNER>
+               <SETG FLOYD-SPOKE T>
+               <COND (<AND <VERB? GIVE>
+                           <EQUAL? ,PRSI ,ME>>
+                      <SETG WINNER ,ADVENTURER>
+                      <PERFORM ,V?ASK-FOR ,FLOYD ,PRSO>
+                      <RTRUE>)
+                     (<AND <VERB? SGIVE>
+                           <EQUAL? ,PRSO ,ME>>
+                      <SETG WINNER ,ADVENTURER>
+                      <PERFORM ,V?ASK-FOR ,FLOYD ,PRSI>
+                      <RTRUE>)
+                     (<VERB? WALK>
+                      <COND (<AND <EQUAL? ,HERE ,REPAIR-ROOM>
+                                  <EQUAL? ,PRSO ,P?NORTH ,P?IN>>
+                             <FLOYD-THROUGH-HOLE>)
+                            (<AND <EQUAL? ,HERE ,BIO-LOCK-EAST>
+                                  <EQUAL? ,PRSO ,P?EAST>>
+                             <FLOYD-INTO-LAB>)
+                            (<AND <EQUAL? ,HERE ,RADIATION-LOCK-EAST>
+                                  <EQUAL? ,PRSO ,P?EAST>>
+                             <TELL"\"After you.\"" CR>)
+                            (T
+                             <TELL
+"Floyd looks slightly embarrassed. \"You know me and my sense of direction.\"
+Then he looks up at you with wide, trusting eyes. \"Tell Floyd
+a story?\"" CR>)>
+                      <COND (<FLUSH>
+                             <RFATAL>)>
+                      <RTRUE>)
+                     (<VERB? THROUGH>
+                      <FLOYDS-FAMOUS-DOOR-ROUTINE>
+                      <COND (<FLUSH> <RFATAL>)>
+                      <RTRUE>)
+                     (<AND <VERB? TAKE>
+                           <EQUAL? ,PRSO ,GOOD-BOARD>>
+                      <COND (<NOT <IN? ,GOOD-BOARD ,ROBOT-HOLE>>
+                             <TELL
+"Floyd looks half-bored and half-annoyed. ""Floyd already did that.
+How about some leap-frogger?\"" CR>)
+                            (,BOARD-REPORTED
+                             <MOVE ,GOOD-BOARD ,ADVENTURER>
+                             <FCLEAR ,GOOD-BOARD ,NDESCBIT>
+                             <FSET ,GOOD-BOARD ,TAKEBIT>
+                             <SETG C-ELAPSED 22>
+                             <TELL
+"Floyd shrugs. \"If you say so.\" He vanishes for a few minutes, and returns
+holding the fromitz board. It seems to be in good shape. He tosses it toward
+you, and you just manage to catch it before it smashes." CR>)
+                            (T
+                             <TELL
+"\"Huh?\" asks Floyd. \"What fromitz board?\"" CR>)>)
+                     (<AND <VERB? FOLLOW>
+                           <EQUAL? ,PRSO ,ME>>
+                      <TELL "\"Okay!\"" CR>)
+                     (<VERB? HELLO>
+                      <SETG WINNER ,ADVENTURER>
+                      <PERFORM ,V?HELLO ,FLOYD>
+                      <RTRUE>)
+                     (<VERB? DROP>
+                      <COND (<IN? ,PRSO ,FLOYD>
+                             <COND (<PROB 50>
+                                    <MOVE ,PRSO ,HERE>
+                                    <TELL
+"Floyd shrugs and drops the " D ,PRSO "." CR>)
+                                   (T
+                                    <TELL
+"Floyd clutches the " D ,PRSO " even more tightly. \"Floyd won't,\" he says
+defiantly." CR>)>)
+                            (T
+                             <FLOYD-NOT-HAVE>)>)
+                     (T
+                      <TELL
+"Floyd whines, \"Enough talking! Let's play Hider-and-Seeker.\"" CR>
+                      <RFATAL>)>)
+              (<VERB? CLOSE>
+               <TELL "Huh?" CR>)
+              (<VERB? LOOK-INSIDE REACH>
+               <PERFORM ,V?OPEN ,FLOYD>
+               <RTRUE>)
+              (<FSET? ,FLOYD ,RLANDBIT>
+               <SETG FLOYD-SPOKE T>
+               <COND (<VERB? LAMP-ON>
+                      <TELL "He's already been activated." CR>)
+                     (<VERB? LAMP-OFF>
+                      <FCLEAR ,FLOYD ,RLANDBIT>
+                      <FCLEAR ,FLOYD ,ACTORBIT>
+                      <DISABLE <INT I-FLOYD>>
+                      <TELL
+"Floyd, shocked by this betrayal from his new-found friend, whimpers
+and keels over">
+                      <COND (<FIRST? ,FLOYD>
+                             <TELL
+", dropping what he was carrying." CR>)
+                            (T
+                             <TELL "." CR>)>
+                      <SET X <FIRST? ,FLOYD>>
+                      <REPEAT ()
+                              <COND (.X
+                                     <SET N <NEXT? .X>>
+                                     <MOVE .X ,HERE>
+                                     <SET X .N>)
+                                    (T
+                                     <RETURN>)>>)
+                     (<VERB? EXAMINE>
+                      <TELL
+"From its design, the robot seems to be of the multi-purpose sort. It is
+slightly cross-eyed, and its mechanical mouth forms a lopsided grin." CR>)
+                     (<VERB? KISS>
+                      <TELL 
+"You receive a painful electric shock." CR>)
+                     (<VERB? SCOLD>
+                      <TELL
+"Floyd looks defensive. \"What did Floyd do wrong?\"" CR>)
+                     (<VERB? PLAY-WITH>
+                      <SETG C-ELAPSED 30>
+                      <ENABLE <QUEUE I-FLOYD 1>>
+                      <TELL
+"You play with Floyd for several centichrons until you drop to the floor,
+exhausted. Floyd pokes at you gleefully. \"C'mon! Let's play some more!\"" CR>)
+                     (<VERB? LISTEN>
+                      <TELL "Floyd is babbling about this and that." CR>)
+                     (<AND <VERB? TAKE>
+                           <EQUAL? ,PRSO ,FLOYD>>
+                      <TELL
+"You manage to lift Floyd a few inches off the ground, but he is too heavy
+and you drop him suddenly. Floyd gives a surprised squeal and moves
+a respectable distance away." CR>)
+                     (<VERB? ATTACK MUNG>
+                      <TELL
+"Floyd starts dashing around the room. \"Oh boy oh boy oh boy! I haven't played
+Chase and Tag for years! You be It! Nah, nah!\""CR>)
+                     (<VERB? KICK SHAKE>
+                      <TELL
+"\"Why you do that?\" Floyd whines. \"I think a wire now shaken loose.\"
+He goes off into a corner and sulks." CR>)
+                     (<VERB? HELLO TALK>
+                      <TELL
+"\"Hi!\" Floyd grins and bounces up and down." CR>)
+                     (<VERB? SEARCH SCRUB OPEN>
+                      <TELL
+"Floyd giggles and pushes you away. \"You're tickling Floyd!\" He clutches at
+his side panels, laughing hysterically. Oil drops stream from his eyes." CR>)
+                     (<AND <VERB? GIVE PUT>
+                           <EQUAL? ,FLOYD ,PRSI>>
+                      <COND (<EQUAL? ,PRSO ,LAZARUS-PART>
+                             <REMOVE ,FLOYD>
+                             <SETG FLOYD-FOLLOW <>>
+                             <MOVE ,LAZARUS-PART ,HERE>
+                             <ENABLE <QUEUE I-FLOYD 40>>
+                             <TELL
+"At first, Floyd is all grins because of your gift. Then, he realizes what
+it is, begins weeping, drops the breastplate, and rushes out of the room." CR>)
+                            (<EQUAL? ,PRSO ,RED-GOO ,GREEN-GOO ,BROWN-GOO>
+                             <TELL
+"Floyd looks at the goo. \"Yech! Got any Number Seven Heavy Grease?\"" CR>)
+                            (<OR <FIRST? ,FLOYD>
+                                 <PROB 25>>
+                             <MOVE ,PRSO ,HERE>
+                             <TELL
+"Floyd examines the " D, PRSO ", shrugs, and drops ">
+                             <COND (<EQUAL? ,PRSO ,PLIERS>
+                                    <TELL "them." CR>)
+                                   (T
+                                    <TELL "it." CR>)>)
+                            (T
+                             <MOVE ,PRSO ,FLOYD>
+                             <TELL
+"\"Neat!\" exclaims Floyd. He thanks you profusely." CR>)>)
+                     (<AND <VERB? SHOW>
+                           <EQUAL? ,FLOYD ,PRSI>>
+                      <COND (<AND <EQUAL? ,PRSO ,PRINT-OUT>
+                                  <NOT ,COMPUTER-FLAG>>
+                             <COMPUTER-ACTION>)
+                            (<EQUAL? ,PRSO ,ROBOT-HOLE>
+                             <FLOYD-THROUGH-HOLE>)
+                            (<AND <EQUAL? ,HERE ,REC-AREA>
+                                  <EQUAL? ,PRSO ,PSEUDO-OBJECT>>
+                             <TELL
+"\"Too intellectual for Floyd. Any paddleball sets around?\"" CR>)
+                            (<OR <EQUAL? ,PRSO ,ID-CARD ,SHUTTLE-CARD>
+                                 <EQUAL? ,PRSO ,KITCHEN-CARD
+                                               ,UPPER-ELEVATOR-CARD>>
+                             <TELL
+"Floyd scratches his head. \"Aren't those things usually blue?\"" CR>)
+                            (<AND <EQUAL? ,PRSO ,LOWER-ELEVATOR-CARD>
+                                  <NOT ,CARD-REVEALED>>
+                             <SETG CARD-REVEALED T>
+                             <TELL
+"\"I've got one just like that!\" says Floyd. He looks through several
+of his compartments, then glances at you suspiciously." CR>)
+                            (T
+                             <TELL
+"Floyd looks over the " D, PRSO ". \"Can you play any games with it?\"
+he asks." CR>)>)
+                     (<VERB? RUB>
+                      <TELL "Floyd gives a contented sigh." CR>)
+                     (<VERB? SMELL>
+                      <TELL
+"Floyd smells faintly of ozone and light machine oil." CR>)
+                     (<VERB? ASK-FOR>
+                      <COND (<IN? ,PRSI ,FLOYD>
+                             <MOVE ,PRSI ,ADVENTURER>
+                             <TELL
+"\"Okay,\" says Floyd, handing you the " D, PRSI ", \"but only
+because you're Floyd's best friend.\"" CR>)
+                            (T
+                             <FLOYD-NOT-HAVE>)>)>)
+              (T
+               <COND (<VERB? LAMP-ON>
+                      <COND (,FLOYD-INTRODUCED
+                             <ENABLE <QUEUE I-FLOYD -1>>)
+                            (T
+                             <ENABLE <QUEUE I-FLOYD 25>>
+                             <TELL "Nothing happens." CR>
+                             <COND (<NOT ,FLOYD-SCORE-FLAG>
+                                    <SETG FLOYD-SCORE-FLAG T>
+                                    <SETG SCORE <+ ,SCORE 2>>)>
+                             <RTRUE>)>)
+                     (<VERB? LAMP-OFF>
+                      <TELL "The robot doesn't seem to be on." CR>)
+                     (<VERB? EXAMINE>
+                      <TELL
+"The de-activated robot is leaning against the wall, its head lolling to the
+side. It is short, and seems to be equipped for general-purpose work. It has
+apparently been turned off." CR>)
+                     (<VERB? SEARCH OPEN>
+                      <COND (<AND <NOT ,CARD-REVEALED>
+                                  <NOT ,CARD-STOLEN>>
+                             <FCLEAR ,LOWER-ELEVATOR-CARD ,INVISIBLE>
+                             <MOVE ,LOWER-ELEVATOR-CARD ,ADVENTURER>
+                             <SCORE-OBJ ,LOWER-ELEVATOR-CARD>
+                             <SETG CARD-STOLEN T>
+                             <TELL
+"In one of the robot's compartments you find and take a magnetic-striped card
+embossed \"Loowur Elavaatur Akses Kard.\"" CR>)
+                            (T
+                             <TELL
+"Your search discovers nothing in the robot's compartments except a
+single crayon which you leave where you found it." CR>)>)>)>>
+
+<ROUTINE FLOYDS-FAMOUS-DOOR-ROUTINE ()
+        <COND (<EQUAL? ,PRSO ,ROBOT-HOLE>
+               <FLOYD-THROUGH-HOLE>)
+              (<EQUAL? ,PRSO ,BIO-DOOR-EAST>
+               <FLOYD-INTO-LAB>)
+              (<FSET? ,PRSO ,DOORBIT>
+               <TELL "\"You go first,\" says Floyd." CR>)
+              (T
+               <TELL "Floyd scratches his head and looks at you." CR>)>>
+
+<ROUTINE FLUSH ()
+        <COND (,P-CONT
+               <SETG P-CONT <>>
+               <TELL CR
+"Floyd scratches his head and looks at you. \"What else were you saying to
+Floyd? I can't remember.\"" CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE FLOYD-INTO-LAB ()
+        <COND (,FLOYD-WAITING
+               <TELL "\"As soon as you open the door, dummy.\"" CR>)
+              (T
+               <TELL
+"\"Are you kidding? Floyd not going in THERE without a good reason.\"" CR>)>>
+
+<ROUTINE FLOYD-NOT-HAVE ()
+        <TELL "\"Floyd does not one of those have!\"" CR>>
+
+<GLOBAL FLOYD-SCORE-FLAG <>>
+
+<GLOBAL FLOYD-SPOKE <>> ;"so Floyd doesn't do two things on the same turn"
+
+<GLOBAL FLOYD-FOLLOW <>> ;"checks if Floyd was in room where you just were"
+
+<GLOBAL FLOYD-REACTIVATED <>> ;"checks if Floyd has been turned on before"
+
+<GLOBAL FLOYD-INTRODUCED <>> ;"checks if Floyd has met you before"
+
+<ROUTINE FLOYD-COMES-ALIVE ("AUX" FOO)
+        <COND (<IN? ,FLOYD ,HERE>
+               <COND (,FLOYD-REACTIVATED
+                      <SETG FLOYD-SPOKE T>
+                      <TELL
+"Floyd jumps to his feet, hopping mad. \"Why you turn Floyd off?\" he
+asks accusingly." CR>)
+                     (T
+                      <SETG FLOYD-INTRODUCED T>
+                      <SETG FLOYD-SPOKE T>
+                      <TELL 
+"Suddenly, the robot comes to life and its head starts swivelling about.
+It notices you and bounds over. \"Hi! I'm B-19-7, but to everyperson I'm
+called Floyd. Are you a doctor-person or a planner-person? ">
+                      <COND (<SET FOO <FIRST? ,ADVENTURER>>
+                             <TELL
+"That's a nice " D .FOO " you are having there. ">)>
+                      <TELL
+"Let's play Hider-and-Seeker you with me.\"" CR>)>)>
+        <FSET ,FLOYD ,RLANDBIT>
+        <FSET ,FLOYD ,ACTORBIT>
+        <FSET ,FLOYD ,TOUCHBIT>
+        <SETG FLOYD-REACTIVATED T>>
+
+<ROUTINE I-FLOYD ()
+        <ENABLE <QUEUE I-FLOYD -1>>
+        <COND (<NOT <FSET? ,FLOYD ,RLANDBIT>>
+               <FSET ,FLOYD ,ACTORBIT>
+               <CRLF>
+               <FLOYD-COMES-ALIVE>)
+              (<IN? ,FLOYD ,HERE>
+               <COND (<NOT ,FLOYD-INTRODUCED>
+                      <SETG FLOYD-INTRODUCED T>
+                      <TELL CR
+"The robot, now apparently active, notices you enter. \"Hi,\"
+he says. \"I'm Floyd!\"" CR>)
+                     (<AND ,FLOYD-FOLLOW
+                           <FSET? ,HERE ,FLOYDBIT>
+                           <PROB 6>>
+                      <REMOVE ,FLOYD>
+                      <SETG FLOYD-FOLLOW <>>
+                      <TELL CR
+"Floyd says \"Floyd going exploring. See you later.\"
+He glides out of the room." CR>)
+                     (T
+                      <SETG FLOYD-FOLLOW T>
+                      <COND (<AND <PROB 40>
+                                  <NOT ,FLOYD-SPOKE>>
+                             <TELL "Floyd ">
+                             <TELL <PICK-ONE ,FLOYDISMS>>
+                             <TELL "." CR>
+                             <RTRUE>)>)>)
+              (T       ;"Floyd is active but not present"
+               <COND (<AND ,FLOYD-FOLLOW <PROB 80>>
+                      <COND (<IN? ,LAZARUS-PART ,HERE>
+                             <SETG FLOYD-FOLLOW <>>
+                             <TELL CR
+"Floyd starts to follow you but notices the Lazarus breast plate.
+He sniffs and leaves the room." CR>
+                             <RTRUE>)>
+                      <MOVE ,FLOYD ,HERE>
+                      <TELL "Floyd follows you." CR>
+                      <KLUDGE>)
+                     (T
+                      <SETG FLOYD-FOLLOW <>>
+                      <COND (<EQUAL? ,HERE ,BOOTH-1 ,BOOTH-2 ,BOOTH-3>
+                             <MOVE ,FLOYD ,HERE>
+                             <COND (<NOT ,FLOYD-INTRODUCED>
+                                    <CRLF>
+                                    <CALL-ME-FLOYD>
+                                    <RTRUE>)>
+                             <TELL CR
+"Floyd scampers into the booth. \"Oooo,
+this is a tiny room,\" he remarks." CR>)
+                            (<OR
+                              <AND <EQUAL? ,HERE ,BIO-LOCK-EAST
+                                                 ,BIO-LOCK-WEST>
+                                   <NOT ,FLOYD-GAVE-UP>>
+                              <EQUAL? ,HERE ,RADIATION-LOCK-EAST
+                                            ,RADIATION-LOCK-WEST>>
+                             <MOVE ,FLOYD ,HERE>
+                             <COND (<NOT ,FLOYD-INTRODUCED>
+                                    <CRLF>
+                                    <CALL-ME-FLOYD>
+                                    <RTRUE>)>
+                             <TELL CR
+"Floyd glides after you. \"Is this...is this a squash court?\" he asks." CR>)
+                            (<OR <EQUAL? ,HERE ,ALFIE-CONTROL-EAST
+                                               ,ALFIE-CONTROL-WEST>
+                                 <EQUAL? ,HERE ,BETTY-CONTROL-EAST
+                                               ,BETTY-CONTROL-WEST>
+                                 <EQUAL? ,HERE ,UPPER-ELEVATOR ,LOWER-ELEVATOR
+                                               ,REACTOR-ELEVATOR>
+                                 <AND <EQUAL? ,HERE ,MESS-HALL>
+                                      <IN? ,FLOYD ,KITCHEN>>>
+                             <MOVE ,FLOYD ,HERE>
+                             <COND (<NOT ,FLOYD-INTRODUCED>
+                                    <CRLF>
+                                    <CALL-ME-FLOYD>
+                                    <RTRUE>)>
+                             <TELL CR "Floyd bounces into the ">
+                             <COND (<EQUAL? ,HERE ,UPPER-ELEVATOR
+                                            ,LOWER-ELEVATOR ,REACTOR-ELEVATOR>
+                                    <TELL "elevator">)
+                                   (<EQUAL? ,HERE ,MESS-HALL>
+                                    <TELL "room">)
+                                   (T
+                                    <TELL "cabin">)>
+                             <TELL
+". \"Hey, wait for Floyd!\" he yells, smiling broadly." CR>)
+                            (<EQUAL? ,HERE ,MINI-BOOTH>
+                             <MOVE ,FLOYD ,HERE>
+                             <COND (<NOT ,FLOYD-INTRODUCED>
+                                    <CRLF>
+                                    <CALL-ME-FLOYD>
+                                    <RTRUE>)>
+                             <TELL CR
+"\"Hi,\" whispers Floyd, tiptoeing in. \"Are we going to teleport into
+the computer like Achilles always used to do?\"" CR>)
+                            (<PROB 30>
+                             <COND (<AND <EQUAL? ,HERE ,INFIRMARY>
+                                         ,LAZARUS-FLAG>
+                                    <RFALSE>)>
+                             <MOVE ,FLOYD ,HERE>
+                             <COND (,FLOYD-INTRODUCED
+                                    <COND (<AND <PROB 15>
+                                                <NOT <IN? ,ADVENTURER ,BED>>>
+                                           <TELL CR
+"Floyd rushes into the room and barrels into you. \"Oops, sorry,\" he says.
+\"Floyd not looking at where he was going to.\"" CR>)
+                                          (T
+                                           <TELL CR
+"Floyd bounds into the room. \"Floyd here now!\" he cries." CR>)>
+                                    <KLUDGE>)
+                                   (T
+                                    <CRLF>
+                                    <CALL-ME-FLOYD>)>)>)>)>
+        <SETG FLOYD-SPOKE <>>>
+
+<ROUTINE CALL-ME-FLOYD ()
+        <SETG FLOYD-INTRODUCED T>
+        <TELL
+"The robot you were fiddling with in the Robot Shop bounds into the room.
+\"Hi!\" he says, with a wide and friendly smile. \"You turn Floyd on?
+Be Floyd's friend, yes?\"" CR>>
+
+<ROUTINE KLUDGE ()
+        <COND (<AND <EQUAL? ,HERE ,REPAIR-ROOM>
+                    <NOT ,ACHILLES-FLAG>>
+               <SETG ACHILLES-FLAG T>
+               <SETG FLOYD-SPOKE T>
+               <TELL
+"Floyd points at the fallen robot. \"That's Achilles. He was in charge of
+repairing machinery. He repaired Floyd once. I never liked him much; he
+wasn't friendly like other robots. Looks like he fell down the stairs.
+He always had trouble with one of his feet working right. A Planner-person
+once told me that's why they named him Achilles.\"" CR>)
+              (<AND <EQUAL? ,HERE ,COMPUTER-ROOM>
+                    <NOT ,COMPUTER-FLAG>>
+               <COMPUTER-ACTION>)>>
+
+<OBJECT DEAD-FLOYD
+       (DESC "mangled robot")
+       (LDESC
+"Your former companion, Floyd, is lying on the ground in a pool of oil.")
+       (SYNONYM FLOYD ROBOT COMPAN)
+       (ADJECTIVE MANGLE DEAD FORMER)
+       (ACTION DEAD-FLOYD-F)>
+
+<ROUTINE DEAD-FLOYD-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"You turn to look at Floyd, but a tremendous sense of loss overcomes you, and
+you turn away." CR>)
+              (<VERB? LAMP-ON>
+               <TELL
+"As you touch Floyd's on-off switch, it falls off in your hands." CR>)
+              (<VERB? LAMP-OFF>
+               <TELL
+"I'm afraid that Floyd has already been turned off, permanently, and gone to
+that great robot shop in the sky." CR>)>>
+
+<GLOBAL FLOYDISMS
+       <PLTABLE
+        "paces impatiently"
+        "absent-mindedly recites the first six hundred digits of pi"
+        "lowers his voice and tells you the latest rumors about Dr. Fizpick"
+        "recalls the time he bruised his knee"
+        "chants the death scene from \"Carmen\""
+        "cranes his neck to see what you are doing"
+        "rubs his head affectionately against your shoulder"
+        "asks if you want to play Hucka-Bucka-Beanstalk"
+        "examines himself for signs of rust"
+        "absent-mindedly oils one of his joints"
+        "wanders restlessly around the room"
+        "notices a mouse scurrying by and tries to hide behind you"
+        "sings an ancient ballad, totally out of key"
+        "frets about the possibility of his batteries failing"
+        "reminisces about his friend Lazarus, a medical robot"
+        "relates some fond memories about his robotic friend Lazarus"
+        "whistles tunelessly"
+        "tells you about the time he helped someone sharpen a pencil"
+        "yawns and looks bored"
+        "produces a crayon from one of his compartments and scrawls
+his name on the wall">>
+
+^L
+
+;Elevator department
+
+<ROOM ELEVATOR-LOBBY
+      (IN ROOMS)
+      (DESC "Elevator Lobby")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST"30 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH PER ELEVATOR-ENTER-F)
+      (SOUTH PER ELEVATOR-ENTER-F)
+      (WEST TO CORRIDOR-JUNCTION)
+      (EAST TO BOOTH-2)
+      (IN TO BOOTH-2)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL UPPER-ELEVATOR-DOOR LOWER-ELEVATOR-DOOR)
+      (PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)
+      (ACTION ELEVATOR-LOBBY-F)>
+
+<ROUTINE ELEVATOR-LOBBY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a wide, brightly lit lobby. A blue metal door to the north is ">
+               <COND (<AND <FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,UPPER-ELEVATOR-UP <>>>
+                      <TELL "open">)
+                     (T
+                      <TELL "closed">)>
+               <TELL
+" and a larger red metal door to the south is ">
+               <COND (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,LOWER-ELEVATOR-UP T>>
+                      <COND (<AND <FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                                  <EQUAL? ,UPPER-ELEVATOR-UP <>>>
+                             <TELL "also ">)>
+                      <TELL "open">)
+                     (T
+                      <COND (<OR <NOT <FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>>
+                                 <EQUAL? ,UPPER-ELEVATOR-UP T>>
+                             <TELL "also ">)>
+                      <TELL "closed">)>
+               <TELL
+". Beside the blue door is a blue button, and beside the red door is
+a red button. A corridor leads west. To the east is a small room
+about the size of a telephone booth." CR>)>>
+
+<ROOM UPPER-ELEVATOR
+      (IN ROOMS)
+      (DESC "Upper Elevator")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (OUT PER ELEVATOR-EXIT-F)
+      (SOUTH PER ELEVATOR-EXIT-F)
+      (UP "You'll have to use the elevator controls.")
+      (DOWN "You'll have to use the elevator controls.")
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL LIGHTS CONTROLS SLOT ELEVATOR-BUTTON UPPER-ELEVATOR-DOOR)
+      (ACTION UPPER-ELEVATOR-F)>
+
+<ROUTINE UPPER-ELEVATOR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"You have entered a tiny room with a sliding door to the south which is ">
+               <DDESC ,UPPER-ELEVATOR-DOOR>
+               <TELL
+". A control panel contains an Up button, a Down button, and a
+narrow slot." CR>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <NOT <FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>>
+                    <PROB 10>>
+               <TELL
+"Some innocuous Hawaiian music oozes from the elevator's intercom." CR>)>>
+
+<ROOM LOWER-ELEVATOR
+       (IN ROOMS)
+       (DESC "Lower Elevator")
+       (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+       (NORTH PER ELEVATOR-EXIT-F)
+       (OUT PER ELEVATOR-EXIT-F)
+       (UP "You'll have to use the elevator controls.")
+       (DOWN "You'll have to use the elevator controls.")
+       (FLAGS RLANDBIT ONBIT)
+       (GLOBAL LIGHTS CONTROLS SLOT ELEVATOR-BUTTON LOWER-ELEVATOR-DOOR)
+       (ACTION LOWER-ELEVATOR-F)>
+
+<ROUTINE LOWER-ELEVATOR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a medium-sized room with a door to the north which is ">
+               <DDESC ,LOWER-ELEVATOR-DOOR>
+               <TELL
+". A control panel contains an Up button, a Down button, and
+a narrow slot." CR>)>>
+
+<ROUTINE ELEVATOR-ENTER-F ()
+        <COND (<EQUAL? ,PRSO ,P?NORTH>
+               <COND (<AND <FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,UPPER-ELEVATOR-UP <>>>
+                      ,UPPER-ELEVATOR)
+                     (T
+                      <DOOR-CLOSED>
+                      <RFALSE>)>)
+              (<EQUAL? ,PRSO ,P?SOUTH>
+               <COND (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,LOWER-ELEVATOR-UP T>>
+                      ,LOWER-ELEVATOR)
+                     (T
+                      <DOOR-CLOSED>
+                      <RFALSE>)>)>>
+
+<ROUTINE ELEVATOR-EXIT-F ()
+        <COND (<EQUAL? ,HERE ,UPPER-ELEVATOR>
+               <COND (<FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>            
+                      <COND (<EQUAL? ,UPPER-ELEVATOR-UP T>
+                             ,TOWER-CORE)
+                            (T
+                             ,ELEVATOR-LOBBY)>)
+                     (T
+                      <DOOR-CLOSED>
+                      <RFALSE>)>)
+              (<EQUAL? ,HERE ,LOWER-ELEVATOR>
+               <COND (<FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>            
+                      <COND (<EQUAL? ,LOWER-ELEVATOR-UP T>
+                             ,ELEVATOR-LOBBY)
+                            (T
+                             ,WAITING-AREA)>)
+                     (T
+                      <DOOR-CLOSED>
+                      <RFALSE>)>)>>
+
+<OBJECT UPPER-ELEVATOR-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "blue door")
+       (SYNONYM DOOR)
+       (ADJECTIVE UPPER ELEVATOR BLUE)
+       (FLAGS NDESCBIT DOORBIT)
+       (ACTION UPPER-ELEVATOR-DOOR-F)>
+
+<ROUTINE UPPER-ELEVATOR-DOOR-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (T
+                      <TELL "It won't budge." CR>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                      <TELL "You can't close it yourself." CR>)
+                     (T
+                      <IS-CLOSED>)>)>>
+
+<OBJECT LOWER-ELEVATOR-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "red door")
+       (SYNONYM DOOR)
+       (ADJECTIVE RED LOWER ELEVATOR)
+       (FLAGS NDESCBIT DOORBIT)
+       (ACTION LOWER-ELEVATOR-DOOR-F)>
+
+<ROUTINE LOWER-ELEVATOR-DOOR-F ()
+        <COND (<VERB? OPEN>
+               <COND (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,HERE ,ELEVATOR-LOBBY>
+                           <EQUAL? ,LOWER-ELEVATOR-UP T>>
+                      <ALREADY-OPEN>)
+                     (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,HERE ,WAITING-AREA>
+                           <EQUAL? ,LOWER-ELEVATOR-UP <>>>
+                      <ALREADY-OPEN>)
+                     (T
+                      <TELL "It won't budge." CR>)>)
+              (<VERB? CLOSE>
+               <COND (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,HERE ,ELEVATOR-LOBBY>
+                           <EQUAL? ,LOWER-ELEVATOR-UP T>>
+                      <TELL "You can't close it yourself." CR>)
+                     (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                           <EQUAL? ,HERE ,WAITING-AREA>
+                           <EQUAL? ,LOWER-ELEVATOR-UP <>>>
+                      <TELL "You can't close it yourself." CR>)
+                     (T
+                      <IS-CLOSED>)>)>>
+
+<ROUTINE DOOR-CLOSED ()
+        <TELL "The door is closed." CR>>
+
+<OBJECT BLUE-ELEVATOR-BUTTON
+       (IN ELEVATOR-LOBBY)
+       (DESC "blue button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE BLUE NORTH)
+       (FLAGS NDESCBIT)
+       (ACTION BLUE-ELEVATOR-BUTTON-F)>
+
+<OBJECT RED-ELEVATOR-BUTTON
+       (IN ELEVATOR-LOBBY)
+       (DESC "red button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE RED SOUTH)
+       (FLAGS NDESCBIT)
+       (ACTION RED-ELEVATOR-BUTTON-F)>
+
+<ROUTINE BLUE-ELEVATOR-BUTTON-F ()
+        <COND (<AND <VERB? PUSH>
+                    <EQUAL? ,UPPER-ELEVATOR-UP T>>
+               <COND (<EQUAL? <GET <INT I-UPPER-ELEVATOR-ARRIVE> ,C-ENABLED?> 1>
+                      <TELL "Patience, patience..." CR>)
+                     (T
+                      <ENABLE<QUEUE I-UPPER-ELEVATOR-ARRIVE<+<RANDOM 20> 40>>>
+                      <TELL
+"You hear a faint whirring noise from behind the blue door." CR>)>)>>
+
+<ROUTINE RED-ELEVATOR-BUTTON-F ()
+        <COND (<AND <VERB? PUSH>
+                    <EQUAL? ,LOWER-ELEVATOR-UP <>>>
+               <COND (<EQUAL? <GET <INT I-LOWER-ELEVATOR-ARRIVE> ,C-ENABLED?> 1>
+                      <TELL "Patience, patience..." CR>)
+                     (T
+                      <ENABLE<QUEUE I-LOWER-ELEVATOR-ARRIVE<+<RANDOM 40> 80>>>
+                      <TELL "The red door begins vibrating a bit." CR>)>)>>
+
+<ROUTINE I-UPPER-ELEVATOR-ARRIVE ()
+        <FSET ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+        <SETG UPPER-ELEVATOR-UP <>>
+        <DISABLE <INT I-UPPER-ELEVATOR-ARRIVE>>
+        <COND (<EQUAL? ,HERE ,ELEVATOR-LOBBY>
+               <TELL CR 
+"The door at the north end of the room slides open." CR>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-LOWER-ELEVATOR-ARRIVE ()
+        <FSET ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+        <SETG LOWER-ELEVATOR-UP T>
+        <DISABLE <INT I-LOWER-ELEVATOR-ARRIVE>>
+        <COND (<EQUAL? ,HERE ,ELEVATOR-LOBBY>
+               <TELL CR
+"The door at the south end of the room slides open." CR>)
+              (T
+               <RFALSE>)>>
+
+<OBJECT ELEVATOR-BUTTON
+       (IN LOCAL-GLOBALS)
+       (DESC "button")
+       (SYNONYM BUTTON)
+       (FLAGS NDESCBIT)
+        (ACTION ELEVATOR-BUTTON-F)>
+
+;"*-ELEVATOR-UP should be <> if elevator is at bottom of shaft and T if
+elevator is at top of shaft"
+
+<GLOBAL LOWER-ELEVATOR-UP <>>
+
+<GLOBAL UPPER-ELEVATOR-UP T>
+
+<GLOBAL ELEVATOR-IN-TRANSIT <>> ;"should be T if elevator is in transit"
+
+<GLOBAL LOWER-ELEVATOR-ON <>> ;"elevator enabled by card in slot?"
+
+<GLOBAL UPPER-ELEVATOR-ON <>> ;"elevator enabled by card in slot?"
+
+<ROUTINE ELEVATOR-BUTTON-F ()
+        <COND (<VERB? PUSH-UP>
+               <COND (<AND <EQUAL? ,HERE ,LOWER-ELEVATOR>
+                           <EQUAL? ,LOWER-ELEVATOR-UP <>>
+                           <EQUAL? ,LOWER-ELEVATOR-ON T>
+                           <EQUAL? ,ELEVATOR-IN-TRANSIT <>>>
+                      <TELL ,ELEVATOR-STARTS CR>
+                      <FCLEAR ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                      <SETG ELEVATOR-IN-TRANSIT T>
+                      <ENABLE <QUEUE I-LOWER-ELEVATOR-TRIP 100>>)
+                     (<AND <EQUAL? ,HERE ,UPPER-ELEVATOR>
+                           <EQUAL? ,UPPER-ELEVATOR-UP <>>
+                           <EQUAL? ,UPPER-ELEVATOR-ON T>
+                           <EQUAL? ,ELEVATOR-IN-TRANSIT <>>>
+                      <TELL ,ELEVATOR-STARTS CR>
+                      <FCLEAR ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                      <SETG ELEVATOR-IN-TRANSIT T>
+                      <ENABLE <QUEUE I-UPPER-ELEVATOR-TRIP 50>>)
+                     (T
+                      <TELL "Nothing happens." CR>)>)
+              (<VERB? PUSH-DOWN>
+               <COND (<AND <EQUAL? ,HERE ,LOWER-ELEVATOR>
+                           <EQUAL? ,LOWER-ELEVATOR-UP T>
+                           <EQUAL? ,LOWER-ELEVATOR-ON T>
+                           <EQUAL? ,ELEVATOR-IN-TRANSIT <>>>
+                      <TELL ,ELEVATOR-STARTS CR>
+                      <FCLEAR ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                      <SETG ELEVATOR-IN-TRANSIT T>
+                      <ENABLE <QUEUE I-LOWER-ELEVATOR-TRIP 100>>)
+                     (<AND <EQUAL? ,HERE ,UPPER-ELEVATOR>
+                           <EQUAL? ,UPPER-ELEVATOR-UP T>
+                           <EQUAL? ,UPPER-ELEVATOR-ON T>
+                           <EQUAL? ,ELEVATOR-IN-TRANSIT <>>>
+                      <TELL ,ELEVATOR-STARTS CR>
+                      <FCLEAR ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+                      <SETG ELEVATOR-IN-TRANSIT T>
+                      <ENABLE <QUEUE I-UPPER-ELEVATOR-TRIP 50>>)
+                     (T
+                      <TELL "Nothing happens." CR>)>)
+              (<VERB? PUSH>
+               <TELL
+"You must specify whether you want to push the Up button or
+the Down button." CR>)>>
+
+<ROUTINE I-TURNOFF-UPPER-ELEVATOR ()
+        <COND (,ELEVATOR-IN-TRANSIT
+               <ENABLE <QUEUE I-TURNOFF-UPPER-ELEVATOR 120>>)
+              (T
+               <SETG UPPER-ELEVATOR-ON <>>
+               <COND (<EQUAL? ,HERE ,UPPER-ELEVATOR>
+                      <TELL CR ,ELEVATOR-LIGHT-OFF CR>)>)>
+        <RFALSE>>
+
+<ROUTINE I-TURNOFF-LOWER-ELEVATOR ()
+        <COND (,ELEVATOR-IN-TRANSIT
+               <ENABLE <QUEUE I-TURNOFF-LOWER-ELEVATOR 120>>)
+              (T
+               <SETG LOWER-ELEVATOR-ON <>>
+               <COND (<EQUAL? ,HERE ,LOWER-ELEVATOR>
+                      <TELL CR ,ELEVATOR-LIGHT-OFF CR>)>)>
+        <RFALSE>>
+
+<GLOBAL ELEVATOR-LIGHT-OFF "A recording says \"Elevator no longer enabled.\"">
+
+<GLOBAL ELEVATOR-STARTS
+"The elevator door slides shut. After a moment, you feel a sensation of
+vertical movement.">
+
+<ROUTINE I-UPPER-ELEVATOR-TRIP ()
+        <COND (<EQUAL? ,UPPER-ELEVATOR-UP T>
+               <SETG UPPER-ELEVATOR-UP <>>
+               <SETG ELEVATOR-IN-TRANSIT <>>
+               <FSET ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+               <CRLF>
+               <ELEVATOR-DOOR-OPENS>)
+              (T
+               <SETG UPPER-ELEVATOR-UP T>
+               <SETG ELEVATOR-IN-TRANSIT <>>
+               <FSET ,UPPER-ELEVATOR-DOOR ,OPENBIT>
+               <CRLF>
+               <ELEVATOR-DOOR-OPENS>)>>
+
+<ROUTINE I-LOWER-ELEVATOR-TRIP ()
+        <COND (<EQUAL? ,LOWER-ELEVATOR-UP T>
+               <SETG LOWER-ELEVATOR-UP <>>
+               <SETG ELEVATOR-IN-TRANSIT <>>
+               <FSET ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+               <CRLF>
+               <ELEVATOR-DOOR-OPENS>)
+              (T
+               <SETG LOWER-ELEVATOR-UP T>
+               <SETG ELEVATOR-IN-TRANSIT <>>
+               <FSET ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+               <CRLF>
+               <ELEVATOR-DOOR-OPENS>)>>
+
+<ROUTINE ELEVATOR-DOOR-OPENS ()
+        <TELL "The elevator door slides open." CR>>
+
+<ROOM BOOTH-2
+      (IN ROOMS)
+      (DESC "Booth 2")
+      (LDESC
+"This is a tiny room with a large \"2\" painted on the wall. A panel contains
+a slot about ten centimeters wide, a brown button labelled \"1\" and a tan
+button labelled \"3.\"")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO ELEVATOR-LOBBY)
+      (OUT TO ELEVATOR-LOBBY)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "BOOTH" IN-BOOTH-PSEUDO)
+      (GLOBAL CONTROLS SLOT TELEPORTATION-BUTTON-1 TELEPORTATION-BUTTON-3)>
+
+<ROOM TOWER-CORE
+      (IN ROOMS)
+      (DESC "Tower Core")
+      (LDESC
+"This is a small, circular room. A sliding door leads north, and a spiral
+staircase heads upwards. Other exits lie to the northeast and southwest.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO UPPER-ELEVATOR)
+      (UP TO HELIPAD)
+      (SW TO OBSERVATION-DECK)
+      (NE TO COMM-ROOM)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 4)
+      (GLOBAL STAIRS UPPER-ELEVATOR-DOOR)>
+
+<ROOM HELIPAD
+      (IN ROOMS)
+      (DESC "Helipad")
+      (LDESC
+"You are at the center of a wide, flat area atop the tower. A fence
+prevents you from approaching the perimeter, so your view is limited to
+cloud-filled sky. A large vehicle, severely weathered and topped with rotor
+blades, lies nearby. A spiral staircase leads down into the tower.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"15  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN TO TOWER-CORE)
+      (IN TO HELICOPTER)
+      (EAST "A fence keeps you away from the edge, where you would probably
+be swept over the brink by the high winds.")
+      (WEST "A fence keeps you away from the edge, where you would probably
+be swept over the brink by the high winds.")
+      (NORTH "A fence keeps you away from the edge, where you would probably
+be swept over the brink by the high winds.")
+      (SOUTH "A fence keeps you away from the edge, where you would probably
+be swept over the brink by the high winds.")
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "FENCE" FENCE-PSEUDO)
+      (GLOBAL STAIRS HELICOPTER-OBJECT)>
+
+<OBJECT HELICOPTER-OBJECT
+       (IN LOCAL-GLOBALS)
+       (DESC "large vehicle")
+       (SYNONYM VEHICLE HELICOPTER)
+       (ADJECTIVE LARGE)
+       (FLAGS VEHBIT NDESCBIT)
+       (ACTION HELICOPTER-OBJECT-F)>
+
+<ROUTINE HELICOPTER-OBJECT-F ()
+        <COND (<VERB? THROUGH BOARD WALK-TO>
+               <COND (<EQUAL? ,HERE ,HELIPAD>
+                      <GOTO ,HELICOPTER>)
+                     (T
+                      <TELL "You're in it!" CR>)>)
+              (<VERB? EXIT DROP DISEMBARK>
+               <COND (<EQUAL? ,HERE ,HELICOPTER>
+                      <GOTO ,HELIPAD>)
+                     (T
+                      <TELL "You're not in it!" CR>)>)
+              (<VERB? FLY>
+               <COND (<EQUAL? ,HERE ,HELICOPTER>
+                      <TELL "The controls seem to be locked." CR>)
+                     (T
+                      <TELL "You're not even in it!" CR>)>)>>
+
+<ROOM HELICOPTER
+      (IN ROOMS)
+      (DESC "Helicopter")
+      (LDESC
+"This is a large vehicle with a lot of cargo space. A complex control panel
+is closed and locked. Everything is covered with a thick layer of rust.
+Through the windows of the vehicle you can see a wide Helipad, and beyond
+that, endless ocean far below. Several doors lead out to the Helipad.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (OUT TO HELIPAD)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "LOCK" LOCK-PSEUDO)
+      (GLOBAL OCEAN CONTROLS WINDOW HELICOPTER-OBJECT)>
+
+<ROOM COMM-ROOM
+      (IN ROOMS)
+      (DESC "Comm Room")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SW TO TOWER-CORE)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL LIGHTS)
+      (PSEUDO "CABLES" CABLES-PSEUDO "ENUNCI" ENUNCIATOR-PSEUDO)
+      (ACTION COMM-ROOM-F)>
+
+<ROUTINE COMM-ROOM-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a small room with no windows. The sole exit is southwest. Two wide
+consoles fill either end of the room; thick cables lead up into the ceiling.|
+|
+The console on the left side of the room is labelled \"Reeseev Staashun.\" A
+bright red light, labelled \"Tranzmishun Reeseevd\", is blinking rapidly.
+Next to the light is a glowing button marked \"Mesij Plaabak.\"|
+|
+The console on the right side of the room is labelled \"Send Staashun.\" A
+screen on the console displays a message. Next to the screen is a flashing
+sign which says ">
+               <COND (,COMM-SHUTDOWN
+                      <SHUTDOWN>)
+                     (,COMM-FIXED
+                      <TELL "\"Tranzmishun in pragres.\"">)
+                     (T
+                      <TELL "\"Malfunkshun in Sendeeng Kuulint Sistum.\"">)>
+               <TELL " Next to this console is an enunciator">
+               <COND (<OR ,COMM-FIXED ,COMM-SHUTDOWN>
+                      <TELL " whose lights are all dark">)>
+               <TELL
+". On the console next to the enunciator panel is a funnel-shaped hole
+labelled \"Kuulint Sistum Manyuuwul Oovuriid.\"" CR>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <NOT ,COMM-FIXED>
+                    <NOT ,COMM-SHUTDOWN>
+                    ,JUST-ENTERED>
+               <ENABLE <QUEUE I-UNENTER -1>>
+               <SETG JUST-ENTERED <>>
+               <TELL "A ">
+               <COND (<EQUAL? ,CHEMICAL-REQUIRED 1>
+                      <TELL "red">)
+                     (<EQUAL? ,CHEMICAL-REQUIRED 2>
+                      <TELL "blue">)
+                     (<EQUAL? ,CHEMICAL-REQUIRED 3>
+                      <TELL "green">)
+                     (<EQUAL? ,CHEMICAL-REQUIRED 4>
+                      <TELL "yellow">)
+                     (<EQUAL? ,CHEMICAL-REQUIRED 5>
+                      <TELL "gray">)
+                     (<EQUAL? ,CHEMICAL-REQUIRED 6>
+                      <TELL "brown">)
+                     (<EQUAL? ,CHEMICAL-REQUIRED 7>
+                      <TELL "black">)>
+               <TELL
+" colored light is flashing on the enunciator panel." CR>)>>
+
+<GLOBAL JUST-ENTERED T>
+
+<ROUTINE I-UNENTER ()
+        <COND (<NOT <EQUAL? ,HERE ,COMM-ROOM>>
+               <SETG JUST-ENTERED T>
+               <DISABLE <INT I-UNENTER>>)>
+        <RFALSE>>
+
+<OBJECT RECEIVE-CONSOLE
+       (IN COMM-ROOM)
+       (DESC "communications receive console")
+       (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+       (SYNONYM CONSOLE CONTRO)
+       (ADJECTIVE COMMUNICATIONS RECEIVE LEFT FIRST)
+       (FLAGS NDESCBIT)>
+
+<OBJECT PLAYBACK-BUTTON
+       (IN COMM-ROOM)
+       (DESC "glowing button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE GLOWIN PLAYBA)
+       (FLAGS NDESCBIT)
+       (ACTION PLAYBACK-BUTTON-F)>
+
+<ROUTINE PLAYBACK-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <TELL
+"A voice fills the room ... the voice of the Feinstein's communications
+officer! \"Stellar Patrol Ship Feinstein to planetside ... Please respond
+on frequency 48.5 ... SPS Feinstein to planetside ... Please come in ...\"
+After a pause you hear the officer, in a quieter voice, say \"Admiral, no
+response on any of the standard frequen...\" The sentence is cut short by the
+sound of an explosion and a loud burst of static, followed by silence." CR>)>>
+
+<OBJECT SEND-CONSOLE
+       (IN COMM-ROOM)
+       (DESC "communication send console")
+       (SYNONYM CONSOLE CONTRO)
+       (ADJECTIVE COMMUNICATIONS SEND RIGHT SECOND)
+       (FLAGS NDESCBIT)>
+
+<OBJECT COMM-SCREEN
+       (IN COMM-ROOM)
+       (DESC "screen")
+       (SYNONYM COMMUNICATIONS MESSAGE SCREEN)
+       (FLAGS NDESCBIT READBIT)
+       (TEXT
+"\"Tuu enee ship uv xe Sekund Galaktik Yuunyun: Planitwiid plaag haz struk
+entiir popyuulaashun. Tiim iz kritikul. Eemurjensee asistins reekwestid.
+<reepeet mesij>\"")>
+
+<OBJECT FUNNEL-HOLE
+       (IN COMM-ROOM)
+       (DESC "funnel-shaped hole")
+       (SYNONYM HOLE)
+       (ADJECTIVE FUNNEL SHAPED)
+       (FLAGS NDESCBIT)>
+
+<OBJECT CHEMICAL-FLUID
+       (DESC "quantity of chemical fluid")
+       (SYNONYM QUANTITY LIQUID FLUID CHEMICAL)
+       (ADJECTIVE MILKY WHITE CHEMICAL)
+       (ACTION CHEMICAL-FLUID-F)>
+
+<ROUTINE RANDOMIZE-ORDER ("AUX" (COUNT 0) TEMP)
+        <REPEAT ()
+                <COND (<G? <SET COUNT <+ .COUNT 1>> 7>
+                       <RETURN>)
+                      (T
+                       <PUT ,ORDER-LTBL .COUNT <>>)>>
+        <SET COUNT 0>
+        <REPEAT ()
+                <COND (<G? <SET COUNT <+ .COUNT 1>> 7>
+                       <RETURN>)
+                      (T
+                       <SET TEMP <RANDOM 7>>
+                       <COND (<OR <EQUAL? .TEMP <GET ,ORDER-LTBL 1>
+                                                <GET ,ORDER-LTBL 2>
+                                                <GET ,ORDER-LTBL 3>>
+                                  <EQUAL? .TEMP <GET ,ORDER-LTBL 4>
+                                                <GET ,ORDER-LTBL 5>
+                                                <GET ,ORDER-LTBL 6>>
+                                  <EQUAL? .TEMP <GET ,ORDER-LTBL 7>>>
+                              <SET COUNT <- .COUNT 1>>)
+                             (T
+                              <PUT ,ORDER-LTBL .COUNT .TEMP>)>)>>>
+
+<GLOBAL ORDER-LTBL
+       <LTABLE 0 0 0 0 0 0 0>>
+
+<ROUTINE CHEMICAL-FLUID-F ()
+        <COND (<VERB? EAT>
+               <JIGS-UP
+"Mmmmm....that tasted just like delicious poisonous chemicals!">)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,CHEMICAL-FLUID>>
+               <PERFORM ,V?PUT ,PRSO ,FLASK>
+               <RTRUE>)
+              (<AND <VERB? THROW POUR>
+                    <OR <EQUAL? ,PRSI ,RAT-ANT ,TROLL>
+                        <EQUAL? ,PRSI ,GRUE ,TRIFFID>>>
+               <COND (<NOT <HELD? ,FLASK>>
+                      <TELL "You're not holding the flask." CR>
+                      <RTRUE>)>
+               <REMOVE ,CHEMICAL-FLUID>
+               <TELL
+"The mutants lap up the chemical, howling with delight. One immediately
+grows three new mouths." CR>)
+              (<VERB? PUT POUR>
+               <COND (<NOT <HELD? ,FLASK>>
+                      <TELL "You're not holding the flask." CR>
+                      <RTRUE>)
+                     (<EQUAL? ,PRSI ,CANTEEN>
+                      <WORTHLESS-ACTION>
+                      <RTRUE>)>
+               <REMOVE ,CHEMICAL-FLUID>
+               <COND (<NOT ,PRSI>
+                      <SETG PRSI ,GROUND>)>
+               <COND (<EQUAL? ,PRSI ,FUNNEL-HOLE>
+                      <COND (<EQUAL? ,CHEMICAL-FLAG ,CHEMICAL-REQUIRED>
+                             <SETG CHEMICAL-REQUIRED 
+                                   <GET ,ORDER-LTBL ,STEPS-TO-GO>>
+                             <SETG STEPS-TO-GO <- ,STEPS-TO-GO 1>>
+                             <TELL
+"The liquid disappears into the hole. The lights on the enunciator
+panel blink rapidly ">
+                             <COND (<EQUAL? ,STEPS-TO-GO 0>
+                                    <SETG COMM-FIXED T>
+                                    <SETG SCORE <+ ,SCORE 6>>
+                                    <SETG CHEMICAL-REQUIRED 10>
+                                    <TELL
+"and then go dark. The coolant system warning light goes off, and another
+flashes, indicating that the help message is now being sent." CR>)
+                                   (T
+                                    <TELL "and all go off except one, a ">
+                                    <COND (<EQUAL? ,CHEMICAL-REQUIRED 1>
+                                           <TELL "red">)
+                                          (<EQUAL? ,CHEMICAL-REQUIRED 2>
+                                           <TELL "blue">)
+                                          (<EQUAL? ,CHEMICAL-REQUIRED 3>
+                                           <TELL "green">)
+                                          (<EQUAL? ,CHEMICAL-REQUIRED 4>
+                                           <TELL "yellow">)
+                                          (<EQUAL? ,CHEMICAL-REQUIRED 5>
+                                           <TELL "gray">)
+                                          (<EQUAL? ,CHEMICAL-REQUIRED 6>
+                                           <TELL "brown">)
+                                          (<EQUAL? ,CHEMICAL-REQUIRED 7>
+                                           <TELL "black">)>
+                                    <TELL " light." CR>)>)
+                            (T
+                             <SETG COMM-SHUTDOWN T>
+                             <COND (,COMM-FIXED
+                                    <SETG SCORE <- ,SCORE 6>>
+                                    <SETG COMM-FIXED <>>)>
+                             <TELL
+"An alarm sounds briefly, and a sign flashes ">
+                             <SHUTDOWN>
+                             <TELL 
+" A moment later, the lights in the room dim and the send
+console shuts down." CR>)>)
+                     (<EQUAL? ,CHEMICAL-FLAG 8 9>
+                      <COND (<FSET? ,PRSI ,ACIDBIT>
+                             <COND (<EQUAL? ,PRSI ,SPOUT-PLACED>
+                                    <SETG SPOUT-PLACED ,GROUND>)>
+                             <REMOVE ,PRSI>
+                             <TELL
+"The " D ,PRSI " dissolves right before your eyes!">
+                             <COND (<AND <EQUAL? ,PRSI ,BAD-BEDISTOR>
+                                        <NOT <FSET? ,BAD-BEDISTOR ,TOUCHBIT>>>
+                                    <FSET ,CUBE ,MUNGEDBIT>
+                                    <CUBE-SEEMS>)
+                                   (<AND <EQUAL? ,PRSI ,GOOD-BEDISTOR>
+                                         ,COURSE-CONTROL-FIXED>
+                                    <FSET ,CUBE ,MUNGEDBIT>
+                                    <SETG SCORE <- ,SCORE 6>>
+                                    <SETG COURSE-CONTROL-FIXED <>>
+                                    <CUBE-SEEMS>)>
+                             <CRLF>
+                             <RTRUE>)
+                            (<AND <EQUAL? ,CREVICE ,PRSI>
+                                  <NOT <FSET? ,KEY ,TOUCHBIT>>>
+                             <COND (<FSET? ,KEY ,INVISIBLE>
+                                    <TELL
+"A puff of smoke rises from the crevice." CR>)
+                                   (T
+                                    <TELL
+"Although the chemical has no effect on the crevice, it does seem to have
+dissolved the key that was lying in it." CR>)>
+                             <REMOVE ,KEY>
+                             <FSET ,KEY ,TOUCHBIT>
+                             <FCLEAR ,KEY ,INVISIBLE>)
+                            (<EQUAL? ,PRSI ,HIGH-PROTEIN ,MEDICINE>
+                             <JIGS-UP
+"Unfortunately, those two liquids seem to react quite violently with each
+other. The resulting exothermic reaction might have been interesting to
+watch from a distance of, say, several hundred feet.">)
+                            (<EQUAL? ,PRSI ,ME ,ADVENTURER ,HANDS>
+                             <JIGS-UP
+"Have you always had this desire to see melting flesh?">)
+                            (<AND <EQUAL? ,PRSI ,FLOYD>
+                                  <FSET? ,FLOYD ,RLANDBIT>>
+                             <TELL
+"Floyd yelps. \"Hey, cut it out! That stuff burns!\"" CR>)
+                            (<EQUAL? ,PRSI ,MICROBE>
+                             <TELL "The microbe writhes in pain. ">
+                             <STRIP-DISSOLVES>)
+                            (<EQUAL? ,PRSI ,STRIP ,RELAY>
+                             <STRIP-DISSOLVES>)
+                            (<FSET? ,PRSI ,MUNGBIT>
+                             <FSET ,PRSI ,MUNGEDBIT>
+                             <COND (<EQUAL? ,PRSI ,CHRONOMETER>
+                                    <SETG MUNGED-TIME ,INTERNAL-MOVES>)>
+                             <TELL
+"The " D ,PRSI " seems to undergo some damage as a result of your action." CR>
+                             <COND (<AND <EQUAL? ,PRSI ,CUBE>
+                                         ,COURSE-CONTROL-FIXED>
+                                    <SETG COURSE-CONTROL-FIXED <>>
+                                    <REMOVE ,GOOD-BEDISTOR>
+                                    <SETG SCORE <- ,SCORE 6>>
+                                    <TELL
+"The bedistor also happens to dissolve." CR>)>
+                             <RTRUE>)
+                            (T
+                             <CHEMICAL-POURS>)>)
+                     (T
+                      <CHEMICAL-POURS>)>)>>
+
+<ROUTINE CUBE-SEEMS ()
+        <TELL
+" Unfortunately, the cube seems to undergo some damage as well.">>
+
+<ROUTINE CHEMICAL-POURS ()
+        <TELL
+"The chemical pours all over the " D ,PRSI ", making quite a mess." CR>>
+
+<ROUTINE STRIP-DISSOLVES ()
+        <JIGS-UP
+"The chemical drips all over the silicon strip, which immediately begins to
+dissolve. As it does so, you plunge into the void below.">> 
+
+<GLOBAL COMM-SHUTDOWN <>>
+
+<ROUTINE SHUTDOWN ()
+        <TELL
+"\"Kuulint Sistum Imbalins Kritikul -- Shuteeng Down Awl Sistumz.\"">>
+
+<ROUTINE COMM-SETUP () ;"was called by GO - now by I-RANDOM-INTERRUPTS"
+        <SETG OLD-SHOTS <+ 2 <RANDOM 3>>>
+        <SETG NEW-SHOTS <+ 20 <RANDOM 10>>>
+        <RANDOMIZE-ORDER>
+        <SETG STEPS-TO-GO <+ 1 <RANDOM 2>>>
+        <SETG CHEMICAL-REQUIRED <GET ,ORDER-LTBL <+ ,STEPS-TO-GO 1>>>>
+
+<GLOBAL COMM-FIXED <>>
+
+<GLOBAL CHEMICAL-REQUIRED 0>
+
+<GLOBAL STEPS-TO-GO 0>
+
+<ROOM OBSERVATION-DECK
+      (IN ROOMS)
+      (DESC "Observation Deck")
+      (LDESC
+"This is a balcony girdling the tower. The view is breathtaking; the tower
+must be half a kilometer tall. From here it is clear that you are on an
+island. The dormitory section of the complex is visible on the other side
+of the island, and the rest of the complex sprawls out directly below. In
+the distance, about 20 kilometers to the east, you can spot another island
+similar to this one. The only exit is a doorway leading northeast.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NE TO TOWER-CORE)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL OCEAN)>
+
+<ROOM WAITING-AREA
+      (IN ROOMS)
+      (DESC "Waiting Area")
+      (LDESC
+"This is a concrete platform sparsely furnished with benches. The platform
+continues to the east, and to the south is a metal door.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO KALAMONTEE-PLATFORM)
+      (SOUTH PER OTHER-ELEVATOR-ENTER-F)
+      (IN PER OTHER-ELEVATOR-ENTER-F)
+      (PSEUDO "BENCH" BENCH-PSEUDO "BENCHE" BENCH-PSEUDO)
+      (GLOBAL LOWER-ELEVATOR-DOOR)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROUTINE OTHER-ELEVATOR-ENTER-F ()
+        <COND (<AND <FSET? ,LOWER-ELEVATOR-DOOR ,OPENBIT>
+                    <NOT ,LOWER-ELEVATOR-UP>>
+               ,LOWER-ELEVATOR)
+              (T
+               <DOOR-CLOSED>
+               <THIS-IS-IT ,LOWER-ELEVATOR-DOOR>
+               <RFALSE>)>>
+
+<ROOM KALAMONTEE-PLATFORM
+      (IN ROOMS)
+      (DESC "Kalamontee Platform")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO WAITING-AREA)
+      (SOUTH PER SHUTTLE-ENTER-F)
+      (NORTH PER SHUTTLE-ENTER-F)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 4)
+      (GLOBAL GLOBAL-SHUTTLE)
+      (ACTION KALAMONTEE-PLATFORM-F)>
+
+<ROUTINE KALAMONTEE-PLATFORM-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a wide, flat strip of concrete which continues westward. ">
+               <COND (<AND ,BETTY-AT-KALAMONTEE ,ALFIE-AT-KALAMONTEE>
+                      <TELL
+"Open shuttle cars lie on the north and south sides of the platform. ">)
+                     (,BETTY-AT-KALAMONTEE
+                      <TELL
+"An open shuttle car lies to the north. ">)
+                     (,ALFIE-AT-KALAMONTEE
+                      <TELL
+"A large transport of some sort lies to the south, its open door
+beckoning you to enter. ">)>
+               <TELL "A faded sign on the wall reads \"Shutul Platform --
+Kalamontee Staashun.\"" CR>)>>
\ No newline at end of file
diff --git a/comptwo.zil b/comptwo.zil
new file mode 100644 (file)
index 0000000..6d42b69
--- /dev/null
@@ -0,0 +1,3204 @@
+"COMPTWO for PLANETFALL 
+(C) COPYRIGHT 1983 INFOCOM, INC. ALL RIGHTS RESERVED
+
+This file contains all the rooms, objects, and actions associated
+with Complex Two / the Eastern Complex / the Lawanda Compleks."
+
+<ROOM LAWANDA-PLATFORM
+      (IN ROOMS)
+      (DESC "Lawanda Platform")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH PER SHUTTLE-ENTER-F)
+      (SOUTH PER SHUTTLE-ENTER-F)
+      (EAST TO ESCALATOR)
+      (UP TO ESCALATOR)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (VALUE 4)
+      (GLOBAL GLOBAL-SHUTTLE STAIRS)
+      (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO)
+      (ACTION LAWANDA-PLATFORM-F)>
+
+<GLOBAL LAWANDA-PLATFORM-FLAG <>>
+
+<ROUTINE LAWANDA-PLATFORM-F (RARG)
+        <COND (<NOT ,LAWANDA-PLATFORM-FLAG>
+               <SETG LAWANDA-PLATFORM-FLAG T>
+               <SETG SICKNESS-WARNING-FLAG T>)>
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL "This is a wide, flat strip of concrete. ">
+               <COND (<AND <NOT ,ALFIE-AT-KALAMONTEE>
+                           <NOT ,BETTY-AT-KALAMONTEE>>
+                      <TELL
+"Open shuttle cars lie to the north and south.">)
+                     (<OR <NOT ,ALFIE-AT-KALAMONTEE>
+                          <NOT ,BETTY-AT-KALAMONTEE>>
+                      <TELL "An open shuttle car lies to the ">
+                      <COND (,ALFIE-AT-KALAMONTEE
+                             <TELL "north.">)
+                            (T
+                             <TELL "south.">)>)>
+               <TELL
+" A wide escalator, not currently operating, beckons upward at the east end of
+the platform. A faded sign reads \"Shutul Platform -- Lawanda Staashun.\"" CR>)>>
+
+<ROOM ESCALATOR
+      (IN ROOMS)
+      (DESC "Escalator")
+      (LDESC
+"You are in the middle of a long mechanical stairway. It is not running,
+and seems to be in disrepair.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"15  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (UP TO FORK)
+      (EAST TO FORK)
+      (DOWN TO LAWANDA-PLATFORM)
+      (WEST TO LAWANDA-PLATFORM)
+      (GLOBAL STAIRS)
+      (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)>
+
+<ROOM FORK
+      (IN ROOMS)
+      (DESC "Fork")
+      (LDESC
+"This is a hallway which forks to the northeast and southeast. To the west
+is the top of a long escalator.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"15  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE" 25 ;"EAST" 0 ;"NE"  25  ;"NORTH"  0>)
+      (WEST TO ESCALATOR)
+      (DOWN TO ESCALATOR)
+      (NE TO SYSTEMS-CORRIDOR-WEST)
+      (SE TO PROJECT-CORRIDOR-WEST)
+      (GLOBAL STAIRS)
+      (PSEUDO "ESCALATOR" ESCALATOR-PSEUDO)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)>
+
+^L
+
+"He's dead, Jim"
+
+<ROOM INFIRMARY
+      (IN ROOMS)
+      (DESC "Infirmary")
+      (LDESC 
+"You have entered a clean, well-lighted place. There are a number of beds,
+some complicated looking equipment, and many shelves that are mostly bare.")
+      (C-MOVE  <TABLE
+         ;"OUT"25 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE" 25 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SE TO SYSTEMS-CORRIDOR-WEST)
+      (OUT TO SYSTEMS-CORRIDOR-WEST)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL BED SHELVES)
+      (PSEUDO "EQUIPM" EQUIPMENT-PSEUDO "MACHIN" EQUIPMENT-PSEUDO)
+      (ACTION INFIRMARY-F)>
+
+<OBJECT LAZARUS-PART
+       (DESC "medical robot breastplate")
+       (SYNONYM LAZARUS PART BREAST PLATE)
+       (ADJECTIVE MEDICAL BREAST)
+       (SIZE 35)
+       (FLAGS TAKEBIT)>
+
+<GLOBAL LAZARUS-FLAG <>>
+
+<ROUTINE INFIRMARY-F (RARG)
+        <COND (<AND <EQUAL? .RARG ,M-END>
+                    <NOT ,LAZARUS-FLAG>
+                    <IN? ,FLOYD ,HERE>
+                    <FSET? ,FLOYD ,RLANDBIT>
+                    <PROB 30>>
+               <SETG LAZARUS-FLAG T>
+               <MOVE ,LAZARUS-PART ,HERE>
+               <MOVE ,FLOYD ,FORK>
+               <SETG FLOYD-FOLLOW <>>
+               <SETG FLOYD-SPOKE T>
+               <TELL
+"Floyd, rummaging in a corner, finds something and carries it to the center of
+the room to examine it in the brighter light. It seems to be the breast plate
+of a robot, along with some connected inner circuitry. The entire piece is
+bent and rusting. Floyd stares at it in complete silence. A moment later, he
+begins sobbing quietly, awkwardly excuses himself, and runs out of the room.
+You look at the breast plate, and notice the name \"Lazarus\" engraved on
+it." CR>)>>  
+
+<OBJECT RED-SPOOL
+       (IN INFIRMARY)
+       (DESC "red spool")
+       (FDESC
+"Lying on one of the beds is a small red spool.")
+       (SYNONYM SPOOL SPOOLS OBJECT)
+       (ADJECTIVE RED SMALL)
+       (SIZE 3)
+       (TEXT
+"The spool is labelled \"Simptumz uv Xe Dizeez.\"")
+       (FLAGS TAKEBIT ACIDBIT READBIT)
+       (ACTION RED-SPOOL-F)>
+
+<ROUTINE RED-SPOOL-F ()
+        <COND (<AND <VERB? TAKE>
+                    <IN? ,RED-SPOOL ,SPOOL-READER>
+                    <FSET? ,SPOOL-READER ,ONBIT>>
+               <MOVE ,RED-SPOOL ,ADVENTURER>
+               <FCLEAR ,RED-SPOOL ,TRYTAKEBIT>
+               <TELL "The screen goes blank as you take the spool." CR>)>>
+
+<OBJECT MEDICINE-BOTTLE
+       (IN INFIRMARY)
+       (DESC "medicine bottle")
+       (FDESC
+"On a low shelf is a translucent bottle with a small white label.")
+       (SYNONYM BOTTLE LABEL)
+       (ADJECTIVE MEDICINE SMALL WHITE TRANSL)
+       (SIZE 7)
+       (CAPACITY 7)
+       (TEXT
+"\"Dizeez supreshun medisin -- eksperimentul\"")
+       (FLAGS CONTBIT SEARCHBIT TAKEBIT TRANSBIT READBIT)>
+
+<OBJECT MEDICINE
+       (IN MEDICINE-BOTTLE)
+       (DESC "quantity of medicine")
+       (FDESC "At the bottom of the bottle is a small quantity of medicine.")
+       (SYNONYM MEDICINE)
+       (ADJECTIVE SMALL QUANTITY EXPERIMENTAL)
+       (SIZE 7)
+       (FLAGS FOODBIT)
+       (ACTION MEDICINE-F)>
+
+<ROUTINE MEDICINE-F ("AUX" (X <>))
+        <COND (<AND <VERB? TASTE EAT POUR>
+                    <NOT <IN? ,MEDICINE-BOTTLE ,ADVENTURER>>>
+               <SETG PRSO ,MEDICINE-BOTTLE>
+               <NOT-HOLDING>
+               <THIS-IS-IT ,MEDICINE-BOTTLE>)
+              (<AND <VERB? TASTE EAT POUR>
+                    <NOT <FSET? ,MEDICINE-BOTTLE ,OPENBIT>>>
+               <TELL "The bottle is closed." CR>)
+              (<VERB? TASTE>
+               <TELL "It tastes fairly bitter." CR>)
+              (<VERB? EAT>
+               <REMOVE ,MEDICINE>
+               <SETG C-ELAPSED 15>
+               <SETG SICKNESS-LEVEL <- ,SICKNESS-LEVEL 2>>
+               <SETG LOAD-ALLOWED <+ ,LOAD-ALLOWED 20>>
+               <TELL "The medicine tasted extremely bitter." CR>)
+              (<VERB? POUR>            
+               <REMOVE ,MEDICINE>
+               <COND (<NOT ,PRSI>
+                      <SETG PRSI ,GROUND>)>
+               <COND (<EQUAL? ,PRSI ,FUNNEL-HOLE>
+                      <COND (<IN? ,CHEMICAL-FLUID ,FLASK>
+                             <SET X T>)>
+                      <SETG CHEMICAL-REQUIRED 10>
+                      <PERFORM ,V?POUR ,CHEMICAL-FLUID ,FUNNEL-HOLE>
+                      <COND (.X
+                             <MOVE ,CHEMICAL-FLUID ,FLASK>)>
+                      <RTRUE>)
+                     (T
+                      <TELL
+"It pours over the " D ,PRSI " and evaporates." CR>)>)
+              (<AND <VERB? TAKE>
+                    <EQUAL? <GET ,P-VTBL 0> ,W?TAKE>>
+               <PERFORM ,V?EAT ,MEDICINE>
+               <RTRUE>)>>
+
+<ROOM REPAIR-ROOM
+      (IN ROOMS)
+      (DESC "Repair Room")
+      (LDESC
+"You are in a dimly lit room, filled with strange machines and wide storage
+cabinets, all locked. To the south, a narrow stairway leads upward. On the
+north wall of the room is a very small doorway.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"    30
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (UP TO SYSTEMS-CORRIDOR-WEST)
+      (SOUTH TO SYSTEMS-CORRIDOR-WEST)
+      (NORTH "It is a robot-sized doorway -- a bit too small for you.")
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL STAIRS)
+      (PSEUDO "CABINETS" CABINETS-PSEUDO "MACHIN" EQUIPMENT-PSEUDO)>
+
+<GLOBAL ACHILLES-FLAG <>> ;"Set to T when Floyd babbles about Achilles"
+
+<OBJECT ACHILLES
+       (IN REPAIR-ROOM)
+       (DESC "broken robot")
+       (LDESC
+"Lying face down at the bottom of the stairs is a motionless robot. It
+appears to be damaged beyond repair.")
+       (SYNONYM ROBOT ACHILLES)
+       (ADJECTIVE BROKEN DEAD)>
+
+<OBJECT ROBOT-HOLE
+       (IN REPAIR-ROOM)
+       (DESC "small doorway")
+       (SYNONYM DOOR DOORWA HOLE)
+       (ADJECTIVE SMALL VERY)
+       (FLAGS NDESCBIT TRANSBIT CONTBIT)
+       (CAPACITY 0)
+       (ACTION ROBOT-HOLE-F)>
+
+<ROUTINE ROBOT-HOLE-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"It's too small for you to get through. It was presumably intended for
+robots, such as the broken repair robot lying over there." CR>)
+              (<VERB? LOOK-INSIDE>
+               <TELL
+"You can make out a small supply room of some sort." CR>)
+              (<VERB? OPEN CLOSE>
+               <TELL
+"There's no door, just an opening in the wall." CR>)>>
+
+<GLOBAL HOLE-TRIP-FLAG <>>
+
+<ROUTINE FLOYD-THROUGH-HOLE ()
+        <COND (,HOLE-TRIP-FLAG
+               <TELL "\"Not again,\" whines Floyd." CR>
+               <RTRUE>)
+              (T
+               <SETG C-ELAPSED 50>
+               <SETG HOLE-TRIP-FLAG T>
+               <SETG BOARD-REPORTED T>
+               <FCLEAR ,GOOD-BOARD ,INVISIBLE>
+               <TELL
+"Floyd squeezes through the opening and is gone for quite a while. You hear
+thudding noises and squeals of enjoyment. After a while the noise stops, and
+Floyd emerges, looking downcast. \"Floyd found a rubber ball inside. Lots of
+fun for a while, but must have been old, because it fell apart. Nothing else
+interesting inside. Just a shiny fromitz board.\"" CR>)>>
+
+<OBJECT GOOD-BOARD
+       (IN ROBOT-HOLE)
+       (DESC "shiny seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE SHINY GOOD SEVENTEEN CENTIMETER FROMITZ)
+       (SIZE 10)
+       (FLAGS ACIDBIT INVISIBLE NDESCBIT)
+       (ACTION GOOD-BOARD-F)>
+
+<ROUTINE GOOD-BOARD-F ()
+        <COND (<AND <FSET? ,GOOD-BOARD ,NDESCBIT>
+                    <VERB? TAKE EXAMINE RUB PUSH PULL MOVE LOOK-UNDER>
+                    <EQUAL? ,GOOD-BOARD ,PRSO>>
+               <TELL "You can't see any " D ,PRSO " here." CR>)
+              (<VERB? EXAMINE>
+               <EXAMINE-BOARD>
+               <CRLF>)>>
+
+<GLOBAL BOARD-REPORTED <>>
+
+<ROOM SYSTEMS-CORRIDOR-WEST
+      (IN ROOMS)
+      (DESC "Systems Corridor West")
+      (LDESC
+"The corridor bends here, leading east and southwest. A doorway opens
+to the northwest, and a narrow stairway leads down to the north.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"15  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"  25  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NW TO INFIRMARY)
+      (NORTH TO REPAIR-ROOM)
+      (DOWN TO REPAIR-ROOM)
+      (EAST TO SYSTEMS-CORRIDOR)
+      (SW TO FORK)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL STAIRS)>
+
+<ROOM SYSTEMS-CORRIDOR
+      (IN ROOMS)
+      (DESC "Systems Corridor")
+      (LDESC
+"This section of hallway has a doorway to the north labelled \"Planateree
+Deefens.\" The corridor continues east and west.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO PLANETARY-DEFENSE)
+      (WEST TO SYSTEMS-CORRIDOR-WEST)
+      (EAST TO SYSTEMS-CORRIDOR-EAST)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM SYSTEMS-CORRIDOR-EAST
+      (IN ROOMS)
+      (DESC "Systems Corridor East")
+      (LDESC
+"The hallway ends here with a large doorway leading east, and smaller doorways
+to the north and south. The northern doorway is labelled \"Planateree Kors
+Kontrool.\" The hallway itself leads west.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO SYSTEMS-CORRIDOR)
+      (SOUTH TO LIBRARY-LOBBY)
+      (NORTH TO PLANETARY-COURSE-CONTROL)
+      (EAST TO PHYSICAL-PLANT-TWO)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM PHYSICAL-PLANT-TWO
+      (IN ROOMS)
+      (DESC "Physical Plant")
+      (LDESC
+"This is an enormous room full of environmental control equipment presumably
+intended to heat and ventilate the Lawanda Complex. Oddly, although the
+Lawanda Complex is slightly smaller than its counterpart, this plant is much
+larger than the one in the Kalamontee Complex. The only exit is westward.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO SYSTEMS-CORRIDOR-EAST)
+      (OUT TO SYSTEMS-CORRIDOR-EAST)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (PSEUDO "EQUIPM" EQUIPMENT-PSEUDO)>
+
+^L
+
+"Planetary systems and repairs"
+
+<GLOBAL DEFENSE-FIXED <>>
+
+<GLOBAL COURSE-CONTROL-FIXED <>>
+
+<GLOBAL ACCESS-PANEL-FULL T>
+
+<ROOM PLANETARY-DEFENSE
+      (IN ROOMS)
+      (DESC "Planetary Defense")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO SYSTEMS-CORRIDOR)
+      (OUT TO SYSTEMS-CORRIDOR)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL CONTROLS LIGHTS)
+      (ACTION PLANETARY-DEFENSE-F)>
+
+<ROUTINE PLANETARY-DEFENSE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This room is filled with a dazzling array of lights and controls. ">
+               <COND (<NOT ,DEFENSE-FIXED>
+                      <TELL
+"One light, blinking quickly, catches your eye. It reads \"Surkit Boord
+Faalyur. WORNEENG: xis boord kuntroolz xe diskriminaashun surkits.\"" >)>
+               <TELL" There is a small access panel on one wall which is ">
+               <DDESC ,ACCESS-PANEL>
+               <TELL "." CR>)>>
+
+<OBJECT ACCESS-PANEL
+       (IN PLANETARY-DEFENSE)
+       (DESC "access panel")
+       (SYNONYM PANEL DOOR SOCKET)
+       (ADJECTIVE SMALL ACCESS REPAIR)
+       (FLAGS VOWELBIT NDESCBIT CONTBIT SEARCHBIT)
+       (CAPACITY 40)
+       (ACTION ACCESS-PANEL-F)>
+
+<ROUTINE ACCESS-PANEL-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,ACCESS-PANEL ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (T
+                      <FSET ,ACCESS-PANEL ,OPENBIT>
+                      <TELL "The panel swings open." CR>
+                      <PERFORM ,V?LOOK-INSIDE ,ACCESS-PANEL>
+                      <RTRUE>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,ACCESS-PANEL ,OPENBIT>
+                      <FCLEAR ,ACCESS-PANEL ,OPENBIT>
+                      <TELL "The panel swings closed." CR>)
+                     (T
+                      <IS-CLOSED>)>)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,ACCESS-PANEL>>
+               <COND (<NOT <FSET? ,ACCESS-PANEL ,OPENBIT>>
+                      <TELL "The panel is closed." CR>)
+                     (,ACCESS-PANEL-FULL
+                      <TELL "There's no room." CR>)
+                     (<EQUAL? ,PRSO ,GOOD-BOARD>
+                      <REMOVE ,GOOD-BOARD>
+                      <MOVE ,SECOND-BOARD ,ACCESS-PANEL>
+                      <THIS-IS-IT ,SECOND-BOARD>
+                      <SETG DEFENSE-FIXED T>
+                      <SETG SCORE <+ ,SCORE 6>>
+                      <SETG ACCESS-PANEL-FULL T>
+                      <PUT-BOARD>
+                      <TELL " The warning lights stop flashing." CR>)
+                     (<EQUAL? ,PRSO ,CRACKED-BOARD ,FRIED-BOARD>
+                      <REMOVE ,PRSO>
+                      <THIS-IS-IT ,SECOND-BOARD>
+                      <MOVE ,SECOND-BOARD ,ACCESS-PANEL>
+                      <SETG ACCESS-PANEL-FULL T>
+                      <COND (<EQUAL? ,PRSO ,CRACKED-BOARD>
+                             <SETG ITS-CRACKED T>)>                          
+                      <PUT-BOARD>
+                      <CRLF>)
+                     (T
+                      <TELL "The " D, PRSO " doesn't fit.">)>)>>
+
+<OBJECT FIRST-BOARD
+       (IN ACCESS-PANEL)
+       (DESC "first seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE FIRST SEVENTEEN CENTIMETER FROMITZ)
+       (ACTION BOARD-F)>
+
+<OBJECT FOURTH-BOARD
+       (IN ACCESS-PANEL)
+       (DESC "fourth seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE FOURTH SEVENTEEN CENTIMETER FROMITZ)
+       (ACTION BOARD-F)>
+
+<OBJECT THIRD-BOARD
+       (IN ACCESS-PANEL)
+       (DESC "third seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE THIRD SEVENTEEN CENTIMETER FROMITZ)
+       (ACTION BOARD-F)>
+                        
+<OBJECT SECOND-BOARD
+       (IN ACCESS-PANEL)
+       (DESC "second seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE SECOND SEVENTEEN CENTIMETER FROMITZ)
+       (FLAGS TRYTAKEBIT TAKEBIT)
+       (ACTION BOARD-F)>
+
+<OBJECT FRIED-BOARD
+       (DESC "fried seventeen-centimeter fromitz board")
+       (SYNONYM BOARD BOARDS)
+       (ADJECTIVE FRIED SEVENTEEN CENTIMETER FROMITZ)
+       (SIZE 10)
+       (FLAGS ACIDBIT TAKEBIT)
+       (ACTION FRIED-BOARD-F)>
+
+<ROUTINE FRIED-BOARD-F ()
+        <COND (<VERB? EXAMINE>
+               <EXAMINE-BOARD>
+               <TELL
+" This one is a bit blackened around the edges, though." CR>)>>
+
+<GLOBAL ITS-CRACKED <>>
+
+<ROUTINE BOARD-F ()
+        <COND (<VERB? TAKE>
+               <COND (<EQUAL? ,PRSO ,SECOND-BOARD>
+                      <COND (,DEFENSE-FIXED
+                             <BOARD-SHOCK>)
+                            (T
+                             <TELL
+"The fromitz board slides out of the panel, producing an empty socket
+for another board." CR>
+                             <REMOVE ,SECOND-BOARD>
+                             <SETG ACCESS-PANEL-FULL <>>
+                             <COND (<EQUAL? ,ITS-CRACKED T>
+                                    <MOVE ,CRACKED-BOARD ,ADVENTURER>)
+                                   (T
+                                    <MOVE ,FRIED-BOARD ,ADVENTURER>)>
+                             <THIS-IS-IT ,FRIED-BOARD>)>)
+                     (T
+                      <BOARD-SHOCK>)>)
+              (<VERB? EXAMINE>
+               <EXAMINE-BOARD>
+               <CRLF>)>>
+
+<ROUTINE EXAMINE-BOARD ()
+        <TELL
+"Like most fromitz boards, it is a twisted maze of silicon circuits. It is
+square, approximately seventeen centimeters on each side.">>
+
+<ROUTINE PUT-BOARD ()
+        <TELL "The card clicks neatly into the socket.">>
+
+<ROUTINE BOARD-SHOCK ()
+        <TELL "You jerk your hand back as you receive a powerful
+shock from the fromitz board." CR>>
+
+<ROOM PLANETARY-COURSE-CONTROL
+      (IN ROOMS)
+      (DESC "Course Control")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH TO SYSTEMS-CORRIDOR-EAST)
+      (OUT TO SYSTEMS-CORRIDOR-EAST)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (GLOBAL CONTROLS LIGHTS)
+      (ACTION PLANETARY-COURSE-CONTROL-F)>
+
+<ROUTINE PLANETARY-COURSE-CONTROL-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a long room whose walls are covered with complicated controls
+and colored lights. ">
+               <COND (,COURSE-CONTROL-FIXED
+                      <TELL
+"One blinking light says \"Kors diivurjins minimiizeeng.\"">)
+                     (T
+                      <TELL
+"Two of these lights are blinking. The first one reads \"Bedistur Faalyur!\"
+The other light reads \"Kritikul diivurjins frum pland kors.\"">)>
+               <TELL " In one corner is a large metal cube whose lid is ">
+               <COND (<FSET? ,CUBE ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL "closed">)>
+               <TELL "." CR>)>>
+
+<OBJECT CUBE
+       (IN PLANETARY-COURSE-CONTROL)
+       (DESC "large metal cube")
+       (SYNONYM CUBE LID SOCKET)
+       (ADJECTIVE LARGE METAL)
+       (FLAGS MUNGBIT NDESCBIT CONTBIT SEARCHBIT)
+       (ACTION CUBE-F)>
+
+<ROUTINE CUBE-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,CUBE ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (T
+                      <FSET ,CUBE ,OPENBIT>
+                      <TELL "The lid swings open." CR>
+                      <PERFORM ,V?LOOK-INSIDE ,CUBE>
+                      <RTRUE>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,CUBE ,OPENBIT>
+                      <FCLEAR ,CUBE ,OPENBIT>
+                      <TELL "The lid swings closed." CR>)
+                     (T
+                      <IS-CLOSED>)>)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,CUBE>>
+               <COND (<NOT <FSET? ,CUBE ,OPENBIT>>
+                      <TELL "The cube is closed." CR>) 
+                     (<IN? ,BAD-BEDISTOR ,CUBE>
+                      <TELL "There's a fused bedistor in the way." CR>)
+                     (<EQUAL? ,PRSO ,GOOD-BEDISTOR>
+                      <MOVE ,GOOD-BEDISTOR ,CUBE>
+                      <COND (<NOT <FSET? ,CUBE ,MUNGEDBIT>>
+                             <SETG COURSE-CONTROL-FIXED T>
+                             <FSET ,GOOD-BEDISTOR ,TRYTAKEBIT>
+                             <SETG SCORE <+ ,SCORE 6>>
+                             <TELL
+"Done. The warning lights go out and another light goes on." CR>)
+                            (T
+                             <TELL "Done." CR>)>)
+                     (<EQUAL? ,PRSO ,BAD-BEDISTOR>
+                      <MOVE ,BAD-BEDISTOR ,CUBE>
+                      <TELL "Done." CR>)
+                     (T
+                      <TELL "The " D, PRSO " doesn't fit.">)>)>>
+
+<OBJECT BAD-BEDISTOR
+       (IN CUBE)
+       (DESC "fused ninety-ohm bedistor")
+       (SYNONYM BEDISTOR)
+       (ADJECTIVE FUSED NINETY OHM)
+       (SIZE 8)
+       (FLAGS ACIDBIT TRYTAKEBIT TAKEBIT)
+       (ACTION BAD-BEDISTOR-F)>
+
+<ROUTINE BAD-BEDISTOR-F ()
+        <COND (<AND <VERB? TAKE>
+                    <IN? ,BAD-BEDISTOR ,CUBE>>
+               <TELL "It seems to be fused to its socket." CR>)
+              (<VERB? ZATTRACT>
+               <COND (<EQUAL? ,PRSI ,PLIERS>
+                      <MOVE ,BAD-BEDISTOR ,ADVENTURER>
+                      <FCLEAR ,BAD-BEDISTOR ,TRYTAKEBIT>
+                      <TELL
+"With a tug, you manage to remove the fused bedistor." CR>)
+                     (T
+                      <TELL
+"You can't get a grip on the bedistor with that." CR>)>)>>
+
+^L
+
+"The Library"
+
+<ROOM LIBRARY-LOBBY
+      (IN ROOMS)
+      (DESC "Library Lobby")
+      (LDESC 
+"This is a carpeted room, thick with dust, with exits to the north and south.
+To the west, up a few steps, is a wide doorway. A small booth lies to the
+east.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (UP TO LIBRARY)
+      (WEST TO LIBRARY)
+      (NORTH TO SYSTEMS-CORRIDOR-EAST)
+      (SOUTH TO PROJECT-CORRIDOR-EAST)
+      (EAST TO BOOTH-3)
+      (IN TO BOOTH-3)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (GLOBAL TABLES STAIRS)
+      (PSEUDO "CARPET" CARPET-PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)>
+
+<OBJECT GREEN-SPOOL
+       (IN LIBRARY-LOBBY)
+       (DESC "green spool")
+       (FDESC
+"You catch a glimpse of a small object nestled among the dust.")
+       (SYNONYM SPOOL SPOOLS OBJECT)
+       (ADJECTIVE GREEN SMALL)
+       (SIZE 3)
+       (TEXT
+"The spool is labelled \"Helikoptur Opuraateeng Manyuuwul.\"")
+       (FLAGS ACIDBIT TAKEBIT READBIT)
+       (ACTION GREEN-SPOOL-F)>
+
+<ROUTINE GREEN-SPOOL-F ()
+        <COND (<AND <VERB? TAKE>
+                    <IN? ,GREEN-SPOOL ,SPOOL-READER>
+                    <FSET? ,SPOOL-READER ,ONBIT>>
+               <MOVE ,GREEN-SPOOL ,ADVENTURER>
+               <FCLEAR ,GREEN-SPOOL ,TRYTAKEBIT>
+               <TELL "The screen goes blank as you take the spool." CR>)>>
+
+<ROOM BOOTH-3
+      (IN ROOMS)
+      (DESC "Booth 3")
+      (LDESC
+"This is a tiny room with a large \"3\" painted on the wall. A panel contains
+a slot about ten centimeters wide, a brown button labelled \"1\" and a beige
+button labelled \"2.\"")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO LIBRARY-LOBBY)
+      (OUT TO LIBRARY-LOBBY)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL CONTROLS SLOT TELEPORTATION-BUTTON-1 TELEPORTATION-BUTTON-2)
+      (PSEUDO "BOOTH" IN-BOOTH-PSEUDO)>
+
+<ROOM LIBRARY
+      (IN ROOMS)
+      (DESC "Library")
+      (LDESC
+"This is a large carpeted room with a desk and many small tables. The sole
+exit is down a few steps to the east.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO LIBRARY-LOBBY)
+      (OUT TO LIBRARY-LOBBY)
+      (FLAGS RLANDBIT ONBIT FLOYDBIT)
+      (GLOBAL TABLES STAIRS)
+      (PSEUDO "CARPET" CARPET-PSEUDO "DESK" DESK-PSEUDO)>
+
+<OBJECT TERMINAL
+       (IN LIBRARY-LOBBY)
+       (DESC "terminal")
+       (FDESC
+"Sitting on a wide table is a machine of sorts, consisting of a video
+screen and a keyboard. It is currently turned off.")
+       (LDESC
+"On the table is a computer terminal.")
+       (SYNONYM TERMINAL KEYBOARD SCREEN MACHIN)
+       (ADJECTIVE COMPUTER VIDEO)
+       (FLAGS LIGHTBIT)
+       (ACTION TERMINAL-F)>
+
+<GLOBAL MENU-LEVEL 0>
+
+<ROUTINE TERMINAL-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The computer terminal consists of a video display screen, a keyboard with
+ten keys numbered from zero through nine, and an on-off switch. ">
+               <COND (<FSET? ,TERMINAL ,ONBIT>
+                      <TELL
+"The screen displays some writing:" CR ,SCREEN-TEXT CR>
+                      <COND (<G? ,MENU-LEVEL 9>
+                             <TELL ,MORE-INFO CR>)>
+                      <RTRUE>)
+                     (T
+                      <TELL "The screen is dark." CR>)>)
+              (<VERB? READ>
+               <COND (<FSET? ,TERMINAL ,ONBIT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <COND (<G? ,MENU-LEVEL 9>
+                             <TELL ,MORE-INFO CR>)>
+                      <RTRUE>)
+                     (T
+                      <TELL "The screen is blank." CR>)>)
+              (<VERB? LAMP-ON>
+               <COND (<FSET? ,TERMINAL ,ONBIT>
+                      <TELL "It's already on." CR>)
+                     (T
+                      <FSET ,TERMINAL ,ONBIT>
+                      <FSET ,TERMINAL ,TOUCHBIT>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL
+"The screen gives off a green flash, and then some writing appears on
+the screen:" CR>
+                      <TELL ,SCREEN-TEXT CR>)>)
+              (<VERB? LAMP-OFF>
+               <COND (<FSET? ,TERMINAL ,ONBIT>
+                      <FCLEAR ,TERMINAL ,ONBIT>
+                      <SETG MENU-LEVEL 0>
+                      <TELL "The screen goes dark." CR>)
+                     (T
+                      <TELL "It isn't on!" CR>)>)>>
+
+<ROUTINE LIBRARY-TYPE ()
+        <COND (<NOT <EQUAL? ,PRSO ,INTNUM>>
+               <NUMBERS-ONLY>)
+              (<EQUAL? ,MENU-LEVEL 0>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <TELL ,NO-MEANING CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,HISTORY-MENU>
+                      <TELL ,SCREEN-TEXT CR>
+                      <SETG MENU-LEVEL 1>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,CULTURE-MENU>
+                      <TELL ,SCREEN-TEXT CR>
+                      <SETG MENU-LEVEL 2>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,TECHNOLOGY-MENU>
+                      <TELL ,SCREEN-TEXT CR>
+                      <SETG MENU-LEVEL 3>)
+                     (<EQUAL? ,P-NUMBER 4>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,GEOGRAPHY-MENU>
+                      <TELL ,SCREEN-TEXT CR>
+                      <SETG MENU-LEVEL 4>)
+                     (<EQUAL? ,P-NUMBER 5>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,PROJECT-MENU>
+                      <TELL ,SCREEN-TEXT CR>
+                      <SETG MENU-LEVEL 5>)
+                     (<EQUAL? ,P-NUMBER 6>
+                      <SETG MENU-LEVEL 6>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,INTERLOGIC-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<G? ,P-NUMBER 6>
+                      <TELL ,NO-MEANING CR>)>)
+              (<EQUAL? ,MENU-LEVEL 1>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 0>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <SETG MENU-LEVEL 11>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,11-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <SETG MENU-LEVEL 12>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,12-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <SETG MENU-LEVEL 13>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,13-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<G? ,P-NUMBER 3>
+                      <TELL ,NO-MEANING CR>)>)
+              (<EQUAL? ,MENU-LEVEL 2>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 0>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <SETG MENU-LEVEL 21>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,21-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <SETG MENU-LEVEL 22>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,22-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <SETG MENU-LEVEL 23>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,23-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<G? ,P-NUMBER 4>
+                      <TELL ,NO-MEANING CR>)>)
+              (<EQUAL? ,MENU-LEVEL 3>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 0>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <SETG MENU-LEVEL 31>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,31-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <SETG MENU-LEVEL 32>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,32-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <SETG MENU-LEVEL 33>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,33-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 4>
+                      <SETG MENU-LEVEL 34>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,34-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 5>
+                      <SETG MENU-LEVEL 35>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,35-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<G? ,P-NUMBER 5>
+                      <TELL ,NO-MEANING CR>)>)
+              (<EQUAL? ,MENU-LEVEL 4>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 0>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <SETG MENU-LEVEL 41>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,41-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <SETG MENU-LEVEL 42>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,42-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <SETG MENU-LEVEL 43>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,43-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<G? ,P-NUMBER 3>
+                      <TELL ,NO-MEANING CR>)>)
+              (<EQUAL? ,MENU-LEVEL 5>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 0>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <SETG MENU-LEVEL 51>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,51-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <SETG MENU-LEVEL 52>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,52-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <SETG MENU-LEVEL 53>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,53-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<G? ,P-NUMBER 3>
+                      <TELL ,NO-MEANING CR>)>)
+              (<EQUAL? ,MENU-LEVEL 6>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 0>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,MAIN-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (<EQUAL? ,P-NUMBER 1>
+                      <SETG MENU-LEVEL 61>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,61-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>
+                      <COND (<IN? ,FLOYD ,HERE>
+                             <SETG FLOYD-SPOKE T>
+                             <TELL
+"Floyd, peering over your shoulder, says \"Oh, I love that game! Solved every
+problem, except couldn't figure out how to get into white house.\"" CR>)>)
+                     (<EQUAL? ,P-NUMBER 2>
+                      <SETG MENU-LEVEL 62>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,62-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<EQUAL? ,P-NUMBER 3>
+                      <SETG MENU-LEVEL 63>
+                      <TELL ,TEXT-APPEARS CR>
+                      <SETG SCREEN-TEXT ,63-TEXT>
+                      <TELL ,SCREEN-TEXT CR>
+                      <TELL ,MORE-INFO CR>)
+                     (<G? ,P-NUMBER 3>
+                      <TELL ,NO-MEANING CR>)>)
+              (<AND <G? ,MENU-LEVEL 10>
+                    <L? ,MENU-LEVEL 20>>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 1>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,HISTORY-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (T
+                      <TELL ,LOW-END CR>)>)
+              (<AND <G? ,MENU-LEVEL 20>
+                    <L? ,MENU-LEVEL 30>>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 2>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,CULTURE-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (T
+                      <TELL ,LOW-END CR>)>)
+              (<AND <G? ,MENU-LEVEL 30>
+                    <L? ,MENU-LEVEL 40>>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 3>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,TECHNOLOGY-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (T
+                      <TELL ,LOW-END CR>)>)
+              (<AND <G? ,MENU-LEVEL 40>
+                    <L? ,MENU-LEVEL 50>>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 4>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,GEOGRAPHY-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (T
+                      <TELL ,LOW-END CR>)>)
+              (<AND <G? ,MENU-LEVEL 50>
+                    <L? ,MENU-LEVEL 60>>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 5>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,PROJECT-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (T
+                      <TELL ,LOW-END CR>)>)
+              (<AND <G? ,MENU-LEVEL 60>
+                    <L? ,MENU-LEVEL 70>>
+               <COND (<EQUAL? ,P-NUMBER 0>
+                      <SETG MENU-LEVEL 6>
+                      <TELL ,SCREEN-CLEARS CR>
+                      <SETG SCREEN-TEXT ,INTERLOGIC-MENU>
+                      <TELL ,SCREEN-TEXT CR>)
+                     (T
+                      <TELL ,LOW-END CR>)>)>>
+
+<GLOBAL SCREEN-TEXT <>>
+
+<GLOBAL NO-MEANING "The terminal feeps, and a message briefly appears on the
+screen explaining that typing that character has no meaning at the moment.">
+
+<GLOBAL SCREEN-CLEARS "The screen clears and a different menu appears:|">
+
+<GLOBAL TEXT-APPEARS "The screen clears and some text appears:|">
+
+<GLOBAL MORE-INFO
+"|
+\"Foor moor deetaald infoormaashun on xis tapik, konsult xe
+liibrereein foor xe aproopreeit spuulz. Tiip zeeroo tuu goo tuu
+aa hiiyur levul.\"">
+
+<GLOBAL LOW-END "\"Yuu hav reect xe loowist levul uv xe liibreree indeks.
+Pleez tiip zeeroo tuu goo tuu aa hiiyur levul. If yuu reekwiir
+asistins, kawl xe liibrereein.\"">
+
+<GLOBAL MAIN-MENU
+"    1. Histooree|
+    2. Kulcur|
+    3. Teknolojee|
+    4. Jeeografee|
+    5. Xe Prajekt|
+    6. Inturlajik Gaamz">
+
+<GLOBAL HISTORY-MENU
+"    0. Maan Menyuu|
+    1. Raashul Orijinz|
+    2. Graat Hiiaatus|
+    3. Riiz uv xe Nuu Teknakrasee">
+
+<GLOBAL CULTURE-MENU
+"    0. Maan Menyuu|
+    1. Lituracur|
+    2. Art|
+    3. Muusik">
+
+<GLOBAL TECHNOLOGY-MENU
+"    0. Maan Menyuu|
+    1. Medisin|
+    2. Agrikultcur|
+    3. Tranzportaashun|
+    4. Roobotiks|
+    5. Planateree Sistumz">
+
+<GLOBAL GEOGRAPHY-MENU
+"    0. Maan Menyuu|
+    1. Planit Landmasiz|
+    2. Undursee Reejunz|
+    3. Spaas Kolooneez">
+
+<GLOBAL PROJECT-MENU
+"    0. Maan Menyuu|
+    1. Orijinz uv xe Dizeez|
+    2. Xe Instalaashunz|
+    3. Prajekt Kuntrool|">
+
+<GLOBAL INTERLOGIC-MENU
+"    0. Maan Menyuu|
+    1. Zoork|
+    2. Dedliin and Witnis|
+    3. Starkros and Suspendid">
+
+<GLOBAL 11-TEXT
+"\"Xe aancint lejindz saa xat ships frum xe Sekund Yuunyun wuns fild ar skiis
+and wil wun daa kum agen. Madern siientists, huu wuns dismist suc lejindz
+and felt xat liif eevolvd heer on Resida, now feel xat ar planit wuz reelee
+setuld bii men uv xe Sekund Yuunyun.\"">
+
+<GLOBAL 12-TEXT
+"\"Wexur oor not xe lejindz uv xe Sekund Yuunyun ar truu, arkeeoloojists ar
+surtin xat aa peereeid uv hii teknoolojikul and sooshul deevelupmint egzistid
+xowzindz uv yeerz agoo, but foor sum reezin sivilizaashun slid intuu aa dark
+aaj lasteeng senshureez.\"">
+
+<GLOBAL 13-TEXT
+"\"Wixin xe last fiiv senshureez, xe riiz uv xe Nuu Teknakrasee haz reeturnd
+sivilizaashun tuu xe levul ataand beefoor xe Hiiaatus. Sooshul histooreeunz
+xink xat wen xe Dizeez struk, ar raas had aceevd aa levul uv sufistikaashun
+eekwal tuu xe pree-Hiiaatus.\"">
+
+<GLOBAL 21-TEXT
+"\"Menee volyuumz on xe deevelupmint uv Residan lituracur ar on fiil in xe
+liibreree. Alsoo, kopeez uv awl graat wurks uv riiteeng, sum daateeng bak tuu
+xe mixikul daaz uv xe Sekund Yuunyun, ar lookaatid heer.\"">
+
+<GLOBAL 22-TEXT
+"\"Histoorikul studeez and reeproodukshunz uv Residan art ar avaalibul heer
+foor awl xree maajur peereeids uv art deevelupmint: xe Primitiv peereeid, xe
+Renasans peereeid uv xe urlee poost-Hiiaatus, and xe moost reesint peereeid
+uv videeoo and laazur art.\"">
+
+<GLOBAL 23-TEXT
+"\"Reekoordeengz uv awl impoortint kompoozishunz uv xe last fiiv hundrid yeerz
+ar lookaatid in xe liibrereez data banks.\"">
+
+<GLOBAL 31-TEXT
+"\"Awl maajur dizeezuz hav bin kyuuribul foor oovur aa senshuree. Xe
+deevelupmint uv kriioojeniks now alowz dokturz tuu put paashints in staasis
+until aa kyuur iz fownd. Avurij Residan liif ekspektinsee iz now 147
+revooluushunz.\"">
+
+<GLOBAL 32-TEXT
+"\"Durt farmeeng iz awl but obsooleet, wix moost fuud kumeeng frum xe
+hiidrooponiks kompleksiz oor xe undurwatur aljee farmz.\"">
+
+<GLOBAL 33-TEXT
+"\"Planateree travul iz noormulee priivit skuutur foor shoort hops, and aarbus
+foor longur trips.  Spaas travul haz reesintlee bin revooluushuniizd bii xe
+invenshun uv nuukleeur-fyuuld enjinz.\"">
+
+<GLOBAL 34-TEXT
+"\"Untoold senshureez agoo, entiir teemz uv roobots wur reekwiird tuu purfoorm
+eevin xe simplist tasks...wun roobot wud handul viszuuwul funkshunz, wun roobot
+wud handul awditooree funkshunz, and soo foorx. Now, xanks tuu advansis in
+mineeatshurizaashun, xeez tasks kan bee purfoormd bii singul roobots, suc az
+xe multiipurpis B-19 seereez.\"">
+
+<GLOBAL 35-TEXT
+"\"Xe priimeree Planateree Sistumz ar Kors Kuntrool (foor maantaaneeng an
+iideel kliimit), Deefens (foor destroieeng pootenshulee daanjuris meeteeoorz),
+and xe reesintlee adid Prajekt Kuntrool (foor monitureeng proogres uv
+Xe Prajekt).\"">
+
+<GLOBAL 41-TEXT
+"\"Sins xe staabulizaashun uv xe oorbit uv Resida, preesiislee 47.79 pursent
+uv xe planits surfis iz land. Xe land iz diviidid intuu tuu priimeree
+landmasiz, Andoor and Fruulik, plus siks lesur landmasiz. Xe gloobul kapitul,
+Pilandoor, iz on xe eesturn koost uv Andoor.\"">
+
+<GLOBAL 42-TEXT
+"\"Xe furst undursee habutats wur oopind in 2992, and tuudaa, neerlee tuu
+senshureez laatur, abowt 9 pursent uv Residaz popyuulaashun livz in wun
+uv xe twentee sprawleeng undursee siteez.\"">
+
+<GLOBAL 43-TEXT
+"\"Alxoo setulmints hav bin establisht on Fristin, and on sevrul uv xe muunz
+uv xe gas jiiunt Blustin, xe vast majooritee uv of-woorldurz liv in xe
+spaas kolooneez establisht at Residaz troojin points.\""> 
+
+<GLOBAL 51-TEXT
+"\"Xe oorijin uv Xe Dizeez haz bin linkt tuu xe Sentur foor Advanst Kriioojenik
+Reesurc, wic wuz kondukteeng reesurc intuu waaz uv ekstendeeng xe Kriioojenik
+peereeid indefinitlee. Alxoo xis reesurc wuz aa sukses, sumhow Xe Dizeez
+wuz reeleest and beegan spredeeng.\"">
+
+<GLOBAL 52-TEXT
+"\"Xe tuu kompleksiz wur establisht on xe twin peek platooz uv Kalamontee and
+Lawanda. Xeez lookaashunz wur coozin beekawz xaar hiit wud maak
+transpoortaashun and komyuunikaashunz eezeeur, and soo xat xe vast reeakturz
+and kriioojeniks caamburz kud bee kunstruktid in xe mowntinz beeloo.\"">
+
+<GLOBAL 53-TEXT
+"\"Faaz Wun: xe kunstrukshun uv xe Kalamontee and Lawanda Kompleksiz. Faaz
+Tuu: mass kriioojenik freezeeng uv Residan popyuulaashun. Faaz Xree:
+siimultaaneeus monitureeng uv kriioojeniks wiil awtoomaatid reesurc iz
+konduktid bii inkrediblee soofistikaatid kumpyuuturiizd fasiliteez. Faaz
+Foor: reeviivul and inokyuulaashun uv xe popyuulaashun.\"">
+
+<GLOBAL 61-TEXT
+"\"Xe Zoork triloojee, an adventshur klasik, taaks plaas in aa deeliitful
+but daanjuris undurgrownd seteeng.\"">
+
+<GLOBAL 62-TEXT
+"\"Dedliin iz xe furst graat misturee uv xe kumpyuutur aaj, and Witnis iz
+its wurxee suksesur.\"">
+
+<GLOBAL 63-TEXT
+"\"Starkros iz Infookamz miind-bendeeng siiens-fikshun adventshur. Suspendid
+iz aa kriioojenik siiens-fikshun niitmaar.\"">
+
+<OBJECT SPOOL-READER
+       (IN LIBRARY)
+       (DESC "microfilm reader")
+       (FDESC
+"On the desk is a machine with a screen and a small circular opening. It
+seems to be turned off.")
+       (LDESC
+"There is a microfilm reader on one of the tables.")
+       (SYNONYM READER SCREEN OPENIN MACHIN) 
+       (ADJECTIVE MICROF SMALL CIRCUL)
+       (CAPACITY 3)
+       (FLAGS LIGHTBIT CONTBIT SEARCHBIT OPENBIT)
+       (ACTION SPOOL-READER-F)>
+
+<GLOBAL SPOOL-TEXT <>>
+
+<ROUTINE SPOOL-READER-F ()
+        <COND (<VERB? LAMP-ON>
+               <COND (<FSET? ,SPOOL-READER ,ONBIT>
+                      <TELL "The spool reader is already on." CR>)
+                     (T
+                      <FSET ,SPOOL-READER ,ONBIT>
+                      <FSET ,SPOOL-READER ,TOUCHBIT> 
+                      <COND (<FIRST? ,SPOOL-READER>
+                             <TELL ,SPOOL-TEXT CR>)
+                            (T
+                             <TELL
+"The machine hums quietly, and the screen lights up with the phrase
+\"Pleez insurt spuul.\"" CR>)>)>)
+              (<VERB? LAMP-OFF>
+               <COND (<FSET? ,SPOOL-READER ,ONBIT>
+                      <FCLEAR ,SPOOL-READER ,ONBIT>
+                      <TELL "The spool reader is now off." CR>)
+                     (T
+                      <TELL "It's not on!" CR>)>)
+              (<VERB? EXAMINE>
+               <TELL
+"The machine has a small screen, and below that, a small circular opening.
+The screen is currently ">
+               <COND (<AND <FSET? ,SPOOL-READER ,ONBIT>
+                           <FIRST? ,SPOOL-READER>>
+                      <TELL "displaying some information:" CR>
+                      <TELL ,SPOOL-TEXT CR>)
+                     (T
+                      <TELL "blank." CR>)>)
+              (<VERB? READ>
+               <COND (<AND <FSET? ,SPOOL-READER ,ONBIT>
+                           <FIRST? ,SPOOL-READER>>
+                      <TELL ,SPOOL-TEXT CR>)
+                     (T
+                      <TELL "The screen is blank." CR>)>)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,SPOOL-READER>>
+               <COND (<FIRST? ,SPOOL-READER>
+                      <TELL "There's already a spool in the reader." CR>)
+                     (<EQUAL? ,PRSO ,GREEN-SPOOL>
+                      <SETG SPOOL-TEXT ,GREEN-TEXT>
+                      <MOVE ,GREEN-SPOOL ,SPOOL-READER>
+                      <FSET ,GREEN-SPOOL ,TRYTAKEBIT>
+                      <TELL ,SPOOL-FITS>
+                      <COND (<FSET? ,SPOOL-READER ,ONBIT>
+                             <TELL ,SOME-INFO>)>
+                      <TELL CR>)
+                     (<EQUAL? ,PRSO ,RED-SPOOL>
+                      <SETG SPOOL-TEXT ,RED-TEXT>
+                      <MOVE ,RED-SPOOL ,SPOOL-READER>
+                      <FSET ,RED-SPOOL ,TRYTAKEBIT>
+                      <TELL ,SPOOL-FITS>
+                      <COND (<FSET? ,SPOOL-READER ,ONBIT>
+                             <TELL ,SOME-INFO>)>
+                      <TELL CR>)
+                     (T
+                      <TELL "It doesn't fit in the circular opening." CR>)>)
+              (<VERB? CLOSE>
+               <NO-CLOSE>
+               <RTRUE>)>>
+
+<GLOBAL SPOOL-FITS "The spool fits neatly into the opening.">
+
+<GLOBAL SOME-INFO " Some information appears on the screen.">
+
+<GLOBAL GREEN-TEXT
+"\"Oonlee peepul wix propur traaneeng shud piilot xe helikopturz. Reekwiird
+ekwipmint inkluudz aa Helikoptur Akses Kard and aa Kuntrool Panul Kee. Xeez
+kan bee obtaand frum Tranzportaashun Stoorij.\"|
+The rest is all very technical.">
+
+<GLOBAL RED-TEXT
+"\"Xe jestaashun peereeid uv Xe Dizeez, folooweeng ekspoozur, vaareez
+treemenduslee frum pursin tuu pursin, raanjeeng frum wun daa tuu sevrul
+rootaashunz. Wuns xe furst simptumz ar shoon, dex alwaaz okurz in aat tuu
+ten daaz.|
+Xe priimeree simptum iz aa hii feevur. Xe sekunderee simptum iz aa sharp
+inkrees in xe amownt uv sleep needid eec niit.\"|
+The rest of the information is about symptoms which can be detected only by
+using complicated medical procedures.">
+
+<ROOM PROJECT-CORRIDOR-WEST
+      (IN ROOMS)
+      (DESC "Project Corridor West")
+      (LDESC
+"This is a curving hallway leading east and northwest. There is an opening
+to the west.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW" 25 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO SANFAC-F)
+      (EAST TO PROJECT-CORRIDOR)
+      (NW TO FORK)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM SANFAC-F
+      (IN ROOMS)
+      (DESC "SanFac F")
+      (LDESC
+"This is another dusty sanitary facility. Unlike the ones near the dorms,
+this one is smaller and has no bathing fixtures.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO PROJECT-CORRIDOR-WEST)
+      (OUT TO PROJECT-CORRIDOR-WEST)
+      (FLAGS FLOYDBIT RLANDBIT ONBIT)
+      (PSEUDO "FIXTURES" TOILET-PSEUDO "TOILET" TOILET-PSEUDO)>
+
+<ROOM PROJECT-CORRIDOR
+      (IN ROOMS)
+      (DESC "Project Corridor")
+      (LDESC
+"You are at the center of a long east-west hallway. A doorway, labelled
+\"PrajKon Awfis\", opens to the south.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO PROJECT-CORRIDOR-EAST)
+      (WEST TO PROJECT-CORRIDOR-WEST)
+      (SOUTH TO PROJCON-OFFICE)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM PROJCON-OFFICE
+      (IN ROOMS)
+      (DESC "ProjCon Office")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO PROJECT-CORRIDOR)
+      (SOUTH TO CRYO-ELEVATOR IF CRYO-ELEVATOR-DOOR IS OPEN
+       ELSE "You can't go that way.")
+      (EAST TO COMPUTER-ROOM)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL CRYO-ELEVATOR-DOOR)
+      (PSEUDO "MURAL" MURAL-PSEUDO "LOGO" LOGO-PSEUDO)
+      (ACTION PROJCON-OFFICE-F)>
+
+<ROUTINE PROJCON-OFFICE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This office looks like a headquarters of some kind. Exits lead north and
+east. The west wall displays a logo. ">
+               <COND (,COMPUTER-FIXED
+                      <TELL
+"The mural that previously adorned the south wall has slid away, revealing
+an open doorway to a large elevator!" CR>)
+                     (T
+                      <TELL
+"The south wall is completely covered by a garish mural which clashes
+with the other decor of the room." CR>)>)
+              (<AND <EQUAL? .RARG ,M-END>
+                    <IN? ,FLOYD ,HERE>
+                    <NOT ,MURAL-FLAG>>
+               <SETG MURAL-FLAG T>
+               <SETG FLOYD-SPOKE T>
+               <TELL
+"Floyd surveys the mural and scratches his head. \"I don't remember seeing
+this before,\" he comments." CR>)>>
+
+<GLOBAL MURAL-FLAG <>>
+
+<OBJECT CRYO-ELEVATOR-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "cryo-elevator door")
+       (SYNONYM DOOR)
+       (ADJECTIVE CRYO-ELEVATOR ELEVATOR)
+       (FLAGS NDESCBIT INVISIBLE)>
+
+<ROOM CRYO-ELEVATOR
+      (IN ROOMS)
+      (DESC "Cryo-Elevator")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH PER CRYO-EXIT-F)
+      (GLOBAL CRYO-ELEVATOR-DOOR)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "BUTTON" CRYO-BUTTON-PSEUDO)
+      (ACTION CRYO-ELEVATOR-F)>
+
+<ROUTINE CRYO-ELEVATOR-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a large, plain elevator with one solitary button and a door
+to the north which is ">
+               <DDESC ,CRYO-ELEVATOR-DOOR>
+               <TELL "." CR>)>>
+
+<ROUTINE CRYO-EXIT-F ()
+        <COND (<FSET? ,CRYO-ELEVATOR-DOOR ,OPENBIT>
+               <COND (,CRYO-SCORE-FLAG
+                      ,CRYO-ANTEROOM)
+                     (T
+                      ,PROJCON-OFFICE)>)
+              (T
+               <DOOR-CLOSED>
+               <RFALSE>)>>
+
+<GLOBAL CRYO-SCORE-FLAG <>>
+
+<ROUTINE I-CRYO-ELEVATOR-ARRIVE ()
+        <FSET ,CRYO-ELEVATOR-DOOR ,OPENBIT>
+        <TELL CR "The elevator door opens onto a room to the north." CR>>
+
+<ROOM CRYO-ANTEROOM
+      (IN ROOMS)
+      (DESC "Cryo-Anteroom")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION CRYO-ANTEROOM-F)>
+
+<ROUTINE CRYO-ANTEROOM-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"The elevator closes as you leave it, and you find yourself in a small,
+chilly room. To the north, through a wide arch, is an enormous chamber lined
+from floor to ceiling with thousands of cryo-units. You can see similar
+chambers beyond, and your mind staggers at the thought of the millions of
+individuals asleep for countless centuries.|
+|
+In the anteroom where you stand is a solitary cryo-unit, its cover frosted.
+Next to the cryo-unit is a complicated control panel." CR CR>)
+              (<EQUAL? .RARG ,M-END>
+               <TELL
+"A door slides open and a medical robot glides in. It opens the cryo-unit
+and administers an injection to its inhabitant. As the robot glides away, a
+figure rises from the cryo-unit -- a handsome, middle-aged woman with flowing
+red hair. She spends some time studying readouts from the control panel">
+               <COND (<AND ,COMM-FIXED ,DEFENSE-FIXED>
+                      <TELL ", pressing several keys." CR>)
+                     (T
+                      <TELL "." CR>)>
+               <COND (,COURSE-CONTROL-FIXED
+                      <TELL
+"|
+As other cryo-units in the chambers beyond begin opening, the woman turns
+to you, bows gracefully, and speaks in a beautiful, lilting
+voice. \"I am Veldina, leader of Resida. Thanks to you, the cure has been
+discovered, and the planetary systems repaired. We are eternally
+grateful.\"" CR>
+                      <COND (<AND ,COMM-FIXED ,DEFENSE-FIXED>
+                             <TELL
+"|
+\"You will also be glad to hear that a ship of your Stellar Patrol now orbits
+the planet. I have sent them the coordinates for this room.\" As if on cue,
+a landing party from the S.P.S. Flathead materializes nearby. Blather is with
+them, having been picked up from deep space in another escape pod, babbling
+cravenly. Captain Sterling of the Flathead acknowledges your heroic actions,
+and informs you of your promotion to Lieutenant First Class.|
+|
+As a team of mutant hunters head for the cryo-elevator, Veldina mentions that
+the grateful people of Resida offer you leadership of their world. Captain
+Sterling points out that, even if you choose to remain on Resida, Blather
+(demoted to Ensign Twelfth Class) has been assigned as your personal toilet
+attendant.|
+|
+You feel a sting from your arm and turn to see a medical robot moving
+away after administering the antidote for The Disease.|
+|
+A team of robot technicians step into the anteroom. They part their ranks, and
+a familiar figure comes bounding toward you! \"Hi!\" shouts Floyd, with
+uncontrolled enthusiasm. \"Floyd feeling better now!\" Smiling from ear to
+ear, he says, \"Look what Floyd found!\" He hands you a helicopter key,
+a reactor elevator card, and a paddleball set. \"Maybe we can use them in
+the sequel...\"" CR CR>
+                             <FINISH <>>)
+                            (T
+                             <TELL
+"|
+\"Unfortunately, a second ship from your Stellar Patrol has ">
+                             <COND (<NOT ,DEFENSE-FIXED>
+                                    <TELL
+"been destroyed by our malfunctioning meteor defenses.">)
+                                   (T
+                                    <TELL
+"come looking for survivors, and because of our malfunctioning communications
+system, has given up and departed.">)>
+                             <TELL
+" I fear that you are stranded on Resida, possibly forever. However, we
+show our gratitude by offering you an unlimited bank account and a house
+in the country.\"" CR CR>
+                             <FINISH <>>)>)
+                     (T
+                      <TELL
+"|
+She turns to you and, with a strained voice says, \"You have fixed our
+computer and a Cure has been discovered, and we are grateful. But alas,
+it was all in vain. Our planetary course control system has malfunctioned,
+and the orbit has now decayed beyond correction. Soon Resida will plunge
+into the sun.\"" CR CR>
+                      <COND (<AND ,COMM-FIXED ,DEFENSE-FIXED>
+                             <TELL
+"Veldina examines the control panel again. \"Fortunately, another ship from
+your Stellar Patrol has arrived, so at least you will survive.\" At that
+moment, a landing party from the S.P.S. Flathead materializes, and takes you
+away from the doomed world." CR CR>)>
+                      <FINISH <>>)>)>>
+
+;(OLD HACK ENDING:
+"A parchment containing Mike Dornbrook's phone number appears in the trophy
+case. A holographic image of the Dungeon Master appears in the air before
+you. He is carrying a letter from Chief Inspector Klutz. \"I hope to meet you
+in person some day,\" he says.")
+
+<ROOM PROJECT-CORRIDOR-EAST
+      (IN ROOMS)
+      (DESC "Project Corridor East")
+      (LDESC
+"The hallway ends here but continues back toward the west. Doorways lead
+north, south and east.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO LIBRARY-LOBBY)
+      (SOUTH TO COMPUTER-ROOM)
+      (WEST TO PROJECT-CORRIDOR)
+      (EAST TO MAIN-LAB)
+      (FLAGS RLANDBIT ONBIT)>
+
+<ROOM COMPUTER-ROOM
+      (IN ROOMS)
+      (DESC "Computer Room")
+      (LDESC
+"This is the main computer room for the Project. The only sign of activity is
+a glowing red light. The exits are north, west, and northeast. To the south
+is a small booth.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"  25  ;"NORTH"  0>)
+      (NORTH TO PROJECT-CORRIDOR-EAST)
+      (WEST TO PROJCON-OFFICE)
+      (SOUTH TO MINI-BOOTH)
+      (IN TO MINI-BOOTH)
+      (NE TO MAIN-LAB)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL LIGHTS)
+      (PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)>
+
+<GLOBAL COMPUTER-FLAG <>>
+
+<ROUTINE COMPUTER-ACTION ()
+        <SETG COMPUTER-FLAG T>
+        <SETG FLOYD-SPOKE T>
+        <TELL "Floyd examines the ">
+        <COND (<EQUAL? ,HERE ,COMPUTER-ROOM>
+               <TELL "glowing light">)
+              (T
+               <TELL "computer printout">)>
+        <TELL ". With a concerned frown, he says, \"Uh oh. Computer is
+broken. A Doctor-person once told Floyd that Computer is the most important
+part of the Project.\"" CR>>
+
+<OBJECT PRINT-OUT
+       (IN COMPUTER-ROOM)
+       (DESC "pile of computer output")
+       (SYNONYM PILE PAPER OUTPUT PRINTOUT)
+       (ADJECTIVE COMPUTER)
+       (SIZE 20)
+       (FLAGS ACIDBIT TAKEBIT READBIT)
+       (ACTION PRINT-OUT-F)>
+
+<ROUTINE PRINT-OUT-F ()
+        <COND (<VERB? READ EXAMINE>
+               <FIXED-FONT-ON>
+               <TELL
+"The printout is hundreds of pages long. It would take many chrons to
+read it all. The last page looks pretty interesting, though:|
+|
+\"Daalee Statis Reeport:|
+PREELIMINEREE REESURC:  100.000%|
+INTURMEEDEEIT REESURC:  100.000%|
+FIINUL REESURC:         100.000%|
+DRUG PROODUKSHUN:       100.000%|
+DRUG TESTEENG:           99.985%|
+Proojektid tiim tuu reeviivul prooseedzur:  0 daaz, 0.8 kronz|
+|
+|
+*** ALURT! ALURT! ***|
+Malfunkshun in Sekshun 384! Sumuneeng reepaar roobot.\"|
+|
+The printout ends at this point." CR>
+               <FIXED-FONT-OFF>)>>
+
+<ROOM MINI-BOOTH
+      (IN ROOMS)
+      (DESC "Miniaturization Booth")
+      (LDESC
+"This is a small room barely large enough for one person. Mounted on the wall
+is a small slot, and next to it a keyboard with numeric keys. The exit is to
+the north.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO COMPUTER-ROOM)
+      (OUT TO COMPUTER-ROOM)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL SLOT)
+      (PSEUDO "KEYBOARD" KEYBOARD-PSEUDO "BOOTH" IN-BOOTH-PSEUDO)>
+
+<OBJECT MINI-CARD
+       (IN BIO-LOCK-EAST)
+       (DESC "miniaturization access card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE MINIAT MINI ACCESS)
+       (SIZE 3)
+       (FLAGS TAKEBIT NDESCBIT INVISIBLE READBIT)
+       (VALUE 1)
+       (TEXT "The card is embossed \"minitcurizaashun akses kard.\"")
+       (ACTION MINI-CARD-F)>
+
+<ROUTINE MINI-CARD-F ()
+        <COND (<AND <FSET? ,MINI-CARD ,NDESCBIT>
+                    <VERB? RUB MOVE TURN SET TAKE PUSH PULL SMELL>>
+               <TELL "It's in the next room." CR>)>>
+
+<ROOM MAIN-LAB
+      (IN ROOMS)
+      (DESC "Main Lab")
+      (LDESC
+"This is the heart of the Project's vast laboratory complex. There are exits
+to the west and southwest, and heavy metal doors to the northeast and
+southeast. A small doorway leads south.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"  25  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO PROJECT-CORRIDOR-EAST)
+      (SOUTH TO LAB-STORAGE)
+      (SW TO COMPUTER-ROOM)
+      (SE TO BIO-LOCK-WEST IF BIO-DOOR-WEST IS OPEN)
+      (NE TO RADIATION-LOCK-WEST IF RAD-DOOR-WEST IS OPEN)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL BIO-DOOR-WEST RAD-DOOR-WEST)>
+
+<ROOM LAB-STORAGE
+      (IN ROOMS)
+      (DESC "Lab Storage")
+      (LDESC
+"This is a tiny room for the storage of laboratory supplies. The sole exit is
+to the north.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO MAIN-LAB)
+      (OUT TO MAIN-LAB)
+      (FLAGS RLANDBIT FLOYDBIT ONBIT)
+      (GLOBAL SHELVES)
+      (PSEUDO "RACK" CARPET-PSEUDO "SUPPLIES" SUPPLIES-PSEUDO)> 
+
+<OBJECT LAB-UNIFORM
+       (IN LAB-STORAGE)
+       (DESC "lab uniform")
+       (FDESC
+"Hanging on a rack is a pale blue lab uniform. Sewn onto its pocket is a
+non-descript logo.")
+       (SYNONYM UNIFORM SUIT POCKET LOGO)
+       (ADJECTIVE PALE BLUE LAB)
+       (SIZE 10)
+       (CAPACITY 5)
+       (FLAGS TAKEBIT CONTBIT SEARCHBIT WEARBIT)
+       (ACTION LAB-UNIFORM-F)>
+
+<GLOBAL UNIFORM-OPENED <>>
+
+<ROUTINE LAB-UNIFORM-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"It is a plain lab uniform. The logo above the pocket depicts a flame burning
+above some kind of sleep chamber. The pocket is ">
+               <DDESC ,LAB-UNIFORM>
+               <TELL "." CR>)
+              (<VERB? SEARCH OPEN>
+               <COND (<FSET? ,LAB-UNIFORM ,OPENBIT>
+                      <TELL "The pocket is already open." CR>)
+                     (T
+                      <FSET ,LAB-UNIFORM ,OPENBIT>
+                      <COND (,UNIFORM-OPENED
+                             <COND (<FIRST? ,LAB-UNIFORM>
+                                    <TELL
+"Opening the uniform's pocket reveals ">
+                                    <PRINT-CONTENTS ,LAB-UNIFORM>
+                                    <TELL "." CR>)
+                                   (T
+                                    <TELL "The pocket is empty." CR>)>)
+                            (T
+                             <FSET ,LAB-UNIFORM ,OPENBIT>
+                             <SETG UNIFORM-OPENED T>
+                             <TELL
+"You discover a small piece of paper and a teleportation access card in the
+pocket of the uniform." CR>)>)>)
+              (<AND <VERB? WEAR>
+                    <FSET? ,PATROL-UNIFORM ,WORNBIT>>
+               <TELL "It won't fit on top of the Patrol uniform." CR>)>>
+
+<OBJECT TELEPORTATION-CARD
+       (IN LAB-UNIFORM)
+       (DESC "teleportation access card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE TELEPO ACCESS)
+       (SIZE 3)
+       (FLAGS TAKEBIT READBIT)
+       (TEXT "The card is embossed \"teliportaashun akses kard.\"")>
+
+;<OBJECT MODULATOR-PIN
+       (IN LAB-UNIFORM)
+       (DESC "modulator pin")
+       (SYNONYM PIN)
+       (ADJECTIVE DIGGER MODULATOR)
+       (SIZE 2)
+       (FLAGS TAKEBIT)>
+
+<OBJECT COMBINATION-PAPER
+       (IN LAB-UNIFORM)
+       (DESC "piece of paper")
+       (SYNONYM PIECE PAPER)
+       (FLAGS ACIDBIT TAKEBIT READBIT)
+       (SIZE 2)
+       (ACTION COMBINATION-PAPER-F)>
+
+<ROUTINE COMBINATION-PAPER-F ()
+        <COND (<VERB? READ EXAMINE>
+               <TELL
+"Week uv 14-Juun--2882. Kombinaashun tuu Konfurins Ruum: " N ,NUMBER-NEEDED
+"." CR>)>>
+
+<ROOM BIO-LOCK-WEST
+      (IN ROOMS)
+      (DESC "Bio Lock West")
+      (LDESC
+"This is the first half of a sterilization chamber to prevent contamination
+of the delicate biological experiments in the Bio Lab which lies beyond. The
+door to the west leads to the main lab, and the bio lock continues eastward.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST"10 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO BIO-LOCK-EAST)
+      (WEST TO MAIN-LAB IF BIO-DOOR-WEST IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL BIO-DOOR-WEST)>
+
+<ROOM BIO-LOCK-EAST
+      (IN ROOMS)
+      (DESC "Bio Lock East")
+      (LDESC
+"The is the second half of the sterilization chamber leading from the main
+lab to the Bio Lab. The door to the east, leading to the Bio Lab, has a
+window. The bio lock continues to the west.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST"10 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO BIO-LAB IF BIO-DOOR-EAST IS OPEN)
+      (WEST TO BIO-LOCK-WEST)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL BIO-DOOR-EAST WINDOW)
+      (ACTION BIO-LOCK-EAST-F)>
+
+<ROUTINE BIO-LOCK-EAST-F (RARG)
+        <COND (<AND <EQUAL? .RARG ,M-END>
+                    <IN? ,FLOYD ,HERE>
+                    <FSET? ,FLOYD ,RLANDBIT>
+                    <NOT <EQUAL? ,FLOYD ,WINNER>>>
+               <COND (,FLOYD-WAITING
+                      <COND (<G? ,WAITING-COUNTER 3>
+                             <SETG FLOYD-WAITING <>>
+                             <SETG FLOYD-GAVE-UP T>
+                             <SETG FLOYD-SPOKE T>
+                             <SETG FLOYD-FOLLOW <>>
+                             <MOVE ,FLOYD ,BIO-LOCK-WEST>
+                             <ENABLE <QUEUE I-FLOYD 1>>
+                             <TELL
+"\"Okay,\" says Floyd with uncharacteristic annoyance. \"Forget about the
+stupid card.\" He goes to the other end of the bio-lock and sulks." CR>)
+                            (<NOT ,FLOYD-FORAYED>
+                             <SETG FLOYD-SPOKE T>
+                             <SETG WAITING-COUNTER <+ ,WAITING-COUNTER 1>>
+                             <TELL
+"Floyd looks at you with a dash of impatience and a healthy helping of
+nervousness. \"Well?\" he asks. \"Are you going to open the door?\"" CR>)>)
+                     (<AND <NOT ,FLOYD-GAVE-UP>
+                           <NOT ,FLOYD-PEERED>>
+                      <SETG FLOYD-SPOKE T>
+                      <SETG FLOYD-PEERED T>
+                      <ENABLE <QUEUE I-CLEAR-FLOYD-PEER 40>>
+                      <FCLEAR ,MINI-CARD ,INVISIBLE>
+                      <TELL
+"Floyd stands on his tiptoes and peers in the window. ">
+                      <COND (,COMPUTER-FLAG
+                             <SETG FLOYD-WAITING T>
+                             <TELL
+"\"Looks dangerous in there,\" says Floyd. \"I don't think you should go
+inside.\" He peers in again. \"We'll need card there to fix computer. Hmmm...
+I know! Floyd will get card. Robots are tough. Nothing can hurt robots. You
+open the door, then Floyd will rush in. Then you close door. When Floyd knocks,
+open door again. Okay? Go!\" Floyd's voice trembles slightly as he waits for
+you to open the door.">)
+                            (T
+                             <TELL
+"\"Ooo, look,\" he says. \"There's a miniaturization booth access card!\"">)>
+                      <TELL CR>)>)>> 
+
+<GLOBAL FLOYD-PEERED <>>
+
+<ROUTINE I-CLEAR-FLOYD-PEER ()
+        <SETG FLOYD-PEERED <>>
+        <RFALSE>>
+
+<ROOM RADIATION-LOCK-WEST
+      (IN ROOMS)
+      (DESC "Radiation Lock West")
+      (LDESC
+"This is the western half of a decontamination chamber to prevent dangerous
+radioactive materials from leaving the Radiation Lab which lies to the east.
+The door leads west to the main lab.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO RADIATION-LOCK-EAST)
+      (WEST TO MAIN-LAB IF RAD-DOOR-WEST IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL RAD-DOOR-WEST)>
+
+<ROOM RADIATION-LOCK-EAST
+      (IN ROOMS)
+      (DESC "Radiation Lock East")
+      (LDESC
+"This is the eastern half of the decontamination chamber. The door to the
+east leads to the Radiation Lab, and the chamber continues westward. A sign
+on the wall reads \"WORNEENG! Raadeeaashun suuts must bee worn beeyond xis
+point.\"")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO RADIATION-LAB IF RAD-DOOR-EAST IS OPEN)
+      (WEST TO RADIATION-LOCK-WEST)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL RAD-DOOR-EAST)>
+
+<OBJECT BIO-DOOR-EAST
+       (IN LOCAL-GLOBALS)
+       (DESC "lab door")
+       (SYNONYM DOOR)
+       (ADJECTIVE LAB)
+       (FLAGS DOORBIT NDESCBIT)
+       (ACTION BIO-DOOR-EAST-F)>
+
+<OBJECT BIO-DOOR-WEST
+       (IN LOCAL-GLOBALS)
+       (DESC "bio-lock door")
+       (SYNONYM DOOR)
+       (ADJECTIVE BIO-LOCK)
+       (FLAGS DOORBIT NDESCBIT)
+       (ACTION BIO-DOOR-WEST-F)>
+
+<OBJECT RAD-DOOR-EAST
+       (IN LOCAL-GLOBALS)
+       (DESC "lab door")
+       (SYNONYM DOOR)
+       (ADJECTIVE LAB)
+       (FLAGS DOORBIT NDESCBIT)
+        (ACTION RAD-DOOR-EAST-F)>
+
+<OBJECT RAD-DOOR-WEST
+       (IN LOCAL-GLOBALS)
+       (DESC "radiation-lock door")
+       (SYNONYM DOOR)
+       (ADJECTIVE RADIATION)
+       (FLAGS DOORBIT NDESCBIT)
+       (ACTION RAD-DOOR-WEST-F)>
+
+<ROUTINE BIO-DOOR-EAST-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (<FSET? ,BIO-DOOR-WEST ,OPENBIT>
+                      <TELL ,BOTH-DOORS CR>)
+                     (<AND ,FLOYD-WAITING
+                           <FSET? ,FLOYD ,RLANDBIT>
+                           <EQUAL? ,FORAY-COUNTER 0>>
+                      <ENABLE <QUEUE I-FLOYD-FORAY -1>>
+                      <SETG FLOYD-FORAYED T>
+                      <FSET ,BIO-DOOR-EAST ,OPENBIT>
+                      <REMOVE ,FLOYD>
+                      <DISABLE <INT I-FLOYD>>
+                      <TELL
+"The door opens and Floyd, pausing only for the briefest moment, plunges into
+the Bio Lab. Immediately, he is set upon by hideous, mutated monsters! More
+are heading straight toward the open door! Floyd shrieks and yells to you to
+close the door." CR>)
+                     (<AND <NOT ,FLOYD-FORAYED>
+                           <EQUAL? <GET <INT I-CHASE-SCENE> ,C-ENABLED?> 0>>
+                      <JIGS-UP
+"Opening the door reveals a Bio-Lab full of horrible mutations. You stare at
+them, frozen with horror. Growling with hunger and delight, the mutations
+march into the bio-lock and devour you.">)
+                     (T
+                      <FSET ,BIO-DOOR-EAST ,OPENBIT>
+                      <ENABLE <QUEUE I-BIO-EAST-CLOSES 30>>
+                      <TELL ,DOOR-OPENS CR>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <COND (<EQUAL? ,FORAY-COUNTER 4>
+                             <SETG C-ELAPSED 95>)>
+                      <FCLEAR ,BIO-DOOR-EAST ,OPENBIT>
+                      <TELL "The door closes">
+                      <COND (<EQUAL? <GET <INT I-CHASE-SCENE> ,C-ENABLED?> 1>
+                             <TELL ", but not soon enough!" CR>)
+                            (T
+                             <TELL "." CR>)>)
+                     (T
+                      <IS-CLOSED>)>)>>
+
+<ROUTINE I-BIO-EAST-CLOSES ()
+        <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+               <FCLEAR ,BIO-DOOR-EAST ,OPENBIT>
+               <COND (<EQUAL? ,HERE ,BIO-LOCK-EAST ,BIO-LOCK-WEST ,BIO-LAB>
+                      <TELL CR 
+"The door at the eastern end of the bio-lock closes silently." CR>)>)>>
+
+<ROUTINE BIO-DOOR-WEST-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,BIO-DOOR-WEST ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <TELL ,BOTH-DOORS CR>)
+                     (T
+                      <TELL ,DOOR-OPENS CR>
+                      <ENABLE <QUEUE I-BIO-WEST-CLOSES 30>>
+                      <FSET ,BIO-DOOR-WEST ,OPENBIT>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,BIO-DOOR-WEST ,OPENBIT>
+                      <FCLEAR ,BIO-DOOR-WEST ,OPENBIT>
+                      <TELL ,DOOR-CLOSES CR>)
+                     (T
+                      <IS-CLOSED>)>)>>
+
+<ROUTINE I-BIO-WEST-CLOSES ()
+        <COND (<FSET? ,BIO-DOOR-WEST ,OPENBIT>
+               <FCLEAR ,BIO-DOOR-WEST ,OPENBIT>
+               <COND (<EQUAL? ,HERE ,BIO-LOCK-WEST ,BIO-LOCK-EAST ,MAIN-LAB>
+                      <TELL CR
+"The door at the western end of the bio-lock closes silently." CR>)>)>>
+
+<ROUTINE RAD-DOOR-EAST-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,RAD-DOOR-EAST ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (<FSET? ,RAD-DOOR-WEST ,OPENBIT>
+                      <TELL ,BOTH-DOORS CR>)
+                     (T
+                      <FSET ,RAD-DOOR-EAST ,OPENBIT>
+                      <TELL ,DOOR-OPENS CR>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,RAD-DOOR-EAST ,OPENBIT>
+                      <FCLEAR ,RAD-DOOR-EAST ,OPENBIT>
+                      <TELL ,DOOR-CLOSES CR>)
+                     (T
+                      <IS-CLOSED>)>)>>
+
+<ROUTINE RAD-DOOR-WEST-F ()
+        <COND (<VERB? OPEN>
+               <COND (<FSET? ,RAD-DOOR-WEST ,OPENBIT>
+                      <ALREADY-OPEN>)
+                     (<FSET? ,RAD-DOOR-EAST ,OPENBIT>
+                      <TELL ,BOTH-DOORS CR>)
+                     (T
+                      <TELL ,DOOR-OPENS CR>
+                      <FSET ,RAD-DOOR-WEST ,OPENBIT>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,RAD-DOOR-WEST ,OPENBIT>
+                      <FCLEAR ,RAD-DOOR-WEST ,OPENBIT>
+                      <TELL ,DOOR-CLOSES CR>)
+                     (T
+                      <IS-CLOSED>)>)>>
+
+<GLOBAL BOTH-DOORS
+"A very bored-sounding recorded voice explains that, in order to prevent
+contamination, both lock doors cannot be open simultaneously.">
+
+<GLOBAL DOOR-OPENS "The door opens.">
+
+<GLOBAL DOOR-CLOSES "The door closes.">
+
+<GLOBAL FLOYD-WAITING <>>
+
+<GLOBAL WAITING-COUNTER 0>
+
+<GLOBAL FLOYD-GAVE-UP <>>
+
+<GLOBAL FLOYD-FORAYED <>>
+
+<GLOBAL FORAY-COUNTER 0>
+
+<ROUTINE I-FLOYD-FORAY ()
+        <SETG FORAY-COUNTER <+ ,FORAY-COUNTER 1>>
+        <COND (<EQUAL? ,FORAY-COUNTER 2>
+               <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <CRLF>
+                      <MONSTER-DEATH>)
+                     (T
+                      <TELL CR
+"From within the lab you hear ferocious growlings, the sounds of a skirmish,
+and then a high-pitched metallic scream!" CR>)>)
+              (<EQUAL? ,FORAY-COUNTER 3>
+               <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <CRLF>
+                      <MONSTER-DEATH>)
+                     (T
+                      <TELL CR
+"You hear, slightly muffled by the door, three fast knocks, followed
+by the distinctive sound of tearing metal." CR>)>)
+              (<EQUAL? ,FORAY-COUNTER 4>
+               <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <MOVE ,FLOYD ,HERE>
+                      <TELL CR
+"Floyd stumbles out of the Bio Lab, clutching the mini-booth card. The
+mutations rush toward the open doorway!" CR>)
+                     (T
+                      <TELL CR
+"The three knocks come again, followed by a wild scream. Then, all is silence
+from within the Bio Lab, except for an occasional metallic crunch." CR>
+                      <FCLEAR ,FLOYD ,RLANDBIT>
+                      <DISABLE <INT I-FLOYD-FORAY>>)>)
+              (<EQUAL? ,FORAY-COUNTER 5>
+               <COND (<FSET? ,BIO-DOOR-EAST ,OPENBIT>
+                      <CRLF>
+                      <MONSTER-DEATH>)
+                     (T
+                      <REMOVE ,FLOYD>
+                      <FCLEAR ,FLOYD ,RLANDBIT>
+                      <DISABLE <INT I-FLOYD>>
+                      <FSET ,FLOYD ,INVISIBLE>
+                      <MOVE ,DEAD-FLOYD ,HERE>
+                      <MOVE ,MINI-CARD ,BIO-LOCK-EAST>
+                      <FSET ,MINI-CARD ,TOUCHBIT>
+                      <SETG SCORE <+ ,SCORE 2>>
+                      <TELL CR
+"And not a moment too soon! You hear a pounding from the door as the monsters
+within vent their frustration at losing their prey.|
+|
+Floyd staggers to the ground, dropping the mini card. He is badly torn apart,
+with loose wires and broken circuits everywhere. Oil flows from his
+lubrication system. He obviously has only moments to live.|
+|
+You drop to your knees and cradle Floyd's head in your lap. Floyd looks up
+at his friend with half-open eyes. \"Floyd did it ... got card. Floyd a
+good friend, huh?\" Quietly, you sing Floyd's favorite song, the Ballad
+of the Starcrossed Miner:|
+|
+O, they ruled the solar system|
+Near ten thousand years before|
+In their single starcrossed scout ships|
+Mining ast'roids, spinning lore.|
+|
+Then one true courageous miner|
+Spied a spaceship from the stars|
+Boarded he that alien liner|
+Out beyond the orb of Mars.|
+|
+Yes, that ship was filled with danger|
+Mighty monsters barred his way|
+Yet he solved the alien myst'ries|
+Mining quite a lode that day.|
+|
+O, they ruled the solar system|
+Near ten thousand years before|
+'Til one brave advent'rous spirit|
+Brought that mighty ship to shore.|
+|
+As you finish the last verse, Floyd smiles with contentment, and then his
+eyes close as his head rolls to one side. You sit in silence for a moment,
+in memory of a brave friend who gave his life so that you might live." CR>
+                      <FCLEAR ,FLOYD ,RLANDBIT>
+                      <FCLEAR ,MINI-CARD ,NDESCBIT>
+                      <DISABLE <INT I-FLOYD-FORAY>>)>)>>
+
+<ROUTINE MONSTER-DEATH ()
+        <JIGS-UP
+"The biological nightmares reach you. Gripping coils wrap around your limbs
+as powerful teeth begin tearing at your flesh. Something bites your leg,
+and you feel a powerful poison begin to work its numbing effects...">>
+
+<ROOM BIO-LAB
+      (IN ROOMS)
+      (DESC "Bio Lab")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO LAB-OFFICE IF OFFICE-DOOR IS OPEN)
+      (WEST TO BIO-LOCK-EAST IF BIO-DOOR-EAST IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL BIO-DOOR-EAST WINDOW OFFICE-DOOR)
+      (PSEUDO "CRACK" CRACK-PSEUDO)
+      (ACTION BIO-LAB-F)>
+
+<ROUTINE BIO-LAB-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a huge laboratory filled with many biological experiments.
+The lighting is ">
+               <COND (,LAB-LIGHTS-ON
+                      <TELL "bright.">)
+                     (T
+                      <TELL
+"dim, and a faint blue glow comes from a gaping crack in the northern wall.">)>
+              <TELL
+" Some of the experiments seem to be out of control..." CR>)
+        (<EQUAL? .RARG ,M-END>
+         <ENABLE <QUEUE I-CHASE-SCENE -1>>
+         <COND (,LAB-FLOODED
+                      <TELL
+"The air is filled with mist, which is affecting the mutants. They appear
+to be stunned and confused, but are slowly recovering." CR>
+                      <COND (<NOT <FSET? ,GAS-MASK ,WORNBIT>>
+                             <JIGS-UP
+" Unfortunately, you don't seem to be that hardy.">)>)
+                     (T
+                      <JIGS-UP
+"The mutants attack you and rip you to shreds within seconds.">)>)>> 
+
+<GLOBAL EXTRA-MOVE-FLAG <>>
+
+<GLOBAL CRYO-MOVE-FLAG <>>
+
+<GLOBAL LAST-CHASE-ROOM <>>
+
+<GLOBAL SECOND-TO-LAST-ROOM <>>
+
+<ROUTINE I-CHASE-SCENE ()
+        <COND (<AND <IN? ,RAT-ANT ,HERE>
+                    <NOT ,LAB-FLOODED>>
+               <JIGS-UP
+"|
+Dozens of hungry eyes fix on you as the mutations surround you
+and begin feasting.">)
+              (<NOT ,LAB-FLOODED>
+               <COND (<AND <EQUAL? ,HERE ,BIO-LOCK-WEST>
+                           <NOT ,EXTRA-MOVE-FLAG>>
+                      <SETG EXTRA-MOVE-FLAG T>
+                      <TELL CR
+"The monsters gallop toward you, smacking their lips." CR>)
+                     (<AND <EQUAL? ,HERE ,CRYO-ELEVATOR>
+                           <NOT ,CRYO-MOVE-FLAG>>
+                      <SETG CRYO-MOVE-FLAG T>
+                      <TELL CR
+"The monsters are storming straight toward the elevator door!" CR>)
+                     (<AND <EQUAL? ,HERE ,SECOND-TO-LAST-ROOM>
+                           <VERB? WALK>>
+                      <JIGS-UP
+"|
+You stupidly run right into the jaws of the pursuing mutants.">)
+                     (T
+                      <COND (<EQUAL? ,HERE ,CRYO-ELEVATOR>
+                             <CRLF>
+                             <MONSTER-DEATH>)>
+                      <MOVE ,RAT-ANT ,HERE>
+                      <MOVE ,TRIFFID ,HERE>
+                      <MOVE ,TROLL ,HERE>
+                      <MOVE ,GRUE ,HERE>
+                      <TELL CR "The mutants ">
+                      <COND (<EQUAL? ,HERE ,BIO-LOCK-WEST>
+                             <TELL "are almost upon you now!" CR>)
+                            (T
+                             <TELL "burst into the room right on your heels! "
+                                   <PICK-ONE ,MONSTER-ENTRANCES> CR>)>)>)>
+        <SETG SECOND-TO-LAST-ROOM ,LAST-CHASE-ROOM>
+        <SETG LAST-CHASE-ROOM ,HERE>>
+
+<GLOBAL MONSTER-ENTRANCES
+       <PLTABLE
+        "The growling humanoid is charging straight at you, waving his
+axe-like implement!"
+        "A pair of slavering fangs removes part of your clothing!"
+        "Needle-sharp mandibles nip at your arms!"
+        "The mobile plant whips its poisonous tentacles against
+your ankles!">>
+
+<ROOM RADIATION-LAB
+      (IN ROOMS)
+      (DESC "Radiation Lab")
+      (LDESC 
+"This room is filled with unfathomable equipment and large canisters bearing
+radioactive warnings. Many of the canisters are split open. You can see the
+Bio Lab through a large crack in the south wall. Sinister-looking forms move
+about within the Bio Lab. Although the lights here are off, the room is
+suffused with a pale blue glow.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO RADIATION-LOCK-EAST IF RAD-DOOR-EAST IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL TABLES RAD-DOOR-EAST)
+      (PSEUDO "CRACK" CRACK-PSEUDO "EQUIPM" EQUIPMENT-PSEUDO)
+      (ACTION RADIATION-LAB-F)>
+
+<ROUTINE RADIATION-LAB-F (RARG)
+        <COND (<AND <EQUAL? .RARG ,M-ENTER>
+                    <NOT <FSET? ,RADIATION-LAB ,TOUCHBIT>>>
+               <ENABLE <QUEUE I-NUKED-BLUE 50>>)>>
+
+<GLOBAL NUKED-COUNTER 0>
+
+<ROUTINE I-NUKED-BLUE ()
+        <ENABLE <QUEUE I-NUKED-BLUE -1>>
+        <SETG NUKED-COUNTER <+ ,NUKED-COUNTER 1>>
+        <COND (<EQUAL? ,NUKED-COUNTER 1>
+               <TELL CR "You suddenly feel sick and dizzy." CR>)
+              (<EQUAL? ,NUKED-COUNTER 2>
+               <TELL CR
+"You feel incredibly nauseous and begin vomiting. Also, all your
+hair has fallen out.">
+               <COND (<IN? ,FLOYD ,HERE>
+                      <TELL
+" Floyd points at you and laughs hysterically. \"You look funny with no
+hair,\" he gasps.">)>
+               <CRLF>)
+              (<EQUAL? ,NUKED-COUNTER 3>
+               <JIGS-UP
+"|
+It seems you have picked up a bad case of radiation poisoning.">)>>
+
+<OBJECT BROWN-SPOOL
+       (IN RADIATION-LAB)
+       (DESC "brown spool")
+       (FDESC
+"Sitting on a long table is a small brown spool.")
+       (SYNONYM SPOOL SPOOLS OBJECT)
+       (ADJECTIVE BROWN SMALL)
+       (SIZE 3)
+       (TEXT
+"The spool is labelled \"Instrukshunz foor Reepaareeng Reepaar Roobots.\"")
+       (FLAGS ACIDBIT TAKEBIT READBIT)>
+
+<OBJECT LAMP
+       (IN RADIATION-LAB)
+       (DESC "portable lamp")
+       (FDESC
+"There is a powerful portable lamp here, currently off.")
+       (SYNONYM LAMP LANTERN LIGHT)
+       (ADJECTIVE POWERFUL PORTABLE)
+       (SIZE 20)
+       (FLAGS TAKEBIT)
+       (ACTION LAMP-F)>
+
+<ROUTINE LAMP-F ()
+        <COND (<VERB? LAMP-ON>
+               <COND (<FSET? ,LAMP ,ONBIT>
+                      <TELL "It is on." CR>)
+                     (T
+                      <FSET ,LAMP ,ONBIT>
+                      <FSET ,LAMP ,TOUCHBIT>
+                      <TELL "The lamp is now producing a bright light." CR>)>)
+              (<VERB? LAMP-OFF>
+               <COND (<FSET? ,LAMP ,ONBIT>
+                      <FCLEAR ,LAMP ,ONBIT>
+                      <TELL "The lamp goes dark." CR>)
+                     (T
+                      <TELL "It isn't on." CR>)>)>>
+
+<ROOM LAB-OFFICE
+      (IN ROOMS)
+      (DESC "Lab Office")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO BIO-LAB IF OFFICE-DOOR IS OPEN)
+      (SOUTH TO AUXILIARY-BOOTH)
+      (IN TO AUXILIARY-BOOTH)
+      (GLOBAL OFFICE-DOOR)
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "FILES" CABINETS-PSEUDO "BOOTH" NEAR-BOOTH-PSEUDO)
+      (ACTION LAB-OFFICE-F)>
+
+<ROUTINE LAB-OFFICE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL 
+"This is the office for storing files on Bio Lab experiments. A large and
+messy desk is surrounded by locked files. A small booth lies to the south. ">
+               <COND (<FSET? ,OFFICE-DOOR ,OPENBIT>
+                      <TELL "An open">)
+                     (T
+                      <TELL "A closed">)>
+               <TELL " door to the west is labelled \"Biioo Lab.\" You
+realize with shock and horror that the only way out is through the
+mutant-infested Bio Lab.|
+|
+On the wall are three buttons: a white button labelled \"Lab Liits On\",
+a black button labelled \"Lab Liits Of\", and a red button labelled
+\"Eemurjensee Sistum.\"" CR>)
+              (<AND <EQUAL? .RARG ,M-END>
+                     <FSET? ,OFFICE-DOOR ,OPENBIT>>
+               <COND (,LAB-FLOODED
+                      <TELL
+"Through the open doorway you can see the Bio Lab. It seems to be filled
+with a light mist. Horrifying biological nightmares stagger about making
+choking noises." CR>)
+                     (T
+                      <JIGS-UP
+"Mutated monsters from the Bio Lab pour into the office. You are
+devoured.">)>)>>
+
+<OBJECT OFFICE-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "office door")
+       (SYNONYM DOOR)
+       (ADJECTIVE OFFICE)
+       (FLAGS VOWELBIT DOORBIT NDESCBIT)>
+
+<OBJECT LAB-DESK
+       (IN LAB-OFFICE)
+       (DESC "desk")
+       (SYNONYM DESK)
+       (ADJECTIVE LARGE MESSY)
+       (FLAGS CONTBIT SEARCHBIT NDESCBIT)
+       (CAPACITY 10)
+       (ACTION LAB-DESK-F)>
+
+<ROUTINE LAB-DESK-F ()
+        <COND (<AND <VERB? EXAMINE SEARCH>
+                    <NOT <FSET? ,LAB-DESK ,TOUCHBIT>>>
+               <MOVE ,MEMO ,ADVENTURER>
+               <FSET ,LAB-DESK ,TOUCHBIT>
+               <TELL
+"After inspecting the various papers on the desk, you find only
+one item of interest, a memo of some sort. The desk itself is ">
+               <COND (<FSET? ,LAB-DESK ,OPENBIT>
+                      <TELL "open">)
+                     (T
+                      <TELL
+"closed, but it doesn't look locked">)>
+               <TELL "." CR>)
+              (<AND <VERB? OPEN>
+                    <IN? ,GAS-MASK ,LAB-DESK>>
+               <THIS-IS-IT ,GAS-MASK>
+               <RFALSE>)>>
+
+<OBJECT GAS-MASK
+       (IN LAB-DESK)
+       (DESC "gas mask")
+       (SYNONYM MASK)
+       (ADJECTIVE GAS)
+       (FLAGS ACIDBIT TAKEBIT WEARBIT)
+       (SIZE 10)>
+
+<OBJECT MEMO
+       (DESC "memo")
+       (SYNONYM MEMO)
+       (FLAGS READBIT ACIDBIT TAKEBIT)
+       (TEXT
+"\"Memoo tuu awl lab pursunel: Duu tuu xe daanjuris naatshur uv xe biioo
+eksperiments, an eemurjensee sistum haz bin instawld. Xis sistum wud flud
+xe entiir Biioo Lab wic aa dedlee fungasiid. Propur preecawshunz shud bee
+taakin if xis sistum iz evur yuuzd.\"")>
+
+<OBJECT LIGHT-BUTTON
+       (IN LAB-OFFICE)
+       (DESC "white button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE WHITE LIGHT)
+       (FLAGS NDESCBIT)
+       (ACTION LIGHT-BUTTON-F)>
+
+<OBJECT DARK-BUTTON
+       (IN LAB-OFFICE)
+       (DESC "black button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE BLACK DARK DARKNESS)
+       (FLAGS NDESCBIT)
+       (ACTION DARK-BUTTON-F)>
+
+<OBJECT FUNGICIDE-BUTTON
+       (IN LAB-OFFICE)
+       (DESC "red button")
+       (SYNONYM BUTTON)
+       (ADJECTIVE RED FUNGICIDE EMERGENCY)
+       (FLAGS NDESCBIT)
+       (ACTION FUNGICIDE-BUTTON-F)>
+
+<GLOBAL LAB-LIGHTS-ON <>>
+
+<GLOBAL LAB-FLOODED <>>
+
+<ROUTINE LIGHT-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (,LAB-LIGHTS-ON
+                      <TELL "Nothing happens." CR>)
+                     (T
+                      <SETG LAB-LIGHTS-ON T>
+                      <TELL ,FAINT-SOUND CR>)>)>>
+
+<ROUTINE DARK-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (,LAB-LIGHTS-ON
+                      <SETG LAB-LIGHTS-ON <>>
+                      <TELL ,FAINT-SOUND CR>)
+                     (T
+                      <TELL "Nothing happens." CR>)>)>>
+
+<GLOBAL FAINT-SOUND "You hear the faint sound of a relay clicking.">
+
+<ROUTINE FUNGICIDE-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <SETG LAB-FLOODED T>
+               <ENABLE <QUEUE I-UNFLOOD 50>>
+               <TELL
+"You hear a hissing from beyond the door to the west." CR>)>>
+
+<ROUTINE I-UNFLOOD ()
+        <SETG LAB-FLOODED <>>
+        <COND (<EQUAL? ,HERE ,BIO-LAB>
+               <TELL CR
+"The last traces of mist in the air vanish. The mutants, recovering
+quickly, notice you and begin salivating." CR>)
+              (<AND <EQUAL? ,HERE ,LAB-OFFICE>
+                    <FSET? ,OFFICE-DOOR ,OPENBIT>>
+               <TELL CR
+"The mist in the Bio Lab clears. The mutants recover and rush
+toward the door!" CR>)>>
+
+<ROOM AUXILIARY-BOOTH
+      (IN ROOMS)
+      (DESC "Auxiliary Booth")
+      (LDESC
+"This is another small booth. Unlike the Miniaturization Booth, this room
+has no slot or keyboard, so presumably it is intended only as a receiving
+station. The exit is on the northern side.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO LAB-OFFICE)
+      (OUT TO LAB-OFFICE)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 4)
+      (PSEUDO "BOOTH" IN-BOOTH-PSEUDO)>
+
+^L
+
+;"INSIDE THE COMPUTER"
+
+<GLOBAL MINI-ACTIVATED <>>
+
+<ROUTINE I-TURNOFF-MINI ()
+        <SETG MINI-ACTIVATED <>>
+        <COND (<EQUAL? ,HERE ,MINI-BOOTH>
+               <TELL CR
+"A recorded voice says \"Miniaturization booth de-activated.\"" CR>)>>
+
+<ROOM STATION-384
+      (IN ROOMS)
+      (DESC "Station 384")
+      (LDESC
+"You are standing on a square plate of heavy metal. Above your head, parallel
+to the plate beneath you, is an identical metal plate. To the east is a wide,
+metallic strip.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO STRIP-NEAR-STATION)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL STRIP)
+      (PSEUDO "PLATE" PLATE-PSEUDO "PLATES" PLATE-PSEUDO)
+      (ACTION STATION-384-F)>
+
+<ROUTINE STATION-384-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <COND (,BEEN-HERE
+                      <SETG BEEN-HERE <>>
+                      <COND (,COMPUTER-FIXED
+                             <TELL
+"A voice seems to whisper in your ear \"Main Miniaturization and Teleportation
+Booth has malfunctioned...switching to Auxiliary Booth...\" ">
+                             <ENABLE <QUEUE I-ANNOUNCEMENT 130>>
+                             <TELL ,FAMILIAR-WRENCHING CR>
+                             <GOTO ,AUXILIARY-BOOTH>
+                             <RFATAL>)
+                            (T
+                             <TELL ,FAMILIAR-WRENCHING CR>
+                             <GOTO ,MINI-BOOTH <>>)>)>)>>
+
+<ROUTINE I-ANNOUNCEMENT ()
+        <TELL CR "A recorded announcement blares from the public address
+system. \"Revival procedure beginning. Cryo-chamber access from Project
+Control Office now open.\"" CR>>
+
+<GLOBAL BEEN-HERE <>>
+
+<GLOBAL COMPUTER-FIXED <>>
+
+<GLOBAL FAMILIAR-WRENCHING
+"You feel the familiar wrenching of your innards, and find yourself in a vast
+room whose distant walls are rushing straight toward you...|">
+
+<ROOM STRIP-NEAR-STATION
+      (IN ROOMS)
+      (DESC "Strip Near Station")
+      (LDESC
+"You are standing on a silicon filament, which looks to you like a wide
+metal highway. South of here, the filament makes a right angle and heads
+straight down, like a cliff overlooking a black void. The filament can be
+followed north, however. Station 384 lies westward.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH "The plunge would probably be fatal.")
+      (EAST "The plunge would probably be fatal.")
+      (NORTH TO MIDDLE-OF-STRIP)
+      (WEST TO STATION-384)
+      (FLAGS RLANDBIT ONBIT)
+      (VALUE 4)
+      (PSEUDO "VOID" VOID-PSEUDO)
+      (GLOBAL STRIP)>
+
+<ROOM MIDDLE-OF-STRIP
+      (IN ROOMS)
+      (DESC "Middle of Strip")
+      (LDESC
+"You are standing on a section of the strip with a bottomless void stretching
+out on both sides. The strip continues to the north and south.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH TO STRIP-NEAR-RELAY)
+      (SOUTH TO STRIP-NEAR-STATION IF NO-MICROBE ELSE "Not a chance -- unless,
+of course, you don't mind walking into the gullet of a hungry microbe.")
+      (EAST "Do you have a penchant for bottomless voids?")
+      (WEST "Do you have a penchant for bottomless voids?")
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION MIDDLE-OF-STRIP-F)
+      (PSEUDO "VOID" VOID-PSEUDO)
+      (GLOBAL STRIP)>
+
+<GLOBAL NO-MICROBE T>
+
+<GLOBAL MICROBE-DISPATCHED <>>
+
+<ROUTINE MIDDLE-OF-STRIP-F (RARG)
+        <COND (<EQUAL? .RARG ,M-ENTER>
+               <COND (<AND ,COMPUTER-FIXED
+                           ,NO-MICROBE
+                           <NOT ,MICROBE-DISPATCHED>>
+                      <MOVE ,MICROBE ,HERE>
+                      <ENABLE <QUEUE I-MICROBE -1>>
+                      <SETG NO-MICROBE <>>
+                      <TELL
+"Suddenly, with a loud plop, a giant elephant-sized monster lands on the strip
+just in front of you. It is amorphously shaped, its skin a slimy translucent
+red membrane. While most of your brain screams with panic about the disgusting
+monster that now blocks your exit, some small section in the back of your mind
+calmly realizes that this is merely some tiny microbe which has somehow
+violated the sterile environment of the computer interior.|
+|
+As you stand frozen with fear, the microbe slithers toward you,
+extending slimy pseudopods thick with waving cilia. It looks pretty
+hungry, and seems intent on having you for lunch." CR CR>)>)>>
+
+<ROOM STRIP-NEAR-RELAY
+      (IN ROOMS)
+      (DESC "Strip Near Relay")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (NORTH "There is a huge featureless wall there, remember?")
+      (SOUTH TO MIDDLE-OF-STRIP IF NO-MICROBE ELSE "Not a chance -- unless,
+of course, you don't mind walking into the gullet of a hungry microbe.")
+      (EAST PER RELAY-EXIT-F)
+      (WEST "Do you have a penchant for bottomless voids?")
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL STRIP)
+      (PSEUDO "VOID" VOID-PSEUDO)
+      (ACTION STRIP-NEAR-RELAY-F)>
+
+<ROUTINE STRIP-NEAR-RELAY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"North of here, the filament ends at a huge featureless wall, presumably the
+side of some micro-component. ">
+               <COND (<IN? ,RELAY ,HERE>
+                      <TELL
+"To the east is a vacuu-sealed micro-relay, sealed in transparent red
+plastic. You could probably see into the micro-relay." CR>)
+                     (T
+                      <TELL
+"To the east are the shattered remains of some large object." CR>)>)
+              (<AND <EQUAL? .RARG ,M-ENTER>
+                    <NOT ,NO-MICROBE>>
+               <MOVE ,MICROBE ,HERE>
+               <SETG MICROBE-COUNTER 0>
+               <TELL
+"The microbe, writhing angrily, follows you northward." CR>)>>
+
+<ROUTINE RELAY-EXIT-F ()
+        <COND (<IN? ,RELAY ,HERE>
+               <TELL
+"The relay is sealed. Although you cannot enter it, you could look into
+it." CR>
+               <RFALSE>)
+              (T
+               <TELL
+"You would slice yourself to ribbons on the shattered relay." CR>
+               <RFALSE>)>>
+
+<OBJECT RELAY
+       (IN STRIP-NEAR-RELAY)
+       (DESC "micro-relay")
+       (SYNONYM MICRO RELAY)
+       (ADJECTIVE MICRO)
+       (FLAGS NDESCBIT TRANSBIT)
+       (ACTION RELAY-F)>
+
+<ROUTINE RELAY-F ()
+        <COND (<VERB? EXAMINE LOOK-INSIDE>
+               <TELL
+"This is a vacuum-sealed micro-relay, encased in red translucent plastic.">
+               <COND (<NOT ,COMPUTER-FIXED>
+                     <TELL
+" Within, you can see that some sort of speck or impurity has wedged itself
+into the contact point of the relay, preventing it from closing. The speck,
+presumably of microscopic size, resembles a blue boulder to you in your
+current size.">)>
+               <TELL CR>)>>
+
+<OBJECT SPECK
+       (IN RELAY)
+       (DESC "speck")
+       (SYNONYM SPECK BOULDER IMPURITY)
+       (ADJECTIVE BLUE)
+       (FLAGS NDESCBIT)>
+
+^L
+
+;"Laserium"
+
+<OBJECT LASER
+       (IN TOOL-ROOM)
+       (DESC "laser")
+       (FDESC
+"A small device, labelled \"Akmee Portabul Laazur\", is resting on one of
+the lower shelves.")
+       (SYNONYM DEVICE LASER UNIT DEPRES)
+       (ADJECTIVE PORTABLE ACME)
+       (SIZE 25)
+       (CAPACITY 5)
+       (FLAGS MUNGBIT TAKEBIT OPENBIT TRANSBIT CONTBIT)
+       (ACTION LASER-F)>
+
+<OBJECT LASER-DIAL
+       (IN LASER)
+       (DESC "laser setting dial")
+       (SYNONYM DIAL)
+       (ADJECTIVE LASER SETTING)
+       (FLAGS MUNGBIT NDESCBIT)
+       (ACTION LASER-DIAL-F)>
+
+<ROUTINE LASER-DIAL-F ()
+        <COND (<AND <VERB? SET>
+                    <EQUAL? ,PRSI ,INTNUM>>
+               <COND (<FSET? ,LASER-DIAL ,MUNGEDBIT>
+                      <TELL
+"The laser dial seems to have become damaged and will not turn." CR>)
+                     (<EQUAL? ,P-NUMBER ,LASER-SETTING>
+                      <TELL "That's where it's set now!" CR>)
+                     (<OR <G? ,P-NUMBER 6>
+                          <EQUAL? ,P-NUMBER 0>>
+                      <TELL "The dial can only be set from 1 to 6." CR>)
+                     (T
+                      <SETG LASER-SETTING ,P-NUMBER>
+                      <TELL "The dial is now set to " N ,P-NUMBER "." CR>)>)
+              (<VERB? EXAMINE>
+               <TELL "The dial is currently set to " N ,LASER-SETTING "." CR>)>>
+
+<OBJECT OLD-BATTERY
+       (IN LASER)
+       (DESC "old battery")
+       (LDESC "There is a worn-out laser battery here.")
+       (SYNONYM BATTERY)
+       (ADJECTIVE LASER WORN-OUT OLD)
+       (SIZE 5)
+       (FLAGS VOWELBIT ACIDBIT TAKEBIT)>
+
+<OBJECT NEW-BATTERY
+       (IN LAB-STORAGE)
+       (DESC "new battery")
+       (FDESC
+"The odds and ends on the shelves include a small round object, which closer
+inspection reveals to be a fresh laser battery.")
+       (SYNONYM OBJECT BATTERY)
+       (ADJECTIVE LASER SMALL ROUND FRESH NEW)
+       (SIZE 5)
+       (FLAGS ACIDBIT TAKEBIT)>
+
+<GLOBAL LASER-SETTING 5> ;"dial on laser -- 1 is red, 2 is orange, etc."
+
+<GLOBAL SPECK-HIT <>> ;"set to T first time you hit speck, takes two hits"
+
+<GLOBAL OLD-SHOTS 0> ;"number of shots left in the old-battery"
+
+<GLOBAL NEW-SHOTS 0> ;"number of shots left in the new-battery"
+
+<ROUTINE ZAP-COUNT () ;"checks to see if if have any shots left"
+        <COND (<IN? ,OLD-BATTERY ,LASER>
+               <COND (<G? ,OLD-SHOTS 0>
+                      <SETG OLD-SHOTS <- ,OLD-SHOTS 1>>
+                      <RFALSE>)>
+               <RTRUE>)
+              (<IN? ,NEW-BATTERY ,LASER>
+               <COND (<G? ,NEW-SHOTS 0>
+                      <SETG NEW-SHOTS <- ,NEW-SHOTS 1>>
+                      <RFALSE>)>
+               <RTRUE>)
+              (T <RTRUE>)>>
+
+<ROUTINE LASER-F ("OPTIONAL" (RARG <>))
+        <COND (<AND <VERB? SET>
+                    <EQUAL? ,PRSI ,INTNUM>>
+               <PERFORM ,V?SET ,LASER-DIAL ,PRSI>
+               <RTRUE>)
+              (<VERB? EXAMINE>
+               <TELL
+"The laser, though portable, is still fairly heavy. It has a long, slender
+barrel and a dial with six settings, labelled \"1\" through \"6.\" This dial
+is currently on setting " N ,LASER-SETTING ". There is a depression on the
+top of the laser which ">
+               <COND (<IN? ,OLD-BATTERY ,LASER>
+                      <TELL "contains an " D ,OLD-BATTERY>)
+                     (<IN? ,NEW-BATTERY ,LASER>
+                      <TELL "contains a " D ,NEW-BATTERY>)
+                     (T
+                      <TELL "is empty">)>
+               <TELL "." CR>)
+              (<VERB? OPEN CLOSE>
+               <TELL
+"There doesn't seem to be any way to do that to this laser." CR>)
+              (<VERB? PUT>
+               <COND (<EQUAL? ,PRSO ,OLD-BATTERY>
+                      <COND (<IN? ,NEW-BATTERY ,LASER>
+                             <ALREADY-BATTERY>)
+                            (T
+                             <MOVE ,OLD-BATTERY ,LASER>
+                             <BATTERY-NOW>)>)
+                     (<EQUAL? ,PRSO ,NEW-BATTERY>
+                      <COND (<IN? ,OLD-BATTERY ,LASER>
+                             <ALREADY-BATTERY>)
+                            (T
+                             <MOVE ,NEW-BATTERY ,LASER>
+                             <BATTERY-NOW>)>)
+                     (<NOT <EQUAL? ,LASER ,PRSO>>
+                      <TELL
+"The " D ,PRSO " doesn't fit the depression." CR>)>)
+              (<VERB? ZAP>
+               <COND (<NOT <IN? ,LASER ,ADVENTURER>>
+                      <NOT-HOLDING>
+                      <RTRUE>)>
+               <COND (<NOT ,LASER-SCORE-FLAG>
+                      <SETG LASER-SCORE-FLAG T>
+                      <SETG SCORE <+ ,SCORE 2>>)>
+               <COND (<OR <EQUAL? ,PRSI ,LASER>
+                                 <EQUAL? ,PRSI ,LASER-DIAL>
+                                 <AND <EQUAL? ,PRSI ,OLD-BATTERY>
+                                      <IN? ,OLD-BATTERY ,LASER>>
+                                 <AND <EQUAL? ,PRSI ,NEW-BATTERY>
+                                      <IN? ,NEW-BATTERY ,LASER>>>
+                             <TELL
+"Sorry, the laser doesn't have a rubber barrel." CR>)
+                     (<ZAP-COUNT>
+                      <TELL "Click." CR>)
+                     (<FSET? ,LASER ,MUNGEDBIT>
+                      <TELL
+"The laser sparks a few times, whines, and then stops." CR>)
+                     (T
+                      <ENABLE <QUEUE I-WARMTH -1>>
+                      <SETG LASER-JUST-SHOT T>
+                      <COND (<EQUAL? ,PRSI ,SPECK>
+                             <SHOOT-SPECK>
+                             <RTRUE>)
+                            (<EQUAL? ,PRSI ,MICROBE>
+                             <SHOOT-MICROBE>
+                             <RTRUE>)
+                            (<EQUAL? ,PRSI ,ME ,HANDS ,ADVENTURER>
+                             <TELL
+"Ouch! You managed to burn yourself nicely." CR>)
+                            (T
+                             <TELL "The laser emits a narrow ">
+                             <BEAM-COLOR>
+                             <TELL " beam of light">
+                             <COND (,PRSI
+                                    <COND (<OR <EQUAL? ,PRSI
+                                                        ,TOWEL
+                                                       ,BROCHURE
+                                                       ,COMBINATION-PAPER>
+                                               <EQUAL? ,PRSI
+                                                       ,PRINT-OUT
+                                                       ,LAB-UNIFORM
+                                                       ,PATROL-UNIFORM>
+                                               <EQUAL? ,PRSI
+                                                       ,ID-CARD
+                                                       ,KITCHEN-CARD
+                                                       ,MINI-CARD>
+                                               <EQUAL? ,PRSI
+                                                       ,TELEPORTATION-CARD
+                                                       ,SHUTTLE-CARD
+                                                       ,UPPER-ELEVATOR-CARD>
+                                               <EQUAL? ,PRSI
+                                                       ,LOWER-ELEVATOR-CARD>>
+                                           <REMOVE ,PRSI>
+                                           <COND (<EQUAL? ,PRSI
+                                                          ,SPOUT-PLACED>
+                                                  <SETG SPOUT-PLACED
+                                                        ,GROUND>)>
+                                           <TELL
+" which strikes the " D ,PRSI ". The " D ,PRSI " bursts into flame,
+blinding you momentarily, and is quickly consumed." CR>)
+                                          (<AND <EQUAL? ,PRSI ,FLOYD>
+                                                <FSET? ,FLOYD ,RLANDBIT>>
+                                           <TELL
+" which strikes Floyd. \"Yow!\" yells Floyd. He jumps to the other end
+of the room and eyes you warily." CR>)
+                                          (<AND <EQUAL? ,PRSI ,PSEUDO-OBJECT>
+                                               <EQUAL? ,HERE ,PROJCON-OFFICE>>
+                                           <TELL
+" which strikes the " D ,PRSI ". However, this doesn't seem to affect it." CR>)
+                                          (T
+                                           <TELL
+" which strikes the " D ,PRSI ". The " D ,PRSI " grows a bit warm, but
+nothing else happens." CR>)>)
+                                   (T
+                                    <TELL "." CR>)>)>)>)
+              (<VERB? DROP>
+               <DISABLE <INT I-WARMTH>>
+               <COND (<AND <IN? ,MICROBE ,HERE>
+                           <G? ,WARMTH-FLAG 7>>
+                      <REMOVE ,LASER>
+                      <TELL
+"The microbe rushes to envelop the laser. You hear a faint burp as the
+monster begins to look around for other morsels..." CR>)
+                     (T
+                      <RFALSE>)>)>>
+
+<ROUTINE ALREADY-BATTERY ()
+        <TELL "There's already a battery there." CR>>
+
+<ROUTINE BATTERY-NOW ()
+        <TELL "The battery is now resting in the depression, attached
+to the laser." CR>>
+
+;<ROUTINE LASER-CONTENTS ()
+         <TELL "The laser ">
+         <COND (<IN? ,OLD-BATTERY ,LASER>
+                <TELL "contains an " D ,OLD-BATTERY>)
+               (<IN? ,NEW-BATTERY ,LASER>
+                <TELL "contains a " D ,NEW-BATTERY>)
+               (T
+                <TELL "is empty">)>
+         <TELL "." CR>>
+
+<GLOBAL WARMTH-FLAG 0>
+
+<GLOBAL LASER-JUST-SHOT <>>
+
+<ROUTINE I-WARMTH ()
+        <COND (,LASER-JUST-SHOT
+               <SETG LASER-JUST-SHOT <>>
+               <SETG WARMTH-FLAG <+ ,WARMTH-FLAG 1>>
+               <COND (<EQUAL? ,WARMTH-FLAG 3>
+                      <LASER-FEELS "slightly warm now">)
+                     (<EQUAL? ,WARMTH-FLAG 6>
+                      <LASER-FEELS "somewhat warm now">)
+                     (<EQUAL? ,WARMTH-FLAG 9>
+                      <LASER-FEELS "very warm now">)
+                     (<EQUAL? ,WARMTH-FLAG 12>
+                      <LASER-FEELS "quite hot">)>)
+              (T
+               <COND (<EQUAL? ,WARMTH-FLAG 0>
+                      <DISABLE <INT I-WARMTH>>)
+                     (T
+                      <SETG WARMTH-FLAG <- ,WARMTH-FLAG 1>>
+                      <COND (<EQUAL? ,WARMTH-FLAG 12>
+                             <LASER-COOLS "quite hot">)
+                            (<EQUAL? ,WARMTH-FLAG 9>
+                             <LASER-COOLS "very warm">)
+                            (<EQUAL? ,WARMTH-FLAG 6>
+                             <LASER-COOLS "somewhat warm">)
+                            (<EQUAL? ,WARMTH-FLAG 3>
+                             <LASER-COOLS "slightly warm">)>)>)>>
+
+<ROUTINE LASER-FEELS (STRING)
+        <TELL CR
+"The laser feels " .STRING
+", but that doesn't seem to affect its performance at all." CR>>
+
+<ROUTINE LASER-COOLS (STRING)
+        <TELL CR
+"The laser has cooled, but it still feels " .STRING "." CR>>
+
+<GLOBAL LASER-SCORE-FLAG <>>
+
+<GLOBAL MARKSMANSHIP-COUNTER 0>
+
+<ROUTINE BEAM-COLOR ()
+        <COND (<EQUAL? ,LASER-SETTING 1>
+               <TELL "red">)
+               (<EQUAL? ,LASER-SETTING 2>
+               <TELL "orange">)
+              (<EQUAL? ,LASER-SETTING 3>
+               <TELL "yellow">)
+              (<EQUAL? ,LASER-SETTING 4>
+               <TELL "green">)
+              (<EQUAL? ,LASER-SETTING 5>
+               <TELL "blue">)
+              (<EQUAL? ,LASER-SETTING 6>
+               <TELL "violet">)>>
+
+<ROUTINE SHOOT-SPECK ()
+       <COND (<EQUAL? ,LASER-SETTING 1>
+              <COND (<PROB ,MARKSMANSHIP-COUNTER>
+                     <COND (,SPECK-HIT
+                            <SETG COMPUTER-FIXED T>
+                            <FSET ,CRYO-ELEVATOR-DOOR ,OPENBIT>
+                            <FCLEAR ,PROJCON-OFFICE ,TOUCHBIT>
+                            <FCLEAR ,CRYO-ELEVATOR-DOOR ,INVISIBLE>
+                            <ENABLE <QUEUE I-FRY 200>>
+                            <SETG SCORE <+ ,SCORE 8>>
+                            <REMOVE ,SPECK>
+                            <TELL
+"The beam hits the speck again! This time, it vaporizes into a fine cloud
+of ash. The relay slowly begins to close, and a voice whispers in your ear
+\"Sector 384 will activate in 200 millichrons. Proceed to exit station.\"" CR>)
+                           (T
+                            <SETG SPECK-HIT T>
+                            <TELL
+"The speck is hit by the beam! It sizzles a little,
+but isn't destroyed yet." CR>)>)
+                    (T
+                     <SETG MARKSMANSHIP-COUNTER <+ ,MARKSMANSHIP-COUNTER 12>>
+                     <TELL <PICK-ONE ,BEAM-MISSES> CR>)>)
+             (T
+              <REMOVE ,RELAY>
+              <TELL "A thin ">
+              <BEAM-COLOR>
+              <TELL
+" beam shoots from the laser and slices through the red plastic covering of
+the relay like a hot knife through butter. Air rushes into the relay, which
+collapses into a heap of plastic shards." CR>)>>
+
+<GLOBAL BEAM-MISSES
+       <PLTABLE
+        "The beam just misses the speck!"
+        "A near miss!"
+        "A good shot, but just a little wide of the target.">>
+
+<ROUTINE I-FRY ()
+        <COND (<EQUAL? ,HERE ,MIDDLE-OF-STRIP
+                             ,STRIP-NEAR-STATION
+                             ,STRIP-NEAR-RELAY>
+               <CRLF>
+               <JIGS-UP
+"|
+With a furious storm of electrical mayhem, Sector 384 comes to life. A
+few micro-volts course through the silicon strip on which you stand.
+Unfortunately, at your current size, this is enough to barbecue you.">)>>
+
+^L
+
+;"The microbe battle"
+
+<OBJECT MICROBE
+       (DESC "microbe")
+       (LDESC 
+"A hungry microbe blocks your way, its cilia waving and its pseudopods
+towering over you.")
+       (SYNONYM MICROBE BUG MONSTER)
+       (ADJECTIVE HUNGRY)
+       (FLAGS ACTORBIT)
+       (ACTION MICROBE-F)>
+
+<ROUTINE MICROBE-F ()
+        <COND (<VERB? TELL HELLO TALK>
+               <TELL
+"You don't seem to have bridged the vast communication gulf
+between yourself and the microbe." CR>
+               <SETG P-CONT <>>
+               <SETG QUOTE-FLAG <>>
+               <RFATAL>)
+              (<AND <VERB? THROW GIVE>
+                    <EQUAL? ,PRSI ,MICROBE>>
+               <COND (<AND <EQUAL? ,PRSO ,LASER>
+                           <G? ,WARMTH-FLAG 7>>
+                      <REMOVE ,LASER>
+                      <DISABLE <INT I-WARMTH>>
+                      <COND (<G? ,WARMTH-FLAG 10>
+                             <DISABLE <INT I-MICROBE>>
+                             <TELL
+"The microbe gobbles up the laser and turns toward you. A moment later,
+it begins writhing in pain. Apparently, eating the hot laser was a bit
+too much for it. With a bellow of agony, it rolls off the edge of
+the strip. (Whew!)" CR>
+                            <REMOVE ,LASER>
+                            <REMOVE ,MICROBE>
+                            <SETG NO-MICROBE T>
+                            <SETG MICROBE-DISPATCHED T>)
+                            (T
+                             <TELL
+"The microbe greedily devours the laser, and turns toward you." CR>)
+                     (T
+                      <TELL
+"The microbe ignores the " D ,PRSO ", but does attempt to digest
+your arm." CR>)>)>)>>
+
+<ROUTINE I-MICROBE ()
+        <COND (<EQUAL? ,MICROBE-HIT T>
+               <TELL CR <PICK-ONE ,WINNER-ATTACKED>>
+               <COND (<AND <G? ,WARMTH-FLAG 13>
+                           <IN? ,LASER ,ADVENTURER>>
+                      <JIGS-UP
+" The microbe, whipped into a rabid frenzy by the waves of heat from the
+pulsing laser, literally lunges at it. You jump back and, losing your
+balance, fall over the edge of the strip. The microbe, writhing madly, hurls
+itself after its prey. You and the microbe both plunge into the void below.">)
+                     (<AND <G? ,WARMTH-FLAG 7>
+                           <IN? ,LASER ,ADVENTURER>>
+                      <TELL 
+" Another pseudopod, perhaps attracted by the warmth of the laser, tries to
+envelop the weapon. You snatch it away from the monster's grasp.">)>
+               <CRLF>)
+              (T
+               <COND (<EQUAL? ,MICROBE-COUNTER 2>
+                      <JIGS-UP
+"|
+The microbe wraps several pseudopods around you and shoves you into its
+mucus-covered gullet. Digestive juices begin their work. The experience
+is not pleasant.">)
+                     (T
+                      <SETG MICROBE-COUNTER <+ ,MICROBE-COUNTER 1>>
+                      <TELL CR <PICK-ONE ,MONSTER-CLOSES> CR>)>)>
+        <SETG MICROBE-HIT <>>>
+
+<GLOBAL WINNER-ATTACKED
+       <PLTABLE
+        "A pseudopod extends toward you. You jump back just in time
+to avoid being engulfed."
+        "A slimy pseudopod brushes against your shoulder. You twist
+away in the nick of time."
+        "A pseudopod shoots out toward your head! Ducking quickly,
+you save your life."
+         "Two protoplasm-filled blobs sneak toward you from the left.
+You jump to the side and almost fall off the strip into the void below!">>
+
+<GLOBAL MONSTER-CLOSES
+       <PLTABLE
+        "The microbe slithers closer. The cilia around its gullet glisten
+with mucus, giving the impression that the microbe is salivating."
+         "The microbe flows toward you. It towers above you, its cilia
+waving madly in your face."
+        "The monster wriggles nearer. It is now so close that you can make
+out details in the protoplasm beneath its translucent skin.">>
+
+<GLOBAL MICROBE-HIT <>>
+
+<GLOBAL MICROBE-COUNTER 0>
+
+<ROUTINE SHOOT-MICROBE ()
+        <TELL "The laser beam strikes the microbe">
+        <COND (<EQUAL? ,LASER-SETTING 1>
+               <TELL ", but passes harmlessly through its red skin." CR>)
+              (T
+               <SETG MICROBE-HIT T>
+               <TELL ". ">
+               <TELL <PICK-ONE ,MICROBE-STRIKES> CR>)>>
+
+<GLOBAL MICROBE-STRIKES
+       <PLTABLE
+        "The microbe's outer membrane sizzles a bit, and some protoplasm
+oozes out. The microbe recoils momentarily, but quickly recovers."
+        "The beam slices through the microbe's skin! A tremendous shudder
+passes through the microbe, but the wound quickly seals itself."
+         "The monster rears back for a moment, but almost as soon as the
+beam goes off, it advances again.">> 
+
+<OBJECT STRIP
+       (IN LOCAL-GLOBALS)
+       (DESC "silicon strip")
+       (SYNONYM STRIP SIDE EDGE)
+       (ADJECTIVE SILICON)
+       (FLAGS NDESCBIT)
+       (ACTION STRIP-F)>
+
+<ROUTINE STRIP-F ()
+        <COND (<VERB? THROW-OFF>
+               <COND (<AND <EQUAL? ,PRSO ,LASER>
+                           <G? ,WARMTH-FLAG 7>>
+                      <DISABLE <INT I-WARMTH>>
+                      <DISABLE <INT I-MICROBE>>
+                      <TELL
+"As the laser flies over the edge of the strip, the hungry microbe lunges after
+it. Both the laser and the microbe plummet into the void. (Whew!)" CR>
+                      <REMOVE ,LASER>
+                      <REMOVE ,MICROBE>
+                      <SETG NO-MICROBE T>
+                      <SETG MICROBE-DISPATCHED T>)
+                     (T
+                      <COND (<EQUAL? ,PRSO ,LASER>
+                             <DISABLE <INT I-WARMTH>>)>
+                      <REMOVE ,PRSO>
+                      <TELL
+"The " D ,PRSO " flies over the edge of the strip and disappears into the
+void." CR>)>)>>
+
+^L
+
+;"Endgame -- The mutant chase scene"
+
+<OBJECT RAT-ANT
+       (IN BIO-LAB)
+       (DESC "rat-like, ant-like man-sized monster")
+       (LDESC "A ferocious feral creature, with a hairy shelled body and
+a whip-like tail snaps its enormous mandibles at you.")
+       (SYNONYM MONSTER MUTANT RAT-ANT)
+       (ADJECTIVE RAT-LIKE ANT-LIKE MAN-SIZED)
+       (FLAGS ACTORBIT)>
+
+<OBJECT TROLL
+       (IN BIO-LAB)
+       (DESC "hairy growling biped")
+       (LDESC "Rushing toward you is an ugly, deformed humanoid, bellowing
+in a guttural tongue. It brandishes a piece of lab equipment shaped
+somewhat like a battle axe.")
+       (SYNONYM TROLL BIPED MUTANT MONSTER)
+       (ADJECTIVE HAIRY GROWLING UGLY DEFORMED)
+       (FLAGS ACTORBIT)>
+
+<OBJECT GRUE
+       (IN BIO-LAB)
+       (DESC "lurking fanged creature")
+       (LDESC "Lurking nearby is a vicious-looking creature with slavering
+fangs. Squinting in the light, it eyes you hungrily.")
+       (SYNONYM GRUE CREATURE MUTANT MONSTER)
+       (ADJECTIVE LURKING SINISTER FANGED VICIOUS HUNGRY SILENT)
+       (FLAGS ACTORBIT)
+       (ACTION GRUE-F)>
+
+<ROUTINE GRUE-F ()
+        <COND (<AND <VERB? EXAMINE>
+                    <NOT <IN? ,GRUE ,HERE>>>
+               <TELL
+"Grues are vicious, carnivorous beasts first introduced to Earth by a
+visiting alien spaceship during the late 22nd century. Grues spread throughout
+the galaxy alongside man. Although now extinct on all civilized planets,
+they still exist in some backwater corners of the galaxy. Their favorite diet
+is Ensigns Seventh Class, but their insatiable appetite is tempered by their
+fear of light." CR>)>>
+
+<OBJECT TRIFFID
+       (IN BIO-LAB)
+       (DESC "mobile man-eating plant")
+       (LDESC "A giant plant, teeming with poisonous tentacles, is shuffling
+toward you on three leg-like stalks.")
+       (SYNONYM TRIFFID PLANT MUTANT MONSTER)
+       (ADJECTIVE MOBILE MAN-EATING GIANT)
+       (FLAGS ACTORBIT)>
\ No newline at end of file
diff --git a/globals.zil b/globals.zil
new file mode 100644 (file)
index 0000000..9e95298
--- /dev/null
@@ -0,0 +1,2772 @@
+"GLOBALS for PLANETFALL
+(C) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED
+
+This file contains Global Objects and their associated routines,
+as well as all routines associated with BOTH complexes. It also
+contains the opening sequence which occurs prior to planetfall."
+
+<CONSTANT DEFAULT-MOVE 20>
+
+;"REM OFFSETS 31  30  29  28   27  26  25  24 23  22  21  20  ,LOW-DIRECTION "
+<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
+
+"SUBTITLE GLOBAL OBJECTS"
+
+<GLOBAL LOAD-ALLOWED 100>
+
+<OBJECT GLOBAL-OBJECTS
+       (FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT MUNGBIT MUNGEDBIT
+              SCRAMBLEDBIT WORNBIT OPENBIT SEARCHBIT TRANSBIT WEARBIT)>
+
+<OBJECT LOCAL-GLOBALS
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM ZZMGCK)
+       (VALUE 0)
+       (CONTFCN 0)
+       (DESCFCN 0)
+       (SIZE 0)
+       (PSEUDO "FOO")>
+
+;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
+
+<OBJECT ROOMS>
+
+<OBJECT INTNUM
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM INTNUM)
+       (DESC "number")>
+
+<OBJECT PSEUDO-OBJECT
+       (DESC "pseudo")
+       (ACTION GO)>
+
+<OBJECT IT
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM IT THAT THIS HIM)
+       (DESC "random object")
+       (FLAGS NDESCBIT)>
+
+<OBJECT STAIRS
+       (IN LOCAL-GLOBALS)
+       (SYNONYM STAIRS STEPS GANGWAY STAIRWAY)
+       (DESC "stairway")
+       (FLAGS NDESCBIT CLIMBBIT)>
+
+<OBJECT GROUND
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM GROUND EARTH FLOOR DECK)
+       (DESC "floor")
+       (FLAGS NDESCBIT)
+       (ACTION GROUND-F)>
+
+<ROUTINE GROUND-F ()
+        <COND (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,GROUND>>
+               <PERFORM ,V?DROP ,PRSO>
+               <RTRUE>)
+              (<VERB? CLIMB-ON BOARD>
+               <SETG C-ELAPSED 28>
+               <TELL
+"You sit down on the floor. After a brief rest, you stand again." CR>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,ADMIN-CORRIDOR-S>>
+               <TELL "A narrow, jagged crevice runs across the floor." CR>)>>
+
+<OBJECT WINDOW
+       (IN LOCAL-GLOBALS)
+       (DESC "window")
+       (SYNONYM WINDOW PORT VIEWPORT)
+       (ADJECTIVE VIEW)
+       (FLAGS NDESCBIT)
+       (ACTION WINDOW-F)>
+
+<ROUTINE WINDOW-F ()
+        <COND (<VERB? LOOK-INSIDE>
+               <COND (<EQUAL? ,HERE ,BIO-LOCK-EAST>
+                      <TELL
+"You can see a large laboratory, dimly illuminated. A blue glow comes from
+a crack in the northern wall of the lab. Shadowy, ominous shapes move about
+within the room.">
+                      <COND (<NOT <FSET? ,MINI-CARD ,TOUCHBIT>>
+                             <TELL
+" On the floor, just inside the door, you can see a magnetic-striped card.">)>
+                      <CRLF>)
+                     (<EQUAL? ,HERE ,BIO-LAB>
+                      <TELL "You see the Bio Lock." CR>)
+                     (<OR
+                       <EQUAL? ,HERE ,ALFIE-CONTROL-EAST ,ALFIE-CONTROL-WEST>
+                       <EQUAL? ,HERE ,BETTY-CONTROL-EAST ,BETTY-CONTROL-WEST>>
+                      <TELL "You see ">
+                      <DESCRIBE-VIEW>
+                      <TELL CR>)
+                     (<EQUAL? ,HERE ,BALCONY>
+                      <TELL "Water. Lots and lots of water." CR>)
+                     (<EQUAL? ,HERE ,HELICOPTER>
+                      <TELL "You see the helipad and the ocean beyond." CR>)
+                     (<EQUAL? ,HERE ,ESCAPE-POD>
+                      <COND (<L? ,TRIP-COUNTER 2>
+                             <TELL
+"You can see debris from the exploding Feinstein." CR>)
+                            (<G? ,TRIP-COUNTER 8>
+                             <TELL
+"You can see a planet, hopefully a hospitable one." CR>)
+                            (T
+                             <TELL
+"The window has polarized to blackness." CR>)>)
+                     (<EQUAL? ,HERE ,LARGE-OFFICE>
+                      <TELL
+"You can see the dormitories and other parts of the
+complex in the distance. Water is visible in every direction." CR>)>)
+              (<AND <VERB? THROUGH>
+                    <EQUAL? ,HERE ,BALCONY>>
+               <JIGS-UP
+"You slice yourself to ribbons on the broken windows and then plummet
+into the swirling ocean below. Very clever.">)
+              (<VERB? OPEN>
+               <TELL "This window doesn't open." CR>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,BALCONY>>
+               <TELL "They're shattered." CR>)
+              (<VERB? MUNG>
+               <COND (<EQUAL? ,HERE ,BALCONY>
+                      <TELL "They're already broken." CR>)
+                     (T
+                      <TELL "It's made of tough Zynoid plastic." CR>)>)>>
+
+<OBJECT CLIFF
+       (IN LOCAL-GLOBALS)
+       (DESC "cliff")
+       (SYNONYM CLIFF)
+       (FLAGS NDESCBIT)
+       (ACTION CLIFF-F)>
+
+<ROUTINE CLIFF-F ()
+        <COND (<EQUAL? ,HERE ,WEST-WING>
+               <COND (<VERB? LEAP>
+                      <JIGS-UP "Brilliant idea!">)
+                     (<VERB? THROW-OFF>
+                      <COND (<EQUAL? ,PRSO ,LASER>
+                             <DISABLE <INT I-WARMTH>>)>
+                      <REMOVE ,PRSO>
+                      <TELL
+"The " D ,PRSO " falls into the ocean below." CR>)>)
+              (T
+               <COND (<VERB? CLIMB-UP CLIMB-FOO>
+                      <DO-WALK ,P?UP>)
+                     (<VERB? CLIMB-DOWN>
+                      <DO-WALK ,P?DOWN>)>)>>
+
+<OBJECT OCEAN
+       (IN LOCAL-GLOBALS)
+       (DESC "ocean")
+       (SYNONYM OCEAN)
+       (ADJECTIVE ENDLESS)
+       (FLAGS VOWELBIT NDESCBIT)
+       (ACTION OCEAN-F)>
+
+<ROUTINE OCEAN-F ()
+        <COND (<VERB? TAKE THROUGH RUB>
+               <TELL "You can't reach the ocean from here." CR>)
+              (<VERB? EXAMINE>
+               <TELL "It stretches as far as you can see." CR>)>>
+
+<OBJECT TABLES
+       (IN LOCAL-GLOBALS)
+       (DESC "table")
+       (SYNONYM TABLE TABLES)
+       (FLAGS NDESCBIT)
+       (ADJECTIVE ROUND CONFERENCE SMALL WIDE LONG)
+       (ACTION TABLES-F)>
+
+<ROUTINE TABLES-F ()
+        <COND (<AND <VERB? LOOK-UNDER>
+                    <EQUAL? ,HERE ,MESS-HALL>>
+               <TELL
+"Wow!!! Under the table are three keys, a sack of food, a reactor elevator
+access pass, one hundred gold pieces ... Just kidding. Actually, there's
+nothing there." CR>)
+              (<AND <VERB? PUT-ON>
+                    <EQUAL? ,PRSI ,TABLES>>
+               <TELL
+"That would accomplish nothing useful." CR>)>> 
+
+<OBJECT SHELVES
+       (IN LOCAL-GLOBALS)
+       (SYNONYM SHELF SHELVES)
+       (DESC "shelf")
+       (FLAGS NDESCBIT)
+       (ACTION SHELVES-F)>
+
+<ROUTINE SHELVES-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL "The shelves are pretty dusty." CR>)
+              (<AND <VERB? PUT-ON>
+                    <EQUAL? ,PRSI ,SHELVES>>
+               <TELL "That would be a waste of time." CR>)>>
+
+<OBJECT LIGHTS
+       (IN LOCAL-GLOBALS)
+       (SYNONYM LIGHT LIGHTS)
+       (ADJECTIVE RED DAZZLI GLOWIN BLINKI WARNIN BRIGHT COLORE FLASHI)
+       (DESC "light")
+       (FLAGS NDESCBIT)
+       (ACTION LIGHTS-F)>
+
+<ROUTINE LIGHTS-F ()
+        <COND (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,COMPUTER-ROOM>>
+               <TELL
+"The red light would seem to indicate a malfunction in the computer." CR>)>>
+
+<OBJECT GLOBAL-DOORWAY
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM DOORWA PORTAL OPENIN)
+       (ADJECTIVE NORTH SOUTH EAST WEST NE SE NW SW)
+       (DESC "doorway")
+       (FLAGS NDESCBIT)
+       (ACTION GLOBAL-DOORWAY-F)>
+
+<ROUTINE GLOBAL-DOORWAY-F ()
+        <COND (<VERB? THROUGH>
+               <USE-DIRECTIONS>)
+              (<VERB? OPEN CLOSE>
+               <TELL "It's just an opening; you can't open or close it." CR>)
+              (<VERB? LOOK-INSIDE>
+               <TELL "Can't see much from here. Try going there." CR>)>>
+
+<ROUTINE USE-DIRECTIONS ()
+        <TELL "Use compass directions for movement." CR>>
+
+<ROUTINE NO-CLOSE ()
+        <TELL "There's no way to close it." CR>>
+
+<OBJECT CONTROLS
+       (IN LOCAL-GLOBALS)
+       (SYNONYM CONTRO PANEL DIALS GAUGES)
+       (ADJECTIVE CONTRO COMPLEX)
+       (DESC "set of controls")
+       (FLAGS NDESCBIT)
+       (ACTION CONTROLS-F)>
+
+<ROUTINE CONTROLS-F ()
+       <COND (<OR <EQUAL? ,HERE ,UPPER-ELEVATOR ,LOWER-ELEVATOR ,BOOTH-1>
+                  <EQUAL? ,HERE ,REACTOR-ELEVATOR ,BOOTH-2 ,BOOTH-3>>
+              <COND (<VERB? EXAMINE>
+                     <TELL
+"The control panel is a simple one, as described. Just a small slot
+and two buttons." CR>)>)
+             (<VERB? RUB MOVE TURN SET TAKE EXAMINE PUSH PULL>
+              <COND (<EQUAL? ,HERE ,HELICOPTER>
+                     <TELL
+"The controls are covered and locked." CR>)
+                    (<EQUAL? ,HERE ,ESCAPE-POD>
+                     <TELL
+"The controls are entirely automated." CR>)
+                    (T
+                     <TELL
+"The controls are incredibly complicated and you shouldn't even
+be thinking about touching them." CR>)>)
+             (<AND <EQUAL? ,HERE ,HELICOPTER>
+                   <VERB? OPEN UNLOCK>>
+              <TELL
+"You don't even have the orange key!" CR>)>>
+
+<OBJECT GLOBAL-GAMES
+       (IN GLOBAL-OBJECTS)
+       (DESC "game")
+       (SYNONYM BOCCI CHESS HIDER- HUCKA-)
+       (FLAGS NDESCBIT)
+       (ACTION GLOBAL-GAMES-F)>
+
+<ROUTINE GLOBAL-GAMES-F ()
+        <COND (<VERB? PLAY>
+               <COND (<IN? ,FLOYD ,HERE>
+                      <PERFORM ,V?PLAY-WITH ,FLOYD>
+                      <RTRUE>)
+                     (T
+                      <TELL "Okay. Gee, that was fun." CR>)>)>>
+
+<OBJECT HANDS
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM PAIR HANDS)
+       (ADJECTIVE BARE)
+       (DESC "pair of hands")
+       (FLAGS NDESCBIT)
+       (ACTION HANDS-F)>
+
+<ROUTINE HANDS-F ()
+        <COND (<VERB? SHAKE>
+               <COND (<IN? ,AMBASSADOR ,HERE>
+                      <TELL "A repulsive idea." CR>)
+                     (<IN? ,BLATHER ,HERE>
+                      <TELL "Saluting might be a better idea." CR>)
+                     (<AND <IN? ,FLOYD ,HERE>
+                           <FSET? ,FLOYD ,RLANDBIT>>
+                      <TELL
+"You shake one of Floyd's grasping extensions." CR>)
+                     (T
+                      <TELL "There's no one to shake hands with." CR>)>)>>
+
+<OBJECT SLEEP
+       (IN GLOBAL-OBJECTS)
+       (DESC "sacred act of sleeping")
+       (SYNONYM SLEEP)
+       (FLAGS NDESCBIT)
+       (ACTION SLEEP-F)>
+
+<ROUTINE SLEEP-F ()
+        <COND (<VERB? WALK-TO>
+               <V-SLEEP>)>>
+
+<OBJECT ADVENTURER
+       (IN DECK-NINE)
+       (SYNONYM ADMIRA SMITHE SPAM EGGS)
+       (ADJECTIVE ORANGE OPENER)
+       (DESC "player")
+        (FLAGS NDESCBIT INVISIBLE)>
+
+<OBJECT ME
+       (IN GLOBAL-OBJECTS)
+       (SYNONYM ME MYSELF SELF WE)
+       (DESC "you")
+       (FLAGS ACTORBIT)
+       (ACTION CRETIN-F)>
+
+<ROUTINE CRETIN-F ()
+        <COND (<VERB? GIVE>
+               <PERFORM ,V?TAKE ,PRSO>
+               <RTRUE>)
+              (<VERB? SCRUB>
+               <TELL
+"If only you'd done that before the last inspection, you wouldn't have
+gotten 300 demerits." CR>)
+              (<VERB? DROP>
+               <TELL "Huh?" CR>)
+              (<VERB? SMELL>
+               <TELL "Phew!" CR>)
+              (<VERB? FOLLOW>
+               <TELL "It would be hard not to." CR>)
+              (<VERB? EAT>
+               <TELL "Auto-cannibalism is not the answer." CR>)
+              (<VERB? ATTACK MUNG>
+               <COND (<==? ,PRSO ,ME>
+                      <JIGS-UP "If you insist.... Poof, you're dead!">)
+                     (ELSE <TELL "What a silly idea!" CR>)>)
+              (<VERB? TAKE>
+               <TELL "How romantic!" CR>)
+              (<VERB? DISEMBARK>
+               <TELL "You'll have to do that on your own." CR>)
+              (<VERB? EXAMINE>
+               <TELL "That's difficult unless your eyes are prehensile."
+                     CR>)>>
+
+;<GLOBAL DUMMY
+       <PLTABLE "Look around."
+               "You think it isn't?"
+               "I think you've already done that.">>
+
+<ROUTINE DDESC (DOOR)
+        <COND (<FSET? .DOOR ,OPENBIT>
+               <TELL "open">)
+              (T
+               <TELL "closed">)>>
+
+<ROUTINE ALREADY-OPEN ()
+        <TELL "It's already open!" CR>>
+
+<ROUTINE IS-CLOSED ()
+        <TELL "It is closed!" CR>>
+
+<ROUTINE V-THROUGH ("OPTIONAL" (OBJ <>) "AUX" M)
+       <COND (<AND <NOT .OBJ> <FSET? ,PRSO ,VEHBIT>>
+              <PERFORM ,V?BOARD ,PRSO>
+              <RTRUE>)
+             (<AND <NOT .OBJ> <NOT <FSET? ,PRSO ,TAKEBIT>>>
+              <TELL
+"You hit your head against the " D ,PRSO " as you attempt this feat." CR>)
+             (.OBJ
+              <TELL "You can't do that!" CR>)
+             (<IN? ,PRSO ,WINNER>
+              <TELL "That would involve quite a contortion!" CR>)
+             (T
+              <TELL <PICK-ONE ,YUKS> CR>)>>
+
+;<ROUTINE ROOM? (OBJ "AUX" NOBJ)
+        <REPEAT ()
+                <SET NOBJ <LOC .OBJ>>
+                <COND (<NOT .NOBJ> <RFALSE>)
+                      (<==? .NOBJ ,WINNER> <RFALSE>)
+                      (<==? .NOBJ ,ROOMS> <RETURN .OBJ>)>
+                <SET OBJ .NOBJ>>>
+
+<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
+        <SET W <FIRST? .WHERE>>
+        <COND (<NOT .W> <RFALSE>)>
+        <REPEAT ()
+                <COND (<FSET? .W .WHAT> <RETURN .W>)
+                      (<NOT <SET W <NEXT? .W>>> <RETURN <>>)>>>
+
+;<ROUTINE FIND-ROOM (X)
+        <REPEAT ()
+                <COND (<NOT .X> ;"this can't happen, of course"
+                       <RETURN ,ROOMS>)
+                      (<IN? .X ,ROOMS> <RETURN .X>)>
+                <SET X <LOC .X>>>>
+
+;"Stuff added for the NOT-HERE object"
+
+<OBJECT NOT-HERE-OBJECT
+       (DESC "such thing" ;"[not here]")
+       (ACTION NOT-HERE-OBJECT-F)>
+
+<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
+       ;"Protocol: return T if case was handled and msg TELLed,
+                         <> if PRSO/PRSI ready to use"
+        ;"This COND is game independent (except the TELL)"
+        <COND (<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
+                    <EQUAL? ,PRSI ,NOT-HERE-OBJECT>>
+               <TELL "Those things aren't here!" CR>
+               <RTRUE>)
+              (<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
+               <SET TBL ,P-PRSO>)
+              (T
+               <SET TBL ,P-PRSI>
+               <SET PRSO? <>>)>
+        <COND (.PRSO?
+               <COND (<VERB? TYPE>
+                      <PERFORM ,V?TYPE ,FLOYD>
+                      <RTRUE>)
+                     (<OR <VERB? EXAMINE>
+                          <AND <EQUAL? ,WINNER ,FLOYD>
+                               <VERB? TAKE FIND>>>
+                      <COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
+                             <COND (<NOT <==? .OBJ ,NOT-HERE-OBJECT>>
+                                    <RTRUE>)>)
+                            (T
+                             <RFALSE>)>)>)>
+        ;"Here is the default 'cant see any' printer"
+        <COND (<EQUAL? ,WINNER ,ADVENTURER>
+               <TELL "You can't see any">
+               <NOT-HERE-PRINT .PRSO?>
+               <TELL " here!" CR>
+               <COND (<VERB? TELL>
+                      <SETG P-CONT <>>
+                      <SETG QUOTE-FLAG <>>
+                      <RFATAL>)>)
+              (T
+               <TELL "The " D ,WINNER " seems confused. \"I don't see any">
+               <NOT-HERE-PRINT .PRSO?>
+               <TELL " here!\"" CR>)>
+        <RTRUE>>
+
+<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
+       ;"Protocol: return T if case was handled and msg TELLed,
+           ,NOT-HERE-OBJECT if 'can't see' msg TELLed,
+                         <> if PRSO/PRSI ready to use"
+       ;"Here is where special-case code goes. <MOBY-FIND .TBL> returns
+          number of matches. If 1, then P-MOBY-FOUND is it. One may treat
+          the 0 and >1 cases alike or different. It doesn't matter. Always
+          return RFALSE (not handled) if you have resolved the problem."
+       <SET M-F <MOBY-FIND .TBL>>
+       ;<COND (<AND <G? .M-F 1>
+                   <SET OBJ <GETP <1 .TBL> ,P?GLOBAL>>>
+              <SET M-F 1>
+              <SETG P-MOBY-FOUND .OBJ>)>
+       <COND (<==? 1 .M-F>
+              <COND (.PRSO? <SETG PRSO ,P-MOBY-FOUND>)
+                    (T <SETG PRSI ,P-MOBY-FOUND>)>
+              <RFALSE>)
+             (<NOT .PRSO?>
+              <TELL "You wouldn't find any">
+              <NOT-HERE-PRINT .PRSO?>
+              <TELL " there." CR>
+              <RTRUE>)
+             (T ,NOT-HERE-OBJECT)>>
+
+<ROUTINE NOT-HERE-PRINT (PRSO?)
+ <COND (<OR ,P-OFLAG ,P-MERGED>
+       <COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJN>)>
+       <COND (,P-XNAM <TELL " "> <PRINTB ,P-XNAM>)>)
+       (.PRSO?
+       <BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
+       (T
+       <BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
+
+^L
+
+;"Begin-game stuff aboard the Feinstein"
+
+<ROOM BRIG
+      (IN ROOMS)
+      (DESC "Brig")
+      (LDESC
+"You are in the Feinstein's brig. Graffiti cover
+the walls. The cell door to the south is locked.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (SOUTH "The cell door is locked.")
+      (FLAGS RLANDBIT ONBIT)
+      (PSEUDO "GRAFFITI" GRAFFITI-PSEUDO "DOOR" DOOR-PSEUDO)>
+
+<ROOM DECK-NINE
+      (IN ROOMS)
+      (DESC "Deck Nine")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST"15 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST"15 ;"NE"   0  ;"NORTH"  0>)
+      (EAST TO REACTOR-LOBBY IF CORRIDOR-DOOR IS OPEN)
+      (WEST TO ESCAPE-POD IF POD-DOOR IS OPEN)
+      (IN TO ESCAPE-POD IF POD-DOOR IS OPEN)
+      (UP TO GANGWAY IF GANGWAY-DOOR IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL POD-DOOR CORRIDOR-DOOR GANGWAY-DOOR STAIRS GLOBAL-POD)
+      (PSEUDO "TRANSL" TRANSLATOR-PSEUDO "SLIME" SLIME-PSEUDO)
+      (ACTION DECK-NINE-F)>
+
+<ROUTINE DECK-NINE-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"This is a featureless corridor similar to every other corridor on the ship.
+It curves away to starboard, and a gangway leads up">
+               <COND (<FSET? ,GANGWAY-DOOR ,OPENBIT>
+                      <TELL ".">)
+                     (T
+                      <TELL
+", but both of these are blocked by closed bulkheads.">)>
+               <TELL
+" To port is the entrance to one of the ship's primary escape pods. The
+pod bulkhead is ">
+               <DDESC ,POD-DOOR>
+               <TELL "." CR>)>>
+
+<OBJECT SCRUB-BRUSH
+       (IN ADVENTURER)
+       (DESC "Patrol-issue self-contained multi-purpose scrub brush")
+       (SYNONYM BRUSH SCRUBB SCRUBR)
+       (ADJECTIVE SCRUB PATROL SELF-CONTAINED MULTI)
+       (FLAGS TAKEBIT)
+       (SIZE 10)>
+
+<OBJECT CHRONOMETER
+       (IN ADVENTURER)
+       (DESC "chronometer")
+       (SYNONYM CHRONOMETER WRISTWATCH WATCH)
+       (ADJECTIVE WRIST)
+       (SIZE 10)
+       (FLAGS MUNGBIT TAKEBIT WEARBIT WORNBIT)
+       (ACTION CHRONOMETER-F)>
+
+<ROUTINE CHRONOMETER-F ()
+        <COND (<VERB? EXAMINE READ>
+               <TELL
+"It is a standard wrist chronometer with a digital display. ">
+               <TELL-TIME>
+               <TELL " The back is engraved with
+the message \"Good luck in the Patrol! Love, Mom and Dad.\"" CR>)>>
+
+<ROUTINE TELL-TIME ()
+        <TELL "According to the chronometer, the current time is ">
+        <COND (<FSET? ,CHRONOMETER ,MUNGEDBIT>
+               <TELL N ,MUNGED-TIME>)
+              (T
+               <TELL N ,INTERNAL-MOVES>)>
+        <TELL ".">>
+
+<GLOBAL MUNGED-TIME 0>
+
+<OBJECT ID-CARD
+       (IN PATROL-UNIFORM)
+       (DESC "ID card")
+       (SYNONYM CARD CARDS)
+       (ADJECTIVE PATROL ID IDENTIFICATION)
+       (FLAGS VOWELBIT TAKEBIT READBIT)
+       (SIZE 3)
+       (TEXT
+"\"STELLAR PATROL|
+Special Assignment Task Force|
+ID Number:  6172-531-541\"")>  
+
+<OBJECT PATROL-UNIFORM
+       (IN ADVENTURER)
+       (DESC "Patrol uniform")
+       (LDESC
+"A slightly wrinkled Patrol uniform is lying here.")
+       (SYNONYM UNIFORM POCKET SUIT)
+       (ADJECTIVE PATROL WRINKLED)
+        (FLAGS TAKEBIT WORNBIT WEARBIT CONTBIT SEARCHBIT OPENBIT)
+       (CAPACITY 10)
+       (ACTION PATROL-UNIFORM-F)>
+
+<ROUTINE PATROL-UNIFORM-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"It is a standard-issue one-pocket Stellar Patrol uniform, a miracle of modern
+technology. It will keep its owner warm in cold climates and cool in warm
+locales. It provides protection against mild radiation, repels all insects,
+absorbs sweat, promotes healthy skin tone, and on top of everything else,
+it is super-comfy.">
+               <COND (<EQUAL? ,TRIP-COUNTER 15>
+                      <TELL
+" There are definitely worse things to find yourself wearing when stranded
+on a strange planet.">)>
+               <TELL CR>)
+              (<AND <VERB? WEAR>
+                    <FSET? ,LAB-UNIFORM ,WORNBIT>>
+               <TELL
+"It won't fit over the lab uniform." CR>)
+              (<AND <VERB? TAKE-OFF>
+                    <FSET? ,PATROL-UNIFORM ,WORNBIT>>
+               <FCLEAR ,PATROL-UNIFORM ,WORNBIT>
+               <TELL "You have removed your Patrol uniform.">
+               <COND (<EQUAL? ,TRIP-COUNTER 15>
+                      <TELL
+" You suddenly realize how warm it is. You also feel naked and vulnerable.">)>
+               <COND (<IN? ,BLATHER ,HERE>
+                      <TELL
+" \"Removing your uniform while on duty? Five hundred demerits!\"">)
+                     (<IN? ,FLOYD ,HERE>
+                      <TELL
+" Floyd giggles. \"You look funny without any clothes on.\"">)>
+               <TELL CR>)
+              (<VERB? OPEN CLOSE>
+               <TELL
+"There's no way to open or close the pocket of the " D ,PRSO "." CR>)>>
+
+<ROOM REACTOR-LOBBY
+      (IN ROOMS)
+      (DESC "Reactor Lobby")
+      (LDESC
+"The corridor widens here as it nears the main drive area. To starboard is
+the Ion Reactor that powers the vessel, and aft of here is the Auxiliary
+Control Room. The corridor continues to port.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN" 0  ;"UP"     0
+         ;"NW"  0 ;"WEST"15 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (WEST TO DECK-NINE IF CORRIDOR-DOOR IS OPEN)
+      (SOUTH "Ensign Blather pushes you roughly back toward your post.")
+      (EAST "Ensign Blather blocks your way, snarling angrily.")
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL CORRIDOR-DOOR)>
+
+<ROOM GANGWAY
+      (IN ROOMS)
+      (DESC "Gangway")
+      (LDESC
+"This is a steep metal gangway connecting Deck Eight, above, and Deck
+Nine, below.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"10  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (UP TO DECK-EIGHT)
+      (DOWN TO DECK-NINE IF GANGWAY-DOOR IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL GANGWAY-DOOR STAIRS)
+      (ACTION GANGWAY-F)>
+
+<ROUTINE GANGWAY-F (RARG)
+        <COND (<EQUAL? .RARG ,M-END>
+               <COND (<AND <PROB 15>
+                           <EQUAL? ,BLOWUP-COUNTER 0>>
+                      <TELL
+"You hear a distant bellowing ... something about an Ensign Seventh Class
+whose life is in danger." CR>)>)>>
+
+<ROOM DECK-EIGHT
+      (IN ROOMS)
+      (DESC "Deck Eight")
+      (LDESC
+"This is a featureless corridor leading port and starboard. A gangway leads
+down, and to fore is the Hyperspatial Jump Machinery Room.")
+      (C-MOVE  <TABLE
+         ;"OUT" 0 ;"IN"   0 ;"DOWN"10  ;"UP"     0
+         ;"NW"  0 ;"WEST" 0 ;"SW"   0  ;"SOUTH"  0 
+        ;"SE"  0 ;"EAST" 0 ;"NE"   0  ;"NORTH"  0>)
+      (DOWN TO GANGWAY)
+      (EAST "Blather throws you to the deck and makes you do 20 push-ups.")
+      (WEST "Blather throws you to the deck and makes you do 20 push-ups.")
+      (NORTH "Blather blocks your path, growling about extra galley duty.")
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL STAIRS)>
+
+;<OBJECT MEASLE
+       (DESC "Lt. Measle")
+       (LDESC
+"The Feinstein's record officer, Lieutenant Measle, is here.")
+       (SYNONYM MEASLE OFFICER)
+       (ADJECTIVE LT LIEUTENANT RECORD)
+       (FLAGS ACTORBIT)
+       (ACTION MEASLE-F)>
+
+;<ROUTINE MEASLE-F ()
+        <COND (<VERB? ATTACK KICK>
+               <TELL "Lt. Measle summons Ensign Blather, who throws
+you in the brig." CR>
+               <GOTO ,BRIG>)>> 
+
+<GLOBAL BLATHER-LEAVE 0>
+
+<GLOBAL BRIGS-UP 0>
+
+<ROUTINE I-BLATHER ()
+        <COND (<EQUAL? ,HERE ,DECK-EIGHT ,REACTOR-LOBBY>
+               <COND (<IN? ,BLATHER ,HERE>
+                      <SETG BRIGS-UP <+ ,BRIGS-UP 1>>
+                      <COND (<G? ,BRIGS-UP 3>
+                             <TELL CR
+"Blather loses his last vestige of patience and drags you to the Feinstein's
+brig. He throws you in, and the door clangs shut behind you." CR CR>
+                             <GOTO ,BRIG>
+                             <ROB ,ADVENTURER ,CRAG>
+                             <MOVE ,PADLOCK ,HERE>
+                             <FCLEAR ,PADLOCK ,TAKEBIT>)
+                            (T
+                             <TELL CR
+"\"I said to return to your post, Ensign Seventh Class!\" bellows Blather,
+turning a deepening shade of crimson." CR>)>)
+                     (<EQUAL? ,BLOWUP-COUNTER 0>
+                      <MOVE ,BLATHER ,HERE>
+                      <THIS-IS-IT ,BLATHER>
+                      <TELL CR
+"Ensign Blather, his uniform immaculate, enters and notices you are away
+from your post. \"Twenty demerits, Ensign Seventh Class!\" bellows Blather.
+\"Forty if you're not back on Deck Nine in five seconds!\" He curls his face
+into a hideous mask of disgust at your unbelievable negligence." CR>)>) 
+              (<EQUAL? ,HERE ,DECK-NINE>
+               <COND (<AND <EQUAL? ,BLATHER-LEAVE 3>
+                           <IN? ,BLATHER ,HERE>>
+                      <SETG BLATHER-LEAVE 0>
+                      <REMOVE ,BLATHER>
+                      <TELL CR
+"Blather, adding fifty more demerits for good measure, moves off in search
+of more young ensigns to terrorize." CR>)
+                     (<IN? ,BLATHER ,DECK-NINE>
+                      <SETG BLATHER-LEAVE <+ ,BLATHER-LEAVE 1>>
+                      <RFALSE>)
+                     (<AND <NOT <IN? ,AMBASSADOR ,HERE>>
+                           <EQUAL? ,BLOWUP-COUNTER 0>
+                           <PROB 5>>
+                      <MOVE ,BLATHER ,HERE>
+                      <THIS-IS-IT ,BLATHER>
+                      <TELL CR
+"Ensign First Class Blather swaggers in. He studies your work with half-closed
+eyes. \"You call this polishing, Ensign Seventh Class?\" he sneers. \"We have
+a position for an Ensign Ninth Class in the toilet-scrubbing division,
+you know. Thirty demerits.">
+                      <COND (<NOT <FSET? ,PATROL-UNIFORM ,WORNBIT>>
+                             <TELL
+" And another sixty for improper dress!">)>
+                      <TELL
+"\" He glares at you, his arms crossed." CR>)>)>>
+
+<OBJECT BLATHER
+       (DESC "Ensign First Class")
+       (LDESC 
+"Ensign First Class Blather is standing before you, furiously scribbling
+demerits onto an oversized clipboard.")
+       (SYNONYM ENSIGN BLATHER)
+       (ADJECTIVE ENSIGN FIRST CLASS)
+       (SIZE 150)
+       (FLAGS VOWELBIT ACTORBIT)
+       (ACTION BLATHER-F)>
+
+<ROUTINE BLATHER-F ()
+        <COND (<VERB? TALK TELL HELLO>         
+               <TELL
+"Blather shouts \"Speak when you're spoken to, Ensign Seventh Class!\" He
+breaks three pencil points in a frenzied rush to give you more demerits." CR>
+               <SETG P-CONT <>>
+               <SETG QUOTE-FLAG <>>
+               <RFATAL>)
+              (<VERB? ATTACK KICK>
+               <JIGS-UP
+"Blather removes several of your appendages and internal organs.">)
+              (<VERB? SALUTE>
+               <TELL
+"Blather's sneer softens a bit. \"First right thing you've done today. Only
+five demerits.\"" CR>)
+              (<AND <VERB? THROW>
+                    <EQUAL? ,BLATHER ,PRSI>>
+               <MOVE ,PRSO ,HERE>
+               <TELL
+"The " D ,PRSO " bounces off Blather's bulbous nose. He becomes livid, orders
+you to do five hundred push-ups, gives you ten thousand demerits, and assigns
+you five years of extra galley duty." CR>)
+              (<VERB? EXAMINE>
+               <TELL
+"Ensign Blather is a tall, beefy officer with a tremendous, misshapen nose.
+His uniform is perfect in every respect, and the crease in his trousers
+could probably slice diamonds in half." CR>)
+              (<VERB? TAKE>
+               <TELL
+"Blather brushes you away, muttering about suspended shore leave." CR>)>>
+
+<OBJECT AMBASSADOR
+       (DESC "alien ambassador")
+       (LDESC 
+"A high-ranking ambassador from a newly-contacted alien race is standing
+here on three of his legs, and watching you with seven of his eyes.")
+       (SYNONYM AMBASSADOR)
+       (ADJECTIVE VERY IMPORTANT ALIEN HIGH-RANKING HIGH RANKING)
+       (SIZE 150)
+       (FLAGS VOWELBIT ACTORBIT)
+       (ACTION AMBASSADOR-F)>
+
+<OBJECT CELERY
+       (DESC "piece of celery")
+       (SYNONYM CELERY PIECE STALK)
+       (FLAGS NDESCBIT FOODBIT)
+       (ACTION CELERY-F)>
+
+<ROUTINE CELERY-F ()
+        <COND (<VERB? EAT>
+               <JIGS-UP
+"Oops. Looks like Blow'k-Bibben-Gordoan metabolism is not
+compatible with our own. You die of all sorts of convulsions.">)
+              (<VERB? TAKE>
+               <TELL
+"The ambassador seems perturbed by your lack of normal protocol." CR>)>>
+
+<GLOBAL AMBASSADOR-LEAVE 0>
+
+<ROUTINE I-AMBASSADOR ()
+        <COND (<AND <G? ,AMBASSADOR-LEAVE 2>
+                    <IN? ,AMBASSADOR ,HERE>>
+               <REMOVE ,AMBASSADOR>
+               <REMOVE ,CELERY>
+               <COND (<EQUAL? ,HERE ,DECK-NINE>
+                      <TELL CR
+"The ambassador grunts a polite farewell, and disappears up the gangway,
+leaving a trail of dripping slime." CR>)>
+               <DISABLE <INT I-AMBASSADOR>>)
+              (<IN? ,AMBASSADOR ,DECK-NINE>
+               <SETG AMBASSADOR-LEAVE <+ ,AMBASSADOR-LEAVE 1>>
+               <COND (<EQUAL? ,HERE ,DECK-NINE>
+                      <TELL CR "The ambassador ">
+                      <TELL <PICK-ONE ,AMBASSADOR-QUOTES> CR>)
+                     (T
+                       <RFALSE>)>)
+              (<EQUAL? ,HERE ,DECK-NINE>
+               <COND (<AND <NOT <IN? ,AMBASSADOR ,HERE>>
+                           <NOT <IN? ,BLATHER ,HERE>>
+                           <EQUAL? ,BLOWUP-COUNTER 0>
+                           <PROB 15>>
+                      <MOVE ,AMBASSADOR ,HERE>
+                      <MOVE ,CELERY ,HERE>
+                      <THIS-IS-IT ,AMBASSADOR>
+                      <MOVE ,BROCHURE ,ADVENTURER>
+                      <TELL CR
+"The alien ambassador from the planet Blow'k-bibben-Gordo ambles toward you
+from down the corridor. He is munching on something resembling an enormous
+stalk of celery, and he leaves a trail of green slime on the deck. He stops
+nearby, and you wince as a pool of slime begins forming beneath him on your
+newly-polished deck. The ambassador wheezes loudly and hands you a brochure
+outlining his planet's major exports."CR>)>)>>
+
+<OBJECT BROCHURE
+       (DESC "brochure")
+       (LDESC
+"Unfortunately, one of those stupid Blow'k-bibben-Gordo brochures is here.")
+       (SYNONYM BROCHURE PAMPHLET LEAFLET)
+       (FLAGS ACIDBIT TAKEBIT READBIT)
+       (SIZE 4)
+       (TEXT
+"\"The leading export of Blow'k-bibben-Gordo is the adventure game|
+|
+          *** PLANETFALL ***|
+|
+written by S. Eric Meretzky.|
+Buy one today. Better yet, buy a thousand.\"")>
+
+<GLOBAL AMBASSADOR-QUOTES
+       <PLTABLE
+        "introduces himself as Br'gun-te'elkner-ipg'nun."
+        "asks if you are performing some sort of religious ceremony."
+        "inquires whether you are interested in a game of Bocci."      
+        "recites a plea for coexistence between your races."
+        "asks where Admiral Smithers can be found."
+        "remarks that all humans look alike to him."
+        "offers you a bit of celery.">>
+
+<ROUTINE AMBASSADOR-F ()
+        <COND (<VERB? TALK TELL HELLO>
+               <TELL
+"The ambassador taps his translator, and then touches his center knee to his
+left ear (the Blow'k-bibben-Gordoan equivalent of shrugging)." CR>
+               <SETG P-CONT <>>
+               <SETG QUOTE-FLAG <>>
+               <RFATAL>)
+              (<AND <VERB? ASK-FOR>
+                    <EQUAL? ,PRSI ,CELERY>>
+               <TELL
+"The ambassador seems willing to let you eat some of it, but I doubt he wants
+to part with the entire stalk." CR>)
+              (<VERB? ATTACK KICK>
+               <TELL
+"The ambassador is startled, and emits an amazing quantity of slime which
+spreads across the section of the deck you just polished." CR>)
+              (<VERB? EXAMINE>
+               <TELL
+"The ambassador has around twenty eyes, seven of which are currently
+open. Half of his six legs are retracted. Green slime oozes from
+multiple orifices in his scaly skin. He speaks through a mechanical
+translator slung around his neck." CR>)
+              (<VERB? LISTEN>
+               <TELL
+"The alien makes a wheezing noise as he breathes." CR>)>>
+
+<ROOM ESCAPE-POD
+      (IN ROOMS)
+      (DESC "Escape Pod")
<