mirror of
https://github.com/historicalsource/moonmist
synced 2024-04-26 14:09:36 +03:00
3219 lines
109 KiB
Plaintext
3219 lines
109 KiB
Plaintext
"PEOPLE for MOONMIST
|
||
Copyright (C) 1986 Infocom, Inc. All rights reserved."
|
||
|
||
"By Lan, Ros, Car, Pol, Tre, and Pen
|
||
Ye may know the Cornishmen."
|
||
|
||
"Constants used as table offsets for each character, including the player:"
|
||
<CONSTANT PLAYER-C 0>
|
||
<CONSTANT FRIEND-C 1>
|
||
<CONSTANT LORD-C 2>
|
||
<CONSTANT LOVER-C 9>
|
||
<CONSTANT DEB-C 7>
|
||
<CONSTANT OFFICER-C 5>
|
||
<CONSTANT DOCTOR-C 4>
|
||
<CONSTANT DEALER-C 6>
|
||
<CONSTANT PAINTER-C 3>
|
||
<CONSTANT COUSIN-C 11>
|
||
<CONSTANT BUTLER-C 8>
|
||
<CONSTANT MAID-C 12>
|
||
<CONSTANT DRAGON-C 13>
|
||
<CONSTANT BUFFALO-HEAD-C 14>
|
||
<CONSTANT RHINO-HEAD-C 15>
|
||
<CONSTANT GHOST-NEW-C 10>
|
||
<CONSTANT GHOST-OLD-C 16>
|
||
<CONSTANT CHARACTER-MAX 8 ;14>
|
||
<CONSTANT DINNER-FOR 8>
|
||
|
||
<OBJECT PLAYER
|
||
(DESC "yourself")
|
||
(IN CAR)
|
||
(SYNONYM ;"I" ME MYSELF)
|
||
(ACTION PLAYER-F)
|
||
(FLAGS NDESCBIT NARTICLEBIT SEARCHBIT PERSONBIT SEENBIT TOUCHBIT FEMALE
|
||
;TRANSBIT OPENBIT ;"see GET-OBJECT")
|
||
(LDESC 0) ;"for generality"
|
||
(LINE 0) ;"for generality"
|
||
(CHARACTER 0)>
|
||
|
||
<OBJECT PLAYER-NAME
|
||
(IN GLOBAL-OBJECTS)
|
||
(DESC "yourself")
|
||
(ADJECTIVE F.N L.N ;"for poss's")
|
||
(SYNONYM ;F.N L.N WE US)
|
||
(ACTION PLAYER-NAME-F)
|
||
(FLAGS NARTICLEBIT PERSONBIT SEENBIT TOUCHBIT)>
|
||
|
||
<ROUTINE PLAYER-NAME-F ()
|
||
<DO-INSTEAD-OF ,PLAYER ,PLAYER-NAME>
|
||
<RTRUE>>
|
||
|
||
;<GLOBAL PLAYER-SEATED:NUMBER <>> "negative => lying down"
|
||
;<GLOBAL PLAYER-HIDING:OBJECT <>>
|
||
|
||
;<ROUTINE NOISY? (RM) <RFALSE>>
|
||
|
||
<ROUTINE PLAYER-F ("OPTIONAL" (ARG <>) "AUX" (L <>))
|
||
<COND (<NOT <==? .ARG ,M-WINNER>>
|
||
<COND (<DOBJ? PLAYER>
|
||
<COND (<VERB? ARREST DANCE ;GOODBYE HELLO SORRY THANKS>
|
||
<HAR-HAR>
|
||
<RTRUE>)
|
||
(<VERB? EXAMINE>
|
||
<TELL "You are wearing">
|
||
<COND (<ZERO? ,NOW-WEARING> <TELL " nothing">)
|
||
(T <TELL THE ,NOW-WEARING>)>
|
||
<SET L <FIRST? ,PLAYER>>
|
||
<REPEAT ()
|
||
<COND (<ZERO? .L>
|
||
<RETURN>)
|
||
(<AND <FSET? .L ,WORNBIT>
|
||
<NOT <==? .L ,NOW-WEARING>>>
|
||
<TELL " and" THE .L>)>
|
||
<SET L <NEXT? .L>>>
|
||
<TELL "." CR>
|
||
<RTRUE>)
|
||
(<VERB? SEARCH>
|
||
<PERFORM ,V?INVENTORY>
|
||
<RTRUE>)
|
||
(<VERB? SMELL>
|
||
<TELL "You smell ">
|
||
<COND (<T? ,WASHED> <TELL "clean and fresh." CR>)
|
||
(T <TELL "as if you need washing." CR>)>
|
||
<RTRUE>)>)
|
||
(T <RFALSE>)>)
|
||
(<DIVESTMENT? ,NOW-WEARING>
|
||
<COND (<NO-CHANGING?> <RTRUE>)
|
||
(T
|
||
<COND (<AND <NOT <ZERO? ,NOW-WEARING>>
|
||
<NOT <VERB? DISEMBARK REMOVE>>>
|
||
;<MOVE ,NOW-WEARING ,WINNER>
|
||
<FIRST-YOU "remove" ,NOW-WEARING>
|
||
<FCLEAR ,NOW-WEARING ,WORNBIT>
|
||
<SETG NOW-WEARING <>>)>
|
||
<RFALSE>)>)
|
||
(<AND <T? ,PRSI>
|
||
<NOT <VERB? SEARCH-FOR>>
|
||
<FSET? ,PRSI ,SECRETBIT>
|
||
<NOT <FSET? ,PRSI ,SEENBIT>>>
|
||
<NOT-FOUND ,PRSI>
|
||
<RTRUE>)
|
||
(<AND <T? ,PRSO>
|
||
<NOT <VERB? FIND WALK ;$WHERE>>
|
||
<FSET? ,PRSO ,SECRETBIT>
|
||
<NOT <FSET? ,PRSO ,SEENBIT>>>
|
||
<NOT-FOUND ,PRSO>
|
||
<RTRUE>)
|
||
(<AND <T? ,AWAITING-REPLY>
|
||
<VERB? FOLLOW THROUGH WALK WALK-TO>>
|
||
<SETG CLOCK-WAIT T>
|
||
<PLEASE-ANSWER>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? <SET L <LOC ,PLAYER>> ,HERE ,CAR>
|
||
;<NOT ,PLAYER-SEATED>
|
||
;<NOT ,PLAYER-HIDING>>
|
||
<RFALSE>)
|
||
(<T? ,P-WALK-DIR> <TOO-BAD-SIT-HIDE>)
|
||
(<EQUAL? ,PRSO <> ,ROOMS .L>
|
||
<RFALSE>)
|
||
;(<EQUAL? ,PRSO ,PLAYER-SEATED <- 0 ,PLAYER-SEATED>>
|
||
<RFALSE>)
|
||
(<VERB? WALK-TO SEARCH SEARCH-FOR FIND>
|
||
<COND (<DOBJ? SLEEP-GLOBAL> <RFALSE>)
|
||
(T <TOO-BAD-SIT-HIDE>)>)
|
||
(<SPEAKING-VERB?> <RFALSE>)
|
||
(<GAME-VERB?> <RFALSE>)
|
||
(<REMOTE-VERB?> <RFALSE>)
|
||
(<VERB? AIM FAINT LISTEN LOOK-ON NOD SHOOT SMILE>
|
||
<RFALSE>)
|
||
(<HELD? ,PRSO> <RFALSE>)
|
||
(<HELD? ,PRSO ,GLOBAL-OBJECTS> <RFALSE>)
|
||
(<AND <EQUAL? .L ,CHAIR-DINING>
|
||
<IN? ,PRSO ,TABLE-DINING>>
|
||
<RFALSE>)
|
||
(<VERB? EXAMINE> <RFALSE>)
|
||
(<NOT <HELD? ,PRSO .L ;,PLAYER-SEATED>> <TOO-BAD-SIT-HIDE>)
|
||
(<NOT ,PRSI> <RFALSE>)
|
||
(<HELD? ,PRSI> <RFALSE>)
|
||
(<HELD? ,PRSI ,GLOBAL-OBJECTS> <RFALSE>)
|
||
(<NOT <HELD? ,PRSI .L ;,PLAYER-SEATED>> <TOO-BAD-SIT-HIDE>)>>
|
||
|
||
<ROUTINE PLEASE-ANSWER ("AUX" (P <GETB ,QUESTIONERS ,AWAITING-REPLY>))
|
||
<TELL D .P " says, \"">
|
||
<COND (<EQUAL? .P ,BUTLER ,DOCTOR>
|
||
<TELL "Pardon me, "TN", but">)
|
||
(T <TELL "Wait a mo'.">)>
|
||
<TELL " I asked you a question.\"" CR>>
|
||
|
||
<ROUTINE TOO-BAD-SIT-HIDE ()
|
||
<COND ;(<T? ,PLAYER-SEATED>
|
||
<COND (<AND <VERB? LIE> <G? 0 ,PLAYER-SEATED>>
|
||
<ALREADY ,WINNER "lying down">)
|
||
(<AND <VERB? SIT> <L? 0 ,PLAYER-SEATED>>
|
||
<ALREADY ,WINNER "sitting down">)
|
||
(T
|
||
<SETG PLAYER-SEATED <>>
|
||
<FIRST-YOU "stand up">
|
||
<RFALSE>)>)
|
||
(T
|
||
<MOVE ,WINNER ,HERE>
|
||
<FIRST-YOU "stand up">
|
||
<RFALSE>)
|
||
;(,PLAYER-HIDING
|
||
<SETG CLOCK-WAIT T>
|
||
<COND (<AND <VERB? HIDE-BEHIND> <ZERO? ,PRSI>>
|
||
<ALREADY ,WINNER "hiding">
|
||
;<TELL "(You're already hiding.)" CR>)
|
||
(T <TELL "(You can't do that while you're hiding.)" CR>)>)>>
|
||
|
||
<OBJECT FRIEND
|
||
(DESC "Tamara")
|
||
(IN LIMBO ;COURTYARD)
|
||
(ADJECTIVE MS MISS
|
||
TAMARA TAMMY LYND WOMAN ;"for poss's")
|
||
(SYNONYM TAMARA TAMMY LYND WOMAN)
|
||
(ACTION FRIEND-F)
|
||
(DESCFCN FRIEND-D)
|
||
(LDESC 0)
|
||
(WEST "looking at you hopefully")
|
||
(TEXT
|
||
"She's a beautiful red-haired young woman of average height.")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT FEMALE NARTICLEBIT NDESCBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0) ;"unfriendliness"
|
||
(CHARACTER 1)>
|
||
|
||
<ROUTINE FRIEND-D ("OPTIONAL" (ARG <>))
|
||
<COND (T ;<OR <FSET? ,FRIEND ,TOUCHBIT>
|
||
<T? ,CLOCK-WAIT>>
|
||
<DESCRIBE-PERSON ,FRIEND>
|
||
<RTRUE>)>>
|
||
[
|
||
<GLOBAL AWAITING-REPLY:NUMBER <>>
|
||
|
||
"<CONSTANT FRIEND-R 1>
|
||
<CONSTANT DEB-R 7>
|
||
<CONSTANT DOCTOR-R 4>"
|
||
<CONSTANT OFFICER-1-R 5>
|
||
<CONSTANT OFFICER-2-R 8>
|
||
<CONSTANT BUTLER-1-R 2>
|
||
<CONSTANT BUTLER-2-R 3>
|
||
<CONSTANT BUTLER-3-R 6>
|
||
<CONSTANT BUTLER-4-R 9>
|
||
;<CONSTANT BUTLER-5-R 10>
|
||
|
||
<GLOBAL QUESTIONERS
|
||
<PLTABLE (BYTE) FRIEND BUTLER BUTLER DOCTOR OFFICER
|
||
BUTLER DEB OFFICER BUTLER>>
|
||
|
||
<GLOBAL QUESTIONS
|
||
<LTABLE
|
||
"You did read my letter, and not just give it a hasty glance?"
|
||
"Do you wish me to do so before I leave?"
|
||
"Am I right in assuming that you are the well-known young American detective?"
|
||
"Is it a case that brings you to Cornwall?"
|
||
"Have you a theory about the castle ghost?"
|
||
"May I offer one last suggestion?"
|
||
"Are you one of those brutally fascinating American private eyes?"
|
||
"Are there more girl sleuths like you in the States, my dear?"
|
||
"You've seen that room, have you not?">>
|
||
|
||
<ROUTINE I-REPLY ("OPTIONAL" (GARG <>) "AUX" P X)
|
||
%<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
|
||
<TELL "[I-REPLY:">
|
||
<COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
|
||
<COND (<ZERO? ,AWAITING-REPLY>
|
||
<RFALSE>)
|
||
(<OR <EQUAL? ,AWAITING-REPLY ,BUTLER-1-R ,BUTLER-2-R ,BUTLER-3-R>
|
||
<EQUAL? ,AWAITING-REPLY ,BUTLER-4-R ;,BUTLER-5-R>>
|
||
<COND (<QUEUED? ,I-BUTLER-HINTS>
|
||
<QUEUE I-BUTLER-HINTS ,CLOCKER-RUNNING>)>
|
||
<SET P ,BUTLER>)
|
||
(<AND <EQUAL? ,AWAITING-REPLY ,FRIEND-C>
|
||
<EQUAL? ,VARIATION ,FRIEND-C>>
|
||
<SET P ,FRIEND>)
|
||
;(T
|
||
<SET P <GET ,CHARACTER-TABLE ,AWAITING-REPLY>>)
|
||
(<EQUAL? ,AWAITING-REPLY ,DEB-C>
|
||
<SET P ,DEB>)
|
||
(<EQUAL? ,AWAITING-REPLY ,OFFICER-1-R ,OFFICER-2-R>
|
||
<SET P ,OFFICER>)
|
||
(<EQUAL? ,AWAITING-REPLY ,DOCTOR-C>
|
||
<SET P ,DOCTOR>)
|
||
;(T <SET P ,QCONTEXT>)>
|
||
<COND (<ZERO? .P>
|
||
<SETG AWAITING-REPLY <>>
|
||
<RFALSE>)
|
||
(T
|
||
<SET X <GETP .P ,P?LINE>>
|
||
<PUTP .P ,P?LINE <+ 1 .X>>
|
||
<COND (<0? .X>
|
||
<QUEUE I-REPLY ,CLOCKER-RUNNING>
|
||
<TELL
|
||
D .P " repeats, \"I said: " <GET ,QUESTIONS ,AWAITING-REPLY> "\"|">)
|
||
(T
|
||
<SETG AWAITING-REPLY <>>
|
||
<PUTP .P ,P?LDESC 20 ;"ignoring you">
|
||
<COND (<AND <VISIBLE? .P>
|
||
;<NOT <FSET? .P ,MUNGBIT>>>
|
||
<TELL CHE .P " mutters, \"I'd ">
|
||
<COND (<EQUAL? .P ,FRIEND>
|
||
<TELL "wondered if you">)
|
||
(T <TELL "heard that Americans">)>
|
||
<TELL " were rude, but really...!\"" CR>)>)>
|
||
<RFATAL>)>>
|
||
]
|
||
<ROUTINE FRIEND-F ("OPTIONAL" (ARG <>) "AUX" OBJ X ;(L <LOC ,FRIEND>))
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<AND <EQUAL? ,AWAITING-REPLY ,FRIEND-C>
|
||
<VERB? YES NO>>
|
||
<PUTP ,FRIEND ,P?LDESC 0>
|
||
<PUTP ,FRIEND ,P?LINE 0>
|
||
<SETG AWAITING-REPLY <>>
|
||
<TELL "\"Then you ">
|
||
<COND (<NOT <VERB? YES>>
|
||
<TELL "don't " ;"know yet">)>
|
||
<SETG P-IT-OBJECT ,GHOST-NEW>
|
||
<TELL
|
||
"know about my engagement, and the " 'GHOST-OLD ", and the fact that...
|
||
that someone is trying to kill me!\"" CR>)
|
||
(<NOT <GRAB-ATTENTION ,FRIEND>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE> <DOBJ? GHOST-NEW>>
|
||
<TELL
|
||
"Tammy shakes her head. \"I just don't know if the ghost was
|
||
" 'LOVER ". I never saw her, just that portrait by Vivien.
|
||
The night I saw that ghastly face peering down at me...
|
||
Well, I was too shaken to remember anything, except that horrible
|
||
spider dropping down on me!\" She shudders at the memory." CR>)
|
||
(<AND <VERB? FOLLOW>
|
||
<DOBJ? PLAYER>>
|
||
<COND (<WILLING? ,FRIEND>
|
||
;<NOT <EQUAL? ,VARIATION ,FRIEND-C>>
|
||
<TELL "\"I'll try my best, " FN "!\"" CR>
|
||
<NEW-FOLLOWER ,FRIEND>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "\"Not just now.\"" CR>
|
||
<RTRUE>)>)
|
||
(<VERB? YES>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?KISS ,FRIEND>
|
||
<RTRUE>)
|
||
(<SET X <COM-CHECK ,FRIEND>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WHY-ME> <RFATAL>)>)
|
||
;(<VERB? RUB>
|
||
<COND (<NOT <GRAB-ATTENTION ,FRIEND>>
|
||
<RFATAL>)
|
||
(T <TELL "\"But... I'm engaged!\"" CR>)>)
|
||
(<AND <VERB? ASK-ABOUT SHOW TELL-ABOUT>
|
||
<IOBJ? CAR TWEED-OUTFIT EXERCISE-OUTFIT
|
||
DINNER-OUTFIT SLEEP-OUTFIT>>
|
||
<COND (<NOT <GRAB-ATTENTION ,FRIEND>>
|
||
<RFATAL>)
|
||
(T
|
||
<TELL "\"It's super!">
|
||
<COND (<NOT <IOBJ? TWEED-OUTFIT>>
|
||
<TELL " And it's " 'YOUR-COLOR "!">)>
|
||
<TELL "\"" CR>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,FRIEND>>
|
||
<COND (<NOT <GRAB-ATTENTION ,FRIEND .OBJ>>
|
||
<RFATAL>)
|
||
(<EQUAL? .OBJ ,CASTLE>
|
||
<TELL
|
||
"\"Oh, it's such a lovely place. If only I felt safe here!\"" CR>)
|
||
(<AND <OR <EQUAL? .OBJ ,SEARCHER>
|
||
<EVIDENCE? .OBJ>>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,FRIEND-C>>>
|
||
<NOT <==? ,FRIEND ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<EQUAL? .OBJ ,COUSIN ,BUST ;,RECORDER>
|
||
<TELL "\"Sorry, but I never met the man.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,DEB>
|
||
<==? ,VARIATION ,FRIEND-C>>
|
||
;<DISCRETION ,FRIEND .OBJ>
|
||
<TELL ,RHYMES-WITH-RICH CR>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<TELL
|
||
"\"You know I've never worn glasses, "FN", or " 'LENS "es, either.">
|
||
<COND (<AND <EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ,PAINTER-C>
|
||
<T? ,FOUND-IT-PERM>
|
||
;<FSET? ,FOUND-IT-PERM ,SEENBIT>
|
||
;<FSET? ,LENS ,TOUCHBIT>>
|
||
<TELL " I can't imagine who dropped it.">)>
|
||
<TELL "\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,PASSAGE>
|
||
<T? ,FRIEND-FOUND-PASSAGES>>
|
||
<FRIEND-PASSAGE-STORY>)
|
||
(<OR <EQUAL? .OBJ ,PRIEST-DOOR>
|
||
<AND <EQUAL? .OBJ ,PASSAGE>
|
||
<ZERO? <GET ,FOUND-PASSAGES ,FRIEND-C>>>>
|
||
<TELL !\">
|
||
<COND (<EQUAL? .OBJ ,PASSAGE>
|
||
<TELL "You mean " 'PASSAGE "s like in horror movies? ">)>
|
||
<TELL "Golly, I don't know that much about the castle, ">
|
||
<COND (<PRINT-NAME ,FIRST-NAME> <TELL !\.>)>
|
||
<TELL " Maybe Jack could tell you.">
|
||
<COND (<EQUAL? ,VARIATION ,FRIEND-C>
|
||
<TELL " Or Iris, who's spent far too much time here.">)>
|
||
<TELL "\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,LORD ,ROMANCE ,FRIEND>
|
||
<OR <NOT <EQUAL? .OBJ ,SEARCHER>>
|
||
<NOT <==? <GETP .OBJ ,P?LDESC> 21 ;"searching">>>>
|
||
<COND (<OR <EQUAL? .OBJ ,FRIEND>
|
||
<FSET? ,LORD ,TOUCHBIT>>
|
||
<TELL "\"Oh, "FN", I">
|
||
<COND (<EQUAL? ,VARIATION ,LORD-C>
|
||
<TELL " was">)
|
||
(T <TELL "'m">)>
|
||
<TELL
|
||
" so happy!\" " 'FRIEND " gushes. \"The whole thing seem">
|
||
<COND (<EQUAL? ,VARIATION ,LORD-C>
|
||
<TELL "ed ">)
|
||
(T <TELL "s ">)>
|
||
<TELL
|
||
"just like a fairy tale, or a paperback romance! But ">
|
||
<COND (<EQUAL? ,VARIATION ,LORD-C>
|
||
<TELL "lately,">
|
||
<COND (<EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
|
||
<TELL "\" she whispers, \"">)
|
||
(T <TELL !\ >)>
|
||
<TELL "Jack seems cool toward me">)
|
||
(T <TELL "I told you all about it in my letter">)>
|
||
<TELL ".\"" CR>)
|
||
(T
|
||
<MOVE ,LORD ,HERE>
|
||
<LORD-INTRO>
|
||
<RTRUE>)>)
|
||
(<EQUAL? .OBJ ,LOVER>
|
||
<TELL
|
||
;"\"You may be reading between the lines -- perhaps too much.
|
||
Oh, I know people hint the two of them had something going -- but if so,
|
||
I'm sure it was just a passing fancy on Jack's part.\"|
|
||
She adds, \"Mind you, 'LOVER may have been in love with HIM -- that
|
||
wouldn't surprise me. " "\"She lived just down the beach, and from all
|
||
accounts she spent most of her time hanging about the castle. If she'd
|
||
stayed home a bit more, " 'ACCIDENT " never would've happened -- I mean,
|
||
her falling in the well and drowning.\"" CR>)
|
||
(<EQUAL? .OBJ ,ACCIDENT>
|
||
<TELL
|
||
"\"I can't tell you much,\" says " 'FRIEND ", \"because I wasn't here
|
||
when it happened. But all the guests here tonight were also here that
|
||
night. At dinner, they decided to have a wine tasting later in the
|
||
evening. " 'LOVER " was to choose and pour the wine. But when the time
|
||
came, she didn't show up, so they sent the butler down to the "
|
||
'BASEMENT ", to find her and help carry up the bottles. He came back
|
||
saying that she'd fallen down the well!\"" CR>)
|
||
(<EQUAL? .OBJ ,GHOST-OLD>
|
||
<TELL "\"I've told you all I know in my letter, ">
|
||
<COND (<PRINT-NAME ,FIRST-NAME> <TELL !\.>)>
|
||
<TELL
|
||
" But come to think of it, there's an old " 'HISTORY-BOOK " in the "
|
||
'LIBRARY " that tells about " 'CASTLE ". You might learn more from
|
||
that.\"" CR>)
|
||
(<EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<TELL
|
||
"\"Since I wrote you, I've seen the ghost again, and this third time was
|
||
the worst. After working late one night, I was " <GET ,LDESC-STRINGS 17>
|
||
;"preparing to leave" " the office to go to my room. As I opened the
|
||
door to the " 'CORR-2 ", I saw this ghostly figure with "
|
||
,LONG-BLOND-HAIR " and a dead white face. It was holding a sword and
|
||
about to attack me!\"|
|
||
" 'FRIEND " gulps and her voice quavers as she concludes,
|
||
\"I s-s-screamed and shrank back inside the office and slammed
|
||
the door! That's about all I can tell you, "FN"...\"" CR>
|
||
<COND (<AND <EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
|
||
<ZERO? <GETP ,LORD ,P?LINE>>>
|
||
<TELL
|
||
"\"I was just dozing off when Tammy's scream woke
|
||
me,\" adds " 'LORD ". \"By the time I ran into the " 'CORR-2 ",
|
||
the ghost ">
|
||
<COND (<EQUAL? ,VARIATION ,FRIEND-C>
|
||
<TELL "had disappeared.\"" CR>)
|
||
(T <TELL
|
||
"was almost gone. I did catch" ,WHITISH-GLIMPSE " as it disappeared down
|
||
the tower stairs -- but frankly I was more concerned about " 'FRIEND
|
||
".\"" CR>)>)>
|
||
<TELL
|
||
'FRIEND " fidgets nervously. \"I don't know whether this ghost is real,
|
||
or someone just play-acting. It can sneak around anywhere it pleases in
|
||
the whole castle. I just don't understand how a person dressed up like a
|
||
spook can do that without being caught!\"" CR>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? .OBJ ,COSTUME ,BLOWGUN ,TAMARA-EVIDENCE>
|
||
<EQUAL? ,VARIATION ,FRIEND-C>>
|
||
<TELL "\"I've, uh, never seen it before.\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,FRIEND .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(<AND <FSET? .OBJ ,PERSONBIT>
|
||
<NOT <EQUAL? .OBJ ,MAID>>>
|
||
<SETG CLOCK-WAIT T>
|
||
<TELL
|
||
"\"I already told you about" HIM .OBJ " in my letter.\"" CR>)
|
||
(T
|
||
<COND (<VERB? SHOW>
|
||
<TELL "\"It looks like " A .OBJ " to me.\"" CR>)
|
||
(T
|
||
<TELL "\"I just don't know, ">
|
||
<COND (<PRINT-NAME ,FIRST-NAME> <TELL !\.>)>
|
||
<TELL "\"" ;" That's why I wrote and asked you to come
|
||
here after you landed in England and took delivery of your new 'CAR .\""
|
||
CR>)>)>)
|
||
(<AND <VERB? FOLLOW>
|
||
<TOUR?>>
|
||
<RTRUE>)
|
||
(<VERB? KISS HELLO ;DANCE>
|
||
<UNSNOOZE ,FRIEND>
|
||
<PUTP ,FRIEND ,P?LINE 0>
|
||
<PUTP ,FRIEND ,P?LDESC 0>
|
||
;<COND (<EQUAL? ,AWAITING-REPLY ,FRIEND-C>
|
||
<QUEUE I-REPLY 0>)>
|
||
<TELL
|
||
CHE ,FRIEND hug " you with affection. \"I'm so glad you're here!\"" CR>)
|
||
(T <PERSON-F ,FRIEND .ARG>)>>
|
||
|
||
<GLOBAL RHYMES-WITH-RICH
|
||
"\"I won't say what I think of her, but it rhymes with 'rich.'\"">
|
||
|
||
<OBJECT TAMARA-EVIDENCE
|
||
(DESC "Tamara's receipt")
|
||
(ADJECTIVE TAM\'S HER)
|
||
(SYNONYM EVIDENCE RECEIPT)
|
||
(FLAGS NDESCBIT READBIT NARTICLEBIT SECRETBIT RMUNGBIT ;"evidence")
|
||
(CHARACTER 1) ;"for this char"
|
||
(SIZE 2)
|
||
(ACTION TAMARA-EVIDENCE-F)>
|
||
|
||
<ROUTINE TAMARA-EVIDENCE-F ()
|
||
<COND (<VERB? EXAMINE LOOK-INSIDE READ>
|
||
<COND (<NOT-HOLDING? ,PRSO>
|
||
<RTRUE>)>
|
||
<TELL
|
||
"It's a receipt for the purchase of an adder from a pet shop in
|
||
Frobzance. Someone has written the word \"Iris\" on it and then
|
||
viciously crossed it out." CR>
|
||
<COND (<ZERO? ,EVIDENCE-FOUND>
|
||
<CONGRATS>)>
|
||
<SETG EVIDENCE-FOUND ,TAMARA-EVIDENCE>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE ASKING-ABOUT? (WHO "AUX" DR)
|
||
<COND (<VERB? ASK-ABOUT CONFRONT SHOW>
|
||
<COND (<AND <IOBJ? PASSAGE>
|
||
<SET DR <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>
|
||
<FSET? .DR ,OPENBIT>> ;"SHOW [open] PASSAGE TO x"
|
||
<RFALSE>)
|
||
(<EQUAL? .WHO ,PRSO>
|
||
<RETURN ,PRSI>)>)
|
||
;(<VERB? FIND ;WHAT>
|
||
<COND (<EQUAL? .WHO ,WINNER>
|
||
<RETURN ,PRSO>)>)
|
||
(T <RFALSE>)>>
|
||
|
||
<ROUTINE LORD-INTRO ()
|
||
<SETG FOLLOWER ,LORD>
|
||
<FSET ,LORD ,TOUCHBIT>
|
||
<FSET ,LORD ,SEENBIT>
|
||
<FCLEAR ,LORD ,NDESCBIT>
|
||
<SETG QCONTEXT ,LORD>
|
||
<THIS-IS-IT ,LORD>
|
||
<TELL
|
||
"\"Here comes Jack now!\" exclaims " 'FRIEND ", as he comes striding
|
||
toward you. ">
|
||
<COMMON-DESC ,LORD>
|
||
<TELL "|
|
||
\"My fiance, " 'LORD !\ ,TRESYLLIAN ",\" " 'FRIEND ,INTRODUCES "him.
|
||
\"Jack, this is my friend from the States, ">
|
||
<TELL-FULL-NAME>
|
||
<TELL ".\"|
|
||
\"So you're that famous young sleuth whom the Yanks call ">
|
||
<COND (<ZERO? ,GENDER-KNOWN> <TELL "Young ">)
|
||
(T <TITLE>)>
|
||
<TELL "Sherlock!\" says " 'LORD>
|
||
<COND (<OR <ZERO? ,GENDER-KNOWN>
|
||
<NOT <FSET? ,PLAYER ,FEMALE>>>
|
||
<TELL ", shaking hands">)
|
||
;(<FSET? ,PLAYER ,FEMALE>
|
||
<TELL "\" says " 'LORD ". \"">)
|
||
;(T <TELL !\ >)>
|
||
<TELL ". \"Tammy's told me about the mysteries you've solved">
|
||
<COND (<ZERO? ,GENDER-KNOWN>
|
||
<TELL
|
||
". She seems to think you can unravel the mystery of " 'CASTLE ".\""
|
||
CR>)
|
||
(<FSET? ,PLAYER ,FEMALE>
|
||
<TELL
|
||
" -- but she never let on you looked so smashing! Welcome to
|
||
Cornwall, "FN" luv!\"|
|
||
Before you know it, he sweeps you into his arms
|
||
and kisses you warmly! Let's hope " 'FRIEND " doesn't mind --
|
||
but for the moment all you can see are " 'LORD "'s dazzling sapphire-blue
|
||
eyes." CR>)
|
||
(T <TELL "!\"|
|
||
His keen blue eyes size you up with a friendly twinkle. Yet his
|
||
friendliness seems to be all on the surface --
|
||
it may take time to figure out where His Lordship's really
|
||
coming from." CR>)>>
|
||
|
||
<ROUTINE TELL-FULL-NAME ()
|
||
<TITLE>
|
||
<TELL FN>
|
||
<COND (<T? ,MIDDLE-WORD>
|
||
<COND (<NOT <==? ,MIDDLE-WORD ,W?COMMA>>
|
||
<TELL !\ >)>
|
||
<PRINTB ,MIDDLE-WORD>)>
|
||
<TELL !\ LN>
|
||
<TELL-SUFFIX>>
|
||
|
||
<OBJECT LORD
|
||
(DESC "Lord Jack")
|
||
(IN FOYER)
|
||
(ADJECTIVE TALL MY
|
||
LORD JACK TRESYLLIAN MAN ;"for poss's")
|
||
(SYNONYM LORD JACK TRESYLLIAN MAN)
|
||
(ACTION LORD-F)
|
||
(DESCFCN LORD-D)
|
||
(LDESC 0 ;"Lord Jack Tresyllian is here, looking just as you want.")
|
||
(WEST "surveying his domain")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT NARTICLEBIT NDESCBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(CHARACTER 2)>
|
||
|
||
<GLOBAL TRESYLLIAN "Tresyllian">
|
||
;<GLOBAL LORD-SAID-FOYER:FLAG <>>
|
||
|
||
<ROUTINE LORD-D ("OPTIONAL" (ARG <>))
|
||
<COND ;(<AND <==? ,HERE ,FOYER>
|
||
;<FSET? ,LORD ,TOUCHBIT> ;"delays speech till 2nd turn"
|
||
<ZERO? ,LORD-SAID-FOYER>
|
||
<QUEUED? ,I-TOUR>
|
||
<ZERO? <GETP ,LORD ,P?LINE>>>
|
||
<SETG LORD-SAID-FOYER T>
|
||
<TELL
|
||
"\"This is the residential wing,\" says " 'LORD ". \"I'm told it was
|
||
added on to the tower keep in the 1500's, when life here became more
|
||
civilized. Of course there was more of the old castle standing then.\""
|
||
CR>)
|
||
(T <DESCRIBE-PERSON ,LORD>)>
|
||
<RTRUE>>
|
||
|
||
<GLOBAL WHITISH-GLIMPSE " a glimpse of a whitish figure from the rear">
|
||
|
||
<ROUTINE LORD-GHOST-STORY ()
|
||
<TELL "\"No use asking ME, ">
|
||
<COND (<PRINT-NAME ,FIRST-NAME> <TELL !\.>)>
|
||
<TELL " All I caught was" ,WHITISH-GLIMPSE ". ">
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ,PAINTER-C>
|
||
<TELL "I couldn't even swear it was
|
||
a woman; it might've been some bloke in drag.\"" CR>)
|
||
(T
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<TELL
|
||
"She was blonde, definitely female, and about Dee's height...\"|
|
||
" 'LORD "'s own face is pale as he adds,
|
||
\"So, yes, it COULD have been her ghost... or Dee herself.\"" CR>)>>
|
||
|
||
<ROUTINE LORD-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<NOT <GRAB-ATTENTION ,LORD>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE>
|
||
<DOBJ? GHOST-NEW>
|
||
<NOT <EQUAL? ,VARIATION ,FRIEND-C>>>
|
||
<LORD-GHOST-STORY>
|
||
<RTRUE>)
|
||
(<AND <VERB? ANSWER REPLY>
|
||
<==? 3 ,LIONEL-SPEAKS-COUNTER>>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?ASK-ABOUT ,LORD ,ARTIFACT>
|
||
<RTRUE>)
|
||
(<SET X <COM-CHECK ,LORD>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WHY-ME> <RFATAL>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,LORD>>
|
||
<COND (<NOT <GRAB-ATTENTION ,LORD .OBJ>>
|
||
<RFATAL>)
|
||
(<EQUAL? .OBJ ,ACCIDENT>
|
||
<TELL
|
||
"Jack takes a deep breath. \"You've heard the bare facts, I assume --
|
||
she was in the " 'BASEMENT ", slipped and fell down the well.
|
||
The evidence proves what happened: a tent pole she'd
|
||
stumbled over; her one shoe that came off, with the slippery sole and
|
||
the loose heel; and of course " 'NECKLACE-OF-D ". I even"
|
||
,FOUND-FABRIC "\"|
|
||
He adds, \"The police never found " 'CORPSE ". But
|
||
the well is drawing tide water. No doubt she was swept out to sea.\"" CR>)
|
||
(<EQUAL? .OBJ ,ARTIFACT>
|
||
<TELL
|
||
"Jack fidgets and replies, \"Well, ah, we've all HEARD of
|
||
it, certainly. Uncle Lionel liked to drop teasing hints about how
|
||
valuable it was. But he was frightfully secretive. He never identified
|
||
it.">
|
||
<COND (<NOT <==? ,LIONEL-SPEAKS-COUNTER
|
||
,INIT-LIONEL-SPEAKS-COUNTER>>
|
||
<TELL
|
||
" He's probably playing the same silly game right now.">
|
||
<COND (<T? ,LIONEL-SPEAKS-COUNTER>
|
||
<TELL " Let's hear the old boy out.">)>)>
|
||
<TELL "\"" CR>)
|
||
(<EQUAL? .OBJ ,CASTLE ;,HAUNTING>
|
||
<TELL
|
||
"\"Well, as I daresay you've heard, the castle's been infested lately
|
||
with a spook. And it seems bent on harming " 'FRIEND
|
||
". All in all, a very rum go.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,LORD-C>>>
|
||
<NOT <==? ,LORD ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<EQUAL? .OBJ ,FRIEND ,ROMANCE>
|
||
<TELL "\"She's a darling girl, really first-rate.">
|
||
<COND (<EQUAL? ,VARIATION ,FRIEND-C>
|
||
<COND (<EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
|
||
<TELL "\" He whispers, \"">)
|
||
(T <TELL !\ >)>
|
||
<TELL "Although lately she's seemed cool toward me.">)>
|
||
<TELL "\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<NOT <EQUAL? ,VARIATION ,FRIEND-C>>>
|
||
<LORD-GHOST-STORY>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? .OBJ ,CLUE-2>
|
||
<NOT <EQUAL? ,VARIATION ,LORD-C>>
|
||
<NOT <IN? .OBJ ,LORD>>>
|
||
<CLUE-2-STORY ,LORD>
|
||
<RTRUE>)
|
||
;(<EQUAL? .OBJ ,IAN-EVIDENCE>
|
||
<TELL
|
||
"\"Good Lord! But... I meant for him to woo her, not kill her!\"" CR>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<COND ;(<AND <EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ,PAINTER-C>
|
||
<T? ,FOUND-IT-PERM>
|
||
;<FSET? ,FOUND-IT-PERM ,SEENBIT>
|
||
;<FSET? ,LENS ,TOUCHBIT>>
|
||
<TELL
|
||
"\"I've no idea where it came from. It's certainly not mine. ">)
|
||
(T <TELL
|
||
CHE ,LORD " gives a puzzled shrug, saying, \"">)>
|
||
<TELL "There's nothing wrong with my eyesight.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,MAID>
|
||
<FSET? ,LETTER ,TOUCHBIT>>
|
||
<TELL ,JACK-THINKS-GLADYS "\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,PASSAGE>
|
||
<ZERO? <GET ,FOUND-PASSAGES ,LORD-C>>>
|
||
<TELL
|
||
"\"Hmm... good question. I know there are old tales about " 'CASTLE "
|
||
being honeycombed with " 'PASSAGE "s, but I've never actually stumbled
|
||
on any. Uncle Lionel would have known, but I never asked him before he
|
||
died, worse luck.\"" CR>)
|
||
(<EQUAL? .OBJ ,PRIEST-DOOR>
|
||
<TELL
|
||
"\"It's in the " 'DUNGEON ", close to the curtain wall. Dee used it
|
||
because her cottage is just down the shore.\"|
|
||
He adds, \"By the way, the name '" D ,PRIEST-DOOR "' dates back to when
|
||
the Catholic Church was outlawed in England, and priests had to hide for
|
||
fear of execution. Many British great houses have " 'PASSAGE "s,
|
||
hiding places, and entrances.\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,LORD .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <TELL-DUNNO ,LORD .OBJ>)>)
|
||
(<VERB? KISS RUB>
|
||
<COND (<IN? ,FRIEND ,HERE>
|
||
<PUTP ,FRIEND ,P?LINE <+ 1 <GETP ,FRIEND ,P?LINE>>>
|
||
<TELL CHE ,FRIEND " flashes you an angry look." CR>)>
|
||
<COND (<FSET? ,PLAYER ,FEMALE>
|
||
<UNSNOOZE ,LORD>
|
||
<PUTP ,LORD ,P?LINE 0>
|
||
<PUTP ,LORD ,P?LDESC 0>
|
||
<TELL
|
||
"\"I say! You Americans are frightfully friendly!\" says " 'LORD "." CR>)>)
|
||
(T <PERSON-F ,LORD .ARG>)>>
|
||
|
||
<ROUTINE CLUE-2-STORY (PER)
|
||
<TELL !\">
|
||
;<COND (<NOT <FSET? ,CLUE-2 ,TOUCHBIT>>
|
||
<TELL
|
||
"Well, er, Lionel did give me a card once,\" " D .PER " mumbles. \"Don't
|
||
recall just what was on it -- some odd picture or jingle. ">)>
|
||
<TELL
|
||
"I thought it was just one more of Lionel's weird jokes, or the effect
|
||
of jungle rot on his brain -- that sort of thing.\"" CR>>
|
||
|
||
<ROUTINE TELL-DUNNO (PER OBJ)
|
||
<COND (<FSET? .OBJ ,PERSONBIT>
|
||
<TELL "\"I don't indulge much in idle gossip, you know.\"" CR>)
|
||
(T
|
||
<TELL "\"You know as much as I do">
|
||
<COND (<EQUAL? .PER ,OFFICER>
|
||
<IAN-CALLS-YOU>
|
||
<TELL ".\"" CR>)
|
||
(T
|
||
<TELL ", ">
|
||
<COND (<PRINT-NAME ,FIRST-NAME> <TELL !\.>)>
|
||
<TELL "\"" CR>)>)>>
|
||
|
||
<GLOBAL JACK-THINKS-GLADYS
|
||
"\"Dashed if I'm going to have my digestion upset
|
||
by Gladys's whining, the odious little twit!">
|
||
|
||
<OBJECT JACK-TAPE
|
||
;(IN LOCAL-GLOBALS)
|
||
(DESC "secret tape recorder" ;"instant camera")
|
||
(ADJECTIVE SECRET TAPE JACK\'S HIS ;INSTANT)
|
||
(SYNONYM TAPE RECORD EVIDENCE ;"CAMERA PHOTO")
|
||
(GENERIC GENERIC-RECORDER)
|
||
(FLAGS ;NDESCBIT SEENBIT SECRETBIT RMUNGBIT ;"evidence")
|
||
(CHARACTER 2) ;"for this char"
|
||
;(TEXT "If you played it, you'd hear Jack smothering Lionel to death!")
|
||
;(SIZE 2)
|
||
(ACTION JACK-TAPE-F)>
|
||
|
||
<ROUTINE JACK-TAPE-F ("AUX" P)
|
||
<COND (<VERB? LAMP-ON LISTEN PLAY>
|
||
<TELL
|
||
"First you hear Lionel: \"This " 'JACK-TAPE " should capture any sound in the "
|
||
'JACK-ROOM " when I run it. Testing, testing,...\"|
|
||
Then you hear Lionel tell
|
||
" 'LOVER " that he suspects Jack of coveting the inheritance and wanting to
|
||
kill him.|
|
||
After a pause, Jack tells Lionel, with a cold-blooded chuckle,
|
||
that his time has come. Then " ,LIONELS-VOICE " is urgent and muffled, as if
|
||
he's being smothered! He calls out, \"Jack! Stop!\" and then...
|
||
silence." CR>
|
||
<SET P <FIRST? ,HERE>>
|
||
<COND (<T? .P>
|
||
<FOUND-PASSAGES-REPEAT .P ,JACK-TAPE ,TOLD-ABOUT-EVID>)>
|
||
<COND (<AND <IN? ,FRIEND ,HERE>
|
||
<NOT <==? ,CAPTOR ,FRIEND>>>
|
||
<THIS-IS-IT ,FRIEND>
|
||
<MOVE ,FRIEND ,TAMARA-ROOM>
|
||
<PUT ,FOLLOW-LOC ,FRIEND-C ,TAMARA-ROOM>
|
||
<COND (<EQUAL? ,FOLLOWER ,FRIEND ,LORD>
|
||
<SETG FOLLOWER 0>)>
|
||
<PUT <GT-O ,FRIEND> ,GOAL-ENABLE 0>
|
||
<PUTP ,FRIEND ,P?LDESC 7 ;"sobbing quietly">
|
||
<TELL
|
||
'FRIEND "'s eyes fill with tears, and she runs to her room." CR>)>
|
||
<COND (<ZERO? ,EVIDENCE-FOUND>
|
||
<CONGRATS>)>
|
||
<SETG EVIDENCE-FOUND ,JACK-TAPE>
|
||
<COND (<T? ,CONFESSED>
|
||
<RTRUE>)
|
||
(<IN? ,LORD ,HERE>
|
||
<CONFESSION ,LORD>)
|
||
(<SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,MUNGBIT ,WINNER>>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?ASK-ABOUT .P ,JACK-TAPE>)>
|
||
<RTRUE>)>>
|
||
|
||
;<OBJECT LOVER-MISPELLED
|
||
(DESC "Deirdre")
|
||
(IN LIMBO ;LOCAL-GLOBALS)
|
||
(SYNONYM DEIDRE DEIDRA DIERDRE DIEDRE)
|
||
(ACTION LOVER-MISPELLED-F)
|
||
(LDESC 0)
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT FEMALE NARTICLEBIT ;TOUCHBIT)
|
||
(LINE 0)
|
||
(CHARACTER 9)>
|
||
|
||
<OBJECT LOVER
|
||
(DESC "Deirdre")
|
||
(IN LIMBO ;LOCAL-GLOBALS)
|
||
(ADJECTIVE BLOND BLONDE MS MISS
|
||
DEIRDRE DEE HALLAM WOMAN ;"for poss's")
|
||
(SYNONYM DEIRDRE DEE HALLAM WOMAN)
|
||
(ACTION LOVER-F)
|
||
(DESCFCN LOVER-D)
|
||
(LDESC 0)
|
||
;(TEXT "She looks almost as lovely as her portrait.")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT FEMALE NARTICLEBIT ;TOUCHBIT)
|
||
(LINE 0)
|
||
(STATION A?DEE\'S)
|
||
(CHARACTER 9)>
|
||
|
||
<ROUTINE LOVER-D ("OPTIONAL" (ARG <>))
|
||
<DESCRIBE-PERSON ,LOVER>
|
||
<RTRUE>>
|
||
|
||
<GLOBAL LOVER-SAID:FLAG <>>
|
||
<ROUTINE LOVER-F ("OPTIONAL" (ARG 0))
|
||
<COND ;(<AND <IN? ,LOVER ,HERE> ;"never happens"
|
||
<OR <VERB? ALARM SHAKE>
|
||
<SPEAKING-VERB?>>
|
||
<DOBJ? LOVER>>
|
||
;<COND (<NOT <GRAB-ATTENTION ,LOVER>> <RFATAL>)>
|
||
<COND (<UNSNOOZE ,LOVER>
|
||
<RFATAL>)
|
||
(T <LOVER-SPEECH>)>)
|
||
(<AND <IN? ,LOVER-PIC ,HERE>
|
||
<NOT <REMOTE-VERB?>>>
|
||
<DO-INSTEAD-OF ,LOVER-PIC ,LOVER>
|
||
<RTRUE>)
|
||
(T <PERSON-F ,LOVER .ARG>)>>
|
||
|
||
<OBJECT DEB
|
||
(DESC "Iris")
|
||
(IN GREAT-HALL)
|
||
(ADJECTIVE MS MISS
|
||
IRIS VANE WOMAN ;DEB ;"for poss's")
|
||
(SYNONYM IRIS VANE WOMAN ;DEB)
|
||
(ACTION DEB-F)
|
||
(DESCFCN DEB-D)
|
||
(LDESC 1 ;"dancing")
|
||
(WEST "looking coy")
|
||
(TEXT
|
||
"The girl is a stylish London deb type.
|
||
Her dark hair is cut boyishly short. Her height and figure would make
|
||
her a perfect high-fashion model.")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT FEMALE NARTICLEBIT NDESCBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(CHARACTER 7)>
|
||
|
||
<ROUTINE DEB-D ("OPTIONAL" (ARG 0))
|
||
<COND (T ;<OR <FSET? ,DEB ,TOUCHBIT>
|
||
<T? ,CLOCK-WAIT>>
|
||
<DESCRIBE-PERSON ,DEB>)>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE DEB-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<SETG FAWNING <>>
|
||
<COND (<AND <EQUAL? ,AWAITING-REPLY ,DEB-C>
|
||
<VERB? YES NO>>
|
||
<ESTABLISH-GOAL ,DOCTOR ,HERE>
|
||
<PUTP ,DEB ,P?LDESC 0>
|
||
<PUTP ,DEB ,P?LINE 0>
|
||
<SETG AWAITING-REPLY <>>
|
||
<COND (<VERB? YES> <TELL "\"Splendid!\"" CR>)
|
||
(T <TELL "\"What a pity!\"" CR>)>)
|
||
(<NOT <GRAB-ATTENTION ,DEB>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE> <DOBJ? GHOST-NEW>>
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<TELL
|
||
"\"Well, it appeared to be a woman with " ,LONG-BLOND-HAIR " in a ">
|
||
<COND (<NOT<EQUAL? ,VARIATION,DOCTOR-C ;,DEALER-C ;,OFFICER-C>>
|
||
;<EQUAL? ,VARIATION ,FRIEND-C ,PAINTER-C ,LORD-C>
|
||
<TELL "sleeveless, ">)>
|
||
<TELL
|
||
"silvery white gown. But if you're asking me, 'Was it really poor Dee?'
|
||
I'm just not sure. ">
|
||
<COND (<EQUAL? ,VARIATION ,FRIEND-C ,LORD-C>
|
||
<TELL
|
||
"I didn't see the face that well.
|
||
But I'd say the figure was average height, and moved in a very
|
||
feminine way, just as she did -- so it COULD have been her ghost.\"" CR>)
|
||
(<EQUAL? ,VARIATION ,PAINTER-C>
|
||
<TELL
|
||
"It seemed different from Dee in some way...\"|
|
||
She snaps her fingers, and her eyes brighten maliciously.
|
||
\"Now I know! The ghost was too tall! Definitely taller than she!\"" CR>)
|
||
(T
|
||
<TELL "It was ">
|
||
<COND ;(<EQUAL? ,VARIATION ,DEALER-C ,OFFICER-C>
|
||
<TELL "definitely taller than Dee, and">)
|
||
(T <TELL"about the right height, I suppose, but">)>
|
||
<TELL
|
||
" its gown, with long sleeves and a high neck, seemed different from
|
||
hers. It lacked her femininity. She was a very feminine woman, you know
|
||
-- almost seductive, as I'm sure Jack can testify. The ghost was just a
|
||
sexless spook, one might say.\"" CR>)>)
|
||
(<AND <VERB? FOLLOW>
|
||
<DOBJ? PLAYER>
|
||
<WILLING? ,DEB>>
|
||
<TELL "\"Ooo! I love an adventure, "FN"!\"" CR>
|
||
<NEW-FOLLOWER ,DEB>
|
||
<RTRUE>)
|
||
(<SET X <COM-CHECK ,DEB>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WINNER-DEFAULT ,DEB>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,DEB>>
|
||
<COND (<NOT <GRAB-ATTENTION ,DEB .OBJ>>
|
||
<RFATAL>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,DEB-C>>>
|
||
;<NOT <==? ,DEB ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<TELL
|
||
"\"It was quite dramatic, really. One night I couldn't
|
||
sleep, so I got a poetic urge to go up on the " 'DECK " in the moonlight
|
||
and commune with my soul.\"|"
|
||
'DEB " goes on, \"As I started up the tower stairs, I saw this
|
||
figure in white coming 'round the curve of the stairway. My dear, I
|
||
absolutely FROZE! The ghost turned 'round and flitted
|
||
back up the stairs, and by the time I recovered, it was
|
||
gone!\"" CR>)
|
||
(<EQUAL? .OBJ ,TAMARA-EVIDENCE>
|
||
<TELL "\"My word! It looks as if someone dislikes me!\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,DEB .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <TELL-DUNNO ,DEB .OBJ>)>)
|
||
(<VERB? RUB KISS DANCE>
|
||
<COND (<WILLING? ,DEB T>
|
||
<UNSNOOZE ,DEB>
|
||
<PUTP ,DEB ,P?LINE 0>
|
||
<PUTP ,DEB ,P?LDESC 0>
|
||
;<COND (<EQUAL? ,AWAITING-REPLY ,DEB-C>
|
||
<QUEUE I-REPLY 0>)>
|
||
<TELL "\"Oooo">
|
||
<I-JUST-LOVE-IT>
|
||
<RTRUE>)>)
|
||
(T <PERSON-F ,DEB .ARG>)>>
|
||
|
||
<ROUTINE WILLING? (PER "OPT" (KISS <>))
|
||
<COND (<ZERO? .KISS>
|
||
<COND (<L? ,BED-TIME ,PRESENT-TIME>
|
||
<RFALSE>)
|
||
(<QUEUED? ,I-TOUR>
|
||
<RFALSE>)
|
||
(<OR <EQUAL? ,HERE ,DINING-ROOM>
|
||
<QUEUED? ,I-DINNER-SIT> ;"not during dinner">
|
||
<RFALSE>)
|
||
(<EQUAL? .PER ,CONFESSED ,CAPTOR>
|
||
<RFALSE>)
|
||
(T <RTRUE>)>)
|
||
(<EQUAL? .PER ,FRIEND>
|
||
<COND (<NOT <EQUAL? ,VARIATION ,FRIEND-C>>
|
||
<RTRUE>)
|
||
(T <RFALSE>)>)
|
||
(<EQUAL? .PER ,BUTLER>
|
||
<COND (<AND <VERB? EMPTY ;"UNPACK">
|
||
<NOT <==? ,HERE ,YOUR-ROOM>>>
|
||
<RFALSE>)
|
||
(<VERB? FOLLOW>
|
||
<RFALSE>)
|
||
(T <RTRUE>)>)
|
||
(<T? ,GENDER-KNOWN>
|
||
<COND (<==? .PER ,DEB>
|
||
<COND (<NOT <FSET? ,PLAYER ,FEMALE>>
|
||
<RTRUE>)
|
||
(T <RFALSE>)>)
|
||
(<==? .PER ,OFFICER>
|
||
<COND (<FSET? ,PLAYER ,FEMALE>
|
||
<RTRUE>)
|
||
(T <RFALSE>)>)
|
||
(T <RFALSE>)>)>>
|
||
|
||
<OBJECT OFFICER
|
||
(DESC "Ian")
|
||
(IN GREAT-HALL)
|
||
(ADJECTIVE TALL BLOND ;LT MR MISTER
|
||
IAN FORDYCE OFFICE MAN ;"for poss's")
|
||
(SYNONYM IAN FORDYCE OFFICE MAN)
|
||
(ACTION OFFICER-F)
|
||
(DESCFCN OFFICER-D)
|
||
(LDESC 1 ;"dancing")
|
||
(WEST "looking debonair")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT NARTICLEBIT ;TOUCHBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(CHARACTER 5)>
|
||
|
||
<ROUTINE OFFICER-D ("OPTIONAL" (ARG 0))
|
||
<COND (<FSET? ,OFFICER ,TOUCHBIT>
|
||
<DESCRIBE-PERSON ,OFFICER>)
|
||
(T
|
||
<FSET ,OFFICER ,TOUCHBIT>
|
||
<FSET ,OFFICER ,SEENBIT>)>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE I-JUST-LOVE-IT ()
|
||
<TELL "! I just love it when you do that, "FN"!\"" CR>>
|
||
|
||
<ROUTINE WINNER-DEFAULT (PER)
|
||
<COND (<T? ,GENDER-KNOWN>
|
||
<TELL !\">
|
||
<COND (<T? ,FAWNING> <TELL "But ">)>
|
||
<TELL "I really can't help you with that">
|
||
<COND (<EQUAL? .PER ,OFFICER>
|
||
<IAN-CALLS-YOU>)>
|
||
<TELL ".\"" CR>)
|
||
(T <WHY-ME> <RFATAL>)>>
|
||
|
||
<ROUTINE OFFICER-F ("OPTIONAL" (ARG 0) "AUX" P OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<SETG FAWNING <>>
|
||
<COND (<AND <EQUAL? ,AWAITING-REPLY ,OFFICER-1-R ,OFFICER-2-R>
|
||
<VERB? YES NO>>
|
||
<ESTABLISH-GOAL ,DOCTOR ,HERE>
|
||
<PUTP ,OFFICER ,P?LDESC 0>
|
||
<PUTP ,OFFICER ,P?LINE 0>
|
||
<TELL !\">
|
||
<COND (<VERB? YES>
|
||
<TELL "Jolly good">
|
||
<COND (<EQUAL? ,AWAITING-REPLY ,OFFICER-1-R>
|
||
<TELL "! You're certainly quick">)>)
|
||
(<EQUAL? ,AWAITING-REPLY ,OFFICER-1-R>
|
||
<TELL "I dare say you soon shall">)
|
||
(T <TELL "Pity">)>
|
||
<SETG AWAITING-REPLY <>>
|
||
<TELL "!\"" CR>
|
||
<RTRUE>)
|
||
(<NOT <GRAB-ATTENTION ,OFFICER>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE>
|
||
<DOBJ? GHOST-NEW>
|
||
<EQUAL? ,VARIATION ;,DEALER-C ,PAINTER-C>>
|
||
<TELL
|
||
"\"Ghosts don't turn off lights, to my way of thinking.
|
||
That alone makes me think our " 'GHOST-OLD "'s a fake. Somebody's sick idea
|
||
of a joke, perhaps. ">
|
||
<COND ;(<EQUAL? ,VARIATION ,DEALER-C>
|
||
<TELL
|
||
"Come to that, I'm not even sure it WAS a lady.
|
||
It was too tall for Dee, and there was nothing feminine about its gown,
|
||
which covered up everything but its face and hands. Just the sort of outfit
|
||
a bloke might wear with a blonde wig to go flitting about in drag.\""
|
||
CR>)
|
||
(T
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<TELL
|
||
"Otherwise, the masquerade was highly effective.
|
||
A female figure with " ,LONG-BLOND-HAIR ", wearing the same sort of gown
|
||
Dee was wearing that awful night she died -- at first
|
||
it left me breathless. The only flaw, I should say,
|
||
was the spook's height: too tall for Dee.\"" CR>)>)
|
||
(<AND <VERB? FOLLOW>
|
||
<DOBJ? PLAYER>
|
||
<WILLING? ,OFFICER>>
|
||
<TELL "\"What ho! A bit of sleuthing, eh, "FN"?\"" CR>
|
||
<NEW-FOLLOWER ,OFFICER>
|
||
<RTRUE>)
|
||
(<SET X <COM-CHECK ,OFFICER>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WINNER-DEFAULT ,OFFICER>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,OFFICER>>
|
||
<COND (<NOT <GRAB-ATTENTION ,OFFICER .OBJ>>
|
||
<RFATAL>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,OFFICER-C>>>
|
||
;<NOT <==? ,OFFICER ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
;(<AND <EQUAL? .OBJ ,JEWEL>
|
||
<EQUAL? ,VARIATION ,OFFICER-C>
|
||
<SET P <FIND-JEWEL-EXPLAINER>>>
|
||
<SETG EXPLAINED-JEWEL .P>
|
||
<TELL
|
||
"Suddenly" THE .P " exclaims, \"Why, Ian! Isn't this that " 'JEWEL "
|
||
you wear in one ear? I seem to recall you had it on at dinner just last
|
||
night!\"|
|
||
Fordyce looks startled and a trifle embarrassed. \"By jove, perhaps you're
|
||
right!\"|
|
||
He fingers his left ear lobe and appears surprised to discover that the
|
||
jewel is no longer there.|
|
||
\"Must have dropped off just a few minutes ago. I put it on when I dressed
|
||
for dinner. Thanks very much for finding it">
|
||
<IAN-CALLS-YOU>
|
||
<TELL ".\"" CR>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<TELL
|
||
CHE ,OFFICER " grins, \"It's not mine. Her Majesty would hardly allow me
|
||
to serve in her Coldstream Guards were my vision faulty!\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<EQUAL? ,VARIATION ;,DEALER-C ,PAINTER-C>>
|
||
<TELL
|
||
"\"It was the last time I came down here to visit Jack. We had been up
|
||
late, playing cards in the " 'GAME-ROOM ". Then Jack toddled off to bed,
|
||
but I stayed up to read and finish my drink. I must have dozed off with
|
||
my glass in my hand, for I woke with a start as it crashed to the floor.
|
||
And the first thing I saw was this figure in white at the other end of
|
||
the room.\"|
|
||
He goes on, \"Blimey, I thought I was seeing things!
|
||
For a moment I just gaped at it. Then the spook went haring off
|
||
out the door, flicking off the light on the way.
|
||
By the time I found the door, it was gone.\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,OFFICER .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <TELL-DUNNO ,OFFICER .OBJ>)>)
|
||
(<VERB? RUB KISS DANCE>
|
||
<COND (<WILLING? ,OFFICER T>
|
||
<UNSNOOZE ,OFFICER>
|
||
<PUTP ,OFFICER ,P?LINE 0>
|
||
<PUTP ,OFFICER ,P?LDESC 0>
|
||
;<COND (<EQUAL? ,AWAITING-REPLY ,OFFICER-1-R ,OFFICER-2-R>
|
||
<QUEUE I-REPLY 0>)>
|
||
<TELL"\"Hello">
|
||
<I-JUST-LOVE-IT>
|
||
<RTRUE>)>)
|
||
(T <PERSON-F ,OFFICER .ARG>)>>
|
||
|
||
<ROUTINE IAN-CALLS-YOU ()
|
||
<COND (<ZERO? <GETB ,LAST-NAME 0>>
|
||
<RFALSE>)>
|
||
<TELL ", " FN>
|
||
<COND (<NOT <ZERO? ,GENDER-KNOWN>>
|
||
<COND (<FSET? ,PLAYER ,FEMALE> <TELL " luv">)
|
||
(T
|
||
<TELL " old ">
|
||
<COND (<BTST ,PRESENT-TIME 1> <TELL "chap">)
|
||
(T <TELL "son">)>)>)>
|
||
<RTRUE>>
|
||
[
|
||
<OBJECT DOCTOR
|
||
(DESC "Dr. Wendish")
|
||
(IN GALLERY ;STAIRS-NEW)
|
||
(ADJECTIVE DR ;DOC
|
||
DOCTOR NICHOLAS WENDISH MAN ;"for poss's")
|
||
(SYNONYM DOCTOR NICHOLAS WENDISH MAN) ;"DR here screws parsing"
|
||
(ACTION DOCTOR-F)
|
||
(DESCFCN DOCTOR-D)
|
||
(LDESC 0)
|
||
(WEST "looking muddled" ;"anxious")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT NARTICLEBIT ;RMUNGBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(STATION A?DOC\'S)
|
||
(CHARACTER 4)>
|
||
|
||
<ROUTINE DOCTOR-D ("OPTIONAL" (ARG 0))
|
||
<COND ;(<OR <FSET? ,DOCTOR ,RMUNGBIT>
|
||
;<T? ,CLOCK-WAIT>>
|
||
<FCLEAR ,DOCTOR ,RMUNGBIT>
|
||
<RTRUE>)
|
||
(<FSET? ,DOCTOR ,TOUCHBIT>
|
||
<DESCRIBE-PERSON ,DOCTOR>
|
||
<RTRUE>)
|
||
(T
|
||
<FSET ,DOCTOR ,TOUCHBIT>
|
||
;<COND (<EQUAL? <LOC ,FRIEND> ,HERE ,PSEUDO-OBJECT>
|
||
<SET P ,FRIEND>)
|
||
(T <SET P ,DEB>)>
|
||
<COND (T ;<NOT <FSET? ,DOCTOR ,TOUCHBIT>>
|
||
;<FSET ,DOCTOR ,TOUCHBIT>
|
||
<CRLF>
|
||
<COND (T ;<T? .P>
|
||
<TELL !\">
|
||
<COND (<T? ,TOUR-FORCED>
|
||
<TELL "Oh,">)
|
||
(T <TELL
|
||
"Do excuse me for interrupting,\" " D ,FRIEND ;.P " breaks in, \"but">)>
|
||
<TELL " here comes
|
||
" D ,DOCTOR "! I'm sure "FN" wants to meet such a distinguished
|
||
scientist!\"|">)
|
||
;(T <TELL "Your conversation is interrupted. ">)>
|
||
<TELL "A man is coming downstairs. ">
|
||
<COMMON-DESC ,DOCTOR>
|
||
;<TELL <GETP ,DOCTOR ,P?TEXT> CR>
|
||
<SETG QCONTEXT ,DOCTOR>
|
||
<THIS-IS-IT ,DOCTOR>
|
||
<PUTP ,DOCTOR ,P?LDESC 12 ;"listening to you">
|
||
<SETG AWAITING-REPLY ,DOCTOR-C>
|
||
<QUEUE I-REPLY ,CLOCKER-RUNNING>
|
||
<TELL
|
||
D ,FRIEND ;.P ,INTRODUCES "him as one of Lionel's
|
||
oldest friends, Dr. Nicholas Wendish.|
|
||
He's carelessly dressed in rumpled evening clothes, but his
|
||
hawk eyes peering at you through gold-rimmed specs show ruthless intelligence.|
|
||
\"I read about one of your mystery cases when I was in New York last year,
|
||
"TN",\" he probes. \"" <GET ,QUESTIONS ,AWAITING-REPLY> "\"|">)>
|
||
<RFATAL>)>>
|
||
|
||
<ROUTINE DOCTOR-F ("OPTIONAL" (ARG 0) "AUX" OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<AND <EQUAL? ,AWAITING-REPLY ,DOCTOR-C>
|
||
<VERB? YES NO>>
|
||
<PUTP ,DOCTOR ,P?LDESC 0>
|
||
<PUTP ,DOCTOR ,P?LINE 0>
|
||
<SETG AWAITING-REPLY <>>
|
||
<TELL "\"I see...\"" CR>)
|
||
(<NOT <GRAB-ATTENTION ,DOCTOR>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE>
|
||
<DOBJ? GHOST-NEW>
|
||
<EQUAL? ,VARIATION ,DOCTOR-C ;,OFFICER-C>>
|
||
<TELL
|
||
'DOCTOR " shrugs, with a look of distaste, as if he'd like to forget
|
||
the episode. \"">
|
||
<COND (T ;<EQUAL? ,VARIATION ,DOCTOR-C>
|
||
<TELL "I'm afraid I can't tell you any more, ">
|
||
<COND (<TITLE-NAME> <TELL !\.>)>
|
||
<TELL
|
||
" I assumed the ghost was " 'LOVER ". It certainly looked like her: a blonde,
|
||
attractive young woman. If it WASN'T " 'LOVER ", it was a
|
||
convincing imposture.\"" CR>)
|
||
;(T
|
||
<TELL "The truth is, ">
|
||
<TITLE-NAME>
|
||
<TELL
|
||
", I'm afraid I over-reacted. Once I'd collected myself and was able to
|
||
think normally, I had a strong feeling that I'd been the victim of a
|
||
vulgar hoax. Whomever I saw bore only a superficial resemblance to poor
|
||
" 'LOVER " Hallam. For one thing, it was definitely too tall. And aside
|
||
from the " ,LONG-BLOND-HAIR ", which could easily have been a wig, there
|
||
was really nothing very feminine about it. Judging by its posture and
|
||
movements, it could have been a man. Even its
|
||
gown was the kind a man would need to pass as a woman:
|
||
long sleeves and high neck.\"" CR>)>)
|
||
(<DIVESTMENT? ,MUSTACHE>
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C>
|
||
<TELL ,MUSTACHE-STORY>
|
||
<RTRUE>)
|
||
(T <HAR-HAR>)>)
|
||
(<SET X <COM-CHECK ,DOCTOR>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WHY-ME> <RFATAL>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,DOCTOR>>
|
||
<COND (<NOT <GRAB-ATTENTION ,DOCTOR .OBJ>>
|
||
<RFATAL>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,DOCTOR-C>>>
|
||
<NOT <==? ,DOCTOR ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<EQUAL? .OBJ ,COUSIN ,BUST ;,RECORDER>
|
||
<TELL "\"He loved me as a brother.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<EQUAL? ,VARIATION ,DOCTOR-C ;,OFFICER-C>>
|
||
<TELL
|
||
"The doctor pauses, looking troubled, as if reluctant
|
||
to speak, or perhaps marshaling his thoughts.|
|
||
\"On the very night after " 'ACCIDENT ",\" he says at last,
|
||
\"I couldn't sleep. I suppose the tragedy was on my mind. That and the
|
||
medical cases I have in my London clinic for rare diseases. Anyhow, I
|
||
took a stroll out in the " 'COURTYARD ". The fresh sea breeze was very
|
||
soothing. When I went back inside, I felt ready for sleep. I went in
|
||
through the " 'OLD-GREAT-HALL ;"tower door" ", you see.\"|
|
||
He goes on, \"Then I saw this ghostly figure in white -- Good Lord, what
|
||
a shock it gave me! I couldn't move for a moment; I thought " 'LOVER "
|
||
had come back from the dead. As I stood there, staring, the ghost
|
||
flitted off toward the " 'BASEMENT "... I felt no impulse to go after
|
||
it, I might add.\"" CR>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<TELL !\">
|
||
<COND (<AND <EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ,PAINTER-C>
|
||
<T? ,FOUND-IT-PERM>
|
||
;<FSET? ,FOUND-IT-PERM ,SEENBIT>
|
||
;<FSET? ,LENS ,TOUCHBIT>>
|
||
<TELL "Not mine. ">)>
|
||
<TELL
|
||
"As you see, I wear glasses at all times,\" he says." CR>)
|
||
(<AND <EQUAL? .OBJ ,MUSTACHE>
|
||
<EQUAL? ,VARIATION ,DOCTOR-C>>
|
||
<TELL ,MUSTACHE-STORY>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,WENDISH-STUFF>
|
||
<TELL "\"I always bring them along.\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,DOCTOR .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <TELL-DUNNO ,DOCTOR .OBJ>)>)
|
||
(T <PERSON-F ,DOCTOR .ARG>)>>
|
||
|
||
<OBJECT MUSTACHE
|
||
(DESC "Wendish's mustache")
|
||
(IN DOCTOR)
|
||
(ADJECTIVE DOC\'S HIS)
|
||
(SYNONYM MUSTACHE)
|
||
(FLAGS NDESCBIT TRYTAKEBIT NARTICLEBIT)
|
||
(ACTION MUSTACHE-F)>
|
||
|
||
<ROUTINE MUSTACHE-F ()
|
||
<COND (<AND <OR <VERB? ASK-FOR MOVE TAKE>
|
||
<DIVESTMENT? ,MUSTACHE>>
|
||
<IN? ,MUSTACHE ,DOCTOR>>
|
||
<COND (<FSET? ,DOCTOR ,MUNGBIT>
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C>
|
||
<FSET ,MUSTACHE ,TAKEBIT>
|
||
<FCLEAR ,MUSTACHE ,TRYTAKEBIT>)>
|
||
<RFALSE>)
|
||
(<OR <NOT <EQUAL? ,VARIATION ,DOCTOR-C>>
|
||
<FSET? ,MUSTACHE ,TOUCHBIT>>
|
||
<FACE-RED ,DOCTOR>
|
||
<RTRUE>)
|
||
(T
|
||
<FSET ,MUSTACHE ,TOUCHBIT>
|
||
<TELL
|
||
"It comes off, leaving " 'DOCTOR " blinking with embarrassment.
|
||
He grabs it and puts it in place again. " ,MUSTACHE-STORY>
|
||
<RTRUE>)>)
|
||
(<OR <VERB? WEAR>
|
||
<AND <VERB? PUT> <FSET? ,PRSI ,PERSONBIT>>>
|
||
<WEAR-SCARE>)>>
|
||
|
||
<GLOBAL MUSTACHE-STORY
|
||
"\"Dear me,\" he giggles nervously, \"I'm afraid you've found out my little
|
||
secret! A lady friend, you see, begged me to shave off my mustache.
|
||
I did so just before coming to Cornwall. But then I felt so naked without
|
||
it, that I bought a hair piece until I could grow back my own.\"|">
|
||
|
||
<OBJECT WENDISH-BOOK
|
||
(DESC "lab notebook")
|
||
(ADJECTIVE DOC\'S HIS NOTE LAB LABORATORY)
|
||
(SYNONYM NOTEBOOK BOOK BOOKS EVIDENCE ;TEXT)
|
||
(GENERIC GENERIC-BOOK)
|
||
(FLAGS READBIT CONTBIT NDESCBIT SECRETBIT RMUNGBIT ;"evidence")
|
||
(CHARACTER 4) ;"for this char"
|
||
(CAPACITY 4)
|
||
(ACTION WENDISH-BOOK-F)>
|
||
|
||
<ROUTINE WENDISH-BOOK-F ()
|
||
<COND (<VERB? EXAMINE LOOK-INSIDE READ>
|
||
<COND (<NOT-HOLDING? ,PRSO>
|
||
<RTRUE>)>
|
||
<TELL
|
||
"The " 'WENDISH-BOOK " contains an incriminating record of " 'DOCTOR "'s
|
||
fiendish experiments on patients at his clinic. Near the end you
|
||
read:|
|
||
\"Finally took care of Poldark's granddau. (comely wench), pity
|
||
she disc'd facts of his end.\"">
|
||
;<TELL
|
||
" that he \"took care of\" " 'LOVER " after she discovered his fatal
|
||
mistreatment of her grandfather.">
|
||
<CRLF>
|
||
<COND (<ZERO? ,EVIDENCE-FOUND>
|
||
<CONGRATS>)>
|
||
<SETG EVIDENCE-FOUND ,WENDISH-BOOK>)>>
|
||
]
|
||
<OBJECT DEALER
|
||
(DESC "Hyde")
|
||
(IN DRAWING-ROOM)
|
||
(ADJECTIVE TALL ART MR MISTER
|
||
MONTAGUE ;MONTY HYDE DEALER MAN ;"for poss's")
|
||
(SYNONYM MONTAGUE ;MONTY HYDE DEALER MAN)
|
||
(ACTION DEALER-F)
|
||
(DESCFCN DEALER-D)
|
||
(LDESC 2 ;"sipping sherry")
|
||
(WEST "examining objects")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT NARTICLEBIT NDESCBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(CHARACTER 6)>
|
||
|
||
<ROUTINE DEALER-D ("OPTIONAL" (ARG 0) "AUX" PER)
|
||
<COND (T ;<FSET? ,DEALER ,TOUCHBIT>
|
||
<DESCRIBE-PERSON ,DEALER>)>
|
||
;<THIS-IS-IT ,PAINTER>
|
||
;<THIS-IS-IT ,DEALER>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE DEALER-F ("OPTIONAL" (ARG 0) "AUX" OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<NOT <GRAB-ATTENTION ,DEALER>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE>
|
||
<DOBJ? GHOST-NEW>
|
||
<NOT <EQUAL? ,VARIATION ,PAINTER-C ;,OFFICER-C>>>
|
||
<TELL
|
||
"\"You're wondering, I presume, if it really was " 'LOVER " Hallam's
|
||
ghost? Frankly, I don't put stock in ghosts, but my answer is... ">
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<COND (<EQUAL? ,VARIATION
|
||
;,DEALER-C ,FRIEND-C ,PAINTER-C ,LORD-C>
|
||
<TELL
|
||
"possibly. That's as far as I'd go.
|
||
It was certainly a female figure, in a shimmering whitish gown,
|
||
sleeveless and cut low. She had " ,LONG-BLOND-HAIR " like "
|
||
'LOVER "'s and was about her size. But as for her face -- my
|
||
view was too brief,\" Hyde shrugs." CR>)
|
||
(T <TELL
|
||
"I'm not at all convinced. Somehow it didn't match
|
||
my memories of " 'LOVER ".
|
||
For one thing, the gown wasn't her style, at all. Her clothes were
|
||
always quite revealing. The ghost seemed quite covered up
|
||
at the throat and arms. You might say it totally lacked
|
||
feminine sex appeal.\"" CR>)>)
|
||
(<SET X <COM-CHECK ,DEALER>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WHY-ME> <RFATAL>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,DEALER>>
|
||
<COND (<NOT <GRAB-ATTENTION ,DEALER .OBJ>>
|
||
<RFATAL>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,DEALER-C>>>
|
||
;<NOT <==? ,DEALER ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<AND <EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<NOT <EQUAL? ,VARIATION ,PAINTER-C ;,OFFICER-C>>>
|
||
<TELL
|
||
"\"I came down late one night to get a book that I'd left in the "
|
||
'SITTING-ROOM ". I had just turned 'round to go back upstairs when I saw
|
||
a ghostly figure in the doorway. It fled as soon as I noticed it, in the
|
||
" D ,INTDIR " of the tower.\"|
|
||
He goes on, \"I was stunned, I must admit, so I dare say it took me a
|
||
moment to collect my wits and go after it. I ran into the tower, but the
|
||
spectre had vanished. This happened, by the way, a couple of weeks ago, on
|
||
my last visit to the castle.\"" CR>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<TELL
|
||
CHE ,DEALER " displays his monocle, saying, \"This is the only vision
|
||
aid I require.\"" CR>)
|
||
(<OR <EQUAL? .OBJ ,ARMOR ,BUST ;,CARTOON>
|
||
<EQUAL? .OBJ ,FIGURINE ,LOVER-PIC ,OIL-PAINTING>
|
||
<EQUAL? .OBJ ,PAINTING-GALLERY ,WRITING-DESK>>
|
||
<TELL "\"I haven't formed my professional opinion as yet.\""CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,DEALER .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <TELL-DUNNO ,DEALER .OBJ>)>)
|
||
(T <PERSON-F ,DEALER .ARG>)>>
|
||
|
||
<OBJECT PAINTER
|
||
(DESC "Vivien")
|
||
(IN DRAWING-ROOM)
|
||
(ADJECTIVE TALL MS MISS MRS
|
||
VIVIEN VIV PENTREATH WOMAN ;"for poss's")
|
||
(SYNONYM VIVIEN VIV PENTREATH WOMAN)
|
||
(ACTION PAINTER-F)
|
||
(DESCFCN PAINTER-D)
|
||
(LDESC 2 ;"sipping sherry")
|
||
(WEST "studying colors")
|
||
(TEXT
|
||
"She is a tall, tawny-haired woman of vintage beauty and uncertain age.")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT FEMALE NARTICLEBIT ;TOUCHBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(STATION A?VIV\'S)
|
||
(CHARACTER 3)>
|
||
|
||
<ROUTINE PAINTER-D ("OPTIONAL" (ARG 0))
|
||
<COND (<FSET? ,PAINTER ,TOUCHBIT>
|
||
<DESCRIBE-PERSON ,PAINTER>)
|
||
(T
|
||
<FSET ,PAINTER ,TOUCHBIT>
|
||
<FCLEAR ,DEALER ,NDESCBIT>
|
||
<COND (<AND <EQUAL? <LOC ,DEALER> ,HERE ,PSEUDO-OBJECT>
|
||
<=? <GETP ,DEALER ,P?LDESC> 2>>
|
||
<RFALSE>)>)>
|
||
<RTRUE>>
|
||
|
||
<GLOBAL GLASSES-FOR " glasses for closeup art work">
|
||
|
||
<ROUTINE PAINTER-F ("OPTIONAL" (ARG 0) "AUX" OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<NOT <GRAB-ATTENTION ,PAINTER>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE>
|
||
<DOBJ? GHOST-NEW>
|
||
<EQUAL? ,VARIATION ,PAINTER-C ;,OFFICER-C>>
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<COND (T ;<EQUAL? ,VARIATION ,PAINTER-C>
|
||
<TELL
|
||
"\"It was " 'LOVER ", or her ghost. What more can I say? A female
|
||
figure, her size, wearing the same sort of shimmering white gown she had
|
||
on the night she died -- and unmistakably her face! The likeness was
|
||
heart-stopping...\"|
|
||
Vivien chokes up for a moment, then dabs her eyes. \"I'm sorry. I
|
||
shouldn't let my feelings take over this way, but " 'LOVER " was such a
|
||
lovely person!\"" CR>)
|
||
;(T <TELL
|
||
"\"Well, it was a figure with a white gown and " ,LONG-BLOND-HAIR ". But
|
||
other than that, there was nothing very feminine about it. And it was
|
||
taller than " 'LOVER ". I admit I didn't get a good look at its face,
|
||
because it was dark and far away. All I can say is, if someone was
|
||
posing as " 'LOVER "'s ghost, he or she didn't convince me.\"" CR>)>)
|
||
(<SET X <COM-CHECK ,PAINTER>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WHY-ME> <RFATAL>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,PAINTER>>
|
||
<COND (<NOT <GRAB-ATTENTION ,PAINTER .OBJ>>
|
||
<RFATAL>)
|
||
(<EQUAL? .OBJ ,BUST ,FIGURINE ;,LOVER-PIC>
|
||
<TELL "\"Yes, that's one of my works.\"" CR>)
|
||
;(<EQUAL? .OBJ ,CARTOON>
|
||
<TELL "\"I don't recall who drew that.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,PAINTER-C>>>
|
||
<NOT <==? ,PAINTER ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<AND <EQUAL? .OBJ ,FRIEND>
|
||
<EQUAL? ,VARIATION ,PAINTER-C>
|
||
;<T? ,CONFESSED>>
|
||
;<DISCRETION ,PAINTER .OBJ>
|
||
<TELL ,RHYMES-WITH-RICH CR>)
|
||
(<AND <EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<EQUAL? ,VARIATION ,PAINTER-C ;,OFFICER-C>>
|
||
<TELL
|
||
CHE ,PAINTER " is somber as she replies, \"I dare say it was morbid of
|
||
me, but one night I went to the " 'BASEMENT ", just to try to imagine
|
||
the horrible scene when poor " 'LOVER " suffered her... tragic accident.
|
||
Suddenly I heard someone calling my name softly. I turned 'round, and
|
||
there was " 'LOVER " herself standing by the stairs">
|
||
<COND (T ;<EQUAL? ,VARIATION ,PAINTER-C>
|
||
<TELL
|
||
"! I went absolutely numb! She smiled faintly, then fled up the stairs.
|
||
I started to follow, but then I knew it was no use. " 'LOVER " is dead
|
||
and gone, and chasing her ghost won't bring her back to me!\"" CR>)
|
||
;(T <TELL
|
||
". Or so I thought at first. But then I realized it WASN'T " 'LOVER ",
|
||
that it COULDN'T be she.
|
||
My disbelief must have been obvious. The imposter suddenly turned and fled.
|
||
And that was the last I saw of it.\"" CR>)>)
|
||
(<AND <EQUAL? .OBJ ,CLUE-2>
|
||
<EQUAL? ,VARIATION ,LORD-C>
|
||
<NOT <IN? .OBJ ,PAINTER>>>
|
||
<CLUE-2-STORY ,PAINTER>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<TELL CHE ,PAINTER>
|
||
<COND (<EQUAL? ,VARIATION ,PAINTER-C>
|
||
<TELL
|
||
" says she wears" ,GLASSES-FOR ", as everyone
|
||
knows; then she shudders, \"But " 'LENS "es -- ugh! --
|
||
I could never tolerate them!\"" CR>)
|
||
(T
|
||
<TELL
|
||
" admits to wearing " 'LENS "es at all times, and" ,GLASSES-FOR>
|
||
<COND (<AND <EQUAL? ,VARIATION
|
||
,DOCTOR-C ;,DEALER-C ,PAINTER-C>
|
||
<T? ,FOUND-IT-PERM>
|
||
;<FSET? ,FOUND-IT-PERM ,SEENBIT>
|
||
;<FSET? ,LENS ,TOUCHBIT>>
|
||
<TELL
|
||
", but she says the lens you found isn't hers.
|
||
With a cynical smile, she pops out both lenses, one at a time, to show you."
|
||
;"-- and murmurs, \"Satisfied?\"" CR>)
|
||
(T <TELL "." CR>)>)>)
|
||
(<EQUAL? .OBJ ,LOVER>
|
||
<PUTP ,PAINTER ,P?LDESC 7 ;"sobbing quietly">
|
||
<TELL
|
||
"The artist shrugs with a sad, wistful smile. \"What can I say?
|
||
" 'LOVER " was a most unusual girl... utterly unworldly... almost fey.
|
||
She grew up in a cottage not far from here, you know. Her drowning was
|
||
a terrible tragedy... and yet... sometimes I'm not sure she WANTED
|
||
to go on living.\" She turns her face away to hide a tear."
|
||
;"You feel Vivien knows much more about 'LOVER , but she's too discreet
|
||
to tell." CR>)
|
||
(<EQUAL? .OBJ ,LOVER-PIC>
|
||
<TELL
|
||
"\"Oh, you mean my portrait of dear " 'LOVER ". I don't believe I ever saw
|
||
such skin as hers... or such hair.\" She stops speaking and bites her lip."
|
||
CR>)
|
||
(<EQUAL? .OBJ ,OIL-PAINTING>
|
||
<TELL "\"I don't admire the heroic style at all.\"" CR>)
|
||
(<EQUAL? .OBJ ;,VIVIEN-DIARY ;"pass to I-SHOT" ,VIVIEN-STUFF>
|
||
<TELL
|
||
"\"That's private property. It's no business of yours.\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,PAINTER .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <TELL-DUNNO ,PAINTER .OBJ>)>)
|
||
(<AND <VERB? KISS>
|
||
<==? <GETP ,PAINTER ,P?LDESC> 7 ;"sobbing quietly">>
|
||
<PUTP ,PAINTER ,P?LINE 0>
|
||
<TELL "\"You're sweet.\"" CR>)
|
||
(T <PERSON-F ,PAINTER .ARG>)>>
|
||
|
||
<OBJECT VIVIEN-DIARY
|
||
(DESC "Vivien's diary")
|
||
(ADJECTIVE VIV\'S HER ;VIVIEN)
|
||
(SYNONYM EVIDENCE DIARY BOOK BOOKS)
|
||
(GENERIC GENERIC-BOOK)
|
||
(FLAGS TAKEBIT NARTICLEBIT READBIT CONTBIT SECRETBIT RMUNGBIT ;"evidence")
|
||
(CHARACTER 3) ;"for this char"
|
||
(CAPACITY 4)
|
||
(ACTION VIVIEN-DIARY-F)>
|
||
|
||
<ROUTINE VIVIEN-DIARY-F ()
|
||
<COND (<VERB? EXAMINE LOOK-INSIDE OPEN READ>
|
||
<COND (<NOT-HOLDING? ,PRSO>
|
||
<RTRUE>)>
|
||
<TELL
|
||
'VIVIEN-DIARY " falls open to a tear-stained page, and you read:|
|
||
\"O " 'LOVER ", sweet " 'LOVER "! Jack will pay dearly
|
||
for your cruel death by losing his new sweetheart...\"" CR>
|
||
;<TELL
|
||
'VIVIEN-DIARY " reveals her intense attachment to " 'LOVER ", her
|
||
obsessive belief that " 'LORD " drove " 'LOVER " to suicide, and her
|
||
plot for revenge." CR>
|
||
<COND (<ZERO? ,EVIDENCE-FOUND>
|
||
<CONGRATS>)>
|
||
<SETG EVIDENCE-FOUND ,VIVIEN-DIARY>)>>
|
||
|
||
<OBJECT COUSIN
|
||
(DESC "Lionel Tresyllian")
|
||
(IN GLOBAL-OBJECTS ;"LOCAL-GLOBALS produces [Which Lionel ...]")
|
||
(ADJECTIVE JACK\'S HIS
|
||
LIONEL ;TRESYLLIAN UNCLE ;"for poss's")
|
||
(SYNONYM LIONEL ;TRESYLLIAN UNCLE)
|
||
(FLAGS PERSONBIT NARTICLEBIT NDESCBIT)
|
||
(CHARACTER 11)
|
||
(ACTION COUSIN-F)>
|
||
|
||
<ROUTINE COUSIN-F ()
|
||
<COND (<AND <EQUAL? ,HERE ,DINING-ROOM>
|
||
<NOT <REMOTE-VERB?>>>
|
||
<DO-INSTEAD-OF ,BUST ,COUSIN>
|
||
<RTRUE>)>>
|
||
[
|
||
<OBJECT BUTLER
|
||
(DESC "Bolitho")
|
||
(IN CORR-1 ;KITCHEN)
|
||
(ADJECTIVE WHITE
|
||
BOLITHO BUTLER MAN ;"for poss's")
|
||
(SYNONYM BOLITHO BUTLER MAN)
|
||
(ACTION BUTLER-F)
|
||
(DESCFCN BUTLER-D)
|
||
(LDESC 0)
|
||
(WEST "awaiting orders")
|
||
(TEXT
|
||
"He's a short white-haired gentle man, impeccably dressed tonight in
|
||
white gloves and tails.")
|
||
(FLAGS OPENBIT PERSONBIT SEARCHBIT NARTICLEBIT NDESCBIT)
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(CHARACTER 8)>
|
||
|
||
<ROUTINE BOLITHO-WILL ()
|
||
<TELL !\ 'BUTLER " will see to the car and bring " 'LUGGAGE>>
|
||
|
||
<ROUTINE BUTLER-D ("OPTIONAL" (ARG <>) "AUX" GT (SAID <>) (LL <>) L)
|
||
<COND (<FSET? ,BUTLER ,TOUCHBIT>
|
||
<DESCRIBE-PERSON ,BUTLER>
|
||
<RTRUE>)>
|
||
<FCLEAR ,BUTLER ,NDESCBIT>
|
||
<FSET ,BUTLER ,TOUCHBIT>
|
||
<COND (<AND <EQUAL? ,HERE ,COURTYARD ,FOYER>
|
||
<EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
|
||
<ZERO? <GETP ,LORD ,P?LINE>>>
|
||
<SET LL T>)>
|
||
<COND (<AND <EQUAL? ,HERE ,COURTYARD ,FOYER>
|
||
<EQUAL? <LOC ,FRIEND> ,HERE ,PSEUDO-OBJECT>>
|
||
<SET SAID T>
|
||
<TELL
|
||
"|
|
||
\"We can talk more later, "FN",\" says " 'FRIEND ", taking your arm,
|
||
\"but let's go in now, so you can meet the other guests.">)>
|
||
<COND (.LL
|
||
<COND (.SAID
|
||
<TELL !\" CR "\"Yes, d">)
|
||
(T
|
||
<SET SAID T>
|
||
<TELL "\"D">)>
|
||
<TELL "o come in.">
|
||
<BOLITHO-WILL>
|
||
<TELL ",\" says " 'LORD " as a">)
|
||
(.SAID
|
||
<BOLITHO-WILL>
|
||
<TELL ".\"" CR !\A>)
|
||
(T <TELL !\A>)>
|
||
<THIS-IS-IT ,BUTLER>
|
||
<TELL "n elderly butler appears.">
|
||
<COND (<ZERO? .SAID>
|
||
<TELL " He bows slightly to you.">)>
|
||
<SET GT <GT-O ,BUTLER>>
|
||
<COND ;(<NOT <EQUAL? <GET .GT ,GOAL-FUNCTION>
|
||
,BUTLER-FETCHES ,BUTLER-CARRIES>>
|
||
T)
|
||
(<AND <NOT <EQUAL? <SET L <META-LOC ,LUGGAGE>>
|
||
,YOUR-ROOM ,YOUR-BATHROOM>>
|
||
<T? <GETP .L ,P?LINE>>>
|
||
<COND (<IN? ,LUGGAGE ,BUTLER>
|
||
<TELL " He has " D ,LUGGAGE ".">)
|
||
(<==? <LOC ,BUTLER> .L>
|
||
<PUT .GT ,GOAL-FUNCTION ,BUTLER-CARRIES>
|
||
<ESTABLISH-GOAL ,BUTLER ,YOUR-ROOM>
|
||
<FCLEAR ,LUGGAGE ,OPENBIT>
|
||
<MOVE ,LUGGAGE ,BUTLER>
|
||
<TELL " He takes " D ,LUGGAGE ".">)
|
||
(T
|
||
<PUT .GT ,GOAL-FUNCTION ,BUTLER-FETCHES>
|
||
<ESTABLISH-GOAL ,BUTLER .L>)>
|
||
<COND (<ZERO? .SAID>
|
||
<TELL
|
||
" \"I'll carry " D ,LUGGAGE " to " 'YOUR-ROOM ".\"">)>)>
|
||
<CRLF>
|
||
<RFATAL>>
|
||
|
||
<GLOBAL FOUND-FABRIC
|
||
" discovered a strand of fabric from her gown, snagged on a jagged bit
|
||
of brickwork.">
|
||
|
||
<ROUTINE BUTLER-SORRY ()
|
||
;<TELL "\"I'm afraid I can't do that now, ">
|
||
<TELL "\"Sorry, but I have duties to perform, ">
|
||
<COND (<TITLE-NAME> <TELL !\.>)>
|
||
<TELL "\"" CR>>
|
||
|
||
<ROUTINE BUTLER-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<AND <OR <EQUAL? ,AWAITING-REPLY ,BUTLER-1-R ,BUTLER-2-R>
|
||
<EQUAL? ,AWAITING-REPLY ,BUTLER-3-R ,BUTLER-4-R>>
|
||
<VERB? YES NO>>
|
||
<PUTP ,BUTLER ,P?LDESC 0>
|
||
<PUTP ,BUTLER ,P?LINE 0>
|
||
<COND (<EQUAL? ,AWAITING-REPLY ,BUTLER-1-R>
|
||
<SETG AWAITING-REPLY <>>
|
||
<COND (<VERB? YES>
|
||
<ROB ,LUGGAGE ,CHEST-OF-DRAWERS>)>
|
||
<TELL
|
||
'BUTLER " responds politely, like the well-trained butler he is. But he
|
||
seems to have something important on his mind." CR>)
|
||
(<EQUAL? ,AWAITING-REPLY ,BUTLER-2-R>
|
||
<SETG AWAITING-REPLY <>>
|
||
<COND (<NOT <VERB? YES>>
|
||
<TELL "\"Oh!... Please pardon me.\"" CR>)
|
||
(T
|
||
<TELL
|
||
"\"Then no doubt you are here to investigate the spectral figure which
|
||
has recently been seen about the castle.">
|
||
<COND (<ZERO? ,BUTLER-GHOST-STORY-TOLD>
|
||
<TELL !\ >
|
||
<BUTLER-GHOST-STORY>)
|
||
(T <TELL "\"" CR>)>)>)
|
||
(<EQUAL? ,AWAITING-REPLY ,BUTLER-3-R>
|
||
<SETG AWAITING-REPLY <>>
|
||
<COND (<VERB? YES>
|
||
<MOVE ,MACE ,PLAYER>
|
||
<FSET ,MACE ,SEENBIT>
|
||
<FCLEAR ,MACE ,NDESCBIT>
|
||
<THIS-IS-IT ,MACE>
|
||
<TELL
|
||
"\"Should you find " 'PLAYER " in any danger from our " 'GHOST-NEW ",
|
||
perhaps you could use this.\"|
|
||
" 'BUTLER " gives you a small " D ,MACE ".||">)
|
||
(T <TELL "\"As you wish,\" he sniffs." CR>)>)
|
||
(T ;<EQUAL? ,AWAITING-REPLY ,BUTLER-4-R>
|
||
<SETG AWAITING-REPLY <>>
|
||
<COND (<NOT <VERB? YES>>
|
||
<TELL "\"No doubt you soon shall. ">)
|
||
(T <TELL !\">)>
|
||
<COND (<EQUAL? ,VARIATION ,LORD-C ,FRIEND-C ;,OFFICER-C>
|
||
<TELL
|
||
"To be precise, the ghost was just beyond the archway. It was bending
|
||
over, groping for something on the " 'DRAWING-ROOM " carpet.">)
|
||
(T
|
||
<TELL
|
||
"If I may express an opinion, our " 'GHOST-NEW " must need reading
|
||
glasses. The hall was ablaze with lights, yet it was bending down,
|
||
groping blindly for something on the marble floor.">
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C>
|
||
<TELL
|
||
" And, I might add, it must also be left-handed. You see, "TN", while
|
||
bending over, the figure was using its left hand to grope with. I tried
|
||
it myself, as did other servants, and we agree that such behavior
|
||
indicates left-handedness.">)>)>
|
||
<COND (T ;<NOT <EQUAL? ,VARIATION ,DEALER-C>>
|
||
<TELL "\"|
|
||
He continues, \"The ghost must have heard my footsteps, for">)
|
||
;(T <TELL
|
||
"To be frank, "TN", I was quite taken aback when I saw the ghost.
|
||
I'm afraid I just stood there for a moment, gaping at it stupidly.
|
||
Then when it found whatever it was looking for,">)>
|
||
<TELL
|
||
" it stood up, flashed me a startled glance, and fled into the darkness
|
||
of the " 'DRAWING-ROOM ". I pursued, turning on the lights, but the
|
||
thing had disappeared. I went into the foyer, but it was not there
|
||
either, and the " 'FRONT-DOOR " was still locked -- from the inside.\"" CR>)>
|
||
<RTRUE>)
|
||
(<NOT <GRAB-ATTENTION ,BUTLER>> <RFATAL>)
|
||
(<AND <VERB? DESCRIBE> <DOBJ? GHOST-NEW>>
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<TELL
|
||
"\"Frankly, I found it unconvincing. I don't see why a ghost would grope
|
||
about on the floor to find something -- especially in a spot that wasn't
|
||
even built when the " 'GHOST-OLD " was walled up in the tower. Besides,
|
||
why should a ghost be scared away by a human being? It's usually the
|
||
opposite, is it not?... No, "TN", in my opinion that figure just didn't
|
||
behave like a proper ghost. It had " ,LONG-BLOND-HAIR " and was clad in
|
||
a silvery-white ">
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ;,OFFICER-C>
|
||
<TELL "long-sleeved">)
|
||
(T <TELL "sleeveless">)>
|
||
<TELL " gown.
|
||
I caught only a brief glimpse of its face, deadly white.
|
||
As to height, it was too bent over for me to make out.
|
||
If someone was masquerading as a ghost, of course, the imposter
|
||
might well have been a man. However, as for the figure I saw -- ">
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ;,OFFICER-C>
|
||
<TELL "I cannot be sure of its sex.\"" CR>)
|
||
(T <TELL "it seemed to me quite feminine.\"" CR>)>)
|
||
(<AND <VERB? CLOSE DISEMBARK EMPTY LEAVE OPEN SIT SIT-AT STAND
|
||
THROUGH WALK WALK-TO>
|
||
<WILLING? ,BUTLER>>
|
||
<COND (<AND <NOT <VERB? LEAVE>>
|
||
<OR <NOT <VERB? THROUGH WALK-TO>>
|
||
<NOT <DOBJ? DINNER PASSAGE>>>>
|
||
<TELL "\"As you wish, ">
|
||
<COND (<TITLE-NAME> <TELL !\.>)>
|
||
<TELL "\"|">)>
|
||
<RFALSE>)
|
||
;(<VERB? WALK-TO>
|
||
<COND (<DOBJ? HERE GLOBAL-HERE>
|
||
<TELL "\"I am here, "TN"!\"" CR>)>)
|
||
(<SET X <COM-CHECK ,BUTLER>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T
|
||
<BUTLER-SORRY>
|
||
<RFATAL>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,BUTLER>>
|
||
<COND ;(<T? <GET <GET ,GOAL-TABLES ,BUTLER-C> ,GOAL-S>>
|
||
<BUTLER-SORRY>
|
||
<RFATAL>)
|
||
(<NOT <GRAB-ATTENTION ,BUTLER .OBJ>>
|
||
<RFATAL>)
|
||
(<EQUAL? .OBJ ,ACCIDENT ,LOVER>
|
||
<TELL
|
||
"\"Perhaps you've heard how I was sent to the " 'BASEMENT " to find her.
|
||
I found a tent pole and a shoe in front of the well, near one end of the
|
||
" 'WINE-RACK ". The pole belonged to Lord Lionel. The shoe's spike heel
|
||
was wrenched loose. I knew at once there had been an accident.
|
||
Apparently Miss " 'LOVER ", in her cups, had stumbled over the pole and
|
||
grabbed at the well for support. But as she was nowhere in sight, and
|
||
her red necklace was lying beside the well, I assumed she had toppled
|
||
down the well. When " 'LORD " arrived, he shone an electric torch down
|
||
the well and" ,FOUND-FABRIC " Evidently it was ripped off as
|
||
she fell. At any rate, the police concluded that she had drowned. They
|
||
lowered a diver into the well, but " 'CORPSE " was never found.\"" CR>)
|
||
(<EQUAL? .OBJ ,BUTLER>
|
||
<TELL
|
||
"\"There's not much to tell. I've served the family all my life.
|
||
Should you require anything, feel free to ask.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<OR <T? ,CONFESSED>
|
||
<T? <GET ,TOLD-ABOUT-EVID ,BUTLER-C>>>
|
||
;<NOT <==? ,BUTLER ,SEARCHER>>>
|
||
<TELL ,IM-SHOCKED>)
|
||
(<EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<TELL !\">
|
||
<BUTLER-GHOST-STORY>)
|
||
(<EQUAL? .OBJ ,GHOST-OLD>
|
||
<TELL
|
||
"\"They do say " 'CASTLE " is haunted.\"" ;"in the past, before that, er,
|
||
unfortunate lady's bones were exhumed and reburied.\"" CR>)
|
||
(<EQUAL? .OBJ ,LAMP>
|
||
<TELL "\"Yes, we keep">
|
||
<IN-CASE-OF-BLACKOUT>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,YOUR-MIRROR ,DRESSING-MIRROR>
|
||
<TELL "\"S">
|
||
<BUTLER-MIRROR-STORY>)
|
||
(<OR <EQUAL? .OBJ ,PRIEST-DOOR>
|
||
<AND <EQUAL? .OBJ ,PASSAGE>
|
||
<ZERO? <GET ,FOUND-PASSAGES ,BUTLER-C>>>>
|
||
<TELL
|
||
"The butler hesitates, looking thoughtful.
|
||
\"I daresay that sort of thing would be better known to his lordship
|
||
than to any of the staff, "TN".\"" CR>)
|
||
(<SET X <COMMON-ASK-ABOUT ,BUTLER .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T
|
||
<TELL "\"I'm afraid it's not my place to say, ">
|
||
<COND (<TITLE-NAME> <TELL !\.>)>
|
||
<TELL "\"" CR>)>)
|
||
(T <PERSON-F ,BUTLER .ARG>)>>
|
||
|
||
<ROUTINE IN-CASE-OF-BLACKOUT ()
|
||
<TELL " that in case of a power outage.\"" CR>>
|
||
|
||
<GLOBAL BUTLER-GHOST-STORY-TOLD:FLAG <>>
|
||
<ROUTINE BUTLER-GHOST-STORY ()
|
||
<SETG BUTLER-GHOST-STORY-TOLD T>
|
||
<SETG QCONTEXT ,BUTLER>
|
||
<THIS-IS-IT ,BUTLER>
|
||
<PUTP ,BUTLER ,P?LDESC 12 ;"listening to you">
|
||
<SETG AWAITING-REPLY ,BUTLER-4-R>
|
||
<SETG CLOCK-WAIT T>
|
||
<COND (<==? ,HERE ,GREAT-HALL>
|
||
<PUT ,QUESTIONS ,AWAITING-REPLY "Can you see where I mean?">)>
|
||
<TELL
|
||
"I myself glimpsed the ghost just last night. " 'LORD " and some guests
|
||
were sitting up late, " <GET ,LDESC-STRINGS 13> ;"lounging and chatting"
|
||
" in the " 'GREAT-HALL ".
|
||
After they retired, I came upstairs to clean up and turn off the lights.
|
||
As I entered the " 'GREAT-HALL " from the west, I saw the ghost on the
|
||
far side of the room. " <GET ,QUESTIONS ,AWAITING-REPLY> "\"" CR>
|
||
<RFATAL>>
|
||
|
||
<ROUTINE BUTLER-MIRROR-STORY ()
|
||
<TELL
|
||
"hould you wish to view " 'PLAYER " from all angles while dressing,
|
||
you can do so by adjusting the " 'YOUR-MIRROR " and the hinged "
|
||
'DRESSING-MIRROR " of the " 'DRESSING-TABLE ".\"" CR>>
|
||
]
|
||
<OBJECT MAID
|
||
(DESC "upstairs maid")
|
||
(IN LOCAL-GLOBALS)
|
||
(ADJECTIVE UPSTAIRS
|
||
GLADYS MAID ;"for poss's")
|
||
(SYNONYM GLADYS MAID)
|
||
(FLAGS PERSONBIT FEMALE SEENBIT VOWELBIT)
|
||
;(LDESC 0)
|
||
(CHARACTER 12)>
|
||
|
||
<OBJECT GHOST-OLD
|
||
(DESC "White Lady" ;"old ghost spirit")
|
||
(IN LOCAL-GLOBALS)
|
||
(ADJECTIVE OLD ;ORIGINAL WHITE)
|
||
(SYNONYM SPIRIT PHANTOM LADY LEGEND ;WIFE)
|
||
;(GHOST GHOSTS SPOOK SPECTER SPECTRE)
|
||
(FLAGS PERSONBIT FEMALE SEENBIT)
|
||
(CHARACTER 16)>
|
||
[
|
||
<OBJECT GHOST-NEW
|
||
(DESC ;"new " "ghost")
|
||
(IN LOCAL-GLOBALS)
|
||
(ADJECTIVE BLOND BLONDE NEW DEE\'S HER CASTLE
|
||
GHOST ;"for poss's")
|
||
(SYNONYM GHOST
|
||
;"GHOSTS SPECTER SPECTRE SPOOK MURDER")
|
||
;(SPIRIT PHANTOM)
|
||
(FLAGS SEENBIT OPENBIT ;PERSONBIT SEARCHBIT NDESCBIT ;ONBIT)
|
||
(LDESC 0)
|
||
(WEST "lurking in the shadows")
|
||
(CAPACITY 40)
|
||
(LINE 0)
|
||
(CHARACTER 10 ;0)
|
||
(DESCFCN GHOST-NEW-D)
|
||
(ACTION GHOST-NEW-F)>
|
||
|
||
<ROUTINE GHOST-NEW-D ("OPTIONAL" (ARG <>))
|
||
<COND (<FSET? ,GHOST-NEW ,TOUCHBIT>
|
||
<DESCRIBE-PERSON ,GHOST-NEW>)
|
||
(T
|
||
<FCLEAR ,GHOST-NEW ,NDESCBIT>
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<FSET ,GHOST-NEW ,TOUCHBIT>
|
||
<FSET ,GHOST-NEW ,SEENBIT>
|
||
<FSET ,COSTUME ,SEENBIT>
|
||
<CRLF>
|
||
<COND (<FSET? ,GHOST-NEW ,MUNGBIT>
|
||
<TELL "Lying " <GROUND-DESC> " i">)
|
||
(T <TELL "Out of the dark come">)>
|
||
<TELL
|
||
"s a figure with " ,LONG-BLOND-HAIR ", dressed all in
|
||
silvery white and glowing with an almost unearthly light." CR>)>
|
||
<RTRUE>>
|
||
|
||
<GLOBAL GHOST-CACKLES "The ghost only cackles in response.|">
|
||
|
||
<ROUTINE GHOST-NEW-F ("OPTIONAL" (ARG <>) "AUX" OBJ ;X)
|
||
<COND (<==? .ARG ,M-WINNER>
|
||
<COND (<NOT <GRAB-ATTENTION ,GHOST-NEW>> <RFATAL>)
|
||
;(<SET X <COM-CHECK ,GHOST-NEW>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T
|
||
<TELL ,GHOST-CACKLES>
|
||
<RFATAL>)>)
|
||
(<SET OBJ <ASKING-ABOUT? ,GHOST-NEW>>
|
||
<COND (<GRAB-ATTENTION ,GHOST-NEW .OBJ>
|
||
<COND (<NOT <EQUAL? ,VARIATION ,LORD-C>>
|
||
<TELL ,GHOST-CACKLES>)
|
||
(<NOT <LOVER-SPEECH>>
|
||
<GHOST-FLEES>)>)>
|
||
<RFATAL>)
|
||
(<VERB? EXAMINE>
|
||
<TELL
|
||
CHE ,GHOST-NEW " is wearing heavy white makeup with black eyes and lips. ">
|
||
<DESCRIBE-GOWN>
|
||
<CRLF>
|
||
<COMMON-OTHER ,GHOST-NEW>)
|
||
(<OR <VERB? BRUSH SEARCH UNDRESS>
|
||
<AND <VERB? SEARCH-FOR> <IOBJ? COSTUME>>>
|
||
<COND (<NOT <FSET? ,GHOST-NEW ,MUNGBIT>>
|
||
<TELL ,GHOST-CACKLES>
|
||
<RTRUE>)
|
||
(<AND <IN? ,COSTUME ,GHOST-NEW> ;<FSET? ,GHOST-NEW ,MUNGBIT>>
|
||
<UNDRESS-GHOST>
|
||
<RTRUE>)>)
|
||
(<SET OBJ <GHOST-NEW-VERBS>>
|
||
<COND (<GRAB-ATTENTION ,GHOST-NEW>
|
||
<COND (<NOT <EQUAL? ,VARIATION ,LORD-C>>
|
||
<TELL ,GHOST-CACKLES>)
|
||
(<OR <==? .OBJ 2>
|
||
<NOT <LOVER-SPEECH>>>
|
||
<GHOST-FLEES>)>)>
|
||
<RFATAL>)
|
||
(T <PERSON-F ,GHOST-NEW .ARG>)>>
|
||
|
||
<ROUTINE GHOST-NEW-VERBS ()
|
||
<COND (<VERB? BOW GIVE SGIVE> ;"friendly"
|
||
<RTRUE>)
|
||
(<VERB? KISS LISTEN RUB> ;"friendly"
|
||
<RTRUE>)
|
||
(<VERB? SMILE> ;"friendly"
|
||
<RTRUE>)
|
||
(<SPEAKING-VERB? ,GHOST-NEW> ;"friendly"
|
||
<RTRUE>)
|
||
(<VERB? ARREST MUNG PUSH SLAP STOP YELL> ;"unfriendly"
|
||
<RETURN 2>)
|
||
(<VERB? TAKE> ;"unfriendly"
|
||
<COND (<NOT <FSET? ,GHOST-NEW ,MUNGBIT>>
|
||
<RETURN 2>)>)>>
|
||
|
||
<GLOBAL VILLAIN-KNOWN?:FLAG <>>
|
||
|
||
<ROUTINE UNDRESS-GHOST ("AUX" (L <LOC ,GHOST-NEW>) ADJ
|
||
;(C <GETP ,GHOST-NEW ,P?CHARACTER>))
|
||
;<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<MOVE ,COSTUME ,WINNER>
|
||
<FCLEAR ,COSTUME ,NDESCBIT>
|
||
<FCLEAR ,COSTUME ,WORNBIT>
|
||
<FSET ,COSTUME ,TOUCHBIT>
|
||
<FSET ,COSTUME ,TAKEBIT>
|
||
<MOVE ,GHOST-NEW ,LOCAL-GLOBALS>
|
||
<MOVE ,VILLAIN-PER .L>
|
||
;<SETG OTHER-CHAR ,GHOST-NEW>
|
||
;<PUT ,CHARACTER-TABLE .C ,VILLAIN-PER>
|
||
;<PUT ,CHAR-POSS-TABLE <+ 1 .C> ,OTHER-POSS>
|
||
;<SETG OTHER-POSS ,W?G\'S>
|
||
<COND (<SET ADJ <GETP ,VILLAIN-PER ,P?STATION>>
|
||
<COND (<T? ,OTHER-POSS-POS>
|
||
<PUTB <GETPT ,HEAD ,P?ADJECTIVE>
|
||
,OTHER-POSS-POS .ADJ>
|
||
<PUTB <GETPT ,HANDS ,P?ADJECTIVE>
|
||
,OTHER-POSS-POS .ADJ>
|
||
<PUTB <GETPT ,EYE ,P?ADJECTIVE>
|
||
,OTHER-POSS-POS .ADJ>
|
||
<PUTB <GETPT ,OTHER-OUTFIT ,P?ADJECTIVE>
|
||
,OTHER-POSS-POS .ADJ>)>)>
|
||
<THIS-IS-IT ,VILLAIN-PER>
|
||
<FSET ,VILLAIN-PER ,MUNGBIT>
|
||
<PUTP ,VILLAIN-PER ,P?LDESC 19 ;"out cold">
|
||
<SETG VILLAIN-KNOWN? T>
|
||
<TELL
|
||
"When you remove the " D ,COSTUME ", you discover " D ,VILLAIN-PER
|
||
" underneath!" CR>
|
||
<CONGRATS ,COSTUME>
|
||
;<COND (<==? ,VILLAIN-PER ,LOVER ;,LORD>
|
||
<UNSNOOZE ,LOVER> ;"because no body parts!")>>
|
||
|
||
<ROUTINE DESCRIBE-GOWN ()
|
||
<FSET ,GHOST-NEW ,PERSONBIT>
|
||
<TELL "The gown ">
|
||
<COND (<NOT <==? ,LIT ,HERE>>
|
||
<TELL "seems to fluoresce in the dark. It ">)>
|
||
<TELL "has a ">
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ;,OFFICER-C>
|
||
<TELL "high">)
|
||
(T <TELL "low">)>
|
||
<TELL " neckline and ">
|
||
<COND (<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ;,OFFICER-C>
|
||
<TELL "long">)
|
||
(T <TELL "no">)>
|
||
<TELL " sleeves.">>
|
||
|
||
<OBJECT COSTUME
|
||
(DESC "ghost costume")
|
||
(ADJECTIVE GHOST G\'S HER HIS WHITE BLOND BLONDE PALE)
|
||
(SYNONYM COSTUME DISGUISE GOWN WIG ;SHEET)
|
||
;(GENERIC GENERIC-CLOTHES)
|
||
(FLAGS WEARBIT TAKEBIT SECRETBIT ONBIT)
|
||
(SIZE 20)
|
||
(ACTION COSTUME-F)>
|
||
|
||
<ROUTINE COSTUME-F ()
|
||
<COND (<VERB? TELL-ABOUT>
|
||
<COND (<FSET? ,PRSO ,PERSONBIT>
|
||
<COND (<==? ,VARIATION <GETP ,PRSO ,P?CHARACTER>>
|
||
<SETG PRSA ,V?ASK-ABOUT>
|
||
<RFALSE>)
|
||
(T <TELL-ABOUT-OBJECT ,PRSO ,COSTUME ,FOUND-COSTUME>)>)>)
|
||
(<REMOTE-VERB?>
|
||
<RFALSE>)
|
||
(<AND <NOUN-USED? ,W?WIG>
|
||
<EQUAL? ,VARIATION ,LORD-C>>
|
||
<SETG CLOCK-WAIT T>
|
||
<TELL "(There is no wig!)" CR>)
|
||
(<VERB? EXAMINE LOOK-INSIDE>
|
||
<COND (<NOT <NOUN-USED? ,W?WIG>>
|
||
<DESCRIBE-GOWN>
|
||
<COND (<EQUAL? <LOC ,COSTUME> ,GHOST-NEW ,VILLAIN-PER>
|
||
<TELL " It's on">)
|
||
(T <TELL
|
||
" When you hold it up, you can see it would fit">)>
|
||
<TELL " a ">
|
||
<COND (<EQUAL? ,VARIATION ,LORD-C ,FRIEND-C ,DOCTOR-C>
|
||
<TELL "person of average height.">)
|
||
(T ;<EQUAL? ,VARIATION ;,DEALER-C ,PAINTER-C ;,OFFICER-C>
|
||
<TELL "tall person.">)>
|
||
<CRLF>)>
|
||
<COND (<AND <NOT <NOUN-USED? ,W?GOWN>>
|
||
<NOT <EQUAL? ,VARIATION ,LORD-C>>>
|
||
<TELL
|
||
"It's obvious that the wig was designed to resemble " 'LOVER "'s long, flowing
|
||
hair." CR>
|
||
<COND (<NOT <EQUAL? <LOC ,COSTUME> ,GHOST-NEW ,VILLAIN-PER>>
|
||
<TELL "Inside, you notice several individual ">
|
||
<COND (<EQUAL? ,VARIATION ,FRIEND-C> <TELL "red">)
|
||
(<EQUAL? ,VARIATION ,DOCTOR-C> <TELL "grayish">)
|
||
;(<EQUAL?,VARIATION,DEALER-C><TELL "sandy-brown">)
|
||
(T ;<EQUAL? ,VARIATION ,PAINTER-C> <TELL "tawny">)
|
||
;(<EQUAL?,VARIATION,OFFICER-C><TELL"dark blond">)>
|
||
<TELL " hairs, the same color as ">
|
||
<COND ;(<EQUAL? ,VARIATION ,LORD-C> <TELL 'LOVER>)
|
||
(T <TELL D <GET ,CHARACTER-TABLE ,VARIATION>>)>
|
||
<TELL "'s hair." CR>
|
||
<CONGRATS ,COSTUME>)>)>
|
||
<RTRUE>)
|
||
;(<VERB? FIND>
|
||
<COND (<IN? ,COSTUME ,HERE>
|
||
<COND (<FSET? ,COSTUME ,NDESCBIT>
|
||
<DISCOVER ,COSTUME>)
|
||
(T <TELL "It's right here!" CR>)>)
|
||
(T <TELL "Results are negative." CR>)>)
|
||
(<VERB? LOOK-UNDER TAKE TAKE-OFF>
|
||
<COND (<IN? ,COSTUME ,GHOST-NEW>
|
||
<PERFORM ,V?UNDRESS ,GHOST-NEW>
|
||
<RTRUE>)>)
|
||
(<OR <VERB? WEAR>
|
||
<AND <VERB? PUT>
|
||
<T? ,PRSI>
|
||
<FSET? ,PRSI ,PERSONBIT>>>
|
||
<WEAR-SCARE>)>>
|
||
|
||
<ROUTINE WEAR-SCARE ()
|
||
<TELL "You start to put" THE ,PRSO " on">
|
||
<COND (<T? ,PRSI> <TELL !\ 'PRSI>)>
|
||
<TELL ", but">
|
||
<COND (<DOBJ? NECKLACE-OF-D>
|
||
<TELL ,CLASP-MUNGED "." CR>)
|
||
(T <TELL " then decide it might scare the other guests." CR>)>>
|
||
|
||
<GLOBAL LONG-BLOND-HAIR "long blonde hair">
|
||
|
||
;<OBJECT WIG
|
||
(DESC "blonde wig")
|
||
(ADJECTIVE BLOND BLONDE PALE GHOST)
|
||
(SYNONYM WIG)
|
||
(FLAGS WEARBIT NDESCBIT)
|
||
(SIZE 8)
|
||
(ACTION WIG-F)>
|
||
]
|
||
<GLOBAL CHARACTER-TABLE
|
||
<PTABLE PLAYER FRIEND LORD PAINTER DOCTOR OFFICER ;5
|
||
DEALER DEB BUTLER LOVER GHOST-NEW ;10
|
||
COUSIN MAID DRAGON BUFFALO-HEAD RHINO-HEAD GHOST-OLD ;16>>
|
||
|
||
<GLOBAL GUEST-TABLE
|
||
<PLTABLE FRIEND DEB OFFICER DOCTOR DEALER PAINTER>>
|
||
|
||
<GLOBAL CHAR-ROOM-TABLE
|
||
<PLTABLE YOUR-ROOM TAMARA-ROOM JACK-ROOM
|
||
VIVIEN-ROOM WENDISH-ROOM IAN-ROOM
|
||
HYDE-ROOM IRIS-ROOM KITCHEN LIMBO LIMBO ;10
|
||
;"just for convenience:"
|
||
DRAWING-ROOM LIBRARY ;LUMBER-ROOM
|
||
SITTING-ROOM BACKSTAIRS>>
|
||
|
||
<GLOBAL CHAR-CLOSET-TABLE
|
||
<LTABLE 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
|
||
;"just for convenience:"
|
||
DRAWING-CLOSET SECRET-LANDING-LIB ;SECRET-LANDING-2
|
||
SITTING-PASSAGE DINING-PASSAGE>>
|
||
|
||
;<GLOBAL OTHER-CHAR:OBJECT GHOST-NEW>
|
||
;<GLOBAL OTHER-POSS <VOC "G'S" ADJECTIVE>>
|
||
<GLOBAL OTHER-POSS-POS:NUMBER 0>
|
||
|
||
<GLOBAL CHAR-POSS-TABLE
|
||
<LTABLE <VOC "MY" ADJECTIVE>
|
||
<VOC "TAM'S" ADJECTIVE>
|
||
<VOC "JACK'S" ADJECTIVE>
|
||
<VOC "VIV'S" ADJECTIVE>
|
||
<VOC "DOC'S" ADJECTIVE>
|
||
<VOC "IAN'S" ADJECTIVE>
|
||
<VOC "HYDE'S" ADJECTIVE>
|
||
<VOC "IRIS'S" ADJECTIVE>
|
||
<VOC "B'S" ADJECTIVE>
|
||
<VOC "DEE'S" ADJECTIVE>
|
||
<VOC "G'S" ADJECTIVE>
|
||
<VOC "LI'S" ADJECTIVE>
|
||
<VOC "MAID'S" ADJECTIVE>
|
||
<VOC "WORM'S" ADJECTIVE>
|
||
<VOC "BUF'S" ADJECTIVE>
|
||
<VOC "RH'S" ADJECTIVE>>>
|
||
|
||
<GLOBAL FOLLOW-LOC <TABLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;16>>
|
||
|
||
<GLOBAL TOUCHED-LDESCS <TABLE 0 0 0 0 0 0 0 0 0 0 0>>
|
||
|
||
<GLOBAL FOUND-COSTUME <TABLE 0 0 0 0 0 0 0 0 0 0>>
|
||
<GLOBAL FOUND-PASSAGES <TABLE 0 0 0 0 0 0 0 0 0 0>>
|
||
<GLOBAL TOLD-ABOUT-GHOST<TABLE 0 0 0 0 0 0 0 0 0 0>>
|
||
<GLOBAL TOLD-ABOUT-EVID <TABLE 0 0 0 0 0 0 0 0 0 0>>
|
||
<GLOBAL SHOT <TABLE 0 0 0 0 0 0 0 0 0 0 0>>
|
||
|
||
<ROUTINE WHY-ME ()
|
||
<COND (<BTST ,PRESENT-TIME 1>
|
||
<TELL "\"You could do that " 'PLAYER ", you know.\"" CR>
|
||
;<TELL "\"If you think that will help, do it!\"" CR>)
|
||
(T <TELL "\"I think you can do that better " 'PLAYER ".\"" CR>)>>
|
||
|
||
<ROUTINE DESCRIBE-PERSON (PER "AUX" (STR <>))
|
||
<SET STR <GETP .PER ,P?LDESC>>
|
||
<COND (<AND <NOT <EQUAL? .PER ,BUTLER ,LOVER>>
|
||
<ALL-TOGETHER-NOW?>>
|
||
<COND (<==? .PER ,LORD>
|
||
<SETG P-HIM-OBJECT <>>
|
||
<SETG P-HER-OBJECT <>>
|
||
<TELL D .PER " and all his guests are here.">
|
||
;<COND (<AND .STR ;<NOT <==? .STR 6 ;"walking along">>>
|
||
<TELL <GET ,LDESC-STRINGS .STR>>)
|
||
(<AND <SET STR <GETPT .PER ,P?WEST>>
|
||
<SET STR <GET .STR ,NEXITSTR>>>
|
||
<TELL .STR>)
|
||
(T <TELL <GET ,LDESC-STRINGS 13>
|
||
;"lounging and chatting">)>
|
||
<COND (<AND <ZERO? ,CONFESSED>
|
||
<NOT <QUEUED? ,I-LIONEL-SPEAKS>>>
|
||
<TELL
|
||
" They smile pleasantly but, with typical British reserve, seem
|
||
willing to leave you to your own devices."
|
||
;"probably think you're no match for a ghost.">)>
|
||
<CRLF>)>
|
||
<RTRUE>)>
|
||
<COND (<AND .STR ;<NOT <==? .STR 6 ;"walking along">>>
|
||
<PUT ,TOUCHED-LDESCS <GETP .PER ,P?CHARACTER> .STR>
|
||
;<TELL <GET ,LDESC-STRINGS .STR>>
|
||
<RFALSE>)>
|
||
<TELL CTHE .PER " is ">
|
||
<COND (<AND <SET STR <GETPT .PER ,P?WEST>>
|
||
<SET STR <GET .STR ,NEXITSTR>>>
|
||
<TELL .STR>)
|
||
;(T
|
||
<TELL "looking just as you want">)>
|
||
<TELL ".">
|
||
<COND (<==? .STR 6 ;"walking along"> <PRINTC 32>)
|
||
(T <CRLF>)>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE ALL-TOGETHER-NOW? ()
|
||
<COND (<AND <EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
|
||
<EQUAL? <LOC ,FRIEND> ,HERE ,PSEUDO-OBJECT>
|
||
<EQUAL? <LOC ,DEB> ,HERE ,PSEUDO-OBJECT>
|
||
<EQUAL? <LOC ,OFFICER> ,HERE ,PSEUDO-OBJECT>
|
||
<EQUAL? <LOC ,DOCTOR> ,HERE ,PSEUDO-OBJECT>
|
||
<EQUAL? <LOC ,DEALER> ,HERE ,PSEUDO-OBJECT>
|
||
<EQUAL? <LOC ,PAINTER> ,HERE ,PSEUDO-OBJECT>>
|
||
;<MOVE ,CREW ,HERE>
|
||
;<PUTP ,LORD ,P?LDESC 13>
|
||
<RTRUE>)
|
||
(T
|
||
;<REMOVE ,CREW>
|
||
;<PUTP ,LORD ,P?LDESC 0>
|
||
<RFALSE>)>>
|
||
|
||
<GLOBAL LDESC-STRINGS
|
||
<PLTABLE "dancing"
|
||
"sipping sherry"
|
||
;3 "watching you" ;"talking quietly"
|
||
"looking at you with suspicion"
|
||
0 ;"gazing out the window"
|
||
;6 "walking along"
|
||
"sobbing quietly"
|
||
"poised to attack"
|
||
;9 "waiting patiently"
|
||
"eating with relish"
|
||
"preparing dinner"
|
||
;12 "listening to you"
|
||
"lounging and chatting"
|
||
"asleep"
|
||
;15 0 ;"reading a note"
|
||
"listening"
|
||
"preparing to leave"
|
||
;18 "deep in thought"
|
||
"out cold"
|
||
"ignoring you"
|
||
;21 "searching"
|
||
"playing the piano"
|
||
"following you"
|
||
;24 "brushing her hair"
|
||
"looking sleepy">>
|
||
|
||
<ROUTINE TELL-ABOUT-OBJECT (PER OBJ GL "AUX" C)
|
||
<COND (<T? <GET .GL ,PLAYER-C>>
|
||
<SET C <GETP .PER ,P?CHARACTER>>
|
||
<COND (<ZERO? <GET .GL .C>>
|
||
<PUT .GL .C T>
|
||
<COND (<NOT <==? .C ,VARIATION>>
|
||
<PUTP .PER ,P?LINE 0>)>
|
||
;<TELL "\"You mean you found a " D .OBJ "? ">
|
||
<RETURN <GOOD-SHOW .PER .OBJ>>)
|
||
(T <TELL"\"I know that you found a " D .OBJ ".\"" CR>)>)>>
|
||
|
||
<ROUTINE PERSON-F (PER ARG "AUX" OBJ X L C N)
|
||
<SET L <LOC .PER>>
|
||
<SET C <GETP .PER ,P?CHARACTER>>
|
||
<COND ;(<==? .ARG ,M-WINNER>
|
||
<COND (<NOT <GRAB-ATTENTION .PER>> <RFATAL>)
|
||
(<SET X <COM-CHECK .PER>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>)
|
||
(<==? .X ,M-OTHER> <RFATAL>)
|
||
(T <RTRUE>)>)
|
||
(T <WHY-ME> <RFATAL>)>)
|
||
(<VERB? ALARM SHAKE>
|
||
<COND (<==? ,PRSO .PER>
|
||
<COND (<AND <QUEUED? ,I-COME-TO>
|
||
<EQUAL? .PER ,VILLAIN-PER ,GHOST-NEW>>
|
||
<QUEUE I-COME-TO 1> ;"will respond"
|
||
<RTRUE>)
|
||
(<UNSNOOZE .PER T>
|
||
<TELL CHE .PER " gasps to see you so close!" CR>
|
||
<RTRUE>)
|
||
(T ;<VERB? SHAKE>
|
||
<TELL CHE .PER is " still ">
|
||
<COND (<SET X <GETP .PER ,P?LDESC>>
|
||
<TELL <GET ,LDESC-STRINGS .X>>)
|
||
(<SET X <GETPT .PER ,P?WEST>>
|
||
<TELL <GET .X ,NEXITSTR>>)>
|
||
<TELL "." CR>)>)>)
|
||
(<VERB? FORGIVE>
|
||
<COND (<NOT <GRAB-ATTENTION .PER>> <RFATAL>)>
|
||
<TELL "\"Thank you so much. I didn't realize I'd offended you.\"" CR>)
|
||
(<VERB? GIVE>
|
||
<COND (<AND <EQUAL? ,PRSI .PER> <HELD? ,PRSO>>
|
||
<COND (<NOT <GRAB-ATTENTION .PER>> <RFATAL>)>
|
||
<RFALSE>)>)
|
||
;(<VERB? LISTEN> ;"moved to PRE-LISTEN"
|
||
<COND (<==? <GETP .PER ,P?LDESC> 22 ;"playing the piano">
|
||
<TELL "The music sounds lovely." CR>
|
||
<RTRUE>)>)
|
||
(<VERB? LAMP-OFF>
|
||
<COND (<T? <GETP .PER ,P?LINE>>
|
||
<TELL "Seems you've already done that." CR>)
|
||
(T <WONT-HELP>)>)
|
||
(<VERB? MUNG SEARCH SEARCH-FOR>
|
||
<COND (<AND <==? .PER ,PRSO>
|
||
;<OR <NOT <==? .PER ,FRIEND>>
|
||
<EQUAL? ,VARIATION ,FRIEND-C>>
|
||
<FSET? .PER ,PERSONBIT>
|
||
<NOT <FSET? .PER ,MUNGBIT>>>
|
||
<PUTP .PER ,P?LINE <+ 1 <GETP .PER ,P?LINE>>>
|
||
<COND (<NOT <EQUAL? <GETP .PER ,P?LDESC>
|
||
4 ;"looking at you with suspicion">>
|
||
;<EQUAL? .PER ,FRIEND>
|
||
<PUTP .PER ,P?LDESC 20 ;"ignoring you">)>
|
||
<TELL
|
||
CHE .PER " pushes you away and mutters, \"I don't think that's
|
||
called for.\"" CR>
|
||
<RTRUE>)>)
|
||
(<VERB? SHOW>
|
||
<COND (<==? .PER ,PRSO>
|
||
<COND (<AND ;<NOT <EQUAL? ,PRSI ,PASSAGE>>
|
||
<NOT <GRAB-ATTENTION .PER>>>
|
||
<RFATAL>)
|
||
;(<EQUAL? ,PRSI ,LOVER>
|
||
<TELL "\"She's alive! That's incredible!\"" CR>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?TELL-ABOUT ,PRSO ,PRSI>
|
||
<RTRUE>)>)>)
|
||
(<VERB? SMILE>
|
||
<COND (<==? .PER ,PRSO>
|
||
<COND (<NOT <GRAB-ATTENTION .PER>>
|
||
<RFATAL>)
|
||
(T
|
||
<TELL CHE ,PRSO smile " back at you." CR>
|
||
<RTRUE>)>)>)
|
||
(<VERB? TELL-ABOUT>
|
||
<COND (<==? .PER ,PRSO>
|
||
<COND (<NOT <GRAB-ATTENTION .PER>>
|
||
<RFATAL>)>
|
||
<PUTP .PER ,P?LDESC 12 ;"listening to you">
|
||
<COND ;(<EQUAL? ,PRSI ,BELL>
|
||
<COND (<==? <GET <GT-O .PER> ,GOAL-FUNCTION> ,X-TO-BELL>
|
||
;"GOAL-FUNCTION is already changed by now."
|
||
<TELL "\"Oh, I see. You rang the bell.\"" CR>
|
||
<RTRUE>)>)
|
||
(<AND <FSET? ,PRSI ,RMUNGBIT>
|
||
<FSET? ,PRSI ,SEENBIT>
|
||
<NOT <FSET? ,PRSI ,PERSONBIT>>>
|
||
<PUT ,TOLD-ABOUT-EVID <GETP .PER ,P?CHARACTER> T>
|
||
<TELL ,THATS-INTERESTING>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,PRSI ,CLUE-1>
|
||
;<T? <GET ,CLUE-1-KNOWN ,PLAYER-C>>>
|
||
;<PUT ,CLUE-1-KNOWN <GETP .PER ,P?CHARACTER> T>
|
||
<TELL ,THATS-INTERESTING>
|
||
<RTRUE>)
|
||
(<EQUAL? ,PRSI ,CONFESSED>
|
||
<COND (<NOT <==? .PER ,CONFESSED>>
|
||
<TELL ,IM-SHOCKED>
|
||
<RTRUE>)>)
|
||
(<EQUAL? ,PRSI ,GHOST-NEW>
|
||
<COND (<AND <FSET? ,GHOST-NEW ,TOUCHBIT>
|
||
<NOT <==? .PER ,GHOST-NEW>>>
|
||
<PUT ,TOLD-ABOUT-GHOST <GETP .PER ,P?CHARACTER> T>
|
||
<TELL
|
||
"\"You saw the ghost? Tell me, how can I help?\"" CR>
|
||
<RTRUE>)>)
|
||
(<SECRET-PASSAGE-OR-DOOR? ,PRSI>
|
||
<TELL-ABOUT-OBJECT ,PRSO ,PASSAGE ,FOUND-PASSAGES>
|
||
<RTRUE>)>
|
||
<TELL "\"I don't know what you mean.\"" CR>)>)
|
||
(<VERB? THROW-AT>
|
||
<COND (<AND <==? .PER ,PRSI>
|
||
<FSET? .PER ,PERSONBIT>
|
||
<NOT <FSET? .PER ,MUNGBIT>>>
|
||
<MOVE ,PRSO ,PRSI>
|
||
<TELL CHE .PER " catches" THE ,PRSO " with" HIS .PER !\ >
|
||
<COND (<EQUAL? .PER ,DEB ,DOCTOR ;,DEALER> <TELL "lef">)
|
||
(T <TELL "righ">)>
|
||
<TELL "t hand." CR>
|
||
<RTRUE>)>)
|
||
;(<SET OBJ <ASKING-ABOUT? .PER>>
|
||
<COND (<NOT <GRAB-ATTENTION .PER>>
|
||
<RFATAL>)
|
||
;(<SET X <COMMON-ASK-ABOUT .PER .OBJ>>
|
||
<COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
|
||
(T <DONT-KNOW .PER .OBJ>)>)
|
||
(T <COMMON-OTHER .PER>)>>
|
||
|
||
<ROUTINE SECRET-PASSAGE-OR-DOOR? (OBJ)
|
||
<COND (<EQUAL? .OBJ ,PASSAGE ,SECRET-JACK-DOOR ,SECRET-TAMARA-DOOR
|
||
,SECRET-LIBRARY-DOOR ,SECRET-DRAWING-DOOR
|
||
,SECRET-SITTING-DOOR ,SECRET-DINING-DOOR
|
||
,SECRET-YOUR-DOOR ,SECRET-IRIS-DOOR
|
||
,SECRET-WENDISH-DOOR ,SECRET-VIVIEN-DOOR
|
||
,SECRET-IAN-DOOR ,SECRET-HYDE-DOOR>
|
||
<RTRUE>)>>
|
||
|
||
"People Functions"
|
||
|
||
<ROUTINE CARRY-CHECK (PER)
|
||
<COND (<FIRST? .PER>
|
||
<TELL CHE .PER is " holding">
|
||
<PRINT-CONTENTS .PER>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE WINNER-DESCRIBE (OBJ RM)
|
||
<TELL "\"You can see " D .OBJ>
|
||
<COND (<==? ,HERE .RM>
|
||
<TELL " right over there">)
|
||
(T <TELL " in the " D .RM>)>
|
||
<TELL ".\"" CR>>
|
||
|
||
<ROUTINE TRANSIT-TEST (PER)
|
||
<COND (<OR <VERB? DISEMBARK LEAVE TAKE-TO THROUGH WALK WALK-TO>
|
||
;<AND <VERB? FOLLOW>
|
||
<DOBJ? PLAYER>>>
|
||
<WILLING? .PER>)>>
|
||
|
||
<GLOBAL FAWNING:FLAG <>>
|
||
<ROUTINE COM-CHECK (PER "AUX" N TAG)
|
||
<SET N <GETP .PER ,P?LINE>>
|
||
<SET TAG <GET ,TOLD-ABOUT-GHOST <GETP .PER ,P?CHARACTER>>>
|
||
;"First section is w/o fawning."
|
||
<COND (<VERB? $CALL> ;"e.g. TAMARA, LOVE ME"
|
||
<DONT-UNDERSTAND>
|
||
<RETURN ,M-OTHER>)
|
||
(<TRANSIT-TEST .PER>
|
||
;<COND (<OR <EQUAL? ,HERE ,DINING-ROOM>
|
||
<QUEUED? ,I-TOUR>>
|
||
<TELL "\"Not just now.\"" CR>
|
||
<RTRUE>)>
|
||
<RFATAL>)
|
||
(<VERB? ALARM HELLO SORRY>
|
||
<COND (<OR <DOBJ? ROOMS> <==? ,PRSO .PER>>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,PRSA .PER>
|
||
<RTRUE>)
|
||
(T <RFALSE>)>)
|
||
;(<AND <L? 0 .N>
|
||
;<OR <NOT <==? .PER ,FRIEND>>
|
||
<EQUAL? ,VARIATION ,FRIEND-C>>>
|
||
<TELL "\"I'm too ">
|
||
<COND (<1? .N> <TELL "peeved">) (T <TELL "angry">)>
|
||
<TELL " with you now.\"" CR>
|
||
<RTRUE>)
|
||
(<VERB? ARREST NO THANKS YES>
|
||
<RFATAL> ;"let thru to next handler")
|
||
(<VERB? DESCRIBE>
|
||
<COND (<DOBJ? GHOST-NEW>
|
||
<TELL
|
||
"\"I'm sorry, but I didn't see" HIM ,GHOST-NEW ".\"" CR>
|
||
<RTRUE>)
|
||
(<DOBJ? MAID>
|
||
<TELL ,NEVER-NOTICED-HER>
|
||
;<TELL "\"I've never really noticed" HIM ,PRSO ".\"" CR>
|
||
<RTRUE>)
|
||
(<DOBJ? COUSIN BUST ;RECORDER>
|
||
<WINNER-DESCRIBE ,BUST ,DINING-ROOM>
|
||
<RTRUE>)
|
||
(<DOBJ? LOVER>
|
||
<WINNER-DESCRIBE ,LOVER-PIC ,DRAWING-ROOM>
|
||
<RTRUE>)
|
||
;(<DOBJ? TREASURE>
|
||
<RFALSE>)
|
||
(T
|
||
<TELL "\"You could ">
|
||
<COND (<NOT <EQUAL? <META-LOC ,PRSO> ,HERE>>
|
||
<TELL "go ">)>
|
||
<TELL "have a look for " 'PLAYER ", you know.\"" CR>
|
||
<RTRUE>)>)
|
||
(<VERB? FOLLOW WALK-TO>
|
||
<COND (<==? .PER ,BUTLER>
|
||
<RFALSE>)
|
||
(<AND <VERB? WALK-TO>
|
||
<OR <T? .TAG>
|
||
<DOBJ? SLEEP-GLOBAL BED TAMARA-BED>>>
|
||
<RFATAL>)
|
||
(T
|
||
<TELL
|
||
"\"I will go where I please, thank you very much.\"" CR>
|
||
<RTRUE>)>)
|
||
(<VERB? INVENTORY>
|
||
<COND (<NOT <CARRY-CHECK .PER>>
|
||
<TELL CHE .PER is "n't holding anything." CR>)>
|
||
<RTRUE>)
|
||
(<VERB? LISTEN>
|
||
<COND (<OR <DOBJ? PLAYER PLAYER-NAME>
|
||
<NOT <IN? ,PRSO ,GLOBAL-OBJECTS>>>
|
||
<TELL "\"I'm trying to, " FN "!\"" CR>
|
||
<RTRUE>)
|
||
(T <RFALSE>)>)
|
||
(<VERB? RUB>
|
||
<FACE-RED>
|
||
<RTRUE>)>
|
||
<COND (<AND <1? <RANDOM 3>>
|
||
<WILLING? .PER T>>
|
||
<COND (<EQUAL? .PER ,DEB>
|
||
<SETG FAWNING T>
|
||
<TELL
|
||
"\"My dear "FN", how could I refuse someone
|
||
as handsome as you?\" Iris murmurs, batting her eyelashes. ">)
|
||
(<EQUAL? .PER ,OFFICER>
|
||
<SETG FAWNING T>
|
||
<TELL
|
||
"\"Delighted to help you if I can, "FN" luv! One feels those
|
||
great luminous eyes of yours can see right through a chap!\" says the
|
||
handsome young guardsman. ">)>)>
|
||
<COND (<AND <VERB? DANCE> <DOBJ? PLAYER>>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,PRSA .PER>
|
||
<RTRUE>)
|
||
(<OR <VERB? DANCE ;GOODBYE>
|
||
<AND <VERB? WALK>
|
||
<OR <DOBJ? P?OUT>
|
||
<T? .TAG>>>>
|
||
<COND ;(<==? .PER ,GHOST-NEW>
|
||
<TELL "\"Don't be silly.\"" CR>
|
||
<RTRUE>)
|
||
(T
|
||
;<TELL "\"As you wish.\"" CR>
|
||
<RFATAL> ;"let thru to next handler")>)
|
||
(<VERB? SIGN>
|
||
<TELL "You notice that" HE .PER " is ">
|
||
<COND (<EQUAL? .PER ,DEB ,DOCTOR ;,DEALER> <TELL "lef">)
|
||
(T <TELL "righ">)>
|
||
<TELL "t-handed." CR>)
|
||
(<VERB? KISS>
|
||
<UNSNOOZE .PER>
|
||
<TELL
|
||
"\"I really don't think this is the proper time or place.\"" CR>)
|
||
;(<VERB? WALK-TO>
|
||
<COND (<DOBJ? HERE GLOBAL-HERE>
|
||
<TELL "\"I am here, "TN"!\"" CR>)>)
|
||
(<VERB? TAKE ;"GET SEND SEND-TO BRING">
|
||
<COND (<IN? ,PRSO ,PLAYER>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?GIVE ,PRSO .PER>
|
||
<RTRUE>)>)
|
||
(<VERB? EXAMINE LOOK-INSIDE READ>
|
||
<COND (<IN? ,PRSO ,PLAYER>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?SHOW .PER ,PRSO>
|
||
<RTRUE>)>)
|
||
(<VERB? FORGIVE>
|
||
<SETG WINNER ,PRSO>
|
||
<PERFORM ,V?SORRY .PER>
|
||
<RTRUE>)
|
||
(<AND <VERB? GIVE THROW-AT> <FSET? ,PRSI ,PERSONBIT>>
|
||
<SETG WINNER ,PRSI>
|
||
<PERFORM ,V?ASK-FOR .PER ,PRSO>
|
||
<RTRUE>)
|
||
(<AND <VERB? SGIVE> <FSET? ,PRSO ,PERSONBIT>>
|
||
<SETG WINNER ,PRSO>
|
||
<PERFORM ,V?ASK-FOR .PER ,PRSI>
|
||
<RTRUE>)
|
||
(<VERB? HELP>
|
||
<COND (<EQUAL? ,PRSO <> ,PLAYER ,PLAYER-NAME>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?ASK .PER>
|
||
<RTRUE>)
|
||
(T <RFATAL>)>)
|
||
(<VERB? FIND SHOW SSHOW>
|
||
<COND (<VERB? SHOW>
|
||
<SETG PRSA ,V?SSHOW>
|
||
<SET N ,PRSI>
|
||
<SETG PRSI ,PRSO>
|
||
<SETG PRSO .N>)>
|
||
<COND (<IN? ,PRSO ,ROOMS> ;"SHOW ME MY ROOM"
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?WALK-TO ,PRSO>
|
||
<RTRUE>)
|
||
(<IN? ,PRSO .PER>
|
||
<COND (<==? <ITAKE> T>
|
||
<TELL
|
||
CHE .PER " fumbles in" HIS .PER " pocket and produces" HIM ,PRSO "." CR>)>
|
||
<RTRUE>)
|
||
(<VERB? FIND>
|
||
;<SETG WINNER ,PLAYER>
|
||
;<PERFORM ,PRSA ,PRSO>
|
||
<RFATAL>)>)
|
||
(<VERB? PLAY>
|
||
<COND (<DOBJ? PIANO>
|
||
<TELL
|
||
"\"I'm not very good at this sort of thing, but...\"|">
|
||
<RFATAL>)
|
||
(T <RFALSE>)>)
|
||
(<VERB? TELL>
|
||
<COND (<DOBJ? PLAYER PLAYER-NAME>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?ASK .PER>
|
||
<RTRUE>)>)
|
||
(<VERB? TELL-ABOUT>
|
||
<COND (<FSET? ,PRSO ,PERSONBIT>
|
||
;<DOBJ? PLAYER PLAYER-NAME>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?ASK-ABOUT .PER ,PRSI>
|
||
<RTRUE>)>)
|
||
(<VERB? STOP WAIT-FOR>
|
||
<COND (<DOBJ? HERE GLOBAL-HERE PLAYER PLAYER-NAME ROOMS>
|
||
<COND (<==? .PER ,FOLLOWER>
|
||
<SETG FOLLOWER 0>
|
||
<TELL "\"As you wish, ">
|
||
<COND (<PRINT-NAME ,FIRST-NAME> <TELL !\.>)>
|
||
<TELL "\"" CR>)
|
||
(T
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?$CALL .PER>
|
||
<RTRUE>)>)>)
|
||
(<VERB? ;WHAT TALK-ABOUT>
|
||
<SETG WINNER ,PLAYER>
|
||
<PERFORM ,V?ASK-ABOUT .PER ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<GLOBAL NEVER-NOTICED-HER "\"I can't say that I ever noticed her much.\"|">
|
||
|
||
<ROUTINE EVIDENCE? (OBJ "OPTIONAL" (PER 0))
|
||
<COND (<AND <T? .PER>
|
||
<NOT <EQUAL? ,VARIATION <GETP .PER ,P?CHARACTER>>>>
|
||
<RFALSE>)
|
||
(<EQUAL? .OBJ ,LETTER-MAID ,PASSAGE ,JEWEL>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,LENS ,LENS-1 ,LENS-2>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,COSTUME ,LENS-BOX ,EARRING>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,BLOWGUN>
|
||
<RTRUE>)
|
||
(<AND <T? .OBJ>
|
||
<NOT <FSET? .OBJ ,PERSONBIT>>
|
||
<FSET? .OBJ ,RMUNGBIT> ;"evidence">
|
||
<RTRUE>)>>
|
||
|
||
<GLOBAL IM-SHOCKED "\"I'm shocked!\"|">
|
||
<GLOBAL THATS-INTERESTING "\"Hmm... That certainly is interesting.\"|">
|
||
<GLOBAL ANCIENT-SECRETS
|
||
"\"Yes, the oldest parts of the castle hold ancient secrets,
|
||
some fascinating and some not.\"">
|
||
|
||
<ROUTINE SETUP-SHOT (PER)
|
||
<SETG VILLAIN-KNOWN? T>
|
||
<MOVE ,BLOWGUN .PER>
|
||
<FCLEAR ,BLOWGUN ,NDESCBIT>
|
||
<FCLEAR ,BLOWGUN ,TAKEBIT>
|
||
<PUTP .PER ,P?LINE 2>
|
||
<PUTP .PER ,P?LDESC 8 ;"poised to attack">
|
||
<SETG AIMED-HERE ,HERE>
|
||
<SETG SHOOTER .PER>
|
||
<QUEUE I-SHOT ,CLOCKER-RUNNING ;2>>
|
||
|
||
<ROUTINE COMMON-ASK-ABOUT (PER OBJ)
|
||
%<DEBUG-CODE <COND (,DBUG <TELL "{CAB: " D .PER !\/ D .OBJ "}|">)>>
|
||
<COND (<EVIDENCE? .OBJ .PER>
|
||
<TELL CHE .PER " flinches a little before answering.|">)
|
||
(<EVIDENCE? .OBJ>
|
||
<COND (<T? ,CONFESSED>
|
||
<TELL ,IM-SHOCKED>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL CHE .PER " says, \"">
|
||
<COND (<1? <RANDOM 2>>
|
||
<TELL "Good Lord">)
|
||
(T <TELL "I say">)>
|
||
<TELL "! I think you're onto something here.\"" CR>
|
||
<RTRUE>)>)>
|
||
<COND (<AND <FSET? .OBJ ,RMUNGBIT> ;"evidence"
|
||
<VERB? CONFRONT SHOW>
|
||
<NOT <FSET? .OBJ ,PERSONBIT>>>
|
||
<PUT ,TOLD-ABOUT-EVID <GETP .PER ,P?CHARACTER> T>)>
|
||
<COND (<AND <EQUAL? .OBJ ,SEARCHER>
|
||
<==? <GETP .OBJ ,P?LDESC> 21 ;"searching">>
|
||
<COND (<EQUAL? .PER ,SEARCHER>
|
||
<TELL
|
||
"\"You mean, why am I searching? I'm sure you can guess.\"" CR>)
|
||
(T
|
||
<TELL "\"I imagine that " D .OBJ " is searching because">
|
||
<THIS-IS-IT .OBJ>
|
||
<TELL
|
||
HE .OBJ " got a bright idea. I prefer to let our" ,FAMOUS-YOUNG-DETECTIVE
|
||
" do the work.\"" CR>)>)
|
||
(<EQUAL? .OBJ .PER>
|
||
<TELL "\"I have no secrets. Anyone can see what I am.\"" CR>)
|
||
(<EQUAL? .OBJ ,PLAYER ,PLAYER-NAME>
|
||
<TELL "\"You're ">
|
||
<TELL-FULL-NAME>
|
||
<TELL ", the" ,FAMOUS-YOUNG-DETECTIVE ".\"" CR>)
|
||
(<EQUAL? .OBJ ,BUTLER>
|
||
<TELL "\"He's served the family all his life.\"" CR>)
|
||
(<EQUAL? .OBJ ,LOVER>
|
||
<TELL "\"Poor thing, her life came to a sad ending.">
|
||
<COND (<==? .PER ,DOCTOR>
|
||
<TELL " As did her grandfather, whom I treated at my clinic.">)>
|
||
<TELL "\"" CR>)
|
||
(<EQUAL? .OBJ ,COUSIN ,BUST ;,RECORDER>
|
||
<COND (T ;<NOT <EQUAL? .PER ,BUTLER ,PAINTER>>
|
||
<TELL "\"He was a bit of a strange bird, was Lionel.\"" CR>)>)
|
||
(<EQUAL? .OBJ ,GHOST-NEW ,DANGER ,HAUNTING>
|
||
<TELL "\"I myself haven't seen" HIM ,GHOST-NEW ".\"" CR>)
|
||
(<EQUAL? .OBJ ,GHOST-OLD>
|
||
<TELL
|
||
"\"Oh, she has haunted " 'CASTLE " for centuries -- a lovely phantom in
|
||
a white gown, with long pale hair. She was said to be the unfaithful
|
||
wife of an early Lord " ,TRESYLLIAN ", who had her walled up alive in
|
||
the tower.\""
|
||
;" Her spirit was sometimes seen at night, until poor "
|
||
;"they finally un-walled her bones and gave them decent burial. After
|
||
that, the haunting stopped -- until a couple of months ago, when poor
|
||
'LOVER Hallam drowned in the castle well.\""
|
||
;" That was just before 'LORD hired me to catalog the castle library." CR>)
|
||
(<EQUAL? .OBJ ,MAID>
|
||
<TELL ,NEVER-NOTICED-HER>
|
||
<RTRUE>)
|
||
(<FSET? .OBJ ,PERSONBIT>
|
||
<RFALSE>)
|
||
(<AND <EQUAL? ,VARIATION <GETP .PER ,P?CHARACTER>>
|
||
<OR <FSET? .OBJ ,RMUNGBIT> ;"evidence"
|
||
<EQUAL? .OBJ ,BLOWGUN ;,COSTUME>>>
|
||
;<PUT ,TOLD-ABOUT-EVID <GETP .PER ,P?CHARACTER> T> ;"done above"
|
||
<PUTP .PER ,P?LINE 2> ;"angry"
|
||
<TELL
|
||
"\"What can I say?\"" HE .PER " shrugs. \"It's a fair cop. You've caught
|
||
me with damning evidence.">
|
||
<COND (<OR <EQUAL? ,VARIATION ,FRIEND-C ,LORD-C>
|
||
<NOT <EQUAL? ,HERE <GET ,CHAR-ROOM-TABLE
|
||
<+ 1 <GETP .PER ,P?CHARACTER>>>>>
|
||
<FIND-FLAG-HERE ,PERSONBIT ,PLAYER .PER>>
|
||
<TELL "\"" CR>
|
||
<RTRUE>)>
|
||
<COND (<IN? ,BLOWGUN .PER>
|
||
<TELL "\" " CHE .PER>)
|
||
(T
|
||
<TELL " But there's something you don't know yet">
|
||
<IAN-CALLS-YOU>
|
||
<TELL
|
||
", which may put the matter in a different light.\"|
|
||
Still smiling," HE .PER " puts" HIS .PER " hand into" THE ,HIDING-PLACE
|
||
", and">)>
|
||
<COND (<EQUAL? <LOC ,BLOWGUN> .PER ,HIDING-PLACE>
|
||
<SETG DISCOVERED-HERE ,HERE>
|
||
<SETUP-SHOT .PER>
|
||
<COND (<NOT <FSET? ,BLOWGUN ,NDESCBIT>>
|
||
;<VERB? GIVE SGIVE>
|
||
<TELL " takes">)
|
||
(T
|
||
<FCLEAR ,BLOWGUN ,NDESCBIT>
|
||
<TELL " suddenly extracts">)>
|
||
<TELL THE ,BLOWGUN " and aims it at you!" CR>
|
||
<RTRUE>)
|
||
(T
|
||
;<FSET? ,BLOWGUN ,TOUCHBIT>
|
||
<TELL
|
||
HIS .PER " jaw drops as" HIS .PER " hand comes out, empty." CR>
|
||
<RTRUE>)>)
|
||
(<EQUAL? .OBJ ,ACCIDENT>
|
||
<TELL "\"You'd best ask Jack about that, or " 'BUTLER ".\"" CR>)
|
||
(<EQUAL? .OBJ ,BELL>
|
||
<TELL
|
||
"\"It's actually a ship's bell off an old British man-o'-war.\""
|
||
;" that was part of Nelson's fleet at Trafalgar.\"" CR>)
|
||
(<AND <EQUAL? .PER ,SEARCHER>
|
||
<ZERO? ,LIONEL-SPEAKS-COUNTER>
|
||
<SHOWING-CLUE? .OBJ>
|
||
<NOT <VERB? ASK-ABOUT>>>
|
||
<QUEUE I-SEARCH 1>
|
||
<TELL ,THATS-INTERESTING>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,CORPSE>
|
||
<TELL
|
||
!\" 'CORPSE " was never recovered from the well. They think it
|
||
was carried out to sea by an underground tidal stream.\"" CR>)
|
||
(<AND <EQUAL? .OBJ ,COSTUME ,BLOWGUN ,LENS-BOX>
|
||
<OR <AND <EQUAL? .PER ,PAINTER ,DOCTOR> ;"lie"
|
||
<EQUAL? ,VARIATION <GETP .PER ,P?CHARACTER>>>
|
||
<AND <EQUAL? .PER ,DEB> ;"truth"
|
||
<EQUAL? ,VARIATION ,FRIEND-C>>>
|
||
;<EQUAL? ,VARIATION <GETP .PER ,P?CHARACTER>>>
|
||
<SET OBJ <GET ,CHAR-ROOM-TABLE <+ 1 <GETP .PER ,P?CHARACTER>>>>
|
||
<TELL D .PER "'s look changes to a puzzled and angry frown. ">
|
||
<COND (<NOT <EQUAL? .PER ,LORD ,FRIEND>>
|
||
<TELL "\"You mean you found that ">
|
||
<COND (<EQUAL? ,HERE .OBJ> <TELL "here ">)>
|
||
<TELL "in my room?\"" HE .PER " gasps. ">)>
|
||
<TELL
|
||
"\"How can I explain it when it doesn't belong to me? If you didn't
|
||
bring it ">
|
||
<COND (<NOT <EQUAL? ,HERE .OBJ>> <TELL !\t>)>
|
||
<TELL
|
||
"here " 'PLAYER ", then someone else planted it, trying to frame me as
|
||
the maniac who's been posing as " 'LOVER "'s ghost!\"" CR>)
|
||
(<EQUAL? .OBJ ,COSTUME>
|
||
<COND (<T? <GET ,FOUND-COSTUME ,PLAYER-C>>
|
||
<TELL "\"So that's how ">
|
||
<COND (<ZERO? ,CONFESSED>
|
||
<TELL "somebody">)
|
||
(T <TELL 'VILLAIN-PER>)>
|
||
<TELL " posed as a ghost!\"" CR>)>)
|
||
(<EQUAL? .OBJ ,DINNER ,DINNER-2 ;,DINNER-3>
|
||
<COND (<L? ,PRESENT-TIME ,DINNER-TIME>
|
||
<TELL "\"Tonight's a dinner in honor of ">
|
||
<COND (<==? .PER ,BUTLER>
|
||
<TELL "the late Lord ">)>
|
||
<TELL
|
||
"Lionel's birthday. In his will, he asked for these particular guests --
|
||
except ">
|
||
<COND (<==? .PER ,FRIEND> <TELL "me">)
|
||
(T <PRINTD ,FRIEND>)>
|
||
<TELL ", of course. It's at eight o'clock">
|
||
<COND (<NOT <==? .PER ,BUTLER>>
|
||
<TELL " -- or whenever " 'BUTLER " gets 'round to it">)>
|
||
<TELL ".\"" CR>)
|
||
(<EQUAL? <META-LOC ,DINNER> ,HERE>
|
||
<TELL "\"It looks delicious!\"" CR>)
|
||
(T
|
||
<COND (<==? <GETP .PER ,P?LDESC> 10 ;"eating with relish">
|
||
<TELL "\"I'm enjoying">)
|
||
(T <TELL "\"I enjoyed">)>
|
||
<TELL " it immensely.">
|
||
<COND (<T? ,MISSED-DINNER>
|
||
<TELL
|
||
" We started without you, as we assumed you were sleuthing.">)>
|
||
<TELL "\"" CR>)>)
|
||
(<OR <EQUAL? .OBJ ,BRICKS ,COFFIN ,CRYPT>
|
||
<EQUAL? .OBJ ,DUNGEON ,IRON-MAIDEN ,TOMB>
|
||
<EQUAL? .OBJ ,WELL>>
|
||
<TELL ,ANCIENT-SECRETS CR>)
|
||
(<EQUAL? .OBJ ,JEWEL>
|
||
<TELL CHE .PER>
|
||
<COND (<AND <==? .PER ,FRIEND>
|
||
<FSET? ,EARRING ,LOCKED>> ;"matched to stone"
|
||
<TELL
|
||
" says, \"Oh, thank you for finding it! I've looked everywhere!\"" CR>
|
||
<RTRUE>)
|
||
(<==? ,HERE <META-LOC ,JEWEL>>
|
||
<TELL " looks at it with interest">
|
||
<COND (<EQUAL? .PER ,DEALER>
|
||
<TELL ", putting a monocle in one eye to see better">)>)
|
||
(T
|
||
<TELL " listens to your description of it">)>
|
||
<TELL ". But" HE .PER " says" HE .PER " can't identify it." CR>)
|
||
(<EQUAL? .OBJ ,LAMP>
|
||
<TELL "\"I think " 'BUTLER " keeps">
|
||
<IN-CASE-OF-BLACKOUT>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? .OBJ ,LUGGAGE>
|
||
<IN? ,LUGGAGE ,BUTLER>>
|
||
<TELL "\"Don't panic.">
|
||
<BOLITHO-WILL>
|
||
<TELL ".\"" CR>)
|
||
(<EQUAL? .OBJ ,MACE>
|
||
<TELL "\"That is a long story, ">
|
||
<COND (<TITLE-NAME> <TELL !\.>)>
|
||
<TELL
|
||
" When Lord Lionel was alive, he had a pit bulldog to protect the
|
||
castle. A right vicious brute it was, too! Several
|
||
times it attacked the servants, so the master gave out
|
||
these " 'MACE "s. Just press the button on the side, and it sprays
|
||
something foul. It always
|
||
worked a treat on that wretched dog, and I daresay it could stop a
|
||
ghost just as well.\"" CR>)
|
||
(<EQUAL? .OBJ ,NECKLACE-OF-D>
|
||
<TELL "\"The police returned it to ">
|
||
<COND (<==? .PER ,LORD> <TELL "me">) (T <TELL 'LORD>)>
|
||
<TELL " after the inquest.\"" CR>)
|
||
(<SECRET-PASSAGE-OR-DOOR? .OBJ>
|
||
<TELL-ABOUT-OBJECT .PER ,PASSAGE ,FOUND-PASSAGES>)
|
||
;(<EQUAL? .OBJ ,SERVANTS-QUARTERS>
|
||
<COND (<IN? ,LETTER .PER>
|
||
<MOVE ,LETTER ,WINNER>
|
||
<TELL
|
||
"\"Just read this.\" " CHE .PER " hands you" THE ,LETTER "." CR>)
|
||
(T <TELL "\"Just read the " 'LETTER ".\"" CR>)>)
|
||
(<EQUAL? .OBJ ,SKELETON>
|
||
<TELL
|
||
"\"Ugh! Those must be the bones of the " 'GHOST-OLD "!\""
|
||
;"very first Lady Tresyllian. I suppose Lionel was morbid indeed if he
|
||
moved her bones here from the village.\"" CR>)
|
||
(<TREASURE-FOUND? .OBJ .PER>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,YOUR-ROOM>
|
||
<TELL
|
||
"\"It's fortunate that one bedroom was available for you.\"" CR>)
|
||
(<OR <EQUAL? .OBJ ,CASTLE>
|
||
<IN? .OBJ ,ROOMS>>
|
||
<TELL "\"Oh, it is a lovely piece of real estate, ">
|
||
<COND (<EQUAL? .PER ,FRIEND>
|
||
<TELL "isn't it">)
|
||
(T <TELL "what">)>
|
||
<TELL !\?>
|
||
<COND (<EQUAL? .PER ,DOCTOR ,PAINTER ,DEALER>
|
||
<TELL " Almost a shame to admit riffraff on weekends.">)>
|
||
<TELL "\"" CR>)
|
||
(<IN? .OBJ .PER>
|
||
<TELL "\"I have it right here, ">
|
||
<COND (<TITLE-NAME> <TELL !\.>)>
|
||
<TELL "\"" CR>)>>
|
||
|
||
<ROUTINE SHOWING-CLUE? (OBJ)
|
||
<COND (<EQUAL? .OBJ ,CLUE-1 ,CLUE-2>
|
||
<RTRUE>)
|
||
(<EQUAL? .OBJ ,CLUE-3 ,CLUE-4>
|
||
<RTRUE>)
|
||
(<AND <==? .OBJ ,MAGAZINE>
|
||
<EQUAL? ,VARIATION ,PAINTER-C>>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE TREASURE-FOUND? (OBJ PER "AUX" X)
|
||
<COND (<AND ;<T? ,CLUE-1-KNOWN>
|
||
<OR <==? .OBJ ,TREASURE>
|
||
;<AND <==? .OBJ ,BOTTLE> <IN? ,MOONMIST ,BOTTLE>>
|
||
<AND <==? .OBJ ,INKWELL> <IN? ,MOONMIST ,INKWELL>>>>
|
||
;<SETG TREASURE-FOUND .OBJ>
|
||
<FCLEAR .OBJ ,SECRETBIT>
|
||
<TELL "\"That must be the " 'ARTIFACT "!">
|
||
<SET X <TELL-STOP-SEARCHING? .PER>>
|
||
<TELL "\"|">
|
||
<COND (<OR <IN? <SET PER ,FRIEND> ,HERE>
|
||
<IN? <SET PER ,LORD> ,HERE>>
|
||
<COND (<NOT <==? .PER ,CONFESSED>>
|
||
;<SET OBJ <GT-O .PER>>
|
||
<PUTP .PER ,P?LINE 0>
|
||
<THIS-IS-IT .PER>
|
||
<TELL
|
||
"\"That's super!\" adds " D .PER ". \"We can't thank you enough!">
|
||
<COND (<ZERO? .X>
|
||
<SET X <TELL-STOP-SEARCHING? .PER>>)>
|
||
<TELL "\"|">)>)>
|
||
<COND (<AND <IN? ,SEARCHER ,HERE>
|
||
<ZERO? .X>
|
||
<TELL-STOP-SEARCHING? ,SEARCHER T T>>
|
||
<TELL "\" says " D ,SEARCHER ".|">)>
|
||
<COND (<AND ;<T? ,CLUE-1-KNOWN>
|
||
<ZERO? ,TREASURE-FOUND>>
|
||
<CONGRATS ,ARTIFACT>)>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE TELL-STOP-SEARCHING? (PER "OPT" (COMMA <>) (NOSP <>) "AUX" OBJ)
|
||
<COND (<AND <EQUAL? .PER ,SEARCHER>
|
||
<==? <GET <SET OBJ <GT-O .PER>> ,GOAL-FUNCTION>
|
||
,X-SEARCHES>>
|
||
<PUT .OBJ ,GOAL-FUNCTION ,NULL-F>
|
||
;<SETG SEARCHER <>>
|
||
;<QUEUE I-SEARCH 0>
|
||
<COND (<ZERO? .NOSP> <TELL !\ >)
|
||
(T <TELL !\">)>
|
||
<TELL "Then that's the end of my searching">
|
||
<COND (<T? .COMMA> <TELL !\,>)
|
||
(T <TELL !\.>)>
|
||
<COND (<OR <NOT <SET OBJ <ZMEMQ ,HERE ,CHAR-ROOM-TABLE>>>
|
||
<NOT <==? .PER <GET ,CHARACTER-TABLE <- .OBJ 1>>>>>
|
||
<ESTABLISH-GOAL .PER ,SITTING-ROOM>)>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE GOOD-SHOW (PER OBJ)
|
||
<COND (<EQUAL? .PER ,GHOST-NEW ,CONFESSED>
|
||
<RFALSE>)>
|
||
<TELL !\">
|
||
<COND (<==? ,VARIATION <GETP .PER ,P?CHARACTER>>
|
||
<TELL "How nice">)
|
||
(<==? .PER ,FRIEND>
|
||
<TELL "That's keen">)
|
||
(<1? <RANDOM 2>>
|
||
<TELL "Well done">)
|
||
(T <TELL "Good show">)>
|
||
<TELL "! You found " A .OBJ !\!>
|
||
<COND (<==? .OBJ ,TREASURE>
|
||
<TELL-STOP-SEARCHING? .PER T>)>
|
||
<TELL "\" says " D .PER "." CR>>
|
||
|
||
;<ROUTINE DISCRETION (P1 P2 ;"OPTIONAL" ;(P3 <>) "AUX" L2 ;L3)
|
||
<SET L2 <META-LOC .P2>>
|
||
;<COND (<T? .P3> <SET L3 <META-LOC .P3>>)>
|
||
<COND (<NOT <==? ,HERE .L2>>
|
||
<COND ;(<AND .P3 <==? ,HERE .L3>>
|
||
<SET P2 .P3>
|
||
<SET P3 <>>)
|
||
(T <RFALSE>)>)>
|
||
<TELL CHE .P1 " looks briefly toward" HIM .P2>
|
||
;<COND (<AND .P3 <==? ,HERE .L3>>
|
||
<TELL " and" HIM .P3>)>
|
||
<TELL " and then speaks in a whisper." CR>>
|
||
|
||
<ROUTINE COMMON-DESC (PER)
|
||
<TELL "He's a ">
|
||
<COND (<==? .PER ,DOCTOR>
|
||
<TELL "middle-sized man in his fifties">
|
||
<COND (<IN? ,MUSTACHE ,DOCTOR> ;<ZERO? ,WENDISH-BARE>
|
||
<TELL ", with spectacles and a grizzled mustache">)>
|
||
<TELL "." CR>
|
||
<RTRUE>)>
|
||
<TELL "tall">
|
||
<COND (<==? .PER ,LORD>
|
||
<TELL ", handsome, dark-browed young man">
|
||
<COND (<G? ,BED-TIME ,PRESENT-TIME>
|
||
<TELL " in dinner jacket and black tie">)>)
|
||
(<==? .PER ,OFFICER>
|
||
<TELL " blond">
|
||
<COND (<G? ,BED-TIME ,PRESENT-TIME>
|
||
<TELL
|
||
", sporting a white dinner jacket and
|
||
scarlet cummerbund. He moves with the elegant swagger of a
|
||
Guards officer and young-man-about-Mayfair, both of which he is">)>)
|
||
(<==? .PER ,DEALER>
|
||
<TELL ", foppish art and antiques dealer">
|
||
<COND (<NOT <FSET? .PER ,MUNGBIT>>
|
||
<TELL
|
||
". Despite his languid
|
||
manner, you're aware of his penetrating glance. If you were
|
||
buying a used car from this man, you'd want to check it out carefully">)>)>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE COMMON-OTHER (PER "AUX" (X <>) N)
|
||
<COND (<VERB? ASK> <RFALSE>)
|
||
(<VERB? EXAMINE>
|
||
<COND (<OR <EQUAL? .PER ,DOCTOR>
|
||
<EQUAL? .PER ,LORD ,OFFICER ,DEALER>>
|
||
<COMMON-DESC .PER>)
|
||
(<NOT <==? .PER ,GHOST-NEW>>
|
||
<TELL <GETP .PER ,P?TEXT> CR>)>
|
||
;<THIS-IS-IT .PER>
|
||
<COND (<AND <IN? .PER ,HERE>
|
||
<SET N <FIRST? .PER>>
|
||
<NOT <FSET? .N ,NDESCBIT>>>
|
||
<COND (<CARRY-CHECK .PER>
|
||
<SET X T>)>)>
|
||
<COND (<FSET? .PER ,MUNGBIT>
|
||
<COND (<NOT <ZERO? .X>> <TELL "And">)>
|
||
<HE-SHE-IT .PER <NOT .X> "is">
|
||
;<SET X T>
|
||
<PRINTC 32>
|
||
<TELL <GET ,LDESC-STRINGS <GETP .PER ,P?LDESC>> "." CR>)
|
||
;(<NOT <FSET? .PER ,PERSONBIT>>
|
||
<COND (<NOT <ZERO? .X>> <TELL "And">)>
|
||
<FSET .PER ,PERSONBIT>
|
||
<HE-SHE-IT .PER <NOT .X> "is">
|
||
<FCLEAR .PER ,PERSONBIT>
|
||
<SET X T>
|
||
<TELL " dead." CR>)>
|
||
<COND (<EQUAL? .PER ,DEALER>
|
||
<COND (<AND <EQUAL? <LOC ,LORD> ,HERE ,PSEUDO-OBJECT>
|
||
<=? <GETP ,DEALER ,P?LDESC> 2>
|
||
<ZERO? <GETP ,LORD ,P?LINE>>>
|
||
<TELL
|
||
"\"Montague began appraising the art works in the castle for Uncle
|
||
Lionel before he died,\" explains " 'LORD ". \"I've asked him to continue
|
||
and make up a catalog.\"" CR>)>)
|
||
(<EQUAL? .PER ,PAINTER>
|
||
<COND (<EQUAL? <LOC ,FRIEND> ,HERE ,PSEUDO-OBJECT>
|
||
<SET X ,FRIEND>)
|
||
(T <SET X <FIND-FLAG-HERE ,PERSONBIT ,PLAYER ,PAINTER>>)>
|
||
<COND (<AND <T? .X>
|
||
<==? <LOC ,PAINTER> ,DRAWING-ROOM>>
|
||
<TELL
|
||
"\"Vivien painted that portrait of " 'LOVER " Hallam, the girl who drowned
|
||
in the castle well,\" says " D .X ". She gestures to a framed picture
|
||
hanging by the " 'FIREPLACE "." CR>)>)>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,PRSO .PER> <VERB? SHOW>>
|
||
<PERFORM ,V?ASK-ABOUT ,PRSO ,PRSI>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE UNSNOOZE (PER "OPTIONAL" (NO-TELL? <>)
|
||
"AUX" RM GT (C <GETP .PER ,P?LDESC>))
|
||
<COND (<EQUAL? .C 14 ;"asleep">
|
||
<FIX-MUSTACHE .PER>
|
||
<SET C <GETP .PER ,P?CHARACTER>>
|
||
<SET GT <GET ,GOAL-TABLES .C>>
|
||
<PUT .GT ,ATTENTION <GET .GT ,ATTENTION-SPAN>>
|
||
<PUT .GT ,GOAL-ENABLE 0>
|
||
<PUT .GT ,GOAL-FUNCTION ,X-RETIRES>
|
||
<PUT .GT ,GOAL-S T> ;"so GOAL-REACHED will work"
|
||
<SET RM <GET ,CHAR-ROOM-TABLE <+ 1 .C>>>
|
||
<COND (<NOT <IN? .PER .RM>>
|
||
<ESTABLISH-GOAL .PER .RM>)>
|
||
<COND ;(<EQUAL? .PER ,GHOST-NEW>
|
||
<PUTP .PER ,P?LDESC 0>)
|
||
(<EQUAL? ,VARIATION .C>
|
||
<PUTP .PER ,P?LDESC 4 ;"looking at you with suspicion">)
|
||
(T <PUTP .PER ,P?LDESC 25 ;"looking sleepy">)>
|
||
<FCLEAR .PER ,MUNGBIT>
|
||
<SET RM <META-LOC .PER>>
|
||
<COND (<AND <IN? .PER ,HERE> <ZERO? .NO-TELL?>>
|
||
<TELL CHE .PER " wakes up first. ">
|
||
;<THIS-IS-IT .PER>
|
||
<COND (<NOT <FSET? .RM ,ONBIT>>
|
||
<TELL CHE .PER " turns on the light. ">)>)>
|
||
<FSET .RM ,ONBIT>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? .C 19 ;"out cold">
|
||
<ZERO? <GET ,SHOT <GETP .PER ,P?CHARACTER>>>>
|
||
<FIX-MUSTACHE .PER>
|
||
<QUEUE I-COME-TO 0>
|
||
<I-COME-TO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE FIX-MUSTACHE (PER)
|
||
<COND (<AND <==? .PER ,DOCTOR>
|
||
<EQUAL? ,VARIATION ,DOCTOR-C>>
|
||
<FCLEAR ,MUSTACHE ,TAKEBIT>
|
||
<FSET ,MUSTACHE ,TRYTAKEBIT>)>>
|
||
|
||
<OBJECT OBJECT-PAIR
|
||
(DESC "such things")
|
||
(ACTION OBJECT-PAIR-F)>
|
||
|
||
<ROUTINE OBJECT-PAIR-F ("AUX" P1 P2)
|
||
<COND (<L? 2 <GET/B ,P-PRSO ,P-MATCHLEN>>
|
||
<SETG CLOCK-WAIT T>
|
||
<TELL
|
||
"(That's too many things to compare all at once!)" CR>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,PRSA <GET/B ,P-PRSO 1> <GET/B ,P-PRSO 2>>
|
||
<RTRUE>)>>
|
||
|
||
<OBJECT CREW-GLOBAL
|
||
(IN GLOBAL-OBJECTS)
|
||
(DESC "bunch of guests")
|
||
(SYNONYM BUNCH GUESTS)
|
||
(FLAGS SEENBIT)
|
||
(ACTION CREW-GLOBAL-F)>
|
||
|
||
<ROUTINE CREW-GLOBAL-F ("AUX" L)
|
||
<COND (<AND <QUEUED? ,I-TOUR>
|
||
<VERB? WALK-TO>>
|
||
<PERFORM ,PRSA <GET ,TOUR-PATH ,TOUR-INDEX>>
|
||
<RTRUE>)
|
||
(<NOT <ALL-TOGETHER-NOW?>>
|
||
<SETG CLOCK-WAIT T>
|
||
<TELL "(The guests aren't all together!)" CR>
|
||
<RFATAL>)
|
||
(<VERB? EXAMINE>
|
||
<TELL "There are seven people, not counting you." CR>)
|
||
(<VERB? ;GOODBYE HELLO>
|
||
<TELL CTHE ,PRSO " nods at you." CR>)
|
||
(T ;<SPEAKING-VERB? ,CREW-GLOBAL>
|
||
<TELL "You'd better stick to one guest at a time." CR>
|
||
<RFATAL>)>>
|