witness/places.zil

3082 lines
85 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

"PLACES for WITNESS
Copyright (C) 1983 Infocom, Inc. All rights reserved."
"Other possible generics: cabinet counter footprints hallway shelf"
"Directions"
<GLOBAL DIR-STRINGS
<PTABLE P?NORTH "north" P?SOUTH "south"
P?EAST "east" P?WEST "west"
P?NW "northwest" P?NE "northeast"
P?SW "southwest" P?SE "southeast"
P?DOWN "downstairs" P?UP "upstairs"
P?IN "in" P?OUT "out">>
<ROUTINE DIR-PRINT (DIR "AUX" (CNT 0))
#DECL ((DIR CNT) FIX)
<REPEAT ()
<COND (<==? <GET ,DIR-STRINGS .CNT> .DIR>
<COND (T ;<NOT <EQUAL? .DIR ,P?UP ,P?DOWN>>
<TELL "the ">)>
<PRINT <GET ,DIR-STRINGS <+ .CNT 1>>>
<RTRUE>)>
<SET CNT <+ .CNT 1>>>>
"The usual globals"
<OBJECT ROOMS>
<OBJECT GLOBAL-ROOM
(IN GLOBAL-OBJECTS)
(SYNONYM ROOM PLACE WALL WALLS)
(DESC "place" ;"room")
;(GENERIC WALL-F)
(ACTION GLOBAL-ROOM-F)>
<ROUTINE GLOBAL-ROOM-F ("AUX" TIM VAL)
<COND (<VERB? KNOCK>
<TELL "Knocking on the walls reveals nothing unusual." CR>)
(<VERB? SEARCH EXAMINE>
<COND (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
<SET TIM 10>)
(<NOT <0? <GETP ,HERE ,P?CORRIDOR>>>
<SET TIM 3>)
(T <SET TIM <+ 2 <GETP ,HERE ,P?SIZE>>>)>
<TELL
"(You'd do better to examine or search one thing at a time. Searching a
whole room or area thoroughly would take hours. A cursory search would take
about " N .TIM " minutes, and it might not reveal much. Would you like
to do it anyway?)">
<COND (<YES?>
<COND (<==? ,M-FATAL <SET VAL <INT-WAIT .TIM>>>
<RTRUE>)
(.VAL
<TELL
"Your cursory search revealed nothing new." CR>)
(T
<TELL
"You didn't get a chance to finish looking over the place." CR>)>)
(T <TELL "Okeh." CR>)>)>>
;<ROUTINE WALL-F ()
<COND (<OUTSIDE? ,HERE> ,HOUSE) (T ,GLOBAL-ROOM)>>
<OBJECT WINDOW
(IN LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW PANE PANES FRAME)
(FLAGS NDESCBIT WINDOWBIT LOCKED)
(GENERIC GENERIC-WINDOW-F ;LOCKED-F)
(ACTION WINDOW-F)>
<ROUTINE WINDOW-F ("AUX" (RM <WINDOW-ROOM ,HERE ,PRSO>) POP)
<COND (<VERB? BRUSH>
<TELL
"The window is clean enough without your interference." CR>)
(<VERB? EXAMINE>
<TELL
"The window is a simple wooden sash, locked tight against the cold.">
<COND (<NOT <OUTSIDE? ,HERE>>
<TELL
" There's some sort of electric relay on one edge, with white wires
attached.">)>
<CRLF>)
(<VERB? LOOK-INSIDE LOOK-OUTSIDE>
<COND (.RM
<TELL"The window is damp and foggy, but you can see">
<SET POP <POPULATION .RM>>
<COND (<0? .POP> T)
(<1? .POP> <TELL " someone in">)
(T <TELL " some people in">)>
<THE? .RM>
<TELL " " D .RM " "
<COND (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
"in")
(T "out")>
"side." CR>)
(T
<TELL "The window is too foggy to see through." CR>)>
<RTRUE>)
(<VERB? KNOCK>
<COND (<NOT <WINDOW-KNOCK .RM>>
<TELL "There's no answer." CR>)>)
(<VERB? MUNG>
<TELL "Vandalism is for private ">
<COND (<TANDY?> <TELL "eye">)
(T <TELL "dick">)>
<TELL "s, not famous police detectives!" CR>)
(<VERB? OPEN CLOSE LOCK UNLOCK>
<COND (<FSET? ,PRSO ,RMUNGBIT>
<TELL "It's really broken. ">)>
<TELL "You can't." CR>)>>
<ROUTINE GENERIC-WINDOW-F (OBJ)
<COND (<WINDOW-IN? ,HERE> <RFALSE>)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,WINDOW)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "window" " here!)" CR>
,NOT-HERE-OBJECT)>>
<ROUTINE WINDOW-KNOCK (RM)
<COND (<INHABITED? .RM>
<TELL "Someone looks up at you inquisitively." CR>)>>
<ROUTINE WINDOW-IN? (RM)
<OR <EQUAL? .RM ,FRONT-YARD ,KITCHEN ,BUTLER-ROOM>
<EQUAL? .RM ,OFFICE-PORCH ,OFFICE>
<EQUAL? .RM ,BACK-YARD ,MONICA-ROOM>
<EQUAL? .RM ,ROCK-GARDEN ,LINDER-ROOM ,TUB-ROOM>>
;<AND <0? <BAND 31 <GETP .RM ,P?CORRIDOR>>> ;"not HALL-n or outside"
<NOT <EQUAL? .RM ,BATHROOM ,TOILET-ROOM ,BUTLER-BATH>>
<NOT <EQUAL? .RM ,STORAGE-CLOSET ,LIVING-ROOM ,WORKSHOP>>>>
;<ROUTINE WINDOW-SHOP (RM STR "AUX" (P <POPULATION .RM>))
<COND (<0? .P> <CRLF> <RTRUE>)
(T <TELL "You can vaguely see ">)>
<COND (<1? .P>
<TELL "someone">)
(T
<PRINTN .P>
<TELL " people">)>
<TELL " inside the " .STR "." CR>>
<OBJECT SINK
(IN LOCAL-GLOBALS)
(DESC "sink")
(SYNONYM SINK BASIN FAUCET SPIGOT)
(FLAGS NDESCBIT FURNITURE)>
<OBJECT TOILET
(IN LOCAL-GLOBALS)
(DESC "toilet")
(SYNONYM TOILET)
(FLAGS NDESCBIT FURNITURE SURFACEBIT VEHBIT)
(ACTION TOILET-F)>
<ROUTINE TOILET-F ("OPTIONAL" (RARG 100))
<COND (<NOT <==? .RARG 100>> <RFALSE>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL
"You have stooped to a new low by snooping around toilet bowls." CR>)
;(<VERB? FLUSH>
<TELL "\"Whhoooossshhhhh!\"" CR>)>>
<OBJECT GENERIC-BATHROOM-DOOR
(IN GLOBAL-OBJECTS)
(DESC "bathroom door")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BATH-DOOR-F (OBJ)
<COND (<EQUAL? ,HERE ,MONICA-ROOM> ,MONICA-BATH-DOOR)
(<EQUAL? ,HERE ,LINDER-ROOM> ,LINDER-BATH-DOOR)
(<EQUAL? ,HERE ,BUTLER-ROOM ,BUTLER-BATH> ,BUTLER-BATH-DOOR)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BATHROOM-DOOR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bathroom door" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BEDROOM
(IN GLOBAL-OBJECTS)
(DESC "bedroom")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BEDROOM-F (OBJ)
<COND (<EQUAL? .OBJ ,HERE ,GLOBAL-HERE> ,GLOBAL-ROOM)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BEDROOM)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bedroom" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BEDROOM-DOOR
(IN GLOBAL-OBJECTS)
(DESC "bedroom door")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BEDROOM-DOOR-F (OBJ)
<COND (<EQUAL? ,HERE ,MONICA-ROOM ,HALL-2> ,MONICA-DOOR)
(<EQUAL? ,HERE ,LINDER-ROOM ,LIVING-ROOM> ,LINDER-DOOR)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BEDROOM-DOOR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bedroom door" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BACK-DOOR
(IN GLOBAL-OBJECTS)
(DESC "back door")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BACK-DOOR-F (OBJ)
<COND (<AND <VERB? SHOOT>
<FSET? ,P-IT-OBJECT ,DOORBIT>
<FSET? ,P-IT-OBJECT ,LOCKED>>
,P-IT-OBJECT)
(<EQUAL? ,HERE ,OFFICE-PORCH ,OFFICE> ,OFFICE-BACK-DOOR)
(<EQUAL? ,HERE ,BACK-YARD ,MONICA-ROOM> ,MONICA-BACK-DOOR)
(<EQUAL? ,HERE ,ROCK-GARDEN ,LINDER-ROOM> ,LINDER-BACK-DOOR)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BACK-DOOR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "back door" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BATHROOM
(IN GLOBAL-OBJECTS)
(DESC "bathroom")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BATHROOM-F (OBJ)
<COND (<EQUAL? .OBJ ,HERE ,GLOBAL-HERE> ,GLOBAL-ROOM)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BATHROOM)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bathroom" " here!)" CR>
,NOT-HERE-OBJECT)>>
<ROUTINE NULL-F ("OPTIONAL" A1 A2)
<RFALSE>>
<ROUTINE DDESC (STR1 DOOR STR2)
#DECL ((STR1) <OR STRING ZSTRING> (DOOR) OBJECT
(STR2) <OR FALSE STRING ZSTRING>)
<TELL .STR1>
<COND (<FSET? .DOOR ,OPENBIT> <TELL "open">)
(T <TELL "closed">)>
<TELL .STR2 CR>>
<ROUTINE DOOR-ROOM (RM DR "AUX" (P 0) TBL)
#DECL ((RM DR) OBJECT (P) FIX)
<REPEAT ()
<COND (<OR <0? <SET P <NEXTP .RM .P>>>
<L? .P ,LOW-DIRECTION>>
<RFALSE>)
(<AND <==? ,DEXIT <PTSIZE <SET TBL <GETPT .RM .P>>>>
<==? .DR <GETB .TBL ,DEXITOBJ>>>
<RETURN <GETB .TBL ,REXIT>>)>>>
<ROUTINE FIND-FLAG (RM FLAG "OPTIONAL" (EXCLUDED <>) "AUX" (O <FIRST? .RM>))
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG> <NOT <==? .O .EXCLUDED>>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>
<OBJECT GLOBAL-HERE
(IN GLOBAL-OBJECTS)
(DESC "here")
(SYNONYM HERE)
(FLAGS NDESCBIT)
(ACTION GLOBAL-HERE-F)>
<ROUTINE GLOBAL-HERE-F ("AUX" (FLG <>) F HR)
<COND (<VERB? WHAT ASK-ABOUT>
<SET F <FIRST? ,HERE>>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(<AND <FSET? .F ,CONTBIT> <INHABITED? .F>>
<SET FLG T>
<SET HR ,HERE>
<SETG HERE .F>
<GLOBAL-HERE-F>
<SETG HERE .HR>)
(<AND <FSET? .F ,PERSON> <NOT <==? .F ,PLAYER>>>
<SET FLG T>
<DESCRIBE-OBJECT .F T 0>)>
<SET F <NEXT? .F>>>
<COND (<NOT .FLG> <TELL "There's nobody else here." CR>)>
<RTRUE>)>>
<ROUTINE LOCKED-F (OBJ)
<COND (<==? ,HERE ,FRONT-YARD>
<COND (<VERB? EXAMINE LOOK-INSIDE SEARCH SEARCH-OBJECT-FOR THROUGH>
,DINING-DOOR)
(<VERB? WALK-TO> ,FRONT-DOOR)
(T <RFALSE>)>)
(<AND <VERB? SHOOT>
<FSET? ,P-IT-OBJECT ,DOORBIT>
<FSET? ,P-IT-OBJECT ,LOCKED>>
,P-IT-OBJECT)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT <LOC .OBJ>>
<RFALSE>)>
<COND (<EQUAL? <LOC .OBJ> ,LOCAL-GLOBALS ,GLOBAL-OBJECTS>
<RETURN <LOC .OBJ>>)>
<COND (<IN? .OBJ ,ROOMS>
<RETURN .OBJ>)
(ELSE
<SET OBJ <LOC .OBJ>>)>>>
<ROUTINE OUTSIDE? (RM)
<OR <==? .RM ,GARAGE>
<==? <GETP .RM ,P?LINE> ,OUTSIDE-LINE-C>>>
<ROUTINE PHONE-IN? (RM)
<EQUAL? .RM ,LIVING-ROOM ,OFFICE ,MONICA-ROOM>>
<ROUTINE WINDOW-ROOM (RM WINDOW "AUX" (P 0) L)
#DECL ((RM WINDOW) OBJECT (P L) FIX)
<COND (<==? .RM ,FRONT-YARD>
<COND (<==? .WINDOW ,KITCHEN-WINDOW> ,KITCHEN)
(<==? .WINDOW ,BUTLER-WINDOW> ,BUTLER-ROOM)>)
(<EQUAL? .RM ,KITCHEN ,BUTLER-ROOM> ,FRONT-YARD)
(<==? .RM ,OFFICE-PORCH> ,OFFICE)
(<==? .RM ,OFFICE> ,OFFICE-PORCH)
(<==? .RM ,BACK-YARD> ,MONICA-ROOM)
(<==? .RM ,MONICA-ROOM> ,BACK-YARD)
(<==? .RM ,ROCK-GARDEN>
<COND (<==? .WINDOW ,LINDER-WINDOW> ,LINDER-ROOM)
(<==? .WINDOW ,BATH-WINDOW> ,TUB-ROOM)>)
(<EQUAL? .RM ,LINDER-ROOM ,TUB-ROOM> ,ROCK-GARDEN)>>
"Grounds of Linder House"
<ROUTINE GROUND-SURFACE ()
<COND (<EQUAL? ,HERE ,FRONT-YARD ,ROCK-GARDEN>
"gravel")
(<EQUAL? ,HERE ,DRIVEWAY ,DRIVEWAY-ENTRANCE>
"peastone")
(<EQUAL? ,HERE ,FRONT-PORCH ,OFFICE-PORCH> "concrete")
(<EQUAL? ,HERE ,BACK-YARD> "grass")
(,GROUND-MUDDY "mud")
(T "dirt")>>
<ROOM FRONT-YARD
(IN ROOMS)
(DESC "front yard")
(FLAGS RLANDBIT ONBIT)
(LDESC
"You are in the front yard of the Linder property. Most of the space is
occupied by a kitchen garden full of vegetables and herbs. A wooden
fence surrounds the yard on the west and north sides. To the east is the
house, with a French door and two windows. To the south is a gate that
leads to the front porch.")
;(ADJECTIVE FRONT)
;(SYNONYM YARD)
(EAST TO DINING-ROOM IF DINING-DOOR IS OPEN)
(WEST "A wooden fence blocks your way.")
(NORTH "A wooden fence blocks your way.")
(SOUTH TO FRONT-PORCH IF FRONT-GATE IS OPEN)
(UP "You can't go that way.")
(DOWN "You can't go that way.") ;"just to establish properties"
(GLOBAL HOUSE DINING-DOOR KITCHEN-WINDOW BUTLER-WINDOW
FRONT-GATE FRONT-DOOR FENCE)
(LINE 4)
(STATION FRONT-YARD)>
<OBJECT KITCHEN-GARDEN
(IN FRONT-YARD)
(ADJECTIVE KITCHEN)
(SYNONYM GARDEN VEGETABLE HERB HERBS)
(DESC "kitchen garden")
(FLAGS NDESCBIT)>
<OBJECT FRONT-GATE
(IN LOCAL-GLOBALS)
(ADJECTIVE FRONT ;GARDEN)
(SYNONYM GATE)
(DESC "front gate")
(FLAGS DOORBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM FRONT-PORCH
(IN ROOMS)
(DESC "front porch")
(ACTION FRONT-PORCH-F)
;(ADJECTIVE FRONT)
;(SYNONYM PORCH ;STOOP)
(FLAGS RLANDBIT ONBIT ON-NOT-IN)
(IN TO ENTRY IF FRONT-DOOR IS OPEN)
(EAST TO ENTRY IF FRONT-DOOR IS OPEN)
(SOUTH TO DRIVEWAY)
(WEST "A wooden fence blocks your way.")
(NORTH TO FRONT-YARD IF FRONT-GATE IS OPEN)
(GLOBAL HOUSE FRONT-DOOR FRONT-GATE FENCE DRIVEWAY-OBJECT)
(LINE 4)
(STATION FRONT-PORCH)
(CORRIDOR 4)>
<ROUTINE FRONT-PORCH-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<DDESC
"The front porch is in an alcove, sheltered from the weather by the
walls and overhanging roof. A yellowish electric light hangs near
the " ,FRONT-DOOR " front door to the east, giving you a
dim view of the
driveway to the south and the front yard behind a gate to the north.">
<DDESC
"The gate is " ,FRONT-GATE
". A door bell glows at you, almost daring you to ring it.">
<THIS-IS-IT ,DOORBELL>)>>
<OBJECT DOORBELL
(DESC "door bell")
(ADJECTIVE DOOR)
(SYNONYM BELL DOORBELL)
(IN FRONT-PORCH)
(FLAGS NDESCBIT)
(ACTION DOORBELL-F)>
<ROUTINE DOORBELL-F ()
<COND (<VERB? PUSH RING>
<COND (<AND <NOT ,WELCOMED>
<FSET? ,CORPSE ,INVISIBLE>>
<WELCOME>)
(T <YOU-RANG>
<TELL "The door bell rings, loud and clear." CR>)>
<RTRUE>)>>
]
<ROOM DRIVEWAY
(IN ROOMS)
(DESC "driveway")
(LDESC
"The driveway, paved with peastone, runs from the entrance at the south
end in a curve to a two-car garage at the east end. North of you is the
front porch, the entrance to the house.")
;(ADJECTIVE DRIVE)
;(SYNONYM DRIVEWAY WAY)
(FLAGS RLANDBIT ONBIT ON-NOT-IN)
(NORTH TO FRONT-PORCH)
(SOUTH TO DRIVEWAY-ENTRANCE)
(EAST TO GARAGE)
(WEST "A wooden fence blocks your way.")
(GLOBAL HOUSE FRONT-DOOR FENCE DRIVEWAY-OBJECT)
(LINE 4)
(STATION DRIVEWAY)
(CORRIDOR 12)>
<OBJECT DRIVEWAY-OBJECT
(IN LOCAL-GLOBALS)
(DESC "driveway")
(LDESC
"The driveway, paved with peastone, runs from the entrance at the south
end in a curve to a two-car garage at the east end.")
(ADJECTIVE DRIVE)
(SYNONYM DRIVEWAY WAY)
(ACTION DRIVEWAY-F)>
<ROUTINE DRIVEWAY-F ("OPTIONAL" (ARG <>))
<COND (<AND <VERB? CLIMB-UP FOLLOW> <DOBJ? DRIVEWAY-OBJECT>>
<COND (<==? ,HERE ,DRIVEWAY-ENTRANCE>
<PERFORM ,V?WALK ,P?NORTH> <RTRUE>)
(<==? ,HERE ,GARAGE ,SIDE-YARD ;,OFFICE-PATH>
<PERFORM ,V?WALK ,P?WEST> <RTRUE>)
(T <TELL "It's not clear which direction you mean." CR>)>)>>
<ROOM DRIVEWAY-ENTRANCE
(IN ROOMS)
(DESC "driveway entrance")
(FDESC
"You are standing at the foot of the driveway, the entrance to the
Linder property. The entire lot is screened from the street and the
neighbors by a wooden fence, except on the east
side, which fronts on dense bamboo woods. The house looks like a mixture of
a California bungalow and East Asian influences. From here you can
see the driveway leading north and, beyond that, the front door.")
(LDESC
"This is the entrance to the driveway from the street, which lies to the
south. To the north is the driveway, and to the east is the side yard.")
;(ADJECTIVE DRIVEWAY ;DRIVE ;CAR ;AUTO ;STREET)
;(SYNONYM ENTRANCE ;GATE)
(FLAGS RLANDBIT ONBIT)
(NORTH TO DRIVEWAY)
(WEST "A wooden fence blocks your way.")
(EAST TO SIDE-YARD)
(SOUTH
"You can't leave the property yet. It would mean your job.")
(GLOBAL HOUSE WOODS FRONT-DOOR FENCE DRIVEWAY-OBJECT SIDE-FOOTPRINTS)
(LINE 4)
(STATION DRIVEWAY-ENTRANCE)
(CORRIDOR 6)>
<ROOM LIMBO
(IN ROOMS)
(DESC "limbo")
(FLAGS RLANDBIT ONBIT)
(CONTFCN NULL-F)
(NORTH TO DRIVEWAY-ENTRANCE)
(LINE 4)
(STATION DRIVEWAY-ENTRANCE)>
[
<ROOM SIDE-YARD
(IN ROOMS)
(ACTION SIDE-YARD-F)
(DESC "side yard")
;(ADJECTIVE SIDE ;LITTLE)
;(SYNONYM YARD)
(FLAGS RLANDBIT ONBIT)
(NORTH "You can't enter the house from here.")
(WEST TO DRIVEWAY-ENTRANCE)
(EAST TO OFFICE-PATH)
(SOUTH "A wooden fence blocks your way.")
(GLOBAL HOUSE FENCE DRIVEWAY-OBJECT SIDE-FOOTPRINTS)
(LINE 4)
(STATION SIDE-YARD)
(CORRIDOR 2)>
<ROUTINE SIDE-YARD-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is a little-used side yard, hidden from the street by the fence.
The back yard lies to the east and the driveway to the west." CR>)
(<==? .RARG ,M-FLASH>
<COND (<AND <NOT <FSET? ,SIDE-FOOTPRINTS ,INVISIBLE>>
<NOT <FSET? ,SIDE-FOOTPRINTS ,TOUCHBIT>>>
<DESCRIBE-OBJECT ,SIDE-FOOTPRINTS T 0>
<FSET ,SIDE-FOOTPRINTS ,TOUCHBIT>)>)
(<AND <==? .RARG ,M-BEG>
<==? ,HERE ,SIDE-YARD>
,GROUND-MUDDY
<VERB? WALK FOLLOW>>
<SETG SIDE-FOOTPRINTS-CONFUSED T>
<RFALSE>)>>
<OBJECT SIDE-FOOTPRINTS
(IN LOCAL-GLOBALS ;SIDE-YARD)
(DESC "set of footprints")
(ADJECTIVE FOOT)
(SYNONYM FOOTPRINTS PRINTS SET)
(FLAGS INVISIBLE)
(GENERIC GENERIC-FOOTPRINTS-F)
(DESCFCN SIDE-FOOTPRINTS-F)
(ACTION SIDE-FOOTPRINTS-F)>
<GLOBAL SIDE-FOOTPRINTS-CONFUSED <>>
<ROUTINE SIDE-FOOTPRINTS-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-OBJDESC>
<COND (,SIDE-FOOTPRINTS-CONFUSED
<COND (<FSET? ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"Fresh foot prints go here and there in the yard." CR>)
(T
<FSET ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"You notice fresh foot prints going here and there in the yard."
CR>)>)
(T
<COND (<FSET? ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"A fresh row of foot prints goes from the back yard to the driveway." CR>)
(T
<FSET ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"You notice a fresh row of foot prints going from the back yard to the
driveway." CR>)>)>)
(<AND ,SIDE-FOOTPRINTS-CONFUSED <VERB? ANALYZE EXAMINE>>
<TELL "There are too many foot prints here now." CR>)
(<VERB? EXAMINE>
<TELL
"The prints are lined up in an even row, as if made by a careful walker." CR>)
(<VERB? ANALYZE>
<COND (<NOT <EQUAL? <LOC ,SIDE-FOOTPRINTS-CAST> ,LIMBO>>
<TELL "You already did that!" CR>)
(<OR ,FINGERPRINT-OBJ ,DUFFY-AT-CORONER>
<DO-FINGERPRINT>
<RTRUE>)
(T <MOVE ,SIDE-FOOTPRINTS-CAST ,PLAYER>
<ANAFOOT>)>)
(<VERB? FOLLOW>
<COND (<EQUAL? ,HERE ,DRIVEWAY-ENTRANCE>
<GOTO ,SIDE-YARD>)
(<EQUAL? ,HERE ,SIDE-YARD ,OFFICE-PATH>
<GOTO ,DRIVEWAY-ENTRANCE>)>
<RTRUE>)
(<AND <VERB? MAKE>
<DOBJ? GENERIC-CAST SIDE-FOOTPRINTS-CAST BACK-FOOTPRINTS-CAST>>
<PERFORM ,V?ANALYZE ,SIDE-FOOTPRINTS>
<RTRUE>)>>
<OBJECT SIDE-FOOTPRINTS-CAST
(DESC "side-yard cast")
(IN LIMBO)
(ADJECTIVE SIDE-YARD SIDE)
(SYNONYM CAST)
(SIZE 9)
(FLAGS TAKEBIT)
(GENERIC GENERIC-CAST-F)
(ACTION SIDE-FOOTPRINTS-CAST-F)>
<ROUTINE SIDE-FOOTPRINTS-CAST-F ()
<COND (<AND <VERB? COMPARE>
<OR <DOBJ? BACK-FOOTPRINTS BACK-FOOTPRINTS-CAST>
<IOBJ? BACK-FOOTPRINTS BACK-FOOTPRINTS-CAST>>>
<TELL "The two sets of foot prints don't seem to match up." CR>)>>
<ROUTINE ANAFOOT ()
<TELL
"Sgt. Duffy appears with his kit for casting with plaster of Paris.
He quickly makes a cast of the foot prints and hands it to you,
saying \"I hope you find this as useful as it is heavy.\"" CR>>
][
<ROOM OFFICE-PATH
(IN ROOMS)
(DESC "office path")
(LDESC
"You are on a path made of stepping stones, which leads from the back
gate at the south to Linder's office at the north. In the east you
can see a thick woods. To the west is the side yard.")
;(ADJECTIVE OFFICE STONE)
;(SYNONYM PATH)
(FLAGS RLANDBIT ONBIT ON-NOT-IN AN)
(NORTH TO OFFICE-PORCH)
(EAST "You would probably get lost in the woods.")
(WEST TO SIDE-YARD)
(SOUTH
"You can't leave the property yet. It would mean your job.")
(GLOBAL HOUSE WOODS ;DRIVEWAY-OBJECT SIDE-FOOTPRINTS)
(LINE 4)
(STATION OFFICE-PATH)
(CORRIDOR 3)>
<OBJECT WOODS
(IN LOCAL-GLOBALS)
(DESC "bamboo woods")
(ADJECTIVE DENSE THICK DARK BAMBOO)
(SYNONYM WOODS FOREST THICKET)
(TEXT
"Bamboo, thick and tall, screens the entire lot on the east side.")
;(ACTION LAKE-F)>
<OBJECT BACK-GATE
(IN OFFICE-PATH)
(ADJECTIVE BACK OFFICE)
(SYNONYM GATE)
(DESC "back gate")
(FLAGS DOORBIT NDESCBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
][
<ROOM OFFICE-PORCH
(IN ROOMS)
(DESC "office porch")
(ACTION OFFICE-PORCH-F)
;(ADJECTIVE OFFICE BACK)
;(SYNONYM PORCH)
(FLAGS RLANDBIT ONBIT ON-NOT-IN AN)
(NORTH TO BACK-YARD)
(SOUTH TO OFFICE-PATH)
(EAST "You would probably get lost in the woods.")
(WEST TO OFFICE IF OFFICE-BACK-DOOR IS OPEN)
(IN TO OFFICE IF OFFICE-BACK-DOOR IS OPEN)
(GLOBAL HOUSE OFFICE-BACK-DOOR OFFICE-WINDOW LAWN WOODS
;PIECE-OF-WIRE ;PIECE-OF-PUTTY BROKEN-GLASS BACK-FOOTPRINTS)
(LINE 4)
(STATION OFFICE-PORCH)
(CORRIDOR 1)>
<ROUTINE OFFICE-PORCH-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are standing on a small concrete slab outside Linder's office. A sign
between the door and the window reads \"PACIFIC TRADE ASSOCIATES\". To the
north is a tidy lawn, extending east to the edge of the woods. A path of
stepping stones leads south to the back gate." CR>)
(<==? .RARG ,M-FLASH>
<COND (<AND <NOT <FSET? ,BACK-FOOTPRINTS ,INVISIBLE>>
<NOT <FSET? ,BACK-FOOTPRINTS ,TOUCHBIT>>>
<DESCRIBE-OBJECT ,BACK-FOOTPRINTS T 0>
<FSET ,BACK-FOOTPRINTS ,TOUCHBIT>)>)>>
<OBJECT BACK-FOOTPRINTS
(IN LOCAL-GLOBALS ;OFFICE-PORCH)
(DESC "set of footprints")
(ADJECTIVE FOOT)
(SYNONYM FOOTPRINTS PRINTS SET)
(FLAGS INVISIBLE)
(FDESC "You notice some fresh foot prints heading east.")
(LDESC "Fresh foot prints head east.")
(GENERIC GENERIC-FOOTPRINTS-F)
(ACTION BACK-FOOTPRINTS-F)>
"<GLOBAL BACK-FOOTPRINTS-CONFUSED <>>"
<ROUTINE BACK-FOOTPRINTS-F ()
<COND ;(<AND ,BACK-FOOTPRINTS-CONFUSED <VERB? ANALYZE EXAMINE>>
<TELL "There are too many foot prints here now." CR>)
(<VERB? EXAMINE>
<TELL
"The prints are uneven and widely spaced, as if made by someone running." CR>)
(<VERB? ANALYZE>
<COND (<NOT <EQUAL? <LOC ,BACK-FOOTPRINTS-CAST> ,LIMBO>>
<TELL "You already did that!" CR>)
(<OR ,FINGERPRINT-OBJ ,DUFFY-AT-CORONER>
<DO-FINGERPRINT>
<RTRUE>)
(T <MOVE ,BACK-FOOTPRINTS-CAST ,PLAYER>
<ANAFOOT>)>)
(<VERB? FOLLOW>
<TELL "You would probably get lost in the woods."
" Even with a path to follow." CR>)
(<AND <VERB? MAKE>
<DOBJ? GENERIC-CAST SIDE-FOOTPRINTS-CAST BACK-FOOTPRINTS-CAST>>
<PERFORM ,V?ANALYZE ,BACK-FOOTPRINTS>
<RTRUE>)>>
<ROUTINE GENERIC-FOOTPRINTS-F (OBJ)
<COND (<EQUAL? ,HERE ,OFFICE-PORCH> ,BACK-FOOTPRINTS)
(<EQUAL? ,HERE ,SIDE-YARD> ,SIDE-FOOTPRINTS)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "foot prints" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT BACK-FOOTPRINTS-CAST
(DESC "back-yard cast")
(IN LIMBO)
(ADJECTIVE BACK-YARD BACK)
(SYNONYM CAST)
(SIZE 9)
(FLAGS TAKEBIT)
(GENERIC GENERIC-CAST-F)
;(ACTION SIDE-FOOTPRINTS-F)>
<ROUTINE GENERIC-CAST-F (OBJ)
<COND (<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-CAST)
(<VERB? MAKE> ,GENERIC-CAST)>>
<OBJECT GENERIC-CAST
(IN GLOBAL-OBJECTS)
(DESC "cast")
(SYNONYM $GNRC)>
]
<OBJECT OFFICE-WINDOW
(IN LOCAL-GLOBALS)
(DESC "office window")
(ADJECTIVE OFFICE)
(SYNONYM WINDOW PANE PANES FRAME)
(FLAGS WINDOWBIT AN)
(GENERIC GENERIC-WINDOW-F)
(ACTION OFFICE-WINDOW-F)>
<ROUTINE OFFICE-WINDOW-F ("AUX" (RM <WINDOW-ROOM ,HERE ,PRSO>))
<COND ;(<VERB? ASK-ABOUT> <RFALSE>)
(<VERB? EXAMINE>
<WINDOW-F>
<COND (<FSET? ,OFFICE-WINDOW ,RMUNGBIT>
<TELL
"All the panes of the window are cracked, and many are in pieces on the ">
<COND ;(<0? ,DIFFICULTY> <TELL "ground outside">)
;(<1? ,DIFFICULTY> <TELL "floor and ground">)
(T <TELL "floor.">)>
<COND (<==? ,HERE ,OFFICE>
<COND (<NOT <FSET? ,PIECE-OF-PUTTY ,TOUCHBIT>>
<TELL
" A chunk of putty dangles like a wax bean.">)>
<COND (<NOT <FSET? ,PIECE-OF-WIRE ,TOUCHBIT>>
<TELL
" Along one edge of the window you can see the end of a piece of green wire."
;"?etc.">)>)>
<CRLF>)
(<AND ;<==? ,P-ADVERB ,W?CAREFULLY>
<==? ,HERE ,OFFICE>
<NOT <FSET? ,PIECE-OF-WIRE ,TOUCHBIT>>>
<TELL
"There's also a piece of green wire running from the frame to the putty."
CR>)>
<RTRUE>)
(<GO-AWAY> <RTRUE>)
(<AND <VERB? LOOK-INSIDE LOOK-OUTSIDE>
.RM <FSET? ,OFFICE-WINDOW ,RMUNGBIT>>
<TELL "Through the broken window you can see">
<THE? .RM>
<TELL " " D .RM " "
<COND (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C> "in")
(T "out")>
"side." CR>
<RTRUE>)
(<AND <VERB? THROUGH> .RM <FSET? ,OFFICE-WINDOW ,RMUNGBIT>>
<TELL "You would probably cut yourself on the broken glass." CR>)
(<DOBJ? OFFICE-WINDOW> <PERFORM ,PRSA ,WINDOW ,PRSI> <RTRUE>)
(<IOBJ? OFFICE-WINDOW> <PERFORM ,PRSA ,PRSO ,WINDOW> <RTRUE>)>>
<ROUTINE GO-AWAY ()
<COND (<AND <VERB? KNOCK>
<==? <META-LOC ,LINDER> ,OFFICE>
<NOT <IN? ,PLAYER ,OFFICE>>>
<TELL
"Someone peeks through the window at you, then disappears and"
" shouts \"Go away!\"" CR>)>>
<OBJECT PIECE-OF-WIRE
(IN OFFICE)
(DESC "green wire piece")
(ADJECTIVE GREEN WIRE)
(SYNONYM WIRE PIECE)
(FLAGS TRYTAKEBIT NDESCBIT)
(GENERIC GENERIC-WIRE-F)
(SIZE 1)
(ACTION PIECE-OF-WIRE-F)>
<ROUTINE PIECE-OF-WIRE-F ()
<COND (<AND <VERB? FOLLOW> <NOT <FSET? ,PRSO ,TOUCHBIT>>>
<TELL "The wire goes into the window frame and disappears." CR>)
(<AND <VERB? TAKE> <NOT ,SHOT-FIRED>>
<TELL "You can't." " It's stuck tight." CR>)>>
<OBJECT PIECE-OF-PUTTY
(IN OFFICE)
(DESC "chunk of putty")
(SYNONYM CHUNK PUTTY)
(FLAGS TRYTAKEBIT NDESCBIT)
(SIZE 1)
(ACTION PIECE-OF-PUTTY-F)>
<ROUTINE PIECE-OF-PUTTY-F ()
<COND (<AND <VERB? TAKE> <NOT ,SHOT-FIRED>>
<TELL "You can't." " It's stuck tight." CR>)>>
<OBJECT OFFICE-BACK-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE BACK OUTSIDE)
(SYNONYM DOOR LOCK)
(DESC "back door")
(FLAGS LOCKED DOORBIT)
(GENERIC GENERIC-BACK-DOOR-F ;LOCKED-F)
(ACTION OFFICE-BACK-DOOR-F)>
<ROUTINE OFFICE-BACK-DOOR-F ()
<COND (<GO-AWAY> <RTRUE>)
(<AND <VERB? GIVE SGIVE> ;"GIVE NOTE BACK"
<OR <DOBJ? THREAT-NOTE> <IOBJ? THREAT-NOTE>>>
<COND (<LOC ,LINDER>
<PERFORM ,V?GIVE ,THREAT-NOTE ,LINDER>
<RTRUE>)
(T <TELL "It's too late to give Linder anything." CR>)>)>>
<ROOM BACK-YARD
(IN ROOMS)
(DESC "back yard")
;(ADJECTIVE BACK)
;(SYNONYM YARD)
(LDESC
"You are on a neatly manicured lawn, east of Monica's bedroom. The lawn
extends east to the edge of the woods. From here you can go to a rock
garden in the north or the entrance to Linder's office in the south.
There's a door into the house, and a window.")
(FLAGS RLANDBIT ONBIT)
(NORTH TO ROCK-GARDEN)
(SOUTH TO OFFICE-PORCH)
(EAST "You would probably get lost in the woods.")
(WEST TO MONICA-ROOM IF MONICA-BACK-DOOR IS OPEN)
(GLOBAL HOUSE MONICA-BACK-DOOR WINDOW LAWN WOODS)
(LINE 4)
(STATION BACK-YARD)
(CORRIDOR 1)>
<OBJECT LAWN
(IN LOCAL-GLOBALS)
(DESC "lawn")
(SYNONYM LAWN GRASS)
(ADJECTIVE GREEN)
(ACTION LAWN-F)>
<ROUTINE LAWN-F ()
<COND (<VERB? EXAMINE>
<TELL "The lawn is well manicured." CR>)>>
<OBJECT MONICA-BACK-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE BACK OUTSIDE)
(SYNONYM DOOR LOCK)
(DESC "back door")
(FLAGS LOCKED DOORBIT)
(GENERIC GENERIC-BACK-DOOR-F ;LOCKED-F)
;(ACTION BACK-DOOR-F)>
<ROOM ROCK-GARDEN
(IN ROOMS)
(DESC "rock garden")
;(ADJECTIVE ROCK JAPANESE BACK)
;(SYNONYM GARDEN)
(LDESC
"This is a rock garden in the Japanese style, east of Linder's bedroom.
A few smooth round boulders lie partly buried in a bed of gravel,
which is carefully raked to be reminiscent of flowing water.
A sequence of smaller rocks forms a zig-zag path from the bedroom door to
the south edge of the garden, where the lawn begins.
There's a door into the house, and a couple of windows.")
(FLAGS RLANDBIT ONBIT)
(NORTH "A wooden fence blocks your way.")
(EAST "You would probably get lost in the woods.")
(SOUTH TO BACK-YARD)
(WEST TO LINDER-ROOM IF LINDER-BACK-DOOR IS OPEN)
(GLOBAL HOUSE LINDER-BACK-DOOR LINDER-WINDOW BATH-WINDOW
LAWN WOODS FENCE)
(LINE 4)
(STATION ROCK-GARDEN)
(CORRIDOR 1)>
<OBJECT ROCKS
(IN ROCK-GARDEN ;LOCAL-GLOBALS)
(DESC "rocks")
(ADJECTIVE SMOOTH ROUND)
(SYNONYM ROCKS ROCK BOULDER)
(FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)
(CAPACITY 150)
;(ACTION ROSE-F)>
;"<OBJECT GLOBAL-ROCKS
(IN GLOBAL-OBJECTS)
(DESC 'rocks')
(ADJECTIVE ROCK)
(SYNONYM ROCKS GARDEN ROCK)>"
"? <OBJECT BENCH ...>"
<OBJECT LINDER-BACK-DOOR
(IN LOCAL-GLOBALS)
(SYNONYM DOOR LOCK)
(ADJECTIVE BACK OUTSIDE)
(DESC "back door")
(FLAGS LOCKED DOORBIT)
(GENERIC GENERIC-BACK-DOOR-F ;LOCKED-F)
;(ACTION BACK-DOOR-F)>
"Inside the house"
)>[
<ROOM MONICA-ROOM
(IN ROOMS)
(DESC "Monica's bedroom")
;(ADJECTIVE MONICA BED HER)
;(SYNONYM BEDROOM ROOM)
(GENERIC GENERIC-BEDROOM-F)
(ACTION MONICA-ROOM-F)
(FLAGS RLANDBIT ONBIT)
(EAST TO BACK-YARD IF MONICA-BACK-DOOR IS OPEN)
(OUT TO BACK-YARD IF MONICA-BACK-DOOR IS OPEN)
(WEST TO HALL-2 IF MONICA-DOOR IS OPEN)
(NORTH TO BATHROOM IF MONICA-BATH-DOOR IS OPEN)
(GLOBAL MONICA-DOOR MONICA-BACK-DOOR MONICA-BATH-DOOR WINDOW
BED MIRROR TELEPHONE CLOSET)
(PSEUDO "CHAIR" RANDOM-PSEUDO)
(LINE 3)
(STATION MONICA-ROOM)>
<ROUTINE MONICA-ROOM-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-ENTER> <I-PROMPT-2>)
(<==? .RARG ,M-LOOK>
<TELL
"On one side is a modern-style bed, with piles of well-thumbed detective
stories stacked on the table beside it. Opposite the bed is a long
dressing table that seems to serve also as desk and workbench. In the
corner sits a small table for a portable phonograph and records, and a
book case with more books and pulps. Movie posters cover the walls. A
handsome door with cedar veneer leads north, and a door and window face
outside." CR>)>>
<OBJECT MONICA-TABLE
(IN MONICA-ROOM)
(ADJECTIVE DRESSING WORK)
(SYNONYM TABLE DESK BENCH)
(DESC "dressing table")
(FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)
(CAPACITY 50)
(ACTION MONICA-TABLE-F)>
<ROUTINE MONICA-TABLE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-ON SEARCH>
<COND (<AND <IN? ,MEDICAL-REPORT ,MONICA-ROOM>
<==? ,P-ADVERB ,W?CAREFULLY>>
<FCLEAR ,TUMOR ,INVISIBLE>
<FCLEAR ,MEDICAL-REPORT ,INVISIBLE>
<THIS-IS-IT ,MEDICAL-REPORT>
<TELL
"Among make-up, letters, and tools, you find a medical report." CR>)
(T <TELL
"This table is pretty messy. Anyone but Monica would have a tough time
finding anything on it." CR>)>)>>
<OBJECT MONICA-TABLE-STUFF
(IN MONICA-TABLE)
(SYNONYM MAKE-UP STUFF ;MAKEUP LETTER TOOLS)
(DESC "stuff on the table")
(FLAGS NDESCBIT TRYTAKEBIT READBIT)
(ACTION CLOSET-STUFF-F)>
;<ROUTINE MONICA-TABLE-STUFF-F ()
<COND (<VERB? TAKE>
<TELL "You have no use for them." CR>)>>
<OBJECT MOVIE-POSTERS
(IN MONICA-ROOM)
(DESC "bunch of movie posters")
(ADJECTIVE MOVIE)
(SYNONYM POSTER)
(TEXT "These are posters for many of Clark Gable's movies.")
(FLAGS NDESCBIT)>
<OBJECT BOOK-CASE
(IN MONICA-ROOM)
(ADJECTIVE BOOK)
(SYNONYM BOOKCASE CASE BOOK BOOKS)
(DESC "book case")
(FLAGS NDESCBIT READBIT)
(TEXT "Good idea! But one important book isn't in the book case.")>
<GLOBAL TUNE-ON <>>
<ROUTINE CAN-HEAR-RECORD? ()
<COND (<AND ,TUNE-ON
<OR <AND <DOBJ? MONICA-DOOR> <==? ,HERE ,HALL-2>>
<AND <DOBJ? MONICA-BATH-DOOR> <==? ,HERE ,BATHROOM>>
<AND <DOBJ? MONICA-BACK-DOOR> <==? ,HERE ,BACK-YARD>>>>
<RTRUE>)>>
<OBJECT RECORDS
(IN MONICA-ROOM)
(DESC "record collection")
(SYNONYM RECORD MUSIC)
(FLAGS NDESCBIT)
(ACTION RECORDS-F)>
<ROUTINE RECORDS-F ("AUX" TUNE)
<COND (<VERB? PLAY LISTEN>
<TELL
"You pick a record at random and start it playing. It's \"">
<REPEAT ()
<SET TUNE <PICK-ONE ,SONG-TABLE>>
<COND (<AND ,TUNE-ON <==? .TUNE ,TUNE-ON>> T)
(T <RETURN>)>>
<SETG TUNE-ON .TUNE>
<TELL ,TUNE-ON ".\"" CR>
<ENABLE <QUEUE I-TUNE-OFF 4>>)
(<VERB? EXAMINE>
<TELL
"It's a large and varied record collection. Monica's not very
choosy about her music." CR>)>>
<ROUTINE I-TUNE-OFF ("AUX" TBL)
<COND (<==? ,HERE ,MONICA-ROOM>
<TELL
"The record is over, and not too soon." CR>
<COND (<AND <IN? ,MONICA ,HERE> <NOT ,MONICA-TIED-TO>>
<TELL
"Monica walks over to the phonograph and puts the record away. Then she
chooses another one and starts it up. It's \"">
<SETG TUNE-ON <PICK-ONE ,SONG-TABLE>>
<TELL ,TUNE-ON ".\"" CR>
<ENABLE <QUEUE I-TUNE-OFF 4>>)>
<RTRUE>)
(<AND <IN? ,MONICA ,MONICA-ROOM> <NOT ,MONICA-TIED-TO>>
<SETG TUNE-ON <PICK-ONE ,SONG-TABLE>>
<ENABLE <QUEUE I-TUNE-OFF 4>>
<RFALSE>)>>
<GLOBAL SONG-TABLE
<PLTABLE "Alexander's Ragtime Band"
"I'm an Old Cowhand"
"Mexicali Rose"
"Pennies from Heaven"
"Sweet Leilani"
"When I Grow Too Old to Dream">>
]
<OBJECT MONICA-DOOR
(SYNONYM DOOR)
(ADJECTIVE BEDROOM)
(DESC "bedroom door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT OPENBIT)
(GENERIC GENERIC-BEDROOM-DOOR-F)
;(ACTION HIDE-LOOK-DOOR-F)>
<OBJECT MONICA-BATH-DOOR
(ADJECTIVE CEDAR BATH BATHROOM)
(SYNONYM DOOR)
(DESC "cedar door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT OPENBIT)
(GENERIC GENERIC-BATH-DOOR-F)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM BATHROOM
(IN ROOMS)
(DESC "bathroom")
;(ADJECTIVE BATH MASTER)
;(SYNONYM ROOM BATHROOM)
(GENERIC GENERIC-BATHROOM-F)
(LDESC
"This room has only a large cabinet with counter, sink and mirror.
On the counter are a shaver, toothpaste, and so on.
The tub and toilet must be in separate rooms.
There are doors on all four walls: the one to the north looks like redwood,
the one to the south like cedar, and the other two like ordinary doors.")
;(DESCFCN BATHROOM-F)
(FLAGS RLANDBIT ONBIT)
;(ACTION BATHROOM-F)
(WEST TO TOILET-ROOM IF TOILET-DOOR IS OPEN)
(EAST TO TUB-ROOM IF TUB-DOOR IS OPEN)
(SOUTH TO MONICA-ROOM IF MONICA-BATH-DOOR IS OPEN)
(NORTH TO LINDER-ROOM IF LINDER-BATH-DOOR IS OPEN)
;(OUT PER RETRACE-F)
(GLOBAL MONICA-BATH-DOOR LINDER-BATH-DOOR TOILET-DOOR TUB-DOOR
CABINET MIRROR SINK)
(PSEUDO "SHAVER" RANDOM-PSEUDO "TOOTHPASTE" RANDOM-PSEUDO)
(LINE 3)
(STATION BATHROOM)>
;<OBJECT SHAVER
(IN MASTER-BATH-COUNTER)
(DESC "Schick Shaver")
(ADJECTIVE SCHICK DRY)
(SYNONYM SHAVER)
(FLAGS NDESCBIT)>
<OBJECT MASTER-BATH-COUNTER
(IN BATHROOM)
(DESC "counter")
(ADJECTIVE LONG BATH BATHROOM)
(SYNONYM COUNTER PULLMAN)
(FLAGS NDESCBIT FURNITURE SURFACEBIT CONTBIT OPENBIT)
(CAPACITY 50)
(ACTION MASTER-BATH-COUNTER-F)>
<ROUTINE MASTER-BATH-COUNTER-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<TELL "On the counter are a shaver, tooth paste, and so on." CR>)>>
<OBJECT TUB-DOOR
(SYNONYM DOOR)
(ADJECTIVE TUB BATHTUB BATH)
(DESC "tub door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
][
<ROOM TUB-ROOM
(IN ROOMS)
(DESC "tub room")
;(ADJECTIVE TUB)
;(SYNONYM ROOM)
(LDESC
"This is a separate room, completely lined with tile, for bathing in the
Japanese style. On one side is a shower head and drain, where you could
wash away surface dirt. On the other side is a deep tub, to be filled
with steaming water up to your neck. Potted plants give the room a
tropical air. A window looks over the rock garden outside, and a door
leads west.")
(FLAGS RLANDBIT ONBIT)
(WEST TO BATHROOM IF TUB-DOOR IS OPEN)
(OUT TO BATHROOM IF TUB-DOOR IS OPEN)
(GLOBAL TUB-DOOR BATH-WINDOW ;SHOWER BATHTUB SINK)
(LINE 3)
(STATION BATHROOM)>
<OBJECT BATH-WINDOW
(IN LOCAL-GLOBALS)
(DESC "bath window")
(ADJECTIVE BATH)
(SYNONYM WINDOW PANE PANES FRAME)
(GENERIC GENERIC-WINDOW-F)
(ACTION WINDOW-F)
(FLAGS NDESCBIT WINDOWBIT)>
<OBJECT POTTED-PLANTS
(IN TUB-ROOM)
(DESC "potted plants")
(SYNONYM PLANT PLANTS)
(ADJECTIVE POTTED)
(FLAGS NDESCBIT)>
<OBJECT BATHTUB
(IN LOCAL-GLOBALS)
(DESC "bathtub")
(SYNONYM TUB BATHTUB)
(ADJECTIVE BATH)
(FLAGS NDESCBIT VEHBIT OPENBIT CONTBIT FURNITURE)
(CAPACITY 50)>
<OBJECT SHOWER
(ADJECTIVE SHOWER)
(SYNONYM SHOWER HEAD)
(DESC "shower")
(IN TUB-ROOM ;LOCAL-GLOBALS)
(FLAGS ;CONTBIT NDESCBIT TRYTAKEBIT FURNITURE)
(ACTION SHOWER-F)>
<ROUTINE SHOWER-F ()
<COND (<AND <==? 1 <GET ,P-PRSO 0>> ;"only one dir. object"
<VERB? TAKE THROUGH>>
<TELL
"Anyone can see that you really need a shower. In fact, this is
one of your better ideas so far on this case. But your clothes would get
awful wet, and you must have better things to do." CR>)>>
]
<OBJECT TOILET-DOOR
(SYNONYM DOOR)
(ADJECTIVE TOILET)
(DESC "toilet door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT OPENBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
<ROOM TOILET-ROOM
(IN ROOMS)
(DESC "toilet room")
(ADJECTIVE TOILET)
(SYNONYM ROOM)
(FLAGS RLANDBIT ONBIT)
(LDESC
"This is a separate room for a toilet only."
;" and appropriate reading matter.")
(EAST TO BATHROOM IF TOILET-DOOR IS OPEN)
(OUT TO BATHROOM IF TOILET-DOOR IS OPEN)
(GLOBAL TOILET-DOOR TOILET)
(LINE 3)
(STATION BATHROOM)>
<OBJECT LINDER-BATH-DOOR
(ADJECTIVE REDWOOD BATH BATHROOM)
(SYNONYM DOOR)
(DESC "redwood door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
(GENERIC GENERIC-BATH-DOOR-F)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM LINDER-ROOM
(IN ROOMS)
(DESC "Linder's bedroom")
(ADJECTIVE MASTER LINDER BED HIS)
(SYNONYM BEDROOM ROOM)
(GENERIC GENERIC-BEDROOM-F)
(FLAGS RLANDBIT ONBIT)
;(DESCFCN LINDER-ROOM-F)
(ACTION LINDER-ROOM-F)
(WEST TO LIVING-ROOM IF LINDER-DOOR IS OPEN)
(EAST TO ROCK-GARDEN IF LINDER-BACK-DOOR IS OPEN)
(OUT TO ROCK-GARDEN IF LINDER-BACK-DOOR IS OPEN)
(SOUTH TO BATHROOM IF LINDER-BATH-DOOR IS OPEN)
(GLOBAL LINDER-DOOR LINDER-BACK-DOOR LINDER-BATH-DOOR
CLOSET MIRROR LINDER-WINDOW BED CHAIR ;TELEPHONE ;TABLE)
(LINE 1)
(STATION LINDER-ROOM)>
<ROUTINE LINDER-ROOM-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-ENTER>
<I-PROMPT-2>)
(<==? .ARG ,M-LOOK> ;<VERB? LOOK>
<TELL
"The bedroom is elegant but not tidy. A four-poster bed, chair and
dresser, made of teak and mahogany, look hand-crafted. There are doors
on the west and south walls, and a door and window to the east look
outside. Clothes and newspapers are scattered about. It seems that
Linder misse"
<COND (<FSET? ,CORPSE ,INVISIBLE> "s") (T "d")>
" the woman's touch." CR>)>>
<OBJECT LINDER-WINDOW
(IN LOCAL-GLOBALS)
(DESC "Linder's window")
(ADJECTIVE LINDER HIS)
(SYNONYM WINDOW PANE PANES FRAME)
(GENERIC GENERIC-WINDOW-F)
(ACTION WINDOW-F)
(FLAGS NDESCBIT WINDOWBIT)>
<OBJECT LINDER-ROOM-STUFF
(IN LINDER-ROOM)
(SYNONYM CLOTHES NEWSPAPERS PAPERS STUFF)
(DESC "stuff in the room")
(FLAGS NDESCBIT TRYTAKEBIT READBIT)
(ACTION CLOSET-STUFF-F)>
<OBJECT FOUR-POSTER
(IN LINDER-ROOM)
(DESC "four-poster bed")
(ADJECTIVE FOUR FOUR-POSTER)
(SYNONYM BED POSTER FOUR-POSTER)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE VEHBIT)
(CAPACITY 30)
;(ACTION BED-F)>
<OBJECT MASTER-BEDROOM-DRESSER
(IN LINDER-ROOM)
(DESC "dresser")
(SYNONYM DRESSER)
(FLAGS NDESCBIT CONTBIT OPENBIT FURNITURE)
(CAPACITY 30)
(ACTION MASTER-BEDROOM-DRESSER-F)>
<ROUTINE MASTER-BEDROOM-DRESSER-F ()
<COND (<VERB? EXAMINE>
<TELL
"The dresser is a beautiful piece of cabinetry." CR>)
(<VERB? LOOK-INSIDE SEARCH OPEN>
<TELL
"You open all the drawers and find only shirts, socks, underwear, hankies,
and so on. What a disappointment." CR>)>>
]
<OBJECT LINDER-DOOR
(SYNONYM DOOR)
(ADJECTIVE BEDROOM)
(DESC "bedroom door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
(GENERIC GENERIC-BEDROOM-DOOR-F)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM LIVING-ROOM
(IN ROOMS)
(DESC "living room")
(ADJECTIVE LIVING)
(SYNONYM ROOM PARLOR PARLOUR)
(FLAGS RLANDBIT ONBIT)
(ACTION LIVING-ROOM-F)
(EAST TO LINDER-ROOM IF LINDER-DOOR IS OPEN)
(SOUTH TO HALL-1)
(WEST TO DINING-ROOM IF LIVING-DINING-DOOR IS OPEN)
(GLOBAL LINDER-DOOR LIVING-DINING-DOOR TELEPHONE LAMP ;WINDOW)
(LINE 1)
(STATION LIVING-ROOM)
;(CORRIDOR 32)>
<ROUTINE LIVING-ROOM-F ("OPTIONAL" (RARG <>))
<COND ;(<AND ,RADIO-ON <==? .RARG ,M-ENTER>>
<TELL "The radio is playing." CR>)
(<==? .RARG ,M-LOOK>
;<SETG WELCOMED T>
<TELL
"A huge fieldstone fireplace on the south wall holds a blazing fire,
filling the living room with warmth and light. Grouped in front of the
fire are a glass-topped coffee table and a rattan davenport and club
chair, with cushions covered in a print showing bamboo plants in the
style of Japanese brush-painting. A lamp with a printed shade and a
telephone sit on the table." CR>
;<COND (<IN? ,MONICA ,SOFA>
<TELL
"Monica is sitting on the davenport, one arm stretched along its back
and the other holding a cigarette in the air. " CR>)
(<IN? ,MONICA ,LIVING-ROOM>
<TELL
"Monica is leaning against the mantle, looking at the fire. " CR>)>
<TELL
"On the north wall are a liquor cabinet and a console radio made of
light-colored wood. ">
<COND (,RADIO-ON <TELL "The radio is playing. ">)>
<DDESC
"A single door in the east wall is " ,LINDER-DOOR ",
and at the west end of the room is a double door.">)>>
<OBJECT FIREPLACE
(IN LIVING-ROOM)
(DESC "fieldstone fireplace")
(ADJECTIVE FIELDS STONE ;FIRE)
(SYNONYM FIREPLACE ;PLACE)
(FLAGS NDESCBIT)>
<OBJECT FIRE
(IN LIVING-ROOM)
(DESC "fire")
(SYNONYM FIRE)
(FLAGS NDESCBIT)>
<OBJECT WOOD-PILE
(IN LIVING-ROOM)
(DESC "wood pile")
(ADJECTIVE WOOD)
(SYNONYM PILE)
(FLAGS NDESCBIT)>
<OBJECT SOFA
(IN LIVING-ROOM)
(DESC "davenport")
(SYNONYM COUCH SOFA DAVENPORT DIVAN)
(CAPACITY 30)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT VEHBIT FURNITURE)>
<OBJECT CLUB-CHAIR
(IN LIVING-ROOM)
(DESC "club chair")
(ADJECTIVE CLUB)
(SYNONYM CHAIR)
(CAPACITY 20)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT VEHBIT FURNITURE)>
<OBJECT COFFEE-TABLE
(IN LIVING-ROOM)
(DESC "coffee table")
(ADJECTIVE COFFEE)
(SYNONYM TABLE)
(FLAGS NDESCBIT FURNITURE CONTBIT SURFACEBIT OPENBIT)
(CAPACITY 50)>
<OBJECT RADIO
(IN LIVING-ROOM)
(DESC "radio")
;(DESCFCN RADIO-F)
(ADJECTIVE CONSOLE)
(SYNONYM RADIO VOLUME MUSIC PROGRAM ;CONSOLE)
(TEXT
"It's a Stromberg-Carlson triple-range console. The exit in the bottom
is evidence of the Acoustical Labyrinth inside.")
(FLAGS NDESCBIT)
(ACTION RADIO-F)>
<GLOBAL RADIO-ON T>
<ROUTINE CAN-HEAR-RADIO? ()
<COND (<AND ,RADIO-ON
<OR <AND <DOBJ? DINING-DOOR> <==? ,HERE ,FRONT-YARD>>
<AND <DOBJ? FRONT-DOOR> <==? ,HERE ,FRONT-PORCH>>
<AND <DOBJ? LIVING-DINING-DOOR> <==? ,HERE ,DINING-ROOM>>
<AND <DOBJ? KITCHEN-DINING-DOOR KITCHEN-HALL-DOOR>
<==? ,HERE ,KITCHEN>>
<AND <DOBJ? LINDER-DOOR> <==? ,HERE ,LINDER-ROOM>>>>
<RTRUE>)>>
<GLOBAL RADIO-TABLE
<PLTABLE "an Amos 'n' Andy serial" ;8
"a Lum & Abner serial"
"the Paul Whiteman orchestra"
"the Paul Whiteman orchestra"
"Nick Harris's \"Camera Clue Murder\"" ;9
"the March of Progress"
"Kay Kyser's orchestra"
"Kay Kyser's orchestra"
"the L.A. Times news program" ;10
"Ozzie Nelson's orchestra"
"the Montoya Orchestra"
"Phil Harris's orchestra"
"the Duchin orchestra" ;11
"a balalaika orchestra"
"Ozzie Nelson's orchestra"
"Ozzie Nelson's orchestra"
"\"Rhapsody in Wax\"" ;12
"\"Rhapsody in Wax\""
"\"Rhapsody in Wax\""
"\"Rhapsody in Wax\""
"a revival meeting with Oral Roberts" ;1
"a revival meeting with Oral Roberts"
"a revival meeting with Oral Roberts"
"a revival meeting with Oral Roberts"
"the Philadelphia Orchestra, conducted by Leopold Stokowski" ;2
"the Philadelphia Orchestra, conducted by Leopold Stokowski"
"the Philadelphia Orchestra, conducted by Leopold Stokowski"
"the Philadelphia Orchestra, conducted by Leopold Stokowski"
"Lowell Thomas, Radio Commentator" ;3
"Lowell Thomas, Radio Commentator"
"a program of classical music"
"a program of classical music"
"a revival meeting with Aimee Semple McPherson" ;4
"a revival meeting with Aimee Semple McPherson"
"a revival meeting with Aimee Semple McPherson"
"a revival meeting with Aimee Semple McPherson"
"a program of classical music" ;5
"a program of classical music"
"a program of classical music"
"a program of classical music"
"Boake Carter, Philco News Commentator" ;6
"Boake Carter, Philco News Commentator"
"a program of classical music"
"a program of classical music"
"\"Rise and Shine\"" ;7
"\"Rise and Shine\""
"\"Rise and Shine\""
"\"Rise and Shine\""
"\"Between You, Me, and the Fence Post\"">>
<ROUTINE RADIO-F ("OPTIONAL" (ARG <>) "AUX" PGM)
<COND (<AND ,RADIO-ON <VERB? LISTEN>>
<SET PGM <GET ,RADIO-TABLE <+ 1 </ <- ,PRESENT-TIME 480> 15>>>>
<TELL "You can hardly avoid it. ">
<COND (<==? .PGM ,RADIO-ON> <TELL "It's ">)
(T <TELL "You" " spin the dial and find ">)>
<SETG RADIO-ON .PGM>
<TELL ,RADIO-ON "." CR>)
(<VERB? LAMP-ON PLAY LISTEN>
<COND (,RADIO-ON <TELL "It's already on. You">)
(T <TELL "You turn on the radio,">)>
<SETG RADIO-ON <GET ,RADIO-TABLE <+ 1 </ <- ,PRESENT-TIME 480> 15>>>>
<TELL " spin the dial and find " ,RADIO-ON "." CR>)
(<VERB? LAMP-OFF>
<COND (<AND ,RADIO-ON <IN? ,MONICA ,HERE>>
<TELL
"Monica looks at you with disgust as you turn off the radio." CR>)
(T <TELL "The radio is now off." CR>)>
<SETG RADIO-ON <>>
<RTRUE>)
(<VERB? TURN-UP>
<COND (,RADIO-ON
<TELL
"The radio is already pretty loud. Any louder would probably
make the neighbors complain." CR>)
(T <TELL "It's not on!" CR>)>)
(<VERB? TURN-DOWN>
<COND (,RADIO-ON
<COND (<AND <IN? ,MONICA ,HERE> <NOT ,MONICA-TIED-TO>>
<TELL
"Monica stops you from turning down the volume. She seems strangely
interested in the radio program." CR>)
(T <TELL "You can't." CR>)>)
(T <TELL "It's not on!" CR>)>)>>
<OBJECT LIQUOR-CABINET
(IN LIVING-ROOM)
(DESC "liquor cabinet")
(ADJECTIVE LIQUOR)
(SYNONYM CABINET)
(FLAGS NDESCBIT CONTBIT SEARCHBIT)
(CAPACITY 20)>
]
<OBJECT LIVING-DINING-DOOR
(ADJECTIVE DOUBLE)
(SYNONYM DOOR)
(DESC "double door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT OPENBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM DINING-ROOM
(IN ROOMS)
(DESC "dining room")
(LDESC
"A table and benches, built out of blond wood for six people, sit in the
middle of the room. On the south wall is a swinging door that leads to
the kitchen, and on the east wall a double door to the living room.
Through a French door on the west wall you can see the front yard.")
(ADJECTIVE DINING)
(SYNONYM ROOM)
(FLAGS RLANDBIT ONBIT)
(EAST TO LIVING-ROOM IF LIVING-DINING-DOOR IS OPEN)
(SOUTH TO KITCHEN IF KITCHEN-DINING-DOOR IS OPEN)
(WEST TO FRONT-YARD IF DINING-DOOR IS OPEN)
(OUT TO FRONT-YARD IF DINING-DOOR IS OPEN)
(GLOBAL DINING-DOOR LIVING-DINING-DOOR KITCHEN-DINING-DOOR WINDOW
;CABINET CHAIR)
(LINE 1)
(STATION LIVING-ROOM)
;(CORRIDOR 32)>
<OBJECT DINING-ROOM-TABLE
(IN DINING-ROOM)
(DESC "dining table")
(ADJECTIVE LONG DINING)
(SYNONYM TABLE)
(FLAGS NDESCBIT FURNITURE CONTBIT SURFACEBIT OPENBIT VEHBIT)
(CAPACITY 50)>
<OBJECT DINING-ROOM-BENCH
(IN DINING-ROOM)
(DESC "dining bench")
(ADJECTIVE DINING)
(SYNONYM BENCH BENCHES)
(FLAGS NDESCBIT FURNITURE CONTBIT SURFACEBIT OPENBIT VEHBIT)
(CAPACITY 50)>
<OBJECT DINING-DOOR
(ADJECTIVE DINING ROOM FRENCH)
(SYNONYM DOOR LOCK)
(DESC "French door")
(IN LOCAL-GLOBALS)
(FLAGS LOCKED DOORBIT)
(GENERIC LOCKED-F)
;(ACTION HIDE-LOOK-DOOR-F)>
]
<OBJECT KITCHEN-DINING-DOOR
(ADJECTIVE SWINGING)
(SYNONYM DOOR)
(DESC "swinging door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT OPENBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM KITCHEN
(IN ROOMS)
(DESC "kitchen")
(LDESC
"The Linder kitchen is full of electric appliances: range and hood,
refrigerator, mixer, toaster, clock, and so on. Several white steel
cabinets make for plenty of storage space. To the north is the dining
room, to the east the hall.")
(SYNONYM KITCHEN)
(FLAGS RLANDBIT ONBIT)
(NORTH TO DINING-ROOM IF KITCHEN-DINING-DOOR IS OPEN)
(EAST TO HALL-1 IF KITCHEN-HALL-DOOR IS OPEN)
(GLOBAL KITCHEN-DINING-DOOR KITCHEN-HALL-DOOR KITCHEN-WINDOW
SINK ;TELEPHONE CABINET CHAIR)
(LINE 1)
(STATION HALL-1)>
<OBJECT KITCHEN-WINDOW
(IN LOCAL-GLOBALS)
(DESC "kitchen window")
(ADJECTIVE KITCHEN)
(SYNONYM WINDOW PANE PANES FRAME)
(FLAGS NDESCBIT WINDOWBIT)
(GENERIC GENERIC-WINDOW-F)
(ACTION WINDOW-F)>
[
<OBJECT K-CABINETS
(IN KITCHEN)
(DESC "cabinet")
(SYNONYM CABINET)
(FLAGS NDESCBIT CONTBIT)
(CAPACITY 50)
;(ACTION K-CABINETS-F)>
<OBJECT SILVERWARE
(IN K-CABINETS)
(DESC "set of silverware")
(SYNONYM SILVER SET)
(FLAGS TRYTAKEBIT)
(ACTION SILVERWARE-F)>
<ROUTINE SILVERWARE-F ()
<COND ;(<VERB? COUNT>
<TELL "There are 16 complete place settings." CR>)
;(<VERB? EXAMINE>
<TELL
"The silver has fine quality and design, not to mention exotic shapes
from Asia." CR>)
(<VERB? TAKE>
<TELL
"You could probably hock this stuff for a bundle, but you'd never get
away with it, since the butler will no doubt count it again when
you leave." CR>)>>
<OBJECT GLASSES
(IN K-CABINETS)
(DESC "glass collection")
(SYNONYM GLASS GLASSES)
(FLAGS TRYTAKEBIT)
(ACTION SILVERWARE-F)>
;<ROUTINE GLASSES-F ()
<COND ;(<VERB? COUNT>
<TELL "There are at least two dozen." CR>)
(<VERB? TAKE> <NO-TOUCH>)>>
<OBJECT CHINA
(IN K-CABINETS)
(SYNONYM CHINA SET)
(DESC "set of china")
(FLAGS TRYTAKEBIT)
(ACTION SILVERWARE-F)>
;<ROUTINE CHINA-F ()
<COND (<VERB? TAKE> <NO-TOUCH>)>>
;<OBJECT CUPS
(IN KITCHEN)
(SYNONYM GROUP CUPS TEACUP)
(ADJECTIVE CUPS ANTIQUE TEA)
(DESC "group of cups")
(FLAGS NDESCBIT)
;(ACTION CUPS-F)>
;<OBJECT PLATES
(IN KITCHEN)
(SYNONYM PLATE PLATES)
(DESC "plates")
(FLAGS NDESCBIT)
;(ACTION PLATES-F)>
][
<OBJECT K-CUPBOARD
(IN KITCHEN)
(DESC "cupboard")
(SYNONYM CUPBOARD)
(FLAGS NDESCBIT CONTBIT)
(CAPACITY 50)
;(ACTION K-CABINETS-F)>
<OBJECT FOODS
(IN K-CUPBOARD)
(DESC "bunch of canned food")
(ADJECTIVE ;DRIED CANNED ;PACKAGED)
(SYNONYM FOOD FOODS BUNCH)
(FLAGS TRYTAKEBIT)
(ACTION FOODS-F)>
<ROUTINE FOODS-F ()
<COND (<VERB? EAT TAKE>
<TELL
"Your parents must have taught you better manners than that." CR>)>>
]
<OBJECT K-CLOCK
(IN KITCHEN)
(ADJECTIVE KITCHEN)
(SYNONYM CLOCK)
(DESC "kitchen clock")
(FLAGS NDESCBIT)
;(SIZE 4)
(ACTION K-CLOCK-F)>
<ROUTINE K-CLOCK-F ()
<COND (<VERB? EXAMINE>
<TELL "The time on the kitchen clock is ">
<TIME-PRINT ,PRESENT-TIME>
<CRLF>)
(<VERB? LISTEN>
<TELL "The clock is humming electrically." CR>)>>
[
<OBJECT REFRIGERATOR
(IN KITCHEN)
(DESC "refrigerator")
(ADJECTIVE ELECTRIC)
(SYNONYM APPLIANCE REFRIGERATOR FRIDGE ;MIXER)
(FLAGS NDESCBIT CONTBIT)
(CAPACITY 22)
(ACTION APPLIANCE-F)>
<OBJECT COLD-FOODS
(IN REFRIGERATOR)
(DESC "bunch of cold food")
(ADJECTIVE COLD)
(SYNONYM FOOD FOODS BUNCH)
(FLAGS TRYTAKEBIT)
(ACTION FOODS-F)>
]
<OBJECT RANGE
(IN KITCHEN)
(DESC "range")
(ADJECTIVE ELECTRIC)
(SYNONYM RANGE)
(FLAGS NDESCBIT ;DUPLICATE)
(ACTION APPLIANCE-F)>
<OBJECT HOOD
(IN KITCHEN)
(DESC "range hood")
(ADJECTIVE ELECTRIC RANGE)
(SYNONYM HOOD)
(FLAGS NDESCBIT)
(ACTION APPLIANCE-F)>
<OBJECT MIXER
(IN KITCHEN)
(DESC "mixer")
(ADJECTIVE ELECTRIC)
(SYNONYM MIXER)
(FLAGS NDESCBIT)
(ACTION APPLIANCE-F)>
<OBJECT TOASTER
(IN KITCHEN)
(DESC "toaster")
(ADJECTIVE ELECTRIC)
(SYNONYM TOASTER)
(FLAGS NDESCBIT)
(ACTION APPLIANCE-F)>
<ROUTINE APPLIANCE-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's as modern as yesterday, like everything in the kitchen." CR>)
(<VERB? LAMP-OFF LAMP-ON USE>
<TELL
"The butler is probably very proud and jealous of these sparkling
modern gadgets, and he wouldn't like you using them." CR>)>>
]
<OBJECT KITCHEN-HALL-DOOR
(ADJECTIVE KITCHEN ;HALL)
(SYNONYM DOOR)
(DESC "kitchen door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT OPENBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
<ROOM HALL-1
(IN ROOMS)
(DESC "hallway")
(FLAGS RLANDBIT ONBIT)
;(DESCFCN HALL-1-F)
(ACTION HALL-1-F)
;(ADJECTIVE HALL)
;(SYNONYM HALLWAY WAY)
(SOUTH TO HALL-2)
(NORTH TO LIVING-ROOM)
(WEST TO KITCHEN IF KITCHEN-HALL-DOOR IS OPEN)
(GLOBAL KITCHEN-HALL-DOOR)
(LINE 1)
(STATION HALL-1)
(CORRIDOR 16)>
<ROUTINE HALL-1-F ("OPTIONAL" RARG)
<COND (<EQUAL? .RARG ;,M-ENTER ,M-LOOK ;,M-OBJDESC>
<TELL
"This is the north end of the central hallway.
Just to the north, you can see warm yellow light in the living room.">
<COND (<AND <IN? ,MONICA ,LIVING-ROOM>
<IN? ,LINDER ,LIVING-ROOM>
<NOT ,LINDER-FOLLOWS-YOU>>
<TELL " You can hear voices talking excitedly.">)>
<CRLF>)>>
<ROOM HALL-2
(IN ROOMS)
(DESC "hallway")
(FLAGS RLANDBIT ONBIT NDESCBIT)
(ACTION HALL-2-F)
;(ADJECTIVE HALL)
;(SYNONYM HALLWAY WAY)
(EAST TO MONICA-ROOM IF MONICA-DOOR IS OPEN)
(WEST TO BUTLER-ROOM IF BUTLER-DOOR IS OPEN)
(SOUTH TO HALL-3)
(NORTH TO HALL-1)
(GLOBAL MONICA-DOOR BUTLER-DOOR)
(LINE 1)
(STATION HALL-2)
(CORRIDOR 16)>
<ROUTINE HALL-2-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is near the middle of the central hallway.
At the north end, you can see the living room; to the east and west are
bedroom doors. ">
<COND (<FSET? ,MONICA-DOOR ,OPENBIT>
<COND (<FSET? ,BUTLER-DOOR ,OPENBIT>
<TELL "Both doors are open." CR>)
(T <TELL "The door to the east is open." CR>)>)
(<FSET? ,BUTLER-DOOR ,OPENBIT>
<TELL "The door to the west is open." CR>)
(T <TELL "Both doors are closed." CR>)>)>>
<OBJECT BUTLER-DOOR
(SYNONYM DOOR)
(ADJECTIVE BUTLER HIS)
(DESC "butler's door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM BUTLER-ROOM
(IN ROOMS)
(ACTION BUTLER-ROOM-F)
(DESC "butler's room")
(ADJECTIVE BUTLER HIS BED SERVANT)
(SYNONYM BEDROOM ROOM)
(GENERIC GENERIC-BEDROOM-F)
(FLAGS RLANDBIT ONBIT)
(EAST TO HALL-2 IF BUTLER-DOOR IS OPEN)
(OUT TO HALL-2 IF BUTLER-DOOR IS OPEN)
(NORTH TO BUTLER-BATH IF BUTLER-BATH-DOOR IS OPEN)
(IN TO BUTLER-BATH IF BUTLER-BATH-DOOR IS OPEN)
(GLOBAL BUTLER-DOOR BUTLER-BATH-DOOR BUTLER-WINDOW CLOSET BED)
(LINE 1)
(STATION HALL-2)>
<ROUTINE BUTLER-ROOM-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<DDESC
"This is the bedroom of the butler, Mr. Phong, and is very simply
furnished. A single bed, flanked by bare wooden end tables, sits below a
closed window on the west end of the room. The floor is hardwood, with no
rug. The only exit is a door to the east, which is " ,BUTLER-DOOR ".">
<DDESC
"Another door, now " ,BUTLER-BATH-DOOR", must lead to a private bathroom.">)>>
<OBJECT BUTLER-TABLE
(IN BUTLER-ROOM)
(ADJECTIVE BARE WOOD WOODEN END)
(SYNONYM TABLE TABLES)
(DESC "end table")
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE AN)
(CAPACITY 15)>
<OBJECT BUTLER-BATH-DOOR
(ADJECTIVE ;BUTLER ;HIS BATH BATHROOM)
(SYNONYM DOOR)
(DESC ;"butler's " "bathroom door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
(GENERIC GENERIC-BATH-DOOR-F)
;(ACTION HIDE-LOOK-DOOR-F)>
<OBJECT BUTLER-WINDOW
(IN LOCAL-GLOBALS)
(DESC "bedroom window")
(SYNONYM WINDOW PANE PANES FRAME)
(ADJECTIVE BUTLER HIS BEDROOM BED ROOM)
(FLAGS NDESCBIT WINDOWBIT)
(GENERIC GENERIC-WINDOW-F)
(ACTION WINDOW-F)>
][
<ROOM BUTLER-BATH
(IN ROOMS)
(FLAGS RLANDBIT ONBIT)
(DESC "butler's bathroom")
(ACTION BUTLER-BATH-F)
(ADJECTIVE BUTLER HIS BATH SERVANT)
(SYNONYM ROOM BATHROOM)
(GENERIC GENERIC-BATHROOM-F)
(SOUTH TO BUTLER-ROOM IF BUTLER-BATH-DOOR IS OPEN)
(OUT TO BUTLER-ROOM IF BUTLER-BATH-DOOR IS OPEN)
(GLOBAL MIRROR TOILET SINK BATHTUB BUTLER-BATH-DOOR)>
<ROUTINE BUTLER-BATH-F ("OPTIONAL" (RARG <>))
<COND (<OR <==? .RARG ,M-LOOK>
<AND <NOT .RARG> <VERB? EXAMINE>>>
<DDESC
"This is Mr. Phong's bathroom, with the usual plumbing and not much
else. The door at the south side of the room is " ,BUTLER-BATH-DOOR ".">)>>
;<OBJECT BUTLER-SHELVES
(IN BUTLER-BATH)
(DESC "shelf")
(SYNONYM SHELVES SHELF)
(FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
(CAPACITY 30)>
]
<ROOM HALL-3
(IN ROOMS)
(DESC "hallway")
(LDESC
"This hallway seems to run the length of the house, from the garage
at the south end to the living room at the north. There is enough warm yellow
light flooding from the living room for you to see a few doors on each side
of the hall.")
(FLAGS RLANDBIT ONBIT)
(WEST TO ENTRY)
(OUT TO ENTRY)
(SOUTH TO HALL-4)
(NORTH TO HALL-2)
(LINE 1)
(STATION HALL-3)
(CORRIDOR 16)>
[
<ROOM ENTRY
(IN ROOMS)
(DESC "entry")
(ACTION ENTRY-F)
(SYNONYM ENTRY FOYER)
(FLAGS RLANDBIT ONBIT AN)
(WEST TO FRONT-PORCH IF FRONT-DOOR IS OPEN)
(OUT TO FRONT-PORCH IF FRONT-DOOR IS OPEN)
(EAST TO HALL-3)
(GLOBAL FRONT-DOOR CLOSET)
(LINE 1)
(STATION ENTRY)>
<ROUTINE ENTRY-F ("OPTIONAL" (RARG <>))
<COND ;(<==? .RARG ,M-ENTER>
<COND (<AND <NOT <IN? ,PHONG ,ENTRY>>
<NOT ,WELCOMED>
<FSET? ,CORPSE ,INVISIBLE>>
<TELL
"The butler appears from a hallway to the east." CR>
<WELCOME>)>)
(<==? .RARG ,M-LOOK>
<DDESC
"Here in the entry is a small Shinto shrine, with a hanging scroll and
an arrangement of flowers, as well as a coat closet and a platform for
storing shoes. You can see a hallway to the east. The front door, on the
west wall, is " ,FRONT-DOOR ".">)>>
<OBJECT FLOWER-ARRANGEMENT
(IN ENTRY)
(DESC "flower arrangement")
(ADJECTIVE FLOWER)
(SYNONYM ARRANGEMENT)
(FLAGS NDESCBIT)
(ACTION FLOWER-F)>
<ROUTINE FLOWER-F ()
<COND (<VERB? PICK>
<TELL "What? And spoil the arrangement?!" CR>)
(<VERB? SMELL>
<TELL
"Someone chose these flowers for looks, not aroma." CR>)>>
<OBJECT SCROLL
(IN ENTRY)
(DESC "scroll")
(LDESC "A lovely calligraphed scroll hangs on the wall.")
(ADJECTIVE LOVELY CALLIGRAPHED)
(SYNONYM SCROLL SHRINE)
(FLAGS NDESCBIT READBIT)
(ACTION SCROLL-F)>
<ROUTINE SCROLL-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"The scroll is written with a fine brush. Freely translated, it reads:|
|
">
<PUT 0 8 <BOR <GET 0 8> 2>>
<TELL
"The WITNESS: An INTERLOGIC Mystery|
from Infocom, Inc.|
by Stu Galley|
based on an idea by|
Marc Blank and Dave Lebling|
Copyright (c) 1983 Infocom, Inc.|
All rights reserved.|
WITNESS and INTERLOGIC|
are trademarks of Infocom, Inc.|
" CR>
<PUT 0 8 <BAND <GET 0 8> -3>>
<RTRUE>)>>
<OBJECT SHOE-PLATFORM
(IN ENTRY)
(DESC "shoe platform")
(ADJECTIVE SHOE)
(SYNONYM PLATFORM)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE)
(CAPACITY 10)
(ACTION SHOE-PLATFORM-F)>
<ROUTINE SHOE-PLATFORM-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE SEARCH>
<TELL
"Several pairs of shoes are in a row, ready for inspection.">
<COND (<AND <IN? ,MUDDY-SHOES ,SHOE-PLATFORM>
<NOT <FSET? ,MUDDY-SHOES ,INVISIBLE>>>
;<FCLEAR ,MUDDY-SHOES ,INVISIBLE>
<TELL " One pair of boots would not pass.">)>
<CRLF>)>>
<OBJECT OTHER-SHOES
(IN SHOE-PLATFORM)
(DESC "other shoes")
(ADJECTIVE OTHER)
(SYNONYM SHOE SHOES ;ROW)
(FLAGS TRYTAKEBIT NDESCBIT AN)
(ACTION OTHER-SHOES-F)>
<ROUTINE OTHER-SHOES-F ()
<COND (<VERB? EXAMINE>
<TELL
"They're just ordinary shoes, nothing to get excited about." CR>)
(<VERB? TAKE>
<TELL "That wouldn't do you any good." CR>)>>
]
<OBJECT FRONT-DOOR
(ADJECTIVE FRONT ;MAIN)
(SYNONYM DOOR LOCK)
(DESC "front door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT LOCKED)
(GENERIC LOCKED-F)
(ACTION FRONT-DOOR-F)>
<ROUTINE FRONT-DOOR-F ("AUX" (VAL <>))
<COND (<VERB? KNOCK>
<COND (<AND <==? ,PRSO ,FRONT-DOOR>
<NOT ,WELCOMED>
<FSET? ,CORPSE ,INVISIBLE>>
<COND (<==? ,HERE ,FRONT-PORCH> <WELCOME>)
(T <TELL "You can't reach the front door."CR>)>)
(<INHABITED? <DOOR-ROOM ,HERE ,FRONT-DOOR>>
<TELL "A muffled voice says, \"Come in!\"" CR>)
(T
<TELL "There is no answer at the door." CR>)>)
(<VERB? WALK-TO>
<COND (<EQUAL? ,HERE ,DRIVEWAY-ENTRANCE ,GARAGE>
<SET VAL T> <GOTO ,DRIVEWAY>)>
<COND (<EQUAL? ,HERE ,DRIVEWAY ,FRONT-YARD>
<SET VAL T> <GOTO ,FRONT-PORCH>)>
.VAL)>>
[
<ROOM STORAGE-CLOSET
(IN ROOMS)
(DESC "storage closet")
(LDESC
"This is a little-used storage closet containing odds and ends of no interest
whatsoever. The exit is to the east.")
(ADJECTIVE STORAGE)
(SYNONYM CLOSET)
(FLAGS RLANDBIT ONBIT)
(EAST TO HALL-4 IF STORAGE-DOOR IS OPEN)
(OUT TO HALL-4 IF STORAGE-DOOR IS OPEN)
(GLOBAL STORAGE-DOOR ;CLOSET)
(SIZE 1)
(LINE 2)
(STATION HALL-4)>
<OBJECT STORAGE-DOOR
(SYNONYM DOOR)
(ADJECTIVE STORAGE CLOSET)
(DESC "storage door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
<OBJECT LINENS
(IN STORAGE-CLOSET)
(DESC "linens")
(SYNONYM LINENS SHEETS LINEN)
(FLAGS NDESCBIT)
(ACTION CLOSET-STUFF-F)>
<OBJECT TOWELS
(IN STORAGE-CLOSET)
(DESC "towel")
(SYNONYM TOWEL TOWELS)
(FLAGS NDESCBIT)
(ACTION CLOSET-STUFF-F)>
<ROUTINE CLOSET-STUFF-F ()
<COND (<VERB? TAKE MOVE USE>
<TELL "You have no need for them." CR>)
(<VERB? READ SEARCH EXAMINE>
<TELL
"You go through" THE-PRSO " and find nothing of interest." CR>)>>
]
<ROOM HALL-4
(IN ROOMS)
(DESC "hallway")
(LDESC
"This is the south end of a hallway that runs the length of the house.
At the far end, to the north, you can see the living room; immediately
to the south is a door. Other doors on both sides lead to other rooms.")
(FLAGS RLANDBIT ONBIT)
(SOUTH TO GARAGE IF GARAGE-DOOR IS OPEN)
(OUT TO GARAGE IF GARAGE-DOOR IS OPEN)
(EAST TO OFFICE IF OFFICE-DOOR IS OPEN)
(NORTH TO HALL-3)
(WEST TO STORAGE-CLOSET IF STORAGE-DOOR IS OPEN)
(GLOBAL STORAGE-DOOR OFFICE-DOOR GARAGE-DOOR)
(LINE 2)
(STATION HALL-4)
(CORRIDOR 16)>
<OBJECT OFFICE-DOOR
(SYNONYM DOOR)
(ADJECTIVE OFFICE)
(DESC "office door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT AN)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM OFFICE
(IN ROOMS)
(DESC "office")
(SYNONYM OFFICE)
(FLAGS RLANDBIT ONBIT AN)
(ACTION OFFICE-F)
(EAST TO OFFICE-PORCH IF OFFICE-BACK-DOOR IS OPEN)
(OUT TO OFFICE-PORCH IF OFFICE-BACK-DOOR IS OPEN)
;(SOUTH TO W.C. IF W.C.-DOOR IS OPEN)
;(IN TO W.C. IF W.C.-DOOR IS OPEN)
(WEST TO HALL-4 IF OFFICE-DOOR IS OPEN)
(GLOBAL OFFICE-DOOR OFFICE-WINDOW ;PIECE-OF-WIRE ;PIECE-OF-PUTTY
BROKEN-GLASS OFFICE-BACK-DOOR ;W.C.-DOOR TELEPHONE CLOCK)
(LINE 2)
(STATION OFFICE)>
<ROUTINE OFFICE-F ("OPTIONAL" (RARG <>))
;<SETG WELCOMED T>
<COND (<AND <==? .RARG ,M-BEG>
,LINDER-FOLLOWS-YOU
<NOT <DOBJ? CLOCK-WIRES LINDER>>
<VERB? WALK FOLLOW HIDE-BEHIND THROUGH>>
<TELL
"Linder says with frustration, \"I wish you wouldn't try to go off while
we're trying to talk.\"" CR>
<RTRUE>)
(<==? .RARG ,M-LOOK>
<TELL
"This is obviously the office of Mr. Linder's company, Pacific Trade
Associates. ">
<OFFICE-DESK-F ,M-OBJDESC>
<TELL
"Behind it is a large ornately-carved chair, like a cruiser escorting a
battle ship">
<COND (<IN? ,LINDER ,CARVED-CHAIR>
<TELL ", where Linder sits imperiously">)>
<TELL
". A simple wooden chair, polished smooth by visitors,
flanks the desk on the other side. On the north wall is a lounge,
upholstered in green velvet and a bit lumpy, with a framed wood-block
picture hanging over it. On the outside wall, next to a door and window,
stands a grandfather clock, ticking relentlessly. A file cabinet stands
in the corner." CR>
<COND (<FSET? ,OFFICE-DOOR ,OPENBIT>
<TELL
"The door to the interior hallway is open." CR>)>
;<COND (<FSET? ,W.C.-DOOR ,OPENBIT>
<TELL
"The door to a small lavatory is open." CR>)>
<COND (<FSET? ,OFFICE-BACK-DOOR ,OPENBIT>
<TELL
"The door leading outside is open." CR>)>
<COND (<FSET? ,OFFICE-WINDOW ,OPENBIT>
<TELL
"The window facing the back yard is open." CR>)>
<RTRUE>)>>
<OBJECT OFFICE-DESK
(IN OFFICE)
(ADJECTIVE LARGE MASSIVE OFFICE)
(SYNONYM DESK)
(DESC "desk")
(DESCFCN OFFICE-DESK-F)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE)
(ACTION OFFICE-DESK-F)
(CAPACITY 25)>
<ROUTINE OFFICE-DESK-F ("OPTIONAL" (ARG <>))
<COND (<OR <==? .ARG ,M-OBJDESC>
<AND <NOT .ARG> <VERB? EXAMINE LOOK-INSIDE LOOK-ON>>>
<TELL
"At the west end of the office, a massive desk of teak and mahogany
faces toward the window. It has no drawers, but the top is covered with
piles of letters, some newspapers, a telephone, and various souvenirs
from the Far East.">
<COND (<==? ,MONICA-TIED-TO ,OFFICE-DESK>
<TELL
" Monica is fastened to the desk with a " D ,MONICA-TIED-WITH ".">)>
<CRLF>
<RTRUE>)
(<VERB? LOOK-UNDER>
<TELL
"You can see dirt and grime, old chewing gum in various colors, and a pair of
black wires going from a button into the floor." CR>)
(<VERB? OPEN CLOSE>
<TELL "You can't. It doesn't have drawers." CR>)>>
<OBJECT OFFICE-DESK-STUFF
(IN OFFICE-DESK)
(SYNONYM PILES LETTER SOUVENIR STUFF)
(DESC "stuff on the desk")
(FLAGS NDESCBIT TRYTAKEBIT READBIT)
(ACTION CLOSET-STUFF-F)>
<OBJECT NEWSPAPERS
(IN OFFICE-DESK)
(SYNONYM NEWSPAPERS ;PAPERS)
(DESC "newspaper")
(FLAGS NDESCBIT TRYTAKEBIT READBIT)
(ACTION NEWSPAPERS-F)>
<ROUTINE NEWSPAPERS-F ()
<COND (<VERB? TAKE MOVE USE>
<TELL "You have no need for them." CR>)
(<VERB? READ SEARCH EXAMINE>
<TELL
"Today's L.A. Times has the usual sort of stories: secret records of the
police intelligence squad were seized in connection with an attempt to
assassinate private detective Harry Raymond; \"Two Officers Die in Battle
With Maniac\"; \"Slayer of Tijuana Girl Executed under Fugitive Law\"; and
\"Austria Near Hitler Yoke.\"" CR>)>>
<OBJECT CARVED-CHAIR
(IN OFFICE)
(DESC "carved chair")
(ADJECTIVE CARVED OFFICE ORNATE ARM LARGE)
(SYNONYM CHAIR THRONE)
(FLAGS NDESCBIT TRYTAKEBIT SURFACEBIT CONTBIT OPENBIT
VEHBIT FURNITURE)
(CAPACITY 30)
(GENERIC GENERIC-CHAIR-F)
(DESCFCN CARVED-CHAIR-F)
(ACTION CARVED-CHAIR-F)>
<ROUTINE CARVED-CHAIR-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-OBJDESC> <PRINT-CONT ,CARVED-CHAIR> <RTRUE>)
(.ARG <RFALSE>)
(<OR <VERB? EXAMINE>
<AND <VERB? SEARCH-OBJECT-FOR> ;<IOBJ? GLOBAL-HOLE>>>
<COND ;(<OR <VERB? SEARCH-OBJECT-FOR>
<==? ,HOLE <FIRST? ,CARVED-CHAIR>>>
<FCLEAR ,HOLE ,INVISIBLE>
<FCLEAR ,GLOBAL-HOLE ,INVISIBLE>
<TELL
"The chair looks ancient, but it has a fresh hole in it, small and round."
CR>)
(T
<TELL
"The chair looks like teak, covered with carvings of vines and slithery
creatures that you wouldn't like to meet in a jungle." CR>
<RTRUE>)>)
(<AND <FSET? ,CORPSE ,INVISIBLE> ;<IN? ,LINDER ,CARVED-CHAIR>
<VERB? CLIMB-ON SIT TAKE>
<==? 1 <GET ,P-PRSO 0>> ;"only one dir. object"
<==? ,PRSO ,CARVED-CHAIR>>
<TELL "Linder glares at you. ">
<COND (<IN? ,LINDER ,CARVED-CHAIR>
<TELL
"\"I meant that you should sit in the customer's chair, not my lap!\" ">)
(T <TELL
"\"That's my chair. You take the other one.\" ">)>
<TELL "You are on your own feet again." CR>
<RTRUE>)>>
;<OBJECT HOLE
(IN CARVED-CHAIR)
(DESC "hole")
(ADJECTIVE DEEP ;BULLET)
(SYNONYM HOLE HOLES)
(FLAGS NDESCBIT INVISIBLE)
(ACTION HOLE-F)>
;<ROUTINE HOLE-F ();"?easy=not fm wdo, medium=if analyze, hard=?"
<COND (<VERB? EXAMINE>
<TELL
"The hole is new, from the look of the wooden splinters, and about the size
and shape of a bullet.">
<COND (<==? ,P-ADVERB ,W?CAREFULLY> ;<0? ,DIFFICULTY>
<TELL
" From the angle of the hole, you can tell that the bullet came from the
direction of the clock.">)>
<CRLF>)
;(<VERB? ANALYZE>
<TELL
"From the look of it, the bullet did not come from the window." CR>)>>
;<OBJECT GLOBAL-HOLE
(IN GLOBAL-OBJECTS)
(DESC "hole")
(SYNONYM HOLE HOLES)
(FLAGS ;INVISIBLE)
;(ACTION HOLE-F)>
<OBJECT WOODEN-CHAIR
(IN OFFICE)
(DESC "wooden chair")
(ADJECTIVE SIMPLE WOODEN WOOD CUSTOMER)
(SYNONYM CHAIR)
(FLAGS NDESCBIT TRYTAKEBIT SURFACEBIT CONTBIT OPENBIT
VEHBIT FURNITURE)
(CAPACITY 20)
(GENERIC GENERIC-CHAIR-F)
(ACTION WOODEN-CHAIR-F)>
<ROUTINE WOODEN-CHAIR-F ("OPTIONAL" (ARG <>))
<COND (<AND <NOT .ARG>
<VERB? CLIMB-ON SIT TAKE>
<==? 1 <GET ,P-PRSO 0>> ;"only one dir. object"
<==? ,PRSO ,WOODEN-CHAIR>>
<MOVE ,PLAYER ,WOODEN-CHAIR>
<TELL "You are now sitting on the " D ,PRSO "." CR>
<COND (<NOT ,LINDER-EXPLAINED> <I-LINDER-EXPLAIN>)>
<RTRUE>)>>
<OBJECT GENERIC-CHAIR
(IN GLOBAL-OBJECTS)
(DESC "chair")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-CHAIR-F (OBJ)
<COND (<AND <VERB? DISEMBARK> <NOT <IN? <LOC ,WINNER> ,ROOMS>>>
<LOC ,WINNER>)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-CHAIR)
(<NOT <OR <EQUAL? ,HERE ,MONICA-ROOM ,LINDER-ROOM ,LIVING-ROOM>
<EQUAL? ,HERE ,DINING-ROOM ,KITCHEN ,OFFICE>>>
<SETG P-WON <>>
<TELL "(You can't see any " "chair" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT FILE-CABINET
(IN OFFICE)
(DESC "file cabinet")
(ADJECTIVE FILE OFFICE)
(SYNONYM CABINET)
(FLAGS NDESCBIT CONTBIT FURNITURE)
(CAPACITY 33)>
<OBJECT PAPERS
(IN FILE-CABINET)
(DESC "lot of business papers")
(FDESC "The cabinet is filled with a lot of business papers.")
(ADJECTIVE BUSINESS OFFICE)
(SYNONYM LOT PAPERS PAPER)
(FLAGS TRYTAKEBIT READBIT ;BURNBIT ;NDESCBIT)
(ACTION PAPERS-F)>
<ROUTINE PAPERS-F ()
<COND (<VERB? ;BURN EXAMINE LOOK-INSIDE READ TAKE>
<FSET ,PAPERS ,TOUCHBIT>
<COND (<LOC ,LINDER> <PERFORM ,V?ASK-ABOUT ,LINDER ,PAPERS> <RTRUE>)
(T
<TELL "You look ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
<TELL "more thoroughly through the files and still">)
(T <TELL "quickly through the files but">)>
<TELL
" find nothing suspicious, so you decide to leave them alone." CR>)>)>>
<OBJECT OFFICE-PICTURE
(IN OFFICE)
(DESC "picture")
(ADJECTIVE FRAMED WOOD BLOCK OFFICE)
(SYNONYM PICTURE)
(FLAGS NDESCBIT)
;(ACTION OFFICE-PICTURE-F)>
;<OBJECT GLOBAL-CLOCK
(IN GLOBAL-OBJECTS)
(ADJECTIVE TALL CASE GRANDFATHER OFFICE)
(SYNONYM CLOCK)
(DESC "clock")
(ACTION GLOBAL-CLOCK-F)>
;<ROUTINE GLOBAL-CLOCK-F ()
<COND (<AND <VERB? ASK-ABOUT> <IOBJ? GLOBAL-CLOCK>>
<PERFORM ,V?ASK-ABOUT ,PRSO ,CLOCK>
<RTRUE>)>>
<OBJECT CLOCK
(IN LOCAL-GLOBALS ;OFFICE) ;"So that SHOOT LOCK works on doors."
(ADJECTIVE TALL ;CASE GRANDFATHER CLOCK ;OFFICE)
(SYNONYM CLOCK CASE LOCK DOOR)
(DESC "grandfather clock")
(FLAGS FURNITURE NDESCBIT LOCKED CONTBIT)
(GENERIC LOCKED-F)
(SIZE 99)
(CAPACITY 9)
(ACTION CLOCK-F)>
<ROUTINE CLOCK-F ()
<COND (<AND <NOT <EQUAL? ,HERE ,OFFICE>>
<NOT <VERB? ASK-ABOUT ASK-CONTEXT-ABOUT>>
<NOT <VERB? FIND TELL-ME WHAT>>>
<SETG P-WON <>>
<TELL "(You can't see any " "clock" " here!)" CR>)
(<VERB? EXAMINE>
<TELL
"This is a full-blown \"grandfather\" clock, seven feet tall, run by
weights and regulated by a pendulum, whose dial shows day, date, and
phase of the moon besides the time. According to the dial, today is ">
<COND (<L? ,PRESENT-TIME 720> <TELL "Friday the 18">)
(T <TELL "Saturday the 19">)>
<TELL "th, the moon is just past full, and the time is now ">
<TIME-PRINT ,PRESENT-TIME>
<COND (,SHOT-FIRED
<FCLEAR ,CLOCK-POWDER ,INVISIBLE>
;<FCLEAR ,CLOCK-POWDER ,NDESCBIT>
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
<TELL
" There is some kind of powder around the keyhole.">)
(T <TELL
" And you notice that the keyhole looks darker than normal.">)>)>
<CRLF>)
(<VERB? LISTEN>
<TELL "The clock is ticking relentlessly." CR>)
(<AND <VERB? LOOK-INSIDE OPEN SEARCH>
<NOT <FSET? ,CLOCK ,LOCKED>>>
<COND (<AND <VERB? LOOK-INSIDE SEARCH> <NOT <FSET? ,CLOCK ,OPENBIT>>>
<TELL "You'll have to open it first." CR>
<RTRUE>)>
<FSET ,CLOCK ,OPENBIT>
<TELL "As you'd expect, the case holds a long pendulum.">
<COND (<IN? ,INSIDE-GUN ,CLOCK>
<FCLEAR ,INSIDE-GUN ,INVISIBLE>
<TELL
" The surprise is a hand gun, pointing out into the room.">)>
<TELL " You can also see some relays and things." CR>)
(<VERB? LOOK-UNDER>
<TELL
"All you see is a pair of green wires going from the case into
the floor." CR>)
(<AND <VERB? LOCK> <==? ,PRSO ,CLOCK>>
<COND (<IN? ,CLOCK-KEY ,WINNER>
<FSET ,CLOCK ,LOCKED>
<SETG USED-CLOCK-KEY T>
<TELL "The door of the clock is now locked." CR>)
(T <TELL "You don't have the right key." CR>)>
<RTRUE>)
(<AND <VERB? UNLOCK> <==? ,PRSO ,CLOCK>>
<COND (<IN? ,CLOCK-KEY ,WINNER>
<FCLEAR ,CLOCK ,LOCKED>
<SETG USED-CLOCK-KEY T>
<TELL "The door of the clock is now unlocked." CR>)
(T <TELL "You don't have the right key." CR>)>)
(<VERB? PUSH MOVE>
<TELL "It seems to be bolted to the floor." CR>)>>
<OBJECT KEY-HOLE
(IN OFFICE)
(DESC "keyhole")
;(ADJECTIVE KEY)
(SYNONYM ;HOLE KEYHOLE ;HOLES)
(FLAGS NDESCBIT CONTBIT OPENBIT)
(CAPACITY 1)
(ACTION KEY-HOLE-F)>
<ROUTINE KEY-HOLE-F ()
<COND (<AND <EQUAL? ,WINNER ,PLAYER>
<VERB? BRUSH EXAMINE KISS LOOK-INSIDE PUT RUB RUB-OVER SMELL>>
<SETG PLAYER-NEAR-SHOT ,PRESENT-TIME>)>
<COND (<VERB? EXAMINE>
<TELL
"It's an impressive keyhole, wrapped in a fine brass escutcheon.">
<COND (,SHOT-FIRED
<FCLEAR ,CLOCK-POWDER ,INVISIBLE>
<TELL " There is some kind of powder around it.">)>
<CRLF>)
(<AND <VERB? LOOK-INSIDE> <NOT <FSET? ,CLOCK ,OPENBIT>>>
<TELL "You can't see anything in there but darkness." CR>)
(<AND <VERB? PUT> ,LINDER-FOLLOWS-YOU>
<TELL
"Linder says, \"I wish you'd pay attention to me instead of that clock.\""
CR>)>>
<OBJECT POWDER ;"Need this for ANALYZE x FOR POWDER"
(IN GLOBAL-OBJECTS)
(ADJECTIVE ;CLOCK GUN)
(SYNONYM POWDER GUNPOWDER)
(DESC "powder")
;(FLAGS INVISIBLE)
;(ACTION POWDER-F)>
;<ROUTINE POWDER-F ()
<COND (<AND <VERB? ANALYZE> <==? <META-LOC ,WINNER> ,OFFICE>>
<COND (<DOBJ? POWDER> <PERFORM ,V?ANALYZE ,CLOCK-POWDER ,PRSI>)
(<IOBJ? POWDER> <PERFORM ,V?ANALYZE ,PRSO ,CLOCK-POWDER>)>
<RTRUE>)>>
<OBJECT CLOCK-POWDER
(IN OFFICE)
(ADJECTIVE CLOCK GUN)
(SYNONYM SAMPLE POWDER)
(DESC "sample of powder")
(FLAGS NDESCBIT TAKEBIT INVISIBLE)
(SIZE 1)
(ACTION CLOCK-POWDER-F)>
<ROUTINE CLOCK-POWDER-F ()
<COND (<VERB? ANALYZE>
<FCLEAR ,CLOCK-POWDER ,NDESCBIT>
<FCLEAR ,CLOCK-POWDER ,INVISIBLE>
<DO-ANALYZE>)
(<VERB? EXAMINE>
<TELL "It looks like cheap gunpowder." CR>)
(<VERB? SMELL>
<TELL "It has a pungent smell, like cheap gunpowder." CR>)
(<AND <==? 1 <GET ,P-PRSO 0>> ;"only one dir. object"
<VERB? TAKE>>
<FCLEAR ,CLOCK-POWDER ,INVISIBLE>
<FCLEAR ,CLOCK-POWDER ,NDESCBIT>
<RFALSE>)>>
<OBJECT CLOCK-WIRES
(IN OFFICE)
(DESC "pair of green wires")
(ADJECTIVE GREEN)
(SYNONYM PAIR WIRES)
(FLAGS NDESCBIT)
(GENERIC GENERIC-WIRE-F)
(ACTION CLOCK-WIRES-F)>
<ROUTINE CLOCK-WIRES-F ()
<COND (<VERB? FOLLOW>
<TELL "The wires go into the floor and disappear." CR>)
(<VERB? TAKE>
<TELL "You can't." " They're stuck tight." CR>)>>
;<OBJECT OFFICE-CARPET
(IN OFFICE)
(SYNONYM CARPET RUG)
(DESC "carpet")
(FLAGS NDESCBIT)
;(ACTION LIBRARY-CARPET-F)>
<OBJECT OFFICE-BUTTON
(IN OFFICE)
(ADJECTIVE BUTLER HIS OFFICE)
(SYNONYM BUTTON)
(DESC "butler's button")
(FLAGS NDESCBIT)
(ACTION OFFICE-BUTTON-F)>
<GLOBAL SHOT-FIRED <>>
<GLOBAL BUTTON-FIXED <>>
<GLOBAL PLAYER-PUSHED-BUTTON <>>
<ROUTINE OFFICE-BUTTON-F ()
<COND (<VERB? FIND>
<TELL "It's on the edge of the desk." CR>)
(<VERB? PUSH RING>
<COND (,BUTTON-FIXED
<PERFORM ,V?PUSH ,BUTTON>
<RTRUE>)
(,SHOT-FIRED
<SETG PLAYER-PUSHED-BUTTON T>
<TELL
"You hear a clicking sound from the direction of the clock." CR>)
(<==? <META-LOC ,LINDER> ,OFFICE>
<TELL
"Linder grabs your wrist and looks you hard in the eye.
Then a wide smile breaks out on his face as he lets go.
\"Sorry if I'm rough, but I don't want any interruptions right now.\"" CR>)
(T
<SETG PLAYER-PUSHED-BUTTON T>
<FIRE-SHOT>
<RTRUE>)>)>>
<OBJECT LOUNGE
(IN OFFICE)
(DESC "lounge")
(ADJECTIVE GREEN VELVET LUMPY OFFICE)
(SYNONYM LOUNGE)
(CAPACITY 40)
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE VEHBIT)>
]
;<OBJECT W.C.-DOOR
(SYNONYM DOOR)
(ADJECTIVE POWDER ROOM)
(DESC "powder-room door")
(IN LOCAL-GLOBALS)
(FLAGS DOORBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
;<ROOM W.C.
(IN ROOMS)
(DESC "powder room")
;(SYNONYM ROOM)
;(ADJECTIVE POWDER)
(FLAGS RLANDBIT ONBIT)
;(ACTION LIBRARY-BALCONY-F)
(NORTH TO OFFICE IF POWDER-ROOM-DOOR IS OPEN)
(OUT TO OFFICE IF POWDER-ROOM-DOOR IS OPEN)
(GLOBAL POWDER-ROOM-DOOR)
(LINE 2)
(STATION OFFICE)>
<OBJECT GARAGE-DOOR
(SYNONYM DOOR LOCK)
(ADJECTIVE GARAGE)
(DESC "garage door")
(IN LOCAL-GLOBALS)
(FLAGS LOCKED DOORBIT)
(GENERIC LOCKED-F)
;(ACTION BACK-DOOR-F)>
[
<ROOM GARAGE
(IN ROOMS)
(DESC "garage")
(SYNONYM GARAGE)
(FLAGS RLANDBIT ONBIT)
(ACTION GARAGE-F)
(NORTH TO HALL-4 IF GARAGE-DOOR IS OPEN)
(WEST TO DRIVEWAY)
(EAST TO WORKSHOP IF WORKSHOP-DOOR IS OPEN)
(GLOBAL GARAGE-DOOR WORKSHOP-DOOR)
(LINE 2)
(STATION GARAGE)
(CORRIDOR 8)>
<ROUTINE GARAGE-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-LOOK>
<TELL
"The garage, like a car port, has no door to keep the cars in.
Doors lead north and east.
The walls are decorated with spare tires and things. ">
<COND (<FSET? ,MONICA-CAR ,INVISIBLE>
<COND (<FSET? ,MONICA-CAR ,TOUCHBIT>
<TELL "The red MG is gone.">)
(T <TELL
"Oil spots on the floor show that a car is often parked here.">)>)
(T
<COND (<FSET? ,MONICA-CAR ,TOUCHBIT>
<TELL "The red MG is parked here.">)
(T <TELL
"One car is a sporty red MG convertible.">)>)>
<TELL " The other car is a dark blue Bentley 3.5-liter sedan."CR>)>>
<OBJECT LINDER-CAR
(IN GARAGE)
(DESC "blue sedan")
;(FDESC "The other car is a dark blue Bentley 3.5-liter sedan.")
;(DESCFCN LINDER-CAR-F)
(ADJECTIVE DARK BLUE LINDER HIS)
(SYNONYM CAR AUTO SEDAN BENTLEY)
(FLAGS NDESCBIT ;FURNITURE ;VEHBIT)
(GENERIC GENERIC-CAR-F)
(ACTION CAR-F)>
<OBJECT MONICA-CAR
(IN GARAGE)
(DESC "red sport car")
;(FDESC "One car is a sporty red MG convertible.")
;(DESCFCN MONICA-CAR-F)
(ADJECTIVE RED SPORT SPORTY MONICA HER)
(SYNONYM CAR AUTO CONVERTIBLE MG)
(FLAGS NDESCBIT ;FURNITURE)
(GENERIC GENERIC-CAR-F)
(ACTION CAR-F)>
<ROUTINE CAR-F ("OPTIONAL" (ARG <>))
<COND (<AND <DOBJ? MONICA-CAR> <FSET? ,MONICA-CAR ,INVISIBLE>>
<TELL "It's not here." CR>)
(<AND ,FILM-SEEN <DOBJ? MONICA-CAR> <VERB? RUB>>
<TELL "The hood is still warm from driving." CR>)
(<VERB? LOOK-INSIDE>
<TELL
"You can barely see a plush interior through the tinted glass, but nothing
else of interest." CR>)
(<VERB? LOCK UNLOCK>
<TELL "You don't have the right key." CR>)
(<VERB? THROUGH> <TELL "The doors are locked." CR>)>>
<OBJECT CAR-WINDOW
(IN GARAGE)
(DESC "car window")
(ADJECTIVE CAR)
(SYNONYM WINDOW)
(FLAGS NDESCBIT)
(ACTION CAR-WINDOW-F)>
<ROUTINE CAR-WINDOW-F ()
<COND (<NOT <EQUAL? ,HERE ,GARAGE>>
<SETG P-WON <>>
<TELL "(You can't see any " "window" " here!)" CR>)
(<VERB? LOOK-INSIDE>
<TELL
"You can barely see a plush interior through the tinted glass, but nothing
else of interest." CR>)
(<VERB? MUNG>
<TELL "Vandalism is for private ">
<COND (<TANDY?> <TELL "eye">)
(T <TELL "dick">)>
<TELL "s, not famous police detectives!" CR>)>>
<OBJECT GENERIC-CAR
(IN GLOBAL-OBJECTS)
(DESC "car")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-CAR-F (OBJ)
<COND (<EQUAL? ,HERE ,GARAGE> <RFALSE>)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-CAR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "car" " here!)" CR>
,NOT-HERE-OBJECT)>>
]
<OBJECT WORKSHOP-DOOR
(SYNONYM DOOR LOCK)
(ADJECTIVE WORKSHOP WORK SHOP)
(DESC "workshop door")
(IN LOCAL-GLOBALS)
(FLAGS LOCKED DOORBIT)
(GENERIC LOCKED-F)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM WORKSHOP
(IN ROOMS)
(DESC "workshop")
(ADJECTIVE WORK)
(SYNONYM SHOP WORKSHOP)
(LDESC
"This room is a well-equipped workshop. Besides the usual sort of tools,
the place is full of mechanical and electrical parts and supplies:
switches, relays, spools of colored wire, and so on. One wall holds the
main electric board and a home-made junction box with more wires going
in and out than you can shake a stick at. The only door is the one you
came in.")
(FLAGS RLANDBIT ONBIT)
(WEST TO GARAGE IF WORKSHOP-DOOR IS OPEN)
(GLOBAL WORKSHOP-DOOR)
(LINE 2)
(STATION GARAGE)>
<OBJECT WORKSHOP-WIRE
(IN WORKSHOP)
(DESC "other wire")
(ADJECTIVE OTHER BROWN RED ORANGE YELLOW BLUE VIOLET GREY)
(SYNONYM WIRE WIRES SPOOL SPOOLS)
(FLAGS NDESCBIT AN ;DUPLICATE)
(GENERIC GENERIC-WIRE-F)
(ACTION WORKSHOP-WIRE-F)>
<ROUTINE WORKSHOP-WIRE-F ()
<COND (<VERB? EXAMINE>
<TELL "It looks just like ordinary wire." CR>)
(<VERB? FIND>
<TELL "You can find wire here in almost any color you like." CR>)
(<VERB? FOLLOW>
<TELL "It just goes around and around the supply spool." CR>)>>
<OBJECT SPOOL-OF-WIRE
(IN WORKSHOP)
(DESC "green wire spool")
(ADJECTIVE GREEN WIRE)
(SYNONYM WIRE SPOOL)
(FLAGS NDESCBIT)
(GENERIC GENERIC-WIRE-F)
(ACTION SPOOL-OF-WIRE-F)>
<ROUTINE SPOOL-OF-WIRE-F ()
<COND (<AND <VERB? COMPARE>
<OR <IOBJ? PIECE-OF-WIRE> <DOBJ? PIECE-OF-WIRE>>>
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
<SETG WIRE-MATCHED T>
<TELL
"The piece of green wire and the green spool fit together
perfectly." CR>)
(T <TELL
"The piece of green wire and the green spool appear to be
similar." CR>)>)>>
<OBJECT GENERIC-GREEN-WIRE
(IN GLOBAL-OBJECTS)
(DESC "green wire")
;(ADJECTIVE GREEN)
(SYNONYM $GNRC)>
<OBJECT GENERIC-WIRE
(IN GLOBAL-OBJECTS)
(DESC "wire")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-WIRE-F (OBJ)
<COND (<EQUAL? ,HERE ,WORKSHOP>
<COND (<VERB? ;EXAMINE FIND ;FOLLOW> ,WORKSHOP-WIRE)>)
(<IN? .OBJ ,GLOBAL-OBJECTS> <RFALSE>)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT ASK-FOR ASK-CONTEXT-FOR
FIND TELL-ME WHAT
GIVE SGIVE SEARCH-OBJECT-FOR TAKE>
<COND (<OR <EQUAL? .OBJ ,PIECE-OF-WIRE ,SPOOL-OF-WIRE>
<EQUAL? .OBJ ,CLOCK-WIRES ,GENERIC-GREEN-WIRE>>
,GENERIC-GREEN-WIRE)
(T ,GENERIC-WIRE)>)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "wire" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT JUNCTION-BOX
(IN WORKSHOP)
(ADJECTIVE JUNCTION)
(SYNONYM BOX)
(DESC "junction box")
(FLAGS NDESCBIT)
(ACTION JUNCTION-BOX-F)>
<ROUTINE JUNCTION-BOX-F ()
<COND (<VERB? EXAMINE>
<TELL
"There's a snarl of colored wires, relays, pilot lights, and stuff that only
an engineer could admire." CR>)>>
;<OBJECT TOOLS-1
(IN WORKSHOP)
(SYNONYM TOOLS SAW HAMMER ROPE)
(DESC "collection of carpentry tools")
(FLAGS NDESCBIT ;DUPLICATE)
(ACTION TOOLS-F)>
<OBJECT SAW
(IN WORKSHOP)
(SYNONYM SAW)
(DESC "saw")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
<OBJECT HAMMER
(IN WORKSHOP)
(SYNONYM HAMMER)
(DESC "hammer")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
<OBJECT ROPE
(IN WORKSHOP)
(SYNONYM ROPE)
(DESC "rope")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
;<OBJECT TOOLS-2
(IN WORKSHOP)
(SYNONYM SPADE HOE RAKE HOSE)
(DESC "collection of garden tools")
(FLAGS NDESCBIT ;DUPLICATE)
(ACTION TOOLS-F)>
<OBJECT SPADE
(IN WORKSHOP)
(SYNONYM SPADE)
(DESC "spade")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
<OBJECT HOE
(IN WORKSHOP)
(SYNONYM HOE)
(DESC "hoe")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
<OBJECT RAKE
(IN WORKSHOP)
(SYNONYM RAKE)
(DESC "rake")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
<OBJECT HOSE
(IN WORKSHOP)
(SYNONYM HOSE)
(DESC "hose")
(FLAGS NDESCBIT)
(ACTION TOOLS-F)>
<ROUTINE TOOLS-F ()
<COND (<VERB? EXAMINE>
<TELL
"The tools are standard gardening and carpentry tools, in excellent
condition." CR>)
(<VERB? TAKE>
<TELL
"You have no use for them, unless you are looking for
a new profession." CR>)>>
<OBJECT WORK-SHELVES
(IN WORKSHOP)
(SYNONYM SHELF SHELVES)
(DESC "shelf")
(FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
(CAPACITY 20)
;(ACTION S-SHELVES-F)>
]
"Other stuff"
<OBJECT AIR
(IN GLOBAL-OBJECTS)
(DESC "air")
(SYNONYM AIR WIND BREEZE)
(FLAGS AN)
(ACTION AIR-F)>
<ROUTINE AIR-F ()
<COND (<VERB? SMELL>
<COND (<EQUAL? ,HERE ,FRONT-YARD>
<TELL
"The smell of herbs permeates everything." CR>)
(<EQUAL? ,HERE ,FRONT-PORCH>
<TELL
"A breeze carries the faint smell of herbs through the air." CR>)
(<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
<TELL "The air is clear and fresh here." CR>)
(<FRESH-AIR? ,HERE> <RTRUE>)
(T <TELL "The air is rather musty here." CR>)>)>>
<ROUTINE FRESH-AIR? (RM "AUX" P L TBL O)
#DECL ((RM O) OBJECT (P L) FIX)
<SET P 0>
<REPEAT ()
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RFALSE>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET TBL <GETPT ,HERE .P>>
<SET L <PTSIZE .TBL>>
<COND (<AND <EQUAL? .L ,DEXIT> ;"Door EXIT"
<FSET? <SET O <GETB .TBL ,DEXITOBJ>>
,OPENBIT>>
<TELL
"There is a pleasant breeze coming through the " D .O "." CR>
<RETURN>)>)>>>
[
<GLOBAL COR-1
<PTABLE P?NORTH P?SOUTH
ROCK-GARDEN BACK-YARD OFFICE-PORCH OFFICE-PATH 0>>
<GLOBAL COR-2
<PTABLE P?EAST P?WEST
OFFICE-PATH SIDE-YARD DRIVEWAY-ENTRANCE 0>>
<GLOBAL COR-4
<PTABLE P?SOUTH P?NORTH
LIMBO DRIVEWAY-ENTRANCE DRIVEWAY FRONT-PORCH 0>>
<GLOBAL COR-8
<PTABLE P?EAST P?WEST
GARAGE DRIVEWAY 0>>
<GLOBAL COR-16
<PTABLE P?NORTH P?SOUTH
HALL-1 HALL-2 HALL-3 HALL-4 0>>
;<GLOBAL COR-32
<PTABLE P?EAST P?WEST
LIVING-ROOM DINING-ROOM 0>>
]
"Routines to do looking down corridors"
<ROUTINE CORRIDOR-LOOK ("OPTIONAL" (ITM <>) "AUX" C Z COR VAL (FOUND <>))
<COND (<SET C <GETP ,HERE ,P?CORRIDOR>>
<REPEAT ()
<COND (<NOT <L? <SET Z <- .C 16>> 0>>
<SET COR ,COR-16>)
(<NOT <L? <SET Z <- .C 8>> 0>>
<SET COR ,COR-8>)
(<NOT <L? <SET Z <- .C 4>> 0>>
<SET COR ,COR-4>)
(<NOT <L? <SET Z <- .C 2>> 0>>
<SET COR ,COR-2>)
(<NOT <L? <SET Z <- .C 1>> 0>>
<SET COR ,COR-1>)
(T <RETURN>)>
<SET VAL <CORRIDOR-CHECK .COR .ITM>>
<COND (<NOT .FOUND> <SET FOUND .VAL>)>
<SET C .Z>>
.FOUND)>>
<ROUTINE CORRIDOR-CHECK (COR ITM "AUX" (CNT 2) (PAST 0) (FOUND <>) RM OBJ)
#DECL ((COR) <PRIMTYPE VECTOR> (CNT PAST) FIX)
<REPEAT ()
<COND (<==? <SET RM <GET .COR .CNT>> 0>
<RFALSE>)
(<==? .RM ,HERE> <SET PAST 1>)
(<SET OBJ <FIRST? .RM>>
<REPEAT ()
<COND (.ITM
<COND (<==? .OBJ .ITM>
<SET FOUND <GET .COR .PAST>>
<RETURN>)>)
(<AND <FSET? .OBJ ,PERSON>
<NOT <IN-MOTION? .OBJ>>
<NOT <FSET? .OBJ ,INVISIBLE>>>
<COND (<AND <==? .OBJ ,STILES> ,DUFFY-WITH-STILES>
<SETG SEEN-DUFFY? T>
<TELL "Sgt. Duffy, with ">
<COND (,MET-STILES? <TELL "Stiles">)
(T <TELL "someone">)>
<TELL " in tow,">)
(<NOT <FSET? .OBJ ,TOUCHBIT>>
<TELL "Someone">)
(T <TELL D .OBJ>)>
<TELL " is ">
<COND (<OUTSIDE? .RM>
<TELL "off">)
(T <TELL "down the hall">)>
<TELL " to ">
<DIR-PRINT <GET .COR .PAST>>
<TELL "." CR>)>
<SET OBJ <NEXT? .OBJ>>
<COND (<NOT .OBJ> <RETURN>)>>
<COND (.FOUND <RETURN .FOUND>)>)>
<SET CNT <+ .CNT 1>>>>
<ROUTINE COR-DIR (HERE THERE "AUX" COR RM (PAST 0) (CNT 2))
<SET COR <GET-COR <BAND <GETP .THERE ,P?CORRIDOR>
<GETP .HERE ,P?CORRIDOR>>>>
<REPEAT ()
<COND (<==? <SET RM <GET .COR .CNT>> .HERE>
<SET PAST 1>
<RETURN>)
(<==? .RM .THERE>
<RETURN>)>
<SET CNT <+ .CNT 1>>>
<GET .COR .PAST>>
<ROUTINE GET-COR (NUM)
#DECL ((NUM) FIX)
<COND (<==? .NUM 1> ,COR-1)
(<==? .NUM 2> ,COR-2)
(<==? .NUM 4> ,COR-4)
(<==? .NUM 8> ,COR-8)
(T ,COR-16)
;(<==? .NUM 32> ,COR-32)>>