1
0
mirror of https://github.com/historicalsource/moonmist.git synced 2026-02-12 02:47:53 +00:00

Final Revision

This commit is contained in:
historicalsource
2019-04-14 13:37:43 -04:00
parent 7dcf75bb74
commit a2025f6d6c
42 changed files with 46891 additions and 1323 deletions

906
global.zil Normal file
View File

@@ -0,0 +1,906 @@
"GLOBALS for MOONMIST
Copyright (C) 1986 Infocom, Inc. All rights reserved."
<OBJECT GLOBAL-OBJECTS
(DESC "GO")
;(FDESC 0)
(TEXT 0)
(FLAGS CONTBIT DOORBIT FEMALE
INVISIBLE LIGHTBIT LOCKED MUNGBIT
NARTICLEBIT NDESCBIT ONBIT OPENBIT
;PERSONBIT READBIT RMUNGBIT
SEARCHBIT SECRETBIT SEENBIT SURFACEBIT
TAKEBIT TOOLBIT TOUCHBIT TRANSBIT TRYTAKEBIT
VEHBIT VOWELBIT WEAPONBIT WEARBIT WORNBIT)>
<OBJECT LOCAL-GLOBALS
(IN GLOBAL-OBJECTS)
(DESC "stone" ;"LG")
(SYNONYM STONE ;L.G)
(FLAGS NARTICLEBIT)
(ACTION LOCAL-GLOBALS-F)>
<ROUTINE LOCAL-GLOBALS-F ()
<COND (<REMOTE-VERB?>
<RFALSE>)
(<OR <CREEPY? ,HERE> <OUTSIDE? ,HERE>>
<RANDOM-PSEUDO>)
(T <NOT-HERE ,LOCAL-GLOBALS>)>>
<OBJECT STAIRS
(IN LOCAL-GLOBALS)
(DESC "stairs")
(SYNONYM STAIRS STAIRW STAIR)
(GENERIC GENERIC-STAIRS)
(FLAGS SEENBIT)
(ACTION UPSTAIRS-DOWNSTAIRS)>
<GLOBAL WING-STAIRS <PLTABLE KITCHEN GREAT-HALL GALLERY>>
<GLOBAL TOWER-STAIRS <PLTABLE BASEMENT OLD-GREAT-HALL CORR-2 CORR-3>>
<ROUTINE UPSTAIRS-DOWNSTAIRS ("AUX" N TBL (HR <LOC ,WINNER>))
<COND (<VERB? BOARD CLIMB-DOWN CLIMB-UP THROUGH WALK WALK-TO>
<COND (<FSET? .HR ,SECRETBIT>
<RFALSE>)
(<FSET? .HR ,WEARBIT> ;"WING-ROOMS"
<SET TBL ,WING-STAIRS>)
(T <SET TBL ,TOWER-STAIRS>)>
<COND (<OR <VERB? BOARD CLIMB-UP>
;<NOUN-USED? ,W?UPSTAIRS>>
<COND (<T? <GETPT .HR ,P?UP>>
<DO-WALK ,P?UP>
<RTRUE>)
(<AND <SET N <GETP .HR ,P?CHARACTER>>
<NOT <L? <GET .TBL 0> <SET N <+ .N 1>>>>>
<SET N <GET .TBL .N>>
;<TELL-I-ASSUME .N " Walk to">
<PERFORM ,V?WALK-TO .N>
<RTRUE>)>)
(T ;<NOUN-USED? ,W?DOWNSTAIRS>
<COND (<T? <GETPT .HR ,P?DOWN>>
<DO-WALK ,P?DOWN>
<RTRUE>)
(<AND <SET N <GETP .HR ,P?CHARACTER>>
<L? 0 <SET N <- .N 1>>>>
<SET N <GET .TBL .N>>
;<TELL-I-ASSUME .N " Walk to">
<PERFORM ,V?WALK-TO .N>
<RTRUE>)>)>)>>
<ROUTINE DO-INSTEAD-OF (OBJ1 OBJ2)
<COND (<EQUAL? ,PRSI .OBJ2> <PERFORM ,PRSA ,PRSO .OBJ1> <RTRUE>)
(<EQUAL? ,PRSO .OBJ2> <PERFORM ,PRSA .OBJ1 ,PRSI> <RTRUE>)
;(T <PERFORM ,PRSA ,PRSO ,PRSI> <RTRUE>)
(T <V-FOO>)>>
<OBJECT TURN
(IN GLOBAL-OBJECTS)
(ADJECTIVE INT.NUM ;NUMBER FULL)
(SYNONYM TURN TURNS MINUTE)
(DESC "minute")
(ACTION TURN-F)>
<ROUTINE TURN-F ()
<COND (<VERB? USE>
<PERFORM ,V?WAIT-FOR ,PRSO>
<RTRUE>)>>
<OBJECT IT
(IN GLOBAL-OBJECTS)
(SYNONYM IT THIS ;"FUCKER SUCKER")
(DESC "it")
(FLAGS VOWELBIT NARTICLEBIT)
(ACTION IT-F)>
<ROUTINE IT-F ()
<COND (<OR <AND <IOBJ? IT>
;<FSET? ,PRSO ,PERSONBIT>
<VERB? ASK-ABOUT ASK-FOR SEARCH-FOR TELL-ABOUT>>
<AND <DOBJ? IT>
<VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR FIND ;WHAT>>>
<TELL "\"I'm not sure what you're talking about.\"" CR>)>>
<OBJECT FLOOR
(IN GLOBAL-OBJECTS)
(DESC "floor")
(ADJECTIVE DRAWING ;ROOM GREAT ;HALL)
(SYNONYM FLOOR ;AREA GROUND CARPET RUG)
(FLAGS SEENBIT SURFACEBIT OPENBIT)
(ACTION FLOOR-F)>
<ROUTINE FLOOR-F ("AUX" (OBJ <>) N)
<COND ;(<REMOTE-VERB?> <RFALSE>)
(<VERB? CLIMB-ON>
<ALREADY ,WINNER "on it">)
(<AND <VERB? PUT THROW-AT>
<NOT <DOBJ? MOONMIST>>
<IOBJ? FLOOR>>
<MOVE ,PRSO ,HERE>
<TELL "Okay." CR>
<RTRUE>)
(<VERB? EXAMINE LOOK-ON SEARCH SEARCH-FOR>
<COND (<EQUAL? ,HERE ,DRAWING-ROOM>
<TELL
"The carpet ends flush with the archway to the " 'GREAT-HALL ",
where the footsteps of visitors have begun to wear it thin.
It's a magnificent red Brussels carpet with deep pile and a medieval
design." CR>)
(<EQUAL? ,HERE ,GREAT-HALL>
<GREAT-HALL-IS-FLOORED>)>
<COND (<AND <EQUAL? ,HERE ,GARDEN>
<EQUAL? ,VARIATION ,LORD-C>
<FSET? ,CLUE-4 ,SECRETBIT>>
<SET OBJ ,CLUE-4>)
(<AND <EQUAL? ,HERE ,DRAWING-ROOM>
<EQUAL? ,VARIATION ,LORD-C ,FRIEND-C ;,OFFICER-C>
<NOT <FSET? ,JEWEL ,TOUCHBIT>>>
<SET OBJ ,JEWEL>)
(<AND <EQUAL? ,HERE ,GREAT-HALL>
<EQUAL? ,VARIATION ,DOCTOR-C ;,DEALER-C ,PAINTER-C>
<NOT <EQUAL? ,FOUND-IT-PERM ,LENS ;,LENS-1 ,LENS-2>>>
<SET OBJ ,LENS>)>
<START-SEARCH .OBJ>
<RTRUE>)
(<ADJ-USED? ,W?DRAWING>
<COND (<NOT <==? ,HERE ,DRAWING-ROOM>>
<DO-INSTEAD-OF ,DRAWING-ROOM ,FLOOR>
<RTRUE>)>)
(<ADJ-USED? ,W?GREAT>
<COND (<NOT <==? ,HERE ,GREAT-HALL>>
<DO-INSTEAD-OF ,GREAT-HALL ,FLOOR>
<RTRUE>)>)>>
<ROUTINE START-SEARCH ("OPTIONAL" (OBJ <>))
<TELL
"Nothing suspicious meets your eye after a moment's scrutiny. Do you want
to continue?">
<COND (<NOT <YES?>>
<OKAY>
<RTRUE>)
(T
<COND (T ;<T? .OBJ>
<SETG FOUND-IT .OBJ>)>
<SETG FOUND-LOC ,HERE>
<QUEUE I-FOUND-IT <RANDOM 7>>
<V-WAIT 8 <> T>
<RTRUE>)>>
<GLOBAL FOUND-IT:OBJECT <>>
<GLOBAL FOUND-IT-PERM:OBJECT <>>
<GLOBAL FOUND-LOC:OBJECT <>>
<GLOBAL NOTHING-NEW "You don't find anything new there.|">
<ROUTINE I-FOUND-IT ("OPTIONAL" (GARG <>) "AUX" OBJ)
%<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
<TELL "[I-FOUND-IT:">
<COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
<COND (<NOT <EQUAL? ,FOUND-LOC ,HERE>>
<RFALSE>)
(<EQUAL? ,FOUND-IT ,JEWEL>
<MOVE ,FOUND-IT ,HERE>
<TELL
"Suddenly you notice a glittering speck. Probing for it with your fingers,
you discover a " 'JEWEL "." ;"extract from the strands of carpet pile" CR>)
(<EQUAL? ,FOUND-IT ,LENS>
<COND (<NOT <FSET? ,LENS ,SEENBIT>>
<MOVE ,LENS-2 <LOC ,LENS>>
;<REMOVE ,LENS>)
(<NOT <FSET? ,LENS-2 ,SEENBIT>>
<SETG FOUND-IT ,LENS-2>
<MOVE ,LENS-1 <LOC ,LENS>>
<REMOVE ,LENS>)
(T <RFALSE>)>
<MOVE ,FOUND-IT ,HERE>
<TELL
"Suddenly you find something small, smooth and slippery -- a "
D ,FOUND-IT "! Its transparency, of course, made it practically invisible.">
<COND (<T? ,BUTLER-GHOST-STORY-TOLD>
<TELL
" No wonder you and the ghost had such a hard time finding it!">)>
<CRLF>)
(<ZERO? ,FOUND-IT>
<TELL ,NOTHING-NEW>
<RFATAL>)
(<FSET? ,FOUND-IT ,SECRETBIT>
;<SET OBJ <FIND-FLAG ,HERE ,SECRETBIT>>
<DISCOVER ,FOUND-IT ;.OBJ>
;<RFATAL>)
(T
<TELL
!\Y ,OU-STOP-SEARCHING " when you find" THE ,FOUND-IT ".|">)>
<COND (T ;<NOT <EQUAL? ,FOUND-IT ,MOONMIST ,YOUR-SWITCH>>
;<MOVE ,FOUND-IT ,PLAYER>
<FSET ,FOUND-IT ,TOUCHBIT>)>
<FSET ,FOUND-IT ,SEENBIT>
<COND (<NOT <EQUAL? ,FOUND-IT ,YOUR-SWITCH>>
<FCLEAR ,FOUND-IT ,NDESCBIT>)>
<COND (<EQUAL? ,FOUND-IT ,LENS ;,LENS-1 ,LENS-2>
<SETG FOUND-IT-PERM ,FOUND-IT>)>
<SETG FOUND-IT <>>
<RFATAL>>
<OBJECT DANGER
(IN GLOBAL-OBJECTS)
(DESC "danger")
(SYNONYM DANGER THREAT ATTACK)>
<OBJECT INTNUM
(IN GLOBAL-OBJECTS)
(SYNONYM INT.NUM ;NUMBER)
(DESC "number")>
<OBJECT YOU
(IN GLOBAL-OBJECTS)
(SYNONYM YOU YOURSELF HIMSELF HERSELF)
(DESC "self" ;"himself or herself")
(FLAGS ;NARTICLEBIT)
(ACTION YOU-F)>
<ROUTINE YOU-F ("AUX" X)
<COND (<NOT <==? ,WINNER ,PLAYER>>
<DO-INSTEAD-OF ,WINNER ,YOU>
<RTRUE>)
(<AND <VERB? ASK-ABOUT> <IOBJ? YOU>>
<PERFORM ,V?ASK-ABOUT ,PRSO ,PRSO>
<RTRUE>)
(<AND <VERB? THANKS>
<SET X <QCONTEXT-GOOD?>>>
<PERFORM ,V?THANKS .X>
<RTRUE>)>>
;<OBJECT HINT
(DESC "hint")
(IN GLOBAL-OBJECTS)
(SYNONYM HINT HELP)
(ACTION HINT-F)>
;<ROUTINE HINT-F ()
<COND (<VERB? FIND>
<HELP-TEXT>)
(<VERB? ASK-FOR ASK-CONTEXT-FOR TAKE>
<MORE-SPECIFIC>)>>
;<OBJECT CORRIDOR-GLOBAL
(IN GLOBAL-OBJECTS)
(DESC "corridor")
(SYNONYM CORRIDOR)
(ACTION CORRIDOR-GLOBAL-F)>
;<ROUTINE CORRIDOR-GLOBAL-F ("AUX" RM)
<COND (<VERB? ANALYZE EXAMINE LOOK-INSIDE LOOK-DOWN LOOK-UP>
<COND (<SET RM <NEXT-ROOM ,HERE ,P?OUT>>
<ROOM-PEEK .RM T>)>)>>
<OBJECT WALL
(IN GLOBAL-OBJECTS)
(DESC "wall")
(ADJECTIVE CASTLE TOWER BRICK)
(SYNONYM WALL WALLS BRICK BRICKS)
(FLAGS SEENBIT SURFACEBIT OPENBIT)
(ACTION WALL-F)>
<ROUTINE WALL-F ("AUX" OBJ)
<COND (<AND <EQUAL? ,VARIATION ,FRIEND-C>
<EQUAL? ,HERE ,BASEMENT ,CRYPT>
;<VERB? ;DIG EXAMINE KNOCK MUNG OPEN RUB SEARCH>>
<BRICKS-F>)
(<AND <VERB? OPEN CLOSE>
<T? <SET OBJ <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>>>
<DO-INSTEAD-OF .OBJ ,WALL>
<RTRUE>)
(<VERB? KNOCK>
<COND (<OR <NOT <FSET? ,HERE ,WEARBIT> ;"WING-ROOMS">
<FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>
<TELL "You hear a hollow sound." CR>)
(T <TELL
"Knocking on the walls reveals nothing unusual." CR>)>)>>
<OBJECT GLOBAL-HERE
(IN GLOBAL-OBJECTS)
(DESC "here")
(ADJECTIVE THIS)
(SYNONYM HERE AREA ROOM PLACE)
(GENERIC GENERIC-ROOM)
(FLAGS NARTICLEBIT)
(ACTION GLOBAL-HERE-F)>
<ROUTINE GLOBAL-HERE-F ("AUX" OBJ (X <>))
<COND (<VERB? EXAMINE LIE SIT SMELL WALK-TO>
<DO-INSTEAD-OF ,HERE ,GLOBAL-HERE>
<RTRUE>)
(<VERB? PUT PUT-IN ;TIE-TO>
<MORE-SPECIFIC>)
(<VERB? SEARCH SEARCH-FOR>
<COND (<AND <IN? ,MAGAZINE ,HERE>
;<EQUAL? ,VARIATION ,PAINTER-C>
<FSET? ,MAGAZINE ,NDESCBIT>>
<SET X ,MAGAZINE>)
(<AND <IN? ,BRICKS ,HERE>
;<EQUAL? ,VARIATION ,FRIEND-C>
<FSET? ,BRICKS ,NDESCBIT>>
<SET X ,BRICKS>)
;(<AND <EQUAL? ,HERE ,COURTYARD>
<SET X <FIRST? ,FRONT-GATE>>> ;"for CLUE-4"
T)
(<AND <T? ,PRSI>
<==? <META-LOC ,PRSI> ,HERE>>
<SET X ,PRSI>)
(T
<SET OBJ <FIRST? ,HERE>>
<REPEAT ()
<COND (<ZERO? .OBJ>
<RETURN>)
(<FSET? .OBJ ,SECRETBIT>
<SET X .OBJ>
<RETURN>)
(<AND <NOT <FSET? .OBJ ,PERSONBIT>>
<OR <FSET? .OBJ ,CONTBIT>
<FSET? .OBJ ,SURFACEBIT>>
<OR <SET X <FIND-FLAG .OBJ ,SECRETBIT>>
<SET X <FIND-FLAG .OBJ ,RMUNGBIT>>>>
<FSET .OBJ ,OPENBIT>
<RETURN>)
(T <SET OBJ <NEXT? .OBJ>>)>>)>
<START-SEARCH .X>
<RTRUE>)>>
<OBJECT CHAIR
(IN LOCAL-GLOBALS)
(DESC "chair")
(ADJECTIVE WING)
(SYNONYM CHAIR SEAT CHAIRS BENCH)
(FLAGS SEENBIT SURFACEBIT ;VEHBIT)
(ACTION CHAIR-F)>
<ROUTINE CHAIR-F () ;("OPT" (ARG 0))
<COND ;(<T? .ARG> <RFALSE>)
(<VERB? SIT ;LOOK-UNDER CLIMB-ON ;CLIMB-DOWN BOARD>
<WONT-HELP>
;<SETG PLAYER-SEATED ,CHAIR>
;<TELL "Okay." ;"That's just a waste of time." CR>)
(T <RANDOM-PSEUDO>)>>
<OBJECT TABLE-RANDOM
(IN LOCAL-GLOBALS)
(DESC "table")
(ADJECTIVE BILLIARD CARD)
(SYNONYM TABLE DESK)
(FLAGS SEENBIT)
(ACTION RANDOM-PSEUDO)>
[
<OBJECT TWEED-OUTFIT
(IN PLAYER)
(DESC "tweed outfit")
(ADJECTIVE MY TWEED WOOLEN WOOL)
(SYNONYM CLOTHES OUTFIT TWEEDS SUIT ;" SWEATER CLOTHING")
(GENERIC GENERIC-CLOTHES)
(FLAGS WORNBIT WEARBIT TAKEBIT MUNGBIT SEENBIT)
(SIZE 20)
(ACTION CLOTHES-FCN)>
<OBJECT SLEEP-OUTFIT
(IN LUGGAGE)
(DESC "nightshirt" ;"set of pajamas, sleeping outfit")
(ADJECTIVE MY NIGHT F.C F.C ;" FINE INDIAN SILK SLEEPING")
(SYNONYM CLOTHES OUTFIT NIGHTS SHIRT ;" PAJAMA NIGHTG")
(GENERIC GENERIC-CLOTHES)
(FLAGS WEARBIT TAKEBIT)
(SIZE 20)
(ACTION CLOTHES-FCN)>
<OBJECT EXERCISE-OUTFIT
(IN LUGGAGE)
(DESC "exercise outfit")
(ADJECTIVE MY EXERCISE F.C F.C ;"COTTON COMFORT RUNNING")
(SYNONYM CLOTHES OUTFIT SWEATS SUIT ;"SHOES CLOTHING")
(GENERIC GENERIC-CLOTHES)
(FLAGS WEARBIT TAKEBIT VOWELBIT)
(SIZE 20)
(ACTION CLOTHES-FCN)>
<OBJECT DINNER-OUTFIT
(IN LUGGAGE)
(DESC "dinner outfit")
(ADJECTIVE MY DINNER FORMAL F.C F.C ;"FRILLY PERFECT")
(SYNONYM CLOTHES OUTFIT ;"ENSEMBLE CLOTHING" DRESS GOWN)
(GENERIC GENERIC-CLOTHES)
(FLAGS WEARBIT TAKEBIT)
(SIZE 20)
(ACTION CLOTHES-FCN)>
<ROUTINE CLOTHES-FCN ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<COND (<DOBJ? TWEED-OUTFIT>
<TELL
"These are sensible clothes for this clammy climate: your new tweed ">
<COND (<ZERO? ,GENDER-KNOWN>
<TELL "suit">)
(T
<TELL "blazer and ">
<COND (<FSET? ,PLAYER ,FEMALE> <TELL "skirt">)
(T <TELL "pants">)>)>
<TELL ", with woolen sweater, should keep you warm enough.">)
(<DOBJ? EXERCISE-OUTFIT>
<TELL
"This is your favorite outfit for workouts: a cotton sweatsuit with a sporty ">
<COND (<PRINT-COLOR> <TELL !\ >)>
<TELL "stripe." ;", and comfortable running shoes.">)
(<DOBJ? DINNER-OUTFIT>
<COND (<ZERO? ,GENDER-KNOWN>
<TELL
"You have a decent formal ensemble, with frills in the right places">)
(T
<TELL "Your new ">
<COND (<FSET? ,PLAYER ,FEMALE>
<TELL "floor-length dinner gown">)
(T <TELL "tuxedo">)>
<TELL " is particularly good-looking">)>
<TELL " and a perfect fit">
<COND (<NOT <0? ,VARIATION>>
<TELL ", ">
<COND (<FSET? ,PLAYER ,FEMALE>
<TELL "not to mention that it's all">)
(T <TELL "with shirt and accessories">)>
<TELL " in ">
<PRINT-COLOR>)>
<TELL ".">)
(T ;<DOBJ? SLEEP-OUTFIT>
<TELL "Your new ">
<COND (<PRINT-COLOR> <TELL !\ >)>
<TELL D ,SLEEP-OUTFIT ;"nightshirt" " is ">
<COND (<ZERO? ,GENDER-KNOWN>
<TELL
"nothing to write home about, but it is so-o-o comfy for sleeping.">)
(<FSET? ,PLAYER ,FEMALE>
<TELL "made of fine Chinese silk.">)
(T <TELL "decorated with a Union Jack flag.">)>)>
<CRLF>)
(<VERB? DISEMBARK ;TAKE> ;"GET OUT OF MY CLOTHES"
<PERFORM ,V?TAKE-OFF ,PRSO>
<RTRUE>)
(<VERB? EMPTY> ;"UNPACK MY CLOTHES"
<COND (<EQUAL? <META-LOC ,LUGGAGE> ,HERE>
<PERFORM ,V?EMPTY ,LUGGAGE>
<RTRUE>)
(T <NOT-HERE ,LUGGAGE>)>)>>
]
<OBJECT SLEEP-GLOBAL
(IN GLOBAL-OBJECTS)
;(ADJECTIVE ;SOME MY)
(SYNONYM SLEEP)
(DESC "sleep")
(FLAGS NARTICLEBIT)
(ACTION SLEEP-GLOBAL-F)>
<ROUTINE SLEEP-GLOBAL-F ()
<COND (<VERB? DRESS ;-FOR>
<COND (<EQUAL? ,HERE <META-LOC ,SLEEP-OUTFIT>>
<PERFORM ,V?WEAR ,SLEEP-OUTFIT>
<RTRUE>)>)
(<VERB? WALK-TO>
<PERFORM ,V?FAINT>
<RTRUE>)>>
<GLOBAL NOW-WEARING:OBJECT TWEED-OUTFIT>
<ROUTINE ROB (WHAT THIEF "OPTIONAL" (TELL? <>) "AUX" N X (TOLD? <>))
<SET X <FIRST? .WHAT>>
<REPEAT ()
<COND (<NOT .X> <RETURN>)>
<SET N <NEXT? .X>>
;<COND (<NOT <FSET? .X ,TAKEBIT>>
<SET X .N>
<AGAIN>)>
<COND (<AND <NOT .N> .TOLD? .TELL?>
<TELL " and">)>
<SET TOLD? T>
<COND (.TELL?
<TELL THE .X>
<COND (.N <TELL !\,>)
(T <TELL ". ">)>)>
<MOVE .X .THIEF>
;<FCLEAR .X ,TAKEBIT>
<SET X .N>>>
<OBJECT LIGHT-GLOBAL
(IN GLOBAL-OBJECTS)
(DESC "light")
(ADJECTIVE FLOOD MOON)
(SYNONYM LIGHT LIGHTS LAMP MOONLIGHT)
(FLAGS SEENBIT TRYTAKEBIT)
(ACTION LIGHT-GLOBAL-F)>
<ROUTINE LIGHT-GLOBAL-F ("AUX" P)
<COND (<REMOTE-VERB?> <RFALSE>)
(<VERB? LAMP-ON LAMP-OFF>
<COND (<CREEPY? ,HERE>
<COND (<ACCESSIBLE? ,LAMP>
<PERFORM ,PRSA ,LAMP>
<RTRUE>)
(T <NOT-HERE ,LIGHT-GLOBAL>)>)
(<AND <OUTSIDE? ,HERE> ;<NOT <EQUAL? ,HERE ,CAR>>>
<TELL "You can't reach it from here." CR>)
(<VERB? LAMP-ON>
<COND (<FSET? ,HERE ,ONBIT>
<ALREADY ,LIGHT-GLOBAL "on">)
(T
<FSET ,HERE ,ONBIT>
<OKAY ,LIGHT-GLOBAL "on">)>)
(<VERB? LAMP-OFF>
<COND (<NOT <FSET? ,HERE ,ONBIT>>
<ALREADY ,LIGHT-GLOBAL "off">)
(<SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,MUNGBIT ,PLAYER>>
<TELL
D .P " says, \"Please don't leave us in the dark.\"" CR>)
(T
<FCLEAR ,HERE ,ONBIT>
<OKAY ,LIGHT-GLOBAL "off">)>)>)>>
<OBJECT HAUNTING
(DESC "haunting")
(IN OFFICE)
(SYNONYM MYSTERY HAUNTING ATTEMPTS CASE)
(FLAGS NDESCBIT SEENBIT)
(ACTION HAUNTING-F)>
<ROUTINE HAUNTING-F ()
<COND (<VERB? LAMP-ON PLAY>
<PERFORM ,PRSA ,COMPUTER>
<RTRUE>)>>
<OBJECT KEYHOLE
(IN GLOBAL-OBJECTS)
(DESC "keyhole")
(ADJECTIVE MY TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S)
(SYNONYM KEYHOLE HOLE)
;(FLAGS NARTICLEBIT ;PLURALBIT)
(ACTION KEYHOLE-F)>
<ROUTINE KEYHOLE-F ("AUX" P RM)
<COND (<AND <REMOTE-VERB?>
<NOT <VERB? SEARCH SEARCH-FOR>>>
<RFALSE>)
(<ADJ-USED? <>>
;<ZERO? ,P-ADJN>
<COND (<ZMEMQ ,HERE ,CHAR-ROOM-TABLE>
<SET RM <GET-REXIT-ROOM <GETPT ,HERE ,P?OUT>>>)
(<OR <EQUAL? ,HERE ,CORR-2>
<EQUAL? ,HERE ,WEST-HALL ,GALLERY ,EAST-HALL>>
<TELL ,YOU-DIDNT-SAY-W "hose " 'KEYHOLE "!]" CR>
<RTRUE>)
(T <NOT-HERE ,KEYHOLE> <RTRUE>)>)
(<OR <SET P <ZMEMQ <ADJ-USED?> ;,P-ADJN ,CHAR-POSS-TABLE>>
;<AND <==? <ADJ-USED?> ,OTHER-POSS>
<SET P <GETP ,OTHER-CHAR ,P?CHARACTER>>>>
<SET RM <GET ,CHAR-ROOM-TABLE .P>>
<COND (<EQUAL? ,HERE .RM>
<SET RM <GET-REXIT-ROOM <GETPT ,HERE ,P?OUT>>>)
(<NOT <EQUAL? ,HERE <GET-REXIT-ROOM <GETPT .RM ,P?OUT>>>>
<NOT-HERE ,KEYHOLE>
<RTRUE>)>)>
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-THROUGH SEARCH SEARCH-FOR>
<COND (<AND <EQUAL? ,JACK-ROOM ,HERE .RM>
<EQUAL? ,VARIATION ,LORD-C>>
<TELL
"You see a microphone with its wires leading toward the " 'CREST "." CR>
;<TELL
"Total darkness greets your eye. Something is obstructing your view
through the " 'KEYHOLE "." CR>)
(T <ROOM-PEEK .RM T>)>
<RTRUE>)>>
[
<OBJECT HANDS
(IN GLOBAL-OBJECTS)
(DESC "hand" ;"your hands")
(ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S MY
;"ordering same as HEAD & EYE for UN/DRESS-GHOST"
;" B\'S DEE\'S")
(SYNONYM HANDS HAND)
(FLAGS TRYTAKEBIT ;NARTICLEBIT ;PLURALBIT SEENBIT)
(ACTION HANDS-F)>
<ROUTINE HANDS-F ("AUX" P A)
<COND (<NOT <SET P <FIND-BODY ,HANDS>>>
<RTRUE>)
(<REMOTE-VERB?>
<RFALSE>)>
<COND ;(<EQUAL? .P ,PLAYER>
<COND (<VERB? BRUSH>
<RFALSE>)>)
(<VERB? KISS>
<COND (<AND <FSET? .P ,FEMALE>
<T? ,GENDER-KNOWN>
<NOT <FSET? ,PLAYER ,FEMALE>>>
<PERFORM ,V?HELLO .P>)
(T
<PERFORM ,V?KISS .P>)>
<RTRUE>)
(<AND <VERB? SHAKE TAKE> <DOBJ? HANDS>>
<COND (<T? ,PRSI> ;<ZERO? .P>
<SET P ,PRSI>)>
;<COND (<ZERO? .P>
<COND ;(<ADJ-USED? ,W?HER>
<SET P <FIND-FLAG-HERE-BOTH ,PERSONBIT ,FEMALE ,WINNER>>
<COND (<ZERO? .P>
<TELL "There's no woman here!" CR>
<RTRUE>)>)
;(<ADJ-USED? ,W?HIS>
<SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,FEMALE ,WINNER>>
<COND (<ZERO? .P>
<TELL "There's no man here!" CR>
<RTRUE>)>)
(T
<SET P <FIND-FLAG-HERE ,PERSONBIT ,WINNER>>
<COND (<ZERO? .P>
<TELL "There's no one here!" CR>
<RTRUE>)>)>)>
<PERFORM ,V?HELLO .P>
<RTRUE>)>>
<OBJECT HEAD
(IN GLOBAL-OBJECTS)
(DESC "head" ;"your head")
(ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S B\'S
;" MY DEE\'S")
(SYNONYM HEAD ;FACE)
(FLAGS ;NARTICLEBIT SEENBIT)
(ACTION HEAD-F)>
<ROUTINE HEAD-F ("AUX" P P2)
<COND (<NOT <SET P <FIND-BODY ,HEAD>>>
<RTRUE>)
(<REMOTE-VERB?>
<RFALSE>)
;(<AND <EQUAL? .P ,PLAYER>
<NOT <FSET? ,HERE ,WORNBIT>>>
<NOT-HERE ,MIRROR-GLOBAL ;,HEAD>)
(<VERB? NOD>
<PERFORM ,V?YES>
<RTRUE>)
(<VERB? SHAKE>
<PERFORM ,V?NO>
<RTRUE>)>>
<OBJECT EYE
(IN GLOBAL-OBJECTS)
(DESC "eye")
(ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S B\'S
;" MY DEE\'S")
(SYNONYM EYE EYES)
(FLAGS VOWELBIT ;PLURALBIT SEENBIT)
(ACTION EYE-F)>
<ROUTINE EYE-F ("AUX" P P2)
<COND (<NOT <SET P <FIND-BODY ,EYE>>>
<RTRUE>)
(<REMOTE-VERB?>
<RFALSE>)
;(<AND <EQUAL? .P ,PLAYER>
<NOT <FSET? ,HERE ,WORNBIT>>>
<COND (<VERB? OPEN>
<TELL "Your eyes are wide open." CR>)
(T <NOT-HERE ,MIRROR-GLOBAL ;,EYE>)>)
(<VERB? OPEN>
<SETG WINNER ,PLAYER>
<PERFORM ,V?ALARM .P>
<RTRUE>)
(<VERB? CLOSE>
<SETG WINNER .P>
<PERFORM ,V?FAINT>
<RTRUE>)
(<VERB? EXAMINE FIND LOOK-INSIDE>
<COND (<AND <EQUAL? .P ,PLAYER>
<NOT <FSET? ,HERE ,WORNBIT>>>
<NOT-HERE ,MIRROR-GLOBAL ;,EYE>)
(<==? ,GHOST-NEW .P>
<PERFORM ,PRSA ,GHOST-NEW>
<RTRUE>)
(T
<COND (<NOT <FSET? ,LENS ;-1 ,SEENBIT>>
<COND (<FSET? .P ,MUNGBIT>
<TELL CHE .P " has closed eyes." CR>)
(<==? ,VARIATION <GETP .P ,P?CHARACTER>>
<TELL CHE .P " turns away from you." CR>)
(<L? ,BED-TIME ,PRESENT-TIME>
<TELL CHE .P look " sleepy." CR>)
(T
<TELL CHE .P smile " at you." CR>)>)
(T
<TELL CHE .P is>
<COND (<OR <NOT <EQUAL? .P ,DEALER>>
<EQUAL? ,VARIATION ,PAINTER-C>>
<TELL " not">)>
<TELL " wearing a " D ,LENS "." CR>)>)
;(T
<TELL
"Despite some initial demurrals and questioning glances, ">
<COND (<ZERO? <SET P2 <FIND-FLAG-HERE ,PERSONBIT ,PLAYER .P>>>
<TELL D .P>)
(T <TELL "everyone">)>
<TELL " allows your examination">
<COND (<OR <EQUAL? ,VARIATION ,PAINTER-C>
<NOT <IN? ,DEALER ,HERE>>>
<TELL ". You discover that">
<COND (<ZERO? .P2>
<TELL HE .P " is not">)
(T <TELL " no one is">)>
<TELL " wearing a " D ,LENS "." CR>)
(T <TELL
" -- except " 'DEALER ", who is wearing " D ,LENS "es
but confesses that he hates even to admit that he needs them." CR>)>)>)>>
<OBJECT OTHER-OUTFIT
(IN GLOBAL-OBJECTS)
(DESC "clothes")
(ADJECTIVE TAM\'S JACK\'S VIV\'S HYDE\'S IAN\'S DOC\'S IRIS\'S B\'S
;" MY DEE\'S")
(SYNONYM CLOTHES OUTFIT DRESS GOWN ; SUIT)
;(GENERIC GENERIC-CLOTHES)
(FLAGS SEENBIT)
;(SIZE 20)
(ACTION OTHER-OUTFIT-F)>
<ROUTINE OTHER-OUTFIT-F ("AUX" P P2)
<COND (<NOT <SET P <FIND-BODY ,OTHER-OUTFIT>>>
<RTRUE>)
(<REMOTE-VERB?>
<RFALSE>)
(<VERB? EXAMINE FIND LOOK-INSIDE>
<COND (<==? ,GHOST-NEW .P>
<PERFORM ,PRSA ,GHOST-NEW>
<RTRUE>)>)
(<VERB? DISEMBARK REMOVE TAKE-OFF>
<YOU-SHOULDNT>
<RTRUE>)>>
<ROUTINE FIND-BODY (OBJ "AUX" A P)
<SET A <ADJ-USED?> ;,P-ADJN>
<COND (<ZERO? .A>
<TELL ,I-ASSUME !\ >
<COND (<OR <VERB? CLOSE FIND SEARCH-FOR>
<AND <VERB? ATTACK KILL MUNG SLAP>
<T? ,NOW-PRSI>>>
<SET P ,PLAYER>
<TELL "your">)
(<OR <AND <VERB? SHAKE> ;"SHAKE HANDS WITH JACK"
<T? ,PRSI>
<FSET? <SET P ,PRSI> ,PERSONBIT>>
<SET P <QCONTEXT-GOOD?>>
<SET P <FIND-FLAG-HERE ,PERSONBIT ,PLAYER>>>
<TELL D .P "'s">)
(T
<SET P ,PLAYER>
<TELL "your">)>
<PUT ,P-ADJW ,NOW-PRSI
<GET ,CHAR-POSS-TABLE <+ 1 <GETP .P ,P?CHARACTER>>>>
<TELL !\ >
<COND (<SET A <GET ,P-NAMW ,NOW-PRSI>>
<PRINTB .A>)
(T <TELL D .OBJ>)>
<TELL ".]" CR>)
(<SET P <ZMEMQ .A ,CHAR-POSS-TABLE>>
<SET P <GET ,CHARACTER-TABLE <- .P 1>>>)
;(<==? .A ,OTHER-POSS>
<SET P ,OTHER-CHAR>)
(<==? .A ,W?HER>
<SET P ,P-HER-OBJECT>)
(<==? .A ,W?HIS>
<SET P ,P-HIM-OBJECT>)>
<COND (<ZERO? .P>
<DONT-UNDERSTAND>
<RFALSE>)>
<THIS-IS-IT .P>
<COND (<NOT <==? <META-LOC .P> ,HERE>>
<NOT-HERE .P>
<RFALSE>)
(<DIVESTMENT? .OBJ>
<HAR-HAR>
<RFALSE>)
(T .P)>>
]
<OBJECT PASSAGE
(DESC "secret passage")
(IN GLOBAL-OBJECTS)
(ADJECTIVE SECRET HIDING HIDDEN)
(SYNONYM PASSAGE ROOM PLACE PLACES)
(GENERIC GENERIC-ROOM)
(ACTION PASSAGE-F)>
<ROUTINE PASSAGE-F ("AUX" (RM <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>))
<COND (<VERB? TAKE WALK-TO>
<PERFORM ,V?THROUGH ,PRSO>
<RTRUE>)
(<AND <VERB? OPEN CLOSE>
<T? .RM>>
<DO-INSTEAD-OF .RM ,PASSAGE>
<RTRUE>)
(<FSET? ,HERE ,SECRETBIT>
<DO-INSTEAD-OF ,HERE ,PASSAGE>
<RTRUE>)
(<REMOTE-VERB?> ;"includes LEAVE"
<RFALSE>)
(T ;<VERB? BOARD CLOSE EXAMINE FOLLOW LOOK-INSIDE OPEN THROUGH WALK-TO>
<COND (<AND <T? .RM>
<SET RM <DOOR-ROOM ,HERE .RM>>
<FSET? .RM ,SEENBIT>>
<DO-INSTEAD-OF .RM ,PASSAGE>
<RTRUE>)
(<SET RM <GENERIC-CLOSET 0>>
<DO-INSTEAD-OF .RM ,PASSAGE>
<RTRUE>)
(T <NOT-HERE ,PASSAGE>)>)>>
<OBJECT ROMANCE
(DESC "Tamara's romance")
(IN GLOBAL-OBJECTS)
(ADJECTIVE TAM\'S JACK\'S HER HIS)
(SYNONYM ROMANCE ENGAGE MARRIAGE LOVE ;AFFAIR)
(FLAGS NARTICLEBIT)
;(ACTION ROMANCE-F)>
;<ROUTINE ROMANCE-F ()
<COND (<AND <VERB? MAKE>
<FSET? ,PRSI ,PERSONBIT>>
<PERFORM ,V?RUB ,PRSI>
<RTRUE>)>>
<OBJECT ACCIDENT
(DESC "Deirdre's accident")
(IN GLOBAL-OBJECTS)
(ADJECTIVE ;DEIRDRE DEE\'S HER)
(SYNONYM ACCIDENT DROWNING DEATH)
(FLAGS NARTICLEBIT)>
<OBJECT CORPSE
(DESC "Deirdre's body")
(IN LOCAL-GLOBALS ;GLOBAL-OBJECTS ;"not really anywhere")
(ADJECTIVE ;DEIRDRE DEE\'S HER DEAD)
(SYNONYM CORPSE ;BODY ;"foo's body")
(FLAGS NARTICLEBIT)
(ACTION CORPSE-F)>
<ROUTINE CORPSE-F ()
<COND ;(<REMOTE-VERB?> <RFALSE>)
(<VERB? ;EXAMINE FIND>
<WHO-KNOWS? ,CORPSE>)
;(T <NOT-HERE ,CORPSE>)>>
<OBJECT UNDRESSED
(DESC "undressed")
(IN GLOBAL-OBJECTS)
(SYNONYM DRESSE UNDRESS)
(FLAGS NARTICLEBIT)
(ACTION UNDRESSED-F)>
<ROUTINE UNDRESSED-F ()
<COND (<REMOTE-VERB?> <RFALSE>)
(<VERB? TAKE> <RFALSE>) ;"GET UN/DRESSED"
(<VERB? OPEN CLOSE SEARCH SEARCH-FOR EXAMINE LOOK-INSIDE LOOK-ON>
<COND (<GLOBAL-IN? ,DRESSING-TABLE-LG ,HERE>
<DO-INSTEAD-OF ,DRESSING-TABLE-LG ,UNDRESSED>
<RTRUE>)
(T <NOT-HERE ,DRESSING-TABLE-LG>)>)
(T <DONT-UNDERSTAND>)>>
<OBJECT ARTIFACT
(IN GLOBAL-OBJECTS ;LOCAL-GLOBALS)
(DESC "hidden treasure" ;"artifact")
(ADJECTIVE VALUABLE MISSING HIDDEN)
(SYNONYM ARTIFACT TREASURE)
(FLAGS SEENBIT VOWELBIT)
(ACTION ARTIFACT-F)>
<ROUTINE ARTIFACT-F ()
<COND (<T? ,TREASURE-FOUND>
<DO-INSTEAD-OF ,TREASURE ,ARTIFACT>
<RTRUE>)
(<OR <VERB? SHOW SSHOW TAKE-TO>
<NOT <REMOTE-VERB?>>>
<NOT-FOUND ,ARTIFACT>
<RTRUE>)>>
<ROUTINE TIMES-UP ()
<TELL
"At first light, the police arrive and take over the investigation." CR>
<FINISH>>