Final Revision

master
historicalsource 2019-04-13 21:05:06 -04:00
parent 826abeb339
commit fc9385cb7d
55 changed files with 31106 additions and 65 deletions

631
castle.zap Normal file
View File

@ -0,0 +1,631 @@
.FUNCT INSIDE-GATE-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
ZERO? CASTLE-ENTER \?ELS5
SET 'CASTLE-ENTER,TRUE-VALUE
PRINTI "As you pass through the gate, you feel that your mind is being probed. After a moment, it is released or, perhaps, discarded as uninteresting."
CRLF
CRLF
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
PRINTR "You are just inside what appears to be the main entrance to the castle. An iron gate, standing wide open, looms to the west. Through it, a narrow road can be seen winding through low, smoky hills. Before you, to the east, is a huge open courtyard. To the north and the south are archways leading to the interior of the castle."
.FUNCT IRON-GATE-F
EQUAL? PRSA,V?UNLOCK,V?OPEN \?ELS5
PRINTR "The gate is secure; it cannot be unlocked."
?ELS5: EQUAL? PRSA,V?CLOSE \?ELS9
PRINTR "It is too heavy to move."
?ELS9: EQUAL? PRSA,V?REZROV \FALSE
ADD SCORE,ENTRY-POINT >SCORE
SET 'ENTRY-POINT,0
PRINTI "The chains of the iron gate fly into the air and vanish. The gate flies open and a blast of cold air fills your lungs."
CRLF
FSET IRON-GATE-CHAINS,INVISIBLE
FSET IRON-GATE,OPENBIT
RTRUE
.FUNCT ARCH-F
EQUAL? PRSA,V?THROUGH \FALSE
EQUAL? HERE,PEBBLED-PATH \?ELS10
CALL DO-WALK,P?SOUTH
RSTACK
?ELS10: EQUAL? HERE,INSIDE-GATE \?ELS12
PRINTR "You should specify a compass direction, since there are two archways."
?ELS12: CALL DO-WALK,P?NORTH
RSTACK
.FUNCT BED-F,RARG=0
EQUAL? RARG,M-BEG \?ELS5
EQUAL? PRSA,V?WALK \?ELS10
PRINTR "You'll have to get up first. The bed is so comfy you would almost rather not."
?ELS10: EQUAL? PRSA,V?WEAR,V?CLIMB-ON,V?BOARD \?ELS14
PRINTR "You already are."
?ELS14: EQUAL? PRSA,V?PUSH,V?MOVE,V?TAKE /?THN21
EQUAL? PRSA,V?CLOSE,V?OPEN,V?RUB \FALSE
?THN21: IN? PRSO,WINNER /FALSE
PRINTR "You can't do that from your resting position."
?ELS5: EQUAL? RARG,M-END /FALSE
EQUAL? BED,PRSO,PRSI \FALSE
EQUAL? PRSA,V?WEAR,V?CLIMB-ON,V?BOARD \?ELS30
MOVE WINNER,BED
SUB MOVES,LAST-SLEEP
LESS? STACK,MOVES-PER-DAY \?ELS35
PRINTR "The bed is very comfortable and soft. In fact, you feel sort of sleepy just lying on it."
?ELS35: PRINTI "Lying on this soft bed puts you to sleep."
CRLF
CALL PERFORM,V?SLEEP
RTRUE
?ELS30: EQUAL? PRSA,V?WALK-TO \?ELS43
CALL PERFORM,V?BOARD,BED
RTRUE
?ELS43: EQUAL? PRSA,V?DROP,V?DISEMBARK \?ELS45
IN? WINNER,BED \?ELS45
MOVE WINNER,HERE
PRINTR "Ah, that was a comfortable bed! But you're now on your own feet again."
?ELS45: EQUAL? PRSA,V?EXAMINE \?ELS51
EQUAL? PRSO,BED \?ELS51
PRINTR "The feather bed looks as though it would be quite comfy to sleep on."
?ELS51: EQUAL? PRSA,V?SHAKE \FALSE
EQUAL? PRSO,BED \FALSE
FIRST? BEDPOST \FALSE
PRINTR "When you shake the bed, one of the bedposts rattles as though something were loose inside it."
.FUNCT BEDPOST-F
EQUAL? PRSA,V?SEARCH,V?EXAMINE \?ELS5
FSET? BEDPOST,OPENBIT \?ELS10
PRINTR "The bedpost is open."
?ELS10: IN? BEDPOST-BUTTON,BED \?ELS14
PRINTR "A careful examination reveals the outline of a small compartment, and near it an ornate carving which looks like a button. You could never have found it on your own."
?ELS14: PRINTR "A careful examination reveals a thin line which might well be the outline of a small compartment, but the mechanism for opening it is not discernable."
?ELS5: EQUAL? PRSA,V?OPEN \?ELS22
PRINTR "Maybe it can be opened, but it's unclear how."
?ELS22: EQUAL? PRSA,V?REZROV \?ELS26
FSET BEDPOST,OPENBIT
IN? CHARM-SCROLL,BEDPOST \?ELS31
ADD SCORE,CHARM-POINT >SCORE
SET 'CHARM-POINT,0
CALL THIS-IS-IT,CHARM-SCROLL
PRINT POPS-OPEN
CRLF
RTRUE
?ELS31: PRINTR "The bedpost pops open."
?ELS26: EQUAL? PRSA,V?SHAKE \FALSE
FIRST? BEDPOST \FALSE
PRINTR "There is something rustling around inside the bedpost."
.FUNCT COMPARTMENT-F
IN? BEDPOST-BUTTON,BED /?ELS5
EQUAL? PRSA,V?SEARCH,V?EXAMINE \?ELS5
PRINTR "A very thin line indicates that a hidden compartment might be imbedded in the bedpost, but it's not clear how to open it."
?ELS5: CALL PERFORM,PRSA,BEDPOST
RTRUE
.FUNCT BEDPOST-BUTTON-F
EQUAL? PRSA,V?PUSH \FALSE
FSET BEDPOST,OPENBIT
ADD SCORE,CHARM-POINT >SCORE
SET 'CHARM-POINT,0
IN? CHARM-SCROLL,BEDPOST \TRUE
CALL THIS-IS-IT,CHARM-SCROLL
PRINT POPS-OPEN
CRLF
RTRUE
.FUNCT CELL-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,DUNGEON \?ELS5
CALL DO-WALK,P?NORTH
RSTACK
?ELS5: EQUAL? PRSA,V?DROP \?ELS9
EQUAL? HERE,NORTH-CELL \?ELS9
CALL DO-WALK,P?SOUTH
RSTACK
?ELS9: EQUAL? PRSA,V?SEARCH \FALSE
EQUAL? HERE,NORTH-CELL \FALSE
CALL PERFORM,V?LOOK
RTRUE
.FUNCT NORTH-CELL-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is a damp and unhealthy dungeon cell with writing on the walls. The rusty door of the cell is "
FSET? NORTH-CELL-DOOR,OPENBIT \?ELS10
PRINTI "open."
JUMP ?CND8
?ELS10: PRINTI "closed."
?CND8: ZERO? NORTH-BLOCK-FLAG /?ELS19
PRINTI " A square block sits beside a passage in the eastern wall."
JUMP ?CND17
?ELS19: ZERO? NORTH-BLOCK-FLAG \?CND17
FSET? NORTH-BLOCK,NDESCBIT /?CND17
PRINTI " A square block in the east wall seems to be loose."
?CND17: CRLF
RTRUE
.FUNCT CELL-DOOR-F
EQUAL? PRSA,V?OPEN \?ELS9
FSET? PRSO,OPENBIT \?THN6
?ELS9: EQUAL? PRSA,V?CLOSE \FALSE
FSET? PRSO,OPENBIT \FALSE
?THN6: PRINTI "The door is very rusty and reluctantly "
FSET? PRSO,OPENBIT \?ELS16
FCLEAR PRSO,OPENBIT
PRINTI "close"
JUMP ?CND14
?ELS16: FSET PRSO,OPENBIT
PRINTI "open"
?CND14: PRINTR "s."
.FUNCT STONE-WALL-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
PRINTI "The wall is covered with graffiti and scratchings marking time's passage."
CRLF
EQUAL? HERE,NORTH-CELL \TRUE
ZERO? NORTH-BLOCK-FLAG \TRUE
FCLEAR NORTH-BLOCK,NDESCBIT
PRINTI "You notice that the mortar holding a square block has been chipped away, and the block is loose."
CRLF
RTRUE
.FUNCT NORTH-BLOCK-F
EQUAL? PRSA,V?TAKE,V?MOVE \FALSE
ZERO? NORTH-BLOCK-FLAG \?ELS10
SET 'NORTH-BLOCK-FLAG,TRUE-VALUE
PRINTR "You pull the block out of the crumbling wall, revealing a dark passage leading east."
?ELS10: PRINTR "It's too heavy."
.FUNCT SECRET-PASSAGE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This is a crudely carved secret passage. It appears to have been hollowed out by (perhaps) generations of prisoners."
ZERO? NORTH-BLOCK-FLAG /?ELS10
PRINTI " A passage leads west."
JUMP ?CND8
?ELS10: PRINTI " A square block in the western wall seems to be loose."
?CND8: PRINTR " A short, crudely hewn passage leads up."
.FUNCT SOUTH-GATE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "This interior courtyard stands at the southern entrance to the castle, where a small rusty gate "
FSET? RUSTY-GATE,OPENBIT \?ELS10
PRINTI "is standing open and slowly swaying in a gentle sea breeze"
JUMP ?CND8
?ELS10: PRINTI "stands closed"
?CND8: PRINTR ". Beyond the gate can be seen a small meadow and, beyond that, a white beach on a misty sea. Passages enter the castle proper to the north, east, and west."
.FUNCT BANQUET-STUFF-F
EQUAL? PRSA,V?CLOSE,V?OPEN,V?REZROV /?THN8
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \FALSE
?THN8: FSET? PRSO,CONTBIT \FALSE
FCLEAR PRSO,CONTBIT
CALL PERFORM,PRSA,PRSO
FSET PRSO,CONTBIT
RTRUE
.FUNCT BANQUET-ILLUSION-F
EQUAL? PRSA,V?KULCAD \?ELS5
REMOVE BANQUET-ILLUSION
PRINTR "The festive banquet setting dissolves, leaving a large hall littered with broken benches."
?ELS5: EQUAL? PRSA,V?BOARD,V?CLIMB-ON \?ELS9
EQUAL? PRSO,BENCHES,BTABLES \?ELS9
PRINTR "It's not worth the bother."
?ELS9: EQUAL? PRSA,V?MOVE,V?TAKE \FALSE
IN? BANQUET-ILLUSION,HERE \?ELS20
PRINTR "They seem to be protected by some magic; you can't budge them."
?ELS20: PRINTR "You realize there is no point in that."
.FUNCT BANQUET-FOOD-F
EQUAL? PRSA,V?TAKE,V?EAT \?ELS5
PRINTR "The food is quite delicious, but somehow unsatisfying."
?ELS5: CALL BANQUET-ILLUSION-F
RSTACK
.FUNCT GUARD-WARNING-F,RARG,LP
LOC PLAYER >LP
EQUAL? RARG,M-LOOK \?ELS5
EQUAL? LP,BANQUET-HALL \?ELS8
FSET? BANQUET-HALL,RMUNGBIT \?ELS11
REMOVE BANQUET-ILLUSION
PRINTI "This desolate hall is nearly empty, save for a few long benches which are scattered throughout the room. The walls seem to be scorched, and everywhere are signs of decay. A sickening odor pervades the room, and wisps of acrid black smoke can be seen to the north. A wide passage leads south, and a small one opens to the east."
CRLF
JUMP ?CND6
?ELS11: IN? BANQUET-ILLUSION,BANQUET-HALL \?ELS15
PRINTI "A banquet has been set here for hundreds. Long benches fill the room, each covered with finest linen and set with golden cutlery and glittering crystal. Luscious food weighs down each table, and candles light the room with a festive glow. The room can be entered by a north-south corridor and a small opening to the east, from which an odd, acrid smell issues."
CRLF
JUMP ?CND6
?ELS15: PRINTI "This hall is completely empty, except for some long benches which are scattered throughout the room."
CRLF
JUMP ?CND6
?ELS8: EQUAL? LP,LIBRARY \FALSE
GETP LP,P?LDESC
PRINT STACK
CRLF
?CND6: IN? GANG-OF-FOUR,LP /TRUE
PRINTI "To the "
EQUAL? LP,LIBRARY \?ELS35
PRINTI "south"
JUMP ?CND33
?ELS35: PRINTI "north"
?CND33: PRINTR " you can hear the sound of a group of low, guttural voices."
?ELS5: EQUAL? RARG,M-BEG \?ELS45
EQUAL? WINNER,PLAYER \?ELS45
EQUAL? PRSA,V?WALK \?ELS45
ZERO? PROTECTED-FROM-EVIL \?ELS45
IN? GANG-OF-FOUR,LP \?ELS45
EQUAL? LP,LIBRARY \?ELS56
EQUAL? PRSO,P?SOUTH /?THN53
?ELS56: EQUAL? LP,BANQUET-HALL \FALSE
EQUAL? PRSO,P?NORTH \FALSE
?THN53: PRINTI "In your confused and fearful state, you have blundered right into the advancing guards! They grab you, not too gently, and take you away. You end up at a huge temple."
CRLF
CRLF
CALL QUEUE,I-GUARDS-ARRIVE,0
CALL QUEUE,I-GANG,0
CALL TAKE-TO-TOWER
RTRUE
?ELS45: EQUAL? RARG,M-END \FALSE
RANDOM 100
GRTR? 30,STACK \FALSE
EQUAL? LP,LIBRARY,BANQUET-HALL \FALSE
IN? GANG-OF-FOUR,LP /FALSE
EQUAL? WINNER,PLAYER \?CND65
PRINTI "The low, guttural voices seem to be coming in your direction."
CRLF
?CND65: CALL QUEUE,I-GUARDS-ARRIVE,2
PUT STACK,0,1
RTRUE
.FUNCT I-GUARDS-ARRIVE,LP
LOC PLAYER >LP
EQUAL? LP,LIBRARY,BANQUET-HALL \FALSE
PRINTI "A group of four hunched and hairy shapes walks into your presence. "
ZERO? PROTECTED-FROM-EVIL \?ELS12
MOVE GANG-OF-FOUR,LP
PRINTI "They seem surprised to see you. After whispering a few guttural words to each other, they start to move toward you purposefully."
CRLF
SET 'GANG-FOLLOWS,0
CALL QUEUE,I-GANG,1
PUT STACK,0,1
RTRUE
?ELS12: PRINTR "They don't seem to take much notice of you, and they soon depart."
.FUNCT I-GANG
INC 'GANG-FOLLOWS
LOC PLAYER
IN? GANG-OF-FOUR,STACK \?ELS5
REMOVE GANG-OF-FOUR
ZERO? PROTECTED-FROM-EVIL /?ELS10
PRINTR "The group of hunched and hairy shapes glances at you disinterestedly, wanders around the room for a while, and then departs."
?ELS10: PRINTI "The group of hunched and hairy shapes takes you in their arms and escorts you into a huge temple."
CRLF
CRLF
CALL TAKE-TO-TOWER
RTRUE
?ELS5: LOC PLAYER
FSET? STACK,RMUNGBIT \?ELS19
PRINTI "The group of shapes follows you, intent on your capture! They seem to come alive in the desolation which fills this room."
CRLF
LOC PLAYER
MOVE GANG-OF-FOUR,STACK
CALL QUEUE,I-GANG,1
RTRUE
?ELS19: LESS? GANG-FOLLOWS,LOSSAGE \?ELS23
PRINTI "The group of shapes follows you into this undespoiled room, emboldened and eager for blood."
CRLF
LOC PLAYER
MOVE GANG-OF-FOUR,STACK
CALL QUEUE,I-GANG,1
RTRUE
?ELS23: PRINTI "Fortunately for you, the gang has stopped following! You relax for a moment and heave a sigh of relief."
CRLF
REMOVE GANG-OF-FOUR
RFALSE
.FUNCT GANG-OF-FOUR-F
EQUAL? PRSA,V?CLEESH \?ELS5
PRINTI "The group of shapes turns into a small convention of newts, who run away."
CRLF
CALL QUEUE,I-GANG,0
REMOVE GANG-OF-FOUR
RTRUE
?ELS5: EQUAL? PRSA,V?VAXUM \?ELS9
ZERO? PROTECTED-FROM-EVIL \FALSE
PRINTI "The shapes, who were on the verge of reaching you, seem to waver in their resolve. After a moment's pause, they leave the room together, talking in a less guttural tone which might correspond to cheerfulness."
CRLF
REMOVE GANG-OF-FOUR
CALL QUEUE,I-GANG,0
RTRUE
?ELS9: EQUAL? PRSA,V?GUNCHO \?ELS21
PRINTI "The shapes"
ZERO? PROTECTED-FROM-EVIL \?CND24
PRINTI ", on the verge of reaching you,"
?CND24: PRINTI " disappear, seeming to dwindle into the distance while remaining in the same spot. Eventually you can see them no longer."
CRLF
REMOVE GANG-OF-FOUR
RTRUE
?ELS21: EQUAL? PRSA,V?ZIFMIA \?ELS32
ZERO? PROTECTED-FROM-EVIL /?ELS32
CALL QUEUE,I-GANG,2
PUT STACK,0,1
PRINTR "The shapes, previously ignoring you, now approach with menace in their eyes."
?ELS32: EQUAL? PRSA,V?FROTZ \?ELS38
PRINTI "The shapes glow brightly from the frotz spell. This apparently doesn't appeal to them, as they shriek with horror and attempt to avert their gaze from themselves. Within a moment, they have run screaming from the room."
CRLF
REMOVE GANG-OF-FOUR
RTRUE
?ELS38: EQUAL? PRSA,V?NITFOL \FALSE
ZERO? PROTECTED-FROM-EVIL \FALSE
PRINTR "The shapes, whose language you understand instinctively, say something on the order of ""Blood for sacrifice!"", ""Master pleased!"", and other not-so-soothing words as they approach."
.FUNCT LITTER-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "You have no use for those things."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "They look as if they haven't been disturbed in a long time."
.FUNCT RAT-NEST-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "What on earth for?"
?ELS5: EQUAL? PRSA,V?MUNG,V?RUB \?ELS9
PRINTR "You poke around in the nest, but there doesn't seem to be anything of interest in there."
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "There's nothing in there."
.FUNCT OVEN-F
EQUAL? PRSA,V?REACH-IN,V?EXAMINE,V?LOOK-INSIDE \?ELS5
PRINTR "The oven contains nothing of interest, unless of course you have a hankering for rat's nests."
?ELS5: EQUAL? PRSA,V?REZROV,V?OPEN \?ELS9
FSET? OVEN,OPENBIT \?ELS14
PRINTR "The oven is already open."
?ELS14: FSET OVEN,OPENBIT
PRINTR "Opened."
?ELS9: EQUAL? PRSA,V?CLOSE \FALSE
FSET? OVEN,OPENBIT /?ELS27
PRINTR "The oven is already closed."
?ELS27: FCLEAR OVEN,OPENBIT
PRINTR "Closed."
.FUNCT HEAP-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "That would be rather undignified."
?ELS5: EQUAL? PRSA,V?DIG,V?LOOK-INSIDE,V?SEARCH \FALSE
PRINTR "There is nothing but rotted food there."
.FUNCT JUNCTION-F,RARG
EQUAL? RARG,M-BEG \FALSE
EQUAL? WINNER,PLAYER \FALSE
ZERO? PROTECTED-FROM-EVIL \FALSE
PRINTI "A host of hunched and hairy shapes walk into the hall before you can do anything and, seeing you, take you in their arms and escort you to the west into a huge temple."
CRLF
CRLF
CALL GOTO,TEMPLE
RSTACK
.FUNCT ADV-VS-GANG,L
LOC ADVENTURER >L
IN? WINNER,L \?ELS5
IN? GANG-OF-FOUR,L \?ELS5
IN? WINNER,LIBRARY \?ELS12
PUSH NORTH-GATE
JUMP ?CND8
?ELS12: PUSH EAST-HALL
?CND8: MOVE ADVENTURER,STACK
PRINTR "The adventurer softly, silently, and stealthily disappears."
?ELS5: IN? ADVENTURER,JUNCTION \FALSE
LOC WINNER
EQUAL? STACK,LIBRARY,BANQUET-HALL \FALSE
PRINTI "You hear yelling, oaths, and the crash of metal coming from the "
IN? WINNER,LIBRARY \?ELS27
PUSH STR?70
JUMP ?CND23
?ELS27: PUSH STR?74
?CND23: PRINT STACK
PRINTI ". It sounds like a swordfight! Suddenly, everything is quiet."
CRLF
RANDOM 100
GRTR? 70,STACK \?ELS34
IN? WINNER,LIBRARY \?ELS39
PUSH NORTH-GATE
JUMP ?CND35
?ELS39: PUSH EAST-HALL
?CND35: MOVE ADVENTURER,STACK
SET 'ADV-OLD-LOC,HERE
LOC ADVENTURER >ADV-NEW-LOC
PRINTI "Then the adventurer, running at an impressive speed, tears by you heading "
IN? WINNER,LIBRARY \?ELS48
PUSH STR?74
JUMP ?CND44
?ELS48: PUSH STR?70
?CND44: PRINT STACK
PRINTR ". He seems to have been in a fight."
?ELS34: REMOVE ADVENTURER
MOVE SKELETON,TOWER-S
CALL QUEUE,I-ADVENTURER,0
RSTACK
.FUNCT SKELETON-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "They're quite heavy, and you don't need them anyway."
?ELS5: EQUAL? PRSA,V?KILL,V?ATTACK,V?MUNG \FALSE
PRINTR "Show some respect! Especially considering that he got that way because of you!"
.FUNCT VOICES-F
EQUAL? HERE,ENGINE-ROOM,SE-TOWER \?ELS5
EQUAL? PRSA,V?EXAMINE,V?LISTEN \FALSE
PRINTR "The noise is loud and screeching."
?ELS5: EQUAL? HERE,COURTYARD-3,ALTAR \?ELS14
EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "The voices are chanting something horrifying."
?ELS14: EQUAL? PRSA,V?LISTEN \?ELS23
PRINTR "You can't make out what they are saying, though it would be fair to say it's not too pleasant."
?ELS23: EQUAL? PRSA,V?ZIFMIA \?ELS27
PRINTI "The voices seem to be approaching. I hope you know what you're doing."
CRLF
CALL QUEUE,I-GUARDS-ARRIVE,1
PUT STACK,0,1
RTRUE
?ELS27: EQUAL? PRSA,V?NITFOL \FALSE
PRINTR "You can't use that spell on voices, only beings."
.FUNCT TUBES-PSEUDO
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
PRINTR "They are all empty."
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "As you touch each one, it crumbles to ash."
.FUNCT ASHES-PSEUDO
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "The ash slips through your fingers."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
EQUAL? HERE,LIBRARY \?ELS14
PRINTR "The ashes have rat tracks in them. Little rat thoroughfares head here and there, but most head in one direction."
?ELS14: PRINTR "The ashes are black and greasy."
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \FALSE
PRINTI "You find nothing of interest in the ashes"
EQUAL? HERE,LIBRARY \?CND25
PRINTI ", other than rat tracks heading this way and that"
?CND25: PRINTR "."
.FUNCT RAT-TRACKS-F
EQUAL? PRSA,V?EXAMINE,V?FOLLOW \FALSE
PRINTI "There are plenty of rat tracks here, going in various directions. One prominent rodentine thoroughfare stands out though, going as it does into a small hole in the wall."
CRLF
MOVE RAT-HOLE,HERE
RTRUE
.FUNCT RAT-HOLE-F,OBJ
FIRST? RAT-HOLE >OBJ /?KLU50
?KLU50: EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "You can't see anything in the rat hole."
?ELS5: EQUAL? PRSA,V?REACH-IN \?ELS9
PRINTI "You reach around for a moment and come up "
ZERO? OBJ \?ELS16
PRINTR "empty."
?ELS16: PRINTI "with something. It's "
CALL PRINTA,OBJ
PRINTI "."
CRLF
CALL THIS-IS-IT,OBJ
FCLEAR OBJ,INVISIBLE
ADD SCORE,QUENCH-POINT >SCORE
SET 'QUENCH-POINT,0
FSET RAT-HOLE,NDESCBIT
MOVE OBJ,WINNER
RTRUE
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE \?ELS24
PRINTR "It's too dark to see anything inside the hole."
?ELS24: EQUAL? PRSA,V?PUT \?ELS28
EQUAL? PRSI,RAT-HOLE \?ELS28
FIRST? RAT-HOLE \?ELS35
PRINTR "Something's blocking up the hole from inside."
?ELS35: GETP PRSO,P?SIZE
GRTR? STACK,5 \?ELS39
PRINTR "It won't fit."
?ELS39: FSET PRSO,INVISIBLE
MOVE PRSO,PRSI
PRINTR "Done."
?ELS28: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "How absurd!"
.FUNCT NORTH-GATE-OBJ-F
EQUAL? PRSA,V?REZROV \?ELS5
FSET? PRSO,OPENBIT /?ELS5
PRINTI "The rusted north gate magically creaks open far enough for you to leave."
CRLF
FSET PRSO,OPENBIT
FCLEAR PRSO,LOCKEDBIT
RTRUE
?ELS5: EQUAL? PRSA,V?OPEN \FALSE
FSET? PRSO,LOCKEDBIT \FALSE
PRINTR "The gate is rusted shut."
.FUNCT FOREST-1-F,RARG
EQUAL? RARG,M-ENTER \FALSE
IN? REPAIR-SCROLL,HERE \FALSE
FSET? REPAIR-SCROLL,TOUCHBIT /FALSE
CALL THIS-IS-IT,REPAIR-SCROLL
RFALSE
.FUNCT SWAMP-F,RARG=0
EQUAL? RARG,M-END \FALSE
EQUAL? PRSA,V?TELL /FALSE
PRINTI "The sounds of frogs and other swamp dwellers fill the air."
EQUAL? TALK-TO-ANIMAL?,FROG \?CND10
FSET? NEWT-SCROLL,INVISIBLE /?ELS15
PRINTI " The frogs are discussing "
CALL PICK-ONE,FROG-TALKS
PRINT STACK
JUMP ?CND10
?ELS15: PRINTI " The frogs say ""Look under the lily pad. Breep!"""
?CND10: CRLF
RFALSE
.FUNCT SWAMP-PSEUDO
EQUAL? PRSA,V?EXAMINE \?ELS5
CALL PERFORM,V?LOOK
RTRUE
?ELS5: EQUAL? PRSA,V?THROUGH \FALSE
PRINTR "There is probably quicksand there. At best you would get horribly muddy."
.FUNCT FROG-F
EQUAL? WINNER,FROG \?ELS5
EQUAL? PRSA,V?HELLO /?ELS5
PRINTR """Breep! No, thank you. Breep!"""
?ELS5: EQUAL? PRSA,V?LISTEN,V?HELLO \FALSE
PRINTI """Breep! "
EQUAL? TALK-TO-ANIMAL?,FROG \?CND14
CALL PICK-ONE,FROGGERS
PRINT STACK
PRINTI " "
?CND14: PRINTR "Breep!"""
.FUNCT LILY-PAD-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "There's not much to say about the lily pads except that they seem to make a cheery home for the frogs."
?ELS5: EQUAL? PRSA,V?CLIMB-ON,V?THROUGH \?ELS9
PRINTR "You sink into the goo, crushing a lily pad."
?ELS9: EQUAL? PRSA,V?LOOK-UNDER \FALSE
FSET? NEWT-SCROLL,INVISIBLE \?ELS18
FCLEAR NEWT-SCROLL,INVISIBLE
MOVE NEWT-SCROLL,WINNER
PRINTR "There is a damp scroll there, which you take into your hand."
?ELS18: PRINTR "There is nothing there but goo."
.ENDI

55
clock.zap Normal file
View File

@ -0,0 +1,55 @@
.FUNCT QUEUE,RTN,TICK,CINT
CALL INT,RTN >CINT
PUT CINT,C-TICK,TICK
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?ELS5
SUB C-INTS,C-INTLEN >C-INTS
ZERO? DEMON /?ELS7
SUB C-DEMONS,C-INTLEN >C-DEMONS
?ELS7: ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?ELS5: GET C,C-RTN
EQUAL? STACK,RTN \?CND3
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT CLOCKER,C,E,TICK,FLG=0
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: ZERO? P-WON /?ELS9
PUSH C-INTS
JUMP ?CND5
?ELS9: PUSH C-DEMONS
?CND5: ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG13: EQUAL? C,E \?ELS17
INC 'MOVES
RETURN FLG
?ELS17: GET C,C-ENABLED?
ZERO? STACK /?CND15
GET C,C-TICK >TICK
ZERO? TICK \?ELS22
JUMP ?CND15
?ELS22: SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND20
GET C,C-RTN
CALL STACK
ZERO? STACK /?CND20
SET 'FLG,TRUE-VALUE
?CND20:
?CND15: ADD C,C-INTLEN >C
JUMP ?PRG13
.ENDI

73
combat.log Normal file
View File

@ -0,0 +1,73 @@
20-Aug-86 17:05:25 ZILCH started. Load is 3.04.
SYS:ZILCH.EXE Z4
Compiling SS:<ENCHANTER>Z4.ZIL.4
[Classic Instructions]
*** ENCHANTER: Interlogic Fantasy ***
Compiling SS:<ENCHANTER>SYNTAX.ZIL.122
Compiling SS:<ENCHANTER>MACROS.ZIL.22
Compiling SS:<ENCHANTER>CLOCK.ZIL.3
Compiling SS:<ENCHANTER>MAIN.ZIL.86
Compiling SS:<ENCHANTER>GPARSER.ZIL.9
Compiling SS:<ENCHANTER>VERBS.ZIL.245
Compiling SS:<ENCHANTER>RECORD.ZIL.1
Compiling SS:<ENCHANTER>GLOBALS.ZIL.139
Compiling SS:<ENCHANTER>TERROR.ZIL.184
Compiling SS:<ENCHANTER>STAIR.ZIL.131
Compiling SS:<ENCHANTER>MAGIC.ZIL.277
Compiling SS:<ENCHANTER>KNOT.ZIL.51
Compiling SS:<ENCHANTER>PURLOINED.ZIL.185
Compiling SS:<ENCHANTER>CASTLE.ZIL.234
Compiling SS:<ENCHANTER>TEMPLE.ZIL.78
Compiling SS:<ENCHANTER>GALLERY.ZIL.40
Compiling SS:<ENCHANTER>EGG.ZIL.48
Compiling SS:<ENCHANTER>SLEEP.ZIL.85
Compiling SS:<ENCHANTER>GEARS.ZIL.159
Compiling SS:<ENCHANTER>OUTSIDE.ZIL.130
** Warning: Word "THROUGH" has two TPREP meanings: PR?THROUGH and PR?WITH
** Warning: Word "EXIT" has two TVERB meanings: ACT?EXIT and ACT?DROPCompiler halted.
Used 6:38.9 in 00:13:55.
ZAP started. Load is 2.00.
SYS:ZAP.EXE Z4
Assembling Z4.XZAP.4
Release: 29
64 Inserting Z4FREQ.XZAP.1 (626 bytes)
690 Inserting Z4DAT.ZAP.15 (20784 bytes)
21474 Inserting SYNTAX.ZAP.21 (0 bytes)
21474 Inserting MACROS.ZAP.21 (117 bytes)
21591 Inserting CLOCK.ZAP.21 (178 bytes)
21769 Inserting MAIN.ZAP.21 (2289 bytes)
24058 Inserting GPARSER.ZAP.5 (6898 bytes)
30956 Inserting VERBS.ZAP.23 (12130 bytes)
43086 Inserting RECORD.ZAP.13 (56 bytes)
43142 Inserting GLOBALS.ZAP.22 (2799 bytes)
45941 Inserting TERROR.ZAP.20 (4413 bytes)
50354 Inserting STAIR.ZAP.20 (5043 bytes)
55397 Inserting MAGIC.ZAP.19 (6509 bytes)
61906 Inserting KNOT.ZAP.19 (1368 bytes)
63274 Inserting PURLOINED.ZAP.19 (7343 bytes)
70617 Inserting CASTLE.ZAP.19 (6510 bytes)
77127 Inserting TEMPLE.ZAP.18 (3385 bytes)
80512 Inserting GALLERY.ZAP.18 (2162 bytes)
82674 Inserting EGG.ZAP.17 (1699 bytes)
84373 Inserting SLEEP.ZAP.17 (2358 bytes)
86731 Inserting GEARS.ZAP.17 (5826 bytes)
92557 Inserting OUTSIDE.ZAP.17 (3338 bytes)
95895 Inserting Z4STR.ZAP.15 (15231 bytes)
255 objects.
231 globals.
723 word vocabulary.
111126 bytes (109K).
21474 bytes of preload.
12653 bytes of impure.
Outputting symbol tables
Compiler halted.
Used 53.9 in 00:01:08.

22
crufty.xzap Normal file
View File

@ -0,0 +1,22 @@
.FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1
FSET? OBJ,INVISIBLE /FALSE
ZERO? P-NAM /?THN3
GETPT OBJ,P?SYNONYM >SYNS
PTSIZE SYNS
DIV STACK,2
SUB STACK,1
CALL ZMEMQ,P-NAM,SYNS,STACK
ZERO? STACK /FALSE
?THN3: ZERO? P-ADJ /?ELS8
GETPT OBJ,P?ADJECTIVE >SYNS
ZERO? SYNS /FALSE
PTSIZE SYNS
SUB STACK,1
CALL ZMEMQB,P-ADJ,SYNS,STACK
ZERO? STACK /FALSE
?ELS8: ZERO? P-GWIMBIT /TRUE
FSET? OBJ,P-GWIMBIT /TRUE
RFALSE
.ENDI

23
crufty.zap Normal file
View File

@ -0,0 +1,23 @@
.FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1
FSET? OBJ,INVISIBLE /FALSE
ZERO? P-NAM /?ELS5
GETPT OBJ,P?SYNONYM >SYNS
PTSIZE SYNS
DIV STACK,2
SUB STACK,1
CALL ZMEMQ,P-NAM,SYNS,STACK
ZERO? STACK /FALSE
?ELS5: ZERO? P-ADJ /?ELS9
GETPT OBJ,P?ADJECTIVE >SYNS
ZERO? SYNS /FALSE
PTSIZE SYNS
SUB STACK,1
CALL ZMEMQB,P-ADJ,SYNS,STACK
ZERO? STACK /FALSE
?ELS9: ZERO? P-GWIMBIT /TRUE
FSET? OBJ,P-GWIMBIT /TRUE
RFALSE
.ENDI

1
del.cmd Normal file
View File

@ -0,0 +1 @@
fdele /all:_*.*/keep:2/spec:zil,zap/delfn:*.*

176
egg.zap Normal file
View File

@ -0,0 +1,176 @@
.FUNCT JEWEL-CHESTS-F
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?ELS5
PRINTR "There's nothing inside."
?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS9
PRINTR "Don't bother. There's nothing inside anyway."
?ELS9: EQUAL? PRSA,V?PUT \FALSE
PRINTR "A waste of time. You'd probably forget where you put it."
.FUNCT EGG-KNOB-STATE,KNOB,VER?=0
ZERO? VER? \?THN6
FSET? KNOB,OPENBIT \FALSE
?THN6: PRINTI "The "
PRINTD KNOB
FSET? KNOB,OPENBIT \?ELS12
PRINTI " has been "
JUMP ?CND10
?ELS12: ZERO? VER? /?CND10
PRINTI " has not yet been "
?CND10: GETP KNOB,P?TEXT
PRINT STACK
PRINTI ". "
RTRUE
.FUNCT EGG-F
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
FSET? EGG,OPENBIT /?ELS5
PRINTR "The egg isn't open!"
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS11
PRINTI "This ornamented egg is both beautiful and complex. The egg itself is mother-of-pearl, but decorated with delicate gold traceries inlaid with jewels and other precious metals. On the surface are a lapis handle, an emerald knob, a silver slide, a golden crank, and a diamond-studded button carefully and unobtrusively imbedded in the decorations. These various protuberances are likely to be connected with some machinery inside."
CRLF
CALL EGG-KNOB-STATE,EGG-KNOB-1
CALL EGG-KNOB-STATE,EGG-KNOB-2
CALL EGG-KNOB-STATE,EGG-KNOB-3
CALL EGG-KNOB-STATE,EGG-KNOB-4
CALL EGG-KNOB-STATE,EGG-KNOB-5
PRINTI "The "
PRINTD PRSO
PRINTI " is "
FSET? PRSO,OPENBIT \?ELS18
PRINTI "open."
JUMP ?CND16
?ELS18: PRINTI "closed."
?CND16: CRLF
RTRUE
?ELS11: EQUAL? PRSA,V?PUT \?ELS26
EQUAL? PRSI,EGG \?ELS26
PRINTI "You can't put the "
PRINTD PRSO
PRINTR " inside the egg without damaging it."
?ELS26: EQUAL? PRSA,V?REZROV \?ELS32
FSET? EGG,OPENBIT /?ELS32
FSET EGG,OPENBIT
ADD SCORE,EGG-POINT >SCORE
SET 'EGG-POINT,0
PRINTI "The egg seems to come to life and each piece slides effortlessly in the correct pattern. The egg opens"
IN? DAMAGED-SCROLL,EGG \?CND37
FCLEAR DAMAGED-SCROLL,INVISIBLE
CALL THIS-IS-IT,DAMAGED-SCROLL
PRINTI ", revealing a shredded scroll inside, nestled among a profusion of shredders, knives, and other sharp instruments, cunningly connected to the knobs, buttons, etc. on the outside"
?CND37: PRINTR "."
?ELS32: EQUAL? PRSA,V?LOOK-INSIDE \?ELS45
FSET? PRSO,OPENBIT \?ELS45
FIRST? PRSO /?ELS45
PRINTR "On the inside of the egg are many complex cutting devices."
?ELS45: EQUAL? PRSA,V?OPEN \?ELS51
FSET? EGG,OPENBIT /?ELS51
PRINTR "That seems to be the problem."
?ELS51: EQUAL? PRSA,V?CLOSE \?ELS57
FSET? EGG,OPENBIT \?ELS57
FCLEAR EGG-KNOB-1,OPENBIT
FCLEAR EGG-KNOB-2,OPENBIT
FCLEAR EGG-KNOB-3,OPENBIT
FCLEAR EGG-KNOB-4,OPENBIT
FCLEAR EGG-KNOB-5,OPENBIT
PRINTI "As you close the egg, all of the pieces slide back into place, locking it shut."
CRLF
FCLEAR EGG,OPENBIT
RTRUE
?ELS57: EQUAL? PRSA,V?MUNG \FALSE
PRINTI "The egg is smashed into little tiny pieces by the force of your blow."
IN? DAMAGED-SCROLL,EGG \?CND66
FCLEAR DAMAGED-SCROLL,INVISIBLE
MOVE DAMAGED-SCROLL,SCRAMBLED-EGG
PRINTI " Inside the now broken egg are the remains of a small spell scroll, damaged beyond hope of learning."
?CND66: CRLF
LOC EGG
MOVE SCRAMBLED-EGG,STACK
REMOVE EGG
RTRUE
.FUNCT EGG-KNOB-F
EQUAL? PRSA,V?TURN,V?OPEN,V?REZROV /?THN6
EQUAL? PRSA,V?PUSH,V?MOVE \?ELS5
?THN6: FSET? PRSO,OPENBIT \?ELS12
PRINTR "It's already in the open position."
?ELS12: FSET PRSO,OPENBIT
EQUAL? PRSA,V?REZROV \?ELS21
ADD SCORE,EGG-POINT >SCORE
SET 'EGG-POINT,0
PRINTI "The "
PRINTD PRSO
PRINTR " vibrates, moving this way and that, becoming almost plastic, and finally moves to the open position."
?ELS21: FSET? EGG,OPENBIT \?ELS25
PRINTI "The "
PRINTD PRSO
PRINTI " moves, and a cunning and diabolically engineered set of gears, knives, grinders, and slicers moves across the interior of the egg."
CRLF
IN? DAMAGED-SCROLL,EGG \TRUE
PRINTR "The scroll resting there is now shredded beyond recognition."
?ELS25: PRINTI "The "
PRINTD PRSO
PRINTI " moves to the open position, after some resistance and a few odd noises from some machinery which resides inside the egg."
CRLF
FSET? EGG-KNOB-1,OPENBIT \TRUE
FSET? EGG-KNOB-2,OPENBIT \TRUE
FSET? EGG-KNOB-3,OPENBIT \TRUE
FSET? EGG-KNOB-4,OPENBIT \TRUE
FSET? EGG-KNOB-5,OPENBIT \TRUE
ADD SCORE,EGG-POINT >SCORE
SET 'EGG-POINT,0
FSET EGG,OPENBIT
PRINTI "The egg falls open"
IN? DAMAGED-SCROLL,EGG \?CND44
FCLEAR DAMAGED-SCROLL,INVISIBLE
CALL THIS-IS-IT,DAMAGED-SCROLL
PRINTI ", revealing a shredded scroll inside"
?CND44: PRINTR "."
?ELS5: EQUAL? PRSA,V?TAKE \?ELS52
PRINTI "The "
PRINTD PRSO
PRINTR " is an integral part of the egg and thus cannot be taken."
?ELS52: EQUAL? PRSA,V?EXAMINE \?ELS56
CALL EGG-KNOB-STATE,PRSO,TRUE-VALUE
CRLF
RTRUE
?ELS56: EQUAL? PRSA,V?CLOSE \?ELS58
FSET? PRSO,OPENBIT \?ELS63
PRINTI "The "
PRINTD PRSO
PRINTI " closes easily, but more noises issue from the interior."
CRLF
FCLEAR PRSO,OPENBIT
RTRUE
?ELS63: PRINTR "It's already closed."
?ELS58: EQUAL? PRSA,V?MUNG \FALSE
CALL PERFORM,V?MUNG,EGG
RTRUE
.FUNCT SCRAMBLED-EGG-F,L,F
LOC SCRAMBLED-EGG >L
EQUAL? PRSA,V?KREBF \FALSE
FIRST? SCRAMBLED-EGG >F \?CND6
MOVE F,EGG
?CND6: CALL THIS-IS-IT,EGG
REMOVE SCRAMBLED-EGG
MOVE EGG,L
PRINTR "The egg is returned to its former pristine beauty!"
.FUNCT DAMAGED-SCROLL-F,L
LOC DAMAGED-SCROLL >L
EQUAL? PRSA,V?KREBF \FALSE
REMOVE DAMAGED-SCROLL
MOVE SUMMON-SCROLL,L
CALL THIS-IS-IT,SUMMON-SCROLL
ADD SCORE,REPAIR-POINT >SCORE
SET 'REPAIR-POINT,0
PRINTR "The scroll reforms, its slices and cuts rejoining, until there is a whole scroll, somewhat faded, in its place!"
.ENDI

134
ench.br Normal file
View File

@ -0,0 +1,134 @@
Fizbar's Review Guide for the Enchanter Guild Exam
--------------------------------------------------
For the young Enchanter just graduated from Thaumaturgy School, the
prospect of facing the Enchanter's Guild Exam is a daunting one. Given
only two weeks after the close of the grueling academic year, the Exam
puts fear even into those novice spellcasters who have watched as their
closest friends were turned into insects and have been transformed,
albeit briefly, into bats.
For you, the magic users of tomorrow, we at Fizbar's have created the
definitive review guide for the Guild Exam, including a sample exam with
questions culled from actual exams from years past. With this Guide in
hand, the keys to a bright future in Enchanting will be yours! Good
luck!
Chapter I: Spell Books
----------------------
If there is one thing a novice Enchanter should not be without, it's
his spell book. In it are inscribed all of the spells which he has
mastered. The GNUSTO spell is used to inscribe newly learned spells into
the book, and for this reason it is prudent to purchase a spell book
which comes with the GNUSTO spell included, since factory-installed
GNUSTO has been shown be more reliable than even the more expensive GNUSTOs
when purchased separately.
Chapter II: Spell Scrolls
-------------------------
Spell scrolls are powerful devices which contain
Chapter III: Common Spells
--------------------------
Chapter IV: Uncommon Spells
---------------------------
Chapter V: Non-existent Spells
------------------------------
Multiple Choice:
----------------
The FREMB spell will not work when which of the following is present?
a) Tuna Fish
b) Antharians
c) Granola
d) Your Great-aunt Zelbo
e) All of the above
Which of the following is not allowed by Thaumaturgical law?
a) FROTZing unripe fruits
b) SPLEEBing your neighbor's wife
c) NITFOLing brogmoids
d) FROOing on alternate Wednesdays
e) No less than 2 of the above
The first BLORB spell was cast in the city of:
a) Splatzburg
b) McKeesport
c) Fromage
d) Izyukville
Which of the following spells is not concerned with death?
a) OZMOO
b) GASPAR
c) LEMING
d) MORBO
e) LIPTON
Problem Solving:
----------------
You hear a noise and turn around only to see a pack of lurking grues.
You should immediately:
a) FROTZ the grues
b) LEMING your hat
c) AIMFIZ your best friend
d) none of the above
Answer: D. This is a trick question. If you had paid attention at all
in Beasts 201 you would know that grues have never been seen because
of their fear of light. Clearly, you could never be in this situation.
Your pet dragon has been hit by a flying carpet and is running out of
steam. Your best bet is to:
a) FROTZ the dragon
b) KREBF the dragon
c) QUELBO the dragon
d) ZIFMIA the undertaker
Answer: C. FROTZing the dragon is fine when your light has gone out, but
that's another problem. KREBF only repairs WILFULL damage, not
accidental damage. QUELBO, which repairs CARPET-RELATED damage, will
do the trick, making it unnecessary to ZIFMIA the undertaker. It can
also be used to remove the unsightly stain on the carpet caused by
the accident.
On a windy day, your hat is blown off your head and straight toward a
cliff. You should:
a) ZIFMIA the hat
b) FROTZ the cliff
c) YOMIN the hat
d) FORGET the hat
Answer: D. ZIFMIA can only be used on animate objects, which is not the
case unless you had ??'ed the hat first. BLORB, although making the cliff
more noticable, will do nothing for the hat. YOMIN will probe the hat's
mind as it plummets over the cliff. FORGET, of course, is the 'retrieve
lost haberdashery' spell and is perfect on such occasions.
Analogies:
----------
CLEESH : NEWT as BLORB : ???
a) Non-entity
b) Cheesecake
c) Circle of Enchanters
d) Floor Waxer
NITFOL : ANIMAL as QUOBIX : ???
a) Vegetable
b) Mineral
c) Soybean
d) Magic Wand
GNUSTO : SPELL BOOK as CRAYON : ???
a) Coloring Book
b)

BIN
enchanter.pre Normal file

Binary file not shown.

BIN
enchanter.pur Normal file

Binary file not shown.

366
enchanter.txt Normal file
View File

@ -0,0 +1,366 @@
Enchanter
---------
Introduction
"Enchanter" is a new adventure game in the Zork tradition,
but in a different setting and with a different overall
philosophy. The emphasis in Zork was on treasure and
fighting, but in Enchanter the emphasis is on magic.
This document describes the game as currently envisioned.
Comments are welcome; send them to Dave (PDL) and Marc
(BLANK).
General Comments
The viewpoint character is a low-level magician. He has a
few abilities represented by spells in his spell book. The
goal of the game is two-fold. First, to become a better
magician. Second, to defeat an evil magician who is taking
over the dungeon, repairing the damage he has done.
The Milieu
The dungeon is deteriorating, from the point of view of
anyone reasonable (such as you, we hope). Rooms are
darkening, passages choking off (via magic and rockfalls),
monsters are being released to prowl the halls.
The Warlock
The evil magician is "the Warlock." He just recently moved
into the neighborhood and began taking it over, and you were
sent by the Council to clear him out. He is much too much
of a wizard for you to take on directly until the end of the
game, and if you try (which should be possible), you get
fried for your trouble. The Warlock is possibly also the
priest who sacrifices you in the Temple scene. The
Warlock's Tower (which is nonetheless underground) is at the
top (bottom?) of the Endless Stair, and guarded by nasty
creatures with nasty sharp teeth, etc. They are probably
evilly magicked bunny rabbits.
The Adventurer
The Adventurer may come to your assistance after you magic
him over from the other side of the mirror. He is from the
Zork world, effectively, and comes equipped with an Elvish
sword and various other paraphenalia. He will be turned
against you by the Warlock at some point and have to be made
friendly again. He will be needed to perform some task
which is too physical for a cerebral type such as you.
While he is turned against you he is like the thief in Zork,
and may even attack you.
Monsters
There are lots of nasty, sharp-toothed creatures wandering
around. Eventually, you can avoid them via "Protection from
Evil." If you don't, you will get destroyed pretty quickly,
or perhaps captured by the bad guys for sacrifice to their
even nastier dieties.
Spells
Magic plays a big part in this game. There are several
magical objects, magic spells (which you learn as you go
along), and your spell-book, which is all-important. See
"Spells, Detail" below for more on spells.
The ultimate action in the game is going to be to say some
number of spells sequentially at the Warlock, which will
banish him and restore the dungeon.
Some spells (English names):
*Light (makes a light wherever the caster goes)
Open (opens something closed; a passage, a box...)
Resurrect (restores something dead to life)
Charm (makes someone friendly to you)
*Write Magic (allows you to copy a spell into book)
Fly (lets you fly around)
Haste (makes things go fast)
*Talk to Animals (lets you talk to turtle)
and others. * marks spells you have at the beginning.
Events/Problems
Darkness
As the game begins, you are in total darkness, having just
entered the underground (perhaps you were teleported there
by the Council). You have only your spell book.
Fortunately, the words written in such books glow in the
dark, so if you open the book you can read the spells you
have, one of which is "Light".
Sacrifice
This is probably the only overt reference to the Zork
trilogy, as it is based on the Viewing Table scene in Zork
3. You are captured by the followers of the Warlock and
dragged to the Temple, where you are sacrificed in a rite
horrible and bloody. You are left lying on the altar, the
magical sacrificial knife stuck in your chest. If you had
the foresight to cast a "cheat death" beforehand, you revive
a few moves later.
Gordian Knot
An ornate box is wrapped securely in a magic rope which you
cannot cut or untie. In fact, if you try to untie it, it
reties the next move. Like the original, this knot must be
cut, but with a magical blade (it's a magical rope, after
all). The blade is the sacrificial knife from the Temple
scene. The prize here is (naturally enough) the "Open"
spell.
Endless Stair
The entrance to the Warlock's Tower is an infinite stair.
It is literally infinite, in that you can go up or down it
any number of times (keep a count and a table of objects and
locations in case twit drops things). Now, it isn't really
infinite, it's only an illusion, and by casting that "Dispel
Illusion," you discover it's actually only a round room
which you have been marching around in for hours, and has an
exit opposite the entrance.
Malleable Maze
There is an area of about ten rooms in a traditional Zork
maze configuration. There is a (magic?) map of this area
with none of the connections shown, only the rooms. As you
roam about in the maze, the connections appear.
Interestingly enough, there is one room you can't get to.
Fortunately, there is also a (magic?) pencil which you can
use to draw in connections in this area. If you use it to
draw the connection to the final room, you can retrieve the
scroll contained therein, but also disturb the monster which
guards it.
The monster chases you and can catch you if you don't erase
an appropriate connection or two, trapping him.
The map and pencil can be used to vary the maze in any way
you choose, erasing and drawing passages. Perhaps the maze
should even be generated randomly in each game. It would be
represented by ten tables of eight elements (or ten, if we
include up and down as directions). You would draw by
saying "Connect Red Room to Blue Room," and erase by saying
"Disconnect Red Room from Blue Room."
Sleep
"Sleep" is both a spell and something you must do from time
to time. By sleeping, you recover the energy used to cast
spells and can rememorize spells. Also, you get a vision in
a dream that either gives you a spell or a clue to solving
one of the puzzles. This could even be a "Hint" facility if
we wanted it to be.
Purloined Letter
This is the problem the silly adventurer is useful for.
There is a huge door, decorated with magical runes and
obvious enormously charged with power. It might even say
something on it like "Magician, Keep Out!" If you touch it,
you get seriously frotzed, and "Open" fizzles against it.
This door is warded to the hilt. However, if you ask the
adventurer to open it, he has no trouble, not being a
magician. In fact, he doesn't even see it as a formidable
door, just a random dungeon door. If you ask him, he will
tell you. "Dispel Illusion" will reveal this, and waste the
spell.
Rainbow Turtle
This huge, brightly decorated creature wanders around on the
beach. See "Gears" for more.
Gears
Huge grinding gears and pounding machinery fill a certain
room. Things are being thrown around in here, all the time,
and if you try to get across the room to get the spell
scroll clearly visible in an alcove, you are speared or
crushed by the pounding machinery. The turtle is impervious
to the spears but is crushed by the pounding stuff. But, if
you cast "Talk to Animals" on him, you can ask him to
retrieve the scroll. If you cast "Haste" on him, he can get
across between "Crunch!" and "Crunch!", otherwise he is
smushed.
Faberge Easter Egg
This is an object of great beauty and enormous complexity.
It has lots of little twisty handles and knobs and stuff in
the filigree (which you see if you examine it). They
presumably open it (and in fact they do, if all turned or
pushed or whatever). However, if the Egg is opened that
way, the stuff these frobs are connected to inside destroy
the scroll contained within. You must use the "Open" spell
to actually open it safety.
Spells, Detail
(Theory and Practice of Thaumaturgy)
[Much of what follows is adapted from "real" D&D.]
Spells are ways of performing magic. They are either
general in their effect ("Light!") or specific ("Open!").
Spells have an English name and a one-word nonsense
incantation to invoke them. For example, "Light!" might be
invoked by "Krebf!" and "Open!" by "Frotz the door!" You
may encounter the incantation word without knowing the
associated English for a spell! It is therefore possible to
invoke a spell without knowing for sure what it will do.
You have a spell book. Your spell book records the spells
you learn. There is a distinction between learning a spell
and memorizing it for use. Only a small number of spells
can actually be memorized at one time, and you must rest and
rememorize them to use them again. A spell written in your
spell book can be memorized again and again. Once you have
memorized a spell, you can use it without having the spell
book around. When you use a spell you have memorized, you
forget it.
You might have a spell book containing ten spells, but only
be able to memorize five of them at one time. Correct
selection of spells to memorize is one aspect of the game.
If you lose your spell book, you are in deep trouble.
Newly found spells may be written into your spell book using
the spell "Write magic!" Sometimes a spell is too powerful
to be used more than once, and it appears in the book in a
different form. Such spells disappear from the book after
being used (the book "forgets" them).
Once a spell is written in your spell book, its English name
becomes apparent. In fact, reading your book probably would
look like:
Spell Book
Frotz - perpetual light
Ozmoo - open a closed object
Fweep - charm an unfriendly creature
etc.
There will be a command ("Spells") which will inventory
those spells you have memorized for this day. It is
possible to memorize a spell more than once; you get "more
than one copy," in some sense. If you try to memorize more
spells than you can remember, you will forget the first one
memorized.
Magic spells usually have a duration, and sometimes a cycle
time (meaning that you can't do them many times right in a
row).
In addition to the Spell Book and Spells, there is going to
need to be a sort of crib sheet giving enough detail for the
player to get started. The rationale is that having just
graduated from Wizard School, you are still a little shakey.
Spell Implementation, Details
You want syntaxes like:
<spell>. FROTZ! ("Light!")
<spell> <object>. FWEEP DOOR! ("Open door!")
Cast <spell> spell.
Cast <spell> on <object>.
Cast <spell> spell on object.
SPELL is the main synonym, so:
>Cast spell
Which spell, the foo spell or the bar spell?
You should also be able to
>Learn <spell>
>Frob <spell> ;Where "frob" is "write magic"
>Memorize <spell>
>Memorize <spell> twice ;Frill?
I see a "spell" as being the following;
<OBJECT FOO-SPELL
(IN SPELL-BOOK)
(SYNONYM SPELL)
(ADJECTIVE FOO)
(MEMORIZED 0) ;"count of times memorized"
(ACTION FOO-SPELL-F)
... >
There is also a GLOBAL-FOO-SPELL, which is not put in
GLOBAL-OBJECTS until you first encounter/learn "Foo."
GLOBAL-FOO-SPELL has its ACTION property the same as
FOO-SPELL's, and so all checking is done in the same place.
The command to check your memorized spells can just wander
down the list of all spells and tell you which have
MEMORIZED properties greater than zero.
Other Possible Characters
Dwarves -- these guys are getting out, and might tell you
about the Warlock and about the Terror if you ask. They
would be comic figures like those in Steve's book. They
might also give you a weapon (which you can't use, being a
magician).
Cultists -- worshippers of the evil Warlock. They would be
the ones to capture you and take you to the Temple.
Other Possible Problem Ideas
;;This problem is superceded by the Malleable Maze, but is
;;left here in case we can salvage a smaller problem from
;;it.
;; Maze of Glass
;;This is a large room divided into small rooms by glass
;;partitions, some of which are there, some not, to produce a
;;maze. You must have the "Fly" spell to solve it, because
;;some of the exits are "Up". There is a spell scroll as a
;;prize. Implementation is analogous to that of the Chinese
;;puzzle in Zork 3. Depending on how nasty we want to be,
;;this could be a 3x3x3 up to a 5x5x5 cube.
"Coal Chute" - adapt Coal Chute problem from original Zork.
Use magic rope? Gist is that you can hang on for a limited
time and carry a limited weight, and there is an exit in the
middle of the chute. This may be too "Zorkish" for Enchanter.
Summary of Problems
-Specific Problems- -File- -You Need-
Darkness "Light"
Sacrifice TEMPLE "Resurrect"
Gordian Knot KNOT Magic Knife
Malleable Maze TERROR Magic Pencil and Map
Adventurer "Summon" and "Charm"
Purloined Letter PURLOINED Adventurer or "Dispel Illusion"
Faberge Easter Egg EGG "Open"
Sleep SLEEP
Gears/Turtle GEARS "Talk to Animals" and "Haste"
Endless Stair STAIR "Dispel Illusion"
Warlock everything
-General Problems- -File- -You Need-
Protect Self "Protection from Evil"
Protect Spell Book "Protection from Evil"?
Magic/Learning Spells MAGIC "Write Magic"

View File

@ -8,7 +8,7 @@
">
<BLOAT 90000 0 0 3300 0 0 0 0 0 256>
<SETG ZORK-NUMBER 4>
<SNAME "ENCHANTER">
@ -19,9 +19,6 @@
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
@ -30,10 +27,9 @@
<INSERT-FILE "MACROS" T>
<INSERT-FILE "CLOCK" T>
<INSERT-FILE "MAIN" T>
<INSERT-FILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<INSERT-FILE "GPARSER" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "RECORD" T>
<INSERT-FILE "GLOBALS" T>
<INSERT-FILE "TERROR" T>
<INSERT-FILE "STAIR" T>

Binary file not shown.

127
gallery.zap Normal file
View File

@ -0,0 +1,127 @@
.FUNCT GALLERY-A
IN? ADVENTURER,HERE \FALSE
ZERO? PORTRAIT-COMMENT \FALSE
FSET? FLATHEAD-PORTRAIT,INVISIBLE /FALSE
ZERO? ADVENTURER-CHARMED /FALSE
SET 'PORTRAIT-COMMENT,TRUE-VALUE
PRINTR "The adventurer stops and stares at the portraits. ""I've met him!"" he gasps, pointing at the Wizard of Frobozz. He doesn't appear eager to meet him again, though. ""And there's old Flathead! What a sight!"" He glances at the other portraits briefly and then re-checks his map."
.FUNCT GALLERY-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
CALL LIT?,HERE,FALSE-VALUE
ZERO? STACK \?ELS5
ZERO? SUPER-BRIEF /?CND8
ZERO? GALLERY-POINT /?CND8
CALL DESCRIBE-PORTRAIT-GALLERY
?CND8: FCLEAR HERE,TOUCHBIT
RTRUE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
CALL LIT?,HERE,FALSE-VALUE
ZERO? STACK /?ELS19
ZERO? GALLERY-POINT /?CND20
REMOVE LIGHTED-PORTRAIT
?CND20: SET 'VISITED-GALLERY?,TRUE-VALUE
PRINTI "The east-west corridor opens into a gallery. The walls are lined with portraits, some of apparently great value. All of the eyes seem to follow you as you pass, and the entire room is subtly disturbing."
CRLF
IN? PORTRAIT-NICHE,GALLERY \FALSE
PRINTR "A small niche can be seen in the wall behind the spot where a painting had been hanging."
?ELS19: CALL DESCRIBE-PORTRAIT-GALLERY
ZERO? STACK \FALSE
PRINTR "It is pitch black."
.FUNCT DESCRIBE-PORTRAIT-GALLERY
IN? ETERNAL-FLAME,PORTRAIT-NICHE \FALSE
FSET? ETERNAL-FLAME,ONBIT \FALSE
ZERO? GALLERY-POINT /?CND8
MOVE LIGHTED-PORTRAIT,HERE
?CND8: ZERO? VISITED-GALLERY? /?ELS13
PRINTI "An eerie orange glow casts a pale, flickering light on the portrait gallery."
JUMP ?CND11
?ELS13: SET 'VISITED-GALLERY?,TRUE-VALUE
PRINTI "The east-west corridor opens into a portrait gallery. The gallery is lit by an eerie orange glow."
?CND11: PRINTR " The eyes of the figures portrayed on the canvases seem to be faintly illuminated and follow your every movement. After a moment, the source of light becomes clear: a single lighted portrait flickers as if a flame were burning behind it."
.FUNCT PORTRAITS-F
EQUAL? PRSA,V?MOVE,V?TAKE \?ELS5
PRINTR "The portraits are large and extremely heavy; they can be neither taken nor moved."
?ELS5: EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND \?ELS9
PRINTR "There are hundreds of canvases here; you look behind one or two at random but find nothing of interest."
?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The portraits represent a wide cross-section of races. Elves, gnomes, dwarves, wizards, warlocks, and just plain folk are all here. Some of them are known to you, such as Lord Dimwit Flathead of the Great Underground Empire, depicted here in excessive detail, and the Wizard of Frobozz, shown in a typical pose of anguished bewilderment."
CRLF
FCLEAR FLATHEAD-PORTRAIT,INVISIBLE
FCLEAR FROBOZZ-PORTRAIT,INVISIBLE
RTRUE
.FUNCT FLATHEAD-PORTRAIT-F
EQUAL? PRSA,V?ZIFMIA \?ELS5
PRINTR "Poor Flathead, the years have not been kind to him. Just as well, probably."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "This rather dull man stumbled into royalty in the Great Underground Empire, and much to everyone's chagrin. Named by his people Lord Dimwit Flathead the Excessive, he was best known for his outrageousness in style, policy, and engineering. His portrait captures him in the classic pose of imbecility, astride his gaudy throne."
.FUNCT FROBOZZ-PORTRAIT-F
EQUAL? PRSA,V?ZIFMIA \?ELS5
PRINTR "The Wizard doesn't seem to respond to the summons. Perhaps he is too busy molesting adventurers in ZORK II."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The Wizard of Frobozz was a former member of the Circle of Enchanters, but he was removed for forgetfulness bordering on senility. The lively wit of his youth having been replaced by a semisadistic mischievousness coupled with an inability to pronounce words beginning with other than the letter ""F"", he was ""retired"" to a small, unoccupied corner of the Great Underground Empire, hopefully out of harm's way."
.FUNCT LIGHTED-PORTRAIT-F
EQUAL? PRSA,V?LOOK-BEHIND \?ELS5
FSET? PRSO,TOUCHBIT /?ELS5
ADD SCORE,GALLERY-POINT >SCORE
SET 'GALLERY-POINT,0
MOVE PORTRAIT-NICHE,HERE
FSET PRSO,TOUCHBIT
PRINTI "Behind the portrait is a small niche. You find that the portrait is much lighter than the others and place it on the ground."
FCLEAR HERE,ONBIT
FIRST? PORTRAIT-NICHE \?CND10
PRINTI " Sitting in the niche is "
CALL PRINT-CONTENTS,PORTRAIT-NICHE
PRINTI "."
?CND10: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS18
FSET? PRSO,TOUCHBIT /?ELS23
PRINTR "The portrait, of an obscure adventurer, is not notable except for the fact that it is lighted from behind by a flickering orange light."
?ELS23: PRINTR "The portrait, of some obscure personage carrying a brass lantern and an elvish sword of great antiquity, is mediocre at best."
?ELS18: EQUAL? PRSA,V?TAKE,V?MOVE \FALSE
FSET? PRSO,TOUCHBIT /FALSE
FCLEAR PRSO,NDESCBIT
FSET PRSO,TOUCHBIT
ADD SCORE,GALLERY-POINT >SCORE
SET 'GALLERY-POINT,0
MOVE PORTRAIT-NICHE,HERE
PRINTI "The portrait is quite light. You remove it from the wall and place it on the ground, revealing a small niche in the wall"
FIRST? PORTRAIT-NICHE \?CND36
PRINTI ", in which sits "
CALL PRINT-CONTENTS,PORTRAIT-NICHE
?CND36: PRINTR "."
.FUNCT PORTRAIT-NICHE-F
EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
PRINTR "You can't do that."
.FUNCT ETERNAL-FLAME-F
EQUAL? PRSA,V?KULCAD,V?GONDAR \?ELS5
PRINTI "The flame flickers for a moment, then goes out."
CRLF
FCLEAR ETERNAL-FLAME,ONBIT
FCLEAR ETERNAL-FLAME,LIGHTBIT
RTRUE
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS9
FSET? ETERNAL-FLAME,ONBIT /?ELS9
PRINTR "You can't relight the candles."
?ELS9: EQUAL? PRSA,V?LAMP-OFF \FALSE
PRINTR "The flame cannot be extinguished, no matter how hard you try."
.ENDI

View File

@ -137,7 +137,7 @@ molesting adventurers in ZORK II." CR>)
<TELL
"The Wizard of Frobozz was a former member of the Circle of Enchanters, but
he was removed for forgetfulness bordering on senility. The lively wit of his
youth having been replaced by a semi-sadistic mischievousness coupled with
youth having been replaced by a semisadistic mischievousness coupled with
an inability to pronounce words beginning with other than the letter \"F\",
he was \"retired\" to a small, unoccupied corner of the Great Underground
Empire, hopefully out of harm's way." CR>)>>
@ -195,7 +195,7 @@ the ground, revealing a small niche in the wall">
(SYNONYM NICHE)
(ADJECTIVE SMALL)
(CAPACITY 30)
(FLAGS CONTBIT OPENBIT NDESCBIT)
(FLAGS CONTBIT OPENBIT NDESCBIT SEARCHBIT)
(ACTION PORTRAIT-NICHE-F)>
<ROUTINE PORTRAIT-NICHE-F ()

480
gears.zap Normal file
View File

@ -0,0 +1,480 @@
.FUNCT MACHINERY-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The machinery is extremely noisy and complicated. Other than that, you can't imagine of what use it is to anybody."
?ELS5: EQUAL? PRSA,V?AVOID \?ELS9
CALL HAMMER-F
RTRUE
?ELS9: EQUAL? PRSA,V?EXEX \FALSE
PRINTR "The machinery may or may not have been sped up, the facts being hard to determine."
.FUNCT ENGINE-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "The room is filled with noise: crashing and smashing, gurgling of water, grinding of gears, and horrible screeching of metal. Huge devices of obscure purpose provide these effects. The most notable is a huge hammer that smashes continually against the stone floor: it makes any crossing of the room a dangerous enterprise. The whole construction brings to mind the words ""Infernal Machine."" Far off to the southeast is another room."
IN? DISPEL-SCROLL,CLOSET \?CND8
PRINTI " You can barely make out something on the floor of that room. It might be a scroll, but from here you can't tell for sure."
?CND8: CRLF
IN? TURTLE,CLOSET \TRUE
PRINTR "Across the room you can see the rainbow turtle, who frequently looks your way."
.FUNCT HAMMER-F
EQUAL? PRSA,V?WALK-AROUND,V?AVOID \?ELS5
PRINTR "It's hard to see how you'll avoid a painful experience."
?ELS5: EQUAL? PRSA,V?EXEX \FALSE
SET 'HAMMER-EXEX,TRUE-VALUE
PRINTR "The crashing of the hammer has become more frequent."
.FUNCT SE-TOWER-F,RARG=0
EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?WALK \FALSE
EQUAL? PRSO,P?UP \?ELS10
CALL QUEUE,I-CRASH,2
PUT STACK,0,1
RFALSE
?ELS10: CALL INT,I-CRASH
PUT STACK,0,0
RFALSE
.FUNCT LIGHTS-F
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
PRINTR "The lights and displays hold no meaning for you. A random number generator may be controlling the whole thing, for all you know."
.FUNCT I-CRASH
LOC PLAYER
EQUAL? STACK,ENGINE-ROOM,CLOSET,SE-TOWER /?CND1
CALL INT,I-CRASH
PUT STACK,0,0
RFALSE
?CND1: ZERO? CRASH? \?PRD4
PUSH 1
JUMP ?PRD5
?PRD4: PUSH 0
?PRD5: SET 'CRASH?,STACK
ZERO? CRASH? \?THN9
ZERO? HAMMER-EXEX /?CND6
?THN9: PRINTI """Crash!"" A huge hammer smashes against the stone floor"
IN? PLAYER,CLOSET \?CND13
PRINTI " outside"
?CND13: PRINTI "."
CRLF
?CND6: ZERO? FAST? \?THN25
ZERO? HAMMER-EXEX /?ELS24
?THN25: PUSH 1
JUMP ?CND20
?ELS24: PUSH 2
?CND20: CALL QUEUE,I-CRASH,STACK
PUT STACK,0,1
RTRUE
.FUNCT CROSS-ENGINE-ROOM
EQUAL? HASTED?,WINNER \?ELS5
SET 'FAST?,TRUE-VALUE
EQUAL? WINNER,TURTLE \?ELS8
PRINTI "As the turtle starts across, he seems to set off something, for the machinery speeds up and the noise level becomes almost unbearable. Luckily, he makes it to the other side safely!"
CRLF
RETURN CLOSET
?ELS8: PRINTI "You zip across the room easily, but you must have touched something dangerous along the way, because the machinery speeds up, going faster and faster."
CRLF
RETURN CLOSET
?ELS5: EQUAL? WINNER,TURTLE \?ELS16
CALL INT,I-TURTLE
PUT STACK,0,0
PRINTI "The poor turtle starts, but he's just too slow. About halfway across the room he is dispatched by the enormous hammer, leaving only a rainbow colored smudge on the floor."
EQUAL? DEATH-CHEATED,TURTLE \?CND19
SET 'DEATH-CHEATED,FALSE-VALUE
CRLF
CRLF
PRINTI "But wait! Amazingly, the smudge reforms into a turtle again! The revived turtle just has time to turn his head in wonderment when the hammer smashes down again, remaking the rainbow smudge."
?CND19: PRINTI " Even that disappears at the next blow of the hammer."
CRLF
CALL JIGS-UP,FALSE-VALUE,FALSE-VALUE
RFALSE
?ELS16: ZERO? FAST? \?THN28
ZERO? CRASH? /?ELS27
?THN28: PRINTI "You start across the room, but less than halfway across, the huge hammer crashes down, right on top of you!"
CRLF
EQUAL? DEATH-CHEATED,ME \?CND32
PRINTI "Startlingly, you revive from this fatal blow, but even more startlingly, the first thing you see is the same huge hammer descending upon you!"
CRLF
?CND32: CALL JIGS-UP,FALSE-VALUE,FALSE-VALUE
RFALSE
?ELS27: SET 'FAST?,TRUE-VALUE
PRINTI "You make it across the room, but just barely; just as you duck through the door, a huge hammer crashes down behind, missing by an inch. Something you stepped on along the way clicked as well, and with a horrible screeching noise, the machinery speeds up, crashing faster and faster until it's twice as fast as before."
CRLF
CRLF
RETURN CLOSET
.FUNCT RECROSS-ENGINE-ROOM
EQUAL? WINNER,TURTLE \?ELS5
EQUAL? HASTED?,TURTLE \?ELS10
IN? DISPEL-SCROLL,CLOSET \?CND11
SET 'TURTLE-REPORT?,TRUE-VALUE
?CND11: PRINTI "The turtle fairly zips across the engine room, dodging the giant hammers and gears. Suddenly he sets off a trap, and sharp spears fly at him from all directions! But they bounce harmlessly off his shell! He avoids one last crash of a huge hammer, but even at his speed, it's a near thing! With one more burst of speed, he reaches "
IN? PLAYER,ENGINE-ROOM \?ELS20
PUSH STR?284
JUMP ?CND16
?ELS20: PUSH STR?285
?CND16: PRINT STACK
PRINTI " safely!"
CRLF
RETURN ENGINE-ROOM
?ELS10: CALL INT,I-TURTLE
PUT STACK,0,0
PRINTI "The turtle starts across the room, as hammers and gears slowly turn and crash. Partway across the room, he sets off a trap! Spears fly at him from all directions! They just bounce off his shell, and he is unhurt. Unfortunately, at about this time, a enormous hammer smashes down. This does not bounce off his shell, and the poor creature expires."
CRLF
EQUAL? DEATH-CHEATED,TURTLE \?CND27
PRINTI "Astoundingly, the turtle renews himself! Unfortunately, he makes it no further, for the hammer is still too much for even his armor."
CRLF
?CND27: CALL JIGS-UP,FALSE-VALUE,FALSE-VALUE
RFALSE
?ELS5: IN? DISPEL-SCROLL,WINNER \?CND34
REMOVE DISPEL-SPELL
REMOVE DISPEL-SCROLL
?CND34: EQUAL? HASTED?,WINNER \?ELS39
PRINTI "You rush across the engine room, your speed enabling you to avoid the gigantic hammers and gears; at this speed they appear to move with great deliberation. Unfortunately, you set off a trap, and many sharp spears fly at you from all directions! They seem to move pretty fast. Too fast, in fact. You can't dodge them, and you are severely skewered."
JUMP ?CND37
?ELS39: PRINTI "You run across the room, trying to dodge the crashing machinery, and you are succeeding for a while until you set off a trap. A volley of sharp spears, powered by cunning machinery, comes at you from all directions. You are skewered! The huge hammer crashes down for the coup de grace."
?CND37: CRLF
EQUAL? DEATH-CHEATED,ME \?CND46
PRINTI "In an astounding feat of magic, you are reassembled and revived. In an even more astounding feat of trap design, you are dispatched again almost before you can take a breath."
CRLF
?CND46: CALL JIGS-UP,FALSE-VALUE,FALSE-VALUE
RFALSE
.FUNCT WAVES-F
EQUAL? PRSA,V?THROUGH,V?SWIM \FALSE
PRINTR "Don't press your luck. You'd probably drown."
.FUNCT SEA-STUFF-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "There's nothing much interesting to see."
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
PRINTR "Why bother?"
.FUNCT NO-RESPONSE
PRINTR "You hear no response."
.FUNCT TURTLE-F,NEAR?
LOC PLAYER
IN? TURTLE,STACK /?PRD1
PUSH 0
JUMP ?PRD2
?PRD1: PUSH 1
?PRD2: SET 'NEAR?,STACK
EQUAL? WINNER,TURTLE \?ELS7
MOVE GLOBAL-TURTLE,GLOBAL-OBJECTS
ZERO? TURTLE-TIRED? /?CND8
ZERO? NEAR? /?ELS14
PRINTR "The turtle is asleep and appears oblivious to your words."
?ELS14: CALL NO-RESPONSE
RTRUE
?CND8: CALL QUEUE,I-TURTLE,-1
PUT STACK,0,1
FSET TURTLE,TOUCHBIT
EQUAL? TALK-TO-ANIMAL?,TURTLE /?ELS24
ZERO? NEAR? /?ELS27
PRINTI "The turtle looks at you quizzically. It's clear he would like to understand you, but he doesn't. He responds, but it's only snaps, hisses, and clicks to you."
CRLF
JUMP ?CND25
?ELS27: CALL NO-RESPONSE
?CND25: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
?ELS24: EQUAL? PRSA,V?WALK \?ELS34
SET 'TURTLE-FOLLOWS,FALSE-VALUE
INC 'TF-COUNT
IN? TURTLE,INSIDE-GATE \?ELS39
EQUAL? PRSO,P?WEST \?ELS39
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTR """Uh, no thanks. I prefer to stay near my beach. I don't see much yummy seaweed out that way."""
?ELS39: IN? TURTLE,DIM-DESCENT \?ELS45
EQUAL? PRSO,P?DOWN,P?SOUTH \?ELS45
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTR """Uh, no thanks. It looks dark and scary down there, and I get a kind of bad feeling about it, like you get when you eat old seaweed."""
?ELS45: EQUAL? PRSO,P?UP \?ELS51
LOC TURTLE
CALL GLOBAL-IN?,STAIRS,STACK
ZERO? STACK /?ELS51
ZERO? NEAR? /FALSE
PRINTI "The turtle huffs and puffs up the stairs. ""Pretty steep stairs for a turtle, friend..."""
CRLF
RFALSE
?ELS51: EQUAL? PRSO,P?DOWN \?ELS61
LOC TURTLE
CALL GLOBAL-IN?,STAIRS,STACK
ZERO? STACK /?ELS61
ZERO? NEAR? /?CND64
PRINTI """Those stairs are pretty steep. I'll follow you down, but I'm not going alone!"""
CRLF
?CND64: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
?ELS61: GRTR? TF-COUNT,4 \FALSE
MOD TF-COUNT,6
ZERO? STACK \FALSE
CALL TURTLE-TIRES
RFALSE
?ELS34: EQUAL? PRSA,V?WHO \?ELS75
ZERO? NEAR? /?ELS80
PRINTR """Never heard of him."""
?ELS80: CALL NO-RESPONSE
RSTACK
?ELS75: EQUAL? PRSA,V?THANK \?ELS87
CALL TURTLE-THANKS,NEAR?
RSTACK
?ELS87: EQUAL? PRSA,V?STAY \?ELS89
EQUAL? PRSO,GLOBAL-ROOM,FALSE-VALUE \?ELS89
SET 'TURTLE-FOLLOWS,FALSE-VALUE
ZERO? NEAR? /?ELS96
PRINTR "The turtle hisses, ""Okay, I'll stay here for a while."""
?ELS96: CALL NO-RESPONSE
RSTACK
?ELS89: EQUAL? PRSA,V?FOLLOW \?ELS103
EQUAL? PRSO,ME,FALSE-VALUE \?ELS108
SET 'TURTLE-FOLLOWS,TRUE-VALUE
SET 'TF-COUNT,0
SET 'TURTLE-TIRED-TELL,FALSE-VALUE
ZERO? NEAR? /?ELS113
PRINTR "The turtle hisses, ""I will follow you."""
?ELS113: CALL NO-RESPONSE
RSTACK
?ELS108: ZERO? NEAR? /?ELS120
PRINTR "The turtle hisses, ""I'd follow you, but not that!"""
?ELS120: CALL NO-RESPONSE
RSTACK
?ELS103: EQUAL? PRSA,V?BRING,V?TAKE \?ELS127
LOC PLAYER
IN? TURTLE,STACK /?ELS127
EQUAL? PRSA,V?BRING \?CND130
SET 'PRSO,PRSI
SET 'PRSI,FALSE-VALUE
?CND130: CALL ITAKE,FALSE-VALUE
EQUAL? PRSA,V?BRING \?CND133
EQUAL? HERE,CLOSET \?ELS140
PUSH P?NW
JUMP ?CND136
?ELS140: PUSH P?SE
?CND136: CALL DO-WALK,STACK
RTRUE
?CND133: EQUAL? HERE,CLOSET \TRUE
IN? PLAYER,ENGINE-ROOM \TRUE
PRINTI "The turtle sticks his head through the door across the mechanical wasteland."
IN? DISPEL-SCROLL,TURTLE \?CND150
PRINTI " In his mouth is a scroll of some sort."
?CND150: CRLF
RTRUE
?ELS127: EQUAL? PRSA,V?TAKE \?ELS156
FSET? PRSO,SCROLLBIT /FALSE
ZERO? NEAR? /?ELS166
PRINTR """I don't think I can carry that too easily."""
?ELS166: CALL NO-RESPONSE
RSTACK
?ELS156: EQUAL? PRSA,V?OPEN \?ELS175
FSET? PRSO,DOORBIT \?ELS175
ZERO? NEAR? /?ELS182
PRINTR """I can't reach the latch. I'm a turtle, not an ostrich."""
?ELS182: CALL NO-RESPONSE
RSTACK
?ELS175: EQUAL? PRSA,V?HELLO \?ELS189
ZERO? NEAR? /?ELS194
PRINTI """"
CALL PICK-ONE,TURTLE-REMARKS
PRINT STACK
PRINTR """"
?ELS194: CALL NO-RESPONSE
RSTACK
?ELS189: LOC PLAYER
IN? TURTLE,STACK /?THN202
LOC PLAYER
LOC STACK
IN? TURTLE,STACK \?ELS201
?THN202: PRINTR """I'm only a turtle, you know, even if I can talk!"""
?ELS201: CALL NO-RESPONSE
RTRUE
?ELS7: EQUAL? PRSA,V?TELL \?ELS209
EQUAL? PRSO,GLOBAL-TURTLE \?ELS209
ZERO? TURTLE-TIRED? /?ELS216
PRINTI "The turtle remains asleep."
CRLF
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RETURN 2
?ELS216: CALL OPPOSITE-SIDES?
ZERO? STACK /?ELS223
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTR "The turtle seems to bend its head as if to listen, but with all this noise it's not very likely that he hears you."
?ELS223: SET 'P-MERGED,TRUE-VALUE
CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-TURTLE
RTRUE
?ELS209: EQUAL? PRSO,GLOBAL-TURTLE \?ELS229
EQUAL? PRSA,V?YELL,V?WAVE-AT \?ELS229
CALL OPPOSITE-SIDES?
ZERO? STACK /?ELS229
PRINTI "The turtle takes notice, "
EQUAL? HERE,CLOSET \?ELS236
PRINTR "then glances at the rapidly pounding hammer. With a motion which might correspond to a shrug of the shoulder, he turns away, embarrassed."
?ELS236: PRINTI "nods his head, and starts in your direction."
CRLF
?CND234: SET 'WINNER,TURTLE
LOC TURTLE >HERE
EQUAL? HERE,CLOSET \?ELS247
PUSH P?NW
JUMP ?CND243
?ELS247: PUSH P?SE
?CND243: CALL DO-WALK,STACK
RTRUE
?ELS229: EQUAL? PRSO,GLOBAL-TURTLE \?ELS251
EQUAL? PRSA,V?EXAMINE \?ELS251
CALL OPPOSITE-SIDES?
ZERO? STACK /?ELS251
PRINTR "He is standing on the other side of the machinery."
?ELS251: EQUAL? PRSO,GLOBAL-TURTLE \?ELS257
CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-TURTLE
RTRUE
?ELS257: EQUAL? PRSA,V?THROUGH,V?CLIMB-FOO,V?CLIMB-UP \?ELS259
PRINTR "The turtle doesn't allow you to get on his back."
?ELS259: EQUAL? PRSA,V?RUB \?ELS263
PRINTR "The turtle seems to appreciate the attention."
?ELS263: EQUAL? PRSA,V?CLEESH \?ELS267
PRINTR "As he is already a reptile, the spell has little effect."
?ELS267: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS271
PRINTR "Come now, you can't do that!"
?ELS271: EQUAL? PRSA,V?REZROV \?ELS275
PRINTR "The turtle's shell pops off his back. Mortified, he retrieves it."
?ELS275: EQUAL? PRSA,V?GUNCHO \?ELS279
ZERO? TURTLE-TIRED? /?ELS282
PRINTI "The sleeping turtle seems to shrink to nothing, and vanishes!"
CRLF
JUMP ?CND280
?ELS282: PRINTI "The turtle barely has time to retract his head before he is consumed in flame!"
CRLF
?CND280: REMOVE TURTLE
RTRUE
?ELS279: EQUAL? PRSA,V?VAXUM \?ELS291
ZERO? TURTLE-TIRED? /?ELS296
PRINTR "The snoring sounds more friendly."
?ELS296: PRINTR "The turtle seems to make a friendly gesture, but then again turtles are pretty friendly anyway."
?ELS291: EQUAL? PRSA,V?MUNG \?ELS305
PRINTI "The turtle's shell is so thick and hard that your blow has no effect. The lovely colors on his back are not even marred."
ZERO? TURTLE-TIRED? /?ELS312
PRINTR " He doesn't even wake up."
?ELS312: PRINTR " He does withdraw into his shell briefly, but then emerges again."
?ELS305: ZERO? TURTLE-TIRED? /?ELS321
PRINTI "The turtle remains asleep."
CRLF
SET 'P-CONT,FALSE-VALUE
RETURN 2
?ELS321: EQUAL? PRSA,V?THANK \?ELS328
EQUAL? TALK-TO-ANIMAL?,TURTLE \?ELS328
CALL TURTLE-THANKS,TRUE-VALUE
RSTACK
?ELS328: EQUAL? PRSA,V?TAKE \?ELS332
EQUAL? TURTLE,PRSO \?ELS332
PRINTR "The turtle is much too large to take."
?ELS332: EQUAL? PRSA,V?GIVE \?ELS338
PRINTI "The turtle extends his head towards the "
PRINTD PRSO
PRINTR ", but decides it's not very interesting, and withdraws."
?ELS338: EQUAL? PRSA,V?HELLO \FALSE
PRINTI """"
CALL PICK-ONE,TURTLE-REMARKS
PRINT STACK
PRINTR """"
.FUNCT TURTLE-THANKS,NEAR?
ZERO? TURTLE-POINT \?ELS3
MOVE TURTLE,BEACH
ZERO? NEAR? /?ELS6
PRINTR """Glad to be of help. I think I'll get back to the beach, now."" The turtle departs."
?ELS6: PRINTR "There is no response."
?ELS3: ZERO? NEAR? /?ELS15
PRINTR """You're very welcome! It's nice to have someone to talk to for a change."""
?ELS15: CALL NO-RESPONSE
RTRUE
.FUNCT OPPOSITE-SIDES?
EQUAL? HERE,ENGINE-ROOM,CLOSET \FALSE
LOC TURTLE
EQUAL? STACK,ENGINE-ROOM,CLOSET \FALSE
LOC TURTLE
EQUAL? HERE,STACK \TRUE
RFALSE
.FUNCT I-TURTLE,LP
LOC PLAYER >LP
FSET TURTLE,TOUCHBIT
ZERO? TURTLE-FOLLOWS /?ELS5
IN? TURTLE,LP /?ELS5
INC 'TF-COUNT
EQUAL? LP,WEST-CASTLE,DUNGEON,BED \?ELS12
SET 'TURTLE-FOLLOWS,FALSE-VALUE
PRINTR "The turtle won't follow any further."
?ELS12: EQUAL? LP,CLOSET \?ELS20
IN? TURTLE,ENGINE-ROOM /?THN17
?ELS20: EQUAL? LP,ENGINE-ROOM \?ELS16
IN? TURTLE,CLOSET \?ELS16
?THN17: SET 'TURTLE-FOLLOWS,FALSE-VALUE
PRINTR "The turtle seems hesitant to follow you across the room. He looks at you as if he wants an explicit order."
?ELS16: MOVE TURTLE,LP
EQUAL? LP,ENDLESS-STAIR \?ELS31
PRINTI "You notice that the turtle is no longer following you. In fact, he seems to have vanished entirely."
CRLF
REMOVE TURTLE
CALL QUEUE,I-TURTLE,0
SET 'TURTLE-FOLLOWS,FALSE-VALUE
RTRUE
?ELS31: EQUAL? LP,ENGINE-ROOM \?ELS35
PRINTR """Pretty steep stairs for a turtle, friend. But if you say so..."""
?ELS35: EQUAL? HASTED?,TURTLE \?ELS39
PRINTR "The turtle, moving with terrific speed, follows you."
?ELS39: GRTR? TF-COUNT,4 \?ELS43
CALL TURTLE-TIRES
RSTACK
?ELS43: PRINTR "The turtle, at his own leisurely pace, follows you."
?ELS5: ZERO? TURTLE-REPORT? /?ELS49
LOC TURTLE
IN? PLAYER,STACK \?ELS49
SET 'TURTLE-REPORT?,FALSE-VALUE
PRINTR "The returned turtle reports that the door across the way opens into a room with much magic in it: bright lights and other things he doesn't understand too well. He says there is an object of rolled paper lying on the floor as well."
?ELS49: IN? DISPEL-SCROLL,TURTLE \FALSE
IN? TURTLE,LP \FALSE
EQUAL? HERE,CLOSET /FALSE
MOVE DISPEL-SCROLL,LP
CALL THIS-IS-IT,DISPEL-SCROLL
ADD SCORE,TURTLE-POINT >SCORE
SET 'TURTLE-POINT,0
PRINTR "The turtle drops a brittle scroll at your feet. ""Not bad, huh?"""
.FUNCT TURTLE-TIRES
ZERO? TURTLE-FOLLOWS /FALSE
GRTR? TF-COUNT,20 \?ELS8
SET 'TURTLE-TIRED?,TRUE-VALUE
SET 'TURTLE-FOLLOWS,FALSE-VALUE
CALL INT,I-TURTLE
PUT STACK,0,0
PRINTR "The turtle has closed his shell, and fallen asleep. A quiet snoring sound issues from somewhere within."
?ELS8: ZERO? TURTLE-TIRED-TELL \?ELS12
SET 'TURTLE-TIRED-TELL,TRUE-VALUE
PRINTR """How long do you expect me to follow you around, anyway? I'm getting kind of tired, too. You would if you had a shell as heavy as mine. It's all right for now, though."""
?ELS12: PRINTR "The turtle, at his own leisurely pace, follows you."
.ENDI

View File

@ -101,7 +101,7 @@ may be controlling the whole thing, for all you know." CR>)>>
<OBJECT SWITCHES
(IN CLOSET)
(DESC "glowing control")
(DESC "glowing button")
(SYNONYM DIAL CONTROL BUTTON DIALS)
(ADJECTIVE ARCANE GLOWING)
(FLAGS NDESCBIT)
@ -219,8 +219,9 @@ in fact. You can't dodge them, and you are severely skewered.">)
you are succeeding for a while until you set off a trap. A volley of sharp
spears, powered by cunning machinery, comes at you from all directions.
You are skewered! The huge hammer crashes down for the coup de grace.">)>
<CRLF>
<COND (<==? ,DEATH-CHEATED ,ME>
<TELL CR
<TELL
"In an astounding feat of magic, you are reassembled and revived.
In an even more astounding feat of trap design, you are dispatched again
almost before you can take a breath." CR>)>
@ -299,7 +300,6 @@ the rainbow.")
(ACTION TURTLE-F)>
<OBJECT GLOBAL-TURTLE
(IN GLOBAL-OBJECTS)
(DESC "rainbow turtle")
(SYNONYM TURTLE)
(ADJECTIVE RAINBOW)
@ -313,6 +313,7 @@ the rainbow.")
<ROUTINE TURTLE-F ("AUX" NEAR?)
<SET NEAR? <IN? ,TURTLE <LOC ,PLAYER>>>
<COND (<EQUAL? ,WINNER ,TURTLE>
<MOVE ,GLOBAL-TURTLE ,GLOBAL-OBJECTS>
<COND (,TURTLE-TIRED?
<COND (.NEAR?
<TELL
@ -323,10 +324,13 @@ the rainbow.")
<ENABLE <QUEUE I-TURTLE -1>>
<FSET ,TURTLE ,TOUCHBIT>
<COND (<NOT <EQUAL? ,TALK-TO-ANIMAL? ,TURTLE>>
<TELL
<COND (.NEAR?
<TELL
"The turtle looks at you quizzically. It's clear he would like to
understand you, but he doesn't. He responds, but it's only snaps, hisses,
and clicks to you." CR>
and clicks to you." CR>)
(ELSE
<NO-RESPONSE>)>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<RTRUE>)
@ -352,7 +356,7 @@ of bad feeling about it, like you get when you eat old seaweed.\"" CR>)
<COND (.NEAR?
<TELL
"The turtle huffs and puffs up the stairs. \"Pretty steep stairs
for a turtle, friend....\"" CR>)>
for a turtle, friend...\"" CR>)>
<RFALSE>)
(<AND <EQUAL? ,PRSO ,P?DOWN>
<GLOBAL-IN? ,STAIRS <LOC ,TURTLE>>>

424
globals.zap Normal file
View File

@ -0,0 +1,424 @@
.FUNCT NULL-F
RFALSE
.FUNCT GROUND-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-ON,V?CLIMB-UP /?THN6
EQUAL? PRSA,V?BOARD \FALSE
?THN6: PRINTR "You've got better things to do."
.FUNCT CORRIDOR-F
EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
CALL USE-DIRECTIONS
RSTACK
.FUNCT WALLS-F
EQUAL? WALLS,PRSO \?ELS5
EQUAL? HERE,NORTH-CELL \?ELS5
CALL PERFORM,PRSA,STONE-WALL
RSTACK
?ELS5: FSET? HERE,RMUNGBIT \?ELS9
EQUAL? PRSA,V?EXAMINE \?ELS14
PRINTR "The wall is stained and noisome."
?ELS14: EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "That's noisome, not noisy!"
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "They're translucent, not transparent!"
.FUNCT CRETIN
EQUAL? PRSA,V?ESCAPE \?ELS5
PRINTR "There's no escaping yourself."
?ELS5: EQUAL? PRSA,V?PUT \?ELS9
EQUAL? PRSO,EGG \?ELS9
PRINTR "If you don't succeed, there will be plenty of egg on your face."
?ELS9: EQUAL? PRSA,V?BURN \?ELS15
PRINTR "Ouch!"
?ELS15: EQUAL? PRSA,V?LISTEN \?ELS19
PRINTR "Yes?"
?ELS19: EQUAL? PRSA,V?ALARM \?ELS23
PRINTR "You are obviously awake already."
?ELS23: EQUAL? PRSA,V?GUNCHO \?ELS27
PRINTI "You vanish into oblivion where, to the relief of much of the Circle, you will be unable to do much harm."
CRLF
CALL FINISH
RSTACK
?ELS27: EQUAL? PRSA,V?FROTZ \?ELS31
FSET PLAYER,ONBIT
SET 'ALWAYS-LIT,TRUE-VALUE
PRINTR "You are bathed in a sickly yellow light, bright enough to read by."
?ELS31: EQUAL? PRSA,V?BLORB \?ELS35
CALL JIGS-UP,STR?48,FALSE-VALUE
RTRUE
?ELS35: EQUAL? PRSA,V?KULCAD \?ELS37
PRINTR "You seem real enough already."
?ELS37: EQUAL? PRSA,V?EXAMINE \?ELS41
PRINTR "You are not a pretty sight."
?ELS41: EQUAL? PRSA,V?GIVE \?ELS45
PRINTR "I think you're a little confused."
?ELS45: EQUAL? PRSA,V?ATTACK,V?MUNG,V?KILL \?ELS49
PRINTR "You don't need my help to do that!"
?ELS49: EQUAL? PRSA,V?FIND \?ELS53
PRINTR "You're right here!"
?ELS53: EQUAL? PRSA,V?CUT \FALSE
EQUAL? PRSI,MAGIC-KNIFE \FALSE
PRINTR "I should think one experience with that knife would be enough. I wouldn't press my luck."
.FUNCT WINDOW-F
EQUAL? PRSA,V?LOOK-INSIDE \?ELS5
GRTR? TOD,NIGHTFALL \?ELS10
PRINTR "It's too dark to make out much of anything."
?ELS10: GETP HERE,P?TEXT
PRINT STACK
CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?OPEN \?ELS18
PRINTR "You can't open it."
?ELS18: EQUAL? PRSA,V?CLOSE \FALSE
PRINTR "It already is."
.FUNCT SEA-F
EQUAL? HERE,BEACH /?ELS5
PRINTR "The sea is off beyond the beach."
?ELS5: EQUAL? PRSA,V?THROUGH \?ELS9
PRINTR "You would drown."
?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The sea is very rough. I wouldn't go in."
.FUNCT FOREST-F
EQUAL? PRSA,V?THROUGH \FALSE
CALL USE-DIRECTIONS
RSTACK
.FUNCT TEMPLE-OBJ-F
EQUAL? HERE,COURTYARD-2,COURTYARD-3 /?THN6
EQUAL? HERE,COURTYARD-4,COURTYARD-7 \FALSE
?THN6: EQUAL? PRSA,V?THROUGH \?ELS12
CALL GOTO,TEMPLE
RTRUE
?ELS12: EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "You can hear a howling chant coming from inside the temple."
.FUNCT COURTYARD-F
EQUAL? PRSA,V?WALK-AROUND \?ELS5
EQUAL? HERE,INSIDE-GATE /?ELS5
EQUAL? HERE,COURTYARD-7,COURTYARD-6,COURTYARD-4 \?ELS12
CALL DO-WALK,P?WEST
RSTACK
?ELS12: CALL DO-WALK,P?EAST
RSTACK
?ELS5: EQUAL? PRSA,V?THROUGH \FALSE
EQUAL? HERE,INSIDE-GATE \FALSE
CALL DO-WALK,P?EAST
RSTACK
.FUNCT TOWER-F
EQUAL? PRSA,V?BOARD,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
EQUAL? HERE,PURLOINED-ROOM,SE-TOWER /?THN8
EQUAL? HERE,NW-TOWER,SW-TOWER \?ELS5
?THN8: CALL DO-WALK,P?UP
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-DOWN \?ELS11
EQUAL? HERE,JEWEL-ROOM,MAP-ROOM /?THN14
EQUAL? HERE,ENGINE-ROOM,BEDROOM \?ELS11
?THN14: CALL DO-WALK,P?DOWN
RSTACK
?ELS11: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE
PRINTR "They are a bit far away to climb from here, and anyway the walls would be impossible to scale."
.FUNCT JUG-F,E?=0
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS3
PRINTR "The jug has no cover. It can't be opened or closed."
?ELS3: EQUAL? PRSA,V?MUNG,V?THROW \?ELS7
REMOVE PRSO
SET 'E?,TRUE-VALUE
PRINTI "The jug shatters into innumerable pieces."
CRLF
JUMP ?CND1
?ELS7: EQUAL? PRSA,V?SHAKE \?CND1
FSET? PRSO,OPENBIT \?CND1
SET 'E?,TRUE-VALUE
?CND1: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS19
PRINTI "The jug is "
IN? WATER,PRSO /?ELS26
PRINTR "empty."
?ELS26: GETP WATER,P?SIZE
GET JUG-AMTS,STACK
PRINT STACK
CRLF
RTRUE
?ELS19: ZERO? E? /FALSE
IN? WATER,PRSO \TRUE
PRINTI "The water spills to the ground and evaporates."
CRLF
REMOVE WATER
RTRUE
.FUNCT WATER-FUNCTION,AV,W,PI?
EQUAL? PRSA,V?EXAMINE \?ELS3
EQUAL? PRSO,GLOBAL-WATER \?ELS3
EQUAL? HERE,BEACH \?ELS8
PRINTR "The ocean streches out as far as the eye can see to the south and east."
?ELS8: EQUAL? HERE,FOREST-2 \?ELS12
PRINTR "The water is dark and murky, and lily pads cover most of the surface. I wouldn't drink the stuff."
?ELS12: PRINTR "The brook runs slowly through thick vegetation."
?ELS3: EQUAL? PRSA,V?THROUGH \?ELS20
EQUAL? PRSO,GLOBAL-WATER \?ELS20
PRINTR "You have better things to do with your time than go swimming."
?ELS20: EQUAL? PRSA,V?DRINK-FROM \?ELS26
EQUAL? PRSO,GLOBAL-WATER \?ELS26
CALL V-DRINK-FROM
RTRUE
?ELS26: EQUAL? PRSA,V?SGIVE /FALSE
EQUAL? PRSA,V?THROUGH \?ELS32
PRINTR "Swimming here is fraught with peril."
?ELS32: EQUAL? PRSA,V?FILL \?ELS36
SET 'W,PRSI
SET 'PRSA,V?PUT
SET 'PRSI,PRSO
SET 'PRSO,W
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?ELS36: EQUAL? PRSO,GLOBAL-WATER,WATER \?ELS38
SET 'W,PRSO
SET 'PI?,FALSE-VALUE
JUMP ?CND1
?ELS38: SET 'W,PRSI
SET 'PI?,TRUE-VALUE
?CND1: EQUAL? W,GLOBAL-WATER \?CND41
EQUAL? PRSA,V?DRINK /FALSE
SET 'W,WATER
EQUAL? PRSA,V?PUT,V?TAKE \?CND41
REMOVE W
?CND41: ZERO? PI? /?ELS52
SET 'PRSI,W
JUMP ?CND50
?ELS52: SET 'PRSO,W
?CND50: LOC WINNER >AV
EQUAL? PRSA,V?PUT,V?TAKE \?ELS60
ZERO? PI? \?ELS60
ZERO? PRSI /?ELS67
EQUAL? PRSI,JUG /?ELS67
EQUAL? PRSI,SEA,GLOBAL-WATER \?ELS74
PRINTI "Ok, but there was plenty enough there already."
CRLF
REMOVE W
RTRUE
?ELS74: GETP PRSI,P?CAPACITY
ZERO? STACK /?ELS78
PRINTI "The water leaks out of the "
PRINTD PRSI
PRINTI " and evaporates immediately."
CRLF
REMOVE W
RTRUE
?ELS78: PRINTI "The "
PRINTD PRSI
PRINTR " isn't a very good container."
?ELS67: IN? JUG,WINNER \?ELS86
FSET? JUG,OPENBIT /?ELS91
PRINTR "The jug is closed."
?ELS91: CALL GLOBAL-IN?,GLOBAL-WATER,HERE
ZERO? STACK /?ELS95
IN? WATER,JUG \?THN101
GETP WATER,P?SIZE
LESS? STACK,4 \?ELS100
?THN101: MOVE WATER,JUG
PUTP WATER,P?SIZE,4
PRINTI "The jug is now full of "
EQUAL? HERE,BEACH \?ELS107
FSET WATER,RMUNGBIT
PRINTI "sea"
JUMP ?CND105
?ELS107: EQUAL? HERE,FOREST-2 \?ELS111
FSET WATER,RMUNGBIT
PRINTI "foul algae-infested "
JUMP ?CND105
?ELS111: FCLEAR WATER,RMUNGBIT
?CND105: PRINTR "water."
?ELS100: PRINTR "The jug is already full."
?ELS95: PRINTR "The only water here is in the jug."
?ELS86: IN? PRSO,JUG \?ELS127
EQUAL? PRSA,V?TAKE \?ELS127
ZERO? PRSI \?ELS127
SET 'PRSO,JUG
CALL ITAKE
SET 'PRSO,W
RETURN PRSO
?ELS127: PRINTR "The water slips through your fingers."
?ELS60: ZERO? PI? /?ELS135
PRINTR "Nice try."
?ELS135: EQUAL? PRSA,V?GIVE,V?DROP \?ELS140
REMOVE WATER
EQUAL? PRSI,SEA,GLOBAL-WATER \?ELS145
PRINTR "Ok, but there was plenty enough there already."
?ELS145: PRINTR "The water spills to the ground and evaporates."
?ELS140: EQUAL? PRSA,V?POUR-ON \?ELS153
REMOVE WATER
PRINTI "The water cascades off the "
PRINTD PRSI
PRINTR " and onto the ground."
?ELS153: EQUAL? PRSA,V?THROW \FALSE
PRINTI "The water splashes over everything and evaporates."
CRLF
REMOVE WATER
RTRUE
.FUNCT SKY-F,EL
FSET? HERE,ONBIT \?ELS5
EQUAL? PRSA,V?EXAMINE \?ELS5
DIV TOD,10 >EL
PRINTI "It would be "
GET TIME-TABLE,EL
PRINT STACK
PRINTI " now."
GRTR? TOD,NIGHTFALL \?CND10
PRINTI " Bright stars shine down on the earth."
?CND10: CRLF
RTRUE
?ELS5: PRINTR "That would be difficult from here."
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3
EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3
PRINTR "Those things aren't here!"
?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS9
SET 'TBL,P-PRSO
JUMP ?CND1
?ELS9: SET 'TBL,P-PRSI
SET 'PRSO?,FALSE-VALUE
?CND1: ZERO? PRSO? /?CND12
EQUAL? PRSA,V?ZIFMIA /?THN19
EQUAL? PRSA,V?CAST \?CND12
EQUAL? PRSO,SUMMON-SPELL \?CND12
?THN19: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
ZERO? OBJ /FALSE
EQUAL? OBJ,NOT-HERE-OBJECT \TRUE
?CND12: EQUAL? WINNER,PLAYER \?ELS33
PRINTI "You can't see any "
CALL NOT-HERE-PRINT,PRSO?
PRINTI " here!"
CRLF
JUMP ?CND31
?ELS33: PRINTI "The "
PRINTD WINNER
PRINTI " seems confused. ""I don't see any "
CALL NOT-HERE-PRINT,PRSO?
PRINTI " here!"""
CRLF
?CND31: SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RTRUE
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ
CALL MOBY-FIND,TBL >M-F
ZERO? DEBUG /?CND1
PRINTI "[Moby-found "
PRINTN M-F
PRINTI " objects"
PRINTI "]"
CRLF
?CND1: GRTR? M-F,1 \?CND7
GET TBL,1
GETP STACK,P?GLOBAL >OBJ
ZERO? OBJ /?CND7
SET 'M-F,1
SET 'P-MOBY-FOUND,OBJ
?CND7: EQUAL? 1,M-F \?ELS16
ZERO? DEBUG /?CND17
PRINTI "[Namely: "
PRINTD P-MOBY-FOUND
PRINTI "]"
CRLF
?CND17: ZERO? PRSO? /?ELS25
SET 'PRSO,P-MOBY-FOUND
RFALSE
?ELS25: SET 'PRSI,P-MOBY-FOUND
RFALSE
?ELS16: ZERO? PRSO? \?ELS30
PRINTI "You wouldn't find any "
CALL NOT-HERE-PRINT,PRSO?
PRINTR " there."
?ELS30: RETURN NOT-HERE-OBJECT
.FUNCT GLOBAL-NOT-HERE-PRINT,OBJ
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
PRINTI "You can't see"
EQUAL? OBJ,GLOBAL-KRILL /?CND3
PRINTI " any"
?CND3: EQUAL? OBJ,PRSO \?ELS10
CALL PRSO-PRINT
JUMP ?CND8
?ELS10: CALL PRSI-PRINT
?CND8: PRINTR " here."
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
ZERO? P-OFLAG /?ELS5
ZERO? P-XADJ /?CND7
PRINTB P-XADJN
?CND7: ZERO? P-XNAM /FALSE
PRINTB P-XNAM
RTRUE
?ELS5: ZERO? PRSO? /?ELS18
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?ELS18: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
.FUNCT BELBOZ-F
EQUAL? PRSA,V?ZIFMIA \?ELS5
PRINTI "A vision of the great Belboz begins to take shape before you, but "
GETP HERE,P?TMAZE
ZERO? STACK /?ELS12
PRINTR "as soon as he realizes where you are, he disappears, a look of fear upon his face."
?ELS12: PRINTR "with a curt word and a waggle of his finger, he disappears again, shaking his head in disappointment."
?ELS5: EQUAL? PRSA,V?WHO,V?EXAMINE \FALSE
PRINTR "Belboz is, in effect, your boss, professor, patron, and ultimate superior. He is the head of the Circle of Enchanters."
.FUNCT GLOBAL-ROOM-F
EQUAL? PRSA,V?EXAMINE,V?LOOK \?ELS5
CALL PERFORM,V?LOOK
RTRUE
?ELS5: EQUAL? PRSA,V?WALK-AROUND \FALSE
PRINTR "Walking around the room reveals nothing else of interest. If you want to move elsewhere, simply indicate the direction you wish to move in."
.FUNCT BRAMBLES-F
CALL OUTSIDE?,HERE
ZERO? STACK \?ELS5
PRINTR "The only brambles here are in your head."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \FALSE
PRINTR "There's nothing in the brambles now. Count your blessings."
.FUNCT GLOBAL-HOLE-F
EQUAL? PRSA,V?DIG \?ELS5
PRINTR "It's not worth the bother."
?ELS5: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-HOLE
RSTACK
.ENDI

View File

@ -7,6 +7,8 @@
without consulting MARC!"
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
<ROUTINE NULL-F () <RFALSE>>
"SUBTITLE GLOBAL OBJECTS"
<OBJECT GLOBAL-OBJECTS
@ -501,11 +503,11 @@ I wouldn't drink the stuff." CR>)
<RFALSE>)>)>)>
;"Here is the default 'cant see any' printer"
<COND (<EQUAL? ,WINNER ,PLAYER>
<TELL "You can't see any">
<TELL "You can't see any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!" CR>)
(T
<TELL "The " D ,WINNER " seems confused. \"I don't see any">
<TELL "The " D ,WINNER " seems confused. \"I don't see any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " here!\"" CR>)>
<SETG P-CONT <>>
@ -530,7 +532,7 @@ I wouldn't drink the stuff." CR>)
(T <SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<NOT .PRSO?>
<TELL "You wouldn't find any">
<TELL "You wouldn't find any ">
<NOT-HERE-PRINT .PRSO?>
<TELL " there." CR>
<RTRUE>)
@ -549,8 +551,8 @@ I wouldn't drink the stuff." CR>)
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (,P-OFLAG
<COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJN>)>
<COND (,P-XNAM <TELL " "> <PRINTB ,P-XNAM>)>)
<COND (,P-XADJ ;<TELL " "> <PRINTB ,P-XADJN>)>
<COND (,P-XNAM ;<TELL " "> <PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T

1680
gparser.zap Normal file

File diff suppressed because it is too large Load Diff

1486
gparser.zil Normal file

File diff suppressed because it is too large Load Diff

103
knot.zap Normal file
View File

@ -0,0 +1,103 @@
.FUNCT JEWELLED-BOX-A
IN? HERE,JEWELLED-BOX \TRUE
GRTR? BOX-POINT,0 \TRUE
ZERO? ROPE-MAGIC? /?ELS8
PRINTR "The adventurer notes the box and tries to untie the rope from around it. His frustration is evident by the words he uses to describe the rope."
?ELS8: PUTP JEWELLED-BOX,P?LDESC,STR?126
PRINTI "The adventurer walks up to the box and becomes quickly entangled in the partly untied rope that is knotted around it. He looks like a cat who has been playing with a ball of yarn."
CRLF
RTRUE
.FUNCT JEWELLED-BOX-F
IN? MAGIC-ROPE,JEWELLED-BOX \?ELS5
EQUAL? PRSA,V?SHAKE \?ELS10
PRINTR "It seems that there's something inside, but it's not clear what."
?ELS10: EQUAL? PRSA,V?UNLOCK \?ELS14
PRINTR "Who said anything about its being locked?"
?ELS14: EQUAL? PRSA,V?REZROV \?ELS18
ZERO? ROPE-MAGIC? /?ELS23
PRINTR "The magic in the rope is strong enough to prevent the rezrov spell from working."
?ELS23: PRINTI "The rope dissolves and the jewelled box flies open!"
CRLF
CALL ROPE-DISSOLVES
FSET JEWELLED-BOX,OPENBIT
RTRUE
?ELS18: EQUAL? PRSA,V?LOOK-INSIDE,V?OPEN \?ELS32
PRINTR "With all that rope around it, you haven't a prayer."
?ELS32: EQUAL? PRSA,V?EXAMINE \?ELS36
PRINTR "It is closed and wrapped in tight coils of thin rope."
?ELS36: EQUAL? PRSA,V?CLOSE \?ELS40
PRINTR "It isn't open, which seems to be the problem at hand."
?ELS40: EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,JEWELLED-BOX \FALSE
PRINTR "That won't work until the box is open."
?ELS5: EQUAL? PRSA,V?OPEN \FALSE
IN? PROTECTION-SCROLL,JEWELLED-BOX \FALSE
CALL THIS-IS-IT,PROTECTION-SCROLL
RFALSE
.FUNCT MAGIC-ROPE-F
EQUAL? PRSA,V?UNTIE \?ELS5
PRINTI "After a few moments of reflection, you tackle the knots, one at a time. Although you succeed with some regularity at untangling small areas of the rope, you "
ZERO? ROPE-MAGIC? /?ELS10
PRINTI "find that new knots seem to be forming as you watch, taunting you into deep despair."
JUMP ?CND8
?ELS10: PUTP JEWELLED-BOX,P?LDESC,STR?126
PRINTI "can't make any headway against the enormous tangle. It would take forever to finish."
?CND8: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?GUNCHO \?ELS19
REMOVE MAGIC-ROPE
REMOVE JEWELLED-BOX
PRINTI "The "
PRINTD PRSO
PRINTI " disappears, but unfortunately the "
PRINTD JEWELLED-BOX
PRINTR " disappears as well."
?ELS19: EQUAL? PRSA,V?REZROV \?ELS23
CALL JEWELLED-BOX-F
RTRUE
?ELS23: EQUAL? PRSA,V?TAKE \?ELS25
PRINTR "The rope is so entangled around the box that the idea is ridiculous."
?ELS25: EQUAL? PRSA,V?MUNG,V?CUT \?ELS29
ZERO? PRSI \?ELS34
PRINTR "You can't hurt it with your bare hands."
?ELS34: EQUAL? PRSI,MAGIC-KNIFE \?ELS38
CALL ROPE-DISSOLVES
PRINTR "At the mere touch of the magic knife, the rope gives way. Before your eyes, the strands, now moving this way, now moving that way, untangle themselves into a single strand which falls to the floor alongside the box, where it dissolves into the air without a sound."
?ELS38: FSET? PRSI,WEAPONBIT \?ELS42
ZERO? ROPE-MAGIC? /?ELS47
PRINTR "The rope seems to be pretty strong stuff. You don't seem to be making the least progress in breaking it."
?ELS47: PRINTR "The rope cuts cleanly, and falls to pieces on the floor. It must have been pretty rotten."
?ELS42: PRINTI "You certainly won't get anywhere using the "
PRINTD PRSI
PRINTR "!"
?ELS29: EQUAL? PRSA,V?KULCAD \?ELS60
SET 'ROPE-MAGIC?,FALSE-VALUE
PRINTR "Nothing obvious happens, but when you examine the rope, it lacks a certain something you saw in it before. It now looks sort of ordinary, like a clothesline."
?ELS60: EQUAL? PRSA,V?DROP \FALSE
CALL PERFORM,V?DROP,JEWELLED-BOX
RTRUE
.FUNCT ROPE-DISSOLVES
SET 'ROPE-MAGIC?,FALSE-VALUE
ADD SCORE,BOX-POINT >SCORE
SET 'BOX-POINT,0
REMOVE MAGIC-ROPE
MOVE PROTECTION-SCROLL,JEWELLED-BOX
FCLEAR JEWELLED-BOX,OPENBIT
FSET JEWELLED-BOX,TOUCHBIT
PUTP JEWELLED-BOX,P?LDESC,STR?129
RTRUE
.FUNCT MAGIC-KNIFE-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The dagger is inlaid with fine jewels. It would be a handsome addition to anyone's weapon collection."
.ENDI

39
macros.zap Normal file
View File

@ -0,0 +1,39 @@
.FUNCT PRINTA,O
FSET? O,VOWELBIT \?ELS7
PUSH STR?1
JUMP ?CND3
?ELS7: PUSH STR?2
?CND3: PRINT STACK
PRINTD O
RTRUE
.FUNCT RANDOM-ELEMENT,FROB
GET FROB,0
RANDOM STACK
GET FROB,STACK
RSTACK
.FUNCT PICK-ONE,FROB,L,CNT,RND,MSG,RFROB
GET FROB,0 >L
GET FROB,1 >CNT
DEC 'L
ADD FROB,2 >FROB
MUL CNT,2
ADD FROB,STACK >RFROB
SUB L,CNT
RANDOM STACK >RND
GET RFROB,RND >MSG
GET RFROB,1
PUT RFROB,RND,STACK
PUT RFROB,1,MSG
INC 'CNT
EQUAL? CNT,L \?CND1
SET 'CNT,0
?CND1: PUT FROB,0,CNT
RETURN MSG
.ENDI

806
magic.zap Normal file
View File

@ -0,0 +1,806 @@
.FUNCT V-SPELLS,CNT,S,ANY=0,OS=0,TMP
GET ALL-SPELLS,0 >CNT
PRINTI "The gnusto spell, the only thing you seem to have learned well after many years at the University, remains yours forever. Other than that, you have "
?PRG3: ZERO? CNT \?CND5
ZERO? OS /?CND8
CALL SPELL-PRINT,OS,ANY,TRUE-VALUE
SET 'ANY,TRUE-VALUE
?CND8: ZERO? ANY \?ELS14
PRINTI "no spells memorized."
JUMP ?CND12
?ELS14: PRINTI " committed to memory."
?CND12: CRLF
RTRUE
?CND5: GET ALL-SPELLS,CNT
CALL SPELL-TIMES,STACK >TMP
ZERO? TMP /?CND21
ZERO? OS /?CND24
CALL SPELL-PRINT,OS,ANY
SET 'ANY,TRUE-VALUE
?CND24: SET 'OS,TMP
?CND21: DEC 'CNT
JUMP ?PRG3
.FUNCT SPELL-TIMES,S
GETP S,P?COUNT
GRTR? STACK,0 \FALSE
IN? S,SPELL-BOOK \?ELS10
RETURN S
?ELS10: EQUAL? S,DISPEL-SPELL \?ELS12
IN? DISPEL-SPELL,DISPEL-SCROLL /?ELS12
RETURN S
?ELS12: EQUAL? S,BANISH-SPELL \FALSE
IN? BANISH-SPELL,BANISH-SCROLL /FALSE
RETURN S
.FUNCT SPELL-PRINT,S,ANY,PAND?=0,CNT
ZERO? ANY /?CND1
ZERO? PAND? /?ELS7
PRINTI " and "
JUMP ?CND1
?ELS7: PRINTI ", "
?CND1: PRINTI "the "
PRINTD S
GETP S,P?COUNT >CNT
GRTR? CNT,5 \?ELS19
PRINTI " many times"
RETURN S
?ELS19: PRINTI " "
SUB CNT,1
GET COUNTERS,STACK
PRINT STACK
RETURN S
.FUNCT SPELL-BOOK-F,F
FIRST? SPELL-BOOK >F /?KLU28
?KLU28: EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The title is ""My Spell Book"". The book looks pretty new, and it doesn't seem to have much written in it yet. There are some spells written in the book in glowing letters, with marginal notes about how to cast them and what their effects are."
?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS9
PRINTR "Thanks to its magic properties, the spell book is always open to the right place at the right time, but it is also always closed. This innovation eliminates tedious page turning and hunting for spells in tight situations. Many wizardly lives have been saved by this small advance in magical technology."
?ELS9: EQUAL? PRSA,V?READ \FALSE
ZERO? LIT \?CND14
PRINTI "Though it is dark, the magic writing of your spells casts enough light that you can read them."
CRLF
?CND14: PRINTI "
My Spell Book
"
?PRG21: ZERO? F /TRUE
PRINTI "The "
PRINTD F
PRINTI " ("
GETP F,P?TEXT
PRINT STACK
PRINTI ")."
CRLF
NEXT? F >F /?KLU29
?KLU29: JUMP ?PRG21
.FUNCT SPELL-CHECK,TBL,WRD,OBJ=0
EQUAL? WRD,W?GNUSTO \?ELS3
SET 'OBJ,WRITE-MAGIC-SPELL
JUMP ?CND1
?ELS3: EQUAL? WRD,W?FROTZ \?ELS5
SET 'OBJ,LIGHT-SPELL
JUMP ?CND1
?ELS5: EQUAL? WRD,W?OZMOO \?ELS7
SET 'OBJ,CHEAT-DEATH-SPELL
JUMP ?CND1
?ELS7: EQUAL? WRD,W?ZIFMIA \?ELS9
SET 'OBJ,SUMMON-SPELL
JUMP ?CND1
?ELS9: EQUAL? WRD,W?VAXUM \?ELS11
SET 'OBJ,CHARM-SPELL
JUMP ?CND1
?ELS11: EQUAL? WRD,W?REZROV \?ELS13
SET 'OBJ,OPEN-SPELL
JUMP ?CND1
?ELS13: EQUAL? WRD,W?NITFOL \?ELS15
SET 'OBJ,TALK-TO-ANIMALS-SPELL
JUMP ?CND1
?ELS15: EQUAL? WRD,W?EXEX \?ELS17
SET 'OBJ,HASTE-SPELL
JUMP ?CND1
?ELS17: EQUAL? WRD,W?KULCAD \?ELS19
SET 'OBJ,DISPEL-SPELL
JUMP ?CND1
?ELS19: EQUAL? WRD,W?MELBOR \?ELS21
SET 'OBJ,PROTECTION-SPELL
JUMP ?CND1
?ELS21: EQUAL? WRD,W?BLORB \?ELS23
SET 'OBJ,STRONG-BOX-SPELL
JUMP ?CND1
?ELS23: EQUAL? WRD,W?GUNCHO \?ELS25
SET 'OBJ,BANISH-SPELL
JUMP ?CND1
?ELS25: EQUAL? WRD,W?KREBF \?ELS27
SET 'OBJ,REPAIR-SPELL
JUMP ?CND1
?ELS27: EQUAL? WRD,W?CLEESH \?ELS29
SET 'OBJ,NEWT-SPELL
JUMP ?CND1
?ELS29: EQUAL? WRD,W?IZYUK \?ELS31
SET 'OBJ,FLY-SPELL
JUMP ?CND1
?ELS31: EQUAL? WRD,W?GONDAR \?ELS33
SET 'OBJ,QUENCH-SPELL
JUMP ?CND1
?ELS33: EQUAL? WRD,W?FILFRE \?CND1
SET 'OBJ,CREDITS-SPELL
?CND1: ZERO? OBJ /TRUE
CALL OBJ-FOUND,OBJ,TBL
RTRUE
.FUNCT PRE-QUICK-CAST,MEM?,SPELL,SCROLL
EQUAL? PRSA,V?GNUSTO \?ELS5
PUSH WRITE-MAGIC-SPELL
JUMP ?CND1
?ELS5: EQUAL? PRSA,V?FROTZ \?ELS7
PUSH LIGHT-SPELL
JUMP ?CND1
?ELS7: EQUAL? PRSA,V?OZMOO \?ELS9
PUSH CHEAT-DEATH-SPELL
JUMP ?CND1
?ELS9: EQUAL? PRSA,V?ZIFMIA \?ELS11
PUSH SUMMON-SPELL
JUMP ?CND1
?ELS11: EQUAL? PRSA,V?VAXUM \?ELS13
PUSH CHARM-SPELL
JUMP ?CND1
?ELS13: EQUAL? PRSA,V?REZROV \?ELS15
PUSH OPEN-SPELL
JUMP ?CND1
?ELS15: EQUAL? PRSA,V?NITFOL \?ELS17
PUSH TALK-TO-ANIMALS-SPELL
JUMP ?CND1
?ELS17: EQUAL? PRSA,V?EXEX \?ELS19
PUSH HASTE-SPELL
JUMP ?CND1
?ELS19: EQUAL? PRSA,V?KULCAD \?ELS21
PUSH DISPEL-SPELL
JUMP ?CND1
?ELS21: EQUAL? PRSA,V?MELBOR \?ELS23
PUSH PROTECTION-SPELL
JUMP ?CND1
?ELS23: EQUAL? PRSA,V?BLORB \?ELS25
PUSH STRONG-BOX-SPELL
JUMP ?CND1
?ELS25: EQUAL? PRSA,V?GUNCHO \?ELS27
PUSH BANISH-SPELL
JUMP ?CND1
?ELS27: EQUAL? PRSA,V?GONDAR \?ELS29
PUSH QUENCH-SPELL
JUMP ?CND1
?ELS29: EQUAL? PRSA,V?KREBF \?ELS31
PUSH REPAIR-SPELL
JUMP ?CND1
?ELS31: EQUAL? PRSA,V?CLEESH \?ELS33
PUSH NEWT-SPELL
JUMP ?CND1
?ELS33: EQUAL? PRSA,V?IZYUK \?ELS35
PUSH FLY-SPELL
JUMP ?CND1
?ELS35: EQUAL? PRSA,V?FILFRE \?ELS37
PUSH CREDITS-SPELL
JUMP ?CND1
?ELS37: PRINTR "**OOOPS!**"
?CND1: SET 'SPELL,STACK
FSET? SPELL,RMUNGBIT \?CND42
PRINTR "The spell is defaced beyond recognition."
?CND42: LOC SPELL >SCROLL
ZERO? SCROLL /?CND47
FSET? SCROLL,SCROLLBIT \?CND47
IN? SCROLL,WINNER \?ELS54
REMOVE SCROLL
EQUAL? PRSO,KRILL /?CND55
PRINTI "As you cast the spell, the "
PRINTD SCROLL
PRINTI " vanishes!"
CRLF
?CND55: PUTP SPELL,P?COUNT,1
JUMP ?CND47
?ELS54: FSET? SPELL,TOUCHBIT /?THN62
IN? SCROLL,HERE \?ELS61
?THN62: PRINTI "You don't have the "
PRINTD SPELL
PRINTR " memorized, nor do you have the scroll on which it is written."
?ELS61: PRINTI "The "
PRINTD SPELL
PRINTR " is not committed to memory, and you haven't seen any scroll on which it is written."
?CND47: GETP SPELL,P?COUNT >MEM?
EQUAL? SPELL,WRITE-MAGIC-SPELL /FALSE
GRTR? MEM?,0 /?ELS76
PRINTI "You don't have the "
PRINTD SPELL
PRINTR " committed to memory!"
?ELS76: SUB MEM?,1
PUTP SPELL,P?COUNT,STACK
INC 'SPELL-ROOM
EQUAL? PRSA,V?GUNCHO,V?KULCAD \FALSE
CALL QUEUE,MORE-PROBE,1
PUT STACK,0,1
RFALSE
.FUNCT SCROLL-F,SPELL
EQUAL? PRSA,V?TAKE \?ELS5
FIRST? PRSO >SPELL /?KLU41
?KLU41: FSET SPELL,TOUCHBIT
RFALSE
?ELS5: EQUAL? PRSA,V?CUT \?ELS7
EQUAL? PRSI,MAGIC-KNIFE \?ELS7
REMOVE PRSO
PRINTR "The magic dagger reduces the scroll to shreds. The shreds shrivel up into tiny spitballs. The spitballs evaporate."
?ELS7: EQUAL? PRSA,V?BURN \?ELS13
EQUAL? PRSI,ETERNAL-FLAME \?ELS13
REMOVE PRSO
PRINTI "The "
PRINTD PRSO
PRINTR " burns cheerily. Interestingly, the flame is sort of purple and rather bright. Not even ashes remain."
?ELS13: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
FIRST? PRSO >SPELL \?ELS24
FSET? SPELL,RMUNGBIT \?CND25
PRINTR "The scroll is defaced. The spell on it cannot be read."
?CND25: PRINTI "The scroll reads """
PRINTD SPELL
PRINTI ": "
GETP SPELL,P?TEXT
PRINT STACK
PRINTI """."
EQUAL? SPELL,BANISH-SPELL,DISPEL-SPELL \?CND32
PRINTI " The spell seems very long and extremely complicated."
?CND32: CRLF
RTRUE
?ELS24: PRINTR "Nothing useful can be made out on the scroll."
.FUNCT SPELL-F,MEM?,FORGET=0
EQUAL? PRSA,V?READ \?ELS5
IN? PRSO,SPELL-BOOK /FALSE
LOC PRSO
IN? STACK,WINNER /FALSE
PRINTR "You can't do that without having the spell in your book or on a scroll in your hand."
?ELS5: EQUAL? PRSA,V?LEARN,V?MEMORIZE \?ELS16
IN? PRSO,SPELL-BOOK /?ELS21
LOC PRSO
IN? STACK,WINNER \?ELS26
PRINTR "You haven't written that spell into your book yet. Until you do, you can't memorize the spell."
?ELS26: CALL V-LEARN
RSTACK
?ELS21: IN? SPELL-BOOK,WINNER /?ELS32
PRINTR "You don't have your spell book. How do you expect to memorize a spell without a spell book?"
?ELS32: EQUAL? PRSO,WRITE-MAGIC-SPELL \?ELS36
PRINTR "You already know that spell by heart."
?ELS36: ZERO? LIT \?ELS40
PRINTR "It will be hard to learn that spell in the dark."
?ELS40: GETP PRSO,P?COUNT >MEM?
ZERO? SPELL-ROOM \?ELS47
EQUAL? SPELL-MAX,1 \?ELS50
PRINTR "You can't concentrate well enough to learn the spell."
?ELS50: EQUAL? MEM?,SPELL-MAX \?ELS54
JUMP ?CND45
?ELS54: CALL FORGET-SPELL,PRSO
INC 'MEM?
PUTP PRSO,P?COUNT,MEM?
SET 'FORGET,TRUE-VALUE
JUMP ?CND45
?ELS47: DEC 'SPELL-ROOM
INC 'MEM?
PUTP PRSO,P?COUNT,MEM?
?CND45: PRINTI "Using your best study habits, you learn the "
PRINTD PRSO
GRTR? MEM?,1 \?CND61
PRINTI " yet another time"
?CND61: PRINTI "."
CRLF
ZERO? FORGET /TRUE
PRINTR "You have so much buzzing around in your head, though, that it's likely that something may have been forgotten in the shuffle."
?ELS16: EQUAL? PRSA,V?DROP,V?TAKE \FALSE
CALL PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
.FUNCT FORGET-SPELL,SPL,NSPL,F,CNT,TBL,NUM=0,SP=0
FIRST? SPELL-BOOK >F /?KLU26
?KLU26: SET 'TBL,FORGET-TBL
?PRG1: ZERO? F \?ELS5
JUMP ?REP2
?ELS5: GETP F,P?COUNT >CNT
GRTR? CNT,0 \?CND3
?PRG8: SET 'SP,F
PUT TBL,1,F
INC 'NUM
ADD TBL,2 >TBL
DLESS? 'CNT,1 \?PRG8
?CND3: NEXT? F >F /?KLU27
?KLU27: JUMP ?PRG1
?REP2: GRTR? NUM,0 \?CND13
GETP SP,P?COUNT
EQUAL? STACK,NUM \?CND13
SUB NUM,1
PUTP SP,P?COUNT,STACK
RTRUE
?CND13: PUT FORGET-TBL,0,NUM
ZERO? NUM /TRUE
?PRG21: CALL RANDOM-ELEMENT,FORGET-TBL >NSPL
EQUAL? NSPL,SPL /?PRG21
GETP NSPL,P?COUNT
SUB STACK,1
PUTP NSPL,P?COUNT,STACK
RTRUE
.FUNCT FORGET-ALL,F
SET 'SPELL-ROOM,SPELL-MAX
FIRST? SPELL-BOOK >F /?KLU8
?KLU8:
?PRG1: ZERO? F /TRUE
PUTP F,P?COUNT,0
NEXT? F >F /?KLU9
?KLU9: JUMP ?PRG1
.FUNCT V-CAST,VRB
FSET? PRSO,SPELLBIT /?ELS5
PRINTI "You might as well be casting with a fly rod, as to try to cast "
CALL PRINTA,PRSO
PRINTR "."
?ELS5: EQUAL? PRSO,WRITE-MAGIC-SPELL \?ELS14
PUSH V?GNUSTO
JUMP ?CND10
?ELS14: EQUAL? PRSO,LIGHT-SPELL \?ELS16
PUSH V?FROTZ
JUMP ?CND10
?ELS16: EQUAL? PRSO,CHEAT-DEATH-SPELL \?ELS18
PUSH V?OZMOO
JUMP ?CND10
?ELS18: EQUAL? PRSO,SUMMON-SPELL \?ELS20
PUSH V?ZIFMIA
JUMP ?CND10
?ELS20: EQUAL? PRSO,CHARM-SPELL \?ELS22
PUSH V?VAXUM
JUMP ?CND10
?ELS22: EQUAL? PRSO,OPEN-SPELL \?ELS24
PUSH V?REZROV
JUMP ?CND10
?ELS24: EQUAL? PRSO,TALK-TO-ANIMALS-SPELL \?ELS26
PUSH V?NITFOL
JUMP ?CND10
?ELS26: EQUAL? PRSO,HASTE-SPELL \?ELS28
PUSH V?EXEX
JUMP ?CND10
?ELS28: EQUAL? PRSO,DISPEL-SPELL \?ELS30
PUSH V?KULCAD
JUMP ?CND10
?ELS30: EQUAL? PRSO,PROTECTION-SPELL \?ELS32
PUSH V?MELBOR
JUMP ?CND10
?ELS32: EQUAL? PRSO,STRONG-BOX-SPELL \?ELS34
PUSH V?BLORB
JUMP ?CND10
?ELS34: EQUAL? PRSO,BANISH-SPELL \?ELS36
PUSH V?GUNCHO
JUMP ?CND10
?ELS36: EQUAL? PRSO,QUENCH-SPELL \?ELS38
PUSH V?GONDAR
JUMP ?CND10
?ELS38: EQUAL? PRSO,REPAIR-SPELL \?ELS40
PUSH V?KREBF
JUMP ?CND10
?ELS40: EQUAL? PRSO,NEWT-SPELL \?ELS42
PUSH V?CLEESH
JUMP ?CND10
?ELS42: EQUAL? PRSO,FLY-SPELL \?ELS44
PUSH V?IZYUK
JUMP ?CND10
?ELS44: EQUAL? PRSO,CREDITS-SPELL \?ELS46
PUSH V?FILFRE
JUMP ?CND10
?ELS46: PRINTR "**OOPS**"
?CND10: SET 'VRB,STACK
ZERO? PRSI \?ELS53
EQUAL? VRB,V?KREBF,V?FILFRE \?ELS53
CALL PERFORM,VRB
RTRUE
?ELS53: ZERO? PRSI \?ELS57
PRINTR "You might as well be casting it away as not cast it on something."
?ELS57: CALL PERFORM,VRB,PRSI
RTRUE
.FUNCT V-LEARN
PRINTR "You don't have that spell, if indeed that is a spell."
.FUNCT V-MEMORIZE
CALL V-LEARN
RSTACK
.FUNCT V-GNUSTO,SCROLL
IN? SPELL-BOOK,WINNER /?ELS5
PRINTR "The spell quests around in your hands, looking for your spell book, and not finding it, fades reluctantly."
?ELS5: FSET? PRSO,SPELLBIT /?ELS9
PRINTI "You can't inscribe "
EQUAL? PRSO,ME \?ELS14
PRINTI "yourself"
JUMP ?CND12
?ELS14: CALL PRINTA,PRSO
?CND12: PRINTR " in your spell book!"
?ELS9: IN? PRSO,SPELL-BOOK \?ELS24
PRINTR "You already have that spell inscribed in your book!"
?ELS24: FSET? PRSO,RMUNGBIT \?ELS28
PRINTR "The spell is defaced beyond recognition."
?ELS28: LOC PRSO >SCROLL
FSET? SCROLL,SCROLLBIT \?ELS37
CALL HELD?,SCROLL
ZERO? STACK /?ELS37
EQUAL? PRSO,DISPEL-SPELL,BANISH-SPELL,CREDITS-SPELL \?ELS42
PRINTI "Your spell book begins to glow softly. In a spectacular effort of magic, the powers of the gnusto spell attempt to copy the "
PRINTD PRSO
PRINTI " into your book, but the spell is too long, too complicated, and too powerful. The glow fades, but fortunately the "
PRINTD SCROLL
PRINTI " remains intact."
CRLF
EQUAL? PRSO,DISPEL-SPELL,BANISH-SPELL \TRUE
CALL MORE-PROBE,FALSE-VALUE
RTRUE
?ELS42: REMOVE SCROLL
MOVE PRSO,SPELL-BOOK
PUTP PRSO,P?COUNT,0
PRINTI "Your spell book begins to glow softly. Slowly, ornately, the words of the "
PRINTD PRSO
PRINTR " are inscribed, glowing even more brightly than the book itself. The book's brightness fades, but the spell remains! However, the scroll on which it was written vanishes as the last word is copied."
?ELS37: PRINTR "You must have a legible spell scroll in your hands before the gnusto spell will work on it."
.FUNCT MORE-PROBE,CAST?=1
EQUAL? HERE,PIT,REAL-STAIR,ENDLESS-STAIR /TRUE
EQUAL? HERE,WARLOCK-TOWER /TRUE
IGRTR? 'PROBE,3 \?ELS9
PRINTI "The warlock Krill appears before you, clad in deepest black. ""You are a fool, wizard-worm! You and your Circle!"" He spits in your face, causing a wound through which a foul poison enters your body. Krill's demonic laughter is the last sound you hear."
CRLF
CALL FINISH
RSTACK
?ELS9: CRLF
GET PROBE-TBL,PROBE
PRINT STACK
CRLF
ZERO? CAST? \?THN19
EQUAL? PROBE,2 \?CND16
IN? KRILL,HERE /?CND16
?THN19: ZERO? BELBOZ-WARNING \?CND16
SET 'BELBOZ-WARNING,TRUE-VALUE
CRLF
PRINTI "Belboz appears before you, hard and stern. ""While you have quested for Krill's lair, the Circle has not been idle. We have tried to shield your presence from him, but "
ZERO? CAST? /?ELS30
PRINTI "your use of such a powerful spell might endanger us all!"
JUMP ?CND28
?ELS30: PRINTI "your foolish attempt to copy such a powerful spell cannot be ignored!"
?CND28: PRINTI " As we have sensed it, so surely must Krill! Be careful, brave Enchanter!"" His image fades."
CRLF
?CND16: INC 'LOSSAGE
RTRUE
.FUNCT V-FROTZ,OLIT
SET 'OLIT,LIT
IN? PRSO,LOCAL-GLOBALS /?ELS5
FSET? PRSO,TAKEBIT /?THN8
FSET? PRSO,VICBIT \?ELS5
?THN8: FSET PRSO,LIGHTBIT
FSET PRSO,ONBIT
PRINTI "There is an almost blinding flash of light as the "
PRINTD PRSO
PRINTI " begins to glow! It slowly fades to a less painful level, but the "
PRINTD PRSO
PRINTI " is now quite usable as a light source."
CRLF
ADD SCORE,LIGHT-POINT >SCORE
SET 'LIGHT-POINT,0
CALL LIT?,HERE >LIT
ZERO? OLIT \TRUE
ZERO? LIT /TRUE
CRLF
CALL PERFORM,V?LOOK
RTRUE
?ELS5: CALL V-VAXUM
RSTACK
.FUNCT V-OZMOO
PRINTI "A huge puff of orange smoke envelops "
SET 'DEATH-CHEATED,PRSO
EQUAL? PRSO,ME \?ELS7
CALL QUEUE,I-DEATH-CHEATED-END,8
PUT STACK,0,1
PRINTR "you, but you feel no different."
?ELS7: PRINTI "the "
PRINTD PRSO
PRINTR ". Other than that, not much happens."
.FUNCT I-DEATH-CHEATED-END
SET 'DEATH-CHEATED,FALSE-VALUE
EQUAL? DEATH-CHEATED,ME \TRUE
PRINTR "You feel a bit lightheaded for a moment, but the feeling quickly passes."
.FUNCT V-ZIFMIA
FSET? PRSO,TAKEBIT /?THN6
IN? PRSO,LOCAL-GLOBALS \?ELS5
?THN6: PRINTR "The zifmia spell is for summoning beings, not things!"
?ELS5: FSET? PRSO,VICBIT \?ELS11
IN? PRSO,HERE /?ELS11
CALL NO-ZIF
RSTACK
?ELS11: CALL V-VAXUM
RSTACK
.FUNCT NO-ZIF
PRINTR "If you will remember from Thaumaturgy 201, summoning of beings works only if the being can be seen, unless the being possesses great magic of his own."
.FUNCT V-VAXUM
PRINTR "Although you complete the spell, nothing seems to have happened."
.FUNCT V-GONDAR
CALL V-VAXUM
RSTACK
.FUNCT V-REZROV
FSET? PRSO,CONTBIT \?ELS5
FSET? PRSO,OPENBIT \?ELS8
PRINTI "It's open already. Why bother?"
CRLF
JUMP ?CND6
?ELS8: PRINTI "The "
PRINTD PRSO
PRINTI " opens. Kind of like swatting a fly with a sledge hammer, if you ask me."
CRLF
?CND6: FSET PRSO,OPENBIT
RTRUE
?ELS5: CALL V-VAXUM
RSTACK
.FUNCT I-TALK-TO-ANIMAL
EQUAL? TALK-TO-ANIMAL?,TURTLE \?CND1
ZERO? TURTLE-FOLLOWS /?CND1
SET 'TURTLE-FOLLOWS,FALSE-VALUE
IN? TURTLE,HERE \?CND1
PRINTI "The turtle no longer seems to understand you, loses interest in you, and stops following."
CRLF
?CND1: SET 'TALK-TO-ANIMAL?,FALSE-VALUE
RETURN TALK-TO-ANIMAL?
.FUNCT V-NITFOL
FSET? PRSO,VILLAIN \?ELS5
SET 'TALK-TO-ANIMAL?,PRSO
CALL QUEUE,I-TALK-TO-ANIMAL,20
PUT STACK,0,1
EQUAL? PRSO,ME \?ELS10
PRINTR "You now understand everything you say to yourself, which is more than I can do. You didn't study too hard in Thaumaturgy 101, did you? This spell should be cast on the creature you wish to talk to!"
?ELS10: EQUAL? PRSO,FROG \?ELS17
PRINTI "One of the frogs"
JUMP ?CND15
?ELS17: PRINTI "The "
PRINTD PRSO
?CND15: PRINTR " looks at you for a moment, and you look at it. ""Hello,"" it says."
?ELS5: PRINTI "This seems to have no effect on "
CALL PRINTA,PRSO
PRINTR "."
.FUNCT I-HASTE
EQUAL? HASTED?,ME \?CND1
ADD HUNGER-COUNT,2 >HUNGER-COUNT
CALL QUEUE,I-HUNGER,3
PUT STACK,0,1
ADD THIRST-COUNT,2 >THIRST-COUNT
CALL QUEUE,I-THIRST,4
PUT STACK,0,1
CALL QUEUE,I-TIRED,5
PUT STACK,0,1
PRINTI "The effects of the exex spell have worn off. You are ravenous, parched, and tired."
CRLF
?CND1: SET 'HASTED?,FALSE-VALUE
RETURN HASTED?
.FUNCT V-EXEX
ZERO? HASTED? /?ELS5
PRINTR "Nothing seems to happen. Perhaps the spell needs time before it can be cast again."
?ELS5: FSET? PRSO,VILLAIN \?ELS10
SET 'HASTED?,PRSO
EQUAL? PRSO,ME \?ELS15
SET 'HASTED?,PLAYER
EQUAL? HERE,WARLOCK-TOWER \?ELS20
PRINTR "Krill, nobody's fool, hears you start the exex spell and hastily improvises one of his own which entirely counteracts it. The spell acts so well, in fact, that you are frozen solid."
?ELS20: CALL QUEUE,I-HASTE,45
PUT STACK,0,1
PRINTR "You feel energetic and zippy."
?ELS15: CALL QUEUE,I-HASTE,15
PUT STACK,0,1
PRINTI "The "
PRINTD PRSO
PRINTR " shimmers, then vibrates in place for a few seconds, but doesn't take any notice of the change."
?ELS10: CALL V-VAXUM
RSTACK
.FUNCT V-KULCAD
PRINTI "It appears that the "
PRINTD PRSO
PRINTR " was real, since nothing happens."
.FUNCT V-MELBOR
EQUAL? PRSO,ME \?ELS5
SET 'PROTECTED-FROM-EVIL,TRUE-VALUE
PRINTR "A wave of warmth courses through you, leaving you with a feeling of great internal strength."
?ELS5: CALL V-VAXUM
RSTACK
.FUNCT V-BLORB,OBJ
ZERO? STRONG-BOX-FLAG /?CND1
CALL V-VAXUM
RTRUE
?CND1: FSET? PRSO,TAKEBIT /?THN10
EQUAL? PRSO,ADVENTURER \?ELS9
?THN10: EQUAL? PRSO,ADVENTURER,TURTLE \?ELS14
REMOVE PRSO
EQUAL? PRSO,ADVENTURER \?ELS17
CALL QUEUE,I-ADVENTURER,0
JUMP ?CND12
?ELS17: CALL QUEUE,I-TURTLE,0
JUMP ?CND12
?ELS14: MOVE PRSO,STRONG-BOX
?CND12: SET 'STRONG-BOX-FLAG,TRUE-VALUE
MOVE STRONG-BOX,HERE
PRINTI "A glowing strong box forms out of the air, carefully enclosing the "
PRINTD PRSO
PRINTR ", which disappears from view. The strong box rests on the ground."
?ELS9: CALL V-VAXUM
RSTACK
.FUNCT STRONG-BOX-F,OBJ
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "The strong box is apparently stuck to the ground, or welded there, or tied with magical ropes. It won't move."
?ELS5: EQUAL? PRSA,V?KULCAD,V?REZROV,V?OPEN \FALSE
SET 'STRONG-BOX-FLAG,FALSE-VALUE
FIRST? STRONG-BOX >OBJ \?CND10
MOVE OBJ,HERE
CALL THIS-IS-IT,OBJ
?CND10: REMOVE STRONG-BOX
EQUAL? PRSA,V?OPEN \?ELS19
PUSH STR?122
JUMP ?CND15
?ELS19: EQUAL? PRSA,V?REZROV \?ELS21
PUSH STR?123
JUMP ?CND15
?ELS21: EQUAL? PRSA,V?KULCAD \?PRD17
PUSH STR?124
JUMP ?CND15
?PRD17: PUSH 0
?CND15: PRINT STACK
PRINTI " the strong box, it vanishes, and "
ZERO? OBJ /?ELS26
PRINTI "the "
PRINTD OBJ
PRINTI " re"
JUMP ?CND24
?ELS26: PRINTI "nothing "
?CND24: PRINTR "appears in its place."
.FUNCT V-GUNCHO
FSET? PRSO,VICBIT \?ELS5
REMOVE PRSO
PRINTI "The "
PRINTD PRSO
PRINTR " disappears, fading with stately speed into a misty shadow, shimmering and wavering, which then is gone."
?ELS5: CALL V-VAXUM
RSTACK
.FUNCT V-KREBF
ZERO? PRSO /?THN6
EQUAL? PRSO,GLOBAL-ROOM \?ELS5
?THN6: FSET? HERE,RMUNGBIT \?ELS12
FCLEAR HERE,RMUNGBIT
FCLEAR HERE,TOUCHBIT
PRINTR "There is a slow brightening of the illumination, and color flows back into your surroundings. There is a touch of spring in the air."
?ELS12: PRINTR "Nothing happens. Perhaps there was no damage here to repair."
?ELS5: FSET? PRSO,SCROLLBIT \?CND21
FIRST? PRSO \?CND21
FIRST? PRSO >PRSO /?KLU46
?KLU46:
?CND21: FSET? PRSO,RMUNGBIT /?ELS30
PRINTR "Nothing happens."
?ELS30: FCLEAR PRSO,RMUNGBIT
FSET? PRSO,SPELLBIT \?ELS39
PRINTI "The "
PRINTD PRSO
PRINTR " becomes readable again."
?ELS39: PRINTR "Nothing obvious happens."
.FUNCT V-CLEESH
EQUAL? PRSO,ME \?ELS5
PRINTI "You are turned into a newt, and scurry off to find your friends in the swamp. You are distracted by various yummy insects along the way, but eventually settle into a nice gooey part of the morass and live happily ever after, at least until you are devoured by a heron."
CRLF
CALL FINISH
RSTACK
?ELS5: EQUAL? PRSO,ADVENTURER,ADVENTURER-LG \?ELS9
CALL NO-MORE-ADVENTURER
CALL QUEUE,I-ADVENTURER,0
REMOVE ADVENTURER
PRINTR "The adventurer turns into a fairly large newt, which scuttles off and is lost to sight."
?ELS9: FSET? PRSO,VICBIT \?ELS13
FSET? PRSO,VILLAIN \?ELS13
PRINTI "The "
PRINTD PRSO
PRINTR " looks sort of green and slimy for a moment, but he gets better."
?ELS13: PRINTI "Turning the "
PRINTD PRSO
PRINTR " into a newt is a remarkable idea."
.FUNCT V-IZYUK
ZERO? PRSO /?THN6
EQUAL? PRSO,ME \?ELS5
?THN6: SET 'FLYING?,TRUE-VALUE
CALL QUEUE,I-FLY,4
PUT STACK,0,1
CALL QUEUE,I-FALL-FOREVER,0
PRINTR "Your descent slows, and you are floating serenely in midair. The tower surrounds you, with wide-cut openings to the east and west. You could probably fly in either direction if you wished."
?ELS5: PRINTI "You can't make the "
PRINTD PRSO
PRINTR " fly!"
.FUNCT I-FLY
SET 'FLYING?,FALSE-VALUE
LOC WINNER
EQUAL? STACK,PIT,REAL-STAIR \?ELS5
PRINTI "The izyuk spell has worn off! You plummet deeper and deeper into the pit! Oddly enough, you never seem to hit bottom. After many years, only tattered remnants of you remain, still falling."
CRLF
CALL FINISH
RSTACK
?ELS5: PRINTR "You settle gently to the ground."
.FUNCT V-FILFRE
PRINTI "In a blinding burst of pyrotechnics, the air lights up with fireworks and dazzling explosions of multicolored fire! In sizzling sparks and roiling smoke is written:
"
CALL FIXED-FONT-ON
PRINTI "
Enchanter
by
Dave Lebling
and
Marc Blank
Copyright 1983, by Infocom, Inc.
"
CALL FIXED-FONT-OFF
PRINTR "After a while, the smoke dissipates and the lights dim. You remain slightly dazzled for a while, but fortunately, this wears off."
.ENDI

325
main.zap Normal file
View File

@ -0,0 +1,325 @@
.FUNCT GO
START::
?FCN: PUTB P-LEXV,0,59
CALL QUEUE,I-TIRED,MOVES-PER-DAY
PUT STACK,0,1
CALL QUEUE,I-THIRST,41
PUT STACK,0,1
CALL QUEUE,I-HUNGER,67
PUT STACK,0,1
CALL QUEUE,I-TIME,-1
PUT STACK,0,1
CALL QUEUE,I-SCURRY,5
PUT STACK,0,1
CALL QUEUE,I-MUNG-ROOM,50
PUT STACK,0,1
CALL QUEUE,I-GUARDS-ARRIVE,0
PUT STACK,0,1
CALL QUEUE,I-ADVENTURER,0
PUT STACK,0,1
SET 'LIT,TRUE-VALUE
SET 'WINNER,PLAYER
SET 'HERE,WEST-FORK
SET 'P-IT-OBJECT,FALSE-VALUE
FSET? HERE,TOUCHBIT /?CND1
PRINTI "It must be the warlock Krill. The odd disappearances, the mysterious dissolution of regions sacred to the Circle, the lessening of the Powers -- these could only be his handiwork. The Circle gathers and its leader, the esteemed Belboz, reveals to them an ancient document which portends evil days much like our own.
""Krill's evil must be unmade,"" he begins, ""but to send a powerful Enchanter is ill-omened. It would be ruinous to reveal oversoon our full powers."" A ripple of concern spreads over the face of each Enchanter. Belboz pauses, and collects his resolve. ""Have hope! This has been written by a hand far wiser than mine!""
He recites a short spell and you appear. Belboz approaches, transfixing you with his gaze, and hands you the document. The other Enchanters await his decree. ""These words, written ages ago, can have only one meaning. You, a novice Enchanter with but a few simple spells in your Book, must seek out Krill, explore the Castle he has overthrown, and learn his secrets. Only then may his vast evil be lessened or, with good fortune, destroyed.""
The Circle rises and intones a richly woven spell, whose many textures imbue the small, darkened chamber with warmth and hope. There is a surge of power; you are Sent."
CRLF
CRLF
CALL V-VERSION
CRLF
?CND1: MOVE WINNER,HERE
CALL V-LOOK
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT MAIN-LOOP,TRASH
?PRG1: CALL MAIN-LOOP-1 >TRASH
JUMP ?PRG1
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
CALL PARSER >P-WON
ZERO? P-WON /?ELS3
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
ZERO? P-IT-OBJECT /?CND4
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK /?CND4
SET 'TMP,FALSE-VALUE
?PRG9: IGRTR? 'CNT,ICNT \?ELS13
JUMP ?REP10
?ELS13: GET P-PRSI,CNT
EQUAL? STACK,IT \?PRG9
PUT P-PRSI,CNT,P-IT-OBJECT
SET 'TMP,TRUE-VALUE
?REP10: ZERO? TMP \?CND19
SET 'CNT,0
?PRG22: IGRTR? 'CNT,OCNT \?ELS26
JUMP ?CND19
?ELS26: GET P-PRSO,CNT
EQUAL? STACK,IT \?PRG22
PUT P-PRSO,CNT,P-IT-OBJECT
?CND19: SET 'CNT,0
?CND4: ZERO? OCNT \?ELS36
PUSH OCNT
JUMP ?CND32
?ELS36: GRTR? OCNT,1 \?ELS38
SET 'TBL,P-PRSO
ZERO? ICNT \?ELS41
SET 'OBJ,FALSE-VALUE
JUMP ?CND39
?ELS41: GET P-PRSI,1 >OBJ
?CND39: PUSH OCNT
JUMP ?CND32
?ELS38: GRTR? ICNT,1 \?ELS45
SET 'PTBL,FALSE-VALUE
SET 'TBL,P-PRSI
GET P-PRSO,1 >OBJ
PUSH ICNT
JUMP ?CND32
?ELS45: PUSH 1
?CND32: SET 'NUM,STACK
ZERO? OBJ \?CND48
EQUAL? ICNT,1 \?CND48
GET P-PRSI,1 >OBJ
?CND48: EQUAL? PRSA,V?WALK \?ELS55
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND53
?ELS55: ZERO? NUM \?ELS57
GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
ZERO? STACK \?ELS60
CALL PERFORM,PRSA >V
SET 'PRSO,FALSE-VALUE
JUMP ?CND53
?ELS60: ZERO? LIT \?ELS62
PRINTI "It's too dark to see."
CRLF
JUMP ?CND53
?ELS62: PRINTI "There isn't anything to "
GET P-ITBL,P-VERBN >TMP
ZERO? P-OFLAG \?THN72
ZERO? P-MERGED /?ELS71
?THN72: GET TMP,0
PRINTB STACK
JUMP ?CND69
?ELS71: GETB TMP,2 >?TMP1
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
?CND69: PRINTI "!"
CRLF
SET 'V,FALSE-VALUE
JUMP ?CND53
?ELS57: SET 'P-NOT-HERE,0
SET 'P-MULT,FALSE-VALUE
GRTR? NUM,1 \?CND80
SET 'P-MULT,TRUE-VALUE
?CND80: SET 'TMP,FALSE-VALUE
?PRG83: IGRTR? 'CNT,NUM \?ELS87
GRTR? P-NOT-HERE,0 \?ELS90
PRINTI "The "
EQUAL? P-NOT-HERE,NUM /?CND93
PRINTI "other "
?CND93: PRINTI "object"
EQUAL? P-NOT-HERE,1 /?CND100
PRINTI "s"
?CND100: PRINTI " that you mentioned "
EQUAL? P-NOT-HERE,1 /?ELS109
PRINTI "are"
JUMP ?CND107
?ELS109: PRINTI "is"
?CND107: PRINTI "n't here."
CRLF
JUMP ?REP84
?ELS90: ZERO? TMP \?REP84
PRINTI "I don't know what you're referring to."
CRLF
JUMP ?REP84
?ELS87: ZERO? PTBL /?ELS126
GET P-PRSO,CNT >OBJ1
JUMP ?CND124
?ELS126: GET P-PRSI,CNT >OBJ1
?CND124: ZERO? PTBL /?ELS134
PUSH OBJ1
JUMP ?CND130
?ELS134: PUSH OBJ
?CND130: SET 'PRSO,STACK
ZERO? PTBL /?ELS142
PUSH OBJ
JUMP ?CND138
?ELS142: PUSH OBJ1
?CND138: SET 'PRSI,STACK
EQUAL? PRSA,V?ERASE-LINE,V?MAKE-LINE \?ELS148
JUMP ?CND146
?ELS148: GRTR? NUM,1 /?THN151
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?CND146
?THN151: EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS155
INC 'P-NOT-HERE
JUMP ?PRG83
?ELS155: EQUAL? P-GETFLAGS,P-ALL \?ELS157
EQUAL? PRSA,V?TAKE \?ELS157
LOC OBJ1
EQUAL? STACK,WINNER,HERE,OBJ /?ELS157
JUMP ?PRG83
?ELS157: EQUAL? PRSA,V?TAKE \?ELS161
ZERO? PRSI /?ELS161
GET P-ITBL,P-NC1
GET STACK,0
EQUAL? STACK,W?ALL \?ELS161
IN? PRSO,PRSI /?ELS161
JUMP ?PRG83
?ELS161: EQUAL? OBJ1,IT \?ELS168
PRINTD P-IT-OBJECT
JUMP ?CND166
?ELS168: PRINTD OBJ1
?CND166: PRINTI ": "
?CND146: SET 'TMP,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,PRSI >V
EQUAL? V,M-FATAL \?PRG83
JUMP ?CND53
?REP84:
?CND53: EQUAL? V,M-FATAL /?CND176
LOC WINNER
ZERO? STACK /?CND176
LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-END >V
?CND176: EQUAL? PRSA,V?SCORE,V?RESTORE,V?SAVE /?CND182
EQUAL? PRSA,V?VERSION \?ELS184
JUMP ?CND182
?ELS184: SET 'L-PRSA,PRSA
SET 'L-PRSO,PRSO
SET 'L-PRSI,PRSI
?CND182: EQUAL? V,M-FATAL \?CND1
SET 'P-CONT,FALSE-VALUE
JUMP ?CND1
?ELS3: SET 'P-CONT,FALSE-VALUE
?CND1: ZERO? P-WON /FALSE
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?TELL /TRUE
EQUAL? PRSA,V?VERSION,V?SAVE,V?VERBOSE /TRUE
EQUAL? PRSA,V?RESTART,V?QUIT,V?TIME /TRUE
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT,V?SCORE /TRUE
EQUAL? PRSA,V?RESTORE /TRUE
CALL CLOCKER >V
RETURN V
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
SET 'OA,PRSA
SET 'OO,PRSO
SET 'OI,PRSI
EQUAL? IT,I,O \?CND1
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK \?CND1
PRINTI "I don't see what you are referring to."
CRLF
RETURN 2
?CND1: EQUAL? O,IT \?CND10
SET 'O,P-IT-OBJECT
?CND10: EQUAL? I,IT \?CND13
SET 'I,P-IT-OBJECT
?CND13: SET 'PRSA,A
SET 'PRSO,O
ZERO? PRSO /?CND16
EQUAL? PRSA,V?WALK /?CND16
SET 'P-IT-OBJECT,PRSO
?CND16: SET 'PRSI,I
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?ELS23
CALL NOT-HERE-OBJECT-F >V
ZERO? V /?ELS23
SET 'P-WON,FALSE-VALUE
JUMP ?CND21
?ELS23: SET 'O,PRSO
SET 'I,PRSI
GETP WINNER,P?ACTION
CALL STACK >V
ZERO? V /?ELS30
JUMP ?CND21
?ELS30: LOC WINNER
GETP STACK,P?ACTION
CALL STACK,M-BEG >V
ZERO? V /?ELS32
JUMP ?CND21
?ELS32: GET PREACTIONS,A
CALL STACK >V
ZERO? V /?ELS34
JUMP ?CND21
?ELS34: ZERO? I /?ELS36
GETP I,P?ACTION
CALL STACK >V
ZERO? V /?ELS36
JUMP ?CND21
?ELS36: ZERO? O /?ELS40
EQUAL? A,V?WALK /?ELS40
LOC O
ZERO? STACK /?ELS40
LOC O
GETP STACK,P?CONTFCN
CALL STACK >V
ZERO? V /?ELS40
JUMP ?CND21
?ELS40: ZERO? O /?ELS44
EQUAL? A,V?WALK /?ELS44
GETP O,P?ACTION
CALL STACK >V
ZERO? V /?ELS44
JUMP ?CND21
?ELS44: GET ACTIONS,A
CALL STACK >V
ZERO? V /?CND21
?CND21: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT I-TIME
EQUAL? HASTED?,ME \?ELS3
MOD MOVES,2
ZERO? STACK /TRUE
?ELS3: IGRTR? 'TOD,127 \?CND1
SET 'TOD,0
SUB NIGHTFALL,20 >NIGHTFALL
INC 'LOSSAGE
SUB DUSK,20 >DUSK
ADD MOLESTED,5 >MOLESTED
ADD MUNCHED,5 >MUNCHED
LESS? NIGHTFALL,0 \?CND1
PRINTI "Belboz appears before you, in a magical sending. He speaks, his voice soft and saddened. ""You have failed. Universal night has now fallen. Krill and his creatures now may freely roam the earth. The power of the Circle is diminished, if not broken. I go to prepare the last defense."" The sending vanishes."
CRLF
CALL FINISH
?CND1: EQUAL? TOD,NIGHTFALL \?ELS17
LOC PLAYER
FSET? STACK,ONBIT \?ELS17
PRINTI "The darkened sky is now full of bright stars. It is night."
CRLF
LESS? NIGHTFALL,97 \TRUE
PRINTR "Today seemed shorter than yesterday, somehow."
?ELS17: EQUAL? TOD,SUNRISE \?ELS28
LOC PLAYER
FSET? STACK,ONBIT \?ELS28
PRINTR "The sun has now risen above the hills."
?ELS28: EQUAL? TOD,DUSK \FALSE
LOC PLAYER
FSET? STACK,ONBIT \FALSE
PRINTI "The sun starts to set behind the Lonely Mountain in the west."
CRLF
LESS? NIGHTFALL,97 \TRUE
PRINTR "The day is coming to an end earlier than you would have expected."
.ENDI

View File

@ -45,7 +45,6 @@
<SETG LIT T>
<SETG WINNER ,PLAYER>
<SETG HERE ,WEST-FORK>
<SETG P-IT-LOC ,HERE>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL
@ -81,17 +80,41 @@ you are Sent." CR>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
<ROUTINE MAIN-LOOP ("AUX" TRASH)
<REPEAT ()
<SET TRASH <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
#DECL ((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ) <OR FALSE OBJECT>
(OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
<REPEAT ()
<SET CNT 0>
<SET OBJ <>>
<SET PTBL T>
<COND (<SETG P-WON <PARSER>>
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
<SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
<COND (<AND ,P-IT-OBJECT <ACCESSIBLE? ,P-IT-OBJECT>>
<SET TMP <>>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
<PUT ,P-PRSI .CNT ,P-IT-OBJECT>
<SET TMP T>
<RETURN>)>)>>
<COND (<NOT .TMP>
<SET CNT 0>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
<RETURN>)
(T
<COND (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
<PUT ,P-PRSO .CNT ,P-IT-OBJECT>
<RETURN>)>)>>)>
<SET CNT 0>)>
<SET NUM
<COND (<0? <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>> .OCNT)
<COND (<0? .OCNT> .OCNT)
(<G? .OCNT 1>
<SET TBL ,P-PRSO>
<COND (<0? .ICNT> <SET OBJ <>>)
@ -164,7 +187,8 @@ you are Sent." CR>
<NOT <EQUAL?
<LOC .OBJ1>
,WINNER
,HERE>>>
,HERE
.OBJ>>>
<AGAIN>)
(<AND <VERB? TAKE>
,PRSI
@ -189,7 +213,7 @@ you are Sent." CR>
<SET V
<APPLY <GETP <LOC ,WINNER> ,P?ACTION>
,M-END>>)>)>
<COND (<VERB? AGAIN ;WALK SAVE RESTORE SCORE VERSION> T)
<COND (<VERB? ;AGAIN ;WALK SAVE RESTORE SCORE VERSION> T)
(T
<SETG L-PRSA ,PRSA>
<SETG L-PRSO ,PRSO>
@ -200,7 +224,7 @@ you are Sent." CR>
<COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION
TIME QUIT RESTART SCORE SCRIPT UNSCRIPT RESTORE> T)
(T <SET V <CLOCKER>>)>)>>>
(T <SET V <CLOCKER>>)>)>>
<GLOBAL L-PRSA <>>
@ -222,7 +246,7 @@ you are Sent." CR>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<NOT <ACCESSIBLE? ,P-IT-OBJECT>>>
<TELL "I don't see what you are referring to." CR>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
@ -230,8 +254,7 @@ you are Sent." CR>
<SETG PRSA .A>
<SETG PRSO .O>
<COND (<AND ,PRSO <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>
<SETG P-IT-LOC ,HERE>)>
<SETG P-IT-OBJECT ,PRSO>)>
<SETG PRSI .I>
<COND (<AND <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <NOT-HERE-OBJECT-F>>>
@ -277,7 +300,7 @@ you are Sent." CR>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<NOT <ACCESSIBLE? ,P-IT-OBJECT>>>
<TELL "I don't see what you are referring to." CR>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
@ -285,8 +308,7 @@ you are Sent." CR>
<SETG PRSA .A>
<SETG PRSO .O>
<COND (<AND ,PRSO <NOT <VERB? WALK>>>
<SETG P-IT-OBJECT ,PRSO>
<SETG P-IT-LOC ,HERE>)>
<SETG P-IT-OBJECT ,PRSO>)>
<SETG PRSI .I>
<COND (<AND <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>>

324
outside.zap Normal file
View File

@ -0,0 +1,324 @@
.FUNCT WEST-CASTLE-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are outside the western entrance to the castle. To the east stands an iron gate which is "
FSET? IRON-GATE,OPENBIT \?ELS10
PRINTI "wide open"
JUMP ?CND8
?ELS10: PRINTI "closed and chained"
?CND8: PRINTR ". A winding road starts here and proceeds to the west."
.FUNCT UNDERGROWTH-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The undergrowth is thick. You would never get through it."
?ELS5: EQUAL? PRSA,V?MUNG,V?CUT \FALSE
PRINTR "You could spend a few days doing this without much progress."
.FUNCT PATH-SIGN-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
CALL FIXED-FONT-ON
PRINTI "
- Shady Brook Trail -
Old Lingolf House
1000 feet
"
CALL FIXED-FONT-OFF
RTRUE
.FUNCT FOUNDATION-F
EQUAL? PRSA,V?THROUGH \?ELS5
PRINTR "No way."
?ELS5: EQUAL? PRSA,V?WHO \?ELS9
PRINTR "There's no way of knowing."
?ELS9: EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH \FALSE
PRINTR "There is nothing but stone there."
.FUNCT DISTANT-CASTLE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The castle is far to the east and flanked by dark towers. From this distance, not much detail can be discerned."
?ELS5: EQUAL? PRSA,V?WALK-TO \FALSE
PRINTR "There's no direct path from here, although roads lead there. Try specifying a compass direction in order to move around."
.FUNCT SHACK-OBJ-F
EQUAL? PRSA,V?THROUGH \?ELS5
EQUAL? HERE,SHACK-ROOM \?ELS5
CALL GOTO,SHACK
RTRUE
?ELS5: EQUAL? PRSA,V?DROP \FALSE
EQUAL? HERE,SHACK \FALSE
CALL GOTO,SHACK-ROOM
RTRUE
.FUNCT BATTERED-LANTERN-F
EQUAL? PRSA,V?ERASE-LINE \?ELS5
PRINTR "Aladdin you're not."
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS9
PRINTR "The lamp seems to be broken, most likely beyond repair."
?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13
PRINTR "The lamp is made of brass and is old and battered. It doesn't seem likely that any use can be made of it."
?ELS13: EQUAL? PRSA,V?LAMP-OFF \FALSE
FSET? PRSO,ONBIT /FALSE
PRINTR "It isn't on!"
.FUNCT SHACK-STUFF
EQUAL? PRSA,V?PUT \FALSE
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
PRINTR "They are overturned and don't make good surfaces."
.FUNCT SHACK-OVEN-F
EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \?ELS5
PRINTR "It's not working."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "Strangely, the oven is still slightly warm, as if it had been used recently."
.FUNCT BREAD-F,AMT,S
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "There's "
GETP BREAD,P?SIZE
GET BREAD-EXAMINES,STACK
PRINT STACK
PRINTR " left."
?ELS5: EQUAL? PRSA,V?EAT \?ELS9
CALL INT,I-HUNGER
GET STACK,C-TICK >S
GRTR? S,60 \?CND10
PRINTR "You aren't the least bit hungry."
?CND10: GETP BREAD,P?SIZE
SUB STACK,1 >AMT
PUTP BREAD,P?SIZE,AMT
ADD SCORE,EAT-POINT >SCORE
SET 'EAT-POINT,0
PRINTI "Mmm. That tasted great! "
GET BREAD-AMTS,AMT
PRINT STACK
CRLF
ZERO? AMT \?CND19
REMOVE BREAD
?CND19: ADD S,47
CALL QUEUE,I-HUNGER,STACK
SET 'HUNGER-COUNT,0
RTRUE
?ELS9: EQUAL? PRSA,V?BURN \?ELS23
EQUAL? PRSI,ETERNAL-FLAME \?ELS23
PRINTR "Toast without jam? What a silly idea!"
?ELS23: EQUAL? PRSA,V?MUNG,V?CUT \FALSE
EQUAL? PRSI,MAGIC-KNIFE \FALSE
PRINTR "It seems silly to cut up your bread when it's more easily carried in one piece. Besides, you might get crumbs all over your spell book."
.FUNCT TREES-F
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
PRINTR "The trees are not suitable for climbing."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
FSET? HERE,RMUNGBIT \?ELS14
PRINTR "The trees are short and stunted and covered in a thick, grey ash. The roots themselves are blackened and foul-smelling."
?ELS14: PRINTR "The trees are mostly short and stunted."
.FUNCT HOVEL-F
EQUAL? HERE,VILLAGE \FALSE
EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
CALL DO-WALK,P?SOUTH
RTRUE
.FUNCT HOVEL-KLUDGE
PRINTI "It is dark and smoky in here, but this is a place of great disorder, and its odor is indescribable. A pile of rags sits near a small pot which is bubbling and steaming over a tiny fire. The pile of rags sports a gnarled hand which busies itself with the noisome stew. A closer look reveals a withered crone at the other end of the hand."
CRLF
ZERO? CRONE-MOVE \?ELS5
CRLF
PRINTI "The creature looks you over keenly and speaks: ""I should have thought they would send someone more ... more ..."" She laughs in an unsettling way. ""They've all left! A great storm is brewing in the east, my friend, and all have fled before it!"" She starts to chuckle. ""Take this and begone!"" With a wave of her hand, you find yourself reeling out of the door of the hovel, holding some sort of scroll in your hand."
CRLF
MOVE OPEN-SCROLL,WINNER
SET 'CRONE-MOVE,MOVES
RFALSE
?ELS5: SUB MOVES,CRONE-MOVE
LESS? STACK,20 \?ELS9
PRINTI "As you enter the crone's hovel, she booms at you: ""Are you here again? What a wizard!"" Her emphasis on the word ""wizard"" is filled with derision. ""Make a small effort, would you, to make your Circle proud of you?"" The same horrible emphasis on ""proud"" fills you with revulsion. ""Go!"" You find yourself back in the village."
CRLF
RFALSE
?ELS9: SET 'CRONE-MOVE,MOVES
PRINTI "As you enter, the woman in rags wags her head slowly. ""You've returned, have you? You need help perhaps? Well, I've given you all the help in my meager store. You want more? Leave me!"" You find yourself in the village."
CRLF
RFALSE
.FUNCT GLOBAL-CRONE-F
EQUAL? PRSA,V?ZIFMIA \?ELS5
PRINTR "Slowly, the old woman, swathed in rags, appears before you. She seems to be staring through you and speaks slowly and sullenly: ""I thought I might see you again, my friend! I gave you all the aid that I can. The rest is up to you..."" She disappears."
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
PRINTR "The crone was presumably the village wise woman and its last remaining inhabitant."
?ELS9: PRINTR "The crone isn't here."
.FUNCT LONG-ROAD-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are walking along the road. It wends its way through low hills, sparse forests, and occasional subsistence farms. To the west, things seem lighter and more pleasant. To the east they seem oppressive and dark. A worn sign sits beside the road here."
EQUAL? ROAD-LOC,ROAD-START \?CND8
PRINTI " The deserted village is to the east."
?CND8: CRLF
RTRUE
.FUNCT FARM-PSEUDO
EQUAL? PRSA,V?THROUGH,V?EXAMINE \FALSE
PRINTR "It's a poor, run-down farm, and not of interest."
.FUNCT LONG-ROAD-SIGN-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
SUB ROAD-LOC,ROAD-START
GRTR? STACK,11 \?ELS10
PRINTR "The sign is too worn to be read."
?ELS10: PRINTI """"
SUB ROAD-LOC,ROAD-START
GET SIGN-TBL,STACK
PRINT STACK
PRINTR """"
.FUNCT LONG-ROAD-EXIT-F
EQUAL? ROAD-LOC,ROAD-START \?ELS5
EQUAL? PRSO,P?EAST \?ELS5
RETURN WEST-FORK
?ELS5: FCLEAR LONG-ROAD,TOUCHBIT
CALL ROAD-TO-TABLE,ROAD-LOC
EQUAL? PRSO,P?WEST \?ELS12
INC 'ROAD-LOC
JUMP ?CND10
?ELS12: EQUAL? PRSO,P?EAST \?CND10
DEC 'ROAD-LOC
?CND10: CALL TABLE-TO-ROAD,ROAD-LOC
RETURN LONG-ROAD
.FUNCT ROAD-TO-TABLE,SLOC,TBL,CNT=0,F,N
FIRST? LONG-ROAD >F /?KLU21
?KLU21: SET 'TBL,ROAD-TABLE
?PRG1: ZERO? F /TRUE
NEXT? F >N /?KLU22
?KLU22: EQUAL? F,WINNER \?ELS11
JUMP ?CND9
?ELS11: FSET? F,TAKEBIT \?CND9
?PRG14: GET TBL,CNT
ZERO? STACK \?ELS18
PUT TBL,CNT,SLOC
ADD CNT,1
PUT TBL,STACK,F
ADD CNT,2 >CNT
REMOVE F
JUMP ?CND9
?ELS18: ADD CNT,2 >CNT
JUMP ?PRG14
?CND9: SET 'F,N
JUMP ?PRG1
.FUNCT TABLE-TO-ROAD,SLOC,TBL,CNT=0
SET 'TBL,ROAD-TABLE
?PRG1: LESS? CNT,ROAD-TABLE-LENGTH \TRUE
GET TBL,CNT
EQUAL? STACK,SLOC \?CND3
PUT TBL,CNT,0
ADD CNT,1
GET TBL,STACK
MOVE STACK,LONG-ROAD
?CND3: ADD CNT,2 >CNT
JUMP ?PRG1
.FUNCT ROAD-F
EQUAL? PRSA,V?TAKE,V?FOLLOW \?ELS5
PRINTR "You should supply a compass direction in which to follow the path."
?ELS5: EQUAL? PRSA,V?DROP \FALSE
CALL OUTSIDE?,HERE
ZERO? STACK /?ELS14
PRINTR "It's much safer to stay on the path, especially in these times."
?ELS14: PRINTR "You'll have to give a direction."
.FUNCT HILLS-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "The hills are mostly low and shrouded in a fine mist-like haze. They stretch out mainly to the west."
?ELS5: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE
CALL PERFORM,V?LEAVE,ROAD
RTRUE
.FUNCT MOUNTAIN-F
EQUAL? PRSA,V?LEAP \?ELS5
EQUAL? HERE,VISTA \?ELS5
CALL JIGS-UP,STR?343
RSTACK
?ELS5: EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-FOO \?ELS9
EQUAL? HERE,VISTA \?ELS14
PRINTR "You are here!"
?ELS14: EQUAL? HERE,VILLAGE,MOUNTAIN-TRAIL \?ELS18
CALL DO-WALK,P?UP
RSTACK
?ELS18: PRINTR "There's no way up the mountain from here."
?ELS9: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The mountain is tall and proud, and its shining peak stands above the low-hanging clouds."
.FUNCT OUTSIDE?,RM
FSET? RM,LIGHTBIT \FALSE
EQUAL? RM,SHACK,INSIDE-GATE /FALSE
EQUAL? RM,PEBBLED-PATH,COURTYARD-1 /FALSE
EQUAL? RM,COURTYARD-2,COURTYARD-3,COURTYARD-4 /FALSE
EQUAL? RM,COURTYARD-5,COURTYARD-6,COURTYARD-7 /FALSE
EQUAL? RM,SHACK-ROOM,BEDROOM \TRUE
RFALSE
.FUNCT I-SCURRY
RANDOM 20
ADD 15,STACK
CALL QUEUE,I-SCURRY,STACK
PUT STACK,0,1
RANDOM 100
GRTR? 25,STACK \FALSE
CALL OUTSIDE?,HERE
ZERO? STACK /?ELS10
LESS? NIGHTFALL,70 \?ELS15
RANDOM 100
GRTR? 50,STACK \?ELS15
PRINTR "You hear noises in the brambles. Snorting noises are followed by loud crashing and finally a hideous squeal of triumph."
?ELS15: PRINTR "You hear a rustling in the brambles nearby, and you catch a glimpse of something small and furry as it scurries away."
?ELS10: EQUAL? HERE,PIT,REAL-STAIR,PURLOINED-ROOM /FALSE
EQUAL? HERE,WARLOCK-TOWER /FALSE
GETP HERE,P?TMAZE
ZERO? STACK \FALSE
LOC WINNER
EQUAL? STACK,DUNGEON,NORTH-CELL /?THN32
LOC WINNER
EQUAL? STACK,SECRET-PASSAGE \?ELS31
?THN32: PRINTR "You hear, almost beyond your hearing, the soft rattle of chains, and a cold wind blows over the back of your neck."
?ELS31: GRTR? TOD,NIGHTFALL \?ELS37
CALL PICK-ONE,NIGHT-GLIMPSES
PRINT STACK
CRLF
RTRUE
?ELS37: CALL PICK-ONE,GLIMPSES
PRINT STACK
CRLF
RTRUE
.FUNCT GLIMPSE-F
GRTR? MOVES,0 \?ELS5
PRINTR "You can't see that anymore."
?ELS5: PRINTR "You see no such thing."
.ENDI

1765
parser.cmp Normal file

File diff suppressed because it is too large Load Diff

1290
parser.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -41,7 +41,6 @@
<GLOBAL P-CONT <>>
<GLOBAL P-IT-OBJECT <>>
<GLOBAL P-IT-LOC <>>
;"Orphan flag"
@ -635,7 +634,7 @@ or creatures." CR>
<TELL "the ">)>
<COND (<OR ,P-OFLAG ,P-MERGED> <PRINTB .WRD>)
(<AND <==? .WRD ,W?IT>
<==? ,P-IT-LOC ,HERE>>
<ACCESSIBLE? ,P-IT-OBJECT>>
<PRINTD ,P-IT-OBJECT>)
(T
<WORD-PRINT <GETB .BEG 2>
@ -993,6 +992,8 @@ or creatures." CR>
<RETURN>)>>>
<GLOBAL LAST-PSEUDO-LOC <>>
<ROUTINE GLOBAL-CHECK (TBL "AUX" LEN RMG RMGL (CNT 0) OBJ OBITS FOO)
#DECL ((TBL) TABLE (RMG) <OR FALSE TABLE> (RMGL CNT) FIX (OBJ) OBJECT)
<SET LEN <GET .TBL ,P-MATCHLEN>>
@ -1008,6 +1009,7 @@ or creatures." CR>
<SET CNT 0>
<REPEAT ()
<COND (<==? ,P-NAM <GET .RMG <* .CNT 2>>>
<SETG LAST-PSEUDO-LOC ,HERE>
<PUTP ,PSEUDO-OBJECT
,P?ACTION
<GET .RMG <+ <* .CNT 2> 1>>>
@ -1086,7 +1088,13 @@ or creatures." CR>
<COND (<L? <SET PTR <- .PTR 1>> 0> <RETURN>)
(T
<SET OBJ <GET .TBL <+ .PTR 1>>>
<COND (<==? .OBJ ,IT> <SET OBJ ,P-IT-OBJECT>)>
<COND (<==? .OBJ ,IT>
<COND (<NOT <ACCESSIBLE? ,P-IT-OBJECT>>
<TELL
"I don't see what you're referring to." CR>
<RFALSE>)
(T
<SET OBJ ,P-IT-OBJECT>)>)>
<COND (<NOT <IN? .OBJ ,WINNER>>
<SETG PRSO .OBJ>
<COND (<FSET? .OBJ ,TRYTAKEBIT>
@ -1185,4 +1193,41 @@ or creatures." CR>
<COND (<OR ,P-MERGED
<==? <GET <SET PTR <GET ,P-ITBL ,P-NC2>> 0> ,W?IT>>
<TELL " " D ,PRSO>)
(T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC2L> <>>)>>
(T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC2L> <>>)>>
<ROUTINE ACCESSIBLE? (OBJ "AUX" (L <LOC .OBJ>)) ;"can player TOUCH object?"
;"revised 5/2/84 by SEM and SWG"
<COND (<FSET? .OBJ ,INVISIBLE>
<RFALSE>)
;(<EQUAL? .OBJ ,PSEUDO-OBJECT>
<COND (<EQUAL? ,LAST-PSEUDO-LOC ,HERE>
<RTRUE>)
(T
<RFALSE>)>)
(<NOT .L>
<RFALSE>)
(<EQUAL? .L ,GLOBAL-OBJECTS>
<RTRUE>)
(<AND <EQUAL? .L ,LOCAL-GLOBALS>
<GLOBAL-IN? .OBJ ,HERE>>
<RTRUE>)
(<NOT <EQUAL? <META-LOC .OBJ> ,HERE <LOC ,WINNER>>>
<RFALSE>)
(<EQUAL? .L ,WINNER ,HERE <LOC ,WINNER>>
<RTRUE>)
(<AND <FSET? .L ,OPENBIT>
<ACCESSIBLE? .L>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT .OBJ>
<RFALSE>)
(<IN? .OBJ ,GLOBAL-OBJECTS>
<RETURN ,GLOBAL-OBJECTS>)>
<COND (<IN? .OBJ ,ROOMS>
<RETURN .OBJ>)
(T
<SET OBJ <LOC .OBJ>>)>>>

775
purloined.zap Normal file
View File

@ -0,0 +1,775 @@
.FUNCT MAPS-F
EQUAL? PRSA,V?TAKE \?ELS5
PRINTR "Most of the maps are murals painted onto the walls. The others are securely mounted."
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The maps on the walls were made in the Elder days, when the face of the earth was different. You can recognize the ancient cities of Galepath and Mareilon on the shores of the Sea from your legends class at the University, but you have trouble discerning any other places. One map shows a proud castle standing on a cliff rising above the Sea. Largoneth it was, the once-proud home of Entharion the Wise, King of Quendor. As you realize that this place was the King's Map Room, you are filled with wonder at the ancient days."
.FUNCT ENTHARION-F
EQUAL? PRSA,V?WHO,V?EXAMINE \?ELS5
PRINTR "You can remember little of the legends of Entharion the Wise. Perhaps you should have paid more attention in Legends class."
?ELS5: EQUAL? PRSA,V?ZIFMIA \FALSE
PRINTR "Poor Entharion, he's been dead these many years. You would need more than a summoning spell to get him here."
.FUNCT GLOBE-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The globe represents the world as it was thought to be in the ancient days. Very little can be recognized of the seas or land masses."
.FUNCT PEDESTAL-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "A globe is sitting on it."
.FUNCT PURLOINED-ROOM-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
ZERO? DOOR-ILLUSION-GONE \?ELS10
PRINTI "A more incongruous place than this would be difficult to believe. The room itself is nothing more than a small room at the base of the northeast tower with a narrow passageway entering from the west. Standing in front of you to the north, however, is a door surpassing anything you could have imagined. For starters, its massive lock is wrapped in a dozen six-inch thick iron chains. In addition, a certain five-headed monster sporting razor-sharp spears for tongues seems to be imbedded within its heavy oak frame. One is almost embarrassed to mention the gargoyles spewing flame and sulphurous ash which ornament either side of the door, or the ninety-seven slimy groping tentacles which taunt you ever closer to certain death. A sign, floating serenely above the door and glowing hideously in purple letters, offers the following rude understatement: "
GETP FLOATING-SIGN,P?TEXT
PRINT STACK
PRINTR "."
?ELS10: PRINTI "This rather unobtrusive room at the base of the northwest tower sports a small passageway to the west and a small, rickety door to the north which is "
FSET? DOOR-REALITY,OPENBIT \?ELS21
PRINTI "open"
JUMP ?CND19
?ELS21: PRINTI "closed"
?CND19: PRINTR "."
?ELS5: EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?WALK \FALSE
EQUAL? PRSO,P?UP,P?NORTH \FALSE
ZERO? DOOR-ILLUSION-GONE \FALSE
EQUAL? WINNER,PLAYER \?ELS38
CALL PERFORM,V?OPEN,DOOR-ILLUSION
RTRUE
?ELS38: PRINTR """I'd like to, but the door's closed."""
.FUNCT DOOR-ILLUSION-F
ZERO? DOOR-ILLUSION-GONE \FALSE
EQUAL? PRSA,V?KULCAD \?ELS10
PRINTI "As the last syllable of the kulcad spell echoes through the chamber, the door itself seems to dissolve. Slowly at first, then quickly, each of its rather unlovely ornaments turns pale, then transparent, then - nothing! What remains is a simple, wooden door which is standing shut. You move hesitantly toward the door. Nothing. You pause for a moment to regain your composure."
CRLF
SET 'DOOR-KULCAD,TRUE-VALUE
FSET DOOR-ILLUSION,INVISIBLE
FCLEAR DOOR-REALITY,INVISIBLE
FCLEAR DOOR-REALITY,OPENBIT
FCLEAR DOOR-REALITY,LOCKEDBIT
SET 'DOOR-ILLUSION-GONE,TRUE-VALUE
REMOVE MONSTERS-1
REMOVE MONSTERS-2
REMOVE MONSTERS-3
RTRUE
?ELS10: EQUAL? PRSA,V?SHOW \?ELS14
EQUAL? PRSI,ADVENTURER \?ELS14
CALL PERFORM,V?POINT,PRSO
RTRUE
?ELS14: EQUAL? PRSA,V?POINT \?ELS18
IN? ADVENTURER,HERE \?ELS18
SET 'ADVENTURER-STAY,TRUE-VALUE
ZERO? ADVENTURER-CHARMED /?ELS25
PRINTI "As you motion toward the monstrous door, the adventurer follows the imaginary line which proceeds thence from your outstretched arm."
CRLF
CRLF
CALL NO-ILLUSIONS
RTRUE
?ELS25: PRINTR "The adventurer seems frightened, and he backs up toward the door."
?ELS18: EQUAL? PRSA,V?UNLOCK,V?RUB,V?OPEN /?THN35
EQUAL? PRSA,V?ATTACK,V?KILL,V?MUNG /?THN35
EQUAL? PRSA,V?KNOCK \?ELS34
?THN35: IGRTR? 'BEATEN-UP,4 \?CND37
CALL JIGS-UP,STR?132
RTRUE
?CND37: CALL PICK-ONE,ILLUSION-HACKS
PRINT STACK
CRLF
CALL PICK-ONE,SIGN-TEXTS
PUTP FLOATING-SIGN,P?TEXT,STACK
RTRUE
?ELS34: EQUAL? PRSA,V?REZROV \FALSE
PRINTR "As you cast the rezrov spell, the door shudders briefly, and a few tentacles pause in their unending motion. The two gargoyles look at each other, perplexed. After a tense moment, the sign above the door flashes briefly: ""Fat Chance""."
.FUNCT MIRROR-F
FSET? HERE,NDESCBIT \?ELS5
EQUAL? PRSA,V?KREBF \?ELS10
FCLEAR HERE,NDESCBIT
PRINTR "Shards of glass fly into the air, solving a jigsaw puzzle of a million pieces. The mirror is repaired!"
?ELS10: PRINTR "There's no mirror left here after the way you treated it."
?ELS5: EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?ELS18
PRINTI "The scene behind the ""mirror"" is an underground landscape."
FSET? ADVENTURER-LG,INVISIBLE /?CND21
PRINTI " A weary adventurer is standing there, dejected."
?CND21: CRLF
RTRUE
?ELS18: EQUAL? PRSA,V?ATTACK,V?MUNG \FALSE
PRINTI "The mirror here smashes into tiny shards. Behind the mirror is a bare rock wall."
CRLF
CALL NO-MORE-ADVENTURER
FSET HERE,NDESCBIT
RTRUE
.FUNCT SHARDS-F
FSET? HERE,NDESCBIT /?ELS5
PRINTR "There are no shards of glass here...yet."
?ELS5: EQUAL? PRSA,V?PUT,V?MOVE,V?TAKE /?THN10
EQUAL? PRSA,V?RUB \FALSE
?THN10: PRINTR "You would slice your fingers on them."
.FUNCT MIRROR-HALL-F,RARG,RM
EQUAL? RARG,M-LOOK \?ELS5
GETP HERE,P?COUNT >RM
GET MIRROR-HALL-TBL1,RM
PRINT STACK
FSET? HERE,NDESCBIT \?ELS10
PRINTI " Hall of Mirrors. Where there used to be a large mirror mounted on the wall is only an empty frame. Shards of mirror cover the floor."
CRLF
JUMP ?CND8
?ELS10: PRINTI " Hall of Mirrors. The hall itself is astounding and not a little bit confusing. To be sure, its northern wall is glass, but it does not seem to reflect anything within the hall. Rather, it seems to be a window on another world. This other world appears to be a large underground labyrinth, filled with tunnels, caves, and peculiar rock formations."
CRLF
?CND8: ZERO? ADVENTURER-LOC /FALSE
CALL DESCRIBE-ADVENTURER
RSTACK
?ELS5: EQUAL? RARG,M-ENTER \?ELS24
MOVE GLOBAL-ADVENTURER,GLOBAL-OBJECTS
RFALSE
?ELS24: EQUAL? RARG,M-END \FALSE
FSET? HERE,NDESCBIT /FALSE
ZERO? ADVENTURER-SUMMONED \FALSE
FSET? ADVENTURER-LG,INVISIBLE \FALSE
RANDOM 100
GRTR? 15,STACK \FALSE
SET 'ADVENTURER-LOC,HERE
CALL QUEUE,I-LG-ADVENTURER,-1
PUT STACK,0,1
PRINTI "From the other side of the ""mirror"" a bedraggled adventurer comes into view, carrying a brass lantern and an elvish sword, which is glowing dimly. He stops and stares in your direction."
CRLF
SET 'ADVENTURER-SEEN,TRUE-VALUE
FCLEAR ADVENTURER-LG,INVISIBLE
RTRUE
.FUNCT MIRROR-STUFF-F
FSET? HERE,NDESCBIT \?ELS5
CALL GLOBAL-NOT-HERE-PRINT,MIRROR-STUFF
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The scene is an underground world, quite dissimilar from your own."
.FUNCT NO-MORE-ADVENTURER
FSET ADVENTURER-LG,INVISIBLE
SET 'ADVENTURER-LOC,FALSE-VALUE
CALL QUEUE,I-LG-ADVENTURER,0
RTRUE
.FUNCT I-LG-ADVENTURER
ZERO? ADVENTURER-SUMMONED \?THN6
EQUAL? HERE,ADVENTURER-LOC /?ELS5
?THN6: CALL NO-MORE-ADVENTURER
RFALSE
?ELS5: RANDOM 100
GRTR? 25,STACK \FALSE
PRINTI "The adventurer, after checking his compass, walks off."
CRLF
CALL NO-MORE-ADVENTURER
RTRUE
.FUNCT DESCRIBE-ADVENTURER
PRINTI "A bedraggled adventurer, carrying a brass lantern and a dimly glowing elvish sword, can be seen through the ""mirror"". He "
CALL PICK-ONE,ADVENTURER-FEEBLES
PRINT STACK
PRINTR "."
.FUNCT GLOBAL-ADVENTURER-F
EQUAL? PRSA,V?ZIFMIA \?ELS5
CALL NO-ZIF
RSTACK
?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS7
ZERO? ADVENTURER-SUMMONED /?ELS7
EQUAL? ADV-OLD-LOC,HERE \?ELS14
CALL GOTO,ADV-NEW-LOC
RTRUE
?ELS14: PRINTR "You have lost track of him."
?ELS7: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-ADVENTURER
RTRUE
.FUNCT ADVENTURER-LG-F
EQUAL? PRSA,V?EXAMINE \?ELS5
CALL DESCRIBE-ADVENTURER
RSTACK
?ELS5: EQUAL? PRSA,V?WAVE-AT \?ELS7
PRINTR "He doesn't seem to notice your gesture."
?ELS7: EQUAL? PRSA,V?ZIFMIA \?ELS11
PRINTI "All at once, the bedraggled adventurer appears before you, brightly glowing sword in hand. His jaw has dropped and his eyes are bulging. His eyes dart this way and that, as if looking for a way to escape."
CRLF
ADD SCORE,SUMMON-POINT >SCORE
SET 'SUMMON-POINT,0
MOVE ADVENTURER,HERE
SET 'ADVENTURER-SUMMONED,TRUE-VALUE
SET 'ADVENTURER-STAY,TRUE-VALUE
CALL QUEUE,I-ADVENTURER,-1
PUT STACK,0,1
CALL THIS-IS-IT,ADVENTURER
RTRUE
?ELS11: EQUAL? PRSA,V?CLEESH \?ELS15
PRINTR "The spell has no effect, perhaps because he isn't here."
?ELS15: EQUAL? PRSA,V?GUNCHO \FALSE
PRINTI "Behind the ""mirror"", the luckless adventurer seems to fade away. He shimmers briefly and then vanishes without a trace."
CRLF
CALL NO-MORE-ADVENTURER
SET 'ADVENTURER-SUMMONED,TRUE-VALUE
RETURN ADVENTURER-SUMMONED
.FUNCT ADVENTURER-C
EQUAL? PRSA,V?TAKE \?ELS5
CALL PERFORM,V?ASK-FOR,ADVENTURER,PRSO
RTRUE
?ELS5: EQUAL? PRSA,V?READ \FALSE
ZERO? ADVENTURER-CHARMED \?ELS12
PRINTR "The adventurer pulls back as you approach."
?ELS12: PRINTI "The adventurer moves closer so that you might read it."
CRLF
RFALSE
.FUNCT ADVENTURER-D,RARG
PRINTI "There is a bedraggled and weary adventurer standing here. He is carrying "
CALL PRINT-CONTENTS,ADVENTURER
ZERO? ADVENTURER-CHARMED /?CND3
PRINTI ". He seems pleased to see you and frequently smiles in your direction"
?CND3: PRINTR "."
.FUNCT SWORD-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The sword is of elvish workmanship and is glowing brightly."
.FUNCT ADVENTURER-ACTOR
EQUAL? PRSA,V?FOLLOW \?ELS5
ZERO? ADVENTURER-CHARMED /?ELS10
PRINTR """Sorry, but I've got better things to do than follow you."""
?ELS10: PRINTR """I'd sooner follow Dimwit Flathead!"""
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS19
ZERO? ADVENTURER-CHARMED \?ELS24
PRINTR "He glances suspiciously at it."
?ELS24: EQUAL? PRSO,DOOR-ILLUSION \?ELS28
PRINTR """It's a door."""
?ELS28: PRINTI """It's "
CALL PRINTA,PRSO
PRINTR "."""
?ELS19: EQUAL? PRSA,V?THROUGH,V?OPEN \?ELS36
EQUAL? PRSO,DOOR-ILLUSION \?ELS36
ZERO? ADVENTURER-CHARMED /?ELS43
SET 'WINNER,PLAYER
LOC WINNER >HERE
CALL PERFORM,V?POINT,DOOR-ILLUSION
RTRUE
?ELS43: PRINTR "The adventurer looks at you suspiciously. ""Can't you open it yourself?"""
?ELS36: EQUAL? PRSA,V?HELLO \?ELS50
ZERO? ADVENTURER-CHARMED /?ELS55
PRINTR """Hello. Nice to meet you."""
?ELS55: ZERO? PRSO /?ELS60
PRINTI "The "
PRINTD PRSO
PRINTR " steps away from you."
?ELS60: PRINTR "The adventurer steps warily away."
?ELS50: EQUAL? PRSA,V?UNTIE \?ELS69
EQUAL? PRSO,MAGIC-ROPE \?ELS69
ZERO? ADVENTURER-CHARMED /?ELS69
PRINTR "The adventurer tries to untie the rope, but he only becomes entangled. He gives up and glares suspiciously at you."
?ELS69: EQUAL? PRSA,V?ATTACK,V?MUNG \?ELS75
EQUAL? PRSO,DOOR-ILLUSION \?ELS75
PRINTR "He pauses as if searching for the right thing to say. ""I've known strange people, but fighting a wooden door?"""
?ELS75: EQUAL? PRSA,V?MUNG,V?CUT \?ELS81
EQUAL? PRSO,MAGIC-ROPE \?ELS81
ZERO? ADVENTURER-CHARMED \?ELS88
PRINTR """Not bloody likely! There's magic there!"""
?ELS88: ZERO? ROPE-MAGIC? \?ELS92
CALL ROPE-DISSOLVES
MOVE JEWELLED-BOX,ADVENTURER
LOC ADVENTURER
MOVE PROTECTION-SCROLL,STACK
PRINTR "The adventurer draws his sword and slices the rope cleanly into so much fluff. He opens the box, revealing a scroll! He drops this on the ground disdainfully but retains the box."
?ELS92: ZERO? PRSI /?THN97
EQUAL? PRSI,SWORD \?ELS96
?THN97: PRINTR """Ooo! Nice idea!"" He slashes at the rope with his sword, but to no avail. The rope is impervious to the magic of this weapon! He looks crestfallen."
?ELS96: PRINTR """I doubt that would work."""
?ELS81: EQUAL? PRSA,V?SSHOW,V?SGIVE /FALSE
EQUAL? PRSA,V?SHOW,V?GIVE \?ELS108
EQUAL? PRSI,ME \?ELS108
EQUAL? PRSA,V?GIVE \?ELS113
CALL PERFORM,V?ASK-FOR,ADVENTURER,PRSO
RTRUE
?ELS113: ZERO? ADVENTURER-CHARMED /?ELS115
PRINTI "The "
PRINTD ADVENTURER
PRINTI " allows you a quick look at the "
PRINTD PRSO
PRINTR "."
?ELS115: PRINTI "The "
PRINTD ADVENTURER
PRINTR " gives you a suspicious look and attempts to conceal his possessions."
?ELS108: PRINTR """I'll do what I please, thank you."""
.FUNCT ADVENTURER-F
EQUAL? WINNER,ADVENTURER \?ELS5
CALL ADVENTURER-ACTOR
RSTACK
?ELS5: EQUAL? PRSA,V?WAVE-AT \?ELS7
ZERO? ADVENTURER-CHARMED /?ELS12
PRINTR "The adventurer waves right back."
?ELS12: PRINTR "The adventurer steps back a few paces."
?ELS7: EQUAL? PRSA,V?FOLLOW \?ELS21
PRINTR "He's right here!"
?ELS21: EQUAL? PRSA,V?KILL,V?ATTACK \?ELS25
SET 'ADVENTURER-CHARMED,FALSE-VALUE
CALL JIGS-UP,STR?150
RSTACK
?ELS25: EQUAL? PRSA,V?NITFOL \?ELS27
PRINTR "He already speaks your language, but now a bit better."
?ELS27: EQUAL? PRSA,V?GUNCHO \?ELS31
PRINTI "The adventurer blurs as though you were seeing him from a distance, wavers like a mirage, and then vanishes."
CRLF
REMOVE ADVENTURER
CALL QUEUE,I-ADVENTURER,0
RSTACK
?ELS31: EQUAL? PRSA,V?FROTZ \?ELS35
PRINTI "The adventurer is now bathed in light, much to his amazement."
CRLF
SET 'ADVENTURER-CHARMED,FALSE-VALUE
FSET ADVENTURER,LIGHTBIT
FSET ADVENTURER,ONBIT
RTRUE
?ELS35: EQUAL? PRSA,V?VAXUM \?ELS39
SET 'ADVENTURER-STAY,TRUE-VALUE
SET 'ADVENTURER-CHARMED,TRUE-VALUE
CALL QUEUE,I-ADVENTURER-UNCHARM,20
PUT STACK,0,1
PRINTR "The adventurer smiles at you with an air of good will."
?ELS39: EQUAL? PRSA,V?HELLO \?ELS43
ZERO? ADVENTURER-CHARMED /?ELS48
PRINTI "The "
PRINTD PRSO
PRINTR " waves back and says ""Hello!"""
?ELS48: PRINTI "The "
PRINTD PRSO
PRINTR " keeps his distance, eyeing you cautiously."
?ELS43: EQUAL? PRSA,V?SEARCH \?ELS57
PRINTI "The "
PRINTD PRSO
PRINTR " isn't inclined to allow himself to be searched."
?ELS57: EQUAL? PRSA,V?MUNG \?ELS61
PRINTI "The "
PRINTD PRSO
PRINTI " dodges your blow and becomes very wary of you."
CRLF
SET 'ADVENTURER-CHARMED,FALSE-VALUE
RTRUE
?ELS61: EQUAL? PRSA,V?GIVE \?ELS65
EQUAL? PRSI,ADVENTURER \?ELS65
ZERO? ADVENTURER-CHARMED \?ELS72
PRINTI "The "
PRINTD PRSI
PRINTI " eyes you suspiciously. Why, he thinks, is this sorcerer handing me something"
FSET? PRSO,TREASURE \?CND75
PRINTI ", especially something valuable"
?CND75: PRINTR "?"
?ELS72: ZERO? SAILOR? /?ELS83
SUB MOVES,SAILOR?
LESS? STACK,2 \?ELS83
MOVE PRSO,ADVENTURER
PRINTI "A wide smile comes over his face as he takes the "
PRINTD PRSO
PRINTR ", as though your action resolved for him some great mystery."
?ELS83: FSET? PRSO,TREASURE \?ELS89
PRINTI "The "
PRINTD PRSI
PRINTI " gratefully accepts the offer of the "
PRINTD PRSO
PRINTI ". He is fascinated by its beauty and stops to thank you."
CRLF
MOVE PRSO,ADVENTURER
RTRUE
?ELS89: PRINTI "The "
PRINTD PRSI
PRINTR " refuses your offer politely."
?ELS65: EQUAL? PRSA,V?SHOW \?ELS97
EQUAL? PRSI,ADVENTURER \?ELS97
ZERO? ADVENTURER-CHARMED \?ELS104
PRINTR "He ignores you pointedly."
?ELS104: EQUAL? PRSO,DOOR-ILLUSION /FALSE
FSET? PRSO,TREASURE \?ELS110
PRINTI "His eyes light up at the sight of the "
PRINTD PRSO
PRINTI "."
CRLF
SET 'ADVENTURER-STAY,TRUE-VALUE
RETURN ADVENTURER-STAY
?ELS110: PRINTR "He yawns briefly, indicating his disinterest."
?ELS97: EQUAL? PRSA,V?TAKE \FALSE
EQUAL? PRSI,ADVENTURER \FALSE
CALL PERFORM,V?ASK-FOR,PRSI,PRSO
RTRUE
.FUNCT I-ADVENTURER-UNCHARM
SET 'ADVENTURER-CHARMED,FALSE-VALUE
IN? ADVENTURER,HERE \FALSE
PRINTR "The adventurer looks at you as if seeing you for the first time. It's not clear that he likes what he sees, either."
.FUNCT I-ADVENTURER,L,NL
LOC ADVENTURER >L
FSET? L,ONBIT \?ELS3
FCLEAR LANTERN,ONBIT
JUMP ?CND1
?ELS3: FSET LANTERN,ONBIT
?CND1: INC 'ADVENTURER-MOVE
ZERO? ADVENTURER-MOVE /TRUE
GETP L,P?ADVFCN
CALL STACK
ZERO? STACK \TRUE
ZERO? ADVENTURER-STAY /?ELS14
SET 'ADVENTURER-STAY,FALSE-VALUE
EQUAL? HERE,L \FALSE
ZERO? ADVENTURER-CHARMED /FALSE
PRINTI "The adventurer"
CALL PICK-ONE,ADVENTURER-LOITERS
PRINT STACK
CRLF
RTRUE
?ELS14: EQUAL? L,MIRROR-HALL-1,MIRROR-HALL-2,MIRROR-HALL-3 /?THN27
EQUAL? L,MIRROR-HALL-4,NORTH-GATE \?ELS26
?THN27: CALL NEXT-HALL,L,TRUE-VALUE >NL
CALL TREASURE-HERE?,NL
ZERO? STACK /?ELS33
CALL MOVE-ADVENTURER,NL
RSTACK
?ELS33: LESS? ADVENTURER-MOVE,5 \?ELS35
CALL NEXT-HALL,L,FALSE-VALUE
CALL MOVE-ADVENTURER,STACK
RSTACK
?ELS35: CALL ADVENTURER-DECIDE,L
RSTACK
?ELS26: RANDOM 100
GRTR? 25,STACK \?ELS39
EQUAL? HERE,L \?ELS39
PRINTI "The adventurer "
ZERO? ADVENTURER-CHARMED /?ELS48
ZERO? SAILOR? \?ELS54
RANDOM 100
GRTR? 16,STACK \?ELS54
SET 'SAILOR?,MOVES
PRINTR "waves at you and asks ""Hello, Sailor?"" Strange, you've never even been to sea."
?ELS54: CALL PICK-ONE,ADVENTURER-NICE
PRINT STACK
CRLF
RTRUE
?ELS48: CALL PICK-ONE,ADVENTURER-QUIPS
PRINT STACK
CRLF
RTRUE
?ELS39: CALL ADVENTURER-TAKE,L
ZERO? STACK /?ELS68
SET 'ADVENTURER-STAY,FALSE-VALUE
RTRUE
?ELS68: ZERO? ADV-HASTE \?ELS73
EQUAL? HASTED?,ADVENTURER \?ELS73
SET 'ADV-HASTE,TRUE-VALUE
CALL ADVENTURER-DECIDE,L
CALL I-ADVENTURER
RTRUE
?ELS73: SET 'ADV-HASTE,FALSE-VALUE
CALL ADVENTURER-DECIDE,L
RTRUE
.FUNCT MOVE-ADVENTURER,RM,L,CNT=0,OBJ,DIR
LOC ADVENTURER >L
EQUAL? L,NORTH-GATE \?ELS3
EQUAL? RM,PURLOINED-ROOM \?ELS3
CALL TREASURE-HERE?,RM
ZERO? STACK \?ELS3
FSET PURLOINED-ROOM,VILLAIN
EQUAL? HERE,L \TRUE
PRINTR "The adventurer starts toward the east but, seeing nothing of interest, changes his mind."
?ELS3: EQUAL? RM,TEMPLE \?ELS12
EQUAL? HERE,L \?CND13
PRINTI "The adventurer looks as if he might go into the temple, but then he thinks better of it."
CRLF
?CND13: FSET TEMPLE,VILLAIN
RTRUE
?ELS12: EQUAL? RM,T-A \?ELS19
EQUAL? HERE,L \?CND20
PRINTI "The adventurer starts to descend further, but chickens out. He won't make Dungeon Master at that rate!"
CRLF
?CND20: FSET T-A,VILLAIN
SET 'RM,DIM-DESCENT
JUMP ?CND1
?ELS19: EQUAL? RM,WEST-CASTLE \?CND1
EQUAL? HERE,L \?CND27
PRINTI "The adventurer peers through the gate, but he decides against passing through."
CRLF
?CND27: FSET WEST-CASTLE,VILLAIN
SET 'RM,COURTYARD-1
?CND1: EQUAL? HERE,L \?ELS34
PRINTI "The adventurer "
EQUAL? HASTED?,ADVENTURER \?ELS39
PRINTI "rockets out of"
JUMP ?CND37
?ELS39: PRINTI "leaves"
?CND37: PRINTI " the room"
CALL DOOR-FROM?,L,RM >OBJ
ZERO? OBJ /?CND48
PRINTI " through the "
PRINTD OBJ
?CND48: PRINTI ", heading "
CALL DIR-FROM,L,RM >DIR
EQUAL? DIR,P?UP,P?DOWN /?CND55
PRINTI "to "
?CND55: CALL DIR-PRINT,DIR
SET 'ADV-NEW-LOC,RM
SET 'ADV-OLD-LOC,L
PRINTI "."
CRLF
JUMP ?CND32
?ELS34: EQUAL? HERE,RM \?CND32
EQUAL? HERE,PURLOINED-ROOM \?ELS66
FSET? MAP-ROOM,VILLAIN /?ELS66
CALL TREASURE-HERE?,HERE
ZERO? STACK /?ELS66
PRINTI "An adventurer peeks into the room, sees the "
CALL TREASURE-HERE?,HERE
PRINTD STACK
PRINTI ", and enters."
CRLF
JUMP ?CND32
?ELS66: PRINTI "A bedraggled adventurer "
EQUAL? HASTED?,ADVENTURER \?ELS77
PRINTI "speeds"
JUMP ?CND75
?ELS77: PRINTI "walks"
?CND75: PRINTI " into the room from "
CALL DIR-FROM,RM,L
CALL DIR-PRINT,STACK
CALL DOOR-FROM?,RM,L >OBJ
ZERO? OBJ /?CND86
PRINTI ", coming through the "
PRINTD OBJ
?CND86: PRINTI "."
CRLF
?CND32: MOVE ADVENTURER,RM
FSET RM,VILLAIN
EQUAL? RM,PURLOINED-ROOM /FALSE
CALL ADVENTURER-TAKE,RM
RSTACK
.FUNCT DOOR-FROM?,HERE,THERE,P,L,TX
SET 'P,0
?PRG1: NEXTP HERE,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /?PRG1
GETPT HERE,P >TX
PTSIZE TX >L
EQUAL? L,DEXIT \?PRG1
GETB TX,REXIT
EQUAL? STACK,THERE \?PRG1
GETB TX,DEXITOBJ
RSTACK
.FUNCT ADVENTURER-TAKE,RM,F,N,TR=0,CNT=0,OBJ
FIRST? RM >F /?KLU47
?KLU47:
?PRG1: ZERO? F \?ELS5
JUMP ?REP2
?ELS5: NEXT? F >N /?KLU48
?KLU48: FSET? F,TAKEBIT \?CND8
FSET? F,INVISIBLE /?CND8
EQUAL? F,STRONG-BOX /?CND8
FSET? F,TREASURE /?THN13
RANDOM 100
GRTR? 25,STACK \?CND8
?THN13: GETP F,P?ADVFCN
CALL STACK
ZERO? STACK \?CND8
MOVE F,ADVENTURER
INC 'CNT
SET 'OBJ,F
FSET? F,TREASURE \?CND15
SET 'TR,TRUE-VALUE
?CND15:
?CND8: SET 'F,N
JUMP ?PRG1
?REP2: EQUAL? HERE,RM \FALSE
GRTR? CNT,0 \FALSE
PRINTI "The adventurer stoops over and picks up "
EQUAL? CNT,1 \?ELS32
PRINTI "the "
PRINTD OBJ
JUMP ?CND30
?ELS32: PRINTI "some objects"
?CND30: ZERO? TR /?CND39
PRINTI " and seems pleased by his discovery"
?CND39: PRINTR "."
.FUNCT DIR-FROM,HERE,THERE,P,L,TX,O
SET 'P,0
?PRG1: NEXTP HERE,P >P
ZERO? P /FALSE
EQUAL? P,P?IN \?ELS7
JUMP ?PRG1
?ELS7: LESS? P,LOW-DIRECTION /?PRG1
GETPT HERE,P >TX
PTSIZE TX >L
EQUAL? L,DEXIT,UEXIT,CEXIT \?PRG1
GETB TX,REXIT
EQUAL? STACK,THERE \?PRG1
RETURN P
.FUNCT DIR-PRINT,DIR,CNT=0
?PRG1: GET DIR-STRINGS,CNT
EQUAL? STACK,DIR \?CND3
EQUAL? DIR,P?UP,P?DOWN /?CND6
PRINTI "the "
?CND6: ADD CNT,1
GET DIR-STRINGS,STACK
PRINT STACK
RTRUE
?CND3: INC 'CNT
JUMP ?PRG1
.FUNCT ADVENTURER-DECIDE,L,P,S,TX
NEXTP L,0 >P
PUT ADV-POSS,0,0
?PRG1: LESS? P,LOW-DIRECTION \?ELS5
JUMP ?REP2
?ELS5: GETPT L,P >TX
PTSIZE TX >S
EQUAL? S,UEXIT /?THN11
EQUAL? S,DEXIT \?ELS14
GETB TX,DEXITOBJ
FSET? STACK,LOCKEDBIT \?THN11
?ELS14: EQUAL? S,CEXIT \?CND3
GETB TX,CEXITFLAG
VALUE STACK
ZERO? STACK /?CND3
?THN11: GETB TX,REXIT >S
GET ADV-POSS,0
ADD STACK,1 >TX
PUT ADV-POSS,0,TX
PUT ADV-POSS,TX,S
?CND3: NEXTP L,P >P
JUMP ?PRG1
?REP2: GET ADV-POSS,0 >S
ZERO? S \?ELS21
PRINTI "**BUG: Can't move from "
LOC ADVENTURER
PRINTD STACK
PRINTR "!"
?ELS21: EQUAL? S,1 \?ELS25
GET ADV-POSS,1
CALL MOVE-ADVENTURER,STACK
RSTACK
?ELS25: SET 'P,0
?PRG28: IGRTR? 'P,S \?ELS32
JUMP ?REP29
?ELS32: GET ADV-POSS,P >TX
FSET? TX,VILLAIN /?PRG28
CALL MOVE-ADVENTURER,TX
RTRUE
?REP29: CALL RANDOM-ELEMENT,ADV-POSS
CALL MOVE-ADVENTURER,STACK
RSTACK
.FUNCT NEXT-HALL,RM,L-R=1,TBL,OFFS=0,NR
SET 'TBL,HALL-TBL
?PRG1: GET TBL,OFFS >NR
EQUAL? NR,RM \?CND3
ZERO? L-R /?ELS8
ADD OFFS,1
GET TBL,STACK
RSTACK
?ELS8: SUB OFFS,1
GET TBL,STACK
RSTACK
?CND3: INC 'OFFS
JUMP ?PRG1
.FUNCT TREASURE-HERE?,RM,F
FIRST? RM >F /?KLU10
?KLU10:
?PRG1: ZERO? F /FALSE
FSET? F,TREASURE \?ELS7
RETURN F
?ELS7: NEXT? F >F /?KLU11
?KLU11: JUMP ?PRG1
.FUNCT PURLOINED-ROOM-A,TX
CALL TREASURE-HERE?,PURLOINED-ROOM >TX
ZERO? TX /?ELS3
SET 'ADVENTURER-STAY,TRUE-VALUE
EQUAL? HERE,PURLOINED-ROOM \FALSE
MOVE TX,ADVENTURER
FSET? DOOR-REALITY,INVISIBLE \FALSE
PRINTI "The adventurer stops to pick up the "
PRINTD TX
PRINTI ". As he rises, he casts a cursory glance at the door, then he notices you. "
ZERO? ADVENTURER-CHARMED /?ELS15
PRINTI "He smiles at you as he pockets the "
PRINTD TX
PRINTI "."
CRLF
RFALSE
?ELS15: PRINTI "He straightens quickly, glaring at you with distrust."
CRLF
RFALSE
?ELS3: ZERO? ADVENTURER-NOTES-DOOR \FALSE
SET 'ADVENTURER-NOTES-DOOR,TRUE-VALUE
SET 'ADVENTURER-STAY,TRUE-VALUE
FSET? DOOR-REALITY,INVISIBLE \FALSE
PRINTI "The adventurer glances around the room in a businesslike way and makes a few notes on his map."
CRLF
RFALSE
.FUNCT NO-ILLUSIONS
FSET DOOR-ILLUSION,INVISIBLE
FCLEAR DOOR-REALITY,INVISIBLE
FCLEAR DOOR-REALITY,LOCKEDBIT
FSET DOOR-REALITY,OPENBIT
SET 'DOOR-ILLUSION-GONE,TRUE-VALUE
PRINTI "The seemingly fearless adventurer shrugs and walks purposefully toward the door, ignoring all harm to his person in the form of knives, tentacles, and molten lead. As three buckets of the latter pour over his head, he casts you a perplexed look.
""Did you try the doorknob?"" he asks, as twenty-seven knives delicately skewer him.
Before you can answer, he reaches for one of the gargoyle heads which, by sheerest coincidence, has just flooded him in red-orange flame, and turns it gently.
""I think it's unlocked,"" he says, stoically ignoring the host of human-sized rats which feed on his incinerated torso.
His left hand, broken and bloodied, pulls at the gargoyle head.
""I'm going on ahead!"" he cries, opening a simple wooden door.
Wooden door? You rub your eyes for a moment and look again as he goes through it. Yes, just a plain wooden door."
CRLF
ADD SCORE,DOOR-POINT >SCORE
SET 'DOOR-POINT,0
MOVE ADVENTURER,MAP-ROOM
SET 'ADVENTURER-STAY,TRUE-VALUE
RETURN ADVENTURER-STAY
.ENDI

View File

@ -273,7 +273,7 @@ senseless, and return, the last closing the door behind it.">>
(GLOBAL ADVENTURER-LG MIRROR MIRROR-STUFF SHARDS)>
<OBJECT GLOBAL-ADVENTURER
(IN GLOBAL-OBJECTS)
;(IN GLOBAL-OBJECTS)
(SYNONYM ADVENTURER)
(DESC "adventurer")
(ACTION GLOBAL-ADVENTURER-F)
@ -375,6 +375,9 @@ underground labyrinth, filled with tunnels, caves, and peculiar rock
formations." CR>)>
<COND (,ADVENTURER-LOC
<DESCRIBE-ADVENTURER>)>)
(<EQUAL? .RARG ,M-ENTER>
<MOVE ,GLOBAL-ADVENTURER ,GLOBAL-OBJECTS>
<RFALSE>)
(<AND <EQUAL? .RARG ,M-END>
<NOT <FSET? ,HERE ,NDESCBIT>>
<NOT ,ADVENTURER-SUMMONED>

25
record.zap Normal file
View File

@ -0,0 +1,25 @@
.FUNCT V-$COMMAND
DIRIN 1
RTRUE
.FUNCT V-$RANDOM
EQUAL? PRSO,INTNUM /?ELS5
PRINTR "Illegal call to #RANDOM."
?ELS5: SUB 0,P-NUMBER
RANDOM STACK
RTRUE
.FUNCT V-$RECORD
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-$UNRECORD
DIROUT D-RECORD-OFF
RTRUE
.ENDI

210
sleep.zap Normal file
View File

@ -0,0 +1,210 @@
.FUNCT V-TIME,EL
DIV TOD,10 >EL
PRINTI "It would be "
GET TIME-TABLE,EL
PRINT STACK
PRINTR " now."
.FUNCT GLOBAL-SLEEP-F
EQUAL? PRSA,V?TAKE,V?WALK-TO \?ELS5
IN? WINNER,BEDROOM \?CND6
MOVE WINNER,BED
?CND6: CALL PERFORM,V?SLEEP
RTRUE
?ELS5: EQUAL? PRSA,V?FIND \FALSE
PRINTR "Why not find a bed to sleep in?"
.FUNCT I-THIRST
IGRTR? 'THIRST-COUNT,5 \?ELS5
SET 'THIRST-COUNT,0
CALL QUEUE,I-THIRST,40
SET 'WINNER,PLAYER
CALL JIGS-UP,STR?240,FALSE-VALUE
RSTACK
?ELS5: GET THIRST-TABLE,THIRST-COUNT
PRINT STACK
CRLF
CALL QUEUE,I-THIRST,10
RSTACK
.FUNCT I-HUNGER
IGRTR? 'HUNGER-COUNT,5 \?ELS5
SET 'HUNGER-COUNT,0
CALL QUEUE,I-HUNGER,47
SET 'WINNER,PLAYER
CALL JIGS-UP,STR?247,FALSE-VALUE
RSTACK
?ELS5: GET HUNGER-TABLE,HUNGER-COUNT
PRINT STACK
CRLF
CALL QUEUE,I-HUNGER,10
RSTACK
.FUNCT I-TIRED,FORG=0
IN? WINNER,BED \?CND1
PRINTI "The bed sure is comfortable and you are becoming tired."
CRLF
CALL V-SLEEP,TRUE-VALUE
RETURN 2
?CND1: GRTR? LOAD-ALLOWED,10 \?CND8
SUB LOAD-ALLOWED,10 >LOAD-ALLOWED
?CND8: GRTR? FUMBLE-NUMBER,1 \?CND11
DEC 'FUMBLE-NUMBER
?CND11: INC 'FUMBLE-PROB
GRTR? SPELL-MAX,1 \?CND14
DEC 'SPELL-MAX
ZERO? SPELL-ROOM /?CND17
DEC 'SPELL-ROOM
?CND17: ZERO? SPELL-ROOM \?CND14
SET 'FORG,TRUE-VALUE
CALL FORGET-SPELL,DISPEL-SPELL
?CND14: CALL QUEUE,I-TIRED,10
PUT STACK,0,1
INC 'AWAKE
GRTR? AWAKE,10 \?ELS27
PRINTI "You drop in your tracks from exhaustion."
CRLF
CRLF
CALL V-SLEEP
RETURN 2
?ELS27: PRINTI "You are "
GET TIRED-TELL,AWAKE
PRINT STACK
ZERO? FORG /?CND36
PRINTI " and the spells you've memorized are becoming confused"
?CND36: PRINTR "."
.FUNCT V-DIAGNOSE
LESS? AWAKE,0 \?ELS3
PRINTI "You are wide awake"
JUMP ?CND1
?ELS3: PRINTI "You are "
GET TIRED-TELL,AWAKE
PRINT STACK
?CND1: PRINTI ". You are "
GET THIRST-TELL,THIRST-COUNT
PRINT STACK
PRINTI " and "
GET HUNGER-TELL,HUNGER-COUNT
PRINT STACK
PRINTR "."
.FUNCT V-SLEEP,TOLD?=0,TILL-TIRED,MUNGED?
SUB MOVES,LAST-SLEEP
SUB MOVES-PER-DAY,STACK >TILL-TIRED
EQUAL? HERE,REAL-STAIR,PIT \?ELS5
PRINTR "To sleep here would be fatal!"
?ELS5: GRTR? TILL-TIRED,10 \?ELS9
PRINTR "You settle down to sleep, but you really aren't tired, so you thrash around for a while and then give up."
?ELS9: EQUAL? HERE,ENGINE-ROOM,CLOSET,SE-TOWER \?ELS13
PRINTR "You try to sleep but it's too noisy."
?ELS13: EQUAL? HERE,BEDROOM \?ELS17
IN? WINNER,BED /?ELS17
ZERO? BED-WARNING \?ELS17
GRTR? AWAKE,10 /?ELS17
SET 'BED-WARNING,TRUE-VALUE
PRINTR "You might try getting into the bed first. It would be more comfortable."
?ELS17: GRTR? TILL-TIRED,0 \?CND24
IN? WINNER,BED \?CND24
ZERO? TOLD? \?CND24
PRINTI "You're not all that tired, but the bed is very comfortable."
CRLF
?CND24: INC 'REAL-SPELL-MAX
SET 'SPELL-MAX,REAL-SPELL-MAX
SET 'SPELL-ROOM,SPELL-MAX
SET 'LAST-SLEEP,MOVES
ADD MOVES,MOVES-PER-SLEEP >MOVES
ADD TOD,MOVES-PER-SLEEP
MOD STACK,128 >TOD
SET 'LOAD-ALLOWED,LOAD-MAX
SET 'FUMBLE-NUMBER,7
SET 'FUMBLE-PROB,8
CALL QUEUE,I-TIRED,MOVES-PER-DAY
PUT STACK,0,1
SET 'AWAKE,-1
CALL FORGET-ALL
FSET? HERE,RMUNGBIT /?PRD31
PUSH 0
JUMP ?PRD32
?PRD31: PUSH 1
?PRD32: SET 'MUNGED?,STACK
CALL I-MUNG-ROOM,FALSE-VALUE
CALL I-MUNG-ROOM,FALSE-VALUE
CALL I-MUNG-ROOM,FALSE-VALUE
ZERO? MUNGED? \?ELS35
FSET? HERE,RMUNGBIT \?ELS35
PRINTR "You fall asleep quickly and begin to dream. The dream turns into a nightmare of decay and desolation, as your surroundings turn grey and lifeless. You feel a great weight, like a pile of ashes, constricting your movements, and then you bolt awake!"
?ELS35: IN? WINNER,BED \?CND33
IN? BEDPOST-BUTTON,BED /?CND33
GRTR? CHARM-POINT,0 \?CND33
MOVE BEDPOST-BUTTON,BED
PRINTR "You fall asleep quickly, the bed being so comfortable. You dream as well, of this very room. A beautiful damsel, obviously noble, is standing by the bed holding a scroll in one hand and resting the other on the bedpost. Turning to block your view, she does something you can't see. Then she gets in bed and turns out the light, but before she does you can see she is no longer carrying the scroll... You wake."
?CND33: PRINTI "Ah, sleep! It's been a long day, indeed. The rest will do you good. "
IN? WINNER,BED \?ELS50
PRINTI "You make yourself comfortable on the bed"
JUMP ?CND48
?ELS50: CALL OUTSIDE?,HERE
ZERO? STACK /?ELS54
PRINTI "You spread your cloak under the open sky"
JUMP ?CND48
?ELS54: PRINTI "You spread your cloak on the floor"
?CND48: PRINTI " and drift off, renewing your powers and refreshing your mind ... Time passes as you snore blissfully."
CRLF
CRLF
CALL OUTSIDE?,HERE
ZERO? STACK /?ELS67
ZERO? PROTECTED-FROM-EVIL \?ELS67
RANDOM 100
GRTR? MOLESTED,STACK \?ELS67
RANDOM 100
GRTR? MUNCHED,STACK \?ELS74
CALL JIGS-UP,STR?277
RETURN 2
?ELS74: CALL ROB,WINNER
CALL ROB,HERE
PRINTR "You don't sleep too well, and you awake at least once with the feeling that something has jostled you in the dark."
?ELS67: ZERO? GALLERY-POINT /?ELS82
ZERO? GALLERY-DREAM \?ELS82
SET 'GALLERY-DREAM,TRUE-VALUE
PRINTR "After a while, your sleep is disturbed by a strange dream. You are wandering in a darkened place, for you have no light or other possessions. You feel that you are being watched! You are surrounded by faces, their eyes following you. They drift in and out, staring at you with proud indifference. One face, brightly lit (unlike the rest), draws you closer and closer. As you touch it, you wake."
?ELS82: ZERO? GALLERY-POINT /?ELS88
RANDOM 100
GRTR? 70,STACK \?ELS88
PRINTR "Your sleep is disturbed by the strange dream of an earlier night. You are in the dark, with no light or other possessions. You are surrounded by many faces, their eyes following you. The one brightly lit face beckons you closer and closer. You wake, convinced that the dream holds a message for you."
?ELS88: ZERO? DOOR-KULCAD \?ELS94
ZERO? DOOR-DREAM \?ELS94
FSET? DOOR-REALITY,INVISIBLE \?ELS94
SET 'DOOR-DREAM,TRUE-VALUE
PRINTR "You dream of a nondescript room in which a cartoonish figure casually opens a simple wooden door and ascends the flight of stairs which lies behind. The scene fades to black, but you awaken in a cold sweat."
?ELS94: ZERO? DOOR-KULCAD /?ELS100
ZERO? DOOR-DREAM-2 \?ELS100
SET 'DOOR-DREAM-2,TRUE-VALUE
PRINTR "You dream of climbing in an unfamiliar place. You seem to climb forever, beyond reason. A fleeting hope arises in you, and you search furiously in your spell book and possessions for something. After a moment, you become frantic as you realize that you don't have it! You bolt awake in a cold sweat."
?ELS100: ZERO? PROTECTED-FROM-EVIL \?ELS106
RANDOM 100
GRTR? 50,STACK \?ELS106
CALL ROB,HERE,WARLOCK-TOWER
RANDOM 100
GRTR? 50,STACK \?CND109
CALL ROB,WINNER,WARLOCK-TOWER
?CND109: LOC WINNER
EQUAL? HERE,STACK /?CND112
LOC WINNER
CALL ROB,STACK,WARLOCK-TOWER
?CND112: PRINTR "You sleep fitfully. At one point it seems that some evil presence is searching nearby. The tense feeling passes, but it's replaced by one of foreboding."
?ELS106: RANDOM 100
GRTR? 50,STACK \?ELS118
PRINTR "You sleep uneventfully, dreamlessly, and awake refreshed."
?ELS118: CALL PICK-ONE,DREAMS
PRINT STACK
PRINTR " You awaken."
.ENDI

View File

@ -175,7 +175,8 @@ thrash around for a while and then give up." CR>)
<TELL "You try to sleep but it's too noisy." CR>)
(<AND <EQUAL? ,HERE ,BEDROOM>
<NOT <IN? ,WINNER ,BED>>
<NOT ,BED-WARNING>>
<NOT ,BED-WARNING>
<NOT <G? ,AWAKE 10>>>
<SETG BED-WARNING T>
<TELL
"You might try getting into the bed first. It would be more comfortable." CR>)

450
stair.zap Normal file
View File

@ -0,0 +1,450 @@
.FUNCT LANDING-EXIT-F
ZERO? STAIR-SOLVED? /?ELS5
PRINTI "There is no floor there, and the pit beneath you is of great, if not infinite, depth. You fall forever."
CALL FINISH
RSTACK
?ELS5: RETURN ENDLESS-STAIR
.FUNCT ADVENTURER-DROPS-OUT
PRINTI "The adventurer seems to have dropped out of existence. In a voice that seems to recede into the void, you hear his final word: ""Restore...."" You muse about how a mere adventurer might come to possess a spell of such power."
CRLF
REMOVE ADVENTURER
CALL QUEUE,I-ADVENTURER,0
RTRUE
.FUNCT STAIRS-F
EQUAL? HERE,JUNCTION \?ELS5
PRINTR "The stairs are to the east. You'll have to go there to get a look."
?ELS5: EQUAL? HERE,ENDLESS-STAIR \FALSE
EQUAL? PRSA,V?KULCAD \FALSE
CALL STAIR-DISPEL
RSTACK
.FUNCT STAIR-DISPEL
CALL QUEUE,I-HUNGER,0
CALL QUEUE,I-THIRST,0
CALL QUEUE,I-TIRED,0
CALL QUEUE,I-TURTLE,0
SET 'STAIR-SOLVED?,TRUE-VALUE
ADD SCORE,STAIR-POINT >SCORE
SET 'STAIR-POINT,0
CALL DESTROY-ALL,WINNER,REAL-STAIR >DROPPED-SOME?
MOVE FLY-SCROLL,WINNER
PRINTI "The stairway begins to dissolve before your eyes, leaving a circular area with exits east and west, but remarkable mainly for its absence of a floor. Indeed, you find yourself standing in midair above a deep pit with the sort of comical look which is found mainly among duped cartoon characters. Frantically, you grab for the solid bannister"
ZERO? DROPPED-SOME? /?CND3
PRINTI ", dropping your heavier possessions in your desire to save yourself"
?CND3: PRINTI "! But the bannister shifts and dissolves as well, leaving you grasping what appears to be an ornate scroll."
CRLF
CALL THIS-IS-IT,FLY-SCROLL
CALL QUEUE,I-FALL-FOREVER,5
PUT STACK,0,1
CALL QUEUE,I-FALL,-1
PUT STACK,0,1
CALL INT,I-TIRED
PUT STACK,0,0
CALL GOTO,REAL-STAIR,FALSE-VALUE
RTRUE
.FUNCT ENDLESS-UP
CALL ENDLESS-UP-DOWN,TRUE-VALUE
RETURN ENDLESS-STAIR
.FUNCT ENDLESS-DOWN
CALL ENDLESS-UP-DOWN,FALSE-VALUE
RETURN ENDLESS-STAIR
.FUNCT ENDLESS-UP-DOWN,UP?
FCLEAR ENDLESS-STAIR,TOUCHBIT
CALL STAIR-TO-TABLE,STAIR-LOC
PRINTI "You "
ZERO? UP? /?ELS5
PRINTI "climb"
INC 'STAIR-LOC
JUMP ?CND3
?ELS5: PRINTI "descend"
DEC 'STAIR-LOC
?CND3: PRINTI " the stairs, making one circuit of the tower."
CRLF
CALL TABLE-TO-STAIR,STAIR-LOC
RSTACK
.FUNCT ENDLESS-STAIR-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "This is a winding stair, stretching up and down out of sight. The walls are mossy and damp."
EQUAL? STAIR-LOC,STAIR-START \?CND8
PRINTI " An exit leads west to a landing."
?CND8: CRLF
RTRUE
?ELS5: EQUAL? RARG,M-ENTER \FALSE
EQUAL? WINNER,PLAYER /FALSE
LOC PLAYER
IN? WINNER,STACK /FALSE
REMOVE WINNER
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RFALSE
.FUNCT ENDLESS-EXIT-F
EQUAL? STAIR-LOC,STAIR-START \?ELS5
RETURN LANDING
?ELS5: PRINTI "You can't go that way."
CRLF
RFALSE
.FUNCT STAIR-TO-TABLE,SLOC,TBL,CNT=0,F,N
FIRST? ENDLESS-STAIR >F /?KLU21
?KLU21: SET 'TBL,STAIR-TABLE
?PRG1: ZERO? F /TRUE
NEXT? F >N /?KLU22
?KLU22: EQUAL? F,WINNER \?ELS11
JUMP ?CND9
?ELS11: FSET? F,TAKEBIT \?CND9
?PRG14: GET TBL,CNT
ZERO? STACK \?ELS18
PUT TBL,CNT,SLOC
ADD CNT,1
PUT TBL,STACK,F
ADD CNT,2 >CNT
REMOVE F
JUMP ?CND9
?ELS18: ADD CNT,2 >CNT
JUMP ?PRG14
?CND9: SET 'F,N
JUMP ?PRG1
.FUNCT TABLE-TO-STAIR,SLOC,TBL,CNT=0
SET 'TBL,STAIR-TABLE
?PRG1: LESS? CNT,STAIR-TABLE-LENGTH \TRUE
GET TBL,CNT
EQUAL? STACK,SLOC \?CND3
PUT TBL,CNT,0
ADD CNT,1
GET TBL,STACK
MOVE STACK,ENDLESS-STAIR
?CND3: ADD CNT,2 >CNT
JUMP ?PRG1
.FUNCT REAL-STAIR-EXIT-F
SET 'FALL-COUNT,0
ZERO? FLYING? /?ELS5
PRINTI "Effortlessly, you float "
EQUAL? PRSO,P?DOWN \?ELS13
SET 'FALL-COUNT,1
PRINTI "downward."
CRLF
CALL DESTROY-ALL,HERE,PIT
RETURN PIT
?ELS13: EQUAL? PRSO,P?EAST \?ELS17
ADD SCORE,FLY-POINT >SCORE
SET 'FLY-POINT,0
CALL STOP-FLYING
PRINTI "eastward and settle to the ground."
CRLF
RETURN WARLOCK-TOWER
?ELS17: EQUAL? PRSO,P?WEST \FALSE
CALL STOP-FLYING
PRINTI "westward and settle to the ground."
CRLF
RETURN LANDING
?ELS5: PRINTI "You must think you can fly."
CRLF
RFALSE
.FUNCT PIT-EXIT-F
ZERO? FLYING? /?ELS5
PRINTI "Effortlessly, you float "
EQUAL? PRSO,P?DOWN \?ELS11
INC 'FALL-COUNT
PRINTI "downward."
CRLF
JUMP ?CND9
?ELS11: DEC 'FALL-COUNT
PRINTI "upward."
CRLF
?CND9: ZERO? FALL-COUNT \?ELS22
CALL DESTROY-ALL,HERE,REAL-STAIR
RETURN REAL-STAIR
?ELS22: CALL DESTROY-ALL,HERE,PIT
FCLEAR PIT,TOUCHBIT
RETURN PIT
?ELS5: PRINTI "You must think you can fly."
CRLF
RFALSE
.FUNCT PIT-F,RARG
EQUAL? RARG,M-BEG \FALSE
EQUAL? PRSA,V?DROP \?ELS10
CALL HELD?,PRSO
ZERO? STACK /?ELS10
FSET PRSO,NDESCBIT
FCLEAR PRSO,TAKEBIT
PRINTI "The "
PRINTD PRSO
PRINTR " falls out of sight below you."
?ELS10: EQUAL? PRSA,V?EXAMINE,V?TAKE \FALSE
CALL HELD?,PRSO
ZERO? STACK \FALSE
PRINTI "The "
PRINTD PRSO
PRINTR " is out of reach below you."
.FUNCT STOP-FLYING
SET 'FLYING?,FALSE-VALUE
CALL QUEUE,I-FALL,0
CALL QUEUE,I-FALL-FOREVER,0
CALL QUEUE,I-FLY,0
RTRUE
.FUNCT I-FALL
ZERO? FLYING? \TRUE
INC 'FALL-COUNT
PRINTI "You plummet downward, deeper into the pit, but the bottom is still not visible."
ZERO? DROPPED-SOME? /TRUE
PRINTR " Far ahead of you fall your former possessions."
.FUNCT I-FALL-FOREVER
PRINTI "You plummet deeper and deeper into the pit! Oddly enough, you never seem to hit bottom. After many years, only tattered remnants of you remain, still falling."
CRLF
CALL FINISH
RSTACK
.FUNCT DESTROY-ALL,WHO,WHERE,N,X,DEST?=0
FIRST? WHO >X /?KLU11
?KLU11:
?PRG1: ZERO? X \?CND3
RETURN DEST?
?CND3: NEXT? X >N /?KLU12
?KLU12: EQUAL? X,WINNER /?CND6
GETP X,P?SIZE
GRTR? STACK,4 \?CND6
CALL REMOVE-ALL,X
MOVE X,WHERE
FSET X,NDESCBIT
FCLEAR X,TAKEBIT
SET 'DEST?,TRUE-VALUE
?CND6: SET 'X,N
JUMP ?PRG1
.FUNCT REMOVE-ALL,WHAT,N,X
FIRST? WHAT >X /?KLU6
?KLU6:
?PRG1: ZERO? X /TRUE
NEXT? X >N /?KLU7
?KLU7: REMOVE X
SET 'X,N
JUMP ?PRG1
.FUNCT WARLOCK-TOWER-F,RARG
EQUAL? RARG,M-ENTER \FALSE
FSET WARLOCK-TOWER,TOUCHBIT
PRINTI "As you enter, you realize that this is Krill's secret chamber, protected by powerful illusions now broken by your skills. Before you stands Krill, engaged in the casting of some complex and horrific magic. Krill turns to face you, surprised and annoyed by your intrusion. You have seen him before: cloaked in black, he sacrificed you at the Altar before his hoard. His yellow eyes glisten and he breathes deeply. In a voice as deep as the great caverns of the earth, he speaks: ""Fool! Parlor magician! You dare to defile my chamber with your worm-like presence. I shall not waste words with you. Goodbye, spell-monger!"""
EQUAL? HASTED?,PLAYER \?CND8
PRINTI " He pauses. ""Ah! You seem to be in a hurry, campfire-conjurer! Slow down and enjoy the show!"" He waves his hand, and you are robbed of your energy."
?CND8: PRINTI " Krill snaps his fingers loudly, and a giant dragon appears, breathing gouts of flame. He moves ever closer, red eyes bulging with malice!"
CRLF
CRLF
MOVE DRAGON,HERE
CALL QUEUE,I-DRAGON,2
PUT STACK,0,1
RTRUE
.FUNCT GLOBAL-KRILL-F
EQUAL? PRSA,V?GIVE,V?HELLO,V?GUNCHO \?ELS5
PRINTR "Krill is not here, and lucky for you."
?ELS5: EQUAL? PRSA,V?ZIFMIA \?ELS9
CALL JIGS-UP,STR?85,FALSE-VALUE
RSTACK
?ELS9: EQUAL? PRSA,V?WHO,V?EXAMINE \?ELS11
PRINTR "Krill is an evil warlock who was banished from the Circle of Enchanters. His malice was thought to be forever ended, his reign of terror a dim and frightful memory. But he has returned, and his power must be destroyed lest the Circle's great works be overthrown."
?ELS11: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-KRILL
RTRUE
.FUNCT DRAGON-F
EQUAL? PRSA,V?GONDAR \?ELS5
PRINTI "The dragon's flame is doused in a torrent of water as you cast the gondar spell! He disappears with a torturous scream."
REMOVE DRAGON
CALL SECOND-ACT
RSTACK
?ELS5: EQUAL? PRSA,V?NITFOL,V?VAXUM \?ELS9
PRINTI "The dragon pauses and roars out a benevolent greeting, which, to your chagrin, fries you to a delicate crisp."
CRLF
CALL FINISH
RSTACK
?ELS9: EQUAL? PRSA,V?GUNCHO \?ELS13
PRINTI "Unfortunately, the dragon is practically on top of you, and before you can finish saying the guncho spell he blasts you to beyond well-done."
CRLF
CALL FINISH
RSTACK
?ELS13: EQUAL? PRSA,V?CLEESH \?ELS17
PRINTR "The dragon, being reptilian himself, is unaffected."
?ELS17: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \FALSE
PRINTR "Your strength isn't nearly enough to best the dragon!"
.FUNCT SECOND-ACT,GUNCH=0
CRLF
PRINTI "Krill "
ZERO? GUNCH /?ELS5
PRINTI "seems shaken, but regains his composure."
JUMP ?CND3
?ELS5: PRINTI "seems to be somewhat amused."
?CND3: CRLF
CRLF
PRINTI """A fine spell, wizard-worm, but your luck has ended!"" With another snap of his fingers, he summons a being whose essence is evil. It has a shape which is masked by its blackness and exudes a foul, fetid odor. In its hand is a large battle axe. At a signal from Krill, it advances!"
CRLF
CALL QUEUE,I-SHAPE,2
PUT STACK,0,1
MOVE SHAPE,HERE
RTRUE
.FUNCT I-DRAGON
IN? DRAGON,HERE \?CND1
EQUAL? DEATH-CHEATED,ME /?THN7
ZERO? PROTECTED-FROM-EVIL /?CND4
?THN7: PRINT NO-LONGER-PROTECTED
CRLF
?CND4: PRINTI "The dragon engulfs you in flame. As you perish, you can hear Krill's mocking laughter."
CRLF
CALL FINISH
?CND1: CALL QUEUE,I-DRAGON,0
RTRUE
.FUNCT SHAPE-F
EQUAL? PRSA,V?VAXUM \?ELS5
PRINTI "The monster hesitates, stops, smiles, and disappears."
CRLF
CALL THIRD-ACT
RSTACK
?ELS5: EQUAL? PRSA,V?CLEESH \?ELS9
PRINTI "The monster hesitates, trembles, then turns into a newt. Poor monster. Its battle axe, now unsupported, falls on it, slicing it neatly in half."
CRLF
CALL THIRD-ACT
RSTACK
?ELS9: EQUAL? PRSA,V?NITFOL \?ELS13
PRINTI """Yum, yum!"" are the last words you hear."
CRLF
CALL FINISH
RSTACK
?ELS13: EQUAL? PRSA,V?GUNCHO \?ELS17
PRINTI "The monster pauses for a moment as you begin the guncho spell, then swiftly cleaves you with its axe before you can finish!"
CRLF
CALL FINISH
RSTACK
?ELS17: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \FALSE
PRINTR "Your effort is useless. It is still coming closer!"
.FUNCT THIRD-ACT
REMOVE SHAPE
CRLF
PRINTI "Krill seems to be losing patience.
""I am through playing games, carnival-clown! You shall return to your Circle, but I am afraid that all the little pieces will prove hard to reassemble!"" He laughs hideously and starts a guttural chant which shakes the very tower."
CRLF
SET 'KRILL-KILL,TRUE-VALUE
CALL QUEUE,I-BYE,2
PUT STACK,0,1
RTRUE
.FUNCT I-SHAPE
IN? SHAPE,HERE \?CND1
EQUAL? DEATH-CHEATED,ME /?THN7
ZERO? PROTECTED-FROM-EVIL /?CND4
?THN7: PRINT NO-LONGER-PROTECTED
CRLF
?CND4: PRINTI "The monster hits you with its battle axe! You fall, dead, as the laughter of Krill reaches a crescendo!"
CRLF
CALL FINISH
?CND1: CALL QUEUE,I-SHAPE,0
RTRUE
.FUNCT I-BYE
EQUAL? HERE,WARLOCK-TOWER \FALSE
CRLF
PRINTI "Krill finishes his spell and his harsh laughter is all that remains! You are in a void, without sight, sound, or sensation. You scream at the top of your lungs, but nothing happens. You break into a cold sweat as you ponder the infinite, beyond all help and hope!"
CRLF
CALL FINISH
RSTACK
.FUNCT KRILL-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "Krill is not a pretty sight! Enough said."
?ELS5: EQUAL? PRSA,V?GUNCHO \?ELS9
ZERO? KRILL-KILL /?ELS9
PRINTI "Krill recoils as he hears the first words of the guncho spell. For a few seconds he continues with the spell he was casting, trying to finish before you. He fumbles some syllables! Then he steps back and, with his hands outstretched toward you, lets out a bloodcurdling scream. His face twisted, and his body vibrating with the effort of resisting the enchantment, he utters a spell of power, and is gone! After a quiet moment, a rumble begins deep in the earth. It strengthens as the tower starts to sway. The floor gives way beneath you and you tumble down towards the sea ... then you are surrounded by a burst of light.
You realize that you are with the Circle. The Eldest of the Circle, Belboz, rises and speaks: ""The evil of Krill is ended this day. From beyond hope, you have proved yourself great and worthy. Our hearts are gladdened at your return."" A chair appears at his right hand and he motions for you to sit beside him. He smiles warmly. ""Join with us,"" he says, ""and tell us of your quest!""
Here ends the first chapter of the Enchanter saga, in which, by virtue of your skills, you have joined the Circle of Enchanters. Further adventures await you as the Enchanter series continues."
CRLF
CRLF
ADD SCORE,WARLOCK-POINT >SCORE
USL
CALL FINISH
RSTACK
?ELS9: EQUAL? PRSA,V?CLEESH \?ELS15
PRINTR "Krill shimmers for a moment, then laughs heartily. The laugh sounds vaguely like a croak, but perhaps it is only your imagination."
?ELS15: EQUAL? PRSA,V?VAXUM \?ELS19
PRINTR "The spell seems to have no influence over Krill. You wouldn't much like to see him smile, anyway."
?ELS19: EQUAL? PRSA,V?GUNCHO \?ELS23
PRINTI "The look of surprise on Krill's face as you recite the first few syllables of the guncho spell is exceeded only by your look of disappointment as you are "
IN? SHAPE,HERE \?ELS30
PUSH STR?88
JUMP ?CND26
?ELS30: PUSH STR?89
?CND26: PRINT STACK
CRLF
CALL FINISH
RSTACK
?ELS23: EQUAL? PRSA,V?HELLO \FALSE
PRINTR "Krill grins and the sight is ghastly."
.FUNCT I-MUNG-ROOM,TELL?=1,RM,TBL
CALL QUEUE,I-MUNG-ROOM,20
PUT STACK,0,1
SET 'TBL,MUNG-ROOM-TABLE
?PRG1: GET TBL,0 >RM
ZERO? RM /?REP2
FSET? RM,RMUNGBIT /?CND6
JUMP ?REP2
?CND6: ADD TBL,2 >TBL
JUMP ?PRG1
?REP2: ZERO? RM /?CND11
FSET RM,RMUNGBIT
FCLEAR RM,TOUCHBIT
ZERO? TELL? /?CND11
EQUAL? RM,HERE \?CND11
PRINTI "Suddenly, you sense a great wind of evil magic blowing around you. You are weighed down by its power, and only your sorcerous training permits you to withstand it. When you regain your composure, your surroundings have changed."
CRLF
?CND11: RETURN RM
.ENDI

View File

@ -364,7 +364,7 @@ of your death.")
(ACTION GLOBAL-KRILL-F)>
<ROUTINE GLOBAL-KRILL-F ()
<COND (<VERB? GUNCHO HELLO>
<COND (<VERB? GUNCHO HELLO GIVE>
<TELL
"Krill is not here, and lucky for you." CR>)
(<VERB? ZIFMIA>
@ -518,7 +518,7 @@ ponder the infinite, beyond all help and hope!" CR>
"Krill recoils as he hears the first words of the guncho spell. For a few
seconds he continues with the spell he was casting, trying to finish before
you. He fumbles some syllables! Then he steps
back and, with his hands outstretched toward you, lets out a blood-curdling
back and, with his hands outstretched toward you, lets out a bloodcurdling
scream. His face twisted, and his body vibrating with the effort of resisting
the enchantment, he utters a spell
of power, and is gone! After a quiet moment, a rumble begins deep in the

2
syntax.zap Normal file
View File

@ -0,0 +1,2 @@
.ENDI

View File

@ -5,6 +5,8 @@
"SUBTITLE VOCABULARY"
<BUZZ AGAIN G OOPS>
<BUZZ A AN THE IS AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y
PRY PLEASE LINE LINES YOU SOME>
@ -61,8 +63,8 @@
"SUBTITLE REAL VERBS"
<SYNTAX AGAIN = V-AGAIN>
<SYNONYM AGAIN G>
;<SYNTAX AGAIN = V-AGAIN>
;<SYNONYM AGAIN G>
<SYNTAX ANSWER = V-ANSWER>
<SYNTAX ANSWER OBJECT = V-REPLY>

210
temple.zap Normal file
View File

@ -0,0 +1,210 @@
.FUNCT ALTAR-PSEUDO
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "A close examination of the altar nearly sickens you. It fairly screams with the memory of the horrors it has seen since the coming of Krill. Its original white marble has been crusted with blood and desecrated by the minions of the evil Warlock."
?ELS5: EQUAL? HERE,TEMPLE \?ELS9
EQUAL? PRSA,V?CLIMB-ON,V?CLIMB-FOO,V?CLIMB-UP /?THN12
EQUAL? PRSA,V?WALK-TO \?ELS9
?THN12: CALL DO-WALK,P?UP
RTRUE
?ELS9: EQUAL? PRSA,V?RUB,V?WALK-TO,V?CLIMB-ON /?THN16
EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \FALSE
?THN16: PRINTR "There is nothing you would like less than nearing the altar."
.FUNCT STATUE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "It is an enormous statue of a loathsome creature, dark and vile, with dripping fangs and razor-sharp talons. It appears almost to be motioning with its outstretched talons for you to approach."
?ELS5: EQUAL? PRSA,V?RUB \FALSE
PRINTR "Your sensibilities are offended by the very idea."
.FUNCT GANG-OF-N-F
EQUAL? PRSA,V?GUNCHO \?ELS5
PRINTR "The majority of the mass of figures fades away into nothingness. Enough remain, however, to continue the service (or whatever it is)."
?ELS5: EQUAL? PRSA,V?FROTZ \?ELS9
PRINTR "A few select figures suddenly start to give off light, to the horror of the remaining ones, who rip them to shreds in an instant."
?ELS9: EQUAL? PRSA,V?VAXUM \?ELS13
PRINTR "Nothing seems to have happened, although a few of the figures seem to be chanting in a less guttural tone."
?ELS13: EQUAL? PRSA,V?ZIFMIA \?ELS17
PRINTI "Something appears to have snapped. The figures, who were so peacefully ignoring you, now seem to have taken a different, and less pleasant, tack."
CRLF
CALL TAKE-TO-TOWER
RSTACK
?ELS17: EQUAL? PRSA,V?CLEESH \FALSE
PRINTR "Some of the figures hunch down even more and scuttle off."
.FUNCT GUARDS-F
EQUAL? PRSA,V?VAXUM \?ELS5
PRINTR "The guards outside your cell cheer up a bit, upsetting a larger figure who could well be their boss. They are dismissed and replaced by other guards who don't seem to have the air of bonhomie shared by the others."
?ELS5: EQUAL? PRSA,V?CLEESH \?ELS9
PRINTR "A couple of the guards turn into newts, running this way and that. They are quickly replaced, however, by others. Perhaps turning into a newt is a commonplace around these parts."
?ELS9: EQUAL? PRSA,V?GUNCHO \?ELS13
PRINTR "A few guards disappear, seeming to vanish with distance while still standing in front of you. They are replaced quite quickly and efficiently by others. To judge by the reaction to your show of magical prowess, you would think these things happen every day."
?ELS13: EQUAL? PRSA,V?ZIFMIA \?ELS17
PRINTI "Oh, no. You've done it now. The guards approach, and they don't look very pleased."
CRLF
CALL QUEUE,I-TAKE-TO-ALTAR,1
RSTACK
?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS21
PRINTR "They are hunched and hairy shapes, but more detail cannot be discerned."
?ELS21: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \?ELS25
PRINTR "You can't reach them from in here, and you wouldn't have a prayer even if you could."
?ELS25: EQUAL? PRSA,V?LISTEN \?ELS29
PRINTR "The guards make low, grumbling sounds that could pass for speech, but it is incomprehensible to you."
?ELS29: EQUAL? PRSA,V?HELLO,V?TELL \?ELS33
PRINTR "They go right on ignoring you. They don't seem to be much on conversation, although from time to time they grumble in an unsettling sort of way."
?ELS33: ZERO? GUARDS-HEARD \?ELS37
EQUAL? PRSA,V?NITFOL \?ELS37
SET 'GUARDS-HEARD,TRUE-VALUE
PRINTR "The guards are having a delightful conversation, after a fashion:
Guard 1: ""Brgh! Last night, good bloodbath!""
Guard 2: ""Yes. Quite. Best in weeks. Have you seen the new sacrifice?""
Guard 1: ""Brggh! No! Just get here.""
Guard 2: ""It's a scrawny one. Not too much meat.""
Guard 1: ""Brrrgh! No meat! Not had good meal in many days!""
Guard 2: ""Perhaps tonight...""
Voice: ""Stop your yapping, both of you!""
The yapping stops abruptly."
?ELS37: EQUAL? PRSA,V?NITFOL \FALSE
PRINTR "The guards aren't speaking much."
.FUNCT TOWER-DOOR-F
EQUAL? PRSA,V?OPEN,V?UNLOCK \?ELS5
ZERO? LOCKED-IN-TOWER /?ELS5
PRINTI "The door is locked from the outside."
ZERO? PROTECTED-FROM-EVIL \?CND10
PRINTI " even if you could open it, the guards would undoubtedly return you with little difficulty"
?CND10: PRINTR "."
?ELS5: EQUAL? PRSA,V?KNOCK \?ELS18
PRINTR "It would only get the attention of the guards."
?ELS18: EQUAL? PRSA,V?REZROV \FALSE
PRINTI "The locked cell door opens with a powerful snap! Unfortunately, the guards seem to have heard the snap and approach!"
CRLF
FSET PRSO,OPENBIT
SET 'LOCKED-IN-TOWER,FALSE-VALUE
CALL QUEUE,I-TAKE-TO-ALTAR,1
RTRUE
.FUNCT TOWER-S-F,RARG
EQUAL? RARG,M-LOOK \FALSE
ZERO? SACRIFICED? /?ELS8
PRINTI "This prison cell is similar to the one in which you were held captive prior to your sacrifice."
JUMP ?CND6
?ELS8: PRINTI "This is a small prison cell in the south tower of the temple."
?CND6: PRINTI " A window in the cell door looks out on the temple itself."
CRLF
EQUAL? ANYTHING-TAKEN,SCROLLS-TAKEN /TRUE
GRTR? ANYTHING-TAKEN,0 \TRUE
GRTR? SCROLLS-TAKEN,0 \TRUE
PRINTR "The guards must have brought your possessions here, but something is definitely missing!"
.FUNCT CELL-PSEUDO
EQUAL? PRSA,V?ESCAPE \?ELS5
ZERO? LOCKED-IN-TOWER /?ELS5
PRINTR "That poses a difficult problem. There's only one way out, and that would mean tackling a few hundred unpleasant creatures."
?ELS5: EQUAL? PRSA,V?DROP \?ELS11
EQUAL? HERE,TOWER-S \?ELS16
CALL DO-WALK,P?NORTH
RSTACK
?ELS16: CALL DO-WALK,P?SOUTH
RSTACK
?ELS11: EQUAL? PRSA,V?OPEN \?ELS20
EQUAL? HERE,TOWER-S \?ELS23
CALL PERFORM,V?OPEN,TOWER-S-DOOR
RTRUE
?ELS23: CALL PERFORM,V?OPEN,TOWER-N-DOOR
RTRUE
?ELS20: EQUAL? PRSA,V?SEARCH \FALSE
CALL PERFORM,V?LOOK
RTRUE
.FUNCT TEMPLE-F,RARG
EQUAL? RARG,M-END \FALSE
IN? PLAYER,TEMPLE \FALSE
ZERO? PROTECTED-FROM-EVIL \FALSE
ZERO? LETTER-OF-TRANSIT \FALSE
CRLF
CALL TAKE-TO-TOWER
RSTACK
.FUNCT TAKE-TO-TOWER
SET 'LOCKED-IN-TOWER,TRUE-VALUE
SET 'WINNER,PLAYER
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'ADVENTURER-CHARMED,FALSE-VALUE
CALL QUEUE,I-TURTLE,0
PRINTI "A low noise begins behind you, and you turn to see hundreds of hunched and hairy shapes. A guttural chant issues from their throats. Near you stands a figure draped in a robe of deepest black, brandishing a vicious dagger. The chant grows louder as the robed figure approaches the altar. As the shapes grab you, the figure in black speaks: ""Take the victim to the tower. I shall prepare for the sacrifice!"" The figures, whose form you can barely guess, take you from here through the northern door and into a prison cell. They "
CALL BLT,PLAYER,TOWER-S >ANYTHING-TAKEN
ZERO? ANYTHING-TAKEN /?CND3
PRINTI "take your possessions from you and "
?CND3: PRINTI "close the door with a crash!"
CRLF
CRLF
SET 'SCROLLS-TAKEN,0
CALL GOTO,TOWER-N
IN? DISPEL-SCROLL,TOWER-S \?CND10
REMOVE DISPEL-SCROLL
SET 'SCROLLS-TAKEN,1
?CND10: IN? BANISH-SCROLL,TOWER-S \?CND13
REMOVE BANISH-SCROLL
INC 'SCROLLS-TAKEN
?CND13: CALL QUEUE,I-TAKE-TO-ALTAR,4
PUT STACK,0,1
RTRUE
.FUNCT I-TAKE-TO-ALTAR
ZERO? PROTECTED-FROM-EVIL /?CND1
PRINTR "A gang of hunched and hairy shapes appear, look around cursorily, and then depart."
?CND1: CRLF
PRINTI "A host of hunched and hairy shapes appear through the window. The cell door opens and you are marched solemnly to the temple and, from there, up the steps to the altar. The large, black figure approaches menacingly. He reaches into his cloak and pulls out a "
ZERO? DAGGER-SEEN /?ELS11
PRINTI "blood-drenched scimitar"
JUMP ?CND9
?ELS11: PRINTI "great, glowing dagger"
?CND9: PRINTI ". He pulls you onto the altar, and with a murmur of approval from the throng, he plunges the blade into your heart!"
CRLF
SET 'SACRIFICED?,TRUE-VALUE
EQUAL? DEATH-CHEATED,ME /?ELS25
SET 'WINNER,PLAYER
CALL JIGS-UP,FALSE-VALUE,FALSE-VALUE
RSTACK
?ELS25: SET 'LOCKED-IN-TOWER,FALSE-VALUE
CRLF
PRINTI "You feel yourself filled with a strange warmth as your eyes slowly open. You are lying on the altar"
ZERO? DAGGER-SEEN \?CND30
PRINTI ", a glowing dagger in your chest"
?CND30: PRINTI ". You are in no pain, however. The large figure is gone, but the throng of shapes, taking no notice of your movement, is chanting in the temple below."
ZERO? DAGGER-SEEN \?CND37
PRINTI " You slowly remove the dagger from your chest, but you are not harmed. The blade shines faintly in the light of the flickering torches."
?CND37: CRLF
CRLF
ADD SCORE,TEMPLE-POINT >SCORE
SET 'TEMPLE-POINT,0
ZERO? DAGGER-SEEN \?CND42
SET 'DAGGER-SEEN,TRUE-VALUE
MOVE MAGIC-KNIFE,WINNER
?CND42: CALL QUEUE,I-LETTER-OF-TRANSIT,10
PUT STACK,0,1
SET 'LETTER-OF-TRANSIT,TRUE-VALUE
CALL GOTO,ALTAR
RSTACK
.FUNCT I-LETTER-OF-TRANSIT
EQUAL? HERE,TEMPLE \?ELS3
CALL QUEUE,I-LETTER-OF-TRANSIT,3
RFALSE
?ELS3: SET 'LETTER-OF-TRANSIT,FALSE-VALUE
RFALSE
.ENDI

View File

@ -110,7 +110,7 @@ temple below is a mass of hunched figures, chanting in hideous tones.")
(LDESC
"This is a small prison cell in the north tower of the temple. Hideous shapes
can be seen through the iron-barred window in the prison door. From the temple,
a blood-curdling chant can be heard.")
a bloodcurdling chant can be heard.")
(SOUTH TO TEMPLE IF TOWER-N-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT)
(TEXT

591
terror.zap Normal file
View File

@ -0,0 +1,591 @@
.FUNCT TERROR-F
EQUAL? PRSA,V?ZIFMIA \?ELS5
PRINTR "As you cast the zifmia spell, you are overpowered with such a sense of malice that you cannot continue. All in all, a good thing probably."
?ELS5: EQUAL? PRSA,V?VAXUM \?ELS9
PRINTR "The terror may be friendlier, but with friends like that...."
?ELS9: EQUAL? PRSA,V?GUNCHO \FALSE
REMOVE TERROR
PRINTR "The room fills with a horrible noise, darkens to pitch blackness, and then lightens. The weight of fear lifts."
.FUNCT TMAP-F
EQUAL? PRSA,V?KULCAD \?ELS5
PRINTI "At once, a maze of lines forms, connecting all of the spots on the map. Suddenly, the world becomes still and cold."
CRLF
CRLF
CALL END-OF-WORLD
RTRUE
?ELS5: EQUAL? PRSA,V?PUT,V?CLOSE,V?OPEN \?ELS9
PRINTR "You can't do that."
?ELS9: EQUAL? PRSA,V?DRAW-ON \?ELS13
IN? PENCIL,WINNER \?ELS18
CALL WRITE-HINT
RTRUE
?ELS18: PRINTR "You have nothing to draw with."
?ELS13: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?READ \FALSE
PRINTI "The map consists of a drawing with nine points, each represented by a strange character, with interconnecting thin pencil lines. Using your native alphabet, it looks like this:"
CRLF
CALL DRAW-TMAZE
RSTACK
.FUNCT PENCIL-F
EQUAL? PRSA,V?KULCAD \?ELS5
PRINTI "As the pencil dissolves into nothingness, everything becomes still and cold."
CRLF
CRLF
CALL END-OF-WORLD
RTRUE
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
PRINTI "The pencil is very old and covered with finely inlaid runes. The point is "
GET PENCIL-TBL,PENCIL-COUNT
PRINT STACK
PRINTI " and the attached eraser is "
GET ERASER-TBL,ERASER-COUNT
PRINT STACK
PRINTR "."
.FUNCT BLACK-PASSAGE-F
EQUAL? PRSA,V?EXAMINE \FALSE
PRINTR "The passages are perfectly round and black; the walls seem to be made of carbon."
.FUNCT TMAZE-F,RARG,TBL,NEX=0,FLG=0,OFFS=0,PLU=0,?TMP1
IN? BANISH-SCROLL,WINNER \?CND1
EQUAL? HERE,T-A \?CND1
ZERO? TERROR-TRAPPED /?CND1
GRTR? TERROR-POINT,0 \?CND1
PRINTI "You hear a horrible anguished scream through the walls of the cavern as the terror realizes that it is trapped and its scroll of power stolen!"
CRLF
CRLF
ADD SCORE,TERROR-POINT >SCORE
SET 'TERROR-POINT,0
?CND1: EQUAL? RARG,M-LOOK \?ELS12
PRINTI "This is a peculiar room, whose cream-colored walls are thin and translucent."
CRLF
GETP HERE,P?TMAZE >TBL
?PRG15: GET TBL,OFFS
EQUAL? STACK,-1 \?ELS19
JUMP ?REP16
?ELS19: ADD OFFS,1
GET TBL,STACK
EQUAL? STACK,1 \?CND17
INC 'NEX
?CND17: ADD OFFS,2 >OFFS
JUMP ?PRG15
?REP16: ZERO? NEX \?ELS24
PRINTR "There is not a single exit from this place."
?ELS24: EQUAL? NEX,1 \?ELS28
PRINTI "An exit is"
JUMP ?CND22
?ELS28: SET 'PLU,TRUE-VALUE
PRINTI "Passages go"
?CND22: PRINTI " to the "
SET 'OFFS,0
?PRG37: GET TBL,OFFS
EQUAL? STACK,-1 \?ELS41
JUMP ?REP38
?ELS41: ADD OFFS,1
GET TBL,STACK
EQUAL? STACK,1 \?CND39
DIV OFFS,2
GET TMAZE-DIRS,STACK
PRINT STACK
GRTR? NEX,2 \?ELS48
SET 'FLG,TRUE-VALUE
PRINTI ", "
JUMP ?CND46
?ELS48: EQUAL? NEX,2 \?CND46
ZERO? FLG /?CND53
PRINTI ","
?CND53: PRINTI " and "
?CND46: DEC 'NEX
?CND39: ADD OFFS,2 >OFFS
JUMP ?PRG37
?REP38: PRINTI " and "
ZERO? PLU /?ELS65
PRINTI "they are"
JUMP ?CND63
?ELS65: PRINTI "it is"
?CND63: PRINTR " very strange indeed, perfectly round and black as pitch."
?ELS12: EQUAL? RARG,M-BEG \FALSE
IN? TERROR,HERE \?ELS81
EQUAL? PRSA,V?WALK \FALSE
PRINTR "Your feet are leaden with fear, and cold sweat runs down your back as you make your way to the door, but you make no progress. Your mind tells you you are running, but you aren't getting anywhere."
?ELS81: EQUAL? PRSA,V?WALK \FALSE
EQUAL? HERE,T-A \?ELS95
EQUAL? PRSO,P?UP \?ELS95
CALL GOTO,DUNGEON
RTRUE
?ELS95: GRTR? PRSO,P?UP \?ELS99
GETP HERE,P?TMAZE >TBL
SUB PRSO,P?UP
MUL STACK,2
SUB STACK,1 >OFFS
GET TBL,OFFS
EQUAL? STACK,1 \?ELS99
SUB OFFS,1
GET TBL,STACK
CALL GOTO,STACK
IN? TERROR,HERE \?ELS104
PRINTR "An evil presence pervades the room, its source unseen. Fear seeps into your mind, like fog. You look fearfully around. There is something horrible here."
?ELS104: LOC TERROR
CALL CONNECTED?,HERE,STACK
ZERO? STACK /TRUE
PRINTR "You sense that near this place an evil presence lurks. It seems close by and is moving."
?ELS99: PRINTR "You can't go that way."
.FUNCT END-OF-WORLD
PRINTI "You suddenly feel weak and your knees buckle. Just as you collapse to the ground, you find yourself in the presence of the Circle. They seem tense and frightened and ask desperately about your recent doings. As you tell your tale of the map and pencil, they recoil in horror. ""The Terror is released!"" cries one. Belboz sinks into his throne. ""We are doomed!"" he gasps. One by one, the wizards flee to prepare a hopeless defense."
CRLF
SET 'SCORE,-10
CALL FINISH
RSTACK
.FUNCT DRAW-TMAZE
CALL FIXED-FONT-ON
CRLF
PRINTI "B"
CALL ECN,T-A,T-H
PRINTI "J"
CRLF
CALL CN,T-A,T-SOUTH
CALL CN,T-A,T-SE
PRINTI " "
CALL CN,T-E,T-SW
CALL CN,T-E,T-SOUTH
CALL CN,T-E,T-SE
CRLF
CALL CN,T-A,T-SOUTH
PRINTI " "
CALL CN,T-A,T-SE
PRINTI " "
CALL CN,T-E,T-SW
PRINTI " "
CALL CN,T-E,T-SOUTH
PRINTI " "
CALL CN,T-E,T-SE
CRLF
CALL CN,T-A,T-SOUTH
PRINTI " "
CALL CN,T-A,T-SE
PRINTI " "
CALL CN,T-E,T-SW
PRINTI " "
CALL CN,T-E,T-SOUTH
PRINTI " "
CALL CN,T-E,T-SE
CRLF
CALL CN,T-A,T-SOUTH
PRINTI " K"
CALL ECN,T-C,T-E
PRINTI "V"
CRLF
CALL CN,T-A,T-SOUTH
PRINTI " "
CALL CN,T-C,T-SW
CALL CN,T-C,T-SOUTH
CALL CN,T-C,T-SE
PRINTI " "
CALL CN,T-E,T-SOUTH
PRINTI " "
CALL CN,T-G,T-SW
CALL CN,T-G,T-SOUTH
CALL CN,T-G,T-SE
CRLF
CALL CN,T-A,T-SOUTH
PRINTI " "
CALL CN,T-C,T-SW
PRINTI " "
CALL CN,T-C,T-SOUTH
PRINTI " "
CALL CN,T-C,T-SE
PRINTI " "
CALL CN,T-E,T-SOUTH
PRINTI " "
CALL CN,T-G,T-SW
PRINTI " "
CALL CN,T-G,T-SOUTH
PRINTI " "
CALL CN,T-G,T-SE
CRLF
CALL CN,T-A,T-SOUTH
CALL CN,T-C,T-SW
PRINTI " "
CALL CN,T-C,T-SOUTH
PRINTI " "
CALL CN,T-C,T-SE
CALL CN,T-E,T-SOUTH
CALL CN,T-G,T-SW
PRINTI " "
CALL CN,T-G,T-SOUTH
PRINTI " "
CALL CN,T-G,T-SE
CRLF
PRINTI "R"
CALL ECN,T-B,T-C
PRINTI "M"
CALL ECN,T-F,T-G
PRINTI "F"
CRLF
PRINTI " "
CALL CN,T-B,T-SE
PRINTI " "
CALL CN,T-C,T-SOUTH
PRINTI " "
CALL CN,T-F,T-SW
PRINTI " "
CALL CN,T-F,T-SE
PRINTI " "
CALL CN,T-G,T-SOUTH
PRINTI " "
CALL CN,T-H,T-SW
CRLF
PRINTI " "
CALL CN,T-B,T-SE
PRINTI " "
CALL CN,T-C,T-SOUTH
PRINTI " "
CALL CN,T-F,T-SW
PRINTI " "
CALL CN,T-F,T-SE
PRINTI " "
CALL CN,T-G,T-SOUTH
PRINTI " "
CALL CN,T-H,T-SW
CRLF
PRINTI " "
CALL CN,T-B,T-SE
CALL CN,T-C,T-SOUTH
CALL CN,T-F,T-SW
PRINTI " "
CALL CN,T-F,T-SE
CALL CN,T-G,T-SOUTH
CALL CN,T-H,T-SW
CRLF
PRINTI " H"
CALL ECN,T-D,T-H
PRINTI "P"
CRLF
CRLF
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 CN,L,DIR
GETP L,P?TMAZE
GET STACK,DIR
ZERO? STACK /?ELS5
GET T-DIR-TABLE,DIR
PRINT STACK
RTRUE
?ELS5: PRINTI " "
RTRUE
.FUNCT ECN,L,DN,FLG=0
GETP L,P?TMAZE
GET STACK,T-EAST
ZERO? STACK /?ELS3
SET 'FLG,TRUE-VALUE
PRINTI "---"
JUMP ?CND1
?ELS3: PRINTI " "
?CND1: GETP DN,P?TMAZE
GET STACK,T-SOUTH
ZERO? STACK /?ELS12
ZERO? FLG /?ELS15
PRINTI "+"
JUMP ?CND10
?ELS15: PRINTI "!"
JUMP ?CND10
?ELS12: ZERO? FLG /?ELS24
PRINTI "-"
JUMP ?CND10
?ELS24: PRINTI " "
?CND10: ZERO? FLG /?ELS36
PRINTI "---"
RTRUE
?ELS36: PRINTI " "
RTRUE
.FUNCT CONNECT,RM1,RM2,FLIP=0,TBL,RMX
GETP RM1,P?TMAZE >TBL
?PRG1: GET TBL,0 >RMX
EQUAL? RMX,-1 \?ELS5
PRINTR "The pencil doesn't seem to allow that line to be drawn."
?ELS5: EQUAL? RMX,RM2 \?CND3
GET TBL,1
ZERO? STACK \?ELS12
ZERO? FLIP \?CND13
CALL CONNECT,RM2,RM1,TRUE-VALUE
DEC 'PENCIL-COUNT
PRINTI "A thin line now connects the two spots on the map, but the pencil point is "
GET PENCIL-TBL,PENCIL-COUNT
PRINT STACK
PRINTI "."
CRLF
EQUAL? HERE,RM1,RM2 \?CND13
CALL DESCRIBE-NEW-EXIT,RM1,RM2
?CND13: PUT TBL,1,1
LOC TERROR
ZERO? STACK /TRUE
LOC TERROR
CALL TWALK,STACK
ZERO? STACK /TRUE
SET 'TERROR-TRAPPED,FALSE-VALUE
CALL QUEUE,I-TERROR,-1
PUT STACK,0,1
RTRUE
?ELS12: PRINTR "There is already a line connecting those spots."
?CND3: ADD TBL,4 >TBL
JUMP ?PRG1
.FUNCT DISCONNECT,RM1,RM2,FLIP=0,TBL,RMX
GETP RM1,P?TMAZE >TBL
?PRG1: GET TBL,0 >RMX
EQUAL? RMX,-1 \?ELS5
PRINTR "Those two spots aren't connected on the map."
?ELS5: EQUAL? RMX,RM2 \?CND3
GET TBL,1
ZERO? STACK \?ELS12
PRINTR "Those two spots aren't connected on the map."
?ELS12: ZERO? FLIP \?CND17
CALL DISCONNECT,RM2,RM1,TRUE-VALUE
DEC 'ERASER-COUNT
PRINTI "The line between the two spots is erased, leaving the eraser "
GET ERASER-TBL,ERASER-COUNT
PRINT STACK
PRINTI "."
CRLF
EQUAL? HERE,RM1,RM2 \?CND17
CALL DESCRIBE-NEW-EXIT,RM1,RM2,FALSE-VALUE
?CND17: PUT TBL,1,0
RTRUE
?CND3: ADD TBL,4 >TBL
JUMP ?PRG1
.FUNCT DESCRIBE-NEW-EXIT,RM1,RM2,MAKE?=1,TMP,TBL,OFFS=0
EQUAL? RM2,HERE \?CND1
SET 'TMP,RM1
SET 'RM1,RM2
SET 'RM2,TMP
?CND1: GETP RM1,P?TMAZE >TBL
?PRG4: GET TBL,OFFS >TMP
EQUAL? TMP,RM2 \?ELS8
JUMP ?REP5
?ELS8: EQUAL? TMP,-1 \?ELS10
PRINTI "*ERROR* BAD-EXIT DESCRIBE-NEW-EXIT"
CRLF
JUMP ?REP5
?ELS10: ADD OFFS,2 >OFFS
JUMP ?PRG4
?REP5: PRINTI "Suddenly, the "
ZERO? MAKE? /?ELS19
PRINTI "wall"
JUMP ?CND17
?ELS19: PRINTI "black passage"
?CND17: PRINTI " to the "
DIV OFFS,2
GET TMAZE-DIRS,STACK
PRINT STACK
ZERO? MAKE? /?ELS33
PRINTI " opens to form a perfectly round and black passage"
JUMP ?CND31
?ELS33: PRINTI " closes off"
?CND31: PRINTR "!"
.FUNCT CONNECTED?,RM1,RM2,TBL,RMX
GETP RM1,P?TMAZE >TBL
ZERO? TBL /FALSE
?PRG4: GET TBL,0 >RMX
EQUAL? RMX,-1 /FALSE
EQUAL? RMX,RM2 \?CND6
GET TBL,1
ZERO? STACK \TRUE
RFALSE
?CND6: ADD TBL,4 >TBL
JUMP ?PRG4
.FUNCT I-TERROR,RM,NRM,FLG=0
ZERO? TERROR-TRAPPED /?ELS5
LOC TERROR >RM
CALL CONNECTED?,HERE,RM
ZERO? STACK /FALSE
MOVE TERROR,HERE
PRINT TERROR-ARRIVES
CRLF
RTRUE
?ELS5: LOC TERROR >RM
CALL TWALK,RM
ZERO? STACK /?ELS15
SET 'TERROR-TRAPPED,FALSE-VALUE
SET 'TWAIT,0
GET PATH-TBL,2
GET TMAZE-ROOMS,STACK >NRM
MOVE TERROR,NRM
EQUAL? HERE,NRM \?ELS18
PRINT TERROR-ARRIVES
CRLF
SET 'FLG,TRUE-VALUE
JUMP ?CND16
?ELS18: CALL CONNECTED?,HERE,NRM
ZERO? STACK /?ELS22
PRINTI "Somewhere near, an evil presence lurks, probing your mind. It seems to be moving quickly."
CRLF
SET 'FLG,TRUE-VALUE
JUMP ?CND16
?ELS22: CALL CONNECTED?,HERE,RM
ZERO? STACK /?CND16
PRINTI "You can no longer sense the evil presence nearby."
CRLF
SET 'FLG,TRUE-VALUE
?CND16: ZERO? TERROR-MOVED \?CND29
SET 'TERROR-MOVED,TRUE-VALUE
INC 'LOSSAGE
SET 'FLG,TRUE-VALUE
PRINTI "You feel that two powerful, evil forces are searching each other out. As they meet, the air lightens. Belboz appears before you. ""Something has disturbed the ancient Terror. Krill himself knows this and will try to use it to his purposes. Already, they may have joined together. You must not allow the Terror to escape, or we are all doomed!"" He fades into the gloom."
CRLF
?CND29: EQUAL? NRM,T-A \?CND34
CALL END-OF-WORLD
EQUAL? HERE,T-A \?ELS39
SET 'FLG,TRUE-VALUE
PRINTI "The presence seems to grow stronger each passing second, beating you down with its awesome power."
CRLF
RETURN FLG
?ELS39: SET 'FLG,TRUE-VALUE
PRINTI "At once, a strange and horrible feeling wells up inside of you. An unseen yet awesomely powerful force, exuding pure evil, seems to fill the very chamber."
CRLF
?CND34: RETURN FLG
?ELS15: CALL TNULL-F
ZERO? STACK \TRUE
IGRTR? 'TWAIT,6 /TRUE
CALL TWALK1 >RM
ZERO? RM /TRUE
LOC TERROR >NRM
EQUAL? NRM,T-I /TRUE
CALL CONNECTED?,NRM,T-I
ZERO? STACK /?ELS58
MOVE TERROR,T-I
JUMP ?CND54
?ELS58: CALL CONNECTED?,NRM,T-F
ZERO? STACK /?CND54
MOVE TERROR,T-F
?CND54: IN? TERROR,HERE \?ELS63
PRINT TERROR-ARRIVES
CRLF
RTRUE
?ELS63: PRINTR "From somewhere nearby, an unseen force probes you, and you are gripped by a sickening feeling."
.FUNCT TNULL-F
SET 'TERROR-TRAPPED,TRUE-VALUE
RFALSE
.FUNCT TWALK,RM
SET 'TWALK-LEVEL,0
SET 'TTRIES,0
SET 'PSTART,RM
CALL PATH-OUT?,RM
RSTACK
.FUNCT TWALK1,TBL,RM,NRM,OFFS=1,CNT
LOC TERROR >RM
GETP RM,P?CAPACITY
GET TWALK-PATHS,STACK >TBL
GET TBL,0 >CNT
?PRG1: GRTR? OFFS,CNT /FALSE
GET TBL,OFFS
GET TMAZE-ROOMS,STACK >NRM
CALL CONNECTED?,RM,NRM
ZERO? STACK /?CND3
RETURN NRM
?CND3: INC 'OFFS
JUMP ?PRG1
.FUNCT PATH-OUT?,RM,OFFS=1,TBL,CNT=0,NRM
INC 'TTRIES
INC 'TWALK-LEVEL
GETP RM,P?CAPACITY
PUT PATH-TBL,TWALK-LEVEL,STACK
EQUAL? RM,T-A \?ELS3
DEC 'TWALK-LEVEL
RTRUE
?ELS3: GRTR? TWALK-LEVEL,TWALK-MAX \?CND1
DEC 'TWALK-LEVEL
RFALSE
?CND1: GETP RM,P?CAPACITY
GET TWALK-PATHS,STACK >TBL
GET TBL,0 >CNT
ZERO? CNT \?CND6
DEC 'TWALK-LEVEL
RTRUE
?CND6:
?PRG9: GRTR? OFFS,CNT \?ELS13
DEC 'TWALK-LEVEL
RFALSE
?ELS13: GET TBL,OFFS
GET TMAZE-ROOMS,STACK >NRM
CALL CONNECTED?,RM,NRM
ZERO? STACK /?CND11
EQUAL? NRM,PSTART /?CND11
CALL PATH-OUT?,NRM
ZERO? STACK /?CND11
DEC 'TWALK-LEVEL
RTRUE
?CND11: INC 'OFFS
JUMP ?PRG9
.FUNCT LEGEND-BOOK-F
EQUAL? PRSA,V?CLOSE \?ELS5
FSET? PRSO,OPENBIT \?ELS5
FCLEAR PRSO,OPENBIT
PRINTR "Closed."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?READ /?THN12
EQUAL? PRSA,V?OPEN \?ELS11
?THN12: FSET PRSO,OPENBIT
PRINTR "The first page of the book was the table of contents. Only two chapter names can be read: The Legend of the Unseen Terror and The Legend of the Great Implementers."
?ELS11: EQUAL? PRSA,V?TURN \FALSE
PRINTR "Rather than turning pages, why don't you simply read the legends."
.FUNCT LEGEND-TWO-F
EQUAL? PRSA,V?ZIFMIA \FALSE
ZERO? IMP-SEEN \FALSE
SET 'IMP-SEEN,TRUE-VALUE
PRINTR "The implementers of the world, Marc Blank and Dave Lebling, appear before you, looking quite as confused as yourself. They speak:
Dave: ""What's happening here?""
Marc: ""Uh, I dunno. YOU wrote this code, not me.""
Dave: ""Hmm. Another day, another bug. Let's see here...""
They disappear a moment later.
Dave's voice: ""That should do it."""
.ENDI

2319
verbs.zap Normal file

File diff suppressed because it is too large Load Diff

View File

@ -297,8 +297,8 @@ game position, or end this session of the game?|
<TELL
"ENCHANTER|
Infocom interactive fiction - a fantasy story|
Copyright (C) 1983, 1984 by Infocom, Inc. All rights reserved.|
ENCHANTER is a trademark of Infocom, Inc.|
Copyright (C) 1983, 1984, 1986 by Infocom, Inc. All rights reserved.|
ENCHANTER is a registered trademark of Infocom, Inc.|
Release ">
<PRINTN <BAND <GET 0 1> *3777*>>
<TELL " / Serial number ">
@ -309,7 +309,7 @@ Release ">
<PRINTC <GETB 0 .CNT>>)>>
<CRLF>>
<ROUTINE V-AGAIN ("AUX" OBJ)
;<ROUTINE V-AGAIN ("AUX" OBJ)
<COND (<==? ,L-PRSA ,V?WALK>
<SETG P-WALK-DIR ,L-PRSO>
<PERFORM ,L-PRSA ,L-PRSO>)
@ -539,7 +539,8 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR>
<RFATAL>)
(<EQUAL? ,WINNER ,TURTLE>
<COND (<IN? ,TURTLE <LOC ,PLAYER>>
<TELL "\"I can't go that way.\"" CR>)>
<TELL "\"I can't go that way.\"" CR>)
(ELSE <NO-RESPONSE>)>
<RFATAL>)
(<OUTSIDE? ,HERE>
<TELL "There's no path in that direction." CR>
@ -564,16 +565,17 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR>
<JIGS-UP
"Oh, no! Something has come up from behind you and feasted on your person!">
<RFATAL>)
(<AND <EQUAL? ,WINNER ,TURTLE>
<IN? ,TURTLE <LOC ,PLAYER>>>
<TELL "\"I can't go that way.\"" CR>)
(<EQUAL? ,WINNER ,TURTLE>
<COND (<IN? ,TURTLE <LOC ,PLAYER>>
<TELL "\"I can't go that way.\"" CR>)
(ELSE <NO-RESPONSE>)>
<RFATAL>)
(T
<TELL "You can't go that way." CR>
<RFATAL>)>>
<ROUTINE THIS-IS-IT (OBJ)
<SETG P-IT-OBJECT .OBJ>
<SETG P-IT-LOC ,HERE>>
<SETG P-IT-OBJECT .OBJ>>
<ROUTINE V-INVENTORY ()
<COND (<FIRST? ,WINNER> <PRINT-CONT ,WINNER>)
@ -594,7 +596,8 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR>
<COND ;(<FSET? ,PRSO ,WEARBIT>
<TELL "You are already wearing it." CR>)
(T <TELL "You already have it." CR>)>)
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
(<AND <LOC ,PRSO>
<FSET? <LOC ,PRSO> ,CONTBIT>
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
<TELL "You can't reach that." CR>
<RTRUE>)
@ -804,7 +807,7 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR>
<GLOBAL COPR-NOTICE
" a transcript of interaction with ENCHANTER|
ENCHANTER is a trademark of Infocom, Inc.|
ENCHANTER is a registered trademark of Infocom, Inc.|
Copyright (c) 1983 Infocom, Inc. All rights reserved.|">
<ROUTINE V-SCRIPT ()
@ -1696,14 +1699,15 @@ line. For example, \"ERASE THE LINE BETWEEN X AND Z.\"" CR>)
<SET X .N>>>
<ROUTINE RIPOFF (X WHERE)
<COND (<AND <NOT <IN? .X .WHERE>>
<NOT <FSET? .X ,INVISIBLE>>
<COND (<AND <NOT <FSET? .X ,INVISIBLE>>
<NOT <FSET? .X ,SCROLLBIT>>
<NOT <EQUAL? .X ,BREAD ,JUG>>
<FSET? .X ,TOUCHBIT>
<FSET? .X ,TAKEBIT>>
<COND (<==? .X ,STRONG-BOX> <RFALSE>)>
<COND (.WHERE <MOVE .X .WHERE>)
<COND (<==? .X ,STRONG-BOX> <RFALSE>)
(<AND .WHERE <IN? .X .WHERE>>
<RFALSE>)
(.WHERE <MOVE .X .WHERE>)
(ELSE <REMOVE .X>)>
<RTRUE>)>>

25
z4.chart Normal file
View File

@ -0,0 +1,25 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
11/13 -1 64 0 0 0 0
11/13 1 64 0 0 0 0
11/13 2 108100 20736 255 224 718
11/13 18 108100 20736 255 224 718
11/13 18 108086 20736 255 224 718
11/14 19 122370 20290 255 223 718
11/14 19 108296 20739 255 226 718
11/14 20 108100 20734 255 223 718
11/14 21 108450 20744 255 224 718
11/14 22 108450 20744 255 224 718
11/14 22 108594 20832 255 224 722
11/14 23 108620 20832 255 224 722
11/15 24 108628 20832 255 224 722
11/18 24 108638 20814 255 224 722
7/24 -1 108688 20832 255 224 722
7/25 -1 108830 20834 255 225 722
7/25 2 108854 20834 255 225 722
7/28 25 108854 20834 255 225 722
7/28 26 108920 20832 255 224 722
8/19 27 109458 21476 255 232 723
8/19 27 111120 21476 255 232 723
8/19 27 111122 21474 255 231 723
8/19 28 111128 21474 255 231 723
8/20 29 111126 21474 255 231 723

35
z4.errors Normal file
View File

@ -0,0 +1,35 @@
Assembling Z4.XZAP.4 on Wednesday, August 20, 1986 17:19:27
Release: 29
64 Inserting Z4FREQ.XZAP.1 (626 bytes)
690 Inserting Z4DAT.ZAP.15 (20784 bytes)
21474 Inserting SYNTAX.ZAP.21 (0 bytes)
21474 Inserting MACROS.ZAP.21 (117 bytes)
21591 Inserting CLOCK.ZAP.21 (178 bytes)
21769 Inserting MAIN.ZAP.21 (2289 bytes)
24058 Inserting GPARSER.ZAP.5 (6898 bytes)
30956 Inserting VERBS.ZAP.23 (12130 bytes)
43086 Inserting RECORD.ZAP.13 (56 bytes)
43142 Inserting GLOBALS.ZAP.22 (2799 bytes)
45941 Inserting TERROR.ZAP.20 (4413 bytes)
50354 Inserting STAIR.ZAP.20 (5043 bytes)
55397 Inserting MAGIC.ZAP.19 (6509 bytes)
61906 Inserting KNOT.ZAP.19 (1368 bytes)
63274 Inserting PURLOINED.ZAP.19 (7343 bytes)
70617 Inserting CASTLE.ZAP.19 (6510 bytes)
77127 Inserting TEMPLE.ZAP.18 (3385 bytes)
80512 Inserting GALLERY.ZAP.18 (2162 bytes)
82674 Inserting EGG.ZAP.17 (1699 bytes)
84373 Inserting SLEEP.ZAP.17 (2358 bytes)
86731 Inserting GEARS.ZAP.17 (5826 bytes)
92557 Inserting OUTSIDE.ZAP.17 (3338 bytes)
95895 Inserting Z4STR.ZAP.15 (15231 bytes)
255 objects.
231 globals.
723 word vocabulary.
111126 bytes (109K).
21474 bytes of preload.
12653 bytes of impure.
Outputting symbol tables

1082
z4.record Normal file

File diff suppressed because it is too large Load Diff

1
z4.serial Normal file
View File

@ -0,0 +1 @@
24

24
z4.xzap Normal file
View File

@ -0,0 +1,24 @@
.INSERT "Z4FREQ"
.INSERT "Z4DAT" ; DATA IS IN THIS FILE
.INSERT "SYNTAX"
.INSERT "MACROS"
.INSERT "CLOCK"
.INSERT "MAIN"
.INSERT "GPARSER"
.INSERT "VERBS"
.INSERT "RECORD"
.INSERT "GLOBALS"
.INSERT "TERROR"
.INSERT "STAIR"
.INSERT "MAGIC"
.INSERT "KNOT"
.INSERT "PURLOINED"
.INSERT "CASTLE"
.INSERT "TEMPLE"
.INSERT "GALLERY"
.INSERT "EGG"
.INSERT "SLEEP"
.INSERT "GEARS"
.INSERT "OUTSIDE"
.INSERT "Z4STR"
.END

66
z4.zap Normal file
View File

@ -0,0 +1,66 @@
.INSERT "Z4DAT" ; DATA IS IN THIS FILE
.INSERT "SYNTAX"
.INSERT "MACROS"
.INSERT "CLOCK"
.INSERT "MAIN"
.INSERT "GPARSER"
.INSERT "VERBS"
.INSERT "RECORD"
.INSERT "GLOBALS"
.INSERT "TERROR"
.INSERT "STAIR"
.INSERT "MAGIC"
.INSERT "KNOT"
.INSERT "PURLOINED"
.INSERT "CASTLE"
.INSERT "TEMPLE"
.INSERT "GALLERY"
.INSERT "EGG"
.INSERT "SLEEP"
.INSERT "GEARS"
.INSERT "OUTSIDE"
.INSERT "Z4STR"
.END

9
z4.zil
View File

@ -8,6 +8,8 @@
">
<SETG ZORK-NUMBER 4>
<SNAME "ENCHANTER">
<SET REDEFINE T>
@ -17,9 +19,6 @@
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
@ -28,9 +27,7 @@
<INSERT-FILE "MACROS" T>
<INSERT-FILE "CLOCK" T>
<INSERT-FILE "MAIN" T>
<INSERT-FILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<INSERT-FILE "GPARSER" T>
<INSERT-FILE "VERBS" T>
<INSERT-FILE "RECORD" T>
<INSERT-FILE "GLOBALS" T>

BIN
z4.zip Normal file

Binary file not shown.

14260
z4dat.zap Normal file

File diff suppressed because it is too large Load Diff

200
z4freq.xzap Normal file
View File

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;2104 1052
.FSTR FSTR?2,"The " ;1197 399
.FSTR FSTR?3,", " ;980 980
.FSTR FSTR?4,"and " ;956 478
.FSTR FSTR?5,"You " ;813 271
.FSTR FSTR?6,"you " ;618 309
.FSTR FSTR?7,". " ;570 570
.FSTR FSTR?8,"to " ;496 496
.FSTR FSTR?9,"of " ;492 492
.FSTR FSTR?10,"your " ;447 149
.FSTR FSTR?11,"with " ;429 143
.FSTR FSTR?12,"is " ;401 401
.FSTR FSTR?13,"can't " ;380 76
.FSTR FSTR?14,"adventurer " ;351 39
.FSTR FSTR?15,"that " ;330 110
.FSTR FSTR?16,"are " ;324 162
.FSTR FSTR?17,"in " ;263 263
.FSTR FSTR?18,"This " ;252 63
.FSTR FSTR?19,"into " ;249 83
.FSTR FSTR?20,"which " ;244 61
.FSTR FSTR?21,"have " ;240 80
.FSTR FSTR?22,"There " ;235 47
.FSTR FSTR?23,"seems " ;224 56
.FSTR FSTR?24,"from " ;219 73
.FSTR FSTR?25,"don't " ;210 42
.FSTR FSTR?26,"small " ;192 48
.FSTR FSTR?27,"through " ;192 32
.FSTR FSTR?28,"nothing " ;186 31
.FSTR FSTR?29,"There's " ;184 23
.FSTR FSTR?30,"would " ;176 44
.FSTR FSTR?31,"spell " ;176 44
.FSTR FSTR?32,"but " ;166 83
.FSTR FSTR?33,"something " ;160 20
.FSTR FSTR?34,"It's " ;150 30
.FSTR FSTR?35,"for " ;142 71
.FSTR FSTR?36,"his " ;140 70
.FSTR FSTR?37,"turtle " ;140 28
.FSTR FSTR?38,"can " ;136 68
.FSTR FSTR?39,"temple " ;130 26
.FSTR FSTR?40,"this " ;129 43
.FSTR FSTR?41,"be " ;123 123
.FSTR FSTR?42,"here" ;122 61
.FSTR FSTR?43,"anything " ;119 17
.FSTR FSTR?44,"before " ;115 23
.FSTR FSTR?45,"around " ;115 23
.FSTR FSTR?46,"already " ;114 19
.FSTR FSTR?47,"not " ;110 55
.FSTR FSTR?48,"It " ;108 54
.FSTR FSTR?49,"seem " ;108 36
.FSTR FSTR?50,"scroll" ;108 27
.FSTR FSTR?51,"spell" ;105 35
.FSTR FSTR?52,"scroll " ;105 21
.FSTR FSTR?53,"continues " ;104 13
.FSTR FSTR?54,"adventurer" ;104 13
.FSTR FSTR?55,"appears " ;102 17
.FSTR FSTR?56,"other " ;100 25
.FSTR FSTR?57,"very " ;99 33
.FSTR FSTR?58,"Translucent " ;99 9
.FSTR FSTR?59,"A " ;97 97
.FSTR FSTR?60,"on " ;97 97
.FSTR FSTR?61,"Circle " ;96 16
.FSTR FSTR?62,"courtyard " ;96 12
.FSTR FSTR?63,"that" ;94 47
.FSTR FSTR?64,"north " ;92 23
.FSTR FSTR?65,"great " ;92 23
.FSTR FSTR?66,"standing " ;91 13
.FSTR FSTR?67,"doesn't " ;91 13
.FSTR FSTR?68,"Krill " ;90 18
.FSTR FSTR?69,"as " ;88 88
.FSTR FSTR?70,"large " ;88 22
.FSTR FSTR?71,"you" ;87 87
.FSTR FSTR?72,"it " ;87 87
.FSTR FSTR?73,"out " ;86 43
.FSTR FSTR?74,"room " ;84 28
.FSTR FSTR?75,"looks " ;84 21
.FSTR FSTR?76,"You're " ;84 12
.FSTR FSTR?77,"He " ;82 41
.FSTR FSTR?78,"door " ;81 27
.FSTR FSTR?79,"They " ;80 20
.FSTR FSTR?80,"only " ;78 26
.FSTR FSTR?81,"like " ;78 26
.FSTR FSTR?82,"here " ;78 26
.FSTR FSTR?83,"east " ;78 26
.FSTR FSTR?84,"glowing " ;78 13
.FSTR FSTR?85,"its " ;76 38
.FSTR FSTR?86,"there " ;76 19
.FSTR FSTR?87,"their " ;76 19
.FSTR FSTR?88,"open " ;75 25
.FSTR FSTR?89,"much " ;75 25
.FSTR FSTR?90,"stands " ;75 15
.FSTR FSTR?91,"behind " ;75 15
.FSTR FSTR?92,"has " ;72 36
.FSTR FSTR?93,"south" ;72 24
.FSTR FSTR?94,"more " ;72 24
.FSTR FSTR?95,"dark " ;72 24
.FSTR FSTR?96,"leads " ;72 18
;word frequency table of 96 most common words
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

360
z4str.zap Normal file
View File

@ -0,0 +1,360 @@
; STRINGS ARE DEFINED HERE
STRBEG::
.GSTR STR?1,"an "
.GSTR STR?2,"a "
.GSTR STR?3,"Charlatan"
.GSTR STR?4,"Parlor Magician"
.GSTR STR?5,"Novice Enchanter"
.GSTR STR?6,"Intermediate Enchanter"
.GSTR STR?7,"Enchanter"
.GSTR STR?8,"Expert Enchanter"
.GSTR STR?9,"Master Enchanter"
.GSTR STR?10,"Candidate for membership in the Circle of Enchanters"
.GSTR STR?11,"Member of the Circle of Enchanters"
.GSTR STR?12,"Oh, no! Something has come up from behind you and feasted on your person!"
.GSTR STR?13," "
.GSTR STR?14," "
.GSTR STR?15," "
.GSTR STR?16," "
.GSTR STR?17," "
.GSTR STR?18," a transcript of interaction with ENCHANTER
ENCHANTER is a trademark of Infocom, Inc.
Copyright (c) 1983 Infocom, Inc. All rights reserved.
"
.GSTR STR?19,"Oh, no! Something slithered alongside you and feasted on your person!"
.GSTR STR?20,", but the jug is now empty."
.GSTR STR?21,", and there's still some left."
.GSTR STR?22,", and there's plenty more."
.GSTR STR?23,", and there's lots more where that came from."
.GSTR STR?24,", and the jug's practically full."
.GSTR STR?25,"Hello."
.GSTR STR?26,"Good day."
.GSTR STR?27,"Nice weather we've been having lately."
.GSTR STR?28,"Good-bye."
.GSTR STR?29,"You should have looked before you leaped."
.GSTR STR?30,"I'm afraid that leap was a bit much for your weak frame."
.GSTR STR?31,"Unfortunately, you were holding it at the time."
.GSTR STR?32,"kill"
.GSTR STR?33,"attack"
.GSTR STR?34,"Kicking the "
.GSTR STR?35,"Waving the "
.GSTR STR?36,"Playing in this way with the "
.GSTR STR?37,"Fiddling with the "
.GSTR STR?38,"Pushing the "
.GSTR STR?39,"Trying to damage the "
.GSTR STR?40," doesn't do anything."
.GSTR STR?41," doesn't accomplish anything."
.GSTR STR?42," has no desirable effect."
.GSTR STR?43,"No spell would help with that!"
.GSTR STR?44,"It would take more magic than you've got!"
.GSTR STR?45,"You can't be serious."
.GSTR STR?46,"You must have had a silliness spell cast upon you."
.GSTR STR?47,"F"
.GSTR STR?48,"You experience the most peculiar sensation of being simultaneously shrunken and sucked into what might best be likened to a black hole. The effect is not without its exhilarating aspect; as a way of life, however, it leaves much to be desired."
.GSTR STR?49,"An empty jug lies in a corner of the room, against the overturned table."
.GSTR STR?50,"foo"
.GSTR STR?51,"mostly empty."
.GSTR STR?52,"half full."
.GSTR STR?53,"nearly full."
.GSTR STR?54,"full."
.GSTR STR?55,"Lying on the ground is an old parchment map."
.GSTR STR?56,"In one corner of the room is a badly worn pencil, inscribed with runes."
.GSTR STR?57,"It says ""Frobozz Magic Pencil Company."" Some sort of joke, probably."
.GSTR STR?58,"gone"
.GSTR STR?59,"very nearly gone"
.GSTR STR?60,"nearly gone"
.GSTR STR?61,"not fit for use"
.GSTR STR?62,"barely usable"
.GSTR STR?63,"negligible"
.GSTR STR?64,"/"
.GSTR STR?65,"!"
.GSTR STR?66,"\"
.GSTR STR?67,"northwest"
.GSTR STR?68,"west"
.GSTR STR?69,"southwest"
.GSTR STR?70,"south"
.GSTR STR?71,"southeast"
.GSTR STR?72,"east"
.GSTR STR?73,"northeast"
.GSTR STR?74,"north"
.GSTR STR?75,"An evil presence, borne on a cold blast of air, seems to move beside you, weighing you down with emanations of malice and hatred. A cold fear covers you like fog."
.GSTR STR?76,"Amid the tubes is an old and dusty book."
.GSTR STR?77,"This legend, written in an ancient tongue, goes something like this: At one time a shapeless and formless manifestation of evil was disturbed from millenia of sleep. It was so powerful that it required the combined wisdom of the leading enchanters of that age to conquer it. The legend tells how the enchanters lured the Terror ""to a recess deep within the earth"" by placing there a powerful spell scroll. When it had reached the scroll, the enchanters trapped it there with a spell that encased it in the living rock. The Terror was so horrible that none would dare speak of it. A comment at the end of the narration indicates that the story is considered to be quite fanciful; no other chronicles of the age mention the Terror in any form."
.GSTR STR?78,"This legend, written in an ancient tongue, speaks of the creation of the world. A more absurd account can hardly be imagined. The universe, it seems, was created by ""Implementers"" who directed the running of great engines. These engines produced this world and others, strange and wondrous, as a test or puzzle for others of their kind. It goes on to state that these beings stand ready to aid those entrapped within their creation. The great magician-philosopher Helfax notes that a creation of this kind is morally and logically indefensible and discards the theory as ""colossal claptrap and kludgery."""
.GSTR STR?79,"The wall is cylindrical here, with exits east and west. The eastern one opens into a dark, enclosed space. The air is thick with acrid smoke, and black, greasy ashes mar the floor. The mortar and stones of the walls are stained and crumbly."
.GSTR STR?80,"This is a circular room with no floor. There are exits east and west. A crude drawing of stairsteps graces the ceiling. Downward is only darkness."
.GSTR STR?81,"This is a circular pit of apparently infinite depth. The walls are of crudely dressed stone. No floor is visible."
.GSTR STR?82,"This is a room carved out of black basalt, eerily lit by flickering fires and the dim glow of magic."
.GSTR STR?83,"The pit yawns before you, and the izyuk spell has worn off!"
.GSTR STR?84,"The warlock Krill, robed in black, stands before you, in eager anticipation of your death."
.GSTR STR?85,"The warlock Krill appears before you, staring in astonishment. ""Who is it that disturbs my slumber? Oh, it is only you, secondary-school sorcerer!"" He points a finger and chants a spell. You are cast into the endless void!"
.GSTR STR?86,"A dragon, spouting flame, approaches!"
.GSTR STR?87,"Krill looks your way and spits: ""You were fortunate, wizard-worm, to have survived our last encounter. But your trivial spells of protection will not save you now!"""
.GSTR STR?88,"sliced into bits by the monster!"
.GSTR STR?89,"incinerated by the dragon!"
.GSTR STR?90,"write a magic spell into a spell book"
.GSTR STR?91,"cause something to give off light"
.GSTR STR?92,"survive unnatural death"
.GSTR STR?93,"magically summon a being"
.GSTR STR?94,"A scroll ornamented in gold leaf is here."
.GSTR STR?95,"make a hostile creature your friend"
.GSTR STR?96,"open even locked or enchanted objects"
.GSTR STR?97,"quench an open flame"
.GSTR STR?98,"converse with the beasts in their own tongue"
.GSTR STR?99,"Lying on the ground, and slightly damaged, is a stained scroll."
.GSTR STR?100,"make things move with greater speed"
.GSTR STR?101,"A scroll of old, brittle parchment is here."
.GSTR STR?102,"dispel a magic spell"
.GSTR STR?103,"protect magic users from harm by evil beings"
.GSTR STR?104,"safely protect a small object as though in a strong box"
.GSTR STR?105,"A scroll emanating power is here."
.GSTR STR?106,"banish the victim to another plane of existence"
.GSTR STR?107,"Discarded beneath a nearby tree is a slightly crumpled scroll."
.GSTR STR?108,"repair willful damage"
.GSTR STR?109,"change a creature into a small amphibian"
.GSTR STR?110,"fly like a bird"
.GSTR STR?111,"Lying on the floor is a purple scroll."
.GSTR STR?112,"create gratuitous fireworks"
.GSTR STR?113,"once"
.GSTR STR?114,"twice"
.GSTR STR?115,"thrice"
.GSTR STR?116,"four times"
.GSTR STR?117,"five times"
.GSTR STR?118,"A dull aching fills your head, and your mind is again probed, more deeply than when you entered the castle."
.GSTR STR?119,"Your head is filled with a heavy sensation, as though an enormous weight were being borne by it. Your mind is again probed, this time very deeply, testing and learning. The feeling passes after a long moment."
.GSTR STR?120,"A knife seems to split your head apart. A deep, black presence seems to enter and probe, deep and sure. After what seems like an eternity, it passes, leaving you with a throbbing headache."
.GSTR STR?121,"There is a faintly glowing strong box here."
.GSTR STR?122,"As you open"
.GSTR STR?123,"The rezrov spell bursts"
.GSTR STR?124,"The kulcad spell dispels"
.GSTR STR?125,"This small room must have been a closet of some sort. To the north is a passage leading out into a courtyard. Another exit is to the south."
.GSTR STR?126,"A jewelled box, wrapped in a partly untied tangle of rope, is on the ground."
.GSTR STR?127,"In the exact center of the room is a large, jewelled box. It is wrapped in tight coils of thin rope. You try to follow the strands with your eye, but become hopelessly lost in the jumble of thousands of loops and knots."
.GSTR STR?128,"A jewelled box, wrapped tightly in rope, is on the ground."
.GSTR STR?129,"A jewelled box is sitting on the ground."
.GSTR STR?130,"This room in the high tower appears to be a map room, with hundreds of ancient maps covering the walls. A huge globe, made of gold, sits on a pedestal in the center of the room. Through the tower windows can be seen a vast forest stretching out to the northeast and the sea, covered in fog, to the east and south. Stairs to the south lead to the bottom of the tower."
.GSTR STR?131,"Through the windows you can discern a vast forest to the northeast and the fog-shrouded sea stretching out to the east and south."
.GSTR STR?132,"You've really gotten those tentacles in an uproar. Sixty-three of them grab you and pull in sixty-three different directions. Not good for the digestion."
.GSTR STR?133,"""Give Up"""
.GSTR STR?134,"""Go Away"""
.GSTR STR?135,"""Had Enough?"""
.GSTR STR?136,"""Don't Bother"""
.GSTR STR?137,"Two, or perhaps three, monster heads reach out for you, spearing you in the process."
.GSTR STR?138,"One of the gargoyles spits in your direction, burning your arm with incendiary byproducts."
.GSTR STR?139,"Three or four tentacles grab you briefly and send you flying."
.GSTR STR?140,"You manage to reach one of the iron chains before it turns into a pair of teeth and bites you."
.GSTR STR?141,"The floating sign, once serene, knocks you delicately over the head."
.GSTR STR?142,"The door opens, and nineteen demons, each a cross between a carrot and a sledge hammer, march out from behind it, knock you senseless, and return, the last closing the door behind it."
.GSTR STR?143,"This is the western end of the"
.GSTR STR?144,"This is a spot within the long"
.GSTR STR?145,"This is the eastern end of the"
.GSTR STR?146,"stares in your direction but seems not to see you"
.GSTR STR?147,"is combing his hair"
.GSTR STR?148,"is wandering around his surroundings, seemingly lost"
.GSTR STR?149,"is deep in thought"
.GSTR STR?150,"The adventurer, startled momentarily, fights back with surprising skill. In fact, his skill is much greater than your own, and he quickly dispatches you."
.GSTR STR?151," eyes your possessions intently."
.GSTR STR?152,", not overly tactful, asks to see what you're holding."
.GSTR STR?153," asks what you would be needing treasures for."
.GSTR STR?154," offers to relieve you of some of your possessions."
.GSTR STR?155,"smiles at you like an idiot."
.GSTR STR?156,"pulls out his map, a convoluted collection of lines, arrows, and boxes, and checks it briefly."
.GSTR STR?157,"stares at his possessions as if expecting a revelation."
.GSTR STR?158,"tries to make some small talk, but he only mumbles. He'll have to speak up if he expects you to hear him."
.GSTR STR?159,"asks for directions to Flood Control Dam #3."
.GSTR STR?160,"tries to make some small talk, but only mumbles. He'll have to speak up if he expects you to hear him."
.GSTR STR?161,"waves his sword menacingly in your direction."
.GSTR STR?162,"fends you off with his sword."
.GSTR STR?163,"attempts to eat his sword. I don't think it would agree with him."
.GSTR STR?164,"downstairs"
.GSTR STR?165,"upstairs"
.GSTR STR?166,"in"
.GSTR STR?167,"out"
.GSTR STR?168,"You are on a long pebbled path, stretching out to the north. To the south the path continues through an open arch into an open area."
.GSTR STR?169,"This is the westernmost point in a large open courtyard. The huge entrance gate to the castle looms ominously to the west. The courtyard widens as it proceeds to the east, where a large, ivy-covered temple stands. On either side of the temple are small towers. Far beyond the temple, high above, are two large towers marking the corners of the castle. A squat dark turret hunches between them, blackening the sky around it. A small path leads into the castle to the south."
.GSTR STR?170,"This narrow promenade stretches into darkness to the south and, through an archway, toward an open area to the north."
.GSTR STR?171,"This dark and damp spot is at the base of the southwest tower of the castle. Two corridors lead off to the north and east. A winding staircase ascends into the tower."
.GSTR STR?172,"The eyrie is a round bedroom high in the tower. Narrow windows overlook the outside. A stone stairway leads down."
.GSTR STR?173,"Through the window, you can see a long twisting road making its way through a land of low, smoky hills."
.GSTR STR?174,"The bedpost pops open, revealing a small compartment and, nestled inside, a gold leaf scroll!"
.GSTR STR?175,"The damp corridor continues east and west from here. A dark and forbidding stairway leads down to the south. In addition, a narrow passage leads to the north."
.GSTR STR?176,"A dank and forgotten pit contains the dungeons. There is a cell to the north, and a partly blocked passage leads even deeper into the earth. It looks as if there was once a mortared stone wall blocking this passage, but it has crumbled and collapsed, reopening the tunnel."
.GSTR STR?177,"Unfortunately, this passage was never completed, so you don't get very far (neither did the prisoners)."
.GSTR STR?178,"Lying near the door is a silver spoon, discarded by the prisoners as too soft to dig with. It is only slightly worn."
.GSTR STR?179,"This short piece of corridor continues to the north and south."
.GSTR STR?180,"This is the base of the southeast tower of the castle. From atop a winding staircase comes a loud crashing and screeching noise. To the west is a corridor and the southern gate of the castle."
.GSTR STR?181,"A group of hunched and hairy shapes is standing here."
.GSTR STR?182,"The kitchen is dusty and disused. Old bones litter the floor, and the carving knives are rusty. A rat nest fills one of the ovens, and cobwebs are everywhere. There is some rotting food in a garbage heap in one corner."
.GSTR STR?183,"The kitchen has been freshly used. The oven, though empty, is still warm. Bones litter the floor, and the carving knives are bloody. The bones give all too clear an indication of the nature of the viands prepared here."
.GSTR STR?184,"The corridor widens here to form a large hall. To the north and south are small passages, and to the east is what appears to be an enormous spiral staircase. A passage to the west leads into a courtyard. The walls here are scarred and black, and a strange heaviness hangs in the air."
.GSTR STR?185,"Lying in a heap on the ground are what appear to be human bones, picked entirely clean."
.GSTR STR?186,"This is a library, or rather it was until it was ransacked and despoiled. Most of the contents of the room have been burned in a huge bonfire in the center of the room. Hundreds of charred and empty tubes are scattered about, as if by someone searching, so ashes are strewn about. There are rat tracks in the ashes."
.GSTR STR?187,"Inspection has revealed that the tracks lead into a small hole in the wall."
.GSTR STR?188,"This small open area stands at the old north gate of the castle, now badly rusted. Through the gate, a forest can be seen. To the west, a hall glows with light, and to the south, the dark castle can be reentered. A narrow passage to the east leads to the base of the northeast tower."
.GSTR STR?189,"The gate is rusted shut."
.GSTR STR?190,"You are in a dark forest, just north of a rusted gate. Except to the east and south, the forest is thick all around you."
.GSTR STR?191,"The forest is deep and dark. I wouldn't go in there."
.GSTR STR?192,"You are in a thick forest shading into a deep and miasmic swamp. The ground is very wet and boggy here, and footing is treacherous. Lily pads cover the surface of the water, and frogs abound. Things look drier to the west."
.GSTR STR?193,"There could be quicksand there. You should stay here."
.GSTR STR?194,"what they will do if they ever become princes again."
.GSTR STR?195,"the finer points of insect flavoring."
.GSTR STR?196,"the politics of lily pad assignment."
.GSTR STR?197,"the Interlogic series of prose adventures."
.GSTR STR?198,"the recent disturbing rise in the number of predators in the swamp."
.GSTR STR?199,"Hiya! Seen any juicy flies?"
.GSTR STR?200,"Awful day, isn't it?"
.GSTR STR?201,"Tell Belboz that Fr'nb-ap says hello!"
.GSTR STR?202,"This is the base of the northwest tower of the castle. A winding staircase leads up into the tower itself, and passages lead from here to the east and south."
.GSTR STR?203,"This is the northern part of the large interior courtyard of the castle. The vast lawns continue from here south and west. To the southeast stands a huge temple, on either side of which are dark towers. The courtyard continues east along a narrow path."
.GSTR STR?204,"The northern part of the interior courtyard is grey and lifeless. The vast lawns are withered and covered in black ash stretching from south to west. The temple stands to the southeast, and the courtyard continues east."
.GSTR STR?205,"You are in the center of a large courtyard, which surrounds you in all directions. Directly in front of you, to the east, is a large temple flanked by two smaller towers. Behind the temple can be seen the two eastern towers of the castle, shrouded in fog, and the single dark turret, black as night and sending dark streams of smoke into a lowering sky. From the temple comes a howling, haunting chant."
.GSTR STR?206,"You are in the center of a large courtyard, which surrounds you. Everything around you is ashen and grey, and the air seems miasmic and oppressive. The dead grass seems to grab at your feet as you stand gazing around. To the east is a temple flanked by two smaller towers. Behind it can be seen the two eastern towers of the castle, shrouded in blood-red fog. Between them is a dark turret, black and ominous as night. It sends dark streams of smoke curling around everything near it. From the temple can be heard a mournful chant."
.GSTR STR?207,"This is the southern part of the great courtyard, which spreads out to the north and west. A narrow stretch of grass continues to the east. To the northeast stands the temple, flanked by two small towers."
.GSTR STR?208,"This is the southern part of the courtyard, spreading north and west. The ground is ashen and grey, and the air heavy with death. The dead grass seems to grab at your feet. A narrow stretch of scorched earth continues to the east. To the northeast stands the temple, flanked by two small towers."
.GSTR STR?209,"You are north of a small tower which connects with the temple to the south. A large courtyard can be seen to the west and a smaller one to the southeast."
.GSTR STR?210,"There is no entrance to the tower here."
.GSTR STR?211,"You are south of a small tower which connects with the temple to the north. A large courtyard can be seen to the west and a smaller one to the northeast."
.GSTR STR?212,"You are standing in a small courtyard between a large open hall to the east and a temple to the west. The temple is flanked to the north and south by two small towers. Paths cross the lawn to the northwest and southwest."
.GSTR STR?213,"You are in a courtyard between an open hall to the east and a temple to the west. The temple is flanked, north and south, by twin towers. Paths cross the scarred lawn to the northwest and southwest. Nothing now grows here, however, and a foul stench fills the air."
.GSTR STR?214,"This is the interior of a huge temple of primitive construction. A few flickering torches cast a sallow illumination over the altar, which, atop a row of stairs, is still drenched with the blood of human sacrifice. Behind the altar is an enormous statue of a demon which seems to reach towards you with dripping fangs and razor-sharp talons. Two open doorways lead out of the temple to the east and west, while two wooden doors stand at the north and south. A mass of hunched figures in the temple are chanting a haunting tune. They don't seem interested in your presence."
.GSTR STR?215,"This is the altar of the temple. Acrid smoke fills the air, and a feeling of lurking evil is all around. A low droning, just at the lowest end of your perception, causes your hair to stand on end. Behind the altar is an enormous statue of a demon which reaches toward you with dripping fangs and razor-sharp talons. The fangs and talons are blood-red. In the temple below is a mass of hunched figures, chanting in hideous tones."
.GSTR STR?216,"This is a small prison cell in the north tower of the temple. Hideous shapes can be seen through the iron-barred window in the prison door. From the temple, a bloodcurdling chant can be heard."
.GSTR STR?217,"Hideous shapes chanting in unison can be seen through the cell window."
.GSTR STR?218,"This fabulous room commands a magnificent view of the Lonely Mountain which lies to the north and west. The room itself is filled with beautiful chests and cabinets which once contained precious jewels and other objets d'art. These are empty. Winding stone stairs lead down to the base of the tower."
.GSTR STR?219,"You can see the Lonely Mountain to the northwest."
.GSTR STR?220,"There is an ornamented egg here, both beautiful and complex. It is carefully crafted and bears further examination."
.GSTR STR?221,"turned"
.GSTR STR?222,"twisted"
.GSTR STR?223,"shoved"
.GSTR STR?224,"wound"
.GSTR STR?225,"pushed"
.GSTR STR?226,"The scroll is damaged beyond readability. You can make out the word ""summon,"" in the title, but that's all."
.GSTR STR?227,"just past dawn"
.GSTR STR?228,"early morning"
.GSTR STR?229,"mid-morning"
.GSTR STR?230,"around noon"
.GSTR STR?231,"early afternoon"
.GSTR STR?232,"mid-afternoon"
.GSTR STR?233,"early evening"
.GSTR STR?234,"mid evening"
.GSTR STR?235,"late evening"
.GSTR STR?236,"midnight"
.GSTR STR?237,"in the early hours"
.GSTR STR?238,"pre-dawn"
.GSTR STR?239,"dawn"
.GSTR STR?240,"You pass out from lack of water and die."
.GSTR STR?241,"Your mouth is getting rather dry."
.GSTR STR?242,"You are becoming quite thirsty."
.GSTR STR?243,"You are very thirsty now. You'd better have a drink soon."
.GSTR STR?244,"Your lips are parched. If you don't get a drink soon you will pass out."
.GSTR STR?245,"You are beginning to feel faint from lack of water."
.GSTR STR?246,"BUG"
.GSTR STR?247,"You pass out from lack of strength and die."
.GSTR STR?248,"Your stomach is starting to grumble."
.GSTR STR?249,"You are becoming quite hungry."
.GSTR STR?250,"You are very hungry now. You'd better have something to eat."
.GSTR STR?251,"You're fairly starving. If you don't eat soon you will pass out."
.GSTR STR?252,"You are beginning to feel faint from lack of sustenance."
.GSTR STR?253,"well fed"
.GSTR STR?254,"a bit hungry"
.GSTR STR?255,"becoming quite hungry"
.GSTR STR?256,"very hungry"
.GSTR STR?257,"fairly starving"
.GSTR STR?258,"faint from lack of food"
.GSTR STR?259,"huoo"
.GSTR STR?260,"well hydrated"
.GSTR STR?261,"a bit thirsty"
.GSTR STR?262,"quite thirsty"
.GSTR STR?263,"very thirsty"
.GSTR STR?264,"extremely thirsty"
.GSTR STR?265,"faint from lack of water"
.GSTR STR?266,"beginning to tire"
.GSTR STR?267,"feeling tired"
.GSTR STR?268,"worn out"
.GSTR STR?269,"feeling wrung out and tired"
.GSTR STR?270,"getting more and more tired"
.GSTR STR?271,"dead on your feet"
.GSTR STR?272,"so tired you can barely put one foot in front of another"
.GSTR STR?273,"practically asleep"
.GSTR STR?274,"moving only on your last reserves of strength"
.GSTR STR?275,"barely able to move your arms"
.GSTR STR?276,"unable to keep your eyes open for more than a few moments at a time"
.GSTR STR?277,"You sleep blissfully, unaware of the evil creatures lurking in the darkness. Unaware, that is, until one of them sets upon you with nasty sharp teeth."
.GSTR STR?278,"You dream of being pursued through a dank cavern. Something is behind you, something horrible that you can't turn to face. It gets closer and closer, and you can feel its hot breath on your neck."
.GSTR STR?279,"You dream of an idyllic scene in the country, a picnic of wood-sprites and dryads."
.GSTR STR?280,"You dream of Krill. He works feverishly in an evilly lit workroom. He is working a conjuration of great complexity and power, and the room is strewn with the noisome components of this horrific casting. Krill chants words of awful power as he works."
.GSTR STR?281,"You dream of dancing penguins in formal dress. One has a particularly nice tuxedo and a cane with a gold top."
.GSTR STR?282,"You dream of a river, slow and muddy. Great grey hippopotami sport there, bellowing and splashing, and twitching their ears."
.GSTR STR?283,"This is the control room for all the machinery nearby. The controls are all magical, of course. The walls are covered by blinking lights and shifting displays, interspersed with arcane dials and glowing buttons. It's all very mysterious looking. The exit, to the northwest, leads into a room with machinery which would surely crush you if you were to attempt to enter it."
.GSTR STR?284,"you"
.GSTR STR?285,"the other side"
.GSTR STR?286,"This is a meadow near the sea. There is a smell of salt in the air. Only heather and thistles grow here. To the north is a gate leading into the castle. A narrow path to the southeast leads to the shore of the Sea."
.GSTR STR?287,"There's no path there."
.GSTR STR?288,"This is a rocky beach along a grey and lifeless sea. There is dead seaweed covering many rocks, and listless waves barely stir the flotsam and jetsam here. There are many shells, but all are broken. A narrow path to the northwest leads into a meadow."
.GSTR STR?289,"Crawling slowly along the beach is an enormous turtle, his enamelled shell shining with all the colors of the rainbow."
.GSTR STR?290,"An enormous turtle is here, its enamelled shell shining with all the colors of the rainbow."
.GSTR STR?291,"Are you a magician? Are you going to do something about that annoying Warlock, then?"
.GSTR STR?292,"How do you like my shell? A wizard did that to me about 75 years ago."
.GSTR STR?293,"It's nice to find a human who talks turtle. Not many do, you know. Most people think turtles are boring, just because we talk slowly."
.GSTR STR?294,"The iron gate is locked."
.GSTR STR?295,"You are on an east-west road, which wends its way through the dark, rolling hills of this land. To the west rises a high mountain, to the east stands a high castle with dark towers."
.GSTR STR?296,"You would become lost among the brambles. Better to stay on the road."
.GSTR STR?297,"You are at a fork in the road where paths to the northwest and southwest girdle the base of the Lonely Mountain and a smaller path winds its way to the east."
.GSTR STR?298,"You are on the northeast side of the Lonely Mountain, walking a narrow path through rolling hills. On one side of the path is a sign and behind that, to the northeast, a winding path through the thick undergrowth. The trail continues to the southeast."
.GSTR STR?299,"The trail ends here. A ruined stone foundation marks the site of the Old Lingolf House, which presumably was a monument of some sort. The trail head is off to the southwest, and a small brook flows slowly by."
.GSTR STR?300,"The trail turns a corner here, bending out of sight to the southeast and southwest. The ground is higher here than to the south, allowing you to make out the top of the Lonely Mountain, shrouded in clouds. No path from here leads up the mountain, however."
.GSTR STR?301,"You are south of an old wooden shack, apparently deserted. The trail extends from northeast to southwest here, circling the Lonely Mountain, which lies to the southeast."
.GSTR STR?302,"The inside of the shack is a shambles. An overturned table and bench, and a few broken windows remain. An oven is the only fixture that's even recognizable. The door is to the south."
.GSTR STR?303,"You can't see much except for scrubby vegetation."
.GSTR STR?304,"The top of a battered lantern is partially visible behind the overturned table."
.GSTR STR?305,"not much"
.GSTR STR?306,"only a small amount"
.GSTR STR?307,"a good deal"
.GSTR STR?308,"nearly half"
.GSTR STR?309,"about half"
.GSTR STR?310,"a lot"
.GSTR STR?311,"a whole lot"
.GSTR STR?312,"an entire loaf"
.GSTR STR?313,"There's none left, though."
.GSTR STR?314,"There's not much left, though."
.GSTR STR?315,"There's only a small amount left, though."
.GSTR STR?316,"There's still a good deal left, too."
.GSTR STR?317,"There's nearly half of it left, too."
.GSTR STR?318,"There's still about half of it left, too."
.GSTR STR?319,"There's a lot of bread left, too."
.GSTR STR?320,"There's a whole lot of it left, too."
.GSTR STR?321,"There's a full loaf, too."
.GSTR STR?322,"You stand at a point of decision on a road which makes a wide fork to the northeast and southeast, circling the base of the Lonely Mountain, which looms high overhead to the east. A very long and winding road starts here and stretches out of sight to the west through low, smoky hills."
.GSTR STR?323,"The trail here turns dry and dusty. To the northwest is the fork leading to the Long Road, and the trail continues to the southeast."
.GSTR STR?324,"The trail makes a hairpin turn here, swinging out to the northwest and northeast, where it enters a small village. Low, smoky hills stretch out to the west and south."
.GSTR STR?325,"This is the castle's village. Formerly, peasants lived here, going to their farm plots each day. Merchants and artisans made it a center of cultural activity. But now it's deserted. Or almost: there is smoke rising from a particularly decrepit hovel to the south. A path travels through the village from southwest to northeast, heading towards the castle, and a less-used trail heads north up the mountain."
.GSTR STR?326,"You wander around in the village, find nothing of interest, and return to the path."
.GSTR STR?327,"This spot halfway up the Lonely Mountain is desolate of vegetation. Short, stunted trees with branches empty surround you and the air is heavy and smoke-filled."
.GSTR STR?328,"The trail is narrow and only heads up and down."
.GSTR STR?329,"This is the top of the Lonely Mountain. In olden days, mariners had named it Signal Mountain, for its glistening peak reflected the pale moonlight, providing an unmistakable landmark on unclouded nights. The bald mountain face is made of a shining substance whose nature is unknown to you. Looking to the west, low hills stretch to the horizon, and small pieces of the Long Road can be seen winding their way to distant lands. To the east, far away, can be seen a great castle at the edge of the Sea. Three turrets it has; two, old and still majestic, lie on either side of a third, cold, black as night and squat as a toad. An evil smoke seems to emanate from this tower, shrouding the others in a darkening fog. A small mountain trail leaves the peak and descends to the south into a small village far below."
.GSTR STR?330,"At the last moment, you remember that you don't know a flying spell."
.GSTR STR?331,"You are on a road which enters a small village to the southwest and comes to a fork to the northeast. The Lonely Mountain looms above but there is no path from here which ascends the mountain."
.GSTR STR?332,"There is no road there."
.GSTR STR?333,"Why"
.GSTR STR?334,"are"
.GSTR STR?335,"going"
.GSTR STR?336,"when"
.GSTR STR?337,"the"
.GSTR STR?338,"castle"
.GSTR STR?339,"is"
.GSTR STR?340,"east?"
.GSTR STR?341,"Burma"
.GSTR STR?342,"Shave"
.GSTR STR?343,"You execute a perfect swan-dive into the rocks below."
.GSTR STR?344,"A rat skitters across the floor, sees you, is startled, and rushes back the way it came."
.GSTR STR?345,"Bluebottles buzz up to you, and then away."
.GSTR STR?346,"A gaunt, feral-looking dog carrying a well-chewed bone approaches, is surprised by your presence, growls and then turns tail."
.GSTR STR?347,"Bats flutter by, red eyes glowing."
.GSTR STR?348,"You hear noises in the darkness nearby."
.GSTR STR?349,"You sense something behind you, turn, and there is nothing there."
.ENDI