zork3/3actions.zap

3968 lines
113 KiB
Plaintext

.FUNCT I-SWORD,DEM,NG=0,P,T,L
CALL INT,I-SWORD >DEM
IN? SWORD,ADVENTURER \?ELS5
EQUAL? HERE,CLIFF \?ELS8
ZERO? MAN-GONE \?ELS8
SET 'NG,1
JUMP ?CND6
?ELS8: EQUAL? HERE,CLIFF-LEDGE \?ELS12
ZERO? MAN-FLAG /?ELS12
SET 'NG,1
JUMP ?CND6
?ELS12: CALL INFESTED?,HERE
ZERO? STACK /?ELS16
SET 'NG,2
JUMP ?CND6
?ELS16: EQUAL? MLOC,MRG \?ELS22
EQUAL? HERE,IN-MIRROR /?THN19
?ELS22: EQUAL? HERE,MRGE,MRG,MRGW \?ELS18
?THN19: SET 'NG,1
JUMP ?CND6
?ELS18: SET 'P,0
?PRG25: NEXTP HERE,P >P
ZERO? P \?ELS29
JUMP ?CND6
?ELS29: LESS? P,LOW-DIRECTION /?PRG25
GETPT HERE,P >T
PTSIZE T >L
EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG25
GETB T,0
CALL INFESTED?,STACK
ZERO? STACK /?PRG25
SET 'NG,1
?CND6: EQUAL? NG,SWORD-STATE /FALSE
EQUAL? NG,2 \?ELS42
PRINTI "Your sword has begun to glow very brightly."
CRLF
JUMP ?CND38
?ELS42: EQUAL? NG,1 \?ELS46
PRINTI "Your sword is glowing with a faint blue glow."
CRLF
JUMP ?CND38
?ELS46: ZERO? NG \?CND38
PRINTI "Your sword is no longer glowing."
CRLF
?CND38: SET 'SWORD-STATE,NG
RTRUE
?ELS5: PUT DEM,0,0
RFALSE
.FUNCT INFESTED?,R,F
FIRST? R >F /?KLU12
?KLU12:
?PRG1: ZERO? F /FALSE
FSET? F,ACTORBIT \?ELS7
FSET? F,INVISIBLE /?ELS7
RETURN F
?ELS7: NEXT? F >F /?PRG1
RFALSE
.FUNCT FIND-WEAPON,O,W
FIRST? O >W /?KLU11
?KLU11: ZERO? W /FALSE
?PRG4: EQUAL? W,SWORD \?ELS8
RETURN W
?ELS8: NEXT? W >W /?PRG4
RFALSE
.FUNCT SWORD-FCN
ZERO? SWORD-IN-STONE? /?ELS5
EQUAL? PRSA,V?MOVE,V?TAKE \FALSE
RANDOM 100
GRTR? 10,STACK \?ELS16
PRINTR "Who do you think you are? Arthur?"
?ELS16: PRINTR "The sword is deeply imbedded in the rock. You can't budge it."
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
EQUAL? WINNER,ADVENTURER \FALSE
CALL QUEUE,I-SWORD,-1
PUT STACK,0,1
RFALSE
.FUNCT LANTERN
EQUAL? PRSA,V?THROW \?ELS5
PRINTI "The lamp smashes. The light is now out."
CRLF
CALL INT,I-LANTERN
PUT STACK,0,0
REMOVE LAMP
SET 'CURRENT-LAMP,BROKEN-LAMP
MOVE BROKEN-LAMP,HERE
RTRUE
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS9
FSET? LAMP,LIGHTBIT /?ELS14
PRINTR "A burned-out lamp won't light."
?ELS14: CALL INT,I-LANTERN
PUT STACK,0,1
RFALSE
?ELS9: EQUAL? PRSA,V?LAMP-OFF \?ELS20
FSET? LAMP,LIGHTBIT /?ELS25
PRINTR "The lamp has already burned out."
?ELS25: CALL INT,I-LANTERN
PUT STACK,0,0
RFALSE
?ELS20: EQUAL? PRSA,V?EXAMINE \FALSE
FSET? LAMP,LIGHTBIT /?ELS34
PRINTI "The lamp has burned out."
JUMP ?CND32
?ELS34: FSET? LAMP,ONBIT \?ELS38
PRINTI "The lamp is on."
JUMP ?CND32
?ELS38: PRINTI "The lamp is turned off."
?CND32: CRLF
RTRUE
.FUNCT LIGHT-INT,OBJ,TBL,TICK
ZERO? TICK \?CND1
FCLEAR OBJ,ONBIT
FSET OBJ,RMUNGBIT
?CND1: CALL HELD?,OBJ
ZERO? STACK \?THN9
IN? OBJ,HERE \FALSE
?THN9: ZERO? TICK \?ELS15
PRINTI "You'd better have more light than from the "
PRINTD OBJ
PRINTR "."
?ELS15: GET TBL,1
PRINT STACK
CRLF
RTRUE
.FUNCT I-LANTERN,TICK,TBL
VALUE 'LAMP-TABLE >TBL
GET TBL,0 >TICK
CALL QUEUE,I-LANTERN,TICK
PUT STACK,0,1
CALL LIGHT-INT,LAMP,TBL,TICK
ZERO? TICK /FALSE
ADD TBL,4 >LAMP-TABLE
RETURN LAMP-TABLE
.FUNCT CHASM-FCN
EQUAL? PRSA,V?LEAP /?THN6
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSO,ME \?ELS5
?THN6: PRINTR "You look before leaping and realize you would never survive."
?ELS5: EQUAL? PRSA,V?CROSS \?ELS13
PRINTR "You'll have to find a bridge."
?ELS13: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
PRINTI "The "
PRINTD PRSO
PRINTI " drops out of sight into the chasm."
CRLF
REMOVE PRSO
RTRUE
.FUNCT TUNNEL-OBJECT
EQUAL? PRSA,V?THROUGH \?ELS5
GETP HERE,P?IN
ZERO? STACK /?ELS5
CALL DO-WALK,P?IN
RTRUE
?ELS5: CALL PATH-OBJECT
RSTACK
.FUNCT CPEXIT,FX,NFX,?TMP1
SET 'CP-MOVED,FALSE-VALUE
EQUAL? PRSO,P?UP \?ELS5
EQUAL? CPHERE,1 \?ELS10
GET CPTABLE,2
EQUAL? STACK,-2 \?ELS15
PRINTI "With the help of the ladder, you exit the puzzle."
CRLF
RETURN CP-ANTE
?ELS15: PRINTI "The exit is too far above your head."
CRLF
RFALSE
?ELS10: PRINTI "There is no way up."
CRLF
RFALSE
?ELS5: EQUAL? CPHERE,33 \?ELS27
EQUAL? PRSO,P?WEST \?ELS27
ZERO? CP-FLAG /?ELS27
FCLEAR CP,TOUCHBIT
RETURN CP-OUT
?ELS27: EQUAL? PRSO,P?DOWN \?ELS31
PRINTI "There's no way down here."
CRLF
RFALSE
?ELS31: EQUAL? CPHERE,33 \?ELS35
EQUAL? PRSO,P?WEST \?ELS35
PRINTI "The metal door bars the way."
CRLF
RFALSE
?ELS35: CALL LKP,PRSO,CPEXITS >FX
ADD FX,CPHERE >NFX
GRTR? NFX,36 /?THN45
LESS? NFX,0 /?THN45
CALL ILLCP,CPHERE,FX
ZERO? STACK /?ELS44
?THN45: PRINTI "There is a wall there."
CRLF
RFALSE
?ELS44: LESS? FX,0 \?ELS55
SUB 0,FX
JUMP ?CND51
?ELS55: PUSH FX
?CND51: EQUAL? STACK,1,6 \?ELS50
CALL CPMOVE,FX
RFALSE
?ELS50: GRTR? FX,0 \?ELS59
ADD CPHERE,6
GET CPTABLE,STACK >?TMP1
SUB FX,6
ADD CPHERE,STACK
GET CPTABLE,STACK
EQUAL? 0,?TMP1,STACK \?ELS59
CALL CPMOVE,FX
RFALSE
?ELS59: LESS? FX,0 \?ELS63
SUB CPHERE,6
GET CPTABLE,STACK >?TMP1
ADD CPHERE,6
ADD STACK,FX
GET CPTABLE,STACK
EQUAL? 0,?TMP1,STACK \?ELS63
CALL CPMOVE,FX
RFALSE
?ELS63: PRINTI "There is a wall there."
CRLF
RFALSE
.FUNCT ILLCP,ONE,TWO
MOD ONE,6
ZERO? STACK \?ELS5
EQUAL? TWO,MINUS-FIVE,1,7 /TRUE
?ELS5: MOD ONE,6
EQUAL? STACK,1 \?ELS9
EQUAL? TWO,MINUS-SEVEN,MINUS-ONE,5 /TRUE
?ELS9: LESS? ONE,7 \?ELS13
LESS? TWO,MINUS-FOUR /TRUE
?ELS13: GRTR? ONE,30 \FALSE
GRTR? TWO,4 /TRUE
RFALSE
.FUNCT CPMOVE,FX
ADD CPHERE,FX >FX
GET CPTABLE,FX
ZERO? STACK \?ELS5
CALL CPGOTO,FX
RSTACK
?ELS5: PRINTR "There is a wall there."
.FUNCT CPENTER
EQUAL? YEAR,YEAR-PRESENT \?THN6
ZERO? CPBLOCK-FLAG /?ELS5
?THN6: PRINTI "The hole is blocked by sandstone."
CRLF
RFALSE
?ELS5: SET 'CPHERE,1
RETURN CP
.FUNCT CPANT-ROOM,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is a small square room, in the middle of which is a round hole"
ZERO? CPBLOCK-FLAG \?THN13
EQUAL? YEAR,YEAR-PRESENT /?ELS12
?THN13: PRINTR " which is blocked by smooth sandstone."
?ELS12: PRINTR " 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."
.FUNCT CPLADDER-OBJECT
SUB CPHERE,1
GET CPTABLE,STACK
EQUAL? STACK,-3 \?ELS5
CALL CPLADDER-JUNK,FALSE-VALUE
RSTACK
?ELS5: ADD CPHERE,1
GET CPTABLE,STACK
EQUAL? STACK,-2 \?ELS7
CALL CPLADDER-JUNK,TRUE-VALUE
RSTACK
?ELS7: PRINTR "You can't see any ladder here."
.FUNCT CPLADDER-JUNK,FLG
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
ZERO? FLG /?ELS10
EQUAL? CPHERE,1 \?ELS10
SET 'CPSOLVE-FLAG,TRUE-VALUE
CALL GOTO,CP-ANTE
RSTACK
?ELS10: PRINTR "You hit your head on the ceiling and fall off the ladder."
?ELS5: PRINTR "Come, come!"
.FUNCT CPWALL-OBJECT,WL,NWL,NXT,NNXT,CNT,TOP,SNAP=0
EQUAL? PRSA,V?MOVE \?ELS5
PRINTR "You can't grab the wall to pull it."
?ELS5: EQUAL? PRSA,V?PUSH \FALSE
CALL CPNEXT,CPHERE,PRSO >NXT
ZERO? NXT \?CND10
PRINTR "The wall doesn't budge."
?CND10: GET CPTABLE,NXT >WL
ZERO? WL \?ELS19
PRINTR "There is only a passage in that direction."
?ELS19: EQUAL? WL,1 \?ELS23
PRINTR "The wall doesn't budge."
?ELS23: CALL CPNEXT,NXT,PRSO >NNXT
ZERO? NNXT \?ELS27
PRINTR "The wall barely gives."
?ELS27: GET CPTABLE,NNXT >NWL
ZERO? NWL /?ELS31
PRINTR "The wall barely gives."
?ELS31: PRINTI "The wall slides forward and you follow it"
ZERO? CPPUSH-FLAG /?ELS40
PRINTI " to this position:"
CRLF
JUMP ?CND38
?ELS40: INC 'SCORE
PRINTI "....
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:
"
CALL FIXED-FONT-ON
PRINTI "
.. = your position (middle of grid)
MM = marble wall
SS = sandstone wall
?? = unknown (blocked by walls)
"
CALL FIXED-FONT-OFF
?CND38: SET 'CPPUSH-FLAG,TRUE-VALUE
PUT CPTABLE,NXT,0
PUT CPTABLE,NNXT,WL
ZERO? NNXT /?CND50
SUB NNXT,1
MUL 8,STACK >TOP
GET CPOBJS,TOP >CNT
?PRG53: ZERO? CNT \?ELS57
JUMP ?CND50
?ELS57: INC 'TOP
GET CPOBJS,TOP
MOVE STACK,CP-OUT
ZERO? SNAP \?CND60
SET 'SNAP,TRUE-VALUE
PRINTI "You hear a soft ""snap"" from behind the wall you were pushing."
CRLF
?CND60: DEC 'CNT
JUMP ?PRG53
?CND50: EQUAL? NNXT,1 \?CND65
SET 'CPBLOCK-FLAG,TRUE-VALUE
?CND65: CALL CPGOTO,NXT
RSTACK
.FUNCT FIXED-FONT-ON
GET 0,8
BOR STACK,2
PUT 0,8,STACK
RTRUE
.FUNCT FIXED-FONT-OFF
GET 0,8
BAND STACK,-3
PUT 0,8,STACK
RTRUE
.FUNCT CPGOTO,FX,F,X,CNT,TOP
SET 'CP-MOVED,TRUE-VALUE
FCLEAR HERE,TOUCHBIT
SUB CPHERE,1
MUL 8,STACK >TOP
ADD TOP,1 >CNT
FIRST? CP >F /?KLU22
?KLU22:
?PRG1: NEXT? F >X /?KLU23
?KLU23: ZERO? F \?ELS5
JUMP ?REP2
?ELS5: EQUAL? F,ADVENTURER \?ELS7
JUMP ?CND3
?ELS7: PUT CPOBJS,CNT,F
REMOVE F
INC 'CNT
?CND3: ZERO? X \?ELS12
JUMP ?REP2
?ELS12: SET 'F,X
JUMP ?PRG1
?REP2: SUB CNT,TOP
SUB STACK,1
PUT CPOBJS,TOP,STACK
SET 'CPHERE,FX
SUB CPHERE,1
MUL 8,STACK >TOP
GET CPOBJS,TOP >CNT
?PRG15: ZERO? CNT \?ELS19
JUMP ?REP16
?ELS19: INC 'TOP
GET CPOBJS,TOP
MOVE STACK,CP
DEC 'CNT
JUMP ?PRG15
?REP16: CALL PERFORM,V?LOOK
RTRUE
.FUNCT CPNEXT,RM,OBJ,FX
CALL LKP,OBJ,CPWALLS >FX
CALL ILLCP,RM,FX
ZERO? STACK \FALSE
ADD RM,FX
RSTACK
.FUNCT CPDOOR-F
EQUAL? HERE,CP \?ELS5
EQUAL? CPHERE,33 /?ELS5
PRINTR "You can't see any steel door here."
?ELS5: EQUAL? PRSA,V?OPEN \?ELS11
ZERO? CP-FLAG /?ELS16
PRINTR "The steel door has already opened."
?ELS16: PRINTR "You can't force it open."
?ELS11: EQUAL? PRSA,V?CLOSE \?ELS25
ZERO? CP-FLAG /?ELS30
PRINTR "There doesn't seem to be any way to close it."
?ELS30: PRINTR "Do you think it isn't already?"
?ELS25: EQUAL? PRSA,V?MUNG \?ELS39
PRINTR "The door is, to a first approximation, indestructible."
?ELS39: EQUAL? PRSA,V?KNOCK \FALSE
PRINTR "Besides a great amount of reverberation, nothing happens."
.FUNCT CP-ROOM,RARG
EQUAL? RARG,M-ENTER \?ELS5
EQUAL? PRSO,P?DOWN \?ELS10
PUSH 1
JUMP ?CND6
?ELS10: PUSH 33
?CND6: SET 'CPHERE,STACK
RETURN CPHERE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
ZERO? CPPUSH-FLAG /?ELS19
CALL CPWHERE
RSTACK
?ELS19: PRINTR "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."
.FUNCT CPNS,NUM
GRTR? NUM,36 /TRUE
LESS? NUM,1 /TRUE
GET CPTABLE,NUM
RSTACK
.FUNCT CPEW,NUM,FOO
MOD NUM,6
EQUAL? STACK,FOO /TRUE
GET CPTABLE,NUM
RSTACK
.FUNCT CPWHERE,N,S,E,W
ADD CPHERE,-6
CALL CPNS,STACK >N
ADD CPHERE,6
CALL CPNS,STACK >S
ADD CPHERE,1
CALL CPEW,STACK,1 >E
ADD CPHERE,-1
CALL CPEW,STACK,0 >W
CALL FIXED-FONT-ON
PRINTI " +"
CALL CP-CORNER,MINUS-SEVEN,N,W
PRINTI " "
CALL CP-ORTHO,N
PRINTI " "
CALL CP-CORNER,MINUS-FIVE,N,E
PRINTI "+"
CRLF
PRINTI "West +"
CALL CP-ORTHO,W
PRINTI " .. "
CALL CP-ORTHO,E
PRINTI "+ East"
CRLF
PRINTI " +"
CALL CP-CORNER,5,S,W
PRINTI " "
CALL CP-ORTHO,S
PRINTI " "
CALL CP-CORNER,7,S,E
PRINTI "+"
CRLF
CALL FIXED-FONT-OFF
EQUAL? CPHERE,1 \?ELS25
PRINTI "In the ceiling above you is a large circular opening."
CRLF
JUMP ?CND23
?ELS25: EQUAL? CPHERE,22 \?ELS29
PRINTI "The center of the floor here is noticeably depressed."
CRLF
JUMP ?CND23
?ELS29: EQUAL? CPHERE,33 \?CND23
PRINTI "In the center of the west wall is a steel door which is "
ZERO? CP-FLAG /?ELS38
PRINTI "open"
JUMP ?CND36
?ELS38: PRINTI "closed"
?CND36: PRINTI ". On one side of the door is a narrow slot."
CRLF
?CND23: EQUAL? E,-2 \?CND48
PRINTI "There is a ladder here, firmly attached to the east wall."
CRLF
?CND48: EQUAL? W,-3 \FALSE
PRINTR "There is a ladder here, firmly attached to the west wall."
.FUNCT CP-ORTHO,CONTENTS
ZERO? CONTENTS \?ELS5
PRINTI " "
RTRUE
?ELS5: EQUAL? CONTENTS,1 \?ELS9
PRINTI "MM"
RTRUE
?ELS9: PRINTI "SS"
RTRUE
.FUNCT CP-CORNER,DIR,COL,ROW,LOCN
ADD CPHERE,DIR >LOCN
ZERO? COL /?ELS5
ZERO? ROW /?ELS5
PRINTI "??"
RTRUE
?ELS5: CALL ILLCP,CPHERE,DIR
ZERO? STACK /?ELS11
PRINTI "MM"
RTRUE
?ELS11: LESS? LOCN,1 /?THN21
GRTR? LOCN,36 \?ELS20
?THN21: PUSH 1
JUMP ?CND16
?ELS20: GET CPTABLE,LOCN
?CND16: SET 'COL,STACK
ZERO? COL \?ELS15
PRINTI " "
RTRUE
?ELS15: EQUAL? COL,1 \?ELS28
PRINTI "MM"
RTRUE
?ELS28: PRINTI "SS"
RTRUE
.FUNCT CP-SLOT-FCN
EQUAL? PRSA,V?PUT \FALSE
GETP PRSO,P?SIZE
GRTR? STACK,10 \?CND6
PRINTR "It doesn't fit."
?CND6: REMOVE PRSO
EQUAL? PRSO,LORE-BOOK \?ELS15
SET 'CP-FLAG,TRUE-VALUE
PRINTR "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"""
?ELS15: FSET? PRSO,ACTORBIT \?ELS19
CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
?ELS19: PRINTI "The item vanishes into the slot. A moment later, a previously unseen sign flashes ""Garbage In, Garbage Out"" and spews out the "
PRINTD PRSO
PRINTR " (now atomized)."
.FUNCT CPOUT-ROOM,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a narrow room, lit from above. A flight of steps leads up to the north, and a "
ZERO? CP-FLAG /?ELS10
PRINTI "passage"
JUMP ?CND8
?ELS10: PRINTI "metal door"
?CND8: PRINTR " leads to the east."
.FUNCT MRGO,TORM
EQUAL? PRSO,P?NORTH,P?NW,P?NE \?ELS3
CALL LKP,HERE,R-NORTHS >TORM
JUMP ?CND1
?ELS3: CALL LKP,HERE,R-SOUTHS >TORM
?CND1: EQUAL? PRSO,P?NORTH,P?SOUTH \?ELS10
EQUAL? MLOC,TORM \?ELS15
MOD MDIR,180
ZERO? STACK \?ELS20
PRINTI "There is a wooden wall blocking your way."
CRLF
RFALSE
?ELS20: CALL MIRIN,FALSE-VALUE
ZERO? STACK /?ELS24
RETURN IN-MIRROR
?ELS24: CALL MIRBLOCK
RFALSE
?ELS15: RETURN TORM
?ELS10: EQUAL? MLOC,TORM \?ELS30
MOD MDIR,180
ZERO? STACK \?ELS35
CALL GO-E-W,TORM
RSTACK
?ELS35: CALL MIRBLOCK
RFALSE
?ELS30: RETURN TORM
.FUNCT MIRBLOCK,MD
SET 'MD,MDIR
EQUAL? PRSO,P?SOUTH \?CND1
ADD MDIR,180
MOD STACK,360 >MD
?CND1: EQUAL? MD,270 \?ELS12
ZERO? MR1-FLAG /?THN9
?ELS12: EQUAL? MD,90 \?ELS8
ZERO? MR2-FLAG \?ELS8
?THN9: PRINTR "There is a large broken mirror blocking your way."
?ELS8: PRINTR "There is a large mirror blocking your way."
.FUNCT GO-E-W,RM
EQUAL? PRSO,P?NE,P?SE \?ELS5
CALL LKP,RM,R-EASTS
RSTACK
?ELS5: CALL LKP,RM,R-WESTS
RSTACK
.FUNCT EWTELL,RM,EAST?=0,M1?=0,MWIN
EQUAL? RM,MRAE,MRBE,MRCE /?THN4
EQUAL? RM,MRGE,MRCE \?CND1
?THN4: SET 'EAST?,TRUE-VALUE
?CND1: ZERO? EAST? /?ELS13
PUSH 0
JUMP ?CND9
?ELS13: PUSH 180
?CND9: ADD MDIR,STACK
EQUAL? STACK,180 \?CND6
SET 'M1?,TRUE-VALUE
?CND6: ZERO? M1? /?ELS19
SET 'MWIN,MR1-FLAG
JUMP ?CND17
?ELS19: SET 'MWIN,MR2-FLAG
?CND17: PRINTI "You are in a narrow room, whose "
ZERO? EAST? /?ELS29
PUSH STR?65
JUMP ?CND25
?ELS29: PUSH STR?66
?CND25: PRINT STACK
PRINTI " wall is a large "
ZERO? MWIN /?ELS37
PUSH STR?67
JUMP ?CND33
?ELS37: PUSH STR?68
?CND33: PRINT STACK
CRLF
ZERO? M1? /?CND41
ZERO? MIRROR-OPEN-FLAG /?CND41
ZERO? MWIN /?ELS52
PUSH STR?69
JUMP ?CND48
?ELS52: PUSH STR?70
?CND48: PRINT STACK
CRLF
?CND41: PRINTR "The opposite wall is solid rock."
.FUNCT MRDEW,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL EWTELL,HERE
SET 'GUARDIANS-SEEN,TRUE-VALUE
PRINTI "Somewhat to the south"
PRINT GUARDSTR
CRLF
RTRUE
.FUNCT MRCEW,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL EWTELL,HERE
SET 'GUARDIANS-SEEN,TRUE-VALUE
PRINTI "Somewhat to the north"
PRINT GUARDSTR
CRLF
RTRUE
.FUNCT MRBEW,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL EWTELL,HERE
PRINTR "To the north and south are large hallways."
.FUNCT MRAEW,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL EWTELL,HERE
PRINTR "To the north is a large hallway."
.FUNCT LOOK-TO,RMN,RMS,NORTH?=0,NTELL=0,STELL=0,MIR?,M1?=0,DIR
EQUAL? HERE,MREYE,FRONT-DOOR /?CND1
PRINTI "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."
CRLF
?CND1: EQUAL? HERE,MRG \?ELS8
SET 'GUARDIANS-SEEN,TRUE-VALUE
PRINTI "On either side of you are identical stone statues holding bludgeons. They appear ready to strike, though, for the moment, they remain impassive."
CRLF
JUMP ?CND6
?ELS8: EQUAL? HERE,MRC \?ELS12
SET 'GUARDIANS-SEEN,TRUE-VALUE
PRINTI "Somewhat to the north"
PRINT GUARDSTR
CRLF
SET 'NTELL,TRUE-VALUE
JUMP ?CND6
?ELS12: EQUAL? HERE,FRONT-DOOR \?ELS16
PRINTI "You are in a north-south hallway which ends, to the north, at a large wooden door."
CRLF
SET 'NTELL,TRUE-VALUE
JUMP ?CND6
?ELS16: EQUAL? HERE,MRD \?ELS20
SET 'GUARDIANS-SEEN,TRUE-VALUE
PRINTI "Somewhat to the south"
PRINT GUARDSTR
CRLF
SET 'STELL,TRUE-VALUE
JUMP ?CND6
?ELS20: EQUAL? HERE,MRA \?CND6
PRINTI "The hallway continues to the south."
CRLF
SET 'STELL,TRUE-VALUE
?CND6: EQUAL? MLOC,RMN,RMS \?CND27
EQUAL? MLOC,RMN \?ELS32
SET 'NORTH?,TRUE-VALUE
SET 'NTELL,TRUE-VALUE
SET 'DIR,STR?72
JUMP ?CND30
?ELS32: SET 'STELL,TRUE-VALUE
SET 'DIR,STR?73
?CND30: ZERO? NORTH? /?ELS39
GRTR? MDIR,180 \?ELS39
LESS? MDIR,359 \?ELS39
SET 'M1?,TRUE-VALUE
PUSH MR1-FLAG
JUMP ?CND35
?ELS39: ZERO? NORTH? \?ELS43
GRTR? MDIR,0 \?ELS43
LESS? MDIR,179 \?ELS43
SET 'M1?,TRUE-VALUE
PUSH MR1-FLAG
JUMP ?CND35
?ELS43: PUSH MR2-FLAG
?CND35: SET 'MIR?,STACK
MOD MDIR,180
ZERO? STACK \?ELS50
PRINTI "The "
PRINT DIR
PRINTI "th side of the room is divided by a wooden wall into small hallways to the "
PRINT DIR
PRINTI "theast and "
PRINT DIR
PRINTI "thwest."
CRLF
JUMP ?CND27
?ELS50: ZERO? MIR? /?ELS65
PUSH STR?74
JUMP ?CND61
?ELS65: PUSH STR?75
?CND61: PRINT STACK
PRINT DIR
PRINTI "th side of the hallway."
CRLF
ZERO? M1? /?CND48
ZERO? MIRROR-OPEN-FLAG /?CND48
ZERO? MIR? /?ELS80
PUSH STR?69
JUMP ?CND76
?ELS80: PUSH STR?70
?CND76: PRINT STACK
CRLF
?CND48:
?CND27: ZERO? NTELL \?ELS86
ZERO? STELL \?ELS86
PRINTR "The corridor continues north and south."
?ELS86: ZERO? NTELL \?ELS92
PRINTR "The corridor continues north."
?ELS92: ZERO? STELL \TRUE
PRINTR "The corridor continues south."
.FUNCT MRDF,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL LOOK-TO,FRONT-DOOR,MRG
RSTACK
.FUNCT MRCF,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL LOOK-TO,MRG,MRB
RSTACK
.FUNCT MRBF,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL LOOK-TO,MRC,MRA
RSTACK
.FUNCT MRAF,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL LOOK-TO,MRB,FALSE-VALUE
RSTACK
.FUNCT GUARDIANS,RARG=0
EQUAL? RARG,M-LOOK \?ELS5
EQUAL? HERE,MRG \?ELS10
CALL LOOK-TO,MRD,MRC
RSTACK
?ELS10: CALL EWTELL,HERE
PRINTR "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!"
?ELS5: EQUAL? RARG,M-ENTER \?ELS16
ZERO? INVIS \?ELS16
CALL JIGS-UP,STR?76
RSTACK
?ELS16: EQUAL? RARG,M-END \FALSE
EQUAL? PRSA,V?EXAMINE \?ELS22
EQUAL? HERE,IN-MIRROR \?ELS27
PRINTR "You can't see them from here."
?ELS27: PRINTR "The Guardians are quite impressive. I wouldn't get in their way if I were you!"
?ELS22: EQUAL? PRSA,V?THROW \?ELS35
EQUAL? PRSI,GUARDIAN \?ELS35
EQUAL? PRSO,ME \?ELS40
PRINTI "You step"
JUMP ?CND38
?ELS40: PRINTI "The "
PRINTD PRSO
PRINTI " falls"
REMOVE PRSO
?CND38: PRINTI " in front of the Guardians, who "
EQUAL? PRSO,ME \?ELS51
PRINTI "decimate you"
JUMP ?CND49
?ELS51: PRINTI "destroy it"
?CND49: PRINTR " in perfect unison. Satisfied, they resume their posts."
?ELS35: EQUAL? PRSA,V?ATTACK \?ELS61
PRINTR "You aren't close enough, and even if you were, the fight would be a bit one-sided."
?ELS61: EQUAL? PRSA,V?HELLO \FALSE
PRINTR "The statues are impassive."
.FUNCT MIRROR-DIR?,DIR,RM,TBL
EQUAL? DIR,P?NORTH \?ELS5
PUSH R-NORTHS
JUMP ?CND1
?ELS5: PUSH R-SOUTHS
?CND1: SET 'TBL,STACK
GETPT RM,DIR
ZERO? STACK /FALSE
CALL LKP,RM,TBL
EQUAL? MLOC,STACK \FALSE
EQUAL? DIR,P?NORTH \?ELS19
GRTR? MDIR,180 \?ELS19
LESS? MDIR,360 /TRUE
?ELS19: EQUAL? DIR,P?SOUTH \?ELS23
GRTR? MDIR,0 \?ELS23
LESS? MDIR,180 /TRUE
?ELS23: RETURN 2
.FUNCT WOODEN-WALL-F
MOD MDIR,180
ZERO? STACK \?ELS5
CALL MIRROR-DIR?,P?NORTH,HERE
ZERO? STACK \?THN8
CALL MIRROR-DIR?,P?SOUTH,HERE
ZERO? STACK /?ELS5
?THN8: EQUAL? PRSA,V?PUSH \FALSE
PRINTR "The structure won't budge."
?ELS5: PRINTR "You can't see any wooden wall here."
.FUNCT MIRROR-HERE?,RM,TMP
EQUAL? HERE,MRAE,MRAW,MRBE /?THN6
EQUAL? HERE,MRBW,MRCE,MRCW /?THN6
EQUAL? HERE,MRGE,MRGW,MRDE /?THN6
EQUAL? HERE,MRDW \?ELS5
?THN6: EQUAL? RM,MRAE,MRBE,MRCE /?THN18
EQUAL? RM,MRGE,MRDE \?ELS17
?THN18: PUSH 0
JUMP ?CND13
?ELS17: PUSH 180
?CND13: ADD MDIR,STACK
EQUAL? 180,STACK /TRUE
RETURN 2
?ELS5: MOD MDIR,180
ZERO? STACK /FALSE
CALL MIRROR-DIR?,P?NORTH,RM >TMP
ZERO? TMP /?ELS27
RETURN TMP
?ELS27: CALL MIRROR-DIR?,P?SOUTH,RM >TMP
ZERO? TMP /FALSE
RETURN TMP
.FUNCT MIRROR-FUNCTION,MIRROR
CALL MIRROR-HERE?,HERE >MIRROR
ZERO? MIRROR \?ELS5
PRINTR "You can't see any mirror here."
?ELS5: EQUAL? PRSA,V?MOVE,V?OPEN \?ELS9
PRINTR "You don't see a way to open the mirror here."
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE \?ELS13
EQUAL? MIRROR,1 \?ELS22
ZERO? MR1-FLAG \?THN19
?ELS22: ZERO? MR2-FLAG /?ELS18
?THN19: ZERO? INVIS /?ELS27
PRINTR "Amazingly, you have no reflection!"
?ELS27: PRINTR "A disheveled adventurer stares back at you."
?ELS18: PRINTR "You have destroyed the mirror, or have you forgotten?"
?ELS13: EQUAL? PRSA,V?MUNG \?ELS40
EQUAL? MIRROR,1 \?ELS45
ZERO? MR1-FLAG /?ELS50
SET 'MR1-FLAG,FALSE-VALUE
PRINTR "The mirror breaks, revealing a wooden panel behind it. The glistening fragments of mirror quietly sparkle into nonexistance."
?ELS50: PRINTR "The mirror has already been broken."
?ELS45: ZERO? MR2-FLAG /?ELS59
SET 'MR2-FLAG,FALSE-VALUE
PRINTR "The mirror breaks, revealing a wooden panel behind it. The glistening fragments of mirror quietly sparkle into nonexistance."
?ELS59: PRINTR "The mirror has already been broken."
?ELS40: EQUAL? MIRROR,1 \?ELS72
ZERO? MR1-FLAG /?THN69
?ELS72: ZERO? MR2-FLAG \?ELS68
?THN69: PRINTR "There's no mirror left."
?ELS68: EQUAL? PRSA,V?PUSH \FALSE
EQUAL? MIRROR,1 \?ELS83
PUSH STR?77
JUMP ?CND79
?ELS83: PUSH STR?78
?CND79: PRINT STACK
CRLF
RTRUE
.FUNCT PANEL-FUNCTION,MIRROR
CALL MIRROR-HERE?,HERE >MIRROR
ZERO? MIRROR \?ELS5
PRINTR "You can't see any panel here."
?ELS5: EQUAL? PRSA,V?MOVE,V?OPEN \?ELS9
PRINTR "You don't see a way to open the panel here."
?ELS9: EQUAL? PRSA,V?MUNG \?ELS13
EQUAL? MIRROR,1 \?ELS18
ZERO? MR1-FLAG /?ELS23
PRINT MIRROR-FIRST
CRLF
RTRUE
?ELS23: PRINTR "The panel is not that easily destroyed."
?ELS18: ZERO? MR2-FLAG /?ELS32
PRINT MIRROR-FIRST
CRLF
RTRUE
?ELS32: PRINTR "The panel is not that easily destroyed."
?ELS13: EQUAL? PRSA,V?PUSH \FALSE
EQUAL? MIRROR,1 \?ELS48
PUSH STR?79
JUMP ?CND44
?ELS48: PUSH STR?80
?CND44: PRINT STACK
CRLF
RTRUE
.FUNCT MIROUT,DIR,RM
EQUAL? PRSO,P?OUT \?ELS3
SET 'DIR,1
JUMP ?CND1
?ELS3: CALL LKP,PRSO,DIRVEC >DIR
?CND1: ZERO? MIRROR-OPEN-FLAG /?ELS10
EQUAL? DIR,1 /?THN17
ADD MDIR,270
MOD STACK,360
EQUAL? STACK,DIR \?ELS16
?THN17: MOD MDIR,180
ZERO? STACK \?ELS23
CALL MIREW
RSTACK
?ELS23: LESS? MDIR,180 /?PRD26
PUSH 0
JUMP ?PRD27
?PRD26: PUSH 1
?PRD27: CALL MIRNS,STACK,TRUE-VALUE
RSTACK
?ELS16: PRINTI "There's a wall there."
CRLF
RFALSE
?ELS10: ZERO? WOOD-OPEN-FLAG /?ELS33
EQUAL? DIR,1 /?THN40
ADD MDIR,180
MOD STACK,360
EQUAL? STACK,DIR \?ELS39
?THN40: ZERO? MDIR \?ELS44
SET 'RM,FALSE-VALUE
JUMP ?CND42
?ELS44: SET 'RM,TRUE-VALUE
?CND42: CALL MIRNS,RM,TRUE-VALUE >RM
ZERO? RM /?ELS51
PRINTI "As you leave, the door swings shut."
CRLF
SET 'WOOD-OPEN-FLAG,FALSE-VALUE
RETURN RM
?ELS51: PRINTI "You can't go that way."
CRLF
RFALSE
?ELS39: PRINTI "You would hit one of the panels."
CRLF
RFALSE
?ELS33: PRINTI "You are inside a closed box!"
CRLF
RFALSE
.FUNCT MIRNS,NORTH?,EXIT?=0,S,T
ZERO? EXIT? \?CND1
ZERO? NORTH? /?ELS6
EQUAL? MLOC,MRD /FALSE
?ELS6: ZERO? NORTH? \?CND1
EQUAL? MLOC,MRA /FALSE
?CND1: ZERO? NORTH? /?ELS22
PUSH P?NORTH
JUMP ?CND18
?ELS22: PUSH P?SOUTH
?CND18: GETPT MLOC,STACK >T
ZERO? T /FALSE
PTSIZE T >S
EQUAL? S,UEXIT \?ELS30
GETB T,0
RSTACK
?ELS30: ZERO? NORTH? /?ELS32
CALL LKP,MLOC,R-NORTHS
RSTACK
?ELS32: CALL LKP,MLOC,R-SOUTHS
RSTACK
.FUNCT MIREW
ZERO? MDIR \?ELS5
CALL LKP,MLOC,R-WESTS
RSTACK
?ELS5: CALL LKP,MLOC,R-EASTS
RSTACK
.FUNCT MIRIN,VRB=1
CALL MIRROR-HERE?,HERE
EQUAL? STACK,1 \?ELS5
ZERO? MIRROR-OPEN-FLAG /?ELS5
RETURN IN-MIRROR
?ELS5: ZERO? VRB /FALSE
CALL MIRROR-HERE?,HERE
EQUAL? STACK,1 \?ELS11
ZERO? MIRROR-OPENED \?ELS16
ZERO? MR1-FLAG /?ELS16
PRINTI "A mirror blocks your way."
CRLF
RFALSE
?ELS16: PRINTI "The panel is closed."
CRLF
RFALSE
?ELS11: PRINTI "The structure blocks your way."
CRLF
RFALSE
.FUNCT MREYE-ROOM,RARG=0,O
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?DROP \?ELS5
IN? PRSO,WINNER \?ELS5
CALL BEAM-STOPPED?
ZERO? STACK \?ELS5
MOVE PRSO,HERE
PRINTI "You conveniently drop the "
PRINTD PRSO
PRINTR " in position to block the beam of light."
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "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."
CRLF
CALL BEAM-STOPPED? >O
ZERO? O /?CND14
PRINTI "The beam is blocked by a "
PRINTD O
PRINTI " lying on the floor."
CRLF
?CND14: CALL LOOK-TO,MRA,FALSE-VALUE
RSTACK
.FUNCT BEAM-STOPPED?,N
FIRST? MREYE >N /?KLU8
?KLU8:
?PRG1: EQUAL? N,PLAYER,BEAM /?ELS5
SET 'BEAM-BREAKER,N
RETURN N
?ELS5: NEXT? N >N /?PRG1
RFALSE
.FUNCT BEAM-FUNCTION,PRO,PRI
EQUAL? PRSA,V?LEAP \?ELS5
PRINTI "You jump over the beam and into the hallway."
CRLF
CALL GOTO,MRA
RTRUE
?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS9
PRINTR "It simply crosses the northern end of the room, so there's nowhere to follow it."
?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13
PRINTI "The red beam of light crosses the north end of the room only an inch or so above the floor."
CALL BEAM-STOPPED?
ZERO? STACK /?CND16
PRINTI " The beam is broken by a "
PRINTD BEAM-BREAKER
PRINTI " lying on the ground."
?CND16: CRLF
RTRUE
?ELS13: EQUAL? PRSA,V?MUNG,V?PUT \?ELS22
EQUAL? PRSA,V?PUT \?ELS25
SET 'PRI,PRSO
SET 'PRO,PRSI
JUMP ?CND23
?ELS25: SET 'PRI,PRSI
SET 'PRO,PRSO
?CND23: ZERO? PRI /FALSE
EQUAL? PRO,BEAM \FALSE
IN? PRI,WINNER \?ELS36
MOVE PRI,HERE
SET 'BEAM-BREAKER,PRI
PRINTI "The beam is now interrupted by a "
PRINTD PRI
PRINTR " lying on the floor."
?ELS36: IN? PRI,HERE \?ELS40
PRINTI "The "
PRINTD PRI
PRINTR " already breaks the beam."
?ELS40: EQUAL? PRI,HANDS \?ELS44
PRINTR "The beam is broken briefly as it passes through."
?ELS44: PRINTI "You're not holding the "
PRINTD PRI
PRINTR "."
?ELS22: EQUAL? PRSA,V?TAKE \FALSE
EQUAL? PRSO,BEAM \FALSE
PRINTR "No doubt you have a bottle of moonbeams as well."
.FUNCT MRSWITCH
EQUAL? PRSA,V?PUSH \FALSE
ZERO? MRSWPUSH-FLAG /?ELS10
PRINTR "Click."
?ELS10: CALL BEAM-STOPPED?
ZERO? STACK /?ELS20
PRINTI "Click. Snap!"
CRLF
CALL QUEUE,I-MRINT,7
PUT STACK,0,1
SET 'MRSWPUSH-FLAG,TRUE-VALUE
SET 'MIRROR-OPEN-FLAG,TRUE-VALUE
SET 'MIRROR-OPENED,TRUE-VALUE
FCLEAR MRA,TOUCHBIT
RTRUE
?ELS20: PRINTR "Click."
.FUNCT I-MRINT
SET 'MRSWPUSH-FLAG,FALSE-VALUE
SET 'MIRROR-OPEN-FLAG,FALSE-VALUE
CALL MIRROR-HERE?,HERE
EQUAL? STACK,1 /?THN6
EQUAL? HERE,IN-MIRROR \?ELS5
?THN6: PRINTR "The mirror quietly swings shut."
?ELS5: EQUAL? HERE,MR-ANTE \FALSE
PRINTR "The button pops back to its original position."
.FUNCT MAGIC-MIRROR,RARG=0
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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 "
EQUAL? MLOC,MRB \?ELS10
EQUAL? MDIR,270 \?ELS10
ZERO? POLEUP-FLAG /?ELS15
PRINTI "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."
JUMP ?CND8
?ELS15: PRINTI "has been dropped into a hole carved in the stone floor."
JUMP ?CND8
?ELS10: EQUAL? MDIR,0,180 \?ELS23
ZERO? POLEUP-FLAG /?ELS26
PRINTI "is positioned above the stone channel in the floor."
JUMP ?CND8
?ELS26: PRINTI "has been dropped into the stone channel incised in the floor."
JUMP ?CND8
?ELS23: PRINTI "is resting on the stone floor."
?CND8: PRINTI "
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 "
DIV MDIR,45
GET LONGDIRS,STACK
PRINT STACK
PRINTI "."
ZERO? WOOD-OPEN-FLAG /?CND39
PRINTI "
The pine panel has been opened outward."
?CND39: CRLF
RTRUE
.FUNCT MPANELS,MD
EQUAL? PRSA,V?PUSH \FALSE
ZERO? POLEUP-FLAG /?ELS10
EQUAL? MLOC,MRG \?CND11
ZERO? GUARDIANS-SEEN /?ELS16
CALL JIGS-UP,STR?88
RTRUE
?ELS16: CALL JIGS-UP,STR?89
RTRUE
?CND11: EQUAL? PRSO,RED-PANEL,YELLOW-PANEL \?ELS22
ADD MDIR,45
MOD STACK,360 >MD
PRINTI "The structure rotates clockwise."
CRLF
JUMP ?CND20
?ELS22: ADD MDIR,315
MOD STACK,360 >MD
PRINTI "The structure rotates counterclockwise."
CRLF
?CND20: PRINTI "The arrow on the compass rose now indicates "
DIV MD,45
GET LONGDIRS,STACK
PRINT STACK
PRINTI "."
CRLF
ZERO? WOOD-OPEN-FLAG /?CND31
SET 'WOOD-OPEN-FLAG,FALSE-VALUE
PRINTI "The pine wall closes quietly."
CRLF
?CND31: SET 'MDIR,MD
RTRUE
?ELS10: MOD MDIR,180
ZERO? STACK \?ELS38
PRINTR "The short pole prevents the structure from rotating."
?ELS38: PRINTR "The structure shakes slightly but doesn't move."
.FUNCT MENDS,RM
EQUAL? PRSA,V?CLOSE \?ELS5
PRINTR "You can't do that to the panel."
?ELS5: EQUAL? PRSA,V?PUSH /?THN10
EQUAL? PRSA,V?OPEN \FALSE
EQUAL? PRSO,PINE-PANEL \FALSE
?THN10: MOD MDIR,180
ZERO? STACK /?ELS18
PRINTR "The structure rocks back and forth slightly but doesn't move."
?ELS18: EQUAL? PRSO,MAHOGANY-PANEL \?ELS22
LESS? MDIR,180 /?PRD28
PUSH 0
JUMP ?PRD29
?PRD28: PUSH 1
?PRD29: CALL MIRNS,STACK >RM
ZERO? RM /?ELS27
ZERO? MDIR /?PRD30
PUSH 0
JUMP ?PRD31
?PRD30: PUSH 1
?PRD31: CALL MIRMOVE,STACK,RM
RSTACK
?ELS27: PRINTR "The structure has reached the end of the stone channel and won't budge."
?ELS22: PRINTI "The pine wall swings open."
CRLF
EQUAL? MLOC,MRD \?ELS46
ZERO? MDIR /?THN43
?ELS46: EQUAL? MLOC,MRC \?ELS48
EQUAL? MDIR,180 /?THN43
?ELS48: EQUAL? MLOC,MRG \?CND40
?THN43: ZERO? GUARDIANS-SEEN /?ELS51
PRINTI "The pine door opens into the field of view of the Guardians."
CRLF
JUMP ?CND49
?ELS51: PRINTI "The pine door opens into the field of view of the Guardians of Zork, represented by two identical stone statues carrying bludgeons."
CRLF
?CND49: CALL JIGS-UP,STR?88
RTRUE
?CND40: SET 'WOOD-OPEN-FLAG,TRUE-VALUE
CALL QUEUE,I-PININ,5
PUT STACK,0,1
RTRUE
.FUNCT I-PININ
ZERO? WOOD-OPEN-FLAG /FALSE
SET 'WOOD-OPEN-FLAG,FALSE-VALUE
PRINTR "The pine wall closes quietly."
.FUNCT MIRMOVE,NORTH?,RM,PU?=0,LOSE=0
ZERO? POLEUP-FLAG /?CND1
SET 'PU?,TRUE-VALUE
?CND1: ZERO? PU? /?ELS10
PUSH STR?90
JUMP ?CND6
?ELS10: PUSH STR?91
?CND6: PRINT STACK
ZERO? NORTH? /?ELS18
PUSH STR?82
JUMP ?CND14
?ELS18: PUSH STR?85
?CND14: PRINT STACK
PRINTI " and stops over another compass rose."
CRLF
SET 'MLOC,RM
EQUAL? RM,MRG \TRUE
EQUAL? HERE,IN-MIRROR \TRUE
ZERO? PU? /?ELS29
SET 'LOSE,TRUE-VALUE
JUMP ?CND27
?ELS29: ZERO? MR1-FLAG /?THN33
ZERO? MR2-FLAG \?ELS32
?THN33: SET 'LOSE,TRUE-VALUE
JUMP ?CND27
?ELS32: ZERO? MIRROR-OPEN-FLAG \?THN37
ZERO? WOOD-OPEN-FLAG /?CND27
?THN37: SET 'LOSE,TRUE-VALUE
?CND27: ZERO? LOSE /TRUE
ZERO? GUARDIANS-SEEN /?ELS45
CALL JIGS-UP,STR?92
RTRUE
?ELS45: CALL JIGS-UP,STR?93
RTRUE
.FUNCT SHORT-POLE-F
EQUAL? PRSA,V?MOVE,V?RAISE \?ELS5
EQUAL? POLEUP-FLAG,2 \?ELS10
PRINTR "The pole cannot be raised further."
?ELS10: SET 'POLEUP-FLAG,2
PRINTR "The pole is now slightly above the floor."
?ELS5: EQUAL? PRSA,V?PUT \?ELS22
EQUAL? PRSI,CHANNEL /?THN19
?ELS22: EQUAL? PRSA,V?LOWER,V?PUSH \FALSE
?THN19: ZERO? POLEUP-FLAG \?ELS27
PRINTR "The pole cannot be lowered further."
?ELS27: MOD MDIR,180
ZERO? STACK \?ELS31
PRINTI "The pole is lowered into the channel."
CRLF
SET 'POLEUP-FLAG,0
RTRUE
?ELS31: EQUAL? MDIR,270 \?ELS35
EQUAL? MLOC,MRB \?ELS35
SET 'POLEUP-FLAG,0
PRINTR "The pole is lowered into the stone hole."
?ELS35: EQUAL? POLEUP-FLAG,1 \?ELS41
PRINTR "The pole is already resting on the floor."
?ELS41: SET 'POLEUP-FLAG,1
PRINTR "The pole now rests on the stone floor."
.FUNCT DUNGEON-MASTER-F,RARG=0
EQUAL? RARG,M-OBJDESC /FALSE
EQUAL? WINNER,DUNGEON-MASTER \?ELS7
EQUAL? PRSA,V?FOLLOW \?ELS12
LOC PLAYER
IN? DUNGEON-MASTER,STACK \?ELS17
CALL QUEUE,I-FOLIN,-1
PUT STACK,0,1
PRINTR "The dungeon master answers, ""I will follow."""
?ELS17: PRINTR "The dungeon master's voice replies, ""You must come here first!"""
?ELS12: EQUAL? PRSA,V?WAIT,V?STAY \?ELS25
CALL QUEUE,I-FOLIN,0
PRINTR "The dungeon master answers, ""I will stay."""
?ELS25: EQUAL? PRSA,V?WALK \?ELS29
EQUAL? PRSO,P?SOUTH,P?ENTER \?ELS34
EQUAL? HERE,NORTH-CORRIDOR \?ELS34
PRINTR """I am not permitted to enter the prison cell."""
?ELS34: EQUAL? PRSO,P?NORTH \?ELS40
EQUAL? HERE,NORTH-CORRIDOR \?ELS40
MOVE DUNGEON-MASTER,PARAPET
SET 'HERE,PARAPET
PRINTI """Very well. I am at the parapet!"""
CRLF
CALL QUEUE,I-FOLIN,0
RSTACK
?ELS40: EQUAL? PRSO,P?NORTH,P?ENTER \?ELS46
EQUAL? HERE,SOUTH-CORRIDOR \?ELS46
PRINTR """I am not permitted to enter the prison cell."""
?ELS46: PRINTR """I prefer to stay where I am, thank you."""
?ELS29: EQUAL? PRSA,V?WALK-TO \?ELS56
EQUAL? PRSO,PARAPET-OBJ \?ELS56
MOVE DUNGEON-MASTER,PARAPET
SET 'HERE,PARAPET
CALL QUEUE,I-FOLIN,0
PRINTR """Very well!"""
?ELS56: EQUAL? PRSA,V?TAKE \?ELS62
PRINTR """I will have no use for that, I am afraid."""
?ELS62: EQUAL? PRSA,V?OPEN \?ELS66
EQUAL? PRSO,DUNGEON-DOOR \?ELS66
ZERO? IN-DUNGEON /?ELS66
PRINTR "The dungeon master appears angered. ""Do not run from your quest: you are nearing the end!"""
?ELS66: EQUAL? PRSA,V?SPIN,V?TURN,V?PUSH /?THN73
EQUAL? PRSA,V?OPEN,V?STAY,V?FOLLOW /?THN73
EQUAL? PRSA,V?ATTACK,V?WAIT,V?CLOSE /?THN73
EQUAL? PRSA,V?WALK-TO \?ELS72
?THN73: EQUAL? PRSA,V?WAIT,V?FOLLOW,V?STAY /FALSE
PRINTI """If you wish,"" he replies."
CRLF
RFALSE
?ELS72: PRINTR """Do not be foolish! Consider the end of your quest!"""
?ELS7: EQUAL? PRSA,V?EXAMINE \?ELS87
PRINTR "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."
?ELS87: EQUAL? PRSA,V?MUNG,V?ATTACK \?ELS91
CALL REALLY-DEAD,STR?94
RSTACK
?ELS91: EQUAL? PRSA,V?TAKE \?ELS93
PRINTR """I'm willing to accompany you, but not ride in your pocket!"""
?ELS93: EQUAL? PRSA,V?GIVE \FALSE
EQUAL? PRSI,DUNGEON-MASTER \FALSE
PRINTR """I have no need for those things."""
.FUNCT MASTER-F
EQUAL? HERE,PRISON-CELL,GOOD-CELL \?ELS5
CALL HELLO?,MASTER
ZERO? STACK /?ELS10
PRINTR "He can't hear you."
?ELS10: PRINTR "He is not here."
?ELS5: EQUAL? PRSA,V?TELL \?ELS18
ZERO? IN-DUNGEON /?ELS23
SET 'PRSO,DUNGEON-MASTER
RFALSE
?ELS23: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTR "The dungeon master isn't here."
?ELS18: EQUAL? PRSA,V?SGIVE,V?GIVE \?ELS30
IN? DUNGEON-MASTER,HERE \?ELS30
PRINTR "He politely refuses your offer."
?ELS30: EQUAL? PRSA,V?EXAMINE \?ELS36
EQUAL? HERE,CELL,NORTH-CORRIDOR \?ELS36
IN? DUNGEON-MASTER,PARAPET \?ELS36
PRINTR "The dungeon master is standing on the parapet."
?ELS36: PRINTR "The dungeon master isn't here."
.FUNCT BEHIND-DOOR-F,RARG=0
EQUAL? RARG,M-ENTER \?ELS5
ZERO? DM-SEEN \?ELS5
CALL QUEUE,I-FOLIN,-1
PUT STACK,0,1
SET 'DM-SEEN,TRUE-VALUE
RETURN DM-SEEN
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "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 "
CALL DPR,DUNGEON-DOOR
RSTACK
.FUNCT FRONT-DOOR-F,RARG=0
EQUAL? RARG,M-ENTER \?ELS5
CALL QUEUE,I-FOLIN,0
RSTACK
?ELS5: EQUAL? RARG,M-LOOK \FALSE
CALL LOOK-TO,FALSE-VALUE,MRD
PRINTI "The wooden door has a barred panel in it at about head height. The door itself is "
CALL DPR,DUNGEON-DOOR
RSTACK
.FUNCT LOOK-LIKE-DM?
IN? CLOAK,WINNER \FALSE
IN? HOOD,WINNER \FALSE
IN? AMULET,WINNER \FALSE
IN? STAFF,WINNER \FALSE
IN? RING,WINNER \FALSE
IN? LORE-BOOK,WINNER \FALSE
IN? KEY,WINNER /TRUE
RFALSE
.FUNCT DUNGEON-PANEL-F
EQUAL? PRSA,V?OPEN \?ELS5
PRINTR "You can't open the panel. It's set into the door."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "There's not much to be seen."
.FUNCT DUNGEON-DOOR-F
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
PRINTR "The door won't budge."
?ELS5: EQUAL? PRSA,V?KNOCK \FALSE
EQUAL? HERE,FRONT-DOOR \FALSE
PRINTI "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."
ZERO? INVIS /?CND14
PRINTI " He seems not to notice you for a brief moment, then recovers."
?CND14: CALL LOOK-LIKE-DM?
ZERO? STACK /?ELS24
PRINTI " 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!""
"
CRLF
CALL GOTO,BEHIND-DOOR
SET 'IN-DUNGEON,TRUE-VALUE
RETURN IN-DUNGEON
?ELS24: PRINTI " He looks you over with a piercing gaze and then speaks gravely. ""I have been waiting a long time for you, "
CALL DMISH
GET DM-REASONS,STACK
PRINT STACK
PRINTI " 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."
CRLF
CALL GOTO,MR-ANTE,FALSE-VALUE
RTRUE
.FUNCT DMISH,CNT=0
IN? AMULET,WINNER \?CND1
INC 'CNT
?CND1: IN? LORE-BOOK,WINNER \?CND4
INC 'CNT
?CND4: IN? HOOD,WINNER \?CND7
INC 'CNT
?CND7: IN? CLOAK,WINNER \?CND10
INC 'CNT
?CND10: IN? RING,WINNER \?CND13
INC 'CNT
?CND13: IN? KEY,WINNER \?CND16
INC 'CNT
?CND16: IN? STAFF,WINNER \?CND19
INC 'CNT
RETURN CNT
?CND19: RETURN CNT
.FUNCT I-FOLIN
IN? DUNGEON-MASTER,HERE /FALSE
EQUAL? HERE,PRISON-CELL,CELL \?ELS7
ZERO? FOLFLAG /?ELS7
PRINTI "You notice that the dungeon master doesn't follow you."
CRLF
SET 'FOLFLAG,FALSE-VALUE
RTRUE
?ELS7: LOC PLAYER
EQUAL? STACK,PRISON-CELL,CELL /FALSE
ZERO? FOLFLAG \?ELS15
SET 'FOLFLAG,TRUE-VALUE
PRINTI "The dungeon master rejoins you."
CRLF
MOVE DUNGEON-MASTER,HERE
RTRUE
?ELS15: PRINTI "The dungeon master follows you."
CRLF
MOVE DUNGEON-MASTER,HERE
RTRUE
.FUNCT MOVE-CELL-OBJECTS,TOP,CNT,F,X
SUB LCELL,1
MUL 8,STACK >TOP
ADD TOP,1 >CNT
FIRST? CELL >F /?KLU24
?KLU24: ZERO? F /?CND1
?PRG5: NEXT? F >X /?KLU25
?KLU25: ZERO? F \?ELS9
JUMP ?CND1
?ELS9: PUT CELLOBJS,CNT,F
REMOVE F
INC 'CNT
?CND7: ZERO? X \?ELS14
JUMP ?CND1
?ELS14: SET 'F,X
JUMP ?PRG5
?CND1: SUB CNT,TOP
SUB STACK,1
PUT CELLOBJS,TOP,STACK
SUB PNUMB,1
MUL 8,STACK >TOP
GET CELLOBJS,TOP >CNT
?PRG17: ZERO? CNT /TRUE
INC 'TOP
GET CELLOBJS,TOP
MOVE STACK,CELL
DEC 'CNT
JUMP ?PRG17
.FUNCT CELL-MOVE,F,X
FCLEAR CELL-DOOR,OPENBIT
FCLEAR BRONZE-DOOR,OPENBIT
EQUAL? PNUMB,LCELL /FALSE
EQUAL? PNUMB,4 \?ELS8
FCLEAR BRONZE-DOOR,INVISIBLE
JUMP ?CND6
?ELS8: FSET BRONZE-DOOR,INVISIBLE
?CND6: IN? PLAYER,CELL \?ELS13
SET 'WINNER,PLAYER
FCLEAR GOOD-CELL,TOUCHBIT
FCLEAR PRISON-CELL,TOUCHBIT
EQUAL? LCELL,4 \?ELS18
FCLEAR BRONZE-DOOR,INVISIBLE
PUSH GOOD-CELL
JUMP ?CND14
?ELS18: PUSH PRISON-CELL
?CND14: CALL GOTO,STACK
FIRST? CELL >F /?KLU39
?KLU39: ZERO? F /?CND11
?PRG25: NEXT? F >X /?KLU40
?KLU40: ZERO? F \?ELS29
JUMP ?CND11
?ELS29: MOVE F,HERE
?CND27: ZERO? X \?ELS34
JUMP ?CND11
?ELS34: SET 'F,X
JUMP ?PRG25
?ELS13: CALL MOVE-CELL-OBJECTS
?CND11: SET 'LCELL,PNUMB
RETURN LCELL
.FUNCT PARAPET-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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 "
PRINTN PNUMB
PRINTI "."
CRLF
PRINTR "To the south, across a narrow corridor, is a prison cell."
.FUNCT DIAL,N
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The dial points to "
PRINTN PNUMB
PRINTR "."
?ELS5: EQUAL? PRSA,V?TURN \?ELS9
EQUAL? PRSI,INTNUM \?ELS14
ZERO? P-NUMBER /?THN18
GRTR? P-NUMBER,8 \?CND15
?THN18: PRINTR "There is no such setting."
?CND15: SET 'PNUMB,P-NUMBER
EQUAL? WINNER,PLAYER \TRUE
PRINTI "The dial now points to "
PRINTN PNUMB
PRINTR "."
?ELS14: ZERO? PRSI \?ELS28
PRINTR "You must specify what to set the dial to."
?ELS28: PRINTR "The dial face only contains numbers."
?ELS9: EQUAL? PRSA,V?SPIN \FALSE
RANDOM 8 >PNUMB
EQUAL? WINNER,PLAYER \TRUE
PRINTI "The dial spins and comes to a stop pointing at "
PRINTN PNUMB
PRINTI "."
RTRUE
.FUNCT DIALBUTTON,C
FSET? CELL-DOOR,OPENBIT /?PRD1
PUSH 0
JUMP ?PRD2
?PRD1: PUSH 1
?PRD2: SET 'C,STACK
FCLEAR CELL,TOUCHBIT
EQUAL? PRSA,V?PUSH \FALSE
EQUAL? WINNER,PLAYER \?CND8
PRINTI "The button depresses with a slight click, and pops back."
CRLF
?CND8: CALL CELL-MOVE
ZERO? C /TRUE
PRINTR "You notice that the cell door is now closed."
.FUNCT CELL-ROOM,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a featureless prison cell. You can see "
FSET? CELL-DOOR,OPENBIT \?ELS10
PRINTI "an east-west corridor outside the cell door. Your view also takes in the parapet and a large, fiery pit."
CRLF
JUMP ?CND8
?ELS10: PRINTI "through the small window in the closed door the parapet, and, behind that, smoke and flames rising from a fiery pit."
CRLF
?CND8: IN? DUNGEON-MASTER,PARAPET \?CND17
PRINTI "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."
CRLF
?CND17: EQUAL? LCELL,4 \TRUE
PRINTI "Behind you, to the south, is a bronze door which is "
CALL DPR,BRONZE-DOOR
RTRUE
.FUNCT NCELL-ROOM,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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 "
CALL DPR,BRONZE-DOOR
RSTACK
.FUNCT DPR,OBJ
FSET? OBJ,OPENBIT \?ELS5
PRINTR "open."
?ELS5: PRINTR "closed."
.FUNCT NORTH-CORRIDOR-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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 "
CALL DPR,CELL-DOOR
RSTACK
.FUNCT SOUTH-CORRIDOR-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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."
CRLF
EQUAL? LCELL,4 \TRUE
PRINTI "In the center of the north wall is a bronze door which is "
CALL DPR,BRONZE-DOOR
RTRUE
.FUNCT BRONZE-DOOR-F
EQUAL? PRSA,V?OPEN \?ELS5
FSET? BRONZE-DOOR,OPENBIT /?ELS5
EQUAL? HERE,GOOD-CELL \?ELS5
ZERO? BRONZE-DOOR-LOCKED \?ELS5
PRINTI "On the other side of the bronze door is a narrow passage which opens out into a larger area."
CRLF
FSET BRONZE-DOOR,OPENBIT
RTRUE
?ELS5: EQUAL? PRSA,V?OPEN \FALSE
ZERO? BRONZE-DOOR-LOCKED /FALSE
PRINTR "The bronze door is locked."
.FUNCT LOCKED-DOOR-F
EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE
PRINTR "The door is securely fastened."
.FUNCT NIRVANA-F,RARG
EQUAL? RARG,M-END \FALSE
PRINTI "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.
"
CALL FINISH
RSTACK
.FUNCT BRONZE-DOOR-EXIT
FSET? BRONZE-DOOR,INVISIBLE \?ELS5
PRINTI "You can't go that way."
CRLF
RFALSE
?ELS5: FSET? BRONZE-DOOR,OPENBIT \?ELS9
RETURN CELL
?ELS9: PRINTI "The bronze door is closed."
CRLF
RFALSE
.FUNCT SECRET-DOOR-F
EQUAL? PRSA,V?OPEN \FALSE
FSET? SECRET-DOOR,OPENBIT /FALSE
PRINTI "The massive stone door opens noiselessly. "
PRINT SECRET-DOOR-DESC
CRLF
FSET SECRET-DOOR,OPENBIT
RTRUE
.FUNCT MSTAIRS-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
RANDOM 100
GRTR? 30,STACK \?ELS5
ZERO? OLD-MAN-FED \?ELS5
ZERO? OLD-MAN-GONE \?ELS5
MOVE OLD-MAN,HERE
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "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."
CRLF
FSET? SECRET-DOOR,OPENBIT \?ELS16
PRINT SECRET-DOOR-DESC
CRLF
RTRUE
?ELS16: FSET? SECRET-DOOR,INVISIBLE /FALSE
PRINTR "The outline of a door is barely visible among the runes."
.FUNCT HELLO?,WHO
EQUAL? WINNER,WHO /?THN6
EQUAL? PRSA,V?REPLY,V?ANSWER,V?TELL /?THN6
EQUAL? PRSA,V?INCANT,V?HELLO,V?SAY \FALSE
?THN6: EQUAL? PRSA,V?SAY,V?ANSWER,V?TELL /?THN11
EQUAL? PRSA,V?REPLY,V?INCANT \TRUE
?THN11: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT OLD-MAN-F,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
ZERO? OLD-MAN-AWAKE /?ELS10
PRINTR "There is an old man huddled in the corner, eyeing you cautiously. He looks weak and tired."
?ELS10: PRINTR "An old and wizened man is huddled, asleep, in the corner. He is snoring loudly, and looks quite weak and frail."
?ELS5: EQUAL? PRSA,V?GIVE \?ELS19
EQUAL? PRSI,OLD-MAN \?ELS19
ZERO? OLD-MAN-AWAKE /?ELS26
EQUAL? PRSO,WAYBREAD \?ELS32
REMOVE WAYBREAD
PRINTI "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!"
CRLF
FCLEAR SECRET-DOOR,INVISIBLE
SET 'OLD-MAN-GONE,TRUE-VALUE
REMOVE OLD-MAN
RTRUE
?ELS32: IN? WAYBREAD,WINNER \?ELS36
PRINTR "He refuses your offer but motions with his arm to the waybread in your hand."
?ELS36: PRINTI "The old man refuses the "
PRINTD PRSO
PRINTR " with a wave of his hand."
?ELS26: PRINTR "He is asleep!"
?ELS19: EQUAL? PRSA,V?EXAMINE \?ELS48
ZERO? OLD-MAN-AWAKE /?ELS53
PRINTR "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."
?ELS53: PRINTR "The man is very, very old and wizened. He has a long, stringy beard and is snoring quite loudly."
?ELS48: EQUAL? PRSA,V?LISTEN \?ELS62
ZERO? OLD-MAN-AWAKE /?ELS67
PRINTR "He isn't talking."
?ELS67: PRINTR "He is snoring like a buzz saw."
?ELS62: CALL HELLO?,OLD-MAN
ZERO? STACK /?ELS76
ZERO? OLD-MAN-AWAKE /?ELS81
PRINTR "He nods at you without seeming to have understood."
?ELS81: PRINTR "He is sleeping soundly and does not respond."
?ELS76: EQUAL? PRSA,V?ALARM,V?SHAKE \?ELS90
PRINTI "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."
CRLF
SET 'OLD-MAN-AWAKE,TRUE-VALUE
CALL QUEUE,I-OLD-MAN-SLEEPS,3
PUT STACK,0,1
RTRUE
?ELS90: EQUAL? PRSA,V?MUNG,V?ATTACK \FALSE
PRINTI "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."
CRLF
SET 'OLD-MAN-GONE,TRUE-VALUE
REMOVE OLD-MAN
RTRUE
.FUNCT I-OLD-MAN-SLEEPS
SET 'OLD-MAN-AWAKE,FALSE-VALUE
IN? OLD-MAN,HERE \FALSE
PRINTR "You notice that the old man has fallen asleep."
.FUNCT RUNES-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTR "The runes are in an ancient language. Some pictures among the runes depict flames, stone statues, and an old man."
.FUNCT T-BAR-F
EQUAL? PRSA,V?TURN \FALSE
PRINTR "You don't have enough leverage to turn the T-bar. You might be able to turn the whole structure, however."
.FUNCT FLAMING-PIT-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The flaming pit is a seemingly bottomless abyss filled with smoke and flame."
?ELS5: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,FLAMING-PIT \FALSE
EQUAL? HERE,PARAPET,NORTH-CORRIDOR \?ELS16
EQUAL? PRSO,ME \?ELS21
PRINTR "It would be a pity to end your life so near the end of your quest!"
?ELS21: PRINTI "You cast the "
PRINTD PRSO
PRINTI " into the pit, where it is lost forever."
CRLF
REMOVE PRSO
RTRUE
?ELS16: PRINTR "You're not close enough."
.FUNCT PARAPET-OBJ-F
EQUAL? PRSA,V?EXAMINE \FALSE
EQUAL? HERE,CELL,NORTH-CORRIDOR \?ELS10
PRINTI "You can see the parapet and sundial from here."
IN? DUNGEON-MASTER,PARAPET \?CND13
PRINTI " The dungeon master is there also, leaning on his staff."
?CND13: CRLF
RTRUE
?ELS10: CALL V-LOOK
RSTACK
.FUNCT ROSE-F
EQUAL? PRSA,V?MOVE,V?TURN \FALSE
PRINTR "The compass rose is made of stone and is imbedded in the ground. You could not possibly turn it or move it."
.FUNCT CELL-DOOR-F
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,CELL-DOOR \?ELS5
PRINTR "You will have to enter the cell first."
?ELS5: EQUAL? PRSA,V?THROUGH \FALSE
EQUAL? HERE,CELL \?ELS16
PRINTR "Look around."
?ELS16: CALL DO-WALK,P?SOUTH
RTRUE
.FUNCT LORE-BOOK-F
EQUAL? PRSA,V?BURN \?ELS5
IN? LORE-BOOK,WINNER /?ELS5
PRINTI "The book is consumed in a dazzling display of color."
CRLF
REMOVE PRSO
RTRUE
?ELS5: ZERO? IN-DUNGEON /?ELS11
EQUAL? PRSA,V?READ,V?EXAMINE,V?OPEN \?ELS11
PRINTR "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."""
?ELS11: EQUAL? PRSA,V?OPEN \FALSE
PRINTR "The book can be perused but not left open."
.FUNCT CP-HOLE-F
EQUAL? PRSA,V?THROUGH \FALSE
CALL DO-WALK,P?DOWN
RTRUE
.FUNCT TORCH-PSEUDO
PRINTR "The torches are out of reach."
.FUNCT WATER-FCN,AV,PI?
EQUAL? PRSA,V?SGIVE /FALSE
EQUAL? PRSA,V?THROUGH \?ELS5
CALL PERFORM,V?SWIM,PRSO
RTRUE
?ELS5: EQUAL? PRSA,V?FILL \?ELS7
SET 'PRSA,V?PUT
SET 'PRSI,PRSO
SET 'PRSO,GLOBAL-WATER
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?ELS7: EQUAL? PRSO,GLOBAL-WATER \?ELS9
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?ELS9: ZERO? PRSI /?CND1
SET 'PI?,TRUE-VALUE
?CND1: ZERO? PI? /?ELS15
SET 'PRSI,GLOBAL-WATER
JUMP ?CND13
?ELS15: SET 'PRSO,GLOBAL-WATER
?CND13: EQUAL? PRSA,V?PUT,V?TAKE \?ELS23
ZERO? PI? \?ELS23
PRINTR "The water slips through your fingers."
?ELS23: ZERO? PI? /?ELS29
PRINTR "You can't do that."
?ELS29: EQUAL? PRSA,V?THROW,V?GIVE,V?DROP \FALSE
PRINTR "You don't have any water."
.FUNCT RANDOM-WALL
EQUAL? PRSA,V?PUSH \FALSE
EQUAL? HERE,IN-MIRROR \?ELS10
PRINTR "You should specify which panel you want to push."
?ELS10: PRINTR "You can't budge it; at least from here."
.FUNCT V-DIAGNOSE
GET DIAG,P-STRENGTH
PRINT STACK
CRLF
RTRUE
.FUNCT JIGS-UP,DESC,PLAYER?=0
SET 'SWORD-STATE,0
SET 'P-STRENGTH,5
SET 'S-STRENGTH,5
PRINT DESC
CRLF
EQUAL? YEAR,YEAR-PRESENT /?CND3
QUIT
?CND3: EQUAL? ADVENTURER,WINNER /?CND6
PRINTI "
**** The "
PRINTD WINNER
PRINTI " has died ****
"
REMOVE WINNER
SET 'WINNER,ADVENTURER
LOC WINNER >HERE
RETURN 2
?CND6: PRINTI "
**** You have died ****
"
IGRTR? 'DEATHS,3 \?ELS17
PRINTI "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."
CRLF
QUIT
JUMP ?CND15
?ELS17: PRINTI "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."
CRLF
?CND15: MOVE CURRENT-LAMP,ZORK2-STAIR
IN? KEY,WINNER \?CND24
EQUAL? HERE,DARK-1,DARK-2,KEY-ROOM /?THN29
EQUAL? HERE,AQ-1,AQ-2 \?CND24
?THN29: MOVE KEY,KEY-ROOM
?CND24: CRLF
CALL GOTO,ZORK2-STAIR
SET 'P-CONT,FALSE-VALUE
CALL RANDOMIZE-OBJECTS
CALL KILL-INTERRUPTS
RETURN 2
.FUNCT RANDOMIZE-OBJECTS,R=0,F,N,L
FIRST? WINNER >N /?KLU6
?KLU6:
?PRG1: SET 'F,N
ZERO? F /TRUE
NEXT? F >N /?KLU7
?KLU7: CALL RANDOM-ELEMENT,DEAD-OBJ-LOCS
MOVE F,STACK
JUMP ?PRG1
.FUNCT KILL-INTERRUPTS
CALL INT,I-MAN-LEAVES
PUT STACK,0,0
CALL INT,I-MAN-RETURNS
PUT STACK,0,0
CALL INT,I-VIEW-SNAP
PUT STACK,0,0
CALL INT,I-FOLIN
PUT STACK,0,0
RTRUE
.FUNCT V-SCORE,ASK?=1
PRINTI "Your potential is "
PRINTN SCORE
PRINTI " of a possible "
PRINTN SCORE-MAX
PRINTI ", in "
PRINTN MOVES
EQUAL? MOVES,1 \?ELS9
PRINTI " move."
JUMP ?CND7
?ELS9: PRINTI " moves."
?CND7: CRLF
RETURN SCORE
.FUNCT TM-HOLLOW-F
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,TM-HOLLOW \?ELS5
CALL PERFORM,V?PUT-UNDER,PRSO,TM-SEAT
RTRUE
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS9
CALL PERFORM,V?LOOK-UNDER,TM-SEAT
RTRUE
?ELS9: EQUAL? PRSO,TM-HOLLOW \?ELS11
CALL PERFORM,PRSA,TM-SEAT,PRSI
RTRUE
?ELS11: EQUAL? PRSI,TM-HOLLOW \FALSE
CALL PERFORM,PRSA,PRSO,TM-SEAT
RTRUE
.FUNCT IRON-DOOR-F
EQUAL? PRSA,V?THROUGH,V?UNLOCK,V?OPEN \FALSE
LESS? YEAR,YEAR-PRESENT \?ELS10
PRINTR "The iron door is locked from the outside."
?ELS10: PRINTR "The iron door is rusted shut and cannot be opened."
.FUNCT I-CLEFT
EQUAL? HERE,ZORK-IV,ROOM-8,TIMBER-ROOM /?THN4
EQUAL? HERE,LOWER-SHAFT,LADDER-BOTTOM,LADDER-TOP \?ELS3
?THN4: PRINTI "You feel a mild tremor from within the earth which passes quickly."
CRLF
JUMP ?CND1
?ELS3: PRINTI "There is a great tremor from within the earth. The entire dungeon shakes violently and loose debris falls from above you."
CRLF
?CND1: EQUAL? HERE,MUSEUM-ANTE \?ELS14
PRINTI "To the east, next to the great iron door, a cleft opens up, revealing an open area behind!"
CRLF
JUMP ?CND12
?ELS14: EQUAL? HERE,AQ-VIEW \?ELS18
PRINTI "One of the giant pillars supporting the aqueduct collapses in a pile of smoke and rubble!"
CRLF
JUMP ?CND12
?ELS18: EQUAL? HERE,AQ-2,AQ-3 \?CND12
PRINTI "The channel beneath your feet trembles. Then the channel just to the "
EQUAL? HERE,AQ-2 \?ELS27
PRINTI "north"
JUMP ?CND25
?ELS27: PRINTI "south"
?CND25: PRINTI " collapses and falls into the chasm!"
CRLF
?CND12: SET 'CLEFT-FLAG,TRUE-VALUE
FCLEAR CLEFT,INVISIBLE
SET 'AQ-FLAG,FALSE-VALUE
RTRUE
.FUNCT CLEFT-F
EQUAL? YEAR,YEAR-PRESENT /FALSE
PRINTR "There is no cleft here."
.FUNCT MUSEUM-ANTE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
ZERO? CLEFT-FLAG /?ELS10
PRINTR "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."
?ELS10: PRINTR "You are in the southern half of a monumental hall. To the east lies a tremendous iron door which appears to be rusted shut."
.FUNCT DDESC,STR1,DOOR,STR2
PRINT STR1
FSET? DOOR,OPENBIT \?ELS5
PRINTI "open"
JUMP ?CND3
?ELS5: PRINTI "closed"
?CND3: PRINT STR2
CRLF
RTRUE
.FUNCT MUSEUM-ENTRANCE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
FSET? CAGE,INVISIBLE \?ELS10
PRINTR "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."
?ELS10: PRINTI "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 "
FSET? WOODEN-DOOR,OPENBIT \?ELS23
PUSH STR?117
JUMP ?CND19
?ELS23: PUSH STR?118
?CND19: PRINT STACK
PRINTI " and leads to the Museum of Technology. "
EQUAL? YEAR,YEAR-PRESENT \?ELS30
PRINTR "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."
?ELS30: LESS? YEAR,YEAR-PRESENT \?ELS34
PRINTR "To the west is a great iron door, rusted shut."
?ELS34: PRINTR "To the west is a great iron door, rusted shut. The cleft in the rock, present when you started, has filled in with rubble."
.FUNCT TIME-MACHINE-F,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
PRINTI "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 "
PRINTN TM-YEAR
PRINTR ". The machine is suprisingly shiny and shows few signs of age."
?ELS5: EQUAL? RARG,M-BEG \?ELS9
EQUAL? PRSA,V?MOVE \?ELS14
PRINTR "You might be able to move the machine by pushing it."
?ELS14: EQUAL? PRSA,V?PUSH-TO \?ELS18
EQUAL? PRSO,TIME-MACHINE \?ELS18
PRINTR "That would be a good trick from inside it."
?ELS18: EQUAL? PRSA,V?WALK \?ELS24
PRINTR "You're not going anywhere in this heap."
?ELS24: EQUAL? PRSA,V?MOVE,V?PUT,V?TAKE /?THN31
EQUAL? PRSA,V?CLOSE,V?OPEN,V?PUSH \FALSE
?THN31: CALL HELD?,PRSO
ZERO? STACK \FALSE
IN? PRSO,TIME-MACHINE /FALSE
PRINTR "You can't do that from inside the machine."
?ELS9: ZERO? RARG \FALSE
EQUAL? PRSA,V?PUT \?ELS41
EQUAL? PRSI,TIME-MACHINE \?ELS41
PRINTR "You can't put anything on or inside the machine itself."
?ELS41: EQUAL? PRSO,TIME-MACHINE \FALSE
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS52
PRINTR "This is a machine, not a box."
?ELS52: EQUAL? PRSA,V?EXAMINE \?ELS56
PRINTI "The machine consists of a seat and a console containing one small button and a dial connected to a display which reads "
PRINTN TM-YEAR
PRINTR "."
?ELS56: EQUAL? PRSA,V?BOARD \?ELS60
FIRST? TM-SEAT \?ELS60
PRINTR "That will be somewhat uncomfortable!"
?ELS60: EQUAL? PRSA,V?RAISE,V?TAKE \?ELS66
PRINTR "The machine must weigh hundreds of pounds and cannot be carried."
?ELS66: EQUAL? PRSA,V?MOVE,V?PUSH \?ELS70
PRINTR "You should specify in which direction to push the machine."
?ELS70: EQUAL? PRSA,V?PUSH-TO \FALSE
CALL DO-WALK,P-DIRECTION
EQUAL? STACK,M-FATAL /TRUE
PRINTI "With some effort, you push the machine into the room with you."
CRLF
EQUAL? HERE,CP-ANTE,MID-CP-ANTE \?ELS82
PRINTI "However, the machine seems to have sustained some damage as a result of going over the stairs."
CRLF
SET 'MACHINE-DAMAGED,TRUE-VALUE
JUMP ?CND80
?ELS82: EQUAL? HERE,MUSEUM-ANTE \?CND80
PRINTI "Pushing the machine through the cleft seems to have damaged it."
CRLF
SET 'MACHINE-DAMAGED,TRUE-VALUE
?CND80: MOVE TIME-MACHINE,HERE
RTRUE
.FUNCT TM-SEAT-F
EQUAL? PRSA,V?BOARD,V?CLIMB-ON \?ELS5
CALL PERFORM,V?BOARD,TIME-MACHINE
RTRUE
?ELS5: EQUAL? PRSA,V?PUT-BEHIND,V?PUT-UNDER \?ELS7
EQUAL? PRSI,TM-SEAT \?ELS7
EQUAL? PRSO,RING \?ELS14
PRINTI "The ring is concealed underneath the seat."
CRLF
SET 'RING-CONCEALED,TRUE-VALUE
REMOVE RING
RTRUE
?ELS14: PRINTR "It's too big to hide under the seat."
?ELS7: EQUAL? PRSA,V?RUB \?ELS22
PRINTR "There's nothing odd about the feel of the seat."
?ELS22: EQUAL? PRSA,V?MOVE,V?RAISE,V?LOOK-UNDER \FALSE
ZERO? RING-CONCEALED /?ELS31
PRINTI "You find the ring under the seat and put it on your finger."
CRLF
MOVE RING,WINNER
SET 'RING-CONCEALED,FALSE-VALUE
RTRUE
?ELS31: PRINTR "You notice a small hollow area under the seat."
.FUNCT TM-DIAL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The dial is set to "
PRINTN TM-YEAR
PRINTR "."
?ELS5: EQUAL? PRSA,V?TURN \FALSE
EQUAL? PRSI,INTNUM \?ELS14
GRTR? P-NUMBER,999 \?ELS19
PRINTR "You can't set it beyond 999."
?ELS19: SET 'TM-YEAR,P-NUMBER
PRINTI "The dial is set to "
PRINTN TM-YEAR
PRINTR "."
?ELS14: ZERO? PRSI \?ELS27
PRINTR "You have to say what to turn it to!"
?ELS27: PRINTR "You can't do that!"
.FUNCT TM-BUTTON-F
EQUAL? PRSA,V?PUSH \FALSE
EQUAL? TM-YEAR,YEAR-BUILT \?CND6
ZERO? TM-POINT \?CND6
INC 'SCORE
SET 'TM-POINT,TRUE-VALUE
?CND6: ZERO? MACHINE-DAMAGED \?THN16
IN? WINNER,TIME-MACHINE /?ELS15
?THN16: PRINTR "Nothing seems to have happened."
?ELS15: LESS? TM-YEAR,YEAR-BUILT \?ELS21
CALL REALLY-DEAD,STR?119
RSTACK
?ELS21: EQUAL? YEAR,TM-YEAR \?ELS23
PRINTR "Nothing seems to have happened."
?ELS23: LESS? TM-YEAR,YEAR-CLOSED \?ELS27
PRINTI "You experience a brief period of disorientation. When your vision returns, "
EQUAL? HERE,MUSEUM-ENTRANCE,MID-MUSEUM-ENTRANCE,OLD-MUSEUM-ENTRANCE \?ELS34
EQUAL? TM-YEAR,YEAR-CAGED \?ELS39
PRINTI "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."
CRLF
CALL FLATHEAD-SENTENCE
RSTACK
?ELS39: CALL GUARDS-KILL
RSTACK
?ELS34: EQUAL? HERE,JEWEL-ROOM,MID-JEWEL-ROOM,OLD-JEWEL-ROOM \?ELS45
EQUAL? TM-YEAR,YEAR-CAGED \?ELS50
PRINTI "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. "
CALL FLATHEAD-SENTENCE
RSTACK
?ELS50: GRTR? TM-YEAR,YEAR-CAGED \?ELS54
CALL GUARDS-KILL
RSTACK
?ELS54: PRINT SURROUNDINGS-CHANGED
CRLF
CALL TGOTO,OLD-JEWEL-ROOM
RSTACK
?ELS45: EQUAL? HERE,TECH-MUSEUM,MID-TECH-MUSEUM,OLD-TECH-MUSEUM \FALSE
EQUAL? TM-YEAR,YEAR-BUILT /?ELS65
CALL GUARDS-KILL
RSTACK
?ELS65: PRINT SURROUNDINGS-CHANGED
CRLF
CALL TGOTO,OLD-TECH-MUSEUM
RSTACK
?ELS27: CALL HAPPY-NEW-YEAR
RSTACK
.FUNCT HAPPY-NEW-YEAR
PRINTI "You experience a brief period of disorientation. When your vision returns, your surroundings appear somewhat altered."
CRLF
EQUAL? HERE,OLD-JEWEL-ROOM,MID-JEWEL-ROOM,JEWEL-ROOM \?ELS7
LESS? TM-YEAR,YEAR-PRESENT \?ELS12
CALL TGOTO,MID-JEWEL-ROOM
RSTACK
?ELS12: CALL TGOTO,JEWEL-ROOM
RSTACK
?ELS7: EQUAL? HERE,OLD-TECH-MUSEUM,MID-TECH-MUSEUM,TECH-MUSEUM \?ELS16
LESS? TM-YEAR,YEAR-PRESENT \?ELS21
CALL TGOTO,MID-TECH-MUSEUM
RSTACK
?ELS21: CALL TGOTO,TECH-MUSEUM
RSTACK
?ELS16: LESS? TM-YEAR,YEAR-PRESENT \?ELS25
CALL TGOTO,MID-MUSEUM-ENTRANCE
RSTACK
?ELS25: CALL TGOTO,MUSEUM-ENTRANCE
RSTACK
.FUNCT I-SNAP
EQUAL? YEAR,YEAR-PRESENT /FALSE
SET 'TM-YEAR,YEAR-PRESENT
PRINTI "You start to feel light-headed and quickly become completely disoriented. When your head clears, you realize that your surroundings have changed."
CRLF
CALL TGOTO,SNAP-LOC,TRUE-VALUE
RSTACK
.FUNCT MOVE-JEWELS
EQUAL? TM-YEAR,YEAR-BUILT \?ELS3
MOVE PEDESTAL,OLD-JEWEL-ROOM
JUMP ?CND1
?ELS3: LESS? TM-YEAR,YEAR-PRESENT \?ELS5
MOVE PEDESTAL,MID-JEWEL-ROOM
JUMP ?CND1
?ELS5: MOVE PEDESTAL,JEWEL-ROOM
?CND1: ZERO? RING-STOLEN \TRUE
MOVE SCEPTRE,PEDESTAL
FSET SCEPTRE,NDESCBIT
MOVE JEWELLED-KNIFE,PEDESTAL
FSET JEWELLED-KNIFE,NDESCBIT
ZERO? RING-CONCEALED \FALSE
MOVE RING,PEDESTAL
FSET RING,NDESCBIT
RTRUE
.FUNCT TGOTO,RM=0,SNAP=0
INC 'MOVES
CALL QUEUE,I-GUARDS-LEAVE,0
SET 'INVIS,FALSE-VALUE
GRTR? YEAR,YEAR-BUILT \?CND1
SET 'GUARDS-PRESENT,TRUE-VALUE
?CND1: EQUAL? YEAR,YEAR-PRESENT \?CND4
SET 'SNAP-LOC,HERE
CALL QUEUE,I-SNAP,40
PUT STACK,0,1
?CND4: EQUAL? TM-YEAR,YEAR-PRESENT \?ELS9
SET 'CLEFT-FLAG,TRUE-VALUE
JUMP ?CND7
?ELS9: SET 'CLEFT-FLAG,FALSE-VALUE
?CND7: FCLEAR JEWEL-DOOR,OPENBIT
FCLEAR WOODEN-DOOR,OPENBIT
FCLEAR IRON-DOOR,OPENBIT
EQUAL? YEAR,YEAR-BUILT \?CND12
ZERO? RING-CONCEALED /?ELS17
IN? TIME-MACHINE,OLD-TECH-MUSEUM \?ELS17
IN? SCEPTRE,PEDESTAL \?ELS17
IN? JEWELLED-KNIFE,PEDESTAL \?ELS17
SET 'RING-STOLEN,TRUE-VALUE
FSET CAGE,INVISIBLE
REMOVE SCEPTRE
REMOVE JEWELLED-KNIFE
JUMP ?CND12
?ELS17: IN? TIME-MACHINE,OLD-TECH-MUSEUM \?THN22
ZERO? RING-CONCEALED /?ELS21
?THN22: SET 'CLUMSY-ROBBERY,TRUE-VALUE
REMOVE TIME-MACHINE
JUMP ?CND12
?ELS21: IN? RING,PEDESTAL \?THN26
IN? SCEPTRE,PEDESTAL \?THN26
IN? JEWELLED-KNIFE,PEDESTAL /?CND12
?THN26: SET 'MYSTERY,TRUE-VALUE
?CND12: EQUAL? TM-YEAR,YEAR-BUILT \?CND28
SET 'MYSTERY,FALSE-VALUE
SET 'CLUMSY-ROBBERY,FALSE-VALUE
?CND28: SET 'YEAR,TM-YEAR
CALL MOVE-TM-OBJECTS
CALL MOVE-JEWELS
MOVE WINNER,HERE
CALL GOTO,RM,FALSE-VALUE
EQUAL? YEAR,YEAR-BUILT \?ELS33
MOVE TIME-MACHINE,OLD-TECH-MUSEUM
MOVE SPINNER,OLD-TECH-MUSEUM
MOVE PRESSURIZER,OLD-TECH-MUSEUM
MOVE TECH-PLAQUE,OLD-TECH-MUSEUM
JUMP ?CND31
?ELS33: LESS? YEAR,YEAR-PRESENT \?ELS35
ZERO? CLUMSY-ROBBERY \?CND36
MOVE TIME-MACHINE,MID-TECH-MUSEUM
?CND36: MOVE SPINNER,MID-TECH-MUSEUM
MOVE PRESSURIZER,MID-TECH-MUSEUM
MOVE TECH-PLAQUE,MID-TECH-MUSEUM
MOVE CAGE,MID-JEWEL-ROOM
JUMP ?CND31
?ELS35: MOVE TIME-MACHINE,TECH-MUSEUM
MOVE SPINNER,TECH-MUSEUM
MOVE PRESSURIZER,TECH-MUSEUM
MOVE TECH-PLAQUE,TECH-MUSEUM
MOVE CAGE,JEWEL-ROOM
?CND31: ZERO? CLUMSY-ROBBERY \?THN44
EQUAL? HERE,TECH-MUSEUM,MID-TECH-MUSEUM,OLD-TECH-MUSEUM /?ELS43
?THN44: ZERO? SNAP \?CND41
PRINTI "You notice that the golden machine has disappeared!"
CRLF
JUMP ?CND41
?ELS43: MOVE WINNER,TIME-MACHINE
?CND41: ZERO? CLUMSY-ROBBERY /TRUE
REMOVE TIME-MACHINE
RTRUE
.FUNCT MOVE-TM-OBJECTS,F,MFLG=0,WFLG=0,N
FIRST? TIME-MACHINE >F /?KLU53
?KLU53: ZERO? F /?CND1
?PRG5: EQUAL? F,TM-DIAL,TM-SEAT,TM-BUTTON /?CND7
EQUAL? F,PLAYER \?ELS9
JUMP ?CND7
?ELS9: ZERO? MFLG \?CND7
SET 'MFLG,TRUE-VALUE
PRINTI "You notice that everything in the machine is gone"
?CND7: NEXT? F >N /?KLU54
?KLU54: EQUAL? F,TM-DIAL,TM-SEAT,TM-BUTTON /?CND16
MOVE F,HERE
?CND16: SET 'F,N
ZERO? F \?PRG5
?CND1: FIRST? WINNER >F /?KLU55
?KLU55: ZERO? F /?CND22
?PRG26: ZERO? WFLG \?CND28
SET 'WFLG,TRUE-VALUE
ZERO? MFLG /?ELS33
PRINTI ": come to mention it, everything you were holding has vanished too"
JUMP ?CND28
?ELS33: PRINTI "You notice that everything you were holding is gone"
?CND28: NEXT? F >N /?KLU56
?KLU56: MOVE F,HERE
SET 'F,N
ZERO? F \?PRG26
?CND22: ZERO? MFLG \?THN49
ZERO? WFLG /FALSE
?THN49: PRINTR "!"
.FUNCT GUARDS-KILL
CALL PICK-ONE,GUARD-KILLERS
PRINT STACK
CRLF
CALL REALLY-DEAD,STR?10
RSTACK
.FUNCT FLATHEAD-SENTENCE
CALL REALLY-DEAD,STR?124
RSTACK
.FUNCT REALLY-DEAD,STR
PRINT STR
PRINTI "
**** You have died ****
"
CALL FINISH
RSTACK
.FUNCT HEAR-FLATHEAD
SET 'FLATHEAD-HEARD,TRUE-VALUE
PRINTR "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."
.FUNCT OLD-TECH-MUSEUM-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
EQUAL? HERE,OLD-JEWEL-ROOM \?ELS5
PRINTI "You are in a high-ceilinged chamber, in the center of which is a pedestal which "
ZERO? RING-STOLEN \?ELS12
PRINTI "is the intended home of the Crown Jewels of the Great Underground Empire: a jewelled knife, a golden ring, and the royal sceptre."
IN? SCEPTRE,PEDESTAL \?THN18
IN? RING,PEDESTAL \?THN18
IN? JEWELLED-KNIFE,PEDESTAL /?CND10
?THN18: PRINTI " Not all of the jewels are in place, however."
JUMP ?CND10
?ELS12: PRINTI "is bare."
?CND10: PRINTI " The room is, by appearances, unfinished."
CRLF
ZERO? GUARDS-PRESENT /TRUE
PRINT HEAR-VOICES
CRLF
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \?ELS35
EQUAL? HERE,OLD-TECH-MUSEUM \?ELS38
PRINTI "You are in a large, unfinished room, probably intended to be a part of the Royal Museum."
CRLF
JUMP ?CND36
?ELS38: PRINTI "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."
CRLF
?CND36: ZERO? GUARDS-PRESENT /TRUE
PRINT HEAR-VOICES
CRLF
RTRUE
?ELS35: EQUAL? RARG,M-END \?ELS52
ZERO? FLATHEAD-HEARD \?ELS52
ZERO? GUARDS-PRESENT /?ELS52
RANDOM 100
GRTR? 6,STACK \?ELS52
CALL HEAR-FLATHEAD
RSTACK
?ELS52: EQUAL? RARG,M-ENTER \?ELS56
ZERO? GUARDS-PRESENT /?ELS56
RANDOM 12
ADD 3,STACK
CALL QUEUE,I-GUARDS-LEAVE,STACK
PUT STACK,0,1
RTRUE
?ELS56: EQUAL? RARG,M-BEG \?ELS60
EQUAL? PRSA,V?OPEN \?ELS60
EQUAL? PRSO,WOODEN-DOOR,JEWEL-DOOR \?ELS60
ZERO? GUARDS-PRESENT /?ELS60
PRINTR "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."
?ELS60: EQUAL? RARG,M-BEG \FALSE
ZERO? GUARDS-PRESENT /FALSE
RANDOM 100
GRTR? 3,STACK \FALSE
CALL GUARD-CAUGHT
RSTACK
.FUNCT I-GUARDS-LEAVE
SET 'GUARDS-PRESENT,FALSE-VALUE
PRINTR "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."
.FUNCT GUARD-CAUGHT
CALL REALLY-DEAD,STR?126
RSTACK
.FUNCT ROBOT-F
EQUAL? PRSA,V?FOLLOW \?ELS5
PRINTR "It moved quickly and left the door closed."
?ELS5: PRINTR "There is no robot here."
.FUNCT JEWEL-ROOM-F,RARG
EQUAL? RARG,M-END \?ELS5
IN? TIME-MACHINE,HERE \?ELS5
RANDOM 100
GRTR? 4,STACK \?ELS5
PRINTI "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."
CRLF
FCLEAR JEWEL-DOOR,OPENBIT
FCLEAR WOODEN-DOOR,OPENBIT
MOVE TIME-MACHINE,TECH-MUSEUM
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a high-ceilinged chamber"
FSET? CAGE,INVISIBLE /?ELS18
PRINTR " 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."
?ELS18: PRINTR " 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."
.FUNCT CROWN-JEWELS-F
EQUAL? PRSA,V?TAKE \?ELS5
CALL HELD?,PRSO
ZERO? STACK \FALSE
EQUAL? YEAR,YEAR-BUILT /?THN13
FSET? CAGE,INVISIBLE \?ELS12
?THN13: FCLEAR PRSO,NDESCBIT
RFALSE
?ELS12: PRINTR "The jewels are inside a locked cage."
?ELS5: EQUAL? PRSA,V?PUT \?ELS20
EQUAL? PRSI,PEDESTAL \?ELS20
IN? PRSO,WINNER \?ELS20
PRINTI "The "
PRINTD PRSO
PRINTI " is now resting on the pedestal."
CRLF
MOVE PRSO,PEDESTAL
FSET PRSO,NDESCBIT
RTRUE
?ELS20: EQUAL? PRSA,V?PUT \FALSE
CALL HELD?,PRSO
ZERO? STACK \FALSE
PRINTI "You don't have the "
PRINTD PRSO
PRINTR "."
.FUNCT TECH-MUSEUM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
FSET? CAGE,INVISIBLE \?ELS10
CALL DDESC,STR?127,WOODEN-DOOR,STR?128
RSTACK
?ELS10: CALL DDESC,STR?129,WOODEN-DOOR,STR?128
RSTACK
.FUNCT PLAQUE-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
ZERO? RING-STOLEN /?CND6
PRINTR "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."
?CND6: CALL FIXED-FONT-ON
PRINTI "
Crown Jewels
Presented To The Royal Museum
By His Gracious Lord
DIMWIT FLATHEAD
Dedicated
* 777 GUE *"
CALL FIXED-FONT-OFF
ZERO? CLUMSY-ROBBERY /?ELS16
CRLF
CRLF
PRINTI "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."
JUMP ?CND14
?ELS16: ZERO? MYSTERY /?CND14
CRLF
CRLF
PRINTI "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."
?CND14: CRLF
RTRUE
.FUNCT WOODEN-DOOR-F
EQUAL? PRSA,V?LISTEN \?ELS5
ZERO? GUARDS-PRESENT /?ELS5
CALL PERFORM,V?LISTEN,VOICES
RTRUE
?ELS5: EQUAL? PRSA,V?KNOCK \FALSE
ZERO? GUARDS-PRESENT /FALSE
PRINTR "You realize that calling attention to yourself would be fatal."
.FUNCT JEWEL-DOOR-F
EQUAL? PRSA,V?KNOCK \?ELS5
ZERO? GUARDS-PRESENT /?ELS5
CALL PERFORM,V?KNOCK,WOODEN-DOOR
RTRUE
?ELS5: EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE
FSET? JEWEL-DOOR,OPENBIT \?ELS14
PRINTR "It is already open."
?ELS14: EQUAL? YEAR,YEAR-BUILT \?ELS18
EQUAL? HERE,OLD-MUSEUM-ENTRANCE \?ELS18
PRINTR "The door is locked, probably by the guards on their way out."
?ELS18: PRINTI "The door is now open."
CRLF
FSET JEWEL-DOOR,OPENBIT
RTRUE
.FUNCT CAGE-F
EQUAL? PRSA,V?OPEN \?ELS5
PRINTR "The cage is locked."
?ELS5: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "The cage is already closed."
.FUNCT VOICES-F
ZERO? GUARDS-PRESENT /?ELS5
EQUAL? YEAR,YEAR-BUILT \?ELS5
PRINTI "The voices are muffled by the door which (fortunately for you) separates you. They seem to be in heated debate on the topic of "
CALL PICK-ONE,BLATHER
PRINT STACK
PRINTR "."
?ELS5: PRINTR "Are you hearing things now?"
.FUNCT MUSEUM-PIECES,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
EQUAL? DESC-OBJECT,SPINNER /TRUE
PRINTI "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."
LESS? YEAR,YEAR-CLOSED \?ELS15
PRINTR " 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."
?ELS15: PRINTR " The writing is faded, however, and cannot be made out clearly. The two machines seem to be in bad shape, rusting in many spots."
?ELS5: EQUAL? PRSA,V?MOVE,V?TAKE \?ELS23
PRINTR "It's massive and cannot even be moved."
?ELS23: EQUAL? PRSA,V?PUSH-TO,V?PUSH \?ELS27
PRINTR "It's too heavy to be pushed."
?ELS27: EQUAL? PRSA,V?MUNG \?ELS31
PRINTR "It seems quite indestructible."
?ELS31: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,SPINNER,PRESSURIZER \FALSE
PRINTR "There's no good place to put anything there."
.FUNCT TECH-PLAQUE-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "It's bolted to the wall."
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
LESS? YEAR,YEAR-CLOSED \?ELS14
PRINTR "The plaque merely identifies the machines and names their donor. They are nonworking models of existing state-of-the-art machinery."
?ELS14: PRINTR "The words cannot be made out."
.FUNCT PEDESTAL-F
EQUAL? PRSA,V?LOOK-ON,V?EXAMINE \?ELS5
FIRST? PEDESTAL \FALSE
PRINTR "The Royal Jewels are on the pedestal."
?ELS5: EQUAL? PRSA,V?TAKE,V?PUT-ON,V?PUT \FALSE
FSET? CAGE,INVISIBLE /FALSE
PRINTR "You can't reach it through the cage."
.FUNCT PICK-DIRECTION,RM,NXT=0,CNT=0,OFFS=0
?PRG1: NEXTP RM,NXT >NXT
ZERO? NXT \?ELS5
JUMP ?REP2
?ELS5: LESS? NXT,LOW-DIRECTION /?PRG1
EQUAL? NXT,P?UP,P?DOWN /?PRG1
INC 'OFFS
PUT DIR-TBL,OFFS,NXT
INC 'CNT
JUMP ?PRG1
?REP2: RANDOM CNT
GET DIR-TBL,STACK
RSTACK
.FUNCT SHADOW-F,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
ZERO? BLOCKED-DIR \?CND6
CALL PICK-DIRECTION,HERE >BLOCKED-DIR
?CND6: PRINTI "A cloaked and hooded person, carrying a sword not unlike your own,"
GRTR? S-STRENGTH,3 \?ELS13
PRINTI " is standing blocking the way to the "
CALL LKP,BLOCKED-DIR,DIRS
PRINT STACK
PRINTI "."
CRLF
JUMP ?CND11
?ELS13: PRINTI " is here."
CRLF
?CND11: PRINTI "The hooded figure"
GET SHADOW-DIAG,S-STRENGTH
PRINT STACK
CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?GIVE \?ELS25
EQUAL? PRSI,SHADOW \?ELS25
PRINTR "The hooded figure isn't interested in your gifts."
?ELS25: CALL HELLO?,SHADOW
ZERO? STACK /?ELS31
PRINTR "The hooded figure does not respond to your words."
?ELS31: EQUAL? PRSA,V?ATTACK \?ELS35
EQUAL? PRSI,SWORD \?ELS35
ZERO? SHADOW-POINT-2 \?CND38
INC 'SCORE
SET 'SHADOW-POINT-2,TRUE-VALUE
?CND38: CALL SHADOW-ATTACK
RSTACK
?ELS35: EQUAL? PRSA,V?ATTACK \FALSE
PRINTI "The hooded figure ignores your feeble attack."
CRLF
SET 'ATTACK-MODE,TRUE-VALUE
CALL QUEUE,I-CURE,10
PUT STACK,0,1
CALL QUEUE,I-SHADOW-REPLY,-1
PUT STACK,0,1
RTRUE
.FUNCT I-CURE
EQUAL? P-STRENGTH,5 /?CND1
INC 'P-STRENGTH
?CND1: EQUAL? S-STRENGTH,5 /?CND4
INC 'S-STRENGTH
?CND4: ADD P-STRENGTH,S-STRENGTH
EQUAL? STACK,10 /FALSE
CALL QUEUE,I-CURE,10
RFALSE
.FUNCT SHADOW-ATTACK,?TMP1
ZERO? ATTACK-MODE \?CND1
CALL QUEUE,I-CURE,10
PUT STACK,0,1
SET 'ATTACK-MODE,TRUE-VALUE
CALL QUEUE,I-SHADOW-REPLY,-1
PUT STACK,0,1
?CND1: MUL P-STRENGTH,10
ADD STACK,10 >?TMP1
RANDOM 100
GRTR? ?TMP1,STACK \?ELS8
RANDOM 100
GRTR? 85,STACK \?ELS13
DEC 'S-STRENGTH
ZERO? S-STRENGTH \?CND14
CALL SHADOW-DIES
RTRUE
?CND14: CALL PICK-ONE,P-HITS
PRINT STACK
CRLF
PRINTI "The figure"
GET SHADOW-DIAG,S-STRENGTH
PRINT STACK
CRLF
RTRUE
?ELS13: SUB S-STRENGTH,2 >S-STRENGTH
ZERO? S-STRENGTH \?ELS25
SET 'S-STRENGTH,1
JUMP ?CND23
?ELS25: LESS? S-STRENGTH,1 \?CND23
CALL SHADOW-DIES
RTRUE
?CND23: PRINTI "A sharp thrust and the hooded figure is badly wounded!"
CRLF
PRINTI "The figure"
GET SHADOW-DIAG,S-STRENGTH
PRINT STACK
CRLF
RTRUE
?ELS8: LESS? S-STRENGTH,2 \?ELS38
PRINTR "Your opponent blocks your attack with its sword."
?ELS38: CALL PICK-ONE,P-MISSES
PRINT STACK
CRLF
RTRUE
.FUNCT I-SHADOW-REPLY,?TMP1
ZERO? ATTACK-MODE /?THN4
IN? SHADOW,HERE /?CND1
?THN4: CALL QUEUE,I-SHADOW-REPLY,0
SET 'ATTACK-MODE,FALSE-VALUE
RFALSE
?CND1: IN? SWORD,WINNER /?CND6
MOVE SWORD,WINNER
PRINTI "Your sword, glowing wildly, leaps into your hand!"
CRLF
?CND6: MUL S-STRENGTH,10
ADD STACK,10 >?TMP1
RANDOM 100
GRTR? ?TMP1,STACK \?ELS15
GRTR? S-STRENGTH,1 \?ELS15
RANDOM 100
GRTR? 90,STACK \?ELS22
DLESS? 'P-STRENGTH,1 \?ELS27
SET 'P-STRENGTH,1
PRINTR "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."
?ELS27: CALL PICK-ONE,S-HITS
PRINT STACK
CRLF
RTRUE
?ELS22: SUB P-STRENGTH,2 >P-STRENGTH
LESS? P-STRENGTH,1 \?ELS40
CALL JIGS-UP,STR?169
RSTACK
?ELS40: PRINTR "A brilliant feint puts you off guard, and the hooded figure slips its sword between your ribs. You are hurt very badly."
?ELS15: LESS? S-STRENGTH,3 \?ELS46
PRINTR "The hooded figure attempts a thrust, but its weakened state prevents hitting you."
?ELS46: CALL PICK-ONE,S-MISSES
PRINT STACK
CRLF
RTRUE
.FUNCT SHADOW-DIES
PRINTI "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."
CRLF
REMOVE SHADOW
SET 'SHADOW-GONE,TRUE-VALUE
SET 'BLOCKED-DIR,FALSE-VALUE
RETURN BLOCKED-DIR
.FUNCT HOOD-F
EQUAL? PRSA,V?LOOK-UNDER \?ELS5
IN? HOOD,SHADOW \?ELS5
PRINTR "The figure's hood casts a dark shadow over its face. There is no way from where you stand to look beneath it."
?ELS5: EQUAL? PRSA,V?PUT,V?TAKE \FALSE
IN? HOOD,SHADOW \FALSE
EQUAL? S-STRENGTH,1 \?ELS18
PRINTI "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."
CRLF
REMOVE SHADOW
SET 'SHADOW-GONE,TRUE-VALUE
MOVE HOOD,WINNER
FCLEAR HOOD,NDESCBIT
MOVE CLOAK,HERE
FCLEAR CLOAK,NDESCBIT
RTRUE
?ELS18: EQUAL? S-STRENGTH,2 \?ELS22
PRINTR "The hooded figure, though recovering from wounds, is strong enough to force you back."
?ELS22: PRINTR "You cannot get close enough to the hooded figure to remove the hood."
.FUNCT CLOAK-F
EQUAL? PRSA,V?LOOK-UNDER \?ELS5
IN? CLOAK,SHADOW \?ELS5
PRINTR "You cannot get close enough to look underneath the cloak."
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
IN? CLOAK,SHADOW \FALSE
PRINTR "The cloak is fastened around the neck of the hooded figure. It would be difficult to remove."
.FUNCT SHADOW-ROOMS,RARG
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?WALK \?ELS5
EQUAL? PRSO,BLOCKED-DIR \?ELS5
PRINTR "Your way is blocked by the hooded figure."
?ELS5: EQUAL? RARG,M-END \FALSE
IN? SHADOW,HERE /?CND12
SET 'BLOCKED-DIR,FALSE-VALUE
REMOVE SHADOW
?CND12: ZERO? SHADOW-GONE \FALSE
IN? SHADOW,HERE \?ELS22
RANDOM 100
GRTR? 30,STACK \FALSE
ZERO? ATTACK-MODE \FALSE
SET 'ATTACK-MODE,TRUE-VALUE
CALL QUEUE,I-CURE,10
PUT STACK,0,1
CALL QUEUE,I-SHADOW-REPLY,-1
PUT STACK,0,1
RTRUE
?ELS22: RANDOM 100
GRTR? 30,STACK \?ELS31
PRINTR "You can hear quiet footsteps nearby."
?ELS31: RANDOM 100
GRTR? 30,STACK \FALSE
ZERO? LIT /FALSE
GRTR? S-STRENGTH,3 \FALSE
CALL PICK-DIRECTION,HERE >BLOCKED-DIR
PRINTI "Through the shadows, a cloaked and hooded figure appears before you, blocking the "
CALL LKP,BLOCKED-DIR,DIRS
PRINT STACK
PRINTI "ern exit from the room and carrying a brightly glowing sword."
CRLF
CALL SHADOW-ARRIVAL
RTRUE
.FUNCT SHADOW-ARRIVAL
MOVE SHADOW,HERE
ZERO? SHADOW-POINT-1 \?CND1
INC 'SCORE
SET 'SHADOW-POINT-1,TRUE-VALUE
?CND1: IN? SWORD,WINNER /FALSE
MOVE SWORD,WINNER
ZERO? SWORD-IN-STONE? /?ELS11
PRINTI "From nowhere, the sword from the junction appears in your hand, wildly glowing!"
CRLF
JUMP ?CND9
?ELS11: PRINTI "Your sword, glowing wildly, appears in your hand!"
CRLF
?CND9: SET 'SWORD-IN-STONE?,FALSE-VALUE
RETURN SWORD-IN-STONE?
.FUNCT CREEPY-CRAWL-F,RARG
EQUAL? RARG,M-END \FALSE
SET 'BLOCKED-DIR,FALSE-VALUE
RTRUE
.FUNCT LEDGE-F
EQUAL? HERE,CLIFF-LEDGE \FALSE
EQUAL? PRSA,V?THROW-OFF \FALSE
EQUAL? PRSI,LEDGE \FALSE
IN? PRSO,WINNER /?CND8
PRINTR "You're not holding that!"
?CND8: MOVE PRSO,CLIFF-BASE
PRINTI "The "
PRINTD PRSO
PRINTR " falls to the base of the cliff below."
.FUNCT WAYBREAD-F
EQUAL? PRSA,V?CUT \FALSE
EQUAL? PRSI,SWORD \FALSE
PRINTI "The bread is crushed rather than cut by your sword, and the crumbs scatter to the wind."
CRLF
REMOVE WAYBREAD
RTRUE
.FUNCT STAFF-F
EQUAL? PRSA,V?BURN \FALSE
EQUAL? PRSI,TORCH \FALSE
REMOVE PRSO
CALL JIGS-UP,STR?200
RSTACK
.FUNCT I-MAN-APPEARS
EQUAL? HERE,CLIFF-LEDGE \FALSE
LOC CHEST
EQUAL? STACK,CLIFF-LEDGE,WINNER \FALSE
ZERO? CHEST-TIED /?ELS9
SET 'MAN-SEEN,TRUE-VALUE
PRINTI "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."
CRLF
SET 'CHEST-LIFTED,TRUE-VALUE
MOVE CHEST,MAN
FSET CHEST,TOUCHBIT
SET 'ROPE-FLAG,FALSE-VALUE
SET 'CHEST-TIED,FALSE-VALUE
CALL QUEUE,I-MAN-RETURNS,10
PUT STACK,0,1
RTRUE
?ELS9: PRINTI "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."
CRLF
SET 'MAN-FLAG,TRUE-VALUE
SET 'MAN-SEEN,TRUE-VALUE
CALL QUEUE,I-MAN-PRESENT,-1
PUT STACK,0,1
RTRUE
.FUNCT I-MAN-PRESENT
EQUAL? HERE,CLIFF-LEDGE \?THN6
ZERO? MAN-FLAG /?THN6
IN? CHEST,MAN \?ELS5
?THN6: CALL QUEUE,I-MAN-PRESENT,0
SET 'MAN-FLAG,FALSE-VALUE
RFALSE
?ELS5: IGRTR? 'MAN-WAITING,10 \?ELS9
PRINTI "The man looks quite displeased. ""All right, then. I guess someone else can always help me! See you around, sport!"" He disappears."
CRLF
CALL QUEUE,I-MAN-PRESENT,0
SET 'MAN-FLAG,FALSE-VALUE
RTRUE
?ELS9: CALL PICK-ONE,MAN-WAITS
PRINT STACK
CRLF
RTRUE
.FUNCT CLIFF-BASE-F,RARG
EQUAL? RARG,M-ENTER \FALSE
ZERO? CHEST-TIED /FALSE
SET 'CHEST-TIED,FALSE-VALUE
SET 'ROPE-FLAG,FALSE-VALUE
CALL QUEUE,I-MAN-APPEARS,0
RSTACK
.FUNCT CLIFF-LEDGE-F,RARG
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?WALK \?ELS5
IN? CHEST,WINNER \?ELS5
ZERO? CHEST-TIED /?ELS5
PRINTR "You can't go anywhere holding that chest. The rope is tied around it!"
?ELS5: EQUAL? RARG,M-ENTER \?ELS11
ZERO? MAN-SEEN \?ELS11
ZERO? MAN-FLAG \?ELS11
ZERO? MAN-GONE \?ELS11
ZERO? MAN-POINT \?CND14
INC 'SCORE
SET 'MAN-POINT,TRUE-VALUE
?CND14: CALL QUEUE,I-MAN-APPEARS,5
PUT STACK,0,1
RTRUE
?ELS11: EQUAL? RARG,M-LOOK \FALSE
PRINTI "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)."
CRLF
ZERO? ROPE-FLAG /TRUE
PRINTR "A long piece of rope is dangling down from the top of the cliff and is within your reach."
.FUNCT CLIFF-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
IN? CHEST,MAN \?ELS5
CALL QUEUE,I-MAN-RETURNS,0
MOVE CHEST,HERE
FSET CHEST,OPENBIT
SET 'ROPE-FLAG,TRUE-VALUE
SET 'CHEST-TIED,FALSE-VALUE
SET 'CHEST-OPENED,TRUE-VALUE
RFALSE
?ELS5: EQUAL? RARG,M-LOOK \?ELS9
PRINTI "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."
CRLF
ZERO? ROPE-FLAG /TRUE
PRINTR "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."
?ELS9: EQUAL? RARG,M-END \?ELS19
RANDOM 100
GRTR? 15,STACK \?ELS19
FSET? CLIFF-LEDGE,TOUCHBIT /?ELS19
PRINTR "You catch, out of the corner of your eye, some movement among the trees."
?ELS19: EQUAL? RARG,M-END \FALSE
RANDOM 100
GRTR? 20,STACK \FALSE
PRINTR "You seem to hear, from the southwest, the sounds of the sea."
.FUNCT GLOBAL-ROPE-F
ZERO? ROPE-FLAG \?ELS5
PRINTR "You can't see any rope here."
?ELS5: EQUAL? PRSA,V?CLIMB-FOO \?ELS9
CALL V-CLIMB-UP,P?DOWN,TRUE-VALUE
RSTACK
?ELS9: EQUAL? PRSA,V?CLIMB-ON,V?MOVE,V?TAKE \?ELS11
ZERO? MAN-FLAG \?ELS16
PRINTR "A short tug on the rope convinces you that it is securely fastened from above."
?ELS16: IN? CHEST,MAN \?ELS20
SET 'HOLDING-ROPE,TRUE-VALUE
PRINTR "You grab securely on to the rope."
?ELS20: PRINTR "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."
?ELS11: EQUAL? PRSA,V?CLIMB-UP \?ELS28
PRINTR "You try to climb the rope, but you cannot reach the top even with your best effort."
?ELS28: EQUAL? PRSA,V?TIE \?ELS32
EQUAL? CHEST,PRSO,PRSI \?ELS37
PRINTI "The chest is now tied to the rope."
CRLF
SET 'CHEST-TIED,TRUE-VALUE
ZERO? MAN-FLAG /TRUE
ZERO? MAN-GONE \TRUE
PRINTI "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."
CRLF
MOVE CHEST,MAN
FSET CHEST,TOUCHBIT
SET 'CHEST-TIED,FALSE-VALUE
SET 'ROPE-FLAG,FALSE-VALUE
CALL QUEUE,I-MAN-RETURNS,10
PUT STACK,0,1
SET 'MAN-FLAG,FALSE-VALUE
RTRUE
?ELS37: EQUAL? ME,PRSI,PRSO \?ELS48
ZERO? MAN-FLAG /?ELS53
IN? CHEST,MAN \?ELS53
PRINTR """Just grab onto it!"", the man bellows."
?ELS53: ZERO? MAN-FLAG /?ELS59
PRINTR "The man looks cross. ""I want the chest, not you!"" he snaps. ""Now stop fooling around and pass it up!"""
?ELS59: PRINTR "You're unable to tie the rope around yourself."
?ELS48: PRINTR "You're unable to tie the rope to that."
?ELS32: EQUAL? PRSA,V?UNTIE \FALSE
ZERO? CHEST-TIED /?ELS77
SET 'CHEST-TIED,FALSE-VALUE
PRINTR "The chest is now disconnected from the rope."
?ELS77: PRINTR "The rope isn't tied to anything."
.FUNCT I-MAN-RETURNS
SET 'ROPE-FLAG,TRUE-VALUE
EQUAL? HERE,CLIFF-LEDGE \FALSE
PRINTI "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."
CRLF
SET 'MAN-FLAG,TRUE-VALUE
CALL QUEUE,I-MAN-LIFT,-1
PUT STACK,0,1
RTRUE
.FUNCT I-MAN-LIFT
EQUAL? HERE,CLIFF-LEDGE /?ELS5
CALL QUEUE,I-MAN-LIFT,0
MOVE CHEST,CLIFF
FSET CHEST,OPENBIT
SET 'CHEST-OPENED,TRUE-VALUE
REMOVE MAN
RFALSE
?ELS5: ZERO? HOLDING-ROPE /?ELS7
PRINTI "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."
CRLF
CALL QUEUE,I-MAN-LIFT,0
MOVE STAFF,WINNER
SET 'HOLDING-ROPE,FALSE-VALUE
SET 'ROPE-FLAG,TRUE-VALUE
MOVE WINNER,CLIFF
MOVE CHEST,CLIFF
FSET CHEST,OPENBIT
PRINTI "The chest, open and empty, is at your feet."
CRLF
SET 'CHEST-OPENED,TRUE-VALUE
MOVE MAN,CLIFF
CALL QUEUE,I-MAN-LEAVES,-1
PUT STACK,0,1
RTRUE
?ELS7: IGRTR? 'LIFT-WAIT,4 \?ELS14
PRINTI """Well, I don't have all day. See you around sometime."" Showering you with gravel, he disappears from sight."
CRLF
SET 'MAN-FLAG,FALSE-VALUE
MOVE CHEST,CLIFF
FSET CHEST,OPENBIT
SET 'CHEST-OPENED,TRUE-VALUE
CALL QUEUE,I-MAN-LIFT,0
RSTACK
?ELS14: PRINTR "The man appears impatient. ""Are you coming up then, or not?"""
.FUNCT CHEST-F
ZERO? CHEST-OPENED /?ELS5
EQUAL? PRSA,V?TIE \?ELS11
EQUAL? ROPE,PRSO,PRSI \?ELS11
PRINTR "What's the point?"
?ELS11: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSO,STAFF,LAMP,TORCH \FALSE
PRINTI "It doesn't fit."
EQUAL? PRSO,STAFF \?CND22
PRINTI " Awfully peculiar, though, since it's where the staff came from."
?CND22: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE
ZERO? MAN-FLAG /?ELS35
PRINTR "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."
?ELS35: PRINTR "The chest is locked and cannot be opened."
.FUNCT I-MAN-LEAVES
EQUAL? HERE,CLIFF /?ELS5
REMOVE MAN
SET 'MAN-GONE,TRUE-VALUE
SET 'MAN-FLAG,FALSE-VALUE
SET 'ROPE-FLAG,TRUE-VALUE
CALL QUEUE,I-MAN-LEAVES,0
RFALSE
?ELS5: RANDOM 100
GRTR? 40,STACK \?ELS7
PRINTI "Your ""friend"", moving quickly, dodges behind some trees and is lost from sight."
CRLF
REMOVE MAN
SET 'MAN-FLAG,FALSE-VALUE
SET 'MAN-GONE,TRUE-VALUE
SET 'ROPE-FLAG,TRUE-VALUE
CALL QUEUE,I-MAN-LEAVES,0
RTRUE
?ELS7: PRINTR "Your ""friend"" examines his valuables with great pride."
.FUNCT MAN-F
EQUAL? PRSA,V?HELLO \?ELS5
PRINTR "He responds cheerfully. ""It is a wonderful day, isn't it?"""
?ELS5: CALL HELLO?,MAN
ZERO? STACK /?ELS9
PRINTR "The man is thoroughly engrossed in the examination of his booty and doesn't seem to hear you."
?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13
PRINTR "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."
?ELS13: EQUAL? PRSA,V?ATTACK \FALSE
EQUAL? PRSI,SWORD \?ELS22
PRINTI "The man is taken by surprise and is hit with the sword. He grabs you and throws you to the ground"
LOC STAFF
EQUAL? STACK,WINNER,HERE \?CND25
PRINTI ", breaking the staff in the process"
REMOVE STAFF
MOVE BROKEN-STAFF,HERE
?CND25: PRINTI ", 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."
CRLF
REMOVE MAN
MOVE VALUABLES,HERE
FCLEAR VALUABLES,NDESCBIT
CALL QUEUE,I-MAN-LEAVES,0
SET 'MAN-GONE,TRUE-VALUE
RETURN MAN-GONE
?ELS22: PRINTR "You wouldn't hurt him with that!"
.FUNCT VALUABLES-F
EQUAL? PRSA,V?MOVE,V?PUT,V?TAKE \?ELS5
IN? MAN,CLIFF \?ELS5
PRINTR "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!"""
?ELS5: ZERO? MAN-GONE /FALSE
IN? VALUABLES,MAN \FALSE
PRINTR "What valuables?"
.FUNCT ROPE-F
EQUAL? PRSA,V?MOVE,V?TAKE \?ELS5
ZERO? ROPE-FLAG /FALSE
PRINTR "The rope is tied to a tree."
?ELS5: EQUAL? PRSA,V?CLIMB-FOO \?ELS15
CALL V-CLIMB-UP,P?DOWN,TRUE-VALUE
RSTACK
?ELS15: EQUAL? PRSA,V?BURN \?ELS17
PRINTR "The rope won't catch fire."
?ELS17: EQUAL? PRSA,V?UNTIE \?ELS21
PRINTR "The rope is very securely tied and cannot be undone."
?ELS21: EQUAL? PRSA,V?CUT \FALSE
EQUAL? PRSI,SWORD \FALSE
PRINTR "The rope is made of pretty tough stuff and won't cut."
.FUNCT GLOBAL-MAN-F
EQUAL? HERE,CLIFF \?ELS5
ZERO? MAN-GONE /?ELS10
PRINTR "You've lost him among the trees."
?ELS10: PRINTR "You can't see any man here."
?ELS5: ZERO? MAN-FLAG \?ELS19
PRINTR "You can't see any man here."
?ELS19: EQUAL? PRSA,V?GIVE \?ELS23
PRINTR "You aren't even close to him!"
?ELS23: EQUAL? PRSA,V?HELLO \?ELS27
PRINTR "The man waves back in a friendly way."
?ELS27: CALL HELLO?,GLOBAL-MAN
ZERO? STACK /?ELS31
PRINTI "He yells back, ""What's that you say? I can't hear you very well."
ZERO? CHEST-LIFTED \?ELS36
PRINTI " Just tie the rope to the chest and we can chat afterwards!"" He smiles broadly."
JUMP ?CND34
?ELS36: PRINTI """"
?CND34: CRLF
RTRUE
?ELS31: EQUAL? PRSA,V?MUNG,V?ATTACK \?ELS44
PRINTR "It's unlikely you'll succeed at this distance."
?ELS44: EQUAL? PRSA,V?THROW \FALSE
EQUAL? PRSI,GLOBAL-MAN \FALSE
IN? PRSO,WINNER \FALSE
PRINTI "The "
PRINTD PRSO
PRINTI " 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!"""
CRLF
MOVE PRSO,HERE
RTRUE
.FUNCT LAKE-F
EQUAL? PRSA,V?BOARD,V?LEAP,V?THROUGH \?ELS5
EQUAL? HERE,LAKE-SHORE,FAR-SHORE,SOUTH-SHORE \?ELS10
CALL GO-ON-LAKE
RSTACK
?ELS10: EQUAL? HERE,ON-LAKE \?ELS12
CALL GOTO,IN-LAKE
RSTACK
?ELS12: PRINTR "Just where do you think you are?"
?ELS5: EQUAL? PRSA,V?LOOK-UNDER \FALSE
EQUAL? HERE,ON-LAKE \?ELS23
PRINTR "You can't quite make out the bottom of the lake from here..."
?ELS23: PRINTR "You can't see under the surface from here."
.FUNCT IN-LAKE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
CALL QUEUE,I-IN-LAKE,3
PUT STACK,0,1
RTRUE
?ELS5: EQUAL? RARG,M-BEG \?ELS7
EQUAL? PRSA,V?TAKE \?ELS7
EQUAL? PRSO,SHINY-OBJECT /?ELS7
CALL WEIGHT,WINNER
GRTR? STACK,25 \?ELS14
PRINTR "You can't carry that much underwater."
?ELS14: FSET? PRSO,TAKEBIT /?ELS18
PRINTR "You can't take that!"
?ELS18: RANDOM 100
GRTR? 30,STACK \FALSE
PRINTI "The "
PRINTD PRSO
PRINTR " is yours for a moment, but drops from your grasp."
?ELS7: EQUAL? RARG,M-END \FALSE
RANDOM 100
GRTR? 10,STACK \?ELS31
PRINTR "A large and hungry-looking fish is swimming in the neighborhood."
?ELS31: RANDOM 100
GRTR? 4,STACK \?ELS35
ZERO? INVIS \?ELS35
CALL QUEUE,I-ROC,0
CALL QUEUE,I-ON-LAKE,0
CALL JIGS-UP,STR?208
RSTACK
?ELS35: IN? SHINY-OBJECT,HERE \FALSE
EQUAL? MOVES,LAST-MOVES /TRUE
RANDOM 100
GRTR? 40,STACK \?ELS44
PRINTI "Out of the corner of your eye, a small, shiny object appears in the sand. A moment later, it is gone!"
CRLF
JUMP ?CND40
?ELS44: RANDOM 100
GRTR? 70,STACK \?ELS48
PRINTI "You catch a brief glimpse of something shiny in the sand."
CRLF
JUMP ?CND40
?ELS48: PRINTI "Something sparkling in the sand catches your eye for a moment."
CRLF
?CND40: SET 'LAST-MOVES,MOVES
RETURN LAST-MOVES
.FUNCT I-IN-LAKE
EQUAL? HERE,IN-LAKE \FALSE
PRINTI "You run out of air and return to the surface."
CRLF
CALL GOTO,ON-LAKE
RSTACK
.FUNCT ON-LAKE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
CALL QUEUE,I-IN-LAKE,0
ZERO? LAKE-POINT \FALSE
INC 'SCORE
SET 'LAKE-POINT,TRUE-VALUE
RETURN LAKE-POINT
?ELS5: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?LEAP \FALSE
ZERO? PRSO \FALSE
CALL DO-WALK,P?DOWN
RTRUE
.FUNCT GO-ON-LAKE,F,N,TOLD=0
FIRST? WINNER >F \?CND1
?PRG4: NEXT? F >N /?KLU31
?KLU31: FSET? F,WEARBIT /?CND6
MOVE F,IN-LAKE
EQUAL? F,TORCH \?ELS11
REMOVE TORCH
MOVE FRIED-TORCH,IN-LAKE
JUMP ?CND9
?ELS11: EQUAL? F,LAMP \?ELS13
MOVE LAMP,LOCAL-GLOBALS
MOVE FRIED-LAMP,IN-LAKE
SET 'CURRENT-LAMP,FRIED-LAMP
JUMP ?CND9
?ELS13: EQUAL? F,WAYBREAD \?CND9
REMOVE WAYBREAD
?CND9: ZERO? TOLD \?CND6
SET 'TOLD,TRUE-VALUE
PRINTI "The shock of entering the frigid water has made you drop all your possessions into the lake!"
CRLF
?CND6: ZERO? N \?ELS23
JUMP ?CND1
?ELS23: SET 'F,N
JUMP ?PRG4
?CND1: ZERO? TOLD \?CND26
PRINTI "You are nearly paralyzed by the icy waters as you swim into the center of the lake."
CRLF
?CND26: CRLF
CALL GOTO,ON-LAKE
SET 'LAKE-TIME,0
CALL QUEUE,I-ON-LAKE,-1
PUT STACK,0,1
RTRUE
.FUNCT I-ON-LAKE
INC 'LAKE-TIME
RANDOM 100
GRTR? 10,STACK \?ELS5
EQUAL? HERE,ON-LAKE \?ELS5
ZERO? INVIS \?ELS5
PRINTI "A giant roc, previously hidden among the rocks, is heading right toward you, its mouth gaping wide!"
CRLF
CALL QUEUE,I-ROC,2
PUT STACK,0,1
RTRUE
?ELS5: EQUAL? HERE,ON-LAKE,IN-LAKE /?ELS11
CALL QUEUE,I-ON-LAKE,0
CALL QUEUE,I-IN-LAKE,0
CALL QUEUE,I-ROC,0
RFALSE
?ELS11: EQUAL? LAKE-TIME,4 \?ELS13
PRINTR "The icy waters are taking their toll. You will not be able to hold out much longer."
?ELS13: EQUAL? LAKE-TIME,6 \?ELS17
PRINTR "You are becoming very weak. You had better leave the water before you drown!"
?ELS17: EQUAL? LAKE-TIME,8 \FALSE
CALL QUEUE,I-ON-LAKE,0
CALL QUEUE,I-IN-LAKE,0
CALL QUEUE,I-ROC,0
CALL JIGS-UP,STR?209
RSTACK
.FUNCT I-ROC
EQUAL? HERE,ON-LAKE \FALSE
ZERO? INVIS \FALSE
CALL QUEUE,I-ON-LAKE,0
CALL QUEUE,I-IN-LAKE,0
CALL JIGS-UP,STR?210
RSTACK
.FUNCT SHINY-OBJECT-F
EQUAL? PRSA,V?FIND,V?TAKE \FALSE
IN? AMULET,WINNER /FALSE
RANDOM 100
GRTR? 50,STACK \?ELS12
REMOVE SHINY-OBJECT
MOVE AMULET,WINNER
CALL THIS-IS-IT,AMULET
FCLEAR AMULET,NDESCBIT
PRINTR "You reach the shiny object. It is a simple golden amulet!"
?ELS12: PRINTR "The shiny object slips from your grasp and back onto the floor of the lake, where it is covered in sand."
.FUNCT SAND-F
EQUAL? PRSA,V?DIG \?ELS5
PRINTR "You don't come across anything unusual."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
PRINTR "There is nothing notable on the floor of the lake, except some plants and algae."
?ELS9: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "It slips through your fingers."
.FUNCT ALGAE-F
EQUAL? PRSA,V?EAT \FALSE
PRINTR "Yeecchhhh!"
.FUNCT FRIED-LAMP-F
EQUAL? PRSA,V?LAMP-ON \FALSE
PRINTR "The lamp isn't functioning (probably from having gotten wet)."
.FUNCT I-VIEW-SNAP
PRINTI "You suddenly find yourself back in the viewing room!"
CRLF
CALL GOTO,VIEW-ROOM,FALSE-VALUE
RTRUE
.FUNCT VIEWING-TABLE-F,L
EQUAL? PRSA,V?RUB \?ELS5
ADD SCORE,VIEW-POINT >SCORE
SET 'VIEW-POINT,0
PRINTI "You touch the table and are instantly transported to another place!"
CRLF
CRLF
CALL QUEUE,I-VIEW-SNAP,3
PUT STACK,0,1
GET VIEW-ROOMS,ACTIVE-VIEW
CALL GOTO,STACK
RTRUE
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
PRINTI "The surface is pale and featureless, but slowly, an image takes shape!"
CRLF
GET VIEWS,ACTIVE-VIEW
PRINT STACK
CRLF
PRINTR "The image slowly fades."
.FUNCT I-VIEW-CHANGE
INC 'ACTIVE-VIEW
EQUAL? ACTIVE-VIEW,5 \?CND1
SET 'ACTIVE-VIEW,1
?CND1: CALL QUEUE,I-VIEW-CHANGE,4
EQUAL? HERE,VIEW-ROOM \FALSE
PRINTI "The indicator above the table flickers briefly, then changes to """
GET VIEW-ROMANS,ACTIVE-VIEW
PRINT STACK
PRINTR """."
.FUNCT VIEW-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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 """
GET VIEW-ROMANS,ACTIVE-VIEW
PRINT STACK
PRINTR """."
.FUNCT CLIFF-OBJECT-F
EQUAL? HERE,CLIFF \?ELS5
EQUAL? PRSA,V?LEAP \?ELS10
CALL JIGS-UP,STR?27
RSTACK
?ELS10: EQUAL? PRSA,V?CLIMB-DOWN \?ELS12
ZERO? ROPE-FLAG /?ELS17
CALL GOTO,CLIFF-LEDGE
RTRUE
?ELS17: PRINTR "The fall would kill you."
?ELS12: EQUAL? PRSA,V?THROW-OFF \FALSE
EQUAL? PRSI,CLIFF-OBJECT \FALSE
EQUAL? PRSO,ROPE \?ELS29
PRINTR "The rope is dangling over the side of the cliff already."
?ELS29: IN? PRSO,WINNER /?CND27
PRINTI "You aren't holding the "
PRINTD PRSO
PRINTR "."
?CND27: MOVE PRSO,CLIFF-LEDGE
PRINTI "The "
PRINTD PRSO
PRINTI " goes over the cliff and lands among the rocks below."
CRLF
EQUAL? PRSO,LAMP \?ELS40
REMOVE PRSO
MOVE BROKEN-LAMP,CLIFF-LEDGE
SET 'CURRENT-LAMP,BROKEN-LAMP
RTRUE
?ELS40: EQUAL? PRSO,STAFF \TRUE
REMOVE PRSO
MOVE BROKEN-STAFF,CLIFF-LEDGE
RTRUE
?ELS5: EQUAL? PRSA,V?CLIMB-UP \?ELS44
PRINTR "You haven't enough strength to climb the cliff."
?ELS44: PRINTR "The cliff is above you!"
.FUNCT TREE-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
PRINTR "The trunks are too large for you to climb them."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS9
ZERO? MAN-SEEN \?ELS9
PRINTR "There seems to be nobody there, but it's hard to tell."
?ELS9: EQUAL? PRSA,V?BURN \FALSE
CALL JIGS-UP,STR?219
RSTACK
.FUNCT FRIED-TORCH-F
EQUAL? PRSA,V?LAMP-ON \FALSE
PRINTR "It's hopeless. The torch is wet."
.FUNCT TORCH-F
EQUAL? PRSA,V?LAMP-ON \?ELS5
FSET? TORCH,ONBIT \?ELS10
PRINTR "It's already lit."
?ELS10: PRINTR "You have nothing to light it with."
?ELS5: EQUAL? PRSA,V?LAMP-OFF \FALSE
FSET? TORCH,ONBIT \?ELS23
PRINTI "You manage to extinguish the flame."
CRLF
FCLEAR TORCH,ONBIT
RTRUE
?ELS23: PRINTR "It has already been extinguished."
.FUNCT NO-OBJS,RARG,F
EQUAL? RARG,M-BEG \FALSE
FIRST? WINNER >F /?KLU13
?KLU13: SET 'EMPTY-HANDED,TRUE-VALUE
?PRG6: ZERO? F /FALSE
CALL WEIGHT,F
GRTR? STACK,4 \?CND8
SET 'EMPTY-HANDED,FALSE-VALUE
RFALSE
?CND8: NEXT? F >F /?KLU14
?KLU14: JUMP ?PRG6
.FUNCT REPELLENT-FCN
EQUAL? PRSA,V?SHAKE \?ELS5
ZERO? SPRAY-USED? /?ELS10
PRINTR "The can seems empty."
?ELS10: PRINTR "There is a sloshing sound from inside."
?ELS5: EQUAL? PRSA,V?BURN \?ELS19
CALL JIGS-UP,STR?229
RSTACK
?ELS19: EQUAL? PRSA,V?PUT-ON,V?SPRAY \FALSE
EQUAL? PRSO,REPELLENT \FALSE
ZERO? SPRAY-USED? /?ELS28
PRINTR "The repellent is all gone."
?ELS28: ZERO? PRSI \?ELS33
SET 'SPRAY-USED?,TRUE-VALUE
PRINTR "The spray stinks amazingly for a few moments, then drifts away."
?ELS33: EQUAL? PRSI,ME \?CND38
CALL QUEUE,I-SPRAY,5
PUT STACK,0,1
SET 'SPRAYED?,TRUE-VALUE
?CND38: SET 'SPRAY-USED?,TRUE-VALUE
PRINTR "The spray smells like a mixture of old socks and burning rubber. If I were a grue I'd sure stay clear!"
.FUNCT I-SPRAY
SET 'SPRAYED?,FALSE-VALUE
PRINTR "That horrible smell is much less pungent now."
.FUNCT ZORK-IV-F,RARG
EQUAL? RARG,M-ENTER \FALSE
CALL JIGS-UP,STR?230
RSTACK
.FUNCT AQUEDUCT-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The aqueduct is large and impressive. It was probably the major method of water transport in the Empire."
?ELS5: EQUAL? PRSA,V?LEAP \FALSE
CALL JIGS-UP,STR?241
RSTACK
.FUNCT WATER-CHANNEL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The channel is a few feet deep and ten feet wide, rounded on the bottom."
?ELS5: EQUAL? PRSA,V?BOARD \FALSE
EQUAL? HERE,DAMP-PASSAGE \?ELS14
PRINTR "Getting into the channel wouldn't be of much use."
?ELS14: PRINTR "You're standing in it. Otherwise, you would be floating in midair above some very nasty rocks."
.FUNCT MOSS-F
EQUAL? PRSA,V?MOVE,V?TAKE \FALSE
PRINTR "Don't be silly."
.FUNCT AQ-2-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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."
CRLF
ZERO? AQ-FLAG \FALSE
PRINTR "The channel ends abruptly to your north where a supporting pillar has crumbled, casting the arch into the chasm."
.FUNCT AQ-3-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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."
CRLF
ZERO? AQ-FLAG \FALSE
PRINTR "The southern part of the aqueduct system is inaccessable due to the collapse of one of the water-bearing arches."
.FUNCT COVER-F
EQUAL? PRSA,V?OPEN,V?RAISE,V?MOVE \?ELS5
PRINTI "The cover is moved a bit to one side, revealing a small hole leading into darkness."
CRLF
SET 'COVER-MOVED,TRUE-VALUE
RETURN COVER-MOVED
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "The cover is far too heavy to take."
.FUNCT KEY-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "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."
CRLF
ZERO? COVER-MOVED /?ELS12
PRINTR "A heavy manhole cover has been moved to reveal a dark passage below."
?ELS12: PRINTR "To one side of the room is a large manhole cover."
.FUNCT KEY-F
EQUAL? PRSA,V?UNLOCK \?ELS5
EQUAL? PRSI,KEY \?ELS5
EQUAL? PRSO,BRONZE-DOOR \?ELS12
EQUAL? HERE,GOOD-CELL \?ELS12
ZERO? BRONZE-DOOR-LOCKED /?ELS17
PRINTI "The key seems to mold itself to the shape of the lock. With a mere twist of your hand, the massive bolt gives way."
CRLF
JUMP ?CND15
?ELS17: PRINTI "It already is."
CRLF
?CND15: SET 'BRONZE-DOOR-LOCKED,FALSE-VALUE
RTRUE
?ELS12: EQUAL? PRSO,BRONZE-DOOR \?ELS26
PRINTR "The key molds itself to the lock but will not turn."
?ELS26: EQUAL? PRSO,CHEST /?THN31
FSET? PRSO,DOORBIT \FALSE
?THN31: PRINTR "The key, which initially seemed certain to fit the lock, seems to change shape and will not enter the keyhole."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
CALL PICK-ONE,KEY-DESCS
PRINT STACK
CRLF
PRINTR "Strange, though. The key seems to change shape constantly."
.FUNCT VIEW-INDICATOR-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTI "The indicator reads """
GET VIEW-ROMANS,ACTIVE-VIEW
PRINT STACK
PRINTR """."
.FUNCT FLATHEAD-OCEAN-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "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."
CRLF
FSET? VIKING-SHIP,INVISIBLE /TRUE
PRINTR "An ancient Viking ship is passing along the shore, an old and crusty sailor at the helm."
?ELS5: EQUAL? RARG,M-END \FALSE
RANDOM 100
GRTR? 20,STACK \FALSE
ZERO? BOAT-SEEN \FALSE
ZERO? LIT /FALSE
SET 'BOAT-SEEN,TRUE-VALUE
CALL QUEUE,I-BOAT-DISAPPEAR,2
PUT STACK,0,1
PRINTI "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."
CRLF
FCLEAR VIKING-SHIP,INVISIBLE
RTRUE
.FUNCT I-BOAT-DISAPPEAR
FSET VIKING-SHIP,INVISIBLE
SET 'SHIP-GONE,TRUE-VALUE
EQUAL? HERE,FLATHEAD-OCEAN \FALSE
PRINTR "The boat sails silently through the mist and out of sight."
.FUNCT I-VISIBLE
SET 'INVIS,FALSE-VALUE
EQUAL? HERE,MRG,MRGE,MRGW \FALSE
CALL JIGS-UP,STR?248
RFALSE
.FUNCT POTION-F
EQUAL? PRSA,V?DRINK \?ELS5
REMOVE POTION
SET 'INVIS,TRUE-VALUE
CALL QUEUE,I-VISIBLE,3
PUT STACK,0,1
PRINTR "You ""drink"" the contents in one gulp, but nothing unusual seems to have happened as a result."
?ELS5: EQUAL? PRSA,V?POUR-ON \?ELS9
EQUAL? PRSO,POTION \?ELS9
REMOVE POTION
PRINTI "It spills onto the "
PRINTD PRSI
PRINTR " and vanishes."
?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS15
PRINTR "It feels like there's something inside, but you can't see anything even though the vial is transparent."
?ELS15: EQUAL? PRSA,V?SMELL \?ELS19
PRINTR "The vial (or something in it) smells sweet."
?ELS19: EQUAL? PRSA,V?TAKE,V?DROP \FALSE
PRINTI "Nothing seems to come out, although the sweet smell disappears from the vial, seeming to permeate the air briefly before fading entirely."
CRLF
REMOVE POTION
RTRUE
.FUNCT VIAL-F
EQUAL? PRSA,V?FILL \?ELS5
PRINTR "You can't seem to put anything in it."
?ELS5: EQUAL? PRSA,V?DRINK-FROM \?ELS9
IN? POTION,VIAL \?ELS9
CALL PERFORM,V?DRINK,POTION
RTRUE
?ELS9: EQUAL? PRSA,V?SMELL \?ELS13
IN? POTION,VIAL \?ELS13
CALL PERFORM,V?SMELL,POTION
RTRUE
?ELS13: EQUAL? PRSA,V?SHAKE \?ELS17
IN? POTION,VIAL \?ELS17
FSET? VIAL,OPENBIT \?ELS17
PRINTI "Nothing seems to come out, although the vial is lighter now."
CRLF
REMOVE POTION
RTRUE
?ELS17: EQUAL? PRSA,V?OPEN \?ELS23
FSET VIAL,OPENBIT
PRINTI "The vial is open."
IN? POTION,VIAL \?CND26
PRINTI " There is a sweet odor from within the vial, apparently coming from a heavy but invisible liquid."
?CND26: CRLF
RTRUE
?ELS23: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "It is a small, transparent vial "
IN? POTION,VIAL \?ELS39
PRINTR "which looks empty but is strangely heavy."
?ELS39: PRINTR "which is light and empty."
.FUNCT OCEAN-F
EQUAL? HERE,FLATHEAD-OCEAN /?ELS5
PRINTR "There is no ocean here."
?ELS5: EQUAL? PRSA,V?BOARD,V?THROUGH \?ELS9
PRINTR "You would be killed by the pounding surf!"
?ELS9: EQUAL? PRSA,V?THROW,V?PUT \FALSE
EQUAL? PRSI,OCEAN \FALSE
PRINTI "The "
PRINTD PRSO
PRINTI " falls into the ocean and is lost forever."
CRLF
REMOVE PRSO
RTRUE
.FUNCT STONE-DESC,FOO
PRINTI "Standing before you is a great rock."
ZERO? SWORD-IN-STONE? /?CND3
PRINTI " Imbedded within it is an Elvish sword."
?CND3: CRLF
RTRUE
.FUNCT STONE-F
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
PRINTR "You can't be serious."
?ELS5: EQUAL? PRSA,V?PUT \?ELS9
EQUAL? PRSI,STONE \?ELS9
PRINTR "You can't force anything into the stone."
?ELS9: EQUAL? PRSA,V?PUSH,V?TAKE,V?MOVE \?ELS15
EQUAL? PRSO,STONE \?ELS15
PRINTR "The stone is far too massive to be moved."
?ELS15: EQUAL? PRSA,V?LOOK-UNDER \FALSE
PRINTR "Since it can't be moved, it's hard to know what's there."
.FUNCT FISH-F
PRINTR "There is no fish visible now."
.FUNCT QUICKSAND-PSEUDO
EQUAL? PRSA,V?LEAP,V?THROUGH \?ELS5
CALL JIGS-UP,STR?249
RSTACK
?ELS5: EQUAL? PRSA,V?RUB \?ELS7
PRINTR "It's quicksand all right!"
?ELS7: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "It's hard to tell what's in there."
.FUNCT SWAMP-PSEUDO
EQUAL? PRSA,V?THROUGH \FALSE
PRINTR "Yucko."
.FUNCT MIST-PSEUDO
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
PRINTR "You can't make anything out through the mist."
?ELS5: EQUAL? PRSA,V?SMELL \FALSE
PRINTR "It smells vaguely salty."
.FUNCT SHORE-PSEUDO
EQUAL? PRSA,V?DIG \FALSE
PRINTR "There's nothing there."
.FUNCT WATERFALL-PSEUDO
EQUAL? PRSA,V?CLIMB-UP \FALSE
PRINTR "It's much too slippery."
.FUNCT ARCH-PSEUDO
EQUAL? PRSA,V?EXAMINE \FALSE
ZERO? AQ-FLAG /?ELS10
PRINTR "The arches all show some signs of decay."
?ELS10: PRINTR "The arch before you is broken. The others show signs of decay."
.ENDI