3958 lines
111 KiB
Plaintext
3958 lines
111 KiB
Plaintext
|
|
|
|
.FUNCT SWORD-FCN
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
EQUAL? WINNER,ADVENTURER \FALSE
|
|
CALL QUEUE,I-SWORD,-1
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT I-SWORD,DEM,NG=0,G,P,TX,L
|
|
CALL INT,I-SWORD >DEM
|
|
SET 'G,SWORD-GLOW
|
|
IN? SWORD,ADVENTURER \?ELS5
|
|
CALL INFESTED?,HERE
|
|
ZERO? STACK /?ELS8
|
|
SET 'NG,2
|
|
JUMP ?CND6
|
|
?ELS8: SET 'P,0
|
|
?PRG11: NEXTP HERE,P >P
|
|
ZERO? P \?ELS15
|
|
JUMP ?CND6
|
|
?ELS15: LESS? P,LOW-DIRECTION /?PRG11
|
|
GETPT HERE,P >TX
|
|
PTSIZE TX >L
|
|
EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG11
|
|
GETB TX,0
|
|
CALL INFESTED?,STACK
|
|
ZERO? STACK /?PRG11
|
|
SET 'NG,1
|
|
?CND6: EQUAL? NG,G /FALSE
|
|
EQUAL? NG,2 \?ELS28
|
|
PRINTI "Your sword has begun to glow very brightly."
|
|
CRLF
|
|
JUMP ?CND24
|
|
?ELS28: EQUAL? NG,1 \?ELS32
|
|
PRINTI "Your sword is glowing with a faint blue glow."
|
|
CRLF
|
|
JUMP ?CND24
|
|
?ELS32: ZERO? NG \?CND24
|
|
PRINTI "Your sword is no longer glowing."
|
|
CRLF
|
|
?CND24: SET 'SWORD-GLOW,NG
|
|
RTRUE
|
|
?ELS5: PUT DEM,C-ENABLED?,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT INFESTED?,R,F
|
|
FIRST? R >F /?KLU12
|
|
?KLU12:
|
|
?PRG1: ZERO? F /FALSE
|
|
FSET? F,ACTORBIT \?ELS7
|
|
FSET? F,INVISIBLE /?ELS7
|
|
EQUAL? F,ROBOT /?ELS7
|
|
RETURN F
|
|
?ELS7: NEXT? F >F /?PRG1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT CAROUSEL-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTI "You are in a large circular room whose high ceiling is lost in gloom. Eight identical passages leave the room."
|
|
CRLF
|
|
ZERO? CAROUSEL-FLIP-FLAG \TRUE
|
|
PRINTR "A loud whirring sound comes from all around, and you feel sort of disoriented in here."
|
|
?ELS5: ZERO? CAROUSEL-FLIP-FLAG \FALSE
|
|
EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?WALK \FALSE
|
|
EQUAL? PRSO,P?UP,P?DOWN /FALSE
|
|
EQUAL? PRSO,P?OUT \?ELS22
|
|
PRINTI "Feeling dizzy, you pick a direction at random."
|
|
CRLF
|
|
CRLF
|
|
SET 'PRSO,P?EAST
|
|
JUMP ?CND20
|
|
?ELS22: PRINTI "You're not sure which direction is which. This room is very disorienting."
|
|
CRLF
|
|
CRLF
|
|
?CND20: EQUAL? PRSO,P?WEST /?THN32
|
|
RANDOM 100
|
|
GRTR? 80,STACK \?CND29
|
|
?THN32: RANDOM 7
|
|
SUB STACK,1
|
|
GET EIGHT-DIRECTIONS,STACK >PRSO
|
|
?CND29: CALL V-WALK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT VIOLIN-FCN
|
|
EQUAL? PRSA,V?PLAY \FALSE
|
|
EQUAL? PRSO,VIOLIN \FALSE
|
|
PRINTR "An amazingly offensive noise issues from the violin."
|
|
|
|
|
|
.FUNCT OPEN-CLOSE,OBJ,STROPN,STRCLS
|
|
EQUAL? PRSA,V?OPEN \?ELS5
|
|
FSET? OBJ,OPENBIT \?ELS8
|
|
CALL RANDOM-ELEMENT,DUMMY
|
|
PRINT STACK
|
|
JUMP ?CND6
|
|
?ELS8: PRINT STROPN
|
|
FSET OBJ,OPENBIT
|
|
?CND6: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?CLOSE \FALSE
|
|
FSET? OBJ,OPENBIT \?ELS19
|
|
PRINT STRCLS
|
|
FCLEAR OBJ,OPENBIT
|
|
JUMP ?CND17
|
|
?ELS19: CALL RANDOM-ELEMENT,DUMMY
|
|
PRINT STACK
|
|
CRLF
|
|
?CND17: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BALLOON-FCN,RARG=0,M,R,RC
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
ZERO? BINF-FLAG /?ELS8
|
|
PRINTI "The cloth bag is inflated and "
|
|
FSET? RECEPTACLE,OPENBIT \?ELS14
|
|
PRINTI "there is a "
|
|
PRINTD BINF-FLAG
|
|
PRINTI " burning in the receptacle."
|
|
JUMP ?CND6
|
|
?ELS14: PRINTI "some smoke is leaking out of the closed receptacle."
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "The cloth bag is draped over the side of the basket. Directly in the middle of the basket is a metal receptacle which is "
|
|
FSET? RECEPTACLE,OPENBIT \?ELS27
|
|
PRINTI "open"
|
|
FIRST? RECEPTACLE >RC /?KLU148
|
|
?KLU148: ZERO? RC /?CND25
|
|
PRINTI ". A "
|
|
PRINTD RC
|
|
PRINTI " is "
|
|
EQUAL? BINF-FLAG,RC \?ELS40
|
|
PUSH STR?204
|
|
JUMP ?CND36
|
|
?ELS40: PUSH STR?205
|
|
?CND36: PRINT STACK
|
|
PRINTI " inside"
|
|
JUMP ?CND25
|
|
?ELS27: PRINTI "closed"
|
|
?CND25: PRINTI "."
|
|
?CND6: ZERO? BTIE-FLAG /?ELS51
|
|
PRINTR " The balloon is tied to a hook by the braided wire."
|
|
?ELS51: PRINTR " A braided wire is dangling over the side of the basket."
|
|
?ELS5: EQUAL? RARG,M-OBJDESC \?ELS60
|
|
PRINTI "There is a large and extremely heavy wicker basket here. An enormous cloth bag "
|
|
ZERO? BINF-FLAG /?ELS65
|
|
PRINTI "attached to the basket is inflated. A metal receptacle is fastened to the center of the basket. "
|
|
FSET? RECEPTACLE,OPENBIT \?ELS71
|
|
PRINTI "In it is a burning "
|
|
PRINTD BINF-FLAG
|
|
JUMP ?CND63
|
|
?ELS71: PRINTI "Some smoke leaks out around its closed lid"
|
|
JUMP ?CND63
|
|
?ELS65: PRINTI "is draped over the side and is firmly attached to the basket. A metal receptacle is fastened to the center of the basket"
|
|
?CND63: ZERO? BTIE-FLAG /?ELS86
|
|
PRINTR ". A piece of wire tied to a hook holds the balloon in place."
|
|
?ELS86: PRINTR ". Dangling from the basket is a piece of braided wire."
|
|
?ELS60: EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?WALK \?ELS100
|
|
GETPT HERE,PRSO >M
|
|
ZERO? M /?ELS105
|
|
ZERO? BTIE-FLAG /?ELS110
|
|
PRINTR "You are tied to the ledge."
|
|
?ELS110: PTSIZE M
|
|
EQUAL? STACK,1 \?ELS117
|
|
GETB M,0 >R
|
|
FSET? R,RMUNGBIT /?ELS117
|
|
SET 'BLOC,R
|
|
?ELS117: CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS105: PRINTR "You can't control the balloon this way."
|
|
?ELS100: EQUAL? PRSA,V?OPEN \?ELS123
|
|
ZERO? BINF-FLAG /?ELS123
|
|
EQUAL? PRSO,RECEPTACLE \?ELS123
|
|
FIRST? RECEPTACLE \?ELS123
|
|
PRINTI "Opening it reveals a burning "
|
|
PRINTD BINF-FLAG
|
|
PRINTI "."
|
|
CRLF
|
|
FSET RECEPTACLE,OPENBIT
|
|
RTRUE
|
|
?ELS123: EQUAL? PRSA,V?TAKE \?ELS129
|
|
EQUAL? BINF-FLAG,PRSO \?ELS129
|
|
PRINTI "You don't really want to hold a burning "
|
|
PRINTD PRSO
|
|
PRINTR "."
|
|
?ELS129: EQUAL? PRSA,V?PUT \?ELS135
|
|
EQUAL? PRSI,RECEPTACLE \?ELS135
|
|
FIRST? RECEPTACLE \?ELS135
|
|
PRINTR "The receptacle is already occupied."
|
|
?ELS135: EQUAL? PRSA,V?PUT \?ELS141
|
|
EQUAL? PRSI,RECEPTACLE \?ELS141
|
|
FSET PRSO,NDESCBIT
|
|
RFALSE
|
|
?ELS141: EQUAL? PRSA,V?INFLATE \FALSE
|
|
PRINTR "It takes more than words to inflate a balloon."
|
|
|
|
|
|
.FUNCT I-BALLOON
|
|
FSET? RECEPTACLE,OPENBIT \?ELS5
|
|
ZERO? BINF-FLAG /?ELS5
|
|
CALL RISE-AND-SHINE
|
|
RSTACK
|
|
?ELS5: EQUAL? HERE,LEDGE-1,LEDGE-2 \?ELS9
|
|
CALL RISE-AND-SHINE
|
|
RSTACK
|
|
?ELS9: CALL DECLINE-AND-FALL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BALLOON-BURN
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " burns inside the receptacle."
|
|
CRLF
|
|
GETP PRSO,P?SIZE
|
|
MUL STACK,20
|
|
CALL QUEUE,I-BURNUP,STACK
|
|
PUT STACK,0,1
|
|
FSET PRSO,FLAMEBIT
|
|
FSET PRSO,ONBIT
|
|
FCLEAR PRSO,TAKEBIT
|
|
FCLEAR PRSO,READBIT
|
|
ZERO? BINF-FLAG \TRUE
|
|
PRINTI "The cloth bag inflates as it fills with hot air."
|
|
CRLF
|
|
ZERO? BLAB-FLAG \?CND13
|
|
PRINTI "A small label drops from the bag into the basket."
|
|
CRLF
|
|
MOVE BALLOON-LABEL,BALLOON
|
|
?CND13: SET 'BLAB-FLAG,TRUE-VALUE
|
|
SET 'BINF-FLAG,PRSO
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PUT-BALLOON,THERE,STR
|
|
EQUAL? HERE,LEDGE-1,LEDGE-2,VOLCANO-BOTTOM \?CND1
|
|
PRINTI "You watch as the balloon slowly "
|
|
PRINT STR
|
|
CRLF
|
|
?CND1: MOVE BALLOON,THERE
|
|
SET 'BLOC,THERE
|
|
RETURN BLOC
|
|
|
|
|
|
.FUNCT RISE-AND-SHINE,IN,R
|
|
IN? WINNER,BALLOON /?PRD1
|
|
PUSH 0
|
|
JUMP ?PRD2
|
|
?PRD1: PUSH 1
|
|
?PRD2: SET 'IN,STACK
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
EQUAL? BLOC,VAIR-4 \?ELS7
|
|
CALL INT,I-BURNUP
|
|
PUT STACK,0,0
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
REMOVE BALLOON
|
|
ZERO? IN /?ELS10
|
|
CALL JIGS-UP,STR?206
|
|
JUMP ?CND8
|
|
?ELS10: EQUAL? HERE,LEDGE-1,LEDGE-2,VOLCANO-BOTTOM \?CND8
|
|
PRINTI "You watch the balloon drift out over the rim and away on the wind."
|
|
CRLF
|
|
?CND8: SET 'BLOC,VOLCANO-BOTTOM
|
|
RETURN BLOC
|
|
?ELS7: CALL LKP,BLOC,BALLOON-UPS >R
|
|
ZERO? R /?ELS17
|
|
ZERO? IN /?ELS22
|
|
PRINTI "The balloon ascends."
|
|
CRLF
|
|
CRLF
|
|
SET 'BLOC,R
|
|
CALL GOTO,R
|
|
RSTACK
|
|
?ELS22: CALL PUT-BALLOON,R,STR?207
|
|
RSTACK
|
|
?ELS17: CALL LKP,BLOC,BALLOON-FLOATS >R
|
|
ZERO? R /?ELS29
|
|
ZERO? IN /?ELS34
|
|
PRINTI "The balloon leaves the ledge."
|
|
CRLF
|
|
CRLF
|
|
SET 'BLOC,R
|
|
CALL GOTO,R
|
|
RSTACK
|
|
?ELS34: CALL QUEUE,I-GNOME,10
|
|
PUT STACK,0,1
|
|
CALL PUT-BALLOON,R,STR?208
|
|
FSET RECEPTACLE,OPENBIT
|
|
RTRUE
|
|
?ELS29: ZERO? IN /?ELS41
|
|
SET 'BLOC,VAIR-1
|
|
PRINTI "The balloon rises slowly from the ground."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,VAIR-1
|
|
RSTACK
|
|
?ELS41: CALL PUT-BALLOON,VAIR-1,STR?209
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DECLINE-AND-FALL,IN,R
|
|
IN? WINNER,BALLOON /?PRD1
|
|
PUSH 0
|
|
JUMP ?PRD2
|
|
?PRD1: PUSH 1
|
|
?PRD2: SET 'IN,STACK
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
EQUAL? BLOC,VAIR-1 \?ELS7
|
|
ZERO? IN /?ELS12
|
|
SET 'BLOC,VOLCANO-BOTTOM
|
|
ZERO? BINF-FLAG /?ELS18
|
|
PRINTI "The balloon has landed."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,VOLCANO-BOTTOM
|
|
RSTACK
|
|
?ELS18: REMOVE BALLOON
|
|
MOVE DEAD-BALLOON,BLOC
|
|
MOVE WINNER,HERE
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
PRINTI "You have landed, but the balloon did not survive."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,VOLCANO-BOTTOM
|
|
RSTACK
|
|
?ELS12: CALL PUT-BALLOON,VOLCANO-BOTTOM,STR?210
|
|
RSTACK
|
|
?ELS7: CALL LKP,BLOC,BALLOON-DOWNS >R
|
|
ZERO? R /FALSE
|
|
ZERO? IN /?ELS34
|
|
PRINTI "The balloon descends."
|
|
CRLF
|
|
CRLF
|
|
SET 'BLOC,R
|
|
CALL GOTO,R
|
|
RSTACK
|
|
?ELS34: CALL PUT-BALLOON,R,STR?211
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BCONTENTS
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is an integral part of the basket and cannot be removed."
|
|
EQUAL? PRSO,BRAIDED-WIRE \?CND8
|
|
PRINTI " The wire might possibly be tied, though."
|
|
?CND8: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSO,CLOTH-BAG \?ELS14
|
|
EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE \?ELS14
|
|
EQUAL? PRSA,V?OPEN \?ELS21
|
|
PRINTR "The bag is enormous. The concept of opening it here is ludicrous."
|
|
?ELS21: PRINTR "It doesn't appear that there's anything inside."
|
|
?ELS14: EQUAL? PRSA,V?EXAMINE \?ELS29
|
|
EQUAL? PRSO,RECEPTACLE \?ELS29
|
|
PRINTI "The receptacle is "
|
|
FSET? PRSO,OPENBIT \?ELS38
|
|
PRINTR "open."
|
|
?ELS38: PRINTR "closed."
|
|
?ELS29: EQUAL? PRSA,V?EXAMINE,V?FIND \FALSE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is part of the basket. It may be manipulated within the basket but cannot be removed."
|
|
|
|
|
|
.FUNCT WIRE-FCN
|
|
EQUAL? PRSA,V?EXAMINE,V?FIND,V?TAKE \?ELS5
|
|
CALL BCONTENTS
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?TIE \?ELS7
|
|
EQUAL? PRSO,BRAIDED-WIRE \FALSE
|
|
EQUAL? PRSI,HOOK-1,HOOK-2 \FALSE
|
|
SET 'BTIE-FLAG,PRSI
|
|
FSET PRSI,NDESCBIT
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
PRINTR "The balloon is fastened to the hook."
|
|
?ELS7: EQUAL? PRSA,V?UNTIE \FALSE
|
|
EQUAL? PRSO,BRAIDED-WIRE \FALSE
|
|
ZERO? BTIE-FLAG /?ELS25
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
FCLEAR BTIE-FLAG,NDESCBIT
|
|
SET 'BTIE-FLAG,FALSE-VALUE
|
|
PRINTR "The wire falls off of the hook."
|
|
?ELS25: PRINTR "The wire is not tied to anything."
|
|
|
|
|
|
.FUNCT I-BURNUP,OBJ
|
|
FIRST? RECEPTACLE >OBJ /?KLU6
|
|
?KLU6: EQUAL? HERE,BLOC \?CND1
|
|
PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTI " has now burned out, and the cloth bag starts to deflate."
|
|
CRLF
|
|
?CND1: REMOVE OBJ
|
|
SET 'BINF-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAFE-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are in a dusty old room which is featureless, except for an exit on the north side."
|
|
CRLF
|
|
ZERO? SAFE-FLAG \?ELS12
|
|
PRINTR "Imbedded in the far wall is a rusty box. It appears to be somewhat damaged, since an oblong hole has been chipped out of the front of it."
|
|
?ELS12: PRINTR "On the far wall is a rusty box, whose door has been blown off."
|
|
|
|
|
|
.FUNCT SAFE-FCN
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
EQUAL? PRSO,SAFE \?ELS5
|
|
PRINTR "The box is imbedded in the wall."
|
|
?ELS5: EQUAL? PRSA,V?OPEN \?ELS11
|
|
ZERO? SAFE-FLAG /?ELS16
|
|
PRINTR "The box has no door!"
|
|
?ELS16: PRINTR "The box is rusted and will not open."
|
|
?ELS11: EQUAL? PRSA,V?CLOSE \FALSE
|
|
ZERO? SAFE-FLAG /?ELS30
|
|
PRINTR "The box has no door!"
|
|
?ELS30: PRINTR "The box isn't open!"
|
|
|
|
|
|
.FUNCT BRICK-FCN
|
|
EQUAL? PRSA,V?BURN \FALSE
|
|
REMOVE BRICK
|
|
CALL JIGS-UP,OTHER-PROPERTIES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FUSE-FCN
|
|
EQUAL? PRSA,V?BURN /?THN6
|
|
EQUAL? PRSA,V?LAMP-ON \FALSE
|
|
IN? MATCH,WINNER \FALSE
|
|
FSET? MATCH,ONBIT \FALSE
|
|
?THN6: PRINTI "The string starts to burn."
|
|
CRLF
|
|
CALL QUEUE,I-FUSE,2
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-FUSE,BRICK-ROOM,F
|
|
LOC BRICK >BRICK-ROOM
|
|
IN? FUSE,BRICK \?ELS3
|
|
?PRG4: ZERO? BRICK-ROOM /FALSE
|
|
IN? BRICK-ROOM,ROOMS \?ELS10
|
|
JUMP ?REP5
|
|
?ELS10: LOC BRICK-ROOM >BRICK-ROOM
|
|
JUMP ?PRG4
|
|
?REP5: MOVE EXPLOSION,BRICK-ROOM
|
|
FCLEAR BRICK-ROOM,TOUCHBIT
|
|
EQUAL? BRICK-ROOM,HERE \?ELS15
|
|
CALL MUNG-ROOM,BRICK-ROOM,STR?213
|
|
CALL JIGS-UP,OTHER-PROPERTIES
|
|
JUMP ?CND13
|
|
?ELS15: EQUAL? BRICK-ROOM,SAFE-ROOM \?ELS17
|
|
CALL QUEUE,I-SAFE,5
|
|
PUT STACK,0,1
|
|
SET 'MUNGED-ROOM,SAFE-ROOM
|
|
PRINTI "There is an explosion nearby."
|
|
CRLF
|
|
IN? BRICK,SLOT \?CND13
|
|
FSET SLOT,INVISIBLE
|
|
FSET SAFE,OPENBIT
|
|
FCLEAR SAFE-ROOM,TOUCHBIT
|
|
SET 'SAFE-FLAG,TRUE-VALUE
|
|
JUMP ?CND13
|
|
?ELS17: PRINTI "There is an explosion nearby."
|
|
CRLF
|
|
CALL QUEUE,I-SAFE,5
|
|
PUT STACK,0,1
|
|
SET 'MUNGED-ROOM,BRICK-ROOM
|
|
FIRST? BRICK-ROOM >F \?CND13
|
|
?PRG30: FSET? F,TAKEBIT \?CND32
|
|
FSET F,INVISIBLE
|
|
?CND32: NEXT? F >F /?PRG30
|
|
?CND13: REMOVE BRICK
|
|
JUMP ?CND1
|
|
?ELS3: LOC FUSE
|
|
EQUAL? STACK,WINNER,HERE \?CND1
|
|
PRINTI "The string rapidly burns into nothingness."
|
|
CRLF
|
|
?CND1: REMOVE FUSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-SAFE
|
|
EQUAL? HERE,MUNGED-ROOM \?ELS3
|
|
CALL JIGS-UP,STR?214
|
|
JUMP ?CND1
|
|
?ELS3: ZERO? DEAD \?CND1
|
|
PRINTI "You may recall that recent explosion. Probably as a result of it, you hear an ominous rumbling, as if a nearby room had collapsed."
|
|
CRLF
|
|
EQUAL? MUNGED-ROOM,SAFE-ROOM \?CND1
|
|
CALL QUEUE,I-LEDGE,8
|
|
PUT STACK,0,1
|
|
?CND1: CALL MUNG-ROOM,MUNGED-ROOM,STR?213
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-LEDGE,RM=LEDGE-2
|
|
EQUAL? HERE,LEDGE-2 \?ELS3
|
|
IN? WINNER,BALLOON \?ELS6
|
|
ZERO? BTIE-FLAG /?ELS9
|
|
SET 'BLOC,VOLCANO-BOTTOM
|
|
REMOVE BALLOON
|
|
MOVE DEAD-BALLOON,VOLCANO-BOTTOM
|
|
SET 'BTIE-FLAG,FALSE-VALUE
|
|
SET 'BINF-FLAG,FALSE-VALUE
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
CALL INT,I-BURNUP
|
|
PUT STACK,0,0
|
|
CALL JIGS-UP,STR?215
|
|
JUMP ?CND1
|
|
?ELS9: PRINTI "The ledge collapses, leaving you with no place to land."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS6: CALL JIGS-UP,STR?216
|
|
JUMP ?CND1
|
|
?ELS3: ZERO? DEAD \?CND1
|
|
PRINTI "The ledge collapses. (That was a narrow escape!)"
|
|
CRLF
|
|
?CND1: CALL MUNG-ROOM,RM,STR?217
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LEDGE-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are on a wide ledge high in the volcano. The rim of the volcano is about 200 feet above and there is a precipitous drop to the bottom."
|
|
FSET? SAFE-ROOM,RMUNGBIT \?ELS12
|
|
PRINTR " The way to the south is blocked by rubble."
|
|
?ELS12: PRINTR " There is a small door to the south."
|
|
|
|
|
|
.FUNCT I-GNOME
|
|
EQUAL? HERE,LEDGE-1,LEDGE-2 \?ELS5
|
|
PRINTI "A volcano gnome seems to walk straight out of the wall and "
|
|
IN? WAND,WINNER \?ELS12
|
|
PRINTR "noticing the wand, straight back in."
|
|
?ELS12: PRINTI "says ""I have a busy appointment schedule and little time to waste on trespassers, but for a small fee I'll show you the way out."" You notice the gnome nervously glancing at his watch."
|
|
CRLF
|
|
MOVE GNOME,HERE
|
|
RTRUE
|
|
?ELS5: CALL QUEUE,I-GNOME,1
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GNOME-FCN
|
|
EQUAL? PRSA,V?TELL \?ELS5
|
|
SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
ZERO? GNOME-FLAG \?CND6
|
|
CALL QUEUE,I-NERVOUS,5
|
|
PUT STACK,0,1
|
|
?CND6: SET 'GNOME-FLAG,TRUE-VALUE
|
|
PRINTR "The gnome appears increasingly nervous."
|
|
?ELS5: EQUAL? PRSA,V?THROW,V?GIVE \?ELS12
|
|
EQUAL? PRSI,GNOME \?ELS12
|
|
GETPT PRSO,P?VALUE
|
|
ZERO? STACK /?ELS19
|
|
PRINTI """Thank you very much for the "
|
|
PRINTD PRSO
|
|
PRINTI ". I don't believe I've ever seen one as beautiful. Follow me,"" he says, and a door appears on the west end of the ledge. Through the door, you can see a narrow chimney sloping steeply downward. The gnome moves quickly, and disappears from sight."
|
|
CRLF
|
|
REMOVE PRSO
|
|
REMOVE GNOME
|
|
SET 'GNOME-DOOR-FLAG,TRUE-VALUE
|
|
RETURN GNOME-DOOR-FLAG
|
|
?ELS19: CALL BOMB?,PRSO
|
|
ZERO? STACK /?ELS23
|
|
MOVE BRICK,HERE
|
|
REMOVE GNOME
|
|
CALL INT,I-GNOME
|
|
PUT STACK,0,0
|
|
CALL INT,I-NERVOUS
|
|
PUT STACK,0,0
|
|
PRINTR """That certainly wasn't what I had in mind,"" he says, and disappears."
|
|
?ELS23: CALL REMOVE-CAREFULLY,PRSO
|
|
PRINTI """That wasn't quite what I had in mind,"" he says, crunching the "
|
|
PRINTD PRSO
|
|
PRINTR " in his rock-hard hands."
|
|
?ELS12: PRINTI "The gnome appears increasingly nervous."
|
|
CRLF
|
|
ZERO? GNOME-FLAG \?CND34
|
|
CALL QUEUE,I-NERVOUS,5
|
|
PUT STACK,0,1
|
|
?CND34: SET 'GNOME-FLAG,TRUE-VALUE
|
|
RETURN GNOME-FLAG
|
|
|
|
|
|
.FUNCT I-NERVOUS
|
|
IN? GNOME,HERE \?CND1
|
|
PRINTI "The gnome glances at his watch. ""Oops. I'm late for an appointment!"" He disappears, leaving you alone on the ledge."
|
|
CRLF
|
|
?CND1: REMOVE GNOME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PURPLE-BOOK-FCN
|
|
EQUAL? PRSA,V?READ \?ELS5
|
|
IN? STAMP,PURPLE-BOOK \?ELS5
|
|
FSET? PURPLE-BOOK,OPENBIT /?ELS5
|
|
GETP PURPLE-BOOK,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
CALL PERFORM,V?OPEN,PURPLE-BOOK
|
|
RTRUE
|
|
?ELS5: CALL RANDOM-BOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RANDOM-BOOK
|
|
EQUAL? PRSA,V?PUT,V?MOVE,V?TAKE \FALSE
|
|
FSET WHITE-BOOK,TOUCHBIT
|
|
FSET PURPLE-BOOK,TOUCHBIT
|
|
FSET GREEN-BOOK,TOUCHBIT
|
|
FSET BLUE-BOOK,TOUCHBIT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT HEAD-FCN
|
|
EQUAL? PRSA,V?HELLO \?ELS5
|
|
PRINTR "The Flatheads are dead; therefore they do not respond."
|
|
?ELS5: EQUAL? PRSA,V?RUB,V?ATTACK,V?KICK /?THN10
|
|
EQUAL? PRSA,V?BURN,V?TAKE,V?OPEN \FALSE
|
|
?THN10: CALL JIGS-UP,STR?218
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CRYPT-ANTEROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "The anteroom is large and empty. Marble bas reliefs depict the stirring times and afterlife of the Flatheads (the latter a bit optimistically). The exit is to the west. A huge marble door stands to the south. "
|
|
PRINTI "The door is "
|
|
FSET? CRYPT-DOOR,OPENBIT \?ELS12
|
|
PRINTI "open."
|
|
JUMP ?CND10
|
|
?ELS12: PRINTI "closed."
|
|
?CND10: PRINTR " Above the door is the cryptic inscription: ""Feel Free""."
|
|
|
|
|
|
.FUNCT CRYPT-ROOM-FCN,RARG,CLIT?
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
FCLEAR HERE,ONBIT
|
|
CALL LIT?,HERE
|
|
ZERO? STACK /?ELS8
|
|
PRINTI "The room contains the earthly remains of the mighty Flatheads, twelve somewhat flat heads mounted securely on poles. While the room might be expected to contain funerary urns or other evidence of the ritual practices of the ancient Zorkers, it is empty of all such objects. There is writing carved on the crypt. The only apparent exit is to the north through the door to the anteroom. The door is "
|
|
FSET? CRYPT-DOOR,OPENBIT \?ELS13
|
|
PRINTI "open."
|
|
JUMP ?CND11
|
|
?ELS13: PRINTI "closed."
|
|
?CND11: CRLF
|
|
FSET? DIM-DOOR,INVISIBLE /?CND6
|
|
PRINTI "Looking closely at the south wall, you can see the dim outline of a secret door labelled with the letter ""F""."
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS8: CALL DIM-DOOR-APPEARS
|
|
?CND6: FSET HERE,ONBIT
|
|
RTRUE
|
|
?ELS5: EQUAL? RARG,M-END \FALSE
|
|
SET 'CLIT?,CRYPT-LIT?
|
|
FCLEAR CRYPT-ROOM,ONBIT
|
|
CALL LIT?,CRYPT-ROOM >CRYPT-LIT?
|
|
ZERO? CLIT? /?CND29
|
|
ZERO? CRYPT-LIT? \?CND29
|
|
CALL DIM-DOOR-APPEARS
|
|
?CND29: FSET CRYPT-ROOM,ONBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DIM-DOOR-APPEARS
|
|
PRINTI "It is dark, but on the south wall is a faint outline of a rectangle, as though light were shining around a doorway. You can also make out a faintly glowing letter in the center of this area. It might be an ""F""."
|
|
CRLF
|
|
FCLEAR DIM-DOOR,INVISIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CRYPT-OBJECT
|
|
EQUAL? PRSA,V?OPEN \?ELS5
|
|
PRINTR "The crypt is sealed for all time."
|
|
?ELS5: EQUAL? PRSA,V?RUB \FALSE
|
|
PRINTR "The marble is cool."
|
|
|
|
|
|
.FUNCT CRYPT-DOOR-FCN
|
|
EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
CALL OPEN-CLOSE,PRSO,STR?219,STR?220
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TOMB-PSEUDO
|
|
EQUAL? PRSA,V?THROUGH \FALSE
|
|
CALL DO-WALK,P?EAST
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DIM-DOOR-FCN
|
|
EQUAL? PRSA,V?KNOCK \?ELS5
|
|
PRINTR "A hollow echo responds."
|
|
?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
EQUAL? PRSA,V?OPEN \?ELS12
|
|
SET 'DIM-DOOR-FLAG,TRUE-VALUE
|
|
JUMP ?CND10
|
|
?ELS12: SET 'DIM-DOOR-FLAG,FALSE-VALUE
|
|
?CND10: CALL OPEN-CLOSE,PRSO,STR?221,STR?222
|
|
RSTACK
|
|
|
|
|
|
.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?PUT,V?SPRAY \FALSE
|
|
EQUAL? PRSO,REPELLENT \FALSE
|
|
ZERO? SPRAY-USED? /?ELS26
|
|
PRINTR "The repellent is all gone."
|
|
?ELS26: ZERO? PRSI \?ELS31
|
|
SET 'SPRAY-USED?,TRUE-VALUE
|
|
PRINTR "The spray stinks amazingly for a few moments, then drifts away."
|
|
?ELS31: EQUAL? PRSI,ME \?CND36
|
|
CALL QUEUE,I-SPRAY,8
|
|
PUT STACK,0,1
|
|
SET 'SPRAYED?,TRUE-VALUE
|
|
?CND36: 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 ZORK3-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "Beyond the door is a roughly hewn staircase leading down into darkness. The landing on which you stand is covered with carefully drawn magical runes like those sketched upon the workbench of the Wizard of Frobozz. These have been overlaid with sweeping green lines of enormous power, which undulate back and forth across the landing. "
|
|
IN? WAND,WINNER \?ELS12
|
|
PRINTI "The wand begins to vibrate in harmony with the motion of the lines. You feel yourself compelled downward, and you yield, stepping onto the staircase. As you pass the green lines, they flare and disappear with a burst of light, and you tumble down the staircase!
|
|
|
|
At the bottom, a vast red-lit hall stretches off into the distance. Sinister statues guard the entrance to a dimly visible room far ahead. With courage and cunning you have conquered the Wizard of Frobozz and become the master of his domain, but the final challenge awaits!
|
|
|
|
(The ultimate adventure concludes in ""Zork III: The Dungeon Master"".)
|
|
|
|
"
|
|
CRLF
|
|
SET 'WON-FLAG,TRUE-VALUE
|
|
CALL FINISH
|
|
RSTACK
|
|
?ELS12: CALL JIGS-UP,STR?223
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-BUCKET
|
|
IN? WATER,BUCKET \FALSE
|
|
SET 'EVAPORATED,TRUE-VALUE
|
|
REMOVE WATER
|
|
RFALSE
|
|
|
|
|
|
.FUNCT WATER-FCN,AV,W,PI?
|
|
EQUAL? PRSA,V?SGIVE /FALSE
|
|
EQUAL? PRSA,V?THROUGH \?ELS5
|
|
CALL PERFORM,V?SWIM,PRSO
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?FILL \?ELS7
|
|
SET 'W,PRSI
|
|
SET 'PRSA,V?PUT
|
|
SET 'PRSI,PRSO
|
|
SET 'PRSO,W
|
|
SET 'PI?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?ELS7: EQUAL? PRSO,GLOBAL-WATER,WATER \?ELS9
|
|
SET 'W,PRSO
|
|
SET 'PI?,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?ELS9: ZERO? PRSI /?CND1
|
|
SET 'W,PRSI
|
|
SET 'PI?,TRUE-VALUE
|
|
?CND1: EQUAL? W,GLOBAL-WATER \?CND13
|
|
SET 'W,WATER
|
|
EQUAL? PRSA,V?PUT,V?TAKE \?CND13
|
|
REMOVE W
|
|
?CND13: ZERO? PI? /?ELS21
|
|
SET 'PRSI,W
|
|
JUMP ?CND19
|
|
?ELS21: SET 'PRSO,W
|
|
?CND19: LOC WINNER >AV
|
|
FSET? AV,VEHBIT /?CND25
|
|
SET 'AV,FALSE-VALUE
|
|
?CND25: EQUAL? PRSA,V?PUT,V?TAKE \?ELS32
|
|
ZERO? PI? \?ELS32
|
|
ZERO? AV /?ELS39
|
|
EQUAL? AV,PRSI \?ELS39
|
|
CALL PUDDLE,AV
|
|
RSTACK
|
|
?ELS39: ZERO? AV /?ELS43
|
|
ZERO? PRSI \?ELS43
|
|
IN? W,AV /?ELS43
|
|
CALL PUDDLE,AV
|
|
RSTACK
|
|
?ELS43: ZERO? PRSI /?ELS47
|
|
EQUAL? PRSI,TEAPOT /?ELS47
|
|
PRINTI "The water leaks out of the "
|
|
PRINTD PRSI
|
|
PRINTI " and evaporates immediately."
|
|
CRLF
|
|
REMOVE W
|
|
RTRUE
|
|
?ELS47: IN? TEAPOT,WINNER \?ELS53
|
|
FIRST? TEAPOT /?ELS58
|
|
EQUAL? HERE,POOL-ROOM \?ELS61
|
|
MOVE SALTY-WATER,TEAPOT
|
|
JUMP ?CND59
|
|
?ELS61: MOVE WATER,TEAPOT
|
|
?CND59: PRINTR "The teapot is now full of water."
|
|
?ELS58: PRINTR "The teapot isn't currently empty."
|
|
?ELS53: IN? PRSO,TEAPOT \?ELS71
|
|
EQUAL? PRSA,V?TAKE \?ELS71
|
|
ZERO? PRSI \?ELS71
|
|
SET 'PRSO,TEAPOT
|
|
CALL ITAKE
|
|
SET 'PRSO,W
|
|
RETURN PRSO
|
|
?ELS71: PRINTR "The water slips through your fingers."
|
|
?ELS32: ZERO? PI? /?ELS79
|
|
PRINTR "Nice try."
|
|
?ELS79: EQUAL? PRSA,V?GIVE,V?DROP \?ELS84
|
|
EQUAL? PRSO,WATER \?CND85
|
|
CALL HELD?,WATER
|
|
ZERO? STACK \?CND85
|
|
PRINTR "You don't have any water."
|
|
?CND85: REMOVE WATER
|
|
ZERO? AV /?ELS96
|
|
CALL PUDDLE,AV
|
|
RSTACK
|
|
?ELS96: PRINTI "The water spills to the floor and evaporates."
|
|
CRLF
|
|
REMOVE WATER
|
|
RTRUE
|
|
?ELS84: EQUAL? PRSA,V?THROW \FALSE
|
|
PRINTI "The water splashes on the walls and evaporates."
|
|
CRLF
|
|
REMOVE WATER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PUDDLE,AV
|
|
PRINTI "There is now a puddle in the bottom of the "
|
|
PRINTD AV
|
|
PRINTI "."
|
|
CRLF
|
|
MOVE PRSO,AV
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BUCKET-FCN,RARG=M-BEG
|
|
EQUAL? RARG,M-BEG \?ELS5
|
|
EQUAL? PRSA,V?BURN \?ELS10
|
|
EQUAL? PRSO,BUCKET \?ELS10
|
|
PRINTR "The bucket is fireproof, and won't burn."
|
|
?ELS10: EQUAL? PRSA,V?PUT,V?DROP \?ELS16
|
|
EQUAL? PRSO,WATER \?ELS16
|
|
EQUAL? PRSI,BUCKET \?ELS16
|
|
IN? BUCKET,WELL-BOTTOM \?ELS16
|
|
IN? WINNER,BUCKET /?ELS16
|
|
PRINTI "The bucket swiftly rises up, and is gone."
|
|
CRLF
|
|
MOVE BUCKET,WELL-TOP
|
|
MOVE WATER,BUCKET
|
|
SET 'BUCKET-TOP-FLAG,TRUE-VALUE
|
|
CALL QUEUE,I-BUCKET,100
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?ELS16: EQUAL? PRSA,V?KICK \FALSE
|
|
CALL JIGS-UP,STR?224
|
|
RSTACK
|
|
?ELS5: EQUAL? RARG,M-END \?ELS24
|
|
IN? WATER,BUCKET \?ELS29
|
|
ZERO? BUCKET-TOP-FLAG \?ELS29
|
|
PRINTI "The bucket rises and comes to a stop."
|
|
CRLF
|
|
CRLF
|
|
SET 'BUCKET-TOP-FLAG,TRUE-VALUE
|
|
SET 'EVAPORATED,FALSE-VALUE
|
|
CALL PASS-THE-BUCKET,WELL-TOP
|
|
CALL QUEUE,I-BUCKET,100
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?ELS29: ZERO? BUCKET-TOP-FLAG /FALSE
|
|
IN? WATER,BUCKET /FALSE
|
|
ZERO? EVAPORATED /?ELS40
|
|
PRINTI "The last of the water evaporates, and the bucket descends."
|
|
CRLF
|
|
CRLF
|
|
JUMP ?CND38
|
|
?ELS40: PRINTI "The bucket descends and comes to a stop."
|
|
CRLF
|
|
CRLF
|
|
?CND38: SET 'BUCKET-TOP-FLAG,FALSE-VALUE
|
|
CALL PASS-THE-BUCKET,WELL-BOTTOM
|
|
RSTACK
|
|
?ELS24: EQUAL? PRSA,V?CLIMB-ON \FALSE
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PASS-THE-BUCKET,R
|
|
MOVE BUCKET,R
|
|
IN? WINNER,BUCKET \FALSE
|
|
CALL GOTO,R
|
|
RSTACK
|
|
|
|
|
|
.FUNCT POSTS-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
FSET? PRSO,NONLANDBIT \FALSE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is now much larger than you are. You have no hope of taking it."
|
|
|
|
|
|
.FUNCT EATME-FCN,F,N
|
|
EQUAL? PRSA,V?EAT \?ELS5
|
|
EQUAL? PRSO,EAT-ME-CAKE \?ELS5
|
|
EQUAL? HERE,TEA-ROOM \?ELS5
|
|
PRINTI "Suddenly, the room appears to have become very large (although everything you are carrying seems to be its normal size)."
|
|
CRLF
|
|
CRLF
|
|
REMOVE EAT-ME-CAKE
|
|
FSET ROBOT,INVISIBLE
|
|
FSET ALICE-TABLE,INVISIBLE
|
|
FIRST? HERE >F /?KLU24
|
|
?KLU24:
|
|
?PRG10: ZERO? F \?ELS14
|
|
JUMP ?REP11
|
|
?ELS14: NEXT? F >N /?KLU25
|
|
?KLU25: EQUAL? F,ADVENTURER /?CND12
|
|
FSET? F,TAKEBIT \?CND12
|
|
FSET F,NONLANDBIT
|
|
FSET F,TRYTAKEBIT
|
|
MOVE F,POSTS-ROOM
|
|
?CND12: SET 'F,N
|
|
JUMP ?PRG10
|
|
?REP11: CALL GOTO,POSTS-ROOM
|
|
RSTACK
|
|
?ELS5: CALL CAKE-CRUMBLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CAKE-CRUMBLE,CAKE
|
|
FSET? PRSO,FOODBIT \?ELS3
|
|
SET 'CAKE,PRSO
|
|
JUMP ?CND1
|
|
?ELS3: SET 'CAKE,PRSI
|
|
?CND1: EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM /FALSE
|
|
EQUAL? HERE,MACHINE-ROOM,MAGNET-ROOM,CAGE-ROOM /FALSE
|
|
EQUAL? HERE,WELL-TOP,IN-CAGE /FALSE
|
|
REMOVE CAKE
|
|
PRINTI "The "
|
|
PRINTD CAKE
|
|
PRINTR " has crumbled to dust."
|
|
|
|
|
|
.FUNCT CAKE-FCN,F,N
|
|
EQUAL? PRSA,V?READ \?ELS5
|
|
FSET? PRSO,NONLANDBIT \?ELS10
|
|
PRINTR "The cake is much too tall now for you to read the lettering."
|
|
?ELS10: ZERO? PRSI /?ELS14
|
|
EQUAL? PRSI,PALANTIR-1,PALANTIR-2,PALANTIR-3 \?ELS20
|
|
CALL PERFORM,V?LOOK-INSIDE,PRSI
|
|
RSTACK
|
|
?ELS20: EQUAL? PRSI,FLASK \?ELS22
|
|
PRINTI "The letters, now visible, say """
|
|
EQUAL? PRSO,RED-ICING \?ELS27
|
|
PRINTI "Evaporate"
|
|
JUMP ?CND25
|
|
?ELS27: EQUAL? PRSO,ORANGE-ICING \?ELS31
|
|
PRINTI "Explode"
|
|
JUMP ?CND25
|
|
?ELS31: PRINTI "Enlarge"
|
|
?CND25: PRINTR """."
|
|
?ELS22: PRINTR "You can't see through that!"
|
|
?ELS14: PRINTR "The first letter is a capital E. The rest is too small to read."
|
|
?ELS5: EQUAL? PRSA,V?EAT \?ELS49
|
|
EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?ELS49
|
|
EQUAL? PRSO,ORANGE-ICING \?ELS56
|
|
REMOVE PRSO
|
|
CALL ICEBOOM
|
|
RSTACK
|
|
?ELS56: EQUAL? PRSO,RED-ICING \?ELS58
|
|
REMOVE PRSO
|
|
CALL JIGS-UP,STR?225
|
|
RSTACK
|
|
?ELS58: EQUAL? PRSO,BLUE-ICING \FALSE
|
|
REMOVE PRSO
|
|
PRINTI "The room around you seems to be getting smaller."
|
|
CRLF
|
|
CRLF
|
|
EQUAL? HERE,POSTS-ROOM \?ELS67
|
|
FCLEAR ROBOT,INVISIBLE
|
|
FCLEAR ALICE-TABLE,INVISIBLE
|
|
FSET POSTS,INVISIBLE
|
|
FIRST? HERE >F /?KLU99
|
|
?KLU99:
|
|
?PRG68: ZERO? F \?ELS72
|
|
JUMP ?REP69
|
|
?ELS72: NEXT? F >N /?KLU100
|
|
?KLU100: EQUAL? F,ADVENTURER /?CND70
|
|
FSET? F,TAKEBIT \?CND70
|
|
FCLEAR F,NONLANDBIT
|
|
FCLEAR F,TRYTAKEBIT
|
|
MOVE F,TEA-ROOM
|
|
?CND70: SET 'F,N
|
|
JUMP ?PRG68
|
|
?REP69: CALL GOTO,TEA-ROOM
|
|
RSTACK
|
|
?ELS67: CALL JIGS-UP,STR?226
|
|
RSTACK
|
|
?ELS49: EQUAL? PRSA,V?PUT,V?THROW \?ELS83
|
|
EQUAL? PRSO,ORANGE-ICING \?ELS83
|
|
EQUAL? HERE,TEA-ROOM,POSTS-ROOM,POOL-ROOM \?ELS83
|
|
REMOVE PRSO
|
|
CALL ICEBOOM
|
|
RSTACK
|
|
?ELS83: EQUAL? PRSA,V?PUT,V?THROW \?ELS87
|
|
EQUAL? PRSO,RED-ICING,BLUE-ICING,ORANGE-ICING \?ELS87
|
|
EQUAL? PRSI,POOL \?ELS87
|
|
EQUAL? PRSO,BLUE-ICING,ORANGE-ICING \?CND90
|
|
PRINTI "The cake sinks majestically into the pool."
|
|
CRLF
|
|
REMOVE PRSO
|
|
RTRUE
|
|
?CND90: MOVE PRSO,HERE
|
|
REMOVE PRSI
|
|
PRINTI "Most of the pool evaporates, revealing a (slightly damp but still valuable) package of rare candies. The red cake must be pretty strong stuff, since it remains intact!"
|
|
CRLF
|
|
FCLEAR CANDY,INVISIBLE
|
|
RTRUE
|
|
?ELS87: CALL CAKE-CRUMBLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CANDY-FCN
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \?ELS5
|
|
CALL FIXED-FONT-ON
|
|
PRINTI " Frobozz Magic Candy Company
|
|
>>Special Assortment<<
|
|
Candied Grasshoppers
|
|
Chocolated Ants
|
|
Worms Glacee
|
|
(By Appointment to His Majesty, Dimwit I)
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?OPEN,V?EAT \FALSE
|
|
PRINTR "Such rich food would probably not be good for you."
|
|
|
|
|
|
.FUNCT TOP-ETCHINGS-F
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
|
CALL FIXED-FONT-ON
|
|
PRINTI " o b o
|
|
r z
|
|
f M A G I C z
|
|
c W E L L y
|
|
o n
|
|
m p a
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BOTTOM-ETCHINGS-F
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
|
CALL FIXED-FONT-ON
|
|
PRINTI " o b o
|
|
|
|
A G I
|
|
E L
|
|
|
|
m p a
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CUBE-F
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
|
CALL FIXED-FONT-ON
|
|
PRINTI " Bank of Zork
|
|
VAULT
|
|
*722 GUE*
|
|
Frobozz Magic Vault Company
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RTRUE
|
|
|
|
|
|
.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 POOL-FCN
|
|
EQUAL? PRSA,V?DRINK \?ELS5
|
|
PRINTR "The water is extremely salty."
|
|
?ELS5: EQUAL? PRSA,V?LOOK-UNDER \?ELS9
|
|
PRINTR "You'd probably have to enter the pool to see what's below the surface."
|
|
?ELS9: EQUAL? PRSA,V?THROUGH \FALSE
|
|
CALL JIGS-UP,STR?227
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FLASK-FCN
|
|
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
|
|
PRINTR "You notice that objects behind the flask appear to be magnified. You might try looking at something through the flask."
|
|
?ELS5: EQUAL? PRSA,V?READ \?ELS9
|
|
EQUAL? PRSI,FLASK \?ELS9
|
|
PRINTI "The flask distorts and magnifies the "
|
|
PRINTD PRSO
|
|
PRINTI ", showing details not noticed earlier."
|
|
CRLF
|
|
RFALSE
|
|
?ELS9: EQUAL? PRSA,V?OPEN \?ELS15
|
|
CALL MUNG-ROOM,HERE,STR?228
|
|
CALL JIGS-UP,FATAL-VAPORS
|
|
RSTACK
|
|
?ELS15: EQUAL? PRSA,V?THROW,V?MUNG \FALSE
|
|
PRINTI "The flask breaks into pieces."
|
|
CRLF
|
|
REMOVE PRSO
|
|
CALL JIGS-UP,FATAL-VAPORS
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PLEAK
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?PLUG \FALSE
|
|
PRINTR "The leak is too high above you to reach."
|
|
|
|
|
|
.FUNCT ICEBOOM
|
|
CALL MUNG-ROOM,HERE,STR?230
|
|
CALL JIGS-UP,STR?231
|
|
RSTACK
|
|
|
|
|
|
.FUNCT MAGNET-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTR "You are in a circular room with a low ceiling. There are exits to the east and southeast."
|
|
?ELS5: EQUAL? RARG,M-ENTER \FALSE
|
|
ZERO? CAROUSEL-FLIP-FLAG /FALSE
|
|
ZERO? CAROUSEL-ZOOM-FLAG /?ELS16
|
|
EQUAL? ADVENTURER,WINNER \?ELS22
|
|
PUSH STR?232
|
|
JUMP ?CND18
|
|
?ELS22: PUSH STR?233
|
|
?CND18: CALL JIGS-UP,STACK
|
|
RSTACK
|
|
?ELS16: EQUAL? WINNER,ADVENTURER \FALSE
|
|
PRINTI "As you enter, your compass starts spinning wildly."
|
|
CRLF
|
|
ZERO? COMPASS-KLUDGE \?CND29
|
|
PRINTI "What compass, you ask? The one which allows you to specify compass directions for movement."
|
|
SET 'COMPASS-KLUDGE,TRUE-VALUE
|
|
?CND29: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MAGNET-ROOM-EXIT
|
|
ZERO? CAROUSEL-FLIP-FLAG /?ELS5
|
|
EQUAL? WINNER,ADVENTURER \?ELS5
|
|
PRINTI "You cannot get your bearings..."
|
|
CRLF
|
|
CRLF
|
|
RANDOM 100
|
|
GRTR? 50,STACK \?ELS14
|
|
RETURN MACHINE-ROOM
|
|
?ELS14: RETURN TEA-ROOM
|
|
?ELS5: EQUAL? PRSO,P?EAST \?ELS18
|
|
RETURN MACHINE-ROOM
|
|
?ELS18: EQUAL? PRSO,P?SE /?THN21
|
|
EQUAL? PRSO,P?OUT \?ELS20
|
|
?THN21: RETURN TEA-ROOM
|
|
?ELS20: PRINTI "You can't go that way."
|
|
CRLF
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BUTTONS
|
|
EQUAL? PRSA,V?PUSH \FALSE
|
|
EQUAL? WINNER,ADVENTURER \?ELS10
|
|
CALL JIGS-UP,STR?234
|
|
RSTACK
|
|
?ELS10: EQUAL? PRSO,SQUARE-BUTTON \?ELS12
|
|
ZERO? CAROUSEL-ZOOM-FLAG /?ELS17
|
|
PRINTR "Nothing seems to happen."
|
|
?ELS17: SET 'CAROUSEL-ZOOM-FLAG,TRUE-VALUE
|
|
PRINTR "The whirring increases in intensity."
|
|
?ELS12: EQUAL? PRSO,ROUND-BUTTON \?ELS26
|
|
ZERO? CAROUSEL-ZOOM-FLAG /?ELS31
|
|
SET 'CAROUSEL-ZOOM-FLAG,FALSE-VALUE
|
|
PRINTR "The whirring decreases in intensity."
|
|
?ELS31: PRINTR "Nothing seems to happen."
|
|
?ELS26: EQUAL? PRSO,TRIANGULAR-BUTTON \FALSE
|
|
ZERO? CAROUSEL-FLIP-FLAG \?PRD41
|
|
PUSH 1
|
|
JUMP ?PRD42
|
|
?PRD41: PUSH 0
|
|
?PRD42: SET 'CAROUSEL-FLIP-FLAG,STACK
|
|
IN? IRON-BOX,CAROUSEL-ROOM \?ELS47
|
|
PRINTI "A dull thump is heard in the distance."
|
|
CRLF
|
|
FSET? IRON-BOX,INVISIBLE \?ELS52
|
|
FCLEAR IRON-BOX,INVISIBLE
|
|
JUMP ?CND50
|
|
?ELS52: FSET IRON-BOX,INVISIBLE
|
|
?CND50: FSET? IRON-BOX,INVISIBLE /TRUE
|
|
FCLEAR CAROUSEL-ROOM,TOUCHBIT
|
|
RTRUE
|
|
?ELS47: PRINTR "Click."
|
|
|
|
|
|
.FUNCT SPHERE-FCN,FL
|
|
ZERO? CAGE-SOLVE-FLAG \?ELS3
|
|
EQUAL? PRSA,V?PUT,V?MOVE,V?TAKE \?ELS3
|
|
SET 'FL,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?ELS3: SET 'FL,FALSE-VALUE
|
|
?CND1: ZERO? FL /?ELS12
|
|
EQUAL? ADVENTURER,WINNER \?ELS12
|
|
PRINTI "As you reach for the sphere, a solid steel cage falls from the ceiling to entrap you. To make matters worse, poisonous gas starts coming into the room."
|
|
CRLF
|
|
CRLF
|
|
IN? ROBOT,HERE \?CND17
|
|
MOVE ROBOT,IN-CAGE
|
|
FSET ROBOT,NDESCBIT
|
|
?CND17: CALL GOTO,IN-CAGE
|
|
MOVE CAGE,HERE
|
|
FSET CAGE,NDESCBIT
|
|
FCLEAR CAGE,INVISIBLE
|
|
CALL QUEUE,I-SPHERE,6
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?ELS12: ZERO? FL /?ELS21
|
|
FSET PALANTIR-1,INVISIBLE
|
|
REMOVE ROBOT
|
|
FSET PRSO,INVISIBLE
|
|
MOVE CAGE,CAGE-ROOM
|
|
FCLEAR CAGE,INVISIBLE
|
|
CALL JIGS-UP,STR?235
|
|
RTRUE
|
|
?ELS21: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE
|
|
CALL PALANTIR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-SPHERE
|
|
EQUAL? HERE,CAGE-ROOM,IN-CAGE \FALSE
|
|
FSET PALANTIR-1,INVISIBLE
|
|
CALL MUNG-ROOM,CAGE-ROOM,STR?236
|
|
CALL JIGS-UP,STR?237
|
|
RSTACK
|
|
|
|
|
|
.FUNCT IN-CAGE-FCN,RARG
|
|
ZERO? CAGE-SOLVE-FLAG /FALSE
|
|
SET 'HERE,CAGE-ROOM
|
|
RETURN HERE
|
|
|
|
|
|
.FUNCT ROBOT-FCN,RARG=M-OBJECT
|
|
EQUAL? WINNER,ROBOT \?ELS5
|
|
EQUAL? PRSA,V?SGIVE /FALSE
|
|
EQUAL? PRSA,V?FOLLOW \?ELS12
|
|
PRINTR """My memory circuits are not that advanced. I can move as directed, though."""
|
|
?ELS12: EQUAL? PRSA,V?MOVE,V?TAKE,V?RAISE \?ELS16
|
|
EQUAL? PRSO,CAGE \?ELS16
|
|
PRINTI "The cage shakes and is hurled across the room. It's hard to say, but the robot appears to be smiling."
|
|
CRLF
|
|
CRLF
|
|
CALL INT,I-SPHERE
|
|
PUT STACK,0,0
|
|
SET 'WINNER,ADVENTURER
|
|
CALL GOTO,CAGE-ROOM
|
|
MOVE MANGLED-CAGE,CAGE-ROOM
|
|
FCLEAR ROBOT,NDESCBIT
|
|
FSET PALANTIR-1,TAKEBIT
|
|
MOVE ROBOT,CAGE-ROOM
|
|
SET 'CAGE-SOLVE-FLAG,TRUE-VALUE
|
|
RETURN CAGE-SOLVE-FLAG
|
|
?ELS16: EQUAL? PRSA,V?DRINK,V?EAT \?ELS22
|
|
IN? ADVENTURER,HERE \TRUE
|
|
PRINTR """I am sorry but that is difficult for a being with no mouth."""
|
|
?ELS22: RANDOM 100
|
|
GRTR? 2,STACK \?ELS29
|
|
CALL META-LOC,ADVENTURER
|
|
EQUAL? STACK,HERE \?ELS29
|
|
PRINTR """Buzz! Buzz! Buzz! My circuits are getting rusty. Try again."""
|
|
?ELS29: EQUAL? PRSA,V?EXAMINE,V?READ \?ELS35
|
|
CALL META-LOC,ADVENTURER
|
|
EQUAL? STACK,HERE \TRUE
|
|
PRINTR """My vision is not sufficiently acute to do that."""
|
|
?ELS35: EQUAL? PRSA,V?THROW,V?PUT,V?DROP \?ELS42
|
|
CALL META-LOC,ADVENTURER
|
|
EQUAL? STACK,HERE \FALSE
|
|
IN? PRSO,ROBOT \?ELS49
|
|
PRINTI """Whirr, buzz, click!"""
|
|
CRLF
|
|
RFALSE
|
|
?ELS49: PRINTR """Click! I don't have that. Buzz! Whirr!"""
|
|
?ELS42: EQUAL? PRSA,V?WALK /?THN58
|
|
EQUAL? PRSA,V?TURN,V?PUSH,V?TAKE \?ELS57
|
|
FSET? PRSO,ACTORBIT /?ELS57
|
|
?THN58: CALL META-LOC,ADVENTURER
|
|
EQUAL? STACK,HERE \FALSE
|
|
RANDOM 100
|
|
GRTR? 80,STACK \?ELS66
|
|
PRINTI """Whirr, buzz, click!"""
|
|
CRLF
|
|
RFALSE
|
|
?ELS66: PRINTI """Buzz, click, whirr!"""
|
|
CRLF
|
|
RFALSE
|
|
?ELS57: CALL META-LOC,ADVENTURER
|
|
EQUAL? STACK,HERE \TRUE
|
|
PRINTR """My programming is insufficient to allow me to perform that task."""
|
|
?ELS5: EQUAL? PRSA,V?CLOSE,V?LOOK-INSIDE,V?OPEN \?ELS81
|
|
PRINTR "There's no access panel or door on the robot."
|
|
?ELS81: EQUAL? PRSA,V?GIVE \?ELS85
|
|
EQUAL? PRSI,ROBOT \?ELS85
|
|
MOVE PRSO,ROBOT
|
|
PRINTI "The robot gladly takes the "
|
|
PRINTD PRSO
|
|
PRINTR " and nods his head-like appendage in thanks."
|
|
?ELS85: EQUAL? PRSA,V?MUNG,V?THROW \FALSE
|
|
PRINTI "The robot falls to the ground and (being of shoddy construction) disintegrates before your eyes."
|
|
CRLF
|
|
EQUAL? PRSA,V?THROW \?ELS98
|
|
PUSH PRSI
|
|
JUMP ?CND94
|
|
?ELS98: ZERO? PRSO /?PRD96
|
|
PUSH 1
|
|
JUMP ?CND94
|
|
?PRD96: PUSH 0
|
|
?CND94: REMOVE STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BILLS-OBJECT
|
|
SET 'BANK-SOLVE-FLAG,TRUE-VALUE
|
|
EQUAL? PRSA,V?BURN \?ELS5
|
|
PRINTI "Nothing like having money to burn!"
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: EQUAL? PRSA,V?EAT \FALSE
|
|
PRINTR "Talk about eating rich foods!"
|
|
|
|
|
|
.FUNCT BKLEAVEE,RM=TELLER-EAST
|
|
CALL HELD?,BILLS
|
|
ZERO? STACK \?THN6
|
|
CALL HELD?,PORTRAIT
|
|
ZERO? STACK /?ELS5
|
|
?THN6: PRINTI "An alarm rings briefly, and an invisible force bars your way."
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: RETURN RM
|
|
|
|
|
|
.FUNCT BKLEAVEW
|
|
CALL BKLEAVEE,TELLER-WEST
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DEPOSITORY-FCN,RARG
|
|
EQUAL? RARG,M-ENTER \FALSE
|
|
CALL LKP,PRSO,SCOL-ROOMS >SCOL-ROOM
|
|
RETURN SCOL-ROOM
|
|
|
|
|
|
.FUNCT TELLER-ROOM,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are in a small room, which was used by a bank officer who retrieved safety deposit boxes for the customer. On the north side of the room is a sign which reads ""Viewing Room"". On the "
|
|
EQUAL? HERE,TELLER-WEST \?ELS10
|
|
PRINTI "west"
|
|
JUMP ?CND8
|
|
?ELS10: PRINTI "east"
|
|
?CND8: PRINTR " side of the room, above an open door, is a sign reading:
|
|
|
|
BANK PERSONNEL ONLY
|
|
"
|
|
|
|
|
|
.FUNCT SCOL-OBJECT,OBJ=0
|
|
EQUAL? PRSA,V?TAKE,V?MOVE,V?PUSH /?THN6
|
|
EQUAL? PRSA,V?RUB \?ELS5
|
|
?THN6: PRINTR "As you try, your hand seems to go through it."
|
|
?ELS5: EQUAL? PRSA,V?ATTACK \?ELS11
|
|
ZERO? PRSI /?ELS11
|
|
PRINTI "The "
|
|
PRINTD PRSI
|
|
PRINTR " goes through it."
|
|
?ELS11: EQUAL? PRSA,V?OVERBOARD,V?THROW \FALSE
|
|
EQUAL? PRSI,CURTAIN,OBJ \FALSE
|
|
IN? PRSO,WINNER \?ELS24
|
|
CALL V-THROUGH,PRSO
|
|
RSTACK
|
|
?ELS24: PRINTR "You don't have that!"
|
|
|
|
|
|
.FUNCT GET-WALL,RM,W
|
|
SET 'W,SCOL-WALLS
|
|
?PRG1: GET W,0
|
|
EQUAL? STACK,RM \?ELS5
|
|
RETURN W
|
|
?ELS5: ADD W,6 >W
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT SCOLWALL
|
|
EQUAL? PRSA,V?PUT,V?OVERBOARD,V?THROW \FALSE
|
|
EQUAL? HERE,SCOL-ACTIVE \FALSE
|
|
CALL GET-WALL,HERE
|
|
GET STACK,1
|
|
EQUAL? PRSI,STACK \FALSE
|
|
CALL SCOL-OBJECT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SCOL-GO,OBJ
|
|
SET 'SCOL-ACTIVE,SCOL-ROOM
|
|
ZERO? OBJ /?ELS5
|
|
CALL SCOL-OBJ,OBJ,0,SCOL-ROOM
|
|
RSTACK
|
|
?ELS5: CALL SCOL-THROUGH,12,SCOL-ROOM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SCOL-OBJ,OBJ,CINT,RM
|
|
CALL QUEUE,I-CURTAIN,CINT
|
|
PUT STACK,0,1
|
|
MOVE OBJ,RM
|
|
EQUAL? RM,DEPOSITORY \?ELS5
|
|
PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTR " passes through the wall and vanishes."
|
|
?ELS5: PRINTI "The curtain dims slightly as the "
|
|
PRINTD OBJ
|
|
PRINTI " passes through."
|
|
CRLF
|
|
SET 'SCOL-ROOM,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SCOL-THROUGH,CINT,RM
|
|
CALL QUEUE,I-CURTAIN,CINT
|
|
PUT STACK,0,1
|
|
PRINTI "You feel somewhat disoriented as you pass through..."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,RM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-CURTAIN
|
|
SET 'SCOL-ACTIVE,FALSE-VALUE
|
|
EQUAL? HERE,VAULT \?ELS5
|
|
CALL JIGS-UP,STR?238
|
|
RSTACK
|
|
?ELS5: EQUAL? HERE,VIEWING-EAST,VIEWING-WEST,SMALL-ROOM \FALSE
|
|
PRINTI "You hear a faint voice say ""Curtain Door Closed."""
|
|
CRLF
|
|
EQUAL? HERE,SMALL-ROOM \FALSE
|
|
ZERO? ZGNOME-FLAG \TRUE
|
|
CALL QUEUE,I-ZGNOME,3
|
|
PUT STACK,0,1
|
|
SET 'ZGNOME-FLAG,TRUE-VALUE
|
|
RETURN ZGNOME-FLAG
|
|
|
|
|
|
.FUNCT I-ZGNOME
|
|
EQUAL? HERE,SMALL-ROOM \FALSE
|
|
CALL QUEUE,I-ZGNOME-OUT,12
|
|
PUT STACK,0,1
|
|
PRINTI "An epicene gnome of Zurich wearing a three-piece suit and carrying a safety deposit box materializes in the room."
|
|
IN? WAND,WINNER \?ELS12
|
|
PRINTR " He notices the wand and dematerializes speedily."
|
|
?ELS12: PRINTI " ""You seem to have forgotten to deposit your valuables,"" he says, tapping the lid of the box impatiently. ""We don't usually allow customers to use the boxes here, but we can make this ONE exception, I suppose..."" He looks askance at you over his wire-rimmed bifocals."
|
|
CRLF
|
|
MOVE GNOME-OF-ZURICH,HERE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BOX-F
|
|
PRINTR "The gnome clutches it possessively."
|
|
|
|
|
|
.FUNCT ZGNOME-FCN
|
|
EQUAL? PRSA,V?TELL \?ELS5
|
|
SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
PRINTR "The gnome appears increasingly impatient."
|
|
?ELS5: EQUAL? PRSA,V?THROW,V?GIVE \?ELS9
|
|
EQUAL? PRSI,GNOME-OF-ZURICH \?ELS9
|
|
GETPT PRSO,P?VALUE
|
|
ZERO? STACK /?ELS16
|
|
PRINTI "The gnome carefully places the "
|
|
PRINTD PRSO
|
|
PRINTI " in the deposit box. ""Let me show you the way out,"" he says, making it clear he will be pleased to see the last of you. Then, you are momentarily disoriented, and when you recover you are back at the Bank Entrance."
|
|
CRLF
|
|
REMOVE GNOME-OF-ZURICH
|
|
REMOVE PRSO
|
|
CALL INT,I-ZGNOME-OUT
|
|
PUT STACK,0,0
|
|
CALL GOTO,BANK-ENTRANCE
|
|
RTRUE
|
|
?ELS16: CALL BOMB?,PRSO
|
|
ZERO? STACK /?ELS20
|
|
REMOVE GNOME-OF-ZURICH
|
|
MOVE PRSO,HERE
|
|
CALL INT,I-ZGNOME
|
|
PUT STACK,0,0
|
|
CALL INT,I-ZGNOME-OUT
|
|
PUT STACK,0,0
|
|
PRINTR """You are so very gracious. I really cannot accept."" he says. He disappears, a wry smile on his lips."
|
|
?ELS20: PRINTI """I wouldn't put THAT in a safety deposit box,"" remarks the gnome with disdain, tossing it over his shoulder, where it disappears with an understated ""pop""."
|
|
CRLF
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
RTRUE
|
|
?ELS9: EQUAL? PRSA,V?ATTACK \?ELS28
|
|
PRINTI "The gnome says ""Well, I never..."" and disappears with a snap of his fingers, leaving you alone."
|
|
CRLF
|
|
REMOVE GNOME-OF-ZURICH
|
|
CALL INT,I-ZGNOME-OUT
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
?ELS28: PRINTR "The gnome appears increasingly impatient."
|
|
|
|
|
|
.FUNCT I-ZGNOME-OUT
|
|
REMOVE GNOME-OF-ZURICH
|
|
EQUAL? HERE,SMALL-ROOM \FALSE
|
|
PRINTR "The gnome looks impatient: ""I may have another customer waiting; you'll just have to fend for yourself, I'm afraid."" He disappears, leaving you alone."
|
|
|
|
|
|
.FUNCT BOMB?,O
|
|
EQUAL? O,BRICK \FALSE
|
|
IN? FUSE,BRICK \FALSE
|
|
CALL INT,I-FUSE
|
|
GET STACK,C-ENABLED?
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GO&LOOK,RM,OHERE,OLIT,OSEEN=0
|
|
SET 'OHERE,HERE
|
|
FSET? OHERE,TOUCHBIT \?CND1
|
|
SET 'OSEEN,TRUE-VALUE
|
|
?CND1: SET 'OLIT,LIT
|
|
SET 'HERE,RM
|
|
CALL LIT?,RM >LIT
|
|
CALL PERFORM,V?LOOK
|
|
ZERO? OSEEN \?CND4
|
|
FCLEAR OHERE,TOUCHBIT
|
|
?CND4: SET 'HERE,OHERE
|
|
SET 'LIT,OLIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TINY-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTI "This is a tiny room carved out of the wall of the ravine. There is an exit down a precarious climb. "
|
|
CALL P-DOOR,STR?239,LID-1,KEYHOLE-1
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?LOOK /FALSE
|
|
CALL PCHECK
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DREARY-ROOM-FCN,RARG,?TMP1
|
|
EQUAL? RARG,M-LOOK \?CND1
|
|
PRINTI "This is a small and rather dreary room, eerily illuminated by a red glow emanating from a crack in one wall. The light falls upon a dusty wooden table in the center of the room. "
|
|
CALL P-DOOR,STR?240,LID-2,KEYHOLE-2
|
|
RTRUE
|
|
?CND1: CALL PCHECK >?TMP1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT PCHECK,LID
|
|
CALL PLID >LID
|
|
SET 'PLOOK-FLAG,FALSE-VALUE
|
|
IN? KEY,KEYHOLE-1 /?THN4
|
|
IN? KEY,KEYHOLE-2 \?ELS3
|
|
?THN4: FSET KEY,NDESCBIT
|
|
JUMP ?CND1
|
|
?ELS3: FCLEAR KEY,NDESCBIT
|
|
?CND1: CALL HELD?,PLACE-MAT
|
|
ZERO? STACK /?CND8
|
|
SET 'MUD-FLAG,FALSE-VALUE
|
|
?CND8: ZERO? MUD-FLAG /?ELS15
|
|
MOVE PLACE-MAT,HERE
|
|
FSET PLACE-MAT,NDESCBIT
|
|
RTRUE
|
|
?ELS15: FCLEAR PLACE-MAT,NDESCBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT P-DOOR,STR,LID,KEYHOLE,F
|
|
ZERO? PLOOK-FLAG /?CND1
|
|
SET 'PLOOK-FLAG,FALSE-VALUE
|
|
RFALSE
|
|
?CND1: PRINTI "On the "
|
|
PRINT STR
|
|
PRINTI " side of the room is a massive wooden door, which has a small window barred with iron. A formidable bolt lock is set within the door frame. A keyhole "
|
|
FSET? LID,OPENBIT /?CND7
|
|
PRINTI "covered by a thin metal lid "
|
|
?CND7: PRINTI "lies within the lock."
|
|
FIRST? KEYHOLE >F \?CND14
|
|
PRINTI " A "
|
|
PRINTD F
|
|
PRINTI " is in place within the keyhole."
|
|
?CND14: ZERO? MUD-FLAG /?CND19
|
|
PRINTI " The edge of a place mat is visible under the door."
|
|
ZERO? MATOBJ /?CND19
|
|
PRINTI " Lying on the place mat is a "
|
|
PRINTD MATOBJ
|
|
PRINTI "."
|
|
?CND19: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PLID,OBJ1=LID-1,OBJ2=LID-2
|
|
IN? OBJ1,HERE \?ELS5
|
|
RETURN OBJ1
|
|
?ELS5: RETURN OBJ2
|
|
|
|
|
|
.FUNCT PKH,KEYHOLE,THIS=0
|
|
EQUAL? KEYHOLE,KEYHOLE-1 \?ELS5
|
|
ZERO? THIS \?ELS5
|
|
RETURN KEYHOLE-2
|
|
?ELS5: EQUAL? KEYHOLE,KEYHOLE-1 /?ELS9
|
|
ZERO? THIS /?ELS9
|
|
RETURN KEYHOLE-2
|
|
?ELS9: RETURN KEYHOLE-1
|
|
|
|
|
|
.FUNCT PKH-FCN,OBJ,KH
|
|
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
|
|
FSET? LID-1,OPENBIT \?ELS10
|
|
FSET? LID-2,OPENBIT \?ELS10
|
|
FIRST? KEYHOLE-1 /?ELS10
|
|
FIRST? KEYHOLE-2 /?ELS10
|
|
EQUAL? HERE,DREARY-ROOM \?ELS17
|
|
PUSH TINY-ROOM
|
|
JUMP ?CND13
|
|
?ELS17: PUSH DREARY-ROOM
|
|
?CND13: CALL LIT?,STACK
|
|
ZERO? STACK /?ELS10
|
|
PRINTR "You can see a lighted room at the other end."
|
|
?ELS10: PRINTR "No light can be seen through the keyhole."
|
|
?ELS5: EQUAL? PRSA,V?PUT \FALSE
|
|
CALL PLID
|
|
FSET? STACK,OPENBIT \?ELS32
|
|
CALL PKH,PRSI,TRUE-VALUE
|
|
FIRST? STACK \?ELS37
|
|
PRINTR "The keyhole is blocked."
|
|
?ELS37: EQUAL? PRSO,LETTER-OPENER,KEY \?ELS41
|
|
CALL PKH,PRSI >KH
|
|
FIRST? KH \FALSE
|
|
PRINTI "There is a faint noise from behind the door and a small cloud of dust rises from beneath it."
|
|
CRLF
|
|
FIRST? KH >OBJ /?KLU61
|
|
?KLU61: REMOVE OBJ
|
|
ZERO? MUD-FLAG /FALSE
|
|
SET 'MATOBJ,OBJ
|
|
RFALSE
|
|
?ELS41: PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " doesn't fit."
|
|
?ELS32: PRINTR "The lid is in the way."
|
|
|
|
|
|
.FUNCT PLID-FCN
|
|
EQUAL? PRSA,V?MOVE,V?RAISE,V?OPEN \?ELS5
|
|
FSET? PRSO,OPENBIT \?ELS8
|
|
CALL RANDOM-ELEMENT,DUMMY
|
|
PRINT STACK
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "The lid is now open."
|
|
CRLF
|
|
?CND6: FSET PRSO,OPENBIT
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?LOWER,V?CLOSE \?ELS16
|
|
EQUAL? HERE,DREARY-ROOM \?ELS26
|
|
PUSH KEYHOLE-2
|
|
JUMP ?CND22
|
|
?ELS26: PUSH KEYHOLE-1
|
|
?CND22: FIRST? STACK \?ELS21
|
|
PRINTR "The keyhole is occupied."
|
|
?ELS21: PRINTI "The lid covers the keyhole."
|
|
CRLF
|
|
FCLEAR PRSO,OPENBIT
|
|
RTRUE
|
|
?ELS16: EQUAL? PRSA,V?LOOK-BEHIND \FALSE
|
|
PRINTR "There's a keyhole behind the lid."
|
|
|
|
|
|
.FUNCT ROOM?,OBJ,NOBJ
|
|
?PRG1: LOC OBJ >NOBJ
|
|
ZERO? NOBJ /FALSE
|
|
EQUAL? NOBJ,WINNER /FALSE
|
|
EQUAL? NOBJ,ROOMS \?CND3
|
|
RETURN OBJ
|
|
?CND3: SET 'OBJ,NOBJ
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT PALANTIR
|
|
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
|
|
EQUAL? PRSO,PALANTIR-1 \?ELS10
|
|
PUSH PALANTIR-2
|
|
JUMP ?CND6
|
|
?ELS10: EQUAL? PRSO,PALANTIR-2 \?ELS12
|
|
PUSH PALANTIR-3
|
|
JUMP ?CND6
|
|
?ELS12: EQUAL? PRSO,PALANTIR-3 \?ELS14
|
|
PUSH PALANTIR-1
|
|
JUMP ?CND6
|
|
?ELS14: PUSH PALANTIR-4
|
|
?CND6: CALL PALANTIR-LOOK,STACK
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS18
|
|
PRINTR "There is something misty in the sphere. Perhaps if you were to look into it..."
|
|
?ELS18: EQUAL? PRSA,V?TAKE \FALSE
|
|
EQUAL? PRSO,PALANTIR-3 \FALSE
|
|
PUTP PRSO,P?LDESC,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DEAD-PALANTIR,RARG,P
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTI "You are inside a huge crystalline sphere filled with thin "
|
|
EQUAL? HERE,DEAD-PALANTIR-1 \?ELS12
|
|
SET 'P,PALANTIR-1
|
|
PUSH STR?241
|
|
JUMP ?CND8
|
|
?ELS12: EQUAL? HERE,DEAD-PALANTIR-2 \?ELS14
|
|
SET 'P,PALANTIR-2
|
|
PUSH STR?242
|
|
JUMP ?CND8
|
|
?ELS14: SET 'P,PALANTIR-3
|
|
PUSH STR?243
|
|
?CND8: PRINT STACK
|
|
PRINTI " mist. The mist becomes "
|
|
EQUAL? HERE,DEAD-PALANTIR-1 \?ELS21
|
|
PUSH STR?242
|
|
JUMP ?CND17
|
|
?ELS21: EQUAL? HERE,DEAD-PALANTIR-2 \?ELS23
|
|
PUSH STR?243
|
|
JUMP ?CND17
|
|
?ELS23: PUSH STR?244
|
|
?CND17: PRINT STACK
|
|
PRINTI " to the west."
|
|
CRLF
|
|
PRINTI "You strain to look out through the mist... "
|
|
CRLF
|
|
FSET? P,TOUCHBIT \?ELS30
|
|
CALL PALANTIR-LOOK,P,TRUE-VALUE
|
|
RTRUE
|
|
?ELS30: EQUAL? P,PALANTIR-1 \?ELS32
|
|
PRINTR "You see a small room with a sign on the wall, but it is too blurry to read."
|
|
?ELS32: EQUAL? P,PALANTIR-2 \?ELS36
|
|
PRINTR "You look out into a large, dreary room with a great door and a huge table. There is an odd glow to the mist."
|
|
?ELS36: EQUAL? P,PALANTIR-3 \TRUE
|
|
PRINTI "A strange blurry room is barely visible."
|
|
IN? SERPENT,AQUARIUM \?CND43
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?CND43
|
|
PRINTI " An odd sinuous shadow crosses the mist as you look."
|
|
?CND43: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? RARG,M-ENTER \FALSE
|
|
EQUAL? HERE,DEAD-PALANTIR-4 \FALSE
|
|
PRINTI "You follow a corridor of black mist into a black walled spherical room."
|
|
IN? GENIE,PENTAGRAM-ROOM \?CND56
|
|
PRINTI " The room is empty. A huge face looks down on you from outside and laughs sardonically. It doesn't look like you're getting out of this predicament!"
|
|
CRLF
|
|
CALL FINISH
|
|
?CND56: PRINTI " As you enter, a huge and horrible face materializes out of the mist.
|
|
|
|
""What brings you here to trouble my imprisonment, wanderer?"" it asks. Hearing no immediate answer, it studies you for a moment."
|
|
CRLF
|
|
LESS? DEATHS,3 /?ELS67
|
|
PRINTI """Not you again! This is getting tedious. You'll obviously never be much help to me. Better luck next time, oh wondrous adventurer."" The face disappears and everything goes black."
|
|
CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
?ELS67: PRINTI """Perhaps you may be of some use to me in gaining my freedom from this place. Return to your foolish quest! I shall not destroy you this time. Mayhap you will repay this favor in kind someday."" The face vanishes and the mist begins to swirl. When it clears you are returned to the world of life."
|
|
CRLF
|
|
SET 'DEAD,FALSE-VALUE
|
|
CALL GOTO,INSIDE-BARROW
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-PALANTIRS
|
|
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?ELS5
|
|
CALL DEAD-PALANTIR,M-LOOK
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?MUNG \FALSE
|
|
PRINTR "The sphere is unbreakable."
|
|
|
|
|
|
.FUNCT PALANTIR-LOOK,OBJ,INSIDE?=0,RM,OHERE
|
|
EQUAL? OBJ,PALANTIR-4 \?CND1
|
|
PRINTR "As you peer into the sphere, a strange vision takes shape...a huge and fearful face with yellow eyes. The face peers out at you expectantly."
|
|
?CND1: EQUAL? HERE,OBJ /?PRD6
|
|
PUSH 0
|
|
JUMP ?PRD7
|
|
?PRD6: PUSH 1
|
|
?PRD7: SET 'RM,STACK
|
|
ZERO? RM /?THN11
|
|
CALL LIT?,RM
|
|
ZERO? STACK \?ELS10
|
|
?THN11: PRINTR "You see only darkness."
|
|
?ELS10: IN? OBJ,RM /?THN17
|
|
LOC OBJ
|
|
CALL SEE-INSIDE?,STACK
|
|
ZERO? STACK /?ELS16
|
|
?THN17: SET 'OHERE,HERE
|
|
ZERO? INSIDE? /?ELS21
|
|
PRINTI "As you peer through the mist, a strangely colored vision of a huge room takes shape..."
|
|
CRLF
|
|
CRLF
|
|
JUMP ?CND19
|
|
?ELS21: PRINTI "As you peer into the sphere, a strange vision takes shape of a distant room, which can be described clearly...."
|
|
CRLF
|
|
CRLF
|
|
?CND19: FSET OBJ,INVISIBLE
|
|
CALL GO&LOOK,RM
|
|
EQUAL? OHERE,RM \?CND29
|
|
PRINTI "An astonished adventurer is staring into a crystal sphere."
|
|
CRLF
|
|
?CND29: FCLEAR OBJ,INVISIBLE
|
|
ZERO? INSIDE? \TRUE
|
|
PRINTR "The vision fades, revealing only an ordinary crystal sphere."
|
|
?ELS16: PRINTR "You see only darkness."
|
|
|
|
|
|
.FUNCT PWINDOW-FCN
|
|
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
|
|
SET 'PLOOK-FLAG,TRUE-VALUE
|
|
FSET? PDOOR,OPENBIT \?ELS10
|
|
PRINTR "The door is open, dummy."
|
|
?ELS10: EQUAL? HERE,DREARY-ROOM \?ELS14
|
|
CALL GO&LOOK,TINY-ROOM
|
|
RSTACK
|
|
?ELS14: CALL GO&LOOK,DREARY-ROOM
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?THROUGH \FALSE
|
|
PRINTR "Perhaps if you were diced...."
|
|
|
|
|
|
.FUNCT PDOOR-FCN,K
|
|
EQUAL? PRSA,V?LOOK-UNDER \?ELS5
|
|
ZERO? MUD-FLAG /?ELS5
|
|
PRINTR "The place mat is under the door."
|
|
?ELS5: EQUAL? PRSA,V?UNLOCK \?ELS11
|
|
EQUAL? PRSI,KEY \?ELS16
|
|
CALL PLID,KEYHOLE-1,KEYHOLE-2
|
|
FIRST? STACK >K \?ELS21
|
|
EQUAL? K,KEY /?ELS21
|
|
PRINTR "The keyhole is blocked."
|
|
?ELS21: PRINTI "The door is now unlocked."
|
|
CRLF
|
|
SET 'PUNLOCK-FLAG,TRUE-VALUE
|
|
RETURN PUNLOCK-FLAG
|
|
?ELS16: EQUAL? PRSI,GOLD-KEY \?ELS31
|
|
PRINTR "It doesn't fit the lock."
|
|
?ELS31: PRINTR "It can't be unlocked with that."
|
|
?ELS11: EQUAL? PRSA,V?LOCK \?ELS39
|
|
EQUAL? PRSI,KEY \?ELS44
|
|
PRINTI "The door is locked."
|
|
CRLF
|
|
SET 'PUNLOCK-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
?ELS44: EQUAL? PRSI,GOLD-KEY \?ELS48
|
|
PRINTR "It doesn't fit the lock."
|
|
?ELS48: PRINTR "It can't be locked with that."
|
|
?ELS39: EQUAL? PRSA,V?PUT-UNDER \?ELS56
|
|
EQUAL? PRSO,ROBOT-LABEL \?ELS61
|
|
PRINTI "The paper is very small and vanishes under the door."
|
|
CRLF
|
|
EQUAL? HERE,TINY-ROOM \?ELS68
|
|
PUSH DREARY-ROOM
|
|
JUMP ?CND64
|
|
?ELS68: PUSH TINY-ROOM
|
|
?CND64: MOVE PRSO,STACK
|
|
RTRUE
|
|
?ELS61: EQUAL? PRSO,NEWSPAPER \FALSE
|
|
PRINTR "The newspaper crumples up and won't go under the door."
|
|
?ELS56: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
ZERO? PUNLOCK-FLAG /?ELS81
|
|
CALL OPEN-CLOSE,PRSO,STR?245,STR?246
|
|
RSTACK
|
|
?ELS81: PRINTR "The door is locked."
|
|
|
|
|
|
.FUNCT PKEY-FCN
|
|
EQUAL? PRSA,V?TURN \FALSE
|
|
ZERO? PUNLOCK-FLAG /?ELS10
|
|
CALL PERFORM,V?LOCK,PDOOR,PRSO
|
|
RSTACK
|
|
?ELS10: CALL PERFORM,V?UNLOCK,PDOOR,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PLACE-MAT-FCN
|
|
EQUAL? PRSA,V?PUT-UNDER \?ELS5
|
|
EQUAL? PRSI,PDOOR \?ELS10
|
|
PRINTI "The place mat fits easily under the door."
|
|
CRLF
|
|
MOVE PRSO,HERE
|
|
SET 'MUD-FLAG,TRUE-VALUE
|
|
RETURN MUD-FLAG
|
|
?ELS10: EQUAL? PRSI,WIZ-DOOR,RIDDLE-DOOR,CRYPT-DOOR \FALSE
|
|
PRINTR "There's not enough room under this door."
|
|
?ELS5: EQUAL? PRSA,V?MOVE,V?TAKE \FALSE
|
|
ZERO? MATOBJ /FALSE
|
|
MOVE MATOBJ,HERE
|
|
PRINTI "As the place mat is moved, a "
|
|
PRINTD MATOBJ
|
|
PRINTI " falls from it and onto the floor."
|
|
CRLF
|
|
SET 'MATOBJ,FALSE-VALUE
|
|
SET 'MUD-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WISH-FCN
|
|
EQUAL? PRSA,V?MAKE \FALSE
|
|
EQUAL? HERE,WELL-BOTTOM \?ELS10
|
|
IN? COIN,HERE \?ELS10
|
|
PRINTI "A whispering voice replies: ""Water makes the bucket go."" Unfortunately, wishing makes the coin go...."
|
|
CRLF
|
|
REMOVE COIN
|
|
RTRUE
|
|
?ELS10: PRINTR "No one is listening."
|
|
|
|
|
|
.FUNCT WELL-FCN
|
|
FSET? PRSO,TAKEBIT \?ELS5
|
|
EQUAL? PRSA,V?DROP,V?PUT,V?THROW \?ELS5
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is now sitting at the bottom of the well."
|
|
CRLF
|
|
MOVE PRSO,WELL-BOTTOM
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-DOWN,V?CLIMB-UP \FALSE
|
|
PRINTR "You can't climb the well."
|
|
|
|
|
|
.FUNCT MATCH-FCN,CNT
|
|
EQUAL? PRSA,V?BURN,V?LAMP-ON \?ELS5
|
|
EQUAL? PRSO,MATCH \?ELS5
|
|
GRTR? MATCH-COUNT,0 \?CND8
|
|
DEC 'MATCH-COUNT
|
|
?CND8: GRTR? MATCH-COUNT,0 /?ELS15
|
|
PRINTR "I'm afraid you have run out of matches."
|
|
?ELS15: FSET MATCH,FLAMEBIT
|
|
FSET MATCH,ONBIT
|
|
CALL QUEUE,I-MATCH,2
|
|
PUT STACK,0,1
|
|
PRINTR "One of the matches starts to burn."
|
|
?ELS5: EQUAL? PRSA,V?LAMP-OFF \?ELS23
|
|
FSET? MATCH,FLAMEBIT \?ELS23
|
|
PRINTI "The match is out."
|
|
CRLF
|
|
FCLEAR MATCH,FLAMEBIT
|
|
FCLEAR MATCH,ONBIT
|
|
CALL QUEUE,I-MATCH,0
|
|
RTRUE
|
|
?ELS23: EQUAL? PRSA,V?COUNT \?ELS29
|
|
PRINTI "You have "
|
|
SUB MATCH-COUNT,1 >CNT
|
|
PRINTN CNT
|
|
PRINTI " match"
|
|
EQUAL? CNT,1 /?ELS36
|
|
PRINTI "es."
|
|
JUMP ?CND34
|
|
?ELS36: PRINTI "."
|
|
?CND34: CRLF
|
|
RTRUE
|
|
?ELS29: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
FSET? MATCH,ONBIT \?ELS47
|
|
PRINTI "A match is burning."
|
|
JUMP ?CND45
|
|
?ELS47: PRINTI "No match is burning."
|
|
?CND45: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-MATCH
|
|
PRINTI "The match has gone out."
|
|
CRLF
|
|
FCLEAR MATCH,FLAMEBIT
|
|
FCLEAR MATCH,ONBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT LANTERN
|
|
EQUAL? PRSA,V?THROW \?ELS5
|
|
EQUAL? PRSO,LAMP \?ELS5
|
|
PRINTI "The lamp has smashed into the floor, and the light has gone out."
|
|
CRLF
|
|
CALL INT,I-LANTERN
|
|
PUT STACK,0,0
|
|
REMOVE LAMP
|
|
MOVE BROKEN-LAMP,HERE
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS11
|
|
FSET? LAMP,RMUNGBIT \?ELS16
|
|
PRINTR "A burned-out lamp won't light."
|
|
?ELS16: CALL INT,I-LANTERN
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?ELS11: EQUAL? PRSA,V?LAMP-OFF \?ELS22
|
|
FSET? LAMP,RMUNGBIT \?ELS27
|
|
PRINTR "The lamp has already burned out."
|
|
?ELS27: CALL INT,I-LANTERN
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
?ELS22: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
FSET? LAMP,RMUNGBIT \?ELS36
|
|
PRINTI "The lamp has burned out."
|
|
JUMP ?CND34
|
|
?ELS36: FSET? LAMP,ONBIT \?ELS40
|
|
PRINTI "The lamp is on."
|
|
JUMP ?CND34
|
|
?ELS40: PRINTI "The lamp is turned off."
|
|
?CND34: 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 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 RIDDLE-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTI "This is a room which is bare on all sides. There is an exit down in the northwest corner of the room. To the east is a great "
|
|
FSET? RIDDLE-DOOR,OPENBIT \?ELS10
|
|
PRINTI "open"
|
|
JUMP ?CND8
|
|
?ELS10: PRINTI "closed"
|
|
?CND8: PRINTI " door made of stone. Above the stone, the following words are written: ""No man shall pass this door without solving this riddle:
|
|
|
|
What is tall as a house,
|
|
round as a cup,
|
|
and all the king's horses
|
|
can't draw it up?""
|
|
"
|
|
RTRUE
|
|
?ELS5: EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?SAY,V?ANSWER \FALSE
|
|
FSET? RIDDLE-DOOR,OPENBIT /FALSE
|
|
GET P-LEXV,P-CONT
|
|
EQUAL? STACK,W?WELL /?THN31
|
|
ADD P-CONT,2
|
|
GET P-LEXV,STACK
|
|
EQUAL? STACK,W?WELL \?ELS30
|
|
?THN31: PRINTI "There is a deafening clap of thunder and the stone door quietly swings open to reveal a passageway beyond."
|
|
CRLF
|
|
CALL SCORE-UPD,5
|
|
FSET RIDDLE-DOOR,OPENBIT
|
|
JUMP ?CND26
|
|
?ELS30: PRINTI "A hollow laugh seems to come from the stone door."
|
|
CRLF
|
|
?CND26: SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RIDDLE-DOOR-FCN
|
|
EQUAL? PRSA,V?OPEN \?ELS5
|
|
FSET? RIDDLE-DOOR,OPENBIT \?ELS10
|
|
PRINTR "It is open!"
|
|
?ELS10: PRINTR "The door can only be opened by answering the riddle."
|
|
?ELS5: EQUAL? PRSA,V?CLOSE \FALSE
|
|
FSET? RIDDLE-DOOR,OPENBIT \?ELS23
|
|
PRINTR "Not a chance. The door weighs many tons."
|
|
?ELS23: PRINTR "It is closed!"
|
|
|
|
|
|
.FUNCT RIDDLE-PSEUDO
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "Use the ""Look"" command."
|
|
|
|
|
|
.FUNCT MAGIC-ACTOR,V
|
|
ZERO? SPELL? /FALSE
|
|
EQUAL? SPELL?,S-FALL \?ELS11
|
|
EQUAL? PRSA,V?CROSS,V?CLIMB-DOWN,V?CLIMB-UP /?THN17
|
|
EQUAL? PRSA,V?WALK \?ELS16
|
|
GETPT HERE,P?DOWN
|
|
ZERO? STACK /?ELS16
|
|
?THN17: GETPT HERE,P?GLOBAL >V
|
|
PTSIZE V
|
|
CALL ZMEMQB,BRIDGE,V,STACK
|
|
ZERO? STACK /?ELS25
|
|
CALL JIGS-UP,STR?252
|
|
RSTACK
|
|
?ELS25: RANDOM 100
|
|
GRTR? 25,STACK \?ELS27
|
|
CALL JIGS-UP,STR?253
|
|
RSTACK
|
|
?ELS27: PRINTR "You just tripped on an invisible cord, or perhaps your own feet. But this must be your lucky day, as you managed to regain your balance before what could have been a fatal fall."
|
|
?ELS16: EQUAL? PRSA,V?BOARD \FALSE
|
|
PRINTI "You get in the "
|
|
PRINTD PRSO
|
|
PRINTR " but you fall out again, almost as though an invisible hand had tipped it over."
|
|
?ELS11: EQUAL? SPELL?,S-FLOAT \?ELS37
|
|
EQUAL? PRSA,V?WAIT,V?DIAGNOSE /FALSE
|
|
EQUAL? PRSA,V?WALK \?ELS44
|
|
PRINTR "I suppose you plan to do that by flapping your arms?"
|
|
?ELS44: EQUAL? PRSA,V?DROP \?ELS48
|
|
MOVE PRSO,HERE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " drops to the ground."
|
|
?ELS48: EQUAL? PRSA,V?TAKE \FALSE
|
|
IN? PRSO,HERE \FALSE
|
|
PRINTR "You can't reach that! It's on the ground."
|
|
?ELS37: EQUAL? SPELL?,S-FREEZE \?ELS58
|
|
EQUAL? PRSA,V?WAIT,V?DIAGNOSE /FALSE
|
|
PRINTR "You are frozen solid. You might as well wait it out, because you can't do anything else in this state."
|
|
?ELS58: EQUAL? SPELL?,S-FENCE \?ELS69
|
|
EQUAL? PRSA,V?WALK \?ELS69
|
|
PRINTR "An invisible fence of magical force bars your way."
|
|
?ELS69: EQUAL? SPELL?,S-FIERCE \?ELS75
|
|
CALL INFESTED?,HERE >V
|
|
ZERO? V /?ELS75
|
|
EQUAL? PRSA,V?MUNG,V?ATTACK /FALSE
|
|
CALL FORCE-FIGHT,V
|
|
RTRUE
|
|
?ELS75: EQUAL? SPELL?,S-FERMENT \?ELS86
|
|
EQUAL? PRSA,V?WALK \?ELS86
|
|
IN? WINNER,HERE \?ELS86
|
|
PRINTI "Oops, you seem a little unsteady... I'm not sure you got where you intended going."
|
|
CRLF
|
|
CRLF
|
|
CALL RANDOM-WALK
|
|
RSTACK
|
|
?ELS86: EQUAL? SPELL?,S-FEAR \FALSE
|
|
CALL INFESTED?,HERE >V
|
|
ZERO? V /FALSE
|
|
PRINTI "All at once, you are overcome by fear! There's is a "
|
|
PRINTD V
|
|
PRINTI " in here! Maybe it's after you! "
|
|
LOC WINNER
|
|
FSET? STACK,VEHBIT \?ELS101
|
|
PRINTR "You huddle in the corner, terrified."
|
|
?ELS101: PRINTI "You run from the room screaming in terror!"
|
|
CRLF
|
|
CRLF
|
|
CALL RANDOM-WALK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RANDOM-WALK,P,TX,L,S,D=0
|
|
SET 'P,0
|
|
?PRG1: NEXTP HERE,P >P
|
|
LESS? P,LOW-DIRECTION \?ELS5
|
|
ZERO? D /TRUE
|
|
SET 'S,SPELL?
|
|
SET 'SPELL?,FALSE-VALUE
|
|
SET 'WINNER,ADVENTURER
|
|
MOVE WINNER,HERE
|
|
CALL DO-WALK,D
|
|
SET 'SPELL?,S
|
|
RTRUE
|
|
?ELS5: GETPT HERE,P >TX
|
|
PTSIZE TX >L
|
|
EQUAL? L,UEXIT /?THN15
|
|
EQUAL? L,CEXIT \?ELS18
|
|
GETB TX,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK \?THN15
|
|
?ELS18: EQUAL? L,DEXIT \?PRG1
|
|
GETB TX,DEXITOBJ
|
|
FSET? STACK,OPENBIT \?PRG1
|
|
?THN15: ZERO? D \?ELS23
|
|
SET 'D,P
|
|
JUMP ?PRG1
|
|
?ELS23: RANDOM 100
|
|
GRTR? 50,STACK \?PRG1
|
|
SET 'D,P
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT FORCE-FIGHT,V,W
|
|
CALL FIND-IN,ADVENTURER,WEAPONBIT >W
|
|
ZERO? W \?CND1
|
|
SET 'W,HANDS
|
|
?CND1: PRINTI "You are maddened by an overwhelming ferocity, and attack the "
|
|
PRINTD V
|
|
PRINTI " instead."
|
|
CRLF
|
|
CALL PERFORM,V?ATTACK,V,W
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DWINDOW-DESC
|
|
PRINTI "On the floor is a very small diamond shaped window which is "
|
|
ZERO? DIAMOND-SOLVE /?ELS5
|
|
PRINTI "glowing serenely"
|
|
JUMP ?CND3
|
|
?ELS5: GET DWDESCS,DIAMOND-COUNT
|
|
PRINT STACK
|
|
?CND3: PRINTR "."
|
|
|
|
|
|
.FUNCT DWINDOW-FCN
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
PRINTR "The window is an integral part of the floor."
|
|
?ELS5: EQUAL? PRSA,V?MUNG \?ELS9
|
|
PRINTR "The window is diamond-hard and cannot be broken."
|
|
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
|
CALL DWINDOW-DESC
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DIAMOND-MOTION,RARG,DC,DIR,RM
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTI "This is a room with oddly angled walls and passages in all directions. The walls are made of some glassy substance."
|
|
CRLF
|
|
EQUAL? HERE,DIAMOND-5 \?ELS10
|
|
PRINTI "A marble stairway leads upward."
|
|
ZERO? DIAMOND-SOLVE /?CND13
|
|
PRINTI " The floor has swung down at the end of the stairway to reveal a secret passage leading down into unrelieved darkness."
|
|
?CND13: CRLF
|
|
RTRUE
|
|
?ELS10: CALL DWINDOW-DESC
|
|
RTRUE
|
|
?ELS5: EQUAL? RARG,M-FLASH \?ELS22
|
|
CALL DWINDOW-DESC
|
|
RTRUE
|
|
?ELS22: EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?WALK \FALSE
|
|
ZERO? DIAMOND-SOLVE \FALSE
|
|
EQUAL? HERE,DIAMOND-2,DIAMOND-4 /?THN32
|
|
EQUAL? HERE,DIAMOND-6,DIAMOND-8 \?ELS31
|
|
?THN32: SUB DIAMOND-COUNT,1
|
|
GET DIDIRS,STACK >DIR
|
|
EQUAL? PRSO,DIR \?ELS36
|
|
INC 'DIAMOND-COUNT
|
|
GRTR? DIAMOND-COUNT,DIAMOND-BASE \?CND37
|
|
SET 'DIAMOND-BASE,DIAMOND-COUNT
|
|
SET 'DIAMOND-MOVES,0
|
|
?CND37: EQUAL? DIAMOND-COUNT,5 \?CND40
|
|
PRINTI "You hear a strange rusty squeal echoing in the distance."
|
|
CRLF
|
|
FCLEAR DIAMOND-5,TOUCHBIT
|
|
CALL SCORE-UPD,5
|
|
SET 'DIAMOND-SOLVE,TRUE-VALUE
|
|
?CND40: EQUAL? HERE,DIAMOND-2 \?ELS47
|
|
SET 'DIR,DIAMOND-4
|
|
JUMP ?CND45
|
|
?ELS47: EQUAL? HERE,DIAMOND-4 \?ELS49
|
|
SET 'DIR,DIAMOND-8
|
|
JUMP ?CND45
|
|
?ELS49: EQUAL? HERE,DIAMOND-8 \?ELS51
|
|
SET 'DIR,DIAMOND-6
|
|
JUMP ?CND45
|
|
?ELS51: EQUAL? HERE,DIAMOND-6 \?CND45
|
|
SET 'DIR,DIAMOND-2
|
|
?CND45: CALL GOTO,DIR
|
|
RTRUE
|
|
?ELS36: CALL DIAMOND-LOSS
|
|
RTRUE
|
|
?ELS31: EQUAL? HERE,DIAMOND-5 \?ELS57
|
|
EQUAL? PRSO,P?UP /FALSE
|
|
?ELS57: SET 'DIAMOND-COUNT,0
|
|
RANDOM 100
|
|
GRTR? 33,STACK \?ELS66
|
|
PRINTR "There is no way to go in that direction."
|
|
?ELS66: RANDOM 100
|
|
GRTR? 25,STACK \?ELS70
|
|
CALL DIAMOND-LOSS
|
|
RTRUE
|
|
?ELS70: SET 'DIAMOND-COUNT,1
|
|
GRTR? DIAMOND-COUNT,DIAMOND-BASE \?CND73
|
|
SET 'DIAMOND-BASE,DIAMOND-COUNT
|
|
SET 'DIAMOND-MOVES,0
|
|
?CND73: RANDOM 4
|
|
SUB STACK,1
|
|
GET DIAMOND-ROOMS,STACK >RM
|
|
FSET? BAT,INVISIBLE \?CND76
|
|
FCLEAR BAT,INVISIBLE
|
|
MOVE BAT,RM
|
|
?CND76: CALL GOTO,RM
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DIAMOND-LOSS
|
|
INC 'DIAMOND-MOVES
|
|
EQUAL? DIAMOND-MOVES,20 \?CND1
|
|
PRINTI "As you thrash about in the maze, the mirthful voice of the Wizard taunts you: ""Fool! You'll never get past "
|
|
GET BASES,DIAMOND-BASE
|
|
PRINT STACK
|
|
PRINTI " base at this rate!"""
|
|
CRLF
|
|
?CND1: RANDOM 5
|
|
ADD 3,STACK
|
|
GET DIAMOND-ROOMS,STACK
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CERBERUS-FCN
|
|
EQUAL? PRSA,V?RAISE,V?RUB,V?WAVE \?ELS5
|
|
EQUAL? PRSO,WAND \?ELS5
|
|
PRINTI "The dog looks puzzled."
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: ZERO? WAND-ON /?ELS11
|
|
EQUAL? PRSA,V?INCANT,V?SAY /FALSE
|
|
?ELS11: CALL HELLO?,CERBERUS
|
|
ZERO? STACK /?ELS15
|
|
ZERO? CERBERUS-LEASHED /?ELS20
|
|
PRINTR """Arf! Arf! Arf!"""
|
|
?ELS20: PRINTR """Grrrr!"""
|
|
?ELS15: EQUAL? PRSA,V?STAB,V?MUNG,V?ATTACK \?ELS29
|
|
ZERO? CERBERUS-LEASHED /?ELS34
|
|
REMOVE CERBERUS
|
|
PRINTR "With a quiet bark of disappointment, the creature expires. Its six eyes look at you reproachfully. As it dies, it collapses into a small pile of dust which blows away into nothing."
|
|
?ELS34: RANDOM 100
|
|
GRTR? 50,STACK \?ELS39
|
|
CALL JIGS-UP,STR?263
|
|
RSTACK
|
|
?ELS39: PRINTR "The maddened dog-thing snaps viciously at you."
|
|
?ELS29: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS45
|
|
EQUAL? PRSO,COLLAR \?ELS45
|
|
MOVE COLLAR,CERBERUS
|
|
FSET COLLAR,NDESCBIT
|
|
FSET COLLAR,TRYTAKEBIT
|
|
PUTP CERBERUS,P?LDESC,STR?264
|
|
SET 'CERBERUS-LEASHED,TRUE-VALUE
|
|
PRINTR "The creature whines happily, then the center head licks your face (which is roughly like experiencing a sandpaper washcloth). The other two heads look about, as though the monster felt a sudden need to find a pair of slippers somewhere. Its huge tail wags enthusiastically, knocking small rocks around and almost blowing you over from the breeze it creates."
|
|
?ELS45: EQUAL? PRSA,V?ENCHANT \?ELS51
|
|
EQUAL? SPELL-USED,W?FLOAT \?ELS56
|
|
SET 'SPELL-HANDLED?,TRUE-VALUE
|
|
PRINTR "The huge dog rises about an inch off the ground, for a moment."
|
|
?ELS56: EQUAL? SPELL-USED,W?FIERCE \?ELS60
|
|
SET 'SPELL-HANDLED?,TRUE-VALUE
|
|
CALL JIGS-UP,STR?265
|
|
RSTACK
|
|
?ELS60: EQUAL? SPELL-USED,W?FEEBLE \FALSE
|
|
PRINTR "What an effect! He now has the strength of just one elephant, rather than ten!"
|
|
?ELS51: ZERO? CERBERUS-LEASHED \?ELS66
|
|
PRINTR "The three-headed dog snaps at you viciously!"
|
|
?ELS66: ZERO? CERBERUS-LEASHED /FALSE
|
|
EQUAL? PRSA,V?RUB \FALSE
|
|
PRINTR "The dog is now insanely happy, slobbering all over the place and whining with uncontained doggish joy."
|
|
|
|
|
|
.FUNCT COLLAR-FCN
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
ZERO? CERBERUS-LEASHED /?ELS5
|
|
CALL JIGS-UP,STR?266
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?ENCHANT \FALSE
|
|
EQUAL? SPELL-USED,W?FLOAT \FALSE
|
|
CALL PERFORM,V?ENCHANT,CERBERUS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLACIER-FCN
|
|
EQUAL? PRSA,V?MELT \FALSE
|
|
PRINTR "This is a big glacier; you'll need a lot of heat."
|
|
|
|
|
|
.FUNCT GLACIER-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "This is a large hall of ancient lava, since worn smooth by the movement of a glacier. A large passage exits to the east and an upward lava tube is at the top of a jumble of fallen rocks."
|
|
CRLF
|
|
ZERO? ICE-MELTED /TRUE
|
|
PRINTR "A damp and scorched passage leads west. It is still partly full of steam."
|
|
|
|
|
|
.FUNCT DRAGON-FCN
|
|
CALL QUEUE,I-DRAGON,-1
|
|
PUT STACK,0,1
|
|
CALL HELLO?,DRAGON
|
|
ZERO? STACK /?ELS5
|
|
PRINTI "The dragon looks amused. He speaks in a voice so deep you feel it rather than hear it, but the tongue is unknown to you. You find yourself almost hypnotized."
|
|
CRLF
|
|
ADD DRAGON-ANGER,2 >DRAGON-ANGER
|
|
RETURN DRAGON-ANGER
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
|
|
PRINTI "He turns and looks back at you, his cat's eyes yellow in the gloom. You start to feel weak, and quickly turn away."
|
|
CRLF
|
|
INC 'DRAGON-ANGER
|
|
RETURN DRAGON-ANGER
|
|
?ELS9: EQUAL? PRSA,V?KICK,V?MUNG,V?ATTACK /?THN14
|
|
EQUAL? PRSA,V?LAMP-ON \?ELS13
|
|
?THN14: EQUAL? PRSA,V?LAMP-ON /?THN19
|
|
EQUAL? PRSA,V?ATTACK \?ELS18
|
|
ZERO? PRSI \?ELS18
|
|
?THN19: PRINTI "With your bare hands? I doubt the dragon even noticed."
|
|
CRLF
|
|
JUMP ?CND16
|
|
?ELS18: CALL RANDOM-ELEMENT,DRAGON-ATTACKS
|
|
PRINT STACK
|
|
CRLF
|
|
?CND16: ADD DRAGON-ANGER,4 >DRAGON-ANGER
|
|
RETURN DRAGON-ANGER
|
|
?ELS13: EQUAL? PRSA,V?GIVE \?ELS30
|
|
EQUAL? PRSI,DRAGON \?ELS30
|
|
INC 'DRAGON-ANGER
|
|
GETPT PRSO,P?VALUE
|
|
ZERO? STACK /?ELS37
|
|
MOVE PRSO,CHEST
|
|
PRINTR "The dragon is pleased by your gift, excuses himself for a moment, and returns without it."
|
|
?ELS37: CALL BOMB?,PRSO
|
|
ZERO? STACK /?ELS41
|
|
ADD DRAGON-ANGER,2 >DRAGON-ANGER
|
|
REMOVE BRICK
|
|
PRINTR "The dragon snakes his long red tongue around the bomb and politely swallows it. A few moments later he belches and smoke curls out of his nostrils."
|
|
?ELS41: PRINTR "The dragon refuses your gift."
|
|
?ELS30: EQUAL? PRSA,V?WALK \FALSE
|
|
EQUAL? HERE,DRAGON-ROOM \FALSE
|
|
EQUAL? PRSO,P?NORTH \FALSE
|
|
ADD DRAGON-ANGER,3 >DRAGON-ANGER
|
|
PRINTR "The dragon puts out a claw, grins (all of his sword-sharp teeth glinting in the light), and blocks your way."
|
|
|
|
|
|
.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 FIND-TARGET,TARGET,P,TX,L,ROOM
|
|
IN? TARGET,HERE \?ELS5
|
|
RETURN HERE
|
|
?ELS5: SET 'P,0
|
|
?PRG8: NEXTP HERE,P >P
|
|
ZERO? P /FALSE
|
|
LESS? P,LOW-DIRECTION /?PRG8
|
|
GETPT HERE,P >TX
|
|
PTSIZE TX >L
|
|
EQUAL? L,UEXIT,CEXIT,DEXIT \?PRG8
|
|
GETB TX,0 >ROOM
|
|
IN? TARGET,ROOM \?PRG8
|
|
RETURN ROOM
|
|
|
|
|
|
.FUNCT I-DRAGON,ROOM
|
|
GRTR? DRAGON-ANGER,6 \?ELS3
|
|
PRINTI "The dragon tires of this game. With an almost bored yawn, he opens his mouth and "
|
|
EQUAL? SPELL?,S-FIREPROOF \?ELS8
|
|
PRINTI "blasts you with a great gout of fire, but it washes over you harmlessly."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS8: CALL DRAGON-LEAVES
|
|
CALL JIGS-UP,STR?272
|
|
JUMP ?CND1
|
|
?ELS3: IN? WINNER,DRAGON-ROOM \?ELS14
|
|
IN? DRAGON,DRAGON-ROOM /?ELS14
|
|
MOVE DRAGON,DRAGON-ROOM
|
|
PRINTI "The dragon doubles back and charges into the room, maddened by your attempt to sneak past him. His eyes glow with a white heat of anger."
|
|
CRLF
|
|
EQUAL? SPELL?,S-FIREPROOF \?ELS21
|
|
CALL JIGS-UP,STR?273
|
|
JUMP ?CND1
|
|
?ELS21: CALL JIGS-UP,STR?274
|
|
JUMP ?CND1
|
|
?ELS14: GRTR? DRAGON-ANGER,0 /?ELS25
|
|
RANDOM 100
|
|
GRTR? 50,STACK \?ELS28
|
|
IN? DRAGON,HERE \?ELS28
|
|
PRINTI "The dragon looks bored."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS28: CALL DRAGON-LEAVES
|
|
EQUAL? HERE,GLACIER-ROOM \?ELS37
|
|
PRINTI "The dragon is no longer around. He must have become bored with you."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS37: EQUAL? HERE,OLD-HERE \?CND1
|
|
PRINTI "The dragon seems to have lost interest in you."
|
|
EQUAL? OLD-HERE,DRAGON-ROOM \?ELS46
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS46: PRINTI " He wanders off."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS25: CALL FIND-TARGET,WINNER >ROOM
|
|
ZERO? ROOM \?ELS55
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?CND53
|
|
CALL DRAGON-LEAVES
|
|
JUMP ?CND53
|
|
?ELS55: EQUAL? ROOM,CAROUSEL-ROOM,TINY-ROOM /?THN61
|
|
EQUAL? ROOM,RAVINE-LEDGE,FRESCO-ROOM \?ELS60
|
|
?THN61: RANDOM 100
|
|
GRTR? 25,STACK \?CND63
|
|
CALL DRAGON-LEAVES
|
|
?CND63: PRINTI "The dragon will follow no further."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS60: EQUAL? ROOM,GLACIER-ROOM \?ELS69
|
|
CRLF
|
|
PRINTI "As the dragon enters, he sees his reflection on the icy surface of the glacier at its western end. He becomes enraged: There is another dragon here, behind that glass, he thinks! Dragons are smart, but sometimes naive, and this one has never seen ice before. He rears up to his full height to challenge this intruder into his territory. He roars a challenge! The intruder responds! The dragon takes a deep breath, and out of his mouth pours a massive gout of flame. It washes over the ice, which melts rapidly, sending out torrents of water and a huge cloud of steam! You manage to clamber up to a small shelf, but the dragon is terrified! A huge splash goes down his throat! There is a muffled explosion and the dragon, a puzzled expression on his face, dies. He is carried away by the water.
|
|
|
|
When the flood recedes you climb gingerly down. While no trace of the dragon can be found, the melting of the ice has revealed a passage leading west."
|
|
CRLF
|
|
REMOVE DRAGON
|
|
REMOVE ICE
|
|
MOVE DEAD-DRAGON,DEEP-FORD
|
|
CALL INT,I-DRAGON
|
|
PUT STACK,0,0
|
|
CALL SCORE-UPD,5
|
|
SET 'ICE-MELTED,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?ELS69: EQUAL? ROOM,OLD-HERE /?ELS76
|
|
MOVE DRAGON,ROOM
|
|
PRINTI "The dragon follows you, out of mingled curiosity and anger."
|
|
CRLF
|
|
JUMP ?CND74
|
|
?ELS76: PRINTI "The dragon continues to watch you carefully."
|
|
CRLF
|
|
?CND74: GRTR? DRAGON-ANGER,0 /?CND53
|
|
SET 'DRAGON-ANGER,0
|
|
CALL INT,I-DRAGON
|
|
PUT STACK,0,0
|
|
?CND53:
|
|
?CND1: LOC DRAGON >OLD-HERE
|
|
SUB DRAGON-ANGER,2 >DRAGON-ANGER
|
|
LESS? DRAGON-ANGER,0 \TRUE
|
|
SET 'DRAGON-ANGER,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DRAGON-LEAVES
|
|
LOC DEAD-DRAGON
|
|
ZERO? STACK \FALSE
|
|
MOVE DRAGON,DRAGON-ROOM
|
|
SET 'DRAGON-ANGER,0
|
|
CALL INT,I-DRAGON
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-GARDEN
|
|
EQUAL? HERE,GARDEN-NORTH,GAZEBO-ROOM /?THN6
|
|
EQUAL? HERE,TOPIARY-ROOM,FORMAL-GARDEN \?ELS5
|
|
?THN6: IN? UNICORN,GARDEN-NORTH \?ELS12
|
|
RANDOM 100
|
|
GRTR? 33,STACK \?ELS12
|
|
REMOVE UNICORN
|
|
EQUAL? HERE,TOPIARY-ROOM /FALSE
|
|
PRINTR "The unicorn bounds lightly away."
|
|
?ELS12: IN? PRINCESS,DRAGON-LAIR \?ELS23
|
|
IN? UNICORN,GARDEN-NORTH /?ELS23
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?ELS23
|
|
EQUAL? HERE,TOPIARY-ROOM /?ELS23
|
|
ZERO? UNICORN-FRIGHTENED /?CND26
|
|
SET 'UNICORN-FRIGHTENED,FALSE-VALUE
|
|
RFALSE
|
|
?CND26: MOVE UNICORN,GARDEN-NORTH
|
|
EQUAL? HERE,GARDEN-NORTH \?ELS34
|
|
CALL RANDOM-ELEMENT,UNICORN-MSGS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS34: PRINTR "A unicorn is peacefully cropping grass at the north end of the garden. There is something hanging around its neck."
|
|
?ELS23: EQUAL? HERE,TOPIARY-ROOM \FALSE
|
|
ZERO? TOPIARY-MOVED \?ELS47
|
|
RANDOM 100
|
|
GRTR? 12,STACK \?ELS47
|
|
SET 'TOPIARY-MOVED,TRUE-VALUE
|
|
PRINTR "You look around, and strangely, the topiary animals seem to have changed position slightly."
|
|
?ELS47: ZERO? TOPIARY-MOVED /?ELS53
|
|
ZERO? TOPIARY-NEAR \?ELS53
|
|
RANDOM 100
|
|
GRTR? 8,STACK \?ELS53
|
|
SET 'TOPIARY-NEAR,TRUE-VALUE
|
|
PRINTR "The topiary animals seem to close in on you. You turn and they are very close. They seem to be leering at you."
|
|
?ELS53: ZERO? TOPIARY-NEAR /FALSE
|
|
RANDOM 100
|
|
GRTR? 4,STACK \FALSE
|
|
SET 'TOPIARY-MOVED,FALSE-VALUE
|
|
SET 'TOPIARY-NEAR,FALSE-VALUE
|
|
CALL JIGS-UP,STR?275
|
|
RSTACK
|
|
?ELS5: REMOVE UNICORN
|
|
CALL INT,I-GARDEN
|
|
PUT STACK,0,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GARDEN-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-ENTER \FALSE
|
|
CALL QUEUE,I-GARDEN,-1
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-UNICORN-FCN
|
|
IN? UNICORN,GARDEN-NORTH \?ELS5
|
|
PRINTR "The unicorn is way up at the north end of the garden."
|
|
?ELS5: EQUAL? PRSA,V?FOLLOW,V?FIND \?ELS9
|
|
FSET? UNICORN,TOUCHBIT \?ELS14
|
|
PRINTR "I don't know where it is now."
|
|
?ELS14: PRINTR "The unicorn is a mythical beast."
|
|
?ELS9: PRINTR "Unicorn? What unicorn?"
|
|
|
|
|
|
.FUNCT UNICORN-FCN
|
|
CALL HELLO?,UNICORN
|
|
ZERO? STACK /?ELS5
|
|
PRINTR "The unicorn listens distractedly, then goes back to cropping grass."
|
|
?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS9
|
|
PRINTR "The unicorn shies away as you approach."
|
|
?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13
|
|
EQUAL? PRSO,UNICORN \?ELS13
|
|
PRINTR "The unicorn shies away as you approach for a closer look, but you do notice a tiny gold key hanging from a red satin ribbon looped around the animal's neck."
|
|
?ELS13: EQUAL? PRSA,V?EXAMINE \?ELS19
|
|
PRINTR "The unicorn shies away as you approach."
|
|
?ELS19: EQUAL? PRSA,V?RUB,V?PUT,V?TAKE /?THN24
|
|
EQUAL? PRSA,V?ATTACK,V?MUNG \FALSE
|
|
?THN24: REMOVE UNICORN
|
|
SET 'UNICORN-FRIGHTENED,TRUE-VALUE
|
|
PRINTR "The unicorn, unsurprised by this evidence that you are indeed the uncouth sort of vagabond it suspected you were, melts into the hedges and is gone."
|
|
|
|
|
|
.FUNCT GAZEBO-FCN
|
|
EQUAL? HERE,GARDEN-NORTH \?ELS5
|
|
EQUAL? PRSA,V?THROUGH \?ELS5
|
|
CALL DO-WALK,P?IN
|
|
RTRUE
|
|
?ELS5: EQUAL? HERE,GAZEBO-ROOM \?ELS9
|
|
EQUAL? PRSA,V?THROUGH \?ELS9
|
|
PRINTR "You're already in it."
|
|
?ELS9: EQUAL? HERE,GAZEBO-ROOM \FALSE
|
|
EQUAL? PRSA,V?EXIT,V?LEAVE \FALSE
|
|
CALL DO-WALK,P?OUT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CHEST-FCN
|
|
EQUAL? PRSA,V?OPEN \FALSE
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?ELS8
|
|
CALL V-OPEN
|
|
IN? PRINCESS,HERE \?CND6
|
|
ZERO? PRINCESS-AWAKE \?CND6
|
|
PRINTI "The opening of the squeaky lid startles the young woman."
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "The hinges are very rusty, but they seem to be starting to give. You can probably open it if you try again. There is something bumping around inside."
|
|
IN? PRINCESS,HERE \?CND20
|
|
ZERO? PRINCESS-AWAKE \?CND20
|
|
PRINTI " All this rummaging around has startled the young woman."
|
|
?CND20: CRLF
|
|
?CND6: PUTP CHEST,P?ACTION,0
|
|
IN? PRINCESS,HERE \TRUE
|
|
ZERO? PRINCESS-AWAKE \TRUE
|
|
CALL PERFORM,V?ALARM,PRINCESS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRINCESS-FCN,DEM
|
|
CALL INT,I-PRINCESS >DEM
|
|
EQUAL? PRSA,V?FOLLOW \?ELS5
|
|
IN? PRINCESS,HERE \?ELS8
|
|
PRINTR "You can't follow her until she leaves..."
|
|
?ELS8: ZERO? PRFOLLOW /?ELS12
|
|
CALL DO-WALK,PRFOLLOW
|
|
RTRUE
|
|
?ELS12: PRINTR "I seem to have lost track of her."
|
|
?ELS5: IN? PRINCESS,HERE /?ELS19
|
|
PRINTR "There is no princess here."
|
|
?ELS19: EQUAL? PRSA,V?RAPE,V?MUNG,V?ATTACK \?ELS23
|
|
REMOVE PRINCESS
|
|
PRINTI "The princess screams as you approach. ""Won't someone deliver me from this awful fate?"" she cries. "
|
|
IN? WIZARD,HERE \?ELS28
|
|
PRINTI "Shocked, the Wizard of Frobozz turns toward you."
|
|
JUMP ?CND26
|
|
?ELS28: PRINTI "Just in time, the Wizard of Frobozz appears, seeming to unroll himself out of nothing like a window shade."
|
|
?CND26: PRINTI " ""Fry!"" he intones, and a massive bolt of lightning reduces you to a pile of smoking ashes. (Serves you right, too, if you ask me.)"
|
|
CALL JIGS-UP
|
|
RSTACK
|
|
?ELS23: CALL HELLO?,PRINCESS
|
|
ZERO? STACK \?THN39
|
|
EQUAL? PRSA,V?EXAMINE,V?KISS,V?ALARM /?THN39
|
|
EQUAL? PRSA,V?RUB \?ELS38
|
|
?THN39: IN? PRINCESS,DRAGON-LAIR \?ELS45
|
|
GET DEM,C-ENABLED?
|
|
ZERO? STACK \?ELS45
|
|
PUTP PRINCESS,P?LDESC,STR?280
|
|
CALL QUEUE,I-PRINCESS,2
|
|
PUT STACK,0,1
|
|
SET 'PRINCESS-AWAKE,TRUE-VALUE
|
|
PRINTR "The princess (for she is obviously one) shakes herself awake, then notices you for the first time. She smiles. ""Thank you for rescuing me from that horrid worm,"" she says. ""I must depart. My parents will be worried about me."" With that, she arises, looking purposefully out of the lair."
|
|
?ELS45: PRINTI "The princess ignores you. She looks about the room, but her eyes fix on the "
|
|
EQUAL? HERE,GAZEBO-ROOM \?ELS56
|
|
PRINTI "garden outside"
|
|
JUMP ?CND54
|
|
?ELS56: EQUAL? HERE,GARDEN-NORTH \?ELS60
|
|
PRINTI "gazebo"
|
|
JUMP ?CND54
|
|
?ELS60: EQUAL? HERE,RAVINE-LEDGE \?ELS64
|
|
PRINTI "ledge"
|
|
JUMP ?CND54
|
|
?ELS64: MUL PRCOUNT,4
|
|
GET PRDIRS,STACK
|
|
PRINT STACK
|
|
?CND54: PRINTR "."
|
|
?ELS38: ZERO? PRINCESS-AWAKE \FALSE
|
|
PRINTR "She's in a trance!"
|
|
|
|
|
|
.FUNCT I-PRINCESS,DEM,OLDP,PC
|
|
CALL INT,I-PRINCESS >DEM
|
|
LOC PRINCESS >OLDP
|
|
MUL PRCOUNT,4 >PC
|
|
ADD PC,1
|
|
GET PRDIRS,STACK
|
|
MOVE PRINCESS,STACK
|
|
SET 'PRFOLLOW,FALSE-VALUE
|
|
IN? PRINCESS,STREAM-PATH \?ELS3
|
|
IN? WINNER,MARBLE-HALL \?ELS3
|
|
PRINTI "The princess presses a loose piece of marble in the wall and a large section of the wall slides away, revealing a passage to the east. She enters it."
|
|
CRLF
|
|
IN? WINNER,OLDP \?CND8
|
|
ADD PC,3
|
|
GET PRDIRS,STACK >PRFOLLOW
|
|
?CND8: SET 'SECRET-DOOR,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?ELS3: IN? PRINCESS,STREAM-PATH \?ELS12
|
|
IN? WINNER,STREAM-PATH \?ELS12
|
|
SET 'SECRET-DOOR,TRUE-VALUE
|
|
PRINTI "The princess appears from behind some rocks, as though she had walked through a wall."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS12: IN? WINNER,OLDP \?ELS18
|
|
ADD PC,3
|
|
GET PRDIRS,STACK >PRFOLLOW
|
|
EQUAL? OLDP,GARDEN-NORTH \?ELS21
|
|
PRINTI "The princess enters the gazebo"
|
|
FSET? GAZEBO-ROOM,RMUNGBIT \?CND24
|
|
PRINTI ", although you would never get past the debris. She must be magically protected."
|
|
?CND24: PRINTI "."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS21: EQUAL? OLDP,RAVINE-LEDGE \?ELS32
|
|
PRINTI "The princess climbs daintily down the rock face."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS32: PRINTI "The princess walks "
|
|
GET PRDIRS,PC
|
|
PRINT STACK
|
|
PRINTI ". She glances back at you as she goes."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS18: IN? PRINCESS,HERE \?CND1
|
|
EQUAL? HERE,GAZEBO-ROOM \?ELS47
|
|
PRINTI "The princess joins you in the gazebo."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS47: EQUAL? HERE,DEEP-FORD \?ELS51
|
|
PRINTI "The princess climbs down the rock wall onto the beach."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS51: PRINTI "The princess enters from the "
|
|
ADD 2,PC
|
|
GET PRDIRS,STACK
|
|
PRINT STACK
|
|
PRINTI ". She seems surprised to see you."
|
|
CRLF
|
|
?CND1: IN? PRINCESS,GAZEBO-ROOM \?ELS64
|
|
PUT DEM,0,0
|
|
CALL QUEUE,I-UNICORN,6
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?ELS64: INC 'PRCOUNT
|
|
RANDOM 100
|
|
GRTR? 75,STACK \?ELS71
|
|
PUSH 1
|
|
JUMP ?CND67
|
|
?ELS71: PUSH 2
|
|
?CND67: CALL QUEUE,I-PRINCESS,STACK
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-UNICORN
|
|
EQUAL? HERE,GAZEBO-ROOM,GARDEN-NORTH \?ELS5
|
|
MOVE ROSE,WINNER
|
|
FCLEAR GOLD-KEY,NDESCBIT
|
|
MOVE GOLD-KEY,WINNER
|
|
CALL SCORE-OBJ,GOLD-KEY
|
|
PUTP GOLD-KEY,P?ACTION,0
|
|
PRINTI "Shyly, a unicorn peeks out of the hedges. It notices the princess and seems captivated. It approaches her and bows its head as though curtseying to her. Around its neck is a red satin ribbon on which is strung a delicate gold key. The princess takes the ribbon and uses it to tie up her hair. She looks at you and then, smiling, hands you the key and a fresh rose which she plucks from the arbor. ""You may have use of such a thing,"" she says. ""It is the least I can do for one who rescued me from a fate I dare not contemplate."" With that, she mounts the unicorn (side-saddle, of course) and rides off into the gloom."
|
|
CRLF
|
|
REMOVE PRINCESS
|
|
RTRUE
|
|
?ELS5: REMOVE PRINCESS
|
|
MOVE ROSE,GAZEBO-ROOM
|
|
RFALSE
|
|
|
|
|
|
.FUNCT MENHIR-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-FLASH \?ELS5
|
|
ZERO? MENHIR-POSITION /?ELS5
|
|
CALL DESCRIBE-MENHIR
|
|
RSTACK
|
|
?ELS5: EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "This is a large room which was evidently used once as a quarry. Many large limestone chunks lie helter-skelter around the room. Some are rough-hewn and unworked, others smooth and well-finished. One side of the room appears to have been used to quarry building blocks, the other to produce menhirs (standing stones). Obvious passages lead north and south."
|
|
CRLF
|
|
IN? MENHIR,LOCAL-GLOBALS \TRUE
|
|
CALL DESCRIBE-MENHIR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBE-MENHIR
|
|
EQUAL? HERE,MENHIR-ROOM \?ELS5
|
|
EQUAL? MENHIR-POSITION,FALSE-VALUE \?ELS8
|
|
PRINTI "One particularly large menhir, at least twenty feet tall and eight feet thick, is leaning against the wall blocking a dark opening leading southwest. On this side of the menhir is carved an ornate letter ""F""."
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS8: EQUAL? MENHIR-POSITION,1 \?ELS12
|
|
PRINTI "There is a huge menhir lying on the floor near a southwest passage."
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS12: EQUAL? MENHIR-POSITION,2 \?ELS16
|
|
PRINTI "A dark opening leads southwest."
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS16: EQUAL? MENHIR-POSITION,3 \?ELS20
|
|
PRINTI "There is a huge menhir here."
|
|
CRLF
|
|
JUMP ?CND6
|
|
?ELS20: PRINTI "There is a huge menhir floating like a feather in midair here. A passage to the southwest opens beneath it."
|
|
CRLF
|
|
?CND6: EQUAL? HERE,MUNGED-ROOM \TRUE
|
|
PRINTR "The explosion appears to have had no effect on the menhir."
|
|
?ELS5: PRINTR "A dark opening leads southwest."
|
|
|
|
|
|
.FUNCT MENHIR-FCN
|
|
EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-UNDER \?ELS5
|
|
ZERO? MENHIR-POSITION /?ELS10
|
|
PRINTR "Behind the menhir is some air and then a wall."
|
|
?ELS10: PRINTR "The gap between the menhir and the wall is very narrow, but it is clear that there is a sizeable room in there. Your light only reveals a part of the far wall."
|
|
?ELS5: EQUAL? PRSA,V?TURN,V?MOVE,V?TAKE \?ELS19
|
|
PRINTR "The menhir weighs many tons and is eight feet wide. You can't even get a grip on it, much less move it."
|
|
?ELS19: EQUAL? PRSA,V?READ \?ELS23
|
|
PRINTR """F"""
|
|
?ELS23: EQUAL? PRSA,V?EXAMINE \?ELS27
|
|
PRINTR "It is nicely finished, and the letter ""F"" on it is particularly well carved."
|
|
?ELS27: EQUAL? PRSA,V?ENCHANT \?ELS31
|
|
EQUAL? SPELL-USED,W?FLOAT \?ELS31
|
|
PRINTI "The menhir floats majestically into the air, rising about ten feet. The passage beneath it beckons invitingly."
|
|
CRLF
|
|
SET 'MENHIR-POSITION,3
|
|
RETURN MENHIR-POSITION
|
|
?ELS31: EQUAL? PRSA,V?DISENCHANT \FALSE
|
|
EQUAL? SPELL-USED,W?FLOAT \FALSE
|
|
SET 'MENHIR-POSITION,FALSE-VALUE
|
|
EQUAL? HERE,MENHIR-ROOM,KENNEL \FALSE
|
|
PRINTR "The menhir sinks to the ground."
|
|
|
|
|
|
.FUNCT DOOR-KEEPER-FCN
|
|
EQUAL? PRSA,V?ALARM \?ELS5
|
|
ZERO? GUARDIAN-FED /?ELS5
|
|
PRINTR "Try as you may, you can't wake it."
|
|
?ELS5: EQUAL? PRSA,V?GIVE \?ELS11
|
|
EQUAL? PRSI,DOOR-KEEPER \?ELS11
|
|
ZERO? GUARDIAN-FED /?ELS18
|
|
PRINTR "He is asleep, at least for the moment."
|
|
?ELS18: EQUAL? PRSO,CANDY \?ELS23
|
|
SET 'GUARDIAN-FED,TRUE-VALUE
|
|
REMOVE CANDY
|
|
PRINTR "The guardian greedily wolfs down the candy, including the package. (It seemed to enjoy the grasshoppers particularly.) It then becomes quiet and its eyes close. (Lizards are known to sleep a long time while digesting their meals.)"
|
|
?ELS23: EQUAL? PRSO,FLASK \?ELS27
|
|
PRINTR "The lizard sniffs it experimentally, then looks at you angrily, hissing and snapping."
|
|
?ELS27: CALL BOMB?,PRSO
|
|
ZERO? STACK /?ELS31
|
|
REMOVE PRSO
|
|
PRINTR "The guardian greedily wolfs it down. After a while, you hear a very small pop and the guardian's eyes bulge out. It hisses nastily at you."
|
|
?ELS31: EQUAL? PRSO,PALANTIR-1,PALANTIR-2,PALANTIR-3 \?ELS35
|
|
PRINTI "The guardian greedily gobbles the sphere, but finds it unchewable. He then tries repeatedly to swallow it whole, with disappointing results. Finally, he spits it on the ground."
|
|
CRLF
|
|
MOVE PRSO,HERE
|
|
RTRUE
|
|
?ELS35: REMOVE PRSO
|
|
PRINTI "The lizard wolfs down the "
|
|
PRINTD PRSO
|
|
PRINTR ", crunching greedily."
|
|
?ELS11: EQUAL? PRSA,V?MUNG,V?ATTACK \FALSE
|
|
PRINTR "The guardian seems impervious to your attack. In fact, your blows don't even seem to be landing."
|
|
|
|
|
|
.FUNCT WIZ-DOOR-FCN
|
|
ZERO? GUARDIAN-FED \?ELS5
|
|
EQUAL? PRSA,V?OPEN \?ELS10
|
|
PRINTR "The lizard comes to life and snaps at you as you reach for the handle."
|
|
?ELS10: EQUAL? PRSA,V?UNLOCK \FALSE
|
|
PRINTI "The lizard door keeper comes awake and bites at your hand. You jerk away just in time."
|
|
EQUAL? PRSI,GOLD-KEY \?ELS21
|
|
RANDOM 100
|
|
GRTR? 5,STACK \?ELS21
|
|
REMOVE GOLD-KEY
|
|
PRINTR " The guardian does get the key, though. It grins maniacally."
|
|
?ELS21: RANDOM 100
|
|
GRTR? 20,STACK \?ELS27
|
|
MOVE GOLD-KEY,HERE
|
|
PRINTR " You drop the key, though."
|
|
?ELS27: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?UNLOCK \?ELS33
|
|
ZERO? WIZ-DOOR-FLAG /?ELS38
|
|
PRINTR "It is already!"
|
|
?ELS38: EQUAL? PRSI,GOLD-KEY \?ELS43
|
|
SET 'WIZ-DOOR-FLAG,TRUE-VALUE
|
|
PRINTR "The key turns and the bolt clicks. The door is unlocked."
|
|
?ELS43: SET 'WIZ-DOOR-FLAG,FALSE-VALUE
|
|
PRINTR "That won't unlock it."
|
|
?ELS33: EQUAL? PRSA,V?LOCK \?ELS51
|
|
ZERO? WIZ-DOOR-FLAG \?ELS56
|
|
PRINTR "It is locked already."
|
|
?ELS56: EQUAL? PRSI,GOLD-KEY \?ELS60
|
|
PRINTI "The door is now locked."
|
|
CRLF
|
|
SET 'WIZ-DOOR-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
?ELS60: PRINTR "That won't lock it."
|
|
?ELS51: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
ZERO? WIZ-DOOR-FLAG /?ELS73
|
|
CALL OPEN-CLOSE,PRSO,STR?287,STR?288
|
|
RSTACK
|
|
?ELS73: EQUAL? PRSA,V?OPEN \FALSE
|
|
PRINTR "The door is locked!"
|
|
|
|
|
|
.FUNCT GUARDIAN-ROOM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "This room is cobwebby and musty, but tracks in the dust show that it has seen visitors recently. At the south end of the room is a stained and battered (but very strong-looking) door. To the north, a corridor exits."
|
|
CRLF
|
|
FSET? WIZ-DOOR,OPENBIT \?CND8
|
|
PRINTI "The door is open."
|
|
CRLF
|
|
?CND8: ZERO? GUARDIAN-FED \?ELS17
|
|
PRINTI "Imbedded in the door is a nasty-looking lizard head, with sharp teeth and beady eyes. "
|
|
IN? CANDY,WINNER \?ELS24
|
|
PRINTR "The lizard is sniffing at you."
|
|
?ELS24: PRINTR "The eyes move to watch you approach."
|
|
?ELS17: PRINTR "A sleepy-looking lizard head is mounted on the door."
|
|
|
|
|
|
.FUNCT WORKSHOP-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are standing in the entry hall of the Wizard's Workshop. Dark corridors lead west and south from here. The corridor to the west smells slightly of incense or candle smoke."
|
|
FSET? WIZ-DOOR,OPENBIT \?CND8
|
|
PRINTI " The workshop door is open."
|
|
?CND8: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ARCANA-PSEUDO
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
PRINTR "The stuff on the bench appears to be so much junk, and you decide that it would only get in your way if you took it."
|
|
|
|
|
|
.FUNCT TROPHY-PSEUDO
|
|
EQUAL? PRSA,V?READ /FALSE
|
|
EQUAL? PRSA,V?RUB,V?TAKE \FALSE
|
|
PRINTR "As your fingers near it, you get a nasty shock (but fortunately not a fatal one)."
|
|
|
|
|
|
.FUNCT STAND-FCN
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is firmly attached to the bench."
|
|
?ELS5: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
|
|
EQUAL? PRSO,PALANTIR-1,PALANTIR-2,PALANTIR-3 \FALSE
|
|
EQUAL? PRSI,STAND-1,STAND-2,STAND-3 \FALSE
|
|
CALL V-PUT
|
|
IN? PALANTIR-1,STAND-1 \TRUE
|
|
IN? PALANTIR-2,STAND-2 \TRUE
|
|
IN? PALANTIR-3,STAND-3 \TRUE
|
|
REMOVE PALANTIR-1
|
|
REMOVE PALANTIR-2
|
|
REMOVE PALANTIR-3
|
|
MOVE STAND-4,WORKBENCH
|
|
PRINTI "As you place the "
|
|
PRINTD PRSO
|
|
PRINTI " in the "
|
|
PRINTD PRSI
|
|
PRINTI ", a low humming noise begins, and you can feel the hairs on the back of your neck begin to stand up. The three spheres begin to vibrate, faster and faster, as the noise becomes higher and higher pitched. Three puffs of smoke, one red, one blue, one white, rise up from empty stands. The spheres are gone! But in the center of the triangle formed by the stands is now a black stand of obsidian in which rests a strange black sphere."
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IN-AQUARIUM-FCN,RARG
|
|
EQUAL? RARG,M-LOOK \?ELS5
|
|
PRINTI "There is a sandy floor here, and your vision seems murky and blurred. The wall you are looking at is nicely dressed stone."
|
|
CRLF
|
|
IN? SERPENT,AQUARIUM \TRUE
|
|
RANDOM 100
|
|
GRTR? 25,STACK \?ELS13
|
|
PRINTR "While you watch a shadow seems to pass overhead."
|
|
?ELS13: RANDOM 100
|
|
GRTR? 5,STACK \TRUE
|
|
PRINTI "The head of some horrible serpent pokes into view, its beady green eyes almost seeming to see you."
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? RARG,M-ENTER \FALSE
|
|
IN? SERPENT,AQUARIUM \?ELS26
|
|
CALL JIGS-UP,STR?289
|
|
RSTACK
|
|
?ELS26: CALL JIGS-UP,STR?290
|
|
RSTACK
|
|
|
|
|
|
.FUNCT AQUARIUM-FCN,OBJ
|
|
EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS5
|
|
CALL DO-WALK,P?IN
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS7
|
|
IN? SERPENT,AQUARIUM \?ELS7
|
|
PRINTR "In the aquarium is a baby sea-serpent who eyes you suspiciously. His scaly body writhes about in the huge tank."
|
|
?ELS7: EQUAL? PRSA,V?ATTACK,V?MUNG \?ELS17
|
|
EQUAL? PRSO,AQUARIUM /?THN14
|
|
?ELS17: EQUAL? PRSA,V?THROW \FALSE
|
|
EQUAL? PRSI,AQUARIUM \FALSE
|
|
?THN14: EQUAL? PRSO,AQUARIUM \?ELS22
|
|
ZERO? PRSI /FALSE
|
|
SET 'OBJ,PRSI
|
|
JUMP ?CND20
|
|
?ELS22: SET 'OBJ,PRSO
|
|
?CND20: MOVE OBJ,HERE
|
|
IN? DEAD-SERPENT,HERE \?ELS34
|
|
PRINTR "The aquarium is already broken!"
|
|
?ELS34: EQUAL? OBJ,FLASK \?ELS38
|
|
CALL JIGS-UP,STR?291
|
|
RTRUE
|
|
?ELS38: CALL BOMB?,OBJ
|
|
ZERO? STACK /?ELS40
|
|
CALL INT,I-FUSE
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
?ELS40: FSET? OBJ,WEAPONBIT /?THN43
|
|
GETP OBJ,P?SIZE
|
|
GRTR? STACK,10 \?ELS42
|
|
?THN43: REMOVE SERPENT
|
|
MOVE PALANTIR-3,AQUARIUM
|
|
FCLEAR PALANTIR-3,NDESCBIT
|
|
PUTP AQUARIUM,P?LDESC,STR?292
|
|
MOVE DEAD-SERPENT,HERE
|
|
PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTI " shatters the glass wall of the aquarium, spilling out an impressive amount of salt water and wet sand. It also spills out an extremely annoyed sea serpent who bites angrily at the "
|
|
PRINTD OBJ
|
|
PRINTI ", and then at you. He is having difficulty breathing, and he seems to hold you responsible for his current problem."
|
|
EQUAL? PRSA,V?MUNG \?ELS51
|
|
PRINTI " He manages to rend you limb from limb before he drowns in the air."
|
|
CRLF
|
|
CALL JIGS-UP,STR?293
|
|
RSTACK
|
|
?ELS51: PRINTR " He tries to slither across the stone floor towards you. Fortunately, he expires mere inches away from biting off your foot. A clear crystal sphere sits amid the sand and broken glass on the bottom of the aquarium."
|
|
?ELS42: PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTR " bounces harmlessly off the glass."
|
|
|
|
|
|
.FUNCT SERPENT-FCN
|
|
EQUAL? SERPENT,WINNER \?ELS5
|
|
PRINTR "The serpent only stares hungrily at you."
|
|
?ELS5: EQUAL? PRSA,V?MUNG,V?ATTACK \?ELS9
|
|
PRINTR "He swims towards you with a powerful stroke of his flippers, dagger-like teeth dripping. Fortunately, he doesn't want to crash into the aquarium wall, and contents himself with splashing you with water."
|
|
?ELS9: EQUAL? PRSA,V?PUT \?ELS13
|
|
EQUAL? PRSO,SERPENT \?ELS13
|
|
PRINTR "Impossible for many reasons."
|
|
?ELS13: EQUAL? PRSA,V?GIVE,V?TAKE \FALSE
|
|
CALL JIGS-UP,STR?294
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DEAD-SERPENT-FCN
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
PRINTR "This may only be a baby sea serpent, but it's as big as a small whale."
|
|
|
|
|
|
.FUNCT GENIE-FCN,RARG=M-OBJECT,V,HOARD
|
|
EQUAL? PRSA,V?HELLO \?ELS5
|
|
PRINTR "The genie grins demonically, but says nothing."
|
|
?ELS5: EQUAL? WINNER,GENIE \?ELS9
|
|
ZERO? GENIE-READY? \?ELS14
|
|
PRINTI """My fee is not paid! I perform no tasks for free! We demons have a strong union these days."""
|
|
CRLF
|
|
RETURN 2
|
|
?ELS14: EQUAL? PRSA,V?SGIVE /FALSE
|
|
GET P-PRSO,0
|
|
GRTR? STACK,1 /?THN23
|
|
GET P-PRSI,0
|
|
GRTR? STACK,1 \?ELS22
|
|
?THN23: PRINTI """I will do one thing only, oh gracious master!"""
|
|
CRLF
|
|
RETURN 2
|
|
?ELS22: EQUAL? PRSA,V?MOVE \?ELS30
|
|
EQUAL? PRSO,GLOBAL-MENHIR \?ELS30
|
|
SET 'MENHIR-POSITION,1
|
|
PRINTI "The demon is gone for a moment. ""A trifle... My little finger alone was enough."""
|
|
CRLF
|
|
CALL GENIE-LEAVES
|
|
RSTACK
|
|
?ELS30: EQUAL? PRSA,V?TAKE \?ELS36
|
|
EQUAL? PRSO,GLOBAL-MENHIR \?ELS41
|
|
REMOVE MENHIR
|
|
SET 'MENHIR-POSITION,2
|
|
PRINTI "The demon flashes away for a second. ""I have little use for such a thing, but perhaps as a doorstop..."""
|
|
CRLF
|
|
CALL GENIE-LEAVES
|
|
RSTACK
|
|
?ELS41: EQUAL? PRSO,WAND \?ELS45
|
|
PRINTI """This I do gladly, oh fool!"" cackles the demon gleefully. He stretches out an enormous hand towards the wand and taking it like a toothpick (this is a large demon), points it at himself. ""Free!"" he commands, and the demon and his wand vanish forever."
|
|
CRLF
|
|
CALL GENIE-LEAVES,FALSE-VALUE
|
|
REMOVE WAND
|
|
RTRUE
|
|
?ELS45: FSET? PRSO,TAKEBIT \?ELS49
|
|
CALL GENIE-LEAVES,FALSE-VALUE
|
|
REMOVE PRSO
|
|
PRINTI "The demon snaps his fingers, the "
|
|
PRINTD PRSO
|
|
PRINTR " spins wildly in the air in front of him, then he and it depart."
|
|
?ELS49: PRINTR """I fear that I cannot take such a thing."""
|
|
?ELS36: EQUAL? PRSA,V?GIVE \?ELS57
|
|
EQUAL? PRSI,ME \?ELS57
|
|
EQUAL? PRSO,WAND \?ELS64
|
|
PRINTI """I hear and obey!"" says the demon. He stretches out an enormous hand towards the wand. The Wizard is unsure what to do, pointing it threateningly at the demon, then at you. ""Fudge!"" he cries, but aside from a strong odor of chocolate in the air, there is no effect. The demon plucks the wand out of his hand (it's about toothpick-size to him) and gingerly lays it before you. He fades into the smoke, which disperses. The wizard runs from the room in terror."
|
|
CRLF
|
|
REMOVE WIZARD
|
|
CALL GENIE-LEAVES,FALSE-VALUE
|
|
FCLEAR WAND,NDESCBIT
|
|
MOVE WAND,HERE
|
|
RTRUE
|
|
?ELS64: EQUAL? PRSO,GLOBAL-MENHIR \?ELS68
|
|
MOVE MENHIR,PENTAGRAM-ROOM
|
|
FCLEAR MENHIR,NDESCBIT
|
|
FCLEAR MENHIR,TAKEBIT
|
|
SET 'MENHIR-POSITION,3
|
|
PRINTI "He waves his hands, and the menhir drops softly at your feet."
|
|
CRLF
|
|
CALL GENIE-LEAVES
|
|
RSTACK
|
|
?ELS68: FSET? PRSO,TAKEBIT \?ELS72
|
|
MOVE PRSO,PENTAGRAM-ROOM
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " appears before you and settles to the ground."
|
|
CRLF
|
|
CALL GENIE-LEAVES
|
|
RSTACK
|
|
?ELS72: PRINTR """Were it possible, this would be my fondest wish, but alas..."""
|
|
?ELS57: EQUAL? PRSA,V?ATTACK \?ELS80
|
|
EQUAL? PRSO,GLOBAL-CERBERUS \?ELS85
|
|
PRINTR """This may prove taxing, but we'll see. Perhaps I'll tame him for a pup instead."" The demon disappears for an instant, then reappears. He looks rather gnawed and scratched. He winces. ""Too much for me. Puppy dog, indeed. You're welcome to him. Never did like dogs anyway... Any other orders, oh beneficent one?"""
|
|
?ELS85: EQUAL? PRSO,WIZARD \?ELS89
|
|
PRINTI "The demon grins hideously. ""This has been my desire e'er since this charlatan bent me to his service. I perform this deed with pleasure!"" The demon forms himself back into a cloud of greasy smoke. The cloud envelops the Wizard, who waves his wand fruitlessly, mumbling various phrases which begin with ""F"". A horrible scream is heard, and the smoke begins to clear. Nothing remains of the Wizard but his wand."
|
|
CRLF
|
|
REMOVE WIZARD
|
|
FCLEAR WAND,NDESCBIT
|
|
MOVE WAND,HERE
|
|
CALL GENIE-LEAVES
|
|
RSTACK
|
|
?ELS89: EQUAL? PRSO,ME \?ELS93
|
|
CALL GENIE-LEAVES,FALSE-VALUE
|
|
SET 'WINNER,ADVENTURER
|
|
CALL JIGS-UP,STR?295
|
|
RSTACK
|
|
?ELS93: PRINTI """I know no way to kill a "
|
|
PRINTD PRSO
|
|
PRINTR "."""
|
|
?ELS80: EQUAL? PRSA,V?EXAMINE,V?FIND \?ELS99
|
|
PRINTI """I am not permitted to "
|
|
EQUAL? PRSA,V?FIND \?ELS104
|
|
PRINTI "answer questions"
|
|
JUMP ?CND102
|
|
?ELS104: PRINTI "perform such menial tasks"
|
|
?CND102: PRINTR ". The terms of my contract are explicit on this matter, learned one. Surely you would not wish to violate my contract?"" He licks his lips with a forked tongue like a snake's. ""The penalty clauses are ... hmm ... devilish."""
|
|
?ELS99: PRINTR """Apologies, oh master, but even for such a one as I this is not possible."" He seems somewhat chagrined to have to admit this."
|
|
?ELS9: EQUAL? PRSA,V?MUNG,V?ATTACK,V?EXORCISE \?ELS118
|
|
PRINTR "The demon laughs uproariously."
|
|
?ELS118: EQUAL? PRSA,V?GIVE \FALSE
|
|
EQUAL? PRSI,GENIE \FALSE
|
|
EQUAL? PRSO,IRON-BOX \?CND125
|
|
IN? VIOLIN,PRSO \?CND125
|
|
PRINTI "The genie frowns briefly, then "
|
|
FSET? PRSO,OPENBIT \?ELS134
|
|
PRINTI "looks inside"
|
|
JUMP ?CND132
|
|
?ELS134: PRINTI "opens"
|
|
?CND132: PRINTI " the box. He smiles horribly."
|
|
CRLF
|
|
CALL REMOVE-CAREFULLY,IRON-BOX
|
|
SET 'PRSO,VIOLIN
|
|
?CND125: GETPT PRSO,P?VALUE
|
|
ZERO? STACK /?ELS147
|
|
EQUAL? PRSO,SWORD /?ELS147
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
INC 'GENIE-HOARD
|
|
CALL SCORE-UPD,2
|
|
CALL CASE-WORTH
|
|
ADD GENIE-HOARD,STACK >HOARD
|
|
LESS? HOARD,TREASURES-MAX /?ELS154
|
|
SET 'GENIE-READY?,TRUE-VALUE
|
|
PUTP WIZARD,P?LDESC,STR?296
|
|
PRINTR """This will do for my fee. 'Tis a paltry hoard, but as you have done me a small service by loosing me from this wizard, it will suffice."""
|
|
?ELS154: PRINTI """"
|
|
GET GENIE-THANKS,HOARD
|
|
PRINT STACK
|
|
PRINTI """"
|
|
CRLF
|
|
EQUAL? HOARD,8 \TRUE
|
|
PRINTR "The Wizard looks at you as if you are a madman. He tears his beard and stares at you fearfully."
|
|
?ELS147: CALL BOMB?,PRSO
|
|
ZERO? STACK /?ELS167
|
|
CALL GENIE-LEAVES,FALSE-VALUE
|
|
PRINTR """I fear that this violates my contract, oh foolish one. Thus, I am free to depart."""
|
|
?ELS167: CALL REMOVE-CAREFULLY,PRSO
|
|
PRINTI "The demon gladly takes the "
|
|
PRINTD PRSO
|
|
PRINTR " and smiles balefully, revealing enormous fangs."
|
|
|
|
|
|
.FUNCT GENIE-LEAVES,NOISY?=1
|
|
FSET GENIE,INVISIBLE
|
|
ZERO? NOISY? /?CND1
|
|
PRINTI "The genie departs, his agreement fulfilled."
|
|
CRLF
|
|
?CND1: SET 'P-CONT,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT CASE-WORTH,F,W=0
|
|
FIRST? WIZARD-CASE >F /?KLU9
|
|
?KLU9:
|
|
?PRG1: ZERO? F \?CND3
|
|
RETURN W
|
|
?CND3: GETPT F,P?VALUE
|
|
ZERO? STACK /?CND6
|
|
INC 'W
|
|
?CND6: NEXT? F >F /?KLU10
|
|
?KLU10: JUMP ?PRG1
|
|
|
|
|
|
.FUNCT PENTAGRAM-FCN,RARG=M-BEG
|
|
EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?BOARD,V?THROUGH \?ELS10
|
|
PRINTR "You try to enter the pentagram, but are forced back by an invisible power."
|
|
?ELS10: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
|
|
EQUAL? PRSO,PALANTIR-4 \FALSE
|
|
REMOVE PALANTIR-4
|
|
FCLEAR GENIE,INVISIBLE
|
|
MOVE GENIE,PENTAGRAM-ROOM
|
|
PRINTR "A cold wind blows outward from the sphere. The candles flicker, and a low moan, almost inaudible, is heard. It rises in volume and pitch until it becomes a high-pitched keening. A dim shape becomes visible in the air above the sphere. The shape resolves into a large and somewhat formidable looking demon. He looks around, tests the walls of the pentagram experimentally, then sees you! ""Hmm, a new master..."" he says under his breath. ""Greetings, oh master! Wouldst desire a service, as our contract stateth? For some pittance of wealth, some trifle, I will gratify thy desires to the utmost limit of my powers, and they are not inconsiderable."" He makes a pass with his massive arms and the walls begin to shake a little. Another pass and the shaking stops. ""A nice effect... I find it makes for a better relationship to give such a demonstration early on."" He grins vilely."
|
|
|
|
|
|
.FUNCT WIZARD-FCN,RARG=M-OBJECT,OLIT
|
|
EQUAL? WINNER,WIZARD \?ELS5
|
|
EQUAL? PRSA,V?GIVE \?ELS10
|
|
PRINTR "The Wizard replies ""Foolishment!"""
|
|
?ELS10: PRINTR "The Wizard considers your statement carefully. His expression indicates he regards it as fanciful."
|
|
?ELS5: EQUAL? PRSA,V?GIVE \?ELS18
|
|
EQUAL? PRSI,WIZARD \?ELS18
|
|
SET 'OLIT,LIT
|
|
CALL REMOVE-CAREFULLY,PRSO
|
|
CALL BOMB?,PRSO
|
|
ZERO? STACK /?ELS25
|
|
IN? GENIE,PENTAGRAM-ROOM \?ELS30
|
|
MOVE PRSO,HERE
|
|
PRINTR "The wizard accepts this final folly resignedly."
|
|
?ELS30: REMOVE WIZARD
|
|
PRINTR """Hmm..."" The Wizard mutters something, then waves his wand over the bomb. It transforms into a bouquet of flowers. Both Wizard and flowers disappear."
|
|
?ELS25: ZERO? OLIT /?ELS38
|
|
ZERO? LIT \?ELS38
|
|
PRINTI """Thank you."" As the Wizard places the "
|
|
PRINTD PRSO
|
|
PRINTR " under his robe, the room becomes dark."
|
|
?ELS38: PRINTR """Thank you."""
|
|
?ELS18: CALL HELLO?,WIZARD
|
|
ZERO? STACK /?ELS48
|
|
PRINTR "The Wizard seems surprised, much as you might be if a dog talked."
|
|
?ELS48: EQUAL? PRSA,V?MUNG,V?ATTACK \FALSE
|
|
REMOVE WIZARD
|
|
IN? WAND,WIZARD \?ELS55
|
|
PRINTI "The Wizard retreats, waving his wand and chanting. He says ""Fear!"" "
|
|
JUMP ?CND53
|
|
?ELS55: PRINTI "The Wizard tries to cast the ""Fear!"" spell, but without his wand! "
|
|
?CND53: FSET? GENIE,INVISIBLE /?ELS66
|
|
PRINTR "Nothing happens! With a terrified glance at the demon, the wizard runs past you and out of the room."
|
|
?ELS66: PRINTI "You are suddenly terrified. The Wizard seems huge and terrible, looming over you. You flee, terrified. He chuckles, snaps his fingers, and disappears."
|
|
CRLF
|
|
CRLF
|
|
SET 'SPELL?,S-FEAR
|
|
PUTP ADVENTURER,P?ACTION,MAGIC-ACTOR
|
|
CALL QUEUE,I-WIZARD,10
|
|
PUT STACK,0,1
|
|
CALL RANDOM-WALK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-WIZARD,CAST-PROB,PCNT=0,F,WLOC
|
|
LOC WINNER >WLOC
|
|
CALL QUEUE,I-WIZARD,4
|
|
PUT STACK,0,1
|
|
ZERO? DEAD \FALSE
|
|
ZERO? SPELL? /?CND1
|
|
EQUAL? SPELL?,S-FLOAT \?ELS10
|
|
EQUAL? HERE,WELL-TOP \?ELS13
|
|
CALL JIGS-UP,STR?306
|
|
RTRUE
|
|
?ELS13: FSET? HERE,NONLANDBIT \?CND8
|
|
EQUAL? HERE,WELL-BOTTOM,VOLCANO-BOTTOM /?CND8
|
|
CALL JIGS-UP,STR?307
|
|
RTRUE
|
|
?ELS10: EQUAL? SPELL?,S-FEEBLE \?ELS19
|
|
SET 'LOAD-ALLOWED,LOAD-MAX
|
|
JUMP ?CND8
|
|
?ELS19: EQUAL? SPELL?,S-FIERCE \?ELS21
|
|
SET 'SWORD-GLOW,0
|
|
JUMP ?CND8
|
|
?ELS21: EQUAL? SPELL?,S-FUMBLE \?CND8
|
|
SET 'FUMBLE-NUMBER,7
|
|
SET 'FUMBLE-PROB,8
|
|
?CND8: GET SPELL-STOPS,SPELL?
|
|
ZERO? STACK /?CND24
|
|
GET SPELL-STOPS,SPELL?
|
|
PRINT STACK
|
|
CRLF
|
|
?CND24: PUTP ADVENTURER,P?ACTION,0
|
|
SET 'SPELL?,FALSE-VALUE
|
|
RTRUE
|
|
?CND1: IN? GENIE,PENTAGRAM-ROOM \?CND29
|
|
CALL INT,I-WIZARD
|
|
PUT STACK,0,0
|
|
IN? WIZARD,PENTAGRAM-ROOM /TRUE
|
|
MOVE WIZARD,PENTAGRAM-ROOM
|
|
IN? WINNER,PENTAGRAM-ROOM \TRUE
|
|
PRINTI "Suddenly the Wizard materializes in the room. He is astonished by what he sees: his servant in deep conversation with a common adventurer! He draws forth his wand, waves it frantically, and incants ""Frobizz! Frobozzle! Frobnoid!"" The demon laughs heartily. ""You no longer control the Black Crystal, hedge-wizard! Your wand is powerless! Your doom is sealed!"" The demon turns to you, expectantly."
|
|
CRLF
|
|
RTRUE
|
|
?CND29: ZERO? LIT \?CND40
|
|
FSET? LAMP,RMUNGBIT \?CND40
|
|
GRTR? SCORE,200 \?CND40
|
|
SET 'ALWAYS-LIT,TRUE-VALUE
|
|
SET 'LIT,TRUE-VALUE
|
|
PRINTR "In the darkness you hear the voice of the Wizard. ""Dear me, you seem to have gotten into quite a pickle."" He chuckles. ""Fluoresce!"" he incants. It is no longer dark."
|
|
?CND40: LOC WIZARD
|
|
ZERO? STACK /?CND47
|
|
RANDOM 100
|
|
GRTR? 80,STACK \?CND47
|
|
ZERO? LIT /?CND52
|
|
IN? WIZARD,HERE \?CND52
|
|
PRINTI "The Wizard vanishes."
|
|
CRLF
|
|
?CND52: REMOVE WIZARD
|
|
RTRUE
|
|
?CND47: RANDOM 100
|
|
GRTR? 10,STACK \FALSE
|
|
ZERO? LIT \?ELS66
|
|
PRINTI "You feel a slight outrush of air as something moves nearby."
|
|
CRLF
|
|
JUMP ?CND64
|
|
?ELS66: EQUAL? HERE,POSTS-ROOM,POOL-ROOM \?ELS70
|
|
PRINTI "A huge and terrible wizard appears before you, as large as the largest tree! He looks down on you as you would look upon a gnat!"
|
|
CRLF
|
|
JUMP ?CND64
|
|
?ELS70: FSET? HERE,NONLANDBIT \?ELS74
|
|
PRINTI "The Wizard appears, floating nonchalantly in the air beside you. He grins sideways at you."
|
|
CRLF
|
|
JUMP ?CND64
|
|
?ELS74: PRINTI "A strange little man in a long cloak appears suddenly in the room. He is wearing a high pointed hat embroidered with astrological signs. He has a long, stringy, and unkempt beard."
|
|
CRLF
|
|
?CND64: IN? PALANTIR-4,ADVENTURER \?ELS83
|
|
ZERO? LIT /?ELS86
|
|
PRINTI "The Wizard notices that you carry the Black Crystal, and with an unseemly haste, he disappears."
|
|
CRLF
|
|
JUMP ?CND84
|
|
?ELS86: PRINTI "You feel a sudden inrush of air as though something disappeared."
|
|
CRLF
|
|
?CND84: REMOVE WIZARD
|
|
RTRUE
|
|
?ELS83: RANDOM 100
|
|
GRTR? 20,STACK \?CND81
|
|
ZERO? LIT /?ELS98
|
|
PRINTI "He mutters something (muffled by his beard) and disappears as suddenly as he came."
|
|
CRLF
|
|
JUMP ?CND96
|
|
?ELS98: PRINTI "You hear low, confused muttering."
|
|
CRLF
|
|
?CND96: REMOVE WIZARD
|
|
RTRUE
|
|
?CND81: IN? PALANTIR-1,ADVENTURER \?CND106
|
|
INC 'PCNT
|
|
?CND106: IN? PALANTIR-2,ADVENTURER \?CND109
|
|
INC 'PCNT
|
|
?CND109: IN? PALANTIR-3,ADVENTURER \?CND112
|
|
INC 'PCNT
|
|
?CND112: MUL PCNT,20
|
|
SUB 80,STACK >CAST-PROB
|
|
ZERO? LIT /?ELS117
|
|
PRINTI "The Wizard draws forth his wand and waves it in your direction. It begins to glow with a faint blue glow."
|
|
CRLF
|
|
JUMP ?CND115
|
|
?ELS117: PRINTI "Suddenly, illuminated by the faint blue glow of a magic wand pointed in your direction, you see the Wizard!"
|
|
CRLF
|
|
?CND115: RANDOM 100
|
|
GRTR? CAST-PROB,STACK \?ELS129
|
|
MOVE WIZARD,HERE
|
|
RANDOM SPELLS >SPELL?
|
|
PUTP ADVENTURER,P?ACTION,MAGIC-ACTOR
|
|
MUL 5,PCNT
|
|
SUB 30,STACK
|
|
RANDOM STACK
|
|
ADD 5,STACK
|
|
CALL QUEUE,I-WIZARD,STACK
|
|
PUT STACK,0,1
|
|
RANDOM 100
|
|
GRTR? 75,STACK \?ELS132
|
|
PRINTI "The Wizard, in a deep and resonant voice, speaks the word """
|
|
GET SPELL-NAMES,SPELL?
|
|
PRINT STACK
|
|
PRINTI "!"" He then vanishes, cackling gleefully."
|
|
CRLF
|
|
JUMP ?CND130
|
|
?ELS132: PRINTI "The Wizard, almost inaudibly, whispers a word beginning with ""F,"" and then disappears, chuckling nastily."
|
|
CRLF
|
|
?CND130: REMOVE WIZARD
|
|
GET SPELL-HINTS,SPELL?
|
|
ZERO? STACK /?CND139
|
|
GET SPELL-HINTS,SPELL?
|
|
PRINT STACK
|
|
CRLF
|
|
?CND139: EQUAL? SPELL?,S-FALL \?ELS146
|
|
FSET? WLOC,VEHBIT \TRUE
|
|
PRINTI "You suddenly fall headlong out of the "
|
|
PRINTD WLOC
|
|
PRINTI " as though someone had flipped it over."
|
|
CRLF
|
|
EQUAL? HERE,WELL-TOP \?ELS154
|
|
CALL JIGS-UP,STR?308
|
|
RTRUE
|
|
?ELS154: FSET? HERE,NONLANDBIT \?ELS156
|
|
EQUAL? HERE,VOLCANO-BOTTOM,WELL-BOTTOM /?ELS156
|
|
CALL JIGS-UP,STR?309
|
|
RTRUE
|
|
?ELS156: MOVE WINNER,HERE
|
|
RTRUE
|
|
?ELS146: EQUAL? SPELL?,S-FLOAT \?ELS162
|
|
FSET? WLOC,VEHBIT \?ELS165
|
|
PRINTI " You rise majestically out of the "
|
|
PRINTD WLOC
|
|
PRINTI ", coming to a stop about five feet above it and to one side."
|
|
CRLF
|
|
MOVE WINNER,HERE
|
|
RTRUE
|
|
?ELS165: PRINTR "Slowly, you and all your belongings rise into the air, stopping after about five feet."
|
|
?ELS162: EQUAL? SPELL?,S-FEEBLE \?ELS173
|
|
SET 'LOAD-ALLOWED,50
|
|
FIRST? WINNER >F \TRUE
|
|
PRINTI "In fact, you feel so weak that you drop the "
|
|
PRINTD F
|
|
PRINTI "."
|
|
CRLF
|
|
MOVE F,WLOC
|
|
RTRUE
|
|
?ELS173: EQUAL? SPELL?,S-FEAR \?ELS180
|
|
FSET? WLOC,VEHBIT \?ELS183
|
|
PRINTI "You cower in the corner of the "
|
|
PRINTD WLOC
|
|
PRINTR ", hoping the wizard won't see you."
|
|
?ELS183: CRLF
|
|
CALL RANDOM-WALK
|
|
RTRUE
|
|
?ELS180: EQUAL? SPELL?,S-FUMBLE \?ELS189
|
|
SET 'FUMBLE-NUMBER,3
|
|
SET 'FUMBLE-PROB,25
|
|
FIRST? ADVENTURER >F \TRUE
|
|
PRINTI "Ooops! You dropped the "
|
|
PRINTD F
|
|
PRINTI "."
|
|
CRLF
|
|
MOVE F,WLOC
|
|
RTRUE
|
|
?ELS189: EQUAL? SPELL?,S-FILCH \?ELS196
|
|
CALL ROB,WINNER,WIZARD-CASE
|
|
ZERO? STACK /TRUE
|
|
PRINTR "Something you are carrying has disappeared!"
|
|
?ELS196: EQUAL? SPELL?,S-FIERCE \TRUE
|
|
PRINTR "The Wizard mumbles something under his breath, and just before you reach him, he vanishes."
|
|
?ELS129: RANDOM 100
|
|
GRTR? 50,STACK \?ELS207
|
|
REMOVE WIZARD
|
|
PRINTR "There is a loud crackling noise. Blue smoke rises from out of the Wizard's sleeve. He sighs and disappears."
|
|
?ELS207: RANDOM 100
|
|
GRTR? 50,STACK \?ELS211
|
|
REMOVE WIZARD
|
|
PRINTI "The Wizard incants """
|
|
CALL RANDOM-ELEMENT,SPELL-NAMES
|
|
PRINT STACK
|
|
PRINTR "!"" but nothing happens. He shakes the wand. Nothing happens. With a slightly embarrassed glance in your direction, he vanishes."
|
|
?ELS211: MOVE WIZARD,HERE
|
|
PRINTR "The Wizard seems about to say something, but thinks better of it, and peers at you from under his bushy eyebrows."
|
|
|
|
|
|
.FUNCT ROB,WHO,WHERE,N,X,ROBBED?=0
|
|
FIRST? WHO >X /?KLU9
|
|
?KLU9:
|
|
?PRG1: ZERO? X \?CND3
|
|
RETURN ROBBED?
|
|
?CND3: NEXT? X >N /?KLU10
|
|
?KLU10: CALL RIPOFF,X,WHERE
|
|
ZERO? STACK /?CND6
|
|
SET 'ROBBED?,TRUE-VALUE
|
|
?CND6: SET 'X,N
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT RIPOFF,X,WHERE
|
|
FSET? X,INVISIBLE /FALSE
|
|
GETPT X,P?VALUE
|
|
ZERO? STACK /FALSE
|
|
EQUAL? X,PALANTIR-1 /FALSE
|
|
EQUAL? X,PALANTIR-2 /FALSE
|
|
EQUAL? X,PALANTIR-3 /FALSE
|
|
EQUAL? X,GOLD-KEY /FALSE
|
|
EQUAL? X,CANDY /FALSE
|
|
MOVE X,WHERE
|
|
FSET X,TOUCHBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WIZARD-CASE-FCN
|
|
EQUAL? WINNER,GENIE \?ELS5
|
|
EQUAL? PRSA,V?OPEN,V?MUNG \FALSE
|
|
REMOVE WIZARD-CASE
|
|
MOVE BROKEN-CASE,TROPHY-ROOM
|
|
PRINTR "The demon smashes the case into smithereens. Everything in it smashes as well."
|
|
?ELS5: EQUAL? PRSA,V?ENCHANT \?ELS14
|
|
EQUAL? SPELL-USED,W?FILCH \?ELS14
|
|
CALL ROB,WIZARD-CASE,HERE
|
|
SET 'SPELL-HANDLED?,TRUE-VALUE
|
|
PRINTR "The contents of the case are arrayed at your feet."
|
|
?ELS14: EQUAL? PRSA,V?CLOSE,V?MUNG,V?OPEN /?THN21
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
?THN21: PRINTR "The case is protected by a fearful spell. You cannot touch it in any way."
|
|
|
|
|
|
.FUNCT WAND-FCN
|
|
EQUAL? PRSA,V?GIVE,V?PUT,V?TAKE \?ELS5
|
|
IN? WAND,WIZARD \?ELS5
|
|
EQUAL? WINNER,ADVENTURER \?ELS12
|
|
PRINTR "The Wizard snatches it away."
|
|
?ELS12: EQUAL? WINNER,ROBOT \FALSE
|
|
CALL JIGS-UP,STR?333
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?WAVE \?ELS18
|
|
EQUAL? PRSI,GRUE \?ELS18
|
|
PRINTR "There is no grue in sight, but a hissing sound issues forth from the darkness."
|
|
?ELS18: EQUAL? PRSA,V?RAISE,V?RUB,V?WAVE \FALSE
|
|
EQUAL? PRSO,WAND \?ELS27
|
|
IN? WAND,WINNER /?ELS27
|
|
PRINTR "You don't have the wand!"
|
|
?ELS27: ZERO? WAND-ON \?THN34
|
|
ZERO? SPELL-USED \?THN34
|
|
ZERO? SPELL-VICTIM /?ELS33
|
|
?THN34: RANDOM 100
|
|
GRTR? 5,STACK \?ELS38
|
|
CALL JIGS-UP,STR?334
|
|
RTRUE
|
|
?ELS38: PRINTR "A lot you know about magic! A magic wand takes a while to recharge after use! You might cause it to short-circuit!"
|
|
?ELS33: EQUAL? PRSA,V?WAVE \?ELS44
|
|
EQUAL? PRSO,WAND \?ELS47
|
|
ZERO? PRSI /?ELS47
|
|
SET 'WAND-ON,PRSI
|
|
SET 'WAND-ON-LOC,HERE
|
|
JUMP ?CND25
|
|
?ELS47: PRINTR "At what?"
|
|
?ELS44: EQUAL? PRSA,V?RUB \?ELS55
|
|
EQUAL? PRSI,WAND \?ELS58
|
|
ZERO? PRSO /?ELS58
|
|
SET 'WAND-ON,PRSO
|
|
JUMP ?CND25
|
|
?ELS58: PRINTR "Touch what?"
|
|
?ELS55: EQUAL? PRSA,V?RAISE \?CND25
|
|
PRINTR "The wand grows warm and seems to vibrate."
|
|
?CND25: ZERO? WAND-ON /TRUE
|
|
SET 'SPELL-USED,FALSE-VALUE
|
|
SET 'SPELL-VICTIM,FALSE-VALUE
|
|
EQUAL? WAND-ON,ME,WAND \?ELS75
|
|
SET 'WAND-ON,FALSE-VALUE
|
|
PRINTI "Fortunately a safety interlock prevents the fatal feedback loop that this would cause."
|
|
CRLF
|
|
JUMP ?CND73
|
|
?ELS75: PRINTI "The wand grows warm, the "
|
|
PRINTD WAND-ON
|
|
PRINTI " seems to glow dimly with magical essences, and you feel suffused with power."
|
|
CRLF
|
|
?CND73: CALL QUEUE,I-WAND,2
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-WAND
|
|
ZERO? WAND-ON /?ELS5
|
|
EQUAL? WAND-ON-LOC,HERE /?THN8
|
|
IN? WAND-ON,WINNER \?ELS5
|
|
?THN8: PRINTI "The "
|
|
PRINTD WAND-ON
|
|
PRINTI " stops glowing and the power within you weakens."
|
|
CRLF
|
|
SET 'WAND-ON,FALSE-VALUE
|
|
RTRUE
|
|
?ELS5: SET 'WAND-ON,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT WIZARD-QUARTERS-FCN,RARG,PICK,L
|
|
EQUAL? RARG,M-LOOK,M-FLASH \FALSE
|
|
PRINTI "This is where the Wizard of Frobozz lives. The room is "
|
|
GET WIZQDESCS,0 >L
|
|
RANDOM L >PICK
|
|
EQUAL? PICK,WIZQLAST \?CND8
|
|
EQUAL? PICK,L \?ELS13
|
|
DEC 'PICK
|
|
JUMP ?CND8
|
|
?ELS13: INC 'PICK
|
|
?CND8: SET 'WIZQLAST,PICK
|
|
GET WIZQDESCS,PICK
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BRIDGE-FCN
|
|
EQUAL? PRSA,V?CROSS \?ELS5
|
|
CALL DO-WALK,P?CROSS
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?LEAP \FALSE
|
|
CALL JIGS-UP,STR?343
|
|
RSTACK
|
|
|
|
|
|
.FUNCT STREAM-FCN
|
|
EQUAL? PRSA,V?THROUGH,V?SWIM \?ELS5
|
|
PRINTR "You can't swim in the stream."
|
|
?ELS5: EQUAL? PRSA,V?CROSS \FALSE
|
|
PRINTR "You'll have to find a ford or a bridge."
|
|
|
|
|
|
.FUNCT CHASM-FCN
|
|
EQUAL? PRSA,V?LEAP /?THN6
|
|
EQUAL? PRSA,V?PUT \?ELS5
|
|
EQUAL? PRSO,ME \?ELS5
|
|
?THN6: PRINTR "For a change, you look before leaping. You 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
|
|
GETPT HERE,P?IN
|
|
ZERO? STACK /?ELS5
|
|
CALL DO-WALK,P?IN
|
|
RTRUE
|
|
?ELS5: CALL PATH-OBJECT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT STALA-PSEUDO
|
|
EQUAL? PRSA,V?MUNG,V?TAKE \FALSE
|
|
PRINTR "The only ones you can reach are too large to successfully break off."
|
|
|
|
|
|
.FUNCT MOSS-FCN
|
|
EQUAL? PRSA,V?RUB,V?TAKE \FALSE
|
|
PRINTR "Some of the moss rubs off on you, but it stops glowing very quickly once plucked from its environment."
|
|
|
|
|
|
.FUNCT ROSE-BUSH-FCN
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
PRINTR "You prick your finger trying to take a rose, and jump back annoyed. The rose almost seemed to move its thorns into your path."
|
|
|
|
|
|
.FUNCT I-SPELL
|
|
ZERO? SPELL-HANDLED? \?CND1
|
|
ZERO? SPELL-VICTIM /?CND1
|
|
CALL PERFORM,V?DISENCHANT,SPELL-VICTIM
|
|
?CND1: SET 'SPELL-HANDLED?,FALSE-VALUE
|
|
SET 'WAND-ON,FALSE-VALUE
|
|
SET 'SPELL-USED,FALSE-VALUE
|
|
SET 'SPELL-VICTIM,FALSE-VALUE
|
|
RETURN SPELL-VICTIM
|
|
|
|
|
|
.FUNCT V-DIAGNOSE
|
|
ZERO? DEAD /?ELS3
|
|
PRINTI "You are dead."
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? SPELL?,S-FERMENT \?ELS8
|
|
PRINTI "You are drunk."
|
|
JUMP ?CND1
|
|
?ELS8: EQUAL? SPELL?,S-FEEBLE \?ELS12
|
|
PRINTI "You seem unusually weak right now."
|
|
JUMP ?CND1
|
|
?ELS12: EQUAL? SPELL?,S-FLOAT \?ELS16
|
|
PRINTI "You seem somewhat light."
|
|
JUMP ?CND1
|
|
?ELS16: EQUAL? SPELL?,S-FREEZE \?ELS20
|
|
PRINTI "You are frozen stiff."
|
|
JUMP ?CND1
|
|
?ELS20: PRINTI "You are in perfect health."
|
|
?CND1: CRLF
|
|
ZERO? DEATHS /FALSE
|
|
PRINTI "You have been killed "
|
|
EQUAL? DEATHS,1 \?ELS36
|
|
PRINTI "once."
|
|
JUMP ?CND34
|
|
?ELS36: EQUAL? DEATHS,2 \?ELS40
|
|
PRINTI "twice."
|
|
JUMP ?CND34
|
|
?ELS40: PRINTI "an awful lot."
|
|
?CND34: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCORE,ASK?=1
|
|
PRINTI "Your score "
|
|
ZERO? ASK? /?ELS5
|
|
PRINTI "would be "
|
|
JUMP ?CND3
|
|
?ELS5: PRINTI "is "
|
|
?CND3: PRINTN SCORE
|
|
PRINTI " (total of 400 points), in "
|
|
PRINTN MOVES
|
|
EQUAL? MOVES,1 \?ELS21
|
|
PRINTI " move."
|
|
JUMP ?CND19
|
|
?ELS21: PRINTI " moves."
|
|
?CND19: CRLF
|
|
PRINTI "This score gives you the rank of "
|
|
EQUAL? SCORE,400 \?ELS32
|
|
PRINTI "Master Adventurer"
|
|
ZERO? WON-FLAG \?CND30
|
|
PRINTI ", but somehow you don't feel done"
|
|
JUMP ?CND30
|
|
?ELS32: GRTR? SCORE,360 \?ELS41
|
|
PRINTI "Wizard"
|
|
JUMP ?CND30
|
|
?ELS41: GRTR? SCORE,320 \?ELS45
|
|
PRINTI "Master"
|
|
JUMP ?CND30
|
|
?ELS45: GRTR? SCORE,240 \?ELS49
|
|
PRINTI "Adventurer"
|
|
JUMP ?CND30
|
|
?ELS49: GRTR? SCORE,160 \?ELS53
|
|
PRINTI "Junior Adventurer"
|
|
JUMP ?CND30
|
|
?ELS53: GRTR? SCORE,80 \?ELS57
|
|
PRINTI "Novice Adventurer"
|
|
JUMP ?CND30
|
|
?ELS57: GRTR? SCORE,40 \?ELS61
|
|
PRINTI "Amateur Adventurer"
|
|
JUMP ?CND30
|
|
?ELS61: PRINTI "Beginner"
|
|
?CND30: PRINTI "."
|
|
CRLF
|
|
RETURN SCORE
|
|
|
|
|
|
.FUNCT JIGS-UP,DESC=0,PLAYER?=0
|
|
ZERO? DESC /?CND1
|
|
PRINT DESC
|
|
CRLF
|
|
?CND1: EQUAL? ADVENTURER,WINNER /?CND7
|
|
PRINTI "
|
|
**** The "
|
|
PRINTD WINNER
|
|
PRINTI " has died ****
|
|
|
|
"
|
|
REMOVE WINNER
|
|
SET 'WINNER,ADVENTURER
|
|
LOC WINNER >HERE
|
|
RETURN 2
|
|
?CND7: CALL SCORE-UPD,-10
|
|
PRINTI "
|
|
**** You have died ****
|
|
|
|
"
|
|
SET 'DEAD,TRUE-VALUE
|
|
SET 'SPELL?,FALSE-VALUE
|
|
PUTP ADVENTURER,P?ACTION,0
|
|
INC 'DEATHS
|
|
MOVE WINNER,HERE
|
|
PRINTI "Now, let's take a look here... Well, you probably deserve another chance. I can't quite fix you up completely, but you can't have everything."
|
|
CRLF
|
|
CRLF
|
|
FCLEAR DEAD-PALANTIR-1,TOUCHBIT
|
|
FCLEAR DEAD-PALANTIR-2,TOUCHBIT
|
|
FCLEAR DEAD-PALANTIR-3,TOUCHBIT
|
|
CALL RANDOMIZE-OBJECTS
|
|
CALL GOTO,DEAD-PALANTIR-1
|
|
SET 'P-CONT,FALSE-VALUE
|
|
CALL KILL-INTERRUPTS
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT RANDOMIZE-OBJECTS,R=0,F,N,L
|
|
IN? LAMP,WINNER \?CND1
|
|
MOVE LAMP,INSIDE-BARROW
|
|
?CND1: FIRST? WINNER >N /?KLU24
|
|
?KLU24:
|
|
?PRG4: SET 'F,N
|
|
ZERO? F /TRUE
|
|
NEXT? F >N /?KLU25
|
|
?KLU25: EQUAL? F,BILLS,PORTRAIT \?ELS11
|
|
EQUAL? HERE,VAULT,DEPOSITORY,OFFICE /?THN14
|
|
EQUAL? HERE,SMALL-ROOM \?ELS11
|
|
?THN14: MOVE F,HERE
|
|
JUMP ?PRG4
|
|
?ELS11: EQUAL? F,GOLD-KEY /?THN18
|
|
EQUAL? F,CANDY /?THN18
|
|
EQUAL? F,PALANTIR-1 /?THN18
|
|
EQUAL? F,PALANTIR-2 /?THN18
|
|
EQUAL? F,PALANTIR-3 \?ELS17
|
|
?THN18: MOVE F,CAROUSEL-ROOM
|
|
JUMP ?PRG4
|
|
?ELS17: FSET? F,STAGGERED \?ELS21
|
|
MOVE F,WIZARD-CASE
|
|
JUMP ?PRG4
|
|
?ELS21: MOVE F,GAZEBO-ROOM
|
|
JUMP ?PRG4
|
|
|
|
|
|
.FUNCT KILL-INTERRUPTS
|
|
CALL INT,I-GNOME
|
|
PUT STACK,0,0
|
|
CALL INT,I-LEDGE
|
|
PUT STACK,0,0
|
|
CALL INT,I-NERVOUS
|
|
PUT STACK,0,0
|
|
CALL INT,I-ZGNOME-OUT
|
|
PUT STACK,0,0
|
|
CALL INT,I-ZGNOME
|
|
PUT STACK,0,0
|
|
CALL DRAGON-LEAVES
|
|
CALL INT,I-MATCH
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
|
|
|
|
.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 BUCKET-CONT
|
|
EQUAL? PRSA,V?TAKE \FALSE
|
|
IN? WINNER,BUCKET /FALSE
|
|
PRINTR "You'll need to get in the bucket to reach it."
|
|
|
|
.ENDI
|