Full Code of historicalsource/planetfall for AI

master 7e7af1234517 cached
33 files
1017.6 KB
422.9k tokens
1 requests
Download .txt
Showing preview only (1,047K chars total). Download the full file or copy to clipboard to get everything.
Repository: historicalsource/planetfall
Branch: master
Commit: 7e7af1234517
Files: 33
Total size: 1017.6 KB

Directory structure:
gitextract_nd_5qeya/

├── COMPILED/
│   └── planetfall.z3
├── README.md
├── compone.zabstr
├── compone.zap
├── compone.zil
├── comptwo.zabstr
├── comptwo.zap
├── comptwo.zil
├── globals.zabstr
├── globals.zap
├── globals.zil
├── misc.zabstr
├── misc.zap
├── misc.zil
├── parser.zabstr
├── parser.zap
├── parser.zil
├── planetfall.beta
├── planetfall.clocker
├── planetfall.errors
├── planetfall.record
├── planetfall.zap
├── planetfall.zil
├── planetfalldat.zap
├── planetfallfreq.xzap
├── planetfallpur.zap
├── planetfallstr.zap
├── s3.zil
├── syntax.zap
├── syntax.zil
├── verbs.zabstr
├── verbs.zap
└── verbs.zil

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
# Planetfall Source Code Collection

Planetfall is a 1983 interactive fiction game written by Steve Meretzky and published by Infocom.

Further information on Planetfall:

* [Wikipedia](https://en.wikipedia.org/wiki/Planetfall)
* [The Digital Antiquarian](https://www.filfre.net/2013/03/planetfall/)
* [The Interactive Fiction Database](https://ifdb.tads.org/viewgame?id=xe6kb3cuqwie2q38)
* [The Infocom Gallery](http://infocom.elsewhere.org/gallery/planetfall/planetfall.html)
* [IFWiki](http://www.ifwiki.org/index.php/Planetfall)

__What is this Repository?__

This repository is a directory of source code for the Infocom game "Planetfall", including a variety of files both used and discarded in the production of the game. It is written in ZIL (Zork Implementation Language), a refactoring of MDL (Muddle), itself a dialect of LISP created by MIT students and staff.

The source code was contributed anonymously and represents a snapshot of the Infocom development system at time of shutdown - there is no remaining way to compare it against any official version as of this writing, and so it should be considered canonical, but not necessarily the exact source code arrangement for production.

__Basic Information on the Contents of This Repository__

It is mostly important to note that there is currently no known way to compile the source code in this repository into a final "Z-machine Interpreter Program" (ZIP) file. There are .ZIP files in some of the Infocom Source Code repositories but they were there as of final spin-down of the Infocom Drive and the means to create them is currently lost.

Throughout its history, Infocom used a TOPS20 mainframe with a compiler (ZILCH) to create and edit language files - this repository is a mirror of the source code directory archive of Infocom but could represent years of difference from what was originally released.

In general, Infocom games were created by taking previous Infocom source code, copying the directory, and making changes until the game worked the way the current Implementor needed. Structure, therefore, tended to follow from game to game and may or may not accurately reflect the actual function of the code.

There are also multiple versions of the "Z-Machine" and code did change notably between the first years of Infocom and a decade later. Addition of graphics, sound and memory expansion are all slowly implemented over time.

__What is the Purpose of this Repository__

This collection is meant for education, discussion, and historical work, allowing researchers and students to study how code was made for these interactive fiction games and how the system dealt with input and processing. It is not considered to be under an open license.

Researchers are encouraged to share their discoveries about the information in this source code and the history of Infocom and its many innovative employees.

__Some Trivia and Notes on this Repository__

* First game created by Steve Meretzky after working as a tester for Infocom.


================================================
FILE: compone.zabstr
================================================

<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 0 0 0 35 0 0 0 0 0
0 0 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 %<> WORD> 
<DEFINE-ROUTINE UNDERWATER-F> 
<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 0 0 10 40 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE CRAG-F> 
<ROOM BALCONY (IN ROOMS) (DESC "Balcony") (C-MOVE <TABLE 0 0 25 30 0 0 0 0 0 0
0 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)> 
<DEFINE-ROUTINE BALCONY-F> 
<ROOM WINDING-STAIR (IN ROOMS) (DESC "Winding Stair") (C-MOVE <TABLE 0 0 15 30
0 0 0 0 0 0 0 0>) (DOWN PER WATER-LEVEL-F) (UP TO COURTYARD) (FLAGS ONBIT
RLANDBIT) (GLOBAL CLIFF STAIRS) (ACTION WINDING-STAIR-F)> 
<DEFINE-ROUTINE WINDING-STAIR-F> 
<ROOM COURTYARD (IN ROOMS) (DESC "Courtyard") (C-MOVE <TABLE 0 0 15 0 0 0 0 0 0
0 0 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)> 
<DEFINE-ROUTINE COURTYARD-F> 
<DEFINE-ROUTINE WATER-LEVEL-F> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 25 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 0 0 0 0 0 0 0 0 0 0
0 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 %<> WORD> 
<GLOBAL NUMBER-NEEDED 0 %<> WORD> 
<DEFINE-ROUTINE REC-AREA-F> 
<ROOM CONFERENCE-ROOM (IN ROOMS) (DESC "Conference Room") (C-MOVE <TABLE 0 0 0
0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE CONFERENCE-ROOM-F> 
<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)> 
<DEFINE-ROUTINE COMBINATION-DIAL-F> 
<DEFINE-ROUTINE CONFERENCE-DOOR-F> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 25 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0
0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE MESS-CORRIDOR-F> 
<OBJECT STORAGE-WEST-DOOR (IN LOCAL-GLOBALS) (DESC "door") (SYNONYM DOOR) (
FLAGS DOORBIT NDESCBIT) (ACTION STORAGE-WEST-DOOR-F)> 
<DEFINE-ROUTINE STORAGE-WEST-DOOR-F> 
<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 <> %<> WORD> 
<DEFINE-ROUTINE PADLOCK-F> 
<ROOM STORAGE-WEST (IN ROOMS) (DESC "Storage West") (LDESC
"This is a small room obviously intended as a storage area.") (C-MOVE <TABLE 0
0 0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE CAN-F> 
<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 <> %<> WORD> 
<GLOBAL LADDER-FLAG <> %<> WORD> 
<DEFINE-ROUTINE LADDER-F> 
<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 0 0 0 0 0 0 0 0 0 160 0 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 0 0 0 0 0 0 0 0 0
0 0 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)> 
<DEFINE-ROUTINE MESS-HALL-F> 
<OBJECT KITCHEN-DOOR (IN LOCAL-GLOBALS) (DESC "door") (SYNONYM DOOR) (ADJECTIVE
KITCHEN) (FLAGS DOORBIT NDESCBIT) (ACTION KITCHEN-DOOR-F)> 
<DEFINE-ROUTINE KITCHEN-DOOR-F> 
<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 0 0 0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE DISPENSER-F> 
<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)> 
<DEFINE-ROUTINE HIGH-PROTEIN-F> 
<DEFINE-ROUTINE WORTHLESS-ACTION> 
<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 0 0 0 0 0 160 0 0 0 30 0 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)> 
<DEFINE-ROUTINE LONG-HALL-F> 
<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
0 0 0 0 0 0 0 0 0 0 0 0>) (SOUTH TO CORRIDOR-JUNCTION) (NORTH TO ADMIN-CORRIDOR
) (EAST TO SANFAC-E) (FLAGS RLANDBIT ONBIT) (ACTION ADMIN-CORRIDOR-S-F)> 
<DEFINE-ROUTINE ADMIN-CORRIDOR-S-F> 
<OBJECT CREVICE (IN ADMIN-CORRIDOR-S) (DESC "crevice") (SYNONYM CREVICE CRACK
HOLE) (ADJECTIVE NARROW JAGGED) (FLAGS NDESCBIT) (ACTION CREVICE-F)> 
<DEFINE-ROUTINE CREVICE-F> 
<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)> 
<DEFINE-ROUTINE KEY-F> 
<ROOM ADMIN-CORRIDOR (IN ROOMS) (DESC "Admin Corridor") (C-MOVE <TABLE 0 0 0 0
0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE ADMIN-CORRIDOR-F> 
<ROOM ADMIN-CORRIDOR-N (IN ROOMS) (DESC "Admin Corridor North") (C-MOVE <TABLE
0 0 0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE ADMIN-CORRIDOR-N-F> 
<DEFINE-ROUTINE LADDER-EXIT-F> 
<OBJECT RIFT (IN LOCAL-GLOBALS) (DESC "rift") (SYNONYM RIFT GULF PRECIPICE HOLE
) (ADJECTIVE WIDE DEEP GAPING) (FLAGS NDESCBIT) (ACTION RIFT-F)> 
<DEFINE-ROUTINE RIFT-F> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0
0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE SYSTEMS-MONITORS-F> 
<DEFINE-ROUTINE DESCRIBE-MONITORS> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0
0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE DESK-F> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 25 0 25 0 0 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 0 0 0 0 0
0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE OIL-CAN-F> 
<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)> 
<DEFINE-ROUTINE CARTON-F> 
<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)> 
<DEFINE-ROUTINE CRACKED-BOARD-F> 
<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)> 
<DEFINE-ROUTINE GOOD-BEDISTOR-F> 
<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 0 0 0 0 0 0 0
0 0 0 0 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 0 0
20 0 0 0 0 0 0 0 0 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 0 0 0 30 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE REACTOR-ELEVATOR-DOOR-F> 
<DEFINE-ROUTINE 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 0 0 0
0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 25 0>) (NE TO MECH-CORRIDOR-S) (EAST TO
MACHINE-SHOP) (FLAGS RLANDBIT FLOYDBIT ONBIT) (GLOBAL SHELVES)> 
<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)> 
<DEFINE-ROUTINE FLASK-F> 
<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)> 
<DEFINE-ROUTINE MAGNET-F> 
<DEFINE-ROUTINE I-MAGNET> 
<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 0 0 0 0 0 0
0 0 0 0 0 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)> 
<DEFINE-ROUTINE MACHINE-SHOP-F> 
<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 <> %<> WORD> 
<DEFINE-ROUTINE CHEMICAL-DISPENSER-F> 
<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 %<> WORD> 
<GLOBAL COLOR-LTBL <PLTABLE "red" "blue" "green" "yellow" "gray" "brown"
"black" "clear" "clear"> %<> WORD> 
<DEFINE-ROUTINE CHEM-BUTTON-F> 
<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 0 0 0 0 25 0 0 0 0 0 0 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 <> %<> WORD> 
<DEFINE-ROUTINE FLOYD-F> 
<DEFINE-ROUTINE FLOYDS-FAMOUS-DOOR-ROUTINE> 
<DEFINE-ROUTINE FLUSH> 
<DEFINE-ROUTINE FLOYD-INTO-LAB> 
<DEFINE-ROUTINE FLOYD-NOT-HAVE> 
<GLOBAL FLOYD-SCORE-FLAG <> %<> WORD> 
<GLOBAL FLOYD-SPOKE <> %<> WORD> 
<GLOBAL FLOYD-FOLLOW <> %<> WORD> 
<GLOBAL FLOYD-REACTIVATED <> %<> WORD> 
<GLOBAL FLOYD-INTRODUCED <> %<> WORD> 
<DEFINE-ROUTINE FLOYD-COMES-ALIVE> 
<DEFINE-ROUTINE I-FLOYD> 
<DEFINE-ROUTINE CALL-ME-FLOYD> 
<DEFINE-ROUTINE KLUDGE> 
<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
)> 
<DEFINE-ROUTINE DEAD-FLOYD-F> 
<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"> %<> WORD> 
<ROOM ELEVATOR-LOBBY (IN ROOMS) (DESC "Elevator Lobby") (C-MOVE <TABLE 0 0 0 0
0 30 0 0 0 0 0 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)> 
<DEFINE-ROUTINE ELEVATOR-LOBBY-F> 
<ROOM UPPER-ELEVATOR (IN ROOMS) (DESC "Upper Elevator") (C-MOVE <TABLE 0 0 0 0
0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE UPPER-ELEVATOR-F> 
<ROOM LOWER-ELEVATOR (IN ROOMS) (DESC "Lower Elevator") (C-MOVE <TABLE 0 0 0 0
0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE LOWER-ELEVATOR-F> 
<DEFINE-ROUTINE ELEVATOR-ENTER-F> 
<DEFINE-ROUTINE ELEVATOR-EXIT-F> 
<OBJECT UPPER-ELEVATOR-DOOR (IN LOCAL-GLOBALS) (DESC "blue door") (SYNONYM DOOR
) (ADJECTIVE UPPER ELEVATOR BLUE) (FLAGS NDESCBIT DOORBIT) (ACTION
UPPER-ELEVATOR-DOOR-F)> 
<DEFINE-ROUTINE UPPER-ELEVATOR-DOOR-F> 
<OBJECT LOWER-ELEVATOR-DOOR (IN LOCAL-GLOBALS) (DESC "red door") (SYNONYM DOOR)
(ADJECTIVE RED LOWER ELEVATOR METAL) (FLAGS NDESCBIT DOORBIT) (ACTION
LOWER-ELEVATOR-DOOR-F)> 
<DEFINE-ROUTINE LOWER-ELEVATOR-DOOR-F> 
<DEFINE-ROUTINE DOOR-CLOSED> 
<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)> 
<DEFINE-ROUTINE BLUE-ELEVATOR-BUTTON-F> 
<DEFINE-ROUTINE RED-ELEVATOR-BUTTON-F> 
<DEFINE-ROUTINE I-UPPER-ELEVATOR-ARRIVE> 
<DEFINE-ROUTINE I-LOWER-ELEVATOR-ARRIVE> 
<OBJECT ELEVATOR-BUTTON (IN LOCAL-GLOBALS) (DESC "button") (SYNONYM BUTTON) (
FLAGS NDESCBIT) (ACTION ELEVATOR-BUTTON-F)> 
<GLOBAL LOWER-ELEVATOR-UP <> %<> WORD> 
<GLOBAL UPPER-ELEVATOR-UP T %<> WORD> 
<GLOBAL ELEVATOR-IN-TRANSIT <> %<> WORD> 
<GLOBAL LOWER-ELEVATOR-ON <> %<> WORD> 
<GLOBAL UPPER-ELEVATOR-ON <> %<> WORD> 
<DEFINE-ROUTINE ELEVATOR-BUTTON-F> 
<DEFINE-ROUTINE I-TURNOFF-UPPER-ELEVATOR> 
<DEFINE-ROUTINE I-TURNOFF-LOWER-ELEVATOR> 
<GLOBAL ELEVATOR-LIGHT-OFF "A recording says \"Elevator no longer enabled.\"" %
<> WORD> 
<GLOBAL ELEVATOR-STARTS
"The elevator door slides shut. After a moment, you feel a sensation of
vertical movement." %<> WORD> 
<DEFINE-ROUTINE I-UPPER-ELEVATOR-TRIP> 
<DEFINE-ROUTINE I-LOWER-ELEVATOR-TRIP> 
<DEFINE-ROUTINE ELEVATOR-DOOR-OPENS> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 30 0 0 0 0 0 0 0 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 0 0 15 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE HELICOPTER-OBJECT-F> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0
0 0 0>) (SW TO TOWER-CORE) (FLAGS RLANDBIT ONBIT) (GLOBAL LIGHTS) (PSEUDO
"CABLES" CABLES-PSEUDO "ENUNCI" ENUNCIATOR-PSEUDO) (ACTION COMM-ROOM-F)> 
<DEFINE-ROUTINE COMM-ROOM-F> 
<GLOBAL JUST-ENTERED T %<> WORD> 
<DEFINE-ROUTINE I-UNENTER> 
<OBJECT RECEIVE-CONSOLE (IN COMM-ROOM) (DESC "communications receive console")
(C-MOVE <TABLE 0 0 0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE PLAYBACK-BUTTON-F> 
<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)> 
<DEFINE-ROUTINE RANDOMIZE-ORDER> 
<GLOBAL ORDER-LTBL <LTABLE 0 0 0 0 0 0 0> %<> WORD> 
<DEFINE-ROUTINE CHEMICAL-FLUID-F> 
<DEFINE-ROUTINE CUBE-SEEMS> 
<DEFINE-ROUTINE CHEMICAL-POURS> 
<DEFINE-ROUTINE STRIP-DISSOLVES> 
<GLOBAL COMM-SHUTDOWN <> %<> WORD> 
<DEFINE-ROUTINE SHUTDOWN> 
<DEFINE-ROUTINE COMM-SETUP> 
<GLOBAL COMM-FIXED <> %<> WORD> 
<GLOBAL CHEMICAL-REQUIRED 0 %<> WORD> 
<GLOBAL STEPS-TO-GO 0 %<> WORD> 
<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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0
0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE OTHER-ELEVATOR-ENTER-F> 
<ROOM KALAMONTEE-PLATFORM (IN ROOMS) (DESC "Kalamontee Platform") (C-MOVE <
TABLE 0 0 0 0 0 0 0 0 0 0 0 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)> 
<DEFINE-ROUTINE KALAMONTEE-PLATFORM-F> 

