stationfall/village.zil

1982 lines
59 KiB
Plaintext

"VILLAGE for
STATIONFALL
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<ROUTINE VILLAGE-BOUNDARY-F ("AUX" DESTINATION)
<COND (<NOT <FSET? ,IRIS-HATCH ,OPENBIT>>
<THIS-IS-IT ,IRIS-HATCH>
<TELL "The iris hatch is closed." CR>
<RFALSE>)
(<ULTIMATELY-IN? ,SPACESUIT>
<THIS-IS-IT ,SPACESUIT>
<TELL
"The space suit is too bulky to fit through the
partially dilated iris hatch." CR>
<RFALSE>)>
<TELL
"As you cross the boundary of the Command Module,
the station's artificial gravity ">
<COND (<EQUAL? ,HERE ,EAST-CONNECTION ,SOUTH-CONNECTION>
<COND (<EQUAL? ,HERE ,EAST-CONNECTION>
<SET DESTINATION ,MAKESHIFT-CONNECTOR>)
(T
<SET DESTINATION ,GRIMY-PASSAGE>)>
<TELL "cuts off suddenly, leaving you weightless">)
(T
<COND (<EQUAL? ,HERE ,MAKESHIFT-CONNECTOR>
<SET DESTINATION ,EAST-CONNECTION>)
(T
<SET DESTINATION ,SOUTH-CONNECTION>)>
<TELL "once again tugs you against the deck">)>
<TELL ,PERIOD-CR CR>
.DESTINATION>
<OBJECT IRIS-HATCH
(IN LOCAL-GLOBALS)
(DESC "iris hatch")
(SYNONYM HATCH)
(ADJECTIVE IRIS)
(FLAGS DOORBIT VOWELBIT)
(ACTION IRIS-HATCH-F)>
<ROUTINE IRIS-HATCH-F ()
<COND (<VERB? OPEN CLOSE>
<TELL ,WONT-BUDGE>)
(<VERB? EXAMINE>
<TELL
"The hatch, like the f-stop of a camera, is composed of many pieces which move
to form a circular opening of the desired size. This is a common way of joining
connecting tubes to ships or stations. There's a slot next to the hatch. ">
<RFALSE>)>>
<ROOM MAKESHIFT-CONNECTOR
(IN ROOMS)
(DESC "Makeshift Connector")
(LDESC
"This is an east-west tube, widening as it gets farther
from the Command Module.")
(WEST PER VILLAGE-BOUNDARY-F)
(EAST TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL IRIS-HATCH VILLAGE)>
<ROOM BROADWAY
(IN ROOMS)
(DESC "Broadway")
(LDESC
"This is a wide, cheaply constructed space tube, narrowing to the west.
There are openings off this \"street\" in virtually every direction,
including one leading downward.")
(NORTH TO RECRUITMENT-OFFICE)
(NE TO REC-SHOP)
(EAST TO FIELD-OFFICE)
(SE TO BARBERSHOP)
(SOUTH TO GROCERY)
(SW TO PET-STORE)
(WEST TO MAKESHIFT-CONNECTOR)
(NW "Well, there are openings in ALMOST every direction.")
(DOWN TO FORTUNE-TELLER)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)>
<ROOM FORTUNE-TELLER
(IN ROOMS)
(DESC "Fortune Teller")
(LDESC
"This is a tiny living bubble beneath Broadway. The inhabitant, who is
nowhere in sight, seems to be in the profession of reading the future
for superstitious spacers.")
(UP TO BROADWAY)
(OUT TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<OBJECT CRYSTAL-BALL
(IN FORTUNE-TELLER)
(DESC "crystal ball")
(SYNONYM BALL)
(ADJECTIVE CRYSTAL)
(FLAGS TAKEBIT)
(SIZE 10)
(ACTION CRYSTAL-BALL-F)>
<ROUTINE CRYSTAL-BALL-F ()
<COND (<VERB? LOOK-INSIDE>
<TELL
"As you gaze into the ball, a vision takes shape...tiny letters, deep within
the crystal... \"Tips: Be general with your predictions. Always promise
romantic encounters. And wave your hands around the " 'CRYSTAL-BALL "; the
marks just love that touch.\"" CR>)>>
<ROOM RECRUITMENT-OFFICE
(IN ROOMS)
(DESC "Recruitment Office")
(LDESC
"The Stellar Patrol has opened a recruitment office off Broadway, thus
giving tacit approval to this technically nonregulation space village.
Posters showing a rose-colored view of Patrol life are plastered all over
the walls. A door leads south.")
(SOUTH TO BROADWAY)
(OUT TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)
(THINGS <PSEUDO (<> POSTER RECRUITMENT-POSTER-F)>)>
<ROUTINE RECRUITMENT-POSTER-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"The posters are emblazoned with such recruitment slogans as \"The Patrol is
looking for a few good organisms\" and \"Learn valuable skills and explore
the galaxy.\" You can't imagine how you ever believed such drivel." CR>)>>
;<ROOM CHURCH
(IN ROOMS)
(DESC "Church")
(LDESC
"You have entered a ramshackle, deserted house of worship for one of
the many nondescript space-based religions. The decor was obviously
intended, but fails, to make the church look larger and less shoddy than
it really is. The only exit is south.")
(SOUTH TO BROADWAY)
(OUT TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)>
<ROOM REC-SHOP
(IN ROOMS)
(DESC "Rec Shop")
(LDESC
"This moderately large store sells all kinds of games and other recreational
materials. There is also an in-house rec area, featuring a group of simulation
booths. The \"street\" lies to the southwest.")
(SW TO BROADWAY)
(OUT TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<OBJECT SIMULATION-BOOTH
(IN REC-SHOP)
(DESC "simulation booth")
(SYNONYM BOOTH BOOTHS CHAMBER CYLIND)
(ADJECTIVE SIMULATION METALLIC GREEN CYLIND)
(FLAGS NDESCBIT CONTBIT SEARCHBIT VEHBIT OPENBIT INBIT)
(ACTION SIMULATION-BOOTH-F)>
<ROUTINE SIMULATION-BOOTH-F ("OPTIONAL" (OARG <>))
<COND (.OARG
<RFALSE>)
(<VERB? ON USE PLAY-WITH>
<COND (<IN? ,PROTAGONIST ,SIMULATION-BOOTH>
<SETG C-ELAPSED 48>
<TELL
"You experience a brief but exciting simulation about " <PICK-ONE ,SIMULATIONS>
". The booth shuts itself off at the end of the simulation." CR>)
(T
<TELL "You have to be in the booth to use it." CR>)>)
(<VERB? EXAMINE>
<TELL "The ">
<COND (<NOT <IN? ,PROTAGONIST ,SIMULATION-BOOTH>>
<TELL "nearest ">)>
<TELL
"booth, a metallic-green-colored cylindrical chamber, is off.">
<COND (<FIRST? ,SIMULATION-BOOTH>
<TELL " ">
<RFALSE>)
(T
<CRLF>)>)
(<VERB? OPEN CLOSE>
<TELL "The booth has no door." CR>)>>
<GLOBAL SIMULATIONS
<LTABLE 0
"groof hunting on Septurion Seven"
"a little-known incident during the signing of the Treaty of Gishen IV"
"a torrid romance on the tropical planet of San Cupidor"
"searching for treasure in a magical underground empire"
"bullfighting, skydiving, and dental hygiene">>
<ROOM FIELD-OFFICE
(IN ROOMS)
(DESC "Field Office")
(LDESC
"The huge galactic mining conglomerates often open field offices in these
space villages, and this is one of those. Miners will haul some promising
hunk of space rock into the vicinity, and then come here to sell the rights
to it. You can leave to the west.")
(WEST TO BROADWAY)
(OUT TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<OBJECT HEADLAMP
(IN FIELD-OFFICE)
(DESC "headlamp")
(FDESC "Some miner has left a headlamp here.")
(SYNONYM LAMP LIGHT HEADLAMP)
(FLAGS TAKEBIT LIGHTBIT WEARBIT)
(SIZE 8)
(ACTION HEADLAMP-F)>
<ROUTINE HEADLAMP-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's a typical spacer's lamp, which can be slipped onto one's forehead,
leaving both hands free for work. ">
<RFALSE>)
(<AND <VERB? POINT>
<PRSO? ,HEADLAMP>
,PRSI>
<COND (<FSET? ,HEADLAMP ,ONBIT>
<TELL
"Although" T ,PRSI " is now more illuminated, you don't see anything new." CR>)
(T
<TELL "The lamp isn't on!" CR>)>)
(<VERB? ON>
<COND (<EQUAL? ,HEADLAMP-COUNTER 0>
<TELL "It seems to be dead." CR>)
(T
<QUEUE I-HEADLAMP -1>
<RFALSE>)>)>>
<GLOBAL HEADLAMP-COUNTER 92>
;"routine I-HEADLAMP moved to INTERRUPTS file"
<ROOM BARBERSHOP
(IN ROOMS)
(DESC "Barbershop")
(WEST TO GROCERY)
(NW TO BROADWAY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)
(ACTION BARBERSHOP-F)
(THINGS <PSEUDO (GLASS MIRROR MIRROR-F)>)>
<ROUTINE BARBERSHOP-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You have entered a surprisingly old-fashioned looking tonsorial parlor. ">
<COND (<NOT ,MIRROR-BROKEN>
<TELL
"The far wall is covered by a classic barbershop mirror. ">)>
<TELL
"A space village seems to be the last place in the civilized galaxy where
someone can have their hair or fur trimmed by an actual human being. The
barber isn't here, though. Doors lead northwest and west.">)>>
<GLOBAL MIRROR-BROKEN <>>
<ROUTINE MIRROR-F ()
<COND (,MIRROR-BROKEN
<CANT-SEE ,PSEUDO-OBJECT>)
(<VERB? EXAMINE>
<TELL "It's a standard, old-fashioned glass mirror." CR>)
(<VERB? LOOK-INSIDE>
<TELL "You look mah-velous." CR>)
(<VERB? LOOK-BEHIND LOOK-UNDER>
<TELL "The mirror seems to be affixed to the wall." CR>)
(<VERB? MUNG KICK KILL>
<SETG MIRROR-BROKEN T>
<MOVE ,FOIL ,HERE>
<TELL
"The mirror smashes into a cloud of glass dust, which (fortunately) is
quickly sucked away by the barbershop's ventilation system. As the glass
is sucked away you discover what gave the mirror its reflectivity: "
<GETP ,FOIL ,P?FDESC> CR>)
(<AND <VERB? THROW>
<PRSI? ,PSEUDO-OBJECT>>
<MOVE ,PRSO ,HERE>
<PERFORM ,V?KICK ,PSEUDO-OBJECT>
<RTRUE>)>>
<OBJECT FOIL
(DESC "reflective foil")
(FDESC
"A piece of reflective foil is hanging on the wall where the mirror once was.")
(SYNONYM PIECE FOIL PLATINUM)
(ADJECTIVE LARGE REFLECTIVE TRANS-MOLECULAR PLATINUM)
(FLAGS TAKEBIT NARTICLEBIT)
(PLATO-ASK-ABOUT
"Trans-molecular platinum foil! I am told that it is the most perfectly
reflective material known, and not just on the visual wavelengths!")
(FLOYD-ASK-ABOUT
"Floyd loves anything reflective! Give Floyd a mirror and he'll be happy
for days!")
(VALUE 4)
(ACTION FOIL-F)>
<ROUTINE FOIL-F ()
<COND (<VERB? MEASURE EXAMINE>
<TELL
"It's a large piece of " 'FOIL ", about two meters on a side." CR>)
(<VERB? CRUMPLE>
<TELL
"You crumple the foil into a fist-sized wad, but it instantly returns to
its wrinkle-free state." CR>)
(<AND <VERB? FIND>
<EQUAL? ,HERE ,BARBERSHOP>
<NOT ,MIRROR-BROKEN>
<ULTIMATELY-IN? ,PLATINUM-DETECTOR>
<FSET? ,PLATINUM-DETECTOR ,ACTIVEBIT>>
<PERFORM ,V?FOLLOW ,PLATINUM-DETECTOR>
<RTRUE>)>>
<ROOM GROCERY
(IN ROOMS)
(DESC "Grocery")
(LDESC
"This is a small convenience store, the main source of food and living supplies
for this village, as well as a supplement supply for personnel from the space
station proper. The shelves are pretty bare, and there is no one in sight.
Exits lead north, east, southeast and south.")
(NORTH TO BROADWAY)
(EAST TO BARBERSHOP)
(SE TO SALOON)
(SOUTH TO TRADING-POST)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)>
<OBJECT PLASTIC-BAG
(IN GROCERY)
(DESC "plastic bag")
(FDESC
"A small, translucent plastic bag is sitting on one of the shelves.")
(SYNONYM BAG)
(ADJECTIVE SMALL TRANSL PLASTIC)
(CAPACITY 10)
(SIZE 4)
(FLAGS TAKEBIT CONTBIT SEARCHBIT)>
<OBJECT TAFFY
(IN PLASTIC-BAG)
(DESC "vacuum taffy")
(SYNONYM TAFFY FOOD)
(ADJECTIVE VACUUM)
(FOOD-DESC ", delectable, moist boysenberry-flavored taffy")
(FLAGS TAKEBIT NARTICLEBIT)
(GENERIC GENERIC-FOOD-F)
(ACTION TAFFY-F)>
<ROUTINE TAFFY-F ()
<COND (<AND <VERB? FIND>
<EQUAL? <GET ,P-NAMW 0> ,W?FOOD>>
<PERFORM ,V?SEARCH ,GLOBAL-ROOM>
<RTRUE>)>>
<ROOM PET-STORE
(IN ROOMS)
(DESC "Pet Store")
(LDESC
"This shop, with exits to the northeast and southeast, sells a variety
of animals. Many a lonely spacer has discovered the joys a pet can bring,
and this shop features animals of both terrestrial and alien origin. A
large sign advertises this month's special.")
(NE TO BROADWAY)
(SE TO TRADING-POST)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE SIGN)>
<OBJECT CAGE
(IN PET-STORE)
(DESC "cage")
(SYNONYM CAGE)
(FLAGS TRANSBIT CONTBIT SEARCHBIT)
(ACTION CAGE-F)>
<ROUTINE CAGE-F ()
<COND (<AND <VERB? OPEN>
<NOT <FSET? ,CAGE ,OPENBIT>>
<IN? ,BALLOON ,CAGE>>
<FSET ,CAGE ,OPENBIT>
<MOVE ,BALLOON ,HERE>
<MOVE ,LEASH ,HERE>
<TELL
"As you open the cage, the " 'BALLOON " floats out of it." CR>)
(<VERB? ENTER>
<TELL
"When you were an Ensign Seventh Class, you spent many a day in the brig of the
S.P.S. Feinstein. That was enough time behind bars to last a lifetime (Footnote
7)." CR>)>>
<OBJECT BALLOON
(IN CAGE)
(DESC "Arcturian balloon creature")
(SYNONYM CREATURE PET)
(ADJECTIVE ARCTURIAN BALLOON CREATURE)
(FLAGS VOWELBIT)
(ACTION BALLOON-F)>
<ROUTINE BALLOON-F ()
<COND (<AND <VERB? DROP>
<EQUAL? ,P-PRSA-WORD ,W?RELEASE>
<IN? ,BALLOON ,CAGE>>
<PERFORM ,V?OPEN ,CAGE>
<RTRUE>)
(<VERB? EXAMINE>
<TELL
"This is quite a thrill -- you've never seen an " 'BALLOON " before! This
particular specimen has a leash attached to it. Balloon creatures, you've
heard, don't mind being leashed." CR>)
(<VERB? SHOOT MUNG DRILL>
<REMOVE ,BALLOON>
<REMOVE ,LEASH>
<TELL
"The " 'BALLOON ", considered by many to be the friendliest and most peaceful
animal in the known universe, ">
<COND (<VERB? SHOOT>
<TELL "is consumed in a ball of burning hydrogen.">
<COND (,HANGING-IN-AIR
<TELL " ">
<PERFORM ,V?DROP ,LEASH>)
(T
<CRLF>)>)
(T
<SETG BALLOON-ODOR T>
<TELL
"squirts wildly around the room before disintegrating">
<ANTI-LITTER ,LEASH>
<COND (,HANGING-IN-AIR
<PERFORM ,V?DROP ,LEASH>)
(T
<CRLF>)>
<TELL
" The only reminder of the late balloon is the overwhelming odor
of its digestive gas." CR>)>)
(<VERB? TAKE CATCH>
<PERFORM ,V?TAKE ,LEASH>
<RTRUE>)
(<VERB? SMELL>
<TELL
"There's an odor reminiscent of your school dorm on a night when the dining
hall served Northern Gallium Bonzo Beans." CR>)
(<VERB? TOUCH HUG>
<TELL
"The " D ,BALLOON " purrs and rings of color shimmer along its body." CR>)>>
<OBJECT LEASH
(IN CAGE)
(DESC "leash")
(SYNONYM LEASH)
(FLAGS NDESCBIT)
(ACTION LEASH-F)>
<GLOBAL BALLOON-ODOR <>>
<GLOBAL HANGING-IN-AIR <>>
<ROUTINE LEASH-F ()
<COND (<AND <VERB? TAKE MOVE>
<PRSO? ,LEASH>>
<COND (,HANGING-IN-AIR
<TELL ,SENILITY-STRIKES>)
(<FSET? ,SPACESUIT ,WORNBIT>
<TELL
"The space suit's glove is a bit too big and clumsy to fit through the loop of
the leash. You'll have to remove the suit before grabbing the leash." CR>)
(<FSET? ,HERE ,WEIGHTLESSBIT>
<TELL
"The Arcturian tries to \"float\" away from you, but its buoyancy system is
useless in zero-gee. As you grasp the leash, it uses its lateral propulsion
method in an attempt to get away. In other words, it farts right in your face.
In a reflexive maneuver to wave away the odor, you release the leash">
<COND (<G? <CCOUNT ,PROTAGONIST> 0>
<ROB ,PROTAGONIST ,HERE>
<TELL " and drop everything you were holding">)>
<TELL ,PERIOD-CR>)
(T
<SETG HANGING-IN-AIR T>
<TELL
"As you grab the leash, the startled " 'BALLOON " tries to get away by
hyperinflating. Slowly, its buoyancy lifts you right ">
<COND (<FSET? ,BOOTS ,WORNBIT>
<FCLEAR ,BOOTS ,WORNBIT>
<MOVE ,BOOTS ,HERE>
<TELL "out of the " 'BOOTS>)
(T
<TELL "off the deck">)>
<TELL
"! Within moments, the Arcturian is bobbing against the ceiling, and you're
hanging two meters off the floor! (Footnote 4)" CR>
<COND (<AND <IN? ,FLOYD ,HERE>
<FSET? ,FLOYD ,ACTIVEBIT>
<NOT ,HANGING-COMMENT>>
<SETG FLOYD-SPOKE T>
<SETG HANGING-COMMENT T>
<TELL ,FLOYDS-HANGING-IN-AIR-COMMENT>)>
<RTRUE>)>)
(<VERB? REMOVE UNTIE>
<TELL
"There's no obvious way to remove the leash from" TR ,BALLOON>)
(<AND <VERB? DISCONNECT>
<OR <NOT ,PRSI>
<PRSI? ,BALLOON>>>
<PERFORM ,V?REMOVE ,LEASH>
<RTRUE>)
(<AND <VERB? DROP>
,HANGING-IN-AIR>
<SETG HANGING-IN-AIR <>>
<TELL "You drop to the deck.">
<COND (<IN? ,BALLOON ,HERE> ;"it's gone if you shoot/drill it"
<TELL
" The " D ,BALLOON " gradually floats downward until it's
back at around eye-level.">)>
<CRLF>)>>
<OBJECT PANEL
(IN LOCAL-GLOBALS)
(DESC "ceiling panel")
(FDESC ;"so it'll get printed before other DESCs"
"You can see the faint outline of a panel in the ceiling.")
(SYNONYM PANEL)
(ADJECTIVE CEILIN ROOF)
(FLAGS CONTBIT SEARCHBIT)
(CAPACITY 20)
(ACTION PANEL-F)>
<ROUTINE PANEL-F ()
<COND (<VERB? MOVE REMOVE LOWER LOOK-BEHIND>
<PERFORM ,V?OPEN ,PANEL>
<RTRUE>)>>
<OBJECT OSTRICH-NIP
(IN PANEL)
(DESC "stick of ostrich nip")
(SYNONYM STICK NIP)
(ADJECTIVE OSTRICH)
(FLAGS TAKEBIT)
(VALUE 3)
(SIZE 4)
(ACTION OSTRICH-NIP-F)>
<ROUTINE OSTRICH-NIP-F ()
<COND (<AND <VERB? DROP THROW>
<PRSO? ,OSTRICH-NIP>
<IN? ,OSTRICH ,HERE>>
<PERFORM ,V?GIVE ,OSTRICH-NIP ,OSTRICH>
<RTRUE>)>>
<ROOM TRADING-POST
(IN ROOMS)
(DESC "Trading Post")
(LDESC
"This sprawling old cargo ship, its engines long ago cannibalized for spare
parts, has been converted into a store for supplies and curios. There's
an eye-catching sign on the wall. Passageways lead in many directions, and
there's an opening in the floor.")
(NORTH TO GROCERY)
(EAST TO SALOON)
(SE TO SHADY-DANS)
(SW TO GREASY-STRAW)
(WEST TO STUDIO)
(NW TO PET-STORE)
(DOWN TO WAREHOUSE)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE SIGN)>
<OBJECT INSTRUCTION-SHEET
(IN TRADING-POST)
(DESC "instruction sheet")
(SYNONYM SHEET)
(ADJECTIVE INSTRUCTION)
(FLAGS TAKEBIT READBIT VOWELBIT)
(SIZE 1)
(TEXT
"\"FREZONE (tm) Liquid Gorzium Explosive|
Instructions for use:|
1. Insert explosive in hole of appropriate diameter.|
2. Attach detonator to explosive and timer.|
3. Set timer.|
4. Vamoose.|
NOTE: Do not expose explosive to temperatures above
150 degrees Kelvin for periods of more than 100 millichrons.\"")>
<OBJECT TWELVE-PRONG-FROMITZ-BOARD
(IN TRADING-POST)
(DESC "twelve-prong fromitz board")
(SYNONYM BOARD BOARDS PRONGS)
(ADJECTIVE TWELVE PRONG PRONGED 12-PRONG FROMITZ NUMBER)
(FLAGS TAKEBIT)
(PLATO-ASK-ABOUT
"I'm really not at all mechanically inclined. My sincerest apologies.")
(FLOYD-ASK-ABOUT
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
(GENERIC GENERIC-FROMITZ-BOARD-F)
(ACTION TWELVE-PRONG-FROMITZ-BOARD-F)>
<ROUTINE TWELVE-PRONG-FROMITZ-BOARD-F ()
<COND (<AND <ADJ-USED ,A?NUMBER ,TWELVE-PRONG-FROMITZ-BOARD>
<NOT <EQUAL? ,P-NUMBER 12>>>
<N-PRONG-BOARD>)
(<VERB? EXAMINE>
<TELL ,EXAMINE-BOARD>)
(<AND <VERB? COUNT>
<NOUN-USED ,W?PRONGS ,TWELVE-PRONG-FROMITZ-BOARD>>
<TELL "12." CR>)>>
<ROOM STUDIO
(IN ROOMS)
(DESC "Studio")
(LDESC
"This living bubble has been set up as an artist's loft. Most of the space
is taken up by a large scrap sculpture floating in the center of the bubble.
It is, of course, pretty impossible to tell how close the sculpture is to
completion. The way out is to the east.")
(EAST TO TRADING-POST)
(OUT TO TRADING-POST)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)
(ACTION STUDIO-F)>
<ROUTINE STUDIO-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,STUDIO ,TOUCHBIT>>
<NOT <EQUAL? ,VERBOSITY 0>>
,LIT>
<TELL
"Junk Yard" ,CLUTTERED-BUBBLE "littered with useless junk, all floating in a
large pile" ,AT-SECOND-GLANCE "junk pile is actually an artist's attempt at
a 91st-century-style scrap sculpture" ,ELLIPSIS>)>>
<OBJECT DIODE-J
(IN STUDIO)
(DESC "J-series hyperdiode")
(FDESC
"The most recognizable item in the sculpture is a J-series hyperdiode.")
(SYNONYM DIODE DIODES HYPERDIODE)
(ADJECTIVE J-SERIES J SERIES)
(PLATO-ASK-ABOUT
"I'm really not at all mechanically inclined. My sincerest apologies.")
(FLOYD-ASK-ABOUT
"It's a kind of a thingamabob for connecting a, you know, a whosiwhatsis.")
(FLAGS TAKEBIT)
(ACTION DIODE-J-F)>
<ROUTINE DIODE-J-F ()
<COND (<AND <VERB? WHERE FIND>
<IN? ,DIODE-J ,LOCAL-GLOBALS>>
<TELL "You burned it up!" CR>)
(<AND <VERB? COMPARE>
<EQUAL? ,DIODE-M ,PRSO ,PRSI>>
<TELL "They're identical, except for the series letter." CR>)>>
<OBJECT SCULPTURE
(IN STUDIO)
(DESC "scrap sculpture")
(SYNONYM SCULPTURE)
(ADJECTIVE 91ST-CENTURY SCRAP LARGE)
(FLAGS NDESCBBIT)
(ACTION SCULPTURE-F)>
<ROUTINE SCULPTURE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE SEARCH DIG>
<TELL "You see nothing of interest in the sculpture">
<COND (<NOT <FSET? ,DIODE-J ,TOUCHBIT>>
<TELL ", other than the diode">)>
<TELL ,PERIOD-CR>)>>
<ROOM SALOON
(IN ROOMS)
(DESC "Saloon")
(LDESC
"From your experience with tawdry, space village bars, they are crowded every
millichron of the day and night. So it's quite unusual that this saloon is
totally deserted. Despite the current solitude, you can almost hear the tinny
music, the loud voices, the fistfights. Openings lead west and northwest, and
to the east is a partially disguised exit.")
(EAST TO CASINO)
(WEST TO TRADING-POST)
(NW TO GROCERY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)>
<ROOM CASINO
(IN ROOMS)
(DESC "Casino")
(NORTH TO OPIUM-DEN IF ROULETTE-TURNED)
(WEST TO SALOON)
(UP TO FLOPHOUSE IF ROULETTE-TURNED)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)
(ACTION CASINO-F)>
<GLOBAL ROULETTE-TURNED <>>
<ROUTINE CASINO-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This dimly-lit space building once featured some plush decor, but now the room
is ratty, faded, and reeking of tobacco smoke. Deserted gambling tables fill
all six sides of the room. ">
<COND (<IN? ,ROULETTE-WHEEL ,HERE>
<TELL
"A spotlight illuminates a lone " 'ROULETTE-WHEEL ". ">)>
<TELL "The">
<COND (,ROULETTE-TURNED
<TELL "re are exits north, west, and above.">)
(T
<TELL " only exit leads west.">)>)>>
<OBJECT ROULETTE-WHEEL
(IN CASINO)
(DESC "roulette wheel")
(SYNONYM WHEEL)
(ADJECTIVE ROULETTE)
(FLAGS NDESCBIT)
(ACTION ROULETTE-WHEEL-F)>
<ROUTINE ROULETTE-WHEEL-F ()
<COND (<VERB? SET>
<COND (,ROULETTE-TURNED
<TELL ,NOTHING-HAPPENS>)
(T
<SETG ROULETTE-TURNED T>
<FCLEAR ,CASINO ,NWELDERBIT>
<SETG ROBOT-EVILNESS <+ ,ROBOT-EVILNESS 1>>
<SETG SCORE <+ ,SCORE 4>>
<TELL
"As you turn the " 'ROULETTE-WHEEL ", exits appear above you
and to the north!" CR>)>)
(<AND <VERB? SPLAY-WITH>
<PRSO? ,ROULETTE-WHEEL>
<NOT ,ROULETTE-TURNED>>
<PERFORM ,V?SET ,ROULETTE-WHEEL>
<RTRUE>)>>
<OBJECT DICE
(IN CASINO)
(DESC "pair of dice")
(SYNONYM PAIR DICE)
(FLAGS TAKEBIT PLURALBIT)
(SIZE 3)
(ACTION DICE-F)>
<GLOBAL DICE-FOOTNOTE <>>
<ROUTINE DICE-F ("AUX" NUM)
<COND (<VERB? ROLL THROW>
<COND (<NOT <ULTIMATELY-IN? ,DICE>>
<TELL ,YNH TR ,DICE>
<RTRUE>)
(<FSET? ,HERE ,WEIGHTLESSBIT>
<COND (<PROB 50>
<SET NUM 7>)
(T
<SET NUM 11>)>)
(T
<SET NUM <+ <RANDOM 6> <RANDOM 6>>>)>
<MOVE ,DICE ,HERE>
<TELL "You roll a">
<COND (<EQUAL? .NUM 8 11>
<TELL "n">)>
<TELL " " N .NUM>
<COND (<AND <FSET? ,HERE ,WEIGHTLESSBIT>
<NOT ,DICE-FOOTNOTE>>
<SETG DICE-FOOTNOTE T>
<TELL " (Footnote 1)">)>
<TELL ,PERIOD-CR>)
(<VERB? SHAKE>
<TELL "Shaken." CR>)>>
<ROOM OPIUM-DEN
(IN ROOMS)
(DESC "Opium Den")
(LDESC
"This is a tiny room, smelling strongly of various synthesized opium variants.
There's a sign on the wall and a door to the south.")
(SOUTH TO CASINO)
(OUT TO CASINO)
(GLOBAL VILLAGE SIGN)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)>
<ROOM FLOPHOUSE
(IN ROOMS)
(DESC "Flophouse")
(DOWN TO CASINO)
(OUT TO CASINO)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE BED)
(ACTION FLOPHOUSE-F)>
<ROUTINE FLOPHOUSE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You've always wondered what a back-room zero-gee space village bordello was
like. Well, now you know. ">
<COND (<IN? ,LOCKER ,HERE> ;"you can shoot it"
<TELL "Next to the nearest bed is a locker. ">)>
<TELL "The exit leads down.">)>>
<OBJECT LOCKER
(IN FLOPHOUSE)
(DESC "locker")
(SYNONYM LOCKER)
(FLAGS CONTBIT SEARCHBIT NDESCBIT)
(CAPACITY 100)>
<OBJECT SPACESUIT
(IN LOCKER)
(DESC "space suit")
(SYNONYM SUIT)
(ADJECTIVE SPACE)
(FLAGS WEARBIT TAKEBIT)
(SIZE 40)
(ACTION SPACESUIT-F)>
<ROUTINE SPACESUIT-F ()
<COND (<AND <VERB? TAKE-OFF>
<OR <EQUAL? ,HERE ,VACUUM-STORAGE>
<AND <EQUAL? ,HERE ,AIRLOCK>
<FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>>>>
<VACUUM-DEATH>)>>
<ROUTINE VACUUM-DEATH ()
<JIGS-UP
"Your lungs rupture, not to mention all sorts of even nastier stuff that
you're lucky if you can't imagine.">>
<ROOM GRIMY-PASSAGE
(IN ROOMS)
(DESC "Grimy Passage")
(LDESC
"This filthy north-south tube is quite a change from the gleaming,
well-scrubbed metal of the space station.")
(NORTH PER VILLAGE-BOUNDARY-F)
(SOUTH TO MAIN-STREET)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE IRIS-HATCH)>
<ROOM MAIN-STREET
(IN ROOMS)
(DESC "Main Street")
(LDESC
"This large spacetube is the main thoroughfare of a space village which has
sprung up here on the outskirts of the space station, which lies to the north.
Rather than the bustling thoroughfare you might expect, however, there isn't
a soul in sight. Openings lead up, northeast, south and west. To the southeast,
the \"street\" narrows and ramps downward.")
(NORTH TO GRIMY-PASSAGE)
(NE TO GREASY-STRAW)
(SE TO ALLEY)
(SOUTH TO BANK)
(WEST TO TRAVEL-AGENCY)
(UP TO MAYORS-OFFICE)
(DOWN TO ALLEY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)>
<ROOM GREASY-STRAW
(IN ROOMS)
(DESC "Greasy Straw")
(NE TO TRADING-POST)
(SW TO MAIN-STREET)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL SIGN VILLAGE)
(ACTION GREASY-STRAW-F)>
<ROUTINE GREASY-STRAW-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-END>
<IN? ,NECTAR ,LOCAL-GLOBALS>
<PROB 33>>
<TELL " You catch a whiff of something mouth-watering." CR>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
,RESTAURANT-SIGN-TEXT " lies the sign over the counter of this deserted dive.
Exits lead northeast and southwest.">)>>
<OBJECT COUNTER
(IN GREASY-STRAW)
(DESC "counter")
(SYNONYM COUNTER)
(FLAGS NDESCBIT CONTBIT SURFACEBIT SEARCHBIT)
(CAPACITY 100)
(ACTION COUNTER-F)>
<ROUTINE COUNTER-F ()
<COND (<AND <VERB? LOOK-UNDER LOOK-BEHIND SEARCH EXAMINE HIDE>
<NOT <FSET? ,NECTAR ,TOUCHBIT>>>
<PERFORM ,V?SEARCH ,GLOBAL-ROOM>
<RTRUE>)
(<VERB? LOOK-OVER>
<TELL "There's a sign hanging over the counter." CR>)>>
<OBJECT NECTAR
(IN LOCAL-GLOBALS)
(DESC "cup of nectar")
(SYNONYM CUP NECTAR FOOD)
(ADJECTIVE RAMOSIAN FIRE)
(FLAGS TAKEBIT)
(FOOD-DESC " fire nectar -- thick and warming")
(GENERIC GENERIC-FOOD-F)
(ACTION NECTAR-F)>
<ROUTINE NECTAR-F ()
<COND (<AND <VERB? THROW POUR EMPTY>
<PRSO? ,NECTAR>>
<MESS "nectar">
<ANTI-LITTER ,NECTAR>)
(<AND <VERB? LOOK-INSIDE>
<NOUN-USED ,W?CUP ,NECTAR>>
<TELL "Yup. Nectar." CR>)
(<VERB? REACH-IN TOUCH EXAMINE TASTE>
<TELL "The nectar is warm and thick." CR>)
(<VERB? EAT-FROM>
<PERFORM ,V?EAT ,NECTAR>
<RTRUE>)
(<AND <VERB? FIND>
<IN? ,NECTAR ,LOCAL-GLOBALS>
<EQUAL? ,HERE ,GREASY-STRAW>>
<PERFORM ,V?SEARCH ,GLOBAL-ROOM>
<RTRUE>)>>
<ROUTINE GENERIC-FOOD-F ()
<COND (<AND <VERB? FIND>
<EQUAL? <GET ,P-NAMW 0> ,W?FOOD>>
<PERFORM ,V?SEARCH ,GLOBAL-ROOM>
<RETURN ,NOT-HERE-OBJECT>)>>
<ROOM MAYORS-OFFICE
(IN ROOMS)
(DESC "Mayor's Office")
(LDESC
"This permanently-docked one-man ship serves as the office for Hizzoner the
Mayor, the unofficial leader of the village. Main Street is below.")
(DOWN TO MAIN-STREET)
(OUT TO MAIN-STREET)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<OBJECT BOOK
(IN MAYORS-OFFICE)
(DESC "textbook")
(FDESC
"You spot a copy of a book entitled \"Deciphering Alien Speech.\"")
(SYNONYM TEXTBOOK BOOK)
(ADJECTIVE TEXT)
(FLAGS TAKEBIT READBIT)
(SIZE 8)
(ACTION BOOK-F)>
<ROUTINE BOOK-F ()
<COND (<VERB? OPEN LOOK-INSIDE READ EXAMINE>
<COND (<IN? ,PAPER ,BOOK>
<MOVE ,PAPER ,HERE>
<TELL
"As you open the book, a " 'PAPER " flutters out!" CR>)
(T
<TELL
"The book is a technical linguistics text, far beyond your understanding
of the subject." CR>)>)
(<VERB? CLOSE>
<TELL "Closed." CR>)
(<AND <VERB? PUT>
<PRSO? ,PAPER>>
<MOVE ,PAPER ,BOOK>
<TELL "Done." CR>)>>
<OBJECT PAPER
(IN BOOK)
(DESC "piece of paper")
(SYNONYM PAPER PIECE)
(FLAGS TAKEBIT READBIT)
(SIZE 1)
(TEXT
"\"bttr/salty/bttr softness/weakness|
sweet/v.sour Hunji (noun form)|
blnd/salty/sour Zeenak (adj form)|
blnd/bttr air/atmosphere|
sour/blnd/blnd/sour died/failed|
sweet/v.sweet legal destruction|
(sabotage?)|
v.salty however|
sour/blnd/sour/sweet turn back|
blnd (def. article?)|
v.sweet/blnd/sour I have shined|
light upon|
slightly-sour solitary|
v.sweet/v.salty element/substance|
sweet/slightly-bttr brethren (adj)|
blnd/sour/v.sour is souring|
v.salty/salty/sour bad/evil/deadly|
radiations|
spicy-hot/blnd/blnd 78 (?) 7/8 (?)|
bttr/sour/v.sour weapon (possesv.)|
v.sweet (emphasis mark?)\""
;"old TEXT below didn't work on 40-column computers"
;"\"(bitter/salty/bitter) softness/weakness|
(sweet/very-sour) Hunji (noun form)|
(bland/salty/sour) Zeenak (adj form)|
(bland/bitter) air/atmosphere|
(very-salty) however|
(sweet/very-sweet) legal destruction (sabotage?)|
(very-sweet/bland/sour) I have shined light upon|
(sour/bland/sour/sweet) turn back|
(bland) (definite article?)|
(slightly-sour) solitary|
(very-sweet/very-salty) element/substance|
(sweet/slightly-bitter) brethren (adj form)|
(sour/bland/bland/sour) died/failed|
(bland/sour/very-sour) is souring/turning bad|
(spicy-hot/bland/bland) (a number) (78? 7/8?)|
(bitter/sour/very-sour) weapon (poss form)|
(very-sweet) (emphasis mark?)|
(very-salty/salty/sour) bad/evil/deadly radiation (plur form)\"")>
<ROOM BANK
(IN ROOMS)
(DESC "Bank")
(LDESC
"This is a branch office of the First Galactic Bank of Nebulon. There are
doors to the north and northwest.")
(NORTH TO MAIN-STREET)
(NW TO TRAVEL-AGENCY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)>
<OBJECT PLATINUM-DETECTOR
(IN BANK)
(DESC "platinum detector")
(SYNONYM DETECTOR)
(ADJECTIVE PLATINUM)
(FLAGS TAKEBIT LIGHTBIT)
(SIZE 15)
(ACTION PLATINUM-DETECTOR-F)>
<ROUTINE PLATINUM-DETECTOR-F ()
<COND (<VERB? ON>
<QUEUE I-PLATINUM-DETECTOR -1>
<RFALSE>)
(<VERB? OFF>
<DEQUEUE I-PLATINUM-DETECTOR>
<SETG DETECTOR-COUNTER 0>
<RFALSE>)
(<AND <VERB? TAKE>
<G? ,DETECTOR-COUNTER 49>>
<COND (<G? ,DETECTOR-COUNTER 99>
<TELL "Ouch! The detector is too hot to pick up!" CR>)
(<EQUAL? <ITAKE> ,M-FATAL <>>
<RTRUE>)
(T
<TELL
"As you pick up the detector, you notice that is feels ">
<COND (<G? ,DETECTOR-COUNTER 75>
<TELL "very ">)>
<TELL "warm." CR>)>)
(<AND <VERB? FIND>
<EQUAL? ,HERE ,BARBERSHOP>
<NOT ,MIRROR-BROKEN>
<ADJ-USED ,A?PLATINUM ,PLATINUM-DETECTOR>
<EQUAL? <GET ,P-NAMW 0> <>>
<ULTIMATELY-IN? ,PLATINUM-DETECTOR>
<FSET? ,PLATINUM-DETECTOR ,ACTIVEBIT>>
<PERFORM ,V?FOLLOW ,PLATINUM-DETECTOR>
<RTRUE>)
(<AND <VERB? FOLLOW>
<EQUAL? ,HERE ,BARBERSHOP>
<NOT ,MIRROR-BROKEN>
<ULTIMATELY-IN? ,PLATINUM-DETECTOR>
<FSET? ,PLATINUM-DETECTOR ,ACTIVEBIT>>
<TELL
"The beeping is strongest as you approach the mirror." CR>)>>
<GLOBAL DETECTOR-COUNTER 0>
;"routine I-PLATINUM-DETECTOR moved to INTERRUPTS file"
<ROOM TRAVEL-AGENCY
(IN ROOMS)
(DESC "Travel Agency")
(LDESC
"This small space bubble, with openings to the east and southeast, is decorated
with posters of exotic locales, but it's hard to imagine that anyone in this
rundown spacetown would be able to afford an interstellar pleasure jaunt.")
(EAST TO MAIN-STREET)
(SE TO BANK)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE)
(THINGS <PSEUDO (<> POSTER TRAVEL-AGENCY-POSTER-F)>)>
<ROUTINE TRAVEL-AGENCY-POSTER-F ()
<COND (<VERB? READ EXAMINE>
<TELL
"The posters show a sunset on \"Historic Ramos II,\" the steel and zynoid
towers of \"Varshon, the Galactic Capital,\" and scantily-clad beauties
cavorting on the beaches of \"The Pleasure Moons of Mazzotta.\"" CR>)>>
;<ROOM INSURANCE-OFFICE
(IN ROOMS)
(DESC "Insurance Office")
(LDESC
"Since there's no one here to milk you for some worthless life insurance
or spaceship insurance, you might as well use the exits to the north or
northeast.")
(NORTH TO TRAVEL-AGENCY)
(NE TO BANK)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)>
<ROOM ALLEY
(IN ROOMS)
(DESC "Alley")
(LDESC
"There's no doubt that \"alley\" is the best word to describe this winding,
garbage-strewn connector. Dark passages branch off in almost every direction,
and the alley slopes upward to the northwest.")
(NORTH TO MISSIONARY)
(NE TO WAREHOUSE)
(EAST TO JUNK-YARD)
(SE TO DOC-SCHUSTER)
(SOUTH TO LOAN-SHARK)
(SW TO PAWN-SHOP)
(WEST "Well, there are openings in ALMOST every direction.")
(NW TO MAIN-STREET)
(UP TO MAIN-STREET)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL GARBAGE VILLAGE)>
<ROOM MISSIONARY
(IN ROOMS)
(DESC "Missionary")
(LDESC
"This is the home of some kook, a proselytizer of the fringe religion which
believes that humankind has angered God by venturing out into space, and the
universe will end sometime next week. Next week never seems to come, but there
are enough kooks in the galaxy to keep the belief going. You can exit to the
south.")
(SOUTH TO ALLEY)
(OUT TO ALLEY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<ROOM WAREHOUSE
(IN ROOMS)
(DESC "Warehouse")
(UP TO TRADING-POST)
(SW TO ALLEY)
(DOWN TO AIRLOCK IF INNER-AIRLOCK-DOOR IS OPEN)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL SIGN VILLAGE INNER-AIRLOCK-DOOR AIRLOCK-OBJECT)
(ACTION WAREHOUSE-F)>
<ROUTINE WAREHOUSE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You have entered a smallish warehouse. A red sign is mounted over a door, ">
<OPEN-CLOSED ,INNER-AIRLOCK-DOOR>
<TELL
", leading down; there are other openings
in the ceiling and the southwest wall.">)>>
<OBJECT INNER-AIRLOCK-DOOR
(IN LOCAL-GLOBALS)
(DESC "inner door")
(SYNONYM DOOR HATCH)
(ADJECTIVE INNER UPPER AIRLOCK)
(FLAGS DOORBIT VOWELBIT)
(GENERIC GENERIC-AIRLOCK-DOOR-F)
(ACTION INNER-AIRLOCK-DOOR-F)>
<ROUTINE INNER-AIRLOCK-DOOR-F ()
<COND (<AND <VERB? OPEN>
<NOT <FSET? ,INNER-AIRLOCK-DOOR ,OPENBIT>>
<FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>>
<TELL ,WONT-BUDGE>)>>
<OBJECT OUTER-AIRLOCK-DOOR
(IN LOCAL-GLOBALS)
(DESC "outer door")
(SYNONYM DOOR HATCH)
(ADJECTIVE OUTER LOWER AIRLOCK)
(FLAGS DOORBIT VOWELBIT)
(GENERIC GENERIC-AIRLOCK-DOOR-F)
(ACTION OUTER-AIRLOCK-DOOR-F)>
<ROUTINE OUTER-AIRLOCK-DOOR-F ("AUX" (X <>) (N <>) (OBJ-FLUSHED <>))
<COND (<AND <VERB? OPEN>
<NOT <FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>>>
<COND (<FSET? ,INNER-AIRLOCK-DOOR ,OPENBIT>
<TELL ,WONT-BUDGE>)
(T
<TELL
"As the door opens, the air in the lock whooshes out into the vacuum of space">
<COND (<NOT <FSET? ,SPACESUIT ,WORNBIT>>
<TELL ". ">
<VACUUM-DEATH>)
(<NOT <FSET? ,BOOTS ,WORNBIT>>
<TELL ", taking you along for the ride.">
<LOST-IN-SPACE>)
(T
<FSET ,OUTER-AIRLOCK-DOOR ,OPENBIT>
<COND (<EQUAL? <META-LOC ,EXPLOSIVE> ,HERE>
<DEQUEUE I-EXPLOSIVE-MELT>)>
<SET X <FIRST? ,AIRLOCK>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)>
<SET N <NEXT? .X>>
<COND (<NOT <EQUAL? .X ,PROTAGONIST
,OSTRICH
,BALLOON>>
<REMOVE .X>
<SET OBJ-FLUSHED T>)>
<SET X .N>>
<COND (.OBJ-FLUSHED
<TELL
", flushing everything in the airlock">)>
<TELL ,PERIOD-CR>)>
<COND (<IN? ,OSTRICH ,HERE>
<REMOVE ,OSTRICH>
<TELL ,PATHETIC-SQUAWK
" as it is swept into space, quickly dwindling from sight." CR>)>
<COND (<IN? ,BALLOON ,HERE>
<REMOVE ,BALLOON>
<REMOVE ,LEASH>
<TELL
" The " 'BALLOON ", unable to adjust to the sudden drop in pressure,
explodes into a puff of hydrogen that immediately vanishes!" CR>)>
<COND (<AND <ULTIMATELY-IN? ,FOOD-KIT>
<EQUAL? ,FOOD-KIT <LOC ,ORANGE-GOO>
<LOC ,GRAY-GOO>>
<FSET? ,FOOD-KIT ,OPENBIT>>
<TELL " ">
<SPACE-FOOD>)>
<SPACE-LIQUID ,SOUP>
<SPACE-LIQUID ,COFFEE>
<SPACE-LIQUID ,NECTAR>
<RTRUE>)>)
(<AND <VERB? CLOSE>
<EQUAL? ,HERE ,AIRLOCK>
<FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>>
<FCLEAR ,OUTER-AIRLOCK-DOOR ,OPENBIT>
<COND (<ULTIMATELY-IN? ,EXPLOSIVE ,HERE>
;<COND (<OR <NOT <IN? ,EXPLOSIVE ,BOTTLE>>
<EQUAL? ,FROZEN-LEVEL 0>>
<QUEUE I-EXPLOSIVE-MELT 100>)>
<QUEUE I-EXPLOSIVE-MELT -1>)>
;<COND (<ULTIMATELY-IN? ,BOTTLE ,HERE>
<DEQUEUE I-FREEZE-CARBON-DIOXIDE>
<COND (<G? ,FROZEN-LEVEL 25>
<SETG FROZEN-LEVEL 25>)>
<QUEUE I-MELT-CARBON-DIOXIDE -1>)>
<TELL
"As soon as the door is closed, air hisses back into the airlock." CR>)>>
<ROUTINE GENERIC-AIRLOCK-DOOR-F ()
<COND (<VERB? CLOSE>
<COND (<FSET? ,INNER-AIRLOCK-DOOR ,OPENBIT>
,INNER-AIRLOCK-DOOR)
(<FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>
,OUTER-AIRLOCK-DOOR)
(T
<RFALSE>)>)
(T
<RFALSE>)>>
<ROOM AIRLOCK
(IN ROOMS)
(DESC "Airlock")
(UP TO WAREHOUSE IF INNER-AIRLOCK-DOOR IS OPEN)
(IN TO WAREHOUSE IF INNER-AIRLOCK-DOOR IS OPEN)
(DOWN TO VACUUM-STORAGE IF OUTER-AIRLOCK-DOOR IS OPEN)
(OUT TO VACUUM-STORAGE IF OUTER-AIRLOCK-DOOR IS OPEN)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE INNER-AIRLOCK-DOOR OUTER-AIRLOCK-DOOR AIRLOCK-OBJECT)
(ACTION AIRLOCK-F)>
<ROUTINE AIRLOCK-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This is a cramped airlock with doors above and below you. ">
<COND (<AND <NOT <FSET? ,INNER-AIRLOCK-DOOR ,OPENBIT>>
<NOT <FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>>>
<TELL "Neither door">)
(T
<TELL "The door ">
<COND (<FSET? ,INNER-AIRLOCK-DOOR ,OPENBIT>
<TELL "above">)
(T
<TELL "below">)>)>
<TELL " is open.">)>>
<OBJECT AIRLOCK-OBJECT
(IN LOCAL-GLOBALS)
(DESC "airlock")
(SYNONYM AIRLOCK)
(FLAGS VOWELBIT)
(ACTION AIRLOCK-OBJECT-F)>
<ROUTINE AIRLOCK-OBJECT-F ()
<COND (<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,AIRLOCK>>
<V-LOOK>)
(<VERB? ENTER>
<COND (<EQUAL? ,HERE ,WAREHOUSE>
<DO-WALK ,P?DOWN>)
(<EQUAL? ,HERE ,VACUUM-STORAGE>
<DO-WALK ,P?UP>)
(T
<TELL ,LOOK-AROUND>)>)
(<VERB? EXIT LEAVE DISEMBARK>
<COND (<EQUAL? ,HERE ,AIRLOCK>
<V-WALK-AROUND>)
(T
<TELL ,LOOK-AROUND>)>)
(<VERB? OPEN CLOSE>
<COND (<EQUAL? ,HERE ,AIRLOCK>
<TELL "There are two doors." CR>)
(T
<PERFORM ,PRSA <COND (<EQUAL? ,HERE ,WAREHOUSE>
,INNER-AIRLOCK-DOOR)
(<EQUAL? ,HERE ,VACUUM-STORAGE>
,OUTER-AIRLOCK-DOOR)>>
<RTRUE>)>)>>
<ROUTINE LOST-IN-SPACE ()
<JIGS-UP "||
Lost in Space|
You spend several chrons tumbling into the starry depths, the station
dwindling to a dot of light behind you. Eventually, your air runs out.">>
<ROOM VACUUM-STORAGE
(IN ROOMS)
(DESC "In Space")
(UP TO AIRLOCK IF OUTER-AIRLOCK-DOOR IS OPEN)
(IN TO AIRLOCK IF OUTER-AIRLOCK-DOOR IS OPEN)
(FLAGS RLANDBIT WEIGHTLESSBIT NWELDERBIT)
(GLOBAL VILLAGE OUTER-AIRLOCK-DOOR AIRLOCK-OBJECT)
(VALUE 3)
(ACTION VACUUM-STORAGE-F)>
<ROUTINE VACUUM-STORAGE-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This area outside the airlock is being used for vacuum storage, in much the
same way that your dad kept beer cold in the back yard during winters on
Gallium. In fact, the villagers usually refer to this place as the \"vac
yard.\" Only the " 'BOOTS ", clinging to the outer skin of the warehouse,
is preventing you from floating off into space. Tethered all around you:
those items in the Trading Post's inventory that, for reasons of temperature
or anti-corrosion, must be stored here in space. The door to the airlock,
\"above\" you, is ">
<OPEN-CLOSED ,OUTER-AIRLOCK-DOOR>
<TELL ".">)>>
<OBJECT EXPLOSIVE
(IN VACUUM-STORAGE)
(DESC "explosive")
(FDESC
"As you swivel the headlamp around, you discover a tiny cylinder
with an even tinier label.")
(SYNONYM EXPLOSIVE CYLIND LABEL)
(ADJECTIVE EXPLOSIVE FREZONE SMALL)
(FLAGS TAKEBIT VOWELBIT READBIT)
(SIZE 3)
(TEXT
"\"FREZONE (tm) Liquid Gorzium Explosive. For use only by licensed
demolitionist. Instruction sheet available from vendor; read
thoroughly before use!\"")
(ACTION EXPLOSIVE-F)>
<ROUTINE EXPLOSIVE-F ()
<COND (<VERB? EXAMINE>
<COND (<NOUN-USED ,W?LABEL ,EXPLOSIVE>
<PERFORM ,V?READ ,EXPLOSIVE>
<RTRUE>)>
<TELL
"The explosive is a small cylinder about the size and shape of a pencil.
It has a tiny label.">
<COND (<G? ,MELT-COUNTER 130>
<DESCRIBE-EXPLOSIVE>)
(T
<CRLF>)>)
;(<AND <VERB? TAKE PUT DROP>
<PRSO? ,EXPLOSIVE>
<FSET? ,EXPLOSIVE ,TRYTAKEBIT>>
<TELL
"The explosive is currently trapped in the middle of a block of ice!" CR>)
;(<AND <VERB? TAKE>
<IN? ,EXPLOSIVE ,BOTTLE>
<G? ,FROZEN-LEVEL 0>>
;"explosive is in liquid CO2"
<COND (<EQUAL? <ITAKE> ,M-FATAL <>>
<RTRUE>)
(T
<QUEUE I-EXPLOSIVE-MELT 100>
<RFALSE>)>)
(<AND <VERB? PUT>
<PRSI? ,HEATING-CHAMBER>>
<TELL "The explosive " ,SUBLIMES-INTO-FREZONE>
<DEQUEUE I-EXPLOSIVE-MELT>
<REMOVE-CAREFULLY ,EXPLOSIVE>
<CRLF>)
(<AND <VERB? DISCONNECT>
<NOT ,PRSI>
,EXPLOSIVE-CONNECTED>
<PERFORM ,V?DISCONNECT ,EXPLOSIVE ,DETONATOR>
<RTRUE>)
;(<AND <VERB? CONNECT>
<IN? ,EXPLOSIVE ,BOTTLE>
<NOT <FSET? ,BOTTLE ,OPENBIT>>>
<DO-FIRST "open the bottle">)>>
<GLOBAL MELT-COUNTER 0>
;"routine I-EXPLOSIVE-MELT moved to INTERRUPTS file"
<ROUTINE DESCRIBE-EXPLOSIVE ()
<TELL " The explosive ">
<COND (<G? ,MELT-COUNTER 170>
<TELL "is melting like a wax candle under a flame.">)
(<G? ,MELT-COUNTER 130>
<TELL "seems to be getting softer and losing its shape.">)>
<CRLF>>
<ROOM PAWN-SHOP
(IN ROOMS)
(DESC "Pawn Shop")
(LDESC
"The three balls hanging by the (northeastern) entrance to this space hut
indicate that a villager down on his or her luck could come here to hock
some valuable possession.")
(NE TO ALLEY)
(OUT TO ALLEY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<OBJECT SPRAY-CAN
(IN PAWN-SHOP)
(DESC "spray can")
(FDESC
"Some destitute spacer was so hard up that he or she actually pawned a
spray can. It's sitting here in the shop, and has some lettering on it.")
(SYNONYM CAN)
(ADJECTIVE SPRAY)
(FLAGS TAKEBIT READBIT)
(GENERIC GENERIC-CAN-F)
(SIZE 8)
(ACTION SPRAY-CAN-F)>
<ROUTINE SPRAY-CAN-F ()
<COND (<VERB? SHAKE>
<COND (<G? ,SPRAY-COUNTER 0>
<TELL "\"Slosh.\"" CR>)
(T
<TELL "The can seems to be empty." CR>)>)
(<VERB? READ>
<TELL
"The lettering on the spray can reads:|
\"E-Z SPRAY SPORZ (tm)|
A mixture of high-quality spores|
Lowest gas-inducement levels of any brand!\"" CR>)
(<VERB? SPRAY>
<COND (<NOT <ULTIMATELY-IN? ,SPRAY-CAN>>
<TELL ,YNH TR ,SPRAY-CAN>
<RTRUE>)
(,PRSI
<TELL
"The nozzle of the can isn't very directional; rather than spraying something
in particular, it seems designed to produce a broad mist." CR>
<RTRUE>)
(<EQUAL? ,SPRAY-COUNTER 0>
<TELL ,NOTHING-HAPPENS>
<RTRUE>)>
<SETG SPRAY-COUNTER <- ,SPRAY-COUNTER 1>>
<TELL "A dusty mist puffs from the can and begins dissipating">
<COND (<IN? ,BALLOON ,HERE>
<TELL
". The " 'BALLOON " begins darting around the room,
its mouth absurdly wide open">)
(<AND <EQUAL? ,HERE ,PET-STORE>
<IN? ,BALLOON ,CAGE>>
<TELL
". The " 'BALLOON " puffs wildly around the cage,
trying to get at the yummy spores">)
(<AND <NEXT-ROOM? ,BALLOON>
<NOT <EQUAL? ,HERE ,BRIG ,ARMORY>>>
<TELL ". The " 'BALLOON>
<COND (<AND <EQUAL? ,HERE ,CHAPEL>
<FSET? ,ETERNAL-FLAME ,ONBIT>>
<TELL
" appears in the doorway, stops, and hastily puffs away." CR>
<RTRUE>)
(T
<TELL
" farts in, hungrily gobbling up the spores">)>
<COND (<OR ,CROSSED-BOUNDARY
<IN? ,BALLOON ,ELEVATOR>
<EQUAL? ,HERE ,ELEVATOR>>
<TELL
". As the " 'BALLOON " crosses the boundary ">
<COND (,CROSSED-BOUNDARY
<TELL
"between the Command Module and the village">)
(T
<TELL "of the " 'ELEVATOR-SHAFT>)>
<TELL ", it is caught unawares by the sudden ">
<COND (<OR <EQUAL? ,CROSSED-BOUNDARY 1>
<EQUAL? ,HERE ,ELEVATOR>>
<TELL "lack of gravity, but soon">)
(T
<TELL
"presence of gravity. It sinks almost to the floor before it">)>
<TELL " adjusts">)>
<MOVE ,BALLOON ,HERE>
<MOVE ,LEASH ,HERE>
<SETG CROSSED-BOUNDARY 0>)>
<COND (,HANGING-IN-AIR
<TELL
". Like an epileptic yo-yo, you are flung against the ceiling, floor,
and most of the walls">)>
<TELL ,PERIOD-CR>)>>
<ROUTINE GENERIC-CAN-F ()
<COND (<VERB? SPRAY>
<RETURN ,SPRAY-CAN>)>>
<GLOBAL SPRAY-COUNTER 12>
<GLOBAL CROSSED-BOUNDARY 0>
<ROUTINE NEXT-ROOM? (OBJ "AUX" (NEXT-DOOR <>) (P 0) TEE L) ;"is OBJ next door?"
<REPEAT ()
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RETURN>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET TEE <GETPT ,HERE .P>>
<SET L <PTSIZE .TEE>>
<COND (<EQUAL? .L ,UEXIT ,CEXIT ,DEXIT>
<COND (<IN? .OBJ <GETB .TEE 0>>
<SET NEXT-DOOR T>
<RETURN>)>)>)>>
<COND (.NEXT-DOOR
<RTRUE>)
(<AND <EQUAL? ,HERE ,MAKESHIFT-CONNECTOR>
<IN? .OBJ ,EAST-CONNECTION>>
<SETG CROSSED-BOUNDARY 1>
<RTRUE>)
(<AND <EQUAL? ,HERE ,EAST-CONNECTION>
<IN? .OBJ ,MAKESHIFT-CONNECTOR>>
<SETG CROSSED-BOUNDARY 2>
<RTRUE>)
(<AND <EQUAL? ,HERE ,GRIMY-PASSAGE>
<IN? .OBJ ,SOUTH-CONNECTION>>
<SETG CROSSED-BOUNDARY 1>
<RTRUE>)
(<AND <EQUAL? ,HERE ,SOUTH-CONNECTION>
<IN? .OBJ ,GRIMY-PASSAGE>>
<SETG CROSSED-BOUNDARY 2>
<RTRUE>)
(<AND <EQUAL? ,HERE ,SPACETRUCK>
<IN? .OBJ ,DOCKING-BAY-2>>
<RTRUE>)
(<AND <GLOBAL-IN? ,CALL-BUTTON ,HERE>
<IN? .OBJ ,ELEVATOR>
<EQUAL? <GETP ,HERE ,P?LEVEL> ,ELEVATOR-LEVEL>>
<RTRUE>)
(<AND <EQUAL? ,HERE ,ELEVATOR>
<GLOBAL-IN? ,CALL-BUTTON <LOC .OBJ>>
<EQUAL? <GETP <META-LOC .OBJ> ,P?LEVEL> ,ELEVATOR-LEVEL>>
<RTRUE>)
(T
<RFALSE>)>>
<ROOM LOAN-SHARK
(IN ROOMS)
(DESC "Loan Shark")
(LDESC
"This is a dilapidated vessel that some seedy loan shark has moored on
the south side of the alley.")
(NORTH TO ALLEY)
(OUT TO ALLEY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)>
<OBJECT STRONG-BOX
(IN LOAN-SHARK)
(DESC "strong box")
(FDESC
"A fairly sturdy strong box is fastened to the floor. Or maybe the ceiling.
One can never be sure without gravity.")
(SYNONYM BOX LOCK)
(ADJECTIVE STRONG FAIRLY STURDY)
(FLAGS TRYTAKEBIT LOCKEDBIT)
(ACTION STRONG-BOX-F)>
<ROUTINE STRONG-BOX-F ()
<COND (<VERB? TAKE MOVE RAISE>
<TELL "The " 'STRONG-BOX " is fastened down." CR>)
(<VERB? EXAMINE>
<TELL "The box has a HUGE lock">
<COND (<IN? ,DRILLED-HOLE ,HERE>
<TELL ". There's a hole in the box">
<DESCRIBE-BIT-SIZE ,HOLE-SIZE>)>
<TELL ,PERIOD-CR>)
(<VERB? OPEN UNLOCK LOOK-INSIDE>
<TELL
"The lock on the " 'STRONG-BOX " is only SLIGHTLY
smaller than an average asteroid." CR>)
(<VERB? PICK>
<TELL "You have neither the tools nor the expertise." CR>)
(<VERB? SHOOT>
<REMOVE ,STRONG-BOX>
<MOVE ,COIN ,HERE>
<THIS-IS-IT ,COIN>
<TELL
"The " 'STRONG-BOX " is vaporized, leaving a solitary coin!" CR>)
(<VERB? DRILL>
<MAKE-HOLE-WITH-DRILL ,STRONG-BOX>)>>
<OBJECT COIN
(DESC "coin")
(SYNONYM COIN GALAKMID)
(FLAGS TAKEBIT READBIT)
(VALUE 5)
(SIZE 2)
(TEXT
"\"ONE GALAKMID|
Third Galactic Union\"")>
<ROOM DOC-SCHUSTER
(IN ROOMS)
(DESC "\"Doc\" Schuster's")
(LDESC
"This physician's bubble is owned by the village quack, known to his friends
as \"Doc\" Schuster, but known to the vast majority of the villagers as
Schuster the Shyster. There's a small hole in the wall, probably the opening
for a disposal chute. The Doc is out, and in this case, out is northwest.")
(NW TO ALLEY)
(OUT TO ALLEY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT NWELDERBIT)
(GLOBAL VILLAGE)
(ACTION DOC-SCHUSTER-F)
(THINGS <PSEUDO (SMALL HOLE DOC-HOLE-F)>)>
<ROUTINE DOC-SCHUSTER-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<SETG SNIFFED <>>)
(<AND <EQUAL? .RARG ,M-END>
<IN? ,OSTRICH ,HERE>
<ULTIMATELY-IN? ,OSTRICH-NIP ,PROTAGONIST>
<NOT ,SNIFFED>>
<SETG SNIFFED T>
<TELL " ">
<PERFORM ,V?SHOW ,OSTRICH-NIP ,OSTRICH>)>>
<ROUTINE DOC-HOLE-F ()
<COND (<AND <VERB? PUT>
<PRSI? ,PSEUDO-OBJECT>>
<COND (<G? <GETP ,PRSO ,P?SIZE> 5>
<DOESNT-FIT "hole">)
(T
<TELL
"With a \"fwoomp!\"" T ,PRSO " is sucked out of sight.">
<REMOVE-CAREFULLY ,PRSO>
<CRLF>)>)
(<VERB? REACH-IN SEARCH>
<TELL
"Your hand feels as though it is being tugged further into the hole. Not
unusual, for a disposal hole." CR>)
(<VERB? EXAMINE ENTER MEASURE>
<TELL "The hole is only twenty centimeters or so across." CR>)
(<VERB? LOOK-INSIDE>
<TELL ,ONLY-BLACKNESS>)>>
<GLOBAL SNIFFED <>>
<GLOBAL OSTRICH-FOOTNOTE <>>
<OBJECT OSTRICH
(IN DOC-SCHUSTER)
(DESC "ostrich")
(FDESC "There is a large pile of intoxicated ostrich here.")
(SYNONYM OSTRICH PET BIRD PILE)
(ADJECTIVE LARGE INTOXICATED)
(FLAGS VOWELBIT TOUCHBIT)
(ACTION OSTRICH-F)>
<ROUTINE OSTRICH-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's a handsome, full-grown ostrich, nearly three meters tall.
As with all ostriches, half its height is its neck">
<COND (<NOT <FSET? ,OSTRICH ,TOUCHBIT>>
<TELL
". The ostrich looks to be asleep, or unconscious, or drunk">)>
<TELL ,PERIOD-CR>)
(<VERB? SHOOT>
<REMOVE ,OSTRICH>
<TELL
"The ostrich gives the last of a generous lifetime's supply of squawks
before being consumed in fiery zapgun death." CR>)
(<NOT <FSET? ,OSTRICH ,TOUCHBIT>>
<COND (<VERB? SCARE>
<TELL "The ostrich is unconscious!" CR>)
(<VERB? ALARM>
<TELL
"Until that nip wears off, you'd have more luck trying to wake ">
<COND (<FSET? ,ALIEN-SHIP ,TOUCHBIT>
<TELL "that skeleton in the alien ship">)
(T
<TELL "the dead">)>
<TELL ,PERIOD-CR>)
(<VERB? DRILL>
<TELL
"Such shocking animal abuse will not be tolerated! A report about your action
is now speeding at hyperlight speeds to the headquarters of the ASPCIO
(Avid Society for the Prevention of Cruelty to Intoxicated Ostriches)." CR>)
(T
<RFALSE>)>)
(<AND <VERB? SHOW>
<PRSO? ,OSTRICH-NIP>>
<TELL "The ostrich sniffs and moves closer to you." CR>)
(<AND <VERB? GIVE>
<PRSO? ,OSTRICH-NIP>>
<FCLEAR ,OSTRICH ,TOUCHBIT>
<REMOVE ,OSTRICH-NIP>
<TELL
"The ostrich begins gleefully pecking at the nip, accidentally swallows it,
staggers around for a bit, and then finally keels over into a grinning pile
of intoxicated ostrich." CR>)
(<VERB? COMFORT>
<TELL "Your attempt simply frightens the ostrich. ">
<PERFORM ,V?SCARE ,OSTRICH>
<RTRUE>)
(<VERB? SCARE KICK SCOLD KILL MUNG TOUCH HUG DRILL ENTER
CLIMB-UP CLIMB-ON STAND-ON>
<TELL
"The ostrich emits a terrified squawk and sticks its head ">
<COND (<EQUAL? ,HERE ,DOC-SCHUSTER>
<TELL "into the disposal hole">
<COND (<NOT ,OSTRICH-FOOTNOTE>
<SETG OSTRICH-FOOTNOTE T>
<TELL " (Footnote 14)">)>)
(<AND <EQUAL? ,HERE ,PX>
<IN? ,DISPENSER ,HERE>>
<TELL "into the dispenser hole.">
<OSTRICH-INTO-DISPENSER>
<CRLF>
<RTRUE>)
(<IN? ,HEATING-CHAMBER ,HERE>
<TELL
"into the " 'HEATING-CHAMBER ". After a quick singe, it jerks its head
out, squawking in pain." CR>
<RTRUE>)
(T
<TELL "under its wing">)>
<TELL " for a moment." CR>)>>
<OBJECT LETTER
(IN DOC-SCHUSTER)
(DESC "letter")
(SYNONYM LETTER)
(FLAGS READBIT TAKEBIT)
(SIZE 1)
(TEXT
"\"Doc -- that ostrich nip you've been waiting for finally came in. Drop
by and pick it up. If I'm not in, you'll find it in my ceiling panel.\"")>
<ROOM SHADY-DANS
(IN ROOMS)
(DESC "Shady Dan's")
(NW TO TRADING-POST)
(DOWN TO JUNK-YARD)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL VILLAGE KEYPAD WINDOW)
(ACTION SHADY-DANS-F)
(THINGS <PSEUDO (<> SLOT ID-CHANGER-SLOT-F)>)>
<ROUTINE SHADY-DANS-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This space trailer houses the office of Shady Dan, the village's used
spaceship salesman. Dan isn't here, though. Connectors lead northwest
and downward. " ,DANS-LOT-DESC>)>>
<ROUTINE ID-CHANGER-SLOT-F ()
<COND (<NOT <IN? ,ID-CHANGER ,HERE>>
<CANT-SEE ,PSEUDO-OBJECT>)
(<AND <VERB? LOOK-INSIDE REACH-IN>
<PRSO? ,PSEUDO-OBJECT>>
<PERFORM ,PRSA ,ID-CHANGER ,PRSI>
<RTRUE>)
(<AND <VERB? PUT>
<PRSI? ,PSEUDO-OBJECT>>
<PERFORM, PRSA ,PRSO ,ID-CHANGER>
<RTRUE>)>>
<OBJECT ID-CHANGER
(IN SHADY-DANS)
(DESC "innocuous machine")
(FDESC ;"so it'll get printed before other DESCs"
"In the corner of the office is a rather plain-looking machine with a keypad.
It looks a bit jerry-built.")
(SYNONYM MACHIN)
(ADJECTIVE INNOCUOUS)
(FLAGS VOWELBIT TRYTAKEBIT LIGHTBIT CONTBIT OPENBIT SEARCHBIT)
(ACTION ID-CHANGER-F)>
<ROUTINE ID-CHANGER-F ()
<COND (<VERB? EXAMINE>
<TELL
"The machine is of very flimsy construction. An inspection reveals only two
notable features: a keypad and a very small slot. The machine is currently o">
<COND (<FSET? ,ID-CHANGER ,ACTIVEBIT>
<TELL "n">)
(T
<TELL "ff">)>
<TELL ,PERIOD-CR>)
(<VERB? OPEN CLOSE>
<TELL ,HUH>)
(<VERB? TAKE>
<TELL ,WONT-BUDGE>)
(<AND <VERB? PUT>
<PRSI? ,ID-CHANGER>>
<COND (<PRSO? ,ID-CARD>
<MOVE ,ID-CARD ,ID-CHANGER>
<COND (<FSET? ,ID-CHANGER ,ACTIVEBIT>
<TELL "A voice from the machine says, \"">
<COND (,ID-SCRAMBLED
<TELL
"Magnetic card data is scrambled; unable to read.\"">
<COND (<NOT ,SCRAMBLED-FOOTNOTE>
<SETG SCRAMBLED-FOOTNOTE T>
<TELL " (Footnote 15)">)>
<CRLF>)
(T
<TELL
"Current rank is " N ,ID-RANK ": " <GET ,ID-RANK-LIST <- ,ID-RANK 1>>
". Enter new rank on keypad.\"" CR>)>)
(T
<TELL
"The card fits neatly into the opening." CR>)>)
(T
<DOESNT-FIT "opening">)>)
(<AND <VERB? ON>
<NOT <FSET? ,ID-CHANGER ,ACTIVEBIT>>
<IN? ,ID-CARD ,ID-CHANGER>>
<MOVE ,ID-CARD ,PROTAGONIST>
<FSET ,ID-CHANGER ,ACTIVEBIT>
<TELL "The machine begins whirring lightly. ">
<PERFORM ,V?PUT ,ID-CARD ,ID-CHANGER>
<RTRUE>)>>
<ROUTINE ID-CHANGER-TYPE ()
<COND (<AND <IN? ,ID-CARD ,ID-CHANGER>
<FSET? ,ID-CHANGER ,ACTIVEBIT>>
<COND (,ID-SCRAMBLED
<COND (<NOT ,SCRAMBLED-FOOTNOTE>
<SETG SCRAMBLED-FOOTNOTE T>
<TELL "(Footnote 15) ">)>
<RECORDING "A scrambled card cannot be altered">)
(<G? ,P-NUMBER 10>
<TELL
"\"Error!\" chirps the " 'ID-CHANGER ". \"The highest rank number
recognized by the Stellar Patrol is 10.\"" CR>)
(<L? ,P-NUMBER 1>
<TELL
"You may DESERVE a rank that low, but unfortunately it doesn't exist." CR>)
(T
<SETG ID-RANK ,P-NUMBER>
<TELL
"\"New rank is " N ,ID-RANK ": "
<GET ,ID-RANK-LIST <- ,ID-RANK 1>> ".\"" CR>)>)
(T
<TELL ,NOTHING-HAPPENS>)>>
<GLOBAL ID-RANK-LIST
<TABLE
"Ensign, lower classes"
"Ensign First Class"
"Upshipman"
"Lieutenant Last Class"
"Lieutenant Second Class"
"Lieutenant First Class"
"Commander or Captain"
"Admiral"
"HyperAdmiral"
"Grand Fleet HyperAdmiral">>
<ROOM JUNK-YARD
(IN ROOMS)
(DESC "Junk Yard")
(LDESC
"This outdated drydock is now a messy junk yard. A huge pile of floating junk
fills the center of the bubble. Passages lead upwards and west.")
(UP TO SHADY-DANS)
(WEST TO ALLEY)
(FLAGS RLANDBIT WEIGHTLESSBIT ONBIT)
(GLOBAL GARBAGE VILLAGE)
(ACTION JUNK-YARD-F)>
<ROUTINE JUNK-YARD-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,JUNK-YARD ,TOUCHBIT>>
<NOT <EQUAL? ,VERBOSITY 0>>
,LIT>
<TELL
"Studio" ,CLUTTERED-BUBBLE "in which an artist has been attempting to build a
sculpture in the style of 91st-century scrap art. The sculpture is floating"
,AT-SECOND-GLANCE "sculpture is simply a pile of random garbage" ,ELLIPSIS>)>>
<OBJECT BOOTS
(IN JUNK-YARD)
(DESC "pair of magnetic boots")
(FDESC
"Of all the items floating in the scrap heap, the pair of magnetic spaceboots
looks to be in the best shape.")
(SYNONYM PAIR BOOTS SPACEBOOTS)
(ADJECTIVE MAGNETIC)
(SIZE 20)
(FLAGS PLURALBIT TRYTAKEBIT TAKEBIT WEARBIT)
(ACTION BOOTS-F)>
<ROUTINE BOOTS-F ()
<COND (<VERB? TAKE-OFF>
<COND (<OR <EQUAL? ,HERE ,VACUUM-STORAGE>
<AND <EQUAL? ,HERE ,AIRLOCK>
<FSET? ,OUTER-AIRLOCK-DOOR ,OPENBIT>>>
<TELL
"Are you nuts? The boots are the only thing preventing you
from floating off into space!" CR>)
(<ULTIMATELY-IN? ,ID-CARD>
<FCLEAR ,BOOTS ,TRYTAKEBIT>
<FCLEAR ,ID-CARD ,TRYTAKEBIT>
<SETG ID-SCRAMBLED T>
<RFALSE>)>)
(<AND <VERB? TAKE-WITH ATTRACT>
<PRSO? ,MEDIUM-BIT ,SMALL-BIT ,LARGE-BIT>>
<COND (<IN? ,PRSO ,HEATING-CHAMBER>
<TELL
"The bit is too far below the opening of the " 'HEATING-CHAMBER " to be
attracted by the boots." CR>)
(T
<MOVE ,PRSO ,PROTAGONIST>
<TELL "\"Clink!\"" CR>)>)
(<AND <VERB? PUT-ON>
<PRSI? ,HEATING-CHAMBER ,MEDIUM-BIT>
<IN? ,MEDIUM-BIT ,HEATING-CHAMBER>>
<PERFORM ,V?TAKE-WITH ,MEDIUM-BIT ,BOOTS>
<RTRUE>)
(<VERB? LOOK-INSIDE>
<TELL ,THERES-NOTHING "in the boots">
<COND (<FSET? ,BOOTS ,WORNBIT>
<TELL " besides your feet">)>
<TELL ,PERIOD-CR>)>>
<OBJECT GARBAGE
(IN LOCAL-GLOBALS) ;"in Junk Yard and Alley"
(DESC "garbage")
(SYNONYM GARBAGE JUNK TRASH PILE)
(ADJECTIVE LARGE FLOATING USELESS RANDOM JUNK GARBAGE TRASH)
(FLAGS NARTICLEBIT)
(ACTION GARBAGE-F)>
<ROUTINE GARBAGE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE SEARCH DIG>
<TELL "You don't find anything interesting among the garbage">
<COND (<AND <EQUAL? ,HERE ,JUNK-YARD>
<NOT <FSET? ,BOOTS ,TOUCHBIT>>>
<TELL " besides the aforementioned boots">)>
<TELL ,PERIOD-CR>)
(<VERB? PUT>
<MOVE ,PRSO ,HERE>
<TELL "You drop" T ,PRSO " amidst the garbage." CR>)>>