sorcerer/maze.zap
historicalsource 9be53d703b Final Revision
2019-04-13 21:15:11 -04:00

625 lines
15 KiB
Plaintext

.FUNCT MAZE-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,OUTSIDE-GLASS-DOOR \?ELS10
CALL DO-WALK,P?EAST
RSTACK
?ELS10: EQUAL? HERE,HOLLOW \?ELS12
CALL DO-WALK,P?WEST
RSTACK
?ELS12: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS16
EQUAL? HERE,GLASS-MAZE \?ELS21
CALL DO-WALK,P?OUT
RSTACK
?ELS21: CALL LOOK-AROUND-YOU
RSTACK
?ELS16: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS25
PRINTR "You see nothing but reflected light in all directions."
?ELS25: EQUAL? PRSA,V?RESEARCH \FALSE
PRINTR "According to the article, Duncanthrax built the Glass Maze on a whim, to amuse his friends and torture his enemies. A labyrinth of 27 cubicles, it was full of devilish pitfalls and was located near his castle, Egreth."
.FUNCT HOVEL-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,END-OF-HIGHWAY \?ELS10
CALL DO-WALK,P?EAST
RSTACK
?ELS10: CALL LOOK-AROUND-YOU
RSTACK
?ELS5: EQUAL? PRSA,V?EXIT,V?DROP \?ELS14
EQUAL? HERE,STONE-HUT \?ELS19
CALL DO-WALK,P?WEST
RSTACK
?ELS19: CALL LOOK-AROUND-YOU
RSTACK
?ELS14: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
EQUAL? HERE,STONE-HUT \?ELS28
CALL LOOK-AROUND-YOU
RSTACK
?ELS28: CALL MAKE-OUT
RSTACK
.FUNCT CHIMNEY-EXIT-F
ZERO? FWEEPED /?ELS5
PRINTI "Too narrow even for bats."
CRLF
RFALSE
?ELS5: PRINTI "Where did you get the bizarre notion that you might fit up a chimney?"
CRLF
RFALSE
.FUNCT FIREPLACE-F
EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
CALL V-DEFLATE
RSTACK
.FUNCT STATUE-F
EQUAL? PRSA,V?MALYON \?ELS5
PRINTI "The statue transforms into a living figure, probably a King if the royal attire is any clue. The King seems angry, and quickly settles his wrathful gaze on you. He bellows ""Guards! Throw this trespasser into the glass maze! Guards! ... GUARDS!!!"" When the guards fail to respond, the King becomes livid, his voice rises to an incoherent squeak, and flecks of foam spit from the corners of his mouth. Finally, eyes bulging with rage, he storms out of the room."
CRLF
FSET STATUE,TOUCHBIT
SET 'STATUE-FOLLOW,TRUE-VALUE
CALL QUEUE,I-STATUE-UNFOLLOW,1
PUT STACK,0,1
EQUAL? HERE,ENTRANCE-HALL,OUTSIDE-STORE \?ELS12
RANDOM 100
LESS? 50,STACK /?ELS17
MOVE STATUE,HIGHWAY
RTRUE
?ELS17: MOVE STATUE,BEND
RTRUE
?ELS12: RANDOM 100
LESS? 50,STACK /?ELS26
MOVE STATUE,ENTRANCE-HALL
RTRUE
?ELS26: MOVE STATUE,OUTSIDE-STORE
RTRUE
?ELS5: EQUAL? PRSA,V?FOLLOW \FALSE
ZERO? STATUE-FOLLOW /FALSE
PRINTR "The King moved too quickly to follow."
.FUNCT I-STATUE-UNFOLLOW
SET 'STATUE-FOLLOW,FALSE-VALUE
RFALSE
.FUNCT NO-FLOOR?
ZERO? MAZE-CROSSED /?ELS5
GET POST-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK /FALSE
?ELS5: ZERO? MAZE-CROSSED \TRUE
GET PRE-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \TRUE
RFALSE
.FUNCT GLASS-MAZE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
CALL TABLE-TO-MAZE,ROOM-NUMBER
FCLEAR GLASS-MAZE,TOUCHBIT
PUT VEZZAS,5,0
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are inside a huge cubical maze, shimmering with light from an unseen source above."
ZERO? FWEEPED \?CND10
PRINTI " It is impossible to tell if the walls and ceilings around you are glass surfaces or openings."
?CND10: ZERO? FLYING \?CND15
CALL NO-FLOOR?
ZERO? STACK /?CND15
EQUAL? ROOM-NUMBER,13 \?CND15
PRINTI " "
CALL PLUMMET
RTRUE
?CND15: ZERO? FLYING \?CND22
CALL NO-FLOOR?
ZERO? STACK \?CND22
PRINTI " Since you are standing on something, the floor must be solid, but it is virtually invisible and you feel as though you were walking on air."
?CND22: ZERO? FWEEPED /?CND29
CALL RADAR-VIEW
?CND29: CRLF
RTRUE
.FUNCT RADAR-VIEW,X,COUNT,LUP,LDOWN,NORTH,SOUTH,EAST,WEST
SET 'X,FALSE-VALUE
SET 'LUP,FALSE-VALUE
SET 'LDOWN,FALSE-VALUE
SET 'NORTH,FALSE-VALUE
SET 'SOUTH,FALSE-VALUE
SET 'EAST,FALSE-VALUE
SET 'WEST,FALSE-VALUE
SET 'COUNT,0
PRINTI " Thanks to your sonar-like bat senses, you can tell that there are surfaces "
ZERO? MAZE-CROSSED /?ELS9
GET POST-UP-EXITS,ROOM-NUMBER
ZERO? STACK /?THN6
?ELS9: ZERO? MAZE-CROSSED \?CND3
GET PRE-UP-EXITS,ROOM-NUMBER
ZERO? STACK \?CND3
?THN6: SET 'LUP,TRUE-VALUE
INC 'COUNT
?CND3: ZERO? MAZE-CROSSED /?ELS18
GET POST-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK /?THN15
?ELS18: ZERO? MAZE-CROSSED \?CND12
GET PRE-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \?CND12
?THN15: SET 'LDOWN,TRUE-VALUE
INC 'COUNT
?CND12: ZERO? MAZE-CROSSED /?ELS27
GET POST-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK /?THN24
?ELS27: ZERO? MAZE-CROSSED \?CND21
GET PRE-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK \?CND21
?THN24: SET 'NORTH,TRUE-VALUE
INC 'COUNT
?CND21: ZERO? MAZE-CROSSED /?ELS36
GET POST-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK /?THN33
?ELS36: ZERO? MAZE-CROSSED \?CND30
GET PRE-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK \?CND30
?THN33: SET 'SOUTH,TRUE-VALUE
INC 'COUNT
?CND30: ZERO? MAZE-CROSSED /?ELS45
GET POST-EAST-EXITS,ROOM-NUMBER
ZERO? STACK /?THN42
?ELS45: ZERO? MAZE-CROSSED \?CND39
GET PRE-EAST-EXITS,ROOM-NUMBER
ZERO? STACK \?CND39
?THN42: SET 'EAST,TRUE-VALUE
INC 'COUNT
?CND39: ZERO? MAZE-CROSSED /?ELS54
GET POST-WEST-EXITS,ROOM-NUMBER
ZERO? STACK /?THN51
?ELS54: ZERO? MAZE-CROSSED \?CND48
GET PRE-WEST-EXITS,ROOM-NUMBER
ZERO? STACK \?CND48
?THN51: SET 'WEST,TRUE-VALUE
INC 'COUNT
?CND48: ZERO? LUP /?CND57
EQUAL? COUNT,1 \?ELS63
PRINTI " and "
JUMP ?CND61
?ELS63: ZERO? X /?CND61
PRINTI ", "
?CND61: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "above you"
?CND57: ZERO? LDOWN /?CND73
EQUAL? COUNT,1 \?ELS79
PRINTI " and "
JUMP ?CND77
?ELS79: ZERO? X /?CND77
PRINTI ", "
?CND77: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "below you"
?CND73: ZERO? NORTH /?CND89
EQUAL? COUNT,1 \?ELS95
PRINTI " and "
JUMP ?CND93
?ELS95: ZERO? X /?CND93
PRINTI ", "
?CND93: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the north"
?CND89: ZERO? SOUTH /?CND105
EQUAL? COUNT,1 \?ELS111
PRINTI " and "
JUMP ?CND109
?ELS111: ZERO? X /?CND109
PRINTI ", "
?CND109: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the south"
?CND105: ZERO? EAST /?CND121
EQUAL? COUNT,1 \?ELS127
PRINTI " and "
JUMP ?CND125
?ELS127: ZERO? X /?CND125
PRINTI ", "
?CND125: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the east"
?CND121: ZERO? WEST /?CND137
EQUAL? COUNT,1 \?ELS143
PRINTI " and "
JUMP ?CND141
?ELS143: ZERO? X /?CND141
PRINTI ", "
?CND141: SET 'X,TRUE-VALUE
DEC 'COUNT
PRINTI "to the west"
?CND137: PRINTI "."
RTRUE
.FUNCT MAZE-EXIT-F
ZERO? MAZE-CROSSED /?ELS5
CALL MAZE-TO-TABLE,ROOM-NUMBER
EQUAL? PRSO,P?UP \?ELS9
ZERO? FLYING \?ELS12
CALL CANT-JUMP
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS12: GET POST-UP-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS17
CALL HIT-WALL
RFALSE
?ELS17: GET POST-UP-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS9: EQUAL? PRSO,P?DOWN \?ELS21
ZERO? FLYING \?ELS24
CALL SOLID-FLOOR
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS24: GET POST-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS29
CALL HIT-WALL
RFALSE
?ELS29: GET POST-DOWN-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS21: EQUAL? PRSO,P?NORTH \?ELS33
GET POST-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS36
CALL HIT-WALL
RFALSE
?ELS36: GET POST-NORTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS33: EQUAL? PRSO,P?SOUTH \?ELS40
GET POST-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS43
CALL HIT-WALL
RFALSE
?ELS43: GET POST-SOUTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND7
?ELS40: EQUAL? PRSO,P?EAST \?ELS47
GET POST-EAST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS50
CALL HIT-WALL
RFALSE
?ELS50: GET POST-EAST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,30 \?CND7
SET 'ROOM-NUMBER,24
RETURN HOLLOW
?ELS47: EQUAL? PRSO,P?WEST \?CND7
GET POST-WEST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS60
CALL HIT-WALL
RFALSE
?ELS60: GET POST-WEST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,40 \?CND58
SET 'ROOM-NUMBER,13
RETURN OUTSIDE-GLASS-DOOR
?CND58:
?CND7: CALL TABLE-TO-MAZE,ROOM-NUMBER
CALL V-LOOK
CALL PLUMMET
RFALSE
?ELS5: CALL MAZE-TO-TABLE,ROOM-NUMBER
EQUAL? PRSO,P?UP \?ELS70
ZERO? FLYING \?ELS73
CALL CANT-JUMP
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS73: GET PRE-UP-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS78
CALL HIT-WALL
RFALSE
?ELS78: GET PRE-UP-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS70: EQUAL? PRSO,P?DOWN \?ELS82
ZERO? FLYING \?ELS85
CALL SOLID-FLOOR
CALL TABLE-TO-MAZE,ROOM-NUMBER
RFALSE
?ELS85: GET PRE-DOWN-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS90
CALL HIT-WALL
RFALSE
?ELS90: GET PRE-DOWN-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS82: EQUAL? PRSO,P?NORTH \?ELS94
GET PRE-NORTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS97
CALL HIT-WALL
RFALSE
?ELS97: GET PRE-NORTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS94: EQUAL? PRSO,P?SOUTH \?ELS101
GET PRE-SOUTH-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS104
CALL HIT-WALL
RFALSE
?ELS104: GET PRE-SOUTH-EXITS,ROOM-NUMBER >ROOM-NUMBER
JUMP ?CND68
?ELS101: EQUAL? PRSO,P?EAST \?ELS108
GET PRE-EAST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS111
CALL HIT-WALL
RFALSE
?ELS111: GET PRE-EAST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,30 \?CND68
ADD SCORE,HOLLOW-POINT >SCORE
SET 'HOLLOW-POINT,0
SET 'ROOM-NUMBER,24
RETURN HOLLOW
?ELS108: EQUAL? PRSO,P?WEST \?CND68
GET PRE-WEST-EXITS,ROOM-NUMBER
ZERO? STACK \?ELS121
CALL HIT-WALL
RFALSE
?ELS121: GET PRE-WEST-EXITS,ROOM-NUMBER >ROOM-NUMBER
EQUAL? ROOM-NUMBER,40 \?CND119
SET 'ROOM-NUMBER,13
RETURN OUTSIDE-GLASS-DOOR
?CND119:
?CND68: CALL TABLE-TO-MAZE,ROOM-NUMBER
CALL V-LOOK
CALL PLUMMET
RFALSE
.FUNCT HIT-WALL
PRINTI "BONK! You "
ZERO? FLYING /?ELS5
PRINTI "fly"
JUMP ?CND3
?ELS5: PRINTI "walk"
?CND3: PRINTR " right into an almost invisible wall of glass -- a stunning blow!"
.FUNCT CANT-JUMP
PRINTR "You can't possibly jump that high."
.FUNCT SOLID-FLOOR
PRINTR "Fortunately, the floor is solid."
.FUNCT PLUMMET
ZERO? FLYING \FALSE
CALL NO-FLOOR?
ZERO? STACK /FALSE
CALL JIGS-UP,STR?290
RFALSE
.FUNCT MAZE-TO-TABLE,LOC,CNT=0,F,N
FIRST? GLASS-MAZE >F /?KLU23
?KLU23:
?PRG1: ZERO? F /TRUE
NEXT? F >N /?KLU24
?KLU24: EQUAL? F,WINNER \?ELS11
JUMP ?CND9
?ELS11: FSET? F,TAKEBIT /?THN14
EQUAL? F,DORN-BEAST-CORPSE \?CND9
?THN14:
?PRG16: GET MAZE-TABLE,CNT
ZERO? STACK \?ELS20
PUT MAZE-TABLE,CNT,LOC
ADD CNT,1
PUT MAZE-TABLE,STACK,F
ADD CNT,2 >CNT
MOVE F,DIAL
JUMP ?CND9
?ELS20: ADD CNT,2 >CNT
JUMP ?PRG16
?CND9: SET 'F,N
JUMP ?PRG1
.FUNCT TABLE-TO-MAZE,LOC,TABLE=MAZE-TABLE,CNT=0
?PRG1: LESS? CNT,MAZE-TABLE-LENGTH \TRUE
GET MAZE-TABLE,CNT
EQUAL? STACK,LOC \?CND3
PUT MAZE-TABLE,CNT,0
ADD CNT,1
GET MAZE-TABLE,STACK
MOVE STACK,GLASS-MAZE
?CND3: ADD CNT,2 >CNT
JUMP ?PRG1
.FUNCT DROP-IN-MAZE,CNT=0,NEW-ROOM=0
ZERO? MAZE-CROSSED /?ELS3
EQUAL? ROOM-NUMBER,12 \?ELS7
SET 'NEW-ROOM,3
JUMP ?CND1
?ELS7: EQUAL? ROOM-NUMBER,13 \?ELS9
SET 'NEW-ROOM,4
JUMP ?CND1
?ELS9: EQUAL? ROOM-NUMBER,16 \?ELS11
SET 'NEW-ROOM,7
JUMP ?CND1
?ELS11: EQUAL? ROOM-NUMBER,18 \?ELS13
SET 'NEW-ROOM,9
JUMP ?CND1
?ELS13: EQUAL? ROOM-NUMBER,19 \?ELS15
SET 'NEW-ROOM,10
JUMP ?CND1
?ELS15: EQUAL? ROOM-NUMBER,20 \?ELS17
SET 'NEW-ROOM,11
JUMP ?CND1
?ELS17: EQUAL? ROOM-NUMBER,25 \?ELS19
SET 'NEW-ROOM,7
JUMP ?CND1
?ELS19: EQUAL? ROOM-NUMBER,27 \?CND1
SET 'NEW-ROOM,9
JUMP ?CND1
?ELS3: EQUAL? ROOM-NUMBER,10 \?ELS26
SET 'NEW-ROOM,1
JUMP ?CND1
?ELS26: EQUAL? ROOM-NUMBER,12 \?ELS28
SET 'NEW-ROOM,3
JUMP ?CND1
?ELS28: EQUAL? ROOM-NUMBER,16 \?ELS30
SET 'NEW-ROOM,7
JUMP ?CND1
?ELS30: EQUAL? ROOM-NUMBER,20 \?ELS32
SET 'NEW-ROOM,11
JUMP ?CND1
?ELS32: EQUAL? ROOM-NUMBER,21 \?ELS34
SET 'NEW-ROOM,3
JUMP ?CND1
?ELS34: EQUAL? ROOM-NUMBER,26 \?CND1
SET 'NEW-ROOM,17
?CND1: ZERO? NEW-ROOM \?CND37
PRINTR "Bug #14"
?CND37:
?PRG42: GET MAZE-TABLE,CNT
ZERO? STACK \?ELS46
PUT MAZE-TABLE,CNT,NEW-ROOM
ADD CNT,1
PUT MAZE-TABLE,STACK,PRSO
ADD CNT,2 >CNT
RTRUE
?ELS46: ADD CNT,2 >CNT
JUMP ?PRG42
.FUNCT REARRANGE-MAZE-TABLE,CNT=0
?PRG1: LESS? CNT,MAZE-TABLE-LENGTH \TRUE
GET MAZE-TABLE,CNT
EQUAL? STACK,12 \?ELS7
PUT MAZE-TABLE,CNT,3
JUMP ?CND3
?ELS7: GET MAZE-TABLE,CNT
EQUAL? STACK,13 \?ELS9
PUT MAZE-TABLE,CNT,4
JUMP ?CND3
?ELS9: GET MAZE-TABLE,CNT
EQUAL? STACK,16 \?ELS11
PUT MAZE-TABLE,CNT,7
JUMP ?CND3
?ELS11: GET MAZE-TABLE,CNT
EQUAL? STACK,18 \?ELS13
PUT MAZE-TABLE,CNT,9
JUMP ?CND3
?ELS13: GET MAZE-TABLE,CNT
EQUAL? STACK,19 \?ELS15
PUT MAZE-TABLE,CNT,10
JUMP ?CND3
?ELS15: GET MAZE-TABLE,CNT
EQUAL? STACK,20 \?ELS17
PUT MAZE-TABLE,CNT,11
JUMP ?CND3
?ELS17: GET MAZE-TABLE,CNT
EQUAL? STACK,25 \?ELS19
PUT MAZE-TABLE,CNT,7
JUMP ?CND3
?ELS19: GET MAZE-TABLE,CNT
EQUAL? STACK,27 \?CND3
PUT MAZE-TABLE,CNT,9
?CND3: ADD CNT,2 >CNT
JUMP ?PRG1
.FUNCT HOLLOW-F,RARG
EQUAL? RARG,M-END \FALSE
CALL HELD?,SPELL-BOOK
ZERO? STACK /FALSE
MOVE SPELL-BOOK,DIAL
PRINTR """Caw! Caw!"" A giant bird of prey with a fondness for gnusto-receptive paper swoops down and flies off with your spell book."
.FUNCT CHIMNEY-F
EQUAL? HERE,HOLLOW \FALSE
EQUAL? PRSO,CHIMNEY \?ELS10
SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,BRICK-STRUCTURE,PRSI
RTRUE
?ELS10: SET 'PERFORMING-SPELL,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,BRICK-STRUCTURE
RTRUE
.FUNCT BRICK-STRUCTURE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The structure is about two feet on each side, and extends up from the ground about three feet. Except for a large quantity of soot around the opening, it looks a lot like a small, rectangular well."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS9
PRINTR "The opening is dark and you can only see a few feet into it."
?ELS9: EQUAL? PRSA,V?CLIMB-DOWN,V?ENTER \?ELS13
CALL DO-WALK,P?DOWN
RSTACK
?ELS13: EQUAL? PRSA,V?PUT \?ELS15
EQUAL? PRSI,BRICK-STRUCTURE \?ELS15
MOVE PRSO,FIREPLACE
EQUAL? PRSO,SWANZO-SCROLL \?CND18
CALL QUEUE,I-DORN-BEAST,2
PUT STACK,0,1
?CND18: PRINTI "The "
PRINTD PRSO
PRINTR " disappears into the shaft."
?ELS15: EQUAL? PRSA,V?REACH-IN \?ELS24
PRINTR "The shaft extends beyond your reach."
?ELS24: EQUAL? PRSA,V?THROUGH \FALSE
CALL DO-WALK,P?DOWN
RSTACK
.FUNCT DORN-BEAST-F
EQUAL? PRSA,V?RESEARCH \FALSE
CALL PERFORM,V?RESEARCH,LOBBY
RTRUE
.FUNCT CORPSE-F
EQUAL? PRSA,V?MALYON \FALSE
CALL JIGS-UP,STR?296
RSTACK
.FUNCT I-DORN-BEAST
CALL QUEUE,I-DORN-BEAST,-1
PUT STACK,0,1
EQUAL? HERE,HOLLOW \?ELS5
ZERO? DORN-BEAST-WARNING /?ELS10
CALL DORN-DEATH
RSTACK
?ELS10: MOVE DORN-BEAST,HERE
SET 'DORN-BEAST-WARNING,TRUE-VALUE
CRLF
PRINTR "With a loud roar, a dreadfully huge dorn beast emerges from the shadows at the base of the cliff and gallops toward you."
?ELS5: FSET DORN-BEAST,NDESCBIT
ZERO? DORN-BEAST-WARNING \?ELS22
SET 'DORN-BEAST-WARNING,TRUE-VALUE
CRLF
PRINTR "From outside the maze, you hear the bellowing of a ferocious dorn beast!"
?ELS22: EQUAL? ROOM-NUMBER,DORN-BEAST-ROOM,LAST-DORN-ROOM \?ELS26
CRLF
CALL DORN-DEATH
RSTACK
?ELS26: CRLF
PRINTI "The dorn beast rushes after you. Its ear-splitting bellowing resounds throughout the glass maze."
EQUAL? ROOM-NUMBER,27 \?ELS33
SET 'SPLATTERED,TRUE-VALUE
CALL INT,I-DORN-BEAST
PUT STACK,0,0
MOVE DORN-BEAST,DIAL
PUT MAZE-TABLE,38,9
PUT MAZE-TABLE,39,DORN-BEAST-CORPSE
PRINTI " Suddenly, the dorn-beast realizes that it is galloping through midair, and gives a surprisingly high-pitched squeal. It claws frantically at thin air, trying desperately to invent dorn beast flight. You happily notice that dorn beasts do not so much fly as plummet."
JUMP ?CND31
?ELS33: SET 'LAST-DORN-ROOM,DORN-BEAST-ROOM
SET 'DORN-BEAST-ROOM,ROOM-NUMBER
MOVE DORN-BEAST,HERE
?CND31: CRLF
RTRUE
.FUNCT DORN-DEATH
CALL JIGS-UP,STR?297
RSTACK
.ENDI