================================================
FILE: compone.zap
================================================


	.FUNCT	UNDERWATER-F,RARG
	EQUAL?	RARG,M-END \FALSE
	IGRTR?	'DROWN,2 \FALSE
	CALL	JIGS-UP,STR?101
	RSTACK	


	.FUNCT	CRAG-F,RARG
	EQUAL?	RARG,M-ENTER \FALSE
	SET	'DROWN,3
	RETURN	DROWN


	.FUNCT	BALCONY-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"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. "
	EQUAL?	DAY,1 \?CCL6
	PRINTR	"A rocky crag can be seen about eight meters below."
?CCL6:	EQUAL?	DAY,2 \?CCL8
	PRINTR	"The ocean waters swirl below. The crag where you landed yesterday is now underwater!"
?CCL8:	EQUAL?	DAY,3 \FALSE
	PRINTR	"Ocean waters are lapping at the base of the balcony."


	.FUNCT	WINDING-STAIR-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"The middle of a long, steep stairway carved into the face of a cliff."
	EQUAL?	DAY,4 \?CCL6
	PRINTR	" You hear the lapping of water from below."
?CCL6:	EQUAL?	DAY,5 \?CND4
	PRINTR	" You can see ocean water splashing against the steps below you."
?CND4:	CRLF	
	RTRUE	


	.FUNCT	COURTYARD-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"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. "
	EQUAL?	DAY,6,7 \?CCL6
	PRINTR	"From the direction of the stairway comes the sound of ocean surf."
?CCL6:	EQUAL?	DAY,8 \?CND4
	PRINTR	"Ocean water washes against the top few steps."
?CND4:	CRLF	
	RTRUE	


	.FUNCT	WATER-LEVEL-F
	EQUAL?	HERE,BALCONY \?CCL3
	EQUAL?	DAY,1 \?CCL6
	RETURN	CRAG
?CCL6:	RETURN	UNDERWATER
?CCL3:	EQUAL?	HERE,WINDING-STAIR \?CCL8
	LESS?	DAY,4 \?CCL11
	RETURN	BALCONY
?CCL11:	RETURN	UNDERWATER
?CCL8:	EQUAL?	HERE,COURTYARD \FALSE
	LESS?	DAY,6 \?CCL16
	RETURN	WINDING-STAIR
?CCL16:	RETURN	UNDERWATER


	.FUNCT	REC-AREA-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"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 "
	FSET?	CONFERENCE-DOOR,OPENBIT \?CCL6
	PRINTI	"open"
	JUMP	?CND4
?CCL6:	PRINTI	"closed and locked. A dial on the door is currently set to "
	PRINTN	DIAL-NUMBER
?CND4:	PRINTR	"."


	.FUNCT	CONFERENCE-ROOM-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"This is a fairly square room, almost filled by a round conference table. To the south is a door which is "
	CALL	DDESC,CONFERENCE-DOOR
	PRINTR	". To the north is a small room about the size of a phone booth."


	.FUNCT	COMBINATION-DIAL-F
	EQUAL?	PRSA,V?EXAMINE \?CCL3
	PRINTR	"The dial can be turned to any number between 0 and 1000."
?CCL3:	EQUAL?	PRSA,V?SET \FALSE
	EQUAL?	PRSI,INTNUM \FALSE
	FSET?	COMBINATION-DIAL,MUNGEDBIT \?CCL10
	PRINTR	"The dial has somehow become fused and won't move."
?CCL10:	EQUAL?	P-NUMBER,DIAL-NUMBER \?CCL12
	PRINTR	"That's what the dial is set to now!"
?CCL12:	EQUAL?	P-NUMBER,NUMBER-NEEDED \?CCL14
	SET	'DIAL-NUMBER,0
	FSET	CONFERENCE-DOOR,OPENBIT
	PRINTR	"The door swings open, and the dial resets to 0."
?CCL14:	GRTR?	P-NUMBER,1000 \?CCL16
	PRINTR	"The dial cannot be turned to a number that high."
?CCL16:	SET	'DIAL-NUMBER,P-NUMBER
	PRINTI	"The dial is now set to "
	PRINTN	P-NUMBER
	PRINTR	"."


	.FUNCT	CONFERENCE-DOOR-F
	EQUAL?	PRSA,V?OPEN \?CCL3
	FSET?	CONFERENCE-DOOR,OPENBIT \?CCL6
	CALL	ALREADY-OPEN
	RSTACK	
?CCL6:	EQUAL?	HERE,REC-AREA \?CCL9
	PRINTR	"The door is locked. You probably have to turn the dial to some number to open it."
?CCL9:	PRINTR	"The door seems to be locked from the other side."
?CCL3:	EQUAL?	PRSA,V?CLOSE \FALSE
	FSET?	CONFERENCE-DOOR,OPENBIT \?CCL14
	FCLEAR	CONFERENCE-DOOR,OPENBIT
	PRINTR	"The door closes and you hear a click as it locks."
?CCL14:	CALL	IS-CLOSED
	RSTACK	


	.FUNCT	MESS-CORRIDOR-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"This is a wide, east-west hallway with a large portal to the south. A small door to the north is "
	CALL	DDESC,STORAGE-WEST-DOOR
	ZERO?	PADLOCK-REMOVED \?CND4
	PRINTI	" and hooked with a simple steel padlock"
	FSET?	PADLOCK,OPENBIT \?CCL8
	PRINTI	" which hangs unlocked"
	JUMP	?CND4
?CCL8:	PRINTI	" which is also closed"
?CND4:	PRINTR	"."


	.FUNCT	STORAGE-WEST-DOOR-F
	EQUAL?	PRSA,V?OPEN \?CCL3
	FSET?	STORAGE-WEST-DOOR,OPENBIT \?CCL6
	CALL	ALREADY-OPEN
	RSTACK	
?CCL6:	ZERO?	PADLOCK-REMOVED /?CCL8
	FSET	STORAGE-WEST-DOOR,OPENBIT
	PRINTR	"Opened."
?CCL8:	PRINTR	"The door cannot be opened until the padlock is removed."
?CCL3:	EQUAL?	PRSA,V?CLOSE \?CCL10
	FSET?	STORAGE-WEST-DOOR,OPENBIT \?CCL13
	FCLEAR	STORAGE-WEST-DOOR,OPENBIT
	PRINTR	"The door is now closed."
?CCL13:	CALL	IS-CLOSED
	RSTACK	
?CCL10:	EQUAL?	PRSA,V?UNLOCK \FALSE
	PRINTI	"The door itself isn't locked."
	FSET?	PADLOCK,OPENBIT /?CND16
	PRINTR	" It is the padlock on the door which is locked."
?CND16:	CRLF	
	RTRUE	


	.FUNCT	PADLOCK-F
	EQUAL?	HERE,BRIG \?CCL3
	PRINTR	"You can't see or reach the lock from inside the cell."
?CCL3:	EQUAL?	PRSA,V?OPEN-WITH \?CCL5
	EQUAL?	PADLOCK,PRSO \?CCL5
	CALL	PERFORM,V?UNLOCK,PADLOCK,PRSI
	RTRUE	
?CCL5:	EQUAL?	PRSA,V?OPEN,V?UNLOCK \?CCL9
	FSET?	PADLOCK,OPENBIT /?CCL12
	ZERO?	PRSI \?CCL15
	PRINTR	"You can't open it with your hands."
?CCL15:	EQUAL?	PRSI,KEY \?CCL17
	FSET?	PADLOCK,MUNGEDBIT \?CCL20
	PRINTR	"Tsk, tsk ... the padlock seems to be fused shut."
?CCL20:	FSET	PADLOCK,OPENBIT
	PRINTR	"The padlock springs open."
?CCL17:	PRINTR	"That doesn't work."
?CCL12:	PRINTR	"The padlock is already unlocked."
?CCL9:	EQUAL?	PRSA,V?LOCK,V?CLOSE \?CCL22
	FSET?	PADLOCK,OPENBIT \?CCL25
	FCLEAR	PADLOCK,OPENBIT
	PRINTR	"The padlock closes with a sharp click."
?CCL25:	PRINTR	"The padlock is already locked."
?CCL22:	EQUAL?	PRSA,V?TAKE \?CCL27
	ZERO?	PADLOCK-REMOVED \?CCL27
	FSET?	PADLOCK,OPENBIT \?CCL32
	SET	'PADLOCK-REMOVED,TRUE-VALUE
	FCLEAR	PADLOCK,TRYTAKEBIT
	FCLEAR	PADLOCK,NDESCBIT
	RFALSE	
?CCL32:	FSET?	PADLOCK,OPENBIT /FALSE
	PRINTR	"The padlock is locked to the door."
?CCL27:	EQUAL?	PRSA,V?MUNG \FALSE
	PRINTR	"And, as we go into the next round, it's Padlock 1, Adventurer 0..."


	.FUNCT	CAN-F
	EQUAL?	PRSA,V?EXAMINE \?CCL3
	PRINTR	"This is a rather normal tin can. It is large and is labelled ""Spam and Egz."""
?CCL3:	EQUAL?	PRSA,V?OPEN \FALSE
	PRINTR	"You certainly can't open it with your hands, and you don't seem to have found a can opener yet."


	.FUNCT	LADDER-F
	EQUAL?	PRSA,V?TAKE \?CCL3
	ZERO?	LADDER-EXTENDED /FALSE
	PRINTR	"You can't possibly carry the ladder while it's extended."
?CCL3:	EQUAL?	PRSA,V?EXAMINE \?CCL8
	PRINTI	"It is a heavy-duty ladder built of sturdy aluminum tubing. It is currently "
	ZERO?	LADDER-EXTENDED /?CCL11
	PRINTR	"extended to its full length of about 8 meters, but could be collapsed to a shorter length for easier carrying."
?CCL11:	PRINTR	"collapsed and is around two-and-a-half meters long, but if extended would obviously be much longer."
?CCL8:	EQUAL?	PRSA,V?OPEN \?CCL13
	ZERO?	LADDER-EXTENDED /?CCL16
	PRINTR	"The ladder is already extended."
?CCL16:	EQUAL?	HERE,STORAGE-EAST,STORAGE-WEST,BOOTH-2 /?CTR17
	EQUAL?	HERE,UPPER-ELEVATOR,LOWER-ELEVATOR \?CCL18
?CTR17:	PRINTR	"You can't extend the ladder in this tiny space!"
?CCL18:	IN?	LADDER,ADVENTURER \?CCL22
	PRINTR	"You couldn't possibly extend the ladder while you're holding it."
