From fc9385cb7d5924c910ba6e0cb0118d1355b3c1b4 Mon Sep 17 00:00:00 2001 From: historicalsource Date: Sat, 13 Apr 2019 21:05:06 -0400 Subject: [PATCH] Final Revision --- castle.zap | 631 +++ clock.zap | 55 + combat.log | 73 + crufty.xzap | 22 + crufty.zap | 23 + del.cmd | 1 + egg.zap | 176 + ench.br | 134 + enchanter.pre | Bin 0 -> 20992 bytes enchanter.pur | Bin 0 -> 87646 bytes enchanter.txt | 366 ++ enchanter.zil | 10 +- enchanter.zip | Bin 108638 -> 111126 bytes gallery.zap | 127 + gallery.zil | 4 +- gears.zap | 480 ++ gears.zil | 16 +- globals.zap | 424 ++ globals.zil | 12 +- gparser.zap | 1680 ++++++ gparser.zil | 1486 +++++ knot.zap | 103 + macros.zap | 39 + magic.zap | 806 +++ main.zap | 325 ++ main.zil | 48 +- outside.zap | 324 ++ parser.cmp | 1765 ++++++ parser.zap | 1290 +++++ parser.zil | 53 +- purloined.zap | 775 +++ purloined.zil | 5 +- record.zap | 25 + sleep.zap | 210 + sleep.zil | 3 +- stair.zap | 450 ++ stair.zil | 4 +- syntax.zap | 2 + syntax.zil | 6 +- temple.zap | 210 + temple.zil | 2 +- terror.zap | 591 ++ verbs.zap | 2319 ++++++++ verbs.zil | 34 +- z4.chart | 25 + z4.errors | 35 + z4.record | 1082 ++++ z4.serial | 1 + z4.xzap | 24 + z4.zap | 66 + z4.zil | 9 +- z4.zip | Bin 0 -> 111126 bytes z4dat.zap | 14260 ++++++++++++++++++++++++++++++++++++++++++++++++ z4freq.xzap | 200 + z4str.zap | 360 ++ 55 files changed, 31106 insertions(+), 65 deletions(-) create mode 100644 castle.zap create mode 100644 clock.zap create mode 100644 combat.log create mode 100644 crufty.xzap create mode 100644 crufty.zap create mode 100644 del.cmd create mode 100644 egg.zap create mode 100644 ench.br create mode 100644 enchanter.pre create mode 100644 enchanter.pur create mode 100644 enchanter.txt create mode 100644 gallery.zap create mode 100644 gears.zap create mode 100644 globals.zap create mode 100644 gparser.zap create mode 100644 gparser.zil create mode 100644 knot.zap create mode 100644 macros.zap create mode 100644 magic.zap create mode 100644 main.zap create mode 100644 outside.zap create mode 100644 parser.cmp create mode 100644 parser.zap create mode 100644 purloined.zap create mode 100644 record.zap create mode 100644 sleep.zap create mode 100644 stair.zap create mode 100644 syntax.zap create mode 100644 temple.zap create mode 100644 terror.zap create mode 100644 verbs.zap create mode 100644 z4.chart create mode 100644 z4.errors create mode 100644 z4.record create mode 100644 z4.serial create mode 100644 z4.xzap create mode 100644 z4.zap create mode 100644 z4.zip create mode 100644 z4dat.zap create mode 100644 z4freq.xzap create mode 100644 z4str.zap diff --git a/castle.zap b/castle.zap new file mode 100644 index 0000000..c1aada7 --- /dev/null +++ b/castle.zap @@ -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 diff --git a/clock.zap b/clock.zap new file mode 100644 index 0000000..1b10451 --- /dev/null +++ b/clock.zap @@ -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 diff --git a/combat.log b/combat.log new file mode 100644 index 0000000..c4afad9 --- /dev/null +++ b/combat.log @@ -0,0 +1,73 @@ +20-Aug-86 17:05:25 ZILCH started. Load is 3.04. +SYS:ZILCH.EXE Z4 + + +Compiling SS:Z4.ZIL.4 +[Classic Instructions] + *** ENCHANTER: Interlogic Fantasy *** + + +Compiling SS:SYNTAX.ZIL.122 +Compiling SS:MACROS.ZIL.22 +Compiling SS:CLOCK.ZIL.3 +Compiling SS:MAIN.ZIL.86 +Compiling SS:GPARSER.ZIL.9 +Compiling SS:VERBS.ZIL.245 +Compiling SS:RECORD.ZIL.1 +Compiling SS:GLOBALS.ZIL.139 +Compiling SS:TERROR.ZIL.184 +Compiling SS:STAIR.ZIL.131 +Compiling SS:MAGIC.ZIL.277 +Compiling SS:KNOT.ZIL.51 +Compiling SS:PURLOINED.ZIL.185 +Compiling SS:CASTLE.ZIL.234 +Compiling SS:TEMPLE.ZIL.78 +Compiling SS:GALLERY.ZIL.40 +Compiling SS:EGG.ZIL.48 +Compiling SS:SLEEP.ZIL.85 +Compiling SS:GEARS.ZIL.159 +Compiling SS: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. diff --git a/crufty.xzap b/crufty.xzap new file mode 100644 index 0000000..77a67bc --- /dev/null +++ b/crufty.xzap @@ -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 diff --git a/crufty.zap b/crufty.zap new file mode 100644 index 0000000..1a460bd --- /dev/null +++ b/crufty.zap @@ -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 diff --git a/del.cmd b/del.cmd new file mode 100644 index 0000000..1d03a48 --- /dev/null +++ b/del.cmd @@ -0,0 +1 @@ +fdele /all:_*.*/keep:2/spec:zil,zap/delfn:*.* diff --git a/egg.zap b/egg.zap new file mode 100644 index 0000000..5a48f70 --- /dev/null +++ b/egg.zap @@ -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 diff --git a/ench.br b/ench.br new file mode 100644 index 0000000..518d349 --- /dev/null +++ b/ench.br @@ -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) \ No newline at end of file diff --git a/enchanter.pre b/enchanter.pre new file mode 100644 index 0000000000000000000000000000000000000000..680b728ff26d557b402bedc6a0c9c9a46c97fe9a GIT binary patch literal 20992 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 Kj75Tbx&H?&6A8Wm literal 0 HcmV?d00001 diff --git a/enchanter.pur b/enchanter.pur new file mode 100644 index 0000000000000000000000000000000000000000..aad8a7f7db0d4df842788e11674fbf681f598258 GIT binary patch literal 87646 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

QK7 ziH5h&k1hgFuyid#yK=m`Y-`iA`o!Ro%8SvWt9#Lv}s6cidZ3XA9CuId7u zkw`x1N^>#~Lx@{ZJ(9^Yy&Gmx*Q8YzkEc~uB7!ullxammUJZC`a15g%F(eD=zsYj` zl%*>QvEMxjz3(vy3I?Li_+PVhbppms3z^0l(V_6XrytK9uyjep>=pKE*SRG{)wGPY zC)Pillqg*0#;j*%QeB6LQ?29^&5}2q&*x@1HGh_wa7WGsWDv<|Yey|zJMRgdt5n@V z(Zijewe|sgCk@Xv=n-0RYbp5Q@AB1q%U$82cuAe|{ zd3f=dRwpM*p2yi@avg({HCd*KX;=zAadvJp`|u8gBV^w>J6j2S_|kF%jV`^PrKDg% z)g`%11!`(b(-r#=qzH(N&6cjr;sMot00wR-OV<>$W%L!0kgZbmA(T5xRAkub8efD^9SEF3HO*!*t9X}Q`%pli zsZR^FBtkmaaJSK=3Clcm?~v{sJ~7=zU_l(KWTvv5M%X+7fzMrBwFC zy>p%0*peH}fm%&X*KUU-yVKOlD6Z=kULxSMcrvVF_15RjcwfYlxb9~Y3k(zc3tH^ZN=yIBXNjy;4&3SOXvuN z=J7{nGj~PC#;_e7`~JW>y=;-ch$TlsEwPhX!2_|Z;F%ZY0{AspL5z7oHF&3Q%8Hp6 z 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 literal 0 HcmV?d00001 diff --git a/enchanter.txt b/enchanter.txt new file mode 100644 index 0000000..85de671 --- /dev/null +++ b/enchanter.txt @@ -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: + + . FROTZ! ("Light!") + . FWEEP DOOR! ("Open door!") + Cast spell. + Cast on . + Cast 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 + >Frob ;Where "frob" is "write magic" + >Memorize + >Memorize twice ;Frill? + +I see a "spell" as being the following; + + + +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" \ No newline at end of file diff --git a/enchanter.zil b/enchanter.zil index 73c1b2c..0d16530 100644 --- a/enchanter.zil +++ b/enchanter.zil @@ -8,7 +8,7 @@ "> - + @@ -19,9 +19,6 @@ >> - - >> - )> @@ -30,10 +27,9 @@ - - - + + diff --git a/enchanter.zip b/enchanter.zip index abe20b2bacb2be65e66eb69e89077b0efc0ae279..749a4d945693ab8fb7423ce00c7547c0f7806fc4 100644 GIT binary patch delta 39911 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

YMf2 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 delta 38356 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 kW6k$t*ButSBy?8ln8g(MIg;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 diff --git a/gallery.zil b/gallery.zil index 38c390b..ab58fac 100644 --- a/gallery.zil +++ b/gallery.zil @@ -137,7 +137,7 @@ molesting adventurers in ZORK II." 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)> 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 diff --git a/gears.zil b/gears.zil index 063c124..65d2221 100644 --- a/gears.zil +++ b/gears.zil @@ -101,7 +101,7 @@ may be controlling the whole thing, for all you know." CR>)>> ) 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.">)> + - )> @@ -299,7 +300,6 @@ the rainbow.") (ACTION TURTLE-F)> >> + > > - +and clicks to you." CR>) + (ELSE + )> > > ) @@ -352,7 +356,7 @@ of bad feeling about it, like you get when you eat old seaweed.\"" CR>) )> +for a turtle, friend...\"" CR>)> ) ( >> diff --git a/globals.zap b/globals.zap new file mode 100644 index 0000000..a4c838a --- /dev/null +++ b/globals.zap @@ -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 diff --git a/globals.zil b/globals.zil index 480136d..ec986f0 100644 --- a/globals.zil +++ b/globals.zil @@ -7,6 +7,8 @@ without consulting MARC!" NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT> +> + "SUBTITLE GLOBAL OBJECTS" ) )>)>)> ;"Here is the default 'cant see any' printer" - + ) (T - + )> > @@ -530,7 +532,7 @@ I wouldn't drink the stuff." CR>) (T )> ) ( - + ) @@ -549,8 +551,8 @@ I wouldn't drink the stuff." CR>) )> - )>) + )> + )>) (.PRSO? <>>) (T diff --git a/gparser.zap b/gparser.zap new file mode 100644 index 0000000..eb642af --- /dev/null +++ b/gparser.zap @@ -0,0 +1,1680 @@ + + + .FUNCT PARSER,PTR=P-LEXSTART,WRD,VAL=0,VERB=0,OF-FLAG=0,OWINNER,OMERGED,LEN,DIR=0,NW=0,LW=0,CNT=-1,?TMP2,?TMP1 +?PRG1: IGRTR? 'CNT,P-ITBLLEN \?ELS5 + JUMP ?REP2 +?ELS5: ZERO? P-OFLAG \?CND8 + GET P-ITBL,CNT + PUT P-OTBL,CNT,STACK +?CND8: PUT P-ITBL,CNT,0 + JUMP ?PRG1 +?REP2: SET 'OWINNER,WINNER + SET 'OMERGED,P-MERGED + SET 'P-ADVERB,FALSE-VALUE + SET 'P-MERGED,FALSE-VALUE + SET 'P-END-ON-PREP,FALSE-VALUE + PUT P-PRSO,P-MATCHLEN,0 + PUT P-PRSI,P-MATCHLEN,0 + PUT P-BUTS,P-MATCHLEN,0 + ZERO? QUOTE-FLAG \?CND11 + EQUAL? WINNER,PLAYER /?CND11 + SET 'WINNER,PLAYER + CALL META-LOC,PLAYER >HERE + CALL LIT?,HERE >LIT +?CND11: ZERO? RESERVE-PTR /?ELS18 + SET 'PTR,RESERVE-PTR + CALL STUFF,RESERVE-LEXV,P-LEXV + ZERO? SUPER-BRIEF \?CND20 + EQUAL? PLAYER,WINNER \?CND20 + CRLF +?CND20: SET 'RESERVE-PTR,FALSE-VALUE + SET 'P-CONT,FALSE-VALUE + JUMP ?CND16 +?ELS18: ZERO? P-CONT /?ELS26 + SET 'PTR,P-CONT + ZERO? SUPER-BRIEF \?CND28 + EQUAL? PLAYER,WINNER \?CND28 + EQUAL? PRSA,V?SAY /?CND28 + CRLF +?CND28: SET 'P-CONT,FALSE-VALUE + JUMP ?CND16 +?ELS26: SET 'WINNER,PLAYER + SET 'QUOTE-FLAG,FALSE-VALUE + LOC WINNER + FSET? STACK,VEHBIT /?CND35 + LOC WINNER >HERE +?CND35: CALL LIT?,HERE >LIT + ZERO? SUPER-BRIEF \?CND38 + CRLF +?CND38: PRINTI ">" + READ P-INBUF,P-LEXV +?CND16: GETB P-LEXV,P-LEXWORDS >P-LEN + ZERO? P-LEN \?CND43 + PRINTI "I beg your pardon?" + CRLF + RFALSE +?CND43: GET P-LEXV,PTR >WRD + EQUAL? WRD,W?OOPS \?ELS50 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + EQUAL? STACK,W?PERIOD,W?COMMA \?CND51 + ADD PTR,P-LEXELEN >PTR + DEC 'P-LEN +?CND51: GRTR? P-LEN,1 /?ELS56 + PRINTI "I can't help your clumsiness." + CRLF + RFALSE +?ELS56: GET OOPS-TABLE,O-PTR + ZERO? STACK /?ELS60 + GRTR? P-LEN,2 \?ELS63 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + EQUAL? STACK,W?QUOTE \?ELS63 + PRINTI "Sorry, you can't correct mistakes in quoted text." + CRLF + RFALSE +?ELS63: GRTR? P-LEN,2 \?CND61 + PRINTI "Warning: only the first word after OOPS is used." + CRLF +?CND61: GET OOPS-TABLE,O-PTR >?TMP1 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + PUT AGAIN-LEXV,?TMP1,STACK + SET 'WINNER,OWINNER + MUL PTR,P-LEXELEN + ADD STACK,6 + GETB P-LEXV,STACK >?TMP2 + MUL PTR,P-LEXELEN + ADD STACK,7 + GETB P-LEXV,STACK >?TMP1 + GET OOPS-TABLE,O-PTR + MUL STACK,P-LEXELEN + ADD STACK,3 + CALL INBUF-ADD,?TMP2,?TMP1,STACK + CALL STUFF,AGAIN-LEXV,P-LEXV + GETB P-LEXV,P-LEXWORDS >P-LEN + GET OOPS-TABLE,O-START >PTR + CALL INBUF-STUFF,OOPS-INBUF,P-INBUF + JUMP ?CND48 +?ELS60: PUT OOPS-TABLE,O-END,FALSE-VALUE + PRINTI "There was no word to replace!" + CRLF + RFALSE +?ELS50: EQUAL? WRD,W?AGAIN,W?G /?CND78 + SET 'P-NUMBER,0 +?CND78: PUT OOPS-TABLE,O-END,FALSE-VALUE +?CND48: GET P-LEXV,PTR + EQUAL? STACK,W?AGAIN,W?G \?ELS83 + GETB OOPS-INBUF,1 + ZERO? STACK \?ELS86 + PRINTI "Beg pardon?" + CRLF + RFALSE +?ELS86: ZERO? P-OFLAG /?ELS90 + PRINTI "It's difficult to repeat fragments." + CRLF + RFALSE +?ELS90: ZERO? P-WON \?ELS95 + PRINTI "That would just repeat a mistake." + CRLF + RFALSE +?ELS95: GRTR? P-LEN,1 \?ELS99 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + EQUAL? STACK,W?PERIOD,W?COMMA,W?THEN /?THN103 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + EQUAL? STACK,W?AND \?ELS102 +?THN103: MUL 2,P-LEXELEN + ADD PTR,STACK >PTR + GETB P-LEXV,P-LEXWORDS + SUB STACK,2 + PUTB P-LEXV,P-LEXWORDS,STACK + JUMP ?CND84 +?ELS102: PRINTI "I couldn't understand that sentence." + CRLF + RFALSE +?ELS99: ADD PTR,P-LEXELEN >PTR + GETB P-LEXV,P-LEXWORDS + SUB STACK,1 + PUTB P-LEXV,P-LEXWORDS,STACK +?CND84: GETB P-LEXV,P-LEXWORDS + GRTR? STACK,0 \?ELS113 + CALL STUFF,P-LEXV,RESERVE-LEXV + SET 'RESERVE-PTR,PTR + JUMP ?CND111 +?ELS113: SET 'RESERVE-PTR,FALSE-VALUE +?CND111: SET 'WINNER,OWINNER + SET 'P-MERGED,OMERGED + CALL INBUF-STUFF,OOPS-INBUF,P-INBUF + CALL STUFF,AGAIN-LEXV,P-LEXV + SET 'CNT,-1 + SET 'DIR,AGAIN-DIR +?PRG116: IGRTR? 'CNT,P-ITBLLEN \?ELS120 + JUMP ?CND81 +?ELS120: GET P-OTBL,CNT + PUT P-ITBL,CNT,STACK + JUMP ?PRG116 +?ELS83: CALL STUFF,P-LEXV,AGAIN-LEXV + CALL INBUF-STUFF,P-INBUF,OOPS-INBUF + PUT OOPS-TABLE,O-START,PTR + MUL 4,P-LEN + PUT OOPS-TABLE,O-LENGTH,STACK + GETB P-LEXV,P-LEXWORDS + MUL P-LEXELEN,STACK + ADD PTR,STACK + MUL 2,STACK >LEN + SUB LEN,1 + GETB P-LEXV,STACK >?TMP1 + SUB LEN,2 + GETB P-LEXV,STACK + ADD ?TMP1,STACK + PUT OOPS-TABLE,O-END,STACK + SET 'RESERVE-PTR,FALSE-VALUE + SET 'LEN,P-LEN + SET 'P-DIR,FALSE-VALUE + SET 'P-NCN,0 + SET 'P-GETFLAGS,0 +?PRG125: DLESS? 'P-LEN,0 \?ELS129 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?CND81 +?ELS129: GET P-LEXV,PTR >WRD + ZERO? WRD \?THN132 + CALL NUMBER?,PTR >WRD + ZERO? WRD /?ELS131 +?THN132: ZERO? P-LEN \?ELS136 + SET 'NW,0 + JUMP ?CND134 +?ELS136: ADD PTR,P-LEXELEN + GET P-LEXV,STACK >NW +?CND134: EQUAL? WRD,W?TO \?ELS141 + EQUAL? VERB,ACT?TELL \?ELS141 + SET 'WRD,W?QUOTE + JUMP ?CND139 +?ELS141: EQUAL? WRD,W?THEN \?CND139 + GRTR? P-LEN,0 \?CND139 + ZERO? VERB \?CND139 + ZERO? QUOTE-FLAG \?CND139 + EQUAL? LW,0,W?PERIOD \?ELS150 + SET 'WRD,W?THE + JUMP ?CND139 +?ELS150: PUT P-ITBL,P-VERB,ACT?TELL + PUT P-ITBL,P-VERBN,0 + SET 'WRD,W?QUOTE +?CND139: EQUAL? WRD,W?THEN,W?PERIOD,W?QUOTE \?ELS155 + EQUAL? WRD,W?QUOTE \?CND156 + ZERO? QUOTE-FLAG /?ELS161 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?CND156 +?ELS161: SET 'QUOTE-FLAG,TRUE-VALUE +?CND156: ZERO? P-LEN /?THN165 + ADD PTR,P-LEXELEN >P-CONT +?THN165: PUTB P-LEXV,P-LEXWORDS,P-LEN + JUMP ?CND81 +?ELS155: CALL WT?,WRD,PS?DIRECTION,P1?DIRECTION >VAL + ZERO? VAL /?ELS168 + EQUAL? VERB,FALSE-VALUE,ACT?WALK,ACT?FLY \?ELS168 + EQUAL? LEN,1 /?THN171 + EQUAL? LEN,2 \?ELS174 + EQUAL? VERB,ACT?WALK /?THN171 +?ELS174: EQUAL? NW,W?THEN,W?PERIOD,W?QUOTE \?ELS176 + LESS? LEN,2 \?THN171 +?ELS176: ZERO? QUOTE-FLAG /?ELS178 + EQUAL? LEN,2 \?ELS178 + EQUAL? NW,W?QUOTE /?THN171 +?ELS178: GRTR? LEN,2 \?ELS168 + EQUAL? NW,W?COMMA,W?AND \?ELS168 +?THN171: SET 'DIR,VAL + EQUAL? NW,W?COMMA,W?AND \?CND181 + ADD PTR,P-LEXELEN + PUT P-LEXV,STACK,W?THEN +?CND181: GRTR? LEN,2 /?CND127 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?CND81 +?ELS168: CALL WT?,WRD,PS?VERB,P1?VERB >VAL + ZERO? VAL /?ELS188 + ZERO? VERB \?ELS188 + SET 'VERB,VAL + PUT P-ITBL,P-VERB,VAL + PUT P-ITBL,P-VERBN,P-VTBL + PUT P-VTBL,0,WRD + MUL PTR,2 + ADD STACK,2 >CNT + GETB P-LEXV,CNT + PUTB P-VTBL,2,STACK + ADD CNT,1 + GETB P-LEXV,STACK + PUTB P-VTBL,3,STACK + JUMP ?CND127 +?ELS188: CALL WT?,WRD,PS?PREPOSITION,0 >VAL + ZERO? VAL \?THN193 + EQUAL? WRD,W?ALL,W?ONE /?THN197 + CALL WT?,WRD,PS?ADJECTIVE + ZERO? STACK \?THN197 + CALL WT?,WRD,PS?OBJECT + ZERO? STACK /?ELS192 +?THN197: SET 'VAL,0 \?ELS192 +?THN193: GRTR? P-LEN,1 \?ELS201 + EQUAL? NW,W?OF \?ELS201 + ZERO? VAL \?ELS201 + EQUAL? WRD,W?ALL,W?ONE,W?A /?ELS201 + SET 'OF-FLAG,TRUE-VALUE + JUMP ?CND127 +?ELS201: ZERO? VAL /?ELS205 + ZERO? P-LEN /?THN208 + EQUAL? NW,W?THEN,W?PERIOD \?ELS205 +?THN208: SET 'P-END-ON-PREP,TRUE-VALUE + LESS? P-NCN,2 \?CND127 + PUT P-ITBL,P-PREP1,VAL + PUT P-ITBL,P-PREP1N,WRD + JUMP ?CND127 +?ELS205: EQUAL? P-NCN,2 \?ELS214 + PRINTI "There were too many nouns in that sentence." + CRLF + RFALSE +?ELS214: INC 'P-NCN + SET 'P-ACT,VERB + CALL CLAUSE,PTR,VAL,WRD >PTR + ZERO? PTR /FALSE + LESS? PTR,0 \?CND127 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?CND81 +?ELS192: EQUAL? WRD,W?OF \?ELS225 + ZERO? OF-FLAG /?THN229 + EQUAL? NW,W?PERIOD,W?THEN \?ELS228 +?THN229: CALL CANT-USE,PTR + RFALSE +?ELS228: SET 'OF-FLAG,FALSE-VALUE + JUMP ?CND127 +?ELS225: CALL WT?,WRD,PS?BUZZ-WORD + ZERO? STACK /?ELS234 + JUMP ?CND127 +?ELS234: EQUAL? VERB,ACT?TELL \?ELS236 + CALL WT?,WRD,PS?VERB,P1?VERB + ZERO? STACK /?ELS236 + EQUAL? WINNER,PLAYER \?ELS236 + PRINTI "Please consult your manual for the correct way to talk to other people or creatures." + CRLF + RFALSE +?ELS236: CALL CANT-USE,PTR + RFALSE +?ELS131: CALL UNKNOWN-WORD,PTR + RFALSE +?CND127: SET 'LW,WRD + ADD PTR,P-LEXELEN >PTR + JUMP ?PRG125 +?CND81: PUT OOPS-TABLE,O-PTR,FALSE-VALUE + ZERO? DIR /?ELS249 + SET 'PRSA,V?WALK + EQUAL? VERB,ACT?FLY \?ELS253 + SET 'TRY-FLY,TRUE-VALUE + JUMP ?CND251 +?ELS253: SET 'TRY-FLY,FALSE-VALUE +?CND251: SET 'PRSO,DIR + SET 'P-OFLAG,FALSE-VALUE + SET 'P-WALK-DIR,DIR + SET 'AGAIN-DIR,DIR + RETURN AGAIN-DIR +?ELS249: ZERO? P-OFLAG /?CND258 + CALL ORPHAN-MERGE +?CND258: SET 'P-WALK-DIR,FALSE-VALUE + SET 'AGAIN-DIR,FALSE-VALUE + CALL SYNTAX-CHECK + ZERO? STACK /FALSE + CALL SNARF-OBJECTS + ZERO? STACK /FALSE + CALL MANY-CHECK + ZERO? STACK /FALSE + CALL TAKE-CHECK + ZERO? STACK /FALSE + RTRUE + + + .FUNCT STUFF,SRC,DEST,MAX=29,PTR=P-LEXSTART,CTR=1,BPTR + GETB SRC,0 + PUTB DEST,0,STACK + GETB SRC,1 + PUTB DEST,1,STACK +?PRG1: GET SRC,PTR + PUT DEST,PTR,STACK + MUL PTR,2 + ADD STACK,2 >BPTR + GETB SRC,BPTR + PUTB DEST,BPTR,STACK + MUL PTR,2 + ADD STACK,3 >BPTR + GETB SRC,BPTR + PUTB DEST,BPTR,STACK + ADD PTR,P-LEXELEN >PTR + IGRTR? 'CTR,MAX \?PRG1 + RTRUE + + + .FUNCT INBUF-STUFF,SRC,DEST,CNT + GETB SRC,0 + SUB STACK,1 >CNT +?PRG1: GETB SRC,CNT + PUTB DEST,CNT,STACK + DLESS? 'CNT,0 \?PRG1 + RTRUE + + + .FUNCT INBUF-ADD,LEN,BEG,SLOT,DBEG,CTR=0,TMP,?TMP1 + GET OOPS-TABLE,O-END >TMP + ZERO? TMP /?ELS3 + SET 'DBEG,TMP + JUMP ?CND1 +?ELS3: GET OOPS-TABLE,O-LENGTH >TMP + GETB AGAIN-LEXV,TMP >?TMP1 + ADD TMP,1 + GETB AGAIN-LEXV,STACK + ADD ?TMP1,STACK >DBEG +?CND1: ADD DBEG,LEN + PUT OOPS-TABLE,O-END,STACK +?PRG6: ADD DBEG,CTR >?TMP1 + ADD BEG,CTR + GETB P-INBUF,STACK + PUTB OOPS-INBUF,?TMP1,STACK + INC 'CTR + EQUAL? CTR,LEN \?PRG6 + PUTB AGAIN-LEXV,SLOT,DBEG + SUB SLOT,1 + PUTB AGAIN-LEXV,STACK,LEN + RTRUE + + + .FUNCT WT?,PTR,BIT,B1=5,OFFS=P-P1OFF,TYP + GETB PTR,P-PSOFF >TYP + BTST TYP,BIT \FALSE + GRTR? B1,4 /TRUE + BAND TYP,P-P1BITS >TYP + EQUAL? TYP,B1 /?CND13 + INC 'OFFS +?CND13: GETB PTR,OFFS + RSTACK + + + .FUNCT CLAUSE,PTR,VAL,WRD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1 + SUB P-NCN,1 + MUL STACK,2 >OFF + ZERO? VAL /?ELS3 + ADD P-PREP1,OFF >NUM + PUT P-ITBL,NUM,VAL + ADD NUM,1 + PUT P-ITBL,STACK,WRD + ADD PTR,P-LEXELEN >PTR + JUMP ?CND1 +?ELS3: INC 'P-LEN +?CND1: ZERO? P-LEN \?CND6 + DEC 'P-NCN + RETURN -1 +?CND6: ADD P-NC1,OFF >NUM + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,NUM,STACK + GET P-LEXV,PTR + EQUAL? STACK,W?THE,W?A,W?AN \?CND9 + GET P-ITBL,NUM + ADD STACK,4 + PUT P-ITBL,NUM,STACK +?CND9: +?PRG12: DLESS? 'P-LEN,0 \?CND14 + ADD NUM,1 >?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + RETURN -1 +?CND14: GET P-LEXV,PTR >WRD + ZERO? WRD \?THN20 + CALL NUMBER?,PTR >WRD + ZERO? WRD /?ELS19 +?THN20: ZERO? P-LEN \?ELS24 + SET 'NW,0 + JUMP ?CND22 +?ELS24: ADD PTR,P-LEXELEN + GET P-LEXV,STACK >NW +?CND22: EQUAL? WRD,W?AND,W?COMMA \?ELS29 + SET 'ANDFLG,TRUE-VALUE + JUMP ?CND17 +?ELS29: EQUAL? WRD,W?ALL,W?ONE \?ELS31 + EQUAL? NW,W?OF \?CND17 + DEC 'P-LEN + ADD PTR,P-LEXELEN >PTR + JUMP ?CND17 +?ELS31: EQUAL? WRD,W?THEN,W?PERIOD /?THN37 + CALL WT?,WRD,PS?PREPOSITION + ZERO? STACK /?ELS36 + GET P-ITBL,P-VERB + ZERO? STACK /?ELS36 + ZERO? FIRST?? \?ELS36 +?THN37: INC 'P-LEN + ADD NUM,1 >?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + SUB PTR,P-LEXELEN + RSTACK +?ELS36: CALL WT?,WRD,PS?OBJECT + ZERO? STACK /?ELS42 + GRTR? P-LEN,0 \?ELS45 + EQUAL? NW,W?OF \?ELS45 + EQUAL? WRD,W?ALL,W?ONE /?ELS45 + JUMP ?CND17 +?ELS45: CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE + ZERO? STACK /?ELS49 + ZERO? NW /?ELS49 + CALL WT?,NW,PS?OBJECT + ZERO? STACK /?ELS49 + JUMP ?CND17 +?ELS49: ZERO? ANDFLG \?ELS53 + EQUAL? NW,W?BUT,W?EXCEPT /?ELS53 + EQUAL? NW,W?AND,W?COMMA /?ELS53 + ADD NUM,1 >?TMP1 + ADD PTR,2 + MUL STACK,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + RETURN PTR +?ELS53: SET 'ANDFLG,FALSE-VALUE + JUMP ?CND17 +?ELS42: ZERO? P-MERGED \?THN62 + ZERO? P-OFLAG \?THN62 + GET P-ITBL,P-VERB + ZERO? STACK /?ELS59 +?THN62: CALL WT?,WRD,PS?ADJECTIVE + ZERO? STACK \?CND17 + CALL WT?,WRD,PS?BUZZ-WORD + ZERO? STACK /?ELS59 + JUMP ?CND17 +?ELS59: ZERO? ANDFLG /?ELS67 + CALL WT?,WRD,PS?DIRECTION + ZERO? STACK \?THN70 + CALL WT?,WRD,PS?VERB + ZERO? STACK /?ELS67 +?THN70: SUB PTR,4 >PTR + ADD PTR,2 + PUT P-LEXV,STACK,W?THEN + ADD P-LEN,2 >P-LEN + JUMP ?CND17 +?ELS67: CALL WT?,WRD,PS?PREPOSITION + ZERO? STACK /?ELS73 + JUMP ?CND17 +?ELS73: CALL CANT-USE,PTR + RFALSE +?ELS19: CALL UNKNOWN-WORD,PTR + RFALSE +?CND17: SET 'LW,WRD + SET 'FIRST??,FALSE-VALUE + ADD PTR,P-LEXELEN >PTR + JUMP ?PRG12 + + + .FUNCT NUMBER?,PTR,CNT,BPTR,CHR,SUM=0,TIM=0,?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + GETB STACK,2 >CNT + MUL PTR,2 + ADD P-LEXV,STACK + GETB STACK,3 >BPTR +?PRG1: DLESS? 'CNT,0 \?ELS5 + JUMP ?REP2 +?ELS5: GETB P-INBUF,BPTR >CHR + EQUAL? CHR,58 \?ELS10 + SET 'TIM,SUM + SET 'SUM,0 + JUMP ?CND8 +?ELS10: GRTR? SUM,10000 /FALSE + LESS? CHR,58 \FALSE + GRTR? CHR,47 \FALSE + MUL SUM,10 >?TMP1 + SUB CHR,48 + ADD ?TMP1,STACK >SUM +?CND8: INC 'BPTR + JUMP ?PRG1 +?REP2: PUT P-LEXV,PTR,W?INTNUM + GRTR? SUM,1000 /FALSE + ZERO? TIM /?CND19 + LESS? TIM,8 \?ELS27 + ADD TIM,12 >TIM + JUMP ?CND25 +?ELS27: GRTR? TIM,23 /FALSE +?CND25: MUL TIM,60 + ADD SUM,STACK >SUM +?CND19: SET 'P-NUMBER,SUM + RETURN W?INTNUM + + + .FUNCT ORPHAN-MERGE,CNT=-1,TEMP,VERB,BEG,END,ADJ=0,WRD,?TMP1 + SET 'P-OFLAG,FALSE-VALUE + GET P-ITBL,P-VERBN + GET STACK,0 >WRD + CALL WT?,WRD,PS?VERB,P1?VERB >?TMP1 + GET P-OTBL,P-VERB + EQUAL? ?TMP1,STACK /?THN4 + CALL WT?,WRD,PS?ADJECTIVE + ZERO? STACK /?ELS3 +?THN4: SET 'ADJ,TRUE-VALUE + JUMP ?CND1 +?ELS3: CALL WT?,WRD,PS?OBJECT,P1?OBJECT + ZERO? STACK /?CND1 + ZERO? P-NCN \?CND1 + PUT P-ITBL,P-VERB,0 + PUT P-ITBL,P-VERBN,0 + ADD P-LEXV,2 + PUT P-ITBL,P-NC1,STACK + ADD P-LEXV,6 + PUT P-ITBL,P-NC1L,STACK + SET 'P-NCN,1 +?CND1: GET P-ITBL,P-VERB >VERB + ZERO? VERB /?ELS12 + ZERO? ADJ \?ELS12 + GET P-OTBL,P-VERB + EQUAL? VERB,STACK \FALSE +?ELS12: EQUAL? P-NCN,2 /FALSE + GET P-OTBL,P-NC1 + EQUAL? STACK,1 \?ELS18 + GET P-ITBL,P-PREP1 >TEMP + GET P-OTBL,P-PREP1 + EQUAL? TEMP,STACK /?THN22 + ZERO? TEMP \FALSE +?THN22: ZERO? ADJ /?ELS26 + ADD P-LEXV,2 + PUT P-OTBL,P-NC1,STACK + GET P-ITBL,P-NC1L + ZERO? STACK \?CND28 + ADD P-LEXV,6 + PUT P-ITBL,P-NC1L,STACK +?CND28: ZERO? P-NCN \?CND24 + SET 'P-NCN,1 + JUMP ?CND24 +?ELS26: GET P-ITBL,P-NC1 + PUT P-OTBL,P-NC1,STACK +?CND24: GET P-ITBL,P-NC1L + PUT P-OTBL,P-NC1L,STACK + JUMP ?CND10 +?ELS18: GET P-OTBL,P-NC2 + EQUAL? STACK,1 \?ELS39 + GET P-ITBL,P-PREP1 >TEMP + GET P-OTBL,P-PREP2 + EQUAL? TEMP,STACK /?THN43 + ZERO? TEMP \FALSE +?THN43: ZERO? ADJ /?CND45 + ADD P-LEXV,2 + PUT P-ITBL,P-NC1,STACK + GET P-ITBL,P-NC1L + ZERO? STACK \?CND45 + ADD P-LEXV,6 + PUT P-ITBL,P-NC1L,STACK +?CND45: GET P-ITBL,P-NC1 + PUT P-OTBL,P-NC2,STACK + GET P-ITBL,P-NC1L + PUT P-OTBL,P-NC2L,STACK + SET 'P-NCN,2 + JUMP ?CND10 +?ELS39: ZERO? P-ACLAUSE /?CND10 + EQUAL? P-NCN,1 /?ELS58 + ZERO? ADJ \?ELS58 + SET 'P-ACLAUSE,FALSE-VALUE + RFALSE +?ELS58: GET P-ITBL,P-NC1 >BEG + ZERO? ADJ /?CND63 + ADD P-LEXV,2 >BEG + SET 'ADJ,FALSE-VALUE +?CND63: GET P-ITBL,P-NC1L >END +?PRG67: GET BEG,0 >WRD + EQUAL? BEG,END \?ELS71 + ZERO? ADJ /?ELS74 + CALL ACLAUSE-WIN,ADJ + JUMP ?CND56 +?ELS74: SET 'P-ACLAUSE,FALSE-VALUE + RFALSE +?ELS71: ZERO? ADJ \?ELS79 + GETB WRD,P-PSOFF + BTST STACK,PS?ADJECTIVE /?THN82 + EQUAL? WRD,W?ALL,W?ONE \?ELS79 +?THN82: SET 'ADJ,WRD + JUMP ?CND69 +?ELS79: EQUAL? WRD,W?ONE \?ELS85 + CALL ACLAUSE-WIN,ADJ + JUMP ?CND56 +?ELS85: GETB WRD,P-PSOFF + BTST STACK,PS?OBJECT \?CND69 + EQUAL? WRD,P-ANAM \?ELS90 + CALL ACLAUSE-WIN,ADJ + JUMP ?CND10 +?ELS90: CALL NCLAUSE-WIN + JUMP ?CND10 +?CND69: ADD BEG,P-WORDLEN >BEG + ZERO? END \?PRG67 + SET 'END,BEG + SET 'P-NCN,1 + SUB BEG,4 + PUT P-ITBL,P-NC1,STACK + PUT P-ITBL,P-NC1L,BEG + JUMP ?PRG67 +?CND56: +?CND10: GET P-OVTBL,0 + PUT P-VTBL,0,STACK + GETB P-OVTBL,2 + PUTB P-VTBL,2,STACK + GETB P-OVTBL,3 + PUTB P-VTBL,3,STACK + PUT P-OTBL,P-VERBN,P-VTBL + PUTB P-VTBL,2,0 +?PRG96: IGRTR? 'CNT,P-ITBLLEN \?ELS100 + SET 'P-MERGED,TRUE-VALUE + RTRUE +?ELS100: GET P-OTBL,CNT + PUT P-ITBL,CNT,STACK + JUMP ?PRG96 + + + .FUNCT ACLAUSE-WIN,ADJ + GET P-OTBL,P-VERB + PUT P-ITBL,P-VERB,STACK + PUT P-CCTBL,CC-SBPTR,P-ACLAUSE + ADD P-ACLAUSE,1 + PUT P-CCTBL,CC-SEPTR,STACK + PUT P-CCTBL,CC-DBPTR,P-ACLAUSE + ADD P-ACLAUSE,1 + PUT P-CCTBL,CC-DEPTR,STACK + CALL CLAUSE-COPY,P-OTBL,P-OTBL,ADJ + GET P-OTBL,P-NC2 + ZERO? STACK /?ELS2 + SET 'P-NCN,2 +?ELS2: SET 'P-ACLAUSE,FALSE-VALUE + RTRUE + + + .FUNCT NCLAUSE-WIN + PUT P-CCTBL,CC-SBPTR,P-NC1 + PUT P-CCTBL,CC-SEPTR,P-NC1L + PUT P-CCTBL,CC-DBPTR,P-ACLAUSE + ADD P-ACLAUSE,1 + PUT P-CCTBL,CC-DEPTR,STACK + CALL CLAUSE-COPY,P-ITBL,P-OTBL + GET P-OTBL,P-NC2 + ZERO? STACK /?ELS2 + SET 'P-NCN,2 +?ELS2: SET 'P-ACLAUSE,FALSE-VALUE + RTRUE + + + .FUNCT WORD-PRINT,CNT,BUF +?PRG1: DLESS? 'CNT,0 /TRUE + GETB P-INBUF,BUF + PRINTC STACK + INC 'BUF + JUMP ?PRG1 + + + .FUNCT UNKNOWN-WORD,PTR,BUF,?TMP1 + PUT OOPS-TABLE,O-PTR,PTR + EQUAL? PRSA,V?SAY \?CND1 + PRINTI "Nothing happens." + CRLF + RFALSE +?CND1: PRINTI "I don't know the word """ + MUL PTR,2 >BUF + ADD P-LEXV,BUF + GETB STACK,2 >?TMP1 + ADD P-LEXV,BUF + GETB STACK,3 + CALL WORD-PRINT,?TMP1,STACK + PRINTI """." + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-OFLAG,FALSE-VALUE + RETURN P-OFLAG + + + .FUNCT CANT-USE,PTR,BUF,?TMP1 + EQUAL? PRSA,V?SAY \?CND1 + PRINTI "Nothing happens." + CRLF + RFALSE +?CND1: PRINTI "You used the word """ + MUL PTR,2 >BUF + ADD P-LEXV,BUF + GETB STACK,2 >?TMP1 + ADD P-LEXV,BUF + GETB STACK,3 + CALL WORD-PRINT,?TMP1,STACK + PRINTI """ in a way that I don't understand." + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-OFLAG,FALSE-VALUE + RETURN P-OFLAG + + + .FUNCT SYNTAX-CHECK,SYN,LEN,NUM,OBJ,DRIVE1=0,DRIVE2=0,PREP,VERB,TMP,?TMP2,?TMP1 + GET P-ITBL,P-VERB >VERB + ZERO? VERB \?CND1 + PRINTI "There was no verb in that sentence!" + CRLF + RFALSE +?CND1: SUB 255,VERB + GET VERBS,STACK >SYN + GETB SYN,0 >LEN + INC 'SYN +?PRG6: GETB SYN,P-SBITS + BAND STACK,P-SONUMS >NUM + GRTR? P-NCN,NUM \?ELS10 + JUMP ?CND8 +?ELS10: LESS? NUM,1 /?ELS12 + ZERO? P-NCN \?ELS12 + GET P-ITBL,P-PREP1 >PREP + ZERO? PREP /?THN15 + GETB SYN,P-SPREP1 + EQUAL? PREP,STACK \?ELS12 +?THN15: SET 'DRIVE1,SYN + JUMP ?CND8 +?ELS12: GETB SYN,P-SPREP1 >?TMP1 + GET P-ITBL,P-PREP1 + EQUAL? ?TMP1,STACK \?CND8 + EQUAL? NUM,2 \?ELS21 + EQUAL? P-NCN,1 \?ELS21 + SET 'DRIVE2,SYN + JUMP ?CND8 +?ELS21: GETB SYN,P-SPREP2 >?TMP1 + GET P-ITBL,P-PREP2 + EQUAL? ?TMP1,STACK \?CND8 + CALL SYNTAX-FOUND,SYN + RTRUE +?CND8: DLESS? 'LEN,1 \?ELS28 + ZERO? DRIVE1 \?REP7 + ZERO? DRIVE2 /?ELS31 + JUMP ?REP7 +?ELS31: PRINTI "That sentence isn't one I recognize." + CRLF + RFALSE +?ELS28: ADD SYN,P-SYNLEN >SYN + JUMP ?PRG6 +?REP7: ZERO? DRIVE1 /?ELS44 + GETB DRIVE1,P-SFWIM1 >?TMP2 + GETB DRIVE1,P-SLOC1 >?TMP1 + GETB DRIVE1,P-SPREP1 + CALL GWIM,?TMP2,?TMP1,STACK >OBJ + ZERO? OBJ /?ELS44 + PUT P-PRSO,P-MATCHLEN,1 + PUT P-PRSO,1,OBJ + CALL SYNTAX-FOUND,DRIVE1 + RSTACK +?ELS44: ZERO? DRIVE2 /?ELS48 + GETB DRIVE2,P-SFWIM2 >?TMP2 + GETB DRIVE2,P-SLOC2 >?TMP1 + GETB DRIVE2,P-SPREP2 + CALL GWIM,?TMP2,?TMP1,STACK >OBJ + ZERO? OBJ /?ELS48 + PUT P-PRSI,P-MATCHLEN,1 + PUT P-PRSI,1,OBJ + CALL SYNTAX-FOUND,DRIVE2 + RSTACK +?ELS48: EQUAL? VERB,ACT?FIND \?ELS52 + PRINTI "That question can't be answered." + CRLF + RFALSE +?ELS52: EQUAL? WINNER,PLAYER /?ELS56 + CALL CANT-ORPHAN + RSTACK +?ELS56: CALL ORPHAN,DRIVE1,DRIVE2 + PRINTI "What do you want to " + GET P-OTBL,P-VERBN >TMP + ZERO? TMP \?ELS63 + PRINTI "tell" + JUMP ?CND61 +?ELS63: GETB P-VTBL,2 + ZERO? STACK \?ELS67 + GET TMP,0 + PRINTB STACK + JUMP ?CND61 +?ELS67: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK + PUTB P-VTBL,2,0 +?CND61: ZERO? DRIVE2 /?CND70 + PRINTI " " + CALL THING-PRINT,TRUE-VALUE,TRUE-VALUE +?CND70: SET 'P-OFLAG,TRUE-VALUE + ZERO? DRIVE1 /?ELS80 + GETB DRIVE1,P-SPREP1 + JUMP ?CND76 +?ELS80: GETB DRIVE2,P-SPREP2 +?CND76: CALL PREP-PRINT,STACK + PRINTI "?" + CRLF + RFALSE + + + .FUNCT CANT-ORPHAN + PRINTI """I don't understand! What are you referring to?""" + CRLF + RFALSE + + + .FUNCT ORPHAN,D1,D2,CNT=-1 + ZERO? P-MERGED \?CND1 + PUT P-OCLAUSE,P-MATCHLEN,0 +?CND1: GET P-VTBL,0 + PUT P-OVTBL,0,STACK + GETB P-VTBL,2 + PUTB P-OVTBL,2,STACK + GETB P-VTBL,3 + PUTB P-OVTBL,3,STACK +?PRG4: IGRTR? 'CNT,P-ITBLLEN \?ELS8 + JUMP ?REP5 +?ELS8: GET P-ITBL,CNT + PUT P-OTBL,CNT,STACK + JUMP ?PRG4 +?REP5: EQUAL? P-NCN,2 \?CND11 + PUT P-CCTBL,CC-SBPTR,P-NC2 + PUT P-CCTBL,CC-SEPTR,P-NC2L + PUT P-CCTBL,CC-DBPTR,P-NC2 + PUT P-CCTBL,CC-DEPTR,P-NC2L + CALL CLAUSE-COPY,P-ITBL,P-OTBL +?CND11: LESS? P-NCN,1 /?CND14 + PUT P-CCTBL,CC-SBPTR,P-NC1 + PUT P-CCTBL,CC-SEPTR,P-NC1L + PUT P-CCTBL,CC-DBPTR,P-NC1 + PUT P-CCTBL,CC-DEPTR,P-NC1L + CALL CLAUSE-COPY,P-ITBL,P-OTBL +?CND14: ZERO? D1 /?ELS21 + GETB D1,P-SPREP1 + PUT P-OTBL,P-PREP1,STACK + PUT P-OTBL,P-NC1,1 + RTRUE +?ELS21: ZERO? D2 /FALSE + GETB D2,P-SPREP2 + PUT P-OTBL,P-PREP2,STACK + PUT P-OTBL,P-NC2,1 + RTRUE + + + .FUNCT THING-PRINT,PRSO?,THE?=0,BEG,END + ZERO? PRSO? /?ELS3 + GET P-ITBL,P-NC1 >BEG + GET P-ITBL,P-NC1L >END + JUMP ?CND1 +?ELS3: GET P-ITBL,P-NC2 >BEG + GET P-ITBL,P-NC2L >END +?CND1: CALL BUFFER-PRINT,BEG,END,THE? + RSTACK + + + .FUNCT BUFFER-PRINT,BEG,END,CP,NOSP=1,WRD,FIRST??=1,PN=0,Q?=0,?TMP1 +?PRG1: EQUAL? BEG,END /TRUE + GET BEG,0 >WRD + EQUAL? WRD,W?COMMA \?ELS10 + PRINTI ", " + JUMP ?CND8 +?ELS10: ZERO? NOSP /?ELS14 + SET 'NOSP,FALSE-VALUE + JUMP ?CND8 +?ELS14: PRINTI " " +?CND8: EQUAL? WRD,W?PERIOD,W?COMMA \?ELS22 + SET 'NOSP,TRUE-VALUE + JUMP ?CND3 +?ELS22: EQUAL? WRD,W?ME \?ELS24 + PRINTD ME + SET 'PN,TRUE-VALUE + JUMP ?CND3 +?ELS24: EQUAL? WRD,W?INTNUM \?ELS26 + PRINTN P-NUMBER + SET 'PN,TRUE-VALUE + JUMP ?CND3 +?ELS26: ZERO? FIRST?? /?CND29 + ZERO? PN \?CND29 + ZERO? CP /?CND29 + PRINTI "the " +?CND29: ZERO? P-OFLAG \?THN39 + ZERO? P-MERGED /?ELS38 +?THN39: PRINTB WRD + JUMP ?CND36 +?ELS38: EQUAL? WRD,W?IT \?ELS42 + CALL ACCESSIBLE?,P-IT-OBJECT + ZERO? STACK /?ELS42 + PRINTD P-IT-OBJECT + JUMP ?CND36 +?ELS42: GETB BEG,2 >?TMP1 + GETB BEG,3 + CALL WORD-PRINT,?TMP1,STACK +?CND36: SET 'FIRST??,FALSE-VALUE +?CND3: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT PREP-PRINT,PREP,WRD + ZERO? PREP /FALSE + PRINTI " " + CALL PREP-FIND,PREP >WRD + PRINTB WRD + RTRUE + + + .FUNCT CLAUSE-COPY,SRC,DEST,INSRT=0,BEG,END,?TMP1 + GET P-CCTBL,CC-SBPTR + GET SRC,STACK >BEG + GET P-CCTBL,CC-SEPTR + GET SRC,STACK >END + GET P-CCTBL,CC-DBPTR >?TMP1 + GET P-OCLAUSE,P-MATCHLEN + MUL STACK,P-LEXELEN + ADD STACK,2 + ADD P-OCLAUSE,STACK + PUT DEST,?TMP1,STACK +?PRG1: EQUAL? BEG,END \?ELS5 + GET P-CCTBL,CC-DEPTR >?TMP1 + GET P-OCLAUSE,P-MATCHLEN + MUL STACK,P-LEXELEN + ADD STACK,2 + ADD P-OCLAUSE,STACK + PUT DEST,?TMP1,STACK + RTRUE +?ELS5: ZERO? INSRT /?CND8 + GET BEG,0 + EQUAL? P-ANAM,STACK \?CND8 + CALL CLAUSE-ADD,INSRT +?CND8: GET BEG,0 + CALL CLAUSE-ADD,STACK +?CND3: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT CLAUSE-ADD,WRD,PTR + GET P-OCLAUSE,P-MATCHLEN + ADD STACK,2 >PTR + SUB PTR,1 + PUT P-OCLAUSE,STACK,WRD + PUT P-OCLAUSE,PTR,0 + PUT P-OCLAUSE,P-MATCHLEN,PTR + RTRUE + + + .FUNCT PREP-FIND,PREP,CNT=0,SIZE + GET PREPOSITIONS,0 + MUL STACK,2 >SIZE +?PRG1: IGRTR? 'CNT,SIZE /FALSE + GET PREPOSITIONS,CNT + EQUAL? STACK,PREP \?PRG1 + SUB CNT,1 + GET PREPOSITIONS,STACK + RSTACK + + + .FUNCT SYNTAX-FOUND,SYN + SET 'P-SYNTAX,SYN + GETB SYN,P-SACTION >PRSA + RETURN PRSA + + + .FUNCT GWIM,GBIT,LBIT,PREP,OBJ + EQUAL? GBIT,RLANDBIT \?CND1 + RETURN ROOMS +?CND1: SET 'P-GWIMBIT,GBIT + SET 'P-SLOCBITS,LBIT + PUT P-MERGE,P-MATCHLEN,0 + CALL GET-OBJECT,P-MERGE,FALSE-VALUE + ZERO? STACK /?ELS8 + SET 'P-GWIMBIT,0 + GET P-MERGE,P-MATCHLEN + EQUAL? STACK,1 \FALSE + GET P-MERGE,1 >OBJ + PRINTI "(" + ZERO? PREP /?ELS18 + ZERO? P-END-ON-PREP \?ELS18 + CALL PREP-FIND,PREP >PREP + PRINTB PREP + EQUAL? PREP,W?OUT \?CND21 + PRINTI " of" +?CND21: PRINTI " " + EQUAL? OBJ,HANDS \?ELS30 + PRINTI "your hands" + JUMP ?CND28 +?ELS30: PRINTI "the " + PRINTD OBJ +?CND28: PRINTI ")" + CRLF + RETURN OBJ +?ELS18: PRINTD OBJ + PRINTI ")" + CRLF + RETURN OBJ +?ELS8: SET 'P-GWIMBIT,0 + RFALSE + + + .FUNCT SNARF-OBJECTS,OPTR,IPTR,L + PUT P-BUTS,P-MATCHLEN,0 + GET P-ITBL,P-NC2 >IPTR + ZERO? IPTR /?CND1 + GETB P-SYNTAX,P-SLOC2 >P-SLOCBITS + GET P-ITBL,P-NC2L + CALL SNARFEM,IPTR,STACK,P-PRSI + ZERO? STACK /FALSE +?CND1: GET P-ITBL,P-NC1 >OPTR + ZERO? OPTR /?CND6 + GETB P-SYNTAX,P-SLOC1 >P-SLOCBITS + GET P-ITBL,P-NC1L + CALL SNARFEM,OPTR,STACK,P-PRSO + ZERO? STACK /FALSE +?CND6: GET P-BUTS,P-MATCHLEN + ZERO? STACK /TRUE + GET P-PRSO,P-MATCHLEN >L + ZERO? OPTR /?CND14 + CALL BUT-MERGE,P-PRSO >P-PRSO +?CND14: ZERO? IPTR /TRUE + ZERO? OPTR /?THN23 + GET P-PRSO,P-MATCHLEN + EQUAL? L,STACK \TRUE +?THN23: CALL BUT-MERGE,P-PRSI >P-PRSI + RTRUE + + + .FUNCT BUT-MERGE,TBL,LEN,BUTLEN,CNT=1,MATCHES=0,OBJ,NTBL + GET TBL,P-MATCHLEN >LEN + PUT P-MERGE,P-MATCHLEN,0 +?PRG1: DLESS? 'LEN,0 \?ELS5 + JUMP ?REP2 +?ELS5: GET TBL,CNT >OBJ + CALL ZMEMQ,OBJ,P-BUTS + ZERO? STACK /?ELS7 + JUMP ?CND3 +?ELS7: ADD MATCHES,1 + PUT P-MERGE,STACK,OBJ + INC 'MATCHES +?CND3: INC 'CNT + JUMP ?PRG1 +?REP2: PUT P-MERGE,P-MATCHLEN,MATCHES + SET 'NTBL,P-MERGE + SET 'P-MERGE,TBL + RETURN NTBL + + + .FUNCT SNARFEM,PTR,EPTR,TBL,BUT=0,LEN,WV,WRD,NW,WAS-ALL=0 + SET 'P-AND,FALSE-VALUE + EQUAL? P-GETFLAGS,P-ALL \?CND1 + SET 'WAS-ALL,TRUE-VALUE +?CND1: SET 'P-GETFLAGS,0 + PUT TBL,P-MATCHLEN,0 + GET PTR,0 >WRD +?PRG4: EQUAL? PTR,EPTR \?ELS8 + ZERO? BUT /?ORP12 + PUSH BUT + JUMP ?THN9 +?ORP12: PUSH TBL +?THN9: CALL GET-OBJECT,STACK >WV + ZERO? WAS-ALL /?CND13 + SET 'P-GETFLAGS,P-ALL +?CND13: RETURN WV +?ELS8: ADD PTR,P-WORDLEN + EQUAL? EPTR,STACK \?ELS21 + SET 'NW,0 + JUMP ?CND19 +?ELS21: GET PTR,P-LEXELEN >NW +?CND19: EQUAL? WRD,W?ALL \?ELS26 + SET 'P-GETFLAGS,P-ALL + EQUAL? NW,W?OF \?CND24 + ADD PTR,P-WORDLEN >PTR + JUMP ?CND24 +?ELS26: EQUAL? WRD,W?BUT,W?EXCEPT \?ELS31 + ZERO? BUT /?ORP37 + PUSH BUT + JUMP ?THN34 +?ORP37: PUSH TBL +?THN34: CALL GET-OBJECT,STACK + ZERO? STACK /FALSE + SET 'BUT,P-BUTS + PUT BUT,P-MATCHLEN,0 + JUMP ?CND6 +?ELS31: EQUAL? WRD,W?A,W?ONE \?ELS39 + ZERO? P-ADJ \?ELS42 + SET 'P-GETFLAGS,P-ONE + EQUAL? NW,W?OF \?CND6 + ADD PTR,P-WORDLEN >PTR + JUMP ?CND6 +?ELS42: SET 'P-NAM,P-ONEOBJ + ZERO? BUT /?ORP53 + PUSH BUT + JUMP ?THN50 +?ORP53: PUSH TBL +?THN50: CALL GET-OBJECT,STACK + ZERO? STACK /FALSE + ZERO? NW /TRUE + JUMP ?CND6 +?ELS39: EQUAL? WRD,W?AND,W?COMMA \?ELS57 + EQUAL? NW,W?AND,W?COMMA /?ELS57 + SET 'P-AND,TRUE-VALUE + ZERO? BUT /?ORP65 + PUSH BUT + JUMP ?THN62 +?ORP65: PUSH TBL +?THN62: CALL GET-OBJECT,STACK + ZERO? STACK \?CND24 + RFALSE +?ELS57: CALL WT?,WRD,PS?BUZZ-WORD + ZERO? STACK /?ELS67 + JUMP ?CND6 +?ELS67: EQUAL? WRD,W?AND,W?COMMA \?ELS69 + JUMP ?CND6 +?ELS69: EQUAL? WRD,W?OF \?ELS71 + ZERO? P-GETFLAGS \?CND24 + SET 'P-GETFLAGS,P-INHIBIT + JUMP ?CND24 +?ELS71: CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE >WV + ZERO? WV /?ELS76 + ZERO? P-ADJ \?ELS76 + SET 'P-ADJ,WV + SET 'P-ADJN,WRD + JUMP ?CND6 +?ELS76: CALL WT?,WRD,PS?OBJECT,P1?OBJECT + ZERO? STACK /?CND6 + SET 'P-NAM,WRD + SET 'P-ONEOBJ,WRD +?CND24: +?CND6: EQUAL? PTR,EPTR /?PRG4 + ADD PTR,P-WORDLEN >PTR + SET 'WRD,NW + JUMP ?PRG4 + + + .FUNCT GET-OBJECT,TBL,VRB=1,BITS,LEN,XBITS,TLEN,GCHECK=0,OLEN=0,OBJ + SET 'XBITS,P-SLOCBITS + GET TBL,P-MATCHLEN >TLEN + BTST P-GETFLAGS,P-INHIBIT /TRUE + ZERO? P-NAM \?CND4 + ZERO? P-ADJ /?CND4 + CALL WT?,P-ADJN,PS?OBJECT,P1?OBJECT + ZERO? STACK /?ELS11 + SET 'P-NAM,P-ADJN + SET 'P-ADJ,FALSE-VALUE + JUMP ?CND4 +?ELS11: CALL NULL-F + ZERO? STACK /?CND4 +?CND4: ZERO? P-NAM \?CND14 + ZERO? P-ADJ \?CND14 + EQUAL? P-GETFLAGS,P-ALL /?CND14 + ZERO? P-GWIMBIT \?CND14 + ZERO? VRB /FALSE + PRINTI "There seems to be a noun missing in that sentence!" + CRLF + RFALSE +?CND14: EQUAL? P-GETFLAGS,P-ALL \?THN28 + ZERO? P-SLOCBITS \?CND25 +?THN28: SET 'P-SLOCBITS,-1 +?CND25: SET 'P-TABLE,TBL +?PRG30: ZERO? GCHECK /?ELS34 + CALL GLOBAL-CHECK,TBL + JUMP ?CND32 +?ELS34: ZERO? LIT /?CND38 + FCLEAR PLAYER,TRANSBIT + CALL DO-SL,HERE,SOG,SIR + FSET PLAYER,TRANSBIT +?CND38: CALL DO-SL,PLAYER,SH,SC + GET TBL,0 + EQUAL? STACK,TLEN \?CND32 + ZERO? P-ADJ /?CND45 + EQUAL? P-NAM,W?SPELL,FALSE-VALUE \?CND45 + SET 'P-NAM,P-ADJN +?CND45: CALL SPELL-CHECK,TBL,P-NAM +?CND32: GET TBL,P-MATCHLEN + SUB STACK,TLEN >LEN + BTST P-GETFLAGS,P-ALL \?ELS52 + JUMP ?CND50 +?ELS52: BTST P-GETFLAGS,P-ONE \?ELS54 + ZERO? LEN /?ELS54 + EQUAL? LEN,1 /?CND57 + RANDOM LEN + GET TBL,STACK + PUT TBL,1,STACK + PRINTI "(How about the " + GET TBL,1 + PRINTD STACK + PRINTI "?)" + CRLF +?CND57: PUT TBL,P-MATCHLEN,1 + JUMP ?CND50 +?ELS54: GRTR? LEN,1 /?THN66 + ZERO? LEN \?CND50 + EQUAL? P-SLOCBITS,-1 /?CND50 +?THN66: EQUAL? P-SLOCBITS,-1 \?ELS72 + SET 'P-SLOCBITS,XBITS + SET 'OLEN,LEN + GET TBL,P-MATCHLEN + SUB STACK,LEN + PUT TBL,P-MATCHLEN,STACK + JUMP ?PRG30 +?ELS72: ZERO? LEN \?CND75 + SET 'LEN,OLEN +?CND75: EQUAL? WINNER,PLAYER /?ELS80 + CALL CANT-ORPHAN + RFALSE +?ELS80: ZERO? VRB /?ELS82 + ZERO? P-NAM /?ELS82 + CALL WHICH-PRINT,TLEN,LEN,TBL + EQUAL? TBL,P-PRSO \?ELS89 + PUSH P-NC1 + JUMP ?CND85 +?ELS89: PUSH P-NC2 +?CND85: SET 'P-ACLAUSE,STACK + SET 'P-AADJ,P-ADJ + SET 'P-ANAM,P-NAM + CALL ORPHAN,FALSE-VALUE,FALSE-VALUE + SET 'P-OFLAG,TRUE-VALUE + JUMP ?CND78 +?ELS82: ZERO? VRB /?CND78 + PRINTI "There seems to be a noun missing in that sentence!" + CRLF +?CND78: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RFALSE +?CND50: ZERO? LEN \?ELS99 + ZERO? GCHECK /?ELS99 + ZERO? VRB /?CND102 + SET 'P-SLOCBITS,XBITS + ZERO? LIT \?THN109 + EQUAL? PRSA,V?TELL \?ELS108 +?THN109: CALL OBJ-FOUND,NOT-HERE-OBJECT,TBL + SET 'P-XNAM,P-NAM + SET 'P-XADJ,P-ADJ + SET 'P-XADJN,P-ADJN + SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + SET 'P-ADJN,FALSE-VALUE + RTRUE +?ELS108: PRINTI "It's too dark to see!" + CRLF +?CND102: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RFALSE +?ELS99: ZERO? LEN \?CND97 + SET 'GCHECK,TRUE-VALUE + JUMP ?PRG30 +?CND97: SET 'P-SLOCBITS,XBITS + SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RTRUE + + + .FUNCT MOBY-FIND,TBL,FOO,LEN + SET 'P-SLOCBITS,-1 + SET 'P-NAM,P-XNAM + SET 'P-ADJ,P-XADJ + PUT TBL,P-MATCHLEN,0 + FIRST? ROOMS >FOO /?KLU17 +?KLU17: +?PRG1: ZERO? FOO \?ELS5 + JUMP ?REP2 +?ELS5: CALL SEARCH-LIST,FOO,TBL,P-SRCALL + NEXT? FOO >FOO /?KLU18 +?KLU18: JUMP ?PRG1 +?REP2: GET TBL,P-MATCHLEN >LEN + ZERO? LEN \?CND8 + CALL DO-SL,LOCAL-GLOBALS,1,1 +?CND8: GET TBL,P-MATCHLEN >LEN + ZERO? LEN \?CND11 + CALL DO-SL,ROOMS,1,1 +?CND11: GET TBL,P-MATCHLEN >LEN + EQUAL? LEN,1 \?CND14 + GET TBL,1 >P-MOBY-FOUND +?CND14: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RETURN LEN + + + .FUNCT WHICH-PRINT,TLEN,LEN,TBL,OBJ,RLEN + SET 'RLEN,LEN + PRINTI "Which " + ZERO? P-OFLAG \?THN6 + ZERO? P-MERGED \?THN6 + ZERO? P-AND /?ELS5 +?THN6: ZERO? P-NAM /?ELS12 + PUSH P-NAM + JUMP ?CND8 +?ELS12: ZERO? P-ADJ /?ELS15 + PUSH P-ADJN + JUMP ?CND8 +?ELS15: PUSH W?ONE +?CND8: PRINTB STACK + JUMP ?CND3 +?ELS5: EQUAL? TBL,P-PRSO /?PRD21 + PUSH 0 + JUMP ?PRD22 +?PRD21: PUSH 1 +?PRD22: CALL THING-PRINT,STACK +?CND3: PRINTI " do you mean, " +?PRG25: INC 'TLEN + GET TBL,TLEN >OBJ + PRINTI "the " + PRINTD OBJ + EQUAL? LEN,2 \?ELS31 + EQUAL? RLEN,2 /?CND32 + PRINTI "," +?CND32: PRINTI " or " + JUMP ?CND29 +?ELS31: GRTR? LEN,2 \?CND29 + PRINTI ", " +?CND29: DLESS? 'LEN,1 \?PRG25 + PRINTR "?" + + + .FUNCT GLOBAL-CHECK,TBL,LEN,RMG,RMGL,CNT=0,OBJ,OBITS,FOO + GET TBL,P-MATCHLEN >LEN + SET 'OBITS,P-SLOCBITS + GETPT HERE,P?GLOBAL >RMG + ZERO? RMG /?CND1 + PTSIZE RMG + SUB STACK,1 >RMGL +?PRG4: GETB RMG,CNT >OBJ + CALL THIS-IT?,OBJ,TBL + ZERO? STACK /?CND6 + CALL OBJ-FOUND,OBJ,TBL +?CND6: IGRTR? 'CNT,RMGL \?PRG4 +?CND1: GETPT HERE,P?PSEUDO >RMG + ZERO? RMG /?CND12 + PTSIZE RMG + DIV STACK,4 + SUB STACK,1 >RMGL + SET 'CNT,0 +?PRG15: MUL CNT,2 + GET RMG,STACK + EQUAL? P-NAM,STACK \?ELS19 + SET 'LAST-PSEUDO-LOC,HERE + MUL CNT,2 + ADD STACK,1 + GET RMG,STACK + PUTP PSEUDO-OBJECT,P?ACTION,STACK + GETPT PSEUDO-OBJECT,P?ACTION + SUB STACK,5 >FOO + GET P-NAM,0 + PUT FOO,0,STACK + GET P-NAM,1 + PUT FOO,1,STACK + CALL OBJ-FOUND,PSEUDO-OBJECT,TBL + JUMP ?CND12 +?ELS19: IGRTR? 'CNT,RMGL \?PRG15 +?CND12: GET TBL,P-MATCHLEN + EQUAL? STACK,LEN \FALSE + SET 'P-SLOCBITS,-1 + SET 'P-TABLE,TBL + CALL DO-SL,GLOBAL-OBJECTS,1,1 + SET 'P-SLOCBITS,OBITS + GET TBL,P-MATCHLEN + ZERO? STACK \FALSE + EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH,V?EXAMINE \FALSE + CALL DO-SL,ROOMS,1,1 + RSTACK + + + .FUNCT DO-SL,OBJ,BIT1,BIT2,BTS + ADD BIT1,BIT2 + BTST P-SLOCBITS,STACK \?ELS5 + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCALL + RSTACK +?ELS5: BTST P-SLOCBITS,BIT1 \?ELS12 + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCTOP + RSTACK +?ELS12: BTST P-SLOCBITS,BIT2 \TRUE + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCBOT + RSTACK + + + .FUNCT SEARCH-LIST,OBJ,TBL,LVL,FLS,NOBJ + FIRST? OBJ >OBJ \FALSE +?PRG6: EQUAL? LVL,P-SRCBOT /?CND8 + GETPT OBJ,P?SYNONYM + ZERO? STACK /?CND8 + CALL THIS-IT?,OBJ,TBL + ZERO? STACK /?CND8 + CALL OBJ-FOUND,OBJ,TBL +?CND8: EQUAL? LVL,P-SRCTOP \?THN18 + FSET? OBJ,SEARCHBIT /?THN18 + FSET? OBJ,SURFACEBIT \?CND13 +?THN18: FIRST? OBJ >NOBJ \?CND13 + FSET? OBJ,OPENBIT /?THN20 + FSET? OBJ,TRANSBIT \?CND13 +?THN20: FSET? OBJ,SURFACEBIT \?ELS26 + PUSH P-SRCALL + JUMP ?CND22 +?ELS26: FSET? OBJ,SEARCHBIT \?ELS28 + PUSH P-SRCALL + JUMP ?CND22 +?ELS28: PUSH P-SRCTOP +?CND22: CALL SEARCH-LIST,OBJ,TBL,STACK >FLS +?CND13: NEXT? OBJ >OBJ /?PRG6 + RTRUE + + + .FUNCT OBJ-FOUND,OBJ,TBL,PTR + GET TBL,P-MATCHLEN >PTR + ADD PTR,1 + PUT TBL,STACK,OBJ + ADD PTR,1 + PUT TBL,P-MATCHLEN,STACK + RTRUE + + + .FUNCT TAKE-CHECK + GETB P-SYNTAX,P-SLOC1 + CALL ITAKE-CHECK,P-PRSO,STACK + ZERO? STACK /FALSE + GETB P-SYNTAX,P-SLOC2 + CALL ITAKE-CHECK,P-PRSI,STACK + RSTACK + + + .FUNCT ITAKE-CHECK,TBL,IBITS,PTR,OBJ,TAKEN + GET TBL,P-MATCHLEN >PTR + ZERO? PTR /TRUE + BTST IBITS,SHAVE /?THN8 + BTST IBITS,STAKE \TRUE +?THN8: +?PRG10: DLESS? 'PTR,0 /TRUE + ADD PTR,1 + GET TBL,STACK >OBJ + EQUAL? OBJ,IT \?CND17 + CALL ACCESSIBLE?,P-IT-OBJECT + ZERO? STACK \?ELS22 + PRINTI "I don't see what you're referring to." + CRLF + RFALSE +?ELS22: SET 'OBJ,P-IT-OBJECT +?CND17: CALL HELD?,OBJ + ZERO? STACK \?PRG10 + EQUAL? OBJ,HANDS,ME /?PRG10 + SET 'PRSO,OBJ + FSET? OBJ,TRYTAKEBIT \?ELS34 + SET 'TAKEN,TRUE-VALUE + JUMP ?CND32 +?ELS34: EQUAL? WINNER,ADVENTURER /?ELS36 + SET 'TAKEN,FALSE-VALUE + JUMP ?CND32 +?ELS36: BTST IBITS,STAKE \?ELS38 + CALL ITAKE,FALSE-VALUE + EQUAL? STACK,TRUE-VALUE \?ELS38 + SET 'TAKEN,FALSE-VALUE + JUMP ?CND32 +?ELS38: SET 'TAKEN,TRUE-VALUE +?CND32: ZERO? TAKEN /?ELS45 + BTST IBITS,SHAVE \?ELS45 + EQUAL? WINNER,ADVENTURER \?ELS45 + EQUAL? OBJ,NOT-HERE-OBJECT \?CND48 + PRINTI "You don't have that!" + CRLF + RFALSE +?CND48: PRINTI "You don't have the " + PRINTD OBJ + PRINTI "." + CRLF + RFALSE +?ELS45: ZERO? TAKEN \?PRG10 + EQUAL? WINNER,ADVENTURER \?PRG10 + PRINTI "(Taken)" + CRLF + JUMP ?PRG10 + + + .FUNCT MANY-CHECK,LOSS=0,TMP,?TMP1 + GET P-PRSO,P-MATCHLEN + GRTR? STACK,1 \?ELS3 + GETB P-SYNTAX,P-SLOC1 + BTST STACK,SMANY /?ELS3 + SET 'LOSS,1 + JUMP ?CND1 +?ELS3: GET P-PRSI,P-MATCHLEN + GRTR? STACK,1 \?CND1 + GETB P-SYNTAX,P-SLOC2 + BTST STACK,SMANY /?CND1 + SET 'LOSS,2 +?CND1: ZERO? LOSS /TRUE + PRINTI "You can't use multiple " + EQUAL? LOSS,2 \?CND18 + PRINTI "in" +?CND18: PRINTI "direct objects with """ + GET P-ITBL,P-VERBN >TMP + ZERO? TMP \?ELS27 + PRINTI "tell" + JUMP ?CND25 +?ELS27: ZERO? P-OFLAG \?THN32 + ZERO? P-MERGED /?ELS31 +?THN32: GET TMP,0 + PRINTB STACK + JUMP ?CND25 +?ELS31: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK +?CND25: PRINTI """." + CRLF + RFALSE + + + .FUNCT ZMEMQ,ITM,TBL,SIZE=-1,CNT=1 + ZERO? TBL /FALSE + LESS? SIZE,0 /?ELS6 + SET 'CNT,0 + JUMP ?CND4 +?ELS6: GET TBL,0 >SIZE +?CND4: +?PRG9: GET TBL,CNT + EQUAL? ITM,STACK \?ELS13 + MUL CNT,2 + ADD TBL,STACK + RSTACK +?ELS13: IGRTR? 'CNT,SIZE \?PRG9 + RFALSE + + + .FUNCT ZMEMQB,ITM,TBL,SIZE,CNT=0 +?PRG1: GETB TBL,CNT + EQUAL? ITM,STACK /TRUE + IGRTR? 'CNT,SIZE \?PRG1 + RFALSE + + + .FUNCT LIT?,RM,RMBIT=1,OHERE,LIT=0 + ZERO? ALWAYS-LIT /?CND1 + EQUAL? WINNER,PLAYER /TRUE +?CND1: SET 'P-GWIMBIT,ONBIT + SET 'OHERE,HERE + SET 'HERE,RM + ZERO? RMBIT /?ELS8 + FSET? RM,ONBIT \?ELS8 + SET 'LIT,TRUE-VALUE + JUMP ?CND6 +?ELS8: ZERO? RMBIT /?ELS12 + GRTR? TOD,NIGHTFALL /?ELS12 + FSET? RM,LIGHTBIT \?ELS12 + SET 'LIT,TRUE-VALUE + JUMP ?CND6 +?ELS12: PUT P-MERGE,P-MATCHLEN,0 + SET 'P-TABLE,P-MERGE + SET 'P-SLOCBITS,-1 + EQUAL? OHERE,RM \?CND17 + CALL DO-SL,WINNER,1,1 + EQUAL? WINNER,PLAYER /?CND17 + IN? PLAYER,RM \?CND17 + CALL DO-SL,PLAYER,1,1 +?CND17: CALL DO-SL,RM,1,1 + GET P-TABLE,P-MATCHLEN + GRTR? STACK,0 \?CND6 + SET 'LIT,TRUE-VALUE +?CND6: SET 'HERE,OHERE + SET 'P-GWIMBIT,0 + RETURN LIT + + + .FUNCT PRSO-PRINT,PTR + ZERO? P-MERGED \?THN6 + GET P-ITBL,P-NC1 >PTR + GET PTR,0 + EQUAL? STACK,W?IT \?ELS5 +?THN6: PRINTI " " + PRINTD PRSO + RTRUE +?ELS5: GET P-ITBL,P-NC1L + CALL BUFFER-PRINT,PTR,STACK,FALSE-VALUE + RSTACK + + + .FUNCT PRSI-PRINT,PTR + ZERO? P-MERGED \?THN6 + GET P-ITBL,P-NC2 >PTR + GET PTR,0 + EQUAL? STACK,W?IT \?ELS5 +?THN6: PRINTI " " + PRINTD PRSO + RTRUE +?ELS5: GET P-ITBL,P-NC2L + CALL BUFFER-PRINT,PTR,STACK,FALSE-VALUE + RSTACK + + + .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 + + + .FUNCT ACCESSIBLE?,OBJ,L,?TMP1 + LOC OBJ >L + FSET? OBJ,INVISIBLE /FALSE + ZERO? L /FALSE + EQUAL? L,GLOBAL-OBJECTS /TRUE + EQUAL? L,LOCAL-GLOBALS \?ELS11 + CALL GLOBAL-IN?,OBJ,HERE + ZERO? STACK \TRUE +?ELS11: CALL META-LOC,OBJ >?TMP1 + LOC WINNER + EQUAL? ?TMP1,HERE,STACK \FALSE + LOC WINNER + EQUAL? L,WINNER,HERE,STACK /TRUE + FSET? L,OPENBIT \FALSE + CALL ACCESSIBLE?,L + ZERO? STACK /FALSE + RTRUE + + + .FUNCT META-LOC,OBJ +?PRG1: ZERO? OBJ /FALSE + IN? OBJ,GLOBAL-OBJECTS \?CND3 + RETURN GLOBAL-OBJECTS +?CND3: IN? OBJ,ROOMS \?ELS10 + RETURN OBJ +?ELS10: LOC OBJ >OBJ + JUMP ?PRG1 + + .ENDI diff --git a/gparser.zil b/gparser.zil new file mode 100644 index 0000000..99fd95b --- /dev/null +++ b/gparser.zil @@ -0,0 +1,1486 @@ + "Generic PARSER file for + The ZORK Trilogy + started on 7/28/83 by MARC" + +;"WHICH and TRAP retrofixes installed" + +"Parser global variable convention: All parser globals will + begin with 'P-'. Local variables are not restricted in any + way. +" + + + +> +> +> + + + + + +> +;"pointers used by CLAUSE-COPY (source/destination beginning/end pointers)" + + + + + + + + + + + ;> + ;> + ;> +> + +;"INBUF - Input buffer for READ" + + + ;> + + ;> + <> <> <>>> + "word pointer to unknown token in P-LEXV" + "word pointer to sentence start in P-LEXV" + "byte length of unparsed tokens in P-LEXV" + "byte pointer to first free byte in OOPS-INBUF" + +;"Parse-cont variable" + +> +> +;> + +;"Orphan flag" + +> +> +> +> +> +;"Parser variables and temporaries" + +;"Byte offset to # of entries in LEXV" + + ;"Word offset to start of LEXV entries" + ;"Number of words per LEXV entry" + + ;"Offset to parts of speech byte" + + ;"Offset to first part of speech" + ;"First part of speech bit mask in PSOFF byte" + + + +> +> +> +> + + + + + + + + + + + + + + +> +> + +" Grovel down the input finding the verb, prepositions, and noun clauses. + If the input is or , fall out immediately + setting PRSA to ,V?WALK and PRSO to . Otherwise, perform + all required orphaning, syntax checking, and noun clause lookup." + +) (OF-FLAG <>) + OWINNER OMERGED LEN (DIR <>) (NW 0) (LW 0) (CNT -1)) + > ,P-ITBLLEN> ) + (T + + >)> + )>> + + + > + > + > + + + + > + + > + ; ,VEHBIT>> + >)> + >)> + + + > + )> + > + >) + (,P-CONT + + + + >> + )> + >) + (T + + > + ,VEHBIT>> + >)> + > + )> + "> + )> + > + )> + > ,W?OOPS> + > + ,W?PERIOD ,W?COMMA> + > + >)> + > + + ) + ( + + > + ,W?QUOTE>> + + ) + ( + )> + + >> + ;"maybe fix oops vs. chars.?" + 6>> + 7>> + <+ <* ,P-LEXELEN> 3>> + + > + > + ) + (T + > + + )>) + (T + > + )> + >)> + ,W?AGAIN ,W?G> + > + + ) + (,P-OFLAG + + ) + ( + + ) + ( + > + ,W?PERIOD ,W?COMMA ,W?THEN> + > + ,W?AND>> + >> + 2>>) + (T + + )>) + (T + > + 1>>)> + 0> + + ) + (T + >)> + ;> + + + + + + + ) + (T >)>>) + (T + + + + > + >>>> + > + >>> + > + + > + + + > 0> + > + ) + (> + >> + ) + (T >>)> + + > + ) + ( + + + ;"Last NOT added 7/3"> + + ) + (ELSE + + + )>)> + + + >) + (T )>)> + + >> + + ) + (> + % + ' + ,ACT?WALK ,ACT?FLY>) + (ELSE + ' + ,ACT?WALK>)> + + + > + + >> + + > + + >>> + + + + ,W?THEN>)> + > + > + )>) + (> + > + + + + + 2>>>> + >>) + (> + + + > + >> + + + + > + ;>> + ) + (> + + >> + + + + )>) + ( + + ) + (T + > + + > + > + + > + )>)>) + ( + + > + + ) + (T + >)>) + () + ( + + > + + ) + (T + + )>) + (T + + )> + + >>)> + > + + % + ' + ) + (T + >)>) + (ELSE ')> + + > + + ) + (ELSE + )> + > + > + + + + > + T)>)>> + + + >)> + +> +> +> + +;"For AGAIN purposes, put contents of one LEXV table into another." +> + > + > + 2>> + > + 3>> + > + > + + )>>> + +;"Put contents of one INBUF into another" + 1>> + > + )>>> + +;"Put the word in the positions specified from P-INBUF to the end of +OOPS-INBUF, leaving the appropriate pointers in AGAIN-LEXV" +> + ) + (T + >> + >>>)> + > + >> + > + )>> + + .LEN>> + +;"Check whether word pointed at by PTR is the correct part of speech. + The second argument is the part of speech (,PS?). The + 3rd argument (,P1?), if given, causes the value + for that part of speech to be returned." + +> .BIT> + ) + (T + > + > >)> + )>)>> + +;" Scan through a noun clause, leave a pointer to its starting location" + +) (FIRST?? T) NW (LW 0)) + 2>> + > + > .VAL> + .WRD> + >) + (T >)> + > )> + > >> + ,W?THE ,W?A ,W?AN> + 4>>)> + > 0> + >> + )> + > + >> + ) + (T >>)> + ) + ( + + > + >)>) + ( + + + ;"ADDED 4/27 FOR TURTLE,UP" + >> + > + + >> + >) + ( + + + >> + T) + ( + > + >) + ( + > + >> + + 2>>> + ) + (T >)>) + ( 0>>> + + >>) + ( + >> + > + ,W?THEN> + >) + ( T) + (T + + )>) + (T )> + + > + >>> + +)) + > 2>> + > 3>> + > 0> ) + (T + > + + + ) + ( ) + ( > + <- .CHR 48>>>) + (T )> + >)>> + + ) + (.TIM + >) + ( )> + >>)> + + ,W?INTNUM> + + + + + )> + + +;"New ORPHAN-MERGE for TRAP Retrofix 6/21/84" + +) WRD) + > + 0>> + ,PS?VERB ,P1?VERB> + > + >>> + ) + (>> + > + + + > + > + )> + >>> + + >>> + ) + ( ) + ( 1> + > + > + > + > + > + >)> + )>) + (T + >)> + >) + (T )>) + ( 1> + > + > + > + > + > + >)>)> + > + > + ) + (T )>) + (> + > > + > + ) + (T + > + > >)> + > + > + + ) + (T > )>) + ( + + ,PS?ADJECTIVE> + >> + ) + ( + + ) + ( ,PS?OBJECT> + + ) + (T + )> + )> + > + + + + > + )>>)>)> + > + > + > + + + > ,P-ITBLLEN> + + ) + (T >)>> + T> + +;"New ACLAUSE-WIN for TRAP retrofix 6/21/84" + +> + + > + + > + + 0>> > + > + > + + + + + > + + 0>> > + > + > + +;"Print undefined word in input. + PTR points to the unknown word in P-LEXV" + + ) + (ELSE + > + >)>>> + + + + + )> + + >> 2> + 3>> + + > + >> + + + + )> + + >> 2> + 3>> + + > + >> + +;" Perform syntax matching operations, using P-ITBL as the source of + the verb and adjectives for this input. Returns false if no + syntax matches, and does it's own orphaning. If return is true, + the syntax is saved in P-SYNTAX." + + + + + + + + + + + + + + + +) (DRIVE2 <>) PREP VERB TMP) + >> + + )> + >> + > + > + ,P-SONUMS>> + T) + (> + + >> + >>> + ) + ( > + > + ) + ( + > + + )>)> + + ) + (T + + )>) + (T >)>> + + + >>> + + + ) + ( + + >>> + + + ) + ( + + ) + (> + ) + (T + + + > + ) + (> + >) + (T + > + )> + + )> + + ) + (T )>> + + )>> + + + > + + + + )> + > + > + > + ) + (T >)>> + + + + + + )> + > + + + + + )> + > + ) + (.D2 + > + )>> + +; .THE?>> + +) "AUX" BEG END) + > + >) + (ELSE + > + >)> + > + +) (Q? <>)) + ) + (T + > + T) + ( + ) + (.NOSP >) + (ELSE )> + + ) + ( + + ) + ( + + ) + (T + .CP> + )> + ) + ( + > + ) + (T + + >)> + >)>)> + >>> + +> + + + ) + (T + > + )>)>> + +) "AUX" BEG END) + >> + >> + + ,P-LEXELEN> 2>>> + + + ,P-LEXELEN> + 2>>> + ) + (T + >> + )> + >)> + >>> + + + 2>> + .WRD> + + > + + 2>> + ) + ( .PREP> + >>)>>> + + + >> + + + + + ') + (ELSE + ')> + )> + + + + > + + 1> + > + + > + > + >> + + )> + + + ) + (T + )> + ) + (ELSE + )> + .OBJ)>) + (T )>> + + + > 0>> + > + ,P-PRSI> >)> + > 0>> + > + ,P-PRSO> >)> + >> + > + >)> + + >>> + >)>)> + > + +> + + ) + (> ,P-BUTS>) + (T + .OBJ> + >)> + >> + + + + .NTBL> + +> +> +> +> +> +> +> +> +> + + + + + + + +> + +) LEN WV WRD NW (WAS-ALL <>)) + > + + )> + + + > + + >> + )> + ) + (T + > + ) + (T >)> + + + + >)>) + ( + > > + + ) + ( + + + + >)>) + (T + + > > + >)>) + ( + >> + + > > + T) + () + () + ( + + )>) + (> + > + + ) + ( + + )>)> + > + > + )>>> + + + + + + + + + +) (OLEN 0) OBJ) + + > + )> + ,P-ADJ> + + + >) + % + '(> + > + + + + )) + (ELSE '( T))>>)> + + + > + > + )> + )> + > > + )> + + ) + (T + + + )> + + % + ' .TLEN> + >> + )> + )>) + (ELSE )>)> + .TLEN>> + ) + ( + >> + > + >> + + > + )> + ) + ( + >>> + + + + .LEN>> + ) + (T + )> + > + + ) + ( + + ,P-NC1) + (T ,P-NC2)>> + + + <>> + ) + (.VRB + )> + > + > + )>)> + .GCHECK> + + > + ;"Changed 6/10/83 - MARC" + + + + + > + > + > + ) + (T )>)> + > + > + ) + ( )> + + > + > + >> + + + + + + + > + ) + (T + + >)>> + > 0> + )> + > 0> + )> + > 1> + >)> + > + > + .LEN> + +>)> + +> +> +> + + + + + >) + (ELSE + >)> + + > + > + + + > )> + ) + ( )> + > 1> + + )>>> + + +> + +> + + > + 1>> + > .TBL> + )> + )>>)> + > + 4> 1>> + + >> + + 1>>> + 5>> + > + > + + ) + ( )>>)> + .LEN> + + + + + > + > + )>)>> + +> + ) + (T + + ) + ( + ) + (T )>)>> + + + + + +> + > + + > + )> + > + + > + > + + >> + + ,P-SRCALL) + ( + ,P-SRCALL) + (T ,P-SRCTOP)>>>)> + >) (T )>>)>> + +> + .OBJ> + >> + +> + >>> + +) + > + + >> + > 0> ) + (T + >> + + > + + ) + (T + )>)> + > + >> + + + ) + (> + >) + ( + > T>> + >) + (T )> + + > + + + )> + + + + ) + ( + > + )>)>)>>) + (T)>> + +) TMP) + 1> + ,SMANY>>> + ) + ( 1> + ,SMANY>>> + )> + + )> + + > + ) + ( + >) + (T + >)> + + ) + (T)>> + + )> + > ) + (ELSE >)> + > + >>) + ( )>>> + +> + ) + ( + )>>> + +> + +)) + > + )> + + + + > + ) + % + '(> + > + )) + (ELSE '( ))> + (T + + + + + + > + > + )>)> + + 0> )>)> + + + .LIT> + + + +> 0> ,W?IT>> + ) + (T <>>)>> + +> 0> ,W?IT>> + ) + (T <>>)>> +)> + +;"former CRUFTY routine, re-written by SWG" + + ) + (> + <- 2> 1>>>> + ) + (>> + 1>>>>> + ) + (> >> + )> + > + +)) ;"can player TOUCH object?" + ;"revised 5/2/84 by SEM and SWG" + + ) + ;( + + ) + (T + )>) + ( + ) + ( + ) + ( + > + ) + ( ,HERE >> + ) + (> + ) + ( + > + ) + (T + )>> + + + ) + ( + )> + + ) + (T + >)>>> diff --git a/knot.zap b/knot.zap new file mode 100644 index 0000000..a57374e --- /dev/null +++ b/knot.zap @@ -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 diff --git a/macros.zap b/macros.zap new file mode 100644 index 0000000..0a04986 --- /dev/null +++ b/macros.zap @@ -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 diff --git a/magic.zap b/magic.zap new file mode 100644 index 0000000..6c40cb2 --- /dev/null +++ b/magic.zap @@ -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 diff --git a/main.zap b/main.zap new file mode 100644 index 0000000..4d445c3 --- /dev/null +++ b/main.zap @@ -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 diff --git a/main.zil b/main.zil index a743a8e..f5a3cfb 100644 --- a/main.zil +++ b/main.zil @@ -45,7 +45,6 @@ - > > > ->>> + + (OBJ) (OBJ1) OBJECT (TBL) TABLE (PTBL) ) - > > > + > + > + > + > .ICNT> + ) + (T + ,IT> + + + )>)>> + + + > .OCNT> + ) + (T + ,IT> + + )>)>>)> + )> >> .OCNT) + .OCNT) ( >) @@ -164,7 +187,8 @@ you are Sent." CR> ,WINNER - ,HERE>>> + ,HERE + .OBJ>>> ) ( ,PRSI @@ -189,7 +213,7 @@ you are Sent." CR> ,P?ACTION> ,M-END>>)>)> - T) + T) (T @@ -200,7 +224,7 @@ you are Sent." CR> T) - (T >)>)>>> + (T >)>)>> > @@ -222,7 +246,7 @@ you are Sent." CR> - >> + >> )> )> @@ -230,8 +254,7 @@ you are Sent." CR> >> - - )> + )> >> @@ -277,7 +300,7 @@ you are Sent." CR> - >> + >> )> )> @@ -285,8 +308,7 @@ you are Sent." CR> >> - - )> + )> >> diff --git a/outside.zap b/outside.zap new file mode 100644 index 0000000..8d283c1 --- /dev/null +++ b/outside.zap @@ -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 diff --git a/parser.cmp b/parser.cmp new file mode 100644 index 0000000..37a8d73 --- /dev/null +++ b/parser.cmp @@ -0,0 +1,1765 @@ + +;COMPARISON OF SS:PARSER.ZIL.70 AND SS:GPARSER.ZIL.44 +;OPTIONS ARE /3 + +**** FILE SS:PARSER.ZIL.70, 1-1 (0) +"PARSER for + ENCHANTER + (c) Copyright 1983 Infocom, Inc. All Rights Reserved. +" +"Parser global variable convention: All parser globals will + begin with 'P-'. Local variables are not restricted in any + way. +" + + + +> + +> +> + + + + + + + + + + + + + + + + +> +;"INBUF - Input buffer for READ" + +> +;"Parse-cont variable" + +> + +> +;"Orphan flag" + +> + +> +> + +> + +> +;"Parser variables and temporaries" + + + + + + +;"Byte offset to # of entries in LEXV" + +;"Word offset to start of LEXV entries" + + +;"Number of words per LEXV entry" + + + + +;"Offset to parts of speech byte" + + +;"Offset to first part of speech" + + +;"First part of speech bit mask in PSOFF byte" + + + + + +> + +> + +> + + + + + + + + + + + + + + + + + + + + + + +> +**** FILE SS:GPARSER.ZIL.44, 1-1 (0) + "Generic PARSER file for + The ZORK Trilogy + started on 7/28/83 by MARC" +;"WHICH and TRAP retrofixes installed" +"Parser global variable convention: All parser globals will + begin with 'P-'. Local variables are not restricted in any + way. +" + +> +> +> + + + +> +;"pointers used by CLAUSE-COPY (source/destination beginning/end pointers)" + + + + + + + + + ;> + ;> + ;> +> +;"INBUF - Input buffer for READ" + + ;> + + ;> + <> <> <>>> + "word pointer to unknown token in P-LEXV" + "word pointer to sentence start in P-LEXV" + "byte length of unparsed tokens in P-LEXV" + "byte pointer to first free byte in OOPS-INBUF" +;"Parse-cont variable" +> +> +;> +;"Orphan flag" +> +> +> +> +> +;"Parser variables and temporaries" +;"Byte offset to # of entries in LEXV" + ;"Word offset to start of LEXV entries" + ;"Number of words per LEXV entry" + + ;"Offset to parts of speech byte" + ;"Offset to first part of speech" + ;"First part of speech bit mask in PSOFF byte" + + +> +> +> +> + + + + + + + + + + + +> +> +*************** + +**** FILE SS:PARSER.ZIL.70, 2-56 (2115) + all required orphaning, syntax checking, and noun clause lookup." +) + LEN (DIR <>) (NW 0) (LW 0) NUM SCNT (CNT -1)) + > ,P-ITBLLEN> ) + (T )>> + > + > +**** FILE SS:GPARSER.ZIL.44, 1-107 (2815) + all required orphaning, syntax checking, and noun clause lookup." +) (OF-FLAG <>) + OWINNER OMERGED LEN (DIR <>) (NW 0) (LW 0) (CNT -1)) + > ,P-ITBLLEN> ) + (T + + >)> + )>> + + + > + > + > +*************** + +**** FILE SS:PARSER.ZIL.70, 3-14 (2637) + ,VEHBIT>> + >)> + >)> + + <==? ,PLAYER ,WINNER>> +**** FILE SS:GPARSER.ZIL.44, 2-20 (3521) + > + ; ,VEHBIT>> + >)> + >)> + + + > + )> + > + >) + (,P-CONT + + + + >> +*************** + +**** FILE SS:PARSER.ZIL.70, 3-32 (3248) + )> + + > + + + GPARSER.ZIL.44, 2-48 (4443) + )> + > ,W?OOPS> + > + ,W?PERIOD ,W?COMMA> + > + >)> + > + + ) + ( + + > + ,W?QUOTE>> + + ) + ( + )> + + >> + ;"maybe fix oops vs. chars.?" + 6>> + 7>> + <+ <* ,P-LEXELEN> 3>> + + > + > + ) + (T + > + + )>) + (T + > + )> + >)> + ,W?AGAIN ,W?G> + > + + ) + (,P-OFLAG + + ) + ( + + ) + ( + > + ,W?PERIOD ,W?COMMA ,W?THEN> + > + ,W?AND>> + >> + 2>>) + (T + + )>) + (T + > + 1>>)> + 0> + + ) + (T + >)> + ;> + + + + + + + ) + (T >)>>) + (T + + + + > + >>>> + > + >>> + > + + > + + + PARSER.ZIL.70, 3-43 (3570) + + > + ) + ( + + ;"Last NOT added 7/3"> + + + )> + + > + ) + ( + > +**** FILE SS:GPARSER.ZIL.44, 2-145 (7989) + ) + (T >>)> + + > + ) + ( + + + ;"Last NOT added 7/3"> + + ) + (ELSE + + + )>)> + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-61 (4219) + +**** FILE SS:GPARSER.ZIL.44, 2-165 (8724) + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-69 (4443) + ,ACT?WALK ,ACT?FLY> + + + > + >> +**** FILE SS:GPARSER.ZIL.44, 2-173 (8951) + ,ACT?WALK> + + + > + PARSER.ZIL.70, 3-81 (4818) + <==? .LEN 2> +**** FILE SS:GPARSER.ZIL.44, 2-183 (9253) + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-94 (5228) + ; + >> +**** FILE SS:GPARSER.ZIL.44, 2-196 (9666) + > +*************** + +**** FILE SS:PARSER.ZIL.70, 3-101 (5479) + 2>>>> + >>) + (> + +**** FILE SS:GPARSER.ZIL.44, 2-202 (9862) + 2>>>> + >>) + (> + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-109 (5777) + + <==? > + ,W?OF> + ;> + <0? .VAL> + >>) + (> + + > + ,W?THEN ,W?PERIOD>>> +**** FILE SS:GPARSER.ZIL.44, 2-210 (10163) + + + + > + ;>> + ) + (> + + >> + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-124 (6261) + (<==? ,P-NCN 2> + +**** FILE SS:GPARSER.ZIL.44, 2-224 (10630) + ( + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-130 (6418) +**** FILE SS:GPARSER.ZIL.44, 2-230 (10793) + +*************** + +**** FILE SS:PARSER.ZIL.70, 3-135 (6567) + ;( + > + ) + () + ( + > +**** FILE SS:GPARSER.ZIL.44, 2-236 (10971) + ( + + > + + ) + (T + >)>) + () + ( + + > +*************** + +**** FILE SS:PARSER.ZIL.70, 3-153 (7103) + >> + + + ) + (T + >)> + + + )> + > + )> + ; 0> )> + > + T)>> +> +> +**** FILE SS:GPARSER.ZIL.44, 2-258 (11580) + >>)> + > + + + > + + ) + (ELSE + )> + > + > + + + + > + T)>)>> +> +> +> +;"For AGAIN purposes, put contents of one LEXV table into another." +> + > + > + 2>> + > + 3>> + > + > + + )>>> +;"Put contents of one INBUF into another" + 1>> + > + )>>> +;"Put the word in the positions specified from P-INBUF to the end of +OOPS-INBUF, leaving the appropriate pointers in AGAIN-LEXV" +> + ) + (T + >> + >>>)> + > + >> + > + )>> + + .LEN>> +*************** + +**** FILE SS:PARSER.ZIL.70, 3-177 (7852) + for that part of speech to be returned." +GPARSER.ZIL.44, 2-322 (13698) + for that part of speech to be returned." +PARSER.ZIL.70, 4-7 (8110) + > >)> + )>)>> +;" Scan through a noun clause, leave a pointer to its starting location" + +) (FIRST?? T) NW (LW 0)) + #DECL ((PTR VAL OFF NUM) FIX (WRD NW) + (ANDFLG FIRST??) ) + 2>> + > +**** FILE SS:GPARSER.ZIL.44, 3-7 (13954) + > >)> + )>)>> +;" Scan through a noun clause, leave a pointer to its starting location" +) (FIRST?? T) NW (LW 0)) + 2>> + > +*************** + +**** FILE SS:PARSER.ZIL.70, 4-20 (8698) + > )> +**** FILE SS:GPARSER.ZIL.44, 3-19 (14444) + > )> +*************** + +**** FILE SS:PARSER.ZIL.70, 4-30 (9157) + ) + (T >>)> + ; + <==? ,ACT?ACCUSE>> + + )> + + > + ) + ( ) + ( + +**** FILE SS:GPARSER.ZIL.44, 3-29 (14906) + ) + (T >>)> + ) + ( + +*************** + +**** FILE SS:PARSER.ZIL.70, 4-55 (10103) + + > +**** FILE SS:GPARSER.ZIL.44, 3-47 (15608) + + + >> + T) + ( + > +*************** + +**** FILE SS:PARSER.ZIL.70, 4-86 (11067) + >>> +**** FILE SS:GPARSER.ZIL.44, 3-82 (16687) + >>> +*************** + +**** FILE SS:PARSER.ZIL.70, 4-95 (11374) + +**** FILE SS:GPARSER.ZIL.44, 3-91 (16993) + +*************** + +**** FILE SS:PARSER.ZIL.70, 4-104 (11665) + ) +**** FILE SS:GPARSER.ZIL.44, 3-100 (17287) + ) +*************** + +**** FILE SS:PARSER.ZIL.70, 5-2 (11898) +) WRD) + #DECL ((CNT TEMP VERB) FIX (BEG END) (WRD) TABLE) + > + >>> + >>> + ) + (<==? ,P-NCN 2> + ) + (<==? 1> + > + > + <0? .TEMP>> + > + >) + (T )>) + (<==? 1> + > + > + <0? .TEMP>> + > + > + ) + (T )>) + (,P-ACLAUSE + > > ) + (T + > + > + + + ) + (T + > + )>) + (> ,P-PSOFF> + ,PS?ADJECTIVE> + > + ) + ( ,PS?OBJECT> + <==? .WRD ,W?ONE>> + > ) + (T + + )>)> + >>)>)> + > ,P-ITBLLEN> + + ) + (T >)>> + T> + + .ADJ> + 0>> + > + > + > +;"Print undefined word in input. + PTR points to the unknown word in P-LEXV" +**** FILE SS:GPARSER.ZIL.44, 3-110 (17515) + +;"New ORPHAN-MERGE for TRAP Retrofix 6/21/84" +) WRD) + > + 0>> + ,PS?VERB ,P1?VERB> + > + >>> + ) + (>> + > + + + > + > + )> + >>> + + >>> + ) + ( ) + ( 1> + > + > + > + > + > + >)> + )>) + (T + >)> + >) + (T )>) + ( 1> + > + > + > + > + > + >)>)> + > + > + ) + (T )>) + (> + > > + > + ) + (T + > + > >)> + > + > + + ) + (T > )>) + ( + + ,PS?ADJECTIVE> + >> + ) + ( + + ) + ( ,PS?OBJECT> + + ) + (T + )> + )> + > + + + + > + )>>)>)> + > + > + > + + + > ,P-ITBLLEN> + + ) + (T >)>> + T> +;"New ACLAUSE-WIN for TRAP retrofix 6/21/84" +> + + > + + > + + 0>> > + > + > + + + + > + + 0>> > + > + > +;"Print undefined word in input. + PTR points to the unknown word in P-LEXV" +*************** + +**** FILE SS:PARSER.ZIL.70, 6-9 (14077) +GPARSER.ZIL.44, 5-9 (21520) + + + + )> +*************** + +**** FILE SS:PARSER.ZIL.70, 6-18 (14337) + + >> 2> + 3>> + +**** FILE SS:GPARSER.ZIL.44, 5-21 (21866) + + + )> + + >> 2> + 3>> + +*************** + +**** FILE SS:PARSER.ZIL.70, 6-30 (14801) + the syntax is saved in P-SYNTAX." + + + + + + + + + + + + + + + + + + + + + + +) (DRIVE2 <>) PREP VERB TMP) + #DECL ((DRIVE1 DRIVE2) > + (SYN) (LEN NUM VERB PREP) FIX + (OBJ) ) + >> + +**** FILE SS:GPARSER.ZIL.44, 5-35 (22409) + the syntax is saved in P-SYNTAX." + + + + + + + + + + + +) (DRIVE2 <>) PREP VERB TMP) + >> + +*************** + +**** FILE SS:PARSER.ZIL.70, 7-16 (15733) + <0? ,P-NCN> + >> + <==? .PREP >>> + ) + (<==? > + <==? ,P-NCN 1>> + ) + (<==? > +**** FILE SS:GPARSER.ZIL.44, 5-63 (23149) + + >> + >>> + ) + ( > + > + ) + ( + > +*************** + +**** FILE SS:PARSER.ZIL.70, 7-29 (16213) + +**** FILE SS:GPARSER.ZIL.44, 5-77 (23658) + +*************** + +**** FILE SS:PARSER.ZIL.70, 7-48 (16834) + ( + + ) + (> +**** FILE SS:GPARSER.ZIL.44, 5-97 (24283) + ( + + ) + (> +*************** + +**** FILE SS:PARSER.ZIL.70, 7-57 (17136) + ) + (<0? > +**** FILE SS:GPARSER.ZIL.44, 5-106 (24580) + ) + (> +*************** + +**** FILE SS:PARSER.ZIL.70, 7-64 (17358) + )> +**** FILE SS:GPARSER.ZIL.44, 5-113 (24808) + + )> +*************** + +**** FILE SS:PARSER.ZIL.70, 7-69 (17547) + )>> +**** FILE SS:GPARSER.ZIL.44, 5-119 (25005) + )>> +*************** + +**** FILE SS:PARSER.ZIL.70, 8-2 (17680) +>) + + +**** FILE SS:GPARSER.ZIL.44, 6-2 (25137) + + )> + > + > + > +*************** + +**** FILE SS:PARSER.ZIL.70, 8-9 (17936) + )> + > )> +**** FILE SS:GPARSER.ZIL.44, 6-11 (25463) + + + + + + )> + > + + + + + )> +*************** + +**** FILE SS:PARSER.ZIL.70, 8-16 (18216) + )>> + + .THE?>> + +) WRD (FIRST?? T) (PN <>)) + #DECL ((BEG END) (CP) ) + ) + (T + >) + (T )> + > ,W?PERIOD> ) +**** FILE SS:GPARSER.ZIL.44, 6-28 (26098) + )>> +; .THE?>> +) "AUX" BEG END) + > + >) + (ELSE + > + >)> + > +) (Q? <>)) + ) + (T + > + T) + ( + ) + (.NOSP >) + (ELSE )> + + ) + ( + + ) + ( + + ) +*************** + +**** FILE SS:PARSER.ZIL.70, 8-33 (18853) + ( +**** FILE SS:GPARSER.ZIL.44, 6-65 (27256) + ( +*************** + +**** FILE SS:PARSER.ZIL.70, 8-42 (19098) +> + + > + )>> + +) "AUX" BEG END) + #DECL ((BPTR EPTR) FIX (BEG END) + (INSRT) ) + > + > + GPARSER.ZIL.44, 6-74 (27504) +> + + + ) + (T + > + )>)>> +) "AUX" BEG END) + >> + >> + +*************** + +**** FILE SS:PARSER.ZIL.70, 8-59 (19622) + + GPARSER.ZIL.44, 6-91 (28045) + + +*************** + +**** FILE SS:PARSER.ZIL.70, 8-67 (19811) + >> + )> + >)> + >>> +GPARSER.ZIL.44, 6-99 (28254) + >> + )> + >)> + >>> +PARSER.ZIL.70, 9-7 (20161) + > + +GPARSER.ZIL.44, 7-6 (28572) + > +PARSER.ZIL.70, 9-14 (20374) + (<==? .PREP> + >>)>>> + +) + + >> + + + + +**** FILE SS:GPARSER.ZIL.44, 7-12 (28750) + ( .PREP> + >>)>>> + + >> + + +*************** + +**** FILE SS:PARSER.ZIL.70, 9-33 (20920) + 1> + > + + > + > + + ) + (T + )>)> + + .OBJ)>) + (T )>> + +>) + > 0>> + > + ,P-PRSO> > + > + >>)> + > 0>> + > + ,P-PRSI> > + >> + 1> + >) + (T >)>)>)> + > +GPARSER.ZIL.44, 7-29 (29219) + 1> + > + + > + > + >> + + )> + + + ) + (T + )> + ) + (ELSE + )> + .OBJ)>) + (T )>> + + > 0>> + > + ,P-PRSI> >)> + > 0>> + > + ,P-PRSO> >)> + >> + > + >)> + + >>> + >)>)> + > +PARSER.ZIL.70, 10-16 (22541) + .NTBL> + +> + +> + +> +> + +> + +> + +> + +> + +> + + + + + + + + + + +> +> +> +) LEN WV WRD NW) + #DECL ((TBL) TABLE (PTR EPTR) + (BUT) (WV) ) + > + + + + +**** FILE SS:GPARSER.ZIL.44, 8-15 (30922) + .NTBL> +> +> +> +> +> +> +> +> +> + + + + + +> +) LEN WV WRD NW (WAS-ALL <>)) + > + + )> + +*************** + +**** FILE SS:PARSER.ZIL.70, 11-18 (23420) + >>) + (T + > + + + +**** FILE SS:GPARSER.ZIL.44, 9-13 (31575) + + >> + )> + ) + (T + > + ) + (T >)> + + + +*************** + +**** FILE SS:PARSER.ZIL.70, 11-32 (23882) + +**** FILE SS:GPARSER.ZIL.44, 9-32 (32194) + +*************** + +**** FILE SS:PARSER.ZIL.70, 11-37 (24047) + >)>) +**** FILE SS:GPARSER.ZIL.44, 9-37 (32362) + >)>) +*************** + +**** FILE SS:PARSER.ZIL.70, 11-45 (24306) + (<==? .WRD ,W?OF> + +**** FILE SS:GPARSER.ZIL.44, 9-45 (32624) + ( + +*************** + +**** FILE SS:PARSER.ZIL.70, 11-55 (24614) + > + > + )>>> + + + + + + + + + + + + + + +**** FILE SS:GPARSER.ZIL.44, 9-55 (32938) + > + > + )>>> + + + + + + + +*************** + +**** FILE SS:PARSER.ZIL.70, 12-5 (25004) + #DECL ((TBL) TABLE (XBITS BITS TLEN LEN) FIX (GWIM) + (VRB GCHECK) ) +**** FILE SS:GPARSER.ZIL.44, 9-70 (33289) +*************** + +**** FILE SS:PARSER.ZIL.70, 12-10 (25221) + ,P-ADJ > + + >)> + + + > + <0? ,P-GWIMBIT>> + )> + )> + > <0? ,P-SLOCBITS>> +**** FILE SS:GPARSER.ZIL.44, 9-73 (33403) + ,P-ADJ> + + + >) + % + '(> + > + + + + )) + (ELSE '( T))>>)> + + + > + > + )> + )> + > > +*************** + +**** FILE SS:PARSER.ZIL.70, 12-30 (25851) + + .TLEN> + >> + )> + )>)> + .TLEN>> + ;>>) + ( + >> + > +**** FILE SS:GPARSER.ZIL.44, 9-105 (34356) + )> + .TLEN>> + ) + ( + >> + > +*************** + +**** FILE SS:PARSER.ZIL.70, 12-46 (26479) + >>> + +**** FILE SS:GPARSER.ZIL.44, 9-117 (34789) + >>> + +*************** + +**** FILE SS:PARSER.ZIL.70, 12-55 (26732) + )> + > +**** FILE SS:GPARSER.ZIL.44, 9-126 (35051) + )> + > +*************** + +**** FILE SS:PARSER.ZIL.70, 12-62 (26953) + ,P-NC1) +**** FILE SS:GPARSER.ZIL.44, 9-133 (35278) + ,P-NC1) +*************** + +**** FILE SS:PARSER.ZIL.70, 12-70 (27155) +"I couldn't find a noun in that sentence!" CR>)> + > + > + )>) + ( .GCHECK> + GPARSER.ZIL.44, 9-141 (35483) +"There seems to be a noun missing in that sentence!" CR>)> + > + > + )>)> + .GCHECK> + + > +*************** + +**** FILE SS:PARSER.ZIL.70, 12-90 (27733) + (<0? .LEN> )> +**** FILE SS:GPARSER.ZIL.44, 9-163 (36188) + ( )> +*************** + +**** FILE SS:PARSER.ZIL.70, 12-96 (27882) + + +**** FILE SS:GPARSER.ZIL.44, 9-169 (36340) +; +*************** + +**** FILE SS:PARSER.ZIL.70, 12-118 (28506) +> +**** FILE SS:GPARSER.ZIL.44, 9-190 (36942) +;> +*************** + +**** FILE SS:PARSER.ZIL.70, 12-125 (28669) + + + + ) + (<==? .TBL ,P-PRSO> + >) + (T >)> +**** FILE SS:GPARSER.ZIL.44, 9-197 (37103) + + + >) + (ELSE + >)> +*************** + +**** FILE SS:PARSER.ZIL.70, 12-137 (29006) + + > )> +**** FILE SS:GPARSER.ZIL.44, 9-209 (37437) + + > )> +*************** + +**** FILE SS:PARSER.ZIL.70, 13-2 (29237) +> + (RMGL CNT) FIX (OBJ) OBJECT) +**** FILE SS:GPARSER.ZIL.44, 10-2 (37674) +PARSER.ZIL.70, 13-18 (29850) + >> + +**** FILE SS:GPARSER.ZIL.44, 10-15 (38182) + >> +*************** + +**** FILE SS:PARSER.ZIL.70, 13-30 (30287) + .LEN> +**** FILE SS:GPARSER.ZIL.44, 10-26 (38583) + .LEN> +*************** + +**** FILE SS:PARSER.ZIL.70, 13-35 (30460) + > + > + )>)>> + +GPARSER.ZIL.44, 10-31 (38759) + > + > + )>)>> +PARSER.ZIL.70, 13-48 (30964) + (T )>)>> + + + + + + + + (TBL) TABLE (LVL) FIX (FLS) ANY) + > + > +**** FILE SS:GPARSER.ZIL.44, 10-43 (39221) + (T )>)>> + + + +> + > +*************** + +**** FILE SS:PARSER.ZIL.70, 13-64 (31404) + > +**** FILE SS:GPARSER.ZIL.44, 10-56 (39570) + > +*************** + +**** FILE SS:PARSER.ZIL.70, 13-78 (31851) + >) (T )>>)>> + +> + .OBJ> + >> + +> + >>> +) + > > +**** FILE SS:GPARSER.ZIL.44, 10-70 (40020) + >) (T )>>)>> +> + .OBJ> + >> +> + >>> +) + > + + >> +*************** + +**** FILE SS:PARSER.ZIL.70, 14-10 (32567) + +**** FILE SS:GPARSER.ZIL.44, 11-12 (40728) + +*************** + +**** FILE SS:PARSER.ZIL.70, 14-17 (32785) + > +**** FILE SS:GPARSER.ZIL.44, 11-19 (40949) + > + >> +*************** + +**** FILE SS:PARSER.ZIL.70, 14-21 (32925) + (<==? > T> + >) + (T )> + > +**** FILE SS:GPARSER.ZIL.44, 11-24 (41129) + (> + >) + ( + > T>> + >) + (T )> + + > +*************** + +**** FILE SS:PARSER.ZIL.70, 14-34 (33300) + ( + )>)>)>>) + (T)>> + +) TMP) + #DECL ((LOSS) ) +**** FILE SS:GPARSER.ZIL.44, 11-43 (41675) + ( + > + )>)>)>>) + (T)>> +) TMP) +*************** + +**** FILE SS:PARSER.ZIL.70, 14-47 (33723) + + )> + + > + ) +**** FILE SS:GPARSER.ZIL.44, 11-56 (42106) + + )> + + > + ) +*************** + +**** FILE SS:PARSER.ZIL.70, 14-58 (34103) + (T)>> + +GPARSER.ZIL.44, 11-67 (42494) + (T)>> +PARSER.ZIL.70, 14-65 (34309) + > ) + ( )>>> +> ) + ( )>>> + +> +)) + #DECL ((RM OHERE) OBJECT (LIT) ) +**** FILE SS:GPARSER.ZIL.44, 11-74 (42696) + > + >>) + ( )>>> +> + ) + ( + )>>> +> +)) +*************** + +**** FILE SS:PARSER.ZIL.70, 15-20 (34949) + (> + > + ) +**** FILE SS:GPARSER.ZIL.44, 12-20 (43290) +*************** + +**** FILE SS:PARSER.ZIL.70, 15-28 (35168) + +**** FILE SS:GPARSER.ZIL.44, 12-24 (43402) + +*************** + +**** FILE SS:PARSER.ZIL.70, 15-37 (35474) + .LIT> + +> 0> ,W?IT>> + ) + (T <>>)>> +> 0> ,W?IT>> + ) + (T <>>)>> +**** FILE SS:GPARSER.ZIL.44, 12-33 (43711) + .LIT> +;> 0> ,W?IT>> + ) + (T <>>)>> +;> 0> ,W?IT>> + ) + (T <>>)>> +;"former CRUFTY routine, re-written by SWG" + ) + (> + <- 2> 1>>>> + ) + (>> + 1>>>>> + ) + (> >> + )> + > +*************** + diff --git a/parser.zap b/parser.zap new file mode 100644 index 0000000..645660a --- /dev/null +++ b/parser.zap @@ -0,0 +1,1290 @@ + + + .FUNCT PARSER,PTR=P-LEXSTART,WRD,VAL=0,VERB=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1 +?PRG1: IGRTR? 'CNT,P-ITBLLEN \?ELS5 + JUMP ?REP2 +?ELS5: PUT P-ITBL,CNT,0 + JUMP ?PRG1 +?REP2: SET 'P-ADVERB,FALSE-VALUE + SET 'P-MERGED,FALSE-VALUE + PUT P-PRSO,P-MATCHLEN,0 + PUT P-PRSI,P-MATCHLEN,0 + PUT P-BUTS,P-MATCHLEN,0 + ZERO? QUOTE-FLAG \?CND8 + EQUAL? WINNER,PLAYER /?CND8 + SET 'WINNER,PLAYER + LOC WINNER + FSET? STACK,VEHBIT /?CND13 + LOC WINNER >HERE +?CND13: CALL LIT?,HERE >LIT +?CND8: ZERO? P-CONT /?ELS18 + SET 'PTR,P-CONT + ZERO? SUPER-BRIEF \?CND20 + EQUAL? PLAYER,WINNER \?CND20 + CRLF +?CND20: SET 'P-CONT,FALSE-VALUE + JUMP ?CND16 +?ELS18: SET 'WINNER,PLAYER + SET 'QUOTE-FLAG,FALSE-VALUE + LOC WINNER + FSET? STACK,VEHBIT /?CND27 + LOC WINNER >HERE +?CND27: CALL LIT?,HERE >LIT + ZERO? SUPER-BRIEF \?CND30 + CRLF +?CND30: PRINTI ">" + READ P-INBUF,P-LEXV +?CND16: GETB P-LEXV,P-LEXWORDS >P-LEN + ZERO? P-LEN \?CND35 + PRINTI "I beg your pardon?" + CRLF + RFALSE +?CND35: SET 'LEN,P-LEN + SET 'P-DIR,FALSE-VALUE + SET 'P-NCN,0 + SET 'P-GETFLAGS,0 +?PRG40: DLESS? 'P-LEN,0 \?ELS44 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?REP41 +?ELS44: GET P-LEXV,PTR >WRD + ZERO? WRD \?THN47 + CALL NUMBER?,PTR >WRD + ZERO? WRD /?ELS46 +?THN47: EQUAL? WRD,W?TO \?ELS51 + EQUAL? VERB,ACT?TELL \?ELS51 + SET 'WRD,W?QUOTE + JUMP ?CND49 +?ELS51: EQUAL? WRD,W?THEN \?CND49 + ZERO? VERB \?CND49 + ZERO? QUOTE-FLAG \?CND49 + PUT P-ITBL,P-VERB,ACT?TELL + PUT P-ITBL,P-VERBN,0 + SET 'WRD,W?QUOTE +?CND49: EQUAL? WRD,W?THEN,W?PERIOD /?THN61 + EQUAL? WRD,W?QUOTE \?ELS60 +?THN61: EQUAL? WRD,W?QUOTE \?CND63 + ZERO? QUOTE-FLAG /?ELS68 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?CND63 +?ELS68: SET 'QUOTE-FLAG,TRUE-VALUE +?CND63: ZERO? P-LEN /?THN72 + ADD PTR,P-LEXELEN >P-CONT +?THN72: PUTB P-LEXV,P-LEXWORDS,P-LEN + JUMP ?REP41 +?ELS60: CALL WT?,WRD,PS?DIRECTION,P1?DIRECTION >VAL + ZERO? VAL /?ELS75 + EQUAL? VERB,FALSE-VALUE,ACT?WALK,ACT?FLY \?ELS75 + EQUAL? LEN,1 /?THN78 + EQUAL? LEN,2 \?ELS81 + EQUAL? VERB,ACT?WALK,ACT?FLY /?THN78 +?ELS81: ADD PTR,P-LEXELEN + GET P-LEXV,STACK >NW + EQUAL? NW,W?THEN,W?PERIOD,W?QUOTE \?ELS83 + LESS? LEN,2 \?THN78 +?ELS83: ZERO? QUOTE-FLAG /?ELS85 + EQUAL? LEN,2 \?ELS85 + EQUAL? NW,W?QUOTE /?THN78 +?ELS85: GRTR? LEN,2 \?ELS75 + EQUAL? NW,W?COMMA,W?AND \?ELS75 +?THN78: SET 'DIR,VAL + EQUAL? NW,W?COMMA,W?AND \?CND88 + ADD PTR,P-LEXELEN + PUT P-LEXV,STACK,W?THEN +?CND88: GRTR? LEN,2 /?CND42 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?REP41 +?ELS75: CALL WT?,WRD,PS?VERB,P1?VERB >VAL + ZERO? VAL /?ELS95 + ZERO? VERB \?ELS95 + SET 'VERB,VAL + PUT P-ITBL,P-VERB,VAL + PUT P-ITBL,P-VERBN,P-VTBL + PUT P-VTBL,0,WRD + MUL PTR,2 + ADD STACK,2 >NUM + GETB P-LEXV,NUM + PUTB P-VTBL,2,STACK + ADD NUM,1 + GETB P-LEXV,STACK + PUTB P-VTBL,3,STACK + JUMP ?CND42 +?ELS95: CALL WT?,WRD,PS?PREPOSITION,0 >VAL + ZERO? VAL \?THN100 + EQUAL? WRD,W?ALL,W?ONE /?THN104 + CALL WT?,WRD,PS?ADJECTIVE + ZERO? STACK \?THN104 + CALL WT?,WRD,PS?OBJECT + ZERO? STACK /?ELS99 +?THN104: SET 'VAL,0 \?ELS99 +?THN100: GRTR? P-LEN,0 \?ELS108 + ADD PTR,P-LEXELEN + GET P-LEXV,STACK + EQUAL? STACK,W?OF \?ELS108 + ZERO? VAL \?ELS108 + EQUAL? WRD,W?ALL,W?ONE,W?A /?ELS108 + JUMP ?CND42 +?ELS108: ZERO? VAL /?ELS112 + ZERO? P-LEN /?THN115 + ADD PTR,2 + GET P-LEXV,STACK + EQUAL? STACK,W?THEN,W?PERIOD \?ELS112 +?THN115: LESS? P-NCN,2 \?CND42 + PUT P-ITBL,P-PREP1,VAL + PUT P-ITBL,P-PREP1N,WRD + JUMP ?CND42 +?ELS112: EQUAL? P-NCN,2 \?ELS121 + PRINTI "I found too many nouns in that sentence." + CRLF + RFALSE +?ELS121: INC 'P-NCN + CALL CLAUSE,PTR,VAL,WRD >PTR + ZERO? PTR /FALSE + LESS? PTR,0 \?CND42 + SET 'QUOTE-FLAG,FALSE-VALUE + JUMP ?REP41 +?ELS99: CALL WT?,WRD,PS?BUZZ-WORD + ZERO? STACK /?ELS132 + JUMP ?CND42 +?ELS132: EQUAL? VERB,ACT?TELL \?ELS134 + CALL WT?,WRD,PS?VERB,P1?VERB + ZERO? STACK /?ELS134 + PRINTI "Please consult your manual for the correct way to talk to other people or creatures." + CRLF + RFALSE +?ELS134: CALL CANT-USE,PTR + RFALSE +?ELS46: CALL UNKNOWN-WORD,PTR + RFALSE +?CND42: SET 'LW,WRD + ADD PTR,P-LEXELEN >PTR + JUMP ?PRG40 +?REP41: ZERO? DIR /?CND143 + SET 'PRSA,V?WALK + EQUAL? VERB,ACT?FLY \?ELS149 + SET 'TRY-FLY,TRUE-VALUE + JUMP ?CND147 +?ELS149: SET 'TRY-FLY,FALSE-VALUE +?CND147: SET 'PRSO,DIR + SET 'P-WALK-DIR,DIR + RETURN TRUE-VALUE +?CND143: SET 'P-WALK-DIR,FALSE-VALUE + ZERO? P-OFLAG /?CND152 + CALL ORPHAN-MERGE +?CND152: CALL SYNTAX-CHECK + ZERO? STACK /FALSE + CALL SNARF-OBJECTS + ZERO? STACK /FALSE + CALL TAKE-CHECK + ZERO? STACK /FALSE + CALL MANY-CHECK + ZERO? STACK /FALSE + RTRUE + + + .FUNCT WT?,PTR,BIT,B1=5,OFFS=P-P1OFF,TYP + GETB PTR,P-PSOFF >TYP + BTST TYP,BIT \FALSE + GRTR? B1,4 /TRUE + BAND TYP,P-P1BITS >TYP + EQUAL? TYP,B1 /?CND13 + INC 'OFFS +?CND13: GETB PTR,OFFS + RSTACK + + + .FUNCT CLAUSE,PTR,VAL,WRD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1 + SUB P-NCN,1 + MUL STACK,2 >OFF + ZERO? VAL /?ELS3 + ADD P-PREP1,OFF >NUM + PUT P-ITBL,NUM,VAL + ADD NUM,1 + PUT P-ITBL,STACK,WRD + ADD PTR,P-LEXELEN >PTR + JUMP ?CND1 +?ELS3: INC 'P-LEN +?CND1: ZERO? P-LEN \?CND6 + DEC 'P-NCN + RETURN -1 +?CND6: ADD P-NC1,OFF >NUM + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,NUM,STACK + GET P-LEXV,PTR + EQUAL? STACK,W?THE,W?A,W?AN \?CND9 + GET P-ITBL,NUM + ADD STACK,4 + PUT P-ITBL,NUM,STACK +?CND9: +?PRG12: DLESS? 'P-LEN,0 \?CND14 + ADD NUM,1 >?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + RETURN -1 +?CND14: GET P-LEXV,PTR >WRD + ZERO? WRD \?THN20 + CALL NUMBER?,PTR >WRD + ZERO? WRD /?ELS19 +?THN20: ZERO? P-LEN \?ELS24 + SET 'NW,0 + JUMP ?CND22 +?ELS24: ADD PTR,P-LEXELEN + GET P-LEXV,STACK >NW +?CND22: EQUAL? WRD,W?AND,W?COMMA \?ELS29 + SET 'ANDFLG,TRUE-VALUE + JUMP ?CND17 +?ELS29: EQUAL? WRD,W?ALL,W?ONE \?ELS31 + EQUAL? NW,W?OF \?CND17 + DEC 'P-LEN + ADD PTR,P-LEXELEN >PTR + JUMP ?CND17 +?ELS31: EQUAL? WRD,W?THEN,W?PERIOD /?THN37 + CALL WT?,WRD,PS?PREPOSITION + ZERO? STACK /?ELS36 + GET P-ITBL,P-VERB + ZERO? STACK /?ELS36 + ZERO? FIRST?? \?ELS36 +?THN37: INC 'P-LEN + ADD NUM,1 >?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + SUB PTR,P-LEXELEN + RSTACK +?ELS36: CALL WT?,WRD,PS?OBJECT + ZERO? STACK /?ELS42 + CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE + ZERO? STACK /?ELS45 + ZERO? NW /?ELS45 + CALL WT?,NW,PS?OBJECT + ZERO? STACK /?ELS45 + JUMP ?CND17 +?ELS45: ZERO? ANDFLG \?ELS49 + EQUAL? NW,W?BUT,W?EXCEPT /?ELS49 + EQUAL? NW,W?AND,W?COMMA /?ELS49 + ADD NUM,1 >?TMP1 + ADD PTR,2 + MUL STACK,2 + ADD P-LEXV,STACK + PUT P-ITBL,?TMP1,STACK + RETURN PTR +?ELS49: SET 'ANDFLG,FALSE-VALUE + JUMP ?CND17 +?ELS42: ZERO? P-MERGED \?THN58 + ZERO? P-OFLAG \?THN58 + GET P-ITBL,P-VERB + ZERO? STACK /?ELS55 +?THN58: CALL WT?,WRD,PS?ADJECTIVE + ZERO? STACK \?CND17 + CALL WT?,WRD,PS?BUZZ-WORD + ZERO? STACK /?ELS55 + JUMP ?CND17 +?ELS55: ZERO? ANDFLG /?ELS63 + CALL WT?,WRD,PS?DIRECTION + ZERO? STACK \?THN66 + CALL WT?,WRD,PS?VERB + ZERO? STACK /?ELS63 +?THN66: SUB PTR,4 >PTR + ADD PTR,2 + PUT P-LEXV,STACK,W?THEN + ADD P-LEN,2 >P-LEN + JUMP ?CND17 +?ELS63: CALL WT?,WRD,PS?PREPOSITION + ZERO? STACK /?ELS69 + JUMP ?CND17 +?ELS69: CALL CANT-USE,PTR + RFALSE +?ELS19: CALL UNKNOWN-WORD,PTR + RFALSE +?CND17: SET 'LW,WRD + SET 'FIRST??,FALSE-VALUE + ADD PTR,P-LEXELEN >PTR + JUMP ?PRG12 + + + .FUNCT NUMBER?,PTR,CNT,BPTR,CHR,SUM=0,TIM=0,?TMP1 + MUL PTR,2 + ADD P-LEXV,STACK + GETB STACK,2 >CNT + MUL PTR,2 + ADD P-LEXV,STACK + GETB STACK,3 >BPTR +?PRG1: DLESS? 'CNT,0 \?ELS5 + JUMP ?REP2 +?ELS5: GETB P-INBUF,BPTR >CHR + EQUAL? CHR,58 \?ELS10 + SET 'TIM,SUM + SET 'SUM,0 + JUMP ?CND8 +?ELS10: GRTR? SUM,10000 /FALSE + LESS? CHR,58 \FALSE + GRTR? CHR,47 \FALSE + MUL SUM,10 >?TMP1 + SUB CHR,48 + ADD ?TMP1,STACK >SUM +?CND8: INC 'BPTR + JUMP ?PRG1 +?REP2: PUT P-LEXV,PTR,W?INTNUM + GRTR? SUM,5000 /FALSE + ZERO? TIM /?CND19 + LESS? TIM,8 \?ELS27 + ADD TIM,12 >TIM + JUMP ?CND25 +?ELS27: GRTR? TIM,23 /FALSE +?CND25: MUL TIM,60 + ADD SUM,STACK >SUM +?CND19: SET 'P-NUMBER,SUM + RETURN W?INTNUM + + + .FUNCT ORPHAN-MERGE,CNT=-1,TEMP,VERB,BEG,END,ADJ=0,WRD,?TMP1 + SET 'P-OFLAG,FALSE-VALUE + GET P-ITBL,P-VERB >VERB + ZERO? VERB /?ELS3 + GET P-OTBL,P-VERB + EQUAL? VERB,STACK \FALSE +?ELS3: EQUAL? P-NCN,2 /FALSE + GET P-OTBL,P-NC1 + EQUAL? STACK,1 \?ELS9 + GET P-ITBL,P-PREP1 >TEMP + GET P-OTBL,P-PREP1 + EQUAL? TEMP,STACK /?THN13 + ZERO? TEMP \FALSE +?THN13: GET P-ITBL,P-NC1 + PUT P-OTBL,P-NC1,STACK + GET P-ITBL,P-NC1L + PUT P-OTBL,P-NC1L,STACK + JUMP ?CND1 +?ELS9: GET P-OTBL,P-NC2 + EQUAL? STACK,1 \?ELS18 + GET P-ITBL,P-PREP1 >TEMP + GET P-OTBL,P-PREP2 + EQUAL? TEMP,STACK /?THN22 + ZERO? TEMP \FALSE +?THN22: GET P-ITBL,P-NC1 + PUT P-OTBL,P-NC2,STACK + GET P-ITBL,P-NC1L + PUT P-OTBL,P-NC2L,STACK + SET 'P-NCN,2 + JUMP ?CND1 +?ELS18: ZERO? P-ACLAUSE /?CND1 + EQUAL? P-NCN,1 /?ELS31 + SET 'P-ACLAUSE,FALSE-VALUE + RFALSE +?ELS31: GET P-ITBL,P-NC1 >BEG + GET P-ITBL,P-NC1L >END +?PRG34: EQUAL? BEG,END \?ELS38 + ZERO? ADJ /?ELS41 + CALL ACLAUSE-WIN,ADJ + JUMP ?CND29 +?ELS41: SET 'P-ACLAUSE,FALSE-VALUE + RFALSE +?ELS38: GET BEG,0 >WRD + GETB WRD,P-PSOFF + BTST STACK,PS?ADJECTIVE \?ELS46 + ZERO? ADJ \?ELS46 + SET 'ADJ,WRD + JUMP ?CND36 +?ELS46: GETB WRD,P-PSOFF + BTST STACK,PS?OBJECT /?THN51 + EQUAL? WRD,W?ONE \?CND36 +?THN51: EQUAL? WRD,P-ANAM,W?ONE \FALSE + CALL ACLAUSE-WIN,ADJ + JUMP ?CND29 +?CND36: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG34 +?CND29: +?CND1: +?PRG58: IGRTR? 'CNT,P-ITBLLEN \?ELS62 + SET 'P-MERGED,TRUE-VALUE + RTRUE +?ELS62: GET P-OTBL,CNT + PUT P-ITBL,CNT,STACK + JUMP ?PRG58 + + + .FUNCT ACLAUSE-WIN,ADJ + SET 'P-CCSRC,P-OTBL + ADD P-ACLAUSE,1 + CALL CLAUSE-COPY,P-ACLAUSE,STACK,ADJ + GET P-OTBL,P-NC2 + ZERO? STACK /?ELS2 + SET 'P-NCN,2 +?ELS2: SET 'P-ACLAUSE,FALSE-VALUE + RTRUE + + + .FUNCT WORD-PRINT,CNT,BUF +?PRG1: DLESS? 'CNT,0 /TRUE + GETB P-INBUF,BUF + PRINTC STACK + INC 'BUF + JUMP ?PRG1 + + + .FUNCT UNKNOWN-WORD,PTR,BUF,?TMP1 + PRINTI "I don't know the word """ + MUL PTR,2 >BUF + ADD P-LEXV,BUF + GETB STACK,2 >?TMP1 + ADD P-LEXV,BUF + GETB STACK,3 + CALL WORD-PRINT,?TMP1,STACK + PRINTI """." + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-OFLAG,FALSE-VALUE + RETURN P-OFLAG + + + .FUNCT CANT-USE,PTR,BUF,?TMP1 + PRINTI "I can't use the word """ + MUL PTR,2 >BUF + ADD P-LEXV,BUF + GETB STACK,2 >?TMP1 + ADD P-LEXV,BUF + GETB STACK,3 + CALL WORD-PRINT,?TMP1,STACK + PRINTI """ here." + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-OFLAG,FALSE-VALUE + RETURN P-OFLAG + + + .FUNCT SYNTAX-CHECK,SYN,LEN,NUM,OBJ,DRIVE1=0,DRIVE2=0,PREP,VERB,TMP,?TMP2,?TMP1 + GET P-ITBL,P-VERB >VERB + ZERO? VERB \?CND1 + PRINTI "I can't find a verb in that sentence!" + CRLF + RFALSE +?CND1: SUB 255,VERB + GET VERBS,STACK >SYN + GETB SYN,0 >LEN + INC 'SYN +?PRG6: GETB SYN,P-SBITS + BAND STACK,P-SONUMS >NUM + GRTR? P-NCN,NUM \?ELS10 + JUMP ?CND8 +?ELS10: LESS? NUM,1 /?ELS12 + ZERO? P-NCN \?ELS12 + GET P-ITBL,P-PREP1 >PREP + ZERO? PREP /?THN15 + GETB SYN,P-SPREP1 + EQUAL? PREP,STACK \?ELS12 +?THN15: SET 'DRIVE1,SYN + JUMP ?CND8 +?ELS12: GETB SYN,P-SPREP1 >?TMP1 + GET P-ITBL,P-PREP1 + EQUAL? ?TMP1,STACK \?CND8 + EQUAL? NUM,2 \?ELS21 + EQUAL? P-NCN,1 \?ELS21 + SET 'DRIVE2,SYN + JUMP ?CND8 +?ELS21: GETB SYN,P-SPREP2 >?TMP1 + GET P-ITBL,P-PREP2 + EQUAL? ?TMP1,STACK \?CND8 + CALL SYNTAX-FOUND,SYN + RTRUE +?CND8: DLESS? 'LEN,1 \?ELS28 + ZERO? DRIVE1 \?REP7 + ZERO? DRIVE2 /?ELS31 + JUMP ?REP7 +?ELS31: PRINTI "I don't understand that sentence." + CRLF + RFALSE +?ELS28: ADD SYN,P-SYNLEN >SYN + JUMP ?PRG6 +?REP7: ZERO? DRIVE1 /?ELS44 + GETB DRIVE1,P-SFWIM1 >?TMP2 + GETB DRIVE1,P-SLOC1 >?TMP1 + GETB DRIVE1,P-SPREP1 + CALL GWIM,?TMP2,?TMP1,STACK >OBJ + ZERO? OBJ /?ELS44 + PUT P-PRSO,P-MATCHLEN,1 + PUT P-PRSO,1,OBJ + CALL SYNTAX-FOUND,DRIVE1 + RSTACK +?ELS44: ZERO? DRIVE2 /?ELS48 + GETB DRIVE2,P-SFWIM2 >?TMP2 + GETB DRIVE2,P-SLOC2 >?TMP1 + GETB DRIVE2,P-SPREP2 + CALL GWIM,?TMP2,?TMP1,STACK >OBJ + ZERO? OBJ /?ELS48 + PUT P-PRSI,P-MATCHLEN,1 + PUT P-PRSI,1,OBJ + CALL SYNTAX-FOUND,DRIVE2 + RSTACK +?ELS48: EQUAL? VERB,ACT?FIND \?ELS52 + PRINTI "I can't answer that question." + CRLF + RFALSE +?ELS52: EQUAL? WINNER,PLAYER /?ELS56 + CALL CANT-ORPHAN + RSTACK +?ELS56: CALL ORPHAN,DRIVE1,DRIVE2 + PRINTI "What do you want to " + GET P-OTBL,P-VERBN >TMP + ZERO? TMP \?ELS63 + PRINTI "tell" + JUMP ?CND61 +?ELS63: GETB P-VTBL,2 + ZERO? STACK \?ELS67 + GET TMP,0 + PRINTB STACK + JUMP ?CND61 +?ELS67: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK + PUTB P-VTBL,2,0 +?CND61: ZERO? DRIVE2 /?CND70 + CALL CLAUSE-PRINT,P-NC1,P-NC1L +?CND70: SET 'P-OFLAG,TRUE-VALUE + ZERO? DRIVE1 /?ELS78 + GETB DRIVE1,P-SPREP1 + JUMP ?CND74 +?ELS78: GETB DRIVE2,P-SPREP2 +?CND74: CALL PREP-PRINT,STACK + PRINTI "?" + CRLF + RFALSE + + + .FUNCT CANT-ORPHAN + PRINTI """I don't understand! What are you referring to?""" + CRLF + RFALSE + + + .FUNCT ORPHAN,D1,D2,CNT=-1 + PUT P-OCLAUSE,P-MATCHLEN,0 + SET 'P-CCSRC,P-ITBL +?PRG1: IGRTR? 'CNT,P-ITBLLEN \?ELS5 + JUMP ?REP2 +?ELS5: GET P-ITBL,CNT + PUT P-OTBL,CNT,STACK + JUMP ?PRG1 +?REP2: EQUAL? P-NCN,2 \?CND8 + CALL CLAUSE-COPY,P-NC2,P-NC2L +?CND8: LESS? P-NCN,1 /?CND11 + CALL CLAUSE-COPY,P-NC1,P-NC1L +?CND11: ZERO? D1 /?ELS18 + GETB D1,P-SPREP1 + PUT P-OTBL,P-PREP1,STACK + PUT P-OTBL,P-NC1,1 + RTRUE +?ELS18: ZERO? D2 /FALSE + GETB D2,P-SPREP2 + PUT P-OTBL,P-PREP2,STACK + PUT P-OTBL,P-NC2,1 + RTRUE + + + .FUNCT CLAUSE-PRINT,BPTR,EPTR,THE?=1,?TMP1 + GET P-ITBL,BPTR >?TMP1 + GET P-ITBL,EPTR + CALL BUFFER-PRINT,?TMP1,STACK,THE? + RSTACK + + + .FUNCT BUFFER-PRINT,BEG,END,CP,NOSP=0,WRD,FIRST??=1,PN=0,?TMP1 +?PRG1: EQUAL? BEG,END /TRUE + ZERO? NOSP /?ELS10 + SET 'NOSP,FALSE-VALUE + JUMP ?CND8 +?ELS10: PRINTI " " +?CND8: GET BEG,0 >WRD + EQUAL? WRD,W?PERIOD \?ELS18 + SET 'NOSP,TRUE-VALUE + JUMP ?CND3 +?ELS18: ZERO? FIRST?? /?CND21 + ZERO? PN \?CND21 + ZERO? CP /?CND21 + PRINTI "the " +?CND21: ZERO? P-OFLAG \?THN31 + ZERO? P-MERGED /?ELS30 +?THN31: PRINTB WRD + JUMP ?CND28 +?ELS30: EQUAL? WRD,W?IT \?ELS34 + CALL ACCESSIBLE?,P-IT-OBJECT + ZERO? STACK /?ELS34 + PRINTD P-IT-OBJECT + JUMP ?CND28 +?ELS34: GETB BEG,2 >?TMP1 + GETB BEG,3 + CALL WORD-PRINT,?TMP1,STACK +?CND28: SET 'FIRST??,FALSE-VALUE +?CND3: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT PREP-PRINT,PREP,WRD + ZERO? PREP /FALSE + PRINTI " " + CALL PREP-FIND,PREP >WRD + PRINTB WRD + RTRUE + + + .FUNCT CLAUSE-COPY,BPTR,EPTR,INSRT=0,BEG,END + GET P-CCSRC,BPTR >BEG + GET P-CCSRC,EPTR >END + GET P-OCLAUSE,P-MATCHLEN + MUL STACK,P-LEXELEN + ADD STACK,2 + ADD P-OCLAUSE,STACK + PUT P-OTBL,BPTR,STACK +?PRG1: EQUAL? BEG,END \?ELS5 + GET P-OCLAUSE,P-MATCHLEN + MUL STACK,P-LEXELEN + ADD STACK,2 + ADD P-OCLAUSE,STACK + PUT P-OTBL,EPTR,STACK + RTRUE +?ELS5: ZERO? INSRT /?CND8 + GET BEG,0 + EQUAL? P-ANAM,STACK \?CND8 + CALL CLAUSE-ADD,INSRT +?CND8: GET BEG,0 + CALL CLAUSE-ADD,STACK +?CND3: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT CLAUSE-ADD,WRD,PTR + GET P-OCLAUSE,P-MATCHLEN + ADD STACK,2 >PTR + SUB PTR,1 + PUT P-OCLAUSE,STACK,WRD + PUT P-OCLAUSE,PTR,0 + PUT P-OCLAUSE,P-MATCHLEN,PTR + RTRUE + + + .FUNCT PREP-FIND,PREP,CNT=0,SIZE + GET PREPOSITIONS,0 + MUL STACK,2 >SIZE +?PRG1: IGRTR? 'CNT,SIZE /FALSE + GET PREPOSITIONS,CNT + EQUAL? STACK,PREP \?PRG1 + SUB CNT,1 + GET PREPOSITIONS,STACK + RSTACK + + + .FUNCT SYNTAX-FOUND,SYN + SET 'P-SYNTAX,SYN + GETB SYN,P-SACTION >PRSA + RETURN PRSA + + + .FUNCT GWIM,GBIT,LBIT,PREP,OBJ + EQUAL? GBIT,RLANDBIT \?CND1 + RETURN ROOMS +?CND1: SET 'P-GWIMBIT,GBIT + SET 'P-SLOCBITS,LBIT + PUT P-MERGE,P-MATCHLEN,0 + CALL GET-OBJECT,P-MERGE,FALSE-VALUE + ZERO? STACK /?ELS8 + SET 'P-GWIMBIT,0 + GET P-MERGE,P-MATCHLEN + EQUAL? STACK,1 \FALSE + GET P-MERGE,1 >OBJ + PRINTI "(" + ZERO? PREP /?CND16 + CALL PREP-FIND,PREP + PRINTB STACK + PRINTI " the " +?CND16: PRINTD OBJ + PRINTI ")" + CRLF + RETURN OBJ +?ELS8: SET 'P-GWIMBIT,0 + RFALSE + + + .FUNCT SNARF-OBJECTS,PTR + GET P-ITBL,P-NC1 >PTR + ZERO? PTR /?CND1 + GETB P-SYNTAX,P-SLOC1 >P-SLOCBITS + GET P-ITBL,P-NC1L + CALL SNARFEM,PTR,STACK,P-PRSO + ZERO? STACK /FALSE + GET P-BUTS,P-MATCHLEN + ZERO? STACK /?CND1 + CALL BUT-MERGE,P-PRSO >P-PRSO +?CND1: GET P-ITBL,P-NC2 >PTR + ZERO? PTR /TRUE + GETB P-SYNTAX,P-SLOC2 >P-SLOCBITS + GET P-ITBL,P-NC2L + CALL SNARFEM,PTR,STACK,P-PRSI + ZERO? STACK /FALSE + GET P-BUTS,P-MATCHLEN + ZERO? STACK /TRUE + GET P-PRSI,P-MATCHLEN + EQUAL? STACK,1 \?ELS18 + CALL BUT-MERGE,P-PRSO >P-PRSO + RTRUE +?ELS18: CALL BUT-MERGE,P-PRSI >P-PRSI + RTRUE + + + .FUNCT BUT-MERGE,TBL,LEN,BUTLEN,CNT=1,MATCHES=0,OBJ,NTBL + GET TBL,P-MATCHLEN >LEN + PUT P-MERGE,P-MATCHLEN,0 +?PRG1: DLESS? 'LEN,0 \?ELS5 + JUMP ?REP2 +?ELS5: GET TBL,CNT >OBJ + CALL ZMEMQ,OBJ,P-BUTS + ZERO? STACK /?ELS7 + JUMP ?CND3 +?ELS7: ADD MATCHES,1 + PUT P-MERGE,STACK,OBJ + INC 'MATCHES +?CND3: INC 'CNT + JUMP ?PRG1 +?REP2: PUT P-MERGE,P-MATCHLEN,MATCHES + SET 'NTBL,P-MERGE + SET 'P-MERGE,TBL + RETURN NTBL + + + .FUNCT SNARFEM,PTR,EPTR,TBL,BUT=0,LEN,WV,WRD,NW + SET 'P-AND,FALSE-VALUE + SET 'P-GETFLAGS,0 + SET 'P-CSPTR,PTR + SET 'P-CEPTR,EPTR + PUT P-BUTS,P-MATCHLEN,0 + PUT TBL,P-MATCHLEN,0 + GET PTR,0 >WRD +?PRG1: EQUAL? PTR,EPTR \?ELS5 + ZERO? BUT /?ORP9 + PUSH BUT + JUMP ?THN6 +?ORP9: PUSH TBL +?THN6: CALL GET-OBJECT,STACK + RSTACK +?ELS5: GET PTR,P-LEXELEN >NW + EQUAL? WRD,W?ALL \?ELS14 + SET 'P-GETFLAGS,P-ALL + EQUAL? NW,W?OF \?CND12 + ADD PTR,P-WORDLEN >PTR + JUMP ?CND12 +?ELS14: EQUAL? WRD,W?BUT,W?EXCEPT \?ELS19 + ZERO? BUT /?ORP25 + PUSH BUT + JUMP ?THN22 +?ORP25: PUSH TBL +?THN22: CALL GET-OBJECT,STACK + ZERO? STACK /FALSE + SET 'BUT,P-BUTS + PUT BUT,P-MATCHLEN,0 + JUMP ?CND3 +?ELS19: EQUAL? WRD,W?A,W?ONE \?ELS27 + ZERO? P-ADJ \?ELS30 + SET 'P-GETFLAGS,P-ONE + EQUAL? NW,W?OF \?CND3 + ADD PTR,P-WORDLEN >PTR + JUMP ?CND3 +?ELS30: SET 'P-NAM,P-ONEOBJ + ZERO? BUT /?ORP41 + PUSH BUT + JUMP ?THN38 +?ORP41: PUSH TBL +?THN38: CALL GET-OBJECT,STACK + ZERO? STACK /FALSE + ZERO? NW /TRUE + JUMP ?CND3 +?ELS27: EQUAL? WRD,W?AND,W?COMMA \?ELS45 + EQUAL? NW,W?AND,W?COMMA /?ELS45 + SET 'P-AND,TRUE-VALUE + ZERO? BUT /?ORP53 + PUSH BUT + JUMP ?THN50 +?ORP53: PUSH TBL +?THN50: CALL GET-OBJECT,STACK + ZERO? STACK \?CND12 + RFALSE +?ELS45: CALL WT?,WRD,PS?BUZZ-WORD + ZERO? STACK /?ELS55 + JUMP ?CND3 +?ELS55: EQUAL? WRD,W?AND,W?COMMA \?ELS57 + JUMP ?CND3 +?ELS57: EQUAL? WRD,W?OF \?ELS59 + ZERO? P-GETFLAGS \?CND12 + SET 'P-GETFLAGS,P-INHIBIT + JUMP ?CND12 +?ELS59: CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE >WV + ZERO? WV /?ELS64 + ZERO? P-ADJ \?ELS64 + SET 'P-ADJ,WV + SET 'P-ADJN,WRD + JUMP ?CND3 +?ELS64: CALL WT?,WRD,PS?OBJECT,P1?OBJECT + ZERO? STACK /?CND3 + SET 'P-NAM,WRD + SET 'P-ONEOBJ,WRD +?CND12: +?CND3: EQUAL? PTR,EPTR /?PRG1 + ADD PTR,P-WORDLEN >PTR + SET 'WRD,NW + JUMP ?PRG1 + + + .FUNCT GET-OBJECT,TBL,VRB=1,BITS,LEN,XBITS,TLEN,GCHECK=0,OLEN=0,OBJ + SET 'XBITS,P-SLOCBITS + GET TBL,P-MATCHLEN >TLEN + BTST P-GETFLAGS,P-INHIBIT /TRUE + ZERO? P-NAM \?CND4 + ZERO? P-ADJ /?CND4 + CALL WT?,P-ADJN,PS?OBJECT,P1?OBJECT + ZERO? STACK /?CND4 + SET 'P-NAM,P-ADJN + SET 'P-ADJ,FALSE-VALUE +?CND4: ZERO? P-NAM \?CND9 + ZERO? P-ADJ \?CND9 + EQUAL? P-GETFLAGS,P-ALL /?CND9 + ZERO? P-GWIMBIT \?CND9 + ZERO? VRB /FALSE + PRINTI "I couldn't find a noun in that sentence!" + CRLF + RFALSE +?CND9: EQUAL? P-GETFLAGS,P-ALL \?THN23 + ZERO? P-SLOCBITS \?CND20 +?THN23: SET 'P-SLOCBITS,-1 +?CND20: SET 'P-TABLE,TBL +?PRG25: ZERO? GCHECK /?ELS29 + CALL GLOBAL-CHECK,TBL + JUMP ?CND27 +?ELS29: ZERO? LIT /?CND33 + FCLEAR PLAYER,TRANSBIT + CALL DO-SL,HERE,SOG,SIR + FSET PLAYER,TRANSBIT +?CND33: CALL DO-SL,PLAYER,SH,SC + GET TBL,0 + EQUAL? STACK,TLEN \?CND27 + ZERO? P-ADJ /?CND40 + EQUAL? P-NAM,W?SPELL,FALSE-VALUE \?CND40 + SET 'P-NAM,P-ADJN +?CND40: CALL SPELL-CHECK,TBL,P-NAM +?CND27: GET TBL,P-MATCHLEN + SUB STACK,TLEN >LEN + BTST P-GETFLAGS,P-ALL \?ELS47 + JUMP ?CND45 +?ELS47: BTST P-GETFLAGS,P-ONE \?ELS49 + ZERO? LEN /?ELS49 + EQUAL? LEN,1 /?CND52 + RANDOM LEN + GET TBL,STACK + PUT TBL,1,STACK + PRINTI "(How about the " + GET TBL,1 + PRINTD STACK + PRINTI "?)" + CRLF +?CND52: PUT TBL,P-MATCHLEN,1 + JUMP ?CND45 +?ELS49: GRTR? LEN,1 /?THN61 + ZERO? LEN \?ELS60 + EQUAL? P-SLOCBITS,-1 /?ELS60 +?THN61: EQUAL? P-SLOCBITS,-1 \?ELS67 + SET 'P-SLOCBITS,XBITS + SET 'OLEN,LEN + GET TBL,P-MATCHLEN + SUB STACK,LEN + PUT TBL,P-MATCHLEN,STACK + JUMP ?PRG25 +?ELS67: ZERO? LEN \?CND70 + SET 'LEN,OLEN +?CND70: EQUAL? WINNER,PLAYER /?ELS75 + CALL CANT-ORPHAN + RFALSE +?ELS75: ZERO? VRB /?ELS77 + ZERO? P-NAM /?ELS77 + CALL WHICH-PRINT,TLEN,LEN,TBL + EQUAL? TBL,P-PRSO \?ELS84 + PUSH P-NC1 + JUMP ?CND80 +?ELS84: PUSH P-NC2 +?CND80: SET 'P-ACLAUSE,STACK + SET 'P-AADJ,P-ADJ + SET 'P-ANAM,P-NAM + CALL ORPHAN,FALSE-VALUE,FALSE-VALUE + SET 'P-OFLAG,TRUE-VALUE + JUMP ?CND73 +?ELS77: ZERO? VRB /?CND73 + PRINTI "I couldn't find a noun in that sentence!" + CRLF +?CND73: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RFALSE +?ELS60: ZERO? LEN \?ELS93 + ZERO? GCHECK /?ELS93 + ZERO? VRB /?CND96 + ZERO? LIT /?ELS102 + CALL OBJ-FOUND,NOT-HERE-OBJECT,TBL + SET 'P-XNAM,P-NAM + SET 'P-XADJ,P-ADJ + SET 'P-XADJN,P-ADJN + SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + SET 'P-ADJN,FALSE-VALUE + RTRUE +?ELS102: PRINTI "It's too dark to see!" + CRLF +?CND96: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RFALSE +?ELS93: ZERO? LEN \?CND45 + SET 'GCHECK,TRUE-VALUE + JUMP ?PRG25 +?CND45: SET 'P-SLOCBITS,XBITS + SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RTRUE + + + .FUNCT MOBY-FIND,TBL,FOO,LEN + SET 'P-SLOCBITS,-1 + SET 'P-TABLE,TBL + SET 'P-NAM,P-XNAM + SET 'P-ADJ,P-XADJ + PUT TBL,P-MATCHLEN,0 + FIRST? ROOMS >FOO /?KLU17 +?KLU17: +?PRG1: ZERO? FOO \?ELS5 + JUMP ?REP2 +?ELS5: CALL SEARCH-LIST,FOO,TBL,P-SRCALL + NEXT? FOO >FOO /?KLU18 +?KLU18: JUMP ?PRG1 +?REP2: GET TBL,P-MATCHLEN >LEN + ZERO? LEN \?CND8 + CALL DO-SL,LOCAL-GLOBALS,1,1 +?CND8: GET TBL,P-MATCHLEN >LEN + ZERO? LEN \?CND11 + CALL DO-SL,ROOMS,1,1 +?CND11: GET TBL,P-MATCHLEN >LEN + EQUAL? LEN,1 \?CND14 + GET TBL,1 >P-MOBY-FOUND +?CND14: SET 'P-NAM,FALSE-VALUE + SET 'P-ADJ,FALSE-VALUE + RETURN LEN + + + .FUNCT WHICH-PRINT,TLEN,LEN,TBL,OBJ,RLEN + SET 'RLEN,LEN + PRINTI "Which" + ZERO? P-OFLAG \?THN6 + ZERO? P-MERGED \?THN6 + ZERO? P-AND /?ELS5 +?THN6: PRINTI " " + PRINTB P-NAM + JUMP ?CND3 +?ELS5: EQUAL? TBL,P-PRSO \?ELS11 + CALL CLAUSE-PRINT,P-NC1,P-NC1L,FALSE-VALUE + JUMP ?CND3 +?ELS11: CALL CLAUSE-PRINT,P-NC2,P-NC2L,FALSE-VALUE +?CND3: PRINTI " do you mean, " +?PRG16: INC 'TLEN + GET TBL,TLEN >OBJ + PRINTI "the " + PRINTD OBJ + EQUAL? LEN,2 \?ELS22 + EQUAL? RLEN,2 /?CND23 + PRINTI "," +?CND23: PRINTI " or " + JUMP ?CND20 +?ELS22: GRTR? LEN,2 \?CND20 + PRINTI ", " +?CND20: DLESS? 'LEN,1 \?PRG16 + PRINTR "?" + + + .FUNCT GLOBAL-CHECK,TBL,LEN,RMG,RMGL,CNT=0,OBJ,OBITS,FOO + GET TBL,P-MATCHLEN >LEN + SET 'OBITS,P-SLOCBITS + GETPT HERE,P?GLOBAL >RMG + ZERO? RMG /?CND1 + PTSIZE RMG + SUB STACK,1 >RMGL +?PRG4: GETB RMG,CNT >OBJ + CALL THIS-IT?,OBJ,TBL + ZERO? STACK /?CND6 + CALL OBJ-FOUND,OBJ,TBL +?CND6: IGRTR? 'CNT,RMGL \?PRG4 +?CND1: GETPT HERE,P?PSEUDO >RMG + ZERO? RMG /?CND12 + PTSIZE RMG + DIV STACK,4 + SUB STACK,1 >RMGL + SET 'CNT,0 +?PRG15: MUL CNT,2 + GET RMG,STACK + EQUAL? P-NAM,STACK \?ELS19 + SET 'LAST-PSEUDO-LOC,HERE + MUL CNT,2 + ADD STACK,1 + GET RMG,STACK + PUTP PSEUDO-OBJECT,P?ACTION,STACK + GETPT PSEUDO-OBJECT,P?ACTION + SUB STACK,5 >FOO + GET P-NAM,0 + PUT FOO,0,STACK + GET P-NAM,1 + PUT FOO,1,STACK + CALL OBJ-FOUND,PSEUDO-OBJECT,TBL + JUMP ?CND12 +?ELS19: IGRTR? 'CNT,RMGL \?PRG15 +?CND12: GET TBL,P-MATCHLEN + EQUAL? STACK,LEN \FALSE + SET 'P-SLOCBITS,-1 + SET 'P-TABLE,TBL + CALL DO-SL,GLOBAL-OBJECTS,1,1 + SET 'P-SLOCBITS,OBITS + GET TBL,P-MATCHLEN + ZERO? STACK \FALSE + EQUAL? PRSA,V?LOOK-INSIDE,V?SEARCH,V?EXAMINE \FALSE + CALL DO-SL,ROOMS,1,1 + RSTACK + + + .FUNCT DO-SL,OBJ,BIT1,BIT2,BTS + ADD BIT1,BIT2 + BTST P-SLOCBITS,STACK \?ELS5 + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCALL + RSTACK +?ELS5: BTST P-SLOCBITS,BIT1 \?ELS12 + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCTOP + RSTACK +?ELS12: BTST P-SLOCBITS,BIT2 \TRUE + CALL SEARCH-LIST,OBJ,P-TABLE,P-SRCBOT + RSTACK + + + .FUNCT SEARCH-LIST,OBJ,TBL,LVL,FLS,NOBJ + FIRST? OBJ >OBJ \FALSE +?PRG6: EQUAL? LVL,P-SRCBOT /?CND8 + GETPT OBJ,P?SYNONYM + ZERO? STACK /?CND8 + CALL THIS-IT?,OBJ,TBL + ZERO? STACK /?CND8 + CALL OBJ-FOUND,OBJ,TBL +?CND8: EQUAL? LVL,P-SRCTOP \?THN18 + FSET? OBJ,SEARCHBIT /?THN18 + FSET? OBJ,SURFACEBIT \?CND13 +?THN18: FIRST? OBJ >NOBJ \?CND13 + FSET? OBJ,OPENBIT /?THN20 + FSET? OBJ,TRANSBIT \?CND13 +?THN20: FSET? OBJ,SURFACEBIT \?ELS26 + PUSH P-SRCALL + JUMP ?CND22 +?ELS26: FSET? OBJ,SEARCHBIT \?ELS28 + PUSH P-SRCALL + JUMP ?CND22 +?ELS28: PUSH P-SRCTOP +?CND22: CALL SEARCH-LIST,OBJ,TBL,STACK >FLS +?CND13: NEXT? OBJ >OBJ /?PRG6 + RTRUE + + + .FUNCT OBJ-FOUND,OBJ,TBL,PTR + GET TBL,P-MATCHLEN >PTR + ADD PTR,1 + PUT TBL,STACK,OBJ + ADD PTR,1 + PUT TBL,P-MATCHLEN,STACK + RTRUE + + + .FUNCT TAKE-CHECK + GETB P-SYNTAX,P-SLOC1 + CALL ITAKE-CHECK,P-PRSO,STACK + ZERO? STACK /FALSE + GETB P-SYNTAX,P-SLOC2 + CALL ITAKE-CHECK,P-PRSI,STACK + RSTACK + + + .FUNCT ITAKE-CHECK,TBL,BTS,PTR,OBJ,TAKEN + GET TBL,P-MATCHLEN >PTR + ZERO? PTR /TRUE + BTST BTS,STAKE \TRUE +?PRG8: DLESS? 'PTR,0 /TRUE + ADD PTR,1 + GET TBL,STACK >OBJ + EQUAL? OBJ,IT \?CND15 + CALL ACCESSIBLE?,P-IT-OBJECT + ZERO? STACK \?ELS20 + PRINTI "I don't see what you're referring to." + CRLF + RFALSE +?ELS20: SET 'OBJ,P-IT-OBJECT +?CND15: IN? OBJ,WINNER /?PRG8 + SET 'PRSO,OBJ + FSET? OBJ,TRYTAKEBIT \?ELS30 + SET 'TAKEN,TRUE-VALUE + JUMP ?CND28 +?ELS30: CALL ITAKE,FALSE-VALUE + EQUAL? STACK,TRUE-VALUE \?ELS32 + SET 'TAKEN,FALSE-VALUE + JUMP ?CND28 +?ELS32: SET 'TAKEN,TRUE-VALUE +?CND28: ZERO? TAKEN /?ELS37 + BTST BTS,SHAVE \?ELS37 + EQUAL? OBJ,NOT-HERE-OBJECT \?CND40 + PRINTI "You don't have that!" + CRLF + RFALSE +?CND40: PRINTI "You don't have the " + PRINTD OBJ + PRINTI "." + CRLF + RFALSE +?ELS37: ZERO? TAKEN \?PRG8 + PRINTI "(Taken)" + CRLF + JUMP ?PRG8 + + + .FUNCT MANY-CHECK,LOSS=0,TMP,?TMP1 + GET P-PRSO,P-MATCHLEN + GRTR? STACK,1 \?ELS3 + GETB P-SYNTAX,P-SLOC1 + BTST STACK,SMANY /?ELS3 + SET 'LOSS,1 + JUMP ?CND1 +?ELS3: GET P-PRSI,P-MATCHLEN + GRTR? STACK,1 \?CND1 + GETB P-SYNTAX,P-SLOC2 + BTST STACK,SMANY /?CND1 + SET 'LOSS,2 +?CND1: ZERO? LOSS /TRUE + PRINTI "I can't use multiple " + EQUAL? LOSS,2 \?CND18 + PRINTI "in" +?CND18: PRINTI "direct objects with """ + GET P-ITBL,P-VERBN >TMP + ZERO? TMP \?ELS27 + PRINTI "tell" + JUMP ?CND25 +?ELS27: ZERO? P-OFLAG \?THN32 + ZERO? P-MERGED /?ELS31 +?THN32: GET TMP,0 + PRINTB STACK + JUMP ?CND25 +?ELS31: GETB TMP,2 >?TMP1 + GETB TMP,3 + CALL WORD-PRINT,?TMP1,STACK +?CND25: PRINTI """." + CRLF + RFALSE + + + .FUNCT ZMEMQ,ITM,TBL,SIZE=-1,CNT=1 + ZERO? TBL /FALSE + LESS? SIZE,0 /?ELS6 + SET 'CNT,0 + JUMP ?CND4 +?ELS6: GET TBL,0 >SIZE +?CND4: +?PRG9: GET TBL,CNT + EQUAL? ITM,STACK /TRUE + IGRTR? 'CNT,SIZE \?PRG9 + RFALSE + + + .FUNCT ZMEMQB,ITM,TBL,SIZE,CNT=0 +?PRG1: GETB TBL,CNT + EQUAL? ITM,STACK /TRUE + IGRTR? 'CNT,SIZE \?PRG1 + RFALSE + + + .FUNCT LIT?,RM,RMBIT=1,OHERE,LIT=0 + ZERO? ALWAYS-LIT /?CND1 + EQUAL? WINNER,PLAYER /TRUE +?CND1: SET 'P-GWIMBIT,ONBIT + SET 'OHERE,HERE + SET 'HERE,RM + ZERO? RMBIT /?ELS8 + FSET? RM,ONBIT \?ELS8 + SET 'LIT,TRUE-VALUE + JUMP ?CND6 +?ELS8: ZERO? RMBIT /?ELS12 + GRTR? TOD,NIGHTFALL /?ELS12 + FSET? RM,LIGHTBIT \?ELS12 + SET 'LIT,TRUE-VALUE + JUMP ?CND6 +?ELS12: PUT P-MERGE,P-MATCHLEN,0 + SET 'P-TABLE,P-MERGE + SET 'P-SLOCBITS,-1 + EQUAL? OHERE,RM \?CND17 + CALL DO-SL,WINNER,1,1 + EQUAL? WINNER,PLAYER /?CND17 + IN? PLAYER,RM \?CND17 + CALL DO-SL,PLAYER,1,1 +?CND17: CALL DO-SL,RM,1,1 + GET P-TABLE,P-MATCHLEN + GRTR? STACK,0 \?CND6 + SET 'LIT,TRUE-VALUE +?CND6: SET 'HERE,OHERE + SET 'P-GWIMBIT,0 + RETURN LIT + + + .FUNCT PRSO-PRINT,PTR + ZERO? P-MERGED \?THN6 + GET P-ITBL,P-NC1 >PTR + GET PTR,0 + EQUAL? STACK,W?IT \?ELS5 +?THN6: PRINTI " " + PRINTD PRSO + RTRUE +?ELS5: GET P-ITBL,P-NC1L + CALL BUFFER-PRINT,PTR,STACK,FALSE-VALUE + RSTACK + + + .FUNCT PRSI-PRINT,PTR + ZERO? P-MERGED \?THN6 + GET P-ITBL,P-NC2 >PTR + GET PTR,0 + EQUAL? STACK,W?IT \?ELS5 +?THN6: PRINTI " " + PRINTD PRSO + RTRUE +?ELS5: GET P-ITBL,P-NC2L + CALL BUFFER-PRINT,PTR,STACK,FALSE-VALUE + RSTACK + + + .FUNCT ACCESSIBLE?,OBJ,L,?TMP1 + LOC OBJ >L + FSET? OBJ,INVISIBLE /FALSE + ZERO? L /FALSE + EQUAL? L,GLOBAL-OBJECTS /TRUE + EQUAL? L,LOCAL-GLOBALS \?ELS11 + CALL GLOBAL-IN?,OBJ,HERE + ZERO? STACK \TRUE +?ELS11: CALL META-LOC,OBJ >?TMP1 + LOC WINNER + EQUAL? ?TMP1,HERE,STACK \FALSE + LOC WINNER + EQUAL? L,WINNER,HERE,STACK /TRUE + FSET? L,OPENBIT \FALSE + CALL ACCESSIBLE?,L + ZERO? STACK /FALSE + RTRUE + + + .FUNCT META-LOC,OBJ +?PRG1: ZERO? OBJ /FALSE + IN? OBJ,GLOBAL-OBJECTS \?CND3 + RETURN GLOBAL-OBJECTS +?CND3: IN? OBJ,ROOMS \?ELS10 + RETURN OBJ +?ELS10: LOC OBJ >OBJ + JUMP ?PRG1 + + .ENDI diff --git a/parser.zil b/parser.zil index eb05f99..6b4eb85 100644 --- a/parser.zil +++ b/parser.zil @@ -41,7 +41,6 @@ > > -> ;"Orphan flag" @@ -635,7 +634,7 @@ or creatures." CR> )> ) ( - <==? ,P-IT-LOC ,HERE>> + > ) (T @@ -993,6 +992,8 @@ or creatures." CR> )>>> +> + (RMGL CNT) FIX (OBJ) OBJECT) > @@ -1008,6 +1009,7 @@ or creatures." CR> >> + 1>>> @@ -1086,7 +1088,13 @@ or creatures." CR> > 0> ) (T >> - )> + + > + + ) + (T + )>)> > @@ -1185,4 +1193,41 @@ or creatures." CR> > 0> ,W?IT>> ) - (T <>>)>> \ No newline at end of file + (T <>>)>> + +)) ;"can player TOUCH object?" + ;"revised 5/2/84 by SEM and SWG" + + ) + ;( + + ) + (T + )>) + ( + ) + ( + ) + ( + > + ) + ( ,HERE >> + ) + (> + ) + ( + > + ) + (T + )>> + + + ) + ( + )> + + ) + (T + >)>>> diff --git a/purloined.zap b/purloined.zap new file mode 100644 index 0000000..5a26dfa --- /dev/null +++ b/purloined.zap @@ -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 diff --git a/purloined.zil b/purloined.zil index 3ae0315..a3a3f82 100644 --- a/purloined.zil +++ b/purloined.zil @@ -273,7 +273,7 @@ senseless, and return, the last closing the door behind it.">> (GLOBAL ADVENTURER-LG MIRROR MIRROR-STUFF SHARDS)> )> )>) + ( + + ) ( > diff --git a/record.zap b/record.zap new file mode 100644 index 0000000..87c4ab8 --- /dev/null +++ b/record.zap @@ -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 diff --git a/sleep.zap b/sleep.zap new file mode 100644 index 0000000..3be0075 --- /dev/null +++ b/sleep.zap @@ -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 diff --git a/sleep.zil b/sleep.zil index 6d816d7..6719887 100644 --- a/sleep.zil +++ b/sleep.zil @@ -175,7 +175,8 @@ thrash around for a while and then give up." CR>) ) ( > - > + + >> ) diff --git a/stair.zap b/stair.zap new file mode 100644 index 0000000..d9de8e4 --- /dev/null +++ b/stair.zap @@ -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 diff --git a/stair.zil b/stair.zil index a3e0a4e..be5ea3a 100644 --- a/stair.zil +++ b/stair.zil @@ -364,7 +364,7 @@ of your death.") (ACTION GLOBAL-KRILL-F)> + ) ( @@ -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 diff --git a/syntax.zap b/syntax.zap new file mode 100644 index 0000000..a92e0b4 --- /dev/null +++ b/syntax.zap @@ -0,0 +1,2 @@ + + .ENDI diff --git a/syntax.zil b/syntax.zil index d6c8978..8c883a5 100644 --- a/syntax.zil +++ b/syntax.zil @@ -5,6 +5,8 @@ "SUBTITLE VOCABULARY" + + @@ -61,8 +63,8 @@ "SUBTITLE REAL VERBS" - - +; +; diff --git a/temple.zap b/temple.zap new file mode 100644 index 0000000..8b9b8f8 --- /dev/null +++ b/temple.zap @@ -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 diff --git a/temple.zil b/temple.zil index 92fbf1f..9badd1b 100644 --- a/temple.zil +++ b/temple.zil @@ -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 diff --git a/terror.zap b/terror.zap new file mode 100644 index 0000000..12af250 --- /dev/null +++ b/terror.zap @@ -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 diff --git a/verbs.zap b/verbs.zap new file mode 100644 index 0000000..faa9ff9 --- /dev/null +++ b/verbs.zap @@ -0,0 +1,2319 @@ + + + .FUNCT V-VERBOSE + SET 'VERBOSE,TRUE-VALUE + SET 'SUPER-BRIEF,FALSE-VALUE + PRINTR "Maximum verbosity." + + + .FUNCT V-BRIEF + SET 'VERBOSE,FALSE-VALUE + SET 'SUPER-BRIEF,FALSE-VALUE + PRINTR "Brief descriptions." + + + .FUNCT V-SUPER-BRIEF + SET 'SUPER-BRIEF,TRUE-VALUE + PRINTR "Super-brief descriptions." + + + .FUNCT V-LOOK + ZERO? PRSO /?CND1 + EQUAL? PRSO,ROOMS /?CND1 + CALL PERFORM,V?EXAMINE,PRSO + RTRUE +?CND1: CALL DESCRIBE-ROOM,TRUE-VALUE + ZERO? STACK /FALSE + CALL DESCRIBE-OBJECTS,TRUE-VALUE + RSTACK + + + .FUNCT V-FIRST-LOOK + CALL DESCRIBE-ROOM + ZERO? STACK /FALSE + ZERO? SUPER-BRIEF \FALSE + CALL DESCRIBE-OBJECTS + RSTACK + + + .FUNCT V-EXAMINE + GETP PRSO,P?TEXT + ZERO? STACK /?ELS5 + GETP PRSO,P?TEXT + PRINT STACK + CRLF + RTRUE +?ELS5: FSET? PRSO,CONTBIT /?THN10 + FSET? PRSO,DOORBIT \?ELS9 +?THN10: CALL V-LOOK-INSIDE + RSTACK +?ELS9: PRINTI "You see nothing special about the " + PRINTD PRSO + PRINTR "." + + + .FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,AV + ZERO? LOOK? /?ORP4 + PUSH LOOK? + JUMP ?THN1 +?ORP4: PUSH VERBOSE +?THN1: POP 'V? + ZERO? LIT \?CND5 + PRINTI "It is pitch black and there is evil in the darkness." + CRLF + RETURN FALSE-VALUE +?CND5: FSET? HERE,TOUCHBIT /?CND10 + FSET HERE,TOUCHBIT + SET 'V?,TRUE-VALUE +?CND10: IN? HERE,ROOMS \?CND13 + PRINTD HERE + CRLF +?CND13: ZERO? LOOK? \?THN21 + ZERO? SUPER-BRIEF \TRUE +?THN21: LOC WINNER >AV + FSET? AV,VEHBIT \?CND23 + PRINTI "(You are in the " + PRINTD AV + PRINTI ".)" + CRLF +?CND23: ZERO? V? /?ELS30 + GETP HERE,P?ACTION + CALL STACK,M-LOOK + ZERO? STACK \TRUE +?ELS30: ZERO? V? /?ELS34 + FSET? HERE,RMUNGBIT \?ELS34 + GETP HERE,P?MUNGDESC >STR + ZERO? STR /?ELS34 + PRINT STR + CRLF + JUMP ?CND28 +?ELS34: ZERO? V? /?ELS40 + GETP HERE,P?LDESC >STR + ZERO? STR /?ELS40 + FSET? HERE,RMUNGBIT \?CND43 + EQUAL? HERE,ALTAR,JUNCTION /?CND43 + PRINTI "Everything you see is grey and lifeless, as though covered with a veil of ash. Sound is muted and there is a faint acrid odor." + CRLF +?CND43: PRINT STR + CRLF + JUMP ?CND28 +?ELS40: GETP HERE,P?ACTION + CALL STACK,M-FLASH +?CND28: EQUAL? HERE,AV /?CND54 + FSET AV,VEHBIT + GETP AV,P?ACTION + CALL STACK,M-LOOK +?CND54: FSET? HERE,LIGHTBIT \TRUE + GRTR? TOD,NIGHTFALL \?ELS63 + PRINTR "The stars shine down on you from a clear, dark sky." +?ELS63: GRTR? TOD,DUSK \?ELS67 + PRINTR "The darkening sky is lit by a waning moon." +?ELS67: LESS? TOD,DAWN /TRUE + ADD DAWN,3 + LESS? TOD,STACK \TRUE + PRINTI "The sun is rising over the lands to the east." + CRLF + RTRUE + + + .FUNCT DESCRIBE-OBJECTS,V?=0 + ZERO? LIT /?ELS5 + FIRST? HERE \FALSE + ZERO? V? /?ORP15 + PUSH V? + JUMP ?THN12 +?ORP15: PUSH VERBOSE +?THN12: POP 'V? + CALL PRINT-CONT,HERE,V?,-1 + RSTACK +?ELS5: PRINTR "You can't see anything in the dark." + + + .FUNCT LIGHTED?,OBJ + FSET? OBJ,LIGHTBIT \FALSE + FSET? OBJ,ONBIT \FALSE + PRINTI " (providing light)" + RTRUE + + + .FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV + SET 'DESC-OBJECT,OBJ + ZERO? LEVEL \?ELS3 + GETP OBJ,P?DESCFCN + CALL STACK,M-OBJDESC + ZERO? STACK \TRUE +?ELS3: ZERO? LEVEL \?ELS7 + FSET? OBJ,TOUCHBIT /?ELS13 + GETP OBJ,P?FDESC >STR + ZERO? STR \?THN10 +?ELS13: GETP OBJ,P?LDESC >STR + ZERO? STR /?ELS7 +?THN10: PRINT STR + CALL LIGHTED?,OBJ + JUMP ?CND1 +?ELS7: ZERO? LEVEL \?ELS17 + PRINTI "There is " + CALL PRINTA,OBJ + PRINTI " here" + CALL LIGHTED?,OBJ + PRINTI "." + JUMP ?CND1 +?ELS17: GET INDENTS,LEVEL + PRINT STACK + PRINTI "A" + FSET? OBJ,VOWELBIT \?CND28 + PRINTI "n" +?CND28: EQUAL? OBJ,BREAD \?ELS35 + GETP OBJ,P?SIZE + LESS? STACK,8 \?CND33 + PRINTI " partially eaten" + JUMP ?CND33 +?ELS35: EQUAL? OBJ,WATER \?CND33 + GETP OBJ,P?SIZE + LESS? STACK,2 \?CND43 + PRINTI " very" +?CND43: GETP OBJ,P?SIZE + LESS? STACK,3 \?CND33 + PRINTI " small" +?CND33: PRINTI " " + PRINTD OBJ + CALL LIGHTED?,OBJ +?CND1: ZERO? LEVEL \?CND55 + LOC WINNER >AV + ZERO? AV /?CND55 + FSET? AV,VEHBIT \?CND55 + PRINTI " (outside the " + PRINTD AV + PRINTI ")" +?CND55: CRLF + CALL SEE-INSIDE?,OBJ + ZERO? STACK /FALSE + FIRST? OBJ \FALSE + CALL PRINT-CONT,OBJ,V?,LEVEL + RSTACK + + + .FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?,AV,STR,PV?=0,INV?=0 + FIRST? OBJ >Y \TRUE + LOC WINNER >AV + ZERO? AV /?ELS6 + FSET? AV,VEHBIT \?ELS6 + JUMP ?CND4 +?ELS6: SET 'AV,FALSE-VALUE +?CND4: SET '1ST?,TRUE-VALUE + LOC OBJ + EQUAL? WINNER,OBJ,STACK \?ELS13 + SET 'INV?,TRUE-VALUE + JUMP ?CND11 +?ELS13: +?PRG16: ZERO? Y \?ELS20 + JUMP ?CND11 +?ELS20: EQUAL? Y,AV \?ELS22 + SET 'PV?,TRUE-VALUE + JUMP ?CND18 +?ELS22: EQUAL? Y,WINNER \?ELS24 + JUMP ?CND18 +?ELS24: FSET? Y,INVISIBLE /?CND18 + FSET? Y,TOUCHBIT /?CND18 + GETP Y,P?FDESC >STR + ZERO? STR /?CND18 + FSET? Y,NDESCBIT /?CND29 + PRINT STR + CALL LIGHTED?,Y + CRLF +?CND29: CALL SEE-INSIDE?,Y + ZERO? STACK /?CND18 + LOC Y + GETP STACK,P?DESCFCN + ZERO? STACK \?CND18 + FIRST? Y \?CND18 + CALL PRINT-CONT,Y,V?,0 +?CND18: NEXT? Y >Y /?KLU76 +?KLU76: JUMP ?PRG16 +?CND11: FIRST? OBJ >Y /?KLU77 +?KLU77: +?PRG39: ZERO? Y \?ELS43 + ZERO? PV? /?CND44 + ZERO? AV /?CND44 + FIRST? AV \?CND44 + CALL PRINT-CONT,AV,V?,LEVEL +?CND44: ZERO? 1ST? \FALSE + RTRUE +?ELS43: EQUAL? Y,AV,PLAYER \?ELS52 + JUMP ?CND41 +?ELS52: FSET? Y,INVISIBLE /?CND41 + ZERO? INV? \?THN57 + FSET? Y,TOUCHBIT /?THN57 + GETP Y,P?FDESC + ZERO? STACK \?CND41 +?THN57: FSET? Y,NDESCBIT /?ELS61 + ZERO? 1ST? /?CND62 + CALL FIRSTER,OBJ,LEVEL + ZERO? STACK /?CND66 + LESS? LEVEL,0 \?CND66 + SET 'LEVEL,0 +?CND66: INC 'LEVEL + SET '1ST?,FALSE-VALUE +?CND62: CALL DESCRIBE-OBJECT,Y,V?,LEVEL + JUMP ?CND41 +?ELS61: FIRST? Y \?CND41 + CALL SEE-INSIDE?,Y + ZERO? STACK /?CND41 + CALL PRINT-CONT,Y,V?,LEVEL +?CND41: NEXT? Y >Y /?KLU78 +?KLU78: JUMP ?PRG39 + + + .FUNCT FIRSTER,OBJ,LEVEL + EQUAL? OBJ,WINNER \?ELS5 + PRINTR "You are carrying:" +?ELS5: IN? OBJ,ROOMS /FALSE + GRTR? LEVEL,0 \?CND10 + GET INDENTS,LEVEL + PRINT STACK +?CND10: EQUAL? OBJ,ADVENTURER \?ELS19 + PRINTR "The adventurer is carrying:" +?ELS19: FSET? OBJ,SURFACEBIT \?ELS23 + PRINTI "Sitting on the " + PRINTD OBJ + PRINTR " is:" +?ELS23: PRINTI "The " + PRINTD OBJ + PRINTR " contains:" + + + .FUNCT V-SCORE,ASK?=1 + PRINTI "Your score is " + PRINTN SCORE + PRINTI " of a possible " + PRINTN SCORE-MAX + PRINTI ", in " + PRINTN MOVES + EQUAL? MOVES,1 \?ELS9 + PRINTI " move." + JUMP ?CND7 +?ELS9: PRINTI " moves." +?CND7: CRLF + LESS? SCORE,0 \?ELS18 + PRINTI "This gives you the rank of Menace to Society." + CRLF + RETURN SCORE +?ELS18: PRINTI "This puts you in the class of " + DIV SCORE,50 + GET RANKINGS,STACK + PRINT STACK + PRINTI "." + CRLF + RETURN SCORE + + + .FUNCT FINISH,REPEATING=0 + CRLF + ZERO? REPEATING \?CND1 + CALL V-SCORE + CRLF +?CND1: PRINTI "Would you like to restart the game from the beginning, restore a saved game position, or end this session of the game? +(Type RESTART, RESTORE, or QUIT): + +>" + READ P-INBUF,P-LEXV + GET P-LEXV,1 + EQUAL? STACK,W?RESTART \?ELS10 + RESTART + PRINTI "Failed." + CRLF + CALL FINISH,TRUE-VALUE + RSTACK +?ELS10: GET P-LEXV,1 + EQUAL? STACK,W?RESTORE \?ELS14 + RESTORE \?ELS19 + PRINTR "Okay." +?ELS19: PRINTI "Failed." + CRLF + CALL FINISH,TRUE-VALUE + RSTACK +?ELS14: QUIT + RTRUE + + + .FUNCT V-QUIT,ASK?=1,SCOR + CALL V-SCORE + ZERO? ASK? /?ELS9 + PRINTI "Do you wish to leave the game? (Y is affirmative): " + CALL YES? + ZERO? STACK \?THN6 +?ELS9: ZERO? ASK? \?ELS5 +?THN6: QUIT + RTRUE +?ELS5: PRINTR "Ok." + + + .FUNCT YES? + PRINTI ">" + READ P-INBUF,P-LEXV + GET P-LEXV,1 + EQUAL? STACK,W?YES,W?Y \FALSE + RTRUE + + + .FUNCT V-VERSION,CNT=17 + PRINTI "ENCHANTER +Infocom interactive fiction - a fantasy story +Copyright (C) 1983, 1984, 1986 by Infocom, Inc. All rights reserved. +ENCHANTER is a trademark of Infocom, Inc. +Release " + GET 0,1 + BAND STACK,2047 + PRINTN STACK + PRINTI " / Serial number " +?PRG5: IGRTR? 'CNT,23 \?ELS9 + JUMP ?REP6 +?ELS9: GETB 0,CNT + PRINTC STACK + JUMP ?PRG5 +?REP6: CRLF + RTRUE + + + .FUNCT JIGS-UP,DESC,SURVIVE?=1,BOTH=0,OZMOOD?=0,CHEATED?=0 + EQUAL? DEATH-CHEATED,WINNER,ME /?PRD1 + PUSH 0 + JUMP ?PRD2 +?PRD1: PUSH 1 +?PRD2: SET 'CHEATED?,STACK + ZERO? SURVIVE? /?ELS4 + SET 'OZMOOD?,CHEATED? + JUMP ?PRD5 +?ELS4: SET 'OZMOOD?,0 +?PRD5: SET 'DEATH-CHEATED,FALSE-VALUE + ZERO? DESC /?CND6 + PRINT DESC + CRLF +?CND6: EQUAL? PLAYER,WINNER /?CND12 + PRINTI " +*** The " + PRINTD WINNER + PRINTI " has died *** + +" + ZERO? OZMOOD? /?ELS19 + PRINTI "Fortunately the " + PRINTD WINNER + PRINTI " has been magically protected from violent death and appears to be none the worse for his horrible experience." + CRLF + JUMP ?CND17 +?ELS19: ZERO? CHEATED? /?CND25 + PRINTI "Unfortunately, even the ozmoo spell was not enough to protect the " + PRINTD WINNER + PRINTI " from this eventuality." + CRLF +?CND25: REMOVE WINNER +?CND17: SET 'WINNER,PLAYER + LOC WINNER >HERE + CALL LIT?,HERE >LIT + RETURN 2 +?CND12: CALL FORGET-ALL + PRINTI " + **** You have died **** + +" + ZERO? OZMOOD? /?ELS37 + PRINTI "Fortunately, you had the foresight to protect yourself against this eventuality by a judicious use of the ozmoo spell. You survive this horrible experience none the worse for wear, if somewhat chastened." + CRLF + JUMP ?CND35 +?ELS37: ZERO? CHEATED? /?CND43 + PRINTI "Unfortunately, even the ozmoo spell was not enough to protect you from this eventuality." + CRLF +?CND43: IGRTR? 'DEATHS,3 \?ELS51 + PRINTI "You awaken among the members of the Circle. Belboz the Necromancer is exhausted, and the other members of the Circle are disgusted. ""I told you Krill was too powerful for such as this,"" says one. ""We must send someone who has a chance to defeat a warlock of Krill's experience and guile."" Acrimonious discussion begins, as you are waved away to join the apprentices in the scullery. A long acquaintance with potatoes and dirty pots is about to begin." + CRLF + CALL FINISH + JUMP ?CND35 +?ELS51: PRINTI "You awaken among the members of the Circle. Belboz the Necromancer looks tired, and scattered about are the remains of the components of a spell of great healing power. The other members of the Circle are pleased to see you revived, but worried by the setback. ""I think Krill is too powerful,"" says one. ""This inexperienced wizard will never defeat one so puissant as he."" Quiet discussion ensues, with well-concealed acrimony beneath the surface." + CRLF + CALL HELD?,DISPEL-SCROLL + ZERO? STACK \?THN61 + CALL HELD?,BANISH-SCROLL + ZERO? STACK /?CND58 +?THN61: CALL HELD?,DISPEL-SCROLL + ZERO? STACK /?CND63 + CALL HELD?,BANISH-SCROLL + ZERO? STACK /?CND63 + SET 'BOTH,TRUE-VALUE +?CND63: PRINTI "Belboz tilts his head, as if sensing something amiss. He examines your possessions and is taken aback: ""You have acquired " + ZERO? BOTH /?ELS72 + PRINTI "scrolls" + JUMP ?CND70 +?ELS72: PRINTI "a scroll" +?CND70: PRINTI " of great power. Using spells of this kind requires surpassing wisdom."" With a wave of his hand, the scroll" + ZERO? BOTH /?ELS84 + PRINTI "s disappear" + JUMP ?CND82 +?ELS84: PRINTI " disappears" +?CND82: PRINTI "." + CRLF + CALL HELD?,DISPEL-SCROLL + ZERO? STACK /?CND94 + REMOVE DISPEL-SCROLL +?CND94: CALL HELD?,BANISH-SCROLL + ZERO? STACK /?CND58 + REMOVE BANISH-SCROLL +?CND58: MOVE SPELL-BOOK,WINNER + FCLEAR SPELL-BOOK,NDESCBIT + FSET SPELL-BOOK,TAKEBIT + FSET? JUG,TOUCHBIT \?CND100 + MOVE JUG,EAST-FORK +?CND100: FSET? BREAD,TOUCHBIT \?CND103 + GETP BREAD,P?SIZE + GRTR? STACK,0 \?CND103 + MOVE BREAD,EAST-FORK +?CND103: PRINTI "Debate ensues, with Belboz returning frequently to the contents of the ancient manuscript. His wishes prevail, and it is agreed to send you back...." + CRLF + SET 'THIRST-COUNT,0 + SET 'HUNGER-COUNT,0 + SET 'LOCKED-IN-TOWER,FALSE-VALUE +?CND35: CRLF + CALL RANDOMIZE-OBJECTS + ZERO? OZMOOD? \?CND110 + CALL KILL-INTERRUPTS + CALL GOTO,EAST-FORK +?CND110: SET 'P-CONT,FALSE-VALUE + RETURN 2 + + + .FUNCT RANDOMIZE-OBJECTS,F,N + FIRST? WINNER >F /?KLU12 +?KLU12: +?PRG1: ZERO? F /TRUE + NEXT? F >N /?KLU13 +?KLU13: FSET? F,SCROLLBIT \?CND7 + MOVE F,HERE +?CND7: SET 'F,N + JUMP ?PRG1 + + + .FUNCT KILL-INTERRUPTS + SET 'ADVENTURER-CHARMED,FALSE-VALUE + CALL STOP-FLYING + CALL QUEUE,I-TURTLE,0 + CALL QUEUE,I-TAKE-TO-ALTAR,0 + CALL QUEUE,I-GANG,0 + CALL QUEUE,I-GUARDS-ARRIVE,0 + RTRUE + + + .FUNCT V-RESTORE + RESTORE \?ELS5 + PRINTI "Ok." + CRLF + CALL V-FIRST-LOOK + RSTACK +?ELS5: PRINTR "Failed." + + + .FUNCT V-SAVE + SAVE \?ELS5 + PRINTR "Ok." +?ELS5: PRINTR "Failed." + + + .FUNCT V-RESTART + CALL V-SCORE,TRUE-VALUE + PRINTI "Do you wish to restart? (Y is affirmative): " + CALL YES? + ZERO? STACK /FALSE + PRINTI "Restarting." + CRLF + RESTART + PRINTR "Failed." + + + .FUNCT V-WALK-AROUND + CALL USE-DIRECTIONS + RSTACK + + + .FUNCT USE-DIRECTIONS + PRINTR "You should use compass directions if you wish to move." + + + .FUNCT V-LAUNCH + FSET? PRSO,VEHBIT \?ELS5 + PRINTR "You can't launch that by saying ""launch""!" +?ELS5: PRINTR "How in blazes does one launch that?" + + + .FUNCT V-WALK,PT,PTS,STR,OBJ,RM + ZERO? TRY-FLY /?CND1 + CALL PRE-FLY + ZERO? STACK \TRUE +?CND1: ZERO? P-WALK-DIR \?ELS10 + CALL PERFORM,V?WALK-TO,PRSO + RTRUE +?ELS10: GETPT HERE,PRSO >PT + ZERO? PT /?ELS12 + PTSIZE PT >PTS + EQUAL? PTS,UEXIT \?ELS17 + GETB PT,REXIT + CALL GOTO,STACK + RSTACK +?ELS17: EQUAL? PTS,NEXIT \?ELS19 + GET PT,NEXITSTR + PRINT STACK + CRLF + RETURN 2 +?ELS19: EQUAL? PTS,FEXIT \?ELS25 + GET PT,FEXITFCN + CALL STACK >RM + ZERO? RM /?ELS30 + CALL GOTO,RM + RSTACK +?ELS30: RETURN 2 +?ELS25: EQUAL? PTS,CEXIT \?ELS36 + GETB PT,CEXITFLAG + VALUE STACK + ZERO? STACK /?ELS41 + GETB PT,REXIT + CALL GOTO,STACK + RSTACK +?ELS41: GET PT,CEXITSTR >STR + ZERO? STR /?ELS43 + PRINT STR + CRLF + RETURN 2 +?ELS43: EQUAL? WINNER,TURTLE \?ELS49 + LOC PLAYER + IN? TURTLE,STACK \?ELS52 + PRINTI """I can't go that way.""" + CRLF + RETURN 2 +?ELS52: CALL NO-RESPONSE + RETURN 2 +?ELS49: CALL OUTSIDE?,HERE + ZERO? STACK /?ELS60 + PRINTI "There's no path in that direction." + CRLF + RETURN 2 +?ELS60: PRINTI "You can't go that way." + CRLF + RETURN 2 +?ELS36: EQUAL? PTS,DEXIT \FALSE + GETB PT,DEXITOBJ >OBJ + FSET? OBJ,OPENBIT \?ELS77 + GETB PT,REXIT + CALL GOTO,STACK + RSTACK +?ELS77: GET PT,DEXITSTR >STR + ZERO? STR /?ELS79 + PRINT STR + CRLF + CALL THIS-IS-IT,OBJ + RETURN 2 +?ELS79: PRINTI "The " + PRINTD OBJ + PRINTI " is closed." + CRLF + CALL THIS-IS-IT,OBJ + RETURN 2 +?ELS12: EQUAL? WINNER,PLAYER \?ELS91 + ZERO? LIT \?ELS91 + RANDOM 100 + GRTR? 90,STACK \?ELS91 + CALL JIGS-UP,STR?12 + RETURN 2 +?ELS91: EQUAL? WINNER,TURTLE \?ELS97 + LOC PLAYER + IN? TURTLE,STACK \?ELS100 + PRINTI """I can't go that way.""" + CRLF + RETURN 2 +?ELS100: CALL NO-RESPONSE + RETURN 2 +?ELS97: PRINTI "You can't go that way." + CRLF + RETURN 2 + + + .FUNCT THIS-IS-IT,OBJ + SET 'P-IT-OBJECT,OBJ + RETURN P-IT-OBJECT + + + .FUNCT V-INVENTORY + FIRST? WINNER \?ELS5 + CALL PRINT-CONT,WINNER + RSTACK +?ELS5: PRINTR "You are empty-handed." + + + .FUNCT PRE-TAKE + IN? PRSO,WINNER \?ELS5 + PRINTR "You already have it." +?ELS5: LOC PRSO + ZERO? STACK /?ELS14 + LOC PRSO + FSET? STACK,CONTBIT \?ELS14 + LOC PRSO + FSET? STACK,OPENBIT /?ELS14 + PRINTR "You can't reach that." +?ELS14: ZERO? PRSI /?ELS20 + EQUAL? PRSO,ME \?ELS26 + CALL PERFORM,V?DROP,PRSI + RTRUE +?ELS26: LOC PRSO + EQUAL? PRSI,STACK /?ELS28 + PRINTI "The " + PRINTD PRSO + PRINTI " isn't in the " + PRINTD PRSI + PRINTR "." +?ELS28: SET 'PRSI,FALSE-VALUE + RFALSE +?ELS20: LOC WINNER + EQUAL? PRSO,STACK \FALSE + PRINTR "You are in it!" + + + .FUNCT V-TAKE + CALL ITAKE + EQUAL? STACK,TRUE-VALUE \FALSE + PRINTR "Taken." + + + .FUNCT ITAKE,VB=1,CNT,OBJ,?TMP1 + FSET? PRSO,TAKEBIT /?ELS5 + ZERO? VB /FALSE + CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RFALSE +?ELS5: LOC PRSO + IN? STACK,WINNER /?ELS13 + CALL WEIGHT,PRSO >?TMP1 + CALL WEIGHT,WINNER + ADD ?TMP1,STACK + GRTR? STACK,LOAD-ALLOWED \?ELS13 + ZERO? VB /?CND16 + PRINTI "Your load is too heavy" + LESS? LOAD-ALLOWED,LOAD-MAX \?ELS24 + PRINTI ", especially in light of your exhaustion." + JUMP ?CND22 +?ELS24: PRINTI "." +?CND22: CRLF +?CND16: RETURN 2 +?ELS13: CALL CCOUNT,WINNER >CNT + GRTR? CNT,FUMBLE-NUMBER \?ELS34 + MUL CNT,FUMBLE-PROB >?TMP1 + RANDOM 100 + GRTR? ?TMP1,STACK \?ELS34 + PRINTI "You're holding too many things already." + CRLF + RETURN 2 +?ELS34: MOVE PRSO,WINNER + FSET PRSO,TOUCHBIT + RTRUE + + + .FUNCT V-PUT-ON + FSET? PRSI,SURFACEBIT \?ELS5 + CALL V-PUT + RSTACK +?ELS5: PRINTI "There's no good surface on the " + PRINTD PRSI + PRINTR "." + + + .FUNCT PRE-PUT + IN? PRSO,GLOBAL-OBJECTS /?THN6 + FSET? PRSO,TAKEBIT /FALSE +?THN6: PRINTR "Nice try." + + + .FUNCT V-PUT,?TMP1 + FSET? PRSI,OPENBIT /?CND1 + FSET? PRSI,DOORBIT /?CND1 + FSET? PRSI,CONTBIT /?CND1 + FSET? PRSI,VEHBIT \?ELS3 + JUMP ?CND1 +?ELS3: PRINTR "I can't do that." +?CND1: FSET? PRSI,OPENBIT /?ELS14 + PRINTI "The " + PRINTD PRSI + PRINTR " isn't open." +?ELS14: EQUAL? PRSI,PRSO \?ELS18 + PRINTR "How can you do that?" +?ELS18: IN? PRSO,PRSI \?ELS22 + PRINTI "The " + PRINTD PRSO + PRINTI " is already in the " + PRINTD PRSI + PRINTR "." +?ELS22: CALL WEIGHT,PRSI >?TMP1 + CALL WEIGHT,PRSO + ADD ?TMP1,STACK >?TMP1 + GETP PRSI,P?SIZE + SUB ?TMP1,STACK >?TMP1 + GETP PRSI,P?CAPACITY + GRTR? ?TMP1,STACK \?ELS26 + PRINTR "There's no room." +?ELS26: CALL HELD?,PRSO + ZERO? STACK \?ELS30 + CALL ITAKE + EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE +?ELS30: MOVE PRSO,PRSI + FSET PRSO,TOUCHBIT + PRINTR "Done." + + + .FUNCT PRE-GIVE + CALL HELD?,PRSO + ZERO? STACK \FALSE + PRINTR "That's easy for you to say since you don't even have it." + + + .FUNCT PRE-SGIVE + CALL PERFORM,V?GIVE,PRSI,PRSO + RTRUE + + + .FUNCT HELD?,OBJ + ZERO? OBJ /FALSE + IN? OBJ,WINNER /TRUE + IN? OBJ,ROOMS /FALSE + IN? OBJ,GLOBAL-OBJECTS /FALSE + LOC OBJ + CALL HELD?,STACK + RSTACK + + + .FUNCT V-GIVE + FSET? PRSI,VICBIT /?ELS5 + PRINTI "You can't give " + CALL PRINTA,PRSO + PRINTI " to " + CALL PRINTA,PRSI + PRINTR "!" +?ELS5: PRINTI "The " + PRINTD PRSI + PRINTR " refuses it politely." + + + .FUNCT V-SGIVE + PRINTR "**Bug" + + + .FUNCT V-DROP + CALL IDROP + ZERO? STACK /FALSE + PRINTR "Dropped." + + + .FUNCT V-THROW + CALL IDROP + ZERO? STACK /FALSE + PRINTR "Thrown." + + + .FUNCT IDROP + IN? PRSO,WINNER /?ELS5 + LOC PRSO + IN? STACK,WINNER /?ELS5 + PRINTI "You're not carrying the " + PRINTD PRSO + PRINTI "." + CRLF + RFALSE +?ELS5: IN? PRSO,WINNER /?ELS11 + LOC PRSO + FSET? STACK,OPENBIT /?ELS11 + PRINTI "The " + PRINTD PRSO + PRINTI " is closed." + CRLF + RFALSE +?ELS11: LOC WINNER + MOVE PRSO,STACK + RTRUE + + + .FUNCT V-OPEN,F,STR + FSET? PRSO,CONTBIT /?ELS5 + PRINTI "You must tell me how to do that to " + CALL PRINTA,PRSO + PRINTR "." +?ELS5: GETP PRSO,P?CAPACITY + ZERO? STACK /?ELS9 + FSET? PRSO,OPENBIT \?ELS14 + PRINTR "It is already open." +?ELS14: FSET PRSO,OPENBIT + FIRST? PRSO \?THN24 + FSET? PRSO,TRANSBIT \?ELS23 +?THN24: PRINTR "Opened." +?ELS23: FIRST? PRSO >F \?ELS29 + NEXT? F /?ELS29 + GETP F,P?FDESC >STR + ZERO? STR /?ELS29 + PRINTI "The " + PRINTD PRSO + PRINTI " opens." + CRLF + PRINT STR + CRLF + RTRUE +?ELS29: PRINTI "Opening the " + PRINTD PRSO + PRINTI " reveals " + CALL PRINT-CONTENTS,PRSO + PRINTR "." +?ELS9: FSET? PRSO,DOORBIT \?ELS43 + FSET? PRSO,OPENBIT \?ELS48 + PRINTR "It is already open." +?ELS48: PRINTI "The " + PRINTD PRSO + PRINTI " opens." + CRLF + FSET PRSO,OPENBIT + RTRUE +?ELS43: PRINTI "The " + PRINTD PRSO + PRINTR " fails to open." + + + .FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1 + FIRST? OBJ >F \FALSE +?PRG6: NEXT? F >N /?KLU26 +?KLU26: ZERO? 1ST? /?ELS10 + SET '1ST?,FALSE-VALUE + JUMP ?CND8 +?ELS10: PRINTI ", " + ZERO? N \?CND8 + PRINTI "and " +?CND8: CALL PRINTA,F + SET 'F,N + ZERO? F \?PRG6 + RTRUE + + + .FUNCT V-CLOSE + FSET? PRSO,CONTBIT /?ELS5 + PRINTI "You must tell me how to do that to " + CALL PRINTA,PRSO + PRINTR "." +?ELS5: FSET? PRSO,SURFACEBIT /?ELS9 + GETP PRSO,P?CAPACITY + ZERO? STACK /?ELS9 + FSET? PRSO,OPENBIT \?ELS16 + FCLEAR PRSO,OPENBIT + PRINTR "Closed." +?ELS16: PRINTR "It is already closed." +?ELS9: FSET? PRSO,DOORBIT \?ELS24 + FSET? PRSO,OPENBIT \?ELS29 + PRINTI "The " + PRINTD PRSO + PRINTI " is now closed." + CRLF + FCLEAR PRSO,OPENBIT + RTRUE +?ELS29: PRINTR "It is already closed." +?ELS24: PRINTR "You cannot close that." + + + .FUNCT CCOUNT,OBJ,CNT=0,X + FIRST? OBJ >X \?CND1 +?PRG4: INC 'CNT + NEXT? X >X /?PRG4 +?CND1: RETURN CNT + + + .FUNCT WEIGHT,OBJ,CONT,WT=0 + FIRST? OBJ >CONT \?CND1 +?PRG4: CALL WEIGHT,CONT + ADD WT,STACK >WT + NEXT? CONT >CONT /?PRG4 +?CND1: GETP OBJ,P?SIZE + ADD WT,STACK + RSTACK + + + .FUNCT V-SCRIPT + GET 0,8 + BOR STACK,1 + PUT 0,8,STACK + PRINTI "Here begins" + PRINT COPR-NOTICE + CRLF + RTRUE + + + .FUNCT V-UNSCRIPT + PRINTI "Here ends" + PRINT COPR-NOTICE + CRLF + GET 0,8 + BAND STACK,-2 + PUT 0,8,STACK + RTRUE + + + .FUNCT PRE-MOVE + EQUAL? PRSO,EGG-KNOB-1,EGG-KNOB-2,EGG-KNOB-3 /FALSE + EQUAL? PRSO,EGG-KNOB-4,EGG-KNOB-5 /FALSE + CALL HELD?,PRSO + ZERO? STACK /FALSE + PRINTR "I don't juggle objects!" + + + .FUNCT V-MOVE + FSET? PRSO,TAKEBIT \?ELS5 + PRINTI "Moving the " + PRINTD PRSO + PRINTR " reveals nothing." +?ELS5: PRINTI "You can't move the " + PRINTD PRSO + PRINTR "." + + + .FUNCT V-LAMP-ON + FSET? PRSO,LIGHTBIT \?ELS3 + FSET? PRSO,ONBIT \?ELS6 + PRINTR "It is already on." +?ELS6: FSET PRSO,ONBIT + PRINTI "The " + PRINTD PRSO + PRINTI " is now on." + CRLF + ZERO? LIT \TRUE + CALL LIT?,HERE >LIT + CRLF + CALL V-LOOK + RTRUE +?ELS3: PRINTR "You can't turn that on." + + + .FUNCT V-LAMP-OFF + FSET? PRSO,LIGHTBIT \?ELS3 + FSET? PRSO,ONBIT /?ELS6 + PRINTR "It is already off." +?ELS6: FCLEAR PRSO,ONBIT + EQUAL? ETERNAL-FLAME,LANTERN /?CND11 + FCLEAR PRSO,LIGHTBIT +?CND11: ZERO? LIT /?CND14 + CALL LIT?,HERE >LIT +?CND14: PRINTI "The " + PRINTD PRSO + PRINTI " is now off." + CRLF + CALL LIT?,HERE >LIT + CALL LIT?,HERE,FALSE-VALUE + ZERO? STACK \TRUE + EQUAL? HERE,GALLERY \?THN26 + CALL DESCRIBE-PORTRAIT-GALLERY + ZERO? STACK \TRUE +?THN26: PRINTI "It is now pitch black." + CRLF + RTRUE +?ELS3: FSET? PRSO,ONBIT \?ELS31 + PRINTR "It's not easy to see how. It's glowing by magic." +?ELS31: PRINTR "You can't turn that off." + + + .FUNCT V-WAIT,NUM=3 + PRINTI "Time passes..." + CRLF +?PRG3: DLESS? 'NUM,0 \?ELS7 + JUMP ?REP4 +?ELS7: CALL CLOCKER + ZERO? STACK /?PRG3 +?REP4: SET 'CLOCK-WAIT,TRUE-VALUE + RETURN CLOCK-WAIT + + + .FUNCT V-WAIT-FOR + LOC PRSO + EQUAL? STACK,HERE,WINNER \?ELS5 + PRINTR "It's already here!" +?ELS5: PRINTR "You will probably be waiting quite a while." + + + .FUNCT PRE-BOARD,AV + LOC WINNER >AV + FSET? PRSO,VEHBIT \?ELS3 + FSET? AV,VEHBIT \FALSE + PRINTI "You are already in the " + PRINTD AV + PRINTI ", cretin!" + CRLF + RETURN 2 +?ELS3: PRINTI "You can't get into the " + PRINTD PRSO + PRINTI "!" + CRLF + RETURN 2 + + + .FUNCT V-BOARD,AV + PRINTI "You are now in the " + PRINTD PRSO + PRINTI "." + CRLF + MOVE WINNER,PRSO + GETP PRSO,P?ACTION + CALL STACK,M-ENTER + RTRUE + + + .FUNCT V-DISEMBARK + LOC WINNER + EQUAL? STACK,PRSO /?ELS5 + PRINTI "You're not in that!" + CRLF + RETURN 2 +?ELS5: PRINTI "You are on your feet again." + CRLF + MOVE WINNER,HERE + RTRUE + + + .FUNCT GOTO,RM,V?=1,OLIT,OHERE + SET 'OHERE,HERE + SET 'OLIT,LIT + MOVE WINNER,RM + SET 'HERE,RM + CALL LIT?,HERE >LIT + EQUAL? WINNER,PLAYER \?CND1 + ZERO? OLIT \?CND1 + ZERO? LIT \?CND1 + RANDOM 100 + GRTR? 85,STACK \?CND1 + CALL JIGS-UP,STR?19 + RTRUE +?CND1: GETP HERE,P?ACTION + CALL STACK,M-ENTER + EQUAL? WINNER,PLAYER \?CND6 + SET 'ADV-OLD-LOC,FALSE-VALUE + IN? ADVENTURER,OHERE \?CND6 + ZERO? ADVENTURER-CHARMED /?CND6 + CALL WINNER-HAS-TREASURE? + ZERO? STACK /?CND6 + EQUAL? HERE,T-A,TEMPLE,CLOSET /?CND6 + EQUAL? HERE,WEST-CASTLE /?CND6 + PRINTI "The adventurer, proceeding cautiously, follows you. He seems to be paying particular attention to your possessions." + CRLF + CRLF + MOVE ADVENTURER,HERE + SET 'ADVENTURER-STAY,TRUE-VALUE +?CND6: EQUAL? HERE,RM \TRUE + EQUAL? PLAYER,WINNER /?ELS20 + EQUAL? HERE,CLOSET,ENGINE-ROOM /?ELS23 + IN? PLAYER,OHERE \?ELS23 + PRINTI "The " + PRINTD WINNER + PRINTR ", ever the good friend, leaves you." +?ELS23: EQUAL? HERE,CLOSET,ENGINE-ROOM /TRUE + IN? PLAYER,HERE \TRUE + PRINTI "The " + PRINTD WINNER + PRINTR " returns to you." +?ELS20: ZERO? V? /TRUE + CALL V-FIRST-LOOK + RTRUE + + + .FUNCT WINNER-HAS-TREASURE? + IN? EGG,WINNER /TRUE + IN? MAGIC-KNIFE,WINNER /TRUE + IN? JEWELLED-BOX,WINNER /TRUE + IN? SILVER-SPOON,WINNER /TRUE + RFALSE + + + .FUNCT V-BACK + CALL USE-DIRECTIONS + RSTACK + + + .FUNCT V-POUR-ON + PRINTR "You can't pour that on anything!" + + + .FUNCT V-SPRAY + CALL V-SQUEEZE + RSTACK + + + .FUNCT V-SSPRAY + CALL PERFORM,V?SPRAY,PRSI,PRSO + RSTACK + + + .FUNCT V-SQUEEZE + FSET? PRSO,VILLAIN \?ELS3 + PRINTI "The " + PRINTD PRSO + PRINTI " does not understand this." + JUMP ?CND1 +?ELS3: PRINTI "How singularly useless." +?CND1: CRLF + RTRUE + + + .FUNCT PRE-OIL + PRINTR "You probably put spinach in your gas tank, too." + + + .FUNCT V-OIL + PRINTR "That's not very useful." + + + .FUNCT V-ADVENT + PRINTR "A hollow voice says ""Fool.""" + + + .FUNCT V-DRINK,S + EQUAL? PRSO,WATER \?ELS5 + FSET? PRSO,RMUNGBIT \?ELS5 + PRINTR "Ooh! The water tastes terrible, and even the slightest amount makes you ill." +?ELS5: EQUAL? PRSO,GLOBAL-WATER \?ELS11 + EQUAL? HERE,BEACH,FOREST-2 \?ELS11 + PRINTR "Ooh! That tastes terrible!" +?ELS11: EQUAL? PRSO,WATER,GLOBAL-WATER /?ELS17 + PRINTR "You can't drink that!" +?ELS17: CALL INT,I-THIRST + GET STACK,C-TICK >S + GRTR? S,60 \?CND22 + PRINTR "You aren't the least bit thirsty." +?CND22: ADD S,39 + CALL QUEUE,I-THIRST,STACK + SET 'THIRST-COUNT,0 + ADD SCORE,DRINK-POINT >SCORE + SET 'DRINK-POINT,0 + PRINTI "The delicious spring water tasted great" + EQUAL? HERE,SHADY-BROOK \?ELS33 + PRINTR "." +?ELS33: EQUAL? PRSO,WATER \?ELS37 + GETP PRSO,P?SIZE + SUB STACK,1 >S + PUTP PRSO,P?SIZE,S + ZERO? S \?CND38 + REMOVE WATER +?CND38: GET JUG-FILLS,S + PRINT STACK + CRLF + RTRUE +?ELS37: PRINTR "." + + + .FUNCT V-EAT + PRINTR "Did they teach you to eat that in survival school?" + + + .FUNCT V-CURSES + ZERO? PRSO /?ELS5 + FSET? PRSO,VILLAIN \?ELS11 + PRINTR "Insults of this nature won't help you." +?ELS11: PRINTR "What a loony!" +?ELS5: PRINTR "Such language from an enchanter!" + + + .FUNCT V-LISTEN + PRINTI "The " + PRINTD PRSO + PRINTR " makes no sound." + + + .FUNCT V-FOLLOW + PRINTR "You're nuts!" + + + .FUNCT V-STAY + PRINTR "You will be lost without me!" + + + .FUNCT V-PRAY + PRINTR "If you pray enough, your prayers may be answered." + + + .FUNCT V-LEAP,TX,S + ZERO? PRSO /?ELS5 + IN? PRSO,HERE \?ELS11 + FSET? PRSO,VILLAIN \?ELS16 + PRINTI "The " + PRINTD PRSO + PRINTR " is too big to jump over." +?ELS16: CALL V-SKIP + RSTACK +?ELS11: PRINTR "That would be a good trick." +?ELS5: GETPT HERE,P?DOWN >TX + ZERO? TX /?ELS26 + PTSIZE TX >S + EQUAL? S,2 /?THN32 + EQUAL? S,4 \?ELS31 + GETB TX,1 + VALUE STACK + ZERO? STACK \?ELS31 +?THN32: PRINTI "This was not a very safe place to try jumping." + CRLF + CALL PICK-ONE,JUMPLOSS + CALL JIGS-UP,STACK + RSTACK +?ELS31: CALL V-SKIP + RSTACK +?ELS26: CALL V-SKIP + RSTACK + + + .FUNCT V-SKIP + PRINTR "Wasn't that fun?" + + + .FUNCT V-LEAVE + CALL DO-WALK,P?OUT + RSTACK + + + .FUNCT V-HELLO + ZERO? PRSO /?ELS5 + FSET? PRSO,VILLAIN \?ELS11 + PRINTI "The " + PRINTD PRSO + PRINTR " bows his head to you in greeting." +?ELS11: PRINTI "I think that only schizophrenics say ""Hello"" to a " + PRINTD PRSO + PRINTR "." +?ELS5: CALL PICK-ONE,HELLOS + PRINT STACK + CRLF + RTRUE + + + .FUNCT PRE-READ + EQUAL? PRSO,SPELL-BOOK /FALSE + ZERO? LIT \?ELS7 + PRINTR "It is impossible to read in the dark." +?ELS7: ZERO? PRSI /FALSE + FSET? PRSI,TRANSBIT /FALSE + PRINTI "How does one look through " + CALL PRINTA,PRSI + PRINTR "?" + + + .FUNCT V-READ + FSET? PRSO,READBIT /?ELS5 + PRINTI "How can I read " + CALL PRINTA,PRSO + PRINTR "?" +?ELS5: GETP PRSO,P?TEXT + PRINT STACK + CRLF + RTRUE + + + .FUNCT V-LOOK-UNDER + PRINTR "There is nothing but dust there." + + + .FUNCT V-LOOK-BEHIND + PRINTI "There is nothing behind the " + PRINTD PRSO + PRINTR "." + + + .FUNCT V-LOOK-INSIDE + FSET? PRSO,DOORBIT \?ELS5 + FSET? PRSO,OPENBIT \?ELS8 + PRINTI "The " + PRINTD PRSO + PRINTI " is open." + JUMP ?CND6 +?ELS8: PRINTI "The " + PRINTD PRSO + PRINTI " is closed." +?CND6: CRLF + RTRUE +?ELS5: FSET? PRSO,CONTBIT \?ELS16 + FSET? PRSO,VICBIT \?ELS21 + PRINTR "There is nothing special to be seen." +?ELS21: CALL SEE-INSIDE?,PRSO + ZERO? STACK /?ELS25 + FIRST? PRSO \?ELS30 + CALL PRINT-CONT,PRSO + ZERO? STACK \TRUE +?ELS30: FSET? PRSO,SURFACEBIT \?ELS34 + PRINTI "There is nothing on the " + PRINTD PRSO + PRINTR "." +?ELS34: PRINTI "The " + PRINTD PRSO + PRINTR " is empty." +?ELS25: PRINTI "The " + PRINTD PRSO + PRINTR " is closed." +?ELS16: PRINTI "You can't look inside " + CALL PRINTA,PRSO + PRINTR "." + + + .FUNCT SEE-INSIDE?,OBJ + FSET? OBJ,INVISIBLE /FALSE + FSET? OBJ,TRANSBIT /TRUE + FSET? OBJ,OPENBIT /TRUE + RFALSE + + + .FUNCT V-REPENT + PRINTR "It could very well be too late!" + + + .FUNCT PRE-BURN + ZERO? PRSI \?ELS5 + PRINTR "Your blazing gaze is insufficient." +?ELS5: EQUAL? PRSI,ETERNAL-FLAME /FALSE + PRINTI "With " + CALL PRINTA,PRSI + PRINTR "??!?" + + + .FUNCT V-BURN + FSET? PRSO,BURNBIT \?ELS5 + IN? PRSO,WINNER \?ELS10 + REMOVE PRSO + PRINTI "The " + PRINTD PRSO + PRINTI " catches fire." + CRLF + CALL JIGS-UP,STR?31 + RSTACK +?ELS10: REMOVE PRSO + PRINTI "The " + PRINTD PRSO + PRINTR " catches fire and is consumed." +?ELS5: PRINTI "I don't think you can burn " + CALL PRINTA,PRSO + PRINTR "." + + + .FUNCT V-TURN + PRINTR "This has no effect." + + + .FUNCT V-PUMP + PRINTR "It's not clear how." + + + .FUNCT V-INFLATE + PRINTR "How can you inflate that?" + + + .FUNCT V-DEFLATE + PRINTR "Come on, now!" + + + .FUNCT V-LOCK + PRINTR "It doesn't seem to work." + + + .FUNCT V-PICK + PRINTR "You can't pick that." + + + .FUNCT V-UNLOCK + CALL V-LOCK + RSTACK + + + .FUNCT V-CUT + FSET? PRSO,VILLAIN \?ELS5 + CALL PERFORM,V?KILL,PRSO,PRSI + RSTACK +?ELS5: FSET? PRSO,BURNBIT \?ELS7 + FSET? PRSI,WEAPONBIT \?ELS7 + REMOVE PRSO + PRINTI "Your skillful " + PRINTD PRSI + PRINTI "smanship slices the " + PRINTD PRSO + PRINTR " into innumerable slivers which evaporate instantaneously." +?ELS7: FSET? PRSI,WEAPONBIT /?ELS13 + PRINTI "I doubt that the ""cutting edge"" of " + CALL PRINTA,PRSI + PRINTR " is adequate." +?ELS13: PRINTI "Strange concept, cutting the " + PRINTD PRSO + PRINTR "...." + + + .FUNCT PRE-HIT + ZERO? PRSI /FALSE + IN? PRSI,WINNER /FALSE + PRINTI "You don't have the " + PRINTD PRSI + PRINTR "." + + + .FUNCT V-KILL + CALL IKILL,STR?32 + RSTACK + + + .FUNCT IKILL,STR + ZERO? PRSO \?ELS5 + PRINTI "There is nothing here to " + PRINT STR + PRINTR "." +?ELS5: FSET? PRSO,VILLAIN /?ELS9 + FSET? PRSO,VICBIT /?ELS9 + PRINTI "I've known strange people, but fighting a " + PRINTD PRSO + PRINTR "?" +?ELS9: ZERO? PRSI /?THN16 + EQUAL? PRSI,HANDS \?ELS15 +?THN16: PRINTI "Trying to " + PRINT STR + PRINTI " a " + PRINTD PRSO + PRINTR " with your bare hands is suicidal." +?ELS15: IN? PRSI,WINNER /?ELS21 + PRINTI "You aren't even holding the " + PRINTD PRSI + PRINTR "." +?ELS21: FSET? PRSI,WEAPONBIT /?ELS25 + PRINTI "Trying to " + PRINT STR + PRINTI " the " + PRINTD PRSO + PRINTI " with a " + PRINTD PRSI + PRINTR " is suicidal." +?ELS25: PRINTR "You'd never survive the attack." + + + .FUNCT V-ATTACK + CALL IKILL,STR?33 + RSTACK + + + .FUNCT V-SWING + ZERO? PRSI \?ELS5 + PRINTR "Whoosh!" +?ELS5: CALL PERFORM,V?ATTACK,PRSI,PRSO + RSTACK + + + .FUNCT V-KICK + CALL HACK-HACK,STR?34 + RSTACK + + + .FUNCT V-WAVE + CALL HACK-HACK,STR?35 + RSTACK + + + .FUNCT V-WAVE-AT + PRINTI "Despite your friendly nature, the " + PRINTD PRSO + PRINTR " isn't likely to respond." + + + .FUNCT V-RAISE + CALL HACK-HACK,STR?36 + RSTACK + + + .FUNCT V-LOWER + CALL HACK-HACK,STR?36 + RSTACK + + + .FUNCT V-RUB + CALL HACK-HACK,STR?37 + RSTACK + + + .FUNCT V-PUSH + CALL HACK-HACK,STR?38 + RSTACK + + + .FUNCT V-PUSH-TO + PRINTR "You can't push things to that." + + + .FUNCT V-MUNG + FSET? PRSO,VICBIT /?ELS5 + CALL HACK-HACK,STR?39 + RSTACK +?ELS5: ZERO? PRSI \?ELS7 + PRINTI "Trying to break the " + PRINTD PRSO + PRINTR " with your bare hands is suicidal." +?ELS7: FSET? PRSI,WEAPONBIT /?ELS11 + PRINTI "Trying to destroy the " + PRINTD PRSO + PRINTI " with a " + PRINTD PRSI + PRINTR " is quite self-destructive." +?ELS11: PRINTR "You can't." + + + .FUNCT HACK-HACK,STR + IN? PRSO,GLOBAL-OBJECTS \?ELS5 + EQUAL? PRSA,V?LOWER,V?RAISE,V?WAVE \?ELS5 + PRINTI "The " + PRINTD PRSO + PRINTR " isn't here!" +?ELS5: PRINT STR + PRINTD PRSO + CALL PICK-ONE,HO-HUM + PRINT STACK + CRLF + RTRUE + + + .FUNCT WORD-TYPE,OBJ,WORD,SYNS,?TMP1 + GETPT OBJ,P?SYNONYM >SYNS + PTSIZE SYNS + DIV STACK,2 + SUB STACK,1 + CALL ZMEMQ,WORD,SYNS,STACK + RSTACK + + + .FUNCT V-KNOCK + CALL WORD-TYPE,PRSO,W?DOOR + ZERO? STACK /?ELS5 + PRINTR "I don't think that anybody's home." +?ELS5: PRINTI "Why knock on " + CALL PRINTA,PRSO + PRINTR "?" + + + .FUNCT V-YELL + PRINTR "Aarrrrrgggggggghhhhhhhhhhh!" + + + .FUNCT V-PLUG + PRINTR "This has no effect." + + + .FUNCT V-EXORCISE + PRINTR "You can't do that with mere words!" + + + .FUNCT V-SHAKE,X + FSET? PRSO,VILLAIN \?ELS5 + PRINTR "Be real." +?ELS5: FSET? PRSO,TAKEBIT /?ELS9 + PRINTR "You can't take it; thus, you can't shake it!" +?ELS9: PRINTR "There's no point in shaking that." + + + .FUNCT PRE-DIG + ZERO? PRSI \?CND1 + SET 'PRSI,HANDS +?CND1: FSET? PRSO,TOOLBIT \?CND4 + SET 'PRSI,PRSO + SET 'PRSO,GROUND +?CND4: FSET? PRSI,TOOLBIT /FALSE + PRINTI "Digging with the " + PRINTD PRSI + PRINTR " is very silly." + + + .FUNCT V-DIG + PRINTR "The ground is unsuitable for digging here." + + + .FUNCT V-SMELL + PRINTI "It smells just like " + CALL PRINTA,PRSO + PRINTR "." + + + .FUNCT GLOBAL-IN?,OBJ1,OBJ2,TX + GETPT OBJ2,P?GLOBAL >TX + ZERO? TX /FALSE + PTSIZE TX + SUB STACK,1 + CALL ZMEMQB,OBJ1,TX,STACK + RSTACK + + + .FUNCT V-SWIM + ZERO? PRSO \?CND1 + CALL GLOBAL-IN?,GLOBAL-WATER,HERE + ZERO? STACK /?CND1 + SET 'PRSO,GLOBAL-WATER +?CND1: EQUAL? PRSO,GLOBAL-WATER,SEA \?ELS10 + PRINTR "You'd probably drown." +?ELS10: EQUAL? PRSO,WATER \?ELS14 + PRINTR "This is a very small brook. Forget it." +?ELS14: PRINTR "There's nothing to swim in!" + + + .FUNCT V-UNTIE + PRINTR "This cannot be tied, so it cannot be untied!" + + + .FUNCT PRE-TIE + EQUAL? PRSI,WINNER \FALSE + PRINTR "You can't tie it to yourself." + + + .FUNCT V-TIE + PRINTI "You can't tie the " + PRINTD PRSO + PRINTR " to that." + + + .FUNCT V-TIE-UP + PRINTR "You could certainly never tie it with that!" + + + .FUNCT V-MELT + PRINTI "I'm not sure that " + CALL PRINTA,PRSO + PRINTR " can be melted." + + + .FUNCT V-MUMBLE + PRINTR "You'll have to speak up if you expect me to hear you!" + + + .FUNCT V-ALARM + PRINTI "The " + PRINTD PRSO + PRINTR " isn't sleeping." + + + .FUNCT V-ZORK + PRINTR "ZORK (R) - A trilogy of fantasy classics from INFOCOM. " + + + .FUNCT V-CLIMB-ON + FSET? PRSO,VEHBIT \?ELS5 + CALL V-CLIMB-UP,P?UP,TRUE-VALUE + RSTACK +?ELS5: PRINTI "You can't climb onto the " + PRINTD PRSO + PRINTR "." + + + .FUNCT V-CLIMB-FOO + CALL V-CLIMB-UP,P?UP,TRUE-VALUE + RSTACK + + + .FUNCT V-CLIMB-UP,DIR=P?UP,OBJ=0,X,?TMP1 + GETPT HERE,DIR + ZERO? STACK /?ELS5 + CALL DO-WALK,DIR + RTRUE +?ELS5: ZERO? OBJ \?ELS7 + PRINTR "You can't go that way." +?ELS7: ZERO? OBJ /?ELS11 + GETPT PRSO,P?SYNONYM >X + PTSIZE X + CALL ZMEMQ,W?WALL,X,STACK + ZERO? STACK /?ELS11 + PRINTR "Climbing the walls is to no avail." +?ELS11: PRINTR "Bizarre!" + + + .FUNCT V-LIE-DOWN + EQUAL? HERE,BEDROOM \?ELS5 + CALL PERFORM,V?BOARD,BED + RTRUE +?ELS5: CALL PERFORM,V?SLEEP + RTRUE + + + .FUNCT V-CLIMB-DOWN + CALL V-CLIMB-UP,P?DOWN + RSTACK + + + .FUNCT V-SEND + FSET? PRSO,VILLAIN \?ELS5 + PRINTI "Why would you send for the " + PRINTD PRSO + PRINTR "?" +?ELS5: CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT V-WIND + PRINTI "You cannot wind up " + CALL PRINTA,PRSO + PRINTR "." + + + .FUNCT V-COUNT + PRINTR "You have lost your mind." + + + .FUNCT V-PUT-UNDER + PRINTR "You can't put anything under that." + + + .FUNCT V-PLAY + EQUAL? PRSO,KRILL,GLOBAL-KRILL \?ELS5 + PRINTI "You are so engrossed in the role of the " + PRINTD PRSO + PRINTI " that you kill yourself, just as he would have done!" + CRLF + CALL JIGS-UP,FALSE-VALUE + RSTACK +?ELS5: PRINTR "How peculiar!" + + + .FUNCT V-ENTER + CALL DO-WALK,P?IN + RSTACK + + + .FUNCT V-EXIT + CALL DO-WALK,P?OUT + RSTACK + + + .FUNCT V-CROSS + PRINTR "You can't cross that!" + + + .FUNCT V-SEARCH + PRINTR "You find nothing unusual." + + + .FUNCT V-FIND,L + LOC PRSO >L + EQUAL? PRSO,HANDS \?ELS5 + PRINTR "Within six feet of your head, assuming you haven't left that somewhere." +?ELS5: EQUAL? PRSO,ME \?ELS9 + PRINTR "You're around here somewhere..." +?ELS9: IN? PRSO,WINNER \?ELS13 + PRINTR "You have it!" +?ELS13: IN? PRSO,HERE /?THN18 + IN? PRSO,LOCAL-GLOBALS /?THN18 + EQUAL? PRSO,PSEUDO-OBJECT,ROAD \?ELS17 +?THN18: PRINTR "It's right in front of you." +?ELS17: FSET? L,VILLAIN \?ELS23 + PRINTI "The " + PRINTD L + PRINTR " has it." +?ELS23: FSET? L,CONTBIT \?ELS27 + PRINTI "It's in the " + PRINTD L + PRINTR "." +?ELS27: PRINTR "Beats me, but it's not here." + + + .FUNCT V-TELL + EQUAL? PRSO,TURTLE,ADVENTURER,FROG \?ELS5 + ZERO? P-CONT /?ELS10 + SET 'WINNER,PRSO + LOC WINNER >HERE + RETURN HERE +?ELS10: PRINTI "The " + PRINTD PRSO + PRINTR " looks at you expectantly, as though he thought you were about to talk." +?ELS5: PRINTI "You can't talk to the " + PRINTD PRSO + PRINTI "!" + CRLF + SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-CONT,FALSE-VALUE + RETURN 2 + + + .FUNCT V-ANSWER + PRINTI "Nobody seems to be awaiting your answer." + CRLF + SET 'P-CONT,FALSE-VALUE + SET 'QUOTE-FLAG,FALSE-VALUE + RTRUE + + + .FUNCT V-REPLY + PRINTI "It is hardly likely that the " + PRINTD PRSO + PRINTI " is interested." + CRLF + SET 'P-CONT,FALSE-VALUE + SET 'QUOTE-FLAG,FALSE-VALUE + RTRUE + + + .FUNCT V-KISS + PRINTR "I'd sooner kiss a pig." + + + .FUNCT V-RAPE + PRINTR "What a (ahem!) strange idea." + + + .FUNCT FIND-IN,WHERE,WHAT,W + FIRST? WHERE >W /?KLU11 +?KLU11: ZERO? W /FALSE +?PRG4: FSET? W,WHAT \?ELS8 + RETURN W +?ELS8: NEXT? W >W /?PRG4 + RFALSE + + + .FUNCT V-SAY,V + CALL FIND-IN,HERE,VICBIT >V + ZERO? V /?ELS5 + PRINTI "You must address the " + PRINTD V + PRINTR " directly." +?ELS5: GET P-LEXV,P-CONT + EQUAL? STACK,W?HELLO \?ELS9 + SET 'QUOTE-FLAG,FALSE-VALUE + RTRUE +?ELS9: SET 'QUOTE-FLAG,FALSE-VALUE + SET 'P-CONT,FALSE-VALUE + PRINTR "Talking to yourself is said to be a sign of impending mental collapse." + + + .FUNCT V-SPIN + PRINTR "You can't spin that!" + + + .FUNCT V-THROUGH,M + FSET? PRSO,DOORBIT \?ELS5 + CALL OTHER-SIDE,PRSO + CALL DO-WALK,STACK + RTRUE +?ELS5: FSET? PRSO,VEHBIT \?ELS7 + CALL PERFORM,V?BOARD,PRSO + RTRUE +?ELS7: FSET? PRSO,TAKEBIT /?ELS9 + PRINTI "You hit your head against the " + PRINTD PRSO + PRINTR " as you attempt this feat." +?ELS9: IN? PRSO,WINNER \?ELS13 + PRINTR "That would involve quite a contortion!" +?ELS13: CALL PICK-ONE,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT V-WEAR + PRINTI "You can't wear the " + PRINTD PRSO + PRINTR "." + + + .FUNCT V-THROW-OFF + PRINTR "You can't throw anything off that!" + + + .FUNCT V-$VERIFY + EQUAL? PRSO,INTNUM \?ELS5 + EQUAL? P-NUMBER,4338 \?ELS5 + PRINTN SERIAL + CRLF + RTRUE +?ELS5: ZERO? PRSO /?ELS11 + PRINTR "I don't understand that sentence." +?ELS11: PRINTI "Verifying disk..." + CRLF + VERIFY \?ELS23 + PRINTR "The disk is correct." +?ELS23: CRLF + PRINTR "** Disk Failure **" + + + .FUNCT V-STAND + LOC WINNER + FSET? STACK,VEHBIT \?ELS5 + LOC WINNER + CALL PERFORM,V?DISEMBARK,STACK + RTRUE +?ELS5: PRINTR "You are already standing, I think." + + + .FUNCT V-PUT-BEHIND + PRINTR "That hiding place is too obvious." + + + .FUNCT DO-WALK,DIR + SET 'P-WALK-DIR,DIR + CALL PERFORM,V?WALK,DIR + RSTACK + + + .FUNCT V-WALK-TO + IN? PRSO,HERE /?THN6 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK /?ELS5 +?THN6: PRINTR "It's here!" +?ELS5: PRINTR "You should supply a direction!" + + + .FUNCT OTHER-SIDE,DOBJ,P=0,TX +?PRG1: NEXTP HERE,P >P + LESS? P,LOW-DIRECTION /FALSE + GETPT HERE,P >TX + PTSIZE TX + EQUAL? STACK,DEXIT \?PRG1 + GETB TX,DEXITOBJ + EQUAL? STACK,DOBJ \?PRG1 + RETURN P + + + .FUNCT V-DRINK-FROM + EQUAL? PRSO,GLOBAL-WATER \?ELS5 + CALL PERFORM,V?DRINK,PRSO + RTRUE +?ELS5: EQUAL? PRSO,JUG \?ELS7 + IN? WATER,JUG \?ELS7 + CALL PERFORM,V?DRINK,WATER + RTRUE +?ELS7: PRINTR "How peculiar!" + + + .FUNCT V-LEAN-ON + PRINTR "Are you so very tired, then?" + + + .FUNCT V-MAKE-LINE-TO,?TMP1 + FSET? PRSO,POINTBIT \?ELS5 + FSET? PRSI,POINTBIT \?ELS5 + IN? PENCIL,WINNER /?ELS12 + PRINTR "You're not holding anything you can make it with." +?ELS12: ZERO? PENCIL-COUNT \?ELS16 + PRINTR "There's not enough left of the pencil to make a line with." +?ELS16: GETP PRSO,P?POINT + GET TMAZE-ROOMS,STACK >?TMP1 + GETP PRSI,P?POINT + GET TMAZE-ROOMS,STACK + CALL CONNECT,?TMP1,STACK + RSTACK +?ELS5: PRINTR "That's silly." + + + .FUNCT V-MAKE-LINE,?TMP1 + ZERO? PRSI /?ELS5 + FSET? PRSI,POINTBIT \?ELS5 + CALL PERFORM,V?MAKE-LINE-TO,PRSO,PRSI + RETURN 2 +?ELS5: ZERO? PRSI /?ELS11 + EQUAL? PRSI,PENCIL /?ELS11 + PRINTR "You won't write anything with that!" +?ELS11: CALL 2OBJS? + ZERO? STACK \?ELS17 + RETURN 2 +?ELS17: GET P-PRSO,1 >?TMP1 + GET P-PRSO,2 + CALL PERFORM,V?MAKE-LINE-TO,?TMP1,STACK + RETURN 2 + + + .FUNCT V-ERASE-LINE-TO,?TMP1 + FSET? PRSO,POINTBIT \?ELS5 + FSET? PRSI,POINTBIT \?ELS5 + IN? PENCIL,WINNER /?ELS12 + PRINTR "You're not holding anything you can erase it with." +?ELS12: ZERO? ERASER-COUNT \?ELS16 + PRINTR "There's not enough left of the eraser." +?ELS16: GETP PRSO,P?POINT + GET TMAZE-ROOMS,STACK >?TMP1 + GETP PRSI,P?POINT + GET TMAZE-ROOMS,STACK + CALL DISCONNECT,?TMP1,STACK + RSTACK +?ELS5: PRINTR "That's silly." + + + .FUNCT V-ERASE-LINE,?TMP1 + ZERO? PRSI /?ELS5 + EQUAL? PRSI,PENCIL /?ELS5 + PRINTR "You won't erase anything with that!" +?ELS5: GET P-PRSO,0 + EQUAL? STACK,1 \?ELS11 + GET P-PRSO,1 + EQUAL? STACK,PENCIL \?ELS16 + PRINTR "If you want to erase one of the pencil lines, you should specify the line. For example, ""ERASE THE LINE BETWEEN X AND Z.""" +?ELS16: GET P-PRSO,1 + FSET? STACK,POINTBIT \?ELS20 + PRINTR "You can't seem to erase the marking." +?ELS20: PRINTR "You can't erase that!" +?ELS11: CALL 2OBJS? + ZERO? STACK \?ELS28 + RETURN 2 +?ELS28: GET P-PRSO,1 >?TMP1 + GET P-PRSO,2 + CALL PERFORM,V?ERASE-LINE-TO,?TMP1,STACK + RETURN 2 + + + .FUNCT 2OBJS? + GET P-PRSO,0 + EQUAL? STACK,2 /TRUE + PUT P-PRSO,0,1 + PRINTI "That sentence doesn't make sense." + CRLF + RFALSE + + + .FUNCT V-REACH-IN,OBJ + FSET? PRSO,CONTBIT \?THN6 + FSET? PRSO,VILLAIN \?ELS5 +?THN6: PRINTR "What a maroon!" +?ELS5: FSET? PRSO,OPENBIT /?ELS11 + PRINTR "It's not open." +?ELS11: FIRST? PRSO >OBJ \?THN16 + FSET? OBJ,INVISIBLE /?THN16 + FSET? OBJ,TAKEBIT /?ELS15 +?THN16: PRINTR "It's empty." +?ELS15: PRINTI "You reach into the " + PRINTD PRSO + PRINTR " and feel something." + + + .FUNCT ROB,WHO,WHERE=0,HIDE?=0,N,X,ROBBED?=0 + FIRST? WHO >X /?KLU13 +?KLU13: +?PRG1: ZERO? X \?CND3 + RETURN ROBBED? +?CND3: NEXT? X >N /?KLU14 +?KLU14: CALL RIPOFF,X,WHERE + ZERO? STACK /?CND6 + ZERO? HIDE? /?CND9 + FSET X,NDESCBIT +?CND9: SET 'ROBBED?,X +?CND6: SET 'X,N + JUMP ?PRG1 + + + .FUNCT BLT,WHO,WHERE,N,X,CNT=0 + FIRST? WHO >X /?KLU6 +?KLU6: +?PRG1: ZERO? X \?CND3 + RETURN CNT +?CND3: NEXT? X >N /?KLU7 +?KLU7: MOVE X,WHERE + INC 'CNT + SET 'X,N + JUMP ?PRG1 + + + .FUNCT RIPOFF,X,WHERE + FSET? X,INVISIBLE /FALSE + FSET? X,SCROLLBIT /FALSE + EQUAL? X,BREAD,JUG /FALSE + FSET? X,TOUCHBIT \FALSE + FSET? X,TAKEBIT \FALSE + EQUAL? X,STRONG-BOX /FALSE + ZERO? WHERE /?ELS12 + IN? X,WHERE /FALSE +?ELS12: ZERO? WHERE /?ELS16 + MOVE X,WHERE + RTRUE +?ELS16: REMOVE X + RTRUE + + + .FUNCT V-POINT + IN? ADVENTURER,HERE \?ELS5 + IN? PRSO,ADVENTURER \?ELS10 + CALL PERFORM,V?ASK-FOR,ADVENTURER,PRSO + RTRUE +?ELS10: ZERO? ADVENTURER-CHARMED /?ELS12 + PRINTI "The adventurer nods as if in approval of the " + PRINTD PRSO + PRINTR "." +?ELS12: PRINTI "The adventurer backs off from the " + PRINTD PRSO + PRINTR "." +?ELS5: PRINTR "Not much use in that...." + + + .FUNCT V-ASK-FOR + EQUAL? PRSO,ADVENTURER \?ELS5 + IN? PRSI,PRSO /?ELS10 + PRINTR "He's not holding that!" +?ELS10: ZERO? ADVENTURER-CHARMED /?ELS14 + FSET? PRSI,TREASURE \?ELS20 + PRINTR "The adventurer politely refuses, indicating its great beauty and value." +?ELS20: EQUAL? PRSI,LANTERN,SWORD \?ELS24 + PRINTR "The adventurer refuses, indicating its utter necessity in his travels." +?ELS24: MOVE PRSI,WINNER + PRINTI "The adventurer, not seeing any use in keeping the " + PRINTD PRSI + PRINTR " anyway, hands it to you gladly." +?ELS14: PRINTR "The adventurer waves you off with an aggressive gesture." +?ELS5: PRINTI "The " + PRINTD PRSO + PRINTR " is not likely to oblige." + + + .FUNCT V-THANK + ZERO? PRSO /?ELS5 + FSET? PRSO,VILLAIN \?ELS5 + PRINTI "The " + PRINTD PRSO + PRINTR " seems less than overjoyed." +?ELS5: PRINTR "The Circle will revoke your certificate if you keep this up." + + + .FUNCT V-FILL + ZERO? PRSI \?ELS5 + CALL GLOBAL-IN?,GLOBAL-WATER,HERE + ZERO? STACK /?ELS10 + CALL PERFORM,V?FILL,PRSO,GLOBAL-WATER + RSTACK +?ELS10: PRINTR "There's nothing to fill it with." +?ELS5: PRINTR "I don't see how you propose to do that." + + + .FUNCT V-ESCAPE + PRINTI "There is no escape from the " + PRINTD PRSO + PRINTR "!" + + + .FUNCT V-WRITE-WITH + EQUAL? PRSO,PENCIL \?ELS5 + IN? TMAP,WINNER \?ELS10 + CALL WRITE-HINT + RTRUE +?ELS10: PRINTR "There's nothing good to write on." +?ELS5: PRINTR "You can't write with that!" + + + .FUNCT WRITE-HINT + PRINTR "You can't draw on it arbitrarily. Rather, the pencil seems to home in on various points on the map, daring you to draw a line between them." + + + .FUNCT V-WRITE-ON,SPELL + EQUAL? PRSI,PENCIL /?THN6 + ZERO? PRSI \?ELS5 + IN? PENCIL,WINNER \?ELS5 +?THN6: EQUAL? PRSO,TMAP \?ELS12 + CALL WRITE-HINT + RTRUE +?ELS12: FSET? PRSO,SCROLLBIT \?ELS14 + FIRST? PRSO \?ELS14 + FIRST? PRSO >SPELL /?KLU32 +?KLU32: FSET SPELL,RMUNGBIT + PRINTR "You've written on the scroll all right, but you've also defaced the spell written on it." +?ELS14: PRINTR "You can't write on that!" +?ELS5: ZERO? PRSI /?ELS24 + PRINTR "You can't write with that!" +?ELS24: PRINTR "You have nothing to write with!" + + + .FUNCT V-AVOID + PRINTR "Perhaps that is unavoidable." + + + .FUNCT V-SHOW + PRINTI "I doubt the " + PRINTD PRSI + PRINTR " is interested." + + + .FUNCT PRE-SSHOW + CALL PERFORM,V?SHOW,PRSI,PRSO + RTRUE + + + .FUNCT V-SSHOW + CALL V-SGIVE + RSTACK + + + .FUNCT PRE-BRING + EQUAL? PRSO,ME /FALSE + PRINTR "I don't understand that sentence." + + + .FUNCT V-BRING + EQUAL? WINNER,PLAYER \?ELS5 + PRINTR "Are you talking to yourself again?" +?ELS5: PRINTR """You can get it yourself!""" + + + .FUNCT V-DRAW-ON + FSET? PRSO,SCROLLBIT \?ELS5 + CALL PERFORM,V?WRITE-ON,PRSO + RTRUE +?ELS5: PRINTR "You can't draw on that!" + + + .FUNCT V-SHARPEN + EQUAL? PRSI,MAGIC-KNIFE,SWORD \?ELS5 + EQUAL? PRSO,MAGIC-KNIFE,SWORD \?ELS10 + PRINTR "It's plenty sharp already." +?ELS10: EQUAL? PRSO,PENCIL \?ELS14 + PRINTR "The pencil can't be sharpened. Perhaps it is magical." +?ELS14: PRINTR "You can't sharpen that." +?ELS5: PRINTR "You'll never sharpen anything with that!" + + + .FUNCT V-FORGET + PRINTR "You might also try not thinking about a purple hippopotamus!" + + + .FUNCT PRE-FLY + ZERO? FLYING? \FALSE + ZERO? PRSO /?ELS8 + PRINTR "What a loon!" +?ELS8: PRINTR "You are probably a loon, although you can't fly." + + + .FUNCT V-HIDE + ZERO? PRSO \?ELS5 + PRINTI "You'll have to say which direction you want to go." + CRLF + RETURN 2 +?ELS5: EQUAL? PRSI,ADVENTURER /?THN12 + ZERO? PRSI \?ELS11 + IN? ADVENTURER,HERE \?ELS11 +?THN12: FSET? PRSO,TREASURE \?ELS20 + PRINTI "Too late. The adventurer has already noticed the " + PRINTD PRSO + PRINTR "." +?ELS20: PRINTR "He isn't interested in that anyway." +?ELS11: ZERO? PRSI /?ELS28 + FSET? PRSI,VICBIT \?ELS28 + PRINTI "Why? The " + PRINTD PRSI + PRINTR " isn't interested in it." +?ELS28: ZERO? PRSI \FALSE + PRINTR "From what? From whom? Why?" + + + .FUNCT V-CHASTISE + PRINTR "Use prepositions to indicate precisely what you want to do: LOOK AT THE OBJECT, LOOK INSIDE THE OBJECT, LOOK FOR THE OBJECT, etc." + + + .FUNCT V-GAG + EQUAL? PRSO,ME /?ELS5 + PRINTR "What a concept!" +?ELS5: EQUAL? PRSI,SILVER-SPOON /?ELS9 + PRINTI "With a " + PRINTD PRSO + PRINTR "?" +?ELS9: PRINTR "Grody to the max! Like, totally!" + + + .FUNCT V-GROSS-OUT + FSET? PRSO,VILLAIN \?ELS5 + PRINTR "Let's not be disgusting!" +?ELS5: PRINTR "Gag me with a spoon!" + + + .FUNCT V-WHO + FSET? PRSO,VILLAIN \?ELS5 + CALL PERFORM,V?EXAMINE,PRSO + RTRUE +?ELS5: PRINTR "That's not a person!" + + .ENDI diff --git a/verbs.zil b/verbs.zil index 2da679d..a3a775e 100644 --- a/verbs.zil +++ b/verbs.zil @@ -297,8 +297,8 @@ game position, or end this session of the game?| *3777*>> @@ -309,7 +309,7 @@ Release "> >)>> > - ) @@ -539,7 +539,8 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR> ) ( > - )> + ) + (ELSE )> ) ( @@ -564,16 +565,17 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR> ) - ( - >> - ) + ( + > + ) + (ELSE )> + ) (T )>> - > + > ) @@ -594,7 +596,8 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR> ) (T )>) - ( ,CONTBIT> + ( + ,CONTBIT> ,OPENBIT>>> ) @@ -804,7 +807,7 @@ manuscript. His wishes prevail, and it is agreed to send you back...." CR> ) >> > - > + > > > > - )> - ) + ) + (> + ) + (.WHERE ) (ELSE )> )>> diff --git a/z4.chart b/z4.chart new file mode 100644 index 0000000..794444c --- /dev/null +++ b/z4.chart @@ -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 diff --git a/z4.errors b/z4.errors new file mode 100644 index 0000000..d3caf44 --- /dev/null +++ b/z4.errors @@ -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 diff --git a/z4.record b/z4.record new file mode 100644 index 0000000..1df818b --- /dev/null +++ b/z4.record @@ -0,0 +1,1082 @@ + +Combined ZIL Compiler Ver 2.0 (MIM) +----------------------------------- +Input file: SS:Z4.ZIL.4 +Input file: SS:SYNTAX.ZIL.122 +Input file: SS:MACROS.ZIL.22 +Compiling routine: PRINTA +Compiling routine: RANDOM-ELEMENT +Compiling routine: PICK-ONE +Input file: SS:CLOCK.ZIL.3 +Compiling routine: QUEUE +Compiling routine: INT +Compiling routine: CLOCKER +Input file: SS:MAIN.ZIL.86 +Compiling routine: GO +Compiling routine: MAIN-LOOP +Compiling routine: MAIN-LOOP-1 +Compiling routine: PERFORM +Compiling routine: I-TIME +Input file: SS:GPARSER.ZIL.9 +Compiling routine: PARSER +Compiling routine: STUFF +Compiling routine: INBUF-STUFF +Compiling routine: INBUF-ADD +Compiling routine: WT? +Compiling routine: CLAUSE +Compiling routine: NUMBER? +Compiling routine: ORPHAN-MERGE +Compiling routine: ACLAUSE-WIN +Compiling routine: NCLAUSE-WIN +Compiling routine: WORD-PRINT +Compiling routine: UNKNOWN-WORD +Compiling routine: CANT-USE +Compiling routine: SYNTAX-CHECK +Compiling routine: CANT-ORPHAN +Compiling routine: ORPHAN +Compiling routine: THING-PRINT +Compiling routine: BUFFER-PRINT +Compiling routine: PREP-PRINT +Compiling routine: CLAUSE-COPY +Compiling routine: CLAUSE-ADD +Compiling routine: PREP-FIND +Compiling routine: SYNTAX-FOUND +Compiling routine: GWIM +Compiling routine: SNARF-OBJECTS +Compiling routine: BUT-MERGE +Compiling routine: SNARFEM +Compiling routine: GET-OBJECT +Compiling routine: MOBY-FIND +Compiling routine: WHICH-PRINT +Compiling routine: GLOBAL-CHECK +Compiling routine: DO-SL +Compiling routine: SEARCH-LIST +Compiling routine: OBJ-FOUND +Compiling routine: TAKE-CHECK +Compiling routine: ITAKE-CHECK +Compiling routine: MANY-CHECK +Compiling routine: ZMEMQ +Compiling routine: ZMEMQB +Compiling routine: LIT? +Compiling routine: PRSO-PRINT +Compiling routine: PRSI-PRINT +Compiling routine: THIS-IT? +Compiling routine: ACCESSIBLE? +Compiling routine: META-LOC +Input file: SS:VERBS.ZIL.245 +Compiling routine: V-VERBOSE +Compiling routine: V-BRIEF +Compiling routine: V-SUPER-BRIEF +Compiling routine: V-LOOK +Compiling routine: V-FIRST-LOOK +Compiling routine: V-EXAMINE +Compiling routine: DESCRIBE-ROOM + ** Note: Non-predicate jump flushed FSET +Compiling routine: DESCRIBE-OBJECTS +Compiling routine: LIGHTED? +Compiling routine: DESCRIBE-OBJECT +Compiling routine: PRINT-CONT +Compiling routine: FIRSTER +Compiling routine: V-SCORE +Compiling routine: FINISH +Compiling routine: V-QUIT + ** Note: Non-predicate jump flushed PRINTI +Compiling routine: YES? +Compiling routine: V-VERSION +Compiling routine: JIGS-UP +Compiling routine: RANDOMIZE-OBJECTS +Compiling routine: KILL-INTERRUPTS +Compiling routine: V-RESTORE +Compiling routine: V-SAVE +Compiling routine: V-RESTART +Compiling routine: V-WALK-AROUND +Compiling routine: USE-DIRECTIONS +Compiling routine: V-LAUNCH +Compiling routine: V-WALK +Compiling routine: THIS-IS-IT +Compiling routine: V-INVENTORY +Compiling routine: PRE-TAKE +Compiling routine: V-TAKE +Compiling routine: ITAKE +Compiling routine: V-PUT-ON +Compiling routine: PRE-PUT +Compiling routine: V-PUT +Compiling routine: PRE-GIVE +Compiling routine: PRE-SGIVE +Compiling routine: HELD? +Compiling routine: V-GIVE +Compiling routine: V-SGIVE +Compiling routine: V-DROP +Compiling routine: V-THROW +Compiling routine: IDROP +Compiling routine: V-OPEN +Compiling routine: PRINT-CONTENTS +Compiling routine: V-CLOSE +Compiling routine: CCOUNT +Compiling routine: WEIGHT +Compiling routine: V-SCRIPT +Compiling routine: V-UNSCRIPT +Compiling routine: PRE-MOVE +Compiling routine: V-MOVE +Compiling routine: V-LAMP-ON +Compiling routine: V-LAMP-OFF +Compiling routine: V-WAIT +Compiling routine: V-WAIT-FOR +Compiling routine: PRE-BOARD +Compiling routine: V-BOARD +Compiling routine: V-DISEMBARK +Compiling routine: GOTO +Compiling routine: WINNER-HAS-TREASURE? +Compiling routine: V-BACK +Compiling routine: V-POUR-ON +Compiling routine: V-SPRAY +Compiling routine: V-SSPRAY +Compiling routine: V-SQUEEZE +Compiling routine: PRE-OIL +Compiling routine: V-OIL +Compiling routine: V-ADVENT +Compiling routine: V-DRINK +Compiling routine: V-EAT +Compiling routine: V-CURSES +Compiling routine: V-LISTEN +Compiling routine: V-FOLLOW +Compiling routine: V-STAY +Compiling routine: V-PRAY +Compiling routine: V-LEAP +Compiling routine: V-SKIP +Compiling routine: V-LEAVE +Compiling routine: V-HELLO +Compiling routine: PRE-READ +Compiling routine: V-READ +Compiling routine: V-LOOK-UNDER +Compiling routine: V-LOOK-BEHIND +Compiling routine: V-LOOK-INSIDE +Compiling routine: SEE-INSIDE? +Compiling routine: V-REPENT +Compiling routine: PRE-BURN +Compiling routine: V-BURN +Compiling routine: V-TURN +Compiling routine: V-PUMP +Compiling routine: V-INFLATE +Compiling routine: V-DEFLATE +Compiling routine: V-LOCK +Compiling routine: V-PICK +Compiling routine: V-UNLOCK +Compiling routine: V-CUT +Compiling routine: PRE-HIT +Compiling routine: V-KILL +Compiling routine: IKILL +Compiling routine: V-ATTACK +Compiling routine: V-SWING +Compiling routine: V-KICK +Compiling routine: V-WAVE +Compiling routine: V-WAVE-AT +Compiling routine: V-RAISE +Compiling routine: V-LOWER +Compiling routine: V-RUB +Compiling routine: V-PUSH +Compiling routine: V-PUSH-TO +Compiling routine: V-MUNG +Compiling routine: HACK-HACK +Compiling routine: WORD-TYPE +Compiling routine: V-KNOCK +Compiling routine: V-YELL +Compiling routine: V-PLUG +Compiling routine: V-EXORCISE +Compiling routine: V-SHAKE +Compiling routine: PRE-DIG +Compiling routine: V-DIG +Compiling routine: V-SMELL +Compiling routine: GLOBAL-IN? +Compiling routine: V-SWIM +Compiling routine: V-UNTIE +Compiling routine: PRE-TIE +Compiling routine: V-TIE +Compiling routine: V-TIE-UP +Compiling routine: V-MELT +Compiling routine: V-MUMBLE +Compiling routine: V-ALARM +Compiling routine: V-ZORK +Compiling routine: V-CLIMB-ON +Compiling routine: V-CLIMB-FOO +Compiling routine: V-CLIMB-UP +Compiling routine: V-LIE-DOWN +Compiling routine: V-CLIMB-DOWN +Compiling routine: V-SEND +Compiling routine: V-WIND +Compiling routine: V-COUNT +Compiling routine: V-PUT-UNDER +Compiling routine: V-PLAY +Compiling routine: V-ENTER +Compiling routine: V-EXIT +Compiling routine: V-CROSS +Compiling routine: V-SEARCH +Compiling routine: V-FIND +Compiling routine: V-TELL +Compiling routine: V-ANSWER +Compiling routine: V-REPLY +Compiling routine: V-KISS +Compiling routine: V-RAPE +Compiling routine: FIND-IN +Compiling routine: V-SAY +Compiling routine: V-SPIN +Compiling routine: V-THROUGH +Compiling routine: V-WEAR +Compiling routine: V-THROW-OFF +Compiling routine: V-$VERIFY +Compiling routine: V-STAND +Compiling routine: V-PUT-BEHIND +Compiling routine: DO-WALK +Compiling routine: V-WALK-TO +Compiling routine: OTHER-SIDE +Compiling routine: V-DRINK-FROM +Compiling routine: V-LEAN-ON +Compiling routine: V-MAKE-LINE-TO +Compiling routine: V-MAKE-LINE +Compiling routine: V-ERASE-LINE-TO +Compiling routine: V-ERASE-LINE +Compiling routine: 2OBJS? +Compiling routine: V-REACH-IN +Compiling routine: ROB +Compiling routine: BLT +Compiling routine: RIPOFF +Compiling routine: V-POINT +Compiling routine: V-ASK-FOR +Compiling routine: V-THANK +Compiling routine: V-FILL +Compiling routine: V-ESCAPE +Compiling routine: V-WRITE-WITH +Compiling routine: WRITE-HINT +Compiling routine: V-WRITE-ON +Compiling routine: V-AVOID +Compiling routine: V-SHOW +Compiling routine: PRE-SSHOW +Compiling routine: V-SSHOW +Compiling routine: PRE-BRING +Compiling routine: V-BRING +Compiling routine: V-DRAW-ON +Compiling routine: V-SHARPEN +Compiling routine: V-FORGET +Compiling routine: PRE-FLY +Compiling routine: V-HIDE +Compiling routine: V-CHASTISE +Compiling routine: V-GAG +Compiling routine: V-GROSS-OUT +Compiling routine: V-WHO +Input file: SS:RECORD.ZIL.1 +Compiling routine: V-$COMMAND +Compiling routine: V-$RANDOM +Compiling routine: V-$RECORD +Compiling routine: V-$UNRECORD +Input file: SS:GLOBALS.ZIL.139 +Compiling routine: NULL-F +Compiling routine: GROUND-F +Compiling routine: CORRIDOR-F +Compiling routine: WALLS-F +Compiling routine: CRETIN +Compiling routine: WINDOW-F +Compiling routine: SEA-F +Compiling routine: FOREST-F +Compiling routine: TEMPLE-OBJ-F +Compiling routine: COURTYARD-F +Compiling routine: TOWER-F +Compiling routine: JUG-F +Compiling routine: WATER-FUNCTION +Compiling routine: SKY-F +Compiling routine: NOT-HERE-OBJECT-F +Compiling routine: FIND-NOT-HERE +Compiling routine: GLOBAL-NOT-HERE-PRINT +Compiling routine: NOT-HERE-PRINT +Compiling routine: BELBOZ-F +Compiling routine: GLOBAL-ROOM-F +Compiling routine: BRAMBLES-F +Compiling routine: GLOBAL-HOLE-F +Input file: SS:TERROR.ZIL.184 +Compiling routine: TERROR-F +Compiling routine: TMAP-F +Compiling routine: PENCIL-F +Compiling routine: BLACK-PASSAGE-F +Compiling routine: TMAZE-F +Compiling routine: END-OF-WORLD +Compiling routine: DRAW-TMAZE +Compiling routine: FIXED-FONT-ON +Compiling routine: FIXED-FONT-OFF +Compiling routine: CN +Compiling routine: ECN +Compiling routine: CONNECT +Compiling routine: DISCONNECT +Compiling routine: DESCRIBE-NEW-EXIT +Compiling routine: CONNECTED? +Compiling routine: I-TERROR +Compiling routine: TNULL-F +Compiling routine: TWALK +Compiling routine: TWALK1 +Compiling routine: PATH-OUT? +Compiling routine: LEGEND-BOOK-F +Compiling routine: LEGEND-TWO-F +Input file: SS:STAIR.ZIL.131 +Compiling routine: LANDING-EXIT-F +Compiling routine: ADVENTURER-DROPS-OUT +Compiling routine: STAIRS-F +Compiling routine: STAIR-DISPEL +Compiling routine: ENDLESS-UP +Compiling routine: ENDLESS-DOWN +Compiling routine: ENDLESS-UP-DOWN +Compiling routine: ENDLESS-STAIR-F +Compiling routine: ENDLESS-EXIT-F +Compiling routine: STAIR-TO-TABLE +Compiling routine: TABLE-TO-STAIR +Compiling routine: REAL-STAIR-EXIT-F +Compiling routine: PIT-EXIT-F +Compiling routine: PIT-F +Compiling routine: STOP-FLYING +Compiling routine: I-FALL +Compiling routine: I-FALL-FOREVER +Compiling routine: DESTROY-ALL +Compiling routine: REMOVE-ALL +Compiling routine: WARLOCK-TOWER-F +Compiling routine: GLOBAL-KRILL-F +Compiling routine: DRAGON-F +Compiling routine: SECOND-ACT +Compiling routine: I-DRAGON +Compiling routine: SHAPE-F +Compiling routine: THIRD-ACT +Compiling routine: I-SHAPE +Compiling routine: I-BYE +Compiling routine: KRILL-F +Compiling routine: I-MUNG-ROOM +Input file: SS:MAGIC.ZIL.277 +Compiling routine: V-SPELLS +Compiling routine: SPELL-TIMES +Compiling routine: SPELL-PRINT +Compiling routine: SPELL-BOOK-F +Compiling routine: SPELL-CHECK +Compiling routine: PRE-QUICK-CAST + ** Note: Atomic argument to routine assumed constant - MORE-PROBE + +Compiling routine: SCROLL-F +Compiling routine: SPELL-F +Compiling routine: FORGET-SPELL +Compiling routine: FORGET-ALL +Compiling routine: V-CAST +Compiling routine: V-LEARN +Compiling routine: V-MEMORIZE +Compiling routine: V-GNUSTO +Compiling routine: MORE-PROBE +Compiling routine: V-FROTZ +Compiling routine: V-OZMOO +Compiling routine: I-DEATH-CHEATED-END +Compiling routine: V-ZIFMIA +Compiling routine: NO-ZIF +Compiling routine: V-VAXUM +Compiling routine: V-GONDAR +Compiling routine: V-REZROV +Compiling routine: I-TALK-TO-ANIMAL +Compiling routine: V-NITFOL +Compiling routine: I-HASTE +Compiling routine: V-EXEX +Compiling routine: V-KULCAD +Compiling routine: V-MELBOR +Compiling routine: V-BLORB +Compiling routine: STRONG-BOX-F +Compiling routine: V-GUNCHO +Compiling routine: V-KREBF +Compiling routine: V-CLEESH +Compiling routine: V-IZYUK +Compiling routine: I-FLY +Compiling routine: V-FILFRE +Input file: SS:KNOT.ZIL.51 +Compiling routine: JEWELLED-BOX-A +Compiling routine: JEWELLED-BOX-F +Compiling routine: MAGIC-ROPE-F +Compiling routine: ROPE-DISSOLVES +Compiling routine: MAGIC-KNIFE-F +Input file: SS:PURLOINED.ZIL.185 +Compiling routine: MAPS-F +Compiling routine: ENTHARION-F +Compiling routine: GLOBE-F +Compiling routine: PEDESTAL-F +Compiling routine: PURLOINED-ROOM-F +Compiling routine: DOOR-ILLUSION-F +Compiling routine: MIRROR-F +Compiling routine: SHARDS-F +Compiling routine: MIRROR-HALL-F +Compiling routine: MIRROR-STUFF-F +Compiling routine: NO-MORE-ADVENTURER +Compiling routine: I-LG-ADVENTURER +Compiling routine: DESCRIBE-ADVENTURER +Compiling routine: GLOBAL-ADVENTURER-F +Compiling routine: ADVENTURER-LG-F +Compiling routine: ADVENTURER-C +Compiling routine: ADVENTURER-D +Compiling routine: SWORD-F +Compiling routine: ADVENTURER-ACTOR +Compiling routine: ADVENTURER-F +Compiling routine: I-ADVENTURER-UNCHARM +Compiling routine: I-ADVENTURER +Compiling routine: MOVE-ADVENTURER +Compiling routine: DOOR-FROM? +Compiling routine: ADVENTURER-TAKE +Compiling routine: DIR-FROM +Compiling routine: DIR-PRINT +Compiling routine: ADVENTURER-DECIDE +Compiling routine: NEXT-HALL +Compiling routine: TREASURE-HERE? +Compiling routine: PURLOINED-ROOM-A +Compiling routine: NO-ILLUSIONS +Input file: SS:CASTLE.ZIL.234 +Compiling routine: INSIDE-GATE-F +Compiling routine: IRON-GATE-F +Compiling routine: ARCH-F +Compiling routine: BED-F +Compiling routine: BEDPOST-F +Compiling routine: COMPARTMENT-F +Compiling routine: BEDPOST-BUTTON-F +Compiling routine: CELL-F +Compiling routine: NORTH-CELL-F +Compiling routine: CELL-DOOR-F +Compiling routine: STONE-WALL-F +Compiling routine: NORTH-BLOCK-F +Compiling routine: SECRET-PASSAGE-F +Compiling routine: SOUTH-GATE-F +Compiling routine: BANQUET-STUFF-F +Compiling routine: BANQUET-ILLUSION-F +Compiling routine: BANQUET-FOOD-F +Compiling routine: GUARD-WARNING-F +Compiling routine: I-GUARDS-ARRIVE +Compiling routine: I-GANG +Compiling routine: GANG-OF-FOUR-F +Compiling routine: LITTER-F +Compiling routine: RAT-NEST-F +Compiling routine: OVEN-F +Compiling routine: HEAP-F +Compiling routine: JUNCTION-F +Compiling routine: ADV-VS-GANG +Compiling routine: SKELETON-F +Compiling routine: VOICES-F +Compiling routine: TUBES-PSEUDO +Compiling routine: ASHES-PSEUDO +Compiling routine: RAT-TRACKS-F +Compiling routine: RAT-HOLE-F +Compiling routine: NORTH-GATE-OBJ-F +Compiling routine: FOREST-1-F +Compiling routine: SWAMP-F +Compiling routine: SWAMP-PSEUDO +Compiling routine: FROG-F +Compiling routine: LILY-PAD-F +Input file: SS:TEMPLE.ZIL.78 +Compiling routine: ALTAR-PSEUDO +Compiling routine: STATUE-F +Compiling routine: GANG-OF-N-F +Compiling routine: GUARDS-F +Compiling routine: TOWER-DOOR-F +Compiling routine: TOWER-S-F +Compiling routine: CELL-PSEUDO +Compiling routine: TEMPLE-F +Compiling routine: TAKE-TO-TOWER +Compiling routine: I-TAKE-TO-ALTAR +Compiling routine: I-LETTER-OF-TRANSIT +Input file: SS:GALLERY.ZIL.40 +Compiling routine: GALLERY-A +Compiling routine: GALLERY-F +Compiling routine: DESCRIBE-PORTRAIT-GALLERY +Compiling routine: PORTRAITS-F +Compiling routine: FLATHEAD-PORTRAIT-F +Compiling routine: FROBOZZ-PORTRAIT-F +Compiling routine: LIGHTED-PORTRAIT-F +Compiling routine: PORTRAIT-NICHE-F +Compiling routine: ETERNAL-FLAME-F +Input file: SS:EGG.ZIL.48 +Compiling routine: JEWEL-CHESTS-F +Compiling routine: EGG-KNOB-STATE +Compiling routine: EGG-F +Compiling routine: EGG-KNOB-F +Compiling routine: SCRAMBLED-EGG-F +Compiling routine: DAMAGED-SCROLL-F +Input file: SS:SLEEP.ZIL.85 +Compiling routine: V-TIME +Compiling routine: GLOBAL-SLEEP-F +Compiling routine: I-THIRST +Compiling routine: I-HUNGER +Compiling routine: I-TIRED +Compiling routine: V-DIAGNOSE +Compiling routine: V-SLEEP +Input file: SS:GEARS.ZIL.159 +Compiling routine: MACHINERY-F +Compiling routine: ENGINE-ROOM-F +Compiling routine: HAMMER-F +Compiling routine: SE-TOWER-F +Compiling routine: LIGHTS-F +Compiling routine: I-CRASH +Compiling routine: CROSS-ENGINE-ROOM +Compiling routine: RECROSS-ENGINE-ROOM +Compiling routine: WAVES-F +Compiling routine: SEA-STUFF-F +Compiling routine: NO-RESPONSE +Compiling routine: TURTLE-F +Compiling routine: TURTLE-THANKS +Compiling routine: OPPOSITE-SIDES? +Compiling routine: I-TURTLE +Compiling routine: TURTLE-TIRES +Input file: SS:OUTSIDE.ZIL.130 +Compiling routine: WEST-CASTLE-F +Compiling routine: UNDERGROWTH-F +Compiling routine: PATH-SIGN-F +Compiling routine: FOUNDATION-F +Compiling routine: DISTANT-CASTLE-F +Compiling routine: SHACK-OBJ-F +Compiling routine: BATTERED-LANTERN-F +Compiling routine: SHACK-STUFF +Compiling routine: SHACK-OVEN-F +Compiling routine: BREAD-F +Compiling routine: TREES-F +Compiling routine: HOVEL-F +Compiling routine: HOVEL-KLUDGE +Compiling routine: GLOBAL-CRONE-F +Compiling routine: LONG-ROAD-F +Compiling routine: FARM-PSEUDO +Compiling routine: LONG-ROAD-SIGN-F +Compiling routine: LONG-ROAD-EXIT-F +Compiling routine: ROAD-TO-TABLE +Compiling routine: TABLE-TO-ROAD +Compiling routine: ROAD-F +Compiling routine: HILLS-F +Compiling routine: MOUNTAIN-F +Compiling routine: OUTSIDE? +Compiling routine: I-SCURRY +Compiling routine: GLIMPSE-F + ** Warning: Word "THROUGH" has two TPREP meanings: PR?THROUGH and PR?WITH + + ** Warning: Word "EXIT" has two TVERB meanings: ACT?EXIT and ACT?DROP + + ** Note: OBJECT has no properties: GLOBAL-OBJECTS +Vocabulary: 723 +Prepositions: 19 + OFF + ON + IN + TO + WITH + THROUGH + UNDER + DOWN + UP + BEHIND + AROUND + FOR + ACROSS + OVER + AT + AWAY + OUT + FROM +Objects: 255 + FROG + NW-TOWER + COURTYARD-2 + COURTYARD-3 + COURTYARD-4 + COURTYARD-5 + COURTYARD-6 + COURTYARD-7 + TEMPLE + TOWER-N-DOOR + TOWER-S-DOOR + STATUE + GANG-OF-N + ALTAR + TOWER-N + GUARDS + TOWER-S + GALLERY + PORTRAITS + FLATHEAD-PORTRAIT + FROBOZZ-PORTRAIT + LIGHTED-PORTRAIT + ETERNAL-FLAME + JEWEL-ROOM + MOUNTAIN + JEWEL-CHESTS + EGG + EGG-KNOB-1 + EGG-KNOB-2 + EGG-KNOB-3 + EGG-KNOB-4 + EGG-KNOB-5 + SCRAMBLED-EGG + DAMAGED-SCROLL + GLOBAL-SLEEP + ENGINE-ROOM + MACHINERY + LIGHTS + SWITCHES + MEADOW + HEATHER + BEACH + SEA-STUFF + TURTLE + GLOBAL-TURTLE + WEST-CASTLE + WESTERN-ROAD + DISTANT-CASTLE + EAST-FORK + TRAIL-HEAD + UNDERGROWTH + PATH-SIGN + SHADY-BROOK + FOUNDATION + SHACK-EAST + SHACK-ROOM + SHACK-OBJ + BATTERED-LANTERN + SHACK-OVEN + BREAD + WEST-FORK + DUSTY-ROAD + HAIRPIN-LOOP + VILLAGE + HOVEL + MOUNTAIN-TRAIL + VISTA + GLOBAL-CRONE + VILLAGE-EAST + LONG-ROAD + LONG-ROAD-SIGN + ROAD + GLIMPSE-1 + GLIMPSE-2 + GLOBAL-KRILL + DIM-DESCENT + PSEUDO-OBJECT + ENTHARION + SHAPE + SUMMON-SCROLL + SHACK + INSIDE-GATE + ADVENTURER-LG + REPAIR-SPELL + T-A + OPEN-SPELL + POINT-B + NEWT-SCROLL + BANISH-SCROLL + IRON-GATE + T-E + DOOR-ILLUSION + MIRROR-HALL-4 + SHARDS + PROTECTION-SCROLL + SWORD + JEWELLED-BOX + POINT-F + PEBBLED-PATH + BEACH-OBJ + COURTYARD-1 + T-I + CHARM-SPELL + BRAMBLES + SECRET-PASSAGE + POINT-H + RAT-HOLE + PIT + FLOATING-SIGN + REPAIR-SCROLL + POINT-J + GLOBE + CREDITS-SCROLL + ARCH + MIRROR-STUFF + CEILING + CHEAT-DEATH-SPELL + STRONG-BOX-SPELL + INTNUM + DRAGON + NOT-HERE-OBJECT + GROUND + WATER + STRONG-BOX + LANTERN + T-B + MIRROR-HALL-1 + CLOSET + MAGIC-KNIFE + STAIRS + BEDROOM + T-F + PURLOINED-ROOM + ENDLESS-STAIR + TEMPLE-OBJ + SUMMON-SPELL + WARLOCK-TOWER + PROTECTION-SPELL + QUENCH-SCROLL + DOOR-REALITY + LEGEND-ONE + LIBRARY + SPELL-BOOK + HASTE-SPELL + COMPARTMENT + GLOBAL-ROOM + CHARM-SCROLL + BED + MONSTERS-1 + MONSTERS-2 + MEADOW-OBJ + MONSTERS-3 + TOWER + MIRROR + MIRROR-HALL-2 + MAPS + T-C + LILY-PAD + CHEAT-DEATH-SCROLL + BEDPOST-BUTTON + PORTRAIT-NICHE + SEA + GLOBAL-HOLE + LANDING + T-G + KNOT-ROOM + GLOBAL-ADVENTURER + FOREST-1 + POINT-K + PEDESTAL + POINT-M + TALK-TO-ANIMALS-SPELL + BLACK-PASSAGE + WALLS + QUENCH-SPELL + WRITE-MAGIC-SPELL + IT + FLY-SPELL + WEST-HALL + GLOBAL-OBJECTS + SKY + LEGEND-TWO + DISPEL-SCROLL + MIRROR-HALL-3 + POINT-P + SW-TOWER + CREDITS-SPELL + LIGHT-SPELL + LOCAL-GLOBALS + T-D + PLAYER + NEWT-SPELL + POINT-R + KRILL + REAL-STAIR + TERROR + ADVENTURER + DISPEL-SPELL + ROOMS + TURRET + HASTE-SCROLL + T-H + LAWN + MAGIC-ROPE + POINT-V + OPEN-SCROLL + FLY-SCROLL + MAP-ROOM + ME + LEGEND-BOOK + JUG + IRON-GATE-CHAINS + PENCIL + WINDOW + COURTYARD + BELBOZ + CORRIDOR + BANISH-SPELL + HILLS + TMAP + HANDS + GLOBAL-WATER + BEDPOST + FOREST + DUNGEON + STONE-WALL + NORTH-CELL-DOOR + NORTH-CELL + NORTH-BLOCK + SILVER-SPOON + SOUTH-GATE + RUSTY-GATE + EAST-HALL + SE-TOWER + VOICES + BANQUET-HALL + BANQUET-ILLUSION + BTABLES + BENCHES + IMPLEMENTS + FOOD + CANDLES + GANG-OF-FOUR + KITCHEN + LITTER + RAT-NEST + OVEN + HEAP + JUNCTION + SKELETON + RAT-TRACKS + NORTH-GATE + NORTH-GATE-OBJ + TREES + FOREST-2 +Properties: 29 + P?OUT + P?IN + P?UP + P?DOWN + P?SE + P?SW + P?NE + P?NW + P?WEST + P?EAST + P?SOUTH + P?NORTH + P?COUNT + P?TMAZE + P?POINT + P?TEXT + P?ADJECTIVE + P?ACTION + P?CAPACITY + P?SIZE + P?CONTFCN + P?PSEUDO + P?LDESC + P?FDESC + P?ADVFCN + P?GLOBAL + P?DESCFCN + P?SYNONYM +Globals: 224 + FROG-TALKS + FROGGERS + MUNG-ROOM-TABLE + GUARDS-HEARD + LOCKED-IN-TOWER + ANYTHING-TAKEN + SCROLLS-TAKEN + SACRIFICED? + DAGGER-SEEN + LETTER-OF-TRANSIT + PORTRAIT-COMMENT + VISITED-GALLERY? + LAST-SLEEP + TIME-TABLE + THIRST-COUNT + THIRST-TABLE + HUNGER-COUNT + HUNGER-TABLE + AWAKE + HUNGER-TELL + THIRST-TELL + TIRED-TELL + BED-WARNING + DOOR-DREAM-2 + DOOR-DREAM + GALLERY-DREAM + MOLESTED + MUNCHED + DREAMS + FAST? + CRASH? + HAMMER-EXEX + TURTLE-FOLLOWS + TF-COUNT + TURTLE-REMARKS + TURTLE-REPORT? + TURTLE-TIRED? + TURTLE-TIRED-TELL + BREAD-EXAMINES + BREAD-AMTS + CRONE-MOVE + SIGN-TBL + ROAD-LOC + ROAD-TABLE + GLIMPSES + NIGHT-GLIMPSES + HALL-TBL + ALL-SPELLS + COPR-NOTICE + P-NCN + DOOR-POINT + JUG-FILLS + P-NOT-HERE + ADVENTURER-MOVE + FALL-COUNT + TMAZE-ROOMS + ERASER-TBL + PROBE + HELLOS + P-CCTBL + C-TABLE + JUG-AMTS + YUKS + HO-HUM + PATH-TBL + TWALK-PATHS + TERROR-ARRIVES + MIRROR-HALL-TBL1 + ILLUSION-HACKS + T-DIR-TABLE + PENCIL-TBL + OOPS-TABLE + OOPS-INBUF + P-INBUF + RESERVE-LEXV + AGAIN-LEXV + P-LEXV + P-MERGE + P-BUTS + P-PRSI + ADVENTURER-NICE + DIR-STRINGS + ADVENTURER-QUIPS + ADV-POSS + POPS-OPEN + ADVENTURER-LOITERS + ADVENTURER-FEEBLES + P-PRSO + P-OVTBL + P-VTBL + P-OTBL + P-ITBL + P-OCLAUSE + RANKINGS + JUMPLOSS + INDENTS + NO-LONGER-PROTECTED + STAIR-TABLE + COUNTERS + FORGET-TBL + PROBE-TBL + SIGN-TEXTS + TMAZE-DIRS + SAILOR? + RESERVE-PTR + PRSI + DOOR-ILLUSION-GONE + P-IT-OBJECT + EAT-POINT + SPELL-MAX + TWALK-LEVEL + AGAIN-DIR + P-ADJN + ROPE-MAGIC? + WINNER + P-OFLAG + P-NUMBER + SUMMON-POINT + FUMBLE-PROB + STAIR-SOLVED? + TALK-TO-ANIMAL? + P-GETFLAGS + LOAD-MAX + P-TABLE + QUOTE-FLAG + KRILL-KILL + TOD + TERROR-MOVED + LIGHT-POINT + P-WON + DEATHS + IMP-SEEN + BELBOZ-WARNING + SUNRISE + L-PRSO + ADVENTURER-SEEN + P-ONEOBJ + DUSK + TTRIES + DROPPED-SOME? + P-AND + STAIR-POINT + REAL-SPELL-MAX + TRY-FLY + CASTLE-ENTER + L-PRSA + BOX-POINT + PRSA + P-AADJ + TURTLE-POINT + HASTED? + ADV-OLD-LOC + ADVENTURER-SUMMONED + P-XADJ + ADVENTURER-LOC + ERASER-COUNT + P-SYNTAX + QUENCH-POINT + C-DEMONS + ENTRY-POINT + P-GWIMBIT + P-MERGED + L-PRSI + PSTART + PRSO + DEBUG + STAIR-LOC + EGG-POINT + ADV-HASTE + TEMPLE-POINT + SPELL-ROOM + SCORE-MAX + LOAD-ALLOWED + C-INTS + P-LEN + NIGHTFALL + WARLOCK-POINT + P-ADJ + P-ACT + TERROR-TRAPPED + PENCIL-COUNT + P-XADJN + FLYING? + LIT + DESC-OBJECT + FUMBLE-NUMBER + REPAIR-POINT + STRONG-BOX-FLAG + DEATH-CHEATED + P-CONT + FLY-POINT + LAST-PSEUDO-LOC + PROTECTED-FROM-EVIL + P-ANAM + P-WALK-DIR + DRINK-POINT + P-MOBY-FOUND + P-XNAM + ADVENTURER-NOTES-DOOR + ALWAYS-LIT + P-NAM + CHARM-POINT + P-MULT + CLOCK-WAIT + DOOR-KULCAD + ADVENTURER-STAY + TERROR-POINT + P-ADVERB + P-MATCHLEN + P-SLOCBITS + BEATEN-UP + P-ACLAUSE + P-DIR + ADVENTURER-CHARMED + ADV-NEW-LOC + VERBOSE + LOSSAGE + TWAIT + SUPER-BRIEF + P-END-ON-PREP + DAWN + GALLERY-POINT + NORTH-BLOCK-FLAG + GANG-FOLLOWS \ No newline at end of file diff --git a/z4.serial b/z4.serial new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/z4.serial @@ -0,0 +1 @@ +24 diff --git a/z4.xzap b/z4.xzap new file mode 100644 index 0000000..0904f95 --- /dev/null +++ b/z4.xzap @@ -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 diff --git a/z4.zap b/z4.zap new file mode 100644 index 0000000..2b86c92 --- /dev/null +++ b/z4.zap @@ -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 diff --git a/z4.zil b/z4.zil index 31c63b8..0d16530 100644 --- a/z4.zil +++ b/z4.zil @@ -8,6 +8,8 @@ "> + + @@ -17,9 +19,6 @@ >> - - >> - )> @@ -28,9 +27,7 @@ - - - + diff --git a/z4.zip b/z4.zip new file mode 100644 index 0000000000000000000000000000000000000000..749a4d945693ab8fb7423ce00c7547c0f7806fc4 GIT binary patch literal 111126 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 BG-&_; literal 0 HcmV?d00001 diff --git a/z4dat.zap b/z4dat.zap new file mode 100644 index 0000000..a3db4e0 --- /dev/null +++ b/z4dat.zap @@ -0,0 +1,14260 @@ + + +; TOP LEVEL DEFINITIONS + + TRUE-VALUE=1 + FALSE-VALUE=0 + + O?ANY=1 + + PS?OBJECT=128 + PS?VERB=64 + PS?ADJECTIVE=32 + PS?DIRECTION=16 + PS?PREPOSITION=8 + PS?BUZZ-WORD=4 + + P1?NONE=0 + P1?OBJECT=0 + P1?VERB=1 + P1?ADJECTIVE=2 + P1?DIRECTION=3 + + +; OBJECT FLAGS ARE DEFINED HERE + + + LOCKEDBIT=1 + FX?LOCKEDBIT=16384 + + TREASURE=2 + FX?TREASURE=8192 + + SCROLLBIT=3 + FX?SCROLLBIT=4096 + + SPELLBIT=4 + FX?SPELLBIT=2048 + + VICTIM=5 + FX?VICTIM=1024 + + POINTBIT=6 + FX?POINTBIT=512 + + NDESCBIT=7 + FX?NDESCBIT=256 + + ONBIT=8 + FX?ONBIT=128 + + VOWELBIT=9 + FX?VOWELBIT=64 + + TRANSBIT=10 + FX?TRANSBIT=32 + + SEARCHBIT=11 + FX?SEARCHBIT=16 + + OPENBIT=12 + FX?OPENBIT=8 + + TRYTAKEBIT=13 + FX?TRYTAKEBIT=4 + + SURFACEBIT=14 + FX?SURFACEBIT=2 + + TOUCHBIT=15 + FX?TOUCHBIT=1 + + INVISIBLE=16 + FX?INVISIBLE=32768 + + RMUNGBIT=17 + FX?RMUNGBIT=16384 + + READBIT=18 + FX?READBIT=8192 + + TAKEBIT=19 + FX?TAKEBIT=4096 + + VICBIT=20 + FX?VICBIT=2048 + + CONTBIT=21 + FX?CONTBIT=1024 + + LIGHTBIT=22 + FX?LIGHTBIT=512 + + TOOLBIT=23 + FX?TOOLBIT=256 + + DOORBIT=24 + FX?DOORBIT=128 + + RLANDBIT=25 + FX?RLANDBIT=64 + + CLIMBBIT=26 + FX?CLIMBBIT=32 + + FLAMEBIT=27 + FX?FLAMEBIT=16 + + BURNBIT=28 + FX?BURNBIT=8 + + VEHBIT=29 + FX?VEHBIT=4 + + WEAPONBIT=30 + FX?WEAPONBIT=2 + + VILLAIN=31 + FX?VILLAIN=1 + +; ACTION IDENTIFIERS ARE ASSIGNED HERE + + V?BRIEF=0 + V?SUPER-BRIEF=1 + V?DIAGNOSE=2 + V?INVENTORY=3 + V?QUIT=4 + V?RESTART=5 + V?RESTORE=6 + V?SAVE=7 + V?SCORE=8 + V?$VERIFY=9 + V?VERSION=10 + V?VERBOSE=11 + V?ANSWER=12 + V?REPLY=13 + V?PUT=14 + V?ATTACK=15 + V?BACK=16 + V?BOARD=17 + V?BURN=18 + V?CLIMB-ON=19 + V?CLIMB-UP=20 + V?CLIMB-DOWN=21 + V?CLIMB-FOO=22 + V?LIE-DOWN=23 + V?CLOSE=24 + V?COUNT=25 + V?CROSS=26 + V?CUT=27 + V?CURSES=28 + V?DEFLATE=29 + V?DIG=30 + V?DISEMBARK=31 + V?DRINK=32 + V?DRINK-FROM=33 + V?DROP=34 + V?LEAN-ON=35 + V?EAT=36 + V?ENTER=37 + V?THROUGH=38 + V?EXIT=39 + V?ESCAPE=40 + V?EXAMINE=41 + V?LOOK-INSIDE=42 + V?WHO=43 + V?EXORCISE=44 + V?LAMP-OFF=45 + V?FILL=46 + V?FIND=47 + V?FOLLOW=48 + V?FORGET=49 + V?GIVE=50 + V?SGIVE=51 + V?HELLO=52 + V?INFLATE=53 + V?LEAP=54 + V?KICK=55 + V?KILL=56 + V?KISS=57 + V?KNOCK=58 + V?LAUNCH=59 + V?LEAVE=60 + V?LAMP-ON=61 + V?LISTEN=62 + V?LOCK=63 + V?LOOK=64 + V?LOOK-UNDER=65 + V?LOOK-BEHIND=66 + V?READ=67 + V?CHASTISE=68 + V?SEARCH=69 + V?LOWER=70 + V?MELT=71 + V?MOVE=72 + V?PLAY=73 + V?MUMBLE=74 + V?MUNG=75 + V?OIL=76 + V?OPEN=77 + V?PICK=78 + V?TAKE=79 + V?PLUG=80 + V?ADVENT=81 + V?POINT=82 + V?POUR-ON=83 + V?PRAY=84 + V?PUMP=85 + V?PUSH=86 + V?PUSH-TO=87 + V?PUT-UNDER=88 + V?PUT-ON=89 + V?WEAR=90 + V?PUT-BEHIND=91 + V?HIDE=92 + V?RAISE=93 + V?RAPE=94 + V?REACH-IN=95 + V?REPENT=96 + V?RUB=97 + V?SCRIPT=98 + V?UNSCRIPT=99 + V?SEND=100 + V?SHAKE=101 + V?SLEEP=102 + V?SKIP=103 + V?SMELL=104 + V?SPIN=105 + V?SPRAY=106 + V?SSPRAY=107 + V?SQUEEZE=108 + V?STAND=109 + V?STAY=110 + V?SWIM=111 + V?SWING=112 + V?TELL=113 + V?BRING=114 + V?ASK-FOR=115 + V?SAY=116 + V?THANK=117 + V?THROW=118 + V?THROW-OFF=119 + V?TIE=120 + V?TIE-UP=121 + V?TURN=122 + V?UNLOCK=123 + V?UNTIE=124 + V?WAIT=125 + V?WAIT-FOR=126 + V?ALARM=127 + V?WALK=128 + V?WALK-AROUND=129 + V?WALK-TO=130 + V?WAVE=131 + V?WAVE-AT=132 + V?WIND=133 + V?YELL=134 + V?ZORK=135 + V?SHOW=136 + V?SSHOW=137 + V?DRAW-ON=138 + V?MAKE-LINE=139 + V?MAKE-LINE-TO=140 + V?ERASE-LINE=141 + V?ERASE-LINE-TO=142 + V?CAST=143 + V?LEARN=144 + V?MEMORIZE=145 + V?SPELLS=146 + V?GONDAR=147 + V?GNUSTO=148 + V?FROTZ=149 + V?OZMOO=150 + V?ZIFMIA=151 + V?VAXUM=152 + V?REZROV=153 + V?NITFOL=154 + V?EXEX=155 + V?KULCAD=156 + V?MELBOR=157 + V?BLORB=158 + V?GUNCHO=159 + V?KREBF=160 + V?CLEESH=161 + V?IZYUK=162 + V?FILFRE=163 + V?TIME=164 + V?WRITE-WITH=165 + V?WRITE-ON=166 + V?SHARPEN=167 + V?AVOID=168 + V?GAG=169 + V?GROSS-OUT=170 + V?$RANDOM=171 + V?$COMMAND=172 + V?$RECORD=173 + V?$UNRECORD=174 + +; PROPERTIES ARE DEFINED HERE + + P?NORTH=31 + P?NE=30 + P?EAST=29 + P?SE=28 + P?SOUTH=27 + P?SW=26 + P?WEST=25 + P?NW=24 + P?UP=23 + P?DOWN=22 + P?IN=21 + P?OUT=20 + P?SYNONYM=19 + P?DESCFCN=18 + P?GLOBAL=17 + P?ADVFCN=16 + P?FDESC=15 + P?LDESC=14 + P?PSEUDO=13 + P?CONTFCN=12 + P?SIZE=11 + P?CAPACITY=10 + P?ACTION=9 + P?ADJECTIVE=8 + P?TEXT=7 + P?POINT=6 + P?TMAZE=5 + P?COUNT=4 + P?MUNGDESC=3 + +; ADJECTIVES ARE DEFINED HERE + + A?STONE=255 + A?TRANSLUCENT=254 + A?BARE=253 + A?BROKEN=252 + A?MISTY=251 + A?WHITE=250 + A?ROCKY=249 + A?DELICIOUS=248 + A?SPRING=247 + A?POTTERY=246 + A?STALKING=245 + A?EVIL=244 + A?LURKING=243 + A?UNSEEN=242 + A?OLD=241 + A?PARCHMENT=240 + A?BADLY=239 + A?WORN=238 + A?POINT=237 + A?BLACK=236 + A?DUSTY=235 + A?FIRST=234 + A?LEGEND=233 + A?GREAT=232 + A?SPIRAL=231 + A?WINDING=230 + A?SPELL=229 + A?GNUSTO=228 + A?FROTZ=227 + A?OZMOO=226 + A?FADED=225 + A?WHOLE=224 + A?ZIFMIA=223 + A?GOLD=222 + A?LEAF=221 + A?VAXUM=220 + A?SCRIBBLED=219 + A?REZROV=218 + A?FRAYED=217 + A?GONDAR=216 + A?NITFOL=215 + A?STAINED=214 + A?EXEX=213 + A?BRITTLE=212 + A?ROLLED=211 + A?KULCAD=210 + A?VELLUM=209 + A?MELBOR=208 + A?BLORB=207 + A?POWERFUL=206 + A?GUNCHO=205 + A?CRUMPLED=204 + A?KREBF=203 + A?DAMP=202 + A?SOGGY=201 + A?CLEESH=200 + A?ORNATE=199 + A?IZYUK=198 + A?PURPLE=197 + A?FILFRE=196 + A?STRONG=195 + A?JEWELLED=194 + A?TIGHT=193 + A?THIN=192 + A?STRAND=191 + A?MAGIC=190 + A?SACRIFICIAL=189 + A?SIMPLE=188 + A?WOODEN=187 + A?ANCIENT=186 + A?GOLDEN=185 + A?GUARDED=184 + A?OAK=183 + A?FLOATING=182 + A?FIVE-HEADED=181 + A?GROPING=180 + A?SLIMY=179 + A?SIX-INCH=178 + A?THICK=177 + A?IRON=176 + A?HEAVY=175 + A?ROCK=174 + A?WEARY=173 + A?BEDRAGGLED=172 + A?BRASS=171 + A?ELVISH=170 + A?MASSIVE=169 + A?FEATHER=168 + A?FOURPOSTER=167 + A?SMALL=166 + A?CELL=165 + A?SQUARE=164 + A?LOOSE=163 + A?SILVER=162 + A?RUSTY=161 + A?FESTIVE=160 + A?WOOD=159 + A?GLITTERING=158 + A?LUSCIOUS=157 + A?BANQUET=156 + A?HAIRY=155 + A?HUNCHED=154 + A?GROUP=153 + A?CARVING=152 + A?HUGE=151 + A?RAT=150 + A?GARBAGE=149 + A?ROTTED=148 + A?ROTTIN=147 + A?HUMAN=146 + A?LOW=145 + A?GUTTURAL=144 + A?SCREECHING=143 + A?NORTH=142 + A?RUSTED=141 + A?LILY=140 + A?RAZOR-SHARP=139 + A?DRIPPING=138 + A?ENORMOUS=137 + A?HUDDLED=136 + A?HIDEOUS=135 + A?PRISON=134 + A?SOUTH=133 + A?UNKNOWN=132 + A?FLATHEAD=131 + A?DIMWIT=130 + A?WIZARD=129 + A?FROBOZZ=128 + A?LIGHTED=127 + A?ILLUMINATED=126 + A?LIT=125 + A?BEAUTIFUL=124 + A?FABERGE=123 + A?ORNAME=122 + A?LAPIS=121 + A?EMERALD=120 + A?DIAMOND=119 + A?SCRAMBLED=118 + A?SHREDDED=117 + A?BLINKING=116 + A?SHIFTING=115 + A?ARCANE=114 + A?GLOWING=113 + A?DEAD=112 + A?RAINBOW=111 + A?ENAMELLED=110 + A?RUINED=109 + A?LINGOLF=108 + A?HIGH=107 + A?DARK=106 + A?BATTERED=105 + A?SHORT=104 + A?STUNTED=103 + A?DECREPIT=102 + A?LONG=101 + A?DRY=100 + A?ROLLING=99 + A?SMOKY=98 + A?LONELY=97 + A?FERAL=96 + A?GAUNT=95 + +; BUZZ WORDS ARE DEFINED HERE + + B?AGAIN=255 + B?G=254 + B?OOPS=253 + B?A=252 + B?AN=251 + B?THE=250 + B?IS=249 + B?AND=248 + B?OF=247 + B?THEN=246 + B?ALL=245 + B?ONE=244 + B?BUT=243 + B?EXCEPT=242 + B?PERIOD=241 + B?COMMA=240 + B?QUOTE=239 + B?YES=238 + B?NO=237 + B?Y=236 + B?PRY=235 + B?PLEASE=234 + B?LINE=233 + B?LINES=232 + B?YOU=231 + B?SOME=230 + +; PREPOSITIONS ARE DEFINED HERE + + PR?TO=255 + PR?WITH=254 + PR?DOWN=253 + PR?ON=252 + PR?UP=251 + PR?IN=250 + PR?FROM=249 + PR?OUT=248 + PR?AWAY=247 + PR?AT=246 + PR?OVER=245 + PR?ACROSS=244 + PR?OFF=243 + PR?FOR=242 + PR?AROUND=241 + PR?THROUGH=240 + PR?UNDER=239 + PR?BEHIND=238 + PR?BETWEEN=237 + +; DIRECTIONS ARE DEFINED HERE + + +; ACTIONS ARE DEFINED HERE + + ACT?KISS=255 + ACT?SKIP=254 + ACT?INFLAT=253 + ACT?STAY=252 + ACT?PULL=251 + ACT?PUT=250 + ACT?RAPE=249 + ACT?VERBOSE=248 + ACT?BRING=247 + ACT?WALK=246 + ACT?QUIT=245 + ACT?FIND=244 + ACT?FILFRE=243 + ACT?DESTROY=242 + ACT?AVOID=241 + ACT?KREBF=240 + ACT?UNLOCK=239 + ACT?READ=238 + ACT?SAY=237 + ACT?JUMP=236 + ACT?POUR=235 + ACT?WAIT=234 + ACT?NITFOL=233 + ACT?BLORB=232 + ACT?TAKE=231 + ACT?GAG=230 + ACT?COUNT=229 + ACT?RAISE=228 + ACT?FOLLOW=227 + ACT?FLY=226 + ACT?VERSION=225 + ACT?WIND=224 + ACT?#UNRECORD=223 + ACT?LIGHT=222 + ACT?LIE=221 + ACT?MOVE=220 + ACT?PLAY=219 + ACT?OPEN=218 + ACT?TOUCH=217 + ACT?BLOW=216 + ACT?#COMMAND=215 + ACT?KNOCK=214 + ACT?WRITE=213 + ACT?MELBOR=212 + ACT?PICK=211 + ACT?DEFLATE=210 + ACT?BOARD=209 + ACT?REZROV=208 + ACT?APPLY=207 + ACT?#RANDOM=206 + ACT?KULCAD=205 + ACT?ESCAPE=204 + ACT?PRAY=203 + ACT?STAND=202 + ACT?LISTEN=201 + ACT?TIE=200 + ACT?SHOW=199 + ACT?SAVE=198 + ACT?TELL=197 + ACT?THROW=196 + ACT?ZORK=195 + ACT?LOWER=194 + ACT?HIDE=193 + ACT?SHAKE=192 + ACT?INVENTORY=191 + ACT?ATTACK=190 + ACT?FROTZ=189 + ACT?KILL=188 + ACT?SPELLS=187 + ACT?MEMORIZE=186 + ACT?ENTER=185 + ACT?SEARCH=184 + ACT?WEAR=183 + ACT?ERASE=182 + ACT?SHARPEN=181 + ACT?GROSS=180 + ACT?DISEMBARK=179 + ACT?SWIM=178 + ACT?LUBRICATE=177 + ACT?PLUG=176 + ACT?UNTIE=175 + ACT?PUMP=174 + ACT?CUT=173 + ACT?MELT=172 + ACT?UNSCRIPT=171 + ACT?GUNCHO=170 + ACT?PUSH=169 + ACT?ZIFMIA=168 + ACT?SUPER=167 + ACT?OZMOO=166 + ACT?REACH=165 + ACT?VAXUM=164 + ACT?DIG=163 + ACT?SEND=162 + ACT?SCORE=161 + ACT?EXORCISE=160 + ACT?IZYUK=159 + ACT?CLEESH=158 + ACT?EXEX=157 + ACT?CONNECT=156 + ACT?LOOK=155 + ACT?GNUSTO=154 + ACT?SPRAY=153 + ACT?CAST=152 + ACT?DROP=151 + ACT?BACK=150 + ACT?TIME=149 + ACT?ROLL=148 + ACT?LEAVE=147 + ACT?CURSE=146 + ACT?REPENT=145 + ACT?SCRIPT=144 + ACT?SPIN=143 + ACT?$VERIFY=142 + ACT?EXTINGUISH=141 + ACT?SWING=140 + ACT?RESTART=139 + ACT?POKE=138 + ACT?SMELL=137 + ACT?BRIEF=136 + ACT?DIAGNOSE=135 + ACT?GIVE=134 + ACT?SLEEP=133 + ACT?WAKE=132 + ACT?DRINK=131 + ACT?ANSWER=130 + ACT?MUMBLE=129 + ACT?YELL=128 + ACT?LOCK=127 + ACT?BURN=126 + ACT?KICK=125 + ACT?PLUGH=124 + ACT?POINT=123 + ACT?TURN=122 + ACT?CROSS=121 + ACT?#RECORD=120 + ACT?WHO=119 + ACT?MAKE=118 + ACT?RESTORE=117 + ACT?CLOSE=116 + ACT?STRIKE=115 + ACT?SLIDE=114 + ACT?WAVE=113 + ACT?EXIT=112 + ACT?EXAMINE=111 + ACT?EAT=110 + ACT?LEAN=109 + ACT?FILL=108 + ACT?SQUEEZE=107 + ACT?GONDAR=106 + ACT?CLIMB=105 + ACT?FORGET=104 + ACT?LAUNCH=103 + ACT?LEARN=102 + ACT?THANK=101 + ACT?ASK=100 + ACT?HELLO=99 + +; USER DEFINED CONSTANTS ARE INITIALIZED HERE + + ROAD-START=10000 + SOG=16 + T-NE=13 + SIR=32 + DEXITSTR=1 + XEQUAL?=4 + P-ITBLLEN=9 + P-SYNLEN=8 + P-SRCTOP=0 + C-INTLEN=6 + O-START=1 + DEXITOBJ=1 + P-P1OFF=5 + O-PTR=0 + O-LENGTH=2 + T-WEST=3 + MOVES-PER-DAY=86 + C-TABLELEN=180 + T-EAST=11 + P-NC2=8 + P-NC1=6 + T-SOUTH=7 + P-WORDLEN=4 + SERIAL=0 + P-VERBN=1 + P-P1BITS=3 + FEXIT=3 + T-SW=5 + CC-SEPTR=1 + ZORKID=1 + P-SPREP1=1 + CC-SBPTR=0 + P-PREP1=2 + M-BEG=1 + XDIV=3 + M-FATAL=2 + XGRTR?=5 + NEXITSTR=0 + P-SLOC2=6 + NEXIT=2 + SC=64 + P-PREP1N=3 + P-PSOFF=4 + XLESS?=6 + P-VERB=0 + M-HANDLED=1 + M-ENTER=2 + CC-DEPTR=3 + SHAVE=2 + DEXIT=5 + P-SRCBOT=2 + M-OBJDESC=5 + CC-DBPTR=2 + SMANY=4 + STAKE=8 + P-SPREP2=2 + T-NORTH=15 + XSUB=1 + XADD=0 + T-NW=1 + CEXIT=4 + P-LEXSTART=1 + M-LOOK=3 + UEXIT=1 + D-RECORD-ON=4 + O-END=3 + P-LEXELEN=2 + P-LEXWORDS=1 + P-ALL=1 + MOVES-PER-SLEEP=42 + XMUL=2 + P-SFWIM1=3 + P-INHIBIT=4 + CEXITFLAG=1 + D-RECORD-OFF=-4 + T-SE=9 + STAIR-TABLE-LENGTH=70 + M-FLASH=4 + M-OBJECT=0 + FEXITFCN=0 + P-SBITS=0 + M-NOT-HANDLED=0 + P-SRCALL=1 + CEXITSTR=1 + P-SLOC1=5 + M-END=6 + STAIR-START=10000 + P-PREP2=4 + LOW-DIRECTION=20 + P-SONUMS=3 + C-TICK=1 + P-NC2L=9 + TWALK-MAX=5 + P-NC1L=7 + P-ONE=2 + ROAD-TABLE-LENGTH=80 + P-SACTION=7 + P-PREP2N=5 + P-SFWIM2=4 + C-ENABLED?=0 + REXIT=0 + SH=128 + C-RTN=2 + +; PROPERTY DEFAULTS AND OBJECTS ARE DEFINED HERE + +OBJECT::.TABLE + 0 ;() + 0 ;() + 0 ;(P?MUNGDESC) + 0 ;(P?COUNT) + 0 ;(P?TMAZE) + 0 ;(P?POINT) + 0 ;(P?TEXT) + 0 ;(P?ADJECTIVE) + 0 ;(P?ACTION) + 0 ;(P?CAPACITY) + 5 ;(P?SIZE) + 0 ;(P?CONTFCN) + 0 ;(P?PSEUDO) + 0 ;(P?LDESC) + 0 ;(P?FDESC) + 0 ;(P?ADVFCN) + 0 ;(P?GLOBAL) + 0 ;(P?DESCFCN) + 0 ;(P?SYNONYM) + 0 ;(P?OUT) + 0 ;(P?IN) + 0 ;(P?DOWN) + 0 ;(P?UP) + 0 ;(P?NW) + 0 ;(P?WEST) + 0 ;(P?SW) + 0 ;(P?SOUTH) + 0 ;(P?SE) + 0 ;(P?EAST) + 0 ;(P?NE) + 0 ;(P?NORTH) + .OBJECT FOREST,0,0,LOCAL-GLOBALS,SEA,0,T?FOREST + .OBJECT DUNGEON,0,FX?RLANDBIT,ROOMS,DIM-DESCENT,0,T?DUNGEON + .OBJECT BEDPOST,FX?SEARCHBIT+FX?NDESCBIT,FX?CONTBIT,BED,0,CHARM-SCROLL,T?BEDPOST + .OBJECT GLOBAL-WATER,0,0,LOCAL-GLOBALS,BEACH-OBJ,0,T?GLOBAL-WATER + .OBJECT HANDS,FX?TOUCHBIT+FX?NDESCBIT,FX?TOOLBIT,GLOBAL-OBJECTS,CEILING,0,T?HANDS + .OBJECT TMAP,FX?OPENBIT,FX?CONTBIT+FX?READBIT+FX?TAKEBIT,MAP-ROOM,0,POINT-P,T?TMAP + .OBJECT HILLS,0,0,LOCAL-GLOBALS,HOVEL,0,T?HILLS + .OBJECT BANISH-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,BANISH-SCROLL,0,0,T?BANISH-SPELL + .OBJECT MOUNTAIN-TRAIL,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,VILLAGE,0,T?MOUNTAIN-TRAIL + .OBJECT CORRIDOR,0,0,GLOBAL-OBJECTS,GROUND,0,T?CORRIDOR + .OBJECT BELBOZ,0,FX?VILLAIN,GLOBAL-OBJECTS,SKY,0,T?BELBOZ + .OBJECT COURTYARD,0,0,LOCAL-GLOBALS,TEMPLE-OBJ,0,T?COURTYARD + .OBJECT WINDOW,0,0,LOCAL-GLOBALS,0,0,T?WINDOW + .OBJECT PENCIL,0,FX?READBIT+FX?TAKEBIT,MAP-ROOM,TMAP,0,T?PENCIL + .OBJECT IRON-GATE-CHAINS,FX?NDESCBIT,0,LOCAL-GLOBALS,IRON-GATE,0,T?IRON-GATE-CHAINS + .OBJECT TURTLE,FX?OPENBIT,FX?CONTBIT+FX?VILLAIN+FX?VICBIT,BEACH,SEA-STUFF,0,T?TURTLE + .OBJECT VOICES,0,0,LOCAL-GLOBALS,RUSTY-GATE,0,T?VOICES + .OBJECT HEATHER,FX?NDESCBIT,0,MEADOW,0,0,T?HEATHER + .OBJECT JUG,FX?OPENBIT+FX?TRANSBIT,FX?CONTBIT+FX?TAKEBIT,SHACK,0,0,T?JUG + .OBJECT LEGEND-BOOK,FX?OPENBIT,FX?CONTBIT+FX?READBIT+FX?TAKEBIT,LIBRARY,0,LEGEND-TWO,T?LEGEND-BOOK + .OBJECT ME,FX?TOUCHBIT,FX?VILLAIN,GLOBAL-OBJECTS,HANDS,0,T?ME + .OBJECT COURTYARD-3,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,COURTYARD-2,0,T?COURTYARD-3 + .OBJECT MAP-ROOM,0,FX?RLANDBIT,ROOMS,PURLOINED-ROOM,PEDESTAL,T?MAP-ROOM + .OBJECT FLY-SCROLL,FX?VOWELBIT+FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,0,0,FLY-SPELL,T?FLY-SCROLL + .OBJECT OPEN-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,0,0,OPEN-SPELL,T?OPEN-SCROLL + .OBJECT CANDLES,FX?NDESCBIT,0,BANQUET-ILLUSION,FOOD,0,T?CANDLES + .OBJECT KITCHEN,0,FX?RLANDBIT,ROOMS,BANQUET-HALL,HEAP,T?KITCHEN + .OBJECT POINT-V,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-M,0,T?POINT-V + .OBJECT HOVEL,0,0,LOCAL-GLOBALS,TREES,0,T?HOVEL + .OBJECT MAGIC-ROPE,FX?NDESCBIT,FX?VICBIT,JEWELLED-BOX,0,0,T?MAGIC-ROPE + .OBJECT LIGHTS,FX?NDESCBIT,0,CLOSET,DISPEL-SCROLL,0,T?LIGHTS + .OBJECT FOREST-2,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,FOREST-1,LILY-PAD,T?FOREST-2 + .OBJECT LAWN,0,0,LOCAL-GLOBALS,TURRET,0,T?LAWN + .OBJECT T-H,0,FX?RLANDBIT,ROOMS,T-G,0,T?T-H + .OBJECT ALTAR,FX?ONBIT,FX?RMUNGBIT+FX?RLANDBIT,ROOMS,TEMPLE,0,T?ALTAR + .OBJECT HASTE-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,SECRET-PASSAGE,0,HASTE-SPELL,T?HASTE-SCROLL + .OBJECT LONG-ROAD-SIGN,FX?NDESCBIT,0,LONG-ROAD,0,0,T?LONG-ROAD-SIGN + .OBJECT TURRET,0,0,LOCAL-GLOBALS,TOWER,0,T?TURRET + .OBJECT ROOMS,0,0,0,0,LONG-ROAD,T?ROOMS + .OBJECT DISPEL-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,DISPEL-SCROLL,0,0,T?DISPEL-SPELL + .OBJECT BREAD,0,FX?TAKEBIT,SHACK-OVEN,0,0,T?BREAD + .OBJECT WEST-FORK,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,SHACK,0,T?WEST-FORK + .OBJECT EAST-HALL,0,FX?RLANDBIT,ROOMS,SOUTH-GATE,0,T?EAST-HALL + .OBJECT ADVENTURER,FX?OPENBIT+FX?VOWELBIT,FX?CONTBIT+FX?VILLAIN+FX?VICBIT,0,0,SWORD,T?ADVENTURER + .OBJECT LONG-ROAD,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,VILLAGE-EAST,LONG-ROAD-SIGN,T?LONG-ROAD + .OBJECT TERROR,FX?NDESCBIT,0,T-I,0,0,T?TERROR + .OBJECT REAL-STAIR,0,FX?RLANDBIT,ROOMS,ENDLESS-STAIR,0,T?REAL-STAIR + .OBJECT GLOBAL-TURTLE,0,FX?TAKEBIT+FX?VILLAIN+FX?VICBIT,0,0,0,T?GLOBAL-TURTLE + .OBJECT VISTA,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,MOUNTAIN-TRAIL,0,T?VISTA + .OBJECT KRILL,0,FX?VICBIT,WARLOCK-TOWER,0,0,T?KRILL + .OBJECT BENCHES,FX?NDESCBIT,0,BANQUET-HALL,BANQUET-ILLUSION,0,T?BENCHES + .OBJECT POINT-R,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-B,0,T?POINT-R + .OBJECT NEWT-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,NEWT-SCROLL,0,0,T?NEWT-SPELL + .OBJECT TOWER-S,FX?ONBIT,FX?RLANDBIT,ROOMS,TOWER-N,0,T?TOWER-S + .OBJECT PLAYER,FX?NDESCBIT,FX?INVISIBLE+FX?VILLAIN,0,0,SPELL-BOOK,T?PLAYER + .OBJECT T-D,0,FX?RLANDBIT,ROOMS,T-C,0,T?T-D + .OBJECT DISTANT-CASTLE,0,0,LOCAL-GLOBALS,UNDERGROWTH,0,T?DISTANT-CASTLE + .OBJECT LOCAL-GLOBALS,0,0,GLOBAL-OBJECTS,0,MOUNTAIN,T?LOCAL-GLOBALS + .OBJECT LIGHT-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,SPELL-BOOK,WRITE-MAGIC-SPELL,0,T?LIGHT-SPELL + .OBJECT CREDITS-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,CREDITS-SCROLL,0,0,T?CREDITS-SPELL + .OBJECT UNDERGROWTH,FX?VOWELBIT,0,LOCAL-GLOBALS,MACHINERY,0,T?UNDERGROWTH + .OBJECT FROG,FX?NDESCBIT,FX?VICBIT+FX?VILLAIN,FOREST-2,0,0,T?FROG + .OBJECT NORTH-BLOCK,FX?NDESCBIT,FX?TAKEBIT,LOCAL-GLOBALS,STONE-WALL,0,T?NORTH-BLOCK + .OBJECT NORTH-GATE,0,FX?RLANDBIT,ROOMS,LIBRARY,0,T?NORTH-GATE + .OBJECT SW-TOWER,0,FX?RLANDBIT,ROOMS,WEST-HALL,0,T?SW-TOWER + .OBJECT COURTYARD-2,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,NW-TOWER,0,T?COURTYARD-2 + .OBJECT SWITCHES,FX?NDESCBIT,0,CLOSET,LIGHTS,0,T?SWITCHES + .OBJECT POINT-P,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-F,0,T?POINT-P + .OBJECT GLOBAL-SLEEP,0,0,GLOBAL-OBJECTS,ENTHARION,0,T?GLOBAL-SLEEP + .OBJECT MIRROR-HALL-3,0,FX?RLANDBIT,ROOMS,MIRROR-HALL-2,0,T?MIRROR-HALL-3 + .OBJECT DISPEL-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,CLOSET,0,DISPEL-SPELL,T?DISPEL-SCROLL + .OBJECT HEAP,FX?NDESCBIT,0,KITCHEN,OVEN,0,T?HEAP + .OBJECT LEGEND-TWO,FX?NDESCBIT,FX?READBIT,LEGEND-BOOK,LEGEND-ONE,0,T?LEGEND-TWO + .OBJECT ROAD,0,0,GLOBAL-OBJECTS,GLOBAL-CRONE,0,T?ROAD + .OBJECT SKY,0,0,GLOBAL-OBJECTS,ME,0,T?SKY + .OBJECT GLOBAL-OBJECTS,FX?ONBIT+FX?VOWELBIT+FX?TRANSBIT+FX?SEARCHBIT+FX?OPENBIT+FX?TRYTAKEBIT+FX?SURFACEBIT+FX?TOUCHBIT,FX?RLANDBIT+FX?INVISIBLE+FX?RMUNGBIT,0,0,GLIMPSE-2,T?GLOBAL-OBJECTS + .OBJECT WEST-HALL,FX?ONBIT,FX?RLANDBIT,ROOMS,COURTYARD-1,0,T?WEST-HALL + .OBJECT FLY-SPELL,FX?VOWELBIT+FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,FLY-SCROLL,0,0,T?FLY-SPELL + .OBJECT IT,FX?TOUCHBIT+FX?NDESCBIT,0,GLOBAL-OBJECTS,INTNUM,0,T?IT + .OBJECT WRITE-MAGIC-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,SPELL-BOOK,0,0,T?WRITE-MAGIC-SPELL + .OBJECT QUENCH-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,QUENCH-SCROLL,0,0,T?QUENCH-SPELL + .OBJECT WALLS,FX?TOUCHBIT+FX?NDESCBIT,0,GLOBAL-OBJECTS,CORRIDOR,0,T?WALLS + .OBJECT BLACK-PASSAGE,0,0,LOCAL-GLOBALS,GLOBAL-WATER,0,T?BLACK-PASSAGE + .OBJECT TALK-TO-ANIMALS-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,SPELL-BOOK,LIGHT-SPELL,0,T?TALK-TO-ANIMALS-SPELL + .OBJECT SHACK-OVEN,FX?VOWELBIT+FX?NDESCBIT,FX?CONTBIT,SHACK,BATTERED-LANTERN,BREAD,T?SHACK-OVEN + .OBJECT POINT-M,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-J,0,T?POINT-M + .OBJECT TOWER-N,FX?ONBIT,FX?RLANDBIT,ROOMS,ALTAR,0,T?TOWER-N + .OBJECT PEDESTAL,FX?SURFACEBIT+FX?OPENBIT+FX?NDESCBIT,FX?CONTBIT,MAP-ROOM,MAPS,GLOBE,T?PEDESTAL + .OBJECT SHADY-BROOK,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,TRAIL-HEAD,FOUNDATION,T?SHADY-BROOK + .OBJECT MACHINERY,0,0,LOCAL-GLOBALS,TOWER-S-DOOR,0,T?MACHINERY + .OBJECT POINT-K,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-R,0,T?POINT-K + .OBJECT BEACH,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,MEADOW,TURTLE,T?BEACH + .OBJECT OVEN,FX?OPENBIT+FX?VOWELBIT+FX?NDESCBIT,FX?CONTBIT,KITCHEN,LITTER,RAT-NEST,T?OVEN + .OBJECT BATTERED-LANTERN,0,FX?TAKEBIT,SHACK,JUG,0,T?BATTERED-LANTERN + .OBJECT FOREST-1,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,NORTH-GATE,REPAIR-SCROLL,T?FOREST-1 + .OBJECT SHACK-EAST,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,SHADY-BROOK,0,T?SHACK-EAST + .OBJECT GLOBAL-ADVENTURER,FX?VOWELBIT,0,0,0,0,T?GLOBAL-ADVENTURER + .OBJECT SEA-STUFF,FX?NDESCBIT,0,BEACH,0,0,T?SEA-STUFF + .OBJECT NORTH-CELL,0,FX?RLANDBIT,ROOMS,DUNGEON,0,T?NORTH-CELL + .OBJECT STATUE,FX?NDESCBIT,0,LOCAL-GLOBALS,NORTH-GATE-OBJ,0,T?STATUE + .OBJECT WEST-CASTLE,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,BEACH,0,T?WEST-CASTLE + .OBJECT TRAIL-HEAD,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,EAST-FORK,PATH-SIGN,T?TRAIL-HEAD + .OBJECT KNOT-ROOM,0,FX?RLANDBIT,ROOMS,WARLOCK-TOWER,JEWELLED-BOX,T?KNOT-ROOM + .OBJECT T-G,0,FX?RLANDBIT,ROOMS,T-F,0,T?T-G + .OBJECT LANDING,FX?ONBIT,FX?RMUNGBIT+FX?RLANDBIT,ROOMS,T-I,0,T?LANDING + .OBJECT PORTRAITS,FX?TRYTAKEBIT+FX?NDESCBIT,0,GALLERY,0,0,T?PORTRAITS + .OBJECT SILVER-SPOON,FX?TREASURE,FX?TOOLBIT+FX?TAKEBIT,SECRET-PASSAGE,HASTE-SCROLL,0,T?SILVER-SPOON + .OBJECT RUSTY-GATE,FX?NDESCBIT+FX?OPENBIT,FX?CONTBIT+FX?DOORBIT,LOCAL-GLOBALS,NORTH-BLOCK,0,T?RUSTY-GATE + .OBJECT GUARDS,0,FX?VICBIT,LOCAL-GLOBALS,STATUE,0,T?GUARDS + .OBJECT GLOBAL-HOLE,0,0,GLOBAL-OBJECTS,BRAMBLES,0,T?GLOBAL-HOLE + .OBJECT GLIMPSE-2,0,0,GLOBAL-OBJECTS,GLIMPSE-1,0,T?GLIMPSE-2 + .OBJECT EGG,FX?TREASURE+FX?TRANSBIT,FX?CONTBIT+FX?TAKEBIT,JEWEL-ROOM,JEWEL-CHESTS,DAMAGED-SCROLL,T?EGG + .OBJECT SEA,0,0,LOCAL-GLOBALS,WINDOW,0,T?SEA + .OBJECT PORTRAIT-NICHE,FX?SEARCHBIT+FX?NDESCBIT+FX?OPENBIT,FX?CONTBIT,0,0,ETERNAL-FLAME,T?PORTRAIT-NICHE + .OBJECT BEDPOST-BUTTON,FX?VOWELBIT+FX?NDESCBIT,0,0,0,0,T?BEDPOST-BUTTON + .OBJECT COURTYARD-5,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,COURTYARD-4,0,T?COURTYARD-5 + .OBJECT CHEAT-DEATH-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,PORTRAIT-NICHE,0,CHEAT-DEATH-SPELL,T?CHEAT-DEATH-SCROLL + .OBJECT LILY-PAD,FX?OPENBIT+FX?SURFACEBIT+FX?NDESCBIT,FX?CONTBIT,FOREST-2,FROG,NEWT-SCROLL,T?LILY-PAD + .OBJECT T-C,0,FX?RLANDBIT,ROOMS,T-B,0,T?T-C + .OBJECT GLOBAL-CRONE,0,0,GLOBAL-OBJECTS,GLOBAL-SLEEP,0,T?GLOBAL-CRONE + .OBJECT MAPS,FX?NDESCBIT,0,MAP-ROOM,CREDITS-SCROLL,0,T?MAPS + .OBJECT TEMPLE,FX?ONBIT,FX?RLANDBIT,ROOMS,COURTYARD-7,GANG-OF-N,T?TEMPLE + .OBJECT JEWEL-ROOM,FX?ONBIT,FX?RLANDBIT,ROOMS,GALLERY,EGG,T?JEWEL-ROOM + .OBJECT RAT-NEST,FX?NDESCBIT,0,OVEN,0,0,T?RAT-NEST + .OBJECT MIRROR-HALL-2,0,FX?RLANDBIT,ROOMS,MIRROR-HALL-1,0,T?MIRROR-HALL-2 + .OBJECT MIRROR,FX?NDESCBIT,FX?VICBIT,LOCAL-GLOBALS,DOOR-ILLUSION,0,T?MIRROR + .OBJECT TOWER,0,FX?CLIMBBIT,LOCAL-GLOBALS,COURTYARD,0,T?TOWER + .OBJECT MONSTERS-3,FX?NDESCBIT,FX?VICBIT,PURLOINED-ROOM,MONSTERS-2,0,T?MONSTERS-3 + .OBJECT GALLERY,FX?ONBIT,FX?RLANDBIT,ROOMS,TOWER-S,FROBOZZ-PORTRAIT,T?GALLERY + .OBJECT MEADOW-OBJ,0,0,LOCAL-GLOBALS,LAWN,0,T?MEADOW-OBJ + .OBJECT MONSTERS-2,FX?VOWELBIT+FX?NDESCBIT,FX?VICBIT,PURLOINED-ROOM,MONSTERS-1,0,T?MONSTERS-2 + .OBJECT MONSTERS-1,FX?NDESCBIT,FX?VICBIT,PURLOINED-ROOM,FLOATING-SIGN,0,T?MONSTERS-1 + .OBJECT BED,FX?SURFACEBIT+FX?OPENBIT+FX?SEARCHBIT,FX?CONTBIT+FX?VEHBIT,BEDROOM,0,COMPARTMENT,T?BED + .OBJECT CHARM-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,BEDPOST,0,CHARM-SPELL,T?CHARM-SCROLL + .OBJECT GLOBAL-ROOM,0,0,GLOBAL-OBJECTS,BELBOZ,0,T?GLOBAL-ROOM + .OBJECT EGG-KNOB-4,FX?NDESCBIT,0,EGG,EGG-KNOB-3,0,T?EGG-KNOB-4 + .OBJECT BANQUET-HALL,0,FX?RLANDBIT,ROOMS,SE-TOWER,BENCHES,T?BANQUET-HALL + .OBJECT COMPARTMENT,FX?NDESCBIT,0,BED,BEDPOST,0,T?COMPARTMENT + .OBJECT EGG-KNOB-5,FX?NDESCBIT,0,EGG,EGG-KNOB-4,0,T?EGG-KNOB-5 + .OBJECT HAIRPIN-LOOP,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,DUSTY-ROAD,0,T?HAIRPIN-LOOP + .OBJECT HASTE-SPELL,FX?VOWELBIT+FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,HASTE-SCROLL,0,0,T?HASTE-SPELL + .OBJECT COURTYARD-4,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,COURTYARD-3,0,T?COURTYARD-4 + .OBJECT MEADOW,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,CLOSET,HEATHER,T?MEADOW + .OBJECT SPELL-BOOK,FX?OPENBIT+FX?TOUCHBIT,FX?CONTBIT+FX?READBIT+FX?TAKEBIT,PLAYER,0,STRONG-BOX-SPELL,T?SPELL-BOOK + .OBJECT ENGINE-ROOM,FX?ONBIT,FX?RLANDBIT,ROOMS,JEWEL-ROOM,0,T?ENGINE-ROOM + .OBJECT LIBRARY,0,FX?RLANDBIT,ROOMS,JUNCTION,RAT-TRACKS,T?LIBRARY + .OBJECT TOWER-N-DOOR,0,FX?DOORBIT+FX?CONTBIT,LOCAL-GLOBALS,GUARDS,0,T?TOWER-N-DOOR + .OBJECT EGG-KNOB-1,FX?NDESCBIT,0,EGG,0,0,T?EGG-KNOB-1 + .OBJECT EGG-KNOB-2,FX?VOWELBIT+FX?NDESCBIT,0,EGG,EGG-KNOB-1,0,T?EGG-KNOB-2 + .OBJECT LEGEND-ONE,FX?NDESCBIT,FX?READBIT,LEGEND-BOOK,0,0,T?LEGEND-ONE + .OBJECT EGG-KNOB-3,FX?NDESCBIT,0,EGG,EGG-KNOB-2,0,T?EGG-KNOB-3 + .OBJECT DOOR-REALITY,FX?LOCKEDBIT+FX?NDESCBIT,FX?CONTBIT+FX?DOORBIT+FX?INVISIBLE,LOCAL-GLOBALS,STAIRS,0,T?DOOR-REALITY + .OBJECT BANQUET-ILLUSION,FX?OPENBIT+FX?NDESCBIT+FX?TRANSBIT,FX?CONTBIT,BANQUET-HALL,0,CANDLES,T?BANQUET-ILLUSION + .OBJECT QUENCH-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT+FX?INVISIBLE,RAT-HOLE,0,QUENCH-SPELL,T?QUENCH-SCROLL + .OBJECT PROTECTION-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,PROTECTION-SCROLL,0,0,T?PROTECTION-SPELL + .OBJECT WARLOCK-TOWER,FX?ONBIT,FX?RLANDBIT,ROOMS,PIT,KRILL,T?WARLOCK-TOWER + .OBJECT FOUNDATION,FX?NDESCBIT,0,SHADY-BROOK,0,0,T?FOUNDATION + .OBJECT SUMMON-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,SUMMON-SCROLL,0,0,T?SUMMON-SPELL + .OBJECT TEMPLE-OBJ,0,0,LOCAL-GLOBALS,FOREST,0,T?TEMPLE-OBJ + .OBJECT ENDLESS-STAIR,0,FX?RLANDBIT,ROOMS,LANDING,0,T?ENDLESS-STAIR + .OBJECT PURLOINED-ROOM,0,FX?RLANDBIT,ROOMS,KNOT-ROOM,MONSTERS-3,T?PURLOINED-ROOM + .OBJECT COURTYARD-7,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,COURTYARD-6,0,T?COURTYARD-7 + .OBJECT T-F,0,FX?RLANDBIT,ROOMS,T-E,0,T?T-F + .OBJECT BEDROOM,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,SW-TOWER,BED,T?BEDROOM + .OBJECT SHACK-OBJ,FX?NDESCBIT,0,LOCAL-GLOBALS,DISTANT-CASTLE,0,T?SHACK-OBJ + .OBJECT GLIMPSE-1,0,0,GLOBAL-OBJECTS,ROAD,0,T?GLIMPSE-1 + .OBJECT FROBOZZ-PORTRAIT,FX?NDESCBIT,FX?VILLAIN+FX?INVISIBLE,GALLERY,FLATHEAD-PORTRAIT,0,T?FROBOZZ-PORTRAIT + .OBJECT STAIRS,FX?TOUCHBIT+FX?NDESCBIT,FX?CLIMBBIT,LOCAL-GLOBALS,BLACK-PASSAGE,0,T?STAIRS + .OBJECT MAGIC-KNIFE,FX?TREASURE+FX?TOUCHBIT,FX?WEAPONBIT+FX?TAKEBIT,0,0,0,T?MAGIC-KNIFE + .OBJECT LIGHTED-PORTRAIT,FX?NDESCBIT,FX?TAKEBIT,0,0,0,T?LIGHTED-PORTRAIT + .OBJECT CLOSET,FX?ONBIT,FX?RLANDBIT,ROOMS,ENGINE-ROOM,SWITCHES,T?CLOSET + .OBJECT MIRROR-HALL-1,0,FX?RLANDBIT,ROOMS,MAP-ROOM,0,T?MIRROR-HALL-1 + .OBJECT WESTERN-ROAD,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,WEST-CASTLE,0,T?WESTERN-ROAD + .OBJECT T-B,0,FX?RLANDBIT,ROOMS,T-A,0,T?T-B + .OBJECT LANTERN,FX?ONBIT,FX?TAKEBIT+FX?LIGHTBIT,ADVENTURER,0,0,T?LANTERN + .OBJECT STRONG-BOX,FX?ONBIT+FX?TRYTAKEBIT,FX?CONTBIT+FX?TAKEBIT,0,0,0,T?STRONG-BOX + .OBJECT IMPLEMENTS,FX?NDESCBIT,0,BANQUET-ILLUSION,BTABLES,0,T?IMPLEMENTS + .OBJECT GANG-OF-N,FX?NDESCBIT,FX?VICBIT,TEMPLE,0,0,T?GANG-OF-N + .OBJECT FLATHEAD-PORTRAIT,FX?NDESCBIT,FX?VILLAIN+FX?INVISIBLE,GALLERY,PORTRAITS,0,T?FLATHEAD-PORTRAIT + .OBJECT SCRAMBLED-EGG,FX?OPENBIT,FX?CONTBIT+FX?TAKEBIT,0,0,0,T?SCRAMBLED-EGG + .OBJECT TREES,0,0,LOCAL-GLOBALS,SHACK-OBJ,0,T?TREES + .OBJECT WATER,0,FX?TAKEBIT,0,0,0,T?WATER + .OBJECT SKELETON,0,0,0,0,0,T?SKELETON + .OBJECT GROUND,0,0,GLOBAL-OBJECTS,IT,0,T?GROUND + .OBJECT RAT-TRACKS,FX?NDESCBIT,0,LIBRARY,LEGEND-BOOK,0,T?RAT-TRACKS + .OBJECT MOUNTAIN,0,0,LOCAL-GLOBALS,HILLS,0,T?MOUNTAIN + .OBJECT NOT-HERE-OBJECT,0,0,0,0,0,T?NOT-HERE-OBJECT + .OBJECT DRAGON,FX?VICTIM,0,0,0,0,T?DRAGON + .OBJECT EAST-FORK,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,WESTERN-ROAD,0,T?EAST-FORK + .OBJECT COURTYARD-6,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,COURTYARD-5,0,T?COURTYARD-6 + .OBJECT INTNUM,0,0,GLOBAL-OBJECTS,LOCAL-GLOBALS,0,T?INTNUM + .OBJECT GANG-OF-FOUR,0,FX?VICBIT,0,0,0,T?GANG-OF-FOUR + .OBJECT STRONG-BOX-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,SPELL-BOOK,TALK-TO-ANIMALS-SPELL,0,T?STRONG-BOX-SPELL + .OBJECT NORTH-GATE-OBJ,FX?LOCKEDBIT+FX?NDESCBIT,FX?CONTBIT+FX?DOORBIT,LOCAL-GLOBALS,VOICES,0,T?NORTH-GATE-OBJ + .OBJECT JEWEL-CHESTS,FX?NDESCBIT,FX?CONTBIT,JEWEL-ROOM,0,0,T?JEWEL-CHESTS + .OBJECT VILLAGE,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,HAIRPIN-LOOP,0,T?VILLAGE + .OBJECT CHEAT-DEATH-SPELL,FX?VOWELBIT+FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,CHEAT-DEATH-SCROLL,0,0,T?CHEAT-DEATH-SPELL + .OBJECT CEILING,FX?TOUCHBIT+FX?NDESCBIT,0,GLOBAL-OBJECTS,WALLS,0,T?CEILING + .OBJECT MIRROR-STUFF,0,0,LOCAL-GLOBALS,SHARDS,0,T?MIRROR-STUFF + .OBJECT ARCH,FX?VOWELBIT,0,LOCAL-GLOBALS,IRON-GATE-CHAINS,0,T?ARCH + .OBJECT CREDITS-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,MAP-ROOM,PENCIL,CREDITS-SPELL,T?CREDITS-SCROLL + .OBJECT NORTH-CELL-DOOR,FX?NDESCBIT,FX?CONTBIT+FX?DOORBIT,LOCAL-GLOBALS,ARCH,0,T?NORTH-CELL-DOOR + .OBJECT GLOBE,FX?NDESCBIT,0,PEDESTAL,0,0,T?GLOBE + .OBJECT ETERNAL-FLAME,FX?ONBIT,FX?LIGHTBIT+FX?TAKEBIT,PORTRAIT-NICHE,CHEAT-DEATH-SCROLL,0,T?ETERNAL-FLAME + .OBJECT POINT-J,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-H,0,T?POINT-J + .OBJECT REPAIR-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,FOREST-1,0,REPAIR-SPELL,T?REPAIR-SCROLL + .OBJECT FLOATING-SIGN,FX?NDESCBIT,FX?READBIT,PURLOINED-ROOM,0,0,T?FLOATING-SIGN + .OBJECT STONE-WALL,FX?NDESCBIT,FX?READBIT,LOCAL-GLOBALS,NORTH-CELL-DOOR,0,T?STONE-WALL + .OBJECT PIT,FX?ONBIT,FX?RLANDBIT,ROOMS,REAL-STAIR,0,T?PIT + .OBJECT RAT-HOLE,FX?OPENBIT,FX?CONTBIT,0,0,QUENCH-SCROLL,T?RAT-HOLE + .OBJECT POINT-H,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-K,0,T?POINT-H + .OBJECT DUSTY-ROAD,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,WEST-FORK,0,T?DUSTY-ROAD + .OBJECT SECRET-PASSAGE,0,FX?RLANDBIT,ROOMS,NORTH-CELL,SILVER-SPOON,T?SECRET-PASSAGE + .OBJECT BRAMBLES,0,0,GLOBAL-OBJECTS,GLOBAL-ROOM,0,T?BRAMBLES + .OBJECT CHARM-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,CHARM-SCROLL,0,0,T?CHARM-SPELL + .OBJECT T-I,0,FX?RLANDBIT,ROOMS,T-H,BANISH-SCROLL,T?T-I + .OBJECT COURTYARD-1,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,PEBBLED-PATH,0,T?COURTYARD-1 + .OBJECT BEACH-OBJ,0,0,LOCAL-GLOBALS,MEADOW-OBJ,0,T?BEACH-OBJ + .OBJECT PEBBLED-PATH,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,INSIDE-GATE,0,T?PEBBLED-PATH + .OBJECT POINT-F,FX?NDESCBIT+FX?POINTBIT,0,TMAP,POINT-V,0,T?POINT-F + .OBJECT JEWELLED-BOX,FX?TREASURE+FX?OPENBIT,FX?CONTBIT+FX?TAKEBIT,KNOT-ROOM,0,MAGIC-ROPE,T?JEWELLED-BOX + .OBJECT SWORD,0,FX?WEAPONBIT,ADVENTURER,LANTERN,0,T?SWORD + .OBJECT FOOD,FX?NDESCBIT,0,BANQUET-ILLUSION,IMPLEMENTS,0,T?FOOD + .OBJECT BTABLES,FX?NDESCBIT,0,BANQUET-ILLUSION,0,0,T?BTABLES + .OBJECT NW-TOWER,0,FX?RLANDBIT,ROOMS,FOREST-2,0,T?NW-TOWER + .OBJECT PROTECTION-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,0,0,PROTECTION-SPELL,T?PROTECTION-SCROLL + .OBJECT SHACK-ROOM,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,SHACK-EAST,0,T?SHACK-ROOM + .OBJECT SHARDS,FX?NDESCBIT,0,LOCAL-GLOBALS,MIRROR,0,T?SHARDS + .OBJECT MIRROR-HALL-4,0,FX?RLANDBIT,ROOMS,MIRROR-HALL-3,0,T?MIRROR-HALL-4 + .OBJECT DOOR-ILLUSION,FX?NDESCBIT,FX?CONTBIT+FX?DOORBIT+FX?VICBIT,LOCAL-GLOBALS,DOOR-REALITY,0,T?DOOR-ILLUSION + .OBJECT T-E,0,FX?RLANDBIT,ROOMS,T-D,0,T?T-E + .OBJECT IRON-GATE,FX?LOCKEDBIT+FX?VOWELBIT+FX?NDESCBIT,FX?DOORBIT,LOCAL-GLOBALS,ADVENTURER-LG,0,T?IRON-GATE + .OBJECT BANISH-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,T-I,TERROR,BANISH-SPELL,T?BANISH-SCROLL + .OBJECT DAMAGED-SCROLL,0,FX?INVISIBLE+FX?READBIT+FX?TAKEBIT,EGG,EGG-KNOB-5,0,T?DAMAGED-SCROLL + .OBJECT NEWT-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?INVISIBLE+FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,LILY-PAD,0,NEWT-SPELL,T?NEWT-SCROLL + .OBJECT SE-TOWER,0,FX?RLANDBIT,ROOMS,EAST-HALL,0,T?SE-TOWER + .OBJECT POINT-B,FX?NDESCBIT+FX?POINTBIT,0,TMAP,0,0,T?POINT-B + .OBJECT OPEN-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,OPEN-SCROLL,0,0,T?OPEN-SPELL + .OBJECT PATH-SIGN,FX?NDESCBIT,FX?READBIT,TRAIL-HEAD,0,0,T?PATH-SIGN + .OBJECT T-A,0,FX?RLANDBIT,ROOMS,0,0,T?T-A + .OBJECT REPAIR-SPELL,FX?SPELLBIT+FX?NDESCBIT,FX?READBIT,REPAIR-SCROLL,0,0,T?REPAIR-SPELL + .OBJECT ADVENTURER-LG,FX?VOWELBIT+FX?NDESCBIT,FX?INVISIBLE,LOCAL-GLOBALS,MIRROR-STUFF,0,T?ADVENTURER-LG + .OBJECT INSIDE-GATE,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,MIRROR-HALL-4,0,T?INSIDE-GATE + .OBJECT SHACK,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,SHACK-ROOM,SHACK-OVEN,T?SHACK + .OBJECT SUMMON-SCROLL,FX?TRANSBIT+FX?SCROLLBIT,FX?CONTBIT+FX?TAKEBIT+FX?BURNBIT+FX?READBIT,0,0,SUMMON-SPELL,T?SUMMON-SCROLL + .OBJECT SOUTH-GATE,FX?ONBIT,FX?RLANDBIT,ROOMS,SECRET-PASSAGE,0,T?SOUTH-GATE + .OBJECT JUNCTION,0,FX?RMUNGBIT+FX?RLANDBIT,ROOMS,KITCHEN,0,T?JUNCTION + .OBJECT SHAPE,0,0,0,0,0,T?SHAPE + .OBJECT VILLAGE-EAST,FX?ONBIT,FX?LIGHTBIT+FX?RLANDBIT,ROOMS,VISTA,0,T?VILLAGE-EAST + .OBJECT ENTHARION,0,FX?VILLAIN,GLOBAL-OBJECTS,GLOBAL-KRILL,0,T?ENTHARION + .OBJECT TOWER-S-DOOR,0,FX?DOORBIT+FX?CONTBIT,LOCAL-GLOBALS,TOWER-N-DOOR,0,T?TOWER-S-DOOR + .OBJECT PSEUDO-OBJECT,0,0,0,0,0,T?PSEUDO-OBJECT + .OBJECT DIM-DESCENT,0,FX?RLANDBIT,ROOMS,BEDROOM,0,T?DIM-DESCENT + .OBJECT LITTER,FX?NDESCBIT,0,KITCHEN,0,0,T?LITTER + .OBJECT GLOBAL-KRILL,0,0,GLOBAL-OBJECTS,GLOBAL-HOLE,0,T?GLOBAL-KRILL + .ENDT + +; OBJECT PROPERTY TABLES ARE DEFINED HERE + +OBJPRP:: + +T?FOREST:: .TABLE ; TABLE FOR OBJECT FOREST + .STRL "forest" + .PROP 2,P?SYNONYM + W?FOREST + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + FOREST-F + .BYTE 0 + .ENDT + +T?DUNGEON:: .TABLE ; TABLE FOR OBJECT DUNGEON + .STRL "Dungeon" + .PROP 5,P?NORTH ; DOOR EXIT + .BYTE NORTH-CELL ; ROOM NAME + .BYTE NORTH-CELL-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?UP + .BYTE DIM-DESCENT + .PROP 1,P?DOWN + .BYTE T-A + .PROP 5,P?IN ; DOOR EXIT + .BYTE NORTH-CELL ; ROOM NAME + .BYTE NORTH-CELL-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 3,P?GLOBAL + .BYTE STAIRS + .BYTE STONE-WALL + .BYTE NORTH-CELL-DOOR + .PROP 2,P?LDESC ; STRING PROPERTY + STR?176 + .PROP 4,P?PSEUDO + W?CELL + CELL-F + .BYTE 0 + .ENDT + +T?BEDPOST:: .TABLE ; TABLE FOR OBJECT BEDPOST + .STRL "bedpost" + .PROP 4,P?SYNONYM + W?BEDPOST + W?POST + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 5 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BEDPOST-F + .BYTE 0 + .ENDT + +T?GLOBAL-WATER:: .TABLE ; TABLE FOR OBJECT GLOBAL-WATER + .STRL "water" + .PROP 6,P?SYNONYM + W?WATER + W?BROOK + W?POND + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + WATER-FUNCTION + .PROP 2,P?ADJECTIVE + .BYTE A?DELICIOUS + .BYTE A?SPRING + .BYTE 0 + .ENDT + +T?HANDS:: .TABLE ; TABLE FOR OBJECT HANDS + .STRL "bare hands of a novice enchanter" + .PROP 4,P?SYNONYM + W?HAND + W?HANDS + .PROP 1,P?ADJECTIVE + .BYTE A?BARE + .BYTE 0 + .ENDT + +T?TMAP:: .TABLE ; TABLE FOR OBJECT TMAP + .STRL "map" + .PROP 2,P?SYNONYM + W?MAP + .PROP 2,P?FDESC ; STRING PROPERTY + STR?55 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 100 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAP-F + .PROP 2,P?ADJECTIVE + .BYTE A?OLD + .BYTE A?PARCHMENT + .BYTE 0 + .ENDT + +T?HILLS:: .TABLE ; TABLE FOR OBJECT HILLS + .STRL "hills" + .PROP 4,P?SYNONYM + W?HILL + W?HILLS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + HILLS-F + .PROP 3,P?ADJECTIVE + .BYTE A?LOW + .BYTE A?ROLLING + .BYTE A?SMOKY + .BYTE 0 + .ENDT + +T?BANISH-SPELL:: .TABLE ; TABLE FOR OBJECT BANISH-SPELL + .STRL "guncho spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?GUNCHO + .PROP 2,P?TEXT ; STRING PROPERTY + STR?106 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?MOUNTAIN-TRAIL:: .TABLE ; TABLE FOR OBJECT MOUNTAIN-TRAIL + .STRL "Mountain Trail" + .PROP 1,P?NORTH + .BYTE VISTA + .PROP 2,P?EAST ; STRING PROPERTY + STR?328 + .PROP 1,P?SOUTH + .BYTE VILLAGE + .PROP 2,P?WEST ; STRING PROPERTY + STR?328 + .PROP 1,P?UP + .BYTE VISTA + .PROP 1,P?DOWN + .BYTE VILLAGE + .PROP 3,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .BYTE TREES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?327 + .BYTE 0 + .ENDT + +T?CORRIDOR:: .TABLE ; TABLE FOR OBJECT CORRIDOR + .STRL "passage" + .PROP 6,P?SYNONYM + W?PASSAGE + W?CORRIDOR + W?ENTRANCE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + CORRIDOR-F + .BYTE 0 + .ENDT + +T?BELBOZ:: .TABLE ; TABLE FOR OBJECT BELBOZ + .STRL "Necromancer Belboz" + .PROP 4,P?SYNONYM + W?BELBOZ + W?NECROMANCER + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BELBOZ-F + .BYTE 0 + .ENDT + +T?COURTYARD:: .TABLE ; TABLE FOR OBJECT COURTYARD + .STRL "courtyard" + .PROP 8,P?SYNONYM + W?COURTYARD + W?LAWN + W?LAWNS + W?GRASS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + COURTYARD-F + .BYTE 0 + .ENDT + +T?WINDOW:: .TABLE ; TABLE FOR OBJECT WINDOW + .STRL "window" + .PROP 2,P?SYNONYM + W?WINDOW + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + WINDOW-F + .PROP 1,P?ADJECTIVE + .BYTE A?BROKEN + .BYTE 0 + .ENDT + +T?PENCIL:: .TABLE ; TABLE FOR OBJECT PENCIL + .STRL "badly worn pencil" + .PROP 6,P?SYNONYM + W?PENCIL + W?ERASER + W?RUNES + .PROP 2,P?FDESC ; STRING PROPERTY + STR?56 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PENCIL-F + .PROP 2,P?ADJECTIVE + .BYTE A?BADLY + .BYTE A?WORN + .PROP 2,P?TEXT ; STRING PROPERTY + STR?57 + .BYTE 0 + .ENDT + +T?IRON-GATE-CHAINS:: .TABLE ; TABLE FOR OBJECT IRON-GATE-CHAINS + .STRL "chains" + .PROP 4,P?SYNONYM + W?CHAIN + W?CHAINS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + IRON-GATE-F + .PROP 1,P?ADJECTIVE + .BYTE A?IRON + .BYTE 0 + .ENDT + +T?TURTLE:: .TABLE ; TABLE FOR OBJECT TURTLE + .STRL "rainbow turtle" + .PROP 4,P?SYNONYM + W?TURTLE + W?SHELL + .PROP 2,P?FDESC ; STRING PROPERTY + STR?289 + .PROP 2,P?LDESC ; STRING PROPERTY + STR?290 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 6 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TURTLE-F + .PROP 2,P?ADJECTIVE + .BYTE A?RAINBOW + .BYTE A?ENAMELLED + .BYTE 0 + .ENDT + +T?VOICES:: .TABLE ; TABLE FOR OBJECT VOICES + .STRL "noise" + .PROP 8,P?SYNONYM + W?VOICES + W?NOISE + W?NOISES + W?DRONING + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + VOICES-F + .PROP 3,P?ADJECTIVE + .BYTE A?LOW + .BYTE A?GUTTURAL + .BYTE A?SCREECHING + .BYTE 0 + .ENDT + +T?HEATHER:: .TABLE ; TABLE FOR OBJECT HEATHER + .STRL "local vegetation" + .PROP 4,P?SYNONYM + W?HEATHER + W?THISTLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SEA-STUFF-F + .BYTE 0 + .ENDT + +T?JUG:: .TABLE ; TABLE FOR OBJECT JUG + .STRL "jug" + .PROP 2,P?SYNONYM + W?JUG + .PROP 2,P?FDESC ; STRING PROPERTY + STR?49 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 4 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + JUG-F + .PROP 1,P?ADJECTIVE + .BYTE A?POTTERY + .BYTE 0 + .ENDT + +T?LEGEND-BOOK:: .TABLE ; TABLE FOR OBJECT LEGEND-BOOK + .STRL "dusty book" + .PROP 4,P?SYNONYM + W?BOOK + W?PAGE + .PROP 2,P?FDESC ; STRING PROPERTY + STR?76 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 6 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LEGEND-BOOK-F + .PROP 4,P?ADJECTIVE + .BYTE A?OLD + .BYTE A?DUSTY + .BYTE A?FIRST + .BYTE A?LEGEND + .BYTE 0 + .ENDT + +T?ME:: .TABLE ; TABLE FOR OBJECT ME + .STRL "you" + .PROP 8,P?SYNONYM + W?ME + W?MYSELF + W?SELF + W?FACE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + CRETIN + .BYTE 0 + .ENDT + +T?COURTYARD-3:: .TABLE ; TABLE FOR OBJECT COURTYARD-3 + .STRL "Courtyard" + .PROP 1,P?NORTH + .BYTE COURTYARD-2 + .PROP 1,P?NE + .BYTE COURTYARD-5 + .PROP 1,P?EAST + .BYTE TEMPLE + .PROP 1,P?SE + .BYTE COURTYARD-6 + .PROP 1,P?SOUTH + .BYTE COURTYARD-4 + .PROP 1,P?WEST + .BYTE COURTYARD-1 + .PROP 6,P?GLOBAL + .BYTE COURTYARD + .BYTE LAWN + .BYTE TEMPLE-OBJ + .BYTE TOWER + .BYTE TURRET + .BYTE VOICES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?205 + .PROP 2,P?MUNGDESC ; STRING PROPERTY + STR?206 + .BYTE 0 + .ENDT + +T?MAP-ROOM:: .TABLE ; TABLE FOR OBJECT MAP-ROOM + .STRL "Map Room" + .PROP 5,P?SOUTH ; DOOR EXIT + .BYTE PURLOINED-ROOM ; ROOM NAME + .BYTE DOOR-REALITY ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 5,P?DOWN ; DOOR EXIT + .BYTE PURLOINED-ROOM ; ROOM NAME + .BYTE DOOR-REALITY ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 4,P?GLOBAL + .BYTE DOOR-REALITY + .BYTE WINDOW + .BYTE FOREST + .BYTE SEA + .PROP 2,P?LDESC ; STRING PROPERTY + STR?130 + .PROP 2,P?TEXT ; STRING PROPERTY + STR?131 + .BYTE 0 + .ENDT + +T?FLY-SCROLL:: .TABLE ; TABLE FOR OBJECT FLY-SCROLL + .STRL "ornate scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?ORNATE + .BYTE 0 + .ENDT + +T?OPEN-SCROLL:: .TABLE ; TABLE FOR OBJECT OPEN-SCROLL + .STRL "scribbled scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?SCRIBBLED + .BYTE 0 + .ENDT + +T?CANDLES:: .TABLE ; TABLE FOR OBJECT CANDLES + .STRL "banquet candles" + .PROP 2,P?SYNONYM + W?CANDLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BANQUET-ILLUSION-F + .PROP 1,P?ADJECTIVE + .BYTE A?BANQUET + .BYTE 0 + .ENDT + +T?KITCHEN:: .TABLE ; TABLE FOR OBJECT KITCHEN + .STRL "Kitchen" + .PROP 1,P?WEST + .BYTE BANQUET-HALL + .PROP 2,P?LDESC ; STRING PROPERTY + STR?182 + .PROP 2,P?MUNGDESC ; STRING PROPERTY + STR?183 + .BYTE 0 + .ENDT + +T?POINT-V:: .TABLE ; TABLE FOR OBJECT POINT-V + .STRL "point V" + .PROP 2,P?SYNONYM + W?V + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 7 + .BYTE 0 + .ENDT + +T?HOVEL:: .TABLE ; TABLE FOR OBJECT HOVEL + .STRL "hovel" + .PROP 2,P?SYNONYM + W?HOVEL + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + HOVEL-F + .PROP 1,P?ADJECTIVE + .BYTE A?DECREPIT + .BYTE 0 + .ENDT + +T?MAGIC-ROPE:: .TABLE ; TABLE FOR OBJECT MAGIC-ROPE + .STRL "tangle of rope" + .PROP 8,P?SYNONYM + W?ROPE + W?KNOT + W?COIL + W?COILS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MAGIC-ROPE-F + .PROP 3,P?ADJECTIVE + .BYTE A?TIGHT + .BYTE A?THIN + .BYTE A?STRAND + .BYTE 0 + .ENDT + +T?LIGHTS:: .TABLE ; TABLE FOR OBJECT LIGHTS + .STRL "blinking display" + .PROP 6,P?SYNONYM + W?LIGHT + W?LIGHTS + W?DISPLAY + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LIGHTS-F + .PROP 2,P?ADJECTIVE + .BYTE A?BLINKING + .BYTE A?SHIFTING + .BYTE 0 + .ENDT + +T?FOREST-2:: .TABLE ; TABLE FOR OBJECT FOREST-2 + .STRL "Swamp" + .PROP 2,P?NORTH ; STRING PROPERTY + STR?193 + .PROP 2,P?NE ; STRING PROPERTY + STR?193 + .PROP 2,P?EAST ; STRING PROPERTY + STR?193 + .PROP 2,P?SE ; STRING PROPERTY + STR?193 + .PROP 2,P?SOUTH ; STRING PROPERTY + STR?193 + .PROP 2,P?SW ; STRING PROPERTY + STR?193 + .PROP 1,P?WEST + .BYTE FOREST-1 + .PROP 2,P?NW ; STRING PROPERTY + STR?193 + .PROP 2,P?GLOBAL + .BYTE FOREST + .BYTE GLOBAL-WATER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?192 + .PROP 4,P?PSEUDO + W?SWAMP + SWAMP-PSEUDO + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SWAMP-F + .BYTE 0 + .ENDT + +T?LAWN:: .TABLE ; TABLE FOR OBJECT LAWN + .STRL "lawn" + .PROP 2,P?SYNONYM + W?LAWN + .BYTE 0 + .ENDT + +T?T-H:: .TABLE ; TABLE FOR OBJECT T-H + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 8 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?36 + .BYTE 0 + .ENDT + +T?ALTAR:: .TABLE ; TABLE FOR OBJECT ALTAR + .STRL "Sacrificial Altar" + .PROP 1,P?DOWN + .BYTE TEMPLE + .PROP 3,P?GLOBAL + .BYTE STAIRS + .BYTE STATUE + .BYTE VOICES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?215 + .PROP 4,P?PSEUDO + W?ALTAR + ALTAR-PSEUDO + .BYTE 0 + .ENDT + +T?HASTE-SCROLL:: .TABLE ; TABLE FOR OBJECT HASTE-SCROLL + .STRL "stained scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?FDESC ; STRING PROPERTY + STR?99 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?STAINED + .BYTE 0 + .ENDT + +T?LONG-ROAD-SIGN:: .TABLE ; TABLE FOR OBJECT LONG-ROAD-SIGN + .STRL "sign" + .PROP 2,P?SYNONYM + W?SIGN + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LONG-ROAD-SIGN-F + .PROP 1,P?ADJECTIVE + .BYTE A?WORN + .BYTE 0 + .ENDT + +T?TURRET:: .TABLE ; TABLE FOR OBJECT TURRET + .STRL "turret" + .PROP 2,P?SYNONYM + W?TURRET + .BYTE 0 + .ENDT + +T?ROOMS:: .TABLE ; TABLE FOR OBJECT ROOMS + .STRL "" + .PROP 1,P?IN + .BYTE ROOMS + .BYTE 0 + .ENDT + +T?DISPEL-SPELL:: .TABLE ; TABLE FOR OBJECT DISPEL-SPELL + .STRL "kulcad spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?KULCAD + .PROP 2,P?TEXT ; STRING PROPERTY + STR?102 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?BREAD:: .TABLE ; TABLE FOR OBJECT BREAD + .STRL "loaf of bread" + .PROP 6,P?SYNONYM + W?LOAF + W?BREAD + W?FOOD + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 8 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BREAD-F + .BYTE 0 + .ENDT + +T?WEST-FORK:: .TABLE ; TABLE FOR OBJECT WEST-FORK + .STRL "Fork" + .PROP 1,P?NE + .BYTE SHACK-ROOM + .PROP 1,P?SE + .BYTE DUSTY-ROAD + .PROP 1,P?WEST + .BYTE LONG-ROAD + .PROP 2,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?322 + .BYTE 0 + .ENDT + +T?EAST-HALL:: .TABLE ; TABLE FOR OBJECT EAST-HALL + .STRL "East Hall" + .PROP 1,P?NORTH + .BYTE BANQUET-HALL + .PROP 1,P?SOUTH + .BYTE SOUTH-GATE + .PROP 2,P?LDESC ; STRING PROPERTY + STR?179 + .BYTE 0 + .ENDT + +T?ADVENTURER:: .TABLE ; TABLE FOR OBJECT ADVENTURER + .STRL "adventurer" + .PROP 4,P?SYNONYM + W?ADVENTURER + W?PERSON + .PROP 2,P?DESCFCN ; ATOM (CONSTANT) PROPERTY + + ADVENTURER-D + .PROP 2,P?CONTFCN ; ATOM (CONSTANT) PROPERTY + + ADVENTURER-C + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 100 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ADVENTURER-F + .PROP 2,P?ADJECTIVE + .BYTE A?BEDRAGGLED + .BYTE A?WEARY + .BYTE 0 + .ENDT + +T?LONG-ROAD:: .TABLE ; TABLE FOR OBJECT LONG-ROAD + .STRL "Long Road" + .PROP 3,P?EAST + .WORD LONG-ROAD-EXIT-F + .BYTE 0 + .PROP 3,P?WEST + .WORD LONG-ROAD-EXIT-F + .BYTE 0 + .PROP 4,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .BYTE FOREST + .BYTE TREES + .PROP 4,P?PSEUDO + W?FARM + FARM-PSEUDO + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LONG-ROAD-F + .BYTE 0 + .ENDT + +T?TERROR:: .TABLE ; TABLE FOR OBJECT TERROR + .STRL "lurking evil presence" + .PROP 6,P?SYNONYM + W?TERROR + W?PRESENCE + W?FORCE + .PROP 1,P?GLOBAL + .BYTE TERROR + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TERROR-F + .PROP 4,P?ADJECTIVE + .BYTE A?STALKING + .BYTE A?EVIL + .BYTE A?LURKING + .BYTE A?UNSEEN + .BYTE 0 + .ENDT + +T?REAL-STAIR:: .TABLE ; TABLE FOR OBJECT REAL-STAIR + .STRL "Winding Stair" + .PROP 3,P?EAST + .WORD REAL-STAIR-EXIT-F + .BYTE 0 + .PROP 3,P?WEST + .WORD REAL-STAIR-EXIT-F + .BYTE 0 + .PROP 3,P?DOWN + .WORD REAL-STAIR-EXIT-F + .BYTE 0 + .PROP 1,P?GLOBAL + .BYTE STAIRS + .PROP 2,P?LDESC ; STRING PROPERTY + STR?80 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PIT-F + .BYTE 0 + .ENDT + +T?GLOBAL-TURTLE:: .TABLE ; TABLE FOR OBJECT GLOBAL-TURTLE + .STRL "rainbow turtle" + .PROP 2,P?SYNONYM + W?TURTLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TURTLE-F + .PROP 1,P?ADJECTIVE + .BYTE A?RAINBOW + .BYTE 0 + .ENDT + +T?VISTA:: .TABLE ; TABLE FOR OBJECT VISTA + .STRL "Lonely Mountain" + .PROP 2,P?NORTH ; STRING PROPERTY + STR?330 + .PROP 2,P?EAST ; STRING PROPERTY + STR?330 + .PROP 1,P?SOUTH + .BYTE MOUNTAIN-TRAIL + .PROP 2,P?WEST ; STRING PROPERTY + STR?330 + .PROP 1,P?DOWN + .BYTE MOUNTAIN-TRAIL + .PROP 3,P?GLOBAL + .BYTE DISTANT-CASTLE + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?329 + .BYTE 0 + .ENDT + +T?KRILL:: .TABLE ; TABLE FOR OBJECT KRILL + .STRL "warlock Krill" + .PROP 4,P?SYNONYM + W?KRILL + W?WARLOCK + .PROP 2,P?LDESC ; STRING PROPERTY + STR?84 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + KRILL-F + .BYTE 0 + .ENDT + +T?BENCHES:: .TABLE ; TABLE FOR OBJECT BENCHES + .STRL "benches" + .PROP 4,P?SYNONYM + W?BENCH + W?BENCHES + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BANQUET-ILLUSION-F + .PROP 2,P?ADJECTIVE + .BYTE A?WOOD + .BYTE A?WOODEN + .BYTE 0 + .ENDT + +T?POINT-R:: .TABLE ; TABLE FOR OBJECT POINT-R + .STRL "point R" + .PROP 2,P?SYNONYM + W?R + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 2 + .BYTE 0 + .ENDT + +T?NEWT-SPELL:: .TABLE ; TABLE FOR OBJECT NEWT-SPELL + .STRL "cleesh spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?CLEESH + .PROP 2,P?TEXT ; STRING PROPERTY + STR?109 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?TOWER-S:: .TABLE ; TABLE FOR OBJECT TOWER-S + .STRL "Cell" + .PROP 5,P?NORTH ; DOOR EXIT + .BYTE TEMPLE ; ROOM NAME + .BYTE TOWER-S-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 2,P?GLOBAL + .BYTE TOWER-S-DOOR + .BYTE WINDOW + .PROP 4,P?PSEUDO + W?CELL + CELL-PSEUDO + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TOWER-S-F + .PROP 2,P?TEXT ; STRING PROPERTY + STR?217 + .BYTE 0 + .ENDT + +T?PLAYER:: .TABLE ; TABLE FOR OBJECT PLAYER + .STRL "cretin" + .PROP 2,P?SYNONYM + W?ENCHANTER + .PROP 2,P?ACTION ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?T-D:: .TABLE ; TABLE FOR OBJECT T-D + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 4 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?32 + .BYTE 0 + .ENDT + +T?DISTANT-CASTLE:: .TABLE ; TABLE FOR OBJECT DISTANT-CASTLE + .STRL "castle" + .PROP 8,P?SYNONYM + W?CASTLE + W?TOWER + W?TOWERS + W?TURRET + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DISTANT-CASTLE-F + .PROP 3,P?ADJECTIVE + .BYTE A?HIGH + .BYTE A?DARK + .BYTE A?GREAT + .BYTE 0 + .ENDT + +T?LOCAL-GLOBALS:: .TABLE ; TABLE FOR OBJECT LOCAL-GLOBALS + .STRL "" + .PROP 2,P?SYNONYM + W?ZZMGCK + .PROP 2,P?DESCFCN ; INTEGER/CONSTANT PROPERTY + + 0 + .PROP 1,P?GLOBAL + .BYTE GLOBAL-OBJECTS + .PROP 2,P?ADVFCN ; INTEGER/CONSTANT PROPERTY + + 0 + .PROP 2,P?FDESC ; STRING PROPERTY + STR?47 + .PROP 2,P?LDESC ; STRING PROPERTY + STR?47 + .PROP 4,P?PSEUDO + W?FOOBAR + V-WALK + .PROP 2,P?CONTFCN ; INTEGER/CONSTANT PROPERTY + + 0 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 0 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?LIGHT-SPELL:: .TABLE ; TABLE FOR OBJECT LIGHT-SPELL + .STRL "frotz spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?FROTZ + .PROP 2,P?TEXT ; STRING PROPERTY + STR?91 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 1 + .BYTE 0 + .ENDT + +T?CREDITS-SPELL:: .TABLE ; TABLE FOR OBJECT CREDITS-SPELL + .STRL "filfre spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?FILFRE + .PROP 2,P?TEXT ; STRING PROPERTY + STR?112 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?UNDERGROWTH:: .TABLE ; TABLE FOR OBJECT UNDERGROWTH + .STRL "undergrowth" + .PROP 2,P?SYNONYM + W?UNDERGROWTH + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + UNDERGROWTH-F + .PROP 1,P?ADJECTIVE + .BYTE A?THICK + .BYTE 0 + .ENDT + +T?FROG:: .TABLE ; TABLE FOR OBJECT FROG + .STRL "frog" + .PROP 4,P?SYNONYM + W?FROG + W?FROGS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + FROG-F + .BYTE 0 + .ENDT + +T?NORTH-BLOCK:: .TABLE ; TABLE FOR OBJECT NORTH-BLOCK + .STRL "square block of stone" + .PROP 2,P?SYNONYM + W?BLOCK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + NORTH-BLOCK-F + .PROP 3,P?ADJECTIVE + .BYTE A?SQUARE + .BYTE A?STONE + .BYTE A?LOOSE + .BYTE 0 + .ENDT + +T?NORTH-GATE:: .TABLE ; TABLE FOR OBJECT NORTH-GATE + .STRL "North Gate" + .PROP 5,P?NORTH ; DOOR EXIT + .BYTE FOREST-1 ; ROOM NAME + .BYTE NORTH-GATE-OBJ ; DOOR NAME + STR?189 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?EAST + .BYTE PURLOINED-ROOM + .PROP 1,P?SOUTH + .BYTE LIBRARY + .PROP 1,P?WEST + .BYTE MIRROR-HALL-4 + .PROP 3,P?GLOBAL + .BYTE FOREST + .BYTE NORTH-GATE-OBJ + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?188 + .BYTE 0 + .ENDT + +T?SW-TOWER:: .TABLE ; TABLE FOR OBJECT SW-TOWER + .STRL "Tower" + .PROP 1,P?NORTH + .BYTE WEST-HALL + .PROP 1,P?EAST + .BYTE DIM-DESCENT + .PROP 1,P?UP + .BYTE BEDROOM + .PROP 2,P?GLOBAL + .BYTE STAIRS + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?171 + .BYTE 0 + .ENDT + +T?COURTYARD-2:: .TABLE ; TABLE FOR OBJECT COURTYARD-2 + .STRL "Courtyard" + .PROP 1,P?EAST + .BYTE COURTYARD-5 + .PROP 1,P?SE + .BYTE TEMPLE + .PROP 1,P?SOUTH + .BYTE COURTYARD-3 + .PROP 1,P?SW + .BYTE COURTYARD-1 + .PROP 1,P?WEST + .BYTE COURTYARD-1 + .PROP 3,P?GLOBAL + .BYTE COURTYARD + .BYTE LAWN + .BYTE TEMPLE-OBJ + .PROP 2,P?LDESC ; STRING PROPERTY + STR?203 + .PROP 2,P?MUNGDESC ; STRING PROPERTY + STR?204 + .BYTE 0 + .ENDT + +T?SWITCHES:: .TABLE ; TABLE FOR OBJECT SWITCHES + .STRL "glowing button" + .PROP 8,P?SYNONYM + W?DIAL + W?CONTROL + W?BUTTON + W?DIALS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LIGHTS-F + .PROP 2,P?ADJECTIVE + .BYTE A?ARCANE + .BYTE A?GLOWING + .BYTE 0 + .ENDT + +T?POINT-P:: .TABLE ; TABLE FOR OBJECT POINT-P + .STRL "point P" + .PROP 2,P?SYNONYM + W?P + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 9 + .BYTE 0 + .ENDT + +T?GLOBAL-SLEEP:: .TABLE ; TABLE FOR OBJECT GLOBAL-SLEEP + .STRL "sleep" + .PROP 2,P?SYNONYM + W?SLEEP + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBAL-SLEEP-F + .BYTE 0 + .ENDT + +T?MIRROR-HALL-3:: .TABLE ; TABLE FOR OBJECT MIRROR-HALL-3 + .STRL "Hall of Mirrors Three" + .PROP 1,P?EAST + .BYTE MIRROR-HALL-4 + .PROP 1,P?WEST + .BYTE MIRROR-HALL-2 + .PROP 4,P?GLOBAL + .BYTE ADVENTURER-LG + .BYTE MIRROR + .BYTE MIRROR-STUFF + .BYTE SHARDS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MIRROR-HALL-F + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 3 + .BYTE 0 + .ENDT + +T?DISPEL-SCROLL:: .TABLE ; TABLE FOR OBJECT DISPEL-SCROLL + .STRL "brittle scroll" + .PROP 6,P?SYNONYM + W?SCROLL + W?PAPER + W?PARCHMENT + .PROP 2,P?LDESC ; STRING PROPERTY + STR?101 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 3,P?ADJECTIVE + .BYTE A?OLD + .BYTE A?BRITTLE + .BYTE A?ROLLED + .BYTE 0 + .ENDT + +T?HEAP:: .TABLE ; TABLE FOR OBJECT HEAP + .STRL "heap of garbage" + .PROP 4,P?SYNONYM + W?HEAP + W?FOOD + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + HEAP-F + .PROP 3,P?ADJECTIVE + .BYTE A?GARBAGE + .BYTE A?ROTTED + .BYTE A?ROTTIN + .BYTE 0 + .ENDT + +T?LEGEND-TWO:: .TABLE ; TABLE FOR OBJECT LEGEND-TWO + .STRL "Legend of the Great Implementers" + .PROP 4,P?SYNONYM + W?LEGEND + W?IMPLEMENTERS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LEGEND-TWO-F + .PROP 1,P?ADJECTIVE + .BYTE A?GREAT + .PROP 2,P?TEXT ; STRING PROPERTY + STR?78 + .BYTE 0 + .ENDT + +T?ROAD:: .TABLE ; TABLE FOR OBJECT ROAD + .STRL "road" + .PROP 6,P?SYNONYM + W?ROAD + W?PATH + W?TRAIL + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ROAD-F + .PROP 4,P?ADJECTIVE + .BYTE A?WINDING + .BYTE A?LONG + .BYTE A?DUSTY + .BYTE A?DRY + .BYTE 0 + .ENDT + +T?SKY:: .TABLE ; TABLE FOR OBJECT SKY + .STRL "sky" + .PROP 4,P?SYNONYM + W?SKY + W?STARS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SKY-F + .BYTE 0 + .ENDT + +T?GLOBAL-OBJECTS:: .TABLE ; TABLE FOR OBJECT GLOBAL-OBJECTS + .STRL "" + .BYTE 0 + .ENDT + +T?WEST-HALL:: .TABLE ; TABLE FOR OBJECT WEST-HALL + .STRL "West Hall" + .PROP 1,P?NORTH + .BYTE INSIDE-GATE + .PROP 1,P?SOUTH + .BYTE SW-TOWER + .PROP 1,P?GLOBAL + .BYTE ARCH + .PROP 2,P?LDESC ; STRING PROPERTY + STR?170 + .BYTE 0 + .ENDT + +T?FLY-SPELL:: .TABLE ; TABLE FOR OBJECT FLY-SPELL + .STRL "izyuk spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?IZYUK + .PROP 2,P?TEXT ; STRING PROPERTY + STR?110 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?IT:: .TABLE ; TABLE FOR OBJECT IT + .STRL "random object" + .PROP 8,P?SYNONYM + W?IT + W?THAT + W?HER + W?HIM + .BYTE 0 + .ENDT + +T?WRITE-MAGIC-SPELL:: .TABLE ; TABLE FOR OBJECT WRITE-MAGIC-SPELL + .STRL "gnusto spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?GNUSTO + .PROP 2,P?TEXT ; STRING PROPERTY + STR?90 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?QUENCH-SPELL:: .TABLE ; TABLE FOR OBJECT QUENCH-SPELL + .STRL "gondar spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?GONDAR + .PROP 2,P?TEXT ; STRING PROPERTY + STR?97 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?WALLS:: .TABLE ; TABLE FOR OBJECT WALLS + .STRL "castle wall" + .PROP 6,P?SYNONYM + W?WALL + W?WALLS + W?CASTLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + WALLS-F + .PROP 1,P?ADJECTIVE + .BYTE A?TRANSLUCENT + .BYTE 0 + .ENDT + +T?BLACK-PASSAGE:: .TABLE ; TABLE FOR OBJECT BLACK-PASSAGE + .STRL "black passage" + .PROP 2,P?SYNONYM + W?PASSAGE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BLACK-PASSAGE-F + .PROP 1,P?ADJECTIVE + .BYTE A?BLACK + .BYTE 0 + .ENDT + +T?TALK-TO-ANIMALS-SPELL:: .TABLE ; TABLE FOR OBJECT TALK-TO-ANIMALS-SPELL + .STRL "nitfol spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?NITFOL + .PROP 2,P?TEXT ; STRING PROPERTY + STR?98 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?SHACK-OVEN:: .TABLE ; TABLE FOR OBJECT SHACK-OVEN + .STRL "oven" + .PROP 4,P?SYNONYM + W?OVEN + W?FIXTURE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 20 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SHACK-OVEN-F + .BYTE 0 + .ENDT + +T?POINT-M:: .TABLE ; TABLE FOR OBJECT POINT-M + .STRL "point M" + .PROP 2,P?SYNONYM + W?M + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 6 + .BYTE 0 + .ENDT + +T?TOWER-N:: .TABLE ; TABLE FOR OBJECT TOWER-N + .STRL "Cell" + .PROP 5,P?SOUTH ; DOOR EXIT + .BYTE TEMPLE ; ROOM NAME + .BYTE TOWER-N-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 3,P?GLOBAL + .BYTE TOWER-N-DOOR + .BYTE WINDOW + .BYTE GUARDS + .PROP 2,P?LDESC ; STRING PROPERTY + STR?216 + .PROP 4,P?PSEUDO + W?CELL + CELL-PSEUDO + .PROP 2,P?TEXT ; STRING PROPERTY + STR?217 + .BYTE 0 + .ENDT + +T?PEDESTAL:: .TABLE ; TABLE FOR OBJECT PEDESTAL + .STRL "pedestal" + .PROP 2,P?SYNONYM + W?PEDESTAL + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PEDESTAL-F + .BYTE 0 + .ENDT + +T?SHADY-BROOK:: .TABLE ; TABLE FOR OBJECT SHADY-BROOK + .STRL "Shady Brook" + .PROP 1,P?SW + .BYTE TRAIL-HEAD + .PROP 4,P?GLOBAL + .BYTE GLOBAL-WATER + .BYTE HILLS + .BYTE MOUNTAIN + .BYTE UNDERGROWTH + .PROP 2,P?LDESC ; STRING PROPERTY + STR?299 + .BYTE 0 + .ENDT + +T?MACHINERY:: .TABLE ; TABLE FOR OBJECT MACHINERY + .STRL "machinery" + .PROP 2,P?SYNONYM + W?MACHINE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MACHINERY-F + .BYTE 0 + .ENDT + +T?POINT-K:: .TABLE ; TABLE FOR OBJECT POINT-K + .STRL "point K" + .PROP 2,P?SYNONYM + W?K + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 3 + .BYTE 0 + .ENDT + +T?BEACH:: .TABLE ; TABLE FOR OBJECT BEACH + .STRL "Beach" + .PROP 1,P?NW + .BYTE MEADOW + .PROP 4,P?GLOBAL + .BYTE MEADOW-OBJ + .BYTE BEACH-OBJ + .BYTE SEA + .BYTE GLOBAL-WATER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?288 + .PROP 8,P?PSEUDO + W?WAVES + WAVES-F + W?ROCKS + SEA-STUFF-F + .BYTE 0 + .ENDT + +T?OVEN:: .TABLE ; TABLE FOR OBJECT OVEN + .STRL "oven" + .PROP 2,P?SYNONYM + W?OVEN + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + OVEN-F + .BYTE 0 + .ENDT + +T?BATTERED-LANTERN:: .TABLE ; TABLE FOR OBJECT BATTERED-LANTERN + .STRL "battered lantern" + .PROP 4,P?SYNONYM + W?LANTERN + W?LAMP + .PROP 2,P?FDESC ; STRING PROPERTY + STR?304 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BATTERED-LANTERN-F + .PROP 1,P?ADJECTIVE + .BYTE A?BATTERED + .BYTE 0 + .ENDT + +T?FOREST-1:: .TABLE ; TABLE FOR OBJECT FOREST-1 + .STRL "Forest" + .PROP 2,P?NORTH ; STRING PROPERTY + STR?191 + .PROP 2,P?NE ; STRING PROPERTY + STR?191 + .PROP 1,P?EAST + .BYTE FOREST-2 + .PROP 2,P?SE ; STRING PROPERTY + STR?191 + .PROP 1,P?SOUTH + .BYTE NORTH-GATE + .PROP 2,P?SW ; STRING PROPERTY + STR?191 + .PROP 2,P?WEST ; STRING PROPERTY + STR?191 + .PROP 2,P?NW ; STRING PROPERTY + STR?191 + .PROP 3,P?GLOBAL + .BYTE NORTH-GATE-OBJ + .BYTE FOREST + .BYTE TREES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?190 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + FOREST-1-F + .BYTE 0 + .ENDT + +T?SHACK-EAST:: .TABLE ; TABLE FOR OBJECT SHACK-EAST + .STRL "Trail" + .PROP 1,P?SE + .BYTE TRAIL-HEAD + .PROP 1,P?SW + .BYTE SHACK-ROOM + .PROP 2,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?300 + .BYTE 0 + .ENDT + +T?GLOBAL-ADVENTURER:: .TABLE ; TABLE FOR OBJECT GLOBAL-ADVENTURER + .STRL "adventurer" + .PROP 2,P?SYNONYM + W?ADVENTURER + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBAL-ADVENTURER-F + .BYTE 0 + .ENDT + +T?SEA-STUFF:: .TABLE ; TABLE FOR OBJECT SEA-STUFF + .STRL "flotsam" + .PROP 8,P?SYNONYM + W?SEAWEED + W?FLOTSAM + W?SHELLS + W?JETSAM + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SEA-STUFF-F + .PROP 2,P?ADJECTIVE + .BYTE A?DEAD + .BYTE A?BROKEN + .BYTE 0 + .ENDT + +T?NORTH-CELL:: .TABLE ; TABLE FOR OBJECT NORTH-CELL + .STRL "Cell" + .PROP 4,P?EAST ; CONDITIONAL EXIT + .BYTE SECRET-PASSAGE ; ROOM NAME + .BYTE NORTH-BLOCK-FLAG ; FLAG NAME + 0 ; NO STRING + .PROP 5,P?SOUTH ; DOOR EXIT + .BYTE DUNGEON ; ROOM NAME + .BYTE NORTH-CELL-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 5,P?OUT ; DOOR EXIT + .BYTE DUNGEON ; ROOM NAME + .BYTE NORTH-CELL-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 3,P?GLOBAL + .BYTE NORTH-CELL-DOOR + .BYTE STONE-WALL + .BYTE NORTH-BLOCK + .PROP 4,P?PSEUDO + W?CELL + CELL-F + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + NORTH-CELL-F + .BYTE 0 + .ENDT + +T?STATUE:: .TABLE ; TABLE FOR OBJECT STATUE + .STRL "statue" + .PROP 6,P?SYNONYM + W?STATUE + W?TALONS + W?FANGS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + STATUE-F + .PROP 3,P?ADJECTIVE + .BYTE A?RAZOR-SHARP + .BYTE A?DRIPPING + .BYTE A?ENORMOUS + .BYTE 0 + .ENDT + +T?WEST-CASTLE:: .TABLE ; TABLE FOR OBJECT WEST-CASTLE + .STRL "Outside Gate" + .PROP 5,P?EAST ; DOOR EXIT + .BYTE INSIDE-GATE ; ROOM NAME + .BYTE IRON-GATE ; DOOR NAME + STR?294 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?WEST + .BYTE WESTERN-ROAD + .PROP 5,P?IN ; DOOR EXIT + .BYTE INSIDE-GATE ; ROOM NAME + .BYTE IRON-GATE ; DOOR NAME + STR?294 + .BYTE 0 ; STRING TO PRINT + .PROP 2,P?GLOBAL + .BYTE IRON-GATE + .BYTE IRON-GATE-CHAINS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + WEST-CASTLE-F + .BYTE 0 + .ENDT + +T?TRAIL-HEAD:: .TABLE ; TABLE FOR OBJECT TRAIL-HEAD + .STRL "Trail Head" + .PROP 1,P?NE + .BYTE SHADY-BROOK + .PROP 1,P?SE + .BYTE EAST-FORK + .PROP 1,P?NW + .BYTE SHACK-EAST + .PROP 3,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .BYTE UNDERGROWTH + .PROP 2,P?LDESC ; STRING PROPERTY + STR?298 + .BYTE 0 + .ENDT + +T?KNOT-ROOM:: .TABLE ; TABLE FOR OBJECT KNOT-ROOM + .STRL "Closet" + .PROP 1,P?NORTH + .BYTE COURTYARD-1 + .PROP 1,P?SOUTH + .BYTE DIM-DESCENT + .PROP 2,P?LDESC ; STRING PROPERTY + STR?125 + .BYTE 0 + .ENDT + +T?T-G:: .TABLE ; TABLE FOR OBJECT T-G + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 7 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?35 + .BYTE 0 + .ENDT + +T?LANDING:: .TABLE ; TABLE FOR OBJECT LANDING + .STRL "Landing" + .PROP 3,P?EAST + .WORD LANDING-EXIT-F + .BYTE 0 + .PROP 1,P?WEST + .BYTE JUNCTION + .PROP 2,P?LDESC ; STRING PROPERTY + STR?79 + .PROP 4,P?PSEUDO + W?ASHES + ASHES-PSEUDO + .BYTE 0 + .ENDT + +T?PORTRAITS:: .TABLE ; TABLE FOR OBJECT PORTRAITS + .STRL "portraits of unknown persons" + .PROP 8,P?SYNONYM + W?PORTRAIT + W?PERSON + W?CANVAS + W?PAINTING + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PORTRAITS-F + .PROP 1,P?ADJECTIVE + .BYTE A?UNKNOWN + .BYTE 0 + .ENDT + +T?SILVER-SPOON:: .TABLE ; TABLE FOR OBJECT SILVER-SPOON + .STRL "worn silver spoon" + .PROP 2,P?SYNONYM + W?SPOON + .PROP 2,P?FDESC ; STRING PROPERTY + STR?178 + .PROP 2,P?ADJECTIVE + .BYTE A?WORN + .BYTE A?SILVER + .BYTE 0 + .ENDT + +T?RUSTY-GATE:: .TABLE ; TABLE FOR OBJECT RUSTY-GATE + .STRL "rusty gate" + .PROP 2,P?SYNONYM + W?GATE + .PROP 2,P?ADJECTIVE + .BYTE A?RUSTY + .BYTE A?SMALL + .BYTE 0 + .ENDT + +T?GUARDS:: .TABLE ; TABLE FOR OBJECT GUARDS + .STRL "guards" + .PROP 8,P?SYNONYM + W?GUARD + W?GUARDS + W?SHAPE + W?SHAPES + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GUARDS-F + .PROP 2,P?ADJECTIVE + .BYTE A?HIDEOUS + .BYTE A?HAIRY + .BYTE 0 + .ENDT + +T?GLOBAL-HOLE:: .TABLE ; TABLE FOR OBJECT GLOBAL-HOLE + .STRL "hole" + .PROP 2,P?SYNONYM + W?HOLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBAL-HOLE-F + .BYTE 0 + .ENDT + +T?GLIMPSE-2:: .TABLE ; TABLE FOR OBJECT GLIMPSE-2 + .STRL "glimpse" + .PROP 8,P?SYNONYM + W?MIST + W?OUTLINE + W?BLUEBOTTLE + W?FLY + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLIMPSE-F + .PROP 1,P?ADJECTIVE + .BYTE A?THIN + .BYTE 0 + .ENDT + +T?EGG:: .TABLE ; TABLE FOR OBJECT EGG + .STRL "beautiful, ornamented egg" + .PROP 2,P?SYNONYM + W?EGG + .PROP 2,P?FDESC ; STRING PROPERTY + STR?220 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 8 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 10 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + EGG-F + .PROP 4,P?ADJECTIVE + .BYTE A?BEAUTIFUL + .BYTE A?JEWELLED + .BYTE A?FABERGE + .BYTE A?ORNAME + .BYTE 0 + .ENDT + +T?SEA:: .TABLE ; TABLE FOR OBJECT SEA + .STRL "sea" + .PROP 4,P?SYNONYM + W?OCEAN + W?SEA + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SEA-F + .PROP 1,P?ADJECTIVE + .BYTE A?MISTY + .BYTE 0 + .ENDT + +T?PORTRAIT-NICHE:: .TABLE ; TABLE FOR OBJECT PORTRAIT-NICHE + .STRL "niche" + .PROP 2,P?SYNONYM + W?NICHE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 30 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PORTRAIT-NICHE-F + .PROP 1,P?ADJECTIVE + .BYTE A?SMALL + .BYTE 0 + .ENDT + +T?BEDPOST-BUTTON:: .TABLE ; TABLE FOR OBJECT BEDPOST-BUTTON + .STRL "ornate button" + .PROP 6,P?SYNONYM + W?BUTTON + W?CARVING + W?ORNAME + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BEDPOST-BUTTON-F + .PROP 2,P?ADJECTIVE + .BYTE A?ORNATE + .BYTE A?WOODEN + .BYTE 0 + .ENDT + +T?COURTYARD-5:: .TABLE ; TABLE FOR OBJECT COURTYARD-5 + .STRL "Courtyard" + .PROP 1,P?SE + .BYTE COURTYARD-7 + .PROP 2,P?SOUTH ; STRING PROPERTY + STR?210 + .PROP 1,P?SW + .BYTE COURTYARD-3 + .PROP 1,P?WEST + .BYTE COURTYARD-2 + .PROP 4,P?GLOBAL + .BYTE COURTYARD + .BYTE LAWN + .BYTE TEMPLE-OBJ + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?209 + .BYTE 0 + .ENDT + +T?CHEAT-DEATH-SCROLL:: .TABLE ; TABLE FOR OBJECT CHEAT-DEATH-SCROLL + .STRL "black scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?BLACK + .BYTE 0 + .ENDT + +T?LILY-PAD:: .TABLE ; TABLE FOR OBJECT LILY-PAD + .STRL "lily pad" + .PROP 6,P?SYNONYM + W?PAD + W?PADS + W?LILIES + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LILY-PAD-F + .PROP 1,P?ADJECTIVE + .BYTE A?LILY + .BYTE 0 + .ENDT + +T?T-C:: .TABLE ; TABLE FOR OBJECT T-C + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?31 + .BYTE 0 + .ENDT + +T?GLOBAL-CRONE:: .TABLE ; TABLE FOR OBJECT GLOBAL-CRONE + .STRL "creature swathed in rags" + .PROP 2,P?SYNONYM + W?CRONE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBAL-CRONE-F + .BYTE 0 + .ENDT + +T?MAPS:: .TABLE ; TABLE FOR OBJECT MAPS + .STRL "maps" + .PROP 6,P?SYNONYM + W?MAPS + W?WALL + W?WALLS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MAPS-F + .PROP 1,P?ADJECTIVE + .BYTE A?ANCIENT + .BYTE 0 + .ENDT + +T?TEMPLE:: .TABLE ; TABLE FOR OBJECT TEMPLE + .STRL "Temple" + .PROP 5,P?NORTH ; DOOR EXIT + .BYTE TOWER-N ; ROOM NAME + .BYTE TOWER-N-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?EAST + .BYTE COURTYARD-7 + .PROP 5,P?SOUTH ; DOOR EXIT + .BYTE TOWER-S ; ROOM NAME + .BYTE TOWER-S-DOOR ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?WEST + .BYTE COURTYARD-3 + .PROP 1,P?UP + .BYTE ALTAR + .PROP 5,P?GLOBAL + .BYTE STAIRS + .BYTE TOWER-N-DOOR + .BYTE TOWER-S-DOOR + .BYTE STATUE + .BYTE TEMPLE-OBJ + .PROP 2,P?LDESC ; STRING PROPERTY + STR?214 + .PROP 4,P?PSEUDO + W?ALTAR + ALTAR-PSEUDO + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TEMPLE-F + .BYTE 0 + .ENDT + +T?JEWEL-ROOM:: .TABLE ; TABLE FOR OBJECT JEWEL-ROOM + .STRL "Jewel Room" + .PROP 1,P?DOWN + .BYTE NW-TOWER + .PROP 3,P?GLOBAL + .BYTE STAIRS + .BYTE MOUNTAIN + .BYTE WINDOW + .PROP 2,P?LDESC ; STRING PROPERTY + STR?218 + .PROP 2,P?TEXT ; STRING PROPERTY + STR?219 + .BYTE 0 + .ENDT + +T?RAT-NEST:: .TABLE ; TABLE FOR OBJECT RAT-NEST + .STRL "rat nest" + .PROP 2,P?SYNONYM + W?NEST + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + RAT-NEST-F + .PROP 1,P?ADJECTIVE + .BYTE A?RAT + .BYTE 0 + .ENDT + +T?MIRROR-HALL-2:: .TABLE ; TABLE FOR OBJECT MIRROR-HALL-2 + .STRL "Hall of Mirrors Two" + .PROP 1,P?EAST + .BYTE MIRROR-HALL-3 + .PROP 1,P?WEST + .BYTE MIRROR-HALL-1 + .PROP 4,P?GLOBAL + .BYTE ADVENTURER-LG + .BYTE MIRROR + .BYTE MIRROR-STUFF + .BYTE SHARDS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MIRROR-HALL-F + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 2 + .BYTE 0 + .ENDT + +T?MIRROR:: .TABLE ; TABLE FOR OBJECT MIRROR + .STRL "mirror" + .PROP 2,P?SYNONYM + W?MIRROR + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MIRROR-F + .BYTE 0 + .ENDT + +T?TOWER:: .TABLE ; TABLE FOR OBJECT TOWER + .STRL "tower" + .PROP 2,P?SYNONYM + W?TOWER + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TOWER-F + .BYTE 0 + .ENDT + +T?MONSTERS-3:: .TABLE ; TABLE FOR OBJECT MONSTERS-3 + .STRL "spear" + .PROP 6,P?SYNONYM + W?SPEAR + W?SPEARS + W?TONGUE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DOOR-ILLUSION-F + .BYTE 0 + .ENDT + +T?GALLERY:: .TABLE ; TABLE FOR OBJECT GALLERY + .STRL "Gallery" + .PROP 1,P?EAST + .BYTE SOUTH-GATE + .PROP 1,P?WEST + .BYTE DIM-DESCENT + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + GALLERY-A + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GALLERY-F + .BYTE 0 + .ENDT + +T?MEADOW-OBJ:: .TABLE ; TABLE FOR OBJECT MEADOW-OBJ + .STRL "meadow" + .PROP 2,P?SYNONYM + W?MEADOW + .BYTE 0 + .ENDT + +T?MONSTERS-2:: .TABLE ; TABLE FOR OBJECT MONSTERS-2 + .STRL "iron chain" + .PROP 4,P?SYNONYM + W?CHAIN + W?CHAINS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DOOR-ILLUSION-F + .PROP 4,P?ADJECTIVE + .BYTE A?SIX-INCH + .BYTE A?THICK + .BYTE A?IRON + .BYTE A?HEAVY + .BYTE 0 + .ENDT + +T?MONSTERS-1:: .TABLE ; TABLE FOR OBJECT MONSTERS-1 + .STRL "monster" + .PROP 8,P?SYNONYM + W?MONSTER + W?TENTACLE + W?GARGOYLE + W?DRAGON + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DOOR-ILLUSION-F + .PROP 3,P?ADJECTIVE + .BYTE A?FIVE-HEADED + .BYTE A?GROPING + .BYTE A?SLIMY + .BYTE 0 + .ENDT + +T?BED:: .TABLE ; TABLE FOR OBJECT BED + .STRL "fourposter feather bed" + .PROP 2,P?SYNONYM + W?BED + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BED-F + .PROP 2,P?ADJECTIVE + .BYTE A?FEATHER + .BYTE A?FOURPOSTER + .BYTE 0 + .ENDT + +T?CHARM-SCROLL:: .TABLE ; TABLE FOR OBJECT CHARM-SCROLL + .STRL "gold leaf scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?LDESC ; STRING PROPERTY + STR?94 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 2,P?ADJECTIVE + .BYTE A?GOLD + .BYTE A?LEAF + .BYTE 0 + .ENDT + +T?GLOBAL-ROOM:: .TABLE ; TABLE FOR OBJECT GLOBAL-ROOM + .STRL "room" + .PROP 8,P?SYNONYM + W?ROOM + W?PLACE + W?AREA + W?HERE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBAL-ROOM-F + .BYTE 0 + .ENDT + +T?EGG-KNOB-4:: .TABLE ; TABLE FOR OBJECT EGG-KNOB-4 + .STRL "golden crank" + .PROP 2,P?SYNONYM + W?CRANK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + EGG-KNOB-F + .PROP 1,P?ADJECTIVE + .BYTE A?GOLDEN + .PROP 2,P?TEXT ; STRING PROPERTY + STR?224 + .BYTE 0 + .ENDT + +T?BANQUET-HALL:: .TABLE ; TABLE FOR OBJECT BANQUET-HALL + .STRL "Banquet Hall" + .PROP 1,P?NORTH + .BYTE JUNCTION + .PROP 1,P?EAST + .BYTE KITCHEN + .PROP 1,P?SOUTH + .BYTE EAST-HALL + .PROP 1,P?GLOBAL + .BYTE VOICES + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + ADV-VS-GANG + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GUARD-WARNING-F + .BYTE 0 + .ENDT + +T?COMPARTMENT:: .TABLE ; TABLE FOR OBJECT COMPARTMENT + .STRL "compartment" + .PROP 2,P?SYNONYM + W?COMPARTMENT + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + COMPARTMENT-F + .PROP 1,P?ADJECTIVE + .BYTE A?SMALL + .BYTE 0 + .ENDT + +T?EGG-KNOB-5:: .TABLE ; TABLE FOR OBJECT EGG-KNOB-5 + .STRL "diamond-studded button" + .PROP 2,P?SYNONYM + W?BUTTON + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + EGG-KNOB-F + .PROP 1,P?ADJECTIVE + .BYTE A?DIAMOND + .PROP 2,P?TEXT ; STRING PROPERTY + STR?225 + .BYTE 0 + .ENDT + +T?HAIRPIN-LOOP:: .TABLE ; TABLE FOR OBJECT HAIRPIN-LOOP + .STRL "Loop" + .PROP 1,P?NE + .BYTE VILLAGE + .PROP 1,P?NW + .BYTE DUSTY-ROAD + .PROP 2,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?324 + .BYTE 0 + .ENDT + +T?HASTE-SPELL:: .TABLE ; TABLE FOR OBJECT HASTE-SPELL + .STRL "exex spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?EXEX + .PROP 2,P?TEXT ; STRING PROPERTY + STR?100 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?COURTYARD-4:: .TABLE ; TABLE FOR OBJECT COURTYARD-4 + .STRL "Courtyard" + .PROP 1,P?NORTH + .BYTE COURTYARD-3 + .PROP 1,P?NE + .BYTE TEMPLE + .PROP 1,P?EAST + .BYTE COURTYARD-6 + .PROP 1,P?WEST + .BYTE COURTYARD-1 + .PROP 1,P?NW + .BYTE COURTYARD-1 + .PROP 4,P?GLOBAL + .BYTE COURTYARD + .BYTE LAWN + .BYTE TEMPLE-OBJ + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?207 + .PROP 2,P?MUNGDESC ; STRING PROPERTY + STR?208 + .BYTE 0 + .ENDT + +T?MEADOW:: .TABLE ; TABLE FOR OBJECT MEADOW + .STRL "Meadow" + .PROP 5,P?NORTH ; DOOR EXIT + .BYTE SOUTH-GATE ; ROOM NAME + .BYTE RUSTY-GATE ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 2,P?NE ; STRING PROPERTY + STR?287 + .PROP 2,P?EAST ; STRING PROPERTY + STR?287 + .PROP 1,P?SE + .BYTE BEACH + .PROP 2,P?SOUTH ; STRING PROPERTY + STR?287 + .PROP 2,P?SW ; STRING PROPERTY + STR?287 + .PROP 2,P?WEST ; STRING PROPERTY + STR?287 + .PROP 2,P?NW ; STRING PROPERTY + STR?287 + .PROP 4,P?GLOBAL + .BYTE RUSTY-GATE + .BYTE MEADOW-OBJ + .BYTE BEACH-OBJ + .BYTE SEA + .PROP 2,P?LDESC ; STRING PROPERTY + STR?286 + .BYTE 0 + .ENDT + +T?SPELL-BOOK:: .TABLE ; TABLE FOR OBJECT SPELL-BOOK + .STRL "spell book" + .PROP 2,P?SYNONYM + W?BOOK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-BOOK-F + .PROP 1,P?ADJECTIVE + .BYTE A?SPELL + .BYTE 0 + .ENDT + +T?ENGINE-ROOM:: .TABLE ; TABLE FOR OBJECT ENGINE-ROOM + .STRL "Engine Room" + .PROP 3,P?SE + .WORD CROSS-ENGINE-ROOM + .BYTE 0 + .PROP 1,P?DOWN + .BYTE SE-TOWER + .PROP 2,P?GLOBAL + .BYTE MACHINERY + .BYTE VOICES + .PROP 8,P?PSEUDO + W?HAMMER + HAMMER-F + W?SPEARS + HAMMER-F + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ENGINE-ROOM-F + .BYTE 0 + .ENDT + +T?LIBRARY:: .TABLE ; TABLE FOR OBJECT LIBRARY + .STRL "Library" + .PROP 1,P?NORTH + .BYTE NORTH-GATE + .PROP 1,P?SOUTH + .BYTE JUNCTION + .PROP 1,P?GLOBAL + .BYTE VOICES + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + ADV-VS-GANG + .PROP 2,P?LDESC ; STRING PROPERTY + STR?186 + .PROP 8,P?PSEUDO + W?ASHES + ASHES-PSEUDO + W?TUBES + TUBES-PSEUDO + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GUARD-WARNING-F + .BYTE 0 + .ENDT + +T?TOWER-N-DOOR:: .TABLE ; TABLE FOR OBJECT TOWER-N-DOOR + .STRL "north cell door" + .PROP 2,P?SYNONYM + W?DOOR + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TOWER-DOOR-F + .PROP 3,P?ADJECTIVE + .BYTE A?NORTH + .BYTE A?CELL + .BYTE A?PRISON + .BYTE 0 + .ENDT + +T?EGG-KNOB-1:: .TABLE ; TABLE FOR OBJECT EGG-KNOB-1 + .STRL "lapis handle" + .PROP 2,P?SYNONYM + W?HANDLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + EGG-KNOB-F + .PROP 1,P?ADJECTIVE + .BYTE A?LAPIS + .PROP 2,P?TEXT ; STRING PROPERTY + STR?221 + .BYTE 0 + .ENDT + +T?EGG-KNOB-2:: .TABLE ; TABLE FOR OBJECT EGG-KNOB-2 + .STRL "emerald knob" + .PROP 2,P?SYNONYM + W?KNOB + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + EGG-KNOB-F + .PROP 1,P?ADJECTIVE + .BYTE A?EMERALD + .PROP 2,P?TEXT ; STRING PROPERTY + STR?222 + .BYTE 0 + .ENDT + +T?LEGEND-ONE:: .TABLE ; TABLE FOR OBJECT LEGEND-ONE + .STRL "Legend of the Unseen Terror" + .PROP 4,P?SYNONYM + W?LEGEND + W?TERROR + .PROP 1,P?GLOBAL + .BYTE TERROR + .PROP 1,P?ADJECTIVE + .BYTE A?UNSEEN + .PROP 2,P?TEXT ; STRING PROPERTY + STR?77 + .BYTE 0 + .ENDT + +T?EGG-KNOB-3:: .TABLE ; TABLE FOR OBJECT EGG-KNOB-3 + .STRL "silver slide" + .PROP 2,P?SYNONYM + W?SLIDE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + EGG-KNOB-F + .PROP 1,P?ADJECTIVE + .BYTE A?SILVER + .PROP 2,P?TEXT ; STRING PROPERTY + STR?223 + .BYTE 0 + .ENDT + +T?DOOR-REALITY:: .TABLE ; TABLE FOR OBJECT DOOR-REALITY + .STRL "simple wooden door" + .PROP 2,P?SYNONYM + W?DOOR + .PROP 2,P?ADJECTIVE + .BYTE A?SIMPLE + .BYTE A?WOODEN + .BYTE 0 + .ENDT + +T?BANQUET-ILLUSION:: .TABLE ; TABLE FOR OBJECT BANQUET-ILLUSION + .STRL "festive decorations" + .PROP 2,P?SYNONYM + W?DECORATIONS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BANQUET-STUFF-F + .PROP 1,P?ADJECTIVE + .BYTE A?FESTIVE + .BYTE 0 + .ENDT + +T?QUENCH-SCROLL:: .TABLE ; TABLE FOR OBJECT QUENCH-SCROLL + .STRL "frayed scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?FRAYED + .BYTE 0 + .ENDT + +T?PROTECTION-SPELL:: .TABLE ; TABLE FOR OBJECT PROTECTION-SPELL + .STRL "melbor spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?MELBOR + .PROP 2,P?TEXT ; STRING PROPERTY + STR?103 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?WARLOCK-TOWER:: .TABLE ; TABLE FOR OBJECT WARLOCK-TOWER + .STRL "Warlock's Tower" + .PROP 2,P?WEST ; STRING PROPERTY + STR?83 + .PROP 2,P?DOWN ; STRING PROPERTY + STR?83 + .PROP 2,P?LDESC ; STRING PROPERTY + STR?82 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + WARLOCK-TOWER-F + .BYTE 0 + .ENDT + +T?FOUNDATION:: .TABLE ; TABLE FOR OBJECT FOUNDATION + .STRL "foundation" + .PROP 4,P?SYNONYM + W?FOUNDATION + W?HOUSE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + FOUNDATION-F + .PROP 4,P?ADJECTIVE + .BYTE A?STONE + .BYTE A?RUINED + .BYTE A?LINGOLF + .BYTE A?OLD + .BYTE 0 + .ENDT + +T?SUMMON-SPELL:: .TABLE ; TABLE FOR OBJECT SUMMON-SPELL + .STRL "zifmia spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?ZIFMIA + .PROP 2,P?TEXT ; STRING PROPERTY + STR?93 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?TEMPLE-OBJ:: .TABLE ; TABLE FOR OBJECT TEMPLE-OBJ + .STRL "temple" + .PROP 2,P?SYNONYM + W?TEMPLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TEMPLE-OBJ-F + .BYTE 0 + .ENDT + +T?ENDLESS-STAIR:: .TABLE ; TABLE FOR OBJECT ENDLESS-STAIR + .STRL "Winding Stair" + .PROP 3,P?WEST + .WORD ENDLESS-EXIT-F + .BYTE 0 + .PROP 3,P?UP + .WORD ENDLESS-UP + .BYTE 0 + .PROP 3,P?DOWN + .WORD ENDLESS-DOWN + .BYTE 0 + .PROP 1,P?GLOBAL + .BYTE STAIRS + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + ADVENTURER-DROPS-OUT + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ENDLESS-STAIR-F + .BYTE 0 + .ENDT + +T?PURLOINED-ROOM:: .TABLE ; TABLE FOR OBJECT PURLOINED-ROOM + .STRL "Guarded Door" + .PROP 5,P?NORTH ; DOOR EXIT + .BYTE MAP-ROOM ; ROOM NAME + .BYTE DOOR-REALITY ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?WEST + .BYTE NORTH-GATE + .PROP 5,P?UP ; DOOR EXIT + .BYTE MAP-ROOM ; ROOM NAME + .BYTE DOOR-REALITY ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 2,P?GLOBAL + .BYTE DOOR-ILLUSION + .BYTE DOOR-REALITY + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + PURLOINED-ROOM-A + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PURLOINED-ROOM-F + .BYTE 0 + .ENDT + +T?COURTYARD-7:: .TABLE ; TABLE FOR OBJECT COURTYARD-7 + .STRL "Courtyard" + .PROP 1,P?EAST + .BYTE JUNCTION + .PROP 1,P?SW + .BYTE COURTYARD-6 + .PROP 1,P?WEST + .BYTE TEMPLE + .PROP 1,P?NW + .BYTE COURTYARD-5 + .PROP 4,P?GLOBAL + .BYTE COURTYARD + .BYTE LAWN + .BYTE TEMPLE-OBJ + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?212 + .PROP 2,P?MUNGDESC ; STRING PROPERTY + STR?213 + .BYTE 0 + .ENDT + +T?T-F:: .TABLE ; TABLE FOR OBJECT T-F + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 6 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?34 + .BYTE 0 + .ENDT + +T?BEDROOM:: .TABLE ; TABLE FOR OBJECT BEDROOM + .STRL "Bedroom" + .PROP 1,P?DOWN + .BYTE SW-TOWER + .PROP 3,P?GLOBAL + .BYTE STAIRS + .BYTE WINDOW + .BYTE HILLS + .PROP 2,P?LDESC ; STRING PROPERTY + STR?172 + .PROP 2,P?TEXT ; STRING PROPERTY + STR?173 + .BYTE 0 + .ENDT + +T?SHACK-OBJ:: .TABLE ; TABLE FOR OBJECT SHACK-OBJ + .STRL "wooden shack" + .PROP 2,P?SYNONYM + W?SHACK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SHACK-OBJ-F + .PROP 2,P?ADJECTIVE + .BYTE A?OLD + .BYTE A?WOODEN + .BYTE 0 + .ENDT + +T?GLIMPSE-1:: .TABLE ; TABLE FOR OBJECT GLIMPSE-1 + .STRL "glimpse" + .PROP 8,P?SYNONYM + W?DOG + W?RAT + W?BATS + W?BAT + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLIMPSE-F + .PROP 2,P?ADJECTIVE + .BYTE A?FERAL + .BYTE A?GAUNT + .BYTE 0 + .ENDT + +T?FROBOZZ-PORTRAIT:: .TABLE ; TABLE FOR OBJECT FROBOZZ-PORTRAIT + .STRL "Frobozz portrait" + .PROP 2,P?SYNONYM + W?PORTRAIT + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + FROBOZZ-PORTRAIT-F + .PROP 2,P?ADJECTIVE + .BYTE A?WIZARD + .BYTE A?FROBOZZ + .BYTE 0 + .ENDT + +T?STAIRS:: .TABLE ; TABLE FOR OBJECT STAIRS + .STRL "stairs" + .PROP 8,P?SYNONYM + W?STAIRS + W?STEPS + W?STAIR + W?STAIRWAY + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + STAIRS-F + .PROP 2,P?ADJECTIVE + .BYTE A?SPIRAL + .BYTE A?WINDING + .BYTE 0 + .ENDT + +T?MAGIC-KNIFE:: .TABLE ; TABLE FOR OBJECT MAGIC-KNIFE + .STRL "sacrificial dagger" + .PROP 6,P?SYNONYM + W?KNIFE + W?DAGGER + W?BLADE + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 10 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MAGIC-KNIFE-F + .PROP 2,P?ADJECTIVE + .BYTE A?MAGIC + .BYTE A?SACRIFICIAL + .BYTE 0 + .ENDT + +T?LIGHTED-PORTRAIT:: .TABLE ; TABLE FOR OBJECT LIGHTED-PORTRAIT + .STRL "lighted portrait" + .PROP 6,P?SYNONYM + W?PORTRAIT + W?CANVAS + W?PAINTING + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 60 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LIGHTED-PORTRAIT-F + .PROP 3,P?ADJECTIVE + .BYTE A?LIGHTED + .BYTE A?ILLUMINATED + .BYTE A?LIT + .BYTE 0 + .ENDT + +T?CLOSET:: .TABLE ; TABLE FOR OBJECT CLOSET + .STRL "Control Room" + .PROP 3,P?NW + .WORD RECROSS-ENGINE-ROOM + .BYTE 0 + .PROP 2,P?GLOBAL + .BYTE MACHINERY + .BYTE VOICES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?283 + .PROP 8,P?PSEUDO + W?HAMMER + HAMMER-F + W?SPEARS + HAMMER-F + .BYTE 0 + .ENDT + +T?MIRROR-HALL-1:: .TABLE ; TABLE FOR OBJECT MIRROR-HALL-1 + .STRL "Hall of Mirrors One" + .PROP 1,P?EAST + .BYTE MIRROR-HALL-2 + .PROP 1,P?WEST + .BYTE NW-TOWER + .PROP 4,P?GLOBAL + .BYTE ADVENTURER-LG + .BYTE MIRROR + .BYTE MIRROR-STUFF + .BYTE SHARDS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MIRROR-HALL-F + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 1 + .BYTE 0 + .ENDT + +T?WESTERN-ROAD:: .TABLE ; TABLE FOR OBJECT WESTERN-ROAD + .STRL "Western Road" + .PROP 2,P?NORTH ; STRING PROPERTY + STR?296 + .PROP 1,P?EAST + .BYTE WEST-CASTLE + .PROP 2,P?SOUTH ; STRING PROPERTY + STR?296 + .PROP 1,P?WEST + .BYTE EAST-FORK + .PROP 3,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .BYTE DISTANT-CASTLE + .PROP 2,P?LDESC ; STRING PROPERTY + STR?295 + .BYTE 0 + .ENDT + +T?T-B:: .TABLE ; TABLE FOR OBJECT T-B + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 2 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?30 + .BYTE 0 + .ENDT + +T?LANTERN:: .TABLE ; TABLE FOR OBJECT LANTERN + .STRL "brass lantern" + .PROP 2,P?SYNONYM + W?LANTERN + .PROP 1,P?ADJECTIVE + .BYTE A?BRASS + .BYTE 0 + .ENDT + +T?STRONG-BOX:: .TABLE ; TABLE FOR OBJECT STRONG-BOX + .STRL "strong box" + .PROP 4,P?SYNONYM + W?BOX + W?SAFE + .PROP 2,P?LDESC ; STRING PROPERTY + STR?121 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + STRONG-BOX-F + .PROP 1,P?ADJECTIVE + .BYTE A?STRONG + .BYTE 0 + .ENDT + +T?IMPLEMENTS:: .TABLE ; TABLE FOR OBJECT IMPLEMENTS + .STRL "golden cutlery" + .PROP 4,P?SYNONYM + W?CUTLERY + W?CRYSTAL + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BANQUET-ILLUSION-F + .PROP 3,P?ADJECTIVE + .BYTE A?GOLD + .BYTE A?GOLDEN + .BYTE A?GLITTERING + .BYTE 0 + .ENDT + +T?GANG-OF-N:: .TABLE ; TABLE FOR OBJECT GANG-OF-N + .STRL "huddled mass, yearning to drink blood" + .PROP 8,P?SYNONYM + W?MASS + W?FIGURE + W?SHAPES + W?MEN + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GANG-OF-N-F + .PROP 2,P?ADJECTIVE + .BYTE A?HUDDLED + .BYTE A?HAIRY + .BYTE 0 + .ENDT + +T?FLATHEAD-PORTRAIT:: .TABLE ; TABLE FOR OBJECT FLATHEAD-PORTRAIT + .STRL "Flathead portrait" + .PROP 2,P?SYNONYM + W?PORTRAIT + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + FLATHEAD-PORTRAIT-F + .PROP 2,P?ADJECTIVE + .BYTE A?FLATHEAD + .BYTE A?DIMWIT + .BYTE 0 + .ENDT + +T?SCRAMBLED-EGG:: .TABLE ; TABLE FOR OBJECT SCRAMBLED-EGG + .STRL "scrambled egg" + .PROP 2,P?SYNONYM + W?EGG + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 10 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCRAMBLED-EGG-F + .PROP 2,P?ADJECTIVE + .BYTE A?BROKEN + .BYTE A?SCRAMBLED + .BYTE 0 + .ENDT + +T?TREES:: .TABLE ; TABLE FOR OBJECT TREES + .STRL "tree" + .PROP 6,P?SYNONYM + W?TREE + W?TREES + W?BRANCH + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TREES-F + .PROP 2,P?ADJECTIVE + .BYTE A?SHORT + .BYTE A?STUNTED + .BYTE 0 + .ENDT + +T?WATER:: .TABLE ; TABLE FOR OBJECT WATER + .STRL "quantity of water" + .PROP 4,P?SYNONYM + W?WATER + W?QUANTITY + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 4 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + WATER-FUNCTION + .PROP 2,P?ADJECTIVE + .BYTE A?DELICIOUS + .BYTE A?SPRING + .BYTE 0 + .ENDT + +T?SKELETON:: .TABLE ; TABLE FOR OBJECT SKELETON + .STRL "skeleton" + .PROP 6,P?SYNONYM + W?SKELETON + W?HEAP + W?BONES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?185 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SKELETON-F + .PROP 1,P?ADJECTIVE + .BYTE A?HUMAN + .BYTE 0 + .ENDT + +T?GROUND:: .TABLE ; TABLE FOR OBJECT GROUND + .STRL "floor" + .PROP 4,P?SYNONYM + W?FLOOR + W?GROUND + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GROUND-F + .PROP 1,P?ADJECTIVE + .BYTE A?STONE + .BYTE 0 + .ENDT + +T?RAT-TRACKS:: .TABLE ; TABLE FOR OBJECT RAT-TRACKS + .STRL "tracks" + .PROP 4,P?SYNONYM + W?TRACK + W?TRACKS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + RAT-TRACKS-F + .PROP 1,P?ADJECTIVE + .BYTE A?RAT + .BYTE 0 + .ENDT + +T?MOUNTAIN:: .TABLE ; TABLE FOR OBJECT MOUNTAIN + .STRL "mountain" + .PROP 4,P?SYNONYM + W?MOUNTAIN + W?PEAK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MOUNTAIN-F + .PROP 1,P?ADJECTIVE + .BYTE A?LONELY + .BYTE 0 + .ENDT + +T?NOT-HERE-OBJECT:: .TABLE ; TABLE FOR OBJECT NOT-HERE-OBJECT + .STRL "such thing" + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + NOT-HERE-OBJECT-F + .BYTE 0 + .ENDT + +T?DRAGON:: .TABLE ; TABLE FOR OBJECT DRAGON + .STRL "dragon" + .PROP 6,P?SYNONYM + W?DRAGON + W?FLAME + W?FLAMES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?86 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DRAGON-F + .BYTE 0 + .ENDT + +T?EAST-FORK:: .TABLE ; TABLE FOR OBJECT EAST-FORK + .STRL "Eastern Fork" + .PROP 1,P?EAST + .BYTE WESTERN-ROAD + .PROP 1,P?SW + .BYTE VILLAGE-EAST + .PROP 1,P?NW + .BYTE TRAIL-HEAD + .PROP 2,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?297 + .BYTE 0 + .ENDT + +T?COURTYARD-6:: .TABLE ; TABLE FOR OBJECT COURTYARD-6 + .STRL "Courtyard" + .PROP 2,P?NORTH ; STRING PROPERTY + STR?210 + .PROP 1,P?NE + .BYTE COURTYARD-7 + .PROP 1,P?WEST + .BYTE COURTYARD-4 + .PROP 1,P?NW + .BYTE COURTYARD-3 + .PROP 5,P?GLOBAL + .BYTE COURTYARD + .BYTE LAWN + .BYTE TOWER + .BYTE TEMPLE-OBJ + .BYTE TREES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?211 + .BYTE 0 + .ENDT + +T?INTNUM:: .TABLE ; TABLE FOR OBJECT INTNUM + .STRL "number" + .PROP 2,P?SYNONYM + W?INTNUM + .BYTE 0 + .ENDT + +T?GANG-OF-FOUR:: .TABLE ; TABLE FOR OBJECT GANG-OF-FOUR + .STRL "group of hairy shapes" + .PROP 8,P?SYNONYM + W?SHAPES + W?COUPLE + W?GUARDS + W?BEINGS + .PROP 2,P?LDESC ; STRING PROPERTY + STR?181 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GANG-OF-FOUR-F + .PROP 3,P?ADJECTIVE + .BYTE A?HAIRY + .BYTE A?HUNCHED + .BYTE A?GROUP + .BYTE 0 + .ENDT + +T?STRONG-BOX-SPELL:: .TABLE ; TABLE FOR OBJECT STRONG-BOX-SPELL + .STRL "blorb spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?BLORB + .PROP 2,P?TEXT ; STRING PROPERTY + STR?104 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 1 + .BYTE 0 + .ENDT + +T?NORTH-GATE-OBJ:: .TABLE ; TABLE FOR OBJECT NORTH-GATE-OBJ + .STRL "gate" + .PROP 2,P?SYNONYM + W?GATE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + NORTH-GATE-OBJ-F + .PROP 4,P?ADJECTIVE + .BYTE A?NORTH + .BYTE A?RUSTED + .BYTE A?OLD + .BYTE A?RUSTY + .BYTE 0 + .ENDT + +T?JEWEL-CHESTS:: .TABLE ; TABLE FOR OBJECT JEWEL-CHESTS + .STRL "collection of chests and cabinets" + .PROP 6,P?SYNONYM + W?CHEST + W?CHESTS + W?CABINET + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + JEWEL-CHESTS-F + .PROP 1,P?ADJECTIVE + .BYTE A?BEAUTIFUL + .BYTE 0 + .ENDT + +T?VILLAGE:: .TABLE ; TABLE FOR OBJECT VILLAGE + .STRL "Deserted Village" + .PROP 1,P?NORTH + .BYTE MOUNTAIN-TRAIL + .PROP 1,P?NE + .BYTE VILLAGE-EAST + .PROP 2,P?EAST ; STRING PROPERTY + STR?326 + .PROP 2,P?SE ; STRING PROPERTY + STR?326 + .PROP 3,P?SOUTH + .WORD HOVEL-KLUDGE + .BYTE 0 + .PROP 1,P?SW + .BYTE HAIRPIN-LOOP + .PROP 2,P?WEST ; STRING PROPERTY + STR?326 + .PROP 2,P?NW ; STRING PROPERTY + STR?326 + .PROP 1,P?UP + .BYTE MOUNTAIN-TRAIL + .PROP 3,P?IN + .WORD HOVEL-KLUDGE + .BYTE 0 + .PROP 3,P?GLOBAL + .BYTE HOVEL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?325 + .BYTE 0 + .ENDT + +T?CHEAT-DEATH-SPELL:: .TABLE ; TABLE FOR OBJECT CHEAT-DEATH-SPELL + .STRL "ozmoo spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?OZMOO + .PROP 2,P?TEXT ; STRING PROPERTY + STR?92 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?CEILING:: .TABLE ; TABLE FOR OBJECT CEILING + .STRL "ceiling" + .PROP 2,P?SYNONYM + W?CEILIN + .BYTE 0 + .ENDT + +T?MIRROR-STUFF:: .TABLE ; TABLE FOR OBJECT MIRROR-STUFF + .STRL "mirror environment" + .PROP 8,P?SYNONYM + W?CAVE + W?TUNNEL + W?FORMATION + W?LABYRINTH + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MIRROR-STUFF-F + .PROP 1,P?ADJECTIVE + .BYTE A?ROCK + .BYTE 0 + .ENDT + +T?ARCH:: .TABLE ; TABLE FOR OBJECT ARCH + .STRL "arch" + .PROP 4,P?SYNONYM + W?ARCH + W?ARCHWAY + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ARCH-F + .BYTE 0 + .ENDT + +T?CREDITS-SCROLL:: .TABLE ; TABLE FOR OBJECT CREDITS-SCROLL + .STRL "purple scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?FDESC ; STRING PROPERTY + STR?111 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?PURPLE + .BYTE 0 + .ENDT + +T?NORTH-CELL-DOOR:: .TABLE ; TABLE FOR OBJECT NORTH-CELL-DOOR + .STRL "cell door" + .PROP 2,P?SYNONYM + W?DOOR + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + CELL-DOOR-F + .PROP 1,P?ADJECTIVE + .BYTE A?CELL + .BYTE 0 + .ENDT + +T?GLOBE:: .TABLE ; TABLE FOR OBJECT GLOBE + .STRL "golden globe" + .PROP 2,P?SYNONYM + W?GLOBE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBE-F + .PROP 2,P?ADJECTIVE + .BYTE A?GOLD + .BYTE A?GOLDEN + .BYTE 0 + .ENDT + +T?ETERNAL-FLAME:: .TABLE ; TABLE FOR OBJECT ETERNAL-FLAME + .STRL "black candle" + .PROP 4,P?SYNONYM + W?CANDLE + W?FLAME + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ETERNAL-FLAME-F + .PROP 1,P?ADJECTIVE + .BYTE A?BLACK + .BYTE 0 + .ENDT + +T?POINT-J:: .TABLE ; TABLE FOR OBJECT POINT-J + .STRL "point J" + .PROP 2,P?SYNONYM + W?J + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 5 + .BYTE 0 + .ENDT + +T?REPAIR-SCROLL:: .TABLE ; TABLE FOR OBJECT REPAIR-SCROLL + .STRL "slightly crumpled scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?FDESC ; STRING PROPERTY + STR?107 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?CRUMPLED + .BYTE 0 + .ENDT + +T?FLOATING-SIGN:: .TABLE ; TABLE FOR OBJECT FLOATING-SIGN + .STRL "sign" + .PROP 4,P?SYNONYM + W?SIGN + W?LETTER + .PROP 2,P?ADJECTIVE + .BYTE A?FLOATING + .BYTE A?PURPLE + .PROP 2,P?TEXT ; STRING PROPERTY + STR?136 + .BYTE 0 + .ENDT + +T?STONE-WALL:: .TABLE ; TABLE FOR OBJECT STONE-WALL + .STRL "stone wall" + .PROP 8,P?SYNONYM + W?WALL + W?WRITING + W?GRAFFITI + W?SCRATCHINGS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + STONE-WALL-F + .PROP 1,P?ADJECTIVE + .BYTE A?STONE + .BYTE 0 + .ENDT + +T?PIT:: .TABLE ; TABLE FOR OBJECT PIT + .STRL "Bottomless Pit" + .PROP 3,P?UP + .WORD PIT-EXIT-F + .BYTE 0 + .PROP 3,P?DOWN + .WORD PIT-EXIT-F + .BYTE 0 + .PROP 2,P?LDESC ; STRING PROPERTY + STR?81 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PIT-F + .BYTE 0 + .ENDT + +T?RAT-HOLE:: .TABLE ; TABLE FOR OBJECT RAT-HOLE + .STRL "rat hole" + .PROP 2,P?SYNONYM + W?HOLE + .PROP 2,P?LDESC ; STRING PROPERTY + STR?187 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 10 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + RAT-HOLE-F + .PROP 2,P?ADJECTIVE + .BYTE A?RAT + .BYTE A?SMALL + .BYTE 0 + .ENDT + +T?POINT-H:: .TABLE ; TABLE FOR OBJECT POINT-H + .STRL "point H" + .PROP 2,P?SYNONYM + W?H + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 4 + .BYTE 0 + .ENDT + +T?DUSTY-ROAD:: .TABLE ; TABLE FOR OBJECT DUSTY-ROAD + .STRL "Dusty Trail" + .PROP 1,P?SE + .BYTE HAIRPIN-LOOP + .PROP 1,P?NW + .BYTE WEST-FORK + .PROP 2,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?323 + .BYTE 0 + .ENDT + +T?SECRET-PASSAGE:: .TABLE ; TABLE FOR OBJECT SECRET-PASSAGE + .STRL "Secret Passage" + .PROP 4,P?WEST ; CONDITIONAL EXIT + .BYTE NORTH-CELL ; ROOM NAME + .BYTE NORTH-BLOCK-FLAG ; FLAG NAME + 0 ; NO STRING + .PROP 2,P?UP ; STRING PROPERTY + STR?177 + .PROP 2,P?GLOBAL + .BYTE STONE-WALL + .BYTE NORTH-BLOCK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SECRET-PASSAGE-F + .BYTE 0 + .ENDT + +T?BRAMBLES:: .TABLE ; TABLE FOR OBJECT BRAMBLES + .STRL "bramble" + .PROP 2,P?SYNONYM + W?BRAMBLE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BRAMBLES-F + .BYTE 0 + .ENDT + +T?CHARM-SPELL:: .TABLE ; TABLE FOR OBJECT CHARM-SPELL + .STRL "vaxum spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?VAXUM + .PROP 2,P?TEXT ; STRING PROPERTY + STR?95 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?T-I:: .TABLE ; TABLE FOR OBJECT T-I + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 9 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?37 + .BYTE 0 + .ENDT + +T?COURTYARD-1:: .TABLE ; TABLE FOR OBJECT COURTYARD-1 + .STRL "Courtyard" + .PROP 1,P?NE + .BYTE COURTYARD-2 + .PROP 1,P?EAST + .BYTE COURTYARD-3 + .PROP 1,P?SE + .BYTE COURTYARD-4 + .PROP 1,P?SOUTH + .BYTE KNOT-ROOM + .PROP 1,P?WEST + .BYTE INSIDE-GATE + .PROP 4,P?GLOBAL + .BYTE TEMPLE-OBJ + .BYTE COURTYARD + .BYTE TURRET + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?169 + .BYTE 0 + .ENDT + +T?BEACH-OBJ:: .TABLE ; TABLE FOR OBJECT BEACH-OBJ + .STRL "beach" + .PROP 2,P?SYNONYM + W?BEACH + .PROP 2,P?ADJECTIVE + .BYTE A?WHITE + .BYTE A?ROCKY + .BYTE 0 + .ENDT + +T?PEBBLED-PATH:: .TABLE ; TABLE FOR OBJECT PEBBLED-PATH + .STRL "Pebbled Path" + .PROP 1,P?NORTH + .BYTE NW-TOWER + .PROP 1,P?SOUTH + .BYTE INSIDE-GATE + .PROP 1,P?GLOBAL + .BYTE ARCH + .PROP 2,P?LDESC ; STRING PROPERTY + STR?168 + .BYTE 0 + .ENDT + +T?POINT-F:: .TABLE ; TABLE FOR OBJECT POINT-F + .STRL "point F" + .PROP 2,P?SYNONYM + W?F + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 8 + .BYTE 0 + .ENDT + +T?JEWELLED-BOX:: .TABLE ; TABLE FOR OBJECT JEWELLED-BOX + .STRL "jewelled box" + .PROP 2,P?SYNONYM + W?BOX + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + JEWELLED-BOX-A + .PROP 2,P?FDESC ; STRING PROPERTY + STR?127 + .PROP 2,P?LDESC ; STRING PROPERTY + STR?128 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 40 + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 40 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + JEWELLED-BOX-F + .PROP 1,P?ADJECTIVE + .BYTE A?JEWELLED + .BYTE 0 + .ENDT + +T?SWORD:: .TABLE ; TABLE FOR OBJECT SWORD + .STRL "sword" + .PROP 2,P?SYNONYM + W?SWORD + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SWORD-F + .PROP 1,P?ADJECTIVE + .BYTE A?ELVISH + .BYTE 0 + .ENDT + +T?FOOD:: .TABLE ; TABLE FOR OBJECT FOOD + .STRL "luscious food" + .PROP 2,P?SYNONYM + W?FOOD + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BANQUET-FOOD-F + .PROP 1,P?ADJECTIVE + .BYTE A?LUSCIOUS + .BYTE 0 + .ENDT + +T?BTABLES:: .TABLE ; TABLE FOR OBJECT BTABLES + .STRL "tables" + .PROP 4,P?SYNONYM + W?TABLE + W?TABLES + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + BANQUET-ILLUSION-F + .PROP 2,P?ADJECTIVE + .BYTE A?WOODEN + .BYTE A?WOOD + .BYTE 0 + .ENDT + +T?NW-TOWER:: .TABLE ; TABLE FOR OBJECT NW-TOWER + .STRL "Tower" + .PROP 1,P?EAST + .BYTE MIRROR-HALL-1 + .PROP 1,P?SOUTH + .BYTE PEBBLED-PATH + .PROP 1,P?UP + .BYTE JEWEL-ROOM + .PROP 2,P?GLOBAL + .BYTE STAIRS + .BYTE TOWER + .PROP 2,P?LDESC ; STRING PROPERTY + STR?202 + .BYTE 0 + .ENDT + +T?PROTECTION-SCROLL:: .TABLE ; TABLE FOR OBJECT PROTECTION-SCROLL + .STRL "vellum scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?VELLUM + .BYTE 0 + .ENDT + +T?SHACK-ROOM:: .TABLE ; TABLE FOR OBJECT SHACK-ROOM + .STRL "Outside of Shack" + .PROP 1,P?NORTH + .BYTE SHACK + .PROP 1,P?NE + .BYTE SHACK-EAST + .PROP 1,P?EAST + .BYTE SHACK-EAST + .PROP 1,P?SW + .BYTE WEST-FORK + .PROP 1,P?WEST + .BYTE WEST-FORK + .PROP 1,P?IN + .BYTE SHACK + .PROP 3,P?GLOBAL + .BYTE SHACK-OBJ + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?301 + .BYTE 0 + .ENDT + +T?SHARDS:: .TABLE ; TABLE FOR OBJECT SHARDS + .STRL "shards of glass" + .PROP 4,P?SYNONYM + W?GLASS + W?SHARDS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SHARDS-F + .BYTE 0 + .ENDT + +T?MIRROR-HALL-4:: .TABLE ; TABLE FOR OBJECT MIRROR-HALL-4 + .STRL "Hall of Mirrors Four" + .PROP 1,P?EAST + .BYTE NORTH-GATE + .PROP 1,P?WEST + .BYTE MIRROR-HALL-3 + .PROP 4,P?GLOBAL + .BYTE ADVENTURER-LG + .BYTE MIRROR + .BYTE MIRROR-STUFF + .BYTE SHARDS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + MIRROR-HALL-F + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 4 + .BYTE 0 + .ENDT + +T?DOOR-ILLUSION:: .TABLE ; TABLE FOR OBJECT DOOR-ILLUSION + .STRL "guarded door" + .PROP 2,P?SYNONYM + W?DOOR + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DOOR-ILLUSION-F + .PROP 2,P?ADJECTIVE + .BYTE A?GUARDED + .BYTE A?OAK + .BYTE 0 + .ENDT + +T?T-E:: .TABLE ; TABLE FOR OBJECT T-E + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 5 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?33 + .BYTE 0 + .ENDT + +T?IRON-GATE:: .TABLE ; TABLE FOR OBJECT IRON-GATE + .STRL "iron gate" + .PROP 2,P?SYNONYM + W?GATE + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + IRON-GATE-F + .PROP 2,P?ADJECTIVE + .BYTE A?MASSIVE + .BYTE A?IRON + .BYTE 0 + .ENDT + +T?BANISH-SCROLL:: .TABLE ; TABLE FOR OBJECT BANISH-SCROLL + .STRL "powerful scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?LDESC ; STRING PROPERTY + STR?105 + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?POWERFUL + .BYTE 0 + .ENDT + +T?DAMAGED-SCROLL:: .TABLE ; TABLE FOR OBJECT DAMAGED-SCROLL + .STRL "shredded scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + DAMAGED-SCROLL-F + .PROP 1,P?ADJECTIVE + .BYTE A?SHREDDED + .PROP 2,P?TEXT ; STRING PROPERTY + STR?226 + .BYTE 0 + .ENDT + +T?NEWT-SCROLL:: .TABLE ; TABLE FOR OBJECT NEWT-SCROLL + .STRL "damp scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 2,P?ADJECTIVE + .BYTE A?DAMP + .BYTE A?SOGGY + .BYTE 0 + .ENDT + +T?SE-TOWER:: .TABLE ; TABLE FOR OBJECT SE-TOWER + .STRL "Tower" + .PROP 1,P?WEST + .BYTE SOUTH-GATE + .PROP 1,P?UP + .BYTE ENGINE-ROOM + .PROP 2,P?GLOBAL + .BYTE STAIRS + .BYTE VOICES + .PROP 2,P?LDESC ; STRING PROPERTY + STR?180 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SE-TOWER-F + .BYTE 0 + .ENDT + +T?POINT-B:: .TABLE ; TABLE FOR OBJECT POINT-B + .STRL "point B" + .PROP 2,P?SYNONYM + W?B + .PROP 1,P?ADJECTIVE + .BYTE A?POINT + .PROP 2,P?POINT ; INTEGER/CONSTANT PROPERTY + + 1 + .BYTE 0 + .ENDT + +T?OPEN-SPELL:: .TABLE ; TABLE FOR OBJECT OPEN-SPELL + .STRL "rezrov spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?REZROV + .PROP 2,P?TEXT ; STRING PROPERTY + STR?96 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?PATH-SIGN:: .TABLE ; TABLE FOR OBJECT PATH-SIGN + .STRL "sign" + .PROP 2,P?SYNONYM + W?SIGN + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + PATH-SIGN-F + .BYTE 0 + .ENDT + +T?T-A:: .TABLE ; TABLE FOR OBJECT T-A + .STRL "Translucent Room" + .PROP 1,P?GLOBAL + .BYTE BLACK-PASSAGE + .PROP 2,P?CAPACITY ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TMAZE-F + .PROP 2,P?TMAZE ; STRING PROPERTY + T?29 + .BYTE 0 + .ENDT + +T?REPAIR-SPELL:: .TABLE ; TABLE FOR OBJECT REPAIR-SPELL + .STRL "krebf spell" + .PROP 2,P?SYNONYM + W?SPELL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 1 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SPELL-F + .PROP 1,P?ADJECTIVE + .BYTE A?KREBF + .PROP 2,P?TEXT ; STRING PROPERTY + STR?108 + .PROP 2,P?COUNT ; INTEGER/CONSTANT PROPERTY + + 0 + .BYTE 0 + .ENDT + +T?ADVENTURER-LG:: .TABLE ; TABLE FOR OBJECT ADVENTURER-LG + .STRL "adventurer" + .PROP 4,P?SYNONYM + W?ADVENTURER + W?PERSON + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ADVENTURER-LG-F + .PROP 2,P?ADJECTIVE + .BYTE A?WEARY + .BYTE A?BEDRAGGLED + .BYTE 0 + .ENDT + +T?INSIDE-GATE:: .TABLE ; TABLE FOR OBJECT INSIDE-GATE + .STRL "Inside Gate" + .PROP 1,P?NORTH + .BYTE PEBBLED-PATH + .PROP 1,P?EAST + .BYTE COURTYARD-1 + .PROP 1,P?SOUTH + .BYTE WEST-HALL + .PROP 1,P?WEST + .BYTE WEST-CASTLE + .PROP 1,P?OUT + .BYTE WEST-CASTLE + .PROP 5,P?GLOBAL + .BYTE IRON-GATE + .BYTE IRON-GATE-CHAINS + .BYTE HILLS + .BYTE ARCH + .BYTE COURTYARD + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + INSIDE-GATE-F + .BYTE 0 + .ENDT + +T?SHACK:: .TABLE ; TABLE FOR OBJECT SHACK + .STRL "Inside Shack" + .PROP 1,P?SOUTH + .BYTE SHACK-ROOM + .PROP 1,P?OUT + .BYTE SHACK-ROOM + .PROP 2,P?GLOBAL + .BYTE SHACK-OBJ + .BYTE WINDOW + .PROP 2,P?LDESC ; STRING PROPERTY + STR?302 + .PROP 8,P?PSEUDO + W?TABLE + SHACK-STUFF + W?BENCH + SHACK-STUFF + .PROP 2,P?TEXT ; STRING PROPERTY + STR?303 + .BYTE 0 + .ENDT + +T?SUMMON-SCROLL:: .TABLE ; TABLE FOR OBJECT SUMMON-SCROLL + .STRL "faded scroll" + .PROP 2,P?SYNONYM + W?SCROLL + .PROP 2,P?SIZE ; INTEGER/CONSTANT PROPERTY + + 3 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SCROLL-F + .PROP 2,P?ADJECTIVE + .BYTE A?FADED + .BYTE A?WHOLE + .BYTE 0 + .ENDT + +T?SOUTH-GATE:: .TABLE ; TABLE FOR OBJECT SOUTH-GATE + .STRL "South Gate" + .PROP 1,P?NORTH + .BYTE EAST-HALL + .PROP 1,P?EAST + .BYTE SE-TOWER + .PROP 5,P?SOUTH ; DOOR EXIT + .BYTE MEADOW ; ROOM NAME + .BYTE RUSTY-GATE ; DOOR NAME + .WORD 0 + .BYTE 0 ; STRING TO PRINT + .PROP 1,P?WEST + .BYTE GALLERY + .PROP 4,P?GLOBAL + .BYTE MEADOW-OBJ + .BYTE RUSTY-GATE + .BYTE BEACH-OBJ + .BYTE SEA + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SOUTH-GATE-F + .BYTE 0 + .ENDT + +T?JUNCTION:: .TABLE ; TABLE FOR OBJECT JUNCTION + .STRL "Junction" + .PROP 1,P?NORTH + .BYTE LIBRARY + .PROP 1,P?EAST + .BYTE LANDING + .PROP 1,P?SOUTH + .BYTE BANQUET-HALL + .PROP 1,P?WEST + .BYTE COURTYARD-7 + .PROP 1,P?GLOBAL + .BYTE STAIRS + .PROP 2,P?ADVFCN ; ATOM (CONSTANT) PROPERTY + + ADV-VS-GANG + .PROP 2,P?LDESC ; STRING PROPERTY + STR?184 + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + JUNCTION-F + .BYTE 0 + .ENDT + +T?SHAPE:: .TABLE ; TABLE FOR OBJECT SHAPE + .STRL "monster" + .PROP 6,P?SYNONYM + W?MONSTER + W?SHAPE + W?BEING + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + SHAPE-F + .BYTE 0 + .ENDT + +T?VILLAGE-EAST:: .TABLE ; TABLE FOR OBJECT VILLAGE-EAST + .STRL "Village Outskirts" + .PROP 2,P?NORTH ; STRING PROPERTY + STR?332 + .PROP 1,P?NE + .BYTE EAST-FORK + .PROP 2,P?SOUTH ; STRING PROPERTY + STR?332 + .PROP 1,P?SW + .BYTE VILLAGE + .PROP 2,P?GLOBAL + .BYTE HILLS + .BYTE MOUNTAIN + .PROP 2,P?LDESC ; STRING PROPERTY + STR?331 + .BYTE 0 + .ENDT + +T?ENTHARION:: .TABLE ; TABLE FOR OBJECT ENTHARION + .STRL "Entharion" + .PROP 2,P?SYNONYM + W?ENTHARION + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + ENTHARION-F + .BYTE 0 + .ENDT + +T?TOWER-S-DOOR:: .TABLE ; TABLE FOR OBJECT TOWER-S-DOOR + .STRL "south cell door" + .PROP 2,P?SYNONYM + W?DOOR + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + TOWER-DOOR-F + .PROP 3,P?ADJECTIVE + .BYTE A?SOUTH + .BYTE A?CELL + .BYTE A?PRISON + .BYTE 0 + .ENDT + +T?PSEUDO-OBJECT:: .TABLE ; TABLE FOR OBJECT PSEUDO-OBJECT + .STRL "pseudo" + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + CRETIN + .BYTE 0 + .ENDT + +T?DIM-DESCENT:: .TABLE ; TABLE FOR OBJECT DIM-DESCENT + .STRL "South Hall" + .PROP 1,P?NORTH + .BYTE KNOT-ROOM + .PROP 1,P?EAST + .BYTE GALLERY + .PROP 1,P?SOUTH + .BYTE DUNGEON + .PROP 1,P?WEST + .BYTE SW-TOWER + .PROP 1,P?DOWN + .BYTE DUNGEON + .PROP 1,P?GLOBAL + .BYTE STAIRS + .PROP 2,P?LDESC ; STRING PROPERTY + STR?175 + .BYTE 0 + .ENDT + +T?LITTER:: .TABLE ; TABLE FOR OBJECT LITTER + .STRL "various and sundry items" + .PROP 8,P?SYNONYM + W?KNIVES + W?KNIFE + W?BONES + W?COBWEBS + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + LITTER-F + .PROP 4,P?ADJECTIVE + .BYTE A?OLD + .BYTE A?CARVING + .BYTE A?RUSTY + .BYTE A?HUGE + .BYTE 0 + .ENDT + +T?GLOBAL-KRILL:: .TABLE ; TABLE FOR OBJECT GLOBAL-KRILL + .STRL "warlock Krill" + .PROP 4,P?SYNONYM + W?KRILL + W?WARLOCK + .PROP 2,P?ACTION ; ATOM (CONSTANT) PROPERTY + + GLOBAL-KRILL-F + .BYTE 0 + .ENDT + + +; THE GLOBAL VARIABLES ARE ALL LOCATED HERE + +GLOBAL::.TABLE + .GVAR HERE=0 + .GVAR SCORE=0 + .GVAR MOVES=0 + .GVAR GALLERY-POINT=25 + .GVAR DAWN=0 + .GVAR P-END-ON-PREP=0 + .GVAR SUPER-BRIEF=0 + .GVAR TWAIT=0 + .GVAR LOSSAGE=0 + .GVAR NO-LONGER-PROTECTED=STR?87,STRING + .GVAR VERBOSE=0 + .GVAR P-BUTS=T?15,TABLE + .GVAR TWALK-PATHS=T?48,TABLE + .GVAR ADV-NEW-LOC=0 + .GVAR FROGGERS=T?67,TABLE + .GVAR ILLUSION-HACKS=T?57,TABLE + .GVAR ADVENTURER-CHARMED=0 + .GVAR P-DIR=0 + .GVAR P-ACLAUSE=0 + .GVAR AWAKE=-1 + .GVAR MOLESTED=20 + .GVAR BEATEN-UP=0 + .GVAR NIGHT-GLIMPSES=T?82,TABLE + .GVAR P-SLOCBITS=0 + .GVAR P-MATCHLEN=0 + .GVAR P-ADVERB=0 + .GVAR TERROR-POINT=50 + .GVAR ADVENTURER-STAY=0 + .GVAR DOOR-KULCAD=0 + .GVAR LAST-SLEEP=0 + .GVAR CLOCK-WAIT=0 + .GVAR P-MULT=0 + .GVAR P-OTBL=T?10,TABLE + .GVAR CHARM-POINT=20 + .GVAR P-NAM=0 + .GVAR ALWAYS-LIT=0 + .GVAR LOCKED-IN-TOWER=0 + .GVAR C-TABLE=T?1,TABLE + .GVAR SIGN-TEXTS=T?56,TABLE + .GVAR TURTLE-TIRED-TELL=0 + .GVAR ADVENTURER-NOTES-DOOR=0 + .GVAR P-XNAM=0 + .GVAR P-MOBY-FOUND=0 + .GVAR DRINK-POINT=15 + .GVAR ANYTHING-TAKEN=0 + .GVAR OOPS-TABLE=T?8,TABLE + .GVAR P-WALK-DIR=0 + .GVAR P-ANAM=0 + .GVAR PROTECTED-FROM-EVIL=0 + .GVAR LAST-PSEUDO-LOC=0 + .GVAR FLY-POINT=10 + .GVAR TURTLE-TIRED?=0 + .GVAR P-CONT=0 + .GVAR DEATH-CHEATED=0 + .GVAR STRONG-BOX-FLAG=0 + .GVAR P-PRSI=T?14,TABLE + .GVAR AGAIN-LEXV=T?4,TABLE + .GVAR REPAIR-POINT=10 + .GVAR GANG-FOLLOWS=0 + .GVAR ROAD-TABLE=T?80,TABLE + .GVAR FUMBLE-NUMBER=7 + .GVAR DESC-OBJECT=0 + .GVAR T-DIR-TABLE=T?28,TABLE + .GVAR PORTRAIT-COMMENT=0 + .GVAR HUNGER-COUNT=0 + .GVAR MIRROR-HALL-TBL1=T?58,TABLE + .GVAR LIT=0 + .GVAR PROBE-TBL=T?55,TABLE + .GVAR ADVENTURER-LOITERS=T?60,TABLE + .GVAR FLYING?=0 + .GVAR P-VTBL=T?11,TABLE + .GVAR P-XADJN=0 + .GVAR DOOR-DREAM-2=0 + .GVAR PENCIL-COUNT=2 + .GVAR TERROR-TRAPPED=0 + .GVAR TF-COUNT=0 + .GVAR RESERVE-LEXV=T?5,TABLE + .GVAR HUNGER-TELL=T?72,TABLE + .GVAR P-ACT=0 + .GVAR P-ADJ=0 + .GVAR WARLOCK-POINT=50 + .GVAR NIGHTFALL=97 + .GVAR P-LEN=0 + .GVAR C-INTS=180 + .GVAR P-CCTBL=T?2,TABLE + .GVAR P-LEXV=T?3,TABLE + .GVAR ROAD-LOC=10000 + .GVAR LOAD-ALLOWED=100 + .GVAR JUG-AMTS=T?25,TABLE + .GVAR SCORE-MAX=400 + .GVAR POPS-OPEN=STR?174,STRING + .GVAR SPELL-ROOM=1 + .GVAR CRASH?=0 + .GVAR TEMPLE-POINT=35 + .GVAR ADV-HASTE=0 + .GVAR EGG-POINT=5 + .GVAR SIGN-TBL=T?79,TABLE + .GVAR STAIR-TABLE=T?51,TABLE + .GVAR STAIR-LOC=10000 + .GVAR DEBUG=0 + .GVAR DIR-STRINGS=T?63,TABLE + .GVAR PRSO=0 + .GVAR PSTART=0 + .GVAR L-PRSI=0 + .GVAR FORGET-TBL=T?54,TABLE + .GVAR TURTLE-REPORT?=0 + .GVAR P-MERGED=0 + .GVAR P-GWIMBIT=0 + .GVAR ENTRY-POINT=20 + .GVAR C-DEMONS=180 + .GVAR P-OCLAUSE=T?17,TABLE + .GVAR TMAZE-DIRS=T?38,TABLE + .GVAR QUENCH-POINT=25 + .GVAR SCROLLS-TAKEN=0 + .GVAR P-SYNTAX=0 + .GVAR ERASER-COUNT=2 + .GVAR MUNCHED=45 + .GVAR ADVENTURER-NICE=T?61,TABLE + .GVAR VISITED-GALLERY?=0 + .GVAR ADVENTURER-LOC=0 + .GVAR P-XADJ=0 + .GVAR ADVENTURER-SUMMONED=0 + .GVAR ADV-OLD-LOC=0 + .GVAR HASTED?=0 + .GVAR TURTLE-POINT=25 + .GVAR P-AADJ=0 + .GVAR ADVENTURER-FEEBLES=T?59,TABLE + .GVAR PRSA=0 + .GVAR BOX-POINT=25 + .GVAR L-PRSA=0 + .GVAR PENCIL-TBL=T?26,TABLE + .GVAR ADVENTURER-QUIPS=T?62,TABLE + .GVAR CASTLE-ENTER=0 + .GVAR TRY-FLY=0 + .GVAR REAL-SPELL-MAX=4 + .GVAR STAIR-POINT=10 + .GVAR SACRIFICED?=0 + .GVAR BED-WARNING=0 + .GVAR P-PRSO=T?13,TABLE + .GVAR DAGGER-SEEN=0 + .GVAR P-AND=0 + .GVAR DROPPED-SOME?=0 + .GVAR TTRIES=0 + .GVAR DUSK=81 + .GVAR P-ONEOBJ=0 + .GVAR TIME-TABLE=T?69,TABLE + .GVAR HAMMER-EXEX=0 + .GVAR ADVENTURER-SEEN=0 + .GVAR P-INBUF=T?6,TABLE + .GVAR L-PRSO=0 + .GVAR JUMPLOSS=T?22,TABLE + .GVAR SUNRISE=10 + .GVAR BELBOZ-WARNING=0 + .GVAR P-MERGE=T?16,TABLE + .GVAR IMP-SEEN=0 + .GVAR HUNGER-TABLE=T?71,TABLE + .GVAR DEATHS=0 + .GVAR BREAD-AMTS=T?78,TABLE + .GVAR P-WON=0 + .GVAR LIGHT-POINT=20 + .GVAR TERROR-MOVED=0 + .GVAR PATH-TBL=T?50,TABLE + .GVAR TOD=0 + .GVAR P-OVTBL=T?12,TABLE + .GVAR NORTH-BLOCK-FLAG=0 + .GVAR THIRST-COUNT=0 + .GVAR KRILL-KILL=0 + .GVAR P-ITBL=T?9,TABLE + .GVAR QUOTE-FLAG=0 + .GVAR ADV-POSS=T?64,TABLE + .GVAR GALLERY-DREAM=0 + .GVAR P-TABLE=0 + .GVAR LOAD-MAX=100 + .GVAR P-GETFLAGS=0 + .GVAR YUKS=T?24,TABLE + .GVAR COUNTERS=T?53,TABLE + .GVAR TALK-TO-ANIMAL?=0 + .GVAR OOPS-INBUF=T?7,TABLE + .GVAR STAIR-SOLVED?=0 + .GVAR INDENTS=T?19,TABLE + .GVAR FUMBLE-PROB=8 + .GVAR SUMMON-POINT=10 + .GVAR P-NUMBER=0 + .GVAR DREAMS=T?75,TABLE + .GVAR P-OFLAG=0 + .GVAR WINNER=0 + .GVAR ROPE-MAGIC?=1 + .GVAR GLIMPSES=T?81,TABLE + .GVAR P-ADJN=0 + .GVAR AGAIN-DIR=0 + .GVAR RANKINGS=T?18,TABLE + .GVAR FAST?=0 + .GVAR TURTLE-FOLLOWS=0 + .GVAR TWALK-LEVEL=0 + .GVAR SPELL-MAX=4 + .GVAR EAT-POINT=10 + .GVAR P-IT-OBJECT=0 + .GVAR HO-HUM=T?23,TABLE + .GVAR TIRED-TELL=T?74,TABLE + .GVAR TERROR-ARRIVES=STR?75,STRING + .GVAR LETTER-OF-TRANSIT=0 + .GVAR DOOR-ILLUSION-GONE=0 + .GVAR PRSI=0 + .GVAR RESERVE-PTR=0 + .GVAR SAILOR?=0 + .GVAR BREAD-EXAMINES=T?77,TABLE + .GVAR THIRST-TABLE=T?70,TABLE + .GVAR HELLOS=T?21,TABLE + .GVAR PROBE=0 + .GVAR MUNG-ROOM-TABLE=T?68,TABLE + .GVAR ERASER-TBL=T?27,TABLE + .GVAR TMAZE-ROOMS=T?49,TABLE + .GVAR FALL-COUNT=0 + .GVAR TURTLE-REMARKS=T?76,TABLE + .GVAR ADVENTURER-MOVE=-1 + .GVAR P-NOT-HERE=0 + .GVAR JUG-FILLS=T?20,TABLE + .GVAR DOOR-POINT=35 + .GVAR P-NCN=0 + .GVAR DOOR-DREAM=0 + .GVAR COPR-NOTICE=STR?18,STRING + .GVAR THIRST-TELL=T?73,TABLE + .GVAR GUARDS-HEARD=0 + .GVAR CRONE-MOVE=0 + .GVAR ALL-SPELLS=T?52,TABLE + .GVAR FROG-TALKS=T?66,TABLE + .GVAR HALL-TBL=T?65,TABLE + .GVAR PREPOSITIONS=PRTBL,TABLE + .GVAR ACTIONS=ATBL,TABLE + .GVAR PREACTIONS=PATBL,TABLE + .GVAR VERBS=VTBL,TABLE + .ENDT + +GLOEND:: + + +; IMPURE TABLES ARE DEFINED HERE + +IMPTBL:: + +T?1:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?2:: .TABLE + 0 + 0 + 0 + 0 + .ENDT + +T?3:: .TABLE + .BYTE 59 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?4:: .TABLE + .BYTE 59 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?5:: .TABLE + .BYTE 59 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?6:: .TABLE + .BYTE 120 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?7:: .TABLE + .BYTE 120 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?8:: .TABLE + 0 + 0 + 0 + 0 + .ENDT + +T?9:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?10:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?11:: .TABLE + 0 + 0 + 0 + 0 + .ENDT + +T?12:: .TABLE + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?13:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?14:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?15:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?16:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?17:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?18:: .TABLE + STR?3 + STR?4 + STR?5 + STR?6 + STR?7 + STR?8 + STR?9 + STR?10 + STR?11 + .ENDT + +T?19:: .TABLE + STR?13 + STR?13 + STR?14 + STR?15 + STR?16 + STR?17 + .ENDT + +T?20:: .TABLE + STR?20 + STR?21 + STR?22 + STR?23 + STR?24 + .ENDT + +T?21:: .TABLE + 5 + 0 + STR?25 + STR?26 + STR?27 + STR?28 + .ENDT + +T?22:: .TABLE + 3 + 0 + STR?29 + STR?30 + .ENDT + +T?23:: .TABLE + 4 + 0 + STR?40 + STR?41 + STR?42 + .ENDT + +T?24:: .TABLE + 5 + 0 + STR?43 + STR?44 + STR?45 + STR?46 + .ENDT + +T?25:: .TABLE + STR?50 + STR?51 + STR?52 + STR?53 + STR?54 + .ENDT + +T?26:: .TABLE + STR?58 + STR?59 + STR?60 + .ENDT + +T?27:: .TABLE + STR?61 + STR?62 + STR?63 + .ENDT + +T?28:: .TABLE + 0 + 0 + 0 + 0 + 0 + STR?64 + 0 + STR?65 + 0 + STR?66 + .ENDT + +T?29:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + T-B + 1 + T-C + 0 + T-E + 0 + 0 + 0 + 0 + 0 + -1 + .ENDT + +T?30:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + T-D + 1 + T-F + 1 + T-C + 0 + T-A + 1 + -1 + .ENDT + +T?31:: .TABLE + T-A + 0 + 0 + 0 + T-B + 0 + T-D + 0 + T-F + 0 + T-G + 0 + T-E + 1 + 0 + 0 + -1 + .ENDT + +T?32:: .TABLE + T-B + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + T-I + 0 + T-F + 1 + T-C + 0 + -1 + .ENDT + +T?33:: .TABLE + 0 + 0 + T-A + 0 + T-C + 1 + T-F + 0 + T-G + 1 + 0 + 0 + 0 + 0 + 0 + 0 + -1 + .ENDT + +T?34:: .TABLE + T-C + 0 + T-B + 1 + T-D + 1 + 0 + 0 + T-I + 0 + T-H + 0 + T-G + 1 + T-E + 0 + -1 + .ENDT + +T?35:: .TABLE + T-E + 1 + T-C + 0 + T-F + 1 + T-I + 0 + T-H + 1 + 0 + 0 + 0 + 0 + 0 + 0 + -1 + .ENDT + +T?36:: .TABLE + T-G + 1 + T-F + 0 + T-I + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + -1 + .ENDT + +T?37:: .TABLE + T-F + 0 + T-D + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + T-H + 0 + T-G + 0 + -1 + .ENDT + +T?38:: .TABLE + STR?67 + STR?68 + STR?69 + STR?70 + STR?71 + STR?72 + STR?73 + STR?74 + .ENDT + +T?39:: .TABLE + 0 + .ENDT + +T?40:: .TABLE + 4 + 1 + 3 + 4 + 6 + .ENDT + +T?41:: .TABLE + 6 + 1 + 2 + 5 + 6 + 7 + 4 + .ENDT + +T?42:: .TABLE + 4 + 2 + 3 + 6 + 9 + .ENDT + +T?43:: .TABLE + 4 + 1 + 3 + 6 + 7 + .ENDT + +T?44:: .TABLE + 7 + 3 + 5 + 2 + 4 + 7 + 8 + 9 + .ENDT + +T?45:: .TABLE + 5 + 5 + 3 + 6 + 8 + 9 + .ENDT + +T?46:: .TABLE + 3 + 6 + 7 + 9 + .ENDT + +T?47:: .TABLE + 4 + 4 + 6 + 7 + 8 + .ENDT + +T?48:: .TABLE + 9 + T?39 + T?40 + T?41 + T?42 + T?43 + T?44 + T?45 + T?46 + T?47 + .ENDT + +T?49:: .TABLE + 9 + T-A + T-B + T-C + T-D + T-E + T-F + T-G + T-H + T-I + .ENDT + +T?50:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?51:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?52:: .TABLE + 17 + WRITE-MAGIC-SPELL + LIGHT-SPELL + CHEAT-DEATH-SPELL + SUMMON-SPELL + CHARM-SPELL + OPEN-SPELL + TALK-TO-ANIMALS-SPELL + HASTE-SPELL + DISPEL-SPELL + PROTECTION-SPELL + STRONG-BOX-SPELL + BANISH-SPELL + REPAIR-SPELL + NEWT-SPELL + FLY-SPELL + QUENCH-SPELL + CREDITS-SPELL + .ENDT + +T?53:: .TABLE + STR?113 + STR?114 + STR?115 + STR?116 + STR?117 + .ENDT + +T?54:: .TABLE + 10 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?55:: .TABLE + 3 + STR?118 + STR?119 + STR?120 + .ENDT + +T?56:: .TABLE + 4 + 0 + STR?133 + STR?134 + STR?135 + .ENDT + +T?57:: .TABLE + 7 + 0 + STR?137 + STR?138 + STR?139 + STR?140 + STR?141 + STR?142 + .ENDT + +T?58:: .TABLE + 4 + STR?143 + STR?144 + STR?144 + STR?145 + .ENDT + +T?59:: .TABLE + 5 + 0 + STR?146 + STR?147 + STR?148 + STR?149 + .ENDT + +T?60:: .TABLE + 5 + 0 + STR?151 + STR?152 + STR?153 + STR?154 + .ENDT + +T?61:: .TABLE + 6 + 0 + STR?155 + STR?156 + STR?157 + STR?158 + STR?159 + .ENDT + +T?62:: .TABLE + 7 + 0 + STR?156 + STR?157 + STR?160 + STR?161 + STR?162 + STR?163 + .ENDT + +T?63:: .TABLE + P?NORTH + STR?74 + P?SOUTH + STR?70 + P?EAST + STR?72 + P?WEST + STR?68 + P?NW + STR?67 + P?NE + STR?73 + P?SW + STR?69 + P?SE + STR?71 + P?DOWN + STR?164 + P?UP + STR?165 + P?IN + STR?166 + P?OUT + STR?167 + .ENDT + +T?64:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?65:: .TABLE + NW-TOWER + MIRROR-HALL-1 + MIRROR-HALL-2 + MIRROR-HALL-3 + MIRROR-HALL-4 + NORTH-GATE + PURLOINED-ROOM + 0 + .ENDT + +T?66:: .TABLE + 6 + 0 + STR?194 + STR?195 + STR?196 + STR?197 + STR?198 + .ENDT + +T?67:: .TABLE + 4 + 0 + STR?199 + STR?200 + STR?201 + .ENDT + +T?68:: .TABLE + ALTAR + TEMPLE + TOWER-N + TOWER-S + COURTYARD-7 + COURTYARD-3 + JUNCTION + COURTYARD-4 + COURTYARD-2 + LANDING + COURTYARD-6 + COURTYARD-5 + LIBRARY + BANQUET-HALL + COURTYARD-1 + KITCHEN + NORTH-GATE + EAST-HALL + FOREST-1 + CLOSET + INSIDE-GATE + WEST-HALL + SOUTH-GATE + MEADOW + SE-TOWER + PEBBLED-PATH + SW-TOWER + BEDROOM + 0 + .ENDT + +T?69:: .TABLE + STR?227 + STR?228 + STR?229 + STR?230 + STR?231 + STR?232 + STR?233 + STR?234 + STR?235 + STR?236 + STR?237 + STR?238 + STR?239 + .ENDT + +T?70:: .TABLE + 6 + STR?241 + STR?242 + STR?243 + STR?244 + STR?245 + STR?246 + .ENDT + +T?71:: .TABLE + 6 + STR?248 + STR?249 + STR?250 + STR?251 + STR?252 + STR?246 + .ENDT + +T?72:: .TABLE + STR?253 + STR?254 + STR?255 + STR?256 + STR?257 + STR?258 + STR?259 + .ENDT + +T?73:: .TABLE + STR?260 + STR?261 + STR?262 + STR?263 + STR?264 + STR?265 + .ENDT + +T?74:: .TABLE + STR?266 + STR?267 + STR?268 + STR?269 + STR?270 + STR?271 + STR?272 + STR?273 + STR?274 + STR?275 + STR?276 + .ENDT + +T?75:: .TABLE + 6 + 0 + STR?278 + STR?279 + STR?280 + STR?281 + STR?282 + .ENDT + +T?76:: .TABLE + 4 + 0 + STR?291 + STR?292 + STR?293 + .ENDT + +T?77:: .TABLE + 0 + STR?305 + STR?306 + STR?307 + STR?308 + STR?309 + STR?310 + STR?311 + STR?312 + .ENDT + +T?78:: .TABLE + STR?313 + STR?314 + STR?315 + STR?316 + STR?317 + STR?318 + STR?319 + STR?320 + STR?321 + .ENDT + +T?79:: .TABLE + STR?333 + STR?334 + STR?284 + STR?335 + STR?68 + STR?336 + STR?337 + STR?338 + STR?339 + STR?340 + STR?341 + STR?342 + .ENDT + +T?80:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?81:: .TABLE + 4 + 0 + STR?344 + STR?345 + STR?346 + .ENDT + +T?82:: .TABLE + 4 + 0 + STR?347 + STR?348 + STR?349 + .ENDT + + +; END OF PURENESS + +IMPURE:: + + + +; VERB TABLE IS DEFINED HERE + +VTBL:: .TABLE + ST?KISS + ST?SKIP + ST?INFLAT + ST?STAY + ST?PULL + ST?PUT + ST?RAPE + ST?VERBOSE + ST?BRING + ST?WALK + ST?QUIT + ST?FIND + ST?FILFRE + ST?DESTROY + ST?AVOID + ST?KREBF + ST?UNLOCK + ST?READ + ST?SAY + ST?JUMP + ST?POUR + ST?WAIT + ST?NITFOL + ST?BLORB + ST?TAKE + ST?GAG + ST?COUNT + ST?RAISE + ST?FOLLOW + ST?FLY + ST?VERSION + ST?WIND + ST?#UNRECORD + ST?LIGHT + ST?LIE + ST?MOVE + ST?PLAY + ST?OPEN + ST?TOUCH + ST?BLOW + ST?#COMMAND + ST?KNOCK + ST?WRITE + ST?MELBOR + ST?PICK + ST?DEFLATE + ST?BOARD + ST?REZROV + ST?APPLY + ST?#RANDOM + ST?KULCAD + ST?ESCAPE + ST?PRAY + ST?STAND + ST?LISTEN + ST?TIE + ST?SHOW + ST?SAVE + ST?TELL + ST?THROW + ST?ZORK + ST?LOWER + ST?HIDE + ST?SHAKE + ST?INVENTORY + ST?ATTACK + ST?FROTZ + ST?KILL + ST?SPELLS + ST?MEMORIZE + ST?ENTER + ST?SEARCH + ST?WEAR + ST?ERASE + ST?SHARPEN + ST?GROSS + ST?DISEMBARK + ST?SWIM + ST?LUBRICATE + ST?PLUG + ST?UNTIE + ST?PUMP + ST?CUT + ST?MELT + ST?UNSCRIPT + ST?GUNCHO + ST?PUSH + ST?ZIFMIA + ST?SUPER + ST?OZMOO + ST?REACH + ST?VAXUM + ST?DIG + ST?SEND + ST?SCORE + ST?EXORCISE + ST?IZYUK + ST?CLEESH + ST?EXEX + ST?CONNECT + ST?LOOK + ST?GNUSTO + ST?SPRAY + ST?CAST + ST?DROP + ST?BACK + ST?TIME + ST?ROLL + ST?LEAVE + ST?CURSE + ST?REPENT + ST?SCRIPT + ST?SPIN + ST?$VERIFY + ST?EXTINGUISH + ST?SWING + ST?RESTART + ST?POKE + ST?SMELL + ST?BRIEF + ST?DIAGNOSE + ST?GIVE + ST?SLEEP + ST?WAKE + ST?DRINK + ST?ANSWER + ST?MUMBLE + ST?YELL + ST?LOCK + ST?BURN + ST?KICK + ST?PLUGH + ST?POINT + ST?TURN + ST?CROSS + ST?#RECORD + ST?WHO + ST?MAKE + ST?RESTORE + ST?CLOSE + ST?STRIKE + ST?SLIDE + ST?WAVE + ST?EXIT + ST?EXAMINE + ST?EAT + ST?LEAN + ST?FILL + ST?SQUEEZE + ST?GONDAR + ST?CLIMB + ST?FORGET + ST?LAUNCH + ST?LEARN + ST?THANK + ST?ASK + ST?HELLO + .ENDT + +; SYNTAX DEFINITION TABLES ARE DEFINED HERE + +ST?KISS:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VILLAIN + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?KISS + .ENDT + +ST?SKIP:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SKIP + .ENDT + +ST?INFLAT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE 0 + .BYTE SOG+SIR+SH+SC + .BYTE V?INFLATE + .ENDT + +ST?STAY:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?STAY + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?STAY + .ENDT + +ST?PULL:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?MOVE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?MOVE + .ENDT + +ST?PUT:: .TABLE + .BYTE 6 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?BEHIND + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT-BEHIND + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG+SC+SMANY + .BYTE 0 + .BYTE V?WEAR + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?UNDER + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT-UNDER + .BYTE 1 ;OBJECTS + .BYTE PR?DOWN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY + .BYTE 0 + .BYTE V?DROP + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT-ON + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT + .ENDT + +ST?RAPE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VICBIT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RAPE + .ENDT + +ST?VERBOSE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?VERBOSE + .ENDT + +ST?BRING:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?BRING + .ENDT + +ST?WALK:: .TABLE + .BYTE 11 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?BEHIND + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?AVOID + .BYTE 1 ;OBJECTS + .BYTE PR?UNDER + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?AVOID + .BYTE 1 ;OBJECTS + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WALK-TO + .BYTE 1 ;OBJECTS + .BYTE PR?DOWN + .BYTE 0 + .BYTE CLIMBBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-DOWN + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE CLIMBBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-UP + .BYTE 1 ;OBJECTS + .BYTE PR?AROUND + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WALK-AROUND + .BYTE 1 ;OBJECTS + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?THROUGH + .BYTE 1 ;OBJECTS + .BYTE PR?OVER + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?THROUGH + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?THROUGH + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WALK + .ENDT + +ST?QUIT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?QUIT + .ENDT + +ST?FIND:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FIND + .ENDT + +ST?FILFRE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FILFRE + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FILFRE + .ENDT + +ST?DESTROY:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?DOWN + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR+SH+SC + .BYTE SH+SC+STAKE + .BYTE V?MUNG + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR+SH+SC + .BYTE SH+SC+STAKE + .BYTE V?MUNG + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?MUNG + .ENDT + +ST?AVOID:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?AVOID + .ENDT + +ST?KREBF:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?KREBF + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?KREBF + .ENDT + +ST?UNLOCK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE SOG+SIR + .BYTE SH+SC+SOG+SIR+STAKE + .BYTE V?UNLOCK + .ENDT + +ST?READ:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE READBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?READ + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE READBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?READ + .ENDT + +ST?SAY:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SAY + .BYTE 1 ;OBJECTS + .BYTE PR?TO + .BYTE 0 + .BYTE VICBIT + .BYTE 0 + .BYTE SIR + .BYTE 0 + .BYTE V?TELL + .ENDT + +ST?JUMP:: .TABLE + .BYTE 6 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?OFF + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .BYTE 1 ;OBJECTS + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .BYTE 1 ;OBJECTS + .BYTE PR?ACROSS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .BYTE 1 ;OBJECTS + .BYTE PR?OVER + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAP + .ENDT + +ST?POUR:: .TABLE + .BYTE 4 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?DROP + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?POUR-ON + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?DROP + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?DROP + .ENDT + +ST?WAIT:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WAIT-FOR + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WAIT + .ENDT + +ST?NITFOL:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?NITFOL + .ENDT + +ST?BLORB:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?BLORB + .ENDT + +ST?TAKE:: .TABLE + .BYTE 10 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?BRING + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?FROM + .BYTE TAKEBIT + .BYTE 0 + .BYTE SIR+SC+SMANY + .BYTE 0 + .BYTE V?TAKE + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?OFF + .BYTE TAKEBIT + .BYTE 0 + .BYTE SC+SIR+SMANY + .BYTE 0 + .BYTE V?TAKE + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?OUT + .BYTE TAKEBIT + .BYTE 0 + .BYTE SC+SIR+SMANY + .BYTE 0 + .BYTE V?TAKE + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE RLANDBIT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?STAND + .BYTE 1 ;OBJECTS + .BYTE PR?OFF + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?DISEMBARK + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-ON + .BYTE 1 ;OBJECTS + .BYTE PR?OUT + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG + .BYTE 0 + .BYTE V?DISEMBARK + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?BOARD + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE TAKEBIT + .BYTE 0 + .BYTE SOG+SIR+SMANY + .BYTE 0 + .BYTE V?TAKE + .ENDT + +ST?GAG:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?GAG + .ENDT + +ST?COUNT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?COUNT + .ENDT + +ST?RAISE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RAISE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RAISE + .ENDT + +ST?FOLLOW:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FOLLOW + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FOLLOW + .ENDT + +ST?FLY:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WALK + .ENDT + +ST?VERSION:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?VERSION + .ENDT + +ST?WIND:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WIND + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WIND + .ENDT + +ST?#UNRECORD:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?$UNRECORD + .ENDT + +ST?LIGHT:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE LIGHTBIT + .BYTE FLAMEBIT + .BYTE SH+SC+SOG+SIR + .BYTE SH+SC+SHAVE + .BYTE V?BURN + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE LIGHTBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?LAMP-ON + .ENDT + +ST?LIE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?DOWN + .BYTE 0 + .BYTE RLANDBIT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LIE-DOWN + .ENDT + +ST?MOVE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?MOVE + .ENDT + +ST?PLAY:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PLAY + .ENDT + +ST?OPEN:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE DOORBIT + .BYTE TOOLBIT + .BYTE SH+SC+SOG+SIR + .BYTE SOG+SIR+SH+SC+SHAVE + .BYTE V?OPEN + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE DOORBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?OPEN + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE DOORBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?OPEN + .ENDT + +ST?TOUCH:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RUB + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RUB + .ENDT + +ST?BLOW:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?OUT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LAMP-OFF + .ENDT + +ST?#COMMAND:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?$COMMAND + .ENDT + +ST?KNOCK:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?DOWN + .BYTE 0 + .BYTE VICBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?ATTACK + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?KNOCK + .BYTE 1 ;OBJECTS + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?KNOCK + .ENDT + +ST?WRITE:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?ON + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WRITE-ON + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WRITE-ON + .BYTE 1 ;OBJECTS + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WRITE-WITH + .ENDT + +ST?MELBOR:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?MELBOR + .ENDT + +ST?PICK:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE TAKEBIT + .BYTE 0 + .BYTE SOG+SMANY + .BYTE 0 + .BYTE V?TAKE + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PICK + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PICK + .ENDT + +ST?DEFLATE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DEFLATE + .ENDT + +ST?BOARD:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?BOARD + .ENDT + +ST?REZROV:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?REZROV + .ENDT + +ST?APPLY:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUT + .ENDT + +ST?#RANDOM:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?$RANDOM + .ENDT + +ST?KULCAD:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?KULCAD + .ENDT + +ST?ESCAPE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ESCAPE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ESCAPE + .ENDT + +ST?PRAY:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PRAY + .ENDT + +ST?STAND:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE RLANDBIT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?STAND + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?STAND + .ENDT + +ST?LISTEN:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LISTEN + .BYTE 1 ;OBJECTS + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LISTEN + .ENDT + +ST?TIE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?UP + .BYTE PR?WITH + .BYTE VICBIT + .BYTE TOOLBIT + .BYTE SOG+SIR + .BYTE SOG+SIR+SH+SC+SHAVE + .BYTE V?TIE-UP + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?TIE + .ENDT + +ST?SHOW:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SSHOW + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SHOW + .ENDT + +ST?SAVE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SAVE + .ENDT + +ST?TELL:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VICBIT + .BYTE 0 + .BYTE SIR + .BYTE 0 + .BYTE V?TELL + .ENDT + +ST?THROW:: .TABLE + .BYTE 6 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE 0 + .BYTE V?PUT + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE 0 + .BYTE V?PUT + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE SOG+SIR + .BYTE V?THROW + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?OVER + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE 0 + .BYTE V?THROW-OFF + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?OFF + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE 0 + .BYTE V?THROW-OFF + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE SOG+SIR + .BYTE V?THROW + .ENDT + +ST?ZORK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ZORK + .ENDT + +ST?LOWER:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOWER + .ENDT + +ST?HIDE:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE SH+SHAVE + .BYTE 0 + .BYTE V?HIDE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SHAVE + .BYTE 0 + .BYTE V?HIDE + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?HIDE + .ENDT + +ST?SHAKE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SHAKE + .ENDT + +ST?INVENTORY:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?INVENTORY + .ENDT + +ST?ATTACK:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE VILLAIN + .BYTE WEAPONBIT + .BYTE SOG+SIR + .BYTE SH+SC+SHAVE + .BYTE V?ATTACK + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VILLAIN + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?ATTACK + .ENDT + +ST?FROTZ:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FROTZ + .ENDT + +ST?KILL:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE VILLAIN + .BYTE WEAPONBIT + .BYTE SOG+SIR + .BYTE SH+SC+SHAVE + .BYTE V?KILL + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VILLAIN + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?KILL + .ENDT + +ST?SPELLS:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SPELLS + .ENDT + +ST?MEMORIZE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MEMORIZE + .ENDT + +ST?ENTER:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?THROUGH + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ENTER + .ENDT + +ST?SEARCH:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FIND + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SEARCH + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SEARCH + .ENDT + +ST?WEAR:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WEAR + .ENDT + +ST?ERASE:: .TABLE + .BYTE 9 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .BYTE 2 ;OBJECTS + .BYTE PR?BETWEEN + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ERASE-LINE-TO + .BYTE 2 ;OBJECTS + .BYTE PR?FROM + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ERASE-LINE-TO + .BYTE 2 ;OBJECTS + .BYTE PR?BETWEEN + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .BYTE 1 ;OBJECTS + .BYTE PR?BETWEEN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .BYTE 2 ;OBJECTS + .BYTE PR?OUT + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .BYTE 1 ;OBJECTS + .BYTE PR?OUT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .BYTE 2 ;OBJECTS + .BYTE PR?FROM + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .BYTE 1 ;OBJECTS + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?ERASE-LINE + .ENDT + +ST?SHARPEN:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE 0 + .BYTE SHAVE + .BYTE V?SHARPEN + .ENDT + +ST?GROSS:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?OUT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?GROSS-OUT + .ENDT + +ST?DISEMBARK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?DISEMBARK + .ENDT + +ST?SWIM:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SWIM + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SWIM + .ENDT + +ST?LUBRICATE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE V?OIL + .ENDT + +ST?PLUG:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PLUG + .ENDT + +ST?UNTIE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR+SH+SC + .BYTE 0 + .BYTE V?UNTIE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR+SH+SC + .BYTE 0 + .BYTE V?UNTIE + .ENDT + +ST?PUMP:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?UP + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUMP + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUMP + .ENDT + +ST?CUT:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?WITH + .BYTE PR?WITH + .BYTE 0 + .BYTE WEAPONBIT + .BYTE 0 + .BYTE SC+SH + .BYTE V?CUT + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE WEAPONBIT + .BYTE 0 + .BYTE SC+SH + .BYTE V?CUT + .ENDT + +ST?MELT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE FLAMEBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE V?MELT + .ENDT + +ST?UNSCRIPT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?UNSCRIPT + .ENDT + +ST?GUNCHO:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?GUNCHO + .ENDT + +ST?PUSH:: .TABLE + .BYTE 5 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?UNDER + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUT-UNDER + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG + .BYTE 0 + .BYTE V?PUSH-TO + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG + .BYTE 0 + .BYTE V?PUSH-TO + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG+SMANY + .BYTE 0 + .BYTE V?PUSH + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG+SMANY + .BYTE 0 + .BYTE V?PUSH + .ENDT + +ST?ZIFMIA:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ZIFMIA + .ENDT + +ST?SUPER:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SUPER-BRIEF + .ENDT + +ST?OZMOO:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?OZMOO + .ENDT + +ST?REACH:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?REACH-IN + .ENDT + +ST?VAXUM:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?VAXUM + .ENDT + +ST?DIG:: .TABLE + .BYTE 4 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?IN + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE SOG+SIR + .BYTE SH+SC+SHAVE + .BYTE V?DIG + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE SOG+SIR + .BYTE SH+SC+SHAVE + .BYTE V?DIG + .BYTE 1 ;OBJECTS + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DIG + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DIG + .ENDT + +ST?SEND:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SEND + .ENDT + +ST?SCORE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SCORE + .ENDT + +ST?EXORCISE:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?AWAY + .BYTE 0 + .BYTE VILLAIN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXORCISE + .BYTE 1 ;OBJECTS + .BYTE PR?OUT + .BYTE 0 + .BYTE VILLAIN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXORCISE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXORCISE + .ENDT + +ST?IZYUK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?IZYUK + .ENDT + +ST?CLEESH:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CLEESH + .ENDT + +ST?EXEX:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXEX + .ENDT + +ST?CONNECT:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?MAKE-LINE-TO + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MAKE-LINE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MAKE-LINE + .ENDT + +ST?LOOK:: .TABLE + .BYTE 12 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CHASTISE + .BYTE 1 ;OBJECTS + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FIND + .BYTE 2 ;OBJECTS + .BYTE PR?AT + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SOG+SIR+SMANY + .BYTE 0 + .BYTE V?READ + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SOG+SIR+SMANY + .BYTE 0 + .BYTE V?LOOK-INSIDE + .BYTE 1 ;OBJECTS + .BYTE PR?BEHIND + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK-BEHIND + .BYTE 1 ;OBJECTS + .BYTE PR?UNDER + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK-UNDER + .BYTE 1 ;OBJECTS + .BYTE PR?OUT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK-INSIDE + .BYTE 1 ;OBJECTS + .BYTE PR?THROUGH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK-INSIDE + .BYTE 1 ;OBJECTS + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK-INSIDE + .BYTE 1 ;OBJECTS + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SOG+SIR+SMANY + .BYTE 0 + .BYTE V?EXAMINE + .BYTE 1 ;OBJECTS + .BYTE PR?AROUND + .BYTE 0 + .BYTE RLANDBIT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LOOK + .ENDT + +ST?GNUSTO:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?GNUSTO + .ENDT + +ST?SPRAY:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SSPRAY + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SPRAY + .ENDT + +ST?CAST:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CAST + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CAST + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CAST + .ENDT + +ST?DROP:: .TABLE + .BYTE 4 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?DOWN + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?PUT + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SMANY+SHAVE + .BYTE 0 + .BYTE V?DROP + .ENDT + +ST?BACK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?BACK + .ENDT + +ST?TIME:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?TIME + .ENDT + +ST?ROLL:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?MOVE + .ENDT + +ST?LEAVE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DROP + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LEAVE + .ENDT + +ST?CURSE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VILLAIN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CURSES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CURSES + .ENDT + +ST?REPENT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?REPENT + .ENDT + +ST?SCRIPT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SCRIPT + .ENDT + +ST?SPIN:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SPIN + .ENDT + +ST?$VERIFY:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?$VERIFY + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?$VERIFY + .ENDT + +ST?EXTINGUISH:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE LIGHTBIT + .BYTE 0 + .BYTE SMANY+SH+SC+SOG+SIR+STAKE+SHAVE + .BYTE 0 + .BYTE V?LAMP-OFF + .ENDT + +ST?SWING:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?AT + .BYTE WEAPONBIT + .BYTE VILLAIN + .BYTE SH+SC+SHAVE + .BYTE SOG+SIR + .BYTE V?SWING + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE WEAPONBIT + .BYTE 0 + .BYTE SH+SC+SHAVE + .BYTE 0 + .BYTE V?SWING + .ENDT + +ST?RESTART:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RESTART + .ENDT + +ST?POKE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE VILLAIN + .BYTE WEAPONBIT + .BYTE SOG+SIR + .BYTE SH+SC+SHAVE + .BYTE V?MUNG + .ENDT + +ST?SMELL:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SMELL + .ENDT + +ST?BRIEF:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?BRIEF + .ENDT + +ST?DIAGNOSE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DIAGNOSE + .ENDT + +ST?GIVE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VICBIT + .BYTE 0 + .BYTE SOG + .BYTE SMANY+SH+SHAVE + .BYTE V?SGIVE + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE VICBIT + .BYTE SMANY+SH+SHAVE + .BYTE SOG + .BYTE V?GIVE + .ENDT + +ST?SLEEP:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG + .BYTE 0 + .BYTE V?BOARD + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG + .BYTE 0 + .BYTE V?BOARD + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SLEEP + .ENDT + +ST?WAKE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ALARM + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ALARM + .ENDT + +ST?DRINK:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?DRINK-FROM + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?DRINK + .ENDT + +ST?ANSWER:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?REPLY + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ANSWER + .ENDT + +ST?MUMBLE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?MUMBLE + .ENDT + +ST?YELL:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?YELL + .BYTE 1 ;OBJECTS + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WAVE-AT + .ENDT + +ST?LOCK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE SOG+SIR + .BYTE SH+SC+SOG+SIR+STAKE + .BYTE V?LOCK + .ENDT + +ST?BURN:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?DOWN + .BYTE PR?WITH + .BYTE BURNBIT + .BYTE FLAMEBIT + .BYTE SH+SC+SOG+SIR + .BYTE SH+SC+SOG+SIR+SHAVE + .BYTE V?BURN + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE BURNBIT + .BYTE FLAMEBIT + .BYTE SH+SC+SOG+SIR + .BYTE SH+SC+SOG+SIR+SHAVE + .BYTE V?BURN + .ENDT + +ST?KICK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?KICK + .ENDT + +ST?PLUGH:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ADVENT + .ENDT + +ST?POINT:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?POINT + .BYTE 1 ;OBJECTS + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?POINT + .ENDT + +ST?TURN:: .TABLE + .BYTE 6 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?OFF + .BYTE 0 + .BYTE LIGHTBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR+STAKE + .BYTE 0 + .BYTE V?LAMP-OFF + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE LIGHTBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR+STAKE + .BYTE 0 + .BYTE V?LAMP-ON + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE 0 + .BYTE TOOLBIT + .BYTE SH+SC+SOG+SIR + .BYTE SOG+SIR+SH+SC+SHAVE + .BYTE V?TURN + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?TURN + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?TURN + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?TURN + .ENDT + +ST?CROSS:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?CROSS + .ENDT + +ST?#RECORD:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?$RECORD + .ENDT + +ST?WHO:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WHO + .ENDT + +ST?MAKE:: .TABLE + .BYTE 8 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE PR?BETWEEN + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?MAKE-LINE-TO + .BYTE 2 ;OBJECTS + .BYTE PR?FROM + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?MAKE-LINE-TO + .BYTE 2 ;OBJECTS + .BYTE PR?BETWEEN + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MAKE-LINE + .BYTE 1 ;OBJECTS + .BYTE PR?BETWEEN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MAKE-LINE + .BYTE 2 ;OBJECTS + .BYTE PR?FROM + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MAKE-LINE + .BYTE 1 ;OBJECTS + .BYTE PR?FROM + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?MAKE-LINE + .BYTE 2 ;OBJECTS + .BYTE PR?ON + .BYTE PR?WITH + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DRAW-ON + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?DRAW-ON + .ENDT + +ST?RESTORE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?RESTORE + .ENDT + +ST?CLOSE:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE DOORBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?CLOSE + .ENDT + +ST?STRIKE:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SOG+SIR+SH+SC + .BYTE 0 + .BYTE V?LAMP-ON + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VICBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?ATTACK + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE VICBIT + .BYTE WEAPONBIT + .BYTE SOG+SIR + .BYTE SH+SC+SOG+SIR+SHAVE + .BYTE V?ATTACK + .ENDT + +ST?SLIDE:: .TABLE + .BYTE 4 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG + .BYTE 0 + .BYTE V?PUSH-TO + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SIR+SOG + .BYTE 0 + .BYTE V?PUSH-TO + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?UNDER + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUT-UNDER + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUSH + .ENDT + +ST?WAVE:: .TABLE + .BYTE 4 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?WAVE-AT + .BYTE 1 ;OBJECTS + .BYTE PR?TO + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WAVE-AT + .BYTE 1 ;OBJECTS + .BYTE PR?AT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?WAVE-AT + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC + .BYTE 0 + .BYTE V?WAVE + .ENDT + +ST?EXIT:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXIT + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXIT + .ENDT + +ST?EXAMINE:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SIR+SOG+SMANY + .BYTE 0 + .BYTE V?LOOK-INSIDE + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SIR+SOG+SMANY + .BYTE 0 + .BYTE V?LOOK-INSIDE + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?EXAMINE + .ENDT + +ST?EAT:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SC+SOG+SIR+SMANY + .BYTE 0 + .BYTE V?EAT + .ENDT + +ST?LEAN:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SH+SHAVE + .BYTE 0 + .BYTE V?LEAN-ON + .ENDT + +ST?FILL:: .TABLE + .BYTE 3 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?AT + .BYTE CONTBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?FILL + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE CONTBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?FILL + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?WITH + .BYTE CONTBIT + .BYTE 0 + .BYTE SH+SC+SOG+SIR + .BYTE 0 + .BYTE V?FILL + .ENDT + +ST?SQUEEZE:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?ON + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?PUT + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?SQUEEZE + .ENDT + +ST?GONDAR:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?GONDAR + .ENDT + +ST?CLIMB:: .TABLE + .BYTE 5 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE PR?IN + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?BOARD + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE CLIMBBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-FOO + .BYTE 1 ;OBJECTS + .BYTE PR?DOWN + .BYTE 0 + .BYTE CLIMBBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-DOWN + .BYTE 1 ;OBJECTS + .BYTE PR?UP + .BYTE 0 + .BYTE CLIMBBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-UP + .BYTE 1 ;OBJECTS + .BYTE PR?ON + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE SOG+SIR + .BYTE 0 + .BYTE V?CLIMB-ON + .ENDT + +ST?FORGET:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?FORGET + .ENDT + +ST?LAUNCH:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE VEHBIT + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?LAUNCH + .ENDT + +ST?LEARN:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE SMANY + .BYTE 0 + .BYTE V?LEARN + .ENDT + +ST?THANK:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?THANK + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?THANK + .ENDT + +ST?ASK:: .TABLE + .BYTE 1 ;NUMBER OF SYNTAXES + .BYTE 2 ;OBJECTS + .BYTE 0 + .BYTE PR?FOR + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?ASK-FOR + .ENDT + +ST?HELLO:: .TABLE + .BYTE 2 ;NUMBER OF SYNTAXES + .BYTE 1 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?HELLO + .BYTE 0 ;OBJECTS + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE V?HELLO + .ENDT + + +; THE ACTION CALLING TABLE IS DEFINED HERE + +ATBL:: .TABLE + V-BRIEF + V-SUPER-BRIEF + V-DIAGNOSE + V-INVENTORY + V-QUIT + V-RESTART + V-RESTORE + V-SAVE + V-SCORE + V-$VERIFY + V-VERSION + V-VERBOSE + V-ANSWER + V-REPLY + V-PUT + V-ATTACK + V-BACK + V-BOARD + V-BURN + V-CLIMB-ON + V-CLIMB-UP + V-CLIMB-DOWN + V-CLIMB-FOO + V-LIE-DOWN + V-CLOSE + V-COUNT + V-CROSS + V-CUT + V-CURSES + V-DEFLATE + V-DIG + V-DISEMBARK + V-DRINK + V-DRINK-FROM + V-DROP + V-LEAN-ON + V-EAT + V-ENTER + V-THROUGH + V-EXIT + V-ESCAPE + V-EXAMINE + V-LOOK-INSIDE + V-WHO + V-EXORCISE + V-LAMP-OFF + V-FILL + V-FIND + V-FOLLOW + V-FORGET + V-GIVE + V-SGIVE + V-HELLO + V-INFLATE + V-LEAP + V-KICK + V-KILL + V-KISS + V-KNOCK + V-LAUNCH + V-LEAVE + V-LAMP-ON + V-LISTEN + V-LOCK + V-LOOK + V-LOOK-UNDER + V-LOOK-BEHIND + V-READ + V-CHASTISE + V-SEARCH + V-LOWER + V-MELT + V-MOVE + V-PLAY + V-MUMBLE + V-MUNG + V-OIL + V-OPEN + V-PICK + V-TAKE + V-PLUG + V-ADVENT + V-POINT + V-POUR-ON + V-PRAY + V-PUMP + V-PUSH + V-PUSH-TO + V-PUT-UNDER + V-PUT-ON + V-WEAR + V-PUT-BEHIND + V-HIDE + V-RAISE + V-RAPE + V-REACH-IN + V-REPENT + V-RUB + V-SCRIPT + V-UNSCRIPT + V-SEND + V-SHAKE + V-SLEEP + V-SKIP + V-SMELL + V-SPIN + V-SPRAY + V-SSPRAY + V-SQUEEZE + V-STAND + V-STAY + V-SWIM + V-SWING + V-TELL + V-BRING + V-ASK-FOR + V-SAY + V-THANK + V-THROW + V-THROW-OFF + V-TIE + V-TIE-UP + V-TURN + V-UNLOCK + V-UNTIE + V-WAIT + V-WAIT-FOR + V-ALARM + V-WALK + V-WALK-AROUND + V-WALK-TO + V-WAVE + V-WAVE-AT + V-WIND + V-YELL + V-ZORK + V-SHOW + V-SSHOW + V-DRAW-ON + V-MAKE-LINE + V-MAKE-LINE-TO + V-ERASE-LINE + V-ERASE-LINE-TO + V-CAST + V-LEARN + V-MEMORIZE + V-SPELLS + V-GONDAR + V-GNUSTO + V-FROTZ + V-OZMOO + V-ZIFMIA + V-VAXUM + V-REZROV + V-NITFOL + V-EXEX + V-KULCAD + V-MELBOR + V-BLORB + V-GUNCHO + V-KREBF + V-CLEESH + V-IZYUK + V-FILFRE + V-TIME + V-WRITE-WITH + V-WRITE-ON + V-SHARPEN + V-AVOID + V-GAG + V-GROSS-OUT + V-$RANDOM + V-$COMMAND + V-$RECORD + V-$UNRECORD + .ENDT + +; THE PREACTION CALLING TABLE IS DEFINED HERE + +PATBL:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-PUT + PRE-HIT + 0 + PRE-BOARD + PRE-BURN + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-DIG + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-GIVE + PRE-SGIVE + 0 + 0 + 0 + 0 + PRE-HIT + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-READ + 0 + 0 + 0 + 0 + PRE-MOVE + 0 + 0 + 0 + PRE-OIL + 0 + 0 + PRE-TAKE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-PUT + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-BRING + 0 + 0 + 0 + 0 + 0 + PRE-TIE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-SSHOW + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + PRE-QUICK-CAST + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + + +; PREPOSITION TABLE IS DEFINED HERE + +PRTBL:: .TABLE + .WORD 19 + W?BETWEEN + PR?BETWEEN + W?BEHIND + PR?BEHIND + W?UNDER + PR?UNDER + W?THROUGH + PR?THROUGH + W?AROUND + PR?AROUND + W?FOR + PR?FOR + W?OFF + PR?OFF + W?ACROSS + PR?ACROSS + W?OVER + PR?OVER + W?AT + PR?AT + W?AWAY + PR?AWAY + W?OUT + PR?OUT + W?FROM + PR?FROM + W?IN + PR?IN + W?UP + PR?UP + W?ON + PR?ON + W?DOWN + PR?DOWN + W?WITH + PR?WITH + W?TO + PR?TO + .ENDT + + +; VOCABULARY TABLE IS HERE + +VOCAB:: .TABLE + .BYTE 3 + .BYTE 46 + .BYTE 44 + .BYTE 34 + .BYTE 7 + 723 +W?$VERIFY:: .ZWORD "$verif" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?$VERIFY + .BYTE 0 +W?PERIOD:: .ZWORD "." + .BYTE PS?BUZZ-WORD + .BYTE B?PERIOD + .BYTE 0 +W?COMMA:: .ZWORD "," + .BYTE PS?BUZZ-WORD + .BYTE B?COMMA + .BYTE 0 +W?#COMMAND:: .ZWORD "#comma" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?#COMMAND + .BYTE 0 +W?#RANDOM:: .ZWORD "#rando" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?#RANDOM + .BYTE 0 +W?#RECORD:: .ZWORD "#recor" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?#RECORD + .BYTE 0 +W?#UNRECORD:: .ZWORD "#unrec" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?#UNRECORD + .BYTE 0 +W?QUOTE:: .ZWORD """" + .BYTE PS?BUZZ-WORD + .BYTE B?QUOTE + .BYTE 0 +W?A:: .ZWORD "a" + .BYTE PS?BUZZ-WORD + .BYTE B?A + .BYTE 0 +W?ACROSS:: .ZWORD "across" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?ACROSS + .BYTE 0 +W?ADVENTURER:: .ZWORD "advent" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?AGAIN:: .ZWORD "again" + .BYTE PS?BUZZ-WORD + .BYTE B?AGAIN + .BYTE 0 +W?ALL:: .ZWORD "all" + .BYTE PS?BUZZ-WORD + .BYTE B?ALL + .BYTE 0 +W?ALTAR:: .ZWORD "altar" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?AN:: .ZWORD "an" + .BYTE PS?BUZZ-WORD + .BYTE B?AN + .BYTE 0 +W?ANCIENT:: .ZWORD "ancien" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ANCIENT + .BYTE 0 +W?AND:: .ZWORD "and" + .BYTE PS?BUZZ-WORD + .BYTE B?AND + .BYTE 0 +W?ANSWER:: .ZWORD "answer" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ANSWER + .BYTE 0 +W?APPLY:: .ZWORD "apply" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?APPLY + .BYTE 0 +W?ARCANE:: .ZWORD "arcane" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ARCANE + .BYTE 0 +W?ARCH:: .ZWORD "arch" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ARCHWAY:: .ZWORD "archwa" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?AREA:: .ZWORD "area" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?AROUND:: .ZWORD "around" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?AROUND + .BYTE 0 +W?ASHES:: .ZWORD "ashes" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ASK:: .ZWORD "ask" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ASK + .BYTE 0 +W?AT:: .ZWORD "at" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?AT + .BYTE 0 +W?ATTACH:: .ZWORD "attach" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TIE + .BYTE 0 +W?ATTACK:: .ZWORD "attack" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ATTACK + .BYTE 0 +W?AVOID:: .ZWORD "avoid" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?AVOID + .BYTE 0 +W?AWAKE:: .ZWORD "awake" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAKE + .BYTE 0 +W?AWAY:: .ZWORD "away" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?AWAY + .BYTE 0 +W?B:: .ZWORD "b" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BACK:: .ZWORD "back" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BACK + .BYTE 0 +W?BADLY:: .ZWORD "badly" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BADLY + .BYTE 0 +W?BANISH:: .ZWORD "banish" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXORCISE + .BYTE 0 +W?BANQUET:: .ZWORD "banque" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BANQUET + .BYTE 0 +W?BARE:: .ZWORD "bare" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BARE + .BYTE 0 +W?BAT:: .ZWORD "bat" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BATHE:: .ZWORD "bathe" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SWIM + .BYTE 0 +W?BATS:: .ZWORD "bats" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BATTERED:: .ZWORD "batter" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BATTERED + .BYTE 0 +W?BEACH:: .ZWORD "beach" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BEAUTIFUL:: .ZWORD "beauti" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BEAUTIFUL + .BYTE 0 +W?BECKON:: .ZWORD "beckon" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAVE + .BYTE 0 +W?BED:: .ZWORD "bed" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BEDPOST:: .ZWORD "bedpos" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BEDRAGGLED:: .ZWORD "bedrag" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BEDRAGGLED + .BYTE 0 +W?BEGONE:: .ZWORD "begone" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXORCISE + .BYTE 0 +W?BEHIND:: .ZWORD "behind" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?BEHIND + .BYTE 0 +W?BEING:: .ZWORD "being" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BEINGS:: .ZWORD "beings" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BELBOZ:: .ZWORD "belboz" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BELOW:: .ZWORD "below" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?UNDER + .BYTE 0 +W?BENCH:: .ZWORD "bench" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BENCHES:: .ZWORD "benche" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BENEATH:: .ZWORD "beneat" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?UNDER + .BYTE 0 +W?BETWEEN:: .ZWORD "betwee" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?BETWEEN + .BYTE 0 +W?BITE:: .ZWORD "bite" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KICK + .BYTE 0 +W?BLACK:: .ZWORD "black" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BLACK + .BYTE 0 +W?BLADE:: .ZWORD "blade" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BLIND:: .ZWORD "blind" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?POKE + .BYTE 0 +W?BLINKING:: .ZWORD "blinki" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BLINKING + .BYTE 0 +W?BLOCK:: .ZWORD "block" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BLORB:: .ZWORD "blorb" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BLORB + .BYTE ACT?BLORB +W?BLOW:: .ZWORD "blow" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BLOW + .BYTE 0 +W?BLUEBOTTLE:: .ZWORD "bluebo" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BOARD:: .ZWORD "board" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BOARD + .BYTE 0 +W?BONES:: .ZWORD "bones" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BOOK:: .ZWORD "book" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BOX:: .ZWORD "box" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BRAMBLE:: .ZWORD "brambl" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BRANCH:: .ZWORD "branch" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BRANDISH:: .ZWORD "brandi" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAVE + .BYTE 0 +W?BRASS:: .ZWORD "brass" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BRASS + .BYTE 0 +W?BREAD:: .ZWORD "bread" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BREAK:: .ZWORD "break" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DESTROY + .BYTE 0 +W?BRIEF:: .ZWORD "brief" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BRIEF + .BYTE 0 +W?BRING:: .ZWORD "bring" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BRING + .BYTE 0 +W?BRITTLE:: .ZWORD "brittl" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BRITTLE + .BYTE 0 +W?BROKEN:: .ZWORD "broken" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?BROKEN + .BYTE 0 +W?BROOK:: .ZWORD "brook" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?BURN:: .ZWORD "burn" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BURN + .BYTE 0 +W?BUT:: .ZWORD "but" + .BYTE PS?BUZZ-WORD + .BYTE B?BUT + .BYTE 0 +W?BUTTON:: .ZWORD "button" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CABINET:: .ZWORD "cabine" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CALL:: .ZWORD "call" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SAY + .BYTE 0 +W?CANDLE:: .ZWORD "candle" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CANVAS:: .ZWORD "canvas" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CARRY:: .ZWORD "carry" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TAKE + .BYTE 0 +W?CARVING:: .ZWORD "carvin" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?OBJECT + .BYTE O?ANY + .BYTE A?CARVING +W?CAST:: .ZWORD "cast" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CAST + .BYTE 0 +W?CASTLE:: .ZWORD "castle" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CAVE:: .ZWORD "cave" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CEILIN:: .ZWORD "ceilin" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CELL:: .ZWORD "cell" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?OBJECT + .BYTE O?ANY + .BYTE A?CELL +W?CHAIN:: .ZWORD "chain" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CHAINS:: .ZWORD "chains" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CHASE:: .ZWORD "chase" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FOLLOW + .BYTE 0 +W?CHEST:: .ZWORD "chest" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CHESTS:: .ZWORD "chests" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CHUCK:: .ZWORD "chuck" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?THROW + .BYTE 0 +W?CLEESH:: .ZWORD "cleesh" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?CLEESH + .BYTE ACT?CLEESH +W?CLIMB:: .ZWORD "climb" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CLIMB + .BYTE 0 +W?CLOSE:: .ZWORD "close" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CLOSE + .BYTE 0 +W?COBWEBS:: .ZWORD "cobweb" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?COIL:: .ZWORD "coil" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?COILS:: .ZWORD "coils" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?COME:: .ZWORD "come" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FOLLOW + .BYTE 0 +W?COMPARTMENT:: .ZWORD "compar" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CONCEAL:: .ZWORD "concea" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?HIDE + .BYTE 0 +W?CONNECT:: .ZWORD "connec" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CONNECT + .BYTE 0 +W?CONSUME:: .ZWORD "consum" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EAT + .BYTE 0 +W?CONTROL:: .ZWORD "contro" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CORRIDOR:: .ZWORD "corrid" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?COUNT:: .ZWORD "count" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?COUNT + .BYTE 0 +W?COUPLE:: .ZWORD "couple" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?COURTYARD:: .ZWORD "courty" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CRACK:: .ZWORD "crack" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DESTROY + .BYTE 0 +W?CRANK:: .ZWORD "crank" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CRONE:: .ZWORD "crone" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CROSS:: .ZWORD "cross" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CROSS + .BYTE 0 +W?CRUMPLED:: .ZWORD "crumpl" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?CRUMPLED + .BYTE 0 +W?CRYSTAL:: .ZWORD "crysta" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?CURSE:: .ZWORD "curse" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CURSE + .BYTE 0 +W?CUT:: .ZWORD "cut" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CUT + .BYTE 0 +W?CUTLERY:: .ZWORD "cutler" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?D:: .ZWORD "d" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?DOWN + .BYTE 22 +W?DAGGER:: .ZWORD "dagger" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DAMAGE:: .ZWORD "damage" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DESTROY + .BYTE 0 +W?DAMN:: .ZWORD "damn" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CURSE + .BYTE 0 +W?DAMP:: .ZWORD "damp" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DAMP + .BYTE 0 +W?DARK:: .ZWORD "dark" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DARK + .BYTE 0 +W?DEAD:: .ZWORD "dead" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DEAD + .BYTE 0 +W?DECORATIONS:: .ZWORD "decora" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DECREPIT:: .ZWORD "decrep" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DECREPIT + .BYTE 0 +W?DEFLATE:: .ZWORD "deflat" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DEFLATE + .BYTE 0 +W?DELICIOUS:: .ZWORD "delici" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DELICIOUS + .BYTE 0 +W?DESCRIBE:: .ZWORD "descri" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXAMINE + .BYTE 0 +W?DESTROY:: .ZWORD "destro" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DESTROY + .BYTE 0 +W?DIAGNOSE:: .ZWORD "diagno" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DIAGNOSE + .BYTE 0 +W?DIAL:: .ZWORD "dial" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DIALS:: .ZWORD "dials" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DIAMOND:: .ZWORD "diamon" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DIAMOND + .BYTE 0 +W?DIG:: .ZWORD "dig" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DIG + .BYTE 0 +W?DIMWIT:: .ZWORD "dimwit" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DIMWIT + .BYTE 0 +W?DISCONNECT:: .ZWORD "discon" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ERASE + .BYTE 0 +W?DISEMBARK:: .ZWORD "disemb" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DISEMBARK + .BYTE 0 +W?DISPATCH:: .ZWORD "dispat" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KILL + .BYTE 0 +W?DISPLAY:: .ZWORD "displa" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DIVE:: .ZWORD "dive" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?JUMP + .BYTE 0 +W?DOG:: .ZWORD "dog" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DONATE:: .ZWORD "donate" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?GIVE + .BYTE 0 +W?DOOR:: .ZWORD "door" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DOUSE:: .ZWORD "douse" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXTINGUISH + .BYTE 0 +W?DOWN:: .ZWORD "down" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?DOWN + .BYTE 22 +W?DRAGON:: .ZWORD "dragon" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DRAW:: .ZWORD "draw" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MAKE + .BYTE 0 +W?DRINK:: .ZWORD "drink" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DRINK + .BYTE 0 +W?DRIPPING:: .ZWORD "drippi" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DRIPPING + .BYTE 0 +W?DRIVE:: .ZWORD "drive" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXORCISE + .BYTE 0 +W?DRONING:: .ZWORD "dronin" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?DROP:: .ZWORD "drop" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DROP + .BYTE 0 +W?DRY:: .ZWORD "dry" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DRY + .BYTE 0 +W?DUSTY:: .ZWORD "dusty" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?DUSTY + .BYTE 0 +W?E:: .ZWORD "e" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 29 + .BYTE 0 +W?EAST:: .ZWORD "east" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 29 + .BYTE 0 +W?EAT:: .ZWORD "eat" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EAT + .BYTE 0 +W?EGG:: .ZWORD "egg" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ELVISH:: .ZWORD "elvish" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ELVISH + .BYTE 0 +W?EMERALD:: .ZWORD "emeral" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?EMERALD + .BYTE 0 +W?ENAMELLED:: .ZWORD "enamel" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ENAMELLED + .BYTE 0 +W?ENCHANTER:: .ZWORD "enchan" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ENORMOUS:: .ZWORD "enormo" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ENORMOUS + .BYTE 0 +W?ENTER:: .ZWORD "enter" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ENTER + .BYTE 0 +W?ENTHARION:: .ZWORD "enthar" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ENTRANCE:: .ZWORD "entran" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ERASE:: .ZWORD "erase" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ERASE + .BYTE 0 +W?ERASER:: .ZWORD "eraser" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ESCAPE:: .ZWORD "escape" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ESCAPE + .BYTE 0 +W?EVIL:: .ZWORD "evil" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?EVIL + .BYTE 0 +W?EXAMINE:: .ZWORD "examin" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXAMINE + .BYTE 0 +W?EXCEPT:: .ZWORD "except" + .BYTE PS?BUZZ-WORD + .BYTE B?EXCEPT + .BYTE 0 +W?EXEX:: .ZWORD "exex" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?EXEX + .BYTE ACT?EXEX +W?EXIT:: .ZWORD "exit" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXIT + .BYTE 0 +W?EXORCISE:: .ZWORD "exorci" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXORCISE + .BYTE 0 +W?EXTINGUISH:: .ZWORD "exting" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXTINGUISH + .BYTE 0 +W?F:: .ZWORD "f" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FABERGE:: .ZWORD "faberg" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FABERGE + .BYTE 0 +W?FACE:: .ZWORD "face" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FADED:: .ZWORD "faded" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FADED + .BYTE 0 +W?FANGS:: .ZWORD "fangs" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FARM:: .ZWORD "farm" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FASTEN:: .ZWORD "fasten" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TIE + .BYTE 0 +W?FEATHER:: .ZWORD "feathe" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FEATHER + .BYTE 0 +W?FEED:: .ZWORD "feed" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?GIVE + .BYTE 0 +W?FEEL:: .ZWORD "feel" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TOUCH + .BYTE 0 +W?FERAL:: .ZWORD "feral" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FERAL + .BYTE 0 +W?FESTIVE:: .ZWORD "festiv" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FESTIVE + .BYTE 0 +W?FIGHT:: .ZWORD "fight" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ATTACK + .BYTE 0 +W?FIGURE:: .ZWORD "figure" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FILFRE:: .ZWORD "filfre" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FILFRE + .BYTE ACT?FILFRE +W?FILL:: .ZWORD "fill" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FILL + .BYTE 0 +W?FIND:: .ZWORD "find" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FIND + .BYTE 0 +W?FIRST:: .ZWORD "first" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FIRST + .BYTE 0 +W?FIVE-HEADED:: .ZWORD "five-h" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FIVE-HEADED + .BYTE 0 +W?FIX:: .ZWORD "fix" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUG + .BYTE 0 +W?FIXTURE:: .ZWORD "fixtur" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FLAME:: .ZWORD "flame" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FLAMES:: .ZWORD "flames" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FLATHEAD:: .ZWORD "flathe" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FLATHEAD + .BYTE 0 +W?FLIP:: .ZWORD "flip" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TURN + .BYTE 0 +W?FLOATING:: .ZWORD "floati" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FLOATING + .BYTE 0 +W?FLOOR:: .ZWORD "floor" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FLOTSAM:: .ZWORD "flotsa" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FLY:: .ZWORD "fly" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?FLY +W?FOLLOW:: .ZWORD "follow" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FOLLOW + .BYTE 0 +W?FOOBAR:: .ZWORD "foobar" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FOOD:: .ZWORD "food" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FOR:: .ZWORD "for" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?FOR + .BYTE 0 +W?FORCE:: .ZWORD "force" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FORD:: .ZWORD "ford" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CROSS + .BYTE 0 +W?FOREST:: .ZWORD "forest" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FORGET:: .ZWORD "forget" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FORGET + .BYTE 0 +W?FORMATION:: .ZWORD "format" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FOUNDATION:: .ZWORD "founda" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FOURPOSTER:: .ZWORD "fourpo" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FOURPOSTER + .BYTE 0 +W?FRAYED:: .ZWORD "frayed" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FRAYED + .BYTE 0 +W?FREE:: .ZWORD "free" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNTIE + .BYTE 0 +W?FROBOZZ:: .ZWORD "froboz" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FROBOZZ + .BYTE 0 +W?FROG:: .ZWORD "frog" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FROGS:: .ZWORD "frogs" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?FROM:: .ZWORD "from" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?FROM + .BYTE 0 +W?FROTZ:: .ZWORD "frotz" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?FROTZ + .BYTE ACT?FROTZ +W?G:: .ZWORD "g" + .BYTE PS?BUZZ-WORD + .BYTE B?G + .BYTE 0 +W?GAG:: .ZWORD "gag" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?GAG + .BYTE 0 +W?GARBAGE:: .ZWORD "garbag" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GARBAGE + .BYTE 0 +W?GARGOYLE:: .ZWORD "gargoy" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GATE:: .ZWORD "gate" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GAUNT:: .ZWORD "gaunt" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GAUNT + .BYTE 0 +W?GAZE:: .ZWORD "gaze" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LOOK + .BYTE 0 +W?GESTURE:: .ZWORD "gestur" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?POINT + .BYTE ACT?POINT +W?GET:: .ZWORD "get" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TAKE + .BYTE 0 +W?GIVE:: .ZWORD "give" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?GIVE + .BYTE 0 +W?GLASS:: .ZWORD "glass" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GLITTERING:: .ZWORD "glitte" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GLITTERING + .BYTE 0 +W?GLOBE:: .ZWORD "globe" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GLOWING:: .ZWORD "glowin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GLOWING + .BYTE 0 +W?GLUE:: .ZWORD "glue" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUG + .BYTE 0 +W?GNUSTO:: .ZWORD "gnusto" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GNUSTO + .BYTE ACT?GNUSTO +W?GO:: .ZWORD "go" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WALK + .BYTE 0 +W?GOING:: .ZWORD "going" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?BETWEEN + .BYTE 0 +W?GOLD:: .ZWORD "gold" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GOLD + .BYTE 0 +W?GOLDEN:: .ZWORD "golden" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GOLDEN + .BYTE 0 +W?GONDAR:: .ZWORD "gondar" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GONDAR + .BYTE ACT?GONDAR +W?GRAB:: .ZWORD "grab" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TAKE + .BYTE 0 +W?GRAFFITI:: .ZWORD "graffi" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GRASS:: .ZWORD "grass" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GREASE:: .ZWORD "grease" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LUBRICATE + .BYTE 0 +W?GREAT:: .ZWORD "great" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GREAT + .BYTE 0 +W?GROPING:: .ZWORD "gropin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GROPING + .BYTE 0 +W?GROSS:: .ZWORD "gross" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?GROSS + .BYTE 0 +W?GROUND:: .ZWORD "ground" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GROUP:: .ZWORD "group" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GROUP + .BYTE 0 +W?GUARD:: .ZWORD "guard" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GUARDED:: .ZWORD "guarde" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GUARDED + .BYTE 0 +W?GUARDS:: .ZWORD "guards" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?GUNCHO:: .ZWORD "guncho" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GUNCHO + .BYTE ACT?GUNCHO +W?GUTTURAL:: .ZWORD "guttur" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?GUTTURAL + .BYTE 0 +W?H:: .ZWORD "h" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HAIRY:: .ZWORD "hairy" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HAIRY + .BYTE 0 +W?HAMMER:: .ZWORD "hammer" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HAND:: .ZWORD "hand" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?GIVE +W?HANDLE:: .ZWORD "handle" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HANDS:: .ZWORD "hands" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HATCH:: .ZWORD "hatch" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DESTROY + .BYTE 0 +W?HEAP:: .ZWORD "heap" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HEATHER:: .ZWORD "heathe" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HEAVY:: .ZWORD "heavy" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HEAVY + .BYTE 0 +W?HELLO:: .ZWORD "hello" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?HELLO + .BYTE 0 +W?HER:: .ZWORD "her" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HERE:: .ZWORD "here" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HI:: .ZWORD "hi" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?HELLO + .BYTE 0 +W?HIDE:: .ZWORD "hide" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?HIDE + .BYTE 0 +W?HIDEOUS:: .ZWORD "hideou" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HIDEOUS + .BYTE 0 +W?HIGH:: .ZWORD "high" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HIGH + .BYTE 0 +W?HILL:: .ZWORD "hill" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HILLS:: .ZWORD "hills" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HIM:: .ZWORD "him" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HIT:: .ZWORD "hit" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ATTACK + .BYTE 0 +W?HOLD:: .ZWORD "hold" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TAKE + .BYTE 0 +W?HOLE:: .ZWORD "hole" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HONE:: .ZWORD "hone" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SHARPEN + .BYTE 0 +W?HOP:: .ZWORD "hop" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SKIP + .BYTE 0 +W?HOUSE:: .ZWORD "house" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HOVEL:: .ZWORD "hovel" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?HUDDLED:: .ZWORD "huddle" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HUDDLED + .BYTE 0 +W?HUGE:: .ZWORD "huge" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HUGE + .BYTE 0 +W?HUMAN:: .ZWORD "human" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HUMAN + .BYTE 0 +W?HUNCHED:: .ZWORD "hunche" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?HUNCHED + .BYTE 0 +W?HURL:: .ZWORD "hurl" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?THROW + .BYTE 0 +W?HURT:: .ZWORD "hurt" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ATTACK + .BYTE 0 +W?I:: .ZWORD "i" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?INVENTORY + .BYTE 0 +W?IGNITE:: .ZWORD "ignite" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?BURN + .BYTE 0 +W?ILLUMINATED:: .ZWORD "illumi" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ILLUMINATED + .BYTE 0 +W?IMPLEMENTERS:: .ZWORD "implem" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?IN:: .ZWORD "in" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?IN + .BYTE 21 +W?INCANT:: .ZWORD "incant" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CAST + .BYTE 0 +W?INFLAT:: .ZWORD "inflat" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?INFLAT + .BYTE 0 +W?INJURE:: .ZWORD "injure" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ATTACK + .BYTE 0 +W?INSERT:: .ZWORD "insert" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUT + .BYTE 0 +W?INSIDE:: .ZWORD "inside" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?IN + .BYTE 21 +W?INSPECT:: .ZWORD "inspec" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXAMINE + .BYTE 0 +W?INTNUM:: .ZWORD "intnum" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?INTO:: .ZWORD "into" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?IN + .BYTE 21 +W?INVENTORY:: .ZWORD "invent" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?INVENTORY + .BYTE 0 +W?IRON:: .ZWORD "iron" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?IRON + .BYTE 0 +W?IS:: .ZWORD "is" + .BYTE PS?BUZZ-WORD + .BYTE B?IS + .BYTE 0 +W?IT:: .ZWORD "it" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?IZYUK:: .ZWORD "izyuk" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?IZYUK + .BYTE ACT?IZYUK +W?J:: .ZWORD "j" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?JAB:: .ZWORD "jab" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?POKE + .BYTE 0 +W?JETSAM:: .ZWORD "jetsam" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?JEWELLED:: .ZWORD "jewell" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?JEWELLED + .BYTE 0 +W?JUG:: .ZWORD "jug" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?JUMP:: .ZWORD "jump" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?JUMP + .BYTE 0 +W?K:: .ZWORD "k" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?KICK:: .ZWORD "kick" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KICK + .BYTE 0 +W?KILL:: .ZWORD "kill" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KILL + .BYTE 0 +W?KISS:: .ZWORD "kiss" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KISS + .BYTE 0 +W?KNIFE:: .ZWORD "knife" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?KNIVES:: .ZWORD "knives" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?KNOB:: .ZWORD "knob" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?KNOCK:: .ZWORD "knock" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KNOCK + .BYTE 0 +W?KNOT:: .ZWORD "knot" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?KREBF:: .ZWORD "krebf" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?KREBF + .BYTE ACT?KREBF +W?KRILL:: .ZWORD "krill" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?KULCAD:: .ZWORD "kulcad" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?KULCAD + .BYTE ACT?KULCAD +W?L:: .ZWORD "l" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LOOK + .BYTE 0 +W?LABYRINTH:: .ZWORD "labyri" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LAMP:: .ZWORD "lamp" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LANTERN:: .ZWORD "lanter" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LAPIS:: .ZWORD "lapis" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LAPIS + .BYTE 0 +W?LAUNCH:: .ZWORD "launch" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LAUNCH + .BYTE 0 +W?LAWN:: .ZWORD "lawn" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LAWNS:: .ZWORD "lawns" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LAY:: .ZWORD "lay" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUT + .BYTE 0 +W?LEAF:: .ZWORD "leaf" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LEAF + .BYTE 0 +W?LEAN:: .ZWORD "lean" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LEAN + .BYTE 0 +W?LEAP:: .ZWORD "leap" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?JUMP + .BYTE 0 +W?LEARN:: .ZWORD "learn" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LEARN + .BYTE 0 +W?LEAVE:: .ZWORD "leave" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LEAVE + .BYTE 0 +W?LEGEND:: .ZWORD "legend" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LEGEND + .BYTE O?ANY +W?LETTER:: .ZWORD "letter" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LIE:: .ZWORD "lie" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LIE + .BYTE 0 +W?LIFT:: .ZWORD "lift" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?RAISE + .BYTE 0 +W?LIGHT:: .ZWORD "light" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?LIGHT +W?LIGHTED:: .ZWORD "lighte" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LIGHTED + .BYTE 0 +W?LIGHTS:: .ZWORD "lights" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LILIES:: .ZWORD "lilies" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LILY:: .ZWORD "lily" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LILY + .BYTE 0 +W?LINE:: .ZWORD "line" + .BYTE PS?BUZZ-WORD + .BYTE B?LINE + .BYTE 0 +W?LINES:: .ZWORD "lines" + .BYTE PS?BUZZ-WORD + .BYTE B?LINES + .BYTE 0 +W?LINGOLF:: .ZWORD "lingol" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LINGOLF + .BYTE 0 +W?LIQUIFY:: .ZWORD "liquif" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MELT + .BYTE 0 +W?LISTEN:: .ZWORD "listen" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LISTEN + .BYTE 0 +W?LIT:: .ZWORD "lit" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LIT + .BYTE 0 +W?LOAF:: .ZWORD "loaf" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?LOCK:: .ZWORD "lock" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LOCK + .BYTE 0 +W?LONELY:: .ZWORD "lonely" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LONELY + .BYTE 0 +W?LONG:: .ZWORD "long" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LONG + .BYTE 0 +W?LOOK:: .ZWORD "look" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LOOK + .BYTE 0 +W?LOOSE:: .ZWORD "loose" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LOOSE + .BYTE 0 +W?LOW:: .ZWORD "low" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LOW + .BYTE 0 +W?LOWER:: .ZWORD "lower" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LOWER + .BYTE 0 +W?LUBRICATE:: .ZWORD "lubric" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LUBRICATE + .BYTE 0 +W?LURKING:: .ZWORD "lurkin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LURKING + .BYTE 0 +W?LUSCIOUS:: .ZWORD "luscio" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?LUSCIOUS + .BYTE 0 +W?M:: .ZWORD "m" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MACHINE:: .ZWORD "machin" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MAGIC:: .ZWORD "magic" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?MAGIC + .BYTE 0 +W?MAKE:: .ZWORD "make" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MAKE + .BYTE 0 +W?MAP:: .ZWORD "map" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MAPS:: .ZWORD "maps" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MASS:: .ZWORD "mass" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MASSIVE:: .ZWORD "massiv" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?MASSIVE + .BYTE 0 +W?ME:: .ZWORD "me" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MEADOW:: .ZWORD "meadow" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MELBOR:: .ZWORD "melbor" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?MELBOR + .BYTE ACT?MELBOR +W?MELT:: .ZWORD "melt" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MELT + .BYTE 0 +W?MEMORIZE:: .ZWORD "memori" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MEMORIZE + .BYTE 0 +W?MEN:: .ZWORD "men" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MIRROR:: .ZWORD "mirror" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MIST:: .ZWORD "mist" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MISTY:: .ZWORD "misty" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?MISTY + .BYTE 0 +W?MOLEST:: .ZWORD "molest" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?RAPE + .BYTE 0 +W?MONSTER:: .ZWORD "monste" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MOTION:: .ZWORD "motion" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAVE + .BYTE 0 +W?MOUNTAIN:: .ZWORD "mounta" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?MOVE:: .ZWORD "move" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MOVE + .BYTE 0 +W?MUMBLE:: .ZWORD "mumble" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MUMBLE + .BYTE 0 +W?MURDER:: .ZWORD "murder" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KILL + .BYTE 0 +W?MYSELF:: .ZWORD "myself" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?N:: .ZWORD "n" + .BYTE PS?ADJECTIVE+PS?DIRECTION+P1?DIRECTION + .BYTE 31 + .BYTE A?NORTH +W?NAP:: .ZWORD "nap" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?SLEEP +W?NE:: .ZWORD "ne" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 30 + .BYTE 0 +W?NECROMANCER:: .ZWORD "necrom" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?NEST:: .ZWORD "nest" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?NICHE:: .ZWORD "niche" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?NITFOL:: .ZWORD "nitfol" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?NITFOL + .BYTE ACT?NITFOL +W?NO:: .ZWORD "no" + .BYTE PS?BUZZ-WORD + .BYTE B?NO + .BYTE 0 +W?NOISE:: .ZWORD "noise" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?NOISES:: .ZWORD "noises" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?NORTH:: .ZWORD "north" + .BYTE PS?ADJECTIVE+PS?DIRECTION+P1?DIRECTION + .BYTE 31 + .BYTE A?NORTH +W?NW:: .ZWORD "nw" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 24 + .BYTE 0 +W?OAK:: .ZWORD "oak" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?OAK + .BYTE 0 +W?OCEAN:: .ZWORD "ocean" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?OF:: .ZWORD "of" + .BYTE PS?BUZZ-WORD + .BYTE B?OF + .BYTE 0 +W?OFF:: .ZWORD "off" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?OFF + .BYTE 0 +W?OFFER:: .ZWORD "offer" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?GIVE + .BYTE 0 +W?OIL:: .ZWORD "oil" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LUBRICATE + .BYTE 0 +W?OLD:: .ZWORD "old" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?OLD + .BYTE 0 +W?ON:: .ZWORD "on" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?ON + .BYTE 0 +W?ONE:: .ZWORD "one" + .BYTE PS?BUZZ-WORD + .BYTE B?ONE + .BYTE 0 +W?ONTO:: .ZWORD "onto" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?ON + .BYTE 0 +W?OOPS:: .ZWORD "oops" + .BYTE PS?BUZZ-WORD + .BYTE B?OOPS + .BYTE 0 +W?OPEN:: .ZWORD "open" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?OPEN + .BYTE 0 +W?ORNAME:: .ZWORD "orname" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?OBJECT + .BYTE O?ANY + .BYTE A?ORNAME +W?ORNATE:: .ZWORD "ornate" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ORNATE + .BYTE 0 +W?OUT:: .ZWORD "out" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?OUT + .BYTE 20 +W?OUTLINE:: .ZWORD "outlin" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?OVEN:: .ZWORD "oven" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?OVER:: .ZWORD "over" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?OVER + .BYTE 0 +W?OZMOO:: .ZWORD "ozmoo" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?OZMOO + .BYTE ACT?OZMOO +W?P:: .ZWORD "p" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PAD:: .ZWORD "pad" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PADS:: .ZWORD "pads" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PAGE:: .ZWORD "page" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PAINTING:: .ZWORD "painti" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PAPER:: .ZWORD "paper" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PARCHMENT:: .ZWORD "parchm" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?PARCHMENT + .BYTE O?ANY +W?PASSAGE:: .ZWORD "passag" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PAT:: .ZWORD "pat" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TOUCH + .BYTE 0 +W?PATCH:: .ZWORD "patch" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUG + .BYTE 0 +W?PATH:: .ZWORD "path" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PEAK:: .ZWORD "peak" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PEDESTAL:: .ZWORD "pedest" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PENCIL:: .ZWORD "pencil" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PERSON:: .ZWORD "person" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PET:: .ZWORD "pet" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TOUCH + .BYTE 0 +W?PICK:: .ZWORD "pick" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PICK + .BYTE 0 +W?PIERCE:: .ZWORD "pierce" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CUT + .BYTE 0 +W?PLACE:: .ZWORD "place" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?PUT +W?PLAY:: .ZWORD "play" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLAY + .BYTE 0 +W?PLEASE:: .ZWORD "please" + .BYTE PS?BUZZ-WORD + .BYTE B?PLEASE + .BYTE 0 +W?PLUG:: .ZWORD "plug" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUG + .BYTE 0 +W?PLUGH:: .ZWORD "plugh" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUGH + .BYTE 0 +W?POINT:: .ZWORD "point" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?POINT + .BYTE ACT?POINT +W?POKE:: .ZWORD "poke" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?POKE + .BYTE 0 +W?POND:: .ZWORD "pond" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PORTRAIT:: .ZWORD "portra" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?POST:: .ZWORD "post" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?POTTERY:: .ZWORD "potter" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?POTTERY + .BYTE 0 +W?POUR:: .ZWORD "pour" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?POUR + .BYTE 0 +W?POWERFUL:: .ZWORD "powerf" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?POWERFUL + .BYTE 0 +W?PRAY:: .ZWORD "pray" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PRAY + .BYTE 0 +W?PRESENCE:: .ZWORD "presen" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?PRESS:: .ZWORD "press" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUSH + .BYTE 0 +W?PRISON:: .ZWORD "prison" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?PRISON + .BYTE 0 +W?PROCEED:: .ZWORD "procee" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WALK + .BYTE 0 +W?PRY:: .ZWORD "pry" + .BYTE PS?BUZZ-WORD + .BYTE B?PRY + .BYTE 0 +W?PULL:: .ZWORD "pull" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PULL + .BYTE 0 +W?PUMP:: .ZWORD "pump" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUMP + .BYTE 0 +W?PURPLE:: .ZWORD "purple" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?PURPLE + .BYTE 0 +W?PURSUE:: .ZWORD "pursue" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FOLLOW + .BYTE 0 +W?PUSH:: .ZWORD "push" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUSH + .BYTE 0 +W?PUT:: .ZWORD "put" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUT + .BYTE 0 +W?Q:: .ZWORD "q" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?QUIT + .BYTE 0 +W?QUANTITY:: .ZWORD "quanti" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?QUIT:: .ZWORD "quit" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?QUIT + .BYTE 0 +W?R:: .ZWORD "r" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?RAINBOW:: .ZWORD "rainbo" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?RAINBOW + .BYTE 0 +W?RAISE:: .ZWORD "raise" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?RAISE + .BYTE 0 +W?RAP:: .ZWORD "rap" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KNOCK + .BYTE 0 +W?RAPE:: .ZWORD "rape" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?RAPE + .BYTE 0 +W?RAT:: .ZWORD "rat" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?RAT + .BYTE O?ANY +W?RAZOR-SHARP:: .ZWORD "razor-" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?RAZOR-SHARP + .BYTE 0 +W?REACH:: .ZWORD "reach" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?REACH + .BYTE 0 +W?READ:: .ZWORD "read" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?READ + .BYTE 0 +W?RELEASE:: .ZWORD "releas" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DROP + .BYTE 0 +W?REMOVE:: .ZWORD "remove" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TAKE + .BYTE 0 +W?REPAIR:: .ZWORD "repair" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUG + .BYTE 0 +W?REPENT:: .ZWORD "repent" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?REPENT + .BYTE 0 +W?REPLY:: .ZWORD "reply" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ANSWER + .BYTE 0 +W?RESTART:: .ZWORD "restar" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?RESTART + .BYTE 0 +W?RESTORE:: .ZWORD "restor" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?RESTORE + .BYTE 0 +W?REZROV:: .ZWORD "rezrov" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?REZROV + .BYTE ACT?REZROV +W?ROAD:: .ZWORD "road" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ROCK:: .ZWORD "rock" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ROCK + .BYTE 0 +W?ROCKS:: .ZWORD "rocks" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ROCKY:: .ZWORD "rocky" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ROCKY + .BYTE 0 +W?ROLL:: .ZWORD "roll" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ROLL + .BYTE 0 +W?ROLLED:: .ZWORD "rolled" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ROLLED + .BYTE 0 +W?ROLLING:: .ZWORD "rollin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ROLLING + .BYTE 0 +W?ROOM:: .ZWORD "room" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ROPE:: .ZWORD "rope" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?ROTTED:: .ZWORD "rotted" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ROTTED + .BYTE 0 +W?ROTTIN:: .ZWORD "rottin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ROTTIN + .BYTE 0 +W?RUB:: .ZWORD "rub" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ERASE + .BYTE 0 +W?RUINED:: .ZWORD "ruined" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?RUINED + .BYTE 0 +W?RUN:: .ZWORD "run" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WALK + .BYTE 0 +W?RUNES:: .ZWORD "runes" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?RUSTED:: .ZWORD "rusted" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?RUSTED + .BYTE 0 +W?RUSTY:: .ZWORD "rusty" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?RUSTY + .BYTE 0 +W?S:: .ZWORD "s" + .BYTE PS?ADJECTIVE+PS?DIRECTION+P1?DIRECTION + .BYTE 27 + .BYTE A?SOUTH +W?SACRIFICIAL:: .ZWORD "sacrif" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SACRIFICIAL + .BYTE 0 +W?SAFE:: .ZWORD "safe" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SAVE:: .ZWORD "save" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SAVE + .BYTE 0 +W?SAY:: .ZWORD "say" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SAY + .BYTE 0 +W?SCALE:: .ZWORD "scale" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CLIMB + .BYTE 0 +W?SCORE:: .ZWORD "score" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SCORE + .BYTE 0 +W?SCRAMBLED:: .ZWORD "scramb" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SCRAMBLED + .BYTE 0 +W?SCRATCHINGS:: .ZWORD "scratc" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SCREAM:: .ZWORD "scream" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?YELL + .BYTE 0 +W?SCREECHING:: .ZWORD "screec" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SCREECHING + .BYTE 0 +W?SCRIBBLED:: .ZWORD "scribb" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SCRIBBLED + .BYTE 0 +W?SCRIPT:: .ZWORD "script" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SCRIPT + .BYTE 0 +W?SCROLL:: .ZWORD "scroll" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SE:: .ZWORD "se" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 28 + .BYTE 0 +W?SEA:: .ZWORD "sea" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SEARCH:: .ZWORD "search" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SEARCH + .BYTE 0 +W?SEAWEED:: .ZWORD "seawee" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SECURE:: .ZWORD "secure" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TIE + .BYTE 0 +W?SEE:: .ZWORD "see" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FIND + .BYTE 0 +W?SEEK:: .ZWORD "seek" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FIND + .BYTE 0 +W?SELF:: .ZWORD "self" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SEND:: .ZWORD "send" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SEND + .BYTE 0 +W?SET:: .ZWORD "set" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TURN + .BYTE 0 +W?SHACK:: .ZWORD "shack" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SHAKE:: .ZWORD "shake" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SHAKE + .BYTE 0 +W?SHAPE:: .ZWORD "shape" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SHAPES:: .ZWORD "shapes" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SHARDS:: .ZWORD "shards" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SHARPEN:: .ZWORD "sharpe" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SHARPEN + .BYTE 0 +W?SHELL:: .ZWORD "shell" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SHELLS:: .ZWORD "shells" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SHIFTING:: .ZWORD "shifti" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SHIFTING + .BYTE 0 +W?SHORT:: .ZWORD "short" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SHORT + .BYTE 0 +W?SHOUT:: .ZWORD "shout" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?YELL + .BYTE 0 +W?SHOW:: .ZWORD "show" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SHOW + .BYTE 0 +W?SHREDDED:: .ZWORD "shredd" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SHREDDED + .BYTE 0 +W?SHUT:: .ZWORD "shut" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TURN + .BYTE 0 +W?SIGH:: .ZWORD "sigh" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?MUMBLE + .BYTE 0 +W?SIGN:: .ZWORD "sign" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SILVER:: .ZWORD "silver" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SILVER + .BYTE 0 +W?SIMPLE:: .ZWORD "simple" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SIMPLE + .BYTE 0 +W?SIP:: .ZWORD "sip" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DRINK + .BYTE 0 +W?SIT:: .ZWORD "sit" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CLIMB + .BYTE 0 +W?SIX-INCH:: .ZWORD "six-in" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SIX-INCH + .BYTE 0 +W?SKELETON:: .ZWORD "skelet" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SKIM:: .ZWORD "skim" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?READ + .BYTE 0 +W?SKIP:: .ZWORD "skip" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SKIP + .BYTE 0 +W?SKY:: .ZWORD "sky" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SLAY:: .ZWORD "slay" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KILL + .BYTE 0 +W?SLEEP:: .ZWORD "sleep" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?SLEEP +W?SLICE:: .ZWORD "slice" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?CUT + .BYTE 0 +W?SLIDE:: .ZWORD "slide" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?SLIDE +W?SLIMY:: .ZWORD "slimy" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SLIMY + .BYTE 0 +W?SMALL:: .ZWORD "small" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SMALL + .BYTE 0 +W?SMASH:: .ZWORD "smash" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DESTROY + .BYTE 0 +W?SMELL:: .ZWORD "smell" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SMELL + .BYTE 0 +W?SMOKY:: .ZWORD "smoky" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SMOKY + .BYTE 0 +W?SNIFF:: .ZWORD "sniff" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SMELL + .BYTE 0 +W?SNOOZE:: .ZWORD "snooze" + .BYTE PS?OBJECT+PS?VERB+P1?OBJECT + .BYTE O?ANY + .BYTE ACT?SLEEP +W?SOGGY:: .ZWORD "soggy" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SOGGY + .BYTE 0 +W?SOME:: .ZWORD "some" + .BYTE PS?BUZZ-WORD + .BYTE B?SOME + .BYTE 0 +W?SOUTH:: .ZWORD "south" + .BYTE PS?ADJECTIVE+PS?DIRECTION+P1?DIRECTION + .BYTE 27 + .BYTE A?SOUTH +W?SPEAR:: .ZWORD "spear" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SPEARS:: .ZWORD "spears" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SPELL:: .ZWORD "spell" + .BYTE PS?OBJECT+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SPELL + .BYTE O?ANY +W?SPELLS:: .ZWORD "spells" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SPELLS + .BYTE 0 +W?SPILL:: .ZWORD "spill" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?POUR + .BYTE 0 +W?SPIN:: .ZWORD "spin" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SPIN + .BYTE 0 +W?SPIRAL:: .ZWORD "spiral" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SPIRAL + .BYTE 0 +W?SPOON:: .ZWORD "spoon" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SPRAY:: .ZWORD "spray" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SPRAY + .BYTE 0 +W?SPRING:: .ZWORD "spring" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SPRING + .BYTE 0 +W?SQUARE:: .ZWORD "square" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?SQUARE + .BYTE 0 +W?SQUEEZE:: .ZWORD "squeez" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SQUEEZE + .BYTE 0 +W?STAB:: .ZWORD "stab" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?KILL + .BYTE 0 +W?STAINED:: .ZWORD "staine" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?STAINED + .BYTE 0 +W?STAIR:: .ZWORD "stair" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?STAIRS:: .ZWORD "stairs" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?STAIRWAY:: .ZWORD "stairw" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?STALKING:: .ZWORD "stalki" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?STALKING + .BYTE 0 +W?STAND:: .ZWORD "stand" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?STAND + .BYTE 0 +W?STARE:: .ZWORD "stare" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?LOOK + .BYTE 0 +W?STARS:: .ZWORD "stars" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?STARTLE:: .ZWORD "startl" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAKE + .BYTE 0 +W?STATUE:: .ZWORD "statue" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?STAY:: .ZWORD "stay" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?STAY + .BYTE 0 +W?STEP:: .ZWORD "step" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WALK + .BYTE 0 +W?STEPS:: .ZWORD "steps" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?STONE:: .ZWORD "stone" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?STONE + .BYTE 0 +W?STRAND:: .ZWORD "strand" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?STRAND + .BYTE 0 +W?STRIKE:: .ZWORD "strike" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?STRIKE + .BYTE 0 +W?STRONG:: .ZWORD "strong" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?STRONG + .BYTE 0 +W?STUFF:: .ZWORD "stuff" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PUT + .BYTE 0 +W?STUNTED:: .ZWORD "stunte" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?STUNTED + .BYTE 0 +W?SUPER:: .ZWORD "super" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SUPER + .BYTE 0 +W?SUPERBRIEF:: .ZWORD "superb" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SUPER + .BYTE 0 +W?SURPRISE:: .ZWORD "surpri" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAKE + .BYTE 0 +W?SW:: .ZWORD "sw" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 26 + .BYTE 0 +W?SWALLOW:: .ZWORD "swallo" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?DRINK + .BYTE 0 +W?SWAMP:: .ZWORD "swamp" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?SWIM:: .ZWORD "swim" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SWIM + .BYTE 0 +W?SWING:: .ZWORD "swing" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SWING + .BYTE 0 +W?SWORD:: .ZWORD "sword" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?T:: .ZWORD "t" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TIME + .BYTE 0 +W?TABLE:: .ZWORD "table" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TABLES:: .ZWORD "tables" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TAKE:: .ZWORD "take" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TAKE + .BYTE 0 +W?TALK:: .ZWORD "talk" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SAY + .BYTE 0 +W?TALONS:: .ZWORD "talons" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TASTE:: .ZWORD "taste" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EAT + .BYTE 0 +W?TELL:: .ZWORD "tell" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TELL + .BYTE 0 +W?TEMPLE:: .ZWORD "temple" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TENTACLE:: .ZWORD "tentac" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TERROR:: .ZWORD "terror" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?THANK:: .ZWORD "thank" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?THANK + .BYTE 0 +W?THANKS:: .ZWORD "thanks" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?THANK + .BYTE 0 +W?THAT:: .ZWORD "that" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?THE:: .ZWORD "the" + .BYTE PS?BUZZ-WORD + .BYTE B?THE + .BYTE 0 +W?THEN:: .ZWORD "then" + .BYTE PS?BUZZ-WORD + .BYTE B?THEN + .BYTE 0 +W?THICK:: .ZWORD "thick" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?THICK + .BYTE 0 +W?THIN:: .ZWORD "thin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?THIN + .BYTE 0 +W?THISTLE:: .ZWORD "thistl" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?THROUGH:: .ZWORD "throug" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?THROUGH + .BYTE 0 +W?THROW:: .ZWORD "throw" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?THROW + .BYTE 0 +W?THRU:: .ZWORD "thru" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?WITH + .BYTE 0 +W?THRUST:: .ZWORD "thrust" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SWING + .BYTE 0 +W?TIE:: .ZWORD "tie" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TIE + .BYTE 0 +W?TIGHT:: .ZWORD "tight" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?TIGHT + .BYTE 0 +W?TIME:: .ZWORD "time" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TIME + .BYTE 0 +W?TO:: .ZWORD "to" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?TO + .BYTE 0 +W?TONGUE:: .ZWORD "tongue" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TOSS:: .ZWORD "toss" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?THROW + .BYTE 0 +W?TOUCH:: .ZWORD "touch" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TOUCH + .BYTE 0 +W?TOWER:: .ZWORD "tower" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TOWERS:: .ZWORD "towers" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TRACK:: .ZWORD "track" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TRACKS:: .ZWORD "tracks" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TRAIL:: .ZWORD "trail" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TRANSLUCENT:: .ZWORD "transl" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?TRANSLUCENT + .BYTE 0 +W?TREE:: .ZWORD "tree" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TREES:: .ZWORD "trees" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TUBES:: .ZWORD "tubes" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TUG:: .ZWORD "tug" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PULL + .BYTE 0 +W?TUNNEL:: .ZWORD "tunnel" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TURN:: .ZWORD "turn" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?TURN + .BYTE 0 +W?TURRET:: .ZWORD "turret" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?TURTLE:: .ZWORD "turtle" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?U:: .ZWORD "u" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?UP + .BYTE 23 +W?UNATTACH:: .ZWORD "unatta" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNTIE + .BYTE 0 +W?UNDER:: .ZWORD "under" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?UNDER + .BYTE 0 +W?UNDERGROWTH:: .ZWORD "underg" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?UNDERNEATH:: .ZWORD "undern" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?UNDER + .BYTE 0 +W?UNFASTEN:: .ZWORD "unfast" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNTIE + .BYTE 0 +W?UNHOOK:: .ZWORD "unhook" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNTIE + .BYTE 0 +W?UNKNOWN:: .ZWORD "unknow" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?UNKNOWN + .BYTE 0 +W?UNLEARN:: .ZWORD "unlear" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FORGET + .BYTE 0 +W?UNLOCK:: .ZWORD "unlock" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNLOCK + .BYTE 0 +W?UNMEMORIZE:: .ZWORD "unmemo" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FORGET + .BYTE 0 +W?UNSCRIPT:: .ZWORD "unscri" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNSCRIPT + .BYTE 0 +W?UNSEEN:: .ZWORD "unseen" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?UNSEEN + .BYTE 0 +W?UNTIE:: .ZWORD "untie" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?UNTIE + .BYTE 0 +W?UP:: .ZWORD "up" + .BYTE PS?DIRECTION+PS?PREPOSITION+P1?OBJECT + .BYTE PR?UP + .BYTE 23 +W?USING:: .ZWORD "using" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?WITH + .BYTE 0 +W?V:: .ZWORD "v" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?VAXUM:: .ZWORD "vaxum" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?VAXUM + .BYTE ACT?VAXUM +W?VELLUM:: .ZWORD "vellum" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?VELLUM + .BYTE 0 +W?VERBOSE:: .ZWORD "verbos" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?VERBOSE + .BYTE 0 +W?VERSION:: .ZWORD "versio" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?VERSION + .BYTE 0 +W?VOICES:: .ZWORD "voices" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?W:: .ZWORD "w" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 25 + .BYTE 0 +W?WADE:: .ZWORD "wade" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?SWIM + .BYTE 0 +W?WAIT:: .ZWORD "wait" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAIT + .BYTE 0 +W?WAKE:: .ZWORD "wake" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAKE + .BYTE 0 +W?WALK:: .ZWORD "walk" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WALK + .BYTE 0 +W?WALL:: .ZWORD "wall" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?WALLS:: .ZWORD "walls" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?WARLOCK:: .ZWORD "warloc" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?WATER:: .ZWORD "water" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?WAVE:: .ZWORD "wave" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAVE + .BYTE 0 +W?WAVES:: .ZWORD "waves" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?WEAR:: .ZWORD "wear" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WEAR + .BYTE 0 +W?WEARY:: .ZWORD "weary" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WEARY + .BYTE 0 +W?WEST:: .ZWORD "west" + .BYTE PS?DIRECTION+P1?DIRECTION + .BYTE 25 + .BYTE 0 +W?WHAT:: .ZWORD "what" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXAMINE + .BYTE 0 +W?WHATS:: .ZWORD "whats" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?EXAMINE + .BYTE 0 +W?WHERE:: .ZWORD "where" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?FIND + .BYTE 0 +W?WHITE:: .ZWORD "white" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WHITE + .BYTE 0 +W?WHO:: .ZWORD "who" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WHO + .BYTE 0 +W?WHOLE:: .ZWORD "whole" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WHOLE + .BYTE 0 +W?WIND:: .ZWORD "wind" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WIND + .BYTE 0 +W?WINDING:: .ZWORD "windin" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WINDING + .BYTE 0 +W?WINDOW:: .ZWORD "window" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?WITH:: .ZWORD "with" + .BYTE PS?PREPOSITION+P1?OBJECT + .BYTE PR?WITH + .BYTE 0 +W?WIZARD:: .ZWORD "wizard" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WIZARD + .BYTE 0 +W?WOOD:: .ZWORD "wood" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WOOD + .BYTE 0 +W?WOODEN:: .ZWORD "wooden" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WOODEN + .BYTE 0 +W?WORN:: .ZWORD "worn" + .BYTE PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?WORN + .BYTE 0 +W?WRITE:: .ZWORD "write" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WRITE + .BYTE 0 +W?WRITING:: .ZWORD "writin" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 +W?XYZZY:: .ZWORD "xyzzy" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?PLUGH + .BYTE 0 +W?Y:: .ZWORD "y" + .BYTE PS?BUZZ-WORD + .BYTE B?Y + .BYTE 0 +W?YELL:: .ZWORD "yell" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?YELL + .BYTE 0 +W?YES:: .ZWORD "yes" + .BYTE PS?BUZZ-WORD + .BYTE B?YES + .BYTE 0 +W?YOU:: .ZWORD "you" + .BYTE PS?BUZZ-WORD + .BYTE B?YOU + .BYTE 0 +W?Z:: .ZWORD "z" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?WAIT + .BYTE 0 +W?ZIFMIA:: .ZWORD "zifmia" + .BYTE PS?VERB+PS?ADJECTIVE+P1?ADJECTIVE + .BYTE A?ZIFMIA + .BYTE ACT?ZIFMIA +W?ZORK:: .ZWORD "zork" + .BYTE PS?VERB+P1?VERB + .BYTE ACT?ZORK + .BYTE 0 +W?ZZMGCK:: .ZWORD "zzmgck" + .BYTE PS?OBJECT+P1?OBJECT + .BYTE O?ANY + .BYTE 0 + .ENDT + + +; END LOAD + +ENDLOD:: + + + +; PURE TABLES ARE DEFINED HERE + +PURTBL:: + + .ENDI diff --git a/z4freq.xzap b/z4freq.xzap new file mode 100644 index 0000000..156e432 --- /dev/null +++ b/z4freq.xzap @@ -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 diff --git a/z4str.zap b/z4str.zap new file mode 100644 index 0000000..35cd4fa --- /dev/null +++ b/z4str.zap @@ -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