"VERBS for
PLANETFALL
(c) COPYRIGHT 1983 INFOCOM INC. ALL RIGHTS RESERVED"
<GLOBAL VERBOSE <>>
<GLOBAL SUPER-BRIEF <>>
<ROUTINE V-VERBOSE ()
<TELL "Maximum verbosity." CR CR>
<ROUTINE V-BRIEF ()
<TELL "Brief descriptions." CR>>
<ROUTINE V-SUPER-BRIEF ()
<TELL "Super-brief descriptions." CR>>
<ROUTINE V-LOOK ()
Ooh, touchy. This is the response if you type LOOK OBJECT instead of LOOK AT OBJECT or EXAMINE OBJECT.
Modern IF tools like Inform 7 have generally gone back to accepting LOOK OBJECT as a synonym. Honestly, I’m with Meretzky on this one.
<ROUTINE V-LOOK-CRETIN ()
<TELL
"This isn't a primitive two-word-parser adventure game. If you want
to look AT that object, please say so." CR>>
<ROUTINE V-FIRST-LOOK ()
<ROUTINE PRE-EXAMINE ()
<TELL "You can't see any">
<TELL " here!" CR>)>>
<ROUTINE V-EXAMINE ()
(T
<TELL "The " D ,PRSO " is closed." CR>)>)
(T
<TELL "I see nothing special about the " D ,PRSO "." CR>)>>
Whether the current location has light. Set by calling the LIT? routine.
<GLOBAL LIT <>>
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
<TELL "It is pitch black. You might be eaten by a grue." CR>
<TELL "There is light to the south." CR>)>
<RETURN <>>)>
<SET V? T>)>
<TELL ", in the " D <LOC ,WINNER>>)>
<CRLF>)>
<RTRUE>)
<TELL .STR CR>)
(T
<COND (<AND <NOT <EQUAL? ,HERE .AV>>
T>
<ROUTINE DESCRIBE-OBJECTS ("OPTIONAL" (V? <>))
(T
<TELL "You can't see anything in the dark." CR>)>>
"DESCRIBE-OBJECT -- takes object and flag. if flag is true will print a
long description (fdesc or ldesc), otherwise will print short."
<ROUTINE DESCRIBE-OBJECT (OBJ V? LEVEL "AUX" (STR <>) AV)
<COND (<AND <0? .LEVEL>
<RTRUE>)
<RTRUE>)
(<AND <0? .LEVEL>
<TELL .STR>)
(<AND <0? .LEVEL>>
<TELL "There is ">
<TELL "an ">)
(T
<TELL "a ">)>
<TELL D .OBJ " here.">)
(T
<TELL "An ">)
(T
<TELL "A ">)>
<TELL D .OBJ>
<COND (<FSET? .OBJ ,WORNBIT> <TELL " (being worn)">)>)>
<COND (<AND <0? .LEVEL>
<TELL " (outside the " D .AV ")">)>
<CRLF>
<ROUTINE PRINT-CONT (OBJ "OPTIONAL" (V? <>) (LEVEL 0)
"AUX" Y 1ST? AV STR (PV? <>) (INV? <>))
<COND (<NOT <SET Y <FIRST? .OBJ>>>
<RTRUE>)>
<COND (<AND <SET AV <LOC ,WINNER>>
T)
(T
<SET AV <>>)>
<SET 1ST? T>
<COND (<EQUAL? ,WINNER .OBJ <LOC .OBJ>>
<SET INV? T>)
(T
<REPEAT ()
<COND (<NOT .Y> <RETURN <NOT .1ST?>>)
(<EQUAL? .Y .AV> <SET PV? T>)
<TELL .STR CR>)>
<FIRST? .Y>>
<PRINT-CONT .Y .V? 0>)>)>
<SET Y <NEXT? .Y>>>)>
<SET Y <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .Y>
<COND (<AND .PV? .AV <FIRST? .AV>>
<PRINT-CONT .AV .V? .LEVEL>)>
<RETURN <NOT .1ST?>>)
<OR .INV?
<COND (.1ST?
<COND (<L? .LEVEL 0>
<SET LEVEL 0>)>)>
<SET LEVEL <+ 1 .LEVEL>>
<SET 1ST? <>>)>
<PRINT-CONT .Y .V? .LEVEL>)>)>
<SET Y <NEXT? .Y>>>>
<ROUTINE FIRSTER (OBJ LEVEL)
<TELL "You are carrying:" CR>)
<COND (<G? .LEVEL 0>
<TELL "Sitting on the " D .OBJ " is:" CR>)
<TELL "The " D .OBJ " is holding:" CR>)
(T
<TELL "The " D .OBJ " contains:" CR>)>)>>
<GLOBAL INTERNAL-MOVES 0>
<GLOBAL SCORE 0>
<GLOBAL DAY 1>
<ROUTINE SCORE-OBJ (OBJ)
<ROUTINE V-SCORE ("OPTIONAL" (ASK? T))
<TELL "Your score ">
<COND (.ASK?
<TELL "would be ">)
(T
<TELL "is ">)>
<TELL " (out of 80 points). It is Day ">
<TELL " of your adventure. Current Galactic Standard Time ">
<TELL "(adjusted to your local day-cycle) is ">
(T
(T
<TELL
"is impossible to determine, since you're not wearing your chronometer">)>
<TELL "." CR>
<TELL "This score gives you the rank of ">
<COND (<EQUAL? ,SCORE 80> <TELL "Galactic Overlord">)
(<G? ,SCORE 72> <TELL "Cluster Admiral">)
(<G? ,SCORE 64> <TELL "System Captain">)
(<G? ,SCORE 48> <TELL "Planetary Commodore">)
(<G? ,SCORE 36> <TELL "Lieutenant">)
(<G? ,SCORE 24> <TELL "Ensign First Class">)
(<G? ,SCORE 12> <TELL "Space Cadet">)
(T <TELL "Beginner">)>
<TELL "." CR>
This routine displays your score. Then, if you haven’t reached a story conclusion, it offers a “RESTART, RESTORE, or QUIT” choice.
(Infocom didn’t come up with this end-of-game convention until 1984, and they didn’t really standardize on it until 1985. This version of Planetfall is the first one that offers you that choice. Previous versions just asked you “In the interests of interstellar peace, would you like to play again?”)
<ROUTINE FINISH (DIED "OPTIONAL" (REPEATING <>))
<CRLF>
<COND (<NOT .REPEATING>
<COND (.DIED
<TELL CR
"Oh, well. According to the Treaty of Gishen IV, signed in 8747 GY, all
adventure game players must be given another chance after dying. In the
interests of interstellar peace..." CR>)>
)>
<TELL CR
"Would you like to restart the game from the beginning, restore a saved game
position, or end this session of the game? (Type RESTART, RESTORE, or QUIT.)"
CR CR ">">
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?RESTAR>
<RESTART>
<TELL "Failed." CR>
<FINISH <> T>)
(<EQUAL? <GET ,P-LEXV 1> ,W?RESTOR>
<COND (<RESTORE>
<TELL "Ok." CR>)
(T
<TELL "Failed." CR>
<FINISH <> T>)>)
(<EQUAL? <GET ,P-LEXV 1> ,W?QUIT ,W?Q>
<QUIT>)
(T
<FINISH <> T>)>>
<ROUTINE V-QUIT ()
<TELL CR "Floyd grins impishly. \"Giving up, huh?\"" CR>)>
<TELL CR "Do you wish to leave the game? (Y is affirmative): ">
<QUIT>)
(T
<TELL "Ok." CR>)>>
<ROUTINE YES? ()
<PRINTI ">">
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?YES ,W?Y>
<RTRUE>)
(T
<RFALSE>)>>
Print the title, release, and serial number. This release is branded as “interactive fiction”, replacing the “INTERLOGIC Science Fiction” label of the original release.
(But see MAIN-MENU.)
<ROUTINE V-VERSION ("AUX" (CNT 17))
<TELL
"PLANETFALL|
Infocom interactive fiction - a science fiction story|
Copyright (c) 1983 by Infocom, Inc. All rights reserved.|
">
<TELL
"PLANETFALL is a trademark of Infocom, Inc.|
Release ">
<PRINTN <BAND <GET 0 1> *3777*>>
<TELL " / Serial number ">
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> 23>
<RETURN>)
(T
<PRINTC <GETB 0 .CNT>>)>>
<CRLF>
<TELL CR
"\"Last version was better,\" says Floyd. \"More bugs. Bugs make
game fun.\"" CR>)>>
<ROUTINE V-AGAIN ("AUX" OBJ)
(T
<SET OBJ
<COND (<AND .OBJ
<RFATAL>)
(T
<RTRUE>)>)>>
This routine displays your demise and then calls FINISH.
<ROUTINE JIGS-UP (DESC "OPTIONAL" (PLAYER? <>))
<TELL .DESC CR>
<TELL CR
" **** You have died ****" CR>
<ROUTINE V-RESTORE ()
<TELL
"Floyd looks disappointed, but understanding. \"That part of the game was more
fun than this part,\" he admits." CR CR>)>
<COND (<RESTORE>
<TELL "Ok." CR>
)
(T
<TELL "Failed." CR>)>>
<ROUTINE V-SAVE ()
<TELL
"Floyd's eyes light up. \"Oh boy! Are we gonna try something
dangerous now?\"" CR CR>)>
<COND (<SAVE>
<TELL "Ok." CR>)
(T
<TELL "Failed." CR>)>>
<ROUTINE V-RESTART ()
<TELL "Floyd looks sad. \"Going away?\" he asks." CR>)>
<TELL CR "Do you wish to restart? (Y is affirmative): ">
<TELL "Restarting." CR>
<RESTART>
<TELL "Failed." CR>)>>
<CONSTANT REXIT 0>
<CONSTANT UEXIT 1>
<CONSTANT NEXIT 2>
<CONSTANT FEXIT 3>
<CONSTANT CEXIT 4>
<CONSTANT DEXIT 5>
<CONSTANT NEXITSTR 0>
<CONSTANT FEXITFCN 0>
<CONSTANT CEXITFLAG 1>
<CONSTANT CEXITSTR 1>
<CONSTANT DEXITOBJ 1>
<CONSTANT DEXITSTR 1>
<ROUTINE V-WALK-AROUND ()
<ROUTINE V-WALK-TO ()
<TELL "It's here!" CR>)
(T
<ROUTINE V-WALK ("AUX" PT PTS STR OBJ RM TEMP-ELAPSED)
<RTRUE>)
<- ,PRSO ,LOW-DIRECTION>>>
<COND (<EQUAL? .TEMP-ELAPSED 0>
<COND (<EQUAL? <SET PTS <PTSIZE .PT>> ,UEXIT>
<RFATAL>)
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
(T
<RFATAL>)>)
<TELL .STR CR>
<RFATAL>)
(T
<TELL "You can't go that way." CR>
<RFATAL>)>)
<TELL .STR CR>
<RFATAL>)
(T
<TELL "The " D .OBJ " is closed." CR>
<RFATAL>)>)>)
<PROB 75>>
"Oh, no! You have walked into the slavering fangs of a lurking grue!">)
(T
<TELL "You can't go that way." CR>
<RFATAL>)>>
<ROUTINE V-INVENTORY ()
(T
<TELL "You are empty-handed." CR>)>>
<GLOBAL INDENTS
<PTABLE ""
" "
" "
" "
" "
" ">>
<ROUTINE PRE-TAKE ()
<TELL "You already have it." CR>)
<RFALSE>)
<TELL "You can't reach into a closed container." CR>
<RTRUE>)
<RFALSE>)
<RFALSE>)
(T
<TELL "It's not in that!" CR>)>)
(T
<RFALSE>)>)
<TELL "You are in it, asteroid-brain!" CR>)>>
<ROUTINE V-TAKE ()
<COND (<EQUAL? <ITAKE> T>
<TELL "Taken." CR>)>>
<GLOBAL FUMBLE-NUMBER 7>
<GLOBAL FUMBLE-PROB 8>
<ROUTINE TRYTAKE ()
<RTRUE>)
<RTRUE>
(T
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" CNT OBJ)
<COND (.VB
<RFALSE>)
<COND (.VB
<TELL "Your load is too heavy." CR>)>
<RFATAL>)
<REPEAT ()
<SET OBJ <NEXT? .OBJ>>)
(T
<RETURN>)>>
<TELL
"Oh, no. The " D .OBJ " slips from your arms while taking the " D ,PRSO
" and both tumble to the ground." CR>
<TELL
"Unfortunately, the chemical spills out of the flask and evaporates." CR>)>
<TELL
"To make matters worse, the high-protein liquid spills all over
the place and then evaporates." CR>)>
<RFATAL>)
(T
<RTRUE>)>>
<ROUTINE PRE-PUT ()
<RFALSE>)>
<TELL "You can't while you're wearing it." CR>)
<TELL "Nice try." CR>)>>
<ROUTINE V-PUT ()
(T
<TELL "You can't do that." CR>
<RTRUE>)>
<TELL "The " D ,PRSI " isn't open." CR>)
<TELL "How can you do that?" CR>)
<TELL "The " D ,PRSO " is already in the " D ,PRSI "." CR>)
<TELL
"How can you put the " D ,PRSO " in the " D ,PRSI
" when the " D ,PRSI " is already in the " D ,PRSO "?" CR>)
<TELL "There's no room." CR>)
<RTRUE>)
(T
<TELL "Done." CR>)>>
<ROUTINE V-SLIDE ()
<ROUTINE PRE-GIVE ()
<ROUTINE PRE-SGIVE ()
<RTRUE>>
<ROUTINE V-GIVE ()
<TELL "You can't give ">
<TELL "an ">)
(T
<TELL "a ">)>
(T
<TELL "The " D ,PRSI " declines your offer." CR>)>>
<ROUTINE V-SGIVE ()
<TELL "Foo!" CR>>
<ROUTINE V-DROP ()
<TELL "Dropped." CR>)>>
<ROUTINE V-THROW ()
<TELL "Thrown." CR>)>>
<ROUTINE IDROP ()
<TELL "You're not carrying the " D ,PRSO "." CR>
<RFALSE>)
<RFALSE>)
<TELL "The " D ,PRSO " is closed." CR>
<RFALSE>)
(T
<RTRUE>)>>
<ROUTINE V-OPEN ("AUX" F STR)
<TELL
"You must be very clever to do that to the " D ,PRSO "." CR>)
(T
<TELL "The " D ,PRSO " is now open." CR>)
(<OR <NOT <FIRST? ,PRSO>>
<TELL "Opened." CR>)
(<AND <SET F <FIRST? ,PRSO>>
<NOT <NEXT? .F>>
<TELL "The " D ,PRSO " opens." CR>
<TELL .STR CR>)
(T
<TELL "Opening the " D ,PRSO " reveals ">
<TELL "." CR>)>)>)
(T
<TELL "The " D ,PRSO " cannot be opened." CR>)>>
<ROUTINE V-OPEN-WITH ()
<RTRUE>)
(T
<TELL "That doesn't work." CR>)>>
<ROUTINE PRINT-CONTENTS (OBJ "AUX" F N (1ST? T) (IT? <>) (TWO? <>))
<COND (<SET F <FIRST? .OBJ>>
<REPEAT ()
<SET N <NEXT? .F>>
<COND (.1ST?
<SET 1ST? <>>)
(T
<TELL ", ">
<COND (<NOT .N>
<TELL "and ">)>)>
<TELL "a " D .F>
<COND (<AND <NOT .IT?>
<NOT .TWO?>>
<SET IT? .F>)
(T
<SET TWO? T>
<SET IT? <>>)>
<SET F .N>
<COND (<NOT .F>
<COND (<AND .IT?
<NOT .TWO?>>
<RTRUE>)>>)>>
<ROUTINE V-CLOSE ()
<TELL "You can't do that to ">
<TELL "Closed." CR>)
(T
(T
<TELL "You cannot close that." CR>)>>
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
<COND (<SET X <FIRST? .OBJ>>
<REPEAT ()
<SET CNT <+ .CNT 1>>
<COND (<NOT <SET X <NEXT? .X>>>
<RETURN>)>>)>
.CNT>
"WEIGHT: Get sum of SIZEs of supplied object, recursing to the nth level."
<ROUTINE WEIGHT (OBJ "AUX" CONT (WT 0))
<COND (<SET CONT <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT <FSET? .CONT ,WORNBIT>>
<SET WT <+ .WT <WEIGHT .CONT>>>)>
<COND (<NOT <SET CONT <NEXT? .CONT>>> <RETURN>)>>)>
<GLOBAL COPR-NOTICE
" a transcript of interaction with PLANETFALL.|
PLANETFALL is a trademark of Infocom, Inc.|
Copyright (c) 1983 Infocom, Inc. All rights reserved.|">
<ROUTINE V-SCRIPT ()
<TELL
"Floyd hops around excitedly. \"Oh boy! I've never seen my name in print
before!\"" CR CR>)>
<PUT 0 8 <BOR <GET 0 8> 1>>
<ROUTINE V-UNSCRIPT ()
<TELL
"\"Can I have a copy of the printout?\" asks Floyd,
looking up at you." CR CR>)>
<PUT 0 8 <BAND <GET 0 8> -2>>
<RTRUE>>
<ROUTINE PRE-MOVE ()
<TELL "Why juggle objects?" CR>)>>
<ROUTINE V-MOVE ()
<TELL "Moving the " D ,PRSO " reveals nothing." CR>)
(T
<TELL "You can't move the " D ,PRSO "." CR>)>>
<ROUTINE V-LAMP-ON ()
(T
<TELL "The " D ,PRSO " is now on." CR>)>)
(T
<TELL "You can't turn that on." CR>)>
<RTRUE>>
<ROUTINE V-LAMP-OFF ()
(T
<TELL "The " D ,PRSO " is now off." CR>)>)
(T
<TELL "You can't turn that off." CR>)>
<RTRUE>>
<ROUTINE V-WAIT ()
<TELL "Time passes..." CR>
>
<ROUTINE PRE-BOARD ("AUX" AV)
<RFALSE>)
<TELL "You are already in it!" CR>)
(T
<RFALSE>)>)
(T
<TELL "I suppose you have a theory on boarding ">
<RFATAL>>
<ROUTINE V-BOARD ("AUX" AV)
<TELL "You are now in the " D ,PRSO "." CR>
<RTRUE>>
<ROUTINE V-DISEMBARK ()
<RTRUE>)
<RTRUE>)
(T
<TELL "You're not in that!" CR>
<RFATAL>)
(T
<ROUTINE OWN-FEET ()
<TELL "You're on your own feet again." CR>>
<ROUTINE V-STAND ()
<RTRUE>)
(T
<TELL "You are already standing, I think." CR>)>>
<ROUTINE GOTO (RM "OPTIONAL" (V? T) "AUX" (WLOC <LOC ,WINNER>) OLIT)
<COND (<AND <NOT .OLIT>
<PROB 75>>
"Oh, no! Something (a grue?) slithered into the room and devoured you!">
<RTRUE>)>
<RTRUE>)>
<COND (.V?
<RTRUE>>
<ROUTINE V-EAT ()
<TELL "I don't think that the " D ,PRSO " would agree with you." CR>>
<ROUTINE V-EAT-FROM ("AUX" X)
<TELL "It's closed." CR>)
(<NEXT? .X>
<TELL "There's more than one thing in the " D ,PRSO "." CR>)
(.X
<RTRUE>)
(T
<TELL "It's empty!" CR>)>>
<ROUTINE V-CURSE ()
<TELL "Such language from an Ensign in the Stellar Patrol!" CR>>
<ROUTINE V-LISTEN ()
<TELL "The " D ,PRSO " makes no sound." CR>>
<ROUTINE V-FOLLOW ()
<TELL "The " D ,PRSO " is right here!" CR>>
<ROUTINE V-LEAP ()
<TELL
"The " D ,PRSO " is too big to jump over." CR>)
(T
(T
<TELL "That would be a good trick." CR>)>)
(T
<ROUTINE V-SKIP ()
<ROUTINE V-LEAVE ()
<RTRUE>)
<RTRUE>)
(T
<ROUTINE V-HELLO ()
<TELL
"Until now, I've only heard demented Denebian Devils say \"Hello\" to ">
(T
<GLOBAL HELLOS
<PLTABLE "Hello."
"Nice weather we're having."
"Goodbye.">>
<ROUTINE V-HELP ()
<TELL
"If you're really stuck, you can order a complete map and InvisiClues
Hint Booklet using the order form in your game package." CR>>
<GLOBAL WHEEEEE
<PLTABLE
"You've spent too much time among the Leaping Loon-toads of Leonia."
"Having fun?"
"Wheeeeeee!!!">>
<ROUTINE PRE-READ ()
<TELL "It is impossible to read in the dark." CR>
<RTRUE>)>>
<ROUTINE V-READ ()
<TELL "How can I read ">
(T
<ROUTINE V-LOOK-UNDER ()
<TELL "There is nothing but ">
<TELL "slime">)
(T
<TELL "dust">)>
<TELL " there." CR>>
<ROUTINE V-LOOK-BEHIND ()
<ROUTINE V-LOOK-INSIDE ()
<TELL "There is nothing special to be seen." CR>)
<TELL
"The " D ,PRSO " is open, but I can't tell what's beyond it">)
(T
<TELL "The " D ,PRSO " is closed">)>
<TELL "." CR>)
<RTRUE>)
<COND (<AND <FIRST? ,PRSO>
<RTRUE>)
<TELL
"There is nothing on the " D ,PRSO "." CR>)
(T
<TELL "The " D ,PRSO " is empty." CR>)>)
(T
<TELL "The " D ,PRSO " is closed." CR>)>)
<TELL "You can see dimly through the " D ,PRSO "." CR>)
(T
<TELL "You can't look inside ">
<ROUTINE SEE-INSIDE? (OBJ)
<ROUTINE V-LOOK-DOWN ()
<RTRUE>>
<ROUTINE V-TURN ()
<TELL "You can't do that." CR>>
<ROUTINE V-LOCK ()
<ROUTINE V-UNLOCK ()
<ROUTINE V-ATTACK ()
<TELL "The " D ,PRSO " is frightened and backs away." CR>)
(T
<TELL "I've known strange beings, but attacking ">
<TELL D ,PRSO "???" CR>)>>
<ROUTINE V-KICK ()
<ROUTINE V-WAVE ()
<ROUTINE V-RUB ()
<ROUTINE V-PUSH ()
<TELL
"You probably want to use the TYPE command. Check your documentation." CR>)
<RTRUE>)
(T
<TELL "Push a number?!?" CR>)>)
<RTRUE>)
(T
<TELL "Push a number?!?" CR>)>)
<RTRUE>)
(T
<TELL "Push a number?!?" CR>)>)
(T
<TELL "Push a number?!?" CR>)>)
(T
<ROUTINE NO-BUTTON (NUMBER)
<TELL "There's no button here that's labelled with the number ">
<TELL "1">)
<TELL "2">)
<TELL "3">)>
<TELL "." CR>>
<ROUTINE V-PUSH-UP ()
<ROUTINE V-PUSH-DOWN ()
<ROUTINE V-PULL ()
<ROUTINE V-MUNG ()
<ROUTINE HACK-HACK (STR)
<GLOBAL HO-HUM
<PLTABLE
" isn't notably helpful."
" has no effect."
" is as worthwhile as cleaning a Grotch cage.">>
<ROUTINE WORD-TYPE (OBJ WORD "AUX" SYNS)
<- </ <PTSIZE .SYNS> 2> 1>>>
<ROUTINE V-KNOCK ()
<TELL "Nobody's home." CR>)
(T
<TELL "Why knock on ">
<ROUTINE V-YELL ()
<TELL "Aarrrrggggggghhhhhhhh!" CR>>
<ROUTINE BATTERY-FALLS ()
<TELL "The battery falls out." CR>>
<ROUTINE V-SHAKE ("AUX" X)
(T
<TELL "Shaken." CR>)>)
<TELL
"It sounds as if there is something inside the " D ,PRSO "." CR>)
<TELL
"Colored goo flies all over everything. Yechh!" CR>)
<REPEAT ()
<COND (<SET X <FIRST? ,PRSO>>
<REMOVE .X>)
(T
(T
<RETURN>)>>
<TELL
"The contents of the " D ,PRSO " spill onto the floor." CR>)
(T
<TELL "You have shaken the " D ,PRSO "." CR>)>)
<TELL "The " D ,PRSO " sounds empty." CR>)
(T
<TELL "Shaken." CR>)>>
<ROUTINE V-SHAKE-WITH ()
<RTRUE>)
(T
<TELL "You can't shake hands with ">
(T
<TELL "Huh?" CR>)>>
<ROUTINE V-SMELL ()
<TELL "It smells just like ">
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" TEE)
<COND (<SET TEE <GETPT .OBJ2 ,P?GLOBAL>>
<ZMEMQB .OBJ1 .TEE <- <PTSIZE .TEE> 1>>)>>
<ROUTINE V-SWIM ()
<TELL
"Not much else you can do here. Might try a direction next time, though." CR>)
(T
<TELL "You can't swim here!" CR>)>>
<ROUTINE V-SWIM-DIR ()
<TELL "Okay. You're still underwater." CR>)
(T
<RTRUE>)>>
<ROUTINE V-SWIM-UP ()
<RTRUE>)>>
<ROUTINE V-ALARM ()
<TELL "The " D ,PRSO " isn't sleeping." CR>>
<ROUTINE V-ZORK ()
<TELL "Gesundheit!" CR>>
<ROUTINE V-SIT ()
<TELL "(in the web)" CR>
<RTRUE>)
<TELL "(on the bed)" CR>
<RTRUE>)
(T
<TELL
"You recline on the floor for a bit, and then stand up again." CR>)>>
<ROUTINE V-SIT-DOWN ()
<RTRUE>)
(T
<RTRUE>)>>
<ROUTINE V-GO-UP ()
<ROUTINE V-CLIMB-ON ()
<RTRUE>)
(T
<TELL "You can't climb onto the " D ,PRSO "." CR>)>>
<ROUTINE V-CLIMB-FOO ()
(T
<RTRUE>)>>
<ROUTINE V-CLIMB-UP ("OPTIONAL" (DIR ,P?UP) (OBJ <>) "AUX" X)
<COND (<GETPT ,HERE .DIR>
<RTRUE>)
(<NOT .OBJ>
<TELL "You can't go that way." CR>)
(T
<TELL "Bizarre!" CR>)>>
<ROUTINE V-CLIMB-DOWN ()
<RTRUE>)
(T
<ROUTINE PRE-PUT-UNDER ()
<ROUTINE V-PUT-UNDER ()
<TELL "You can't do that." CR>>
<ROUTINE V-ENTER ()
<ROUTINE V-EXIT ()
<ROUTINE V-SEARCH ()
<TELL "You find nothing unusual." CR>>
<ROUTINE V-FIND ("AUX" (L <LOC ,PRSO>))
<TELL "You're around here somewhere..." CR>)
<TELL "You find it." CR>)
<TELL "You have it." CR>)
<TELL "It's right here." CR>)
<TELL "The " D .L " has it." CR>)
<TELL "It's in the " D .L "." CR>)
(ELSE
<TELL "Beats me." CR>)>>
<ROUTINE V-TELL ()
<TELL
"Talking to yourself is a sign of impending mental collapse." CR>
<RFATAL>)
(T
<TELL
"The " D, PRSO " looks at you expectantly, as though he thought you were
about to talk." CR>)>)
(T
<TELL "Talking to ">
<TELL "the ">)
(T
<TELL
D ,PRSO "? Dr. Quarnsboggle, the Feinstein's psychiatrist, would ">
<TELL "have been">)
(T
<TELL "be">)>
<TELL " fascinated to hear that." CR>
<RFATAL>)>>
<ROUTINE V-ASK-FOR ()
<TELL
"The " D ,PRSO " doesn't seem inclined to give up the " D ,PRSI "." CR>)
(T
<TELL
"The " D ,PRSO " isn't holding the " D ,PRSI "." CR>)>)
(T
<RTRUE>)>>
<ROUTINE V-SAY ("AUX" V)
<TELL "You must address the " D .V " directly." CR>)
(T
<ROUTINE V-TALK ()
<RTRUE>>
<ROUTINE V-ANSWER ()
<TELL "Nobody is awaiting your answer." CR>
<RTRUE>>
<ROUTINE V-REPLY ()
<TELL "It is hardly likely that the " D ,PRSO " is interested." CR>
<RTRUE>>
<ROUTINE V-KISS ()
<TELL "I'd sooner kiss a pile of Antarian swamp mold." CR>>
<ROUTINE V-RAPE ()
<TELL "What a (ahem!) strange idea." CR>>
<ROUTINE V-DIAGNOSE ()
<TELL "You are in perfect health." CR>)
(T
<TELL "You are ">
<TELL "severely">)
<TELL "very">)
<TELL "somewhat">)
(T
<TELL "a bit">)>
<TELL " sick and feverish." CR>)>
<TELL "You feel well-rested." CR>)
(T
<TELL "You feel ">
<TELL "phenomenally">)
<TELL "quite">)
(T
<TELL "sort of">)>
<TELL " tired." CR>)>
<TELL "You seem to be well-fed." CR>)
(T
<TELL "You seem to be ">
<TELL "awesomely phenomenally">)
<TELL "noticeably">)
(T
<TELL "fairly">)>
<TELL " thirsty and hungry." CR>)>>
<ROUTINE V-WEAR ()
<TELL "You are wearing the " D ,PRSO "." CR>
(T
<TELL
"They're out of fashion, and besides, it wouldn't fit." CR>)>>
<ROUTINE V-REMOVE ()
<RTRUE>)
(T
<RTRUE>)>>
<ROUTINE V-TAKE-OFF ()
<TELL "You are no longer wearing the " D ,PRSO "." CR>
(T
<TELL "You aren't wearing that." CR>)>>
<ROUTINE V-STEP-ON ()
<TELL "That's a silly thing to do." CR>>
<ROUTINE V-PUT-ON ()
<RTRUE>)
(T
<RTRUE>)>>
<ROUTINE V-NO ()
<TELL "You sound rather negative." CR>>
<ROUTINE V-YES ()
<TELL "You sound rather positive." CR>>
<ROUTINE V-MAYBE ()
<TELL "You sound rather indecisive." CR>>
<ROUTINE V-POINT ()
(T
<TELL "It's usually impolite to point." CR>)>>
<ROUTINE V-SET ()
<TELL
"You must specify a number to set the dial to." CR>)
(T
<TELL
"Turning the " D ,PRSO " accomplishes nothing." CR>)>)
(T
<TELL "Setting ">
<TELL D ,PRSO " is a strange concept." CR>)>>
<ROUTINE V-$VERIFY ()
If you type the debug command $VERIFY 502, the game displays the SERIAL value instead of doing the normal verification.
<COND (<AND <EQUAL? ,PRSO ,INTNUM>
(T
<TELL "Verifying..." CR>
<COND (<VERIFY>
<TELL "Game correct. (YAY!)" CR>)
(T
<TELL CR "** Game File Failure **" CR>)>)>>
This is not the public serial number (“851003”), but an internal serial or build number. Note that while it’s defined as 0 here, the compiled game file has the value 1. SERIAL must be updated by the compiler during the build process.
To see this value, type the debug command $VERIFY 502.
<CONSTANT SERIAL 0>
<ROUTINE V-$COMMAND ()
<DIRIN 1>
<RTRUE>>
<ROUTINE V-$RANDOM ()
<TELL "Illegal call to #RANDOM." CR>)
(T
<RTRUE>)>>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<ROUTINE V-$RECORD ()
<RTRUE>>
<ROUTINE V-$UNRECORD ()
<RTRUE>>
<ROUTINE V-STAND-ON ()
<TELL "Standing on ">
<TELL D ,PRSO " seems like a waste of time." CR>>
<ROUTINE V-REACH ()
<TELL "There is something">)
(T
<TELL "There is nothing">)>
<TELL " inside the " D ,PRSO "." CR>>
<ROUTINE V-REACH-FOR ()
<RTRUE>)
<TELL "It's here! Now what?" CR>)
(T
<TELL "It is out of reach." CR>)>>
<ROUTINE DO-WALK (DIR)
<RTRUE>>
<ROUTINE V-FLUSH ()
<TELL "Flush ">
<ROUTINE V-FLY ()
<TELL "Humans are not usually equipped for flying." CR>>
<ROUTINE V-SMILE ()
<TELL "How pleasant!" CR>>
<ROUTINE V-SALUTE ()
<TELL "The " D ,PRSO " fails to return your salute." CR>>
This compiled-out routine would have been invoked with the command Z. (In the compiled game, Z is just a synonym for WAIT.)
The symbol QUITTER is the MDL interrupt handler. (See MDL docs.) On Infocom’s mainframe interpreter, this routine sent it a ctrl-G, which would have paused the interpreter and allowed low-level debugging.
%<COND (<NOT <GASSIGNED? PREDGEN>>
<ROUTINE V-ESCAPE ()
<QUITTER <ASCII 7> ,INCHAN>>)>
<ROUTINE V-ATTRACT ()
<TELL "Nothing interesting happens." CR>>
<ROUTINE V-ZATTRACT ()
<RTRUE>>
<ROUTINE V-SPAN ()
<TELL "You can't." CR>>
<ROUTINE NUMBERS-ONLY ()
<TELL
"This keyboard only has numeric keys. You can type numbers on it, but
not words." CR>>
<ROUTINE V-TYPE ()
<TELL
"You notice the walls of the booth sliding away in all directions, followed
by a momentary queasiness in the pit of your stomach..." CR CR>
<TELL
"After a pause a recorded voice says \"There are no one-digit computer
sectors...clearing entry...please type damaged sector number.\"" CR>)
<TELL
"A recorded voice says \"Databanks indicate no computer sector corresponding
to that number. Please check with your supervisor.\"" CR>)
(T
"Ooops! You seem to have transported yourself into an active sector of the
computer. You are fried by powerful electric currents.">)>)
(T
<TELL
"A recording says \"Internal computer repair booth not activated.\"" CR>)>)
(T
<TELL "Type on what???" CR>)>>
<ROUTINE PRE-SZAP ()
<RTRUE>>
<ROUTINE PRE-ZAP ()
<RFALSE>)
<RFALSE>)
<RTRUE>)
(T
<TELL "You have nothing to shoot it with." CR>)>>
<ROUTINE V-ZAP ()
<TELL "You can't shoot that." CR>)
<TELL "At what?">)
(T
<TELL "Nothing happens." CR>)>>
<ROUTINE V-SZAP ()
<TELL "Zap!" CR>>
<ROUTINE V-SCRUB ()
<TELL "You don't have anything to scrub with!" CR>)
<TELL "You can't scrub something with that!" CR>)
<TELL "The " D ,PRSO " prefers cleaning himself." CR>)
(T
<TELL "The " D ,PRSO " is a bit shinier now." CR>)>>
<ROUTINE V-POUR ()
<TELL "Pouring or spilling non-liquids is specifically forbidden
by section 17.9.2 of the Galactic Adventure Game Compendium of Rules." CR>>
<ROUTINE V-EMPTY ("AUX" X)
<TELL "You can't empty it when it's closed!" CR>)
<REPEAT ()
<COND (<SET X <FIRST? ,PRSO>>
<REMOVE .X>)
(T
(T
<RETURN>)>>
<TELL "The " D ,PRSO " is now empty." CR>)
(T
<TELL "There's nothing in the " D ,PRSO "." CR>)>>
<ROUTINE V-THROW-OFF ()
<TELL "It's difficult to see how that can be done." CR>>
<ROUTINE V-SLEEP ()
<TELL "You're not tired!" CR>)
<TELL "You'll probably be asleep before you know it." CR>)
(T
<TELL
"Civilized members of society usually sleep in beds." CR>)>>
<ROUTINE V-FIX-IT ()
<TELL
"You shouldn't expect sweeping general commands like this to work. If you
want to repair something, you must perform the specific steps required." CR>>
<ROUTINE V-OIL ()
<RTRUE>)
(T
<TELL "Oil it with what?" CR>)>)
<TELL "Floyd thanks you for your thoughtfulness." CR>)
(T
<TELL "The " D, PRSO " doesn't need oiling." CR>)>)
(T
<TELL "You can't use ">
<TELL "an ">)
(T
<TELL "a ">)>
<TELL D ,PRSI " as an oil can!" CR>)>>
<ROUTINE V-SHOW ()
<RTRUE>)
<TELL "The " D ,PRSI " looks at the " D ,PRSO "." CR>)
(T
<TELL "Why would you want to show something to ">
<ROUTINE V-INSERT ()
<TELL "(into the spool reader)" CR>
<RTRUE>)
<TELL "(into the niche)" CR>
<RTRUE>)
(T
<TELL
"You'll have to specify where you want to put the " D ,PRSO "." CR>)>>
<ROUTINE V-TASTE ()
<TELL "It tastes edible." CR>)
<TELL "It burns your tongue." CR>)
(T
<TELL "It tastes just like ">
<ROUTINE V-ZESCAPE ()
<TELL "Houdini himself would be stumped by this cell." CR>)
(T
<TELL
"There is no escape. We control the horizontal. We control the vertical.
We control the disk drives..." CR>)>>
<ROUTINE V-TIME ()
<CRLF>)
(T
<TELL
"It's hard to say, since you've removed your chronometer." CR>)>>
<ROUTINE V-PLAY ()
<TELL "How does one play ">
<ROUTINE V-PLAY-WITH ()
<RTRUE>)
(T
<TELL "I sometimes wonder about your mental health." CR>)>>
<ROUTINE V-SCOLD ()
<RTRUE>)
(T
<TELL
"For some reason, the " D, PRSO " doesn't seem too chagrined." CR>)>>
<ROUTINE ROB (WHO WHERE "AUX" N X)
<SET X <FIRST? .WHO>>
<REPEAT ()
<COND (<NOT .X>
<RTRUE>)
(T
<SET N <NEXT? .X>>
<MOVE .X ,WHERE>
<SET X .N>)>>>
A number of handy cheat codes, now commented out. The commands would have been $CRAG, $FORK, $CARDS, $BOOTH, $FIX.
This is a quote from _Alice’s Restaurant_, not a harsh indictment of the cheater. Or, well, both, I suppose.
<GLOBAL YUKS
<PLTABLE
"Fat chance."
"A valiant attempt."
"You can't be serious."
"Not bloody likely."
"An interesting idea..."
"What a concept!">>
<ROUTINE THIS-IS-IT (OBJ)
<ROUTINE ACCESSIBLE? (OBJ "AUX" (L <LOC .OBJ>))
<RFALSE>)
<RTRUE>)
(T
<RFALSE>)>)
(<NOT .L>
<RFALSE>)
<RTRUE>)
<RTRUE>)
<RFALSE>)
<RTRUE>)
<ACCESSIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE VISIBLE? (OBJ "AUX" (L <LOC .OBJ>))
<RTRUE>)
<VISIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE A-AN ()
<TELL "an ">)
(T
<TELL "a ">)>>
<ROUTINE ALREADY (ON-OFF "OPTIONAL" (OBJ <>))
<COND (.OBJ
<TELL "The " D .OBJ " is ">)
(T
<TELL "It's ">)>
<TELL "already " .ON-OFF "." CR>>
<ROUTINE NOT-HOLDING ()
<TELL "You're not holding the " D ,PRSO "." CR>>
<ROUTINE TAKE-IT-OFF ()
<TELL "You'll have to take it off, first." CR>>
<ROUTINE ANYMORE ()
<TELL "You can't see that anymore." CR>>
<ROUTINE FIXED-FONT-ON ()
<PUT 0 8 <BOR <GET 0 8> 2>>>
<ROUTINE FIXED-FONT-OFF ()
<PUT 0 8 <BAND <GET 0 8> -3>>>