?CCL22:	FSET	LADDER,TRYTAKEBIT
	SET	'LADDER-EXTENDED,TRUE-VALUE
	SET	'C-ELAPSED,36
	PRINTR	"The ladder extends to a length of around eight meters."
?CCL13:	EQUAL?	PRSA,V?CLOSE \?CCL24
	ZERO?	LADDER-EXTENDED /?CCL27
	SET	'C-ELAPSED,21
	ZERO?	LADDER-FLAG /?CCL30
	SET	'LADDER-FLAG,FALSE-VALUE
	REMOVE	LADDER
	PRINTR	"As the ladder shortens it plunges into the rift."
?CCL30:	SET	'LADDER-EXTENDED,FALSE-VALUE
	FCLEAR	LADDER,TRYTAKEBIT
	PRINTR	"The ladder collapses to a length of around two-and-a-half meters."
?CCL27:	PRINTR	"The ladder is already in its collapsed state."
?CCL24:	EQUAL?	PRSA,V?ATTRACT,V?SPAN \?CCL32
	EQUAL?	PRSI,RIFT \?CCL32
	ZERO?	LADDER-FLAG /?CCL37
	PRINTR	"The ladder already spans the rift."
?CCL37:	ZERO?	LADDER-EXTENDED /?CCL40
	SET	'LADDER-FLAG,TRUE-VALUE
	FSET	LADDER,NDESCBIT
	PRINTR	"The ladder swings out across the rift and comes to rest on the far edge, spanning the precipice."
?CCL40:	REMOVE	LADDER
	PRINTR	"The ladder, far too short to reach the other edge of the rift, plunges into the rift and is lost forever."
?CCL32:	EQUAL?	PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE
	ZERO?	LADDER-FLAG /?CCL45
	PRINTR	"You can't climb a horizontal ladder!"
?CCL45:	IN?	LADDER,ADVENTURER \FALSE
	PRINTR	"That would be a neat trick, considering that you're holding it."


	.FUNCT	MESS-HALL-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"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 "
	CALL	DDESC,KITCHEN-DOOR
	PRINTR	". Next to the door is a small slot."


	.FUNCT	KITCHEN-DOOR-F
	EQUAL?	PRSA,V?OPEN \FALSE
	PRINTR	"A light flashes ""Pleez yuuz kitcin akses kard."""


	.FUNCT	DISPENSER-F
	EQUAL?	PRSA,V?EXAMINE \?CCL3
	PRINTI	"This wall-mounted unit contains an octagonal niche beneath a spout. "
	IN?	CANTEEN,DISPENSER \?CND4
	PRINTI	"A canteen is resting in the niche, its mouth lying just below the spout. "
?CND4:	PRINTR	"Above the spout is a button. The machine is labelled ""Hii Prooteen Likwid Dispensur."""
?CCL3:	EQUAL?	PRSA,V?CLOSE \?CCL7
	CALL	NO-CLOSE
	RTRUE	
?CCL7:	EQUAL?	PRSA,V?PUT \FALSE
	EQUAL?	PRSO,CANTEEN \?CCL12
	MOVE	CANTEEN,DISPENSER
	PRINTR	"The canteen fits snugly into the octagonal niche, its mouth resting just below the spout of the machine."
?CCL12:	PRINTR	"It doesn't fit in the niche."


	.FUNCT	HIGH-PROTEIN-F,X=0
	EQUAL?	PRSA,V?EAT \?CCL3
	IN?	CANTEEN,ADVENTURER /?CCL6
	SET	'PRSO,CANTEEN
	CALL	NOT-HOLDING
	RSTACK	
?CCL6:	ZERO?	HUNGER-LEVEL \?CCL9
	PRINT	NOT-HUNGRY
	CRLF	
	RTRUE	
?CCL9:	REMOVE	HIGH-PROTEIN
	SET	'C-ELAPSED,15
	SET	'HUNGER-LEVEL,0
	CALL	QUEUE,I-HUNGER-WARNINGS,3600
	PUT	STACK,0,1
	PRINTR	"Mmmm....that was good. It certainly quenched your thirst and satisfied your hunger."
?CCL3:	EQUAL?	PRSA,V?POUR \FALSE
	EQUAL?	PRSO,HIGH-PROTEIN \FALSE
	IN?	CANTEEN,ADVENTURER /?CCL16
	PRINTR	"Maybe if you were holding the canteen..."
?CCL16:	ZERO?	PRSI \?CND14
	SET	'PRSI,GROUND
?CND14:	EQUAL?	PRSI,FLASK \?CCL20
	CALL	WORTHLESS-ACTION
	RSTACK	
?CCL20:	EQUAL?	PRSI,FUNNEL-HOLE \?CCL22
	IN?	CHEMICAL-FLUID,FLASK \?CND23
	SET	'X,TRUE-VALUE
?CND23:	SET	'CHEMICAL-REQUIRED,10
	REMOVE	HIGH-PROTEIN
	CALL	PERFORM,V?POUR,CHEMICAL-FLUID,FUNNEL-HOLE
	ZERO?	X /TRUE
	MOVE	CHEMICAL-FLUID,FLASK
	RTRUE	
?CCL22:	REMOVE	HIGH-PROTEIN
	PRINTI	"The protein-rich fluid pours over the "
	PRINTD	PRSI
	PRINTR	" and then dries up."


	.FUNCT	WORTHLESS-ACTION
	PRINTR	"A worthless action -- and much too difficult for a poorly-written program like this one to handle."


	.FUNCT	LONG-HALL-F
	PRINTI	"You walk down the long, featureless hallway for a long time. Finally, you see "
	SET	'C-ELAPSED,160
	EQUAL?	HERE,CORRIDOR-JUNCTION \?CCL3
	PRINTI	"some doorways ahead..."
	CRLF	
	CRLF	
	RETURN	DORM-CORRIDOR
?CCL3:	PRINTI	"an intersection ahead..."
	CRLF	
	CRLF	
	RETURN	CORRIDOR-JUNCTION


	.FUNCT	ADMIN-CORRIDOR-S-F,RARG
	EQUAL?	RARG,M-END \FALSE
	FSET?	KEY,INVISIBLE \FALSE
	RANDOM	100
	LESS?	20,STACK /FALSE
	PRINTR	"You catch, out of the corner of your eye, a glint of light from the direction of the floor."


	.FUNCT	CREVICE-F
	EQUAL?	PRSA,V?REACH \?CCL3
	PRINTR	"The crevice is too narrow to reach into."
?CCL3:	EQUAL?	PRSA,V?SEARCH,V?EXAMINE,V?LOOK-INSIDE \FALSE
	FSET?	KEY,TOUCHBIT \?CCL8
	PRINTR	"Nothing there but bunches of dust."
?CCL8:	FCLEAR	KEY,INVISIBLE
	PRINTR	"Lying at the bottom of the narrow crack, partly covered by layers of dust, is a shiny steel key!"


	.FUNCT	KEY-F
	EQUAL?	PRSA,V?MOVE,V?ZATTRACT,V?TAKE \?CCL3
	FSET?	KEY,TOUCHBIT /?CCL3
	EQUAL?	PRSI,PLIERS \?CCL8
	PRINTR	"These are heavy-duty pliers, too large to reach into this narrow crack."
?CCL8:	EQUAL?	PRSI,MAGNET \?CCL10
	CALL	PERFORM,V?ATTRACT,MAGNET,KEY
	RTRUE	
?CCL10:	ZERO?	PRSI /?CCL12
	PRINTR	"Nice try."
?CCL12:	PRINTR	"Either the crevice is too narrow, or your fingers are too large."
?CCL3:	EQUAL?	PRSA,V?PUT \FALSE
	EQUAL?	PRSI,CREVICE \FALSE
	PRINTR	"And you wonder why you're still only an Ensign Seventh Class?"


	.FUNCT	ADMIN-CORRIDOR-F,RARG
	ZERO?	LADDER-FLAG /?CCL3
	EQUAL?	RARG,M-ENTER \?CCL3
	MOVE	LADDER,HERE
	RTRUE	
?CCL3:	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"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. "
	ZERO?	LADDER-FLAG /?CND8
	PRINTI	"A metal ladder spans the rift. "
?CND8:	PRINTR	"A wide doorway, labelled ""Sistumz Moniturz,"" leads west."


	.FUNCT	ADMIN-CORRIDOR-N-F,RARG
	ZERO?	LADDER-FLAG /?CCL3
	EQUAL?	RARG,M-ENTER \?CCL3
	MOVE	LADDER,HERE
	RTRUE	
?CCL3:	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"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"
	ZERO?	LADDER-FLAG /?CND8
	PRINTI	", spanned by a metal ladder,"
?CND8:	PRINTR	" separating this area from the rest of the building."


	.FUNCT	LADDER-EXIT-F
	ZERO?	LADDER-FLAG /?CCL3
	SET	'C-ELAPSED,33
	PRINTI	"You slowly make your way across the swaying ladder. You can see sharp, pointy rocks at the bottom of the rift, far below..."
	CRLF	
	CRLF	
	EQUAL?	HERE,ADMIN-CORRIDOR-N \?CCL6
	RETURN	ADMIN-CORRIDOR
?CCL6:	RETURN	ADMIN-CORRIDOR-N
?CCL3:	PRINTI	"The rift is too wide to jump across."
	CRLF	
	RFALSE	


	.FUNCT	RIFT-F
	EQUAL?	PRSA,V?LEAP \?CCL3
	CALL	JIGS-UP,STR?122
	RSTACK	
?CCL3:	EQUAL?	PRSA,V?PUT \?CCL5
	EQUAL?	RIFT,PRSI \?CCL5
	EQUAL?	PRSO,LASER \?CND8
	CALL	INT,I-WARMTH
	PUT	STACK,0,0
?CND8:	REMOVE	PRSO
	EQUAL?	PRSO,SCRUB-BRUSH \?CCL12
	PRINTR	"You watch with tremendous satisfaction as the brush is lost forever."
?CCL12:	PRINTI	"The "
	PRINTD	PRSO
	PRINTR	" sails gracefully into the rift."
?CCL5:	EQUAL?	PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
	PRINTR	"The rift is at least eight meters wide and more than thirty meters deep. The bottom is covered with sharp and nasty rocks."


	.FUNCT	SYSTEMS-MONITORS-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"This is a large room filled with tables full of strange equipment. "
	CALL	DESCRIBE-MONITORS
	RSTACK	


	.FUNCT	DESCRIBE-MONITORS
	PRINTI	"The far wall is filled with a number of monitors. Of these, the ones labelled "
	ZERO?	DEFENSE-FIXED /?CND1
	PRINTI	"PLANATEREE DEFENS, "
?CND1:	ZERO?	COURSE-CONTROL-FIXED /?CND3
	PRINTI	"PLANATEREE KORS KUNTROOL, "
?CND3:	ZERO?	COMM-FIXED /?CND5
	PRINTI	"KUMUUNIKAASHUNZ, "
?CND5:	PRINTI	"LIIBREREE, REEAKTURZ, and LIIF SUPORT are green, but the one"
	ZERO?	DEFENSE-FIXED /?CCL8
	ZERO?	COURSE-CONTROL-FIXED /?CCL8
	ZERO?	COMM-FIXED \?CND7
?CCL8:	PRINTC	115
?CND7:	PRINTI	" labelled "
	ZERO?	DEFENSE-FIXED \?CND12
	PRINTI	"PLANATEREE DEFENS, "
?CND12:	ZERO?	COURSE-CONTROL-FIXED \?CND14
	PRINTI	"PLANATEREE KORS KUNTROOL, "
?CND14:	ZERO?	COMM-FIXED \?CND16
	PRINTI	"KUMUUNIKAASHUNZ, "
?CND16:	ZERO?	DEFENSE-FIXED /?CCL19
	ZERO?	COURSE-CONTROL-FIXED /?CCL19
	ZERO?	COMM-FIXED \?CND18
?CCL19:	PRINTI	"and "
?CND18:	PRINTI	"PRAJEKT KUNTROOL indicate"
	ZERO?	DEFENSE-FIXED /?CND23
	ZERO?	COURSE-CONTROL-FIXED /?CND23
	ZERO?	COMM-FIXED /?CND23
	PRINTC	115
?CND23:	PRINTR	" a malfunctioning condition."


	.FUNCT	DESK-F
	EQUAL?	PRSA,V?EXAMINE,V?SEARCH \FALSE
	PRINTI	"The desk has a drawer which is currently "
	CALL	DDESC,PRSO
	PRINTR	"."


	.FUNCT	OIL-CAN-F
	EQUAL?	PRSA,V?POUR \?CCL3
	ZERO?	PRSI \?CND4
	SET	'PRSI,GROUND
?CND4:	CALL	PERFORM,V?OIL,PRSI
	RTRUE	
?CCL3:	EQUAL?	PRSA,V?EMPTY \FALSE
	PRINTR	"Pretty much impossible -- you could only do that one drop at a time."


	.FUNCT	CARTON-F
	EQUAL?	PRSA,V?CLOSE \FALSE
	CALL	NO-CLOSE
	RTRUE	


	.FUNCT	CRACKED-BOARD-F
	EQUAL?	PRSA,V?EXAMINE \FALSE
	CALL	EXAMINE-BOARD
	PRINTR	" This one looks as though it's been dropped."


	.FUNCT	GOOD-BEDISTOR-F
	EQUAL?	PRSA,V?TAKE \FALSE
	ZERO?	COURSE-CONTROL-FIXED /FALSE
	CALL	JIGS-UP,STR?137
	RSTACK	


	.FUNCT	REACTOR-ELEVATOR-DOOR-F
	EQUAL?	PRSA,V?CLOSE,V?OPEN \FALSE
	PRINTR	"It won't budge."


	.FUNCT	I-REACTOR-DOOR-CLOSE
	CALL	QUEUE,I-REACTOR-DOOR-CLOSE,-1
	PUT	STACK,0,1
	EQUAL?	HERE,REACTOR-ELEVATOR /FALSE
	FCLEAR	REACTOR-ELEVATOR-DOOR,OPENBIT
	EQUAL?	HERE,REACTOR-CONTROL \?CND4
	CRLF	
	PRINTI	"The elevator door slides shut."
	CRLF	
