diff --git a/3actions.zap b/3actions.zap new file mode 100644 index 0000000..c22fc53 --- /dev/null +++ b/3actions.zap @@ -0,0 +1,3967 @@ + + + .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 diff --git a/3actions.zil b/3actions.zil new file mode 100644 index 0000000..6b98fc7 --- /dev/null +++ b/3actions.zil @@ -0,0 +1,5398 @@ +"ACTIONS3 for + ZORK III: The Dungeon Master + The Great Underground Empire (Part 3) + (c) Copyright 1982 Infocom, Inc. All Rights Reserved. +" + +"SWORD demon" + +) (NG 0) P T L) + + > ) + ( ,MAN-FLAG> ) + ( ) + ( <==? ,HERE ,IN-MIRROR>> + > + ) + (ELSE + + >> + ) + (> + > + > + + > + + )>)>)>>)> + ) + (<==? .NG 2> + ) + (<1? .NG> + ) + (<0? .NG> + )> + + ) + (ELSE )>> + + + +)) + >) + ( >> + ) + (>> >)>>> + +"old ACTIONS.ZIL" + +> + +> + + )> + + ) + (>> )>>> + + + + ) + (T )>)>) + ( <==? ,WINNER ,ADVENTURER>> + > + <>)>> + +> + + + + > + + + ) + ( + > + ) + (ELSE + > + <>)>) + ( + > + ) + (ELSE + > + <>)>) + ( + > + ) + ( + ) + (ELSE + )> + )>> + + + + )> + > + + ) + (T + CR>)>)>> + +)) + >>> + + > + >)>> + +;) TICK) + #DECL ((OBJ) OBJECT (TBLNAM INTNAM) ATOM (TBL) + (TICK) FIX) + >>> + + + )> + > + + ) + (T + CR>)>)> + > + >)>> + + + <==? ,PRSO ,ME>>> + ) + ( + ) + ( <==? ,PRSI ,PSEUDO-OBJECT>> + + )>> + + > + + ) + (T )>> + +\ + +"SUBTITLE CHINESE PUZZLE SECTION (COURTESY OF WILL WENG)" + + + +>> + +> + +;" 0 is no wall + 1 is fixed wall + -1 is movable wall (-2 is good ladder, -3 bad ladder)" + +> + +> + +> + +> + + + -2> + + ,CP-ANTE) + (T + + )>) + (T + + )>) + ( + <==? ,PRSO ,P?WEST> + ,CP-FLAG> + + ,CP-OUT) + (<==? ,PRSO ,P?DOWN> + + ) + ( + <==? ,PRSO ,P?WEST>> + + ) + (T + > + > 36> + + > + + ) + ( 1 6> + ) + ( ; "SW AND SE" + > + >>>> + ) + ( + > + .FX>>>> + ) + (T + )> + )>> + + + + + + + 0> + > ) + ( 1> + > ) + ( > ) + ( > )>> + +>>> + ) + (T + )>> + +> ,CPBLOCK-FLAG> + + ) + (T + + ,CP)>> + + + + >> + ) + (T + )>)>> + +> + +> + +> -3> + >) + (<==? > -2> + ) + (T )>> + + + > + + ) + (T + )>) + (T )>> + +)) + #DECL ((NXT WL NNXT NWL) FIX (UVEC) ) + ) + ( + > + + + )> + > + + ) + (<1? .WL> + ) + (<0? >> + ) + (>>> + ) + (T + + ) + (T + > + + + + )> + + + + > + >> + > + ) + (T + > + ,CP-OUT> + + + )> + >)>>)> + + )> + )>)>> + + 2>>> + + -3>>> + +"Flag for blocking of main entrance" + +> + + ;"8*(22-1)" + +) + + + >> + > + > + > + ) + (<==? .F ,ADVENTURER> T) + (T + + + >)> + ) + (T )>> + 1>> + + >> + > + ) + (T + > + ,CP> + >)>> + + > + +> + 0) + (T <+ .RM .FX>)>> + + >> + ) + ( + ) + (T )>) + ( + ) + (T )>) + ( + ) + ( + )>> + + + 1) + (T 33)>>) + (<==? .RARG ,M-LOOK> + ) + (T + )>)>> + + > 1) + (T )>> + + .FOO> 1) + (T )>> + +>) + (S >) + (E 1>) + (W 0>)) + #DECL ((N S E W) FIX) + + ;"Top Row" + + + + + + + ;"Middle Row" + + + + + ;"Bottom Row" + + + + + + + + + ) + (<==? ,CPHERE 22> + ) + (<==? ,CPHERE 33> + + ) + (T )> + )> + + )> + + )>> + +"Show where the eight nearest neighbors are located" + + ) + (<1? .CONTENTS> ) + (T )>> + +;"Show an orthogonal neighbor" + +> + > >> ) + ( ) + (<0? > 1) + (T )>>> + ) + (<1? .COL> ) + (T )>> + + + 10> + + )> + + + + ) + ( + CR>) + (T + )>)>> + + + + ) + (T )> + )>> + +"Old end-game stuff" + +;"SUBTITLE It's All Done with Mirrors" + +> + + + + + +> + +> + +> + +> +> + + + >) + (T >)> + + + > + + ) + (> ,IN-MIRROR) + (T )>) + (T .TORM)>) + (<==? ,MLOC .TORM> + > ) + (T )>) + (T .TORM)>> + + + + 360>>)> + > + >> + ) + (T + )>> + + + ) + (T )>> + +> +> + +>> + +
>> + +) (M1? <>) MWIN) + + > + )> + > 180> + )> + ) (T )> + + " wall is a large " + + CR> + + + CR>)> + > + +> + +)) + + + + )>> + +)) + + + + )>> + +)) + + + )>> + +)) + + + )>> + + + +) (NTELL <>) (STELL <>) + MIR? (M1? <>) DIR) + > + )> + + + ) + (<==? ,HERE ,MRC> + + + ) + (<==? ,HERE ,FRONT-DOOR> + + ) + (<==? ,HERE ,MRD> + + + ) + (<==? ,HERE ,MRA> + + )> + + + + + ) + (T + + )> + > + + ,MR1-FLAG) + ( > + + ,MR1-FLAG) + (T ,MR2-FLAG)>> + > + + + ) + (T + + .DIR + "th side of the hallway." CR> + + CR>)>)>)> + > + ) + ( + ) + ( + )> + > + +)) + + )>> + +)) + + )>> + +)) + + )>> + +)) + + >)>> + +)) + + + ) + (T + + )>) + ( > + ) + (> ) + ( + + ) + (T )>) + ( <==? ,PRSI ,GUARDIAN>> + + ) + (T + + )> + + + ) + (T )> + ) + ( + ) + ( + )>> + + ,R-NORTHS) (T ,R-SOUTHS)>> + + <==? ,MLOC >> + + + > + 1) + ( + + > + 1) + (T 2)>)>> + +> + + >> + + )>) + (T )>> + + + + + > + + > 0) + (T 180)>>> + 1) + (T 2)>) + (<0? > ) + (> .TMP) + (> .TMP) + (T )>> + +>> + ) + ( + ) + ( + ,MR1-FLAG> ,MR2-FLAG> + ) + (T + )>) + (T + )>) + ( + + > + ) + (T )>) + (,MR2-FLAG + > + ) + (T )>) + ( > > + ) + ( + +"The mirror is mounted on a wooden panel which moves slightly inward +as you push, and back out when you let go. It feels fragile.") + (T +"The mirror is unyielding, but seems fragile.")> CR>)>> + +>> + ) + ( + ) + ( + + ) + (T )>) + (,MR2-FLAG + ) + (T )>) + ( + +"The wooden panel moves slightly inward as you push, and back out +when you let go.") + (T +"The panel is unyielding.")> CR>)>> + + + +> + + ) + (T >)> + + <==? 360> .DIR>> + > + ) + (T T>)>) + (T + + )>) + (,WOOD-OPEN-FLAG + + <==? 360> .DIR>> + >) (T )> + > + + > + .RM) + (T + + )>) + (T + + )>) + (T + + )>> + +"MIRNS -- returns room in a given direction from the mirror (north or +south as indicated by first argument). If second arg is T, then we +are exiting, not moving the mirror, so don't worry about ends." + +) "AUX" S T) + + > + ) + ( <==? ,MLOC ,MRA>> + )>)> + >> + > ,UEXIT> + ) + (.NORTH? + ) + (T + )>)>> + + ) + (T )>> + + 1> ,MIRROR-OPEN-FLAG> + ,IN-MIRROR) + ( ) + (<==? 1> + ,MR1-FLAG> + + ) + (T )>) + (T )>> + +) "AUX" O) + + + + >> + + ) + (<==? .RARG ,M-LOOK> + + > + )> + >)>> + +> + > + + ) + (>> )>>> + +; "This function cannot have its .PRSI and .PRSO's changed to ,PRSI etc!!" + +> + + + + + ) + ( + ) + ( + + + )> + ) + ( + + + ) + (T + + )> + >> ) + ( + + + ) + ( + ) + (<==? .PRI ,HANDS> + ) + (T )>) + ( <==? ,PRSO ,BEAM>> + )>> + +> + + + ) + (T + + + > + + + + ) + (T )>)>)>> + +> + > + 1> + <==? ,HERE ,IN-MIRROR>> + ) + (<==? ,HERE ,MR-ANTE> + )>> + + + +;"mirror points... 0 = north" + + + +;"pole raised?: 0 -- in hole or channel, 1 -- foor level, 2 -- in air" + +)) + + + <==? ,MDIR 270>> + > + ) + (T + )>) + ( + > + ) + (T + )>) + (T + )> + > + "."> + )> + )>> + +> + +;"MOVEMENT" + + + > + + + ) + (T + + )>)> + + 360>> + ) + (T + 360>> + )> + > + "." CR> + > + )> + + ) + (<0? > + ) + (T + )>)>> + + ) + ( + <==? ,PRSO ,PINE-PANEL>>> + >> + ) + (<==? ,PRSO ,MAHOGANY-PANEL> + >> + .RM>) + (T + )>) + (T + + + <==? ,MDIR 0>> + + <==? ,MDIR 180>> + <==? ,MLOC ,MRG>> + ) + (T + )> + + )> + + >)>)>> + +> + )>> + +) (LOSE <>)) + > )> + + + " and stops over another compass rose." CR> + + <==? ,HERE ,IN-MIRROR>> + ) + ( > + ) + ( + )> + ) + (T + )>)> + )> + T> + + + + ) + (T + + )>) + ( <==? ,PRSI ,CHANNEL>> + > + + ) + (<0? > + + + T) + ( <==? ,MLOC ,MRB>> + + ) + (<==? ,POLEUP-FLAG 1> + ) + (T + + )>)>> + +\ + +)) + ) + (<==? ,WINNER ,DUNGEON-MASTER> + + > + > + ) + (T + )>) + ( + + ) + ( + + <==? ,HERE ,NORTH-CORRIDOR>> + ) + ( + <==? ,HERE ,NORTH-CORRIDOR>> + + + + ) + ( + <==? ,HERE ,SOUTH-CORRIDOR>> + ) + (T + )>) + ( <==? ,PRSO ,PARAPET-OBJ>> + + + + ) + ( + ) + ( + <==? ,PRSO ,DUNGEON-DOOR> + ,IN-DUNGEON> + ) + ( + T) + (T )> + ) + (T )>) + ( + ) + ( + ) + ( + ) + ( <==? ,PRSI ,DUNGEON-MASTER>> + )>> + + + + ) + (T )>) + ( + + ) + (ELSE + > + > + )>) + ( > + ) + ( + + > + ) + (T )>> + +> + +)) + > + > + ) + (<==? .RARG ,M-LOOK> + + )>> + +)) + + ) + (<==? .RARG ,M-LOOK> + ,MRD> + + )>> + + + + + + + + >> + + + ) + ( + )>> + + + ) + ( > + + )> + + + + ) + (T + + >> + + > + )>)>> + +> + +> + + >)> + >)> + >)> + >)> + >)> + >)> + >)> + .CNT> + + ;"Following?" + + ) + ( ,FOLFLAG> + + > + ) + ( ,PRISON-CELL ,CELL> ) + ( + + + + ) + (T + + + )>> + +\ + +;"SUBTITLE + 'The end had come, and this was it; he dropped her in the Flaming Pit.'" + + ;"cell in slot" + + ;"cell pointed at" + +>> + +>> + > + > + > + ) + (T + + + >)> + ) + (T )>>)> + 1>> + >> + > + ) + (T + > + ,CELL> + >)>>> + + + + > + ) + (ELSE )> + + + + + + + ,GOOD-CELL) + (ELSE ,PRISON-CELL)>> + > + > + ) + (T )> + ) + (T )>>)>) + (T )> + )>> + + + + )>> + + + ) + ( + + + > + + )> + + + )> + ) + ( + ) + (T )>) + ( + > + + )> + )>> + +> + + + + )> + + )> + )>> + + + + + ) + (T + )> + + )> + + + )> + )>> + + + + )>> + + ) + (T )>> + + + + )>> + + + + + + )> + )>> + + + + + > + <==? ,HERE ,GOOD-CELL> + > + + ) + ( ,BRONZE-DOOR-LOCKED> + )>> + + + )>> + +\ + +"========== The Ultimate Winnage ==========" + + + + )>> + + + + ) + ( + ,CELL) + (T + + )>> + +; + > + +> +> + + + + >> + + )>> + + + + + > + ) + (<==? .RARG ,M-LOOK> + + + ) + (> + )>)>> + + + > + + > + >)> + )>> + +)) + + ) + (T + )>) + ( <==? ,PRSI ,OLD-MAN>> + + + + + + ) + ( + ) + (T + )>) + (T )>) + ( + ) + (T + )>) + ( + ) + (T + )>) + ( + ) + (T + )>) + ( + + + >) + ( + + + )>> + +> + +> + + )>> + + + )>> + + + )>> + + + ) + ( <==? ,PRSI ,FLAMING-PIT>> + + + ) + (T + + )>) + (T )>)>> + + + + + + )> + ) + (T )>)>> + + + )>> + + <==? ,PRSI ,CELL-DOOR>> + ) + ( + + ) + (T + + )>)>> + + >> + + + ) + (> + ) + ( + )>> + + + + )>> + +> + + (PI?) ) + ) + ( + + ) + ( ;"fill bottle with water =>" + + + + >) + ( + >) + (,PRSI + )> + ) + (T )> + > + ) + (.PI? ) + ( + )>> + + + + ) + (T )>)>> + +^/L + +;"special-cased routines" + +;"put GO here, eventually" + + CR>> + +> + +)) + #DECL ((DESC) STRING (PLAYER?) ) + + + + + > )> + > + + + + > + )> + + > 3> + + ) + (T + )> + + + + >> + )> + + + > + + + > + +) F N L) + > + + )> + > + >>> + +> + +> + > + > + > + > + + + +) + + + + ) (ELSE )> + + ,SCORE> + +\ + +"old TM.ZIL" + +"Incredibly bizarre Time Machine Problem" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + ) + ( + + ) + ( + + ) + ( + + )>> + + + + + + + + + + + + + + + + + + + + + + + + + +;"The present year using the GUE calendar." + +> + + + + + + + + + + + + + + + + ) + (T + )>)>> + +> + + + > + ) + (T + )> + + ) + (<==? ,HERE ,AQ-VIEW> + ) + ( + + ) + (T )> + )> + + + > + > + +> + )>> + + + ) + (T + )>)>> + +) + + ) + (T )> + > + + + + ) + (T + + "open") + (T "closed")> " +and leads to the Museum of Technology. "> + + ) + ( + ) + (T + )>)>)>> + + + +)) + + ) + (<==? .RARG ,M-BEG> + + ) + ( + <==? ,PRSO ,TIME-MACHINE>> + ) + ( + ) + ( + > + >> + )>) + ( + <==? ,PRSI ,TIME-MACHINE>> + ) + (<==? ,PRSO ,TIME-MACHINE> + + ) + ( + ) + ( > + ) + ( + ) + ( + ) + ( + + ,M-FATAL>> + + + + ) + (<==? ,HERE ,MUSEUM-ANTE> + + )> + )> + )>)>)>> + +> + + + + ) + ( <==? ,PRSI ,TM-SEAT>> + + + + ) + (T + )>) + ( + ) + ( + + + > + ) + (T )>)>> + + + ) + ( + + + ) + (T + + )>) + ( + ) + (T )>)>> + +> + + + > + > + )> + >> + ) + ( + ) + (<==? ,YEAR ,TM-YEAR> + ) + ( + + + + + ) + (T + )>) + ( + + + ) + ( + ) + (T + + )>) + ( + > + ) + (T + + )>)>) + (T + )>)>> + + + + + + ) + (T )>) + ( + ) + (T )>) + ( ) + (T )>> + +> + + + )> + + + > + + + ) + ( + ) + (T + )> + )> + + + + + + + )>> + +) (SNAP <>)) + > + + > + + )> + + + >)> + + ) + (T >)> + + + + + + + > + + + ; + + ) + (> + ,RING-CONCEALED> + + ) + (> + > + >> + )>)> + + > + >)> + + + + + > + + + + + ) + ( + + )> + + + + ) + (T + + + + + )> + >> + + )>) + (T )> + )> + > + +) (WFLG <>) N) + > + + > T) + ( + + )> + > + > + )> + + )>>)> + > + + + ) + (T )>)> + > + + + )>>)> + )>> + + CR> + > + +> + +> + + + > + +> + +> +> +> + + + + + > + + <==? ,HERE ,OLD-JEWEL-ROOM>> + + + + > + > + >> + )>) + (T )> + + )> + ) + (<==? .RARG ,M-LOOK> + + ) + (T + )> + )> + ) + ( + + ,GUARDS-PRESENT + > + ) + ( ,GUARDS-PRESENT> + >>>) + ( + + + ,GUARDS-PRESENT> + ) + ( ,GUARDS-PRESENT > + )>> + + + +> + > + +> + + + + + ) + (T )>> + + + + > + + + + ) + (<==? .RARG ,M-LOOK> + + > + ) + (T + )>)>> + +;"You can take the jewels in YEAR-BUILT; otherwise, it is enclosed. + If you take it, YEAR-CLOSED is updated to YEAR-CAGED (history changes)" + + + ) + ( + > + + ) + (T + )>) + ( + <==? ,PRSI ,PEDESTAL> + > + + + + ) + ( >> + )>> + + + + ) + (T + )>)>> + + + + )> + + + + ) + (,MYSTERY + )> + + )>> + + ,GUARDS-PRESENT> + + ) + ( ,GUARDS-PRESENT> + )>> + + ,GUARDS-PRESENT> + + ) + ( + + ) + ( + <==? ,HERE ,OLD-MUSEUM-ENTRANCE>> + ) + (T + + )>)>> + + + ) + ( )>> + +> + + "." CR>) + (T )>> + +> + +)) + + + )> + + + ) + (T )>) + ( + ) + ( + ) + ( + ) + ( + > + )>> + + + ) + ( + + ) + (T )>)>> + + + + )>) + ( >> + )>> + +\ + +"old SHADOW.ZIL" + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + +> + +> 0> + ) + (> + > + > + + >)>)>> + >> + +)) + + + >)> + + + + "." CR>) + (T )> + CR>) + ( <==? ,PRSI ,SHADOW>> + ) + ( + ) + ( <==? ,PRSI ,SWORD>> + + > + )> + ) + ( + + + > + >)>> + +> + + + + +> +> + +> + >)> + > + >)> + 10>> + )> + > + + + > + + >)> + 10>> + + > + + + )> + CR> + CR>) + (T + > + ) + ( + + )> + + CR>)>) + (T + + ) + (T CR>)>)>> + +> + +> + +> + + >> + + > + )> + > + + )> + 10>> > + + > 1> + + ) + (T + CR>)>) + (T + > 1> + ) + (T + )>)>) + ( + ) + (T + CR>)>> + +> + + + + + >> + + > + ) + ( > + + + + + + + + ) + (<==? ,S-STRENGTH 2> + ) + (T + )>)>> + + > + ) + ( > + )>> + +> + + + + <==? ,PRSO ,BLOCKED-DIR>> + ) + (<==? .RARG ,M-END> + > + > + )> + ) + ( + > + + > + >)>) + ( + ) + ( ,LIT > + > + + + "ern exit from the room and carrying a +brightly glowing sword." CR> + + )>)>> + + + + > + )> + > + + ) + (T + )> + >)>> + +> +> + + + > + )>> + +;" Cooperative Problem" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <==? ,PRSI ,LEDGE>> + > + + )> + + )>> + + + + <==? ,PRSI ,SWORD>> + + )>> + + + + + + + + + + + + <==? ,PRSI ,TORCH>> + + )>> + + + + + + + + + +> + +> + ,CLIFF-LEDGE ,WINNER>>> + ) + (,CHEST-TIED + + + + + + > + > + > + ) + (T + + + + >)>> + +> + +> + + > + + > + ) + (> 10> + + + > + ) + (T CR>)>> + + + ,CHEST-TIED> + > + > + )>> + +> + + +> +> +> + + + + + ,CHEST-TIED> + ) + ( + + + > + + > + )> + >) + (<==? .RARG ,M-LOOK> + + )> + )>> + + > + + + + + > + + ) + (<==? .RARG ,M-LOOK> + + )> + ) + ( + + >> + ) + ( + > + )>> + + + ) + ( + ) + ( + + ) + ( + + ) + (T + )>) + ( + ) + ( + + + + > + + + + > + > + > + > + )> + ) + ( + > + ) + (,MAN-FLAG + ) + (T + )>) + (T + )>) + ( + > + ) + (T + )>)>> + +> +> + + + + + + > + )>> + + + +> + + + + + + ) + (,HOLDING-ROPE + + + + > + + + + + + + + > + ) + (> 4> + + > + + + + ) + (T + )>> + +> + + <==? ,ROPE ,PRSO ,PRSI>> + ) + ( > + + + )> + ) + (T )>) + ( + ) + (T + )>)>> + + + +> + + + > + + + ) + ( + + + > + + + + ) + (T + )>> + + + ) + ( + ) + ( + ) + ( + + + ,WINNER ,HERE> + + + )> + + + + + + ) + (T )>)>> + + > + ) + (> + )>> + + + )>) + ( + ) + ( + ) + ( + ) + ( <==? ,PRSI ,SWORD>> + )>> + + + ) + (T + )>) + ( + ) + ( + ) + ( + ) + ( + + + ) + (T )> + ) + ( + ) + ( <==? ,PRSI ,GLOBAL-MAN> > + + )>> + + + + ) + (<==? ,HERE ,ON-LAKE> + ) + (T + )>) + ( + + ) + (T )>)>> + + + >) + ( + + >> + 25> + ) + (> + ) + ( + )>) + (<==? .RARG ,M-END> + + ) + ( > + + + ) + ( + ) + ( + ) + ( + ) + (T + )> + )>)>> + + + + + + )>> + +> + + + + + > + )>) + ( > + + )>> + + + +)) + > + > + > + + + + ) + ( + + + ) + (<==? .F ,WAYBREAD> + )> + + + )>)> + ) + (T )>>)> + + )> + + + + >> + +> + +> + <==? ,HERE ,ON-LAKE> > +