]> github.com/historicalsource and other repositories - beyondzork.git/commitdiff
Revision 50 (Original Source)
authorhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 04:48:04 +0000 (00:48 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 04:48:04 +0000 (00:48 -0400)
14 files changed:
README.md [new file with mode: 0644]
constants.zil [new file with mode: 0644]
events.zil [new file with mode: 0644]
macros.zil [new file with mode: 0644]
misc.zil [new file with mode: 0644]
monsters.zil [new file with mode: 0644]
parser.zil [new file with mode: 0644]
people.zil [new file with mode: 0644]
places.zil [new file with mode: 0644]
rarities.zil [new file with mode: 0644]
syntax.zil [new file with mode: 0644]
things.zil [new file with mode: 0644]
verbs.zil [new file with mode: 0644]
z.zil [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..360dd1e
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# beyondzork
diff --git a/constants.zil b/constants.zil
new file mode 100644 (file)
index 0000000..62c19eb
--- /dev/null
@@ -0,0 +1,1753 @@
+"CONSTANTS for BEYOND ZORK:
+ Copyright (C)1987 Infocom, Inc. All rights reserved."
+
+<CONSTANT EOL 13>
+<CONSTANT LF 10>
+<CONSTANT SP 32>
+<CONSTANT EXCLAM 33>
+<CONSTANT QUOTATION 34>
+<CONSTANT PER 46>
+<CONSTANT COMMA 44>
+
+<CONSTANT DEC-20 1>
+<CONSTANT APPLE-2E 2>
+<CONSTANT MACINTOSH 3>
+<CONSTANT AMIGA 4>
+<CONSTANT ATARI-ST 5>
+<CONSTANT IBM 6>
+<CONSTANT C128 7>
+<CONSTANT C64 8>
+<CONSTANT APPLE-2C 9>
+<CONSTANT APPLE-2GS 10>
+
+<CONSTANT MACHINES
+       <PLTABLE "DEC-20"
+                "Apple //e"
+                "Macintosh"
+                "Amiga"
+                "Atari ST"
+                "IBM/MS-DOS"
+                "Commodore 128"
+                "C64"
+                "Apple //c"
+                "Apple //gs"
+                "Tandy Color Computer">>
+
+<CONSTANT F-OLD 0>
+<CONSTANT F-DEFAULT 1>
+<CONSTANT F-PICTURES 2>
+<CONSTANT F-NEWFONT 3>
+
+<CONSTANT S-TEXT 0>
+<CONSTANT S-WINDOW 1>
+
+<CONSTANT S-BEEP 1>
+<CONSTANT S-BOOP 2>
+
+<CONSTANT H-NORMAL 0>
+<CONSTANT H-INVERSE 1>
+<CONSTANT H-BOLD 2>
+<CONSTANT H-ITALIC 4>
+<CONSTANT H-MONO 8>
+
+<CONSTANT D-SCREEN-ON 1>
+<CONSTANT D-SCREEN-OFF -1>
+<CONSTANT D-PRINTER-ON 2>
+<CONSTANT D-PRINTER-OFF -2>
+<CONSTANT D-TABLE-ON 3>
+<CONSTANT D-TABLE-OFF -3>
+<CONSTANT D-RECORD-ON 4>
+<CONSTANT D-RECORD-OFF -4>
+
+"Color constants"
+
+<CONSTANT C-SAME 0>
+<CONSTANT C-DEFAULT 1>
+<CONSTANT C-BLACK 2>
+<CONSTANT C-RED 3>
+<CONSTANT C-GREEN 4>
+<CONSTANT C-YELLOW 5>
+<CONSTANT C-BLUE 6>
+<CONSTANT C-MAGENTA 7>
+<CONSTANT C-CYAN 8>
+<CONSTANT C-WHITE 9>
+
+<CONSTANT COLOR-NAMES
+         <PTABLE "same" "default" "black" "red" "green" "yellow"
+                 "blue" "magenta" "cyan" "white">>
+
+<CONSTANT BWWW <PTABLE (BYTE) C-BLUE C-WHITE C-WHITE C-WHITE>> 
+<CONSTANT BWCR <PTABLE (BYTE) C-BLACK C-WHITE C-CYAN C-RED>>
+<CONSTANT WBBB <PTABLE (BYTE) C-WHITE C-BLACK C-BLACK C-BLACK>>
+<CONSTANT DWWW <PTABLE (BYTE) C-BLACK C-WHITE C-WHITE C-WHITE>>
+
+<CONSTANT ST-MONO <PLTABLE DWWW WBBB>>
+
+<CONSTANT MACHINE-COLORS
+         <PLTABLE
+          0 ; "DEC-20"
+          0 ; "Apple //e"
+          <PLTABLE
+              WBBB
+              DWWW > ; "Macintosh"
+          <PLTABLE
+              BWCR DWWW BWWW WBBB> ; "Amiga"
+          <PLTABLE
+              BWCR DWWW BWWW WBBB> ; "Atari ST"
+          <PLTABLE
+              BWWW
+             <PTABLE (BYTE) C-BLUE C-WHITE C-WHITE C-CYAN>
+             <PTABLE (BYTE) C-BLUE C-WHITE C-WHITE C-GREEN>
+             BWCR DWWW WBBB> ; "IBM"
+          <PLTABLE
+             <PTABLE (BYTE) C-BLACK C-WHITE C-YELLOW C-CYAN>
+              DWWW WBBB BWWW> ; "C128"
+          0 ; "C64"
+          0 ; "Apple //c"
+          <PLTABLE
+              BWCR DWWW BWWW WBBB> ; "Apple //gs"
+          >>
+
+"Apple //c MouseText characters."
+
+<CONSTANT APPLE-LEFT 95>
+<CONSTANT APPLE-RIGHT 90>
+<CONSTANT APPLE-HORZ 76>
+
+"IBM graphics chars."
+
+<CONSTANT IBM-TRC 191>
+<CONSTANT IBM-BLC 192>
+<CONSTANT IBM-BRC 217>
+<CONSTANT IBM-TLC 218>
+<CONSTANT IBM-HORZ 196>
+<CONSTANT IBM-VERT 179>
+
+<CONSTANT DIR-HACKS <PTABLE -7 -6 1 8 7 6 -1 -8>>
+
+<CONSTANT I-NORTH 0>
+<CONSTANT I-NE    1>
+<CONSTANT I-EAST  2>
+<CONSTANT I-SE    3>
+<CONSTANT I-SOUTH 4>
+<CONSTANT I-SW    5>
+<CONSTANT I-WEST  6>
+<CONSTANT I-NW    7>
+<CONSTANT I-U    8>
+<CONSTANT I-D    9>
+
+<CONSTANT DIR-NAMES
+         <PTABLE <VOC "NORTH" <>> <VOC "NORTHEAST" <>>
+                 <VOC "EAST" <>> <VOC "SOUTHEAST" <>>
+                 <VOC "SOUTH" <>> <VOC "SOUTHWEST" <>>
+                 <VOC "WEST" <>> <VOC "NORTHWEST" <>>
+                 <VOC "UP" <>> <VOC "DOWN" <>>  >>
+
+<CONSTANT PDIR-LIST
+         <PTABLE (BYTE)
+                 P?NORTH P?NE P?EAST P?SE
+                 P?SOUTH P?SW P?WEST P?NW
+                 P?UP P?DOWN P?IN P?OUT>>
+
+<CONSTANT XPDIR-LIST
+         <PTABLE (BYTE)
+                 P?SOUTH P?SW P?WEST P?NW
+                 P?NORTH P?NE P?EAST P?SE
+                 P?DOWN P?UP P?OUT P?IN>>
+
+<CONSTANT UP-ARROW 129>
+<CONSTANT DOWN-ARROW 130>
+<CONSTANT LEFT-ARROW 131>
+<CONSTANT RIGHT-ARROW 132>
+
+<CONSTANT F1 133>
+<CONSTANT F2 134>
+<CONSTANT F3 135>
+<CONSTANT F4 136>
+<CONSTANT F5 137>
+<CONSTANT F6 138>
+<CONSTANT F7 139>
+<CONSTANT F8 140>
+<CONSTANT F9 141>
+<CONSTANT F10 142>
+<CONSTANT F11 143>
+<CONSTANT F12 144>
+
+<CONSTANT PAD0 145>
+<CONSTANT PAD1 146>
+<CONSTANT PAD2 147>
+<CONSTANT PAD3 148>
+<CONSTANT PAD4 149>
+<CONSTANT PAD5 150>
+<CONSTANT PAD6 151>
+<CONSTANT PAD7 152>
+<CONSTANT PAD8 153>
+<CONSTANT PAD9 154>
+
+<CONSTANT CLICK1 254>
+<CONSTANT CLICK2 253>
+
+<CONSTANT MAC-DOWN-ARROW <ASCII !\/>>
+<CONSTANT MAC-UP-ARROW <ASCII !\\>>
+
+<CONSTANT TCHARS 
+         <TABLE (KERNEL BYTE)
+                 UP-ARROW DOWN-ARROW LEFT-ARROW RIGHT-ARROW
+                 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
+                 PAD0 PAD1 PAD2 PAD3 PAD4 PAD5 PAD6 PAD7 PAD8 PAD9
+                 CLICK1 CLICK2 0 0 0>>
+
+<CONSTANT FIRST-MAC-ARROW 26>
+
+<CONSTANT PAD-NAMES
+         <PTABLE <VOC "SOUTHWEST" <>>
+                 <VOC "SOUTH" <>>
+                 <VOC "SOUTHEAST" <>>
+                 <VOC "WEST" <>>
+                 <VOC "AROUND" <>>
+                 <VOC "EAST" <>>
+                 <VOC "NORTHWEST" <>>
+                 <VOC "NORTH" <>>
+                 <VOC "NORTHEAST" <>>>>
+
+<CONSTANT C-TABLE-LENGTH 100>
+<CONSTANT C-TABLE <ITABLE %<+ ,C-TABLE-LENGTH 1>>>
+
+<CONSTANT C-INTLEN 4> "Length of an interrupt entry."
+<CONSTANT C-RTN 0>    "Offset of routine name."
+<CONSTANT C-TICK 1>   "Offset of count."
+
+<CONSTANT REXIT 0>
+<CONSTANT UEXIT 2>
+<CONSTANT NEXIT 3>
+<CONSTANT FEXIT 4>
+<CONSTANT CEXIT 5>
+<CONSTANT DEXIT 6>
+
+<CONSTANT NEXITSTR 0>
+<CONSTANT FEXITFCN 0>
+<CONSTANT CEXITFLAG 4>
+<CONSTANT CEXITSTR 1>
+<CONSTANT DEXITOBJ 1>
+<CONSTANT DEXITSTR 2>
+
+<CONSTANT NEW-STATS <ITABLE 8 (BYTE) 0>>
+<CONSTANT NORMAL-RATE 2>
+<CONSTANT BLESSED-RATE %<* ,NORMAL-RATE 2>>
+
+<CONSTANT MIN-HIT-PROB 50>
+<CONSTANT MAX-HIT-PROB 95>
+
+<CONSTANT STSTR <PTABLE "EN" "ST" "DX" "IQ" "CM" "LK" "AC">>
+
+<CONSTANT KEY-LABELS
+         <PTABLE " F1" " F2" " F3" " F4" " F5"
+                 " F6" " F7" " F8" " F9" "F10">>
+
+<CONSTANT APPLE-LABELS
+         <PTABLE "[1]" "[2]" "[3]" "[4]" "[5]"
+                 "[6]" "[7]" "[8]" "[9]" "[0]">>
+
+<CONSTANT SOFT-LEN 36>
+<CONSTANT NSOFT-LEN -36>
+
+<CONSTANT SOFT-KEYS
+         <PTABLE
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>
+           <ITABLE <+ ,SOFT-LEN 2> (BYTE) 0>>>
+
+<CONSTANT KEY-DEFAULTS
+         <PTABLE
+          <PLTABLE (STRING) "look around|">
+          <PLTABLE (STRING) "inventory|">
+          <PLTABLE (STRING) "status|">
+          <PLTABLE (STRING) "examine">
+          <PLTABLE (STRING) "take">
+          <PLTABLE (STRING) "drop">
+          <PLTABLE (STRING) "attack monster|">
+          <PLTABLE (STRING) "again|">
+          <PLTABLE (STRING) "undo|">
+          <PLTABLE (STRING) "oops">>>
+
+<CONSTANT FUMBLE-NUMBER 6>
+<CONSTANT LOAD-ALLOWED 30>
+
+<CONSTANT NORMAL-ATTACK 0>
+<CONSTANT PARRYING 1>
+<CONSTANT THRUSTING 2>
+
+<CONSTANT YAWNS
+         <LTABLE 2 "unusual" "interesting" "extraordinary" "special">>
+
+<CONSTANT HO-HUM
+         <LTABLE 2 
+            "n't do anything useful"
+            " accomplish nothing"
+            " have no desirable effect"
+            "n't be very productive"
+            " serve no purpose"
+            " be pointless">>
+
+<CONSTANT YUKS
+         <LTABLE 2
+            "That's impossible"
+            "What a ridiculous concept"
+            "You can't be serious">>
+
+<CONSTANT FIRMS
+         <LTABLE 2 "firm" "permanent" "immovab" "secure">>
+
+<CONSTANT ATTACHES
+         <LTABLE 2 "attached" "affixed">>
+
+<CONSTANT POINTLESS
+         <LTABLE 2
+            "There's no point in doing that"
+            "That would be pointless"
+            "That's a pointless thing to do">>
+                              
+<CONSTANT PUZZLES
+         <LTABLE 2 "puzzl" "bewilder" "confus" "perplex">>
+
+<CONSTANT UNKNOWN-MSGS
+         <LTABLE 2 
+            <PTABLE "The word \""
+                    "\" isn't in the vocabulary that you can use.">
+             <PTABLE "You don't need to use the word \""
+                    "\" to complete this story.">
+             <PTABLE "This story doesn't recognize the word \""
+                    ".\"">>>
+
+<CONSTANT LIKELIES 
+         <LTABLE 2
+            " isn't likely"
+            " seems doubtful"
+            " seems unlikely"
+            "'s unlikely"
+            "'s not likely"
+            "'s doubtful">>
+
+"List of words to be capitalized."
+
+<CONSTANT CAPS
+         <LTABLE
+          -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+          <VOC "MR" <>> <VOC "MRS" <>> <VOC "MISS" <>>
+          <VOC "I" <>> <VOC "N" <>> <VOC "S" <>>
+          <VOC "E" <>> <VOC "W" <>> <VOC "ZORK" <>>
+          <VOC "ZORKMID" <>> <VOC "ZORKMIDS" <>> <VOC "ZM" <>>
+          <VOC "CHRISTMAS" <>> <VOC "XMAS" <>>
+          <VOC "FROON" <>> <VOC "FROTZEN" <>>
+          <VOC "GUILD" <>> <VOC "ACCARDI" <>> <VOC "GRUBBO" <>>
+          <VOC "THRIFF" <>> <VOC "ALEXIS" <>> <VOC "PHEE" <>>
+          <VOC "PHEEBOR" <>> <VOC "PHEEHELM" <>>
+          <VOC "QUEEN" <>> <VOC "GROTE" <>> <VOC "CLUTCHCAKE" <>>
+          <VOC "BOK" <>> <VOC "YABBA" <>> <VOC "SMEE" <>>
+          <VOC "SQUIRP" <>> <VOC "STELLA" <>> <VOC "BLARN" <>>
+          <VOC "PROSSER" <>> <VOC "YQUEM" <>> <VOC "WATKIN" <>>
+          <VOC "JUKES" <>> <VOC "MACUGA" <>>
+          <VOC "GRUESLAYER" NOUN> <VOC "SKYCAR" <>>
+          <VOC "SKYWAY" <>> <VOC "Y\'GAEL" <>> >>
+
+<CONSTANT VOCAB2 <ITABLE 160 (BYTE) 0>>
+
+"Game-specific constants."
+
+<CONSTANT BASE-CHAR 79> "Base (0) character of bargraph charset."
+
+<CONSTANT MARKBIT 128>
+
+<CONSTANT SHOWING-ROOM 1>
+<CONSTANT SHOWING-INV 2>
+<CONSTANT SHOWING-ALL %<+ ,SHOWING-ROOM ,SHOWING-INV>>
+<CONSTANT SHOWING-STATS 4>
+
+<CONSTANT SLINE-LENGTH 82>
+<CONSTANT SLINE <ITABLE ,SLINE-LENGTH (BYTE) 0>>
+
+<CONSTANT MAX-HEIGHT 25>
+<CONSTANT MAX-DWIDTH 62>
+<CONSTANT DBOX-LENGTH %<+ <* ,MAX-HEIGHT ,MAX-DWIDTH> 2>>
+<CONSTANT DBOX <ITABLE ,DBOX-LENGTH (BYTE) 0>>
+
+<CONSTANT MWIDTH 17>
+<CONSTANT MHEIGHT 11>
+<CONSTANT MAP-SIZE %<* ,MWIDTH ,MHEIGHT>>
+<CONSTANT MAP <ITABLE ,MAP-SIZE (BYTE) 0>>
+
+<CONSTANT CENTERX %</ ,MWIDTH 2>>
+<CONSTANT NCENTERX %<- 0 ,CENTERX>>
+
+<CONSTANT CENTERY %</ ,MHEIGHT 2>>
+<CONSTANT NCENTERY %<- 0 ,CENTERY>>
+
+<CONSTANT ROOMS-MAPPED-LENGTH 46>
+<CONSTANT ROOMS-MAPPED <ITABLE ,ROOMS-MAPPED-LENGTH (BYTE) 0>>
+
+<CONSTANT MAP-TOP 1>
+<CONSTANT MAP-BOT %<- ,MHEIGHT 2>>
+<CONSTANT MAP-LEFT 256>
+<CONSTANT MAP-RIGHT %<* <- ,MWIDTH 2> 256>>
+
+<CONSTANT NGVERBS 33> "Number of GAME-VERBS."
+
+<CONSTANT GAME-VERBS
+         <PTABLE
+          V?INVENTORY V?STATUS V?TELL
+          V?SAVE V?RESTORE V?RESTART V?UNDO V?TIME V?SCORE V?DIAGNOSE
+          V?SCRIPT V?UNSCRIPT V?HELP V?MONITOR V?CASH
+          V?VERSION V?QUIT V?MODE V?SETTINGS V?DEFINE
+          V?VERBOSE V?BRIEF V?SUPER-BRIEF V?NOTIFY V?NAME
+          V?PRIORITY-ON V?PRIORITY-OFF V?ZOOM  
+          V?REFRESH V?COLOR V?$VERIFY V?SPELLS V?$CREDITS 
+          ; "V?$RECORD V?$UNRECORD V?$COMMAND V?$RANDOM V?$CHEAT V?$SUSS">>
+
+"These verbs reverse the order of PRSO and PRSI."
+
+<CONSTANT NR-VERBS 19>
+<CONSTANT R-VERBS
+         <PTABLE V?STOUCH-TO V?SASK-FOR
+                 V?SGIVE V?SSHOW V?SFEED V?SSELL-TO V?SBUY 
+                 V?SHIT V?SPOINT-AT V?STHROW
+                 V?SWRAP V?COVER V?DIG V?DIG-UNDER V?SDIG V?SLOOK-THRU
+                 V?WEDGE V?SFIRE-AT V?SWING>>
+
+<CONSTANT NHAVES 23> "Number of HAVEVERBS."
+
+<CONSTANT HAVEVERBS
+       <PTABLE V?DROP V?PUT V?PUT-ON V?GIVE V?SHOW V?FEED V?THROW V?HIT
+               V?PUT-UNDER V?PUT-BEHIND V?THROW-OVER V?RELEASE
+               V?TAKE-WITH V?TOUCH-TO V?OPEN V?OPEN-WITH V?CLOSE V?COVER
+               V?ERASE-WITH V?POINT-AT V?SUBMERGE V?WIELD V?UNWIELD>>
+
+<CONSTANT NTVERBS 17> "Number of TALKVERBS."
+
+<CONSTANT TALKVERBS
+       <PTABLE
+        V?TELL V?TELL-ABOUT V?ASK-ABOUT V?ASK-FOR V?WHAT V?WHERE V?WHO
+        V?ALARM V?HELLO V?GOODBYE V?SAY V?YELL V?THANK V?QUESTION V?REPLY
+        V?LAUGH V?REQUEST>>
+
+<CONSTANT NTOUCHES 81> "Number of TOUCHVERBS"
+
+<CONSTANT TOUCHVERBS
+       <PTABLE
+        V?TAKE V?TAKE-OFF V?TAKE-WITH
+        V?PUT V?PUT-ON V?PUT-UNDER V?PUT-BEHIND
+        V?COVER V?EMPTY-INTO V?REACH-IN V?TOUCH-TO V?TOUCH V?HIT V?THRUST
+        V?PARRY V?PUNCH V?KICK V?MOVE V?PUSH V?PUSH-TO V?PUSH-UP V?PUSH-DOWN 
+        V?PULL V?LOWER V?RAISE V?LOOSEN V?TURN-TO V?ADJUST V?SPIN V?TURN
+        V?SHAKE V?SWING V?OPEN V?OPEN-WITH V?CLOSE V?LOCK V?UNLOCK
+        ; "V?SCREW V?UNSCREW" V?UPROOT
+        V?PLUG-IN V?UNPLUG V?TIE V?UNTIE V?FOLD V?LAMP-ON V?LAMP-OFF
+        V?WRAP-AROUND V?CUT V?RIP V?MUNG V?DIG V?DIG-UNDER
+        V?FILL V?FILL-FROM
+        V?DEFLATE V?BURN-WITH V?CLEAN V?CLEAN-OFF V?BLOW-INTO V?DETONATE
+        V?WIND V?REPAIR V?REPLACE V?PICK V?MELT V?SQUEEZE ; V?PLAY
+        ; "V?UNSCREW-FROM V?SCREW-WITH" V?GIVE V?FEED V?STAND-ON
+        V?SIT V?LIE-DOWN V?EAT V?BITE V?TASTE V?DRINK V?DRINK-FROM V?POP
+        V?CRANK V?SCRATCH V?SCRAPE-ON V?PEEL V?SUBMERGE>>
+
+<CONSTANT NHVERBS 17> "Number of HURTVERBS."
+
+<CONSTANT HURTVERBS
+       <PTABLE
+        V?HIT V?PUNCH V?KICK V?MUNG V?KNOCK V?KICK V?SQUEEZE V?CUT
+        V?RIP V?BITE V?RAPE V?SHAKE V?UNDRESS V?DETONATE V?PUSH V?PUSH-TO
+        V?PULL>>
+
+<CONSTANT NUMPUTS 10> "# PUTVERBS."
+
+<CONSTANT PUTVERBS
+       <PTABLE V?DROP V?PUT V?PUT-ON V?PUT-UNDER V?PUT-BEHIND V?THROW
+               V?THROW-OVER V?EMPTY V?EMPTY-INTO V?HANG-ON>>
+
+<CONSTANT NMVERBS 28> "Number of MOVEVERBS."
+
+<CONSTANT MOVEVERBS
+       <PTABLE
+        V?TAKE V?TAKE-OFF V?MOVE V?PULL V?PUSH V?PUSH-TO V?PUSH-UP
+        V?PUSH-DOWN V?TURN V?RAISE V?UPROOT
+        V?LOWER V?SPIN V?SHAKE ; V?PLAY V?OPEN V?OPEN-WITH V?CLOSE V?ADJUST
+        V?TURN-TO V?POINT-AT V?SWING V?UNPLUG V?BOUNCE
+        V?PUT-UNDER V?PUT-BEHIND V?LOOK-UNDER V?LOOK-BEHIND V?CRANK>>
+
+<CONSTANT NSVERBS 19> "Number of SEEVERBS"
+<CONSTANT SEEVERBS
+         <PTABLE V?EXAMINE V?LOOK V?LOOK-INSIDE V?LOOK-ON V?READ V?FIND
+                 V?SEARCH V?SHOW V?LOOK-UNDER V?LOOK-BEHIND V?LOOK-THRU 
+                 V?LOOK-DOWN V?LOOK-UP V?READ-TO V?LOOK-OUTSIDE V?COUNT
+                 V?ADJUST V?POINT V?EXAMINE-IN>>
+
+<CONSTANT ENTER-VERBS 5>
+<CONSTANT CLIMB-ON-VERBS 13>
+<CONSTANT E-VERBS
+         <PTABLE V?WALK-TO V?ENTER V?THROUGH V?FOLLOW V?USE
+                 V?CLIMB-ON V?CLIMB-UP V?CLIMB-OVER V?SIT V?RIDE
+                 V?STAND-ON V?LIE-DOWN V?CROSS>>
+
+<CONSTANT EXIT-VERBS 3>
+<CONSTANT CLIMB-DOWN-VERBS 5>
+<CONSTANT X-VERBS
+         <PTABLE V?EXIT V?LEAVE V?ESCAPE
+                 V?CLIMB-DOWN V?LEAP>>
+
+<CONSTANT D-N  #2 00000001>
+<CONSTANT D-NE #2 00000010>
+<CONSTANT D-E  #2 00000100>
+<CONSTANT D-SE #2 00001000>
+<CONSTANT D-S  #2 00010000>
+<CONSTANT D-SW #2 00100000>
+<CONSTANT D-W  #2 01000000>
+<CONSTANT D-NW #2 10000000>
+
+<CONSTANT DBIT-LIST
+         <PTABLE (BYTE) D-N D-NE D-E D-SE D-S D-SW D-W D-NW>>
+
+<CONSTANT XD-N  #2 11111110>
+<CONSTANT XD-NE #2 11111101>
+<CONSTANT XD-E  #2 11111011>
+<CONSTANT XD-SE #2 11110111>
+<CONSTANT XD-S  #2 11101111>
+<CONSTANT XD-SW #2 11011111>
+<CONSTANT XD-W  #2 10111111>
+<CONSTANT XD-NW #2 01111111>
+
+<CONSTANT XDBIT-LIST
+         <PTABLE (BYTE) XD-N XD-NE XD-E XD-SE
+                        XD-S XD-SW XD-W XD-NW
+                        XD-N XD-NE XD-E XD-SE>>
+
+<CONSTANT D-ALL 255>
+
+<CONSTANT D-LEFT   %<+ ,D-N ,D-NE ,D-E ,D-SE ,D-S>>
+<CONSTANT D-RIGHT  %<+ ,D-N ,D-S ,D-SW ,D-W ,D-NW>>
+<CONSTANT D-TOP    %<+ ,D-E ,D-SE ,D-S ,D-SW ,D-W>>
+<CONSTANT D-BOTTOM %<+ ,D-N ,D-NE ,D-E ,D-W ,D-NW>>
+
+"Pure border data (copied into BORDERS)."
+
+<CONSTANT DEFAULT-BORDERS
+         <PLTABLE (BYTE)
+                  %<+ ,D-E ,D-SE ,D-S>
+                  ,D-TOP ,D-TOP ,D-TOP ,D-TOP ,D-TOP
+                  %<+ ,D-S ,D-SW ,D-W>
+                  ,D-LEFT ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-RIGHT
+                  ,D-LEFT ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-RIGHT
+                  ,D-LEFT ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-RIGHT
+                  ,D-LEFT ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-RIGHT
+                  ,D-LEFT ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-ALL ,D-RIGHT
+                  %<+ ,D-N ,D-NE ,D-E>
+                  ,D-BOTTOM ,D-BOTTOM ,D-BOTTOM ,D-BOTTOM ,D-BOTTOM
+                  %<+ ,D-N ,D-W ,D-NW>>>
+
+<CONSTANT XLIST-NAMES
+         <PTABLE "N" "NE" "E" "SE" "S" "SW" "W" "NW"
+                 "Up" "Down" "In" "Out">>
+
+<CONSTANT NORMAL-DHEIGHT 9>
+
+<CONSTANT XOFFS <PTABLE 0 1 1 1 0 -1 -1 -1>>
+<CONSTANT YOFFS <PTABLE -1 -1 0 1 1 1 0 -1>>
+
+<CONSTANT SHITCHARS
+         <PTABLE (BYTE) 124 47 45 92 124 47 45 92>>
+
+<CONSTANT QDIRS <PTABLE (BYTE) 0 2 4 6 0>>
+<CONSTANT ZDIRS <PTABLE (BYTE) 3 5 7 1 3 5>>
+
+<CONSTANT SETOFFS
+         <PTABLE (BYTE) 4 4 3 3 8 0 2 19 19>>
+
+<CONSTANT SNAMES
+         <PTABLE     " Display Mode "
+                     " Descriptions "
+                    " Transcripting "
+                    " Status Notify "
+                         " Map View "
+                 " Display Priority "
+                   " Combat Monitor "
+                 " Restore Defaults "
+                             " Exit ">>
+
+"Character set data."
+
+<CONSTANT QMARK 96>
+<CONSTANT IQMARK 126>
+
+<CONSTANT TRCORNER 71>
+<CONSTANT BRCORNER 72>
+<CONSTANT BLCORNER 73>
+<CONSTANT TLCORNER 74>
+<CONSTANT TOPEDGE 75>
+<CONSTANT BOTEDGE 76>
+<CONSTANT LEDGE 77>
+<CONSTANT REDGE 78>
+
+<CONSTANT RDIAG 35>
+<CONSTANT LDIAG 36>
+<CONSTANT SOLID 37>
+<CONSTANT BOT 38>
+<CONSTANT TOP 39>
+<CONSTANT LSID 40>
+<CONSTANT RSID 41>
+<CONSTANT NCON 42>
+<CONSTANT SCON 43>
+<CONSTANT ECON 44>
+<CONSTANT WCON 45>
+<CONSTANT BLC 46>
+<CONSTANT TLC 47>
+<CONSTANT TRC 48>
+<CONSTANT BRC 49>
+<CONSTANT SWCON 50>
+<CONSTANT NWCON 51>
+<CONSTANT NECON 52>
+<CONSTANT SECON 53>
+<CONSTANT ISOLID 54>
+<CONSTANT XCROSS 90>
+<CONSTANT HVCROSS 91>
+
+<CONSTANT UARROW 92>
+<CONSTANT DARROW 93>
+<CONSTANT UDARROW 94>
+
+<CONSTANT SMBOX 95>
+
+<CONSTANT MCHARS
+         <PTABLE (BYTE) LSID RDIAG BOT LDIAG LSID RDIAG BOT LDIAG>> 
+<CONSTANT XCHARS
+         <PTABLE (BYTE) NCON NECON ECON SECON SCON SWCON WCON NWCON>>
+<CONSTANT NXCHARS
+         <PTABLE (BYTE) TOP TRC LSID BRC BOT BLC RSID TLC>>
+
+<CONSTANT IUARROW 123>
+<CONSTANT IDARROW 124>
+<CONSTANT IUDARROW 125>
+
+<CONSTANT LCAP 88>
+<CONSTANT RCAP 89>
+
+<CONSTANT ENDURANCE 0>
+<CONSTANT HP 0>
+<CONSTANT STRENGTH 1>
+<CONSTANT STR 1>
+<CONSTANT DEXTERITY 2>
+<CONSTANT DEX 2>
+<CONSTANT INTELLIGENCE 3>
+<CONSTANT IQ 3>
+<CONSTANT COMPASSION 4>
+<CONSTANT COM 4>
+<CONSTANT LUCK 5>
+<CONSTANT ARMOR-CLASS 6>
+<CONSTANT AC 6>
+<CONSTANT EXPERIENCE 7>
+<CONSTANT EXP 7>
+
+<CONSTANT NSTATS 8>    "Number of statistics."
+
+<CONSTANT BEGINNERS-ENDURANCE 16>
+<CONSTANT BEGINNERS-STRENGTH 8>
+<CONSTANT BEGINNERS-DEXTERITY 8>
+<CONSTANT BEGINNERS-INTELLIGENCE 8>
+<CONSTANT BEGINNERS-COMPASSION 1>
+<CONSTANT BEGINNERS-LUCK 25>
+<CONSTANT NAKED-ARMOR-CLASS 1>
+<CONSTANT BEGINNERS-EXPERIENCE 0>
+
+<CONSTANT STATMAX 99> "High as any statistic can go."
+<CONSTANT READING-IQ 40>
+
+<CONSTANT WINNING-COMPASSION -45>
+
+<CONSTANT DEFAULT-STATS 
+         <PTABLE ,BEGINNERS-ENDURANCE
+                 ,BEGINNERS-STRENGTH
+                 ,BEGINNERS-DEXTERITY
+                 ,BEGINNERS-INTELLIGENCE
+                 ,BEGINNERS-COMPASSION
+                 ,BEGINNERS-LUCK
+                 ,NAKED-ARMOR-CLASS
+                 ,BEGINNERS-EXPERIENCE>>
+
+
+<CONSTANT CNAME-LEN 7>
+<CONSTANT BARMAR %<+ ,CNAME-LEN 3>>
+
+<CONSTANT APPBOX 18> "Width of Apple stat box."
+
+<CONSTANT CNAMES
+         <PTABLE "Lucky  "
+                 "Tank   "
+                 "Muscles"
+                 "Nimble "
+                 "Genius "
+                 "Saint  " >>
+
+<CONSTANT CSTATS
+         <PTABLE <PTABLE 16 8 8 8 1 25>
+                 <PTABLE 30 16 8 1 1 10>
+                 <PTABLE 18 20 18 4 1 5>
+                 <PTABLE 12 14 20 4 1 15>
+                 <PTABLE 12 10 8 16 5 15>
+                 <PTABLE 12 10 8 8 16 12>
+                 >>
+
+<CONSTANT INIT-POTENTIAL 
+         <+ -6 ,BEGINNERS-LUCK ,BEGINNERS-COMPASSION
+               ,BEGINNERS-INTELLIGENCE ,BEGINNERS-DEXTERITY
+               ,BEGINNERS-STRENGTH ,BEGINNERS-ENDURANCE>>
+<CONSTANT AVERAGE %</ ,INIT-POTENTIAL 6>>
+<CONSTANT SPREAD %</ ,AVERAGE 2>>
+
+<CONSTANT THRESHOLDS <PTABLE 9 29 59 99 149 209 279 359 449>>
+<CONSTANT MAX-LEVEL 8>
+<CONSTANT RANK-NAMES <PTABLE "Peasant" "Novice" "Cheater">>
+
+<CONSTANT CHARNAME-LENGTH 24>
+<CONSTANT CHARNAME <ITABLE %<+ ,CHARNAME-LENGTH 1> (BYTE) 0>>
+
+<CONSTANT SAVE-NAME <PLTABLE (STRING) "BEYONDZ">>
+
+<CONSTANT NAMES-LENGTH 12>
+
+<CONSTANT DEFAULT-NAME-LENGTH 13>
+<CONSTANT DEFAULT-NAME
+         <PTABLE (STRING) 11 "Buck Palace" 0>>
+
+<CONSTANT LABEL-WIDTH 12>
+<CONSTANT BAR-LABELS
+         <PTABLE (STRING)
+            "   Endurance"
+            "    Strength"
+            "   Dexterity"
+            "Intelligence"
+            "  Compassion"
+            "        Luck"
+            " Armor Class">>
+
+<CONSTANT STAT-NAMES
+         <PTABLE "endurance"
+                 "strength"
+                 "dexterity"
+                 "intelligence"
+                 "compassion"
+                 "luck"
+                 "armor class"
+                 "experience">>
+
+<CONSTANT BORDERS <ITABLE 50 (BYTE) 0>>
+<CONSTANT MAZE-ROOMS <ITABLE 51 (BYTE) 0>>
+
+<CONSTANT MOOR-ROOMS
+         <PLTABLE (BYTE) IN-GAS MOOR2 MOOR3 MOOR4 MOOR5 MOOR6>>
+
+<CONSTANT CELLAR-ROOMS
+         <PLTABLE (BYTE) AT-STACK THRONE-ROOM AT-BOTTOM SKEL-ROOM
+                         MOSS-ROOM WC1>>
+
+<CONSTANT TOWER1-ROOMS 
+         <PLTABLE (BYTE) LEVEL1A LEVEL1B LEVEL1C LEVEL1D>>
+
+<CONSTANT TOWER2-ROOMS
+         <PLTABLE (BYTE) LEVEL2A LEVEL2B LEVEL2C LEVEL2D>>
+
+<CONSTANT TOWER3-ROOMS
+         <PLTABLE (BYTE) LEVEL3A LEVEL3B LEVEL3C LEVEL3D>>
+
+<CONSTANT PLAIN-ROOMS 
+         <PLTABLE (BYTE) PLAIN0 PLAIN1 PLAIN2 PLAIN3 PLAIN4 PLAIN5>>
+
+<CONSTANT INIT-STORM-TIMER 4>
+
+<CONSTANT MIZNIA-ROOMS <PLTABLE (BYTE) IN-PORT IN-YARD SW-MOOR>>
+
+<CONSTANT JUNGLE-ROOMS
+         <PLTABLE (BYTE)
+                  JUN0 WORM-ROOM JUN2 JUN3 JUN4 JUN5 JUN6>>
+
+<CONSTANT CAVE-ROOMS
+         <PLTABLE (BYTE)
+                  CAVE0 CAVE1 CAVE2 CAVE3 CAVE4 CAVE6>>
+
+<CONSTANT GRUE-SIGHTS
+         <LTABLE 2
+            "You sense a presence lurking in the darkness"
+            "A presence lurks in the darkness close at hand"
+            "Something is lurking in the darkness nearby">>
+
+<CONSTANT MIRROR-LIFE 36>
+
+<CONSTANT GRUE-ROOMS
+         <PLTABLE (BYTE)
+                  CAVE0 CAVE1 CAVE2 CAVE3 CAVE4
+                  CAVE6 CAVE7 SE-CAVE NE-CAVE IN-LAIR>>
+
+<CONSTANT FOREST-ROOMS
+         <PLTABLE (BYTE)
+                  TWILIGHT FOREST1 FOREST2 FOREST3
+                  FOREST4 FOREST5 FOREST6>>
+
+<CONSTANT RUIN-ROOMS
+         <PLTABLE (BYTE) RUIN0 RUIN1 RUIN2 RUIN3 RUIN4 RUIN5>>
+
+<CONSTANT ACCARDI-ROOMS
+         <PLTABLE (BYTE) IN-ACCARDI AT-GATE IN-HALL IN-WEAPON>>
+
+<CONSTANT SHORE-ROOMS
+         <PLTABLE (BYTE) AT-LEDGE AT-BRINE TOWER-BASE>>
+
+<CONSTANT WAND-LIST
+         <LTABLE 0 WAND STAFF STAVE STICK ROD CANE>>
+
+<VOC "ANNIHILATION" NOUN>
+<VOC "SAYONARA" NOUN>
+<VOC "ANESTHESIA" NOUN>
+<VOC "EVERSION" NOUN>
+<VOC "LEVITATION" NOUN>
+
+<CONSTANT WAND-FUNCTIONS
+         <LTABLE 0
+                 <PTABLE BLAST-WAND-F
+                         DESCRIBE-BLAST-WAND
+                         <VOC "ANNIHILATION" ADJ>>
+                 <PTABLE TELE-WAND-F
+                         DESCRIBE-TELE-WAND
+                         <VOC "SAYONARA" ADJ>>
+                 <PTABLE SLEEP-WAND-F
+                         DESCRIBE-SLEEP-WAND
+                         <VOC "ANESTHESIA" ADJ>>
+                 <PTABLE IO-WAND-F
+                         DESCRIBE-IO-WAND
+                         <VOC "EVERSION" ADJ>>
+                 <PTABLE LEV-WAND-F
+                         DESCRIBE-LEV-WAND
+                         <VOC "LEVITATION" ADJ>>>>
+
+<CONSTANT POTION-LIST
+         <LTABLE 0 APOTION BPOTION CPOTION DPOTION EPOTION>>
+
+<VOC "ENLIGHTENMENT" NOUN>
+<VOC "HEALING" NOUN>
+<VOC "DEATH" NOUN>
+<VOC "MIGHT" NOUN>
+<VOC "FORGETFUL" NOUN>
+
+<CONSTANT POTION-TABLES
+         <LTABLE 0
+            <PTABLE IQ-POTION-F
+                    DESCRIBE-IQ-POTION
+                    <VOC "ENLIGHTENMENT" ADJ>>
+            <PTABLE HEALING-POTION-F
+                    DESCRIBE-HEALING-POTION
+                    <VOC "HEALING" ADJ>>
+            <PTABLE DEATH-POTION-F
+                    DESCRIBE-DEATH-POTION
+                    <VOC "DEATH" ADJ>>
+            <PTABLE MIGHT-POTION-F
+                    DESCRIBE-MIGHT-POTION
+                    <VOC "MIGHT" ADJ>>
+            <PTABLE FORGET-POTION-F
+                    DESCRIBE-FORGET-POTION
+                    <VOC "FORGETFUL" ADJ>>>>
+
+<CONSTANT ALL-SCROLLS
+         <PLTABLE PARCHMENT GILT SMOOTH RUMPLE VELLUM
+                  PALIMP RENEWAL>>
+
+<CONSTANT SCROLL-LIST
+         <LTABLE 0 PARCHMENT GILT SMOOTH RUMPLE VELLUM>>
+
+<VOC "MISCHIEF" NOUN>
+<VOC "HONING" NOUN>
+<VOC "PROTECTION" NOUN>
+<VOC "FIREWORKS" NOUN>
+<VOC "RECALL" NOUN>
+
+<CONSTANT SCROLL-FUNCTIONS
+         <LTABLE 0
+            <PTABLE DO-PARTAY
+                    DESCRIBE-DO-PARTAY
+                    <VOC "MISCHIEF" ADJ>
+                    "yard improvements"
+                    1
+                    8>
+            <PTABLE DO-BLESS-WEAPON
+                    DESCRIBE-BLESS-WEAPON
+                    <VOC "HONING" ADJ>
+                    "weaponry"
+                    5
+                    16>
+            <PTABLE DO-BLESS-ARMOR
+                    DESCRIBE-BLESS-ARMOR
+                    <VOC "PROTECTION" ADJ>
+                    "armor"
+                    5
+                    16>
+            <PTABLE DO-FILFRE
+                    DESCRIBE-DO-FILFRE
+                    <VOC "FIREWORKS" ADJ>
+                    "humility and self-effacement"
+                    1
+                    8>
+            <PTABLE DO-GOTO
+                    DESCRIBE-DO-GOTO
+                    <VOC "RECALL" ADJ>
+                    "transportation"
+                    5
+                    24>>>
+
+<CONSTANT TELEROOMS
+         <PLTABLE (BYTE)
+                  HILLTOP AT-BROOK IN-PORT N-MOOR XROADS NFORD SFORD
+                  NGURTH IN-THRIFF>>
+
+<CONSTANT OVERS
+         <LTABLE "Ruins" "Bridge" "Forest" "Town"
+                 "City" "Seashore" "Roadway"
+                 "Fields" "Village" "Castle" "Mist"
+                 "Jungle" "Seaport" "Mountainside">>
+
+<CONSTANT HIGHEST-ZBOT 16384>
+
+<CONSTANT ORUINS 1>
+<CONSTANT OBRIDGE 2>
+<CONSTANT OFOREST 3>
+<CONSTANT OACCARDI 4>
+<CONSTANT OCITY 5>
+<CONSTANT OSHORE 6>
+<CONSTANT OXROADS 7>
+<CONSTANT OPLAIN 8>
+<CONSTANT OGRUBBO 9>
+<CONSTANT OCAVES 10>
+<CONSTANT OMOOR 11>
+<CONSTANT OJUNGLE 12>
+<CONSTANT OMIZNIA 13>
+<CONSTANT OTHRIFF 14>
+
+<CONSTANT FLY-TABLES
+         <PLTABLE
+       ; 1 <PTABLE (BYTE) %<+ ,D-SE ,D-SW>
+                          OACCARDI OBRIDGE>
+       ; 2 <PTABLE (BYTE) %<+ ,D-NE ,D-SE ,D-SW>
+                          ORUINS OSHORE OFOREST>
+       ; 3 <PTABLE (BYTE) %<+ ,D-NE ,D-E ,D-S>
+                         OBRIDGE OACCARDI OCITY>
+       ; 4 <PTABLE (BYTE) %<+ ,D-S ,D-SW ,D-W ,D-NW>
+                         OSHORE OXROADS OFOREST ORUINS>
+       ; 5 <PTABLE (BYTE) %<+ ,D-N ,D-E ,D-SE ,D-S>
+                         OFOREST OSHORE OPLAIN OXROADS>
+       ; 6 <PTABLE (BYTE) %<+ ,D-N ,D-S ,D-SW ,D-W ,D-NW>
+                         OACCARDI OGRUBBO OPLAIN OCITY OBRIDGE>
+       ; 7 <PTABLE (BYTE) %<+ ,D-N ,D-NE ,D-E ,D-SE ,D-SW>
+                         OCITY OACCARDI OPLAIN OMIZNIA OCAVES>
+       ; 8 <PTABLE (BYTE) %<+ ,D-NE ,D-E ,D-SE ,D-S ,D-W ,D-NW>
+                         OSHORE OGRUBBO OMOOR
+                         OMIZNIA OXROADS OCITY>
+       ; 9 <PTABLE (BYTE) %<+ ,D-N ,D-S ,D-SW ,D-W>
+                         OSHORE OMOOR OJUNGLE OPLAIN>
+      ; 10 <PTABLE (BYTE) %<+ ,D-NE ,D-SE>
+                         OXROADS OTHRIFF>
+      ; 11 <PTABLE (BYTE) %<+ ,D-N ,D-SW ,D-NW>
+                         OGRUBBO OMIZNIA OPLAIN>
+      ; 12 <PTABLE (BYTE) %<+ ,D-NE ,D-E ,D-SW>
+                         OGRUBBO OMIZNIA OTHRIFF>
+      ; 13 <PTABLE (BYTE) %<+ ,D-N ,D-NE ,D-W ,D-NW>
+                         OPLAIN OMOOR OJUNGLE OXROADS>
+      ; 14 <PTABLE (BYTE) %<+ ,D-NE ,D-NW>
+                         OJUNGLE OCAVES>
+       >>
+
+<CONSTANT PICT-LIST
+         <PTABLE G-EYE G-EAR G-NOSE G-MOUTH G-HAND G-CLOCK>>
+
+<CONSTANT GURDY-EFFECTS
+         <PTABLE "wraith of colored light"
+                 "brief chord of music"
+                 "whiff of random odors"
+                 "puff of tasty flavors"
+                 "vague itchiness"
+                 "strange sense of urgency">>
+
+<CONSTANT GURDY-PEEKS
+         <PTABLE "eyes sting"
+                 "ears ring"
+                 "nose tickle"
+                 "mouth water"
+                 "skin crawl"
+                 "pulse race">>
+
+<CONSTANT Q-BUZZES
+         <PLTABLE <VOC "WHY" <>> <VOC "HOW" <>>
+                  <VOC "WHEN" <>> <VOC "WOULD" <>>
+                  <VOC "COULD" <>> <VOC "SHOULD" <>>
+                  <VOC "HAS" <>> <VOC "AM" <>> <VOC "IS" <>>
+                  <VOC "WAS" <>> >>
+
+<CONSTANT N-BUZZES
+         <PLTABLE <VOC "ZERO" <>> <VOC "ONE" <>> <VOC "TWO" <>>
+                  <VOC "THREE" <>> <VOC "FOUR" <>> <VOC "FIVE" <>>
+                  <VOC "SIX" <>> <VOC "SEVEN" <>> <VOC "EIGHT" <>>
+                  <VOC "NINE" <>> <VOC "TEN" <>>>>
+
+<CONSTANT SWEAR-WORDS
+         <PLTABLE <VOC "CURSE" <>> <VOC "GODDAMNED" <>> <VOC "CUSS" <>>
+                  <VOC "DAMN" <>> <VOC "FUCK" <>>
+                  <VOC "SHITHEAD" <>> <VOC "BASTARD" <>> <VOC "ASS" <>>
+                  <VOC "FUCKING" <>> <VOC "BITCH" <>> <VOC "DAMNED" <>>
+                  <VOC "COCKSUCKER" <>> <VOC "FUCKED" <>> <VOC "PEE" <>>
+                  <VOC "CUNT" <>> <VOC "ASSHOLE" <>> <VOC "PISS" <>>
+                ; <VOC "SUCK" <>> <VOC "SHIT" <>> <VOC "CRAP" <>> >>
+
+<CONSTANT COLOR-WORDS
+         <PLTABLE <VOC "MAUVE" <>> <VOC "LAVENDER" <>> <VOC "PUCE" <>>
+                  <VOC "RED" ADJ> <VOC "SILVER" <>>
+                  <VOC "GOLD" <>> <VOC "ORANGE" ADJ> <VOC "YELLOW" ADJ> >>
+
+<CONSTANT NO-MIRROR -1>
+
+<CONSTANT PILLAR-DOINGS
+         <LTABLE 2 
+            " wiggles its antennae"                 
+            " looks up at you inquisitively"
+            " arches its back">>
+
+<CONSTANT PILLAR-MOVES
+         <LTABLE 2 
+            " silently explores "
+            " crawls across "
+            " wiggles its way around ">>
+
+<CONSTANT BFLY-EATINGS
+         <LTABLE 2 
+            " explores the rim of the goblet"
+            " slowly opens and closes its wings"
+            " wiggles its antennae">>
+
+<CONSTANT BFLY-DOINGS
+         <LTABLE 2 
+            " darts around your head"
+            " lights on your nose, then flutters off"
+            " lands on your hand, then darts away">>
+
+<CONSTANT BFLY-HOVERS
+         <LTABLE 2
+            " hovers around "
+            " seems interested in "
+            " is fluttering close to ">>
+
+<CONSTANT REACH-TABLES
+         <PTABLE
+          <PLTABLE (BYTE) 1 3>
+          <PLTABLE (BYTE) 0 2 3 5>
+          <PLTABLE (BYTE) 1 5>
+          <PLTABLE (BYTE) 0 1 6 7>
+          <PLTABLE (BYTE) 0 1 2 3 5 6 7 8>
+          <PLTABLE (BYTE) 1 2 7 8>>>
+
+<CONSTANT MIRROR-LIST
+         <PLTABLE MIRROR0 MIRROR1 MIRROR2 MIRROR3 MIRROR4
+                  MIRROR5 MIRROR6>>
+
+<CONSTANT AMB 255>
+
+; "Removed per TAA.  No longer used for direction lookup with mouse."
+;<CONSTANT COMPASS
+         <PTABLE (BYTE)
+I-NW I-NW I-NW I-NW I-NW I-NW AMB I-NORTH I-NORTH I-NORTH I-NORTH I-NORTH AMB I-NE I-NE I-NE I-NE I-NE
+AMB AMB I-NW I-NW I-NW I-NW I-NW AMB I-NORTH I-NORTH I-NORTH AMB I-NE I-NE I-NE I-NE I-NE AMB
+AMB AMB AMB AMB AMB I-NW I-NW I-NW I-NORTH I-NORTH I-NORTH I-NE I-NE I-NE AMB AMB AMB AMB
+I-WEST I-WEST I-WEST I-WEST AMB AMB I-NW I-NW AMB I-NORTH AMB I-NE I-NE AMB AMB I-EAST I-EAST I-EAST
+I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST AMB I-NW I-NORTH I-NE AMB I-EAST I-EAST I-EAST I-EAST I-EAST I-EAST
+I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST AMB I-EAST I-EAST I-EAST I-EAST I-EAST I-EAST I-EAST I-EAST
+I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST I-WEST AMB I-SW I-SOUTH I-SE AMB I-EAST I-EAST I-EAST I-EAST I-EAST I-EAST
+I-WEST I-WEST I-WEST I-WEST AMB AMB I-SW I-SW AMB I-SOUTH AMB I-SE I-SE AMB AMB I-EAST I-EAST I-EAST
+AMB AMB AMB AMB AMB I-SW I-SW I-SW I-SOUTH I-SOUTH I-SOUTH I-SE I-SE I-SE AMB AMB AMB AMB 
+AMB AMB I-SW I-SW I-SW I-SW I-SW AMB I-SOUTH I-SOUTH I-SOUTH AMB I-SE I-SE I-SE I-SE I-SE AMB
+I-SW I-SW I-SW I-SW I-SW I-SW AMB I-SOUTH I-SOUTH I-SOUTH I-SOUTH I-SOUTH AMB I-SE I-SE I-SE I-SE I-SE
+I-SW I-SW I-SW I-SW I-SW AMB AMB I-SOUTH I-SOUTH I-SOUTH I-SOUTH I-SOUTH AMB AMB I-SE I-SE I-SE I-SE >>
+
+
+; <CONSTANT DORN-SOUNDS
+         <LTABLE 2
+            "Far overhead, you hear something bellow \"Hurumph!\""
+            "\"Hurumph!\" bellows a distant voice."
+            "A loud \"Hurumph!\" echoes in the lighthouse.">>
+
+; <CONSTANT CLOSE-DORNS
+         <LTABLE 2
+            "Close at hand, you hear something bellow \"Hurumph!\""
+            "\"Hurumph!\" bellows a nearby voice."
+            "A loud \"Hurumph!\" echoes in the lighthouse.">>
+
+<CONSTANT TREE-DOINGS
+         <LTABLE 2
+            " whisper among themselves"
+            " shuffle around uncertainly"
+            " seem to be regrouping">>
+
+<CONSTANT SAD-TREES
+         <LTABLE 2
+            " shuffle around disconsolately"
+            " sing carols of mourning"
+            " shake their ornaments with frustration">>
+
+<CONSTANT HUNTER-DOINGS
+         <LTABLE 2
+            " skulk about the pasture's edge"
+            " shout something incoherent"
+            " call out to one another">>
+
+<CONSTANT MINX-DOINGS
+         <LTABLE 2
+            " rubs up against your leg"
+            " mews sweetly"
+            " plays at your feet"
+            " looks up at you and mews">>
+
+<CONSTANT DARK-MINXES
+         <LTABLE 2
+            " rubs up against your leg"
+            " is moving about your feet"
+            " purrs in the darkness">>
+
+<CONSTANT MINX-SETTLES
+         <LTABLE 2
+            " settles comfortably"
+            " purrs and nudges about"
+            " squirms around">>
+
+<CONSTANT MINX-RESTLESS
+         <LTABLE 2
+            " is acting a bit restless"
+            " shifts its position in your arms"
+            " fidgets about uncomfortably">> 
+
+<CONSTANT MINX-SLEEPS
+         <LTABLE 2
+            " snores gently"
+            " fidgets in its sleep"
+            " yawns without waking up">>
+
+<CONSTANT MINX-NERVES
+         <LTABLE 2
+            " fidgets nervously"
+            " whimpers with fear"
+            " mews anxiously">>
+
+<CONSTANT ARCH-SNIFFS
+         <LTABLE 2
+            " sniffs the ground suspiciously"
+            " whines anxiously, pawing at the ground"
+            " is snuffling around underfoot">>
+
+<CONSTANT CORBIE-SOUNDS
+         <LTABLE 2 "screech" "squawk" "croak">>
+
+<CONSTANT FEAR-CORBIES
+         <LTABLE 2 "fear" "anxiety" "terror">>
+
+<CONSTANT MAD-CORBIES
+         <LTABLE 2 "anger" "rage" "fury">>
+
+<CONSTANT SICK-DACT
+         <LTABLE 2
+            " snaps at you with its beak"
+            " screeches pitifully"
+            " flutters its good wing back and forth"
+            " cries out with pain"
+            " limps about in a helpless circle">>
+
+<CONSTANT HAPPY-DACT
+         <LTABLE 2
+            " scratches the ground with its claws"
+            " emits a dry croak of contentment"
+            " watches you with a sharp, beady eye"
+            " screeches at the sky"
+            " flutters about restlessly">>
+
+<CONSTANT DACT-WAITS
+         <LTABLE 2
+            " eyeing you expectantly"
+            " sharpening its beak"
+            " fluttering its wings">>
+
+<CONSTANT FLYING-DACT
+         <LTABLE 2
+            " peers at the ground below"
+            " circles patiently"
+            " beats its powerful wings"
+            " turns to look at you">>
+
+<CONSTANT TORTURES
+         <LTABLE 2 
+"your mouth gags with the taste of orcish nightsoil"
+"the stench of burning fish cakes makes you stagger"
+"hundreds of imaginary spiders crawl across your skin"
+"a syrupy arrangement of \"Born in the GUE\" pounds in your ears"
+"the raw glare of a disco strobe sends you reeling">>
+
+<CONSTANT MAMA-CLIMBS
+         <LTABLE 2
+" tries to climb higher, but can't quite manage it"
+" snorts at you angrily, trying to climb higher"
+" angrily paws the bottom of the maw">>
+
+<CONSTANT CLERIC-WOES
+         <LTABLE 2 
+            "Woe! Woe is us"
+            "Who will save us? O woe"
+            "O woe is us, woe"
+            "Will no one answer our prayers? Woe">>
+
+<CONSTANT MAGIC-WORDS
+         <LTABLE 0
+            <TABLE <VOC "SMEE" NOUN> <PLTABLE (STRING) "Smee"> 0>
+            <TABLE <VOC "YABBA" NOUN> <PLTABLE (STRING) "Yabba"> 0>
+            <TABLE <VOC "BOK" NOUN> <PLTABLE (STRING) "Bok"> 0>
+            <TABLE <VOC "SQUIRP" NOUN> <PLTABLE (STRING) "Squirp"> 0>
+            <TABLE <VOC "STELLA" NOUN> <PLTABLE (STRING) "Stella"> 0>
+            <TABLE <VOC "BLARN" NOUN> <PLTABLE (STRING) "Blarn"> 0>
+            <TABLE <VOC "PROSSER" NOUN> <PLTABLE (STRING) "Prosser"> 0>
+            <TABLE <VOC "YQUEM" NOUN> <PLTABLE (STRING) "Yquem"> 0>
+            <TABLE <VOC "WATKIN" NOUN> <PLTABLE (STRING) "Watkin"> 0>
+            <TABLE <VOC "JUKES" NOUN> <PLTABLE (STRING) "Jukes"> 0>
+            <TABLE <VOC "MACUGA" NOUN> <PLTABLE (STRING) "Macuga"> 0>>>
+
+<CONSTANT SCARE-COLORS <LTABLE 0 W?PUCE W?LAVENDER W?MAUVE>>
+
+<CONSTANT SHYNESS
+         <LTABLE 2
+            " hobbles out of your reach"
+            " backs away from you"
+            " won't let you near">>
+
+<CONSTANT CAROLS
+         <LTABLE 2
+            "Plover the River and Frotz the Woods"
+            "Winter Bozbarland"
+            "Dwaarnyn the Dark-Nosed Ur-Grue"
+            "I'm Dreaming of a Black Cavern"
+            "Good King Flathead"
+            "Dornbeasts Roasting on an Open Fire" >>
+
+<CONSTANT HOW-SINGS
+         <LTABLE 2
+                 " sing a few verses of \""
+                 " hum the chorus from \""
+                 " begin crooning \"">>
+
+<CONSTANT XTREE-DOINGS
+         <LTABLE 2
+                 " blink their lights"
+                 " whisper among themselves"
+                 " swish their tinsel"
+                 " rattle their ornaments">>             
+
+<CONSTANT COOK-DOINGS
+         <LTABLE 2
+                 " does his best to ignore you"
+                 " busies himself around the kitchen"
+                 " glances up at you and scowls"
+                 " bustles around the room">>
+
+<CONSTANT MAGIC-ITEMS
+         <PLTABLE STAFF CANE WAND ROD STICK STAVE
+                  RENEWAL PARCHMENT VELLUM SMOOTH RUMPLE GILT
+                  APOTION BPOTION CPOTION DPOTION EPOTION
+                  RFOOT CLOVER SHOE
+                  AMULET GOBLET VIAL
+                  SCABBARD COCO ROOT RING STONE UHEMI LHEMI DIARY
+                  PALIMP CHEST PHASE JAR CIRCLET GLASS
+                  HELM GURDY SPENSE ROSE CLOAK WHISTLE >>
+
+<CONSTANT WEAPON-ITEMS
+         <PLTABLE SWORD SHILL AXE DAGGER ARROW>>
+
+<CONSTANT ARMOR-ITEMS
+         <PLTABLE CLOAK TUNIC SCALE CHAIN PLATE HELM PACK SCABBARD>>
+
+<CONSTANT LIGHT-SOURCES <PLTABLE AMULET LANTERN>>
+
+<CONSTANT WIND-ALERTS
+         <LTABLE 2 "You feel the wind changing direction"
+                   "The wind changes direction again"
+                   "A fresh wind blows from a new direction">>
+
+<CONSTANT STORAGE-SPACE 1024>
+<CONSTANT FREE-STORAGE <ITABLE ,STORAGE-SPACE (BYTE) 0>>
+
+<CONSTANT PRESENT 6>
+<CONSTANT MAX-ATIME 11>
+
+<CONSTANT ARCH-ROOMS
+         <TABLE (BYTE)
+                 ARCH-VOID ARCH1 ARCH2 ARCH3 ARCH4 ARCH5 0
+                 ARCH9 ARCH10 ARCH11 ARCH12 ARCH-VOID>>
+
+<CONSTANT DORN-MISSES
+         <LTABLE 2
+                 " moves its deadly gaze across the room"
+                 " tries to lock eyes with yours"
+                 " scans the room with its deadly gaze"
+                 " almost stares you down">>
+
+<CONSTANT DORN-HITS
+         <LTABLE 2
+                 " fixes its deadly gaze upon you"
+                 "'s eyes meet yours"
+                 " locks its eyes onto your face"
+                 "'s gaze stops you cold">>
+
+<CONSTANT DORN-ROOMS
+         <PLTABLE (BYTE) TOWER-TOP LEVEL3A LEVEL3B LEVEL3C LEVEL3D>>
+
+<CONSTANT PUPP-DOINGS
+         <LTABLE 2
+            "making faces at you"
+            "hurling insults at you"
+            "reciting libelous rhymes about your personal life"
+            "spreading rumors about you"
+            "accusing you of shocking indiscretions"
+            "taunting you">>
+
+<CONSTANT PUPP-MISSES
+         <LTABLE 2
+            " swings back and forth in its tree"
+            " pauses to think of another insult"
+            " dodges behind a tree trunk"
+            " stops to chuckle at its own cleverness">>
+
+<CONSTANT PUPP-HITS
+         <LTABLE 2
+" twists its body into an unflattering parody of your own"
+" recites your nightly personal habits in excruciating detail"
+" mirrors the expression on your face with infuriating accuracy"
+" accuses your mother of shocking improprieties"
+" reminds you how much weight you've gained lately, and where">>
+
+<CONSTANT STRANGLES
+         <LTABLE 2
+            "The bony fingers close tighter around your throat"
+            "You gasp for breath as the skeleton throttles your neck"
+            "The skeleton grins with menace as its fingers close tighter">>
+
+<CONSTANT S-LADDER 0>
+<CONSTANT S-CAT 1>
+<CONSTANT S-13 2>
+<CONSTANT S-UMBRELLA 3>
+
+<CONSTANT SUCKER-TYPES <LTABLE 0 S-LADDER S-CAT S-13 S-UMBRELLA>>
+
+<CONSTANT SUCKER-NAMES
+         <PTABLE "stepladder"
+                 "black cat"
+                 "giant number 13"
+                 "spinning umbrella">>
+
+<CONSTANT SUCKER-SYNS-A
+         <PTABLE <VOC "LADDER" NOUN>
+                 <VOC "CAT" NOUN>
+                 <VOC "THIRTEEN" NOUN>
+                 <VOC "UMBRELLA" NOUN>>>
+
+<CONSTANT SUCKER-SYNS-B
+         <PTABLE <VOC "STEPLADDER" NOUN>
+                 <VOC "KITTY" NOUN>
+                 <VOC "INTNUM" NOUN>
+                 <VOC "BROLLY" NOUN>>>
+
+<CONSTANT SUCKER-ADJS
+         <PTABLE <VOC "STEP" ADJ>
+                 <VOC "KITTY" ADJ>
+                 <VOC "NUMBER" ADJ>
+                 <VOC "SPINNING" ADJ>>>
+
+<CONSTANT SUCKER-SMASHES
+         <PTABLE
+" pirouettes across the chamber, grazing the mirror"
+" yowls playfully, leaps high and rakes its claws across the mirror"
+" studies itself in the mirror, frowns, and jabs at it angrily"
+"'s point nudges against the mirror">>
+
+<CONSTANT SUCKER-HITS
+    <PTABLE
+       <LTABLE 2
+         " opens its legs wide, and steps right over you"
+         " does a somersault over your head"
+         " leaps over your head">
+       <LTABLE 2
+         " marches back and forth in front of you"
+         " places itself directly in your path"
+         " slinks to and fro before you">
+       <LTABLE 2
+         " points to itself, then at you"
+         " stares you right in the face"
+         " waves at you grimly">
+       <LTABLE 2
+         " slowly opens, then snaps itself shut"
+         " snaps itself open, then slowly closes"
+         " opens itself as wide as possible">>>
+
+<CONSTANT SUCKER-MISSES
+    <PTABLE
+       <LTABLE 2
+         " clumps around the passage"
+         " twirls on one leg"
+         " tries to step over you">
+       <LTABLE 2
+         " races around the chamber"
+         " tries to cross your path"
+         " slinks along the edge of the passage">
+       <LTABLE 2
+         " slides closer to you"
+         " does its best to keep your attention"
+         " tries to block the passage">
+       <LTABLE 2
+         " whacks the wall trying to open itself"
+         " whirls towards the center of the passage"
+         " stops moving, then spins the other way">>>
+
+<CONSTANT SUCKER-STALKS
+         <LTABLE 2 "brushes past" "is stalking" "circles around">>
+
+<CONSTANT LUCKY-OBJECTS
+         <PLTABLE RFOOT CLOVER SHOE>>
+
+<CONSTANT EMPTY-WANDS
+         <LTABLE 2 
+                 " sputters uselessly"
+                 " emits a few feeble sparks"
+                 " coughs impotently">>
+
+<CONSTANT NO-SLEEPS
+         <PLTABLE DUST CRAB VAPOR DEAD SKELETON
+                  ASUCKER BSUCKER CSUCKER>>
+
+<CONSTANT OFFERS
+         <LTABLE 2 "Yours for only "
+                   "A rare bargain at "
+                   "I'd part with it for "
+                   "For you, just ">>
+
+<CONSTANT USED-OFFERS
+         <LTABLE 2 "This used one's worth "
+                   "Used, it's worth about "
+                   "A used one like this goes for ">>
+
+<CONSTANT JUNGLE-DESCS
+         <LTABLE 0
+            <PTABLE DESCRIBE-JD0 JD0-F>
+            <PTABLE DESCRIBE-JD1 JD1-F>
+            <PTABLE DESCRIBE-JD2 JD2-F>
+            <PTABLE DESCRIBE-JD3 JD3-F>>>
+
+<CONSTANT CITY-ENTRIES 
+         <LTABLE 2 
+                 "The peace of the countryside is shattered"
+                 "Decrepit buildings close in on every side"
+                 "The road becomes noisy and crowded">>
+
+<CONSTANT FOREST-DESCS
+         <LTABLE 0
+            <PTABLE DESCRIBE-F1 F1-F>
+            <PTABLE DESCRIBE-F2 F2-F>
+            <PTABLE DESCRIBE-F3 F3-F>
+            <PTABLE DESCRIBE-F4 F4-F>
+            <PTABLE DESCRIBE-F5 F5-F>
+            <PTABLE DESCRIBE-F6 F6-F>>>
+
+<CONSTANT RUIN-DESCS
+         <LTABLE 0
+            <PTABLE DESCRIBE-RD0 RD0-F>
+            <PTABLE DESCRIBE-RD1 RD1-F>
+            <PTABLE DESCRIBE-RD2 RD2-F>
+            <PTABLE DESCRIBE-RD3 RD3-F>
+            <PTABLE DESCRIBE-RD4 RD4-F>>>
+
+<CONSTANT BRIDGE-TYPES
+         <LTABLE 2
+            "Clammy mist obscures your view of either end"
+            "Your ears ring from the roar of water far below"
+            "Both edges of the chasm are obscured in the clammy mist"
+            "The deafening roar of water is giving you a headache">>
+
+<CONSTANT NOPEELS <PLTABLE CLERIC OWOMAN SALT COOK>>
+
+<CONSTANT FULL 5>
+
+<CONSTANT SUSS-WIDTH 18>
+<CONSTANT SUSS-HEIGHT 5>
+<CONSTANT SUSSY 7>
+<CONSTANT SUSS-STATS <PTABLE (BYTE) P?ENDURANCE P?STRENGTH P?DEXTERITY>>
+
+<CONSTANT AH-YESSES
+         <LTABLE 2 
+                 "Ah, yes! A " 
+                 "That's a "
+                 "A "
+                 "Your basic "
+                 "Behold! A "
+                 "This is a ">>
+
+<CONSTANT MENU-LIST
+         <PTABLE " Begin using a preset character    "
+                 " Select a preset character         "
+                 " Randomly generate a new character "
+                 " Create your own character         "
+                 " Quit ">>
+
+<CONSTANT SALT-DABS
+         <LTABLE 2
+                 " dabs a bit more paint onto the canvas"
+                 " eyes his work critically"
+                 " touches up a spot on his painting"
+                 " pauses to squint at his handiwork">>
+
+<CONSTANT DARK-WALKS
+         <LTABLE 2
+                 "stumble blindly ahead"
+                 "inch forward one step at a time"
+                 "feel your way onward">>
+
+<CONSTANT OWOMAN-SNORTS 
+         <LTABLE 2 "sniff" "laugh" "observe" "chuckle" "mutter">>
+
+<CONSTANT DARK-MOVINGS 
+         <LTABLE 2 
+                 "You hear something move"
+                 "Something is moving around"
+                 "You hear a movement"
+                 "Something moves">>
+
+<CONSTANT URGRUE-GREETS 
+         <LTABLE 2
+                 "Welcome back"
+                 "Still alive? Impressive"
+                 "How nice of you to return">>
+
+<CONSTANT URGRUE-BYES
+         <LTABLE 2 
+                 "You'll be back,"
+                 "Leaving so soon?"
+                 "Do drop in again,">>
+
+<CONSTANT CHARLIST
+         <PLTABLE CONGREG BABY MAMA MINX DACT CLERIC UNICORN
+                  MAYOR HUNTER CONDUCTOR SALT COOK OWOMAN>>
+
+<CONSTANT BUNNY-SPLITS
+         <LTABLE 2 " divide once again"
+                   " are still dividing"
+                   " have divided once again"
+                   " continue to divide">>
+
+<CONSTANT OWOMAN-MOVES 
+         <LTABLE 2
+                 " dusts off the items in "
+                 " putters around behind "
+                 " polishes the top of "
+                 " leans against ">>
+
+<CONSTANT BANDIT-MUTTERS
+         <LTABLE 2
+             "The bandits chuckle among themselves"
+             "\"Har!\" shouts a bandit, for no apparent reason"
+             "One of the bandits winks at you">>
+             
+<CONSTANT OWOMAN-EYES
+         <LTABLE 2 
+            "eyeing you curiously"
+            "keeping an eye on you"
+            "watching every move you make">>
+
+<CONSTANT OUCHES
+         <LTABLE 2 "Yow" "Ouch" "Oof">>
+
+<CONSTANT CRAB-ATTACKS
+         <LTABLE 2 " closes in with its pincers"
+                   " gives you a nasty pinch"
+                   "'s pincers close in again"
+                   " pinches you hard">>
+
+<CONSTANT CRAB-MISSES
+         <LTABLE 2
+                 "'s pincers barely miss your leg"
+                 " misses you again, but just barely"
+                 " feints sideways, pincers snapping"
+                 " barely misses you again"
+                 " snaps out with its pincers, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises itself for another strike" >>
+
+<CONSTANT RAT-ATTACKS
+         <LTABLE 2 " closes in with its sharp teeth"
+                   " gives you a nasty bite"
+                   "'s teeth close in again"
+                   " bites you hard">>
+
+<CONSTANT RAT-MISSES
+         <LTABLE 2
+                 "'s teeth barely miss your ankle"
+                 " misses you again, but just barely"
+                 " feints to one side, teeth snapping"
+                 " barely misses you again"
+                 " swipes out with its claws, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises itself for another strike" >>
+
+<CONSTANT SNIPE-HITS
+         <LTABLE 2 " closes in with its sharp beak"
+                   " gives you a nasty peck"
+                   "'s beak closes in again"
+                   " pecks you hard">>
+
+<CONSTANT SNIPE-MISSES
+         <LTABLE 2
+                 "'s beak barely misses your eye"
+                 " misses you again, but just barely"
+                 " feints to one side, eyes flashing"
+                 " barely misses you again"
+                 " swipes out with its beak, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises itself for another strike" >>
+
+<CONSTANT VAPOR-DOINGS
+         <LTABLE 2
+            " whispers an obscene secret in your ear"
+            " giggles insanely"
+            " darts around your head, just out of reach">>
+
+<CONSTANT VAPOR-LAUGHS
+         <LTABLE 2
+            "Giggling with glee"
+            "Cackling with mischief"
+            "Sniggering maliciously">>
+
+<CONSTANT VAPOR-TICKLES 
+         <LTABLE 2
+            " tickles you in a sensitive place"
+            " pokes you where you ought not to be poked"
+            " infiltrates your naughty bits">>
+
+<CONSTANT VAPOR-SNEERS
+         <LTABLE 2
+            "Boo"
+            "Nyeah, nyeah"
+            "Cootchy-cootchy-coo"
+            "Woo-woo-woo"
+            "Nyuk, nyuk, nyuk">>
+
+<CONSTANT SPIDER-HITS
+         <LTABLE 2 " closes in with its mandibles"
+                   " gives you a nasty sting"
+                   "'s mandibles close in again"
+                   " stings you hard">>
+
+<CONSTANT SPIDER-MISSES
+         <LTABLE 2
+                 " tries to grab you with its mandibles"
+                 " misses you again, but just barely"
+                 " feints to one side, mandibles ready"
+                 " barely misses you again"
+                 " reaches out with its mandibles, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises itself for another strike" >>
+
+<CONSTANT SLUG-HITS
+         <LTABLE 2 " squirts vile ichors at you"
+                   " gives you a nasty squirt"
+                   "'s squirt glands score a direct hit"
+                   " squirts you again">>
+
+<CONSTANT SLUG-MISSES
+         <LTABLE 2
+                 " tries to squirt you with vile ichors"
+                 " poises itself for another squirt"
+                 " misses you again, but just barely"
+                 " feints to one side, squirt glands at the ready"
+                 " barely misses you again"
+                 " squirts out again, just missing you"  >>
+
+<CONSTANT WORM-HITS
+         <LTABLE 2 " closes in with its fangs"
+                   " gives you a nasty bite"
+                   "'s fangs close in again"
+                   " strikes you hard">>
+
+<CONSTANT WORM-MISSES
+         <LTABLE 2
+                 " tries to impale you with its fangs"
+                 " misses you again, but just barely"
+                 " feints to one side, fangs bared"
+                 " barely misses you again"
+                 " strikes out with its fangs, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises itself for another strike" >>
+
+<CONSTANT JAW-HITS
+         <LTABLE 2 " closes in with its jaws"
+                   " gives you a nasty snap"
+                   "'s jaws close in again"
+                   " bites you hard">>
+
+<CONSTANT JAW-MISSES
+         <LTABLE 2
+                 " tries to snap you with its jaws"
+                 " misses you again, but just barely"
+                 " feints to one side, jaws snapping"
+                 " barely misses you again"
+                 " strikes out with its jaws, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises itself for another strike" >>
+
+<CONSTANT DEAD-HITS
+         <LTABLE 2 " closes in with his ghostly blade"
+                   " gives you a nasty cut"
+                   "'s blade closes in again"
+                   " strikes you hard">>
+                 
+<CONSTANT DEAD-MISSES
+         <LTABLE 2
+                 " tries to slice you with his ghostly blade"
+                 " misses you again, but just barely"
+                 " feints to one side, blade swinging"
+                 " barely misses you again"
+                 " strikes out with his blade, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises himself for another strike" >>
+
+<CONSTANT GHOUL-HITS
+         <LTABLE 2 " closes in with his spade"
+                   " gives you a nasty cut"
+                   "'s spade closes in again"
+                   " strikes you hard">>
+                 
+<CONSTANT GHOUL-MISSES
+         <LTABLE 2
+                 " tries to brain you with his spade"
+                 " misses you again, but just barely"
+                 " feints to one side, spade swinging"
+                 " barely misses you again"
+                 " strikes out with his spade, just missing you"  
+                 " strikes out at you, but misses"
+                 " poises himself for another strike" >>
+
+<CONSTANT MISSES
+         <LTABLE 2 "but miss"
+                   "missing by a hair"
+                   "nearly hitting it"
+                   "just barely missing">>
+
+<CONSTANT NO-MINX
+         <PLTABLE (BYTE)
+                  IN-SPLENDOR ON-BRIDGE IN-SKY APLANE
+                  NW-SUPPORT SW-SUPPORT SE-SUPPORT
+                  FOREST-EDGE ON-TRAIL ON-PEAK IN-CABIN>>
\ No newline at end of file
diff --git a/events.zil b/events.zil
new file mode 100644 (file)
index 0000000..9a8e254
--- /dev/null
@@ -0,0 +1,4481 @@
+"EVENTS for BEYOND ZORK:
+ Copyright (C)1987 Infocom, Inc. All rights reserved."
+
+<CONSTANT MAX-LAMP-LIFE 100>
+<GLOBAL LAMP-LIFE:NUMBER 20>
+
+<ROUTINE I-LANTERN ("AUX" V)
+        <SET V <VISIBLE? ,LANTERN>>
+        <COND (<DLESS? LAMP-LIFE 1>
+               <SETG LAMP-LIFE 0>
+               <DEQUEUE ,I-LANTERN>
+               <UNMAKE ,LANTERN ,LIGHTED>
+               <REPLACE-ADJ? ,LANTERN ,W?LIGHTED ,W?DARK>
+               <COND (<ZERO? .V>
+                      <RFALSE>)>
+               <SETG P-IT-OBJECT ,LANTERN>
+               <TELL "  The " 'LANTERN
+                     "'s light flickers and goes out." CR>
+               <SAY-IF-HERE-LIT>
+               <RTRUE>)
+              (<ZERO? .V>
+               <RFALSE>)
+              (<EQUAL? ,LAMP-LIFE 20>
+               <SETG P-IT-OBJECT ,LANTERN>
+               <TELL "  The light from the " 'LANTERN
+                     " is getting dimmer." CR>
+               <RTRUE>)
+              (<EQUAL? ,LAMP-LIFE 10>
+               <SETG P-IT-OBJECT ,LANTERN>
+               <TELL "  The " 'LANTERN "'s glow is fading rapidly." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<CONSTANT DOOR-CRASHER 30> "Strength required to break open a door."
+
+"Returns a direction for a monster to move, -1 if none."
+                               
+<ROUTINE I-CRAB ("AUX" L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,CRAB>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,CRAB ,P?ENDURANCE> 1>
+                      <TELL ,TAB 
+"Something falls to your feet with a ">
+                      <ITALICIZE "plink">
+                      <TELL ,COMMA-AND>
+                      <COND (<ZERO? ,LIT?>
+                             <TELL "a shadow">)
+                            (T
+                             <TELL THE ,CRAB>)>
+                      <PRINT " retreats into the ">
+                      <TELL "darkness." CR>
+                      <KILL-MONSTER ,CRAB>
+                      <MOVE ,CROWN ,HERE>
+                      <SETG P-IT-OBJECT ,CROWN>
+                      <RTRUE>)
+                     (<IS? ,CRAB ,SURPRISED>
+                      <SEE-MONSTER ,CRAB>
+                      <COND (<NOT <IS? ,CRAB ,SLEEPING>>
+                             <TELL ,TAB>
+                             <COND (<ZERO? ,LIT?>
+                                    <DARK-MOVES>
+                                    <RTRUE>)>
+                             <COND (<AND <HERE? THRONE-ROOM>
+                                         <NOT <IS? ,CRAB ,TOUCHED>>>
+                                    <MAKE ,CRAB ,TOUCHED>
+                                    <TELL CTHE ,CRAB
+"'s antennae snap to alert as you enter. He rises from " THE ,THRONE
+" and charges across " THE ,FLOOR ", claws snapping with anticipation!" CR>
+                                    <RTRUE>)>
+                             <WHIRLS ,CRAB>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,CRAB>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,CRAB>>
+               <TELL ,TAB>
+               <COND (<T? .DAMAGE>
+                      <COND (<ZERO? ,LIT?>
+                             <TELL "Something pinches you">)
+                            (T
+                             <TELL CTHE ,CRAB <PICK-NEXT ,CRAB-ATTACKS>>)>
+                      <OUCH ,CRAB .DAMAGE>
+                      <RTRUE>)
+                     (<ZERO? ,LIT?>
+                      <DARK-MOVES>
+                      <RTRUE>)>
+               <TELL CTHE ,CRAB <PICK-NEXT ,CRAB-MISSES> ,PERIOD>
+               <RTRUE>)>
+       
+        <SET DIR <MOVE-MONSTER? ,CRAB>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<ZERO? ,LIT?>
+                      <TELL ,YOU-HEAR B ,W?SOMETHING>
+                      <COND (<IS? ,CRAB ,SEEN>
+                             <TELL " else">)>
+                      <TELL " scuttle ">)
+                     (T
+                      <COND (<IS? ,CRAB ,SEEN>
+                             <TELL ,XTHE>)
+                            (T
+                             <TELL ,XA>)>
+                      <TELL D ,CRAB " scuttles ">)>
+               <MAKE ,CRAB ,SEEN>
+               <PASSAGE .DIR>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE PASSAGE (DIR)
+        <TELL "in from the " B .DIR " passage!" CR>
+        <RTRUE>>
+
+<ROUTINE I-RAT ("AUX" L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,RAT>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,RAT ,P?ENDURANCE> 1>
+                      <TELL ,TAB>
+                      <COND (<ZERO? ,LIT?>
+                             <TELL ,YOU-HEAR B ,W?SOMETHING " retreat">)
+                            (T
+                             <TELL "Mortally wounded, " THE ,RAT 
+                                   " retreats">)>
+                      <TELL " into the darkness." CR>
+                      <KILL-MONSTER ,RAT>
+                      <RTRUE>)
+                     (<IS? ,RAT ,SURPRISED>
+                      <SEE-MONSTER ,RAT>
+                      <COND (<NOT <IS? ,RAT ,SLEEPING>>
+                             <TELL ,TAB>
+                             <COND (<ZERO? ,LIT?>
+                                    <DARK-MOVES>
+                                    <RTRUE>)>
+                             <WHIRLS ,RAT>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,RAT>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,RAT>>
+               <TELL ,TAB>
+               <COND (<T? .DAMAGE>
+                      <COND (<ZERO? ,LIT?>
+                             <TELL "Something bites you">)
+                            (T
+                             <TELL CTHE ,RAT <PICK-NEXT ,RAT-ATTACKS>>)>
+                      <OUCH ,RAT .DAMAGE>
+                      <RTRUE>)
+                     (<ZERO? ,LIT?>
+                      <DARK-MOVES>
+                      <RTRUE>)>
+               <TELL CTHE ,RAT <PICK-NEXT ,RAT-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,RAT>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<ZERO? ,LIT?>
+                      <TELL ,YOU-HEAR B ,W?SOMETHING " scurry ">)
+                     (T
+                      <COND (<IS? ,RAT ,SEEN>
+                             <TELL ,XTHE>)
+                            (T
+                             <TELL ,XA>)>
+                      <TELL D ,RAT " scurries ">)>
+               <MAKE ,RAT ,SEEN>
+               <PASSAGE .DIR>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-SNIPE ("AUX" L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,SNIPE>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,SNIPE ,P?ENDURANCE> 1>
+                      <TELL ,TAB "Battered beyond endurance, " THE ,SNIPE>
+                      <PRINT " retreats into the ">
+                      <TELL "fog." CR>
+                      <KILL-MONSTER ,SNIPE>
+                      <RTRUE>)
+                     (<IS? ,SNIPE ,SURPRISED>
+                      <SEE-MONSTER ,SNIPE>
+                      <COND (<NOT <IS? ,SNIPE ,SLEEPING>>
+                             <TELL ,TAB>
+                             <WHIRLS ,SNIPE>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,SNIPE>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,SNIPE>>
+               <TELL ,TAB CTHE ,SNIPE>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,SNIPE-HITS>>
+                      <OUCH ,SNIPE .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,SNIPE-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,SNIPE>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,SNIPE ,SEEN>
+                      <TELL ,XTHE>)
+                     (T
+                      <TELL ,XA>)>
+               <MAKE ,SNIPE ,SEEN>
+               <TELL D ,SNIPE " streaks out of the mist!" CR>
+               <TOPPLED? ,SNIPE>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-VAPOR ("AUX" L DIR DAMAGE)
+        <SET L <LOC ,VAPOR>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,VAPOR ,P?ENDURANCE> 1>
+                      <TELL ,TAB CTHE ,VAPOR>
+                      <PRINT " disappears in a spectral flash">
+                      <TELL ,PERIOD>
+                      <NEXT-MONSTER ,SNIPE>
+                      <KILL-MONSTER ,VAPOR>
+                      <RTRUE>)
+                     (<IS? ,VAPOR ,SURPRISED>
+                      <SEE-MONSTER ,VAPOR>
+                      <TELL ,TAB CTHE ,VAPOR
+                            " giggles when it sees you." CR>
+                      <TOPPLED? ,VAPOR>
+                      <RTRUE>)
+                     (<TOPPLED? ,VAPOR>
+                      <RTRUE>)>
+               <NEXT-ENDURANCE? ,VAPOR>
+               <COND (<AND <PROB 50>
+                           <VAPOR-SNATCH?>>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,VAPOR>>
+               <TELL ,TAB CTHE ,VAPOR>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,VAPOR-TICKLES> C ,PER>
+                      <COND (<ZERO? ,STATIC>
+                             <TELL " \"" <PICK-NEXT ,VAPOR-SNEERS>
+                                   "!\"">)>
+                      <CRLF>
+                      <UPDATE-STAT <MSPARK? ,VAPOR .DAMAGE>>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,VAPOR-DOINGS>>
+               <COND (<PROB 50>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <TELL ". \"" <PICK-NEXT ,VAPOR-SNEERS> "!\"" CR>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,VAPOR>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,VAPOR ,SEEN>
+                      <TELL ,XTHE>)
+                     (T
+                      <TELL "Without warning, an ">)>
+               <MAKE ,VAPOR ,SEEN>
+               <TELL D ,VAPOR " coalesces out of the surrounding mist">
+               <COND (<PROB 50>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <TELL ". \"" <PICK-NEXT ,VAPOR-SNEERS> "!\"" CR>
+               <TOPPLED? ,VAPOR>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE VAPOR-SNATCH? ("AUX" (ANY 0) OBJ NXT RM LEN X)
+        <SET LEN <GETB ,MOOR-ROOMS 0>>
+        <COND (<SET OBJ <FIRST? ,PLAYER>>
+               <REPEAT ()
+                 <SET NXT <NEXT? .OBJ>>
+                 <COND (<IS? .OBJ ,NODESC>)
+                       (<OR <IS? .OBJ ,WIELDED>
+                            <IS? .OBJ ,WORN>>  
+                        <COND (<ZERO? .ANY>
+                               <TELL ,TAB CTHE ,VAPOR " tries to snatch ">
+                               <SAY-YOUR .OBJ>
+                               <TELL " from your grasp, ">
+                               <COND (<PROB 50>
+                                      <TELL "and nearly succeeds">)
+                                     (T
+                                      <TELL "but fails">)>
+                               <COND (<PROB 50>
+                                      <TELL ,PERIOD>
+                                      <RTRUE>)>
+                               <INC ANY>)>)
+                       (<IS? .OBJ ,TAKEABLE>
+                        <PROG ()
+                           <SET RM <GETB ,MOOR-ROOMS <RANDOM .LEN>>>
+                           <COND (<EQUAL? .RM ,HERE>
+                                  <AGAIN>)>>
+                        <UNMAKE .OBJ ,WORN>
+                        <UNMAKE .OBJ ,WIELDED>
+                        <MOVE .OBJ .RM>
+                        <MOVE ,VAPOR .RM>
+                        <MAKE ,VAPOR ,SURPRISED>
+                        <SETG LAST-MONSTER <FIND-IN? ,HERE ,MONSTER>>
+                        <SETG LAST-MONSTER-DIR <>>
+                        <SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
+                        <WINDOW ,SHOWING-ALL>
+                        <COND (<T? .ANY>
+                               <TELL ". Instead, it encircles ">)
+                              (T
+                               <TELL ,TAB 
+<PICK-NEXT ,VAPOR-LAUGHS> ", " THE ,VAPOR " snatches ">)>
+                        <SAY-YOUR .OBJ>
+                        <TELL " and spirits it away!" CR>
+                        <RTRUE>)>
+                 <SET OBJ .NXT>
+                 <COND (<ZERO? .OBJ>
+                        <RETURN>)>>)>
+        <COND (<T? .ANY>
+               <TELL ,PERIOD>
+               <RTRUE>)>
+        <SET X <GET ,STATS ,LUCK>>
+        <COND (<L? .X 2>)
+              (<PROB .X>
+               <RFALSE>)>
+        <PROG ()
+           <SET RM <GETB ,MOOR-ROOMS <RANDOM .LEN>>>
+           <COND (<EQUAL? .RM ,HERE>
+                  <AGAIN>)>>
+        <MAKE ,VAPOR ,SURPRISED>
+        <TELL ,TAB <PICK-NEXT ,VAPOR-LAUGHS> ", " THE ,VAPOR
+ " grabs you by the ankles and lifts you high into the air!" CR>
+        <COND (<T? ,VERBOSITY>
+               <CRLF>)>
+        <GOTO .RM>
+        <SET X <GET ,STATS ,ENDURANCE>>
+        <COND (<G? .X 5>
+               <SET X -5>)
+              (T
+               <SET X <- 0 <- .X 1>>>)>
+        <UPDATE-STAT .X>
+        <TELL ,TAB "You slowly recover your bearings." CR>
+        <RTRUE>>
+
+<ROUTINE I-SPIDER ("AUX" L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,SPIDER>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,SPIDER ,P?ENDURANCE> 1>
+                      <TELL ,TAB CTHE ,SPIDER>
+                      <PRINT " retreats down the passageway, ">
+                      <TELL "its wounds oozing with vile ichors." CR>
+                      <KILL-MONSTER ,SPIDER>
+                      <RTRUE>)
+                     (<IS? ,SPIDER ,SURPRISED>
+                      <SEE-MONSTER ,SPIDER>
+                      <COND (<NOT <IS? ,SPIDER ,SLEEPING>>
+                             <TELL ,TAB>
+                             <WHIRLS ,SPIDER>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,SPIDER>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,SPIDER>>
+               <TELL ,TAB CTHE ,SPIDER>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,SPIDER-HITS>>
+                      <OUCH ,SPIDER .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,SPIDER-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,SPIDER>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,SPIDER ,SEEN>
+                      <TELL ,XTHE>)
+                     (T
+                      <MAKE ,SPIDER ,SEEN>
+                      <TELL ,XA>)>
+               <TELL D ,SPIDER " crawls in from the " B .DIR " passage!" CR>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-SLUG ("AUX" L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,SLUG>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,SLUG ,P?ENDURANCE> 1>
+                      <TELL ,TAB CTHE ,SLUG>
+                      <PRINT " retreats down the passageway, ">
+                      <TELL "oozing something wet." CR>
+                      <KILL-MONSTER ,SLUG>
+                      <RTRUE>)
+                     (<IS? ,SLUG ,SURPRISED>
+                      <SEE-MONSTER ,SLUG>
+                      <COND (<NOT <IS? ,SLUG ,SLEEPING>>
+                             <TELL ,TAB>
+                             <WHIRLS ,SLUG>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,SLUG>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,SLUG>>
+               <TELL ,TAB CTHE ,SLUG>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,SLUG-HITS>>
+                      <OUCH ,SLUG .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,SLUG-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,SLUG>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,SLUG ,SEEN>
+                      <TELL ,XTHE>)
+                     (T
+                      <MAKE ,SLUG ,SEEN>
+                      <TELL ,XA>)>
+               <TELL D ,SLUG " oozes ">
+               <PASSAGE .DIR>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-WORM ("AUX" L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,WORM>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,WORM ,P?ENDURANCE> 1>
+                      <TELL "  Hissing with humiliation, " THE ,WORM 
+                            " slithers away into the undergrowth." CR>
+                      <KILL-MONSTER ,WORM>
+                      <RTRUE>)
+                     (<IS? ,WORM ,SURPRISED>
+                      <SEE-MONSTER ,WORM>
+                      <COND (<NOT <IS? ,WORM ,SLEEPING>>
+                             <TELL ,TAB CTHE ,WORM
+                                  " rears up as it sees you." CR>
+                             <TOPPLED? ,WORM>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,WORM>
+                      <RTRUE>)>
+               <TELL ,TAB CTHE ,WORM>
+               <COND (<IN? ,PLAYER ,MAW>
+                      <PRINT " lurks around the idol's maw">
+                      <COND (<PROB 50>
+                             <TELL ", sharpening its fangs">)>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,WORM>>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,WORM-HITS>>
+                      <OUCH ,WORM .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,WORM-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,WORM>>
+        <COND (<T? .DIR>
+               <TELL ,TAB CTHE ,WORM>
+               <PRINT " reappears from the ">
+               <TELL B .DIR "!" CR>
+               <TOPPLED? ,WORM>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-CROC ("AUX" DAMAGE)
+        <COND (<IN? ,CROC ,HERE>
+               <COND (<L? <GETP ,CROC ,P?ENDURANCE> 1>
+                      <TELL ,TAB CTHE ,CROC>
+                      <TELL " drags itself off into the bushes." CR>
+                      <KILL-MONSTER ,CROC>
+                      <RTRUE>)
+                     (<IS? ,CROC ,SURPRISED>
+                      <SEE-MONSTER ,CROC>
+                      <COND (<NOT <IS? ,CROC ,SLEEPING>>
+                             <TELL ,TAB>
+                             <WHIRLS ,CROC>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,CROC>
+                      <RTRUE>)>
+               <TELL ,TAB CTHE ,CROC>
+               <COND (<IN? ,PLAYER ,MAW>
+                      <PRINT " lurks around the idol's maw">
+                      <CHOPS>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,CROC>>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,JAW-HITS>>
+                      <OUCH ,CROC .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,JAW-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <RETURN <CHARGING? ,CROC>>>
+
+<ROUTINE CHARGING? (OBJ "AUX" DIR)
+        <SET DIR <MOVE-MONSTER? .OBJ>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? .OBJ ,SEEN>
+                      <TELL ,XTHE>)
+                     (T
+                      <MAKE .OBJ ,SEEN>
+                      <TELL ,XA>)>
+               <TELL D .OBJ " charges in from the " B .DIR "!" CR>
+               <TOPPLED? .OBJ>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE CHOPS ()
+        <COND (<PROB 50>
+               <TELL ", licking its chops">)>
+        <TELL ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-HOUND ("AUX" DAMAGE)
+        <COND (<IN? ,HOUND ,HERE>
+               <COND (<L? <GETP ,HOUND ,P?ENDURANCE> 1>
+                      <TELL "  Whining with pain, " THE ,HOUND
+                            " limps away into the forest." CR>
+                      <KILL-MONSTER ,HOUND>
+                      <RTRUE>)
+                     (<IS? ,HOUND ,SURPRISED>
+                      <SEE-MONSTER ,HOUND>
+                      <COND (<NOT <IS? ,HOUND ,SLEEPING>>
+                             <TELL ,TAB CTHE ,HOUND 
+                                   " bares its fangs when it sees you." CR>
+                             <TOPPLED? ,HOUND>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,HOUND>
+                      <RTRUE>)>
+               <TELL ,TAB CTHE ,HOUND>
+               <COND (<IN? ,PLAYER ,POOL>
+                      <TELL " prowls the edge of " THE ,POOL>
+                      <CHOPS>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,HOUND>>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,JAW-HITS>>
+                      <OUCH ,HOUND .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,JAW-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <RETURN <CHARGING? ,HOUND>>>
+
+<ROUTINE I-PUPP ("AUX" L PL DIR TBL DEST DAMAGE)
+        <SET L <LOC ,PUPP>>
+        <COND (<EQUAL? .L ,HERE>
+               <COND (<L? <GETP ,PUPP ,P?ENDURANCE> 1>
+                      <TELL "  With a furious snarl, " THE ,PUPP>
+                      <PRINT " retreats into the ">
+                      <TELL "forest." CR>
+                      <NEXT-MONSTER ,HOUND>
+                      <KILL-MONSTER ,PUPP>
+                      <RTRUE>)
+                     (<IS? ,PUPP ,SURPRISED>
+                      <SEE-MONSTER ,PUPP>
+                      <COND (<NOT <IS? ,PUPP ,SLEEPING>>
+                             <TELL ,TAB CTHE ,PUPP 
+                                   " grins evilly when it sees you." CR>
+                             <TOPPLED? ,PUPP>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,PUPP>
+                      <RTRUE>)>
+               <NEXT-ENDURANCE? ,PUPP>
+               <SET PL <LOC ,PLAYER>>
+               <TELL ,TAB CTHE ,PUPP>
+               <COND (<NOT <EQUAL? .PL ,HERE>>
+                      <TELL <PICK-NEXT ,PUPP-MISSES> ,PERIOD>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,PUPP>>
+               <TELL <PICK-NEXT ,PUPP-HITS>>
+               <COND (<ZERO? .DAMAGE>
+                      <TELL ", but you manage to ignore it." CR>
+                      <RTRUE>)>
+               <TELL ,PERIOD>
+               <UPDATE-STAT .DAMAGE>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,PUPP>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,PUPP ,SEEN>
+                      <TELL CTHE ,PUPP " swings in from the " B .DIR ,PERIOD>
+                      <RTRUE>)>
+               <MAKE ,PUPP ,SEEN>
+               <SETG LAST-MONSTER-DIR ,P-WALK-DIR>
+               <TELL CA ,PUPP " drops out of the treetops!" CR>
+               <TOPPLED? ,PUPP>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-DEAD ("AUX" DIR DAMAGE)
+        <COND (<IN? ,DEAD ,HERE>
+               <COND (<L? <GETP ,DEAD ,P?ENDURANCE> 1>
+                      <TELL "  Wailing with self-pity, " THE ,DEAD
+                            " fades out of existence." CR>
+                      <KILL-MONSTER ,DEAD>
+                      <RTRUE>)
+                     (<IS? ,DEAD ,SURPRISED>
+                      <SEE-MONSTER ,DEAD>
+                      <WHIRLS ,DEAD>
+                      <RTRUE>)
+                     (<TOPPLED? ,DEAD>
+                      <RTRUE>)>
+               <NEXT-ENDURANCE? ,DEAD>
+               <SET DAMAGE <MONSTER-STRIKES? ,DEAD>>
+               <TELL ,TAB CTHE ,DEAD>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,DEAD-HITS>>
+                      <OUCH ,DEAD .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,DEAD-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,DEAD>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,DEAD ,SEEN>
+                      <TELL CTHE ,DEAD>
+                      <PRINT " reappears from the ">
+                      <TELL B .DIR>)
+                     (T
+                      <MAKE ,DEAD ,SEEN>
+                      <TELL "With a fearful battle cry, " 
+                            A ,DEAD " rises out of the ruins">)>
+               <TELL "!" CR>
+               <TOPPLED? ,DEAD>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-GHOUL ("AUX" DIR DAMAGE)
+        <COND (<IN? ,GHOUL ,HERE>
+               <COND (<L? <GETP ,GHOUL ,P?ENDURANCE> 1>
+                      <NEXT-MONSTER ,DEAD>
+                      <TELL ,TAB "Howling with pain and rage, "
+                            THE ,GHOUL " abandons his spade and">
+                      <PRINT " retreats into the ">
+                      <TELL "ruins." CR>
+                      <KILL-MONSTER ,GHOUL>
+                      <MOVE ,SPADE ,HERE>
+                      <SETG P-IT-OBJECT ,SPADE>
+                      <RTRUE>)
+                     (<IS? ,GHOUL ,SURPRISED>
+                      <SEE-MONSTER ,GHOUL>
+                      <COND (<NOT <IS? ,GHOUL ,SLEEPING>>
+                             <WHIRLS ,GHOUL>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,GHOUL>
+                      <RTRUE>)>
+               <SET DAMAGE <MONSTER-STRIKES? ,GHOUL>>
+               <TELL ,TAB CTHE ,GHOUL>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,GHOUL-HITS>>
+                      <OUCH ,GHOUL .DAMAGE>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,GHOUL-MISSES> ,PERIOD>
+               <RTRUE>)>
+        <SET DIR <MOVE-MONSTER? ,GHOUL>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<IS? ,GHOUL ,SEEN>
+                      <TELL CTHE ,GHOUL>
+                      <PRINT " reappears from the ">
+                      <TELL B .DIR>)
+                     (T
+                      <MAKE ,GHOUL ,SEEN>
+                      <TELL "Without warning, " A ,GHOUL
+                            " leaps out of the rubble">)>
+               <TELL "!" CR>
+               <TOPPLED? ,GHOUL>
+               <RTRUE>)>
+        <RFALSE>>
+
+<ROUTINE I-ASUCKER ()
+        <RETURN <MOVE-SUCKERS ,ASUCKER ,BSUCKER>>>
+
+<ROUTINE I-BSUCKER ()
+        <RETURN <MOVE-SUCKERS ,BSUCKER ,CSUCKER>>>
+
+<ROUTINE I-CSUCKER ()
+        <RETURN <MOVE-SUCKERS ,CSUCKER>>>
+
+<ROUTINE MOVE-SUCKERS (OBJ "OPT" (NXT 0)
+                          "AUX" (DAMAGE 0) L PL DIR TBL DEST X)
+        <SET L <LOC .OBJ>>
+        <COND (<EQUAL? .L ,HERE>
+               <TELL ,TAB>
+               <COND (<L? <GETP .OBJ ,P?ENDURANCE> 1>
+                      <TELL "Squealing with fear, " THE .OBJ
+                            " retreats down the passageway." CR>
+                      <COND (<T? .NXT>
+                             <NEXT-MONSTER .NXT>
+                             <NEXT-SUCKER .NXT>)>
+                      <KILL-MONSTER .OBJ>
+                      <RTRUE>)
+                     (<IS? .OBJ ,SURPRISED>
+                      <SEE-MONSTER .OBJ>
+                      <COND (<ZERO? ,LIT?>
+                             <DARK-MOVES>
+                             <RTRUE>)>
+                      <TELL CTHE .OBJ " glances up as you appear." CR>
+                      <RTRUE>)
+                     (<PROB 20>
+                      <PUTP .OBJ ,P?ENDURANCE <GETP .OBJ ,P?EMAX>>
+                      <WINDOW ,SHOWING-ROOM>
+                      <COND (<T? ,LIT?>
+                             <BLINK .OBJ>
+                             <TELL " turns into ">)>
+                      <NEXT-SUCKER .OBJ>
+                      <COND (<T? ,LIT?>
+                             <TELL A .OBJ "!" CR>
+                             <RTRUE>)>
+                      <TELL ,YOU-HEAR "a curious sound in the darkness." CR>
+                      <RTRUE>)>
+               
+               <SET X <GET ,STATS ,LUCK>>
+               <COND (<G? .X 9>
+                      <SET DAMAGE <PERCENT 10 .X>>)
+                     (<G? .X 1>
+                      <SET DAMAGE 1>)>
+               <NEXT-ENDURANCE? .OBJ>
+               <SET X <GETP ,HERE ,P?MIRROR-OBJ>>
+               <COND (<NOT <EQUAL? .X <> ,NO-MIRROR>>
+                      <COND (<T? ,LIT?>
+                             <TELL CTHE .OBJ
+                                   <GET ,SUCKER-SMASHES ,THIS-SUCKER> ,PTAB>
+                             <ITALICIZE "Pop">
+                             <TELL "!" CR>)
+                            (T
+                             <TELL ,YOU-HEAR "a flabby ">
+                             <ITALICIZE "pop">
+                             <TELL " in the darkness." CR>)>
+                      <DESTROY-MIRROR .X>
+                      <COND (<NOLUCK?>
+                             <UPDATE-STAT <- 0 .DAMAGE> ,LUCK T>)>
+                      <RTRUE>)
+                     (<ZERO? ,LIT?>)
+                     (<PROB 67>
+                      <TELL CTHE .OBJ
+                            <PICK-NEXT <GET ,SUCKER-HITS ,THIS-SUCKER>>
+                            ,PERIOD>
+                      <COND (<NOLUCK?>
+                             <UPDATE-STAT <- 0 .DAMAGE> ,LUCK T>)>
+                      <RTRUE>)>
+               <COND (<T? ,LIT?>
+                      <TELL CTHE .OBJ 
+                            <PICK-NEXT <GET ,SUCKER-MISSES ,THIS-SUCKER>>
+                            ,PERIOD>
+                      <RTRUE>)>
+               <TELL "Something " <PICK-NEXT ,SUCKER-STALKS>
+                     " you in the darkness." CR>
+               <RTRUE>)>        
+        <SET DIR <MOVE-MONSTER? .OBJ>>
+        <COND (<T? .DIR>
+               <TELL ,TAB>
+               <COND (<ZERO? ,LIT?>
+                      <TELL ,YOU-HEAR B ,W?SOMETHING 
+                            " stalk into the passage." CR>
+                      <RTRUE>)
+                     (<IS? .OBJ ,SEEN>
+                      <TELL ,XTHE>)
+                     (T
+                      <MAKE .OBJ ,SEEN>
+                      <TELL ,XA>)>
+               <TELL D .OBJ " stalks in from the " B .DIR " passage." CR>
+               <RTRUE>)>
+        
+        <SET X <GETP <LOC .OBJ> ,P?MIRROR-OBJ>>
+        <COND (<EQUAL? .X <> ,NO-MIRROR>
+               <RFALSE>)>
+        <TELL ,TAB ,YOU-HEAR 
+              "a distant patter of stalking feet, then a flabby ">
+        <ITALICIZE "pop">
+        <PRINT ,PERIOD>
+        <DESTROY-MIRROR .X>
+        <RTRUE>>
+
+<ROUTINE NEXT-SUCKER (OBJ "AUX" X)
+        <PROG ()
+           <SET X <PICK-ONE ,SUCKER-TYPES>>
+           <COND (<EQUAL? .X ,THIS-SUCKER>
+                  <AGAIN>)>>
+        <SETG THIS-SUCKER .X>
+        <SET X <GETPT .OBJ ,P?SYNONYM>>
+        <PUT .X 0 <GET ,SUCKER-SYNS-A ,THIS-SUCKER>>
+        <PUT .X 1 <GET ,SUCKER-SYNS-B ,THIS-SUCKER>>
+        <SET X <GETPT .OBJ ,P?ADJECTIVE>>
+        <PUT .X 0 <GET ,SUCKER-ADJS ,THIS-SUCKER>>
+        <RFALSE>>
+        
+<GLOBAL AMULET-TIMER:NUMBER 0>
+
+<ROUTINE I-AMULET ()
+        <COND (<DLESS? AMULET-TIMER 1>
+               <COND (<VISIBLE? ,AMULET>
+                      <STAR-FADES>)>
+               <STOP-AMULET>
+               <COND (<WEARING-MAGIC? ,AMULET>
+                      <NORMAL-STRENGTH>)>)>
+        <RFALSE>>
+             
+<ROUTINE STAR-FADES ("OPT" (ANGRY <>))
+        <TELL "  The amulet's glowing star ">
+        <COND (<T? .ANGRY>
+               <TELL "flares angrily, ">)>
+        <TELL "fades and disappears." CR>
+        <RTRUE>>
+                      
+<ROUTINE I-SALT ()
+        <COND (<NOT <HERE? ON-WHARF>>
+               <RFALSE>)
+              (<IS? ,SALT ,SEEN>
+               <UNMAKE ,SALT ,SEEN>
+               <RFALSE>)
+              (<PROB 75>
+               <RFALSE>)>
+        <MAKE ,SALT ,SEEN>
+        <TELL ,TAB CTHE ,SALT <PICK-NEXT ,SALT-DABS> ,PERIOD>
+        <RTRUE>>
+
+<GLOBAL GOSSIP:NUMBER 0>
+
+<ROUTINE I-BANDITS ()
+        <COND (<NOT <HERE? IN-PUB>>
+               <RFALSE>)
+              (<IS? ,BANDITS ,SEEN>
+               <UNMAKE ,BANDITS ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <MAKE ,BANDITS ,SEEN>
+        <TELL ,TAB>
+        <COND (<G? ,GOSSIP 4>
+               <TELL <PICK-NEXT ,BANDIT-MUTTERS> ,PERIOD>
+               <RTRUE>)>
+        <INC GOSSIP>
+        <COND (<EQUAL? ,GOSSIP 1>
+               <TELL 
+"One of the bandits leers at you. \"Har!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,GOSSIP 2>
+               <TELL
+"You overhear the word \"helmet\" in a conversation nearby." CR>
+               <RTRUE>)
+              (<EQUAL? ,GOSSIP 3>
+               <TELL 
+"A bandit looks you up and down. \"Monster bait. Har!\"" CR>
+               <RTRUE>)>
+        <TELL
+"\"... north of the River Phee,\" whispers a bandit." CR>
+        <RTRUE>>
+               
+<ROUTINE I-COOK ()
+        <COND (<NOT <HERE? IN-KITCHEN>>
+               <RFALSE>)
+              (<IS? ,COOK ,SEEN>
+               <UNMAKE ,COOK ,SEEN>
+               <RFALSE>)
+              (<PROB 75>
+               <RFALSE>)>
+        <MAKE ,COOK ,SEEN>
+        <SEE-CHARACTER ,COOK>
+        <TELL ,TAB CTHE ,COOK <PICK-NEXT ,COOK-DOINGS> ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-ONION-OFFER ()
+        <COND (<NOT <HERE? IN-KITCHEN>>
+               <RFALSE>)
+              (<IS? ,COOK ,SEEN>
+               <UNMAKE ,COOK ,SEEN>
+               <RFALSE>)>
+        <STOP-ONION-OFFER>
+        <TELL ,TAB CTHE ,COOK 
+              "'s scowl changes to a malicious grin. \"Listen, ">
+        <BOY-GIRL>
+        <TELL 
+",\" he says. \"You look like somebody who knows a great vegetable when ">
+        <COND (<IS? ,PLAYER ,FEMALE>
+               <TELL "s">)>
+        <TELL 
+"he sees one. You want this here onion? Okay. There's an old bottle of wine lyin' around downstairs somewhere. Bring it up to me in one piece, and " 
+THE ,ONION "'s yours.\" He" ,GLANCES-AT THE ,CELLAR-DOOR 
+" and shudders. \"Simple.\"" CR>
+        <RTRUE>>
+
+<GLOBAL GON:NUMBER 14> "Gondola timetable."
+
+<ROUTINE I-GONDOLA ("AUX" (RIDING 0))
+        <COND (<IN? ,WINNER ,GONDOLA>
+               <INC RIDING>)>
+        <COND (<IGRTR? GON 14>
+               <SETG GON 0>
+               <REPLACE-GLOBAL? ,AT-DOCK ,DGONDOLA ,NULL>
+               <MOVE ,GONDOLA ,AT-DOCK>
+               <MAKE ,GONDOLA ,OPENED>
+               <COND (<T? .RIDING>
+                      <SETG HERE ,AT-DOCK>)
+                     (<HERE? AT-DOCK>
+                      <SETG P-IT-OBJECT ,GONDOLA>)
+                     (T
+                      <RFALSE>)>               
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB CTHE ,GONDOLA
+" glides to a halt at " THE ,DOCK ,PTAB 
+"\"All off,\" calls " THE ,CONDUCTOR " as the hatch swings open. ">
+               <PRINT 
+"\"Thank you for riding the Miznia Jungle Skyway">
+               <TELL ". Please exit the Skycar in an orderly manner.\"" CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 1>
+               <COND (<NOT <HERE? AT-DOCK>>
+                      <RFALSE>)>
+               <TELL ,TAB "The last few " 'PASSENGERS 
+                     " are shuffling out of " THE ,GONDOLA>
+               <COND (<T? .RIDING>
+                      <TELL
+". \"All off, please,\" repeats " THE ,CONDUCTOR ", meaning you">)>
+               <TELL ,PERIOD>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 2>
+               <COND (<NOT <HERE? AT-DOCK>>
+                      <RFALSE>)>
+               <TELL ,TAB>
+               <COND (<T? .RIDING>
+                      <MOVE ,PLAYER ,AT-DOCK>
+                      <MAKE ,GONDOLA ,NODESC>
+                      <SETG P-WALK-DIR <>>
+                      <PRINT 
+"\"Thank you for riding the Miznia Jungle Skyway">
+                      <TELL
+",\" growls " THE ,CONDUCTOR ", pushing you out of " THE ,GONDOLA>
+                      <RELOOK>)>
+               <TELL
+"Eager " 'PASSENGERS " surge into the emptied " 'GONDOLA
+". \"All aboard, please,\" announces " THE ,CONDUCTOR " unnecessarily." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 3>
+               <UNMAKE ,GONDOLA ,OPENED>
+               <COND (<T? .RIDING>)
+                     (<NOT <HERE? AT-DOCK>>
+                      <RFALSE>)>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB
+"\"Stay clear of the door, please,\" calls " THE ,CONDUCTOR
+" as the last few " 'PASSENGERS " squeeze into " THE ,GONDOLA ,PERIOD>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 4>
+               <MOVE ,GONDOLA ,OVER-JUNGLE>
+               <REPLACE-GLOBAL? ,AT-DOCK ,NULL ,DGONDOLA>
+               <COND (<T? .RIDING>
+                      <SETG P-WALK-DIR <>>
+                      <SETG OLD-HERE <>>
+                      <SETG HERE ,OVER-JUNGLE>)
+                     (<HERE? AT-DOCK>
+                      <SETG P-IT-OBJECT ,DGONDOLA>)
+                     (T
+                      <RFALSE>)>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB CTHE ,GONDOLA
+" slides away from the dock and glides west, high over " THE ,JUNGLE ,PTAB
+"\"Welcome to the Miznia Jungle Skyway.\" drawls " THE ,CONDUCTOR
+", his voice heavy with boredom." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 5>
+               <REPLACE-GLOBAL? ,AT-DOCK ,DGONDOLA ,NULL>
+               <REPLACE-GLOBAL? ,NW-SUPPORT ,NULL ,DGONDOLA>           
+               <REPLACE-GLOBAL? ,NW-UNDER ,NULL ,DGONDOLA>
+               <REPLACE-GLOBAL? ,OVER-JUNGLE ,DOCK ,SUPPORT>
+               <PUTP ,NW-UNDER ,P?OVERHEAD ,DGONDOLA>          
+               <COND (<HERE? AT-DOCK>
+                      <GONDOLA-GONE ,W?WEST>
+                      <RTRUE>)
+                     (<HERE? NW-SUPPORT NW-UNDER>
+                      <VIEWGLIDE ,NW-UNDER ,W?EAST>
+                      <RTRUE>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)>
+               <WINDOW ,SHOWING-ROOM>
+               <SETG P-IT-OBJECT ,SUPPORT>
+               <TELL ,TAB CTHE ,GONDOLA
+" glides over " THE ,JUNGLE ", towards a tall " 'SUPPORT ,PTAB
+"\"The jungles of Miznia are the spawning grounds of the deadly " 'WORM
+",\" drones " THE ,CONDUCTOR
+". \"Often mistaken for a mossy boulder, the " 'WORM
+"'s fangs extend up to 32 inches during an attack.\"|
+  \"Oooh,\" murmurs the crowd." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 6>
+               <MOVE ,GONDOLA ,NW-SUPPORT>
+               <COND (<HERE? NW-SUPPORT>
+                      <GLIDING>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)
+                     (T
+                      <GLIDE-PAST ,NW-SUPPORT>)>
+               <TELL ,TAB
+"\"The tower to your right is one of several erected to elevate the Skyway above the treetops,\" explains " THE ,CONDUCTOR
+". \"Before the Skyway opened in 882 GUE, an average of twenty Miznia Jungle Train passengers died of wormbite each year.\"|
+  The crowd giggles nervously." CR> 
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 7>
+               <MOVE ,GONDOLA ,OVER-JUNGLE>
+               <COND (<T? .RIDING>
+                      <SETG HERE ,OVER-JUNGLE>)
+                     (<HERE? NW-SUPPORT>
+                      <SETG P-IT-OBJECT ,DGONDOLA>)
+                     (T
+                      <RFALSE>)>
+               <TURNS ,W?SOUTH>
+               <COND (<ZERO? .RIDING>
+                      <RTRUE>)>
+               <TELL ,TAB
+"\"The jungle is a rich source of exciting stories,\" continues " 
+THE ,CONDUCTOR ", stifling a yawn. \"The most famous is the Legend of the Crocodile's Tear.\"" CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 8>
+               <REPLACE-GLOBAL? ,NW-SUPPORT ,DGONDOLA ,NULL>
+               <REPLACE-GLOBAL? ,NW-UNDER ,DGONDOLA ,NULL>
+               <PUTP ,NW-UNDER ,P?OVERHEAD ,SUPPORT>
+               <REPLACE-GLOBAL? ,SW-SUPPORT ,NULL ,DGONDOLA>
+               <REPLACE-GLOBAL? ,SW-UNDER ,NULL ,DGONDOLA>
+               <PUTP ,SW-UNDER ,P?OVERHEAD ,DGONDOLA>
+               <COND (<HERE? NW-SUPPORT NW-UNDER>
+                      <SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB CTHE ,GONDOLA 
+" glides southward, and is soon out of sight." CR>
+                      <RTRUE>)
+                     (<HERE? SW-SUPPORT SW-UNDER>
+                      <VIEWGLIDE ,SW-UNDER ,W?NORTH>
+                      <RTRUE>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)>
+               <JUNGLE-GLIDE>
+               <TELL ,TAB
+"\"The Crocodile's Tear is a sapphire of extraordinary size and clarity. It was discovered by a slave working the granola mines of Antharia, who died bringing it to the surface.\"" CR>
+               <TELL ,TAB "Another " 'SUPPORT " is approaching." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 9>
+               <MOVE ,GONDOLA ,SW-SUPPORT>
+               <COND (<HERE? SW-SUPPORT>
+                      <GLIDING>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)
+                     (T
+                      <GLIDE-PAST ,SW-SUPPORT>)>
+               <TELL ,TAB
+"\"After passing through many hands, including those of Thaddium Fzort\" (\"Bless you,\" mutters a passenger), \"the jewel came into the possession of the evil sorceress Y'Syska, whose collection of gems and minerals is still without peer.\"" CR> 
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 10>
+               <MOVE ,GONDOLA ,OVER-JUNGLE>
+               <COND (<T? .RIDING>
+                      <SETG HERE ,OVER-JUNGLE>)
+                     (<HERE? SW-SUPPORT>
+                      <SETG P-IT-OBJECT ,DGONDOLA>)
+                     (T
+                      <RFALSE>)>
+               <TURNS ,W?EAST>
+               <COND (<ZERO? .RIDING>
+                      <RTRUE>)>
+               <TELL ,TAB
+"\"Flash photography is prohibited,\" growls " THE ,CONDUCTOR
+" as a passenger snaps a picture of the hazy landscape." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 11>
+               <REPLACE-GLOBAL? ,SW-SUPPORT ,DGONDOLA ,NULL>
+               <REPLACE-GLOBAL? ,SW-UNDER ,DGONDOLA ,NULL>
+               <PUTP ,SW-UNDER ,P?OVERHEAD ,SUPPORT>
+               <REPLACE-GLOBAL? ,SE-SUPPORT ,NULL ,DGONDOLA>
+               <REPLACE-GLOBAL? ,SE-UNDER ,NULL ,DGONDOLA>
+               <PUTP ,SE-UNDER ,P?OVERHEAD ,DGONDOLA>          
+               <COND (<HERE? SW-SUPPORT SW-UNDER>
+                      <GONDOLA-GONE ,W?EAST>
+                      <RTRUE>)
+                     (<HERE? SE-SUPPORT SE-UNDER>
+                      <VIEWGLIDE ,SE-UNDER ,W?WEST>
+                      <RTRUE>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)>
+               <JUNGLE-GLIDE>
+               <TELL ,TAB
+"\"To protect the Crocodile's Tear from thieves, Y'Syska concealed it somewhere in the jungle below,\" concludes " THE ,CONDUCTOR 
+" lamely. \"There it remains to this very day, guarded by bloodworms and whatever traps the sorceress laid to confound the unwary.\"" CR>
+               <TELL ,TAB "Another " 'SUPPORT " looms to the east." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 12>
+               <MOVE ,GONDOLA ,SE-SUPPORT>
+               <COND (<HERE? SE-SUPPORT>
+                      <GLIDING>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)
+                     (T
+                      <GLIDE-PAST ,SE-SUPPORT>)>
+               <TELL ,TAB "\"Thirsty?\" asks " THE ,CONDUCTOR 
+                     ". \"Stop by ">
+               <PRINT "the Skyway Adventure Emporium for a ">
+               <TELL "tall, frosty Granola Float.\" He smacks his lips dispiritedly. \"Mmm, so good.\"" CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 13>
+               <MOVE ,GONDOLA ,OVER-JUNGLE>
+               <COND (<T? .RIDING>
+                      <SETG HERE ,OVER-JUNGLE>)
+                     (<NOT <HERE? SE-SUPPORT>>
+                      <RFALSE>)>
+               <TURNS ,W?NORTH>
+               <COND (<ZERO? .RIDING>
+                      <RTRUE>)>
+               <TELL ,TAB
+"\"Bloodworms are not the only inhabitants of the Miznia jungle,\" remarks " 
+THE ,CONDUCTOR ", pausing to stretch. \"Survivors have reported a wide variety of birds, reptiles and other unclassifiable dangers.\"" CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,GON 14>
+               <REPLACE-GLOBAL? ,SE-SUPPORT ,DGONDOLA ,NULL>
+               <REPLACE-GLOBAL? ,OVER-JUNGLE ,SUPPORT ,DOCK>
+               <REPLACE-GLOBAL? ,SE-UNDER ,DGONDOLA ,NULL>
+               <PUTP ,SW-UNDER ,P?OVERHEAD ,SUPPORT>
+               <REPLACE-GLOBAL? ,AT-DOCK ,NULL ,DGONDOLA>
+               <COND (<HERE? SE-SUPPORT SE-UNDER>
+                      <GONDOLA-GONE ,W?NORTH>
+                      <RTRUE>)
+                     (<HERE? AT-DOCK>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB CA ,GONDOLA ,SIS>
+                      <PRINT "approaching from the south.|">
+                      <RTRUE>)
+                     (<ZERO? .RIDING>
+                      <RFALSE>)>
+               <JUNGLE-GLIDE>
+               <TELL ,TAB "\"Be sure to visit ">
+               <PRINT "the Skyway Adventure Emporium for a ">
+               <TELL 
+"thrilling selection of one-of-a-kind gift ideas,\" urges " THE ,CONDUCTOR
+" as " THE ,DOCK " appears to the north." CR>
+               <RTRUE>)
+              (T
+             ; <SAY-ERROR "I-GONDOLA">
+               <RFALSE>)>>
+
+<ROUTINE GONDOLA-GONE (WRD)
+        <WINDOW ,SHOWING-ROOM>
+        <TELL ,TAB CTHE ,GONDOLA
+             " disappears to the " B .WRD ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE TURNS (WRD)
+        <WINDOW ,SHOWING-ROOM>
+        <TELL ,TAB CTHE ,GONDOLA " turns and glides " B .WRD
+              ", away from " THE ,SUPPORT ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE VIEWGLIDE (RM WRD)
+        <SETG P-IT-OBJECT ,DGONDOLA>
+        <WINDOW ,SHOWING-ROOM>
+        <TELL ,TAB CA ,GONDOLA " glides into view ">
+        <COND (<EQUAL? .RM ,HERE>
+               <TELL "overhead." CR>
+               <RTRUE>)>
+        <TELL "from the " B .WRD ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE GLIDING ()
+        <WINDOW ,SHOWING-ROOM>
+        <TELL ,TAB CTHE ,GONDOLA
+" glides smoothly past, just a few feet away." CR>
+        <RTRUE>>
+
+<ROUTINE GLIDE-PAST (RM)
+        <SETG HERE .RM>
+        <WINDOW ,SHOWING-ROOM>
+        <TELL ,TAB CTHE ,GONDOLA
+" is gliding just a few feet from the top of " THE ,SUPPORT ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE JUNGLE-GLIDE ()
+        <WINDOW ,SHOWING-ROOM>
+        <SETG P-IT-OBJECT ,SUPPORT>
+        <TELL ,TAB CTHE ,GONDOLA " glides across " 
+              THE ,JUNGLE ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-PHASE ("AUX" L)
+        <COND (<IS? ,PHASE ,SEEN> ; "1-move delay."
+               <UNMAKE ,PHASE ,SEEN>
+               <RFALSE>)
+              (<NOT <IS? ,PHASE ,NODESC>>
+               <RFALSE>)
+              (<VISIBLE? ,PHASE>
+               <UNMAKE ,PHASE ,NODESC>
+               <SETG P-IT-OBJECT ,PHASE>
+               <WINDOW ,SHOWING-ALL>
+               <SET L <LOC ,PHASE>>
+               <TELL ,TAB CTHE ,PHASE>
+               <COND (<EQUAL? .L ,PLAYER>
+                      <TELL ,SIN 'HANDS "s">)
+                     (<EQUAL? .L ,HERE>
+                      <TELL ,SON>
+                      <COND (<IS? ,HERE ,INDOORS>
+                             <TELL THE ,FLOOR>)
+                            (T
+                             <TELL THE ,GROUND>)>)
+                     (<IS? .L ,CONTAINER>
+                      <TELL ,SIN THE .L>)
+                     (<IS? .L ,SURFACE>
+                      <TELL ,SON THE .L>)>
+               <TELL " reappears at the edge of your vision." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-OWOMAN ()
+        <COND (<NOT <IN? ,OWOMAN ,HERE>>
+               <RFALSE>)
+              (<IS? ,OWOMAN ,SEEN>
+               <UNMAKE ,OWOMAN ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <SETG P-HER-OBJECT ,OWOMAN>
+        <MAKE ,OWOMAN ,SEEN>
+        <TELL ,TAB ,CTHELADY <PICK-NEXT ,OWOMAN-MOVES> THE ,MCASE ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-MIRRORS ("AUX" (V 0) HEAR L OBJ CNT TIME LEN)
+        <SET HEAR <GRUE-ROOM?>>
+        <SET LEN <GET ,MIRROR-LIST 0>>
+        <SET CNT 7>
+        <REPEAT ()
+           <SET OBJ <GET ,MIRROR-LIST .LEN>>
+           <SET L <LOC .OBJ>>
+           <COND (<T? .L>
+                  <SET TIME <GETP .OBJ ,P?SIZE>>
+                  <COND (<DLESS? TIME 1>
+                         <DEC CNT>
+                         <COND (<EQUAL? .L ,HERE>
+                                <INC V>
+                                <TELL ,TAB>
+                                <SAY-MIRROR-POPS .OBJ>)
+                               (<T? .HEAR>
+                                <INC V>
+                                <TELL ,TAB "A distant ">
+                                <ITALICIZE "pop">
+                                <TELL " echoes down the passageway." CR>)>
+                         <DESTROY-MIRROR .OBJ>)
+                        (T
+                         <PUTP .OBJ ,P?SIZE .TIME>
+                         <COND (<AND <EQUAL? .L ,HERE>
+                                     <EQUAL? .TIME 2 10 18>>
+                                <INC V>
+                                <TELL ,TAB>
+                                <SETG P-IT-OBJECT .OBJ>
+                                <TELL CTHE .OBJ>
+                                <COND (<EQUAL? .TIME 2>
+                                       <TELL " is flexing dangerously now">
+                                       <PRINT
+". It probably won't last much longer.|">)
+                                      (<EQUAL? .TIME 10>
+                                       <TELL 
+" shimmers uncertainly for a moment." CR>)
+                                      (T
+                                       <TELL 
+" billows slightly, then stabilizes." CR>)>)>)>)
+                 (T
+                  <DEC CNT>)>
+           <COND (<DLESS? LEN 1>
+                  <RETURN>)>>
+        <COND (<ZERO? .CNT>
+               <DEQUEUE ,I-MIRRORS>)>
+        <RETURN .V>>   
+                        
+<ROUTINE SAY-MIRROR-POPS (OBJ)
+        <ITALICIZE "Pop">
+        <TELL "! " CTHE .OBJ " disappears in a silver spray." CR>
+        <RTRUE>>
+
+<ROUTINE DESTROY-MIRROR (OBJ "AUX" L)
+        <COND (<EQUAL? .OBJ <> ,NO-MIRROR>
+               <RFALSE>)>
+        <SET L <LOC .OBJ>>
+        <PUTP .OBJ ,P?MIRROR-DIR ,NO-MIRROR>
+        <PUTP .OBJ ,P?SIZE 0>
+        <REMOVE .OBJ>
+        <COND (<EQUAL? .L ,HERE>
+               <WINDOW ,SHOWING-ROOM>)>
+        <COND (<EQUAL? <GETP .L ,P?MIRROR-OBJ> .OBJ>
+               <PUTP .L ,P?MIRROR-OBJ ,NO-MIRROR>
+               <REFLECTIONS>)>
+        <RFALSE>>
+
+"Returns direction mirror is facing (1/3/5/7)."
+
+<ROUTINE CREATE-MIRROR? (OBJ "AUX" DIR)
+        <WINDOW ,SHOWING-ROOM>
+        <MOVE .OBJ ,HERE>
+        <SETG P-IT-OBJECT .OBJ>
+        <SET DIR <BOR <RANDOM 7> 1>> 
+        <PUTP .OBJ ,P?MIRROR-DIR .DIR>
+        <PUTP .OBJ ,P?SIZE ,MIRROR-LIFE>
+        <COND (<NOT <QUEUED? ,I-MIRRORS>>
+               <QUEUE ,I-MIRRORS>)>
+        <RETURN .DIR>>
+
+<GLOBAL URSCRIPT:NUMBER 0>
+
+<ROUTINE I-URGRUE ("AUX" (SEE 0))
+        <COND (<NOT <HERE? IN-LAIR>>
+               <RFALSE>)
+              (<OR <T? ,LIT?>
+                   <WEARING-MAGIC? ,HELM>>
+               <INC SEE>)>
+        <MAKE ,URGRUE ,SEEN>
+        <TELL ,TAB>
+        <COND (<IS? ,URGRUE ,SURPRISED>
+               <UNMAKE ,URGRUE ,SURPRISED>
+               <COND (<NOT <IS? ,URGRUE ,IDENTIFIED>>
+                      <MAKE ,URGRUE ,IDENTIFIED>
+                      <COND (<T? .SEE>
+                             <TELL "As you glance around the chamber, "
+                                   THE ,URGRUE " yawns and stretches">)
+                            (T
+                             <TELL ,YOU-HEAR>
+                             <PRINT "a voice in the darkness">
+                             <TELL " yawn">)>
+                      <TELL ". \"At last we meet.\"" CR>
+                      <RTRUE>)>
+               <TELL "\"" <PICK-NEXT ,URGRUE-GREETS>
+                     ",\" chuckles ">
+               <COND (<T? .SEE>
+                      <TELL THE ,URGRUE>)
+                     (T
+                      <PRINT "a voice in the darkness">)>
+               <COND (<L? ,URSCRIPT 2>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <TELL 
+". \"Now where were we? Ah, yes. We were deciding how best to destroy you.\"" CR>
+               <RTRUE>)>
+        <COND (<IGRTR? URSCRIPT 4>
+               <TIMESTOP>
+               <RTRUE>)
+              (<EQUAL? ,URSCRIPT 4>
+               <TELL "\"I know!\" cries " THE ,URGRUE 
+" with delight. \"Girgol, the Time Stop spell! Love it. You'll make a hilarious statue.\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,URSCRIPT 3>
+               <TELL CTHE ,URGRUE 
+" mutters thoughtfully to itself. \"Let's see, now. A spell. Cleesh? No; too silly. Espnis? Hmm. Better not; ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "s">)>
+               <TELL "he might snore.\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,URSCRIPT 2>
+               <TELL "\"An interesting question,\" continues " THE ,URGRUE
+                     " conversationally, \"is ">
+               <ITALICIZE "how">
+               <TELL 
+" to destroy you. Not a trivial decision, no. I must select a spell that will enhance my image, a Magick worthy of my thoroughly evil reputation.\"" CR>
+               <RTRUE>)>
+        
+        <TELL CTHE ,URGRUE 
+"'s chuckling subsides. \"I rarely get visitors,\" it admits in a wistful tone. \"A pity I have to destroy you.\"" CR>
+        <RTRUE>>
+
+<GLOBAL ARCHTIMER:NUMBER 0>
+
+<ROUTINE I-ARCH3 ()
+        <INC ARCHTIMER>
+        <TELL ,TAB>
+        <COND (<EQUAL? ,ARCHTIMER 1>
+               <TELL CTHE ,ORATOR " stills " THE ,PCROWD 
+" with a wave of his hand.|
+  \"Our fathers built this city at the Place Where the Great Waters
+Meet,\" he cries. \"The right to name the One River belongs to us!\"" CR
+,TAB CTHE ,PCROWD " roars its approval." CR>
+               <RTRUE>)
+              (<EQUAL? ,ARCHTIMER 2>
+               <TELL
+"\"The infidels from the east control the One River's mouth,\" continues "
+THE ,ORATOR ". \"But we, who dwell at the joining of the Rivers Phee and Bor, WE control the source!\" " CTHE ,PCROWD " whistles. \"As the daughter takes the name of the father, so shall the One River be known by the place of its birth!\"" CR ,TAB "\"">
+               <ITALICIZE "Pheebor">
+               <TELL "!\" roars " THE ,PCROWD
+". \"Hail the River Pheebor!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,ARCHTIMER 3>
+               <WINDOW ,SHOWING-ROOM>
+               <REMOVE ,ORATOR>
+               <SETG QCONTEXT <>>
+               <SETG QCONTEXT-ROOM <>>
+               <SETG P-HIM-OBJECT ,NOT-HERE-OBJECT>
+               <TELL "\"Phee-bor! Phee-bor!\" chants " THE ,PCROWD ,PTAB>
+               <TELL "\"We have no quarrel with the city to the east,\" claims " THE ,ORATOR " (amid shouts to the contrary). \"But if they continue to slight our heritage with the wretched name ">
+               <ITALICIZE "Borphee">
+               <TELL "\" (the crowd hisses), \"we shall smite them from the face of the land!\"" CR ,TAB CTHE ,PCROWD 
+" goes wild, and carries " THE ,ORATOR " away on its shoulders." CR>
+               <RTRUE>)>
+        <WINDOW ,SHOWING-ROOM>
+        <DEQUEUE ,I-ARCH3>
+        <REMOVE ,PCROWD>
+        <SETG P-THEM-OBJECT ,NOT-HERE-OBJECT>
+        <TELL CTHE ,PCROWD " disperses, and you're left alone." CR>
+        <RTRUE>>               
+
+<ROUTINE I-ARCH4 ()
+        <INC ARCHTIMER>
+        <WINDOW ,SHOWING-ROOM>
+        <TELL ,TAB>
+        <COND (<EQUAL? ,ARCHTIMER 1>
+               <MOVE ,HORSE ,HERE>
+               <SEE-CHARACTER ,PRINCE>
+               <SETG P-IT-OBJECT ,HELM>
+               <TELL 
+"A magnificent gray stallion appears amid the smoke. Its rider is a tall, proud man wearing a fabulous helmet." CR>
+               <RTRUE>)
+              (<EQUAL? ,ARCHTIMER 2>
+               <MOVE ,BHORSE ,HERE>
+               <TELL 
+"Another stallion, black as night, races out of the smoke. Its rider's armor gleams red in the firelight.|
+  \"At last we meet, Prince Foo,\" snarls the newcomer.|
+  The man on the gray stallion regards him coolly. \"Begone, thou eastern fop!\" he cries. \"Never shall the River Pheebor yield its sacred name!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,ARCHTIMER 3>
+               <SETG QCONTEXT <>>
+               <SETG QCONTEXT-ROOM <>>
+               <REMOVE ,BHORSE>
+               <MAKE ,PRINCE ,SLEEPING>
+               <MOVE ,PRINCE ,HERE>
+               <MOVE ,HELM ,TRENCH>
+               <PUTP ,PRINCE ,P?ACTION ,DEAD-PRINCE-F>
+               <REPLACE-SYN? ,PRINCE ,W?ZZZP ,W?HEAD>
+               <REPLACE-SYN? ,PRINCE ,W?ZZZP ,W?BODY>
+               <REPLACE-SYN? ,PRINCE ,W?ZZZP ,W?CORPSE>
+               <REPLACE-ADJ? ,PRINCE ,W?ZZZP ,W?DEAD>
+               <TELL
+"The black rider draws a gleaming sword from his scabbard and cuts off the prince's head, which rolls into the trench.|
+  \"The reign of Pheebor is ended!\" cries the black knight, galloping off into the smoke. \"Foo is dead! The age of Borphee is begun!\"|
+  The gray stallion nudges the prince's body, and whinnies softly." CR>
+               <RTRUE>)>
+        <DEQUEUE ,I-ARCH4>
+        <COND (<NOT <IN? ,HORSE ,TRENCH>>
+               <TELL ,XA>
+               <SLAY-HORSE>
+               <TELL ,TAB>)>
+        <TELL 
+"Cries of \"Foo is dead! The war is over!\" drift through the smoke. Tattered men race past; the cries grow faint; and soon all is still as death." CR>
+        <RTRUE>>               
+
+<ROUTINE I-GLASS ("AUX" V)
+        <SET V <VISIBLE? ,GLASS>>
+        <INC GLASS-BOT>
+        <COND (<DLESS? GLASS-TOP 1>
+               <DEQUEUE ,I-GLASS>
+               <COND (<ZERO? .V>
+                      <RFALSE>)>
+               <TELL ,TAB 
+"The last grains of sand fall through " THE ,GLASS ,PERIOD>
+               <ARCH-OFF>
+               <RTRUE>)
+              (<ZERO? .V>
+               <RFALSE>)
+              (<EQUAL? ,GLASS-TOP 2 4>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <COND (<EQUAL? ,GLASS-TOP 1>
+               <TELL "The top half of " THE ,GLASS
+                     " is almost empty." CR>
+               <RTRUE>)>
+        <TELL "Sand continues to trickle through " THE ,GLASS ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-HUNTERS ()
+        <COND (<NOT <HERE? IN-PASTURE>>
+               <RFALSE>)
+              (<NOT <IN? ,HUNTERS ,IN-PASTURE>>
+               <SETG HSCRIPT 0>
+               <QUEUE ,I-HUNT>
+               <MOVE ,HUNTERS ,IN-PASTURE>
+               <MAKE ,HUNTERS ,SEEN>
+               <SEE-CHARACTER ,HUNTERS>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL
+"  A distant movement catches your eye. Peering between the oaks, you see men foraging at the pasture's edge. They look like hunters." CR>
+               <RTRUE>)
+              (<IS? ,HUNTERS ,SEEN>
+               <UNMAKE ,HUNTERS ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <MAKE ,HUNTERS ,SEEN>
+        <TELL "  The distant " 'HUNTERS
+              <PICK-NEXT ,HUNTER-DOINGS> ,PERIOD>
+        <RTRUE>>
+
+<GLOBAL HSCRIPT:NUMBER 0>
+
+<ROUTINE I-HUNT ()
+        <COND (<NOT <HERE? IN-PASTURE>>
+               <RFALSE>)>
+        <INC HSCRIPT>
+        <MAKE ,HUNTERS ,SEEN>
+        <TELL ,TAB>
+        <COND (<EQUAL? ,HSCRIPT 1>
+               <MOVE ,MINX ,OAK>
+               <MOVE ,TRACKS ,HERE>
+               <WINDOW ,SHOWING-ROOM>
+               <SETG P-HER-OBJECT ,MINX>
+               <SETG P-IT-OBJECT ,MINX>
+               <TELL "\"Come back 'ere, you!\"" CR ,TAB>
+               <ITALICIZE "Whoosh">
+               <TELL "! A golden bundle of fur jumps out of the forest! It bounds across the snow in quick, desperate leaps, ducks behind the trunk of "
+A ,OAK>
+               <PRINT " and disappears from view.|">
+               <TELL ,TAB 
+"\"I'll wring yer li'l neck,\" promises an angry voice." CR>
+               <COND (<ZERO? ,DMODE>
+                      <RELOOK T>)>
+               <RTRUE>)
+              (<EQUAL? ,HSCRIPT 2>
+               <TELL
+"\"I see yer dirty tracks, ye pest!\" The angry voice is getting much closer." CR> 
+               <RTRUE>)
+              (<EQUAL? ,HSCRIPT 3>
+               <MOVE ,HUNTER ,IN-PASTURE>
+               <WINDOW ,SHOWING-ROOM>
+               <SEE-CHARACTER ,HUNTER>
+               <TELL "\"Show yerself, ye flea-bit mop!\"" CR ,TAB
+"A young man strides out of the woods, an angry scowl on his windburned face">
+               <COND (<IN? ,TRACKS ,HERE>
+                      <REMOVE ,TRACKS>
+                      <TELL  " as he follows the tracks in the snow." CR>
+                      <HUNTER-SEES-MINX>
+                      <RTRUE>)>
+               <TELL "... and a nasty-looking whip in his hands" ,PTAB>
+               <TELL "\"Yo, ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "ma'am">)
+                     (T
+                      <TELL "sir">)>
+               <TELL 
+"!\" he cries, drawing closer. \"Lost a minx 'ereabouts! Came this way, if th' trail speaks truly.\"|
+  Something behind " THE ,OAK " whimpers softly." CR>
+               <RTRUE>)
+              (<EQUAL? ,HSCRIPT 4>
+               <TELL 
+"The lad surveys the pasture impatiently. \"Blasted crayture,\" he mutters with a practiced crack of the whip. \"One o' me best. 'Twould be a shame to lose 'er.\"|
+  The beast behind " THE ,OAK " makes itself as small as possible." CR>
+               <RTRUE>)
+              (<EQUAL? ,HSCRIPT 5>
+               <DEQUEUE ,I-HUNT>
+               <SETG HSCRIPT 0>
+               <REMOVE ,HUNTER>
+               <UNMAKE ,HUNTERS ,SEEN>
+               <SETG P-HIM-OBJECT ,NOT-HERE-OBJECT>
+               <WINDOW ,SHOWING-ROOM>
+               <MOVE ,MINX ,IN-PASTURE>
+               <UNMAKE ,MINX ,TRYTAKE>
+               <UNMAKE ,MINX ,NOALL>
+               <MAKE ,MINX ,TAKEABLE>
+               <QUEUE ,I-MINX>
+               <SEE-CHARACTER ,MINX>
+               <TELL
+"\"Hide from me, will ye, ye snufflin' she-devil!\" cries " THE ,HUNTER
+" striding back into the forest. \"It's to the hounds I'll be throwin' yer bleedin' carcass!\" His curses soon ">
+               <PRINT "fade into the distance.|">
+               <TELL ,TAB CTHE ,MINX
+" pokes its nose out from behind " THE ,OAK ", sniffing fearfully. It peeks around " THE ,GCORNER ", and its brown eyes lock with yours" ,PTAB 
+"\"Minx?\"" CR>
+               <RTRUE>)
+              (T  
+               <RFALSE>)>>
+               
+<ROUTINE I-MINX ("AUX" L NL PL PLL V TBL DIR X TYPE)
+        <SET L <LOC ,MINX>>
+        <COND (<OR <ZERO? .L>
+                   <NOT <IS? ,MINX ,LIVING>>>
+               <DEQUEUE ,I-MINX>
+               <RFALSE>)>
+        <SET V <VISIBLE? ,MINX>>
+        <COND (<IS? ,MINX ,SLEEPING>
+               <COND (<ZERO? .V>
+                      <RFALSE>)>
+               <COND (<IS? ,MINX ,SEEN>
+                      <UNMAKE ,MINX ,SEEN>
+                      <RFALSE>)
+                     (<PROB 50>
+                      <RFALSE>)>
+               <MINXTAB>
+               <TELL CTHE ,MINX <PICK-NEXT ,MINX-SLEEPS> ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? .L ,PLAYER>
+               <MINXTAB>
+               <COND (<IN? ,TRUFFLE .L>
+                      <MINX-EATS-TRUFFLE>
+                      <RTRUE>)>
+               <TELL CTHE ,MINX>
+               <COND (<BAD-MINX-PLACE? ,HERE>
+                      <SET X ,MINX-NERVES>
+                      <COND (<PROB 33>
+                             <SET X ,MINX-RESTLESS>)>
+                      <TELL <PICK-NEXT .X> ,PERIOD>
+                      <RTRUE>)
+                     (<IS? ,MINX ,TOUCHED>
+                      <UNMAKE ,MINX ,TOUCHED>
+                      <MAKE ,MINX ,TRYTAKE>
+                      <TELL <PICK-NEXT ,MINX-SETTLES>
+                            " in your arms." CR>
+                      <RTRUE>)
+                     (<IS? ,MINX ,TRYTAKE>
+                      <UNMAKE ,MINX ,TRYTAKE>
+                      <TELL <PICK-NEXT ,MINX-RESTLESS> ,PERIOD>
+                      <RTRUE>)>
+               <WINDOW ,SHOWING-ALL>
+               <PRINTC ,SP>
+               <COND (<PROB 50>
+                      <SAY-LEAP>
+                      <TELL "s ">
+                      <COND (<PROB 50>
+                             <TELL "out of your ">
+                             <COND (<PROB 50>
+                                    <TELL "arms ">)
+                                   (T
+                                    <TELL "grasp ">)>)
+                            (T
+                             <TELL "free ">)>)
+                     (T
+                      <TELL "frees itself ">
+                      <COND (<PROB 50>
+                             <TELL "with a ">
+                             <COND (<PROB 50>
+                                    <COND (<PROB 50>
+                                           <TELL "sudden ">)
+                                          (T
+                                           <TELL "quick ">)>)>
+                             <SAY-LEAP>
+                             <PRINTC ,SP>)>)>
+               <TELL "and ">
+               <FALLS ,MINX>
+               <RTRUE>)>
+        <UNMAKE ,MINX ,TOUCHED>
+        <UNMAKE ,MINX ,TRYTAKE>
+        <SET PL <LOC ,PLAYER>>
+        <COND (<EQUAL? .L .PL>
+               <COND (<IS? ,MINX ,SEEN>
+                      <UNMAKE ,MINX ,SEEN>
+                      <RFALSE>)
+                     (<AND <NOT <IN? ,TRUFFLE .L>>
+                           <PROB 80>>
+                      <RFALSE>)>
+               <MINXTAB>
+               <COND (<ZERO? ,LIT?>
+                      <TELL "Something" <PICK-NEXT ,DARK-MINXES> ,PERIOD>
+                      <RTRUE>)
+                     (<AND <EQUAL? .L ,ARCH ,ARCH4 ,ARCH12>
+                           <IN? ,TRUFFLE ,TRENCH>>
+                      <UNMAKE ,MINX ,SEEN>
+                      <COND (<HERE? ARCH12>
+                             <COND (<IS? ,TRENCH ,NODESC>
+                                    <DIG-UP-TRENCH>
+                                    <RTRUE>)>
+                             <MINX-EATS-TRUFFLE>
+                             <RTRUE>)>
+                      <SET X ,ARCH-SNIFFS>
+                      <COND (<HERE? ARCH4>)
+                            (<PROB 25>
+                             <SET X ,MINX-DOINGS>)>
+                      <TELL CTHE ,MINX <PICK-NEXT .X> ,PERIOD>
+                      <RTRUE>)
+                     (<IN? ,TRUFFLE .L>
+                      <MINX-EATS-TRUFFLE>
+                      <RTRUE>)
+                     (<LOC ,TRUFFLE>)
+                     (<DIG-UP-TRUFFLE? .L>
+                      <RTRUE>)>
+               <TELL CTHE ,MINX <PICK-NEXT ,MINX-DOINGS> ,PERIOD>      
+               <RTRUE>)
+              (<AND <IS? .PL ,VEHICLE>
+                    <IN? .PL .L>>
+               <MOVE ,MINX .PL>
+               <MINXTAB>
+               <COND (<ZERO? ,LIT?>
+                      <TELL "Something furry">)
+                     (T
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL CTHE ,MINX>)>
+               <TELL " joins you">
+               <ON-IN .PL>
+               <TELL ,PERIOD>
+               <RTRUE>)
+              (<OR <IS? .L ,SURFACE>
+                   <IS? .L ,CONTAINER>>
+               <SET NL <LOC .L>>
+               <COND (<OR <BAD-MINX-PLACE? .NL>
+                          <AND <IS? .L ,CONTAINER>
+                               <NOT <IS? .L ,OPENED>>>>
+                      <COND (<VISIBLE? .L>
+                             <MINXTAB>
+                             <COND (<AND <IS? .L ,TRANSPARENT>
+                                         <T? ,LIT?>>
+                                    <TELL CTHE ,MINX>)
+                                   (T
+                                    <TELL "Something">)>
+                             <COND (<IN? ,TRUFFLE .L>
+                                    <WINDOW %<+ ,SHOWING-ROOM
+                                                       ,SHOWING-INV>>
+                                    <REMOVE ,TRUFFLE>
+                                    <TELL " is eating " B ,W?SOMETHING>)
+                                   (T
+                                    <TELL " moves restlessly">)>
+                             <ON-IN .L>
+                             <TELL ,PERIOD>
+                             <RTRUE>)
+                            (<IN? ,TRUFFLE .L>
+                             <REMOVE ,TRUFFLE>)>
+                      <COND (<ZERO? .NL>
+                             <REMOVE ,MINX>
+                             <DEQUEUE ,I-MINX>)>
+                      <RFALSE>)
+                     (<ZERO? .V>
+                      <MOVE ,MINX .NL>
+                      <RFALSE>)>
+               <MINXTAB>
+               <COND (<ZERO? ,LIT?>
+                      <TELL "Something">)
+                     (<IN? ,TRUFFLE .L>
+                      <MINX-EATS-TRUFFLE>
+                      <RTRUE>)
+                     (T
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL CTHE ,MINX>)>
+               <PRINTC ,SP>
+               <SAY-LEAP>
+               <TELL "s">
+               <OUT-OF-LOC .L>
+               <PRINT ,PERIOD>
+               <MOVE ,MINX .NL>
+               <RTRUE>)>
+                        
+       ; "Is player in a room adjacent to minx?"
+
+        <SET PLL <LOC .PL>>
+        <SET DIR ,P?NORTH>
+        <REPEAT ()
+           <SET TBL <GETP .L .DIR>>
+           <COND (<T? .TBL>
+                  <SET TYPE <MSB <GET .TBL ,XTYPE>>>
+                  <COND (<OR <EQUAL? .TYPE ,CONNECT ,SCONNECT ,X-EXIT>
+                             <AND <EQUAL? .TYPE ,DCONNECT>
+                                  <IS? <GET .TBL ,XDATA> ,OPENED>>>
+                         <SET NL <GET .TBL ,XROOM>>
+                         <COND (<BAD-MINX-PLACE? .NL>)
+                               (<EQUAL? .NL .PL .PLL>
+                                <MOVE ,MINX .NL>
+                                <MINXTAB>
+                                <COND (<ZERO? ,LIT?>
+                                       <TELL ,YOU-HEAR B ,W?SOMETHING
+                                             " moving ">)
+                                      (T
+                                       <WINDOW ,SHOWING-ROOM>
+                                       <TELL CTHE ,MINX " appears ">)>
+                                <COND (<EQUAL? .NL .PL>
+                                       <TELL "at your feet." CR>
+                                       <RTRUE>)>
+                                <TELL "nearby." CR>
+                                <RTRUE>)>)>)>
+           <COND (<DLESS? DIR ,P?DOWN>
+                  <RFALSE>)>>> 
+                               
+<ROUTINE MINXTAB ()
+        <MAKE ,MINX ,SEEN>
+        <PRINT ,TAB>
+        <RFALSE>>
+
+<ROUTINE BAD-MINX-PLACE? (RM "AUX" X)
+        <COND (<ZERO? .RM>
+               <RTRUE>)>
+        <SET X <GETB ,NO-MINX 0>>
+        <COND (<SET X <INTBL? .RM <REST ,NO-MINX 1> .X 1>>
+               <RTRUE>)
+              (<AND <EQUAL? .RM ,IN-GARDEN>
+                    <G? ,PTIMER 1>>
+               <RTRUE>)
+              (<AND <EQUAL? .RM ,SADDLE>
+                    <IN? ,SADDLE ,DACT>
+                    <IN? ,DACT ,IN-SKY>>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE DIG-UP-TRUFFLE? (L "AUX" X)
+        <COND (<EQUAL? .L <LOC ,OAK>>
+               <SET X ,OAK>)
+              (<EQUAL? .L <LOC ,OAK2>>
+               <SET X ,OAK2>)
+              (<EQUAL? .L <LOC ,OAK3>>
+               <SET X ,OAK3>)
+              (T
+               <RFALSE>)>
+        <COND (<IS? .X ,TOUCHED>
+               <RFALSE>)>
+        <OAK-FIND .X>
+        <TELL CTHE ,MINX
+" snuffles inquisitively around the base of " THE .X
+". She scratches around the roots, nosing aside leaves and dirt, and pulls up a " D ,TRUFFLE " with a triumphant mew. ">
+        <PRINT "\"Minx! Minx! Minx!\"|">
+        <RTRUE>>
+
+<ROUTINE DIG-UP-TRENCH ()
+        <UNMAKE ,TRUFFLE ,SEEN>
+        <REMOVE ,TRUFFLE>
+        <UNMAKE ,TRUFFLE ,MUNGED>
+        <DEQUEUE ,I-TRUFFLE>
+        <SETG TRUFFLE-TIMER 0>
+        <MOVE ,TRENCH ,HERE>
+        <UNMAKE ,TRENCH ,NODESC>
+        <MAKE ,TRENCH ,OPENED>
+        <WINDOW ,SHOWING-ROOM>
+        <REPLACE-SYN? ,TRENCH ,W?ZZZP ,W?MINXHOLE>
+        <REPLACE-ADJ? ,TRENCH ,W?ZZZP ,W?MINX>
+        <TELL CTHE ,MINX>
+        <COND (<NOT <IN? ,MINX ,HERE>>
+               <MOVE ,MINX ,HERE>
+               <TELL " leaves " THE ,ARCH " and">)>
+        <TELL
+" runs its nose over the loose earth, snuffling hungrily. Then it paws a deep hole in " THE ,GROUND ", roots up a dirty truffle and swallows it whole"
+,PTAB>
+        <PRINT "\"Minx! Minx! Minx!\"|">
+        <COND (<ZERO? ,DMODE>
+               <RELOOK T>)>
+        <RTRUE>>  
+                    
+<ROUTINE SAY-LEAP ("AUX" X)
+        <SET X <RANDOM 100>>
+        <COND (<L? .X 33>
+               <TELL B ,W?LEAP>
+               <RTRUE>)
+              (<L? .X 67>
+               <TELL B ,W?BOUND>
+               <RTRUE>)>
+        <TELL B ,W?JUMP>
+        <RTRUE>>
+
+<ROUTINE I-CORBIES ("AUX" (FEAR 0) SOUND EMOTION X)
+        <COND (<NOT <PLAIN-ROOM?>>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <MAKE ,CORBIES ,SEEN>
+        <SETG P-THEM-OBJECT ,CORBIES>
+        <SET SOUND <PICK-NEXT ,CORBIE-SOUNDS>>
+        <SET EMOTION <PICK-NEXT ,MAD-CORBIES>>
+        <COND (<OR <EQUAL? <LOC ,SCARE3> ,HERE>
+                   <AND <T? ,BADKEY>
+                        <EQUAL? <LOC ,BADKEY> ,PLAYER ,HERE>>>
+               <INC FEAR>
+               <SET EMOTION <PICK-NEXT ,FEAR-CORBIES>>)>
+        <SET X <RANDOM 100>>
+        <COND (<L? .X 33>
+               <TELL "Corbies " .SOUND ,WITH .EMOTION
+                     " overhead." CR>
+               <RTRUE>)
+              (<L? .X 67>
+               <TELL "You can hear corbies ">)
+              (T
+               <TELL "Corbies ">
+               <SET X <RANDOM 100>>
+               <COND (<OR <T? .FEAR>
+                          <L? .X 33>>
+                      <TELL "circle ">
+                      <COND (<PROB 50>
+                             <COND (<ZERO? .FEAR>
+                                    <TELL "low ">)
+                                   (T
+                                    <TELL "high ">)>)>)
+                     (<L? .X 67>
+                      <TELL "dive ">
+                      <COND (<PROB 50>
+                             <TELL "down from ">)
+                            (T
+                             <TELL "and swoop ">)>)
+                     (T
+                      <TELL "swoop ">
+                      <COND (<PROB 50>
+                             <COND (<PROB 50>
+                                    <TELL "low ">)
+                                   (T
+                                    <TELL "down from ">)>)>)>)>
+        <TELL "overhead, " .SOUND "ing with " .EMOTION ,PERIOD>
+        <RTRUE>>
+
+<CONSTANT RESET-GURDY 4>
+<GLOBAL GURDY-TIMER:NUMBER 0>
+
+<GLOBAL GURDY-ROOM:OBJECT <>>
+
+<ROUTINE I-COLOR ("AUX" X)
+        <COND (<DLESS? GURDY-TIMER 1>
+               <DEQUEUE ,I-COLOR>
+               <SETG GURDY-TIMER 0>
+               <UNMAKE ,ROSE-ROOM ,SEEN>
+               <SET X <GETB ,PLAIN-ROOMS 0>>
+               <REPEAT ()
+                  <UNMAKE <GETB ,PLAIN-ROOMS .X> ,SEEN>
+                  <COND (<DLESS? X 1>
+                         <RETURN>)>>
+               <COND (<HERE? GURDY-ROOM>
+                      <WINDOW ,SHOWING-ROOM>
+                      <SETG GURDY-ROOM <>>
+                      <TELL ,TAB "The colors in the ">
+                      <ROOM-OR-LAND>
+                      <TELL " fade back to normal." CR>
+                      <RTRUE>)>
+               <SETG GURDY-ROOM <>>
+               <RFALSE>)
+              (<NOT <HERE? GURDY-ROOM>>
+               <RFALSE>)
+              (<EQUAL? ,GURDY-TIMER 1 3>
+               <RFALSE>)>
+        <TELL ,TAB "The heightened colors in the ">
+        <ROOM-OR-LAND>
+        <TELL " are starting to fade." CR>
+        <RTRUE>>
+
+<GLOBAL LAST-CRANK-DIR:OBJECT <>>
+
+<ROUTINE TURN-GURDY ("AUX" X)
+        <SET X ,TURN-GURDY-RIGHT>
+        <COND (<EQUAL? ,LAST-CRANK-DIR ,RIGHT>)
+              (<OR <EQUAL? ,LAST-CRANK-DIR ,LEFT>
+                   <PROB 50>>
+               <SET X ,TURN-GURDY-LEFT>)>
+        <APPLY .X>
+        <RFALSE>>
+
+<ROUTINE FIND-CHAR? ("AUX" LEN OBJ)
+        <SET LEN <GET ,CHARLIST 0>>
+        <REPEAT ()
+           <SET OBJ <GET ,CHARLIST .LEN>>
+           <COND (<VISIBLE? .OBJ>
+                  <RETURN .OBJ>)
+                 (<DLESS? LEN 1>
+                  <RETURN>)>>
+        <RETURN <FIND-IN? ,HERE ,MONSTER>>>
+
+<ROUTINE TURN-GURDY-RIGHT ("AUX" (M 0) (P 0) WHO)
+        <SET WHO <FIND-CHAR?>>
+        <COND (<ZERO? .WHO>)
+              (<IS? .WHO ,MONSTER>
+               <COND (<NOT <IS? .WHO ,SLEEPING>>
+                      <INC M>)>)
+              (T
+               <INC P>)>
+        <SETG LAST-CRANK-DIR ,RIGHT>
+        <COND (<TURN-GURDY? ,W?RIGHT "violet">
+               <RTRUE>)>
+        <TELL ,TAB>
+        <COND (<ZERO? ,DPOINTER>
+               <WINDOW ,SHOWING-ALL>
+               <SETG P-WALK-DIR <>>
+               <SETG OLD-HERE <>>
+               <SETG GURDY-TIMER ,RESET-GURDY>
+               <SETG LIT? T>
+               <TELL "A rainbow of dazzling spectra">
+               <PRINT " fills the air">
+               <TELL "! It swirls and blends with the ">
+               <COND (<NOT <PLAIN-ROOM?>>
+                      <COND (<HERE? GURDY-ROOM>
+                             <TELL "already intense ">)>
+                      <TELL "colors of the ">)
+                     (T
+                      <MAKE ,HERE ,SEEN>
+                      <TELL "colorless ">)>
+               <ROOM-OR-LAND>
+               <COND (<HERE? GURDY-ROOM>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <SETG GURDY-ROOM ,HERE>
+               <QUEUE I-COLOR>
+               <TELL 
+", creating rich, saturated hues that remind you of a postcard">
+               <COND (<T? .M>
+                      <PRINT ". Unfortunately, ">
+                      <TELL THE .WHO " seems unmoved by the display">)>
+               <TELL ,PERIOD>
+               <COND (<HAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<EQUAL? .WHO ,OWOMAN ,SALT>
+                      <LOVELY .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB CTHE .WHO " gapes at the display." CR>)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 1>
+               <TELL "Strains of soothing melody fill the air">
+               <PRINT "! You can't help but ">
+               <PRINT "close your eyes for a moment ">
+               <TELL 
+"as the liquid chords swell to a glorious crescendo, then fade into silence">
+               <COND (<T? .M>
+                      <TELL ". Even " THE .WHO " was not unmoved">)>
+               <TELL ,PERIOD>
+               <COND (<VISIBLE? ,DACT>
+                      <MAKE ,DACT ,SEEN>
+                      <COND (<T? ,DACT-SLEEP>
+                             <COND (<NOT <EQUAL? ,DACT-SLEEP 3>>
+                                    <INC DACT-SLEEP>)>
+                             <RTRUE>)>
+                      <TELL ,TAB>
+                      <TELL "A tear trembles on " THE ,DACT
+                            "'s beak. You watch as it">
+                      <DACT-TO-SLEEP T>
+                      <RTRUE>)
+                     (<HAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<EQUAL? .WHO ,OWOMAN ,MAYOR ,CLERIC>
+                      <LOVELY .WHO>
+                      <RTRUE>)
+                     (<EQUAL? .WHO ,SALT>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Thought I heard music,\" remarks "
+                            THE .WHO ,PERIOD>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB CTHE .WHO " smiles at the sound." CR>
+                      <RTRUE>)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 2>
+               <TELL "A tide of flavorful aromas">
+               <PRINT " fills the air">
+               <PRINT "! You can't help but ">
+               <TELL 
+"breathe deeply as the scents of a dozen exotic delicacies drift past your nostrils, one by one">
+               <COND (<T? .M>
+                      <NOW-HUNGRY .WHO>)>
+               <TELL ,PERIOD> 
+               <COND (<HAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Ahhh,\" sighs " THE .WHO ,PERIOD>)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 3>
+               <TELL 
+"A mouthwatering cascade of flavor washes over your tongue">
+               <PRINT "! You can't help but ">
+               <PRINT "close your eyes for a moment ">
+               <TELL "to savor the taste of all your favorite dishes">
+               <COND (<T? .M>
+                      <NOW-HUNGRY .WHO>)>
+               <PRINT ,PERIOD> 
+               <COND (<HAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Mmmmm,\" sighs " THE .WHO ", smacking ">
+                      <COND (<IS? .WHO ,FEMALE>
+                             <TELL "her">)
+                            (T
+                             <TELL "his">)>
+                      <TELL " lips." CR>)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 4>
+               <TELL "Invisible fingers of delight caress your skin! ">
+               <PRINT "! You can't help but ">
+               <PRINT "close your eyes for a moment ">
+               <TELL
+"as a soothing, sensuous tingle spreads over every inch of your body"> 
+               <COND (<T? .M>
+                      <TELL ,PTAB CTHE .WHO
+                            " emits a brief moan of pleasure">)>
+               <PRINT ,PERIOD> 
+               <COND (<HAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Mmmmm,\" moans " THE .WHO ,PERIOD>)>
+               <RTRUE>)>
+        
+        <RENEW-ALL-IN ,INGURDY>
+        <TELL "A flood of joyful memory swells in your mind">
+        <PRINT "! You can't help but ">
+        <PRINT "close your eyes for a moment ">
+        <TELL 
+"as old friends and forgotten secrets rise one by one from of the mists of time, then fade into obscurity"> 
+        <COND (<T? .M>
+               <LAST-MEAL .WHO>)>
+        <PRINT ,PERIOD>
+        <COND (<HAPPY-CHAR? .WHO>
+               <RTRUE>)
+              (<T? .P>
+               <MAKE .WHO ,SEEN>
+               <TELL ,TAB CTHE .WHO " smiles wistfully." CR>)>
+        <RTRUE>>
+
+<ROUTINE LOVELY (WHO)
+        <MAKE .WHO ,SEEN>
+        <TELL ,TAB "\"Lovely,\" remarks " THE .WHO ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE LAST-MEAL (WHO)
+        <PRINT ". Unfortunately, ">
+        <TELL THE .WHO " seem">
+        <COND (<NOT <IS? .WHO ,PLURAL>>
+               <TELL "s">)>
+        <TELL " to remember only its last meal">
+        <RTRUE>>
+
+<ROUTINE NOW-HUNGRY (WHO)
+        <PRINT ". Unfortunately, ">
+        <TELL THE .WHO " now looks hungrier than before">
+        <RTRUE>>
+
+<ROUTINE HAPPY-CHAR? (WHO)
+        <COND (<OR <EQUAL? .WHO ,MINX ,UNICORN ,BABY>
+                   <EQUAL? .WHO ,MAMA ,DACT>>
+               <TELL ,TAB CTHE .WHO " seemed to enjoy that." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+        
+<ROUTINE UNHAPPY-CHAR? (WHO)
+        <COND (<OR <EQUAL? .WHO ,MINX ,UNICORN ,BABY>
+                   <EQUAL? .WHO ,MAMA ,DACT>>
+               <TELL ,TAB CTHE .WHO " gives you a hurt look." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE TURN-GURDY-LEFT ("AUX" (M 0) (P 0) WHO)
+        <SET WHO <FIND-CHAR?>>
+        <COND (<ZERO? .WHO>)
+              (<IS? .WHO ,MONSTER>
+               <COND (<NOT <IS? .WHO ,SLEEPING>>
+                      <INC M>)>)
+              (T
+               <INC P>)>
+        <SETG LAST-CRANK-DIR ,LEFT>
+        <COND (<TURN-GURDY? ,W?LEFT "crimson">
+               <RTRUE>)>
+        <TELL ,TAB>
+        <COND (<ZERO? ,DPOINTER>
+               <WINDOW ,SHOWING-ALL>
+               <COND (<T? ,GURDY-TIMER>
+                      <SETG GURDY-TIMER 0>
+                      <DEQUEUE ,I-COLOR>)>
+               <TELL ,XTHE>
+               <COND (<HERE? GURDY-ROOM>
+                      <TELL "colors in the ">
+                      <ROOM-OR-LAND>
+                      <TELL " around you fade back to ">
+                      <COND (<PLAIN-ROOM?>
+                             <SETG OLD-HERE <>>
+                             <SETG P-WALK-DIR <>>
+                             <UNMAKE ,HERE ,SEEN>
+                             <TELL B ,W?GRAY>)
+                            (T
+                             <TELL "normal">)>)
+                     (T
+                      <COND (<PLAIN-ROOM?>
+                             <TELL "grayness">)
+                            (T
+                             <TELL "color">)>
+                      <TELL " of the ">
+                      <ROOM-OR-LAND>
+                      <TELL " around you becomes pasty and dull">)>
+               <SETG GURDY-ROOM <>>
+               <COND (<T? .M>
+                      <TELL ", an effect " THE .WHO " seem">
+                      <COND (<NOT <IS? .WHO ,PLURAL>>
+                             <TELL "s">)>
+                      <TELL " not to mind in the least">)>
+               <TELL ,PERIOD>
+               <COND (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB CTHE .WHO 
+                            " glances around, puzzled." CR>)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 1>
+               <TELL
+"A dreadful cacophony of random noise">
+               <PRINT " fills the air">
+               <TELL 
+"! You cover your ears and wince until the onslaught fades to a welcome silence">
+               <COND (<T? .M>
+                      <ANNOY-WHO .WHO>)>
+               <TELL ,PERIOD>
+               <COND (<UNHAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Ouch,\" comments " THE .WHO>
+                      <PRINT " with a glare of annoyance.|">)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 2>
+               <TELL
+"A nauseating cloud of foul, reeking stenches">
+               <PRINT " fills the air">
+               <TELL "! You cover your nose and try not to gag as the air clears all too slowly">
+               <COND (<T? .M>
+                      <TELL ", noting that " THE .WHO " seem">
+                      <COND (<NOT <IS? .WHO ,PLURAL>>
+                             <TELL "s">)>
+                      <TELL " to have enjoyed the disgusting onslaught">)>
+               <TELL ,PERIOD>
+               <COND (<UNHAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Put that away,\" coughs " THE .WHO>
+                      <PRINT " with a glare of annoyance.|">)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 3>
+               <TELL
+"The unspeakable flavor of dead, rotting filth coats your tongue! You spit and cough uncontrollably until your mouth absorbs the dreadful taste">
+               <COND (<T? .M>
+                      <ANNOY-WHO .WHO>)>
+               <TELL ,PERIOD>
+               <COND (<UNHAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Enough,\" gags " THE .WHO>
+                      <PRINT " with a glare of annoyance.|">)>
+               <RTRUE>)
+              
+              (<EQUAL? ,DPOINTER 4>
+               <TELL
+"Your skin erupts in a dozen places with a painful, burning itch! No scratching can relieve the suffering you endure until the invisible rash subsides">  
+               <COND (<T? .M>
+                      <ANNOY-WHO .WHO>)>
+               <TELL ,PERIOD>
+               <COND (<UNHAPPY-CHAR? .WHO>
+                      <RTRUE>)
+                     (<T? .P>
+                      <MAKE .WHO ,SEEN>
+                      <TELL ,TAB "\"Thanks,\" mutters " THE .WHO>
+                      <PRINT " with a glare of annoyance.|">)>
+               <RTRUE>)>
+        
+        <MUNG-ALL-IN ,INGURDY>
+        <TELL
+"A black tide of memory swells in your mind! You blush with shame as thoughtless deeds and filthy little secrets emerge from the dark reaches of your past to taunt you">
+        <COND (<T? .M>
+               <LAST-MEAL .WHO>)>
+        <PRINT ,PERIOD>
+        <COND (<UNHAPPY-CHAR? .WHO>
+               <RTRUE>)
+              (<T? .P>
+               <MAKE .WHO ,SEEN>
+               <TELL ,TAB CTHE .WHO " gives you a bitter glare." CR>)>
+        <RTRUE>>
+        
+<ROUTINE ANNOY-WHO (WHO)
+        <PRINT ". Unfortunately, ">
+        <TELL THE .WHO " now look">
+        <COND (<NOT <IS? .WHO ,PLURAL>>
+               <TELL "s">)>
+        <TELL " more annoyed than ever">
+        <RFALSE>>
+
+<ROUTINE TURN-GURDY? (WRD STR)
+        <COND (<NO-MAGIC-HERE? ,GURDY>
+               <RTRUE>)>
+        <TELL "You turn the crank on " THE ,GURDY " to the " B .WRD 
+              ", and watch as ">
+        <COND (<IS? ,GURDY ,OPENED>
+               <TELL "wraiths of soft " .STR 
+" light escape from the open box, dispersing with no effect." CR>
+               <RTRUE>)>
+        <TELL "a soft " .STR 
+" glow brightens the rim of the closed lid." CR> 
+        <RFALSE>>
+
+<ROUTINE ROOM-OR-LAND ()
+        <COND (<IS? ,HERE ,INDOORS>
+               <PRINTD ,GLOBAL-ROOM>
+               <RTRUE>)>
+        <PRINTB ,W?LANDSCAPE>
+        <RTRUE>>
+
+<ROUTINE REGAIN-SENSES ()
+        <SETG P-WALK-DIR <>>
+        <SETG OLD-HERE <>>
+        <CARRIAGE-RETURNS>
+        <TELL "You slowly come to your senses." CR>
+        <COND (<T? ,VERBOSITY>
+               <CRLF>)>
+        <RFALSE>>
+
+<GLOBAL STORM-TIMER:NUMBER 0>
+
+<ROUTINE I-STORM ()
+        <COND (<DLESS? STORM-TIMER 1>
+               <REMOVE ,TWISTER>
+               <SETG STORM-TIMER 0>
+               <DEQUEUE ,I-STORM>
+               <WINDOW ,SHOWING-ROOM>
+               <PUTP ,IN-FARM ,P?SDESC 0>
+               <MAKE ,IN-FARM ,SEEN>
+               <PRINT ,TAB>
+               <ITALICIZE "Crash">
+               <TELL "! " CTHE ,FARMHOUSE " strikes " THE ,GROUND 
+" with a sickening thud. You're thrown across the room, hit " 'HEAD
+" and...||||||A ray of sunlight opens your eyes." CR>
+               <RTRUE>)
+              (<EQUAL? ,STORM-TIMER 2>
+               <TELL ,TAB CTHE ,FLOOR " lurches crazily underfoot." CR>
+               <RTRUE>)
+              (<EQUAL? ,STORM-TIMER 1>
+               <TELL "  The entire " 'FARMHOUSE
+                     " shudders as " THE ,TWISTER
+" loosens its grip. It feels as if you're starting to fall!" CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+                
+<ROUTINE I-TWISTER ("AUX" X)
+        <MAKE ,CORBIES ,SEEN>
+        <TELL ,TAB>
+        <COND (<DLESS? STORM-TIMER 1>
+               <DEQUEUE ,I-TWISTER>
+               <DEQUEUE ,I-CORBIES>
+               <TELL "The wind ">
+               <COND (<HERE? IN-FARM>
+                      <PRINT "outside ">)>
+               <TELL
+"rises to a deafening shriek, and blowing dust turns the day to night" ,PTAB>
+               <ITALICIZE "Thwack">
+               <TELL "! The ">
+               <COND (<HERE? FARM-ROOM>
+                      <TELL 'TWISTER 
+" rips a clapboard off " THE ,FARMHOUSE 
+", blows it across the yard and drives it deep into your chest"> 
+                      <JIGS-UP>
+                      <RTRUE>)>
+               <MAKE ,FARMHOUSE ,SEEN>
+               <SETG STORM-TIMER ,INIT-STORM-TIMER>
+               <QUEUE ,I-STORM>
+               <PUTP ,IN-FARM ,P?SDESC ,DESCRIBE-IN-FARM>
+               <WINDOW ,SHOWING-ROOM>
+               <PUTP ,IN-FARM ,P?FNUM 0>
+               <NEW-EXIT? ,IN-FARM ,P?NORTH %<+ ,DCONNECT 1 ,MARKBIT>
+                          ,IN-FROON ,FARM-DOOR>
+               <NEW-EXIT? ,IN-FARM ,P?OUT %<+ ,DCONNECT 1 ,MARKBIT>
+                          ,IN-FROON ,FARM-DOOR>
+               <COND (<IS? ,FARM-DOOR ,OPENED>
+                      <UNMAKE ,FARM-DOOR ,OPENED>
+                      <TELL 'FARM-DOOR " slams shut as the ">)>
+               <TELL 'FARMHOUSE
+" jerks violently upward, throwing you to your knees. You feel a strange whirling sensation as " THE ,FLOOR
+" begins to dip and sway like the deck of a boat. A glance out "
+THE ,FARM-WINDOW " confirms what your popping ears already know: "
+CTHE ,FARMHOUSE " is soaring high above the Fields of Frotzen, caught in the vortex of a mighty " 'TWISTER "!" CR>
+               <REFRESH-MAP <>>
+               <RTRUE>)
+              (<EQUAL? ,STORM-TIMER 1>
+               <TELL "The wind ">
+               <COND (<HERE? IN-FARM>
+                      <PRINT "outside ">)>
+               <TELL 
+"grows from a rumble to a roar as the churning vortex whirls closer." CR>
+               <COND (<HERE? IN-FARM>
+                      <RTRUE>)
+                     (<NOT <IS? ,FARM-DOOR ,OPENED>>
+                      <WINDOW ,SHOWING-ROOM>
+                      <MAKE ,FARM-DOOR ,OPENED>
+                      <TELL ,TAB>
+                      <ITALICIZE "Bang">
+                      <TELL "! " CTHE ,FARM-DOOR 
+                            " blows open in the gale." CR>)>
+               <COND (<VISIBLE? ,MINX>
+                      <MOVE ,MINX ,IN-FARM>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB CTHE ,MINX 
+                            " races for the safety of " 
+                            THE ,FARM ,PERIOD>)> 
+               <RTRUE>)
+              (<EQUAL? ,STORM-TIMER 2>
+               <MOVE ,TWISTER ,HERE>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL "An ominous rumble ">
+               <SET X ,W?SOUTHEAST>
+               <COND (<HERE? IN-FARM>
+                      <MAKE ,TWISTER ,NODESC>
+                      <SET X ,W?WINDOW>
+                      <PRINT "outside ">)>
+               <TELL "draws your eyes to the " B .X
+", where a dark, boiling thundercloud is racing across the fields" ,PTAB>
+               <KERBLAM>
+               <TELL 
+"Lightning heralds the approach of a deadly funnel!" CR>  
+               <RTRUE>)
+              (<EQUAL? ,STORM-TIMER 3>
+               <TELL "The sky ">
+               <COND (<HERE? IN-FARM>
+                      <TELL "outside ">)>
+               <TELL "is becoming very dark." CR>
+               <COND (<VISIBLE? ,MINX>
+                      <TELL ,TAB CTHE ,MINX 
+                            " sniffs the air and whimpers." CR>)>
+               <RTRUE>)
+              (T
+               <TELL "The air feels unusually still and expectant." CR>
+               <RTRUE>)>>
+        
+<GLOBAL FSCRIPT:NUMBER 0>
+
+<ROUTINE I-FROON ()
+        <COND (<HERE? IN-FARM>
+               <COND (<G? ,FSCRIPT 2>
+                      <COND (<IS? ,FCROWD ,SEEN>
+                             <UNMAKE ,FCROWD ,SEEN>
+                             <RFALSE>)>
+                      <MAKE ,FCROWD ,SEEN>
+                      <TELL ,TAB 
+"The cheers outside show no sign of stopping." CR>
+                      <RTRUE>)>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <COND (<IGRTR? FSCRIPT 11>
+               <TELL
+"As you stand contemplating the natural beauty of the " 'FROON 
+"ian landscape, another " 'FARMHOUSE 
+" falls out of the sky and lands on " 'HEAD>
+               <JIGS-UP>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 11>
+               <WINDOW ,SHOWING-ROOM>
+               <PUTP ,IN-FROON ,P?HEAR 0>
+               <REMOVE ,MAYOR>
+               <SETG P-HIM-OBJECT ,NOT-HERE-OBJECT>
+               <REMOVE ,LADY>
+               <SETG P-HER-OBJECT ,NOT-HERE-OBJECT>
+               <REMOVE ,FCROWD>        
+               <SETG P-THEM-OBJECT ,NOT-HERE-OBJECT>
+               <TELL "With a peremptory sniff, " THE ,MAYOR
+" snaps " THE ,JBOX " shut" ,PTAB "\"Very well,\" he sighs. \"I'm sure there are plenty of other heroes who would be more than happy to accept our humble gifts and everlasting adulation.\"|
+  Grumbling with indignation, he and the other folk sullenly retreat into "
+THE ,FBEDS ". In moments, you are completely alone." CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 10>
+               <TELL "\"The day is getting long,\" notes " THE ,MAYOR
+" with obvious irritation. \"Please choose one of the keys. ">
+               <ITALICIZE "Now">
+               <TELL ,PERQ>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 9>
+               <TELL CTHE ,MAYOR " taps his foot impatiently. \"" ,CYOUR>
+               <HONORED-ONE>
+               <TELL " will be so kind as to select a key?\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 8>
+               <TELL "\"Choose any key you like,\" prompts " THE ,MAYOR
+                     " helpfully." CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 7>
+               <WINDOW ,SHOWING-ROOM>
+               <MAKE ,JBOX ,OPENED>
+               <TELL CTHE ,MAYOR " opens " THE ,JBOX
+" with a grand flourish.|  \"Behold!\" he cries. \"Herein lie the Keys to the Kingdom of " 'FROON 
+". This gift is the greatest honor my people can bestow. Humbly, and with eternal gratitude, do we offer one to you.\"" CR ,TAB CTHE ,FCROWD
+" redoubles its cheering." CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 6>
+               <WINDOW ,SHOWING-ROOM>
+               <MOVE ,JBOX ,MAYOR>
+               <TELL 
+"\"Such a mighty deed commands many thanks,\" continues " THE ,MAYOR 
+". \"Bring me the Cask!\"|
+  \"The Cask! " CTHE ,MAYOR " sends for the Cask!\" whispers " THE ,FCROWD
+" as a servant disappears into " THE ,FBEDS
+". Moments later he returns bearing a small "
+'JBOX ", which is delivered to " THE ,MAYOR ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 5>
+               <TELL
+"\"For over three hundred years, my people have suffered in the shadow of the Heeled One,\" explains " THE ,MAYOR ", glancing hatefully at " THE ,BOOT
+". \"At long last, his evil-smelling reign is at an end!\"|
+  \"Huzzah!\" cries " THE ,FCROWD ", dancing gleefully around " THE ,FARMHOUSE
+". \"Huzzah! The Boot is licked!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 4>
+               <WINDOW ,SHOWING-ROOM>
+               <MOVE ,MAYOR ,IN-FROON>
+               <SEE-CHARACTER ,MAYOR>
+               <MAKE ,FCROWD ,NODESC>
+               <PUTP ,IN-FROON ,P?HEAR ,MAYOR>
+               <TELL 
+"An important-looking man, tinier than all the rest, emerges from "
+THE ,FCROWD ,PTAB "\"Greetings, brave ">
+               <SAY-SORC>
+               <TELL ",\" he mumbles, grovelling at your feet. \"I am Grope, Mayor of the City of " 'FROON ". On behalf of us all, I welcome you!\"|
+  \"Welcome! Welcome to the ">
+               <SAY-SORC>
+               <TELL "!\" echoes " THE ,FCROWD " joyfully." CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 3>
+               <WINDOW ,SHOWING-ROOM>
+               <MOVE ,FCROWD ,IN-FROON>
+               <SETG P-THEM-OBJECT ,FCROWD>
+               <PUTP ,IN-FROON ,P?HEAR ,FCROWD>
+               <MAKE ,LADY ,NODESC>
+               <TELL
+"\"The Heeled One is fallen! Come see! Come see!\"|
+  More and more of the little folk emerge from " THE ,FBEDS
+", staring first at the crushed boot, then at you. Soon you're completely surrounded by joyous little faces." CR>
+               <RTRUE>)
+              (<EQUAL? ,FSCRIPT 2>
+               <TELL CTHE ,LADY " tiptoes over to " THE ,BOOT
+" and gawks at it, awestruck. She gingerly reaches out to tickle the lifeless sole. Nothing happens. A broad grin spreads across her childlike face.|
+  \"It's dead,\" she squeaks, turning to look at you. \"You killed it.\"" CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+              
+<ROUTINE SAY-SORC ()
+        <TELL "sorcere">
+        <COND (<IS? ,PLAYER ,FEMALE>
+               <TELL "ss">
+               <RTRUE>)>
+        <PRINTC %<ASCII !\r>>
+        <RTRUE>>
+
+<GLOBAL SHILL-TIMER:NUMBER 0>
+
+<ROUTINE I-SHILL ()
+        <COND (<IS? ,SHILL ,NODESC>
+               <UNMAKE ,SHILL ,NODESC>
+               <RFALSE>)
+              (<IGRTR? SHILL-TIMER 5>
+               <DEQUEUE ,I-SHILL>
+               <SETG SHILL-TIMER 0>
+               <VANISH ,SHILL>
+               <COND (<HERE? ON-WHARF>
+                      <TELL ,TAB CTHE ,SHILL
+                            " slowly floats out of sight." CR>
+                      <RTRUE>)>
+               <RFALSE>)
+              (<NOT <HERE? ON-WHARF>>
+               <RFALSE>)
+              (<EQUAL? ,SHILL-TIMER 4>
+               <TELL ,TAB CTHE ,SHILL " is beginning to float away." CR>
+               <RTRUE>)
+              (<EQUAL? ,SHILL-TIMER 1>
+               <TELL ,TAB>
+               <SEE-SHILL>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE SEE-SHILL ()
+        <MAKE ,SHILL ,SEEN>
+        <SETG SHILL-TIMER 1>
+        <WINDOW ,SHOWING-ROOM>
+        <SETG P-IT-OBJECT ,SHILL>
+        <MOVE ,SHILL ,COVE>
+        <TELL "A movement draws your eye to the water, where "
+               A ,SHILL " is bobbing on the waves." CR>
+        <RTRUE>>
+
+<GLOBAL DACT-SLEEP:NUMBER 0>
+
+<ROUTINE I-DACT ("AUX" (V <>) X)
+        <SET V <VISIBLE? ,DACT>>
+        <COND (<T? ,DACT-SLEEP>
+               <DEC DACT-SLEEP>
+               <COND (<EQUAL? ,DACT-SLEEP 3>
+                      <RFALSE>)
+                     (<T? .V>
+                      <TELL ,TAB>)>
+               <COND (<ZERO? ,DACT-SLEEP>
+                      <WAKE-DACT>
+                      <RTRUE>)
+                     (<ZERO? .V>
+                      <RFALSE>)>
+               <TELL CTHE ,DACT>
+               <COND (<EQUAL? ,DACT-SLEEP 1>
+                      <TELL 
+" snorts restlessly. It looks as if it's about to wake up." CR>
+                      <RTRUE>)>
+               <TELL " caws softly in its dreams." CR>
+               <RTRUE>)>
+        <COND (<ZERO? .V>
+               <RFALSE>)
+              (<IS? ,DACT ,SEEN>
+               <UNMAKE ,DACT ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <MAKE ,DACT ,SEEN>
+        <SET X ,HAPPY-DACT>
+        <COND (<HERE? IN-SKY>
+               <SET X ,FLYING-DACT>)
+              (<IS? ,DACT ,MUNGED>
+               <SET X ,SICK-DACT>)>
+        <TELL ,TAB CTHE ,DACT <PICK-NEXT .X> ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE WAKE-DACT ()
+        <REPLACE-ADJ? ,DACT ,W?SLEEPING ,W?AWAKE>
+        <UNMAKE ,DACT ,SLEEPING>
+        <MAKE ,DACT ,SEEN>
+        <SETG DACT-SLEEP 0>
+        <COND (<VISIBLE? ,DACT>
+               <WINDOW ,SHOWING-ALL>
+               <TELL CTHE ,DACT 
+" shakes its head, blinks its eyes and yawns stupidly." CR>
+               <COND (<AND <IS? ,DACT ,MUNGED>
+                           <IN? ,SADDLE ,DACT>>
+                      <MOVE ,SADDLE ,HERE>
+                      <TELL ,TAB CTHE ,SADDLE ,SON THE ,DACT
+"'s back aggravates his wound. So he shakes it off with a violent twist">
+                      <COND (<IN? ,PLAYER ,SADDLE>
+                             <MOVE ,PLAYER ,HERE>
+                             <TELL 
+", which sends you sprawling to " THE ,GROUND>
+                             <RELOOK>
+                             <RTRUE>)>
+                      <PRINT ,PERIOD>
+                      <WINDOW ,SHOWING-ROOM>)>)>
+        <RTRUE>>
+
+<GLOBAL GRTIMER:NUMBER 0>
+
+<ROUTINE I-GRINDER-APPEARS ()
+        <COND (<NOT <HERE? AT-GATE>>
+               <RFALSE>)
+              (<DLESS? GRTIMER 1>
+               <SETG GRTIMER 0>
+               <DEQUEUE ,I-GRINDER-APPEARS>            
+               <MOVE ,GRINDER ,AT-GATE>
+               <SEE-GRINDER>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB "Blue planes of energy form in the space around you. Their patterns of intersection whirl around a vortex of laughter, growing in power and malevolence.." ,PERIOD>
+               <COND (<OR <ZERO? ,DMODE>
+                          <EQUAL? ,PRIOR ,SHOWING-INV ,SHOWING-STATS>>
+                      <RELOOK T>)>
+               <RTRUE>)
+              (<EQUAL? ,GRTIMER 1>
+               <TELL ,TAB 
+"The invisible voice chuckles again, and the tension in the air rises." CR>
+               <RTRUE>)
+              (<EQUAL? ,GRTIMER 2>
+               <TELL ,TAB 
+"A burst of hollow laughter echoes up and down the street. You turn, but see no one" ,PTAB "There's a faint, electrical tension in the air." CR>
+               <RTRUE>)               
+              (T
+               <RFALSE>)>>
+
+<ROUTINE SEE-GRINDER ()
+        <SEE-CHARACTER ,GRINDER>
+        <QUEUE ,I-GRINDER>
+        <SETG LAST-MONSTER ,GRINDER>
+        <SETG LAST-MONSTER-DIR <>>
+        <MAKE ,GRINDER ,SEEN>
+        <RFALSE>>
+
+<ROUTINE I-GRINDER ()
+        <COND (<NOT <HERE? AT-GATE>>
+               <RFALSE>)>
+        <INC GRTIMER>
+        <TELL ,TAB>
+        <COND (<L? <GETP ,GRINDER ,P?ENDURANCE> 1>
+               <EXIT-GRINDER>
+               <TELL CTHE ,GURDY " falls from " THE ,GRINDER
+"'s dying grasp. Moments later, his body dissolves in a puff of steam." CR>
+               <RTRUE>)>
+        <NEXT-ENDURANCE? ,GRINDER>
+        <COND (<EQUAL? ,GRTIMER 1>
+               <TELL CTHE ,GRINDER 
+" looks you up and down. \"Peasants,\" he sniffs, adjusting a knob on his "
+'GURDY ". \"Like unto sheep.\"|
+  He turns the crank of " THE ,GURDY ", and the air is filled with the combined stench of five herds of sheep, accompanied by a cacophany of hateful bleating." CR>)
+              (<EQUAL? ,GRTIMER 2>
+               <UNMAKE ,NYMPH ,LIVING>
+               <TELL "Ignoring you for the moment, " THE ,GRINDER 
+" strides across to " THE ,GUILD-HALL "'s entrance.|
+  A warning nymph appears beside his ">
+               <NYMPH-SAYS>
+               <TELL 
+"... Oomph!\" This last exclamation is " THE ,NYMPH
+"'s last; for, quick as a wink, " 
+THE ,GRINDER " snatches it out of the air and crushes it in his fist. \"Miserable pests.\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,GRTIMER 3>
+               <TELL CTHE ,GRINDER
+" turns around. \"Still here?\" he cries, adjusting his " 'GURDY ,PTAB
+"He turns the crank again, and a wall of imaginary flame springs up around you. You wail as your skin burns with synthetic agony." CR>)
+              (<EQUAL? ,GRTIMER 4>
+               <TELL
+"\"Guess I'll just have to finish you off.\"" CR ,TAB>)>
+        
+        <COND (<G? ,GRTIMER 3>
+               <TELL CTHE ,GRINDER " turns the crank, and "
+                     <PICK-NEXT ,TORTURES> ,PERIOD>)>
+        
+        <COND (<T? ,AUTO>
+               <BMODE-ON>)>
+        <UPDATE-STAT <- 0 <RANDOM <GETP ,GRINDER ,P?STRENGTH>>>>
+        <RTRUE>>
+
+; <ROUTINE I-DISTANT-DORN ("AUX" X)
+        <COND (<IN? ,DORN ,HERE>
+               <MAKE ,DORN ,SEEN>
+               <RFALSE>)
+              (<OR <HERE? TOWER-TOP>
+                   <SET X <INTBL? ,HERE <REST ,TOWER1-ROOMS 1> 4 1>>
+                   <SET X <INTBL? ,HERE <REST ,TOWER2-ROOMS 1> 4 1>>
+                   <SET X <INTBL? ,HERE <REST ,TOWER3-ROOMS 1> 4 1>>>
+               <COND (<IS? ,DORN ,SEEN>
+                      <UNMAKE ,DORN ,SEEN>
+                      <RFALSE>)
+                     (<PROB 50>
+                      <RFALSE>)>
+               <MAKE ,DORN ,SEEN>
+               <TELL ,TAB>
+               <COND (<SET X <INTBL? ,HERE <REST ,DORN-ROOMS 1> 5 1>>
+                      <TELL <PICK-NEXT ,CLOSE-DORNS> CR>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,DORN-SOUNDS> CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<GLOBAL DORN-TIMER:NUMBER 0>
+
+<ROUTINE I-DORN ("AUX" X L DIR TBL DEST DAMAGE)
+        <SET L <LOC ,DORN>>
+        <COND (<EQUAL? .L ,HERE>
+               <MAKE ,DORN ,SEEN>
+               <TELL ,TAB>
+               <COND (<L? <GETP ,DORN ,P?ENDURANCE> 1>
+                      <TELL "Howling with pain, " THE ,DORN 
+                            " beats a hasty retreat." CR>
+                    ; <DEQUEUE ,I-DISTANT-DORN>
+                      <KILL-MONSTER ,DORN>
+                      <RTRUE>)
+                     (<IS? ,DORN ,MUNGED>
+                      <TELL CTHE ,DORN>
+                      <COND (<DLESS? DORN-TIMER 1>
+                             <SETG DORN-TIMER 0>
+                             <WINDOW ,SHOWING-ROOM>
+                             <UNMAKE ,DORN ,MUNGED>
+                             <TELL " sniffs away the last of its tears." CR>
+                             <RTRUE>)
+                            (<EQUAL? ,DORN-TIMER 1>
+                             <TELL 
+" blows its nose noisily. It looks as if it's recovering." CR>
+                             <RTRUE>)
+                            (<EQUAL? ,DORN-TIMER 2>
+                             <TELL
+" flails around the room, its eyes streaming. \"Hurumph!\" it bawls." CR>
+                             <RTRUE>)>
+                      <TELL 
+" almost crashes into you in its blind frenzy. \"Hurumph!\" it cries, its face soaked with tears." CR>
+                      <RTRUE>)
+                     (<IS? ,DORN ,SURPRISED>
+                      <SEE-MONSTER ,DORN>
+                      <TELL CTHE ,DORN 
+" begins turning its 69 eyes in your direction." CR>
+                      <RTRUE>)>
+               <NEXT-ENDURANCE? ,DORN>
+               <SET DAMAGE <MONSTER-STRIKES? ,DORN>>
+               <TELL CTHE ,DORN>
+               <COND (<T? .DAMAGE>
+                      <TELL <PICK-NEXT ,DORN-HITS> 
+", and you feel strength drain from your body." CR>
+                      <UPDATE-STAT .DAMAGE ,STRENGTH>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,DORN-MISSES> ,PERIOD>
+               <RTRUE>)
+              (<IS? ,DORN ,MUNGED>
+               <COND (<DLESS? DORN-TIMER 1>
+                      <SETG DORN-TIMER 0>
+                      <UNMAKE ,DORN ,MUNGED>)>
+               <RFALSE>)
+              (<NOT <SET X <INTBL? ,HERE <REST ,DORN-ROOMS 1> 5 1>>>
+               <REMOVE ,DORN>
+               <UNMAKE ,DORN ,SLEEPING>
+               <UNMAKE ,DORN ,MUNGED>
+               <MAKE ,DORN ,SURPRISED>
+               <SETG DORN-TIMER 0>
+               <MAKE ,DORN ,NODESC>
+               <DEQUEUE ,I-DORN>
+               <RFALSE>)>
+        <SET DIR <MOVE-MONSTER? ,DORN T>>
+        <COND (<T? .DIR>
+               <MAKE ,DORN ,SEEN>
+               <TELL ,TAB>
+               <COND (<PROB 50>
+                      <TELL "\"Hurumph!\" ">)>
+               <TELL CTHE ,DORN>
+               <COND (<EQUAL? .DIR ,W?UP ,W?DOWN>
+                      <TELL " clambers " B .DIR " the steps." CR>
+                      <RTRUE>)>
+               <PRINT " reappears from the ">
+               <TELL B .DIR ,PERIOD>
+               <RTRUE>)>
+        <RFALSE>>       
+
+<GLOBAL ONION-TIMER:NUMBER 0>
+
+<ROUTINE I-ONION ("AUX" V)
+        <SET V <VISIBLE? ,ONION>>
+        <COND (<DLESS? ONION-TIMER 1>
+               <SETG ONION-TIMER 0>
+               <DEQUEUE ,I-ONION>
+               <COND (<T? ,DORN-TIMER>
+                      <SETG DORN-TIMER 1>)>
+               <COND (<ZERO? .V>
+                      <RFALSE>)>
+               <TELL ,TAB CTHE ,ONION 
+"'s sting diminishes enough to dry your eyes." CR>
+               <RTRUE>)
+              (<ZERO? .V>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <COND (<AND <IN? ,DORN ,HERE>
+                    <NOT <IS? ,DORN ,MUNGED>>>
+               <WINDOW ,SHOWING-ROOM>
+               <MAKE ,DORN ,MUNGED>
+               <SETG DORN-TIMER 4>
+               <MAKE ,DORN ,SEEN>
+               <TELL CTHE ,DORN
+"'s multiple eyes turn red and watery under the pungent influence of "
+THE ,ONION ". \"Hurumph!\" it wails, utterly helpless" ,PTAB>)>
+                  
+        <COND (<EQUAL? ,ONION-TIMER 1>
+               <TELL CTHE ,ONION " seems to be losing its potency." CR>
+               <RTRUE>)
+              (<EQUAL? ,ONION-TIMER 2>
+               <TELL "You rub your swollen eyes to lessen " THE ,ONION
+                     "'s pungent sting." CR>
+               <RTRUE>)>
+        <TELL "Your eyes become red and itchy as " THE ,ONION
+              "'s potent miasma">
+        <PRINT " fills the air">
+        <PRINT ,PERIOD>
+        <RTRUE>>
+
+<VOC "ITCH" NOUN>
+<VOC "LONG" ADJ> <VOC "SLENDER" ADJ> <VOC "ITCHY" ADJ>
+
+<GLOBAL MOSS-TIMER:NUMBER 0>
+<GLOBAL THIS-MOSS:OBJECT <>>
+<GLOBAL MOSSES:NUMBER 0>
+
+<ROUTINE I-MOSS ()
+        <COND (<IS? ,THIS-MOSS ,SEEN>
+               <UNMAKE ,THIS-MOSS ,SEEN>
+               <SETG MOSS-TIMER 6>
+               <RFALSE>)
+              (<DLESS? MOSS-TIMER 1>
+               <TELL ,TAB>
+               <DO-MOSS>
+               <RTRUE>)
+              (<EQUAL? ,MOSS-TIMER 2 4>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <COND (<EQUAL? ,MOSS-TIMER 1>
+               <TELL "Those itchy fingers are becoming quite a nuisance">
+               <COND (<G? ,MOSSES 1>
+                      <TELL " again">)>
+               <PRINT ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? ,MOSS-TIMER 3>
+               <TELL "You give your fingers a satisfying scratch." CR>
+               <RTRUE>)
+              (<EQUAL? ,MOSS-TIMER 5>
+               <REPLACE-SYN? ,HANDS ,W?ZZZP ,W?ITCH>
+               <REPLACE-ADJ? ,HANDS ,W?ZZZP ,W?ITCHY>
+               <TELL "You idly scratch an itchy finger." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+              
+<ROUTINE DO-MOSS ("AUX" X)
+        <SETG THIS-MOSS <>>
+        <SETG MOSS-TIMER 0>
+        <DEQUEUE ,I-MOSS>
+        <MAKE ,HANDS ,MUNGED>
+        <REPLACE-ADJ? ,HANDS ,W?ITCHY ,W?LONG>
+        <REPLACE-ADJ? ,HANDS ,W?ZZZP ,W?SLENDER>        
+        <COND (<T? ,LIT?>
+               <SET X <LIGHT-SOURCE?>>
+               <TELL "Damn that itch! You hold your bothersome hand up to ">
+               <COND (<T? .X>
+                      <TELL THE .X>)
+                     (T
+                      <TELL "the light">)>
+               <COND (<G? ,MOSSES 1>
+                      <TELL 
+" and flex your fingers again, noting their improved agility">)
+                     (T
+                      <TELL "... and gasp with shock!" CR ,TAB 
+"Your fingers, once fat and stubby, are now long and slender as a pianist's. You flex the new digits one at a time; they respond with unfamiliar agility. Fact is, your whole body feels tighter and more coordinated than ever">)>)
+              (T
+               <TELL "Your fingers tingle oddly, and the itch disappears">)>
+        <PRINT ,PERIOD>
+        <UPDATE-STAT 8 ,DEXTERITY T>
+        <RTRUE>>
+
+<ROUTINE I-UNICORN ()
+        <COND (<NOT <HERE? IN-STABLE>>
+               <RFALSE>)
+              (<IS? ,STALL ,OPENED>
+               <TELL ,TAB CTHE ,UNICORN
+" wastes no time edging her way out of " THE ,STALL>
+               <COND (<IN? ,CHEST ,HERE>
+                      <TELL ,PERIOD>
+                      <UNICORN-OPENS-CHEST>
+                      <RTRUE>)>
+               <TELL ". She ">
+               <BYE-UNICORN>
+               <RTRUE>)
+              (<IS? ,UNICORN ,SEEN>
+               <UNMAKE ,UNICORN ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <MAKE ,UNICORN ,SEEN>
+        <SETG P-HER-OBJECT ,UNICORN>
+        <TELL ,TAB CTHE ,UNICORN " whinnies sadly." CR>
+        <RTRUE>>
+
+<ROUTINE I-BABY ()
+        <COND (<NOT <HERE? JUN0>>
+               <RFALSE>)
+              (<IS? ,BABY ,SEEN>
+               <UNMAKE ,BABY ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <MAKE ,BABY ,SEEN>
+        <SETG P-HIM-OBJECT ,BABY>
+        <TELL ,TAB CTHE ,BABY " bellows helplessly">
+        <COND (<VISIBLE? ,MAMA>
+               <MAKE ,MAMA ,SEEN>
+               <COND (<PROB 50>
+                      <SETG P-HER-OBJECT ,MAMA>
+                      <TELL ", and its mother responds">)>)>
+        <PRINT ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-MAMA ("AUX" DAMAGE TBL LEN X L NL PL PLL DIR)
+        <SET L <LOC ,MAMA>>
+        <SET PL <LOC ,PLAYER>>
+        <COND (<VISIBLE? ,MAMA>
+               <COND (<NOT <IS? ,MAMA ,MONSTER>>
+                      <COND (<IS? ,MAMA ,SEEN>
+                             <UNMAKE ,MAMA ,SEEN>
+                             <RFALSE>)
+                            (<IS? ,MAMA ,MONSTER>)
+                            (<PROB 50>
+                             <RFALSE>)>
+                      <SETG P-HER-OBJECT ,MAMA>
+                      <MAKE ,MAMA ,SEEN>
+                      <TELL ,TAB CTHE ,MAMA " bellows">
+                      <COND (<VISIBLE? ,BABY>
+                             <MAKE ,BABY ,SEEN>
+                             <TELL " impotently">              
+                             <COND (<PROB 50>
+                                    <SETG P-HIM-OBJECT ,BABY>
+                                    <TELL ", and her baby responds">)>)>
+                      <PRINT ,PERIOD>
+                      <RTRUE>)>
+               <SETG P-HER-OBJECT ,MAMA>
+               <MAKE ,MAMA ,SEEN>
+               <COND (<L? <GETP ,MAMA ,P?ENDURANCE> 1>
+                      <TELL "  Bellowing with defeat, " THE ,MAMA 
+                            " limps away into the jungle." CR>
+                      <KILL-MONSTER ,MAMA>
+                      <RTRUE>)>
+               <COND (<STILL-SLEEPING? ,MAMA>
+                      <RTRUE>)>
+               <TELL ,TAB CTHE ,MAMA>
+               <COND (<EQUAL? .L .PL>
+                      <COND (<EQUAL? .L ,MAW>
+                             <TELL <PICK-NEXT ,MAMA-CLIMBS>
+                                   ,PERIOD>
+                             <RTRUE>)>
+                      <SET X <MONSTER-STRIKES? ,MAMA>>
+                      <TELL " charges you">
+                      <COND (<T? .X>
+                             <COND (<ZERO? ,STATIC>
+                                    <TELL ". Ooof!" CR>)
+                                   (T
+                                    <TELL ,PERIOD>)>
+                             <UPDATE-STAT <MSPARK? ,MAMA .X>>
+                             <RTRUE>)>
+                      <TELL ", missing by a hair." CR>
+                      <RTRUE>)
+                     (<EQUAL? .PL ,MAW>
+                      <MOVE ,MAMA ,MAW>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL 
+" clambers onto the bottom of " THE .PL ", snorting with rage!" CR>
+                      <RTRUE>)>
+               <TELL " circles " THE .PL 
+                     ", snorting angrily." CR>
+               <RTRUE>)>
+
+        <COND (<NOT <IS? ,MAMA ,MONSTER>>
+               <RFALSE>)>
+        
+        <SET NL <GETP ,MAMA ,P?LAST-LOC>>
+        <COND (<T? .NL>
+               <MOVE ,MAMA .NL>
+               <COND (<EQUAL? .NL ,HERE>
+                      <SETG P-HER-OBJECT ,MAMA>
+                      <PUTP ,MAMA ,P?LAST-LOC <>>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB CTHE ,MAMA " storms into view!" CR>
+                      <RTRUE>)>)>
+        
+       ; "Is player in a room adjacent to mama?"
+
+        <COND (<NOT <WEARING-MAGIC? ,CLOAK>>
+               <SET PLL <LOC .PL>>
+               <SET DIR ,P?NORTH>
+               <REPEAT ()
+                  <SET TBL <GETP .L .DIR>>
+                  <COND (<AND <T? .TBL>
+                              <EQUAL? <MSB <GET .TBL ,XTYPE>>
+                                      ,CONNECT ,SCONNECT>>
+                         <SET X <GET .TBL ,XROOM>>
+                         <COND (<EQUAL? .X ,AT-FALLS>)
+                               (<EQUAL? .X .PL .PLL>
+                                <PUTP ,MAMA ,P?LAST-LOC .X>
+                                <RFALSE>)>)>
+                  <COND (<DLESS? DIR ,P?NW>
+                         <RETURN>)>>)>
+
+        <PUTP ,MAMA ,P?LAST-LOC 0>
+        <RFALSE>>
+
+<GLOBAL IMPSAY:NUMBER 4>
+
+<ROUTINE I-IMPS ()
+        <COND (<NOT <HERE? APLANE>>
+               <RFALSE>)
+              (<NOT <EQUAL? ,ABOVE ,OPLAIN>>
+               <RFALSE>)>
+        <MAKE ,IMPS ,SEEN>
+        <SETG P-THEM-OBJECT ,IMPS>
+        <TELL ,TAB>
+        <COND (<DLESS? IMPSAY 1>
+               <DEQUEUE ,I-IMPS>
+               <SETG IMPSAY 3>
+               <QUEUE ,I-IMPS-TAKE>
+               <MOVE ,COCO ,APLANE>
+               <SETG P-IT-OBJECT ,COCO>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL "\"Catch!\" cries the ">
+               <PRINT "cheerful-looking Implementor">
+               <TELL ", lobbing " THE ,COCO " high into the air" ,PTAB
+"\"Got it.\" A loud-mouthed Implementor jumps out of his seat, steps backwards to grab the falling " 'COCO "... and plows directly into you" ,PTAB>
+               <ITALICIZE "Plop">
+               <TELL ". " CTHE ,COCO " skitters across the plane." CR>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 3>
+               <TELL
+"One of the Implementors notices your arrival. \"Company,\" he remarks with his mouth full.|
+  A few of the others glance down at you." CR>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 2>
+               <TELL ,XA>
+               <PRINT "tall, bearded Implementor">
+               <TELL " pitches " THE ,COCO
+" across the table. \"Isn't this the feeb who ">
+               <COND (<IS? ,BOTTLE ,SEEN>
+                      <TELL "opened that mailbox">)
+                     (<GETB ,LAST-BAD 0>
+                      <TELL "used the word '">
+                      <PRINT-TABLE ,LAST-BAD>
+                      <TELL "'">)
+                     (T
+                      <TELL "bought that stupid onion">)>
+               <TELL 
+" a few moves ago?\" he mutters, apparently referring to you">
+               <COND (<IS? ,IMPS ,MUNGED>
+                      <TELL ". \"Gimme another thunderbolt.\"" CR>
+                      <RTRUE>)>
+               <TELL ,PTAB "\"That's ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL B ,W?HER>)
+                     (T
+                      <TELL B ,W?HIM>)>
+               <TELL ",\" agrees one of the others." CR>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 1>
+               <TELL "A ">
+               <PRINT "cheerful-looking Implementor">
+               <TELL " catches " THE ,COCO
+" and glares down at you with silent contempt." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-IMPS-TAKE ("AUX" X)
+        <COND (<NOT <HERE? APLANE>>
+               <RFALSE>)
+              (<NOT <EQUAL? ,ABOVE ,OPLAIN>>
+               <RFALSE>)>
+        <MAKE ,IMPS ,SEEN>
+        <SETG P-THEM-OBJECT ,IMPS>
+        <TELL ,TAB>
+        <SETG P-IT-OBJECT ,COCO>
+        <COND (<DLESS? IMPSAY 1>
+               <TELL
+"The loud-mouthed Implementor growls something obscene, shoves you out of the way and reaches down to retrieve " THE ,COCO ,PTAB>
+               <URGRUE-GETS-COCO T>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 1>
+               <TELL "\"Pick up that " 'COCO
+                     ",\" growls the Implementor, \"or I'll ">
+               <COND (<NOT <L? <GET ,STATS ,INTELLIGENCE> ,READING-IQ>>
+                      <ITALICIZE "remove">)
+                     (<ZERO? ,VT220>
+                      <TELL "(something unintelligible)">)
+                     (T
+                      <SET X <FONT ,F-NEWFONT>>
+                      <TELL B ,W?REMOVE>
+                      <SET X <FONT ,F-DEFAULT>>)>
+               <TELL " you.\"" CR ,TAB 
+"The other Implementors are enjoying this exchange." CR>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 2>
+               <TELL 
+"The Implementor who ran into you rises to his feet, livid with rage. \"Pick up that " 'COCO ",\" he demands." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-IMPQUEST ()
+        <COND (<NOT <HERE? APLANE>>
+               <RFALSE>)
+              (<NOT <EQUAL? ,ABOVE ,OPLAIN>>
+               <RFALSE>)
+              (<DLESS? IMPSAY 1>
+               <SETG IMPSAY 3>
+               <DEQUEUE ,I-IMPQUEST>
+               <QUEUE ,I-IMPGIVE>
+               <MOVE ,GOBLET ,IMPS>
+               <SETG P-IT-OBJECT ,GOBLET>
+               <WINDOW ,SHOWING-ROOM>
+               <MAKE ,IMPS ,SEEN>
+               <TELL "  A ">
+               <PRINT "mild-mannered Implementor">
+               <TELL 
+" empties his goblet of nectar with a gulp. \"Here,\" he says, holding it out for you. \"Carry this. It'll keep the thunderbolts off your back.\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 1>
+               <MAKE ,IMPS ,SEEN>
+               <TELL
+"  \"So,\" sighs another Implementor, toying with his sunglasses. \"The Coconut is gone. Stolen. Any volunteers to get it back?\"|
+  One by one, the Implementors turn to look at you.|
+  \"I'd say it's unanimous,\" smiles the ">
+               <PRINT "cheerful-looking Implementor">
+               <TELL ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 2>
+               <MAKE ,IMPS ,SEEN>
+               <TELL
+"  \"This is awkward,\" remarks a loudmouthed Implementor. \"No telling what the ur-grue might do with the Coconut. He could crumble the foundations of reality. Plunge the world into a thousand years of darkness. We might even have to buy our own lunch!\" The other Implementors gasp. \"And it's all ">
+               <HLIGHT ,H-ITALIC>
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "her">)
+                     (T
+                      <TELL "his">)>
+               <HLIGHT ,H-NORMAL>  
+               <TELL 
+" fault,\" he adds, pointing at you with a drumstick." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>   
+
+<ROUTINE I-IMPGIVE ()
+        <COND (<NOT <HERE? APLANE>>
+               <RFALSE>)
+              (<NOT <EQUAL? ,ABOVE ,OPLAIN>>
+               <RFALSE>)>
+        <MAKE ,IMPS ,SEEN>
+        <SETG P-IT-OBJECT ,GOBLET>
+        <TELL ,TAB>
+        <COND (<DLESS? IMPSAY 1>
+               <MOVE ,GOBLET ,ON-PIKE>
+               <MAKE ,GOBLET ,NODESC>
+               <MAKE ,GOBLET ,TOUCHED>
+               <TELL "\"I don't think ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "s">)>
+               <TELL "he's going to accept " THE ,GOBLET ",\" sighs the ">
+               <PRINT "mild-mannered Implementor">
+               <TELL ,PTAB "\"Of course ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "s">)>
+               <TELL "he will,\" smiles the ">
+               <PRINT "tall, bearded Implementor">
+               <TELL ", forcing it into your hands. \"See?\"" CR>
+               <ATRII-KICK>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 1>
+               <TELL
+"\"I really must insist that you take this goblet,\" repeats the ">
+               <PRINT "mild-mannered Implementor">
+               <TELL ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? ,IMPSAY 2>
+               <TELL
+"\"Here. Take this,\" urges the ">
+               <PRINT "mild-mannered Implementor">
+               <TELL ", holding out the ">
+               <PRINT "goblet for you to take.|">
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-BFLY ("AUX" (FREE 0) V L LEN)
+        <COND (<NOT <IS? ,BFLY ,LIVING>>
+               <RFALSE>)>
+        <SET L <LOC ,BFLY>>
+        <COND (<T? .L>
+               <SET V <VISIBLE? ,BFLY>>
+               <COND (<IN? .L ,ROOMS>)
+                     (<AND <EQUAL? .L ,ARCH>
+                           <NOT <EQUAL? ,ATIME ,PRESENT>>>)
+                     (<OR <IS? .L ,SURFACE>
+                          <IS? .L ,VEHICLE>
+                          <IS? .L ,LIVING>
+                          <AND <IS? .L ,CONTAINER>
+                               <IS? .L ,OPENED>>>
+                      <INC FREE>)>)>
+        <COND (<EQUAL? .L ,GOBLET>
+               <COND (<ZERO? .V>
+                      <RFALSE>)
+                     (<IS? ,BFLY ,SEEN>
+                      <UNMAKE ,BFLY ,SEEN>
+                      <RFALSE>)
+                     (<PROB 75>
+                      <RFALSE>)>
+               <MAKE ,BFLY ,SEEN>
+               <MAKE ,BFLY ,IDENTIFIED>
+               <TELL ,TAB CTHE ,BFLY <PICK-NEXT ,BFLY-EATINGS> ,PERIOD>
+               <RTRUE>)
+              (<T? .V>
+               <COND (<IS? ,BFLY ,SEEN>
+                      <UNMAKE ,BFLY ,SEEN>
+                      <RFALSE>)
+                     (<PROB 75>
+                      <RFALSE>)>
+               <MAKE ,BFLY ,SEEN>
+               <MAKE ,BFLY ,IDENTIFIED>
+               <TELL ,TAB>
+               <COND (<EQUAL? .L ,HERE>)
+                     (<T? .FREE>
+                      <MOVE ,BFLY ,HERE>
+                      <WINDOW ,SHOWING-ALL>
+                      <TELL CTHE ,BFLY " flutters">
+                      <OUT-OF-LOC .L>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <COND (<VISIBLE? ,GOBLET>
+                      <SET L <LOC ,GOBLET>>
+                      <TELL CTHE ,BFLY>
+                      <COND (<OR <EQUAL? .L ,PLAYER ,HERE <LOC ,PLAYER>>
+                                 <IS? .L ,SURFACE>>
+                             <MOVE ,BFLY ,GOBLET>
+                             <WINDOW ,SHOWING-ALL>
+                             <TELL " alights on the rim of "
+                                   THE ,GOBLET ,PERIOD>
+                             <RTRUE>)>
+                      <TELL <PICK-NEXT ,BFLY-HOVERS> THE .L ,PERIOD>
+                      <RTRUE>)>
+               <COND (<HERE? <LOC ,ARCH>>)
+                     (<PROB 66>
+                      <TELL CTHE ,BFLY <PICK-NEXT ,BFLY-DOINGS> ,PERIOD>
+                      <RTRUE>)>
+               <RETURN <NEXT-BFLY-ROOM? ,HERE>>)>
+        <COND (<ZERO? .L>
+               <RFALSE>)
+              (<NOT <IN? .L ,ROOMS>>
+               <COND (<T? .FREE>
+                      <MOVE ,BFLY <LOC .L>>)>
+               <RFALSE>)
+              (<PROB 66>
+               <RFALSE>)>
+        <RETURN <NEXT-BFLY-ROOM? .L>>>            
+                               
+<ROUTINE NEXT-BFLY-ROOM? (L "AUX" DIR CNT TBL TYPE X RM)
+        <COND (<NOT <IN? .L ,ROOMS>>
+               <RFALSE>)>
+        <SET CNT 1>
+        <SET DIR ,I-NORTH>
+        <REPEAT ()
+           <SET TBL <GETP .L <GETB ,PDIR-LIST .DIR>>>
+           <COND (<T? .TBL>
+                  <SET X <GET .TBL ,XTYPE>>
+                  <SET TYPE <MSB .X>>
+                  <COND (<OR <EQUAL? .TYPE ,CONNECT ,SCONNECT ,X-EXIT>
+                             <AND <EQUAL? .TYPE ,DCONNECT>
+                                  <IS? <GET .TBL ,XDATA> ,OPENED>>
+                             <AND <EQUAL? .TYPE ,FCONNECT>
+                                  <BAND .X 127>>>
+                         <SET RM <GET .TBL ,XROOM>>
+                         <COND (<EQUAL? .RM .L ,ON-BRIDGE ,IN-FROON>)
+                               (<EQUAL? .RM ,APLANE ,IN-SPLENDOR
+                                        <LOC ,ARCH>>)
+                               (<AND <NOT <PLAIN-ROOM? .RM>>
+                                     <NOT <IS? ,BFLY ,IDENTIFIED>>>)
+                               (<AND <IS? .RM ,INDOORS>
+                                     <NOT <IS? .L ,INDOORS>>>)
+                               (<AND <EQUAL? .RM ,HERE>
+                                     <NOT <WEARING-MAGIC? ,CLOAK>>>
+                                <SET CNT 2>
+                                <PUT ,GOOD-DIRS 2 .DIR>
+                                <RETURN>)
+                               (T
+                                <INC CNT>
+                                <PUT ,GOOD-DIRS .CNT .DIR>)>)>)>
+           <COND (<IGRTR? DIR ,I-NW>
+                  <RETURN>)>>
+        <COND (<EQUAL? .CNT 1>
+               <RFALSE>)
+              (<EQUAL? .CNT 2>
+               <SET DIR <GET ,GOOD-DIRS 2>>)
+              (T
+               <PUT ,GOOD-DIRS 0 .CNT>
+               <PUT ,GOOD-DIRS 1 0>
+               <SET DIR <PICK-ONE ,GOOD-DIRS>>)>
+        <SET RM <GET <GETP .L <GETB ,PDIR-LIST .DIR>> ,XROOM>>
+        <COND (<EQUAL? .L ,HERE>
+               <MOVE ,BFLY .RM>
+               <BFLY-FLIES .DIR>
+               <RTRUE>)
+              (<EQUAL? .RM ,HERE>
+               <BFLY-ARRIVES .DIR>
+               <RTRUE>)>
+        <RFALSE>>
+                                        
+<ROUTINE BFLY-FLIES ("OPT" DIR)
+        <WINDOW ,SHOWING-ROOM>
+        <TELL CTHE ,BFLY " flutters away">
+        <COND (<ASSIGNED? DIR>
+               <TELL " to the " B <GET ,DIR-NAMES .DIR>>)>
+        <PRINT ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE BFLY-ARRIVES ("OPT" DIR)
+        <WINDOW ,SHOWING-ROOM>
+         <SETG P-IT-OBJECT ,BFLY>
+        <MOVE ,BFLY ,HERE>
+        <MAKE ,BFLY ,SEEN>
+        <MAKE ,BFLY ,IDENTIFIED>
+        <TELL ,TAB>
+        <COND (<IS? ,BFLY ,TOUCHED>
+               <TELL ,XTHE>)
+              (T
+               <MAKE ,BFLY ,TOUCHED>
+               <TELL ,XA>)>
+        <TELL D ,BFLY " flutters into view">
+        <COND (<ASSIGNED? DIR>
+               <SET DIR <+ .DIR 4>>
+               <COND (<G? .DIR ,I-NW>
+                      <SET DIR <- .DIR 8>>)>
+               <TELL " from the " B <GET ,DIR-NAMES .DIR>>)>
+        <PRINT ,PERIOD>
+        <RTRUE>>
+           
+<ROUTINE I-PILLAR ("AUX" L)
+        <SET L <LOC ,BFLY>>
+        <COND (<ZERO? .L>
+               <RFALSE>)
+              (<NOT <IS? ,BFLY ,LIVING>>
+               <RFALSE>)
+              (<VISIBLE? ,BFLY>
+               <COND (<IS? ,BFLY ,SEEN>
+                      <UNMAKE ,BFLY ,SEEN>
+                      <RFALSE>)
+                     (<IN? .L ,ROOMS>
+                      <VANISH ,BFLY>
+                      <DEQUEUE ,I-PILLAR>
+                      <TELL ,TAB CTHE ,BFLY 
+" seems to have crawled out of sight." CR>
+                      <RTRUE>)
+                     (<PROB 90>
+                      <RFALSE>)>
+               <MAKE ,BFLY ,SEEN>
+               <TELL ,TAB CTHE ,BFLY>
+               <COND (<PROB 50>
+                      <TELL <PICK-NEXT ,PILLAR-DOINGS>>)
+                     (T
+                      <TELL <PICK-NEXT ,PILLAR-MOVES>>
+                      <COND (<EQUAL? .L ,PLAYER>
+                             <SET L ,HANDS>)
+                            (<NOT <EQUAL? .L ,HERE>>)
+                            (<IS? ,HERE ,INDOORS>
+                             <SET L ,FLOOR>)
+                            (T
+                             <SET L ,GROUND>)>
+                      <TELL THE .L>)>
+               <TELL ,PERIOD>
+               <RTRUE>)
+              (<NOT <IN? .L ,ROOMS>>
+               <RFALSE>)
+              (<PROB 33>
+               <REMOVE ,BFLY>
+               <DEQUEUE ,I-PILLAR>
+               <RFALSE>)
+              (T
+               <RFALSE>)>>
+
+<CONSTANT INIT-CLERIC-SCRIPT 4>
+<GLOBAL CLERIC-SCRIPT:NUMBER ,INIT-CLERIC-SCRIPT>
+
+<ROUTINE I-CLERIC ("AUX" X)
+        <COND (<NOT <HERE? IN-CHAPEL>>
+               <RFALSE>)
+              (<IS? ,CLERIC ,SEEN>
+               <UNMAKE ,CLERIC ,SEEN>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <COND (<IGRTR? CLERIC-SCRIPT ,INIT-CLERIC-SCRIPT>
+               <SETG CLERIC-SCRIPT 0>
+               <TELL CTHE ,CLERIC " lifts his eyes as you walk in">
+               <COND (<NOT <IS? ,CONGREG ,SEEN>>
+                      <MAKE ,CONGREG ,SEEN>
+                      <TELL 
+". \"Art thou the Savior?\" he cries, and the entire " 
+'CONGREG " turns to stare at you" ,PTAB
+"\"Naw,\" sneers an unseen voice. \"Just some ">
+                      <SET X ,W?GUY>
+                      <COND (<IS? ,PLAYER ,FEMALE>
+                             <SET X ,W?DAME>)>
+                      <TELL B .X>
+                      <COND (<SEE-ANYTHING-IN? ,PLAYER>
+                             <TELL ,WITH A <FIRST? ,PLAYER>>)>
+                      <TELL ,PERQ ,TAB "\"Oh,\" mumbles " THE ,CLERIC 
+" with a sigh of resignation. \"Have a seat, good ">
+                      <SET X ,W?SIR>
+                      <COND (<IS? ,PLAYER ,FEMALE>
+                             <SET X ,W?MISS>)>
+                      <TELL B .X ", and join us in our hour of need.\"" CR>
+                      <RTRUE>)>
+               <TELL ", and bows his head in sorrow." CR>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT 1>
+               <TELL C ,QUOTATION <PICK-NEXT ,CLERIC-WOES> C ,EXCLAM>
+               <CLERIC-WHINES>
+               <TELL
+"Behold! The wrath of the Trees is almost upon us. When the Glyph of Warding is melted, the village will be lost!\"" CR>
+               <CROWD-AGREES>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT 2>
+               <TELL "\"Who can stop the marching Trees?">
+               <CLERIC-WHINES>
+               <TELL 
+"Orkan's Glyphs are all that keep the monsters at bay. But Orkan answers not our summons; only one Glyph remains, and that is writ in snow!\"" CR>
+               <CROWD-AGREES>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT 3>
+               <TELL "\"The southern mountains are their nest,">
+               <CLERIC-WHINES>
+               <TELL
+"They march relentlessly, choking the valley with their foul gifts and blasphemous songs. They know the wizard's Glyph is melting, and with it fades our only hope!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT ,INIT-CLERIC-SCRIPT>
+               <SETG CLERIC-SCRIPT 0>
+               <TELL "\"Where is the Savior of whom our legends speak?">
+               <CLERIC-WHINES>
+               <TELL "Anything ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "s">)>
+               <TELL "he asks will be ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "her">)
+                     (T
+                      <TELL "his">)>
+               <TELL " reward, if only ">
+               <COND (<IS? ,PLAYER ,FEMALE>
+                      <TELL "s">)>
+               <TELL 
+"he fulfills the ancient prophecy, and drives the plague of Tree-daemons from our doorstep!\"" CR>
+               <CROWD-AGREES>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>     
+              
+<ROUTINE CLERIC-WHINES ("AUX" X)
+        <WHIMPERS ,CLERIC>
+        <COND (<PROB 50>
+               <TELL ", ">
+               <SET X <RANDOM 100>>
+               <COND (<L? .X 33>
+                      <TELL "beating his breast">)
+                     (<L? .X 67>
+                      <TELL "wringing his hands">)
+                     (T
+                      <TELL "covering his face">)>
+               <COND (<PROB 50>
+                      <COND (<PROB 50>
+                             <TELL " in supplication">)
+                            (T
+                             <TELL " hopelessly">)>)>)>
+        <TELL ". \"">
+        <RFALSE>>
+                         
+<ROUTINE CROWD-AGREES ()
+        <COND (<PROB 33>
+               <TELL ,TAB C ,QUOTATION <PICK-NEXT ,CLERIC-WOES> C ,EXCLAM>
+               <WHIMPERS ,CONGREG>
+               <PRINT ,PERIOD>)>
+        <RFALSE>>
+
+<ROUTINE WHIMPERS (OBJ "AUX" X)
+        <TELL "\" ">
+        <SET X <RANDOM 100>>
+        <COND (<L? .X 33>
+               <TELL "mourn">)
+              (<L? .X 67>
+               <TELL "whine">)
+              (T
+               <TELL "whimper">)>
+        <TELL "s " THE .OBJ>
+        <RFALSE>>
+
+<ROUTINE I-THRIFF-WIN ()
+        <COND (<NOT <VISIBLE? ,CLERIC>>
+               <RFALSE>)
+              (<IS? ,CLERIC ,SEEN>
+               <UNMAKE ,CLERIC ,SEEN>
+               <RFALSE>)>
+        <INC CLERIC-SCRIPT>
+        <TELL ,TAB>
+        <COND (<EQUAL? ,CLERIC-SCRIPT 1>
+               <TELL "\"Congratulations, honored ">
+               <SAY-SORC>
+               <TELL ",\" booms " THE ,CLERIC
+" over the crowd's cheers. \"Truly, thou art the Savior foretold in our eldest legends. Would that Orkan were here to witness this day.\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT 2>
+               <TELL "\"What reward wouldst thou claim of us?\" asks "
+                     THE ,CLERIC ", carefully holding ">
+               <PRINT "the reliquary behind his back. \"">
+               <TELL "Ask for anything, and it shall be yours!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT 3>
+               <TELL
+"\"Anything we possess is yours for the asking,\" repeats " 
+THE ,CLERIC ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? ,CLERIC-SCRIPT 4>
+               <TELL CTHE ,CLERIC " adjusts ">
+               <PRINT "the reliquary behind his back. \"">
+               <TELL "Perchance we have nothing to tempt such a mighty ">
+               <SAY-SORC>
+               <TELL ",\" he remarks hopefully." CR>
+               <RTRUE>)>
+        <EXIT-CLERIC>
+        <TELL CTHE ,CONGREG " is beginning to wander away" ,PTAB
+"\"Your reticence betrays your humility, honored one,\" says the Cardinal, bowing his head. \"No doubt you have forsworn earthly gifts in lieu of some greater reward in the afterlife. In that case, farewell!\"|
+  Clutching " THE ,RELIQUARY ", " THE ,CLERIC>
+        <PRINT " disappears into the ">
+        <TELL "crowd. In moments, the place is deserted." CR>
+        <RTRUE>>              
+
+<ROUTINE EXIT-CLERIC ()
+        <DEQUEUE ,I-THRIFF-WIN>
+        <REMOVE ,CLERIC>
+        <SETG P-HIM-OBJECT ,NOT-HERE-OBJECT>
+        <REMOVE ,CONGREG>
+        <SETG P-THEM-OBJECT ,NOT-HERE-OBJECT>
+        <WINDOW ,SHOWING-ALL>
+        <RFALSE>>
+                     
+<CONSTANT INIT-TRUFFLE 50>
+<GLOBAL TRUFFLE-TIMER 0>
+
+<ROUTINE I-TRUFFLE ("AUX" V)
+        <COND (<NOT <LOC ,TRUFFLE>>
+               <SETG TRUFFLE-TIMER 0>
+               <DEQUEUE ,I-TRUFFLE>
+               <RFALSE>)
+              (<HERE? APLANE IN-SPLENDOR>
+               <RFALSE>)>
+        <SET V <VISIBLE? ,TRUFFLE>>
+        <COND (<HERE? APLANE IN-SPLENDOR>
+               <RFALSE>)
+              (<DLESS? TRUFFLE-TIMER 1>
+               <SETG TRUFFLE-TIMER 0>
+               <DEQUEUE ,I-TRUFFLE>
+               <VANISH ,TRUFFLE>
+               <COND (<T? .V>
+                      <TELL ,TAB "All that's left of " THE ,TRUFFLE
+                            " is a yummy memory." CR>
+                      <RTRUE>)>
+               <RFALSE>)
+              (<ZERO? .V>
+               <RFALSE>)
+              (<EQUAL? ,TRUFFLE-TIMER 10>
+               <TELL ,TAB CTHE ,TRUFFLE
+                     " looks terribly soft">
+               <PRINT
+". It probably won't last much longer.|">
+               <RTRUE>)
+              (<EQUAL? ,TRUFFLE-TIMER 30>
+               <TELL ,TAB CTHE ,TRUFFLE
+" looks as if it's beginning to soften." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<GLOBAL PTIMER:NUMBER 0>
+
+<ROUTINE I-QUEEN ("AUX" X)
+        <COND (<NOT <HERE? IN-GARDEN>>
+               <RFALSE>)>
+        <INC PTIMER>
+        <COND (<EQUAL? ,PTIMER 1>
+               <RFALSE>)
+              (<EQUAL? ,PTIMER 2>
+               <TELL ,TAB 
+"Voices can be heard somewhere in the distance." CR>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 3>
+               <TELL ,TAB
+"One of the unseen voices laughs harshly." CR>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 4>
+               <UNMAKE ,QUEEN ,NODESC>
+               <TELL ,TAB ,YOU-HEAR
+"a chorus of unpleasant giggles. \"I'll be in my garden,\" calls one of the voices." CR>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 5>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB 
+"A whirlpool of twinkling light forms in " THE ,GARDEN
+". Something is beginning to materialize!" CR>
+               <COND (<AND <IN? ,DACT ,HERE>
+                           <IS? ,DACT ,LIVING>
+                           <NOT <IS? ,DACT ,SLEEPING>>>
+                      <MAKE ,DACT ,SEEN>
+                      <TELL ,TAB CTHE ,DACT 
+" beats its wings restlessly." CR>)>
+               <COND (<AND <VISIBLE? ,MINX>
+                           <IS? ,MINX ,LIVING>
+                           <NOT <IS? ,MINX ,SLEEPING>>>
+                      <MAKE ,MINX ,SEEN>
+                      <TELL ,TAB CTHE ,MINX 
+" whimpers fearfully as " THE ,GARDEN " brightens">
+                      <COND (<NOT <IN? ,MINX ,BUSH>>
+                             <SET X <LOC ,MINX>>
+                             <MOVE ,MINX ,BUSH>
+                             <WINDOW ,SHOWING-ALL>
+                             <TELL ". Before you can stop her, she ">
+                             <COND (<NOT <EQUAL? .X ,IN-GARDEN>>
+                                    <TELL "leaps away from ">
+                                    <COND (<EQUAL? .X ,PLAYER>
+                                           <TELL "your grasp">)
+                                          (T
+                                           <TELL THE .X>)>
+                                    <TELL ", ">)>
+                             <TELL 
+"streaks across the lawn and disappears behind " THE ,BUSH>)>
+                      <TELL ,PERIOD>)>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 6>
+               <WINDOW ,SHOWING-ROOM>
+               <MOVE ,QUEEN ,HERE>
+               <SEE-CHARACTER ,QUEEN>
+               <TELL ,TAB 
+"The twinkling whirl resolves into a furry creature. Her face is turned away at the moment, but there's a flat tail sticking out from under her long, red gown." CR>
+               <TOPPLED? ,QUEEN>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 7>
+               <WINDOW ,SHOWING-ROOM>
+               <PUTP ,QUEEN ,P?SDESC 0>
+               <TELL ,TAB 
+"The furry creature turns around, revealing her dark, beady eyes and fleshy bill. She's a platypus!" CR>
+               <COND (<OR <IN? ,DACT ,HERE>
+                          <NOT <IN? ,PLAYER ,BUSH>>>
+                      <QUEEN-SEES-YOU>)>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 8>
+               <MOVE ,JAR ,QUEEN>
+               <MAKE ,BROG ,CONTAINER>
+               <MAKE ,BROG ,OPENABLE>
+               <MAKE ,BROG ,OPENED>
+               <REPLACE-SYN? ,BROG ,W?ZZZP ,W?COMPARTMENT>
+               <REPLACE-ADJ? ,BROG ,W?ZZZP ,W?SECRET>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB CTHE ,QUEEN " steps over to " THE ,BROG 
+", glancing around to be sure she is alone. Then she opens a secret compartment and pulls out " A ,JAR ,PERIOD>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 9>
+               <CREATE-MIRROR? ,MIRROR0>
+               <TELL ,TAB CTHE ,QUEEN
+" opens the jar, takes out a circlet and blows a silver bubble. You watch as the bubble flattens into a round mirror, rotating slowly on its edge." CR>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 10>
+               <TELL ,TAB CTHE ,QUEEN
+" stops the spinning mirror and turns it until it faces her. Gazing into it she whispers,|
+|
+ \"Mirror, mirror in the air,|
+  Who in Quendor is most fair?\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 11>
+               <TELL 
+"  The floating mirror shimmers, and a hollow voice says,|
+|
+ \"Your Highness once was fair, 'tis true.|
+  But Morning-Star is ">
+               <ITALICIZE "woo woo woo">
+               <TELL "!\"" CR>
+               <RTRUE>)
+              (<EQUAL? ,PTIMER 12>
+               <UNMAKE ,BROG ,OPENED>
+               <MOVE ,JAR ,BROG>
+               <DESTROY-MIRROR ,MIRROR0>
+               <DEQUEUE ,I-MIRRORS>
+               <REMOVE ,QUEEN>
+               <DEQUEUE ,I-QUEEN>
+               <SETG PTIMER 0>
+               <SETG P-HER-OBJECT ,NOT-HERE-OBJECT>
+               <TELL "  \"Liar!\" cries " THE ,QUEEN
+", bursting the mirror with an angry swipe. She stows " THE ,JAR 
+" back in " THE ,BROG
+", blows a silver whistle and dissolves in a whirlpool of color." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE I-DUST ("OPT" INDENT "AUX" V)
+        <SET V <VISIBLE? ,DUST>>
+        <COND (<ASSIGNED? INDENT>)
+              (<IS? ,DUST ,SEEN>
+               <UNMAKE ,DUST ,SEEN>
+               <RFALSE>)
+              (T
+               <TELL ,TAB>)>
+        <MAKE ,DUST ,SEEN>
+        <COND (<EQUAL? ,BUNNIES 1>
+               <SETG P-THEM-OBJECT ,DUST>
+               <PUTP ,DUST ,P?SDESC 0>
+               <MAKE ,DUST ,PLURAL>
+               <COND (<T? .V>
+                      <TELL "With an ominous ">
+                      <HLIGHT ,H-ITALIC>
+                      <TELL "poof">
+                      <HLIGHT ,H-NORMAL>
+                      <TELL ", the dust bunny divides itself in two." CR>)>)
+              (<T? .V>
+               <HLIGHT ,H-ITALIC>
+               <TELL "Poof">
+               <HLIGHT ,H-NORMAL>
+               <TELL ". " CTHE ,DUST <PICK-NEXT ,BUNNY-SPLITS> ,PERIOD>)>
+        <MORE-BUNNIES>
+        <RETURN .V>>
+
+<ROUTINE MORE-BUNNIES ("AUX" X)
+        <COND (<G? ,BUNNIES ,BMAX>
+               <RTRUE>)
+              (<EQUAL? ,BUNNIES ,BMAX>
+               <INC BUNNIES>)
+              (T
+               <SET X ,BUNNIES>
+               <SETG BUNNIES <+ ,OBUNNIES ,BUNNIES>>
+               <SETG OBUNNIES .X>)>
+        <WINDOW ,SHOWING-ROOM>
+        <RFALSE>>
+
+<ROUTINE I-MARE-SEES ()
+        <DEQUEUE ,I-MARE-SEES>
+        <COND (<NOT <HERE? IN-SPLENDOR>>
+               <RFALSE>)>
+        <TELL ,TAB>
+        <UNICORNS-FLEE "as you stand gawking at the landscape">
+        <RTRUE>>
+
+<ROUTINE I-ARREST ("OPT" INDENT "AUX" RM OBJ NXT)
+        <DEQUEUE ,I-ARREST>
+        <COND (<NOT <HERE? IN-SPLENDOR>>
+               <RFALSE>)>
+        <COND (<NOT <ASSIGNED? INDENT>>
+               <TELL ,TAB ,XTHE>)
+              (T
+               <TELL "As you step across the glade, the ">)>
+        <TELL
+"stillness is broken by the rumble of approaching hooves. Before you can think or move, you find yourself enclosed by a dozen sharp horns, each backed by a unicorn in full military regalia.|
+  A magnificent stallion regards you with calm authority. \"You">
+        <COND (<IS? ,HERD ,SEEN>
+               <TELL "r fate is sealed">)
+              (T
+               <TELL " will find no welcome here">)>
+        <TELL ", earth-dweller,\" whispers a stern voice in your mind. \"">
+        <COND (<IS? ,HERD ,SEEN>
+               <TELL 
+"The injustice that drove us to this Plane is now yours. Forever.\""
+CR ,TAB 
+"A painful metal bit is forced into your mouth, and a wagonload of overweight, aristocratic unicorns is attached. The rest of your life is spent hauling this laughing burden in a small circle, with infrequent stops for dirty water and oats">
+               <JIGS-UP>
+               <RTRUE>)>
+        
+        <MAKE ,HERD ,SEEN>
+        <TELL 
+"Our children must never know the pain we suffered at the hands of Men. Return to your people now, and describe the fate awaiting any who dares to violate our solitude again.\"" CR ,TAB
+"A lifetime of humiliating drudgery passes before your eyes. You cry out with pain and heartache as you haul wagons full of overweight aristocrats, standing silent and powerless as cruel taskmasters whip you over and over again...">
+        <CARRIAGE-RETURNS>
+        <SAFE-VEHICLE-EXIT>
+        <SET RM <META-LOC ,CHEST>>
+        <COND (<SET OBJ <FIRST? ,IN-SPLENDOR>>
+               <REPEAT ()
+                  <SET NXT <NEXT? .OBJ>>
+                  <COND (<EQUAL? .OBJ ,WINNER>)
+                        (<IS? .OBJ ,TAKEABLE>
+                         <MOVE .OBJ .RM>)>
+                  <SET OBJ .NXT>
+                  <COND (<ZERO? .OBJ>
+                         <RETURN>)>>)>
+        <SETG P-WALK-DIR <>>
+        <GOTO .RM>
+        <RTRUE>>
+
+<GLOBAL CHOKE:NUMBER 0>
+
+<ROUTINE I-STRANGLE ("AUX" X)
+        <SET X <GET ,STATS ,ENDURANCE>>
+        <TELL ,TAB>
+        <COND (<L? ,CHOKE .X>
+               <TELL <PICK-NEXT ,STRANGLES>>
+               <COND (<L? </ .X ,CHOKE> 2>
+                      <TELL ". Your endurance won't last much longer">)>
+               <TELL "!" CR>
+               <UPDATE-STAT <- 0 ,CHOKE>>
+               <RTRUE>)>
+        <UPDATE-STAT <- 0 .X>>
+        <TELL 
+"The choking fingers drain your endurance to its limit. As your consciousness sinks into oblivion, you feel " THE ,SKELETON " draping " B ,W?SOMETHING
+" around your neck">
+        <JIGS-UP>
+        <RTRUE>>
+
+<ROUTINE NOLUCK? ("AUX" CNT LEN OBJ)
+        <SET LEN <GET ,LUCKY-OBJECTS 0>>
+        <REPEAT ()
+           <SET OBJ <GET ,LUCKY-OBJECTS .LEN>>
+           <COND (<AND <IN? .OBJ ,PLAYER>
+                       <NOT <IS? .OBJ ,NEUTRALIZED>>>
+                  <SET CNT <GETP .OBJ ,P?DNUM>>
+                  <COND (<DLESS? CNT 1>
+                         <VANISH .OBJ>
+                         <TELL ,TAB>
+                         <ITALICIZE "Poof">
+                         <TELL "! " CTHE .OBJ
+                               " is consumed in a silent flash of green." CR>
+                         <RFALSE>)>
+                  <PUTP .OBJ ,P?DNUM .CNT>
+                  <TELL ,TAB ,CYOUR D .OBJ " flickers green">
+                  <COND (<EQUAL? .CNT 1>
+                         <TELL " again, less brightly than before">)>
+                  <PRINT ,PERIOD>
+                  <RFALSE>)>
+           <COND (<DLESS? LEN 1>
+                  <RTRUE>)>>>
+
+<GLOBAL GRUE-KILLS:NUMBER 0>
+
+<ROUTINE I-GRUE ("AUX" SEE L DIR TBL DEST DAMAGE X)
+        <COND (<T? ,LIT?>
+               <RFALSE>)
+              (<HERE? IN-LAIR>
+               <RFALSE>)
+              (<NOT <GRUE-ROOM?>>
+               <RFALSE>)>
+        <SET SEE <WEARING-MAGIC? ,HELM>>
+        <COND (<IN? ,GRUE ,HERE>
+               <COND (<L? <GETP ,GRUE ,P?ENDURANCE> 1>
+                      <COND (<IGRTR? GRUE-KILLS 2>
+                             <DEQUEUE ,I-GRUE>)>
+                      <TELL ,TAB>
+                      <COND (<T? .SEE>
+                             <TELL CTHE ,GRUE " retreats">)
+                            (T
+                             <TELL ,YOU-HEAR B ,W?SOMETHING " retreat">)>
+                      <TELL " into the darkness." CR>
+                      <UPDATE-STAT <GETP ,GRUE ,P?VALUE> ,EXPERIENCE T>
+                      <EXUENT-MONSTER ,GRUE>
+                      <PUTP ,GRUE ,P?ENDURANCE <GETP ,GRUE ,P?EMAX>>
+                      <RTRUE>)>
+               <NEXT-ENDURANCE? ,GRUE>
+               <TELL ,TAB>
+               <COND (<T? .SEE>
+                      <TELL CTHE ,GRUE>)
+                     (T
+                      <TELL "Something">)>
+               <TELL " strikes out at you">
+               <SET DAMAGE <MONSTER-STRIKES? ,GRUE>>
+               <COND (<ZERO? .DAMAGE>
+                      <TELL ", but misses." CR>
+                      <RTRUE>)
+                     (<ZERO? ,STATIC>
+                      <TELL ". Ouch!" CR>)
+                     (T
+                      <TELL ,PERIOD>)>
+               <UPDATE-STAT <MSPARK? ,GRUE .DAMAGE>>
+               <RTRUE>)
+              (<IS? ,GRUE ,SURPRISED>
+               <UNMAKE ,GRUE ,SURPRISED>
+               <RFALSE>)>
+        <MOVE ,GRUE ,HERE>
+        <SEE-MONSTER ,GRUE>
+        <COND (<T? .SEE>
+               <WINDOW ,SHOWING-ROOM>)>
+        <TELL ,TAB>
+        <COND (<T? .SEE>
+               <TELL "A presence">)
+              (T
+               <TELL "Something">)>
+        <TELL " lurks into the passage." CR>
+        <RTRUE>>
+
+<ROUTINE I-WIGHT ("AUX" DAMAGE)
+        <COND (<HERE? ON-TRAIL>
+               <COND (<L? <GETP ,WIGHT ,P?ENDURANCE> 1>
+                      <TELL ,TAB>
+                      <COND (<NOT <IS? ,WIGHT ,SLEEPING>>
+                             <TELL "Battered and confused, " THE ,WIGHT 
+" backs over the edge of the cliff, shrieks and tumbles out of sight." CR>)>
+                      <KILL-MONSTER ,WIGHT>
+                      <MOVE ,DIAMOND ,ON-TRAIL>
+                      <SETG P-IT-OBJECT ,DIAMOND>
+                      <TELL ,TAB "Something lands at your feet with a ">
+                      <ITALICIZE "plop">
+                      <TELL ,PERIOD>
+                      <RTRUE>)
+                     (<IS? ,WIGHT ,SURPRISED>
+                      <SEE-MONSTER ,WIGHT>
+                      <COND (<NOT <IS? ,WIGHT ,SLEEPING>>
+                             <TELL ,TAB CTHE ,WIGHT
+                                   " whirls to face you." CR>
+                             <TOPPLED? ,WIGHT>
+                             <RTRUE>)>)>
+               <COND (<STILL-SLEEPING? ,WIGHT>
+                      <RTRUE>)>
+               <NEXT-ENDURANCE? ,WIGHT>
+               <SET DAMAGE <MONSTER-STRIKES? ,WIGHT>>
+               <TELL ,TAB CTHE ,WIGHT>
+               <COND (<T? .DAMAGE>
+                      <TELL " claws at you viciously.">
+                      <COND (<ZERO? ,STATIC>
+                             <TELL " Ouch!">)>
+                      <CRLF>
+                      <UPDATE-STAT <MSPARK? ,WIGHT .DAMAGE>>
+                      <RTRUE>)>
+               <TELL " strikes out at you, but misses." CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<GLOBAL LAVA-TIMER:NUMBER 0>
+
+<ROUTINE I-LAVA ()
+        <COND (<DLESS? LAVA-TIMER 1>
+               <COND (<HERE? FOREST-EDGE ON-TRAIL ON-PEAK IN-CABIN>
+                      <CASCADE>
+                      <RTRUE>)>
+               <REMOVE ,PLUME>
+               <SETG LAVA-TIMER 0>
+               <DEQUEUE ,I-LAVA>
+               <MOVE ,MAGMA-GLOW ,IN-THRIFF>
+               <SETG MAGMA-TIMER 4>
+               <QUEUE ,I-MAGMA>
+               <EMPTY-ROOM ,FOREST-EDGE>
+               <PUTP ,FOREST-EDGE ,P?SDESC 0>
+               <COND (<NOT <HERE? IN-THRIFF>>
+                      <RFALSE>)>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB 
+"A violent tremor wracks the earth and sends you sprawling. You bravely cover your eyes to await the tide of magma that will sweep you and Thriff into oblivion...|||||||The silence gets the better of your curiosity." CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,LAVA-TIMER 1>  
+               <COND (<HERE? ON-TRAIL ON-PEAK IN-CABIN>
+                      <CASCADE>
+                      <RTRUE>)>
+               <REMOVE ,MAILBOX>
+               <PUTP ,ON-TRAIL ,P?SOUTH 0>
+               <PUTP ,ON-TRAIL ,P?IN 0>
+               <REPLACE-GLOBAL? ,ON-TRAIL ,CABIN ,NULL>
+               <COND (<IN? ,WIGHT ,ON-TRAIL>
+                      <REMOVE ,WIGHT>
+                      <DEQUEUE ,I-WIGHT>)>
+               <EMPTY-ROOM ,ON-TRAIL>
+               <COND (<NOT <HERE? FOREST-EDGE IN-THRIFF>>
+                      <RFALSE>)>
+               <TELL ,TAB CTHE ,GROUND " trembles with seismic distress">
+               <COND (<HERE? IN-THRIFF>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <TELL 
+" as a deadly torrent of lava sweeps down the western slope, only seconds away!" CR>
+               <RTRUE>)
+              
+              (<EQUAL? ,LAVA-TIMER 2>  
+               <COND (<HERE? ON-PEAK>
+                      <CASCADE>
+                      <RTRUE>)>
+               <EMPTY-ROOM ,ON-PEAK>
+               <COND (<NOT <HERE? ON-TRAIL FOREST-EDGE IN-THRIFF IN-CABIN>>
+                      <RFALSE>)>
+               <TELL ,TAB "Powerful shock waves rock the mountainside">
+               <COND (<HERE? IN-CABIN>
+                      <TELL ", and the entire cabin shudders." CR>
+                      <RTRUE>)
+                     (<HERE? IN-THRIFF FOREST-EDGE>
+                      <TELL ,PERIOD>
+                      <RTRUE>)>
+               <TELL 
+" as a red-hot wall of liquid rock roars down the trail, only seconds behind you!" CR>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE CASCADE ("OPT" STR)
+        <COND (<ASSIGNED? STR>
+               <TELL "As you " .STR " the lava, a cascade of it ">)
+              (T
+               <TELL ,TAB "A cascade of lava ">)>
+        <COND (<HERE? IN-CABIN>
+               <TELL "buries " THE ,CABIN>)
+              (T
+               <COND (<NOT <HERE? ON-PEAK>>
+                      <TELL "roars down the mountainside and ">)>
+               <TELL "knocks you off your feet, burying you">)>
+        <TELL " instantly under tons of molten rock">
+        <COND (<WEARING-MAGIC? ,RING>
+               <TELL
+"! Your magic ring miraculously shields you from the volcanic heat, but not from the inconvenience of having nothing to breathe">)>
+        <JIGS-UP>
+        <RTRUE>>       
+                            
+<ROUTINE EMPTY-ROOM (RM "AUX" OBJ NXT)
+        <COND (<SET OBJ <FIRST? .RM>>
+               <REPEAT ()
+                  <SET NXT <NEXT? .OBJ>>
+                  <COND (<IS? .OBJ ,TAKEABLE>
+                         <REMOVE .OBJ>)>
+                  <SET OBJ .NXT>
+                  <COND (<ZERO? .OBJ>
+                         <RETURN>)>>)>
+        <REPLACE-GLOBAL? .RM ,SNOW ,LAVA>
+        <REPLACE-GLOBAL? .RM ,GLYPH ,NULL>
+        <RFALSE>>
+
+<GLOBAL MAGMA-TIMER:NUMBER 0>
+
+<VOC "CRUST" NOUN>
+
+<ROUTINE I-MAGMA ("AUX" TBL X)
+        <SET TBL <GETPT ,MAGMA-GLOW ,P?ADJECTIVE>>
+        <COND (<DLESS? MAGMA-TIMER 1>
+               <SETG MAGMA-TIMER 0>
+               <DEQUEUE ,I-MAGMA>
+               <REMOVE ,MAGMA-GLOW>
+               <REPLACE-SYN? ,LAVA ,W?ZZZP ,W?CRUST>
+               <COND (<HERE? IN-THRIFF FOREST-EDGE ON-TRAIL ON-PEAK>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB "The red glow ">
+                      <COND (<HERE? IN-THRIFF>
+                             <TELL 
+"from the south slowly fades from view">)
+                            (T
+                             <TELL 
+"of the lava fades, leaving a hard crust underfoot">)>
+                      <PRINT ,PERIOD>)>
+               <COND (<GLOBAL-IN? ,FOREST-EDGE ,GLYPH>
+                      <SETG THRIFF-WON T>
+                      <DEQUEUE ,I-CLERIC>
+                      <MAKE ,CLERIC ,LIVING>
+                      <SETG CLERIC-SCRIPT 0>
+                      <UNMAKE ,CLERIC ,SEEN>
+                      <QUEUE ,I-THRIFF-WIN>
+                      <QUEUE ,I-UNHAPPY-XTREES>
+                      <MAKE ,XTREES ,SEEN>
+                      <MOVE ,RELIQUARY ,CLERIC>
+                      <COND (<HERE? IN-CHAPEL>
+                             <WINDOW ,SHOWING-ROOM>
+                             <TELL ,TAB
+"A messenger nymph appears above " THE ,ALTAR
+". \"Hooray!\" she cries. \"">
+                             <PRINT-TABLE ,CHARNAME>
+                             <TELL " outfoxed " THE ,XTREES "!\"" CR>
+                             <RTRUE>)>
+                      <UNMAKE ,CLERIC ,NODESC>
+                      <SET X ,FOREST-EDGE>   
+                      <COND (<HERE? IN-THRIFF>
+                             <SET X ,HERE>)>
+                      <MOVE ,CLERIC .X>
+                      <MOVE ,CONGREG .X>
+                      <COND (<EQUAL? ,HERE .X>
+                             <WINDOW ,SHOWING-ROOM>
+                             <TELL ,TAB "A cheering crowd">
+                             <COND (<HERE? IN-THRIFF>
+                                    <TELL " streams out of " 
+                                          THE ,CHAPEL>)
+                                   (T
+                                    <PRINT " appears from the ">
+                                    <TELL "village">)>
+                             <TELL ", led by " THE ,CLERIC ,PERIOD>
+                             <RTRUE>)>)>
+               
+               <COND (<HERE? FOREST-EDGE>
+                      <SAY-XTREES>
+                      <TELL 
+" test the edges of the clearing with their roots">
+                      <COND (<AND <IS? ,BFLY ,MUNGED>
+                                  <IS? ,BFLY ,LIVING>
+                                  <OR <IN? ,BFLY ,PLAYER>
+                                      <IN? ,BFLY ,HERE>>>
+                             <TELL 
+", but still appear reluctant to approach you." CR>
+                             <RTRUE>)>
+                      <TELL 
+". Finding no Glyphs of Warding or other inconveniences, they elect to ">
+                      <XTREES-EAT-YOU T>)>
+
+               <RTRUE>)
+              (<EQUAL? ,MAGMA-TIMER 1>
+               <PUT .TBL 0 ,W?RED>
+               <COND (<HERE? IN-THRIFF>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB "The southern ">
+                      <PRINT "glow fades from orange to dull red.|">
+                      <RTRUE>)
+                     (<NOT <HERE? FOREST-EDGE ON-TRAIL ON-PEAK>>
+                      <RFALSE>)>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB "The lava's ">
+               <PRINT "glow fades from orange to dull red.|">
+               <COND (<HERE? FOREST-EDGE>
+                      <SAY-XTREES>
+                      <TELL
+" shuffle a bit closer to the clearing's edge." CR>)>
+               <RTRUE>)
+              (<EQUAL? ,MAGMA-TIMER 2>
+               <PUT .TBL 0 ,W?ORANGE>
+               <COND (<HERE? IN-THRIFF>
+                      <WINDOW ,SHOWING-ROOM>
+                      <TELL ,TAB
+"You watch as the southern glow fades from yellow to orange." CR>
+                      <RTRUE>)
+                     (<NOT <HERE? FOREST-EDGE ON-TRAIL ON-PEAK>>
+                      <RFALSE>)>
+               <WINDOW ,SHOWING-ROOM>
+               <TELL ,TAB
+"The lava's glow fades from yellow to orange as it cools." CR>
+               <COND (<HERE? FOREST-EDGE>
+                      <SAY-XTREES>
+                      <TELL
+" are keeping well away from the clearing's edge." CR>)>
+               <RTRUE>)
+              (T
+               <RFALSE>)>>
+
+<ROUTINE SAY-XTREES ()
+        <MAKE ,XTREES ,SEEN>
+        <TELL ,TAB CTHE ,XTREES>
+        <RTRUE>>
+
+<ROUTINE I-XTREES ("AUX" X C)
+        <COND (<GLOBAL-IN? ,FOREST-EDGE ,GLYPH>
+               <COND (<NOT <HERE? FOREST-EDGE>>
+                      <RFALSE>)
+                     (<IS? ,XTREES ,SEEN>
+                      <UNMAKE ,XTREES ,SEEN>
+                      <RFALSE>)
+                     (<PROB 50>
+                      <RFALSE>)>
+               <SAY-XTREES>
+               <COND (<PROB 50>
+                      <SET X <PICK-NEXT ,CAROLS>>
+                      <TELL <PICK-NEXT ,HOW-SINGS> .X ,PERQ>
+                      <RTRUE>)>
+               <TELL <PICK-NEXT ,XTREE-DOINGS> ,PERIOD>
+               <RTRUE>)
+              (<T? ,MAGMA-TIMER>
+               <RFALSE>)
+              (<AND <HERE? FOREST-EDGE IN-THRIFF>
+                    <IS? ,BFLY ,MUNGED>
+                    <IS? ,BFLY ,LIVING>
+                    <OR <IN? ,BFLY ,PLAYER>
+                        <IN? ,BFLY ,HERE>>>
+               <SAY-XTREES>
+               <TELL " shuffle nervously at the edge of the ">
+               <COND (<GLOBAL-IN? ,SNOW ,HERE>
+                      <TELL B ,W?CLEARING>)
+                     (T
+                      <TELL B ,W?LAVA>)>
+               <TELL ". They">
+               <PRINT " seem unwilling to approach you.|">
+               <RTRUE>)
+              (<NOT <IS? ,FOREST-EDGE ,MUNGED>>
+               <COND (<HERE? FOREST-EDGE>
+                      <XTREES-EAT-YOU>
+                      <RTRUE>)>
+               <MAKE ,FOREST-EDGE ,MUNGED>
+               <NEW-EXIT? ,ON-TRAIL ,P?EAST ,FCONNECT ,XTREES-BLOCK>
+               <NEW-EXIT? ,ON-TRAIL ,P?DOWN ,FCONNECT ,XTREES-BLOCK>
+               <NEW-EXIT? ,IN-THRIFF ,P?SOUTH ,FCONNECT ,XTREES-BLOCK>
+               <NEW-EXIT? ,IN-THRIFF ,P?UP ,FCONNECT ,XTREES-BLOCK>
+               <REPLACE-GLOBAL? ,ON-TRAIL ,NULL ,XTREES>
+               <REPLACE-GLOBAL? ,IN-THRIFF ,NULL ,XTREES>
+               <COND (<HERE? IN-THRIFF IN-CHAPEL ON-TRAIL>
+                      <XTREES-APPEAR>
+                      <RTRUE>)>
+               <RFALSE>)
+              (<NOT <IS? ,IN-THRIFF ,MUNGED>>
+               <COND (<HERE? IN-THRIFF IN-CHAPEL>
+                      <XTREES-EAT-YOU>
+                      <RTRUE>)>
+               <MAKE ,IN-THRIFF ,MUNGED>
+               <NEW-EXIT? ,IN-PASTURE ,P?SE ,FCONNECT ,XTREES-BLOCK>
+               <NEW-EXIT? ,AT-FALLS ,P?SW ,FCONNECT ,XTREES-BLOCK>
+               <REPLACE-GLOBAL? ,IN-PASTURE ,NULL ,XTREES>
+               <REPLACE-GLOBAL? ,AT-FALLS ,NULL ,XTREES>
+               <COND (<HERE? IN-PASTURE AT-FALLS>
+                      <XTREES-APPEAR>
+                      <RTRUE>)>
+               <RFALSE>)
+              (T
+               <RFALSE>)>>
+                               
+<ROUTINE XTREES-BLOCK ()
+        <COND (<AND <IN? ,BFLY ,PLAYER>
+                    <IS? ,BFLY ,MUNGED>>
+               <TELL CTHE ,XTREES 
+" fidget nervously as you approach, but refuse to stand aside." CR>
+               <RFALSE>)>
+        <PRINT "Your path is hopelessly blocked by ">
+        <TELL 'XTREES ,PERIOD>
+        <RFALSE>>
+
+<ROUTINE XTREES-EAT-YOU ("OPT" X)
+        <COND (<NOT <ASSIGNED? X>>
+               <SAY-XTREES>)>
+        <TELL
+" continue their delayed migration into Thriff, cheerfully trampling everything in their path. This includes you">
+        <JIGS-UP>
+        <RTRUE>>
+               
+<ROUTINE XTREES-APPEAR ("AUX" X)
+        <WINDOW ,SHOWING-ROOM>
+        <SETG P-THEM-OBJECT ,XTREES>
+        <TELL ,TAB>
+        <COND (<HERE? IN-CHAPEL>
+               <TELL ,YOU-HEAR "a">
+               <PRINT "n ominously cheerful rustling sound ">
+               <TELL "outside." CR>
+               <RTRUE>)>
+        <TELL "A">
+        <PRINT "n ominously cheerful rustling sound ">
+        <TELL "draws your attention to the ">
+        <SET X ,W?SOUTH>
+        <COND (<HERE? IN-PASTURE>
+               <SET X ,W?SOUTHEAST>)
+              (<HERE? AT-FALLS>
+               <SET X ,W?SOUTHWEST>)
+              (<HERE? ON-TRAIL>
+               <SET X ,W?EAST>)>
+        <TELL B .X ", where a solid wall of " 'XTREES
+              " has completely choked the trail." CR>
+        <RTRUE>>
+
+<ROUTINE I-UNHAPPY-XTREES ()
+        <COND (<NOT <HERE? FOREST-EDGE>>
+               <RFALSE>)
+              (<IS? ,XTREES ,SEEN>
+               <UNMAKE ,XTREES ,SEEN>
+               <RFALSE>)
+              (<PROB 50>
+               <RFALSE>)>
+        <SAY-XTREES>
+        <TELL <PICK-NEXT ,SAD-TREES> ,PERIOD>
+        <RTRUE>>
+
+<ROUTINE I-HOUSEFALL ()
+        <COND (<NOT <PLAIN-ROOM?>>
+               <RFALSE>)
+              (<IS? ,FARM ,NODESC>
+               <UNMAKE ,FARM ,NODESC>
+               <RFALSE>)>
+        <DEQUEUE ,I-HOUSEFALL>
+        <UNMAKE ,FARMHOUSE ,NODESC>
+        <COND (<T? ,FARM-ROOM>
+               <DROP-FARM>)>
+        <MAKE ,CORBIES ,SEEN>
+        <TELL "  A movement overhead catches your eye" ,PTAB
+"Oh, my. A small farmhouse is falling out of the clouds! You ">
+        <COND (<HERE? FARM-ROOM>
+               <SETG P-WALK-DIR <>>
+               <SET OLD-HERE <>>
+               <WINDOW ,SHOWING-ROOM>
+               <SETG P-IT-OBJECT ,FARMHOUSE>
+               <TELL "dive out of the way just in time to avoid ">
+               <LUMBER>
+               <TELL ,PERIOD>
+               <RTRUE>)>
+        <TELL "watch it spin as it tumbles earthward, and hear ">
+        <LUMBER>
+        <TELL " somewhere nearby." CR>
+        <RTRUE>>
+
+<ROUTINE LUMBER ()
+        <TELL ,LTHE>
+        <ITALICIZE "crunch">
+        <TELL " of splintering lumber">
+        <RFALSE>>
+
+<ROUTINE DROP-FARM ()
+        <UNMAKE ,FARM ,NODESC>
+        <MOVE ,FARM ,FARM-ROOM>
+        <PUTP ,FARM-ROOM ,P?SDESC ,DESCRIBE-FARM-ROOM>
+        <REPLACE-GLOBAL? ,FARM-ROOM ,NULL ,FARM-DOOR>
+        <REPLACE-GLOBAL? ,FARM-ROOM ,NULL ,FARM-WINDOW>
+        <NEW-EXIT? ,IN-FARM ,P?NORTH %<+ ,DCONNECT 1 ,MARKBIT>
+                    ,FARM-ROOM ,FARM-DOOR>
+        <NEW-EXIT? ,IN-FARM ,P?OUT %<+ ,DCONNECT 1 ,MARKBIT>
+                   ,FARM-ROOM ,FARM-DOOR>
+        <NEW-EXIT? ,FARM-ROOM ,P?SOUTH %<+ ,DCONNECT 1 ,MARKBIT>
+                   ,IN-FARM ,FARM-DOOR>
+        <NEW-EXIT? ,FARM-ROOM ,P?IN %<+ ,DCONNECT 1 ,MARKBIT>
+                   ,IN-FARM ,FARM-DOOR>
+        <RFALSE>>
+
+<ROUTINE I-IQ ()
+        <WINDOW ,SHOWING-ALL>
+        <TELL ,TAB
+"Your forehead tingles oddly for a moment." CR>
+        <UPDATE-STAT 20 ,INTELLIGENCE T>
+        <RTRUE>>
+
+<ROUTINE I-HEAL ("AUX" (STAT 0) MAX OLD)
+        <TELL ,TAB 
+"Your body is flooded with an indescribable sense of well-being." CR>
+        <REPEAT ()
+           <SET OLD <GET ,STATS .STAT>>
+           <SET MAX <GET ,MAXSTATS .STAT>>
+           <COND (<G? .MAX .OLD>
+                  <UPDATE-STAT <- .MAX .OLD> .STAT>)
+                 (<EQUAL? .MAX .OLD>
+                  <UPDATE-STAT 5 .STAT T>)>
+           <COND (<IGRTR? STAT ,STRENGTH>
+                  <RETURN>)>>
+        <BMODE-OFF>
+        <RTRUE>>
+
+<ROUTINE I-MIGHT ("AUX" MAX OLD)
+        <TELL ,TAB 
+"You feel a surge of tension in your arms and shoulders." CR>
+        <SET OLD <GET ,STATS ,STRENGTH>>
+        <SET MAX <GET ,MAXSTATS ,STRENGTH>>
+        <COND (<G? .MAX .OLD>
+               <UPDATE-STAT <- .MAX .OLD> ,STRENGTH>)
+              (<EQUAL? .MAX .OLD>
+               <UPDATE-STAT 16 ,STRENGTH T>)>
+        <RTRUE>>
+
+<ROUTINE I-FORGET ("AUX" (ANY 0) OBJ LEN)
+        <UNMAKE ,GLYPH ,SEEN>
+        <COND (<SET OBJ <FIRST? ,ROOMS>>
+               <REPEAT ()
+                  <UNMAKE .OBJ ,VIEWED>
+                  <COND (<NOT <SET OBJ <NEXT? .OBJ>>>
+                         <RETURN>)>>)>
+        <WINDOW ,SHOWING-ALL>
+        <SETG P-WALK-DIR <>>
+        <SETG OLD-HERE <>>
+        <SET LEN <GET ,MAGIC-ITEMS 0>>
+        <REPEAT ()
+           <SET OBJ <GET ,MAGIC-ITEMS .LEN>>
+           <COND (<IS? .OBJ ,IDENTIFIED>
+                  <INC ANY>
+                  <UNMAKE .OBJ ,IDENTIFIED>
+                  <UNMAKE .OBJ ,PROPER>)>
+           <COND (<DLESS? LEN 1>
+                  <RETURN>)>>
+        <TELL ,TAB "An uneasy feeling creeps into your soul." CR>
+        <RTRUE>>
+
+<ROUTINE I-DEATH ()
+        <TELL ,TAB
+"A sickening bile rises in your throat, and sweat breaks out on your forehead as your pulse races out of control. Moments later, you experience the combined effects of coronary arrest, catastrophic respiratory collapse and rickets">
+        <JIGS-UP>
+        <RTRUE>>
+
+<ROUTINE I-CAKE ()
+        <COND (<IN? ,CAKE ,IN-GURTH>
+               <REMOVE ,CAKE>
+               <COND (<HERE? IN-GURTH>
+                      <WINDOW ,SHOWING-ROOM>
+                      <SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
+                      <TELL ,TAB
+"An alley cat races between your legs, snatches " THE ,CAKE " and">
+                      <PRINT " disappears into the ">
+                      <TELL "crowd." CR>
+                      <RTRUE>)>)>
+        <RFALSE>>
+
+<GLOBAL QUAKE-TIMER:NUMBER 0>
+
+<ROUTINE I-QUAKE ()
+        <TELL ,TAB>
+        <COND (<IGRTR? QUAKE-TIMER 4>
+               <ENDING>
+               <RTRUE>)
+              (<EQUAL? ,QUAKE-TIMER 4>
+               <TELL CTHE ,GROUND
+" heaves sharply to the right, and bits of broken rock shower down on your head. One more like that..." CR>
+               <RTRUE>)
+              (<EQUAL? ,QUAKE-TIMER 3>
+               <TELL
+"The rumble grows to a roar as a mighty earthquake rocks the caverns to their very roots." CR>
+               <RTRUE>)
+              (<EQUAL? ,QUAKE-TIMER 2>
+               <TELL 
+"Another tremor wracks the earth, and a deep, ominous rumble begins to swell around you." CR>
+               <RTRUE>)
+              (T
+               <TELL CTHE ,GROUND 
+                     " underfoot trembles for a moment." CR>
+               <RTRUE>)>>
+
+
+
+
+
+
+
+
+
+
+                      
+               
+
+               
+
+
+                
+
+         
+               
+                     
+
+              
+
+        
+        
+                    
+                  
+                  
+
+
+                             
+              
+
+              
+
+
+
+                             
+                      
+              
+              
+              
+        
+        
+               
+               
+        
+        
+
+
+
diff --git a/macros.zil b/macros.zil
new file mode 100644 (file)
index 0000000..1fda295
--- /dev/null
@@ -0,0 +1,277 @@
+"MACROS for BEYOND ZORK:
+ Copyright (C)1987 Infocom, Inc. All rights reserved."
+
+<SETG C-ENABLED? 0>
+<SETG C-ENABLED 1>
+<SETG C-DISABLED 0>
+
+<TELL-TOKENS (CR CRLF)       <CRLF>
+            (N NUM) *       <PRINTN .X>
+            (D DESC) *      <DPRINT .X>
+            (A AN) *        <PRINTA .X>
+            (AO ANO)        <PRINTA>
+            (CA CAN) *      <PRINTCA .X>
+            (CAO CANO) *    <PRINTCA>
+            (CHAR CHR C) *  <PRINTC .X>
+            B *             <PRINTB .X>
+            THE *           <THE-PRINT .X>
+            CTHE *          <CTHE-PRINT .X>
+            THEO            <THE-PRINT>
+            CTHEO           <CTHE-PRINT>
+            THEI            <THEI-PRINT>
+            CTHEI           <CTHEI-PRINT> >
+
+<DEFMAC VERB? ("ARGS" ATMS)
+       <MULTIFROB PRSA .ATMS>>
+
+<DEFMAC PRSO? ("ARGS" ATMS)
+       <MULTIFROB PRSO .ATMS>>
+
+<DEFMAC PRSI? ("ARGS" ATMS)
+       <MULTIFROB PRSI .ATMS>>
+
+<DEFMAC HERE? ("ARGS" ATMS)
+       <MULTIFROB HERE .ATMS>>
+
+<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (LL (T)) (L .LL) ATM)
+       <REPEAT ()
+               <COND (<EMPTY? .ATMS>
+                      <RETURN!- <COND (<LENGTH? .OO 1>
+                                       <ERROR .X>)
+                                      (<LENGTH? .OO 2>
+                                       <NTH .OO 2>)
+                                      (ELSE
+                                       <CHTYPE .OO FORM>)>>)>
+               <REPEAT ()
+                       <COND (<EMPTY? .ATMS>
+                              <RETURN!->)>
+                       <SET ATM <NTH .ATMS 1>>
+                       <SET L <REST <PUTREST
+                                     .L
+                                     (<COND (<TYPE? .ATM ATOM>
+                                             <CHTYPE <COND (<==? .X PRSA>
+                                                            <PARSE
+                                                             <STRING "V?"
+                                                              <SPNAME .ATM>>>)
+                                                           (T .ATM)> GVAL>)
+                                            (ELSE .ATM)>)>>>
+                       <SET ATMS <REST .ATMS>>
+                       <COND (<==? <LENGTH .LL> 4>
+                              <RETURN!->)>>
+               <SET O <REST <PUTREST .O
+                                     (<FORM EQUAL? <CHTYPE .X GVAL> !<REST .LL>>)>>>
+               <SET LL (T)>
+               <SET L .LL>>>
+
+; <DEFMAC BSET ('OBJ "ARGS" BITS)
+       <MULTIBITS FSET .OBJ .BITS>>
+
+; <DEFMAC BCLEAR ('OBJ "ARGS" BITS)
+       <MULTIBITS FCLEAR .OBJ .BITS>>
+
+; <DEFMAC BSET? ('OBJ "ARGS" BITS)
+       <MULTIBITS FSET? .OBJ .BITS>>
+
+; <DEFINE MULTIBITS (X OBJ ATMS "AUX" (O ()) ATM) 
+       <REPEAT ()
+               <COND (<EMPTY? .ATMS>
+                      <RETURN!- <COND (<LENGTH? .O 1>
+                                       <NTH .O 1>)
+                                      (<==? .X FSET?>
+                                       <FORM OR !.O>)
+                                      (ELSE
+                                       <FORM PROG () !.O>)>>)>
+               <SET ATM <NTH .ATMS 1>>
+               <SET ATMS <REST .ATMS>>
+               <SET O
+                    (<FORM .X
+                           .OBJ
+                           <COND (<TYPE? .ATM FORM>
+                                  .ATM)
+                                 (ELSE
+                                  <FORM GVAL .ATM>)>>
+                     !.O)>>>
+
+<DEFMAC RFATAL ()
+       '<PROG () <PUSH 2> <RSTACK>>>
+
+<DEFMAC PROB ('BASE)
+       <FORM NOT <FORM L? .BASE '<RANDOM 100>>>>
+
+<DEFMAC ENABLE ('INT)
+       <FORM PUT .INT ,C-ENABLED? 1>>
+
+<DEFMAC DISABLE ('INT)
+       <FORM PUT .INT ,C-ENABLED? 0>>
+
+<DEFMAC GET-REXIT-ROOM ('PT)
+       <FORM GET .PT ',REXIT>>
+
+<DEFMAC GET-DOOR-OBJ ('PT)
+       <FORM GET .PT ',DEXITOBJ>>
+
+<DEFMAC GET/B ('TBL 'PTR)
+       <FORM GET .TBL .PTR>>
+
+<DEFMAC RMGL-SIZE ('TBL)
+       <FORM - <FORM / <FORM PTSIZE .TBL> 2> 1>>
+
+<DEFMAC MAKE ('OBJ 'FLAG)
+       <FORM FSET .OBJ .FLAG>>
+
+<DEFMAC UNMAKE ('OBJ 'FLAG)
+       <FORM FCLEAR .OBJ .FLAG>>
+
+<DEFMAC IS? ('OBJ 'FLAG)
+       <FORM FSET? .OBJ .FLAG>>
+
+<DEFMAC T? ('TERM)
+       <FORM NOT <FORM ZERO? .TERM>>>
+
+<DEFMAC ABS ('NUM)
+       <FORM COND (<FORM L? .NUM 0>
+                   <FORM - 0 .NUM>)
+                  (T
+                   .NUM)>>
+
+; <DEFMAC QUOTE? ()
+       <FORM COND (<FORM NOT <FORM EQUAL?
+                                   <CHTYPE WINNER GVAL>
+                                   <CHTYPE PLAYER GVAL>>>
+                   <FORM PRINTC 34>)>> 
+
+<DEFMAC THIS-PRSO? ()
+       <FORM ZERO? <CHTYPE NOW-PRSI? GVAL>>>
+
+<DEFMAC THIS-PRSI? ()
+       <FORM NOT <FORM ZERO? <CHTYPE NOW-PRSI? GVAL>>>>
+
+<DEFMAC TOUCHING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE TOUCHVERBS GVAL>
+                    <CHTYPE NTOUCHES GVAL>>>
+
+<DEFMAC MUST-HAVE? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE HAVEVERBS GVAL>
+                    <CHTYPE NHAVES GVAL>>>
+
+<DEFMAC PUTTING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE PUTVERBS GVAL>
+                    <CHTYPE NUMPUTS GVAL>>>
+
+<DEFMAC MOVING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE MOVEVERBS GVAL>
+                    <CHTYPE NMVERBS GVAL>>>
+
+<DEFMAC HURTING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE HURTVERBS GVAL>
+                    <CHTYPE NHVERBS GVAL>>>
+
+<DEFMAC SEEING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE SEEVERBS GVAL>
+                    <CHTYPE NSVERBS GVAL>>>
+
+<DEFMAC GAMEVERB? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE GAME-VERBS GVAL>
+                    <CHTYPE NGVERBS GVAL>>>
+
+<DEFMAC TALKING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE TALKVERBS GVAL>
+                    <CHTYPE NTVERBS GVAL>>>
+
+<DEFMAC ENTERING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE E-VERBS GVAL>
+                    <CHTYPE ENTER-VERBS GVAL>>>
+
+<DEFMAC CLIMBING-ON? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE E-VERBS GVAL>
+                    <CHTYPE CLIMB-ON-VERBS GVAL>>>
+
+<DEFMAC EXITING? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE X-VERBS GVAL>
+                    <CHTYPE EXIT-VERBS GVAL>>>
+
+<DEFMAC CLIMBING-OFF? ()
+       <FORM INTBL? <CHTYPE PRSA GVAL> <CHTYPE X-VERBS GVAL>
+                    <CHTYPE CLIMB-DOWN-VERBS GVAL>>>
+
+<DEFINE PSEUDO (L)
+       (<>
+        <MAPF ,PLTABLE
+             <FUNCTION (OBJ)
+                  <SET OBJ <EVAL .OBJ>>
+                  <COND (<N==? <LENGTH .OBJ> 3>
+                         <ERROR BAD-THING .OBJ>)>
+                  <MAPRET <COND (<NTH .OBJ 2>
+                                 <VOC <SPNAME <NTH .OBJ 2>> NOUN>)>
+                          <COND (<NTH .OBJ 1>
+                                 <VOC <SPNAME <NTH .OBJ 1>> ADJECTIVE>)>
+                          <3 .OBJ>>>
+             <REST .L>>)>
+
+<PUTPROP THINGS PROPSPEC!-IZILCH PSEUDO>
+
+<DEFMAC LSB ('WRD)
+       <FORM BAND .WRD 127>>
+
+<DEFMAC MSB ('WRD)
+       <FORM BAND .WRD #2 1111111100000000>>
+
+<DEFMAC PERCENT ('X 'Y)
+       <FORM / <FORM * .X .Y> 100>>
+
+<DEFMAC RATIO ('X 'Y)
+       <FORM / <FORM * .X 100> .Y>>
+
+<DEFMAC WINDOW ('BITS)
+       <FORM SETG NEW-DBOX <FORM BOR <CHTYPE NEW-DBOX GVAL> .BITS>>>  
+
+"*** NEW EXIT MACROS ***"
+
+<CONSTANT XTYPE 0> "Exit type: MSB identifies type, LSB specifies length."
+<CONSTANT XROOM 1> "Exit room/function/string (depending on XTYPE)."
+<CONSTANT XDATA 2> "Auxiliary exit data (not used in all types of exits)."
+
+<CONSTANT NO-EXIT     #2 000100000000>
+<CONSTANT CONNECT     #2 001000000000>
+<CONSTANT SCONNECT    #2 001100000000>
+<CONSTANT FCONNECT    #2 010000000000>
+<CONSTANT DCONNECT    #2 010100000000>
+<CONSTANT SORRY-EXIT  #2 011000000000>
+<CONSTANT X-EXIT      #2 011100000000>
+<CONSTANT SHADOW-EXIT #2 100000000000>
+<CONSTANT FSORRY-EXIT #2 100100000000>
+
+<DEFMAC WALL ()
+       <FORM TABLE ,NO-EXIT 0>>
+
+<DEFMAC SHADOW ('ROOM "OPT" ('LEN 1))
+       <FORM TABLE <+ .LEN ,SHADOW-EXIT> .ROOM>>
+
+<DEFMAC TO ('ROOM "OPT" ('LEN 1))
+       <FORM TABLE <+ .LEN ,CONNECT> .ROOM>>
+
+<DEFMAC CROSS-TO ('ROOM "OPT" ('LEN 1))
+       <FORM TABLE <+ .LEN ,X-EXIT> .ROOM>>
+
+<DEFMAC SAY-TO ('ROOM 'STR "OPT" ('LEN 1))
+        <FORM TABLE <+ .LEN ,SCONNECT> .ROOM .STR>>
+
+<DEFMAC THRU ('DOOR 'ROOM "OPT" ('LEN 1))
+       <FORM TABLE <+ .LEN ,DCONNECT> .ROOM .DOOR>>
+
+<DEFMAC PER ('FCN "OPT" ('LEN 0))
+       <FORM TABLE <+ .LEN ,FCONNECT> .FCN>>
+
+<DEFMAC SORRY ('STR)
+       <FORM TABLE ,SORRY-EXIT .STR>>
+
+<DEFMAC FSORRY ('FCN "OPT" ('ARG <>))
+       <FORM TABLE ,FSORRY-EXIT .FCN .ARG>>
+; <DEFMAC WT? ('PTR BIT "OPT" (B1 5))
+       <COND (<G? .B1 4>
+              <FORM BTST <FORM GETB .PTR ,P-PSOFF> .BIT>)
+             (T
+              <FORM DO-WT? .PTR .BIT .B1>)>>
+
+
diff --git a/misc.zil b/misc.zil
new file mode 100644 (file)
index 0000000..a09650d
--- /dev/null
+++ b/misc.zil
@@ -0,0 +1,3269 @@
+"MISC for BEYOND ZORK:
+ Copyright (C)1987 Infocom, Inc. All Rights Reserved."
+
+"*** ZCODE STARTS HERE ***"
+
+<OBJECT GLOBAL-OBJECTS
+       (FLAGS LOCATION LIGHTED INDOORS MAPPED PLACE NODESC
+              NOARTICLE PROPER VOWEL PLURAL NOALL SEEN PART
+              TOUCHED SURFACE CONTAINER OPENABLE DOORLIKE OPENED
+              TRANSPARENT LOCKED TAKEABLE TRYTAKE CLOTHING WORN
+              LIVING PERSON FEMALE MUNGED TOOL VEHICLE FERRIC
+              READABLE MANUALLY WIELDED WEAPON MONSTER SLEEPING
+              STRICKEN SURPRISED NAMED BUOYANT NEUTRALIZED
+              IDENTIFIED USED VIEWED NAMEABLE)>
+
+<OBJECT LOCAL-GLOBALS
+       (LOC GLOBAL-OBJECTS)
+       (DESC "that")
+       (FLAGS NODESC)>
+
+<OBJECT ROOMS
+       (FLAGS NODESC NOARTICLE)
+       (DESC "that")>
+
+<OBJECT DUMMY-OBJECT
+       (FLAGS NODESC NOARTICLE)
+       (DESC "nothing")>
+
+<GLOBAL WINNER:OBJECT 0>
+
+<GLOBAL TAB "  ">
+<GLOBAL PERIOD ".|">
+<GLOBAL PTAB ".|  ">
+<GLOBAL YOU-SEE "You see ">
+<GLOBAL LYOU-SEE ", you see ">
+<GLOBAL CANT "You can't ">
+<GLOBAL DONT "You don't ">
+<GLOBAL YOU-HEAR "You hear ">
+<GLOBAL ALREADY "You're already ">
+<GLOBAL BRACKET "]|  ">
+<GLOBAL IMPOSSIBLY "You couldn't possibly ">
+<GLOBAL XTHE "The ">
+<GLOBAL LTHE "the ">
+<GLOBAL COMMA-AND ", and ">
+<GLOBAL SINTO " into ">
+<GLOBAL WITH " with ">
+<GLOBAL CYOU "You ">
+<GLOBAL AND " and ">
+<GLOBAL CYOUR "Your ">
+<GLOBAL SIN " in ">
+<GLOBAL SON " on ">
+<GLOBAL SIS " is ">
+<GLOBAL STO " to ">
+<GLOBAL XA "A ">
+<GLOBAL STHE " the ">
+<GLOBAL GLANCES-AT " glances at ">
+<GLOBAL NOTHING "There's nothing ">
+<GLOBAL AT-MOMENT " at the moment.|">
+<GLOBAL CTHELADY "The old woman">
+<GLOBAL SFIRST " first.|">
+<GLOBAL PERQ ".\"|">
+
+<GLOBAL HOST 0> "Host machine ID."
+<GLOBAL VT220:FLAG <>> "Charsets available?"
+<GLOBAL COLORS?:FLAG <>> "Color available?"
+<GLOBAL GRAPHICS?:FLAG <>> "Graphics available?"
+<GLOBAL CWIDTH:NUMBER 0> "Pixel width of mono chars."
+<GLOBAL CHEIGHT:NUMBER 0> "Pixel height of mono chars."
+<GLOBAL WIDTH:NUMBER 0> "Character width of screen."
+<GLOBAL HEIGHT:NUMBER 0> "Character height of screen."
+<GLOBAL SWIDTH:NUMBER 0> "Width of status bars (in characters)."
+<GLOBAL BARWIDTH:NUMBER 0> "Width of a complete status bar."
+<GLOBAL DWIDTH:NUMBER 0> "Width of status line and DBOX window."
+<GLOBAL BOXWIDTH:NUMBER 0> "Justify and display width for DBOX."
+<GLOBAL MOUSEDGE:NUMBER 0> "Left edge of mouse mindow."
+<GLOBAL BAR-RES:NUMBER 0> "Number of pixels/character."
+<GLOBAL DHEIGHT:NUMBER 0> "Current height of DBOX."
+<GLOBAL MAX-DHEIGHT:NUMBER 0> "Maximum height of DBOX."
+<GLOBAL STAT-ROUTINE <>> "Vector to stat-printing routine."
+<GLOBAL BGND:NUMBER ,C-BLACK>
+<GLOBAL FORE:NUMBER ,C-WHITE>
+<GLOBAL INCOLOR:NUMBER ,C-CYAN>
+<GLOBAL GCOLOR:NUMBER ,C-RED>
+
+<ROUTINE GO () 
+                <SETG HERE ,HILLTOP>
+        <MOVE ,PLAYER ,HERE>    
+        <SETG WINNER ,PLAYER>
+        <SETG LIT? T>
+        <INITVARS>
+        <STARTUP>
+        <SETUP-CHARACTER>
+        <SETG WINDIR <- <RANDOM 8> 1>>
+        <QUEUE ,I-BREEZE>
+        <V-REFRESH>
+        <CRLF>
+        <V-LOOK>
+        <DO-MAIN-LOOP>
+        <AGAIN>>
+
+<ROUTINE DO-MAIN-LOOP ("AUX" X)
+        <REPEAT ()
+                <SET X <MAIN-LOOP>>>>
+
+<GLOBAL P-MULT?:FLAG <>>
+
+<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL (V <>)
+                         PTBL OBJ1 TMP X)
+     <SET CNT 0>
+     <SET OBJ <>>
+     <SET PTBL T>
+     <COND (<NOT <HERE? QCONTEXT-ROOM>>
+           <SETG QCONTEXT <>>
+           <SETG QCONTEXT-ROOM <>>)>
+     <SETG P-WON <PARSER>>
+     <COND (<T? ,P-WON>
+           <SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
+           <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
+           <COND (<AND <T? ,P-IT-OBJECT>
+                       <ACCESSIBLE? ,P-IT-OBJECT>>
+                  <SET TMP <>>
+                  <REPEAT ()
+                     <COND (<IGRTR? CNT .ICNT>
+                            <RETURN>)
+                           (<EQUAL? <GET ,P-PRSI .CNT> ,IT>
+                            <PUT ,P-PRSI .CNT ,P-IT-OBJECT>
+                            <SET TMP T>
+                            <RETURN>)>>
+                  <COND (<ZERO? .TMP>
+                         <SET CNT 0>
+                         <REPEAT ()
+                            <COND (<IGRTR? CNT .OCNT>
+                                   <RETURN>)
+                                  (<EQUAL? <GET ,P-PRSO .CNT> ,IT>
+                                   <PUT ,P-PRSO .CNT ,P-IT-OBJECT>
+                                   <RETURN>)>>)>
+                  <SET CNT 0>)>
+           <SET NUM 1>
+           <COND (<ZERO? .OCNT>
+                  <SET NUM 0>)
+                 (<G? .OCNT 1>
+                  <SET TBL ,P-PRSO>
+                  <SET OBJ <>>
+                  <COND (<T? .ICNT>
+                         <SET OBJ <GET ,P-PRSI 1>>)>
+                  <SET NUM .OCNT>)
+                 (<G? .ICNT 1>
+                  <SET PTBL <>>
+                  <SET TBL ,P-PRSI>
+                  <SET OBJ <GET ,P-PRSO 1>>
+                  <SET NUM .ICNT>)>
+           <COND (<AND <ZERO? .OBJ>
+                       <EQUAL? .ICNT 1>>
+                  <SET OBJ <GET ,P-PRSI 1>>)>
+           <COND (<VERB? WALK>
+                  <SET V <PERFORM ,PRSA ,PRSO>>)
+                 (<ZERO? .NUM>
+                  <COND (<NOT <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
+                         <SET V <PERFORM ,PRSA>>
+                         <SETG PRSO <>>)
+                        (<ZERO? ,LIT?>
+                         <PCLEAR>
+                         <TOO-DARK>)
+                        (T
+                         <PCLEAR>
+                         <TELL "[There isn't anything to ">
+                         <SET TMP <GET ,P-ITBL ,P-VERBN>>
+                         <COND (<SET X <TALKING?>>
+                                <TELL "talk to">)
+                               (<OR <T? ,P-MERGED>
+                                    <T? ,P-OFLAG>>
+                                <PRINTB <GET .TMP 0>>)
+                               (T
+                                <SET X <GETB .TMP 3>>
+                                <WORD-PRINT <GETB .TMP 2> .X>)>
+                         <TELL ".]" CR>
+                         <SET V <>>)>)
+               ; (<AND <T? .PTBL>
+                       <G? .NUM 1>
+                       <VERB? COMPARE>>
+                  <SET V <PERFORM ,PRSA ,OBJECT-PAIR>>)
+                 (T
+                  <SET X 0>
+                  <SETG P-MULT? <>>
+                  <COND (<G? .NUM 1>
+                         <SETG P-MULT? T>)>
+                  <SET TMP <>>
+                  <REPEAT ()
+                   <COND (<IGRTR? CNT .NUM>
+                          <COND (<G? .X 0>
+                                 <TELL "[The ">
+                                 <COND (<NOT <EQUAL? .X .NUM>>
+                                        <TELL "other ">)>
+                                 <TELL "object">
+                                 <COND (<NOT <EQUAL? .X 1>>
+                                        <TELL "s">)>
+                                 <TELL " that you mentioned ">
+                                 <COND (<NOT <EQUAL? .X 1>>
+                                        <TELL "are">)
+                                       (T <TELL "is">)>
+                                 <TELL "n't here.]" CR>)
+                                (<ZERO? .TMP>
+                                 <REFERRING>)>
+                          <RETURN>)>
+                   <COND (<T? .PTBL>
+                          <SET OBJ1 <GET ,P-PRSO .CNT>>)
+                         (T
+                          <SET OBJ1 <GET ,P-PRSI .CNT>>)>
+                   <COND (<OR <G? .NUM 1>
+                              <EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0>
+                                      ,W?ALL ,W?EVERYTHING>>
+                          <COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
+                                 <INC X>
+                                 <AGAIN>)
+                                (<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
+                                      <DONT-ALL? .OBJ1 .OBJ>>
+                                 <AGAIN>)
+                                (<NOT <ACCESSIBLE? .OBJ1>>
+                                 <AGAIN>)
+                                (<EQUAL? .OBJ1 ,PLAYER>
+                                 <AGAIN>)>
+                          <COND (<EQUAL? .OBJ1 ,IT>
+                                 <COND (<NOT <IS? ,P-IT-OBJECT ,NOARTICLE>>
+                                        <TELL ,XTHE>)>
+                                 <TELL D ,P-IT-OBJECT>)
+                                (T
+                                 <COND (<NOT <IS? .OBJ1 ,NOARTICLE>>
+                                        <TELL ,XTHE>)>
+                                 <TELL D .OBJ1>)>
+                          <TELL ": ">)>
+                   <SET TMP T>
+                   <SETG PRSO .OBJ1>
+                   <SETG PRSI .OBJ>
+                   <COND (<ZERO? .PTBL>
+                          <SETG PRSO .OBJ>
+                          <SETG PRSI .OBJ1>)>
+                   <SETG PSEUDO-PRSO? <>>
+                   <COND (<EQUAL? ,PRSO ,PSEUDO-OBJECT>
+                          <SETG PSEUDO-PRSO? T>)>
+                   <SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
+                   <COND (<EQUAL? .V ,M-FATAL>
+                          <RETURN>)>>)>
+           <COND (<EQUAL? .V ,M-FATAL>
+                  <SETG P-CONT <>>)>)
+          (T
+           <SETG P-CONT <>>)>
+     <COND (<AND <T? ,P-WON>
+                <NOT <EQUAL? .V ,M-FATAL>>
+                <NOT <SET X <GAMEVERB?>>>>
+           <SET V <CLOCKER>>)>
+     <SETG PRSA <>>
+     <SETG PRSO <>>
+     <SETG PRSI <>>
+     <RFALSE>>
+
+<ROUTINE DONT-ALL? (O I "AUX" L X)
+        <SET L <LOC .O>>
+        <COND (<OR <ZERO? .L>
+                   <EQUAL? .O .I>>
+               <RTRUE>)
+              (<VERB? TAKE>
+               <COND (<EQUAL? .L ,WINNER>
+                      <RTRUE>)
+                   ; (<IN? .L ,WINNER>
+                      <RTRUE>)
+                     (<AND <ZERO? ,LIT?>
+                           <NOT <IN? .L ,WINNER>>>
+                      <RTRUE>)
+                     (<IS? .O ,NOALL>
+                      <RTRUE>)
+                     (<AND <NOT <IS? .O ,TAKEABLE>>
+                           <NOT <IS? .O ,TRYTAKE>>>
+                      <RTRUE>)
+                     (<AND <IS? .L ,CONTAINER>
+                           <NOT <IS? .L ,OPENED>>>
+                      <RTRUE>)
+                     (<T? .I>
+                      <COND (<NOT <EQUAL? .L .I>>
+                             <RTRUE>)
+                            (<SEE-INSIDE? .I>
+                             <RFALSE>)>
+                      <RTRUE>)
+                     (<EQUAL? .L <LOC ,PLAYER>>
+                      <RFALSE>)
+                     (<AND <NOT <IS? .L ,TAKEABLE>>
+                           <SEE-INSIDE? .L>>
+                      <RFALSE>)
+                     (T
+                      <RTRUE>)>)
+              (<SET X <PUTTING?>>
+               <COND (<IS? .O ,WORN>
+                      <RTRUE>)
+                     (<IS? .O ,WIELDED>
+                      <RTRUE>)
+                     (<EQUAL? .L ,WINNER>
+                      <RFALSE>)
+                     (T
+                      <RTRUE>)>)
+              (T
+               <RFALSE>)>>
+
+<GLOBAL C-INTS:NUMBER ,C-TABLE-LENGTH>
+
+<ROUTINE DEQUEUE (RTN)
+        <SET RTN <QUEUED? .RTN>>
+        <COND (<T? .RTN>
+               <COPYT .RTN 0 ,C-INTLEN>)>
+        <RFALSE>>
+
+<ROUTINE QUEUED? (RTN "AUX" TBL LEN)
+        <SET TBL <REST ,C-TABLE ,C-INTS>>
+        <SET LEN </ <- <REST ,C-TABLE ,C-TABLE-LENGTH> .TBL> ,C-INTLEN>>
+        <COND (<L? .LEN 1>
+               <RFALSE>)
+    &n