?CND4:	CALL	INT,I-REACTOR-DOOR-CLOSE
	PUT	STACK,0,0
	RTRUE	


	.FUNCT	FLASK-F
	EQUAL?	PRSA,V?EXAMINE \?CCL3
	PRINTI	"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"
	IN?	CHEMICAL-FLUID,FLASK \?CND4
	PRINTI	", and is filled with a milky white fluid"
?CND4:	PRINTR	"."
?CCL3:	EQUAL?	PRSA,V?CLOSE \?CCL7
	CALL	NO-CLOSE
	RTRUE	
?CCL7:	EQUAL?	PRSA,V?EMPTY \FALSE
	IN?	CHEMICAL-FLUID,FLASK \FALSE
	EQUAL?	PRSI,FUNNEL-HOLE \FALSE
	CALL	PERFORM,V?POUR,CHEMICAL-FLUID,FUNNEL-HOLE
	RTRUE	


	.FUNCT	MAGNET-F
	EQUAL?	PRSA,V?TAKE \?CCL3
	CALL	QUEUE,I-MAGNET,-1
	PUT	STACK,0,1
	RFALSE	
?CCL3:	EQUAL?	PRSA,V?PUT-ON,V?ATTRACT \FALSE
	EQUAL?	PRSO,MAGNET \?CCL8
	IN?	MAGNET,ADVENTURER /?CCL8
	CALL	NOT-HOLDING
	RSTACK	
?CCL8:	FSET?	KEY,TOUCHBIT \?CCL12
	EQUAL?	PRSI,KEY \?CCL12
	MOVE	KEY,ADVENTURER
	PRINTR	"The key jumps against the ends of the magnet and sticks there. Proud of your feat, you remove the key from the magnet."
?CCL12:	FSET?	KEY,TOUCHBIT /FALSE
	EQUAL?	PRSI,KEY,CREVICE \FALSE
	MOVE	KEY,ADVENTURER
	FCLEAR	KEY,INVISIBLE
	FCLEAR	KEY,TRYTAKEBIT
	FSET	KEY,TOUCHBIT
	PRINTR	"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."


	.FUNCT	I-MAGNET
	IN?	MAGNET,ADVENTURER \?CCL3
	CALL	HELD?,KITCHEN-CARD
	ZERO?	STACK /?CCL6
	FSET	KITCHEN-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL6:	CALL	HELD?,SHUTTLE-CARD
	ZERO?	STACK /?CCL8
	FSET	SHUTTLE-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL8:	CALL	HELD?,TELEPORTATION-CARD
	ZERO?	STACK /?CCL10
	FSET	TELEPORTATION-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL10:	CALL	HELD?,UPPER-ELEVATOR-CARD
	ZERO?	STACK /?CCL12
	FSET	UPPER-ELEVATOR-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL12:	CALL	HELD?,LOWER-ELEVATOR-CARD
	ZERO?	STACK /?CCL14
	FSET	LOWER-ELEVATOR-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL14:	CALL	HELD?,MINI-CARD
	ZERO?	STACK /?CCL16
	FSET	MINI-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL16:	CALL	HELD?,ID-CARD
	ZERO?	STACK /FALSE
	FSET	ID-CARD,SCRAMBLEDBIT
	RFALSE	
?CCL3:	CALL	INT,I-MAGNET
	PUT	STACK,0,0
	RFALSE	


	.FUNCT	MACHINE-SHOP-F,RARG
	EQUAL?	RARG,M-LOOK \?CCL3
	PRINTI	"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. "
	EQUAL?	SPOUT-PLACED,GROUND /?CND4
	PRINTI	"Sitting under the spout is "
	FSET?	SPOUT-PLACED,VOWELBIT \?CCL8
	PRINTI	"an "
	JUMP	?CND6
?CCL8:	PRINTI	"a "
?CND6:	PRINTD	SPOUT-PLACED
	PRINTI	". "
?CND4:	PRINTR	"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."""
?CCL3:	EQUAL?	RARG,M-END \FALSE
	EQUAL?	SPOUT-PLACED,GROUND \FALSE
	IN?	FLOYD,HERE \FALSE
	FSET?	FLOYD,RLANDBIT \FALSE
	RANDOM	100
	LESS?	15,STACK /FALSE
	SET	'FLOYD-SPOKE,TRUE-VALUE
	PRINTR	"Floyd pushes one of the dispenser buttons. Fluid pours from the spout and splashes across the floor. Floyd jumps up and down, giggling."


	.FUNCT	CHEMICAL-DISPENSER-F
	EQUAL?	PRSA,V?PUT-UNDER \FALSE
	EQUAL?	PRSI,CHEMICAL-DISPENSER \FALSE
	EQUAL?	SPOUT-PLACED,GROUND \?CCL8
	MOVE	PRSO,HERE
	PRINTI	"The "
	PRINTD	PRSO
	PRINTI	" is now sitting under the spout."
	CRLF	
	SET	'SPOUT-PLACED,PRSO
	RETURN	SPOUT-PLACED
?CCL8:	PRINTI	"The "
	PRINTD	SPOUT-PLACED
	PRINTR	" is already resting under the spout."


	.FUNCT	CHEM-BUTTON-F
	EQUAL?	PRSA,V?PUSH \FALSE
	FSET?	CHEMICAL-DISPENSER,MUNGEDBIT \?CCL6
	PRINTR	"The machine coughs a few times, but nothing else happens."
?CCL6:	EQUAL?	SPOUT-PLACED,FLASK \?CCL8
	IN?	CHEMICAL-FLUID,FLASK \?CCL11
	PRINTR	"Another dose of the chemical fluid pours out of the spout, splashes over the already-full flask, spills onto the floor, and dries up."
?CCL11:	MOVE	CHEMICAL-FLUID,FLASK
	PRINTI	"The flask fills with some "
	GETP	PRSO,P?C-MOVE >CHEMICAL-FLAG
	GETP	PRSO,P?C-MOVE
	GET	COLOR-LTBL,STACK
	PRINT	STACK
	PRINTR	" chemical fluid. The fluid gradually turns milky white."
?CCL8:	EQUAL?	SPOUT-PLACED,CANTEEN \?CCL13
	FSET?	CANTEEN,OPENBIT \?CCL13
	PRINTR	"Chemical fluid gushes from the spout. Unfortunately, the mouth of the canteen is very narrow, and the fluid just splashes over it."
?CCL13:	PRINTI	"Some sort of chemical fluid pours out of the spout, spills all over the "
	PRINTD	SPOUT-PLACED
	PRINTI	", and dries up."
	CRLF	
	EQUAL?	PRSO,ROUND-WHITE-BUTTON,SQUARE-WHITE-BUTTON \TRUE
	FSET?	SPOUT-PLACED,ACIDBIT /?CCL17
	FSET?	SPOUT-PLACED,MUNGBIT \TRUE
?CCL17:	SET	'CHEMICAL-FLAG,9
	CALL	PERFORM,V?POUR,CHEMICAL-FLUID,SPOUT-PLACED
	RTRUE	


	.FUNCT	FLOYD-F,X,N
	EQUAL?	FLOYD,WINNER \?CCL3
	SET	'FLOYD-SPOKE,TRUE-VALUE
	EQUAL?	PRSA,V?GIVE \?CCL6
	EQUAL?	PRSI,ME \?CCL6
	SET	'WINNER,ADVENTURER
	CALL	PERFORM,V?ASK-FOR,FLOYD,PRSO
	RTRUE	
?CCL6:	EQUAL?	PRSA,V?SGIVE \?CCL10
	EQUAL?	PRSO,ME \?CCL10
	SET	'WINNER,ADVENTURER
	CALL	PERFORM,V?ASK-FOR,FLOYD,PRSI
	RTRUE	
?CCL10:	EQUAL?	PRSA,V?WALK \?CCL14
	EQUAL?	HERE,REPAIR-ROOM \?CCL17
	EQUAL?	PRSO,P?NORTH,P?IN \?CCL17
	CALL	FLOYD-THROUGH-HOLE
	JUMP	?CND15
?CCL17:	EQUAL?	HERE,BIO-LOCK-EAST \?CCL21
	EQUAL?	PRSO,P?EAST \?CCL21
	CALL	FLOYD-INTO-LAB
	JUMP	?CND15
?CCL21:	EQUAL?	HERE,RADIATION-LOCK-EAST \?CCL25
	EQUAL?	PRSO,P?EAST \?CCL25
	PRINTI	"""After you."""
	CRLF	
	JUMP	?CND15
?CCL25:	PRINTI	"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?"""
	CRLF	
?CND15:	CALL	FLUSH
	ZERO?	STACK /TRUE
	RETURN	2
?CCL14:	EQUAL?	PRSA,V?THROUGH \?CCL33
	CALL	FLOYDS-FAMOUS-DOOR-ROUTINE
	CALL	FLUSH
	ZERO?	STACK /TRUE
	RETURN	2
?CCL33:	EQUAL?	PRSA,V?TAKE \?CCL39
	EQUAL?	PRSO,GOOD-BOARD \?CCL39
	IN?	GOOD-BOARD,ROBOT-HOLE /?CCL44
	PRINTI	"Floyd looks half-bored and half-annoyed. "
	PRINTR	"Floyd already did that. How about some leap-frogger?"""
?CCL44:	ZERO?	BOARD-REPORTED /?CCL46
	MOVE	GOOD-BOARD,ADVENTURER
	FCLEAR	GOOD-BOARD,NDESCBIT
	FSET	GOOD-BOARD,TAKEBIT
	SET	'C-ELAPSED,22
	PRINTR	"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."
?CCL46:	PRINTR	"""Huh?"" asks Floyd. ""What fromitz board?"""
?CCL39:	EQUAL?	PRSA,V?FOLLOW \?CCL48
	EQUAL?	PRSO,ME \?CCL48
	PRINTR	"""Okay!"""
?CCL48:	EQUAL?	PRSA,V?HELLO \?CCL52
	SET	'WINNER,ADVENTURER
	CALL	PERFORM,V?HELLO,FLOYD
	RTRUE	
?CCL52:	EQUAL?	PRSA,V?DROP \?CCL54
	IN?	PRSO,FLOYD \?CCL57
	RANDOM	100
	LESS?	50,STACK /?CCL60
	MOVE	PRSO,HERE
	PRINTI	"Floyd shrugs and drops the "
	PRINTD	PRSO
	PRINTR	"."
?CCL60:	PRINTI	"Floyd clutches the "
	PRINTD	PRSO
	PRINTR	" even more tightly. ""Floyd won't,"" he says defiantly."
?CCL57:	CALL	FLOYD-NOT-HAVE
	RSTACK	
?CCL54:	PRINTI	"Floyd whines, ""Enough talking! Let's play Hider-and-Seeker."""
	CRLF	
	RETURN	2
?CCL3:	EQUAL?	PRSA,V?CLOSE \?CCL64
	PRINTR	"Huh?"
?CCL64:	EQUAL?	PRSA,V?REACH,V?LOOK-INSIDE \?CCL66
	CALL	PERFORM,V?OPEN,FLOYD
	RTRUE	
?CCL66:	FSET?	FLOYD,RLANDBIT \?CCL68
	SET	'FLOYD-SPOKE,TRUE-VALUE
	EQUAL?	PRSA,V?LAMP-ON \?CCL71
	PRINTR	"He's already been activated."
?CCL71:	EQUAL?	PRSA,V?LAMP-OFF \?CCL73
	FCLEAR	FLOYD,RLANDBIT
	FCLEAR	FLOYD,ACTORBIT
	CALL	INT,I-FLOYD
	PUT	STACK,0,0
	PRINTI	"Floyd, shocked by this betrayal from his new-found friend, whimpers and keels over"
	FIRST?	FLOYD \?CCL76
	PRINTI	", dropping what he was carrying."
	CRLF	
	JUMP	?CND74
?CCL76:	PRINTC	46
	CRLF	
?CND74:	FIRST?	FLOYD >X /?PRG78
?PRG78:	ZERO?	X /TRUE
	NEXT?	X >N /?BOGUS83
?BOGUS83:	MOVE	X,HERE
	SET	'X,N
	JUMP	?PRG78
?CCL73:	EQUAL?	PRSA,V?EXAMINE \?CCL85
	PRINTR	"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."
?CCL85:	EQUAL?	PRSA,V?KISS \?CCL87
	PRINTR	"You receive a painful electric shock."
?CCL87:	EQUAL?	PRSA,V?SCOLD \?CCL89
	PRINTR	"Floyd looks defensive. ""What did Floyd do wrong?"""
?CCL89:	EQUAL?	PRSA,V?PLAY-WITH \?CCL91
	SET	'C-ELAPSED,30
	CALL	QUEUE,I-FLOYD,1
	PUT	STACK,0,1
	PRINTR	"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!"""
?CCL91:	EQUAL?	PRSA,V?LISTEN \?CCL93
	PRINTR	"Floyd is babbling about this and that."
?CCL93:	EQUAL?	PRSA,V?TAKE \?CCL95
	EQUAL?	PRSO,FLOYD \?CCL95
	PRINTR	"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."
?CCL95:	EQUAL?	PRSA,V?MUNG,V?ATTACK \?CCL99
	PRINTR	"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!"""
?CCL99:	EQUAL?	PRSA,V?SHAKE,V?KICK \?CCL101
	PRINTR	"""Why you do that?"" Floyd whines. ""I think a wire now shaken loose."" He goes off into a corner and sulks."
?CCL101:	EQUAL?	PRSA,V?TALK,V?HELLO \?CCL103
	PRINTR	"""Hi!"" Floyd grins and bounces up and down."
