aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhistoricalsource <historicalsoftware@textfiles.com>2019-04-14 13:37:43 -0400
committerhistoricalsource <historicalsoftware@textfiles.com>2019-04-14 13:37:43 -0400
commita2025f6d6c8e501dbe172ec521908abefa29c333 (patch)
tree4ac43cc5f673396f457bc71344843f273ddc9580
parent7dcf75bb7411f634ca393f37c4f3fed3d82b5691 (diff)
downloadmoonmist-a2025f6d6c8e501dbe172ec521908abefa29c333.tar.gz
moonmist-a2025f6d6c8e501dbe172ec521908abefa29c333.tar.bz2
moonmist-a2025f6d6c8e501dbe172ec521908abefa29c333.zip
Final Revision
-rw-r--r--castle.zap1795
-rw-r--r--castle.zil2804
-rw-r--r--colors.zap754
-rw-r--r--colors.zil4
-rw-r--r--global.zap667
-rw-r--r--global.zil906
-rw-r--r--goal.zap2106
-rw-r--r--goal.zil3
-rw-r--r--lumber.ozil910
-rw-r--r--m5.chart455
-rw-r--r--m5.errors41
-rw-r--r--m5.record1339
-rw-r--r--m5.serial1
-rw-r--r--m5.zap53
-rw-r--r--m5.zil48
-rw-r--r--m5.zipbin128866 -> 128828 bytes
-rw-r--r--m5dat.zap16526
-rw-r--r--m5freq.xzap200
-rw-r--r--m5pur.zap823
-rw-r--r--m5str.zap309
-rw-r--r--macros.zap2
-rw-r--r--misc.zap349
-rw-r--r--misc.zil362
-rw-r--r--moon.mud6
-rw-r--r--moonmist.man1239
-rw-r--r--moonmist.zil48
-rw-r--r--parser.cmp302
-rw-r--r--parser.zap3161
-rw-r--r--parser.zil281
-rw-r--r--people.zap2891
-rw-r--r--people.zil52
-rw-r--r--places.zap216
-rw-r--r--places.zil249
-rw-r--r--syntax.zap2
-rw-r--r--syntax.zil10
-rw-r--r--things.zap299
-rw-r--r--things.zil432
-rw-r--r--tower.zap1309
-rw-r--r--tower.zil2194
-rw-r--r--verbs.indicative179
-rw-r--r--verbs.zap4859
-rw-r--r--verbs.zil28
42 files changed, 46891 insertions, 1323 deletions
diff --git a/castle.zap b/castle.zap
new file mode 100644
index 0000000..8c295ef
--- /dev/null
+++ b/castle.zap
@@ -0,0 +1,1795 @@
+
+
+ .FUNCT CASTLE-F
+ EQUAL? PRSA,V?FIND,V?EXAMINE \?CCL3
+ CALL OUTSIDE?,HERE
+ ZERO? STACK /?CCL6
+ EQUAL? PRSA,V?FIND \?PRG12
+ PRINTR "It's right here!"
+?PRG12: PRINT DARK-TURRETS
+ RTRUE
+?CCL6: EQUAL? PRSO,CASTLE /?PRG18
+ FSET? HERE,WEARBIT /?CCL15
+?PRG18: PRINTR "It's all around you!"
+?CCL15: CALL NOT-HERE,TOWER
+ RSTACK
+?CCL3: EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?BOARD \?CCL21
+ EQUAL? PRSO,CASTLE \?CCL24
+ CALL OUTSIDE?,HERE
+ ZERO? STACK /?CCL27
+ FSET? FRIEND,TOUCHBIT /?CCL30
+ CALL PERFORM,PRSA,COURTYARD
+ RTRUE
+?CCL30: CALL PERFORM,PRSA,FOYER
+ RTRUE
+?CCL27: CALL HAR-HAR
+ RSTACK
+?CCL24: CALL OUTSIDE?,HERE
+ ZERO? STACK \?CTR32
+ FSET? HERE,WEARBIT \?CCL33
+?CTR32: CALL PERFORM,PRSA,OLD-GREAT-HALL
+ RTRUE
+?CCL33: CALL HAR-HAR
+ RSTACK
+?CCL21: EQUAL? PRSA,V?LEAVE \FALSE
+ CALL OUTSIDE?,HERE
+ ZERO? STACK \?CCL40
+ CALL PERFORM,V?WALK-TO,COURTYARD
+ RTRUE
+?CCL40: CALL HAR-HAR
+ RSTACK
+
+
+ .FUNCT TOWER-F
+ EQUAL? PRSA,V?LEAVE,V?WALK-TO,V?THROUGH /?CTR2
+ EQUAL? PRSA,V?FIND,V?EXAMINE,V?BOARD \?CCL3
+?CTR2: CALL CASTLE-F
+ RSTACK
+?CCL3: CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ FSET? HERE,WEARBIT \FALSE
+ CALL NOT-HERE,TOWER
+ RTRUE
+
+
+ .FUNCT MOON-F
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTI "Strange shapes of mist dance in front of the "
+ PRINTD MOON
+ PRINTR "."
+?CCL3: EQUAL? PRSA,V?SMELL,V?EAT \FALSE
+ CALL PERFORM,V?SMELL,OCEAN
+ RTRUE
+
+
+ .FUNCT OCEAN-F
+ EQUAL? PRSA,V?LISTEN \?CCL3
+ PRINTR "The breakers seem to be warning you."
+?CCL3: EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
+ PRINTR "The cliffs are too dangerous in the dark."
+
+
+ .FUNCT CAR-DOOR-PSEUDO
+ EQUAL? PRSA,V?UNLOCK /?CCL3
+ EQUAL? PRSA,V?LOCK,V?CLOSE,V?OPEN \FALSE
+?CCL3: CALL NO-NEED
+ RSTACK
+
+
+ .FUNCT DRIVING?
+ ZERO? P-PRSA-WORD /?CCL3
+ EQUAL? P-PRSA-WORD,W?DRIVE,W?ENTER,W?STEER \FALSE
+?CCL3: EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?CLIMB-UP \?CCL7
+ EQUAL? PRSA,V?THROUGH \?CCL10
+ EQUAL? PRSO,CAR \?CCL10
+ ZERO? PRSI /?CCL15
+ CALL META-LOC,PRSI
+ EQUAL? HERE,STACK /FALSE
+ SET 'PRSO,PRSI
+ RTRUE
+?CCL15: SET 'PRSO,FRONT-GATE
+ RTRUE
+?CCL10: CALL META-LOC,PRSO
+ EQUAL? HERE,STACK /FALSE
+ RTRUE
+?CCL7: EQUAL? PRSA,V?LEAVE \?CCL22
+ EQUAL? PRSO,ROOMS,CAR \TRUE
+ RFALSE
+?CCL22: EQUAL? PRSA,V?WALK \FALSE
+ ZERO? P-PRSA-WORD \TRUE
+ EQUAL? PRSO,P?OUT \TRUE
+ RFALSE
+
+
+ .FUNCT CAR-F,ARG=0,S
+ SET 'S,HERE
+ EQUAL? ARG,M-BEG \?CCL3
+ CALL DRIVING?
+ ZERO? STACK /?CCL6
+ EQUAL? PRSO,FRONT-GATE \?CCL9
+ EQUAL? PRSA,V?THROUGH \?CCL12
+ FSET? FRONT-GATE,OPENBIT /?CCL15
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL15: EQUAL? S,DRIVEWAY \?CCL17
+ CALL PERFORM,V?WALK-TO,COURTYARD
+ RTRUE
+?CCL17: CALL PERFORM,V?WALK-TO,DRIVEWAY
+ RTRUE
+?CCL12: CALL WALK-WITHIN-ROOM
+ RSTACK
+?CCL9: EQUAL? S,DRIVEWAY \?CCL19
+ EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?CLIMB-UP \?CCL22
+ CALL META-LOC,PRSO
+ EQUAL? DRIVEWAY,STACK \?CCL25
+ CALL WALK-WITHIN-ROOM
+ RSTACK
+?CCL25: FSET? FRONT-GATE,OPENBIT /?CCL27
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL27: CALL CAR-TO-COURTYARD
+ RSTACK
+?CCL22: EQUAL? PRSA,V?LEAVE \?CCL29
+ EQUAL? PRSO,COURTYARD \?CCL32
+ CALL HAR-HAR
+ RSTACK
+?CCL32: FSET? FRONT-GATE,OPENBIT /?CCL34
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL34: CALL CAR-TO-COURTYARD
+ RSTACK
+?CCL29: EQUAL? PRSO,P?IN,P?SOUTH /?CTR35
+ EQUAL? PRSO,INTDIR \?CCL36
+ CALL ADJ-USED?,W?SOUTH
+ ZERO? STACK /?CCL36
+?CTR35: FSET? FRONT-GATE,OPENBIT /?CCL43
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL43: CALL CAR-TO-COURTYARD
+ RSTACK
+?CCL36: SET 'CLOCK-WAIT,TRUE-VALUE
+ PRINT CASTLE-IS-SOUTH
+ RTRUE
+?CCL19: EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?CLIMB-UP \?CCL48
+ CALL META-LOC,PRSO
+ EQUAL? COURTYARD,STACK \?CCL51
+ CALL WALK-WITHIN-ROOM
+ RSTACK
+?CCL51: FSET? FRONT-GATE,OPENBIT /?CCL53
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL53: CALL CAR-TO-DRIVEWAY
+ RSTACK
+?CCL48: EQUAL? PRSA,V?LEAVE \?CCL55
+ EQUAL? PRSO,DRIVEWAY \?CCL58
+ CALL HAR-HAR
+ RSTACK
+?CCL58: FSET? FRONT-GATE,OPENBIT /?CCL60
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL60: CALL CAR-TO-DRIVEWAY
+ RSTACK
+?CCL55: EQUAL? PRSO,P?NORTH /?CTR61
+ EQUAL? PRSO,INTDIR \?CCL62
+ CALL ADJ-USED?,W?NORTH
+ ZERO? STACK /?CCL62
+?CTR61: FSET? FRONT-GATE,OPENBIT /?CCL69
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL69: CALL CAR-TO-DRIVEWAY
+ RSTACK
+?CCL62: EQUAL? PRSO,P?OUT \?CCL71
+ EQUAL? P-PRSA-WORD,FALSE-VALUE,W?GO /FALSE
+ FSET? FRONT-GATE,OPENBIT /?CCL76
+ CALL TOO-BAD-BUT,FRONT-GATE,STR?61
+ RSTACK
+?CCL76: CALL CAR-TO-DRIVEWAY
+ RSTACK
+?CCL71: CALL YOU-CANT,STR?41
+ RSTACK
+?CCL6: EQUAL? PRSA,V?WALK \?CCL78
+ EQUAL? PRSO,P?OUT \?CCL78
+ MOVE WINNER,HERE
+ CALL OWN-FEET
+ RSTACK
+?CCL78: EQUAL? PRSA,V?WALK,V?STAND,V?FOLLOW /?CTR81
+ EQUAL? PRSA,V?WALK-TO,V?THROUGH,V?LEAVE \?CCL82
+ ZERO? PRSO /?CCL82
+ EQUAL? PRSO,LUGGAGE,ROOMS,CAR /?CCL82
+?CTR81: CALL FIRST-YOU,STR?224,CAR
+ MOVE WINNER,HERE
+ EQUAL? PRSA,V?STAND /TRUE
+ RFALSE
+?CCL82: EQUAL? PRSO,ROOMS \FALSE
+ EQUAL? PRSA,V?STOP \FALSE
+ CALL PERFORM,PRSA,CAR
+ RTRUE
+?CCL3: EQUAL? ARG,M-LOOK \?CCL97
+ LOC WINNER
+ EQUAL? STACK,CAR \TRUE
+ PRINTI "You are sitting in your new little "
+ PRINTD CAR
+ PRINTR "."
+?CCL97: ZERO? ARG \FALSE
+ EQUAL? PRSA,V?EXAMINE \?CCL105
+ CALL TELL-ABOUT-CAR
+ RTRUE
+?CCL105: EQUAL? PRSA,V?UNLOCK /?CCL107
+ EQUAL? PRSA,V?LOCK,V?LAMP-ON,V?LAMP-OFF /?CCL107
+ EQUAL? PRSA,V?OPEN,V?CLOSE,V?CLIMB-ON \FALSE
+?CCL107: CALL NO-NEED,STR?225
+ RSTACK
+
+
+ .FUNCT CAR-TO-COURTYARD
+ MOVE CAR,COURTYARD
+ PRINTI "Your headlights bravely pierce the gloom as you enter the "
+ PRINTD COURTYARD
+ PRINTI ". You get out of your car.
+"
+ CALL GOTO,COURTYARD
+ RSTACK
+
+
+ .FUNCT CAR-TO-DRIVEWAY
+ SET 'CLOCK-WAIT,TRUE-VALUE
+ PRINTR "(You can't leave yet. There's a mystery to be solved!)"
+
+
+ .FUNCT TELL-ABOUT-CAR,X
+ PRINTI "Your new little "
+ CALL PRINT-COLOR
+ ZERO? STACK /?PRG7
+ PRINTC 32
+?PRG7: PRINTD CAR
+ PRINTR " is parked here."
+
+
+ .FUNCT VOICE-F
+ EQUAL? HERE,DRIVEWAY \?CCL3
+ ZERO? DRAGON-EYE-COLOR /FALSE
+ EQUAL? PRSA,V?LISTEN /?CCL6
+ CALL SPEAKING-VERB?
+ ZERO? STACK /FALSE
+?CCL6: CALL VOICE-SAYS
+ RSTACK
+?CCL3: EQUAL? HERE,DINING-ROOM \FALSE
+ EQUAL? PRSA,V?LISTEN \FALSE
+ CALL BUST-F
+ RSTACK
+
+
+ .FUNCT HORN-F
+ EQUAL? PRSA,V?SOUND,V?SLAP /?CCL3
+ EQUAL? PRSA,V?RUB,V?PUSH,V?RING \FALSE
+?CCL3: GETB LAST-NAME,0
+ ZERO? STACK /?CCL8
+ CALL GATE-OPENS
+ ZERO? STACK \TRUE
+ PRINTR """H-O-O-O-N-K!"""
+?CCL8: CALL THIS-IS-IT,VOICE
+ MOVE VOICE,DRIVEWAY
+ CALL PERFORM,V?PUSH,DRAGON-EYE
+ RTRUE
+
+
+ .FUNCT DRIVEWAY-F,RARG=0
+ EQUAL? RARG,M-BEG \?CCL3
+ EQUAL? PRSA,V?YELL \?CCL6
+ CALL PERFORM,V?KNOCK,FRONT-GATE
+ RTRUE
+?CCL6: ZERO? DRAGON-EYE-COLOR /FALSE
+ CALL SPEAKING-VERB?
+ ZERO? STACK \?CCL8
+ EQUAL? PRSA,V?LISTEN \FALSE
+ EQUAL? PRSO,DRAGON-EYE,DRAGON,FRONT-GATE \FALSE
+?CCL8: CALL VOICE-SAYS
+ RTRUE
+?CCL3: EQUAL? RARG,M-LOOK \FALSE
+ PRINTI "You are by the "
+ FSET? FRONT-GATE,OPENBIT \?PRG23
+ PRINTI "open "
+?PRG23: PRINTD FRONT-GATE
+ PRINTI " of "
+ PRINTD CASTLE
+ PRINTI ". You can hear the ocean beating urgently against the rocks far below.
+"
+ CALL TELL-ABOUT-DRAGON
+ RTRUE
+
+
+ .FUNCT DRAGON-F
+ EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+ CALL TELL-ABOUT-DRAGON
+ RTRUE
+?CCL3: CALL DRAGON-EYE-F
+ RSTACK
+
+
+ .FUNCT TELL-ABOUT-DRAGON
+ PRINTI "In the moonlit gloom, you can make out an ornament on the gate. It's a winged, two-legged dragon called a wyvern, which crests the "
+ PRINT TRESYLLIAN
+ PRINTI " family's coat of arms.
+The dragon appears in profile. "
+ CALL THIS-IS-IT,DRAGON-EYE
+ CALL TELL-ABOUT-EYE
+ RTRUE
+
+
+ .FUNCT I-DRAGON-EYE,GARG=0
+ GETB LAST-NAME,0
+ ZERO? STACK \FALSE
+ CALL PERFORM,V?PUSH,DRAGON-EYE
+ RETURN 2
+
+
+ .FUNCT DRAGON-EYE-F
+ EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+ CALL TELL-ABOUT-EYE
+ RTRUE
+?CCL3: EQUAL? PRSA,V?LEAP,V?CLIMB-ON,V?BOARD \?CCL5
+ PRINT TOO-SLIPPERY
+ RTRUE
+?CCL5: EQUAL? PRSA,V?TURN,V?SLAP /?CTR8
+ EQUAL? PRSA,V?RUB,V?RING,V?PUSH /?CTR8
+ EQUAL? PRSA,V?MUNG,V?MOVE,V?KNOCK \?CCL9
+?CTR8: LESS? DRAGON-EYE-COLOR,0 /?CND13
+ SET 'DRAGON-EYE-COLOR,-1
+ PRINTI "The "
+ PRINTD DRAGON-EYE
+ PRINTI " glows red. "
+?CND13: EQUAL? PRSA,V?PUSH /?PRG21
+ PRINTI "Evidently you just pushed a button. "
+?PRG21: PRINTI "A voice comes from a hidden speaker. It says:
+"
+ CALL VOICE-SAYS
+ RTRUE
+?CCL9: EQUAL? PRSA,V?TAKE \FALSE
+ PRINTI "It's part of the "
+ PRINTD FRONT-GATE
+ PRINTR "."
+
+
+ .FUNCT TELL-ABOUT-EYE
+ ZERO? DRAGON-EYE-COLOR \?PRG6
+ PRINTR "The moonlight glints on its lone visible eye."
+?PRG6: PRINTI "The "
+ PRINTD DRAGON-EYE
+ PRINTI " is glowing "
+ GRTR? DRAGON-EYE-COLOR,0 \?PRG13
+ PRINTR "green."
+?PRG13: PRINTR "red."
+
+
+ .FUNCT VOICE-SAYS
+ CALL QUEUE,I-DRAGON-EYE,0
+ GETB LAST-NAME,0
+ ZERO? STACK /?CND1
+ PRINTI """Please enter, "
+ CALL TITLE-NAME
+ ZERO? STACK /?PRG9
+ PRINTC 46
+?PRG9: PRINTI """
+"
+ CALL GATE-OPENS
+ RTRUE
+?CND1: CALL QUEUE,I-FRIEND-GREETS,6
+ PRINTI """Please announce "
+ PRINTD PLAYER
+ PRINTI ". State your title -- such as Lord or Lady, Sir or Dame, Mr. or Ms. -- and your first and last name.""
+"
+ CALL GET-NAME
+ PRINTI """And what is "
+ PRINTD YOUR-COLOR
+ PRINTI ", "
+ CALL TITLE-NAME
+ PRINTI "?""
+"
+ CALL GET-COLOR
+ PRINTI """Jolly good! The spare bedroom is decorated in "
+ CALL PRINT-COLOR
+ PRINTI "! "
+ PRINTI "Please enter."""
+ CRLF
+ CALL GATE-OPENS
+ RTRUE
+
+
+ .FUNCT GATE-OPENS
+ EQUAL? HERE,DRIVEWAY \FALSE
+ FSET? FRONT-GATE,OPENBIT /FALSE
+ REMOVE VOICE
+ FSET FRONT-GATE,OPENBIT
+ FCLEAR FRONT-GATE,LOCKED
+ CALL THIS-IS-IT,FRONT-GATE
+ PRINTI "The "
+ EQUAL? DRAGON-EYE-COLOR,1 /?PRG16
+ LESS? DRAGON-EYE-COLOR,0 \?CND10
+ PRINTI "red "
+?CND10: SET 'DRAGON-EYE-COLOR,1
+ PRINTI "eye turns green, and the "
+?PRG16: PRINTD FRONT-GATE
+ PRINTR " creaks open."
+
+
+ .FUNCT FRONT-GATE-F
+ EQUAL? PRSA,V?KNOCK \?CCL3
+ PRINTR "Apparently no one hears you."
+?CCL3: EQUAL? PRSA,V?UNLOCK,V?SHAKE,V?MUNG \?CCL8
+ PRINTR "Except for your rattling the gate, the silence remains unbroken."
+?CCL8: EQUAL? PRSA,V?LEAP,V?CLIMB-ON,V?BOARD \?CCL12
+ PRINT TOO-SLIPPERY
+ RTRUE
+?CCL12: EQUAL? PRSA,V?WALK-TO \?CCL16
+ EQUAL? HERE,DRIVEWAY,COURTYARD /?CCL16
+ CALL PERFORM,PRSA,COURTYARD
+ RTRUE
+?CCL16: EQUAL? PRSA,V?OPEN \?CCL20
+ FSET? FRONT-GATE,LOCKED \FALSE
+ PRINTR "It seems to be locked."
+?CCL20: EQUAL? PRSA,V?SEARCH-FOR /?CTR26
+ EQUAL? PRSA,V?SEARCH,V?LOOK-ON,V?EXAMINE \?CCL27
+?CTR26: EQUAL? HERE,DRIVEWAY \FALSE
+ CALL TELL-ABOUT-DRAGON
+ RTRUE
+?CCL27: IN? VOICE,HERE \FALSE
+ CALL VOICE-F
+ RSTACK
+
+
+ .FUNCT COURTYARD-F,RARG=0
+ EQUAL? RARG,M-ENTER \?CCL3
+ IN? FRIEND,LIMBO \?CND4
+ MOVE FRIEND,COURTYARD
+?CND4: ZERO? DRAGON-EYE-COLOR /?CND6
+ SET 'DRAGON-EYE-COLOR,0
+?CND6: FSET? FRONT-GATE,LOCKED /FALSE
+ FCLEAR FRONT-GATE,OPENBIT
+ FSET FRONT-GATE,LOCKED
+ PRINTI "The "
+ PRINTD FRONT-GATE
+ PRINTR " closes and locks behind you."
+?CCL3: EQUAL? RARG,M-LOOK \?CCL14
+ FSET? HERE,TOUCHBIT /?CND15
+ FSET HERE,TOUCHBIT
+ PRINTI "As flood lights blaze on, you look around. "
+?CND15: CALL TELL-LIKE-BROCHURE
+ PRINT DARK-TURRETS
+ RTRUE
+?CCL14: EQUAL? RARG,M-FLASH \FALSE
+ IN? FRIEND,COURTYARD \FALSE
+ FSET? FRIEND,TOUCHBIT /FALSE
+ ZERO? CLOCK-WAIT \FALSE
+ FSET FRIEND,TOUCHBIT
+ FCLEAR FRIEND,NDESCBIT
+ SET 'FOLLOWER,FRIEND
+ SET 'QCONTEXT,FRIEND
+ CALL QUEUE,I-FRIEND-GREETS,0
+ CALL QUEUE,I-TOUR,7
+ CALL ESTABLISH-GOAL,BUTLER,COURTYARD
+ FCLEAR FRONT-DOOR,LOCKED
+ SET 'QCONTEXT,FRIEND
+ CALL THIS-IS-IT,FRIEND
+ PUTP FRIEND,P?LDESC,12
+ SET 'AWAITING-REPLY,FRIEND-C
+ CALL QUEUE,I-REPLY,CLOCKER-RUNNING
+ PRINTI "
+Someone comes running out of the wing to greet you. "
+ GETP FRIEND,P?TEXT
+ PRINT STACK
+ PRINTI " You recognize her as your friend, "
+ PRINTD FRIEND
+ PRINTI " Lynd.
+"""
+ CALL PRINT-NAME,FIRST-NAME
+ PRINTI "!"" she cries with outflung arms. ""You sweet thing, to answer my letter in person this way! And all the people I wrote about are here tonight for Lionel's memorial birthday dinner!""
+After a warm hug, she asks anxiously, """
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """
+"
+ RETURN 2
+
+
+ .FUNCT TELL-LIKE-BROCHURE,DR=0
+ PRINTI "It looks even lovelier than it sounds in the "
+ PRINTD BROCHURE
+ PRINTC 46
+ ZERO? DR /?CND3
+ CALL OPEN-DOOR?,DR
+?CND3: CRLF
+ RTRUE
+
+
+ .FUNCT MAZE-EXIT,RM
+ EQUAL? OHERE,GARDEN \?CCL3
+ SET 'RM,COURTYARD
+ JUMP ?CND1
+?CCL3: SET 'RM,GARDEN
+?CND1: EQUAL? WINNER,PLAYER /?PRG6
+ RETURN RM
+?PRG6: PRINTI "You stumble blindly through the maze and suddenly emerge in the "
+ PRINTD RM
+ PRINTI ".
+"
+ RETURN RM
+
+
+ .FUNCT MAZE-F,RARG=0
+ ZERO? RARG \FALSE
+ EQUAL? PRSA,V?THROUGH \FALSE
+ EQUAL? HERE,MAZE \FALSE
+ CALL MAZE-EXIT
+ CALL GOTO,STACK
+ RSTACK
+
+
+ .FUNCT GARDEN-F,RARG=0,OBJ
+ EQUAL? RARG,M-LOOK \?CCL3
+ PRINTI "Here in the central garden the plants quake nervously in the mist. In the very middle is a "
+ PRINTD POND
+ PRINTR "."
+?CCL3: ZERO? RARG \FALSE
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?EXAMINE \FALSE
+ CALL FIND-FLAG-HERE,SECRETBIT >OBJ
+ ZERO? OBJ /FALSE
+ CALL DISCOVER,OBJ,HERE
+ RTRUE
+
+
+ .FUNCT POND-F
+ EQUAL? PRSA,V?THROUGH /?PRG6
+ EQUAL? PRSA,V?SWIM,V?LEAP,V?BOARD \?CCL3
+?PRG6: PRINTR "On second thought, it looks too dark and slippery."
+?CCL3: EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-INSIDE,V?EXAMINE \FALSE
+ CALL TELL-AS-WELL-AS,POND,STR?228
+ RTRUE
+
+
+ .FUNCT FRONT-DOOR-F
+ EQUAL? PRSA,V?WALK-TO \FALSE
+ CALL OUTSIDE?,HERE
+ ZERO? STACK /?CCL6
+ CALL PERFORM,V?WALK-TO,COURTYARD
+ RTRUE
+?CCL6: CALL PERFORM,V?WALK-TO,FOYER
+ RTRUE
+
+
+ .FUNCT FOYER-F,RARG=0
+ EQUAL? RARG,M-ENTER \?CCL3
+ FSET? FOYER,TOUCHBIT /FALSE
+ FSET FOYER,TOUCHBIT
+ PRINTI "As you enter the foyer, you're overwhelmed by the English past. Those barbarous times when Jack's ancestors had to shut themselves up in a fortified castle have softened into gracious country living. Yet "
+ PRINTD FRIEND
+ PRINTR " is clearly anxious."
+?CCL3: EQUAL? RARG,M-LOOK \?CCL10
+ CALL TELL-LIKE-BROCHURE
+ CALL DESCRIBE-CONTENTS,COAT-RACK
+ RTRUE
+?CCL10: EQUAL? RARG,M-FLASH \FALSE
+ FSET? LORD,TOUCHBIT /TRUE
+ IN? LORD,FOYER \TRUE
+ CALL LORD-INTRO
+ RTRUE
+
+
+ .FUNCT DESCRIBE-CONTENTS,OBJ
+ CALL FIND-FLAG-NOT,OBJ,NDESCBIT
+ ZERO? STACK /FALSE
+ PRINTI "On"
+ CALL PRINTT,OBJ
+ PRINTI " you see"
+ CALL PRINT-CONTENTS,OBJ
+ PRINTI ".
+"
+ RTRUE
+
+
+ .FUNCT UMBRELLA-STAND-F
+ FCLEAR UMBRELLA-STAND,NDESCBIT
+ EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL3
+ CALL YOU-CANT
+ RSTACK
+?CCL3: EQUAL? PRSA,V?TAKE \?CCL5
+ CALL NOUN-USED?,W?UMBRELLA
+ ZERO? STACK /FALSE
+ PRINTR "But it's not raining!"
+?CCL5: EQUAL? PRSA,V?SEARCH-FOR /?CCL12
+ EQUAL? PRSA,V?SEARCH,V?LOOK-INSIDE,V?EXAMINE \FALSE
+?CCL12: IN? CANE,UMBRELLA-STAND \?CCL17
+ FSET? CANE,NDESCBIT \?CCL17
+ FCLEAR CANE,NDESCBIT
+ FCLEAR CANE,SECRETBIT
+ FSET CANE,SEENBIT
+ FSET CANE,TAKEBIT
+ FSET CANE,TOUCHBIT
+ CALL THIS-IS-IT,CANE
+ PRINTR "Among the umbrellas there's a cane that looks odd."
+?CCL17: EQUAL? PRSA,V?EXAMINE \?CCL23
+ CALL TELL-LIKE-BROCHURE
+ RSTACK
+?CCL23: CALL TELL-AS-WELL-AS,UMBRELLA-STAND,STR?229
+ RTRUE
+
+
+ .FUNCT DRAWING-ROOM-F,RARG=0,PER
+ EQUAL? RARG,M-BEG \?CCL3
+ EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL6
+ EQUAL? PRSO,SECRET-DRAWING-DOOR \?CCL6
+ CALL YOU-CANT,FALSE-VALUE,PLAYER,STR?231
+ RTRUE
+?CCL6: CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,M-LOOK \?CCL10
+ CALL TELL-LIKE-BROCHURE,SECRET-DRAWING-DOOR
+ RSTACK
+?CCL10: EQUAL? RARG,M-FLASH \FALSE
+ IN? DEALER,DRAWING-ROOM \FALSE
+ FSET? DEALER,TOUCHBIT /FALSE
+ FSET DEALER,TOUCHBIT
+ LOC PAINTER
+ EQUAL? STACK,HERE,PSEUDO-OBJECT \FALSE
+ GETP DEALER,P?LDESC
+ EQUAL? STACK,2 \FALSE
+ PRINTI "A tall graceful older couple in evening clothes are chatting and "
+ GET LDESC-STRINGS,2
+ PRINT STACK
+ PRINTI ".
+"
+ SET 'QCONTEXT,PAINTER
+ LOC LORD
+ EQUAL? STACK,HERE,PSEUDO-OBJECT \?CCL27
+ SET 'PER,LORD
+ JUMP ?CND25
+?CCL27: LOC FRIEND
+ EQUAL? STACK,HERE,PSEUDO-OBJECT \?CND25
+ CALL THIS-IS-IT,FRIEND
+ SET 'PER,FRIEND
+?CND25: ZERO? PER /FALSE
+ PRINTD PER
+ PRINT INTRODUCES
+ PRINTI "them as Montague Hyde and Vivien Pentreath.
+Hyde smiles and bows stiffly. And Vivien murmurs in an attractively low voice, ""How do you do, "
+ CALL TITLE-NAME
+ ZERO? STACK /?PRG38
+ PRINTC 46
+?PRG38: PRINTI """
+""Believe it or not, this young "
+ ZERO? GENDER-KNOWN \?CCL42
+ PRINTI "person"
+ JUMP ?PRG51
+?CCL42: FSET? PLAYER,FEMALE \?PRG49
+ PRINTI "lady"
+ JUMP ?PRG51
+?PRG49: PRINTI "man"
+?PRG51: PRINTI " is a famous American detective,"" "
+ PRINTD PER
+ PRINTI " tells them.
+"
+ LOC FRIEND
+ EQUAL? STACK,HERE,PSEUDO-OBJECT \FALSE
+ PRINTI """Not a police detective, of course,"" "
+ PRINTD FRIEND
+ PRINTI " adds as they both stiffen, ""but a solver of all sorts of mysteries in the States. We're hoping to find out who or what is haunting "
+ PRINTD CASTLE
+ PRINTR "."""
+
+
+ .FUNCT LOVER-PIC-F
+ EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTI "It's a portrait by "
+ PRINTD PAINTER
+ PRINTI " of "
+ PRINTD LOVER
+ PRINTI ", a lovely young woman with flowing blonde hair, standing on a grassy slope, gazing out to sea. It's painted in pastel tones, which emphasize "
+ PRINTD LOVER
+ PRINTR "'s violet eyes. There's something ethereal and fairylike about her. Ironically, her silvery white, sleeveless gown is the very one she was wearing at the time of her accident."
+
+
+ .FUNCT TAPESTRY-F
+ EQUAL? PRSA,V?SEARCH,V?EXAMINE \?CCL3
+ CALL TELL-LIKE-BROCHURE
+ EQUAL? VARIATION,PAINTER-C \TRUE
+ PRINTR "Someone has added a star in red thread on the maiden's ARM."
+?CCL3: EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND \FALSE
+ FSET SECRET-DRAWING-DOOR,TOUCHBIT
+ CALL THIS-IS-IT,SECRET-DRAWING-DOOR
+ PRINTI "Hidden behind the "
+ PRINTD TAPESTRY
+ PRINTI " is"
+ CALL PRINTT,SECRET-DRAWING-DOOR
+ PRINTR "!"
+
+
+ .FUNCT GREAT-HALL-F,RARG=0
+ EQUAL? RARG,M-LOOK \?CCL3
+ CALL TELL-LIKE-BROCHURE
+ CALL GREAT-HALL-IS-FLOORED
+ RTRUE
+?CCL3: EQUAL? RARG,M-FLASH \FALSE
+ IN? DEB,GREAT-HALL \FALSE
+ FSET? DEB,TOUCHBIT /FALSE
+ ZERO? CLOCK-WAIT \FALSE
+ FSET DEB,TOUCHBIT
+ FCLEAR DEB,NDESCBIT
+ LOC OFFICER
+ EQUAL? STACK,HERE,PSEUDO-OBJECT \?PRG18
+ GETP DEB,P?LDESC
+ EQUAL? STACK,1 \?PRG18
+ PRINTI "A young couple are dancing to the faint sound of rock music from a portable radio on a table nearby.
+"
+?PRG18: GETP DEB,P?TEXT
+ PRINT STACK
+ CRLF
+ CALL COMMON-DESC,OFFICER
+ PRINTI "
+They stop dancing, turn off the radio, and greet you."
+ LOC FRIEND
+ EQUAL? STACK,HERE,PSEUDO-OBJECT \?CND22
+ PRINTC 32
+ PRINTD FRIEND
+ PRINT INTRODUCES
+ PRINTI "them as the Honourable Iris Vane and Lt. Ian Fordyce of Her Majesty's Coldstream Guards.
+"
+?CND22: PUTP DEB,P?LDESC,0
+ CALL THIS-IS-IT,DEB
+ PUTP OFFICER,P?LDESC,0
+ CALL THIS-IS-IT,OFFICER
+ CALL QUEUE,I-TOUR,0
+ CALL QUEUE,I-REPLY,CLOCKER-RUNNING
+ ZERO? GENDER-KNOWN /?CTR27
+ FSET? PLAYER,FEMALE /?CCL28
+?CTR27: ZERO? GENDER-KNOWN \?PRG36
+ PRINTI """What a lark, having a Yank sleuth in our midst"
+ JUMP ?PRG38
+?PRG36: PRINTI """My dear! What a handsome addition to your guest list"
+?PRG38: PRINTI "!"" chirps Iris. Her green eyes sparkle "
+ ZERO? GENDER-KNOWN \?PRG45
+ PRINTI "a trifle malic"
+ JUMP ?PRG47
+?PRG45: PRINTI "flirtat"
+?PRG47: PRINTI "iously as she offers you her delicate hand. "
+ ZERO? GENDER-KNOWN \?CCL51
+ SET 'QCONTEXT,OFFICER
+ PUTP OFFICER,P?LDESC,12
+ SET 'AWAITING-REPLY,OFFICER-1-R
+ PRINTI """I always find Americans so innocently fascinating! I'm sure you'll have loads to tell us about the baffling mysteries you've solved...""
+""Belt up, Iris, there's a good girl,"" says Ian. Flashing you an apologetic smile, he comments, ""Spoiled rotten, I'm afraid. Personally I should like nothing better than to hear all about your mystery cases. But first tell us: "
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """
+"
+ RETURN 2
+?CCL51: SET 'QCONTEXT,DEB
+ PUTP DEB,P?LDESC,12
+ SET 'AWAITING-REPLY,DEB-C
+ PRINTI """Tell me, "
+ CALL TITLE-NAME
+ PRINTI " -- "
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """
+"
+ RETURN 2
+?CCL28: EQUAL? VARIATION,FRIEND-C \?CND60
+ PRINTD DEB
+ PRINTI " pulls Jack aside, whispers something to him, and giggles."
+ CRLF
+?CND60: SET 'QCONTEXT,OFFICER
+ CALL THIS-IS-IT,OFFICER
+ PUTP OFFICER,P?LDESC,12
+ SET 'AWAITING-REPLY,OFFICER-2-R
+ PRINTI """I say!"" exclaims Ian, bringing your hand to his lips. His glance runs swiftly over your face and figure with an air of expert appraisal. """
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """
+"
+ RETURN 2
+
+
+ .FUNCT GREAT-HALL-IS-FLOORED
+ PRINTI "The hall is floored with black and white marble tiles. They've been worn smooth by footsteps over the centuries, especially near the archway to the "
+ PRINTD DRAWING-ROOM
+ PRINTR "."
+
+
+ .FUNCT ARMOR-F
+ FCLEAR ARMOR,NDESCBIT
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTR "This is a full suit of steel body armour. It creaks as you walk past."
+?CCL3: EQUAL? PRSA,V?SEARCH-FOR /?CCL7
+ EQUAL? PRSA,V?SEARCH,V?OPEN,V?LOOK-INSIDE \FALSE
+?CCL7: IN? CLUE-3,ARMOR \FALSE
+ FSET? CLUE-3,SECRETBIT \FALSE
+ FSET ARMOR,OPENBIT
+ CALL DISCOVER,CLUE-3
+ RSTACK
+
+
+ .FUNCT SECRET-SITTING-DOOR-F
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE \FALSE
+ PRINTR "It seems to be stuck closed."
+
+
+ .FUNCT SITTING-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG \?CCL3
+ CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,M-LOOK \FALSE
+ CALL TELL-LIKE-BROCHURE
+ PRINTI "It's a comfy place to read a book, play the piano, or just relax."
+ CRLF
+ CALL DESCRIBE-CONTENTS,PIANO
+ CALL DESCRIBE-CONTENTS,WRITING-DESK
+ RTRUE
+
+
+ .FUNCT WYVERN-F
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE \?CCL3
+ CALL SECRET-SITTING-DOOR-F
+ RSTACK
+?CCL3: EQUAL? PRSA,V?SIT-AT /?CTR4
+ EQUAL? PRSA,V?SIT,V?CLIMB-ON,V?BOARD \?CCL5
+?CTR4: MOVE PLAYER,WYVERN
+ PRINTR "Okay, but it's not that comfortable."
+?CCL5: EQUAL? PRSA,V?TURN /?CCL11
+ EQUAL? PRSA,V?SLAP,V?RUB,V?PUSH /?CCL11
+ EQUAL? PRSA,V?MUNG,V?MOVE-DIR,V?MOVE \FALSE
+?CCL11: CALL OPEN-SECRET,STR?232,WYVERN,SECRET-SITTING-DOOR
+ FCLEAR SECRET-SITTING-DOOR,OPENBIT
+ PRINTI "Before you know it, "
+ IN? PLAYER,WYVERN \?PRG22
+ PRINTI "you're dumped into it.
+"
+ CALL GOTO,SITTING-PASSAGE
+ RTRUE
+?PRG22: PRINTR "it creaks upward to close again."
+
+
+ .FUNCT WRITING-DESK-F
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ IN? LETTER-MAID,WRITING-DESK \FALSE
+ FCLEAR LETTER-MAID,NDESCBIT
+ RFALSE
+
+
+ .FUNCT PIANO-F,O,N=0
+ EQUAL? PRSA,V?LISTEN \?CCL3
+ LOC PIANO
+ FIRST? STACK >O /?PRG4
+?PRG4: ZERO? O /FALSE
+ FSET? O,PERSONBIT \?CCL10
+ GETP O,P?LDESC
+ EQUAL? STACK,22 \?CCL10
+ PRINTR "The music sounds lovely."
+?CCL10: NEXT? O >O /?PRG4
+ JUMP ?PRG4
+?CCL3: EQUAL? PRSA,V?PLAY \?CCL16
+ PUTP WINNER,P?LDESC,22
+ ZERO? PRSI /?PRG21
+ FSET? PRSI,PERSONBIT \?PRG21
+ PUTP PRSI,P?LDESC,22
+?PRG21: CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?241
+ PRINTI " down"
+ FIRST? SITTING-ROOM >O /?PRG23
+?PRG23: ZERO? O \?CCL27
+ ZERO? N \?REP24
+ PRINTI " and"
+?REP24: ZERO? N \?CCL43
+ CALL HE-SHE-IT,WINNER,-1,STR?242
+ JUMP ?PRG62
+?CCL27: GETP O,P?LDESC
+ EQUAL? STACK,22 \?CND25
+ EQUAL? O,WINNER /?CND25
+ ZERO? N \?CND35
+ PRINTI " with"
+?CND35: INC 'N
+ PRINTC 32
+ PRINTD O
+ PRINTI " and"
+?CND25: NEXT? O >O /?PRG23
+ JUMP ?PRG23
+?CCL43: GETP PLAYER,P?LDESC
+ EQUAL? STACK,22 \?PRG58
+ PRINTI " you "
+ EQUAL? N,1 \?PRG56
+ PRINTI "both"
+ JUMP ?PRG60
+?PRG56: PRINTI "all"
+ JUMP ?PRG60
+?PRG58: PRINTI " they"
+?PRG60: PRINTI " play"
+?PRG62: PRINTI " a lovely "
+ GET PIANO-PIECES,N
+ PRINT STACK
+ GRTR? N,2 \?PRG68
+ PRINTI "tet"
+?PRG68: PRINTR "."
+?CCL16: CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ IN? MUSIC,PIANO \FALSE
+ FCLEAR MUSIC,NDESCBIT
+ RFALSE
+
+
+ .FUNCT MUSIC-F
+ EQUAL? PRSA,V?PLAY,V?LISTEN \?CCL3
+ IN? PIANO,HERE \?CCL6
+ CALL PIANO-F
+ RTRUE
+?CCL6: CALL NOT-HERE,PIANO
+ RTRUE
+?CCL3: CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ FCLEAR MUSIC,NDESCBIT
+ EQUAL? PRSA,V?READ /?CTR9
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE,V?EXAMINE \FALSE
+?CTR9: CALL NOT-HOLDING?,PRSO
+ ZERO? STACK \TRUE
+ PRINTI "It's "
+ EQUAL? VARIATION,PAINTER-C \?CCL19
+ PRINTR "Beethoven's ""Suite No. 9."" Someone has drawn a star in red ink over the first four letters of the word ""SUITe."""
+?CCL19: EQUAL? VARIATION,DOCTOR-C \?PRG26
+ PRINTR """Funeral March of a Marionette."""
+?PRG26: PRINTR "theme music from the American radio show, ""A Prairie Home Companion."""
+
+
+ .FUNCT CORR-1-F,ARG=0
+ EQUAL? ARG,M-LOOK \FALSE
+ PRINTI "The "
+ PRINTD CORR-1
+ PRINTI " goes between the two great halls to east and west. Behind sliding doors, the "
+ PRINTD DINING-ROOM
+ PRINTI " is north and the "
+ PRINTD SITTING-ROOM
+ PRINTR " is south."
+
+
+ .FUNCT DINING-ROOM-F,RARG=0,N
+ EQUAL? RARG,M-LOOK \?CCL3
+ PRINT DINING-DESC
+ RTRUE
+?CCL3: EQUAL? RARG,M-ENTER \?CCL7
+ CALL QUEUED?,I-DINNER-SIT
+ ZERO? STACK /?CCL10
+ IN? LORD,DINING-ROOM \?CCL13
+ CALL QUEUE,I-DINNER-SIT,1
+ RFALSE
+?CCL13: CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,BUTLER >N
+ ZERO? N /FALSE
+ CALL HE-SHE-IT,N,TRUE-VALUE
+ PRINTR " says, ""Let's wait for his lordship."""
+?CCL10: ZERO? MISSED-DINNER /FALSE
+ IN? FRIEND,HERE \FALSE
+ SET 'MISSED-DINNER,FALSE-VALUE
+ FSET? DINING-ROOM,TOUCHBIT /?CND22
+ FSET DINING-ROOM,TOUCHBIT
+ PRINT DINING-DESC
+?CND22: CALL THIS-IS-IT,FRIEND
+ SET 'QCONTEXT,FRIEND
+ PRINTD FRIEND
+ PRINTI " says, ""We didn't know when you would come to dinner, so we started without you."
+ EQUAL? LIONEL-SPEAKS-COUNTER,INIT-LIONEL-SPEAKS-COUNTER \?CCL30
+ PRINTR """"
+?CCL30: CALL QUEUE,I-DINNER-TALK,1
+ PRINTI " And "
+ ZERO? LIONEL-SPEAKS-COUNTER \?PRG40
+ PRINTI "then Lionel spoke"
+ JUMP ?PRG42
+?PRG40: PRINTI "now Lionel is speaking"
+?PRG42: PRINTR " on tape!"""
+?CCL7: EQUAL? RARG,M-EXIT \FALSE
+ CALL QUEUED?,I-LIONEL-SPEAKS
+ ZERO? STACK /FALSE
+ PRINTD LORD
+ PRINTI " politely but firmly vetoes any such move. """
+ EQUAL? LIONEL-SPEAKS-COUNTER,INIT-LIONEL-SPEAKS-COUNTER \?PRG57
+ PRINTI "It's annoying enough to have the servants abscond at dinner time,"" he points out drily. "
+ PRINT JACK-THINKS-GLADYS
+ PRINTR " Cigars and port will be time enough for that sort of aggro!"""
+?PRG57: PRINTR "Let's hear what old Lionel has to say."""
+
+
+ .FUNCT I-DINNER-TALK,GARG=0
+ FSET DINNER,TAKEBIT
+ FCLEAR DINNER,TRYTAKEBIT
+ MOVE DINNER-2,TABLE-DINING
+ CALL QUEUED?,I-LIONEL-SPEAKS
+ CALL DINNER-TALK,STACK
+ RETURN 2
+
+
+ .FUNCT DINNER-TALK,N,X
+ MOVE PLAYER,CHAIR-DINING
+ PRINTI "Several people glance at your outfit with "
+ EQUAL? NOW-WEARING,DINNER-OUTFIT /?CCL5
+ SET 'WRONG-OUTFIT,2
+ PRINTI "dis"
+ JUMP ?PRG8
+?CCL5: SET 'WRONG-OUTFIT,1
+?PRG8: PRINTI "approval."
+ ZERO? WASHED \?CND10
+ PRINTI " They whisper about how dirty you still look."
+?CND10: CRLF
+ EQUAL? LIONEL-SPEAKS-COUNTER,INIT-LIONEL-SPEAKS-COUNTER \?CND14
+ PRINTD LORD
+ PRINTI " announces his engagement to "
+ PRINTD FRIEND
+ PRINTI ", prompting various reactions from the guests.
+The dinner is excellent, with a flow of subdued conversation...
+"
+?CND14: PUTP LORD,P?LDESC,0
+ SET 'KEEP-WAITING,TRUE-VALUE
+ CALL V-WAIT,N,FALSE-VALUE,TRUE-VALUE
+ RSTACK
+
+
+ .FUNCT POPULATION,RM,NOT1=0,NOT2=0,CNT=0,OBJ
+ FIRST? RM >OBJ /?KLU19
+?KLU19: ZERO? OBJ /FALSE
+?PRG3: FSET? OBJ,PERSONBIT \?CCL7
+ FSET? OBJ,INVISIBLE /?CCL7
+ ZERO? NOT1 /?PRD11
+ EQUAL? OBJ,NOT1 /?CCL7
+?PRD11: ZERO? NOT2 /?CTR6
+ EQUAL? OBJ,NOT2 /?CCL7
+?CTR6: INC 'CNT
+ JUMP ?CND5
+?CCL7: FSET? OBJ,CONTBIT \?CND5
+ CALL POPULATION,OBJ,NOT1,NOT2
+ ADD CNT,STACK >CNT
+?CND5: NEXT? OBJ >OBJ /?KLU20
+?KLU20: ZERO? OBJ \?PRG3
+ RETURN CNT
+
+
+ .FUNCT BUST-D,ARG
+ CALL THIS-IS-IT,COUSIN
+ PRINTI "A brooding bust of "
+ PRINTD COUSIN
+ PRINTI " (sculpted by "
+ PRINTD PAINTER
+ PRINTR ") is displayed in a corner."
+
+
+ .FUNCT BUST-F
+ EQUAL? PRSA,V?PUSH,V?OPEN,V?MOVE-DIR /?CTR2
+ EQUAL? PRSA,V?MOVE,V?LOOK-UNDER,V?EXAMINE /?CTR2
+ EQUAL? PRSA,V?TAKE \?CCL3
+ EQUAL? P-PRSA-WORD,W?RAISE,W?LIFT \?CCL3
+?CTR2: EQUAL? PRSA,V?EXAMINE \?PRG13
+ EQUAL? LIONEL-SPEAKS-COUNTER,INIT-LIONEL-SPEAKS-COUNTER \?PRG13
+ CALL TELL-LIKE-BROCHURE
+ RTRUE
+?PRG13: PRINTI "The "
+ PRINTD BUST
+ PRINTI " is hollow. When you lift it from its shelf, you discover"
+ CALL PRINTT,RECORDER
+ PRINTI " underneath, with an elaborate clockwork timer."
+ FSET BUST,OPENBIT
+ FSET RECORDER,SEENBIT
+ EQUAL? LIONEL-SPEAKS-COUNTER,INIT-LIONEL-SPEAKS-COUNTER /?CND15
+ PRINTR " Evidently the timer was set to play the tape during the usual dinner hour on this date."
+?CND15: CRLF
+ RTRUE
+?CCL3: EQUAL? PRSA,V?PLAY,V?LISTEN \FALSE
+ CALL QUEUED?,I-LIONEL-SPEAKS
+ ZERO? STACK /?PRG25
+ SET 'LIONEL-FORCED,TRUE-VALUE
+ CALL QUEUE,I-LIONEL-SPEAKS,1
+ RTRUE
+?PRG25: PRINT TIMER-PREVENTS-IT
+ RTRUE
+
+
+ .FUNCT RECORDER-F
+ EQUAL? PRSA,V?PLAY,V?LISTEN,V?EXAMINE \?CCL3
+ CALL BUST-F
+ RSTACK
+?CCL3: EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \?CCL5
+ PRINT TIMER-PREVENTS-IT
+ RTRUE
+?CCL5: EQUAL? PRSA,V?TAKE \?CCL9
+ PRINTR "It's fastened tightly to the shelf."
+?CCL9: CALL SPEAKING-VERB?,RECORDER
+ ZERO? STACK /FALSE
+ CALL WONT-HELP-TO-TALK-TO,RECORDER
+ RSTACK
+
+
+ .FUNCT TABLE-DINING-F
+ EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+ FSET? DINNER,TAKEBIT \FALSE
+ CALL TELL-AS-WELL-AS,TABLE-DINING,STR?245
+ RTRUE
+?CCL3: EQUAL? PRSA,V?SIT-AT \?CCL8
+ CALL PERFORM,V?SIT,CHAIR-DINING
+ RTRUE
+?CCL8: EQUAL? PRSA,V?SIT \FALSE
+ CALL HAR-HAR
+ RTRUE
+
+
+ .FUNCT PUNCHBOWL-F,OBJ
+ EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL3
+ CALL HAR-HAR
+ RSTACK
+?CCL3: EQUAL? PRSA,V?PUT-UNDER \?CCL5
+ EQUAL? PRSI,PUNCHBOWL \FALSE
+ FSET PRSO,NDESCBIT
+ MOVE PRSO,SIDEBOARD
+ PRINTR "Okay."
+?CCL5: EQUAL? PRSA,V?TAKE,V?MOVE,V?LOOK-UNDER \FALSE
+ EQUAL? PRSO,PUNCHBOWL \FALSE
+ CALL FIND-FLAG,SIDEBOARD,NDESCBIT >OBJ
+ ZERO? OBJ /?PRG20
+ FSET OBJ,TAKEBIT
+ FSET OBJ,TOUCHBIT
+ FCLEAR OBJ,NDESCBIT
+ MOVE OBJ,PLAYER
+ CALL THIS-IS-IT,OBJ
+ PRINTI "You find"
+ CALL PRINTT,OBJ
+ PRINTR " underneath, so you take it."
+?PRG20: PRINTR "There's nothing under it."
+
+
+ .FUNCT DINNER-D,ARG,L
+ LOC DINNER >L
+ EQUAL? L,KITCHEN,SIDEBOARD \FALSE
+ PRINTI "An appetizing aroma wafts from an array of covered dishes"
+ EQUAL? L,KITCHEN \?CCL8
+ PRINTI " sitting about"
+ JUMP ?PRG14
+?CCL8: EQUAL? L,SIDEBOARD \?PRG14
+ PRINTI " on the "
+ PRINTD SIDEBOARD
+?PRG14: PRINTR "."
+
+
+ .FUNCT DINNER-F,I,L
+ LOC DINNER >L
+ EQUAL? PRSA,V?DRESS \?CCL3
+ CALL META-LOC,DINNER-OUTFIT
+ EQUAL? HERE,STACK \?CCL6
+ CALL PERFORM,V?WEAR,DINNER-OUTFIT
+ RTRUE
+?CCL6: CALL NOT-HERE,DINNER-OUTFIT
+ RTRUE
+?CCL3: EQUAL? PRSA,V?EAT \?CCL8
+ PRINTR "You take a bite and find it delicious."
+?CCL8: EQUAL? PRSA,V?EXAMINE \?CCL13
+ PRINTI "A lovely assortment of fish, fowl, greens, and sweets fills the "
+ EQUAL? L,KITCHEN,SIDEBOARD \?PRG21
+ PRINTR "dishes."
+?PRG21: PRINTR "plate."
+?CCL13: EQUAL? PRSA,V?LAMP-ON,V?TAKE \?CCL24
+ FSET? DINNER,TRYTAKEBIT \FALSE
+ EQUAL? L,KITCHEN \?CCL30
+ PRINTR "It's not ready yet."
+?CCL30: EQUAL? L,SIDEBOARD \FALSE
+ CALL I-DINNER-SIT >L
+ ZERO? L /?PRG38
+ RETURN L
+?PRG38: PRINTR "You look around and notice that no one else is eating yet."
+?CCL24: EQUAL? PRSA,V?WAIT-FOR \?CCL41
+ CALL QUEUED?,I-DINNER >I
+ ZERO? I /FALSE
+ SUB DINNER-TIME,PRESENT-TIME
+ CALL V-WAIT,STACK,FALSE-VALUE,TRUE-VALUE
+ RTRUE
+?CCL41: EQUAL? PRSA,V?WALK-TO \FALSE
+ EQUAL? HERE,DINING-ROOM \?CCL49
+ CALL META-LOC,DINNER
+ CALL PERFORM,PRSA,STACK
+ RTRUE
+?CCL49: CALL PERFORM,PRSA,DINING-ROOM
+ RTRUE
+
+
+ .FUNCT BACKSTAIRS-F,RARG=0
+ EQUAL? RARG,M-BEG \?CCL3
+ CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,M-LOOK \FALSE
+ PRINTI "You can go east to the "
+ PRINTD DINING-ROOM
+ PRINTI " or down narrow stairs to the "
+ PRINTD KITCHEN
+ PRINTC 46
+ CALL OPEN-DOOR?,SECRET-DINING-DOOR
+ CRLF
+ RTRUE
+
+
+ .FUNCT KITCHEN-F,RARG=0
+ EQUAL? RARG,M-LOOK \FALSE
+ PRINTI "The "
+ PRINTD KITCHEN
+ PRINTI " is large yet cramped. From here, you can go west to the tower "
+ PRINTD BASEMENT
+ PRINTR ", east to the servants' quarters, or up the stairs."
+
+
+ .FUNCT LANTERN
+ EQUAL? PRSA,V?AIM \?CCL3
+ CALL START-SENTENCE,LAMP
+ PRINTI " shines in all "
+ PRINTD INTDIR
+ PRINTR "s, so you can't point it."
+?CCL3: EQUAL? PRSA,V?USE \?CCL7
+ CALL PERFORM,V?LAMP-ON,PRSO
+ RTRUE
+?CCL7: EQUAL? PRSA,V?EXAMINE \FALSE
+ PRINTI "The lamp "
+ FSET? LAMP,ONBIT \?PRG17
+ PRINTR "is on."
+?PRG17: PRINTR "is turned off."
+
+
+ .FUNCT GALLERY-F,RARG=0
+ EQUAL? RARG,M-BEG \?CCL3
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?PRD8
+ EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-BEHIND,V?EXAMINE \FALSE
+?PRD8: EQUAL? PRSO,WALL,PAINTING-GALLERY \FALSE
+ FCLEAR PEEPHOLE,SECRETBIT
+ PRINTI "You discover"
+ CALL HIM-HER-IT,PEEPHOLE
+ PRINTR " in the eye of one ancestor."
+?CCL3: EQUAL? RARG,M-LOOK \FALSE
+ PRINTI "The "
+ PRINTD GALLERY
+ PRINTI " spans the top of the double stairways. You can go east to "
+ PRINTD YOUR-ROOM
+ PRINTI " or west to "
+ PRINTD VIVIEN-ROOM
+ PRINTI ". Hallways lead to the northeast and northwest. On the wall is a "
+ PRINTD PAINTING-GALLERY
+ PRINTI " of "
+ PRINTD LORD
+ PRINTR "'s ancestors."
+
+
+ .FUNCT PICTURE-F,RARG=0
+ EQUAL? PRSA,V?EXAMINE \FALSE
+ CALL TELL-LIKE-BROCHURE
+ RSTACK
+
+
+ .FUNCT BATHROOM-F
+ EQUAL? PRSA,V?WALK-TO,V?THROUGH /?CCL3
+ EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?BOARD \FALSE
+?CCL3: EQUAL? HERE,YOUR-ROOM \?CCL8
+ CALL PERFORM,PRSA,YOUR-BATHROOM
+ RTRUE
+?CCL8: CALL RANDOM-PSEUDO
+ RSTACK
+
+
+ .FUNCT FIREPLACE-F
+ EQUAL? PRSA,V?LOOK-UP,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+ EQUAL? HERE,IAN-ROOM \?PRG7
+ CALL TELL-IAN-FIREPLACE
+ CRLF
+ RTRUE
+?PRG7: PRINTR "It's empty, except for soot on the walls."
+?CCL3: EQUAL? PRSA,V?LAMP-ON \?CCL10
+ CALL WONT-HELP
+ RSTACK
+?CCL10: EQUAL? PRSA,V?PUT-IN \FALSE
+ PRINTI "When you think how sooty"
+ CALL PRINTT,PRSO
+ PRINTR " would get, you change your mind."
+
+
+ .FUNCT BED-PSEUDO
+ EQUAL? PRSA,V?THROUGH,V?SIT /?CCL3
+ EQUAL? PRSA,V?LIE,V?CLIMB-ON,V?BOARD \FALSE
+?CCL3: CALL WONT-HELP
+ RSTACK
+
+
+ .FUNCT NIGHTSTAND-LG-F
+ EQUAL? HERE,JACK-ROOM \?CCL3
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CTR2
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+?CTR2: IN? NECKLACE-OF-D,JACK-ROOM \?PRG11
+ CALL DISCOVER,NECKLACE-OF-D
+ RSTACK
+?PRG11: PRINT NOTHING-NEW
+ RTRUE
+?CCL3: EQUAL? HERE,JACK-ROOM \?CCL14
+ EQUAL? PRSA,V?PUT-IN \?CCL14
+ EQUAL? PRSO,NECKLACE-OF-D \?CCL14
+ MOVE NECKLACE-OF-D,JACK-ROOM
+ FSET NECKLACE-OF-D,NDESCBIT
+ CALL OKAY
+ RSTACK
+?CCL14: CALL RANDOM-PSEUDO
+ RSTACK
+
+
+ .FUNCT DRESSING-TABLE-LG-F
+ EQUAL? PRSA,V?SEARCH-FOR /?CTR2
+ EQUAL? PRSA,V?SEARCH,V?CLOSE,V?OPEN \?CCL3
+?CTR2: CALL NOTHING-SPECIAL
+ RSTACK
+?CCL3: EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
+ EQUAL? HERE,WENDISH-ROOM \?CCL10
+ CALL WENDISH-STUFF-D
+ RTRUE
+?CCL10: EQUAL? HERE,TAMARA-ROOM \?CCL12
+ CALL DRESSING-TABLE-TAM
+ CRLF
+ RTRUE
+?CCL12: CALL NOTHING-SPECIAL
+ RSTACK
+
+
+ .FUNCT MIRROR-GLOBAL-F
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ FSET? HERE,WORNBIT /?CCL5
+ CALL NOT-HERE,MIRROR-GLOBAL
+ RSTACK
+?CCL5: EQUAL? PRSA,V?MOVE /?CTR6
+ EQUAL? PRSA,V?LOOK-INSIDE,V?FIX,V?EXAMINE \?CCL7
+?CTR6: CALL DRESSING-MIRROR-F
+ RSTACK
+?CCL7: CALL RANDOM-PSEUDO
+ RSTACK
+
+
+ .FUNCT OPEN-DOOR?,DR,NOSP=0
+ FSET? DR,OPENBIT \FALSE
+ ZERO? NOSP \?CND4
+ PRINTC 32
+?CND4: CALL THIS-IS-IT,DR
+ CALL DOOR-ROOM,HERE,DR >NOSP
+ ZERO? NOSP /?PRG10
+ FSET NOSP,SEENBIT
+?PRG10: PRINTI "And there's a wide-open "
+ PRINTD DR
+ PRINTC 33
+ RTRUE
+
+
+ .FUNCT YOUR-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG \?CCL3
+ EQUAL? PRSA,V?WALK-TO \?CCL6
+ EQUAL? PRSO,BED \?CCL6
+ CALL PERFORM,V?LIE,BED
+ RTRUE
+?CCL6: CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,P?WEST,P?OUT /?CTR9
+ EQUAL? RARG,P?EAST,P?IN \?CCL10
+?CTR9: ZERO? NOW-WEARING \?CCL15
+ PRINTI "Before you even take a step, you"
+ PRINT REMEMBER-NOT-DRESSED
+ PRINTC 46
+ CRLF
+ RETURN 2
+?CCL15: EQUAL? RARG,P?EAST,P?IN \FALSE
+ CALL ENTER-PASSAGE
+ RTRUE
+?CCL10: EQUAL? RARG,M-ENTER \?CCL24
+ CALL QUEUE,I-TOUR,0
+ RSTACK
+?CCL24: EQUAL? RARG,M-LOOK \FALSE
+ CALL START-SENTENCE,YOUR-ROOM
+ PRINTI " is decorated in shades of "
+ CALL PRINT-COLOR
+ PRINTI ". You see "
+ PRINTD YOUR-BATHROOM
+ PRINTI " to the north and a cozy "
+ PRINTD FIREPLACE
+ PRINTI " in one corner. The room is furnished with a bed, a "
+ PRINTD NIGHTSTAND
+ PRINTI " with a lamp on it, a "
+ PRINTD CHEST-OF-DRAWERS
+ PRINTI ", a "
+ PRINTD WARDROBE
+ PRINTI ", a "
+ PRINTD YOUR-CHAIR
+ PRINTI ", and a "
+ PRINTD DRESSING-TABLE
+ PRINTI " with mirror and bench. There's also a full-length "
+ PRINTD YOUR-MIRROR
+ PRINTC 46
+ CALL OPEN-DOOR?,SECRET-YOUR-DOOR
+ CRLF
+ CALL DESCRIBE-CONTENTS,BED
+ CALL DESCRIBE-CONTENTS,YOUR-CHAIR
+ FSET? HERE,TOUCHBIT /TRUE
+ LOC BUTLER
+ EQUAL? STACK,GALLERY,YOUR-ROOM /TRUE
+ CALL QUEUED?,I-DINNER
+ GRTR? 2,STACK /TRUE
+ CALL IN-MOTION?,FRIEND
+ ZERO? STACK \TRUE
+ PUTP FRIEND,P?LINE,0
+ SET 'QCONTEXT,FRIEND
+ CALL HE-SHE-IT,FRIEND,TRUE-VALUE
+ IN? FRIEND,HERE /?PRG43
+ MOVE FRIEND,HERE
+ PRINTI " enters and"
+?PRG43: PRINTI " says, ""Let's chat a bit"
+ CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,FRIEND
+ ZERO? STACK \?PRG49
+ PRINTI ", now that we're alone"
+?PRG49: PRINTR "."""
+
+
+ .FUNCT ENTER-PASSAGE
+ PRINTI "You step down into a narrow "
+ PRINTD PASSAGE
+ PRINTR "."
+
+
+ .FUNCT BED-F
+ EQUAL? PRSA,V?THROUGH,V?BOARD \?CCL3
+ CALL PERFORM,V?LIE,PRSO
+ RTRUE
+?CCL3: EQUAL? PRSA,V?CLIMB-ON \FALSE
+ CALL PERFORM,V?SIT,PRSO
+ RTRUE
+
+
+ .FUNCT NIGHTSTAND-F
+ EQUAL? PRSA,V?LOOK-ON,V?EXAMINE \FALSE
+ CALL TELL-AS-WELL-AS,NIGHTSTAND,FALSE-VALUE,NIGHTLAMP
+ RTRUE
+
+
+ .FUNCT TELL-AS-WELL-AS,CONT,STR,OBJ=0,X=0
+ FSET? CONT,SURFACEBIT \?CCL3
+ PRINTC 79
+ JUMP ?PRG8
+?CCL3: FSET CONT,OPENBIT
+ PRINTC 73
+?PRG8: PRINTC 110
+ CALL PRINTT,CONT
+ PRINTI " you see"
+ CALL FIND-FLAG-NOT,CONT,NDESCBIT
+ ZERO? STACK /?PRG13
+ SET 'X,TRUE-VALUE
+ JUMP ?CND10
+?PRG13: PRINTI " only"
+?CND10: ZERO? OBJ /?PRG20
+ CALL PRINTT,OBJ
+ JUMP ?CND15
+?PRG20: PRINT STR
+?CND15: ZERO? X /?PRG26
+ PRINTI ", as well as"
+ CALL PRINT-CONTENTS,CONT
+?PRG26: PRINTR "."
+
+
+ .FUNCT DRESSING-MIRROR-F
+ EQUAL? PRSA,V?TURN,V?RUB,V?PUSH /?PRG6
+ EQUAL? PRSA,V?MOVE-DIR,V?MOVE,V?FIX \?CCL3
+?PRG6: PRINTI "Now you can see "
+ PRINTD PLAYER
+ PRINTR " perfectly."
+?CCL3: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
+ PRINTI "You look "
+ ZERO? WASHED /?PRG17
+ PRINTI "smashing"
+ JUMP ?PRG19
+?PRG17: PRINTI "a trifle dirty"
+?PRG19: PRINTI " in your "
+ ZERO? NOW-WEARING \?PRG26
+ PRINTI "birthday suit"
+ JUMP ?PRG28
+?PRG26: PRINTD NOW-WEARING
+?PRG28: PRINTR "."
+
+
+ .FUNCT YOUR-MIRROR-F
+ EQUAL? PRSA,V?SEARCH /?CTR2
+ EQUAL? PRSA,V?RUB,V?LOOK-BEHIND,V?EXAMINE /?CTR2
+ EQUAL? PRSA,V?SEARCH-FOR \?CCL3
+ EQUAL? PRSO,YOUR-MIRROR \?CCL3
+?CTR2: IN? PLAYER,HERE /?PRG11
+ CALL TOO-BAD-SIT-HIDE
+?PRG11: PRINTI "By running your fingers around the frame, you discover"
+ CALL PRINTT,YOUR-SWITCH
+ CALL THIS-IS-IT,YOUR-SWITCH
+ PRINTR "."
+?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL16
+ FSET? SECRET-YOUR-DOOR,TOUCHBIT \?CCL16
+ CALL PERFORM,PRSA,SECRET-YOUR-DOOR
+ RTRUE
+?CCL16: EQUAL? PRSA,V?TURN /?PRG24
+ EQUAL? PRSA,V?TAKE,V?RUB,V?PUSH /?PRG24
+ EQUAL? PRSA,V?MOVE-DIR,V?MOVE,V?FIX \?CCL20
+?PRG24: PRINTR "It seems to be fastened to the wall."
+?CCL20: CALL DRESSING-MIRROR-F
+ RSTACK
+
+
+ .FUNCT YOUR-SWITCH-F
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTR "You can't tell by looking what it might do."
+?CCL3: EQUAL? PRSA,V?OPEN \?CCL7
+ FCLEAR YOUR-SWITCH,SECRETBIT
+ CALL OKAY,SECRET-YOUR-DOOR,STR?66
+ RTRUE
+?CCL7: EQUAL? PRSA,V?CLOSE \?CCL9
+ FCLEAR YOUR-SWITCH,SECRETBIT
+ CALL OKAY,SECRET-YOUR-DOOR,STR?61
+ RTRUE
+?CCL9: EQUAL? PRSA,V?TURN,V?SLAP /?CCL11
+ EQUAL? PRSA,V?RUB,V?PUSH,V?MOVE-DIR /?CCL11
+ EQUAL? PRSA,V?MOVE,V?LAMP-ON,V?LAMP-OFF \FALSE
+?CCL11: CALL OPEN-SECRET,FALSE-VALUE,YOUR-SWITCH,SECRET-YOUR-DOOR
+ RTRUE
+
+
+ .FUNCT YOUR-BATHROOM-F,RARG=0
+ EQUAL? RARG,M-BEG \?CCL3
+ EQUAL? PRSA,V?WALK-TO \FALSE
+ EQUAL? PRSO,YOUR-BATHROOM \FALSE
+ PRINT AHHH
+ RTRUE
+?CCL3: EQUAL? RARG,M-LOOK \?CCL12
+ PRINTI "From the look of it, "
+ PRINTD YOUR-BATHROOM
+ PRINTR " was added in recently. It is comfortable and inviting, especially for Cornwall."
+?CCL12: EQUAL? RARG,M-EXIT \?CCL16
+ ZERO? NOW-WEARING \FALSE
+ CALL FIND-FLAG,YOUR-ROOM,PERSONBIT >RARG
+ ZERO? RARG /FALSE
+ PRINTI "You peek in and see "
+ PRINTD RARG
+ PRINTI ", then"
+ PRINT REMEMBER-NOT-DRESSED
+ PRINTC 46
+ CRLF
+ RETURN 2
+?CCL16: ZERO? RARG \FALSE
+ EQUAL? PRSA,V?UNLOCK /?CCL29
+ EQUAL? PRSA,V?LOCK,V?CLOSE,V?OPEN \FALSE
+?CCL29: CALL PERFORM,PRSA,YOUR-BATHROOM-DOOR
+ RTRUE
+
+
+ .FUNCT TOILET-PSEUDO
+ EQUAL? PRSA,V?LOOK-INSIDE \?CCL3
+ CALL NOTHING-SPECIAL
+ RTRUE
+?CCL3: EQUAL? PRSA,V?USE,V?SIT \FALSE
+ PRINT AHHH
+ RTRUE
+
+
+ .FUNCT BATH-PSEUDO
+ EQUAL? PRSA,V?LAMP-ON,V?FILL,V?CLOSE \?CCL3
+ EQUAL? WINNER,PLAYER \TRUE
+ PRINTR "Okay, then what?"
+?CCL3: EQUAL? PRSA,V?THROUGH /?CTR8
+ EQUAL? PRSA,V?TAKE,V?SWIM,V?BOARD \?CCL9
+?CTR8: ZERO? NOW-WEARING \?PRG21
+ FIRST? PLAYER \?CND15
+ PRINTI "First you drop everything...
+"
+ CALL ROB,PLAYER,HERE
+?CND15: GET P-ITBL,P-VERBN
+ PUT STACK,0,W?BATHE
+ CALL V-WAIT,9,FALSE-VALUE,TRUE-VALUE
+ SET 'WASHED,TRUE-VALUE
+ PRINTI "You're now squeaky clean. After toweling off, you feel nicely relaxed and ready to tackle the mystery of "
+ PRINTD CASTLE
+ PRINTR "."
+?PRG21: PRINTI "You almost step into the tub before you realize that your "
+ PRINTD NOW-WEARING
+ PRINTR " would get wet."
+?CCL9: CALL RANDOM-PSEUDO
+ RSTACK
+
+
+ .FUNCT IRIS-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG,M-EXIT \?CCL3
+ EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL6
+ EQUAL? PRSO,SECRET-IRIS-DOOR \?CCL6
+ CALL YOU-CANT,FALSE-VALUE,PLAYER,STR?231
+ RTRUE
+?CCL6: CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,P?EAST,P?IN \?CCL10
+ CALL ENTER-PASSAGE
+ RTRUE
+?CCL10: EQUAL? RARG,M-LOOK \FALSE
+ PRINTD IRIS-ROOM
+ PRINTI " is furnished much like yours, but with a canopied bed and "
+ PRINTD IRIS-CHAIR
+ PRINTC 46
+ CALL OPEN-DOOR?,SECRET-IRIS-DOOR
+ CRLF
+ RTRUE
+
+
+ .FUNCT WENDISH-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG,M-EXIT \?CCL3
+ CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,P?NORTH,P?IN \?CCL6
+ CALL ENTER-PASSAGE
+ RTRUE
+?CCL6: EQUAL? RARG,M-LOOK \FALSE
+ PRINTI "The room shows the doctor's precise, scientific personality. Everything is in its place. "
+ CALL WENDISH-STUFF-D
+ PRINTI "His "
+ PRINTD WENDISH-KIT
+ PRINTI " is on a marble-topped console attached to the wall. On the north wall is"
+ CALL PRINTT,CANDLE
+ PRINTC 46
+ CALL OPEN-DOOR?,SECRET-WENDISH-DOOR
+ CRLF
+ RTRUE
+
+
+ .FUNCT CANDLE-F
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTR "It seems to be fastened loosely to the wall."
+?CCL3: EQUAL? PRSA,V?TURN,V?PUSH,V?MOVE-DIR /?CCL7
+ EQUAL? PRSA,V?MOVE,V?LOOK-UNDER,V?LOOK-BEHIND /?CCL7
+ EQUAL? PRSA,V?TAKE \FALSE
+ EQUAL? P-PRSA-WORD,W?RAISE,W?LIFT \FALSE
+?CCL7: CALL OPEN-SECRET,STR?249,CANDLE,SECRET-WENDISH-DOOR
+ RSTACK
+
+
+ .FUNCT WENDISH-STUFF-D,X
+ PRINTI "Several "
+ PRINTD WENDISH-STUFF
+ PRINTI "s are lying on the "
+ PRINTD DRESSING-TABLE-LG
+ PRINTR "."
+
+
+ .FUNCT WENDISH-STUFF-F
+ EQUAL? PRSA,V?READ /?PRG6
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+?PRG6: PRINTR "They are too technical to understand."
+?CCL3: CALL RANDOM-PSEUDO
+ RSTACK
+
+
+ .FUNCT WENDISH-KIT-F,X
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CTR2
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+?CTR2: CALL SEARCH-KIT-BOX,WENDISH-KIT,STR?250
+ RTRUE
+?CCL3: EQUAL? PRSA,V?TAKE \FALSE
+ EQUAL? PRSO,WENDISH-KIT \FALSE
+ CALL YOU-SHOULDNT
+ RSTACK
+
+
+ .FUNCT SEARCH-KIT-BOX,OBJ,STR,X=0
+ FSET OBJ,OPENBIT
+ IN? LENS-BOX,OBJ \?CCL3
+ SET 'X,LENS-BOX
+ JUMP ?CND1
+?CCL3: IN? VIVIEN-DIARY,OBJ \?CCL5
+ SET 'X,VIVIEN-DIARY
+ JUMP ?CND1
+?CCL5: IN? COSTUME,OBJ \?CCL7
+ SET 'X,COSTUME
+ JUMP ?CND1
+?CCL7: IN? BLOWGUN,OBJ \?CND1
+ SET 'X,BLOWGUN
+?CND1: ZERO? X /?CCL11
+ CALL DISCOVER,X
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /TRUE
+ PRINTC 89
+ PRINT OU-STOP-SEARCHING
+ PRINTR "."
+?CCL11: CALL TELL-AS-WELL-AS,OBJ,STR
+ RTRUE
+
+
+ .FUNCT VIVIEN-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG,M-EXIT \?CCL3
+ CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,P?SOUTH,P?IN \?CCL5
+ CALL ENTER-PASSAGE
+ RTRUE
+?CCL5: EQUAL? RARG,M-LOOK \FALSE
+ PRINTI "The room is untidy, probably because Vivien is an artist. Sketches and garments are strewn on the canopied bed and "
+ PRINTD VIVIEN-CHAIR
+ PRINTI ". Leaning against the wall are stretched canvases, and a fold-up easel for her outdoor art work. On the tallboy are a sketch pad, and a paint-smeared "
+ PRINTD VIVIEN-BOX
+ PRINTI ". On the south wall is a cheval glass and"
+ CALL PRINTT,FIGURINE
+ PRINTC 46
+ CALL OPEN-DOOR?,SECRET-VIVIEN-DOOR
+ CRLF
+ CALL DESCRIBE-CONTENTS,VIVIEN-CHAIR
+ RTRUE
+
+
+ .FUNCT VIVIEN-BOX-F,X
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CTR2
+ EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+?CTR2: CALL SEARCH-KIT-BOX,VIVIEN-BOX,STR?251
+ RTRUE
+?CCL3: EQUAL? PRSA,V?TAKE \FALSE
+ EQUAL? PRSO,VIVIEN-BOX \FALSE
+ CALL YOU-SHOULDNT
+ RSTACK
+
+
+ .FUNCT FIGURINE-F
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTR "It's turned toward the wall, so you can't see its face."
+?CCL3: EQUAL? PRSA,V?TURN /?CCL7
+ EQUAL? PRSA,V?PUSH,V?MOVE-DIR,V?MOVE \FALSE
+?CCL7: CALL OPEN-SECRET,STR?161,FIGURINE,SECRET-VIVIEN-DOOR
+ RSTACK
+
+
+ .FUNCT IAN-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG,M-EXIT \?CCL3
+ CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,P?NORTH,P?IN \?CCL5
+ CALL ENTER-PASSAGE
+ RTRUE
+?CCL5: EQUAL? RARG,M-LOOK \FALSE
+ PRINTD IAN-ROOM
+ PRINTI " has rich wood panelling, a four-poster bed, Victorian washstand, and "
+ PRINTD IAN-CHAIR
+ PRINTI ". "
+ CALL TELL-IAN-FIREPLACE
+ CRLF
+ CALL OPEN-DOOR?,SECRET-IAN-DOOR,TRUE-VALUE
+ ZERO? STACK /TRUE
+ CRLF
+ RTRUE
+
+
+ .FUNCT TELL-IAN-FIREPLACE
+ PRINTI "In the "
+ PRINTD FIREPLACE
+ PRINTI ", the fender has flashy grillwork, and the "
+ PRINTD ANDIRON
+ PRINTI "s have fancy carved heads."
+ RTRUE
+
+
+ .FUNCT ANDIRON-F
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTR "By looking closely, you find that the head can turn."
+?CCL3: EQUAL? PRSA,V?TURN,V?RUB /?CCL7
+ EQUAL? PRSA,V?PUSH,V?MOVE-DIR,V?MOVE \FALSE
+?CCL7: CALL OPEN-SECRET,STR?161,ANDIRON,SECRET-IAN-DOOR
+ RSTACK
+
+
+ .FUNCT HYDE-ROOM-F,RARG=0
+ EQUAL? RARG,M-BEG,M-EXIT \?CCL3
+ EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL6
+ EQUAL? PRSO,SECRET-HYDE-DOOR \?CCL6
+ CALL YOU-CANT,FALSE-VALUE,PLAYER,STR?231
+ RTRUE
+?CCL6: CALL SECRET-CHECK,RARG
+ RSTACK
+?CCL3: EQUAL? RARG,P?NORTH,P?IN \?CCL10
+ CALL ENTER-PASSAGE
+ RTRUE
+?CCL10: EQUAL? RARG,M-LOOK \FALSE
+ PRINTD HYDE-ROOM
+ PRINTI " has many tasteful antiques, such as "
+ CALL PRINTA,HYDE-CHAIR
+ PRINTI " in one corner."
+ CALL OPEN-DOOR?,SECRET-HYDE-DOOR
+ CRLF
+ RTRUE
+
+ .ENDI
diff --git a/castle.zil b/castle.zil
new file mode 100644
index 0000000..e0dfd6b
--- /dev/null
+++ b/castle.zil
@@ -0,0 +1,2804 @@
+"CASTLE for MOONMIST
+Copyright (C) 1986 Infocom, Inc. All rights reserved."
+
+<OBJECT CASTLE
+ (IN GLOBAL-OBJECTS)
+ (DESC "Tresyllian Castle")
+ (ADJECTIVE TRESYLLIAN)
+ (SYNONYM CASTLE WING HOUSE)
+ (FLAGS NARTICLEBIT SEENBIT)
+ (ACTION CASTLE-F)>
+
+<GLOBAL DARK-TURRETS "The dark stone turrets rise toward the misty sky.|">
+
+<ROUTINE CASTLE-F ()
+ <COND (<VERB? EXAMINE FIND>
+ <COND (<OUTSIDE? ,HERE>
+ <COND (<VERB? FIND>
+ <TELL "It's right here!" CR>)
+ (T
+ <TELL ,DARK-TURRETS>
+ <RTRUE>)>)
+ (<OR <DOBJ? CASTLE>
+ <NOT <FSET? ,HERE ,WEARBIT>>>
+ <TELL "It's all around you!" CR>)
+ (T <NOT-HERE ,TOWER>)>)
+ (<VERB? BOARD ;CLIMB-UP THROUGH WALK-TO>
+ <COND (<DOBJ? CASTLE>
+ <COND (<OUTSIDE? ,HERE>
+ <COND (<NOT <FSET? ,FRIEND ,TOUCHBIT>>
+ <PERFORM ,PRSA ,COURTYARD>)
+ (T <PERFORM ,PRSA ,FOYER>)>
+ <RTRUE>)
+ (T <HAR-HAR>)>)
+ (T
+ <COND (<OR <OUTSIDE? ,HERE>
+ <FSET? ,HERE ,WEARBIT>>
+ <PERFORM ,PRSA ,OLD-GREAT-HALL>
+ ;<OKAY>
+ <RTRUE>)
+ (T <HAR-HAR>)>)>)
+ (<VERB? LEAVE>
+ <COND (<NOT <OUTSIDE? ,HERE>>
+ <PERFORM ,V?WALK-TO ,COURTYARD>
+ <RTRUE>)
+ (T <HAR-HAR>)>)>>
+
+<OBJECT TOWER
+ (IN GLOBAL-OBJECTS)
+ (DESC "tower")
+ (ADJECTIVE STONE ;BATTLE TOWER)
+ (SYNONYM TOWER TURRET KEEP)
+ (FLAGS SEENBIT)
+ (ACTION TOWER-F)>
+
+<ROUTINE TOWER-F ()
+ <COND (<VERB? BOARD EXAMINE FIND THROUGH WALK-TO LEAVE>
+ <CASTLE-F>)
+ (<REMOTE-VERB?>
+ <RFALSE>)
+ (<FSET? ,HERE ,WEARBIT> ;"WING-ROOMS"
+ <NOT-HERE ,TOWER>
+ <RTRUE>)>>
+
+<OBJECT MOON
+ (IN LOCAL-GLOBALS)
+ (DESC "full moon")
+ (ADJECTIVE FULL ;"LOVELY RISING")
+ (SYNONYM MOON MIST SKY)
+ (FLAGS SEENBIT)
+ (ACTION MOON-F)>
+
+<ROUTINE MOON-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL "Strange shapes of mist dance in front of the " 'MOON "." CR>)
+ (<VERB? EAT SMELL>
+ <PERFORM ,V?SMELL ,OCEAN>
+ <RTRUE>)>>
+
+<OBJECT OCEAN
+ (IN LOCAL-GLOBALS)
+ (DESC "ocean")
+ (ADJECTIVE BLUE)
+ (SYNONYM SEA OCEAN BREAKER)
+ (FLAGS SEENBIT VOWELBIT)
+ (ACTION OCEAN-F)>
+
+<ROUTINE OCEAN-F ()
+ <COND (<VERB? LISTEN>
+ <TELL "The breakers seem to be warning you."
+ ;"The shooshing breakers could lull you to sleep." CR>)
+ (<VERB? THROUGH WALK-TO>
+ <TELL "The cliffs are too dangerous in the dark." CR>)>>
+[
+<ROUTINE CAR-DOOR-PSEUDO ()
+ <COND (<VERB? OPEN CLOSE LOCK UNLOCK>
+ <NO-NEED ;"do that">)>>
+
+<OBJECT CAR
+ (IN DRIVEWAY ;ROOMS)
+ (FLAGS ;ONBIT VEHBIT SEENBIT CONTBIT OPENBIT)
+ (CAPACITY 9999)
+ (DESC "sports car" ;"Porsche")
+ (ADJECTIVE MY NEW ;SPORT SPORTS LITTLE F.C F.C)
+ (SYNONYM ;PORSCHE CAR)
+ ;(GENERIC GENERIC-CAR)
+ (DESCFCN TELL-ABOUT-CAR)
+ (ACTION CAR-F)>
+
+;< (GLOBAL ;CAR-WINDOW FRONT-GATE CAR MOON OCEAN COURTYARD)
+ (THINGS <PSEUDO ( CAR DOOR CAR-DOOR-PSEUDO)
+ ( <> BLAST NULL-F)>)
+ (LINE 1)
+ (STATION DRIVEWAY)
+ (CHARACTER 2) ;"floor number"
+ (OUT PER DECAR-F)>
+
+<ROUTINE DRIVING? ()
+ <COND (<AND <NOT <ZERO? ,P-PRSA-WORD>>
+ <NOT <EQUAL? ,P-PRSA-WORD ,W?DRIVE ,W?ENTER ,W?STEER>>
+ ;<NOT <EQUAL? ,P-PRSA-WORD ,W?GO>>>
+ <RFALSE>)
+ (<VERB? CLIMB-UP THROUGH WALK-TO>
+ <COND (<AND <VERB? THROUGH>
+ <DOBJ? CAR>>
+ <COND (<T? ,PRSI> ;"DRIVE CAR THRU object"
+ <COND (<NOT <==? ,HERE <META-LOC ,PRSI>>>
+ <SETG PRSO ,PRSI>
+ <RTRUE>)
+ (T <RFALSE>)>)
+ (T ;"DRIVE CAR IN"
+ <SETG PRSO ,FRONT-GATE>
+ <RTRUE>)>)
+ (<NOT <==? ,HERE <META-LOC ,PRSO>>>
+ <RTRUE>)
+ (T <RFALSE>)>)
+ (<VERB? LEAVE>
+ <COND (<NOT <EQUAL? ,PRSO ;<> ,ROOMS ,CAR>>
+ <RTRUE>)>)
+ (<VERB? WALK>
+ <COND (<OR <NOT <ZERO? ,P-PRSA-WORD>>
+ <NOT <DOBJ? P?OUT>>>
+ <RTRUE>)>)>>
+
+<ROUTINE CAR-F ("OPTIONAL" (ARG <>) "AUX" S)
+ <SET S ,HERE ;<GETP ,CAR ,P?STATION>>
+ <COND (<EQUAL? .ARG ,M-BEG>
+ <COND (<DRIVING?>
+ <COND (<DOBJ? FRONT-GATE>
+ <COND (<VERB? THROUGH>
+ <COND (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (<EQUAL? .S ,DRIVEWAY>
+ <PERFORM ,V?WALK-TO ,COURTYARD>
+ <RTRUE>)
+ (T
+ <PERFORM ,V?WALK-TO ,DRIVEWAY>
+ <RTRUE>)>)
+ (T <WALK-WITHIN-ROOM>)>)
+ (<EQUAL? .S ,DRIVEWAY>
+ <COND (<VERB? CLIMB-UP THROUGH WALK-TO>
+ <COND (<EQUAL? ,DRIVEWAY <META-LOC ,PRSO>>
+ <WALK-WITHIN-ROOM>)
+ (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T ;<DOBJ? COURTYARD>
+ <CAR-TO-COURTYARD>)>)
+ (<VERB? LEAVE>
+ <COND (<DOBJ? COURTYARD>
+ <HAR-HAR>)
+ (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T ;<DOBJ? DRIVEWAY>
+ <CAR-TO-COURTYARD>)>)
+ (<OR <DOBJ? P?SOUTH P?IN>
+ <AND <DOBJ? INTDIR> <ADJ-USED? ,W?SOUTH>>>
+ <COND (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T <CAR-TO-COURTYARD>)>)
+ (T ;<DOBJ? P?NORTH>
+ <SETG CLOCK-WAIT T>
+ <TELL ,CASTLE-IS-SOUTH>
+ <RTRUE>
+ ;<YOU-CANT "drive">)>)
+ (T ;<EQUAL? .S ,COURTYARD>
+ <COND (<VERB? CLIMB-UP THROUGH WALK-TO>
+ <COND (<EQUAL? ,COURTYARD <META-LOC ,PRSO>>
+ ;<EQUAL? ,PRSO <> ,COURTYARD ,CASTLE>
+ <WALK-WITHIN-ROOM>)
+ (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T ;<DOBJ? DRIVEWAY>
+ <CAR-TO-DRIVEWAY>)>)
+ (<VERB? LEAVE>
+ <COND (<DOBJ? DRIVEWAY>
+ <HAR-HAR>)
+ (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T ;<DOBJ? COURTYARD>
+ <CAR-TO-DRIVEWAY>)>)
+ (<OR <DOBJ? P?NORTH>
+ <AND <DOBJ? INTDIR> <ADJ-USED? ,W?NORTH>>>
+ <COND (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T <CAR-TO-DRIVEWAY>)>)
+ (<DOBJ? P?OUT>
+ <COND (<EQUAL? ,P-PRSA-WORD <> ,W?GO>
+ <RFALSE>)
+ (<NOT <FSET? ,FRONT-GATE ,OPENBIT>>
+ <TOO-BAD-BUT ,FRONT-GATE "closed">)
+ (T <CAR-TO-DRIVEWAY>)>)
+ (T <YOU-CANT "drive">)>)
+ ;(T <YOU-CANT "drive">)>)
+ (<AND <VERB? WALK> <DOBJ? P?OUT>>
+ <MOVE ,WINNER ,HERE>
+ <OWN-FEET>)
+ (<OR <VERB? FOLLOW STAND WALK>
+ <AND <VERB? LEAVE THROUGH WALK-TO>
+ <NOT <ZERO? ,PRSO>>
+ <NOT <EQUAL? ,PRSO ,LUGGAGE ,ROOMS ,CAR>>>
+ ;<AND <VERB? WALK>
+ <NOT <DOBJ? P?OUT>>>>
+ ;<TELL "(You get out of the car first.)" CR>
+ <FIRST-YOU "leave" ,CAR>
+ ;<GOTO <GETP ,CAR ,P?STATION>>
+ <MOVE ,WINNER ,HERE>
+ <COND (<VERB? STAND> <RTRUE>)
+ (T <RFALSE>)>)
+ (<DOBJ? ROOMS>
+ <COND ;(<VERB? RING> ;"only if syntax allows it"
+ <PERFORM ,PRSA ,HORN>
+ <RTRUE>)
+ (<VERB? STOP>
+ <PERFORM ,PRSA ,CAR>
+ <RTRUE>)>)>)
+ (<EQUAL? .ARG ,M-LOOK>
+ <COND (<==? <LOC ,WINNER> ;,HERE ,CAR>
+ <TELL "You are sitting in your new little " 'CAR "." CR>)>
+ <RTRUE>)
+ (.ARG <RFALSE>)
+ (<VERB? EXAMINE>
+ <TELL-ABOUT-CAR>
+ <RTRUE>)
+ ;(<VERB? LAMP-ON>
+ <COND (<FSET? ,CAR ,MUNGBIT>
+ <TELL "The starter runs, but the engine won't start."CR>)
+ (<FSET? ,CAR ,FEMALE>
+ <TELL
+"You hear gears clash! The quiet engine must be running already." CR>)
+ (T
+ <FSET ,CAR ,FEMALE>
+ <TELL "The engine starts immediately." CR>)>)
+ ;(<VERB? LOCK>
+ <SETG CLOCK-WAIT T>
+ <TELL
+"(You're out in the country. You don't need to lock the car.)" CR>)
+ (<VERB? CLIMB-ON CLOSE OPEN LAMP-OFF LAMP-ON LOCK UNLOCK>
+ <NO-NEED "do that to">)>>
+
+<ROUTINE CAR-TO-COURTYARD ()
+ <MOVE ,CAR ,COURTYARD>
+ <TELL
+"Your headlights bravely pierce the gloom as you enter the " 'COURTYARD ".
+You get out of your car.|">
+ <GOTO ,COURTYARD>>
+
+<ROUTINE CAR-TO-DRIVEWAY ()
+ <SETG CLOCK-WAIT T>
+ <TELL "(You can't leave yet. There's a mystery to be solved!)" CR>>
+
+<ROUTINE TELL-ABOUT-CAR ("OPT" X)
+ <TELL "Your new little ">
+ <COND (<PRINT-COLOR> <TELL !\ >)>
+ <TELL 'CAR " is parked here." CR>>
+
+<OBJECT VOICE
+ (DESC "voice")
+ (ADJECTIVE LOUD ;CONCEAL HIDDEN LI\'S B\'S HIS)
+ (SYNONYM VOICE SPEAKER LOUDSPEAKER)
+ (FLAGS NDESCBIT)
+ (ACTION VOICE-F)>
+
+<ROUTINE VOICE-F ()
+ <COND (<EQUAL? ,HERE ;,CAR ,DRIVEWAY>
+ <COND (<AND <NOT <ZERO? ,DRAGON-EYE-COLOR>>
+ <OR <VERB? LISTEN>
+ <SPEAKING-VERB?>>>
+ <COND ;(<EQUAL? ,HERE ,CAR>
+ <TELL "You still can't make out what's being said." CR>)
+ (T <VOICE-SAYS>)>)>)
+ (<EQUAL? ,HERE ,DINING-ROOM>
+ <COND (<VERB? LISTEN>
+ <BUST-F>)>)>>
+
+<OBJECT HORN
+ (IN CAR)
+ (DESC "horn")
+ (ADJECTIVE MY MOTOR ;CAR)
+ (SYNONYM HORN)
+ (FLAGS NDESCBIT SEENBIT)
+ (ACTION HORN-F)>
+
+<ROUTINE HORN-F ()
+ <COND (<VERB? RING PUSH RUB SLAP SOUND>
+ <COND (<NOT <ZERO? <GETB ,LAST-NAME 0>>>
+ <COND (<GATE-OPENS> <RTRUE>)
+ (T <TELL "\"H-O-O-O-N-K!\"" CR>)>)
+ (T
+ <THIS-IS-IT ,VOICE>
+ <MOVE ,VOICE ,DRIVEWAY ;,CAR>
+ <PERFORM ,V?PUSH ,DRAGON-EYE>
+ <RTRUE>)
+ ;(T
+ <COND (<NOT <L? ,DRAGON-EYE-COLOR 0>>
+ <TELL "A red light flickers, on the gate. ">)>
+ <SETG DRAGON-EYE-COLOR -1>
+ <THIS-IS-IT ,VOICE>
+ <MOVE ,VOICE ,DRIVEWAY ;,CAR>
+ <TELL
+"You can hear a voice indistinctly. It seems to be coming from the gate."
+CR>)>)>>
+][
+<ROOM DRIVEWAY
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT)
+ (DESC "driveway")
+ (ADJECTIVE DRIVE)
+ (SYNONYM DRIVEWAY WAY)
+ (LINE 1)
+ (STATION COURTYARD ;DRIVEWAY)
+ (CHARACTER 2)
+ (GLOBAL FRONT-GATE MOON OCEAN WINDOW CHAIR)
+ (THINGS <PSEUDO ( CAR DOOR CAR-DOOR-PSEUDO)>)
+ (SOUTH TO COURTYARD IF FRONT-GATE IS OPEN)
+ (IN TO COURTYARD IF FRONT-GATE IS OPEN)
+ (ACTION DRIVEWAY-F)>
+
+<ROUTINE DRIVEWAY-F ("OPTIONAL" (RARG 0))
+ <COND (<==? .RARG ,M-BEG>
+ <COND (<VERB? YELL>
+ <PERFORM ,V?KNOCK ,FRONT-GATE>
+ <RTRUE>)
+ (<AND <NOT <ZERO? ,DRAGON-EYE-COLOR>>
+ <OR <SPEAKING-VERB?>
+ <AND <VERB? LISTEN>
+ <DOBJ? FRONT-GATE DRAGON DRAGON-EYE>>>>
+ <VOICE-SAYS>
+ <RTRUE>)>)
+ (<==? .RARG ,M-LOOK>
+ <TELL
+;"This is the end of the 'DRIVEWAY" "You are by the ">
+ <COND (<FSET? ,FRONT-GATE ,OPENBIT>
+ <TELL "open ">)>
+ <TELL
+'FRONT-GATE " of " 'CASTLE ". You can hear the ocean beating urgently
+against the rocks far below.|">
+ <TELL-ABOUT-DRAGON>
+ <RTRUE>)>>
+
+<OBJECT DRAGON
+ (IN DRIVEWAY ;FRONT-GATE)
+ (DESC "dragon")
+ ;(ADJECTIVE WINGED TWO-LEGGED)
+ (ADJECTIVE DRAGON WYVERN ORNAMENT ;"for possessives")
+ (SYNONYM DRAGON WYVERN ORNAMENT)
+ (FLAGS NDESCBIT TRYTAKEBIT)
+ (ACTION DRAGON-F)>
+
+<ROUTINE DRAGON-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE>
+ <TELL-ABOUT-DRAGON>
+ <RTRUE>)
+ (T ;<VERB? PUSH RUB TURN>
+ <DRAGON-EYE-F>)>>
+
+<ROUTINE TELL-ABOUT-DRAGON ()
+ <TELL
+"In the moonlit gloom, you can make out an ornament on the gate.
+It's a winged, two-legged dragon called a wyvern,
+which crests the " ,TRESYLLIAN " family's coat of
+arms.|
+The dragon appears in profile. ">
+ <THIS-IS-IT ,DRAGON-EYE>
+ <TELL-ABOUT-EYE>
+ <RTRUE>>
+
+<ROUTINE I-DRAGON-EYE ("OPTIONAL" (GARG <>))
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[I-DRAGON-EYE:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <COND (<ZERO? <GETB ,LAST-NAME 0>>
+ ;<NOT <L? ,DRAGON-EYE-COLOR 0>>
+ <PERFORM ,V?PUSH ,DRAGON-EYE>
+ <RFATAL>)>>
+
+<OBJECT DRAGON-EYE
+ (IN DRIVEWAY ;FRONT-GATE)
+ (DESC "dragon's eye")
+ (ADJECTIVE ;"WINGED TWO-LEGGED" DRAGON WYVERN WORM\'S RED GREEN DOOR)
+ (SYNONYM EYE DOORBELL ;BUTTON LIGHT BELL)
+ (GENERIC GENERIC-BELL)
+ (FLAGS NDESCBIT SEENBIT)
+ (ACTION DRAGON-EYE-F)>
+
+<ROUTINE DRAGON-EYE-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE>
+ <TELL-ABOUT-EYE>
+ <RTRUE>)
+ (<VERB? BOARD CLIMB-ON LEAP>
+ <TELL ,TOO-SLIPPERY>
+ <RTRUE>)
+ (<VERB? KNOCK MOVE MUNG PUSH RING RUB SLAP TURN>
+ <COND (<NOT <L? ,DRAGON-EYE-COLOR 0>>
+ <SETG DRAGON-EYE-COLOR -1>
+ <TELL "The " 'DRAGON-EYE " glows red. ">)>
+ <COND (<NOT <VERB? PUSH>>
+ <TELL "Evidently you just pushed a button. ">)>
+ <TELL "A voice comes from a hidden speaker. It says:|">
+ <VOICE-SAYS>
+ <RTRUE>)
+ (<VERB? TAKE>
+ <TELL "It's part of the " 'FRONT-GATE "." CR>)>>
+
+<ROUTINE TELL-ABOUT-EYE ()
+ <COND (<ZERO? ,DRAGON-EYE-COLOR>
+ <TELL "The moonlight glints on its lone visible eye." CR>)
+ (T
+ <TELL "The " 'DRAGON-EYE " is glowing ">
+ <COND (<G? ,DRAGON-EYE-COLOR 0>
+ <TELL "green." CR>)
+ (T <TELL "red." CR>)>)>>
+
+<ROUTINE VOICE-SAYS ()
+ <QUEUE I-DRAGON-EYE 0>
+ <COND (<NOT <ZERO? <GETB ,LAST-NAME 0>>>
+ <TELL "\"Please enter, ">
+ <COND (<TITLE-NAME> <TELL !\.>)>
+ <TELL "\"|">
+ <GATE-OPENS>
+ <RTRUE>)>
+ <QUEUE I-FRIEND-GREETS 6 ;9>
+ <TELL
+"\"Please announce " 'PLAYER ". State your title -- such as Lord or Lady,
+Sir or Dame, Mr. or Ms. -- and your first and last name.\"|">
+ <GET-NAME>
+ <TELL "\"And what is " 'YOUR-COLOR ", "TN"?\"|">
+ <GET-COLOR>
+ <TELL "\"Jolly good! The spare bedroom is decorated in ">
+ <PRINT-COLOR>
+ <TELL "! ">
+ ;<TELL "Are you driving, "TN"?\"">
+ <COND ;(<YES?>
+ <TELL ;"return to your car and ... a blast on "
+"\"Then please sound your motor horn when you are ready to enter.\""
+CR>)
+ (T
+ ;<TELL "\"Then p">
+ <TELL "Please enter.\"" CR>
+ <GATE-OPENS>)>
+ <RTRUE>>
+
+<ROUTINE GATE-OPENS ()
+ <COND (<AND <EQUAL? ,HERE ,DRIVEWAY>
+ <NOT <FSET? ,FRONT-GATE ,OPENBIT>>>
+ ;<ESTABLISH-GOAL ,FRIEND ,COURTYARD>
+ ;<ESTABLISH-GOAL ,LORD ,COURTYARD>
+ ;<PUT <GT-O ,FRIEND> ,GOAL-FUNCTION ,FRIEND-GREETS>
+ ;<PUT <GT-O ,LORD> ,GOAL-FUNCTION ,NULL-F ;,LORD-GREETS>
+ <REMOVE ,VOICE>
+ <FSET ,FRONT-GATE ,OPENBIT>
+ <FCLEAR ,FRONT-GATE ,LOCKED>
+ <THIS-IS-IT ,FRONT-GATE>
+ <TELL "The ">
+ <COND (<NOT <EQUAL? ,DRAGON-EYE-COLOR +1>>
+ <COND (<L? ,DRAGON-EYE-COLOR 0> <TELL "red ">)>
+ <SETG DRAGON-EYE-COLOR +1>
+ <TELL "eye turns green, and the ">)>
+ <TELL 'FRONT-GATE " creaks open." CR>)>>
+
+<GLOBAL DRAGON-EYE-COLOR:NUMBER 0>
+]
+<GLOBAL TOO-SLIPPERY "The thickening mist has made it too slippery.|">
+
+<OBJECT FRONT-GATE
+ (IN LOCAL-GLOBALS)
+ (DESC "front gate")
+ (ADJECTIVE FRONT TALL IRON)
+ (SYNONYM GATE ;DOOR)
+ (FLAGS TRANSBIT LOCKED DOORBIT SEENBIT ;SURFACEBIT)
+ (ACTION FRONT-GATE-F)>
+
+;<GLOBAL FRONT-GATE-KNOCKED:NUMBER 0>
+<ROUTINE FRONT-GATE-F ()
+ <COND (<VERB? KNOCK>
+ ;<SETG FRONT-GATE-KNOCKED <+ 1 ,FRONT-GATE-KNOCKED>>
+ <COND (T ;<ZERO? <MOD ,FRONT-GATE-KNOCKED 2>>
+ <TELL "Apparently no one hears you." CR>)
+ ;(T <TELL
+"Some of the castle windows show light, but the " 'COURTYARD " remains
+shrouded in silence." CR>)>)
+ (<VERB? MUNG SHAKE UNLOCK>
+ <TELL
+"Except for your rattling the gate, the silence remains unbroken." CR>)
+ (<VERB? BOARD CLIMB-ON LEAP>
+ <TELL ,TOO-SLIPPERY>
+ <RTRUE>)
+ (<AND <VERB? WALK-TO>
+ <NOT <EQUAL? ,HERE ,DRIVEWAY ,COURTYARD>>>
+ <PERFORM ,PRSA ,COURTYARD>
+ <RTRUE>)
+ (<VERB? OPEN>
+ <COND (<FSET? ,FRONT-GATE ,LOCKED>
+ <TELL "It seems to be locked." CR>)>)
+ (<VERB? EXAMINE LOOK-ON SEARCH SEARCH-FOR>
+ <COND (<OR <EQUAL? ,HERE ,DRIVEWAY>
+ ;<AND <EQUAL? ,HERE ,CAR>
+ <EQUAL? <GETP ,HERE ,P?STATION> ,DRIVEWAY>>>
+ <TELL-ABOUT-DRAGON>
+ <RTRUE>)
+ ;(<AND <IN? ,CLUE-4 ,FRONT-GATE>
+ <FSET? ,CLUE-4 ,SECRETBIT>>
+ <DISCOVER ,CLUE-4>)>)
+ (<IN? ,VOICE ,HERE>
+ <VOICE-F>)>>
+
+<ROOM COURTYARD
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT)
+ (DESC "courtyard")
+ (ADJECTIVE CASTLE COURT)
+ (SYNONYM COURTYARD YARD ROOM)
+ (LINE 1)
+ (STATION COURTYARD)
+ (CHARACTER 2)
+ (GLOBAL FRONT-GATE MOON FRONT-DOOR OLD-GREAT-HALL
+ OCEAN WINDOW CHAIR)
+ (THINGS <PSEUDO ( CAR DOOR CAR-DOOR-PSEUDO)>)
+ (OUT TO DRIVEWAY IF FRONT-GATE IS OPEN)
+ (NORTH TO DRIVEWAY IF FRONT-GATE IS OPEN)
+ (SW TO OLD-GREAT-HALL IF OLD-GREAT-HALL ;TOWER-DOOR IS OPEN)
+ (SOUTH TO FOYER IF FRONT-DOOR IS OPEN)
+ (IN TO FOYER IF FRONT-DOOR IS OPEN)
+ ;(IN "Do you want to go south or southwest?")
+ (EAST TO MAZE ;GARDEN)
+ (ACTION COURTYARD-F)>
+
+<ROUTINE COURTYARD-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-ENTER>
+ <COND (<IN? ,FRIEND ,LIMBO>
+ <MOVE ,FRIEND ,COURTYARD>)>
+ <COND (<NOT <ZERO? ,DRAGON-EYE-COLOR>>
+ <SETG DRAGON-EYE-COLOR 0>)>
+ <COND (<NOT <FSET? ,FRONT-GATE ,LOCKED>>
+ <FCLEAR ,FRONT-GATE ,OPENBIT>
+ <FSET ,FRONT-GATE ,LOCKED>
+ <TELL "The " 'FRONT-GATE " closes and locks behind you." CR>)>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
+ <FSET ,HERE ,TOUCHBIT>
+ <TELL "As flood lights blaze on, you look around. ">)>
+ <TELL-LIKE-BROCHURE>
+ <TELL ,DARK-TURRETS>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-FLASH>
+ <COND (<AND <IN? ,FRIEND ,COURTYARD>
+ <NOT <FSET? ,FRIEND ,TOUCHBIT>>
+ <ZERO? ,CLOCK-WAIT>>
+ <FSET ,FRIEND ,TOUCHBIT>
+ <FCLEAR ,FRIEND ,NDESCBIT>
+ <SETG FOLLOWER ,FRIEND>
+ <SETG QCONTEXT ,FRIEND>
+ ;<PUT <GET ,GOAL-TABLES ,FRIEND-C> ,GOAL-ENABLE 0>
+ <QUEUE I-FRIEND-GREETS 0>
+ ;<PUTP ,FRIEND ,P?LDESC 0>
+ <QUEUE I-TOUR 7 ;3>
+ <ESTABLISH-GOAL ,BUTLER ,COURTYARD>
+ ;<PUT <GT-O ,BUTLER> ,GOAL-FUNCTION ,BUTLER-APPEARS>
+ <FCLEAR ,FRONT-DOOR ,LOCKED>
+ <SETG QCONTEXT ,FRIEND>
+ <THIS-IS-IT ,FRIEND>
+ <PUTP ,FRIEND ,P?LDESC 12 ;"listening to you">
+ <SETG AWAITING-REPLY ,FRIEND-C>
+ <QUEUE I-REPLY ;2 ,CLOCKER-RUNNING>
+ <TELL "|
+Someone comes running out of the wing to greet you. " <GETP ,FRIEND ,P?TEXT>
+" You recognize her as your friend, " 'FRIEND " Lynd.|
+\""FN"!\" she cries with outflung arms. \"You sweet thing, to answer
+my letter in person this way! And all the people I wrote about are
+here tonight for Lionel's memorial birthday dinner!\"|
+After a warm hug, she asks anxiously, \""
+<GET ,QUESTIONS ,AWAITING-REPLY> "\"|">
+ <RFATAL>)>)
+ ;(<EQUAL? .RARG ,M-EXIT>
+ <COND (<T? ,AWAITING-REPLY>
+ <SETG CLOCK-WAIT T>
+ <PLEASE-ANSWER>
+ <RTRUE>)>)>>
+
+<ROUTINE TELL-LIKE-BROCHURE ("OPTIONAL" (DR <>))
+ <TELL
+"It looks even lovelier than it sounds in the " D ,BROCHURE ".">
+ <COND (<T? .DR>
+ <OPEN-DOOR? .DR>)>
+ <CRLF>>
+
+<ROOM MAZE
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT)
+ (DESC "hedge maze")
+ (ADJECTIVE HEDGE)
+ (SYNONYM MAZE ;HEDGEMAZE)
+ (LDESC
+"Tall dark hedges surround you like walls, with walkways in all directions.")
+ (LINE 1)
+ (STATION MAZE ;COURTYARD)
+ (CHARACTER 2)
+ (GLOBAL MOON OCEAN)
+ (NORTH PER MAZE-EXIT)
+ (NE PER MAZE-EXIT)
+ (EAST PER MAZE-EXIT)
+ (SE PER MAZE-EXIT)
+ (SOUTH PER MAZE-EXIT)
+ (SW PER MAZE-EXIT)
+ (WEST PER MAZE-EXIT)
+ (NW PER MAZE-EXIT)
+ (IN TO GARDEN)
+ (OUT TO COURTYARD)
+ (ACTION MAZE-F)>
+
+<ROUTINE MAZE-EXIT ("AUX" RM)
+ <COND (<==? ,OHERE ,GARDEN>
+ <SET RM ,COURTYARD>)
+ (T ;<==? ,OHERE ,COURTYARD>
+ <SET RM ,GARDEN>)>
+ <COND (<==? ,WINNER ,PLAYER>
+ <TELL
+"You stumble blindly through the maze and suddenly emerge in the " D .RM".|">)>
+ .RM>
+
+<ROUTINE MAZE-F ("OPT" (RARG 0))
+ <COND (<T? .RARG>
+ <RFALSE>)
+ (<VERB? THROUGH>
+ <COND (<EQUAL? ,HERE ,MAZE>
+ <GOTO <MAZE-EXIT>>)>)>>
+
+<ROOM GARDEN
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT)
+ (DESC "garden")
+ (ADJECTIVE CASTLE)
+ (SYNONYM GARDEN BOWER)
+ (LINE 1)
+ (STATION GARDEN ;COURTYARD)
+ (CHARACTER 2)
+ (GLOBAL MOON OCEAN)
+ (NORTH TO MAZE)
+ (NE TO MAZE)
+ (EAST TO MAZE)
+ (SE TO MAZE)
+ (SOUTH TO MAZE)
+ (SW TO MAZE)
+ (WEST TO MAZE)
+ (NW TO MAZE)
+ (OUT TO MAZE)
+ (ACTION GARDEN-F)>
+
+<ROUTINE GARDEN-F ("OPTIONAL" (RARG <>) "AUX" OBJ)
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"Here in the central garden the plants quake nervously in
+the mist. In the very middle is a " 'POND "." CR
+;" You can go west to the courtyard or southwest to enter the castle.">)
+ (<T? .RARG>
+ <RFALSE>)
+ (<VERB? EXAMINE SEARCH SEARCH-FOR>
+ <COND (<SET OBJ <FIND-FLAG-HERE ,SECRETBIT>>
+ <DISCOVER .OBJ ,HERE>
+ <RTRUE>)>
+ ;<COND (<AND <IN? ,CLUE-4 ,GARDEN>
+ <FSET? ,CLUE-4 ,SECRETBIT>>
+ <DISCOVER ,CLUE-4 ,GARDEN>
+ <RTRUE>)
+ ;(<AND <IN? ,NECKLACE ,GARDEN>
+ <FSET? ,NECKLACE ,SECRETBIT>>
+ <DISCOVER ,NECKLACE ,GARDEN>
+ <RTRUE>)>)>>
+
+<OBJECT POND
+ (IN GARDEN)
+ (DESC "goldfish pond")
+ (ADJECTIVE ;GOLDFISH ;FISH STONE)
+ (SYNONYM POND WATER FOUNTAIN)
+ (FLAGS CONTBIT OPENBIT NDESCBIT SEENBIT)
+ (CAPACITY 999)
+ (ACTION POND-F)>
+
+<ROUTINE POND-F ()
+ <COND (<VERB? BOARD LEAP SWIM THROUGH>
+ <TELL "On second thought, it looks too dark and slippery." CR>
+ <RTRUE>)
+ (<VERB? EXAMINE LOOK-INSIDE LOOK-UNDER>
+ <COND ;(<AND <IN? ,NECKLACE ,POND>
+ <FSET? ,NECKLACE ,SECRETBIT>>
+ <DISCOVER ,NECKLACE ,POND>
+ ;<TELL
+CHE ,WINNER notice " something projecting above the water. When" HE ,WINNER
+take " it, it's obviously a " D ,NECKLACE "!" CR>)
+ (T
+ <TELL-AS-WELL-AS ,POND " dark water">
+ <RTRUE>)>)>>
+
+<OBJECT FRONT-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "front door")
+ (ADJECTIVE FRONT CASTLE)
+ (SYNONYM DOOR ;DOORS ;"from COURTYARD" ;KEYHOLE)
+ (FLAGS OPENBIT DOORBIT SEENBIT LOCKED)
+ (ACTION FRONT-DOOR-F)>
+
+<ROUTINE FRONT-DOOR-F ()
+ <COND (<VERB? WALK-TO>
+ <COND (<OUTSIDE? ,HERE>
+ <PERFORM ,V?WALK-TO ,COURTYARD>
+ <RTRUE>)
+ (T
+ <PERFORM ,V?WALK-TO ,FOYER>
+ <RTRUE>)>)>>
+[
+<ROOM FOYER
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT DOORBIT WEARBIT)
+ (DESC "foyer")
+ (ADJECTIVE NEW FOYER DOUBLE BRONZE)
+ (SYNONYM FOYER ROOM DOOR ;DOORS ;"can't handle multiple doors")
+ (LINE 1)
+ (STATION FOYER)
+ (CHARACTER 2)
+ (GLOBAL FRONT-DOOR FOYER ;FOYER-DOOR CHAIR TABLE-RANDOM
+ WINDOW OIL-PAINTING)
+ (SOUTH TO GREAT-HALL IF FOYER ;FOYER-DOOR IS OPEN)
+ (EAST TO DRAWING-ROOM IF DRAWING-ROOM IS OPEN)
+ (IN TO DRAWING-ROOM IF DRAWING-ROOM IS OPEN)
+ (OUT TO COURTYARD IF FRONT-DOOR IS OPEN)
+ (NORTH TO COURTYARD IF FRONT-DOOR IS OPEN)
+ (ACTION FOYER-F)>
+
+<ROUTINE FOYER-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-ENTER>
+ <COND (<NOT <FSET? ,FOYER ,TOUCHBIT>>
+ <FSET ,FOYER ,TOUCHBIT>
+ <TELL
+"As you enter the foyer, you're overwhelmed by the English
+past. Those barbarous times when
+Jack's ancestors had to shut themselves up in a fortified castle have
+softened into gracious country living. Yet " 'FRIEND " is clearly anxious." CR>
+ ;<COND (<AND <IN? ,BUTLER ,FOYER>
+ <NOT <FSET? ,BUTLER ,TOUCHBIT>>>
+ <FSET ,BUTLER ,TOUCHBIT>
+ <FCLEAR ,BUTLER ,NDESCBIT>
+ <TELL
+CHE ,BUTLER " says, \"Welcome to " D ,CASTLE ", ">
+ <COND (<TITLE-NAME> <TELL !\.>)>
+ <TELL " I hope you had no
+trouble with the security gate. We've all been on edge since the 'ghost'
+appeared again last night. Of course, I put no stock in ghosts. I hope you
+don't either. Please follow me.\"" CR>
+ <ESTABLISH-GOAL ,BUTLER ,GREAT-HALL>
+ <RTRUE>)>
+ <RTRUE>)>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL-LIKE-BROCHURE>
+ <DESCRIBE-CONTENTS ,COAT-RACK>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-FLASH>
+ <COND (<AND <NOT <FSET? ,LORD ,TOUCHBIT>>
+ <IN? ,LORD ,FOYER>>
+ <LORD-INTRO>)>
+ <RTRUE>)>>
+
+<ROUTINE DESCRIBE-CONTENTS (OBJ)
+ <COND (<FIND-FLAG-NOT .OBJ ,NDESCBIT>
+ ;<FIRST? .OBJ>
+ <TELL "On" THE .OBJ " you see">
+ <PRINT-CONTENTS .OBJ>
+ <TELL ".|">)>>
+
+<OBJECT UMBRELLA-STAND
+ (IN FOYER)
+ (DESC "umbrella stand")
+ (ADJECTIVE UMBRELLA)
+ (SYNONYM STAND ;CASE UMBRELLA)
+ (FLAGS CONTBIT OPENBIT NDESCBIT VOWELBIT SEENBIT)
+ (CAPACITY 99)
+ ;(LDESC
+"In a dark corner is an umbrella stand." ;", containing various
+umbrellas.")
+ (ACTION UMBRELLA-STAND-F)>
+
+<ROUTINE UMBRELLA-STAND-F ()
+ <FCLEAR ,UMBRELLA-STAND ,NDESCBIT>
+ <COND (<VERB? OPEN CLOSE>
+ <YOU-CANT>)
+ (<VERB? TAKE>
+ <COND (<NOUN-USED? ,W?UMBRELLA>
+ <TELL "But it's not raining!" CR>)>)
+ (<VERB? EXAMINE LOOK-INSIDE SEARCH SEARCH-FOR>
+ <COND (<AND <IN? ,CANE ,UMBRELLA-STAND>
+ <FSET? ,CANE ,NDESCBIT>>
+ <FCLEAR ,CANE ,NDESCBIT>
+ <FCLEAR ,CANE ,SECRETBIT>
+ <FSET ,CANE ,SEENBIT>
+ <FSET ,CANE ,TAKEBIT>
+ <FSET ,CANE ,TOUCHBIT>
+ ;<MOVE ,CANE ,WINNER>
+ <THIS-IS-IT ,CANE>
+ <TELL
+"Among the umbrellas there's a cane that looks odd." CR>
+ <RTRUE>)
+ (<VERB? EXAMINE>
+ <TELL-LIKE-BROCHURE>
+ ;<TELL
+CTHE ,UMBRELLA-STAND " is made from the foot of an elephant." CR>)
+ (T
+ <TELL-AS-WELL-AS ,UMBRELLA-STAND
+ " an assortment of umbrellas">
+ <RTRUE>)>)>>
+
+<OBJECT COAT-RACK
+ (IN FOYER)
+ (DESC "coat rack")
+ (ADJECTIVE COAT)
+ (SYNONYM RACK)
+ (FLAGS SURFACEBIT OPENBIT NDESCBIT SEENBIT)
+ (CAPACITY 999)>
+][
+<OBJECT SECRET-DRAWING-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)
+ ;(GENERIC GENERIC-DRAWING-DOOR)>
+
+<ROOM DRAWING-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "drawing room")
+ (ADJECTIVE DRAWING ;ROOM)
+ (SYNONYM ROOM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 1)
+ (STATION GREAT-HALL)
+ (CHARACTER 2)
+ (GLOBAL GREAT-HALL DRAWING-ROOM SECRET-DRAWING-DOOR CHAIR
+ FIREPLACE WINDOW TABLE-RANDOM OIL-PAINTING)
+ (IN TO GREAT-HALL IF GREAT-HALL ;DRAWING-DOOR IS OPEN)
+ (WEST TO GREAT-HALL IF GREAT-HALL ;DRAWING-DOOR IS OPEN)
+ (OUT TO FOYER IF DRAWING-ROOM IS OPEN)
+ (NW TO FOYER IF DRAWING-ROOM IS OPEN)
+ (NORTH TO FOYER IF DRAWING-ROOM IS OPEN)
+ (SOUTH TO DRAWING-CLOSET IF SECRET-DRAWING-DOOR IS OPEN)
+ (ACTION DRAWING-ROOM-F)>
+
+<GLOBAL INTRODUCES " introduces ">
+
+<ROUTINE DRAWING-ROOM-F ("OPTIONAL" (RARG 0) "AUX" PER)
+ <COND (<EQUAL? .RARG ,M-BEG ;,M-EXIT>
+ <COND (<AND <VERB? OPEN CLOSE>
+ <DOBJ? SECRET-DRAWING-DOOR>>
+ <YOU-CANT <> ,PLAYER "in this room">
+ <RTRUE>)
+ (T <SECRET-CHECK .RARG>)>)
+ ;(<EQUAL? .RARG ,P?NORTH>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL-LIKE-BROCHURE ,SECRET-DRAWING-DOOR>)
+ (<EQUAL? .RARG ,M-FLASH>
+ <COND (<AND <IN? ,DEALER ,DRAWING-ROOM>
+ <NOT <FSET? ,DEALER ,TOUCHBIT>>>
+ <FSET ,DEALER ,TOUCHBIT>
+ <COND (<AND <EQUAL? <LOC ,PAINTER> ,HERE ,PSEUDO-OBJECT>
+ <=? <GETP ,DEALER ,P?LDESC> 2 ;"sipping sherry">>
+ <TELL
+"A tall graceful older couple in evening clothes are chatting and "
+<GET ,LDESC-STRINGS 2> ;"sipping sherry" ".|">
+ <SETG QCONTEXT ,PAINTER>
+ <COND (<EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
+ <SET PER ,LORD>)
+ (<EQUAL? <LOC ,FRIEND> ,HERE ,PSEUDO-OBJECT>
+ <THIS-IS-IT ,FRIEND>
+ <SET PER ,FRIEND>)>
+ <COND (<T? .PER>
+ <TELL
+D .PER ,INTRODUCES "them as Montague Hyde and Vivien Pentreath.|
+Hyde smiles and bows stiffly. And Vivien murmurs in an attractively low
+voice, \"How do you do, ">
+ <COND (<TITLE-NAME> <TELL !\.>)>
+ <TELL "\"|
+\"Believe it or not, this young ">
+ <COND (<ZERO? ,GENDER-KNOWN> <TELL "person">)
+ (<FSET? ,PLAYER ,FEMALE> <TELL "lady">)
+ (T <TELL "man">)>
+ <TELL
+" is a famous American detective,\" " D .PER " tells them.|">
+ <COND (<EQUAL? <LOC ,FRIEND>,HERE ,PSEUDO-OBJECT>
+ <TELL
+"\"Not a police detective, of course,\" " 'FRIEND " adds as they both
+stiffen, \"but a
+solver of all sorts of mysteries in the States. We're hoping
+to find out who or what is haunting " 'CASTLE ".\"" CR>)>)>)>)>)>>
+
+<OBJECT LOVER-PIC
+ (IN DRAWING-ROOM)
+ (DESC "Deirdre's portrait")
+ (ADJECTIVE VIV\'S DEE\'S HER ART DEIRDRE DEE;"handles PICTURE OF DEE!")
+ (SYNONYM PORTRAIT PICTURE PAINTING WATERCOLOR)
+ ;(GENERIC GENERIC-PAINTING)
+ (FLAGS NDESCBIT NARTICLEBIT)
+ (ACTION LOVER-PIC-F)>
+
+<ROUTINE LOVER-PIC-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It's a portrait by " 'PAINTER " of " 'LOVER ", a lovely young woman
+with flowing blonde hair, standing on a grassy slope, gazing out to sea.
+It's painted in pastel tones, which emphasize " 'LOVER "'s violet eyes.
+There's something ethereal and fairylike about her. Ironically, her
+silvery white, sleeveless gown is the very one she was wearing at the
+time of her accident." CR>)>>
+
+<OBJECT OIL-PAINTING
+ (IN LOCAL-GLOBALS ;DRAWING-ROOM)
+ (DESC "oil painting")
+ (ADJECTIVE OIL ART)
+ (SYNONYM PORTRAIT PICTURE PAINTING)
+ ;(GENERIC GENERIC-PAINTING)
+ (FLAGS NDESCBIT VOWELBIT SEENBIT)
+ (ACTION BROCHURE-PSEUDO)>
+
+<OBJECT TAPESTRY
+ (IN DRAWING-ROOM)
+ (DESC "tapestry")
+ (SYNONYM TAPESTRY UNICORN MAIDEN ARM)
+ (FLAGS NDESCBIT SEENBIT)
+ (ACTION TAPESTRY-F)>
+
+<ROUTINE TAPESTRY-F ()
+ <COND (<VERB? EXAMINE SEARCH>
+ <TELL-LIKE-BROCHURE>
+ ;<TELL "The " 'TAPESTRY " depicts a unicorn and a maiden." CR>
+ <COND (<EQUAL? ,VARIATION ,PAINTER-C ;,FRIEND-C>
+ <TELL
+"Someone has added a star in red thread on the maiden's ARM." CR>)>
+ <RTRUE>)
+ (<VERB? LOOK-BEHIND LOOK-UNDER>
+ <FSET ,SECRET-DRAWING-DOOR ,TOUCHBIT>
+ <THIS-IS-IT ,SECRET-DRAWING-DOOR>
+ <TELL
+"Hidden behind the " 'TAPESTRY " is" THE ,SECRET-DRAWING-DOOR "!" CR>)>>
+
+<OBJECT VICTORIA-CHAIR
+ (IN DRAWING-ROOM)
+ (DESC "armchair")
+ (ADJECTIVE ARM SATIN)
+ (SYNONYM CHAIR SEAT ARMCHAIR CUSHION)
+ (FLAGS SURFACEBIT VEHBIT OPENBIT NDESCBIT VOWELBIT)
+ (CAPACITY 99)>
+][
+<ROOM GREAT-HALL
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT DOORBIT WEARBIT)
+ (DESC "new great hall")
+ (ADJECTIVE GREAT NEW ;DRAWING)
+ (SYNONYM HALL DOOR ;DOORS ROOM)
+ (GENERIC GENERIC-GREAT-HALL)
+ (LINE 1)
+ (STATION GREAT-HALL)
+ (CHARACTER 2)
+ (GLOBAL GREAT-HALL FOYER CHAIR FIREPLACE
+ WINDOW TABLE-RANDOM STAIRS DRAWING-ROOM)
+ (THINGS <PSEUDO ( <> RADIO RANDOM-PSEUDO)
+ ( TRESYLLIAN ARMS BROCHURE-PSEUDO)
+ ( TRESYLLIAN CREST BROCHURE-PSEUDO)
+ ( WOOD CARVING BROCHURE-PSEUDO)>)
+ (UP TO GALLERY)
+ ;(SOUTH TO GALLERY)
+ (OUT TO FOYER IF FOYER ;FOYER-DOOR IS OPEN)
+ (NORTH TO FOYER IF FOYER ;FOYER-DOOR IS OPEN)
+ (IN TO DRAWING-ROOM IF GREAT-HALL IS OPEN)
+ (EAST TO DRAWING-ROOM IF GREAT-HALL ;DRAWING-DOOR IS OPEN)
+ ;(SW TO SITTING-ROOM IF SITTING-ROOM ;SITTING-DOOR IS OPEN)
+ (WEST TO CORR-1)
+ (ACTION GREAT-HALL-F)>
+
+<ROUTINE GREAT-HALL-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-LOOK>
+ <TELL-LIKE-BROCHURE>
+ <GREAT-HALL-IS-FLOORED>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-FLASH>
+ <COND (<AND <IN? ,DEB ,GREAT-HALL>
+ <NOT <FSET? ,DEB ,TOUCHBIT>>
+ <ZERO? ,CLOCK-WAIT>>
+ <FSET ,DEB ,TOUCHBIT>
+ <FCLEAR ,DEB ,NDESCBIT>
+ <COND (<AND <EQUAL? <LOC ,OFFICER> ,HERE ,PSEUDO-OBJECT>
+ <=? <GETP ,DEB ,P?LDESC> 1 ;"dancing">>
+ <TELL
+"A young couple are dancing to the faint sound of rock music from
+a portable radio on a table nearby.|">)>
+ <TELL <GETP ,DEB ,P?TEXT> CR>
+ <COMMON-DESC ,OFFICER> ;<PERFORM ,V?EXAMINE ,OFFICER>
+ <TELL "|
+They stop dancing, turn off the radio, and greet you."
+;", with affected smiles and half-hidden curiosity.">
+ <COND (<EQUAL? <LOC ,FRIEND> ,HERE ,PSEUDO-OBJECT>
+ <TELL
+!\ 'FRIEND ,INTRODUCES "them as the Honourable Iris Vane and Lt.
+Ian Fordyce of Her Majesty's Coldstream Guards.|">)>
+ <PUTP ,DEB ,P?LDESC 0>
+ <THIS-IS-IT ,DEB>
+ <PUTP ,OFFICER ,P?LDESC 0>
+ <THIS-IS-IT ,OFFICER>
+ <QUEUE I-TOUR 0>
+ <QUEUE I-REPLY ;1 ,CLOCKER-RUNNING>
+ ;<ESTABLISH-GOAL ,DOCTOR ,HERE>
+ <COND (<OR <ZERO? ,GENDER-KNOWN>
+ <NOT <FSET? ,PLAYER ,FEMALE>>>
+ <COND (<ZERO? ,GENDER-KNOWN>
+ <TELL
+"\"What a lark, having a Yank sleuth in our midst">)
+ (T <TELL
+"\"My dear! What a handsome addition to your guest list">)>
+ <TELL "!\" chirps Iris. Her green eyes sparkle ">
+ <COND (<ZERO? ,GENDER-KNOWN>
+ <TELL "a trifle malic">)
+ (T <TELL "flirtat">)>
+ <TELL "iously as she offers you her delicate hand. ">
+ <COND (<ZERO? ,GENDER-KNOWN>
+ <SETG QCONTEXT ,OFFICER>
+ ;<THIS-IS-IT ,OFFICER>
+ <PUTP ,OFFICER ,P?LDESC 12 ;"listening to you">
+ <SETG AWAITING-REPLY ,OFFICER-1-R>
+ <TELL
+"\"I always find Americans so innocently fascinating! I'm sure you'll
+have loads to tell us about the baffling mysteries you've solved...\"|
+\"Belt up, Iris, there's a good girl,\" says Ian. Flashing
+you an apologetic smile, he comments, \"Spoiled rotten, I'm afraid.
+Personally I should like nothing better than to hear all about your
+mystery cases. But first tell us: " <GET ,QUESTIONS ,AWAITING-REPLY> "\"|">
+ <RFATAL>)
+ (T
+ <SETG QCONTEXT ,DEB>
+ ;<THIS-IS-IT ,DEB>
+ <PUTP ,DEB ,P?LDESC 12 ;"listening to you">
+ <SETG AWAITING-REPLY ,DEB-C>
+ <TELL
+"\"Tell me, "TN" -- " <GET ,QUESTIONS ,AWAITING-REPLY> "\"|">
+ <RFATAL>)>)
+ (T
+ <COND (<EQUAL? ,VARIATION ,FRIEND-C>
+ <TELL
+'DEB " pulls Jack aside, whispers something to him, and giggles." CR>)>
+ <SETG QCONTEXT ,OFFICER>
+ <THIS-IS-IT ,OFFICER>
+ <PUTP ,OFFICER ,P?LDESC 12 ;"listening to you">
+ <SETG AWAITING-REPLY ,OFFICER-2-R>
+ <TELL
+"\"I say!\" exclaims Ian, bringing your hand to his lips.
+His glance runs swiftly over your face and figure with an
+air of expert appraisal. \"" <GET ,QUESTIONS ,AWAITING-REPLY> "\"|">
+ <RFATAL>)>)>)
+ ;(<EQUAL? .RARG ,M-EXIT>
+ <COND (<T? ,AWAITING-REPLY>
+ <SETG CLOCK-WAIT T>
+ <PLEASE-ANSWER>
+ <RTRUE>)>)>>
+
+<ROUTINE GREAT-HALL-IS-FLOORED ()
+ <TELL
+"The hall is floored with black and white marble tiles. They've been worn
+smooth by footsteps over the centuries, especially near
+the archway to the " 'DRAWING-ROOM "." CR>>
+
+<OBJECT ARMOR
+ (IN GREAT-HALL)
+ (DESC "suit of armour")
+ ;(ADJECTIVE ARMOR ARMOUR)
+ (SYNONYM SUIT ARMOR ARMOUR HELMET)
+ (FLAGS CONTBIT ;OPENBIT NDESCBIT SEENBIT)
+ (CAPACITY 99)
+ (ACTION ARMOR-F)>
+
+<ROUTINE ARMOR-F ()
+ <FCLEAR ,ARMOR ,NDESCBIT>
+ <COND (<VERB? EXAMINE>
+ <TELL
+"This is a full suit of steel body armour. It creaks as you walk past."
+;", from helmet down to sabbaton." CR>)
+ (<VERB? ;EXAMINE LOOK-INSIDE OPEN SEARCH SEARCH-FOR>
+ <COND (<AND <IN? ,CLUE-3 ,ARMOR>
+ <FSET? ,CLUE-3 ,SECRETBIT>>
+ <FSET ,ARMOR ,OPENBIT>
+ <DISCOVER ,CLUE-3>)>)>>
+][
+<OBJECT SECRET-SITTING-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET ;TRAP PASSAGE SEAT) ;"TRAP is verb?"
+ (SYNONYM DOOR)
+ (FLAGS SECRETBIT DOORBIT LOCKED)
+ ;(GENERIC GENERIC-SITTING-DOOR)
+ (ACTION SECRET-SITTING-DOOR-F)>
+
+<ROUTINE SECRET-SITTING-DOOR-F ()
+ <COND (<VERB? LOOK-INSIDE OPEN>
+ <COND (T ;<NOT <FSET? ,SECRET-SITTING-DOOR ,OPENBIT>>
+ <TELL "It seems to be stuck closed." CR>)>)>>
+
+<ROOM SITTING-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT OPENBIT DOORBIT WEARBIT)
+ (DESC "sitting room")
+ (ADJECTIVE SITTING ;ROOM SLIDING)
+ (SYNONYM ROOM DOOR ;DOORS)
+ ;(LDESC "[N to corridor]")
+ (LINE 1)
+ (STATION CORR-1)
+ (CHARACTER 2)
+ (GLOBAL SITTING-ROOM ;SITTING-DOOR SECRET-SITTING-DOOR CHAIR FIREPLACE
+ WINDOW)
+ ;(WEST TO SITTING-PASSAGE IF SECRET-SITTING-DOOR IS OPEN)
+ (DOWN TO SITTING-PASSAGE IF SECRET-SITTING-DOOR IS OPEN)
+ (IN TO SITTING-PASSAGE IF SECRET-SITTING-DOOR IS OPEN)
+ ;(EAST TO GREAT-HALL IF SITTING-ROOM ;SITTING-DOOR IS OPEN)
+ (OUT TO CORR-1 IF SITTING-ROOM ;SITTING-DOOR IS OPEN)
+ (NORTH TO CORR-1 IF SITTING-ROOM ;SITTING-DOOR IS OPEN)
+ (ACTION SITTING-ROOM-F)>
+
+<ROUTINE SITTING-ROOM-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-BEG ;,M-EXIT>
+ <SECRET-CHECK .RARG>)
+ ;(<EQUAL? .RARG ,P?WEST ,P?IN ,P?DOWN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL-LIKE-BROCHURE ;,SECRET-SITTING-DOOR>
+ <TELL
+"It's a comfy place to read a book, play the piano, or just relax." CR>
+ <DESCRIBE-CONTENTS ,PIANO>
+ <DESCRIBE-CONTENTS ,WRITING-DESK>
+ <RTRUE>)>>
+
+<OBJECT WYVERN
+ (IN SITTING-ROOM)
+ (DESC "window seat" ;"wyvern")
+ (ADJECTIVE WINDOW OTHER)
+ (SYNONYM SEAT WYVERN GARGOYLE DRAGON)
+ (FLAGS NDESCBIT VEHBIT SURFACEBIT SEENBIT)
+ (ACTION WYVERN-F)>
+
+<ROUTINE WYVERN-F () ;("OPT" (ARG 0))
+ <COND ;(<T? .ARG> <RFALSE>)
+ ;(<VERB? EXAMINE>
+ <TELL
+"Like a tiny gargoyle, a carved wyvern projects over each end of
+the " 'WYVERN "." CR>)
+ (<VERB? LOOK-INSIDE OPEN>
+ <SECRET-SITTING-DOOR-F>)
+ (<VERB? BOARD CLIMB-ON SIT SIT-AT>
+ ;<SETG PLAYER-SEATED ,WYVERN>
+ <MOVE ,PLAYER ,WYVERN>
+ <TELL "Okay, but it's not that comfortable." CR>)
+ (<VERB? MOVE MOVE-DIR MUNG PUSH RUB SLAP TURN>
+ <OPEN-SECRET "tug at" ,WYVERN ,SECRET-SITTING-DOOR>
+ <FCLEAR ,SECRET-SITTING-DOOR ,OPENBIT>
+ <TELL "Before you know it, ">
+ <COND (<IN? ,PLAYER ,WYVERN>
+ ;<EQUAL? ,PLAYER-SEATED ,WYVERN>
+ ;<SETG PLAYER-SEATED <>>
+ <TELL "you're dumped into it.|">
+ <GOTO ,SITTING-PASSAGE>)
+ (T
+ <TELL "it creaks upward to close again." CR>)>
+ <RTRUE>)>>
+
+<OBJECT WRITING-DESK
+ (IN SITTING-ROOM)
+ (DESC "writing desk")
+ (ADJECTIVE WRITING)
+ (SYNONYM DESK)
+ (FLAGS SURFACEBIT OPENBIT NDESCBIT SEENBIT)
+ (CAPACITY 999)
+ (ACTION WRITING-DESK-F)>
+
+<ROUTINE WRITING-DESK-F ()
+ <COND (<REMOTE-VERB?>
+ <RFALSE>)
+ (<IN? ,LETTER-MAID ,WRITING-DESK>
+ <FCLEAR ,LETTER-MAID ,NDESCBIT>
+ <RFALSE>)>>
+
+<OBJECT PIANO
+ (IN SITTING-ROOM)
+ (DESC "piano")
+ ;(ADJECTIVE DINING)
+ (SYNONYM PIANO)
+ (FLAGS NDESCBIT SURFACEBIT OPENBIT SEENBIT SEARCHBIT VEHBIT)
+ (CAPACITY 999)
+ (ACTION PIANO-F)>
+
+<GLOBAL PIANO-PIECES
+ <PTABLE "solo" "duet" "trio" "quar" "quin" "sex" "sep" "oc">>
+
+<ROUTINE PIANO-F ("AUX" O (N 0))
+ <COND (<VERB? LISTEN>
+ <SET O <FIRST? <LOC ,PIANO>>>
+ <REPEAT ()
+ <COND (<NOT .O>
+ <RFALSE>)
+ (<AND <FSET? .O ,PERSONBIT>
+ <==? <GETP .O ,P?LDESC> 22 ;"playing the piano">>
+ <TELL "The music sounds lovely." CR>
+ <RTRUE>)
+ (T <SET O <NEXT? .O>>)>>)
+ (<VERB? PLAY>
+ <PUTP ,WINNER ,P?LDESC 22 ;"playing the piano">
+ <COND (<AND <T? ,PRSI>
+ <FSET? ,PRSI ,PERSONBIT>>
+ <PUTP ,PRSI ,P?LDESC 22 ;"playing the piano">)>
+ <TELL CHE ,WINNER sit " down">
+ <SET O <FIRST? ,SITTING-ROOM>>
+ <REPEAT ()
+ <COND (<NOT .O>
+ <COND (<ZERO? .N>
+ <TELL " and">)>
+ <RETURN>)
+ (<AND <EQUAL? <GETP .O ,P?LDESC> 22 ;"playing the piano">
+ ;<FSET? .O ,PERSONBIT>
+ <NOT <==? .O ,WINNER>>>
+ <COND (<ZERO? .N> <TELL " with">)>
+ <INC N>
+ <TELL !\ D .O " and">)>
+ <SET O <NEXT? .O>>>
+ <COND (<ZERO? .N>
+ <TELL V ,WINNER play>)
+ (T
+ <COND (<==? <GETP ,PLAYER ,P?LDESC> 22 ;"playing the piano">
+ <TELL " you ">
+ <COND (<1? .N> <TELL "both">)
+ (T <TELL "all">)>)
+ (T <TELL " they">)>
+ <TELL " play">)>
+ <TELL " a lovely " <GET ,PIANO-PIECES .N>>
+ <COND (<G? .N 2> <TELL "tet">)>
+ <TELL "." CR>)
+ (<REMOTE-VERB?>
+ <RFALSE>)
+ (<IN? ,MUSIC ,PIANO>
+ <FCLEAR ,MUSIC ,NDESCBIT>
+ <RFALSE>)>>
+
+<OBJECT MUSIC
+ (IN PIANO)
+ (DESC "piece of music")
+ (SYNONYM PIECE ;SHEET MUSIC SONG)
+ (FLAGS TAKEBIT READBIT NDESCBIT)
+ (SIZE 2)
+ (ACTION MUSIC-F)>
+
+<ROUTINE MUSIC-F ()
+ <COND (<VERB? LISTEN PLAY>
+ <COND (<IN? ,PIANO ,HERE>
+ <PIANO-F>)
+ (T <NOT-HERE ,PIANO>)>
+ <RTRUE>)
+ (<REMOTE-VERB?>
+ <RFALSE>)>
+ <FCLEAR ,MUSIC ,NDESCBIT>
+ <COND (<VERB? EXAMINE LOOK-INSIDE OPEN READ>
+ <COND (<NOT-HOLDING? ,PRSO>
+ <RTRUE>)>
+ <TELL "It's ">
+ <COND ;(<EQUAL? ,VARIATION ,LORD-C>
+ <TELL
+"called \"Fave Heavy Metal Songs of H.R.H. Prince Charles.\"" CR>)
+ (<EQUAL? ,VARIATION ,PAINTER-C ;,FRIEND-C>
+ <TELL
+"Beethoven's \"Suite No. 9.\" Someone has drawn a star in red ink
+over the first four letters of the word \"SUITe.\"" CR>)
+ (<EQUAL? ,VARIATION ,DOCTOR-C>
+ <TELL
+"\"Funeral March of a Marionette.\"" CR>)
+ (T ;<EQUAL? ,VARIATION ,FRIEND-C>
+ <TELL
+"theme music from the American radio show, \"A Prairie Home
+Companion.\"" CR>)>)
+ (T <RFALSE>)>>
+]
+<ROOM CORR-1
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT WEARBIT)
+ (DESC "ground-floor corridor")
+ (ADJECTIVE GROUND)
+ (SYNONYM CORRIDOR ROOM)
+ (LINE 1)
+ (STATION CORR-1)
+ (CHARACTER 2)
+ (CORRIDOR 1)
+ (GLOBAL SITTING-ROOM DINING-ROOM)
+ (EAST TO GREAT-HALL)
+ (OUT TO GREAT-HALL)
+ (WEST TO JUNCTION)
+ (NORTH TO DINING-ROOM IF DINING-ROOM IS OPEN)
+ (SOUTH TO SITTING-ROOM IF SITTING-ROOM IS OPEN)
+ (ACTION CORR-1-F)>
+
+<ROUTINE CORR-1-F ("OPTIONAL" (ARG 0))
+ <COND (<==? .ARG ,M-LOOK>
+ <TELL
+"The " 'CORR-1 " goes between the two great halls to east and west.
+Behind sliding doors, the " 'DINING-ROOM " is north and the " 'SITTING-ROOM "
+is south." CR>)>>
+
+[
+<ROOM DINING-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT DOORBIT WEARBIT)
+ (DESC "dining room")
+ (ADJECTIVE DINING SLIDING)
+ (SYNONYM ROOM DOOR ;DOORS)
+ (GLOBAL ;CHAIR DINING-ROOM FIREPLACE WINDOW OIL-PAINTING)
+ (THINGS <PSEUDO ( PORCEL VASE BROCHURE-PSEUDO)
+ ( PORCEL VASES BROCHURE-PSEUDO)
+ ( <> SHELF BROCHURE-PSEUDO)
+ ( <> SHELVES BROCHURE-PSEUDO)>)
+ (LINE 1)
+ (STATION DINING-ROOM)
+ (CHARACTER 2)
+ (IN TO BACKSTAIRS)
+ (WEST TO BACKSTAIRS)
+ (OUT TO CORR-1 IF DINING-ROOM IS OPEN)
+ (SOUTH TO CORR-1 IF DINING-ROOM IS OPEN)
+ (ACTION DINING-ROOM-F)>
+
+<GLOBAL DINING-DESC
+"This room is impeccably furnished, but it's too formal for relaxing.|">
+
+<ROUTINE DINING-ROOM-F ("OPTIONAL" (RARG 0) "AUX" N)
+ <COND (<EQUAL? .RARG ,M-LOOK>
+ <TELL ,DINING-DESC>
+ <RTRUE>)
+ (<==? .RARG ,M-ENTER>
+ <COND (<QUEUED? ,I-DINNER-SIT>
+ ;<COND (<NOT <FSET? ,DINING-ROOM ,TOUCHBIT>>
+ <FSET ,DINING-ROOM ,TOUCHBIT>
+ <TELL ,DINING-DESC>)>
+ <COND (<IN? ,LORD ,DINING-ROOM>
+ <QUEUE I-DINNER-SIT 1>
+ <RFALSE>)
+ (T
+ <SET N <FIND-FLAG-HERE ,PERSONBIT ,PLAYER ,BUTLER>>
+ <COND (<ZERO? .N> <RFALSE>)>
+ <TELL CHE .N" says, \"Let's wait for his lordship.\""CR>
+ <RTRUE>)>)
+ (<AND ;<FSET? ,DINNER ,TAKEBIT>
+ <T? ,MISSED-DINNER>
+ ;<QUEUED? ,I-LIONEL-SPEAKS>
+ <IN? ,FRIEND ,HERE>>
+ <SETG MISSED-DINNER <>>
+ <COND (<NOT <FSET? ,DINING-ROOM ,TOUCHBIT>>
+ <FSET ,DINING-ROOM ,TOUCHBIT>
+ <TELL ,DINING-DESC>)>
+ <THIS-IS-IT ,FRIEND>
+ <SETG QCONTEXT ,FRIEND>
+ ;<MAKE-ALL-PEOPLE 10 ;"eating with relish" ,DINING-ROOM>
+ ;"in I-DINNER-SIT"
+ <TELL
+'FRIEND " says, \"We didn't know when you would come to dinner, so we
+started without you.">
+ <COND (<==? ,LIONEL-SPEAKS-COUNTER ,INIT-LIONEL-SPEAKS-COUNTER>
+ <TELL "\"" CR>)
+ (T
+ <QUEUE I-DINNER-TALK 1>
+ <TELL " And ">
+ <COND (<ZERO? ,LIONEL-SPEAKS-COUNTER>
+ <TELL "then Lionel spoke">)
+ (T
+ <TELL "now Lionel is speaking">)>
+ <TELL " on tape!\"" CR>)>)>)
+ (<==? .RARG ,M-EXIT>
+ <COND (<AND <QUEUED? ,I-LIONEL-SPEAKS>
+ ;<NOT <==? ,LIONEL-SPEAKS-COUNTER
+ ,INIT-LIONEL-SPEAKS-COUNTER>>
+ ;<T? ,LIONEL-SPEAKS-COUNTER>>
+ <TELL 'LORD " politely but firmly vetoes any such move. \"">
+ <COND (<==? ,LIONEL-SPEAKS-COUNTER ,INIT-LIONEL-SPEAKS-COUNTER>
+ <TELL
+"It's annoying enough to have the servants abscond at dinner time,\"
+he points out drily. " ,JACK-THINKS-GLADYS
+" Cigars and port will be time enough for that sort of aggro!\"" CR>)
+ (T <TELL "Let's hear what old Lionel has to say.\"" CR>)>
+ <RTRUE>)>)>>
+
+<ROUTINE I-DINNER-TALK ("OPTIONAL" (GARG <>))
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[I-DINNER-TALK:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <FSET ,DINNER ,TAKEBIT>
+ <FCLEAR ,DINNER ,TRYTAKEBIT>
+ <MOVE ,DINNER-2 ,TABLE-DINING ;,GLOBAL-OBJECTS>
+ ;<MOVE ,DINNER-3 ,TABLE-DINING ;,GLOBAL-OBJECTS>
+ <DINNER-TALK <QUEUED? ,I-LIONEL-SPEAKS>>
+ <RFATAL>>
+
+<GLOBAL WRONG-OUTFIT:NUMBER 0>
+<GLOBAL WASHED:FLAG 0>
+
+<ROUTINE DINNER-TALK (N "AUX" X)
+ ;<SET X <GET ,P-ITBL ,P-VERBN>>
+ ;<COND (<T? .X> ;"for VERB-PRINT"
+ <PUT .X 0 ,W?EAT>)>
+ <MOVE ,PLAYER ,CHAIR-DINING>
+ <TELL "Several people glance at your outfit with ">
+ <COND (<NOT <EQUAL? ,NOW-WEARING ,DINNER-OUTFIT>>
+ <SETG WRONG-OUTFIT 2>
+ <TELL "dis">)
+ (T <SETG WRONG-OUTFIT 1>)>
+ <TELL "approval.">
+ <COND (<ZERO? ,WASHED>
+ <TELL " They whisper about how dirty you still look.">)>
+ <CRLF>
+ <COND (<==? ,LIONEL-SPEAKS-COUNTER
+ ,INIT-LIONEL-SPEAKS-COUNTER>
+ <TELL
+'LORD " announces his engagement to " 'FRIEND ", prompting various reactions
+from the guests.|
+The dinner is excellent, with a flow of subdued conversation...|">)>
+ <PUTP ,LORD ,P?LDESC 0>
+ <SETG KEEP-WAITING T>
+ <V-WAIT .N <> T>>
+
+<ROUTINE POPULATION (RM "OPTIONAL" (NOT1 <>) (NOT2 <>) "AUX" (CNT 0) OBJ)
+ <SET OBJ <FIRST? .RM>>
+ <COND (<ZERO? .OBJ> <RFALSE>)>
+ <REPEAT ()
+ <COND (<AND <FSET? .OBJ ,PERSONBIT>
+ <NOT <FSET? .OBJ ,INVISIBLE>>
+ <OR <ZERO? .NOT1> <NOT <EQUAL? .OBJ .NOT1>>>
+ <OR <ZERO? .NOT2> <NOT <EQUAL? .OBJ .NOT2>>>>
+ <SET CNT <+ .CNT 1>>)
+ (<FSET? .OBJ ,CONTBIT>
+ <SET CNT <+ .CNT <POPULATION .OBJ .NOT1 .NOT2>>>)>
+ <SET OBJ <NEXT? .OBJ>>
+ <COND (<ZERO? .OBJ> <RETURN .CNT>)>>>
+
+<OBJECT BUST
+ (IN DINING-ROOM)
+ (DESC "bronze bust")
+ (DESCFCN BUST-D)
+ (ADJECTIVE BRONZE LI\'S LIONEL ;"handles BUST OF LIONEL!")
+ (SYNONYM BUST STATUE SCULPT LIONEL)
+ (FLAGS CONTBIT ;OPENBIT SEARCHBIT TRYTAKEBIT)
+ (CAPACITY 5)
+ (SIZE 13)
+ (ACTION BUST-F)>
+
+<ROUTINE BUST-D (ARG)
+ <THIS-IS-IT ,COUSIN>
+ <TELL
+"A brooding bust of " 'COUSIN " (sculpted by " 'PAINTER ") is
+displayed in a corner." CR>>
+
+<ROUTINE BUST-F ()
+ <COND (<OR <VERB? EXAMINE LOOK-UNDER MOVE MOVE-DIR OPEN PUSH ;TURN>
+ <AND <VERB? TAKE>
+ <EQUAL? ,P-PRSA-WORD ,W?RAISE ,W?LIFT>>>
+ <COND (<AND <VERB? EXAMINE>
+ <==? ,LIONEL-SPEAKS-COUNTER ,INIT-LIONEL-SPEAKS-COUNTER>>
+ <TELL-LIKE-BROCHURE>
+ <RTRUE>)>
+ <TELL
+"The " 'BUST " is hollow. When you lift it from its shelf, you discover"
+THE ,RECORDER " underneath, with an elaborate clockwork timer.">
+ <FSET ,BUST ,OPENBIT> ;"in I-LIONEL-SPEAKS too"
+ <FSET ,RECORDER ,SEENBIT>
+ <COND (<NOT <==? ,LIONEL-SPEAKS-COUNTER ,INIT-LIONEL-SPEAKS-COUNTER>>
+ <TELL
+" Evidently the timer was set to play the tape during the usual dinner
+hour on this date.">)>
+ <CRLF>)
+ (<VERB? LISTEN PLAY>
+ <COND (<AND <QUEUED? ,I-LIONEL-SPEAKS>
+ ;<NOT <==? ,LIONEL-SPEAKS-COUNTER
+ ,INIT-LIONEL-SPEAKS-COUNTER>>
+ ;<T? ,LIONEL-SPEAKS-COUNTER>>
+ <SETG LIONEL-FORCED T> ;"to suppress CR"
+ <QUEUE I-LIONEL-SPEAKS 1> ;"will respond"
+ <RTRUE>)
+ (T <TELL ,TIMER-PREVENTS-IT> <RTRUE>)>)>>
+
+<GLOBAL TIMER-PREVENTS-IT "The clockwork timer prevents it.|">
+
+<OBJECT RECORDER
+ (IN BUST)
+ (DESC "small tape recorder")
+ (ADJECTIVE LI\'S HIS TAPE SMALL CLOCKWORK)
+ (SYNONYM RECORD TAPE ;LIONEL TIMER)
+ (GENERIC GENERIC-RECORDER)
+ ;(CAPACITY 2)
+ ;(SIZE 5)
+ (ACTION RECORDER-F)>
+
+<ROUTINE RECORDER-F ()
+ <COND (<VERB? EXAMINE LISTEN PLAY>
+ <BUST-F>)
+ (<VERB? LAMP-ON LAMP-OFF>
+ <TELL ,TIMER-PREVENTS-IT>
+ <RTRUE>)
+ (<VERB? TAKE>
+ <TELL "It's fastened tightly to the shelf." CR>)
+ (<SPEAKING-VERB? ,RECORDER>
+ <WONT-HELP-TO-TALK-TO ,RECORDER>)>>
+
+<OBJECT TABLE-DINING
+ (IN DINING-ROOM)
+ (DESC "dining table")
+ (ADJECTIVE DINING)
+ (SYNONYM TABLE)
+ (FLAGS SURFACEBIT OPENBIT SEENBIT SEARCHBIT ;NDESCBIT)
+ (CAPACITY 999)
+ (ACTION TABLE-DINING-F)>
+
+<ROUTINE TABLE-DINING-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE LOOK-ON>
+ <COND (<FSET? ,DINNER ,TAKEBIT>
+ <TELL-AS-WELL-AS ,TABLE-DINING " the remains of dinner">
+ <RTRUE>)>)
+ (<VERB? SIT-AT>
+ <PERFORM ,V?SIT ,CHAIR-DINING>
+ <RTRUE>)
+ (<VERB? SIT>
+ <HAR-HAR>
+ <RTRUE>)>>
+
+<OBJECT CHAIR-DINING
+ (IN DINING-ROOM)
+ (DESC "chair")
+ (ADJECTIVE DINING MY)
+ (SYNONYM CHAIR SEAT CHAIRS BENCH)
+ (FLAGS SURFACEBIT OPENBIT SEARCHBIT VEHBIT NDESCBIT)
+ (CAPACITY 99)
+ ;(ACTION CHAIR-DINING-F)>
+
+<OBJECT SIDEBOARD
+ (IN DINING-ROOM)
+ (DESC "sideboard")
+ (ADJECTIVE DINING SIDE)
+ (SYNONYM SIDEBOARD BOARD)
+ (FLAGS SURFACEBIT OPENBIT SEENBIT SEARCHBIT)
+ (CAPACITY 99)>
+
+<OBJECT PUNCHBOWL
+ (IN SIDEBOARD)
+ (DESC "punchbowl")
+ (ADJECTIVE PUNCH)
+ (SYNONYM PUNCHBOWL BOWL)
+ (FLAGS CONTBIT OPENBIT SEARCHBIT TRYTAKEBIT)
+ (CAPACITY 9)
+ (SIZE 10)
+ (ACTION PUNCHBOWL-F)>
+
+<ROUTINE PUNCHBOWL-F ("AUX" OBJ)
+ <COND (<VERB? OPEN CLOSE>
+ <HAR-HAR>)
+ (<VERB? PUT-UNDER>
+ <COND (<IOBJ? PUNCHBOWL>
+ <FSET ,PRSO ,NDESCBIT>
+ <MOVE ,PRSO ,SIDEBOARD>
+ <TELL "Okay." CR>)>)
+ (<AND <VERB? LOOK-UNDER MOVE TAKE>
+ <DOBJ? PUNCHBOWL>>
+ <COND ;(<AND <IN? ,CLUE-1 ,SIDEBOARD>
+ <FSET? ,CLUE-1 ,NDESCBIT>>
+ <FSET ,CLUE-1 ,TAKEBIT>
+ ;<FSET ,CLUE-1 ,SEENBIT>
+ <FCLEAR ,CLUE-1 ,NDESCBIT>
+ <THIS-IS-IT ,CLUE-1>
+ <TELL "You see" THE ,CLUE-1 ", lying face down." CR>)
+ (<SET OBJ <FIND-FLAG ,SIDEBOARD ,NDESCBIT>>
+ <FSET .OBJ ,TAKEBIT>
+ <FSET .OBJ ,TOUCHBIT>
+ <FCLEAR .OBJ ,NDESCBIT>
+ <MOVE .OBJ ,PLAYER>
+ <THIS-IS-IT .OBJ>
+ <TELL "You find" THE .OBJ " underneath, so you take it." CR>)
+ (T
+ ;<WONT-HELP>
+ <TELL "There's nothing under it." CR>)>)>>
+
+<OBJECT DINNER
+ (IN KITCHEN ;SIDEBOARD)
+ (DESC "your dinner")
+ (ADJECTIVE COVERED MY)
+ (SYNONYM DINNER FOOD ;ARRAY DISHES PLATE ;FISH)
+ (GENERIC GENERIC-DINNER)
+ (FLAGS NARTICLEBIT TRYTAKEBIT)
+ (SIZE 10)
+ (DESCFCN DINNER-D)
+ (ACTION DINNER-F)>
+
+<ROUTINE DINNER-D (ARG "AUX" (L <LOC ,DINNER>))
+ <COND (<EQUAL? .L ,KITCHEN ,SIDEBOARD>
+ <TELL "An appetizing aroma wafts from an array of covered dishes">
+ <COND (<==? .L ,KITCHEN>
+ <TELL " sitting about">)
+ (<==? .L ,SIDEBOARD>
+ <TELL " on the " 'SIDEBOARD>)>
+ <TELL "." CR>)>>
+
+<ROUTINE DINNER-F ("AUX" I (L <LOC ,DINNER>))
+ <COND (<VERB? DRESS>
+ <COND (<EQUAL? ,HERE <META-LOC ,DINNER-OUTFIT>>
+ <PERFORM ,V?WEAR ,DINNER-OUTFIT>
+ <RTRUE>)
+ (T
+ <NOT-HERE ,DINNER-OUTFIT>
+ <RTRUE>)>)
+ (<VERB? EAT>
+ <COND ;(<FSET? ,DINNER ,TRYTAKEBIT> ;<QUEUED? ,I-DINNER-SIT>
+ <TELL
+"You look around and notice that no one else is eating yet." CR>)
+ (T <TELL "You take a bite and find it delicious." CR>)>)
+ (<VERB? EXAMINE ;SMELL>
+ <TELL
+"A lovely assortment of fish, fowl, greens, and sweets fills the ">
+ <COND (<EQUAL? .L ,KITCHEN ,SIDEBOARD>
+ <TELL "dishes." CR>)
+ (T <TELL "plate." CR>)>)
+ (<VERB? TAKE LAMP-ON ;"start">
+ <COND (<FSET? ,DINNER ,TRYTAKEBIT>
+ <COND (<==? .L ,KITCHEN>
+ <TELL "It's not ready yet." CR>)
+ (<==? .L ,SIDEBOARD>
+ <SET L <I-DINNER-SIT>>
+ <COND (<ZERO? .L>
+ <TELL
+"You look around and notice that no one else is eating yet."
+;"Not all the guests are ready yet." CR>
+ <RTRUE>)
+ (T <RETURN .L>)>)>)
+ ;(<==? <ITAKE> T>
+ <COND (<EQUAL? ,HERE ,DINING-ROOM>
+ <MOVE ,DINNER ,TABLE-DINING>
+ <FSET ,DINNER ,NDESCBIT>
+ <TELL
+CHE ,WINNER put " it on the " 'TABLE-DINING "." CR>)>)>)
+ (<VERB? WAIT-FOR>
+ <COND (<SET I <QUEUED? ,I-DINNER>>
+ <V-WAIT <- ,DINNER-TIME ,PRESENT-TIME> ;.I <> T>
+ <RTRUE>)>)
+ (<VERB? WALK-TO>
+ <COND (<EQUAL? ,HERE ,DINING-ROOM>
+ <PERFORM ,PRSA <META-LOC ,DINNER>>)
+ (T <PERFORM ,PRSA ,DINING-ROOM>)>
+ <RTRUE>)>>
+
+<OBJECT DINNER-2
+ ;(IN GLOBAL-OBJECTS)
+ (DESC "other dinner")
+ (ADJECTIVE OTHER JACK\'S HYDE\'S IAN\'S DOC\'S TAM\'S VIV\'S IRIS\'S)
+ (SYNONYM DINNER)
+ (FLAGS VOWELBIT NDESCBIT)
+ (GENERIC GENERIC-DINNER)>
+
+;<OBJECT DINNER-3
+ ;(IN GLOBAL-OBJECTS)
+ (DESC "her dinner")
+ (ADJECTIVE OTHER HER TAM\'S VIV\'S IRIS\'S)
+ (SYNONYM DINNER)
+ (FLAGS NARTICLEBIT NDESCBIT)
+ (GENERIC GENERIC-DINNER)>
+]
+<OBJECT SECRET-DINING-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET PASSAGE)
+ (SYNONYM DOOR)
+ (FLAGS SECRETBIT DOORBIT)>
+
+<ROOM BACKSTAIRS
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT WEARBIT NARTICLEBIT)
+ (DESC "backstairs")
+ ;(ADJECTIVE BACKST BACK)
+ (SYNONYM BACKST) ;( STAIR STAIRS AREA)
+ ;(GENERIC GENERIC-STAIRS)
+ (GLOBAL SECRET-DINING-DOOR STAIRS)
+ (LINE 1)
+ (STATION BACKSTAIRS)
+ (CHARACTER 2)
+ (WEST TO DINING-PASSAGE IF SECRET-DINING-DOOR IS OPEN)
+ (IN TO DINING-PASSAGE IF SECRET-DINING-DOOR IS OPEN)
+ (OUT TO DINING-ROOM)
+ (EAST TO DINING-ROOM)
+ (DOWN TO KITCHEN)
+ (ACTION BACKSTAIRS-F)>
+
+<ROUTINE BACKSTAIRS-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-BEG ;,M-EXIT>
+ <SECRET-CHECK .RARG>)
+ ;(<EQUAL? .RARG ,P?WEST ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+"You can go east to the " 'DINING-ROOM " or down narrow stairs
+to the " 'KITCHEN ".">
+ <OPEN-DOOR? ,SECRET-DINING-DOOR>
+ <CRLF>)>>
+[
+<ROOM KITCHEN
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT WEARBIT)
+ (DESC "kitchen")
+ (SYNONYM KITCHEN)
+ (GLOBAL CHAIR BELL ;SERVANTS-QUARTERS STAIRS)
+ (THINGS <PSEUDO ( KITCHEN SINK RANDOM-PSEUDO)>)
+ (LINE 1)
+ (STATION KITCHEN)
+ (CHARACTER 1)
+ (WEST TO BASEMENT)
+ (IN TO BASEMENT)
+ (EAST "You peek in and see nothing interesting in there.")
+ ;(EAST TO SERVANTS-QUARTERS IF SERVANTS-QUARTERS IS OPEN)
+ (UP TO BACKSTAIRS)
+ (OUT TO BACKSTAIRS)
+ (ACTION KITCHEN-F)>
+
+<ROUTINE KITCHEN-F ("OPTIONAL" (RARG 0))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"The " 'KITCHEN " is large yet cramped. From here, you can go west to
+the tower " 'BASEMENT ", east to the servants' quarters, or up the
+stairs." CR>)>>
+
+<OBJECT LAMP
+ (IN KITCHEN)
+ (ADJECTIVE BRASS ;BATTER)
+ (SYNONYM LAMP LANTERN ;LIGHT)
+ (DESC "brass lantern")
+ (FLAGS TAKEBIT LIGHTBIT ;SEENBIT)
+ (ACTION LANTERN)
+ ;(FDESC "A dusty brass lantern is sitting in a corner.")
+ ;(LDESC "There is a brass lantern (battery-powered) here.")
+ (SIZE 15)>
+
+<ROUTINE LANTERN ()
+ <COND (<VERB? AIM>
+ <TELL
+CTHE ,LAMP " shines in all " 'INTDIR "s, so you can't point it." CR>)
+ ;(<VERB? THROW-AT ;THROW-OFF THROW-THROUGH>
+ <TELL
+"The lamp has smashed into the floor, and the light has gone out.|">
+ ;<DISABLE <INT I-LANTERN>>
+ <REMOVE-CAREFULLY ,LAMP>
+ <MOVE ,BROKEN-LAMP ,HERE>
+ <RTRUE>)
+ (<VERB? USE>
+ <PERFORM ,V?LAMP-ON ,PRSO>
+ <RTRUE>)
+ (<VERB? EXAMINE>
+ <TELL "The lamp ">
+ <COND (<FSET? ,LAMP ,ONBIT>
+ <TELL "is on.">)
+ (T
+ <TELL "is turned off.">)>
+ <CRLF>)>>
+]
+;<ROOM SERVANTS-QUARTERS
+ (IN ROOMS)
+ (FLAGS ;ONBIT SEENBIT WEARBIT DOORBIT LOCKED)
+ (DESC ;"servants'" "butler's quarters")
+ (ADJECTIVE B\'S HIS ;"BUTLER BOLITHO ;SERVANT")
+ (SYNONYM QUARTERS ROOM BEDROOM DOOR ;KEYHOLE)>
+
+;< (LDESC
+"The only exit is west to the kitchen." ;"[W/OUT to kitchen]")
+ (GLOBAL CHAIR)
+ (LINE 1)
+ (STATION KITCHEN)
+ (CHARACTER 1)
+ (WEST TO KITCHEN)
+ (OUT TO KITCHEN)>
+
+[
+<ROOM GALLERY
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT WEARBIT)
+ (DESC "gallery")
+ (ADJECTIVE GALLERY)
+ (SYNONYM GALLERY ROOM)
+ (LINE 2)
+ (STATION GALLERY)
+ (CHARACTER 3)
+ (GLOBAL YOUR-ROOM VIVIEN-ROOM FIREPLACE WINDOW
+ PEEPHOLE STAIRS)
+ (OUT TO GREAT-HALL ;STAIRS-NEW)
+ (DOWN TO GREAT-HALL ;STAIRS-NEW)
+ ;(SOUTH TO GREAT-HALL)
+ (EAST TO YOUR-ROOM IF YOUR-ROOM ;YOUR-DOOR IS OPEN)
+ (IN TO YOUR-ROOM IF YOUR-ROOM ;YOUR-DOOR IS OPEN)
+ (NE TO EAST-HALL)
+ (WEST TO VIVIEN-ROOM IF VIVIEN-ROOM ;VIVIEN-DOOR IS OPEN)
+ (NW TO WEST-HALL)
+ (ACTION GALLERY-F)>
+
+<ROUTINE GALLERY-F ("OPTIONAL" (RARG 0))
+ <COND (<==? .RARG ,M-BEG>
+ <COND (<AND <VERB? EXAMINE LOOK-BEHIND LOOK-UNDER SEARCH SEARCH-FOR>
+ <DOBJ? PAINTING-GALLERY WALL>>
+ <FCLEAR ,PEEPHOLE ,SECRETBIT>
+ <TELL
+"You discover" HIM ,PEEPHOLE " in the eye of one ancestor." CR>)>)
+ (<==? .RARG ,M-LOOK>
+ <TELL
+"The " 'GALLERY " spans the top of the double stairways. You can go east to
+" 'YOUR-ROOM " or west to " 'VIVIEN-ROOM ". Hallways lead to the northeast and
+northwest.
+On the wall is a " D ,PAINTING-GALLERY " of " 'LORD "'s ancestors." CR>)>>
+
+<OBJECT PAINTING-GALLERY
+ (IN GALLERY)
+ (DESC "series of oil paintings")
+ (ADJECTIVE OIL ART DOUBLE)
+ (SYNONYM PORTRAIT PICTURE PAINTING SERIES)
+ ;(GENERIC GENERIC-PAINTING)
+ (FLAGS NDESCBIT SEENBIT)
+ (ACTION PICTURE-F)>
+
+<ROUTINE PICTURE-F ("OPTIONAL" (RARG 0))
+ <COND (<VERB? EXAMINE>
+ <TELL-LIKE-BROCHURE>)>>
+][
+<OBJECT BATHROOM
+ (IN LOCAL-GLOBALS)
+ (DESC "bathroom")
+ (ADJECTIVE ;BATH TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S)
+ (SYNONYM ;ROOM BATHROOM)
+ ;(GENERIC GENERIC-BEDROOM)
+ (FLAGS SEENBIT)
+ (ACTION BATHROOM-F)>
+
+<ROUTINE BATHROOM-F ()
+ <COND (<VERB? BOARD EXAMINE LOOK-INSIDE THROUGH WALK-TO>
+ <COND (<EQUAL? ,HERE ,YOUR-ROOM>
+ <PERFORM ,PRSA ,YOUR-BATHROOM>
+ <RTRUE>)
+ (T <RANDOM-PSEUDO>)>)>>
+
+<OBJECT FIREPLACE
+ (IN LOCAL-GLOBALS)
+ (DESC "fireplace")
+ (ADJECTIVE FIRE ;"TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S")
+ (SYNONYM PLACE FIREPLACE CHIMNEY FENDER)
+ (FLAGS SEENBIT)
+ (ACTION FIREPLACE-F)>
+
+<ROUTINE FIREPLACE-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE LOOK-UP>
+ <COND (<EQUAL? ,HERE ,IAN-ROOM>
+ <TELL-IAN-FIREPLACE>)
+ (T <TELL "It's empty, except for soot on the walls.">)>
+ <CRLF>)
+ (<VERB? LAMP-ON> ;"LIGHT FIRE"
+ <WONT-HELP>)
+ (<VERB? PUT-IN>
+ <TELL
+"When you think how sooty" THE ,PRSO " would get, you change your mind." CR>)>>
+
+<ROUTINE BED-PSEUDO ()
+ <COND (<VERB? BOARD CLIMB-ON LIE SIT THROUGH>
+ <WONT-HELP>)>>
+
+<OBJECT NIGHTSTAND-LG
+ (IN LOCAL-GLOBALS)
+ (DESC "night table")
+ (ADJECTIVE NIGHT ;MARBLE
+ TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S)
+ (SYNONYM ;NIGHTT TABLE ;STAND CONSOLE TALLBOY COMMODE)
+ (FLAGS SEENBIT)
+ (ACTION NIGHTSTAND-LG-F)>
+
+<ROUTINE NIGHTSTAND-LG-F ()
+ <COND (<AND <EQUAL? ,HERE ,JACK-ROOM>
+ <VERB? EXAMINE LOOK-INSIDE OPEN SEARCH SEARCH-FOR>>
+ <COND (<IN? ,NECKLACE-OF-D ,JACK-ROOM>
+ <DISCOVER ,NECKLACE-OF-D>)
+ (T <TELL ,NOTHING-NEW> <RTRUE>)>)
+ (<AND <EQUAL? ,HERE ,JACK-ROOM>
+ <VERB? PUT-IN>
+ <DOBJ? NECKLACE-OF-D>>
+ <MOVE ,NECKLACE-OF-D ,JACK-ROOM>
+ <FSET ,NECKLACE-OF-D ,NDESCBIT>
+ <OKAY>)
+ (T <RANDOM-PSEUDO>)>>
+
+<OBJECT DRESSING-TABLE-LG
+ (IN LOCAL-GLOBALS)
+ (DESC "dressing table")
+ (ADJECTIVE DRESSING ROLL-TOP WRITING)
+ (SYNONYM TABLE BENCH CHEST DRESSE ;DRAWER)
+ (FLAGS SEENBIT CONTBIT SURFACEBIT OPENBIT)
+ (ACTION DRESSING-TABLE-LG-F)>
+
+<ROUTINE DRESSING-TABLE-LG-F ()
+ <COND (<VERB? OPEN CLOSE SEARCH SEARCH-FOR>
+ <NOTHING-SPECIAL>)
+ (<VERB? EXAMINE LOOK-INSIDE LOOK-ON>
+ <COND (<EQUAL? ,HERE ,WENDISH-ROOM>
+ <WENDISH-STUFF-D>
+ <RTRUE>)
+ (<EQUAL? ,HERE ,TAMARA-ROOM>
+ <DRESSING-TABLE-TAM>
+ <CRLF>)
+ (T <NOTHING-SPECIAL>)>)>>
+
+<OBJECT WARDROBE-LG
+ (IN LOCAL-GLOBALS)
+ (DESC "wardrobe")
+ (ADJECTIVE CLOTHES)
+ (SYNONYM WARDROBE PRESS)
+ (FLAGS SEENBIT)
+ (ACTION RANDOM-PSEUDO)>
+
+<OBJECT MIRROR-GLOBAL
+ (IN GLOBAL-OBJECTS)
+ (DESC "mirror")
+ (ADJECTIVE LOOKING CHEVAL)
+ (SYNONYM MIRROR GLASS)
+ (FLAGS SEENBIT CONTBIT)
+ (ACTION MIRROR-GLOBAL-F)>
+
+<ROUTINE MIRROR-GLOBAL-F ()
+ <COND (<REMOTE-VERB?>
+ <RFALSE>)
+ (<NOT <FSET? ,HERE ,WORNBIT>>
+ <NOT-HERE ,MIRROR-GLOBAL>)
+ (<VERB? EXAMINE FIX LOOK-INSIDE MOVE>
+ <DRESSING-MIRROR-F>)
+ (T <RANDOM-PSEUDO>)>>
+
+<ROUTINE OPEN-DOOR? (DR "OPTIONAL" (NOSP <>))
+ <COND (<FSET? .DR ,OPENBIT>
+ <COND (<ZERO? .NOSP> <TELL !\ >)>
+ <THIS-IS-IT .DR>
+ <COND (<SET NOSP <DOOR-ROOM ,HERE .DR>>
+ <FSET .NOSP ,SEENBIT>)>
+ <TELL "And there's a wide-open " D .DR "!">)>>
+
+;<OBJECT FURNITURE
+ (IN LOCAL-GLOBALS)
+ (DESC "furniture")
+ (ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S)
+ (SYNONYM FURNITURE)
+ (FLAGS SEENBIT)
+ (ACTION RANDOM-PSEUDO)>
+][
+<OBJECT SECRET-YOUR-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE MY SECRET PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)>
+
+<ADJ-SYNONYM MY MINE YOUR>
+
+<ROOM YOUR-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "your bedroom")
+ (ADJECTIVE MY BED ROOM BEDROOM SPARE F.C F.C)
+ (SYNONYM ROOM BEDROOM DOOR ;KEYHOLE)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION GALLERY)
+ (CHARACTER 3)
+ (GLOBAL YOUR-ROOM ;YOUR-DOOR SECRET-YOUR-DOOR YOUR-BATHROOM FIREPLACE
+ WINDOW YOUR-BATHROOM-DOOR)
+ (OUT TO GALLERY IF YOUR-ROOM ;YOUR-DOOR IS OPEN)
+ (WEST TO GALLERY IF YOUR-ROOM ;YOUR-DOOR IS OPEN)
+ (NORTH TO YOUR-BATHROOM IF YOUR-BATHROOM-DOOR IS OPEN)
+ ;(IN TO YOUR-BATHROOM IF YOUR-BATHROOM-DOOR IS OPEN)
+ (IN TO YOUR-CLOSET IF SECRET-YOUR-DOOR IS OPEN)
+ (EAST TO YOUR-CLOSET IF SECRET-YOUR-DOOR IS OPEN)
+ (ACTION YOUR-ROOM-F)>
+
+<ROUTINE YOUR-ROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<EQUAL? .RARG ,M-BEG>
+ <COND (<AND <VERB? WALK-TO> <DOBJ? BED>>
+ <PERFORM ,V?LIE ,BED>
+ <RTRUE>)
+ (T
+ <SECRET-CHECK .RARG>)>)
+ (<OR <EQUAL? .RARG ,P?WEST ,P?OUT>
+ <EQUAL? .RARG ,P?EAST ,P?IN>>
+ <COND (<AND ;<==? .RARG ,M-EXIT>
+ <ZERO? ,NOW-WEARING>>
+ <TELL
+"Before you even take a step, you" ,REMEMBER-NOT-DRESSED "." CR>
+ <RFATAL>)
+ (<EQUAL? .RARG ,P?EAST ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)>)
+ (<EQUAL? .RARG ,M-ENTER>
+ <QUEUE I-TOUR 0>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL CTHE ,YOUR-ROOM " is decorated in shades of ">
+ <PRINT-COLOR>
+ <TELL
+". You see " 'YOUR-BATHROOM " to the north and a cozy " 'FIREPLACE " in
+one corner. The room is furnished with a bed, a " 'NIGHTSTAND " with a
+lamp on it, a " 'CHEST-OF-DRAWERS ", a " 'WARDROBE ", a " 'YOUR-CHAIR ",
+and a " 'DRESSING-TABLE " with mirror and bench. There's also a
+full-length " 'YOUR-MIRROR ".">
+ <OPEN-DOOR? ,SECRET-YOUR-DOOR>
+ <CRLF>
+ <DESCRIBE-CONTENTS ,BED>
+ <DESCRIBE-CONTENTS ,YOUR-CHAIR>
+ <COND (<AND <NOT <FSET? ,HERE ,TOUCHBIT>>
+ <NOT <EQUAL? <LOC ,BUTLER> ,GALLERY ,YOUR-ROOM>>
+ ;"timing bug"
+ <NOT <G? 2 <QUEUED? ,I-DINNER>>>
+ <NOT <IN-MOTION? ,FRIEND>>>
+ <PUTP ,FRIEND ,P?LINE 0>
+ <SETG QCONTEXT ,FRIEND>
+ <TELL CHE ,FRIEND>
+ <COND (<NOT <IN? ,FRIEND ,HERE>>
+ <MOVE ,FRIEND ,HERE>
+ <TELL " enters and">)>
+ <TELL " says, \"Let's chat a bit">
+ <COND (<ZERO? <FIND-FLAG-HERE ,PERSONBIT ,PLAYER ,FRIEND>>
+ <TELL ", now that we're alone">)>
+ <TELL ".\"" CR>)>
+ <RTRUE>)
+ ;(<EQUAL? .RARG ,M-EXIT>
+ <COND (<T? ,AWAITING-REPLY>
+ <SETG CLOCK-WAIT T>
+ <PLEASE-ANSWER>
+ <RTRUE>)>)
+ (T ;<T? .RARG>
+ <RFALSE>)
+ ;(<VERB? LOCK UNLOCK>
+ <TELL "It appears the lock is broken." CR>)>>
+
+<GLOBAL REMEMBER-NOT-DRESSED " remember that you're not dressed">
+
+<ROUTINE ENTER-PASSAGE ()
+ <TELL "You step down into a narrow " 'PASSAGE "." CR>
+ <RTRUE>>
+
+<OBJECT BED
+ (IN YOUR-ROOM)
+ (DESC "your bed")
+ (ADJECTIVE MY)
+ (SYNONYM BED)
+ (FLAGS SURFACEBIT OPENBIT VEHBIT NDESCBIT NARTICLEBIT)
+ (CAPACITY 999)
+ (ACTION BED-F)>
+
+<ROUTINE BED-F () ;("OPT" (ARG 0))
+ <COND ;(<T? .ARG> <RFALSE>)
+ (<VERB? BOARD THROUGH>
+ <PERFORM ,V?LIE ,PRSO>
+ <RTRUE>)
+ (<VERB? CLIMB-ON>
+ <PERFORM ,V?SIT ,PRSO>
+ <RTRUE>)>>
+
+<OBJECT NIGHTSTAND
+ (IN YOUR-ROOM)
+ (DESC "night table" ;"nightstand")
+ (ADJECTIVE MY NIGHT)
+ (SYNONYM NIGHTT TABLE STAND)
+ (FLAGS SURFACEBIT OPENBIT NDESCBIT SEENBIT SEARCHBIT)
+ (CAPACITY 99)
+ (ACTION NIGHTSTAND-F)>
+
+<ROUTINE NIGHTSTAND-F ()
+ <COND (<VERB? EXAMINE LOOK-ON>
+ <TELL-AS-WELL-AS ,NIGHTSTAND <> ,NIGHTLAMP>
+ <RTRUE>)>>
+
+<ROUTINE TELL-AS-WELL-AS (CONT STR "OPTIONAL" (OBJ <>) (X <>))
+ <COND (<FSET? .CONT ,SURFACEBIT>
+ <TELL !\O>)
+ (T
+ <FSET .CONT ,OPENBIT>
+ <TELL !\I>)>
+ <TELL !\n THE .CONT " you see">
+ <COND (<FIND-FLAG-NOT .CONT ,NDESCBIT>
+ <SET X T>)
+ (T <TELL " only">)>
+ <COND (<T? .OBJ>
+ <TELL THE .OBJ>)
+ (T <TELL .STR>)>
+ <COND (<T? .X>
+ <TELL ", as well as">
+ <PRINT-CONTENTS .CONT>)>
+ <TELL "." CR>>
+
+<OBJECT NIGHTLAMP
+ (IN NIGHTSTAND)
+ (DESC "your lamp")
+ (ADJECTIVE MY)
+ (SYNONYM LAMP)
+ (FLAGS ONBIT LIGHTBIT NDESCBIT SEENBIT NARTICLEBIT)>
+
+<OBJECT DRESSING-TABLE
+ (IN YOUR-ROOM)
+ (DESC "dressing table")
+ (ADJECTIVE MY DRESSING)
+ (SYNONYM TABLE)
+ (FLAGS SURFACEBIT OPENBIT NDESCBIT SEENBIT SEARCHBIT)
+ (CAPACITY 99)>
+
+<OBJECT DRESSING-BENCH
+ (IN YOUR-ROOM)
+ (DESC "bench")
+ (ADJECTIVE MY DRESSING)
+ (SYNONYM BENCH)
+ (FLAGS SURFACEBIT OPENBIT VEHBIT NDESCBIT SEENBIT)
+ (CAPACITY 99)>
+
+<OBJECT DRESSING-MIRROR
+ (IN DRESSING-TABLE)
+ (DESC "side mirror")
+ (ADJECTIVE MY DRESSING SIDE TABLE)
+ (SYNONYM MIRROR)
+ ;(DESCFCN DRESSING-MIRROR-D)
+ (FLAGS SEENBIT)
+ (ACTION DRESSING-MIRROR-F)>
+
+;<ROUTINE DRESSING-MIRROR-D (X)
+ <TELL
+"There's a hinged " 'DRESSING-MIRROR " on the " 'DRESSING-TABLE "." CR>>
+
+<ROUTINE DRESSING-MIRROR-F ()
+ <COND (<VERB? FIX MOVE MOVE-DIR PUSH RUB TURN>
+ <TELL "Now you can see " 'PLAYER " perfectly." CR>)
+ (<VERB? EXAMINE LOOK-INSIDE>
+ <TELL "You look ">
+ <COND (<T? ,WASHED>
+ <TELL "smashing">)
+ (T <TELL "a trifle dirty">)>
+ <TELL " in your ">
+ <COND (<ZERO? ,NOW-WEARING> <TELL "birthday suit">)
+ (T <TELL D ,NOW-WEARING>)>
+ <TELL "." CR>)>>
+
+<OBJECT YOUR-MIRROR
+ (IN YOUR-ROOM)
+ (DESC "wall mirror")
+ (ADJECTIVE MY WALL FULL-LENGTH FULL)
+ (SYNONYM MIRROR)
+ ;(LDESC
+"There's a mirror with an elaborate frame mounted on the wall.")
+ (FLAGS NDESCBIT SEENBIT TRYTAKEBIT)
+ (ACTION YOUR-MIRROR-F)>
+
+<ROUTINE YOUR-MIRROR-F ()
+ <COND (<OR <VERB? EXAMINE LOOK-BEHIND RUB SEARCH>
+ <AND <VERB? SEARCH-FOR> <DOBJ? YOUR-MIRROR>>>
+ <COND (<NOT <IN? ,PLAYER ,HERE>>
+ ;<T? ,PLAYER-SEATED>
+ <TOO-BAD-SIT-HIDE>)>
+ <TELL
+"By running your fingers around the frame, you discover" THE ,YOUR-SWITCH>
+ <THIS-IS-IT ,YOUR-SWITCH>
+ <TELL "." CR>)
+ (<AND <VERB? OPEN CLOSE>
+ <FSET? ,SECRET-YOUR-DOOR ,TOUCHBIT>>
+ <PERFORM ,PRSA ,SECRET-YOUR-DOOR>
+ <RTRUE>)
+ (<VERB? FIX MOVE MOVE-DIR PUSH RUB TAKE TURN>
+ <TELL "It seems to be fastened to the wall." CR>
+ <RTRUE>)
+ (T <DRESSING-MIRROR-F>)>>
+
+<OBJECT YOUR-SWITCH
+ (IN YOUR-ROOM)
+ (DESC "hidden switch")
+ (ADJECTIVE MY SMALL HIDDEN)
+ (SYNONYM SWITCH)
+ (FLAGS NDESCBIT ;TRYTAKEBIT SECRETBIT)
+ (ACTION YOUR-SWITCH-F)>
+
+<ROUTINE YOUR-SWITCH-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL "You can't tell by looking what it might do." CR>)
+ (<VERB? OPEN>
+ <FCLEAR ,YOUR-SWITCH ,SECRETBIT>
+ <OKAY ,SECRET-YOUR-DOOR "open">
+ <RTRUE>)
+ (<VERB? CLOSE>
+ <FCLEAR ,YOUR-SWITCH ,SECRETBIT>
+ <OKAY ,SECRET-YOUR-DOOR "closed">
+ <RTRUE>)
+ (<VERB? LAMP-OFF LAMP-ON MOVE MOVE-DIR PUSH RUB SLAP ;TAKE TURN>
+ <OPEN-SECRET <> ;"push" ,YOUR-SWITCH ,SECRET-YOUR-DOOR>
+ <RTRUE>)>>
+
+<OBJECT WARDROBE
+ (IN YOUR-ROOM)
+ (DESC "wardrobe")
+ (SYNONYM WARDROBE)
+ (FLAGS CONTBIT NDESCBIT SEENBIT)
+ (CAPACITY 999)>
+
+<OBJECT CHEST-OF-DRAWERS
+ (IN YOUR-ROOM)
+ (DESC "chest of drawers")
+ (SYNONYM CHEST DRAWER DRESSE)
+ (FLAGS CONTBIT NDESCBIT SEENBIT)
+ (CAPACITY 999)>
+
+<OBJECT YOUR-CHAIR
+ (IN YOUR-ROOM)
+ (DESC "wing chair")
+ (ADJECTIVE WING MY)
+ (SYNONYM CHAIR)
+ (FLAGS SURFACEBIT OPENBIT VEHBIT NDESCBIT SEENBIT)
+ (CAPACITY 99)>
+][
+<OBJECT YOUR-BATHROOM-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "bathroom door")
+ (ADJECTIVE MY BATH ;ROOM BATHROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)>
+
+<ROOM YOUR-BATHROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "your bathroom")
+ (ADJECTIVE MY BATH)
+ (SYNONYM ROOM BATHROOM)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION YOUR-ROOM)
+ (CHARACTER 3)
+ (OUT TO YOUR-ROOM IF YOUR-BATHROOM-DOOR IS OPEN)
+ (SOUTH TO YOUR-ROOM IF YOUR-BATHROOM-DOOR IS OPEN)
+ (ACTION YOUR-BATHROOM-F)
+ (GLOBAL YOUR-BATHROOM-DOOR)
+ (THINGS <PSEUDO ( MY BATH BATH-PSEUDO)
+ ( BATH TUB BATH-PSEUDO)
+ ( MY BATHTUB BATH-PSEUDO)
+ ( MY TUB BATH-PSEUDO)
+ ( MY TOILET TOILET-PSEUDO)
+ ( MY SINK RANDOM-PSEUDO)>)>
+
+<ROUTINE YOUR-BATHROOM-F ("OPTIONAL" (RARG 0))
+ <COND (<==? .RARG ,M-BEG>
+ <COND (<AND <VERB? WALK-TO> <DOBJ? YOUR-BATHROOM>>
+ <TELL ,AHHH>
+ <RTRUE>)>)
+ (<==? .RARG ,M-LOOK>
+ <TELL
+"From the look of it, " 'YOUR-BATHROOM " was added in recently. It is
+comfortable and inviting, especially for Cornwall." CR>
+ <RTRUE>)
+ (<==? .RARG ,M-EXIT>
+ <COND (<AND <ZERO? ,NOW-WEARING>
+ <SET RARG <FIND-FLAG ,YOUR-ROOM ,PERSONBIT>>>
+ <TELL
+"You peek in and see " D .RARG ", then" ,REMEMBER-NOT-DRESSED "." CR>
+ <RFATAL>)>)
+ (<T? .RARG>
+ <RFALSE>)
+ (<VERB? OPEN CLOSE LOCK UNLOCK>
+ <PERFORM ,PRSA ,YOUR-BATHROOM-DOOR>
+ <RTRUE>)>>
+
+<ROUTINE TOILET-PSEUDO ()
+ <COND (<VERB? LOOK-INSIDE>
+ <NOTHING-SPECIAL>
+ <RTRUE>)
+ (<VERB? SIT USE>
+ <TELL ,AHHH>
+ <RTRUE>)>>
+
+<ROUTINE BATH-PSEUDO ()
+ <COND (<VERB? CLOSE ;"=DRAW" FILL LAMP-ON>
+ <COND (<EQUAL? ,WINNER ,PLAYER>
+ <TELL "Okay, then what?" CR>)>
+ <RTRUE>)
+ (<VERB? BOARD SWIM TAKE THROUGH>
+ <COND (<ZERO? ,NOW-WEARING>
+ <COND (<FIRST? ,PLAYER>
+ <TELL "First you drop everything...|">
+ <ROB ,PLAYER ,HERE>)>
+ <PUT <GET ,P-ITBL ,P-VERBN> 0 ,W?BATHE>;"for VERB-PRINT"
+ <V-WAIT 9 <> T>
+ <SETG WASHED T>
+ <TELL
+"You're now squeaky clean. After toweling off, you feel nicely relaxed
+and ready to tackle the mystery of " D ,CASTLE "." CR>)
+ (T <TELL
+"You almost step into the tub before you realize that your " D ,NOW-WEARING
+" would get wet." CR>)>)
+ (T <RANDOM-PSEUDO>)>>
+]
+<ROOM EAST-HALL
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT WEARBIT)
+ (DESC "east hall")
+ (ADJECTIVE EAST)
+ (SYNONYM HALL HALLWAY ROOM)
+ (LDESC
+"There are bedrooms to the east and west. The gallery lies south."
+;"[W to Wendish, E to Iris, S to gallery]")
+ (LINE 2)
+ (STATION EAST-HALL)
+ (CHARACTER 3)
+ (GLOBAL WENDISH-ROOM ;WENDISH-DOOR IRIS-ROOM ;IRIS-DOOR)
+ (EAST TO IRIS-ROOM IF IRIS-ROOM ;IRIS-DOOR IS OPEN)
+ (WEST TO WENDISH-ROOM IF WENDISH-ROOM ;WENDISH-DOOR IS OPEN)
+ (SOUTH TO GALLERY)
+ (SW TO GALLERY)
+ (OUT TO GALLERY)>
+
+[
+<OBJECT SECRET-IRIS-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET IRIS\'S HER PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)
+ ;(GENERIC GENERIC-IRIS-DOOR-F)>
+
+<ROOM IRIS-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "Iris's bedroom")
+ (ADJECTIVE IRIS\'S ;IRIS HER BED ROOM BEDROOM EAST)
+ (SYNONYM ROOM BEDROOM DOOR ;KEYHOLE)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION EAST-HALL)
+ (CHARACTER 3)
+ (GLOBAL IRIS-ROOM SECRET-IRIS-DOOR BATHROOM FIREPLACE
+ NIGHTSTAND-LG DRESSING-TABLE-LG WARDROBE-LG WINDOW)
+ (THINGS <PSEUDO ( IRIS\'S BED BED-PSEUDO)
+ ( HER BED BED-PSEUDO)>)
+ (OUT TO EAST-HALL IF IRIS-ROOM ;IRIS-DOOR IS OPEN)
+ (WEST TO EAST-HALL IF IRIS-ROOM ;IRIS-DOOR IS OPEN)
+ (IN TO IRIS-CLOSET IF SECRET-IRIS-DOOR IS OPEN)
+ (EAST TO IRIS-CLOSET IF SECRET-IRIS-DOOR IS OPEN)
+ (ACTION IRIS-ROOM-F)>
+
+<ROUTINE IRIS-ROOM-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-BEG ,M-EXIT>
+ <COND (<AND <VERB? OPEN CLOSE>
+ <DOBJ? SECRET-IRIS-DOOR>>
+ <YOU-CANT <> ,PLAYER "in this room">
+ <RTRUE>)
+ (T <SECRET-CHECK .RARG>)>)
+ (<EQUAL? .RARG ,P?EAST ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+'IRIS-ROOM " is furnished much like yours, but with a canopied bed and
+" 'IRIS-CHAIR "." ;"[W to east hall]">
+ <OPEN-DOOR? ,SECRET-IRIS-DOOR>
+ <CRLF>)>>
+
+<OBJECT IRIS-CHAIR
+ (IN IRIS-ROOM)
+ (DESC "love seat")
+ (ADJECTIVE IRIS\'S HER LOVE)
+ (SYNONYM CHAIR SEAT)
+ (FLAGS SURFACEBIT VEHBIT OPENBIT NDESCBIT)
+ (CAPACITY 99)>
+][
+<OBJECT SECRET-WENDISH-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET DOC\'S HIS PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)
+ ;(GENERIC GENERIC-WENDISH-DOOR)>
+
+;<ROUTINE HIDING-PSEUDO ("AUX" OBJ)
+ <COND (<VERB? HIDE-BEHIND PUT-IN PUT-UNDER>
+ <COND (<DOBJ? COSTUME BLOWGUN LENS-BOX>
+ <MOVE ,PRSO ,HERE>
+ <FSET ,PRSO ,NDESCBIT>
+ <FSET ,PRSO ,SECRETBIT>
+ <TELL "Done." CR>)
+ (T <TELL CHE ,PRSO " won't fit." CR>)>)
+ (<VERB? EXAMINE LOOK-INSIDE SEARCH SEARCH-FOR>
+ <COND (<SET OBJ <FIND-FLAG-HERE ,SECRETBIT>>
+ <DISCOVER .OBJ>)
+ (T <NOTHING-SPECIAL>)>)>>
+
+<ROOM WENDISH-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "Wendish's bedroom")
+ (ADJECTIVE DOC\'S HIS BED ROOM BEDROOM WEST)
+ (SYNONYM ROOM BEDROOM DOOR ;KEYHOLE)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION EAST-HALL)
+ (CHARACTER 3)
+ (GLOBAL WENDISH-ROOM SECRET-WENDISH-DOOR BATHROOM FIREPLACE
+ NIGHTSTAND-LG DRESSING-TABLE-LG WARDROBE-LG WINDOW)
+ (THINGS <PSEUDO ( DOC\'S BED BED-PSEUDO)
+ ( HIS BED BED-PSEUDO)>)
+ (OUT TO EAST-HALL IF WENDISH-ROOM ;WENDISH-DOOR IS OPEN)
+ (EAST TO EAST-HALL IF WENDISH-ROOM ;WENDISH-DOOR IS OPEN)
+ (NORTH TO WENDISH-CORNER IF SECRET-WENDISH-DOOR IS OPEN)
+ (IN TO WENDISH-CORNER IF SECRET-WENDISH-DOOR IS OPEN)
+ (ACTION WENDISH-ROOM-F)>
+
+<ROUTINE WENDISH-ROOM-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-BEG ,M-EXIT>
+ <COND ;(<AND <VERB? OPEN CLOSE>
+ <DOBJ? SECRET-WENDISH-DOOR>>
+ <YOU-CANT <> ,PLAYER "in this room" ;"here">
+ <RTRUE>)
+ (T <SECRET-CHECK .RARG>)>)
+ (<EQUAL? .RARG ,P?NORTH ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+"The room shows the doctor's precise, scientific personality.
+Everything is in its place. " ;"Luggage has been unpacked, and clothes
+neatly stowed in a commode (a low ' 'CHEST-OF-DRAWERS ') and a clothes press
+(recessed in the wall). ">
+ <WENDISH-STUFF-D>
+ <TELL
+"His " 'WENDISH-KIT " is on a marble-topped console
+attached to the wall. On the north wall is" THE ,CANDLE !\.>
+ <OPEN-DOOR? ,SECRET-WENDISH-DOOR>
+ <CRLF>)>>
+
+<OBJECT CANDLE
+ (IN WENDISH-ROOM)
+ (DESC "ornate candle sconce")
+ (ADJECTIVE ORNATE CANDLE DOC\'S HIS)
+ (SYNONYM CANDLE SCONCE)
+ (FLAGS NDESCBIT TRYTAKEBIT VOWELBIT)
+ (ACTION CANDLE-F)>
+
+<ROUTINE CANDLE-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL "It seems to be fastened loosely to the wall." CR>)
+ (<OR <VERB? LOOK-BEHIND LOOK-UNDER MOVE MOVE-DIR PUSH TURN>
+ <AND <VERB? TAKE>
+ <EQUAL? ,P-PRSA-WORD ,W?RAISE ,W?LIFT>>>
+ <OPEN-SECRET "lift" ,CANDLE ,SECRET-WENDISH-DOOR>)>>
+
+<OBJECT WENDISH-CHAIR
+ (IN WENDISH-ROOM)
+ (DESC "armchair")
+ (ADJECTIVE ARM)
+ (SYNONYM CHAIR SEAT ARMCHAIR)
+ (FLAGS SURFACEBIT VEHBIT OPENBIT NDESCBIT VOWELBIT)
+ (CAPACITY 99)>
+
+<OBJECT WENDISH-STUFF
+ (IN WENDISH-ROOM)
+ (DESC "medical text")
+ (ADJECTIVE MEDICAL)
+ (SYNONYM TEXT TEXTS BOOK BOOKS)
+ (GENERIC GENERIC-BOOK)
+ (FLAGS NDESCBIT READBIT CONTBIT)
+ (CAPACITY 4)
+ (DESCFCN WENDISH-STUFF-D)
+ (ACTION WENDISH-STUFF-F)>
+
+<ROUTINE WENDISH-STUFF-D ("OPTIONAL" X)
+ <TELL
+"Several " 'WENDISH-STUFF "s are lying on the " 'DRESSING-TABLE-LG "."
+ ;"a roll-top writing table." CR>>
+
+<ROUTINE WENDISH-STUFF-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE OPEN READ>
+ <TELL "They are too technical to understand." CR>)
+ (T <RANDOM-PSEUDO>)>>
+
+<OBJECT WENDISH-KIT
+ (IN WENDISH-ROOM)
+ (DESC ;"Wendish's " "medical kit")
+ (ADJECTIVE DOC\'S ;DOCTOR HIS MEDICAL)
+ (SYNONYM KIT BAG)
+ (FLAGS NDESCBIT SEENBIT ;NARTICLEBIT CONTBIT TRYTAKEBIT)
+ (SIZE 38)
+ (CAPACITY 37) ;"for COSTUME + BLOWGUN + LENS-BOX + book"
+ (ACTION WENDISH-KIT-F)>
+
+<ROUTINE WENDISH-KIT-F ("AUX" X)
+ <COND (<VERB? EXAMINE LOOK-INSIDE OPEN SEARCH SEARCH-FOR>
+ <SEARCH-KIT-BOX ,WENDISH-KIT " a bunch of nasty-looking instruments">
+ <RTRUE>)
+ (<AND <VERB? TAKE> <EQUAL? ,PRSO ,WENDISH-KIT>>
+ <YOU-SHOULDNT>)
+ ;(<AND <VERB? TAKE> <EQUAL? ,PRSI <> ,WENDISH-KIT>>
+ <RFALSE>)
+ ;(<VERB? CLOSE FIND>
+ <RFALSE>)>>
+]
+<ROUTINE SEARCH-KIT-BOX (OBJ STR "AUX" (X <>))
+ <FSET .OBJ ,OPENBIT>
+ <COND ;(<OR <SET X <FIND-FLAG .OBJ ,SECRETBIT>>
+ <SET X <FIND-FLAG .OBJ ,RMUNGBIT>>>
+ T)
+ (<IN? ,LENS-BOX .OBJ>
+ <SET X ,LENS-BOX>)
+ (<IN? ,VIVIEN-DIARY .OBJ>
+ <SET X ,VIVIEN-DIARY>)
+ (<IN? ,COSTUME .OBJ>
+ <SET X ,COSTUME>)
+ (<IN? ,BLOWGUN .OBJ>
+ <SET X ,BLOWGUN>)>
+ <COND (<T? .X>
+ <DISCOVER .X>
+ <COND (<NOT <VERB? SEARCH SEARCH-FOR>>
+ <TELL !\Y ,OU-STOP-SEARCHING "." CR>)>
+ <RTRUE>)
+ (T
+ <TELL-AS-WELL-AS .OBJ .STR>
+ <RTRUE>)>>
+[
+<OBJECT SECRET-VIVIEN-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET VIV\'S HER PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)
+ ;(GENERIC GENERIC-VIVIEN-DOOR)>
+
+<ROOM VIVIEN-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT ;OPENBIT DOORBIT ;LOCKED WEARBIT WORNBIT)
+ (DESC "Vivien's bedroom")
+ (ADJECTIVE ;VIVIEN VIV\'S HER BED ROOM BEDROOM WEST)
+ (SYNONYM ROOM BEDROOM DOOR ;KEYHOLE)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION GALLERY)
+ (CHARACTER 3)
+ (GLOBAL VIVIEN-ROOM SECRET-VIVIEN-DOOR BATHROOM FIREPLACE
+ NIGHTSTAND-LG DRESSING-TABLE-LG WARDROBE-LG WINDOW)
+ (THINGS <PSEUDO ( <> BOOK RANDOM-PSEUDO)
+ ( <> BOOKS RANDOM-PSEUDO)
+ ( VIV\'S BED BED-PSEUDO)
+ ( HER BED BED-PSEUDO)>)
+ (OUT TO GALLERY IF VIVIEN-ROOM ;VIVIEN-DOOR IS OPEN)
+ (EAST TO GALLERY IF VIVIEN-ROOM ;VIVIEN-DOOR IS OPEN)
+ (SOUTH TO SECRET-VIVIEN-PASSAGE IF SECRET-VIVIEN-DOOR IS OPEN)
+ (IN TO SECRET-VIVIEN-PASSAGE IF SECRET-VIVIEN-DOOR IS OPEN)
+ (ACTION VIVIEN-ROOM-F)>
+
+<ROUTINE VIVIEN-ROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<EQUAL? .RARG ,M-BEG ,M-EXIT>
+ <SECRET-CHECK .RARG>)
+ (<EQUAL? .RARG ,P?SOUTH ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+"The room is untidy, probably because Vivien is an artist.
+Sketches and garments are strewn on the
+canopied bed and " 'VIVIEN-CHAIR ". Leaning against the wall are
+stretched canvases, and a fold-up easel
+for her outdoor art work. On the tallboy are
+a sketch pad, and a paint-smeared " 'VIVIEN-BOX ".
+On the south wall is a cheval glass and" THE ,FIGURINE "."
+;"(full-length tilting mirror in frame) [E to gallery]">
+ <OPEN-DOOR? ,SECRET-VIVIEN-DOOR>
+ <CRLF>
+ <DESCRIBE-CONTENTS ,VIVIEN-CHAIR>
+ <RTRUE>)>>
+
+<OBJECT VIVIEN-STUFF
+ (IN VIVIEN-ROOM)
+ (DESC "art supplies" ;"Vivien's stuff")
+ (ADJECTIVE VIV\'S HER WATERCOLOR SKETCH ART PICTURE)
+ (SYNONYM PAD CANVAS SUPPLIES EASEL)
+ (FLAGS NDESCBIT SEENBIT ;NARTICLEBIT)
+ (ACTION RANDOM-PSEUDO)>
+
+<OBJECT VIVIEN-BOX
+ (IN VIVIEN-ROOM)
+ (DESC ;"Vivien's " "wooden box")
+ (ADJECTIVE VIV\'S HER WOODEN PAINT)
+ (SYNONYM BOX)
+ (GENERIC GENERIC-BOX)
+ (FLAGS NDESCBIT SEENBIT ;NARTICLEBIT CONTBIT TRYTAKEBIT)
+ (SIZE 38)
+ (CAPACITY 37) ;"for COSTUME + BLOWGUN + LENS-BOX + book"
+ (ACTION VIVIEN-BOX-F)>
+
+<ROUTINE VIVIEN-BOX-F ("AUX" X)
+ <COND (<VERB? EXAMINE LOOK-INSIDE OPEN SEARCH SEARCH-FOR>
+ <SEARCH-KIT-BOX ,VIVIEN-BOX " Vivien's brushes and thinner";" and oil">
+ <RTRUE>)
+ ;(<AND <VERB? PUT-IN> <IOBJ? VIVIEN-BOX>>
+ <MOVE ,PRSO ,PRSI>
+ <FSET ,PRSO ,TOUCHBIT>
+ <TELL "Okay." CR>)
+ (<AND <VERB? TAKE> <EQUAL? ,PRSO ,VIVIEN-BOX>>
+ <YOU-SHOULDNT>)
+ ;(<AND <VERB? TAKE> <EQUAL? ,PRSI <> ,VIVIEN-BOX>>
+ <RFALSE>)
+ ;(<VERB? CLOSE FIND>
+ <RFALSE>)>>
+
+<OBJECT FIGURINE
+ (IN VIVIEN-ROOM)
+ (DESC "sculpted figurine")
+ (ADJECTIVE SCULPT VIV\'S HER)
+ (SYNONYM FIGURINE FIGURE)
+ (FLAGS TRYTAKEBIT NDESCBIT ;SEENBIT)
+ (ACTION FIGURINE-F)>
+
+<ROUTINE FIGURINE-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL "It's turned toward the wall, so you can't see its face." CR>)
+ (<VERB? MOVE MOVE-DIR PUSH TURN>
+ <OPEN-SECRET "turn" ,FIGURINE ,SECRET-VIVIEN-DOOR>)
+ ;(<VERB? LOOK-UNDER OPEN TAKE>
+ <FSET ,FIGURINE ,OPENBIT>
+ <TELL
+"The " 'FIGURINE " is hollow. Lifting it from its shelf reveals">
+ <PRINT-CONTENTS ,FIGURINE>
+ <TELL "." CR>)>>
+
+<OBJECT VIVIEN-CHAIR
+ (IN VIVIEN-ROOM)
+ (DESC "chaise longue")
+ (ADJECTIVE CHAISE)
+ (SYNONYM CHAIR CHAISE LONGUE LOUNGE)
+ (FLAGS SURFACEBIT VEHBIT OPENBIT NDESCBIT SEENBIT)
+ (CAPACITY 99)>
+]
+<ROOM WEST-HALL
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT WEARBIT)
+ (DESC "west hall")
+ (ADJECTIVE WEST)
+ (SYNONYM HALL HALLWAY ROOM)
+ (LDESC
+"There are bedrooms to the east and west. The gallery lies south."
+;"[E to Hyde, W to Ian, S to gallery]")
+ (LINE 2)
+ (STATION WEST-HALL)
+ (CHARACTER 3)
+ (GLOBAL HYDE-ROOM ;HYDE-DOOR IAN-ROOM ;IAN-DOOR)
+ (WEST TO IAN-ROOM IF IAN-ROOM ;IAN-DOOR IS OPEN)
+ (EAST TO HYDE-ROOM IF HYDE-ROOM ;HYDE-DOOR IS OPEN)
+ (SOUTH TO GALLERY)
+ (SE TO GALLERY)
+ (OUT TO GALLERY)>
+[
+<OBJECT SECRET-IAN-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET IAN\'S HIS PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)
+ ;(GENERIC GENERIC-IAN-DOOR)>
+
+<ROOM IAN-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "Ian's bedroom")
+ (ADJECTIVE IAN\'S HIS BED ROOM BEDROOM WEST)
+ (SYNONYM ROOM BEDROOM DOOR ;KEYHOLE)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION WEST-HALL)
+ (CHARACTER 3)
+ (GLOBAL IAN-ROOM SECRET-IAN-DOOR BATHROOM FIREPLACE
+ NIGHTSTAND-LG DRESSING-TABLE-LG WARDROBE-LG WINDOW)
+ (THINGS <PSEUDO ( IAN\'S BED BED-PSEUDO)
+ ( HIS BED BED-PSEUDO)>)
+ (NORTH TO SECRET-IAN-PASSAGE IF SECRET-IAN-DOOR IS OPEN)
+ (IN TO SECRET-IAN-PASSAGE IF SECRET-IAN-DOOR IS OPEN)
+ (OUT TO WEST-HALL IF IAN-ROOM ;IAN-DOOR IS OPEN)
+ (EAST TO WEST-HALL IF IAN-ROOM ;IAN-DOOR IS OPEN)
+ (ACTION IAN-ROOM-F)>
+
+<ROUTINE IAN-ROOM-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-BEG ,M-EXIT>
+ <SECRET-CHECK .RARG>)
+ (<EQUAL? .RARG ,P?NORTH ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+'IAN-ROOM " has rich wood panelling, a four-poster bed, Victorian
+washstand, and " 'IAN-CHAIR ". ">
+ <TELL-IAN-FIREPLACE>
+ <CRLF>
+ <COND (<OPEN-DOOR? ,SECRET-IAN-DOOR T>
+ <CRLF>)>
+ <RTRUE>)>>
+
+<ROUTINE TELL-IAN-FIREPLACE ()
+ <TELL
+"In the " 'FIREPLACE ", the fender has
+flashy grillwork, and the " 'ANDIRON "s have fancy carved heads.">>
+
+<OBJECT ANDIRON
+ (IN IAN-ROOM)
+ (DESC "andiron")
+ ;(ADJECTIVE CARVED)
+ (SYNONYM ANDIRON HEAD ;HEADS GRILLWORK)
+ (FLAGS VOWELBIT NDESCBIT)
+ (ACTION ANDIRON-F)>
+
+<ROUTINE ANDIRON-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL "By looking closely, you find that the head can turn." CR>)
+ (<VERB? MOVE MOVE-DIR PUSH RUB TURN>
+ <OPEN-SECRET "turn" ,ANDIRON ,SECRET-IAN-DOOR>
+ ;<TELL "As you turn the carved head,">)>>
+
+<OBJECT IAN-CHAIR
+ (IN IAN-ROOM)
+ (DESC "reclining Morris chair")
+ (ADJECTIVE RECLINE MORRIS)
+ (SYNONYM CHAIR SEAT)
+ (FLAGS SURFACEBIT VEHBIT OPENBIT NDESCBIT)
+ (CAPACITY 99)>
+][
+<OBJECT SECRET-HYDE-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET HYDE\'S HIS PASSAGE)
+ (SYNONYM DOOR)
+ (GENERIC GENERIC-BEDROOM)
+ (FLAGS SECRETBIT DOORBIT)
+ ;(GENERIC GENERIC-HYDE-DOOR)>
+
+<ROOM HYDE-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT NARTICLEBIT OPENBIT DOORBIT WEARBIT WORNBIT)
+ (DESC "Hyde's bedroom")
+ (ADJECTIVE HYDE\'S HIS ;HYDE BED ROOM BEDROOM EAST)
+ (SYNONYM ROOM BEDROOM DOOR ;KEYHOLE)
+ (GENERIC GENERIC-BEDROOM)
+ (LINE 2)
+ (STATION WEST-HALL)
+ (CHARACTER 3)
+ (GLOBAL HYDE-ROOM SECRET-HYDE-DOOR BATHROOM FIREPLACE
+ NIGHTSTAND-LG DRESSING-TABLE-LG WARDROBE-LG WINDOW)
+ (THINGS <PSEUDO ( HYDE\'S BED BED-PSEUDO)
+ ( HIS BED BED-PSEUDO)>)
+ (OUT TO WEST-HALL IF HYDE-ROOM ;HYDE-DOOR IS OPEN)
+ (WEST TO WEST-HALL IF HYDE-ROOM ;HYDE-DOOR IS OPEN)
+ (IN TO HYDE-CLOSET IF SECRET-HYDE-DOOR IS OPEN)
+ (NORTH TO HYDE-CLOSET IF SECRET-HYDE-DOOR IS OPEN)
+ (ACTION HYDE-ROOM-F)>
+
+<ROUTINE HYDE-ROOM-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-BEG ,M-EXIT>
+ <COND (<AND <VERB? OPEN CLOSE>
+ <DOBJ? SECRET-HYDE-DOOR>>
+ <YOU-CANT <> ,PLAYER "in this room" ;"here">
+ <RTRUE>)
+ (T <SECRET-CHECK .RARG>)>)
+ (<EQUAL? .RARG ,P?NORTH ,P?IN>
+ <ENTER-PASSAGE>
+ <RTRUE>)
+ (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+'HYDE-ROOM " has many tasteful antiques, such as " A ,HYDE-CHAIR
+" in one corner."
+;" looks like 'DOCTOR 's, but with a 'WARDROBE not a clothes press.">
+ <OPEN-DOOR? ,SECRET-HYDE-DOOR>
+ <CRLF>)>>
+
+<OBJECT HYDE-CHAIR
+ (IN HYDE-ROOM)
+ (DESC "armchair")
+ (ADJECTIVE ARM)
+ (SYNONYM CHAIR ARMCHAIR)
+ (FLAGS SURFACEBIT VEHBIT OPENBIT NDESCBIT VOWELBIT SEENBIT)
+ (CAPACITY 99)>
+]
diff --git a/colors.zap b/colors.zap
new file mode 100644
index 0000000..28de0c0
--- /dev/null
+++ b/colors.zap
@@ -0,0 +1,754 @@
+
+
+ .FUNCT INTRO
+ PRINTI "
+You drove west from London all day in your new little British "
+ PRINTD CAR
+ PRINTI ". Now at last you've arrived in the storied land of Cornwall.
+
+Dusk has fallen as you pull up in front of "
+ PRINTD CASTLE
+ PRINTI ". A ghostly "
+ PRINTD MOON
+ PRINTI " is rising, and a tall iron gate between two pillars bars the way into the "
+ PRINTD COURTYARD
+ PRINTI ".
+"
+ RTRUE
+
+
+ .FUNCT YOUR-COLOR-F
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? HERE,YOUR-ROOM /?PRG11
+ CALL VISIBLE?,CAR
+ ZERO? STACK \?PRG11
+ CALL VISIBLE?,EXERCISE-OUTFIT
+ ZERO? STACK \?PRG11
+ CALL VISIBLE?,DINNER-OUTFIT
+ ZERO? STACK \?PRG11
+ CALL VISIBLE?,SLEEP-OUTFIT
+ ZERO? STACK \?PRG11
+ CALL NOT-HERE,YOUR-COLOR
+ RSTACK
+?PRG11: PRINTI "It's "
+ PRINTD YOUR-COLOR
+ PRINTR "!"
+
+
+ .FUNCT GET-COLOR,NUM,N,WD,SUM=0,X,?TMP1
+ PUTB P-INBUF,0,30
+?PRG1: PRINTC 62
+ READ P-INBUF,P-LEXV
+ GETB P-LEXV,P-LEXWORDS >NUM
+ ZERO? NUM \?CND5
+ PRINTC 34
+ PRINT BEG-PARDON
+ PRINTI """ "
+ JUMP ?PRG1
+?CND5: SET 'N,P-LEXSTART
+?PRG9: GET P-LEXV,N >WD
+ CALL ZMEMQ,WD,COLOR-WORDS >X
+ ZERO? X /?CCL13
+ SET 'VARIATION,X
+?REP10: GETB P-LEXV,P-LEXWORDS
+ SUB STACK,1
+ MUL P-LEXELEN,STACK
+ ADD P-LEXSTART,STACK >WD
+ GET P-LEXV,WD
+ EQUAL? STACK,W?PERIOD,W?!,W?? \?CND16
+ SUB WD,P-LEXELEN >WD
+?CND16: ADD WD,1
+ MUL 2,STACK >N
+ GETB P-LEXV,N >?TMP1
+ ADD 1,N
+ GETB P-LEXV,STACK
+ ADD ?TMP1,STACK
+ ADD -1,STACK >WD
+ ADD P-INBUF,1
+ CALL NON-BLANK-STUFF,FAVE-COLOR,STACK,WD
+ PRINTI """Did you say "
+ PRINTD YOUR-COLOR
+ PRINTI " is "
+ CALL PRINT-COLOR,TRUE-VALUE
+ PRINTI "?"""
+ CALL YES?
+ ZERO? STACK /?PRG32
+ ZERO? VARIATION \?CND25
+ GETB P-LEXV,5
+ GETB P-INBUF,STACK >SUM
+ CALL ZMEMQ,SUM,COLOR-LETTERS >X
+ ZERO? X /?CCL29
+ SET 'VARIATION,X
+ JUMP ?CND27
+?CCL13: DLESS? 'NUM,1 /?REP10
+ ADD N,P-LEXELEN >N
+ JUMP ?PRG9
+?CCL29: EQUAL? SUM,112 \?CCL31
+ SET 'VARIATION,PAINTER-C
+ JUMP ?CND27
+?CCL31: MOD SUM,MAX-VARS
+ ADD 1,STACK >VARIATION
+?CND27: GET COLOR-WORDS,VARIATION >COLOR-FORCED
+?CND25: CALL DO-VARIATION
+ PUTB P-INBUF,0,80
+ RTRUE
+?PRG32: PRINTI """What, then?"""
+ CRLF
+ SET 'VARIATION,0
+ JUMP ?PRG1
+
+
+ .FUNCT FIX-COLOR-ADJ,OBJ,PT,N
+ GETPT OBJ,P?ADJECTIVE >PT
+ ZERO? PT /FALSE
+ PTSIZE PT
+ SUB STACK,1
+ CALL ZMEMQB,A?F.C,PT,STACK >N
+ ZERO? N /FALSE
+ GET COLOR-ADJS,VARIATION
+ PUTB PT,N,STACK
+ RTRUE
+
+
+ .FUNCT DO-VARIATION,C
+ CALL FIX-COLOR-ADJ,YOUR-COLOR
+ CALL FIX-COLOR-ADJ,YOUR-ROOM
+ CALL FIX-COLOR-ADJ,CAR
+ CALL FIX-COLOR-ADJ,SLEEP-OUTFIT
+ CALL FIX-COLOR-ADJ,EXERCISE-OUTFIT
+ CALL FIX-COLOR-ADJ,DINNER-OUTFIT
+ EQUAL? VARIATION,LORD-C \?CCL3
+ LOC LOVER >C
+ JUMP ?CND1
+?CCL3: EQUAL? VARIATION,FRIEND-C \?CCL5
+ SET 'C,IRIS-CLOSET
+ JUMP ?CND1
+?CCL5: EQUAL? VARIATION,PAINTER-C \?CCL7
+ SET 'C,VIVIEN-BOX
+ JUMP ?CND1
+?CCL7: SET 'C,WENDISH-KIT
+?CND1: SET 'HIDING-PLACE,C
+ MOVE COSTUME,C
+ MOVE BLOWGUN,C
+ EQUAL? VARIATION,LORD-C \?CCL10
+ SET 'VILLAIN-PER,LOVER
+ MOVE NECKLACE-OF-D,JACK-ROOM
+ MOVE JEWEL,LOCAL-GLOBALS
+ SET 'TREASURE,WAR-CLUB
+ MOVE CLUE-2,PAINTER
+ FSET STAINED-WINDOW,CONTBIT
+ MOVE CLUE-3,STAINED-WINDOW
+ MOVE CLUE-4,GARDEN
+ MOVE CANE,UMBRELLA-STAND
+ JUMP ?CND8
+?CCL10: EQUAL? VARIATION,FRIEND-C \?CCL13
+ SET 'VILLAIN-PER,FRIEND
+ MOVE TAMARA-EVIDENCE,TAMARA-BED
+ GETPT FRIEND,P?WEST
+ PUT STACK,NEXITSTR,STR?212
+ MOVE JOURNAL,TAMARA-BED
+ FSET JOURNAL,NDESCBIT
+ MOVE EARRING,JEWELRY-CASE
+ MOVE JEWEL,LOCAL-GLOBALS
+ SET 'TREASURE,NECKLACE
+ MOVE NECKLACE,SKELETON
+ MOVE CLUE-4,COFFIN
+ FCLEAR CLUE-4,NDESCBIT
+ FSET CLUE-4,TAKEBIT
+ MOVE CLUE-3,BELL
+ MOVE BRICKS,BASEMENT
+ JUMP ?CND8
+?CCL13: EQUAL? VARIATION,DOCTOR-C \?CCL15
+ SET 'VILLAIN-PER,DOCTOR
+ MOVE WENDISH-BOOK,BOOKCASE
+ MOVE LENS-BOX,WENDISH-KIT
+ FCLEAR LENS-BOX,NDESCBIT
+ FSET LENS-BOX,TAKEBIT
+ MOVE JOURNAL,DESK
+ MOVE LETTER-DEE,STUDY
+ SET 'TREASURE,MOONMIST
+ FSET MOONMIST,SECRETBIT
+ MOVE CLUE-3,RHINO-HEAD
+ MOVE CLUE-4,GALLERY-CORNER
+ FCLEAR CLUE-4,NDESCBIT
+ FSET CLUE-4,TAKEBIT
+ MOVE MOONMIST,INKWELL
+ JUMP ?CND8
+?CCL15: EQUAL? VARIATION,PAINTER-C \?CND8
+ SET 'VILLAIN-PER,PAINTER
+ MOVE VIVIEN-DIARY,VIVIEN-BOX
+ MOVE LENS-BOX,VIVIEN-BOX
+ FCLEAR LENS-BOX,NDESCBIT
+ FSET LENS-BOX,TAKEBIT
+ SET 'TREASURE,SKULL
+ MOVE SKULL,BELL
+ FSET MUSIC,SECRETBIT
+ MOVE CLUE-3,ARMOR
+?CND8: EQUAL? VILLAIN-PER,LOVER \?CCL21
+ SET 'SEARCHER,LORD
+ JUMP ?CND19
+?CCL21: SET 'SEARCHER,VILLAIN-PER
+?CND19: FSET? VILLAIN-PER,FEMALE \FALSE
+ FSET GHOST-NEW,FEMALE
+ RTRUE
+
+
+ .FUNCT CANE-F,P
+ CALL ATTACK-VERB?
+ ZERO? STACK /?CCL3
+ CALL NO-VIOLENCE?,CANE
+ RTRUE
+?CCL3: CALL DISCOVER-WAR-CLUB,CANE
+ RSTACK
+
+
+ .FUNCT PAINT-F
+ EQUAL? PRSA,V?EXAMINE \?CCL3
+ PRINTR "It seems to be hiding something."
+?CCL3: EQUAL? PRSA,V?TAKE-OFF,V?RUB /?CTR6
+ EQUAL? PRSA,V?REMOVE,V?LOOK-UNDER,V?BRUSH /?CTR6
+ EQUAL? PRSA,V?TAKE \?CCL7
+ ZERO? PRSI /?CCL7
+?CTR6: CALL DISCOVER-WAR-CLUB,CANE,TRUE-VALUE
+ RTRUE
+?CCL7: CALL DIVESTMENT?,PAINT
+ ZERO? STACK /FALSE
+ CALL HAR-HAR
+ RSTACK
+
+
+ .FUNCT DISCOVER-WAR-CLUB,OBJ,DO-IT=0,PER
+ EQUAL? PRSA,V?RUB,V?BRUSH /?CTR2
+ ZERO? DO-IT /?CCL3
+?CTR2: FSET? WAR-CLUB,SECRETBIT \FALSE
+ CALL DISCOVER,WAR-CLUB,PAINT
+ LOC OBJ
+ MOVE WAR-CLUB,STACK
+ LOC OBJ
+ CALL ROB,OBJ,STACK
+ MOVE OBJ,LOCAL-GLOBALS
+ MOVE PAINT,LOCAL-GLOBALS
+ RTRUE
+?CCL3: EQUAL? PRSA,V?SEARCH,V?EXAMINE \FALSE
+ FSET? WAR-CLUB,SECRETBIT \FALSE
+ FCLEAR PAINT,SECRETBIT
+ PRINTI "There's something strange about this "
+ PRINTD OBJ
+ PRINTI ". It's shaped like a baseball bat, but with hard, faceted bumps all over it. It has a new "
+ PRINTD PAINT
+ PRINTR "."
+
+
+ .FUNCT ATTACK-VERB?,SHOOT=0
+ EQUAL? PRSA,V?SLAP,V?KILL,V?ATTACK \?CCL3
+ FSET? PRSO,PERSONBIT /TRUE
+ RFALSE
+?CCL3: EQUAL? PRSA,V?SHOOT \?CCL8
+ ZERO? SHOOT /FALSE
+ FSET? PRSO,PERSONBIT /TRUE
+ RFALSE
+?CCL8: EQUAL? PRSA,V?PUT,V?RING \?CCL15
+ ZERO? SHOOT /FALSE
+ ZERO? PRSI /TRUE
+ FSET? PRSI,PERSONBIT /TRUE
+ RFALSE
+?CCL15: EQUAL? PRSA,V?USE \FALSE
+ ZERO? PRSI /TRUE
+ FSET? PRSI,PERSONBIT /TRUE
+ RFALSE
+
+
+ .FUNCT WAR-CLUB-F
+ EQUAL? PRSA,V?COMPARE \?CCL3
+ EQUAL? JEWEL,PRSO,PRSI \FALSE
+ CALL START-SENTENCE,WAR-CLUB
+ PRINTI " has no "
+ PRINTD JEWEL
+ PRINTR " like this one."
+?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL10
+ CALL DESCRIBE-WAR-CLUB
+ RSTACK
+?CCL10: CALL ATTACK-VERB?
+ ZERO? STACK /FALSE
+ CALL NO-VIOLENCE?,WAR-CLUB
+ RTRUE
+
+
+ .FUNCT DESCRIBE-WAR-CLUB
+ PRINTI "It's a "
+ PRINTD WAR-CLUB
+ PRINTR " that once belonged to the Zulu king Dingaan -- and it's studded with large diamonds!"
+
+
+ .FUNCT SKULL-F
+ EQUAL? PRSA,V?SEARCH,V?LOOK-INSIDE,V?EXAMINE \FALSE
+ PRINTR "This staring skull is frightfully old -- even older than the castle."
+
+
+ .FUNCT MOONMIST-F
+ EQUAL? PRSA,V?READ,V?PLAY /?CTR2
+ EQUAL? PRSA,V?FIND,V?EXAMINE \?CCL3
+ IN? MOONMIST,GLOBAL-OBJECTS \?CCL3
+?CTR2: SET 'CLOCK-WAIT,TRUE-VALUE
+ PRINTR "[You're playing it now!]"
+?CCL3: CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?TAKE \?CCL13
+ IN? MOONMIST,GLOBAL-OBJECTS /?CCL16
+ CALL VISIBLE?,MOONMIST
+ ZERO? STACK /?CCL16
+ LOC MOONMIST
+ CALL PERFORM,PRSA,STACK,PRSI
+ RTRUE
+?CCL16: CALL YOU-CANT
+ RSTACK
+?CCL13: CALL NOT-HOLDING?,PRSO
+ ZERO? STACK \TRUE
+ EQUAL? PRSA,V?PUT,V?POUR \?CCL22
+ ZERO? PRSI /?CND23
+ FSET? PRSI,PERSONBIT \?CND23
+ CALL SHOOTING,MOONMIST
+ ZERO? STACK /?CND23
+ RETURN 2
+?CND23: MOVE MOONMIST,LOCAL-GLOBALS
+ CALL START-SENTENCE,MOONMIST
+ PRINTI " dribbles "
+ ZERO? PRSI \?CCL34
+ CALL GROUND-DESC
+ PRINT STACK
+ JUMP ?PRG43
+?CCL34: FSET? PRSI,SURFACEBIT /?PRG41
+ PRINTI "into"
+ CALL PRINTT,PRSI
+ JUMP ?PRG43
+?PRG41: PRINTI "on"
+ CALL PRINTT,PRSI
+?PRG43: PRINTR ", sizzles, and evaporates."
+?CCL22: CALL DIVESTMENT?,MOONMIST
+ ZERO? STACK /?CCL46
+ CALL PERFORM,PRSA,INKWELL,PRSI
+ RTRUE
+?CCL46: EQUAL? PRSA,V?EAT,V?DRINK \?CCL49
+ EQUAL? WINNER,PLAYER \FALSE
+ PRINTI "First it puts your tongue to sleep. Then your tummy. Then your brain."
+ CALL FINISH
+ RSTACK
+?CCL49: EQUAL? PRSA,V?SMELL,V?EXAMINE \?CCL56
+ PRINTR "It's a greenish liquid with a strong odor."
+?CCL56: CALL SHOOTING,MOONMIST
+ RSTACK
+
+
+ .FUNCT CLUE-1-F
+ EQUAL? PRSA,V?COMPARE \?CCL3
+ EQUAL? TREASURE,PRSO,PRSI \FALSE
+ CALL START-SENTENCE,TREASURE
+ EQUAL? VARIATION,LORD-C \?PRG16
+ FSET? PLAYER,FEMALE /?PRG16
+ PRINTI " looks just like the one on"
+ JUMP ?PRG18
+?PRG16: PRINTI " seems to match"
+?PRG18: PRINTI " the "
+ PRINTD CLUE-1
+ PRINTR "!"
+?CCL3: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
+ FSET? CLUE-1,TOUCHBIT /?CND22
+ PRINTR "You can't see its face."
+?CND22: CALL NOT-HOLDING?,PRSO
+ ZERO? STACK \TRUE
+ PRINTI "The "
+ PRINTD CLUE-1
+ PRINTI " shows "
+ EQUAL? VARIATION,LORD-C \?CCL32
+ PRINTI "the King of "
+ FSET? PLAYER,FEMALE \?PRG40
+ PRINTR "Spades, holding a sceptre."
+?PRG40: PRINTI "Clubs in one corner, with a picture of an African chief holding a "
+ PRINTD WAR-CLUB
+ PRINTR "; in the other corner is the King of Diamonds, with a picture of a crowned vulture clutching a diamond."
+?CCL32: EQUAL? VARIATION,FRIEND-C \?CCL43
+ FSET? PLAYER,FEMALE \?PRG49
+ PRINTR "a Polynesian diver, holding a knife and plunging through black water."
+?PRG49: PRINTR "a photo of singer Pearl Bailey."
+?CCL43: EQUAL? VARIATION,DOCTOR-C \?CCL52
+ FSET? PLAYER,FEMALE \?PRG58
+ PRINTD CASTLE
+ PRINTI ", with a cloud of mist hiding the "
+ PRINTD MOON
+ PRINTR "."
+?PRG58: PRINTI "an Amazon hunter, aiming a "
+ PRINTD BLOWGUN
+ PRINTR " at the tree tops."
+?CCL52: EQUAL? VARIATION,PAINTER-C \FALSE
+ PRINTI "a "
+ PRINTD SKELETON
+ PRINTR " in Chinese mandarin costume."
+
+
+ .FUNCT CLUE-2-F
+ EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
+ CALL NOT-HOLDING?,PRSO
+ ZERO? STACK \TRUE
+ FSET CLUE-2,TOUCHBIT
+ CALL HE-SHE-IT,CLUE-2,TRUE-VALUE
+ PRINTI " says,"
+ CRLF
+ EQUAL? VARIATION,LORD-C \?CCL10
+ SET 'CLUE-LOC,CHAPEL
+ PRINTR """Forbidden fruit tempted the very first lass.
+'Twas once in a garden but now in a glass."""
+?CCL10: EQUAL? VARIATION,PAINTER-C \?CCL15
+ FSET? MUSIC,TOUCHBIT /?CCL18
+ SET 'CLUE-LOC,SITTING-ROOM
+ JUMP ?PRG21
+?CCL18: FSET? BOTTLE,TOUCHBIT /?CCL20
+ SET 'CLUE-LOC,BASEMENT
+ JUMP ?PRG21
+?CCL20: SET 'CLUE-LOC,DRAWING-ROOM
+?PRG21: PRINTR """Three fellows argued about life:
+1. 'Using this motto, no chap can go wrong:
+ Leave the wench and the grape, but go with a ____!'
+2. 'On the seas of my life sails a ship that is laden
+ Not with bottles or tunes, but with innocent ______s!'
+3. 'Women and singing are both very fine,
+ But for me there is nothing to equal good ____!'"""
+?CCL15: EQUAL? VARIATION,DOCTOR-C \?CCL24
+ SET 'CLUE-LOC,GAME-ROOM
+ PRINTR """My first is an 'I,' but find an 'eye' that sees not."""
+?CCL24: SET 'CLUE-LOC,DECK
+ PRINTR """... Yet the ear distinctly tells,...
+How the danger sinks and swells,
+By the sinking or the swelling in the anger of the ____s..."""
+
+
+ .FUNCT CLUE-3-F
+ EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
+ CALL NOT-HOLDING?,PRSO
+ ZERO? STACK \TRUE
+ FSET CLUE-3,TOUCHBIT
+ FSET CLUE-3,TAKEBIT
+ CALL HE-SHE-IT,CLUE-3,TRUE-VALUE
+ PRINTI " says,
+"
+ EQUAL? VARIATION,LORD-C \?CCL10
+ SET 'CLUE-LOC,GARDEN
+ PRINTR """Despite its appearance, the fruit was quite sour.
+One bite of the apple drove Eve from her bower."""
+?CCL10: EQUAL? VARIATION,FRIEND-C \?CCL14
+ SET 'CLUE-LOC,0
+ PRINTR """... And so, all the night-tide, I lie down by the side
+Of my darling -- my darling -- my life and my bride,...
+In her tomb by the sounding sea."""
+?CCL14: EQUAL? VARIATION,DOCTOR-C \?CCL18
+ SET 'CLUE-LOC,GALLERY
+ PRINTR """My second is in never but not in ever, and lies in a hidden 'end'."""
+?CCL18: SET 'CLUE-LOC,DECK
+ PRINTR """My al___ has no glamour;
+Its '____e' tones do clam___.
+Can you find me?"""
+
+
+ .FUNCT CLUE-4-F
+ EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
+ CALL NOT-HOLDING?,PRSO
+ ZERO? STACK \TRUE
+ FSET CLUE-4,TOUCHBIT
+ FSET CLUE-4,TAKEBIT
+ CALL HE-SHE-IT,CLUE-4,TRUE-VALUE
+ PRINTI " says,
+"
+ EQUAL? VARIATION,LORD-C \?CCL10
+ SET 'CLUE-LOC,FOYER
+ PRINTR """Out of the sunshine, into the rain...
+The end of the story is... Abel and CAIN.""
+The last word is underlined."
+?CCL10: EQUAL? VARIATION,FRIEND-C \?CCL14
+ SET 'CLUE-LOC,BASEMENT
+ PRINTR """If you search for 'A Cask of Amontillado,' don't get trapped!"""
+?CCL14: SET 'CLUE-LOC,OFFICE
+ PRINTR """My third is the silent side of knight.
+All together I am what you could use for poison-pen letters."""
+
+
+ .FUNCT PRINT-COLOR,X=0
+ ZERO? VARIATION \?CCL3
+ ZERO? X /FALSE
+?CCL3: GETB FAVE-COLOR,0
+ CALL WORD-PRINT,STACK,1,FAVE-COLOR
+ ZERO? COLOR-FORCED /TRUE
+ PRINTI " and "
+ PRINTB COLOR-FORCED
+ RTRUE
+
+
+ .FUNCT TELL-SUFFIX,I,J=1
+ GETB SUFFIX,0 >I
+ ZERO? I /FALSE
+ PRINTI ", "
+ EQUAL? JUNIOR-C,I \?CCL7
+ PRINTI "Junior"
+ RTRUE
+?CCL7: EQUAL? SENIOR-C,I \?PRG13
+ PRINTI "Senior"
+ RTRUE
+?PRG13: GETB SUFFIX,J
+ PRINTC STACK
+ DLESS? 'I,1 /TRUE
+ INC 'J
+ JUMP ?PRG13
+
+
+ .FUNCT TITLE-NAME
+ CALL TITLE
+ EQUAL? TITLE-WORD,W?MRS,W?MS,W?MISS /?PRG7
+ EQUAL? TITLE-WORD,W?MISTER,W?MR /?PRG7
+ EQUAL? TITLE-WORD,W?DOCTOR,W?DR \?PRG9
+?PRG7: CALL PRINT-NAME,LAST-NAME
+ RSTACK
+?PRG9: CALL PRINT-NAME,FIRST-NAME
+ RSTACK
+
+
+ .FUNCT TITLE
+ EQUAL? TITLE-WORD,W?MRS \?CCL3
+ PRINTI "Mrs. "
+ RTRUE
+?CCL3: EQUAL? TITLE-WORD,W?MS \?CCL7
+ PRINTI "Ms. "
+ RTRUE
+?CCL7: EQUAL? TITLE-WORD,W?MISS \?CCL11
+ PRINTI "Miss "
+ RTRUE
+?CCL11: EQUAL? TITLE-WORD,W?LADY \?CCL15
+ PRINTI "Lady "
+ RTRUE
+?CCL15: EQUAL? TITLE-WORD,W?DAME \?CCL19
+ PRINTI "Dame "
+ RTRUE
+?CCL19: EQUAL? TITLE-WORD,W?MADAME,W?MADAM \?CCL23
+ PRINTI "Madame "
+ RTRUE
+?CCL23: EQUAL? TITLE-WORD,W?DOCTOR,W?DR \?CCL27
+ PRINTI "Dr. "
+ RTRUE
+?CCL27: EQUAL? TITLE-WORD,W?LORD \?CCL31
+ PRINTI "Lord "
+ RTRUE
+?CCL31: EQUAL? TITLE-WORD,W?SIR \?CCL35
+ PRINTI "Sir "
+ RTRUE
+?CCL35: EQUAL? TITLE-WORD,W?MISTER,W?MR \?CCL39
+ PRINTI "Mr. "
+ RTRUE
+?CCL39: EQUAL? TITLE-WORD,W?MASTER \FALSE
+ PRINTI "Master "
+ RTRUE
+
+
+ .FUNCT NON-BLANK-STUFF,DEST,SRC,CNT,ND=1,NS=0,B,OB=32
+ DEC 'CNT
+?PRG1: GETB SRC,NS >B
+ EQUAL? B,32 \?CCL4
+ EQUAL? NS,CNT /?CND3
+ EQUAL? OB,32 /?CND3
+?CCL4: PUTB DEST,ND,B
+ INC 'ND
+ SET 'OB,B
+?CND3: IGRTR? 'NS,CNT \?PRG1
+ SUB ND,1
+ PUTB DEST,0,STACK
+ RTRUE
+
+
+ .FUNCT FULL-NAME,NO-TELL=0
+ PUTB SUFFIX,0,0
+ PUTB LAST-NAME,0,0
+ SET 'MIDDLE-WORD,0
+ SET 'TITLE-WORD,0
+ ZERO? NO-TELL \TRUE
+ PRINTR """I said: Please state your full name."""
+
+
+ .FUNCT GET-NAME,NUM,N,M,I,BEG,END,?TMP1
+ PUTB P-INBUF,0,30
+?PRG1: PRINTC 62
+ READ P-INBUF,P-LEXV
+ GETB P-LEXV,P-LEXWORDS >NUM
+ ZERO? NUM \?CND5
+ PRINTC 34
+ PRINT BEG-PARDON
+ PRINTI """ "
+ JUMP ?PRG1
+?CND5: SET 'N,P-LEXSTART
+ GET P-LEXV,N >BEG
+ CALL TITLE-NOUN?,BEG
+ ZERO? STACK /?CND9
+ DEC 'NUM
+ ADD N,P-LEXELEN >N
+ SET 'TITLE-WORD,BEG
+ EQUAL? BEG,W?DOCTOR,W?DR,W?DETECT /?CND11
+ SET 'GENDER-KNOWN,TRUE-VALUE
+?CND11: EQUAL? BEG,W?MR,W?MISTER,W?MASTER /?CCL15
+ EQUAL? BEG,W?LORD,W?SIR \?PRG18
+?CCL15: FCLEAR PLAYER,FEMALE
+?PRG18: GET P-LEXV,N
+ EQUAL? STACK,W?PERIOD \?CND9
+ DEC 'NUM
+ ADD N,P-LEXELEN >N
+ JUMP ?PRG18
+?CND9: LESS? NUM,2 \?CND23
+ EQUAL? BEG,W?QUIT,W?Q \?CCL27
+ CALL V-QUIT
+ JUMP ?CND25
+?CCL27: EQUAL? BEG,W?RESTART \?CCL29
+ CALL V-RESTART
+ JUMP ?CND25
+?CCL29: EQUAL? BEG,W?RESTORE \?CND25
+ CALL V-RESTORE
+?CND25: CALL FULL-NAME
+ JUMP ?PRG1
+?CND23: SET 'BEG,N
+ SUB NUM,1
+ MUL P-LEXELEN,STACK
+ ADD N,STACK >END
+?PRG31: GET P-LEXV,END
+ EQUAL? STACK,W?PERIOD,W?!,W?? \?REP32
+ SUB END,P-LEXELEN >END
+ JUMP ?PRG31
+?REP32: LESS? BEG,END /?CND36
+ CALL FULL-NAME
+ JUMP ?PRG1
+?CND36: GET P-LEXV,END
+ EQUAL? STACK,W?SR,W?SENIOR \?CCL40
+ SUB END,P-LEXELEN >END
+ PUTB SUFFIX,0,SENIOR-C
+ JUMP ?PRG51
+?CCL40: GET P-LEXV,END
+ EQUAL? STACK,W?JR,W?JUNIOR \?CCL42
+ SUB END,P-LEXELEN >END
+ PUTB SUFFIX,0,JUNIOR-C
+ JUMP ?PRG51
+?CCL42: ADD END,1
+ MUL 2,STACK >N
+ GETB P-LEXV,N >NUM
+ LESS? NUM,6 \?PRG51
+ ADD 1,N
+ GETB P-LEXV,STACK >M
+ SET 'I,0
+?PRG44: DLESS? 'NUM,0 /?CCL48
+ GETB P-INBUF,M
+ EQUAL? STACK,105,118,120 \?PRG51
+ INC 'I
+ GETB P-INBUF,M
+ SUB STACK,32
+ PUTB SUFFIX,I,STACK
+ INC 'M
+ JUMP ?PRG44
+?CCL48: PUTB SUFFIX,0,I
+ SUB END,P-LEXELEN >END
+?PRG51: GET P-LEXV,END
+ EQUAL? STACK,W?PERIOD,W?COMMA,W?THE \?REP52
+ SUB END,P-LEXELEN >END
+ JUMP ?PRG51
+?REP52: LESS? BEG,END /?CND56
+ CALL FULL-NAME
+ JUMP ?PRG1
+?CND56: ADD END,1
+ MUL 2,STACK >N
+ GETB P-LEXV,N >NUM
+ SUB END,P-LEXELEN >END
+ GET P-LEXV,END
+ EQUAL? STACK,W?APOSTROPHE \?CND58
+ SUB END,P-LEXELEN >END
+ ADD END,1
+ MUL 2,STACK >N
+ GETB P-LEXV,N
+ ADD NUM,STACK >NUM
+ INC 'NUM
+?CND58: GRTR? BEG,END \?CND60
+ CALL FULL-NAME
+ JUMP ?PRG1
+?CND60: ADD BEG,P-LEXELEN >I
+?PRG62: GRTR? I,END \?CCL66
+ SET 'MIDDLE-WORD,0
+ JUMP ?REP63
+?CCL66: GET P-LEXV,I >M
+ EQUAL? M,W?THE,W?OF,W?COMMA /?CCL68
+ ADD I,P-LEXELEN >I
+ JUMP ?PRG62
+?CCL68: SET 'MIDDLE-WORD,M
+ ADD I,P-LEXELEN
+ ADD 1,STACK
+ MUL 2,STACK >M
+ ADD 1,N
+ GETB P-LEXV,STACK >?TMP1
+ ADD 1,M
+ GETB P-LEXV,STACK
+ SUB ?TMP1,STACK
+ ADD NUM,STACK >NUM
+ SET 'N,M
+?REP63: ADD 1,N
+ GETB P-LEXV,STACK
+ ADD P-INBUF,STACK
+ CALL NON-BLANK-STUFF,LAST-NAME,STACK,NUM
+ SUB N,P-WORDLEN >N
+ ZERO? MIDDLE-WORD /?CND69
+ SUB N,P-WORDLEN >N
+?CND69: MUL 2,BEG
+ ADD 3,STACK
+ GETB P-LEXV,STACK >BEG
+ GETB P-LEXV,N >?TMP1
+ ADD 1,N
+ GETB P-LEXV,STACK
+ ADD ?TMP1,STACK
+ ADD -1,STACK >END
+ SUB END,BEG
+ ADD 1,STACK >N
+ ADD P-INBUF,BEG
+ CALL NON-BLANK-STUFF,FIRST-NAME,STACK,N
+ PRINTI """Did you say your name is "
+ CALL TELL-FULL-NAME
+ PRINTI "?"""
+ CALL YES?
+ ZERO? STACK /?PRG78
+ PUTB P-INBUF,0,80
+ RTRUE
+?PRG78: PRINTI """Then please speak up.""
+"
+ CALL FULL-NAME,TRUE-VALUE
+ JUMP ?PRG1
+
+
+ .FUNCT PRINT-NAME,TBL,PTR=0,LEN,CH,OCH,SP?=1
+ GETB TBL,0 >LEN
+?PRG1: IGRTR? 'PTR,LEN /?REP2
+ SET 'OCH,CH
+ GETB TBL,PTR >CH
+ LESS? CH,97 /?CTR6
+ GRTR? CH,122 \?CCL7
+?CTR6: PRINTC CH
+ JUMP ?CND5
+?CCL7: ZERO? SP? /?CCL11
+ SUB CH,32
+ PRINTC STACK
+ JUMP ?CND5
+?CCL11: EQUAL? OCH,39 \?CTR12
+ EQUAL? PTR,LEN /?CTR12
+ ADD 1,PTR
+ GETB TBL,STACK
+ EQUAL? 32,STACK \?CCL13
+?CTR12: PRINTC CH
+ JUMP ?CND5
+?CCL13: SUB CH,32
+ PRINTC STACK
+?CND5: EQUAL? CH,32,46 /?CTR18
+ EQUAL? CH,45,38 \?CCL19
+?CTR18: SET 'SP?,TRUE-VALUE
+ JUMP ?PRG1
+?CCL19: SET 'SP?,FALSE-VALUE
+ JUMP ?PRG1
+?REP2: EQUAL? CH,46 /FALSE
+ RTRUE
+
+ .ENDI
diff --git a/colors.zil b/colors.zil
index 23377f5..9664074 100644
--- a/colors.zil
+++ b/colors.zil
@@ -82,6 +82,8 @@ into the " 'COURTYARD ".|">>
(T <SET SUM <+ .SUM <GETB ,P-INBUF .NUM>>>)>>
<COND (<SET X <ZMEMQ .SUM ,COLOR-LETTERS>>
<SETG VARIATION .X>)
+ (<EQUAL? .SUM %<ASCII !\p>> ;"pink => blue"
+ <SETG VARIATION ,PAINTER-C>)
(T <SETG VARIATION <+ 1 <MOD .SUM ,MAX-VARS>>>)>
<SETG COLOR-FORCED <GET ,COLOR-WORDS ,VARIATION>>)>
<DO-VARIATION>
@@ -681,7 +683,7 @@ what you could use for poison-pen letters.\"" CR>)>)>>
<GLOBAL FIRST-NAME <TABLE #BYTE 0 #BYTE 120
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>> "x"
<GLOBAL LAST-NAME <TABLE #BYTE 0 #BYTE 116 #BYTE 101 #BYTE 115
- #BYTE 116 #BYTE 101 #BYTE 114
+ #BYTE 116 #BYTE 101 #BYTE 114 #BYTE 0
0 0 0 0 0 0 0 0 0 0 0 0>> "tester"
<GLOBAL SUFFIX <TABLE #BYTE 0 #BYTE 0 0 0>>
diff --git a/global.zap b/global.zap
new file mode 100644
index 0000000..bf46824
--- /dev/null
+++ b/global.zap
@@ -0,0 +1,667 @@
+
+
+ .FUNCT LOCAL-GLOBALS-F
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ CALL CREEPY?,HERE
+ ZERO? STACK \?CTR4
+ CALL OUTSIDE?,HERE
+ ZERO? STACK /?CCL5
+?CTR4: CALL RANDOM-PSEUDO
+ RSTACK
+?CCL5: CALL NOT-HERE,LOCAL-GLOBALS
+ RSTACK
+
+
+ .FUNCT UPSTAIRS-DOWNSTAIRS,N,TBL,HR,?TMP1
+ LOC WINNER >HR
+ EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /?CCL3
+ EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-DOWN,V?BOARD \FALSE
+?CCL3: FSET? HR,SECRETBIT /FALSE
+ FSET? HR,WEARBIT \?CCL10
+ SET 'TBL,WING-STAIRS
+ JUMP ?CND6
+?CCL10: SET 'TBL,TOWER-STAIRS
+?CND6: EQUAL? PRSA,V?CLIMB-UP,V?BOARD \?CCL13
+ GETPT HR,P?UP
+ ZERO? STACK /?CCL17
+ CALL DO-WALK,P?UP
+ RTRUE
+?CCL17: GETP HR,P?CHARACTER >N
+ ZERO? N /FALSE
+ GET TBL,0 >?TMP1
+ INC 'N
+ LESS? ?TMP1,N /FALSE
+ GET TBL,N >N
+ CALL PERFORM,V?WALK-TO,N
+ RTRUE
+?CCL13: GETPT HR,P?DOWN
+ ZERO? STACK /?CCL24
+ CALL DO-WALK,P?DOWN
+ RTRUE
+?CCL24: GETP HR,P?CHARACTER >N
+ ZERO? N /FALSE
+ DEC 'N
+ LESS? 0,N \FALSE
+ GET TBL,N >N
+ CALL PERFORM,V?WALK-TO,N
+ RTRUE
+
+
+ .FUNCT DO-INSTEAD-OF,OBJ1,OBJ2
+ EQUAL? PRSI,OBJ2 \?CCL3
+ CALL PERFORM,PRSA,PRSO,OBJ1
+ RTRUE
+?CCL3: EQUAL? PRSO,OBJ2 \?CCL5
+ CALL PERFORM,PRSA,OBJ1,PRSI
+ RTRUE
+?CCL5: CALL V-FOO
+ RSTACK
+
+
+ .FUNCT TURN-F
+ EQUAL? PRSA,V?USE \FALSE
+ CALL PERFORM,V?WAIT-FOR,PRSO
+ RTRUE
+
+
+ .FUNCT IT-F
+ EQUAL? PRSI,IT \?PRD5
+ EQUAL? PRSA,V?TELL-ABOUT /?PRG12
+ EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?PRG12
+?PRD5: EQUAL? PRSO,IT \FALSE
+ EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE
+?PRG12: PRINTR """I'm not sure what you're talking about."""
+
+
+ .FUNCT FLOOR-F,OBJ=0,N
+ EQUAL? PRSA,V?CLIMB-ON \?CCL3
+ CALL ALREADY,WINNER,STR?278
+ RSTACK
+?CCL3: EQUAL? PRSA,V?THROW-AT,V?PUT \?CCL5
+ EQUAL? PRSO,MOONMIST /?CCL5
+ EQUAL? PRSI,FLOOR \?CCL5
+ MOVE PRSO,HERE
+ PRINTR "Okay."
+?CCL5: EQUAL? PRSA,V?SEARCH-FOR /?CTR11
+ EQUAL? PRSA,V?SEARCH,V?LOOK-ON,V?EXAMINE \?CCL12
+?CTR11: EQUAL? HERE,DRAWING-ROOM \?CCL17
+ PRINTI "The carpet ends flush with the archway to the "
+ PRINTD GREAT-HALL
+ PRINTI ", where the footsteps of visitors have begun to wear it thin. It's a magnificent red Brussels carpet with deep pile and a medieval design."
+ CRLF
+ JUMP ?CND15
+?CCL17: EQUAL? HERE,GREAT-HALL \?CND15
+ CALL GREAT-HALL-IS-FLOORED
+?CND15: EQUAL? HERE,GARDEN \?CCL23
+ EQUAL? VARIATION,LORD-C \?CCL23
+ FSET? CLUE-4,SECRETBIT \?CCL23
+ SET 'OBJ,CLUE-4
+ JUMP ?CND21
+?CCL23: EQUAL? HERE,DRAWING-ROOM \?CCL28
+ EQUAL? VARIATION,LORD-C,FRIEND-C \?CCL28
+ FSET? JEWEL,TOUCHBIT /?CCL28
+ SET 'OBJ,JEWEL
+ JUMP ?CND21
+?CCL28: EQUAL? HERE,GREAT-HALL \?CND21
+ EQUAL? VARIATION,DOCTOR-C,PAINTER-C \?CND21
+ EQUAL? FOUND-IT-PERM,LENS,LENS-2 /?CND21
+ SET 'OBJ,LENS
+?CND21: CALL START-SEARCH,OBJ
+ RTRUE
+?CCL12: CALL ADJ-USED?,W?DRAWING
+ ZERO? STACK /?CCL37
+ EQUAL? HERE,DRAWING-ROOM /FALSE
+ CALL DO-INSTEAD-OF,DRAWING-ROOM,FLOOR
+ RTRUE
+?CCL37: CALL ADJ-USED?,W?GREAT
+ ZERO? STACK /FALSE
+ EQUAL? HERE,GREAT-HALL /FALSE
+ CALL DO-INSTEAD-OF,GREAT-HALL,FLOOR
+ RTRUE
+
+
+ .FUNCT START-SEARCH,OBJ=0
+ PRINTI "Nothing suspicious meets your eye after a moment's scrutiny. Do you want to continue?"
+ CALL YES?
+ ZERO? STACK \?CCL5
+ CALL OKAY
+ RTRUE
+?CCL5: SET 'FOUND-IT,OBJ
+ SET 'FOUND-LOC,HERE
+ RANDOM 7
+ CALL QUEUE,I-FOUND-IT,STACK
+ CALL V-WAIT,8,FALSE-VALUE,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT I-FOUND-IT,GARG=0,OBJ
+ EQUAL? FOUND-LOC,HERE \FALSE
+ EQUAL? FOUND-IT,JEWEL \?CCL5
+ MOVE FOUND-IT,HERE
+ PRINTI "Suddenly you notice a glittering speck. Probing for it with your fingers, you discover a "
+ PRINTD JEWEL
+ PRINTC 46
+ CRLF
+ JUMP ?CND1
+?CCL5: EQUAL? FOUND-IT,LENS \?CCL9
+ FSET? LENS,SEENBIT /?CCL12
+ LOC LENS
+ MOVE LENS-2,STACK
+ JUMP ?CND10
+?CCL12: FSET? LENS-2,SEENBIT /FALSE
+ SET 'FOUND-IT,LENS-2
+ LOC LENS
+ MOVE LENS-1,STACK
+ REMOVE LENS
+?CND10: MOVE FOUND-IT,HERE
+ PRINTI "Suddenly you find something small, smooth and slippery -- a "
+ PRINTD FOUND-IT
+ PRINTI "! Its transparency, of course, made it practically invisible."
+ ZERO? BUTLER-GHOST-STORY-TOLD /?CND17
+ PRINTI " No wonder you and the ghost had such a hard time finding it!"
+?CND17: CRLF
+ JUMP ?CND1
+?CCL9: ZERO? FOUND-IT \?CCL22
+ PRINT NOTHING-NEW
+ RETURN 2
+?CCL22: FSET? FOUND-IT,SECRETBIT \?PRG29
+ CALL DISCOVER,FOUND-IT
+ JUMP ?CND1
+?PRG29: PRINTC 89
+ PRINT OU-STOP-SEARCHING
+ PRINTI " when you find"
+ CALL PRINTT,FOUND-IT
+ PRINTI ".
+"
+?CND1: FSET FOUND-IT,TOUCHBIT
+ FSET FOUND-IT,SEENBIT
+ EQUAL? FOUND-IT,YOUR-SWITCH /?CND32
+ FCLEAR FOUND-IT,NDESCBIT
+?CND32: EQUAL? FOUND-IT,LENS,LENS-2 \?CND34
+ SET 'FOUND-IT-PERM,FOUND-IT
+?CND34: SET 'FOUND-IT,FALSE-VALUE
+ RETURN 2
+
+
+ .FUNCT YOU-F,X
+ EQUAL? WINNER,PLAYER /?CCL3
+ CALL DO-INSTEAD-OF,WINNER,YOU
+ RTRUE
+?CCL3: EQUAL? PRSA,V?ASK-ABOUT \?CCL5
+ EQUAL? PRSI,YOU \?CCL5
+ CALL PERFORM,V?ASK-ABOUT,PRSO,PRSO
+ RTRUE
+?CCL5: EQUAL? PRSA,V?THANKS \FALSE
+ CALL QCONTEXT-GOOD? >X
+ ZERO? X /FALSE
+ CALL PERFORM,V?THANKS,X
+ RTRUE
+
+
+ .FUNCT WALL-F,OBJ
+ EQUAL? VARIATION,FRIEND-C \?CCL3
+ EQUAL? HERE,BASEMENT,CRYPT \?CCL3
+ CALL BRICKS-F
+ RSTACK
+?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL7
+ CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >OBJ
+ ZERO? OBJ /?CCL7
+ CALL DO-INSTEAD-OF,OBJ,WALL
+ RTRUE
+?CCL7: EQUAL? PRSA,V?KNOCK \FALSE
+ FSET? HERE,WEARBIT \?PRG17
+ CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT
+ ZERO? STACK /?PRG19
+?PRG17: PRINTR "You hear a hollow sound."
+?PRG19: PRINTR "Knocking on the walls reveals nothing unusual."
+
+
+ .FUNCT GLOBAL-HERE-F,OBJ,X=0
+ EQUAL? PRSA,V?WALK-TO,V?SMELL /?CTR2
+ EQUAL? PRSA,V?SIT,V?LIE,V?EXAMINE \?CCL3
+?CTR2: CALL DO-INSTEAD-OF,HERE,GLOBAL-HERE
+ RTRUE
+?CCL3: EQUAL? PRSA,V?PUT-IN,V?PUT \?CCL7
+ CALL MORE-SPECIFIC
+ RSTACK
+?CCL7: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
+ IN? MAGAZINE,HERE \?CCL12
+ FSET? MAGAZINE,NDESCBIT \?CCL12
+ SET 'X,MAGAZINE
+ JUMP ?CND10
+?CCL12: IN? BRICKS,HERE \?CCL16
+ FSET? BRICKS,NDESCBIT \?CCL16
+ SET 'X,BRICKS
+ JUMP ?CND10
+?CCL16: ZERO? PRSI /?CCL20
+ CALL META-LOC,PRSI
+ EQUAL? STACK,HERE \?CCL20
+ SET 'X,PRSI
+ JUMP ?CND10
+?CCL20: FIRST? HERE >OBJ /?PRG24
+?PRG24: ZERO? OBJ /?CND10
+ FSET? OBJ,SECRETBIT \?CCL30
+ SET 'X,OBJ
+ JUMP ?CND10
+?CCL30: FSET? OBJ,PERSONBIT /?CCL32
+ FSET? OBJ,CONTBIT /?PRD35
+ FSET? OBJ,SURFACEBIT \?CCL32
+?PRD35: CALL FIND-FLAG,OBJ,SECRETBIT >X
+ ZERO? X \?CTR31
+ CALL FIND-FLAG,OBJ,RMUNGBIT >X
+ ZERO? X /?CCL32
+?CTR31: FSET OBJ,OPENBIT
+?CND10: CALL START-SEARCH,X
+ RTRUE
+?CCL32: NEXT? OBJ >OBJ /?PRG24
+ JUMP ?PRG24
+
+
+ .FUNCT CHAIR-F
+ EQUAL? PRSA,V?BOARD,V?CLIMB-ON,V?SIT \?CCL3
+ CALL WONT-HELP
+ RSTACK
+?CCL3: CALL RANDOM-PSEUDO
+ RSTACK
+
+
+ .FUNCT CLOTHES-FCN
+ EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL3
+ EQUAL? PRSO,TWEED-OUTFIT \?CCL6
+ PRINTI "These are sensible clothes for this clammy climate: your new tweed "
+ ZERO? GENDER-KNOWN \?PRG14
+ PRINTI "suit"
+ JUMP ?PRG23
+?PRG14: PRINTI "blazer and "
+ FSET? PLAYER,FEMALE \?PRG21
+ PRINTI "skirt"
+ JUMP ?PRG23
+?PRG21: PRINTI "pants"
+?PRG23: PRINTR ", with woolen sweater, should keep you warm enough."
+?CCL6: EQUAL? PRSO,EXERCISE-OUTFIT \?CCL26
+ PRINTI "This is your favorite outfit for workouts: a cotton sweatsuit with a sporty "
+ CALL PRINT-COLOR
+ ZERO? STACK /?PRG33
+ PRINTC 32
+?PRG33: PRINTR "stripe."
+?CCL26: EQUAL? PRSO,DINNER-OUTFIT \?PRG70
+ ZERO? GENDER-KNOWN \?PRG42
+ PRINTI "You have a decent formal ensemble, with frills in the right places"
+ JUMP ?PRG53
+?PRG42: PRINTI "Your new "
+ FSET? PLAYER,FEMALE \?PRG49
+ PRINTI "floor-length dinner gown"
+ JUMP ?PRG51
+?PRG49: PRINTI "tuxedo"
+?PRG51: PRINTI " is particularly good-looking"
+?PRG53: PRINTI " and a perfect fit"
+ ZERO? VARIATION /?PRG68
+ PRINTI ", "
+ FSET? PLAYER,FEMALE \?PRG64
+ PRINTI "not to mention that it's all"
+ JUMP ?PRG66
+?PRG64: PRINTI "with shirt and accessories"
+?PRG66: PRINTI " in "
+ CALL PRINT-COLOR
+?PRG68: PRINTR "."
+?PRG70: PRINTI "Your new "
+ CALL PRINT-COLOR
+ ZERO? STACK /?PRG76
+ PRINTC 32
+?PRG76: PRINTD SLEEP-OUTFIT
+ PRINTI " is "
+ ZERO? GENDER-KNOWN \?CCL80
+ PRINTR "nothing to write home about, but it is so-o-o comfy for sleeping."
+?CCL80: FSET? PLAYER,FEMALE \?PRG87
+ PRINTR "made of fine Chinese silk."
+?PRG87: PRINTR "decorated with a Union Jack flag."
+?CCL3: EQUAL? PRSA,V?DISEMBARK \?CCL90
+ CALL PERFORM,V?TAKE-OFF,PRSO
+ RTRUE
+?CCL90: EQUAL? PRSA,V?EMPTY \FALSE
+ CALL META-LOC,LUGGAGE
+ EQUAL? STACK,HERE \?CCL95
+ CALL PERFORM,V?EMPTY,LUGGAGE
+ RTRUE
+?CCL95: CALL NOT-HERE,LUGGAGE
+ RSTACK
+
+
+ .FUNCT SLEEP-GLOBAL-F
+ EQUAL? PRSA,V?DRESS \?CCL3
+ CALL META-LOC,SLEEP-OUTFIT
+ EQUAL? HERE,STACK \FALSE
+ CALL PERFORM,V?WEAR,SLEEP-OUTFIT
+ RTRUE
+?CCL3: EQUAL? PRSA,V?WALK-TO \FALSE
+ CALL PERFORM,V?FAINT
+ RTRUE
+
+
+ .FUNCT ROB,WHAT,THIEF,TELL?=0,N,X,TOLD?=0
+ FIRST? WHAT >X /?PRG2
+?PRG2: ZERO? X /TRUE
+ NEXT? X >N /?BOGUS6
+?BOGUS6: ZERO? N \?CND7
+ ZERO? TOLD? /?CND7
+ ZERO? TELL? /?CND7
+ PRINTI " and"
+?CND7: SET 'TOLD?,TRUE-VALUE
+ ZERO? TELL? /?CND14
+ CALL PRINTT,X
+ ZERO? N /?PRG23
+ PRINTC 44
+ JUMP ?CND14
+?PRG23: PRINTI ". "
+?CND14: MOVE X,THIEF
+ SET 'X,N
+ JUMP ?PRG2
+
+
+ .FUNCT LIGHT-GLOBAL-F,P
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE
+ CALL CREEPY?,HERE
+ ZERO? STACK /?CCL8
+ CALL ACCESSIBLE?,LAMP
+ ZERO? STACK /?CCL11
+ CALL PERFORM,PRSA,LAMP
+ RTRUE
+?CCL11: CALL NOT-HERE,LIGHT-GLOBAL
+ RSTACK
+?CCL8: CALL OUTSIDE?,HERE
+ ZERO? STACK /?CCL13
+ PRINTR "You can't reach it from here."
+?CCL13: EQUAL? PRSA,V?LAMP-ON \?CCL18
+ FSET? HERE,ONBIT \?CCL21
+ CALL ALREADY,LIGHT-GLOBAL,STR?64
+ RSTACK
+?CCL21: FSET HERE,ONBIT
+ CALL OKAY,LIGHT-GLOBAL,STR?64
+ RSTACK
+?CCL18: EQUAL? PRSA,V?LAMP-OFF \FALSE
+ FSET? HERE,ONBIT /?CCL26
+ CALL ALREADY,LIGHT-GLOBAL,STR?65
+ RSTACK
+?CCL26: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >P
+ ZERO? P /?CCL28
+ PRINTD P
+ PRINTR " says, ""Please don't leave us in the dark."""
+?CCL28: FCLEAR HERE,ONBIT
+ CALL OKAY,LIGHT-GLOBAL,STR?65
+ RSTACK
+
+
+ .FUNCT HAUNTING-F
+ EQUAL? PRSA,V?PLAY,V?LAMP-ON \FALSE
+ CALL PERFORM,PRSA,COMPUTER
+ RTRUE
+
+
+ .FUNCT KEYHOLE-F,P,RM
+ CALL REMOTE-VERB?
+ ZERO? STACK /?CCL3
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
+?CCL3: CALL ADJ-USED?,FALSE-VALUE
+ ZERO? STACK /?CCL7
+ CALL ZMEMQ,HERE,CHAR-ROOM-TABLE
+ ZERO? STACK /?CCL10
+ GETPT HERE,P?OUT
+ GETB STACK,REXIT >RM
+ JUMP ?CND1
+?CCL10: EQUAL? HERE,CORR-2 /?PRG15
+ EQUAL? HERE,WEST-HALL,GALLERY,EAST-HALL \?CCL12
+?PRG15: PRINT YOU-DIDNT-SAY-W
+ PRINTI "hose "
+ PRINTD KEYHOLE
+ PRINTR "!]"
+?CCL12: CALL NOT-HERE,KEYHOLE
+ RTRUE
+?CCL7: CALL ADJ-USED?
+ CALL ZMEMQ,STACK,CHAR-POSS-TABLE >P
+ ZERO? P /?CND1
+ GET CHAR-ROOM-TABLE,P >RM
+ EQUAL? HERE,RM \?CCL21
+ GETPT HERE,P?OUT
+ GETB STACK,REXIT >RM
+?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CCL25
+ EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE,V?EXAMINE \FALSE
+?CCL25: EQUAL? JACK-ROOM,HERE,RM \?CCL30
+ EQUAL? VARIATION,LORD-C \?CCL30
+ PRINTI "You see a microphone with its wires leading toward the "
+ PRINTD CREST
+ PRINTR "."
+?CCL21: GETPT RM,P?OUT
+ GETB STACK,REXIT
+ EQUAL? HERE,STACK /?CND1
+ CALL NOT-HERE,KEYHOLE
+ RTRUE
+?CCL30: CALL ROOM-PEEK,RM,TRUE-VALUE
+ RTRUE
+
+
+ .FUNCT HANDS-F,P,A
+ CALL FIND-BODY,HANDS >P
+ ZERO? P /TRUE
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?KISS \?CCL7
+ FSET? P,FEMALE \?CCL10
+ ZERO? GENDER-KNOWN /?CCL10
+ FSET? PLAYER,FEMALE /?CCL10
+ CALL PERFORM,V?HELLO,P
+ RTRUE
+?CCL10: CALL PERFORM,V?KISS,P
+ RTRUE
+?CCL7: EQUAL? PRSA,V?TAKE,V?SHAKE \FALSE
+ EQUAL? PRSO,HANDS \FALSE
+ ZERO? PRSI /?CND18
+ SET 'P,PRSI
+?CND18: CALL PERFORM,V?HELLO,P
+ RTRUE
+
+
+ .FUNCT HEAD-F,P,P2
+ CALL FIND-BODY,HEAD >P
+ ZERO? P /TRUE
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?NOD \?CCL7
+ CALL PERFORM,V?YES
+ RTRUE
+?CCL7: EQUAL? PRSA,V?SHAKE \FALSE
+ CALL PERFORM,V?NO
+ RTRUE
+
+
+ .FUNCT EYE-F,P,P2
+ CALL FIND-BODY,EYE >P
+ ZERO? P /TRUE
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?OPEN \?CCL7
+ SET 'WINNER,PLAYER
+ CALL PERFORM,V?ALARM,P
+ RTRUE
+?CCL7: EQUAL? PRSA,V?CLOSE \?CCL9
+ SET 'WINNER,P
+ CALL PERFORM,V?FAINT
+ RTRUE
+?CCL9: EQUAL? PRSA,V?LOOK-INSIDE,V?FIND,V?EXAMINE \FALSE
+ EQUAL? P,PLAYER \?CCL14
+ FSET? HERE,WORNBIT /?CCL14
+ CALL NOT-HERE,MIRROR-GLOBAL
+ RSTACK
+?CCL14: EQUAL? GHOST-NEW,P \?CCL18
+ CALL PERFORM,PRSA,GHOST-NEW
+ RTRUE
+?CCL18: FSET? LENS,SEENBIT /?PRG37
+ FSET? P,MUNGBIT \?CCL24
+ CALL HE-SHE-IT,P,TRUE-VALUE
+ PRINTR " has closed eyes."
+?CCL24: GETP P,P?CHARACTER
+ EQUAL? VARIATION,STACK \?CCL28
+ CALL HE-SHE-IT,P,TRUE-VALUE
+ PRINTR " turns away from you."
+?CCL28: LESS? BED-TIME,PRESENT-TIME \?PRG35
+ CALL HE-SHE-IT,P,TRUE-VALUE,STR?84
+ PRINTR " sleepy."
+?PRG35: CALL HE-SHE-IT,P,TRUE-VALUE,STR?218
+ PRINTR " at you."
+?PRG37: CALL HE-SHE-IT,P,TRUE-VALUE,STR?1
+ EQUAL? P,DEALER \?PRG43
+ EQUAL? VARIATION,PAINTER-C \?PRG45
+?PRG43: PRINTI " not"
+?PRG45: PRINTI " wearing a "
+ PRINTD LENS
+ PRINTR "."
+
+
+ .FUNCT OTHER-OUTFIT-F,P,P2
+ CALL FIND-BODY,OTHER-OUTFIT >P
+ ZERO? P /TRUE
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?LOOK-INSIDE,V?FIND,V?EXAMINE \?CCL7
+ EQUAL? GHOST-NEW,P \FALSE
+ CALL PERFORM,PRSA,GHOST-NEW
+ RTRUE
+?CCL7: EQUAL? PRSA,V?TAKE-OFF,V?REMOVE,V?DISEMBARK \FALSE
+ CALL YOU-SHOULDNT
+ RTRUE
+
+
+ .FUNCT FIND-BODY,OBJ,A,P
+ CALL ADJ-USED? >A
+ ZERO? A \?CCL3
+ PRINT I-ASSUME
+ PRINTC 32
+ EQUAL? PRSA,V?SEARCH-FOR,V?FIND,V?CLOSE /?CTR7
+ EQUAL? PRSA,V?SLAP /?PRD12
+ EQUAL? PRSA,V?MUNG,V?KILL,V?ATTACK \?CCL8
+?PRD12: ZERO? NOW-PRSI /?CCL8
+?CTR7: SET 'P,PLAYER
+ PRINTI "your"
+ JUMP ?CND6
+?CCL8: EQUAL? PRSA,V?SHAKE \?PRD20
+ ZERO? PRSI /?PRD20
+ SET 'P,PRSI
+ FSET? P,PERSONBIT /?PRG25
+?PRD20: CALL QCONTEXT-GOOD? >P
+ ZERO? P \?PRG25
+ CALL FIND-FLAG-HERE,PERSONBIT,PLAYER >P
+ ZERO? P /?CCL18
+?PRG25: PRINTD P
+ PRINTI "'s"
+ JUMP ?CND6
+?CCL18: SET 'P,PLAYER
+ PRINTI "your"
+?CND6: GETP P,P?CHARACTER
+ ADD 1,STACK
+ GET CHAR-POSS-TABLE,STACK
+ PUT P-ADJW,NOW-PRSI,STACK
+ PRINTC 32
+ GET P-NAMW,NOW-PRSI >A
+ ZERO? A /?PRG34
+ PRINTB A
+ JUMP ?PRG36
+?PRG34: PRINTD OBJ
+?PRG36: PRINTI ".]"
+ CRLF
+ JUMP ?CND1
+?CCL3: CALL ZMEMQ,A,CHAR-POSS-TABLE >P
+ ZERO? P /?CCL39
+ SUB P,1
+ GET CHARACTER-TABLE,STACK >P
+ JUMP ?CND1
+?CCL39: EQUAL? A,W?HER \?CCL41
+ SET 'P,P-HER-OBJECT
+ JUMP ?CND1
+?CCL41: EQUAL? A,W?HIS \?CND1
+ SET 'P,P-HIM-OBJECT
+?CND1: ZERO? P \?CND43
+ CALL DONT-UNDERSTAND
+ RFALSE
+?CND43: CALL THIS-IS-IT,P
+ CALL META-LOC,P
+ EQUAL? STACK,HERE /?CCL47
+ CALL NOT-HERE,P
+ RFALSE
+?CCL47: CALL DIVESTMENT?,OBJ
+ ZERO? STACK /?CCL49
+ CALL HAR-HAR
+ RFALSE
+?CCL49: RETURN P
+
+
+ .FUNCT PASSAGE-F,RM
+ CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >RM
+ EQUAL? PRSA,V?WALK-TO,V?TAKE \?CCL3
+ CALL PERFORM,V?THROUGH,PRSO
+ RTRUE
+?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL5
+ ZERO? RM /?CCL5
+ CALL DO-INSTEAD-OF,RM,PASSAGE
+ RTRUE
+?CCL5: FSET? HERE,SECRETBIT \?CCL9
+ CALL DO-INSTEAD-OF,HERE,PASSAGE
+ RTRUE
+?CCL9: CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ ZERO? RM /?CCL14
+ CALL DOOR-ROOM,HERE,RM >RM
+ ZERO? RM /?CCL14
+ FSET? RM,SEENBIT \?CCL14
+ CALL DO-INSTEAD-OF,RM,PASSAGE
+ RTRUE
+?CCL14: CALL GENERIC-CLOSET,0 >RM
+ ZERO? RM /?CCL19
+ CALL DO-INSTEAD-OF,RM,PASSAGE
+ RTRUE
+?CCL19: CALL NOT-HERE,PASSAGE
+ RSTACK
+
+
+ .FUNCT CORPSE-F
+ EQUAL? PRSA,V?FIND \FALSE
+ CALL WHO-KNOWS?,CORPSE
+ RSTACK
+
+
+ .FUNCT UNDRESSED-F
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+ EQUAL? PRSA,V?TAKE /FALSE
+ EQUAL? PRSA,V?LOOK-ON /?CTR6
+ EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?SEARCH-FOR /?CTR6
+ EQUAL? PRSA,V?SEARCH,V?CLOSE,V?OPEN \?CCL7
+?CTR6: CALL GLOBAL-IN?,DRESSING-TABLE-LG,HERE
+ ZERO? STACK /?CCL13
+ CALL DO-INSTEAD-OF,DRESSING-TABLE-LG,UNDRESSED
+ RTRUE
+?CCL13: CALL NOT-HERE,DRESSING-TABLE-LG
+ RSTACK
+?CCL7: CALL DONT-UNDERSTAND
+ RSTACK
+
+
+ .FUNCT ARTIFACT-F
+ ZERO? TREASURE-FOUND /?CCL3
+ CALL DO-INSTEAD-OF,TREASURE,ARTIFACT
+ RTRUE
+?CCL3: EQUAL? PRSA,V?TAKE-TO,V?SSHOW,V?SHOW /?CCL5
+ CALL REMOTE-VERB?
+ ZERO? STACK \FALSE
+?CCL5: CALL NOT-FOUND,ARTIFACT
+ RTRUE
+
+
+ .FUNCT TIMES-UP
+ PRINTI "At first light, the police arrive and take over the investigation."
+ CRLF
+ CALL FINISH
+ RSTACK
+
+ .ENDI
diff --git a/global.zil b/global.zil
new file mode 100644
index 0000000..23b97cc
--- /dev/null
+++ b/global.zil
@@ -0,0 +1,906 @@
+"GLOBALS for MOONMIST
+Copyright (C) 1986 Infocom, Inc. All rights reserved."
+
+<OBJECT GLOBAL-OBJECTS
+ (DESC "GO")
+ ;(FDESC 0)
+ (TEXT 0)
+ (FLAGS CONTBIT DOORBIT FEMALE
+ INVISIBLE LIGHTBIT LOCKED MUNGBIT
+ NARTICLEBIT NDESCBIT ONBIT OPENBIT
+ ;PERSONBIT READBIT RMUNGBIT
+ SEARCHBIT SECRETBIT SEENBIT SURFACEBIT
+ TAKEBIT TOOLBIT TOUCHBIT TRANSBIT TRYTAKEBIT
+ VEHBIT VOWELBIT WEAPONBIT WEARBIT WORNBIT)>
+
+<OBJECT LOCAL-GLOBALS
+ (IN GLOBAL-OBJECTS)
+ (DESC "stone" ;"LG")
+ (SYNONYM STONE ;L.G)
+ (FLAGS NARTICLEBIT)
+ (ACTION LOCAL-GLOBALS-F)>
+
+<ROUTINE LOCAL-GLOBALS-F ()
+ <COND (<REMOTE-VERB?>
+ <RFALSE>)
+ (<OR <CREEPY? ,HERE> <OUTSIDE? ,HERE>>
+ <RANDOM-PSEUDO>)
+ (T <NOT-HERE ,LOCAL-GLOBALS>)>>
+
+<OBJECT STAIRS
+ (IN LOCAL-GLOBALS)
+ (DESC "stairs")
+ (SYNONYM STAIRS STAIRW STAIR)
+ (GENERIC GENERIC-STAIRS)
+ (FLAGS SEENBIT)
+ (ACTION UPSTAIRS-DOWNSTAIRS)>
+
+<GLOBAL WING-STAIRS <PLTABLE KITCHEN GREAT-HALL GALLERY>>
+<GLOBAL TOWER-STAIRS <PLTABLE BASEMENT OLD-GREAT-HALL CORR-2 CORR-3>>
+
+<ROUTINE UPSTAIRS-DOWNSTAIRS ("AUX" N TBL (HR <LOC ,WINNER>))
+ <COND (<VERB? BOARD CLIMB-DOWN CLIMB-UP THROUGH WALK WALK-TO>
+ <COND (<FSET? .HR ,SECRETBIT>
+ <RFALSE>)
+ (<FSET? .HR ,WEARBIT> ;"WING-ROOMS"
+ <SET TBL ,WING-STAIRS>)
+ (T <SET TBL ,TOWER-STAIRS>)>
+ <COND (<OR <VERB? BOARD CLIMB-UP>
+ ;<NOUN-USED? ,W?UPSTAIRS>>
+ <COND (<T? <GETPT .HR ,P?UP>>
+ <DO-WALK ,P?UP>
+ <RTRUE>)
+ (<AND <SET N <GETP .HR ,P?CHARACTER>>
+ <NOT <L? <GET .TBL 0> <SET N <+ .N 1>>>>>
+ <SET N <GET .TBL .N>>
+ ;<TELL-I-ASSUME .N " Walk to">
+ <PERFORM ,V?WALK-TO .N>
+ <RTRUE>)>)
+ (T ;<NOUN-USED? ,W?DOWNSTAIRS>
+ <COND (<T? <GETPT .HR ,P?DOWN>>
+ <DO-WALK ,P?DOWN>
+ <RTRUE>)
+ (<AND <SET N <GETP .HR ,P?CHARACTER>>
+ <L? 0 <SET N <- .N 1>>>>
+ <SET N <GET .TBL .N>>
+ ;<TELL-I-ASSUME .N " Walk to">
+ <PERFORM ,V?WALK-TO .N>
+ <RTRUE>)>)>)>>
+
+<ROUTINE DO-INSTEAD-OF (OBJ1 OBJ2)
+ <COND (<EQUAL? ,PRSI .OBJ2> <PERFORM ,PRSA ,PRSO .OBJ1> <RTRUE>)
+ (<EQUAL? ,PRSO .OBJ2> <PERFORM ,PRSA .OBJ1 ,PRSI> <RTRUE>)
+ ;(T <PERFORM ,PRSA ,PRSO ,PRSI> <RTRUE>)
+ (T <V-FOO>)>>
+
+<OBJECT TURN
+ (IN GLOBAL-OBJECTS)
+ (ADJECTIVE INT.NUM ;NUMBER FULL)
+ (SYNONYM TURN TURNS MINUTE)
+ (DESC "minute")
+ (ACTION TURN-F)>
+
+<ROUTINE TURN-F ()
+ <COND (<VERB? USE>
+ <PERFORM ,V?WAIT-FOR ,PRSO>
+ <RTRUE>)>>
+
+<OBJECT IT
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM IT THIS ;"FUCKER SUCKER")
+ (DESC "it")
+ (FLAGS VOWELBIT NARTICLEBIT)
+ (ACTION IT-F)>
+
+<ROUTINE IT-F ()
+ <COND (<OR <AND <IOBJ? IT>
+ ;<FSET? ,PRSO ,PERSONBIT>
+ <VERB? ASK-ABOUT ASK-FOR SEARCH-FOR TELL-ABOUT>>
+ <AND <DOBJ? IT>
+ <VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR FIND ;WHAT>>>
+ <TELL "\"I'm not sure what you're talking about.\"" CR>)>>
+
+<OBJECT FLOOR
+ (IN GLOBAL-OBJECTS)
+ (DESC "floor")
+ (ADJECTIVE DRAWING ;ROOM GREAT ;HALL)
+ (SYNONYM FLOOR ;AREA GROUND CARPET RUG)
+ (FLAGS SEENBIT SURFACEBIT OPENBIT)
+ (ACTION FLOOR-F)>
+
+<ROUTINE FLOOR-F ("AUX" (OBJ <>) N)
+ <COND ;(<REMOTE-VERB?> <RFALSE>)
+ (<VERB? CLIMB-ON>
+ <ALREADY ,WINNER "on it">)
+ (<AND <VERB? PUT THROW-AT>
+ <NOT <DOBJ? MOONMIST>>
+ <IOBJ? FLOOR>>
+ <MOVE ,PRSO ,HERE>
+ <TELL "Okay." CR>
+ <RTRUE>)
+ (<VERB? EXAMINE LOOK-ON SEARCH SEARCH-FOR>
+ <COND (<EQUAL? ,HERE ,DRAWING-ROOM>
+ <TELL
+"The carpet ends flush with the archway to the " 'GREAT-HALL ",
+where the footsteps of visitors have begun to wear it thin.
+It's a magnificent red Brussels carpet with deep pile and a medieval
+design." CR>)
+ (<EQUAL? ,HERE ,GREAT-HALL>
+ <GREAT-HALL-IS-FLOORED>)>
+ <COND (<AND <EQUAL? ,HERE ,GARDEN>
+ <EQUAL? ,VARIATION ,LORD-C>
+ <FSET? ,CLUE-4 ,SECRETBIT>>
+ <SET OBJ ,CLUE-4>)
+ (<AND <EQUAL? ,HERE ,DRAWING-ROOM>
+ <EQUAL? ,VARIATION ,LORD-C ,FRIEND-C ;,OFFICER-C>
+ <NOT <FSET? ,JEWEL ,TOUCHBIT>>>
+ <SET OBJ ,JEWEL>)
+ (<AND <EQUAL? ,HERE ,GREAT-HALL>
+ <EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ,PAINTER-C>
+ <NOT <EQUAL? ,FOUND-IT-PERM ,LENS ;,LENS-1 ,LENS-2>>>
+ <SET OBJ ,LENS>)>
+ <START-SEARCH .OBJ>
+ <RTRUE>)
+ (<ADJ-USED? ,W?DRAWING>
+ <COND (<NOT <==? ,HERE ,DRAWING-ROOM>>
+ <DO-INSTEAD-OF ,DRAWING-ROOM ,FLOOR>
+ <RTRUE>)>)
+ (<ADJ-USED? ,W?GREAT>
+ <COND (<NOT <==? ,HERE ,GREAT-HALL>>
+ <DO-INSTEAD-OF ,GREAT-HALL ,FLOOR>
+ <RTRUE>)>)>>
+
+<ROUTINE START-SEARCH ("OPTIONAL" (OBJ <>))
+ <TELL
+"Nothing suspicious meets your eye after a moment's scrutiny. Do you want
+to continue?">
+ <COND (<NOT <YES?>>
+ <OKAY>
+ <RTRUE>)
+ (T
+ <COND (T ;<T? .OBJ>
+ <SETG FOUND-IT .OBJ>)>
+ <SETG FOUND-LOC ,HERE>
+ <QUEUE I-FOUND-IT <RANDOM 7>>
+ <V-WAIT 8 <> T>
+ <RTRUE>)>>
+
+<GLOBAL FOUND-IT:OBJECT <>>
+<GLOBAL FOUND-IT-PERM:OBJECT <>>
+<GLOBAL FOUND-LOC:OBJECT <>>
+<GLOBAL NOTHING-NEW "You don't find anything new there.|">
+
+<ROUTINE I-FOUND-IT ("OPTIONAL" (GARG <>) "AUX" OBJ)
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[I-FOUND-IT:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <COND (<NOT <EQUAL? ,FOUND-LOC ,HERE>>
+ <RFALSE>)
+ (<EQUAL? ,FOUND-IT ,JEWEL>
+ <MOVE ,FOUND-IT ,HERE>
+ <TELL
+"Suddenly you notice a glittering speck. Probing for it with your fingers,
+you discover a " 'JEWEL "." ;"extract from the strands of carpet pile" CR>)
+ (<EQUAL? ,FOUND-IT ,LENS>
+ <COND (<NOT <FSET? ,LENS ,SEENBIT>>
+ <MOVE ,LENS-2 <LOC ,LENS>>
+ ;<REMOVE ,LENS>)
+ (<NOT <FSET? ,LENS-2 ,SEENBIT>>
+ <SETG FOUND-IT ,LENS-2>
+ <MOVE ,LENS-1 <LOC ,LENS>>
+ <REMOVE ,LENS>)
+ (T <RFALSE>)>
+ <MOVE ,FOUND-IT ,HERE>
+ <TELL
+"Suddenly you find something small, smooth and slippery -- a "
+D ,FOUND-IT "! Its transparency, of course, made it practically invisible.">
+ <COND (<T? ,BUTLER-GHOST-STORY-TOLD>
+ <TELL
+" No wonder you and the ghost had such a hard time finding it!">)>
+ <CRLF>)
+ (<ZERO? ,FOUND-IT>
+ <TELL ,NOTHING-NEW>
+ <RFATAL>)
+ (<FSET? ,FOUND-IT ,SECRETBIT>
+ ;<SET OBJ <FIND-FLAG ,HERE ,SECRETBIT>>
+ <DISCOVER ,FOUND-IT ;.OBJ>
+ ;<RFATAL>)
+ (T
+ <TELL
+!\Y ,OU-STOP-SEARCHING " when you find" THE ,FOUND-IT ".|">)>
+ <COND (T ;<NOT <EQUAL? ,FOUND-IT ,MOONMIST ,YOUR-SWITCH>>
+ ;<MOVE ,FOUND-IT ,PLAYER>
+ <FSET ,FOUND-IT ,TOUCHBIT>)>
+ <FSET ,FOUND-IT ,SEENBIT>
+ <COND (<NOT <EQUAL? ,FOUND-IT ,YOUR-SWITCH>>
+ <FCLEAR ,FOUND-IT ,NDESCBIT>)>
+ <COND (<EQUAL? ,FOUND-IT ,LENS ;,LENS-1 ,LENS-2>
+ <SETG FOUND-IT-PERM ,FOUND-IT>)>
+ <SETG FOUND-IT <>>
+ <RFATAL>>
+
+<OBJECT DANGER
+ (IN GLOBAL-OBJECTS)
+ (DESC "danger")
+ (SYNONYM DANGER THREAT ATTACK)>
+
+<OBJECT INTNUM
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM INT.NUM ;NUMBER)
+ (DESC "number")>
+
+<OBJECT YOU
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM YOU YOURSELF HIMSELF HERSELF)
+ (DESC "self" ;"himself or herself")
+ (FLAGS ;NARTICLEBIT)
+ (ACTION YOU-F)>
+
+<ROUTINE YOU-F ("AUX" X)
+ <COND (<NOT <==? ,WINNER ,PLAYER>>
+ <DO-INSTEAD-OF ,WINNER ,YOU>
+ <RTRUE>)
+ (<AND <VERB? ASK-ABOUT> <IOBJ? YOU>>
+ <PERFORM ,V?ASK-ABOUT ,PRSO ,PRSO>
+ <RTRUE>)
+ (<AND <VERB? THANKS>
+ <SET X <QCONTEXT-GOOD?>>>
+ <PERFORM ,V?THANKS .X>
+ <RTRUE>)>>
+
+;<OBJECT HINT
+ (DESC "hint")
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM HINT HELP)
+ (ACTION HINT-F)>
+
+;<ROUTINE HINT-F ()
+ <COND (<VERB? FIND>
+ <HELP-TEXT>)
+ (<VERB? ASK-FOR ASK-CONTEXT-FOR TAKE>
+ <MORE-SPECIFIC>)>>
+
+;<OBJECT CORRIDOR-GLOBAL
+ (IN GLOBAL-OBJECTS)
+ (DESC "corridor")
+ (SYNONYM CORRIDOR)
+ (ACTION CORRIDOR-GLOBAL-F)>
+
+;<ROUTINE CORRIDOR-GLOBAL-F ("AUX" RM)
+ <COND (<VERB? ANALYZE EXAMINE LOOK-INSIDE LOOK-DOWN LOOK-UP>
+ <COND (<SET RM <NEXT-ROOM ,HERE ,P?OUT>>
+ <ROOM-PEEK .RM T>)>)>>
+
+<OBJECT WALL
+ (IN GLOBAL-OBJECTS)
+ (DESC "wall")
+ (ADJECTIVE CASTLE TOWER BRICK)
+ (SYNONYM WALL WALLS BRICK BRICKS)
+ (FLAGS SEENBIT SURFACEBIT OPENBIT)
+ (ACTION WALL-F)>
+
+<ROUTINE WALL-F ("AUX" OBJ)
+ <COND (<AND <EQUAL? ,VARIATION ,FRIEND-C>
+ <EQUAL? ,HERE ,BASEMENT ,CRYPT>
+ ;<VERB? ;DIG EXAMINE KNOCK MUNG OPEN RUB SEARCH>>
+ <BRICKS-F>)
+ (<AND <VERB? OPEN CLOSE>
+ <T? <SET OBJ <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>>>
+ <DO-INSTEAD-OF .OBJ ,WALL>
+ <RTRUE>)
+ (<VERB? KNOCK>
+ <COND (<OR <NOT <FSET? ,HERE ,WEARBIT> ;"WING-ROOMS">
+ <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>
+ <TELL "You hear a hollow sound." CR>)
+ (T <TELL
+"Knocking on the walls reveals nothing unusual." CR>)>)>>
+
+<OBJECT GLOBAL-HERE
+ (IN GLOBAL-OBJECTS)
+ (DESC "here")
+ (ADJECTIVE THIS)
+ (SYNONYM HERE AREA ROOM PLACE)
+ (GENERIC GENERIC-ROOM)
+ (FLAGS NARTICLEBIT)
+ (ACTION GLOBAL-HERE-F)>
+
+<ROUTINE GLOBAL-HERE-F ("AUX" OBJ (X <>))
+ <COND (<VERB? EXAMINE LIE SIT SMELL WALK-TO>
+ <DO-INSTEAD-OF ,HERE ,GLOBAL-HERE>
+ <RTRUE>)
+ (<VERB? PUT PUT-IN ;TIE-TO>
+ <MORE-SPECIFIC>)
+ (<VERB? SEARCH SEARCH-FOR>
+ <COND (<AND <IN? ,MAGAZINE ,HERE>
+ ;<EQUAL? ,VARIATION ,PAINTER-C>
+ <FSET? ,MAGAZINE ,NDESCBIT>>
+ <SET X ,MAGAZINE>)
+ (<AND <IN? ,BRICKS ,HERE>
+ ;<EQUAL? ,VARIATION ,FRIEND-C>
+ <FSET? ,BRICKS ,NDESCBIT>>
+ <SET X ,BRICKS>)
+ ;(<AND <EQUAL? ,HERE ,COURTYARD>
+ <SET X <FIRST? ,FRONT-GATE>>> ;"for CLUE-4"
+ T)
+ (<AND <T? ,PRSI>
+ <==? <META-LOC ,PRSI> ,HERE>>
+ <SET X ,PRSI>)
+ (T
+ <SET OBJ <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<ZERO? .OBJ>
+ <RETURN>)
+ (<FSET? .OBJ ,SECRETBIT>
+ <SET X .OBJ>
+ <RETURN>)
+ (<AND <NOT <FSET? .OBJ ,PERSONBIT>>
+ <OR <FSET? .OBJ ,CONTBIT>
+ <FSET? .OBJ ,SURFACEBIT>>
+ <OR <SET X <FIND-FLAG .OBJ ,SECRETBIT>>
+ <SET X <FIND-FLAG .OBJ ,RMUNGBIT>>>>
+ <FSET .OBJ ,OPENBIT>
+ <RETURN>)
+ (T <SET OBJ <NEXT? .OBJ>>)>>)>
+ <START-SEARCH .X>
+ <RTRUE>)>>
+
+<OBJECT CHAIR
+ (IN LOCAL-GLOBALS)
+ (DESC "chair")
+ (ADJECTIVE WING)
+ (SYNONYM CHAIR SEAT CHAIRS BENCH)
+ (FLAGS SEENBIT SURFACEBIT ;VEHBIT)
+ (ACTION CHAIR-F)>
+
+<ROUTINE CHAIR-F () ;("OPT" (ARG 0))
+ <COND ;(<T? .ARG> <RFALSE>)
+ (<VERB? SIT ;LOOK-UNDER CLIMB-ON ;CLIMB-DOWN BOARD>
+ <WONT-HELP>
+ ;<SETG PLAYER-SEATED ,CHAIR>
+ ;<TELL "Okay." ;"That's just a waste of time." CR>)
+ (T <RANDOM-PSEUDO>)>>
+
+<OBJECT TABLE-RANDOM
+ (IN LOCAL-GLOBALS)
+ (DESC "table")
+ (ADJECTIVE BILLIARD CARD)
+ (SYNONYM TABLE DESK)
+ (FLAGS SEENBIT)
+ (ACTION RANDOM-PSEUDO)>
+
+[
+<OBJECT TWEED-OUTFIT
+ (IN PLAYER)
+ (DESC "tweed outfit")
+ (ADJECTIVE MY TWEED WOOLEN WOOL)
+ (SYNONYM CLOTHES OUTFIT TWEEDS SUIT ;" SWEATER CLOTHING")
+ (GENERIC GENERIC-CLOTHES)
+ (FLAGS WORNBIT WEARBIT TAKEBIT MUNGBIT SEENBIT)
+ (SIZE 20)
+ (ACTION CLOTHES-FCN)>
+
+<OBJECT SLEEP-OUTFIT
+ (IN LUGGAGE)
+ (DESC "nightshirt" ;"set of pajamas, sleeping outfit")
+ (ADJECTIVE MY NIGHT F.C F.C ;" FINE INDIAN SILK SLEEPING")
+ (SYNONYM CLOTHES OUTFIT NIGHTS SHIRT ;" PAJAMA NIGHTG")
+ (GENERIC GENERIC-CLOTHES)
+ (FLAGS WEARBIT TAKEBIT)
+ (SIZE 20)
+ (ACTION CLOTHES-FCN)>
+
+<OBJECT EXERCISE-OUTFIT
+ (IN LUGGAGE)
+ (DESC "exercise outfit")
+ (ADJECTIVE MY EXERCISE F.C F.C ;"COTTON COMFORT RUNNING")
+ (SYNONYM CLOTHES OUTFIT SWEATS SUIT ;"SHOES CLOTHING")
+ (GENERIC GENERIC-CLOTHES)
+ (FLAGS WEARBIT TAKEBIT VOWELBIT)
+ (SIZE 20)
+ (ACTION CLOTHES-FCN)>
+
+<OBJECT DINNER-OUTFIT
+ (IN LUGGAGE)
+ (DESC "dinner outfit")
+ (ADJECTIVE MY DINNER FORMAL F.C F.C ;"FRILLY PERFECT")
+ (SYNONYM CLOTHES OUTFIT ;"ENSEMBLE CLOTHING" DRESS GOWN)
+ (GENERIC GENERIC-CLOTHES)
+ (FLAGS WEARBIT TAKEBIT)
+ (SIZE 20)
+ (ACTION CLOTHES-FCN)>
+
+<ROUTINE CLOTHES-FCN ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE>
+ <COND (<DOBJ? TWEED-OUTFIT>
+ <TELL
+"These are sensible clothes for this clammy climate: your new tweed ">
+ <COND (<ZERO? ,GENDER-KNOWN>
+ <TELL "suit">)
+ (T
+ <TELL "blazer and ">
+ <COND (<FSET? ,PLAYER ,FEMALE> <TELL "skirt">)
+ (T <TELL "pants">)>)>
+ <TELL ", with woolen sweater, should keep you warm enough.">)
+ (<DOBJ? EXERCISE-OUTFIT>
+ <TELL
+"This is your favorite outfit for workouts: a cotton sweatsuit with a sporty ">
+ <COND (<PRINT-COLOR> <TELL !\ >)>
+ <TELL "stripe." ;", and comfortable running shoes.">)
+ (<DOBJ? DINNER-OUTFIT>
+ <COND (<ZERO? ,GENDER-KNOWN>
+ <TELL
+"You have a decent formal ensemble, with frills in the right places">)
+ (T
+ <TELL "Your new ">
+ <COND (<FSET? ,PLAYER ,FEMALE>
+ <TELL "floor-length dinner gown">)
+ (T <TELL "tuxedo">)>
+ <TELL " is particularly good-looking">)>
+ <TELL " and a perfect fit">
+ <COND (<NOT <0? ,VARIATION>>
+ <TELL ", ">
+ <COND (<FSET? ,PLAYER ,FEMALE>
+ <TELL "not to mention that it's all">)
+ (T <TELL "with shirt and accessories">)>
+ <TELL " in ">
+ <PRINT-COLOR>)>
+ <TELL ".">)
+ (T ;<DOBJ? SLEEP-OUTFIT>
+ <TELL "Your new ">
+ <COND (<PRINT-COLOR> <TELL !\ >)>
+ <TELL D ,SLEEP-OUTFIT ;"nightshirt" " is ">
+ <COND (<ZERO? ,GENDER-KNOWN>
+ <TELL
+"nothing to write home about, but it is so-o-o comfy for sleeping.">)
+ (<FSET? ,PLAYER ,FEMALE>
+ <TELL "made of fine Chinese silk.">)
+ (T <TELL "decorated with a Union Jack flag.">)>)>
+ <CRLF>)
+ (<VERB? DISEMBARK ;TAKE> ;"GET OUT OF MY CLOTHES"
+ <PERFORM ,V?TAKE-OFF ,PRSO>
+ <RTRUE>)
+ (<VERB? EMPTY> ;"UNPACK MY CLOTHES"
+ <COND (<EQUAL? <META-LOC ,LUGGAGE> ,HERE>
+ <PERFORM ,V?EMPTY ,LUGGAGE>
+ <RTRUE>)
+ (T <NOT-HERE ,LUGGAGE>)>)>>
+]
+<OBJECT SLEEP-GLOBAL
+ (IN GLOBAL-OBJECTS)
+ ;(ADJECTIVE ;SOME MY)
+ (SYNONYM SLEEP)
+ (DESC "sleep")
+ (FLAGS NARTICLEBIT)
+ (ACTION SLEEP-GLOBAL-F)>
+
+<ROUTINE SLEEP-GLOBAL-F ()
+ <COND (<VERB? DRESS ;-FOR>
+ <COND (<EQUAL? ,HERE <META-LOC ,SLEEP-OUTFIT>>
+ <PERFORM ,V?WEAR ,SLEEP-OUTFIT>
+ <RTRUE>)>)
+ (<VERB? WALK-TO>
+ <PERFORM ,V?FAINT>
+ <RTRUE>)>>
+
+<GLOBAL NOW-WEARING:OBJECT TWEED-OUTFIT>
+
+<ROUTINE ROB (WHAT THIEF "OPTIONAL" (TELL? <>) "AUX" N X (TOLD? <>))
+ <SET X <FIRST? .WHAT>>
+ <REPEAT ()
+ <COND (<NOT .X> <RETURN>)>
+ <SET N <NEXT? .X>>
+ ;<COND (<NOT <FSET? .X ,TAKEBIT>>
+ <SET X .N>
+ <AGAIN>)>
+ <COND (<AND <NOT .N> .TOLD? .TELL?>
+ <TELL " and">)>
+ <SET TOLD? T>
+ <COND (.TELL?
+ <TELL THE .X>
+ <COND (.N <TELL !\,>)
+ (T <TELL ". ">)>)>
+ <MOVE .X .THIEF>
+ ;<FCLEAR .X ,TAKEBIT>
+ <SET X .N>>>
+
+<OBJECT LIGHT-GLOBAL
+ (IN GLOBAL-OBJECTS)
+ (DESC "light")
+ (ADJECTIVE FLOOD MOON)
+ (SYNONYM LIGHT LIGHTS LAMP MOONLIGHT)
+ (FLAGS SEENBIT TRYTAKEBIT)
+ (ACTION LIGHT-GLOBAL-F)>
+
+<ROUTINE LIGHT-GLOBAL-F ("AUX" P)
+ <COND (<REMOTE-VERB?> <RFALSE>)
+ (<VERB? LAMP-ON LAMP-OFF>
+ <COND (<CREEPY? ,HERE>
+ <COND (<ACCESSIBLE? ,LAMP>
+ <PERFORM ,PRSA ,LAMP>
+ <RTRUE>)
+ (T <NOT-HERE ,LIGHT-GLOBAL>)>)
+ (<AND <OUTSIDE? ,HERE> ;<NOT <EQUAL? ,HERE ,CAR>>>
+ <TELL "You can't reach it from here." CR>)
+ (<VERB? LAMP-ON>
+ <COND (<FSET? ,HERE ,ONBIT>
+ <ALREADY ,LIGHT-GLOBAL "on">)
+ (T
+ <FSET ,HERE ,ONBIT>
+ <OKAY ,LIGHT-GLOBAL "on">)>)
+ (<VERB? LAMP-OFF>
+ <COND (<NOT <FSET? ,HERE ,ONBIT>>
+ <ALREADY ,LIGHT-GLOBAL "off">)
+ (<SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,MUNGBIT ,PLAYER>>
+ <TELL
+D .P " says, \"Please don't leave us in the dark.\"" CR>)
+ (T
+ <FCLEAR ,HERE ,ONBIT>
+ <OKAY ,LIGHT-GLOBAL "off">)>)>)>>
+
+<OBJECT HAUNTING
+ (DESC "haunting")
+ (IN OFFICE)
+ (SYNONYM MYSTERY HAUNTING ATTEMPTS CASE)
+ (FLAGS NDESCBIT SEENBIT)
+ (ACTION HAUNTING-F)>
+
+<ROUTINE HAUNTING-F ()
+ <COND (<VERB? LAMP-ON PLAY>
+ <PERFORM ,PRSA ,COMPUTER>
+ <RTRUE>)>>
+
+<OBJECT KEYHOLE
+ (IN GLOBAL-OBJECTS)
+ (DESC "keyhole")
+ (ADJECTIVE MY TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S)
+ (SYNONYM KEYHOLE HOLE)
+ ;(FLAGS NARTICLEBIT ;PLURALBIT)
+ (ACTION KEYHOLE-F)>
+
+<ROUTINE KEYHOLE-F ("AUX" P RM)
+ <COND (<AND <REMOTE-VERB?>
+ <NOT <VERB? SEARCH SEARCH-FOR>>>
+ <RFALSE>)
+ (<ADJ-USED? <>>
+ ;<ZERO? ,P-ADJN>
+ <COND (<ZMEMQ ,HERE ,CHAR-ROOM-TABLE>
+ <SET RM <GET-REXIT-ROOM <GETPT ,HERE ,P?OUT>>>)
+ (<OR <EQUAL? ,HERE ,CORR-2>
+ <EQUAL? ,HERE ,WEST-HALL ,GALLERY ,EAST-HALL>>
+ <TELL ,YOU-DIDNT-SAY-W "hose " 'KEYHOLE "!]" CR>
+ <RTRUE>)
+ (T <NOT-HERE ,KEYHOLE> <RTRUE>)>)
+ (<OR <SET P <ZMEMQ <ADJ-USED?> ;,P-ADJN ,CHAR-POSS-TABLE>>
+ ;<AND <==? <ADJ-USED?> ,OTHER-POSS>
+ <SET P <GETP ,OTHER-CHAR ,P?CHARACTER>>>>
+ <SET RM <GET ,CHAR-ROOM-TABLE .P>>
+ <COND (<EQUAL? ,HERE .RM>
+ <SET RM <GET-REXIT-ROOM <GETPT ,HERE ,P?OUT>>>)
+ (<NOT <EQUAL? ,HERE <GET-REXIT-ROOM <GETPT .RM ,P?OUT>>>>
+ <NOT-HERE ,KEYHOLE>
+ <RTRUE>)>)>
+ <COND (<VERB? EXAMINE LOOK-INSIDE LOOK-THROUGH SEARCH SEARCH-FOR>
+ <COND (<AND <EQUAL? ,JACK-ROOM ,HERE .RM>
+ <EQUAL? ,VARIATION ,LORD-C>>
+ <TELL
+"You see a microphone with its wires leading toward the " 'CREST "." CR>
+ ;<TELL
+"Total darkness greets your eye. Something is obstructing your view
+through the " 'KEYHOLE "." CR>)
+ (T <ROOM-PEEK .RM T>)>
+ <RTRUE>)>>
+[
+<OBJECT HANDS
+ (IN GLOBAL-OBJECTS)
+ (DESC "hand" ;"your hands")
+ (ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S MY
+ ;"ordering same as HEAD & EYE for UN/DRESS-GHOST"
+ ;" B\'S DEE\'S")
+ (SYNONYM HANDS HAND)
+ (FLAGS TRYTAKEBIT ;NARTICLEBIT ;PLURALBIT SEENBIT)
+ (ACTION HANDS-F)>
+
+<ROUTINE HANDS-F ("AUX" P A)
+ <COND (<NOT <SET P <FIND-BODY ,HANDS>>>
+ <RTRUE>)
+ (<REMOTE-VERB?>
+ <RFALSE>)>
+ <COND ;(<EQUAL? .P ,PLAYER>
+ <COND (<VERB? BRUSH>
+ <RFALSE>)>)
+ (<VERB? KISS>
+ <COND (<AND <FSET? .P ,FEMALE>
+ <T? ,GENDER-KNOWN>
+ <NOT <FSET? ,PLAYER ,FEMALE>>>
+ <PERFORM ,V?HELLO .P>)
+ (T
+ <PERFORM ,V?KISS .P>)>
+ <RTRUE>)
+ (<AND <VERB? SHAKE TAKE> <DOBJ? HANDS>>
+ <COND (<T? ,PRSI> ;<ZERO? .P>
+ <SET P ,PRSI>)>
+ ;<COND (<ZERO? .P>
+ <COND ;(<ADJ-USED? ,W?HER>
+ <SET P <FIND-FLAG-HERE-BOTH ,PERSONBIT ,FEMALE ,WINNER>>
+ <COND (<ZERO? .P>
+ <TELL "There's no woman here!" CR>
+ <RTRUE>)>)
+ ;(<ADJ-USED? ,W?HIS>
+ <SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,FEMALE ,WINNER>>
+ <COND (<ZERO? .P>
+ <TELL "There's no man here!" CR>
+ <RTRUE>)>)
+ (T
+ <SET P <FIND-FLAG-HERE ,PERSONBIT ,WINNER>>
+ <COND (<ZERO? .P>
+ <TELL "There's no one here!" CR>
+ <RTRUE>)>)>)>
+ <PERFORM ,V?HELLO .P>
+ <RTRUE>)>>
+
+<OBJECT HEAD
+ (IN GLOBAL-OBJECTS)
+ (DESC "head" ;"your head")
+ (ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S B\'S
+ ;" MY DEE\'S")
+ (SYNONYM HEAD ;FACE)
+ (FLAGS ;NARTICLEBIT SEENBIT)
+ (ACTION HEAD-F)>
+
+<ROUTINE HEAD-F ("AUX" P P2)
+ <COND (<NOT <SET P <FIND-BODY ,HEAD>>>
+ <RTRUE>)
+ (<REMOTE-VERB?>
+ <RFALSE>)
+ ;(<AND <EQUAL? .P ,PLAYER>
+ <NOT <FSET? ,HERE ,WORNBIT>>>
+ <NOT-HERE ,MIRROR-GLOBAL ;,HEAD>)
+ (<VERB? NOD>
+ <PERFORM ,V?YES>
+ <RTRUE>)
+ (<VERB? SHAKE>
+ <PERFORM ,V?NO>
+ <RTRUE>)>>
+
+<OBJECT EYE
+ (IN GLOBAL-OBJECTS)
+ (DESC "eye")
+ (ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S B\'S
+ ;" MY DEE\'S")
+ (SYNONYM EYE EYES)
+ (FLAGS VOWELBIT ;PLURALBIT SEENBIT)
+ (ACTION EYE-F)>
+
+<ROUTINE EYE-F ("AUX" P P2)
+ <COND (<NOT <SET P <FIND-BODY ,EYE>>>
+ <RTRUE>)
+ (<REMOTE-VERB?>
+ <RFALSE>)
+ ;(<AND <EQUAL? .P ,PLAYER>
+ <NOT <FSET? ,HERE ,WORNBIT>>>
+ <COND (<VERB? OPEN>
+ <TELL "Your eyes are wide open." CR>)
+ (T <NOT-HERE ,MIRROR-GLOBAL ;,EYE>)>)
+ (<VERB? OPEN>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ALARM .P>
+ <RTRUE>)
+ (<VERB? CLOSE>
+ <SETG WINNER .P>
+ <PERFORM ,V?FAINT>
+ <RTRUE>)
+ (<VERB? EXAMINE FIND LOOK-INSIDE>
+ <COND (<AND <EQUAL? .P ,PLAYER>
+ <NOT <FSET? ,HERE ,WORNBIT>>>
+ <NOT-HERE ,MIRROR-GLOBAL ;,EYE>)
+ (<==? ,GHOST-NEW .P>
+ <PERFORM ,PRSA ,GHOST-NEW>
+ <RTRUE>)
+ (T
+ <COND (<NOT <FSET? ,LENS ;-1 ,SEENBIT>>
+ <COND (<FSET? .P ,MUNGBIT>
+ <TELL CHE .P " has closed eyes." CR>)
+ (<==? ,VARIATION <GETP .P ,P?CHARACTER>>
+ <TELL CHE .P " turns away from you." CR>)
+ (<L? ,BED-TIME ,PRESENT-TIME>
+ <TELL CHE .P look " sleepy." CR>)
+ (T
+ <TELL CHE .P smile " at you." CR>)>)
+ (T
+ <TELL CHE .P is>
+ <COND (<OR <NOT <EQUAL? .P ,DEALER>>
+ <EQUAL? ,VARIATION ,PAINTER-C>>
+ <TELL " not">)>
+ <TELL " wearing a " D ,LENS "." CR>)>)
+ ;(T
+ <TELL
+"Despite some initial demurrals and questioning glances, ">
+ <COND (<ZERO? <SET P2 <FIND-FLAG-HERE ,PERSONBIT ,PLAYER .P>>>
+ <TELL D .P>)
+ (T <TELL "everyone">)>
+ <TELL " allows your examination">
+ <COND (<OR <EQUAL? ,VARIATION ,PAINTER-C>
+ <NOT <IN? ,DEALER ,HERE>>>
+ <TELL ". You discover that">
+ <COND (<ZERO? .P2>
+ <TELL HE .P " is not">)
+ (T <TELL " no one is">)>
+ <TELL " wearing a " D ,LENS "." CR>)
+ (T <TELL
+" -- except " 'DEALER ", who is wearing " D ,LENS "es
+but confesses that he hates even to admit that he needs them." CR>)>)>)>>
+
+<OBJECT OTHER-OUTFIT
+ (IN GLOBAL-OBJECTS)
+ (DESC "clothes")
+ (ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S B\'S
+ ;" MY DEE\'S")
+ (SYNONYM CLOTHES OUTFIT DRESS GOWN ; SUIT)
+ ;(GENERIC GENERIC-CLOTHES)
+ (FLAGS SEENBIT)
+ ;(SIZE 20)
+ (ACTION OTHER-OUTFIT-F)>
+
+<ROUTINE OTHER-OUTFIT-F ("AUX" P P2)
+ <COND (<NOT <SET P <FIND-BODY ,OTHER-OUTFIT>>>
+ <RTRUE>)
+ (<REMOTE-VERB?>
+ <RFALSE>)
+ (<VERB? EXAMINE FIND LOOK-INSIDE>
+ <COND (<==? ,GHOST-NEW .P>
+ <PERFORM ,PRSA ,GHOST-NEW>
+ <RTRUE>)>)
+ (<VERB? DISEMBARK REMOVE TAKE-OFF>
+ <YOU-SHOULDNT>
+ <RTRUE>)>>
+
+<ROUTINE FIND-BODY (OBJ "AUX" A P)
+ <SET A <ADJ-USED?> ;,P-ADJN>
+ <COND (<ZERO? .A>
+ <TELL ,I-ASSUME !\ >
+ <COND (<OR <VERB? CLOSE FIND SEARCH-FOR>
+ <AND <VERB? ATTACK KILL MUNG SLAP>
+ <T? ,NOW-PRSI>>>
+ <SET P ,PLAYER>
+ <TELL "your">)
+ (<OR <AND <VERB? SHAKE> ;"SHAKE HANDS WITH JACK"
+ <T? ,PRSI>
+ <FSET? <SET P ,PRSI> ,PERSONBIT>>
+ <SET P <QCONTEXT-GOOD?>>
+ <SET P <FIND-FLAG-HERE ,PERSONBIT ,PLAYER>>>
+ <TELL D .P "'s">)
+ (T
+ <SET P ,PLAYER>
+ <TELL "your">)>
+ <PUT ,P-ADJW ,NOW-PRSI
+ <GET ,CHAR-POSS-TABLE <+ 1 <GETP .P ,P?CHARACTER>>>>
+ <TELL !\ >
+ <COND (<SET A <GET ,P-NAMW ,NOW-PRSI>>
+ <PRINTB .A>)
+ (T <TELL D .OBJ>)>
+ <TELL ".]" CR>)
+ (<SET P <ZMEMQ .A ,CHAR-POSS-TABLE>>
+ <SET P <GET ,CHARACTER-TABLE <- .P 1>>>)
+ ;(<==? .A ,OTHER-POSS>
+ <SET P ,OTHER-CHAR>)
+ (<==? .A ,W?HER>
+ <SET P ,P-HER-OBJECT>)
+ (<==? .A ,W?HIS>
+ <SET P ,P-HIM-OBJECT>)>
+ <COND (<ZERO? .P>
+ <DONT-UNDERSTAND>
+ <RFALSE>)>
+ <THIS-IS-IT .P>
+ <COND (<NOT <==? <META-LOC .P> ,HERE>>
+ <NOT-HERE .P>
+ <RFALSE>)
+ (<DIVESTMENT? .OBJ>
+ <HAR-HAR>
+ <RFALSE>)
+ (T .P)>>
+]
+<OBJECT PASSAGE
+ (DESC "secret passage")
+ (IN GLOBAL-OBJECTS)
+ (ADJECTIVE SECRET HIDING HIDDEN)
+ (SYNONYM PASSAGE ROOM PLACE PLACES)
+ (GENERIC GENERIC-ROOM)
+ (ACTION PASSAGE-F)>
+
+<ROUTINE PASSAGE-F ("AUX" (RM <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>))
+ <COND (<VERB? TAKE WALK-TO>
+ <PERFORM ,V?THROUGH ,PRSO>
+ <RTRUE>)
+ (<AND <VERB? OPEN CLOSE>
+ <T? .RM>>
+ <DO-INSTEAD-OF .RM ,PASSAGE>
+ <RTRUE>)
+ (<FSET? ,HERE ,SECRETBIT>
+ <DO-INSTEAD-OF ,HERE ,PASSAGE>
+ <RTRUE>)
+ (<REMOTE-VERB?> ;"includes LEAVE"
+ <RFALSE>)
+ (T ;<VERB? BOARD CLOSE EXAMINE FOLLOW LOOK-INSIDE OPEN THROUGH WALK-TO>
+ <COND (<AND <T? .RM>
+ <SET RM <DOOR-ROOM ,HERE .RM>>
+ <FSET? .RM ,SEENBIT>>
+ <DO-INSTEAD-OF .RM ,PASSAGE>
+ <RTRUE>)
+ (<SET RM <GENERIC-CLOSET 0>>
+ <DO-INSTEAD-OF .RM ,PASSAGE>
+ <RTRUE>)
+ (T <NOT-HERE ,PASSAGE>)>)>>
+
+<OBJECT ROMANCE
+ (DESC "Tamara's romance")
+ (IN GLOBAL-OBJECTS)
+ (ADJECTIVE TAM\'S JACK\'S HER HIS)
+ (SYNONYM ROMANCE ENGAGE MARRIAGE LOVE ;AFFAIR)
+ (FLAGS NARTICLEBIT)
+ ;(ACTION ROMANCE-F)>
+
+;<ROUTINE ROMANCE-F ()
+ <COND (<AND <VERB? MAKE>
+ <FSET? ,PRSI ,PERSONBIT>>
+ <PERFORM ,V?RUB ,PRSI>
+ <RTRUE>)>>
+
+<OBJECT ACCIDENT
+ (DESC "Deirdre's accident")
+ (IN GLOBAL-OBJECTS)
+ (ADJECTIVE ;DEIRDRE DEE\'S HER)
+ (SYNONYM ACCIDENT DROWNING DEATH)
+ (FLAGS NARTICLEBIT)>
+
+<OBJECT CORPSE
+ (DESC "Deirdre's body")
+ (IN LOCAL-GLOBALS ;GLOBAL-OBJECTS ;"not really anywhere")
+ (ADJECTIVE ;DEIRDRE DEE\'S HER DEAD)
+ (SYNONYM CORPSE ;BODY ;"foo's body")
+ (FLAGS NARTICLEBIT)
+ (ACTION CORPSE-F)>
+
+<ROUTINE CORPSE-F ()
+ <COND ;(<REMOTE-VERB?> <RFALSE>)
+ (<VERB? ;EXAMINE FIND>
+ <WHO-KNOWS? ,CORPSE>)
+ ;(T <NOT-HERE ,CORPSE>)>>
+
+<OBJECT UNDRESSED
+ (DESC "undressed")
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM DRESSE UNDRESS)
+ (FLAGS NARTICLEBIT)
+ (ACTION UNDRESSED-F)>
+
+<ROUTINE UNDRESSED-F ()
+ <COND (<REMOTE-VERB?> <RFALSE>)
+ (<VERB? TAKE> <RFALSE>) ;"GET UN/DRESSED"
+ (<VERB? OPEN CLOSE SEARCH SEARCH-FOR EXAMINE LOOK-INSIDE LOOK-ON>
+ <COND (<GLOBAL-IN? ,DRESSING-TABLE-LG ,HERE>
+ <DO-INSTEAD-OF ,DRESSING-TABLE-LG ,UNDRESSED>
+ <RTRUE>)
+ (T <NOT-HERE ,DRESSING-TABLE-LG>)>)
+ (T <DONT-UNDERSTAND>)>>
+
+<OBJECT ARTIFACT
+ (IN GLOBAL-OBJECTS ;LOCAL-GLOBALS)
+ (DESC "hidden treasure" ;"artifact")
+ (ADJECTIVE VALUABLE MISSING HIDDEN)
+ (SYNONYM ARTIFACT TREASURE)
+ (FLAGS SEENBIT VOWELBIT)
+ (ACTION ARTIFACT-F)>
+
+<ROUTINE ARTIFACT-F ()
+ <COND (<T? ,TREASURE-FOUND>
+ <DO-INSTEAD-OF ,TREASURE ,ARTIFACT>
+ <RTRUE>)
+ (<OR <VERB? SHOW SSHOW TAKE-TO>
+ <NOT <REMOTE-VERB?>>>
+ <NOT-FOUND ,ARTIFACT>
+ <RTRUE>)>>
+
+<ROUTINE TIMES-UP ()
+ <TELL
+"At first light, the police arrive and take over the investigation." CR>
+ <FINISH>>
diff --git a/goal.zap b/goal.zap
new file mode 100644
index 0000000..9178e23
--- /dev/null
+++ b/goal.zap
@@ -0,0 +1,2106 @@
+
+
+ .FUNCT FOLLOW-GOAL,PERSON,HEER,GT,GOAL,FLG,IGOAL=0,X
+ LOC PERSON >HEER
+ IN? HEER,ROOMS /?CND1
+ CALL META-LOC,HEER >HEER
+ MOVE PERSON,HEER
+?CND1: GETP PERSON,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ GET GT,GOAL-F
+ EQUAL? HEER,STACK \?CCL5
+ CALL GOAL-REACHED,PERSON
+ RSTACK
+?CCL5: GET GT,GOAL-ENABLE
+ ZERO? STACK /FALSE
+ GET GT,GOAL-I >IGOAL
+ GET TRANSFER-TABLE,IGOAL >GOAL
+ ZERO? GOAL \?CND7
+ SET 'IGOAL,FALSE-VALUE
+ GET GT,GOAL-S >GOAL
+?CND7: GETP HEER,P?STATION >X
+ EQUAL? HEER,GOAL,X /?CCL11
+ CALL MOVE-PERSON,PERSON,X
+ RSTACK
+?CCL11: ZERO? GOAL /FALSE
+ EQUAL? HEER,GOAL \?CCL15
+ ZERO? IGOAL /?CCL18
+ ADD IGOAL,1
+ GET TRANSFER-TABLE,STACK >FLG
+ CALL MOVE-PERSON,PERSON,FLG >FLG
+ GET GT,GOAL-F
+ CALL ESTABLISH-GOAL,PERSON,STACK
+ RETURN FLG
+?CCL18: GET GT,GOAL-F >FLG
+ EQUAL? HEER,FLG /?CCL20
+ CALL MOVE-PERSON,PERSON,FLG
+ RSTACK
+?CCL20: CALL GOAL-REACHED,PERSON
+ RSTACK
+?CCL15: GETP GOAL,P?STATION
+ EQUAL? HEER,STACK \?CND9
+ CALL MOVE-PERSON,PERSON,GOAL
+ RSTACK
+?CND9: CALL FOLLOW-GOAL-NEXT,HEER,GOAL >FLG
+ CALL MOVE-PERSON,PERSON,FLG
+ RSTACK
+
+
+ .FUNCT FOLLOW-GOAL-NEXT,HEER,GOAL,LINE,CNT=1,RM,GOAL-FLAG=0,LOC,G
+ GETP GOAL,P?LINE
+ CALL GET-LINE,STACK >LINE
+ GETP GOAL,P?STATION >G
+?PRG1: GET LINE,CNT >RM
+ EQUAL? RM,HEER \?CCL5
+ ZERO? GOAL-FLAG /?CCL8
+ SUB CNT,3
+ GET LINE,STACK >LOC
+ RETURN LOC
+?CCL8: ADD CNT,3
+ GET LINE,STACK >LOC
+ RETURN LOC
+?CCL5: EQUAL? RM,G \?CND3
+ SET 'GOAL-FLAG,TRUE-VALUE
+?CND3: ADD CNT,3 >CNT
+ JUMP ?PRG1
+
+
+ .FUNCT GET-LINE,LN
+ EQUAL? LN,MAIN-LINE-C \?CCL3
+ RETURN MAIN-LINE
+?CCL3: EQUAL? LN,BED-LINE-C \?CCL5
+ RETURN BED-LINE
+?CCL5: EQUAL? LN,TOWER-LINE-C \?CCL7
+ RETURN TOWER-LINE
+?CCL7: EQUAL? LN,PASS-LINE-C \FALSE
+ RETURN PASS-LINE
+
+
+ .FUNCT IN-MOTION?,PERSON,DISABLED-OK=0,GT,L,F,C,?TMP1
+ GETP PERSON,P?CHARACTER >C
+ GET GOAL-TABLES,C >GT
+ EQUAL? PERSON,BUTLER \?CCL3
+ BTST PRESENT-TIME,1 \?CCL3
+ ZERO? DISABLED-OK /FALSE
+?CCL3: GET GT,GOAL-S
+ ZERO? STACK /FALSE
+ LOC PERSON >L
+ GET GT,GOAL-F >F
+ EQUAL? L,F /FALSE
+ ZERO? DISABLED-OK \TRUE
+ GET GT,GOAL-ENABLE
+ ZERO? STACK \TRUE
+ RFALSE
+
+
+ .FUNCT ESTABLISH-GOAL,PERSON,GOAL,SPEED=1,LOCN,GT,?TMP1
+ LOC PERSON >LOCN
+ EQUAL? LOCN,GOAL \?CND1
+ CALL GOAL-REACHED,PERSON
+ RSTACK
+?CND1: EQUAL? PERSON,CONFESSED,CAPTOR \?CND3
+ RETURN LOCN
+?CND3: GETP PERSON,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ GETP LOCN,P?LINE
+ SUB STACK,1
+ MUL STACK,GOAL-I-MULTIPLIER >?TMP1
+ GETP GOAL,P?LINE
+ SUB STACK,1
+ MUL STACK,2
+ ADD ?TMP1,STACK
+ PUT GT,GOAL-I,STACK
+ GETP GOAL,P?STATION
+ PUT GT,GOAL-S,STACK
+ PUT GT,GOAL-F,GOAL
+ PUT GT,GOAL-ENABLE,SPEED
+ RETURN LOCN
+
+
+ .FUNCT GOAL-REACHED,PERSON,GT,VAL=0
+ GETP PERSON,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ PUT GT,GOAL-S,FALSE-VALUE
+ PUTP PERSON,P?LDESC,0
+ CALL META-LOC,PERSON >VAL
+ CALL CREEPY?,VAL
+ ZERO? STACK \?CND1
+ FSET VAL,ONBIT
+?CND1: SET 'GOAL-PERSON,PERSON
+ GET GT,GOAL-FUNCTION
+ CALL D-APPLY,STR?140,STACK,G-REACHED >VAL
+ ZERO? VAL /?CCL5
+ RETURN VAL
+?CCL5: IN? PERSON,HERE \FALSE
+ FSET? PERSON,TOUCHBIT /FALSE
+ GETP PERSON,P?DESCFCN
+ CALL STACK,M-OBJDESC
+ RSTACK
+
+
+ .FUNCT ENTERS?,DIR,WHERE
+ EQUAL? DIR,P?IN /TRUE
+ FSET? WHERE,TOUCHBIT /TRUE
+ RFALSE
+
+
+ .FUNCT TELL-OPEN-DOOR
+ PRINTI " opens the door for a moment and"
+ RTRUE
+
+
+ .FUNCT TELL-HIS-HER-BEDROOM,CHR,WHERE,?TMP1
+ EQUAL? CHR,BUTLER-C \?CND1
+ CALL PRINTT,WHERE
+ RTRUE
+?CND1: INC 'CHR
+ GET CHAR-ROOM-TABLE,CHR >?TMP1
+ GET CHAR-CLOSET-TABLE,CHR
+ EQUAL? WHERE,?TMP1,STACK /?PRG9
+ CALL PRINTT,WHERE
+ RTRUE
+?PRG9: PRINTI " h"
+ SUB CHR,1
+ GET CHARACTER-TABLE,STACK
+ FSET? STACK,FEMALE \?PRG16
+ PRINTI "er "
+ JUMP ?CND11
+?PRG16: PRINTI "is "
+?CND11: FSET? WHERE,SECRETBIT \?PRG23
+ PRINTI "entrance"
+ RTRUE
+?PRG23: PRINTI "bedroom"
+ RTRUE
+
+
+ .FUNCT TELL-LOCKING-THE-DOOR,DOOR
+ ZERO? DOOR /FALSE
+ FSET? DOOR,LOCKED \FALSE
+ PRINTI ", locking the door"
+ RTRUE
+
+
+ .FUNCT MOVE-PERSON,PERSON,WHERE,DIR,EDIR,GT=0,OL,COR,PCOR,CHR,DOOR=0,VAL=0,X
+ FSET? PERSON,MUNGBIT /FALSE
+ EQUAL? PERSON,CONFESSED,CAPTOR,FOLLOWER /FALSE
+ EQUAL? PERSON,BUTLER \?CND1
+ EQUAL? AWAITING-REPLY,BUTLER-1-R,BUTLER-2-R /FALSE
+ EQUAL? AWAITING-REPLY,BUTLER-3-R,BUTLER-4-R /FALSE
+?CND1: PUTP PERSON,P?LDESC,6
+ EQUAL? PERSON,BUTLER \?CND11
+ BTST PRESENT-TIME,1 /FALSE
+?CND11: GETP PERSON,P?CHARACTER >CHR
+ GET GOAL-TABLES,CHR >GT
+ LOC PERSON >OL
+ CALL DIR-FROM,OL,WHERE >DIR
+ CALL COMPASS-EQV,OL,DIR >EDIR
+ SET 'GOAL-PERSON,PERSON
+ ZERO? DIR /?CND15
+ GETPT OL,DIR >X
+ ZERO? X /?CND15
+ PTSIZE X
+ EQUAL? STACK,DEXIT \?CND15
+ GETB X,DEXITOBJ >DOOR
+?CND15: CALL CORRIDOR-LOOK,PERSON >PCOR
+ GET GT,GOAL-FUNCTION
+ CALL D-APPLY,STR?141,STACK,G-ENROUTE
+ EQUAL? M-FATAL,STACK \?CCL22
+ CALL THIS-IS-IT,PERSON
+ RETURN 2
+?CCL22: EQUAL? PERSON,PLAYER \?CCL26
+ ZERO? DOOR /?CND20
+ FSET DOOR,SEENBIT
+ CALL WALK-THRU-DOOR?,X
+ ZERO? STACK \?CND20
+ RETURN 2
+?CCL26: ZERO? NOW-WEARING /?CCL34
+ ZERO? LIT /?CND20
+ FSET? PERSON,NDESCBIT /?CND20
+?CCL34: EQUAL? OL,HERE \?CCL40
+ SET 'VAL,TRUE-VALUE
+ CALL HE-SHE-IT,PERSON,TRUE-VALUE
+ ZERO? DOOR /?CND43
+ FSET? DOOR,OPENBIT /?CND43
+ FSET DOOR,TOUCHBIT
+ CALL TELL-OPEN-DOOR
+?CND43: EQUAL? DIR,P?OUT \?CCL49
+ PRINTI " leaves.
+"
+ JUMP ?CND20
+?CCL49: CALL ENTERS?,DIR,WHERE
+ ZERO? STACK /?PRG58
+ PRINTI " enters"
+ CALL TELL-HIS-HER-BEDROOM,CHR,WHERE
+ CALL TELL-LOCKING-THE-DOOR,DOOR
+ PRINTI ".
+"
+ JUMP ?CND20
+?PRG58: PRINTI " walks "
+ EQUAL? DIR,P?UP,P?DOWN \?CCL62
+ CALL DIR-PRINT,DIR
+ JUMP ?CND60
+?CCL62: FSET? WHERE,TOUCHBIT \?CCL64
+ PRINTI "to"
+ CALL TELL-HIS-HER-BEDROOM,CHR,WHERE
+ JUMP ?CND60
+?CCL64: CALL DIR-PRINT,EDIR
+?CND60: CALL TELL-LOCKING-THE-DOOR,DOOR
+ PRINTI ".
+"
+ JUMP ?CND20
+?CCL40: EQUAL? WHERE,HERE \?CCL70
+ ZERO? NOW-WEARING \?CCL73
+ PRINTI "When you hear the door begin to open, you"
+ PRINT REMEMBER-NOT-DRESSED
+ PRINTI " and hop into "
+ PRINTD YOUR-BATHROOM
+ PRINTI ".
+"
+ CALL GOTO,YOUR-BATHROOM
+ SET 'VAL,M-FATAL
+ JUMP ?CND20
+?CCL73: ZERO? GT /?CCL76
+ GET GT,GOAL-F
+ EQUAL? HERE,STACK /?CND20
+?CCL76: SET 'VAL,TRUE-VALUE
+ CALL START-SENTENCE,PERSON
+ ZERO? DOOR /?CND79
+ FSET? DOOR,OPENBIT /?CND79
+ FSET DOOR,TOUCHBIT
+ CALL TELL-OPEN-DOOR
+?CND79: EQUAL? PRSA,V?WALK \?PRG90
+ EQUAL? OL,OHERE \?PRG90
+ PRINTI " follows you"
+ JUMP ?PRG97
+?PRG90: PRINTI " walks past you from"
+ EQUAL? DIR,P?UP,P?DOWN \?CCL94
+ PRINTC 32
+ CALL OPP-DIR,DIR
+ CALL DIR-PRINT,STACK
+ JUMP ?PRG97
+?CCL94: CALL TELL-HIS-HER-BEDROOM,CHR,OL
+?PRG97: PRINTI ".
+"
+ JUMP ?CND20
+?CCL70: GETP HERE,P?CORRIDOR >COR
+ ZERO? COR /?CND20
+ ZERO? PCOR /?CCL102
+ CALL CORRIDOR-LOOK,WHERE
+ ZERO? STACK \?CCL105
+ SET 'VAL,TRUE-VALUE
+ EQUAL? PERSON,P-HER-OBJECT \?CCL108
+ FSET? HER,TOUCHBIT \?CCL108
+ PRINTI "She"
+ JUMP ?CND106
+?CCL108: EQUAL? PERSON,P-HIM-OBJECT \?CCL114
+ FSET? HIM,TOUCHBIT \?CCL114
+ PRINTI "He"
+ JUMP ?CND106
+?CCL114: CALL START-SENTENCE,PERSON
+ PRINTC 44
+ CALL WHERE?,PERSON,PCOR
+ PRINTC 44
+?CND106: ZERO? DOOR /?CND123
+ FSET? DOOR,OPENBIT /?CND123
+ FSET DOOR,TOUCHBIT
+ CALL TELL-OPEN-DOOR
+?CND123: CALL ENTERS?,DIR,WHERE
+ ZERO? STACK /?PRG132
+ PRINTI " enters"
+ CALL TELL-HIS-HER-BEDROOM,CHR,WHERE
+ JUMP ?CND127
+?PRG132: PRINTI " disappears "
+ EQUAL? DIR,P?UP,P?DOWN /?CND134
+ PRINTI "to the "
+?CND134: CALL DIR-PRINT,EDIR
+?CND127: CALL TELL-LOCKING-THE-DOOR,DOOR
+ PRINTI ".
+"
+ JUMP ?CND20
+?CCL105: SET 'VAL,TRUE-VALUE
+ CALL START-SENTENCE,PERSON
+ PRINTI " is"
+ CALL WHERE?,PERSON,PCOR
+ PRINTI ", heading "
+ EQUAL? PCOR,DIR \?CCL146
+ PRINTI "away from you"
+ JUMP ?PRG157
+?CCL146: CALL OPP-DIR,DIR
+ EQUAL? PCOR,STACK \?CCL150
+ PRINTI "toward you"
+ JUMP ?PRG157
+?CCL150: EQUAL? DIR,P?UP,P?DOWN /?CND153
+ PRINTI "toward the "
+?CND153: CALL DIR-PRINT,EDIR
+?PRG157: PRINTI ".
+"
+ JUMP ?CND20
+?CCL102: CALL CORRIDOR-LOOK,WHERE >PCOR
+ ZERO? PCOR /?CND20
+ SET 'VAL,TRUE-VALUE
+ CALL WHERE?,PERSON,PCOR,TRUE-VALUE
+ CALL HE-SHE-IT,PERSON,0,STR?142
+ CALL DIR-FROM,WHERE,OL
+ CALL COMPASS-EQV,HERE,STACK >DIR
+ EQUAL? DIR,P?IN /?PRG166
+ PRINTI " from"
+ CALL TELL-HIS-HER-BEDROOM,CHR,OL
+?PRG166: PRINTI ".
+"
+?CND20: ZERO? VAL /?CND168
+ IN? LUGGAGE,PERSON \?CND168
+ ZERO? NOW-WEARING /?CND168
+ CALL HE-SHE-IT,PERSON,TRUE-VALUE,STR?1
+ PRINTI " carrying "
+ PRINTD LUGGAGE
+ PRINTI ".
+"
+?CND168: ZERO? PERSON /?CND175
+ MOVE PERSON,WHERE
+?CND175: ZERO? GT /?CND177
+ GET GT,GOAL-F
+ EQUAL? STACK,WHERE \?CCL181
+ CALL GOAL-REACHED,PERSON >X
+ ZERO? X \?CCL184
+ EQUAL? HERE,WHERE \?CCL184
+ FSET? PERSON,NDESCBIT /?CCL184
+ SET 'VAL,TRUE-VALUE
+ CALL HE-SHE-IT,PERSON,TRUE-VALUE
+ PRINTI " enters and nods to you."
+ CRLF
+ JUMP ?CND177
+?CCL184: ZERO? X /?CND177
+ EQUAL? VAL,M-FATAL /?CND177
+ SET 'VAL,X
+ JUMP ?CND177
+?CCL181: GET GT,GOAL-FUNCTION
+ CALL D-APPLY,STR?141,STACK,G-ENROUTE >X
+ ZERO? X \?CCL195
+ IN? PERSON,HERE \?CCL195
+ FSET? PERSON,TOUCHBIT /?CCL195
+ GETP PERSON,P?DESCFCN
+ CALL STACK,M-OBJDESC >X
+ ZERO? X /?CND177
+ SET 'VAL,TRUE-VALUE
+ JUMP ?CND177
+?CCL195: ZERO? X /?CND177
+ EQUAL? VAL,M-FATAL /?CND177
+ SET 'VAL,X
+?CND177: ZERO? VAL /FALSE
+ CALL THIS-IS-IT,PERSON
+ EQUAL? VAL,M-FATAL /?CND207
+ FSET WHERE,SEENBIT
+ PUT FOLLOW-LOC,CHR,WHERE
+?CND207: RETURN VAL
+
+
+ .FUNCT COMPASS-EQV,RM,DIR,DIRTBL,DIRL,P,L,TBL,VAL=0,?TMP1
+ EQUAL? DIR,P?UP,P?DOWN /?CND1
+ EQUAL? DIR,P?IN,P?OUT /?CND1
+ RETURN DIR
+?CND1: GETPT RM,DIR >DIRTBL
+ PTSIZE DIRTBL >DIRL
+ SET 'P,0
+?PRG5: ZERO? VAL /?CCL9
+ RETURN VAL
+?CCL9: NEXTP RM,P >P
+ ZERO? P /FALSE
+ LESS? P,LOW-DIRECTION /?PRG5
+ GETPT RM,P >TBL
+ PTSIZE TBL >L
+ EQUAL? L,DIRL \?PRG5
+ DEC 'L
+?PRG15: GETB TBL,L >?TMP1
+ GETB DIRTBL,L
+ EQUAL? ?TMP1,STACK \?PRG5
+ DLESS? 'L,0 \?PRG15
+ SET 'VAL,P
+ JUMP ?PRG5
+
+
+ .FUNCT DIR-EQV?,RM,DIR1,DIR2,DIR1TBL,DIR2TBL,L,?TMP1
+ EQUAL? DIR1,DIR2 /TRUE
+ GETPT RM,DIR1 >DIR1TBL
+ ZERO? DIR1TBL /FALSE
+ GETPT RM,DIR2 >DIR2TBL
+ ZERO? DIR2TBL /FALSE
+ PTSIZE DIR1TBL >L
+ PTSIZE DIR2TBL
+ EQUAL? L,STACK \FALSE
+ DEC 'L
+?PRG9: GETB DIR1TBL,L >?TMP1
+ GETB DIR2TBL,L
+ EQUAL? ?TMP1,STACK \FALSE
+ DLESS? 'L,0 \?PRG9
+ RTRUE
+
+
+ .FUNCT DIR-FROM,HERE,THERE,V=0,P,D
+ CALL DIR-FROM-TEST,HERE,THERE,P?UP
+ ZERO? STACK /?CCL3
+ RETURN P?UP
+?CCL3: CALL DIR-FROM-TEST,HERE,THERE,P?DOWN
+ ZERO? STACK /?CCL5
+ RETURN P?DOWN
+?CCL5: CALL DIR-FROM-TEST,HERE,THERE,P?IN
+ ZERO? STACK /?CCL7
+ RETURN P?IN
+?CCL7: CALL DIR-FROM-TEST,HERE,THERE,P?OUT
+ ZERO? STACK /?CND1
+ RETURN P?OUT
+?CND1: SET 'P,0
+?PRG9: NEXTP HERE,P >P
+ LESS? P,LOW-DIRECTION \?CCL13
+ RETURN V
+?CCL13: CALL DIR-FROM-TEST,HERE,THERE,P >D
+ ZERO? D /?PRG9
+ LESS? D,LOW-DIRECTION /?PRD19
+ RETURN P
+?PRD19: ZERO? V \?CCL17
+ SET 'V,P
+ JUMP ?PRG9
+?CCL17: RETURN P
+
+
+ .FUNCT DIR-FROM-TEST,HERE,THERE,P,L,TBL
+ GETPT HERE,P >TBL
+ ZERO? TBL /FALSE
+ PTSIZE TBL >L
+ EQUAL? L,DEXIT,UEXIT,CEXIT \FALSE
+ GETB TBL,REXIT
+ EQUAL? STACK,THERE \FALSE
+ RETURN P
+
+
+ .FUNCT I-PLAYER,ARG,VAL=0
+ LOC PLAYER >HERE
+ EQUAL? ARG,G-REACHED \?CCL3
+ CALL MAKE-ALL-PEOPLE,-12
+ RTRUE
+?CCL3: EQUAL? ARG,G-ENROUTE \FALSE
+ EQUAL? OHERE,HERE /FALSE
+ CALL LIT?
+ ZERO? STACK /?PRG20
+ EQUAL? HERE,MAZE /?PRG20
+ SET 'VAL,HERE
+ FSET? VAL,SECRETBIT \?PRD14
+ FSET? HERE,SEENBIT \?PRG20
+?PRD14: RANDOM 100
+ LESS? 50,STACK /FALSE
+ CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >VAL
+ ZERO? VAL /FALSE
+?PRG20: PRINTI "But "
+ FSET? HERE,SURFACEBIT \?PRG27
+ PRINTI "on"
+ JUMP ?PRG29
+?PRG27: PRINTI "in"
+?PRG29: CALL PRINTT,HERE
+ ZERO? VAL \?CCL33
+ PRINTI " you get lost in the dark"
+ JUMP ?PRG46
+?CCL33: FSET? VAL,SECRETBIT \?CCL37
+ PRINTI " you realize that you don't know the way"
+ JUMP ?PRG46
+?CCL37: EQUAL? VAL,GHOST-NEW \?PRG44
+ PRINTI " the ghost blocks your way"
+ JUMP ?PRG46
+?PRG44: CALL HE-SHE-IT,VAL
+ CALL PICK-ONE-NEW,PLAYER-OBSTACLES
+ PRINT STACK
+?PRG46: PRINTI ".
+"
+ CALL MAKE-ALL-PEOPLE,-12
+ RETURN 2
+
+
+ .FUNCT GOODNIGHT,RM,PER,CLOSET=0,DR,VAL=0
+ EQUAL? RM,HERE \?CCL3
+ PRINTD PER
+ CALL THIS-IS-IT,PER
+ PRINTI " shows you firmly to the door, saying"
+ CALL HE-SHE-IT,PER,0,STR?1
+ PRINTI " going to bed."
+ CRLF
+ SET 'VAL,WINNER
+ SET 'WINNER,PLAYER
+ PUTP PER,P?LINE,0
+ GETPT HERE,P?OUT
+ GETB STACK,REXIT
+ CALL GOTO,STACK
+ SET 'WINNER,VAL
+ JUMP ?CND1
+?CCL3: EQUAL? CLOSET,HERE \?CND1
+ CALL FIND-FLAG-LG,CLOSET,DOORBIT,SECRETBIT >DR
+ ZERO? DR /?CND1
+ EQUAL? DR,SECRET-HYDE-DOOR,SECRET-IRIS-DOOR /?CND1
+ FSET? DR,OPENBIT \?CND1
+ FCLEAR DR,OPENBIT
+ GETP PER,P?CHARACTER
+ PUT FOUND-PASSAGES,STACK,TRUE-VALUE
+ CALL LIT? >LIT
+ PRINTD PER
+ PRINTI " closes the "
+ PRINTD DR
+ PRINTI " without noticing you."
+ CRLF
+ SET 'VAL,TRUE-VALUE
+?CND1: FCLEAR RM,ONBIT
+ FSET PER,MUNGBIT
+ FCLEAR RM,OPENBIT
+ FSET RM,LOCKED
+ EQUAL? PER,FOLLOWER \?CND15
+ SET 'FOLLOWER,0
+?CND15: PUTP PER,P?LDESC,14
+ RETURN VAL
+
+
+ .FUNCT GRAB-ATTENTION,PERSON,OBJ=0,N,GT,ATT
+ FSET? PERSON,MUNGBIT \?CCL3
+ GETP PERSON,P?LDESC
+ EQUAL? STACK,14 \?CCL6
+ CALL TOO-BAD-BUT,PERSON,STR?145
+ RFALSE
+?CCL6: CALL TOO-BAD-BUT,PERSON,STR?146
+ RFALSE
+?CCL3: GETP PERSON,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ GET GT,GOAL-FUNCTION
+ EQUAL? STACK,X-RETIRES \?CCL8
+ EQUAL? PERSON,GHOST-NEW,CONFESSED,CAPTOR /?CCL8
+ GETP PERSON,P?CHARACTER
+ EQUAL? VARIATION,STACK /?CCL8
+ ZERO? OBJ /?CTR7
+ FSET? OBJ,PERSONBIT /?CTR7
+ FSET? OBJ,RMUNGBIT /?CCL8
+?CTR7: CALL TOO-BAD-BUT,PERSON,STR?147
+ RFALSE
+?CCL8: EQUAL? PERSON,BUTLER \?CCL17
+ EQUAL? PRSA,V?ASK-FOR /?PRD20
+ GET GT,GOAL-S
+ ZERO? STACK /?CCL17
+?PRD20: EQUAL? PRSA,V?THANKS,V?TAKE,V?SORRY /?CCL17
+ EQUAL? PRSA,V?NO,V?YES /?CCL17
+ EQUAL? PRSO,DINNER,LUGGAGE /?CCL17
+ CALL BUTLER-SORRY
+ RFALSE
+?CCL17: CALL ANGRY-REJECT?,PERSON,OBJ >N
+ ZERO? N /?CND1
+ EQUAL? N,1 \?CCL28
+ PUSH STR?70
+ JUMP ?CND26
+?CCL28: PUSH STR?69
+?CND26: CALL TOO-BAD-BUT,PERSON,STACK
+ RFALSE
+?CND1: GET GT,GOAL-S
+ ZERO? STACK /?CND29
+ GET GT,ATTENTION-SPAN >ATT
+ PUT GT,ATTENTION,ATT
+ ZERO? ATT \?CCL33
+ PUT GT,GOAL-ENABLE,1
+ GET LDESC-STRINGS,17
+ CALL TOO-BAD-BUT,PERSON,STACK
+ RFALSE
+?CCL33: PUT GT,GOAL-ENABLE,0
+?CND29: SET 'QCONTEXT,PERSON
+ GETP PERSON,P?LDESC
+ EQUAL? STACK,21 /TRUE
+ PUTP PERSON,P?LDESC,12
+ RTRUE
+
+
+ .FUNCT ANGRY-REJECT?,PERSON,OBJ,N
+ EQUAL? PERSON,GHOST-NEW /FALSE
+ GETP PERSON,P?LINE >N
+ ZERO? N /FALSE
+ EQUAL? PRSA,V?TELL,V?SORRY,V?FORGIVE /FALSE
+ EQUAL? PRSA,V?GIVE \?CCL9
+ EQUAL? PRSI,PERSON /FALSE
+?CCL9: CALL EVIDENCE?,OBJ,PERSON
+ ZERO? STACK \FALSE
+ RETURN N
+
+
+ .FUNCT WHERE?,PER,X=0,CAP=0,?TMP1
+ IN? PER,HERE /FALSE
+ ZERO? X \?CND4
+ PRINTC 44
+ CALL CORRIDOR-LOOK,PER >X
+?CND4: ZERO? CAP \?CND8
+ PRINTC 32
+?CND8: EQUAL? X,P?DOWN \?CCL12
+ ZERO? CAP \?PRG18
+ PRINTC 100
+ JUMP ?PRG20
+?PRG18: PRINTC 68
+?PRG20: PRINTI "ownstairs"
+ RTRUE
+?CCL12: EQUAL? X,P?IN \?CCL23
+ ZERO? CAP \?PRG29
+ PRINTI "in"
+ JUMP ?CND24
+?PRG29: PRINTI "In"
+?CND24: GETP PER,P?CHARACTER >?TMP1
+ LOC PER
+ CALL TELL-HIS-HER-BEDROOM,?TMP1,STACK
+ RTRUE
+?CCL23: EQUAL? X,P?OUT \?CCL32
+ ZERO? CAP \?PRG38
+ PRINTC 106
+ JUMP ?PRG40
+?PRG38: PRINTC 74
+?PRG40: PRINTI "ust outside"
+ RTRUE
+?CCL32: ZERO? CAP \?PRG47
+ PRINTC 116
+ JUMP ?PRG49
+?PRG47: PRINTC 84
+?PRG49: PRINTI "o the "
+ CALL DIR-PRINT,X
+ RTRUE
+
+
+ .FUNCT DIR-PRINT,DIR,CNT=0,TBL,X
+ ZERO? DIR \?CND1
+ PRINTI "out of view"
+ RTRUE
+?CND1: SET 'TBL,DIR-STRINGS
+?PRG5: GET TBL,CNT >X
+ ZERO? X \?CCL9
+ PRINTI "out of view"
+ RTRUE
+?CCL9: EQUAL? X,DIR \?CND7
+ ADD CNT,1
+ GET TBL,STACK
+ PRINT STACK
+ RTRUE
+?CND7: ADD CNT,2 >CNT
+ JUMP ?PRG5
+
+
+ .FUNCT OPP-DIR,DIR,CNT=0,X
+?PRG1: GET DIR-STRINGS,CNT >X
+ ZERO? X /FALSE
+ EQUAL? X,DIR \?CND3
+ MOD CNT,4
+ ZERO? STACK \?CCL9
+ ADD CNT,2
+ GET DIR-STRINGS,STACK
+ RSTACK
+?CCL9: SUB CNT,2
+ GET DIR-STRINGS,STACK
+ RSTACK
+?CND3: ADD CNT,2 >CNT
+ JUMP ?PRG1
+
+
+ .FUNCT I-TOUR,GARG=0,L
+ GET TOUR-PATH,TOUR-INDEX >L
+ ZERO? L \?CND1
+ EQUAL? FOLLOWER,FRIEND,LORD \FALSE
+ SET 'FOLLOWER,0
+ RFALSE
+?CND1: EQUAL? HERE,GREAT-HALL \?CND5
+ FSET? DOCTOR,TOUCHBIT /?CND5
+ CALL QUEUE,I-TOUR,3
+ MOVE DOCTOR,HERE
+ CALL DOCTOR-D >L
+ SET 'TOUR-FORCED,FALSE-VALUE
+ RETURN L
+?CND5: INC 'TOUR-INDEX
+ SET 'AWAITING-REPLY,FALSE-VALUE
+ CALL MAKE-ALL-PEOPLE,0
+ CALL QUEUED?,I-FOUND-IT
+ ZERO? STACK \?CND9
+ ZERO? TOUR-FORCED \?CND9
+ CRLF
+?CND9: SET 'FOUND-IT,FALSE-VALUE
+ CALL QUEUE,I-FOUND-IT,0
+ EQUAL? L,GALLERY \?PRG48
+ PRINTI """You two will have time to chat later,"" says "
+ PRINTD FRIEND
+ PRINTI ", ""but you must excuse us now, "
+ EQUAL? QCONTEXT,FALSE-VALUE,FRIEND,BUTLER /?CCL19
+ PRINTD QCONTEXT
+ JUMP ?PRG20
+?CCL19: PRINTD DOCTOR
+?PRG20: PRINTI ", while I show "
+ CALL PRINT-NAME,FIRST-NAME
+ PRINTI " up to "
+ ZERO? GENDER-KNOWN \?CCL24
+ PRINTI "the "
+ CALL PRINT-COLOR
+ JUMP ?PRG33
+?CCL24: FSET? PLAYER,FEMALE \?PRG31
+ PRINTI "her"
+ JUMP ?PRG33
+?PRG31: PRINTI "his"
+?PRG33: PRINTI " bedroom. I'm sure "
+ ZERO? GENDER-KNOWN \?CCL37
+ PRINTI "our guest"
+ JUMP ?PRG46
+?CCL37: FSET? PLAYER,FEMALE \?PRG44
+ PRINTI "she"
+ JUMP ?PRG46
+?PRG44: PRINTI "he"
+?PRG46: PRINTI " wants to freshen up for dinner!"""
+ CRLF
+?PRG48: PRINTD FRIEND
+ PRINTI " guides you "
+ EQUAL? L,GALLERY \?PRG55
+ PUTP LORD,P?LDESC,13
+ PUTP DEB,P?LDESC,13
+ PUTP OFFICER,P?LDESC,13
+ PRINTI "up to"
+ JUMP ?PRG57
+?PRG55: PRINTI "into"
+?PRG57: CALL PRINTT,L
+ PRINTI ".
+
+"
+ FSET FRIEND,RMUNGBIT
+ CALL THIS-IS-IT,FRIEND
+ MOVE FRIEND,L
+ EQUAL? L,GALLERY,YOUR-ROOM \?CND59
+ PUTP FRIEND,P?LINE,0
+ PRINTI "She says, """
+ EQUAL? L,GALLERY \?PRG68
+ PRINTI "I know it's confusing, but the British call this the 'first' floor. We just left the 'ground' floor."""
+ CRLF
+ JUMP ?CND59
+?PRG68: PRINTI "You'll be sleeping in the same room that Queen Victoria slept in!"""
+ CRLF
+?CND59: EQUAL? L,GALLERY,YOUR-ROOM /?CND70
+ FSET? LORD,TOUCHBIT \?CND72
+ FSET LORD,RMUNGBIT
+?CND72: MOVE LORD,L
+ PUT FOLLOW-LOC,LORD-C,L
+?CND70: SET 'WINNER,PLAYER
+ CALL GOTO,L,TRUE-VALUE,FALSE-VALUE
+ EQUAL? L,YOUR-ROOM /?CCL76
+ CALL QUEUE,I-TOUR,3
+ JUMP ?CND74
+?CCL76: EQUAL? FOLLOWER,FRIEND,LORD \?CND77
+ SET 'FOLLOWER,0
+?CND77: IN? BUTLER,L \?CND74
+ LOC OFFICER
+ CALL ESTABLISH-GOAL,FRIEND,STACK
+ CALL TAMARA-LEAVES-YOU
+?CND74: SET 'TOUR-FORCED,FALSE-VALUE
+ RETURN 2
+
+
+ .FUNCT I-FRIEND-GREETS,GARG=0
+ PRINTI "When a door opens in the castle"
+ FSET? FRONT-GATE,OPENBIT /?PRG7
+ FSET FRONT-GATE,OPENBIT
+ PRINTI " and the "
+ PRINTD FRONT-GATE
+ PRINTI " creaks open"
+?PRG7: PRINTI ", you decide to "
+ EQUAL? HERE,COURTYARD /?PRG13
+ MOVE CAR,COURTYARD
+ PRINTI "drive through the gate and "
+?PRG13: PRINTI "get out of the car."
+ CRLF
+ CALL GOTO,COURTYARD
+ RTRUE
+
+
+ .FUNCT BUTLER-APPEARS,GARG=0,LL,L
+ EQUAL? GARG,G-REACHED \FALSE
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,BUTLER-FETCHES
+ PUTP BUTLER,P?LDESC,6
+ FSET? COURTYARD,TOUCHBIT /?CCL6
+ CALL ESTABLISH-GOAL,BUTLER,COURTYARD
+ RFALSE
+?CCL6: LOC BUTLER >L
+ CALL META-LOC,LUGGAGE >LL
+ EQUAL? LL,YOUR-ROOM,YOUR-BATHROOM \?CCL9
+ EQUAL? FOLLOWER,FRIEND,LORD \?CND10
+ SET 'FOLLOWER,0
+?CND10: LOC BUTLER
+ CALL ESTABLISH-GOAL,BUTLER,STACK
+ RFALSE
+?CCL9: EQUAL? LL,L \?CCL13
+ CALL BUTLER-FETCHES,G-REACHED
+ RFALSE
+?CCL13: CALL ESTABLISH-GOAL,BUTLER,LL
+ RFALSE
+
+
+ .FUNCT BUTLER-FETCHES,GARG=0,L,LL,GT
+ LOC BUTLER >L
+ CALL META-LOC,LUGGAGE >LL
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ PUTP BUTLER,P?LDESC,6
+ EQUAL? LL,YOUR-ROOM,YOUR-BATHROOM \?CCL3
+ EQUAL? FOLLOWER,FRIEND,LORD \?CND4
+ SET 'FOLLOWER,0
+?CND4: PUT GT,GOAL-FUNCTION,BUTLER-CARRIES
+ LOC BUTLER
+ CALL ESTABLISH-GOAL,BUTLER,STACK
+ RFALSE
+?CCL3: EQUAL? L,LL \?CCL7
+ IN? LUGGAGE,BUTLER /?CCL7
+ PUT GT,GOAL-FUNCTION,BUTLER-CARRIES
+ CALL ESTABLISH-GOAL,BUTLER,YOUR-ROOM
+ FCLEAR LUGGAGE,OPENBIT
+ MOVE LUGGAGE,BUTLER
+ MOVE CAR,COURTYARD
+ EQUAL? L,HERE \FALSE
+ FSET? BUTLER,NDESCBIT /FALSE
+ CALL HE-SHE-IT,BUTLER,TRUE-VALUE
+ PRINTI " takes "
+ PRINTD LUGGAGE
+ PRINTI ".
+"
+ RFALSE
+?CCL7: EQUAL? GARG,G-REACHED \FALSE
+ FSET? COURTYARD,TOUCHBIT \?CCL20
+ CALL META-LOC,LUGGAGE
+ CALL ESTABLISH-GOAL,BUTLER,STACK
+ RFALSE
+?CCL20: CALL ESTABLISH-GOAL,BUTLER,COURTYARD
+ RFALSE
+
+
+ .FUNCT TAMARA-LEAVES-YOU
+ CALL HE-SHE-IT,FRIEND,TRUE-VALUE
+ PRINTI " turns to leave, saying, ""Here's "
+ PRINTD BUTLER
+ IN? LUGGAGE,BUTLER \?PRG7
+ PRINTI " with "
+ PRINTD LUGGAGE
+?PRG7: PRINTI ", so I'll leave you to rest or freshen up, "
+ CALL PRINT-NAME,FIRST-NAME
+ ZERO? STACK /?PRG13
+ PRINTC 46
+?PRG13: PRINTR " Dinner's at eight, by the way -- or whenever you hear the gong."""
+
+
+ .FUNCT BUTLER-CARRIES,GARG=0,L,LL=0
+ LOC BUTLER >L
+ EQUAL? GARG,G-ENROUTE \?CCL3
+ EQUAL? L,FOYER \FALSE
+ FCLEAR FRONT-DOOR,OPENBIT
+ RFALSE
+?CCL3: EQUAL? GARG,G-REACHED \FALSE
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-ENABLE,0
+ CALL QUEUE,I-BUTLER-HINTS,7
+ CALL QUEUE,I-BUTLER-COOKS,9
+ PUTP BUTLER,P?LDESC,9
+ FCLEAR BUTLER,NDESCBIT
+ IN? LUGGAGE,BUTLER \?CND8
+ SET 'LL,TRUE-VALUE
+ MOVE LUGGAGE,BED
+?CND8: CALL QUEUED?,I-TOUR
+ ZERO? STACK \?CND10
+ EQUAL? FRIEND,FOLLOWER /?CND10
+ LOC OFFICER
+ CALL ESTABLISH-GOAL,FRIEND,STACK
+?CND10: EQUAL? L,HERE \FALSE
+ IN? FRIEND,HERE \?PRG21
+ EQUAL? FRIEND,FOLLOWER /?PRG21
+ CALL TAMARA-LEAVES-YOU
+?PRG21: PRINTI "The butler enters"
+ ZERO? LL /?CND23
+ PRINTI " with "
+ PRINTD LUGGAGE
+ PRINTI " and lays it on the bed"
+?CND23: SET 'QCONTEXT,BUTLER
+ CALL THIS-IS-IT,BUTLER
+ FSET BUTLER,TOUCHBIT
+ PUTP BUTLER,P?LDESC,12
+ SET 'AWAITING-REPLY,BUTLER-1-R
+ CALL QUEUE,I-REPLY,CLOCKER-RUNNING
+ PRINTI ".
+""I regret to say, "
+ CALL TITLE-NAME
+ PRINTI ", that the maid will be unable to unpack for you, due to the arrangements for the late Lord Lionel's memorial birthday dinner,"" he apologizes. """
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """
+"
+ RETURN 2
+
+
+ .FUNCT I-BUTLER-HINTS,GARG=0,SAID=0
+ EQUAL? AWAITING-REPLY,BUTLER-1-R,BUTLER-2-R /?CTR2
+ EQUAL? AWAITING-REPLY,BUTLER-3-R,BUTLER-4-R \?CCL3
+?CTR2: CALL QUEUE,I-BUTLER-HINTS,1
+ RETURN SAID
+?CCL3: LESS? 2,BUTLER-HINTS-COUNTER \?CCL7
+ CALL QUEUE,I-BUTLER-HINTS,0
+ RFALSE
+?CCL7: LOC BUTLER
+ EQUAL? HERE,STACK \?CCL9
+ GETP BUTLER,P?LINE
+ ZERO? STACK \?CCL9
+ SET 'SAID,TRUE-VALUE
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,ATTENTION,5
+ INC 'BUTLER-HINTS-COUNTER
+ CALL QUEUE,I-BUTLER-HINTS,2
+ SET 'QCONTEXT,BUTLER
+ CALL THIS-IS-IT,BUTLER
+ PUTP BUTLER,P?LDESC,12
+ EQUAL? 1,BUTLER-HINTS-COUNTER \?CCL14
+ SET 'AWAITING-REPLY,BUTLER-2-R
+ CALL QUEUE,I-REPLY,CLOCKER-RUNNING
+ PRINTD BUTLER
+ PRINTI " coughs diffidently and asks, """
+ CALL TITLE-NAME
+ PRINTI "? "
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """
+"
+ SET 'SAID,M-FATAL
+ RETURN SAID
+?CCL14: EQUAL? 2,BUTLER-HINTS-COUNTER \?CCL18
+ IN? MACE,BUTLER \FALSE
+ SET 'AWAITING-REPLY,BUTLER-3-R
+ CALL QUEUE,I-REPLY,CLOCKER-RUNNING
+ PRINTI "
+"""
+ GET QUESTIONS,AWAITING-REPLY
+ PRINT STACK
+ PRINTI """ adds "
+ PRINTD BUTLER
+ PRINTI ".
+"
+ SET 'SAID,M-FATAL
+ RETURN SAID
+?CCL18: EQUAL? 3,BUTLER-HINTS-COUNTER \?CND1
+ CALL I-BUTLER-COOKS
+ FSET? SECRET-YOUR-DOOR,OPENBIT /?PRG38
+ PRINTI """Ah, by the way, "
+ CALL TITLE-NAME
+ PRINTI " -- s"
+ CALL BUTLER-MIRROR-STORY
+ PRINTI "Without explaining further, "
+ PRINTD BUTLER
+ EQUAL? HERE,YOUR-ROOM \?CCL33
+ PUT FOLLOW-LOC,BUTLER-C,GALLERY
+ MOVE BUTLER,GALLERY
+ PUTP BUTLER,P?LDESC,6
+ PRINTI " abruptly leaves the room."
+ CRLF
+ RETURN SAID
+?CCL33: PUTP BUTLER,P?LDESC,20
+ PRINTI " turns to his work."
+ CRLF
+ RETURN SAID
+?PRG38: PRINTI """I hope you have a pleasant stay with us, "
+ CALL TITLE-NAME
+ ZERO? STACK /?PRG44
+ PRINTC 46
+?PRG44: PRINTI " Dinner is at eight."""
+ CRLF
+ RETURN SAID
+?CCL9: IN? BUTLER,LOCAL-GLOBALS /?CND1
+ CALL QUEUE,I-BUTLER-HINTS,1
+?CND1: RETURN SAID
+
+
+ .FUNCT I-BUTLER-COOKS,GARG=0,VAL=0
+ EQUAL? AWAITING-REPLY,BUTLER-1-R,BUTLER-2-R /?CTR2
+ EQUAL? AWAITING-REPLY,BUTLER-3-R,BUTLER-4-R /?CTR2
+ EQUAL? 3,BUTLER-HINTS-COUNTER /?CCL3
+ CALL I-BUTLER-HINTS >VAL
+ ZERO? VAL /?CCL3
+?CTR2: CALL QUEUE,I-BUTLER-COOKS,2
+ RETURN VAL
+?CCL3: IN? DINNER,KITCHEN \?CCL10
+ PUTP BUTLER,P?LDESC,17
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,BUTLER-COOKS
+ CALL ESTABLISH-GOAL,BUTLER,KITCHEN
+ RETURN VAL
+?CCL10: CALL BUTLER-COOKS,G-REACHED
+ RETURN VAL
+
+
+ .FUNCT BUTLER-COOKS,GARG=0,N
+ EQUAL? GARG,G-REACHED \FALSE
+ PUTP BUTLER,P?LDESC,11
+ SUB 472,PRESENT-TIME >N
+ GRTR? N,0 /?CND4
+ SET 'N,1
+?CND4: IN? DINNER,KITCHEN \?CCL8
+ CALL QUEUE,I-BUTLER-SERVES,N
+ RFALSE
+?CCL8: GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,BUTLER-LEAVES
+ PUTP BUTLER,P?LDESC,17
+ CALL ESTABLISH-GOAL,BUTLER,KITCHEN
+ RFALSE
+
+
+ .FUNCT I-BUTLER-SERVES,GARG=0
+ MOVE DINNER,BUTLER
+ PUTP BUTLER,P?LDESC,17
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,BUTLER-SERVES
+ CALL ESTABLISH-GOAL,BUTLER,DINING-ROOM
+ IN? BUTLER,HERE \FALSE
+ PRINTD BUTLER
+ PRINTR " takes dinner."
+
+
+ .FUNCT BUTLER-SERVES,GARG=0
+ EQUAL? GARG,G-REACHED \FALSE
+ EQUAL? HERE,DINING-ROOM \?CND4
+ CALL HE-SHE-IT,BUTLER,TRUE-VALUE
+ PRINTI " appears"
+?CND4: IN? DINNER,BUTLER \?CND8
+ EQUAL? HERE,DINING-ROOM \?CND10
+ PRINTI ", puts dinner on the "
+ PRINTD SIDEBOARD
+?CND10: MOVE DINNER,SIDEBOARD
+?CND8: IN? LETTER,BUTLER \?CND14
+ EQUAL? HERE,DINING-ROOM \?CND16
+ FCLEAR LETTER,NDESCBIT
+ PRINTI ", leaves a note on Jack's napkin"
+?CND16: MOVE LETTER,TABLE-DINING
+ FSET LETTER,TAKEBIT
+?CND14: FSET CLUE-1,TAKEBIT
+ PUTP BUTLER,P?LDESC,17
+ GETP BUTLER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,BUTLER-LEAVES
+ CALL ESTABLISH-GOAL,BUTLER,KITCHEN
+ EQUAL? HERE,DINING-ROOM \FALSE
+ PRINTR ", and looks around the room."
+
+
+ .FUNCT X-WAITS,GARG=0
+ EQUAL? GARG,G-REACHED \FALSE
+ PUTP GOAL-PERSON,P?LDESC,9
+ RFALSE
+
+
+ .FUNCT I-DINNER,GARG=0,N,CH,SAID=0
+ SET 'N,MASS-COUNTER
+?PRG1: IGRTR? 'N,DEB-C \?CCL5
+ SET 'MASS-SAID,FALSE-VALUE
+ SET 'MASS-COUNTER,0
+ CALL QUEUED?,I-DINNER-SIT
+ ZERO? STACK \FALSE
+ CALL QUEUE,I-DINNER-SIT,5
+ RFALSE
+?CCL5: EQUAL? N,FRIEND-C \?CND3
+ CALL QUEUED?,I-TOUR
+ ZERO? STACK /?CND3
+ CALL QUEUE,I-TOUR,1
+ RFALSE
+?CND3: GET CHARACTER-TABLE,N >CH
+ EQUAL? CH,FOLLOWER \?CND11
+ SET 'FOLLOWER,0
+?CND11: EQUAL? CH,SHOOTER /?PRG1
+ FSET? CH,MUNGBIT /?PRG1
+ IN? CH,DINING-ROOM /?PRG1
+ CALL QUEUE,I-DINNER,1
+ SET 'MASS-COUNTER,N
+ GET GOAL-TABLES,N
+ PUT STACK,GOAL-FUNCTION,X-WAITS
+ CALL ESTABLISH-GOAL,CH,DINING-ROOM
+ CALL META-LOC,CH
+ EQUAL? STACK,HERE /?PRD21
+ RETURN SAID
+?PRD21: EQUAL? HERE,DINING-ROOM /?CND18
+ ZERO? MASS-SAID /?CCL19
+ EQUAL? CH,FOLLOWER /?CCL19
+ RETURN SAID
+?CCL19: SET 'SAID,TRUE-VALUE
+ SET 'MASS-SAID,TRUE-VALUE
+ EQUAL? CH,FOLLOWER \?PRG27
+ SET 'FOLLOWER,0
+?PRG27: CALL HE-SHE-IT,CH,TRUE-VALUE
+ PRINTI " says, ""It's time for dinner now. "
+ EQUAL? NOW-WEARING,DINNER-OUTFIT \?PRG34
+ ZERO? WASHED \?PRG36
+?PRG34: PRINTI "I'll see you in"
+ JUMP ?PRG38
+?PRG36: PRINTI "Let's go to"
+?PRG38: PRINTI " the "
+ PRINTD DINING-ROOM
+ PRINTI "."""
+ CRLF
+?CND18: RETURN SAID
+
+
+ .FUNCT BUTLER-RINGS-BELL?,FAKE=0,P
+ ZERO? FAKE \?CCL3
+ ZERO? BUTLER-RANG-BELL? \FALSE
+?CCL3: SET 'BUTLER-RANG-BELL?,TRUE-VALUE
+ CALL QUEUE,I-DINNER,1
+ FSET CLUE-1,TAKEBIT
+ ZERO? FAKE \?PRG18
+ EQUAL? HERE,KITCHEN \?PRG18
+ PRINTD BUTLER
+ GET FOLLOW-LOC,BUTLER-C
+ EQUAL? HERE,STACK /?PRG16
+ PRINTI " appears and"
+?PRG16: PRINTI " pushes a hidden button. "
+?PRG18: PRINTI "Suddenly, the dinner bell sounds"
+ PRINTR "."
+
+
+ .FUNCT BUTLER-LEAVES,GARG=0,L,VAL=0
+ EQUAL? GARG,G-REACHED \FALSE
+ CALL BUTLER-RINGS-BELL? >VAL
+ MOVE BUTLER,LOCAL-GLOBALS
+ PUT FOLLOW-LOC,BUTLER-C,0
+ EQUAL? HERE,DINING-ROOM \?CCL6
+ CALL QUEUE,I-DINNER-SIT,1
+ JUMP ?CND4
+?CCL6: EQUAL? HERE,KITCHEN \?CND4
+ PRINTI "Then he "
+ IN? MACE,BUTLER \?PRG14
+ PRINTI "drops "
+ CALL PRINTA,MACE
+ PRINTI ", "
+?PRG14: PRINTI "bids you good night, ducks into the areaway, locks the door behind him, and leaves the castle."
+ CRLF
+ SET 'VAL,M-FATAL
+?CND4: IN? MACE,BUTLER \?CND16
+ FCLEAR MACE,NDESCBIT
+ MOVE MACE,KITCHEN
+?CND16: RETURN VAL
+
+
+ .FUNCT I-DINNER-SIT,GARG=0,SAID=0
+ ZERO? DINNER-SAT \FALSE
+ FSET? DINNER,TAKEBIT /?CCL4
+ CALL POPULATION,DINING-ROOM,PLAYER
+ SUB DINNER-FOR,STACK
+ LESS? 1,STACK \?CND1
+?CCL4: LESS? DINNER-SIT-COUNTER,20 \?CND7
+ INC 'DINNER-SIT-COUNTER
+ MOD DINNER-SIT-COUNTER,8
+ ZERO? STACK \?CND7
+ EQUAL? HERE,KITCHEN /?CND7
+ CALL BUTLER-RINGS-BELL?,TRUE-VALUE
+ RTRUE
+?CND7: CALL QUEUE,I-DINNER-SIT,1
+ RFALSE
+?CND1: SET 'DINNER-SAT,TRUE-VALUE
+ SUB LIONEL-TIME,PRESENT-TIME
+ CALL QUEUE,I-LIONEL-SPEAKS,STACK
+ CALL MAKE-ALL-PEOPLE,10,DINING-ROOM
+ FSET DINNER,TAKEBIT
+ FCLEAR DINNER,TRYTAKEBIT
+ MOVE DINNER-2,TABLE-DINING
+ CALL BUTLER-RINGS-BELL?
+ EQUAL? DINING-ROOM,HERE \?CCL15
+ SET 'SAID,M-FATAL
+ MOVE DINNER,TABLE-DINING
+ PRINTD DEB
+ PRINTI " playfully suggests"
+ EQUAL? VARIATION,FRIEND-C \?PRG22
+ CALL THIS-IS-IT,LORD
+ PRINTI " to "
+ PRINTD LORD
+?PRG22: PRINTI " that everyone form a self-serve food line at the buffet. "
+ CALL HE-SHE-IT,LORD,TRUE-VALUE
+ PRINTI " and the others good-naturedly accept her suggestion."
+ CRLF
+ IN? LETTER,TABLE-DINING \?CND24
+ PRINTI "As "
+ PRINTD LORD
+ PRINTI " takes his place as host, he notices a note lying on his napkin. He picks it up and reads it with a troubled expression."
+ CRLF
+?CND24: CALL DINNER-TALK,28
+ JUMP ?CND13
+?CCL15: SET 'MISSED-DINNER,TRUE-VALUE
+?CND13: IN? LETTER,TABLE-DINING /?CCL29
+ RETURN SAID
+?CCL29: MOVE LETTER,LORD
+ FCLEAR LETTER,NDESCBIT
+ RETURN SAID
+
+
+ .FUNCT I-LIONEL-SPEAKS,GARG=0,SAID=0,P
+ DEC 'LIONEL-SPEAKS-COUNTER
+ ZERO? LIONEL-SPEAKS-COUNTER /?CCL3
+ CALL QUEUE,I-LIONEL-SPEAKS,2
+ JUMP ?CND1
+?CCL3: CALL QUEUE,I-WITHDRAW,9
+?CND1: SET 'P,SEARCHER
+ ZERO? P /?CND4
+ IN? P,DINING-ROOM \?CCL5
+ IN? CLUE-1,SIDEBOARD \?CCL5
+ FSET? CLUE-1,TOUCHBIT \?CND4
+?CCL5: SET 'P,FALSE-VALUE
+?CND4: EQUAL? 5,LIONEL-SPEAKS-COUNTER \?CCL13
+ MOVE VOICE,DINING-ROOM
+ CALL MAKE-ALL-PEOPLE,16,DINING-ROOM
+ JUMP ?CND11
+?CCL13: EQUAL? 1,LIONEL-SPEAKS-COUNTER \?CCL15
+ FCLEAR CLUE-2,NDESCBIT
+ FCLEAR CLUE-2,SECRETBIT
+ FCLEAR CLUE-1,SECRETBIT
+ JUMP ?CND11
+?CCL15: ZERO? LIONEL-SPEAKS-COUNTER \?CND11
+ ZERO? P /?CND17
+ FSET CLUE-1,TAKEBIT
+ FCLEAR CLUE-1,NDESCBIT
+ MOVE CLUE-1,P
+?CND17: MOVE VOICE,LOCAL-GLOBALS
+ CALL MAKE-ALL-PEOPLE,18,DINING-ROOM
+?CND11: EQUAL? DINING-ROOM,HERE /?CCL20
+ RETURN SAID
+?CCL20: SET 'SAID,M-FATAL
+ ZERO? LIONEL-FORCED /?CCL23
+ SET 'LIONEL-FORCED,FALSE-VALUE
+ JUMP ?CND21
+?CCL23: CRLF
+?CND21: EQUAL? 5,LIONEL-SPEAKS-COUNTER \?CCL26
+ CALL THIS-IS-IT,BUST
+ FSET BUST,OPENBIT
+ PRINTD LORD
+ PRINTI " and his guests are startled as an unexpected voice suddenly speaks!
+""Good evening, all,"" it says, then breaks into a low chuckle.
+""Good Lord!"" Jack gasps. ""That's Uncle "
+ PRINT LIONELS-VOICE
+ PRINTI "!""
+"
+ PRINTD DOCTOR
+ PRINTI " points to"
+ CALL PRINTT,BUST
+ PRINTI ". ""There's where it's coming from!"""
+ CRLF
+ RETURN SAID
+?CCL26: EQUAL? 4,LIONEL-SPEAKS-COUNTER \?CCL30
+ PRINT LIONELS-VOICE
+ PRINTI " continues, ""You are all here, I trust, to honor the wish expressed in my will -- that the seven of you should dine together at "
+ PRINTD CASTLE
+ PRINTI " on the evening of my birthday."""
+ CRLF
+ RETURN SAID
+?CCL30: EQUAL? 3,LIONEL-SPEAKS-COUNTER \?CCL34
+ CALL THIS-IS-IT,ARTIFACT
+ CALL THIS-IS-IT,LORD
+ PRINT LIONELS-VOICE
+ PRINTI " continues, ""As you know, I enjoyed adventuring to remote corners of the world. And doubtless you've all heard of the loss of that valuable artifact, which I brought back from one of my expeditions, have you not?""
+The guests nod or mumble vaguely. They all glance toward Jack, as if looking for an official response."
+ CRLF
+ RETURN SAID
+?CCL34: EQUAL? 2,LIONEL-SPEAKS-COUNTER \?CCL38
+ PRINT LIONELS-VOICE
+ PRINTI " goes on, "
+ EQUAL? LORD-C,VARIATION \?CND41
+ CALL THIS-IS-IT,LORD
+ PRINTI """Jack, I'm sure, is only too eager for me to shuffle off this mortal coil so he can inherit the family title and estate. Thus he should be particularly interested in what I'm about to say..."" Once again "
+ PRINT LIONELS-VOICE
+ PRINTI " chuckles slyly, then continues."
+ CRLF
+?CND41: CALL THIS-IS-IT,PUNCHBOWL
+ PRINTI """The truth is that the artifact is not lost, but hidden. Although I am not yet ready to reveal what it is, I suggest you look under the "
+ PRINTD PUNCHBOWL
+ PRINTI "."""
+ CRLF
+ RETURN SAID
+?CCL38: EQUAL? 1,LIONEL-SPEAKS-COUNTER \?CCL48
+ CALL THIS-IS-IT,CLUE-2
+ PRINTI """This "
+ PRINTD CLUE-1
+ PRINTI " is merely to sharpen your wits,"" "
+ PRINT LIONELS-VOICE
+ PRINTI " goes on.
+"""
+ PRINTD LOVER
+ PRINTI ", my dear: your one goal in life, I believe, is to become Jack's wife, heaven knows why! Not being Cupid, there is little I can do to help. Knowing the others, I suspect each one has private reasons for wanting my "
+ PRINTD ARTIFACT
+ PRINTI ". So, for your amusement, I have given a "
+ PRINTD CLUE-2
+ PRINTI " to my "
+ EQUAL? VARIATION,LORD-C \?PRG56
+ PRINTI "dear friend"
+ JUMP ?PRG58
+?PRG56: PRINTI "heir"
+?PRG58: PRINTI ", which may start you down the path to finding it.""
+With another sardonic chuckle, "
+ PRINT LIONELS-VOICE
+ PRINTI " adds, ""Perhaps, "
+ EQUAL? VARIATION,LORD-C \?CCL62
+ CALL THIS-IS-IT,PAINTER
+ PRINTD PAINTER
+ JUMP ?PRG67
+?CCL62: CALL THIS-IS-IT,LORD
+ PRINTD LORD
+?PRG67: PRINTI ", you would care to SHARE your clue with all the others -- eh, what?"""
+ CRLF
+ RETURN SAID
+?CCL48: ZERO? LIONEL-SPEAKS-COUNTER /?PRG70
+ RETURN SAID
+?PRG70: PRINT LIONELS-VOICE
+ PRINTI " finishes, ""So now, my friends, let the game begin!"""
+ CRLF
+ ZERO? P /?CND19
+ PRINTD P
+ PRINTI " says, ""Well, I for one want to see that "
+ PRINTD CLUE-1
+ PRINTI "."" "
+ CALL THIS-IS-IT,P
+ CALL HE-SHE-IT,P,TRUE-VALUE
+ PRINTI " lifts the "
+ PRINTD PUNCHBOWL
+ PRINTI " and takes it."
+ CRLF
+?CND19: RETURN SAID
+
+
+ .FUNCT MAKE-ALL-PEOPLE,NUM,RM=0,P,NNUM
+ ZERO? RM \?CND1
+ SET 'RM,HERE
+?CND1: LESS? NUM,0 \?CND3
+ SUB 0,NUM >NNUM
+?CND3: FIRST? RM >P /?PRG5
+?PRG5: ZERO? P /TRUE
+ FSET? P,PERSONBIT \?CND7
+ GRTR? NUM,0 \?CCL13
+ PUTP P,P?LDESC,NUM
+ JUMP ?CND7
+?CCL13: GETP P,P?LDESC
+ EQUAL? NNUM,STACK \?CND7
+ PUTP P,P?LDESC,0
+?CND7: NEXT? P >P /?PRG5
+ JUMP ?PRG5
+
+
+ .FUNCT I-WITHDRAW,GARG=0,OBJ,NXT,SAID=0
+ ZERO? TREASURE-FOUND \?CND1
+ CALL QUEUE,I-SEARCH,9
+ GETP SEARCHER,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,X-SEARCHES
+?CND1: SUB BED-TIME,PRESENT-TIME
+ CALL QUEUE,I-BEDTIME,STACK
+ EQUAL? HERE,DINING-ROOM,CORR-1,SITTING-ROOM \?CCL5
+ SET 'P-HIM-OBJECT,FALSE-VALUE
+ SET 'P-HER-OBJECT,FALSE-VALUE
+ SET 'SAID,TRUE-VALUE
+ PRINTI "
+Normally the gentlemen would remain at the table to enjoy cigars and port, while the ladies repair to the "
+ PRINTD DRAWING-ROOM
+ PRINTI ". But because of tonight's mysterious developments, everyone "
+ EQUAL? HERE,DINING-ROOM \?PRG13
+ PRINTI "leaves the "
+ PRINTD DINING-ROOM
+ JUMP ?PRG15
+?PRG13: PRINTI "goes to the "
+ PRINTD SITTING-ROOM
+?PRG15: PRINTI " by unspoken agreement."
+ CRLF
+ JUMP ?CND3
+?CCL5: EQUAL? HERE,JACK-ROOM,TAMARA-ROOM,IRIS-ROOM /?CCL17
+ EQUAL? HERE,WENDISH-ROOM,VIVIEN-ROOM,IAN-ROOM /?CCL17
+ EQUAL? HERE,HYDE-ROOM \?CND3
+?CCL17: CALL ZMEMQ,HERE,CHAR-ROOM-TABLE
+ SUB STACK,1
+ GET CHARACTER-TABLE,STACK
+ LOC STACK
+ EQUAL? STACK,HERE,LOCAL-GLOBALS /?CND3
+ SET 'DISCOVERED-HERE,HERE
+ CALL QUEUE,I-DISCOVERED,1
+?CND3: LOC DINNER
+ FSET? STACK,PERSONBIT \?CND23
+ MOVE DINNER,TABLE-DINING
+?CND23: LOC DINNER-2
+ FSET? STACK,PERSONBIT \?CND25
+ MOVE DINNER-2,TABLE-DINING
+?CND25: FIRST? DINING-ROOM >OBJ /?KLU37
+?KLU37: NEXT? OBJ >NXT /?PRG27
+?PRG27: ZERO? NXT /?REP28
+ FSET? OBJ,PERSONBIT \?CND29
+ EQUAL? OBJ,PLAYER,CONFESSED,CAPTOR /?CND29
+ PUTP OBJ,P?LDESC,18
+ GETP OBJ,P?CHARACTER
+ PUT FOLLOW-LOC,STACK,SITTING-ROOM
+ MOVE OBJ,SITTING-ROOM
+?CND29: SET 'OBJ,NXT
+ NEXT? OBJ >NXT /?PRG27
+ JUMP ?PRG27
+?REP28: EQUAL? HERE,DINING-ROOM /?CCL36
+ RETURN SAID
+?CCL36: SET 'WINNER,PLAYER
+ CALL GOTO,SITTING-ROOM
+ RETURN SAID
+
+
+ .FUNCT I-SEARCH,GARG=0,SAID=0,GT,L,X=0
+ LOC SEARCHER >L
+ EQUAL? L,DISCOVERED-HERE /?CCL2
+ CALL QUEUED?,I-LIONEL-SPEAKS
+ ZERO? STACK /?CND1
+?CCL2: CALL QUEUE,I-SEARCH,3
+ RFALSE
+?CND1: CALL QUEUE,I-SEARCH,19
+ RANDOM 6
+ ADD 1,STACK
+ GET CHARACTER-TABLE,STACK >X
+ IN? X,SITTING-ROOM \?CND5
+ EQUAL? X,FOLLOWER,CONFESSED,CAPTOR /?CND5
+ GETP X,P?LDESC
+ EQUAL? STACK,22 /?CND5
+ PUTP X,P?LDESC,22
+ EQUAL? HERE,SITTING-ROOM \?CND10
+ SET 'SAID,TRUE-VALUE
+ CALL THIS-IS-IT,X
+ PRINTD X
+ PRINTI " begins "
+ GET LDESC-STRINGS,22
+ PRINT STACK
+ PRINTC 46
+?CND10: NEXT? X >X /?KLU64
+?KLU64: ZERO? X /?CND14
+ FSET? X,PERSONBIT \?CND14
+ EQUAL? X,PLAYER /?CND14
+ ZERO? SAID /?CND19
+ GETP X,P?LDESC
+ EQUAL? STACK,22 \?CND19
+ CALL THIS-IS-IT,X
+ PRINTI " And "
+ PRINTD X
+ PRINTI " stops."
+?CND19: PUTP X,P?LDESC,13
+?CND14: ZERO? SAID /?CND5
+ CRLF
+?CND5: SET 'X,DEB-C
+?PRG27: GET CHARACTER-TABLE,X >GT
+ EQUAL? GT,FOLLOWER /?CND29
+ CALL META-LOC,GT
+ EQUAL? STACK,HERE,SITTING-ROOM /?CND29
+ CALL IN-MOTION?,GT
+ ZERO? STACK \?CND29
+ GETP GT,P?LDESC
+ EQUAL? STACK,7 /?CND29
+ GET GOAL-TABLES,X
+ GET STACK,GOAL-FUNCTION
+ EQUAL? STACK,X-RETIRES,X-SEARCHES /?CND29
+ GET GOAL-TABLES,X
+ PUT STACK,GOAL-FUNCTION,NULL-F
+ CALL ESTABLISH-GOAL,GT,SITTING-ROOM
+?CND29: DLESS? 'X,1 \?PRG27
+ ZERO? CONFESSED \FALSE
+ GETP SEARCHER,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ GET GT,GOAL-FUNCTION
+ EQUAL? STACK,X-SEARCHES /?PRG42
+ RETURN SAID
+?PRG42: SET 'X,CLUE-LOC
+ ZERO? X /?CCL46
+ CALL ZMEMQ,X,SEARCH-ROOMS
+ ZERO? STACK /?CCL46
+ SET 'CLUE-LOC,0
+ JUMP ?CND44
+?CCL46: CALL PICK-ONE,SEARCH-ROOMS >X
+?CND44: EQUAL? X,L /?PRG42
+ CALL ESTABLISH-GOAL,SEARCHER,X
+ EQUAL? HERE,L /?CCL52
+ RETURN SAID
+?CCL52: SET 'SAID,TRUE-VALUE
+ PRINTI "
+Suddenly"
+ CALL HE-SHE-IT,SEARCHER
+ PRINTI " heads for the "
+ EQUAL? HERE,MAZE,GARDEN \?PRG60
+ PRINTI "exit"
+ JUMP ?PRG62
+?PRG60: PRINTI "door"
+?PRG62: PRINTI ", mumbling, ""Please excuse me."""
+ CRLF
+ RETURN SAID
+
+
+ .FUNCT X-SEARCHES,GARG=0,VAL=0
+ EQUAL? GARG,G-REACHED /?CCL2
+ RETURN VAL
+?CCL2: PUTP GOAL-PERSON,P?LDESC,21
+ RETURN VAL
+
+
+ .FUNCT I-DISCOVERED,GARG=0,VAL=0,L,GT
+ EQUAL? DISCOVERED-HERE,HERE /?PRD4
+ RETURN VAL
+?PRD4: ZERO? LIONEL-SPEAKS-COUNTER /?CCL2
+ RETURN VAL
+?CCL2: CALL ZMEMQ,HERE,CHAR-ROOM-TABLE
+ SUB STACK,1 >L
+ GET CHARACTER-TABLE,L >VAL
+ ZERO? GARG \?CND6
+ IN? VAL,HERE /FALSE
+ FSET? VAL,MUNGBIT /FALSE
+ EQUAL? VAL,CONFESSED /FALSE
+ GETP VAL,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ GET STACK,GOAL-FUNCTION
+ EQUAL? STACK,X-RETIRES /FALSE
+?CND6: PUT FOLLOW-LOC,L,HERE
+ CALL QUEUE,I-FOUND-IT,0
+ EQUAL? VAL,GHOST-NEW \?PRG20
+ MOVE GHOST-NEW,HERE
+ CALL GHOST-LURKS
+ RETURN 2
+?PRG20: PRINTI "You freeze as"
+ FSET? HERE,LOCKED \?PRG27
+ FCLEAR HERE,LOCKED
+ PRINTI " a key turns in the lock,"
+?PRG27: PRINTI " the door bursts open and"
+ FCLEAR HERE,OPENBIT
+ GETP VAL,P?LINE
+ ADD 1,STACK
+ PUTP VAL,P?LINE,STACK
+ PUTP VAL,P?LDESC,4
+ CALL HE-SHE-IT,VAL
+ PRINTI " appears. "
+ CALL HE-SHE-IT,VAL,TRUE-VALUE
+ PRINTI " stares at you with a shocked look. "
+ PRINTI """Well! I didn't expect MY room to be searched!"""
+ CALL HE-SHE-IT,VAL
+ PRINTI " says angrily. "
+ LOC VAL >L
+ MOVE VAL,HERE
+ GETP VAL,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ GET GT,GOAL-S
+ ZERO? STACK \?CCL38
+ CALL ESTABLISH-GOAL,VAL,L
+ JUMP ?CND36
+?CCL38: GET GT,GOAL-F
+ CALL ESTABLISH-GOAL,VAL,STACK
+?CND36: PUT GT,GOAL-ENABLE,0
+ CALL HE-SHE-IT,VAL,TRUE-VALUE
+ PRINTI " enters the room and closes the door behind"
+ CALL HIM-HER-IT,VAL
+ PRINTI ".
+"
+ IN? BLOWGUN,VAL \?CND41
+ EQUAL? VAL,PAINTER,DOCTOR \?CND41
+ CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,VAL
+ ZERO? STACK \?CND41
+ CALL SETUP-SHOT,VAL
+ PRINTI "Then"
+ CALL HE-SHE-IT,VAL
+ PRINTI " pulls out"
+ CALL PRINTT,BLOWGUN
+ PRINTC 33
+ CRLF
+?CND41: SET 'VAL,M-FATAL
+ RETURN VAL
+
+
+ .FUNCT I-FOUND-PASSAGES,GARG=0,SAID=0,X
+ FIRST? HERE >X /?KLU12
+?KLU12: ZERO? X /?CND1
+ CALL FOUND-PASSAGES-REPEAT,X,PASSAGE,FOUND-PASSAGES >SAID
+?CND1: FSET? HERE,SECRETBIT /?PRD6
+ RETURN SAID
+?PRD6: CALL FIND-FLAG-LG,HERE,DOORBIT >X
+ ZERO? X /?CND3
+ CALL DOOR-ROOM,HERE,X >X
+ ZERO? X /?CND3
+ FIRST? X >X /?KLU13
+?KLU13: ZERO? X /?CND3
+ CALL FOUND-PASSAGES-REPEAT,X,PASSAGE,FOUND-PASSAGES
+ ZERO? STACK /?CND3
+ SET 'SAID,TRUE-VALUE
+?CND3: RETURN SAID
+
+
+ .FUNCT FOUND-PASSAGES-REPEAT,PER,OBJ,GL,C,SAID=0
+?PRG1: ZERO? PER /?REP2
+ FSET? PER,PERSONBIT \?CND5
+ FSET? PER,MUNGBIT /?CND5
+ PUTP PER,P?LDESC,3
+ GETP PER,P?CHARACTER >C
+ GET GL,C
+ ZERO? STACK \?CND5
+ PUT GL,C,TRUE-VALUE
+ EQUAL? C,VARIATION /?CND5
+ PUTP PER,P?LINE,0
+ ZERO? SAID \?CND5
+ SET 'SAID,PER
+ EQUAL? OBJ,PASSAGE \?CND5
+ CALL GOOD-SHOW,PER,OBJ
+?CND5: NEXT? PER >PER /?PRG1
+ JUMP ?PRG1
+?REP2: RETURN SAID
+
+
+ .FUNCT I-BEDTIME,GARG=0,N,CH,VAL=0,L
+ SET 'N,MASS-COUNTER
+ IGRTR? 'N,DEB-C \?CND1
+ SET 'MASS-SAID,FALSE-VALUE
+ SET 'MASS-COUNTER,0
+ RFALSE
+?CND1: CALL QUEUE,I-BEDTIME,5
+ SET 'MASS-COUNTER,N
+ GET CHARACTER-TABLE,N >CH
+ EQUAL? CH,SEARCHER \?CND3
+ CALL QUEUE,I-SEARCH,0
+?CND3: EQUAL? CH,CONFESSED,CAPTOR /FALSE
+ FSET? CH,MUNGBIT /FALSE
+ GET GOAL-TABLES,N
+ PUT STACK,GOAL-FUNCTION,X-RETIRES
+ ADD 1,N
+ GET CHAR-ROOM-TABLE,STACK
+ CALL ESTABLISH-GOAL,CH,STACK
+ CALL META-LOC,CH >L
+ CALL OUTSIDE?,L
+ ZERO? STACK \?CND9
+ CALL FIND-FLAG,L,PERSONBIT,CH
+ ZERO? STACK \?CND9
+ FCLEAR L,ONBIT
+?CND9: EQUAL? L,HERE \?CND13
+ ZERO? MASS-SAID /?CCL14
+ EQUAL? CH,FOLLOWER \?CND13
+?CCL14: SET 'MASS-SAID,TRUE-VALUE
+ SET 'VAL,TRUE-VALUE
+ PUTP CH,P?LDESC,17
+ PRINTD CH
+ PRINTI " says, ""It's time for bed now. I'll see you in the morning."""
+ CRLF
+?CND13: EQUAL? CH,FOLLOWER /?CCL22
+ RETURN VAL
+?CCL22: SET 'FOLLOWER,0
+ RETURN VAL
+
+
+ .FUNCT FRIEND-PASSAGE-STORY
+ PRINTI """Guess what? I just discovered a "
+ PRINTD PASSAGE
+ PRINTR " in my room! But it's so late that I'm going to bed now. We'll explore in the morning."""
+
+
+ .FUNCT X-RETIRES,GARG=0,L,RM,C,VAL=0,OBJ,GT
+ LOC GOAL-PERSON >L
+ EQUAL? GOAL-PERSON,CONFESSED,CAPTOR /FALSE
+ EQUAL? GARG,G-IMPATIENT \?CCL5
+ EQUAL? L,HERE \?CND1
+ SET 'VAL,TRUE-VALUE
+ CALL HE-SHE-IT,GOAL-PERSON,TRUE-VALUE
+ PRINTI " says, ""I'm dead tired. Good night."""
+ CRLF
+ RETURN VAL
+?CCL5: EQUAL? GARG,G-REACHED /?CCL10
+ RETURN VAL
+?CCL10: GETP GOAL-PERSON,P?CHARACTER >C
+ ADD 1,C
+ GET CHAR-ROOM-TABLE,STACK >RM
+ GET GOAL-TABLES,C >GT
+ EQUAL? L,RM /?CND11
+ FSET? L,SECRETBIT /?CND13
+ CALL ESTABLISH-GOAL,GOAL-PERSON,RM
+ RFALSE
+?CND13: CALL FIND-FLAG-LG,L,DOORBIT >OBJ
+ ZERO? OBJ /?CND15
+ FSET OBJ,OPENBIT
+?CND15: CALL MOVE-PERSON,GOAL-PERSON,RM >VAL
+ ZERO? OBJ /?CND11
+ FCLEAR OBJ,OPENBIT
+?CND11: CALL FIND-FLAG,RM,SURFACEBIT >OBJ
+ ZERO? OBJ /?CCL21
+ CALL ROB,GOAL-PERSON,OBJ
+ JUMP ?CND19
+?CCL21: CALL ROB,GOAL-PERSON,RM
+?CND19: FCLEAR RM,OPENBIT
+ FSET RM,LOCKED
+ EQUAL? VARIATION,LORD-C \?CND22
+ SET 'RM,LIMBO
+?CND22: EQUAL? GOAL-PERSON,FRIEND \?CCL26
+ EQUAL? VARIATION,FRIEND-C /?CCL26
+ GET FOUND-PASSAGES,PLAYER-C
+ ZERO? STACK \?CCL26
+ ZERO? FRIEND-FOUND-PASSAGES \?CCL26
+ GETP HERE,P?LINE
+ ZERO? STACK /?CCL26
+ ZERO? NOW-WEARING /?CCL26
+ FSET? HERE,SECRETBIT /?CCL26
+ GETP HERE,P?CHARACTER
+ EQUAL? STACK,1 /?CCL26
+ EQUAL? HERE,BACKSTAIRS /?CCL26
+ FCLEAR SECRET-TAMARA-DOOR,SECRETBIT
+ SET 'VAL,TRUE-VALUE
+ EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CND36
+ CRLF
+?CND36: EQUAL? HERE,TAMARA-ROOM \?CCL40
+ GET GT,ATTENTION-SPAN
+ PUT GT,ATTENTION,STACK
+ SET 'WINNER,FRIEND
+ GET FOLLOW-LOC,FRIEND-C
+ EQUAL? HERE,STACK \?PRG46
+ PRINTI "Preparing for bed,"
+ PRINTD FRIEND
+ JUMP ?PRG48
+?PRG46: PRINTD FRIEND
+ PRINTI " enters and"
+?PRG48: PRINTI " accidentally touches the bedpost. "
+ CALL THIS-IS-IT,FRIEND
+ CALL OPEN-SECRET,STR?161,STR?162,SECRET-TAMARA-DOOR
+ SET 'WINNER,PLAYER
+ JUMP ?CND24
+?CCL40: CALL QUEUED?,I-SHOT
+ ZERO? STACK \?CND24
+ FSET PASSAGE,SEENBIT
+ FSET SECRET-TAMARA-DOOR,OPENBIT
+ MOVE FRIEND,HERE
+ PUT FOLLOW-LOC,FRIEND-C,HERE
+ PUT GT,GOAL-FUNCTION,X-RETIRES
+ CALL ESTABLISH-GOAL,FRIEND,TAMARA-ROOM
+ PRINTI "Suddenly "
+ PRINTD FRIEND
+ PRINTI " appears and says, "
+ CALL FRIEND-PASSAGE-STORY
+ JUMP ?CND24
+?CCL26: CALL TIME-FOR-GHOST?,RM
+ ZERO? STACK /?CCL54
+ CALL QUEUE,I-SEARCH,0
+ EQUAL? VILLAIN-PER,LOVER \?CCL57
+ PUTP DEB,P?LDESC,24
+ GET GT,ATTENTION-SPAN
+ PUT GT,ATTENTION,STACK
+ LOC LOVER
+ CALL DRESS-GHOST,STACK,LOVER-C
+ GET GOAL-TABLES,GHOST-NEW-C
+ PUT STACK,GOAL-FUNCTION,LOVER-XFER
+ CALL ESTABLISH-GOAL,GHOST-NEW,BASEMENT
+ CALL MOVE-PERSON,GHOST-NEW,LOVER-PATH >VAL
+ JUMP ?CND24
+?CCL57: CALL DRESS-GHOST,RM,C
+ CALL GHOST-INTO-PASSAGE,C >VAL
+ CALL ESTABLISH-GOAL,GHOST-NEW,YOUR-CLOSET
+ JUMP ?CND24
+?CCL54: FSET? GOAL-PERSON,FEMALE \?CCL60
+ PUTP GOAL-PERSON,P?LDESC,24
+ JUMP ?CND58
+?CCL60: PUTP GOAL-PERSON,P?LDESC,25
+?CND58: PUT GT,ATTENTION-SPAN,5
+ PUT GT,ATTENTION,5
+?CND24: SET 'FRIEND-FOUND-PASSAGES,TRUE-VALUE
+?CND1: RETURN VAL
+
+
+ .FUNCT GHOST-INTO-PASSAGE,C,RM
+ ADD 1,C
+ GET CHAR-CLOSET-TABLE,STACK >RM
+ MOVE GHOST-NEW,RM
+ EQUAL? RM,HERE \FALSE
+ CALL FIND-FLAG-LG,RM,DOORBIT,SECRETBIT >RM
+ FSET RM,OPENBIT
+ CRLF
+ CALL START-SENTENCE,RM
+ PRINTI " bursts open!
+"
+ RETURN M-FATAL
+
+
+ .FUNCT TIME-FOR-GHOST?,RM,X
+ EQUAL? VILLAIN-PER,LOVER \?CCL3
+ EQUAL? GOAL-PERSON,DEB /?CND1
+ RFALSE
+?CCL3: EQUAL? GOAL-PERSON,VILLAIN-PER \FALSE
+?CND1: IN? VILLAIN-PER,LOCAL-GLOBALS /FALSE
+ EQUAL? GOAL-PERSON,FRIEND /FALSE
+ GET FOUND-COSTUME,PLAYER-C
+ ZERO? STACK \FALSE
+ FSET? BLOWGUN,TOUCHBIT /FALSE
+ CALL FIND-FLAG-LG,RM,DOORBIT,SECRETBIT >X
+ ZERO? X /?CCL18
+ FSET? X,OPENBIT /FALSE
+?CCL18: CALL FIND-FLAG,RM,PERSONBIT,VILLAIN-PER
+ ZERO? STACK /TRUE
+ RFALSE
+
+
+ .FUNCT DRESS-GHOST,L,C,ADJ,PT,?TMP1
+ MOVE GHOST-NEW,L
+ MOVE VILLAIN-PER,LOCAL-GLOBALS
+ ADD 1,GHOST-NEW-C >?TMP1
+ ADD 1,C
+ GET CHAR-CLOSET-TABLE,STACK
+ PUT CHAR-CLOSET-TABLE,?TMP1,STACK
+ GETP VILLAIN-PER,P?STATION >ADJ
+ ZERO? ADJ /?CND1
+ GETPT HEAD,P?ADJECTIVE >PT
+ PTSIZE PT
+ SUB STACK,1
+ CALL ZMEMQB,ADJ,PT,STACK >OTHER-POSS-POS
+ ZERO? OTHER-POSS-POS /?CND1
+ PUTB PT,OTHER-POSS-POS,A?G'S
+ GETPT HANDS,P?ADJECTIVE
+ PUTB STACK,OTHER-POSS-POS,A?G'S
+ GETPT EYE,P?ADJECTIVE
+ PUTB STACK,OTHER-POSS-POS,A?G'S
+ GETPT OTHER-OUTFIT,P?ADJECTIVE
+ PUTB STACK,OTHER-POSS-POS,A?G'S
+?CND1: FSET COSTUME,NDESCBIT
+ FCLEAR COSTUME,TAKEBIT
+ FSET COSTUME,WORNBIT
+ MOVE COSTUME,GHOST-NEW
+ EQUAL? C,DOCTOR-C \?CND5
+ MOVE MUSTACHE,WENDISH-KIT
+ FCLEAR MUSTACHE,NDESCBIT
+ FSET MUSTACHE,TAKEBIT
+?CND5: EQUAL? VARIATION,LORD-C /?CND7
+ FSET BLOWGUN,NDESCBIT
+ FCLEAR BLOWGUN,TAKEBIT
+ MOVE BLOWGUN,GHOST-NEW
+?CND7: GET GOAL-TABLES,C
+ PUT STACK,GOAL-FUNCTION,GHOST-LURKS
+ GET GOAL-TABLES,C
+ PUT STACK,ATTENTION-SPAN,0
+ RTRUE
+
+
+ .FUNCT LOVER-XFER,GARG=0,VAL=0,L
+ LOC GOAL-PERSON >L
+ EQUAL? GARG,G-ENROUTE \?CCL3
+ CALL GHOST-LURKS,GARG >VAL
+ RETURN VAL
+?CCL3: EQUAL? GARG,G-REACHED /?CCL4
+ RETURN VAL
+?CCL4: EQUAL? L,HERE \?CCL7
+ CALL GHOST-LURKS,GARG >VAL
+ RETURN VAL
+?CCL7: EQUAL? L,BASEMENT \?CCL9
+ MOVE GOAL-PERSON,KITCHEN
+ CALL ESTABLISH-GOAL,GOAL-PERSON,BACKSTAIRS
+ CALL GHOST-LURKS,G-ENROUTE >VAL
+ RETURN VAL
+?CCL9: EQUAL? L,BACKSTAIRS /?CCL10
+ RETURN VAL
+?CCL10: MOVE GOAL-PERSON,DINING-PASSAGE
+ CALL ESTABLISH-GOAL,GOAL-PERSON,YOUR-CLOSET
+ GETP GOAL-PERSON,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,GHOST-LURKS
+ CALL GHOST-LURKS,G-ENROUTE >VAL
+ RETURN VAL
+
+
+ .FUNCT I-COME-TO,GARG=0,P,L=0,V
+ IN? GHOST-NEW,LOCAL-GLOBALS \?CCL3
+ SET 'P,VILLAIN-PER
+ PUTP P,P?LDESC,4
+ EQUAL? P,LOVER /?CND1
+ GETP P,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,X-RETIRES
+ GETP P,P?CHARACTER
+ ADD 1,STACK >L
+ CALL META-LOC,P
+ FSET? STACK,SECRETBIT \?CCL8
+ GET CHAR-CLOSET-TABLE,L >L
+ JUMP ?CND1
+?CCL8: GET CHAR-ROOM-TABLE,L >L
+ JUMP ?CND1
+?CCL3: SET 'P,GHOST-NEW
+ PUTP P,P?LDESC,0
+ FSET P,NDESCBIT
+ GETP P,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-FUNCTION,GHOST-LURKS
+ SET 'L,YOUR-CLOSET
+ LOC P
+ FSET? STACK,SECRETBIT /?CND1
+ GETP VILLAIN-PER,P?CHARACTER
+ CALL GHOST-INTO-PASSAGE,STACK
+?CND1: FCLEAR P,MUNGBIT
+ CALL VISIBLE?,P >V
+ ZERO? V /?CND11
+ CALL START-SENTENCE,P
+ CALL WHERE?,P
+ ZERO? STACK /?PRG19
+ PRINTC 44
+?PRG19: PRINTI " shakes"
+ CALL HIM-HER-IT,P,FALSE-VALUE,TRUE-VALUE
+ PRINTI " head and comes to."
+ CRLF
+ EQUAL? VILLAIN-PER,LOVER \?CCL23
+ CALL LOVER-SPEECH
+ ZERO? STACK /?CCL23
+ SET 'V,M-FATAL
+ JUMP ?CND11
+?CCL23: EQUAL? P,GHOST-NEW /?CND11
+ SET 'V,M-FATAL
+ CALL HE-SHE-IT,P,TRUE-VALUE
+ PRINTI " says, ""I feel... sleepy. I think..."""
+ CRLF
+?CND11: ZERO? L /?CND29
+ GETP P,P?CHARACTER
+ GET GOAL-TABLES,STACK
+ PUT STACK,GOAL-S,TRUE-VALUE
+ CALL ESTABLISH-GOAL,P,L
+?CND29: RETURN V
+
+
+ .FUNCT LOVER-SPEECH
+ IN? GHOST-NEW,HERE \?CND1
+ SET 'LOVER-SAID,TRUE-VALUE
+ CALL HE-SHE-IT,GHOST-NEW,TRUE-VALUE
+ PRINTI " says, ""Please don't speak, just listen! I'm really "
+ PRINTD LOVER
+ PRINTI ", and I'm alive. Jack tried to murder me, and I think he murdered Lionel! He pushed me down the well, but an underground stream carried me quickly to sea, where I was rescued by a yacht.
+I have come back to "
+ PRINTD CASTLE
+ PRINTI " in disguise -- both to frighten him and to find some proof of Lionel's murder. And to incriminate "
+ PRINTD LORD
+ PRINTI " for my own 'murder' by planting the "
+ PRINTD JEWEL
+ PRINTI " from my necklace in the clothes he wore that night -- but then I lost it in the "
+ PRINTD DRAWING-ROOM
+ PRINTI ".""
+She goes on, ""But now that you're on the case, I can leave the country with the yacht captain. Find proof of Lionel's murder, and we both can rest easily!""
+She races off "
+ CALL GHOST-FLEES,TRUE-VALUE
+ CALL CONGRATS,COSTUME
+ FSET LOVER,SEENBIT
+?CND1: MOVE GHOST-NEW,LIMBO
+ FSET GHOST-NEW,MUNGBIT
+ PUT FOLLOW-LOC,GHOST-NEW-C,0
+ RETURN LOVER-SAID
+
+
+ .FUNCT GHOST-FLEES,PART=0
+ ZERO? PART \?CND1
+ MOVE GHOST-NEW,LIMBO
+ FSET GHOST-NEW,MUNGBIT
+ PUT FOLLOW-LOC,GHOST-NEW-C,0
+ CALL HE-SHE-IT,GHOST-NEW,TRUE-VALUE
+ PRINTI " dodges your attack and flees "
+?CND1: EQUAL? HERE,LOVER-PATH \?PRG10
+ PRINTI "down the path"
+ JUMP ?PRG12
+?PRG10: PRINTI "toward the "
+ PRINTD PRIEST-DOOR
+?PRG12: PRINTR "."
+
+
+ .FUNCT GHOST-LURKS,GARG=0,L,OBJ,VAL=0,GT,C
+ LOC GHOST-NEW >L
+ SET 'C,GHOST-NEW-C
+ GET GOAL-TABLES,C >GT
+ EQUAL? L,HERE \?CCL3
+ FSET? GHOST-NEW,TOUCHBIT /?CND4
+ CALL GHOST-NEW-D
+?CND4: SET 'VAL,M-FATAL
+ SET 'AIMED-HERE,HERE
+ PRINTI "The ghost "
+ CALL QUEUED?,I-SHOT
+ ZERO? STACK /?PRG13
+ PRINTI "follows"
+ JUMP ?CND8
+?PRG13: PRINTI "approaches"
+?CND8: CALL THIS-IS-IT,GHOST-NEW
+ PRINTI " you,"
+ CALL HIM-HER-IT,GHOST-NEW,FALSE-VALUE,TRUE-VALUE
+ PRINTI " cold eyes shining. In a moment,"
+ CALL HE-SHE-IT,GHOST-NEW
+ PUT GT,GOAL-ENABLE,0
+ FSET PLAYER,SEENBIT
+ SET 'SHOOTER,GHOST-NEW
+ CALL QUEUE,I-SHOT,CLOCKER-RUNNING
+ EQUAL? VILLAIN-PER,LOVER \?CCL20
+ PUTP GHOST-NEW,P?LDESC,17
+ PRINTI " sees you and freezes."
+ CRLF
+ RETURN VAL
+?CCL20: PUTP GHOST-NEW,P?LDESC,8
+ PRINTI " poi"
+ IN? BLOWGUN,GHOST-NEW \?PRG30
+ SET 'AIMED-HERE,HERE
+ FCLEAR BLOWGUN,NDESCBIT
+ PRINTI "nts"
+ CALL PRINTT,BLOWGUN
+ PRINTI " at"
+ JUMP ?PRG32
+?PRG30: PRINTI "ses to attack"
+?PRG32: PRINTI " you."
+ CRLF
+ RETURN VAL
+?CCL3: EQUAL? GARG,G-REACHED /?CCL34
+ RETURN VAL
+?CCL34: EQUAL? L,YOUR-CLOSET /?CCL37
+ CALL ESTABLISH-GOAL,GHOST-NEW,YOUR-CLOSET
+ RETURN VAL
+?CCL37: ADD 1,C
+ GET CHAR-CLOSET-TABLE,STACK
+ CALL ESTABLISH-GOAL,GHOST-NEW,STACK
+ RETURN VAL
+
+
+ .FUNCT I-SHOT,GARG=0,VAL=0,L,GT
+ GETP SHOOTER,P?CHARACTER
+ GET GOAL-TABLES,STACK >GT
+ EQUAL? VILLAIN-PER,LOVER \?CCL3
+ IN? GHOST-NEW,HERE \?CND4
+ SET 'VAL,TRUE-VALUE
+ CALL HE-SHE-IT,GHOST-NEW,TRUE-VALUE
+ PRINTI " flees into the dark."
+ CRLF
+?CND4: MOVE GHOST-NEW,LIMBO
+ FSET GHOST-NEW,MUNGBIT
+ PUT FOLLOW-LOC,GHOST-NEW-C,0
+ RETURN VAL
+?CCL3: EQUAL? AIMED-HERE,HERE \?CCL9
+ IN? BLOWGUN,SHOOTER /?CCL12
+ PRINTI "You struggle to get free, but"
+ CALL PRINTT,SHOOTER
+ PRINTI "'s hands clench tighter around your throat! Soon the pain grows until the room begins to black out"
+ EQUAL? SHOOTER,GHOST-NEW \?PRG19
+ PRINTI ". Your only consolation is that the ghost's wig falls off, and just as you take your last breath, you see that it's really "
+ PRINTD VILLAIN-PER
+?PRG19: PRINTI "! But"
+ JUMP ?PRG27
+?CCL12: FSET? HERE,ONBIT \?PRG25
+ CALL HE-SHE-IT,SHOOTER,TRUE-VALUE
+ PRINTI " puts"
+ CALL PRINTT,BLOWGUN
+ PRINTI " to"
+ CALL HIM-HER-IT,SHOOTER,FALSE-VALUE,TRUE-VALUE
+ PRINTI " lips and puffs"
+ CALL HIM-HER-IT,SHOOTER,FALSE-VALUE,TRUE-VALUE
+ PRINTI " cheeks out and in. "
+?PRG25: PRINTI "You feel a sharp pain in the chest. Your vision mists over, the room blacks out, and your legs give way beneath you.
+The sad fact is, "
+ CALL PRINT-NAME,FIRST-NAME
+ PRINTI ", that you've been shot with a"
+ PRINT POISON-DART
+ PRINTI ", and"
+?PRG27: PRINTI " for you, the game is over!
+"
+ CALL FINISH
+ RETURN VAL
+?CCL9: ZERO? SHOOTER /?CND1
+ FSET? SHOOTER,MUNGBIT /?CND1
+ PUT GT,GOAL-ENABLE,2
+ FSET? HERE,SECRETBIT \?CCL34
+ SET 'L,HERE
+ JUMP ?CND32
+?CCL34: EQUAL? SHOOTER,GHOST-NEW \?CCL36
+ GET GT,GOAL-F >L
+ JUMP ?CND32
+?CCL36: CALL GENERIC-CLOSET,0 >L
+ ZERO? L \?CND32
+ GETP VILLAIN-PER,P?CHARACTER
+ ADD 1,STACK
+ GET CHAR-CLOSET-TABLE,STACK >L
+?CND32: PUT GT,GOAL-S,L
+ CALL ESTABLISH-GOAL,SHOOTER,L
+ SET 'SHOOTER,FALSE-VALUE
+ FSET BLOWGUN,NDESCBIT
+?CND1: RETURN VAL
+
+ .ENDI
diff --git a/goal.zil b/goal.zil
index ae8b5f9..60c26a4 100644
--- a/goal.zil
+++ b/goal.zil
@@ -562,6 +562,7 @@ hop into " 'YOUR-BATHROOM ".|">
<OR <VERB? ASK-FOR>
<T? <GET .GT ,GOAL-S>>>
<NOT <VERB? SORRY TAKE THANKS>>
+ <NOT <VERB? YES NO>>
<NOT <DOBJ? LUGGAGE DINNER>>>
<BUTLER-SORRY>
<RFALSE>)
@@ -1754,6 +1755,8 @@ CHE ,GOAL-PERSON " says, \"I'm dead tired. Good night.\"" CR>)>)
<PUTB <GETPT ,HANDS ,P?ADJECTIVE>
,OTHER-POSS-POS ,A?G\'S>
<PUTB <GETPT ,EYE ,P?ADJECTIVE>
+ ,OTHER-POSS-POS ,A?G\'S>
+ <PUTB <GETPT ,OTHER-OUTFIT ,P?ADJECTIVE>
,OTHER-POSS-POS ,A?G\'S>)>)>
<FSET ,COSTUME ,NDESCBIT>
<FCLEAR ,COSTUME ,TAKEBIT>
diff --git a/lumber.ozil b/lumber.ozil
new file mode 100644
index 0000000..6d95f0d
--- /dev/null
+++ b/lumber.ozil
@@ -0,0 +1,910 @@
+"Excess baggage from Moomnist"
+
+;<OBJECT DRAWING
+ (IN DESK)
+ (DESC "drawing")
+ (ADJECTIVE LIONEL)
+ (SYNONYM DRAWING DOODLE)
+ (FLAGS TAKEBIT READBIT)
+ (ACTION DRAWING-F)>
+
+;<ROUTINE DRAWING-F ()
+ <COND (<VERB? EXAMINE READ>
+ <TELL "[The drawing portrays ">
+ <COND (<EQUAL? ,VARIATION ,LORD-C>
+ <TELL
+"the King of Spades, holding a scepter." CR>)
+ (<EQUAL? ,VARIATION ,FRIEND-C>
+ <TELL
+"a bird in flight, shot by an arrow and dripping blood." CR>)
+ (<EQUAL? ,VARIATION ,DOCTOR-C>
+ <TELL
+"a " 'SKELETON " in Chinese mandarin costume." CR>)
+ ;(<EQUAL? ,VARIATION ,DEALER-C>
+ <TELL
+"a coiled cobra rearing its head in response to a snake charmer's flute music."
+CR>)
+ (<EQUAL? ,VARIATION ,PAINTER-C>
+ <TELL
+"an underwater diver, naked except for a loincloth." CR>)>)>>
+
+;<OBJECT TOWER-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "tower door")
+ (ADJECTIVE TOWER)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)>
+
+;<ROOM ANTE-ROOM
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT VOWELBIT OPENBIT DOORBIT)
+ (DESC "anteroom")
+ (ADJECTIVE ANTE NEW TOWER)
+ (SYNONYM ANTEROOM ROOM DOOR)
+ (LDESC "[NE to courtyard, SW to old great hall]")
+ (LINE 3)
+ (STATION OLD-GREAT-HALL)
+ (CHARACTER 2) ;"floor number"
+ (GLOBAL ANTE-ROOM FIREPLACE ;TOWER-DOOR CHAIR)
+ (NE TO COURTYARD IF ANTE-ROOM ;TOWER-DOOR IS OPEN)
+ (NORTH TO COURTYARD IF ANTE-ROOM ;TOWER-DOOR IS OPEN)
+ (EAST TO COURTYARD IF ANTE-ROOM ;TOWER-DOOR IS OPEN)
+ (OUT TO COURTYARD IF ANTE-ROOM ;TOWER-DOOR IS OPEN)
+ (IN TO OLD-GREAT-HALL)
+ (SW TO OLD-GREAT-HALL)
+ (SOUTH TO OLD-GREAT-HALL)
+ (WEST TO OLD-GREAT-HALL)>
+
+;<ROUTINE AFRICA-PSEUDO ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It depicts the Battle of Blood River, during the Boer War." CR>)>>
+
+;<ROUTINE BURMA-PSEUDO ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It's a piece of the bridge over the River Kwai." CR>)>>
+
+;<ROUTINE PHILIPPINE-PSEUDO ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It shows Lionel at the American Museum of Natural History." CR>)>>
+
+;<ROUTINE EGYPT-PSEUDO ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It's a model of the Egyptian Sphinx, made of real sandstone." CR>)>>
+
+;<ROUTINE PACIFIC-PSEUDO ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It's an oyster shell, almost two feet across, with a lining of very dark
+mother-of-pearl." CR>)>>
+
+;<ROUTINE AMAZON-PSEUDO ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"It's a wooden model of an Amazon river steamer." CR>)>>
+
+ ;<PSEUDO (<> PAINTING AFRICA-PSEUDO)
+ (<> WOOD BURMA-PSEUDO)
+ (<> PHOTO PHILIPPINE-PSEUDO)
+ ( MODEL SPHINX EGYPT-PSEUDO)
+ ( GIANT OYSTER PACIFIC-PSEUDO)
+ ( MODEL BOAT AMAZON-PSEUDO)>
+
+;<OBJECT BRITANNIA
+ (IN OLD-GREAT-HALL)
+ (DESC "statue of Britannia")
+ (LDESC
+"A life-size gilt statue of Britannia with trident reclines over the archway
+leading to the wing.")
+ ;(ADJECTIVE LIFE-SIZE GILT)
+ (SYNONYM BRITANNIA STATUE)
+ (FLAGS SURFACEBIT OPENBIT NDESCBIT)
+ (CAPACITY 5)
+ (ACTION BRITANNIA-F)>
+
+;<ROUTINE BRITANNIA-F ()
+ <COND (<VERB? EXAMINE SEARCH SEARCH-FOR>
+ <COND (<NOT <==? ,PLAYER-SEATED ,LIBRARY-STOOL>>
+ <COND (<VERB? EXAMINE>
+ <RFALSE>)
+ (T
+ <YOU-CANT "reach">
+ <RTRUE>)>)
+ ;(<AND <IN? ,HEADDRESS ,BRITANNIA>
+ <FSET? ,HEADDRESS ,SECRETBIT>>
+ <DISCOVER ,HEADDRESS>
+ <RTRUE>)>)
+ (<REMOTE-VERB?>
+ <RFALSE>)
+ (<NOT <==? ,PLAYER-SEATED ,LIBRARY-STOOL>>
+ <YOU-CANT "reach">
+ <RTRUE>)>>
+
+;<ROOM STAIRS-0
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT)
+ (DESC "basement stairway")
+ (ADJECTIVE BASEMENT)
+ (SYNONYM STAIR STAIRS STAIRWAY ;ROOM)
+ (GENERIC GENERIC-STAIRS-F)
+ (LDESC
+"The stairs curve up to the southeast and down to the northwest.")
+ (LINE 3)
+ (STATION STAIRS-0)
+ (UP TO JUNCTION)
+ (EAST TO JUNCTION)
+ (SOUTH TO JUNCTION)
+ (SE TO JUNCTION)
+ (OUT TO JUNCTION)
+ (DOWN TO BASEMENT)
+ (NORTH TO BASEMENT)
+ (WEST TO BASEMENT)
+ (NW TO BASEMENT)
+ (IN TO BASEMENT)>
+
+;<ROOM STAIRS-1
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT)
+ (DESC "first stairway")
+ (ADJECTIVE FIRST)
+ (SYNONYM STAIR STAIRS STAIRWAY)
+ (GENERIC GENERIC-STAIRS-F)
+ (LDESC
+"The stairs curve up to the northeast and down to the southwest.")
+ (LINE 3)
+ (STATION STAIRS-1)
+ (UP TO CORR-2)
+ (NORTH TO CORR-2)
+ (EAST TO CORR-2)
+ (NE TO CORR-2)
+ (IN TO CORR-2)
+ (DOWN TO OLD-GREAT-HALL)
+ (SOUTH TO OLD-GREAT-HALL)
+ (WEST TO OLD-GREAT-HALL)
+ (SW TO OLD-GREAT-HALL)
+ (OUT TO OLD-GREAT-HALL)>
+
+;<OBJECT JACK-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Lord Jack's door")
+ (ADJECTIVE JACK\'S HIS BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-JACK-DOOR-F)>
+
+;<ROUTINE MAKE-VISIBLE (OBJ)
+ <TELL "You find" THE .OBJ>
+ <FCLEAR .OBJ ,NDESCBIT>
+ <FSET .OBJ ,TAKEBIT>
+ <FSET .OBJ ,TOUCHBIT>
+ <MOVE .OBJ ,PLAYER>
+ <THIS-IS-IT .OBJ>
+ <TELL " and pick it up." CR>>
+
+;<ROUTINE WAR-CLUB-HACK ("OPTIONAL" (SP? T))
+ <COND (<AND <EQUAL? ,HERE ,JACK-ROOM>
+ <IN? ,CURTAIN-ROD ,HERE>
+ <FSET? ,CURTAIN-ROD ,NDESCBIT>>
+ <FCLEAR ,CURTAIN-ROD ,NDESCBIT>
+ <FSET ,CURTAIN-ROD ,TAKEBIT>
+ <FSET ,CURTAIN-ROD ,TOUCHBIT>
+ <MOVE ,CURTAIN-ROD ,WINNER>
+ <COND (.SP? <TELL !\ >)>
+ <TELL "By accident," HE ,WINNER pull THE ,CURTAIN-ROD>
+ <THIS-IS-IT ,CURTAIN-ROD>
+ <TELL
+" loose, and it winds up in" HIS ,WINNER " hands, with the curtains
+on the floor.">)>>
+
+;<OBJECT DRAPES
+ (IN JACK-ROOM ;LOCAL-GLOBALS)
+ (DESC "set of drapes")
+ (ADJECTIVE WINDOW)
+ (SYNONYM SET CURTAIN DRAPES DRAPERIES)
+ (FLAGS NDESCBIT)
+ (ACTION DRAPES-F)>
+
+;<ROUTINE DRAPES-F ()
+ <COND (<VERB? OPEN CLOSE MOVE MOVE-DIR PUSH TURN>
+ <COND (<WAR-CLUB-HACK <>>
+ <RTRUE>)
+ (T <WONT-HELP>)>)
+ (<VERB? EXAMINE TAKE>
+ <TELL "The curtains are of heavy damask material.">
+ <WAR-CLUB-HACK>
+ <CRLF>)>>
+
+;<OBJECT STUDY-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "study door")
+ (ADJECTIVE STUDY)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)>
+
+;<OBJECT LIBRARY-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "library door")
+ (ADJECTIVE LIBRARY)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)
+ (GENERIC GENERIC-LIBRARY-DOOR-F)>
+
+;<OBJECT LIBRARY-STOOL
+ (IN LIBRARY)
+ (DESC "stepstool")
+ (ADJECTIVE STEP)
+ (SYNONYM STOOL STEPSTOOL)
+ (FLAGS SURFACEBIT OPENBIT NDESCBIT TAKEBIT)
+ (SIZE 100)
+ (CAPACITY 99)
+ (ACTION LIBRARY-STOOL-F)>
+
+;<ROUTINE LIBRARY-STOOL-F ()
+ <COND (<VERB? SIT CLIMB-ON BOARD>
+ <SETG PLAYER-SEATED ,LIBRARY-STOOL>
+ <TELL "Okay." CR>)>>
+
+;<OBJECT OFFICE-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "office door")
+ (ADJECTIVE OFFICE)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT VOWELBIT SEENBIT)>
+
+;<OBJECT TAMARA-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Tamara's door")
+ (ADJECTIVE TAMARA TAMMY BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-TAMARA-DOOR-F)>
+
+;<ROOM STAIRS-2
+ (IN ROOMS)
+ (FLAGS ;ONBIT SEENBIT)
+ (DESC "second stairway")
+ (ADJECTIVE SECOND)
+ (SYNONYM STAIR STAIRS STAIRWAY)
+ (GENERIC GENERIC-STAIRS-F)
+ (LDESC
+"The stairs curve up to the northwest and down to the southeast."
+;"[UP/E to second floor, DOWN/N to first floor]")
+ (LINE 3)
+ (STATION STAIRS-2)
+ (UP TO CORR-3)
+ (NORTH TO CORR-3)
+ (WEST TO CORR-3)
+ (NW TO CORR-3)
+ (IN TO CORR-3)
+ (DOWN TO CORR-2)
+ (SOUTH TO CORR-2)
+ (EAST TO CORR-2)
+ (SE TO CORR-2)
+ (OUT TO CORR-2)>
+
+;<OBJECT SECRET-LUMBER-DOOR
+ (IN ROOMS ;LOCAL-GLOBALS)
+ (DESC "secret door")
+ (ADJECTIVE SECRET)
+ (SYNONYM DOOR)
+ (FLAGS SECRETBIT DOORBIT)
+ (GENERIC GENERIC-LUMBER-DOOR-F)>
+
+;<OBJECT LUMBER-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "lumber-room door")
+ (ADJECTIVE LUMBER ROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)
+ (GENERIC GENERIC-LUMBER-DOOR-F)>
+
+;<OBJECT CHAPEL-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "chapel door")
+ (ADJECTIVE CHAPEL)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)>
+
+;<OBJECT GAME-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "game-room door")
+ (ADJECTIVE GAME GAME-ROOM ROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)>
+
+;<ROOM STAIRS-3
+ (IN ROOMS)
+ (FLAGS ;ONBIT SEENBIT)
+ (DESC "third stairway")
+ (ADJECTIVE THIRD)
+ (SYNONYM STAIR STAIRS STAIRWAY)
+ (GENERIC GENERIC-STAIRS-F)
+ (LDESC
+"The stairs curve up to the southwest and down to the northeast."
+;"[UP/N to top floor, DOWN/W to second floor]")
+ (LINE 3)
+ (STATION STAIRS-3)
+ (UP TO DECK)
+ (SOUTH TO DECK)
+ (WEST TO DECK)
+ (SW TO DECK)
+ (OUT TO DECK)
+ (DOWN TO CORR-3)
+ (NORTH TO CORR-3)
+ (EAST TO CORR-3)
+ (NE TO CORR-3)
+ (IN TO CORR-3)>
+
+;<ROOM CURTAIN-WALL
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT SURFACEBIT OPENBIT)
+ (DESC "curtain wall")
+ (ADJECTIVE CURTAIN)
+ (SYNONYM WALL)
+ (LDESC "[S to fighting deck]")
+ (GLOBAL MOON OCEAN)
+ (LINE 3)
+ (STATION DECK)
+ (SOUTH TO DECK)
+ (IN TO DECK)
+ (OUT TO DECK)>
+
+;<OBJECT BLAST
+ (IN CAR)
+ (DESC "blast")
+ (ADJECTIVE INT.NUM SHORT LONG)
+ (SYNONYM BLAST BLASTS)
+ (FLAGS NDESCBIT)>
+
+;<OBJECT FOYER-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "foyer door")
+ (ADJECTIVE FOYER DOUBLE BRONZE)
+ (SYNONYM DOOR DOORS)
+ (FLAGS DOORBIT SEENBIT)>
+
+;<OBJECT DRAWING-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "drawing-room door")
+ (ADJECTIVE DRAWING ROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)
+ (GENERIC GENERIC-DRAWING-DOOR)>
+
+;<OBJECT CARTOON
+ (IN DRAWING-ROOM)
+ (DESC "framed cartoon")
+ ;(ADJECTIVE FRAMED DRUNK HUNGOVER)
+ (SYNONYM CARTOON PICTURE RHINO RHINOCEROS)
+ ;(GENERIC GENERIC-PAINTING)
+ (FLAGS NDESCBIT SEENBIT)
+ (ACTION PICTURE-F)>
+
+;<OBJECT FLAGGS
+ (IN GREAT-HALL)
+ (DESC "bunch of flags")
+ (SYNONYM BUNCH FLAGS)
+ (FLAGS CONTBIT OPENBIT NDESCBIT)
+ (CAPACITY 99)
+ (LDESC
+"In the southeast corner of the Great Hall, on a raised dais, is a
+circular metal stand, containing various flags on their standards.")
+ (TEXT
+"The flags include the Union Jack, the flag of the Duchy of Cornwall,
+the regimental colors of the Duke of Cornwall's Light Infantry
+blazoned with the regiment's battle honors, and an embroidered
+yellow household flag.")
+ (ACTION FLAGGS-F)>
+
+;<ROUTINE FLAGGS-F () <FCLEAR ,FLAGGS ,NDESCBIT> <RFALSE>>
+
+;<ROOM STAIRS-NEW
+ (IN ROOMS)
+ (FLAGS ONBIT SEENBIT SURFACEBIT OPENBIT WEARBIT)
+ (DESC "landing")
+ (ADJECTIVE NEW)
+ (SYNONYM LANDING STAIR STAIRS STAIRWAY)
+ (GENERIC GENERIC-LANDING)
+ (LINE 1)
+ (STATION GREAT-HALL)
+ (GLOBAL FIREPLACE WINDOW STAIRS)
+ (UP TO GALLERY)
+ (IN TO GALLERY)
+ (NORTH "Do you want to go up or down?")
+ (DOWN TO GREAT-HALL)
+ (OUT TO GREAT-HALL)
+ (ACTION STAIRS-NEW-F)>
+
+;<ROUTINE STAIRS-NEW-F ("OPTIONAL" (RARG 0))
+ <COND (<EQUAL? .RARG ,M-LOOK>
+ <TELL-LIKE-BROCHURE>)>>
+
+;<OBJECT SITTING-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "sitting-room door")
+ (ADJECTIVE SITTING ROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT SEENBIT)
+ (GENERIC GENERIC-SITTING-DOOR)>
+
+;<ROUTINE WRITING-DESK-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE LOOK-ON SEARCH SEARCH-FOR>
+ <COND (<IN? ,LETTER-MAID ,WRITING-DESK>
+ <FCLEAR ,LETTER-MAID ,NDESCBIT>
+ <FSET ,LETTER-MAID ,TAKEBIT>
+ <RFALSE>)>)>>
+
+;<OBJECT TAPE-LIONEL
+ (IN RECORDER)
+ (DESC "Lionel's tape")
+ (ADJECTIVE LI\'S HIS)
+ (SYNONYM TAPE LIONEL)
+ (FLAGS NARTICLEBIT ;TAKEBIT)
+ (SIZE 2)>
+
+;<OBJECT CONTROL-PANEL
+ (IN KITCHEN)
+ (ADJECTIVE CONTROL)
+ (SYNONYM PANEL BUTTON SWITCH)
+ (DESC "control panel")
+ (FLAGS SEARCHBIT)
+ (TEXT "It has several buttons and a speaker.")
+ (ACTION CONTROL-PANEL-F)>
+
+;<OBJECT GATE-BUTTON
+ (IN CONTROL-PANEL)
+ (DESC "gate button")
+ (ADJECTIVE ;"FRONT TALL WROUGHT SECURITY" GATE)
+ (SYNONYM BUTTON)
+ (ACTION GATE-BUTTON-F)>
+
+;<ROUTINE CONTROL-PANEL-F ;GATE-BUTTON-F ()
+ <COND (<VERB? LAMP-ON MOVE MOVE-DIR PUSH RUB TURN>
+ <TELL "Nothing seems to happen." CR>)>>
+
+;<OBJECT BROKEN-LAMP
+ (ADJECTIVE BROKEN BRASS)
+ (SYNONYM LAMP LANTERN)
+ (DESC "broken lantern")
+ (FLAGS TAKEBIT)>
+
+;<OBJECT NIGHTLAMP-LG
+ (IN LOCAL-GLOBALS ;NIGHTSTAND-LG)
+ (DESC "lamp")
+ (ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S)
+ (SYNONYM LAMP LIGHT LIGHTS)
+ (FLAGS ONBIT LIGHTBIT SEENBIT)>
+
+;<OBJECT YOUR-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "your door")
+ (ADJECTIVE MY ;YOUR BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-YOUR-DOOR)>
+
+;<OBJECT IRIS-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Iris's door")
+ (ADJECTIVE IRIS\'S HER BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-IRIS-DOOR-F)>
+
+;<OBJECT WENDISH-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Wendish's door")
+ (ADJECTIVE DOC\'S HIS ;WENDISH BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-WENDISH-DOOR-F)>
+
+;<OBJECT VIVIEN-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Vivien's door")
+ (ADJECTIVE VIV\'S HER BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-VIVIEN-DOOR)>
+
+;<OBJECT IAN-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Ian's door")
+ (ADJECTIVE IAN\'S HIS BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-IAN-DOOR)>
+
+;<OBJECT HYDE-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "Hyde's door")
+ (ADJECTIVE HYDE\'S HIS BED ROOM BEDROOM)
+ (SYNONYM DOOR)
+ (FLAGS OPENBIT DOORBIT NARTICLEBIT)
+ (GENERIC GENERIC-HYDE-DOOR)>
+
+;<ROUTINE DONT-KNOW (PER OBJ) <TELL "\"Dunno.\"" CR>>
+
+;<ROOM UNCONSCIOUS
+ (IN ROOMS)
+ (DESC "limbo")
+ (FLAGS NARTICLEBIT)>
+
+;<ROUTINE UNCONSCIOUS-FCN ("OPTIONAL" (TIM 0) "AUX" HR NXT ;PS)
+ <COND (<0? .TIM> <SET TIM <+ 9 <RANDOM 6>>>)>
+ ;<SETG MUNGED-PERSON ,PLAYER>
+ <SET HR <FIRST? ,PLAYER>>
+ <REPEAT ()
+ <SET NXT <NEXT? .HR>>
+ <COND (<NOT <FSET? .HR ,WORNBIT>>
+ <MOVE .HR <LOC ,PLAYER>>)
+ (<NOT <EQUAL? .HR ,SLEEP-OUTFIT>>
+ <FSET .HR ,MUNGBIT>)>
+ <COND (<ZERO? .NXT> <RETURN>)
+ (T <SET HR .NXT>)>>
+ <SET HR ,HERE>
+ <MOVE ,PLAYER ,UNCONSCIOUS>
+ <SETG HERE ,UNCONSCIOUS>
+ <TELL "...||">
+ <USL>
+ <QUEUE I-COME-TO .TIM>
+ <V-WAIT .TIM <> T>
+ ;<INT-WAIT .TIM>
+ <QUEUE I-COME-TO 0>
+ <MOVE ,PLAYER .HR>
+ <SETG HERE .HR>
+ <COND (<ZERO? ,PLAYER-SEATED>
+ <SETG PLAYER-SEATED <- 0 ,HERE> ;.PS>)>
+ <RTRUE>>
+
+;<ROUTINE ANYONE-VISIBLE? ("OPTIONAL" (VICTIM <>) "AUX" CNT X (VAL <>))
+ <SET CNT 0>
+ <REPEAT ()
+ <COND (<G? <SET CNT <+ .CNT 1>> ,CHARACTER-MAX>
+ <SET VAL <>>
+ <RETURN>)
+ (<EQUAL? .VICTIM <SET VAL <GET ,CHARACTER-TABLE .CNT>>>
+ <AGAIN>)
+ (<VISIBLE? .VAL>
+ <RETURN>)>>
+ .VAL>
+
+"<CONSTANT PASS1-LINE-C 4>
+<CONSTANT PASS2-LINE-C 5>"
+
+"<GLOBAL PASS1-LINE
+ <PTABLE 0 SECRET-LANDING-JACK P?DOWN
+ P?WEST PASSAGE-1 P?UP
+ P?DOWN SECRET-LANDING-TAM P?NE
+ P?SOUTH DINING-LANDING P?NORTH
+ P?DOWN SECRET-LANDING-LIB 0>>
+
+<GLOBAL PASS2-LINE
+ <PTABLE 0 SECRET-VIVIEN-PASSAGE P?UP
+ P?DOWN GARRET-PASSAGE P?EAST
+ P?WEST GARRET-CORNER P?NORTH
+ P?SOUTH NORTH-CORNER P?DOWN
+ P?UP IRIS-CLOSET P?WEST
+ P?EAST WENDISH-CORNER P?SOUTH
+ P?NORTH DRAWING-CLOSET P?SOUTH
+ P?NORTH GALLERY-CORNER P?WEST
+ P?EAST HYDE-CLOSET 0>>"
+
+;<
+
+ DRAWING-CLOSET DRAWING-ROOM ;"transfers from PASS2-LINE"
+ YOUR-CLOSET YOUR-ROOM
+ SECRET-LANDING-LIB LIBRARY
+ SECRET-VIVIEN-PASSAGE SECRET-LANDING-TAM
+ 0 0>
+
+;<ROUTINE I-PRE-DINNER ("OPTIONAL" (GARG <>) "AUX" N CH RM ;(SAID <>) GT)
+ %<DEBUG-CODE
+ <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[I-PRE-DINNER:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <COND (<EQUAL? ,FOLLOWER ,FRIEND ,LORD>
+ <SETG FOLLOWER 0>)>
+ ;<SET GT <GT-O ,BUTLER>>
+ ;<COND (<NOT <==? <GET .GT ,GOAL-FUNCTION> ,BUTLER-COOKS>>
+ <PUT .GT ,GOAL-FUNCTION ,BUTLER-COOKS>
+ <ESTABLISH-GOAL ,BUTLER ,KITCHEN>)>
+ <SET N ,MASS-COUNTER>
+ <COND (<IGRTR? N ,CHARACTER-MAX>
+ <SETG MASS-SAID <>>
+ <SETG MASS-COUNTER 0>
+ <RFALSE>)
+ ;(<EQUAL? .N ,LOVER-C>
+ <INC N>)>
+ <QUEUE I-PRE-DINNER 1>
+ <SETG MASS-COUNTER .N>
+ <SET CH <GET ,CHARACTER-TABLE .N>>
+ <SET RM <GET ,CHAR-ROOM-TABLE <+ 1 .N>>>
+ <PUT <GET ,GOAL-TABLES .N> ,GOAL-FUNCTION ,X-WASHES>
+ <ESTABLISH-GOAL .CH .RM>
+ <COND (<AND <EQUAL? <META-LOC .CH> ,HERE>
+ <ZERO? ,MASS-SAID>>
+ <SETG MASS-SAID T>
+ <TELL
+D .CH " says, \"It's time to wash up for dinner now.
+I'll see you in the " 'DINING-ROOM ".\"" CR>)>
+ %<DEBUG-CODE
+ <COND (,IDEBUG <TELL N ,MASS-SAID !\] CR>)>>
+ <RETURN ,MASS-SAID>>
+
+;<ROUTINE X-WASHES ("OPTIONAL" (GARG <>))
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[X-WASHES:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <COND (<==? .GARG ,G-REACHED>
+ <PUTP ,GOAL-PERSON ,P?LDESC 8 ;"washing up">
+ <RFALSE>)>>
+
+;<ROUTINE I-WITHDRAW ("OPTIONAL" (GARG <>) "AUX" (N 0) CH (SAID <>))
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[I-WITHDRAW:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <QUEUE I-BEDTIME <- ,BED-TIME ,PRESENT-TIME>>
+ <COND (<EQUAL? ,DINING-ROOM ,HERE>
+ <SET SAID T>
+ <TELL
+D ,LORD " says, \"If you ladies will join Tammy in the " D ,SITTING-ROOM
+", we'll try to puzzle this one out.\"" CR>
+ <COND (<FSET? ,PLAYER ,FEMALE>
+ <TELL
+D ,FRIEND " says, \"Won't you join us, "FN"?\"" CR>)>
+ <ESTABLISH-GOAL ,FRIEND ,SITTING-ROOM>
+ <ESTABLISH-GOAL ,DEB ,SITTING-ROOM>
+ <ESTABLISH-GOAL ,PAINTER ,SITTING-ROOM>)>
+ %<DEBUG-CODE
+ <COND (,IDEBUG <TELL N .SAID !\] CR>)>>
+ <RETURN .SAID>>
+
+;<ROUTINE GHOST-DRESSES ("OPTIONAL" (GARG <>) "AUX" L X GT (VAL <>))
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[GHOST-DRESSES:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <SET L <LOC ,FRIEND>>
+ <COND (<EQUAL? .L ,HERE>
+ <TELL
+"Suddenly" HE ,FRIEND " runs smack into you!|
+\"Oh, do pardon me, "FN", but I just discovered this " D ,PASSAGE ",
+and I couldn't resist exploring a little.\"|">
+ <SET VAL ,M-FATAL>
+ <PUT <GT-O ,FRIEND> ,GOAL-ENABLE 0>)
+ (<==? .GARG ,G-REACHED>
+ <SET VAL <DRESS-GHOST .L ,FRIEND-C>>
+ <ESTABLISH-GOAL ,GHOST-NEW ,YOUR-CLOSET>)>
+ %<DEBUG-CODE <COND (,IDEBUG <TELL N .VAL "]|">)>>
+ <RETURN .VAL>>
+
+;<OBJECT RUBY
+ ;(IN LOCAL-GLOBALS)
+ (DESC "pigeon's-blood ruby")
+ (ADJECTIVE PIGEON BLOOD RED)
+ (SYNONYM RUBY EYE)
+ (FLAGS NDESCBIT SECRETBIT)
+ (SIZE 3)
+ (TEXT
+"a large pigeon's-blood ruby, possibly the most priceless of all gems")
+ (ACTION RUBY-F)>
+
+;<ROUTINE RUBY-F ()
+ <COND (<VERB? EXAMINE>
+ <FCLEAR ,RUBY ,SECRETBIT>
+ <SETG TREASURE-FOUND ,RUBY>
+ <TELL "It's " <GETP ,RUBY ,P?TEXT> "!" CR>)
+ (<AND <VERB? TAKE>
+ <IN? ,RUBY ,RHINO-HEAD>
+ <FSET? ,RUBY ,NDESCBIT>>
+ <FCLEAR ,RUBY ,NDESCBIT>
+ <FCLEAR ,RUBY ,SECRETBIT>
+ <FSET ,RUBY ,TAKEBIT>
+ <SETG TREASURE-FOUND ,RUBY>
+ <MOVE ,RUBY ,PLAYER>
+ <TELL
+"It's stuck pretty tightly in its socket, but eventually you pry it loose.
+Your own eyes pop a bit as you examine your find more closely. It's "
+<GETP ,RUBY ,P?TEXT> "!" CR>)>>
+
+;<OBJECT HEADDRESS
+ ;(IN LOCAL-GLOBALS)
+ (DESC "Egyptian headdress")
+ (ADJECTIVE EGYPTIAN ;HEAD)
+ (SYNONYM HEADDRESS DRESS)
+ (FLAGS WEARBIT VOWELBIT SECRETBIT)
+ (SIZE 9)
+ (TEXT
+"the gold headdress of a Pharaoh's daughter, in the shape of a coiled
+cobra")
+ (ACTION HEADDRESS-F)>
+
+;<ROUTINE HEADDRESS-F ()
+ <COND (<VERB? EXAMINE>
+ <FCLEAR ,HEADDRESS ,SECRETBIT>
+ <SETG TREASURE-FOUND ,HEADDRESS>
+ <TELL "It's obviously " <GETP ,HEADDRESS ,P?TEXT> "!" CR>)>>
+
+;<OBJECT IAN-EVIDENCE
+ (DESC "Ian's note")
+ (ADJECTIVE IAN\'S JACK\'S HIS)
+ (SYNONYM EVIDENCE NOTE)
+ (FLAGS NDESCBIT READBIT NARTICLEBIT SECRETBIT RMUNGBIT ;"= is evidence")
+ (CHARACTER 5) ;"for this char"
+ (TEXT
+"It's a note from Jack to Ian, offering to pay off his gambling IOU if
+he will take Deirdre off Jack's hands."
+;"It clearly shows how Ian wanted to break up Tamara's romance.")
+ (SIZE 2)>
+
+;<OBJECT HYDE-IOU
+ (DESC "museum report")
+ (ADJECTIVE HYDE\'S HIS MUSEUM)
+ (SYNONYM EVIDENCE REPORT)
+ (FLAGS NDESCBIT READBIT SECRETBIT RMUNGBIT ;"= is evidence")
+ (CHARACTER 6) ;"for this char"
+ (TEXT
+"It's a report from the British Museum, saying their tests have proved
+that a valuable painting from the castle is a very recent fake.
+While it was in his shop for cleaning, Hyde sold the original to one
+of his customers.")
+ (SIZE 4)>
+
+;<OBJECT POCKET
+ (IN ;PLAYER GLOBAL-OBJECTS)
+ (DESC "your pocket")
+ (ADJECTIVE MY)
+ (SYNONYM POCKET)
+ (FLAGS CONTBIT OPENBIT NARTICLEBIT NDESCBIT SEARCHBIT)
+ (CAPACITY 5)
+ (ACTION POCKET-F)>
+
+;<ROUTINE POCKET-F ("AUX" X)
+ <COND ;(<DIVESTMENT? ,POCKET>
+ <HAR-HAR>)
+ (<VERB? EXAMINE LOOK-INSIDE LOOK-THROUGH>
+ <TELL "Your pocket ">
+ <COND (<NOT <FIRST? ,POCKET>>
+ <TELL "is empty." CR>)
+ (T
+ <TELL "contains">
+ <PRINT-CONTENTS ,POCKET>
+ <TELL "." CR>
+ ;<SET X <PRINT-CONT ,POCKET ;T>>)>
+ <RTRUE>)
+ (<VERB? EMPTY>
+ <COND (<FIRST? ,POCKET>
+ <TELL "You are now holding">
+ <ROB ,POCKET ,PLAYER T>
+ <CRLF>)>)
+ (<VERB? OPEN CLOSE>
+ <TELL "You don't need to do that." CR>)>>
+
+;<OBJECT CLOTHES
+ (IN GLOBAL-OBJECTS ;ADVENTURER)
+ (DESC "your clothes")
+ (ADJECTIVE ;YOUR MY)
+ (SYNONYM CLOTHES)
+ (FLAGS WORNBIT WEARBIT NARTICLEBIT)
+ ;(ACTION CLOTHES-F)>
+
+;<ROUTINE CLOTHES-F ("AUX" X)
+ <COND (<VERB? EXAMINE>
+ <TELL <GETP ,NOW-WEARING ,P?TEXT> CR>)>>
+
+<ROUTINE COMMON-ASK-ABOUT (PER OBJ)
+ <COND
+ ;(<OR <AND <==? .PER ,LORD> <==? .OBJ ,OFFICER>>
+ <AND <==? .PER ,OFFICER> <==? .OBJ ,LORD>>>
+ <TELL
+"\"We've been mates for years, since serving together in the
+Coldstream Guards.\"" CR>)
+ ;(<EQUAL? .OBJ ,LORD>
+ <TELL "\"A fine young man, and he seems very happy recently.\"" CR>)
+ ;(<EQUAL? .OBJ ,DEB>
+ <DISCRETION .PER .OBJ>
+ <TELL
+"\"She's a kittenish Mayfair deb, who
+comes on as an affectionate girl friend of ">
+ <COND (<==? .PER ,FRIEND> <TELL "mine.\"" CR> <RTRUE>)>
+ <TELL 'FRIEND "'s.">
+ <COND (<==? .PER ,LORD> <TELL "\"" CR> <RTRUE>)>
+ <TELL " But she radiates
+bitchy overtones which suggest that she may have secret designs of her
+own on " 'LORD " Tresyllian, and that she secretly hates " 'FRIEND " for
+beating her time with his lordship.\"" CR>)
+ ;(<EQUAL? .OBJ ,OFFICER>
+ <DISCRETION .PER .OBJ>
+ <TELL
+"\"He's a sporty young London man-about-town and officer in the
+Coldstream Guards. He's a close buddy of " 'LORD "'s, who is himself an
+ex-Guards officer. Belowstairs gossip at the castle hints that Ian was
+madly in love with " 'LOVER ", and that it was a quarrel over him which led
+to her breakup with " 'LORD ".\"" CR>)
+ ;(<EQUAL? .OBJ ,DOCTOR>
+ <TELL
+"\"Nicholas Wendish was, in fact, a classmate of Lionel Tresyllian's at
+Cambridge University, and over the years the two kept in close touch.
+Trained as a medical man and biochemist, " 'DOCTOR " is a leading
+authority on drugs derived from plants and their use in the treatment
+of disease.\"" CR>)
+ ;(<EQUAL? .OBJ ,DEALER>
+ <TELL
+"\"He's a London antique dealer who has come to Cornwall to discuss with ">
+ <COND (<==? .PER ,LORD> <TELL "me">) (T <TELL D ,LORD>)>
+ <TELL
+" the possible sale of Tresyllian family portraits and other objets d'art.\""
+CR>)
+ ;(<EQUAL? .OBJ ,PAINTER>
+ <DISCRETION .PER .OBJ>
+ <TELL
+"\"She's a local painter of vintage beauty and uncertain age,
+who is reputed to have been the mistress of ">
+ <COND (<==? .PER ,LORD> <TELL "my">) (T <TELL "Jack's">)>
+ <TELL " late kinsman Lionel, the previous Lord Tresyllian.\"" CR>)>>
+
+;<GLOBAL EXPLAINED-JEWEL:OBJECT <>>
+
+;<ROUTINE FIND-JEWEL-EXPLAINER ("AUX" O)
+ <SET O <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<NOT .O> <RETURN <>>)
+ (<AND <FSET? .O ,PERSONBIT>
+ <NOT <FSET? .O ,RMUNGBIT>>
+ <NOT <FSET? .O ,MUNGBIT>>
+ <NOT <EQUAL? .O ,PLAYER ,OFFICER>>>
+ <RETURN .O>)
+ (T <SET O <NEXT? .O>>)>>>
+
+;<ROUTINE PRE-APOLOGIZE ("AUX" P)
+ <COND (<NOT <DOBJ? ROOMS>>
+ <RFALSE>)
+ (<QCONTEXT-GOOD?>
+ <PERFORM ,PRSA ,QCONTEXT>
+ <RTRUE>)
+ (<SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,MUNGBIT ,WINNER>>
+ <TELL-I-ASSUME .P " to">
+ <PERFORM ,PRSA .P>
+ <RTRUE>)>>
+
+;<ROUTINE V-HIDE ()
+ <COND ;(<EQUAL? ,HERE ,OFFICE>
+ <TELL "You could hide behind the lounge." CR>)
+ (T <TELL "There's no good hiding place here." CR>)>>
+
+;<ROUTINE V-HIDE-BEHIND ()
+ <COND (<FIND-FLAG-HERE-NOT ,PERSONBIT ,MUNGBIT ,WINNER>
+ <TELL "As you start to hide">
+ <COND (<T? ,PRSI> <HIM-HER-IT ,PRSO>)>
+ <TELL ", you realize that someone may be watching you." CR>)
+ (T
+ <TELL "There's no room to hide">
+ <COND (<T? ,PRSI> <HIM-HER-IT ,PRSO>)>
+ <TELL " behind">
+ <COND (<T? ,PRSI> <HIM-HER-IT ,PRSI>)
+ (T <HIM-HER-IT ,PRSO>)>
+ <TELL "." CR>)>>
+
+;<ROUTINE V-KICK () <HACK-HACK "Kicking">>
+
+;<ROUTINE PRE-SHOOT ("AUX" X)
+ <COND (<ZERO? ,PRSI>
+ <COND (<FSET? ,PRSO ,PERSONBIT>
+ <COND (<SET X <FIND-FLAG ,WINNER ,WEAPONBIT>>
+ <TELL-I-ASSUME .X " with">
+ <PERFORM ,V?SHOOT ,PRSO .X>
+ <RTRUE>)
+ (T
+ <SETG CLOCK-WAIT T>
+ <TELL ,YOU-DIDNT-SAY-W "ith what!]" CR>)>)
+ (T
+ <COND (<SET X <FIND-FLAG-HERE ,PERSONBIT ,WINNER>>
+ <TELL-I-ASSUME .X " at">
+ <PERFORM ,V?SHOOT .X ,PRSO>
+ <RTRUE>)
+ (T
+ <SETG CLOCK-WAIT T>
+ <TELL ,YOU-DIDNT-SAY-W "hom!]" CR>)>)>)>>
diff --git a/m5.chart b/m5.chart
new file mode 100644
index 0000000..4a5511f
--- /dev/null
+++ b/m5.chart
@@ -0,0 +1,455 @@
+-date- -rel- -size- -pre- -obj- -glo- -voc-
+ 6/07 4 51052 11911 39 113 611
+ 6/10 5 49336 12543 39 114 617
+ 6/11 6 49334 12543 39 114 617
+ 6/11 7 49328 12543 39 114 617
+ 6/11 8 49338 12546 39 114 617
+ 6/12 9 49482 12546 39 114 617
+ 6/12 10 49482 12546 39 114 617
+ 6/12 11 49490 12546 39 114 617
+ 6/12 12 49492 12546 39 114 617
+ 6/12 13 50296 12756 42 115 630
+ 6/12 14 50296 12756 42 115 630
+ 6/14 15 50320 12756 42 115 630
+ 6/24 16 51950 13445 50 115 666
+ 7/01 17 51900 13435 50 114 666
+ 7/02 18 51950 13446 51 114 666
+ 7/02 19 51822 13446 51 114 666
+ 7/26 20 52074 13556 51 116 664
+ 8/29 21 53858 14758 78 116 691
+ 9/03 22 55452 15834 102 116 704
+ 9/03 23 55468 15876 103 116 705
+ 9/04 23 55498 15876 103 116 705
+ 9/04 23 55504 15876 103 116 705
+ 9/10 24 54940 15814 103 113 703
+ 9/13 25 57082 17263 138 113 709
+ 9/16 26 57412 17545 137 113 709
+ 9/16 27 57412 17545 137 113 709
+ 9/17 28 57804 17721 138 113 712
+ 9/17 29 59476 18228 149 113 738
+ 9/17 -1 59574 18234 149 116 738
+ 9/18 2 59184 18375 149 118 737
+ 9/18 3 59182 18375 149 118 737
+ 9/18 4 62304 18375 149 118 737
+ 9/19 5 61812 18371 149 116 737
+ 9/20 6 62002 18641 149 116 738
+ 9/20 6 61850 18619 149 116 738
+ 9/20 7 62002 18641 149 116 738
+ 9/23 7 62074 18692 149 117 738
+ 9/23 8 62112 18695 149 117 738
+ 9/24 9 62980 18819 151 117 744
+ 9/25 10 62988 18822 151 117 744
+ 9/25 11 64686 19463 165 118 766
+ 9/30 12 65926 19583 168 119 771
+10/01 13 67020 20167 180 119 801
+10/02 14 67272 20158 179 119 801
+10/03 15 67988 20234 181 119 805
+10/03 16 68032 20234 181 119 805
+10/03 17 68032 20234 181 119 805
+10/03 17 68032 20234 181 119 805
+10/03 18 68520 20363 183 121 812
+10/04 19 68520 20363 183 121 812
+10/04 20 68506 20331 182 121 811
+10/04 21 68522 20331 182 121 811
+10/04 22 68630 20357 182 122 811
+10/07 23 69342 20373 182 124 811
+10/09 24 69460 20395 184 124 811
+10/09 25 69930 20511 187 126 814
+10/09 26 70422 20534 185 127 820
+10/10 27 70748 20498 185 127 819
+10/10 28 70748 20497 185 127 819
+10/10 29 70742 20497 185 127 819
+10/14 30 70776 20497 185 127 819
+10/17 31 74274 20718 189 130 827
+10/17 -1 74274 20718 189 130 827
+10/17 32 74274 20718 189 130 827
+10/17 33 74494 20883 189 132 823
+10/17 34 74494 20856 188 131 822
+10/18 35 74924 20937 189 131 826
+10/18 36 74922 20937 189 131 826
+10/18 37 75914 21285 200 131 832
+10/21 38 75944 21285 200 131 832
+10/21 39 76000 21285 200 131 832
+10/21 40 76440 21422 201 134 840
+10/22 41 77906 22054 214 136 867
+10/22 42 77904 22054 214 136 867
+10/22 43 79042 22054 214 136 867
+10/23 44 79414 22246 215 138 869
+10/23 45 81376 22246 215 138 869
+10/23 46 81342 22255 215 138 869
+10/23 0 81342 22255 215 138 869
+10/23 47 81326 22255 215 138 869
+10/23 48 81228 22255 215 138 869
+10/24 49 81240 22255 215 138 869
+10/24 50 81240 22255 215 138 869
+10/24 50 81438 22269 215 138 869
+10/24 51 81568 22304 215 138 869
+10/28 52 81554 22304 215 138 869
+10/28 53 81544 22304 215 138 869
+10/28 54 81834 22438 218 138 872
+10/29 55 81522 22468 218 137 873
+10/29 56 81532 22468 218 137 873
+10/29 57 81596 22468 218 137 873
+10/30 58 81494 22486 218 137 874
+10/31 59 81394 22498 218 137 874
+10/31 60 81446 22441 218 135 875
+10/31 61 81440 22441 218 135 875
+10/31 62 81440 22441 218 135 875
+10/31 63 81402 22401 218 134 875
+11/01 64 87920 22753 224 134 893
+11/04 65 88014 22758 224 135 893
+11/05 66 88120 22758 224 135 893
+11/05 67 87912 0 224 135 893
+11/05 68 87826 22732 224 136 893
+11/05 69 87826 22732 224 136 893
+11/06 70 87104 22797 225 136 897
+11/06 71 87108 22797 225 136 897
+11/06 72 87112 22797 225 136 897
+11/06 73 90074 23068 232 137 910
+11/06 74 90652 23123 232 137 914
+11/07 75 90638 23116 232 137 913
+11/07 76 90638 23116 232 137 913
+11/07 77 90638 23116 232 137 913
+...
+11/08 84 91902 23318 233 137 924
+11/08 85 91902 23318 233 137 924
+11/08 86 92556 23236 233 139 914
+11/11 87 91932 23306 233 139 924
+11/11 88 91932 23306 233 139 924
+11/11 89 92032 23306 233 139 924
+11/11 90 92032 23306 233 139 924
+11/11 91 92236 23340 233 139 924
+11/12 92 92236 23340 233 139 924
+11/12 93 92190 23345 233 140 925
+11/12 94 92176 23345 233 140 925
+11/13 95 92142 23347 233 141 925
+11/13 96 92140 23347 233 141 925
+11/13 97 92054 23366 233 142 925
+11/13 98 92676 23373 233 144 925
+11/14 99 91634 23135 233 144 925
+11/14 100 92826 23556 243 144 943
+11/15 101 92826 23556 243 144 943
+11/15 102 93186 23601 243 146 945
+11/15 103 93122 23550 243 144 943
+11/15 103 93182 23601 243 146 945
+11/15 104 93430 23610 243 146 945
+11/19 105 95464 23723 245 146 952
+11/20 106 95468 23723 245 146 952
+11/20 107 98378 23837 247 146 957
+11/21 108 98728 24036 251 146 965
+11/22 109 99356 24155 253 146 970
+11/22 110 99190 24146 253 145 969
+11/25 111 96860 23160 251 142 872
+11/25 112 96382 22866 251 142 847
+11/26 113 96872 22868 251 143 847
+11/29 114 97082 22885 251 143 849
+12/02 115 97056 22885 251 143 849
+12/02 116 97332 22981 253 145 854
+12/03 117 97376 22994 253 145 855
+12/03 118 97374 22994 253 145 855
+12/03 119 97398 23016 253 145 855
+12/04 120 100438 23116 255 145 857
+12/04 121 104542 23183 256 145 860
+12/06 122 104166 22743 238 145 860
+12/06 123 104130 22743 238 145 860
+12/06 124 104086 22743 238 145 860
+12/07 125 104084 22743 238 145 860
+12/07 126 105980 22866 240 145 868
+12/11 127 107528 23003 244 145 870
+12/11 128 107484 23003 244 145 870
+12/11 129 107484 23003 244 145 870
+12/11 130 107496 23007 244 145 870
+12/12 131 108562 23183 247 147 877
+12/12 132 108502 23183 247 147 877
+12/13 133 108534 23150 246 147 877
+12/13 134 111280 23317 248 149 886
+12/17 135 112264 23325 248 149 887
+12/17 136 112264 23324 248 149 887
+12/17 137 112264 23324 248 149 887
+12/18 138 112508 23301 246 150 889
+12/18 139 112942 23365 247 153 889
+12/19 140 112972 23383 247 154 890
+12/20 141 112972 23383 247 154 890
+12/20 142 112924 23383 247 154 890
+12/20 143 112928 23383 247 154 890
+ 1/02 144 113658 23393 247 155 890
+ 1/03 145 113026 23400 247 155 890
+ 1/03 146 113112 23405 247 155 891
+ 1/03 147 113112 23405 247 155 891
+ 1/06 148 113464 23397 247 154 890
+ 1/07 149 114084 23380 246 154 888
+ 1/08 150 114298 23469 247 155 892
+ 1/09 151 115208 23478 247 157 892
+ 1/10 151 115202 23478 247 157 892
+ 1/10 152 115324 23447 246 157 891
+ 1/13 153 116086 23517 246 158 897
+ 1/13 153 116086 23517 246 158 897
+ 1/15 154 116468 23593 246 158 904
+ 1/15 155 116558 23559 244 159 903
+ 1/16 156 116862 23647 244 159 903
+ 1/16 156 116838 23647 244 159 903
+ 1/17 157 115978 23749 245 160 906
+ 1/20 157 115910 23749 245 160 906
+ 1/20 157 115998 23698 245 160 902
+ 1/20 157 115994 23698 245 160 902
+ 1/21 157 116004 23698 245 160 902
+ 1/21 157 116018 23698 245 160 902
+ 1/21 157 116030 23698 245 160 902
+ 1/21 157 116034 23698 245 160 902
+ 1/21 157 116048 23698 245 160 902
+ 1/21 158 116058 23698 245 160 902
+ 1/22 159 117290 23641 243 160 903
+ 1/23 160 117736 23648 243 161 903
+ 1/23 9 117722 23648 243 161 903
+ 1/23 9 117748 23648 243 161 903
+ 1/23 9 117750 23648 243 161 903
+ 1/23 10 117870 23661 243 162 903
+ 1/24 11 118290 23727 243 161 906
+ 1/24 11 118282 23720 243 161 905
+ 1/30 0 118302 23720 243 161 905
+ 1/30 12 118438 23691 244 161 909
+ 1/30 13 119104 23708 244 161 912
+ 1/30 12 119104 23708 244 161 912
+ 1/30 12 119110 23708 244 161 912
+ 1/31 13 119920 23739 244 161 915
+ 2/03 14 119608 23770 245 162 912
+ 2/04 15 119868 23741 245 163 912
+ 2/04 15 119864 23741 245 163 912
+ 2/04 16 119882 23748 245 163 913
+ 2/04 0 119744 23800 245 163 913
+ 2/04 17 120064 23870 245 164 917
+ 2/05 18 120284 23891 241 166 931
+ 2/06 18 120290 23891 241 166 931
+ 2/06 19 120176 23860 240 164 935
+ 2/07 19 120176 23860 240 164 935
+ 2/07 20 120016 23853 242 164 930
+ 2/07 20 120008 23853 242 164 930
+ 2/10 21 120332 23917 242 165 936
+ 2/10 21 120320 23917 242 165 936
+ 2/11 22 120746 24030 243 166 947
+ 2/11 22 120746 24030 243 166 947
+ 2/12 23 120554 24009 243 167 944
+ 2/13 23 120554 24009 243 167 944
+ 2/13 24 121344 24088 245 169 940
+ 2/14 24 121342 24088 245 169 940
+ 2/14 0 121386 24088 245 169 940
+ 2/14 0 121380 24088 245 169 940
+ 2/14 0 121496 24088 245 169 940
+ 2/14 0 121490 24088 245 169 940
+ 2/14 0 121494 24088 245 169 940
+ 2/14 0 121494 24088 245 169 940
+ 2/14 25 121582 24113 244 170 945
+ 2/17 26 121754 24142 244 170 945
+ 2/17 26 121626 24142 244 170 945
+ 2/18 27 121638 24145 244 169 945
+ 2/19 28 121766 24180 243 169 948
+ 2/20 29 121728 24241 244 170 949
+ 2/21 30 121914 24298 244 170 950
+ 2/23 31 121924 24298 244 170 950
+ 2/24 1 121924 24298 244 170 950
+ 2/24 32 121468 24268 243 170 954
+ 2/25 33 121562 24287 243 170 954
+ 2/26 34 121436 24221 242 171 953
+ 2/27 34 121442 24221 242 171 953
+ 2/27 35 121770 24237 242 171 954
+ 3/02 36 121646 24012 242 171 953
+ 3/04 36 119858 23830 241 176 948
+ 3/05 36 119772 23830 241 176 948
+ 3/05 37 119740 23713 238 179 955
+ 3/06 38 119870 23729 240 178 954
+ 3/07 38 119868 23729 240 178 954
+ 3/07 39 119908 23715 240 178 952
+ 3/10 40 120506 23821 241 178 957
+ 3/11 41 120756 23858 241 178 960
+ 3/12 42 120854 23886 241 178 963
+ 3/13 43 122384 24001 243 179 970
+ 3/14 43 122382 24001 243 179 970
+ 3/14 -1 122422 24001 243 179 970
+ 3/17 2 122526 24001 243 179 970
+ 3/17 3 123346 24112 246 179 975
+ 3/18 4 123278 23988 246 179 965
+ 3/19 5 124852 24196 246 182 968
+ 3/20 5 124848 24196 246 182 968
+ 3/20 6 126202 24283 247 183 971
+ 3/21 7 126644 24354 247 183 978
+ 3/25 8 127158 24439 247 184 979
+ 3/25 8 127164 24442 247 184 979
+ 3/26 9 127166 24274 242 185 972
+ 3/27 9 127166 24274 242 185 972
+ 3/27 10 126636 24297 243 185 971
+ 3/28 10 126866 24288 243 185 970
+ 3/29 11 127072 24295 243 185 971
+ 4/01 12 127300 24398 244 186 976
+ 4/02 13 127708 24450 245 186 979
+ 4/02 14 127994 24450 246 187 978
+ 4/04 15 127558 24276 246 187 972
+ 4/04 15 127558 24276 246 187 972
+ 4/04 15 127560 24276 246 187 972
+ 4/09 16 127438 24312 246 187 974
+ 4/15 17 128204 24148 244 189 970
+ 4/16 17 128196 24155 244 189 971
+ 4/16 17 128552 24176 245 190 970
+ 4/16 18 128656 24180 245 192 970
+ 4/17 18 128658 24180 245 192 970
+ 4/18 19 128668 24142 245 192 970
+ 4/18 20 128154 24082 245 189 964
+ 4/23 21 128218 24081 245 189 964
+ 4/24 22 128324 24128 246 191 965
+ 4/25 23 128724 24177 247 192 967
+ 4/25 23 128532 24030 247 192 946
+ 4/28 24 128356 24020 247 193 948
+ 4/29 24 128494 24167 247 193 969
+ 4/29 24 128548 24180 248 194 965
+ 4/29 24 128542 24180 248 194 965
+ 4/29 24 128542 24180 248 194 965
+ 4/30 25 128628 24182 248 195 965
+ 5/01 25 128628 24182 248 195 965
+ 5/01 25 128632 24182 248 195 965
+ 5/02 26 128714 24209 248 199 965
+ 5/06 27 128964 24209 248 199 965
+ 5/08 28 128980 24207 248 198 965
+ 5/14 29 129424 24229 248 198 968
+ 5/14 29 129130 24301 248 198 968
+ 5/14 30 128780 24267 247 199 967
+ 5/19 31 128644 24267 247 199 967
+ 5/20 31 128612 24267 247 199 967
+ 5/20 31 128616 24267 247 199 967
+ 5/20 31 128620 24267 247 199 967
+ 5/20 31 128288 24267 247 199 967
+ 5/21 32 128766 24307 248 200 969
+ 5/26 33 129080 24377 249 201 970
+ 5/26 33 129076 24377 249 201 970
+ 5/27 34 128896 24494 253 199 977
+ 5/28 35 129052 24533 253 199 981
+ 5/29 35 129048 24531 253 199 981
+ 5/29 35 129062 24531 253 199 981
+ 5/29 35 129062 24531 253 199 981
+ 6/06 36 129370 24563 253 198 985
+ 6/06 36 129550 24585 253 198 985
+ 6/06 37 129598 24593 253 198 985
+ 6/09 37 129598 24593 253 198 985
+ 6/09 38 129680 24688 254 198 992
+ 6/10 39 126516 24504 254 198 984
+ 6/10 39 126570 24504 254 198 984
+ 6/10 40 126806 24531 254 198 986
+ 6/10 40 126800 24531 254 198 986
+ 6/11 40 126800 24531 254 198 986
+ 6/12 40 126800 24531 254 198 986
+ 6/12 40 126800 24531 254 198 986
+ 6/12 40 126800 24531 254 198 986
+ 6/16 40 126800 24531 254 198 986
+ 6/16 41 130134 24735 254 202 994
+ 6/16 41 130124 24735 254 202 994
+ 6/18 42 130410 24744 254 204 997
+ 6/18 42 130378 24744 254 204 997
+ 6/27 43 130818 24989 255 206 1001
+ 6/30 44 52768 24989 255 206 1001
+ 7/01 44 131408 25019 255 209 1004
+ 7/01 44 131262 24987 255 210 1004
+ 7/01 44 131176 24987 255 210 1004
+ 7/01 44 131108 24987 255 210 1004
+ 7/01 44 131070 24987 255 210 1004
+ 7/02 45 130964 24965 255 211 1004
+ 7/03 45 130966 24965 255 211 1004
+ 7/03 45 130966 24965 255 211 1004
+ 7/03 0 130966 24965 255 211 1004
+ 7/03 1 130972 24965 255 211 1004
+ 7/08 46 131184 24946 254 212 1005
+ 7/08 46 131104 24946 254 212 1005
+ 7/08 46 131048 24946 254 212 1005
+ 7/09 0 131028 24946 254 212 1005
+ 7/09 2 131050 24946 254 212 1005
+ 7/09 3 131050 24946 254 212 1005
+ 7/09 47 131996 24936 254 215 1004
+ 7/10 47 131614 24940 254 217 1004
+ 7/10 47 130876 24944 254 219 1004
+ 7/10 47 130876 24944 254 219 1004
+ 7/11 47 130890 24944 254 219 1004
+ 7/14 48 131370 25022 254 219 1013
+ 7/14 48 131144 25022 254 219 1013
+ 7/14 48 131116 25022 254 219 1013
+ 7/14 48 131066 25022 254 219 1013
+ 7/16 49 131108 24933 253 219 1009
+ 7/16 49 130944 24933 253 219 1009
+ 7/16 49 130944 24933 253 219 1009
+ 7/16 50 131110 24937 253 221 1009
+ 7/16 50 130940 24937 253 221 1009
+ 7/17 50 130938 24937 253 221 1009
+ 7/17 50 130940 24937 253 221 1009
+ 7/17 50 130936 24937 253 221 1009
+ 7/17 50 130940 24937 253 221 1009
+ 7/17 51 130934 24935 253 222 1010
+ 7/18 52 131028 24966 253 222 1010
+ 7/18 52 131042 24966 253 222 1010
+ 7/26 53 131220 24980 253 223 1010
+ 7/26 53 128596 24796 253 223 1002
+ 7/29 54 131284 24974 253 222 1009
+ 7/30 54 128662 24790 253 222 1001
+ 7/30 1 128672 24790 253 222 1001
+ 7/31 2 128680 24790 253 222 1001
+ 7/31 55 128542 24798 253 222 1001
+ 8/01 56 128498 24760 253 221 998
+ 8/04 57 128524 24781 254 221 998
+ 8/06 1 128530 24781 254 221 998
+ 8/06 2 128530 24781 254 221 998
+ 8/06 58 129092 24806 254 223 998
+ 8/11 59 129136 24770 254 222 997
+ 8/11 59 128992 24770 254 222 997
+ 8/13 60 128844 24795 254 218 998
+ 8/15 61 128824 24700 253 219 991
+ 8/18 62 129190 24736 254 221 991
+ 8/19 -1 128966 24727 254 221 991
+ 8/19 63 128966 24727 254 221 991
+ 8/19 64 129074 24735 254 221 991
+ 8/19 64 129016 24713 254 221 991
+ 8/20 65 128986 24669 253 221 992
+ 8/21 65 128986 24669 253 221 992
+ 8/21 65 128986 24669 253 221 992
+ 8/21 65 128986 24669 253 221 992
+ 8/23 66 128984 24652 253 222 991
+ 8/24 66 128964 24652 253 222 991
+ 8/24 66 128954 24652 253 222 991
+ 8/24 66 128954 24652 253 222 991
+ 8/25 67 128872 24655 253 222 991
+ 8/26 67 128872 24655 253 222 991
+ 8/26 67 128872 24655 253 222 991
+ 8/27 68 129096 24673 253 223 992
+ 8/28 68 129078 24673 253 223 992
+ 8/28 68 129040 24673 253 223 992
+ 8/28 68 129020 24673 253 223 992
+ 9/03 69 129300 24690 253 224 992
+ 9/03 69 129094 24697 253 225 992
+ 9/03 69 129096 24697 253 225 992
+ 9/03 69 129022 24697 253 225 992
+ 9/05 70 129062 24712 253 228 990
+ 9/05 70 129018 24712 253 228 990
+ 9/11 71 129128 24690 253 230 986
+ 9/11 71 129034 24690 253 230 986
+ 9/11 71 129022 24690 253 230 986
+ 9/12 71 129022 24690 253 230 986
+ 9/15 72 129134 24705 253 229 985
+ 9/15 72 128812 24495 253 229 955
+ 9/16 73 128892 24480 253 229 954
+ 9/16 3 128886 24480 253 229 954
+ 9/18 4 129020 24528 253 230 955
+ 9/18 4 129002 24528 253 230 955
+ 9/22 5 128768 24294 253 230 955
+ 9/22 6 27027 24528 253 230 955
+ 9/22 5 128690 24216 253 230 955
+ 9/22 5 128690 24216 253 230 955
+ 9/23 6 128682 24216 253 230 955
+ 9/23 6 128674 24207 253 230 955
+ 9/24 7 128896 24439 253 230 955
+10/21 8 128916 24439 253 230 955
+10/21 9 128866 24439 253 230 955
+10/22 -1 128866 24439 253 230 955
+10/22 9 128866 24439 253 230 955
+10/31 10 128872 24439 253 230 955
+12/02 10 128796 24477 254 230 955
+12/03 11 128830 24478 254 230 955
+12/05 10 128832 24470 254 230 955
+ 2/26 11 128832 24472 254 230 955
+ 8/28 12 128822 24470 254 230 955
+ 8/28 12 128822 24470 254 230 955
+ 8/28 12 128826 24470 254 230 955
+ 5/01 13 128828 24470 254 230 955
diff --git a/m5.errors b/m5.errors
index 493b0cd..918922c 100644
--- a/m5.errors
+++ b/m5.errors
@@ -1,28 +1,27 @@
-Assembling M5.XZAP.1 on Wednesday, October 22, 1986 09:45:48
-Release: 9
+Assembling M5.ZAP.13 on Sunday, May 1, 1988 13:55:06
+Release: 13
64 Inserting M5FREQ.XZAP.1 (594 bytes)
- 658 Inserting M5DAT.ZAP.9 (25035 bytes)
- 25693 Inserting MACROS.ZAP.4 (0 bytes)
- 25693 Inserting MISC.ZAP.4 (1236 bytes)
- 26929 Inserting SYNTAX.ZAP.4 (0 bytes)
- 26929 Inserting PARSER.ZAP.4 (13085 bytes)
- 40014 Inserting VERBS.ZAP.5 (21161 bytes)
- 61175 Inserting GOAL.ZAP.1 (11194 bytes)
- 72369 Inserting PEOPLE.ZAP.1 (23137 bytes)
- 95506 Inserting CASTLE.ZAP.1 (10616 bytes)
-106122 Inserting TOWER.ZAP.1 (8181 bytes)
-114303 Inserting THINGS.ZAP.1 (2553 bytes)
-116856 Inserting PLACES.ZAP.1 (848 bytes)
-117704 Inserting GLOBAL.ZAP.1 (3165 bytes)
-120869 Inserting COLORS.ZAP.1 (4243 bytes)
-125112 Inserting M5STR.ZAP.9 (3754 bytes)
-253 objects.
+ 658 Inserting M5DAT.ZAP.13 (23812 bytes)
+ 24470 Inserting M5PUR.ZAP.13 (1254 bytes)
+ 25724 Inserting MISC.ZAP.9 (1226 bytes)
+ 26950 Inserting PARSER.ZAP.12 (13044 bytes)
+ 39994 Inserting VERBS.ZAP.10 (21117 bytes)
+ 61111 Inserting GOAL.ZAP.7 (11204 bytes)
+ 72315 Inserting PEOPLE.ZAP.6 (23145 bytes)
+ 95460 Inserting CASTLE.ZAP.6 (10608 bytes)
+106068 Inserting TOWER.ZAP.7 (8177 bytes)
+114245 Inserting THINGS.ZAP.6 (2553 bytes)
+116798 Inserting PLACES.ZAP.6 (846 bytes)
+117644 Inserting GLOBAL.ZAP.7 (3193 bytes)
+120837 Inserting COLORS.ZAP.6 (4237 bytes)
+125074 Inserting M5STR.ZAP.13 (3754 bytes)
+254 objects.
230 globals.
955 word vocabulary.
-128866 bytes (126K).
- 24439 bytes of preload.
- 13860 bytes of impure.
+128828 bytes (126K).
+ 24470 bytes of preload.
+ 13899 bytes of impure.
Outputting symbol tables
diff --git a/m5.record b/m5.record
index 2e7c312..4c318c2 100644
--- a/m5.record
+++ b/m5.record
@@ -1,29 +1,18 @@
Combined ZIL Compiler Ver 2.0 (MIM)
-----------------------------------
-Input file: SS:<MOONMIST>M5.ZIL.1
-Input file: SS:<MOONMIST>MACROS.ZIL.56
-Input file: SS:<MOONMIST>MISC.ZIL.24
-Compiling routine: GO
-Compiling routine: PRINTT
-Compiling routine: THE?
-Compiling routine: START-SENTENCE
-Compiling routine: PRINTA
-Compiling routine: THIS-IS-IT
-Compiling routine: NO-PRONOUN?
-Compiling routine: HE-SHE-IT
-Compiling routine: HIM-HER-IT
-Compiling routine: QUEUE
-Compiling routine: INT
-Compiling routine: QUEUED?
-Compiling routine: CLOCKER
-Compiling routine: I-FOLLOW
-Compiling routine: I-ATTENTION
-Input file: SS:<MOONMIST>SYNTAX.ZIL.224
-Input file: SS:<MOONMIST>PARSER.ZIL.460
- ** Note: Unknown value - PLAYER
- ** Note: Unknown value - FRIEND
- ** Note: Unknown value - LORD
+Input file: SS:<MOONMIST>M5.ZIL.4
+[ZIP instructions]
+
+Loading SS:<MOONMIST>MACROS.ZIL.56 because not abstracted.
+Loading abstract SS:<MOONMIST>MISC.ZABSTR.1.
+Loading SS:<MOONMIST>SYNTAX.ZIL.225 because not abstracted.
+ ** Warning: Two different pre-actions for verb V?COMPARE: PRE-COMPARE; 0
+
+ ** Warning: Two different pre-actions for verb V?COMPARE: PRE-COMPARE; 0
+
+ ** Warning: Two different pre-actions for verb V?EXAMINE: PRE-EXAMINE; 0
+Loading SS:<MOONMIST>PARSER.ZIL.470 and compiling it.
Compiling routine: MAIN-LOOP
Compiling routine: MAIN-LOOP-1
Compiling routine: TELL-I-ASSUME
@@ -83,6 +72,7 @@ Compiling routine: CAPITAL-NOUN?
Compiling routine: CAPITALIZE
Compiling routine: PREP-PRINT
Compiling routine: CLAUSE-COPY
+Compiling routine: CLAUSE-SUBSTRUC
Compiling routine: CLAUSE-ADD
Compiling routine: PREP-FIND
Compiling routine: SYNTAX-FOUND
@@ -126,530 +116,17 @@ Compiling routine: ITAKE-CHECK
Compiling routine: MANY-CHECK
Compiling routine: ZMEMQ
Compiling routine: ZMEMQB
- ** Note: Unknown value - DRIVEWAY
Compiling routine: LIT?
Compiling routine: NOT-HERE
Compiling routine: PUT-ADJ-NAM
Compiling routine: NOUN-USED?
Compiling routine: ADJ-USED?
-Input file: SS:<MOONMIST>VERBS.ZIL.827
-Compiling routine: TRANSCRIPT
-Compiling routine: V-SCRIPT
-Compiling routine: V-UNSCRIPT
-Compiling routine: V-$VERIFY
-Compiling routine: YOU-WILL-GET
-Compiling routine: V-SUPER-BRIEF
-Compiling routine: V-BRIEF
-Compiling routine: V-VERBOSE
-Compiling routine: V-INVENTORY
-Compiling routine: V-QUIT
-Compiling routine: V-RESTART
-Compiling routine: TELL-FAILED
-Compiling routine: V-SAVE
-Compiling routine: V-RESTORE
-Compiling routine: V-FIRST-LOOK
-Compiling routine: V-VERSION
-Compiling routine: V-SCORE
-Compiling routine: YES?
-Compiling routine: NO-NEED
-Compiling routine: YOU-CANT
-Compiling routine: YOU-SHOULDNT
-Compiling routine: TELL-BEING-WORN
-Compiling routine: PRINT-CONTENTS
-Compiling routine: DESCRIBE-OBJECTS
-Compiling routine: SEE-ANYTHING-IN?
-Compiling routine: DESCRIBE-ROOM
-Compiling routine: HAR-HAR
-Compiling routine: PICK-ONE-NEW
-Compiling routine: PICK-ONE
-Compiling routine: NOT-HOLDING?
-Compiling routine: NEW-FOLLOWER
-Compiling routine: FRIEND-FOLLOWS-YOU
-Compiling routine: NOT-INTO-PASSAGE
-Compiling routine: TOUR?
-Compiling routine: CREEPY?
-Compiling routine: GOTO
-Compiling routine: HACK-HACK
-Compiling routine: HELD?
-Compiling routine: IDROP
-Compiling routine: ITAKE
-Compiling routine: CCOUNT
-Compiling routine: CHECK-DOOR
-Compiling routine: ROOM-CHECK
-Compiling routine: SEE-INSIDE?
-Compiling routine: ARENT-TALKING
-Compiling routine: ALREADY
-Compiling routine: NOT-CLEAR-WHOM
-Compiling routine: OKAY
-Compiling routine: TOO-BAD-BUT
-Compiling routine: TOO-DARK
-Compiling routine: VISIBLE?
-Compiling routine: ACCESSIBLE?
-Compiling routine: META-LOC
-Compiling routine: WHO-CARES
-Compiling routine: PRE-SAIM
-Compiling routine: V-SAIM
-Compiling routine: V-AIM
-Compiling routine: PRE-SANALYZE
-Compiling routine: V-SANALYZE
-Compiling routine: PRE-ANALYZE
-Compiling routine: V-ANALYZE
-Compiling routine: V-ANSWER
-Compiling routine: V-REPLY
-Compiling routine: WAITING-FOR-YOU-TO-SPEAK
-Compiling routine: PRE-ARREST
-Compiling routine: TELL-BAD-FORM
-Compiling routine: V-ARREST
-Compiling routine: CONFESSION
-Compiling routine: WRAP-UP
-Compiling routine: V-ASK
-Compiling routine: PRE-ASK-ABOUT
-Compiling routine: V-ASK-ABOUT
-Compiling routine: WONT-HELP-TO-TALK-TO
-Compiling routine: PRE-ASK-CONTEXT-ABOUT
-Compiling routine: V-ASK-CONTEXT-ABOUT
-Compiling routine: V-ASK-FOR
-Compiling routine: PRE-ASK-CONTEXT-FOR
-Compiling routine: V-ASK-CONTEXT-FOR
-Compiling routine: V-ATTACK
-Compiling routine: V-BOW
-Compiling routine: PRE-BRUSH
-Compiling routine: V-BRUSH
-Compiling routine: UNCLEAN
-Compiling routine: REMOVE-CAREFULLY
-Compiling routine: V-$CALL
-Compiling routine: V-CHASTISE
-Compiling routine: V-BOARD
-Compiling routine: V-CLIMB-ON
-Compiling routine: V-CLIMB-UP
-Compiling routine: V-CLIMB-DOWN
-Compiling routine: V-CLOSE
-Compiling routine: PRE-COMPARE
-Compiling routine: V-COMPARE
-Compiling routine: V-CONFRONT
-Compiling routine: V-MUNG
-Compiling routine: V-DANCE
-Compiling routine: PRE-DESCRIBE
-Compiling routine: V-DESCRIBE
-Compiling routine: V-UNDRESS
-Compiling routine: V-DRESS
-Compiling routine: FIND-OUTFIT
-Compiling routine: FIND-OUTFIT-IN
-Compiling routine: V-CHANGE
-Compiling routine: PRE-DRIVE-TO
-Compiling routine: TELL-NOT-IN
-Compiling routine: V-DRIVE-TO
-Compiling routine: V-DRINK
-Compiling routine: V-DROP
-Compiling routine: GROUND-DESC
-Compiling routine: PRE-EAT
-Compiling routine: V-EAT
-Compiling routine: PRE-EMPTY
-Compiling routine: V-EMPTY
-Compiling routine: PRE-THROUGH
-Compiling routine: V-THROUGH
-Compiling routine: PRE-EXAMINE
-Compiling routine: V-EXAMINE
-Compiling routine: NOTHING-SPECIAL
-Compiling routine: GLOBAL-IN?
-Compiling routine: V-FAINT
-Compiling routine: V-FILL
-Compiling routine: PRE-FIND
-Compiling routine: BITE-YOU
-Compiling routine: FAR-AWAY?
-Compiling routine: V-FIND
-Compiling routine: NO-FUN
-Compiling routine: TELL-LOCATION
-Compiling routine: V-FIX
-Compiling routine: FOLLOW-LOC?
-Compiling routine: V-FOLLOW
-Compiling routine: V-FOO
-Compiling routine: V-FORGIVE
-Compiling routine: PRE-GIVE
-Compiling routine: V-GIVE
-Compiling routine: PRE-SGIVE
-Compiling routine: V-SGIVE
-Compiling routine: PRE-HELLO
-Compiling routine: V-HELLO
-Compiling routine: V-HELP
-Compiling routine: HELP-TEXT
-Compiling routine: V-KILL
-Compiling routine: IKILL
-Compiling routine: V-KISS
-Compiling routine: V-KNOCK
-Compiling routine: V-STAND
-Compiling routine: V-LEAP
-Compiling routine: V-SKIP
-Compiling routine: WHEE
-Compiling routine: V-LEAVE
-Compiling routine: PRE-LIE
-Compiling routine: V-LIE
-Compiling routine: PRE-LISTEN
-Compiling routine: V-LISTEN
-Compiling routine: V-LOCK
-Compiling routine: V-LOOK
-Compiling routine: V-LOOK-BEHIND
-Compiling routine: V-LOOK-DOWN
-Compiling routine: PRE-LOOK-INSIDE
-Compiling routine: V-LOOK-INSIDE
-Compiling routine: FIRST-YOU
-Compiling routine: V-LOOK-THROUGH
-Compiling routine: NO-BEYOND
-Compiling routine: ROOM-PEEK
-Compiling routine: SEE-INTO?
-Compiling routine: TELL-CANT-FIND
-Compiling routine: V-LOOK-ON
-Compiling routine: V-LOOK-OUTSIDE
-Compiling routine: PRE-LOOK-UNDER
-Compiling routine: V-LOOK-UNDER
-Compiling routine: V-LOOK-UP
-Compiling routine: PRE-MEET
-Compiling routine: V-MEET
-Compiling routine: PRE-MOVE
-Compiling routine: V-MOVE
-Compiling routine: PRE-MOVE-DIR
-Compiling routine: V-MOVE-DIR
-Compiling routine: V-NOD
-Compiling routine: V-OPEN
-Compiling routine: PRE-OPEN-WITH
-Compiling routine: V-OPEN-WITH
-Compiling routine: V-PLAY
-Compiling routine: V-POUR
-Compiling routine: V-PRAY
-Compiling routine: V-PUSH
-Compiling routine: WEAR-CHECK
-Compiling routine: PRE-PUT
-Compiling routine: V-PUT
-Compiling routine: TELL-FIND-NONE
-Compiling routine: PRE-PUT-IN
-Compiling routine: V-PUT-IN
-Compiling routine: PUT-ON-OR-IN
-Compiling routine: WEIGHT
-Compiling routine: V-PUT-UNDER
-Compiling routine: PRE-SREAD
-Compiling routine: V-SREAD
-Compiling routine: PRE-READ
-Compiling routine: V-READ
-Compiling routine: V-REMOVE
-Compiling routine: V-RING
-Compiling routine: V-RUB
-Compiling routine: V-SAY
-Compiling routine: PRE-SEARCH
-Compiling routine: V-SEARCH
-Compiling routine: DISCOVER
-Compiling routine: CONGRATS
-Compiling routine: PRE-SSEARCH-FOR
-Compiling routine: V-SSEARCH-FOR
-Compiling routine: PRE-SEARCH-FOR
-Compiling routine: V-SEARCH-FOR
-Compiling routine: V-SHAKE
-Compiling routine: V-SHOOT
-Compiling routine: PRE-SSHOOT
-Compiling routine: V-SSHOOT
-Compiling routine: V-SHOW
-Compiling routine: PRE-SSHOW
-Compiling routine: V-SSHOW
-Compiling routine: V-SIGN
-Compiling routine: PRE-SIT
-Compiling routine: V-SIT
-Compiling routine: WONT-HELP
-Compiling routine: V-SIT-AT
-Compiling routine: V-SLAP
-Compiling routine: IF-SPY
-Compiling routine: FACE-RED
-Compiling routine: V-SMELL
-Compiling routine: V-SMILE
-Compiling routine: V-SORRY
-Compiling routine: V-SOUND
-Compiling routine: V-STOP
-Compiling routine: V-SWIM
-Compiling routine: PRE-TAKE
-Compiling routine: PRE-TAKE-WITH
-Compiling routine: V-TAKE
-Compiling routine: V-TAKE-OFF
-Compiling routine: V-TAKE-TO
-Compiling routine: V-DISEMBARK
-Compiling routine: OWN-FEET
-Compiling routine: V-HOLD-UP
-Compiling routine: V-TELL
-Compiling routine: PRE-STELL-ABOUT
-Compiling routine: V-STELL-ABOUT
-Compiling routine: PRE-TELL-ABOUT
-Compiling routine: V-TELL-ABOUT
-Compiling routine: PRE-TALK-ABOUT
-Compiling routine: V-TALK-ABOUT
-Compiling routine: V-THANKS
-Compiling routine: V-THROW
-Compiling routine: V-THROW-AT
-Compiling routine: PRE-THROW-THROUGH
-Compiling routine: V-THROW-THROUGH
-Compiling routine: V-TIME
-Compiling routine: TIME-PRINT
-Compiling routine: V-TURN
-Compiling routine: V-LAMP-OFF
-Compiling routine: V-LAMP-ON
-Compiling routine: V-UNLOCK
-Compiling routine: MORE-SPECIFIC
-Compiling routine: V-USE
-Compiling routine: V-WAIT
-Compiling routine: V-WAIT-FOR
-Compiling routine: V-WAIT-UNTIL
-Compiling routine: V-ALARM
-Compiling routine: DO-WALK
-Compiling routine: V-WALK
-Compiling routine: UNLOCK-DOOR?
-Compiling routine: WALK-THRU-DOOR?
-Compiling routine: OPEN-DOOR-AND-CLOSE-IT-AGAIN
-Compiling routine: V-WALK-AROUND
-Compiling routine: WHO-KNOWS?
-Compiling routine: WALK-WITHIN-ROOM
-Compiling routine: V-WALK-TO
-Compiling routine: ENTER-ROOM
-Compiling routine: V-RUN-OVER
-Compiling routine: NO-CHANGING?
-Compiling routine: V-WEAR
-Compiling routine: V-YELL
-Compiling routine: V-YES
-Compiling routine: V-NO
-Compiling routine: FINISH
-Compiling routine: DIVESTMENT?
-Compiling routine: REMOTE-VERB?
-Input file: SS:<MOONMIST>GOAL.ZIL.601
-Compiling routine: FOLLOW-GOAL
-Compiling routine: FOLLOW-GOAL-NEXT
-Compiling routine: GET-LINE
-Compiling routine: IN-MOTION?
-Compiling routine: ESTABLISH-GOAL
-Compiling routine: GOAL-REACHED
-Compiling routine: ENTERS?
-Compiling routine: TELL-OPEN-DOOR
-Compiling routine: TELL-HIS-HER-BEDROOM
-Compiling routine: TELL-LOCKING-THE-DOOR
-Compiling routine: MOVE-PERSON
-Compiling routine: COMPASS-EQV
-Compiling routine: DIR-EQV?
-Compiling routine: DIR-FROM
-Compiling routine: DIR-FROM-TEST
-Compiling routine: I-PLAYER
-Compiling routine: GOODNIGHT
-Compiling routine: GRAB-ATTENTION
-Compiling routine: ANGRY-REJECT?
-Compiling routine: WHERE?
-Compiling routine: DIR-PRINT
-Compiling routine: OPP-DIR
-Compiling routine: I-TOUR
-Compiling routine: I-FRIEND-GREETS
-Compiling routine: BUTLER-APPEARS
-Compiling routine: BUTLER-FETCHES
-Compiling routine: TAMARA-LEAVES-YOU
-Compiling routine: BUTLER-CARRIES
-Compiling routine: I-BUTLER-HINTS
-Compiling routine: I-BUTLER-COOKS
-Compiling routine: BUTLER-COOKS
-Compiling routine: I-BUTLER-SERVES
-Compiling routine: BUTLER-SERVES
-Compiling routine: X-WAITS
-Compiling routine: I-DINNER
-Compiling routine: BUTLER-RINGS-BELL?
-Compiling routine: BUTLER-LEAVES
-Compiling routine: I-DINNER-SIT
-Compiling routine: I-LIONEL-SPEAKS
-Compiling routine: MAKE-ALL-PEOPLE
-Compiling routine: I-WITHDRAW
-Compiling routine: I-SEARCH
-Compiling routine: X-SEARCHES
-Compiling routine: I-DISCOVERED
-Compiling routine: I-FOUND-PASSAGES
-Compiling routine: FOUND-PASSAGES-REPEAT
-Compiling routine: I-BEDTIME
-Compiling routine: FRIEND-PASSAGE-STORY
-Compiling routine: X-RETIRES
-Compiling routine: GHOST-INTO-PASSAGE
-Compiling routine: TIME-FOR-GHOST?
-Compiling routine: DRESS-GHOST
-Compiling routine: LOVER-XFER
-Compiling routine: I-COME-TO
-Compiling routine: LOVER-SPEECH
-Compiling routine: GHOST-FLEES
-Compiling routine: GHOST-LURKS
-Compiling routine: I-SHOT
-Input file: SS:<MOONMIST>PEOPLE.ZIL.806
-Compiling routine: PLAYER-NAME-F
-Compiling routine: PLAYER-F
-Compiling routine: PLEASE-ANSWER
-Compiling routine: TOO-BAD-SIT-HIDE
-Compiling routine: FRIEND-D
- ** Note: Unknown value - BUTLER
- ** Note: Unknown value - BUTLER
- ** Note: Unknown value - DOCTOR
- ** Note: Unknown value - OFFICER
- ** Note: Unknown value - BUTLER
- ** Note: Unknown value - DEB
- ** Note: Unknown value - OFFICER
- ** Note: Unknown value - BUTLER
-Compiling routine: I-REPLY
-Compiling routine: FRIEND-F
-Compiling routine: TAMARA-EVIDENCE-F
-Compiling routine: ASKING-ABOUT?
-Compiling routine: LORD-INTRO
-Compiling routine: TELL-FULL-NAME
-Compiling routine: LORD-D
-Compiling routine: LORD-GHOST-STORY
-Compiling routine: LORD-F
-Compiling routine: CLUE-2-STORY
-Compiling routine: TELL-DUNNO
-Compiling routine: JACK-TAPE-F
-Compiling routine: LOVER-D
-Compiling routine: LOVER-F
-Compiling routine: DEB-D
-Compiling routine: DEB-F
-Compiling routine: WILLING?
-Compiling routine: OFFICER-D
-Compiling routine: I-JUST-LOVE-IT
-Compiling routine: WINNER-DEFAULT
-Compiling routine: OFFICER-F
-Compiling routine: IAN-CALLS-YOU
-Compiling routine: DOCTOR-D
-Compiling routine: DOCTOR-F
-Compiling routine: MUSTACHE-F
-Compiling routine: WENDISH-BOOK-F
-Compiling routine: DEALER-D
-Compiling routine: DEALER-F
-Compiling routine: PAINTER-D
-Compiling routine: PAINTER-F
-Compiling routine: VIVIEN-DIARY-F
-Compiling routine: COUSIN-F
-Compiling routine: BOLITHO-WILL
-Compiling routine: BUTLER-D
-Compiling routine: BUTLER-SORRY
-Compiling routine: BUTLER-F
-Compiling routine: IN-CASE-OF-BLACKOUT
-Compiling routine: BUTLER-GHOST-STORY
-Compiling routine: BUTLER-MIRROR-STORY
-Compiling routine: GHOST-NEW-D
-Compiling routine: GHOST-NEW-F
-Compiling routine: GHOST-NEW-VERBS
-Compiling routine: UNDRESS-GHOST
-Compiling routine: DESCRIBE-GOWN
-Compiling routine: COSTUME-F
-Compiling routine: WEAR-SCARE
-Compiling routine: WHY-ME
-Compiling routine: DESCRIBE-PERSON
-Compiling routine: ALL-TOGETHER-NOW?
-Compiling routine: TELL-ABOUT-OBJECT
-Compiling routine: PERSON-F
-Compiling routine: SECRET-PASSAGE-OR-DOOR?
-Compiling routine: CARRY-CHECK
-Compiling routine: WINNER-DESCRIBE
-Compiling routine: TRANSIT-TEST
-Compiling routine: COM-CHECK
-Compiling routine: EVIDENCE?
-Compiling routine: SETUP-SHOT
-Compiling routine: COMMON-ASK-ABOUT
-Compiling routine: SHOWING-CLUE?
-Compiling routine: TREASURE-FOUND?
-Compiling routine: TELL-STOP-SEARCHING?
-Compiling routine: GOOD-SHOW
-Compiling routine: COMMON-DESC
-Compiling routine: COMMON-OTHER
-Compiling routine: UNSNOOZE
-Compiling routine: FIX-MUSTACHE
-Compiling routine: OBJECT-PAIR-F
-Compiling routine: CREW-GLOBAL-F
-Input file: SS:<MOONMIST>CASTLE.ZIL.721
-Compiling routine: CASTLE-F
-Compiling routine: TOWER-F
-Compiling routine: MOON-F
-Compiling routine: OCEAN-F
-Compiling routine: CAR-DOOR-PSEUDO
-Compiling routine: DRIVING?
-Compiling routine: CAR-F
-Compiling routine: CAR-TO-COURTYARD
-Compiling routine: CAR-TO-DRIVEWAY
-Compiling routine: TELL-ABOUT-CAR
-Compiling routine: VOICE-F
-Compiling routine: HORN-F
-Compiling routine: DRIVEWAY-F
-Compiling routine: DRAGON-F
-Compiling routine: TELL-ABOUT-DRAGON
-Compiling routine: I-DRAGON-EYE
-Compiling routine: DRAGON-EYE-F
-Compiling routine: TELL-ABOUT-EYE
-Compiling routine: VOICE-SAYS
-Compiling routine: GATE-OPENS
-Compiling routine: FRONT-GATE-F
-Compiling routine: COURTYARD-F
-Compiling routine: TELL-LIKE-BROCHURE
-Compiling routine: MAZE-EXIT
-Compiling routine: MAZE-F
-Compiling routine: GARDEN-F
-Compiling routine: POND-F
-Compiling routine: FRONT-DOOR-F
-Compiling routine: FOYER-F
-Compiling routine: DESCRIBE-CONTENTS
-Compiling routine: UMBRELLA-STAND-F
-Compiling routine: DRAWING-ROOM-F
-Compiling routine: LOVER-PIC-F
-Compiling routine: TAPESTRY-F
-Compiling routine: GREAT-HALL-F
-Compiling routine: GREAT-HALL-IS-FLOORED
-Compiling routine: ARMOR-F
-Compiling routine: SECRET-SITTING-DOOR-F
-Compiling routine: SITTING-ROOM-F
-Compiling routine: WYVERN-F
-Compiling routine: WRITING-DESK-F
-Compiling routine: PIANO-F
-Compiling routine: MUSIC-F
-Compiling routine: CORR-1-F
-Compiling routine: DINING-ROOM-F
-Compiling routine: I-DINNER-TALK
-Compiling routine: DINNER-TALK
-Compiling routine: POPULATION
-Compiling routine: BUST-D
-Compiling routine: BUST-F
-Compiling routine: RECORDER-F
-Compiling routine: TABLE-DINING-F
-Compiling routine: PUNCHBOWL-F
-Compiling routine: DINNER-D
-Compiling routine: DINNER-F
-Compiling routine: BACKSTAIRS-F
-Compiling routine: KITCHEN-F
-Compiling routine: LANTERN
-Compiling routine: GALLERY-F
-Compiling routine: PICTURE-F
-Compiling routine: BATHROOM-F
-Compiling routine: FIREPLACE-F
-Compiling routine: BED-PSEUDO
-Compiling routine: NIGHTSTAND-LG-F
-Compiling routine: DRESSING-TABLE-LG-F
-Compiling routine: MIRROR-GLOBAL-F
-Compiling routine: OPEN-DOOR?
-Compiling routine: YOUR-ROOM-F
-Compiling routine: ENTER-PASSAGE
-Compiling routine: BED-F
-Compiling routine: NIGHTSTAND-F
-Compiling routine: TELL-AS-WELL-AS
-Compiling routine: DRESSING-MIRROR-F
-Compiling routine: YOUR-MIRROR-F
-Compiling routine: YOUR-SWITCH-F
-Compiling routine: YOUR-BATHROOM-F
-Compiling routine: TOILET-PSEUDO
-Compiling routine: BATH-PSEUDO
-Compiling routine: IRIS-ROOM-F
-Compiling routine: WENDISH-ROOM-F
-Compiling routine: CANDLE-F
-Compiling routine: WENDISH-STUFF-D
-Compiling routine: WENDISH-STUFF-F
-Compiling routine: WENDISH-KIT-F
-Compiling routine: SEARCH-KIT-BOX
-Compiling routine: VIVIEN-ROOM-F
-Compiling routine: VIVIEN-BOX-F
-Compiling routine: FIGURINE-F
-Compiling routine: IAN-ROOM-F
-Compiling routine: TELL-IAN-FIREPLACE
-Compiling routine: ANDIRON-F
-Compiling routine: HYDE-ROOM-F
-Input file: SS:<MOONMIST>TOWER.ZIL.528
+Abstracting SS:<MOONMIST>PARSER.
+Loading abstract SS:<MOONMIST>VERBS.ZABSTR.1.
+Loading abstract SS:<MOONMIST>GOAL.ZABSTR.1.
+Loading abstract SS:<MOONMIST>PEOPLE.ZABSTR.1.
+Loading abstract SS:<MOONMIST>CASTLE.ZABSTR.1.
+Loading SS:<MOONMIST>TOWER.ZIL.529 and compiling it.
Compiling routine: TELL-IN-BROCHURE
Compiling routine: BROCHURE-PSEUDO
Compiling routine: MEMENTO-F
@@ -684,7 +161,6 @@ Compiling routine: LIBRARY-F
Compiling routine: BOOKS-GLOBAL-F
Compiling routine: BOOKCASE-F
Compiling routine: HISTORY-BOOK-F
- ** Note: Non-predicate jump flushed MOVE
Compiling routine: JOURNAL-F
Compiling routine: OFFICE-F
Compiling routine: INKWELL-F
@@ -731,35 +207,10 @@ Compiling routine: DRAWING-CLOSET-F
Compiling routine: GALLERY-CORNER-F
Compiling routine: PEEPHOLE-F
Compiling routine: HYDE-CLOSET-F
-Input file: SS:<MOONMIST>THINGS.ZIL.207
-Compiling routine: RANDOM-PSEUDO
-Compiling routine: LUGGAGE-F
-Compiling routine: BROCHURE-F
-Compiling routine: BLOWGUN-F
-Compiling routine: NO-VIOLENCE?
-Compiling routine: SHOOTING
-Compiling routine: MACE-F
-Compiling routine: NECKLACE-OF-D-F
-Compiling routine: LENS-2-F
-Compiling routine: LENS-BOX-F
-Compiling routine: LETTER-F
-Compiling routine: LETTER-MAID-F
-Compiling routine: LETTER-DEE-F
-Input file: SS:<MOONMIST>PLACES.ZIL.94
-Compiling routine: NULL-F
-Compiling routine: DOOR-ROOM
-Compiling routine: FIND-FLAG
-Compiling routine: FIND-FLAG-NOT
-Compiling routine: FIND-FLAG-LG
-Compiling routine: FIND-FLAG-HERE
-Compiling routine: FIND-FLAG-HERE-NOT
-Compiling routine: LEVER-F
-Compiling routine: OPEN-CLOSE
-Compiling routine: OUTSIDE?
-Compiling routine: WINDOW-F
-Compiling routine: CORRIDOR-LOOK
-Compiling routine: CORRIDOR-CHECK
-Input file: SS:<MOONMIST>GLOBAL.ZIL.354
+Abstracting SS:<MOONMIST>TOWER.
+Loading abstract SS:<MOONMIST>THINGS.ZABSTR.1.
+Loading abstract SS:<MOONMIST>PLACES.ZABSTR.1.
+Loading SS:<MOONMIST>GLOBAL.ZIL.356 and compiling it.
Compiling routine: LOCAL-GLOBALS-F
Compiling routine: UPSTAIRS-DOWNSTAIRS
Compiling routine: DO-INSTEAD-OF
@@ -781,573 +232,209 @@ Compiling routine: KEYHOLE-F
Compiling routine: HANDS-F
Compiling routine: HEAD-F
Compiling routine: EYE-F
+Compiling routine: OTHER-OUTFIT-F
Compiling routine: FIND-BODY
Compiling routine: PASSAGE-F
Compiling routine: CORPSE-F
Compiling routine: UNDRESSED-F
Compiling routine: ARTIFACT-F
Compiling routine: TIMES-UP
-Input file: SS:<MOONMIST>COLORS.ZIL.353
-Compiling routine: INTRO
-Compiling routine: YOUR-COLOR-F
-Compiling routine: GET-COLOR
-Compiling routine: FIX-COLOR-ADJ
-Compiling routine: DO-VARIATION
-Compiling routine: CANE-F
-Compiling routine: PAINT-F
-Compiling routine: DISCOVER-WAR-CLUB
-Compiling routine: ATTACK-VERB?
-Compiling routine: WAR-CLUB-F
-Compiling routine: DESCRIBE-WAR-CLUB
-Compiling routine: SKULL-F
-Compiling routine: MOONMIST-F
-Compiling routine: CLUE-1-F
-Compiling routine: CLUE-2-F
-Compiling routine: CLUE-3-F
-Compiling routine: CLUE-4-F
-Compiling routine: PRINT-COLOR
-Compiling routine: TELL-SUFFIX
-Compiling routine: TITLE-NAME
-Compiling routine: TITLE
-Compiling routine: NON-BLANK-STUFF
-Compiling routine: FULL-NAME
-Compiling routine: GET-NAME
-Compiling routine: PRINT-NAME
+Abstracting SS:<MOONMIST>GLOBAL.
+Loading abstract SS:<MOONMIST>COLORS.ZABSTR.1.
** Warning: Never defined - A?GREEN
** Warning: Never defined - A?BLUE
** Warning: Never defined - A?RED
** Warning: Never defined - A?YELLOW
-Warnings: 4
+Warnings: 7
** Note: OBJECT has no properties: ROOMS
** Note: OBJECT has no properties: GENERIC-CLUE
Vocabulary: 955
+
Prepositions: 24
- IN
- UNTIL
- AGAINST
- BESIDE
- AWAY
- BEHIND
- AROUND
- ACROSS
- RID
- FROM
- THROUGH
- OVER
- DOWN
- UP
- OFF
- ABOUT
- ON
- UNDER
- OUT
- FOR
- WITH
- TO
- AT
-Objects: 253
- BUST
- HORN
- MEMENTO
- WENDISH-CHAIR
- PUNCHBOWL
- LOVER-PIC
- POND
- WINDOW
- COURTYARD
- DRAWING-ROOM
- TOMB
- IRIS-CHAIR
- DRIVEWAY
- WENDISH-ROOM
- SECRET-SITTING-DOOR
- WELL
- LIBRARY-CHAIR
- DUNGEON
- EARRING
- CORR-3
- LUMBER-ROOM
- CHAPEL
- GAME-ROOM
- LUMBER-CHEST
- LUMBER-RING
- PEEPHOLE-2
- MAGAZINE
- STAINED-WINDOW
- BUFFALO-HEAD
- RHINO-HEAD
- GLASS-EYE
- DECK
- LADDER
- SECRET-LANDING-JACK
- PASSAGE-1
- SECRET-LANDING-TAM
- SECRET-VIVIEN-PASSAGE
- DINING-PASSAGE
- SECRET-LANDING-LIB
- SECRET-IAN-PASSAGE
- SITTING-PASSAGE
- YOUR-CLOSET
- IRIS-CLOSET
- WENDISH-CORNER
- MIDPOINT
- DRAWING-CLOSET
- GALLERY-CORNER
- HYDE-CLOSET
- PSEUDO-OBJECT
- LUGGAGE
- BROCHURE
- BLOWGUN
- MACE
- NECKLACE-OF-D
- JEWEL
- LENS
- LENS-BOX
- LENS-1
- LENS-2
- LETTER
- LETTER-MAID
- LETTER-DEE
- TURN
- IT
- FLOOR
- DANGER
- INTNUM
- YOU
- WALL
- GLOBAL-HERE
- TWEED-OUTFIT
- SLEEP-OUTFIT
- EXERCISE-OUTFIT
- DINNER-OUTFIT
- SLEEP-GLOBAL
- LIGHT-GLOBAL
- HAUNTING
- KEYHOLE
- HANDS
- HEAD
- EYE
- PASSAGE
- ROMANCE
- ACCIDENT
- CORPSE
- UNDRESSED
- ARTIFACT
- YOUR-COLOR
- CANE
- PAINT
- WAR-CLUB
- SKULL
- NECKLACE
- MOONMIST
- GENERIC-CLUE
- CLUE-1
- CLUE-2
- CLUE-3
- CLUE-4
- TABLE-LIBRARY
- SECRET-HYDE-DOOR
- GARDEN
- JUNCTION
- WENDISH-STUFF
- VICTORIA-CHAIR
- BACKSTAIRS
- MAZE
- COAT-RACK
- OBJECT-PAIR
- BASEMENT
- ARMOR
- FIGURINE
- DINNER
- OCEAN
- SECRET-VIVIEN-DOOR
- PIANO
- FIREPLACE
- BOOKCASE
- CORR-2
- VIVIEN-BOX
- DRESSING-TABLE
- JOURNAL
- SECRET-IAN-DOOR
- TAMARA-BED
- DRESSING-BENCH
- WENDISH-KIT
- GHOST-NEW
- SECRET-DRAWING-DOOR
- HISTORY-BOOK
- DEB
- NIGHTSTAND-LG
- TABLE-DINING
- DINNER-2
- SECRET-YOUR-DOOR
- BATHROOM
- CORR-1
- YOUR-MIRROR
- WARDROBE
- DRAGON
- NOT-HERE-OBJECT
- WRITING-DESK
- DRAGON-EYE
- LOVER-PATH
- SKELETON
- COUSIN
- STUDY
- CASTLE
- BOOKS-GLOBAL
- FRIEND
- COFFIN
- STAIRS
- CAR
- WINE-RACK
- GHOST-OLD
- SIDEBOARD
- NIGHTLAMP
- LOVER
- CHEST-OF-DRAWERS
- IRIS-ROOM
- TELESCOPE
- LAMP
- SECRET-TAMARA-DOOR
- JACK-ROOM
- HYDE-ROOM
- NIGHTSTAND
- VIVIEN-ROOM
- VIVIEN-DIARY
- LIBRARY
- SECRET-IRIS-DOOR
- HIM
- BOTTLE
- PRIEST-DOOR
- PAINTING-GALLERY
- OLD-GREAT-HALL
- BED
- TABLE-RANDOM
- FOYER
- GALLERY
- YOUR-BATHROOM-DOOR
- TOWER
- TAMARA-ROOM
- MAID
- GREAT-HALL
- LEVER
- HOLE-IN-WALL
- CRYPT
- FRONT-DOOR
- CREST
- OFFICER
- IAN-ROOM
- UMBRELLA-STAND
- WARDROBE-LG
- COSTUME
- LORD
- VIVIEN-STUFF
- IRON-MAIDEN
- DEALER
- PAINTER
- SECRET-WENDISH-DOOR
- YOUR-SWITCH
- TAMARA-EVIDENCE
- WENDISH-BOOK
- COMPUTER
- DRESSING-TABLE-LG
- DESK
- CREW-GLOBAL
- MUSTACHE
- WYVERN
- BUTLER
- SITTING-ROOM
- VIVIEN-CHAIR
- BELL
- DOCTOR
- MOON
- IAN-CHAIR
- INKWELL
- CANDLE
- SECRET-LIBRARY-DOOR
- YOUR-CHAIR
- PLAYER-NAME
- BRICKS
- WEST-HALL
- GLOBAL-OBJECTS
- SECRET-DINING-DOOR
- JACK-TAPE
- YOUR-BATHROOM
- DRESSING-MIRROR
- CHAIR-DINING
- PEEPHOLE
- OFFICE
- HYDE-CHAIR
- FRONT-GATE
- VOICE
- MUSIC
- TAPESTRY
- HER
- CHAIR
- LOCAL-GLOBALS
- PLAYER
- MIRROR-GLOBAL
- EAST-HALL
- LIMBO
- ROOMS
- INTDIR
- ANDIRON
- YOUR-ROOM
- DINING-ROOM
- KITCHEN
- RECORDER
- OIL-PAINTING
- JEWELRY-CASE
- SECRET-JACK-DOOR
- MEMENTO-2
+
+ABOUT AGAINST AWAY DOWN IN OUT THROUGH UNTIL
+ACROSS AROUND BEHIND FOR OFF OVER TO UP
+AFTER AT BESIDE FROM ON RID UNDER WITH
+
+Real globals: 223
+
+AGAIN-DIR LDESC-STRINGS P-VTBL
+AGAIN-LEXV LIONEL-FORCED P-WALK-DIR
+AHHH LIONEL-SPEAKS-COUNTER P-WON
+AIMED-HERE LIONELS-VOICE P-XADJ
+ANCIENT-SECRETS LIT P-XADJN
+ARRESTED-THE-VILLAIN LONG-BLOND-HAIR P-XNAM
+AWAITING-REPLY LOVER-SAID PASS-LINE
+BED-LINE MAIN-LINE PASSAGE-EAST-WEST
+BEG-PARDON MASS-COUNTER PIANO-PIECES
+BRICKS-DOWN MASS-SAID PLAYER-OBSTACLES
+BUTLER-DUTY MIDDLE-WORD PLAYER-RANG-BELL?
+BUTLER-GHOST-STORY-TOLD MISSED-DINNER POISON-DART
+BUTLER-HINTS-COUNTER MUSTACHE-STORY PRESENT-TIME
+BUTLER-RANG-BELL? NAUGHTY-WORD-TABLE PRSA
+C-INTS NEVER-NOTICED-HER PRSI
+C-TABLE NO-CHANGING PRSO
+CAPTOR NO-VIOLENCE QCONTEXT
+CASTLE-IS-SOUTH NOT-ENOUGH-ROOM QUESTION-WORD-COUNT
+CHAR-CLOSET-TABLE NOTHING-NEW QUESTION-WORD-TABLE
+CHAR-POSS-TABLE NOW-PRSI QUESTIONERS
+CHAR-ROOM-TABLE NOW-WEARING QUESTIONS
+CHARACTER-TABLE NUMBER-WORD-TABLE QUITE-WELCOME
+CLASP-MUNGED OFFENDED QUOTE-FLAG
+CLOCK-WAIT OHERE QWP1-TABLE
+CLOCKER-RUNNING OOPS-INBUF QWP2-TABLE
+CLUE-LOC OOPS-PRINT REMEMBER-NOT-DRESSED
+COLOR-ADJS OOPS-TABLE RESERVE-INBUF
+COLOR-FORCED OPRSO RESERVE-LEXV
+COLOR-LETTERS OTHER-POSS-POS RESERVE-PTR
+COLOR-WORDS OU-STOP-SEARCHING RHYMES-WITH-RICH
+CONFESSED P-AADJ SEARCH-ROOMS
+COR-1 P-ACLAUSE SEARCHER
+COR-2 P-ADJ SECRET-TAM-LIB
+COR-4 P-ADJN SHOOTER
+CREEPIES P-ADJW SHOT
+DARK-TURRETS P-ANAM SOMETHING
+DINING-DESC P-AND STAIRS-DOWN-LEFT
+DINNER-SAT P-BUTS STAIRS-UP-RIGHT
+DINNER-SIT-COUNTER P-CCTBL SUFFIX
+DIR-STRINGS P-CONT THATS-INTERESTING
+DISCOVERED-HERE P-DIRECTION TIMER-PREVENTS-IT
+DRAGON-EYE-COLOR P-END-ON-PREP TITLE-WORD
+EVIDENCE-FOUND P-GETFLAGS TOLD-ABOUT-EVID
+FAMOUS-YOUNG-DETECTIVE P-GWIMBIT TOLD-ABOUT-GHOST
+FAVE-COLOR P-HER-OBJECT TOO-SLIPPERY
+FAWNING P-HIM-OBJECT TOUCHED-LDESCS
+FIRST-NAME P-INBUF TOUR-FORCED
+FOLLOW-LOC P-IT-OBJECT TOUR-INDEX
+FOLLOWER P-IT-WORDS TOUR-PATH
+FOUND-COSTUME P-ITBL TOWER-LINE
+FOUND-FABRIC P-LEN TOWER-STAIRS
+FOUND-IT P-LEXV TRAILS-ALONG
+FOUND-IT-PERM P-MERGE TRANSFER-TABLE
+FOUND-LOC P-MERGED TREASURE
+FOUND-PASSAGES P-MOBY-FLAG TREASURE-FOUND
+FRIEND-FOUND-PASSAGES P-MOBY-FOUND TRESYLLIAN
+FUMBLE-NUMBER P-NAM VARIATION
+FUMBLE-PROB P-NAMW VERBOSITY
+GENDER-KNOWN P-NCN VILLAIN-KNOWN?
+GHOST-CACKLES P-NUMBER VILLAIN-PER
+GLASSES-FOR P-OCL1 WASHED
+GOAL-PERSON P-OCL2 WHICH-DIR
+GOAL-TABLES P-OFLAG WHITISH-GLIMPSE
+GUEST-TABLE P-OFW WHO-CARES-TBL
+HIDING-PLACE P-OTBL WHO-CARES-VERB
+HO-HUM P-OVTBL WING-STAIRS
+I-ASSUME P-PHR WINNER
+IDENTIFIED-THE-GHOST P-PROMPT WRONG-OUTFIT
+IM-SHOCKED P-PRSA-WORD YAWNS
+INTO-DARKNESS P-PRSI YES-INBUF
+INTRODUCES P-PRSO YES-LEXV
+JACK-THINKS-GLADYS P-SLOCBITS YOU-DIDNT-SAY-W
+KEEP-WAITING P-SYNTAX YUKS
+LAST-NAME P-TABLE
+LAST-PSEUDO-LOC P-TIME
+
+Objects: 254
+
+ACCIDENT GREAT-HALL PIANO
+ANDIRON HANDS PLAYER
+ARMOR HAUNTING PLAYER-NAME
+ARTIFACT HEAD POND
+BACKSTAIRS HER PRIEST-DOOR
+BASEMENT HIM PSEUDO-OBJECT
+BATHROOM HISTORY-BOOK PUNCHBOWL
+BED HOLE-IN-WALL RECORDER
+BELL HORN RHINO-HEAD
+BLOWGUN HYDE-CHAIR ROMANCE
+BOOKCASE HYDE-CLOSET ROOMS
+BOOKS-GLOBAL HYDE-ROOM SECRET-DINING-DOOR
+BOTTLE IAN-CHAIR SECRET-DRAWING-DOOR
+BRICKS IAN-ROOM SECRET-HYDE-DOOR
+BROCHURE INKWELL SECRET-IAN-DOOR
+BUFFALO-HEAD INTDIR SECRET-IAN-PASSAGE
+BUST INTNUM SECRET-IRIS-DOOR
+BUTLER IRIS-CHAIR SECRET-JACK-DOOR
+CANDLE IRIS-CLOSET SECRET-LANDING-JACK
+CANE IRIS-ROOM SECRET-LANDING-LIB
+CAR IRON-MAIDEN SECRET-LANDING-TAM
+CASTLE IT SECRET-LIBRARY-DOOR
+CHAIR JACK-ROOM SECRET-SITTING-DOOR
+CHAIR-DINING JACK-TAPE SECRET-TAMARA-DOOR
+CHAPEL JEWEL SECRET-VIVIEN-DOOR
+CHEST-OF-DRAWERS JEWELRY-CASE SECRET-VIVIEN-PASSAGE
+CLUE-1 JOURNAL SECRET-WENDISH-DOOR
+CLUE-2 JUNCTION SECRET-YOUR-DOOR
+CLUE-3 KEYHOLE SIDEBOARD
+CLUE-4 KITCHEN SITTING-PASSAGE
+COAT-RACK LADDER SITTING-ROOM
+COFFIN LAMP SKELETON
+COMPUTER LENS SKULL
+CORPSE LENS-1 SLEEP-GLOBAL
+CORR-1 LENS-2 SLEEP-OUTFIT
+CORR-2 LENS-BOX STAINED-WINDOW
+CORR-3 LETTER STAIRS
+COSTUME LETTER-DEE STUDY
+COURTYARD LETTER-MAID TABLE-DINING
+COUSIN LEVER TABLE-LIBRARY
+CREST LIBRARY TABLE-RANDOM
+CREW-GLOBAL LIBRARY-CHAIR TAMARA-BED
+CRYPT LIGHT-GLOBAL TAMARA-EVIDENCE
+DANGER LIMBO TAMARA-ROOM
+DEALER LOCAL-GLOBALS TAPESTRY
+DEB LORD TELESCOPE
+DECK LOVER TOMB
+DESK LOVER-PATH TOWER
+DINING-PASSAGE LOVER-PIC TURN
+DINING-ROOM LUGGAGE TWEED-OUTFIT
+DINNER LUMBER-CHEST UMBRELLA-STAND
+DINNER-2 LUMBER-RING UNDRESSED
+DINNER-OUTFIT LUMBER-ROOM VICTORIA-CHAIR
+DOCTOR MACE VIVIEN-BOX
+DRAGON MAGAZINE VIVIEN-CHAIR
+DRAGON-EYE MAID VIVIEN-DIARY
+DRAWING-CLOSET MAZE VIVIEN-ROOM
+DRAWING-ROOM MEMENTO VIVIEN-STUFF
+DRESSING-BENCH MEMENTO-2 VOICE
+DRESSING-MIRROR MIDPOINT WALL
+DRESSING-TABLE MIRROR-GLOBAL WAR-CLUB
+DRESSING-TABLE-LG MOON WARDROBE
+DRIVEWAY MOONMIST WARDROBE-LG
+DUNGEON MUSIC WELL
+EARRING MUSTACHE WENDISH-BOOK
+EAST-HALL NECKLACE WENDISH-CHAIR
+EXERCISE-OUTFIT NECKLACE-OF-D WENDISH-CORNER
+EYE NIGHTLAMP WENDISH-KIT
+FIGURINE NIGHTSTAND WENDISH-ROOM
+FIREPLACE NIGHTSTAND-LG WENDISH-STUFF
+FLOOR NOT-HERE-OBJECT WEST-HALL
+FOYER OBJECT-PAIR WINDOW
+FRIEND OCEAN WINE-RACK
+FRONT-DOOR OFFICE WRITING-DESK
+FRONT-GATE OFFICER WYVERN
+GALLERY OIL-PAINTING YOU
+GALLERY-CORNER OLD-GREAT-HALL YOUR-BATHROOM
+GAME-ROOM OTHER-OUTFIT YOUR-BATHROOM-DOOR
+GARDEN PAINT YOUR-CHAIR
+GENERIC-CLUE PAINTER YOUR-CLOSET
+GHOST-NEW PAINTING-GALLERY YOUR-COLOR
+GHOST-OLD PASSAGE YOUR-MIRROR
+GLASS-EYE PASSAGE-1 YOUR-ROOM
+GLOBAL-HERE PEEPHOLE YOUR-SWITCH
+GLOBAL-OBJECTS PEEPHOLE-2
+
Properties: 27
- P?SW
- P?SE
- P?NE
- P?NW
- P?UP
- P?DOWN
- P?WEST
- P?NORTH
- P?SOUTH
- P?EAST
- P?IN
- P?OUT
- P?THINGS
- P?GLOBAL
- P?STATION
- P?GENERIC
- P?SIZE
- P?CAPACITY
- P?TEXT
- P?DESCFCN
- P?CHARACTER
- P?LINE
- P?LDESC
- P?ADJECTIVE
- P?SYNONYM
- P?ACTION
-Globals: 223
- P-ACLAUSE
- WHICH-DIR
- BUTLER-DUTY
- INTO-DARKNESS
- SECRET-TAM-LIB
- PASSAGE-EAST-WEST
- POISON-DART
- CLASP-MUNGED
- COR-1
- COR-2
- COR-4
- WING-STAIRS
- TOWER-STAIRS
- FOUND-IT
- FOUND-IT-PERM
- FOUND-LOC
- NOTHING-NEW
- NOW-WEARING
- OHERE
- VILLAIN-PER
- TREASURE
- HIDING-PLACE
- COLOR-FORCED
- COLOR-WORDS
- COLOR-ADJS
- COLOR-LETTERS
- FAVE-COLOR
- FIRST-NAME
- LAST-NAME
- SUFFIX
- GENDER-KNOWN
- MIDDLE-WORD
- TITLE-WORD
- IM-SHOCKED
- QUITE-WELCOME
- MISSED-DINNER
- FOUND-FABRIC
- P-HER-OBJECT
- P-NCN
- PLAYER-RANG-BELL?
- BED-LINE
- I-ASSUME
- WHITISH-GLIMPSE
- CHAR-CLOSET-TABLE
- QUESTION-WORD-COUNT
- CHARACTER-TABLE
- SEARCHER
- DINNER-SIT-COUNTER
- MAIN-LINE
- DISCOVERED-HERE
- NAUGHTY-WORD-TABLE
- CAPTOR
- TOLD-ABOUT-EVID
- TOLD-ABOUT-GHOST
- DARK-TURRETS
- VILLAIN-KNOWN?
- QWP2-TABLE
- NUMBER-WORD-TABLE
- CHAR-ROOM-TABLE
- P-IT-OBJECT
- RESERVE-INBUF
- FOLLOWER
- YAWNS
- FUMBLE-PROB
- FUMBLE-NUMBER
- P-AND
- LIONELS-VOICE
- LIONEL-FORCED
- P-BUTS
- P-LEN
- REMEMBER-NOT-DRESSED
- STAIRS-UP-RIGHT
- AIMED-HERE
- SHOOTER
- SEARCH-ROOMS
- IDENTIFIED-THE-GHOST
- ARRESTED-THE-VILLAIN
- FOUND-PASSAGES
- FOUND-COSTUME
- TOUCHED-LDESCS
- OPRSO
- PRSO
- P-OFLAG
- P-ITBL
- P-OCL1
- P-OCL2
- GHOST-CACKLES
- BUTLER-GHOST-STORY-TOLD
- FAMOUS-YOUNG-DETECTIVE
- VERBOSITY
- QUOTE-FLAG
- P-OVTBL
- TIMER-PREVENTS-IT
- WASHED
- P-MOBY-FOUND
- HO-HUM
- PLAYER-OBSTACLES
- TRANSFER-TABLE
- P-OTBL
- CLUE-LOC
- PRSA
- PASS-LINE
- OTHER-POSS-POS
- NEVER-NOTICED-HER
- P-LEXV
- WINNER
- AGAIN-LEXV
- TRESYLLIAN
- RHYMES-WITH-RICH
- FAWNING
- LDESC-STRINGS
- GLASSES-FOR
- MASS-SAID
- BUTLER-HINTS-COUNTER
- YUKS
- WHO-CARES-TBL
- P-OFW
- P-ADJW
- P-NAMW
- TREASURE-FOUND
- PIANO-PIECES
- INTRODUCES
- OOPS-INBUF
- SHOT
- P-PHR
- P-CCTBL
- P-TIME
- OFFENDED
- BEG-PARDON
- P-INBUF
- RESERVE-PTR
- QCONTEXT
- LIT
- RESERVE-LEXV
- P-TABLE
- QUESTIONS
- QUESTIONERS
- GUEST-TABLE
- SOMETHING
- QUESTION-WORD-TABLE
- TOWER-LINE
- TOUR-PATH
- MUSTACHE-STORY
- LOVER-SAID
- BUTLER-RANG-BELL?
- BRICKS-DOWN
- NO-CHANGING
- TRAILS-ALONG
- TOUR-FORCED
- P-PRSI
- P-IT-WORDS
- AWAITING-REPLY
- P-ADJ
- P-MERGE
- P-XADJ
- P-PRSO
- P-HIM-OBJECT
- DIR-STRINGS
- OU-STOP-SEARCHING
- OOPS-TABLE
- P-CONT
- NOT-ENOUGH-ROOM
- NO-VIOLENCE
- YOU-DIDNT-SAY-W
- AHHH
- GOAL-TABLES
- TOUR-INDEX
- YES-INBUF
- YES-LEXV
- LAST-PSEUDO-LOC
- VARIATION
- GOAL-PERSON
- DINING-DESC
- WRONG-OUTFIT
- CREEPIES
- WHO-CARES-VERB
- CASTLE-IS-SOUTH
- CHAR-POSS-TABLE
- FOLLOW-LOC
- PRESENT-TIME
- CLOCKER-RUNNING
- C-TABLE
- EVIDENCE-FOUND
- C-INTS
- CLOCK-WAIT
- DINNER-SAT
- TOO-SLIPPERY
- DRAGON-EYE-COLOR
- THATS-INTERESTING
- ANCIENT-SECRETS
- STAIRS-DOWN-LEFT
- P-MOBY-FLAG
- NOW-PRSI
- P-PROMPT
- QWP1-TABLE
- MASS-COUNTER
- JACK-THINKS-GLADYS
- P-NUMBER
- LIONEL-SPEAKS-COUNTER
- PRSI
- LONG-BLOND-HAIR
- P-VTBL
- CONFESSED
- P-END-ON-PREP
- P-MERGED
- AGAIN-DIR
- P-ADJN
- FRIEND-FOUND-PASSAGES
- P-GETFLAGS
- P-WON
- OOPS-PRINT
- P-PRSA-WORD
- P-AADJ
- P-SYNTAX
- P-GWIMBIT
- P-XADJN
- P-DIRECTION
- KEEP-WAITING
- P-ANAM
- P-WALK-DIR
- P-XNAM
- P-NAM
- P-SLOCBITS \ No newline at end of file
+
+P?ACTION P?DESCFCN P?IN P?NW P?STATION P?UP
+P?ADJECTIVE P?DOWN P?LDESC P?OUT P?SW P?WEST
+P?CAPACITY P?EAST P?LINE P?SE P?SYNONYM
+P?CHARACTER P?GENERIC P?NE P?SIZE P?TEXT
+P?CORRIDOR P?GLOBAL P?NORTH P?SOUTH P?THINGS
+
+Flags: 28
+
+CONTBIT LOCKED OPENBIT SECRETBIT TOUCHBIT WEAPONBIT
+DOORBIT MUNGBIT PERSONBIT SEENBIT TRANSBIT WEARBIT
+FEMALE NARTICLEBIT READBIT SURFACEBIT TRYTAKEBIT WORNBIT
+INVISIBLE NDESCBIT RMUNGBIT TAKEBIT VEHBIT
+LIGHTBIT ONBIT SEARCHBIT TOOLBIT VOWELBIT
diff --git a/m5.serial b/m5.serial
new file mode 100644
index 0000000..3fdcd7c
--- /dev/null
+++ b/m5.serial
@@ -0,0 +1 @@
+67
diff --git a/m5.zap b/m5.zap
new file mode 100644
index 0000000..bf5ea6a
--- /dev/null
+++ b/m5.zap
@@ -0,0 +1,53 @@
+ .TIME
+; Low core locations
+%ZVERSION:: .BYTE 0
+ .BYTE FLAGS
+%ZORKID:: ZORKID
+%ENDLOD:: ENDLOD
+%START:: START
+%VOCAB:: VOCAB
+%OBJECT:: OBJECT
+%GLOBAL:: GLOBAL
+%PURBOT:: IMPURE
+%FLAGS:: .WORD 64
+%SERIAL:: .WORD 0
+%SERI1:: .WORD 0
+%SERI2:: .WORD 0
+%FWORDS:: WORDS
+%PLENTH:: .WORD 0
+%PCHKSM:: .WORD 0
+%INTWRD:: .WORD 0
+%SCRWRD:: .WORD 0
+ .WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+.WORD 0
+ .INSERT "SS:<MOONMIST>M5FREQ" ;Frequent word table
+ .INSERT "SS:<MOONMIST>M5DAT" ; Data file
+ .INSERT "SS:<MOONMIST>M5PUR"
+ .INSERT "SS:<MOONMIST>MISC"
+ .INSERT "SS:<MOONMIST>PARSER"
+ .INSERT "SS:<MOONMIST>VERBS"
+ .INSERT "SS:<MOONMIST>GOAL"
+ .INSERT "SS:<MOONMIST>PEOPLE"
+ .INSERT "SS:<MOONMIST>CASTLE"
+ .INSERT "SS:<MOONMIST>TOWER"
+ .INSERT "SS:<MOONMIST>THINGS"
+ .INSERT "SS:<MOONMIST>PLACES"
+ .INSERT "SS:<MOONMIST>GLOBAL"
+ .INSERT "SS:<MOONMIST>COLORS"
+
+ .INSERT "SS:<MOONMIST>M5STR"
+
+ .END
diff --git a/m5.zil b/m5.zil
new file mode 100644
index 0000000..0e4773b
--- /dev/null
+++ b/m5.zil
@@ -0,0 +1,48 @@
+"COMPILE/LOAD FILE for MOONMIST
+Copyright (C) 1986 Infocom, Inc. All rights reserved."
+
+<SETG ZDEBUGGING? <>>
+<DEFINE DEBUG-CODE ('X "OPTIONAL" ('Y T))
+ <COND (,ZDEBUGGING? .X) (ELSE .Y)>>
+
+<SETG NEW-VOC? T>
+<FREQUENT-WORDS?>
+<VERSION ZIP TIME>
+
+<COND (<GASSIGNED? PREDGEN>
+ <PRINC "Compiling">
+ <ID 0>)
+ (T <PRINC "Loading">)>
+
+<PRINC " MOONMIST: interactive fiction from Infocom!
+">
+
+ON!-INITIAL "for DEBUGR"
+OFF!-INITIAL
+ENABLE!-INITIAL
+DISABLE!-INITIAL
+
+<SET REDEFINE T>
+
+<OR <GASSIGNED? ZILCH>
+ <SETG WBREAKS <STRING !\" !,WBREAKS>>>
+
+<DIRECTIONS ;"Do not change the order of the first eight
+ without consulting Marc! -- per ENCHANTER"
+ NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
+
+<INSERT-FILE "MACROS">
+<INSERT-FILE "MISC">
+<INSERT-FILE "SYNTAX">
+<INSERT-FILE "PARSER">
+<INSERT-FILE "VERBS">
+<INSERT-FILE "GOAL">
+<INSERT-FILE "PEOPLE">
+<INSERT-FILE "CASTLE">
+<INSERT-FILE "TOWER">
+<INSERT-FILE "THINGS">
+<INSERT-FILE "PLACES">
+<INSERT-FILE "GLOBAL">
+<INSERT-FILE "COLORS">
+
+<PROPDEF SIZE 5>
diff --git a/m5.zip b/m5.zip
index 0948e50..127ff94 100644
--- a/m5.zip
+++ b/m5.zip
Binary files differ
diff --git a/m5dat.zap b/m5dat.zap
new file mode 100644
index 0000000..74dc6e9
--- /dev/null
+++ b/m5dat.zap
@@ -0,0 +1,16526 @@
+
+
+; TOP LEVEL DEFINITIONS
+
+ TRUE-VALUE=1
+ FALSE-VALUE=0
+ FATAL-VALUE=2
+
+ O?ANY=1
+
+ PS?OBJECT=128
+ PS?VERB=64
+ PS?ADJECTIVE=32
+ PS?DIRECTION=16
+ PS?PREPOSITION=8
+ PS?BUZZ-WORD=4
+
+ P1?NONE=0
+ P1?OBJECT=0
+ P1?VERB=1
+ P1?ADJECTIVE=2
+ P1?DIRECTION=3
+
+
+; OBJECT FLAGS ARE DEFINED HERE
+
+
+ TOOLBIT=4
+ FX?TOOLBIT=2048
+
+ MUNGBIT=5
+ FX?MUNGBIT=1024
+
+ INVISIBLE=6
+ FX?INVISIBLE=512
+
+ DOORBIT=7
+ FX?DOORBIT=256
+
+ LOCKED=8
+ FX?LOCKED=128
+
+ TRANSBIT=9
+ FX?TRANSBIT=64
+
+ ONBIT=10
+ FX?ONBIT=32
+
+ VOWELBIT=11
+ FX?VOWELBIT=16
+
+ TRYTAKEBIT=12
+ FX?TRYTAKEBIT=8
+
+ SECRETBIT=13
+ FX?SECRETBIT=4
+
+ OPENBIT=14
+ FX?OPENBIT=2
+
+ FEMALE=15
+ FX?FEMALE=1
+
+ TOUCHBIT=16
+ FX?TOUCHBIT=32768
+
+ SEENBIT=17
+ FX?SEENBIT=16384
+
+ SEARCHBIT=18
+ FX?SEARCHBIT=8192
+
+ NDESCBIT=19
+ FX?NDESCBIT=4096
+
+ NARTICLEBIT=20
+ FX?NARTICLEBIT=2048
+
+ WORNBIT=21
+ FX?WORNBIT=1024
+
+ READBIT=22
+ FX?READBIT=512
+
+ SURFACEBIT=23
+ FX?SURFACEBIT=256
+
+ LIGHTBIT=24
+ FX?LIGHTBIT=128
+
+ WEAPONBIT=25
+ FX?WEAPONBIT=64
+
+ TAKEBIT=26
+ FX?TAKEBIT=32
+
+ CONTBIT=27
+ FX?CONTBIT=16
+
+ VEHBIT=28
+ FX?VEHBIT=8
+
+ WEARBIT=29
+ FX?WEARBIT=4
+
+ RMUNGBIT=30
+ FX?RMUNGBIT=2
+
+ PERSONBIT=31
+ FX?PERSONBIT=1
+
+; ACTION IDENTIFIERS ARE ASSIGNED HERE
+
+ V?$VERIFY=0
+ V?AIM=1
+ V?SSHOW=2
+ V?SAIM=3
+ V?ANALYZE=4
+ V?LOOK-UNDER=5
+ V?LOOK-UP=6
+ V?SANALYZE=7
+ V?ANSWER=8
+ V?REPLY=9
+ V?ARREST=10
+ V?ASK=11
+ V?ASK-CONTEXT-ABOUT=12
+ V?ASK-CONTEXT-FOR=13
+ V?ASK-ABOUT=14
+ V?ASK-FOR=15
+ V?ATTACK=16
+ V?BOW=17
+ V?BRIEF=18
+ V?BRUSH=19
+ V?BOARD=20
+ V?$CALL=21
+ V?CHANGE=22
+ V?WEAR=23
+ V?DRESS=24
+ V?CLIMB-DOWN=25
+ V?DISEMBARK=26
+ V?CLIMB-ON=27
+ V?THROUGH=28
+ V?CLIMB-UP=29
+ V?CLOSE=30
+ V?COMPARE=31
+ V?CONFRONT=32
+ V?MUNG=33
+ V?DANCE=34
+ V?DESCRIBE=35
+ V?EAT=36
+ V?DRINK=37
+ V?DROP=38
+ V?PUT=39
+ V?PUT-IN=40
+ V?THROW-THROUGH=41
+ V?EMPTY=42
+ V?EXAMINE=43
+ V?READ=44
+ V?TALK-ABOUT=45
+ V?STELL-ABOUT=46
+ V?TELL-ABOUT=47
+ V?FAINT=48
+ V?RUB=49
+ V?FILL=50
+ V?FIND=51
+ V?SSEARCH-FOR=52
+ V?FIX=53
+ V?FOLLOW=54
+ V?FORGIVE=55
+ V?TAKE=56
+ V?TAKE-TO=57
+ V?STAND=58
+ V?GIVE=59
+ V?SGIVE=60
+ V?QUIT=61
+ V?HELLO=62
+ V?HELP=63
+ V?PUT-UNDER=64
+ V?HOLD-UP=65
+ V?INVENTORY=66
+ V?LEAP=67
+ V?KILL=68
+ V?KISS=69
+ V?KNOCK=70
+ V?PUSH=71
+ V?SLAP=72
+ V?LEAVE=73
+ V?LIE=74
+ V?LAMP-ON=75
+ V?LISTEN=76
+ V?LOCK=77
+ V?LOOK=78
+ V?CHASTISE=79
+ V?LOOK-BEHIND=80
+ V?LOOK-DOWN=81
+ V?LOOK-INSIDE=82
+ V?SEARCH-FOR=83
+ V?LOOK-ON=84
+ V?LOOK-OUTSIDE=85
+ V?LOOK-THROUGH=86
+ V?MEET=87
+ V?MOVE=88
+ V?MOVE-DIR=89
+ V?NO=90
+ V?NOD=91
+ V?OPEN=92
+ V?OPEN-WITH=93
+ V?PLAY=94
+ V?POUR=95
+ V?PRAY=96
+ V?SREAD=97
+ V?REMOVE=98
+ V?RESTART=99
+ V?RESTORE=100
+ V?RING=101
+ V?SSHOOT=102
+ V?SAVE=103
+ V?SAY=104
+ V?TELL=105
+ V?SCORE=106
+ V?SCRIPT=107
+ V?SEARCH=108
+ V?SHAKE=109
+ V?SHOOT=110
+ V?SHOW=111
+ V?LAMP-OFF=112
+ V?SIGN=113
+ V?SIT=114
+ V?SIT-AT=115
+ V?SMELL=116
+ V?SMILE=117
+ V?SORRY=118
+ V?SOUND=119
+ V?STOP=120
+ V?SUPER-BRIEF=121
+ V?SWIM=122
+ V?TAKE-OFF=123
+ V?THANKS=124
+ V?THROW-AT=125
+ V?TIME=126
+ V?TURN=127
+ V?UNDRESS=128
+ V?UNLOCK=129
+ V?UNSCRIPT=130
+ V?USE=131
+ V?VERBOSE=132
+ V?VERSION=133
+ V?WAIT-FOR=134
+ V?WAIT-UNTIL=135
+ V?ALARM=136
+ V?WALK=137
+ V?WALK-AROUND=138
+ V?WALK-TO=139
+ V?DRIVE-TO=140
+ V?RUN-OVER=141
+ V?YELL=142
+ V?YES=143
+
+; PROPERTIES ARE DEFINED HERE
+
+ P?NORTH=31
+ P?NE=30
+ P?EAST=29
+ P?SE=28
+ P?SOUTH=27
+ P?SW=26
+ P?WEST=25
+ P?NW=24
+ P?UP=23
+ P?DOWN=22
+ P?IN=21
+ P?OUT=20
+ P?ACTION=19
+ P?SYNONYM=18
+ P?ADJECTIVE=17
+ P?LDESC=16
+ P?LINE=15
+ P?CHARACTER=14
+ P?DESCFCN=13
+ P?TEXT=12
+ P?CAPACITY=11
+ P?SIZE=10
+ P?GENERIC=9
+ P?STATION=8
+ P?GLOBAL=7
+ P?THINGS=6
+ P?CORRIDOR=5
+
+; ADJECTIVES ARE DEFINED HERE
+
+ A?NORTH=255
+ A?EAST=254
+ A?SOUTH=253
+ A?WEST=252
+ A?NE=251
+ A?NW=250
+ A?SE=249
+ A?SW=248
+ A?F.N=247
+ A?L.N=246
+ A?MS=245
+ A?MISS=244
+ A?TAMARA=243
+ A?TAMMY=242
+ A?LYND=241
+ A?WOMAN=240
+ A?TAM'S=239
+ A?HER=238
+ A?TALL=237
+ A?MY=236
+ A?LORD=235
+ A?JACK=234
+ A?TRESYLLIAN=233
+ A?MAN=232
+ A?SECRET=231
+ A?TAPE=230
+ A?JACK'S=229
+ A?HIS=228
+ A?BLOND=227
+ A?BLONDE=226
+ A?DEIRDRE=225
+ A?DEE=224
+ A?HALLAM=223
+ A?IRIS=222
+ A?VANE=221
+ A?MR=220
+ A?MISTER=219
+ A?IAN=218
+ A?FORDYCE=217
+ A?OFFICE=216
+ A?DR=215
+ A?DOCTOR=214
+ A?NICHOLAS=213
+ A?WENDISH=212
+ A?DOC'S=211
+ A?NOTE=210
+ A?LAB=209
+ A?LABORATORY=208
+ A?ART=207
+ A?MONTAGUE=206
+ A?HYDE=205
+ A?DEALER=204
+ A?MRS=203
+ A?VIVIEN=202
+ A?VIV=201
+ A?PENTREATH=200
+ A?VIV'S=199
+ A?LIONEL=198
+ A?UNCLE=197
+ A?WHITE=196
+ A?BOLITHO=195
+ A?BUTLER=194
+ A?UPSTAIRS=193
+ A?GLADYS=192
+ A?MAID=191
+ A?OLD=190
+ A?NEW=189
+ A?DEE'S=188
+ A?CASTLE=187
+ A?GHOST=186
+ A?G'S=185
+ A?PALE=184
+ A?IAN'S=183
+ A?HYDE'S=182
+ A?IRIS'S=181
+ A?B'S=180
+ A?LI'S=179
+ A?MAID'S=178
+ A?WORM'S=177
+ A?BUF'S=176
+ A?RH'S=175
+ A?STONE=174
+ A?TOWER=173
+ A?FULL=172
+ A?BLUE=171
+ A?SPORTS=170
+ A?LITTLE=169
+ A?F.C=168
+ A?LOUD=167
+ A?HIDDEN=166
+ A?MOTOR=165
+ A?DRIVE=164
+ A?CAR=163
+ A?DRAGON=162
+ A?WYVERN=161
+ A?ORNAMENT=160
+ A?RED=159
+ A?GREEN=158
+ A?DOOR=157
+ A?FRONT=156
+ A?IRON=155
+ A?COURT=154
+ A?HEDGE=153
+ A?FOYER=152
+ A?DOUBLE=151
+ A?BRONZE=150
+ A?UMBRELLA=149
+ A?COAT=148
+ A?PASSAGE=147
+ A?DRAWING=146
+ A?OIL=145
+ A?ARM=144
+ A?SATIN=143
+ A?GREAT=142
+ A?WOOD=141
+ A?SEAT=140
+ A?SITTING=139
+ A?SLIDING=138
+ A?WINDOW=137
+ A?OTHER=136
+ A?WRITING=135
+ A?GROUND=134
+ A?DINING=133
+ A?PORCEL=132
+ A?SMALL=131
+ A?CLOCKWORK=130
+ A?SIDE=129
+ A?PUNCH=128
+ A?COVERED=127
+ A?KITCHEN=126
+ A?BRASS=125
+ A?GALLERY=124
+ A?FIRE=123
+ A?NIGHT=122
+ A?DRESSING=121
+ A?ROLL-TOP=120
+ A?CLOTHES=119
+ A?LOOKING=118
+ A?CHEVAL=117
+ A?BED=116
+ A?ROOM=115
+ A?BEDROOM=114
+ A?SPARE=113
+ A?TABLE=112
+ A?WALL=111
+ A?FULL-LENGTH=110
+ A?WING=109
+ A?BATH=108
+ A?BATHROOM=107
+ A?LOVE=106
+ A?ORNATE=105
+ A?CANDLE=104
+ A?MEDICAL=103
+ A?WATERCOLOR=102
+ A?SKETCH=101
+ A?PICTURE=100
+ A?WOODEN=99
+ A?PAINT=98
+ A?SCULPT=97
+ A?CHAISE=96
+ A?RECLINE=95
+ A?MORRIS=94
+ A?JADE=93
+ A?OYSTER=92
+ A?PAPIER=91
+ A?MACHE=90
+ A?WITCH=89
+ A?WINE=88
+ A?LOOSE=87
+ A?BRICK=86
+ A?ANCIENT=85
+ A?PRIEST=84
+ A?FIRST=83
+ A?FAMILY=82
+ A?MASTER=81
+ A?COLOR=80
+ A?OVERST=79
+ A?STUDY=78
+ A?HUNTING=77
+ A?LIBRARY=76
+ A?BOOK=75
+ A?HISTORY=74
+ A?OLD-FASHION=73
+ A?INK=72
+ A?HAND=71
+ A?JEWELRY=70
+ A?SECOND=69
+ A?LUMBER=68
+ A?BIRD=67
+ A?HOBBY=66
+ A?SUNKEN=65
+ A?PEEP=64
+ A?CHAPEL=63
+ A?STAINED=62
+ A?GLASS=61
+ A?GAME=60
+ A?GAME-ROOM=59
+ A?BILLIARD=58
+ A?CARD=57
+ A?CUE=56
+ A?GUN=55
+ A?ASH=54
+ A?STUFFED=53
+ A?BUFFALO=52
+ A?RHINO=51
+ A?YELLOW=50
+ A?THIRD=49
+ A?TOP=48
+ A?STORY=47
+ A?STOREY=46
+ A?FIGHTING=45
+ A?OBSERVE=44
+ A?DINNER=43
+ A?NARROW=42
+ A?DEAD=41
+ A?TOURIST=40
+ A?BLOW=39
+ A?AEROSOL=38
+ A?DOG=37
+ A?TINY=36
+ A?MISSING=35
+ A?CONTACT=34
+ A?PLASTIC=33
+ A?LENS=32
+ A?INT.NUM=31
+ A?THIS=30
+ A?TWEED=29
+ A?WOOLEN=28
+ A?WOOL=27
+ A?EXERCISE=26
+ A?FORMAL=25
+ A?FLOOD=24
+ A?MOON=23
+ A?HIDING=22
+ A?VALUABLE=21
+ A?FAVORITE=20
+ A?WAR=19
+ A?FOSSIL=18
+ A?BLACK=17
+ A?PEARL=16
+ A?1ST=15
+ A?CLUE=14
+ A?2ND=13
+ A?3RD=12
+ A?FOURTH=11
+ A?4TH=10
+ A?LAST=9
+
+; BUZZ WORDS ARE DEFINED HERE
+
+ B?A=255
+ B?AN=254
+ B?THE=253
+ B?AND=252
+ B?OF=251
+ B?THEN=250
+ B?PERIOD=249
+ B?COMMA=248
+ B?QUOTE=247
+ B?!=246
+ B??=245
+ B?APOSTROPHE=244
+ B?NOW=243
+ B?SOON=242
+ B?THERE=241
+ B?PLEASE=240
+ B?BACK=239
+ B?ANYWAY=238
+ B?OH=237
+ B?ALL=236
+ B?SOME=235
+ B?BUT=234
+ B?EXCEPT=233
+ B?WHAT=232
+ B?WHEN=231
+ B?WHERE=230
+ B?WHO=229
+ B?WHY=228
+ B?(SOME=227
+ B?AREN=226
+ B?COULDN=225
+ B?DIDN=224
+ B?HASN=223
+ B?HAVEN=222
+ B?HE=221
+ B?ISN=220
+ B?LET=219
+ B?SHE=218
+ B?SHOULD=217
+ B?THAT=216
+ B?THEY=215
+ B?WASN=214
+ B?WEREN=213
+ B?WON=212
+ B?WOULDN=211
+ B?T=210
+ B?LL=209
+ B?M=208
+ B?VE=207
+ B?RE=206
+ B?AM=205
+ B?ARE=204
+ B?CAN=203
+ B?COULD=202
+ B?DID=201
+ B?DO=200
+ B?HAS=199
+ B?HAVE=198
+ B?HOW=197
+ B?IS=196
+ B?LIKE=195
+ B?MAY=194
+ B?SHALL=193
+ B?WANT=192
+ B?WAS=191
+ B?WERE=190
+ B?WHICH=189
+ B?WOULD=188
+ B?ZERO=187
+ B?ONE=186
+ B?TWO=185
+ B?THREE=184
+ B?FOUR=183
+ B?FIVE=182
+ B?SIX=181
+ B?SEVEN=180
+ B?EIGHT=179
+ B?NINE=178
+ B?TEN=177
+ B?ELEVEN=176
+ B?TWELVE=175
+ B?TWENTY=174
+ B?THIRTY=173
+ B?FORTY=172
+ B?FIFTY=171
+ B?SIXTY=170
+ B?HUNDRED=169
+ B?THOUSAND=168
+ B?ASSHOLE=167
+ B?BASTARD=166
+ B?BITCH=165
+ B?COCK=164
+ B?COCKSUCKER=163
+ B?CRAP=162
+ B?CUNT=161
+ B?CURSE=160
+ B?CUSS=159
+ B?DAMN=158
+ B?DAMNED=157
+ B?DARN=156
+ B?FUCK=155
+ B?FUCKED=154
+ B?FUCKING=153
+ B?FUDGE=152
+ B?GODDAMN=151
+ B?HELL=150
+ B?PEE=149
+ B?PISS=148
+ B?SCREW=147
+ B?SHIT=146
+ B?SHITHEAD=145
+ B?SUCK=144
+ B?SUCKS=143
+ B?AGAIN=142
+ B?G=141
+ B?OOPS=140
+ B?JUNIOR=139
+ B?JR=138
+ B?SENIOR=137
+ B?SR=136
+ B?DAME=135
+ B?MADAME=134
+
+; PREPOSITIONS ARE DEFINED HERE
+
+ PR?AT=255
+ PR?TO=254
+ PR?WITH=253
+ PR?FOR=252
+ PR?OUT=251
+ PR?UNDER=250
+ PR?IN=249
+ PR?ON=248
+ PR?ABOUT=247
+ PR?OFF=246
+ PR?UP=245
+ PR?DOWN=244
+ PR?OVER=243
+ PR?THROUGH=242
+ PR?FROM=241
+ PR?RID=240
+ PR?ACROSS=239
+ PR?AROUND=238
+ PR?BEHIND=237
+ PR?AWAY=236
+ PR?BESIDE=235
+ PR?AGAINST=234
+ PR?UNTIL=233
+ PR?AFTER=232
+
+; DIRECTIONS ARE DEFINED HERE
+
+
+; ACTIONS ARE DEFINED HERE
+
+ ACT?SHUT=255
+ ACT?I=254
+ ACT?PULL=253
+ ACT?SUPERBRIEF=252
+ ACT?VERBOSE=251
+ ACT?REQUEST=250
+ ACT?QUIT=249
+ ACT?FIND=248
+ ACT?YES=247
+ ACT?STOP=246
+ ACT?UNLOCK=245
+ ACT?READ=244
+ ACT?CONFRONT=243
+ ACT?SAY=242
+ ACT?JUMP=241
+ ACT?POUR=240
+ ACT?WAIT=239
+ ACT?TAKE=238
+ ACT?NO=237
+ ACT?CALL=236
+ ACT?FOLLOW=235
+ ACT?COMPARE=234
+ ACT?HEAD=233
+ ACT?DINE=232
+ ACT?LIGHT=231
+ ACT?LIE=230
+ ACT?MOVE=229
+ ACT?ARREST=228
+ ACT?PLAY=227
+ ACT?OPEN=226
+ ACT?KNOCK=225
+ ACT?WRITE=224
+ ACT?PICK=223
+ ACT?PEEP=222
+ ACT?MEET=221
+ ACT?PRAY=220
+ ACT?STAND=219
+ ACT?UNDRESS=218
+ ACT?LISTEN=217
+ ACT?SHOW=216
+ ACT?NOD=215
+ ACT?HELP=214
+ ACT?SAVE=213
+ ACT?TELL=212
+ ACT?THROW=211
+ ACT?DESCRIBE=210
+ ACT?DRESS=209
+ ACT?FIDDLE=208
+ ACT?USE=207
+ ACT?HIDE=206
+ ACT?SHAKE=205
+ ACT?ATTACK=204
+ ACT?DAMAGE=203
+ ACT?ENTER=202
+ ACT?THANKS=201
+ ACT?PLACE=200
+ ACT?SEARCH=199
+ ACT?WEAR=198
+ ACT?SWITCH=197
+ ACT?SWIM=196
+ ACT?EXPLAIN=195
+ ACT?HOLD=194
+ ACT?UNSCRIPT=193
+ ACT?HANG=192
+ ACT?RING=191
+ ACT?PUSH=190
+ ACT?RUB=189
+ ACT?SIT=188
+ ACT?SOUND=187
+ ACT?CHANGE=186
+ ACT?SCORE=185
+ ACT?PUNCH=184
+ ACT?FORGIVE=183
+ ACT?DANCE=182
+ ACT?SIGN=181
+ ACT?EMPTY=180
+ ACT?CHECK=179
+ ACT?BOW=178
+ ACT?DROP=177
+ ACT?TIME=176
+ ACT?LEAVE=175
+ ACT?TRY=174
+ ACT?SCRIPT=173
+ ACT?$VERIFY=172
+ ACT?RESTART=171
+ ACT?SMELL=170
+ ACT?BRIEF=169
+ ACT?GET=168
+ ACT?CONSOLE=167
+ ACT?SLEEP=166
+ ACT?GIVE=165
+ ACT?SMILE=164
+ ACT?WAKE=163
+ ACT?DRINK=162
+ ACT?REMOVE=161
+ ACT?ANSWER=160
+ ACT?$CALL=159
+ ACT?YELL=158
+ ACT?SORRY=157
+ ACT?LOCK=156
+ ACT?SHARE=155
+ ACT?POINT=154
+ ACT?MURDER=153
+ ACT?START=152
+ ACT?CLEAN=151
+ ACT?RESTORE=150
+ ACT?CLOSE=149
+ ACT?FIX=148
+ ACT?SLIDE=147
+ ACT?EXAMINE=146
+ ACT?RELEASE=145
+ ACT?EAT=144
+ ACT?FIRE=143
+ ACT?FILL=142
+ ACT?CLIMB=141
+ ACT?WATCH=140
+ ACT?ASK=139
+ ACT?HELLO=138
+
+; USER DEFINED CONSTANTS ARE INITIALIZED HERE
+
+ SOG=16
+ CC-CLAUSE=2
+ ATTENTION=7
+ SIR=32
+ DEXITSTR=1
+ XEQUAL?=4
+ BED-LINE-C=2
+ ATTENTION-SPAN=6
+ P-ITBLLEN=9
+ WHO-CARES-LENGTH=4
+ GOAL-F=0
+ RHINO-HEAD-C=15
+ P-SYNLEN=8
+ P-SRCTOP=0
+ C-INTLEN=6
+ BUTLER-3-R=6
+ P-MATCHLEN=0
+ O-START=1
+ OFFICER-1-R=5
+ DEXITOBJ=1
+ P-P1OFF=5
+ O-PTR=0
+ O-LENGTH=2
+ INIT-LIONEL-SPEAKS-COUNTER=6
+ MAIN-LINE-C=1
+ C-TABLELEN=138
+ P-NC2=8
+ P-NC1=6
+ CC-IBEG=3
+ JUNIOR-C=8
+ BUFFALO-HEAD-C=14
+ LIONEL-TIME=510
+ MAX-VARS=4
+ P-WORDLEN=4
+ P-VERBN=1
+ SERIAL=0
+ P-P1BITS=3
+ FEXIT=3
+ P-SPREP1=1
+ BUTLER-C=8
+ P-PREP1=2
+ BED-TIME=720
+ M-BEG=1
+ FRIEND-C=1
+ BUTLER-2-R=3
+ PASS-LINE-C=4
+ XDIV=3
+ M-FATAL=2
+ M-WINNER=8
+ XGRTR?=5
+ NEXITSTR=0
+ DRAGON-C=13
+ NEXIT=2
+ P-SLOC2=6
+ CC-BEG=0
+ SC=64
+ P-PREP1N=3
+ P-PSOFF=4
+ G-IMPATIENT=3
+ XLESS?=6
+ GHOST-OLD-C=16
+ SEARCH-TIME=600
+ P-VERB=0
+ CHARACTER-MAX=8
+ PLAYER-C=0
+ GOAL-QUEUED=4
+ M-ENTER=2
+ M-OTHER=69
+ DEXIT=5
+ SHAVE=2
+ P-SRCBOT=2
+ SENIOR-C=9
+ M-OBJDESC=5
+ SMANY=4
+ STAKE=8
+ P-SPREP2=2
+ XSUB=1
+ PAINTER-C=3
+ XADD=0
+ CEXIT=4
+ P-LEXSTART=1
+ M-LOOK=3
+ BUTLER-1-R=2
+ UEXIT=1
+ DOCTOR-C=4
+ GHOST-NEW-C=10
+ O-END=3
+ DEB-C=7
+ P-LEXELEN=2
+ GOAL-FUNCTION=5
+ GOAL-I=2
+ P-LEXWORDS=1
+ GOAL-I-MULTIPLIER=8
+ P-ALL=1
+ XMUL=2
+ P-SFWIM1=3
+ DINNER-FOR=8
+ M-EXIT=9
+ P-INHIBIT=4
+ CEXITFLAG=1
+ G-DEBUG=4
+ P-PROMPT-START=4
+ LORD-C=2
+ M-FLASH=4
+ CC-END=1
+ FEXITFCN=0
+ P-SBITS=0
+ GOAL-ENABLE=3
+ CEXITSTR=1
+ P-SRCALL=1
+ TOWER-LINE-C=3
+ LOVER-C=9
+ OFFICER-C=5
+ P-SLOC1=5
+ M-END=6
+ LOW-DIRECTION=20
+ P-PREP2=4
+ G-ENROUTE=2
+ P-SONUMS=3
+ OFFICER-2-R=8
+ C-TICK=1
+ P-NC2L=9
+ P-NC1L=7
+ M-CONT=7
+ P-ONE=2
+ G-REACHED=1
+ DEALER-C=6
+ BUTLER-4-R=9
+ P-SACTION=7
+ P-SFWIM2=4
+ C-ENABLED?=0
+ REXIT=0
+ DINNER-TIME=480
+ CC-IEND=4
+ SH=128
+ C-RTN=2
+ GOAL-S=1
+ COUSIN-C=11
+ MAID-C=12
+
+; THE GLOBAL VARIABLES ARE ALL LOCATED HERE
+
+GLOBAL::.TABLE
+ .GVAR HERE=DRIVEWAY
+ .GVAR SCORE=19
+ .GVAR MOVES=0
+ .GVAR YAWNS=T?305,TABLE
+ .GVAR P-END-ON-PREP=0,FLAG
+ .GVAR SUFFIX=T?413,TABLE
+ .GVAR P-PHR=0,NUMBER
+ .GVAR RHYMES-WITH-RICH=STR?176,STRING
+ .GVAR GLASSES-FOR=STR?189,STRING
+ .GVAR PASSAGE-EAST-WEST=STR?273,STRING
+ .GVAR TRESYLLIAN=STR?178,STRING
+ .GVAR CONFESSED=0,OBJECT
+ .GVAR TOUR-PATH=PT?806,TABLE
+ .GVAR P-BUTS=T?2004,TABLE
+ .GVAR CASTLE-IS-SOUTH=STR?136,STRING
+ .GVAR CLASP-MUNGED=STR?276,STRING
+ .GVAR NO-CHANGING=STR?138,STRING
+ .GVAR TOUR-INDEX=0,NUMBER
+ .GVAR FOUND-PASSAGES=T?707,TABLE
+ .GVAR MIDDLE-WORD=0
+ .GVAR P-HIM-OBJECT=LORD,OBJECT
+ .GVAR P-ACLAUSE=0
+ .GVAR QWP2-TABLE=PT?204,TABLE
+ .GVAR WRONG-OUTFIT=0,NUMBER
+ .GVAR INTO-DARKNESS=STR?271,STRING
+ .GVAR P-SLOCBITS=0
+ .GVAR FAMOUS-YOUNG-DETECTIVE=STR?86,STRING
+ .GVAR PLAYER-OBSTACLES=T?106,TABLE
+ .GVAR GHOST-CACKLES=STR?195,STRING
+ .GVAR TIMER-PREVENTS-IT=STR?244,STRING
+ .GVAR TOLD-ABOUT-EVID=T?907,TABLE
+ .GVAR ARRESTED-THE-VILLAIN=STR?38,STRING
+ .GVAR GOAL-PERSON=0,OBJECT
+ .GVAR CLOCK-WAIT=0,FLAG
+ .GVAR P-NAMW=T?1404,TABLE
+ .GVAR DINNER-SAT=0,FLAG
+ .GVAR P-OTBL=T?904,TABLE
+ .GVAR P-NAM=0
+ .GVAR WHO-CARES-VERB=PT?305,TABLE
+ .GVAR C-TABLE=T?202,TABLE
+ .GVAR GENDER-KNOWN=0,FLAG
+ .GVAR P-XNAM=0
+ .GVAR LIONEL-SPEAKS-COUNTER=6,NUMBER
+ .GVAR P-MOBY-FOUND=0,OBJECT
+ .GVAR QUESTIONS=T?107,TABLE
+ .GVAR STAIRS-UP-RIGHT=STR?252,STRING
+ .GVAR QWP1-TABLE=PT?104,TABLE
+ .GVAR OOPS-TABLE=T?704,TABLE
+ .GVAR P-WALK-DIR=0
+ .GVAR P-ANAM=0
+ .GVAR LAST-NAME=T?313,TABLE
+ .GVAR LAST-PSEUDO-LOC=0,OBJECT
+ .GVAR TOUCHED-LDESCS=T?507,TABLE
+ .GVAR VARIATION=0,NUMBER
+ .GVAR P-CONT=0,NUMBER
+ .GVAR FOUND-IT-PERM=0,OBJECT
+ .GVAR NOW-PRSI=0,FLAG
+ .GVAR KEEP-WAITING=0
+ .GVAR OHERE=0,OBJECT
+ .GVAR P-PRSI=T?1904,TABLE
+ .GVAR OTHER-POSS-POS=0,NUMBER
+ .GVAR COLOR-LETTERS=PT?313,TABLE
+ .GVAR AGAIN-LEXV=T?204,TABLE
+ .GVAR VERBOSITY=1,NUMBER
+ .GVAR DARK-TURRETS=STR?223,STRING
+ .GVAR P-DIRECTION=0
+ .GVAR CLUE-LOC=0,OBJECT
+ .GVAR MASS-COUNTER=0,NUMBER
+ .GVAR YOU-DIDNT-SAY-W=STR?111,STRING
+ .GVAR LIONEL-FORCED=0,FLAG
+ .GVAR FOLLOW-LOC=T?407,TABLE
+ .GVAR RESERVE-INBUF=T?604,TABLE
+ .GVAR FUMBLE-NUMBER=7,NUMBER
+ .GVAR SHOOTER=0,OBJECT
+ .GVAR POISON-DART=STR?274,STRING
+ .GVAR CAPTOR=0,OBJECT
+ .GVAR P-IT-WORDS=T?102,TABLE
+ .GVAR BUTLER-HINTS-COUNTER=0,NUMBER
+ .GVAR FOUND-IT=0,OBJECT
+ .GVAR LIT=DRIVEWAY,OBJECT
+ .GVAR WING-STAIRS=PT?112,TABLE
+ .GVAR DRAGON-EYE-COLOR=0,NUMBER
+ .GVAR YES-LEXV=T?205,TABLE
+ .GVAR P-VTBL=T?1004,TABLE
+ .GVAR P-XADJN=0
+ .GVAR WASHED=0,FLAG
+ .GVAR P-ADJW=T?1504,TABLE
+ .GVAR YES-INBUF=T?105,TABLE
+ .GVAR PASS-LINE=PT?406,TABLE
+ .GVAR RESERVE-LEXV=T?304,TABLE
+ .GVAR P-MOBY-FLAG=0,FLAG
+ .GVAR P-ADJ=0,NUMBER
+ .GVAR JACK-THINKS-GLADYS=STR?180,STRING
+ .GVAR P-LEN=0,NUMBER
+ .GVAR AHHH=STR?89,STRING
+ .GVAR FOUND-COSTUME=T?607,TABLE
+ .GVAR C-INTS=66,NUMBER
+ .GVAR P-LEXV=T?104,TABLE
+ .GVAR P-CCTBL=T?1304,TABLE
+ .GVAR STAIRS-DOWN-LEFT=STR?253,STRING
+ .GVAR NOW-WEARING=TWEED-OUTFIT,OBJECT
+ .GVAR NOTHING-NEW=STR?279,STRING
+ .GVAR NOT-ENOUGH-ROOM=STR?123,STRING
+ .GVAR TOWER-LINE=PT?306,TABLE
+ .GVAR CHAR-ROOM-TABLE=PT?407,TABLE
+ .GVAR COLOR-WORDS=PT?113,TABLE
+ .GVAR FIRST-NAME=T?213,TABLE
+ .GVAR INTRODUCES=STR?230,STRING
+ .GVAR BRICKS-DOWN=0,FLAG
+ .GVAR P-TIME=0,FLAG
+ .GVAR BUTLER-GHOST-STORY-TOLD=0,FLAG
+ .GVAR P-OFW=T?1604,TABLE
+ .GVAR LONG-BLOND-HAIR=STR?196,STRING
+ .GVAR DIR-STRINGS=PT?606,TABLE
+ .GVAR PRSO=0,OBJECT
+ .GVAR FOUND-LOC=0,OBJECT
+ .GVAR TRAILS-ALONG=PT?105,TABLE
+ .GVAR TREASURE-FOUND=0,OBJECT
+ .GVAR P-MERGED=0,FLAG
+ .GVAR P-GWIMBIT=0
+ .GVAR BUTLER-RANG-BELL?=0,FLAG
+ .GVAR QUESTION-WORD-TABLE=PT?304,TABLE
+ .GVAR BUTLER-DUTY=0
+ .GVAR SOMETHING=STR?16,STRING
+ .GVAR P-SYNTAX=0
+ .GVAR QUESTIONERS=PT?107,TABLE
+ .GVAR TOO-SLIPPERY=STR?226,STRING
+ .GVAR P-XADJ=0,NUMBER
+ .GVAR TOUR-FORCED=0,FLAG
+ .GVAR VILLAIN-KNOWN?=0,FLAG
+ .GVAR NEVER-NOTICED-HER=STR?219,STRING
+ .GVAR P-AADJ=0
+ .GVAR VILLAIN-PER=0,OBJECT
+ .GVAR PRSA=0,NUMBER
+ .GVAR P-PRSA-WORD=0
+ .GVAR PRESENT-TIME=420,NUMBER
+ .GVAR GOAL-TABLES=PT?706,TABLE
+ .GVAR ANCIENT-SECRETS=STR?222,STRING
+ .GVAR OU-STOP-SEARCHING=STR?127,STRING
+ .GVAR P-PRSO=T?1804,TABLE
+ .GVAR SEARCH-ROOMS=PT?906,TABLE
+ .GVAR P-AND=0,FLAG
+ .GVAR SHOT=T?1007,TABLE
+ .GVAR CHAR-POSS-TABLE=T?307,TABLE
+ .GVAR FAWNING=0,FLAG
+ .GVAR LDESC-STRINGS=PT?507,TABLE
+ .GVAR EVIDENCE-FOUND=0,OBJECT
+ .GVAR BEG-PARDON=STR?27,STRING
+ .GVAR LIONELS-VOICE=STR?160,STRING
+ .GVAR TOWER-STAIRS=PT?212,TABLE
+ .GVAR P-INBUF=T?404,TABLE
+ .GVAR OFFENDED=T?1204,TABLE
+ .GVAR LOVER-SAID=0,FLAG
+ .GVAR OOPS-PRINT=0
+ .GVAR P-MERGE=T?1704,TABLE
+ .GVAR DINING-DESC=STR?243,STRING
+ .GVAR P-WON=0
+ .GVAR COLOR-ADJS=PT?213,TABLE
+ .GVAR COLOR-FORCED=0,FLAG
+ .GVAR FOLLOWER=0,OBJECT
+ .GVAR QCONTEXT=0,OBJECT
+ .GVAR MASS-SAID=0,FLAG
+ .GVAR CLOCKER-RUNNING=0,NUMBER
+ .GVAR P-OVTBL=T?1104,TABLE
+ .GVAR P-ITBL=T?804,TABLE
+ .GVAR QUOTE-FLAG=0,FLAG
+ .GVAR TRANSFER-TABLE=PT?506,TABLE
+ .GVAR TITLE-WORD=0
+ .GVAR P-TABLE=0,TABLE
+ .GVAR P-GETFLAGS=0
+ .GVAR FRIEND-FOUND-PASSAGES=0
+ .GVAR WHO-CARES-TBL=PT?405,TABLE
+ .GVAR YUKS=T?505,TABLE
+ .GVAR AIMED-HERE=0,OBJECT
+ .GVAR IDENTIFIED-THE-GHOST=STR?39,STRING
+ .GVAR GUEST-TABLE=PT?307,TABLE
+ .GVAR P-OCL2=T?2204,TABLE
+ .GVAR TOLD-ABOUT-GHOST=T?807,TABLE
+ .GVAR OPRSO=0,OBJECT
+ .GVAR OOPS-INBUF=T?504,TABLE
+ .GVAR FUMBLE-PROB=8,NUMBER
+ .GVAR P-NUMBER=-1,NUMBER
+ .GVAR SECRET-TAM-LIB=STR?272,STRING
+ .GVAR P-OFLAG=0,FLAG
+ .GVAR CREEPIES=T?405,TABLE
+ .GVAR REMEMBER-NOT-DRESSED=STR?247,STRING
+ .GVAR WINNER=PLAYER,OBJECT
+ .GVAR P-ADJN=0
+ .GVAR AGAIN-DIR=0
+ .GVAR NUMBER-WORD-TABLE=PT?404,TABLE
+ .GVAR COR-4=PT?311,TABLE
+ .GVAR WHICH-DIR=STR?257,STRING
+ .GVAR AWAITING-REPLY=0,NUMBER
+ .GVAR MUSTACHE-STORY=STR?185,STRING
+ .GVAR P-IT-OBJECT=0,OBJECT
+ .GVAR HO-HUM=PT?205,TABLE
+ .GVAR COR-2=PT?211,TABLE
+ .GVAR P-OCL1=T?2104,TABLE
+ .GVAR COR-1=PT?111,TABLE
+ .GVAR PIANO-PIECES=PT?408,TABLE
+ .GVAR P-PROMPT=4,NUMBER
+ .GVAR THATS-INTERESTING=STR?221,STRING
+ .GVAR PRSI=0,OBJECT
+ .GVAR RESERVE-PTR=0,NUMBER
+ .GVAR NO-VIOLENCE=STR?112,STRING
+ .GVAR NAUGHTY-WORD-TABLE=PT?504,TABLE
+ .GVAR DISCOVERED-HERE=0,OBJECT
+ .GVAR HIDING-PLACE=0,OBJECT
+ .GVAR MAIN-LINE=PT?106,TABLE
+ .GVAR DINNER-SIT-COUNTER=0,NUMBER
+ .GVAR SEARCHER=0,OBJECT
+ .GVAR CHARACTER-TABLE=PT?207,TABLE
+ .GVAR QUESTION-WORD-COUNT=2,NUMBER
+ .GVAR CHAR-CLOSET-TABLE=T?207,TABLE
+ .GVAR WHITISH-GLIMPSE=STR?179,STRING
+ .GVAR I-ASSUME=STR?32,STRING
+ .GVAR BED-LINE=PT?206,TABLE
+ .GVAR PLAYER-RANG-BELL?=0,FLAG
+ .GVAR P-NCN=0,NUMBER
+ .GVAR TREASURE=0,OBJECT
+ .GVAR P-HER-OBJECT=FRIEND,OBJECT
+ .GVAR FOUND-FABRIC=STR?192,STRING
+ .GVAR FAVE-COLOR=T?113,TABLE
+ .GVAR MISSED-DINNER=0,FLAG
+ .GVAR QUITE-WELCOME=STR?134,STRING
+ .GVAR IM-SHOCKED=STR?220,STRING
+ .GVAR PREPOSITIONS=PRTBL,TABLE
+ .GVAR ACTIONS=ATBL,TABLE
+ .GVAR PREACTIONS=PATBL,TABLE
+ .GVAR VERBS=VTBL,TABLE
+ .ENDT
+
+GLOEND::
+
+
+; PROPERTY DEFAULTS AND OBJECTS ARE DEFINED HERE
+
+OBJECT::.TABLE
+ 0 ;()
+ 0 ;()
+ 0 ;()
+ 0 ;()
+ 0 ;(P?CORRIDOR)
+ 0 ;(P?THINGS)
+ 0 ;(P?GLOBAL)
+ 0 ;(P?STATION)
+ 0 ;(P?GENERIC)
+ 5 ;(P?SIZE)
+ 0 ;(P?CAPACITY)
+ 0 ;(P?TEXT)
+ 0 ;(P?DESCFCN)
+ 0 ;(P?CHARACTER)
+ 0 ;(P?LINE)
+ 0 ;(P?LDESC)
+ 0 ;(P?ADJECTIVE)
+ 0 ;(P?SYNONYM)
+ 0 ;(P?ACTION)
+ 0 ;(P?OUT)
+ 0 ;(P?IN)
+ 0 ;(P?DOWN)
+ 0 ;(P?UP)
+ 0 ;(P?NW)
+ 0 ;(P?WEST)
+ 0 ;(P?SW)
+ 0 ;(P?SOUTH)
+ 0 ;(P?SE)
+ 0 ;(P?EAST)
+ 0 ;(P?NE)
+ 0 ;(P?NORTH)
+ .OBJECT MOONMIST,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,YOUR-COLOR,0,T?MOONMIST
+ .OBJECT DUNGEON,0,0,ROOMS,CRYPT,IRON-MAIDEN,T?DUNGEON
+ .OBJECT LIBRARY-CHAIR,FX?VOWELBIT+FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,LIBRARY,0,0,T?LIBRARY-CHAIR
+ .OBJECT SLEEP-OUTFIT,0,FX?TAKEBIT+FX?WEARBIT,LUGGAGE,BROCHURE,0,T?SLEEP-OUTFIT
+ .OBJECT WELL,FX?VOWELBIT+FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,BASEMENT,WINE-RACK,0,T?WELL
+ .OBJECT SECRET-SITTING-DOOR,FX?LOCKED+FX?DOORBIT+FX?SECRETBIT,0,ROOMS,GREAT-HALL,0,T?SECRET-SITTING-DOOR
+ .OBJECT WENDISH-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,SECRET-WENDISH-DOOR,WENDISH-KIT,T?WENDISH-ROOM
+ .OBJECT HANDS,FX?TRYTAKEBIT,FX?SEENBIT,GLOBAL-OBJECTS,KEYHOLE,0,T?HANDS
+ .OBJECT DRIVEWAY,FX?ONBIT,FX?SEENBIT,ROOMS,0,DRAGON-EYE,T?DRIVEWAY
+ .OBJECT IRIS-CHAIR,FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,IRIS-ROOM,0,0,T?IRIS-CHAIR
+ .OBJECT TOMB,0,0,ROOMS,DUNGEON,COFFIN,T?TOMB
+ .OBJECT DRAWING-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?SEENBIT,ROOMS,SECRET-DRAWING-DOOR,VICTORIA-CHAIR,T?DRAWING-ROOM
+ .OBJECT COURTYARD,FX?ONBIT,FX?SEENBIT,ROOMS,DRIVEWAY,0,T?COURTYARD
+ .OBJECT SECRET-LANDING-LIB,FX?SECRETBIT,0,ROOMS,DINING-PASSAGE,0,T?SECRET-LANDING-LIB
+ .OBJECT POND,FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,GARDEN,0,0,T?POND
+ .OBJECT LOVER-PIC,0,FX?NARTICLEBIT+FX?NDESCBIT,DRAWING-ROOM,PAINTER,0,T?LOVER-PIC
+ .OBJECT WINDOW,0,FX?NDESCBIT+FX?SEENBIT,LOCAL-GLOBALS,LEVER,0,T?WINDOW
+ .OBJECT PUNCHBOWL,FX?TRYTAKEBIT+FX?OPENBIT,FX?SEARCHBIT+FX?CONTBIT,SIDEBOARD,0,0,T?PUNCHBOWL
+ .OBJECT WENDISH-CHAIR,FX?VOWELBIT+FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,WENDISH-ROOM,CANDLE,0,T?WENDISH-CHAIR
+ .OBJECT MEMENTO,0,FX?SEENBIT+FX?NDESCBIT,OLD-GREAT-HALL,0,0,T?MEMENTO
+ .OBJECT HORN,0,FX?SEENBIT+FX?NDESCBIT,CAR,PLAYER,0,T?HORN
+ .OBJECT BUST,FX?TRYTAKEBIT,FX?SEARCHBIT+FX?CONTBIT,DINING-ROOM,0,RECORDER,T?BUST
+ .OBJECT MEMENTO-2,0,FX?SEENBIT+FX?NDESCBIT,OLD-GREAT-HALL,MEMENTO,0,T?MEMENTO-2
+ .OBJECT SECRET-JACK-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,CORR-2,0,T?SECRET-JACK-DOOR
+ .OBJECT SECRET-VIVIEN-PASSAGE,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,SECRET-LANDING-TAM,0,T?SECRET-VIVIEN-PASSAGE
+ .OBJECT JEWELRY-CASE,FX?TRYTAKEBIT,FX?SEENBIT+FX?CONTBIT+FX?NDESCBIT,TAMARA-ROOM,TAMARA-BED,0,T?JEWELRY-CASE
+ .OBJECT SECRET-LANDING-JACK,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,DECK,0,T?SECRET-LANDING-JACK
+ .OBJECT OIL-PAINTING,FX?VOWELBIT,FX?SEENBIT+FX?NDESCBIT,LOCAL-GLOBALS,FRONT-GATE,0,T?OIL-PAINTING
+ .OBJECT RECORDER,0,0,BUST,0,0,T?RECORDER
+ .OBJECT KITCHEN,FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,BACKSTAIRS,LAMP,T?KITCHEN
+ .OBJECT SECRET-IAN-PASSAGE,FX?VOWELBIT+FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,SECRET-LANDING-LIB,0,T?SECRET-IAN-PASSAGE
+ .OBJECT DINING-ROOM,FX?DOORBIT+FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,CORR-1,SIDEBOARD,T?DINING-ROOM
+ .OBJECT YOUR-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,SECRET-YOUR-DOOR,YOUR-CHAIR,T?YOUR-ROOM
+ .OBJECT ANDIRON,FX?VOWELBIT,FX?NDESCBIT,IAN-ROOM,0,0,T?ANDIRON
+ .OBJECT LENS,FX?TRANSBIT,FX?WEARBIT+FX?TAKEBIT,LENS-BOX,0,0,T?LENS
+ .OBJECT INTDIR,0,0,GLOBAL-OBJECTS,HIM,0,T?INTDIR
+ .OBJECT ROOMS,0,FX?NARTICLEBIT,0,0,HYDE-CLOSET,T?ROOMS
+ .OBJECT LIMBO,0,FX?NARTICLEBIT,ROOMS,LOVER-PATH,LOVER,T?LIMBO
+ .OBJECT EAST-HALL,FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,YOUR-BATHROOM,0,T?EAST-HALL
+ .OBJECT PASSAGE-1,FX?SECRETBIT,0,ROOMS,SECRET-LANDING-JACK,0,T?PASSAGE-1
+ .OBJECT MIRROR-GLOBAL,0,FX?CONTBIT+FX?SEENBIT,GLOBAL-OBJECTS,TOWER,0,T?MIRROR-GLOBAL
+ .OBJECT PLAYER,FX?OPENBIT+FX?FEMALE,FX?TOUCHBIT+FX?SEENBIT+FX?PERSONBIT+FX?SEARCHBIT+FX?NARTICLEBIT+FX?NDESCBIT,CAR,0,TWEED-OUTFIT,T?PLAYER
+ .OBJECT PEEPHOLE-2,FX?ONBIT,FX?NDESCBIT,LOCAL-GLOBALS,PRIEST-DOOR,0,T?PEEPHOLE-2
+ .OBJECT LOCAL-GLOBALS,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,MIRROR-GLOBAL,CORPSE,T?LOCAL-GLOBALS
+ .OBJECT CHAIR,0,FX?SURFACEBIT+FX?SEENBIT,LOCAL-GLOBALS,STAIRS,0,T?CHAIR
+ .OBJECT HEAD,0,FX?SEENBIT,GLOBAL-OBJECTS,HANDS,0,T?HEAD
+ .OBJECT HER,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,0,0,T?HER
+ .OBJECT TAPESTRY,0,FX?SEENBIT+FX?NDESCBIT,DRAWING-ROOM,LOVER-PIC,0,T?TAPESTRY
+ .OBJECT CANE,FX?SECRETBIT+FX?OPENBIT,FX?SEARCHBIT+FX?SURFACEBIT+FX?NDESCBIT+FX?TAKEBIT,0,0,PAINT,T?CANE
+ .OBJECT MUSIC,0,FX?NDESCBIT+FX?READBIT+FX?TAKEBIT,PIANO,0,0,T?MUSIC
+ .OBJECT VOICE,0,FX?NDESCBIT,0,0,0,T?VOICE
+ .OBJECT FRONT-GATE,FX?DOORBIT+FX?LOCKED+FX?TRANSBIT,FX?SEENBIT,LOCAL-GLOBALS,OCEAN,0,T?FRONT-GATE
+ .OBJECT HYDE-CHAIR,FX?VOWELBIT+FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,HYDE-ROOM,0,0,T?HYDE-CHAIR
+ .OBJECT OFFICE,FX?DOORBIT+FX?OPENBIT+FX?VOWELBIT,FX?SEENBIT,ROOMS,LIBRARY,HAUNTING,T?OFFICE
+ .OBJECT PEEPHOLE,FX?ONBIT+FX?SECRETBIT,0,LOCAL-GLOBALS,LADDER,0,T?PEEPHOLE
+ .OBJECT YOUR-COLOR,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,ARTIFACT,0,T?YOUR-COLOR
+ .OBJECT CHAIR-DINING,FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SEARCHBIT+FX?SURFACEBIT,DINING-ROOM,TABLE-DINING,0,T?CHAIR-DINING
+ .OBJECT DRESSING-MIRROR,0,FX?SEENBIT,DRESSING-TABLE,0,0,T?DRESSING-MIRROR
+ .OBJECT LUGGAGE,0,FX?NARTICLEBIT+FX?TAKEBIT+FX?SEARCHBIT+FX?CONTBIT,CAR,HORN,DINNER-OUTFIT,T?LUGGAGE
+ .OBJECT EYE,FX?VOWELBIT,FX?SEENBIT,GLOBAL-OBJECTS,HEAD,0,T?EYE
+ .OBJECT NECKLACE,FX?SECRETBIT,FX?WEARBIT+FX?NDESCBIT+FX?TAKEBIT,0,0,0,T?NECKLACE
+ .OBJECT YOUR-BATHROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,YOUR-ROOM,0,T?YOUR-BATHROOM
+ .OBJECT JACK-TAPE,FX?SECRETBIT,FX?RMUNGBIT+FX?SEENBIT,0,0,0,T?JACK-TAPE
+ .OBJECT SECRET-DINING-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,DINING-ROOM,0,T?SECRET-DINING-DOOR
+ .OBJECT EARRING,FX?SECRETBIT+FX?VOWELBIT,FX?SEENBIT+FX?WEARBIT+FX?NDESCBIT+FX?TAKEBIT,0,0,0,T?EARRING
+ .OBJECT GLOBAL-OBJECTS,FX?VOWELBIT+FX?TRYTAKEBIT+FX?TRANSBIT+FX?TOOLBIT+FX?SECRETBIT+FX?OPENBIT+FX?ONBIT+FX?MUNGBIT+FX?LOCKED+FX?INVISIBLE+FX?FEMALE+FX?DOORBIT,FX?WORNBIT+FX?WEARBIT+FX?WEAPONBIT+FX?VEHBIT+FX?TOUCHBIT+FX?TAKEBIT+FX?SURFACEBIT+FX?SEENBIT+FX?SEARCHBIT+FX?RMUNGBIT+FX?READBIT+FX?NDESCBIT+FX?NARTICLEBIT+FX?LIGHTBIT+FX?CONTBIT,0,0,GENERIC-CLUE,T?GLOBAL-OBJECTS
+ .OBJECT WEST-HALL,FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,VIVIEN-ROOM,0,T?WEST-HALL
+ .OBJECT BRICKS,0,FX?NDESCBIT,0,0,0,T?BRICKS
+ .OBJECT PLAYER-NAME,0,FX?TOUCHBIT+FX?SEENBIT+FX?PERSONBIT+FX?NARTICLEBIT,GLOBAL-OBJECTS,INTDIR,0,T?PLAYER-NAME
+ .OBJECT YOUR-CLOSET,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,SITTING-PASSAGE,0,T?YOUR-CLOSET
+ .OBJECT IT,FX?VOWELBIT,FX?NARTICLEBIT,GLOBAL-OBJECTS,TURN,0,T?IT
+ .OBJECT BLOWGUN,FX?SECRETBIT,FX?TAKEBIT+FX?WEAPONBIT,0,0,0,T?BLOWGUN
+ .OBJECT WENDISH-CORNER,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,IRIS-CLOSET,0,T?WENDISH-CORNER
+ .OBJECT ROMANCE,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,PASSAGE,0,T?ROMANCE
+ .OBJECT LENS-2,FX?TRANSBIT,FX?WEARBIT+FX?TAKEBIT,0,0,0,T?LENS-2
+ .OBJECT YOUR-CHAIR,FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,YOUR-ROOM,CHEST-OF-DRAWERS,0,T?YOUR-CHAIR
+ .OBJECT GLASS-EYE,FX?TRYTAKEBIT,FX?NDESCBIT,RHINO-HEAD,0,0,T?GLASS-EYE
+ .OBJECT TWEED-OUTFIT,FX?MUNGBIT,FX?SEENBIT+FX?TAKEBIT+FX?WEARBIT+FX?WORNBIT,PLAYER,0,0,T?TWEED-OUTFIT
+ .OBJECT SECRET-LIBRARY-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,STUDY,0,T?SECRET-LIBRARY-DOOR
+ .OBJECT CANDLE,FX?VOWELBIT+FX?TRYTAKEBIT,FX?NDESCBIT,WENDISH-ROOM,0,0,T?CANDLE
+ .OBJECT INKWELL,FX?OPENBIT+FX?TRANSBIT+FX?VOWELBIT,FX?CONTBIT+FX?TAKEBIT,DESK,0,0,T?INKWELL
+ .OBJECT ARTIFACT,FX?VOWELBIT,FX?SEENBIT,GLOBAL-OBJECTS,UNDRESSED,0,T?ARTIFACT
+ .OBJECT IAN-CHAIR,FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,IAN-ROOM,ANDIRON,0,T?IAN-CHAIR
+ .OBJECT MOON,0,FX?SEENBIT,LOCAL-GLOBALS,GHOST-NEW,0,T?MOON
+ .OBJECT DOCTOR,FX?OPENBIT,FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,GALLERY,0,MUSTACHE,T?DOCTOR
+ .OBJECT VIVIEN-CHAIR,FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,VIVIEN-ROOM,FIGURINE,0,T?VIVIEN-CHAIR
+ .OBJECT BELL,FX?OPENBIT,FX?CONTBIT+FX?SEENBIT+FX?NDESCBIT,DECK,0,0,T?BELL
+ .OBJECT SITTING-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,SECRET-SITTING-DOOR,PIANO,T?SITTING-ROOM
+ .OBJECT SLEEP-GLOBAL,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,GLOBAL-HERE,0,T?SLEEP-GLOBAL
+ .OBJECT LADDER,0,0,LOCAL-GLOBALS,PEEPHOLE-2,0,T?LADDER
+ .OBJECT BUTLER,FX?OPENBIT,FX?NDESCBIT+FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,CORR-1,0,LETTER,T?BUTLER
+ .OBJECT WYVERN,0,FX?SEENBIT+FX?SURFACEBIT+FX?VEHBIT+FX?NDESCBIT,SITTING-ROOM,0,0,T?WYVERN
+ .OBJECT MUSTACHE,FX?TRYTAKEBIT,FX?NARTICLEBIT+FX?NDESCBIT,DOCTOR,0,0,T?MUSTACHE
+ .OBJECT CREW-GLOBAL,0,FX?SEENBIT,GLOBAL-OBJECTS,COUSIN,0,T?CREW-GLOBAL
+ .OBJECT DESK,FX?VOWELBIT+FX?OPENBIT,FX?NDESCBIT+FX?SEENBIT+FX?VEHBIT+FX?SURFACEBIT,OFFICE,0,INKWELL,T?DESK
+ .OBJECT GAME-ROOM,FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,ROOMS,CHAPEL,RHINO-HEAD,T?GAME-ROOM
+ .OBJECT LETTER-MAID,0,FX?READBIT+FX?TAKEBIT+FX?NDESCBIT,WRITING-DESK,0,0,T?LETTER-MAID
+ .OBJECT DANGER,0,0,GLOBAL-OBJECTS,FLOOR,0,T?DANGER
+ .OBJECT DRESSING-TABLE-LG,FX?OPENBIT,FX?SURFACEBIT+FX?CONTBIT+FX?SEENBIT,LOCAL-GLOBALS,NIGHTSTAND-LG,0,T?DRESSING-TABLE-LG
+ .OBJECT COMPUTER,0,FX?SEENBIT+FX?NDESCBIT,OFFICE,DESK,0,T?COMPUTER
+ .OBJECT LENS-1,FX?TRANSBIT,FX?WEARBIT+FX?SEENBIT+FX?TAKEBIT,0,0,0,T?LENS-1
+ .OBJECT WENDISH-BOOK,FX?SECRETBIT,FX?RMUNGBIT+FX?NDESCBIT+FX?CONTBIT+FX?READBIT,0,0,0,T?WENDISH-BOOK
+ .OBJECT TAMARA-EVIDENCE,FX?SECRETBIT,FX?RMUNGBIT+FX?NARTICLEBIT+FX?READBIT+FX?NDESCBIT,0,0,0,T?TAMARA-EVIDENCE
+ .OBJECT YOUR-SWITCH,FX?SECRETBIT,FX?NDESCBIT,YOUR-ROOM,YOUR-MIRROR,0,T?YOUR-SWITCH
+ .OBJECT SECRET-WENDISH-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,IRIS-ROOM,0,T?SECRET-WENDISH-DOOR
+ .OBJECT PAINTER,FX?FEMALE+FX?OPENBIT,FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,DRAWING-ROOM,DEALER,0,T?PAINTER
+ .OBJECT CHAPEL,FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,ROOMS,LUMBER-ROOM,STAINED-WINDOW,T?CHAPEL
+ .OBJECT DEALER,FX?OPENBIT,FX?NDESCBIT+FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,DRAWING-ROOM,0,0,T?DEALER
+ .OBJECT IRON-MAIDEN,FX?OPENBIT+FX?VOWELBIT,FX?CONTBIT,DUNGEON,0,0,T?IRON-MAIDEN
+ .OBJECT VIVIEN-STUFF,0,FX?SEENBIT+FX?NDESCBIT,VIVIEN-ROOM,0,0,T?VIVIEN-STUFF
+ .OBJECT CORPSE,0,FX?NARTICLEBIT,LOCAL-GLOBALS,TABLE-RANDOM,0,T?CORPSE
+ .OBJECT LORD,FX?OPENBIT,FX?NDESCBIT+FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,FOYER,0,CLUE-2,T?LORD
+ .OBJECT COSTUME,FX?ONBIT+FX?SECRETBIT,FX?TAKEBIT+FX?WEARBIT,0,0,0,T?COSTUME
+ .OBJECT LUMBER-ROOM,FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,ROOMS,CORR-3,MAGAZINE,T?LUMBER-ROOM
+ .OBJECT WARDROBE-LG,0,FX?SEENBIT,LOCAL-GLOBALS,DRESSING-TABLE-LG,0,T?WARDROBE-LG
+ .OBJECT UMBRELLA-STAND,FX?VOWELBIT+FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,FOYER,LORD,0,T?UMBRELLA-STAND
+ .OBJECT IAN-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,SECRET-IAN-DOOR,IAN-CHAIR,T?IAN-ROOM
+ .OBJECT OFFICER,FX?OPENBIT,FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,GREAT-HALL,DEB,0,T?OFFICER
+ .OBJECT CREST,FX?TRYTAKEBIT,FX?SEENBIT+FX?NDESCBIT,CORR-2,0,0,T?CREST
+ .OBJECT FRONT-DOOR,FX?LOCKED+FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,ROOMS,GARDEN,0,T?FRONT-DOOR
+ .OBJECT CRYPT,FX?SECRETBIT,0,ROOMS,BASEMENT,SKELETON,T?CRYPT
+ .OBJECT HOLE-IN-WALL,FX?OPENBIT+FX?DOORBIT+FX?INVISIBLE,FX?SEENBIT,LOCAL-GLOBALS,YOUR-BATHROOM-DOOR,0,T?HOLE-IN-WALL
+ .OBJECT LEVER,FX?TRYTAKEBIT,FX?SEENBIT,LOCAL-GLOBALS,NECKLACE-OF-D,0,T?LEVER
+ .OBJECT GREAT-HALL,FX?DOORBIT+FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,DRAWING-ROOM,ARMOR,T?GREAT-HALL
+ .OBJECT MAID,FX?VOWELBIT+FX?FEMALE,FX?SEENBIT+FX?PERSONBIT,LOCAL-GLOBALS,0,0,T?MAID
+ .OBJECT TAMARA-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?NARTICLEBIT,ROOMS,SECRET-TAMARA-DOOR,JEWELRY-CASE,T?TAMARA-ROOM
+ .OBJECT TOWER,0,FX?SEENBIT,GLOBAL-OBJECTS,CASTLE,0,T?TOWER
+ .OBJECT YOUR-BATHROOM-DOOR,FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,LOCAL-GLOBALS,WARDROBE-LG,0,T?YOUR-BATHROOM-DOOR
+ .OBJECT JEWEL,0,FX?SEENBIT+FX?TAKEBIT,0,0,0,T?JEWEL
+ .OBJECT CLUE-1,FX?SECRETBIT,FX?READBIT+FX?SEENBIT+FX?NDESCBIT,SIDEBOARD,PUNCHBOWL,0,T?CLUE-1
+ .OBJECT GALLERY,FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,KITCHEN,PAINTING-GALLERY,T?GALLERY
+ .OBJECT FOYER,FX?DOORBIT+FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,FRONT-DOOR,COAT-RACK,T?FOYER
+ .OBJECT BED,FX?OPENBIT,FX?NARTICLEBIT+FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,YOUR-ROOM,0,0,T?BED
+ .OBJECT TABLE-RANDOM,0,FX?SEENBIT,LOCAL-GLOBALS,CHAIR,0,T?TABLE-RANDOM
+ .OBJECT KEYHOLE,0,0,GLOBAL-OBJECTS,LIGHT-GLOBAL,0,T?KEYHOLE
+ .OBJECT PAINTING-GALLERY,0,FX?SEENBIT+FX?NDESCBIT,GALLERY,DOCTOR,0,T?PAINTING-GALLERY
+ .OBJECT OLD-GREAT-HALL,FX?LOCKED+FX?DOORBIT+FX?VOWELBIT+FX?ONBIT,FX?SEENBIT,ROOMS,HYDE-ROOM,MEMENTO-2,T?OLD-GREAT-HALL
+ .OBJECT PRIEST-DOOR,FX?DOORBIT,FX?SEENBIT,LOCAL-GLOBALS,HOLE-IN-WALL,0,T?PRIEST-DOOR
+ .OBJECT STAINED-WINDOW,FX?OPENBIT,FX?NDESCBIT,CHAPEL,0,0,T?STAINED-WINDOW
+ .OBJECT DECK,FX?OPENBIT+FX?ONBIT,FX?SURFACEBIT+FX?SEENBIT,ROOMS,GAME-ROOM,BELL,T?DECK
+ .OBJECT GALLERY-CORNER,FX?SECRETBIT,0,ROOMS,DRAWING-CLOSET,0,T?GALLERY-CORNER
+ .OBJECT BOTTLE,FX?TRANSBIT,FX?WEAPONBIT+FX?READBIT+FX?CONTBIT+FX?TAKEBIT+FX?NDESCBIT,WINE-RACK,0,0,T?BOTTLE
+ .OBJECT SKULL,FX?SECRETBIT,FX?NDESCBIT,0,0,0,T?SKULL
+ .OBJECT HIM,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,HER,0,T?HIM
+ .OBJECT SECRET-IRIS-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,EAST-HALL,0,T?SECRET-IRIS-DOOR
+ .OBJECT LIBRARY,FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,ROOMS,SECRET-LIBRARY-DOOR,BOOKCASE,T?LIBRARY
+ .OBJECT VIVIEN-DIARY,FX?SECRETBIT,FX?RMUNGBIT+FX?CONTBIT+FX?READBIT+FX?NARTICLEBIT+FX?TAKEBIT,0,0,0,T?VIVIEN-DIARY
+ .OBJECT NIGHTSTAND,FX?OPENBIT,FX?SEARCHBIT+FX?SEENBIT+FX?NDESCBIT+FX?SURFACEBIT,YOUR-ROOM,BED,NIGHTLAMP,T?NIGHTSTAND
+ .OBJECT VIVIEN-ROOM,FX?DOORBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,SECRET-VIVIEN-DOOR,VIVIEN-CHAIR,T?VIVIEN-ROOM
+ .OBJECT HYDE-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,SECRET-HYDE-DOOR,HYDE-CHAIR,T?HYDE-ROOM
+ .OBJECT JACK-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT,ROOMS,SECRET-JACK-DOOR,TELESCOPE,T?JACK-ROOM
+ .OBJECT SECRET-TAMARA-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,OFFICE,0,T?SECRET-TAMARA-DOOR
+ .OBJECT LAMP,0,FX?LIGHTBIT+FX?TAKEBIT,KITCHEN,DINNER,0,T?LAMP
+ .OBJECT DRAWING-CLOSET,FX?SECRETBIT,0,ROOMS,MIDPOINT,0,T?DRAWING-CLOSET
+ .OBJECT DINING-PASSAGE,FX?SECRETBIT,0,ROOMS,SECRET-VIVIEN-PASSAGE,0,T?DINING-PASSAGE
+ .OBJECT BUFFALO-HEAD,0,FX?SEENBIT+FX?NDESCBIT,GAME-ROOM,0,0,T?BUFFALO-HEAD
+ .OBJECT TELESCOPE,FX?TRYTAKEBIT,0,JACK-ROOM,0,0,T?TELESCOPE
+ .OBJECT CLUE-2,FX?SECRETBIT,FX?READBIT+FX?SEENBIT+FX?TAKEBIT+FX?NDESCBIT,LORD,0,0,T?CLUE-2
+ .OBJECT IRIS-ROOM,FX?DOORBIT+FX?OPENBIT+FX?ONBIT,FX?WORNBIT+FX?WEARBIT+FX?NARTICLEBIT,ROOMS,SECRET-IRIS-DOOR,IRIS-CHAIR,T?IRIS-ROOM
+ .OBJECT CHEST-OF-DRAWERS,0,FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,YOUR-ROOM,WARDROBE,0,T?CHEST-OF-DRAWERS
+ .OBJECT PASSAGE,0,0,GLOBAL-OBJECTS,OTHER-OUTFIT,0,T?PASSAGE
+ .OBJECT LOVER,FX?FEMALE+FX?OPENBIT,FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,LIMBO,FRIEND,0,T?LOVER
+ .OBJECT PAINT,FX?SECRETBIT+FX?TRYTAKEBIT,FX?SEENBIT+FX?NDESCBIT,CANE,0,0,T?PAINT
+ .OBJECT NIGHTLAMP,FX?ONBIT,FX?NARTICLEBIT+FX?SEENBIT+FX?NDESCBIT+FX?LIGHTBIT,NIGHTSTAND,0,0,T?NIGHTLAMP
+ .OBJECT SIDEBOARD,FX?OPENBIT,FX?SEARCHBIT+FX?SEENBIT+FX?SURFACEBIT,DINING-ROOM,CHAIR-DINING,CLUE-1,T?SIDEBOARD
+ .OBJECT RHINO-HEAD,FX?OPENBIT,FX?SEARCHBIT+FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,GAME-ROOM,BUFFALO-HEAD,GLASS-EYE,T?RHINO-HEAD
+ .OBJECT GHOST-OLD,FX?FEMALE,FX?SEENBIT+FX?PERSONBIT,LOCAL-GLOBALS,MAID,0,T?GHOST-OLD
+ .OBJECT UNDRESSED,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,ACCIDENT,0,T?UNDRESSED
+ .OBJECT WINE-RACK,FX?TRYTAKEBIT+FX?OPENBIT,FX?TOUCHBIT+FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,BASEMENT,0,BOTTLE,T?WINE-RACK
+ .OBJECT SITTING-PASSAGE,FX?SECRETBIT,0,ROOMS,SECRET-IAN-PASSAGE,0,T?SITTING-PASSAGE
+ .OBJECT CAR,FX?OPENBIT,FX?CONTBIT+FX?SEENBIT+FX?VEHBIT,DRIVEWAY,0,LUGGAGE,T?CAR
+ .OBJECT NECKLACE-OF-D,FX?OPENBIT+FX?SECRETBIT,FX?CONTBIT+FX?NDESCBIT+FX?TAKEBIT+FX?NARTICLEBIT,LOCAL-GLOBALS,PSEUDO-OBJECT,0,T?NECKLACE-OF-D
+ .OBJECT YOU,0,0,GLOBAL-OBJECTS,INTNUM,0,T?YOU
+ .OBJECT STAIRS,0,FX?SEENBIT,LOCAL-GLOBALS,WINDOW,0,T?STAIRS
+ .OBJECT LETTER-DEE,FX?SECRETBIT,FX?READBIT+FX?NDESCBIT+FX?NARTICLEBIT,0,0,0,T?LETTER-DEE
+ .OBJECT COFFIN,0,FX?VEHBIT+FX?CONTBIT,TOMB,0,0,T?COFFIN
+ .OBJECT SECRET-LANDING-TAM,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,PASSAGE-1,0,T?SECRET-LANDING-TAM
+ .OBJECT FRIEND,FX?FEMALE+FX?OPENBIT,FX?NDESCBIT+FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,LIMBO,0,0,T?FRIEND
+ .OBJECT IRIS-CLOSET,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,YOUR-CLOSET,0,T?IRIS-CLOSET
+ .OBJECT BOOKS-GLOBAL,FX?TRYTAKEBIT,FX?READBIT+FX?NDESCBIT,LIBRARY,TABLE-LIBRARY,0,T?BOOKS-GLOBAL
+ .OBJECT CLUE-3,FX?SECRETBIT,FX?READBIT+FX?NDESCBIT,0,0,0,T?CLUE-3
+ .OBJECT CASTLE,0,FX?SEENBIT+FX?NARTICLEBIT,GLOBAL-OBJECTS,CREW-GLOBAL,0,T?CASTLE
+ .OBJECT STUDY,FX?DOORBIT+FX?OPENBIT,FX?SEENBIT,ROOMS,JACK-ROOM,0,T?STUDY
+ .OBJECT COUSIN,0,FX?NDESCBIT+FX?NARTICLEBIT+FX?PERSONBIT,GLOBAL-OBJECTS,PLAYER-NAME,0,T?COUSIN
+ .OBJECT SKELETON,FX?OPENBIT,FX?SEARCHBIT+FX?SURFACEBIT,CRYPT,0,0,T?SKELETON
+ .OBJECT LOVER-PATH,FX?OPENBIT+FX?ONBIT,FX?SURFACEBIT,ROOMS,TOMB,0,T?LOVER-PATH
+ .OBJECT DRAGON-EYE,0,FX?SEENBIT+FX?NDESCBIT,DRIVEWAY,DRAGON,0,T?DRAGON-EYE
+ .OBJECT WRITING-DESK,FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?SURFACEBIT,SITTING-ROOM,WYVERN,LETTER-MAID,T?WRITING-DESK
+ .OBJECT NOT-HERE-OBJECT,0,FX?NARTICLEBIT,0,0,0,T?NOT-HERE-OBJECT
+ .OBJECT DRAGON,FX?TRYTAKEBIT,FX?NDESCBIT,DRIVEWAY,CAR,0,T?DRAGON
+ .OBJECT WARDROBE,0,FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,YOUR-ROOM,YOUR-SWITCH,0,T?WARDROBE
+ .OBJECT LUMBER-CHEST,FX?VOWELBIT,FX?NDESCBIT+FX?SEENBIT,LUMBER-ROOM,0,0,T?LUMBER-CHEST
+ .OBJECT INTNUM,0,0,GLOBAL-OBJECTS,DANGER,0,T?INTNUM
+ .OBJECT YOUR-MIRROR,FX?TRYTAKEBIT,FX?SEENBIT+FX?NDESCBIT,YOUR-ROOM,DRESSING-BENCH,0,T?YOUR-MIRROR
+ .OBJECT FLOOR,FX?OPENBIT,FX?SURFACEBIT+FX?SEENBIT,GLOBAL-OBJECTS,IT,0,T?FLOOR
+ .OBJECT CORR-1,FX?ONBIT,FX?WEARBIT+FX?SEENBIT,ROOMS,SITTING-ROOM,BUTLER,T?CORR-1
+ .OBJECT BATHROOM,0,FX?SEENBIT,LOCAL-GLOBALS,OIL-PAINTING,0,T?BATHROOM
+ .OBJECT EXERCISE-OUTFIT,FX?VOWELBIT,FX?TAKEBIT+FX?WEARBIT,LUGGAGE,SLEEP-OUTFIT,0,T?EXERCISE-OUTFIT
+ .OBJECT SECRET-YOUR-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,GALLERY,0,T?SECRET-YOUR-DOOR
+ .OBJECT DINNER-2,FX?VOWELBIT,FX?NDESCBIT,0,0,0,T?DINNER-2
+ .OBJECT MAGAZINE,0,FX?READBIT+FX?NDESCBIT+FX?TAKEBIT,LUMBER-ROOM,LUMBER-CHEST,0,T?MAGAZINE
+ .OBJECT TABLE-DINING,FX?OPENBIT,FX?SEARCHBIT+FX?SEENBIT+FX?SURFACEBIT,DINING-ROOM,BUST,0,T?TABLE-DINING
+ .OBJECT NIGHTSTAND-LG,0,FX?SEENBIT,LOCAL-GLOBALS,FIREPLACE,0,T?NIGHTSTAND-LG
+ .OBJECT ACCIDENT,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,ROMANCE,0,T?ACCIDENT
+ .OBJECT DEB,FX?FEMALE+FX?OPENBIT,FX?NDESCBIT+FX?NARTICLEBIT+FX?SEARCHBIT+FX?PERSONBIT,GREAT-HALL,0,0,T?DEB
+ .OBJECT HISTORY-BOOK,FX?TRYTAKEBIT,FX?CONTBIT+FX?READBIT,BOOKCASE,0,0,T?HISTORY-BOOK
+ .OBJECT LENS-BOX,FX?SECRETBIT,FX?SEARCHBIT+FX?CONTBIT+FX?NDESCBIT,0,0,LENS,T?LENS-BOX
+ .OBJECT SECRET-DRAWING-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,FOYER,0,T?SECRET-DRAWING-DOOR
+ .OBJECT OTHER-OUTFIT,0,FX?SEENBIT,GLOBAL-OBJECTS,EYE,0,T?OTHER-OUTFIT
+ .OBJECT GHOST-NEW,FX?OPENBIT,FX?NDESCBIT+FX?SEARCHBIT+FX?SEENBIT,LOCAL-GLOBALS,GHOST-OLD,0,T?GHOST-NEW
+ .OBJECT WENDISH-KIT,FX?TRYTAKEBIT,FX?CONTBIT+FX?SEENBIT+FX?NDESCBIT,WENDISH-ROOM,WENDISH-STUFF,0,T?WENDISH-KIT
+ .OBJECT LIGHT-GLOBAL,FX?TRYTAKEBIT,FX?SEENBIT,GLOBAL-OBJECTS,SLEEP-GLOBAL,0,T?LIGHT-GLOBAL
+ .OBJECT GLOBAL-HERE,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,WALL,0,T?GLOBAL-HERE
+ .OBJECT DRESSING-BENCH,FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,YOUR-ROOM,DRESSING-TABLE,0,T?DRESSING-BENCH
+ .OBJECT TURN,0,0,GLOBAL-OBJECTS,LOCAL-GLOBALS,0,T?TURN
+ .OBJECT TAMARA-BED,FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT+FX?SEENBIT,TAMARA-ROOM,0,0,T?TAMARA-BED
+ .OBJECT SECRET-IAN-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,WEST-HALL,0,T?SECRET-IAN-DOOR
+ .OBJECT DINNER-OUTFIT,0,FX?TAKEBIT+FX?WEARBIT,LUGGAGE,EXERCISE-OUTFIT,0,T?DINNER-OUTFIT
+ .OBJECT JOURNAL,FX?SECRETBIT,FX?CONTBIT+FX?READBIT+FX?TAKEBIT,TABLE-LIBRARY,0,0,T?JOURNAL
+ .OBJECT DRESSING-TABLE,FX?OPENBIT,FX?SEARCHBIT+FX?SEENBIT+FX?NDESCBIT+FX?SURFACEBIT,YOUR-ROOM,NIGHTSTAND,DRESSING-MIRROR,T?DRESSING-TABLE
+ .OBJECT BROCHURE,0,FX?READBIT+FX?TAKEBIT,LUGGAGE,0,0,T?BROCHURE
+ .OBJECT VIVIEN-BOX,FX?TRYTAKEBIT,FX?CONTBIT+FX?SEENBIT+FX?NDESCBIT,VIVIEN-ROOM,VIVIEN-STUFF,0,T?VIVIEN-BOX
+ .OBJECT CORR-2,FX?ONBIT,FX?SEENBIT,ROOMS,LIMBO,CREST,T?CORR-2
+ .OBJECT BOOKCASE,FX?OPENBIT,FX?SEENBIT+FX?SEARCHBIT+FX?CONTBIT+FX?NDESCBIT,LIBRARY,BOOKS-GLOBAL,HISTORY-BOOK,T?BOOKCASE
+ .OBJECT HYDE-CLOSET,FX?SECRETBIT,FX?NARTICLEBIT,ROOMS,GALLERY-CORNER,0,T?HYDE-CLOSET
+ .OBJECT GENERIC-CLUE,0,0,GLOBAL-OBJECTS,MOONMIST,0,T?GENERIC-CLUE
+ .OBJECT PIANO,FX?OPENBIT,FX?VEHBIT+FX?SEARCHBIT+FX?SEENBIT+FX?SURFACEBIT+FX?NDESCBIT,SITTING-ROOM,WRITING-DESK,MUSIC,T?PIANO
+ .OBJECT FIREPLACE,0,FX?SEENBIT,LOCAL-GLOBALS,BATHROOM,0,T?FIREPLACE
+ .OBJECT MIDPOINT,FX?SECRETBIT,0,ROOMS,WENDISH-CORNER,0,T?MIDPOINT
+ .OBJECT SECRET-VIVIEN-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,WENDISH-ROOM,0,T?SECRET-VIVIEN-DOOR
+ .OBJECT OCEAN,FX?VOWELBIT,FX?SEENBIT,LOCAL-GLOBALS,MOON,0,T?OCEAN
+ .OBJECT DINNER,FX?TRYTAKEBIT,FX?NARTICLEBIT,KITCHEN,0,0,T?DINNER
+ .OBJECT FIGURINE,FX?TRYTAKEBIT,FX?NDESCBIT,VIVIEN-ROOM,VIVIEN-BOX,0,T?FIGURINE
+ .OBJECT ARMOR,0,FX?SEENBIT+FX?NDESCBIT+FX?CONTBIT,GREAT-HALL,OFFICER,0,T?ARMOR
+ .OBJECT LETTER,0,FX?READBIT+FX?NDESCBIT+FX?SEENBIT,BUTLER,MACE,0,T?LETTER
+ .OBJECT BASEMENT,0,FX?SEENBIT,ROOMS,JUNCTION,WELL,T?BASEMENT
+ .OBJECT HAUNTING,0,FX?SEENBIT+FX?NDESCBIT,OFFICE,COMPUTER,0,T?HAUNTING
+ .OBJECT CLUE-4,FX?SECRETBIT,FX?READBIT+FX?NDESCBIT,0,0,0,T?CLUE-4
+ .OBJECT OBJECT-PAIR,0,0,0,0,0,T?OBJECT-PAIR
+ .OBJECT LUMBER-RING,FX?TRYTAKEBIT,0,0,0,0,T?LUMBER-RING
+ .OBJECT COAT-RACK,FX?OPENBIT,FX?SEENBIT+FX?NDESCBIT+FX?SURFACEBIT,FOYER,UMBRELLA-STAND,0,T?COAT-RACK
+ .OBJECT MAZE,FX?ONBIT,FX?SEENBIT,ROOMS,COURTYARD,0,T?MAZE
+ .OBJECT WALL,FX?OPENBIT,FX?SURFACEBIT+FX?SEENBIT,GLOBAL-OBJECTS,YOU,0,T?WALL
+ .OBJECT BACKSTAIRS,FX?ONBIT,FX?NARTICLEBIT+FX?WEARBIT+FX?SEENBIT,ROOMS,SECRET-DINING-DOOR,0,T?BACKSTAIRS
+ .OBJECT VICTORIA-CHAIR,FX?VOWELBIT+FX?OPENBIT,FX?NDESCBIT+FX?VEHBIT+FX?SURFACEBIT,DRAWING-ROOM,TAPESTRY,0,T?VICTORIA-CHAIR
+ .OBJECT WENDISH-STUFF,0,FX?CONTBIT+FX?READBIT+FX?NDESCBIT,WENDISH-ROOM,WENDISH-CHAIR,0,T?WENDISH-STUFF
+ .OBJECT JUNCTION,FX?ONBIT,0,ROOMS,OLD-GREAT-HALL,0,T?JUNCTION
+ .OBJECT MACE,FX?VOWELBIT,FX?NDESCBIT+FX?WEAPONBIT+FX?TAKEBIT,BUTLER,0,0,T?MACE
+ .OBJECT WAR-CLUB,FX?SECRETBIT,FX?SEENBIT+FX?NDESCBIT,0,0,0,T?WAR-CLUB
+ .OBJECT GARDEN,FX?ONBIT,FX?SEENBIT,ROOMS,MAZE,POND,T?GARDEN
+ .OBJECT SECRET-HYDE-DOOR,FX?DOORBIT+FX?SECRETBIT,0,ROOMS,IAN-ROOM,0,T?SECRET-HYDE-DOOR
+ .OBJECT TABLE-LIBRARY,FX?OPENBIT,FX?SEARCHBIT+FX?NDESCBIT+FX?SURFACEBIT,LIBRARY,LIBRARY-CHAIR,JOURNAL,T?TABLE-LIBRARY
+ .OBJECT CORR-3,0,FX?SEENBIT,ROOMS,TAMARA-ROOM,0,T?CORR-3
+ .OBJECT PSEUDO-OBJECT,0,FX?SEENBIT,LOCAL-GLOBALS,PEEPHOLE,0,T?PSEUDO-OBJECT
+ .ENDT
+
+ LAST-OBJECT=254
+
+; OBJECT PROPERTY TABLES ARE DEFINED HERE
+
+OBJPRP::
+
+T?MOONMIST:: .TABLE ; TABLE FOR OBJECT MOONMIST
+ .STRL "Moonmist"
+ .PROP 2,P?ACTION
+ MOONMIST-F
+ .PROP 8,P?SYNONYM
+ W?MOONMIST
+ W?MIST
+ W?INK
+ W?LIQUID
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MOON
+ .BYTE A?GREEN
+ .BYTE 0
+ .ENDT
+
+T?DUNGEON:: .TABLE ; TABLE FOR OBJECT DUNGEON
+ .STRL "dungeon"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE LOVER-PATH ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE LOVER-PATH ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NW ; CONDITIONAL EXIT
+ .BYTE LOVER-PATH ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 2,P?ACTION
+ DUNGEON-F
+ .PROP 2,P?SYNONYM
+ W?DUNGEON
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?STATION
+ DUNGEON
+ .PROP 2,P?GLOBAL
+ .BYTE PRIEST-DOOR
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?LIBRARY-CHAIR:: .TABLE ; TABLE FOR OBJECT LIBRARY-CHAIR
+ .STRL "armchair"
+ .PROP 6,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ W?ARMCHAIR
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?ARM
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?SLEEP-OUTFIT:: .TABLE ; TABLE FOR OBJECT SLEEP-OUTFIT
+ .STRL "nightshirt"
+ .PROP 2,P?ACTION
+ CLOTHES-FCN
+ .PROP 8,P?SYNONYM
+ W?CLOTHES
+ W?OUTFIT
+ W?NIGHTS
+ W?SHIRT
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?NIGHT
+ .BYTE A?F.C
+ .BYTE A?F.C
+ .PROP 2,P?SIZE
+ 20
+ .PROP 2,P?GENERIC
+ GENERIC-CLOTHES
+ .BYTE 0
+ .ENDT
+
+T?WELL:: .TABLE ; TABLE FOR OBJECT WELL
+ .STRL "ancient well"
+ .PROP 2,P?ACTION
+ WELL-F
+ .PROP 4,P?SYNONYM
+ W?WELL
+ W?WELLSHAFT
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?OLD
+ .BYTE A?ANCIENT
+ .PROP 2,P?CAPACITY
+ 99
+ .PROP 2,P?GENERIC
+ GENERIC-WELL
+ .BYTE 0
+ .ENDT
+
+T?SECRET-SITTING-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-SITTING-DOOR
+ .STRL "secret door"
+ .PROP 2,P?ACTION
+ SECRET-SITTING-DOOR-F
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .BYTE A?SEAT
+ .BYTE 0
+ .ENDT
+
+T?WENDISH-ROOM:: .TABLE ; TABLE FOR OBJECT WENDISH-ROOM
+ .STRL "Wendish's bedroom"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE WENDISH-CORNER ; TO ROOM
+ .BYTE SECRET-WENDISH-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE EAST-HALL ; TO ROOM
+ .BYTE WENDISH-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE WENDISH-CORNER ; TO ROOM
+ .BYTE SECRET-WENDISH-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE EAST-HALL ; TO ROOM
+ .BYTE WENDISH-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ WENDISH-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?ROOM
+ W?BEDROOM
+ W?DOOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .BYTE A?BED
+ .BYTE A?ROOM
+ .BYTE A?BEDROOM
+ .BYTE A?WEST
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ EAST-HALL
+ .PROP 8,P?GLOBAL
+ .BYTE WENDISH-ROOM
+ .BYTE SECRET-WENDISH-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?908
+ .BYTE 0
+ .ENDT
+
+T?HANDS:: .TABLE ; TABLE FOR OBJECT HANDS
+ .STRL "hand"
+ .PROP 2,P?ACTION
+ HANDS-F
+ .PROP 4,P?SYNONYM
+ W?HANDS
+ W?HAND
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE A?MY
+ .BYTE 0
+ .ENDT
+
+T?DRIVEWAY:: .TABLE ; TABLE FOR OBJECT DRIVEWAY
+ .STRL "driveway"
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE FRONT-GATE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE FRONT-GATE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ DRIVEWAY-F
+ .PROP 4,P?SYNONYM
+ W?DRIVEWAY
+ W?WAY
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?DRIVE
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ COURTYARD
+ .PROP 5,P?GLOBAL
+ .BYTE FRONT-GATE
+ .BYTE MOON
+ .BYTE OCEAN
+ .BYTE WINDOW
+ .BYTE CHAIR
+ .PROP 2,P?THINGS
+ PT?108
+ .BYTE 0
+ .ENDT
+
+T?IRIS-CHAIR:: .TABLE ; TABLE FOR OBJECT IRIS-CHAIR
+ .STRL "love seat"
+ .PROP 4,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?IRIS'S
+ .BYTE A?HER
+ .BYTE A?LOVE
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?TOMB:: .TABLE ; TABLE FOR OBJECT TOMB
+ .STRL "secret tomb"
+ .PROP 2,P?UP ; IMPOSSIBLE EXIT
+ STR?255 ; FAILURE MESSAGE
+ .PROP 2,P?DOWN ; IMPOSSIBLE EXIT
+ STR?255 ; FAILURE MESSAGE
+ .PROP 2,P?SYNONYM
+ W?TOMB
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE 0
+ .ENDT
+
+T?DRAWING-ROOM:: .TABLE ; TABLE FOR OBJECT DRAWING-ROOM
+ .STRL "drawing room"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE DRAWING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE DRAWING-CLOSET ; TO ROOM
+ .BYTE SECRET-DRAWING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .BYTE GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NW ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE DRAWING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .BYTE GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE DRAWING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ DRAWING-ROOM-F
+ .PROP 4,P?SYNONYM
+ W?ROOM
+ W?DOOR
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?DRAWING
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ GREAT-HALL
+ .PROP 8,P?GLOBAL
+ .BYTE GREAT-HALL
+ .BYTE DRAWING-ROOM
+ .BYTE SECRET-DRAWING-DOOR
+ .BYTE CHAIR
+ .BYTE FIREPLACE
+ .BYTE WINDOW
+ .BYTE TABLE-RANDOM
+ .BYTE OIL-PAINTING
+ .BYTE 0
+ .ENDT
+
+T?COURTYARD:: .TABLE ; TABLE FOR OBJECT COURTYARD
+ .STRL "courtyard"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE DRIVEWAY ; TO ROOM
+ .BYTE FRONT-GATE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE FRONT-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SW ; CONDITIONAL EXIT
+ .BYTE OLD-GREAT-HALL ; TO ROOM
+ .BYTE OLD-GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE FRONT-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE DRIVEWAY ; TO ROOM
+ .BYTE FRONT-GATE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ COURTYARD-F
+ .PROP 6,P?SYNONYM
+ W?COURTYARD
+ W?YARD
+ W?ROOM
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?CASTLE
+ .BYTE A?COURT
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ COURTYARD
+ .PROP 7,P?GLOBAL
+ .BYTE FRONT-GATE
+ .BYTE MOON
+ .BYTE FRONT-DOOR
+ .BYTE OLD-GREAT-HALL
+ .BYTE OCEAN
+ .BYTE WINDOW
+ .BYTE CHAIR
+ .PROP 2,P?THINGS
+ PT?208
+ .BYTE 0
+ .ENDT
+
+T?SECRET-LANDING-LIB:: .TABLE ; TABLE FOR OBJECT SECRET-LANDING-LIB
+ .STRL "library landing"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE SECRET-IAN-PASSAGE ; TO ROOM
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .PROP 5,P?SW ; CONDITIONAL EXIT
+ .BYTE LIBRARY ; TO ROOM
+ .BYTE SECRET-LIBRARY-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE LIBRARY ; TO ROOM
+ .BYTE SECRET-LIBRARY-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE DINING-PASSAGE ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE LIBRARY ; TO ROOM
+ .BYTE SECRET-LIBRARY-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE LIBRARY ; TO ROOM
+ .BYTE SECRET-LIBRARY-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ SECRET-LANDING-LIB-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?LIBRARY
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ SECRET-LANDING-LIB
+ .PROP 5,P?GLOBAL
+ .BYTE SECRET-LIBRARY-DOOR
+ .BYTE LIBRARY
+ .BYTE LEVER
+ .BYTE LADDER
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?POND:: .TABLE ; TABLE FOR OBJECT POND
+ .STRL "goldfish pond"
+ .PROP 2,P?ACTION
+ POND-F
+ .PROP 6,P?SYNONYM
+ W?POND
+ W?WATER
+ W?FOUNTAIN
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?STONE
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?LOVER-PIC:: .TABLE ; TABLE FOR OBJECT LOVER-PIC
+ .STRL "Deirdre's portrait"
+ .PROP 2,P?ACTION
+ LOVER-PIC-F
+ .PROP 8,P?SYNONYM
+ W?PORTRAIT
+ W?PICTURE
+ W?PAINTING
+ W?WATERCOLOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?VIV'S
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .BYTE A?ART
+ .BYTE A?DEIRDRE
+ .BYTE A?DEE
+ .BYTE 0
+ .ENDT
+
+T?WINDOW:: .TABLE ; TABLE FOR OBJECT WINDOW
+ .STRL "window"
+ .PROP 2,P?ACTION
+ WINDOW-F
+ .PROP 8,P?SYNONYM
+ W?WINDOW
+ W?WINDSHIELD
+ W?WINDSCREEN
+ W?DOOR
+ .BYTE 0
+ .ENDT
+
+T?PUNCHBOWL:: .TABLE ; TABLE FOR OBJECT PUNCHBOWL
+ .STRL "punchbowl"
+ .PROP 2,P?ACTION
+ PUNCHBOWL-F
+ .PROP 4,P?SYNONYM
+ W?PUNCHBOWL
+ W?BOWL
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?PUNCH
+ .PROP 2,P?CAPACITY
+ 9
+ .PROP 2,P?SIZE
+ 10
+ .BYTE 0
+ .ENDT
+
+T?WENDISH-CHAIR:: .TABLE ; TABLE FOR OBJECT WENDISH-CHAIR
+ .STRL "armchair"
+ .PROP 6,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ W?ARMCHAIR
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?ARM
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?MEMENTO:: .TABLE ; TABLE FOR OBJECT MEMENTO
+ .STRL "memento"
+ .PROP 2,P?ACTION
+ MEMENTO-F
+ .PROP 6,P?SYNONYM
+ W?PAINTING
+ W?CARVING
+ W?SKELETON
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?OIL
+ .BYTE A?ART
+ .BYTE A?JADE
+ .PROP 2,P?GENERIC
+ GENERIC-SKELETON
+ .BYTE 0
+ .ENDT
+
+T?HORN:: .TABLE ; TABLE FOR OBJECT HORN
+ .STRL "horn"
+ .PROP 2,P?ACTION
+ HORN-F
+ .PROP 2,P?SYNONYM
+ W?HORN
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?MOTOR
+ .BYTE 0
+ .ENDT
+
+T?BUST:: .TABLE ; TABLE FOR OBJECT BUST
+ .STRL "bronze bust"
+ .PROP 2,P?ACTION
+ BUST-F
+ .PROP 8,P?SYNONYM
+ W?BUST
+ W?STATUE
+ W?SCULPT
+ W?LIONEL
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?BRONZE
+ .BYTE A?LI'S
+ .BYTE A?LIONEL
+ .PROP 2,P?DESCFCN
+ BUST-D
+ .PROP 2,P?CAPACITY
+ 5
+ .PROP 2,P?SIZE
+ 13
+ .BYTE 0
+ .ENDT
+
+T?MEMENTO-2:: .TABLE ; TABLE FOR OBJECT MEMENTO-2
+ .STRL "memento"
+ .PROP 2,P?ACTION
+ MEMENTO-F
+ .PROP 8,P?SYNONYM
+ W?SHELL
+ W?FIGURE
+ W?INDIAN
+ W?DOCTOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?OYSTER
+ .BYTE A?PAPIER
+ .BYTE A?MACHE
+ .BYTE A?WITCH
+ .BYTE 0
+ .ENDT
+
+T?SECRET-JACK-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-JACK-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?SECRET-VIVIEN-PASSAGE:: .TABLE ; TABLE FOR OBJECT SECRET-VIVIEN-PASSAGE
+ .STRL "Vivien's entrance"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE VIVIEN-ROOM ; TO ROOM
+ .BYTE SECRET-VIVIEN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE YOUR-CLOSET ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE VIVIEN-ROOM ; TO ROOM
+ .BYTE SECRET-VIVIEN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE VIVIEN-ROOM ; TO ROOM
+ .BYTE SECRET-VIVIEN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ SECRET-VIVIEN-PASSAGE-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ SECRET-LANDING-TAM
+ .PROP 3,P?GLOBAL
+ .BYTE SECRET-VIVIEN-DOOR
+ .BYTE VIVIEN-ROOM
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?JEWELRY-CASE:: .TABLE ; TABLE FOR OBJECT JEWELRY-CASE
+ .STRL "jewelry case"
+ .PROP 2,P?ACTION
+ JEWELRY-CASE-F
+ .PROP 4,P?SYNONYM
+ W?CASE
+ W?BOX
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?JEWELRY
+ .BYTE A?HER
+ .BYTE A?TAM'S
+ .PROP 2,P?CAPACITY
+ 8
+ .BYTE 0
+ .ENDT
+
+T?SECRET-LANDING-JACK:: .TABLE ; TABLE FOR OBJECT SECRET-LANDING-JACK
+ .STRL "Jack's landing"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE JACK-ROOM ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NE ; CONDITIONAL EXIT
+ .BYTE JACK-ROOM ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 1,P?SE ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE JACK-ROOM ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE JACK-ROOM ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ SECRET-LANDING-JACK-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .BYTE A?SECRET
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ SECRET-LANDING-JACK
+ .PROP 4,P?GLOBAL
+ .BYTE SECRET-JACK-DOOR
+ .BYTE JACK-ROOM
+ .BYTE LEVER
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?OIL-PAINTING:: .TABLE ; TABLE FOR OBJECT OIL-PAINTING
+ .STRL "oil painting"
+ .PROP 2,P?ACTION
+ BROCHURE-PSEUDO
+ .PROP 6,P?SYNONYM
+ W?PORTRAIT
+ W?PICTURE
+ W?PAINTING
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?OIL
+ .BYTE A?ART
+ .BYTE 0
+ .ENDT
+
+T?RECORDER:: .TABLE ; TABLE FOR OBJECT RECORDER
+ .STRL "small tape recorder"
+ .PROP 2,P?ACTION
+ RECORDER-F
+ .PROP 6,P?SYNONYM
+ W?RECORD
+ W?TAPE
+ W?TIMER
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?LI'S
+ .BYTE A?HIS
+ .BYTE A?TAPE
+ .BYTE A?SMALL
+ .BYTE A?CLOCKWORK
+ .PROP 2,P?GENERIC
+ GENERIC-RECORDER
+ .BYTE 0
+ .ENDT
+
+T?KITCHEN:: .TABLE ; TABLE FOR OBJECT KITCHEN
+ .STRL "kitchen"
+ .PROP 2,P?EAST ; IMPOSSIBLE EXIT
+ STR?246 ; FAILURE MESSAGE
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .PROP 2,P?ACTION
+ KITCHEN-F
+ .PROP 2,P?SYNONYM
+ W?KITCHEN
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?STATION
+ KITCHEN
+ .PROP 3,P?GLOBAL
+ .BYTE CHAIR
+ .BYTE BELL
+ .BYTE STAIRS
+ .PROP 2,P?THINGS
+ PT?608
+ .BYTE 0
+ .ENDT
+
+T?SECRET-IAN-PASSAGE:: .TABLE ; TABLE FOR OBJECT SECRET-IAN-PASSAGE
+ .STRL "Ian's entrance"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE HYDE-CLOSET ; TO ROOM
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE IAN-ROOM ; TO ROOM
+ .BYTE SECRET-IAN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-LIB ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE IAN-ROOM ; TO ROOM
+ .BYTE SECRET-IAN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE IAN-ROOM ; TO ROOM
+ .BYTE SECRET-IAN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ SECRET-IAN-PASSAGE-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?IAN'S
+ .BYTE A?HIS
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ SECRET-IAN-PASSAGE
+ .PROP 3,P?GLOBAL
+ .BYTE SECRET-IAN-DOOR
+ .BYTE IAN-ROOM
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?DINING-ROOM:: .TABLE ; TABLE FOR OBJECT DINING-ROOM
+ .STRL "dining room"
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .BYTE DINING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .BYTE DINING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ DINING-ROOM-F
+ .PROP 4,P?SYNONYM
+ W?ROOM
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DINING
+ .BYTE A?SLIDING
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ DINING-ROOM
+ .PROP 4,P?GLOBAL
+ .BYTE DINING-ROOM
+ .BYTE FIREPLACE
+ .BYTE WINDOW
+ .BYTE OIL-PAINTING
+ .PROP 2,P?THINGS
+ PT?508
+ .BYTE 0
+ .ENDT
+
+T?YOUR-ROOM:: .TABLE ; TABLE FOR OBJECT YOUR-ROOM
+ .STRL "your bedroom"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE YOUR-BATHROOM ; TO ROOM
+ .BYTE YOUR-BATHROOM-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE YOUR-CLOSET ; TO ROOM
+ .BYTE SECRET-YOUR-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .BYTE YOUR-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE YOUR-CLOSET ; TO ROOM
+ .BYTE SECRET-YOUR-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .BYTE YOUR-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ YOUR-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?ROOM
+ W?BEDROOM
+ W?DOOR
+ .PROP 7,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?BED
+ .BYTE A?ROOM
+ .BYTE A?BEDROOM
+ .BYTE A?SPARE
+ .BYTE A?F.C
+ .BYTE A?F.C
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ GALLERY
+ .PROP 6,P?GLOBAL
+ .BYTE YOUR-ROOM
+ .BYTE SECRET-YOUR-DOOR
+ .BYTE YOUR-BATHROOM
+ .BYTE FIREPLACE
+ .BYTE WINDOW
+ .BYTE YOUR-BATHROOM-DOOR
+ .BYTE 0
+ .ENDT
+
+T?ANDIRON:: .TABLE ; TABLE FOR OBJECT ANDIRON
+ .STRL "andiron"
+ .PROP 2,P?ACTION
+ ANDIRON-F
+ .PROP 6,P?SYNONYM
+ W?ANDIRON
+ W?HEAD
+ W?GRILLWORK
+ .BYTE 0
+ .ENDT
+
+T?LENS:: .TABLE ; TABLE FOR OBJECT LENS
+ .STRL "contact lens"
+ .PROP 4,P?SYNONYM
+ W?LENS
+ W?LENSES
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?CONTACT
+ .BYTE A?FIRST
+ .PROP 2,P?SIZE
+ 1
+ .BYTE 0
+ .ENDT
+
+T?INTDIR:: .TABLE ; TABLE FOR OBJECT INTDIR
+ .STRL "direction"
+ .PROP 2,P?SYNONYM
+ W?DIRECTION
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?NORTH
+ .BYTE A?EAST
+ .BYTE A?SOUTH
+ .BYTE A?WEST
+ .BYTE A?NE
+ .BYTE A?NW
+ .BYTE A?SE
+ .BYTE A?SW
+ .BYTE 0
+ .ENDT
+
+T?ROOMS:: .TABLE ; TABLE FOR OBJECT ROOMS
+ .STRL "that"
+ .BYTE 0
+ .ENDT
+
+T?LIMBO:: .TABLE ; TABLE FOR OBJECT LIMBO
+ .STRL "limbo"
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE LOVER-PATH ; TO ROOM
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?STATION
+ LOVER-PATH
+ .BYTE 0
+ .ENDT
+
+T?EAST-HALL:: .TABLE ; TABLE FOR OBJECT EAST-HALL
+ .STRL "east hall"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE IRIS-ROOM ; TO ROOM
+ .BYTE IRIS-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 1,P?SW ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE WENDISH-ROOM ; TO ROOM
+ .BYTE WENDISH-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 6,P?SYNONYM
+ W?HALL
+ W?HALLWAY
+ W?ROOM
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?EAST
+ .PROP 2,P?LDESC
+ STR?248
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?STATION
+ EAST-HALL
+ .PROP 2,P?GLOBAL
+ .BYTE WENDISH-ROOM
+ .BYTE IRIS-ROOM
+ .BYTE 0
+ .ENDT
+
+T?PASSAGE-1:: .TABLE ; TABLE FOR OBJECT PASSAGE-1
+ .STRL "tower passage"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE SITTING-PASSAGE ; TO ROOM
+ .PROP 1,P?SW ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-JACK ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-JACK ; TO ROOM
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE SITTING-PASSAGE ; TO ROOM
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-JACK ; TO ROOM
+ .PROP 2,P?ACTION
+ PASSAGE-1-F
+ .PROP 6,P?SYNONYM
+ W?PASSAGE
+ W?ENTRANCE
+ W?LANDING
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?TOWER
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ PASSAGE-1
+ .PROP 2,P?GLOBAL
+ .BYTE LADDER
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?MIRROR-GLOBAL:: .TABLE ; TABLE FOR OBJECT MIRROR-GLOBAL
+ .STRL "mirror"
+ .PROP 2,P?ACTION
+ MIRROR-GLOBAL-F
+ .PROP 4,P?SYNONYM
+ W?MIRROR
+ W?GLASS
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?LOOKING
+ .BYTE A?CHEVAL
+ .BYTE 0
+ .ENDT
+
+T?PLAYER:: .TABLE ; TABLE FOR OBJECT PLAYER
+ .STRL "yourself"
+ .PROP 2,P?ACTION
+ PLAYER-F
+ .PROP 4,P?SYNONYM
+ W?ME
+ W?MYSELF
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 0
+ .BYTE 0
+ .ENDT
+
+T?PEEPHOLE-2:: .TABLE ; TABLE FOR OBJECT PEEPHOLE-2
+ .STRL "peephole"
+ .PROP 2,P?ACTION
+ PEEPHOLE-2-F
+ .PROP 8,P?SYNONYM
+ W?HOLE
+ W?PEEKHOLE
+ W?PEEPHOLE
+ W?OPENING
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PEEP
+ .BYTE 0
+ .ENDT
+
+T?LOCAL-GLOBALS:: .TABLE ; TABLE FOR OBJECT LOCAL-GLOBALS
+ .STRL "stone"
+ .PROP 2,P?ACTION
+ LOCAL-GLOBALS-F
+ .PROP 2,P?SYNONYM
+ W?STONE
+ .BYTE 0
+ .ENDT
+
+T?CHAIR:: .TABLE ; TABLE FOR OBJECT CHAIR
+ .STRL "chair"
+ .PROP 2,P?ACTION
+ CHAIR-F
+ .PROP 8,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ W?CHAIRS
+ W?BENCH
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?WING
+ .BYTE 0
+ .ENDT
+
+T?HEAD:: .TABLE ; TABLE FOR OBJECT HEAD
+ .STRL "head"
+ .PROP 2,P?ACTION
+ HEAD-F
+ .PROP 2,P?SYNONYM
+ W?HEAD
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE A?B'S
+ .BYTE 0
+ .ENDT
+
+T?HER:: .TABLE ; TABLE FOR OBJECT HER
+ .STRL "her"
+ .PROP 4,P?SYNONYM
+ W?HER
+ W?MADAM
+ .BYTE 0
+ .ENDT
+
+T?TAPESTRY:: .TABLE ; TABLE FOR OBJECT TAPESTRY
+ .STRL "tapestry"
+ .PROP 2,P?ACTION
+ TAPESTRY-F
+ .PROP 8,P?SYNONYM
+ W?TAPESTRY
+ W?UNICORN
+ W?MAIDEN
+ W?ARM
+ .BYTE 0
+ .ENDT
+
+T?CANE:: .TABLE ; TABLE FOR OBJECT CANE
+ .STRL "cane"
+ .PROP 2,P?ACTION
+ CANE-F
+ .PROP 4,P?SYNONYM
+ W?CANE
+ W?HANDLE
+ .BYTE 0
+ .ENDT
+
+T?MUSIC:: .TABLE ; TABLE FOR OBJECT MUSIC
+ .STRL "piece of music"
+ .PROP 2,P?ACTION
+ MUSIC-F
+ .PROP 6,P?SYNONYM
+ W?PIECE
+ W?MUSIC
+ W?SONG
+ .PROP 2,P?SIZE
+ 2
+ .BYTE 0
+ .ENDT
+
+T?VOICE:: .TABLE ; TABLE FOR OBJECT VOICE
+ .STRL "voice"
+ .PROP 2,P?ACTION
+ VOICE-F
+ .PROP 6,P?SYNONYM
+ W?VOICE
+ W?SPEAKER
+ W?LOUDSPEAKER
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?LOUD
+ .BYTE A?HIDDEN
+ .BYTE A?LI'S
+ .BYTE A?B'S
+ .BYTE A?HIS
+ .BYTE 0
+ .ENDT
+
+T?FRONT-GATE:: .TABLE ; TABLE FOR OBJECT FRONT-GATE
+ .STRL "front gate"
+ .PROP 2,P?ACTION
+ FRONT-GATE-F
+ .PROP 2,P?SYNONYM
+ W?GATE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?FRONT
+ .BYTE A?TALL
+ .BYTE A?IRON
+ .BYTE 0
+ .ENDT
+
+T?HYDE-CHAIR:: .TABLE ; TABLE FOR OBJECT HYDE-CHAIR
+ .STRL "armchair"
+ .PROP 4,P?SYNONYM
+ W?CHAIR
+ W?ARMCHAIR
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?ARM
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?OFFICE:: .TABLE ; TABLE FOR OBJECT OFFICE
+ .STRL "office"
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE OFFICE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE OFFICE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ OFFICE-F
+ .PROP 4,P?SYNONYM
+ W?OFFICE
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?OFFICE
+ .BYTE A?EAST
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ CORR-2
+ .PROP 3,P?GLOBAL
+ .BYTE OFFICE
+ .BYTE CHAIR
+ .BYTE FIREPLACE
+ .PROP 2,P?THINGS
+ PT?409
+ .BYTE 0
+ .ENDT
+
+T?PEEPHOLE:: .TABLE ; TABLE FOR OBJECT PEEPHOLE
+ .STRL "peephole"
+ .PROP 2,P?ACTION
+ PEEPHOLE-F
+ .PROP 8,P?SYNONYM
+ W?HOLE
+ W?PEEKHOLE
+ W?PEEPHOLE
+ W?OPENING
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PEEP
+ .BYTE 0
+ .ENDT
+
+T?YOUR-COLOR:: .TABLE ; TABLE FOR OBJECT YOUR-COLOR
+ .STRL "your favorite color"
+ .PROP 2,P?ACTION
+ YOUR-COLOR-F
+ .PROP 2,P?SYNONYM
+ W?COLOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?FAVORITE
+ .BYTE A?F.C
+ .BYTE A?F.C
+ .BYTE 0
+ .ENDT
+
+T?CHAIR-DINING:: .TABLE ; TABLE FOR OBJECT CHAIR-DINING
+ .STRL "chair"
+ .PROP 8,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ W?CHAIRS
+ W?BENCH
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DINING
+ .BYTE A?MY
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?DRESSING-MIRROR:: .TABLE ; TABLE FOR OBJECT DRESSING-MIRROR
+ .STRL "side mirror"
+ .PROP 2,P?ACTION
+ DRESSING-MIRROR-F
+ .PROP 2,P?SYNONYM
+ W?MIRROR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?DRESSING
+ .BYTE A?SIDE
+ .BYTE A?TABLE
+ .BYTE 0
+ .ENDT
+
+T?LUGGAGE:: .TABLE ; TABLE FOR OBJECT LUGGAGE
+ .STRL "your luggage"
+ .PROP 2,P?ACTION
+ LUGGAGE-F
+ .PROP 8,P?SYNONYM
+ W?LUGGAGE
+ W?BAG
+ W?CASE
+ W?SUITCASE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?MY
+ .PROP 2,P?CAPACITY
+ 88
+ .PROP 2,P?SIZE
+ 30
+ .BYTE 0
+ .ENDT
+
+T?EYE:: .TABLE ; TABLE FOR OBJECT EYE
+ .STRL "eye"
+ .PROP 2,P?ACTION
+ EYE-F
+ .PROP 4,P?SYNONYM
+ W?EYE
+ W?EYES
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE A?B'S
+ .BYTE 0
+ .ENDT
+
+T?NECKLACE:: .TABLE ; TABLE FOR OBJECT NECKLACE
+ .STRL "black pearl necklace"
+ .PROP 6,P?SYNONYM
+ W?PEARLS
+ W?NECKLACE
+ W?STRING
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?BLACK
+ .BYTE A?PEARL
+ .PROP 2,P?TEXT
+ STR?280
+ .PROP 2,P?SIZE
+ 5
+ .BYTE 0
+ .ENDT
+
+T?YOUR-BATHROOM:: .TABLE ; TABLE FOR OBJECT YOUR-BATHROOM
+ .STRL "your bathroom"
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE YOUR-BATHROOM-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE YOUR-BATHROOM-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ YOUR-BATHROOM-F
+ .PROP 4,P?SYNONYM
+ W?ROOM
+ W?BATHROOM
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?BATH
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ YOUR-ROOM
+ .PROP 1,P?GLOBAL
+ .BYTE YOUR-BATHROOM-DOOR
+ .PROP 2,P?THINGS
+ PT?708
+ .BYTE 0
+ .ENDT
+
+T?JACK-TAPE:: .TABLE ; TABLE FOR OBJECT JACK-TAPE
+ .STRL "secret tape recorder"
+ .PROP 2,P?ACTION
+ JACK-TAPE-F
+ .PROP 6,P?SYNONYM
+ W?TAPE
+ W?RECORD
+ W?EVIDENCE
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?TAPE
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-RECORDER
+ .BYTE 0
+ .ENDT
+
+T?SECRET-DINING-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-DINING-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .BYTE 0
+ .ENDT
+
+T?EARRING:: .TABLE ; TABLE FOR OBJECT EARRING
+ .STRL "earring"
+ .PROP 2,P?ACTION
+ EARRING-F
+ .PROP 6,P?SYNONYM
+ W?EARRING
+ W?SETTING
+ W?SOCKET
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .PROP 2,P?TEXT
+ STR?263
+ .PROP 2,P?SIZE
+ 1
+ .BYTE 0
+ .ENDT
+
+T?GLOBAL-OBJECTS:: .TABLE ; TABLE FOR OBJECT GLOBAL-OBJECTS
+ .STRL "GO"
+ .PROP 2,P?TEXT
+ 0
+ .BYTE 0
+ .ENDT
+
+T?WEST-HALL:: .TABLE ; TABLE FOR OBJECT WEST-HALL
+ .STRL "west hall"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE HYDE-ROOM ; TO ROOM
+ .BYTE HYDE-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?SE ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE IAN-ROOM ; TO ROOM
+ .BYTE IAN-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 6,P?SYNONYM
+ W?HALL
+ W?HALLWAY
+ W?ROOM
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?WEST
+ .PROP 2,P?LDESC
+ STR?248
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?STATION
+ WEST-HALL
+ .PROP 2,P?GLOBAL
+ .BYTE HYDE-ROOM
+ .BYTE IAN-ROOM
+ .BYTE 0
+ .ENDT
+
+T?BRICKS:: .TABLE ; TABLE FOR OBJECT BRICKS
+ .STRL "bunch of loose bricks"
+ .PROP 2,P?ACTION
+ BRICKS-F
+ .PROP 6,P?SYNONYM
+ W?BUNCH
+ W?BRICKS
+ W?BRICK
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?LOOSE
+ .PROP 2,P?DESCFCN
+ BRICKS-D
+ .BYTE 0
+ .ENDT
+
+T?PLAYER-NAME:: .TABLE ; TABLE FOR OBJECT PLAYER-NAME
+ .STRL "yourself"
+ .PROP 2,P?ACTION
+ PLAYER-NAME-F
+ .PROP 6,P?SYNONYM
+ W?L.N
+ W?WE
+ W?US
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?F.N
+ .BYTE A?L.N
+ .BYTE 0
+ .ENDT
+
+T?YOUR-CLOSET:: .TABLE ; TABLE FOR OBJECT YOUR-CLOSET
+ .STRL "your entrance"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE IRIS-CLOSET ; TO ROOM
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE SECRET-VIVIEN-PASSAGE ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE SECRET-YOUR-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE DRAWING-CLOSET ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE SECRET-YOUR-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE SECRET-YOUR-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ YOUR-CLOSET-F
+ .PROP 8,P?SYNONYM
+ W?ENTRANCE
+ W?SPACE
+ W?LANDING
+ W?PASSAGE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?SECRET
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ YOUR-CLOSET
+ .PROP 4,P?GLOBAL
+ .BYTE SECRET-YOUR-DOOR
+ .BYTE YOUR-ROOM
+ .BYTE STAIRS
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?IT:: .TABLE ; TABLE FOR OBJECT IT
+ .STRL "it"
+ .PROP 2,P?ACTION
+ IT-F
+ .PROP 4,P?SYNONYM
+ W?IT
+ W?THIS
+ .BYTE 0
+ .ENDT
+
+T?BLOWGUN:: .TABLE ; TABLE FOR OBJECT BLOWGUN
+ .STRL "blowgun"
+ .PROP 2,P?ACTION
+ BLOWGUN-F
+ .PROP 4,P?SYNONYM
+ W?GUN
+ W?BLOWGUN
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?BLOW
+ .PROP 2,P?SIZE
+ 9
+ .BYTE 0
+ .ENDT
+
+T?WENDISH-CORNER:: .TABLE ; TABLE FOR OBJECT WENDISH-CORNER
+ .STRL "Wendish's entrance"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE IRIS-CLOSET ; TO ROOM
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE WENDISH-ROOM ; TO ROOM
+ .BYTE SECRET-WENDISH-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE MIDPOINT ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE WENDISH-ROOM ; TO ROOM
+ .BYTE SECRET-WENDISH-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE WENDISH-ROOM ; TO ROOM
+ .BYTE SECRET-WENDISH-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ WENDISH-CORNER-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ WENDISH-CORNER
+ .PROP 3,P?GLOBAL
+ .BYTE SECRET-WENDISH-DOOR
+ .BYTE WENDISH-ROOM
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?ROMANCE:: .TABLE ; TABLE FOR OBJECT ROMANCE
+ .STRL "Tamara's romance"
+ .PROP 8,P?SYNONYM
+ W?ROMANCE
+ W?ENGAGE
+ W?MARRIAGE
+ W?LOVE
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?HER
+ .BYTE A?HIS
+ .BYTE 0
+ .ENDT
+
+T?LENS-2:: .TABLE ; TABLE FOR OBJECT LENS-2
+ .STRL "second contact lens"
+ .PROP 2,P?ACTION
+ LENS-2-F
+ .PROP 4,P?SYNONYM
+ W?LENS
+ W?LENSES
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECOND
+ .BYTE A?CONTACT
+ .PROP 2,P?SIZE
+ 1
+ .PROP 2,P?GENERIC
+ GENERIC-LENS
+ .BYTE 0
+ .ENDT
+
+T?YOUR-CHAIR:: .TABLE ; TABLE FOR OBJECT YOUR-CHAIR
+ .STRL "wing chair"
+ .PROP 2,P?SYNONYM
+ W?CHAIR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?WING
+ .BYTE A?MY
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?GLASS-EYE:: .TABLE ; TABLE FOR OBJECT GLASS-EYE
+ .STRL "glass eye"
+ .PROP 2,P?ACTION
+ GLASS-EYE-F
+ .PROP 2,P?SYNONYM
+ W?EYE
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?GLASS
+ .BYTE A?RHINO
+ .BYTE A?YELLOW
+ .BYTE A?RH'S
+ .PROP 2,P?SIZE
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-EYE
+ .BYTE 0
+ .ENDT
+
+T?TWEED-OUTFIT:: .TABLE ; TABLE FOR OBJECT TWEED-OUTFIT
+ .STRL "tweed outfit"
+ .PROP 2,P?ACTION
+ CLOTHES-FCN
+ .PROP 8,P?SYNONYM
+ W?CLOTHES
+ W?OUTFIT
+ W?TWEEDS
+ W?SUIT
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?TWEED
+ .BYTE A?WOOLEN
+ .BYTE A?WOOL
+ .PROP 2,P?SIZE
+ 20
+ .PROP 2,P?GENERIC
+ GENERIC-CLOTHES
+ .BYTE 0
+ .ENDT
+
+T?SECRET-LIBRARY-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-LIBRARY-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .BYTE A?LIBRARY
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?CANDLE:: .TABLE ; TABLE FOR OBJECT CANDLE
+ .STRL "ornate candle sconce"
+ .PROP 2,P?ACTION
+ CANDLE-F
+ .PROP 4,P?SYNONYM
+ W?CANDLE
+ W?SCONCE
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?ORNATE
+ .BYTE A?CANDLE
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .BYTE 0
+ .ENDT
+
+T?INKWELL:: .TABLE ; TABLE FOR OBJECT INKWELL
+ .STRL "inkwell"
+ .PROP 2,P?ACTION
+ INKWELL-F
+ .PROP 4,P?SYNONYM
+ W?INKWELL
+ W?WELL
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?INK
+ .PROP 2,P?CAPACITY
+ 0
+ .PROP 2,P?SIZE
+ 4
+ .PROP 2,P?GENERIC
+ GENERIC-WELL
+ .BYTE 0
+ .ENDT
+
+T?ARTIFACT:: .TABLE ; TABLE FOR OBJECT ARTIFACT
+ .STRL "hidden treasure"
+ .PROP 2,P?ACTION
+ ARTIFACT-F
+ .PROP 4,P?SYNONYM
+ W?ARTIFACT
+ W?TREASURE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?VALUABLE
+ .BYTE A?MISSING
+ .BYTE A?HIDDEN
+ .BYTE 0
+ .ENDT
+
+T?IAN-CHAIR:: .TABLE ; TABLE FOR OBJECT IAN-CHAIR
+ .STRL "reclining Morris chair"
+ .PROP 4,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?RECLINE
+ .BYTE A?MORRIS
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?MOON:: .TABLE ; TABLE FOR OBJECT MOON
+ .STRL "full moon"
+ .PROP 2,P?ACTION
+ MOON-F
+ .PROP 6,P?SYNONYM
+ W?MOON
+ W?MIST
+ W?SKY
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?FULL
+ .BYTE 0
+ .ENDT
+
+T?DOCTOR:: .TABLE ; TABLE FOR OBJECT DOCTOR
+ .STRL "Dr. Wendish"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?184 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ DOCTOR-F
+ .PROP 8,P?SYNONYM
+ W?DOCTOR
+ W?NICHOLAS
+ W?WENDISH
+ W?MAN
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?DR
+ .BYTE A?DOCTOR
+ .BYTE A?NICHOLAS
+ .BYTE A?WENDISH
+ .BYTE A?MAN
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 4
+ .PROP 2,P?DESCFCN
+ DOCTOR-D
+ .PROP 2,P?CAPACITY
+ 40
+ .PROP 2,P?STATION
+ A?DOC'S
+ .BYTE 0
+ .ENDT
+
+T?VIVIEN-CHAIR:: .TABLE ; TABLE FOR OBJECT VIVIEN-CHAIR
+ .STRL "chaise longue"
+ .PROP 8,P?SYNONYM
+ W?CHAIR
+ W?CHAISE
+ W?LONGUE
+ W?LOUNGE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?CHAISE
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?BELL:: .TABLE ; TABLE FOR OBJECT BELL
+ .STRL "bell"
+ .PROP 2,P?ACTION
+ BELL-F
+ .PROP 4,P?SYNONYM
+ W?BELL
+ W?GONG
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?DINNER
+ .PROP 2,P?GENERIC
+ GENERIC-BELL
+ .BYTE 0
+ .ENDT
+
+T?SITTING-ROOM:: .TABLE ; TABLE FOR OBJECT SITTING-ROOM
+ .STRL "sitting room"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .BYTE SITTING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?DOWN ; CONDITIONAL EXIT
+ .BYTE SITTING-PASSAGE ; TO ROOM
+ .BYTE SECRET-SITTING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE SITTING-PASSAGE ; TO ROOM
+ .BYTE SECRET-SITTING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .BYTE SITTING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ SITTING-ROOM-F
+ .PROP 4,P?SYNONYM
+ W?ROOM
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SITTING
+ .BYTE A?SLIDING
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ CORR-1
+ .PROP 5,P?GLOBAL
+ .BYTE SITTING-ROOM
+ .BYTE SECRET-SITTING-DOOR
+ .BYTE CHAIR
+ .BYTE FIREPLACE
+ .BYTE WINDOW
+ .BYTE 0
+ .ENDT
+
+T?SLEEP-GLOBAL:: .TABLE ; TABLE FOR OBJECT SLEEP-GLOBAL
+ .STRL "sleep"
+ .PROP 2,P?ACTION
+ SLEEP-GLOBAL-F
+ .PROP 2,P?SYNONYM
+ W?SLEEP
+ .BYTE 0
+ .ENDT
+
+T?LADDER:: .TABLE ; TABLE FOR OBJECT LADDER
+ .STRL "ladder"
+ .PROP 2,P?ACTION
+ LADDER-F
+ .PROP 2,P?SYNONYM
+ W?LADDER
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?NARROW
+ .BYTE 0
+ .ENDT
+
+T?BUTLER:: .TABLE ; TABLE FOR OBJECT BUTLER
+ .STRL "Bolitho"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?190 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ BUTLER-F
+ .PROP 6,P?SYNONYM
+ W?BOLITHO
+ W?BUTLER
+ W?MAN
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?WHITE
+ .BYTE A?BOLITHO
+ .BYTE A?BUTLER
+ .BYTE A?MAN
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 8
+ .PROP 2,P?DESCFCN
+ BUTLER-D
+ .PROP 2,P?TEXT
+ STR?191
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?WYVERN:: .TABLE ; TABLE FOR OBJECT WYVERN
+ .STRL "window seat"
+ .PROP 2,P?ACTION
+ WYVERN-F
+ .PROP 8,P?SYNONYM
+ W?SEAT
+ W?WYVERN
+ W?GARGOYLE
+ W?DRAGON
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?WINDOW
+ .BYTE A?OTHER
+ .BYTE 0
+ .ENDT
+
+T?MUSTACHE:: .TABLE ; TABLE FOR OBJECT MUSTACHE
+ .STRL "Wendish's mustache"
+ .PROP 2,P?ACTION
+ MUSTACHE-F
+ .PROP 2,P?SYNONYM
+ W?MUSTACHE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .BYTE 0
+ .ENDT
+
+T?CREW-GLOBAL:: .TABLE ; TABLE FOR OBJECT CREW-GLOBAL
+ .STRL "bunch of guests"
+ .PROP 2,P?ACTION
+ CREW-GLOBAL-F
+ .PROP 4,P?SYNONYM
+ W?BUNCH
+ W?GUESTS
+ .BYTE 0
+ .ENDT
+
+T?DESK:: .TABLE ; TABLE FOR OBJECT DESK
+ .STRL "old-fashioned desk"
+ .PROP 2,P?SYNONYM
+ W?DESK
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .BYTE A?OLD
+ .BYTE A?OLD-FASHION
+ .BYTE A?TALL
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?GAME-ROOM:: .TABLE ; TABLE FOR OBJECT GAME-ROOM
+ .STRL "game room"
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE GAME-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE GAME-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 4,P?SYNONYM
+ W?ROOM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?GAME
+ .BYTE A?GAME-ROOM
+ .BYTE A?ROOM
+ .BYTE A?BILLIARD
+ .PROP 2,P?LDESC
+ STR?268
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 4
+ .PROP 2,P?STATION
+ CORR-3
+ .PROP 2,P?GLOBAL
+ .BYTE GAME-ROOM
+ .BYTE CHAIR
+ .PROP 2,P?THINGS
+ PT?809
+ .BYTE 0
+ .ENDT
+
+T?LETTER-MAID:: .TABLE ; TABLE FOR OBJECT LETTER-MAID
+ .STRL "maid's note"
+ .PROP 2,P?ACTION
+ LETTER-MAID-F
+ .PROP 4,P?SYNONYM
+ W?NOTE
+ W?NOTES
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MAID'S
+ .BYTE A?HER
+ .PROP 2,P?SIZE
+ 2
+ .BYTE 0
+ .ENDT
+
+T?DANGER:: .TABLE ; TABLE FOR OBJECT DANGER
+ .STRL "danger"
+ .PROP 6,P?SYNONYM
+ W?DANGER
+ W?THREAT
+ W?ATTACK
+ .BYTE 0
+ .ENDT
+
+T?DRESSING-TABLE-LG:: .TABLE ; TABLE FOR OBJECT DRESSING-TABLE-LG
+ .STRL "dressing table"
+ .PROP 2,P?ACTION
+ DRESSING-TABLE-LG-F
+ .PROP 8,P?SYNONYM
+ W?TABLE
+ W?BENCH
+ W?CHEST
+ W?DRESSE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?DRESSING
+ .BYTE A?ROLL-TOP
+ .BYTE A?WRITING
+ .BYTE 0
+ .ENDT
+
+T?COMPUTER:: .TABLE ; TABLE FOR OBJECT COMPUTER
+ .STRL "computer"
+ .PROP 2,P?ACTION
+ COMPUTER-F
+ .PROP 2,P?SYNONYM
+ W?COMPUTER
+ .BYTE 0
+ .ENDT
+
+T?LENS-1:: .TABLE ; TABLE FOR OBJECT LENS-1
+ .STRL "first contact lens"
+ .PROP 4,P?SYNONYM
+ W?LENS
+ W?LENSES
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?FIRST
+ .BYTE A?CONTACT
+ .PROP 2,P?SIZE
+ 1
+ .PROP 2,P?GENERIC
+ GENERIC-LENS
+ .BYTE 0
+ .ENDT
+
+T?WENDISH-BOOK:: .TABLE ; TABLE FOR OBJECT WENDISH-BOOK
+ .STRL "lab notebook"
+ .PROP 2,P?ACTION
+ WENDISH-BOOK-F
+ .PROP 8,P?SYNONYM
+ W?NOTEBOOK
+ W?BOOK
+ W?BOOKS
+ W?EVIDENCE
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .BYTE A?NOTE
+ .BYTE A?LAB
+ .BYTE A?LABORATORY
+ .PROP 2,P?CHARACTER
+ 4
+ .PROP 2,P?CAPACITY
+ 4
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?TAMARA-EVIDENCE:: .TABLE ; TABLE FOR OBJECT TAMARA-EVIDENCE
+ .STRL "Tamara's receipt"
+ .PROP 2,P?ACTION
+ TAMARA-EVIDENCE-F
+ .PROP 4,P?SYNONYM
+ W?EVIDENCE
+ W?RECEIPT
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?SIZE
+ 2
+ .BYTE 0
+ .ENDT
+
+T?YOUR-SWITCH:: .TABLE ; TABLE FOR OBJECT YOUR-SWITCH
+ .STRL "hidden switch"
+ .PROP 2,P?ACTION
+ YOUR-SWITCH-F
+ .PROP 2,P?SYNONYM
+ W?SWITCH
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?SMALL
+ .BYTE A?HIDDEN
+ .BYTE 0
+ .ENDT
+
+T?SECRET-WENDISH-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-WENDISH-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?PAINTER:: .TABLE ; TABLE FOR OBJECT PAINTER
+ .STRL "Vivien"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?187 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ PAINTER-F
+ .PROP 8,P?SYNONYM
+ W?VIVIEN
+ W?VIV
+ W?PENTREATH
+ W?WOMAN
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TALL
+ .BYTE A?MS
+ .BYTE A?MISS
+ .BYTE A?MRS
+ .BYTE A?VIVIEN
+ .BYTE A?VIV
+ .BYTE A?PENTREATH
+ .BYTE A?WOMAN
+ .PROP 2,P?LDESC
+ 2
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?DESCFCN
+ PAINTER-D
+ .PROP 2,P?TEXT
+ STR?188
+ .PROP 2,P?CAPACITY
+ 40
+ .PROP 2,P?STATION
+ A?VIV'S
+ .BYTE 0
+ .ENDT
+
+T?CHAPEL:: .TABLE ; TABLE FOR OBJECT CHAPEL
+ .STRL "chapel"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE CHAPEL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE CHAPEL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ CHAPEL-F
+ .PROP 4,P?SYNONYM
+ W?CHAPEL
+ W?DOOR
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?CHAPEL
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 4
+ .PROP 2,P?STATION
+ CORR-3
+ .PROP 2,P?GLOBAL
+ .BYTE CHAPEL
+ .BYTE CHAIR
+ .PROP 2,P?THINGS
+ PT?709
+ .BYTE 0
+ .ENDT
+
+T?DEALER:: .TABLE ; TABLE FOR OBJECT DEALER
+ .STRL "Hyde"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?186 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ DEALER-F
+ .PROP 8,P?SYNONYM
+ W?MONTAGUE
+ W?HYDE
+ W?DEALER
+ W?MAN
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TALL
+ .BYTE A?ART
+ .BYTE A?MR
+ .BYTE A?MISTER
+ .BYTE A?MONTAGUE
+ .BYTE A?HYDE
+ .BYTE A?DEALER
+ .BYTE A?MAN
+ .PROP 2,P?LDESC
+ 2
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 6
+ .PROP 2,P?DESCFCN
+ DEALER-D
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?IRON-MAIDEN:: .TABLE ; TABLE FOR OBJECT IRON-MAIDEN
+ .STRL "iron maiden"
+ .PROP 2,P?ACTION
+ IRON-MAIDEN-F
+ .PROP 8,P?SYNONYM
+ W?MAIDEN
+ W?SPACE
+ W?SPIKE
+ W?SPIKES
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?IRON
+ .BYTE 0
+ .ENDT
+
+T?VIVIEN-STUFF:: .TABLE ; TABLE FOR OBJECT VIVIEN-STUFF
+ .STRL "art supplies"
+ .PROP 2,P?ACTION
+ RANDOM-PSEUDO
+ .PROP 8,P?SYNONYM
+ W?PAD
+ W?CANVAS
+ W?SUPPLIES
+ W?EASEL
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .BYTE A?WATERCOLOR
+ .BYTE A?SKETCH
+ .BYTE A?ART
+ .BYTE A?PICTURE
+ .BYTE 0
+ .ENDT
+
+T?CORPSE:: .TABLE ; TABLE FOR OBJECT CORPSE
+ .STRL "Deirdre's body"
+ .PROP 2,P?ACTION
+ CORPSE-F
+ .PROP 2,P?SYNONYM
+ W?CORPSE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .BYTE A?DEAD
+ .BYTE 0
+ .ENDT
+
+T?LORD:: .TABLE ; TABLE FOR OBJECT LORD
+ .STRL "Lord Jack"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?177 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ LORD-F
+ .PROP 8,P?SYNONYM
+ W?LORD
+ W?JACK
+ W?TRESYLLIAN
+ W?MAN
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?TALL
+ .BYTE A?MY
+ .BYTE A?LORD
+ .BYTE A?JACK
+ .BYTE A?TRESYLLIAN
+ .BYTE A?MAN
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?DESCFCN
+ LORD-D
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?COSTUME:: .TABLE ; TABLE FOR OBJECT COSTUME
+ .STRL "ghost costume"
+ .PROP 2,P?ACTION
+ COSTUME-F
+ .PROP 8,P?SYNONYM
+ W?COSTUME
+ W?DISGUISE
+ W?GOWN
+ W?WIG
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?GHOST
+ .BYTE A?G'S
+ .BYTE A?HER
+ .BYTE A?HIS
+ .BYTE A?WHITE
+ .BYTE A?BLOND
+ .BYTE A?BLONDE
+ .BYTE A?PALE
+ .PROP 2,P?SIZE
+ 20
+ .BYTE 0
+ .ENDT
+
+T?LUMBER-ROOM:: .TABLE ; TABLE FOR OBJECT LUMBER-ROOM
+ .STRL "lumber room"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE LUMBER-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE LUMBER-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NW ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE LUMBER-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .BYTE LUMBER-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ LUMBER-ROOM-F
+ .PROP 4,P?SYNONYM
+ W?ROOM
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?LUMBER
+ .BYTE A?ROOM
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 4
+ .PROP 2,P?STATION
+ CORR-3
+ .PROP 1,P?GLOBAL
+ .BYTE LUMBER-ROOM
+ .PROP 2,P?THINGS
+ PT?609
+ .PROP 2,P?CORRIDOR
+ 0
+ .BYTE 0
+ .ENDT
+
+T?WARDROBE-LG:: .TABLE ; TABLE FOR OBJECT WARDROBE-LG
+ .STRL "wardrobe"
+ .PROP 2,P?ACTION
+ RANDOM-PSEUDO
+ .PROP 4,P?SYNONYM
+ W?WARDROBE
+ W?PRESS
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?CLOTHES
+ .BYTE 0
+ .ENDT
+
+T?UMBRELLA-STAND:: .TABLE ; TABLE FOR OBJECT UMBRELLA-STAND
+ .STRL "umbrella stand"
+ .PROP 2,P?ACTION
+ UMBRELLA-STAND-F
+ .PROP 4,P?SYNONYM
+ W?STAND
+ W?UMBRELLA
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?UMBRELLA
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?IAN-ROOM:: .TABLE ; TABLE FOR OBJECT IAN-ROOM
+ .STRL "Ian's bedroom"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE SECRET-IAN-PASSAGE ; TO ROOM
+ .BYTE SECRET-IAN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE WEST-HALL ; TO ROOM
+ .BYTE IAN-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE SECRET-IAN-PASSAGE ; TO ROOM
+ .BYTE SECRET-IAN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE WEST-HALL ; TO ROOM
+ .BYTE IAN-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ IAN-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?ROOM
+ W?BEDROOM
+ W?DOOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?IAN'S
+ .BYTE A?HIS
+ .BYTE A?BED
+ .BYTE A?ROOM
+ .BYTE A?BEDROOM
+ .BYTE A?WEST
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ WEST-HALL
+ .PROP 8,P?GLOBAL
+ .BYTE IAN-ROOM
+ .BYTE SECRET-IAN-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?1108
+ .BYTE 0
+ .ENDT
+
+T?OFFICER:: .TABLE ; TABLE FOR OBJECT OFFICER
+ .STRL "Ian"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?183 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ OFFICER-F
+ .PROP 8,P?SYNONYM
+ W?IAN
+ W?FORDYCE
+ W?OFFICE
+ W?MAN
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TALL
+ .BYTE A?BLOND
+ .BYTE A?MR
+ .BYTE A?MISTER
+ .BYTE A?IAN
+ .BYTE A?FORDYCE
+ .BYTE A?OFFICE
+ .BYTE A?MAN
+ .PROP 2,P?LDESC
+ 1
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 5
+ .PROP 2,P?DESCFCN
+ OFFICER-D
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?CREST:: .TABLE ; TABLE FOR OBJECT CREST
+ .STRL "family crest"
+ .PROP 2,P?ACTION
+ CREST-F
+ .PROP 6,P?SYNONYM
+ W?CREST
+ W?WYVERN
+ W?BAS-RELIEF
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?BRONZE
+ .BYTE A?TRESYLLIAN
+ .BYTE A?FAMILY
+ .BYTE 0
+ .ENDT
+
+T?FRONT-DOOR:: .TABLE ; TABLE FOR OBJECT FRONT-DOOR
+ .STRL "front door"
+ .PROP 2,P?ACTION
+ FRONT-DOOR-F
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?FRONT
+ .BYTE A?CASTLE
+ .BYTE 0
+ .ENDT
+
+T?CRYPT:: .TABLE ; TABLE FOR OBJECT CRYPT
+ .STRL "secret crypt"
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 2,P?ACTION
+ CRYPT-F
+ .PROP 2,P?SYNONYM
+ W?CRYPT
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?SECRET
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?STATION
+ BASEMENT
+ .PROP 1,P?GLOBAL
+ .BYTE HOLE-IN-WALL
+ .BYTE 0
+ .ENDT
+
+T?HOLE-IN-WALL:: .TABLE ; TABLE FOR OBJECT HOLE-IN-WALL
+ .STRL "brick hole"
+ .PROP 2,P?ACTION
+ HOLE-IN-WALL-F
+ .PROP 6,P?SYNONYM
+ W?HOLE
+ W?OPENING
+ W?WALL
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?BRICK
+ .BYTE 0
+ .ENDT
+
+T?LEVER:: .TABLE ; TABLE FOR OBJECT LEVER
+ .STRL "lever"
+ .PROP 2,P?ACTION
+ LEVER-F
+ .PROP 4,P?SYNONYM
+ W?LEVER
+ W?HANDLE
+ .BYTE 0
+ .ENDT
+
+T?GREAT-HALL:: .TABLE ; TABLE FOR OBJECT GREAT-HALL
+ .STRL "new great hall"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE FOYER ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE FOYER ; TO ROOM
+ .BYTE FOYER ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ GREAT-HALL-F
+ .PROP 6,P?SYNONYM
+ W?HALL
+ W?DOOR
+ W?ROOM
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?GREAT
+ .BYTE A?NEW
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-GREAT-HALL
+ .PROP 2,P?STATION
+ GREAT-HALL
+ .PROP 8,P?GLOBAL
+ .BYTE GREAT-HALL
+ .BYTE FOYER
+ .BYTE CHAIR
+ .BYTE FIREPLACE
+ .BYTE WINDOW
+ .BYTE TABLE-RANDOM
+ .BYTE STAIRS
+ .BYTE DRAWING-ROOM
+ .PROP 2,P?THINGS
+ PT?308
+ .BYTE 0
+ .ENDT
+
+T?MAID:: .TABLE ; TABLE FOR OBJECT MAID
+ .STRL "upstairs maid"
+ .PROP 4,P?SYNONYM
+ W?GLADYS
+ W?MAID
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?UPSTAIRS
+ .BYTE A?GLADYS
+ .BYTE A?MAID
+ .PROP 2,P?CHARACTER
+ 12
+ .BYTE 0
+ .ENDT
+
+T?TAMARA-ROOM:: .TABLE ; TABLE FOR OBJECT TAMARA-ROOM
+ .STRL "Tamara's bedroom"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE TAMARA-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SE ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE TAMARA-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NW ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE TAMARA-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?DOWN ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-TAM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE TAMARA-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ TAMARA-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?BEDROOM
+ W?ROOM
+ W?DOOR
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .BYTE A?BED
+ .BYTE A?BEDROOM
+ .BYTE A?SE
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ CORR-2
+ .PROP 8,P?GLOBAL
+ .BYTE TAMARA-ROOM
+ .BYTE SECRET-TAMARA-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?509
+ .BYTE 0
+ .ENDT
+
+T?TOWER:: .TABLE ; TABLE FOR OBJECT TOWER
+ .STRL "tower"
+ .PROP 2,P?ACTION
+ TOWER-F
+ .PROP 6,P?SYNONYM
+ W?TOWER
+ W?TURRET
+ W?KEEP
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?STONE
+ .BYTE A?TOWER
+ .BYTE 0
+ .ENDT
+
+T?YOUR-BATHROOM-DOOR:: .TABLE ; TABLE FOR OBJECT YOUR-BATHROOM-DOOR
+ .STRL "bathroom door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?BATH
+ .BYTE A?BATHROOM
+ .BYTE 0
+ .ENDT
+
+T?JEWEL:: .TABLE ; TABLE FOR OBJECT JEWEL
+ .STRL "tiny red jewel"
+ .PROP 8,P?SYNONYM
+ W?JEWEL
+ W?SPECK
+ W?GEM
+ W?STONE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?TINY
+ .BYTE A?RED
+ .BYTE A?MISSING
+ .PROP 2,P?SIZE
+ 1
+ .BYTE 0
+ .ENDT
+
+T?CLUE-1:: .TABLE ; TABLE FOR OBJECT CLUE-1
+ .STRL "first clue"
+ .PROP 2,P?ACTION
+ CLUE-1-F
+ .PROP 6,P?SYNONYM
+ W?CLUE
+ W?CLUES
+ W?CARD
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?FIRST
+ .BYTE A?1ST
+ .BYTE A?CLUE
+ .BYTE A?PICTURE
+ .PROP 2,P?SIZE
+ 1
+ .PROP 2,P?GENERIC
+ GENERIC-CLUE-FCN
+ .BYTE 0
+ .ENDT
+
+T?GALLERY:: .TABLE ; TABLE FOR OBJECT GALLERY
+ .STRL "gallery"
+ .PROP 1,P?NE ; UNCONDITIONAL EXIT
+ .BYTE EAST-HALL ; TO ROOM
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE YOUR-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE VIVIEN-ROOM ; TO ROOM
+ .BYTE VIVIEN-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?NW ; UNCONDITIONAL EXIT
+ .BYTE WEST-HALL ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE YOUR-ROOM ; TO ROOM
+ .BYTE YOUR-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .PROP 2,P?ACTION
+ GALLERY-F
+ .PROP 4,P?SYNONYM
+ W?GALLERY
+ W?ROOM
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?GALLERY
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?STATION
+ GALLERY
+ .PROP 6,P?GLOBAL
+ .BYTE YOUR-ROOM
+ .BYTE VIVIEN-ROOM
+ .BYTE FIREPLACE
+ .BYTE WINDOW
+ .BYTE PEEPHOLE
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?FOYER:: .TABLE ; TABLE FOR OBJECT FOYER
+ .STRL "foyer"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE FRONT-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE DRAWING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .BYTE FOYER ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE DRAWING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE FRONT-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ FOYER-F
+ .PROP 6,P?SYNONYM
+ W?FOYER
+ W?ROOM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?NEW
+ .BYTE A?FOYER
+ .BYTE A?DOUBLE
+ .BYTE A?BRONZE
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ FOYER
+ .PROP 6,P?GLOBAL
+ .BYTE FRONT-DOOR
+ .BYTE FOYER
+ .BYTE CHAIR
+ .BYTE TABLE-RANDOM
+ .BYTE WINDOW
+ .BYTE OIL-PAINTING
+ .BYTE 0
+ .ENDT
+
+T?BED:: .TABLE ; TABLE FOR OBJECT BED
+ .STRL "your bed"
+ .PROP 2,P?ACTION
+ BED-F
+ .PROP 2,P?SYNONYM
+ W?BED
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?MY
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?TABLE-RANDOM:: .TABLE ; TABLE FOR OBJECT TABLE-RANDOM
+ .STRL "table"
+ .PROP 2,P?ACTION
+ RANDOM-PSEUDO
+ .PROP 4,P?SYNONYM
+ W?TABLE
+ W?DESK
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?BILLIARD
+ .BYTE A?CARD
+ .BYTE 0
+ .ENDT
+
+T?KEYHOLE:: .TABLE ; TABLE FOR OBJECT KEYHOLE
+ .STRL "keyhole"
+ .PROP 2,P?ACTION
+ KEYHOLE-F
+ .PROP 4,P?SYNONYM
+ W?KEYHOLE
+ W?HOLE
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE 0
+ .ENDT
+
+T?PAINTING-GALLERY:: .TABLE ; TABLE FOR OBJECT PAINTING-GALLERY
+ .STRL "series of oil paintings"
+ .PROP 2,P?ACTION
+ PICTURE-F
+ .PROP 8,P?SYNONYM
+ W?PORTRAIT
+ W?PICTURE
+ W?PAINTING
+ W?SERIES
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?OIL
+ .BYTE A?ART
+ .BYTE A?DOUBLE
+ .BYTE 0
+ .ENDT
+
+T?OLD-GREAT-HALL:: .TABLE ; TABLE FOR OBJECT OLD-GREAT-HALL
+ .STRL "old great hall"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE OLD-GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NE ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE OLD-GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE JUNCTION ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE JUNCTION ; TO ROOM
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .BYTE OLD-GREAT-HALL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ OLD-GREAT-HALL-F
+ .PROP 6,P?SYNONYM
+ W?HALL
+ W?ROOM
+ W?DOOR
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?GREAT
+ .BYTE A?OLD
+ .BYTE A?TOWER
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-GREAT-HALL
+ .PROP 2,P?STATION
+ OLD-GREAT-HALL
+ .PROP 5,P?GLOBAL
+ .BYTE OLD-GREAT-HALL
+ .BYTE FIREPLACE
+ .BYTE CHAIR
+ .BYTE WINDOW
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?PRIEST-DOOR:: .TABLE ; TABLE FOR OBJECT PRIEST-DOOR
+ .STRL "priest hole"
+ .PROP 4,P?SYNONYM
+ W?DOOR
+ W?HOLE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?PRIEST
+ .BYTE 0
+ .ENDT
+
+T?STAINED-WINDOW:: .TABLE ; TABLE FOR OBJECT STAINED-WINDOW
+ .STRL "stained-glass window"
+ .PROP 2,P?ACTION
+ STAINED-WINDOW-F
+ .PROP 6,P?SYNONYM
+ W?WINDOW
+ W?APPLE
+ W?GLASS
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?STAINED
+ .BYTE A?GLASS
+ .PROP 2,P?TEXT
+ STR?266
+ .PROP 2,P?CAPACITY
+ 3
+ .BYTE 0
+ .ENDT
+
+T?DECK:: .TABLE ; TABLE FOR OBJECT DECK
+ .STRL "fighting deck"
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .PROP 2,P?ACTION
+ DECK-F
+ .PROP 4,P?SYNONYM
+ W?DECK
+ W?ROOF
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?THIRD
+ .BYTE A?TOP
+ .BYTE A?STORY
+ .BYTE A?STOREY
+ .BYTE A?FIGHTING
+ .BYTE A?OBSERVE
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 5
+ .PROP 2,P?STATION
+ DECK
+ .PROP 3,P?GLOBAL
+ .BYTE MOON
+ .BYTE OCEAN
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?GALLERY-CORNER:: .TABLE ; TABLE FOR OBJECT GALLERY-CORNER
+ .STRL "dead end"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE MIDPOINT ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE MIDPOINT ; TO ROOM
+ .PROP 2,P?ACTION
+ GALLERY-CORNER-F
+ .PROP 8,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ W?END
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?HIDDEN
+ .BYTE A?DEAD
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ MIDPOINT
+ .PROP 1,P?GLOBAL
+ .BYTE PEEPHOLE
+ .PROP 2,P?CORRIDOR
+ 2
+ .BYTE 0
+ .ENDT
+
+T?BOTTLE:: .TABLE ; TABLE FOR OBJECT BOTTLE
+ .STRL "bottle"
+ .PROP 2,P?ACTION
+ BOTTLE-F
+ .PROP 4,P?SYNONYM
+ W?BOTTLE
+ W?WINE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?WINE
+ .PROP 2,P?CAPACITY
+ 3
+ .PROP 2,P?SIZE
+ 5
+ .PROP 2,P?GENERIC
+ GENERIC-WINE
+ .BYTE 0
+ .ENDT
+
+T?SKULL:: .TABLE ; TABLE FOR OBJECT SKULL
+ .STRL "fossil skull"
+ .PROP 2,P?ACTION
+ SKULL-F
+ .PROP 2,P?SYNONYM
+ W?SKULL
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?FOSSIL
+ .PROP 2,P?SIZE
+ 9
+ .BYTE 0
+ .ENDT
+
+T?HIM:: .TABLE ; TABLE FOR OBJECT HIM
+ .STRL "him"
+ .PROP 4,P?SYNONYM
+ W?HIM
+ W?SIR
+ .BYTE 0
+ .ENDT
+
+T?SECRET-IRIS-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-IRIS-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?IRIS'S
+ .BYTE A?HER
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?LIBRARY:: .TABLE ; TABLE FOR OBJECT LIBRARY
+ .STRL "library"
+ .PROP 5,P?NE ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-LIB ; TO ROOM
+ .BYTE SECRET-LIBRARY-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE LIBRARY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SW ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE LIBRARY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE LIBRARY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-LIB ; TO ROOM
+ .BYTE SECRET-LIBRARY-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE LIBRARY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ LIBRARY-F
+ .PROP 4,P?SYNONYM
+ W?LIBRARY
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?LIBRARY
+ .BYTE A?NE
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ CORR-2
+ .PROP 4,P?GLOBAL
+ .BYTE LIBRARY
+ .BYTE SECRET-LIBRARY-DOOR
+ .BYTE FIREPLACE
+ .BYTE CHAIR
+ .BYTE 0
+ .ENDT
+
+T?VIVIEN-DIARY:: .TABLE ; TABLE FOR OBJECT VIVIEN-DIARY
+ .STRL "Vivien's diary"
+ .PROP 2,P?ACTION
+ VIVIEN-DIARY-F
+ .PROP 8,P?SYNONYM
+ W?EVIDENCE
+ W?DIARY
+ W?BOOK
+ W?BOOKS
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?CAPACITY
+ 4
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?NIGHTSTAND:: .TABLE ; TABLE FOR OBJECT NIGHTSTAND
+ .STRL "night table"
+ .PROP 2,P?ACTION
+ NIGHTSTAND-F
+ .PROP 6,P?SYNONYM
+ W?NIGHTT
+ W?TABLE
+ W?STAND
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?NIGHT
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?VIVIEN-ROOM:: .TABLE ; TABLE FOR OBJECT VIVIEN-ROOM
+ .STRL "Vivien's bedroom"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .BYTE VIVIEN-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE SECRET-VIVIEN-PASSAGE ; TO ROOM
+ .BYTE SECRET-VIVIEN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE SECRET-VIVIEN-PASSAGE ; TO ROOM
+ .BYTE SECRET-VIVIEN-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE GALLERY ; TO ROOM
+ .BYTE VIVIEN-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ VIVIEN-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?ROOM
+ W?BEDROOM
+ W?DOOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .BYTE A?BED
+ .BYTE A?ROOM
+ .BYTE A?BEDROOM
+ .BYTE A?WEST
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ GALLERY
+ .PROP 8,P?GLOBAL
+ .BYTE VIVIEN-ROOM
+ .BYTE SECRET-VIVIEN-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?1008
+ .BYTE 0
+ .ENDT
+
+T?HYDE-ROOM:: .TABLE ; TABLE FOR OBJECT HYDE-ROOM
+ .STRL "Hyde's bedroom"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE HYDE-CLOSET ; TO ROOM
+ .BYTE SECRET-HYDE-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE WEST-HALL ; TO ROOM
+ .BYTE HYDE-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE HYDE-CLOSET ; TO ROOM
+ .BYTE SECRET-HYDE-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE WEST-HALL ; TO ROOM
+ .BYTE HYDE-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ HYDE-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?ROOM
+ W?BEDROOM
+ W?DOOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?HYDE'S
+ .BYTE A?HIS
+ .BYTE A?BED
+ .BYTE A?ROOM
+ .BYTE A?BEDROOM
+ .BYTE A?EAST
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ WEST-HALL
+ .PROP 8,P?GLOBAL
+ .BYTE HYDE-ROOM
+ .BYTE SECRET-HYDE-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?1208
+ .BYTE 0
+ .ENDT
+
+T?JACK-ROOM:: .TABLE ; TABLE FOR OBJECT JACK-ROOM
+ .STRL "master bedroom"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE JACK-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SW ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-JACK ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?DOWN ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-JACK ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE SECRET-LANDING-JACK ; TO ROOM
+ .BYTE SECRET-JACK-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE JACK-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ JACK-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?BEDROOM
+ W?ROOM
+ W?DOOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .BYTE A?BED
+ .BYTE A?BEDROOM
+ .BYTE A?MASTER
+ .BYTE A?WEST
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ CORR-2
+ .PROP 8,P?GLOBAL
+ .BYTE JACK-ROOM
+ .BYTE SECRET-JACK-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?209
+ .BYTE 0
+ .ENDT
+
+T?SECRET-TAMARA-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-TAMARA-DOOR
+ .STRL "sliding panel"
+ .PROP 4,P?SYNONYM
+ W?DOOR
+ W?PANEL
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .BYTE A?SLIDING
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?LAMP:: .TABLE ; TABLE FOR OBJECT LAMP
+ .STRL "brass lantern"
+ .PROP 2,P?ACTION
+ LANTERN
+ .PROP 4,P?SYNONYM
+ W?LAMP
+ W?LANTERN
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?BRASS
+ .PROP 2,P?SIZE
+ 15
+ .BYTE 0
+ .ENDT
+
+T?DRAWING-CLOSET:: .TABLE ; TABLE FOR OBJECT DRAWING-CLOSET
+ .STRL "drawing-room entrance"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE SECRET-DRAWING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE YOUR-CLOSET ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE SECRET-DRAWING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE DRAWING-ROOM ; TO ROOM
+ .BYTE SECRET-DRAWING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ DRAWING-CLOSET-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DRAWING
+ .BYTE A?SECRET
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ DRAWING-CLOSET
+ .PROP 5,P?GLOBAL
+ .BYTE SECRET-DRAWING-DOOR
+ .BYTE DRAWING-ROOM
+ .BYTE LEVER
+ .BYTE LADDER
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?DINING-PASSAGE:: .TABLE ; TABLE FOR OBJECT DINING-PASSAGE
+ .STRL "dining passage"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .BYTE SECRET-DINING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-LIB ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .BYTE SECRET-DINING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE BACKSTAIRS ; TO ROOM
+ .BYTE SECRET-DINING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ DINING-PASSAGE-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?DINING
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ SECRET-LANDING-LIB
+ .PROP 5,P?GLOBAL
+ .BYTE SECRET-DINING-DOOR
+ .BYTE BACKSTAIRS
+ .BYTE LADDER
+ .BYTE STAIRS
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?BUFFALO-HEAD:: .TABLE ; TABLE FOR OBJECT BUFFALO-HEAD
+ .STRL "stuffed buffalo head"
+ .PROP 2,P?ACTION
+ BUFFALO-HEAD-F
+ .PROP 6,P?SYNONYM
+ W?BUFFALO
+ W?HEAD
+ W?EYE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?STUFFED
+ .BYTE A?BUFFALO
+ .BYTE A?BUF'S
+ .PROP 2,P?GENERIC
+ GENERIC-EYE
+ .BYTE 0
+ .ENDT
+
+T?TELESCOPE:: .TABLE ; TABLE FOR OBJECT TELESCOPE
+ .STRL "telescope"
+ .PROP 2,P?ACTION
+ TELESCOPE-F
+ .PROP 4,P?SYNONYM
+ W?TELESCOPE
+ W?SCOPE
+ .PROP 2,P?LDESC
+ STR?258
+ .BYTE 0
+ .ENDT
+
+T?CLUE-2:: .TABLE ; TABLE FOR OBJECT CLUE-2
+ .STRL "second clue"
+ .PROP 2,P?ACTION
+ CLUE-2-F
+ .PROP 8,P?SYNONYM
+ W?CLUE
+ W?CLUES
+ W?CARD
+ W?POEM
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?SECOND
+ .BYTE A?2ND
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .PROP 2,P?SIZE
+ 1
+ .PROP 2,P?GENERIC
+ GENERIC-CLUE-FCN
+ .BYTE 0
+ .ENDT
+
+T?IRIS-ROOM:: .TABLE ; TABLE FOR OBJECT IRIS-ROOM
+ .STRL "Iris's bedroom"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE IRIS-CLOSET ; TO ROOM
+ .BYTE SECRET-IRIS-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE EAST-HALL ; TO ROOM
+ .BYTE IRIS-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE IRIS-CLOSET ; TO ROOM
+ .BYTE SECRET-IRIS-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE EAST-HALL ; TO ROOM
+ .BYTE IRIS-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ IRIS-ROOM-F
+ .PROP 6,P?SYNONYM
+ W?ROOM
+ W?BEDROOM
+ W?DOOR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?IRIS'S
+ .BYTE A?HER
+ .BYTE A?BED
+ .BYTE A?ROOM
+ .BYTE A?BEDROOM
+ .BYTE A?EAST
+ .PROP 2,P?LINE
+ 2
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ EAST-HALL
+ .PROP 8,P?GLOBAL
+ .BYTE IRIS-ROOM
+ .BYTE SECRET-IRIS-DOOR
+ .BYTE BATHROOM
+ .BYTE FIREPLACE
+ .BYTE NIGHTSTAND-LG
+ .BYTE DRESSING-TABLE-LG
+ .BYTE WARDROBE-LG
+ .BYTE WINDOW
+ .PROP 2,P?THINGS
+ PT?808
+ .BYTE 0
+ .ENDT
+
+T?CHEST-OF-DRAWERS:: .TABLE ; TABLE FOR OBJECT CHEST-OF-DRAWERS
+ .STRL "chest of drawers"
+ .PROP 6,P?SYNONYM
+ W?CHEST
+ W?DRAWER
+ W?DRESSE
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?PASSAGE:: .TABLE ; TABLE FOR OBJECT PASSAGE
+ .STRL "secret passage"
+ .PROP 2,P?ACTION
+ PASSAGE-F
+ .PROP 8,P?SYNONYM
+ W?PASSAGE
+ W?ROOM
+ W?PLACE
+ W?PLACES
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?HIDING
+ .BYTE A?HIDDEN
+ .PROP 2,P?GENERIC
+ GENERIC-ROOM
+ .BYTE 0
+ .ENDT
+
+T?LOVER:: .TABLE ; TABLE FOR OBJECT LOVER
+ .STRL "Deirdre"
+ .PROP 2,P?ACTION
+ LOVER-F
+ .PROP 8,P?SYNONYM
+ W?DEIRDRE
+ W?DEE
+ W?HALLAM
+ W?WOMAN
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?BLOND
+ .BYTE A?BLONDE
+ .BYTE A?MS
+ .BYTE A?MISS
+ .BYTE A?DEIRDRE
+ .BYTE A?DEE
+ .BYTE A?HALLAM
+ .BYTE A?WOMAN
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 9
+ .PROP 2,P?DESCFCN
+ LOVER-D
+ .PROP 2,P?STATION
+ A?DEE'S
+ .BYTE 0
+ .ENDT
+
+T?PAINT:: .TABLE ; TABLE FOR OBJECT PAINT
+ .STRL "coat of paint"
+ .PROP 2,P?ACTION
+ PAINT-F
+ .PROP 4,P?SYNONYM
+ W?PAINT
+ W?COAT
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?NEW
+ .BYTE 0
+ .ENDT
+
+T?NIGHTLAMP:: .TABLE ; TABLE FOR OBJECT NIGHTLAMP
+ .STRL "your lamp"
+ .PROP 2,P?SYNONYM
+ W?LAMP
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE 0
+ .ENDT
+
+T?SIDEBOARD:: .TABLE ; TABLE FOR OBJECT SIDEBOARD
+ .STRL "sideboard"
+ .PROP 4,P?SYNONYM
+ W?SIDEBOARD
+ W?BOARD
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DINING
+ .BYTE A?SIDE
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?RHINO-HEAD:: .TABLE ; TABLE FOR OBJECT RHINO-HEAD
+ .STRL "stuffed rhino head"
+ .PROP 2,P?ACTION
+ RHINO-HEAD-F
+ .PROP 4,P?SYNONYM
+ W?RHINO
+ W?HEAD
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?STUFFED
+ .BYTE A?RHINO
+ .BYTE A?RH'S
+ .PROP 2,P?CAPACITY
+ 3
+ .BYTE 0
+ .ENDT
+
+T?GHOST-OLD:: .TABLE ; TABLE FOR OBJECT GHOST-OLD
+ .STRL "White Lady"
+ .PROP 8,P?SYNONYM
+ W?SPIRIT
+ W?PHANTOM
+ W?LADY
+ W?LEGEND
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?OLD
+ .BYTE A?WHITE
+ .PROP 2,P?CHARACTER
+ 16
+ .BYTE 0
+ .ENDT
+
+T?UNDRESSED:: .TABLE ; TABLE FOR OBJECT UNDRESSED
+ .STRL "undressed"
+ .PROP 2,P?ACTION
+ UNDRESSED-F
+ .PROP 4,P?SYNONYM
+ W?DRESSE
+ W?UNDRESS
+ .BYTE 0
+ .ENDT
+
+T?WINE-RACK:: .TABLE ; TABLE FOR OBJECT WINE-RACK
+ .STRL "wine rack"
+ .PROP 2,P?ACTION
+ WINE-RACK-F
+ .PROP 6,P?SYNONYM
+ W?RACK
+ W?CELLAR
+ W?WINE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?WINE
+ .PROP 2,P?CAPACITY
+ 99
+ .PROP 2,P?GENERIC
+ GENERIC-WINE
+ .BYTE 0
+ .ENDT
+
+T?SITTING-PASSAGE:: .TABLE ; TABLE FOR OBJECT SITTING-PASSAGE
+ .STRL "sitting passage"
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 3,P?UP ; CONDITIONAL EXIT
+ SITTING-PASSAGE-LOSE ; PER FUNCTION
+ .BYTE 0
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 2,P?ACTION
+ SITTING-PASSAGE-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?SITTING
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ PASSAGE-1
+ .PROP 1,P?GLOBAL
+ .BYTE SECRET-SITTING-DOOR
+ .BYTE 0
+ .ENDT
+
+T?CAR:: .TABLE ; TABLE FOR OBJECT CAR
+ .STRL "sports car"
+ .PROP 2,P?ACTION
+ CAR-F
+ .PROP 2,P?SYNONYM
+ W?CAR
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?NEW
+ .BYTE A?SPORTS
+ .BYTE A?LITTLE
+ .BYTE A?F.C
+ .BYTE A?F.C
+ .PROP 2,P?DESCFCN
+ TELL-ABOUT-CAR
+ .PROP 2,P?CAPACITY
+ 9999
+ .BYTE 0
+ .ENDT
+
+T?NECKLACE-OF-D:: .TABLE ; TABLE FOR OBJECT NECKLACE-OF-D
+ .STRL "Deirdre's necklace"
+ .PROP 2,P?ACTION
+ NECKLACE-OF-D-F
+ .PROP 8,P?SYNONYM
+ W?NECKLACE
+ W?STRING
+ W?SETTING
+ W?SOCKET
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .BYTE A?RED
+ .PROP 2,P?CAPACITY
+ 1
+ .PROP 2,P?SIZE
+ 5
+ .BYTE 0
+ .ENDT
+
+T?YOU:: .TABLE ; TABLE FOR OBJECT YOU
+ .STRL "self"
+ .PROP 2,P?ACTION
+ YOU-F
+ .PROP 8,P?SYNONYM
+ W?YOU
+ W?YOURSELF
+ W?HIMSELF
+ W?HERSELF
+ .BYTE 0
+ .ENDT
+
+T?STAIRS:: .TABLE ; TABLE FOR OBJECT STAIRS
+ .STRL "stairs"
+ .PROP 2,P?ACTION
+ UPSTAIRS-DOWNSTAIRS
+ .PROP 6,P?SYNONYM
+ W?STAIRS
+ W?STAIRW
+ W?STAIR
+ .PROP 2,P?GENERIC
+ GENERIC-STAIRS
+ .BYTE 0
+ .ENDT
+
+T?LETTER-DEE:: .TABLE ; TABLE FOR OBJECT LETTER-DEE
+ .STRL "Deirdre's note"
+ .PROP 2,P?ACTION
+ LETTER-DEE-F
+ .PROP 4,P?SYNONYM
+ W?NOTE
+ W?NOTES
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .PROP 2,P?SIZE
+ 2
+ .BYTE 0
+ .ENDT
+
+T?COFFIN:: .TABLE ; TABLE FOR OBJECT COFFIN
+ .STRL "stone coffin"
+ .PROP 2,P?ACTION
+ COFFIN-F
+ .PROP 2,P?SYNONYM
+ W?COFFIN
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?STONE
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?SECRET-LANDING-TAM:: .TABLE ; TABLE FOR OBJECT SECRET-LANDING-TAM
+ .STRL "Tamara's landing"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-LIB ; TO ROOM
+ .PROP 1,P?NE ; UNCONDITIONAL EXIT
+ .BYTE SECRET-LANDING-LIB ; TO ROOM
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE SECRET-VIVIEN-PASSAGE ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE TAMARA-ROOM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NW ; CONDITIONAL EXIT
+ .BYTE TAMARA-ROOM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE PASSAGE-1 ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE TAMARA-ROOM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE TAMARA-ROOM ; TO ROOM
+ .BYTE SECRET-TAMARA-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ SECRET-LANDING-TAM-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ SECRET-LANDING-TAM
+ .PROP 5,P?GLOBAL
+ .BYTE SECRET-TAMARA-DOOR
+ .BYTE TAMARA-ROOM
+ .BYTE LEVER
+ .BYTE LADDER
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?FRIEND:: .TABLE ; TABLE FOR OBJECT FRIEND
+ .STRL "Tamara"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?164 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ FRIEND-F
+ .PROP 8,P?SYNONYM
+ W?TAMARA
+ W?TAMMY
+ W?LYND
+ W?WOMAN
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?MS
+ .BYTE A?MISS
+ .BYTE A?TAMARA
+ .BYTE A?TAMMY
+ .BYTE A?LYND
+ .BYTE A?WOMAN
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?DESCFCN
+ FRIEND-D
+ .PROP 2,P?TEXT
+ STR?165
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?IRIS-CLOSET:: .TABLE ; TABLE FOR OBJECT IRIS-CLOSET
+ .STRL "Iris's entrance"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE WENDISH-CORNER ; TO ROOM
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE YOUR-CLOSET ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE IRIS-ROOM ; TO ROOM
+ .BYTE SECRET-IRIS-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE IRIS-ROOM ; TO ROOM
+ .BYTE SECRET-IRIS-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE IRIS-ROOM ; TO ROOM
+ .BYTE SECRET-IRIS-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ IRIS-CLOSET-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?IRIS'S
+ .BYTE A?HER
+ .BYTE A?SECRET
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ IRIS-CLOSET
+ .PROP 3,P?GLOBAL
+ .BYTE SECRET-IRIS-DOOR
+ .BYTE IRIS-ROOM
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?BOOKS-GLOBAL:: .TABLE ; TABLE FOR OBJECT BOOKS-GLOBAL
+ .STRL "bunch of books"
+ .PROP 2,P?ACTION
+ BOOKS-GLOBAL-F
+ .PROP 6,P?SYNONYM
+ W?BUNCH
+ W?BOOK
+ W?BOOKS
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?CLUE-3:: .TABLE ; TABLE FOR OBJECT CLUE-3
+ .STRL "third clue"
+ .PROP 2,P?ACTION
+ CLUE-3-F
+ .PROP 8,P?SYNONYM
+ W?CLUE
+ W?CLUES
+ W?CARD
+ W?POEM
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?THIRD
+ .BYTE A?3RD
+ .PROP 2,P?SIZE
+ 1
+ .PROP 2,P?GENERIC
+ GENERIC-CLUE-FCN
+ .BYTE 0
+ .ENDT
+
+T?CASTLE:: .TABLE ; TABLE FOR OBJECT CASTLE
+ .STRL "Tresyllian Castle"
+ .PROP 2,P?ACTION
+ CASTLE-F
+ .PROP 6,P?SYNONYM
+ W?CASTLE
+ W?WING
+ W?HOUSE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?TRESYLLIAN
+ .BYTE 0
+ .ENDT
+
+T?STUDY:: .TABLE ; TABLE FOR OBJECT STUDY
+ .STRL "study"
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE STUDY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SE ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE STUDY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE STUDY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .BYTE STUDY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 4,P?SYNONYM
+ W?STUDY
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .BYTE A?STUDY
+ .BYTE A?NW
+ .PROP 2,P?LDESC
+ STR?260
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .PROP 2,P?STATION
+ CORR-2
+ .PROP 4,P?GLOBAL
+ .BYTE STUDY
+ .BYTE FIREPLACE
+ .BYTE CHAIR
+ .BYTE TABLE-RANDOM
+ .PROP 2,P?THINGS
+ PT?309
+ .BYTE 0
+ .ENDT
+
+T?COUSIN:: .TABLE ; TABLE FOR OBJECT COUSIN
+ .STRL "Lionel Tresyllian"
+ .PROP 2,P?ACTION
+ COUSIN-F
+ .PROP 4,P?SYNONYM
+ W?LIONEL
+ W?UNCLE
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?JACK'S
+ .BYTE A?HIS
+ .BYTE A?LIONEL
+ .BYTE A?UNCLE
+ .PROP 2,P?CHARACTER
+ 11
+ .BYTE 0
+ .ENDT
+
+T?SKELETON:: .TABLE ; TABLE FOR OBJECT SKELETON
+ .STRL "skeleton"
+ .PROP 2,P?ACTION
+ SKELETON-F
+ .PROP 4,P?SYNONYM
+ W?BONES
+ W?SKELETON
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?OLD
+ .PROP 2,P?SIZE
+ 90
+ .PROP 2,P?GENERIC
+ GENERIC-SKELETON
+ .BYTE 0
+ .ENDT
+
+T?LOVER-PATH:: .TABLE ; TABLE FOR OBJECT LOVER-PATH
+ .STRL "path"
+ .PROP 3,P?NORTH ; CONDITIONAL EXIT
+ LOVER-PATH-LOSE-N ; PER FUNCTION
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE DUNGEON ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SE ; CONDITIONAL EXIT
+ .BYTE DUNGEON ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE DUNGEON ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE DUNGEON ; TO ROOM
+ .BYTE PRIEST-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ LOVER-PATH-F
+ .PROP 2,P?SYNONYM
+ W?PATH
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?STATION
+ LOVER-PATH
+ .PROP 5,P?GLOBAL
+ .BYTE PRIEST-DOOR
+ .BYTE LEVER
+ .BYTE MOON
+ .BYTE OCEAN
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?DRAGON-EYE:: .TABLE ; TABLE FOR OBJECT DRAGON-EYE
+ .STRL "dragon's eye"
+ .PROP 2,P?ACTION
+ DRAGON-EYE-F
+ .PROP 8,P?SYNONYM
+ W?EYE
+ W?DOORBELL
+ W?LIGHT
+ W?BELL
+ .PROP 6,P?ADJECTIVE
+ .BYTE A?DRAGON
+ .BYTE A?WYVERN
+ .BYTE A?WORM'S
+ .BYTE A?RED
+ .BYTE A?GREEN
+ .BYTE A?DOOR
+ .PROP 2,P?GENERIC
+ GENERIC-BELL
+ .BYTE 0
+ .ENDT
+
+T?WRITING-DESK:: .TABLE ; TABLE FOR OBJECT WRITING-DESK
+ .STRL "writing desk"
+ .PROP 2,P?ACTION
+ WRITING-DESK-F
+ .PROP 2,P?SYNONYM
+ W?DESK
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?WRITING
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?NOT-HERE-OBJECT:: .TABLE ; TABLE FOR OBJECT NOT-HERE-OBJECT
+ .STRL "that thing"
+ .PROP 2,P?ACTION
+ NOT-HERE-OBJECT-F
+ .BYTE 0
+ .ENDT
+
+T?DRAGON:: .TABLE ; TABLE FOR OBJECT DRAGON
+ .STRL "dragon"
+ .PROP 2,P?ACTION
+ DRAGON-F
+ .PROP 6,P?SYNONYM
+ W?DRAGON
+ W?WYVERN
+ W?ORNAMENT
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?DRAGON
+ .BYTE A?WYVERN
+ .BYTE A?ORNAMENT
+ .BYTE 0
+ .ENDT
+
+T?WARDROBE:: .TABLE ; TABLE FOR OBJECT WARDROBE
+ .STRL "wardrobe"
+ .PROP 2,P?SYNONYM
+ W?WARDROBE
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?LUMBER-CHEST:: .TABLE ; TABLE FOR OBJECT LUMBER-CHEST
+ .STRL "ancient chest"
+ .PROP 2,P?ACTION
+ LUMBER-CHEST-F
+ .PROP 2,P?SYNONYM
+ W?CHEST
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?ANCIENT
+ .BYTE 0
+ .ENDT
+
+T?INTNUM:: .TABLE ; TABLE FOR OBJECT INTNUM
+ .STRL "number"
+ .PROP 2,P?SYNONYM
+ W?INT.NUM
+ .BYTE 0
+ .ENDT
+
+T?YOUR-MIRROR:: .TABLE ; TABLE FOR OBJECT YOUR-MIRROR
+ .STRL "wall mirror"
+ .PROP 2,P?ACTION
+ YOUR-MIRROR-F
+ .PROP 2,P?SYNONYM
+ W?MIRROR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?WALL
+ .BYTE A?FULL-LENGTH
+ .BYTE A?FULL
+ .BYTE 0
+ .ENDT
+
+T?FLOOR:: .TABLE ; TABLE FOR OBJECT FLOOR
+ .STRL "floor"
+ .PROP 2,P?ACTION
+ FLOOR-F
+ .PROP 8,P?SYNONYM
+ W?FLOOR
+ W?GROUND
+ W?CARPET
+ W?RUG
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DRAWING
+ .BYTE A?GREAT
+ .BYTE 0
+ .ENDT
+
+T?CORR-1:: .TABLE ; TABLE FOR OBJECT CORR-1
+ .STRL "ground-floor corridor"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE DINING-ROOM ; TO ROOM
+ .BYTE DINING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE SITTING-ROOM ; TO ROOM
+ .BYTE SITTING-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE JUNCTION ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE GREAT-HALL ; TO ROOM
+ .PROP 2,P?ACTION
+ CORR-1-F
+ .PROP 4,P?SYNONYM
+ W?CORRIDOR
+ W?ROOM
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?GROUND
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ CORR-1
+ .PROP 2,P?GLOBAL
+ .BYTE SITTING-ROOM
+ .BYTE DINING-ROOM
+ .PROP 2,P?CORRIDOR
+ 1
+ .BYTE 0
+ .ENDT
+
+T?BATHROOM:: .TABLE ; TABLE FOR OBJECT BATHROOM
+ .STRL "bathroom"
+ .PROP 2,P?ACTION
+ BATHROOM-F
+ .PROP 2,P?SYNONYM
+ W?BATHROOM
+ .PROP 7,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE 0
+ .ENDT
+
+T?EXERCISE-OUTFIT:: .TABLE ; TABLE FOR OBJECT EXERCISE-OUTFIT
+ .STRL "exercise outfit"
+ .PROP 2,P?ACTION
+ CLOTHES-FCN
+ .PROP 8,P?SYNONYM
+ W?CLOTHES
+ W?OUTFIT
+ W?SWEATS
+ W?SUIT
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?EXERCISE
+ .BYTE A?F.C
+ .BYTE A?F.C
+ .PROP 2,P?SIZE
+ 20
+ .PROP 2,P?GENERIC
+ GENERIC-CLOTHES
+ .BYTE 0
+ .ENDT
+
+T?SECRET-YOUR-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-YOUR-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?DINNER-2:: .TABLE ; TABLE FOR OBJECT DINNER-2
+ .STRL "other dinner"
+ .PROP 2,P?SYNONYM
+ W?DINNER
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?OTHER
+ .BYTE A?JACK'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?TAM'S
+ .BYTE A?VIV'S
+ .BYTE A?IRIS'S
+ .PROP 2,P?GENERIC
+ GENERIC-DINNER
+ .BYTE 0
+ .ENDT
+
+T?MAGAZINE:: .TABLE ; TABLE FOR OBJECT MAGAZINE
+ .STRL "magazine"
+ .PROP 2,P?ACTION
+ MAGAZINE-F
+ .PROP 4,P?SYNONYM
+ W?MAGAZINE
+ W?PUNCH
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?OLD
+ .BYTE A?PUNCH
+ .PROP 2,P?SIZE
+ 4
+ .BYTE 0
+ .ENDT
+
+T?TABLE-DINING:: .TABLE ; TABLE FOR OBJECT TABLE-DINING
+ .STRL "dining table"
+ .PROP 2,P?ACTION
+ TABLE-DINING-F
+ .PROP 2,P?SYNONYM
+ W?TABLE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?DINING
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?NIGHTSTAND-LG:: .TABLE ; TABLE FOR OBJECT NIGHTSTAND-LG
+ .STRL "night table"
+ .PROP 2,P?ACTION
+ NIGHTSTAND-LG-F
+ .PROP 8,P?SYNONYM
+ W?TABLE
+ W?CONSOLE
+ W?TALLBOY
+ W?COMMODE
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?NIGHT
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE 0
+ .ENDT
+
+T?ACCIDENT:: .TABLE ; TABLE FOR OBJECT ACCIDENT
+ .STRL "Deirdre's accident"
+ .PROP 6,P?SYNONYM
+ W?ACCIDENT
+ W?DROWNING
+ W?DEATH
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .BYTE 0
+ .ENDT
+
+T?DEB:: .TABLE ; TABLE FOR OBJECT DEB
+ .STRL "Iris"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?181 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ DEB-F
+ .PROP 6,P?SYNONYM
+ W?IRIS
+ W?VANE
+ W?WOMAN
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?MS
+ .BYTE A?MISS
+ .BYTE A?IRIS
+ .BYTE A?VANE
+ .BYTE A?WOMAN
+ .PROP 2,P?LDESC
+ 1
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 7
+ .PROP 2,P?DESCFCN
+ DEB-D
+ .PROP 2,P?TEXT
+ STR?182
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?HISTORY-BOOK:: .TABLE ; TABLE FOR OBJECT HISTORY-BOOK
+ .STRL "history book"
+ .PROP 2,P?ACTION
+ HISTORY-BOOK-F
+ .PROP 4,P?SYNONYM
+ W?BOOK
+ W?BOOKS
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?HISTORY
+ .PROP 2,P?CAPACITY
+ 4
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?LENS-BOX:: .TABLE ; TABLE FOR OBJECT LENS-BOX
+ .STRL "small plastic box"
+ .PROP 2,P?ACTION
+ LENS-BOX-F
+ .PROP 2,P?SYNONYM
+ W?BOX
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SMALL
+ .BYTE A?PLASTIC
+ .BYTE A?LENS
+ .PROP 2,P?CAPACITY
+ 2
+ .PROP 2,P?SIZE
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-BOX
+ .BYTE 0
+ .ENDT
+
+T?SECRET-DRAWING-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-DRAWING-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?OTHER-OUTFIT:: .TABLE ; TABLE FOR OBJECT OTHER-OUTFIT
+ .STRL "clothes"
+ .PROP 2,P?ACTION
+ OTHER-OUTFIT-F
+ .PROP 8,P?SYNONYM
+ W?CLOTHES
+ W?OUTFIT
+ W?DRESS
+ W?GOWN
+ .PROP 8,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?JACK'S
+ .BYTE A?VIV'S
+ .BYTE A?HYDE'S
+ .BYTE A?IAN'S
+ .BYTE A?DOC'S
+ .BYTE A?IRIS'S
+ .BYTE A?B'S
+ .BYTE 0
+ .ENDT
+
+T?GHOST-NEW:: .TABLE ; TABLE FOR OBJECT GHOST-NEW
+ .STRL "ghost"
+ .PROP 2,P?WEST ; IMPOSSIBLE EXIT
+ STR?194 ; FAILURE MESSAGE
+ .PROP 2,P?ACTION
+ GHOST-NEW-F
+ .PROP 2,P?SYNONYM
+ W?GHOST
+ .PROP 7,P?ADJECTIVE
+ .BYTE A?BLOND
+ .BYTE A?BLONDE
+ .BYTE A?NEW
+ .BYTE A?DEE'S
+ .BYTE A?HER
+ .BYTE A?CASTLE
+ .BYTE A?GHOST
+ .PROP 2,P?LDESC
+ 0
+ .PROP 2,P?LINE
+ 0
+ .PROP 2,P?CHARACTER
+ 10
+ .PROP 2,P?DESCFCN
+ GHOST-NEW-D
+ .PROP 2,P?CAPACITY
+ 40
+ .BYTE 0
+ .ENDT
+
+T?WENDISH-KIT:: .TABLE ; TABLE FOR OBJECT WENDISH-KIT
+ .STRL "medical kit"
+ .PROP 2,P?ACTION
+ WENDISH-KIT-F
+ .PROP 4,P?SYNONYM
+ W?KIT
+ W?BAG
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?DOC'S
+ .BYTE A?HIS
+ .BYTE A?MEDICAL
+ .PROP 2,P?CAPACITY
+ 37
+ .PROP 2,P?SIZE
+ 38
+ .BYTE 0
+ .ENDT
+
+T?LIGHT-GLOBAL:: .TABLE ; TABLE FOR OBJECT LIGHT-GLOBAL
+ .STRL "light"
+ .PROP 2,P?ACTION
+ LIGHT-GLOBAL-F
+ .PROP 8,P?SYNONYM
+ W?LIGHT
+ W?LIGHTS
+ W?LAMP
+ W?MOONLIGHT
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?FLOOD
+ .BYTE A?MOON
+ .BYTE 0
+ .ENDT
+
+T?GLOBAL-HERE:: .TABLE ; TABLE FOR OBJECT GLOBAL-HERE
+ .STRL "here"
+ .PROP 2,P?ACTION
+ GLOBAL-HERE-F
+ .PROP 8,P?SYNONYM
+ W?HERE
+ W?AREA
+ W?ROOM
+ W?PLACE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?THIS
+ .PROP 2,P?GENERIC
+ GENERIC-ROOM
+ .BYTE 0
+ .ENDT
+
+T?DRESSING-BENCH:: .TABLE ; TABLE FOR OBJECT DRESSING-BENCH
+ .STRL "bench"
+ .PROP 2,P?SYNONYM
+ W?BENCH
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?DRESSING
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?TURN:: .TABLE ; TABLE FOR OBJECT TURN
+ .STRL "minute"
+ .PROP 2,P?ACTION
+ TURN-F
+ .PROP 6,P?SYNONYM
+ W?TURN
+ W?TURNS
+ W?MINUTE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?INT.NUM
+ .BYTE A?FULL
+ .BYTE 0
+ .ENDT
+
+T?TAMARA-BED:: .TABLE ; TABLE FOR OBJECT TAMARA-BED
+ .STRL "bed"
+ .PROP 2,P?ACTION
+ TAMARA-BED-F
+ .PROP 8,P?SYNONYM
+ W?BED
+ W?KNOB
+ W?BEDPOST
+ W?POST
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?TAM'S
+ .BYTE A?HER
+ .BYTE A?BED
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?SECRET-IAN-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-IAN-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?IAN'S
+ .BYTE A?HIS
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?DINNER-OUTFIT:: .TABLE ; TABLE FOR OBJECT DINNER-OUTFIT
+ .STRL "dinner outfit"
+ .PROP 2,P?ACTION
+ CLOTHES-FCN
+ .PROP 8,P?SYNONYM
+ W?CLOTHES
+ W?OUTFIT
+ W?DRESS
+ W?GOWN
+ .PROP 5,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?DINNER
+ .BYTE A?FORMAL
+ .BYTE A?F.C
+ .BYTE A?F.C
+ .PROP 2,P?SIZE
+ 20
+ .PROP 2,P?GENERIC
+ GENERIC-CLOTHES
+ .BYTE 0
+ .ENDT
+
+T?JOURNAL:: .TABLE ; TABLE FOR OBJECT JOURNAL
+ .STRL "journal"
+ .PROP 2,P?ACTION
+ JOURNAL-F
+ .PROP 8,P?SYNONYM
+ W?JOURNAL
+ W?LOG
+ W?BOOK
+ W?BOOKS
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?LI'S
+ .BYTE A?HIS
+ .PROP 2,P?CAPACITY
+ 4
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?DRESSING-TABLE:: .TABLE ; TABLE FOR OBJECT DRESSING-TABLE
+ .STRL "dressing table"
+ .PROP 2,P?SYNONYM
+ W?TABLE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?MY
+ .BYTE A?DRESSING
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?BROCHURE:: .TABLE ; TABLE FOR OBJECT BROCHURE
+ .STRL "tourist brochure"
+ .PROP 2,P?ACTION
+ BROCHURE-F
+ .PROP 6,P?SYNONYM
+ W?BROCHURE
+ W?BOOK
+ W?BOOKS
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?TOURIST
+ .PROP 2,P?SIZE
+ 2
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?VIVIEN-BOX:: .TABLE ; TABLE FOR OBJECT VIVIEN-BOX
+ .STRL "wooden box"
+ .PROP 2,P?ACTION
+ VIVIEN-BOX-F
+ .PROP 2,P?SYNONYM
+ W?BOX
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .BYTE A?WOODEN
+ .BYTE A?PAINT
+ .PROP 2,P?CAPACITY
+ 37
+ .PROP 2,P?SIZE
+ 38
+ .PROP 2,P?GENERIC
+ GENERIC-BOX
+ .BYTE 0
+ .ENDT
+
+T?CORR-2:: .TABLE ; TABLE FOR OBJECT CORR-2
+ .STRL "first-floor corridor"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE OLD-GREAT-HALL ; TO ROOM
+ .PROP 5,P?NE ; CONDITIONAL EXIT
+ .BYTE LIBRARY ; TO ROOM
+ .BYTE LIBRARY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?EAST ; CONDITIONAL EXIT
+ .BYTE OFFICE ; TO ROOM
+ .BYTE OFFICE ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SE ; CONDITIONAL EXIT
+ .BYTE TAMARA-ROOM ; TO ROOM
+ .BYTE TAMARA-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE JACK-ROOM ; TO ROOM
+ .BYTE JACK-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?NW ; CONDITIONAL EXIT
+ .BYTE STUDY ; TO ROOM
+ .BYTE STUDY ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE CORR-3 ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE OLD-GREAT-HALL ; TO ROOM
+ .PROP 2,P?IN ; IMPOSSIBLE EXIT
+ STR?257 ; FAILURE MESSAGE
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE OLD-GREAT-HALL ; TO ROOM
+ .PROP 2,P?ACTION
+ CORR-2-F
+ .PROP 4,P?SYNONYM
+ W?CORRIDOR
+ W?ROOM
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?FIRST
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?STATION
+ CORR-2
+ .PROP 6,P?GLOBAL
+ .BYTE JACK-ROOM
+ .BYTE STUDY
+ .BYTE LIBRARY
+ .BYTE OFFICE
+ .BYTE TAMARA-ROOM
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?BOOKCASE:: .TABLE ; TABLE FOR OBJECT BOOKCASE
+ .STRL "bookcase"
+ .PROP 2,P?ACTION
+ BOOKCASE-F
+ .PROP 8,P?SYNONYM
+ W?BOOKCASE
+ W?CASE
+ W?SHELF
+ W?SHELVES
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?BOOK
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?HYDE-CLOSET:: .TABLE ; TABLE FOR OBJECT HYDE-CLOSET
+ .STRL "Hyde's entrance"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE MIDPOINT ; TO ROOM
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE HYDE-ROOM ; TO ROOM
+ .BYTE SECRET-HYDE-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE SECRET-IAN-PASSAGE ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE HYDE-ROOM ; TO ROOM
+ .BYTE SECRET-HYDE-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?OUT ; CONDITIONAL EXIT
+ .BYTE HYDE-ROOM ; TO ROOM
+ .BYTE SECRET-HYDE-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 2,P?ACTION
+ HYDE-CLOSET-F
+ .PROP 6,P?SYNONYM
+ W?ENTRANCE
+ W?LANDING
+ W?PASSAGE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?HYDE'S
+ .BYTE A?HIS
+ .BYTE A?SECRET
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?GENERIC
+ GENERIC-CLOSET
+ .PROP 2,P?STATION
+ HYDE-CLOSET
+ .PROP 3,P?GLOBAL
+ .BYTE SECRET-HYDE-DOOR
+ .BYTE HYDE-ROOM
+ .BYTE LEVER
+ .BYTE 0
+ .ENDT
+
+T?GENERIC-CLUE:: .TABLE ; TABLE FOR OBJECT GENERIC-CLUE
+ .STRL "clue"
+ .BYTE 0
+ .ENDT
+
+T?PIANO:: .TABLE ; TABLE FOR OBJECT PIANO
+ .STRL "piano"
+ .PROP 2,P?ACTION
+ PIANO-F
+ .PROP 2,P?SYNONYM
+ W?PIANO
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?FIREPLACE:: .TABLE ; TABLE FOR OBJECT FIREPLACE
+ .STRL "fireplace"
+ .PROP 2,P?ACTION
+ FIREPLACE-F
+ .PROP 8,P?SYNONYM
+ W?PLACE
+ W?FIREPLACE
+ W?CHIMNEY
+ W?FENDER
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?FIRE
+ .BYTE 0
+ .ENDT
+
+T?MIDPOINT:: .TABLE ; TABLE FOR OBJECT MIDPOINT
+ .STRL "midpoint"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE WENDISH-CORNER ; TO ROOM
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE GALLERY-CORNER ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE HYDE-CLOSET ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE WENDISH-CORNER ; TO ROOM
+ .PROP 2,P?ACTION
+ MIDPOINT-F
+ .PROP 2,P?SYNONYM
+ W?MIDPOINT
+ .PROP 2,P?LINE
+ 4
+ .PROP 2,P?CHARACTER
+ 3
+ .PROP 2,P?STATION
+ MIDPOINT
+ .BYTE 0
+ .ENDT
+
+T?SECRET-VIVIEN-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-VIVIEN-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?OCEAN:: .TABLE ; TABLE FOR OBJECT OCEAN
+ .STRL "ocean"
+ .PROP 2,P?ACTION
+ OCEAN-F
+ .PROP 6,P?SYNONYM
+ W?SEA
+ W?OCEAN
+ W?BREAKER
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?BLUE
+ .BYTE 0
+ .ENDT
+
+T?DINNER:: .TABLE ; TABLE FOR OBJECT DINNER
+ .STRL "your dinner"
+ .PROP 2,P?ACTION
+ DINNER-F
+ .PROP 8,P?SYNONYM
+ W?DINNER
+ W?FOOD
+ W?DISHES
+ W?PLATE
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?COVERED
+ .BYTE A?MY
+ .PROP 2,P?DESCFCN
+ DINNER-D
+ .PROP 2,P?SIZE
+ 10
+ .PROP 2,P?GENERIC
+ GENERIC-DINNER
+ .BYTE 0
+ .ENDT
+
+T?FIGURINE:: .TABLE ; TABLE FOR OBJECT FIGURINE
+ .STRL "sculpted figurine"
+ .PROP 2,P?ACTION
+ FIGURINE-F
+ .PROP 4,P?SYNONYM
+ W?FIGURINE
+ W?FIGURE
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?SCULPT
+ .BYTE A?VIV'S
+ .BYTE A?HER
+ .BYTE 0
+ .ENDT
+
+T?ARMOR:: .TABLE ; TABLE FOR OBJECT ARMOR
+ .STRL "suit of armour"
+ .PROP 2,P?ACTION
+ ARMOR-F
+ .PROP 8,P?SYNONYM
+ W?SUIT
+ W?ARMOR
+ W?ARMOUR
+ W?HELMET
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?LETTER:: .TABLE ; TABLE FOR OBJECT LETTER
+ .STRL "butler's note"
+ .PROP 2,P?ACTION
+ LETTER-F
+ .PROP 4,P?SYNONYM
+ W?NOTE
+ W?NOTES
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?B'S
+ .BYTE A?HIS
+ .BYTE A?JACK'S
+ .PROP 2,P?SIZE
+ 2
+ .BYTE 0
+ .ENDT
+
+T?BASEMENT:: .TABLE ; TABLE FOR OBJECT BASEMENT
+ .STRL "basement"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE JUNCTION ; TO ROOM
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE KITCHEN ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE DUNGEON ; TO ROOM
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE JUNCTION ; TO ROOM
+ .PROP 3,P?IN ; CONDITIONAL EXIT
+ BASEMENT-ENTER ; PER FUNCTION
+ .BYTE 0
+ .PROP 2,P?ACTION
+ BASEMENT-F
+ .PROP 2,P?SYNONYM
+ W?BASEMENT
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?TOWER
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 1
+ .PROP 2,P?STATION
+ BASEMENT
+ .PROP 2,P?GLOBAL
+ .BYTE HOLE-IN-WALL
+ .BYTE STAIRS
+ .PROP 2,P?THINGS
+ PT?109
+ .BYTE 0
+ .ENDT
+
+T?HAUNTING:: .TABLE ; TABLE FOR OBJECT HAUNTING
+ .STRL "haunting"
+ .PROP 2,P?ACTION
+ HAUNTING-F
+ .PROP 8,P?SYNONYM
+ W?MYSTERY
+ W?HAUNTING
+ W?ATTEMPTS
+ W?CASE
+ .BYTE 0
+ .ENDT
+
+T?CLUE-4:: .TABLE ; TABLE FOR OBJECT CLUE-4
+ .STRL "fourth clue"
+ .PROP 2,P?ACTION
+ CLUE-4-F
+ .PROP 8,P?SYNONYM
+ W?CLUE
+ W?CLUES
+ W?CARD
+ W?POEM
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?FOURTH
+ .BYTE A?4TH
+ .BYTE A?LAST
+ .PROP 2,P?SIZE
+ 1
+ .PROP 2,P?GENERIC
+ GENERIC-CLUE-FCN
+ .BYTE 0
+ .ENDT
+
+T?OBJECT-PAIR:: .TABLE ; TABLE FOR OBJECT OBJECT-PAIR
+ .STRL "such things"
+ .PROP 2,P?ACTION
+ OBJECT-PAIR-F
+ .BYTE 0
+ .ENDT
+
+T?LUMBER-RING:: .TABLE ; TABLE FOR OBJECT LUMBER-RING
+ .STRL "sunken handle"
+ .PROP 2,P?ACTION
+ LUMBER-RING-F
+ .PROP 2,P?SYNONYM
+ W?HANDLE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?SUNKEN
+ .BYTE 0
+ .ENDT
+
+T?COAT-RACK:: .TABLE ; TABLE FOR OBJECT COAT-RACK
+ .STRL "coat rack"
+ .PROP 2,P?SYNONYM
+ W?RACK
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?COAT
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?MAZE:: .TABLE ; TABLE FOR OBJECT MAZE
+ .STRL "hedge maze"
+ .PROP 3,P?NORTH ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?NE ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?EAST ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?SE ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?SOUTH ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?SW ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?WEST ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 3,P?NW ; CONDITIONAL EXIT
+ MAZE-EXIT ; PER FUNCTION
+ .BYTE 0
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE GARDEN ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE COURTYARD ; TO ROOM
+ .PROP 2,P?ACTION
+ MAZE-F
+ .PROP 2,P?SYNONYM
+ W?MAZE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?HEDGE
+ .PROP 2,P?LDESC
+ STR?227
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ MAZE
+ .PROP 2,P?GLOBAL
+ .BYTE MOON
+ .BYTE OCEAN
+ .BYTE 0
+ .ENDT
+
+T?WALL:: .TABLE ; TABLE FOR OBJECT WALL
+ .STRL "wall"
+ .PROP 2,P?ACTION
+ WALL-F
+ .PROP 8,P?SYNONYM
+ W?WALL
+ W?WALLS
+ W?BRICK
+ W?BRICKS
+ .PROP 3,P?ADJECTIVE
+ .BYTE A?CASTLE
+ .BYTE A?TOWER
+ .BYTE A?BRICK
+ .BYTE 0
+ .ENDT
+
+T?BACKSTAIRS:: .TABLE ; TABLE FOR OBJECT BACKSTAIRS
+ .STRL "backstairs"
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE DINING-ROOM ; TO ROOM
+ .PROP 5,P?WEST ; CONDITIONAL EXIT
+ .BYTE DINING-PASSAGE ; TO ROOM
+ .BYTE SECRET-DINING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE KITCHEN ; TO ROOM
+ .PROP 5,P?IN ; CONDITIONAL EXIT
+ .BYTE DINING-PASSAGE ; TO ROOM
+ .BYTE SECRET-DINING-DOOR ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE DINING-ROOM ; TO ROOM
+ .PROP 2,P?ACTION
+ BACKSTAIRS-F
+ .PROP 2,P?SYNONYM
+ W?BACKST
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ BACKSTAIRS
+ .PROP 2,P?GLOBAL
+ .BYTE SECRET-DINING-DOOR
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?VICTORIA-CHAIR:: .TABLE ; TABLE FOR OBJECT VICTORIA-CHAIR
+ .STRL "armchair"
+ .PROP 8,P?SYNONYM
+ W?CHAIR
+ W?SEAT
+ W?ARMCHAIR
+ W?CUSHION
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?ARM
+ .BYTE A?SATIN
+ .PROP 2,P?CAPACITY
+ 99
+ .BYTE 0
+ .ENDT
+
+T?WENDISH-STUFF:: .TABLE ; TABLE FOR OBJECT WENDISH-STUFF
+ .STRL "medical text"
+ .PROP 2,P?ACTION
+ WENDISH-STUFF-F
+ .PROP 8,P?SYNONYM
+ W?TEXT
+ W?TEXTS
+ W?BOOK
+ W?BOOKS
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?MEDICAL
+ .PROP 2,P?DESCFCN
+ WENDISH-STUFF-D
+ .PROP 2,P?CAPACITY
+ 4
+ .PROP 2,P?GENERIC
+ GENERIC-BOOK
+ .BYTE 0
+ .ENDT
+
+T?JUNCTION:: .TABLE ; TABLE FOR OBJECT JUNCTION
+ .STRL "junction"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE OLD-GREAT-HALL ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE BASEMENT ; TO ROOM
+ .PROP 1,P?IN ; UNCONDITIONAL EXIT
+ .BYTE CORR-1 ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE OLD-GREAT-HALL ; TO ROOM
+ .PROP 2,P?ACTION
+ JUNCTION-F
+ .PROP 2,P?SYNONYM
+ W?JUNCTION
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ JUNCTION
+ .PROP 1,P?GLOBAL
+ .BYTE STAIRS
+ .PROP 2,P?CORRIDOR
+ 1
+ .BYTE 0
+ .ENDT
+
+T?MACE:: .TABLE ; TABLE FOR OBJECT MACE
+ .STRL "aerosol device"
+ .PROP 2,P?ACTION
+ MACE-F
+ .PROP 8,P?SYNONYM
+ W?DEVICE
+ W?SPRAY
+ W?BUTTON
+ W?WEAPON
+ .PROP 2,P?ADJECTIVE
+ .BYTE A?AEROSOL
+ .BYTE A?DOG
+ .PROP 2,P?TEXT
+ STR?275
+ .PROP 2,P?SIZE
+ 2
+ .BYTE 0
+ .ENDT
+
+T?WAR-CLUB:: .TABLE ; TABLE FOR OBJECT WAR-CLUB
+ .STRL "war club"
+ .PROP 2,P?ACTION
+ WAR-CLUB-F
+ .PROP 8,P?SYNONYM
+ W?CLUB
+ W?HANDLE
+ W?CANE
+ W?SCEPTRE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?WAR
+ .BYTE 0
+ .ENDT
+
+T?GARDEN:: .TABLE ; TABLE FOR OBJECT GARDEN
+ .STRL "garden"
+ .PROP 1,P?NORTH ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?NE ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?SE ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?SOUTH ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?SW ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?NW ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE MAZE ; TO ROOM
+ .PROP 2,P?ACTION
+ GARDEN-F
+ .PROP 4,P?SYNONYM
+ W?GARDEN
+ W?BOWER
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?CASTLE
+ .PROP 2,P?LINE
+ 1
+ .PROP 2,P?CHARACTER
+ 2
+ .PROP 2,P?STATION
+ GARDEN
+ .PROP 2,P?GLOBAL
+ .BYTE MOON
+ .BYTE OCEAN
+ .BYTE 0
+ .ENDT
+
+T?SECRET-HYDE-DOOR:: .TABLE ; TABLE FOR OBJECT SECRET-HYDE-DOOR
+ .STRL "secret door"
+ .PROP 2,P?SYNONYM
+ W?DOOR
+ .PROP 4,P?ADJECTIVE
+ .BYTE A?SECRET
+ .BYTE A?HYDE'S
+ .BYTE A?HIS
+ .BYTE A?PASSAGE
+ .PROP 2,P?GENERIC
+ GENERIC-BEDROOM
+ .BYTE 0
+ .ENDT
+
+T?TABLE-LIBRARY:: .TABLE ; TABLE FOR OBJECT TABLE-LIBRARY
+ .STRL "table"
+ .PROP 2,P?SYNONYM
+ W?TABLE
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?LIBRARY
+ .PROP 2,P?CAPACITY
+ 999
+ .BYTE 0
+ .ENDT
+
+T?CORR-3:: .TABLE ; TABLE FOR OBJECT CORR-3
+ .STRL "second-floor corridor"
+ .PROP 5,P?NORTH ; CONDITIONAL EXIT
+ .BYTE GAME-ROOM ; TO ROOM
+ .BYTE GAME-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?EAST ; UNCONDITIONAL EXIT
+ .BYTE DECK ; TO ROOM
+ .PROP 5,P?SE ; CONDITIONAL EXIT
+ .BYTE LUMBER-ROOM ; TO ROOM
+ .BYTE LUMBER-ROOM ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 5,P?SOUTH ; CONDITIONAL EXIT
+ .BYTE CHAPEL ; TO ROOM
+ .BYTE CHAPEL ; IF DOOR IS OPEN
+ 0 ; FAILURE MESSAGE
+ .BYTE 0
+ .PROP 1,P?WEST ; UNCONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .PROP 1,P?UP ; UNCONDITIONAL EXIT
+ .BYTE DECK ; TO ROOM
+ .PROP 1,P?DOWN ; UNCONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .PROP 2,P?IN ; IMPOSSIBLE EXIT
+ STR?257 ; FAILURE MESSAGE
+ .PROP 1,P?OUT ; UNCONDITIONAL EXIT
+ .BYTE CORR-2 ; TO ROOM
+ .PROP 2,P?ACTION
+ CORR-3-F
+ .PROP 4,P?SYNONYM
+ W?CORRIDOR
+ W?ROOM
+ .PROP 1,P?ADJECTIVE
+ .BYTE A?SECOND
+ .PROP 2,P?LINE
+ 3
+ .PROP 2,P?CHARACTER
+ 4
+ .PROP 2,P?STATION
+ CORR-3
+ .PROP 4,P?GLOBAL
+ .BYTE LUMBER-ROOM
+ .BYTE CHAPEL
+ .BYTE GAME-ROOM
+ .BYTE STAIRS
+ .BYTE 0
+ .ENDT
+
+T?PSEUDO-OBJECT:: .TABLE ; TABLE FOR OBJECT PSEUDO-OBJECT
+ .STRL "pseudo"
+ .PROP 2,P?ACTION
+ NULL-F
+ .BYTE 0
+ .ENDT
+
+
+; IMPURE TABLES ARE DEFINED HERE
+
+IMPTBL::
+
+T?102::
+T?P-IT-WORDS:: .TABLE
+ 0
+ 0
+ .ENDT
+
+T?202::
+T?C-TABLE:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ I-SHOT
+ 0
+ 0
+ I-COME-TO
+ 0
+ 0
+ I-REPLY
+ 0
+ 0
+ I-TOUR
+ 0
+ 0
+ I-BUTLER-COOKS
+ 0
+ 0
+ I-BUTLER-HINTS
+ 1
+ 50
+ I-DINNER
+ 0
+ 0
+ I-DINNER-SIT
+ 1
+ 10
+ I-DRAGON-EYE
+ 1
+ -1
+ I-ATTENTION
+ 1
+ -1
+ I-FOLLOW
+ 1
+ 1
+ I-PROMPT
+ .ENDT
+
+T?104::
+T?P-LEXV:: .TABLE
+ .BYTE 79
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?204::
+T?AGAIN-LEXV:: .TABLE
+ .BYTE 79
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?304::
+T?RESERVE-LEXV:: .TABLE
+ .BYTE 79
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?404::
+T?P-INBUF:: .TABLE
+ .BYTE 80
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?504::
+T?OOPS-INBUF:: .TABLE
+ .BYTE 80
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?604::
+T?RESERVE-INBUF:: .TABLE
+ .BYTE 80
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?704::
+T?OOPS-TABLE:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?804::
+T?P-ITBL:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?904::
+T?P-OTBL:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?1004::
+T?P-VTBL:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?1104::
+T?P-OVTBL:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?1204::
+T?OFFENDED:: .TABLE
+ 7
+ 0
+ STR?21
+ STR?22
+ STR?23
+ STR?24
+ STR?25
+ STR?26
+ .ENDT
+
+T?1304::
+T?P-CCTBL:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?1404::
+T?P-NAMW:: .TABLE
+ 0
+ 0
+ .ENDT
+
+T?1504::
+T?P-ADJW:: .TABLE
+ 0
+ 0
+ .ENDT
+
+T?1604::
+T?P-OFW:: .TABLE
+ 0
+ 0
+ .ENDT
+
+T?1704::
+T?P-MERGE:: .TABLE
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?1804::
+T?P-PRSO:: .TABLE
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?1904::
+T?P-PRSI:: .TABLE
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?2004::
+T?P-BUTS:: .TABLE
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?2104::
+T?P-OCL1:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?2204::
+T?P-OCL2:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?105::
+T?YES-INBUF:: .TABLE
+ .BYTE 19
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .ENDT
+
+T?205::
+T?YES-LEXV:: .TABLE
+ .BYTE 3
+ .BYTE 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?305::
+T?YAWNS:: .TABLE
+ 5
+ 0
+ STR?46
+ STR?47
+ STR?48
+ STR?49
+ .ENDT
+
+T?405::
+T?CREEPIES:: .TABLE
+ 6
+ 0
+ STR?54
+ STR?55
+ STR?56
+ STR?57
+ STR?58
+ .ENDT
+
+T?505::
+T?YUKS:: .TABLE
+ 8
+ 0
+ STR?77
+ STR?78
+ STR?79
+ STR?80
+ STR?81
+ STR?82
+ STR?83
+ .ENDT
+
+T?106::
+T?PLAYER-OBSTACLES:: .TABLE
+ 3
+ 0
+ STR?143
+ STR?144
+ .ENDT
+
+T?206:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ I-PLAYER
+ 5
+ 0
+ .ENDT
+
+T?306:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?406:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?506:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?606:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?706:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?806:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?906:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ X-WAITS
+ 5
+ 0
+ .ENDT
+
+T?1006:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ BUTLER-APPEARS
+ 1
+ 0
+ .ENDT
+
+T?1106:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ LOVER-XFER
+ 5
+ 0
+ .ENDT
+
+T?1206:: .TABLE
+ 0
+ 0
+ 0
+ 1
+ 0
+ GHOST-LURKS
+ 5
+ 0
+ .ENDT
+
+T?107::
+T?QUESTIONS:: .TABLE
+ 9
+ STR?166
+ STR?167
+ STR?168
+ STR?169
+ STR?170
+ STR?171
+ STR?172
+ STR?173
+ STR?174
+ .ENDT
+
+T?207::
+T?CHAR-CLOSET-TABLE:: .TABLE
+ 15
+ YOUR-CLOSET
+ SECRET-LANDING-TAM
+ SECRET-LANDING-JACK
+ SECRET-VIVIEN-PASSAGE
+ WENDISH-CORNER
+ SECRET-IAN-PASSAGE
+ HYDE-CLOSET
+ IRIS-CLOSET
+ KITCHEN
+ SECRET-LANDING-JACK
+ 0
+ DRAWING-CLOSET
+ SECRET-LANDING-LIB
+ SITTING-PASSAGE
+ DINING-PASSAGE
+ .ENDT
+
+T?307::
+T?CHAR-POSS-TABLE:: .TABLE
+ 16
+ W?MY
+ W?TAM'S
+ W?JACK'S
+ W?VIV'S
+ W?DOC'S
+ W?IAN'S
+ W?HYDE'S
+ W?IRIS'S
+ W?B'S
+ W?DEE'S
+ W?G'S
+ W?LI'S
+ W?MAID'S
+ W?WORM'S
+ W?BUF'S
+ W?RH'S
+ .ENDT
+
+T?407::
+T?FOLLOW-LOC:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?507::
+T?TOUCHED-LDESCS:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?607::
+T?FOUND-COSTUME:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?707::
+T?FOUND-PASSAGES:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?807::
+T?TOLD-ABOUT-GHOST:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?907::
+T?TOLD-ABOUT-EVID:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?1007::
+T?SHOT:: .TABLE
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?113::
+T?FAVE-COLOR:: .TABLE
+ .BYTE 3
+ .BYTE 114
+ .BYTE 101
+ .BYTE 100
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?213::
+T?FIRST-NAME:: .TABLE
+ .BYTE 0
+ .BYTE 120
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?313::
+T?LAST-NAME:: .TABLE
+ .BYTE 0
+ .BYTE 116
+ .BYTE 101
+ .BYTE 115
+ .BYTE 116
+ .BYTE 101
+ .BYTE 114
+ .BYTE 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .ENDT
+
+T?413::
+T?SUFFIX:: .TABLE
+ .BYTE 0
+ .BYTE 0
+ 0
+ 0
+ .ENDT
+
+
+; END OF IMPURENESS
+
+IMPURE::
+
+
+
+; VERB TABLE IS DEFINED HERE
+
+VTBL:: .TABLE
+ ST?SHUT
+ ST?I
+ ST?PULL
+ ST?SUPERBRIEF
+ ST?VERBOSE
+ ST?REQUEST
+ ST?QUIT
+ ST?FIND
+ ST?YES
+ ST?STOP
+ ST?UNLOCK
+ ST?READ
+ ST?CONFRONT
+ ST?SAY
+ ST?JUMP
+ ST?POUR
+ ST?WAIT
+ ST?TAKE
+ ST?NO
+ ST?CALL
+ ST?FOLLOW
+ ST?COMPARE
+ ST?HEAD
+ ST?DINE
+ ST?LIGHT
+ ST?LIE
+ ST?MOVE
+ ST?ARREST
+ ST?PLAY
+ ST?OPEN
+ ST?KNOCK
+ ST?WRITE
+ ST?PICK
+ ST?PEEP
+ ST?MEET
+ ST?PRAY
+ ST?STAND
+ ST?UNDRESS
+ ST?LISTEN
+ ST?SHOW
+ ST?NOD
+ ST?HELP
+ ST?SAVE
+ ST?TELL
+ ST?THROW
+ ST?DESCRIBE
+ ST?DRESS
+ ST?FIDDLE
+ ST?USE
+ ST?HIDE
+ ST?SHAKE
+ ST?ATTACK
+ ST?DAMAGE
+ ST?ENTER
+ ST?THANKS
+ ST?PLACE
+ ST?SEARCH
+ ST?WEAR
+ ST?SWITCH
+ ST?SWIM
+ ST?EXPLAIN
+ ST?HOLD
+ ST?UNSCRIPT
+ ST?HANG
+ ST?RING
+ ST?PUSH
+ ST?RUB
+ ST?SIT
+ ST?SOUND
+ ST?CHANGE
+ ST?SCORE
+ ST?PUNCH
+ ST?FORGIVE
+ ST?DANCE
+ ST?SIGN
+ ST?EMPTY
+ ST?CHECK
+ ST?BOW
+ ST?DROP
+ ST?TIME
+ ST?LEAVE
+ ST?TRY
+ ST?SCRIPT
+ ST?$VERIFY
+ ST?RESTART
+ ST?SMELL
+ ST?BRIEF
+ ST?GET
+ ST?CONSOLE
+ ST?SLEEP
+ ST?GIVE
+ ST?SMILE
+ ST?WAKE
+ ST?DRINK
+ ST?REMOVE
+ ST?ANSWER
+ ST?$CALL
+ ST?YELL
+ ST?SORRY
+ ST?LOCK
+ ST?SHARE
+ ST?POINT
+ ST?MURDER
+ ST?START
+ ST?CLEAN
+ ST?RESTORE
+ ST?CLOSE
+ ST?FIX
+ ST?SLIDE
+ ST?EXAMINE
+ ST?RELEASE
+ ST?EAT
+ ST?FIRE
+ ST?FILL
+ ST?CLIMB
+ ST?WATCH
+ ST?ASK
+ ST?HELLO
+ .ENDT
+
+; SYNTAX DEFINITION TABLES ARE DEFINED HERE
+
+ST?SHUT:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE LIGHTBIT
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?LAMP-OFF
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?CLOSE
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?CLOSE
+ .ENDT
+
+ST?I:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?INVENTORY
+ .ENDT
+
+ST?PULL:: .TABLE
+ .BYTE 4 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?MOVE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE 0
+ .BYTE SC+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?MOVE-DIR
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?MOVE
+ .ENDT
+
+ST?SUPERBRIEF:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?SUPER-BRIEF
+ .ENDT
+
+ST?VERBOSE:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?VERBOSE
+ .ENDT
+
+ST?REQUEST:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?ASK-CONTEXT-FOR
+ .ENDT
+
+ST?QUIT:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?QUIT
+ .ENDT
+
+ST?FIND:: .TABLE
+ .BYTE 4 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?ASK-CONTEXT-ABOUT
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?SSEARCH-FOR
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?SSEARCH-FOR
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FIND
+ .ENDT
+
+ST?YES:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?YES
+ .ENDT
+
+ST?STOP:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?STOP
+ .ENDT
+
+ST?UNLOCK:: .TABLE
+ .BYTE 2 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?UNLOCK
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?UNLOCK
+ .ENDT
+
+ST?READ:: .TABLE
+ .BYTE 4 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE PR?ABOUT
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE READBIT
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR+SHAVE
+ .BYTE V?LOOK-UP
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR+SHAVE
+ .BYTE 0
+ .BYTE V?READ
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR+SHAVE
+ .BYTE V?SREAD
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE READBIT
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR+SHAVE
+ .BYTE 0
+ .BYTE V?READ
+ .ENDT
+
+ST?CONFRONT:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?WITH
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?CONFRONT
+ .ENDT
+
+ST?SAY:: .TABLE
+ .BYTE 6 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE PR?WITH
+ .BYTE PR?ABOUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE SIR
+ .BYTE 0
+ .BYTE V?ASK-ABOUT
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SIR
+ .BYTE 0
+ .BYTE V?TELL
+ .BYTE 2 ;OBJECTS
+ .BYTE PR?TO
+ .BYTE PR?ABOUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE SIR
+ .BYTE 0
+ .BYTE V?TELL-ABOUT
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SIR
+ .BYTE 0
+ .BYTE V?TELL
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ABOUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?TALK-ABOUT
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?SAY
+ .ENDT
+
+ST?JUMP:: .TABLE
+ .BYTE 7 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OVER
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?LEAP
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?DISEMBARK
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?DISEMBARK
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE VEHBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?BOARD
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?FROM
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?DISEMBARK
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ACROSS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?LEAP
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LEAP
+ .ENDT
+
+ST?POUR:: .TABLE
+ .BYTE 5 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?OVER
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SHAVE+STAKE
+ .BYTE 0
+ .BYTE V?PUT
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SHAVE+STAKE
+ .BYTE 0
+ .BYTE V?PUT
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SHAVE+STAKE
+ .BYTE 0
+ .BYTE V?PUT-IN
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?FROM
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SHAVE+STAKE
+ .BYTE 0
+ .BYTE V?POUR
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SHAVE+STAKE
+ .BYTE 0
+ .BYTE V?POUR
+ .ENDT
+
+ST?WAIT:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UNTIL
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WAIT-UNTIL
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?FOR
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WAIT-FOR
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WAIT-FOR
+ .ENDT
+
+ST?TAKE:: .TABLE
+ .BYTE 11 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE TAKEBIT
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SC+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE WORNBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?TAKE-OFF
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE 0
+ .BYTE SIR+SC+STAKE+SHAVE
+ .BYTE 0
+ .BYTE V?HOLD-UP
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE 0
+ .BYTE SMANY+STAKE
+ .BYTE 0
+ .BYTE V?TAKE-TO
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?FROM
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE TAKEBIT
+ .BYTE 0
+ .BYTE SOG+SIR+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .ENDT
+
+ST?NO:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?NO
+ .ENDT
+
+ST?CALL:: .TABLE
+ .BYTE 2 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?$CALL
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?$CALL
+ .ENDT
+
+ST?FOLLOW:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?TO
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FOLLOW
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FOLLOW
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FOLLOW
+ .ENDT
+
+ST?COMPARE:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE SH+SC+SOG+SIR
+ .BYTE V?COMPARE
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE SH+SC+SOG+SIR
+ .BYTE V?COMPARE
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SMANY
+ .BYTE 0
+ .BYTE V?COMPARE
+ .ENDT
+
+ST?HEAD:: .TABLE
+ .BYTE 17 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?DRIVE-TO
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?THROUGH
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?THROUGH
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?OVER
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?RUN-OVER
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?DRIVE-TO
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FOLLOW
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?CLIMB-UP
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?TO
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WALK-TO
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?THROUGH
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?THROUGH
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LEAVE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WALK-TO
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?THROUGH
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?DOWN
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?CLIMB-DOWN
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?BEHIND
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?THROUGH
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?AWAY
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LEAVE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?AROUND
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WALK-AROUND
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?AFTER
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FOLLOW
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?WALK
+ .ENDT
+
+ST?DINE:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR+SHAVE+STAKE
+ .BYTE 0
+ .BYTE V?EAT
+ .ENDT
+
+ST?LIGHT:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE LIGHTBIT
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?LAMP-ON
+ .ENDT
+
+ST?LIE:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE VEHBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?LIE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE VEHBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?LIE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?DOWN
+ .BYTE 0
+ .BYTE VEHBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?LIE
+ .ENDT
+
+ST?MOVE:: .TABLE
+ .BYTE 2 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?MOVE-DIR
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?MOVE
+ .ENDT
+
+ST?ARREST:: .TABLE
+ .BYTE 2 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?FOR
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?ARREST
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?ARREST
+ .ENDT
+
+ST?PLAY:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?PLAY
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?PLAY
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?PLAY
+ .ENDT
+
+ST?OPEN:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?WITH
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE SOG+SIR+SH+SC+SHAVE+STAKE
+ .BYTE V?OPEN-WITH
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?OPEN
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?OPEN
+ .ENDT
+
+ST?KNOCK:: .TABLE
+ .BYTE 7 ;NUMBER OF SYNTAXES
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE SIR+SOG
+ .BYTE 0
+ .BYTE V?SLAP
+ .BYTE 2 ;OBJECTS
+ .BYTE 0
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE SIR+SOG+SMANY
+ .BYTE 0
+ .BYTE V?PUSH
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE SIR+SOG
+ .BYTE 0
+ .BYTE V?SLAP
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OFF
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE SIR+SOG
+ .BYTE 0
+ .BYTE V?PUSH
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?DOWN
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?ATTACK
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?AT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?KNOCK
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?KNOCK
+ .ENDT
+
+ST?WRITE:: .TABLE
+ .BYTE 2 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE STAKE+SHAVE+SH+SC
+ .BYTE 0
+ .BYTE V?SIGN
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE STAKE+SHAVE+SH+SC
+ .BYTE 0
+ .BYTE V?SIGN
+ .ENDT
+
+ST?PICK:: .TABLE
+ .BYTE 2 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE TAKEBIT
+ .BYTE 0
+ .BYTE SOG+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE TAKEBIT
+ .BYTE 0
+ .BYTE SOG+SMANY
+ .BYTE 0
+ .BYTE V?TAKE
+ .ENDT
+
+ST?PEEP:: .TABLE
+ .BYTE 16 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?THROUGH
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?LOOK-THROUGH
+ .BYTE 2 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK-UP
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK-UP
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UNDER
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK-UNDER
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OVER
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?EXAMINE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?OUT
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK-OUTSIDE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?LOOK-ON
+ .BYTE 2 ;OBJECTS
+ .BYTE PR?IN
+ .BYTE PR?FOR
+ .BYTE 0
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?SEARCH-FOR
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?IN
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE SH+SC+SOG+SIR
+ .BYTE 0
+ .BYTE V?LOOK-INSIDE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?FOR
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?FIND
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?DOWN
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK-DOWN
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?BEHIND
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK-BEHIND
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?AT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?EXAMINE
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?AROUND
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?CHASTISE
+ .BYTE 0 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?LOOK
+ .ENDT
+
+ST?MEET:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE 0
+ .BYTE 0
+ .BYTE PERSONBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE V?MEET
+ .ENDT
+
+ST?PRAY:: .TABLE
+ .BYTE 1 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?FOR
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?PRAY
+ .ENDT
+
+ST?STAND:: .TABLE
+ .BYTE 3 ;NUMBER OF SYNTAXES
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?UP
+ .BYTE 0
+ .BYTE RMUNGBIT
+ .BYTE 0
+ .BYTE 0
+ .BYTE 0
+ .BYTE V?STAND
+ .BYTE 1 ;OBJECTS
+ .BYTE PR?ON
+ .BYTE 0
+ .BYTE VEHBIT
+ .BYTE 0
+ .BYTE SOG+SIR
+ .BYTE 0
+ .BYTE