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
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.