?CCL103:	EQUAL?	PRSA,V?OPEN,V?SCRUB,V?SEARCH \?CCL105
	PRINTR	"Floyd giggles and pushes you away. ""You're tickling Floyd!"" He clutches at his side panels, laughing hysterically. Oil drops stream from his eyes."
?CCL105:	EQUAL?	PRSA,V?PUT,V?GIVE \?CCL107
	EQUAL?	FLOYD,PRSI \?CCL107
	EQUAL?	PRSO,LAZARUS-PART \?CCL112
	REMOVE	FLOYD
	SET	'FLOYD-FOLLOW,FALSE-VALUE
	MOVE	LAZARUS-PART,HERE
	CALL	QUEUE,I-FLOYD,40
	PUT	STACK,0,1
	PRINTR	"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."
?CCL112:	EQUAL?	PRSO,RED-GOO,GREEN-GOO,BROWN-GOO \?CCL114
	PRINTR	"Floyd looks at the goo. ""Yech! Got any Number Seven Heavy Grease?"""
?CCL114:	FIRST?	FLOYD /?CTR115
	RANDOM	100
	LESS?	25,STACK /?CCL116
?CTR115:	MOVE	PRSO,HERE
	PRINTI	"Floyd examines the "
	PRINTD	PRSO
	PRINTI	", shrugs, and drops "
	EQUAL?	PRSO,PLIERS \?CCL121
	PRINTR	"them."
?CCL121:	PRINTR	"it."
?CCL116:	MOVE	PRSO,FLOYD
	PRINTR	"""Neat!"" exclaims Floyd. He thanks you profusely."
?CCL107:	EQUAL?	PRSA,V?SHOW \?CCL123
	EQUAL?	FLOYD,PRSI \?CCL123
	EQUAL?	PRSO,PRINT-OUT \?CCL128
	ZERO?	COMPUTER-FLAG \?CCL128
	CALL	COMPUTER-ACTION
	RSTACK	
?CCL128:	EQUAL?	PRSO,ROBOT-HOLE \?CCL132
	CALL	FLOYD-THROUGH-HOLE
	RSTACK	
?CCL132:	EQUAL?	HERE,REC-AREA \?CCL134
	EQUAL?	PRSO,PSEUDO-OBJECT \?CCL134
	PRINTR	"""Too intellectual for Floyd. Any paddleball sets around?"""
?CCL134:	EQUAL?	PRSO,ID-CARD,SHUTTLE-CARD /?CTR137
	EQUAL?	PRSO,KITCHEN-CARD,UPPER-ELEVATOR-CARD \?CCL138
?CTR137:	PRINTR	"Floyd scratches his head. ""Aren't those things usually blue?"""
?CCL138:	EQUAL?	PRSO,LOWER-ELEVATOR-CARD \?CCL142
	ZERO?	CARD-REVEALED \?CCL142
	SET	'CARD-REVEALED,TRUE-VALUE
	PRINTR	"""I've got one just like that!"" says Floyd. He looks through several of his compartments, then glances at you suspiciously."
?CCL142:	PRINTI	"Floyd looks over the "
	PRINTD	PRSO
	PRINTR	". ""Can you play any games with it?"" he asks."
?CCL123:	EQUAL?	PRSA,V?RUB \?CCL146
	PRINTR	"Floyd gives a contented sigh."
?CCL146:	EQUAL?	PRSA,V?SMELL \?CCL148
	PRINTR	"Floyd smells faintly of ozone and light machine oil."
?CCL148:	EQUAL?	PRSA,V?ASK-FOR \FALSE
	IN?	PRSI,FLOYD \?CCL153
	MOVE	PRSI,ADVENTURER
	PRINTI	"""Okay,"" says Floyd, handing you the "
	PRINTD	PRSI
	PRINTR	", ""but only because you're Floyd's best friend."""
?CCL153:	CALL	FLOYD-NOT-HAVE
	RSTACK	
?CCL68:	EQUAL?	PRSA,V?LAMP-ON \?CCL156
	ZERO?	FLOYD-INTRODUCED /?CCL159
	CALL	QUEUE,I-FLOYD,-1
	PUT	STACK,0,1
	RTRUE	
?CCL159:	CALL	QUEUE,I-FLOYD,25
	PUT	STACK,0,1
	PRINTI	"Nothing happens."
	CRLF	
	ZERO?	FLOYD-SCORE-FLAG \TRUE
	SET	'FLOYD-SCORE-FLAG,TRUE-VALUE
	ADD	SCORE,2 >SCORE
	RTRUE	
?CCL156:	EQUAL?	PRSA,V?LAMP-OFF \?CCL163
	PRINTR	"The robot doesn't seem to be on."
?CCL163:	EQUAL?	PRSA,V?EXAMINE \?CCL165
	PRINTR	"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."
?CCL165:	EQUAL?	PRSA,V?OPEN,V?SEARCH \FALSE
	ZERO?	CARD-REVEALED \?CCL170
	ZERO?	CARD-STOLEN \?CCL170
	FCLEAR	LOWER-ELEVATOR-CARD,INVISIBLE
	MOVE	LOWER-ELEVATOR-CARD,ADVENTURER
	CALL	SCORE-OBJ,LOWER-ELEVATOR-CARD
	SET	'CARD-STOLEN,TRUE-VALUE
	PRINTR	"In one of the robot's compartments you find and take a magnetic-striped card embossed ""Loowur Elavaatur Akses Kard."""
?CCL170:	PRINTR	"Your search discovers nothing in the robot's compartments except a single crayon which you leave where you found it."


	.FUNCT	FLOYDS-FAMOUS-DOOR-ROUTINE
	EQUAL?	PRSO,ROBOT-HOLE \?CCL3
	CALL	FLOYD-THROUGH-HOLE
	RSTACK	
?CCL3:	EQUAL?	PRSO,BIO-DOOR-EAST \?CCL5
	CALL	FLOYD-INTO-LAB
	RSTACK	
?CCL5:	FSET?	PRSO,DOORBIT \?CCL7
	PRINTR	"""You go first,"" says Floyd."
?CCL7:	PRINTR	"Floyd scratches his head and looks at you."


	.FUNCT	FLUSH
	ZERO?	P-CONT /FALSE
	SET	'P-CONT,FALSE-VALUE
	CRLF	
	PRINTR	"Floyd scratches his head and looks at you. ""What else were you saying to Floyd? I can't remember."""


	.FUNCT	FLOYD-INTO-LAB
	ZERO?	FLOYD-WAITING /?CCL3
	PRINTR	"""As soon as you open the door, dummy."""
?CCL3:	PRINTR	"""Are you kidding? Floyd not going in THERE without a good reason."""


	.FUNCT	FLOYD-NOT-HAVE
	PRINTR	"""Floyd does not one of those have!"""


	.FUNCT	FLOYD-COMES-ALIVE,FOO
	IN?	FLOYD,HERE \?CND1
	ZERO?	FLOYD-REACTIVATED /?CCL5
	SET	'FLOYD-SPOKE,TRUE-VALUE
	PRINTI	"Floyd jumps to his feet, hopping mad. ""Why you turn Floyd off?"" he asks accusingly."
	CRLF	
	JUMP	?CND1
?CCL5:	SET	'FLOYD-INTRODUCED,TRUE-VALUE
	SET	'FLOYD-SPOKE,TRUE-VALUE
	PRINTI	"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? "
	FIRST?	ADVENTURER >FOO \?CND6
	PRINTI	"That's a nice "
	PRINTD	FOO
	PRINTI	" you are having there. "
?CND6:	PRINTI	"Let's play Hider-and-Seeker you with me."""
	CRLF	
?CND1:	FSET	FLOYD,RLANDBIT
	FSET	FLOYD,ACTORBIT
	FSET	FLOYD,TOUCHBIT
	SET	'FLOYD-REACTIVATED,TRUE-VALUE
	RETURN	FLOYD-REACTIVATED


	.FUNCT	I-FLOYD
	CALL	QUEUE,I-FLOYD,-1
	PUT	STACK,0,1
	FSET?	FLOYD,RLANDBIT /?CCL3
	FSET	FLOYD,ACTORBIT
	CRLF	
	CALL	FLOYD-COMES-ALIVE
	JUMP	?CND1
?CCL3:	IN?	FLOYD,HERE \?CCL5
	ZERO?	FLOYD-INTRODUCED \?CCL8
	SET	'FLOYD-INTRODUCED,TRUE-VALUE
	CRLF	
	PRINTI	"The robot, now apparently active, notices you enter. ""Hi,"" he says. ""I'm Floyd!"""
	CRLF	
	JUMP	?CND1
?CCL8:	ZERO?	FLOYD-FOLLOW /?CCL10
	FSET?	HERE,FLOYDBIT \?CCL10
	RANDOM	100
	LESS?	6,STACK /?CCL10
	REMOVE	FLOYD
	SET	'FLOYD-FOLLOW,FALSE-VALUE
	CRLF	
	PRINTI	"Floyd says ""Floyd going exploring. See you later."" He glides out of the room."
	CRLF	
	JUMP	?CND1
?CCL10:	SET	'FLOYD-FOLLOW,TRUE-VALUE
	RANDOM	100
	LESS?	40,STACK /?CND1
	ZERO?	FLOYD-SPOKE \?CND1
	PRINTI	"Floyd "
	CALL	PICK-ONE,FLOYDISMS
	PRINT	STACK
	PRINTR	"."
?CCL5:	ZERO?	FLOYD-FOLLOW /?CCL20
	RANDOM	100
	LESS?	80,STACK /?CCL20
	IN?	LAZARUS-PART,HERE \?CND23
	SET	'FLOYD-FOLLOW,FALSE-VALUE
	CRLF	
	PRINTR	"Floyd starts to follow you but notices the Lazarus breast plate. He sniffs and leaves the room."
?CND23:	MOVE	FLOYD,HERE
	PRINTI	"Floyd follows you."
	CRLF	
	CALL	KLUDGE
	JUMP	?CND1
?CCL20:	SET	'FLOYD-FOLLOW,FALSE-VALUE
	EQUAL?	HERE,BOOTH-1,BOOTH-2,BOOTH-3 \?CCL27
	MOVE	FLOYD,HERE
	ZERO?	FLOYD-INTRODUCED \?CND28
	CRLF	
	CALL	CALL-ME-FLOYD
	RTRUE	
?CND28:	CRLF	
	PRINTI	"Floyd scampers into the booth. ""Oooo, this is a tiny room,"" he remarks."
	CRLF	
	JUMP	?CND1
?CCL27:	EQUAL?	HERE,BIO-LOCK-EAST,BIO-LOCK-WEST \?PRD33
	ZERO?	FLOYD-GAVE-UP /?CTR30
?PRD33:	EQUAL?	HERE,RADIATION-LOCK-EAST,RADIATION-LOCK-WEST \?CCL31
?CTR30:	MOVE	FLOYD,HERE
	ZERO?	FLOYD-INTRODUCED \?CND36
	CRLF	
	CALL	CALL-ME-FLOYD
	RTRUE	
?CND36:	CRLF	
	PRINTI	"Floyd glides after you. ""Is this...is this a squash court?"" he asks."
	CRLF	
	JUMP	?CND1
?CCL31:	EQUAL?	HERE,ALFIE-CONTROL-EAST,ALFIE-CONTROL-WEST /?CTR38
	EQUAL?	HERE,BETTY-CONTROL-EAST,BETTY-CONTROL-WEST /?CTR38
	EQUAL?	HERE,UPPER-ELEVATOR,LOWER-ELEVATOR,REACTOR-ELEVATOR /?CTR38
	EQUAL?	HERE,MESS-HALL \?CCL39
	IN?	FLOYD,KITCHEN \?CCL39
?CTR38:	MOVE	FLOYD,HERE
	ZERO?	FLOYD-INTRODUCED \?CND46
	CRLF	
	CALL	CALL-ME-FLOYD
	RTRUE	
?CND46:	CRLF	
	PRINTI	"Floyd bounces into the "
	EQUAL?	HERE,UPPER-ELEVATOR,LOWER-ELEVATOR,REACTOR-ELEVATOR \?CCL50
	PRINTI	"elevator"
	JUMP	?CND48
?CCL50:	EQUAL?	HERE,MESS-HALL \?CCL52
	PRINTI	"room"
	JUMP	?CND48
?CCL52:	PRINTI	"cabin"
?CND48:	PRINTI	". ""Hey, wait for Floyd!"" he yells, smiling broadly."
	CRLF	
	JUMP	?CND1
?CCL39:	EQUAL?	HERE,MINI-BOOTH \?CCL54
	MOVE	FLOYD,HERE
	ZERO?	FLOYD-INTRODUCED \?CND55
	CRLF	
	CALL	CALL-ME-FLOYD
	RTRUE	
?CND55:	CRLF	
	PRINTI	"""Hi,"" whispers Floyd, tiptoeing in. ""Are we going to teleport into the computer like Achilles always used to do?"""
	CRLF	
	JUMP	?CND1
?CCL54:	RANDOM	100
	LESS?	30,STACK /?CND1
	EQUAL?	HERE,INFIRMARY \?CND58
	ZERO?	LAZARUS-FLAG \FALSE
?CND58:	MOVE	FLOYD,HERE
	ZERO?	FLOYD-INTRODUCED /?CCL64
	RANDOM	100
	LESS?	15,STACK /?CCL67
	IN?	ADVENTURER,BED /?CCL67
	CRLF	
	PRINTI	"Floyd rushes into the room and barrels into you. ""Oops, sorry,"" he says. ""Floyd not looking at where he was going to."""
	CRLF	
	JUMP	?CND65
