zork3/verbs.diffs

3274 lines
99 KiB
Plaintext

;COMPARISON OF SS:<ZORK2>GVERBS.ZIL.426 AND SS:<ZORK3>VERBS.ZIL.103
;OPTIONS ARE /3
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-1 (0)
"Generic VERBS file for
The ZORK Trilogy
started on 7/25/83 by SEM"
^L
"Verb Functions for Game Commands"
**** FILE SS:<ZORK3>VERBS.ZIL.103, 1-1 (0)
"VERBS3 for
ZORK III: The Dungeon Master
Copyright 1982 Infocom, Inc. All Rights Reserved.
"
"SUBTITLE DESCRIBE THE UNIVERSE"
"SUBTITLE SETTINGS FOR VARIOUS LEVELS OF DESCRIPTION"
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-27 (537)
;"V-DIAGNOSE is in ACTIONS.ZIL"
<ROUTINE V-INVENTORY ()
<COND (<FIRST? ,WINNER> <PRINT-CONT ,WINNER>)
(T <TELL "You are empty-handed." CR>)>>
<ROUTINE FINISH ("AUX" WRD)
<V-SCORE>
<REPEAT ()
<CRLF>
<TELL
"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):|
>">
<READ ,P-INBUF ,P-LEXV>
<SET WRD <GET ,P-LEXV 1>>
<COND (<EQUAL? .WRD ,W?RESTART>
<RESTART>
<TELL "Failed." CR>)
(<EQUAL? .WRD ,W?RESTORE>
<COND (<RESTORE>
<TELL "Ok." CR>)
(T
<TELL "Failed." CR>)>)
(<EQUAL? .WRD ,W?QUIT ,W?Q>
<QUIT>)>>>
<ROUTINE V-QUIT ("AUX" SCOR)
<V-SCORE>
<TELL
"Do you wish to leave the game? (Y is affirmative): ">
<COND (<YES?>
<QUIT>)
(ELSE <TELL "Ok." CR>)>>
<ROUTINE V-RESTART ()
<V-SCORE T>
<TELL "Do you wish to restart? (Y is affirmative): ">
<COND (<YES?>
<TELL "Restarting." CR>
<RESTART>
<TELL "Failed." CR>)>>
<ROUTINE V-RESTORE ()
<COND (<RESTORE>
<TELL "Ok." CR>
<V-FIRST-LOOK>)
(T
<TELL "Failed." CR>)>>
<ROUTINE V-SAVE ()
<COND (<SAVE>
<TELL "Ok." CR>)
(T
<TELL "Failed." CR>)>>
;"V-SCORE is in ACTIONS.ZIL"
<ROUTINE V-SCRIPT ()
<PUT 0 8 <BOR <GET 0 8> 1>>
<TELL "Here begins a transcript of interaction with" CR>
<V-VERSION>
<RTRUE>>
<ROUTINE V-UNSCRIPT ()
<TELL "Here ends a transcript of interaction with" CR>
<V-VERSION>
<PUT 0 8 <BAND <GET 0 8> -2>>
<RTRUE>>
<ROUTINE V-VERSION ("AUX" (CNT 17))
%<COND (<==? ,ZORK-NUMBER 1>
'<TELL "ZORK I: The Great Underground Empire|
Infocom interactive fiction - a fantasy story|
Copyright (c) 1981, 1982, 1983, 1984, 1985, 1986 Infocom, Inc. ">)
(<==? ,ZORK-NUMBER 2>
'<TELL "ZORK II: The Wizard of Frobozz|
Infocom interactive fiction - a fantasy story|
Copyright (c) 1981, 1982, 1983, 1986 Infocom, Inc. ">)
(T
'<TELL "ZORK III: The Dungeon Master|
Infocom interactive fiction - a fantasy story|
Copyright (c) 1982, 1983 Infocom, Inc. ">)>
<TELL "All rights reserved." CR>
;<COND (<NOT <==? <BAND <GETB 0 1> 8> 0>>
<TELL "Licensed to Tandy Corporation." CR>)>
<TELL "ZORK is a registered 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>>
<ROUTINE V-VERIFY ()
<TELL "Verifying disk..." CR>
<COND (<VERIFY>
<TELL "The disk is correct." CR>)
(T
<TELL CR "** Disk Failure **" CR>)>>
<ROUTINE V-COMMAND-FILE ()
<DIRIN 1>
<RTRUE>>
<ROUTINE V-RANDOM ()
<COND (<NOT <EQUAL? ,PRSO ,INTNUM>>
<TELL "Illegal call to #RND." CR>)
(T
<RANDOM <- 0 ,P-NUMBER>>
<RTRUE>)>>
<ROUTINE V-RECORD ()
<DIROUT 4>
<RTRUE>>
<ROUTINE V-UNRECORD ()
<DIROUT -4>
<RTRUE>>
^L
"Real Verb Functions"
<ROUTINE V-ADVENT ()
<TELL "A hollow voice says \"Fool.\"" CR>>
<ROUTINE V-AGAIN ("AUX" (OBJ <>))
<COND (<EQUAL? ,L-PRSA ,V?WALK>
<DO-WALK ,L-PRSO>)
(T
<COND (,L-PRSO
<COND (<OR <NOT <LOC ,L-PRSO>>
<FSET? ,L-PRSO ,INVISIBLE>>
<SET OBJ ,L-PRSO>)>)>
<COND (,L-PRSI
<COND (<OR <NOT <LOC ,L-PRSI>>
<FSET? ,L-PRSI ,INVISIBLE>>
<SET OBJ ,L-PRSI>)>)>
<COND (<AND .OBJ
<NOT <EQUAL? .OBJ ,PSEUDO-OBJECT ,ROOMS>>>
<TELL "You can't see the " D .OBJ " anymore." CR>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 1-28 (598)
\
"SUBTITLE DESCRIBERS"
;<ROUTINE V-RNAME ()
<TELL D ,HERE CR>>
;<ROUTINE V-OBJECTS ()
<DESCRIBE-OBJECTS T>>
;<ROUTINE V-ROOM ()
<DESCRIBE-ROOM T>>
<ROUTINE V-LOOK ()
<COND (<DESCRIBE-ROOM T>
<DESCRIBE-OBJECTS T>)>>
<ROUTINE V-FIRST-LOOK ()
<COND (<DESCRIBE-ROOM>
<COND (<NOT ,SUPER-BRIEF> <DESCRIBE-OBJECTS>)>)>>
<ROUTINE V-EXAMINE ()
<COND (<GETP ,PRSO ,P?TEXT>
<TELL <GETP ,PRSO ,P?TEXT> CR>)
(<OR <FSET? ,PRSO ,CONTBIT>
<FSET? ,PRSO ,DOORBIT>>
<V-LOOK-INSIDE>)
(ELSE
<TELL "I see nothing special about the "
D ,PRSO "." CR>)>>
<GLOBAL LIT <>>
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
<SET V? <OR .LOOK? ,VERBOSE>>
<COND (<NOT ,LIT>
<TELL
"It is pitch black.">
<COND (<NOT ,SPRAYED?>
<TELL " You are likely to be eaten by a grue.">)>
<CRLF>
<COND (<==? ,HERE ,DARK-2>
<TELL
"The ground continues to slope upwards away from the lake. You can barely
detect a dim light from the east." CR>)>
<RETURN <>>)>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<FSET ,HERE ,TOUCHBIT>
<SET V? T>)>
<COND (<IN? ,HERE ,ROOMS> <TELL D ,HERE CR>)>
<COND (<OR .LOOK? <NOT ,SUPER-BRIEF>>
<SET AV <LOC ,WINNER>>
<COND (<FSET? .AV ,VEHBIT>
<TELL "(You are in the " D .AV ".)" CR>)>
<COND (<AND .V? <APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>>
<RTRUE>)
(<AND .V? <SET STR <GETP ,HERE ,P?LDESC>>>
<TELL .STR CR>)
(T <APPLY <GETP ,HERE ,P?ACTION> ,M-FLASH>)>
<COND (<AND <NOT <==? ,HERE .AV>> <FSET .AV ,VEHBIT>>
<APPLY <GETP .AV ,P?ACTION> ,M-LOOK>)>)>
T>
<ROUTINE DESCRIBE-OBJECTS ("OPTIONAL" (V? <>))
<COND (,LIT
<COND (<FIRST? ,HERE>
<PRINT-CONT ,HERE <SET V? <OR .V? ,VERBOSE>> -1>)>)
(ELSE
<TELL "I 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."
<GLOBAL DESC-OBJECT <>>
<ROUTINE DESCRIBE-OBJECT (OBJ V? LEVEL "AUX" (STR <>) AV)
<SETG DESC-OBJECT .OBJ>
<COND (<AND <0? .LEVEL>
<APPLY <GETP .OBJ ,P?DESCFCN> ,M-OBJDESC>>
<RTRUE>)
(<AND <0? .LEVEL>
<OR <AND <NOT <FSET? .OBJ ,TOUCHBIT>>
<SET STR <GETP .OBJ ,P?FDESC>>>
<SET STR <GETP .OBJ ,P?LDESC>>>>
<TELL .STR>)
(<0? .LEVEL>
<TELL "There is a " D .OBJ " here.">)
(ELSE
<TELL <GET ,INDENTS .LEVEL>>
<TELL "A " D .OBJ>
<COND (<FSET? .OBJ ,WEARBIT> <TELL " (being worn)">)>)>
<COND (<AND <0? .LEVEL>
<SET AV <LOC ,WINNER>>
<FSET? .AV ,VEHBIT>>
<TELL " (outside the " D .AV ")">)>
<CRLF>
<COND (<AND <SEE-INSIDE? .OBJ> <FIRST? .OBJ>>
<PRINT-CONT .OBJ .V? .LEVEL>)>>
<ROUTINE PRINT-CONT (OBJ "OPTIONAL" (V? <>) (LEVEL 0)
"AUX" Y 1ST? AV STR (PV? <>) (INV? <>))
#DECL ((OBJ) OBJECT (LEVEL) FIX)
<COND (<NOT <SET Y <FIRST? .OBJ>>> <RTRUE>)>
<COND (<AND <SET AV <LOC ,WINNER>> <FSET? .AV ,VEHBIT>>
T)
(ELSE <SET AV <>>)>
<SET 1ST? T>
<COND (<EQUAL? ,WINNER .OBJ <LOC .OBJ>>
<SET INV? T>)
(ELSE
<REPEAT ()
<COND (<NOT .Y> <RETURN <NOT .1ST?>>)
(<==? .Y .AV> <SET PV? T>)
(<==? .Y ,WINNER>)
(<AND <NOT <FSET? .Y ,INVISIBLE>>
<NOT <FSET? .Y ,TOUCHBIT>>
<SET STR <GETP .Y ,P?FDESC>>>
<COND (<NOT <FSET? .Y ,NDESCBIT>>
<TELL .STR CR>)>
<COND (<AND <SEE-INSIDE? .Y>
<NOT <GETP <LOC .Y> ,P?DESCFCN>>
<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?>>)
(<EQUAL? .Y .AV ,ADVENTURER>)
(<AND <NOT <FSET? .Y ,INVISIBLE>>
<OR .INV?
<FSET? .Y ,TOUCHBIT>
<NOT <GETP .Y ,P?FDESC>>>>
<COND (<NOT <FSET? .Y ,NDESCBIT>>
<COND (.1ST?
<COND (<FIRSTER .OBJ .LEVEL>
<COND (<L? .LEVEL 0>
<SET LEVEL 0>)>)>
<SET LEVEL <+ 1 .LEVEL>>
<SET 1ST? <>>)>
<DESCRIBE-OBJECT .Y .V? .LEVEL>)
(<AND <FIRST? .Y> <SEE-INSIDE? .Y>>
<PRINT-CONT .Y .V? .LEVEL>)>)>
<SET Y <NEXT? .Y>>>>
<ROUTINE FIRSTER (OBJ LEVEL)
<COND (<==? .OBJ ,WINNER>
<TELL "You are carrying:" CR>)
(<NOT <IN? .OBJ ,ROOMS>>
<COND (<G? .LEVEL 0>
<TELL <GET ,INDENTS .LEVEL>>)>
<COND (<FSET? .OBJ ,SURFACEBIT>
<TELL "Sitting on the " D .OBJ
" is:" CR>)
(ELSE
<TELL "The " D .OBJ
" contains:" CR>)>)>>
\
"SUBTITLE SCORING"
<GLOBAL MOVES 0>
<GLOBAL SCORE 0>
<GLOBAL BASE-SCORE 0>
<GLOBAL WON-FLAG <>>
<GLOBAL SCORE-MAX 7>
<ROUTINE V-SCORE ("OPTIONAL" (ASK? T))
#DECL ((ASK?) <OR ATOM FALSE>)
<TELL "Your potential is " N ,SCORE>
<TELL " of a possible " N ,SCORE-MAX ", in ">
<TELL N ,MOVES>
<COND (<1? ,MOVES> <TELL " move.">) (ELSE <TELL " moves.">)>
<CRLF>
,SCORE>
<ROUTINE FINISH ()
<V-SCORE>
<QUIT>>
<ROUTINE V-QUIT ("OPTIONAL" (ASK? T) "AUX" SCOR)
#DECL ((ASK?) <OR ATOM <PRIMTYPE LIST>> (SCOR) FIX)
<V-SCORE>
<COND (<OR <AND .ASK?
<TELL
"Do you wish to leave the game? (Y is affirmative): ">
<YES?>>
<NOT .ASK?>>
<QUIT>)
(ELSE <TELL "Ok." CR>)>>
<ROUTINE YES? ()
<PRINTI ">">
<READ ,P-INBUF ,P-LEXV>
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?YES ,W?Y>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE V-VERSION ("AUX" (CNT 17))
<TELL
"ZORK III: The Dungeon Master|
Infocom interactive fiction - a fantasy story|
Copyright 1982, 1983, 1984 by Infocom, Inc. All rights reserved.|
ZORK is a registered 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>>
<ROUTINE IN-HERE? (OBJ)
<OR <IN? .OBJ ,HERE>
<GLOBAL-IN? .OBJ ,HERE>>>
<ROUTINE V-AGAIN ("AUX" OBJ)
<COND (<==? ,L-PRSA ,V?WALK>
<PERFORM ,L-PRSA ,L-PRSO>)
(T
<SET OBJ
<COND (<AND ,L-PRSO <NOT <LOC ,L-PRSO>>>
,L-PRSO)
(<AND ,L-PRSI <NOT <LOC ,L-PRSO>>>
,L-PRSI)>>
<COND (.OBJ
<TELL "I can't see the " D .OBJ " anymore." CR>
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-177 (4252)
<ROUTINE V-ALARM ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<L? <GETP ,PRSO ,P?STRENGTH> 0>
<TELL "The " D ,PRSO " is rudely awakened." CR>
<AWAKEN ,PRSO>))
(T
'(<NULL-F> <RTRUE>))>
(T
<TELL
"He's wide awake, or haven't you noticed..." CR>)>)
(T
<TELL "The " D ,PRSO " isn't sleeping." CR>)>>
<ROUTINE V-ANSWER ()
<TELL "Nobody seems to be awaiting your answer." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>>
<ROUTINE V-ATTACK ()
<COND (<NOT <FSET? ,PRSO ,ACTORBIT>>
<TELL
"I've known strange people, but fighting a " D ,PRSO "?" CR>)
(<OR <NOT ,PRSI>
<EQUAL? ,PRSI ,HANDS>>
<TELL
"Trying to attack a " D ,PRSO " with your bare hands is suicidal." CR>)
(<NOT <IN? ,PRSI ,WINNER>>
<TELL "You aren't even holding the " D ,PRSI "." CR>)
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
<TELL
"Trying to attack the " D ,PRSO " with a " D ,PRSI " is suicidal." CR>)
(T
%<COND (<==? ,ZORK-NUMBER 1>
'<HERO-BLOW>)
(T
'<TELL "You can't." CR>)>)>>
<ROUTINE V-BACK ()
<TELL "Sorry, my memory is poor. Please give a direction." CR>>
<ROUTINE V-BLAST ()
<TELL "You can't blast anything by using words." CR>>
<ROUTINE PRE-BOARD ("AUX" AV)
<SET AV <LOC ,WINNER>>
<COND %<COND (<==? ,ZORK-NUMBER 3>
'(<EQUAL? ,PRSO ,WATER-CHANNEL>
<RFALSE>))
(T
'(<NULL-F> <RTRUE>))>
(<FSET? ,PRSO ,VEHBIT>
<COND (<NOT <IN? ,PRSO ,HERE>>
<TELL
"The " D ,PRSO " must be on the ground to be boarded." CR>)
(<FSET? .AV ,VEHBIT>
<TELL "You are already in the " D .AV "!" CR>)
(T
<RFALSE>)>)
(<EQUAL? ,PRSO ,WATER ,GLOBAL-WATER>
<PERFORM ,V?SWIM ,PRSO>
<RTRUE>)
(T
<TELL
"You have a theory on how to board a " D ,PRSO ", perhaps?" CR>)>
<RFATAL>>
<ROUTINE V-BOARD ("AUX" AV)
**** FILE SS:<ZORK3>VERBS.ZIL.103, 3-80 (7170)
\
"SUBTITLE DEATH AND TRANSFIGURATION"
<GLOBAL DEAD <>>
<GLOBAL DEATHS 0>
<GLOBAL LUCKY 1>
<ROUTINE JIGS-UP (DESC "OPTIONAL" (PLAYER? <>))
#DECL ((DESC) STRING (PLAYER?) <OR ATOM FALSE>)
<SETG SWORD-STATE 0>
<SETG P-STRENGTH 5>
<SETG S-STRENGTH 5>
<TELL .DESC CR>
<COND (<NOT <==? ,YEAR ,YEAR-PRESENT>> <QUIT>)>
<COND (<NOT <==? ,ADVENTURER ,WINNER>>
<TELL "
| **** The " D ,WINNER " has died ****
|
|">
<REMOVE ,WINNER>
<SETG WINNER ,ADVENTURER>
<SETG HERE <LOC ,WINNER>>
<RFATAL>)>
<TELL "
| **** You have died ****
|
|">
<COND (<G? <SETG DEATHS <+ ,DEATHS 1>> 3>
<TELL
"You feel yourself disembodied in a deep blackness. A voice from the void
speaks: \"I have waited a long age for you, my friend, but perhaps it has been
another that I have been seeking. Good night, oh worthy adventurer!\" It is
the last you hear." CR>
<QUIT>)
(T
<TELL
"You find yourself deep within the earth in a barren prison cell.
Outside the iron-barred window, you can see a great, fiery pit. Flames
leap up and very nearly sear your flesh. After a while, footfalls can
be heard in the distance, then closer and closer.... The door swings
open, and in walks an old man.|
|
He is dressed simply in a hood and cloak,
wearing a few simple jewels, carrying something under one arm, and
leaning on a wooden staff. A single key, as if to a massive prison cell,
hangs from his belt.|
|
He raises the staff toward you and you hear
him speak, as if in a dream: \"I await you, though your journey be long
and full of peril. Go then, and let me not wait long!\" You feel some
great power well up inside you and you fall to the floor. The next
moment, you are awakening, as if from a deep slumber." CR>)>
<MOVE ,CURRENT-LAMP ,ZORK2-STAIR>
<COND (<AND <IN? ,KEY ,WINNER>
<OR <EQUAL? ,HERE ,DARK-1 ,DARK-2 ,KEY-ROOM>
<EQUAL? ,HERE ,AQ-1 ,AQ-2>>>
<MOVE ,KEY ,KEY-ROOM>)>
<CRLF>
<GOTO ,ZORK2-STAIR>
<SETG P-CONT <>>
<RANDOMIZE-OBJECTS>
<KILL-INTERRUPTS>
<RFATAL>>
<ROUTINE RANDOMIZE-OBJECTS ("AUX" (R <>) F N L)
<SET N <FIRST? ,WINNER>>
<REPEAT ()
<SET F .N>
<COND (<NOT .F> <RETURN>)>
<SET N <NEXT? .F>>
<MOVE .F <RANDOM-ELEMENT ,DEAD-OBJ-LOCS>>>>
<GLOBAL DEAD-OBJ-LOCS
<LTABLE JUNCTION CLEARING DAMP-PASSAGE CREEPY-CRAWL TIGHT-SQUEEZE
FOGGY-ROOM DEAD-END>>
<ROUTINE KILL-INTERRUPTS ()
<DISABLE <INT I-MAN-LEAVES>>
<DISABLE <INT I-MAN-RETURNS>>
<DISABLE <INT I-VIEW-SNAP>>
<DISABLE <INT I-FOLIN>>
<RTRUE>>
<ROUTINE V-RESTORE ()
<COND (<RESTORE>
<TELL "Ok." CR>
<V-FIRST-LOOK>)
(T
<TELL "Failed." CR>)>>
<ROUTINE V-SAVE ()
<COND (<SAVE>
<TELL "Ok." CR>)
(T
<TELL "Failed." CR>)>>
<ROUTINE V-RESTART ()
<V-SCORE T>
<TELL "Do you wish to restart? (Y is affirmative): ">
<COND (<YES?>
<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 ()
<TELL "Use directions for movement here." CR>>
<ROUTINE V-LAUNCH ()
<COND (<FSET? ,PRSO ,VEHBIT>
<TELL "You can't launch that by saying \"launch\"!" CR>)
(T <TELL "How in blazes does one launch that?" CR>)>>
<ROUTINE GO-NEXT (TBL "AUX" VAL)
#DECL ((TBL) TABLE (VAL) ANY)
<COND (<SET VAL <LKP ,HERE .TBL>>
<GOTO .VAL>)>>
<ROUTINE LKP (ITM TBL "AUX" (CNT 0) (LEN <GET .TBL 0>))
#DECL ((ITM) ANY (TBL) TABLE (CNT LEN) FIX)
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .LEN>
<RFALSE>)
(<==? <GET .TBL .CNT> .ITM>
<COND (<==? .CNT .LEN> <RFALSE>)
(T
<RETURN <GET .TBL <+ .CNT 1>>>)>)>>>
<ROUTINE V-WALK ("AUX" PT PTS STR OBJ RM)
#DECL ((PT) <OR FALSE TABLE> (PTS) FIX (STR) <OR STRING FALSE>
(OBJ) OBJECT (RM) <OR FALSE OBJECT>)
<COND (<NOT ,P-WALK-DIR>
<PERFORM ,V?WALK-TO ,PRSO>
<RTRUE>)
(<SET PT <GETPT ,HERE ,PRSO>>
<COND (<==? <SET PTS <PTSIZE .PT>> ,UEXIT>
<GOTO <GETB .PT ,REXIT>>)
(<==? .PTS ,NEXIT>
<TELL <GET .PT ,NEXITSTR> CR>
<RFATAL>)
(<==? .PTS ,FEXIT>
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
<GOTO .RM>)
(<AND <==? ,HERE ,CP> ,CP-MOVED> <RTRUE>)
(T
<RFATAL>)>)
(<==? .PTS ,CEXIT>
<COND (<VALUE <GETB .PT ,CEXITFLAG>>
<GOTO <GETB .PT ,REXIT>>)
(<SET STR <GET .PT ,CEXITSTR>>
<TELL .STR CR>
<RFATAL>)
(T
<TELL "You can't go that way." CR>
<RFATAL>)>)
(<==? .PTS ,DEXIT>
<COND (<FSET? <SET OBJ <GETB .PT ,DEXITOBJ>> ,OPENBIT>
<GOTO <GETB .PT ,REXIT>>)
(<SET STR <GET .PT ,DEXITSTR>>
<TELL .STR CR>
<RFATAL>)
(T
<TELL "The " D .OBJ " is closed." CR>
<THIS-IS-IT .OBJ>
<RFATAL>)>)>)
(<AND <NOT ,LIT> <PROB 90>>
<COND (,SPRAYED?
<TELL
"There are odd noises in the darkness, and there is no exit in that
direction." CR>
<RFATAL>)
(<EQUAL? ,HERE ,DARK-1 ,DARK-2>
<JIGS-UP
"Oh, no! You have walked into a den of hungry grues and it's dinner time!">)
(T
<JIGS-UP
"Oh, no! You have walked into the slavering fangs of a lurking grue!">)>)
(T
<TELL "You can't go that way." CR>
<RFATAL>)>>
<ROUTINE THIS-IS-IT (OBJ)
<SETG P-IT-OBJECT .OBJ>
<SETG P-IT-LOC ,HERE>>
<ROUTINE V-INVENTORY ()
<COND (<FIRST? ,WINNER> <PRINT-CONT ,WINNER>)
(T <TELL "You are empty-handed." CR>)>>
<GLOBAL INDENTS
<TABLE ""
" "
" "
" "
" "
" ">>
\
<ROUTINE PRE-TAKE ()
<COND (<IN? ,PRSO ,WINNER>
<COND (<FSET? ,PRSO ,WEARBIT>
<TELL "You are already wearing it." CR>)
(T <TELL "You already have it." CR>)>)
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
<TELL "You can't reach that." CR>
<RTRUE>)
(,PRSI
<COND (<NOT <==? ,PRSI <LOC ,PRSO>>>
<TELL "The " D ,PRSO " isn't in the " D ,PRSI "." CR>)
(T
<SETG PRSI <>>
<RFALSE>)>)
(<==? ,PRSO <LOC ,WINNER>> <TELL "You are in it, loser!" CR>)>>
<ROUTINE V-TAKE ()
<COND (<==? <ITAKE> T>
<COND (<FSET? ,PRSO ,WEARBIT>
<TELL "You are now wearing the " D ,PRSO "." CR>)
(T <TELL "Taken." CR>)>)>>
<GLOBAL FUMBLE-NUMBER 7>
<GLOBAL FUMBLE-PROB 8>
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" CNT OBJ)
#DECL ((VB) <OR ATOM FALSE> (CNT) FIX (OBJ) OBJECT)
<COND (<NOT <FSET? ,PRSO ,TAKEBIT>>
<COND (.VB
<TELL <RANDOM-ELEMENT ,YUKS> CR>)>
<RFALSE>)
(<AND <NOT <IN? <LOC ,PRSO> ,WINNER>>
<G? <+ <WEIGHT ,PRSO> <WEIGHT ,WINNER>> ,LOAD-ALLOWED>>
<COND (.VB
<TELL "Your load is too heavy">
<COND (<L? ,LOAD-ALLOWED ,LOAD-MAX>
<TELL
", especially in light of your condition.">)
(ELSE <TELL ".">)>
<CRLF>)>
<RFATAL>)
(<AND <G? <SET CNT <CCOUNT ,WINNER>> ,FUMBLE-NUMBER>
<PROB <* .CNT ,FUMBLE-PROB>>>
<SET OBJ <FIRST? ,WINNER>>
<REPEAT ()
<SET OBJ <NEXT? .OBJ>>
<COND (<NOT <FSET? .OBJ ,WEARBIT>>
<RETURN>)>>
;"This must go! Chomping compiler strikes again"
<TELL "Oh, no. The " D .OBJ
" slips from your arms while taking the "
D ,PRSO "
and both tumble to the ground." CR>
<PERFORM ,V?DROP .OBJ>
<RFATAL>)
(T
<MOVE ,PRSO ,WINNER>
<FSET ,PRSO ,TOUCHBIT>
<RTRUE>)>>
<ROUTINE V-PUT-ON ()
<COND (<FSET? ,PRSI ,SURFACEBIT>
<V-PUT>)
(T <TELL "There's no good surface on the " D ,PRSI "." CR>)>>
<ROUTINE PRE-PUT ()
<COND (<==? ,PRSO ,SHORT-POLE> <RFALSE>)
(<OR <IN? ,PRSO ,GLOBAL-OBJECTS>
<NOT <FSET? ,PRSO ,TAKEBIT>>>
<TELL "Nice try." CR>)>>
<ROUTINE V-PUT ()
<COND (<OR <FSET? ,PRSI ,OPENBIT>
<OPENABLE? ,PRSI>
<FSET? ,PRSI ,VEHBIT>>)
(T
<TELL "I can't do that." CR>
<RTRUE>)>
<COND (<NOT <FSET? ,PRSI ,OPENBIT>>
<TELL "The " D ,PRSI " isn't open." CR>)
(<==? ,PRSI ,PRSO>
<TELL "How can you do that?" CR>)
(<IN? ,PRSO ,PRSI>
<TELL "The " D ,PRSO " is already in the " D ,PRSI "." CR>)
(<G? <- <+ <WEIGHT ,PRSI> <WEIGHT ,PRSO>>
<GETP ,PRSI ,P?SIZE>>
<GETP ,PRSI ,P?CAPACITY>>
<TELL "There's no room." CR>)
(<AND <NOT <HELD? ,PRSO>>
<NOT <ITAKE>>>
<RTRUE>)
(T
<MOVE ,PRSO ,PRSI>
<FSET ,PRSO ,TOUCHBIT>
<TELL "Done." CR>)>>
<ROUTINE PRE-DROP ()
<COND (<==? ,PRSO <LOC ,WINNER>>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)>>
<ROUTINE PRE-GIVE ()
<COND (<NOT <HELD? ,PRSO>>
<TELL
"That's easy for you to say since you don't even have it." CR>)>>
<ROUTINE PRE-SGIVE ()
<PERFORM ,V?GIVE ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE HELD? (OBJ)
<COND (<IN? .OBJ ,WINNER> <RTRUE>)
(<IN? .OBJ ,ROOMS> <RFALSE>)
(<IN? .OBJ ,GLOBAL-OBJECTS> <RFALSE>)
(<EQUAL? .OBJ 0> <RFALSE>)
(T <HELD? <LOC .OBJ>>)>>
<ROUTINE V-GIVE ()
<COND (<NOT <FSET? ,PRSI ,VICBIT>>
<TELL "You can't give a " D ,PRSO " to a " D ,PRSI "!" CR>)
(T <TELL "The " D ,PRSI " refuses it politely." CR>)>>
<ROUTINE V-SGIVE ()
<TELL "Foo!" CR>>
<ROUTINE V-DROP () <COND (<IDROP> <TELL "Dropped." CR>)>>
<ROUTINE V-THROW () <COND (<IDROP> <TELL "Thrown." CR>)>>
<ROUTINE IDROP
()
<COND (<AND <NOT <IN? ,PRSO ,WINNER>> <NOT <IN? <LOC ,PRSO> ,WINNER>>>
<TELL "You're not carrying the " D ,PRSO "." CR>
<RFALSE>)
(<AND <NOT <IN? ,PRSO ,WINNER>>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
<TELL "The " D ,PRSO " is closed." CR>
<RFALSE>)
(T
<MOVE ,PRSO <LOC ,WINNER>>
<RTRUE>)>>
\
<ROUTINE V-OPEN ("AUX" F STR)
<COND (<NOT <FSET? ,PRSO ,CONTBIT>>
<TELL "You must tell me how to do that to a " D ,PRSO "." CR>)
(<NOT <==? <GETP ,PRSO ,P?CAPACITY> 0>>
<COND (<FSET? ,PRSO ,OPENBIT> <TELL "It is already open." CR>)
(T
<FSET ,PRSO ,OPENBIT>
<COND (<OR <NOT <FIRST? ,PRSO>> <FSET? ,PRSO ,TRANSBIT>>
<TELL "Opened." CR>)
(<AND <SET F <FIRST? ,PRSO>>
<NOT <NEXT? .F>>
<SET STR <GETP .F ,P?FDESC>>>
<TELL "The " D ,PRSO " opens." CR>
<TELL .STR CR>)
(T
<TELL "Opening the " D ,PRSO " reveals ">
<PRINT-CONTENTS ,PRSO>
<TELL "." CR>)>)>)
(<FSET? ,PRSO ,DOORBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "It is already open." CR>)
(T
<TELL "The " D ,PRSO " opens." CR>
<FSET ,PRSO ,OPENBIT>)>)
(T <TELL "The " D ,PRSO " fails to open." CR>)>>
<ROUTINE PRINT-CONTENTS (OBJ "AUX" F N (1ST? T))
#DECL ((OBJ) OBJECT (F N) <OR FALSE OBJECT>)
<COND (<SET F <FIRST? .OBJ>>
<REPEAT ()
<SET N <NEXT? .F>>
<COND (.1ST? <SET 1ST? <>>)
(ELSE
<TELL ", ">
<COND (<NOT .N> <TELL "and ">)>)>
<TELL "a " D .F>
<SET F .N>
<COND (<NOT .F> <RETURN>)>>)>>
<ROUTINE V-CLOSE ()
<COND (<NOT <FSET? ,PRSO ,CONTBIT>>
<TELL "You must tell me how to do that to a " D ,PRSO "." CR>)
(<AND <NOT <FSET? ,PRSO ,SURFACEBIT>>
<NOT <==? <GETP ,PRSO ,P?CAPACITY> 0>>>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "Closed." CR>)
(T <TELL "It is already closed." CR>)>)
(<FSET? ,PRSO ,DOORBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "The " D ,PRSO " is now closed." CR>
<FCLEAR ,PRSO ,OPENBIT>)
(T <TELL "It is already closed." CR>)>)
(ELSE
<TELL "You cannot close that." CR>)>>
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
<COND (<SET X <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT <FSET? .X ,WEARBIT>>
<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))
#DECL ((OBJ) OBJECT (CONT) <OR FALSE OBJECT> (WT) FIX)
<COND (<SET CONT <FIRST? .OBJ>>
<REPEAT ()
<COND (<AND <==? .OBJ ,PLAYER> <FSET? .CONT ,WEARBIT>>
<SET WT <+ .WT 1>>)
(T <SET WT <+ .WT <WEIGHT .CONT>>>)>
<COND (<NOT <SET CONT <NEXT? .CONT>>> <RETURN>)>>)>
<+ .WT <GETP .OBJ ,P?SIZE>>>
<ROUTINE V-BUG ()
<TELL
"If there is a problem here, it is unintentional. You may report
your problem to the address provided in your documentation." CR>>
<GLOBAL COPR-NOTICE
" a transcript of interaction with ZORK III.|
ZORK is a trademark of Infocom, Inc.|
Copyright (c) 1982 Infocom, Inc. All rights reserved.|">
<ROUTINE V-SCRIPT ()
<PUT 0 8 <BOR <GET 0 8> 1>>
<TELL "Here begins" ,COPR-NOTICE CR>>
<ROUTINE V-UNSCRIPT ()
<TELL "Here ends" ,COPR-NOTICE CR>
<PUT 0 8 <BAND <GET 0 8> -2>>
<RTRUE>>
<ROUTINE PRE-MOVE
()
<COND (<HELD? ,PRSO> <TELL "I don't juggle objects!" CR>)>>
<ROUTINE V-MOVE ()
<COND (<FSET? ,PRSO ,TAKEBIT>
<TELL "Moving the " D ,PRSO " reveals nothing." CR>)
(T <TELL "You can't move the " D ,PRSO "." CR>)>>
<ROUTINE V-LAMP-ON
()
<COND (<FSET? ,PRSO ,LIGHTBIT>
<COND (<FSET? ,PRSO ,ONBIT> <TELL "It is already on." CR>)
(ELSE
<FSET ,PRSO ,ONBIT>
<TELL "The " D ,PRSO " is now on." CR>
<COND (<NOT ,LIT>
<SETG LIT <LIT? ,HERE>>
<CRLF>
<V-LOOK>)>)>)
(T
<TELL "You can't turn that on." CR>)>
<RTRUE>>
<ROUTINE V-LAMP-OFF
()
<COND (<FSET? ,PRSO ,LIGHTBIT>
<COND (<NOT <FSET? ,PRSO ,ONBIT>>
<TELL "It is already off." CR>)
(ELSE
<FCLEAR ,PRSO ,ONBIT>
<COND (,LIT
<SETG LIT <LIT? ,HERE>>)>
<TELL "The " D ,PRSO " is now off." CR>
<COND (<NOT <SETG LIT <LIT? ,HERE>>>
<TELL "It is now pitch black." CR>)>)>)
(ELSE <TELL "You can't turn that off." CR>)>
<RTRUE>>
<ROUTINE V-$WAIT ()
<COND (<==? ,PRSO ,INTNUM> <V-WAIT <- ,P-NUMBER 1>>)
(T <TELL "No." CR>)>>
<ROUTINE V-WAIT ("OPTIONAL" (NUM 3))
#DECL ((NUM) FIX)
<TELL "Time passes..." CR>
<REPEAT ()
<COND (<L? <SET NUM <- .NUM 1>> 0> <RETURN>)
(<CLOCKER> <RETURN>)>
<SETG MOVES <+ ,MOVES 1>>>
<SETG CLOCK-WAIT T>>
<ROUTINE PRE-BOARD
("AUX" AV)
<SET AV <LOC ,WINNER>>
<COND (<==? ,PRSO ,WATER-CHANNEL> <RFALSE>)
(<FSET? ,PRSO ,VEHBIT>
<COND (<FSET? .AV ,VEHBIT>
<TELL "You are already in the " D .AV "!" CR>)
(T <RFALSE>)>)
(T
<TELL "I suppose you have a theory on boarding a "
D
,PRSO
"." CR>)>
<RFATAL>>
<ROUTINE V-BOARD
("AUX" AV)
#DECL ((AV) OBJECT)
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-251 (6404)
<ROUTINE V-BREATHE ()
<PERFORM ,V?INFLATE ,PRSO ,LUNGS>>
<ROUTINE V-BRUSH ()
<TELL "If you wish, but heaven only knows why." CR>>
<ROUTINE V-BUG ()
<TELL
"Bug? Not in a flawless program like this! (Cough, cough)." CR>>
<ROUTINE TELL-NO-PRSI ()
<TELL "You didn't say with what!" CR>>
<ROUTINE PRE-BURN ()
<COND (<NOT ,PRSI>
<TELL-NO-PRSI>)
(<FLAMING? ,PRSI>
<RFALSE>)
(T
<TELL "With a " D ,PRSI "??!?" CR>)>>
<ROUTINE V-BURN ()
<COND %<COND (<==? ,ZORK-NUMBER 2>
'(<EQUAL? <LOC ,PRSO> ,RECEPTACLE>
<BALLOON-BURN>
<RTRUE>))
(T
'(<NULL-F> <RFALSE>))>
(<FSET? ,PRSO ,BURNBIT>
<COND (<OR <IN? ,PRSO ,WINNER>
<IN? ,WINNER ,PRSO>>
<REMOVE-CAREFULLY ,PRSO>
<TELL "The " D ,PRSO>
<TELL
" catches fire. Unfortunately, you were ">
<COND (<IN? ,WINNER ,PRSO>
<TELL "in">)
(T <TELL "holding">)>
<JIGS-UP " it at the time.">)
(T
<REMOVE-CAREFULLY ,PRSO>
<TELL
"The " D ,PRSO " catches fire and is consumed." CR>)>)
(T
<TELL "You can't burn a " D ,PRSO "." CR>)>>
<ROUTINE V-CHOMP ()
<TELL "Preposterous!" CR>>
<ROUTINE V-CLIMB-DOWN () <V-CLIMB-UP ,P?DOWN ,PRSO>>
<ROUTINE V-CLIMB-FOO ()
<V-CLIMB-UP ,P?UP ,PRSO>>
<ROUTINE V-CLIMB-ON ()
<COND (<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(T
<TELL "You can't climb onto the " D ,PRSO "." CR>)>>
<ROUTINE V-CLIMB-UP ("OPTIONAL" (DIR ,P?UP) (OBJ <>) "AUX" X TX)
<COND (<AND <NOT .OBJ> <NOT <EQUAL? ,PRSO ,ROOMS>>>
<SET OBJ ,PRSO>)>
<COND (<SET TX <GETPT ,HERE .DIR>>
<COND (.OBJ
<SET X <PTSIZE .TX>>
<COND (<OR <EQUAL? .X ,NEXIT>
<AND <EQUAL? .X ,CEXIT ,DEXIT ,UEXIT>
<NOT <GLOBAL-IN? ,PRSO <GETB .TX 0>>>>>
<TELL "The " D .OBJ " do">
<COND (<NOT <EQUAL? .OBJ ,STAIRS>>
<TELL "es">)>
<TELL "n't lead ">
<COND (<==? .DIR ,P?UP>
<TELL "up">)
(T <TELL "down">)>
<TELL "ward." CR>
<RTRUE>)>)>
<DO-WALK .DIR>
<RTRUE>)
(<AND .OBJ
<ZMEMQ ,W?WALL
<SET X <GETPT ,PRSO ,P?SYNONYM>> <PTSIZE .X>>>
<TELL "Climbing the walls is to no avail." CR>)
(%<COND (<==? ,ZORK-NUMBER 1>
'<OR <EQUAL? .OBJ ,TREE>
<AND <NOT .OBJ>
<GLOBAL-IN? ,TREE ,HERE>>>)
(ELSE '<NULL-F>)>
<TELL "There are no climbable trees here." CR>
<RTRUE>)
(<NOT .OBJ>
<TELL "You can't go that way." CR>)
(T
<TELL "You can't do that!" CR>)>>
<ROUTINE V-CLOSE ()
<COND (<AND <NOT <FSET? ,PRSO ,CONTBIT>>
<NOT <FSET? ,PRSO ,DOORBIT>>>
<TELL "You must tell me how to do that to a " D ,PRSO "." CR>)
(<AND <NOT <FSET? ,PRSO ,SURFACEBIT>>
<NOT <EQUAL? <GETP ,PRSO ,P?CAPACITY> 0>>>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "Closed." CR>
<COND (<AND ,LIT <NOT <SETG LIT <LIT? ,HERE>>>>
<TELL "It is now pitch black." CR>)>
<RTRUE>)
(T
<TELL "It is already closed." CR>)>)
(<FSET? ,PRSO ,DOORBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<FCLEAR ,PRSO ,OPENBIT>
<TELL "The " D ,PRSO " is now closed." CR>)
(T
<TELL "It is already closed." CR>)>)
(T
<TELL "You cannot close that." CR>)>>
<ROUTINE V-COMMAND ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "The " D ,PRSO " pays no attention." CR>)
(T
<TELL "You cannot talk to that!" CR>)>>
<ROUTINE V-COUNT ()
<COND (<EQUAL? ,PRSO ,BLESSINGS>
<TELL "Well, for one, you are playing Zork..." CR>)
(T
<TELL "You have lost your mind." CR>)>>
<ROUTINE V-CROSS ()
<TELL "You can't cross that!" CR>>
<ROUTINE V-CURSES ()
<COND (,PRSO
<COND (<FSET? ,PRSO ,ACTORBIT>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 6-175 (22488)
<ROUTINE V-DISEMBARK
()
<COND (<NOT <==? <LOC ,WINNER> ,PRSO>>
<TELL "You're not in that!" CR>
<RFATAL>)
(<FSET? ,HERE ,RLANDBIT>
<TELL "You are on your own feet again." CR>
<MOVE ,WINNER ,HERE>)
(T
<TELL
"You realize that getting out here would be fatal." CR>
<RFATAL>)>>
<ROUTINE V-BLAST ()
<TELL "You can't blast anything by using words." CR>>
<ROUTINE GOTO (RM "OPTIONAL" (V? T)
"AUX" (LB <FSET? .RM ,RLANDBIT>) (WLOC <LOC ,WINNER>)
(AV <>) OLIT)
#DECL ((RM WLOC) OBJECT (LB) <OR ATOM FALSE> (AV) <OR FALSE FIX>)
<SET OLIT ,LIT>
<COND (<FSET? .WLOC ,VEHBIT>
<SET AV <GETP .WLOC ,P?VTYPE>>)>
<COND (<OR <AND <NOT .LB> <OR <NOT .AV> <NOT <FSET? .RM .AV>>>>
<AND <FSET? ,HERE ,RLANDBIT>
.LB
.AV
<NOT <==? .AV ,RLANDBIT>>
<NOT <FSET? .RM .AV>>>>
<COND (.AV <TELL "You can't go there in a " D .WLOC ".">)
(T <TELL "You can't go there without a vehicle.">)>
<CRLF>
<RFALSE>)
(<FSET? .RM ,RMUNGBIT> <TELL <GETP .RM ,P?LDESC> CR> <RFALSE>)
(T
<COND (.AV <MOVE .WLOC .RM>)
(T
<MOVE ,WINNER .RM>)>
<SETG HERE .RM>
<SETG LIT <LIT? ,HERE>>
<COND (<AND <NOT .OLIT>
<NOT ,LIT>
<PROB 85>>
<COND (,SPRAYED?
<TELL
"There are sinister gurgling noises in the darkness all around you!" CR>)
(<EQUAL? ,HERE ,DARK-1 ,DARK-2>
<JIGS-UP
"Oh, no! Dozens of lurking grues attack and devour you! You must have
stumbled into an authentic grue lair!">)
(ELSE
<JIGS-UP
"Oh, no! A lurking grue slithered into the room and devoured you!">
<RTRUE>)>)>
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
<COND (<NOT <==? ,HERE .RM>> <RTRUE>)
(<NOT <==? ,ADVENTURER ,WINNER>>
<TELL "The " D ,WINNER " leaves the room." CR>)
(.V? <V-FIRST-LOOK>)>
<RTRUE>)>>
<ROUTINE V-BACK
()
<TELL
"Sorry, my memory is poor. Please give a direction." CR>>
<ROUTINE PRE-POUR-ON ()
<TELL "You can't pour that on anything." CR>>
<ROUTINE V-POUR-ON () <TELL "Foo!" CR>>
<ROUTINE V-SPRAY () <V-SQUEEZE>>
<ROUTINE V-SSPRAY () <PERFORM ,V?SPRAY ,PRSI ,PRSO>>
<ROUTINE V-SQUEEZE
()
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL "The " D ,PRSO " does not understand this.">)
(ELSE <TELL "How singularly useless.">)>
<CRLF>>
<ROUTINE PRE-OIL ()
<TELL "You probably put spinach in your gas tank, too." CR>>
<ROUTINE V-OIL () <TELL "That's not very useful." CR>>
<ROUTINE PRE-FILL
("AUX" T)
#DECL ((T) <OR FALSE TABLE>)
<COND (<AND <NOT ,PRSI> <SET T <GETPT ,HERE ,P?GLOBAL>>>
<COND (<ZMEMQB ,GLOBAL-WATER .T <PTSIZE .T>>
<SETG PRSI ,GLOBAL-WATER>
<RFALSE>)
(T
<TELL "There is nothing to fill it with." CR>
<RTRUE>)>)>
<COND (<NOT <EQUAL? ,PRSI ,GLOBAL-WATER>>
<PERFORM ,V?PUT ,PRSI ,PRSO>
<RTRUE>)>>
<ROUTINE V-FILL ()
<COND (<NOT ,PRSI>
<COND (<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
<PERFORM ,V?FILL ,PRSO ,GLOBAL-WATER>)
(T
<TELL "There's nothing to fill it with." CR>)>)
(T <TELL "You may know how to do that, but I don't." CR>)>>
<ROUTINE V-ADVENT () <TELL "A hollow voice says \"Fool.\"" CR>>
<ROUTINE V-DRINK ()
<V-EAT>>
<ROUTINE V-EAT ("AUX" (EAT? <>) (DRINK? <>) (NOBJ <>))
#DECL ((NOBJ) <OR OBJECT FALSE> (EAT? DRINK?) <OR ATOM FALSE>)
<COND (<AND <SET EAT? <FSET? ,PRSO ,FOODBIT>> <IN? ,PRSO ,WINNER>>
<COND (<VERB? DRINK> <TELL "How can I drink that?">)
(ELSE
<TELL "Thank you very much. It really hit the spot.">
<REMOVE ,PRSO>)>
<CRLF>)
(<SET DRINK? <FSET? ,PRSO ,DRINKBIT>>
<COND (<OR <IN? ,PRSO ,GLOBAL-OBJECTS>
<AND <SET NOBJ <LOC ,PRSO>>
<IN? .NOBJ ,WINNER>
<FSET? .NOBJ ,OPENBIT>>>
<TELL
"Thank you very much. I was rather thirsty (from all this talking,
probably)." CR>
<REMOVE ,PRSO>)
(T <TELL
"I'd like to, but it's in a closed container." CR>)>)
(<NOT <OR .EAT? .DRINK?>>
<TELL "I don't think that the "
D
,PRSO
" would agree with you." CR>)>>
<ROUTINE V-CURSES ()
<COND (,PRSO
<COND (<FSET? ,PRSO ,VILLAIN>
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-396 (10580)
<ROUTINE V-CUT ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?ATTACK ,PRSO ,PRSI>)
(<AND <FSET? ,PRSO ,BURNBIT>
<FSET? ,PRSI ,WEAPONBIT>>
<COND (<IN? ,WINNER ,PRSO>
<TELL
"Not a bright idea, especially since you're in it." CR>
<RTRUE>)>
<REMOVE-CAREFULLY ,PRSO>
<TELL "Your skillful " D ,PRSI "smanship slices the " D ,PRSO
" into innumerable slivers which blow away." CR>)
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
<TELL
"The \"cutting edge\" of a " D ,PRSI " is hardly adequate." CR>)
(T
<TELL "Strange concept, cutting the " D ,PRSO "...." CR>)>>
<ROUTINE V-DEFLATE ()
<TELL "Come on, now!" CR>>
<ROUTINE V-DIG ()
<COND (<NOT ,PRSI>
<SETG PRSI ,HANDS>)>
%<COND (<==? ,ZORK-NUMBER 1>
'<COND (<EQUAL? ,PRSI ,SHOVEL>
<TELL "There's no reason to be digging here." CR>
<RTRUE>)>)
(ELSE T)>
<COND (<FSET? ,PRSI ,TOOLBIT>
<TELL "Digging with the " D ,PRSI " is slow and tedious." CR>)
(T
<TELL "Digging with a " D ,PRSI " is silly." CR>)>>
<ROUTINE V-DISEMBARK ()
<COND (<NOT <EQUAL? <LOC ,WINNER> ,PRSO>>
<TELL "You're not in that!" CR>
<RFATAL>)
(<FSET? ,HERE ,RLANDBIT>
<TELL "You are on your own feet again." CR>
<MOVE ,WINNER ,HERE>)
(T
<TELL
"You realize that getting out here would be fatal." CR>
<RFATAL>)>>
<ROUTINE V-DISENCHANT ()
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<NOT <IN? ,PRSO ,HERE>>
<RTRUE>)
(<OR <EQUAL? ,SPELL-USED ,W?FEEBLE ,W?FUMBLE ,W?FEAR>
<EQUAL? ,SPELL-USED ,W?FREEZE ,W?FALL ,W?FERMENT>
<EQUAL? ,SPELL-USED ,W?FIERCE ,W?FENCE ,W?FANTASIZE>>
<COND (<FSET? ,PRSO ,ACTORBIT>
<COND (<EQUAL? ,SPELL-USED ,W?FEEBLE>
<TELL
"The " D ,PRSO " seems stronger now." CR>)
(<EQUAL? ,SPELL-USED ,W?FUMBLE>
<TELL
"The " D ,PRSO " no longer appears clumsy." CR>)
(<EQUAL? ,SPELL-USED ,W?FEAR>
<TELL
"The " D ,PRSO " no longer appears afraid." CR>)
(<EQUAL? ,SPELL-USED ,W?FREEZE>
<TELL
"The " D ,PRSO " moves again." CR>)
(<EQUAL? ,SPELL-USED ,W?FERMENT>
<TELL
"The " D ,PRSO " stops swaying." CR>)
(<EQUAL? ,SPELL-USED ,W?FIERCE>
<TELL
"The " D ,PRSO " appears more peaceful." CR>)>)>)
(<EQUAL? ,SPELL-USED ,W?FLOAT>
<TELL
"The " D ,PRSO " sinks to the ground." CR>)
(<EQUAL? ,SPELL-USED ,W?FUDGE>
<TELL "The sweet smell has dispersed." CR>)>)
(T
'<TELL "Nothing happens." CR>)>>
<ROUTINE V-DRINK ()
<V-EAT>>
<ROUTINE V-DRINK-FROM ()
<TELL "How peculiar!" CR>>
<ROUTINE PRE-DROP ()
<COND (<EQUAL? ,PRSO <LOC ,WINNER>>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)>>
<ROUTINE V-DROP ()
<COND (<IDROP>
<TELL "Dropped." CR>)>>
<ROUTINE V-EAT ("AUX" (EAT? <>) (DRINK? <>) (NOBJ <>))
<COND (<SET EAT? <FSET? ,PRSO ,FOODBIT>>
<COND (<AND <NOT <IN? ,PRSO ,WINNER>>
<NOT <IN? <LOC ,PRSO> ,WINNER>>>
<TELL "You're not holding that." CR>)
(<VERB? DRINK>
<TELL "How can you drink that?">)
(T
<TELL "Thank you very much. It really hit the spot.">
<REMOVE-CAREFULLY ,PRSO>)>
<CRLF>)
(<FSET? ,PRSO ,DRINKBIT>
<SET DRINK? T>
<SET NOBJ <LOC ,PRSO>>
<COND (<OR <IN? ,PRSO ,GLOBAL-OBJECTS>
<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
<EQUAL? ,PRSO ,PSEUDO-OBJECT>>
<HIT-SPOT>)
(<OR <NOT .NOBJ>
<NOT <ACCESSIBLE? .NOBJ>>>
<TELL
"There isn't any water here." CR>)
(<ACCESSIBLE? .NOBJ> ;<NOT <IN? .NOBJ ,WINNER>>
<TELL
"You have to be holding the " D .NOBJ " first." CR>)
(<NOT <FSET? .NOBJ ,OPENBIT>>
<TELL
"You'll have to open the " D .NOBJ " first." CR>)
(T
<HIT-SPOT>)>)
(<NOT <OR .EAT? .DRINK?>>
<TELL
"I don't think that the " D ,PRSO " would agree with you." CR>)>>
<ROUTINE HIT-SPOT ()
<COND (<AND <EQUAL? ,PRSO ,WATER>
<NOT <GLOBAL-IN? ,GLOBAL-WATER ,HERE>>>
<REMOVE-CAREFULLY ,PRSO>)>
<TELL
"Thank you very much. I was rather thirsty (from all this talking,
probably)." CR>>
<ROUTINE V-ECHO ("AUX" LST MAX (ECH 0) CNT)
#DECL ((LST) <PRIMTYPE VECTOR> (MAX CNT ECH) FIX)
%<COND (<==? ,ZORK-NUMBER 1>
'<COND (<G? <GETB ,P-LEXV ,P-LEXWORDS> 0>
<SET LST <REST
,P-LEXV
<* <GETB ,P-LEXV ,P-LEXWORDS> ,P-WORDLEN>>>
<SET MAX <- <+ <GETB .LST 0> <GETB .LST 1>> 1>>
<REPEAT ()
<COND (<G? <SET ECH <+ .ECH 1>> 2>
<TELL "..." CR>
<RETURN>)
(T
<SET CNT <- <GETB .LST 1> 1>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .MAX>
<RETURN>)
(T
<PRINTC <GETB ,P-INBUF .CNT>>)>>
<TELL " ">)>>)
(T <TELL "echo echo ..." CR>)>)
(T
'<TELL "echo echo ..." CR>)>>
<ROUTINE V-ENCHANT ()
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (,WAND-ON <SETG SPELL-VICTIM ,WAND-ON>)>)
(T
'<NULL-F>)>
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (,SPELL-VICTIM
<COND (<NOT ,SPELL-USED>
<TELL "You must be more specific." CR>
<RTRUE>)>
<COND (<OR <EQUAL? ,SPELL-USED ,W?FEEBLE ,W?FUMBLE ,W?FEAR>
<EQUAL? ,SPELL-USED ,W?FREEZE ,W?FALL ,W?FERMENT>
<EQUAL? ,SPELL-USED ,W?FIERCE ,W?FENCE ,W?FANTASIZE>>
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL
"The wand stops glowing, but there is no other obvious effect." CR>)
(T
<TELL
"That might have done something, but it's hard to tell with a " D ,PRSO "." CR>)>)
;(<EQUAL? ,SPELL-USED ,W?FIREPROOF>
<RTRUE>)
(<EQUAL? ,SPELL-USED ,W?FUDGE>
<TELL
"A strong odor of chocolate permeates the room." CR>)
(<EQUAL? ,SPELL-USED ,W?FLUORESCE>
<FSET ,PRSO ,LIGHTBIT>
<FSET ,PRSO ,ONBIT>
<SETG LIT T>
<TELL
"The " D ,PRSO " begins to glow." CR>)
(<EQUAL? ,SPELL-USED ,W?FILCH>
<SETG SPELL-HANDLED? T>
<COND (<FSET? ,PRSO ,TAKEBIT>
<MOVE ,PRSO ,WINNER>
<SCORE-OBJ ,PRSO>
<TELL "Filched!" CR>)
(ELSE
<TELL "You can't filch the " D ,PRSO "!" CR>)>)
(<AND <EQUAL? ,SPELL-USED ,W?FLOAT>
<FSET? ,PRSO ,TAKEBIT>>
<COND (<AND <EQUAL? ,SPELL-VICTIM ,COLLAR>
<IN? ,COLLAR ,CERBERUS>>
<SETG SPELL-VICTIM ,CERBERUS>)>
<TELL
"The " D ,PRSO " floats serenely in midair." CR>)
(<AND <EQUAL? ,SPELL-USED ,W?FRY>
<FSET? ,PRSO ,TAKEBIT>>
<SETG SPELL-HANDLED? T>
<REMOVE-CAREFULLY ,PRSO>
<TELL "The " D ,PRSO " goes up in a puff of smoke." CR>)
(ELSE
<SETG SPELL-VICTIM <>>
<TELL
"The wand stops glowing, but there is no other apparent effect." CR>)>)
(ELSE
<SETG SPELL-VICTIM <>>
<TELL "Nothing happens." CR>)>)
(T
'<V-DISENCHANT>)>>
<ROUTINE REMOVE-CAREFULLY (OBJ "AUX" OLIT)
<COND (<EQUAL? .OBJ ,P-IT-OBJECT>
<SETG P-IT-OBJECT <>>)>
<SET OLIT ,LIT>
<REMOVE .OBJ>
<SETG LIT <LIT? ,HERE>>
<COND (<AND .OLIT <NOT <EQUAL? .OLIT ,LIT>>>
<TELL "You are left in the dark..." CR>)>
T>
<ROUTINE V-ENTER ()
<DO-WALK ,P?IN>>
<ROUTINE V-EXAMINE ()
<COND (<GETP ,PRSO ,P?TEXT>
<TELL <GETP ,PRSO ,P?TEXT> CR>)
(<OR <FSET? ,PRSO ,CONTBIT>
<FSET? ,PRSO ,DOORBIT>>
<V-LOOK-INSIDE>)
(T
<TELL "There's nothing special about the " D ,PRSO "." CR>)>>
<ROUTINE V-EXIT ()
<COND (<AND ,PRSO <IN? ,WINNER ,PRSO>>
<PERFORM ,V?DISEMBARK ,PRSO>
<RTRUE>)
(ELSE
<DO-WALK ,P?OUT>)>>
<ROUTINE V-EXORCISE ()
<TELL "What a bizarre concept!" CR>>
<ROUTINE PRE-FILL ("AUX" TX)
<COND (<NOT ,PRSI>
<SET TX <GETPT ,HERE ,P?GLOBAL>>
<COND (<AND .TX <ZMEMQB ,GLOBAL-WATER .TX <- <PTSIZE .TX> 1>>>
<PERFORM ,V?FILL ,PRSO ,GLOBAL-WATER>
<RTRUE>)
(<IN? ,WATER <LOC ,WINNER>>
<PERFORM ,V?FILL ,PRSO ,WATER>
<RTRUE>)
(T
<TELL "There is nothing to fill it with." CR>
<RTRUE>)>)>
<COND (<EQUAL? ,PRSI ,WATER>
<RFALSE>)
(<NOT <EQUAL? ,PRSI ,GLOBAL-WATER>>
<PERFORM ,V?PUT ,PRSI ,PRSO>
<RTRUE>)>>
;"OLD ZORK1 PRE-FILL"
;<ROUTINE PRE-FILL ("AUX" TX)
<COND (<NOT ,PRSI>
<COND (<AND <SET TX <GETPT ,HERE ,P?GLOBAL>>
<ZMEMQB ,GLOBAL-WATER .TX <- <PTSIZE .TX> 1>>>
<SETG PRSI ,GLOBAL-WATER>
<RFALSE>)
(T
<TELL "There is nothing to fill it with." CR>
<RTRUE>)>)
(<NOT <EQUAL? ,PRSI ,GLOBAL-WATER>>
<PERFORM ,V?PUT ,PRSI ,PRSO>
<RTRUE>)>>
<ROUTINE V-FILL ()
<COND (<NOT ,PRSI>
<COND (<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
<PERFORM ,V?FILL ,PRSO ,GLOBAL-WATER>
<RTRUE>)
(<IN? ,WATER <LOC ,WINNER>>
<PERFORM ,V?FILL ,PRSO ,WATER>
<RTRUE>)
(T
<TELL "There's nothing to fill it with." CR>)>)
(T
<TELL "You may know how to do that, but I don't." CR>)>>
<ROUTINE V-FIND ("AUX" (L <LOC ,PRSO>))
<COND (<EQUAL? ,PRSO ,HANDS ,LUNGS>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 6-323 (26983)
<ROUTINE V-LISTEN ()
<TELL "The " D ,PRSO " makes no sound." CR>>
<ROUTINE V-FOLLOW ()
<TELL "You're nuts!" CR>>
<ROUTINE V-STAY ()
<TELL "You will be lost without me!" CR>>
<ROUTINE V-PRAY ()
<TELL "If you pray enough, your prayers may be answered." CR>>
<ROUTINE V-LEAP
("AUX" T S)
#DECL ((T) <OR FALSE TABLE>)
<COND (,PRSO
<COND (<IN? ,PRSO ,HERE>
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL "The "
D
,PRSO
" is too big to jump over." CR>)
(T <V-SKIP>)>)
(T <TELL "That would be a good trick." CR>)>)
(<SET T <GETPT ,HERE ,P?DOWN>>
<SET S <PTSIZE .T>>
<COND (<OR <==? .S 2> ;NEXIT
<AND <==? .S 4> ;CEXIT
<NOT <VALUE <GETB .T 1>>>>>
<TELL
"This was not a very safe place to try jumping." CR>
<JIGS-UP <RANDOM-ELEMENT ,JUMPLOSS>>)
(T <V-SKIP>)>)
(ELSE <V-SKIP>)>>
<ROUTINE V-SKIP () <TELL <RANDOM-ELEMENT ,WHEEEEE> CR>>
<ROUTINE V-LEAVE () <DO-WALK ,P?OUT>>
<GLOBAL HS 0>
<ROUTINE V-HELLO
()
<COND (,PRSO
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL "The "
D
,PRSO
" bows his head to you in greeting." CR>)
(ELSE
<TELL
"I think that only schizophrenics say \"Hello\" to a "
D
,PRSO
"." CR>)>)
(ELSE <TELL <RANDOM-ELEMENT ,HELLOS> CR>)>>
<GLOBAL HELLOS
<LTABLE "Hello."
"Nice weather we've been having lately."
"Goodbye.">>
<GLOBAL WHEEEEE
<LTABLE "Very good. Now you can go to the second grade."
"Are you enjoying yourself?"
"Wheeeeeeeeee!!!!!"
"Do you expect me to applaud?">>
<GLOBAL JUMPLOSS
<LTABLE "You should have looked before you leaped."
"I'm afraid that leap was a bit much for your weak frame."
"In the movies, your life would be passing before your eyes."
"Geronimo...">>
<ROUTINE PRE-READ ()
<COND (<NOT ,LIT> <TELL "It is impossible to read in the dark." CR>)
(<AND ,PRSI <NOT <FSET? ,PRSI ,TRANSBIT>>>
<TELL "How does one look through a " D ,PRSI "?" CR>)>>
<ROUTINE V-READ ()
<COND (<NOT <FSET? ,PRSO ,READBIT>>
<TELL "How can I read a " D ,PRSO "?" CR>)
(ELSE <TELL <GETP ,PRSO ,P?TEXT> CR>)>>
<ROUTINE V-LOOK-UNDER () <TELL "There is nothing but dust there." CR>>
<ROUTINE V-LOOK-BEHIND () <TELL "There is nothing behind the " D ,PRSO "." CR>>
<ROUTINE V-LOOK-INSIDE
()
<COND (<FSET? ,PRSO ,DOORBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "The "
D
,PRSO
" is open.">)
(ELSE <TELL "The " D ,PRSO " is closed.">)>
<CRLF>)
(<FSET? ,PRSO ,CONTBIT>
<COND (<FSET? ,PRSO ,VICBIT>
<TELL "There is nothing special to be seen." CR>)
(<SEE-INSIDE? ,PRSO>
<COND (<AND <FIRST? ,PRSO> <PRINT-CONT ,PRSO>>
<RTRUE>)
(<FSET? ,PRSO ,SURFACEBIT>
<TELL "There is nothing on the " D ,PRSO "." CR>)
(T
<TELL "The " D ,PRSO " is empty." CR>)>)
(ELSE <TELL "The " D ,PRSO " is closed." CR>)>)
(ELSE <TELL "I don't know how to look inside a " D ,PRSO "." CR>)>>
<ROUTINE SEE-INSIDE? (OBJ)
<AND <NOT <FSET? .OBJ ,INVISIBLE>>
<OR <FSET? .OBJ ,TRANSBIT> <FSET? .OBJ ,OPENBIT>>>>
<ROUTINE V-REPENT () <TELL "It could very well be too late!" CR>>
<ROUTINE PRE-BURN ()
<COND (<FLAMING? ,PRSI> <RFALSE>)
(T <TELL "With a " D ,PRSI "??!?" CR>)>>
<ROUTINE V-BURN ()
<COND (<FSET? ,PRSO ,BURNBIT>
<COND (<IN? ,PRSO ,WINNER>
<REMOVE ,PRSO>
<TELL "The " D ,PRSO " catches fire." CR>
<JIGS-UP
"Unfortunately, you were holding it at the time.">)
(T
<REMOVE ,PRSO>
<TELL "The " D ,PRSO
" catches fire and is consumed." CR>)
(ELSE <TELL "You don't have that." CR>)>)
(T <TELL "I don't think you can burn a " D ,PRSO "." CR>)>>
<ROUTINE PRE-TURN ()
<COND (<NOT <FSET? ,PRSO ,TURNBIT>>
<TELL "You can't turn that!" CR>)>>
<ROUTINE V-TURN () <TELL "This has no effect." CR>>
<ROUTINE V-PUMP ()
<TELL "I really don't see how." CR>>
<ROUTINE V-INFLATE () <TELL "How can you inflate that?" CR>>
<ROUTINE V-DEFLATE () <TELL "Come on, now!" CR>>
<ROUTINE V-LOCK () <TELL "It doesn't seem to work." CR>>
<ROUTINE V-PICK () <TELL "You can't pick that." CR>>
<ROUTINE V-UNLOCK () <V-LOCK>>
<ROUTINE V-CUT ()
<COND (<FSET? ,PRSO ,VILLAIN>
<PERFORM ,V?KILL ,PRSO ,PRSI>)
(<AND <FSET? ,PRSO ,BURNBIT>
<FSET? ,PRSI ,WEAPONBIT>>
<REMOVE ,PRSO>
<TELL "Your skillful "
D
,PRSI
"smanship slices the "
D
,PRSO
" into innumerable slivers which blow away."
CR>)
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
<TELL
"I doubt that the \"cutting edge\" of a " D ,PRSI " is adequate." CR>)
(T
<TELL "Strange concept, cutting the " D ,PRSO "...." CR>)>>
<ROUTINE V-KILL ()
<IKILL "kill">>
<ROUTINE IKILL (STR)
#DECL ((STR) STRING)
<COND (<NOT ,PRSO> <TELL "There is nothing here to " .STR "." CR>)
(<AND <NOT <FSET? ,PRSO ,VILLAIN>>
<NOT <FSET? ,PRSO ,VICBIT>>>
<TELL "I've known strange people, but fighting a "
D
,PRSO
"?" CR>)
(<OR <NOT ,PRSI> <==? ,PRSI ,HANDS>>
<TELL "Trying to "
.STR
" a "
D
,PRSO
" with your bare hands is suicidal." CR>)
(<NOT <IN? ,PRSI ,WINNER>>
<TELL "You aren't even holding the " D ,PRSI "." CR>)
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
<TELL "Trying to "
.STR
" the "
D
,PRSO
" with a "
D
,PRSI
" is suicidal." CR>)
(ELSE <TELL "You can't." CR>)>>
<ROUTINE V-ATTACK () <IKILL "attack">>
<ROUTINE V-SWING ()
<COND (<NOT ,PRSI>
<TELL "Whoosh!" CR>)
(T <PERFORM ,V?ATTACK ,PRSI ,PRSO>)>>
<ROUTINE V-KICK () <HACK-HACK "Kicking the ">>
<ROUTINE V-WAVE () <HACK-HACK "Waving the ">>
<ROUTINE V-RAISE () <HACK-HACK "Playing in this way with the ">>
<ROUTINE V-LOWER () <HACK-HACK "Playing in this way with the ">>
<ROUTINE V-RUB () <HACK-HACK "Fiddling with the ">>
<ROUTINE V-PUSH () <HACK-HACK "Pushing the ">>
<ROUTINE V-PUSH-TO () <TELL "You can't push things to that." CR>>
<ROUTINE PRE-MUNG ()
<COND (<==? ,PRSO ,BEAM> <RFALSE>)
(<NOT <FSET? ,PRSO ,VICBIT>>
<HACK-HACK "Trying to destroy the ">)
(<NOT ,PRSI>
<TELL "Trying to destroy the "
D
,PRSO
" with your bare hands is suicidal." CR>)
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
<TELL "Trying to destroy the "
D
,PRSO
" with a "
D
,PRSI
" is quite self-destructive." CR>)>>
<ROUTINE V-MUNG () <TELL "You can't." CR>>
<ROUTINE HACK-HACK
(STR)
#DECL ((STR) STRING)
<COND (<AND <IN? ,PRSO ,GLOBAL-OBJECTS> <VERB? WAVE RAISE LOWER>>
<TELL "The " D ,PRSO " isn't here!" CR>)
(T <TELL .STR D ,PRSO <RANDOM-ELEMENT ,HO-HUM> CR>)>>
<GLOBAL HO-HUM
<LTABLE
" doesn't seem to work."
" isn't notably helpful."
" has no effect.">>
<ROUTINE WORD-TYPE
(OBJ WORD "AUX" SYNS)
#DECL ((OBJ) OBJECT (WORD SYNS) TABLE)
<ZMEMQ .WORD
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
<- </ <PTSIZE .SYNS> 2> 1>>>
<ROUTINE V-KNOCK
()
<COND (<WORD-TYPE ,PRSO ,W?DOOR>
<TELL "I don't think that anybody's home." CR>)
(ELSE <TELL "Why knock on a " D ,PRSO "?" CR>)>>
<ROUTINE V-CHOMP ()
<TELL "I don't know how to do that. I win in all cases!" CR>>
<ROUTINE V-FROBOZZ
()
<TELL
"The FROBOZZ Corporation created, owns, and operates this dungeon." CR>>
<ROUTINE V-WIN () <TELL "Naturally!" CR>>
<ROUTINE V-YELL () <TELL "Aarrrrrgggggghhhhhhhhh!" CR>>
<ROUTINE V-PLUG () <TELL "This has no effect." CR>>
<ROUTINE V-EXORCISE () <TELL "What a bizarre concept!" CR>>
\
<ROUTINE V-SHAKE ("AUX" X)
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL "This seems to have no effect." CR>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL "You can't take it; thus, you can't shake it!" CR>)
(<AND <NOT <FSET? ,PRSO ,OPENBIT>>
<FIRST? ,PRSO>>
<TELL "It sounds like there is something inside the "
D
,PRSO
"."
CR>)
(<AND <FSET? ,PRSO ,OPENBIT> <FIRST? ,PRSO>>
<TELL "Shaking the " D ,PRSO " isn't very useful." CR>)
(T <TELL "Shaking the " D ,PRSO " proves uninteresting." CR>)>>
<ROUTINE PRE-DIG
()
<COND (<NOT ,PRSI> <SETG PRSI ,HANDS>)>
<COND (<FSET? ,PRSI ,TOOLBIT> <RFALSE>)
(ELSE
<TELL "Digging with the " D ,PRSI " is very silly." CR>)>>
<ROUTINE V-DIG () <TELL "The ground is too hard here." CR>>
<ROUTINE V-SMELL () <TELL "It smells just like a " D ,PRSO "." CR>>
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" T)
#DECL ((OBJ1 OBJ2) OBJECT (T) <OR FALSE TABLE>)
<COND (<SET T <GETPT .OBJ2 ,P?GLOBAL>>
<ZMEMQB .OBJ1 .T <- <PTSIZE .T> 1>>)>>
<ROUTINE V-SWIM ()
<COND (<EQUAL? ,HERE ,ON-LAKE ,IN-LAKE>
<TELL "What do you think you're doing?" CR>)
(<==? ,HERE ,FLATHEAD-OCEAN>
<TELL
"Between the rocks and waves, you wouldn't last a minute!" CR>)
(T <TELL "Go jump in a lake!" CR>)>>
<ROUTINE V-UNTIE () <TELL "This cannot be tied, so it cannot be untied!" CR>>
<ROUTINE PRE-TIE
()
<COND (<==? ,PRSI ,WINNER>
<TELL "You can't tie it to yourself." CR>)>>
<ROUTINE V-TIE () <TELL "You can't tie the " D ,PRSO " to that." CR>>
<ROUTINE V-TIE-UP () <TELL "You could certainly never tie it with that!" CR>>
<ROUTINE V-MELT () <TELL "I'm not sure that a " D ,PRSO " can be melted." CR>>
<ROUTINE V-MUMBLE
()
<TELL "You'll have to speak up if you expect me to hear you!" CR>>
<ROUTINE V-ALARM ()
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL "He's wide awake, or haven't you noticed..." CR>)
(ELSE
<TELL "The " D ,PRSO " isn't sleeping." CR>)>>
<ROUTINE V-ZORK () <TELL "At your service!" CR>>
\
<ROUTINE MUNG-ROOM (RM STR)
#DECL ((STR) STRING)
<FSET .RM ,RMUNGBIT>
<PUTP .RM ,P?LDESC .STR>>
<ROUTINE V-COMMAND ()
<COND (<FSET? ,PRSO ,VICBIT>
<TELL "The " D ,PRSO " pays no attention." CR>)
(ELSE
<TELL "You cannot talk to that!" CR>)>>
<ROUTINE V-CLIMB-ON ()
<COND (<FSET? ,PRSO ,VEHBIT>
<V-CLIMB-UP ,P?UP T>)
(T
<TELL "You can't climb onto the " D ,PRSO "." CR>)>>
<ROUTINE V-CLIMB-FOO ()
<V-CLIMB-UP <COND (<EQUAL? ,PRSO ,ROPE ,GLOBAL-ROPE> ,P?DOWN)
(T ,P?UP)> T>>
<ROUTINE V-CLIMB-UP ("OPTIONAL" (DIR ,P?UP) (OBJ <>) "AUX" X)
#DECL ((DIR) FIX (OBJ) <OR ATOM FALSE> (X) TABLE)
<COND (<GETPT ,HERE .DIR>
<DO-WALK .DIR>
<RTRUE>)
(<NOT .OBJ>
<TELL "You can't go that way." CR>)
(<AND .OBJ
<ZMEMQ ,W?WALL
<SET X <GETPT ,PRSO ,P?SYNONYM>> <PTSIZE .X>>>
<TELL "Climbing the walls is to no avail." CR>)
(ELSE <TELL "Bizarre!" CR>)>>
<ROUTINE V-CLIMB-DOWN () <V-CLIMB-UP ,P?DOWN>>
<ROUTINE V-SEND ()
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL "Why would you send for the " D ,PRSO "?" CR>)
(ELSE <TELL "That doesn't make sends." CR>)>>
<ROUTINE V-WIND ()
<TELL "You cannot wind up a " D ,PRSO "." CR>>
<ROUTINE V-COUNT ("AUX" OBJS CNT)
#DECL ((CNT) FIX)
<COND (<==? ,PRSO ,BLESSINGS>
<TELL "Well, for one, you are playing ZORK..." CR>)
(T
<TELL "You have lost your mind." CR>)>>
<ROUTINE V-PUT-UNDER ()
<TELL "You can't do that." CR>>
<ROUTINE V-PLAY ()
<COND (<FSET? ,PRSO ,VILLAIN>
<TELL
"You are so engrossed in the role of the " D ,PRSO " that
you kill yourself, just as he would have done!" CR>
<JIGS-UP "">)
(T <TELL "How peculiar!" CR>)>>
<ROUTINE V-MAKE ()
<TELL "You can't do that." CR>>
<ROUTINE V-ENTER ()
<DO-WALK ,P?IN>>
<ROUTINE V-EXIT ()
<DO-WALK ,P?OUT>>
<ROUTINE V-CROSS ()
<TELL "You can't cross that!" CR>>
<ROUTINE V-SEARCH ()
<TELL "You find nothing unusual." CR>>
<ROUTINE V-FIND ("AUX" (L <LOC ,PRSO>))
<COND (<EQUAL? ,PRSO ,HANDS>
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-699 (20171)
(<EQUAL? ,PRSO ,ME>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-85 (39367)
(<==? ,PRSO ,ME>
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-706 (20406)
<GLOBAL-IN? ,PRSO ,HERE>
<EQUAL? ,PRSO ,PSEUDO-OBJECT>>
<TELL "It's right here." CR>)
(<FSET? .L ,ACTORBIT>
<TELL "The " D .L " has it." CR>)
(<FSET? .L ,SURFACEBIT>
<TELL "It's on the " D .L "." CR>)
(<FSET? .L ,CONTBIT>
<TELL "It's in the " D .L "." CR>)
(T
<TELL "Beats me." CR>)>>
<ROUTINE V-FOLLOW ()
<TELL "You're nuts!" CR>>
<ROUTINE V-FROBOZZ ()
<TELL
"The FROBOZZ Corporation created, owns, and operates this dungeon." CR>>
<ROUTINE PRE-GIVE ()
<COND (<NOT <HELD? ,PRSO>>
<TELL
"That's easy for you to say since you don't even have the " D ,PRSO "." CR>)>>
<ROUTINE V-GIVE ()
<COND (<NOT <FSET? ,PRSI ,ACTORBIT>>
<TELL "You can't give a " D ,PRSO " to a " D ,PRSI "!" CR>)
(T
<TELL "The " D ,PRSI " refuses it politely." CR>)>>
<ROUTINE V-HATCH ()
<TELL "Bizarre!" CR>>
<GLOBAL HS 0> ;"counts occurences of HELLO, SAILOR"
<ROUTINE V-HELLO ()
<COND (,PRSO
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL
"The " D ,PRSO " bows his head to you in greeting." CR>)
(T
<TELL
"It's a well known fact that only schizophrenics say \"Hello\" to a "
D ,PRSO "." CR>)>)
(T
<TELL <PICK-ONE ,HELLOS> CR>)>>
<ROUTINE V-INCANT ()
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (,SPELL-USED
<TELL "Nothing happens." CR>)
(,WAND-ON
<SETG SPELL-VICTIM ,WAND-ON>
<SETG SPELL-USED <GET ,P-LEXV ,P-CONT>>
<TELL "The wand glows very brightly for a moment." CR>
<ENABLE <QUEUE I-SPELL <+ 10 <RANDOM 10>>>>
<SETG WAND-ON <>>
<PERFORM ,V?ENCHANT ,SPELL-VICTIM>)
(T
<TELL
"The incantation echoes back faintly, but nothing else happens." CR>)>)
(T
'<TELL
"The incantation echoes back faintly, but nothing else happens." CR>)>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>
<RTRUE>>
<ROUTINE V-INFLATE ()
<TELL "How can you inflate that?" CR>>
;<ROUTINE V-IS-IN ()
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-92 (39599)
<==? ,PRSO ,PSEUDO-OBJECT>>
<TELL "It's right here." CR>)
(<FSET? .L ,VILLAIN>
<TELL "The " D .L " has it." CR>)
(<FSET? .L ,CONTBIT>
<TELL "It's in the " D .L "." CR>)
(ELSE
<TELL "Beats me." CR>)>>
<ROUTINE V-TELL ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<COND (,P-CONT
<SETG WINNER ,PRSO>
<SETG HERE <LOC ,WINNER>>)
(T
<TELL "The " D ,PRSO
" pauses for a moment, perhaps thinking that you should re-read
the manual." CR>)>)
(T
<TELL "You can't talk to the " D ,PRSO "!" CR>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>
<RFATAL>)>>
<ROUTINE V-ANSWER ()
<TELL "Nobody seems to be awaiting your answer." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>>
<ROUTINE V-REPLY ()
<TELL "It is hardly likely that the " D ,PRSO " is interested." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>>
<ROUTINE V-IS-IN ()
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-782 (22481)
(T
<TELL "in">)>
<TELL " the " D ,PRSI "." CR>)
(T
<TELL "No, it isn't." CR>)>>
<ROUTINE V-KICK () <HACK-HACK "Kicking the ">>
<ROUTINE V-KISS ()
<TELL "I'd sooner kiss a pig." CR>>
<ROUTINE V-KNOCK ()
<COND (<FSET? ,PRSO ,DOORBIT>
<TELL "Nobody's home." CR>)
(T
<TELL "Why knock on a " D ,PRSO "?" CR>)>>
<ROUTINE V-LAMP-OFF ()
<COND (<FSET? ,PRSO ,LIGHTBIT>
<COND (<NOT <FSET? ,PRSO ,ONBIT>>
<TELL "It is already off." CR>)
(T
<FCLEAR ,PRSO ,ONBIT>
<COND (,LIT
<SETG LIT <LIT? ,HERE>>)>
<TELL "The " D ,PRSO " is now off." CR>
<COND (<NOT ,LIT>
<TELL "It is now pitch black." CR>)>)>)
(T
<TELL "You can't turn that off." CR>)>
<RTRUE>>
<ROUTINE V-LAMP-ON ()
<COND (<FSET? ,PRSO ,LIGHTBIT>
<COND (<FSET? ,PRSO ,ONBIT>
<TELL "It is already on." CR>)
(T
<FSET ,PRSO ,ONBIT>
<TELL "The " D ,PRSO " is now on." CR>
<COND (<NOT ,LIT>
<SETG LIT <LIT? ,HERE>>
<CRLF>
<V-LOOK>)>)>)
(<FSET? ,PRSO ,BURNBIT>
<TELL
"If you wish to burn the " D ,PRSO ", you should say so." CR>)
(T
<TELL "You can't turn that on." CR>)>
<RTRUE>>
<ROUTINE V-LAUNCH ()
<COND (<FSET? ,PRSO ,VEHBIT>
<TELL "You can't launch that by saying \"launch\"!" CR>)
(T
<TELL "That's pretty weird." CR>)>>
<ROUTINE V-LEAN-ON ()
<TELL "Getting tired?" CR>>
<ROUTINE V-LEAP ("AUX" TX S)
<COND (,PRSO
<COND (<IN? ,PRSO ,HERE>
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL
"The " D ,PRSO " is too big to jump over." CR>)
(T
<V-SKIP>)>)
(T
<TELL "That would be a good trick." CR>)>)
(<SET TX <GETPT ,HERE ,P?DOWN>>
<SET S <PTSIZE .TX>>
<COND (<OR <EQUAL? .S 2> ;NEXIT
<AND <EQUAL? .S 4> ;CEXIT
<NOT <VALUE <GETB .TX 1>>>>>
<TELL
"This was not a very safe place to try jumping." CR>
<JIGS-UP <PICK-ONE ,JUMPLOSS>>)
%<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,HERE ,UP-A-TREE>
<TELL
"In a feat of unaccustomed daring, you manage to land on your feet without
killing yourself." CR CR>
<DO-WALK ,P?DOWN>
<RTRUE>))
(T '(<NULL-F> T))>
(T
<V-SKIP>)>)
(T
<V-SKIP>)>>
<GLOBAL JUMPLOSS
<LTABLE 0
"You should have looked before you leaped."
"In the movies, your life would be passing before your eyes."
"Geronimo...">>
<ROUTINE V-LEAVE () <DO-WALK ,P?OUT>>
<ROUTINE V-LISTEN ()
<TELL "The " D ,PRSO " makes no sound." CR>>
<ROUTINE V-LOCK ()
<TELL "It doesn't seem to work." CR>>
<ROUTINE V-LOOK ()
<COND (<DESCRIBE-ROOM T>
<DESCRIBE-OBJECTS T>)>>
<ROUTINE V-LOOK-BEHIND ()
<TELL "There is nothing behind the " D ,PRSO "." CR>>
<ROUTINE V-LOOK-INSIDE ()
<COND (<FSET? ,PRSO ,DOORBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL
"The " D ,PRSO " is open, but I can't tell what's beyond it.">)
(T
<TELL "The " D ,PRSO " is closed.">)>
<CRLF>)
(<FSET? ,PRSO ,CONTBIT>
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "There is nothing special to be seen." CR>)
(<SEE-INSIDE? ,PRSO>
<COND (<AND <FIRST? ,PRSO>
<PRINT-CONT ,PRSO>>
<RTRUE>)
(T
<TELL "The " D ,PRSO " is empty." CR>)>)
(T
<TELL "The " D ,PRSO " is closed." CR>)>)
(T
<TELL "You can't look inside a " D ,PRSO "." CR>)>>
<ROUTINE V-LOOK-ON ()
<COND (<FSET? ,PRSO ,SURFACEBIT>
<PERFORM ,V?LOOK-INSIDE ,PRSO>
<RTRUE>)
(T
<TELL "Look on a " D ,PRSO "???" CR>)>>
<ROUTINE V-LOOK-UNDER ()
<TELL "There is nothing but dust there." CR>>
<ROUTINE V-LOWER () <HACK-HACK "Playing in this way with the ">>
<ROUTINE V-MAKE ()
<TELL "You can't do that." CR>>
<ROUTINE V-MELT ()
<TELL "It's not clear that a " D ,PRSO " can be melted." CR>>
<ROUTINE PRE-MOVE ()
<COND (<HELD? ,PRSO>
<TELL "You aren't an accomplished enough juggler." CR>)>>
<ROUTINE V-MOVE ()
<COND (<FSET? ,PRSO ,TAKEBIT>
<TELL "Moving the " D ,PRSO " reveals nothing." CR>)
(T
<TELL "You can't move the " D ,PRSO "." CR>)>>
<ROUTINE V-MUMBLE ()
<TELL "You'll have to speak up if you expect me to hear you!" CR>>
<ROUTINE PRE-MUNG ()
<COND %<COND (<==? ,ZORK-NUMBER 3>
'(<EQUAL? ,PRSO ,BEAM>
<RFALSE>))
(T
'(<NULL-F> <RTRUE>))>
(<OR <NOT ,PRSI>
<NOT <FSET? ,PRSI ,WEAPONBIT>>>
<TELL "Trying to destroy the " D ,PRSO " with ">
<COND (<NOT ,PRSI>
<TELL "your bare hands">)
(T
<TELL "a " D ,PRSI>)>
<TELL " is futile." CR>)>>
<ROUTINE V-MUNG ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<PERFORM ,V?ATTACK ,PRSO>
<RTRUE>)
(T
<TELL "Nice try." CR>)>>
<ROUTINE V-ODYSSEUS ()
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<AND <EQUAL? ,HERE ,CYCLOPS-ROOM>
<IN? ,CYCLOPS ,HERE>
<NOT ,CYCLOPS-FLAG>>
<DISABLE <INT I-CYCLOPS>>
<SETG CYCLOPS-FLAG T>
<TELL
"The cyclops, hearing the name of his father's deadly nemesis, flees the room
by knocking down the wall on the east of the room." CR>
<SETG MAGIC-FLAG T>
<FCLEAR ,CYCLOPS ,FIGHTBIT>
<REMOVE-CAREFULLY ,CYCLOPS>))
(T
'(<NULL-F> T))>
(T
<TELL "Wasn't he a sailor?" CR>)>>
<ROUTINE V-OIL ()
<TELL "You probably put spinach in your gas tank, too." CR>>
<ROUTINE V-OPEN ("AUX" F STR)
<COND (<AND <FSET? ,PRSO ,CONTBIT>
<NOT <EQUAL? <GETP ,PRSO ,P?CAPACITY> 0>>>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "It is already open." CR>)
(T
<FSET ,PRSO ,OPENBIT>
<FSET ,PRSO ,TOUCHBIT>
<COND (<OR <NOT <FIRST? ,PRSO>> <FSET? ,PRSO ,TRANSBIT>>
<TELL "Opened." CR>)
(<AND <SET F <FIRST? ,PRSO>>
<NOT <NEXT? .F>>
<NOT <FSET? .F ,TOUCHBIT>>
<SET STR <GETP .F ,P?FDESC>>>
<TELL "The " D ,PRSO " opens." CR>
<TELL .STR CR>)
(T
<TELL "Opening the " D ,PRSO " reveals ">
<PRINT-CONTENTS ,PRSO>
<TELL "." CR>)>)>)
(<FSET? ,PRSO ,DOORBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<TELL "It is already open." CR>)
(T
<TELL "The " D ,PRSO " opens." CR>
<FSET ,PRSO ,OPENBIT>)>)
(T
<TELL
"You must tell me how to do that to a " D ,PRSO "." CR>)>>
<ROUTINE V-OVERBOARD ("AUX" LOCN)
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,PRSI ,TEETH>
<COND (<FSET? <SET LOCN <LOC ,WINNER>> ,VEHBIT>
<MOVE ,PRSO <LOC .LOCN>>
<TELL "Ahoy -- " D ,PRSO " overboard!" CR>)
(T
<TELL "You're not in anything!" CR>)>))
(T '(<NULL-F> T))>
(<FSET? <LOC ,WINNER> ,VEHBIT>
<PERFORM ,V?THROW ,PRSO>
<RTRUE>)
(T
<TELL "Huh?" CR>)>>
<ROUTINE V-PICK () <TELL "You can't pick that." CR>>
<ROUTINE V-PLAY ()
<TELL "That's silly!" CR>>
<ROUTINE V-PLUG ()
<TELL "This has no effect." CR>>
<ROUTINE V-POUR-ON ()
<COND (<EQUAL? ,PRSO ,WATER>
<REMOVE-CAREFULLY ,PRSO>
<COND (<FLAMING? ,PRSI>
<TELL "The " D ,PRSI " is extinguished." CR>
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<EQUAL? ,PRSI ,BINF-FLAG>
<SETG BINF-FLAG <>>)>)
(ELSE '<NULL-F>)>
<FCLEAR ,PRSI ,ONBIT>
<FCLEAR ,PRSI ,FLAMEBIT>)
(T
<TELL
"The water spills over the " D ,PRSI ", to the floor, and evaporates." CR>)>)
%<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,PRSO ,PUTTY>
<PERFORM ,V?PUT ,PUTTY ,PRSI>))
(T
'(<NULL-F> <RTRUE>))>
(T
<TELL "You can't pour that." CR>)>>
<ROUTINE V-PRAY ()
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,HERE ,SOUTH-TEMPLE>
<GOTO ,FOREST-1>))
(T
'(<NULL-F> <RTRUE>))>
(T
<TELL
"If you pray enough, your prayers may be answered." CR>)>>
<ROUTINE V-PUMP ()
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<AND ,PRSI <NOT <EQUAL? ,PRSI ,PUMP>>>
<TELL "Pump it up with a " D ,PRSI "?" CR>))
(T
'(<NULL-F> <RTRUE>))>
%<COND (<==? ,ZORK-NUMBER 1>
'(<IN? ,PUMP ,WINNER>
<PERFORM ,V?INFLATE ,PRSO ,PUMP>))
(T
'(<NULL-F> <RTRUE>))>
(T
<TELL "It's really not clear how." CR>)>>
<ROUTINE V-PUSH () <HACK-HACK "Pushing the ">>
<ROUTINE V-PUSH-TO ()
<TELL "You can't push things to that." CR>>
<ROUTINE PRE-PUT ()
<COND %<COND (<==? ,ZORK-NUMBER 3>
'(<EQUAL? ,PRSO ,SHORT-POLE>
<RFALSE>))
(T
'(<NULL-F>
<RFALSE>))>
(T
<PRE-GIVE>)>> ;"That's easy for you to say..."
<ROUTINE V-PUT ()
<COND (<OR <FSET? ,PRSI ,OPENBIT>
<OPENABLE? ,PRSI>
<FSET? ,PRSI ,VEHBIT>>)
(T
<TELL "You can't do that." CR>
<RTRUE>)>
<COND (<NOT <FSET? ,PRSI ,OPENBIT>>
<TELL "The " D ,PRSI " isn't open." CR>
<THIS-IS-IT ,PRSI>)
(<EQUAL? ,PRSI ,PRSO>
<TELL "How can you do that?" CR>)
(<IN? ,PRSO ,PRSI>
<TELL "The " D ,PRSO " is already in the " D ,PRSI "." CR>)
(<G? <- <+ <WEIGHT ,PRSI> <WEIGHT ,PRSO>>
<GETP ,PRSI ,P?SIZE>>
<GETP ,PRSI ,P?CAPACITY>>
<TELL "There's no room." CR>)
(<AND <NOT <HELD? ,PRSO>>
<FSET? ,PRSO ,TRYTAKEBIT>>
<TELL "You don't have the " D ,PRSO "." CR>
<RTRUE>)
(<AND <NOT <HELD? ,PRSO>>
<NOT <ITAKE>>>
<RTRUE>)
(T
<MOVE ,PRSO ,PRSI>
<FSET ,PRSO ,TOUCHBIT>
<SCORE-OBJ ,PRSO>
<TELL "Done." CR>)>>
<ROUTINE V-PUT-BEHIND ()
<TELL "That hiding place is too obvious." CR>>
<ROUTINE V-PUT-ON ()
<COND (<EQUAL? ,PRSI ,GROUND>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
(<FSET? ,PRSI ,SURFACEBIT>
<V-PUT>)
(T
<TELL "There's no good surface on the " D ,PRSI "." CR>)>>
<ROUTINE V-PUT-UNDER ()
<TELL "You can't do that." CR>>
<ROUTINE V-RAISE ()
<V-LOWER>>
<ROUTINE V-RAPE ()
<TELL "What a (ahem!) strange idea." CR>>
<ROUTINE PRE-READ ()
<COND (<NOT ,LIT>
<TELL "It is impossible to read in the dark." CR>)
(<AND ,PRSI <NOT <FSET? ,PRSI ,TRANSBIT>>>
<TELL "How does one look through a " D ,PRSI "?" CR>)>>
<ROUTINE V-READ ()
<COND (<NOT <FSET? ,PRSO ,READBIT>>
<TELL "How does one read a " D ,PRSO "?" CR>)
(T
<TELL <GETP ,PRSO ,P?TEXT> CR>)>>
<ROUTINE V-READ-PAGE ()
<PERFORM ,V?READ ,PRSO>
<RTRUE>>
<ROUTINE V-REPENT ()
<TELL "It could very well be too late!" CR>>
<ROUTINE V-REPLY ()
<TELL "It is hardly likely that the " D ,PRSO " is interested." CR>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>>
<ROUTINE V-RING ()
<TELL "How, exactly, can you ring that?" CR>>
<ROUTINE V-RUB () <HACK-HACK "Fiddling with the ">>
<ROUTINE V-SAY ("AUX" V)
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<OR ,SPELL-USED ,WAND-ON>
<PERFORM ,V?INCANT>
<RTRUE>)>)
(<==? ,ZORK-NUMBER 3>
'<COND (<AND <FSET? ,FRONT-DOOR ,TOUCHBIT>
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?FROTZ>
<EQUAL? <GET ,P-LEXV <+ ,P-CONT 2>> ,W?OZMOO>>
<SETG P-CONT <>>
<COND (<EQUAL? ,HERE ,MSTAIRS>
<CRLF>
<GOTO ,FRONT-DOOR>)
(T
<TELL "Nothing happens." CR>)>
<RTRUE>)>)
(T
'<PROG ()
<COND (<NOT ,P-CONT>
<TELL "Say what?" CR>
<RTRUE>)
(T <SETG QUOTE-FLAG <>> <RTRUE>)>>)>
<COND (<SET V <FIND-IN ,HERE ,ACTORBIT>>
<TELL "You must address the " D .V " directly." CR>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>)
(<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?HELLO>
<SETG QUOTE-FLAG <>>
<RTRUE>)
(T
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-133 (40656)
(T <TELL "in">)>
<TELL " the " D ,PRSI "." CR>)
(T <TELL "No, it isn't." CR>)>>
<ROUTINE V-KISS ()
<TELL "I'd sooner kiss a pig." CR>>
<ROUTINE V-RAPE ()
<TELL "What a (ahem!) strange idea." CR>>
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
<SET W <FIRST? .WHERE>>
<COND (<NOT .W> <RFALSE>)>
<REPEAT ()
<COND (<FSET? .W .WHAT> <RETURN .W>)
(<NOT <SET W <NEXT? .W>>> <RETURN <>>)>>>
<ROUTINE V-SAY ("AUX" V)
<COND (<AND <FSET? ,FRONT-DOOR ,TOUCHBIT>
<==? <GET ,P-LEXV ,P-CONT> ,W?FROTZ>
<==? <GET ,P-LEXV <+ ,P-CONT 2>> ,W?OZMOO>>
<SETG P-CONT <>>
<COND (<==? ,HERE ,MSTAIRS>
<CRLF>
<GOTO ,FRONT-DOOR>)
(T
<TELL "Nothing happens." CR>)>)
(<SET V <FIND-IN ,HERE ,ACTORBIT>>
<TELL "You must address the " D .V " directly." CR>)
(<==? <GET ,P-LEXV ,P-CONT> ,W?HELLO>
<SETG QUOTE-FLAG <>>
<RTRUE>)
(ELSE
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-1220 (34776)
<ROUTINE V-SEARCH ()
<TELL "You find nothing unusual." CR>>
<ROUTINE V-SEND ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "Why would you send for the " D ,PRSO "?" CR>)
(T
<TELL "That doesn't make sends." CR>)>>
<ROUTINE PRE-SGIVE ()
<PERFORM ,V?GIVE ,PRSI ,PRSO>
<RTRUE>>
<ROUTINE V-SGIVE ()
<TELL "Foo!" CR>>
<ROUTINE V-SHAKE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "This seems to have no effect." CR>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL "You can't take it; thus, you can't shake it!" CR>)
(<FSET? ,PRSO ,CONTBIT>
<COND (<FSET? ,PRSO ,OPENBIT>
<COND (<FIRST? ,PRSO>
<SHAKE-LOOP>
<TELL "The contents of the " D, PRSO " spills ">
<COND (<NOT <FSET? ,HERE ,RLANDBIT>>
<TELL "out and disappears">)
(T
<TELL "to the ground">)>
<TELL "." CR>)
(T
<TELL "Shaken." CR>)>)
(T
<COND (<FIRST? ,PRSO>
<TELL
"It sounds like there is something inside the " D ,PRSO "." CR>)
(T
<TELL "The " D, PRSO " sounds empty." CR>)>)>)
(T
<TELL "Shaken." CR>)>>
<ROUTINE SHAKE-LOOP ("AUX" X)
<REPEAT ()
<COND (<SET X <FIRST? ,PRSO>>
<FSET .X ,TOUCHBIT>
<MOVE .X
%<COND (<==? ,ZORK-NUMBER 1>
'<COND (<EQUAL? ,HERE ,UP-A-TREE>
,PATH)
(<NOT <FSET? ,HERE ,RLANDBIT>>
,PSEUDO-OBJECT)
(T
,HERE)>)
(<==? ,ZORK-NUMBER 2>
'<COND (<EQUAL? .X ,WATER>
,PSEUDO-OBJECT)
(<NOT <FSET? ,HERE ,RLANDBIT>>
,PSEUDO-OBJECT)
(T
,HERE)>)
(T
'<COND (<EQUAL? ,HERE ,ON-LAKE>
,IN-LAKE)
(T
,HERE)>)>>)
(T
<RETURN>)>>>
<ROUTINE V-SKIP ()
<TELL <PICK-ONE ,WHEEEEE> CR>>
<GLOBAL WHEEEEE
<LTABLE 0 "Very good. Now you can go to the second grade."
"Are you enjoying yourself?"
"Wheeeeeeeeee!!!!!"
"Do you expect me to applaud?">>
<ROUTINE V-SMELL ()
<TELL "It smells like a " D ,PRSO "." CR>>
<ROUTINE V-SPIN ()
<TELL "You can't spin that!" CR>>
<ROUTINE V-SPRAY ()
<V-SQUEEZE>>
<ROUTINE V-SQUEEZE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL "The " D ,PRSO " does not understand this.">)
(T
<TELL "How singularly useless.">)>
<CRLF>>
<ROUTINE V-SSPRAY ()
<PERFORM ,V?SPRAY ,PRSI ,PRSO>>
<ROUTINE V-STAB ("AUX" W)
<COND (<SET W <FIND-WEAPON ,WINNER>>
<PERFORM ,V?ATTACK ,PRSO .W>
<RTRUE>)
(T
<TELL
"No doubt you propose to stab the " D ,PRSO " with your pinky?" CR>)>>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-171 (41735)
<ROUTINE V-INCANT ()
<TELL
"The incantation echoes back faintly, but nothing else happens." CR>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>
<RTRUE>>
<ROUTINE V-SPIN ()
<TELL "You can't spin that!" CR>>
<ROUTINE V-THROUGH ("AUX" M)
<COND (<FSET? ,PRSO ,DOORBIT>
<DO-WALK <OTHER-SIDE ,PRSO>>
<RTRUE>)
(<FSET? ,PRSO ,VEHBIT>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL "You hit your head against the "
D ,PRSO
" as you attempt this feat." CR>)
(<IN? ,PRSO ,WINNER>
<TELL "That would involve quite a contortion!" CR>)
(ELSE <TELL <RANDOM-ELEMENT ,YUKS> CR>)>>
<ROUTINE V-WEAR ()
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
<TELL "You can't wear the " D ,PRSO "." CR>)
(T <PERFORM ,V?TAKE ,PRSO> <RTRUE>)>>
<ROUTINE V-THROW-OFF ()
<TELL "You can't throw anything off of that!" CR>>
<ROUTINE V-$VERIFY ()
<TELL "Verifying game..." CR>
<COND (<VERIFY> <TELL "Game correct." CR>)
(T <TELL CR "** Game File Failure **" CR>)>>
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-1329 (37729)
(T
<TELL "You are already standing, I think." CR>)>>
<ROUTINE V-STAY ()
<TELL "You will be lost without me!" CR>>
<ROUTINE V-STRIKE ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<TELL
"Since you aren't versed in hand-to-hand combat, you'd better attack the "
D ,PRSO " with a weapon." CR>)
(T
<PERFORM ,V?LAMP-ON ,PRSO>
<RTRUE>)>>
<ROUTINE V-SWIM ()
<COND %<COND (<OR <==? ,ZORK-NUMBER 1>
<==? ,ZORK-NUMBER 2>>
'(<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
<TELL "Swimming isn't usually allowed in the ">
<COND (<NOT <EQUAL? ,PRSO ,WATER ,GLOBAL-WATER>>
<TELL D ,PRSO ".">)
(T
<TELL "dungeon.">)>
<CRLF>))
(T
'(<EQUAL? ,HERE ,ON-LAKE ,IN-LAKE>
<TELL "What do you think you're doing?" CR>))>
%<COND (<==? ,ZORK-NUMBER 3>
'(<EQUAL? ,HERE ,FLATHEAD-OCEAN>
<TELL
"Between the rocks and waves, you wouldn't last a minute!" CR>))
(T
'(<NULL-F>
<RFALSE>))>
(T
<TELL "Go jump in a lake!" CR>)>>
<ROUTINE V-SWING ()
<COND (<NOT ,PRSI>
<TELL "Whoosh!" CR>)
(T
<PERFORM ,V?ATTACK ,PRSI ,PRSO>)>>
<ROUTINE PRE-TAKE ()
<COND (<IN? ,PRSO ,WINNER>
<COND (<FSET? ,PRSO ,WEARBIT>
<TELL "You are already wearing it." CR>)
(T
<TELL "You already have that!" CR>)>)
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
<TELL
"You can't reach something that's inside a closed container." CR>
<RTRUE>)
(,PRSI
<COND (<EQUAL? ,PRSI ,GROUND>
<SETG PRSI <>>
<RFALSE>)>
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<EQUAL? ,PRSO ,DOOR-KEEPER>
<SETG PRSI <>>
<RFALSE>)>)
(ELSE
'<NULL-F>)>
<COND (<NOT <EQUAL? ,PRSI <LOC ,PRSO>>>
<TELL "The " D ,PRSO " isn't in the " D ,PRSI "." CR>)
(T
<SETG PRSI <>>
<RFALSE>)>)
(<EQUAL? ,PRSO <LOC ,WINNER>>
<TELL "You're inside of it!" CR>)>>
<ROUTINE V-TAKE ()
<COND (<EQUAL? <ITAKE> T>
<COND (<FSET? ,PRSO ,WEARBIT>
<TELL "You are now wearing the " D ,PRSO "." CR>)
(T
<TELL "Taken." CR>)>)>>
<ROUTINE V-TELL ()
<COND (<FSET? ,PRSO ,ACTORBIT>
<COND (,P-CONT
<SETG WINNER ,PRSO>
<SETG HERE <LOC ,WINNER>>)
(T
<TELL "The " D ,PRSO
" pauses for a moment, perhaps thinking that you should re-read
the manual." CR>)>)
(T
<TELL "You can't talk to the " D ,PRSO "!" CR>
<SETG QUOTE-FLAG <>>
<SETG P-CONT <>>
<RFATAL>)>>
<ROUTINE V-THROUGH ("OPTIONAL" (OBJ <>) "AUX" M)
#DECL ((OBJ) <OR OBJECT FALSE> (M) <PRIMTYPE VECTOR>)
<COND (<AND <FSET? ,PRSO ,DOORBIT>
<SET M <OTHER-SIDE ,PRSO>>>
<DO-WALK .M>
<RTRUE>)
(<AND <NOT .OBJ> <FSET? ,PRSO ,VEHBIT>>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<OR .OBJ <NOT <FSET? ,PRSO ,TAKEBIT>>>
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<AND ,SCOL-ROOM
<OR .OBJ <EQUAL? ,PRSO ,CURTAIN>>>
<SCOL-GO .OBJ>
<RTRUE>)
(<AND <EQUAL? ,HERE ,DEPOSITORY>
<EQUAL? ,PRSO ,SNWL>
,SCOL-ROOM>
<SCOL-GO .OBJ>
<RTRUE>)
(<AND <EQUAL? ,HERE ,SCOL-ACTIVE>
<EQUAL? ,PRSO
<GET <SET M <GET-WALL ,HERE>> 1>>>
<SETG SCOL-ROOM <GET .M 2>>
<SETG PRSO <GETP ,PRSO ,P?SIZE>>
<COND (.OBJ <SCOL-OBJ .OBJ 0 ,DEPOSITORY>)
(T
<SCOL-THROUGH 0 ,DEPOSITORY>)>
<RTRUE>)
(<EQUAL? ,PRSO ,CURTAIN>
<TELL
"You can't go more than part way through the curtain." CR>
<RTRUE>)>)
(ELSE '<NULL-F>)>
<TELL
"You hit your head against the " D ,PRSO " as you attempt this feat." CR>)
(<IN? ,PRSO ,WINNER>
<TELL "That would involve quite a contortion!" CR>)
(T
<TELL <PICK-ONE ,YUKS> CR>)>>
<ROUTINE V-THROW ()
<COND (<IDROP>
<COND (<EQUAL? ,PRSI ,ME>
<TELL
"A terrific throw! The " D ,PRSO>
<SETG WINNER ,PLAYER>
<JIGS-UP " hits you squarely in the head. Normally,
this wouldn't do much damage, but by incredible mischance, you fall over
backwards trying to duck, and break your neck, justice being swift and
merciful in the Great Underground Empire.">)
(<AND ,PRSI <FSET? ,PRSI ,ACTORBIT>>
<TELL
"The " D ,PRSI " ducks as the " D ,PRSO " flies by and crashes to the ground."
CR>)
(T <TELL "Thrown." CR>)>)
(ELSE <TELL "Huh?" CR>)>>
<ROUTINE V-THROW-OFF ()
<TELL "You can't throw anything off of that!" CR>>
<ROUTINE V-TIE ()
<COND (<EQUAL? ,PRSI ,WINNER>
<TELL "You can't tie anything to yourself." CR>)
(T
<TELL "You can't tie the " D ,PRSO " to that." CR>)>>
<ROUTINE V-TIE-UP ()
<TELL "You could certainly never tie it with that!" CR>>
<ROUTINE V-TREASURE ()
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,HERE ,NORTH-TEMPLE>
<GOTO ,TREASURE-ROOM>))
(T
'(<NULL-F> <RTRUE>))>
%<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,HERE ,TREASURE-ROOM>
<GOTO ,NORTH-TEMPLE>))
(T
'(<NULL-F> <RTRUE>))>
(T
<TELL "Nothing happens." CR>)>>
<ROUTINE PRE-TURN ()
<COND (%<COND (<==? ,ZORK-NUMBER 1>
'<AND <NOT ,PRSI>
<NOT <EQUAL? ,PRSO ,BOOK>>>)
(ELSE
'<NOT ,PRSI>)>
<TELL "Your bare hands don't appear to be enough." CR>)
(<NOT <FSET? ,PRSO ,TURNBIT>>
<TELL "You can't turn that!" CR>)>>
<ROUTINE V-TURN ()
<TELL "This has no effect." CR>>
<ROUTINE V-UNLOCK ()
<V-LOCK>>
<ROUTINE V-UNTIE ()
<TELL "This cannot be tied, so it cannot be untied!" CR>>
<ROUTINE V-WAIT ("OPTIONAL" (NUM 3))
<TELL "Time passes..." CR>
<REPEAT ()
<COND (<L? <SET NUM <- .NUM 1>> 0> <RETURN>)
(<CLOCKER> <RETURN>)>>
<SETG CLOCK-WAIT T>>
<ROUTINE V-WALK ("AUX" PT PTS STR OBJ RM)
<COND (<NOT ,P-WALK-DIR>
<PERFORM ,V?WALK-TO ,PRSO>
<RTRUE>)
(<SET PT <GETPT ,HERE ,PRSO>>
<COND (<EQUAL? <SET PTS <PTSIZE .PT>> ,UEXIT>
<GOTO <GETB .PT ,REXIT>>)
(<EQUAL? .PTS ,NEXIT>
<TELL <GET .PT ,NEXITSTR> CR>
<RFATAL>)
(<EQUAL? .PTS ,FEXIT>
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
<GOTO .RM>)
%<COND (<==? ,ZORK-NUMBER 3>
'(<AND <EQUAL? ,HERE ,CP> ,CP-MOVED>
<RTRUE>))
(T
'(<NULL-F> <RFALSE>))>
(T
<RFATAL>)>)
(<EQUAL? .PTS ,CEXIT>
<COND (<VALUE <GETB .PT ,CEXITFLAG>>
<GOTO <GETB .PT ,REXIT>>)
(<SET STR <GET .PT ,CEXITSTR>>
<TELL .STR CR>
<RFATAL>)
(T
<TELL "You can't go that way." CR>
<RFATAL>)>)
(<EQUAL? .PTS ,DEXIT>
<COND (<FSET? <SET OBJ <GETB .PT ,DEXITOBJ>> ,OPENBIT>
<GOTO <GETB .PT ,REXIT>>)
(<SET STR <GET .PT ,DEXITSTR>>
<TELL .STR CR>
<RFATAL>)
(T
<TELL "The " D .OBJ " is closed." CR>
<THIS-IS-IT .OBJ>
<RFATAL>)>)>)
(<AND <NOT ,LIT>
<PROB 80>
<EQUAL? ,WINNER ,ADVENTURER>
<NOT <FSET? ,HERE ,NONLANDBIT>>>
<COND (,SPRAYED?
<TELL
"There are odd noises in the darkness, and there is no exit in that
direction." CR>
<RFATAL>)
%<COND (<==? ,ZORK-NUMBER 3>
'(<EQUAL? ,HERE ,DARK-1 ,DARK-2>
<JIGS-UP
"Oh, no! You have walked into a den of hungry grues and it's dinner time!">))
(T
'(<NULL-F>
<RFALSE>))>
(T
<JIGS-UP
"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-WALK-AROUND ()
<TELL "Use compass directions for movement." CR>>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-213 (42948)
(ELSE
<TELL "You are already standing, I think." CR>)>>
<ROUTINE V-PUT-BEHIND ()
<TELL "That hiding place is too obvious." CR>>
<ROUTINE DO-WALK (DIR)
<SETG P-WALK-DIR .DIR>
<PERFORM ,V?WALK .DIR>>
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-1603 (45917)
(T
<TELL "You should supply a direction!" CR>)>>
<ROUTINE V-WAVE ()
<HACK-HACK "Waving the ">>
<ROUTINE V-WEAR ()
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
<TELL "You can't wear the " D ,PRSO "." CR>)
(T
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)>>
<ROUTINE V-WIN ()
<TELL "Naturally!" CR>>
<ROUTINE V-WIND ()
<TELL "You cannot wind up a " D ,PRSO "." CR>>
<ROUTINE V-WISH ()
%<COND (<==? ,ZORK-NUMBER 2>
'<PERFORM ,V?MAKE ,WISH>)
(T
'<TELL "With luck, your wish will come true." CR>)>>
<ROUTINE V-YELL () <TELL "Aaaarrrrgggghhhh!" CR>>
<ROUTINE V-ZORK () <TELL "At your service!" CR>>
^L
"Verb-Associated Routines"
"Descriptions"
<GLOBAL LIT <>>
<GLOBAL SPRAYED? <>>
<ROUTINE V-FIRST-LOOK ()
<COND (<DESCRIBE-ROOM>
<COND (<NOT ,SUPER-BRIEF>
<DESCRIBE-OBJECTS>)>)>>
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
<SET V? <OR .LOOK? ,VERBOSE>>
<COND (<NOT ,LIT>
<TELL "It is pitch black.">
<COND (<NOT ,SPRAYED?>
<TELL " You are likely to be eaten by a grue.">)>
<CRLF>
%<COND (<==? ,ZORK-NUMBER 3>
'<COND (<EQUAL? ,HERE ,DARK-2>
<TELL
"The ground continues to slope upwards away from the lake. You can barely
detect a dim light from the east." CR>)>)
(T
'<NULL-F>)>
<RETURN <>>)>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<FSET ,HERE ,TOUCHBIT>
<SET V? T>)>
%<COND (<==? ,ZORK-NUMBER 1>
'<COND (<FSET? ,HERE ,MAZEBIT>
<FCLEAR ,HERE ,TOUCHBIT>)>)
(T
'<NULL-F>)>
<COND (<IN? ,HERE ,ROOMS>
;"Was <TELL D ,HERE CR>"
<TELL D ,HERE>
<COND (<FSET? <SET AV <LOC ,WINNER>> ,VEHBIT>
<TELL ", in the " D .AV>)>
<CRLF>)>
<COND (%<COND (<==? ,ZORK-NUMBER 2>
'<OR .LOOK? <NOT ,SUPER-BRIEF> <EQUAL? ,HERE ,ZORK3>>)
(ELSE
'<OR .LOOK? <NOT ,SUPER-BRIEF>>)>
<SET AV <LOC ,WINNER>>
;<COND (<FSET? .AV ,VEHBIT>
<TELL "(You are in the " D .AV ".)" CR>)>
<COND (<AND .V? <APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>>
<RTRUE>)
(<AND .V? <SET STR <GETP ,HERE ,P?LDESC>>>
<TELL .STR CR>)
(T
<APPLY <GETP ,HERE ,P?ACTION> ,M-FLASH>)>
<COND (<AND <NOT <EQUAL? ,HERE .AV>> <FSET? .AV ,VEHBIT>>
<APPLY <GETP .AV ,P?ACTION> ,M-LOOK>)>)>
T>
<ROUTINE DESCRIBE-OBJECTS ("OPTIONAL" (V? <>))
<COND (,LIT
<COND (<FIRST? ,HERE>
<PRINT-CONT ,HERE <SET V? <OR .V? ,VERBOSE>> -1>)>)
(T
<TELL "Only bats can see in the dark. And you're not one." CR>)>>
"DESCRIBE-OBJECT -- takes object and flag. if flag is true will print a
long description (fdesc or ldesc), otherwise will print short."
<GLOBAL DESC-OBJECT <>>
<ROUTINE DESCRIBE-OBJECT (OBJ V? LEVEL "AUX" (STR <>) AV)
<SETG DESC-OBJECT .OBJ>
<COND (<AND <0? .LEVEL>
<APPLY <GETP .OBJ ,P?DESCFCN> ,M-OBJDESC>>
<RTRUE>)
(<AND <0? .LEVEL>
<OR <AND <NOT <FSET? .OBJ ,TOUCHBIT>>
<SET STR <GETP .OBJ ,P?FDESC>>>
<SET STR <GETP .OBJ ,P?LDESC>>>>
<TELL .STR>)
(<0? .LEVEL>
<TELL "There is a " D .OBJ " here">
<COND (<FSET? .OBJ ,ONBIT>
<TELL " (providing light)">)>
<TELL ".">)
(T
<TELL <GET ,INDENTS .LEVEL>>
<TELL "A " D .OBJ>
<COND (<FSET? .OBJ ,ONBIT>
<TELL " (providing light)">)
(<AND <FSET? .OBJ ,WEARBIT>
<IN? .OBJ ,WINNER>>
<TELL " (being worn)">)>)>
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<AND <EQUAL? .OBJ ,SPELL-VICTIM>
<EQUAL? ,SPELL-USED ,W?FLOAT>>
<TELL " (floating in midair)">)>)
(T
'<NULL-F>)>
<COND (<AND <0? .LEVEL>
<SET AV <LOC ,WINNER>>
<FSET? .AV ,VEHBIT>>
<TELL " (outside the " D .AV ")">)>
<CRLF>
<COND (<AND <SEE-INSIDE? .OBJ> <FIRST? .OBJ>>
<PRINT-CONT .OBJ .V? .LEVEL>)>>
<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? <>>)
(ELSE
<TELL ", ">
<COND (<NOT .N> <TELL "and ">)>)>
<TELL "a " D .F>
<COND (<AND <NOT .IT?> <NOT .TWO?>>
<SET IT? .F>)
(ELSE
<SET TWO? T>
<SET IT? <>>)>
<SET F .N>
<COND (<NOT .F>
<COND (<AND .IT? <NOT .TWO?>>
<THIS-IS-IT .IT?>)>
<RTRUE>)>>)>>
<ROUTINE PRINT-CONT (OBJ "OPTIONAL" (V? <>) (LEVEL 0)
"AUX" Y 1ST? SHIT AV STR (PV? <>) (INV? <>))
<COND (<NOT <SET Y <FIRST? .OBJ>>> <RTRUE>)>
<COND (<AND <SET AV <LOC ,WINNER>> <FSET? .AV ,VEHBIT>>
T)
(ELSE <SET AV <>>)>
<SET 1ST? T>
<SET SHIT T>
<COND (<EQUAL? ,WINNER .OBJ <LOC .OBJ>>
<SET INV? T>)
(ELSE
<REPEAT ()
<COND %<COND (<==? ,ZORK-NUMBER 2>
'(<NOT .Y>
<COND (<AND <0? .LEVEL>
<==? ,SPELL? ,S-FANTASIZE>
<PROB 20>>
<TELL "There is a "
<PICK-ONE ,FANTASIES>
" here." CR>
<SET 1ST? <>>)>
<RETURN <NOT .1ST?>>))
(ELSE
'(<NOT .Y>
<RETURN <NOT .1ST?>>))>
(<EQUAL? .Y .AV> <SET PV? T>)
(<EQUAL? .Y ,WINNER>)
(<AND <NOT <FSET? .Y ,INVISIBLE>>
<NOT <FSET? .Y ,TOUCHBIT>>
<SET STR <GETP .Y ,P?FDESC>>>
<COND (<NOT <FSET? .Y ,NDESCBIT>>
<TELL .STR CR>
<SET SHIT <>>
;<SET 1ST? <>>)>
<COND (<AND <SEE-INSIDE? .Y>
<NOT <GETP <LOC .Y> ,P?DESCFCN>>
<FIRST? .Y>>
<COND (<PRINT-CONT .Y .V? 0>
<SET 1ST? <>>)>)>)>
<SET Y <NEXT? .Y>>>)>
<SET Y <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .Y>
<COND (<AND .PV? .AV <FIRST? .AV>>
<SET LEVEL <+ .LEVEL 1>> ;"not in Zork III"
<PRINT-CONT .AV .V? .LEVEL>)>
<RETURN>)
(<EQUAL? .Y .AV ,ADVENTURER>)
(<AND <NOT <FSET? .Y ,INVISIBLE>>
<OR .INV?
<FSET? .Y ,TOUCHBIT>
<NOT <GETP .Y ,P?FDESC>>>>
<COND (<NOT <FSET? .Y ,NDESCBIT>>
<COND (.1ST?
<COND (<FIRSTER .OBJ .LEVEL>
<COND (<L? .LEVEL 0>
<SET LEVEL 0>)>)>
<SET LEVEL <+ 1 .LEVEL>>
<SET 1ST? <>>)>
<COND (<L? .LEVEL 0> <SET LEVEL 0>)>
<DESCRIBE-OBJECT .Y .V? .LEVEL>)
(<AND <FIRST? .Y> <SEE-INSIDE? .Y>>
<SET LEVEL <+ .LEVEL 1>> ;"not in Zork III"
<PRINT-CONT .Y .V? .LEVEL>
<SET LEVEL <- .LEVEL 1>>)>)>
<SET Y <NEXT? .Y>>>
<COND (<AND .1ST? .SHIT> <RFALSE>) (T <RTRUE>)>>
<ROUTINE FIRSTER (OBJ LEVEL)
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? .OBJ ,TROPHY-CASE>
<TELL
"Your collection of treasures consists of:" CR>))
(T
'(<NULL-F> <RTRUE>))>
(<EQUAL? .OBJ ,WINNER>
<TELL "You are carrying:" CR>)
(<NOT <IN? .OBJ ,ROOMS>>
<COND (<G? .LEVEL 0>
<TELL <GET ,INDENTS .LEVEL>>)>
<COND (<FSET? .OBJ ,SURFACEBIT>
<TELL "Sitting on the " D .OBJ " is: " CR>)
(<FSET? .OBJ ,ACTORBIT>
<TELL "The " D .OBJ " is holding: " CR>)
(T
<TELL "The " D .OBJ " contains:" CR>)>)>>
<ROUTINE SEE-INSIDE? (OBJ)
<AND <NOT <FSET? .OBJ ,INVISIBLE>>
<OR <FSET? .OBJ ,TRANSBIT> <FSET? .OBJ ,OPENBIT>>>>
"Scoring"
<GLOBAL MOVES 0>
<GLOBAL SCORE 0>
<GLOBAL BASE-SCORE 0>
<GLOBAL WON-FLAG <>>
<ROUTINE SCORE-UPD (NUM)
<SETG BASE-SCORE <+ ,BASE-SCORE .NUM>>
<SETG SCORE <+ ,SCORE .NUM>>
%<COND (<==? ,ZORK-NUMBER 1>
'<COND (<AND <EQUAL? ,SCORE 350>
<NOT ,WON-FLAG>>
<SETG WON-FLAG T>
<FCLEAR ,MAP ,INVISIBLE>
<FCLEAR ,WEST-OF-HOUSE ,TOUCHBIT>
<TELL
"An almost inaudible voice whispers in your ear, \"Look to your treasures
for the final secret.\"" CR>)>)
(T
'<NULL-F>)>
T>
<ROUTINE SCORE-OBJ (OBJ "AUX" TEMP)
<COND (<G? <SET TEMP <GETP .OBJ ,P?VALUE>> 0>
<SCORE-UPD .TEMP>
<PUTP .OBJ ,P?VALUE 0>)>>
<ROUTINE YES? ()
<PRINTI ">">
<READ ,P-INBUF ,P-LEXV>
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?YES ,W?Y>
<RTRUE>)
(T
<RFALSE>)>>
"Death"
<GLOBAL DEAD <>>
<GLOBAL DEATHS 0>
<GLOBAL LUCKY 1>
;"JIGS-UP is in ACTIONS.ZIL"
;"RANDOMIZE-OBJECTS is in ACTIONS.ZIL"
;"KILL-INTERRUPTS is in ACTIONS.ZIL"
"Object Manipulation"
<GLOBAL FUMBLE-NUMBER 7>
<GLOBAL FUMBLE-PROB 8>
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" CNT OBJ)
#DECL ((VB) <OR ATOM FALSE> (CNT) FIX (OBJ) OBJECT)
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(,DEAD
<COND (.VB
<TELL
"Your hand passes through its object." CR>)>
<RFALSE>))
(T
'(<NULL-F>
<RFALSE>))>
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<COND (.VB
<TELL <PICK-ONE ,YUKS> CR>)>
<RFALSE>)
%<COND (<==? ,ZORK-NUMBER 2>
'(<AND <EQUAL? ,PRSO ,SPELL-VICTIM>
<EQUAL? ,SPELL-USED ,W?FLOAT ,W?FREEZE>>
<COND (<EQUAL? ,SPELL-USED ,W?FLOAT>
<TELL
"You can't reach that. It's floating above your head." CR>)
(T
<TELL "It seems rooted to the spot." CR>)>
<RFALSE>))
(T
'(<NULL-F>
<RFALSE>))>
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
;"Kludge for parser calling itake"
<RFALSE>)
(<AND <NOT <IN? <LOC ,PRSO> ,WINNER>>
<G? <+ <WEIGHT ,PRSO> <WEIGHT ,WINNER>> ,LOAD-ALLOWED>>
<COND (.VB
<TELL "Your load is too heavy">
<COND (<L? ,LOAD-ALLOWED ,LOAD-MAX>
<TELL", especially in light of your condition.">)
(T
<TELL ".">)>
<CRLF>)>
<RFATAL>)
(<AND <VERB? TAKE>
<G? <SET CNT <CCOUNT ,WINNER>> ,FUMBLE-NUMBER>
<PROB <* .CNT ,FUMBLE-PROB>>>
<TELL
"You're holding too many things already!" CR>
<RFALSE>)
(T
<MOVE ,PRSO ,WINNER>
<FCLEAR ,PRSO ,NDESCBIT>
<FSET ,PRSO ,TOUCHBIT>
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<EQUAL? ,SPELL? ,S-FILCH>
<COND (<RIPOFF ,PRSO ,WIZARD-CASE>
<TELL
"When you touch the " D ,PRSO " it immediately disappears!" CR>
<RFALSE>)>)>)
(T
'<NULL-F>)>
%<COND (<OR <==? ,ZORK-NUMBER 1>
<==? ,ZORK-NUMBER 2>>
'<SCORE-OBJ ,PRSO>)
(T
'<NULL-F>)>
<RTRUE>)>>
<ROUTINE IDROP ()
<COND (<AND <NOT <IN? ,PRSO ,WINNER>>
<NOT <IN? <LOC ,PRSO> ,WINNER>>>
<TELL "You're not carrying the " D ,PRSO "." CR>
<RFALSE>)
(<AND <NOT <IN? ,PRSO ,WINNER>>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
<TELL "The " D ,PRSO " is closed." CR>
<RFALSE>)
(T
<MOVE ,PRSO <LOC ,WINNER>>
<RTRUE>)>>
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
<COND (<SET X <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT <FSET? .X ,WEARBIT>>
<SET CNT <+ .CNT 1>>)>
<COND (<NOT <SET X <NEXT? .X>>>
<RETURN>)>>)>
.CNT>
<ROUTINE WEIGHT (OBJ "AUX" CONT (WT 0))
<COND (<SET CONT <FIRST? .OBJ>>
<REPEAT ()
<COND (<AND <EQUAL? .OBJ ,PLAYER>
<FSET? .CONT ,WEARBIT>>
<SET WT <+ .WT 1>>)
(T
<SET WT <+ .WT <WEIGHT .CONT>>>)>
<COND (<NOT <SET CONT <NEXT? .CONT>>> <RETURN>)>>)>
<+ .WT <GETP .OBJ ,P?SIZE>>>
"Miscellaneous"
<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>
<GLOBAL INDENTS
<TABLE ""
" "
" "
" "
" "
" ">>
<ROUTINE HACK-HACK (STR)
<COND (<AND <IN? ,PRSO ,GLOBAL-OBJECTS>
<VERB? WAVE RAISE LOWER>>
<TELL "The " D ,PRSO " isn't here!" CR>)
(T
<TELL .STR D ,PRSO <PICK-ONE ,HO-HUM> CR>)>>
<GLOBAL HO-HUM
<LTABLE
0
" doesn't seem to work."
" isn't notably helpful."
" has no effect.">>
<ROUTINE NO-GO-TELL (AV WLOC)
<COND (.AV
<TELL "You can't go there in a " D .WLOC ".">)
(T
<TELL "You can't go there without a vehicle.">)>
<CRLF>>
<ROUTINE GOTO (RM "OPTIONAL" (V? T)
"AUX" (LB <FSET? .RM ,RLANDBIT>) (WLOC <LOC ,WINNER>)
(AV <>) OLIT OHERE)
<SET OLIT ,LIT>
<SET OHERE ,HERE>
<COND (<FSET? .WLOC ,VEHBIT>
<SET AV <GETP .WLOC ,P?VTYPE>>)>
<COND (<AND <NOT .LB>
<NOT .AV>>
<NO-GO-TELL .AV .WLOC>
<RFALSE>)
(<AND <NOT .LB>
<NOT <FSET? .RM .AV>>>
<NO-GO-TELL .AV .WLOC>
<RFALSE>)
(<AND <FSET? ,HERE ,RLANDBIT>
.LB
.AV
<NOT <EQUAL? .AV ,RLANDBIT>>
<NOT <FSET? .RM .AV>>>
<NO-GO-TELL .AV .WLOC>
<RFALSE>)
(<FSET? .RM ,RMUNGBIT>
<TELL <GETP .RM ,P?LDESC> CR>
<RFALSE>)
(T
<COND (<AND .LB
<NOT <FSET? ,HERE ,RLANDBIT>>
<NOT ,DEAD>
<FSET? .WLOC ,VEHBIT>>
%<COND (<==? ,ZORK-NUMBER 1>
'<TELL
"The " D .WLOC " comes to a rest on the shore." CR CR>)
(T
'<COND (<EQUAL? .WLOC ,BALLOON>
<TELL
"The balloon lands." CR>)
(<FSET? .WLOC ,VEHBIT>
<TELL
"The " D .WLOC " comes to a stop." CR CR>)>)>)>
<COND (.AV
<MOVE .WLOC .RM>)
(T
<MOVE ,WINNER .RM>)>
<SETG HERE .RM>
<SETG LIT <LIT? ,HERE>>
<COND (<AND <NOT .OLIT>
<NOT ,LIT>
<PROB 80>>
<COND (,SPRAYED?
<TELL
"There are sinister gurgling noises in the darkness all around you!" CR>)
%<COND (<==? ,ZORK-NUMBER 3>
'(<EQUAL? ,HERE ,DARK-1 ,DARK-2>
<JIGS-UP
"Oh, no! Dozen of lurking grues attack and devour you! You must have
stumbled into an authentic grue lair!">))
(T
'(<NULL-F>
<RFALSE>))>
(T
<TELL
"Oh, no! A lurking grue slithered into the ">
<COND (<FSET? <LOC ,WINNER> ,VEHBIT>
<TELL D <LOC ,WINNER>>)
(T <TELL "room">)>
<JIGS-UP " and devoured you!">
<RTRUE>)>)>
<COND (<AND <NOT ,LIT>
<EQUAL? ,WINNER ,ADVENTURER>>
<TELL "You have moved into a dark place." CR>
<SETG P-CONT <>>)>
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
<SCORE-OBJ .RM>
<COND (<NOT <EQUAL? ,HERE .RM>> <RTRUE>)
(<AND <NOT <EQUAL? ,ADVENTURER ,WINNER>>
<IN? ,ADVENTURER .OHERE>>
<TELL "The " D ,WINNER " leaves the room." CR>)
%<COND (<==? ,ZORK-NUMBER 1>
'(<AND <EQUAL? ,HERE .OHERE>
;"no double description"
<EQUAL? ,HERE ,ENTRANCE-TO-HADES>>
<RTRUE>))
(ELSE
'(<NULL-F> <RTRUE>))>
(<AND .V?
<EQUAL? ,WINNER ,ADVENTURER>>
<V-FIRST-LOOK>)>
<RTRUE>)>>
;"0 -> no next, 1 -> success, 2 -> failed move"
<ROUTINE GO-NEXT (TBL "AUX" VAL)
<COND (<SET VAL <LKP ,HERE .TBL>>
<COND (<NOT <GOTO .VAL>> 2)
(T 1)>)>>
<ROUTINE LKP (ITM TBL "AUX" (CNT 0) (LEN <GET .TBL 0>))
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .LEN>
<RFALSE>)
(<EQUAL? <GET .TBL .CNT> .ITM>
<COND (<EQUAL? .CNT .LEN> <RFALSE>)
(T
<RETURN <GET .TBL <+ .CNT 1>>>)>)>>>
<ROUTINE DO-WALK (DIR)
<SETG P-WALK-DIR .DIR>
<PERFORM ,V?WALK .DIR>>
<ROUTINE WORD-TYPE (OBJ WORD "AUX" SYNS)
<ZMEMQ .WORD
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
<- </ <PTSIZE .SYNS> 2> 1>>>
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" TX)
<COND (<SET TX <GETPT .OBJ2 ,P?GLOBAL>>
<ZMEMQB .OBJ1 .TX <- <PTSIZE .TX> 1>>)>>
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
<SET W <FIRST? .WHERE>>
<COND (<NOT .W>
<RFALSE>)>
<REPEAT ()
<COND (<AND <FSET? .W .WHAT>
<NOT <EQUAL? .W ,ADVENTURER>>>
<RETURN .W>)
(<NOT <SET W <NEXT? .W>>>
<RETURN <>>)>>>
<ROUTINE IN-HERE? (OBJ)
<OR <IN? .OBJ ,HERE>
<GLOBAL-IN? .OBJ ,HERE>>>
<ROUTINE HELD? (CAN)
<REPEAT ()
<SET CAN <LOC .CAN>>
<COND (<NOT .CAN> <RFALSE>)
(<EQUAL? .CAN ,WINNER> <RTRUE>)>>>
<ROUTINE OTHER-SIDE (DOBJ "AUX" (P 0) TX) ;"finds room beyond given door"
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-227 (43290)
(T <TELL "You should supply a direction!" CR>)>>
;"Finds the room on the other side of a door"
<ROUTINE OTHER-SIDE (DOBJ "AUX" (P 0) T)
***************
**** FILE SS:<ZORK2>GVERBS.ZIL.426, 1-2202 (62403)
<SET TX <GETPT ,HERE .P>>
<COND (<AND <EQUAL? <PTSIZE .TX> ,DEXIT>
<EQUAL? <GETB .TX ,DEXITOBJ> .DOBJ>>
<RETURN .P>)>)>>>
<ROUTINE MUNG-ROOM (RM STR)
%<COND (<==? ,ZORK-NUMBER 2>
'<COND (<EQUAL? .RM ,INSIDE-BARROW>
<RFALSE>)>)
(ELSE T)>
<FSET .RM ,RMUNGBIT>
<PUTP .RM ,P?LDESC .STR>>
<ROUTINE THIS-IS-IT (OBJ)
<SETG P-IT-OBJECT .OBJ>>
<GLOBAL SWIMYUKS
<LTABLE 0 "You can't swim in the dungeon.">>
<GLOBAL HELLOS
<LTABLE 0 "Hello."
"Good day."
"Nice weather we've been having lately."
"Goodbye.">>
<GLOBAL YUKS
<LTABLE
0
"A valiant attempt."
"You can't be serious."
;"Not bloody likely."
"An interesting idea..."
"What a concept!">>
<GLOBAL DUMMY
<LTABLE 0
"Look around."
"Too late for that."
"Have your eyes checked.">>
**** FILE SS:<ZORK3>VERBS.ZIL.103, 8-236 (43544)
<SET T <GETPT ,HERE .P>>
<COND (<AND <EQUAL? <PTSIZE .T> ,DEXIT>
<EQUAL? <GETB .T ,DEXITOBJ> .DOBJ>>
<RETURN .P>)>)>>>
<ROUTINE V-DRINK-FROM ()
<TELL "How peculiar!" CR>>
<ROUTINE V-LEAN-ON ()
<TELL "Are you so tired?" CR>>
***************