zork3/3actions.zil

5399 lines
163 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

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

"ACTIONS3 for
ZORK III: The Dungeon Master
The Great Underground Empire (Part 3)
(c) Copyright 1982 Infocom, Inc. All Rights Reserved.
"
"SWORD demon"
<ROUTINE I-SWORD ("AUX" (DEM <INT I-SWORD>) (NG 0) P T L)
<COND (<IN? ,SWORD ,ADVENTURER>
<COND (<AND <==? ,HERE ,CLIFF> <NOT ,MAN-GONE>> <SET NG 1>)
(<AND <==? ,HERE ,CLIFF-LEDGE> ,MAN-FLAG> <SET NG 1>)
(<INFESTED? ,HERE> <SET NG 2>)
(<OR <AND <==? ,MLOC ,MRG> <==? ,HERE ,IN-MIRROR>>
<EQUAL? ,HERE ,MRGE ,MRG ,MRGW>>
<SET NG 1>)
(ELSE
<SET P 0>
<REPEAT ()
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RETURN>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET T <GETPT ,HERE .P>>
<SET L <PTSIZE .T>>
<COND (<EQUAL? .L ,UEXIT ,CEXIT ,DEXIT>
<COND (<INFESTED? <GETB .T 0>>
<SET NG 1>
<RETURN>)>)>)>>)>
<COND (<==? .NG ,SWORD-STATE> <RFALSE>)
(<==? .NG 2>
<TELL "Your sword has begun to glow very brightly." CR>)
(<1? .NG>
<TELL "Your sword is glowing with a faint blue glow."
CR>)
(<0? .NG>
<TELL "Your sword is no longer glowing." CR>)>
<SETG SWORD-STATE .NG>
<RTRUE>)
(ELSE <DISABLE .DEM> <RFALSE>)>>
<GLOBAL SWORD-STATE 0>
<ROUTINE INFESTED? (R "AUX" (F <FIRST? .R>))
<REPEAT ()
<COND (<NOT .F> <RETURN <>>)
(<AND <FSET? .F ,ACTORBIT> <NOT <FSET? .F ,INVISIBLE>>>
<RETURN .F>)
(<NOT <SET F <NEXT? .F>>> <RETURN <>>)>>>
"old ACTIONS.ZIL"
<GLOBAL YUKS
<LTABLE
"A valiant attempt."
"You can't be serious."
"An interesting idea..."
"What a concept!">>
<ROUTINE FIND-WEAPON (O "AUX" W)
<SET W <FIRST? .O>>
<COND (<NOT .W>
<RFALSE>)>
<REPEAT ()
<COND (<EQUAL? .W ,SWORD>
<RETURN .W>)
(<NOT <SET W <NEXT? .W>>> <RFALSE>)>>>
<ROUTINE SWORD-FCN ()
<COND (,SWORD-IN-STONE?
<COND (<VERB? TAKE MOVE>
<COND (<PROB 10>
<TELL
"Who do you think you are? Arthur?" CR>)
(T <TELL
"The sword is deeply imbedded in the rock. You can't budge it." CR>)>)>)
(<AND <VERB? TAKE> <==? ,WINNER ,ADVENTURER>>
<ENABLE <QUEUE I-SWORD -1>>
<>)>>
<GLOBAL LAMP-TABLE
<TABLE 300
"The lamp appears a bit dimmer."
100
"The lamp is definitely dimmer now."
50
"The lamp is nearly out."
0>>
<ROUTINE LANTERN ()
<COND (<VERB? THROW>
<TELL "The lamp smashes. The light is now out." CR>
<DISABLE <INT I-LANTERN>>
<REMOVE ,LAMP>
<SETG CURRENT-LAMP ,BROKEN-LAMP>
<MOVE ,BROKEN-LAMP ,HERE>)
(<VERB? LAMP-ON>
<COND (<NOT <FSET? ,LAMP ,LIGHTBIT>>
<TELL "A burned-out lamp won't light." CR>)
(ELSE
<ENABLE <INT I-LANTERN>>
<>)>)
(<VERB? LAMP-OFF>
<COND (<NOT <FSET? ,LAMP ,LIGHTBIT>>
<TELL "The lamp has already burned out." CR>)
(ELSE
<DISABLE <INT I-LANTERN>>
<>)>)
(<VERB? EXAMINE>
<COND (<NOT <FSET? ,LAMP ,LIGHTBIT>>
<TELL "The lamp has burned out.">)
(<FSET? ,LAMP ,ONBIT>
<TELL "The lamp is on.">)
(ELSE
<TELL "The lamp is turned off.">)>
<CRLF>)>>
<ROUTINE LIGHT-INT (OBJ TBL TICK)
<COND (<0? .TICK>
<FCLEAR .OBJ ,ONBIT>
<FSET .OBJ ,RMUNGBIT>)>
<COND (<OR <HELD? .OBJ> <IN? .OBJ ,HERE>>
<COND (<0? .TICK>
<TELL
"You'd better have more light than from the " D .OBJ "." CR>)
(T
<TELL <GET .TBL 1> CR>)>)>>
<ROUTINE I-LANTERN ("AUX" TICK (TBL <VALUE LAMP-TABLE>))
<ENABLE <QUEUE I-LANTERN <SET TICK <GET .TBL 0>>>>
<LIGHT-INT ,LAMP .TBL .TICK>
<COND (<NOT <0? .TICK>>
<SETG LAMP-TABLE <REST .TBL 4>>)>>
;<ROUTINE LIGHT-INT (OBJ INTNAM TBLNAM "AUX" (TBL <VALUE .TBLNAM>) TICK)
#DECL ((OBJ) OBJECT (TBLNAM INTNAM) ATOM (TBL) <PRIMTYPE VECTOR>
(TICK) FIX)
<ENABLE <QUEUE .INTNAM <SET TICK <GET .TBL 0>>>>
<COND (<0? .TICK>
<FCLEAR .OBJ ,LIGHTBIT>
<FCLEAR .OBJ ,ONBIT>)>
<COND (<OR <HELD? .OBJ> <IN? .OBJ ,HERE>>
<COND (<0? .TICK>
<TELL
"I hope you have more light than from the " D .OBJ "." CR>)
(T
<TELL <GET .TBL 1> CR>)>)>
<COND (<NOT <0? .TICK>>
<SETG .TBLNAM <REST .TBL 4>>)>>
<ROUTINE CHASM-FCN ()
<COND (<OR <VERB? LEAP>
<AND <VERB? PUT> <==? ,PRSO ,ME>>>
<TELL
"You look before leaping and realize you would never survive." CR>)
(<VERB? CROSS>
<TELL "You'll have to find a bridge." CR>)
(<AND <VERB? PUT> <==? ,PRSI ,PSEUDO-OBJECT>>
<TELL
"The " D ,PRSO " drops out of sight into the chasm." CR>
<REMOVE ,PRSO>)>>
<ROUTINE TUNNEL-OBJECT ()
<COND (<AND <VERB? THROUGH> <GETP ,HERE ,P?IN>>
<DO-WALK ,P?IN>
<RTRUE>)
(T <PATH-OBJECT>)>>
\
"SUBTITLE CHINESE PUZZLE SECTION (COURTESY OF WILL WENG)"
<GLOBAL CPHERE 1>
<GLOBAL CPOBJS <ITABLE NONE <* 8 2 36>>>
<GLOBAL CPTABLE
<TABLE 1
0
-1
0
0
-1
0
-1
0
1
0
-2
0
0
0
0
0
1
0
-3
0
0
-1
-1
0
0
0
-1
0
0
0
1
1
0
0
0
1>>
;" 0 is no wall
1 is fixed wall
-1 is movable wall (-2 is good ladder, -3 bad ladder)"
<GLOBAL CPWALLS <LTABLE CPSWL 6 CPNWL -6 CPEWL 1 CPWWL -1>>
<GLOBAL CPEXITS <LTABLE
P?NORTH
-6
P?SOUTH
6
P?EAST
1
P?WEST
-1
P?NE
-5
P?NW
-7
P?SE
7
P?SW
5>>
<GLOBAL CP-MOVED <>>
<ROUTINE CPEXIT ("AUX" FX NFX)
#DECL ((FX NFX) FIX)
<SETG CP-MOVED <>>
<COND (<==? ,PRSO ,P?UP>
<COND (<==? ,CPHERE 1>
<COND (<==? <GET ,CPTABLE 2> -2>
<TELL
"With the help of the ladder, you exit the puzzle." CR>
,CP-ANTE)
(T
<TELL
"The exit is too far above your head." CR>
<RFALSE>)>)
(T
<TELL "There is no way up." CR>
<RFALSE>)>)
(<AND <==? ,CPHERE 33>
<==? ,PRSO ,P?WEST>
,CP-FLAG>
<FCLEAR ,CP ,TOUCHBIT>
,CP-OUT)
(<==? ,PRSO ,P?DOWN>
<TELL "There's no way down here." CR>
<RFALSE>)
(<AND <==? ,CPHERE 33>
<==? ,PRSO ,P?WEST>>
<TELL "The metal door bars the way." CR>
<RFALSE>)
(T
<SET FX <LKP ,PRSO ,CPEXITS>>
<COND (<OR <G? <SET NFX <+ .FX ,CPHERE>> 36>
<L? .NFX 0>
<ILLCP ,CPHERE .FX>>
<TELL "There is a wall there." CR>
<RFALSE>)
(<EQUAL? <ABS .FX> 1 6>
<CPMOVE .FX>)
(<AND <G? .FX 0> ; "SW AND SE"
<EQUAL? 0
<GET ,CPTABLE <+ ,CPHERE 6>>
<GET ,CPTABLE <+ ,CPHERE <- .FX 6>>>>>
<CPMOVE .FX>)
(<AND <L? .FX 0>
<EQUAL? 0
<GET ,CPTABLE <- ,CPHERE 6>>
<GET ,CPTABLE <+ <+ ,CPHERE 6> .FX>>>>
<CPMOVE .FX>)
(T
<TELL "There is a wall there." CR>)>
<RFALSE>)>>
<GLOBAL MINUS-SEVEN -7>
<GLOBAL MINUS-FIVE -5>
<GLOBAL MINUS-FOUR -4>
<GLOBAL MINUS-ONE -1>
<ROUTINE ILLCP (ONE TWO)
<COND (<AND <==? <MOD .ONE 6> 0>
<EQUAL? .TWO ,MINUS-FIVE 1 7>> <RTRUE>)
(<AND <==? <MOD .ONE 6> 1>
<EQUAL? .TWO ,MINUS-SEVEN ,MINUS-ONE 5>> <RTRUE>)
(<AND <L? .ONE 7> <L? .TWO ,MINUS-FOUR>> <RTRUE>)
(<AND <G? .ONE 30> <G? .TWO 4>> <RTRUE>)>>
<ROUTINE CPMOVE (FX)
<COND (<0? <GET ,CPTABLE <SET FX <+ ,CPHERE .FX>>>>
<CPGOTO .FX>)
(T
<TELL "There is a wall there." CR>)>>
<ROUTINE CPENTER ()
<COND (<OR <NOT <==? ,YEAR ,YEAR-PRESENT>> ,CPBLOCK-FLAG>
<TELL "The hole is blocked by sandstone." CR>
<RFALSE>)
(T
<SETG CPHERE 1>
,CP)>>
<ROUTINE CPANT-ROOM (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is a small square room, in the middle of which is a round hole">
<COND (<OR ,CPBLOCK-FLAG <NOT <==? ,YEAR ,YEAR-PRESENT>>>
<TELL
" which is blocked by smooth sandstone." CR>)
(T
<TELL
" through which you can discern the floor some ten feet below.
The area under the hole is dark, but it appears to be completely enclosed
in rock. In any event, it doesn't seem likely that you could climb back up.
Exits are west and, up a few steps, north." CR>)>)>>
<GLOBAL CPPUSH-FLAG <>>
<GLOBAL CPSOLVE-FLAG <>>
<ROUTINE CPLADDER-OBJECT ()
<COND (<==? <GET ,CPTABLE <- ,CPHERE 1>> -3>
<CPLADDER-JUNK <>>)
(<==? <GET ,CPTABLE <+ ,CPHERE 1>> -2>
<CPLADDER-JUNK T>)
(T <TELL "You can't see any ladder here." CR>)>>
<ROUTINE CPLADDER-JUNK (FLG)
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<COND (<AND .FLG <==? ,CPHERE 1>>
<SETG CPSOLVE-FLAG T>
<GOTO ,CP-ANTE>)
(T
<TELL
"You hit your head on the ceiling and fall off the ladder." CR>)>)
(T <TELL "Come, come!" CR>)>>
<ROUTINE CPWALL-OBJECT ("AUX" WL NWL NXT NNXT CNT TOP (SNAP <>))
#DECL ((NXT WL NNXT NWL) FIX (UVEC) <UVECTOR [REST FIX]>)
<COND (<VERB? MOVE> <TELL "You can't grab the wall to pull it." CR>)
(<VERB? PUSH>
<SET NXT <CPNEXT ,CPHERE ,PRSO>>
<COND (<0? .NXT>
<TELL "The wall doesn't budge." CR>
<RTRUE>)>
<SET WL <GET ,CPTABLE .NXT>>
<COND (<0? .WL>
<TELL "There is only a passage in that direction." CR>)
(<1? .WL>
<TELL "The wall doesn't budge." CR>)
(<0? <SET NNXT <CPNEXT .NXT ,PRSO>>>
<TELL "The wall barely gives." CR>)
(<NOT <0? <SET NWL <GET ,CPTABLE .NNXT>>>>
<TELL "The wall barely gives." CR>)
(T
<TELL
"The wall slides forward and you follow it">
<COND (,CPPUSH-FLAG <TELL " to this position:" CR>)
(T
<SETG SCORE <+ ,SCORE 1>>
<TELL
"....|
The architecture of this region is getting complex, so that further
descriptions will be diagrams of the immediate vicinity in a 3x3
grid. The walls here are rock, but of two different types - sandstone
and marble. The following notations will be used:|
">
<FIXED-FONT-ON>
<TELL
"|
.. = your position (middle of grid)|
MM = marble wall|
SS = sandstone wall|
?? = unknown (blocked by walls)|
|
">
<FIXED-FONT-OFF>)>
<SETG CPPUSH-FLAG T>
<PUT ,CPTABLE .NXT 0>
<PUT ,CPTABLE .NNXT .WL>
<COND (<NOT <EQUAL? .NNXT 0>>
<SET TOP <* 8 <- .NNXT 1>>>
<SET CNT <GET ,CPOBJS .TOP>>
<REPEAT ()
<COND (<0? .CNT> <RETURN>)
(T
<SET TOP <+ .TOP 1>>
<MOVE <GET ,CPOBJS .TOP> ,CP-OUT>
<COND (<NOT .SNAP>
<SET SNAP T>
<TELL
"You hear a soft \"snap\" from behind the wall you were pushing." CR>)>
<SET CNT <- .CNT 1>>)>>)>
<COND (<==? .NNXT 1>
<SETG CPBLOCK-FLAG T>)>
<CPGOTO .NXT>)>)>>
<ROUTINE FIXED-FONT-ON () <PUT 0 8 <BOR <GET 0 8> 2>>>
<ROUTINE FIXED-FONT-OFF() <PUT 0 8 <BAND <GET 0 8> -3>>>
"Flag for blocking of main entrance"
<GLOBAL CPBLOCK-FLAG <>>
<CONSTANT GCARDLOC 168> ;"8*(22-1)"
<ROUTINE CPGOTO (FX "AUX" F X CNT TOP)
#DECL ((FX CNT TOP) FIX (F X) <OR FALSE OBJECT>)
<SETG CP-MOVED T>
<FCLEAR ,HERE ,TOUCHBIT>
<SET TOP <* 8 <- ,CPHERE 1>>>
<SET CNT <+ .TOP 1>>
<SET F <FIRST? ,CP>>
<REPEAT ()
<SET X <NEXT? .F>>
<COND (<NOT .F> <RETURN>)
(<==? .F ,ADVENTURER> T)
(T
<PUT ,CPOBJS .CNT .F>
<REMOVE .F>
<SET CNT <+ .CNT 1>>)>
<COND (<NOT .X> <RETURN>)
(T <SET F .X>)>>
<PUT ,CPOBJS .TOP <- <- .CNT .TOP> 1>>
<SETG CPHERE .FX>
<SET TOP <* 8 <- ,CPHERE 1>>>
<SET CNT <GET ,CPOBJS .TOP>>
<REPEAT ()
<COND (<0? .CNT> <RETURN>)
(T
<SET TOP <+ .TOP 1>>
<MOVE <GET ,CPOBJS .TOP> ,CP>
<SET CNT <- .CNT 1>>)>>
<PERFORM ,V?LOOK>
<RTRUE>>
<ROUTINE CPNEXT (RM OBJ "AUX" FX)
#DECL ((RM) FIX (OBJ) OBJECT)
<SET FX <LKP .OBJ ,CPWALLS>>
<COND (<ILLCP .RM .FX> 0)
(T <+ .RM .FX>)>>
<ROUTINE CPDOOR-F ()
<COND (<AND <==? ,HERE ,CP> <NOT <==? ,CPHERE 33>>>
<TELL "You can't see any steel door here." CR>)
(<VERB? OPEN>
<COND (,CP-FLAG <TELL "The steel door has already opened." CR>)
(T <TELL "You can't force it open." CR>)>)
(<VERB? CLOSE>
<COND (,CP-FLAG <TELL
"There doesn't seem to be any way to close it." CR>)
(T <TELL "Do you think it isn't already?" CR>)>)
(<VERB? MUNG>
<TELL
"The door is, to a first approximation, indestructible." CR>)
(<VERB? KNOCK>
<TELL
"Besides a great amount of reverberation, nothing happens." CR>)>>
<ROUTINE CP-ROOM (RARG)
<COND (<==? .RARG ,M-ENTER>
<SETG CPHERE
<COND (<==? ,PRSO ,P?DOWN> 1)
(T 33)>>)
(<==? .RARG ,M-LOOK>
<COND (,CPPUSH-FLAG <CPWHERE>)
(T
<TELL
"You are in a small square room bounded to the north and west with
marble walls and to the east and south with sandstone walls." CR>)>)>>
<ROUTINE CPNS (NUM)
#DECL ((NUM) FIX)
<COND (<OR <G? .NUM 36> <L? .NUM 1>> 1)
(T <GET ,CPTABLE .NUM>)>>
<ROUTINE CPEW (NUM FOO)
#DECL ((NUM FOO) FIX)
<COND (<==? <MOD .NUM 6> .FOO> 1)
(T <GET ,CPTABLE .NUM>)>>
<ROUTINE CPWHERE ("AUX" (N <CPNS <+ ,CPHERE -6>>)
(S <CPNS <+ ,CPHERE 6>>)
(E <CPEW <+ ,CPHERE 1> 1>)
(W <CPEW <+ ,CPHERE -1> 0>))
#DECL ((N S E W) FIX)
<FIXED-FONT-ON>
<TELL " +"> ;"Top Row"
<CP-CORNER ,MINUS-SEVEN .N .W>
<TELL " ">
<CP-ORTHO .N>
<TELL " ">
<CP-CORNER ,MINUS-FIVE .N .E>
<TELL "+" CR>
<TELL "West +"> ;"Middle Row"
<CP-ORTHO .W>
<TELL " .. ">
<CP-ORTHO .E>
<TELL "+ East" CR>
<TELL " +"> ;"Bottom Row"
<CP-CORNER 5 .S .W>
<TELL " ">
<CP-ORTHO .S>
<TELL " ">
<CP-CORNER 7 .S .E>
<TELL "+" CR>
<FIXED-FONT-OFF>
<COND (<==? ,CPHERE 1>
<TELL
"In the ceiling above you is a large circular opening." CR>)
(<==? ,CPHERE 22>
<TELL
"The center of the floor here is noticeably depressed." CR>)
(<==? ,CPHERE 33>
<TELL
"In the center of the west wall is a steel door which is ">
<COND (,CP-FLAG <TELL "open">)
(T <TELL "closed">)>
<TELL
".
On one side of the door is a narrow slot." CR>)>
<COND (<==? .E -2>
<TELL
"There is a ladder here, firmly attached to the east wall." CR>)>
<COND (<==? .W -3>
<TELL
"There is a ladder here, firmly attached to the west wall." CR>)>>
"Show where the eight nearest neighbors are located"
<ROUTINE CP-ORTHO (CONTENTS)
#DECL ((CONTENTS) FIX)
<COND (<0? .CONTENTS> <TELL " ">)
(<1? .CONTENTS> <TELL "MM">)
(T <TELL "SS">)>>
;"Show an orthogonal neighbor"
<ROUTINE CP-CORNER (DIR COL ROW "AUX" LOCN)
#DECL ((DIR COL ROW) FIX)
<SET LOCN <+ ,CPHERE .DIR>>
<COND (<AND <NOT <==? .COL 0>> <NOT <==? .ROW 0>>> <TELL "??">)
(<ILLCP ,CPHERE .DIR> <TELL "MM">)
(<0? <SET COL
<COND (<OR <L? .LOCN 1> <G? .LOCN 36>> 1)
(T <GET ,CPTABLE .LOCN>)>>>
<TELL " ">)
(<1? .COL> <TELL "MM">)
(T <TELL "SS">)>>
<ROUTINE CP-SLOT-FCN ()
<COND (<VERB? PUT>
<COND (<G? <GETP ,PRSO ,P?SIZE> 10>
<TELL "It doesn't fit." CR>
<RTRUE>)>
<REMOVE ,PRSO>
<COND (<==? ,PRSO ,LORE-BOOK>
<SETG CP-FLAG T>
<TELL
"The book drops into the slot and vanishes. The metal door slides
open, revealing a passageway to the west, and a sign flashes:|
\"Royal Puzzle Exit Fee Paid|
Item Confiscated\"" CR>)
(<FSET? ,PRSO ,ACTORBIT>
<TELL <PICK-ONE ,YUKS> CR>)
(T
<TELL
"The item vanishes into the slot. A moment later, a previously
unseen sign flashes \"Garbage In, Garbage Out\" and spews out
the " D ,PRSO " (now atomized)." CR>)>)>>
<ROUTINE CPOUT-ROOM (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are in a narrow room, lit from above. A flight of steps leads up
to the north, and a ">
<COND (,CP-FLAG <TELL "passage">)
(T <TELL "metal door">)>
<TELL " leads to the east." CR>)>>
"Old end-game stuff"
;"SUBTITLE It's All Done with Mirrors"
<GLOBAL MLOC <>>
<GLOBAL MR1-FLAG T>
<GLOBAL MR2-FLAG T>
<GLOBAL MIRROR-OPEN-FLAG <>>
<GLOBAL WOOD-OPEN-FLAG <>>
<GLOBAL MRSWPUSH-FLAG <>>
<GLOBAL R-SOUTHS <LTABLE FRONT-DOOR MRD MRG MRC MRB MRA MREYE>>
<GLOBAL R-NORTHS <LTABLE MREYE MRA MRB MRC MRG MRD>>
<ROUTINE MRGO ("AUX" TORM)
<COND (<EQUAL? ,PRSO ,P?NORTH ,P?NW ,P?NE>
<SET TORM <LKP ,HERE ,R-NORTHS>>)
(T <SET TORM <LKP ,HERE ,R-SOUTHS>>)>
<COND (<EQUAL? ,PRSO ,P?NORTH ,P?SOUTH>
<COND (<==? ,MLOC .TORM>
<COND (<0? <MOD ,MDIR 180>>
<TELL
"There is a wooden wall blocking your way." CR>
<RFALSE>)
(<MIRIN <>> ,IN-MIRROR)
(T <MIRBLOCK> <RFALSE>)>)
(T .TORM)>)
(<==? ,MLOC .TORM>
<COND (<0? <MOD ,MDIR 180>> <GO-E-W .TORM>)
(T <MIRBLOCK> <RFALSE>)>)
(T .TORM)>>
<ROUTINE MIRBLOCK ("AUX" MD)
<SET MD ,MDIR>
<COND (<==? ,PRSO ,P?SOUTH>
<SET MD <MOD <+ ,MDIR 180> 360>>)>
<COND (<OR <AND <==? .MD 270> <NOT ,MR1-FLAG>>
<AND <==? .MD 90> <NOT ,MR2-FLAG>>>
<TELL "There is a large broken mirror blocking your way." CR>)
(T
<TELL "There is a large mirror blocking your way." CR>)>>
<ROUTINE GO-E-W (RM)
<COND (<EQUAL? ,PRSO ,P?NE ,P?SE>
<LKP .RM ,R-EASTS>)
(T <LKP .RM ,R-WESTS>)>>
<GLOBAL R-EASTS <LTABLE MRA MRAE MRB MRBE MRC MRCE MRG MRGE MRD MRDE>>
<GLOBAL R-WESTS <LTABLE MRA MRAW MRB MRBW MRC MRCW MRG MRGW MRD MRDW>>
<DEFMAC N-S () '<0? <MOD ,MDIR 180>>>
<DEFMAC E-W ('FX) <FORM OR <FORM ==? .FX 90> <FORM ==? .FX 270>>>
<ROUTINE EWTELL (RM "AUX" (EAST? <>) (M1? <>) MWIN)
<COND (<OR <EQUAL? .RM ,MRAE ,MRBE ,MRCE>
<EQUAL? .RM ,MRGE ,MRCE>>
<SET EAST? T>)>
<COND (<==? <+ ,MDIR <COND (.EAST? 0) (T 180)>> 180>
<SET M1? T>)>
<COND (.M1? <SET MWIN ,MR1-FLAG>) (T <SET MWIN ,MR2-FLAG>)>
<TELL "You are in a narrow room, whose "
<COND (.EAST? "west") (T "east")>
" wall is a large "
<COND (.MWIN "mirror.")
(T "wooden panel
which once contained a mirror.")>
CR>
<COND (<AND .M1? ,MIRROR-OPEN-FLAG>
<TELL <COND (.MWIN
"The mirror is mounted on a panel which has been opened outward.")
(T "The panel has been opened outward.")>
CR>)>
<TELL "The opposite wall is solid rock." CR>>
<GLOBAL GUARDIANS-SEEN <>>
<ROUTINE MRDEW ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<EWTELL ,HERE>
<SETG GUARDIANS-SEEN T>
<TELL "Somewhat to the south" ,GUARDSTR CR>)>>
<ROUTINE MRCEW ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<EWTELL ,HERE>
<SETG GUARDIANS-SEEN T>
<TELL "Somewhat to the north" ,GUARDSTR CR>)>>
<ROUTINE MRBEW ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<EWTELL ,HERE>
<TELL "To the north and south are large hallways." CR>)>>
<ROUTINE MRAEW ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<EWTELL ,HERE>
<TELL "To the north is a large hallway." CR>)>>
<GLOBAL GUARDSTR
", identical stone statues face each other from
pedestals on opposite sides of the corridor. The statues represent
Guardians of Zork, a military order of ancient lineage. They are
portrayed as heavily armored warriors clasping formidable bludgeons.">
<ROUTINE LOOK-TO (RMN RMS "AUX" (NORTH? <>) (NTELL <>) (STELL <>)
MIR? (M1? <>) DIR)
<COND (<NOT <EQUAL? ,HERE ,MREYE ,FRONT-DOOR>>
<TELL
"This is a part of the long hallway. The east and west walls are
dressed stone. In the center of the hall is a shallow stone channel.
In the center of the room the channel widens into a large hole around
which is engraved a compass rose." CR>)>
<COND (<==? ,HERE ,MRG>
<SETG GUARDIANS-SEEN T>
<TELL
"On either side of you are identical stone statues holding bludgeons. They
appear ready to strike, though, for the moment, they remain impassive." CR>)
(<==? ,HERE ,MRC>
<SETG GUARDIANS-SEEN T>
<TELL "Somewhat to the north" ,GUARDSTR CR>
<SET NTELL T>)
(<==? ,HERE ,FRONT-DOOR>
<TELL
"You are in a north-south hallway which ends, to the north, at a large wooden
door." CR>
<SET NTELL T>)
(<==? ,HERE ,MRD>
<SETG GUARDIANS-SEEN T>
<TELL "Somewhat to the south" ,GUARDSTR CR>
<SET STELL T>)
(<==? ,HERE ,MRA>
<TELL "The hallway continues to the south." CR>
<SET STELL T>)>
<COND (<EQUAL? ,MLOC .RMN .RMS>
<COND (<==? ,MLOC .RMN>
<SET NORTH? T>
<SET NTELL T>
<SET DIR "nor">)
(T
<SET STELL T>
<SET DIR "sou">)>
<SET MIR?
<COND (<AND .NORTH? <G? ,MDIR 180> <L? ,MDIR 359>>
<SET M1? T>
,MR1-FLAG)
(<AND <NOT .NORTH?> <G? ,MDIR 0> <L? ,MDIR 179>>
<SET M1? T>
,MR1-FLAG)
(T ,MR2-FLAG)>>
<COND (<0? <MOD ,MDIR 180>>
<TELL "The "
.DIR
"th side of the room is divided by a wooden wall into small
hallways to the ">
<TELL .DIR "theast and ">
<TELL .DIR "thwest." CR>)
(T
<TELL <COND (.MIR? "A large mirror fills the ")
(T "A large panel fills the ")>
.DIR
"th side of the hallway." CR>
<COND (<AND .M1? ,MIRROR-OPEN-FLAG>
<TELL <COND (.MIR?
"The mirror is mounted on a panel which has been opened outward.")
(T
"The panel has been opened outward.")> CR>)>)>)>
<COND (<AND <NOT .NTELL> <NOT .STELL>>
<TELL "The corridor continues north and south." CR>)
(<NOT .NTELL>
<TELL "The corridor continues north." CR>)
(<NOT .STELL>
<TELL "The corridor continues south." CR>)>
<RTRUE>>
<ROUTINE MRDF ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<LOOK-TO ,FRONT-DOOR ,MRG>)>>
<ROUTINE MRCF ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<LOOK-TO ,MRG ,MRB>)>>
<ROUTINE MRBF ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<LOOK-TO ,MRC ,MRA>)>>
<ROUTINE MRAF ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<LOOK-TO ,MRB <>>)>>
<ROUTINE GUARDIANS ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<COND (<==? ,HERE ,MRG>
<LOOK-TO ,MRD ,MRC>)
(T
<EWTELL ,HERE>
<TELL
"To the east and west are the Guardians of Zork, in perfect symmetry.
From here, it's hard to tell which of the two is a reflection!" CR>)>)
(<AND <==? .RARG ,M-ENTER> <NOT ,INVIS>>
<JIGS-UP
"The Guardians awake, and in perfect unison, pulverize you with
their bludgeons. Satisfied, they resume their posts.">)
(<NOT <==? .RARG ,M-END>> <RFALSE>)
(<VERB? EXAMINE>
<COND (<==? ,HERE ,IN-MIRROR>
<TELL "You can't see them from here." CR>)
(T <TELL
"The Guardians are quite impressive. I wouldn't get in their way if
I were you!" CR>)>)
(<AND <VERB? THROW> <==? ,PRSI ,GUARDIAN>>
<COND (<EQUAL? ,PRSO ,ME>
<TELL "You step">)
(T
<TELL "The " D ,PRSO " falls">
<REMOVE ,PRSO>)>
<TELL
" in front of the Guardians, who ">
<COND (<EQUAL? ,PRSO ,ME>
<TELL "decimate you">)
(T <TELL "destroy it">)>
<TELL " in perfect
unison. Satisfied, they resume their posts." CR>)
(<VERB? ATTACK>
<TELL
"You aren't close enough, and even if you were, the fight
would be a bit one-sided." CR>)
(<VERB? HELLO>
<TELL "The statues are impassive." CR>)>>
<ROUTINE MIRROR-DIR? (DIR RM "AUX" TBL)
<SET TBL <COND (<==? .DIR ,P?NORTH> ,R-NORTHS) (T ,R-SOUTHS)>>
<COND (<AND <GETPT .RM .DIR>
<==? ,MLOC <LKP .RM .TBL>>>
<COND (<AND <==? .DIR ,P?NORTH>
<G? ,MDIR 180>
<L? ,MDIR 360>>
1)
(<AND <==? .DIR ,P?SOUTH>
<G? ,MDIR 0>
<L? ,MDIR 180>>
1)
(T 2)>)>>
<ROUTINE WOODEN-WALL-F ()
<COND (<AND <0? <MOD ,MDIR 180>>
<OR <MIRROR-DIR? ,P?NORTH ,HERE>
<MIRROR-DIR? ,P?SOUTH ,HERE>>>
<COND (<VERB? PUSH>
<TELL "The structure won't budge." CR>)>)
(T <TELL "You can't see any wooden wall here." CR>)>>
<ROUTINE MIRROR-HERE? (RM "AUX" TMP)
<COND (<OR <EQUAL? ,HERE ,MRAE ,MRAW ,MRBE>
<EQUAL? ,HERE ,MRBW ,MRCE ,MRCW>
<EQUAL? ,HERE ,MRGE ,MRGW ,MRDE>
<EQUAL? ,HERE ,MRDW>>
<COND (<==? 180
<+ ,MDIR <COND (<OR <EQUAL? .RM ,MRAE ,MRBE ,MRCE>
<EQUAL? .RM ,MRGE ,MRDE>> 0)
(T 180)>>>
1)
(T 2)>)
(<0? <MOD ,MDIR 180>> <RFALSE>)
(<SET TMP <MIRROR-DIR? ,P?NORTH .RM>> .TMP)
(<SET TMP <MIRROR-DIR? ,P?SOUTH .RM>> .TMP)
(T <RFALSE>)>>
<ROUTINE MIRROR-FUNCTION ("AUX" MIRROR)
<COND (<NOT <SET MIRROR <MIRROR-HERE? ,HERE>>>
<TELL "You can't see any mirror here." CR>)
(<VERB? OPEN MOVE>
<TELL
"You don't see a way to open the mirror here." CR>)
(<VERB? LOOK-INSIDE>
<COND (<OR <AND <==? .MIRROR 1> ,MR1-FLAG> ,MR2-FLAG>
<COND (,INVIS
<TELL
"Amazingly, you have no reflection!" CR>)
(T
<TELL
"A disheveled adventurer stares back at you." CR>)>)
(T
<TELL
"You have destroyed the mirror, or have you forgotten?" CR>)>)
(<VERB? MUNG>
<COND (<1? .MIRROR>
<COND (,MR1-FLAG
<SETG MR1-FLAG <>>
<TELL
"The mirror breaks, revealing a wooden panel behind it. The glistening
fragments of mirror quietly sparkle into nonexistance." CR>)
(T <TELL "The mirror has already been broken."
CR>)>)
(,MR2-FLAG
<SETG MR2-FLAG <>>
<TELL
"The mirror breaks, revealing a wooden panel behind it. The glistening
fragments of mirror quietly sparkle into nonexistance." CR>)
(T <TELL "The mirror has already been broken." CR>)>)
(<OR <AND <==? .MIRROR 1> <NOT ,MR1-FLAG>> <NOT ,MR2-FLAG>>
<TELL
"There's no mirror left." CR>)
(<VERB? PUSH>
<TELL <COND (<==? .MIRROR 1>
"The mirror is mounted on a wooden panel which moves slightly inward
as you push, and back out when you let go. It feels fragile.")
(T
"The mirror is unyielding, but seems fragile.")> CR>)>>
<ROUTINE PANEL-FUNCTION ("AUX" MIRROR)
<COND (<NOT <SET MIRROR <MIRROR-HERE? ,HERE>>>
<TELL "You can't see any panel here." CR>)
(<VERB? OPEN MOVE>
<TELL "You don't see a way to open the panel here." CR>)
(<VERB? MUNG>
<COND (<==? .MIRROR 1>
<COND (,MR1-FLAG
<TELL ,MIRROR-FIRST CR>)
(T <TELL
"The panel is not that easily destroyed." CR>)>)
(,MR2-FLAG
<TELL ,MIRROR-FIRST CR>)
(T <TELL "The panel is not that easily destroyed." CR>)>)
(<VERB? PUSH>
<TELL <COND (<==? .MIRROR 1>
"The wooden panel moves slightly inward as you push, and back out
when you let go.")
(T
"The panel is unyielding.")> CR>)>>
<GLOBAL MIRROR-FIRST
"To break the panel you would have to break the mirror first.">
<GLOBAL DIRVEC <LTABLE P?NORTH 0 P?NE 45 P?EAST 90 P?SE 135
P?SOUTH 180 P?SW 225 P?WEST 270 P?NW 315>>
<ROUTINE MIROUT ("AUX" DIR RM)
<COND (<==? ,PRSO ,P?OUT> <SET DIR 1>)
(T <SET DIR <LKP ,PRSO ,DIRVEC>>)>
<COND (,MIRROR-OPEN-FLAG
<COND (<OR <==? .DIR 1>
<==? <MOD <+ ,MDIR 270> 360> .DIR>>
<COND (<0? <MOD ,MDIR 180>>
<MIREW>)
(T <MIRNS <L? ,MDIR 180> T>)>)
(T
<TELL "There's a wall there." CR>
<RFALSE>)>)
(,WOOD-OPEN-FLAG
<COND (<OR <==? .DIR 1>
<==? <MOD <+ ,MDIR 180> 360> .DIR>>
<COND (<0? ,MDIR> <SET RM <>>) (T <SET RM T>)>
<COND (<SET RM <MIRNS .RM T>>
<TELL "As you leave, the door swings shut." CR>
<SETG WOOD-OPEN-FLAG <>>
.RM)
(T
<TELL "You can't go that way." CR>
<RFALSE>)>)
(T
<TELL "You would hit one of the panels." CR>
<RFALSE>)>)
(T
<TELL "You are inside a closed box!" CR>
<RFALSE>)>>
"MIRNS -- returns room in a given direction from the mirror (north or
south as indicated by first argument). If second arg is T, then we
are exiting, not moving the mirror, so don't worry about ends."
<ROUTINE MIRNS (NORTH? "OPTIONAL" (EXIT? <>) "AUX" S T)
<COND (<NOT .EXIT?>
<COND (<AND .NORTH? <==? ,MLOC ,MRD>>
<RFALSE>)
(<AND <NOT .NORTH?> <==? ,MLOC ,MRA>>
<RFALSE>)>)>
<COND (<SET T <GETPT ,MLOC <COND (.NORTH? ,P?NORTH)
(T ,P?SOUTH)>>>
<COND (<==? <SET S <PTSIZE .T>> ,UEXIT>
<GETB .T 0>)
(.NORTH?
<LKP ,MLOC ,R-NORTHS>)
(T
<LKP ,MLOC ,R-SOUTHS>)>)>>
<ROUTINE MIREW ()
<COND (<0? ,MDIR> <LKP ,MLOC ,R-WESTS>)
(T <LKP ,MLOC ,R-EASTS>)>>
<ROUTINE MIRIN ("OPTIONAL" (VRB T))
<COND (<AND <==? <MIRROR-HERE? ,HERE> 1> ,MIRROR-OPEN-FLAG>
,IN-MIRROR)
(<NOT .VRB> <RFALSE>)
(<==? <MIRROR-HERE? ,HERE> 1>
<COND (<AND <NOT ,MIRROR-OPENED> ,MR1-FLAG>
<TELL "A mirror blocks your way." CR>
<RFALSE>)
(T <TELL "The panel is closed." CR> <RFALSE>)>)
(T <TELL "The structure blocks your way." CR> <RFALSE>)>>
<ROUTINE MREYE-ROOM ("OPTIONAL" (RARG <>) "AUX" O)
<COND (<AND <==? .RARG ,M-BEG>
<VERB? DROP>
<IN? ,PRSO ,WINNER>
<NOT <BEAM-STOPPED?>>>
<MOVE ,PRSO ,HERE>
<TELL
"You conveniently drop the " D ,PRSO " in position to block the
beam of light." CR>)
(<==? .RARG ,M-LOOK>
<TELL
"You are in the middle of a long north-south corridor whose walls are
polished stone. A narrow red beam of light crosses the room at the north
end, inches above the floor." CR>
<COND (<SET O <BEAM-STOPPED?>>
<TELL
"The beam is blocked by a " D .O " lying on the floor." CR>)>
<LOOK-TO ,MRA <>>)>>
<ROUTINE BEAM-STOPPED? ("AUX" N)
<SET N <FIRST? ,MREYE>>
<REPEAT ()
<COND (<NOT <EQUAL? .N ,PLAYER ,BEAM>>
<SETG BEAM-BREAKER .N>
<RETURN .N>)
(<NOT <SET N <NEXT? .N>>> <RFALSE>)>>>
; "This function cannot have its .PRSI and .PRSO's changed to ,PRSI etc!!"
<GLOBAL BEAM-BREAKER <>>
<ROUTINE BEAM-FUNCTION ("AUX" PRO PRI)
<COND (<VERB? LEAP>
<TELL
"You jump over the beam and into the hallway." CR>
<GOTO ,MRA>
<RTRUE>)
(<VERB? FOLLOW>
<TELL
"It simply crosses the northern end of the room, so there's nowhere to
follow it." CR>)
(<VERB? EXAMINE>
<TELL
"The red beam of light crosses the north end of the room only an inch or so
above the floor.">
<COND (<BEAM-STOPPED?>
<TELL " The beam is broken by a " D ,BEAM-BREAKER
" lying on the ground.">)>
<CRLF>)
(<VERB? PUT MUNG>
<COND (<VERB? PUT>
<SET PRI ,PRSO>
<SET PRO ,PRSI>)
(T
<SET PRI ,PRSI>
<SET PRO ,PRSO>)>
<COND (<OR <NOT .PRI> <NOT <==? .PRO ,BEAM>>> <RFALSE>)
(<IN? .PRI ,WINNER>
<MOVE .PRI ,HERE>
<SETG BEAM-BREAKER .PRI>
<TELL
"The beam is now interrupted by a " D .PRI " lying on the floor." CR>)
(<IN? .PRI ,HERE>
<TELL
"The " D .PRI " already breaks the beam." CR>)
(<==? .PRI ,HANDS>
<TELL
"The beam is broken briefly as it passes through." CR>)
(T <TELL
"You're not holding the " D .PRI "." CR>)>)
(<AND <VERB? TAKE> <==? ,PRSO ,BEAM>>
<TELL
"No doubt you have a bottle of moonbeams as well." CR>)>>
<GLOBAL MIRROR-OPENED <>>
<ROUTINE MRSWITCH ()
<COND (<VERB? PUSH>
<COND (,MRSWPUSH-FLAG
<TELL "Click." CR>)
(T
<COND (<BEAM-STOPPED?>
<TELL "Click. Snap!" CR>
<ENABLE <QUEUE I-MRINT 7>>
<SETG MRSWPUSH-FLAG T>
<SETG MIRROR-OPEN-FLAG T>
<SETG MIRROR-OPENED T>
<FCLEAR ,MRA ,TOUCHBIT>)
(T <TELL "Click." CR>)>)>)>>
<ROUTINE I-MRINT ()
<SETG MRSWPUSH-FLAG <>>
<SETG MIRROR-OPEN-FLAG <>>
<COND (<OR <==? <MIRROR-HERE? ,HERE> 1>
<==? ,HERE ,IN-MIRROR>>
<TELL "The mirror quietly swings shut." CR>)
(<==? ,HERE ,MR-ANTE>
<TELL "The button pops back to its original position." CR>)>>
<GLOBAL MDIR 270>
;"mirror points... 0 = north"
<GLOBAL POLEUP-FLAG 0>
;"pole raised?: 0 -- in hole or channel, 1 -- foor level, 2 -- in air"
<ROUTINE MAGIC-MIRROR ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are inside a rectangular box of wood whose structure is rather
complicated. Four sides and the roof are filled in, and the floor is
open.|
|
As you face the side opposite the entrance, two short sides of
carved and polished wood are to your left and right. The left panel
is mahogany, the right pine. The wall you face is red on its left
half and black on its right. On the entrance side, the wall is white
opposite the red part of the wall it faces, and yellow opposite the
black section. The painted walls are at least twice the length of
the unpainted ones. The ceiling is painted blue.|
|
In the floor is a stone channel about six inches wide and a foot
deep. The channel is oriented in a north-south direction. In the
exact center of the room the channel widens into a circular
depression perhaps two feet wide. Incised in the stone around this
area is a compass rose.|
|
Running from one short wall to the other at about waist height
is a wooden bar, carefully carved and drilled. This bar is pierced
in two places. The first hole is in the center of the bar (and thus
the center of the room). The second is at the left end of the room
(as you face opposite the entrance). Through each hole runs a wooden
pole.|
|
The pole at the left end of the bar is short, extending about a foot
above the bar, and ends in a hand grip. The pole ">
<COND (<AND <==? ,MLOC ,MRB> <==? ,MDIR 270>>
<COND (<NOT <0? ,POLEUP-FLAG>>
<TELL
"has been lifted out
of a hole carved in the stone floor. There is evidently enough
friction to keep the pole from dropping back down.">)
(T
<TELL "has been dropped
into a hole carved in the stone floor.">)>)
(<EQUAL? ,MDIR 0 180>
<COND (<NOT <0? ,POLEUP-FLAG>>
<TELL "is positioned above
the stone channel in the floor.">)
(T
<TELL "has been dropped
into the stone channel incised in the floor.">)>)
(T
<TELL "is resting on the
stone floor.">)>
<TELL
"|
|
The long pole at the center of the bar extends from the ceiling
through the bar to the circular area in the stone channel. This
bottom end of the pole has a T-bar a bit less than two feet long
attached to it, and on the T-bar is carved an arrow. The arrow and
T-bar are pointing "
<GET ,LONGDIRS </ ,MDIR 45>>
".">
<COND (,WOOD-OPEN-FLAG
<TELL
"|
The pine panel has been opened outward.">)>
<CRLF>)>>
<GLOBAL LONGDIRS <TABLE "north" "northeast" "east" "southeast"
"south" "southwest" "west" "northwest">>
;"MOVEMENT"
<ROUTINE MPANELS ("AUX" MD)
<COND (<VERB? PUSH>
<COND (<NOT <0? ,POLEUP-FLAG>>
<COND (<==? ,MLOC ,MRG>
<COND (,GUARDIANS-SEEN
<JIGS-UP
"The Guardians awake, and in perfect unison, utterly destroy you with
their stone bludgeons. Satisfied, they resume their posts.">
<RTRUE>)
(T
<JIGS-UP
"All at once, two immense stone bludgeons come through the top of the
structure, crushing you.">
<RTRUE>)>)>
<COND (<EQUAL? ,PRSO ,RED-PANEL ,YELLOW-PANEL>
<SET MD <MOD <+ ,MDIR 45> 360>>
<TELL "The structure rotates clockwise." CR>)
(T
<SET MD <MOD <+ ,MDIR 315> 360>>
<TELL
"The structure rotates counterclockwise." CR>)>
<TELL "The arrow on the compass rose now indicates "
<GET ,LONGDIRS </ .MD 45>>
"." CR>
<COND (,WOOD-OPEN-FLAG
<SETG WOOD-OPEN-FLAG <>>
<TELL "The pine wall closes quietly." CR>)>
<SETG MDIR .MD>
<RTRUE>)
(<0? <MOD ,MDIR 180>>
<TELL
"The short pole prevents the structure from rotating." CR>)
(T
<TELL
"The structure shakes slightly but doesn't move." CR>)>)>>
<ROUTINE MENDS ("AUX" RM)
<COND (<VERB? CLOSE> <TELL "You can't do that to the panel." CR>)
(<OR <VERB? PUSH>
<AND <VERB? OPEN> <==? ,PRSO ,PINE-PANEL>>>
<COND (<NOT <0? <MOD ,MDIR 180>>>
<TELL
"The structure rocks back and forth slightly but doesn't move." CR>)
(<==? ,PRSO ,MAHOGANY-PANEL>
<COND (<SET RM <MIRNS <L? ,MDIR 180>>>
<MIRMOVE <0? ,MDIR> .RM>)
(T
<TELL
"The structure has reached the end of the stone channel and won't
budge." CR>)>)
(T
<TELL "The pine wall swings open." CR>
<COND (<OR <AND <==? ,MLOC ,MRD>
<==? ,MDIR 0>>
<AND <==? ,MLOC ,MRC>
<==? ,MDIR 180>>
<==? ,MLOC ,MRG>>
<COND (,GUARDIANS-SEEN
<TELL
"The pine door opens into the field of view of the Guardians." CR>)
(T
<TELL
"The pine door opens into the field of view of the Guardians of
Zork, represented by two identical stone statues carrying bludgeons." CR>)>
<JIGS-UP
"The Guardians awake, and in perfect unison, utterly destroy you with
their stone bludgeons. Satisfied, they resume their posts.">
<RTRUE>)>
<SETG WOOD-OPEN-FLAG T>
<ENABLE <QUEUE I-PININ 5>>)>)>>
<ROUTINE I-PININ ()
<COND (,WOOD-OPEN-FLAG
<SETG WOOD-OPEN-FLAG <>>
<TELL "The pine wall closes quietly." CR>)>>
<ROUTINE MIRMOVE (NORTH? RM "AUX" (PU? <>) (LOSE <>))
<COND (<NOT <0? ,POLEUP-FLAG>> <SET PU? T>)>
<TELL <COND (.PU? "The structure sways unsteadily ")
(T "The structure slides ")>
<COND (.NORTH? "north") (T "south")>
" and stops over another compass rose." CR>
<SETG MLOC .RM>
<COND (<AND <==? .RM ,MRG> <==? ,HERE ,IN-MIRROR>>
<COND (.PU?
<SET LOSE T>)
(<OR <NOT ,MR1-FLAG> <NOT ,MR2-FLAG>>
<SET LOSE T>)
(<OR ,MIRROR-OPEN-FLAG ,WOOD-OPEN-FLAG>
<SET LOSE T>)>
<COND (.LOSE
<COND (,GUARDIANS-SEEN
<JIGS-UP
"Suddenly the Guardians realize someone is trying to sneak by them in
the structure. They awake and, in perfect unison, hammer the contents
of the box (in other words you) to pulp. They then resume their posts,
satisfied.">)
(T
<JIGS-UP
"Suddenly, two identical stone bludgeons come through the roof and
hammer the contents of the box to pulp. That includes you.">)>)>
<RTRUE>)>
T>
<ROUTINE SHORT-POLE-F ()
<COND (<VERB? RAISE MOVE>
<COND (<==? ,POLEUP-FLAG 2>
<TELL "The pole cannot be raised further." CR>)
(T
<SETG POLEUP-FLAG 2>
<TELL "The pole is now slightly above the floor." CR>)>)
(<OR <AND <VERB? PUT> <==? ,PRSI ,CHANNEL>>
<VERB? PUSH LOWER>>
<COND (<0? ,POLEUP-FLAG>
<TELL "The pole cannot be lowered further." CR>)
(<0? <MOD ,MDIR 180>>
<TELL "The pole is lowered into the channel." CR>
<SETG POLEUP-FLAG 0>
T)
(<AND <==? ,MDIR 270> <==? ,MLOC ,MRB>>
<SETG POLEUP-FLAG 0>
<TELL "The pole is lowered into the stone hole." CR>)
(<==? ,POLEUP-FLAG 1>
<TELL "The pole is already resting on the floor." CR>)
(T
<SETG POLEUP-FLAG 1>
<TELL "The pole now rests on the stone floor." CR>)>)>>
\
<ROUTINE DUNGEON-MASTER-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-OBJDESC> <RFALSE>)
(<==? ,WINNER ,DUNGEON-MASTER>
<COND (<VERB? FOLLOW>
<COND (<IN? ,DUNGEON-MASTER <LOC ,PLAYER>>
<ENABLE <QUEUE I-FOLIN -1>>
<TELL
"The dungeon master answers, \"I will follow.\"" CR>)
(T
<TELL
"The dungeon master's voice replies, \"You must come here first!\"" CR>)>)
(<VERB? STAY WAIT>
<QUEUE I-FOLIN 0>
<TELL
"The dungeon master answers, \"I will stay.\"" CR>)
(<VERB? WALK>
<COND (<AND <EQUAL? ,PRSO ,P?SOUTH ,P?ENTER>
<==? ,HERE ,NORTH-CORRIDOR>>
<TELL
"\"I am not permitted to enter the prison cell.\"" CR>)
(<AND <==? ,PRSO ,P?NORTH>
<==? ,HERE ,NORTH-CORRIDOR>>
<MOVE ,DUNGEON-MASTER ,PARAPET>
<SETG HERE ,PARAPET>
<TELL
"\"Very well. I am at the parapet!\"" CR>
<QUEUE I-FOLIN 0>)
(<AND <EQUAL? ,PRSO ,P?NORTH ,P?ENTER>
<==? ,HERE ,SOUTH-CORRIDOR>>
<TELL
"\"I am not permitted to enter the prison cell.\"" CR>)
(T
<TELL
"\"I prefer to stay where I am, thank you.\"" CR>)>)
(<AND <VERB? WALK-TO> <==? ,PRSO ,PARAPET-OBJ>>
<MOVE ,DUNGEON-MASTER ,PARAPET>
<SETG HERE ,PARAPET>
<QUEUE I-FOLIN 0>
<TELL
"\"Very well!\"" CR>)
(<VERB? TAKE>
<TELL
"\"I will have no use for that, I am afraid.\"" CR>)
(<AND <VERB? OPEN>
<==? ,PRSO ,DUNGEON-DOOR>
,IN-DUNGEON>
<TELL
"The dungeon master appears angered. \"Do not run from your quest: you are
nearing the end!\"" CR>)
(<VERB? PUSH TURN SPIN FOLLOW STAY OPEN CLOSE WAIT
ATTACK WALK-TO>
<COND (<VERB? STAY FOLLOW WAIT> T)
(T <TELL "\"If you wish,\" he replies." CR>)>
<RFALSE>)
(T <TELL
"\"Do not be foolish! Consider the end of your quest!\"" CR>)>)
(<VERB? EXAMINE>
<TELL
"He is dressed simply in a hood and cloak, wearing an amulet and ring,
carrying an old book under one arm, and leaning on a wooden staff. A single
key, as if to a prison cell, hangs from his belt." CR>)
(<VERB? ATTACK MUNG>
<REALLY-DEAD
"The dungeon master is taken by surprise. He dodges your blow, and
with a disappointed expression on his face, traces a complicated
pattern in the air with his staff. You crumble into dust.">)
(<VERB? TAKE>
<TELL
"\"I'm willing to accompany you, but not ride in your pocket!\"" CR>)
(<AND <VERB? GIVE> <==? ,PRSI ,DUNGEON-MASTER>>
<TELL
"\"I have no need for those things.\"" CR>)>>
<ROUTINE MASTER-F ()
<COND (<EQUAL? ,HERE ,PRISON-CELL ,GOOD-CELL>
<COND (<HELLO? ,MASTER>
<TELL "He can't hear you." CR>)
(T <TELL "He is not here." CR>)>)
(<VERB? TELL>
<COND (,IN-DUNGEON
<SETG PRSO ,DUNGEON-MASTER>
<RFALSE>)
(ELSE
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL "The dungeon master isn't here." CR>)>)
(<AND <VERB? GIVE SGIVE> <IN? ,DUNGEON-MASTER ,HERE>>
<TELL
"He politely refuses your offer." CR>)
(<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,CELL ,NORTH-CORRIDOR>
<IN? ,DUNGEON-MASTER ,PARAPET>>
<TELL "The dungeon master is standing on the parapet." CR>)
(T <TELL "The dungeon master isn't here." CR>)>>
<GLOBAL DM-SEEN <>>
<ROUTINE BEHIND-DOOR-F ("OPTIONAL" (RARG <>))
<COND (<AND <==? .RARG ,M-ENTER> <NOT ,DM-SEEN>>
<ENABLE <QUEUE I-FOLIN -1>>
<SETG DM-SEEN T>)
(<==? .RARG ,M-LOOK>
<TELL
"You are in a narrow north-south corridor. At the south end is a door
and at the north end is an east-west corridor. The door is ">
<DPR ,DUNGEON-DOOR>)>>
<ROUTINE FRONT-DOOR-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-ENTER>
<QUEUE I-FOLIN 0>)
(<==? .RARG ,M-LOOK>
<LOOK-TO <> ,MRD>
<TELL
"The wooden door has a barred panel in it at about head height. The
door itself is ">
<DPR ,DUNGEON-DOOR>)>>
<ROUTINE LOOK-LIKE-DM? ()
<AND <IN? ,CLOAK ,WINNER>
<IN? ,HOOD ,WINNER>
<IN? ,AMULET ,WINNER>
<IN? ,STAFF ,WINNER>
<IN? ,RING ,WINNER>
<IN? ,LORE-BOOK ,WINNER>
<IN? ,KEY ,WINNER>>>
<ROUTINE DUNGEON-PANEL-F ()
<COND (<VERB? OPEN>
<TELL "You can't open the panel. It's set into the door." CR>)
(<VERB? LOOK-INSIDE>
<TELL "There's not much to be seen." CR>)>>
<ROUTINE DUNGEON-DOOR-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "The door won't budge." CR>)
(<AND <VERB? KNOCK> <EQUAL? ,HERE ,FRONT-DOOR>>
<TELL
"The knock reverberates along the hall. For a time it seems there
will be no answer. Then you hear someone unlatching the small
panel. Through the bars of the great door, the wrinkled
face of an old man appears.">
<COND (,INVIS
<TELL " He seems not to notice you
for a brief moment, then recovers.">)>
<COND (<LOOK-LIKE-DM?>
<TELL " He starts to smile broadly and opens the
massive door without a sound. The old man motions and you feel yourself
drawn toward him.|
\"I am the Master of the Dungeon!\" he booms. \"I have been watching
you closely during your journey through the Great Underground Empire.
Yes!,\" he says, as if recalling some almost forgotten time, \"we have
met before, although I may not appear as I did then.\" You look
closely into his deeply lined face and see the faces of the old man by the
secret door, your \"friend\" at the cliff, and the hooded figure. \"You have
shown kindness to the old man, and compassion toward the hooded one. You
displayed patience in the puzzle and trust at the cliff. You have
demonstrated strength, ingenuity, and valor. However, one final test awaits
you. Now! Command me as you will, and complete your quest!\"|" CR>
<GOTO ,BEHIND-DOOR>
<SETG IN-DUNGEON T>)
(T
<TELL " He looks you over with a piercing gaze
and then speaks gravely. \"I have been waiting a long time for you, ">
<TELL <GET ,DM-REASONS <DMISH>>>
<TELL "
I will remain here. When you feel you are ready, go to the
secret door and 'SAY \"FROTZ OZMOO\"'! Go, now!\" He wags his finger
in warning. \"Do not forget the double
quotes!\" A moment later, you find yourself in the Button Room." CR>
<GOTO ,MR-ANTE <>>
<RTRUE>)>)>>
<GLOBAL IN-DUNGEON <>>
<GLOBAL DM-REASONS <TABLE
"but I fear my waiting may be in vain."
"but you have far to go before you are ready."
"and you seem to have made slight some progress."
"and your journey is half complete. Be of good cheer!"
"and you are nearing the end of your long quest!"
"and it will not be long before you are ready!"
"and you are nearly ready for the last test!">>
<ROUTINE DMISH ("AUX" (CNT 0))
<COND (<IN? ,AMULET ,WINNER> <SET CNT <+ .CNT 1>>)>
<COND (<IN? ,LORE-BOOK ,WINNER> <SET CNT <+ .CNT 1>>)>
<COND (<IN? ,HOOD ,WINNER> <SET CNT <+ .CNT 1>>)>
<COND (<IN? ,CLOAK ,WINNER> <SET CNT <+ .CNT 1>>)>
<COND (<IN? ,RING ,WINNER> <SET CNT <+ .CNT 1>>)>
<COND (<IN? ,KEY ,WINNER> <SET CNT <+ .CNT 1>>)>
<COND (<IN? ,STAFF ,WINNER> <SET CNT <+ .CNT 1>>)>
.CNT>
<GLOBAL FOLFLAG T> ;"Following?"
<ROUTINE I-FOLIN ()
<COND (<IN? ,DUNGEON-MASTER ,HERE> <RFALSE>)
(<AND <EQUAL? ,HERE ,PRISON-CELL ,CELL> ,FOLFLAG>
<TELL
"You notice that the dungeon master doesn't follow you." CR>
<SETG FOLFLAG <>>
<RTRUE>)
(<EQUAL? <LOC ,PLAYER> ,PRISON-CELL ,CELL> <RFALSE>)
(<NOT ,FOLFLAG>
<SETG FOLFLAG T>
<TELL "The dungeon master rejoins you." CR>
<MOVE ,DUNGEON-MASTER ,HERE>
<RTRUE>)
(T
<TELL "The dungeon master follows you." CR>
<MOVE ,DUNGEON-MASTER ,HERE>
<RTRUE>)>>
\
;"SUBTITLE
'The end had come, and this was it; he dropped her in the Flaming Pit.'"
<GLOBAL LCELL 1> ;"cell in slot"
<GLOBAL PNUMB 1> ;"cell pointed at"
<GLOBAL CELLOBJS <ITABLE NONE <* 8 2 8>>>
<ROUTINE MOVE-CELL-OBJECTS ("AUX" TOP CNT F X)
<SET TOP <* 8 <- ,LCELL 1>>>
<SET CNT <+ .TOP 1>>
<SET F <FIRST? ,CELL>>
<COND (.F
<REPEAT ()
<SET X <NEXT? .F>>
<COND (<NOT .F> <RETURN>)
(T
<PUT ,CELLOBJS .CNT .F>
<REMOVE .F>
<SET CNT <+ .CNT 1>>)>
<COND (<NOT .X> <RETURN>)
(T <SET F .X>)>>)>
<PUT ,CELLOBJS .TOP <- <- .CNT .TOP> 1>>
<SET TOP <* 8 <- ,PNUMB 1>>>
<SET CNT <GET ,CELLOBJS .TOP>>
<REPEAT ()
<COND (<0? .CNT> <RETURN>)
(T
<SET TOP <+ .TOP 1>>
<MOVE <GET ,CELLOBJS .TOP> ,CELL>
<SET CNT <- .CNT 1>>)>>>
<ROUTINE CELL-MOVE ("AUX" F X)
<FCLEAR ,CELL-DOOR ,OPENBIT>
<FCLEAR ,BRONZE-DOOR ,OPENBIT>
<COND (<NOT <==? ,PNUMB ,LCELL>>
<COND (<==? ,PNUMB 4> <FCLEAR ,BRONZE-DOOR ,INVISIBLE>)
(ELSE <FSET ,BRONZE-DOOR ,INVISIBLE>)>
<COND (<IN? ,PLAYER ,CELL>
<SETG WINNER ,PLAYER>
<FCLEAR ,GOOD-CELL ,TOUCHBIT>
<FCLEAR ,PRISON-CELL ,TOUCHBIT>
<GOTO <COND (<==? ,LCELL 4>
<FCLEAR ,BRONZE-DOOR ,INVISIBLE>
,GOOD-CELL)
(ELSE ,PRISON-CELL)>>
<SET F <FIRST? ,CELL>>
<COND (.F
<REPEAT ()
<SET X <NEXT? .F>>
<COND (<NOT .F> <RETURN>)
(T <MOVE .F ,HERE>)>
<COND (<NOT .X> <RETURN>)
(T <SET F .X>)>>)>)
(T <MOVE-CELL-OBJECTS>)>
<SETG LCELL ,PNUMB>)>>
<ROUTINE PARAPET-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are standing behind a stone retaining wall which rims a parapet
overlooking a fiery pit. It is difficult to see through the
smoke and flame which fills the pit, but it seems to be bottomless.
The pit itself is circular, about two hundred feet in diameter,
and is fashioned of roughly hewn stone. The flames generate considerable
heat, so it is rather uncomfortable standing here.|
There is an object here which looks like a sundial. On it are an
indicator arrow surrounding a large button. On the face of
the dial are numbers 1 through 8. The indicator points to the number "
N ,PNUMB "." CR>
<TELL
"To the south, across a narrow corridor, is a prison cell." CR>)>>
<ROUTINE DIAL ("AUX" N)
<COND (<VERB? EXAMINE>
<TELL "The dial points to " N ,PNUMB "." CR>)
(<VERB? TURN>
<COND (<==? ,PRSI ,INTNUM>
<COND (<OR <0? ,P-NUMBER>
<G? ,P-NUMBER 8>>
<TELL "There is no such setting." CR>
<RTRUE>)>
<SETG PNUMB ,P-NUMBER>
<COND (<==? ,WINNER ,PLAYER>
<TELL
"The dial now points to " N ,PNUMB "." CR>)>
<RTRUE>)
(<NOT ,PRSI>
<TELL "You must specify what to set the dial to." CR>)
(T <TELL "The dial face only contains numbers." CR>)>)
(<VERB? SPIN>
<SETG PNUMB <RANDOM 8>>
<COND (<==? ,WINNER ,PLAYER>
<TELL
"The dial spins and comes to a stop pointing at " N ,PNUMB ".">)>
<RTRUE>)>>
<ROUTINE DIALBUTTON ("AUX" C)
<SET C <FSET? ,CELL-DOOR ,OPENBIT>>
<FCLEAR ,CELL ,TOUCHBIT>
<COND (<VERB? PUSH>
<COND (<==? ,WINNER ,PLAYER>
<TELL
"The button depresses with a slight click, and pops back." CR>)>
<CELL-MOVE>
<COND (.C <TELL
"You notice that the cell door is now closed." CR>)>
<RTRUE>)>>
<ROUTINE CELL-ROOM (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are in a featureless prison cell. You can see ">
<COND (<FSET? ,CELL-DOOR ,OPENBIT>
<TELL "an east-west
corridor outside the cell door. Your view also takes in the parapet and
a large, fiery pit." CR>)
(T
<TELL "through the small window
in the closed door the parapet, and, behind that,
smoke and flames rising from a fiery pit." CR>)>
<COND (<IN? ,DUNGEON-MASTER ,PARAPET>
<TELL
"The dungeon master is at the parapet, leaning on his
staff. His keen gaze is fixed on you and he looks tense,
as if waiting for something to happen." CR>)>
<COND (<==? ,LCELL 4>
<TELL
"Behind you, to the south, is a bronze door which is ">
<DPR ,BRONZE-DOOR>)>
<RTRUE>)>>
<ROUTINE NCELL-ROOM (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are in a bare prison cell. Its wooden door is securely fastened,
and you can see only flames and smoke through its small window. On the
south wall is a bronze door which seems to be ">
<DPR ,BRONZE-DOOR>)>>
<ROUTINE DPR (OBJ)
<COND (<FSET? .OBJ ,OPENBIT> <TELL "open." CR>)
(T <TELL "closed." CR>)>>
<ROUTINE NORTH-CORRIDOR-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is a wide east-west corridor which opens onto a northern
parapet at its center. You can see flames and smoke as you peer
towards the parapet. The corridor turns south at either end, and in
the center of the south wall is a heavy wooden door with a small
barred window. The door is ">
<DPR ,CELL-DOOR>)>>
<ROUTINE SOUTH-CORRIDOR-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are in an east-west corridor which turns north at its eastern
and western ends. The walls are made of the finest marble. Another
hall leads south at the center of the corridor." CR>
<COND (<==? ,LCELL 4>
<TELL
"In the center of the north wall is a bronze door which is ">
<DPR ,BRONZE-DOOR>)>
<RTRUE>)>>
<GLOBAL BRONZE-DOOR-LOCKED T>
<ROUTINE BRONZE-DOOR-F ()
<COND (<AND <VERB? OPEN>
<NOT <FSET? ,BRONZE-DOOR ,OPENBIT>>
<==? ,HERE ,GOOD-CELL>
<NOT ,BRONZE-DOOR-LOCKED>>
<TELL
"On the other side of the bronze door is a narrow passage which opens out
into a larger area." CR>
<FSET ,BRONZE-DOOR ,OPENBIT>)
(<AND <VERB? OPEN> ,BRONZE-DOOR-LOCKED>
<TELL
"The bronze door is locked." CR>)>>
<ROUTINE LOCKED-DOOR-F ()
<COND (<VERB? OPEN UNLOCK>
<TELL "The door is securely fastened." CR>)>>
\
"========== The Ultimate Winnage =========="
<ROUTINE NIRVANA-F (RARG)
<COND (<==? .RARG ,M-END>
<TELL
"As you examine your new-found riches, the Dungeon Master
materializes beside you, and says, \"Now that you have solved all the
mysteries of the Dungeon, it is time for you to assume your rightly earned
place in the scheme of things. Long have I waited for one capable of
releasing me from my burden!\" He taps you lightly on the head with his
staff, mumbling a few well-chosen spells, and you feel yourself changing,
growing older and more stooped. For a moment there are two identical mages
standing among the treasure, then your counterpart dissolves into a
mist and disappears, a sardonic grin on his face.|
|
For a moment you are relieved, safe in the knowledge that you have
at last completed your quest in ZORK. You begin to feel the vast powers
and lore at your command and thirst for an opportunity to use them.|
|
">
<FINISH>)>>
<ROUTINE BRONZE-DOOR-EXIT ()
<COND (<FSET? ,BRONZE-DOOR ,INVISIBLE>
<TELL "You can't go that way." CR>
<RFALSE>)
(<FSET? ,BRONZE-DOOR ,OPENBIT>
,CELL)
(T
<TELL "The bronze door is closed." CR>
<RFALSE>)>>
;<ROUTINE MASTER-F ()
<PERFORM ,PRSA ,DUNGEON-MASTER>
<RTRUE>>
<GLOBAL OLD-MAN-GONE <>>
<GLOBAL OLD-MAN-FED <>>
<GLOBAL SECRET-DOOR-DESC
"Beyond the secret door are dark, forbidding stairs leading down to
a passage below. Flickering torchlight illuminates the passage.">
<ROUTINE SECRET-DOOR-F ()
<COND (<AND <VERB? OPEN> <NOT <FSET? ,SECRET-DOOR ,OPENBIT>>>
<TELL "The massive stone door opens noiselessly. "
,SECRET-DOOR-DESC CR>
<FSET ,SECRET-DOOR ,OPENBIT>)>>
<ROUTINE MSTAIRS-F (RARG)
<COND (<AND <==? .RARG ,M-ENTER>
<PROB 30>
<NOT ,OLD-MAN-FED>
<NOT ,OLD-MAN-GONE>>
<MOVE ,OLD-MAN ,HERE>)
(<==? .RARG ,M-LOOK>
<TELL
"You are in a room with passages heading southwest and southeast. The
north wall is ornately carved, filled with strange runes and writing in
an unfamiliar language." CR>
<COND (<FSET? ,SECRET-DOOR ,OPENBIT>
<TELL ,SECRET-DOOR-DESC CR>)
(<NOT <FSET? ,SECRET-DOOR ,INVISIBLE>>
<TELL
"The outline of a door is barely visible among the runes." CR>)>)>>
<ROUTINE HELLO? (WHO)
<COND (<OR <==? ,WINNER .WHO>
<VERB? TELL ANSWER REPLY SAY HELLO INCANT>>
<COND (<VERB? TELL ANSWER SAY INCANT REPLY>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>)>
<RTRUE>)>>
<ROUTINE OLD-MAN-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-OBJDESC>
<COND (,OLD-MAN-AWAKE
<TELL
"There is an old man huddled in the corner, eyeing you cautiously.
He looks weak and tired." CR>)
(T
<TELL
"An old and wizened man is huddled, asleep, in the corner. He is snoring
loudly, and looks quite weak and frail." CR>)>)
(<AND <VERB? GIVE> <==? ,PRSI ,OLD-MAN>>
<COND (,OLD-MAN-AWAKE
<COND (<==? ,PRSO ,WAYBREAD>
<REMOVE ,WAYBREAD>
<TELL
"He looks up at you and takes the waybread. Slowly, he eats the
bread and pauses when he is finished. He starts to speak: \"Perhaps what you
seek is through there!\" He points at the carved wall to the north, where you
now notice the bare outline of a secret door. When you turn back, the old
man is gone!" CR>
<FCLEAR ,SECRET-DOOR ,INVISIBLE>
<SETG OLD-MAN-GONE T>
<REMOVE ,OLD-MAN>)
(<IN? ,WAYBREAD ,WINNER>
<TELL
"He refuses your offer but motions with his arm to the waybread in your
hand." CR>)
(T
<TELL
"The old man refuses the " D ,PRSO " with a wave of his hand." CR>)>)
(T <TELL "He is asleep!" CR>)>)
(<VERB? EXAMINE>
<COND (,OLD-MAN-AWAKE
<TELL
"The old man is barely awake and appears to nod off every few moments.
He has bright eyes, which appear to see right through your body." CR>)
(T
<TELL
"The man is very, very old and wizened. He has a long, stringy
beard and is snoring quite loudly." CR>)>)
(<VERB? LISTEN>
<COND (,OLD-MAN-AWAKE <TELL "He isn't talking." CR>)
(T
<TELL
"He is snoring like a buzz saw." CR>)>)
(<HELLO? ,OLD-MAN>
<COND (,OLD-MAN-AWAKE
<TELL
"He nods at you without seeming to have understood." CR>)
(T
<TELL
"He is sleeping soundly and does not respond." CR>)>)
(<VERB? SHAKE ALARM>
<TELL
"The old man is roused to consciousness. He peers at you through eyes which
appear much younger and stronger than his frail body and waits, as if expecting
something to happen." CR>
<SETG OLD-MAN-AWAKE T>
<ENABLE <QUEUE I-OLD-MAN-SLEEPS 3>>)
(<VERB? ATTACK MUNG>
<TELL
"The attack seems to have left the old man unharmed! You watch in awe as he
rises to his feet and seems to tower above you. He peers down menacingly,
then sadly and wearily. \"Not yet,\" he mourns, and vanishes in a puff of
smoke." CR>
<SETG OLD-MAN-GONE T>
<REMOVE ,OLD-MAN>)>>
<GLOBAL OLD-MAN-AWAKE <>>
<ROUTINE I-OLD-MAN-SLEEPS ()
<SETG OLD-MAN-AWAKE <>>
<COND (<IN? ,OLD-MAN ,HERE>
<TELL "You notice that the old man has fallen asleep." CR>)>>
<ROUTINE RUNES-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"The runes are in an ancient language. Some pictures among the runes depict
flames, stone statues, and an old man." CR>)>>
<ROUTINE T-BAR-F ()
<COND (<VERB? TURN>
<TELL
"You don't have enough leverage to turn the T-bar. You might be able
to turn the whole structure, however." CR>)>>
<ROUTINE FLAMING-PIT-F ()
<COND (<VERB? EXAMINE>
<TELL
"The flaming pit is a seemingly bottomless abyss filled with smoke and
flame." CR>)
(<AND <VERB? PUT> <==? ,PRSI ,FLAMING-PIT>>
<COND (<EQUAL? ,HERE ,PARAPET ,NORTH-CORRIDOR>
<COND (<==? ,PRSO ,ME>
<TELL
"It would be a pity to end your life so near the end of your quest!" CR>)
(T
<TELL
"You cast the " D ,PRSO " into the pit, where it is lost forever." CR>
<REMOVE ,PRSO>)>)
(T <TELL "You're not close enough." CR>)>)>>
<ROUTINE PARAPET-OBJ-F ()
<COND (<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,CELL ,NORTH-CORRIDOR>
<TELL
"You can see the parapet and sundial from here.">
<COND (<IN? ,DUNGEON-MASTER ,PARAPET>
<TELL " The dungeon master is there
also, leaning on his staff.">)>
<CRLF>)
(T <V-LOOK>)>)>>
<ROUTINE ROSE-F ()
<COND (<VERB? TURN MOVE>
<TELL
"The compass rose is made of stone and is imbedded in the ground.
You could not possibly turn it or move it." CR>)>>
<ROUTINE CELL-DOOR-F ()
<COND (<AND <VERB? PUT> <==? ,PRSI ,CELL-DOOR>>
<TELL "You will have to enter the cell first." CR>)
(<VERB? THROUGH>
<COND (<==? ,HERE ,CELL>
<TELL "Look around." CR>)
(T
<DO-WALK ,P?SOUTH>
<RTRUE>)>)>>
<ROUTINE LORE-BOOK-F ()
<COND (<AND <VERB? BURN> <NOT <IN? ,LORE-BOOK ,WINNER>>>
<TELL
"The book is consumed in a dazzling display of color." CR>
<REMOVE ,PRSO>
<RTRUE>)
(<AND ,IN-DUNGEON <VERB? OPEN EXAMINE READ>>
<TELL
"The book seems to will itself open to a specific page. It shows a picture of
eight small rooms located around a great circle of flame. All are identical
save one, which has a bronze door leading to a room bathed in golden light.
A legend beneath the picture says \"The Dungeon and Treasury of Zork.\"" CR>)
(<VERB? OPEN>
<TELL
"The book can be perused but not left open." CR>)>>
<ROUTINE CP-HOLE-F ()
<COND (<VERB? THROUGH>
<DO-WALK ,P?DOWN>
<RTRUE>)>>
<ROUTINE TORCH-PSEUDO ()
<TELL "The torches are out of reach." CR>>
<ROUTINE WATER-FCN ("AUX" AV PI?)
#DECL ((AV) <OR OBJECT FALSE> (PI?) <OR ATOM FALSE>)
<COND (<VERB? SGIVE> <RFALSE>)
(<VERB? THROUGH>
<PERFORM ,V?SWIM ,PRSO>
<RTRUE>)
(<VERB? FILL> ;"fill bottle with water =>"
<SETG PRSA ,V?PUT>
<SETG PRSI ,PRSO>
<SETG PRSO ,GLOBAL-WATER>
<SET PI? <>>)
(<EQUAL? ,PRSO ,GLOBAL-WATER>
<SET PI? <>>)
(,PRSI
<SET PI? T>)>
<COND (.PI? <SETG PRSI ,GLOBAL-WATER>)
(T <SETG PRSO ,GLOBAL-WATER>)>
<COND (<AND <VERB? TAKE PUT> <NOT .PI?>>
<TELL "The water slips through your fingers." CR>)
(.PI? <TELL "You can't do that." CR>)
(<VERB? DROP GIVE THROW>
<TELL "You don't have any water." CR>)>>
<ROUTINE RANDOM-WALL ()
<COND (<VERB? PUSH>
<COND (<==? ,HERE ,IN-MIRROR>
<TELL
"You should specify which panel you want to push." CR>)
(T <TELL
"You can't budge it; at least from here." CR>)>)>>
^/L
;"special-cased routines"
;"put GO here, eventually"
<ROUTINE V-DIAGNOSE ()
<TELL <GET ,DIAG ,P-STRENGTH> CR>>
<GLOBAL DIAG <TABLE
"You are dead."
"You are very seriously wounded. One more wound would very likely do you in."
"You are hurt quite badly. One major wound would probably kill you."
"You have a few wounds, which do not seriously impair your strength."
"You are wounded lightly. You have a good deal of strength in reserve."
"You are in perfect health.">>
<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 an amulet and ring,
carrying an old book 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>>
<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>
\
"old TM.ZIL"
"Incredibly bizarre Time Machine Problem"
<OBJECT VOICES
(IN GLOBAL-OBJECTS)
(DESC "voices")
(SYNONYM VOICE VOICES GUARDS OFFICI)
(ADJECTIVE ARMED)
(FLAGS NDESCBIT)
(ACTION VOICES-F)>
<ROOM TIGHT-SQUEEZE
(IN ROOMS)
(DESC "Tight Squeeze")
(LDESC
"This is a very low and narrow passage leading east to west.")
(WEST TO CREEPY-CRAWL)
(EAST TO ROCKY-ROOM)
(FLAGS RLANDBIT)>
<ROOM ROCKY-ROOM
(IN ROOMS)
(DESC "Crystal Grotto")
(LDESC
"This is a chamber of breathtaking beauty. Mighty stalagmites form
crystalline-encrusted rock formations. Phosphorescent mosses, fed by
a trickle of water from above, make the crystals glow and sparkle with
every color of the rainbow. There is an opening to the west, and a
man-made passage heads south.")
(SOUTH TO WIDE-HALL)
(WEST TO TIGHT-SQUEEZE)
(GLOBAL MOSS CRYSTALS)
(FLAGS ONBIT RLANDBIT)>
<OBJECT CRYSTALS
(IN ROCKY-ROOM)
(DESC "rock structure")
(SYNONYM CRYSTAL STALAG)
(FLAGS NDESCBIT)>
<ROOM WIDE-HALL
(IN ROOMS)
(DESC "Royal Hall")
(LDESC
"This is the north end of a large hall with a vaulted ceiling. A long, tiled
hallway leads north through a tall arch. Although the purpose of
this room is unclear, there is a large rendering of the Royal Seal of Lord
Dimwit Flathead carved on the wall.")
(NORTH TO ROCKY-ROOM)
(SOUTH TO MUSEUM-ANTE)
(FLAGS RLANDBIT)>
<OBJECT ROYAL-SEAL
(IN WIDE-HALL)
(DESC "Royal Seal of Dimwit Flathead")
(SYNONYM SEAL CARVIN RENDER)
(ADJECTIVE LARGE ROYAL)
(FLAGS NDESCBIT READBIT)
(TEXT
"The Seal is vintage Flathead, with signs of excess nearly everywhere.
It shows a curiously flat-headed figure wearing a gaudy crown,
surrounded by the Crown Jewels of the Empire.")>
<ROOM MUSEUM-ANTE
(IN ROOMS)
(DESC "Great Door")
(NORTH TO WIDE-HALL)
(EAST TO MUSEUM-ENTRANCE
IF CLEFT-FLAG ELSE "The great iron door is rusted shut.")
(FLAGS RLANDBIT)
(ACTION MUSEUM-ANTE-F)
(GLOBAL IRON-DOOR CLEFT)>
<ROOM MUSEUM-ENTRANCE
(IN ROOMS)
(DESC "Museum Entrance")
(EAST TO JEWEL-ROOM IF JEWEL-DOOR IS OPEN)
(WEST TO MUSEUM-ANTE IF CLEFT-FLAG ELSE "The iron door is rusted shut.")
(SOUTH TO CP-ANTE)
(DOWN TO CP-ANTE)
(NORTH TO TECH-MUSEUM IF WOODEN-DOOR IS OPEN)
(FLAGS ONBIT RLANDBIT)
(ACTION MUSEUM-ENTRANCE-F)
(GLOBAL IRON-DOOR JEWEL-DOOR WOODEN-DOOR STAIRS CLEFT)>
<OBJECT CLEFT
(IN LOCAL-GLOBALS)
(DESC "cleft")
(SYNONYM CLEFT)
(ACTION CLEFT-F)
(FLAGS DOORBIT OPENBIT INVISIBLE)>
<ROOM JEWEL-ROOM
(IN ROOMS)
(DESC "Jewel Room")
(WEST TO MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
(OUT TO MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
(FLAGS ONBIT RLANDBIT)
(ACTION JEWEL-ROOM-F)
(GLOBAL JEWEL-DOOR)>
<ROOM TECH-MUSEUM
(IN ROOMS)
(DESC "Technology Museum")
(SOUTH TO MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
(OUT TO MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(ACTION TECH-MUSEUM-F)
(GLOBAL WOODEN-DOOR)>
<ROOM MID-CP-ANTE
(IN ROOMS)
(DESC "Royal Puzzle Entrance")
(WEST TO MID-CP-OUT)
(NORTH TO MID-MUSEUM-ENTRANCE)
(UP TO MID-MUSEUM-ENTRANCE)
(DOWN PER CPENTER)
(FLAGS RLANDBIT ONBIT)
(ACTION CPANT-ROOM)
(GLOBAL STAIRS)>
<ROOM MID-CP-OUT
(IN ROOMS)
(DESC "Side Room")
(NORTH TO MID-CP-ANTE)
(EAST "The steel door is closed.")
(FLAGS RLANDBIT ONBIT)
(ACTION CPOUT-ROOM)
(GLOBAL CPDOOR STAIRS)>
<ROOM MID-MUSEUM-ENTRANCE
(IN ROOMS)
(DESC "Museum Entrance")
(EAST TO MID-JEWEL-ROOM IF JEWEL-DOOR IS OPEN)
(WEST "The iron door is rusted shut.")
(SOUTH TO MID-CP-ANTE)
(DOWN TO MID-CP-ANTE)
(NORTH TO MID-TECH-MUSEUM IF WOODEN-DOOR IS OPEN)
(FLAGS ONBIT RLANDBIT)
(ACTION MUSEUM-ENTRANCE-F)
(GLOBAL IRON-DOOR JEWEL-DOOR WOODEN-DOOR STAIRS)>
<ROOM MID-JEWEL-ROOM
(IN ROOMS)
(DESC "Jewel Room")
(WEST TO MID-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
(OUT TO MID-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
(FLAGS ONBIT RLANDBIT)
(ACTION JEWEL-ROOM-F)
(GLOBAL JEWEL-DOOR)>
<ROOM MID-TECH-MUSEUM
(IN ROOMS)
(DESC "Technology Museum")
(SOUTH TO MID-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
(OUT TO MID-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(ACTION TECH-MUSEUM-F)
(GLOBAL WOODEN-DOOR)>
<ROOM OLD-TECH-MUSEUM
(IN ROOMS)
(DESC "Technology Museum")
(FLAGS ONBIT RLANDBIT)
(ACTION OLD-TECH-MUSEUM-F)
(SOUTH TO OLD-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
(OUT TO OLD-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
(GLOBAL WOODEN-DOOR ROBOT)>
<ROOM OLD-JEWEL-ROOM
(IN ROOMS)
(DESC "Jewel Room")
(FLAGS ONBIT RLANDBIT)
(ACTION OLD-TECH-MUSEUM-F)
(WEST TO OLD-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
(OUT TO OLD-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
(GLOBAL JEWEL-DOOR ROBOT)>
<ROOM OLD-MUSEUM-ENTRANCE
(IN ROOMS)
(DESC "Museum Entrance")
(FLAGS ONBIT RLANDBIT)
(ACTION OLD-TECH-MUSEUM-F)
(EAST TO OLD-JEWEL-ROOM IF JEWEL-DOOR IS OPEN)
(WEST "The guards locked the iron door behind them.")
(NORTH TO OLD-TECH-MUSEUM IF WOODEN-DOOR IS OPEN)
(SOUTH "The stairs end blindly to the south.")
(GLOBAL WOODEN-DOOR JEWEL-DOOR IRON-DOOR ROBOT)>
<OBJECT TIME-MACHINE
(IN TECH-MUSEUM)
(DESC "gold machine")
(SYNONYM MACHINE TEMPORIZER)
(ADJECTIVE TIME GOLD GOLDEN)
(FLAGS VEHBIT OPENBIT CONTBIT)
(CAPACITY 100)
(DESCFCN TIME-MACHINE-F)
(ACTION TIME-MACHINE-F)>
<OBJECT PRESSURIZER
(IN TECH-MUSEUM)
(DESC "grey machine")
(SYNONYM MACHINE DRYER PRESSURIZER)
(ADJECTIVE GRAY GREY WASHING)
(ACTION MUSEUM-PIECES)
(DESCFCN MUSEUM-PIECES)>
<OBJECT SPINNER
(IN TECH-MUSEUM)
(DESC "black machine")
(SYNONYM MACHINE PIPES WIRES MOTORS)
(ADJECTIVE BLACK)
(DESCFCN MUSEUM-PIECES)
(ACTION MUSEUM-PIECES)>
<OBJECT TM-BUTTON
(IN TIME-MACHINE)
(DESC "button")
(SYNONYM BUTTON)
(FLAGS NDESCBIT)
(ACTION TM-BUTTON-F)>
<OBJECT TM-HOLLOW
(IN TIME-MACHINE)
(DESC "seat")
(SYNONYM AREA)
(ADJECTIVE SMALL HOLLOW)
(FLAGS NDESCBIT OPENBIT CONTBIT)
(CAPACITY 20)
(ACTION TM-HOLLOW-F)>
<ROUTINE TM-HOLLOW-F ()
<COND (<AND <VERB? PUT>
<EQUAL? ,PRSI ,TM-HOLLOW>>
<PERFORM ,V?PUT-UNDER ,PRSO ,TM-SEAT>
<RTRUE>)
(<VERB? LOOK-INSIDE>
<PERFORM ,V?LOOK-UNDER ,TM-SEAT>
<RTRUE>)
(<EQUAL? ,PRSO ,TM-HOLLOW>
<PERFORM ,PRSA ,TM-SEAT ,PRSI>
<RTRUE>)
(<EQUAL? ,PRSI ,TM-HOLLOW>
<PERFORM ,PRSA ,PRSO ,TM-SEAT>
<RTRUE>)>>
<OBJECT TM-SEAT
(IN TIME-MACHINE)
(DESC "seat")
(SYNONYM SEAT CHAIR)
(FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
(CAPACITY 20)
(ACTION TM-SEAT-F)>
<OBJECT TM-DIAL
(IN TIME-MACHINE)
(DESC "dial")
(SYNONYM DIAL CONSOLE DISPLAY)
(FLAGS NDESCBIT TURNBIT)
(ACTION TM-DIAL-F)>
<OBJECT IRON-DOOR
(IN LOCAL-GLOBALS)
(DESC "iron door")
(SYNONYM DOOR)
(ADJECTIVE IRON)
(FLAGS DOORBIT CONTBIT)
(ACTION IRON-DOOR-F)>
<OBJECT JEWEL-DOOR
(IN LOCAL-GLOBALS)
(DESC "stone door")
(SYNONYM DOOR)
(ADJECTIVE STONE EAST)
(ACTION JEWEL-DOOR-F)
(FLAGS DOORBIT CONTBIT)>
<OBJECT WOODEN-DOOR
(IN LOCAL-GLOBALS)
(DESC "wooden door")
(SYNONYM DOOR)
(ADJECTIVE WOODEN WOOD NORTH)
(FLAGS DOORBIT CONTBIT OPENBIT)
(ACTION WOODEN-DOOR-F)>
<OBJECT SCEPTRE
(IN PEDESTAL)
(DESC "sceptre")
(SYNONYM SCEPTRE JEWELS)
(ADJECTIVE CROWN)
(FLAGS TAKEBIT NDESCBIT TRYTAKEBIT)
(SIZE 30)
(ACTION CROWN-JEWELS-F)>
<OBJECT JEWELLED-KNIFE
(IN PEDESTAL)
(DESC "jewelled knife")
(SYNONYM KNIFE JEWELS)
(ADJECTIVE JEWELLED CROWN)
(FLAGS TAKEBIT NDESCBIT TRYTAKEBIT)
(SIZE 20)
(ACTION CROWN-JEWELS-F)>
<OBJECT RING
(IN PEDESTAL)
(DESC "golden ring")
(SYNONYM RING JEWELS)
(ADJECTIVE GOLDEN CROWN)
(FLAGS TAKEBIT NDESCBIT TRYTAKEBIT WEARBIT)
(SIZE 5)
(ACTION CROWN-JEWELS-F)>
<OBJECT PEDESTAL
(IN JEWEL-ROOM)
(DESC "pedestal")
(SYNONYM PEDESTAL)
(FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
(CAPACITY 50)
(ACTION PEDESTAL-F)>
<OBJECT CAGE
(IN JEWEL-ROOM)
(DESC "steel cage")
(SYNONYM CAGE)
(ADJECTIVE STEEL)
(FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
(CAPACITY 5)
(ACTION CAGE-F)>
<OBJECT TECH-PLAQUE
(IN TECH-MUSEUM)
(DESC "plaque")
(SYNONYM PLAQUE TEXT)
(FLAGS NDESCBIT READBIT)
(ACTION TECH-PLAQUE-F)>
<OBJECT PLAQUE
(IN CAGE)
(DESC "bronze plaque")
(SYNONYM PLAQUE TEXT)
(ADJECTIVE BRONZE)
(FLAGS NDESCBIT READBIT)
(ACTION PLAQUE-F)>
;"The present year using the GUE calendar."
<GLOBAL MACHINE-DAMAGED <>>
<GLOBAL YEAR 948>
<CONSTANT YEAR-BUILT 776>
<CONSTANT YEAR-CAGED 777>
<GLOBAL YEAR-CLOSED 883>
<CONSTANT REAL-YEAR-CLOSED 883>
<CONSTANT YEAR-PRESENT 948>
<ROUTINE IRON-DOOR-F ()
<COND (<VERB? OPEN UNLOCK THROUGH>
<COND (<L? ,YEAR ,YEAR-PRESENT>
<TELL
"The iron door is locked from the outside." CR>)
(T
<TELL
"The iron door is rusted shut and cannot be opened." CR>)>)>>
<GLOBAL CLEFT-FLAG <>>
<ROUTINE I-CLEFT ()
<COND (<OR <EQUAL? ,HERE ,ZORK-IV ,ROOM-8 ,TIMBER-ROOM>
<EQUAL? ,HERE ,LOWER-SHAFT ,LADDER-BOTTOM ,LADDER-TOP>>
<TELL
"You feel a mild tremor from within the earth which passes quickly." CR>)
(T
<TELL
"There is a great tremor from within the earth. The entire dungeon shakes
violently and loose debris falls from above you." CR>)>
<COND (<==? ,HERE ,MUSEUM-ANTE>
<TELL
"To the east, next to the great iron door, a cleft opens up,
revealing an open area behind!" CR>)
(<==? ,HERE ,AQ-VIEW>
<TELL
"One of the giant pillars supporting the aqueduct collapses in a pile
of smoke and rubble!" CR>)
(<EQUAL? ,HERE ,AQ-2 ,AQ-3>
<TELL
"The channel beneath your feet trembles. Then the channel just to the ">
<COND (<==? ,HERE ,AQ-2> <TELL "north">)
(T <TELL "south">)>
<TELL " collapses and falls into the chasm!" CR>)>
<SETG CLEFT-FLAG T>
<FCLEAR ,CLEFT ,INVISIBLE>
<SETG AQ-FLAG <>>
<RTRUE>>
<ROUTINE CLEFT-F ()
<COND (<NOT <==? ,YEAR ,YEAR-PRESENT>>
<TELL "There is no cleft here." CR>)>>
<ROUTINE MUSEUM-ANTE-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<COND (,CLEFT-FLAG
<TELL
"This is the south end of a monumental hall, full of debris from
a recent earthquake. To the east is a great iron door, rusted shut. To its
right, however, is a gaping cleft in the rock and behind, a cleared area." CR>)
(T
<TELL
"You are in the southern half of a monumental hall. To the east lies
a tremendous iron door which appears to be rusted shut." CR>)>)>>
<ROUTINE DDESC (STR1 DOOR STR2)
#DECL ((STR1) STRING (DOOR) OBJECT (STR2) <OR FALSE STRING>)
<TELL .STR1>
<COND (<FSET? .DOOR ,OPENBIT> <TELL "open">)
(T <TELL "closed">)>
<TELL .STR2 CR>>
<ROUTINE MUSEUM-ENTRANCE-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<COND (<FSET? ,CAGE ,INVISIBLE>
<TELL
"This is an entrance hall of some sort, judging by the grand iron
door to the west, and the ornate stone and wooden doors which lead to the east
and north, respectively. A few wide steps lead south." CR>)
(T
<TELL
"This is the entrance to the Royal Museum, the finest and grandest in the
Great Underground Empire. To the south, down a few steps, is the entrance
to the Royal Puzzle and to the east, through a stone door, is the Royal
Jewel Collection. A wooden door to the north is ">
<TELL <COND (<FSET? ,WOODEN-DOOR ,OPENBIT> "open")
(T "closed")> "
and leads to the Museum of Technology. ">
<COND (<==? ,YEAR ,YEAR-PRESENT>
<TELL
"To the west is a great iron door, rusted shut. To its left, however, is a
cleft in the rock providing an exit from the museum." CR>)
(<L? ,YEAR ,YEAR-PRESENT>
<TELL
"To the west is a great iron door, rusted shut." CR>)
(T
<TELL
"To the west is a great iron door, rusted shut. The cleft in the rock,
present when you started, has filled in with rubble." CR>)>)>)>>
<GLOBAL TM-YEAR 948>
<ROUTINE TIME-MACHINE-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-OBJDESC>
<TELL
"Directly in front of you is a large golden machine, which has a seat with a
console in front. On the console is a single button and a dial connected to
a three-digit display which reads " N ,TM-YEAR
". The machine is surprisingly shiny and shows few signs of age." CR>)
(<==? .RARG ,M-BEG>
<COND (<VERB? MOVE>
<TELL
"You might be able to move the machine by pushing it." CR>)
(<AND <VERB? PUSH-TO>
<==? ,PRSO ,TIME-MACHINE>>
<TELL
"That would be a good trick from inside it." CR>)
(<VERB? WALK>
<TELL
"You're not going anywhere in this heap." CR>)
(<AND <VERB? TAKE PUT MOVE PUSH OPEN CLOSE>
<NOT <HELD? ,PRSO>>
<NOT <IN? ,PRSO ,TIME-MACHINE>>>
<TELL
"You can't do that from inside the machine." CR>)>)
(<NOT .RARG>
<COND (<AND <VERB? PUT> <==? ,PRSI ,TIME-MACHINE>>
<TELL
"You can't put anything on or inside the machine itself." CR>)
(<==? ,PRSO ,TIME-MACHINE>
<COND (<VERB? OPEN CLOSE>
<TELL "This is a machine, not a box." CR>)
(<VERB? EXAMINE>
<TELL
"The machine consists of a seat and a console containing one small button
and a dial connected to a display which reads " N ,TM-YEAR "." CR>)
(<AND <VERB? BOARD> <FIRST? ,TM-SEAT>>
<TELL
"That will be somewhat uncomfortable!" CR>)
(<VERB? TAKE RAISE>
<TELL
"The machine must weigh hundreds of pounds and cannot be carried." CR>)
(<VERB? PUSH MOVE>
<TELL
"You should specify in which direction to push the machine." CR>)
(<VERB? PUSH-TO>
<COND (<NOT <==? <DO-WALK ,P-DIRECTION>
,M-FATAL>>
<TELL
"With some effort, you push the machine into the room with you." CR>
<COND (<EQUAL? ,HERE
,CP-ANTE ,MID-CP-ANTE>
<TELL
"However, the machine seems to have sustained some damage as a result
of going over the stairs." CR>
<SETG MACHINE-DAMAGED T>)
(<==? ,HERE ,MUSEUM-ANTE>
<TELL
"Pushing the machine through the cleft seems to have damaged it." CR>
<SETG MACHINE-DAMAGED T>)>
<MOVE ,TIME-MACHINE ,HERE>)>
<RTRUE>)>)>)>>
<GLOBAL RING-CONCEALED <>>
<ROUTINE TM-SEAT-F ()
<COND (<VERB? CLIMB-ON BOARD>
<PERFORM ,V?BOARD ,TIME-MACHINE>
<RTRUE>)
(<AND <VERB? PUT-UNDER PUT-BEHIND> <==? ,PRSI ,TM-SEAT>>
<COND (<==? ,PRSO ,RING>
<TELL "The ring is concealed underneath the seat." CR>
<SETG RING-CONCEALED T>
<REMOVE ,RING>)
(T
<TELL
"It's too big to hide under the seat." CR>)>)
(<VERB? RUB>
<TELL "There's nothing odd about the feel of the seat." CR>)
(<VERB? LOOK-UNDER RAISE MOVE>
<COND (,RING-CONCEALED
<TELL
"You find the ring under the seat and put it on your finger." CR>
<MOVE ,RING ,WINNER>
<SETG RING-CONCEALED <>>
<RTRUE>)
(T <TELL
"You notice a small hollow area under the seat." CR>)>)>>
<ROUTINE TM-DIAL-F ()
<COND (<VERB? EXAMINE>
<TELL "The dial is set to " N ,TM-YEAR "." CR>)
(<VERB? TURN>
<COND (<==? ,PRSI ,INTNUM>
<COND (<G? ,P-NUMBER 999>
<TELL "You can't set it beyond 999." CR>)
(T
<SETG TM-YEAR ,P-NUMBER>
<TELL "The dial is set to " N ,TM-YEAR "." CR>)>)
(<NOT ,PRSI>
<TELL "You have to say what to turn it to!" CR>)
(T <TELL "You can't do that!" CR>)>)>>
<GLOBAL TM-POINT <>>
<ROUTINE TM-BUTTON-F ()
<COND (<VERB? PUSH>
<COND (<AND <==? ,TM-YEAR ,YEAR-BUILT> <NOT ,TM-POINT>>
<SETG SCORE <+ ,SCORE 1>>
<SETG TM-POINT T>)>
<COND (<OR ,MACHINE-DAMAGED
<NOT <IN? ,WINNER ,TIME-MACHINE>>>
<TELL "Nothing seems to have happened." CR>)
(<L? ,TM-YEAR ,YEAR-BUILT>
<REALLY-DEAD
"You experience a period of disorientation. The area around you seems
to be solidifying! Rock formations close in on you and you become
engulfed in stone!">)
(<==? ,YEAR ,TM-YEAR>
<TELL "Nothing seems to have happened." CR>)
(<L? ,TM-YEAR ,YEAR-CLOSED>
<TELL
"You experience a brief period of disorientation. When your vision returns, ">
<COND (<EQUAL? ,HERE ,MUSEUM-ENTRANCE
,MID-MUSEUM-ENTRANCE
,OLD-MUSEUM-ENTRANCE>
<COND (<==? ,TM-YEAR ,YEAR-CAGED>
<TELL
"you are surrounded by a number of heavily armed guards, the dress and
speech of which seem strange and unfamiliar. A commotion starts at a door
to the east and a person with a flat head, wearing a gaudy crown and a purple
robe, bursts into the room." CR>
<FLATHEAD-SENTENCE>)
(T
<GUARDS-KILL>)>)
(<EQUAL? ,HERE ,JEWEL-ROOM ,MID-JEWEL-ROOM
,OLD-JEWEL-ROOM>
<COND (<==? ,TM-YEAR ,YEAR-CAGED>
<TELL
"you find yourself in the middle of some kind of ceremony, with a strange
flat-headed man wearing royal vestments about to break a bottle on the bars
of an iron cage containing magnificent jewels. He appears pleased
by your presence. ">
<FLATHEAD-SENTENCE>)
(<G? ,TM-YEAR ,YEAR-CAGED>
<GUARDS-KILL>)
(T
<TELL ,SURROUNDINGS-CHANGED CR>
<TGOTO ,OLD-JEWEL-ROOM>)>)
(<EQUAL? ,HERE ,TECH-MUSEUM ,MID-TECH-MUSEUM
,OLD-TECH-MUSEUM>
<COND (<NOT <==? ,TM-YEAR ,YEAR-BUILT>>
<GUARDS-KILL>)
(T
<TELL ,SURROUNDINGS-CHANGED CR>
<TGOTO ,OLD-TECH-MUSEUM>)>)>)
(T
<HAPPY-NEW-YEAR>)>)>>
<GLOBAL SURROUNDINGS-CHANGED
"your surroundings appear to have changed. From outside the door
you hear the sounds of guards talking.">
<ROUTINE HAPPY-NEW-YEAR ()
<TELL
"You experience a brief period of disorientation. When your vision returns,
your surroundings appear somewhat altered." CR>
<COND (<EQUAL? ,HERE ,OLD-JEWEL-ROOM ,MID-JEWEL-ROOM ,JEWEL-ROOM>
<COND (<L? ,TM-YEAR ,YEAR-PRESENT> <TGOTO ,MID-JEWEL-ROOM>)
(T <TGOTO ,JEWEL-ROOM>)>)
(<EQUAL? ,HERE ,OLD-TECH-MUSEUM ,MID-TECH-MUSEUM
,TECH-MUSEUM>
<COND (<L? ,TM-YEAR ,YEAR-PRESENT> <TGOTO ,MID-TECH-MUSEUM>)
(T <TGOTO ,TECH-MUSEUM>)>)
(<L? ,TM-YEAR ,YEAR-PRESENT> <TGOTO ,MID-MUSEUM-ENTRANCE>)
(T <TGOTO ,MUSEUM-ENTRANCE>)>>
<GLOBAL SNAP-LOC <>>
<ROUTINE I-SNAP ()
<COND (<==? ,YEAR ,YEAR-PRESENT>
<RFALSE>)>
<SETG TM-YEAR ,YEAR-PRESENT>
<TELL
"You start to feel light-headed and quickly become completely disoriented.
When your head clears, you realize that your surroundings have changed." CR>
<TGOTO ,SNAP-LOC T>>
<ROUTINE MOVE-JEWELS ()
<COND (<==? ,TM-YEAR ,YEAR-BUILT>
<MOVE ,PEDESTAL ,OLD-JEWEL-ROOM>)
(<L? ,TM-YEAR ,YEAR-PRESENT>
<MOVE ,PEDESTAL ,MID-JEWEL-ROOM>)
(T
<MOVE ,PEDESTAL ,JEWEL-ROOM>)>
<COND (,RING-STOLEN <RTRUE>)>
<MOVE ,SCEPTRE ,PEDESTAL>
<FSET ,SCEPTRE ,NDESCBIT>
<MOVE ,JEWELLED-KNIFE ,PEDESTAL>
<FSET ,JEWELLED-KNIFE ,NDESCBIT>
<COND (<NOT ,RING-CONCEALED>
<MOVE ,RING ,PEDESTAL>
<FSET ,RING ,NDESCBIT>)>>
<ROUTINE TGOTO ("OPTIONAL" (RM <>) (SNAP <>))
<SETG MOVES <+ ,MOVES 1>>
<QUEUE I-GUARDS-LEAVE 0>
<SETG INVIS <>>
<COND (<G? ,YEAR ,YEAR-BUILT>
<SETG GUARDS-PRESENT T>)>
<COND (<==? ,YEAR ,YEAR-PRESENT>
<SETG SNAP-LOC ,HERE>
<ENABLE <QUEUE I-SNAP 40>>)>
<COND (<==? ,TM-YEAR ,YEAR-PRESENT>
<SETG CLEFT-FLAG T>)
(T <SETG CLEFT-FLAG <>>)>
<FCLEAR ,JEWEL-DOOR ,OPENBIT>
<FCLEAR ,WOODEN-DOOR ,OPENBIT>
<FCLEAR ,IRON-DOOR ,OPENBIT>
<COND (<==? ,YEAR ,YEAR-BUILT>
<COND (<AND ,RING-CONCEALED
<IN? ,TIME-MACHINE ,OLD-TECH-MUSEUM>
<IN? ,SCEPTRE ,PEDESTAL>
<IN? ,JEWELLED-KNIFE ,PEDESTAL>>
<SETG RING-STOLEN T>
<FSET ,CAGE ,INVISIBLE>
;<FSET ,PEDESTAL ,INVISIBLE>
<REMOVE ,SCEPTRE>
<REMOVE ,JEWELLED-KNIFE>)
(<OR <NOT <IN? ,TIME-MACHINE ,OLD-TECH-MUSEUM>>
,RING-CONCEALED>
<SETG CLUMSY-ROBBERY T>
<REMOVE ,TIME-MACHINE>)
(<OR <NOT <IN? ,RING ,PEDESTAL>>
<NOT <IN? ,SCEPTRE ,PEDESTAL>>
<NOT <IN? ,JEWELLED-KNIFE ,PEDESTAL>>>
<SETG MYSTERY T>)>)>
<COND (<==? ,TM-YEAR ,YEAR-BUILT>
<SETG MYSTERY <>>
<SETG CLUMSY-ROBBERY <>>)>
<SETG YEAR ,TM-YEAR>
<MOVE-TM-OBJECTS>
<MOVE-JEWELS>
<MOVE ,WINNER ,HERE>
<GOTO .RM <>>
<COND (<==? ,YEAR ,YEAR-BUILT>
<MOVE ,TIME-MACHINE ,OLD-TECH-MUSEUM>
<MOVE ,SPINNER ,OLD-TECH-MUSEUM>
<MOVE ,PRESSURIZER ,OLD-TECH-MUSEUM>
<MOVE ,TECH-PLAQUE ,OLD-TECH-MUSEUM>)
(<L? ,YEAR ,YEAR-PRESENT>
<COND (<NOT ,CLUMSY-ROBBERY>
<MOVE ,TIME-MACHINE ,MID-TECH-MUSEUM>)>
<MOVE ,SPINNER ,MID-TECH-MUSEUM>
<MOVE ,PRESSURIZER ,MID-TECH-MUSEUM>
<MOVE ,TECH-PLAQUE ,MID-TECH-MUSEUM>
<MOVE ,CAGE ,MID-JEWEL-ROOM>)
(T
<MOVE ,TIME-MACHINE ,TECH-MUSEUM>
<MOVE ,SPINNER ,TECH-MUSEUM>
<MOVE ,PRESSURIZER ,TECH-MUSEUM>
<MOVE ,TECH-PLAQUE ,TECH-MUSEUM>
<MOVE ,CAGE ,JEWEL-ROOM>)>
<COND (<OR ,CLUMSY-ROBBERY
<NOT <EQUAL? ,HERE ,TECH-MUSEUM
,MID-TECH-MUSEUM
,OLD-TECH-MUSEUM>>>
<COND (<NOT .SNAP>
<TELL
"You notice that the golden machine has disappeared!" CR>)>)
(T <MOVE ,WINNER ,TIME-MACHINE>)>
<COND (,CLUMSY-ROBBERY <REMOVE ,TIME-MACHINE>)>
<RTRUE>>
<ROUTINE MOVE-TM-OBJECTS ("AUX" F (MFLG <>) (WFLG <>) N)
<SET F <FIRST? ,TIME-MACHINE>>
<COND (.F
<REPEAT ()
<COND (<OR <EQUAL? .F ,TM-DIAL ,TM-SEAT ,TM-BUTTON>
<EQUAL? .F ,PLAYER>> T)
(<NOT .MFLG>
<SET MFLG T>
<TELL
"You notice that everything in the machine is gone">)>
<SET N <NEXT? .F>>
<COND (<NOT <EQUAL? .F ,TM-DIAL ,TM-SEAT ,TM-BUTTON>>
<MOVE .F ,HERE>)>
<SET F .N>
<COND (<NOT .F> <RETURN>)>>)>
<SET F <FIRST? ,WINNER>>
<COND (.F
<REPEAT ()
<COND (<NOT .WFLG>
<SET WFLG T>
<COND (.MFLG
<TELL ": come to mention
it, everything you were holding has vanished too">)
(T <TELL
"You notice that everything you were holding is gone">)>)>
<SET N <NEXT? .F>>
<MOVE .F ,HERE>
<SET F .N>
<COND (<NOT .F> <RETURN>)>>)>
<COND (<OR .MFLG .WFLG> <TELL "!" CR>)>>
<ROUTINE GUARDS-KILL ()
<TELL <PICK-ONE ,GUARD-KILLERS> CR>
<REALLY-DEAD " ">>
<GLOBAL GUARD-KILLERS <LTABLE 0
"you are surrounded by heavily armed guards who seem awed by your presence.
One, whose IQ might be 15, aims a strange waffle-like
instrument in your direction and all goes black."
"you are confronted with many particularly stupid-looking
people dressed in peculiar uniforms and pointing waffle-like objects in
your direction. One twists his waffle and you slump
to the ground, dead."
"you see a row of military people who, if appearances do not
deceive, have the cumulative intelligence of an unripe grapefruit. One
of them aims a waffle-shaped implement in your direction and you become numb
and then paralyzed and then dead.">>
<ROUTINE FLATHEAD-SENTENCE ()
<REALLY-DEAD "He speaks loudly, nearly deafening the poor civil
servant whose duty it is to see that his wishes are carried out. \"Aha! A
thief! Didn't I tell you that we needed more security! But, no! You all
said my idea to build the museum under two miles of mountain and surrounded
by five hundred feet of steel was impractical! Now, what to do with this ...
intruder? I have it! We'll build a tremendous fortress on the highest mountain
peak, with one narrow ladder stretching thousands of feet to the pinnacle.
There he will stay for the rest of his life!\" His brow-beaten assistant
hesitates. \"Don't you think, Your Lordship, that your plan is a bit, well,
a bit much?\" Flathead gives it a second's thought. \"No, not really.\" he
says, and you are led away. A few years later, your prison is finished. You
are taken there, and spend the rest of your life in misery.">>
<ROUTINE REALLY-DEAD (STR)
<TELL .STR "|
|
**** You have died ****|
|
">
<FINISH>>
<GLOBAL FLATHEAD-HEARD <>>
<GLOBAL RING-STOLEN <>>
<GLOBAL CLUMSY-ROBBERY <>>
<GLOBAL MYSTERY <>>
<GLOBAL GUARDS-PRESENT T>
<ROUTINE HEAR-FLATHEAD ()
<SETG FLATHEAD-HEARD T>
<TELL
"One particularly loud and grating voice can be heard above the
others outside the room. \"Very nice! Very nice! Not enough security, but
very nice! Now, Lord Feepness, pay attention! I've been thinking that what
we need is a dam, a tremendous dam to control the Frigid River, with
thousands of gates. We shall call it ... Flood Control Dam #2. No, not
quite right. Aha! Flood Control Dam #3.\" \"Pardon me, my Lord, but wouldn't
that be just a tad excessive?\" \"Nonsense! Now, let me tell you my idea for
hollowing out volcanoes...\" With that, the voices trail out nothingness." CR>>
<ROUTINE OLD-TECH-MUSEUM-F (RARG)
<COND (<AND <==? .RARG ,M-LOOK> <==? ,HERE ,OLD-JEWEL-ROOM>>
<TELL
"You are in a high-ceilinged chamber, in the center of which
is a pedestal which ">
<COND (<NOT ,RING-STOLEN>
<TELL "is the intended home of the Crown
Jewels of the Great Underground Empire: a jewelled knife, a golden ring, and
the royal sceptre.">
<COND (<OR <NOT <IN? ,SCEPTRE ,PEDESTAL>>
<NOT <IN? ,RING ,PEDESTAL>>
<NOT <IN? ,JEWELLED-KNIFE ,PEDESTAL>>>
<TELL
" Not all of the jewels are in place, however.">)>)
(T <TELL "is bare.">)>
<TELL "
The room is, by appearances, unfinished." CR>
<COND (,GUARDS-PRESENT
<TELL ,HEAR-VOICES CR>)>
<RTRUE>)
(<==? .RARG ,M-LOOK>
<COND (<==? ,HERE ,OLD-TECH-MUSEUM>
<TELL
"You are in a large, unfinished room, probably intended to be a
part of the Royal Museum." CR>)
(T
<TELL
"This appears to be an unfinished entranceway to the Royal Museum. There are
doors to the east and north, and a blind stairway to the south. A heavy iron
door to the west is closed and locked." CR>)>
<COND (,GUARDS-PRESENT
<TELL ,HEAR-VOICES CR>)>
<RTRUE>)
(<AND <==? .RARG ,M-END>
<NOT ,FLATHEAD-HEARD>
,GUARDS-PRESENT
<PROB 6>>
<HEAR-FLATHEAD>)
(<AND <==? .RARG ,M-ENTER> ,GUARDS-PRESENT>
<ENABLE <QUEUE I-GUARDS-LEAVE <+ 3 <RANDOM 12>>>>)
(<AND <==? .RARG ,M-BEG>
<VERB? OPEN>
<EQUAL? ,PRSO ,WOODEN-DOOR ,JEWEL-DOOR>
,GUARDS-PRESENT>
<TELL
"You open the door ever so slightly and see dozens of armed officials.
You shut the door quickly, realizing that you would be killed
in an instant if you left the room." CR>)
(<AND <==? .RARG ,M-BEG> ,GUARDS-PRESENT <PROB 3>>
<GUARD-CAUGHT>)>>
<GLOBAL HEAR-VOICES
"Through the door you can hear voices which, from their
sound, belong to military or police personnel.">
<ROUTINE I-GUARDS-LEAVE ()
<SETG GUARDS-PRESENT <>>
<TELL
"You hear, from outside the door, guards marching away, their voices fading.
After a few moments, a booming crash signals the close of what must be a
tremendous door. Then there is silence." CR>>
<ROUTINE GUARD-CAUGHT ()
<REALLY-DEAD
"A particularly vicious-looking guard enters the room and sees you.
He grinds his teeth unpleasantly, pulls a waffle out of his
garment, and vaporizes you with a flick of his finger.">>
<OBJECT ROBOT
(IN LOCAL-GLOBALS)
(DESC "robot")
(SYNONYM ROBOT DEVICE)
(ACTION ROBOT-F)>
<ROUTINE ROBOT-F ()
<COND (<VERB? FOLLOW>
<TELL "It moved quickly and left the door closed." CR>)
(T <TELL "There is no robot here." CR>)>>
<ROUTINE JEWEL-ROOM-F (RARG)
<COND (<AND <==? .RARG ,M-END>
<IN? ,TIME-MACHINE ,HERE>
<PROB 4>>
<TELL
"An odd robot-like device glides in, dusting the floor as it moves. Its
head gyrates briefly as it scans the machine. \"Shame. Shame,\"
it says, rather tinnily. \"Someone has been tampering with the machines
again.\" Six beady mechanical eyes focus on you as the robot picks up the
gold machine. \"Hands off, adventurer!\" it says as it leaves the
room, closing the door behind it." CR>
<FCLEAR ,JEWEL-DOOR ,OPENBIT>
<FCLEAR ,WOODEN-DOOR ,OPENBIT>
<MOVE ,TIME-MACHINE ,TECH-MUSEUM>)
(<==? .RARG ,M-LOOK>
<TELL
"You are in a high-ceilinged chamber">
<COND (<NOT <FSET? ,CAGE ,INVISIBLE>>
<TELL " in the middle of which
sits a tall, round steel cage, which is securely locked. In the
middle of the cage is a pedestal on which sit the Crown Jewels
of the Great Underground Empire: a sceptre, a jewelled knife, and a golden
ring. A small bronze plaque, now tarnished, is on the cage." CR>)
(T
<TELL " in the middle of which is a bare
pedestal. The room is unfinished with no
indication of its purpose. A small plaque is fastened to a wall." CR>)>)>>
;"You can take the jewels in YEAR-BUILT; otherwise, it is enclosed.
If you take it, YEAR-CLOSED is updated to YEAR-CAGED (history changes)"
<ROUTINE CROWN-JEWELS-F ()
<COND (<VERB? TAKE>
<COND (<HELD? ,PRSO> <RFALSE>)
(<OR <==? ,YEAR ,YEAR-BUILT>
<FSET? ,CAGE ,INVISIBLE>>
<FCLEAR ,PRSO ,NDESCBIT>
<RFALSE>)
(T
<TELL
"The jewels are inside a locked cage." CR>)>)
(<AND <VERB? PUT>
<==? ,PRSI ,PEDESTAL>
<IN? ,PRSO ,WINNER>>
<TELL "The " D ,PRSO " is now resting on the pedestal." CR>
<MOVE ,PRSO ,PEDESTAL>
<FSET ,PRSO ,NDESCBIT>
<RTRUE>)
(<AND <VERB? PUT> <NOT <HELD? ,PRSO>>>
<TELL "You don't have the " D ,PRSO "." CR>)>>
<ROUTINE TECH-MUSEUM-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<COND (<FSET? ,CAGE ,INVISIBLE>
<DDESC
"This is an exhibit of Empire technology. A wooden door to the
south is " ,WOODEN-DOOR ".">)
(T
<DDESC
"This is a large hall which hosted the technological exhibits of the
Great Underground Empire. A door to the south is "
,WOODEN-DOOR ".">)>)>>
<ROUTINE PLAQUE-F ()
<COND (<VERB? EXAMINE READ>
<COND (,RING-STOLEN
<TELL
"The plaque explains that this room was to be the home of the Crown Jewels
of the Empire. However, following the unexplained disappearance of a
priceless ring during the final stages of construction, Lord Flathead
decided to place the remaining jewels in a safer location.
Interestingly, he placed his most prized possesion, an incredibly gaudy
crown, in a locked safe in a volcano specifically hollowed out for that
purpose." CR>
<RTRUE>)>
<FIXED-FONT-ON>
<TELL
"|
Crown Jewels|
|
Presented To The Royal Museum|
By His Gracious Lord|
|
DIMWIT FLATHEAD|
|
Dedicated|
* 777 GUE *">
<FIXED-FONT-OFF>
<COND (,CLUMSY-ROBBERY
<TELL CR CR
"Underneath the plaque, in small lettering, is a description of a clumsy
attempt to steal the jewels using a time machine from the Technological
Museum which the curators were surprised to discover was not a nonworking
model. After the attempt, the machine was removed from the exhibit.">)
(,MYSTERY
<TELL CR CR
"Underneath the plaque, in small lettering, is a description of
a mysterious happening during the final stages of construction of
the Museum, in which some of the crown jewels were found displaced
from their proper positions. Fortunately, nothing was missing.
The mystery was never solved and the museum was opened despite the objections
of Lord Flathead that security was too lax.">)>
<CRLF>
<RTRUE>)>>
<ROUTINE WOODEN-DOOR-F ()
<COND (<AND <VERB? LISTEN> ,GUARDS-PRESENT>
<PERFORM ,V?LISTEN ,VOICES>
<RTRUE>)
(<AND <VERB? KNOCK> ,GUARDS-PRESENT>
<TELL
"You realize that calling attention to yourself would be fatal." CR>)>>
<ROUTINE JEWEL-DOOR-F ()
<COND (<AND <VERB? KNOCK> ,GUARDS-PRESENT>
<PERFORM ,V?KNOCK ,WOODEN-DOOR>
<RTRUE>)
(<VERB? OPEN UNLOCK>
<COND (<FSET? ,JEWEL-DOOR ,OPENBIT>
<TELL "It is already open." CR>)
(<AND <==? ,YEAR ,YEAR-BUILT>
<==? ,HERE ,OLD-MUSEUM-ENTRANCE>>
<TELL
"The door is locked, probably by the guards on their way out." CR>)
(T
<TELL "The door is now open." CR>
<FSET ,JEWEL-DOOR ,OPENBIT>)>)>>
<ROUTINE CAGE-F ()
<COND (<VERB? OPEN> <TELL "The cage is locked." CR>)
(<VERB? CLOSE> <TELL "The cage is already closed." CR>)>>
<ROUTINE VOICES-F ()
<COND (<AND ,GUARDS-PRESENT <==? ,YEAR ,YEAR-BUILT>>
<TELL
"The voices are muffled by the door which (fortunately for you) separates
you. They seem to be in heated debate on the topic of
">
<TELL <PICK-ONE ,BLATHER> "." CR>)
(T <TELL "Are you hearing things now?" CR>)>>
<GLOBAL BLATHER
<LTABLE 0
"wage scales for guards"
"the excessive nature of the Royal Government"
"the soon to be constructed Royal Puzzle"
"the proper way to execute trespassers"
"torturing thieves"
"the banishment of the Wizard of Frobozz">>
<ROUTINE MUSEUM-PIECES ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-OBJDESC>
<COND (<==? ,DESC-OBJECT ,SPINNER>
<RTRUE>)>
<TELL
"A strange grey machine, shaped somewhat like a clothes dryer, is on one side
of the room. On the other side of the hall is a powerful-looking black
machine, a tight tangle of wires, pipes, and motors.|
A plaque is mounted near the door.">
<COND (<L? ,YEAR ,YEAR-CLOSED>
<TELL
" The grey machine, it turns out, is a Frobozz
Magic Pressurizer, used in the coal mines of the Empire. The black machine is
a Frobozz Magic Room Spinner. The golden machine is referred to as a
Temporizer. All are nonworking models donated by Frobozzco president John
D. Flathead." CR>)
(T <TELL
" The writing is faded, however, and cannot be
made out clearly. The two machines seem to be in bad shape, rusting in many
spots." CR>)>)
(<VERB? TAKE MOVE>
<TELL "It's massive and cannot even be moved." CR>)
(<VERB? PUSH PUSH-TO>
<TELL "It's too heavy to be pushed." CR>)
(<VERB? MUNG>
<TELL "It seems quite indestructible." CR>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,SPINNER ,PRESSURIZER>>
<TELL "There's no good place to put anything there." CR>)>>
<ROUTINE TECH-PLAQUE-F ()
<COND (<VERB? TAKE>
<TELL "It's bolted to the wall." CR>)
(<VERB? EXAMINE READ>
<COND (<L? ,YEAR ,YEAR-CLOSED>
<TELL
"The plaque merely identifies the machines and names their donor. They are
nonworking models of existing state-of-the-art machinery." CR>)
(T <TELL "The words cannot be made out." CR>)>)>>
<ROUTINE PEDESTAL-F ()
<COND (<VERB? EXAMINE LOOK-ON>
<COND (<FIRST? ,PEDESTAL>
<TELL
"The Royal Jewels are on the pedestal." CR>)>)
(<AND <VERB? PUT PUT-ON TAKE> <NOT <FSET? ,CAGE ,INVISIBLE>>>
<TELL "You can't reach it through the cage." CR>)>>
\
"old SHADOW.ZIL"
<ROOM CREEPY-CRAWL
(IN ROOMS)
(DESC "Creepy Crawl")
(LDESC
"You are in a dark and quite creepy crawlway with passages leaving to the
north, east, south, and southwest.")
(FLAGS RLANDBIT)
(NORTH TO JUNCTION)
(SOUTH TO FOGGY-ROOM)
(SW TO SHADOW-1)
(EAST TO TIGHT-SQUEEZE)
(ACTION CREEPY-CRAWL-F)>
<ROOM SHADOW-1
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are at the eastern end of a dark, featureless landscape of shallow
hills. Paths to the east and southeast reenter the rock.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(NE "Towering walls of rock bar your way.")
(NORTH "Towering walls of rock bar your way.")
(SOUTH TO SHADOW-5)
(EAST TO CREEPY-CRAWL)
(NW TO SHADOW-2)
(WEST TO SHADOW-3)
(SW TO SHADOW-4)
(SE TO FOGGY-ROOM)>
<ROOM SHADOW-2
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are in a shadowy land of low, rolling hills stretching out to the west
and south. The land is bordered to the north by a massive stone wall.
Ancient and weathered, the wall has crumbled enough at one point to permit
passage.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(NE "A stone wall blocks the way.")
(NORTH TO CLEARING)
(NW "A stone wall blocks the way.")
(SE TO SHADOW-1)
(SW TO SHADOW-7)
(SOUTH TO SHADOW-3)
(WEST TO SHADOW-8)
(EAST TO SHADOW-1)
(GLOBAL RUBBLE STONE-WALL)>
<ROOM SHADOW-3
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are in a dark and shadowy land. All around you are gentle hills and
eerie shadows. Far above, shrouded in mist, you can barely make out the
ceiling of the enormous cavern that spans this entire land.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(PSEUDO "MIST" MIST-PSEUDO)
(NW TO SHADOW-8)
(NE TO SHADOW-1)
(SE TO SHADOW-1)
(SW TO SHADOW-6)
(NORTH TO SHADOW-2)
(SOUTH TO SHADOW-4)
(WEST TO SHADOW-7)
(EAST TO SHADOW-1)>
<ROOM SHADOW-4
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are in an ominously dark land of rolling hills. The ground becomes
softer to the south.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(NORTH TO SHADOW-3)
(EAST TO SHADOW-1)
(NE TO SHADOW-1)
(SE TO SHADOW-5)
(SOUTH TO SHADOW-5)
(SW "The ground becomes too soft to walk on in that direction.")
(WEST TO SHADOW-6)
(NW TO SHADOW-7)>
<ROOM SHADOW-5
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are at the southern end of a shadowy land. The ground here is quite
soft, and the area is surrounded by quicksand on most sides. North of here
is a terrain of shallow hills.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(PSEUDO "QUICKS" QUICKSAND-PSEUDO)
(NORTH TO SHADOW-4)
(NW TO SHADOW-6)
(NE TO SHADOW-1)
(SE "The quicksand prevents movement in that direction.")
(WEST "The quicksand prevents movement in that direction.")
(SOUTH "The quicksand prevents movement in that direction.")
(SW "The quicksand prevents movement in that direction.")
(EAST "The quicksand prevents movement in that direction.")>
<ROOM SHADOW-6
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are near the southern end of the land of shadow. The ground here is
soft and spongy, and it becomes quicksand to the south. North and east of here
are gentle, rolling hills. A gentle sea breeze wafts over a steeply sloping
path to the west.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(NORTH TO SHADOW-7)
(NW TO FLATHEAD-OCEAN)
(WEST TO FLATHEAD-OCEAN)
(DOWN TO FLATHEAD-OCEAN)
(SE TO SHADOW-5)
(EAST TO SHADOW-4)
(NE TO SHADOW-3)
(SOUTH "The quicksand prevents movement in that direction.")
(SW "The quicksand prevents movement in that direction.")
(PSEUDO "QUICKS" QUICKSAND-PSEUDO)>
<ROOM SHADOW-7
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are in a land of dark shadows and shallow hills, which stretch out in all
directions. To the west, the land dips sharply.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(NE TO SHADOW-2)
(EAST TO SHADOW-3)
(SE TO SHADOW-4)
(SOUTH TO SHADOW-6)
(NORTH TO SHADOW-8)
(DOWN TO FLATHEAD-OCEAN)
(NW TO FLATHEAD-OCEAN)
(WEST TO FLATHEAD-OCEAN)
(SW TO FLATHEAD-OCEAN)>
<ROOM SHADOW-8
(IN ROOMS)
(DESC "Land of Shadow")
(LDESC
"You are standing atop a steep cliff, looking west over a vast ocean.
Far below, the surf pounds at a sandy beach. To the south and east are
rolling hills filled with eerie shadows. A path cut into the face of the
cliff descends toward the beach. To the north is a tall stone wall,
which ends at the cliff edge. It was obviously built long ago, and
directly north is a spot where you could climb over the rubble of the
decaying wall.")
(FLAGS RLANDBIT)
(ACTION SHADOW-ROOMS)
(SOUTH TO SHADOW-7)
(EAST TO SHADOW-2)
(SE TO SHADOW-3)
(SW TO FLATHEAD-OCEAN)
(WEST TO FLATHEAD-OCEAN)
(NE "A stone wall blocks the way.")
(NW "A stone wall blocks the way.")
(DOWN TO FLATHEAD-OCEAN)
(NORTH TO CLIFF)
(GLOBAL RUBBLE STONE-WALL)>
<ROOM FLATHEAD-OCEAN
(IN ROOMS)
(DESC "Flathead Ocean")
(FLAGS RLANDBIT ONBIT)
(NORTH TO CLIFF-BASE)
(ENTER"Between the rocks, wind, and waves, you wouldn't last a minute.")
(WEST "Between the rocks, wind, and waves, you wouldn't last a minute.")
(SW "Between the rocks, wind, and waves, you wouldn't last a minute.")
(NW "Between the rocks, wind, and waves, you wouldn't last a minute.")
(ACTION FLATHEAD-OCEAN-F)
(SE TO SHADOW-6)
(NE TO SHADOW-8)
(EAST TO SHADOW-7)
(SOUTH "The quicksand prevents movement here.")
(PSEUDO "QUICKS" QUICKSAND-PSEUDO "MIST" MIST-PSEUDO)>
<OBJECT SHADOW
(DESC "hooded figure")
(SYNONYM SHADOW FIGURE MAN WOMAN)
(ADJECTIVE HOODED CLOAKED)
(FLAGS ACTORBIT TRANSBIT CONTBIT OPENBIT)
(ACTION SHADOW-F)
(DESCFCN SHADOW-F)>
<OBJECT HOOD
(IN SHADOW)
(DESC "hood")
(SYNONYM HOOD)
(FLAGS NDESCBIT TRYTAKEBIT TAKEBIT WEARBIT)
(ACTION HOOD-F)>
<OBJECT CLOAK
(IN SHADOW)
(DESC "cloak")
(SYNONYM CLOAK)
(FLAGS NDESCBIT TRYTAKEBIT TAKEBIT WEARBIT)
(ACTION CLOAK-F)>
<GLOBAL DIRS
<LTABLE P?NORTH "north" P?SOUTH "south" P?EAST "east" P?WEST "west"
P?NW "northwest" P?NE "northeast" P?SE "southeast"
P?SW "southwest" P?UP "stairs" P?DOWN "stairs">>
<GLOBAL DIR-TBL <TABLE 0 0 0 0 0 0 0 0 0 0 0 0>>
<ROUTINE PICK-DIRECTION (RM "AUX" (NXT 0) (CNT 0) (OFFS 0))
<REPEAT ()
<COND (<==? <SET NXT <NEXTP .RM .NXT>> 0>
<RETURN>)
(<NOT <L? .NXT ,LOW-DIRECTION>>
<COND (<NOT <EQUAL? .NXT ,P?UP ,P?DOWN>>
<SET OFFS <+ .OFFS 1>>
<PUT ,DIR-TBL .OFFS .NXT>
<SET CNT <+ .CNT 1>>)>)>>
<GET ,DIR-TBL <RANDOM .CNT>>>
<ROUTINE SHADOW-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-OBJDESC>
<COND (<NOT ,BLOCKED-DIR>
<SETG BLOCKED-DIR <PICK-DIRECTION ,HERE>>)>
<TELL
"A cloaked and hooded person, carrying a sword not unlike your own,">
<COND (<G? ,S-STRENGTH 3>
<TELL "
is standing blocking the way to the ">
<TELL <LKP ,BLOCKED-DIR ,DIRS> "." CR>)
(T <TELL "
is here." CR>)>
<TELL "The hooded figure" <GET ,SHADOW-DIAG ,S-STRENGTH> CR>)
(<AND <VERB? GIVE> <==? ,PRSI ,SHADOW>>
<TELL
"The hooded figure isn't interested in your gifts." CR>)
(<HELLO? ,SHADOW>
<TELL
"The hooded figure does not respond to your words." CR>)
(<AND <VERB? ATTACK> <==? ,PRSI ,SWORD>>
<COND (<NOT ,SHADOW-POINT-2>
<SETG SCORE <+ ,SCORE 1>>
<SETG SHADOW-POINT-2 T>)>
<SHADOW-ATTACK>)
(<VERB? ATTACK>
<TELL
"The hooded figure ignores your feeble attack." CR>
<SETG ATTACK-MODE T>
<ENABLE <QUEUE I-CURE 10>>
<ENABLE <QUEUE I-SHADOW-REPLY -1>>)>>
<GLOBAL SHADOW-DIAG
<TABLE
"?"
" appears to be badly hurt and defenseless."
" is hurt, and its strength appears to be fading."
" has some wounds and is probably not capable of hindering your movement."
" has a light wound which hasn't affected its seemingly great strength."
" has a great deal of strength, perhaps matching your own.">>
<GLOBAL P-STRENGTH 5>
<GLOBAL S-STRENGTH 5>
<GLOBAL ATTACK-MODE <>>
<GLOBAL SHADOW-GONE <>>
<ROUTINE I-CURE ()
<COND (<NOT <==? ,P-STRENGTH 5>>
<SETG P-STRENGTH <+ ,P-STRENGTH 1>>)>
<COND (<NOT <==? ,S-STRENGTH 5>>
<SETG S-STRENGTH <+ ,S-STRENGTH 1>>)>
<COND (<NOT <==? <+ ,P-STRENGTH ,S-STRENGTH> 10>>
<QUEUE I-CURE 10>)>
<RFALSE>>
<ROUTINE SHADOW-ATTACK ()
<COND (<NOT ,ATTACK-MODE>
<ENABLE <QUEUE I-CURE 10>>
<SETG ATTACK-MODE T>
<ENABLE <QUEUE I-SHADOW-REPLY -1>>)>
<COND (<PROB <+ <* ,P-STRENGTH 10> 10>>
<COND (<PROB 85>
<SETG S-STRENGTH <- ,S-STRENGTH 1>>
<COND (<0? ,S-STRENGTH>
<SHADOW-DIES>
<RTRUE>)>
<TELL <PICK-ONE ,P-HITS> CR>
<TELL "The figure" <GET ,SHADOW-DIAG ,S-STRENGTH> CR>)
(T
<SETG S-STRENGTH <- ,S-STRENGTH 2>>
<COND (<0? ,S-STRENGTH> <SETG S-STRENGTH 1>)
(<L? ,S-STRENGTH 1>
<SHADOW-DIES>
<RTRUE>)>
<TELL
"A sharp thrust and the hooded figure is badly wounded!" CR>
<TELL "The figure" <GET ,SHADOW-DIAG ,S-STRENGTH> CR>)>)
(T
<COND (<L? ,S-STRENGTH 2>
<TELL
"Your opponent blocks your attack with its sword." CR>)
(T <TELL <PICK-ONE ,P-MISSES> CR>)>)>>
<GLOBAL P-HITS <LTABLE 0
"A good parry! Your sword wounds the hooded figure!"
"A quick stroke catches the hooded figure off guard! Blood trickles
down the figure's arm!"
"The hooded figure is hit with a quick slash!">>
<GLOBAL P-MISSES <LTABLE 0
"Your move was not quick enough and misses the mark."
"A quick stroke, but the hooded figure is on guard."
"A good stroke, but it's too slow."
"A good slash, but it misses by a mile."
"You charge, but the hooded figure jumps nimbly aside.">>
<GLOBAL S-HITS <LTABLE 0
"The hooded figure catches you off guard and wounds you!"
"You are wounded by a lightning thrust!"
"Your quick reflexes cannot stop the hooded figure's stroke! You are hit!">>
<ROUTINE I-SHADOW-REPLY ()
<COND (<OR <NOT ,ATTACK-MODE> <NOT <IN? ,SHADOW ,HERE>>>
<QUEUE I-SHADOW-REPLY 0>
<SETG ATTACK-MODE <>>
<RFALSE>)>
<COND (<NOT <IN? ,SWORD ,WINNER>>
<MOVE ,SWORD ,WINNER>
<TELL
"Your sword, glowing wildly, leaps into your hand!" CR>)>
<COND (<AND <PROB <+ <* ,S-STRENGTH 10> 10>> <G? ,S-STRENGTH 1>>
<COND (<PROB 90>
<COND (<L? <SETG P-STRENGTH <- ,P-STRENGTH 1>> 1>
<SETG P-STRENGTH 1>
<TELL
"The hooded figure swings its sword and sends yours flying to the ground.
Although you are defenseless, the figure reaches for your sword and hands it
back to you, nodding grimly." CR>)
(T
<TELL <PICK-ONE ,S-HITS> CR>)>)
(T
<COND (<L? <SETG P-STRENGTH <- ,P-STRENGTH 2>> 1>
<JIGS-UP
"In your wounded state, you cannot defend yourself against your still-quick
opponent. Slowly and carefully, the figure starts to remove its hood as you
fall to the ground, dead.">)
(T
<TELL
"A brilliant feint puts you off guard, and the hooded figure slips its
sword between your ribs. You are hurt very badly." CR>)>)>)
(<L? ,S-STRENGTH 3>
<TELL
"The hooded figure attempts a thrust, but its weakened state prevents
hitting you." CR>)
(T
<TELL <PICK-ONE ,S-MISSES> CR>)>>
<GLOBAL S-MISSES <LTABLE 0
"The hooded figure stabs nonchalantly with its sword and misses."
"You dodge as the hooded figure comes in low."
"The hooded figure tries to sneak past your guard, but you twist away."
"The hooded figure thrusts, but you fight back and send it
flying to the ground!">>
<ROUTINE SHADOW-DIES ()
<TELL
"The hooded figure, fatally wounded, slumps to the ground. It gazes up at
you once, and you catch a brief glimpse of deep and sorrowful eyes. Before
you can react, the figure vanishes in a cloud of fetid vapor." CR>
<REMOVE ,SHADOW>
<SETG SHADOW-GONE T>
<SETG BLOCKED-DIR <>>>
<ROUTINE HOOD-F ()
<COND (<AND <VERB? LOOK-UNDER> <IN? ,HOOD ,SHADOW>>
<TELL
"The figure's hood casts a dark shadow over its face. There is no way from
where you stand to look beneath it." CR>)
(<AND <VERB? TAKE PUT> <IN? ,HOOD ,SHADOW>>
<COND (<==? ,S-STRENGTH 1>
<TELL
"You slowly remove the hood from your badly wounded opponent and recoil
in horror at the sight of your own face, weary and wounded. A faint
smile comes to the lips and then the face starts to change, very slowly,
into that of an old, wizened person. The image fades and with it the body
of your hooded opponent. The cloak remains on the ground." CR>
<REMOVE ,SHADOW>
<SETG SHADOW-GONE T>
<MOVE ,HOOD ,WINNER>
<FCLEAR ,HOOD ,NDESCBIT>
<MOVE ,CLOAK ,HERE>
<FCLEAR ,CLOAK ,NDESCBIT>)
(<==? ,S-STRENGTH 2>
<TELL
"The hooded figure, though recovering from wounds, is strong enough to
force you back." CR>)
(T
<TELL
"You cannot get close enough to the hooded figure to remove the hood." CR>)>)>>
<ROUTINE CLOAK-F ()
<COND (<AND <VERB? LOOK-UNDER> <IN? ,CLOAK ,SHADOW>>
<TELL
"You cannot get close enough to look underneath the cloak." CR>)
(<AND <VERB? TAKE> <IN? ,CLOAK ,SHADOW>>
<TELL
"The cloak is fastened around the neck of the hooded figure. It would be
difficult to remove." CR>)>>
<GLOBAL BLOCKED-DIR <>>
<ROUTINE SHADOW-ROOMS (RARG)
<COND (<AND <==? .RARG ,M-BEG>
<VERB? WALK>
<==? ,PRSO ,BLOCKED-DIR>>
<TELL "Your way is blocked by the hooded figure." CR>)
(<==? .RARG ,M-END>
<COND (<NOT <IN? ,SHADOW ,HERE>>
<SETG BLOCKED-DIR <>>
<REMOVE ,SHADOW>)>
<COND (,SHADOW-GONE <RFALSE>)
(<IN? ,SHADOW ,HERE>
<COND (<AND <PROB 30> <NOT ,ATTACK-MODE>>
<SETG ATTACK-MODE T>
<ENABLE <QUEUE I-CURE 10>>
<ENABLE <QUEUE I-SHADOW-REPLY -1>>)>)
(<PROB 30>
<TELL
"You can hear quiet footsteps nearby." CR>)
(<AND <PROB 30> ,LIT <G? ,S-STRENGTH 3>>
<SETG BLOCKED-DIR <PICK-DIRECTION ,HERE>>
<TELL
"Through the shadows, a cloaked and hooded figure appears before you,
blocking the ">
<TELL <LKP ,BLOCKED-DIR ,DIRS>
"ern exit from the room and carrying a
brightly glowing sword." CR>
<SHADOW-ARRIVAL>
<RTRUE>)>)>>
<ROUTINE SHADOW-ARRIVAL ()
<MOVE ,SHADOW ,HERE>
<COND (<NOT ,SHADOW-POINT-1>
<SETG SCORE <+ ,SCORE 1>>
<SETG SHADOW-POINT-1 T>)>
<COND (<NOT <IN? ,SWORD ,WINNER>>
<MOVE ,SWORD ,WINNER>
<COND (,SWORD-IN-STONE?
<TELL
"From nowhere, the sword from the junction appears in your hand, wildly
glowing!" CR>)
(T
<TELL
"Your sword, glowing wildly, appears in your hand!" CR>)>
<SETG SWORD-IN-STONE? <>>)>>
<GLOBAL SHADOW-POINT-1 <>>
<GLOBAL SHADOW-POINT-2 <>>
<ROUTINE CREEPY-CRAWL-F (RARG)
<COND (<==? .RARG ,M-END>
<SETG BLOCKED-DIR <>>
<RTRUE>)>>
;" Cooperative Problem"
<ROOM ZORK2-STAIR
(IN ROOMS)
(DESC "Endless Stair")
(LDESC
"You are at the bottom of a seemingly endless stair, winding its way
upward beyond your vision. An eerie light, coming from all around you,
casts strange shadows on the walls. To the south is a dark and winding
trail.")
(FLAGS ONBIT RLANDBIT)
(NORTH "The stairs are endless.")
(UP "The stairs are endless.")
(SOUTH TO JUNCTION)
(GLOBAL STAIRS)>
<ROOM JUNCTION
(IN ROOMS)
(DESC "Junction")
(LDESC
"You are at the junction of a north-south passage and an east-west
passage. To the north, you can make out the bottom of a stairway. The
ways to the east and south are relatively cramped, but a wider trail
leads to the west.")
(FLAGS RLANDBIT)
(WEST TO CLEARING)
(NORTH TO ZORK2-STAIR)
(SOUTH TO CREEPY-CRAWL)
(EAST TO DAMP-PASSAGE)>
<ROOM CLEARING
(IN ROOMS)
(DESC "Barren Area")
(LDESC
"You are west of the junction, where the rock-bound passage widens out
into a large, flat area. Although the land here is barren, you can see
vegetation to the west. South of here is a mighty wall of stone, ancient
and crumbling. To the southwest the wall has decayed enough to form an
opening, through which seeps a thin mist. A trail dips sharply into
rocky terrain to the northwest.")
(FLAGS RLANDBIT)
(SW TO SHADOW-2)
(NW TO SLOPE)
(SOUTH "A stone wall blocks your way.")
(SE "A stone wall blocks your way.")
(WEST TO CLIFF)
(EAST TO JUNCTION)
(GLOBAL RUBBLE STONE-WALL)
(PSEUDO "MIST" MIST-PSEUDO)>
<ROOM SLOPE
(IN ROOMS)
(DESC "Hairpin Loop")
(LDESC
"You are at a sharp turn on a narrow and steeply sloping path, strewn
with boulders of various sizes. The path climbs sharply toward a
desolate plain to the southeast. Southwest of here the path winds down
to the base of a cliff.")
(SE TO CLEARING)
(UP TO CLEARING)
(SW TO CLIFF-BASE)
(DOWN TO CLIFF-BASE)
(GLOBAL RUBBLE)
(FLAGS RLANDBIT)>
<ROOM CLIFF-BASE
(IN ROOMS)
(DESC "Cliff Base")
(LDESC
"You are at the base of a steep cliff. Directly above you is a wide
ledge and far above that some natural sunlight can be seen. To the
northeast is a steeply climbing path and the ground becomes sandy toward
the south.")
(FLAGS ONBIT RLANDBIT)
(UP "You can't get up the rock face.")
(SOUTH TO FLATHEAD-OCEAN)
(NE TO SLOPE)
(ACTION CLIFF-BASE-F)
(GLOBAL LEDGE)>
<ROOM CLIFF
(IN ROOMS)
(DESC "Cliff")
(FLAGS ONBIT RLANDBIT)
(DOWN TO CLIFF-LEDGE IF ROPE-FLAG ELSE "The drop would kill you.")
(UP "There's no tree here suitable for climbing.")
(SW TO SHADOW-8)
(EAST TO CLEARING)
(ACTION CLIFF-F)
(GLOBAL GLOBAL-MAN RUBBLE STONE-WALL CLIFF-OBJECT)
(PSEUDO "MIST" MIST-PSEUDO)>
<ROOM CLIFF-LEDGE
(IN ROOMS)
(DESC "Cliff Ledge")
(FLAGS ONBIT RLANDBIT)
(UP "You attempt the climb but slide back down.")
(DOWN TO CLIFF-BASE)
(ACTION CLIFF-LEDGE-F)
(GLOBAL RUBBLE GLOBAL-ROPE GLOBAL-MAN LEDGE CLIFF-OBJECT)>
<ROOM FOGGY-ROOM
(IN ROOMS)
(DESC "Foggy Room")
(LDESC
"You are in a dank passage filled with a wispy fog. A spooky passageway
leads north and a wider path heads off to the south. To the west, the
path leaves the rock and enters an eerie, shadowy land.")
(NORTH TO CREEPY-CRAWL)
(SOUTH TO LAKE-SHORE)
(WEST TO SHADOW-1)
(FLAGS RLANDBIT)>
<ROOM LAKE-SHORE
(IN ROOMS)
(DESC "Lake Shore")
(LDESC
"You are in a wide cavern on the north shore of a small lake. Some
polished stone steps lead to the southeast and a sheer rock face
prevents any movement around the lake to the southwest. The cavern is
dimly lit from above.")
(SE TO AQ-VIEW)
(DOWN TO AQ-VIEW)
(SOUTH "If you really want to enter the lake, you should say so.")
(SW "The sheer rock face prevents movement along the lake shore.")
(NORTH TO FOGGY-ROOM)
(FLAGS ONBIT RLANDBIT)
(GLOBAL LAKE STAIRS)
(PSEUDO "SHORE" SHORE-PSEUDO "BEACH" SHORE-PSEUDO)>
<ROOM AQ-VIEW
(IN ROOMS)
(DESC "Aqueduct View")
(LDESC
"This is a small balcony carved into a near-vertical cliff. To the east,
stretching from north to south, stands a monumental aqueduct supported by
mighty stone pillars, some of which are starting to crumble from age. You
feel a sense of loss and sadness as you ponder this once-proud structure and
the failure of the Empire which created this and other engineering marvels.
Some stone steps lead up to the northwest.")
(NW TO LAKE-SHORE)
(UP TO LAKE-SHORE)
(DOWN "The drop would be fatal.")
(FLAGS RLANDBIT ONBIT)
(GLOBAL AQUEDUCT STAIRS)>
<ROOM ON-LAKE
(IN ROOMS)
(DESC "On the Lake")
(LDESC
"You are floating on the surface of the lake. The water is ice cold and
your ability to survive here for long is very questionable. A swim north
puts you at your starting point. Conditions to the east are poor where
the lake turns into swamp. The west and south shores are suitable for
walking, however.")
(NORTH TO LAKE-SHORE)
(SOUTH TO SOUTH-SHORE)
(PSEUDO "SWAMP" SWAMP-PSEUDO)
(SE "The swamp is impassable.")
(EAST "The swamp is impassable.")
(NE "The swamp is impassable.")
(WEST TO FAR-SHORE)
(NW TO FAR-SHORE)
(SW TO SOUTH-SHORE)
(DOWN TO IN-LAKE)
(FLAGS RLANDBIT NONLANDBIT ONBIT)
(ACTION ON-LAKE-F)
(GLOBAL LAKE FISH)>
<ROOM IN-LAKE
(IN ROOMS)
(DESC "Underwater")
(LDESC
"You are below the surface of the lake. It turns out that the lake is quite
shallow and the bottom is only a few feet below you. Considering the frigid
temperature of the water, you should probably not plan an extended stay.
The lake bottom is sandy and a few hearty plants and algae live there.")
(UP TO ON-LAKE)
(DOWN "You are already at the bottom of the lake.")
(NORTH TO IN-LAKE)
(SOUTH TO IN-LAKE)
(EAST TO IN-LAKE)
(WEST TO IN-LAKE)
(NE TO IN-LAKE)
(NW TO IN-LAKE)
(SE TO IN-LAKE)
(SW TO IN-LAKE)
(FLAGS RLANDBIT NONLANDBIT ONBIT)
(ACTION IN-LAKE-F)
(GLOBAL LAKE FISH)>
<ROOM FAR-SHORE
(IN ROOMS)
(DESC "Western Shore")
(LDESC
"You are on the western shore of the lake. The ground here is quite
hard, but a few sickly reeds manage to grow near the water's edge. The
only path leads into the rock to the south.")
(EAST "If you want to enter the lake, you should say so.")
(SOUTH TO VIEW-ROOM)
(FLAGS RLANDBIT ONBIT)
(GLOBAL LAKE)
(PSEUDO "SHORE" SHORE-PSEUDO "BEACH" SHORE-PSEUDO)>
<OBJECT REEDS
(IN FAR-SHORE)
(SYNONYM REEDS)
(ADJECTIVE SICKLY)
(DESC "reeds")
(FLAGS NDESCBIT)>
<ROOM VIEW-ROOM
(IN ROOMS)
(DESC "Scenic Vista")
(LDESC "")
(FLAGS ONBIT RLANDBIT)
(NORTH TO FAR-SHORE)
(ACTION VIEW-ROOM-F)>
<OBJECT VIEWING-TABLE
(IN VIEW-ROOM)
(DESC "viewing table")
(SYNONYM TABLE SURFACE)
(ADJECTIVE VIEWING)
(FLAGS NDESCBIT)
(ACTION VIEWING-TABLE-F)>
<OBJECT TORCH
(IN VIEW-ROOM)
(DESC "torch")
(FDESC
"Mounted on one wall is a flaming torch, which fills the room with a flickering
light.")
(SYNONYM TORCH)
(FLAGS LIGHTBIT TAKEBIT ONBIT FLAMEBIT)
(ACTION TORCH-F)>
<OBJECT FRIED-TORCH
(DESC "burned-out torch")
(SYNONYM TORCH)
(ADJECTIVE BURNED DEAD)
(FLAGS TAKEBIT)
(ACTION FRIED-TORCH-F)>
<OBJECT CLIFF-OBJECT
(IN LOCAL-GLOBALS)
(DESC "cliff")
(SYNONYM CLIFF)
(ACTION CLIFF-OBJECT-F)>
<OBJECT STONE-WALL
(IN LOCAL-GLOBALS)
(DESC "stone wall")
(SYNONYM WALL)
(ADJECTIVE STONE MASSIVE)
(FLAGS NDESCBIT)>
<OBJECT LAKE
(IN LOCAL-GLOBALS)
(DESC "lake")
(SYNONYM LAKE WATER SURFACE)
(ACTION LAKE-F)>
<OBJECT AMULET
(DESC "golden amulet")
(SYNONYM AMULET OBJECT)
(ADJECTIVE GOLD GOLDEN SHINY)
(FLAGS TAKEBIT WEARBIT NDESCBIT)>
<OBJECT SAND
(IN IN-LAKE)
(DESC "sand")
(SYNONYM SAND FLOOR BOTTOM)
(FLAGS NDESCBIT)
(ACTION SAND-F)>
<OBJECT FRIED-LAMP
(DESC "lamp")
(SYNONYM LAMP LANTERN)
(ADJECTIVE BRASS)
(FLAGS TAKEBIT)
(SIZE 10)
(ACTION FRIED-LAMP-F)>
<OBJECT ALGAE
(IN IN-LAKE)
(DESC "plants and algae")
(SYNONYM PLANT PLANTS ALGAE)
(FLAGS NDESCBIT)
(ACTION ALGAE-F)>
<OBJECT SHINY-OBJECT
(IN IN-LAKE)
(DESC "shiny object")
(SYNONYM OBJECT AMULET)
(ADJECTIVE SHINY)
(FLAGS TRYTAKEBIT NDESCBIT)
(ACTION SHINY-OBJECT-F)>
<OBJECT LEDGE
(IN LOCAL-GLOBALS)
(DESC "ledge")
(SYNONYM LEDGE)
(ADJECTIVE WIDE)
(FLAGS NDESCBIT)
(ACTION LEDGE-F)>
<ROUTINE LEDGE-F ()
<COND (<AND <==? ,HERE ,CLIFF-LEDGE>
<VERB? THROW-OFF>
<==? ,PRSI ,LEDGE>>
<COND (<NOT <IN? ,PRSO ,WINNER>>
<TELL "You're not holding that!" CR>
<RTRUE>)>
<MOVE ,PRSO ,CLIFF-BASE>
<TELL
"The " D ,PRSO " falls to the base of the cliff below." CR>)>>
<OBJECT WAYBREAD
(IN CLIFF)
(DESC "piece of waybread")
(LDESC "A piece of bread is on the ground here.")
(FDESC
"It seems as if somebody has been here recently, as there is some fresh
bread lying beneath one of the other trees.")
(SYNONYM BREAD WAYBREAD PIECE)
(ADJECTIVE WAY FRESH)
(FLAGS TAKEBIT FOODBIT)
(SIZE 3)
(ACTION WAYBREAD-F)>
<ROUTINE WAYBREAD-F ()
<COND (<AND <VERB? CUT> <==? ,PRSI ,SWORD>>
<TELL
"The bread is crushed rather than cut by your sword, and the crumbs scatter to
the wind." CR>
<REMOVE ,WAYBREAD>)>>
<OBJECT ROPE
(IN CLIFF)
(DESC "rope")
(SYNONYM ROPE)
(ADJECTIVE LONG)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION ROPE-F)>
<OBJECT GLOBAL-ROPE
(IN LOCAL-GLOBALS)
(DESC "rope")
(SYNONYM ROPE)
(ADJECTIVE DANGLING)
(ACTION GLOBAL-ROPE-F)>
<OBJECT TREE
(IN CLIFF)
(DESC "tree")
(SYNONYM TREE TREES)
(ADJECTIVE LARGE TALL)
(FLAGS NDESCBIT)
(ACTION TREE-F)>
<OBJECT STAFF
(DESC "wooden staff")
(SYNONYM STAFF)
(ADJECTIVE WOODEN)
(FLAGS TAKEBIT)
(SIZE 10)
(ACTION STAFF-F)>
<OBJECT BROKEN-STAFF
(DESC "broken staff")
(SYNONYM STAFF)
(ADJECTIVE BROKEN)
(FLAGS TAKEBIT)
(SIZE 10)
(ACTION STAFF-F)>
<ROUTINE STAFF-F ()
<COND (<AND <VERB? BURN> <==? ,PRSI ,TORCH>>
<REMOVE ,PRSO>
<JIGS-UP
"The staff is instantly consumed in a ball of flame. You along with it.">)>>
<OBJECT CHEST
(IN CLIFF-LEDGE)
(DESC "chest")
(FDESC
"A large chest, closed and locked, is lying among the boulders.")
(SYNONYM CHEST)
(ADJECTIVE LOCKED)
(FLAGS TAKEBIT CONTBIT)
(SIZE 40)
(CAPACITY 20)
(ACTION CHEST-F)>
<OBJECT GLOBAL-MAN
(IN LOCAL-GLOBALS)
(DESC "man")
(SYNONYM MAN FRIEND)
(FLAGS ACTORBIT)
(ACTION GLOBAL-MAN-F)>
<OBJECT VALUABLES
(IN MAN)
(DESC "pile of assorted valuables")
(SYNONYM VALUABLES TREASURE PILE)
(ADJECTIVE ASSORTED)
(FLAGS NDESCBIT TAKEBIT)
(ACTION VALUABLES-F)>
<OBJECT MAN
(SYNONYM MAN FRIEND)
(DESC "man")
(FLAGS ACTORBIT OPENBIT CONTBIT)
(ACTION MAN-F)>
<GLOBAL CHEST-LIFTED <>>
<ROUTINE I-MAN-APPEARS ()
<COND (<OR <NOT <==? ,HERE ,CLIFF-LEDGE>>
<NOT <EQUAL? <LOC ,CHEST> ,CLIFF-LEDGE ,WINNER>>>
<RFALSE>)
(,CHEST-TIED
<SETG MAN-SEEN T>
<TELL
"All at once, the chest is lifted from you. Looking up, you see a
man at the top of the cliff, pulling intently at the rope. \"That is
uncommonly good of you, I do say!\" He chuckles unpleasantly. \"Oh,
you are stuck, aren't you. Well, I'll be right back to get you!\"
He leaves your sight." CR>
<SETG CHEST-LIFTED T>
<MOVE ,CHEST ,MAN>
<FSET ,CHEST ,TOUCHBIT>
<SETG ROPE-FLAG <>>
<SETG CHEST-TIED <>>
<ENABLE <QUEUE I-MAN-RETURNS 10>>
<RTRUE>)
(T
<TELL
"At the edge of the cliff above you, a man appears. He looks down at
you and speaks. \"Hello, down there! You seem to have a problem. Maybe I
can help you.\" He chuckles in an unsettling sort of way. \"Perhaps if you
tied that chest to the end of the rope I might be able to drag it up for you.
Then, I'll be more than happy to help you up!\" He laughs again." CR>
<SETG MAN-FLAG T>
<SETG MAN-SEEN T>
<ENABLE <QUEUE I-MAN-PRESENT -1>>)>>
<GLOBAL MAN-SEEN <>>
<ROUTINE I-MAN-PRESENT ()
<COND (<OR <NOT <==? ,HERE ,CLIFF-LEDGE>>
<NOT ,MAN-FLAG>
<IN? ,CHEST ,MAN>>
<QUEUE I-MAN-PRESENT 0>
<SETG MAN-FLAG <>>
<RFALSE>)
(<G? <SETG MAN-WAITING <+ ,MAN-WAITING 1>> 10>
<TELL
"The man looks quite displeased. \"All right, then. I guess someone else
can always help me! See you around, sport!\" He disappears." CR>
<QUEUE I-MAN-PRESENT 0>
<SETG MAN-FLAG <>>
<RTRUE>)
(T <TELL <PICK-ONE ,MAN-WAITS> CR>)>>
<ROUTINE CLIFF-BASE-F (RARG)
<COND (<AND <==? .RARG ,M-ENTER>
,CHEST-TIED>
<SETG CHEST-TIED <>>
<SETG ROPE-FLAG <>>
<QUEUE I-MAN-APPEARS 0>)>>
<GLOBAL MAN-WAITS <LTABLE 0
"The man appears to be getting somewhat impatient."
"Your friend at the cliff top has started pacing nervously around."
"\"Yoo hoo!\" calls the man at the brink of the cliff. \"Remember me?\""
"The man on the cliff waves at you. \"It would just take a moment to tie that
rope to the chest. I'd be much obliged, and there might even be something in
it for you!\""
"A few small stones fall near your feet. You look up and see your friend
waving. \"I haven't got all day, fella. Be a pal and pass up the chest!\""
"The man on the cliff clears his throat loudly. \"I don't mean to be rushing
you, but I do have some pressing engagements....\"">>
<GLOBAL MAN-WAITING 0>
<GLOBAL MAN-FLAG <>>
<GLOBAL MAN-POINT <>>
<GLOBAL MAN-GONE <>>
<ROUTINE CLIFF-LEDGE-F (RARG)
<COND (<AND <==? .RARG ,M-BEG>
<VERB? WALK>
<IN? ,CHEST ,WINNER>
,CHEST-TIED>
<TELL
"You can't go anywhere holding that chest. The rope is tied around it!" CR>)
(<AND <==? .RARG ,M-ENTER>
<NOT ,MAN-SEEN>
<NOT ,MAN-FLAG>
<NOT ,MAN-GONE>>
<COND (<NOT ,MAN-POINT>
<SETG SCORE <+ ,SCORE 1>>
<SETG MAN-POINT T>)>
<ENABLE <QUEUE I-MAN-APPEARS 5>>)
(<==? .RARG ,M-LOOK>
<TELL
"This is a rock-strewn ledge near the base of a tall cliff. The bottom of the
cliff is another fifteen feet below. You have little hope of climbing up the
cliff face, but you might be able to scramble down from here (though it's
doubtful you could return)." CR>
<COND (,ROPE-FLAG
<TELL
"A long piece of rope is dangling down from the top of the cliff and
is within your reach." CR>)>
<RTRUE>)>>
<ROUTINE CLIFF-F (RARG)
<COND (<AND <==? .RARG ,M-ENTER> <IN? ,CHEST ,MAN>>
<QUEUE I-MAN-RETURNS 0>
<MOVE ,CHEST ,HERE>
<FSET ,CHEST ,OPENBIT>
<SETG ROPE-FLAG T>
<SETG CHEST-TIED <>>
<SETG CHEST-OPENED T>
<RFALSE>)
(<==? .RARG ,M-LOOK>
<TELL
"This is a remarkable spot in the dungeon. Perhaps two hundred feet above
you is a gaping hole in the earth's surface through which pours bright
sunshine! A few seedlings from the world above, nurtured by the sunlight
and occasional rains, have grown into giant trees, making this a virtual oasis
in the desert of the Underground Empire. To the west is a sheer precipice,
dropping nearly fifty feet to jagged rocks below. The way south is barred by
a forbidding stone wall, crumbling from age. There is a jagged opening in the
wall to the southwest, through which leaks a fine mist. The land to the east
looks lifeless and barren." CR>
<COND (,ROPE-FLAG
<TELL
"A rope is tied to one of the large trees here and is dangling over
the side of the cliff, reaching down to the shelf below." CR>)>
<RTRUE>)
(<AND <==? .RARG ,M-END>
<PROB 15>
<NOT <FSET? ,CLIFF-LEDGE ,TOUCHBIT>>>
<TELL
"You catch, out of the corner of your eye, some movement among the
trees." CR>)
(<AND <==? .RARG ,M-END>
<PROB 20>>
<TELL
"You seem to hear, from the southwest, the sounds of the sea." CR>)>>
<ROUTINE GLOBAL-ROPE-F ()
<COND (<NOT ,ROPE-FLAG>
<TELL "You can't see any rope here." CR>)
(<VERB? CLIMB-FOO>
<V-CLIMB-UP ,P?DOWN T>)
(<VERB? TAKE MOVE CLIMB-ON>
<COND (<NOT ,MAN-FLAG>
<TELL
"A short tug on the rope convinces you that it is securely fastened
from above." CR>)
(<IN? ,CHEST ,MAN>
<SETG HOLDING-ROPE T>
<TELL
"You grab securely on to the rope." CR>)
(T
<TELL
"The man scowls. \"I may help you up, but not before I have that chest.\" He
points to the chest near you on the ledge." CR>)>)
(<VERB? CLIMB-UP>
<TELL
"You try to climb the rope, but you cannot reach the top even with your best
effort." CR>)
(<VERB? TIE>
<COND (<EQUAL? ,CHEST ,PRSO ,PRSI>
<TELL
"The chest is now tied to the rope." CR>
<SETG CHEST-TIED T>
<COND (<AND ,MAN-FLAG <NOT ,MAN-GONE>>
<TELL
"The man above you looks pleased. \"Now there's a good friend! Thank
you very much, indeed!\" He pulls on the rope and the chest is lifted
to the top of the cliff and out of sight. With a short laugh, he
disappears. \"I'll be back in a short while!\" are his last words." CR>
<MOVE ,CHEST ,MAN>
<FSET ,CHEST ,TOUCHBIT>
<SETG CHEST-TIED <>>
<SETG ROPE-FLAG <>>
<ENABLE <QUEUE I-MAN-RETURNS 10>>
<SETG MAN-FLAG <>>
<RTRUE>)>
<RTRUE>)
(<EQUAL? ,ME ,PRSI ,PRSO>
<COND (<AND ,MAN-FLAG <IN? ,CHEST ,MAN>>
<TELL
"\"Just grab onto it!\", the man bellows." CR>)
(,MAN-FLAG
<TELL
"The man looks cross. \"I want the chest, not you!\" he snaps. \"Now stop
fooling around and pass it up!\"" CR>)
(T
<TELL
"You're unable to tie the rope around yourself." CR>)>)
(T
<TELL
"You're unable to tie the rope to that." CR>)>)
(<VERB? UNTIE>
<COND (,CHEST-TIED
<SETG CHEST-TIED <>>
<TELL
"The chest is now disconnected from the rope." CR>)
(T
<TELL
"The rope isn't tied to anything." CR>)>)>>
<GLOBAL CHEST-TIED <>>
<GLOBAL HOLDING-ROPE <>>
<ROUTINE I-MAN-RETURNS ()
<SETG ROPE-FLAG T>
<COND (<==? ,HERE ,CLIFF-LEDGE>
<TELL
"A familiar voice calls down to you. \"Are you still there?\" he bellows with a
coarse laugh. \"Well, then, grab onto the rope and we'll see what we can do.\"
The rope drops to within your reach." CR>
<SETG MAN-FLAG T>
<ENABLE <QUEUE I-MAN-LIFT -1>>
<RTRUE>)>>
<GLOBAL LIFT-WAIT 0>
<ROUTINE I-MAN-LIFT ()
<COND (<NOT <==? ,HERE ,CLIFF-LEDGE>>
<QUEUE I-MAN-LIFT 0>
<MOVE ,CHEST ,CLIFF>
<FSET ,CHEST ,OPENBIT>
<SETG CHEST-OPENED T>
<REMOVE ,MAN>
<RFALSE>)
(,HOLDING-ROPE
<TELL
"The man starts to heave on the rope and within a few moments you arrive at
the top of the cliff. The man removes the last few valuables from the chest
and prepares to leave. \"You've been a good sport! Here, take this, for
whatever good it is! I can't see that I'll be needing one!\" He hands you a
plain wooden staff from the bottom of the chest and begins examining his
valuables." CR>
<QUEUE I-MAN-LIFT 0>
<MOVE ,STAFF ,WINNER>
<SETG HOLDING-ROPE <>>
<SETG ROPE-FLAG T>
<MOVE ,WINNER ,CLIFF>
<MOVE ,CHEST ,CLIFF>
<FSET ,CHEST ,OPENBIT>
<TELL
"The chest, open and empty, is at your feet." CR>
<SETG CHEST-OPENED T>
<MOVE ,MAN ,CLIFF>
<ENABLE <QUEUE I-MAN-LEAVES -1>>
<RTRUE>)
(<G? <SETG LIFT-WAIT <+ ,LIFT-WAIT 1>> 4>
<TELL
"\"Well, I don't have all day. See you around sometime.\" Showering you with
gravel, he disappears from sight." CR>
<SETG MAN-FLAG <>>
<MOVE ,CHEST ,CLIFF>
<FSET ,CHEST ,OPENBIT>
<SETG CHEST-OPENED T>
<QUEUE I-MAN-LIFT 0>)
(T
<TELL
"The man appears impatient. \"Are you coming up then, or not?\"" CR>)>>
<GLOBAL CHEST-OPENED <>>
<ROUTINE CHEST-F ()
<COND (,CHEST-OPENED
<COND (<AND <VERB? TIE> <==? ,ROPE ,PRSO ,PRSI>>
<TELL "What's the point?" CR>)
(<AND <VERB? PUT> <EQUAL? ,PRSO ,STAFF ,LAMP ,TORCH>>
<TELL "It doesn't fit.">
<COND (<EQUAL? ,PRSO ,STAFF>
<TELL
" Awfully peculiar, though, since it's where the staff came from.">)>
<CRLF>)
(T <RFALSE>)>)
(<VERB? OPEN UNLOCK>
<COND (,MAN-FLAG
<TELL
"The man calls down to you. \"Is this what you're looking for?\" he cackles,
waving a small key over his head. You try to open the chest, but it is
locked." CR>)
(T
<TELL
"The chest is locked and cannot be opened." CR>)>)>>
<GLOBAL ROPE-FLAG T>
<ROUTINE I-MAN-LEAVES ()
<COND (<NOT <==? ,HERE ,CLIFF>>
<REMOVE ,MAN>
<SETG MAN-GONE T>
<SETG MAN-FLAG <>>
<SETG ROPE-FLAG T>
<QUEUE I-MAN-LEAVES 0>
<RFALSE>)
(<PROB 40>
<TELL
"Your \"friend\", moving quickly, dodges behind some trees and is lost from
sight." CR>
<REMOVE ,MAN>
<SETG MAN-FLAG <>>
<SETG MAN-GONE T>
<SETG ROPE-FLAG T>
<QUEUE I-MAN-LEAVES 0>
<RTRUE>)
(T
<TELL
"Your \"friend\" examines his valuables with great pride." CR>)>>
<ROUTINE MAN-F ()
<COND (<VERB? HELLO>
<TELL
"He responds cheerfully. \"It is a wonderful day, isn't it?\"" CR>)
(<HELLO? ,MAN>
<TELL
"The man is thoroughly engrossed in the examination of his booty and
doesn't seem to hear you." CR>)
(<VERB? EXAMINE>
<TELL
"The man is stocky and of medium height, with several days' growth of stubble
on his face. He is carrying a number of valuables under his arm, presumably
from the now-open chest." CR>)
(<VERB? ATTACK>
<COND (<==? ,PRSI ,SWORD>
<TELL
"The man is taken by surprise and is hit with the sword. He grabs you
and throws you to the ground">
<COND (<EQUAL? <LOC ,STAFF> ,WINNER ,HERE>
<TELL ", breaking the staff in the process">
<REMOVE ,STAFF>
<MOVE ,BROKEN-STAFF ,HERE>)>
<TELL ", but you
finish him off with a quick thrust to the chest. He dies, and disappears
without ceremony in the usual style of the Great Underground Empire.
His assorted valuables remain behind." CR>
<REMOVE ,MAN>
<MOVE ,VALUABLES ,HERE>
<FCLEAR ,VALUABLES ,NDESCBIT>
<QUEUE I-MAN-LEAVES 0>
<SETG MAN-GONE T>)
(T <TELL "You wouldn't hurt him with that!" CR>)>)>>
<ROUTINE VALUABLES-F ()
<COND (<AND <VERB? TAKE PUT MOVE> <IN? ,MAN ,CLIFF>>
<TELL
"The man recoils sharply. \"These here things are mine. It's my chest and
they're my valuables. You've a lot of nerve trying to take them from me
after me saving you like that!\"" CR>)
(<AND ,MAN-GONE <IN? ,VALUABLES ,MAN>>
<TELL
"What valuables?" CR>)>>
<ROUTINE ROPE-F ()
<COND (<VERB? TAKE MOVE>
<COND (,ROPE-FLAG
<TELL
"The rope is tied to a tree." CR>)>)
(<VERB? CLIMB-FOO>
<V-CLIMB-UP ,P?DOWN T>)
(<VERB? BURN>
<TELL
"The rope won't catch fire." CR>)
(<VERB? UNTIE>
<TELL
"The rope is very securely tied and cannot be undone." CR>)
(<AND <VERB? CUT> <==? ,PRSI ,SWORD>>
<TELL
"The rope is made of pretty tough stuff and won't cut." CR>)>>
<ROUTINE GLOBAL-MAN-F ()
<COND (<==? ,HERE ,CLIFF>
<COND (,MAN-GONE
<TELL
"You've lost him among the trees." CR>)
(T
<TELL
"You can't see any man here." CR>)>)
(<NOT ,MAN-FLAG>
<TELL
"You can't see any man here." CR>)
(<VERB? GIVE>
<TELL
"You aren't even close to him!" CR>)
(<VERB? HELLO>
<TELL
"The man waves back in a friendly way." CR>)
(<HELLO? ,GLOBAL-MAN>
<TELL
"He yells back, \"What's that you say? I can't hear you very well.">
<COND (<NOT ,CHEST-LIFTED>
<TELL
" Just tie the rope to the chest and we can chat afterwards!\" He smiles
broadly.">)
(T <TELL "\"">)>
<CRLF>)
(<VERB? ATTACK MUNG>
<TELL
"It's unlikely you'll succeed at this distance." CR>)
(<AND <VERB? THROW> <==? ,PRSI ,GLOBAL-MAN> <IN? ,PRSO ,WINNER>>
<TELL
"The " D ,PRSO " flies upward, but not nearly far enough to hit the man. It
does seem to amuse him, however, especially as it passes within inches of
your head. \"We're wasting time now. Be a good fellow and tie the rope!\"" CR>
<MOVE ,PRSO ,HERE>)>>
<ROUTINE LAKE-F ()
<COND (<VERB? THROUGH LEAP BOARD>
<COND (<EQUAL? ,HERE ,LAKE-SHORE ,FAR-SHORE ,SOUTH-SHORE>
<GO-ON-LAKE>)
(<==? ,HERE ,ON-LAKE>
<GOTO ,IN-LAKE>)
(T
<TELL "Just where do you think you are?" CR>)>)
(<VERB? LOOK-UNDER>
<COND (<==? ,HERE ,ON-LAKE>
<TELL
"You can't quite make out the bottom of the lake from here..." CR>)
(T <TELL
"You can't see under the surface from here." CR>)>)>>
<ROUTINE IN-LAKE-F (RARG)
<COND (<==? .RARG ,M-ENTER>
<ENABLE <QUEUE I-IN-LAKE 3>>)
(<AND <==? .RARG ,M-BEG>
<VERB? TAKE>
<NOT <EQUAL? ,PRSO ,SHINY-OBJECT>>>
<COND (<G? <WEIGHT ,WINNER> 25>
<TELL "You can't carry that much underwater." CR>)
(<NOT <FSET? ,PRSO ,TAKEBIT>>
<TELL "You can't take that!" CR>)
(<PROB 30>
<TELL "The " D ,PRSO
" is yours for a moment, but drops from your grasp." CR>)>)
(<==? .RARG ,M-END>
<COND (<PROB 10>
<TELL
"A large and hungry-looking fish is swimming in the neighborhood." CR>)
(<AND <PROB 4> <NOT ,INVIS>>
<QUEUE I-ROC 0>
<QUEUE I-ON-LAKE 0>
<JIGS-UP
"Oh, no! A tremendous fish just swallowed you whole!">)
(<IN? ,SHINY-OBJECT ,HERE>
<COND (<==? ,MOVES ,LAST-MOVES> <RTRUE>)
(<PROB 40>
<TELL
"Out of the corner of your eye, a small, shiny object appears in the
sand. A moment later, it is gone!" CR>)
(<PROB 70>
<TELL
"You catch a brief glimpse of something shiny in the sand." CR>)
(T
<TELL
"Something sparkling in the sand catches your eye for a moment." CR>)>
<SETG LAST-MOVES ,MOVES>)>)>>
<GLOBAL LAST-MOVES 0>
<ROUTINE I-IN-LAKE ()
<COND (<==? ,HERE ,IN-LAKE>
<TELL
"You run out of air and return to the surface." CR>
<GOTO ,ON-LAKE>)>>
<GLOBAL LAKE-POINT <>>
<ROUTINE ON-LAKE-F (RARG)
<COND (<==? .RARG ,M-ENTER>
<QUEUE I-IN-LAKE 0>
<COND (<NOT ,LAKE-POINT>
<SETG SCORE <+ ,SCORE 1>>
<SETG LAKE-POINT T>)>)
(<AND <==? .RARG ,M-BEG> <VERB? LEAP> <NOT ,PRSO>>
<DO-WALK ,P?DOWN>
<RTRUE>)>>
<GLOBAL CURRENT-LAMP LAMP>
<ROUTINE GO-ON-LAKE ("AUX" F N (TOLD <>))
<COND (<SET F <FIRST? ,WINNER>>
<REPEAT ()
<SET N <NEXT? .F>>
<COND (<NOT <FSET? .F ,WEARBIT>>
<MOVE .F ,IN-LAKE>
<COND (<==? .F ,TORCH>
<REMOVE ,TORCH>
<MOVE ,FRIED-TORCH ,IN-LAKE>)
(<EQUAL? .F ,LAMP>
<MOVE ,LAMP ,LOCAL-GLOBALS>
<MOVE ,FRIED-LAMP ,IN-LAKE>
<SETG CURRENT-LAMP ,FRIED-LAMP>)
(<==? .F ,WAYBREAD>
<REMOVE ,WAYBREAD>)>
<COND (<NOT .TOLD>
<SET TOLD T>
<TELL
"The shock of entering the frigid water has made you drop all your
possessions into the lake!" CR>)>)>
<COND (<NOT .N> <RETURN>)
(T <SET F .N>)>>)>
<COND (<NOT .TOLD>
<TELL
"You are nearly paralyzed by the icy waters as you swim into the
center of the lake." CR>)>
<CRLF>
<GOTO ,ON-LAKE>
<SETG LAKE-TIME 0>
<ENABLE <QUEUE I-ON-LAKE -1>>>
<GLOBAL LAKE-TIME <>>
<ROUTINE I-ON-LAKE ()
<SETG LAKE-TIME <+ ,LAKE-TIME 1>>
<COND (<AND <PROB 10> <==? ,HERE ,ON-LAKE> <NOT ,INVIS>>
<TELL
"A giant roc, previously hidden among the rocks, is heading right toward you,
its mouth gaping wide!" CR>
<ENABLE <QUEUE I-ROC 2>>)
(<NOT <EQUAL? ,HERE ,ON-LAKE ,IN-LAKE>>
<QUEUE I-ON-LAKE 0>
<QUEUE I-IN-LAKE 0>
<QUEUE I-ROC 0>
<RFALSE>)
(<==? ,LAKE-TIME 4>
<TELL
"The icy waters are taking their toll. You will not be able to hold out
much longer." CR>)
(<==? ,LAKE-TIME 6>
<TELL
"You are becoming very weak. You had better leave the water before you
drown!" CR>)
(<==? ,LAKE-TIME 8>
<QUEUE I-ON-LAKE 0>
<QUEUE I-IN-LAKE 0>
<QUEUE I-ROC 0>
<JIGS-UP
"Your strength gives out, and you drown in the frigid waters.">)>>
<ROUTINE I-ROC ()
<COND (<AND <==? ,HERE ,ON-LAKE> <NOT ,INVIS>>
<QUEUE I-ON-LAKE 0>
<QUEUE I-IN-LAKE 0>
<JIGS-UP
"The roc snatches you in its jaws and has you for lunch.">)>>
<ROUTINE SHINY-OBJECT-F ()
<COND (<AND <VERB? TAKE FIND> <NOT <IN? ,AMULET ,WINNER>>>
<COND (<PROB 50>
<REMOVE ,SHINY-OBJECT>
<MOVE ,AMULET ,WINNER>
<THIS-IS-IT ,AMULET>
<FCLEAR ,AMULET ,NDESCBIT>
<TELL
"You reach the shiny object. It is a simple golden amulet!" CR>)
(T
<TELL
"The shiny object slips from your grasp and back onto the floor of
the lake, where it is covered in sand." CR>)>)>>
<ROUTINE SAND-F ()
<COND (<VERB? DIG>
<TELL "You don't come across anything unusual." CR>)
(<VERB? EXAMINE>
<TELL
"There is nothing notable on the floor of the lake, except some plants
and algae." CR>)
(<VERB? TAKE>
<TELL "It slips through your fingers." CR>)>>
<ROUTINE ALGAE-F ()
<COND (<VERB? EAT> <TELL "Yeecchhhh!" CR>)>>
<ROUTINE FRIED-LAMP-F ()
<COND (<VERB? LAMP-ON>
<TELL
"The lamp isn't functioning (probably from having gotten wet)." CR>)>>
<GLOBAL VIEW-POINT 1>
<ROUTINE I-VIEW-SNAP ()
<TELL "You suddenly find yourself back in the viewing room!" CR>
<GOTO ,VIEW-ROOM <>>
<RTRUE>>
<ROUTINE VIEWING-TABLE-F ("AUX" L)
<COND (<VERB? RUB>
<SETG SCORE <+ ,SCORE ,VIEW-POINT>>
<SETG VIEW-POINT 0>
<TELL
"You touch the table and are instantly transported to another place!" CR>
<CRLF>
<ENABLE <QUEUE I-VIEW-SNAP 3>>
<GOTO <GET ,VIEW-ROOMS ,ACTIVE-VIEW>>
<RTRUE>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL
"The surface is pale and featureless, but slowly, an image takes shape!" CR>
<TELL <GET ,VIEWS ,ACTIVE-VIEW> CR>
<TELL
"The image slowly fades." CR>)>>
<ROUTINE I-VIEW-CHANGE ()
<SETG ACTIVE-VIEW <+ ,ACTIVE-VIEW 1>>
<COND (<==? ,ACTIVE-VIEW 5> <SETG ACTIVE-VIEW 1>)>
<QUEUE I-VIEW-CHANGE 4>
<COND (<==? ,HERE ,VIEW-ROOM>
<TELL
"The indicator above the table flickers briefly, then changes to \"">
<TELL <GET ,VIEW-ROMANS ,ACTIVE-VIEW> "\"." CR>)>>
<ROUTINE VIEW-ROOM-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are in a small chamber carved in the rock, with the sole exit to the
north. Mounted on one wall is a table labelled \"Scenic Vista,\" whose
featureless surface is angled toward you. One might believe that the table
was used to indicate points of interest in the view from this spot, like those
found in many parks. On the other hand, your surroundings are far from
spacious and by no stretch of the imagination could this spot be considered
scenic. An indicator above the table reads \"">
<TELL <GET ,VIEW-ROMANS ,ACTIVE-VIEW> "\"." CR>)>>
<GLOBAL VIEW-ROMANS <TABLE 0 "I" "II" "III" "IV">>
<GLOBAL ACTIVE-VIEW 1>
<GLOBAL VIEW-ROOMS <LTABLE TIMBER-ROOM ROOM-8 DAMP-PASSAGE ZORK-IV>>
<GLOBAL VIEWS <LTABLE
"You see a passage cluttered with broken timbers. An extremely narrow opening
can be seen at the end of the room."
"You see a tiny room with rough walls. Chiseled crudely on one wall is the
number \"8\". The only apparent exit seems to be a blur."
"You see a wide room with two nearly identical passages leading east and
northeast. A wide channel descends steeply into the room and seems to be
blocked by rubble."
"You see the interior of a huge temple rudely constructed of basalt blocks.
Flickering torches cast a sallow illumination over an altar still wet with the
blood of human sacrifice, its velvet covers stained and encrusted with gore.">>
<ROUTINE CLIFF-OBJECT-F ()
<COND (<==? ,HERE ,CLIFF>
<COND (<VERB? LEAP>
<JIGS-UP
"You should have looked before you leaped.">)
(<VERB? CLIMB-DOWN>
<COND (,ROPE-FLAG
<GOTO ,CLIFF-LEDGE>
<RTRUE>)
(T <TELL "The fall would kill you." CR>)>)
(<AND <VERB? THROW-OFF> <==? ,PRSI ,CLIFF-OBJECT>>
<COND (<==? ,PRSO ,ROPE>
<TELL
"The rope is dangling over the side of the cliff already." CR>
<RTRUE>)
(<NOT <IN? ,PRSO ,WINNER>>
<TELL
"You aren't holding the " D ,PRSO "." CR>
<RTRUE>)>
<MOVE ,PRSO ,CLIFF-LEDGE>
<TELL
"The " D ,PRSO " goes over the cliff and lands among the rocks below." CR>
<COND (<==? ,PRSO ,LAMP>
<REMOVE ,PRSO>
<MOVE ,BROKEN-LAMP ,CLIFF-LEDGE>
<SETG CURRENT-LAMP ,BROKEN-LAMP>)
(<==? ,PRSO ,STAFF>
<REMOVE ,PRSO>
<MOVE ,BROKEN-STAFF ,CLIFF-LEDGE>)>
<RTRUE>)>)
(<VERB? CLIMB-UP>
<TELL "You haven't enough strength to climb the cliff." CR>)
(T <TELL "The cliff is above you!" CR>)>>
<ROUTINE TREE-F ()
<COND (<VERB? CLIMB-UP CLIMB-FOO>
<TELL "The trunks are too large for you to climb them." CR>)
(<AND <VERB? EXAMINE LOOK-INSIDE> <NOT ,MAN-SEEN>>
<TELL
"There seems to be nobody there, but it's hard to tell." CR>)
(<VERB? BURN>
<JIGS-UP
"Smokey the Bear puts out both the fire and you.">)>>
<ROUTINE FRIED-TORCH-F ()
<COND (<VERB? LAMP-ON>
<TELL "It's hopeless. The torch is wet." CR>)>>
<ROUTINE TORCH-F ()
<COND (<VERB? LAMP-ON>
<COND (<FSET? ,TORCH ,ONBIT> <TELL "It's already lit." CR>)
(T <TELL "You have nothing to light it with." CR>)>)
(<VERB? LAMP-OFF>
<COND (<FSET? ,TORCH ,ONBIT>
<TELL "You manage to extinguish the flame." CR>
<FCLEAR ,TORCH ,ONBIT>)
(T <TELL "It has already been extinguished." CR>)>)>>
;"Here's some ZORK I"
<OBJECT TIMBERS ;"was OTIMB"
(IN TIMBER-ROOM)
(SYNONYM TIMBERS PILE)
(ADJECTIVE WOODEN BROKEN)
(DESC "broken timber")
(FLAGS TAKEBIT)
(SIZE 50)>
<ROOM LADDER-TOP ;"was TLADD"
(IN ROOMS)
(LDESC
"This is a very small room. In the corner is a rickety wooden
ladder, leading downward. It might be safe to descend. There is
also a staircase leading upward.")
(DESC "Ladder Top")
(DOWN TO LADDER-BOTTOM)
(FLAGS RLANDBIT)
(GLOBAL LADDER STAIRS)>
<OBJECT LADDER
(IN LOCAL-GLOBALS)
(SYNONYM LADDER)
(ADJECTIVE WOODEN RICKETY NARROW)
(DESC "wooden ladder")
(FLAGS NDESCBIT CLIMBBIT)>
<ROOM LADDER-BOTTOM ;"was BLADD"
(IN ROOMS)
(LDESC
"This is a rather wide room. On one side is the bottom of a
narrow wooden ladder. To the west and the south are passages
leaving the room.")
(DESC "Ladder Bottom")
(SOUTH TO DEAD-END-5)
(WEST TO TIMBER-ROOM)
(UP TO LADDER-TOP)
(FLAGS RLANDBIT)
(GLOBAL LADDER)>
<ROOM DEAD-END-5 ;"was DEAD7"
(IN ROOMS)
(DESC "Dead End")
(LDESC "You have come to a dead end in the mine.|
There is a small pile of coal here.")
(NORTH TO LADDER-BOTTOM)
(FLAGS RLANDBIT)>
<ROOM TIMBER-ROOM ;"was TIMBE"
(IN ROOMS)
(LDESC
"This is a long and narrow passage, which is cluttered with broken
timbers. A wide passage comes from the east and turns at the
west end of the room into a very narrow passageway. From the west
comes a strong draft.")
(DESC "Timber Room")
(EAST TO LADDER-BOTTOM)
(WEST TO LOWER-SHAFT
IF EMPTY-HANDED
ELSE "You cannot fit through this passage with that load.")
(ACTION NO-OBJS)
(FLAGS RLANDBIT)>
<ROOM LOWER-SHAFT ;"was BSHAF"
(IN ROOMS)
(DESC "Drafty Room")
(SOUTH TO MACHINE-ROOM)
(OUT TO TIMBER-ROOM)
(EAST TO TIMBER-ROOM)
(ACTION NO-OBJS)
(FLAGS RLANDBIT)>
<ROOM MACHINE-ROOM
(IN ROOMS)
(DESC "Machine Room")
(FLAGS RLANDBIT)>
<GLOBAL EMPTY-HANDED <>>
<ROUTINE NO-OBJS (RARG "AUX" F)
<COND (<==? .RARG ,M-BEG>
<SET F <FIRST? ,WINNER>>
<SETG EMPTY-HANDED T>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(<G? <WEIGHT .F> 4>
<SETG EMPTY-HANDED <>>
<RETURN>)>
<SET F <NEXT? .F>>>
<RFALSE>)>>
;"Stuff from ZORK II"
<ROOM ROOM-8
(IN ROOMS)
(LDESC
"This is a small chamber carved out of the rock at the end of a short crawl.
On the wall is crudely chiseled the number \"8\". The only apparent exit,
to the east, seems to be a blur and a loud, whirring sound resounds through
the rock.")
(DESC "Room 8")
(FLAGS RLANDBIT)
(EAST "You are repelled from the exit by a fierce wind.")>
<OBJECT REPELLENT
(IN ROOM-8)
(SYNONYM REPELLENT CAN)
(ADJECTIVE GRUE MAGIC)
(DESC "Frobozz Magic Grue Repellent")
(FLAGS TAKEBIT READBIT)
(ACTION REPELLENT-FCN)
(FDESC
"A spray can is in the corner. In large type is the legend \"Frobozz Magic
Grue Repellent.\"")
(TEXT
"!!! FROBOZZ MAGIC GRUE REPELLENT !!!|
|
Instructions for use: Apply liberally to creature to be protected.
Duration of effect is unpredictable. Use only in place of death!|
|
(No warranty expressed or implied)")>
<ROUTINE REPELLENT-FCN ()
<COND (<VERB? SHAKE>
<COND (,SPRAY-USED? <TELL "The can seems empty." CR>)
(T <TELL "There is a sloshing sound from inside." CR>)>)
(<VERB? BURN>
<JIGS-UP
"The can explodes and you die a horribly smelly death.">)
(<AND <VERB? SPRAY PUT-ON> <==? ,PRSO ,REPELLENT>>
<COND (,SPRAY-USED?
<TELL
"The repellent is all gone." CR>)
(<NOT ,PRSI>
<SETG SPRAY-USED? T>
<TELL
"The spray stinks amazingly for a few moments, then drifts away." CR>)
(ELSE
<COND (<==? ,PRSI ,ME>
<ENABLE <QUEUE I-SPRAY 5>>
<SETG SPRAYED? T>)>
<SETG SPRAY-USED? T>
<TELL
"The spray smells like a mixture of old socks and burning rubber. If
I were a grue I'd sure stay clear!" CR>)>)>>
<GLOBAL SPRAY-USED? <>>
<ROUTINE I-SPRAY ()
<SETG SPRAYED? <>>
<TELL "That horrible smell is much less pungent now." CR>>
;"Stuff from ZORK IV"
<ROOM ZORK-IV
(IN ROOMS)
(DESC "Sacrificial Altar")
(FLAGS ONBIT RLANDBIT)
(ACTION ZORK-IV-F)>
<ROUTINE ZORK-IV-F (RARG)
<COND (<==? .RARG ,M-ENTER>
<JIGS-UP
"Sacrificial Altar|
This is the interior of a huge temple of primitive construction. A few
flickering torches cast a sallow illumination over the altar, which is
still drenched with the blood of human sacrifice. Behind the altar is an
enormous statue of a demon which seems to reach towards you with
dripping fangs and razor-sharp talons. A low noise begins behind you,
and you turn to see hundreds of hunched and hairy shapes. A guttural
chant issues from their throats. Near you stands a figure draped in a
robe of deepest black, brandishing a huge sword. The chant grows louder
as the robed figure approaches the altar. The large figure spots you and
approaches menacingly. It reaches into its cloak and pulls out a great,
glowing dagger. It pulls you onto the altar and, with a murmur of
approval from the throng, slices you neatly across your abdomen.">)>>
;"Last Section"
<ROOM SOUTH-SHORE
(IN ROOMS)
(DESC "Southern Shore")
(LDESC
"You are on the south shore of the lake. Rock formations prevent
movement to the west and thickening swamp to the east makes the going
all but impossible. To the south, where the beach meets a rock
formation, you can make out a dark passage sloping steeply upward into the
rock.")
(EAST "The swamp is too thick.")
(UP TO DARK-1)
(NORTH "If you want to go into the lake, you should say so.")
(SOUTH TO DARK-1)
(FLAGS RLANDBIT ONBIT)
(GLOBAL LAKE)
(PSEUDO "BEACH" SHORE-PSEUDO "SWAMP" SWAMP-PSEUDO)>
<ROOM DARK-1
(IN ROOMS)
(DESC "Dark Place")
(NORTH TO SOUTH-SHORE)
(SOUTH TO DARK-2)
(UP TO DARK-2)
(DOWN TO SOUTH-SHORE)
(FLAGS RLANDBIT)>
<ROOM DARK-2
(IN ROOMS)
(DESC "Dark Place")
(NORTH TO DARK-1)
(EAST TO KEY-ROOM)
(UP TO KEY-ROOM)
(DOWN TO DARK-1)
(FLAGS RLANDBIT)>
<ROOM KEY-ROOM
(IN ROOMS)
(DESC "Key Room")
(WEST TO DARK-2)
(DOWN TO AQ-1 IF COVER-MOVED
ELSE "You can't walk through a piece of metal.")
(ACTION KEY-ROOM-F)
(FLAGS RLANDBIT ONBIT)>
<ROOM AQ-1
(IN ROOMS)
(DESC "Aqueduct")
(UP "The hole is too far above your head.")
(LDESC
"You are in a wide stone channel, part of the water supply system for the
Great Underground Empire. The source of water was a waterfall to the south,
which has long since dried up. Water flowed along the aqueduct to the north.
This region is lit from above, although the source of light is not apparent.")
(SOUTH "You can't climb the dried-up waterfall.")
(NORTH TO AQ-2)
(FLAGS RLANDBIT ONBIT)
(GLOBAL AQUEDUCT WATER-CHANNEL MOSS)
(PSEUDO "WATERF" WATERFALL-PSEUDO)>
<ROOM AQ-2
(IN ROOMS)
(DESC "High Arch")
(NORTH TO AQ-3 IF AQ-FLAG ELSE "The arch before you is broken.")
(SOUTH TO AQ-1)
(DOWN "It's a long way down....")
(FLAGS RLANDBIT ONBIT)
(ACTION AQ-2-F)
(GLOBAL AQUEDUCT WATER-CHANNEL MOSS)
(PSEUDO "ARCH" ARCH-PSEUDO)>
<ROOM AQ-3
(IN ROOMS)
(DESC "Water Slide")
(NORTH TO DAMP-PASSAGE)
(DOWN TO DAMP-PASSAGE)
(SOUTH TO AQ-2 IF AQ-FLAG ELSE "The arch to the south is broken.")
(FLAGS RLANDBIT ONBIT)
(ACTION AQ-3-F)
(GLOBAL AQUEDUCT WATER-CHANNEL MOSS)
(PSEUDO "ARCH" ARCH-PSEUDO)>
<OBJECT AQUEDUCT
(IN LOCAL-GLOBALS)
(DESC "aqueduct")
(SYNONYM AQUEDUCT DUCT CHASM)
(ADJECTIVE STONE)
(ACTION AQUEDUCT-F)>
<OBJECT WATER-CHANNEL
(IN LOCAL-GLOBALS)
(DESC "channel")
(SYNONYM CHANNEL)
(ADJECTIVE WATER)
(ACTION WATER-CHANNEL-F)>
<OBJECT MOSS
(IN LOCAL-GLOBALS)
(DESC "moss and lichen")
(SYNONYM MOSS LICHEN)
(ACTION MOSS-F)>
<ROUTINE AQUEDUCT-F ()
<COND (<VERB? EXAMINE>
<TELL
"The aqueduct is large and impressive. It was probably the major method
of water transport in the Empire." CR>)
(<VERB? LEAP>
<JIGS-UP
"You execute a perfect swan dive into the rocks below!">)>>
<ROUTINE WATER-CHANNEL-F ()
<COND (<VERB? EXAMINE>
<TELL
"The channel is a few feet deep and ten feet wide, rounded on the bottom." CR>)
(<VERB? BOARD>
<COND (<==? ,HERE ,DAMP-PASSAGE>
<TELL
"Getting into the channel wouldn't be of much use." CR>)
(T
<TELL
"You're standing in it. Otherwise, you would be floating in midair above some
very nasty rocks." CR>)>)>>
<ROUTINE MOSS-F ()
<COND (<VERB? TAKE MOVE>
<TELL "Don't be silly." CR>)>>
<ROUTINE AQ-2-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are now on one of the tallest arches of the aqueduct, hundreds of feet
above a rocky chasm. The immensity of the aqueduct project is apparent from
here. Stone supports rise from the rock floor to form massive arches, which
traverse the region from north to south. The water-carrying channel here is
wide and deep. To the west and far below, you can make out a balcony which
must command a wide view of the aqueduct." CR>
<COND (<NOT ,AQ-FLAG>
<TELL
"The channel ends abruptly to your north where a supporting pillar has
crumbled, casting the arch into the chasm." CR>)>)>>
<ROUTINE AQ-3-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are near the northern end of this segment of the aqueduct system. To the
south and slightly uphill, the bulk of the aqueduct looms ominously, towering
above a gorge. To the north, the water channel drops precipitously and enters
a rocky hole. The damp moss and lichen would certainly make that a one-way
trip." CR>
<COND (<NOT ,AQ-FLAG>
<TELL
"The southern part of the aqueduct system is inaccessable due to the
collapse of one of the water-bearing arches." CR>)>)>>
<GLOBAL AQ-FLAG T>
<GLOBAL COVER-MOVED <>>
<OBJECT COVER
(IN KEY-ROOM)
(DESC "manhole cover")
(SYNONYM COVER)
(ADJECTIVE MANHOLE LARGE)
(FLAGS NDESCBIT)
(ACTION COVER-F)>
<ROUTINE COVER-F ()
<COND (<VERB? MOVE RAISE OPEN>
<TELL
"The cover is moved a bit to one side, revealing a small hole leading into
darkness." CR>
<SETG COVER-MOVED T>)
(<VERB? TAKE>
<TELL
"The cover is far too heavy to take." CR>)>>
<ROUTINE KEY-ROOM-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are between some rock and a dark place. The room is lit dimly from
above, revealing a lone, dark path sloping down to the west." CR>
<COND (,COVER-MOVED
<TELL
"A heavy manhole cover has been moved to reveal a dark passage below." CR>)
(T
<TELL
"To one side of the room is a large manhole cover." CR>)>)>>
<OBJECT KEY
(IN KEY-ROOM)
(DESC "strange key")
(FDESC
"The light from above seems to be focused in the center of the room, where
a single key is lying in the dust.")
(SYNONYM KEY)
(ADJECTIVE STRANGE RUSTY LONG SHORT HEAVY THIN SHARP POINTED)
(FLAGS TAKEBIT)
(SIZE 10)
(ACTION KEY-F)>
<ROUTINE KEY-F ()
<COND (<AND <VERB? UNLOCK> <==? ,PRSI ,KEY>>
<COND (<AND <==? ,PRSO ,BRONZE-DOOR> <==? ,HERE ,GOOD-CELL>>
<COND (,BRONZE-DOOR-LOCKED
<TELL
"The key seems to mold itself to the shape of the lock. With a mere
twist of your hand, the massive bolt gives way." CR>)
(T <TELL "It already is." CR>)>
<SETG BRONZE-DOOR-LOCKED <>>
<RTRUE>)
(<==? ,PRSO ,BRONZE-DOOR>
<TELL
"The key molds itself to the lock but will not turn." CR>)
(<OR <EQUAL? ,PRSO ,CHEST>
<FSET? ,PRSO ,DOORBIT>>
<TELL
"The key, which initially seemed certain to fit the lock, seems to change
shape and will not enter the keyhole." CR>)>)
(<VERB? EXAMINE>
<TELL <PICK-ONE ,KEY-DESCS> CR>
<TELL
"Strange, though. The key seems to change shape constantly." CR>)>>
<GLOBAL KEY-DESCS <LTABLE 0
"The key is a long and heavy skeleton key."
"The key is short and stubby, shaped like no lock you have ever seen."
"The key is round and thin, more like a pencil than a key."
"The key is shiny with many prongs."
"The key is sharp as an awl, and rusted badly.">>
<OBJECT VIEW-INDICATOR
(IN VIEW-ROOM)
(DESC "indicator")
(SYNONYM INDICATOR DIAL)
(FLAGS NDESCBIT READBIT)
(ACTION VIEW-INDICATOR-F)>
<ROUTINE VIEW-INDICATOR-F ()
<COND (<VERB? EXAMINE READ>
<TELL "The indicator reads \""
<GET ,VIEW-ROMANS ,ACTIVE-VIEW>
"\"." CR>)>>
<GLOBAL BOAT-SEEN <>>
<ROUTINE FLATHEAD-OCEAN-F (RARG)
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are at the shore of an amazing underground sea, the topic of many a
legend among adventurers. Few were known to have arrived at this spot, and
fewer to return. There is a heavy surf and a breeze is blowing onshore.
The land rises steeply to the east and quicksand prevents movement to the
south. A thick mist covers the ocean and extends over the hills to the east.
A path heads north along the beach." CR>
<COND (<NOT <FSET? ,VIKING-SHIP ,INVISIBLE>>
<TELL
"An ancient Viking ship is passing along the shore, an old and crusty
sailor at the helm." CR>)>
<RTRUE>)
(<AND <==? .RARG ,M-END>
<PROB 20>
<NOT ,BOAT-SEEN>
,LIT>
<SETG BOAT-SEEN T>
<ENABLE <QUEUE I-BOAT-DISAPPEAR 2>>
<TELL
"Passing alongside the shore now is an old boat, reminiscent of an ancient
Viking ship. Standing on the prow of the ship is an old and crusty sailor,
peering out over the misty ocean." CR>
<FCLEAR ,VIKING-SHIP ,INVISIBLE>)>>
<GLOBAL SHIP-GONE <>>
<ROUTINE I-BOAT-DISAPPEAR ()
<FSET ,VIKING-SHIP ,INVISIBLE>
<SETG SHIP-GONE T>
<COND (<==? ,HERE ,FLATHEAD-OCEAN>
<TELL
"The boat sails silently through the mist and out of sight." CR>)>>
<OBJECT VIKING-SHIP
(IN FLATHEAD-OCEAN)
(DESC "Viking Ship")
(FLAGS NDESCBIT INVISIBLE)
(ADJECTIVE VIKING)
(SYNONYM BOAT SHIP CRAFT)>
<OBJECT VIAL
(DESC "vial")
(SYNONYM VIAL ODOR GIFT)
(FLAGS TAKEBIT CONTBIT)
(SIZE 3)
(CAPACITY 3)
(ACTION VIAL-F)>
<OBJECT POTION
(IN VIAL)
(DESC "heavy but invisible liquid")
(SYNONYM POTION LIQUID CONTENTS FLUID)
(ADJECTIVE HEAVY SWEET INVISIBLE SMELLING)
(SIZE 2)
(FLAGS)
(ACTION POTION-F)>
<ROUTINE I-VISIBLE ()
<SETG INVIS <>>
<COND (<EQUAL? ,HERE ,MRG ,MRGE ,MRGW>
<JIGS-UP
"One of the stone figures (or maybe both, it's hard to tell) suddenly springs
to life and crushes you with his stone bludgeon.">)>
<RFALSE>>
<ROUTINE POTION-F ()
<COND (<VERB? DRINK>
<REMOVE ,POTION>
<SETG INVIS T>
<ENABLE <QUEUE I-VISIBLE 3>>
<TELL
"You \"drink\" the contents in one gulp, but nothing unusual seems to have
happened as a result." CR>)
(<AND <VERB? POUR-ON> <==? ,PRSO ,POTION>>
<REMOVE ,POTION>
<TELL "It spills onto the " D ,PRSI " and vanishes." CR>)
(<VERB? EXAMINE>
<TELL
"It feels like there's something inside, but you can't see anything even
though the vial is transparent." CR>)
(<VERB? SMELL>
<TELL
"The vial (or something in it) smells sweet." CR>)
(<VERB? DROP TAKE>
<TELL
"Nothing seems to come out, although the sweet smell disappears from
the vial, seeming to permeate the air briefly before fading entirely." CR>
<REMOVE ,POTION>)>>
<GLOBAL INVIS <>>
<ROUTINE VIAL-F ()
<COND (<VERB? FILL> <TELL "You can't seem to put anything in it." CR>)
(<AND <VERB? DRINK-FROM> <IN? ,POTION ,VIAL>>
<PERFORM ,V?DRINK ,POTION>
<RTRUE>)
(<AND <VERB? SMELL> <IN? ,POTION ,VIAL>>
<PERFORM ,V?SMELL ,POTION>
<RTRUE>)
(<AND <VERB? SHAKE> <IN? ,POTION ,VIAL> <FSET? ,VIAL ,OPENBIT>>
<TELL
"Nothing seems to come out, although the vial is lighter now." CR>
<REMOVE ,POTION>)
(<VERB? OPEN>
<FSET ,VIAL ,OPENBIT>
<TELL
"The vial is open.">
<COND (<IN? ,POTION ,VIAL>
<TELL
" There is a sweet odor from within the vial, apparently coming from a heavy
but invisible liquid.">)>
<CRLF>)
(<VERB? EXAMINE>
<TELL "It is a small, transparent vial ">
<COND (<IN? ,POTION ,VIAL>
<TELL
"which looks empty but is strangely heavy." CR>)
(T
<TELL
"which is light and empty." CR>)>)>>
<OBJECT OCEAN
(IN GLOBAL-OBJECTS)
(DESC "Flathead Ocean")
(SYNONYM OCEAN WATER)
(ADJECTIVE FLATHEAD)
(FLAGS NDESCBIT)
(ACTION OCEAN-F)>
<ROUTINE OCEAN-F ()
<COND (<NOT <==? ,HERE ,FLATHEAD-OCEAN>>
<TELL "There is no ocean here." CR>)
(<VERB? THROUGH BOARD>
<TELL "You would be killed by the pounding surf!" CR>)
(<AND <VERB? PUT THROW> <==? ,PRSI ,OCEAN>>
<TELL
"The " D ,PRSO " falls into the ocean and is lost forever." CR>
<REMOVE ,PRSO>)>>
<OBJECT STONE
(DESC "great rock")
(SYNONYM ROCK STONE)
(ADJECTIVE GREAT)
(IN JUNCTION)
(DESCFCN STONE-DESC)
(FLAGS CONTBIT OPENBIT)
(CAPACITY 30)
(ACTION STONE-F)>
<GLOBAL SWORD-IN-STONE? T>
<ROUTINE STONE-DESC (FOO)
<TELL
"Standing before you is a great rock.">
<COND (,SWORD-IN-STONE?
<TELL " Imbedded within it is an Elvish sword.">)>
<CRLF>>
<ROUTINE STONE-F ()
<COND (<VERB? OPEN CLOSE>
<TELL "You can't be serious." CR>)
(<AND <VERB? PUT> <==? ,PRSI ,STONE>>
<TELL "You can't force anything into the stone." CR>)
(<AND <VERB? MOVE TAKE PUSH> <==? ,PRSO ,STONE>>
<TELL
"The stone is far too massive to be moved." CR>)
(<VERB? LOOK-UNDER>
<TELL
"Since it can't be moved, it's hard to know what's there." CR>)>>
<OBJECT FISH
(IN LOCAL-GLOBALS)
(DESC "fish")
(SYNONYM FISH)
(FLAGS NDESCBIT)
(ACTION FISH-F)>
<ROUTINE FISH-F ()
<TELL "There is no fish visible now." CR>>
<ROUTINE QUICKSAND-PSEUDO ()
<COND (<VERB? THROUGH LEAP>
<JIGS-UP
"You enter the quicksand and slowly sink to a new low in adventuring.">)
(<VERB? RUB>
<TELL "It's quicksand all right!" CR>)
(<VERB? LOOK-INSIDE>
<TELL "It's hard to tell what's in there." CR>)>>
<ROUTINE SWAMP-PSEUDO ()
<COND (<VERB? THROUGH>
<TELL "Yucko." CR>)>>
<ROUTINE MIST-PSEUDO ()
<COND (<VERB? LOOK-INSIDE>
<TELL "You can't make anything out through the mist." CR>)
(<VERB? SMELL>
<TELL "It smells vaguely salty." CR>)>>
<ROUTINE SHORE-PSEUDO ()
<COND (<VERB? DIG>
<TELL "There's nothing there." CR>)>>
<ROUTINE WATERFALL-PSEUDO ()
<COND (<VERB? CLIMB-UP>
<TELL "It's much too slippery." CR>)>>
<ROUTINE ARCH-PSEUDO ()
<COND (<VERB? EXAMINE>
<COND (,AQ-FLAG
<TELL
"The arches all show some signs of decay." CR>)
(T
<TELL
"The arch before you is broken. The others show signs of decay." CR>)>)>>