?CCL67:	CRLF	
	PRINTI	"Floyd bounds into the room. ""Floyd here now!"" he cries."
	CRLF	
?CND65:	CALL	KLUDGE
	JUMP	?CND1
?CCL64:	CRLF	
	CALL	CALL-ME-FLOYD
?CND1:	SET	'FLOYD-SPOKE,FALSE-VALUE
	RETURN	FLOYD-SPOKE


	.FUNCT	CALL-ME-FLOYD
	SET	'FLOYD-INTRODUCED,TRUE-VALUE
	PRINTR	"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?"""


	.FUNCT	KLUDGE
	EQUAL?	HERE,REPAIR-ROOM \?CCL3
	ZERO?	ACHILLES-FLAG \?CCL3
	SET	'ACHILLES-FLAG,TRUE-VALUE
	SET	'FLOYD-SPOKE,TRUE-VALUE
	PRINTR	"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."""
?CCL3:	EQUAL?	HERE,COMPUTER-ROOM \FALSE
	ZERO?	COMPUTER-FLAG \FALSE
	CALL	COMPUTER-ACTION
	RSTACK	


	.FUNCT	DEAD-FLOYD-F
	EQUAL?	PRSA,V?EXAMINE \?CCL3
	PRINTR	"You turn to look at Floyd, but a tremendous sense of loss overcomes you, and you turn away."
?CCL3:	EQUAL?	PRSA,V?LAMP-ON \?CCL5
	PRINTR	"As you touch Floyd's on-off switch, it falls off in your hands."
?CCL5:	EQUAL?	PRSA,V?LAMP-OFF \FALSE
	PRINTR	"I'm afraid that Floyd has already been turned off, permanently, and gone to that great robot shop in the sky."


	.FUNCT	ELEVATOR-LOBBY-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"This is a wide, brightly lit lobby. A blue metal door to the north is "
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6
	EQUAL?	UPPER-ELEVATOR-UP,FALSE-VALUE \?CCL6
	PRINTI	"open"
	JUMP	?CND4
?CCL6:	PRINTI	"closed"
?CND4:	PRINTI	" and a larger red metal door to the south is "
	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL11
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL11
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CND14
	EQUAL?	UPPER-ELEVATOR-UP,FALSE-VALUE \?CND14
	PRINTI	"also "
?CND14:	PRINTI	"open"
	JUMP	?CND9
?CCL11:	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CCL19
	EQUAL?	UPPER-ELEVATOR-UP,TRUE-VALUE \?CND18
?CCL19:	PRINTI	"also "
?CND18:	PRINTI	"closed"
?CND9:	PRINTR	". 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."


	.FUNCT	UPPER-ELEVATOR-F,RARG
	EQUAL?	RARG,M-LOOK \?CCL3
	PRINTI	"You have entered a tiny room with a sliding door to the south which is "
	CALL	DDESC,UPPER-ELEVATOR-DOOR
	PRINTR	". A control panel contains an Up button, a Down button, and a narrow slot."
?CCL3:	EQUAL?	RARG,M-END \FALSE
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT /FALSE
	RANDOM	100
	LESS?	10,STACK /FALSE
	PRINTR	"Some innocuous Hawaiian music oozes from the elevator's intercom."


	.FUNCT	LOWER-ELEVATOR-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"This is a medium-sized room with a door to the north which is "
	CALL	DDESC,LOWER-ELEVATOR-DOOR
	PRINTR	". A control panel contains an Up button, a Down button, and a narrow slot."


	.FUNCT	ELEVATOR-ENTER-F
	EQUAL?	PRSO,P?NORTH \?CCL3
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6
	EQUAL?	UPPER-ELEVATOR-UP,FALSE-VALUE \?CCL6
	RETURN	UPPER-ELEVATOR
?CCL6:	CALL	DOOR-CLOSED
	RFALSE	
?CCL3:	EQUAL?	PRSO,P?SOUTH \FALSE
	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL13
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL13
	RETURN	LOWER-ELEVATOR
?CCL13:	CALL	DOOR-CLOSED
	RFALSE	


	.FUNCT	ELEVATOR-EXIT-F
	EQUAL?	HERE,UPPER-ELEVATOR \?CCL3
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6
	EQUAL?	UPPER-ELEVATOR-UP,TRUE-VALUE \?CCL9
	RETURN	TOWER-CORE
?CCL9:	RETURN	ELEVATOR-LOBBY
?CCL6:	CALL	DOOR-CLOSED
	RFALSE	
?CCL3:	EQUAL?	HERE,LOWER-ELEVATOR \FALSE
	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL14
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL17
	RETURN	ELEVATOR-LOBBY
?CCL17:	RETURN	WAITING-AREA
?CCL14:	CALL	DOOR-CLOSED
	RFALSE	


	.FUNCT	UPPER-ELEVATOR-DOOR-F
	EQUAL?	PRSA,V?OPEN \?CCL3
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CCL6
	CALL	ALREADY-OPEN
	RSTACK	
?CCL6:	PRINTR	"It won't budge."
?CCL3:	EQUAL?	PRSA,V?CLOSE \FALSE
	FSET?	UPPER-ELEVATOR-DOOR,OPENBIT \?CCL11
	PRINTR	"You can't close it yourself."
?CCL11:	CALL	IS-CLOSED
	RSTACK	


	.FUNCT	LOWER-ELEVATOR-DOOR-F
	EQUAL?	PRSA,V?OPEN \?CCL3
	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL6
	EQUAL?	HERE,ELEVATOR-LOBBY \?CCL6
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL6
	CALL	ALREADY-OPEN
	RSTACK	
?CCL6:	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL11
	EQUAL?	HERE,WAITING-AREA \?CCL11
	EQUAL?	LOWER-ELEVATOR-UP,FALSE-VALUE \?CCL11
	CALL	ALREADY-OPEN
	RSTACK	
?CCL11:	PRINTR	"It won't budge."
?CCL3:	EQUAL?	PRSA,V?CLOSE \FALSE
	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL19
	EQUAL?	HERE,ELEVATOR-LOBBY \?CCL19
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL19
	PRINTR	"You can't close it yourself."
?CCL19:	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL24
	EQUAL?	HERE,WAITING-AREA \?CCL24
	EQUAL?	LOWER-ELEVATOR-UP,FALSE-VALUE \?CCL24
	PRINTR	"You can't close it yourself."
?CCL24:	CALL	IS-CLOSED
	RSTACK	


	.FUNCT	DOOR-CLOSED
	PRINTR	"The door is closed."


	.FUNCT	BLUE-ELEVATOR-BUTTON-F
	EQUAL?	PRSA,V?PUSH \FALSE
	EQUAL?	UPPER-ELEVATOR-UP,TRUE-VALUE \FALSE
	CALL	INT,I-UPPER-ELEVATOR-ARRIVE
	GET	STACK,C-ENABLED?
	EQUAL?	STACK,1 \?CCL8
	PRINTR	"Patience, patience..."
?CCL8:	RANDOM	20
	ADD	STACK,40
	CALL	QUEUE,I-UPPER-ELEVATOR-ARRIVE,STACK
	PUT	STACK,0,1
	PRINTR	"You hear a faint whirring noise from behind the blue door."


	.FUNCT	RED-ELEVATOR-BUTTON-F
	EQUAL?	PRSA,V?PUSH \FALSE
	EQUAL?	LOWER-ELEVATOR-UP,FALSE-VALUE \FALSE
	CALL	INT,I-LOWER-ELEVATOR-ARRIVE
	GET	STACK,C-ENABLED?
	EQUAL?	STACK,1 \?CCL8
	PRINTR	"Patience, patience..."
?CCL8:	RANDOM	40
	ADD	STACK,80
	CALL	QUEUE,I-LOWER-ELEVATOR-ARRIVE,STACK
	PUT	STACK,0,1
	PRINTR	"The red door begins vibrating a bit."


	.FUNCT	I-UPPER-ELEVATOR-ARRIVE
	FSET	UPPER-ELEVATOR-DOOR,OPENBIT
	SET	'UPPER-ELEVATOR-UP,FALSE-VALUE
	CALL	INT,I-UPPER-ELEVATOR-ARRIVE
	PUT	STACK,0,0
	EQUAL?	HERE,ELEVATOR-LOBBY \FALSE
	CRLF	
	PRINTR	"The door at the north end of the room slides open."


	.FUNCT	I-LOWER-ELEVATOR-ARRIVE
	FSET	LOWER-ELEVATOR-DOOR,OPENBIT
	SET	'LOWER-ELEVATOR-UP,TRUE-VALUE
	CALL	INT,I-LOWER-ELEVATOR-ARRIVE
	PUT	STACK,0,0
	EQUAL?	HERE,ELEVATOR-LOBBY \FALSE
	CRLF	
	PRINTR	"The door at the south end of the room slides open."


	.FUNCT	ELEVATOR-BUTTON-F
	EQUAL?	PRSA,V?PUSH-UP \?CCL3
	EQUAL?	HERE,LOWER-ELEVATOR \?CCL6
	EQUAL?	LOWER-ELEVATOR-UP,FALSE-VALUE \?CCL6
	EQUAL?	LOWER-ELEVATOR-ON,TRUE-VALUE \?CCL6
	EQUAL?	ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL6
	PRINT	ELEVATOR-STARTS
	CRLF	
	FCLEAR	LOWER-ELEVATOR-DOOR,OPENBIT
	SET	'ELEVATOR-IN-TRANSIT,TRUE-VALUE
	CALL	QUEUE,I-LOWER-ELEVATOR-TRIP,100
	PUT	STACK,0,1
	RTRUE	
?CCL6:	EQUAL?	HERE,UPPER-ELEVATOR \?CCL12
	EQUAL?	UPPER-ELEVATOR-UP,FALSE-VALUE \?CCL12
	EQUAL?	UPPER-ELEVATOR-ON,TRUE-VALUE \?CCL12
	EQUAL?	ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL12
	PRINT	ELEVATOR-STARTS
	CRLF	
	FCLEAR	UPPER-ELEVATOR-DOOR,OPENBIT
	SET	'ELEVATOR-IN-TRANSIT,TRUE-VALUE
	CALL	QUEUE,I-UPPER-ELEVATOR-TRIP,50
	PUT	STACK,0,1
	RTRUE	
?CCL12:	PRINTR	"Nothing happens."
?CCL3:	EQUAL?	PRSA,V?PUSH-DOWN \?CCL18
	EQUAL?	HERE,LOWER-ELEVATOR \?CCL21
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL21
	EQUAL?	LOWER-ELEVATOR-ON,TRUE-VALUE \?CCL21
	EQUAL?	ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL21
	PRINT	ELEVATOR-STARTS
	CRLF	
	FCLEAR	LOWER-ELEVATOR-DOOR,OPENBIT
	SET	'ELEVATOR-IN-TRANSIT,TRUE-VALUE
	CALL	QUEUE,I-LOWER-ELEVATOR-TRIP,100
	PUT	STACK,0,1
	RTRUE	
?CCL21:	EQUAL?	HERE,UPPER-ELEVATOR \?CCL27
	EQUAL?	UPPER-ELEVATOR-UP,TRUE-VALUE \?CCL27
	EQUAL?	UPPER-ELEVATOR-ON,TRUE-VALUE \?CCL27
	EQUAL?	ELEVATOR-IN-TRANSIT,FALSE-VALUE \?CCL27
	PRINT	ELEVATOR-STARTS
	CRLF	
	FCLEAR	UPPER-ELEVATOR-DOOR,OPENBIT
	SET	'ELEVATOR-IN-TRANSIT,TRUE-VALUE
	CALL	QUEUE,I-UPPER-ELEVATOR-TRIP,50
	PUT	STACK,0,1
	RTRUE	
?CCL27:	PRINTR	"Nothing happens."
?CCL18:	EQUAL?	PRSA,V?PUSH \FALSE
	PRINTR	"You must specify whether you want to push the Up button or the Down button."


	.FUNCT	I-TURNOFF-UPPER-ELEVATOR
	ZERO?	ELEVATOR-IN-TRANSIT /?CCL3
	CALL	QUEUE,I-TURNOFF-UPPER-ELEVATOR,120
	PUT	STACK,0,1
	RFALSE	
?CCL3:	SET	'UPPER-ELEVATOR-ON,FALSE-VALUE
	EQUAL?	HERE,UPPER-ELEVATOR \FALSE
	CRLF	
	PRINT	ELEVATOR-LIGHT-OFF
	CRLF	
	RFALSE	


	.FUNCT	I-TURNOFF-LOWER-ELEVATOR
	ZERO?	ELEVATOR-IN-TRANSIT /?CCL3
	CALL	QUEUE,I-TURNOFF-LOWER-ELEVATOR,120
	PUT	STACK,0,1
	RFALSE	
?CCL3:	SET	'LOWER-ELEVATOR-ON,FALSE-VALUE
	EQUAL?	HERE,LOWER-ELEVATOR \FALSE
	CRLF	
	PRINT	ELEVATOR-LIGHT-OFF
	CRLF	
	RFALSE	


	.FUNCT	I-UPPER-ELEVATOR-TRIP
	EQUAL?	UPPER-ELEVATOR-UP,TRUE-VALUE \?CCL3
	SET	'UPPER-ELEVATOR-UP,FALSE-VALUE
	SET	'ELEVATOR-IN-TRANSIT,FALSE-VALUE
	FSET	UPPER-ELEVATOR-DOOR,OPENBIT
	CRLF	
	CALL	ELEVATOR-DOOR-OPENS
	RSTACK	
