checkpoint/global.zil
historicalsource 8ae301e53b Final Revision
2019-04-13 22:12:44 -04:00

981 lines
25 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"GLOBALS for CHECKPOINT
Copyright (C) 1985 Infocom, Inc. All rights reserved."
<OBJECT GLOBAL-OBJECTS
(DESC "GO")
(FDESC 0)
(FLAGS BUSYBIT CONTBIT DOORBIT FEMALE
INVISIBLE LIGHTBIT LOCKED MUNGBIT
NARTICLEBIT NDESCBIT ONBIT ;ON?BIT OPENBIT
;PERSONBIT ;PLURAL READBIT RMUNGBIT
SEARCHBIT ;SEENBIT SURFACEBIT
TAKEBIT TOOLBIT TOUCHBIT TRANSBIT TRYTAKEBIT TURNBIT
VEHBIT VOWELBIT WEAPONBIT WEARBIT WINDOWBIT WORNBIT)>
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(DESC "LG")
(SYNONYM ZZZZLG) ;"This synonym is necessary - God knows">
<ROUTINE DO-INSTEAD-OF (OBJ1 OBJ2)
<COND (<EQUAL? ,PRSI .OBJ2> <PERFORM ,PRSA ,PRSO .OBJ1> <RTRUE>)
(<EQUAL? ,PRSO .OBJ2> <PERFORM ,PRSA .OBJ1 ,PRSI> <RTRUE>)
(<V-FOO>)>>
<OBJECT TURN
(LOC GLOBAL-OBJECTS)
(ADJECTIVE NUMBER FULL)
(SYNONYM TURN TURNS MINUTE)
(DESC "minute")
(ACTION TURN-F)>
<ROUTINE TURN-F ()
<COND (<VERB? USE>
<PERFORM ,V?WAIT-FOR ,PRSO>
<RTRUE>)>>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(SYNONYM IT THIS ;"FUCKER SUCKER")
(DESC "it")
(FLAGS VOWELBIT NARTICLEBIT)
(ACTION IT-F)>
<ROUTINE IT-F ()
<COND (<OR <AND <IOBJ? IT>
;<FSET? ,PRSO ,PERSONBIT>
<VERB? ASK-ABOUT ASK-FOR SEARCH-FOR TELL-ABOUT>>
<AND <DOBJ? IT>
<VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR FIND WHAT>>>
<PRODUCE-GIBBERISH>
;<TELL "\"I'm not sure what you're talking about.\"" CR>)>>
<OBJECT FLOOR
(LOC GLOBAL-OBJECTS)
(DESC "floor")
(SYNONYM FLOOR ;AREA GROUND)
(ACTION FLOOR-F)>
<ROUTINE FLOOR-F ("AUX" OBJ)
<COND ;(<REMOTE-VERB?> <RFALSE>)
(<AND <VERB? PUT> <IOBJ? FLOOR>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<VERB? EXAMINE SEARCH LOOK-ON>
<COND (<SET OBJ <FIND-FLAG ,HERE ,NDESCBIT ,WINNER>>
<FCLEAR .OBJ ,NDESCBIT>
<THIS-IS-IT .OBJ>
<TELL "Something catches your eye: it's " A .OBJ "." CR>)
(T <TELL "You don't find anything new there." CR>)>)
(<VERB? BRUSH TAKE>
<COND (<IN? ,BLOOD-SPOT ,HERE>
<PERFORM ,V?BRUSH ,BLOOD-SPOT ,PRSI>
<RTRUE>)>)>>
;<OBJECT DANGER
(LOC GLOBAL-OBJECTS)
(DESC "danger")
(SYNONYM DANGER THREAT)>
;<OBJECT MOTIVE
(LOC GLOBAL-OBJECTS)
(DESC "motive")
;(ADJECTIVE YOUR)
(SYNONYM MOTIVE)>
;<OBJECT PROBLEM
(LOC GLOBAL-OBJECTS)
(DESC "problem")
(ADJECTIVE URGENT)
(SYNONYM PROBLEM ;"WANT WRONG HAPPENING")>
;<OBJECT GLOBAL-WEAPON
(LOC GLOBAL-OBJECTS)
(DESC "weapon")
(ADJECTIVE ;YOUR SOME)
(SYNONYM WEAPON)>
;<OBJECT GLOBAL-EXPLOSIVE
(LOC GLOBAL-OBJECTS)
(DESC "explosive charge")
(ADJECTIVE ;YOUR SOME EXPLOSIVE)
(SYNONYM EXPLOSIVE CHARGE)
(FLAGS VOWELBIT)>
;<OBJECT GLOBAL-SURFACE
(LOC GLOBAL-OBJECTS)
(DESC "surface")
(SYNONYM SURFACE)>
<OBJECT DOLLARS
(LOC GLOBAL-OBJECTS)
(ADJECTIVE NUMBER)
(SYNONYM SLIMPUK)
(DESC "slimpuk")
(ACTION DOLLARS-F)>
<ROUTINE DOLLARS-F ()
<COND (<VERB? COUNT>
<DO-INSTEAD-OF ,GLOBAL-MONEY ,DOLLARS>
<RTRUE>)
(T
<COND (,P-DOLLAR-FLAG
<COND (<0? ,P-AMOUNT> <SETG P-AMOUNT 1>)>)
(T
<SETG P-DOLLAR-FLAG T>
<COND (<0? ,P-NUMBER> <SETG P-AMOUNT 1>)>)>
<DO-INSTEAD-OF ,INTNUM ,DOLLARS>
<RTRUE>)>>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(SYNONYM NUMBER)
(DESC "number")
(ACTION INTNUM-F)>
<ROUTINE INTNUM-F ()
<COND ;(<AND ;<VERB? GIVE WITHDRAW>
<NOT ,P-DOLLAR-FLAG>>
<TELL "(Please use units with numbers.)" CR>
<SETG CLOCK-WAIT T>
<RFATAL>)
(,P-DOLLAR-FLAG
<COND (<DIVESTMENT? ,PRSO>
<TELL-FLASHING-CASH>
<RTRUE>)
(<AND <NOT <VERB? ;WITHDRAW TAKE ASK-FOR>>
<==? ,WINNER ,PLAYER>
<G? ,P-AMOUNT <GETP ,PLAYER ,P?SOUTH>>>
<TELL "You don't have that much." CR>)>)>>
;<OBJECT GLOBAL-WATER
(LOC GLOBAL-OBJECTS)
(DESC "water")
(SYNONYM WATER)
(ACTION WATER-F)>
;<ROUTINE WATER-F ()
<COND (<REMOTE-VERB?> <RFALSE>)
(<VERB? SWIM THROUGH>
<TELL "This is no time for a swim!" CR>)>>
<OBJECT YOU
(LOC GLOBAL-OBJECTS)
(SYNONYM YOU YOURSELF HIMSELF HERSELF)
(DESC "himself or herself")
(FLAGS ;NDESCBIT NARTICLEBIT)
(ACTION YOU-F)>
<ROUTINE YOU-F ()
<COND (<NOT <==? ,WINNER ,PLAYER>>
<DO-INSTEAD-OF ,WINNER ,YOU>
<RTRUE>)
(<AND <VERB? ASK-ABOUT> <IOBJ? YOU>>
<PERFORM ,V?ASK-ABOUT ,PRSO ,PRSO>
<RTRUE>)>>
;<OBJECT HINT
(DESC "clue" ;"hint")
(LOC GLOBAL-OBJECTS)
(SYNONYM CLUE HINT HELP)
(ACTION HINT-F)>
;<ROUTINE HINT-F ()
<COND (<VERB? FIND>
<HELP-TEXT>)
(<VERB? ASK-FOR ASK-CONTEXT-FOR TAKE>
<MORE-SPECIFIC>)>>
<OBJECT CORRIDOR-GLOBAL
(LOC GLOBAL-OBJECTS)
(DESC "corridor")
(SYNONYM CORRIDOR)
(ACTION CORRIDOR-GLOBAL-F)>
<ROUTINE CORRIDOR-GLOBAL-F ("AUX" RM)
<COND (<VERB? ANALYZE EXAMINE LOOK-INSIDE LOOK-DOWN LOOK-UP>
<COND (<NOT ,ON-TRAIN>
<RFALSE>)
(<ZMEMQ ,HERE ,CAR-ROOMS-CORRID>
<PERFORM ,V?LOOK>
<RTRUE>)
(<SET RM <NEXT-ROOM ,HERE ,P?OUT>>
<ROOM-PEEK .RM T>)>)>>
<OBJECT GLOBAL-HERE
(LOC GLOBAL-OBJECTS)
(DESC "here")
(ADJECTIVE THIS)
(SYNONYM HERE AREA ROOM PLACE)
(FLAGS NARTICLEBIT)
(ACTION GLOBAL-HERE-F)>
<ROUTINE GLOBAL-HERE-F ("AUX" (FLG <>) F HR TIM VAL)
<COND (<VERB? WALK-TO SIT>
<DO-INSTEAD-OF ,HERE ,GLOBAL-HERE>
<RTRUE>)
(<VERB? KNOCK>
<TELL "Knocking on the walls reveals nothing unusual." CR>)
(<VERB? PUT PUT-IN TIE-TO>
<MORE-SPECIFIC>)
(<VERB? SEARCH EXAMINE>
<COND ;(<OUTSIDE? ,HERE>
<SET TIM 10>)
(<NOT <ZERO? <GETP ,HERE ,P?CORRIDOR>>>
<SET TIM 3>)
(T <SET TIM <+ 2 <GETP ,HERE ,P?SIZE>>>)>
<COND (<==? ,P-ADVERB ,W?CAREFULLY> <SET TIM <* 2 .TIM>>)>
<TELL
"(It's better to examine or search one thing at a time. It would take a
long time to search a whole room or area thoroughly. A ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY> <TELL "careful">)
(T <TELL "brief">)>
<TELL " search would take
" N .TIM " minutes, and it might not reveal much. Would you like
to do it anyway?)">
<COND (<YES?>
<COND (<==? ,M-FATAL <SET VAL <INT-WAIT .TIM>>>
<RTRUE>)
(.VAL
<TELL "Your ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
<TELL "careful">)
(T <TELL "brief">)>
<TELL " search reveals">
<COND (<SET VAL <FOUND? ,HERE>>
<TELL THE .VAL " under the seat." CR>)
(T <TELL " nothing exciting." CR>)>)
(T
<TELL
"You didn't finish looking over the place." CR>)>)
(T
<SETG CLOCK-WAIT T>
<TELL "Okay." CR>)>)>>
<ROUTINE FOUND? (RM "AUX" X)
<COND (<AND <SET X <ZMEMQ .RM ,CAR-ROOMS-COMPS>>
<SET X <FIRST? <GET ,CAR-ROOMS-UNDER .X>>>>
<RETURN .X>)
(<==? .RM ,BOOTH-1>
<FIRST? ,UNDER-BOOTH-1>)
(<==? .RM ,BOOTH-2>
<FIRST? ,UNDER-BOOTH-2>)
(<==? .RM ,BOOTH-3>
<FIRST? ,UNDER-BOOTH-3>)>>
<OBJECT AIR
(LOC GLOBAL-OBJECTS)
(DESC "air")
(SYNONYM AIR ;"WIND" BREEZE OXYGEN)
(FLAGS VOWELBIT)
(ACTION AIR-F)>
<ROUTINE AIR-F ()
<COND (<VERB? EXAMINE>
<TELL "You can see through the air around you." CR>)
(<VERB? WALK-TO>
<TELL "It's all around you!" CR>)
(<VERB? SMELL>
<COND (<OUTSIDE? ,HERE>
<TELL "The air is clear and fresh." CR>)
(<FRESH-AIR? ,HERE> <RTRUE>)
(T <TELL "The air is rather musty." CR>)>)>>
;<ROUTINE TOO-FAR-AWAY (OBJ) <TOO-BAD-BUT .OBJ "too far away">>
<OBJECT CHAIR
(LOC LOCAL-GLOBALS)
(DESC "chair")
(SYNONYM CHAIR ;CHAIRS SEAT BENCH STOOL)
(FLAGS NDESCBIT ;FURNITURE VEHBIT)
;(ACTION CHAIR-F)>
;<ROUTINE CHAIR-F ()
<COND (<VERB? SIT LOOK-UNDER CLIMB-ON CLIMB-DOWN>
<TELL "That's just a waste of time." CR>)>>
<OBJECT SOMETHING
(LOC GLOBAL-OBJECTS)
(DESC "(something)")
(SYNONYM \(SOMETHING\) )
(ACTION SOMETHING-F)>
<ROUTINE SOMETHING-F ()
<SETG CLOCK-WAIT T>
<TELL "(Type a real word instead of " D ,SOMETHING ".)" CR>>
;<OBJECT MORE
(DESC "more")
(LOC GLOBAL-OBJECTS)
(SYNONYM MORE)
(FLAGS NARTICLEBIT)>
;<OBJECT GLOBAL-SABOTAGE
(LOC GLOBAL-OBJECTS)
(DESC "sabotage")
(SYNONYM SABOTAGE)>
[
<OBJECT FIXTURES
(LOC LOCAL-GLOBALS)
(DESC "bunch of fixtures")
(SYNONYM BUNCH FIXTURE FIXTURES)>
<OBJECT TOILET
(LOC LOCAL-GLOBALS)
(DESC "toilet")
(SYNONYM TOILET ;FIXTURE)
(FLAGS NDESCBIT OPENBIT CONTBIT SEARCHBIT VEHBIT)
(CAPACITY 33)
(ACTION TOILET-F)>
<ROUTINE TOILET-F ()
<COND (<VERB? OPEN CLOSE>
<YOU-CANT>)
(<VERB? PUT-IN>
<COND (<IOBJ? TOILET>
<FSET ,PRSO ,MUNGBIT>
<RFALSE>)>)
(<VERB? FLUSH FLUSH-DOWN>
<COND (<AND ,IN-STATION ,ON-TRAIN>
<TELL
"An old refrain comes to mind:|
\"Passengers will please refrain|
From flushing toilets while the train|
Is standing in the station. (I love you!)\"" CR>)
(T
<COND (<VERB? FLUSH-DOWN>
<COND (<NOT <==? <ITAKE> T>> <RTRUE>)>
;<FSET ,TOILET ,OPENBIT>
<MOVE ,PRSO ,TOILET>)>
<COND (<FIRST? ,TOILET>
<TELL "Say goodbye to">
<ROB ,TOILET ,LIMBO-FWD T>)>
<TELL "\"Whhoooossshhhhh!\"" CR>)>)>>
<ROUTINE ROB (WHAT THIEF "OPTIONAL" (TELL? <>) "AUX" N X (TOLD? <>))
<SET X <FIRST? .WHAT>>
<REPEAT ()
<COND (<NOT .X> <RETURN>)>
<SET N <NEXT? .X>>
<COND (<AND <NOT .N> .TOLD? .TELL?>
<TELL " and">)>
<SET TOLD? T>
<COND (.TELL?
<TELL THE .X>
<COND (.N <TELL ",">)
(T <TELL ". ">)>)>
<MOVE .X .THIEF>
<FCLEAR .X ,TAKEBIT>
<SET X .N>>>
<OBJECT SINK
(LOC LOCAL-GLOBALS)
(DESC "sink")
(SYNONYM SINK BOWL BASIN FAUCET)
(FLAGS NDESCBIT CONTBIT SEARCHBIT OPENBIT)
(CAPACITY 15)
(TEXT
"It's a metal sink, a bit dented and scratched, with only one faucet.")
(ACTION SINK-F)>
<ROUTINE SINK-F ()
<COND (<VERB? OPEN CLOSE>
<YOU-CANT>)
(<VERB? LAMP-ON>
<TELL
"You push on the handle, and water runs until you let go. A silly idea
comes into your head: what is the sound of one hand washing?" CR>)>>
<OBJECT TOWEL-FIXTURE
(LOC LOCAL-GLOBALS)
(DESC "towel dispenser")
(ADJECTIVE TOWEL)
(SYNONYM DISPENSER ;FIXTURE HOLDER)
(FLAGS NDESCBIT)>
<OBJECT TOWEL-FIXTURE-BROKEN
;(LOC OTHER-REST-ROOM-REAR)
(CAR 0)
(DESC "towel dispenser")
(ADJECTIVE TOWEL)
(SYNONYM DISPENSER ;FIXTURE HOLDER)
(FLAGS NDESCBIT)>
<OBJECT TOWEL-LOOP
(LOC LOCAL-GLOBALS ;TOWEL-FIXTURE)
(DESC "towel")
(ADJECTIVE CLOTH FRESH)
(SYNONYM TOWEL PORTION)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION TOWEL-LOOP-F)>
<OBJECT TOWEL-LOOP-BROKEN
(CAR 0)
(DESC "towel remnant")
(ADJECTIVE CLOTH FRESH)
(SYNONYM TOWEL PORTION REMNANT)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION TOWEL-LOOP-BROKEN-F)>
<ROUTINE TOWEL-LOOP-F ()
<COND (<VERB? CUT>
<COND (<IOBJ? KNIFE>
<MOVE ,SCARF ,PLAYER>
<FSET ,SCARF ,TAKEBIT>
<PUTP ,SCARF ,P?CAR ,CAR-HERE>
<MOVE ,TOWEL-FIXTURE-BROKEN ,HERE>
<PUTP ,TOWEL-FIXTURE-BROKEN ,P?CAR ,CAR-HERE>
<MOVE ,TOWEL-LOOP-BROKEN ,HERE>
<PUTP ,TOWEL-LOOP-BROKEN ,P?CAR ,CAR-HERE>
<THIS-IS-IT ,TOWEL-LOOP-BROKEN>
<TELL
"Well done! You now have a government-issue " D ,SCARF ", and the janitor
has a mess to repair." CR>)>)
(<VERB? EXAMINE>
<TELL
"This cloth towel must be very long, but most of it is rolled up
inside the dispenser. Only about a meter hangs below it in a \"U\" shape."
CR>)
(<VERB? MOVE MOVE-DIR USE TAKE>
<TELL
"As you pull on the towel, a fresh portion appears from a slot, and
the used portion starts to disappear into the dispenser." CR>)>>
<ROUTINE TOWEL-LOOP-BROKEN-F ()
<COND (<VERB? EXAMINE>
<TELL
"This cloth towel must be very long, but most of it is rolled up
inside the dispenser. The part that should hang below is cut away." CR>)
(<VERB? CUT MOVE MOVE-DIR USE TAKE>
<TELL "There's not enough left!" CR>)>>
<OBJECT PAPER-FIXTURE
;(LOC LOCAL-GLOBALS)
(DESC "paper dispenser")
(ADJECTIVE ;TOILET PAPER TISSUE)
(SYNONYM DISPENSER ;FIXTURE HOLDER)
(FLAGS NDESCBIT OPENBIT CONTBIT SEARCHBIT)
(CAPACITY 3)
(ACTION PAPER-FIXTURE-F)>
<ROUTINE PAPER-FIXTURE-F ()
<COND (<VERB? LOOK-INSIDE>
<FCLEAR ,PAPER-LOOP ,NDESCBIT>
<RFALSE>)>>
<OBJECT PAPER-LOOP
(LOC PAPER-FIXTURE)
(CAR 0)
(DESC "paper")
(ADJECTIVE TOILET)
(SYNONYM PAPER TISSUE PORTION)
(FLAGS NARTICLEBIT NDESCBIT ;TRYTAKEBIT)
(SIZE 3)
(ACTION PAPER-LOOP-F)>
<ROUTINE PAPER-LOOP-F ()
<COND (<VERB? MOVE MOVE-DIR USE TAKE>
<TELL "Whatever you have in mind, it'll never work!" CR>)>>
<OBJECT MIRROR
(LOC LOCAL-GLOBALS)
(DESC "mirror")
(SYNONYM MIRROR)
(ACTION MIRROR-F)>
<ROUTINE MIRROR-F ()
<COND (<VERB? MUNG>
<TELL "You don't need any bad luck!"
;"According to superstition, it's bad luck to break mirrors." CR>)
(<VERB? LOOK-INSIDE EXAMINE>
<TELL "A harried and weary "
<COND (<SPY?> "spy") (T "traveler")>
" looks back at you, with a
look that seems to say, \"I don't need this aggravation!\"" CR>)>>
]
<OBJECT POCKET
(LOC PLAYER ;GLOBAL-OBJECTS)
(DESC "your pocket")
(ADJECTIVE MY)
(SYNONYM POCKET POCKETS)
(FLAGS CONTBIT OPENBIT NARTICLEBIT NDESCBIT SEARCHBIT)
(CAPACITY 15)
(ACTION POCKET-F)>
<ROUTINE POCKET-F ("AUX" X)
<COND (<DIVESTMENT? ,POCKET>
<HAR-HAR>)
;(<AND <VERB? TAKE>
<DOBJ? GLOBAL-MONEY>>
<TELL-FLASHING-CASH>)
(<VERB? LOOK-INSIDE LOOK-THROUGH>
<SET X <PRINT-CONT ,POCKET ;T>>
<COND (<AND <==? ,WINNER ,PLAYER>
<G? <GETP ,PLAYER ,P?SOUTH> 0>>
<THIS-IS-IT ,GLOBAL-MONEY>
<COND (.X <TELL "And some money." CR>)
(T
<TELL "You have some money in your pocket.">
<COND (<IN? ,CUSTOMS-AGENT ,HERE>
<TELL
" But" HE ,CUSTOMS-AGENT " won't mind.">)>
<CRLF>)>)
(<NOT .X> <TELL "Your pocket is empty." CR>)>
<RTRUE>)
(<VERB? EMPTY>
<COND (<FIRST? ,POCKET>
<TELL "You are now holding">
<ROB ,POCKET ,PLAYER T>
<CRLF>)>)
(<VERB? OPEN CLOSE>
<TELL "You don't need to do that." CR>)
(<AND <VERB? PUT-IN>
<IOBJ? POCKET>>
<COND (<OR <DOBJ? GLOBAL-MONEY>
<AND <DOBJ? INTNUM> ,P-DOLLAR-FLAG>>
<TELL "It's already there." CR>)
(<DOBJ? CAMERA>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "(You close" HIM ,PRSO " first.)" CR>
<RFALSE>)>)>)>>
<OBJECT POCKET-C
(LOC CONDUCTOR ;GLOBAL-OBJECTS)
(DESC "conductor's pocket")
(ADJECTIVE CONDUCTOR CONDUC COLLECTOR)
(SYNONYM POCKET POCKETS)
(FLAGS CONTBIT OPENBIT NDESCBIT SEARCHBIT)
(CAPACITY 15)
(ACTION POCKET-C-F)>
<ROUTINE POCKET-C-F ("AUX" X)
<COND (<DIVESTMENT? ,POCKET-C>
<HAR-HAR>)
(<VERB? LOOK-INSIDE LOOK-THROUGH>
<COND (<OR <FSET? ,CONDUCTOR ,MUNGBIT>
<NOT <FSET? ,CONDUCTOR ,PERSONBIT>>>
<SET X <PRINT-CONT ,POCKET-C ;T>>)
(T <TELL
CHE ,CONDUCTOR " brushes your hand away without even looking." CR>)>
<RTRUE>)
(<VERB? OPEN CLOSE>
<TELL "You don't need to do that." CR>)
(<AND <VERB? PUT-IN>
<IOBJ? POCKET-C>>
<COND (<DOBJ? CAMERA>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "(You close" HIM ,PRSO " first.)" CR>
<RFALSE>)>)>)>>
<ROUTINE TELL-FLASHING-CASH ()
<TELL "Flashing your bankroll is not a good idea." CR>>
<OBJECT GLOBAL-MONEY
(LOC GLOBAL-OBJECTS)
(ADJECTIVE SOME MY)
(SYNONYM MONEY CASH \*)
(DESC "money")
(FLAGS NARTICLEBIT)
(ACTION GLOBAL-MONEY-F)>
<ROUTINE GLOBAL-MONEY-F ()
<COND (<VERB? FIND>
<TELL "It's not that easy!" CR>
<RTRUE>)
(<REMOTE-VERB?>
<RFALSE>)
(<AND <VERB? PUT PUT-IN> <DOBJ? GLOBAL-MONEY>>
<MORE-SPECIFIC>)
(<G? <GETP ,PLAYER ,P?SOUTH> 0>
<COND (<VERB? COUNT EXAMINE>
<TELL "You are carrying ">
<PRINTC ,CURRENCY-SYMBOL>
<TELL N <GETP ,PLAYER ,P?SOUTH> "." CR>)
(<VERB? GIVE>
<SETG CLOCK-WAIT T>
<TELL "(You didn't say how much money to give.)" CR>)
(<AND <VERB? TAKE> ,PRSI ;<FSET? ,PRSI ,PERSONBIT>>
<TELL "You can't see any money on" HIM ,PRSI "." CR>)
(<AND <VERB? SHOW> ;<DOBJ? CUSTOMS-AGENT>>
<RFALSE>)
(T <TELL-FLASHING-CASH>)>)
(T <NOT-HERE ,GLOBAL-MONEY>)>>
<OBJECT MENU
(DESC "menu")
(LOC LOCAL-GLOBALS)
(FLAGS READBIT)
(SYNONYM MENU)
(ACTION MENU-F)
(TEXT
"A sign on the wall has a long list of mysterious Frotzian phrases,
printed in ornate letters. All you can decipher is unpleasant things
like fish heads and lice, or rumpled stilt's skin. Wait! There's an
American phrase: Eggs McGuffin!")>
<ROUTINE MENU-F ()
<COND (<VERB? ANALYZE EXAMINE READ>
<TELL <GETP ,MENU ,P?TEXT> CR>)>>
<OBJECT ITEMS
(DESC "item")
(LOC LOCAL-GLOBALS)
(FLAGS READBIT VOWELBIT)
(ADJECTIVE ;FIRST SECOND THIRD FOURTH FIFTH)
(SYNONYM ITEM)
(ACTION ITEMS-F)>
<ROUTINE ITEMS-F ()
<COND (<VERB? ASK-FOR BUY>
<COND ;(<EQUAL? ,P-ADJ ;N ,W?FIRST>
<DO-INSTEAD-OF ,FOOD ,ITEMS>
<RTRUE>)
(T
<DO-INSTEAD-OF ,FOOD-2 ,ITEMS>
<RTRUE>)>)
(<VERB? ANALYZE EXAMINE READ>
<TELL <GETP ,MENU ,P?TEXT> CR>)>>
<OBJECT FOOD-GLOBAL
(DESC "food")
(LOC GLOBAL-OBJECTS)
(SYNONYM FOOD)
(FLAGS NARTICLEBIT)
(ACTION FOOD-GLOBAL-F)>
<ROUTINE FOOD-GLOBAL-F ()
<COND (<VERB? ASK-FOR BUY SMELL>
<DO-INSTEAD-OF ,FOOD ,FOOD-GLOBAL>
<RTRUE>)
(<REMOTE-VERB?> <RFALSE>)
(T <NOT-HERE ,FOOD-GLOBAL>)>>
<OBJECT DRINK-GLOBAL
(DESC "drink")
(LOC GLOBAL-OBJECTS)
(SYNONYM DRINK)
(FLAGS NARTICLEBIT)
(ACTION DRINK-F)>
<ROUTINE DRINK-F () <FOOD-F T>>
<OBJECT DRINK-1
(DESC "drink")
(LOC GLOBAL-OBJECTS)
(SYNONYM TEA BEER COFFEE)
(FLAGS NARTICLEBIT)
(ACTION DRINK-1-F)>
<ROUTINE DRINK-1-F ()
<DO-INSTEAD-OF ,DRINK-GLOBAL ,DRINK-1>
<RTRUE>>
;<ROUTINE GENERIC-FOOD-F (X)
<COND (<==? ,HERE <META-LOC ,FOOD>> ,FOOD)
(T ,FOOD-GLOBAL)>>
<OBJECT FOOD-CAFE
(DESC "food")
(LOC CAFE)
(SYNONYM FOOD)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION FOOD-F)>
<OBJECT FOOD ;"Make this similar to WINE-xxx."
(DESC "plate of thin gruel")
(LOC GALLEY)
(CAR 3)
(ADJECTIVE THIN FIRST)
(SYNONYM GRUEL PLATE DISH FOOD ITEM)
(FLAGS NDESCBIT SEARCHBIT)
(SIZE 20)
(ACTION FOOD-F)>
<CONSTANT FOOD-SIZE 4>
<CONSTANT FOOD-HALF-SIZE 2>
<ROUTINE FOOD-F ("OPTIONAL" (DRINK? <>) "AUX" PER OBJ X)
<COND (<VERB? EAT SMELL DRINK>
<COND (<OR <VERB? SMELL>
<NOT <IN? ,PRSO ,GLOBAL-OBJECTS>>
;<DOBJ? FOOD WINE-RED WINE-WHITE>>
<TELL "It's pungent but not very flavorful.">
<COND (<NOT <VERB? SMELL>>
<SET X <GETP ,PRSO ,P?SIZE>>
<PUTP ,PRSO ,P?SIZE .X>
<COND (<==? .X ,FOOD-HALF-SIZE>
<TELL " And it's half gone.">)
(<ZERO? .X>
<MOVE ,PRSO ,GLOBAL-OBJECTS>
<TELL " And it's gone.">)>)>
<COND (<SPY?>
<TELL
" You've had better in some mighty dank corners of the world.">)>
<CRLF>)
(T <TELL "That wouldn't be very polite." CR>)>)
(<VERB? POUR PUT PUT-IN MUNG>
<COND (<IOBJ? TOILET>
<RFALSE>)
(<AND <NOT <VERB? POUR>>
<IOBJ? TABLE-1 TABLE-2 TABLE-3>>
<RFALSE>)
(T <TELL "What a mess that would make!" CR>)>)
(<VERB? ASK-FOR BUY>
<COND (<AND <EQUAL? ,HERE ,PANTRY>
<INVASION? ,WAITER>>
<RTRUE>)>
<COND (,ON-TRAIN <SET PER ,WAITER>)
(T <SET PER ,WAITRESS>)>
<COND (.DRINK? <SET OBJ ,WINE-RED>)
(T <SET OBJ ,FOOD>)>
<COND (.DRINK?
<COND (<OR <FSET? ,WINE-RED ,TOUCHBIT>
<FSET? ,WINE-WHITE ,TOUCHBIT>>
<TELL "You've bought enough to drink already."CR>
<RTRUE>)>)
(<FSET? ,FOOD ,TOUCHBIT> ;<IN? ,FOOD ,HERE>
<TELL "You've bought enough to eat already." CR>
<RTRUE>)>
<COND (<0? <GETP ,PLAYER ,P?SOUTH>>
<TELL "You don't have enough money." CR>)
(<NOT <IN? .PER ,HERE>>
<TELL "You'd better talk to " A .PER " first." CR>)
(T
<PUTP ,PLAYER ,P?SOUTH <- <GETP ,PLAYER ,P?SOUTH> 1>>
<COND (<EQUAL? .OBJ ,WINE-RED ,WINE-WHITE>
<SET X <OR <CALL-FOR-PROP ,CUP-A ,WAITER>
<CALL-FOR-PROP ,CUP-B ,WAITER>>>
<MOVE .OBJ .X>
<PUTP .OBJ ,P?CAR ,CAR-HERE>
<PUTP .OBJ ,P?SIZE ,FOOD-SIZE>
<FSET .OBJ ,TOUCHBIT>
<SET OBJ .X>)
(T <PUTP .OBJ ,P?SIZE ,FOOD-SIZE>)>
<MOVE .OBJ <OR <TABLE? ,HERE> ,HERE>>
<PUTP .OBJ ,P?CAR ,CAR-HERE>
<FSET .OBJ ,TAKEBIT>
<FSET .OBJ ,TOUCHBIT>
<FCLEAR .OBJ ,NDESCBIT>
<FCLEAR .PER ,TOUCHBIT>
<PUTP .PER ,P?LDESC 29>
<TELL
CHE .PER " returns in an instant with " A .OBJ " and takes ">
<PRINTC ,CURRENCY-SYMBOL>
<TELL "1 from you." CR>)>)>>
<OBJECT CUP-A
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC "china cup")
(ADJECTIVE CHINA)
(SYNONYM CUP)
(FLAGS CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 15)
(SIZE 20)
(ACTION CUP-F)>
<OBJECT CUP-B
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC "enamel cup")
(ADJECTIVE ENAMEL)
(SYNONYM CUP)
(FLAGS CONTBIT OPENBIT SEARCHBIT VOWELBIT)
(CAPACITY 15)
(SIZE 20)
(ACTION CUP-F)>
<ROUTINE CUP-F ()
<COND (<VERB? THROW-AT THROW-THROUGH EMPTY>
<COND (<EQUAL? <LOC ,WINE-RED> ,PRSO ,PRSI>
<MOVE ,WINE-RED ,GLOBAL-OBJECTS>)>
<COND (<EQUAL? <LOC ,WINE-WHITE> ,PRSO ,PRSI>
<MOVE ,WINE-WHITE ,GLOBAL-OBJECTS>)>
<ROB ,PRSO ,HERE>
<ROB ,PRSI ,HERE>
<COND (<VERB? EMPTY> <TELL "Okay." CR>)
(T <RFALSE>)>)
(<AND <VERB? PUT-IN>
<DOBJ? SCARF NAPKIN TOWEL-WAITER>
<IOBJ? CUP-A CUP-B>
<IN? ,WINE-RED ,PRSI>>
<DO-INSTEAD-OF ,WINE-RED ,PRSI>
<RTRUE>)>>
<OBJECT WINE-RED
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC ;"cup of " "purple wine")
(ADJECTIVE PURPLE RED)
(SYNONYM WINE ;CUP)
(FLAGS NARTICLEBIT TRYTAKEBIT SEARCHBIT)
(SIZE 10)
(ACTION WINE-F)>
<OBJECT WINE-WHITE
(LOC GLOBAL-OBJECTS)
(CAR 3)
(DESC ;"cup of " "yellow wine")
(ADJECTIVE YELLOW WHITE)
(SYNONYM WINE ;CUP)
(FLAGS NARTICLEBIT TRYTAKEBIT SEARCHBIT)
(SIZE 10)
(ACTION WINE-F)>
<ROUTINE WINE-PUT? ()
<COND (<VERB? PUT>
<COND (<AND <IOBJ? SCARF NAPKIN TOWEL-WAITER>
<DOBJ? WINE-RED>>
<RETURN ,PRSI>)>)
(<VERB? PUT-IN>
<COND (<AND <DOBJ? SCARF NAPKIN TOWEL-WAITER>
<IOBJ? WINE-RED>>
<RETURN ,PRSO>)>)>>
<ROUTINE WINE-F ("AUX" OBJ)
<COND (<AND <VERB? TAKE> <EQUAL? <LOC ,PRSO> ,CUP-A ,CUP-B>>
<PERFORM ,PRSA <LOC ,PRSO> ,PRSI>
<RTRUE>)
(<SET OBJ <WINE-PUT?>>
;<OR <AND <VERB? PUT>
<IOBJ? SCARF NAPKIN TOWEL-WAITER>
<DOBJ? WINE-RED>
<SET OBJ ,PRSI>>
<AND <VERB? PUT-IN>
<DOBJ? SCARF NAPKIN TOWEL-WAITER>
<IOBJ? WINE-RED>
<SET OBJ ,PRSO>>>
<MOVE ,HANKY <LOC .OBJ>>
<FSET ,HANKY ,TAKEBIT>
<MOVE .OBJ ,LIMBO-FWD ;,GLOBAL-OBJECTS>
<FCLEAR .OBJ ,TAKEBIT>
<MOVE ,WINE-RED ,GLOBAL-OBJECTS>
<TELL
"The " D .OBJ " soaks up the wine, and the stain spreads to every nook
and cranny. Within a minute, you have a decent imitation of a " D ,HANKY
"." CR>)
(T <FOOD-F T>)>>
<OBJECT FOOD-1
(DESC "food")
(LOC GLOBAL-OBJECTS)
(ADJECTIVE FISH RUMPLED STILT'S)
(SYNONYM FISH HEADS LICE SKIN)
(FLAGS NARTICLEBIT)
(ACTION NO-FOOD-F)>
<OBJECT FOOD-2
(DESC "food")
(LOC GLOBAL-OBJECTS)
(ADJECTIVE EGGS)
(SYNONYM ;FOOD EGGS MCGUFFIN MACGUFFIN ;ITEM)
(FLAGS NARTICLEBIT)
(ACTION NO-FOOD-F)>
<OBJECT FOOD-3
(DESC "food")
(LOC GLOBAL-OBJECTS)
(SYNONYM MEAL SNACK BREAKFAST LUNCH DINNER SANDWICH BREAD)
(FLAGS NARTICLEBIT)
(ACTION NO-FOOD-F)>
<ROUTINE NO-FOOD-F ("AUX" PER)
<COND (,ON-TRAIN <SET PER ,WAITER>)
(T <SET PER ,WAITRESS>)>
<COND (<VERB? ASK-ABOUT BUY>
<TELL CTHE .PER " shakes" HIS .PER>
<THIS-IS-IT ,FOOD>
<THIS-IS-IT .PER>
<TELL
" head and points to the first item on the menu, which you find unreadable."
CR>)>>
<ROUTINE TABLE? (RM)
<COND (<==? .RM ,CAFE> ,COUNTER-CAFE)
(<==? .RM ,BOOTH-1> ,TABLE-1)
(<==? .RM ,BOOTH-2> ,TABLE-2)
(<==? .RM ,BOOTH-3> ,TABLE-3)>>
<OBJECT LANGUAGE
(LOC GLOBAL-OBJECTS)
(DESC "language")
(ADJECTIVE FROTZIAN FOREIGN THEIR HIS ;HER)
(SYNONYM LANGUAGE FROTZIAN)
(ACTION LANGUAGE-F)>
<ROUTINE LANGUAGE-F ()
<COND (<VERB? ANALYZE LEARN>
<TELL
"Maybe you should have taken your company's offer to pay for language
lessons before you started this trip. After all, English isn't spoken
everywhere." CR>)>>
<OBJECT GESTURE
(LOC GLOBAL-OBJECTS)
(DESC "gesture")
(ADJECTIVE FROTZIAN FOREIGN THEIR HIS ;HER NASTY)
(SYNONYM GESTURE)
(ACTION GESTURE-F)>
<ROUTINE GESTURE-F ("AUX" P)
<COND (<VERB? ANALYZE LEARN>
<TELL
"Maybe you should have taken your company's offer to pay for gesture
lessons before you started this trip. After all, English gestures aren't used
everywhere." CR>)
(<VERB? MAKE>
<COND (<AND ,PRSI <FSET? ,PRSI ,PERSONBIT>>
<SET P ,PRSI>)
(<QCONTEXT-GOOD?> <SET P ,QCONTEXT>)
(<NOT <SET P <FIND-FLAG ,HERE ,PERSONBIT ,WINNER>>>
<NOT-CLEAR-WHOM T>
<RTRUE>)>
<TELL
CTHE .P V .P make " a gesture right back. Somehow it looks nastier than
yours." CR>)>>
<OBJECT LIGHT-GLOBAL
(LOC GLOBAL-OBJECTS)
(DESC "light")
(SYNONYM LIGHT SUNLIGHT MOONLIGHT)>
<OBJECT GAME
(LOC GLOBAL-OBJECTS)
(DESC ;"STEAM AND VARIATIONS" "CHECKPOINT" ;"SEVEN SHADOWS")
(ADJECTIVE SPY SHORT LONG)
(SYNONYM THRILLER GAME CHECKPOINT)
(FLAGS NARTICLEBIT)
(ACTION GAME-F)>
<ROUTINE GAME-F ()
<COND (<VERB? EXAMINE PLAY READ>
;<COND (<EQUAL? ,P-ADJ ;N ,W?SHORT> )>
<SETG CLOCK-WAIT T>
<TELL "(You're doing it now!)" CR>)>>
<OBJECT HANDS
(LOC GLOBAL-OBJECTS)
(DESC "your hands")
(SYNONYM HANDS)
(ADJECTIVE ;YOUR MY BARE)
(FLAGS NARTICLEBIT PLURALBIT)>
<OBJECT HEAD
(LOC GLOBAL-OBJECTS)
(DESC "your head")
(SYNONYM HEAD ;FACE)
(ADJECTIVE ;YOUR MY)
(FLAGS NARTICLEBIT)
(ACTION HEAD-F)>
<ROUTINE HEAD-F ()
<COND (<VERB? NOD>
<PERFORM ,V?YES>
<RTRUE>)
(<VERB? SHAKE>
<PERFORM ,V?NO>
<RTRUE>)>>