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." + + + + + + + + + ) + (T + + )>) + ( + >> + ) + (T )>) + ( + + + > + ) + (T )> + ) + (T )>) + (T + + > + + ; + ) + (T )>)>) + ( + > + + ) + (T )>)>> + + + + + ) + ( + ) + ( ;"WING-ROOMS" + + )>> + + + + + ) + ( + + )>> + + + + + ) + ( + )>> +[ + + )>> + + + +;< (GLOBAL ;CAR-WINDOW FRONT-GATE CAR MOON OCEAN COURTYARD) + (THINGS BLAST NULL-F)>) + (LINE 1) + (STATION DRIVEWAY) + (CHARACTER 2) ;"floor number" + (OUT PER DECAR-F)> + +> + > + ;>> + ) + ( + + > + ;"DRIVE CAR THRU object" + >> + + ) + (T )>) + (T ;"DRIVE CAR IN" + + )>) + (>> + ) + (T )>) + ( + ,ROOMS ,CAR>> + )>) + ( + > + >> + )>)>> + +) "AUX" S) + > + + + + + > + ) + ( + + ) + (T + + )>) + (T )>) + ( + + > + ) + (> + ) + (T ; + )>) + ( + + ) + (> + ) + (T ; + )>) + ( + >> + > + ) + (T )>) + (T ; + + + + ;)>) + (T ; + + > + ; ,COURTYARD ,CASTLE> + ) + (> + ) + (T ; + )>) + ( + + ) + (> + ) + (T ; + )>) + ( + >> + > + ) + (T )>) + ( + ,W?GO> + ) + (> + ) + (T )>) + (T )>) + ;(T )>) + ( > + + ) + ( + + > + >> + ; + >>> + ; + + ;> + + ) + (T )>) + ( + ;"only if syntax allows it" + + ) + ( + + )>)>) + ( + ;,HERE ,CAR> + )> + ) + (.ARG ) + ( + + ) + ;( + + ) + ( + ) + (T + + )>) + ;( + + ) + ( + )>> + + + + > + + + > + + + )> + > + +