?CCL3:	SET	'UPPER-ELEVATOR-UP,TRUE-VALUE
	SET	'ELEVATOR-IN-TRANSIT,FALSE-VALUE
	FSET	UPPER-ELEVATOR-DOOR,OPENBIT
	CRLF	
	CALL	ELEVATOR-DOOR-OPENS
	RSTACK	


	.FUNCT	I-LOWER-ELEVATOR-TRIP
	EQUAL?	LOWER-ELEVATOR-UP,TRUE-VALUE \?CCL3
	SET	'LOWER-ELEVATOR-UP,FALSE-VALUE
	SET	'ELEVATOR-IN-TRANSIT,FALSE-VALUE
	FSET	LOWER-ELEVATOR-DOOR,OPENBIT
	CRLF	
	CALL	ELEVATOR-DOOR-OPENS
	RSTACK	
?CCL3:	SET	'LOWER-ELEVATOR-UP,TRUE-VALUE
	SET	'ELEVATOR-IN-TRANSIT,FALSE-VALUE
	FSET	LOWER-ELEVATOR-DOOR,OPENBIT
	CRLF	
	CALL	ELEVATOR-DOOR-OPENS
	RSTACK	


	.FUNCT	ELEVATOR-DOOR-OPENS
	PRINTR	"The elevator door slides open."


	.FUNCT	HELICOPTER-OBJECT-F
	EQUAL?	PRSA,V?WALK-TO,V?BOARD,V?THROUGH \?CCL3
	EQUAL?	HERE,HELIPAD \?CCL6
	CALL	GOTO,HELICOPTER
	RSTACK	
?CCL6:	PRINTR	"You're in it!"
?CCL3:	EQUAL?	PRSA,V?DISEMBARK,V?DROP,V?EXIT \?CCL8
	EQUAL?	HERE,HELICOPTER \?CCL11
	CALL	GOTO,HELIPAD
	RSTACK	
?CCL11:	PRINTR	"You're not in it!"
?CCL8:	EQUAL?	PRSA,V?FLY \FALSE
	EQUAL?	HERE,HELICOPTER \?CCL16
	PRINTR	"The controls seem to be locked."
?CCL16:	PRINTR	"You're not even in it!"


	.FUNCT	COMM-ROOM-F,RARG
	EQUAL?	RARG,M-LOOK \?CCL3
	PRINTI	"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 "
	ZERO?	COMM-SHUTDOWN /?CCL6
	CALL	SHUTDOWN
	JUMP	?CND4
?CCL6:	ZERO?	COMM-FIXED /?CCL8
	PRINTI	"""Tranzmishun in pragres."""
	JUMP	?CND4
?CCL8:	PRINTI	"""Malfunkshun in Sendeeng Kuulint Sistum."""
?CND4:	PRINTI	" Next to this console is an enunciator"
	ZERO?	COMM-FIXED \?CCL10
	ZERO?	COMM-SHUTDOWN /?CND9
?CCL10:	PRINTI	" whose lights are all dark"
?CND9:	PRINTR	". On the console next to the enunciator panel is a funnel-shaped hole labelled ""Kuulint Sistum Manyuuwul Oovuriid."""
?CCL3:	EQUAL?	RARG,M-END \FALSE
	ZERO?	COMM-FIXED \FALSE
	ZERO?	COMM-SHUTDOWN \FALSE
	ZERO?	JUST-ENTERED /FALSE
	CALL	QUEUE,I-UNENTER,-1
	PUT	STACK,0,1
	SET	'JUST-ENTERED,FALSE-VALUE
	PRINTI	"A "
	EQUAL?	CHEMICAL-REQUIRED,1 \?CCL21
	PRINTI	"red"
	JUMP	?CND19
?CCL21:	EQUAL?	CHEMICAL-REQUIRED,2 \?CCL23
	PRINTI	"blue"
	JUMP	?CND19
?CCL23:	EQUAL?	CHEMICAL-REQUIRED,3 \?CCL25
	PRINTI	"green"
	JUMP	?CND19
?CCL25:	EQUAL?	CHEMICAL-REQUIRED,4 \?CCL27
	PRINTI	"yellow"
	JUMP	?CND19
?CCL27:	EQUAL?	CHEMICAL-REQUIRED,5 \?CCL29
	PRINTI	"gray"
	JUMP	?CND19
?CCL29:	EQUAL?	CHEMICAL-REQUIRED,6 \?CCL31
	PRINTI	"brown"
	JUMP	?CND19
?CCL31:	EQUAL?	CHEMICAL-REQUIRED,7 \?CND19
	PRINTI	"black"
?CND19:	PRINTR	" colored light is flashing on the enunciator panel."


	.FUNCT	I-UNENTER
	EQUAL?	HERE,COMM-ROOM /FALSE
	SET	'JUST-ENTERED,TRUE-VALUE
	CALL	INT,I-UNENTER
	PUT	STACK,0,0
	RFALSE	


	.FUNCT	PLAYBACK-BUTTON-F
	EQUAL?	PRSA,V?PUSH \FALSE
	PRINTR	"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."


	.FUNCT	RANDOMIZE-ORDER,COUNT=0,TEMP,?TMP1,?TMP2
?PRG1:	IGRTR?	'COUNT,7 /?REP2
	PUT	ORDER-LTBL,COUNT,FALSE-VALUE
	JUMP	?PRG1
?REP2:	SET	'COUNT,0
?PRG6:	IGRTR?	'COUNT,7 /TRUE
	RANDOM	7 >TEMP
	GET	ORDER-LTBL,1 >?TMP2
	GET	ORDER-LTBL,2 >?TMP1
	GET	ORDER-LTBL,3
	EQUAL?	TEMP,?TMP2,?TMP1,STACK /?CTR12
	GET	ORDER-LTBL,4 >?TMP2
	GET	ORDER-LTBL,5 >?TMP1
	GET	ORDER-LTBL,6
	EQUAL?	TEMP,?TMP2,?TMP1,STACK /?CTR12
	GET	ORDER-LTBL,7
	EQUAL?	TEMP,STACK \?CCL13
?CTR12:	DEC	'COUNT
	JUMP	?PRG6
?CCL13:	PUT	ORDER-LTBL,COUNT,TEMP
	JUMP	?PRG6


	.FUNCT	CHEMICAL-FLUID-F
	EQUAL?	PRSA,V?EAT \?CCL3
	CALL	JIGS-UP,STR?184
	RSTACK	
?CCL3:	EQUAL?	PRSA,V?PUT \?CCL5
	EQUAL?	PRSI,CHEMICAL-FLUID \?CCL5
	CALL	PERFORM,V?PUT,PRSO,FLASK
	RTRUE	
?CCL5:	EQUAL?	PRSA,V?POUR,V?THROW \?CCL9
	EQUAL?	PRSI,RAT-ANT,TROLL /?CTR8
	EQUAL?	PRSI,GRUE,TRIFFID \?CCL9
?CTR8:	CALL	HELD?,FLASK
	ZERO?	STACK \?CND14
	PRINTR	"You're not holding the flask."
?CND14:	REMOVE	CHEMICAL-FLUID
	PRINTR	"The mutants lap up the chemical, howling with delight. One immediately grows three new mouths."
?CCL9:	EQUAL?	PRSA,V?POUR,V?PUT \FALSE
	CALL	HELD?,FLASK
	ZERO?	STACK \?CCL20
	PRINTR	"You're not holding the flask."
?CCL20:	EQUAL?	PRSI,CANTEEN \?CND18
	CALL	WORTHLESS-ACTION
	RTRUE	
?CND18:	REMOVE	CHEMICAL-FLUID
	ZERO?	PRSI \?CND22
	SET	'PRSI,GROUND
?CND22:	EQUAL?	PRSI,FUNNEL-HOLE \?CCL26
	EQUAL?	CHEMICAL-FLAG,CHEMICAL-REQUIRED \?CCL29
	GET	ORDER-LTBL,STEPS-TO-GO >CHEMICAL-REQUIRED
	DEC	'STEPS-TO-GO
	PRINTI	"The liquid disappears into the hole. The lights on the enunciator panel blink rapidly "
	ZERO?	STEPS-TO-GO \?CCL32
	SET	'COMM-FIXED,TRUE-VALUE
	ADD	SCORE,6 >SCORE
	SET	'CHEMICAL-REQUIRED,10
	PRINTR	"and then go dark. The coolant system warning light goes off, and another flashes, indicating that the help message is now being sent."
?CCL32:	PRINTI	"and all go off except one, a "
	EQUAL?	CHEMICAL-REQUIRED,1 \?CCL35
	PRINTI	"red"
	JUMP	?CND33
?CCL35:	EQUAL?	CHEMICAL-REQUIRED,2 \?CCL37
	PRINTI	"blue"
	JUMP	?CND33
?CCL37:	EQUAL?	CHEMICAL-REQUIRED,3 \?CCL39
	PRINTI	"green"
	JUMP	?CND33
?CCL39:	EQUAL?	CHEMICAL-REQUIRED,4 \?CCL41
	PRINTI	"yellow"
	JUMP	?CND33
?CCL41:	EQUAL?	CHEMICAL-REQUIRED,5 \?CCL43
	PRINTI	"gray"
	JUMP	?CND33
?CCL43:	EQUAL?	CHEMICAL-REQUIRED,6 \?CCL45
	PRINTI	"brown"
	JUMP	?CND33
?CCL45:	EQUAL?	CHEMICAL-REQUIRED,7 \?CND33
	PRINTI	"black"
?CND33:	PRINTR	" light."
?CCL29:	SET	'COMM-SHUTDOWN,TRUE-VALUE
	ZERO?	COMM-FIXED /?CND47
	SUB	SCORE,6 >SCORE
	SET	'COMM-FIXED,FALSE-VALUE
?CND47:	PRINTI	"An alarm sounds briefly, and a sign flashes "
	CALL	SHUTDOWN
	PRINTR	" A moment later, the lights in the room dim and the send console shuts down."
?CCL26:	EQUAL?	CHEMICAL-FLAG,8,9 \?CCL50
	FSET?	PRSI,ACIDBIT \?CCL53
	EQUAL?	PRSI,SPOUT-PLACED \?CND54
	SET	'SPOUT-PLACED,GROUND
?CND54:	REMOVE	PRSI
	PRINTI	"The "
	PRINTD	PRSI
	PRINTI	" dissolves right before your eyes!"
	EQUAL?	PRSI,BAD-BEDISTOR \?CCL58
	FSET?	BAD-BEDISTOR,TOUCHBIT /?CCL58
	FSET	CUBE,MUNGEDBIT
	CALL	CUBE-SEEMS
	JUMP	?CND56
?CCL58:	EQUAL?	PRSI,GOOD-BEDISTOR \?CND56
	ZERO?	COURSE-CONTROL-FIXED /?CND56
	FSET	CUBE,MUNGEDBIT
	SUB	SCORE,6 >SCORE
	SET	'COURSE-CONTROL-FIXED,FALSE-VALUE
	CALL	CUBE-SEEMS
?CND56:	CRLF	
	RTRUE	
?CCL53:	EQUAL?	CREVICE,PRSI \?CCL65
	FSET?	KEY,TOUCHBIT /?CCL65
	FSET?	KEY,INVISIBLE \?CCL70
	PRINTI	"A puff of smoke rises from the crevice."
	CRLF	
	JUMP	?CND68
?CCL70:	PRINTI	"Although the chemical has no effect on the crevice, it does seem to have dissolved the key that was lying in it."
	CRLF	
?CND68:	REMOVE	KEY
	FSET	KEY,TOUCHBIT
	FCLEAR	KEY,INVISIBLE
	RTRUE	
?CCL65:	EQUAL?	PRSI,HIGH-PROTEIN,MEDICINE \?CCL72
	CALL	JIGS-UP,STR?185
	RSTACK	
?CCL72:	EQUAL?	PRSI,ME,ADVENTURER,HANDS \?CCL74
	CALL	JIGS-UP,STR?186
	RSTACK	
?CCL74:	EQUAL?	PRSI,FLOYD \?CCL76
	FSET?	FLOYD,RLANDBIT \?CCL76
	PRINTR	"Floyd yelps. ""Hey, cut it out! That stuff burns!"""
?CCL76:	EQUAL?	PRSI,MICROBE \?CCL80
	PRINTI	"The microbe writhes in pain. "
	CALL	STRIP-DISSOLVES
	RSTACK	
?CCL80:	EQUAL?	PRSI,STRIP,RELAY \?CCL82
	CALL	STRIP-DISSOLVES
	RSTACK	
?CCL82:	FSET?	PRSI,MUNGBIT \?CCL84
	FSET	PRSI,MUNGEDBIT
	EQUAL?	PRSI,CHRONOMETER \?CND85
	SET	'MUNGED-TIME,INTERNAL-MOVES
?CND85:	PRINTI	"The "
	PRINTD	PRSI
	PRINTI	" seems to undergo some damage as a result of your action."
	CRLF	
	EQUAL?	PRSI,CUBE \TRUE
	ZERO?	COURSE-CONTROL-FIXED /TRUE
	SET	'COURSE-CONTROL-FIXED,FALSE-VALUE
	REMOVE	GOOD-BEDISTOR
	SUB	SCORE,6 >SCORE
	PRINTR	"The bedistor also happens to dissolve."
?CCL84:	CALL	CHEMICAL-POURS
	RSTACK	
?CCL50:	CALL	CHEMICAL-POURS
	RSTACK	


	.FUNCT	CUBE-SEEMS
	PRINTI	" Unfortunately, the cube seems to undergo some damage as well."
	RTRUE	


	.FUNCT	CHEMICAL-POURS
	PRINTI	"The chemical pours all over the "
	PRINTD	PRSI
	PRINTR	", making quite a mess."


	.FUNCT	STRIP-DISSOLVES
	CALL	JIGS-UP,STR?187
	RSTACK	


	.FUNCT	SHUTDOWN
	PRINTI	"""Kuulint Sistum Imbalins Kritikul -- Shuteeng Down Awl Sistumz."""
	RTRUE	


	.FUNCT	COMM-SETUP
	RANDOM	3
	ADD	2,STACK >OLD-SHOTS
	RANDOM	10
	ADD	20,STACK >NEW-SHOTS
	CALL	RANDOMIZE-ORDER
	RANDOM	2
	ADD	1,STACK >STEPS-TO-GO
	ADD	STEPS-TO-GO,1
	GET	ORDER-LTBL,STACK >CHEMICAL-REQUIRED
	RETURN	CHEMICAL-REQUIRED


	.FUNCT	OTHER-ELEVATOR-ENTER-F
	FSET?	LOWER-ELEVATOR-DOOR,OPENBIT \?CCL3
	ZERO?	LOWER-ELEVATOR-UP \?CCL3
	RETURN	LOWER-ELEVATOR
