mirror of
https://github.com/historicalsource/sorcerer
synced 2024-05-26 04:48:32 +03:00
625 lines
15 KiB
Plaintext
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
|