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

944 lines
32 KiB
Plaintext

;*****************************************************************************
; "game : SHERLOCK!"
; "file : CHARLES.ZIL"
; "auth : $Author: RAB $"
; "date : $Date: 28 Oct 1987 19:34:20 $"
; "rev : $Revision: 1.76 $"
; "vers : 1.00"
;*****************************************************************************
;-----------------------------------------------------------------------------
; "TH-WAX-HEAD commented out of THINGS1.ZIL"
; "TH-WAX-AX commented out of THINGS1.ZIL"
; "TH-EMERALD commented out of THINGS1.ZIL"
; "TH-TORCH commented out of THINGS1.ZIL"
; "TH-TOBACCO commented out of THINGS1.ZIL"
;-----------------------------------------------------------------------------
; "RT-AC-TH-MATCH commented out of THINGS2.ZIL"
; "RT-AC-TH-TORCH commented out of THINGS2.ZIL"
; "RT-AC-TH-TOBACCO commented out of THINGS2.ZIL"
; "RT-AC-TH-PIPE commented out of THINGS2.ZIL"
; "RT-AC-TH-MAIL commented out of THINGS2.ZIL"
; "RT-AC-TH-NEWSPAPER commented out of THINGS2.ZIL"
; "RT-AC-TH-WESTMINSTER-CLUE commented out of THINGS2.ZIL"
;-----------------------------------------------------------------------------
; "RT-DF-TH-MAIL commented out of THINGS3.ZIL"
; "RT-DF-TH-NEWSPAPER commented out of THINGS3.ZIL"
; "RT-DF-TH-WESTMINSTER-CLUE commented out of THINGS3.ZIL"
; "RT-DF-TH-TOBACCO commented out of THINGS3.ZIL"
; "RT-DF-TH-PIPE commented out of THINGS3.ZIL"
; "RT-DF-TH-MATCH commented out of THINGS3.ZIL"
; "RT-DF-TH-TORCH commented out of THINGS3.ZIL"
;-----------------------------------------------------------------------------
<OBJECT TH-WAX-HEAD
(LOC TH-CHARLES-STATUE)
(FLAGS FL-TAKEABLE FL-TRYTAKE FL-NODESC FL-NOALL FL-HAS-SDESC
FL-HAS-DESCFCN)
(SYNONYM HEAD WAX)
(ADJECTIVE HEAD WAX)
(SIZE 1 CAPACITY 1 MASS 0)
(GENERIC RT-GN-WAX)
(ACTION RT-AC-TH-WAX-HEAD)>
<VOC "POOL" NOUN>
<VOC "POOL" ADJ>
<OBJECT TH-WAX-AX
(LOC TH-CHARLES-STATUE)
;(DESC "axe")
(FLAGS FL-TAKEABLE FL-VOWEL FL-NODESC FL-NOALL FL-WEAPON
FL-HAS-DESCFCN FL-HAS-SDESC)
(SYNONYM BLADE AX AXE WAX)
(ADJECTIVE WAX WAX)
(SIZE 12 CAPACITY 0 MASS 0)
(GENERIC RT-GN-WAX)
(ACTION DESC-WAX-AX)>
<VOC "MELTED" ADJ>
<OBJECT TH-EMERALD
(FLAGS FL-READABLE FL-TAKEABLE FL-VOWEL FL-SURFACE FL-MONEY
FL-HAS-DESCFCN FL-HAS-SDESC FL-NEEDS-IDENTITY FL-LOSE-IDENTITY)
(OBJ-ADJ 0)
(OBJ-NOUN 0)
(SYNONYM EMERALD GEM GEMS SCRATCH)
(ADJECTIVE GREEN EMERALD EMERALD\'S)
(VALUE 5)
(SIZE 1 MASS 1 CAPACITY 1)
(GENERIC RT-GN-GEM)
(ACTION RT-AC-TH-EMERALD)>
<OBJECT TH-TORCH
(LOC TH-FAWKES-STATUE)
;(DESC "torch")
(FLAGS FL-BURNABLE FL-TAKEABLE FL-NODESC FL-NOALL FL-HAS-SDESC
FL-HAS-DESCFCN)
(SYNONYM TORCH)
(ADJECTIVE ZZZP)
(SIZE 1)
(ACTION RT-AC-TH-TORCH)>
<VOC "BURNT" ADJ>
<OBJECT TH-TOBACCO
(LOC TH-PERSIAN-SLIPPER)
(DESC "tobacco")
(FLAGS FL-TAKEABLE FL-BURNABLE FL-PLURAL FL-COLLECTIVE FL-NOALL
FL-HAS-DESCFCN)
(SYNONYM TOBACCO SHAG)
(ADJECTIVE SHAG)
(VALUE 1)
(SIZE 1)
(ACTION RT-AC-TH-TOBACCO)>
<ROUTINE BURN-OUT-MATCH ()
<FCLEAR ,TH-MATCH ,FL-BURNABLE>
<CLEAR-ALL-FLAGS ,TH-MATCH>
<FSET ,TH-MATCH ,FL-TAKEABLE>
<FSET ,TH-MATCH ,FL-BROKEN>>
<ROUTINE RT-AC-TH-MATCH ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MATCH">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<COND (<FSET? ,TH-MATCH ,FL-BROKEN>
<TELL "burnt match">)
(T
<TELL "match">)>)
(<==? .CONTEXT ,K-M-DESCFCN>
<COND (<FSET? ,TH-MATCH ,FL-BROKEN>
<RFALSE>)
(<MC-IS? ,TH-MATCH ,FL-LIGHTED>
<TELL CTHE ,TH-MATCH " is burning." CR>)
(T <RFALSE>)>)
(<MC-T? .CONTEXT> <RFALSE>)
(<FSET? ,TH-MATCH ,FL-BROKEN>
<COND (<MC-VERB? LAMP-OFF LIGHT STRIKE BURN-WITH LIGHT-WITH>
<TELL "The match is already burned out." CR>)>)
(<AND <MC-VERB? LIGHT-WITH BURN-WITH STRIKE LIGHT>
<MC-PRSO? ,TH-MATCH>>
<COND (<MC-IS? ,TH-MATCH ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<MC-ISNOT? ,TH-MATCH ,FL-BURNABLE>
<TELL CTHEO " is burned out." CR>)
(<OR <MC-PRSI? ,TH-HANDS <>>
<AND <MC-IS? ,GL-PRSI ,FL-LIGHTED>
<MC-IS? ,GL-PRSI ,FL-BURNABLE>>>
<MC-MAKE ,TH-MATCH ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-MATCH-OUT
<RT-PARM-SET 0 2 0>>
<MOVE ,TH-MATCH ,GL-WINNER>
<TELL CTHEO " flares to life." CR>)>)
(<MC-VERB? LAMP-OFF>
<COND (<MC-ISNOT? ,TH-MATCH ,FL-LIGHTED>
<TELL CTHEO " isn't lit." CR>)
(T
<MC-UNMAKE ,TH-MATCH ,FL-LIGHTED>
;<MC-UNMAKE ,TH-MATCH ,FL-BURNABLE>
<BURN-OUT-MATCH>
;<MOVE ,TH-BURNT-MATCH <LOC ,TH-MATCH>>
;<REMOVE ,TH-MATCH>
<RT-ALARM-CLR ,RT-I-MATCH-OUT>
<RT-CYOU-MSG "blow" "blows">
<TELL "out the match." CR>)>)>>
<ROUTINE CLEAR-ALL-FLAGS (OBJ)
<REPEAT ((N 1))
<COND (<NOT <EQUAL? .N ,FL-HAS-SDESC ,FL-HAS-DESCFCN ,FL-NEEDS-IDENTITY
,FL-LOSE-IDENTITY>>
<FCLEAR .OBJ .N>)>
<COND (<G? <SET N <+ .N 1>> 48> <RETURN>)>>>
<ROUTINE RT-AC-TH-TORCH ("OPTIONAL" (CONTEXT <>) "AUX" WHO)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-TORCH">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<COND (<FSET? ,TH-TORCH ,FL-BROKEN>
<TELL "burnt torch">)
(T
<TELL "torch">)>)
(<==? .CONTEXT ,K-M-DESCFCN>
<COND (<FSET? ,TH-TORCH ,FL-BROKEN>
<RFALSE>)
(<MC-IS? ,TH-TORCH ,FL-LIGHTED>
<TELL CTHE ,TH-TORCH " is burning." CR>
<RTRUE>)>
<RFALSE>)
(<FSET? ,TH-TORCH ,FL-BROKEN>
<RFALSE>
;<RT-AC-TH-BURNT-TORCH .CONTEXT>)
(<AND <MC-VERB? MELT HEAT LIGHT-WITH BURN-WITH>
<MC-PRSI? ,TH-TORCH>>
<COND (<MC-ISNOT? ,TH-TORCH ,FL-LIGHTED>
<TELL CTHE ,TH-TORCH " is not lit." CR>)
(<MC-PRSO? ,TH-TORCH>
<TELL CTHEO " is already lit." CR>)
(<MC-PRSO? ,TH-WAX-HEAD>
;<REMOVE ,TH-WAX-HEAD>
;<MOVE ,TH-WAX-POOL ,GL-PLACE-CUR>
<TELL
CTHEO " melts into a pool of wax on the floor. You see
a gem glittering in the wax." CR>
<MOVE ,TH-WAX-HEAD ,GL-PLACE-CUR>
<MOVE ,TH-EMERALD ,TH-WAX-HEAD>
<CLEAR-ALL-FLAGS ,TH-WAX-HEAD>
<FSET ,TH-WAX-HEAD ,FL-OPENED>
<FSET ,TH-WAX-HEAD ,FL-TRANSPARENT>
<FSET ,TH-WAX-HEAD ,FL-CONTAINER>
<FSET ,TH-WAX-HEAD ,FL-BROKEN>
<SET-MASS-TO-ONE ,TH-WAX-HEAD>
<PUT <GETPT ,TH-WAX-HEAD ,P?SYNONYM> 0 ,W?POOL>
<PUT <GETPT ,TH-WAX-HEAD ,P?ADJECTIVE> 0 ,W?POOL>
<RT-THIS-IS-IT ,TH-EMERALD>)
(<MC-PRSO? ,TH-WAX-AX>
;<REMOVE ,TH-WAX-AX>
;<MOVE ,TH-MELTED-AX ,GL-PLACE-CUR>
<TELL CTHEO " melts into a pool of wax on the floor." CR>
<MOVE ,TH-WAX-AX ,GL-PLACE-CUR>
<CLEAR-ALL-FLAGS ,TH-WAX-AX>
<FSET ,TH-WAX-AX ,FL-OPENED>
<FSET ,TH-WAX-AX ,FL-TRANSPARENT>
<FSET ,TH-WAX-AX ,FL-CONTAINER>
<FSET ,TH-WAX-AX ,FL-BROKEN>
<SET-SIZE-TO-ONE ,TH-WAX-AX>
<SET-CAPACITY-TO-ONE ,TH-WAX-AX>
<SET-MASS-TO-ONE ,TH-WAX-AX>
<PUT <GETPT ,TH-WAX-AX ,P?SYNONYM> 0 ,W?AX>
<PUT <GETPT ,TH-WAX-AX ,P?ADJECTIVE> 0 ,W?MELTED>)
(<MC-ISNOT? ,GL-PRSO ,FL-BURNABLE>
<RT-CYOU-MSG>
<TELL "cannot " VW " " THEO " with " THEI "." CR>)>)
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-PRSO? ,TH-TORCH>>
<COND (<AND <MC-PRSI? ,TH-TOBACCO ,TH-PIPE>
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
<TELL CTHEI>
<RT-DONT-DOESNT-MSG ,GL-PRSI>
<TELL "put out enough heat to light " THEO "." CR>)
(<MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
<RT-CYOU-MSG>
<TELL "cannot light " THEO " with " THEI "." CR>)
(<MC-ISNOT? ,GL-PRSI ,FL-LIGHTED>
<TELL CTHEI>
<RT-ISNT-ARENT-MSG ,GL-PRSI>
<TELL "burning." CR>)
(T
<TELL CTHEO " catches fire quickly." CR>
<MC-MAKE ,TH-TORCH ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-TORCH-OUT <RT-PARM-SET 1 0 0>>
<SET WHO <RT-WHO-SAYS?>>
<COND (<EQUAL? .WHO ,CH-HOLMES>
<TELL CR
"Holmes looks at you and says, \"An ingenious solution, Watson. My
compliments, old chap.\"" CR>)>
<RT-UPDATE-SCORE 4>)>)>>
<ROUTINE RT-LIGHT-PIPE (FIRE)
<COND (<MC-ISNOT? .FIRE ,FL-BURNABLE>
<RT-CYOU-MSG>
<TELL "cannot light " THEO " with " THEI "." CR>)
(<MC-ISNOT? .FIRE ,FL-LIGHTED>
<TELL CTHE .FIRE " is not burning." CR>)
(<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<IN? ,TH-TOBACCO ,TH-PIPE>
<MC-MAKE ,TH-TOBACCO ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-PIPE-OUT <RT-PARM-SET 0 15 0>>
<TELL "After a few puffs, " THEO " fires right up." CR>)>>
<ROUTINE RT-AC-TH-TOBACCO ("OPTIONAL" (CONTEXT <>) "AUX" I)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-TOBACCO">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<TELL CTHE ,TH-TOBACCO " is burning." CR>)
(T
<TELL "It's Holmes's favorite brand of shag tobacco." CR>)>
<RTRUE>)
(<MC-THIS-PRSO?>
<SETG GL-P-IT-OBJECT ,TH-TOBACCO>)>
<COND (<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-PRSO? ,TH-TOBACCO>>
<COND (<MC-PRSI? <> ,TH-HANDS>
<SET I ,TH-MATCH>)
(T
<SET I ,GL-PRSI>)>
<COND (<NOT <IN? .I ,GL-WINNER>>
<RT-CYOU-MSG "are" "is">
<TELL "not holding " A .I "." CR>)
(<NOT <IN? ,TH-PIPE ,GL-WINNER>>
<RT-CYOU-MSG "are" "is">
<TELL "not holding " THE ,TH-PIPE "." CR>)
(<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<RT-LIGHT-PIPE .I>
<RTRUE>)
(T
<TELL CTHEO " " ,K-SMOULDERS-MSG CR>)>)
(<AND <MC-VERB? TAKE TOUCH>
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
<TELL "Yeeeeouch! That's hot!" CR>)
;(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-PRSI? ,TH-TOBACCO>
<MC-IS? ,GL-PRSO ,FL-BURNABLE>>
<COND (<MC-PRSO? ,TH-TORCH>
<RFALSE>)
(<MC-ISNOT? ,TH-TOBACCO ,FL-LIGHTED>
<TELL CTHEI " is not lit." CR>)
(<MC-IS? ,GL-PRSO ,FL-LIGHTED>
<TELL CTHEO " is already burning." CR>)
(<MC-PRSO? ,TH-NEWSPAPER ,TH-WESTMINSTER-CLUE ,TH-MAIL>
<TELL CTHEO " lights right up." CR>
<MC-MAKE ,GL-PRSO ,FL-LIGHTED>
<COND (<MC-PRSO? ,TH-NEWSPAPER>
<RT-ALARM-SET-REL ,RT-I-NEWSPAPER-OUT <RT-PARM-SET 0 3 0>>)
(<MC-PRSO? ,TH-WESTMINSTER-CLUE>
<RT-ALARM-SET-REL ,RT-I-CLUE-OUT <RT-PARM-SET 0 3 0>>)
(<MC-PRSO? ,TH-MAIL>
<RT-ALARM-SET-REL ,RT-I-MAIL-OUT <RT-PARM-SET 0 3 0>>)>)
(T
<TELL "Unfortunately, " THEI " doesn't put out enough heat to light " THEO "." CR>)>)
(<MC-VERB? SMOKE>
<COND (<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<TELL ,K-BRAND-MSG CR>)
(T
<TELL CTHEO " is not lit." CR>)>)
(<MC-VERB? SMELL>
<TELL "The shag has a strong, but pleasant smell." CR>)>>
<ROUTINE RT-AC-TH-PIPE ("OPTIONAL" (CONTEXT <>) "AUX" I DEST)
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PIPE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<AND <MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<IN? ,TH-TOBACCO ,TH-PIPE>>
<TELL "Smoke gently wafts from " THE ,TH-PIPE "." CR>)
(T
<TELL "It is an old and oily black clay pipe, the companion of Holmes's deepest meditations." CR>)>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<COND (<MC-VERB? LIGHT-WITH BURN-WITH>
<COND (<MC-PRSI? <> ,TH-HANDS>
<SET I ,TH-MATCH>)
(T
<SET I ,GL-PRSI>)>
<COND (<NOT <IN? .I ,GL-WINNER>>
<RT-CYOU-MSG "are" "is">
<TELL "not holding " A .I "." CR>)
(<NOT <IN? ,TH-PIPE ,GL-WINNER>>
<RT-CYOU-MSG "are" "is">
<TELL "not holding " THE ,TH-PIPE "." CR>)
(<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<RT-LIGHT-PIPE .I>
<RTRUE>)
;(<FIRST? ,TH-PIPE>
<RT-CYOU-MSG>
<TELL "cannot light " THE <FIRST? ,TH-PIPE>
" in " THE ,TH-PIPE "." CR>)
(T
<TELL "There is nothing in the pipe to light." CR>)>)
(<AND <MC-VERB? PUT>
<MC-PRSI? ,TH-PLAYER-BODY>
<==? <ZGET ,GL-P-NAMW 1> ,W?MOUTH>>
<RT-PERFORM ,V?SMOKE ,TH-PIPE>)
(<MC-VERB? SMOKE>
<COND (<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
<TELL ,K-BRAND-MSG CR>)
(T
<TELL CTHEO " is not lit." CR>)>)
(<AND <MC-VERB? EMPTY-INTO POUR>
<IN? ,TH-TOBACCO ,TH-PIPE>
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
<COND (<MC-VERB? POUR>
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
<MOVE ,TH-TOBACCO ,GL-PLACE-CUR>
<TELL CTHE ,TH-TOBACCO " falls ">
<COND (<MC-HERE? ,RM-THAMES-ONE ,RM-THAMES-TWO
,RM-THAMES-THREE ,RM-THAMES-FOUR
,RM-THAMES-FIVE>
<REMOVE ,TH-TOBACCO>
<TELL "into the water." CR>)
(T
<TELL "to ">
<COND (<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
<TELL-THE-FLOOR>)
(T
<TELL-THE-GROUND>)>
<TELL ", " ,K-SMOULDERS-MSG CR>)>)
(<MC-VERB? EMPTY-INTO>
<COND (<RT-ROOM-IN-ON-MSG? ,TH-TOBACCO ,GL-PRSI>
<RTRUE>)
(<RT-CHECK-MOVE-MSG? ,TH-TOBACCO ,GL-PRSI>
<RTRUE>)
(T
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
<MOVE ,TH-TOBACCO ,GL-PRSI>
<TELL CTHE ,TH-TOBACCO " falls ">
<COND (<MC-IS? ,GL-PRSI ,FL-CONTAINER>
<TELL "into">)
(T
<TELL "onto">)>
<TELL " " THEI ", " ,K-SMOULDERS-MSG CR>)>)>)>)
(<MC-THIS-PRSI?>
<COND (<AND <MC-VERB? PUT>
<NOT <MC-PRSO? ,TH-TOBACCO>>>
<TELL "Putting " THEO " in " THEI " would">
<RT-WASTE-OF-TIME-MSG>)
(<AND <MC-VERB? POUR-FROM>
<MC-PRSO? ,TH-TOBACCO>
<IN? ,TH-TOBACCO ,TH-PIPE>
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
<MOVE ,TH-TOBACCO ,GL-PLACE-CUR>
<TELL CTHEO " falls to ">
<COND (<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
<TELL-THE-FLOOR>)
(T
<TELL-THE-GROUND>)>
<TELL ", " ,K-SMOULDERS-MSG CR>)
;(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-THIS-PRSI?>
<MC-IS? ,GL-PRSO ,FL-BURNABLE>>
<COND (<MC-PRSO? ,TH-TORCH>
<RFALSE>)
(<MC-ISNOT? ,TH-TOBACCO ,FL-LIGHTED>
<TELL CTHEI " is not lit." CR>)
(<MC-IS? ,GL-PRSO ,FL-LIGHTED>
<TELL CTHEO " is already burning." CR>)
(<MC-PRSO? ,TH-NEWSPAPER ,TH-WESTMINSTER-CLUE ,TH-MAIL>
<TELL CTHEO " lights right up." CR>
<MC-MAKE ,GL-PRSO ,FL-LIGHTED>
<COND (<MC-PRSO? ,TH-NEWSPAPER>
<RT-ALARM-SET-REL ,RT-I-NEWSPAPER-OUT <RT-PARM-SET 0 3 0>>)
(<MC-PRSO? ,TH-WESTMINSTER-CLUE>
<RT-ALARM-SET-REL ,RT-I-CLUE-OUT <RT-PARM-SET 0 3 0>>)
(<MC-PRSO? ,TH-MAIL>
<RT-ALARM-SET-REL ,RT-I-MAIL-OUT <RT-PARM-SET 0 3 0>>)>)
(T
<TELL "Unfortunately, " THEI " doesn't put out
enough heat to light " THEO "." CR>)>)>)>>
<ROUTINE RT-AC-TH-MAIL ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MAIL">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-MAIL ,FL-LIGHTED>
<TELL CTHE ,TH-MAIL " is burning." CR>
<RTRUE>)
(T
<RFALSE>)>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-THIS-PRSO?>
<SETG GL-P-IT-OBJECT ,TH-MAIL>)>
<COND (<MC-VERB? READ EXAMINE LOOK-ON LOOK-INSIDE OPEN SEARCH OPEN-WITH>
<TELL "You should not read other people's mail." CR>)
(<MC-VERB? CLOSE>
<TELL "The mail hasn't been opened." CR>)
(<AND <MC-VERB? TAKE>
<T? ,KNIFE-COLD?>>
<SETG KNIFE-COLD? <>>
<MOVE ,TH-KNIFE ,GL-WINNER>
<TELL "[Taking the knife first]">
<COND (,GL-P-MULT?
<TELL " ">)
(T
<CRLF>)>
<RFALSE>)
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-THIS-PRSO?>>
<COND (<MC-IS? ,TH-MAIL ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<AND <MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
<NOT <MC-PRSI? ,TH-PIPE>>>
<RFALSE>)
(<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-MAIL " lights up." CR>
<MC-MAKE ,TH-MAIL ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-MAIL-OUT <RT-PARM-SET 0 3 0>>)
(T
<TELL CTHEI>
<RT-ISNT-ARENT-MSG ,GL-PRSI>
<TELL "burning." CR>)>)>>
<ROUTINE RT-AC-TH-NEWSPAPER ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-NEWSPAPER">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-NEWSPAPER ,FL-LIGHTED>
<TELL CTHE ,TH-NEWSPAPER " is burning." CR>)
(T
<TELL
"It's the newspaper that came in your game package."
CR>)>
<RTRUE>)
(<MC-T? .CONTEXT> <RFALSE>)
(<NOT <MC-VERB? READ READ-TO SHOW LIGHT-WITH BURN-WITH
GIVE TELL-ABOUT>>
<RFALSE>)
(<NOT <IN? ,TH-NEWSPAPER ,CH-PLAYER>>
<TELL "The newspaper will not leap into your hand by itself." CR>)
(<MC-VERB? READ>
<RT-READ-NEWSPAPER>)
(<OR <AND <MC-VERB? READ-TO SHOW GIVE>
<MC-THIS-PRSO?>>
<AND <MC-VERB? TELL-ABOUT>
<MC-THIS-PRSI?>>>
<COND (<MC-ISNOT? ,GL-PRSI ,FL-PERSON>
<RFALSE>)
(<OR <MC-IS? ,TH-NEWSPAPER ,FL-ASLEEP>
<MC-IS? ,TH-NEWSPAPER ,FL-OPENED>>
<RT-READ-NEWSPAPER>
<CRLF>)>
<COND (<OR <AND <MC-VERB? READ-TO SHOW GIVE>
<MC-PRSI? ,CH-HOLMES>>
<AND <MC-VERB? TELL-ABOUT>
<MC-PRSO? ,CH-HOLMES>>>
<COND (<MC-IS? ,CH-HOLMES ,FL-ASLEEP>
<RT-WAKE-UP-HOLMES>
<COND
(<MC-VERB? GIVE>
<MOVE ,TH-NEWSPAPER ,CH-HOLMES>)>
<RTRUE>)
;(T
<TELL "\"Don't be tedious, Watson. You have ">
<COND (<MC-VERB? READ-TO>
<TELL "read">)
(<MC-VERB? SHOW>
<TELL "shown">)
(<MC-VERB? GIVE>
<TELL "given">)
(<MC-VERB? TELL-ABOUT>
<TELL "mentioned">)>
<TELL " that to me already.\"" CR>)>)
(T
<TELL CTHEI>
<RT-DONT-DOESNT-MSG ,GL-PRSI>
<TELL "seem to be interested." CR>)>)
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-THIS-PRSO?>>
<COND (<MC-IS? ,TH-NEWSPAPER ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<AND <MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
<NOT <MC-PRSI? ,TH-PIPE>>>
<RFALSE>)
(<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-NEWSPAPER " lights up." CR>
<MC-MAKE ,TH-NEWSPAPER ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-NEWSPAPER-OUT <RT-PARM-SET 0 3 0>>
<RTRUE>)
(T
<TELL CTHEI>
<RT-ISNT-ARENT-MSG ,GL-PRSI>
<TELL "burning." CR>)>)>>
<ROUTINE RT-AC-TH-WESTMINSTER-CLUE ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WESTMINSTER-CLUE">>
<COND (<==? .CONTEXT ,K-M-DESCFCN>
<COND (<MC-IS? ,TH-MAIL ,FL-LIGHTED>
<TELL CTHE ,TH-MAIL " is burning." CR>
<RTRUE>)
(T <RFALSE>)>)
(<MC-T? .CONTEXT> <RFALSE>)
(<MC-VERB? READ EXAMINE>
<COND (<NOT <IN? ,TH-WESTMINSTER-CLUE ,CH-PLAYER>>
<TELL "The paper will not leap into your hand by itself." CR>)
(<ZERO? <GETP ,TH-WESTMINSTER-CLUE ,P?FLIPPED>>
<TELL
INDENT "Mortality, behold and fear!" CR
INDENT "What a change of flesh is here!" CR
INDENT "Think how many royal bones" CR
INDENT "Sleep within this heap of stones:" CR
INDENT "Here they lie, had realms and lands," CR
INDENT "Who now want strength" WRAP "to stir their hands." CR CR
INDENT ,K-ASTERISK-MSG CR CR
INDENT "For two-score years I reigned alone," CR
INDENT "A virgin queen on England's throne." CR
INDENT "My navy caused Armada's shame," CR
INDENT "And with me died the Tudor name." CR CR
INDENT ,K-ASTERISK-MSG CR CR
INDENT "The apple sorely tempted Eve," CR
INDENT "And Tell another aimed to cleave." CR
INDENT "But when one fell, it showed to me," CR
INDENT "The mighty pull of gravity." CR CR
INDENT ,K-ASTERISK-MSG CR CR
INDENT "My father, it was said, would die," CR
INDENT "Beneath the Holy City's sky." CR
INDENT "Jerusalem his body claimed," CR
INDENT "And it is after him I'm named." CR CR
INDENT ,K-ASTERISK-MSG CR CR
INDENT ,K-ASTERISK-MSG CR CR
INDENT "O stately Holmes of England," CR
INDENT "In Baker Street abide." CR
INDENT "For even you must surely fail," CR
INDENT "To save your country's pride." CR>)
(T
<TELL "This side appears to be blank." CR>)>)
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
<MC-THIS-PRSO?>>
<COND (<MC-IS? ,TH-WESTMINSTER-CLUE ,FL-LIGHTED>
<TELL CTHEO " is already lit." CR>)
(<AND <MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
<NOT <MC-PRSI? ,TH-PIPE>>>
<RFALSE>)
(<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-WESTMINSTER-CLUE " lights up." CR>
<MC-MAKE ,TH-WESTMINSTER-CLUE ,FL-LIGHTED>
<RT-ALARM-SET-REL ,RT-I-CLUE-OUT <RT-PARM-SET 0 3 0>>)
(T
<TELL CTHEI>
<RT-ISNT-ARENT-MSG ,GL-PRSI>
<TELL "burning." CR>)>
<RTRUE>)
(<MC-VERB? FLIP>
<COND (<NOT <IN? ,TH-WESTMINSTER-CLUE ,GL-WINNER>>
<RT-CYOU-MSG "are" "is">
<TELL "not holding " THE ,TH-WESTMINSTER-CLUE "." CR>)
(T
<PUTP ,TH-WESTMINSTER-CLUE ,P?FLIPPED <- 1 <GETP ,TH-WESTMINSTER-CLUE ,P?FLIPPED>>>
<RT-CYOU-MSG "turn" "turns">
<TELL THE ,TH-WESTMINSTER-CLUE " over." CR>)>)
(<AND <MC-VERB? LOOK-THRU>
<MC-PRSI? ,TH-MAGNIFYING-GLASS>>
<TELL "It's been wiped clean." CR>)>>
<CONSTANT K-HOLMES-HEAD? 1> ; "Has Holmes made comment about Charles I head?"
<CONSTANT K-HOLMES-GEM? 2> ; "Has Holmes made comment about gem?"
<ROUTINE RT-AC-TH-WAX-HEAD ("OPTIONAL" (CONTEXT <>))
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WAX-HEAD">>
<COND (<==? .CONTEXT ,K-M-SDESC>
<COND (<FSET? ,TH-WAX-HEAD ,FL-BROKEN>
<TELL "wax pool">)
(T
<TELL "wax head">)>)
(<==? .CONTEXT ,K-M-DESCFCN>
<COND (<NOT <FSET? ,TH-WAX-HEAD ,FL-BROKEN>>
<RFALSE>)
(<NOT <FIRST? ,TH-WAX-HEAD>>
<TELL "Looks like any other " D ,TH-WAX-HEAD "." CR>)>)
(<NOT <FSET? ,TH-WAX-HEAD ,FL-BROKEN>> ; "STILL THE HEAD"
<COND (<IN? ,TH-WAX-HEAD ,TH-CHARLES-STATUE>
<COND (<MC-VERB? TAKE ;UNSCREW UNSCREW-FROM>
<MOVE ,TH-WAX-HEAD ,GL-WINNER>
<MC-MAKE ,TH-WAX-HEAD ,FL-SEEN>
<MC-UNMAKE ,TH-WAX-HEAD ,FL-NODESC>
<MC-UNMAKE ,TH-WAX-HEAD ,FL-NOALL>
<COND (,GL-P-MULT?
<TELL "Taken." CR>)
(T
<RT-CYOU-MSG "take" "takes">
<TELL THE ,TH-WAX-HEAD "." CR>)>)
(<RT-TOUCH-VERB?>
<MC-MAKE ,TH-WAX-HEAD ,FL-SEEN>
<TELL CTHE ,TH-WAX-HEAD " wobbles slightly.">
<COND (<MC-F? <BAND ,CH-HOLMES-AUX1 ,K-HOLMES-HEAD?>>
<TELL " " THE ,CH-HOLMES
" says, \"Even when he was alive, he didn't have his head screwed on right.\"">
<SETG CH-HOLMES-AUX1 <BOR ,CH-HOLMES-AUX1 ,K-HOLMES-HEAD?>>)>
<CRLF>)>)
(<AND <MC-VERB? MELT HEAT>
<MC-THIS-PRSO?>
<OR <AND <MC-IS? ,GL-PRSI ,FL-BURNABLE>
<MC-IS? ,GL-PRSI ,FL-LIGHTED>>
<AND <MC-PRSI? ,TH-PIPE>
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>>>
<TELL CTHEO " softens, but " THEI
" does not put out enough heat to melt it." CR>)
(<MC-VERB? MUNG KILL OPEN>
<RT-CYOU-MSG>
<TELL "can't break into the head." CR>)>)
(T ; "NOW THE POOL"
<RFALSE>)>>
<ROUTINE DESC-WAX-AX ("OPTIONAL" (CONTEXT <>))
<COND (<==? .CONTEXT ,K-M-SDESC>
<COND (<FSET? ,TH-WAX-AX ,FL-BROKEN>
<TELL "melted axe">)
(T
<TELL "axe">)>)
(<==? .CONTEXT ,K-M-DESCFCN>
<COND (<NOT <FSET? ,TH-WAX-AX ,FL-BROKEN>> <RFALSE>)
(<NOT <FIRST? ,TH-WAX-AX>>
<TELL "Looks like any other " D ,TH-WAX-AX "." CR>)>)>>
<ROUTINE RT-GUARD-TAKE-ITEM (OBJ1 "OPTIONAL" (OBJ2 <>) (OBJ3 <>) "AUX" STR)
<TELL CTHE ,CH-TUSSAUDS-GUARD " says, \"I'm sorry, but " THE .OBJ1>
<COND (<AND .OBJ2 .OBJ3>
<TELL ", " THE .OBJ2 " and " THE .OBJ3 " are">
<SET STR "them">)
(<MC-T? .OBJ2>
<TELL " and " THE .OBJ2 " are">
<SET STR "them">)
(T
<TELL " is">
<SET STR "it">)>
<TELL
" not to be removed.\" He takes " .STR " and returns " .STR " to the proper
place." CR CR>>
<ROUTINE RT-GUARD-STOP-ENTRANCE ("OPTIONAL" (OBJ <>) "AUX" WHO)
<SET WHO <RT-WHO-SAYS?>>
<IFSOUND <SOUNDS ,S-BARK ,S-START 8 4>>
<TELL CTHE ,CH-MATCH-SNIFFING-DOG " barks loudly and " THE
,CH-TUSSAUDS-GUARD " says, \"Seeing as how it's you, ">
<COND (<EQUAL? .WHO ,CH-HOLMES>
<TELL "Mr Holmes">)
(T
<TELL "Doctor Watson">)>
<TELL
", I don't mind letting you in. But as you know we are very afraid of
fire here, so we have trained this dog to detect matches or open
flames. I'm afraid I can't allow you">
<COND (<EQUAL? .WHO ,CH-HOLMES ,CH-WIGGINS>
<TELL " or your companion">)>
<TELL " to enter until " THE .OBJ " has been discarded.\"" CR>
;<COND (<AND .OBJ ;"COND ALWAYS TRUE"
<OR <IN? .OBJ ,CH-PLAYER>
<AND ,GL-PUPPY
<IN? .OBJ ,GL-PUPPY>>>>
<TELL THE .OBJ>)
(T
<TELL "the item">
<COND (<NOT .OBJ>
<TELL "s">)>
<TELL " to which the dog objects">)>
;<TELL " ha">
;<COND (.OBJ
<TELL "s">)
(T
<TELL "ve">)>
;<TELL " been discarded.\"" CR>>
<ROUTINE RT-EX-RM-EXIT-TUSSAUDS ("AUX" IN1 IN2 IN3 TORCH)
<COND (<AND <EQUAL? ,GL-PRSO ,P?SOUTH ,P?OUT>
<MC-HERE? ,RM-MADAME-TUSSAUDS>>
<SET IN1
<COND (<OR <RT-META-IN? ,TH-TORCH ,GL-WINNER>
<RT-META-IN? ,TH-TORCH ,GL-PUPPY>>
<SET TORCH ,TH-TORCH>)
;(<OR <RT-META-IN? ,TH-BURNT-TORCH ,GL-WINNER>
<RT-META-IN? ,TH-BURNT-TORCH ,GL-PUPPY>>
<SET TORCH ,TH-BURNT-TORCH>)>>
<SET IN2 <OR <RT-META-IN? ,TH-WAX-HEAD ,GL-WINNER>
<RT-META-IN? ,TH-WAX-HEAD ,GL-PUPPY>>>
<SET IN3 <OR <RT-META-IN? ,TH-WAX-AX ,GL-WINNER>
<RT-META-IN? ,TH-WAX-AX ,GL-PUPPY>>>
<COND (<AND .IN1 .IN2 .IN3>
<RT-GUARD-TAKE-ITEM ,TH-TORCH ,TH-WAX-HEAD ,TH-WAX-AX>)
(<AND .IN1 .IN2>
<RT-GUARD-TAKE-ITEM ,TH-TORCH ,TH-WAX-HEAD>)
(<AND .IN1 .IN3>
<RT-GUARD-TAKE-ITEM ,TH-TORCH ,TH-WAX-AX>)
(<AND .IN2 .IN3>
<RT-GUARD-TAKE-ITEM ,TH-WAX-HEAD ,TH-WAX-AX>)
(<MC-T? .IN1>
<RT-GUARD-TAKE-ITEM ,TH-TORCH>)
(<MC-T? .IN2>
<RT-GUARD-TAKE-ITEM ,TH-WAX-HEAD>)
(<MC-T? .IN3>
<RT-GUARD-TAKE-ITEM ,TH-WAX-AX>)>
<COND (<MC-T? .IN1>
<MOVE .TORCH ,TH-FAWKES-STATUE>
<MC-MAKE .TORCH ,FL-NODESC>
<COND (<MC-IS? .TORCH ,FL-LIGHTED>
<RT-ALARM-CLR ,RT-I-TORCH-OUT>
<RT-I-TORCH-OUT>
<MC-MAKE ,TH-TORCH ,FL-NODESC>
;<MC-MAKE ,TH-BURNT-TORCH ,FL-NODESC>)>)>
<COND (<MC-T? .IN2>
<MOVE ,TH-WAX-HEAD ,TH-CHARLES-STATUE>
<MC-MAKE ,TH-WAX-HEAD ,FL-NODESC>)>
<COND (<MC-T? .IN3>
<MOVE ,TH-WAX-AX ,TH-CHARLES-STATUE>
<MC-MAKE ,TH-WAX-AX ,FL-NODESC>)>
<RETURN ,RM-MARYLEBONE-RD>)>>
; "NORTH from RM-MARYLEBONE-RD to RM-MADAME-TUSSAUDS"
<ROUTINE RT-EX-RM-MATCH-SNIFFING-DOG ("AUX" OBJ (FLAME? <>) (FIRST T) LAMP? MATCH?)
<COND (<AND <EQUAL? ,GL-PRSO ,P?NORTH ,P?IN>
<MC-HERE? ,RM-MARYLEBONE-RD>>
<REPEAT ()
<SET OBJ <FIRST? ,GL-WINNER>>
<REPEAT ()
<COND (<MC-F? .OBJ>
<RETURN>)
(<AND <MC-IS? .OBJ ,FL-BURNABLE>
<MC-IS? .OBJ ,FL-LIGHTED>
<NOT <EQUAL? .OBJ ,TH-TOBACCO>>>
<SET FLAME? .OBJ>
<RETURN>)>
<SET OBJ <NEXT? .OBJ>>>
<COND (<AND <MC-F? .FLAME?>
<MC-T? .FIRST>
<MC-T? ,GL-PUPPY>>
<SET OBJ <FIRST? ,GL-PUPPY>>
<SET FIRST <>>)
(T
<RETURN>)>>
<COND (<OR <SET MATCH? <AND <OR <RT-META-IN? ,TH-MATCH ,CH-PLAYER>
<RT-META-IN? ,TH-MATCH ,GL-PUPPY>>
<OR <MC-IS? ,TH-MATCH ,FL-BURNABLE>
<MC-IS? ,TH-MATCH ,FL-LIGHTED>>>>
<SET LAMP? <OR <RT-META-IN? ,TH-LAMP ,CH-PLAYER>
<RT-META-IN? ,TH-LAMP ,GL-PUPPY>>>
.FLAME?>
<SET OBJ <COND (.FLAME?
.FLAME?)
(.LAMP?
,TH-LAMP)
(.MATCH?
,TH-MATCH)>>
<RT-GUARD-STOP-ENTRANCE .OBJ>
<RFALSE>)>
<COND (<OR <FSET? ,TH-WAX-HEAD ,FL-BROKEN>
;<MC-F? <LOC ,TH-WAX-HEAD>>
<FSET? ,TH-WAX-AX ,FL-BROKEN>
;<MC-F? <LOC ,TH-WAX-AX>>>
<TELL
"The guard blocks your path and says, \"Oh no you don't, laddie. When I let
you in earlier you made a proper mess of my museum. I won't let you do that
again.\" After you promise to pay for the damage and plead with him for a few
moments, he finally steps aside." CR CR>)>
<RETURN ,RM-MADAME-TUSSAUDS>)>>
<ROUTINE RT-PUT-OUT (THING)
<COND (<MC-ISNOT? .THING ,FL-BURNABLE>
<RFALSE>)
(<MC-ISNOT? .THING ,FL-LIGHTED>
<RFALSE>)
(<EQUAL? .THING ,TH-MATCH>
<RT-ALARM-CLR ,RT-I-MATCH-OUT>
<RT-I-MATCH-OUT>)
(<EQUAL? .THING ,TH-PIPE>
<RT-ALARM-CLR ,RT-I-PIPE-OUT>
<RT-I-PIPE-OUT>)
(<EQUAL? .THING ,TH-TORCH>
<RT-ALARM-CLR ,RT-I-TORCH-OUT>
<RT-I-TORCH-OUT>)
(<EQUAL? .THING ,TH-NEWSPAPER>
<RT-ALARM-CLR ,RT-I-NEWSPAPER-OUT>
<RT-I-NEWSPAPER-OUT>)
(<EQUAL? .THING ,TH-WESTMINSTER-CLUE>
<RT-ALARM-CLR ,RT-I-CLUE-OUT>
<RT-I-CLUE-OUT>)
(<EQUAL? .THING ,TH-MAIL>
<RT-ALARM-CLR ,RT-I-MAIL-OUT>
<RT-I-MAIL-OUT>)
(<EQUAL? .THING ,TH-MATCHBOOK>
<RT-ALARM-CLR ,RT-I-MATCHBOOK-OUT>
<RT-I-MATCHBOOK-OUT>)
(T
<REMOVE .THING>
<FCLEAR .THING ,FL-WORN>
<MC-UNMAKE .THING ,FL-LIGHTED>
<MC-UNMAKE .THING ,FL-BURNABLE>
<TELL CTHE .THING " burn">
<RT-S-NOS-MSG .THING>
<TELL " up and disappears." CR>)>>
<ROUTINE RT-I-MATCH-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-MATCH>
<TELL CR CTHE ,TH-MATCH " flickers and dies." CR>
<SET RESULT T>)>
<MC-UNMAKE ,TH-MATCH ,FL-LIGHTED>
<BURN-MATCH-OUT>
;<MC-UNMAKE ,TH-MATCH ,FL-BURNABLE>
;<MOVE ,TH-BURNT-MATCH <LOC ,TH-MATCH>>
;<REMOVE ,TH-MATCH>
<RETURN .RESULT>>
<ROUTINE BURN-MATCH-OUT ()
<FCLEAR ,TH-MATCH ,FL-BURNABLE>
<FSET ,TH-MATCH ,FL-BROKEN>
<PUT <GETPT ,TH-MATCH ,P?ADJECTIVE> 0 ,W?BURNT>>
<ROUTINE RT-I-PIPE-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-TOBACCO>
<TELL CR CTHE ,TH-PIPE " has gone out." CR>)>
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
<MC-UNMAKE ,TH-TOBACCO ,FL-BURNABLE>
<REMOVE ,TH-TOBACCO>
<RETURN .RESULT>>
<ROUTINE RT-I-TORCH-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-TORCH>
<TELL CR CTHE ,TH-TORCH " sputters and dies." CR>
<SET RESULT T>)>
<CLEAR-ALL-FLAGS ,TH-TORCH>
<PUT <GETPT ,TH-TORCH ,P?ADJECTIVE> 0 ,W?BURNT>
<FSET ,TH-TORCH ,FL-TAKEABLE>
<FSET ,TH-TORCH ,FL-BROKEN>
;<MC-UNMAKE ,TH-TORCH ,FL-LIGHTED>
;<MC-UNMAKE ,TH-TORCH ,FL-BURNABLE>
;<MOVE ,TH-BURNT-TORCH <LOC ,TH-TORCH>>
;<REMOVE ,TH-TORCH>
<RETURN .RESULT>>
<ROUTINE RT-I-NEWSPAPER-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-NEWSPAPER>
<TELL CR CTHE ,TH-NEWSPAPER " disappears into a cloud of fine ash, which itself disappears." CR>
<SET RESULT T>)>
<MC-UNMAKE ,TH-NEWSPAPER ,FL-LIGHTED>
<MC-UNMAKE ,TH-NEWSPAPER ,FL-BURNABLE>
<REMOVE ,TH-NEWSPAPER>
<RETURN .RESULT>>
<ROUTINE RT-I-CLUE-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-WESTMINSTER-CLUE>
<TELL CR CTHE ,TH-WESTMINSTER-CLUE
" disappears in a puff of oily black smoke." CR>
<SET RESULT T>)>
<MC-UNMAKE ,TH-WESTMINSTER-CLUE ,FL-LIGHTED>
<MC-UNMAKE ,TH-WESTMINSTER-CLUE ,FL-BURNABLE>
<REMOVE ,TH-WESTMINSTER-CLUE>
<RETURN .RESULT>>
<ROUTINE RT-I-MAIL-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-MAIL>
<TELL CR CTHE ,TH-MAIL " disappears in a flash of light." CR>
<SET RESULT T>)>
<MC-UNMAKE ,TH-MAIL ,FL-LIGHTED>
<MC-UNMAKE ,TH-MAIL ,FL-BURNABLE>
<REMOVE ,TH-MAIL>
<RETURN .RESULT>>
<ROUTINE RT-I-MATCHBOOK-OUT ("AUX" (RESULT <>))
<COND (<RT-VISIBLE? ,TH-MATCHBOOK>
<TELL CR CTHE ,TH-MATCHBOOK " burns up and disappears." CR>
<SET RESULT T>)>
<MC-UNMAKE ,TH-MATCHBOOK ,FL-LIGHTED>
<MC-UNMAKE ,TH-MATCHBOOK ,FL-BURNABLE>
<REMOVE ,TH-MATCHBOOK>
<RETURN .RESULT>>
<ROUTINE PRE-LIGHT-WITH ()
<DEBUGGING? <RT-DEBUG-PRE-VERB "PRE-LIGHT-WITH">>
<COND (<AND <NOT <MC-PRSO? ,TH-MATCH ,TH-TOBACCO>>
<NOT <IN? ,GL-PRSO ,GL-WINNER>>>
<RT-CYOU-MSG>
<RT-WOULD-HAVE-TO-MSG "be holding" ,GL-PRSO>
<TELL " to light ">
<RT-SAY-HIM-HER-THEM-IT-MSG ,GL-PRSO>
<TELL "." CR>)>>
<ROUTINE RT-GN-WAX (TBL "OPTIONAL" (LEN 0))
<PUTP ,PSEUDO-OBJECT ,P?ACTION ,RT-DF-LG-WAX-STATUES>
<SETG LAST-PSEUDO-LOC ,GL-PLACE-CUR>
<RETURN ,PSEUDO-OBJECT>>