?CCL3:	CALL	DOOR-CLOSED
	CALL	THIS-IS-IT,LOWER-ELEVATOR-DOOR
	RFALSE	


	.FUNCT	KALAMONTEE-PLATFORM-F,RARG
	EQUAL?	RARG,M-LOOK \FALSE
	PRINTI	"This is a wide, flat strip of concrete which continues westward. "
	ZERO?	BETTY-AT-KALAMONTEE /?CCL6
	ZERO?	ALFIE-AT-KALAMONTEE /?CCL6
	PRINTI	"Open shuttle cars lie on the north and south sides of the platform. "
	JUMP	?CND4
?CCL6:	ZERO?	BETTY-AT-KALAMONTEE /?CCL10
	PRINTI	"An open shuttle car lies to the north. "
	JUMP	?CND4
?CCL10:	ZERO?	ALFIE-AT-KALAMONTEE /?CND4
	PRINTI	"A large transport of some sort lies to the south, its open door beckoning you to enter. "
?CND4:	PRINTR	"A faded sign on the wall reads ""Shutul Platform -- Kalamontee Staashun."""

	.ENDI


================================================
FILE: compone.zil
================================================
"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 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">>



"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 METAL)
	(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>)>>

================================================
FILE: comptwo.zabstr
================================================

<ROOM LAWANDA-PLATFORM (IN ROOMS) (DESC "Lawanda Platform") (C-MOVE <TABLE 0 0
0 30 0 0 0 0 0 0 0 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 <> %<> WORD> 
<DEFINE-ROUTINE LAWANDA-PLATFORM-F> 
<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 0 0 15 30 0 0 0 0 0 0 0 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 0 0 15 0 0 0 0 0 25 0 25 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)> 
<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 25 0 0 0 0 0 0 0 25 0 0 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 <> %<> WORD> 
<DEFINE-ROUTINE INFIRMARY-F> 
<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)> 
<DEFINE-ROUTINE RED-SPOOL-F> 
<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)> 
<DEFINE-ROUTINE MEDICINE-F> 
<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 0 0 0 30 0 0 0
0 0 0 0 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 <> %<> WORD> 
<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)> 
<DEFINE-ROUTINE ROBOT-HOLE-F> 
<GLOBAL HOLE-TRIP-FLAG <> %<> WORD> 
<DEFINE-ROUTINE FLOYD-THROUGH-HOLE> 
<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)> 
<DEFINE-ROUTINE GOOD-BOARD-F> 
<GLOBAL BOARD-REPORTED <> %<> WORD> 
<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 0 0 15 0 0 0 25 0 0 0 0 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 S
Download .txt
gitextract_nd_5qeya/

├── COMPILED/
│   └── planetfall.z3
├── README.md
├── compone.zabstr
├── compone.zap
├── compone.zil
├── comptwo.zabstr
├── comptwo.zap
├── comptwo.zil
├── globals.zabstr
├── globals.zap
├── globals.zil
├── misc.zabstr
├── misc.zap
├── misc.zil
├── parser.zabstr
├── parser.zap
├── parser.zil
├── planetfall.beta
├── planetfall.clocker
├── planetfall.errors
├── planetfall.record
├── planetfall.zap
├── planetfall.zil
├── planetfalldat.zap
├── planetfallfreq.xzap
├── planetfallpur.zap
├── planetfallstr.zap
├── s3.zil
├── syntax.zap
├── syntax.zil
├── verbs.zabstr
├── verbs.zap
└── verbs.zil
Condensed preview — 33 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,148K chars).
[
  {
    "path": "README.md",
    "chars": 3015,
    "preview": "# Planetfall Source Code Collection\n\nPlanetfall is a 1983 interactive fiction game written by Steve Meretzky and publish"
  },
  {
    "path": "compone.zabstr",
    "chars": 37607,
    "preview": "\n<ROOM UNDERWATER (IN ROOMS) (DESC \"Underwater\") (LDESC\n\"You are momentarily disoriented as you enter the turbulent wate"
  },
  {
    "path": "compone.zap",
    "chars": 52174,
    "preview": "\n\n\t.FUNCT\tUNDERWATER-F,RARG\n\tEQUAL?\tRARG,M-END \\FALSE\n\tIGRTR?\t'DROWN,2 \\FALSE\n\tCALL\tJIGS-UP,STR?101\n\tRSTACK\t\n\n\n\t.FUNCT\tC"
  },
  {
    "path": "compone.zil",
    "chars": 102069,
    "preview": "\"COMPONE for PLANETFALL \n(C) COPYRIGHT 1983 INFOCOM, INC. ALL RIGHTS RESERVED\n\nThis file contains all the rooms, objects"
  },
  {
    "path": "comptwo.zabstr",
    "chars": 39326,
    "preview": "\n<ROOM LAWANDA-PLATFORM (IN ROOMS) (DESC \"Lawanda Platform\") (C-MOVE <TABLE 0 0\n0 30 0 0 0 0 0 0 0 0>) (NORTH PER SHUTTL"
  },
  {
    "path": "comptwo.zap",
    "chars": 52625,
    "preview": "\n\n\t.FUNCT\tLAWANDA-PLATFORM-F,RARG\n\tZERO?\tLAWANDA-PLATFORM-FLAG \\?CND1\n\tSET\t'LAWANDA-PLATFORM-FLAG,TRUE-VALUE\n\tSET\t'SICKN"
  },
  {
    "path": "comptwo.zil",
    "chars": 97121,
    "preview": "\"COMPTWO for PLANETFALL \n(C) COPYRIGHT 1983 INFOCOM, INC. ALL RIGHTS RESERVED\n\nThis file contains all the rooms, objects"
  },
  {
    "path": "globals.zabstr",
    "chars": 19391,
    "preview": "\n<CONSTANT DEFAULT-MOVE 20> \n<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT> \n<GLOBAL LOAD-ALLOWED 100 %<>"
  },
  {
    "path": "globals.zap",
    "chars": 60819,
    "preview": "\n\n\t.FUNCT\tGROUND-F\n\tEQUAL?\tPRSA,V?PUT \\?CCL3\n\tEQUAL?\tPRSI,GROUND \\?CCL3\n\tCALL\tPERFORM,V?DROP,PRSO\n\tRTRUE\t\n?CCL3:\tEQUAL?\t"
  },
  {
    "path": "globals.zil",
    "chars": 85943,
    "preview": "\"GLOBALS for PLANETFALL\n(C) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED\n\nThis file contains Global Objects and their"
  },
  {
    "path": "misc.zabstr",
    "chars": 1782,
    "preview": "\n<SETG C-ENABLED? 0> \n<SETG C-ENABLED 1> \n<SETG C-DISABLED 0> \n<DEFMAC VERB? (\"TUPLE\" ATMS \"AUX\" (O ()) (L ())) <REPEAT "
  },
  {
    "path": "misc.zap",
    "chars": 7905,
    "preview": "\n\n\t.FUNCT\tPICK-ONE,FROB\n\tGET\tFROB,0\n\tRANDOM\tSTACK\n\tGET\tFROB,STACK\n\tRSTACK\t\n\n\n\t.FUNCT\tGO\nSTART::\n\n?FCN:\tPUTB\tP-LEXV,0,59\n"
  },
  {
    "path": "misc.zil",
    "chars": 12998,
    "preview": "\"MISC for PLANETFALL\n(c) Copyright 1983 Infocom, Inc.  All Rights Reserved.\"\n\n\"old MACROS file\"\n\n<SETG C-ENABLED? 0>\n<SE"
  },
  {
    "path": "parser.zabstr",
    "chars": 3848,
    "preview": "\n<SETG SIBREAKS \".,\\\"\"> \n<GLOBAL PRSA 0 %<> WORD> \n<GLOBAL PRSI 0 %<> WORD> \n<GLOBAL PRSO 0 %<> WORD> \n<GLOBAL P-ADVERB "
  },
  {
    "path": "parser.zap",
    "chars": 28065,
    "preview": "\n\n\t.FUNCT\tPARSER,PTR=P-LEXSTART,WORD,VAL=0,VERB=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1\n?PRG1:\tIGRTR?\t'CNT,P-ITBLLEN /?REP"
  },
  {
    "path": "parser.zil",
    "chars": 35752,
    "preview": "\"PARSER for\n\t\t\t       PLANETFALL\n\t(c) Copyright 1983 Infocom, Inc.  All Rights Reserved.\"\n\n\"Parser global variable conve"
  },
  {
    "path": "planetfall.clocker",
    "chars": 788,
    "preview": "<ROUTINE CLOCKER (\"AUX\" C E TICK (FLG <>))\n\t ;<SETG ELAPSED-MOVES <+ ,ELAPSED-MOVES 1>>\n\t ;<COND (,DEBUG-ON\n\t\t<TELL \"[El"
  },
  {
    "path": "planetfall.errors",
    "chars": 697,
    "preview": "Assembling PLANETFALL.ZAP.3 on Sunday, May 1, 1988 13:37:01\nRelease: 39\n\n    64\tInserting PLANETFALLFREQ.XZAP.1\t   (648 "
  },
  {
    "path": "planetfall.record",
    "chars": 25181,
    "preview": "\nCombined ZIL Compiler Ver 2.0 (MIM)\n-----------------------------------\n\nIncremental compilation disabled, because top-"
  },
  {
    "path": "planetfall.zap",
    "chars": 849,
    "preview": "; Low core locations\n%ZVERSION::\t.BYTE\t0\n\t\t.BYTE\tFLAGS\n%ZORKID::\tZORKID\n%ENDLOD::\tENDLOD\n%START::\tSTART\n%VOCAB::\tVOCAB\n%"
  },
  {
    "path": "planetfall.zil",
    "chars": 573,
    "preview": "\"PLANETFALL for\n\t\t\t       PLANETFALL\n\t  (c) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED\"\n\n<VERSION ZIP>\n<FREQUENT-WO"
  },
  {
    "path": "planetfalldat.zap",
    "chars": 212545,
    "preview": "\n\n; TOP LEVEL DEFINITIONS\n\n\tTRUE-VALUE=1\n\tFALSE-VALUE=0\n\tFATAL-VALUE=2\n\n\tO?ANY=1\n\n\tPS?OBJECT=128\n\tPS?VERB=64\n\tPS?ADJECTI"
  },
  {
    "path": "planetfallfreq.xzap",
    "chars": 3970,
    "preview": "\t.FSTR FSTR?1,\"the \"\t;1968\t985\n\t.FSTR FSTR?2,\"The \"\t;1167\t390\n\t.FSTR FSTR?3,\"and \"\t;812\t407\n\t.FSTR FSTR?4,\", \"\t;776\t777\n"
  },
  {
    "path": "planetfallpur.zap",
    "chars": 1328,
    "preview": "\n\n; PURE TABLES ARE DEFINED HERE\n\nPURTBL::\n\nPT?103::\nT?AMBASSADOR-QUOTES::\t.TABLE\n\t7\n\tSTR?21\n\tSTR?22\n\tSTR?23\n\tSTR?24\n\tST"
  },
  {
    "path": "planetfallstr.zap",
    "chars": 40181,
    "preview": "\n\n; STRINGS ARE DEFINED HERE\n\nSTRBEG::\n\n\t.GSTR STR?64,\"\"\n\t.GSTR STR?91,\" has no effect.\"\n\t.GSTR STR?102,\"You have reache"
  },
  {
    "path": "s3.zil",
    "chars": 621,
    "preview": "\"PLANETFALL for\n\t\t\t       PLANETFALL\n\t  (c) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED\"\n\n<GC 0 T 5>\n<BLOAT 90000 0 "
  },
  {
    "path": "syntax.zap",
    "chars": 8,
    "preview": "\n\t.ENDI\n"
  },
  {
    "path": "syntax.zil",
    "chars": 14681,
    "preview": "\"SYNTAX for PLANETFALL\n(c) Copyright 1983 Infocom, Inc.  All Rights Reserved\"\n\n\"SUBTITLE VOCABULARY\"\n\n<BUZZ A AN THE IS "
  },
  {
    "path": "verbs.zabstr",
    "chars": 6370,
    "preview": "\n<GLOBAL VERBOSE <> %<> WORD> \n<GLOBAL SUPER-BRIEF <> %<> WORD> \n<DEFINE-ROUTINE V-VERBOSE> \n<DEFINE-ROUTINE V-BRIEF> \n<"
  },
  {
    "path": "verbs.zap",
    "chars": 43597,
    "preview": "\n\n\t.FUNCT\tV-VERBOSE\n\tSET\t'VERBOSE,TRUE-VALUE\n\tSET\t'SUPER-BRIEF,FALSE-VALUE\n\tPRINTI\t\"Maximum verbosity.\"\n\tCRLF\t\n\tCRLF\t\n\tC"
  },
  {
    "path": "verbs.zil",
    "chars": 50147,
    "preview": "\"VERBS for\n\t\t\t       PLANETFALL\n\t  (c) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED\"\n\n<GLOBAL VERBOSE <>>\n\n<GLOBAL SU"
  }
]

// ... and 2 more files (download for full content)

About this extraction

This page contains the full source code of the historicalsource/planetfall GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 33 files (1017.6 KB), approximately 422.9k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!