sherlock/things2.zil
historicalsource d327e7626d Release Version
2019-04-16 09:16:28 -04:00

2553 lines
86 KiB
Plaintext

; "game : SHERLOCK!"
; "file : THINGS2.ZIL"
; "auth : $Author: RAB $"
; "date : $Date: 28 Oct 1987 4:36:08 $"
; "rev : $Revision: 1.144 $"
; "vers : 1.00"
<ROUTINE RT-DF-TH-ROOM ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-ROOM">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<COND (<MC-ISNOT? ,GL-PLACE-CUR ,FL-INDOORS>
<TELL "You're not inside a room." CR>)
(T
<V-LOOK>)>>
<ROUTINE RT-AC-TH-NOT-HERE-OBJECT ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-NOT-HERE-OBJECT">>
<RT-TH-NOT-HERE-OBJECT>>
<ROUTINE RT-AC-TH-INTDIR ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-INTDIR">>
<COND (<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)
(<RT-TOUCH-VERB?>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)>>
<ROUTINE RT-AC-TH-TIME ("OPT" (CONTEXT <>))
<COND (<==? .CONTEXT ,K-M-SDESC>
<COND (<EQUAL? <GETP ,TH-TIME ,P?OBJ-NOUN>
,W?MINUTE ,W?MINUTES>
<TELL "minute">)
(T
<TELL "hour">)>)
(<T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)
(<RT-TOUCH-VERB?>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)
(<INTBL? ,GL-PRSA <REST ,GL-SEE-VERBS 2> <GET ,GL-SEE-VERBS 0>>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)>>
<ROUTINE RT-AC-TH-HANDS ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-HANDS">>
<COND (<MC-THIS-PRSO?>
<COND (<AND <MC-PRSI? <>>
<MC-VERB? TAKE TAKE-OFF>
<MC-IS? ,TH-HANDS ,FL-LOCKED>>
<MC-UNMAKE ,TH-HANDS ,FL-LOCKED>
<RT-CYOU-MSG "take" "takes">
<SETG HEARD-SWING? <>>
<TELL THE ,TH-HANDS " off of " THE ,TH-EARS "." CR>)
(<MC-PRSI? ,TH-EARS>
<COND (<MC-VERB? TAKE>
<COND (<MC-ISNOT? ,TH-HANDS ,FL-LOCKED>
<TELL "Your hands are not on " THE ,TH-EARS "." CR>)
(T
<MC-UNMAKE ,TH-HANDS ,FL-LOCKED>
<RT-CYOU-MSG "take" "takes">
<SETG HEARD-SWING? <>>
<TELL THE ,TH-HANDS " off of "
THE ,TH-EARS "." CR>)>)
(<MC-VERB? PUT-ON>
<COND (<MC-IS? ,TH-HANDS ,FL-LOCKED>
<TELL "Your hands are already on "
THE ,TH-EARS "." CR>)
(T
<MC-MAKE ,TH-HANDS ,FL-LOCKED>
<RT-CYOU-MSG "put" "puts">
<TELL THE ,TH-HANDS " on "
THE ,TH-EARS "." CR>)>
<RTRUE>)>)>)
(<MC-THIS-PRSI?>
<COND (<MC-PRSO? ,TH-EARS>
<COND (<MC-VERB? COVER>
<COND (<MC-IS? ,TH-HANDS ,FL-LOCKED>
<TELL "Your hands are already on " THE ,TH-EARS "." CR>)
(T
<MC-MAKE ,TH-HANDS ,FL-LOCKED>
<RT-CYOU-MSG "put" "puts">
<TELL THE ,TH-HANDS " on " THE ,TH-EARS "." CR>)>
<RTRUE>)>)>)>>
<ROUTINE RT-AC-TH-WATSONS-HEART ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WATSONS-HEART">>
<COND (<MC-VERB? LISTEN>
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
<RT-CYOU-MSG>
<TELL
"cannot hear a thing with " THE ,TH-COTTON-BALLS " in " THE ,TH-EARS>)
(<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<IFSOUND <SOUNDS ,S-HEART2 ,S-START <COND (<MC-HERE?
,RM-BAR-OF-GOLD ,RM-LAIR ,RM-SWAN-LANE> 8)
(T 6)> 8>>
<TELL "Your heart is beating ">
<COND (<MC-HERE? ,RM-BAR-OF-GOLD ,RM-LAIR ,RM-SWAN-LANE>
<TELL "so loudly you're surprised everyone can't hear it">)
(T
<TELL "normally">)>)
(T
<RT-CYOU-MSG>
<TELL "should wear the stethoscope, first">)>
<TELL "." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-EARS ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-EARS">>
<COND (<MC-THIS-PRSI?>
<COND (<MC-VERB? PUT>
<COND (<MC-PRSO? ,TH-HANDS ,TH-STETHOSCOPE>
<RFALSE>)
;(<IN? ,GL-PRSO ,TH-EARS>
<TELL CTHEO>
<RT-IS-ARE-MSG>
<TELL "already in " THEI "." CR>)
(<MC-PRSO? ,TH-COTTON-BALLS>
<COND (<FSET? ,GL-PRSO ,FL-WORN>
<TELL CTHEO>
<RT-IS-ARE-MSG>
<TELL "already in " THEI "." CR>)
(<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "take out" ,TH-STETHOSCOPE>
<TELL " first." CR>
<RTRUE>)
(T
<SETG GL-LISTEN-OBJ <>>
<MC-MAKE ,TH-COTTON-BALLS ,FL-WORN>
<RT-CYOU-MSG "put" "puts">
<TELL THEO " in " THEI "." CR>)>)
(T
<TELL "You cannot put that in " THE ,TH-EARS "." CR>)>)
(<MC-VERB? TAKE>
<COND (<MC-PRSO? ,TH-HANDS ,TH-STETHOSCOPE>
<RFALSE>)
;(<NOT <IN? ,GL-PRSO ,TH-EARS>>
<TELL CTHEO>
<RT-ISNT-ARENT-MSG>
<TELL "in " THEI "." CR>)
(<MC-PRSO? ,TH-COTTON-BALLS>
<SETG GL-LISTEN-OBJ <>>
<MC-UNMAKE ,TH-COTTON-BALLS ,FL-WORN>
<TELL "You take the cotton balls out of your ears." CR>)
;(T
<RT-CYOU-MSG>
<TELL "cannot take that out of " THEI "." CR>)>)
(<MC-VERB? EMPTY EMPTY-INTO>
<RT-CYOU-MSG>
<TELL "cannot empty anything into " THEI "." CR>)>)
(<MC-THIS-PRSO?>
<COND (<MC-VERB? LOOK-INSIDE LOOK-ON EXAMINE>
<TELL ,K-EYES-HINGED-MSG CR>)
(<MC-VERB? REACH-IN SEARCH>
<COND (<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<RT-CYOU-MSG "feel" "feels">
<TELL THE ,TH-STETHOSCOPE "." CR>)
(<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
<RT-CYOU-MSG "feel" "feels">
<TELL THE ,TH-COTTON-BALLS "." CR>)>)>)>>
<ROUTINE RT-AC-TH-HEAD ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-HEAD">>
<COND (<MC-THIS-PRSI?>
<RFALSE>)
(<MC-THIS-PRSO?>
<COND (<AND <MC-VERB? TOUCH SEARCH>
<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>>
<TELL "You are wearing " THE ,TH-WATSONS-HAT "." CR>)
(<MC-VERB? EXAMINE LOOK-ON>
<TELL ,K-EYES-HINGED-MSG CR>)>)>>
<ROUTINE RT-AC-TH-BREATH ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BREATH">>
<COND (<MC-THIS-PRSI?>
<RFALSE>)
(<MC-THIS-PRSO?>
<COND (<MC-VERB? EXAMINE LOOK-INSIDE SEARCH>
<TELL "It is not cold enough to see " THEO "." CR>)
(<MC-VERB? SMELL>
<TELL "It smells no worse than usual." CR>)
(<MC-VERB? RELEASE>
<V-EXHALE>)
;(<MC-VERB? TAKE ;SUCK> ;"Handled in PRE-TAKE"
<COND (<NOT <MC-PRSI? <> ,ROOMS>>
<RT-IMPOSSIBLE-MSG>)
(<N==? ,GL-WINNER ,CH-PLAYER>
<TELL CTHE ,GL-WINNER " look">
<RT-S-NOS-MSG ,GL-WINNER>
<TELL " at you strangely, but otherwise ignore">
<RT-S-NOS-MSG ,GL-WINNER>
<TELL " you." CR>
<RTRUE>)
(<MC-VERB-WORD? HOLD TAKE CATCH GET GRAB PINCH ;SUCK>
<V-INHALE>)
(T
<TELL "You cannot " VW " " THE ,TH-BREATH "." CR>)>)
(<MC-VERB? SHOOT>
<TELL "It's bad, but it doesn't deserve to die." CR>)>)>>
<ROUTINE RT-AC-TH-CLOTHES ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CLOTHES">>
<COND (<MC-VERB? LOOK-INSIDE SEARCH>
<RT-PERFORM ,V?LOOK-INSIDE ,TH-POCKET>
<RTRUE>)
(<AND <MC-VERB? PUT>
<MC-PRSI? ,TH-CLOTHES>>
<TELL "[in " THE ,TH-POCKET "]" CR>
<RT-PERFORM ,V?PUT ,GL-PRSO ,TH-POCKET>
<RTRUE>)
(<MC-VERB? WEAR>
<TELL "You are already wearing them." CR>
<RTRUE>)
(<MC-VERB? TAKE-OFF DROP RAISE>
<TELL ,K-INAPPROPRIATE-MSG CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-WATERMARK ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WATERMARK">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<OR <RT-VISIBLE? ,TH-GREEN-PAPER>
<RT-VISIBLE? ,TH-WHITE-PAPER>
<RT-VISIBLE? ,TH-BLUE-PAPER>
<RT-VISIBLE? ,TH-ORANGE-PAPER>
<RT-VISIBLE? ,TH-YELLOW-PAPER>
<RT-VISIBLE? ,TH-BROWN-PAPER>>
<RFALSE>)
(T
<RT-CYOU-MSG "do" "does">
<TELL "not see any " D ,TH-WATERMARK "here." CR>
<RTRUE>)>)
(<MC-T? .CONTEXT> <RFALSE>)
(<OR <RT-VISIBLE? ,TH-GREEN-PAPER>
<RT-VISIBLE? ,TH-WHITE-PAPER>
<RT-VISIBLE? ,TH-BLUE-PAPER>
<RT-VISIBLE? ,TH-ORANGE-PAPER>
<RT-VISIBLE? ,TH-YELLOW-PAPER>
<RT-VISIBLE? ,TH-BROWN-PAPER>>
<COND (<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>)
(T
<RT-CYOU-MSG "do" "does">
<TELL "not see any " D ,TH-WATERMARK " here." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-SESAME ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-SESAME">>
<COND (<MC-VERB? OPEN>
<TELL "Ali Baba you're not." CR>
<RTRUE>)
(<NOT <RT-TALK-VERB?>>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)>>
<ROUTINE RT-AC-TH-RIGHT ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-RIGHT">>
<COND (<MC-THIS-PRSO?>
<COND (<RT-TOUCH-VERB?>
<RT-IMPOSSIBLE-MSG>)
(<INTBL? ,GL-PRSA <REST ,GL-SEE-VERBS 2> <GET ,GL-SEE-VERBS 0>>
<RT-IMPOSSIBLE-MSG>)
(<MC-VERB? SHOOT>
<RT-IMPOSSIBLE-MSG>)>)>>
<ROUTINE RT-AC-TH-LEFT ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LEFT">>
<COND (<MC-THIS-PRSO?>
<COND (<RT-TOUCH-VERB?>
<RT-IMPOSSIBLE-MSG>)
(<INTBL? ,GL-PRSA <REST ,GL-SEE-VERBS 2> <GET ,GL-SEE-VERBS 0>>
<RT-IMPOSSIBLE-MSG>)
(<MC-VERB? SHOOT>
<RT-IMPOSSIBLE-MSG>)>)>>
<ROUTINE RT-AC-TH-BULLET-HOLE ("AUX" (NUM 0) OFF (HOLE <>) PLACE)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BULLET-HOLE">>
<REPEAT ()
<SET OFF <* .NUM 2>>
<COND (<EQUAL? .NUM <GET ,GL-HOLES 0>>
<RETURN>)
(<RT-VISIBLE? <GET ,GL-HOLES <+ .OFF 1>>>
<COND (<OR <MC-F? <SET PLACE <GET ,GL-HOLES <+ .OFF 2>>>>
<MC-HERE? .PLACE>>
<SET HOLE T>
<RETURN>)>)>
<INC NUM>>
<COND (<MC-F? .HOLE>
<RT-CANT-SEE-ANY-MSG ,TH-BULLET-HOLE>)
(<MC-VERB? SHOOT>
<TELL ,K-ANNIE-OAKELEY-MSG CR>)>>
<ROUTINE RT-AC-TH-GENERIC-BODY ("OPT" (CONTEXT <>) (CLASS <>) "AUX"
(ADJ <GETP ,TH-GENERIC-BODY ,P?OBJ-ADJ>) S1 S2
(WHICH ,CH-PLAYER))
<COND (<EQUAL? .ADJ ,W?WIGGINS\'>
<SET WHICH ,CH-WIGGINS>)
(<EQUAL? .ADJ ,W?HOLMES\' ,W?HOLMES\'S>
<SET WHICH ,CH-HOLMES>)
(<EQUAL? .ADJ ,W?HUDSON\'S>
<SET WHICH ,CH-HUDSON>)
(<EQUAL? .ADJ ,W?ELIZA\'S ,W?GIRL\'S>
<SET WHICH ,CH-ELIZA-DOOLITTLE>)
(<EQUAL? .ADJ ,W?HER>
<COND (<RT-VISIBLE? ,CH-HUDSON>
<SET WHICH ,CH-HUDSON>)
(T
<SET WHICH ,CH-ELIZA-DOOLITTLE>)>)
(<EQUAL? .ADJ ,W?LEFT ,W?RIGHT>
<COND (<RT-VISIBLE? ,CH-WIGGINS>
<SET WHICH ,CH-WIGGINS>)
(<RT-VISIBLE? ,CH-HOLMES>
<SET WHICH ,CH-HOLMES>)
(<RT-VISIBLE? ,CH-HUDSON>
<SET WHICH ,CH-HUDSON>)
(<RT-VISIBLE? ,CH-ELIZA-DOOLITTLE>
<SET WHICH ,CH-ELIZA-DOOLITTLE>)>)>
<COND (<==? .WHICH ,CH-WIGGINS>
<SET S1 "Wiggins">
<SET S2 "Wiggins's">)
(<==? .WHICH ,CH-HOLMES>
<SET S1 "Holmes">
<SET S2 "Holmes's">)
(<==? .WHICH ,CH-HUDSON>
<SET S1 "Mrs Hudson">
<SET S2 "Mrs Hudson's">)
(<==? .WHICH ,CH-ELIZA-DOOLITTLE>
<SET S1 "the girl">
<SET S2 "the girl's">)
(<==? .WHICH ,CH-PLAYER>
<SET S1 "yourself">
<SET S2 "your">)>
<COND (<==? .CONTEXT ,K-M-SDESC>
<TELL .S1>
<RTRUE>)
(<T? .CONTEXT> <RFALSE>)>
<COND (<NOT <RT-VISIBLE? .WHICH>>
<RT-CANT-SEE-ANY-MSG <> .S1 T>
<RFATAL>)
(<==? .WHICH ,CH-ELIZA-DOOLITTLE>
<TELL "[You do not need to refer to">
<RT-CLAUSE-PRINT ,K-P-NC1 ,K-P-NC1L>
<TELL ".]" CR>
<RFATAL>)
(T
<TELL
"[You do not need to refer to any part of " .S2 " body.]" CR>
<RFATAL>)>>
<ROUTINE RT-AC-TH-POCKET ()
<COND (<AND <MC-VERB? PUT>
<MC-THIS-PRSI?>
<MC-PRSO? TH-PADDLE
TH-MACE
TH-ANCHOR
TH-LAMP
TH-VIOLIN
TH-PACKET-OF-PAPER
TH-SUIT-OF-ARMOUR
TH-OAR-1
TH-OAR-2
TH-TORCH
TH-WAX-AX
TH-WAX-HEAD>>
<RT-CANT-PUT-IN-ON-MSG ,TH-POCKET>)>>
<ROUTINE RT-AC-TH-GUN ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-GUN">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The gun is a six-shot revolver." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? OPEN LOOK-INSIDE SEARCH>
<TELL "The gun is jammed shut. You can't open it." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-KNIFE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-KNIFE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's a nasty-looking jackknife." CR>
<RTRUE>)
(<MC-T? .CONTEXT>
<RFALSE>)
(<MC-VERB? CUT>
<COND (<MC-ISNOT? ,TH-KNIFE ,FL-OPENED>
<TELL CTHE ,TH-KNIFE " isn't open." CR>)>)
(<MC-VERB? TAKE>
<SETG KNIFE-COLD? <>>
<RFALSE>)>>
<ROUTINE RT-AC-TH-MAGNIFYING-GLASS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MAGNIFYING-GLASS">>
; "DEB -- I put this COND in so that the gem action routine would handle"
; "looking at the gem with the magnifying glass."
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It is of Swiss manufacture, with a precision-ground lens." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-PRSO? ,TH-SAPPHIRE ,TH-EMERALD ,TH-OPAL ,TH-RUBY ,TH-TOPAZ
,TH-GARNET ,TH-WESTMINSTER-CLUE ,TH-JEWEL-CASE>
<RFALSE>)>
<SETG GL-P-IT-OBJECT ,TH-MAGNIFYING-GLASS>
<COND (<MC-THIS-PRSI?>
<COND (<MC-VERB? LOOK-THRU>
<COND (<NOT <IN? ,GL-PRSI ,CH-PLAYER>>
<RT-YOUD-HAVE-TO-MSG "be holding" ,GL-PRSI>
<RTRUE>)
(<EQUAL? ,GL-PRSO ,TH-MAGNIFYING-GLASS>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)
(<NOT <EQUAL? ,GL-LASTFOC ,GL-PRSO>>
<SETG GL-LASTFOC ,GL-PRSO>
<TELL "You train the magnifying glass on " THEO "." CR>)>
<COND (<AND <MC-IS? ,GL-PRSO ,FL-PLURAL>
<MC-ISNOT? ,GL-PRSO ,FL-COLLECTIVE>>
<TELL "They appear ">)
(<AND <MC-IS? ,GL-PRSO ,FL-PERSON>
<MC-IS? ,GL-PRSO ,FL-FEMALE>>
<TELL "She appears ">)
(<AND <MC-IS? ,GL-PRSO ,FL-PERSON>
<MC-ISNOT? ,GL-PRSO ,FL-FEMALE>>
<TELL "He appears ">)
(T
<TELL "It appears ">)>
<TELL "much larger now." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<MC-VERB? SHOOT>
<TELL CTHEO ,K-SHATTER-MSG CR>)
(<MC-VERB? LOOK-INSIDE>
<TELL "Everything appears much larger." CR>
<RTRUE>)
(<MC-VERB? ADJUST PLAY>
<TELL "You cannot adjust a magnifying glass." CR>
<RTRUE>)
;(<MC-VERB? OPEN OPEN-WITH CLOSE REACH-IN>
<TELL "You cannot do that with a magnifying glass." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-VIOLIN ("OPT" (CONTEXT <>) "AUX" WHO)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-VIOLIN">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It is a Stradivarius violin of exceptional quality." CR>)
(<T? .CONTEXT> <RFALSE>)
(<MC-VERB? PLAY>
<COND (<NOT <IN? ,TH-VIOLIN ,GL-WINNER>>
<RT-CYOU-MSG "are" "is">
<TELL "not holding " THEO "." CR>
<RTRUE>)>
<IFSOUND <SOUNDS ,S-BADVIOL>>
<COND (<AND <IN? ,TH-PHIAL ,CH-HOLMES>
<MC-HERE? ,RM-HOLMES-STUDY>>
<TELL "Even the grotesque noises">
<RT-YOU-MSG "make" "makes">
<TELL "with the violin aren't enough to
distract Holmes's attention from the phial." CR>
<RTRUE>)>
<SET WHO <RT-ANYONE-HERE?>>
<COND (<MC-T? .WHO>
<MC-MAKE .WHO ,FL-ASLEEP>
<COND (<RT-ANYONE-HERE?>
<TELL "Everyone">)
(T
<TELL CTHE .WHO>)>
<MC-UNMAKE .WHO ,FL-ASLEEP>
<TELL " grimace">
<RT-S-NOS-MSG .WHO>
<TELL " in pain and glare">
<RT-S-NOS-MSG .WHO>
<TELL " at you." CR>)
(T
<TELL
"Even you cannot abide the grotesque screeches that emanate from the tortured
instrument, so you quickly stop." CR>)>)>>
<ROUTINE RT-AC-TH-PHIAL ("AUX" HITS)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PHIAL">>
<COND (<MC-VERB? SHOOT>
<SET HITS ,TH-PHIAL-AUX1>
<SETG TH-PHIAL-AUX1 <+ 1 .HITS>>
<COND (<ZERO? .HITS>
<TELL
"Nice shot! The phial explodes. You hear a muffled scream from downstairs
as Mrs Hudson lets out a shriek." CR CR
,K-HOLMES-LICKS-MSG
"eyes begin to cloud over from the small dose you have caused him to take."
CR CR ,K-ANOTHER-PHIAL-MSG CR>
<RTRUE>)
(<EQUAL? 1 .HITS>
<TELL
"The phial explodes. From downstairs you hear a dull thud as Mrs Hudson
faints and hits the floor." CR CR ,K-HOLMES-LICKS-MSG
"body stiffens as the increased dosage of the drug enters his system."
CR CR ,K-ANOTHER-PHIAL-MSG CR CR
"As a doctor, you know that another dose may be fatal." CR>
<RTRUE>)
(<EQUAL? 2 .HITS>
<TELL
"That persistent, are you? Too bad. The chill you caught from the damp air
outside causes you to sneeze just as you pull the trigger. You have shot and
killed Sherlock Holmes." CR CR
"Inspector Lestrade appears at the door and says,"
,K-PLUG-HIM-MYSELF-MSG CR CR ,K-LESTRADE-ARRESTS-MSG CR CR>
<RT-QSR>)>)
(<RT-TOUCH-VERB?>
<RT-HOLMES-HITS ,TH-PHIAL>
<RTRUE>)>
<RFALSE>>
<ROUTINE RT-HOLMES-HITS (THING)
<TELL
"Holmes is faster than you are. He moves " THE .THING " beyond your reach and
absentmindedly hits you on the head with his free hand." CR CR
"Holmes continues staring at the phial." CR>>
<ROUTINE RT-AC-TH-GREEN-PAPER ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-GREEN-PAPER">>
<RT-PROCESS-PAPER ,TH-GREEN-PAPER>>
<ROUTINE RT-AC-TH-WHITE-PAPER ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WHITE-PAPER">>
<RT-PROCESS-PAPER ,TH-WHITE-PAPER>>
<ROUTINE RT-AC-TH-BLUE-PAPER ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BLUE-PAPER">>
<RT-PROCESS-PAPER ,TH-BLUE-PAPER>>
<ROUTINE RT-AC-TH-ORANGE-PAPER ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ORANGE-PAPER">>
<RT-PROCESS-PAPER ,TH-ORANGE-PAPER>>
<ROUTINE RT-AC-TH-YELLOW-PAPER ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-YELLOW-PAPER">>
<RT-PROCESS-PAPER ,TH-YELLOW-PAPER>>
<ROUTINE RT-AC-TH-BROWN-PAPER ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BROWN-PAPER">>
<RT-PROCESS-PAPER ,TH-BROWN-PAPER>>
<ROUTINE RT-AC-TH-ELIZABETH-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ELIZABETH-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"The tomb is that of Elizabeth and her half-sister, Mary Tudor. It is
surrounded by twelve black marble pillars, and on the base is an inscription."
CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 1>)>>
<ROUTINE RT-AC-TH-NEWTON-TOMB ("OPT" (CONTEXT <>) (CLASS <>)
"AUX" WRD)
<COND (<EQUAL? <SET WRD <GETP ,TH-NEWTON-TOMB ,P?OBJ-NOUN>>
,W?STATUE>
<COND (<==? .CONTEXT ,K-M-SDESC>
; "First letter, base string, class, capitalize?,
setting of NOARTC for
this, setting of PLURAL for this"
<PRINT-SDESC "statue of Sir Isaac Newton" .CLASS
<> <>>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"The great mathematician is shown reclining in a pensive mood." CR>)
(T <RFALSE>)>)
(<EQUAL? .WRD ,W?CHERUB ,W?ANGEL ,W?CHERUBS ,W?ANGELS>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "cherubs" .CLASS <> T>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL "Cute, aren't they?" CR>)
(T
<RFALSE>)>)
(<EQUAL? .WRD ,W?DIAGRAM ,W?SYSTEM>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "diagram" .CLASS <> <>>)
(T
<RFALSE>)>)
(T
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "Newton's tomb" .CLASS T <>>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's a white marble sarcophagus with \"ISAACVS NEWTON Eques Auratus\"
written on the front. Above it is a marble statue of Newton, and a carving
of two cherubs who are holding a diagram of the solar system." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 2>)>)>>
<ROUTINE PRINT-SDESC (BASE CLASS NOART? PLURAL? "OPT" (VOWEL? <>)
(PRINTB? <>)
"AUX" (IS <>))
<COND (<F? .NOART?>
<COND (<==? .CLASS ,K-DESC-ANY>
<SET IS "any">)
(<OR <==? .CLASS ,K-DESC-THE>
.PLURAL?>
<SET IS "the">)
(.PLURAL?
<SET IS "some">)
(T
<COND (.VOWEL?
<SET IS "an">)
(T
<SET IS "a">)>)>
<COND (.IS <TELL .IS>)>
<PRINTC !\ >)>
<COND (.PRINTB?
<PRINTB .BASE>)
(T
<TELL .BASE>)>>
<ROUTINE RT-AC-TH-HENRY-V-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-HENRY-V-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's an old wooden coffin on a raised platform. On the top is an effigy of
Henry V, and there is an inscription carved into the side." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 3>)>>
<ROUTINE RT-AC-TH-EDWARD-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-EDWARD-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's the tomb of Edward the Confessor, the founder of Westminster Abbey,
and the only English king ever to be canonized. Around the tomb is a frieze
that shows scenes from Edward's life, and on the base there is a faded
inscription." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 4>)>>
<ROUTINE RT-AC-TH-POPE-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-POPE-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL ,K-SIMPLE-TOMB-MSG CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 5>)>>
<ROUTINE RT-AC-TH-DICKENS-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-DICKENS-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL ,K-SIMPLE-TOMB-MSG CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 6>)>>
<ROUTINE RT-AC-TH-CHAUCER-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CHAUCER-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's the tomb of Geoffrey Chaucer, who died in 1400 and became the first
person to be buried in Poet's Corner. The inscription above the sarcophagus
is so faded that it is almost illegible." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 7>)>>
<ROUTINE RT-AC-TH-ANNE-OF-CLEVES-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ANNE-OF-CLEVES-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL ,K-SIMPLE-TOMB-MSG CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 8>)>>
<ROUTINE RT-AC-TH-LITTLE-PRINCES-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LITTLE-PRINCES-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"According to the inscription, the urn contains the remains of the Little
Princes in the Tower." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 9>)>>
<ROUTINE RT-AC-TH-MARY-QUEEN-OF-SCOTS-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MARY-QUEEN-OF-SCOTS-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"The tomb is a simple sarcophagus with a marble effigy of Mary, Queen of
Scots on it." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 10>)>>
<ROUTINE RT-AC-TH-HENRY-VII-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-HENRY-VII-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's an incredibly lavish tomb which is surmounted by gilt effigies of Henry
VII and his wife Elizabeth of York." CR>)
(<MC-T? .CONTEXT>
<RFALSE>)
(T
<RT-PROCESS-TOMB 11>)>>
<ROUTINE RT-AC-TH-PITT-TOMB ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PITT-TOMB">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's a huge monument to William Pitt. On the base of the monument are five "
D ,TH-FIGURES " and an elaborate inscription." CR>)
(<MC-T? .CONTEXT>
<RFALSE>)
(T
<RT-PROCESS-TOMB 12>)>>
<ROUTINE RT-AC-TH-FIGURES ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-FIGURES">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"You've never understood allegorical figures before. What makes you think you
can start now?" CR>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-VERE-TOMB ("OPT" (CONTEXT <>) (CLASS <>) (CAP? <>) "AUX" WRD)
<COND (<==? <SET WRD <GETP ,TH-VERE-TOMB ,P?OBJ-NOUN>> ,W?KNIGHT ,W?KNIGHTS>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "knights" .CLASS <> T>)
(T
<RFALSE>)>)
(<==? .WRD ,W?SUIT ,W?ARMOUR ,W?ARMOR>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "armour" .CLASS <> <> T>)
(<T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)>)
(<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "Sir Francis Vere's tomb" .CLASS T <>>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's an effigy of a man surrounded by four knights, who are holding up
a marble slab on their shoulders. On the slab is the dead man's armour." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(T
<RT-PROCESS-TOMB 13>)>>
<ROUTINE RT-AC-TH-LAMP ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LAMP">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It is a battered old brass lamp that has accompanied
you on many adventures in the past." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSI?>
<COND (<MC-VERB? THROW>
<COND (<G? <GET-MASS ,GL-PRSO> 5>
<RT-BREAK-LAMP>
<TELL CR CTHEO " ">
<RT-LANDS-AT-YOUR-FEET-MSG>
<RTRUE>)>)
(<MC-VERB? PUT>
<RT-LAMP-SEALED>)>)
(T
<COND (<MC-VERB? SHOOT KICK MUNG>
<RT-BREAK-LAMP>)
(<MC-VERB? OPEN CLOSE OPEN-WITH ;UNSCREW LOOK-INSIDE
SEARCH REACH-IN EMPTY EMPTY-INTO>
<RT-LAMP-SEALED>)
(<MC-VERB? LAMP-ON LIGHT-WITH TURN-UP LIGHT>
<COND (<MC-IS? ,TH-LAMP ,FL-BROKEN>
<MC-UNMAKE ,TH-LAMP ,FL-ASLEEP>
<TELL "Nothing happens." CR>)
(<MC-ISNOT? ,TH-LAMP ,FL-ASLEEP>
<TELL CTHE ,TH-LAMP " is already on." CR>)
(T
<MC-UNMAKE ,TH-LAMP ,FL-ASLEEP>
<MC-MAKE ,TH-LAMP ,FL-LIGHTED>
<TELL "You turn up the wick. " CTHE ,TH-LAMP
" emits a warm glow that lights up the area around you." CR>)>)
(<MC-VERB? LAMP-OFF TURN-DOWN>
<COND (<MC-IS? ,TH-LAMP ,FL-ASLEEP>
<TELL CTHE ,TH-LAMP " is already off." CR>)
(<MC-IS? ,TH-LAMP ,FL-BROKEN>
<MC-MAKE ,TH-LAMP ,FL-ASLEEP>
<TELL "Nothing happens." CR>)
(T
<MC-MAKE ,TH-LAMP ,FL-ASLEEP>
<MC-UNMAKE ,TH-LAMP ,FL-LIGHTED>
<TELL "You turn down the wick. " CTHE ,TH-LAMP
" goes dark." CR>)>)
(<MC-VERB? POINT-AT SHINE-AT>
<COND (<MC-IS? ,TH-LAMP ,FL-LIGHTED>
<COND (<EQUAL? ,GL-PRSO ,GL-PRSI>
<RT-CYOU-MSG>
<TELL "can't point the light at itself." CR>)
(T
<TELL "You point " THE ,TH-LAMP " at " THEI ", but it reveals nothing." CR>)>)
(T
<TELL CTHE ,TH-LAMP " is not on." CR>)>)>)>>
<ROUTINE RT-LAMP-SEALED ()
<TELL
CTHE ,TH-LAMP " is firmly sealed. It can neither be opened nor closed." CR>>
<ROUTINE RT-BREAK-LAMP ()
<COND (<MC-ISNOT? ,TH-LAMP ,FL-BROKEN>
<MC-MAKE ,TH-LAMP ,FL-BROKEN>
<TELL "It sounds as if something in " THE ,TH-LAMP " has shattered.">
<COND (<MC-IS? ,TH-LAMP ,FL-LIGHTED>
<MC-UNMAKE ,TH-LAMP ,FL-LIGHTED>
<TELL " " CTHE ,TH-LAMP " has gone out.">)>
<CRLF>)
(T
<TELL CTHE ,TH-LAMP " is already broken." CR>)>>
<ROUTINE RT-AC-TH-BLACK-BAG ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BLACK-BAG">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"It's the black medical bag your aunt gave you when you graduated
from medical school." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<AND <MC-VERB? PUT>
<MC-THIS-PRSI?>
<MC-PRSO? TH-PADDLE
TH-MACE
TH-ANCHOR
TH-PACKET-OF-PAPER
TH-SUIT-OF-ARMOUR
TH-OAR-1
TH-OAR-2
TH-TORCH
TH-WAX-AX
TH-LAMP
TH-VIOLIN
TH-WAX-HEAD>>
<TELL "You look at " THEO ". You look at the tiny bag.
You look at the tiny bag. You look at " THEO ". Slowly it dawns on you
that it's just not going to work." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-CHARLES-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-CHARLES-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<MC-MAKE ,TH-WAX-AX ,FL-SEEN>
<COND (<IN? ,TH-WAX-HEAD ,TH-CHARLES-STATUE>
<TELL
"Charles I is shown kneeling, with his head resting on a
chopping block. Above him stands a masked executioner">
<COND (<IN? ,TH-WAX-AX ,TH-CHARLES-STATUE>
<TELL ", with his axe held
high over his head, ready to strike the deathblow">)>
<TELL "." CR>)
(T
<TELL "The statue looks grotesque without the head." CR>)>>
<ROUTINE RT-AC-TH-WILLIAM-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-WILLIAM-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL
"The statue is of William the Conqueror kneeling on the sand
at Pevensey, where he landed before the Battle of Hastings in 1066." CR>>
<ROUTINE RT-AC-TH-WALTER-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-WALTER-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL
"The sculpture shows Sir Walter Raleigh spreading his cloak
across a mud puddle so Elizabeth could walk across without dirtying
her shoes." CR>>
<ROUTINE RT-AC-TH-ELIZABETH-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-ELIZABETH-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL "She is smiling at Sir Walter." CR>>
<ROUTINE RT-AC-TH-THOMAS-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-THOMAS-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL
"The sculpture shows four knights with swords drawn, advancing
on Thomas Becket as he stands before the High Altar of Canterbury
Cathedral." CR>>
<ROUTINE RT-AC-TH-DRAKE-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-DRAKE-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL
"The statue is of Sir Francis Drake finishing his game of bowls
before sailing off to defeat the Spanish Armada." CR>>
<ROUTINE RT-AC-TH-JOHN-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-JOHN-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL
"King John is depicted signing the Magna Carta in the
meadow at Runnymede in June of 1215." CR>>
<ROUTINE RT-AC-TH-FAWKES-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-FAWKES-STATUE">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL
"The statue depicts Guy Fawkes crouched behind some barrels of gunpowder. He
is awaiting the signal to light his torch and set off the trail of gunpowder
that will blow up Parliament">
<COND (<IN? ,TH-TORCH ,TH-FAWKES-STATUE>
;<OR <IN? ,TH-TORCH ,TH-FAWKES-STATUE>
<IN? ,TH-BURNT-TORCH ,TH-FAWKES-STATUE>>
<TELL ". The torch he holds looks like a real one">)
(T
<TELL " - but he seems to be missing the torch">)>
<TELL "." CR>>
<ROUTINE RT-AC-TH-NELSON-COLUMN ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-NELSON-COLUMN">>
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
<TELL "The column has" ,K-NELSON-STATUE-MSG CR>>
<ROUTINE RT-AC-TH-BOAT ("OPTIONAL" (CONTEXT <>) "AUX" NUM)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BOAT" .CONTEXT>>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's an incredibly old rowboat that ">
<COND (<AND <IN? ,TH-OAR-1 ,TH-BOAT>
<NOT <IN? ,TH-OAR-2 ,TH-OAR-LOCK>>>
<TELL "has one empty oarlock and ">)>
<TELL "probably leaks. But it looks as if it might float">
<COND (<NOT <OR <IN? ,TH-BOAT ,RM-THE-EMBANKMENT>
<IN? ,TH-BOAT ,RM-OUTSIDE-TRAITORS-GATE>>>
<TELL " a little while longer">)>
<TELL ". The boat's anchor is in the ">
<COND (<IN? ,TH-ANCHOR ,TH-BOAT>
<TELL "boat">)
(T
<TELL "water">)>
<TELL "." CR>
<RETURN 2>)
(<MC-T? .CONTEXT> <RFALSE>)
(<AND <MC-VERB? PUSH-TO> <MC-PRSI? ,LG-WATER>>
<RT-LAUNCH-BOAT>
<RTRUE>)
(<AND <MC-VERB? ENTER> <MC-PRSO? ,ROOMS ,TH-BOAT>>
<COND (<NOT <IN? ,CH-PLAYER ,TH-BOAT>>
<COND (<AND <MC-T? ,GL-PUPPY>
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
<MOVE ,GL-PUPPY ,TH-BOAT>
<TELL "You and " THE ,GL-PUPPY " get ">)
(T
<RT-CYOU-MSG "get" "gets">)>
<TELL "into the boat." CR>
<MOVE ,CH-PLAYER ,TH-BOAT>
<COND (<MC-T? ,GL-PUPPY>
<MOVE ,GL-PUPPY ,TH-BOAT>)>
<MC-MAKE ,TH-BOAT ,FL-NODESC>
<RTRUE>)>)
(<AND <MC-VERB? EXIT> <MC-PRSO? ,ROOMS ,TH-BOAT>>
<COND (<IN? ,CH-PLAYER ,TH-BOAT>
<MOVE ,CH-PLAYER ,GL-PLACE-CUR>
<COND (<MC-T? ,GL-PUPPY>
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>)>
<MC-UNMAKE ,TH-BOAT ,FL-NODESC>
<SET NUM ,TH-BOAT-AUX1>
<COND (<AND <NOT <ZERO? <LOC ,TH-OPAL>>>
<IN? ,TH-BOAT ,RM-THE-EMBANKMENT>
<EQUAL? .NUM 0>>
<TELL "As">
<COND (<AND <MC-T? ,GL-PUPPY>
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>
<TELL " you and " THE ,GL-PUPPY " get ">)
(T
<RT-YOU-MSG "get" "gets">)>
<TELL
"out of the boat, a man storms up to you and says, \"What in bloody 'ell are
you doing with my boat?\" Without waiting for a reply he ">
<COND (<OR <IN? ,TH-OAR-2 ,TH-BOAT>
<IN? ,TH-OAR-2 ,RM-THE-EMBANKMENT>
<RT-META-IN? ,TH-OAR-2 ,CH-PLAYER>
<RT-META-IN? ,TH-OAR-2 ,GL-PUPPY>>
<TELL "grabs the oar, ">)>
<MOVE ,TH-BOAT ,RM-OUTSIDE-TRAITORS-GATE>
<MOVE ,TH-ANCHOR ,LG-WATER>
<REMOVE ,TH-OAR-1>
<REMOVE ,TH-OAR-2>
<SETG TH-BOAT-AUX1 1>
<TELL
"jumps into the boat and rows off, muttering to himself that he'll
have to find a safer place to keep it." CR>)
(<AND <MC-IS? ,TH-GARNET ,FL-TOUCHED>
<IN? ,TH-BOAT ,RM-THE-EMBANKMENT>
<EQUAL? .NUM 1>>
<TELL "As">
<COND (<AND <MC-T? ,GL-PUPPY>
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>
<TELL " you and " THE ,GL-PUPPY " get ">)
(T
<RT-YOU-MSG "get" "gets">)>
<TELL
"out of the boat, its red-faced owner runs up and
yells, \"You again?!!\" He gives you a swift kick in the rear">
<COND (<MC-IS? ,TH-SUIT-OF-ARMOUR ,FL-WORN>
<TELL
", then clutches his foot in agony as it bounces off your suit of armour">)>
<TELL "." CR CR "The man jumps into the boat">
<COND
(<IN? ,TH-PADDLE ,TH-BOAT>
<TELL
" and paddles away, cursing under his breath." CR>)
(T
<TELL
", launches it, and suddenly realizes he has no way to steer it. The last
you see of him, he is drifting down the Thames, screaming and shaking his
fist at you." CR>)>
<REMOVE ,TH-BOAT>
<SETG TH-BOAT-AUX1 2>)
(<IN? ,TH-ANCHOR ,TH-BOAT>
<TELL "As">
<COND (<AND <MC-T? ,GL-PUPPY>
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>
<TELL " you and " THE ,GL-PUPPY " get ">)
(T
<RT-YOU-MSG "get" "gets">)>
<TELL
"out of the boat it slides out from under your foot and drifts down the
river." CR>
<REMOVE ,TH-BOAT>)
(T
<COND (<AND <MC-T? ,GL-PUPPY>
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>
<TELL "You and " THE ,GL-PUPPY " get ">)
(T
<RT-CYOU-MSG "get" "gets">)>
<TELL "out of the boat." CR>)>
<RTRUE>)>)
(<AND <MC-VERB? SHOOT>
<MC-PRSO? ,TH-BOAT>>
<REMOVE ,TH-BOAT>
<TELL
"Bad idea. The bullet blows a hole in the boat, which promptly sinks." CR>
<COND (<IN? ,CH-PLAYER ,TH-BOAT>
<TELL
CR "Unable to swim, you cling to a piece of driftwood for several
hours, wondering what kind of idiot would shoot a boat out from
under himself." CR CR
"After a while, a Scotland Yard launch pulls alongside to rescue
you. Lestrade leans over the side and offers his assistance. You
decide you're better off in the water and politely decline." CR CR>
<RT-QSR>)>
<RTRUE>)>>
<ROUTINE RT-AC-TH-OAR-1 ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-OAR-1">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The oar is hopelessy jammed into the oarlock." CR>)
(<MC-T? .CONTEXT>
<RFALSE>)
(<MC-VERB? TAKE>
<RT-CYOU-MSG "try" "tries">
<TELL
"to extract the oar from the oarlock, but it seems to be jammed." CR>
<RTRUE>)
(<MC-VERB? RELEASE>
<RT-CYOU-MSG "struggle" "struggles">
<TELL
"with the oar for a minute or two with no success... it really
is jammed in there." CR>)>>
<ROUTINE RT-AC-TH-OAR-LOCK ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-OAR-LOCK">>
<COND (<AND <MC-VERB? PUT PUT-ON>
<MC-THIS-PRSI?>
<NOT <MC-PRSO? ,TH-OAR-2>>>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)>>
<ROUTINE RT-AC-TH-CLAPPER ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CLAPPER">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<IN? ,TH-SAPPHIRE ,TH-CLAPPER>
<TELL "The clapper hangs from the centre of the bell.
There is a beautiful blue sapphire glued to the end of it." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)
(<RT-IMPOSSIBLE-PUT-IN-ON-MSG ,TH-CLAPPER>
<RTRUE>)
(<MC-VERB? TOUCH TOUCH-TO TOUCH-TO-SWP>
<COND (<EQUAL? ,TH-BELL-AUX2 ,K-BELL-TOWARDS>
<RFALSE>)
(T
<TELL CTHEO>
<RT-ISNT-ARENT-MSG ,GL-PRSO>
<TELL "within reach." CR>)>
<RTRUE>)>>
<ROUTINE RT-AC-TH-COTTON-BALLS ("OPT" (CONTEXT <>) "AUX" VAL)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-COTTON-BALLS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
<TELL "You can't see them because they're in your ears."
CR>)
(T
<TELL "They're soft and fluffy." CR>)>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<SETG GL-P-IT-OBJECT ,GL-PRSO>
<COND (<OR <MC-VERB? WEAR>
<AND <MC-VERB? PUT>
<MC-PRSI? ,TH-EARS>>>
<COND (<MC-IS? ,GL-PRSO ,FL-WORN>
<TELL CTHEO>
<RT-IS-ARE-MSG>
<TELL "already in " THE ,TH-EARS "." CR>)
(<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<TELL CTHE ,TH-STETHOSCOPE
" is in the way." CR>
<RTRUE>)
(T
<SETG GL-LISTEN-OBJ <>>
<MC-MAKE ,GL-PRSO ,FL-WORN>
<MOVE ,GL-PRSO ,CH-PLAYER>
<RT-CYOU-MSG "put" "puts">
<TELL THEO " in " THE ,TH-EARS "." CR>
<SET VAL <GETP ,GL-PRSO ,P?VALUE>>
<COND (<MC-T? .VAL>
<RT-UPDATE-SCORE .VAL>
<PUTP ,GL-PRSO ,P?VALUE 0>)>
<RTRUE>)>)
(<OR <AND <MC-VERB? TAKE>
<MC-PRSI? ,TH-EARS>>
<AND <MC-VERB? TAKE-OFF TAKE>
<MC-IS? ,GL-PRSO ,FL-WORN>>>
<COND (<MC-ISNOT? ,GL-PRSO ,FL-WORN>
<TELL CTHEO>
<RT-ISNT-ARENT-MSG>
<TELL "in " THE ,TH-EARS "." CR>)
(T
<COND (<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<RT-PERFORM ,V?TAKE-OFF ,TH-STETHOSCOPE>)>
<SETG GL-LISTEN-OBJ <>>
<MC-UNMAKE ,GL-PRSO ,FL-WORN>
<RT-CYOU-MSG "take" "takes">
<TELL THEO>
<TELL " out of " THE ,TH-EARS "." CR>
<COND (<N==? ,GL-WINNER ,CH-PLAYER>
<MOVE ,GL-PRSO ,GL-WINNER>)>
<RTRUE>)>)
(<MC-VERB? DROP THROW THROW-OVER>
<COND (<MC-IS? ,GL-PRSO ,FL-WORN>
<RT-CYOU-MSG>
<TELL "cannot " VW " " THEO " while">
<RT-YOU-MSG "are" "is">
<TELL "wearing them." CR>)>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>)>>
<ROUTINE RT-AC-TH-BELL ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BELL">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The huge bell hangs over the hollow shaft of the tower."
CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)
(<RT-IMPOSSIBLE-PUT-IN-ON-MSG ,TH-BELL>
<RTRUE>)>>
<ROUTINE RT-AC-TH-STETHOSCOPE ("OPT" (CONTEXT <>) "AUX" VAL)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-STETHOSCOPE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<TELL "The stethoscope is hanging from your ears." CR>)
(T
<TELL "It looks just like any other late-Victorian-era
stethoscope." CR>)>
<RTRUE>)
(<MC-T? .CONTEXT>
<RFALSE>)
(<MC-THIS-PRSO?>
<COND (<OR <MC-VERB? WEAR>
<AND <MC-VERB? PUT>
<MC-PRSI? ,TH-EARS>>>
<COND (<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<TELL CTHEO>
<RT-IS-ARE-MSG>
<TELL "already in " THE ,TH-EARS "." CR>)
;(<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
<TELL
"You should take the cotton balls out of your ears first." CR>)
(T
<SETG GL-LISTEN-OBJ <>>
<MC-MAKE ,TH-STETHOSCOPE ,FL-WORN>
<MOVE ,TH-STETHOSCOPE ,CH-PLAYER>
<RT-CYOU-MSG "put" "puts">
<TELL THEO " in " THE ,TH-EARS "." CR>
<SET VAL <GETP ,TH-STETHOSCOPE ,P?VALUE>>
<COND (<MC-T? .VAL>
<RT-UPDATE-SCORE .VAL>
<PUTP ,TH-STETHOSCOPE ,P?VALUE 0>)>
<RTRUE>)>)
(<OR <AND <MC-VERB? TAKE>
<MC-PRSI? ,TH-EARS>>
<AND <MC-VERB? TAKE-OFF TAKE>
<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>>>
<COND (<MC-ISNOT? ,TH-STETHOSCOPE ,FL-WORN>
<TELL CTHEO>
<RT-ISNT-ARENT-MSG>
<TELL "in " THE ,TH-EARS "." CR>)
(T
<SETG GL-LISTEN-OBJ <>>
<MC-UNMAKE ,TH-STETHOSCOPE ,FL-WORN>
<RT-CYOU-MSG "take" "takes">
<TELL THEO>
<TELL " out of " THE ,TH-EARS "." CR>
<COND (<N==? ,GL-WINNER ,CH-PLAYER>
<MOVE ,GL-PRSO ,GL-WINNER>)>
<RTRUE>)>)
(<MC-VERB? DROP THROW THROW-OVER>
<COND (<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
<RT-CYOU-MSG>
<TELL "cannot " VW " " THEO " while">
<RT-YOU-MSG "are" "is">
<TELL "wearing it." CR>)>)
(<MC-VERB? PUT-ON>
<COND (<AND <MC-IS? ,GL-PRSI ,FL-PERSON>
<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>>
<RT-PERFORM ,V?LISTEN ,GL-PRSI ,GL-PRSO>)>)>)
(<MC-THIS-PRSI?>
<RFALSE>)>>
<ROUTINE RT-AC-TH-WATSONS-HAT ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WATSONS-HAT">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
<TELL
"You can't look at your hat while it's on the top of your head." CR>)
(T
<TELL
"It's a rather large hat with plenty of room inside it for your rather
large head." CR>)>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<COND (<OR <AND <MC-VERB? PUT-ON>
<MC-PRSI? ,TH-HEAD>>
<MC-VERB? WEAR>>
<COND (<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
<TELL "You are already wearing " THEO "." CR>)
(<RT-DONT-HAVE-MSG ,GL-PRSO>
<RTRUE>)
(T
<MC-UNMAKE ,TH-WATSONS-HAT ,FL-OPENED>
<MC-MAKE ,TH-WATSONS-HAT ,FL-WORN>
<TELL "You put on " THEO "." CR>)>)
(<OR <AND <MC-VERB? TAKE>
<OR <MC-PRSI? ,TH-HEAD>
<AND <MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
<MC-PRSI? <> CH-PLAYER CH-ME>>>>
<MC-VERB? TAKE-OFF>>
<COND (<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
<MC-MAKE ,TH-WATSONS-HAT ,FL-OPENED>
<MC-UNMAKE ,TH-WATSONS-HAT ,FL-WORN>
<TELL "You take off " THEO>
<COND (<RT-VISIBLE? ,CH-AKBAR>
<TELL
". Disconcerted by your sacrilegious action, Akbar averts his gaze">)>
<COND (<FIRST? ,TH-WATSONS-HAT>
<TELL ". Inside you see ">
<RT-PRINT-CONTENTS-2 ,TH-WATSONS-HAT>)>
<TELL "." CR>)
(T
<TELL "You are not wearing " THEO "." CR>)>)
(<AND <MC-VERB? LOOK-INSIDE LOOK-UNDER>
<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>>
<TELL
"You can't see inside " THE ,TH-WATSONS-HAT " while it's on " THE ,TH-HEAD
"." CR>)
(<AND <MC-VERB? REACH-IN SEARCH PUT PUT-ON>
<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>>
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "take off" ,GL-PRSO>
<TELL " first." CR>
<RTRUE>)>)
(<MC-THIS-PRSI?>
<COND (<AND <MC-VERB? PUT PUT-UNDER>
<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>>
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "take off" ,GL-PRSI>
<TELL " first." CR>
<RTRUE>)>)>>
<ROUTINE RT-AC-TH-ELIZAS-FLOWERS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ELIZAS-FLOWERS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "In " THE ,TH-ELIZAS-FLOWERS " you see a carnation." CR>
<RTRUE>)>
<COND (<MC-THIS-PRSI?>
<COND (<MC-VERB? PUT PUT-ON>
<RT-CANT-PUT-IN-ON-MSG ,TH-ELIZAS-FLOWERS>)>)>>
<ROUTINE RT-AC-TH-CARNATION ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CARNATION">>
<COND (<MC-THIS-PRSO?>
<COND (<MC-VERB? WEAR>
<COND (<EQUAL? ,GL-WINNER ,CH-PLAYER>
<COND (<IN? ,TH-CARNATION ,TH-LAPEL>
<TELL CTHEO " is already in "
THE ,TH-LAPEL "." CR>)
(T
<MOVE ,TH-CARNATION ,TH-LAPEL>
<RT-CYOU-MSG "put" "puts">
<TELL THEO " in " THE ,TH-LAPEL "." CR>)>)
(T
<TELL CTHE ,GL-WINNER " say">
<RT-S-NOS-MSG ,GL-WINNER>
<TELL ", \"No thanks.\"" CR>)>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>)>>
<ROUTINE RT-AC-TH-EMERALD ("OPT" (CONTEXT <>))
<COND (<==? <GETP ,TH-EMERALD ,P?OBJ-NOUN> ,W?SCRATCH>
<RT-HANDLE-SCRATCH ,TH-EMERALD .CONTEXT>)
(T
<COND (<==? .CONTEXT ,K-M-SDESC>
<TELL "emerald">)
(<EQUAL? .CONTEXT ,K-M-DESCFCN <>>
<RT-EXAMINE-GEM ,TH-EMERALD>)
(T
<RFALSE>)>)>>
<ROUTINE RT-AC-TH-SAPPHIRE ("OPTIONAL" (CONTEXT <>) "AUX" GRABS WHO)
<COND (<==? <GETP ,TH-SAPPHIRE ,P?OBJ-NOUN> ,W?SCRATCH>
<RT-HANDLE-SCRATCH ,TH-SAPPHIRE .CONTEXT>)
(T
<COND (<==? .CONTEXT ,K-M-SDESC>
<TELL "sapphire">
<RTRUE>)
(<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-T? <RT-EXAMINE-GEM ,TH-SAPPHIRE>>
<RTRUE>)>
<RTRUE>)
(<MC-T? .CONTEXT>
<RFALSE>)>
<SET GRABS ,TH-SAPPHIRE-AUX1>
<COND (<AND <MC-THIS-PRSO?>
<IN? ,TH-SAPPHIRE ,TH-CLAPPER>>
<COND (<MC-VERB? TAKE>
<COND (<G? .GRABS 0>
<COND (<EQUAL? ,TH-BELL-AUX2 ,K-BELL-TOWARDS>
<DEC GRABS>
<SETG TH-SAPPHIRE-AUX1 .GRABS>
<COND (<ZERO? .GRABS>
<RT-CYOU-MSG "remove" "removes">
<TELL THEO " from "
THE ,TH-CLAPPER "." CR>
<MOVE ,TH-SAPPHIRE ,CH-PLAYER>
<MC-UNMAKE ,TH-SAPPHIRE ,FL-NODESC>
<MC-MAKE ,TH-SAPPHIRE ,FL-SEEN>
<MC-MAKE ,TH-SAPPHIRE ,FL-TOUCHED>
<SET WHO <RT-WHO-SAYS?>>
<COND (<EQUAL? .WHO ,CH-HOLMES>
<TELL CR
"Holmes beams at you and says, \"Good show, old fellow.\"" CR>)>
<RT-UPDATE-SCORE
<GETP ,TH-SAPPHIRE ,P?VALUE>>
<PUTP ,TH-SAPPHIRE ,P?VALUE 0>)
(T
<RT-CYOU-MSG "tug" "tugs">
<TELL "at " THEO
", but you can't quite grab
it before it swings out of reach again." CR>)>)
(T
<TELL CTHEO>
<RT-ISNT-ARENT-MSG ,GL-PRSO>
<TELL "within reach." CR>)>
<RTRUE>)>)
(<MC-VERB? HIT>
<COND (<OR <EQUAL? ,TH-BELL-AUX2 ,K-BELL-TOWARDS>
<MC-PRSI? ,TH-OAR-2>>
<RT-CYOU-MSG "knock" "knocks">
<TELL
THEO " into the shaft. A long time later you hear " THEO " shatter." CR>
<FCLEAR ,GL-PRSO ,FL-WORN>
<REMOVE ,GL-PRSO>)
(T
<TELL CTHEO>
<RT-ISNT-ARENT-MSG ,GL-PRSO>
<TELL "within reach." CR>)>
<RTRUE>)
(<MC-VERB? TOUCH TOUCH-TO TOUCH-TO-SWP>
<COND (<EQUAL? ,TH-BELL-AUX2 ,K-BELL-TOWARDS>
<RFALSE>)
(T
<TELL CTHEO>
<RT-IS-ARE-MSG ,GL-PRSO>
<TELL "within reach." CR>)>
<RTRUE>)>)
(<AND <MC-THIS-PRSI?>
<IN? ,TH-SAPPHIRE ,TH-CLAPPER>>
<COND (<MC-VERB? THROW>
<COND (<MC-PRSO? ,CH-TRAINED-PIGEON>
<RT-PIGEON-PANIC>
<SETG CH-TRAINED-PIGEON-AUX1 0>
<RTRUE>)
(T
<RT-CYOU-MSG "hit" "hits">
<TELL THEI " with " THEO ", and they both
disappear into the shaft. A long time later you hear " THEI " shatter." CR>
<REMOVE ,GL-PRSO>
<REMOVE ,GL-PRSI>
<RTRUE>)>)>)>
<RT-EXAMINE-GEM ,TH-SAPPHIRE>)>>
<ROUTINE RT-AC-TH-OPAL ("OPT" (CONTEXT <>))
<COND (<==? <GETP ,TH-OPAL ,P?OBJ-NOUN> ,W?SCRATCH>
<RT-HANDLE-SCRATCH ,TH-OPAL .CONTEXT>)
(<==? .CONTEXT ,K-M-SDESC>
<TELL "opal">)
(<EQUAL? .CONTEXT ,K-M-DESCFCN <>>
<RT-EXAMINE-GEM ,TH-OPAL>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-RUBY ("OPT" (CONTEXT <>))
<COND (<==? <GETP ,TH-RUBY ,P?OBJ-NOUN> ,W?SCRATCH>
<RT-HANDLE-SCRATCH ,TH-RUBY .CONTEXT>)
(T
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<RT-EXAMINE-GEM ,TH-RUBY>
<RTRUE>)
(<==? .CONTEXT ,K-M-SDESC>
<TELL "ruby">
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? TAKE>
<COND (<IN? ,TH-RUBY ,TH-NELSON-STATUE>
<TELL "You can't reach the ruby." CR>
<RTRUE>)
(<IN? ,TH-RUBY ,CH-SHERMAN>
<RT-IMPOLITE-MSG "take things" "asking">
<RTRUE>)>)>
<RT-EXAMINE-GEM ,TH-RUBY>)>>
<ROUTINE RT-AC-TH-TOPAZ ("OPT" (CONTEXT <>))
<COND (<==? <GETP ,TH-TOPAZ ,P?OBJ-NOUN> ,W?SCRATCH>
<RT-HANDLE-SCRATCH ,TH-TOPAZ .CONTEXT>)
(T
<COND (<==? .CONTEXT ,K-M-SDESC>
<TELL "topaz">)
(<EQUAL? .CONTEXT ,K-M-DESCFCN <>>
<RT-EXAMINE-GEM ,TH-TOPAZ>)>)>>
<ROUTINE RT-AC-TH-CRAYON ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-CRAYON">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It looks just like any other Victorian-era crayon." CR>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-WATSONS-COAT ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WATSONS-COAT">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's a wool greatcoat." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<COND (<MC-VERB? LOOK-INSIDE SEARCH>
<RT-PERFORM ,V?LOOK-INSIDE ,TH-POCKET>)
(<MC-VERB? EMPTY EMPTY-INTO>
<TELL "[from " THE ,TH-POCKET "]" CR>
<RT-PERFORM ,GL-PRSA ,TH-POCKET ,GL-PRSO>)
(<AND <MC-VERB? WEAR TAKE-OFF>
<MC-IS? ,TH-SUIT-OF-ARMOUR ,FL-WORN>>
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "take off" ,TH-SUIT-OF-ARMOUR>
<TELL " first." CR>)>)
(<MC-THIS-PRSI?>
<COND (<MC-VERB? TAKE>
<TELL "[from " THE ,TH-POCKET "]" CR>
<RT-PERFORM ,V?TAKE ,GL-PRSO ,TH-POCKET>)
(<MC-VERB? PUT>
<TELL "[in " THE ,TH-POCKET "]" CR>
<RT-PERFORM ,V?PUT ,GL-PRSO ,TH-POCKET>)
(<MC-VERB? EMPTY EMPTY-INTO>
<TELL "[in " THE ,TH-POCKET "]" CR>
<RT-PERFORM ,GL-PRSA ,GL-PRSO ,TH-POCKET>)>)>>
<ROUTINE RT-AC-TH-LAPEL ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LAPEL">>
<COND (<MC-THIS-PRSI?>
<COND (<AND <MC-VERB? PUT PUT-ON>
<NOT <MC-PRSO? ,TH-CARNATION>>>
<RT-CANT-PUT-IN-ON-MSG ,TH-LAPEL>)>)>>
<ROUTINE RT-AC-TH-CLUMP-OF-MOSS ("OPT" (CONTEXT <>) "AUX" WHO)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CLUMP-OF-MOSS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The clump of moss is a slightly different colour than the
other lichen that surrounds it." CR>)
(<MC-T? .CONTEXT>
<RFALSE>)
(<MC-VERB? LOOK>
<RT-AC-TH-CLUMP-OF-MOSS ,K-M-DESCFCN>
<RTRUE>)
(<ZERO? <RT-THAMES-TIDE>>
<COND (<RT-TOUCH-VERB?>
<TELL "As soon as">
<RT-YOU-MSG "touch" "touches">
<TELL THE ,TH-CLUMP-OF-MOSS ", it crumbles. ">
<RT-CYOU-MSG "are" "is">
<TELL "left holding a beautiful opal." CR>
<MOVE ,TH-OPAL ,GL-WINNER>
<MC-MAKE ,TH-OPAL ,FL-SEEN>
<MC-MAKE ,TH-OPAL ,FL-TOUCHED>
<MC-UNMAKE ,TH-OPAL ,FL-NODESC>
<SET WHO <RT-WHO-SAYS?>>
<COND (<EQUAL? .WHO ,CH-HOLMES>
<TELL CR "Holmes claps you on the shoulder and says, \"Capital, Watson. Capital!\"" CR>)>
<RT-UPDATE-SCORE <GETP ,TH-OPAL ,P?VALUE>>
<PUTP ,TH-OPAL ,P?VALUE 0>
<REMOVE ,TH-CLUMP-OF-MOSS>
<RTRUE>)
(T
<RFALSE>)>)
(<MC-VERB? TAKE>
<COND (<EQUAL? <RT-THAMES-TIDE> 2>
<TELL "The clump is well beyond ">
<RT-YOUR-MSG>
<TELL "grasp." CR>)
(T
<RT-CYOU-MSG>
<TELL "cannot quite reach it." CR>)>
<RTRUE>)
(<MC-VERB? HIT TOUCH TOUCH-TO CUT>
<COND (<OR <AND <MC-VERB? HIT TOUCH>
<MC-PRSI? ,TH-OAR-2>>
<AND <MC-VERB? TOUCH-TO>
<MC-PRSO? ,TH-OAR-2>>>
<RT-CYOU-MSG "knock" "knocks">
<TELL
THE ,TH-CLUMP-OF-MOSS " into the water. It dissolves upon impact and reveals
a beautiful opal, which slowly sinks into the murky depths." CR>
<REMOVE ,TH-CLUMP-OF-MOSS>)
(T
<RT-CYOU-MSG "try" "tries">
<TELL "to hit the moss">
<COND (<MC-VERB? TOUCH-TO>
<TELL " with " THEO>)
(<MC-T? ,GL-PRSI>
<TELL " with " THEI>)>
<TELL " but">
<RT-YOU-MSG "are" "is">
<TELL "not able to reach it." CR>)>
<RTRUE>)
(<MC-VERB? THROW>
<COND (<MC-PRSO? ,CH-TRAINED-PIGEON>
<RFALSE>)
(<RT-IDROP-MSG>
<TELL "Good throw! " CTHEO " hit">
<RT-S-NOS-MSG ,GL-PRSO>
<TELL " the clump, knock">
<RT-S-NOS-MSG ,GL-PRSO>
<TELL " it loose, and everything
falls into the water. " CTHEO " sink">
<RT-S-NOS-MSG ,GL-PRSO>
<TELL " immediately.
The moss, however, dissolves upon impact and reveals a beautiful opal,
which slowly follows " THEO " into the murky depths." CR>
<REMOVE ,TH-CLUMP-OF-MOSS>
<REMOVE ,GL-PRSO>
<FCLEAR ,GL-PRSO ,FL-WORN>)>
<RTRUE>)
(<MC-VERB? SHOOT>
<TELL
"The bullet dislodges the clump and knocks it into the water. The moss
dissolves upon impact and reveals a beautiful opal, which slowly sinks
into the murky depths." CR>
<REMOVE ,TH-CLUMP-OF-MOSS>
<RTRUE>)>>
<ROUTINE RT-AC-TH-BLIGH-BOAT ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-DF "TH-BLIGH-BOAT">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The boat is a true-to-life replica of the rowboat that
Captain Bligh sailed to Pitcairn Island after the mutiny on the Bounty." CR>)
(T
<RFALSE>)>>
<ROUTINE RT-AC-TH-ANCHOR ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ANCHOR">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<IN? ,TH-ANCHOR ,TH-BOAT>
<TELL "It's slimy and green and covered with river crud. Yuck!" CR>)
(T
<TELL "It's in the water." CR>)>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)
(<NOT <IN? ,CH-PLAYER ,TH-BOAT>>
<TELL ,K-MUST-BE-IN-BOAT-MSG "do that." CR>)
(<MC-VERB? TAKE>
<COND (<IN? ,TH-ANCHOR ,TH-BOAT>
<TELL "Oomph! It's too heavy to carry." CR>)
(T
<MOVE ,TH-ANCHOR ,TH-BOAT>
<RT-SAY-RAISE-ANCHOR>)>)
(<MC-VERB? RAISE HAUL WEIGH PULL>
<COND (<IN? ,TH-ANCHOR ,LG-WATER>
<MOVE ,TH-ANCHOR ,TH-BOAT>
<RT-SAY-RAISE-ANCHOR>)
(T
<TELL ,K-ANCHOR-ALREADY-OUT-MSG CR>)>)
(<MC-VERB? LOWER DROP>
<COND (<IN? ,TH-ANCHOR ,LG-WATER>
<TELL "The anchor is already in the water." CR>)
(T
<MOVE ,TH-ANCHOR ,LG-WATER>
<RT-ALARM-CLR ,RT-I-MOVE-DOWNSTREAM>
<RT-SAY-LOWER-ANCHOR>)>)
(<MC-VERB? THROW PUT>
<COND (<MC-PRSI? ,LG-WATER>
<MOVE ,TH-ANCHOR ,LG-WATER>
<RT-ALARM-CLR ,RT-I-MOVE-DOWNSTREAM>
<RT-SAY-LOWER-ANCHOR>)
(<MC-PRSI? ,TH-BOAT>
<MOVE ,TH-ANCHOR ,TH-BOAT>
<RT-SAY-RAISE-ANCHOR>)
(T
<RT-IMPOSSIBLE-MSG>)>)>>
<ROUTINE RT-AC-TH-NELSON-STATUE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-NELSON-STATUE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL CTHE ,TH-NELSON-STATUE
" is perched high above you, on top of the column.">
<COND (<AND <MC-IS? ,TH-NELSON-STATUE ,FL-OPENED>
<IN? ,TH-RUBY ,TH-NELSON-STATUE>>
<TELL " " ,K-GLINT-MSG>)>
<CRLF>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<RT-IMPOSSIBLE-PUT-IN-ON-MSG ,TH-NELSON-STATUE>
<RTRUE>)
(<MC-VERB? LOOK-INSIDE>
<RT-CYOU-MSG>
<TELL "can't see inside the statue." CR>)
(<MC-VERB? REACH-IN SEARCH>
<RT-CYOU-MSG>
<TELL "can't reach the statue." CR>)>>
<ROUTINE RT-AC-TH-CROWN-JEWELS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CROWN-JEWELS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"Despite its adventures, the Regalia doesn't look any the worse for
wear." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<SETG GL-P-IT-OBJECT ,TH-CROWN-JEWELS>
<RFALSE>)>>
<ROUTINE RT-AC-TH-ETHERIUM-AMPOULE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ETHERIUM-AMPOULE">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<COND (<FSET? ,TH-ETHERIUM-AMPOULE ,FL-BROKEN>
<TELL "broken ampoule">)
(T
<TELL "ampoule of etherium">)>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)>
<COND (<FSET? ,TH-ETHERIUM-AMPOULE ,FL-BROKEN>
<RT-AC-TH-BROKEN-AMPOULE>)
(<AND <MC-VERB? MUNG OPEN>
<MC-THIS-PRSO?>>
<COND (<NOT <IN? ,TH-ETHERIUM-AMPOULE ,GL-WINNER>>
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "be holding" ,GL-PRSO>
<TELL " to do that." CR>
<RFATAL>)>
; "Disallow breaking vial in public places, nicely if Holmes
is around, not nicely otherwise."
<COND (<FSET? ,GL-PLACE-CUR ,FL-NO-ETHERIUM>
<COND (<==? <RT-WHO-SAYS?> ,CH-HOLMES>
<TELL "Holmes stops you. \"Do try to be discreet,
old boy. My research is supposed to be kept secret.\"" CR>
<RFATAL>)>
<TELL "The etherium renders everyone quite
unconscious. Unfortunately, word of the unusual phenomenon soon leaks
out, the existence of the secret chemical is exposed, and you are arrested
for violating the Official Secrets Act.||
Because he thinks you are a traitor, even Lestrade refuses to visit you
in prison. His absence is the only bright spot of your twenty-year
incarceration." CR>
<RT-QSR>
<RFATAL>)
(<AND <NOT <MC-HERE? ,RM-LAIR>>
<==? <RT-WHO-SAYS?> ,CH-HOLMES>
<N==? ,GL-PLACE-CUR ,RM-BAR-OF-GOLD>
<NOT <OR <MC-HERE? ,RM-ENTRY-HALL ,RM-HOLMES-STUDY
,RM-EVANGELIST-CHAPEL>
<RT-FIND-FLAME ,GL-PLACE-CUR>>>>
<TELL "Holmes stops you just in time. \"This is neither
the time nor the place for experimentation.\"" CR>
<RTRUE>)>
<CLEAR-ALL-FLAGS ,TH-ETHERIUM-AMPOULE>
<FSET ,TH-ETHERIUM-AMPOULE ,FL-TAKEABLE>
<FSET ,TH-ETHERIUM-AMPOULE ,FL-READABLE>
<FSET ,TH-ETHERIUM-AMPOULE ,FL-BROKEN>
<PUT <GETPT ,TH-ETHERIUM-AMPOULE ,P?ADJECTIVE> 0
,W?BROKEN>
<TELL "You break open the ampoule.">
<COND (<MC-HERE? ,RM-BAR-OF-GOLD>
<TELL
" The etherium fumes mix with the heavy air of the opium den. No one seems to
notice." CR>)
(<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
<COND (<OR <RT-FIND-FLAME ,GL-PLACE-CUR>
<MC-HERE? ,RM-ENTRY-HALL ,RM-HOLMES-STUDY
,RM-EVANGELIST-CHAPEL>>
<TELL
" As soon as the volatile etherium comes in contact with the flame">
<COND (<MC-HERE? ,RM-ENTRY-HALL>
<TELL " of the gas light">)
(<MC-HERE? ,RM-HOLMES-STUDY>
<TELL " of the fireplace">)
(<MC-HERE? ,RM-EVANGELIST-CHAPEL>
<TELL " of the candles">)>
<TELL ", it explodes."
CR CR "B O O M !!!" CR CR
"You awaken several days later in the hospital. Inspector Lestrade is
there with flowers for your bedside table. He is full of news about
how he plans to solve the case. Upon hearing this, you lapse back into
a coma from which you have no particular desire to emerge." CR>
<RT-QSR>)
(T
<TELL " The etherium is released into the room.">
<COND (<MC-ISNOT? ,TH-BREATH ,FL-LOCKED>
<MC-MAKE ,CH-PLAYER ,FL-ASLEEP>
<TELL
" Suddenly, everything starts to spin. You pass out and fall to the
ground. Sometime later you awaken and stumble back to your feet." CR>
<RT-CLOCK-JMP 6 0 0>
<COND (<MC-HERE? ,RM-LAIR>
<RT-DOES-MORIARTY-WIN>)>)
(T
<COND (<RT-ETHERIUM-EFFECT T>
<TELL " You see everyone">
<COND (<RT-VISIBLE? ,CH-HOLMES>
<TELL " but Holmes">)>
<TELL " pass out.">)>
<CRLF>)>
<MOVE ,TH-ETHERIUM-GAS ,GL-PLACE-CUR>
<RT-ALARM-SET-REL ,RT-I-WAKE-UP
<RT-PARM-SET 6 0 0>>)>)
(T
<TELL
" The etherium fumes dissipate quickly." CR>)>
<RTRUE>)
(<AND <MC-THIS-PRSO?>
<OR <MC-VERB? SHOOT>
<AND <MC-VERB? BURN-WITH>
<OR <F? ,GL-PRSI>
<AND <MC-IS? ,GL-PRSI ,FL-BURNABLE>
<MC-IS? ,GL-PRSI ,FL-LIGHTED>>>>>>
<COND (<MC-VERB? SHOOT>
<TELL "Couldn't resist it, could you?">)>
<TELL CR CR "B O O M !!!" CR CR
"Your nerves - already fragile from the Afghan campaign - snap like a
dry twig. You collapse into a babbling pile of jello, and white-coated
attendants take you away to a nice sunlit room where Lestrade visits
on alternate Tuesdays." CR>
<RT-QSR>)
(<AND <MC-VERB? READ EXAMINE LOOK-ON>
<MC-THIS-PRSO?>>
<TELL
"The label on the ampoule reads, \"Etherium. Extremely volatile. Do not open
in the presence of fire.\"" CR>)>>
<ROUTINE RT-AC-TH-BROKEN-AMPOULE ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BROKEN-AMPOULE-GAS">>
<COND (<MC-VERB? SHOOT>
<TELL CTHEO ,K-SHATTER-MSG CR>)>>
<ROUTINE RT-AC-TH-ETHERIUM-GAS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ETHERIUM-GAS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "Etherium is a colourless gas, which">
<RT-YOU-MSG>
<TELL "cannot see." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SMELL>
<COND (<AND <IN? ,TH-ETHERIUM-GAS ,GL-PLACE-CUR>
<MC-ISNOT? ,TH-BREATH ,FL-LOCKED>>
<RT-SMELL-ETHERIUM?>)
(T
<RT-CYOU-MSG>
<TELL "cannot smell it." CR>)>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>>
<ROUTINE RT-AC-TH-LAB-EQUIPMENT ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LAB-EQUIPMENT">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The equipment is a jumble of test tubes, beakers, and pipettes." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<RT-TOUCH-VERB?>
<RT-CYOU-MSG "reach" "reaches">
<TELL "towards the equipment, but then">
<RT-YOU-MSG "recall" "recalls" T>
<TELL
"Holmes's oft-repeated admonition to leave undisturbed his various
experiments, and">
<RT-YOU-MSG "quickly withdraw" "quickly withdraws" T>
<RT-YOUR-MSG>
<TELL "hand." CR>)>>
<ROUTINE RT-AC-TH-ROPE ("OPT" (CONTEXT <>) "AUX" T1 T2)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ROPE">>
<SET T1 ,TH-ROPE-AUX1>
<SET T2 ,TH-ROPE-AUX2>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<EQUAL? .T1 -1>
<RFALSE>)
(T
<TELL CTHE ,TH-ROPE " is securely bound to " THE .T1>)>
<COND (<NOT <EQUAL? .T2 -1>>
<TELL " and " THE .T2>)>
<TELL "." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<COND (<AND <MC-VERB? TAKE>
<NOT <EQUAL? .T1 -1>>>
<TELL CTHE ,TH-ROPE " is securely bound to " THE .T1>
<COND (<NOT <EQUAL? .T2 -1>>
<TELL " and " THE .T2>)>
<TELL "." CR>)
(<OR <AND <MC-VERB? CUT>
<MC-PRSI? ,TH-KNIFE>>
<MC-VERB? UNTIE>>
<COND (<N==? .T1 -1>
<COND (<==? .T2 -1>
<RT-PERFORM ,V?UNTIE .T1>
<RTRUE>)>
<RT-CYOU-MSG "release" "releases">
<COND (<MC-VERB? UNTIE>
<RT-CYOU-MSG "untie" "unties">)
(T
<RT-CYOU-MSG "cut" "cuts">)>
<TELL THE .T1>
<COND (<N==? .T2 -1>
<TELL " and " THE .T2>)>
<TELL ", and">
<RT-YOU-MSG "are" "is">
<TELL "left holding the rope." CR>
<COND (<AND <MC-HERE? ,RM-LAIR>
<EQUAL? ,CH-MORIARTY .T1 .T2>
<MC-ISNOT? ,CH-MORIARTY ,FL-ASLEEP>>
<TELL CR CR
"Bad move. As soon as he is free, Moriarty unlocks his desk and pulls out a
pistol. \"Thank you for releasing me, gentlemen,\" he says, waving the gun at
you. \"Very sporting of you.\" He glances at his pocketwatch. \"We shouldn't
have too long to wait.\" Minutes later you hear newsboys running through the
streets shouting about the resignation of the Prime Minister." CR>
<RT-QSR>)>
<SETG TH-ROPE-AUX1 -1>
<MC-UNMAKE .T1 ,FL-LOCKED>
<COND (<N==? .T2 -1>
<SETG TH-ROPE-AUX2 -1>
<MC-UNMAKE .T2 ,FL-LOCKED>)>
<MOVE ,TH-ROPE ,GL-WINNER>)
(T
<TELL CTHEO "isn't tied to anyone." CR>)>
<RTRUE>)>)>>
<ROUTINE RT-AC-TH-LIQUID ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LIQUID">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's a clear, colourless liquid." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL "Sorry, you missed." CR>)
(<RT-TOUCH-VERB?>
<RT-HOLMES-HITS ,TH-LIQUID>)
(<AND <MC-VERB? SMELL>
<MC-THIS-PRSO?>>
<RT-HOLMES-HITS ,TH-LIQUID>)>>
<ROUTINE RT-AC-TH-SYRINGE ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-SYRINGE">>
<COND (<MC-VERB? SHOOT>
<TELL ,K-ANNIE-OAKELEY-MSG CR>)
(<RT-TOUCH-VERB?>
<RT-HOLMES-HITS ,TH-SYRINGE>)>>
<ROUTINE RT-AC-TH-MOROCCO-CASE ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MOROCCO-CASE">>
<COND (<RT-TOUCH-VERB?>
<COND (<MC-IS? ,CH-HOLMES ,FL-ASLEEP>
<RT-HOLMES-HITS ,TH-MOROCCO-CASE>
<RTRUE>)>)>>
<ROUTINE RT-AC-TH-DEAD-PIGEON ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-DEAD-PIGEON">>
<COND (<AND <MC-VERB? DROP RELEASE THROW>
<MC-PRSO? ,TH-DEAD-PIGEON>>
<TELL "Thud." CR>
<MOVE ,TH-DEAD-PIGEON ,GL-PLACE-CUR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-PIGEONS ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PIGEONS" .CONTEXT>>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The pigeons strut around the square as if they own it."
CR>)
(<MC-THIS-WINNER?>
<TELL CTHE ,TH-PIGEONS " coo in response." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<AND <MC-VERB? TAKE>
<MC-PRSO? ,TH-PIGEONS>>
<TELL CTHE ,TH-PIGEONS " scurry out of reach." CR>
<RTRUE>)
(<AND <MC-VERB? SHOOT>
<MC-PRSO? ,TH-PIGEONS>>
<RT-SHOOT-BIRDS ,TH-PIGEONS "strutting around">
<RTRUE>)>>
<ROUTINE RT-SHOOT-BIRDS (THING STR)
<TELL
CTHE .THING " all fly up into the air at the sound of the gunshot.
Fortunately, none of them was hit. They soon land and resume " .STR "." CR>>
<ROUTINE RT-AC-TH-RED-GLASS ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-RED-GLASS" .CONTEXT>>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's just a worthless bauble." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL CTHEO ,K-SHATTER-MSG CR>)
(<AND <MC-VERB? TAKE>
<IN? ,TH-RUBY ,CH-SHERMAN>>
<RT-IMPOLITE-MSG "take things" "asking">
<RTRUE>)>>
<ROUTINE RT-AC-TH-BED ("AUX" WHO)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BED">>
<COND (<MC-VERB? ENTER>
<TELL ,K-NO-RESTING-MSG CR>
<RTRUE>)
(<MC-VERB? LOOK-UNDER>
<SET WHO <RT-WHO-SAYS?>>
<COND (<EQUAL? .WHO ,CH-HOLMES>
<TELL
"Holmes gives you a swift kick in the rear and says, \"Watson! There are much
more important matters afoot.\"" CR>)
(<EQUAL? .WHO ,CH-WIGGINS>
<TELL
"Wiggins says, \"Would you get yer bleedin' arse in gear.\"" CR>)
(T
<TELL "Looking for monsters?" CR>)>
<RTRUE>)>>
<ROUTINE RT-AC-TH-MATCHBOOK ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MATCHBOOK">>
<COND (<MC-THIS-PRSO?>
<COND (<MC-VERB? READ EXAMINE LOOK-ON>
<TELL CR
"Tired of your dull, boring job? Tired of the whole Victorian era? Become
a detective! Apply now to the LESTRADE school
of sleuthing. In just three short days, Inspector G. Lestrade will teach
you everything he knows of the art of detection. Here are just some of the
things you'll learn." CR CR
"*** Fifteen new and exciting ways to" WRAP "say \"'Ullo! Wot's this?\"" CR
"*** Modern obfuscatory locution" WRAP "eschewel techniques." CR
"*** How to insult private detectives." CR CR
"Included in your tuition is an official Scotland Yard
notebook, and a brand new bobby pin. Just send twenty-five pounds
to the LESTRADE, that's L-E-S-T-R-A-D-E school of sleuthing. Act now, and
the Inspector will tell you how he knows that people are guilty simply
by looking at them." CR>)
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-THIS-PRSO?>>
<COND (<OR <AND <MC-IS? ,GL-PRSI ,FL-LIGHTED>
<MC-IS? ,GL-PRSI ,FL-BURNABLE>>
<AND <MC-PRSI? ,TH-PIPE>
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>>
<TELL CTHE ,TH-MATCHBOOK " catches fire." CR>
<MC-MAKE ,TH-MATCHBOOK ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-MATCHBOOK-OUT
<RT-PARM-SET 0 1 0>>)
(T
<TELL CTHEI>
<RT-ISNT-ARENT-MSG ,GL-PRSI>
<TELL "burning." CR>)>)>)
(<MC-THIS-PRSI?>
<COND (<AND <MC-VERB? PUT PUT-ON>
<NOT <MC-PRSO? ,TH-MATCH ;,TH-BURNT-MATCH>>>
<RT-CANT-PUT-IN-ON-MSG ,TH-MATCHBOOK>)>)>>
<ROUTINE RT-AC-TH-PICTURES ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PICTURES">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "pictures" .CLASS <> T>
<RTRUE>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL "They look just like some of your relatives." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? LOOK-BEHIND>
<TELL
"Thorough, aren't you? There's nothing there."
CR>)>>
<ROUTINE RT-AC-TH-CLUE-BOOK ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CLUE-BOOK">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It looks like a very old book." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<COND (<MC-VERB? READ EXAMINE>
<COND (<MC-IS? ,TH-CLUE-BOOK ,FL-OPENED>
<RT-READ-CLUE-BOOK>)
(T
<TELL "The title is, \"Secret Writing and Invisible Inks.\"" CR>)>
<RTRUE>)
(<MC-VERB? LOOK-INSIDE SEARCH>
<COND (<MC-IS? ,TH-CLUE-BOOK ,FL-OPENED>
<TELL "The pages are yellowed with age." CR>)
(T
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "open it first.">
<CRLF>)>
<RTRUE>)
(<MC-VERB? OPEN>
<COND (<MC-IS? ,TH-CLUE-BOOK ,FL-OPENED>
<TELL "The book is already open." CR>)
(T
<MC-MAKE ,TH-CLUE-BOOK ,FL-OPENED>
<TELL "The book falls open to the introduction." CR>)>)
(<MC-VERB? LIGHT-WITH BURN-WITH>
<TELL
"Perfect example of a typically repressive Victorian mentality." CR>)>)>>
<ROUTINE RT-AC-TH-BOOK-PAGE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BOOK-PAGE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It has writing on it." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? READ EXAMINE>
<COND (<MC-IS? ,TH-CLUE-BOOK ,FL-OPENED>
<RT-READ-CLUE-BOOK>)
(T
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "open">
<TELL "the book first." CR>
<RTRUE>)>
<RTRUE>)
(<MC-VERB? FLIP TURN>
<COND (<MC-IS? ,TH-CLUE-BOOK ,FL-OPENED>
<TELL
"A quick review of the remainder of the book reveals nothing interesting." CR>)
(T
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "open">
<TELL "the book first." CR>
<RTRUE>)>)>>
<ROUTINE RT-READ-CLUE-BOOK ()
<TELL
"A few underlined sentences catch your eye." CR CR
"\"Invisible writing has a long and honorable history. It is used primarily
when it is felt that a code or cipher may be too easily broken.\"" CR CR
"\"Most invisible inks are somewhat sticky to the touch, and virtually all
of them become visible when exposed to moderate heat.\"" CR>>
<ROUTINE RT-AC-TH-BANK-OF-CANDLES ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BANK-OF-CANDLES">>
<COND (<MC-THIS-PRSO?>
<COND (<RT-TOUCH-VERB?>
<TELL
"After a moment's reflection you decide to leave undisturbed
the offerings that others have left behind." CR>
<RTRUE>)>)>>
<ROUTINE RT-AC-TH-PRAMS ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PRAMS">>
<COND (<OR <RT-TOUCH-VERB?>
<MC-VERB? LOOK-INSIDE SEARCH>>
<TELL
"The nannies move the prams beyond your reach and glare at you menacingly." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-PARK-FLOWERS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PARK-FLOWERS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"You see daisies, petunias, roses, peonies, marigolds, and a host of golden
daffodils." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? TAKE>
<TELL "Please don't pick the flowers." CR>
<RTRUE>)
(<MC-VERB? EAT>
<TELL "Please don't eat the daisies." CR>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>>
<ROUTINE RT-AC-TH-ARCH ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ARCH">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "triumphal arch" .CLASS <> <>>
<RTRUE>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's a large triumphal arch, surmounted by a bronze chariot." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)>>
<ROUTINE RT-AC-TH-SHAFT ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-SHAFT">>
<COND (<MC-VERB? EXAMINE LOOK-INSIDE LOOK-DOWN SEARCH>
<TELL "It's a long way down." CR>)
(<MC-VERB? ENTER LEAP>
<TELL ,K-SUICIDE-MSG CR>
<RTRUE>)
(<AND <MC-VERB? PUT>
<MC-THIS-PRSI?>>
<COND (<MC-PRSO? ,CH-TRAINED-PIGEON>
<RFALSE>)
(T
<REMOVE ,GL-PRSO>
<FCLEAR ,GL-PRSO ,FL-WORN>
<TELL CTHEO " disappear">
<RT-S-NOS-MSG ,GL-PRSO>
<TELL " into the shaft. A long time later you hear a faint \"thud.\"" CR>)>)>>
<ROUTINE RT-AC-TH-FIREPLACE ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-FIREPLACE">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "fireplace" .CLASS <> <>>)
(<T? .CONTEXT> <RFALSE>)
(<MC-VERB? EXAMINE LOOK-INSIDE SEARCH>
<TELL "In the fireplace is a roaring fire that would surely
consume anything you put into it." CR>)
(<MC-VERB? ENTER LEAP>
<TELL ,K-SUICIDE-MSG CR>
<RTRUE>)
(<AND <MC-VERB? PUT>
<MC-PRSI? ,PSEUDO-OBJECT>>
<COND (<MC-IS? ,GL-PRSO ,FL-BODYPART>
<TELL ,K-HOT-MSG CR>)
(<IN? ,GL-PRSO ,GLOBAL-OBJECTS>
<RT-IMPOSSIBLE-MSG>
<RTRUE>)
(<AND <==? ,GL-PRSO ,TH-ETHERIUM-AMPOULE>
<NOT <FSET? ,GL-PRSO ,FL-BROKEN>>>
<RT-PERFORM ,V?MUNG ,GL-PRSO>
<RTRUE>)
(<AND <RT-META-IN? ,TH-ETHERIUM-AMPOULE ,GL-PRSO>
<NOT <FSET? ,TH-ETHERIUM-AMPOULE ,FL-BROKEN>>>
<TELL CTHEO " disappear">
<RT-S-NOS-MSG ,GL-PRSO>
<TELL " into the fire, which soon reaches the
etherium.">
<RT-PERFORM ,V?BURN-WITH ,TH-ETHERIUM-AMPOULE>
<RTRUE>)
(T
<REMOVE ,GL-PRSO>
<FCLEAR ,GL-PRSO ,FL-WORN>
<TELL CTHEO " disappear">
<RT-S-NOS-MSG ,GL-PRSO>
<TELL " into the fire and">
<RT-IS-ARE-MSG ,GL-PRSO>
<TELL "immediately consumed." CR>
<COND (<MC-PRSO? ,CH-TRAINED-PIGEON>
<RT-KILL-PIGEON>)>
<RTRUE>)>)
(<MC-VERB? REACH-IN>
<TELL ,K-HOT-MSG CR>
<RTRUE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)>>
<ROUTINE RT-AC-TH-GAS-LIGHT ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-GAS-LIGHT">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "gas light" .CLASS <> <> <>>)
(<T? .CONTEXT> <RFALSE>)
(<RT-TOUCH-VERB?>
<TELL "The gas light is out of reach." CR>
<RTRUE>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>>
<ROUTINE RT-AC-TH-CHARIOT ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CHARIOT">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "chariot" .CLASS <> <>>)
(<T? .CONTEXT> <RFALSE>)
(<RT-TOUCH-VERB?>
<TELL "The chariot is out of reach." CR>
<RTRUE>)
(<MC-VERB? SHOOT>
<TELL ,K-ANNIE-OAKELEY-MSG CR>)>>
<ROUTINE RT-AC-TH-JEWEL-CASE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-JEWEL-CASE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"The case is bent and twisted where the thief attacked it with the mace." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<AND <MC-VERB? LOOK-THRU>
<MC-PRSI? ,TH-MAGNIFYING-GLASS>>
<TELL "It's been wiped clean." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-ELIZAS-MOUTH ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ELIZAS-HEART">>
<COND (<AND <MC-VERB? SHOOT>
<MC-THIS-PRSO?>>
<PUTP ,CH-ELIZA-DOOLITTLE ,P?OBJ-NOUN ,W?GIRL>
<PUTP ,CH-ELIZA-DOOLITTLE ,P?OBJ-ADJ 0>
<RT-PERFORM ,V?SHOOT ,CH-ELIZA-DOOLITTLE>
<RTRUE>)
(<NOT <AND <MC-VERB? PUT>
<MC-THIS-PRSI?>>>
<RFALSE>)
(<MC-ISNOT? ,TH-ELIZAS-MOUTH ,FL-OPENED>
<TELL CTHEI " is not open." CR>)
(<MC-PRSO? ,TH-ORANGE-PILL ,TH-YELLOW-PILL>
<RT-CURE-ELIZA ,GL-PRSO>)
(<NOT <FSET? ,GL-PRSO ,FL-FOOD>>
<TELL "It's hard to imagine that " AO
" would do your patient much good." CR>
<RTRUE>)
(<RT-ROOM-IN-ON-MSG? ,GL-PRSO ,GL-PRSI>
T)
;(<OR <RT-META-IN? ,GL-PRSO ,LOCAL-GLOBALS>
<RT-META-IN? ,GL-PRSO ,GLOBAL-OBJECTS>
<IN? ,GL-PRSO ,ROOMS>>
<TELL "Don't be silly." CR>)
;(<MC-IS? ,CH-ELIZA-DOOLITTLE ,FL-ASLEEP>
<REMOVE ,GL-PRSO>
<RT-CYOU-MSG "put" "puts">
<TELL THEO " into " THEI ". She swallows reflexively, gulping down " THEO "." CR>)>>
<ROUTINE RT-AC-TH-RUBBINGS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-RUBBINGS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"They are brass rubbings made from various inscriptions around
the abbey." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? READ>
<RT-AC-TH-RUBBINGS ,K-M-DESCFCN>
<RTRUE>)>>
<ROUTINE RT-AC-TH-SOFA ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-SOFA">>
<COND (<MC-VERB? ENTER>
<TELL ,K-NO-RESTING-MSG CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-MARQUEES ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MARQUEES">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "marquees" .CLASS <> T>
<RTRUE>)
(<OR <==? .CONTEXT ,K-M-DESCFCN>
<AND <F? .CONTEXT>
<MC-VERB? READ LOOK-INSIDE LOOK-ON>>>
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-MARQUEES>>
<RT-WINDOW ,GL-WINDOW>
<SETG GL-WINDOW <>>
<RTRUE>)>>
<ROUTINE RT-AC-TH-SUPPORTS ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-SUPPORTS">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "supports" .CLASS <> T>)
(<T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)>>
<ROUTINE RT-AC-TH-ASH ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ASH">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It is dark, almost black, in colour, and quite flakey." CR>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? BLOW-INTO SHOOT>
<REMOVE ,TH-ASH>
<TELL CTHE ,TH-ASH " scatters and disappears." CR>)
(<MC-VERB? HAUL>
<TELL "Good idea. Let's get the flake out of here." CR>)
(<MC-VERB? KISS>
<TELL ,K-PROFANITY-MSG CR>)
(<RT-TOUCH-VERB?>
<REMOVE ,TH-ASH>
<TELL "As soon as">
<RT-YOU-MSG "try" "tries">
<TELL "to touch the ash, it crumbles and disappears." CR>)>>
<ROUTINE RT-AC-TH-CIGARETTE ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CIGARETTE">>
<COND (<MC-VERB? SHOOT>
<TELL ,K-ANNIE-OAKELEY-MSG CR>)>>
<ROUTINE RT-AC-TH-TURBAN ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-TURBAN">>
<COND (<OR <RT-TOUCH-VERB?>
<MC-VERB? LOOK-UNDER LOOK-INSIDE>>
<COND (<FSET? ,CH-AKBAR ,FL-ASLEEP>
<TELL "That's stooping pretty low." CR>
<RTRUE>)>
<TELL
"The native of India pulls away from you and says, \"As you must know,">
<COND (<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
<TELL " honourable sir,">)>
<TELL
" a man's head should never be uncovered. It is an affront to God.\"" CR>)
(<MC-VERB? SHOOT>
<RT-PERFORM ,V?SHOOT ,CH-AKBAR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-ANCHOR-CHAIN ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-ANCHOR-CHAIN">>
<COND (<MC-VERB? SHOOT>
<TELL ,K-RICOCHET-MSG CR>)
(<NOT <IN? ,CH-PLAYER ,TH-BOAT>>
<TELL ,K-MUST-BE-IN-BOAT-MSG "do that." CR>)
(<MC-VERB? TAKE>
<COND (<IN? ,TH-ANCHOR ,TH-BOAT>
<TELL "Oomph! It's too heavy to carry." CR>)
(T
<MOVE ,TH-ANCHOR ,TH-BOAT>
<RT-SAY-RAISE-ANCHOR>)>)
(<MC-VERB? RAISE HAUL WEIGH PULL>
<COND (<IN? ,TH-ANCHOR ,LG-WATER>
<MOVE ,TH-ANCHOR ,TH-BOAT>
<RT-SAY-RAISE-ANCHOR>)
(T
<TELL ,K-ANCHOR-ALREADY-OUT-MSG CR>)>)>>
<ROUTINE RT-SAY-LOWER-ANCHOR ()
<RT-CYOU-MSG "lower" "lowers">
<TELL "the anchor into the water." CR>>
<ROUTINE RT-SAY-RAISE-ANCHOR ()
<RT-CYOU-MSG "raise" "raises">
<TELL "the anchor and ">
<COND (<==? ,GL-WINNER ,CH-PLAYER>
<TELL "drop">)
(T
<TELL "drops">)>
<TELL " it into the boat." CR>>
<ROUTINE RT-AC-TH-WAX-OBJECT-1 ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WAX-OBJECT-1">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "that part of the statue" .CLASS T <>>
<RTRUE>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL "You see nothing unusual about">
<RT-CLAUSE-PRINT ,K-P-NC1 ,K-P-NC1L>
<TELL "." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>>
<ROUTINE RT-AC-TH-LIBRARY-OBJ ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-LIBRARY-OBJ">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "things in the library" .CLASS <> T>
<RTRUE>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL "You see nothing unusual about">
<RT-CLAUSE-PRINT ,K-P-NC1 ,K-P-NC1L>
<TELL "." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? LOOK-INSIDE LOOK-OUTSIDE LOOK-THRU-SWP LOOK-UNDER
LOOK-BEHIND LOOK-ON LOOK-THRU SEARCH READ>
<TELL "You see nothing " <RT-PICK-NEXT ,GL-BORING-TXT>
"." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-RAILING ()
<DEBUGGING? <RT-DEBUG-OB-AC "TH-RAILING">>
<COND (<MC-VERB? CLIMB-OVER>
<TELL ,K-SUICIDE-MSG CR>
<RTRUE>)
(<MC-VERB? CLIMB-ON>
<TELL "It's much too dangerous. Besides, it wouldn't bring you
any closer to the clapper." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-OPIUM-GAS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-OPIUM-GAS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "The fumes hang thick in the air." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SMELL>
<TELL ,K-DIZZY-MSG CR>)
(<OR <MC-VERB? BUY BUY-FROM ASK-FOR>
<AND <EQUAL? ,GL-WINNER ,CH-DENKEEPER>
<MC-VERB? ASK-FOR GIVE>>>
<TELL
"The proprietor eyes you for a moment and says, \"A gent the likes of you
doesn't buy what I 'ave to sell, mate. What is it you really want?\"" CR>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>>
<ROUTINE RT-AC-TH-PRODUCE ("OPT" (CONTEXT <>) (CLASS <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PRODUCE">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "produce" .CLASS <> T>
<RTRUE>)
(<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"All the produce looks good. But the giant peas look especially delicious." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? SMELL>
<COND (<EQUAL? <RT-TIME-OF-DAY> 0>
<TELL "The produce smells country fresh." CR>)
(T
<TELL "The produce smells like it's been there a while."
CR>)>
<RTRUE>)
(<MC-VERB? BUY BUY-FROM>
<COND (<EQUAL? <GET ,GL-P-NAMW 0> ,W?FRUIT ,W?FRUITS>
<TELL "You">)
(T
<TELL "Although the giant peas look tempting, you">)>
<TELL
" decide to conserve your capital for more important purchases." CR>)
(<MC-VERB? TAKE STEAL>
<TELL ,K-THEFT-MSG CR>
<RTRUE>)
(<MC-VERB? SHOOT>
<RT-WASTE-OF-BULLETS-MSG>)>>
<ROUTINE RT-AC-TH-TRINKETS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-TRINKETS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL
"They're mostly just baubles. He's obviously charging way too much for them."
CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? BUY BUY-FROM>
<COND (<IN? ,TH-TELESCOPE ,CH-VENDOR>
<TELL
"The vendor says, \"I've got a loverly telescope you might be interested
in, guv'nor.\"" CR>)
(T
<TELL
"You glance at the rest of the vendor's wares and decide you can live
without them." CR>)>
<RTRUE>)
(<MC-VERB? TAKE STEAL>
<TELL ,K-THEFT-MSG CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-GUARDS-KEYS ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-GUARDS-KEYS">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<RT-CYOU-MSG>
<TELL "can't see them. They're in the guard's pocket." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<AND <MC-VERB? LISTEN>
<MC-THIS-PRSO?>>
<TELL
CTHE ,CH-BANK-GUARD " is idly jangling some keys in his pocket." CR>)>>
<ROUTINE RT-AC-TH-NELSON-EYE ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-NELSON-EYE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<AND <MC-IS? ,TH-NELSON-STATUE ,FL-OPENED>
<IN? ,TH-RUBY ,TH-NELSON-STATUE>>
<TELL " " ,K-GLINT-MSG>
<RTRUE>)>
<RFALSE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<RT-TOUCH-VERB?>
<TELL CTHE ,TH-NELSON-EYE " is too high." CR>
<RTRUE>)
(<MC-VERB? LOOK-INSIDE SEARCH>
<COND (<NOT <RT-AC-TH-NELSON-EYE ,K-M-DESCFCN>>
<TELL "It is too high up to get a good look." CR>)>)
(<MC-VERB? SHOOT>
<TELL ,K-ANNIE-OAKELEY-MSG CR>)>>
;<ROUTINE RT-AC-TH-UNINTERESTING-OBJECT ("OPT" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-UNINTERESTING-OBJECT">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<TELL "It's not very interesting." CR>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? TAKE RELEASE MOVE LOOK-UNDER PUSH-TO PUSH>
<RT-CYOU-MSG>
<TELL "can't seem to budge the object." CR>
<RTRUE>)
(<MC-VERB? MUNG SHOOT>
<RT-CYOU-MSG>
<TELL "can't seem to destroy the object." CR>
<RTRUE>)>>
<ROUTINE RT-AC-TH-PANELLING ("OPT" (CONTEXT <>) (CLASS <>))
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "walls" .CLASS <> T>)>>
<ROUTINE RT-AC-TH-INSTRUMENTS ("OPT" (CONTEXT <>) (CLASS <>))
<COND (<==? .CONTEXT ,K-M-SDESC>
<PRINT-SDESC "instruments of torture" .CLASS <> T>)>>
<ROUTINE RT-AC-TH-PLAYER-BODY ()
<COND (<AND <==? <GET ,GL-P-NAMW 0> ,W?NOSE>
<OR <AND <MC-VERB? TAKE>
<==? ,GL-P-PRSA-WORD ,W?HOLD>>
<AND <MC-VERB? STEAL>
<==? ,GL-P-PRSA-WORD ,W?PINCH>>>>
<RT-PERFORM ,V?TAKE ,TH-BREATH>
<RTRUE>)>>