aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhistoricalsource <historicalsoftware@textfiles.com>2019-04-13 20:28:54 -0400
committerhistoricalsource <historicalsoftware@textfiles.com>2019-04-13 20:28:54 -0400
commitad6dc28bb24968af58f4bd1c3236116c60aacc8e (patch)
tree31c0c50bfe20a2f426524908c9d45bab2e58fab6
downloaddeadline-ad6dc28bb24968af58f4bd1c3236116c60aacc8e.tar.gz
deadline-ad6dc28bb24968af58f4bd1c3236116c60aacc8e.tar.bz2
deadline-ad6dc28bb24968af58f4bd1c3236116c60aacc8e.zip
Revision 27 (Original Source)
-rw-r--r--README.md1
-rw-r--r--actions.zil4532
-rw-r--r--clock.zil82
-rw-r--r--crufty.zil16
-rw-r--r--deadline.zil53
-rw-r--r--deadline.zipbin0 -> 108454 bytes
-rw-r--r--dungeon.zil2541
-rw-r--r--goal.zil730
-rw-r--r--macros.zil97
-rw-r--r--main.zil190
-rw-r--r--parser.zil1117
-rw-r--r--syntax.zil605
12 files changed, 9964 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..86d1b0f
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# deadline
diff --git a/actions.zil b/actions.zil
new file mode 100644
index 0000000..c22cfeb
--- /dev/null
+++ b/actions.zil
@@ -0,0 +1,4532 @@
+"ACTIONS for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+<ROUTINE DDESC (STR1 DOOR STR2)
+ #DECL ((STR1) STRING (DOOR) OBJECT (STR2) <OR FALSE STRING>)
+ <TELL .STR1>
+ <COND (<FSET? .DOOR ,OPENBIT> <TELL "open">)
+ (T <TELL "closed">)>
+ <TELL .STR2 CR>>
+
+<ROUTINE WEST-DOOR-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <==? .RARG ,M-BEG>
+ <VERB? WALK>
+ <EQUAL? ,PRSO ,P?NE ,P?NORTH>
+ <IN? ,LADDER ,PLAYER>>
+ <TELL ,NO-LADDERS CR>)>>
+
+<GLOBAL NO-LADDERS
+"You've got to be crazy, carrying that ladder inside the house!">
+
+<ROUTINE FRONT-PATH-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <==? .RARG ,M-BEG>
+ <VERB? WALK>
+ <==? ,PRSO ,P?NORTH>
+ <IN? ,LADDER ,PLAYER>>
+ <TELL ,NO-LADDERS CR>)
+ (<==? .RARG ,M-LOOK>
+ <DDESC
+"You are at the Robners' front door, which is "
+ ,FRONT-DOOR ".">
+ <TELL
+"You can walk around the house from here to the east or west. To the south a
+rolling lawn leads to the entrance of the estate." CR>)>>
+
+<ROUTINE ROSE-GARDEN-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"You are at the edge of a large rose garden, meticulously maintained by the
+gardener, Mr. McNabb. He is said to be exceedingly proud of this particular
+garden, which is the envy of the neighbors. Rows of roses are neatly arranged
+and the sweet fragrance of the flowers is worth a trip here in itself. An
+orchard to the east contains many varieties of fruit trees and wide lawns lie
+to the west and north. The roses themselves are to the south, filling the area
+between you and the back of the house." CR>)>>
+
+<ROUTINE IN-ORCHARD-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"You are amidst lovely trees bearing apples, pears, peaches, and other fruits.
+A grape arbor and several berry bushes may also be seen. The kitchen window
+and east side of the house are just to your south, and a path skirts the
+orchard to your north." CR>
+ <COND (,LADDER-FLAG-2
+ <TELL
+"A ladder is leaning against the balcony above." CR>)
+ (T
+ <TELL
+"There is no way into the house from here." CR>)>)>>
+
+<ROUTINE IN-ROSES-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"You are among rows of roses. The ground is soft, and your footsteps leave
+a rather bad impression as many poor seedlings are trampled underfoot. A
+safer place to admire the flowers lies to the north. A window to the south
+allows a view into the house." CR>
+ <COND (<NOT ,LADDER-FLAG>
+ <TELL
+"There is no way into the house from here." CR>)
+ (T
+ <TELL
+"A ladder is leaning against the house, its upper end against a balcony
+above." CR>)>
+ <COND (<NOT <FSET? ,HOLE ,INVISIBLE>>
+ <TELL
+"There are holes in the soft dirt near your feet." CR>)>
+ <RTRUE>)
+ (<AND <==? .RARG ,M-ENTER>
+ <NOT ,GARDENER-ANGRY>
+ <NOT ,GARDENER-SHOW>
+ <EQUAL? <LOC ,GARDENER>
+ ,ROSE-GARDEN ,NORTH-LAWN ,WEST-LAWN>>
+ <TELL
+"In the distance you hear \"Hey! WHAT? You, there!\" and other choice words
+muffled by a strong Scottish burr and a stiff breeze. Now, standing at the
+edge of the garden, can be seen the person of Mr. Angus McNabb, the gardener.
+He advances, looking crazed and gesticulating wildly. With each carefully
+chosen step in your direction, a barely visible wince of pain comes to his
+deeply-lined face. He regards you as you would regard the man whose car
+just ran over your little puppy dog." CR>
+ <COND (,G-I-G
+ <TELL "\"I canna believe it! I've already spent
+an hour fixing up the ground here where some fool was walkin' aboot--and
+now you! I canna believe it!\"" CR>)>
+ <SETG GARDENER-ANGRY T>
+ <SETG GARDENER-NO-REPLY T>
+ <ENABLE <QUEUE I-GARDENER-CALM 90>>
+ <MOVE ,GARDENER ,HERE>)>>
+
+<ROUTINE I-GARDENER-CALM ()
+ <SETG GARDENER-NO-REPLY <>>>
+
+<GLOBAL GARDENER-NO-REPLY <>>
+<GLOBAL GARDENER-ANGRY <>>
+<GLOBAL G-I-G <>>
+
+<GLOBAL PRESENT-TIME 480> ;"9AM"
+
+<ROUTINE FOYER-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-ENTER>
+ <COND (<AND <NOT ,WELCOMED> <L? ,PRESENT-TIME 700>>
+ <TELL
+"Mrs. Robner appears, walking down a hallway from the north." CR>
+ <WELCOME>)>)
+ (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is the foyer of the Robner house, beautifully appointed with a fine
+crystal chandelier, marble floors, and a large marble-topped table. The front
+door, to the south, is " ,FRONT-DOOR ". The foyer continues north.">)>>
+
+<ROUTINE SHALL-1-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"You are in an east-west hallway south of the staircase. A door to the south
+is " ,ROURKE-DOOR ".">)>>
+
+<ROUTINE SHALL-2-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is the end of the east-west hallway. To the south a small door
+is " ,SOUTH-CLOSET-DOOR ".">
+ <DDESC
+"Another door, to the east, is " ,ROURKE-BATH-DOOR ".">)>>
+
+<ROUTINE ROURKE-ROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is the bedroom of the housekeeper, Mrs. Rourke, and is very simply
+furnished. A single bed, flanked by bare wooden end tables, sits below a
+closed window on the south end of the room. The floor is hardwood, with no
+rug. The only exit is a door to the north, which is " ,ROURKE-DOOR ".">)>>
+
+<ROUTINE ROURKE-BATH-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is Mrs. Rourke's bathroom. Aside from the usual bathroom fixtures
+are two shelves affixed to the wall. The door at the west side of the
+room is " ,ROURKE-BATH-DOOR ".">)>>
+
+<ROUTINE LIVING-ROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <SETG WELCOMED T>
+ <DDESC
+"This is a large and impressive room, whose furnishings bespeak the great
+personal wealth of the Robners. The south side of the room is a large bay
+window, now " ,BAY-WINDOW", which looks out onto the front yard.">
+ <TELL
+"A wood pile sits beside a huge fieldstone fireplace. A double doorway leading
+to the main hall is the only exit. Pictures of Mrs. Robner's colonial ancestors
+line one wall. The room contains formal seating for at least fifteen people,
+in several groups of chairs and couches. Tables and cabinets, all of the
+finest mahogany and walnut, complete the furnishings. On one of the tables is
+a telephone." CR>)>>
+
+<GLOBAL WILL-TIME 0>
+
+<GLOBAL LAWN-ACTIVITIES
+ <LTABLE "picking weeds"
+ "mowing the grass"
+ "wiping his brow"
+ "examining his work">>
+
+<GLOBAL GARDEN-ACTIVITIES
+ <LTABLE "planting seeds"
+ "cutting fresh flowers"
+ "pruning stems">>
+
+<ROUTINE CORRIDOR-1-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"You are just west of the staircase. There are doors on both sides (north and
+south) of the hallway, which continues west. ">
+ <COND (<FSET? ,DUNBAR-DOOR ,OPENBIT>
+ <COND (<FSET? ,MASTER-BEDROOM-DOOR ,OPENBIT>
+ <TELL "Both doors are open." CR>)
+ (T <TELL "The door to the south is open." CR>)>)
+ (<FSET? ,MASTER-BEDROOM-DOOR ,OPENBIT>
+ <TELL "The door to the north is open." CR>)
+ (T <TELL "Both doors are closed." CR>)>)>>
+
+<ROUTINE CORRIDOR-3-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"This section of hallway is near the west end. Through the window at the end
+of the hall you can see some trees and the lake beyond. The hallway continues
+east and west, and a door to the south is " ,GEORGE-DOOR ".">)>>
+
+<ROUTINE CORRIDOR-4-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <==? .RARG ,M-ENTER>
+ <==? ,PRESENT-TIME <+ ,GEORGE-RUN 1>>>
+ <TELL
+"As you enter the hallway, you catch a glimpse of George
+running down the stairs." CR>
+ <RFALSE>)
+ (<==? .RARG ,M-LOOK>
+ <TELL
+"This is the west end of the upstairs hall. To the north is the library,
+where Mr. Robner was found. Its solid oak door has been knocked down and
+is lying just inside the entrance to the library. A window which cannot
+be opened is at the end of the hallway." CR>)>>
+
+<ROUTINE LIBRARY-F ("OPTIONAL" (RARG <>))
+ <SETG WELCOMED T>
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"This is the library where Mr. Robner's body was found. It is decorated in a
+simple but comfortable style. Mr. Robner obviously spent a great deal of time
+here. A wide executive desk sits before tall balcony windows which lie at the
+north of the room. A telephone is sitting on the desk. The east side of the
+room is composed of three large bookshelf units containing numerous volumes
+on many topics. The floor is carpeted from wall to wall. The massive oak door
+which blocked the entrance has been forcibly knocked off its hinges and is
+lying by the doorway." CR>
+ <COND (<FSET? ,LIBRARY-BALCONY-DOOR ,OPENBIT>
+ <TELL
+"The window to the balcony has been opened." CR>)>
+ <COND (<FSET? ,HIDDEN-DOOR-L ,OPENBIT>
+ <TELL
+"The bookshelf unit on the far left has been swung open,
+revealing a room behind it!" CR>)>
+ <RTRUE>)>>
+
+<ROUTINE LIBRARY-BALCONY-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"The balcony is bare of furniture, though it has a beautiful view of the rose
+garden, the north lawn and the lake. A metal railing around the balcony
+prevents an accidental drop to the thorny roses below. The window between the
+balcony and the library is " ,LIBRARY-BALCONY-DOOR ".">
+ <COND (,LADDER-FLAG
+ <TELL
+"The top of a ladder is resting on the metal railing." CR>)>
+ <COND (<IN? ,GARDENER ,ROSE-GARDEN>
+ <TELL
+"Mr. McNabb is tending to the roses." CR>)
+ (<IN? ,GARDENER ,NORTH-LAWN>
+ <TELL
+ "Away to the north, Mr. McNabb can be seen "
+ <PICK-ONE ,LAWN-ACTIVITIES> "." CR>)>
+ <RTRUE>)>>
+
+<ROUTINE HIDDEN-CLOSET-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"This is a secret room situated between the library and the master bedroom.
+The room is bare and somewhat dusty, as if it were not often used. An
+unmarked switchplate surrounds two buttons, one blue and one red. A formidable
+safe is embedded in the south wall.">
+ <COND (<FSET? ,SAFE ,OPENBIT>
+ <TELL " The heavy safe door is wide open.">)>
+ <CRLF>
+ <COND (<FSET? ,HIDDEN-DOOR-L ,OPENBIT>
+ <TELL
+"The library can be seen through a door to the west." CR>)
+ (<FSET? ,HIDDEN-DOOR-B ,OPENBIT>
+ <TELL
+"The master bedroom can be seen through a door to the east." CR>)>
+ <RTRUE>)>>
+
+<ROUTINE RED-BUTTON-F ()
+ <COND (<VERB? PUSH>
+ <COND (<FSET? ,HIDDEN-DOOR-L ,OPENBIT>
+ <FCLEAR ,HIDDEN-DOOR-L ,OPENBIT>
+ <TELL "The wall to the west silently closes." CR>)
+ (T
+ <FSET ,HIDDEN-DOOR-L ,OPENBIT>
+ <TELL
+"The wall to the west swings open, revealing the library on the other
+side." CR>)>)>>
+
+<GLOBAL HC-ROBNER <>>
+
+<ROUTINE BLUE-BUTTON-F ()
+ <COND (<VERB? PUSH>
+ <COND (<FSET? ,HIDDEN-DOOR-B ,OPENBIT>
+ <FCLEAR ,HIDDEN-DOOR-B ,OPENBIT>
+ <TELL "The wall to the east swings closed." CR>)
+ (T
+ <FSET ,HIDDEN-DOOR-B ,OPENBIT>
+ <TELL
+"The wall to the east swings open, revealing the master bedroom on the
+other side." CR>
+ <COND (<AND <NOT ,HC-ROBNER>
+ <IN? ,MRS-ROBNER ,MASTER-BEDROOM>>
+ <TELL
+"Mrs. Robner, sitting on her bed, appears stunned. She walks over and peeks
+in, speaks of her complete surprise at the presence of such a place, and
+returns to her bed, somewhat shaken." CR>
+ <SETG HC-ROBNER T>)>
+ <RTRUE>)>)>>
+
+<ROUTINE MASTER-BEDROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <==? .RARG ,M-ENTER>
+ <==? ,BAXTER-SEQ-LOC ,MASTER-BEDROOM>>
+ <TELL
+"As you walk through the door, there is an explosion from in front of you!
+The impact of the bullet knocks you to the ground, stunned. You struggle,
+trying to look up. Another explosion! You fall back, into a long silence." CR>
+ <QUIT>)
+ (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is the Robners' master bedroom, decorated in the Queen Anne style. A
+large four-poster bed with paired end tables fills the south end of the room.
+On one of the end tables is a telephone. Dressers, a small chair, and a lounge
+are against the walls. The north wall contains a balcony window, which is
+" ,BEDROOM-BALCONY-DOOR ". An open doorway leads east to the bathroom. A large
+mirror with a gilt frame hangs on the west wall.">
+ <COND (<FSET? ,HIDDEN-DOOR-B ,OPENBIT>
+ <TELL
+"Part of the west wall has been swung away, revealing a hidden closet." CR>)>
+ <RTRUE>)>>
+
+<ROUTINE BEDROOM-BALCONY-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <==? .RARG ,M-ENTER>
+ <==? ,BAXTER-SEQ-LOC ,BEDROOM-BALCONY>>
+ <TELL
+"As you enter the balcony, there is an explosion and a burst of flame from
+your left. The pain freezes you for a moment as everything becomes black.
+While you await a choir of angels, a short chuckle and the sound of running
+feet are the last you hear." CR>
+ <QUIT>)
+ (<==? .RARG ,M-LOOK>
+ <DDESC
+"This balcony is atop the orchard, with the tallest of the fruit trees rising
+to about the level of the balcony. A metal railing surrounds the balcony,
+preventing a precipitous descent. A glass door leading to the master bedroom
+is " ,BEDROOM-BALCONY-DOOR ".">
+ <COND (,LADDER-FLAG-2
+ <TELL
+"The top of a ladder is visible here, leaning on the railing." CR>)>
+ <RTRUE>)>>
+
+<ROUTINE SHALL-11-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"The hallway turns a corner here and continues east. To the north is the
+head of the stairs. A door to the south is " ,DUNBAR-BATH-DOOR ".">)>>
+
+<ROUTINE DUNBAR-BATH-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"This bathroom contains the usual sink, toilet, and bath. A medicine
+cabinet, ">
+ <COND (<FSET? ,DUNBAR-CABINET ,OPENBIT>
+ <TELL "lying partially open">)
+ (T <TELL "closed">)>
+ <DDESC ", is above the sink. A door to the north
+is " ,DUNBAR-BATH-DOOR ".">)>>
+
+<GLOBAL CORPSE-SEEN <>>
+
+<ROUTINE DUNBAR-ROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <==? .RARG ,M-ENTER> ,DUNBAR-DEAD>
+ <SETG CORPSE-SEEN T>)
+ (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is Ms. Dunbar's room. It is furnished in the usual style, with a few
+additions indicative of Ms. Dunbar's taste. The bedroom door
+is " ,DUNBAR-DOOR ".">)>>
+
+<ROUTINE GEORGE-BATH-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <DDESC
+"This is George's bathroom, with all the appropriate fixtures. Shaving gear
+sits near the sink. The door, to the west, is " ,GEORGE-BATH-DOOR ".">)>>
+
+<ROUTINE GEORGE-ROOM-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-LOOK>
+ <TELL
+"This is George's bedroom. In addition to the normal furnishings, there
+is a small liquor cabinet, and a stereo with records and tapes. The door,
+leading to the hallway to the north, is ">
+ <COND (<FSET? ,GEORGE-DOOR ,OPENBIT>
+ <TELL "open">)
+ (T <TELL "closed">)>
+ <DDESC
+". Another door, to the east, is " ,GEORGE-BATH-DOOR ".">
+ <COND (,TUNE-ON
+ <TELL
+"Playing on the stereo is a " ,TUNE-ON "." CR>)>
+ <RTRUE>)>>
+
+"Local Global Functions"
+
+<ROUTINE LAWN-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL "The lawn is well manicured." CR>)>>
+
+<ROUTINE BAY-WINDOW-F ()
+ <COND (<VERB? LOOK-INSIDE>
+ <COND (<==? ,HERE ,WEST-OF-DOOR>
+ <TELL
+"You see the living room through the window." CR>)
+ (<IN? ,GARDENER ,SOUTH-LAWN>
+ <TELL
+"Through the bay windows the gardener, Mr. McNabb, can be seen ">
+ <TELL <PICK-ONE ,LAWN-ACTIVITIES>>
+ <TELL " on the south lawn." CR>)
+ (T
+ <TELL "You can see the south lawn." CR>)>)
+ (<AND <VERB? OPEN> <NOT <FSET? ,FOYER ,TOUCHBIT>>>
+ <TELL "The window seems to be latched from the inside." CR>)>>
+
+<ROUTINE ROSE-F ()
+ <COND (<VERB? SMELL>
+ <TELL "They smell nice." CR>)
+ (<VERB? EXAMINE>
+ <TELL
+"There are rows of yellow, red, pink, and white roses here." CR>)
+ (<VERB? TAKE>
+ <TELL
+"Taking a rose would be most ungracious, and possibly dangerous if Mr. McNabb
+found out." CR>)>>
+
+<ROUTINE HOUSE-F ()
+ <COND (<VERB? FIND>
+ <TELL
+"It's right here. Some inspector you are." CR>)
+ (<VERB? THROUGH>
+ <COND (<AND <EQUAL? ,HERE ,FRONT-PATH>
+ <FSET? ,FRONT-DOOR ,OPENBIT>>
+ <GOTO ,FOYER>)
+ (<AND <EQUAL? ,HERE ,EAST-OF-DOOR>
+ <FSET? ,BAY-WINDOW ,OPENBIT>>
+ <GOTO ,LIVING-ROOM>)
+ (T
+ <TELL "You might try the front door." CR>)>)
+ (<VERB? EXAMINE>
+ <TELL
+"The house is a magnificent New England colonial, like many other houses
+around the lake. It is painted slate gray with white trim." CR>)>>
+
+<ROUTINE GROUND-F ()
+ <COND (<AND <VERB? BRUSH>
+ <IN? ,FRAGMENT ,PLAYER>
+ <NOT ,FRAGMENT-CLEANED>>
+ <PERFORM ,V?BRUSH ,FRAGMENT>
+ <RTRUE>)
+ (<VERB? EXAMINE SEARCH SEARCH-AROUND>
+ <COND (<==? ,HERE ,ROURKE-ROOM>
+ <TELL "The floor is hardwood." CR>)
+ (<==? ,HERE ,FOYER>
+ <TELL "The floor is marble." CR>)
+ (<==? ,HERE ,IN-ROSES>
+ <COND (<NOT <FSET? ,HOLE ,INVISIBLE>>
+ <PERFORM ,V?SEARCH-AROUND ,HOLE>
+ <RTRUE>)
+ (<AND <VERB? SEARCH-GROUND-UNDER>
+ <==? ,PRSI ,BALCONY>>
+ <TELL
+"The balcony above is very large. Searching the entire area beneath it
+would take a great deal of time." CR>)
+ (T
+ <TELL
+"There are rows upon rows of roses here. It would take you the best part of
+a day to search the ground in great detail." CR>)>)
+ (T <TELL "You don't find anything new there." CR>)>)>>
+
+<ROUTINE AIR-F ()
+ <COND (<VERB? SMELL>
+ <COND (<EQUAL? ,HERE ,ROSE-GARDEN ,IN-ROSES>
+ <TELL
+"The smell of roses permeates everything." CR>)
+ (<EQUAL? ,HERE ,NORTH-LAWN ,EAST-LAWN ,WEST-LAWN>
+ <TELL
+"A breeze carries the faint smell of roses 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 T 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 T <GETPT ,HERE .P>>
+ <SET L <PTSIZE .T>>
+ <COND (<AND <EQUAL? .L ,DEXIT>
+ <FSET? <SET O <GETB .T ,DEXITOBJ>>
+ ,OPENBIT>>
+ <TELL
+"There is a pleasant breeze coming through the " D .O "." CR>
+ <RETURN>)>)>>>
+
+<ROUTINE LAKE-F ()
+ <COND (<VERB? SWIM LEAP THROUGH>
+ <TELL
+"You're not on vacation, but with ideas like that you will probably be given
+a rather long one." CR>)
+ (<VERB? LOOK-INSIDE EXAMINE>
+ <COND (<AND <==? ,HERE ,NORTH-LAWN>
+ <IN? ,SOGGY-WILL ,LAKE>>
+ <TELL
+"A crumpled piece of paper is floating on the water a few feet from shore.
+With an uncommonly agile motion, you retrieve the drenched paper." CR>
+ <MOVE ,SOGGY-WILL ,WINNER>)
+ (T
+ <TELL
+"Surely you don't suspect the fish also?" CR>)>)>>
+
+<ROUTINE SHED-F ()
+ <COND (<VERB? THROUGH>
+ <COND (<EQUAL? ,HERE ,EAST-LAWN ,BEHIND-SHED>
+ <GOTO ,SHED-ROOM>
+ <RTRUE>)
+ (T <TELL "Senility strikes!" CR>)>)
+ (<VERB? LISTEN>
+ <COND (<NOT <0? ,SECRET-MEETING>>
+ <TELL
+"You hear two muffled voices inside the shed." CR>)>)
+ (<VERB? HIDE-BEHIND>
+ <COND (<==? ,HERE ,EAST-LAWN>
+ <TELL
+"You carefully sneak behind the shed. It seems that no one saw you." CR>)
+ (T
+ <TELL
+"You leave the shed and quietly slip behind it. Nobody appears to have seen
+you." CR>)>
+ <GOTO ,BEHIND-SHED>
+ <RTRUE>)>>
+
+"People Functions"
+
+<ROUTINE PLAYER-F () <>>
+
+<GLOBAL HOLE-SHOWN <>>
+<GLOBAL HOLE-TELL <>>
+
+<ROUTINE SHOW-HOLE ()
+ <TELL
+"McNabb grabs your arm and leads you to a spot deep within the garden and
+near the house. You might never have found this place alone. He points at
+the ground, where you see two holes in the soft earth." CR>
+ <FCLEAR ,HOLE ,INVISIBLE>
+ <SETG HOLE-SHOWN T>>
+
+<ROUTINE HOLE-F ()
+ <COND (<NOT ,HOLE-TELL>
+ <TELL "What hole?" CR>)
+ (<VERB? ASK-ABOUT> <RFALSE>)
+ (<VERB? FIND>
+ <COND (<NOT <==? ,HERE ,IN-ROSES>>
+ <TELL
+"They're among the roses, or have you forgotten?" CR>)
+ (<NOT <FSET? ,HOLE ,INVISIBLE>>
+ <TELL "They're right here!" CR>)
+ (<AND <NOT ,HOLE-SHOWN> <PROB 80>>
+ <TELL
+"The rose garden is vast and full of thorny roses. You might look
+for the rest of the day before you find them." CR>)
+ (T
+ <TELL
+"The garden is rather big, even just the area you are searching now, and the
+holes were small. They're not here, but are probably nearby." CR>)>)
+ (<EQUAL? ,HOLE ,PRSI ,PRSO>
+ <COND (<VERB? EXAMINE LOOK-INSIDE>
+ <TELL
+"There are two holes here, each about two inches by four inches. They are at
+least three inches deep and the soil is compacted around them." CR>)
+ (<OR <AND <VERB? SEARCH-GROUND-AROUND>
+ <==? ,PRSO ,GROUND>>
+ <VERB? SEARCH-AROUND>>
+ <COND (<==? <LOC ,GARDENER> ,HERE>
+ <TELL
+"Mr. McNabb watches you with ill-concealed irritation." CR>)>
+ <COND (,FRAGMENT-FOUND
+ <TELL
+"Aside from dirt, organic fertilizer, and small crawly creatures, you turn
+up nothing but roses." CR>)
+ (<OR <G? <SETG RST <+ ,RST 1>> 2>
+ <PROB 30>>
+ <TELL
+"Ouch! You cut your finger on a sharp edge as you dig. You search carefully
+in the dirt, now that you are sure something is there, and pull up a piece
+of porcelain, covered with dirt and dried mud." CR>
+ <THIS-IS-IT ,FRAGMENT>
+ <MOVE ,FRAGMENT ,WINNER>
+ <FCLEAR ,FRAGMENT ,INVISIBLE>
+ <SETG FRAGMENT-FOUND T>
+ <SETG FRAGMENT-FELT T>)
+ (T
+ <TELL <GET ,ROSE-DIGS ,RST> CR>)>)>)
+ (T <TELL "There is no hole here." CR>)>>
+
+<GLOBAL RST 0>
+
+<GLOBAL ROSE-DIGS
+ <LTABLE
+"You are making quite a mess, but you do run across some tiny pieces of a
+hard, shiny substance, which drop from your fingers and back onto the ground."
+"Although everything is coming up roses, you haven't found anything unusual
+except for a few pieces of a hard substance which fall back to the ground.">>
+
+<GLOBAL FRAGMENT-FLAG <>>
+
+<ROUTINE FRAGMENT-F ()
+ <COND (<VERB? EXAMINE>
+ <COND (,FRAGMENT-CLEANED
+ <TELL
+"The fragment is beautifully hand-painted">
+ <SETG FRAGMENT-FLAG T>
+ <COND (,CHINA-EXAMINED
+ <TELL ", exactly like those you
+saw in the kitchen">)>
+ <TELL "." CR>)
+ (T
+ <TELL
+"The piece of porcelain is filthy, coated with dried mud. You can barely
+make out some design underneath the dirt." CR>)>)
+ (<VERB? FINGERPRINT>
+ <TELL
+"It's covered with dirt and mud. You realize that there would be no good
+fingerprints on it." CR>)
+ (<VERB? ANALYZE> <DO-ANALYZE>)
+ (<VERB? BRUSH>
+ <SETG FRAGMENT-CLEANED T>
+ <TELL
+"As you wipe off the piece of porcelain, you notice that it is a fragment of
+some very beautiful piece, handsomely painted.">
+ <COND (,CHINA-EXAMINED
+ <TELL " The markings are identical
+to those you saw on the china in the kitchen.">)>
+ <CRLF>)>>
+
+<GLOBAL FRAGMENT-CLEANED <>>
+<GLOBAL FRAGMENT-FELT <>>
+<GLOBAL FRAGMENT-FOUND <>>
+<GLOBAL GARDENER-SHOW <>>
+
+<ROUTINE GARDENER-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,GARDENER> <RTRUE>)
+ (<==? <LOC ,GARDENER> ,ORCHARD>
+ <TELL "Mr. McNabb is here, pruning the trees.">)
+ (<OR <EQUAL? <LOC ,GARDENER> ,NORTH-LAWN ,EAST-LAWN>
+ <EQUAL? <LOC ,GARDENER> ,SOUTH-LAWN ,WEST-LAWN>>
+ <TELL "Mr. McNabb is here, ">
+ <TELL <PICK-ONE ,LAWN-ACTIVITIES>>
+ <TELL ".">)
+ (<IN? ,GARDENER ,ROSE-GARDEN>
+ <TELL "Mr. McNabb is here, ">
+ <TELL <PICK-ONE ,GARDEN-ACTIVITIES>>
+ <TELL ".">)
+ (T <TELL "Mr. McNabb is here.">)>
+ <COND (,G-I-G
+ <TELL " He seems quite worked up and is talking aloud
+to himself.">)
+ (,GARDENER-ANGRY
+ <TELL " He seems pretty angry about something.">)>
+ <CRLF>
+ <CARRY-CHECK ,GARDENER>)
+ (<VERB? HELLO GOODBYE>
+ <COND (,GARDENER-ANGRY
+ <TELL
+"McNabb grunts briefly in your direction." CR>)
+ (,G-I-G
+ <TELL
+"He answers absently and starts to mumble quietly about the roses." CR>)
+ (T
+ <TELL
+"He replies with a brief nod, and then starts mumbling to himself
+about the " <PICK-ONE ,GARDEN-MUMBLES> "." CR>)>)
+ (<==? ,WINNER ,GARDENER>
+ <COND (<AND <VERB? SHOW>
+ <OR <EQUAL? ,PRSI ,GLOBAL-HOLE ,HOLE>
+ <EQUAL? ,PRSI ,GLOBAL-ROSES ,ROSE>>>
+ <COND (<AND <NOT ,HOLE-TELL> <NOT ,G-I-G>>
+ <TELL
+"\"I don't know what you're-a talkin' aboot.\"" CR>)
+ (,NO-SHOW
+ <TELL
+"\"I don't think I remember where it was. Now go away,\" he says. He looks a
+bit annoyed at you, probably for asking him before and then running off." CR>)
+ (,HOLE-SHOWN
+ <TELL
+"\"I've already shown you plenty. Now, git!\"" CR>)
+ (<==? ,HERE ,IN-ROSES>
+ <SETG GARDENER-SHOW T>
+ <SETG HOLE-TELL T>
+ <SHOW-HOLE>)
+ (T
+ <ESTABLISH-GOAL ,GARDENER ,IN-ROSES T>
+ <SETG GARDENER-SHOW T>
+ <SETG HOLE-TELL T>
+ <TELL
+"\"Follow me!\" he says, and starts walking toward the roses." CR>)>)
+ (<VERB? FIND> <RFALSE>)
+ (<COM-CHECK ,GARDENER> <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR>)>)
+ (<VERB? LISTEN>
+ <COND (,G-I-G
+ <TELL
+"You can't make out everything, but he seems to be complaining about weeks
+of work on the roses ruined by someone stomping around in the garden. There
+are references to elephants and holes. When he's worked up, as now, he
+doesn't always make much sense." CR>
+ <SETG HOLE-TELL T>)
+ (T
+ <TELL
+"He seems to be mumbling about the " <PICK-ONE ,GARDEN-MUMBLES> "." CR>)>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,GARDENER>>
+ <COND (<AND ,GARDENER-NO-REPLY <NOT ,GARDENER-SHOW>>
+ <TELL
+"\"I dinna give a hoot about you or your questions! Now, begone! Steppin' all
+o'er me roses. A crime, it is! I'll call the police is what!\" He seems pretty
+angry." CR>)
+ (<AND <EQUAL? ,PRSI ,GLOBAL-HOLE> ,HOLE-TELL>
+ <TELL
+"\"I've already told you. There's holes in my garden!\"" CR>)
+ (<AND <EQUAL? ,PRSI ,GLOBAL-WEATHER> <NOT ,G-I-G>>
+ <TELL
+"\"Beautiful! What a fine day. Except for the rain Wednesday night, I ha'ent
+had such a fine week in a long spell. Not that I'm complainin'. You see, with
+my roses...\" He goes on and on about his roses." CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-LADDER ,LADDER>
+ <TELL
+"\"What aboot it? I use it for cleanin' the gutters 'n prunin' the
+trees.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-ROSES ,ROSE ,GLOBAL-WEATHER>
+ <COND (,G-I-G
+ <TELL
+"He tells you his story. He was tending to the roses this morning when he
+noticed two deep holes in the garden, with a few roses crushed nearby. He
+doesn't know when he'll be able to repair the damage." CR>
+ <SETG HOLE-TELL T>)
+ (T
+ <TELL
+"McNabb goes on for some time about the exquisite nature of the garden in
+general and mentions, for your benefit, some of the finer points of his
+gardening technique." CR>)>)
+ (<EQUAL? ,PRSI ,LAWN>
+ <TELL
+"McNabb tells a long tale of woe and hardship, of days and nights
+sweating with the lawn mower, roller, and weed puller." CR>)
+ (<OR <EQUAL? ,PRSI ,GEORGE ,GLOBAL-GEORGE>
+ <EQUAL? ,PRSI ,BAXTER ,GLOBAL-BAXTER>
+ <EQUAL? ,PRSI ,DUNBAR ,GLOBAL-DUNBAR>
+ <EQUAL? ,PRSI ,MRS-ROBNER ,GLOBAL-MRS-ROBNER>
+ <EQUAL? ,PRSI ,ROURKE ,GLOBAL-ROURKE>>
+ <TELL
+"\"I don't care much aboot any of them from in the house. I barely even know
+which is which.\" He shakes his head and continues with his work." CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-MR-ROBNER>
+ <TELL
+"\"Too bad aboot Mr. Robner. He was a good man, liked to talk aboot the
+garden. He told me 'McNabb', he says, 'this here's the finest garden I've
+seen.' We'd talk for hours about planting and gardening. None of the others
+knows between a rose and a sunflower.\" He shakes his head sadly and
+continues his work." CR>)
+ (T
+ <TELL
+"\"I dinna know nothin' aboot that.\"" CR>)>)>>
+
+<GLOBAL GARDEN-MUMBLES
+ <LTABLE "rose garden"
+ "fruit trees"
+ "weather"
+ "snootiness of city slickers"
+ "intricacies of weeding">>
+
+<GLOBAL WHY-ME
+ <LTABLE "\"You can do that yourself.\""
+ "\"Do it yourself!\""
+ "\"Why not do it yourself?\"">>
+
+<GLOBAL PEN-SEEN <>>
+
+<ROUTINE BAXTER-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,BAXTER> T)
+ (<AND <IN? ,BAXTER ,SHED> <NOT <0? ,SECRET-MEETING>>>
+ <TELL
+"Mr. Baxter and Ms. Dunbar are here talking rapidly with each other. They
+haven't noticed you yet." CR>)
+ (,DUNBAR-BAXTER-MEET
+ <SETG DUNBAR-BAXTER-MEET <>>
+ <TELL
+"Mr. Baxter is in one corner, talking to Ms. Dunbar. He notices you and
+motions Dunbar to stop talking." CR>)
+ (<IN? ,BAXTER ,LIVING-ROOM>
+ <COND (,POST-WILL
+ <TELL
+"Mr. Baxter is offering his sympathies to Mrs. Robner." CR>)
+ (<IN? ,RECURSIVE-BOOK ,BAXTER>
+ <FSET ,RECURSIVE-BOOK ,NDESCBIT>
+ <TELL
+"Mr. Baxter is sitting here reading a book." CR>)
+ (T <TELL
+"Mr. Baxter is sitting quietly here." CR>)>)
+ (T <TELL "Mr. Baxter is here." CR>)>
+ <CARRY-CHECK ,BAXTER>)
+ (<VERB? EXAMINE>
+ <COND (,SHOT-FIRED
+ <COND (<IN? ,BAXTER ,DUNBAR-ROOM>
+ <TELL
+"Baxter seems out of breath. His hair is disheveled and his hands are
+somewhat soiled." CR>)
+ (T
+ <TELL
+"Mr. Baxter has recovered his composure and looks calm. His hair is a bit
+disheveled and his hands are dirty." CR>)>)>)
+ (<VERB? HELLO>
+ <TELL "Mr. Baxter returns your salutation." CR>)
+ (<VERB? GOODBYE>
+ <TELL "Mr. Baxter nods." CR>)
+ (<==? ,WINNER ,BAXTER>
+ <COND (<VERB? FIND> <RFALSE>)
+ (<COM-CHECK ,BAXTER> <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR>)>)
+ (<VERB? SEARCH SEARCH-OBJECT-FOR>
+ <TELL
+"Mr. Baxter pushes you away abruptly. \"I don't know what game you're playing,
+Inspector, and frankly I'm not interested. You have been invited here to
+investigate, not molest innocent persons.\"" CR>)
+ (<AND <VERB? ACCUSE> <==? ,PRSI ,GLOBAL-MURDER>>
+ <COND (,PEN-SEEN
+ <TELL
+"Mr. Baxter turns to run away, but notices Sergeant Duffy by the door. He
+stops abruptly and faces you." CR>)>)
+ (<VERB? ARREST>
+ <COND (<OR ,PEN-SEEN ,BAXTER-SEEN>
+ <COND (<IN? ,BAXTER ,HERE>
+ <TELL
+"Sergeant Duffy enters the room solemnly. He places a pair of handcuffs
+on Mr. Baxter, who is stiff and unspeaking. \"Let's not have any
+trouble, now.\" Duffy remarks to Baxter.">)
+ (T
+ <TELL
+"A few moments pass and Sergeant Duffy appears, escorting a handcuffed
+Mr. Baxter.">)>
+ <TELL " With that, he leads him from
+your view and into a police car waiting near the south lawn.|
+|">
+ <END-HEADER "August 10">
+ <TELL
+"Congratulations on your work in the Robner case. As I'm sure you
+are aware, Mr. Baxter was found guilty ">
+ <COND (<AND <FSET? ,BAXTER-PAPERS ,TOUCHBIT> ,NOTE-READ>
+ <TELL
+"of two counts of first-degree murder and has been sentenced to two
+consecutive terms of life imprisonment. My only regret is that Dunbar
+couldn't stand trial with him. We may never know the complete story behind
+the Robner murder. But once again, thanks.|
+|">)
+ (T
+ <TELL
+"of first-degree murder in the death of Ms. Dunbar. Unfortunately, Baxter
+remained tight-lipped throughout the proceedings, and except for the
+revelation that Baxter and Dunbar were lovers, there was no motive established
+for her murder. The jury acquitted Mr. Baxter in the murder of Mr. Robner,
+as a motive had not been established. I am indeed sorry that a proper
+conclusion to the case could not have been made.|
+|">)>
+ <CASE-OVER>)
+ (<IN? ,CORPSE ,DUNBAR-ROOM>
+ <TELL
+"Trusty Sergeant Duffy enters and places Mr. Baxter under arrest.
+They leave, Baxter remaining calm.|
+|">
+ <END-HEADER "August 13">
+ <TELL
+"I heard today that the jury in the Robner case has voted to
+acquit Mr. Baxter of both murders at the Robner house." CR>
+ <COND (<FSET? ,BAXTER-PAPERS ,TOUCHBIT>
+ <TELL
+"While it was clear that Baxter had committed numerous crimes in the Focus
+case, the jury was unconvinced of the relation between that and the murders.
+They felt that Ms. Dunbar had committed the first murder, although I can't
+imagine any scenario in which that would be possible, and had committed
+suicide in desperation. These explanations leave much to be desired, but
+what's done is done. I can't help feeling that there is more to this case than
+has been discovered. Thank you for your work.|
+|">
+ <CASE-OVER>)
+ (T
+ <TELL
+"The jury believed the more probable story: that Ms. Dunbar committed the
+first murder and then committed suicide when her guilt became clear to you.
+I don't really believe this any more than you do, but the evidence is vague,
+you must agree. Thanks again for handling the case.|
+|">
+ <CASE-OVER>)>)
+ (<FSET? ,BAXTER-PAPERS ,TOUCHBIT>
+ <COND (<FSET? ,LAB-REPORT ,TOUCHBIT>
+ <TELL
+"Trusty Sergeant Duffy enters and places Mr. Baxter under arrest.
+They leave, Baxter remaining calm.|
+|">
+ <END-HEADER "August 11">
+ <TELL
+"I am sorry to report that Mr. Baxter was acquitted yesterday of the murder
+of Mr. Robner. In speaking to the District Attorney, I gathered that the jury
+was almost convinced of Baxter's guilt, given that he had both motive and a
+means to enter the house using the ladder. However, the theory had a number of
+serious flaws, including the means by which Baxter could have administered the
+drug either without Robner's knowledge or without a struggle. I must confess
+that I too am baffled. I am convinced that Baxter is guilty, but I fear we
+will never know for certain.|
+|">
+ <CASE-OVER>)
+ (T
+ <MURDER-NOT-PROVEN ,BAXTER T>)>)
+ (<FSET? ,LAB-REPORT ,TOUCHBIT>
+ <TELL
+"Duffy enters and places Mr. Baxter under arrest, then leads him away without
+fuss.|
+|">
+ <END-HEADER "August 11">
+ <TELL
+"I am indeed sorry that Mr. Baxter was acquitted yesterday of the murder of
+Mr. Robner. From the District Attorney, I gather that the jury was completely
+unconvinced by the our case. They found neither sufficient motive nor any
+plausible means of introducing the fatal medicine into Mr. Robner's drink. I
+must confess to being baffled by this case. Perhaps we shall never know the
+true story of Mr. Robner's murder.|
+|">
+ <CASE-OVER>)
+ (T
+ <MURDER-NOT-PROVEN ,BAXTER <>>)>)
+ (<AND <VERB? ASK-FOR>
+ <IN? ,CORPSE ,DUNBAR-ROOM>
+ <==? ,PRSI ,GLOBAL-PEN>>
+ <TELL
+"Baxter reaches instinctively into his jacket and starts to pull out a pen.
+He hesitates suddenly, pen in hand." CR>
+ <MOVE ,PEN ,BAXTER>
+ <SETG PEN-SEEN T>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,BAXTER>>
+ <COND (<NOT <GRAB-ATTENTION ,BAXTER>> <RTRUE>)
+ (<==? ,PRSI ,RECURSIVE-BOOK>
+ <TELL
+"\"A fascinating story, Inspector. A man is found dead behind a locked door,
+a clear suicide. Yet the detective seems bent on proving that a murder has
+occured. Rather odd, wouldn't you say?\"" CR>)
+ (<==? ,PRSI ,GLOBAL-CONCERT>
+ <TELL
+"\"A marvelous concert! There were works by Beethoven, Sibelius, and Ravel. I
+never would've guessed you were interested in serious music, Inspector.\"" CR>)
+ (<==? ,PRSI ,STUB>
+ <COND (,STUB-DX
+ <TELL
+"\"My dear Inspector, it is just as Ms. Dunbar told you.\"" CR>)
+ (T
+ <SETG STUB-B T>
+ <COND (<IN? ,DUNBAR ,HERE>
+ <SETG STUB-BX T>)>
+ <COND (,STUB-D
+ <SETG CONTRADICTION T>)>
+ <TELL
+"\"Ah, that must be Ms. Dunbar's ticket stub. I should have told you earlier.
+Ms. Dunbar was with me at the concert on the night that Marshall killed
+himself. She became ill at intermission and hired a car to take her back home.
+You see, Inspector, I know that Ms. Dunbar appreciates classical music, so I
+occasionally ask her along to my subscription series. I really should
+have told the other detective, but I didn't think it mattered.\"" CR>)>)
+ (<==? ,PRSI ,GLOBAL-LADDER>
+ <TELL
+"\"What ladder? You know, Inspector, your questions are becoming
+quite tiresome.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-MERGER ,GLOBAL-OMNIDYNE>
+ <TELL
+"\"I didn't realize you had an interest in finance. Before Marshall died, we
+agreed that the only reasonable way to protect our interests was to be bought
+out by a larger company which could then provide us with capital for
+expansion. I had been talking to people at Omnidyne and we agreed in
+principle on the terms for such an agreement last week. I'm hopeful that we
+can close the deal quickly.\"" CR>)
+ (<==? ,PRSI ,GLOBAL-NEW-WILL>
+ <COND (<G? ,WILL-TIME 0>
+ <TELL
+"\"It's fortunate for George that Marshall died when he did. It must be quite
+a relief to know that he'll have plenty of money.\" He chuckles softly.">
+ <COND (,AT-READING
+ <TELL
+" \"I guess that explains his reaction at the reading.\"">)>
+ <CRLF>)
+ (T
+ <TELL
+"\"I don't know much about the family's affairs. Marshall threatened
+to make a new will, but it certainly appears that he never did.\"" CR>)>)
+ (<==? ,PRSI ,GLOBAL-FOCUS>
+ <COND (,B-FOCUS
+ <TELL
+"\"I told you already. There was no legal wrongdoing, only
+some reporters trying to stir up a fuss.\" He appears quite nervous." CR>)
+ (,B-NOTE
+ <TELL
+"\"I understand the note no more than you do.\" He turns away." CR>)
+ (T
+ <TELL
+"There is a flicker of surprise on Baxter's face. \"I'm not sure
+what you mean. Focus Corporation has been a subsidiary of Robner
+Corp. for some years. I fail to see its import.\"" CR>)>)
+ (<EQUAL? ,PRSI ,GEORGE ,GLOBAL-GEORGE>
+ <DISCRETION ,BAXTER ,GEORGE>
+ <TELL
+"\"I've known the boy for some time, and believe me, he's no good. He's
+wasted more money this year than you've probably earned. His father
+reprimanded him frequently, as you know. George even threatened his father
+from time to time.\"" CR>)
+ (<EQUAL? ,PRSI ,CORPSE ,DUNBAR ,GLOBAL-DUNBAR>
+ <TELL
+"\"Ms. Dunbar is an efficient and tireless worker. She has been of tremendous
+help to Marshall and has been working quite hard for him lately. She had a
+great deal of respect for him, that's clear. She has a keen mind and is an
+exceptional strategic planner for the corporation.\"" CR>)
+ (<EQUAL? ,PRSI ,MRS-ROBNER ,GLOBAL-MRS-ROBNER>
+ <TELL
+"\"Leslie is a fine woman from a distinguished family. She was much more
+outgoing than Marshall, but she seems to have become accustomed to the quiet
+life here. I am quite grieved for her.\"" CR>)
+ (<OR <EQUAL? ,PRSI ,ROURKE ,GLOBAL-ROURKE>
+ <EQUAL? ,PRSI ,GARDENER ,GLOBAL-GARDENER>>
+ <TELL
+"\"I don't know much about " D ,PRSI "\"." CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-OLD-WILL>
+ <TELL
+"\"I really don't know anything about the old will.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-MR-ROBNER>
+ <TELL
+"\"Marshall was a truly great man...a brilliant manager; he started the
+corporation single-handedly about 25 years ago and is mostly responsible for
+its reputation. I owe him a great deal. He was also a great philanthropist
+and got the corporation involved in many charitable works. I am not given to
+shows of emotion, Inspector, but I will miss him greatly.\"" CR>)
+ (T
+ <TELL
+"\"I can't help you there.\"" CR>)>)
+ (<VERB? CONFRONT SHOW>
+ <COND (<NOT <GRAB-ATTENTION ,BAXTER>> <RTRUE>)
+ (<==? ,PRSI ,LAB-REPORT>
+ <TELL
+"Baxter studies the report carefully. \"This is quite peculiar. It appears
+that Marshall was murdered. I wonder...I would have a word with George if I
+were you, Inspector.\"" CR>)
+ (<==? ,PRSI ,STUB>
+ <PERFORM ,V?ASK-ABOUT ,BAXTER ,STUB>
+ <RTRUE>)
+ (<AND <==? ,PRSI ,NOTE-PAPER>
+ ,NOTE-READ
+ <NOT ,B-NOTE>>
+ <SETG B-NOTE T>
+ <TELL
+"He reads it carefully against the light, then speaks: \"I really don't know
+what to make of this. Marshall seems to be insisting that I do something. I'm
+afraid we will never know, since I never got the note.\"" CR>)
+ (<AND <==? ,PRSI ,BAXTER-PAPERS> <NOT ,B-FOCUS>>
+ <SETG B-FOCUS T>
+ <TELL
+"He reads slowly and leafs through the pages. \"I'm afraid I haven't been
+entirely candid with you. There was some trouble a few years ago with Focus
+Corp. because of some, let us say, irresponsible dealings on my part. Marshall
+agreed to cover up my involvement to save the company any bad publicity.\"" CR>
+ <COND (,B-NOTE
+ <TELL
+"\"I can't understand why he would be insisting that I do this or that,
+though, as it says on that note you showed me. He must have changed his
+mind, since I never received the note.\"" CR>)>
+ <RTRUE>)
+ (<==? ,PRSI ,LETTER>
+ <TELL
+"\"Very interesting, Inspector, but I assure you that this fellow is quite
+off base about the business. Marshall and I were in complete agreement when
+it came to those matters. I can't imagine where he got that idea.\"" CR>)
+ (T
+ <TELL
+"\"I can't understand why you are showing this to me. Have
+you nothing better to do than " <PICK-ONE ,BAXTER-ANNOYED> "?\"" CR>)>)>>
+
+<ROUTINE MURDER-NOT-PROVEN (PERSON "OPTIONAL" (ARG T))
+ <TELL
+"Sergeant Duffy dutifully appears and escorts " D .PERSON " from the
+grounds.|
+|">
+ <END-HEADER "July 26">
+ <TELL
+"I am sorry to inform you that the District Attorney's office has declined
+to seek an indictment against " D .PERSON " in the case of the death of Mr.
+Robner, against your recommendation. It is still not clear that Mr. Robner
+was murdered, although, as you point out, there are a number of suspicious
+characters in the Robner household.">
+ <COND (<NOT .ARG>
+ <TELL " Additionally, Mr. Baxter seems to have
+had no clear motive for killing Mr. Robner.">)>
+ <CRLF>
+ <COND (<==? .PERSON ,BAXTER>
+ <TELL
+"Mr. Baxter has threatened to sue the department for malicious
+arrest, but we feel that he will prefer to avoid the publicity." CR>)>
+ <TELL " Please be more careful in the future!|
+|">
+ <CASE-OVER>>
+
+<GLOBAL BAXTER-ANNOYED
+ <LTABLE "show me useless items"
+ "pick up every item in the house and show it to me">>
+
+<ROUTINE GLOBAL-PERSON ()
+ <COND (<OR <AND <VERB? ASK-ABOUT>
+ <FSET? ,PRSO ,PERSON>
+ <NOT <IN? ,PRSO ,GLOBAL-OBJECTS>>>
+ <VERB? WHAT FIND WAIT-FOR FOLLOW CALL CALL-LOSE>>
+ <RFALSE>)
+ (<VERB? TELL>
+ <TELL "It's not clear to whom you are referring." CR>
+ <SETG P-CONT <>>
+ <RTRUE>)
+ (T
+ <COND (<FSET? ,PRSO ,PERSON>
+ <TELL D ,PRSO>)
+ (T <TELL D ,PRSI>)>
+ <COND (<AND <VERB? ASK-ABOUT TELL>
+ <NOT <==?
+ <BAND
+ <GETP
+ <LOC <GET ,CHARACTER-TABLE
+ <GETP ,PRSO ,P?CHARACTER>>>
+ ,P?CORRIDOR>
+ <GETP ,HERE ,P?CORRIDOR>> 0>>>
+ <TELL " can't hear you." CR>)
+ (<AND <==? ,PRSO ,GLOBAL-MRS-ROBNER>
+ <==? ,HERE ,MASTER-BATH>
+ <IN? ,MRS-ROBNER ,MASTER-BEDROOM>>
+ <TELL " can't hear you." CR>)
+ (T <TELL " isn't here!" CR>)>
+ <SETG P-CONT <>>
+ <RTRUE>)>>
+
+<ROUTINE GEORGE-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,GEORGE> <RTRUE>)
+ (<IN? ,GEORGE ,KITCHEN>
+ <TELL "George is here, preparing a snack."
+ CR>)
+ (<IN? ,GEORGE ,DINING-ROOM>
+ <TELL
+"George is sitting at the table, eating some red herrings."
+ CR>)
+ (<IN? ,GEORGE ,LIVING-ROOM>
+ <COND (,POST-WILL
+ <TELL
+"George is staring contentedly out the bay window." CR>)
+ (T
+ <TELL
+"George is here, pacing around the room." CR>)>)
+ (<IN? ,GEORGE ,NORTH-LAWN>
+ <TELL "George is here, staring out over the lake." CR>)
+ (<AND <IN? ,GEORGE ,GEORGE-ROOM> <NOT ,GEORGE-WAIT>>
+ <COND (,TUNE-ON
+ <TELL
+"George is lying on his bed, listening intently to a " ,TUNE-ON "." CR>)
+ (T
+ <TELL
+"George is sitting on his bed, deep in thought." CR>)>)
+ (T <TELL "George is here." CR>)>
+ <CARRY-CHECK ,GEORGE>)
+ (<VERB? HELLO GOODBYE>
+ <TELL "George looks up and grunts disinterestedly." CR>)
+ (<==? ,WINNER ,GEORGE>
+ <COND (<VERB? FIND> <RFALSE>)
+ (<COM-CHECK ,GEORGE> <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR>)>)
+ (<AND <VERB? CALL> <G? ,GEORGE-RUN 0>>
+ <TELL "\"Don't bother me!\" he shouts, and continues on." CR>)
+ (<VERB? SEARCH SEARCH-OBJECT-FOR>
+ <COND (<==? <GET <GET ,GOAL-TABLES ,GEORGE-C> ,GOAL-S>
+ ,NORTH-LAWN>
+ <TELL
+"George points accusingly at you. \"Don't come near me! I'm getting sick and
+tired of your accusing tone. Get lost!\"" CR>)
+ (T
+ <TELL
+"\"Buzz off! Don't come back until you get a search warrant!\" He chuckles in
+contempt." CR>)>)
+ (<VERB? ACCUSE>
+ <TELL
+"George sneers at you. \"What an ass! Go on, try to prove it!\"" CR>)
+ (<VERB? ARREST>
+ <COND (<OR ,NEW-WILL-SEEN ,GEORGE-RUN>
+ <TELL
+"Faithful Sergeant Duffy enters and handcuffs George, who spits at you. \"You
+filthy, stinking...\" is all you hear as George is carted off struggling.|
+|">
+ <END-HEADER "August 4">
+ <TELL
+"I am sorry to inform you that George Robner was acquitted in the death of
+his father today. It seems the evidence, consisting mainly of a new will
+which George admitted under pressure that he was trying to destroy, was
+insufficient for the jury to return a guilty verdict. Although I suspect that
+George may have committed the crime, his arrest was a bit premature.|
+|">
+ <CASE-OVER>)
+ (T <RFALSE>)>)
+ (<VERB? CONFRONT SHOW>
+ <COND (<NOT <GRAB-ATTENTION ,GEORGE>> <RTRUE>)
+ (<==? ,PRSI ,LAB-REPORT>
+ <TELL
+"George scans the report. \"Killed, eh? I wonder who might have wanted...\" He
+cocks his head in thought. \"I'm sorry, Inspector, I really should act a bit
+better with you. I thought you were just snooping about, digging up dirt about
+the family. I'm not sure...I can't believe Mom would have anything to do with
+it, although...Baxter, now there's a worm for you. He'd do anything, maybe
+even murder, to get ahead. I just don't know.\"" CR>)
+ (<==? ,PRSI ,LETTER>
+ <TELL
+"George reads the letter quickly. \"Pompous ass! What does he know about
+it?\" He pauses. \"I thought Mom was having an affair. How nice for the
+lovebirds that Dad is dead! They can finish their honeymoon plans without
+worrying. It's perfect!\" With a bitter laugh, he throws the letter to the
+ground." CR>
+ <SETG G-LETTER T>
+ <MOVE ,LETTER ,HERE>)
+ (<AND <==? ,PRSI ,DESK-CALENDAR>
+ <==? ,CALENDAR-PAGE 8>
+ <NOT ,GEORGE-SEQUENCE>>
+ <SETG G-CALENDAR T>
+ <COND (<G? ,WILL-TIME 0>
+ <TELL
+"\"I...uh...I don't really know what to say. I guess that Dad...but there is
+no other...I can't help you...sorry.\" George seems to be quite agitated." CR>
+ <GEORGE-HACK>)
+ (T
+ <TELL
+"George tilts his head in thought (or perhaps surprise) but recovers quickly.
+\"All I know is that Coates is my father's personal attorney.\"" CR>)>)
+ (<AND <==? ,PRSI ,NEWSPAPER> ,NEWSPAPER-READ>
+ <DISCRETION ,GEORGE ,BAXTER>
+ <TELL
+"\"So Baxter's arranged the merger. I'll be damned. That's strange, since
+Dad was opposed to the whole thing. He's worried about losing control of
+the company ever since he had to sell off most of his interest. I bet he
+doesn't even own enough shares to prevent the deal.\"
+He shakes his head in disbelief." CR>)>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,GEORGE>>
+ <COND (<NOT <GRAB-ATTENTION ,GEORGE>> <RTRUE>)
+ (<==? ,PRSI ,GLOBAL-HIDDEN-CLOSET>
+ <COND (<OR ,SAFE-SEEN ,NEW-WILL-SEEN>
+ <TELL
+"\"What of it? Dad's safe is there. I don't think anyone knows about it
+except Dad and me.\"" CR>)
+ (T
+ <TELL
+"\"Hidden closet, you say? Hmm. I think I'd know if there was one, but there
+isn't!\"" CR>)>)
+ (<==? ,PRSI ,GLOBAL-MERGER>
+ <TELL
+"\"I've heard talk of a merger between Dad's company and another one,
+but I don't think it's happened yet. Dad would be furious if it did,
+though. I can tell you that!\"" CR>)
+ (<==? ,PRSI ,GLOBAL-STEVEN>
+ <COND (,G-LETTER
+ <TELL
+"\"He's a little worm who's been coming by lately. He's one of those fancy
+ski-instructor types, if you know what I mean. From what I've seen, it
+wouldn't surprise me if he and Mom are having an affair.\"" CR>)
+ (T
+ <DISCRETION ,GEORGE ,MRS-ROBNER>
+ <TELL
+"\"Steven? Oh, you must mean the guy who comes around for Mom now and
+then. I don't know much about him. Dresses a bit above himself, I'll say
+that much.\"" CR>)>)
+ (<EQUAL? ,PRSI ,BAXTER ,GLOBAL-BAXTER>
+ <TELL
+"\"I don't know much about him, really. With Baxter, it's always business,
+and he's not here much except to discuss business with Dad. You might ask Ms.
+Dunbar about him, though. She handled lots of Dad's business matters herself,
+so they work together a lot. They probably know each other pretty well.\"" CR>)
+ (<EQUAL? ,PRSI ,CORPSE ,DUNBAR ,GLOBAL-DUNBAR>
+ <TELL
+"\"She's been here for about ten years, I guess. She knows a lot about Dad's
+business, and he lets her take care of a lot of stuff by herself. Other than
+that, I can't say. We don't get in each other's way. I think she's heard Dad
+lecture me too often.\"" CR>)
+ (<EQUAL? ,PRSI ,MRS-ROBNER ,GLOBAL-MRS-ROBNER>
+ <TELL
+"\"She's OK. Not as stuck up as Dad about money. We've always gotten
+along pretty well. I think she understands me better than Dad ever
+did.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-SAFE>
+ <COND (,NEW-WILL-SEEN
+ <TELL
+"\"Let's not go into it, ok? You caught me looking for the will. Well, what of
+it? I didn't kill Dad, if that's what you're thinking. Leave me alone!\"" CR>)
+ (,SAFE-SEEN
+ <TELL
+"\"You mean my father's safe? Yeah, if he brings important papers home he puts
+them in there. He keeps most important stuff at the office at the bank. You
+really startled me in there. I thought I might be able to get it open. Dad
+always acted like it was a big secret, something out of a spy story. Anyway,
+it turns out I don't remember the combination. It was a long time ago.\"" CR>)
+ (,GEORGE-SEQUENCE
+ <TELL
+"George turns toward you with rage in his eyes. \"I don't know anything about
+any damn safe! Now leave me alone or I'll have you kicked out of here!\" He
+turns away." CR>)
+ (T
+ <TELL
+"George looks briefly toward the ceiling, as if recalling something. \"Oh, I'm
+sorry. A safe? No, I don't know about any safe...except at the office, that
+is. I think there's one there.\"" CR>)>)
+ (<EQUAL? ,PRSI ,GARDENER ,GLOBAL-GARDENER>
+ <TELL
+"\"McNabb, that old bore? Always talking about the damn roses and weeds. Don't
+ask him about them, unless you have all day.\"" CR>)
+ (<EQUAL? ,PRSI ,ROURKE ,GLOBAL-ROURKE>
+ <DISCRETION ,GEORGE ,ROURKE>
+ <TELL
+"\"She's nice but awfully nosy. She acts like she knows everything that goes
+on around here, but she doesn't know the half of it.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-OLD-WILL>
+ <TELL
+"\"I know what you know.\"" CR>)
+ (<EQUAL? ,PRSI ,NEW-WILL ,GLOBAL-NEW-WILL>
+ <COND (<G? ,PRESENT-TIME ,WILL-TIME>
+ <COND (<FSET? ,NEW-WILL ,TOUCHBIT>
+ <TELL
+"\"You should know what it says.\"" CR>)
+ (,NEW-WILL-SEEN
+ <TELL
+"\"I don't know what you're talking about. There's no new will. Dad never
+wrote one! He would just threaten me when I asked for spending money.\"" CR>)
+ (,GEORGE-SEQUENCE
+ <TELL
+"\"Look. I know the same as you. There's no new will. I'm sure of it. Dad
+would have rubbed my nose in it: you can be sure of that!\"" CR>)
+ (,AT-READING
+ <TELL
+"\"You were there when I was. Coates says there's no new will.\"" CR>)
+ (<0? ,WILL-TIME>
+ <TELL
+"\"Dad always threatened to write a new will, but I guess he ran out
+of time.\" He chuckles disturbingly." CR>)
+ (T
+ <TELL
+"\"Oh, yeah. You skipped out on the will reading. Anyhow, Coates says there's
+no new will, and he should know, right?\"" CR>)>)
+ (,G-CALENDAR
+ <TELL
+"\"I know what you're getting at...the desk calendar. Look, I've heard nothing
+about a new will. Maybe the old man just wanted to change something.\"" CR>)
+ (T
+ <TELL
+"\"I don't know anything about any new will.\"" CR>)>)
+ (<==? ,PRSI ,GLOBAL-MR-ROBNER>
+ <TELL
+"\"Like I told your detective friend yesterday, we didn't get along too well.
+He was always riding me, giving me a hard time.\" George gets worked up
+talking about it.\"Look, man. I'm not going to lie and say I loved him, right?
+He got what...\" He stops in mid-sentence." CR>)
+ (<==? ,PRSI ,GLOBAL-FOCUS>
+ <TELL
+"\"Focus...Focus...That name rings a bell. Something about the company, quite
+a while ago...what was it? I can't remember now. I don't pay much attention to
+business stuff: I've got better things to do.\"" CR>)
+ (T <TELL "\"I haven't a clue.\"" CR>)>)>>
+
+<GLOBAL HO-HUMS
+ <LTABLE " is standing here.">>
+
+"Global Flags"
+
+<GLOBAL NOTE-READ <>>
+
+<GLOBAL B-NOTE <>>
+
+<GLOBAL B-FOCUS <>>
+
+<GLOBAL G-CALENDAR <>>
+
+<CONSTANT WILL-READING 720>
+
+<GLOBAL LADDER-FLAG <>>
+
+<GLOBAL WILL-READY <>>
+
+<GLOBAL YUKS
+ <LTABLE "Don't be ridiculous."
+ "Surely you jest."
+ "You can't be serious!">>
+
+<GLOBAL G-LETTER <>>
+
+"Object functions"
+
+<GLOBAL CALENDAR-PAGE 7>
+
+<ROUTINE DESK-CALENDAR-F ("OPTIONAL" (RARG <>) "AUX" PAG)
+ <COND (<AND <VERB? READ EXAMINE> <==? ,PRSI ,INTNUM>>
+ <COND (<OR <0? ,P-NUMBER> <G? ,P-NUMBER 30>>
+ <TELL "Why? Is it your birthday?" CR>)
+ (T
+ <TELL
+"You flip the pages until you find the page." CR>
+ <SETG CALENDAR-PAGE ,P-NUMBER>)>)>
+ <COND (<VERB? CLOSE> <TELL "It's not worth the effort." CR>)
+ (<AND <VERB? TURN> <NOT ,PRSI>>
+ <COND (<==? ,CALENDAR-PAGE 31>
+ <TELL
+"You have reached the end of the book." CR>
+ <RTRUE>)
+ (T <SETG CALENDAR-PAGE <+ ,CALENDAR-PAGE 1>>)>
+ <SETG PRSA ,V?READ>)>
+ <SET PAG ,CALENDAR-PAGE>
+ <COND (<==? .RARG ,M-OBJDESC>
+ <TELL
+"A desk calendar is here, open to July " N ,CALENDAR-PAGE "." CR>)
+ (<VERB? READ EXAMINE>
+ <TELL
+"It is open to July " N ,CALENDAR-PAGE "." CR>
+ <COND (<==? .PAG 8>
+ <TELL
+"There is only one notation here, in the 9AM spot:
+\"Call Coates: Will completed\"." CR>)
+ (<==? .PAG 7>
+ <TELL
+"The only listing here is an appointment with Baxter at 2PM
+at the Robner Corp. office." CR>)
+ (T
+ <TELL
+"Nothing of interest is scheduled on this date." CR>)>)
+ (<VERB? TURN>
+ <COND (<NOT <==? ,PRSI ,INTNUM>>
+ <TELL "Huh?" CR>)
+ (<G? ,P-NUMBER 30>
+ <TELL
+"Thirty days hath September,|
+April, June, and November,|
+All the rest have " N ,P-NUMBER "???" CR>)
+ (<0? ,P-NUMBER>
+ <TELL "Do you suppose that would be June 30?" CR>)
+ (T
+ <SETG CALENDAR-PAGE ,P-NUMBER>
+ <TELL
+"The calendar is now open to July " N ,P-NUMBER "." CR>)>)>>
+
+<ROUTINE NOTE-PAPER-F ()
+ <COND (<VERB? READ EXAMINE>
+ <COND (,NOTE-READ
+ <PAD-READ "Examination of the paper">)
+ (<==? ,P-ADVERB ,W?CAREFULLY>
+ <TELL
+"There are some indentations on the paper. Something may have been
+written on the previous sheet." CR>)
+ (T
+ <TELL
+"There doesn't seem to be anything written on the pad." CR>)>)
+ (<VERB? RUB>
+ <COND (<NOT ,PRSI>
+ <TELL
+"You should try rubbing or shading the pad with something." CR>)
+ (<==? ,PRSI ,PENCIL>
+ <PAD-READ "Shading the paper with the pencil">)>)
+ (<AND <VERB? RUN-OVER> <==? ,PRSO ,PENCIL>>
+ <PAD-READ "Running the pencil over the paper">)
+ (<AND <VERB? HOLD-UP> <==? ,PRSI ,GLOBAL-LIGHT>>
+ <PAD-READ "Looking at the pad against the light">)>>
+
+<ROUTINE PAD-READ (STR)
+ <SETG NOTE-READ T>
+ <TELL .STR
+" reveals impressions left by writing on the previous sheet. The writer must
+borne down heavily, but only a few words come out clearly:|
+|
+ Baxter,|
+|
+ st time|
+ nsist op merg|
+ mnidy Oth|
+ forc|
+ ocumen y poss|
+ plica y Focus s|
+ recons|
+late!|
+ rsha|" CR>>
+
+<GLOBAL P-ADVERB <>>
+
+<GLOBAL NEWSPAPER-READ <>>
+
+<ROUTINE READ-SECOND-SECTION ()
+ <SETG NEWSPAPER-READ T>
+ <TELL
+"In your study of the second section, a small item in the financial section
+catches your eye. A merger between Robner Corp. and Omnidyne is set to be
+concluded shortly. There is a picture of Mr. Baxter with Omnidyne president
+Starkwell, both smiling broadly. Baxter is quoted as saying that the deal
+will enable the financially ailing Robner Corp. to continue to produce the
+highest-quality products. The article points out that Marshall Robner, who
+founded Robner Corp. but is no longer its major stockholder, had been found
+dead yesterday morning, an apparent suicide victim. Baxter is quoted as
+saying that Robner was in full agreement with the terms of the merger." CR>>
+
+<ROUTINE NEWSPAPER-F ()
+ <COND (<VERB? EXAMINE READ OPEN>
+ <COND (<EQUAL? ,P-ADVERB ,W?CAREFULLY ,W?SLOWLY>
+ <READ-SECOND-SECTION>)
+ (T
+ <TELL
+"The Daily Herald is a local paper in two sections. In your cursory look at
+the first, you find a brief obituary for Mr. Robner. It details his career,
+including the formation of Robner Corp. A few years ago, Mr. Robner and the
+Robner Corp. were given a prestigious award for works in the community. At
+that time Robner said \"I am proud to accept this award for the Corporation.
+Robner Corp is my whole life, and I will continue to guide it for the public
+interest as long as I live.\" Robner himself had won great public acclaim for
+his charitable works." CR>)>)>>
+
+<ROUTINE SECOND-SECTION-F ()
+ <COND (<VERB? TAKE>
+ <COND (<IN? ,NEWSPAPER ,WINNER>
+ <TELL "You already have the whole newspaper." CR>)
+ (T
+ <PERFORM ,V?TAKE ,NEWSPAPER>
+ <RTRUE>)>)
+ (<NOT <IN? ,NEWSPAPER ,WINNER>>
+ <TELL "You don't have the newspaper." CR>)
+ (<VERB? EXAMINE READ>
+ <READ-SECOND-SECTION>
+ <RTRUE>)
+ (<VERB? DROP>
+ <TELL
+"You shouldn't leave pieces of the paper lying around. At least
+leave the whole thing." CR>)>>
+
+"Interrupt handlers"
+
+<ROUTINE I-MAIL ()
+ <COND (<OR <EQUAL? ,HERE ,FRONT-PATH>
+ <AND <EQUAL? ,HERE ,FOYER>
+ <FSET? ,FRONT-DOOR ,OPENBIT>>>
+ <TELL
+"A mailman walks briskly up to you, hands you an envelope,
+and departs." CR>
+ <MOVE ,ENVELOPE ,WINNER>
+ <FSET ,ENVELOPE ,TOUCHBIT>
+ <RTRUE>)
+ (<EQUAL? ,HERE ,FOYER>
+ <TELL
+"There is a short rap on the front door. A moment later, a thin
+envelope appears under the door." CR>
+ <MOVE ,ENVELOPE ,FOYER>
+ <PUTP ,ENVELOPE
+ ,P?FDESC
+ "Partially exposed under the front door is an envelope.">
+ <ENABLE <QUEUE I-MAIL-2 60>>
+ <RTRUE>)
+ (T
+ <MOVE ,ENVELOPE ,FOYER-TABLE>
+ <ENABLE <QUEUE I-MAIL-2 60>>
+ <COND (<EQUAL? ,HERE ,SOUTH-LAWN ,WEST-OF-DOOR ,EAST-OF-DOOR>
+ <TELL
+"You notice a mailman stop by the house briefly and depart." CR>
+ <RTRUE>)
+ (T <RFALSE>)>)>>
+
+<ROUTINE I-MAIL-2 ()
+ <COND (<EQUAL? <LOC ,ENVELOPE> ,FOYER ,FOYER-TABLE>
+ <ESTABLISH-GOAL ,ROURKE ,FOYER T>
+ <ENABLE <QUEUE I-MAIL-3 -1>>
+ <RFALSE>)>>
+
+<ROUTINE I-MAIL-3 ()
+ <COND (,ROURKE-MAIL
+ <COND (<IN? ,ROURKE <LOC ,MRS-ROBNER>>
+ <QUEUE I-MAIL-3 0>
+ <ESTABLISH-GOAL ,ROURKE ,ROURKE-ROOM T>
+ <COND (<AND <IN? ,ENVELOPE ,WINNER>
+ <IN? ,WINNER <LOC ,MRS-ROBNER>>>
+ <TELL
+"Mrs. Rourke walks up to Mrs. Robner. \"I'm sorry, Ma'am, but this gentleman
+has a letter that just arrived for you.\" Mrs. Robner grabs the letter from
+you. \"That is none of your business!\"" CR>)
+ (<NOT <IN? ,ENVELOPE ,ROURKE>>
+ <RTRUE>)>
+ <COND (<==? ,HERE <LOC ,ROURKE>>
+ <COND (<IN? ,ENVELOPE ,ROURKE>
+ <TELL
+"Mrs. Rourke hands an envelope to Mrs. Robner.">)>
+ <MOVE ,ENVELOPE ,MRS-ROBNER>
+ <COND (,ENVELOPE-OPENED
+ <TELL " Mrs. Robner examines the
+envelope, then turns to you. \"You did this, I suppose.\" she says. \"You had
+no right! I expected better treatment than this. You would think I were
+suspected of wrongdoing!\"" CR>)
+ (T
+ <TELL " Mrs. Robner examines
+the envelope briefly, then puts it in her pocket." CR>
+ <REMOVE ,ENVELOPE>)>
+ <RTRUE>)
+ (T <REMOVE ,ENVELOPE>)>
+ <RFALSE>)
+ (T <RFALSE>)>)
+ (<IN? ,ROURKE ,FOYER>
+ <COND (<EQUAL? <LOC ,ENVELOPE> ,FOYER-TABLE ,FOYER>
+ <MOVE ,ENVELOPE ,ROURKE>
+ <FSET ,ENVELOPE ,TOUCHBIT>
+ <ESTABLISH-GOAL ,ROURKE <LOC ,MRS-ROBNER> T>
+ <SETG ROURKE-MAIL T>
+ <COND (<==? ,HERE ,FOYER>
+ <TELL
+"Mrs. Rourke takes the envelope and starts to walk away." CR>
+ <RTRUE>)
+ (T <RFALSE>)>)
+ (T <UNPRIORITIZE ,ROURKE> <RFALSE>)>)>>
+
+<GLOBAL ROURKE-MAIL <>>
+
+<ROUTINE I-NEWSPAPER ()
+ <MOVE ,NEWSPAPER ,FRONT-PATH>
+ <COND (<EQUAL? ,HERE ,SOUTH-LAWN ,FRONT-PATH>
+ <TELL
+"The local paperboy, in an amazing athletic feat, throws a newspaper toward
+the house from a distance of at least 100 feet. It even lands beside the front
+door, rather than in the bushes." CR>
+ <RTRUE>)>>
+
+<GLOBAL WILL-WAIT 0>
+
+<GLOBAL WILL-HOLD <>>
+
+<ROUTINE I-WILL-READING ()
+ <COND (<AND <L? ,PRESENT-TIME 760>
+ <OR <NOT <IN? ,MRS-ROBNER ,LIVING-ROOM>>
+ <NOT <IN? ,DUNBAR ,LIVING-ROOM>>
+ <NOT <IN? ,BAXTER ,LIVING-ROOM>>
+ <NOT <IN? ,GEORGE ,LIVING-ROOM>>>>
+ <SETG WILL-HOLD T>
+ <QUEUE I-WILL-READING -1>
+ <COND (<==? ,HERE ,LIVING-ROOM>
+ <COND (<PROB 70> <RFALSE>)
+ (<PROB 50>
+ <TELL
+"Mr. Coates asks everyone to be patient, as not everyone is present." CR>)
+ (T
+ <TELL
+"Mr. Coates appears distracted, looking frequently toward the door." CR>)>
+ <RTRUE>)>
+ <RFALSE>)
+ (<NOT <==? ,HERE ,LIVING-ROOM>>
+ <COND (<G? <SETG WILL-WAIT <+ ,WILL-WAIT 1>> 15>
+ <ENABLE <QUEUE I-WILL-MISSED -1>>
+ <WILL-HACK>
+ <RFALSE>)
+ (T
+ <QUEUE I-WILL-READING -1>
+ <RFALSE>)>)>
+ <COND (<==? ,HERE ,LIVING-ROOM>
+ <SETG AT-READING T>
+ <COND (<AND <G? ,PRESENT-TIME 720> <G? ,WILL-WAIT 3>>
+ <TELL
+"The people present turn to look at you. Mrs. Robner glares at you. \"You
+might at least have the courtesy to be here on time! Haven't you caused enough
+disruption already? We should have started without you. Mr. Coates, please
+proceed.\"" CR>)
+ (<G? ,PRESENT-TIME 760>
+ <TELL
+"\"It's late, so let's begin!\" Coates says." CR>)
+ (,WILL-HOLD
+ <TELL
+"\"Ah!\" Mr. Coates says, \"Everybody's here now.\"" CR>)>
+ <TELL
+"Mr. Coates begins: \"This is an awkward situation. Mr. Robner told me five
+days ago that he wanted to execute a new will, and promised to call me when
+it was completed. As I never heard from him, I must assume that he either
+changed his mind or did not complete the new will. Therefore, the one in my
+possession must be considered the most recent testament.\"" CR>
+ <COND (,G-CALENDAR
+ <TELL
+"You notice that George, who was not initially paying close attention, now
+perks up and begins to look about anxiously." CR>)
+ (T
+ <TELL
+"From the corner of your eye, you catch George nodding his head, as
+if in approval, and smiling broadly." CR>)>
+ <TELL
+"Continuing, Mr. Coates says: \"Naturally, should a more recent will exist
+and be found within a reasonable period, the present one will be voided.
+I will proceed with reading the will here in my hands, which was executed
+three years ago last month.\" He reads the will, simply written and direct,
+leaving equal parts of the estate to his son, George Arthur Robner, and
+his wife, Mrs. Leslie Phillips Robner." CR>
+ <TELL
+"There is some discussion, understated congratulations and overstated
+sympathy, which Mr. Coates cuts short by clearing his throat. \"I must
+leave now, I'm afraid. If you have any questions, I can be contacted
+tomorrow.\" He picks up the phone, dials his office, and asks to be
+picked up at the Robner estate." CR>
+ <COND (,G-CALENDAR
+ <TELL
+"George, now looking quite upset, starts for the door." CR>)>
+ <WILL-HACK>
+ <RTRUE>)>
+ <WILL-HACK>
+ <RFALSE>>
+
+<ROUTINE WILL-HACK ()
+ <ESTABLISH-GOAL ,COATES ,SOUTH-LAWN T>
+ <SETG WILL-TIME ,PRESENT-TIME>
+ <SETG POST-WILL T>
+ <QUEUE I-WILL-READING 0>
+ <COND (,G-CALENDAR <GEORGE-HACK>)>>
+
+<GLOBAL POST-WILL <>>
+
+<ROUTINE GEORGE-HACK ("AUX" (GL <LOC ,GEORGE>))
+ #DECL ((GL) OBJECT)
+ <COND (<==? .GL ,HERE>
+ <COND (<==? .GL ,GEORGE-ROOM>
+ <TELL
+"George paces around. \"I just remembered,\" he says, \"I've got some personal
+business to attend to. Would you mind?\" He shows you to the door." CR>)
+ (<==? <GETP .GL ,P?LINE> ,TOP-OF-THE-LINE-C>
+ <TELL
+"\"I'm...I really have some business to do in my room. I'll speak
+to you later,\" George says. He starts off toward his room." CR>)
+ (T
+ <TELL
+"\"I've...got to be going now. I'll see you later,\" George says.
+He starts to leave." CR>)>)>
+ <COND (<NOT <==? .GL ,GEORGE-ROOM>>
+ <ESTABLISH-GOAL ,GEORGE ,GEORGE-ROOM T>)>
+ <SETG GEORGE-SEQUENCE T>
+ <ENABLE <QUEUE I-GEORGE-HACK -1>>>
+
+<GLOBAL GEORGE-SEQUENCE <>>
+<GLOBAL GEORGE-WAIT <>>
+<GLOBAL GEORGE-READY <>>
+<GLOBAL GEORGE-SCREAM <>>
+
+<ROUTINE I-GEORGE-HACK ("AUX" (GL <LOC ,GEORGE>) GT (TMP <>))
+ <SET GT <GET ,GOAL-TABLES <GETP ,GEORGE ,P?CHARACTER>>>
+ <COND (,GEORGE-READY
+ <COND (<==? ,HERE .GL>
+ <SETG GEORGE-READY <>>
+ <SETG GEORGE-SCREAM <>>
+ <SETG GEORGE-WAIT 1>
+ <TELL
+"\"I don't understand you, Inspector. I asked to be alone so I can take care
+of some business. I...I don't see why you have to snoop around here like I was
+some sort of suspect.\"" CR>
+ <COND (,GEORGE-SCREAM
+ <TELL
+"\"I said to close that door and not to come in! You must be deaf as well as
+stupid!\"" CR>)>
+ <RTRUE>)
+ (<AND <FSET? ,GEORGE-DOOR ,OPENBIT>
+ <NOT ,GEORGE-SCREAM>>
+ <TELL
+"As the door opens, you hear George say \"Close that door! I'm working!\"" CR>
+ <SETG GEORGE-SCREAM T>
+ <RTRUE>)>)
+ (,GEORGE-WAIT
+ <COND (<==? ,HERE .GL>
+ <TELL
+"George paces around the room, awaiting your departure with ill-concealed
+impatience." CR>
+ <COND (<G? <SETG GEORGE-WAIT <+ ,GEORGE-WAIT 1>> 12>
+ <TELL
+"\"I can't take this. You get on my nerves. I'm leaving.\"" CR>
+ <COND (<==? ,HERE <GET .GT ,GOAL-QUEUED>>
+ <PUT .GT ,GOAL-QUEUED ,LIVING-ROOM>)>
+ <UNPRIORITIZE ,GEORGE>
+ <SETG GEORGE-WAIT <>>
+ <QUEUE I-GEORGE-HACK 0>
+ <ENABLE <QUEUE GEORGE-HACK 30>>)>
+ <RTRUE>)
+ (T
+ <SETG GEORGE-WAIT <>>
+ <FCLEAR ,GEORGE-DOOR ,OPENBIT>
+ <COND (<EQUAL? ,HERE ,LIBRARY ,CORRIDOR-4 ,CORRIDOR-3>
+ <TELL
+"You hear George's door close." CR>)>)>)
+ (<==? .GL ,GEORGE-ROOM>
+ <COND (<==? ,HERE .GL>
+ <TELL
+"\"I have business to attend to. Would you mind leaving?\"" CR>
+ <SETG GEORGE-WAIT 1>)
+ (T
+ <ENABLE <QUEUE I-GEORGE-HACK-2 5>>
+ <SETG GEORGE-READY T>
+ <COND (<AND <EQUAL? ,HERE ,CORRIDOR-4 ,CORRIDOR-3>
+ <FSET? ,GEORGE-DOOR ,OPENBIT>>
+ <FCLEAR ,GEORGE-DOOR ,OPENBIT>
+ <SET TMP T>
+ <TELL
+"You hear George's door close." CR>)>
+ <FCLEAR ,GEORGE-DOOR ,OPENBIT>
+ .TMP)>)
+ (<==? ,HERE .GL>
+ <COND (<NOT ,GEORGE-FOLLOW>
+ <SETG GEORGE-FOLLOW T>
+ <RFALSE>)
+ (<PROB 50>
+ <TELL
+"\"Please stop following me around like this. Can I have no privacy? I'm
+simply trying to take care of something personal.\"" CR>)
+ (T
+ <TELL
+"\"Stop following me. My business is private.\"" CR>)>)
+ (<==? .GL ,CORRIDOR-4>
+ <COND (<==? <BAND <GETP ,HERE ,P?CORRIDOR> 1> 1>
+ <TELL
+"George glances in your direction, then enters his room." CR>
+ <MOVE ,GEORGE ,GEORGE-ROOM>)>)
+ (<AND <EQUAL? .GL ,CORRIDOR-3 ,CORRIDOR-2>
+ <EQUAL? ,HERE ,CORRIDOR-1 ,STAIR-TOP>>
+ <TELL
+"George glances back at you briefly, then continues on his way." CR>)>>
+
+<GLOBAL GEORGE-FOLLOW <>>
+
+"At this point, George is in his room having waited for some
+time for his moment to try to enter the library secretly.
+I-GEORGE-HACK is still enabled and running every move to
+detect the chomper entering the room."
+
+<ROUTINE I-GEORGE-HACK-2 ()
+ <COND (,GEORGE-READY
+ <COND (<OR <==? <BAND <GETP ,HERE ,P?CORRIDOR> 1> 1>
+ <==? ,HERE ,LIBRARY>>
+ <QUEUE I-GEORGE-HACK-2 <RANDOM 9>>
+ <COND (<EQUAL? ,HERE ,CORRIDOR-2 ,CORRIDOR-1 ,STAIR-TOP>
+ <COND (<PROB 30>
+ <TELL
+"A door opens down the hall. George steps out, spots you, and looks briefly
+toward the window. After a moment he steps back into his room and shuts the
+door." CR>)
+ (T
+ <TELL
+"You faintly hear a door open and then close near the end of the hall." CR>)>)
+ (<EQUAL? ,HERE ,CORRIDOR-4 ,LIBRARY>
+ <TELL
+"You hear George's door open and ">
+ <COND (<PROB 30>
+ <TELL "you catch a brief glimpse of his
+head darting back into the doorway. You watch as the door closes again." CR>)
+ (T
+ <TELL "close again immediately." CR>)>)
+ (<FSET? ,GEORGE-DOOR ,OPENBIT>
+ <FCLEAR ,GEORGE-DOOR ,OPENBIT>
+ <TELL
+"George walks up to his door and slams it in your face." CR>)
+ (<EQUAL? ,HERE ,CORRIDOR-3>
+ <TELL
+"George opens his door and peeks out. He is startled by your presence,
+excuses himself, and closes the door sharply in your face before you can
+utter a word." CR>)>)
+ (T
+ <QUEUE I-GEORGE-HACK 0>
+ <MOVE ,GEORGE ,LIBRARY>
+ <FSET ,GEORGE-DOOR ,OPENBIT>
+ <QUEUE I-GEORGE-HACK-2 0>
+ <ENABLE <QUEUE I-GEORGE-HACK-3 -1>>
+ <COND (<==? ,HERE ,UPSTAIRS-CLOSET>
+ <TELL
+"You hear George's door open and you see his head poke out briefly, scanning
+the hallway. He apparently didn't see you, and darts across the hall to the
+library." CR>)
+ (<==? ,HERE ,LIBRARY-BALCONY>
+ <TELL
+"You see George through the doorway, looking down the hallway, then darting
+into the library." CR>)>)>)
+ (T
+ <QUEUE I-GEORGE-HACK-2 <RANDOM 9>>
+ <RFALSE>)>>
+
+<GLOBAL GEORGE-SEARCH 0>
+<GLOBAL GEORGE-RUN 0>
+<GLOBAL BOOKS-MOVED <>>
+
+<ROUTINE I-GEORGE-HACK-3 ("AUX" (FLG <>))
+ <COND (<0? ,GEORGE-SEARCH>
+ <COND (<==? ,HERE ,LIBRARY-BALCONY>
+ <TELL
+"George walks purposefully toward the bookshelves. He looks around, but you
+react before he can see you. When you peek out again, George is fiddling with
+the shelves. His right arm reaches into the shelf and, to your amazement, the
+unit of bookshelves on the left rotates away from the wall, revealing a
+darkened room behind. George enters it, trembling with barely controlled fear
+and excitement." CR>
+ <SET FLG T>
+ <SETG BOOKS-MOVED T>
+ <SETG GEORGE-MOVES-BOOKS T>
+ <MOVE ,GEORGE ,HIDDEN-CLOSET>)
+ (<==? ,HERE ,LIBRARY>
+ <TELL
+"George hears you walk through the balcony doors and recoils in horror. He
+runs across the hall to his own bedroom, slamming his door shut." CR>
+ <SET FLG T>
+ <SETG GEORGE-READY <>>
+ <SETG GEORGE-WAIT <>>
+ <FCLEAR ,GEORGE-DOOR ,OPENBIT>
+ <MOVE ,GEORGE ,GEORGE-ROOM>
+ <QUEUE I-GEORGE-HACK-3 0>
+ <QUEUE I-GEORGE-HACK-2 10>)
+ (T
+ <MOVE ,GEORGE ,HIDDEN-CLOSET>
+ <SETG BOOKS-MOVED T>)>)
+ (<1? ,GEORGE-SEARCH>
+ <COND (<EQUAL? ,HERE ,LIBRARY ,LIBRARY-BALCONY>
+ <TELL
+"A dim light in the hidden closet comes on. In the faint light, you can see
+George motioning with his right hand. All at once, the shelf swings shut!" CR>
+ <SET FLG T>)>)
+ (<L? ,GEORGE-SEARCH 10>
+ <COND (<FSET? ,HIDDEN-DOOR-L ,OPENBIT>
+ <TELL
+"As the bookshelf swings open, you see George carefully dialing a combination
+into a large wall safe. He turns in panic and, with an exclamation, knocks you
+down and bolts out of the library." CR>
+ <SET FLG T>
+ <SETG SAFE-SEEN T>
+ <SETG GEORGE-SEARCH 0>
+ <QUEUE I-GEORGE-HACK-3 0>
+ <MOVE ,GEORGE ,CORRIDOR-1>
+ <ESTABLISH-GOAL ,GEORGE ,EAST-LAWN T>)>)
+ (<L? ,GEORGE-SEARCH 16>
+ <COND (<FSET? ,HIDDEN-DOOR-L ,OPENBIT>
+ <FSET ,SAFE ,OPENBIT>
+ <SETG SAFE-SEEN T>
+ <TELL
+"As the shelf swings open, George spins to face you. His expression, first
+seemingly wild with happiness, changes to one of panic and horror. He jerks
+around, trying feebly to conceal a piece of paper in his hands. He jumps
+toward you, then recoils in fear. Finally, sobbing, he crumples to the floor,
+clutching the paper beneath him. A large combination safe, imbedded in a wall,
+is lying open. You enter the hidden closet." CR>
+ <SET FLG T>
+ <QUEUE I-GEORGE-HACK-3 0>
+ <MOVE ,NEW-WILL ,GEORGE>
+ <GOTO ,HIDDEN-CLOSET>
+ <ENABLE <QUEUE I-GEORGE-LEAVE-CLOSET 10>>
+ <SETG HERE ,HIDDEN-CLOSET>
+ <SETG NEW-WILL-SEEN T>)>)
+ (<==? ,GEORGE-SEARCH 16>
+ <FCLEAR ,SAFE ,OPENBIT>
+ <COND (<==? ,HERE ,LIBRARY>
+ <TELL
+"Suddenly, the bookshelves swing out, forming an opening to a dark area
+behind. George starts to emerge but stops suddenly as he notices you! With
+jack-rabbit reflexes, he darts back inside. Before you can act, the
+shelves close again." CR>
+ <SET FLG T>
+ <MOVE ,GEORGE ,NORTH-LAWN>
+ <MOVE ,SOGGY-WILL ,LAKE>
+ <REMOVE ,NEW-WILL>
+ <QUEUE I-GEORGE-HACK-3 0>
+ <SETG GEORGE-RUN ,PRESENT-TIME>)
+ (T
+ <MOVE ,GEORGE ,LIBRARY>
+ ;<MOVE ,NEW-WILL ,GEORGE>
+ <QUEUE I-GEORGE-HACK-3 0>
+ <UNPRIORITIZE ,GEORGE>
+ <ESTABLISH-GOAL ,GEORGE ,NORTH-LAWN T>
+ <COND (<==? ,HERE ,LIBRARY-BALCONY>
+ ;<SETG NEW-WILL-SEEN T>
+ <TELL
+"Suddenly, the shelf swings out, and George emerges. He walks over to a
+special place in the shelves and reaches behind some books. The bookshelves
+silently assume their normal position." ;"You notice that George is carrying a
+piece of paper." CR>
+ <SET FLG T>)>)>)>
+ <SETG GEORGE-SEARCH <+ ,GEORGE-SEARCH 1>>
+ .FLG>
+
+<GLOBAL SAFE-SEEN <>>
+
+<GLOBAL NEW-WILL-SEEN <>>
+
+<GLOBAL CALL-RING <>>
+
+<GLOBAL GEORGE-MOVES-BOOKS <>>
+
+<ROUTINE I-GEORGE-LEAVE-CLOSET ()
+ <COND (<IN? ,GEORGE ,HIDDEN-CLOSET>
+ <ESTABLISH-GOAL ,GEORGE ,GEORGE-ROOM>
+ <RFALSE>)>>
+
+<ROUTINE I-CALL ("AUX" (MRL <LOC ,MRS-ROBNER>))
+ <COND (,CALL-RING
+ <COND (<==? .MRL ,LIVING-ROOM>
+ <SETG CALL-RING <>>
+ <COND (<==? ,HERE ,LIVING-ROOM>
+ <TELL
+"Mrs. Robner picks up the phone. \"Oh, hi. Look, I can't talk now. I'll call
+you later, okay? Bye, then.\" She hangs up the phone." CR>
+ <ROBNER-CALL-MOVE>
+ <RTRUE>)>
+ <ROBNER-CALL-MOVE>
+ <RFALSE>)
+ (T
+ <TELL "The phone rings again." CR>
+ <COND (<GLOBAL-IN? ,TELEPHONE ,HERE>
+ <THIS-IS-IT ,TELEPHONE>)>
+ <RTRUE>)>)>
+ <COND (,CALL-IN-PROGRESS
+ <COND (<G? <SETG CALL-IN-PROGRESS <+ ,CALL-IN-PROGRESS 1>> 15>
+ <SETG CALL-IN-PROGRESS <>>
+ <QUEUE I-CALL 0>
+ <UNPRIORITIZE ,MRS-ROBNER>
+ <RFALSE>)
+ (<OR <FSET? ,MASTER-BEDROOM-DOOR ,OPENBIT>
+ <==? ,HERE ,MASTER-BEDROOM>>
+ <TELL
+"Mrs. Robner speaks quietly into the phone and hangs up." CR>
+ <SETG CALL-IN-PROGRESS <>>
+ <QUEUE I-CALL 0>
+ <UNPRIORITIZE ,MRS-ROBNER>
+ <RTRUE>)>)
+ (,CALL-WAITING
+ <COND (<EQUAL? ,HERE .MRL ,MASTER-BATH ,BEDROOM-BALCONY>
+ <COND (<NOT <G? <SETG CALL-WAITING <+ ,CALL-WAITING 1>>
+ 3>>
+ <TELL
+"Mrs. Robner glares at you, holding the phone in one hand. \"Would you
+mind terribly?\", she asks." CR>)
+ (,CALL-MOVE
+ <TELL
+"\"I can't understand why you won't let me use the phone. Can't I talk to
+my best friend? Hummph...I suppose it can wait, since you are being
+so...uh...unhelpful.\" She puts down the receiver, rises from her bed, and
+starts to leave." CR>
+ <SETG CALL-MOVE <>>
+ <SETG CALL-WAITING <>>
+ <QUEUE I-CALL 0>
+ <UNPRIORITIZE ,MRS-ROBNER>)
+ (T
+ <TELL
+"\"I give up. What IS your problem, anyway?,\" Mrs. Robner asks, in a
+barely controllable rage. \"I'll call you back,\" she says, and slams down
+the receiver." CR>
+ <SETG CALL-MOVE <>>
+ <QUEUE I-CALL 0>
+ <UNPRIORITIZE ,MRS-ROBNER>)>)
+ (T
+ <ESTABLISH-CALL>
+ <RFALSE>)>)
+ (,CALL-MOVE
+ <COND (<==? .MRL ,MASTER-BEDROOM>
+ <COND (<EQUAL? ,HERE ,BEDROOM-BALCONY ,MASTER-BATH
+ ,MASTER-BEDROOM>
+ <COND (<NOT <EQUAL? ,HERE ,MASTER-BEDROOM>>
+ <TELL
+"Mrs. Robner enters her bedroom and spots you." CR>)>
+ <TELL
+"\"I'd like to make a private phone call, if you have no objection,\" she
+says. She motions toward the door." CR>
+ <SETG CALL-WAITING 1>)
+ (T
+ <ESTABLISH-CALL>
+ <RFALSE>)>)>)
+ (<EQUAL? ,HERE ,LIBRARY ,LIVING-ROOM ,MASTER-BEDROOM>
+ <TELL "The telephone rings." CR>
+ <THIS-IS-IT ,TELEPHONE>
+ <ESTABLISH-GOAL ,MRS-ROBNER ,LIVING-ROOM T>
+ <SETG CALL-RING T>
+ <QUEUE I-CALL -1>)
+ (<==? ,HERE .MRL>
+ <TELL
+"You can hear a telephone ringing in a nearby room. Mrs. Robner
+says \"Pardon me\" and starts for the door." CR>
+ <SETG CALL-RING T>
+ <QUEUE I-CALL -1>
+ <ESTABLISH-GOAL ,MRS-ROBNER ,LIVING-ROOM T>)
+ (T
+ <COND (<NOT <==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>>
+ <TELL
+"You hear a phone ringing in a nearby room." CR>
+ <SETG CALL-RING T>
+ <QUEUE I-CALL -1>
+ <ESTABLISH-GOAL ,MRS-ROBNER ,LIVING-ROOM T>)
+ (<PROB 50>
+ <TELL
+"You notice a very faint ringing sound coming from the house." CR>
+ <ROBNER-CALL-MOVE>
+ <RTRUE>)>)>>
+
+<ROUTINE THIS-IS-IT (OBJ)
+ <SETG P-IT-OBJECT .OBJ>
+ <SETG P-IT-LOC ,HERE>>
+
+<ROUTINE ESTABLISH-CALL ("AUX" COR)
+ <SETG CALL-MOVE <>>
+ <SETG CALL-IN-PROGRESS 1>
+ <FCLEAR ,MASTER-BEDROOM-DOOR ,OPENBIT>
+ <COND (<EQUAL? ,HERE ,CORRIDOR-1>
+ <TELL
+"Mrs. Robner shuts the door to the master bedroom." CR>)
+ (<EQUAL? ,HERE ,CORRIDOR-2 ,STAIR-TOP>
+ <TELL
+"You hear the master bedroom door shut." CR>)>>
+
+<ROUTINE MASTER-BEDROOM-DOOR-F ()
+ <COND (<AND <VERB? LISTEN> ,CALL-IN-PROGRESS>
+ <TELL
+"You can hear the muffled voice of Mrs. Robner through the door." CR>)
+ (<VERB? KNOCK>
+ <COND (,CALL-IN-PROGRESS
+ <TELL
+"Mrs. Robner's calls out. \"Wait just one minute!\"" CR>)
+ (T <DOOR-F>)>)>>
+
+<ROUTINE DOOR-F ()
+ <COND (<VERB? LISTEN>
+ <TELL "You can't hear anything through the door." CR>)
+ (<VERB? KNOCK>
+ <COND (<AND <==? ,PRSO ,FRONT-DOOR>
+ <NOT ,WELCOMED>
+ <L? ,PRESENT-TIME 700>
+ <==? ,HERE ,FRONT-PATH>>
+ <TELL
+"You hear footsteps inside the house. Mrs. Robner, dressed in black,
+opens the door and greets you." CR>
+ <WELCOME>)
+ (<INHABITED? <DOOR-ROOM>>
+ <TELL "A muffled voice says, \"Come in!\"" CR>)
+ (T <TELL
+"There is no answer at the door." CR>)>)>>
+
+<ROUTINE WELCOME ()
+ <TELL
+"\"Hello,\" she says, \"I'm Mrs. Robner. Please come in. I'm afraid I really
+can't help you much. This is surely a terrible waste of time, not to mention
+upsetting, having all these police marching around the house. This has been a
+trying time, as I suppose you can understand. As I told Mr. Coates and the
+other detective, you may look around but you must be out by 8 o'clock at the
+latest. Oh, I almost forgot...Mr. Coates will be reading my husband's will at
+noon in the living room. You may attend if you wish.\"">
+ <SETG WELCOMED T>
+ <REMOVE ,MRS-ROBNER>
+ <COND (<==? ,HERE ,FRONT-PATH>
+ <CRLF>
+ <TELL
+"Mrs. Robner leads you into the house and closes the door behind you." CR>
+ <CRLF>
+ <GOTO ,FOYER>)>
+ <MOVE ,MRS-ROBNER ,FOYER>
+ <TELL
+"\"I'm going to make myself some breakfast now. I'll be around all day if you
+need anything. I'll do what I can to help. Good day!\"" CR>
+ <FCLEAR ,FRONT-DOOR ,OPENBIT>
+ <ESTABLISH-GOAL ,MRS-ROBNER ,KITCHEN>>
+
+<GLOBAL WELCOMED <>>
+<GLOBAL AT-READING <>>
+<GLOBAL LOBLO-FLAG <>>
+
+<ROUTINE INHABITED? (RM "AUX" F)
+ <COND (<NOT <SET F <FIRST? .RM>>> <RFALSE>)>
+ <REPEAT ()
+ <COND (<FSET? .F ,PERSON> <RTRUE>)>
+ <SET F <NEXT? .F>>
+ <COND (<NOT .F> <RFALSE>)>>>
+
+<ROUTINE DOOR-ROOM ()
+ <COND (<==? ,PRSO ,MASTER-BEDROOM-DOOR>
+ ,MASTER-BEDROOM)
+ (<==? ,PRSO ,GEORGE-DOOR>
+ ,GEORGE-ROOM)
+ (<==? ,PRSO ,DUNBAR-DOOR>
+ ,DUNBAR-ROOM)
+ (<==? ,PRSO ,ROURKE-DOOR>
+ ,ROURKE-ROOM)>>
+
+<GLOBAL CALL-IN-PROGRESS <>>
+
+<GLOBAL CALL-WAITING <>>
+
+<GLOBAL CALL-MOVE <>>
+
+<GLOBAL CALL-OVERHEARD <>>
+
+<GLOBAL ROBNER-OLD-LOC <>>
+
+<ROUTINE ROBNER-CALL-MOVE ()
+ <SETG ROBNER-OLD-LOC <LOC ,MRS-ROBNER>>
+ <ESTABLISH-GOAL ,MRS-ROBNER ,MASTER-BEDROOM T>
+ <SETG CALL-MOVE T>
+ <QUEUE I-CALL -1>>
+
+<ROUTINE TELEPHONE-F ()
+ <COND (<NOT <EQUAL? ,HERE ,LIBRARY ,MASTER-BEDROOM ,LIVING-ROOM>>
+ <TELL "There's no telephone here." CR>)
+ (<VERB? FIND>
+ <TELL "You are the detective, after all." CR>)
+ (<VERB? TAKE LISTEN REPLY>
+ <COND (,CALL-RING
+ <TELL
+"You take the phone and hear an unfamiliar man's voice
+say \"Hello? Is Leslie there?\" You start to reply, but Mrs. Robner">
+ <COND (<==? ,HERE ,LIVING-ROOM>
+ <TELL "
+enters and takes the phone from you. \"Thank you, inspector,\" she says, and
+then into the telephone: \"Hello? Oh, hi. I can't really talk now. I'll call
+you back soon, OK? Bye.\" She hangs up and starts toward the door." CR>)
+ (T
+ <TELL "
+picks up the phone from another extension and hears you. \"I've got it,
+inspector,\" she says. \"Hello? Oh, it's you. I can't talk now. I'll call
+you back soon. Bye!\" You hear two clicks and the line goes dead." CR>)>
+ <SETG CALL-RING <>>
+ <MOVE ,MRS-ROBNER ,LIVING-ROOM>
+ <ROBNER-CALL-MOVE>)
+ (,CALL-IN-PROGRESS
+ <TELL
+"You can hear Mrs. Robner and a man whose voice you don't recognize.
+Robner: \"...much too early to consider it.\"|
+Man's Voice: \"But we couldn't have planned it better. You're free.\"|
+Robner: \"Yes, but it will...Wait a second...I think...\"|
+\"Click.\" You realize that the call has been disconnected." CR>
+ <SETG CALL-OVERHEARD T>
+ <SETG CALL-IN-PROGRESS <>>
+ <QUEUE I-CALL 0>
+ <UNPRIORITIZE ,MRS-ROBNER>)
+ (T
+ <TELL
+"All you hear is a dial tone." CR>)>)>>
+
+<GLOBAL ENVELOPE-OPENED <>>
+
+<ROUTINE ENVELOPE-F ()
+ <COND (<VERB? OPEN>
+ <COND (<==? <LOC ,MRS-ROBNER> ,HERE>
+ <TELL
+"Mrs. Robner grabs the envelope from you. \"That,\" she
+says, \"is none of your business!\"" CR>
+ <MOVE ,ENVELOPE ,MRS-ROBNER>
+ <RTRUE>)>
+ <SETG ENVELOPE-OPENED T>
+ <COND (<AND <NOT <IN? ,ENVELOPE ,WINNER>> <ITAKE <>>>
+ <TELL "(Taken)" CR>)>
+ <RFALSE>)
+ (<AND <VERB? CLOSE> ,ENVELOPE-OPENED>
+ <TELL
+"You close the envelope carefully, but it still looks like it has been
+opened." CR>
+ <FCLEAR ,ENVELOPE ,OPENBIT>
+ <RTRUE>)>>
+
+<ROUTINE IN-MOTION? (PERSON "AUX" GT)
+ <SET GT <GET ,GOAL-TABLES <GETP .PERSON ,P?CHARACTER>>>
+ <COND (<AND <GET .GT ,GOAL-ENABLE>
+ <GET .GT ,GOAL-S>
+ <NOT <==? <LOC .PERSON> <GET .GT ,GOAL-F>>>>
+ <RTRUE>)
+ (T <RFALSE>)>>
+
+<ROUTINE MRS-ROBNER-F ("OPTIONAL" (RARG <>))
+ <COND (<AND <NOT .RARG> <VERB? GIVE> <==? ,PRSO ,ENVELOPE>>
+ <PERFORM ,V?SHOW ,MRS-ROBNER ,ENVELOPE>
+ <RTRUE>)>
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,MRS-ROBNER>
+ <COND (,CALL-MOVE
+ <TELL "Mrs. Robner appears to be in a hurry."
+ CR>)>
+ T)
+ (,CALL-WAITING
+ <TELL "Mrs. Robner is staring at you." CR>)
+ (<IN? ,MRS-ROBNER ,KITCHEN>
+ <TELL "Mrs. Robner is preparing a meal." CR>)
+ (<IN? ,MRS-ROBNER ,DINING-ROOM>
+ <TELL "Mrs. Robner is eating breakfast here." CR>)
+ (<IN? ,MRS-ROBNER ,LIVING-ROOM>
+ <COND (,POST-WILL <RTRUE>)
+ (T
+ <TELL
+ "Mrs. Robner is sitting here, knitting." CR>)>)
+ (<IN? ,MRS-ROBNER ,MASTER-BEDROOM>
+ <TELL "Mrs. Robner is sitting on her bed." CR>)
+ (T <TELL "Mrs. Robner is here." CR>)>
+ <CARRY-CHECK ,MRS-ROBNER>)
+ (<VERB? HELLO GOODBYE>
+ <TELL "Mrs. Robner says a curt \"">
+ <COND (<VERB? HELLO> <TELL "Hello">)
+ (T <TELL "Bye">)>
+ <TELL "\"." CR>)
+ (<==? ,WINNER ,MRS-ROBNER>
+ <COND (<VERB? FIND> <RFALSE>)
+ (<AND <VERB? OPEN> <==? ,PRSO ,ENVELOPE>>
+ <COND (,ENVELOPE-OPENED
+ <TELL
+"\"You seem to have taken care of that already.\"" CR>)
+ (T
+ <TELL
+"\"I believe there are laws protecting the privacy of mail. I will not
+open the envelope for you or anyone else.\"" CR>)>)
+ (<COM-CHECK ,MRS-ROBNER> <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR>)>)
+ (<AND <VERB? ARREST> <OR ,ENVELOPE-OPENED ,CALL-OVERHEARD>>
+ <COND (<NOT <FSET? ,LAB-REPORT ,TOUCHBIT>>
+ <MURDER-NOT-PROVEN ,MRS-ROBNER>
+ <RTRUE>)>
+ <TELL
+"Sergeant Duffy enters and leads Mrs. Robner away.|
+|">
+ <END-HEADER "August 2">
+ <TELL
+"I am sorry to inform you that the grand jury investigating the murder charge
+against Mrs. Robner declined to indict her, citing a lack of evidence linking
+her with the execution of the crime. Please try to be more cautious when
+making arrests in the future.|
+|" CR>
+ <CASE-OVER>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,MRS-ROBNER>>
+ <COND (<NOT <GRAB-ATTENTION ,MRS-ROBNER>> <RTRUE>)
+ (<==? ,PRSI ,GLOBAL-HIDDEN-CLOSET>
+ <COND (,HC-ROBNER
+ <TELL
+"\"I'm quite shocked about it. I really had no idea!\"" CR>)
+ (T
+ <TELL
+"\"I don't know what you're talking about, Inspector. I know of
+no such closet.\"" CR>)>)
+ (<EQUAL? ,PRSI ,GLOBAL-ALLERGONE ,ALLERGONE
+ ,ALLERGONE-BOTTLE>
+ <TELL
+"\"I have some allergies, Inspector. Simply dreadful in the fall and spring.
+That's what the Allergone is for. I don't use them much this time of year,
+though.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-SNEEZO ,SNEEZO ,SNEEZO-BOTTLE>
+ <TELL
+"\"Sneezo is a wonderful cold remedy. Whenever I get a cold, I just take
+a few, and I usually feel much better before long.\"" CR>)
+ (<==? ,PRSI ,GLOBAL-CALL>
+ <COND (<AND ,CALL-OVERHEARD ,MR-ENVELOPE>
+ <TELL
+"\"I guess you know it was Steven. I admit we were lovers, and we planned to
+marry if I could get a divorce from Marshall. He refused to consider it, the
+divorce I mean, even though he had no time for me anymore. He was married to
+the company, and he refused to see my side of things. Steven was suggesting
+that now we could marry. I told him I thought the timing was poor, or at least
+I would have if you hadn't eavesdropped.\"" CR>)
+ (,CALL-OVERHEARD
+ <TELL
+"\"I was talking to a good friend of mine. We were discussing some plans we
+made; of course they had to be changed, under the circumstances. They are none
+of your business. They don't concern my husband's suicide at all, I assure
+you.\"" CR>)
+ (T
+ <TELL
+"\"It was just a friend of mine, offering his condolences.\"" CR>)>)
+ (<==? ,PRSI ,GLOBAL-STEVEN>
+ <COND (<NOT ,MR-ENVELOPE>
+ <TELL
+"\"I don't know who you mean. I have no friend named Steven.\"" CR>)
+ (<AND ,CALL-OVERHEARD ,MR-ENVELOPE>
+ <TELL
+"\"I might as well tell you. Steven and I were lovers and we were going to be
+married if I could divorce Marshall. I asked Marshall about it, but he became
+angry and refused. I didn't know what to do. Don't look at me that way. I had
+nothing to do with my husband's death. Driving him to it with talk of divorce?
+You didn't know Marshall, that's for sure! I should've told the police
+earlier, I suppose, but it's really none of your business.\"" CR>)
+ (,MR-ENVELOPE
+ <TELL
+"\"Steven is a close personal friend. We have known each other for many
+years, and I visit his home frequently. Marshall knew of our friendship
+and didn't begrudge it in the slightest. My husband and I had a very
+trusting relationship. You may find the idea of trust difficult to understand,
+I suppose.\"" CR>)>)
+ (<==? ,PRSI ,GLOBAL-MR-ROBNER>
+ <TELL
+"\"I loved my husband, no matter what you may think. I am very sorry to have
+lost him.\" The speech is almost a set piece, and not too convincing." CR>)
+ (<EQUAL? ,PRSI ,GEORGE ,GLOBAL-GEORGE>
+ <DISCRETION ,MRS-ROBNER ,GEORGE>
+ <TELL
+"\"A child. He may be a man in age, but he still hasn't really grown up. He'll
+find himself someday, but in the meantime he can be a trial. I guess Marshall
+and I were too lenient. We probably still are, but he is our son, after all.
+We can't throw him out on the street.\"" CR>)
+ (<EQUAL? ,PRSI ,BAXTER ,GLOBAL-BAXTER>
+ <TELL
+"\"Baxter has been my husband's partner for a long time, but they're not close
+friends. Baxter has always had the head for making money, and Marshall had the
+creative spark for new products. The two of them were perfect for each other
+in the early days. Of course, things haven't been going well lately. I guess
+none of that matters much now.\"" CR>)
+ (<EQUAL? ,PRSI ,CORPSE ,DUNBAR ,GLOBAL-DUNBAR>
+ <DISCRETION ,MRS-ROBNER ,DUNBAR>
+ <TELL
+"\"I've always thought she was a bit too smug in her relationships around
+here. A bit above herself, if you see my meaning. After all, she's really
+just a glorified secretary. She acts as though she's part of the family, and
+she does get along well with almost everyone here. I swear, though, Marshall
+spent more time with her than me, lately. Um...not that I'm trying to imply
+that anything went on between them. Quite the contrary.\"" CR>)
+ (<EQUAL? ,PRSI ,ROURKE ,GLOBAL-ROURKE>
+ <DISCRETION ,MRS-ROBNER ,ROURKE>
+ <TELL
+"\"She's an excellent housekeeper and sometimes even helps with the cooking
+For all her good qualities, though, she's too much of a snoop and a gossip.
+She tires to keep track of everyone around here. It's unnerving sometimes.
+But, as servants go these days, she's quite extraordinary.\"" CR>)
+ (<EQUAL? ,PRSI ,GARDENER ,GLOBAL-GARDENER>
+ <TELL
+"\"I don't pay much attention to him. He's worked out well; the grounds are
+in excellent condition. You must take a look at his roses while you're here.
+They're really spectacular.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-OLD-WILL>
+ <COND (<G? ,WILL-TIME 0>
+ <TELL
+"\"It's what I expected, really.\"" CR>)
+ (T
+ <TELL
+"\"Marshall takes care of that sort of thing. The will, I suppose, leaves
+the estate to George and me, but I can't be sure.\"" CR>)>)
+ (<EQUAL? ,PRSI ,NEW-WILL>
+ <TELL
+"\"What do you know? Marshall changed the will, after all. Where did you ever
+find this? What? George was trying to destroy it? I'm shocked. You don't think
+George had anything to do...\" She stops short." CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-NEW-WILL>
+ <TELL
+"\"If there is a new will, I certainly don't know where it is.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-FOCUS>
+ <TELL
+"\"Oh, you mean the \"scandal\"? Focus Corporation was a subsidiary of Robner
+Corp. some years ago. There was a big to-do about misuse of funds or some such
+thing, but Marshall kept it pretty quiet. He told me that the people
+responsible were forced out of the company, but that charges weren't pressed
+to avoid bad publicity. I didn't realize anyone remembered that.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-SAFE>
+ <TELL
+"\"I don't know of a safe in the house, although it's perfectly
+believable that Marshall has one hidden somewhere. It would appeal
+to his childish side, I think.\"" CR>)
+ (T
+ <TELL
+"\"I don't know much about that.\"" CR>)>)
+ (<VERB? CONFRONT SHOW>
+ <COND (<NOT <GRAB-ATTENTION ,MRS-ROBNER>> <RTRUE>)
+ (<==? ,PRSI ,LAB-REPORT>
+ <TELL
+"Mrs. Robner reads the report with shocked disbelief. \"I...I don't know what
+to say. Who would want to kill Marshall? He was so well liked and...\" She
+breaks down, sobbing." CR>)
+ (<==? ,PRSI ,NEW-WILL>
+ <TELL
+"Mrs. Robner reads the will. \"That's that, then,\" she says.
+\"I guess Marshall was pushed too far.\"" CR>)
+ (<EQUAL? ,PRSI ,ENVELOPE ,LETTER>
+ <COND (<NOT ,ENVELOPE-OPENED>
+ <TELL
+"\"Thank you, Inspector. The envelope is for me.\" She takes the
+envelope from you and examines it briefly." CR>
+ <MOVE ,ENVELOPE ,MRS-ROBNER>
+ <RTRUE>)>
+ <SETG MR-ENVELOPE T>
+ <TELL
+"\"You have certainly stooped to a new low, Inspector. Opening people's mail.
+I think there are laws against that sort of thing, but I guess you wouldn't
+know.">
+ <COND (,CALL-OVERHEARD
+ <TELL " I suppose you also know that Steven is
+my lover and that we were planning to marry. Don't look so melodramatic: I
+didn't kill my husband. You think my talk of divorce may have driven him to
+it? Why don't you leave me alone!\"" CR>)
+ (T
+ <TELL
+" In any case, what of it? It's from a friend of mine, an old friend from
+school. We get together now and then to discuss old times. I don't suppose
+there is a law against that?\"" CR>)>)>)>>
+
+<GLOBAL MR-ENVELOPE <>>
+
+<ROUTINE BOOKSHELVES-F ()
+ <COND (<AND <VERB? TAKE> <==? ,PRSI ,BOOKSHELVES>>
+ <TELL
+"That would make an ungodly pile of books on the floor and take most of
+the day." CR>)
+ (<VERB? TAKE>
+ <TELL
+"You have better things to do than taking books from the shelves." CR>)
+ (<VERB? READ>
+ <TELL
+"Reading, while educational, will not help you solve this case." CR>)
+ (<VERB? LOOK-BEHIND>
+ <TELL
+"It would take all day to look behind all of the books." CR>)
+ (<VERB? EXAMINE SEARCH>
+ <TELL
+"The shelves contain many books and manuscripts covering a wide range of
+subjects. They are meticulously arranged." CR>
+ <COND (<OR ,GEORGE-MOVES-BOOKS
+ <AND ,BOOKS-MOVED <==? ,P-ADVERB ,W?CAREFULLY>>>
+ <TELL
+"One book is out of place, however, leaving a gap in one row. On closer
+inspection, a small black button can be seen at the back of this gap." CR>
+ <SETG BUTTON-REVEALED T>
+ <FCLEAR ,LIBRARY-BUTTON ,INVISIBLE>)>
+ <RTRUE>)>>
+
+<GLOBAL BUTTON-REVEALED <>>
+
+<ROUTINE LIBRARY-BUTTON-F ()
+ <COND (<VERB? PUSH>
+ <COND (<FSET? ,HIDDEN-DOOR-L ,OPENBIT>
+ <TELL
+"The bookshelf on the left quietly swings shut." CR>
+ <FCLEAR ,HIDDEN-DOOR-L ,OPENBIT>)
+ (T
+ <TELL
+"The leftmost shelf quietly swings out against the balcony window." CR>
+ <FSET ,HIDDEN-DOOR-L ,OPENBIT>)>)>>
+
+<GLOBAL COR-1
+ <TABLE P?WEST P?EAST
+ CORRIDOR-4 CORRIDOR-3 CORRIDOR-2 CORRIDOR-1 STAIR-TOP 0>>
+
+<GLOBAL COR-2
+ <TABLE P?NORTH P?SOUTH
+ STAIR-TOP SHALL-11 0>>
+
+<GLOBAL COR-4
+ <TABLE P?WEST P?EAST
+ SHALL-11 SHALL-12 0>>
+
+<GLOBAL COR-8
+ <TABLE P?SOUTH P?NORTH
+ FOYER NFOYER CORNER 0>>
+
+<GLOBAL COR-16
+ <TABLE P?NORTH P?SOUTH
+ STAIR-BOTTOM SHALL-1 0>>
+
+<GLOBAL COR-32
+ <TABLE P?WEST P?EAST
+ WEST-LAWN WEST-OF-DOOR FRONT-PATH EAST-OF-DOOR EAST-LAWN 0>>
+
+<GLOBAL COR-64
+ <TABLE P?NORTH P?SOUTH
+ EAST-SIDE EAST-OF-DOOR SOUTH-LAWN 0>>
+
+<GLOBAL COR-128
+ <TABLE P?NW P?SE
+ NORTH-LAWN ORCHARD EAST-LAWN 0>>
+
+<GLOBAL COR-256
+ <TABLE P?WEST P?EAST
+ NFOYER STAIR-BOTTOM STAIRS 0>>
+
+<GLOBAL COR-512
+ <TABLE P?WEST P?EAST
+ GUEST-ROOM EAST-LAWN 0>>
+
+<GLOBAL COR-1024
+ <TABLE P?NORTH P?SOUTH
+ UPSTAIRS-CLOSET CORRIDOR-2 0>>
+
+<GLOBAL COR-2048
+ <TABLE P?WEST P?EAST
+ ROSE-GARDEN ORCHARD 0>>
+
+<GLOBAL CHINA-EXAMINED <>>
+
+<ROUTINE CSCP ()
+ <COND (<VERB? TAKE RUB MOVE>
+ <TELL
+"These items are very rare and delicate, and were used only by Mr.
+Robner himself. You shouldn't even be touching them." CR>)
+ (<VERB? EXAMINE>
+ <TELL
+"Each one is hand-painted and depicts a scene from Greek mythology." CR>
+ <SETG CHINA-EXAMINED T>)
+ (<VERB? MUNG>
+ <COND (<PROB 75>
+ <TELL
+"As you reach for the " D ,PRSO ", you think of the pension awaiting you
+upon retirement. \"Is it worth it?\" you think, to be booted off the force
+for an impulse of anger and stupidity. Fortunately, you calm your temper." CR>)
+ (T
+ <TELL
+"With a sweep of your hand, you smash all of them!
+Mrs. Rourke runs into the room, screaming." CR>
+ <GONE-CRAZY>)>)>>
+
+<ROUTINE GONE-CRAZY ()
+ <TELL
+"Your mind becomes confused amidst strange screaming, yelling, and the pangs
+of your conscience. \"How could I have done it?\" you ask yourself, as you
+hear the distant sound of police sirens. Sergeant Duffy and two other officers
+enter and grab you rather unceremoniously. They take you to a waiting car,
+where, forlorn and disgusted, you begin to ponder prison life. \"Perhaps,\"
+you think, \"I shouldn't have done that.\"" CR>
+ <CASE-OVER>>
+
+<ROUTINE CUPS-F ()
+ <COND (<VERB? TAKE RUB MOVE EXAMINE MUNG>
+ <CSCP>)
+ (<VERB? COUNT>
+ <TELL "There are six hand-painted cups." CR>)>>
+
+<ROUTINE SAUCERS-F ()
+ <COND (<VERB? TAKE RUB MOVE EXAMINE MUNG>
+ <CSCP>)
+ (<VERB? COUNT>
+ <TELL "There are seven hand-painted saucers." CR>)>>
+
+<ROUTINE CHINA-F ()
+ <COND (<VERB? TAKE RUB MOVE EXAMINE MUNG>
+ <CSCP>)
+ (<VERB? COUNT>
+ <TELL
+"There are eight large and small plates, seven saucers, and six cups." CR>)>>
+
+<ROUTINE PLATES-F ()
+ <COND (<VERB? TAKE RUB MOVE EXAMINE MUNG>
+ <CSCP>)
+ (<VERB? COUNT>
+ <TELL
+"There are eight of both the large and the small plates." CR>)>>
+
+<GLOBAL LADDER-POSITIONED <>>
+
+<ROUTINE LADDER-F ()
+ <COND (<AND <VERB? PUT> <==? ,PRSI ,HOLE>>
+ <TELL
+"The ladder fits perfectly in the holes! You slowly release the
+ladder and it rests on the railing of the balcony above." CR>
+ <SETG LADDER-FLAG T>
+ <MOVE ,LADDER ,HERE>
+ <SETG LADDER-POSITIONED T>
+ <FSET ,LADDER ,NDESCBIT>)
+ (<AND <VERB? CLIMB-UP>
+ <NOT ,LADDER-FLAG>
+ <NOT ,LADDER-FLAG-2>>
+ <TELL
+"Climbing a ladder while it is horizontal is, at best, a contradiction
+in terms." CR>)
+ (<AND <VERB? LEAN> <EQUAL? ,PRSI ,HOUSE ,BALCONY>>
+ <COND (<==? ,HERE ,IN-ROSES>
+ <SETG LADDER-FLAG T>
+ <SETG LADDER-FLAG-2 <>>
+ <SETG LADDER-POSITIONED T>
+ <MOVE ,LADDER ,HERE>
+ <TELL
+"The ladder is now leaning against the railing of a balcony above." CR>)
+ (<==? ,HERE ,IN-ORCHARD>
+ <SETG LADDER-FLAG <>>
+ <SETG LADDER-FLAG-2 T>
+ <MOVE ,LADDER ,HERE>
+ <TELL
+"The ladder, firmly planted in the soil of the orchard, is now leaning
+against the balcony above." CR>)
+ (T
+ <TELL
+"There is no good spot to lean it against here." CR>
+ <RTRUE>)>
+ <FSET ,LADDER ,NDESCBIT>)
+ (<VERB? TAKE MOVE>
+ <FCLEAR ,LADDER ,NDESCBIT>
+ <SETG LADDER-FLAG <>>
+ <SETG LADDER-FLAG-2 <>>
+ <RFALSE>)
+ (<VERB? EXAMINE>
+ <TELL
+"The ladder is a typical gardening ladder, about fifteen feet long and caked
+with dirt and dried mud." CR>)>>
+
+<ROUTINE CUP-F ()
+ <COND (<VERB? EXAMINE LOOK-INSIDE>
+ <TELL
+"The cup is painted with a scene from Greek mythology and has a brown
+discoloration at the bottom." CR>)
+ (<VERB? SMELL>
+ <TELL "The cup smells faintly of tea." CR>)
+ (<VERB? FINGERPRINT>
+ <TELL
+"There don't seem to be any fingerprints on the cup." CR>)
+ (<AND <VERB? ANALYZE> <==? ,CUP ,PRSO>> <DO-ANALYZE>)>>
+
+<GLOBAL ANALYSIS-GOAL <>>
+
+<ROUTINE DO-FINGERPRINT ("OPTIONAL" (AN <>))
+ <COND (,FINGERPRINT-OBJ
+ <TELL
+"Sergeant Duffy is already at the lab running a previous errand.
+You will have to wait for him to return." CR>
+ <RTRUE>)>
+ <COND (<NOT .AN>
+ <TELL
+"You look at the " D ,PRSO " closely. It appears to have good
+fingerprints on it, so you call for Sergeant Duffy." CR>)>
+ <COND (<AND .AN ,PRSI>
+ <SETG ANALYSIS-GOAL ,PRSI>)
+ (T <SETG ANALYSIS-GOAL <>>)>
+ <SETG FINGERPRINT-OBJ ,PRSO>
+ <SETG ANALYSIS-OBJ .AN>
+ <COND (<==? ,PRSO ,LADDER>
+ <COND (<G? ,PRESENT-TIME 720>
+ <TELL
+"Sergeant Duffy arrives and shakes his head sadly. \"I'm sorry, sir, but
+the Ladder Analysis Department closes at noon.\" He leaves." CR>
+ <SETG FINGERPRINT-OBJ <>>
+ <RFALSE>)>
+ <SETG LADDER-FLAG <>>
+ <SETG LADDER-FLAG-2 <>>
+ <FCLEAR ,LADDER ,NDESCBIT>)>
+ <ENABLE <QUEUE I-FINGERPRINT <+ 15 <RANDOM 15>>>>
+ <REMOVE ,PRSO>
+ <FSET ,PRSO ,TOUCHBIT>
+ <TELL
+"Sergeant Duffy walks up as quietly as a mouse. He takes the " D ,PRSO " from
+you. \"I'll return soon with the results,\" he says, and leaves as silently as
+he entered." CR>>
+
+<GLOBAL ANALYSIS-OBJ <>>
+
+<ROUTINE DO-ANALYZE () <DO-FINGERPRINT T>>
+
+<ROUTINE I-FINGERPRINT ()
+ <TELL "Sergeant Duffy ">
+ <COND (<==? ,FINGERPRINT-OBJ ,LADDER>
+ <TELL
+"comes onto the scene. ">)
+ (<PROB 30>
+ <TELL
+"appears before you, holding the " D ,FINGERPRINT-OBJ
+" carefully in his hands. His quiet efficiency and youthful vigor impress you
+quite a bit. ">)
+ (<PROB 50>
+ <TELL
+"seems to arrive from nowhere, holding the " D ,FINGERPRINT-OBJ
+" in his hands. ">)
+ (T
+ <TELL
+"returns with the " D ,FINGERPRINT-OBJ ". For a moment you muse on his almost
+magical entrances. ">)>
+ <COND (<NOT ,ANALYSIS-OBJ>
+ <TELL "\"The fingerprints,\" he begins,
+\"belong to ">
+ <COND (<==? ,FINGERPRINT-OBJ ,CUP>
+ <TELL "Mr. Robner">)
+ (<EQUAL? ,FINGERPRINT-OBJ ,SAUCER ,SUGAR-BOWL>
+ <TELL "Mr. Robner and Ms. Dunbar">)>)
+ (,ANALYSIS-GOAL
+ <COND (<AND <==? ,FINGERPRINT-OBJ ,FRAGMENT>
+ <EQUAL? ,ANALYSIS-GOAL ,LOBLO
+ ,LOBLO-BOTTLE ,GLOBAL-LOBLO>>
+ <TELL
+"\"The fragment did contain LoBlo. Here is the full report.\"
+He hands you a slip of paper, and departs." CR>
+ <MOVE ,LAB-REPORT ,PLAYER>
+ <FSET ,LAB-REPORT ,TOUCHBIT>
+ <MOVE ,FINGERPRINT-OBJ ,PLAYER>
+ <SETG FINGERPRINT-OBJ <>>
+ <RTRUE>)
+ (T
+ <TELL "\"The " D ,FINGERPRINT-OBJ
+ " analysis yielded nothing useful">)>)
+ (<==? ,FINGERPRINT-OBJ ,FRAGMENT>
+ <TELL "\"The fragment,\" he begins,
+\"contains traces of tea and sugar.">
+ <TELL " In addition, there seems to be some other chemical
+present that is not a common medication. It could take weeks to determine
+exactly what it is. It is definitely not Amitraxin (Ebullion), though. There
+are no clear fingerprints">)
+ (<==? ,FINGERPRINT-OBJ ,CUP>
+ <TELL "\"The cup,\" he begins,
+\"contains a trace of tea. The fingerprints are those of Mr. Robner">)
+ (<==? ,FINGERPRINT-OBJ ,SAUCER>
+ <TELL "\"The saucer,\" he begins,
+\"contains traces of tea and sugar. The fingerprints are
+those of Mr. Robner and Ms. Dunbar">)
+ (<==? ,FINGERPRINT-OBJ ,SUGAR-BOWL>
+ <TELL "\"The bowl,\" he begins,
+\"has the fingerprints of Mr. Robner and Ms. Dunbar. The bowl
+contains common table sugar only.">)
+ (T
+ <TELL "\"I am sorry,\" he begins,
+\" but the lab found nothing of interest.">)>
+ <COND (<AND <EQUAL? ,FINGERPRINT-OBJ ,LADDER>
+ <NOT <==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>>>
+ <TELL " In the interests of
+civility, I have left the ladder outside the house.\" He leaves." CR>
+ <MOVE ,LADDER ,FRONT-PATH>)
+ (T
+ <TELL "\".
+With that, he leaves, handing you the " D ,FINGERPRINT-OBJ
+ " as he whisks away." CR>
+ <MOVE ,FINGERPRINT-OBJ ,PLAYER>)>
+ <SETG FINGERPRINT-OBJ <>>
+ <RTRUE>>
+
+<ROUTINE ANALYSIS-PRINT (OBJ)
+ <COND (<EQUAL? .OBJ ,GLOBAL-LOBLO ,LOBLO ,LOBLO-BOTTLE>
+ <TELL "LoBlo">)
+ (<EQUAL? .OBJ ,ASPIRIN ,ASPIRIN-BOTTLE>
+ <TELL "aspirin">)
+ (<EQUAL? .OBJ ,EBULLION ,EBULLION-BOTTLE ,GLOBAL-EBULLION>
+ <TELL "Ebullion">)
+ (<EQUAL? .OBJ ,DUM-KOF ,DUM-KOF-BOTTLE>
+ <TELL "Dum-Kof">)
+ (<EQUAL? .OBJ ,ALLERGONE ,ALLERGONE-BOTTLE ,GLOBAL-ALLERGONE>
+ <TELL "Allergone">)
+ (T <TELL D .OBJ>)>
+ <TELL "\". ">>
+
+<ROUTINE SAUCER-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The saucer is hand-painted with a mythological scene. It has a couple of
+small areas of brown discoloration." CR>)
+ (<VERB? SMELL>
+ <TELL "There is a faint smell of tea." CR>)
+ (<VERB? FINGERPRINT> <DO-FINGERPRINT>)
+ (<VERB? ANALYZE> <DO-ANALYZE>)>>
+
+<ROUTINE SHOWER-F ()
+ <COND (<VERB? TAKE THROUGH>
+ <TELL
+"Being unusually grubby, even for a police detective, this is one of your
+better ideas so far on this case. However, your attire isn't suitable, and
+you probably have better things to do." CR>)>>
+
+<ROUTINE TOILET-F ("OPTIONAL" (RARG 100))
+ <COND (<NOT <==? .RARG 100>> <RFALSE>)
+ (<VERB? EXAMINE LOOK-INSIDE>
+ <TELL
+"You have stooped to a new low, snooping around toilet bowls. Wait! Something
+catches your eye--was it the Tidy-Bowl man? Is he the murderer? Naw..." CR>)
+ (<VERB? FLUSH>
+ <TELL "Whhoooossshhhhh!" CR>)>>
+
+<ROUTINE SINK-F ()
+ <COND (<VERB? LAMP-ON>
+ <TELL
+"You turn the handle and lo! Water starts to run. Impressed, you turn the
+handle again, and the water stops running! Bravo!" CR>)>>
+
+<ROUTINE RANDOM-PSEUDO ()
+ <TELL "You can't do anything with that." CR>>
+
+<ROUTINE WINDOW-F ()
+ <COND (<VERB? MUNG>
+ <TELL
+"Vandalism is not the answer! Think of your position. How would
+it look for a famous police inspector to be arrested?" CR>)
+ (<VERB? BRUSH>
+ <TELL
+"You think you're clever, don't you? The window is so dirty that
+it isn't easily cleaned." CR>)
+ (<VERB? LOOK-INSIDE>
+ <TELL
+"The window is dirty and impossible to see through clearly." CR>)>>
+
+<ROUTINE WINDOW-KNOCK (RM)
+ <COND (<INHABITED? .RM>
+ <TELL "Someone looks up at you disgustedly." CR>)>>
+
+<ROUTINE KITCHEN-WINDOW-F ()
+ <COND (<VERB? MUNG BRUSH> <WINDOW-F>)
+ (<VERB? OPEN>
+ <TELL "The window can't be opened." CR>)
+ (<VERB? KNOCK>
+ <WINDOW-KNOCK <COND (<==? ,HERE ,KITCHEN> ,ORCHARD)
+ (T ,KITCHEN)>>)
+ (<VERB? LOOK-INSIDE>
+ <COND (<==? ,HERE ,KITCHEN>
+ <TELL
+"You can barely see through the thick leaves of the grape arbor,
+but a lawn and lake can be seen in the distance." CR>)
+ (T
+ <TELL
+"You can see the kitchen beyond the tangle of trees and branches.">
+ <WINDOW-SHOP ,KITCHEN "kitchen">)>)>>
+
+<ROUTINE POPULATION (RM "OPTIONAL" (PR <>) "AUX" (CNT 0) OBJ)
+ #DECL ((RM) OBJECT (CNT) FIX)
+ <COND (<NOT <SET OBJ <FIRST? .RM>>> <RETURN .CNT>)>
+ <REPEAT ()
+ <COND (<FSET? .OBJ ,PERSON>
+ <SET CNT <+ .CNT 1>>
+ <COND (.PR <DESCRIBE-PERSON .OBJ "there">)>)>
+ <SET OBJ <NEXT? .OBJ>>
+ <COND (<NOT .OBJ> <RETURN .CNT>)>>>
+
+<ROUTINE SHED-WINDOW-F ()
+ <COND (<VERB? MUNG BRUSH> <WINDOW-F>)
+ (<VERB? OPEN> <TELL "The window can't be opened." CR>)
+ (<AND <VERB? LISTEN> <G? ,SECRET-MEETING 0>>
+ <TELL "You can't make out any of the words." CR>)
+ (<VERB? LOOK-INSIDE>
+ <COND (<==? ,HERE ,SHED-ROOM>
+ <TELL
+"Although the window is grimy, you can make out the lawn outside. ">
+ <WINDOW-SHOP ,EAST-LAWN "east lawn">)
+ (<==? ,SECRET-MEETING 4>
+ <TELL
+"Mr. Baxter seems furious and about to strike Ms. Dunbar, then calms himself.
+Ms. Dunbar starts to cry and is embraced by Mr. Baxter." CR>)
+ (<G? ,SECRET-MEETING 2>
+ <TELL
+"Mr. Baxter and Ms. Dunbar are inside. Although you can't hear them, it's
+clear from their gestures that a serious argument is occurring. Dunbar appears
+very upset and breaks into tears. Baxter remains composed, but tense and
+perhaps angry -- you can't be sure." CR>)
+ (<G? ,SECRET-MEETING 0>
+ <TELL
+"Through the grimy window you see Mr. Baxter and Ms. Dunbar talking. Dunbar
+is doing most of the talking, barely restraining tears. Baxter is listening,
+nodding grimly, and occassionally saying a few words. Unfortunately, you can't
+make any of them out." CR>)
+ (T
+ <TELL
+"You can vaguely make out the inside of the shed through the grime. ">
+ <WINDOW-SHOP ,SHED-ROOM "shed">)>)>>
+
+
+<ROUTINE DINING-ROOM-WINDOW-F ()
+ <COND (<VERB? MUNG> <WINDOW-F>)
+ (<VERB? OPEN> <TELL "The window can't be opened." CR>)
+ (<VERB? LOOK-INSIDE>
+ <COND (<==? ,HERE ,ROSE-GARDEN>
+ <TELL
+"You can see the dining room through the window.">
+ <WINDOW-SHOP ,DINING-ROOM "dining room">
+ <RTRUE>)
+ (<==? ,HERE ,IN-ROSES>
+ <TELL
+"You can see the dining room pretty clearly through the window." CR>
+ <POPULATION ,DINING-ROOM T>
+ <RTRUE>)
+ (T
+ <TELL
+"Through the window, the rose garden can be seen, and, off to
+the north, a wide lawn ending on a blue lake." CR>)>)>>
+
+<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>>
+
+<ROUTINE DESCRIBE-PERSON (PERSON "OPTIONAL" (STR <>))
+ <TELL D .PERSON " is "
+ <COND (<NOT .STR> "here")
+ (T .STR)> "." CR>>
+
+<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 of the drawers, but find only a variety of stockings,
+undergarments, and handkerchiefs." CR>)>>
+
+<ROUTINE BED-F ("OPTIONAL" (RARG 100))
+ <COND (<NOT <==? .RARG 100>> <RFALSE>)
+ (<VERB? LOOK-UNDER>
+ <TELL
+"No doubt you are looking for the bogeyman, but you are out of luck." CR>)>>
+
+<ROUTINE SUGAR-BOWL-F ()
+ <COND (<VERB? TASTE>
+ <TELL "The powder tastes like sugar." CR>)
+ (<VERB? SMELL>
+ <TELL "There is no high from sniffing this powder." CR>)
+ (<VERB? EAT>
+ <TELL
+"You eat some, but it is cloyingly sweet, so you stop." CR>)
+ (<VERB? FINGERPRINT> <DO-FINGERPRINT>)
+ (<VERB? ANALYZE> <DO-ANALYZE>)>>
+
+<ROUTINE TOOLS-F ()
+ <COND (<VERB? TAKE>
+ <TELL
+"The tools are standard gardening tools, in excellent condition. You have no
+use for them, unless you are looking for a new profession." CR>)>>
+
+<ROUTINE DUNBAR-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,DUNBAR> <RTRUE>)
+ (<AND <IN? ,BAXTER ,SHED> <NOT <0? ,SECRET-MEETING>>>
+ <RTRUE>)
+ (,DUNBAR-BAXTER-MEET <RTRUE>)
+ (<IN? ,DUNBAR ,DUNBAR-BATH>
+ <TELL
+"Ms. Dunbar is here, brushing her hair.">)
+ (<IN? ,DUNBAR ,DUNBAR-ROOM>
+ <TELL
+"Ms. Dunbar is lying on her bed.">)
+ (<IN? ,DUNBAR ,LIVING-ROOM>
+ <COND (,POST-WILL
+ <TELL
+"Ms. Dunbar is standing in the corner, looking pensive.">)
+ (T
+ <TELL
+"Ms. Dunbar is sitting on the sofa here.">)>)
+ (T <TELL "Ms. Dunbar is here.">)>
+ <CRLF>
+ <CARRY-CHECK ,DUNBAR>
+ <RTRUE>)
+ (<==? ,WINNER ,DUNBAR>
+ <COND (<VERB? FIND> <RFALSE>)
+ (<COM-CHECK ,DUNBAR> <RTRUE>)
+ (<VERB? HELLO GOODBYE>
+ <TELL "Ms. Dunbar nods at you." CR>
+ <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR> <RTRUE>)>)
+ (<AND <VERB? HELLO ASK-ABOUT SHOW>
+ <NOT <GRAB-ATTENTION ,DUNBAR>>>
+ <RTRUE>)>
+ <COND (<VERB? HELLO>
+ <TELL "Ms. Dunbar nods at you." CR>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,DUNBAR>>
+ <COND (<==? ,PRSI ,GLOBAL-CONCERT>
+ <COND (<OR ,STUB-D ,STUB-DX>
+ <TELL
+"\"It was an excellent concert, Inspector, but I don't see why you're asking
+about it.\"" CR>)
+ (T <TELL
+"\"I don't know what you are talking about. I don't go in for concerts much,
+you know.\"" CR>)>)
+ (<==? ,PRSI ,STUB>
+ <COND (,STUB-BX
+ <TELL
+"\"Why, it's just as Mr. Baxter said.\"" CR>)
+ (T
+ <SETG STUB-D T>
+ <COND (<IN? ,BAXTER ,HERE>
+ <SETG STUB-DX T>)>
+ <COND (,STUB-B
+ <SETG CONTRADICTION T>)>
+ <TELL
+"\"Oh, I...well, I guess I should tell you. You see, Mr. Baxter and I, we go
+together to concerts, only occasionally, you understand. We went that night,
+the night Marshall died. Then he took me home and that's it. I should have
+said something before, but I just didn't think it was important, and, well,
+I didn't think that the others should know we were seeing each other socially.
+Our...nobody knows about it, you know. Please don't say anything!\"" CR>)>)
+ (<EQUAL? ,PRSI ,BAXTER ,GLOBAL-BAXTER>
+ <TELL
+"\"Mr. Baxter? I see him often when he comes here on business, but I don't
+really know him that well. We keep to business when he comes around, and I
+hardly ever talk with him otherwise. He is, of course, an excellent executive,
+and poor Mr. Robner had every confidence in him.\"" CR>)
+ (<EQUAL? ,PRSI ,LOBLO ,GLOBAL-LOBLO ,LOBLO-BOTTLE>
+ <COND (,LOBLO-FLAG
+ <TELL
+"Ms. Dunbar is taken aback. \"I...I don't really know what to say. I take the
+tablets for my blood pressure. I have for a few months now. I know what you're
+thinking. I can't understand. Someone must have taken my pills and poisoned Mr.
+Robner. That's it. It's probably George. He knew about my pills. He's always
+snooping around. He used to talk about how half the money would be his
+someday.\"" CR>)
+ (T
+ <TELL
+"Ms. Dunbar seems a bit surprised. \"You found those in my bathroom, didn't
+you? I've been taking them for months for my blood pressure. Are they
+important?\" she asks." CR>)>)
+ (<EQUAL? ,PRSI ,GEORGE ,GLOBAL-GEORGE>
+ <DISCRETION ,DUNBAR ,GEORGE>
+ <TELL
+"\"Nobody likes George much. He's always alone when he's here, and that's only
+when he can't get more money to waste. I think he's just been waiting for the
+day when his father's money would be his. I can't say I miss him when he's not
+here: A thoroughly obnoxious child.\"" CR>)
+ (<EQUAL? ,PRSI ,MRS-ROBNER ,GLOBAL-MRS-ROBNER>
+ <TELL
+"\"She's a lovely person. She and Marshall were always an odd couple: he was
+so quiet and reserved, and she's so lively and sociable. She's changed a lot
+over the last few years. She used to enjoy her life here, but lately she's
+been restless and irritable, and now with Marshall's death, I'm worried about
+what may become of her.\"" CR>)
+ (<EQUAL? ,PRSI ,ROURKE ,GLOBAL-ROURKE>
+ <TELL
+"\"Mrs. Rourke is a very good servant. Always helpful, and always
+nearby when needed.\"" CR>)
+ (<EQUAL? ,PRSI ,GARDENER ,GLOBAL-GARDENER>
+ <TELL
+"\"He seems nice, if you can talk to him. You usually can't, really.\" She
+laughs briefly. \"Don't ever disturb his roses, or you'll learn the meaning
+of temper.\" She giggles again." CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-OLD-WILL>
+ <TELL
+"\"I really don't know too much about Marshall's personal business.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-NEW-WILL>
+ <COND (<G? ,WILL-TIME 0>
+ <TELL
+"\"I don't know anything about it. I suppose Marshall could have written a new
+will, but I probably would have seen signs of it around the library.\"" CR>)
+ (T
+ <TELL
+"\"As far as I know, there was no new will written, although Marshall did
+threaten to disinherit George. I guess he could have written one without my
+knowledge. I'm not always with him, you know.\"" CR>)>)
+ (<EQUAL? ,PRSI ,NEW-WILL>
+ <TELL
+"Ms. Dunbar reads the will carefully, nodding slowly. \"I guess I'm not
+surprised that Marshall disinherited George. He's been asking for it.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-MR-ROBNER>
+ <TELL
+"Ms. Dunbar looks down at the ground and sniffles softly. \"I've known him
+for years. He's been tremendously nervous and depressed lately about business.
+I don't think all was well in his personal life either. George has always been
+a problem for him. He even mentioned suicide once, although I never took it
+seriously. It shows you can never tell.\" She wipes her eyes with her
+hands." CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-FOCUS>
+ <TELL
+"\"Focus? There was once a subsidiary of Robner Corp. with that name. I can't
+recall much about it, though.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-SAFE>
+ <TELL
+"\"A safe? I don't think there's one in the house, although there's one at
+the office.\"" CR>)
+ (T
+ <TELL
+"\"I'm sorry, but I can't help you with that.\"" CR>)>)
+ (<VERB? SHOW CONFRONT>
+ <COND (<==? ,PRSI ,STUB>
+ <PERFORM ,V?ASK-ABOUT ,DUNBAR ,STUB>
+ <RTRUE>)
+ (<EQUAL? ,PRSI ,LOBLO>
+ <TELL
+"She glances at the pills. \"They're my pills. You must have taken them from
+my bathroom. Well, what am I supposed to say?\" She looks away." CR>)
+ (<EQUAL? ,PRSI ,LAB-REPORT>
+ <TELL
+"She seems stunned but recovers quickly. \"He didn't commit suicide, then?\"
+she says. \"But LoBlo, that's a pill I take for my blood pressure.\" She
+pauses. \"I can tell what you're thinking, but I didn't, couldn't have done
+it. Why should I? Someone must have taken them, maybe George. He knew I used
+them.\"" CR>
+ <ENABLE <QUEUE I-DUNBAR-ACTIVATE <+ 5 <RANDOM 15>>>>
+ <SETG LOBLO-FLAG T>)>)
+ (<VERB? ACCUSE>
+ <COND (,LOBLO-FLAG
+ <TELL
+"\"No! I didn't do it! I've worked for Mr. Robner for years. What possible
+motive could I have?\" With that, Ms. Dunbar begins to cry and move about
+the room quite nervously." CR>
+ <DUNBAR-SEQUENCE>)
+ (T
+ <TELL
+"\"What?\" she cries. \"Murder?\" She regains her composure and asks, \"I
+thought he committed suicide, with his medicine.\"" CR>)>)
+ (<VERB? ARREST>
+ <COND (<NOT <FSET? ,LAB-REPORT ,TOUCHBIT>>
+ <MURDER-NOT-PROVEN ,DUNBAR>
+ <RTRUE>)>
+ <TELL
+"Sergeant Duffy enters the room solemnly. He places handcuffs on Ms. Dunbar
+and leads her off. She is sobbing hysterically.|
+|">
+ <END-HEADER "August 10">
+ <COND (,MEETING-INTERRUPTED
+ <TELL
+"What a tragedy! Ms. Dunbar, released on bail during her trial for the murder
+of Mr. Robner, was found dead this morning, the victim of an apparent suicide.
+Her death is all the more distressing as the district attorney was trying to
+arrange some plea-bargaining deal with her in exchange for information
+implicating an unnamed accomplice. I am sorry to be the one to let you know.
+Thanks for your hard work on the Robner case.|
+|">)
+ (T <TELL
+"I wanted to let you know the disposition of the Robner case. Ms. Dunbar was
+acquitted today, the jury citing a lack of motive and only circumstantial
+evidence. I am extremely sorry.|
+|">)>
+ <CASE-OVER>)>>
+
+<GLOBAL STUB-D <>>
+<GLOBAL STUB-B <>>
+<GLOBAL STUB-DX <>>
+<GLOBAL STUB-BX <>>
+
+<ROUTINE I-DUNBAR-ACTIVATE ()
+ <COND (<NOT ,DUNBAR-ACCUSED>
+ <DUNBAR-SEQUENCE>
+ <RFALSE>)>>
+
+<ROUTINE ROURKE-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,ROURKE> <RTRUE>)
+ (<IN? ,ROURKE ,KITCHEN>
+ <TELL
+"Mrs. Rourke is here, cleaning the kitchen." CR>)
+ (<IN? ,ROURKE ,DINING-ROOM>
+ <TELL "Mrs. Rourke is cleaning the table here." CR>)
+ (<IN? ,ROURKE ,LIVING-ROOM>
+ <TELL "Mrs. Rourke is dusting the room." CR>)
+ (<IN? ,ROURKE ,ROURKE-ROOM>
+ <TELL "Mrs. Rourke is resting here." CR>)
+ (T <TELL "Mrs. Rourke is here, tidying up." CR>)>
+ <CARRY-CHECK ,ROURKE>
+ <RTRUE>)
+ (<==? ,WINNER ,ROURKE>
+ <COND (<VERB? FIND> <RFALSE>)
+ (<COM-CHECK ,ROURKE> <RTRUE>)
+ (<VERB? HELLO GOODBYE>
+ <TELL "Mrs. Rourke looks up from her work and nods."
+ CR>
+ <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR> <RTRUE>)>)
+ (<AND <VERB? HELLO ASK-ABOUT SHOW>
+ <NOT <GRAB-ATTENTION ,ROURKE>>>
+ <RTRUE>)>
+ <COND (<VERB? HELLO GOODBYE>
+ <TELL "Mrs. Rourke looks up from her work and nods." CR>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,ROURKE>>
+ <COND (<AND <==? ,PRSI ,ENVELOPE> <IN? ,ENVELOPE ,ROURKE>>
+ <TELL
+"\"It's a letter just arrived for Mrs. Robner. I was going to bring
+it to her.\"" CR>)
+ (<EQUAL? ,PRSI ,BAXTER ,GLOBAL-BAXTER>
+ <DISCRETION ,ROURKE ,BAXTER>
+ <TELL
+"\"Baxter! Hmmmph. Stuffiest person I ever met! I don't mind telling you I've
+never liked him much. So serious, businesslike. Thinks he's hot stuff, I
+imagine. I really shouldn't be telling you this, though, I suppose.
+\"Rourke,\" they tell me, \"stop your gossiping.\" Not that I'm a gossip,
+mind you, but I do have my opinions.\"" CR>)
+ (<EQUAL? ,PRSI ,GEORGE ,GLOBAL-GEORGE>
+ <DISCRETION ,ROURKE ,GEORGE>
+ <TELL
+"\"George is something, I tell you. The black sheep of the family, is what I'd
+say. Never met nobody with less respect for money. You'd think it grew on
+trees; not that it don't around here. Well, there I go, shooting off my mouth
+again.\"" CR>)
+ (<EQUAL? ,PRSI ,CORPSE ,DUNBAR ,GLOBAL-DUNBAR>
+ <TELL
+"\"Ms. Dunbar is nice; the best of the lot, I think. She's always been real
+friendly to me, and helps out when I have a problem. Mr. Robner, he really
+liked her too. I don't think Mrs. Robner did, though. He's been so busy lately
+with the business and Ms. Dunbar that I don't think the Mrs. hardly saw him
+much. Kind of jealous, maybe, of the two of them, I mean.\"" CR>)
+ (<EQUAL? ,PRSI ,MRS-ROBNER ,GLOBAL-MRS-ROBNER>
+ <DISCRETION ,ROURKE ,MRS-ROBNER>
+ <TELL
+"\"Now she's a strange sort. Real lively when she moved here, but I don't
+think she ever liked the life here. Her people are from Boston, one of those
+old families, and she never got used to Mr. Robner's ways. She goes out a lot,
+and sometimes she doesn't even come back at night. Not that I'm spying on her.
+But I know about these things. She has callers here, a number of men. One in
+particular comes more than others. A widower, I think, a real live wire. Not
+what it's any of my business, but I think someone with a sharp tongue could do
+her a lot of damage if she doesn't watch herself.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-STEVEN>
+ <DISCRETION ,ROURKE ,MRS-ROBNER>
+ <TELL
+"\"Ah, that's it! He's the one who's been coming around, taking Mrs. Robner
+out. I don't like the look of it. I mean, I think it looks kind of funny, what
+with she's a married woman. Mr. Robner takes no notice, of course, always
+busy. Oh, well. I shouldn't be telling you this. Now that Mr. Robner's dead,
+I don't suppose it matters, but what do you think people were saying! I tell
+you, gossip is fierce around here!\"" CR>)
+ (<EQUAL? ,PRSI ,GARDENER ,GLOBAL-GARDENER>
+ <TELL
+"\"Oh, don't let him frighten you. Let him alone and don't bother his roses.
+Gets positively livid about that. Got the green thumb, that's for sure.\"" CR>)
+ (<EQUAL? ,PRSI ,GLOBAL-MR-ROBNER>
+ <TELL
+"\"A fine man, but his head was always in the clouds. Just the opposite of
+Mrs. Robner. Her feet were always on the ground. He's been so worried, it
+makes me sick. I don't understand these business things, but he said something
+about them taking his business away from him just two nights ago. I guess the
+pressure was too much. He was a fine man, full of good works, though charity
+does begin at home, as the saying goes. Not that I have anything to complain
+about. He always treated me right.\"" CR>)
+ (T
+ <TELL
+"\"I don't know nothing about no " D ,PRSI "\"." CR>)>)
+ (<VERB? SHOW CONFRONT>
+ <COND (<==? ,PRSI ,LAB-REPORT>
+ <TELL
+"\"Well, if that don't beat all! A murder here, right under my nose! You've
+got your work cut out for you, Inspector, all right. There's some pretty
+strange people around here, and I wouldn't put it past hardly any of 'em to
+do it. What do you know!\"" CR>)
+ (T <TELL "Mrs. Rourke seems uninterested in it." CR>)>)>>
+
+<ROUTINE DISCRETION (P1 P2)
+ <COND (<IN? .P2 ,HERE>
+ <TELL D .P1 " looks briefly toward " D .P2 " and then speaks
+in a low whisper." CR>)>>
+
+<ROUTINE CARRY-CHECK (PERSON)
+ <COND (<FIRST? .PERSON>
+ <PRINT-CONT .PERSON T 0>)>
+ T>
+
+<ROUTINE DUM-KOF-F ()
+ <COND (<VERB? DRINK>
+ <TELL
+"You drink the remaining cough syrup. Yuk! That was awful!" CR>
+ <REMOVE ,DUM-KOF>)
+ (<VERB? TASTE>
+ <TELL
+"Yuk! It tastes like cough medicine!" CR>)>>
+
+<ROUTINE LOBLO-F ()
+ <COND (<VERB? TASTE>
+ <TELL "The pills are virtually tasteless." CR>)
+ (<VERB? SMELL>
+ <TELL "The pills are odorless." CR>)
+ (<VERB? EAT>
+ <TELL
+"Nervous? Blood Pressure high? See a doctor." CR>)
+ (<VERB? EXAMINE>
+ <TELL "These are small, yellow pills." CR>)>>
+
+<ROUTINE SNEEZO-F ()
+ <COND (<VERB? TASTE>
+ <TELL "The pills are virtually tasteless." CR>)
+ (<VERB? SMELL>
+ <TELL "The pills are odorless." CR>)
+ (<VERB? EAT>
+ <TELL "You must realize that you aren't sick." CR>)
+ (<VERB? EXAMINE>
+ <TELL "These are small, white pills." CR>)>>
+
+<ROUTINE MEDICINE-BOTTLE-F ()
+ <COND (<VERB? COUNT>
+ <TELL "It's hard to tell with the bottle closed." CR>)>>
+
+<ROUTINE ALLERGONE-F ()
+ <COND (<VERB? TASTE>
+ <TELL "The pills are bitter on the tongue." CR>)
+ (<VERB? SMELL>
+ <TELL "The pills are odorless." CR>)
+ (<VERB? EAT>
+ <TELL"The only allergy you seem to have is to work." CR>)
+ (<VERB? EXAMINE>
+ <TELL "These are tiny red pills." CR>)>>
+
+<ROUTINE EBULLION-F ()
+ <COND (<VERB? TASTE>
+ <TELL "The pills are quite bitter." CR>)
+ (<VERB? SMELL>
+ <TELL "The pills have a faint pungent aroma." CR>)
+ (<VERB? EAT>
+ <TELL
+"Are you depressed? Given your performance on this case, that isn't
+surprising. In any event, you shouldn't take other people's medicine!" CR>)
+ (<VERB? EXAMINE>
+ <TELL "These are little white pills." CR>)>>
+
+
+"This is the sequence which starts with accusing Dunbar of
+murder after having gotten the 'goods' on her, i.e. showing
+her the report about the pills.
+
+Basically, she runs around looking for Baxter and talks to him
+briefly. They agree to meet in the shed at a later time. There,
+they have a long and heated argument, which can be watched from
+the outside."
+
+<GLOBAL D-S-BAXTER-LOC <>>
+<GLOBAL DUNBAR-ACCUSED <>>
+
+<ROUTINE DUNBAR-SEQUENCE ("AUX" (BL <LOC ,BAXTER>))
+ <COND (,DUNBAR-ACCUSED <RFALSE>)>
+ <COND (<NOT <IN? ,DUNBAR .BL>>
+ <ESTABLISH-GOAL ,DUNBAR .BL T>)>
+ <SETG DUNBAR-ACCUSED T>
+ <SETG D-S-BAXTER-LOC .BL>
+ <ENABLE <QUEUE I-DUNBAR-SEQ -1>>>
+
+<GLOBAL DUNBAR-BAXTER-MEET <>>
+
+<ROUTINE I-DUNBAR-SEQ ("AUX" (BL <LOC ,BAXTER>))
+ <COND (<NOT <==? .BL ,D-S-BAXTER-LOC>>
+ <DUNBAR-SEQUENCE>
+ <RFALSE>)
+ (<==? <LOC ,DUNBAR> .BL>
+ <PUT <GET ,GOAL-TABLES ,BAXTER-C> ,GOAL-ENABLE <>>
+ <COND (<==? ,HERE .BL>
+ <TELL
+"Ms. Dunbar glances at Baxter and then at you." CR>)
+ (T
+ <SETG DUNBAR-BAXTER-MEET T>
+ <PUT <GET ,GOAL-TABLES ,BAXTER-C> ,GOAL-ENABLE T>
+ <QUEUE I-DUNBAR-SEQ 0>
+ <ENABLE <QUEUE I-DUNBAR-SEQ-2 5>>
+ <RFALSE>)>)>>
+
+<ROUTINE I-DUNBAR-SEQ-2 ()
+ <SETG DUNBAR-BAXTER-MEET <>>
+ <ESTABLISH-GOAL ,DUNBAR ,SHED-ROOM T>
+ <ENABLE <QUEUE I-DUNBAR-SEQ-D -1>>
+ <ENABLE <QUEUE I-DUNBAR-SEQ-3 10>>
+ <RFALSE>>
+
+<ROUTINE I-DUNBAR-SEQ-3 ()
+ <ESTABLISH-GOAL ,BAXTER ,NORTH-LAWN T>
+ <ENABLE <QUEUE I-DUNBAR-SEQ-B -1>>
+ <RFALSE>>
+
+<ROUTINE I-DUNBAR-SEQ-D ("AUX" GT)
+ <SET GT <GET ,GOAL-TABLES ,DUNBAR-C>>
+ <COND (<==? <LOC ,DUNBAR> ,SHED-ROOM>
+ <COND (<==? <LOC ,BAXTER> ,SHED-ROOM>
+ <ENABLE <QUEUE I-DUNBAR-SEQ-4 -1>>
+ <QUEUE I-DUNBAR-SEQ-D 0>)
+ (<==? ,HERE ,SHED-ROOM>
+ <COND (<PROB 50>
+ <TELL
+"Dunbar paces around the shed nervously. If she was looking for something,
+she would have found it by now." CR>)
+ (T
+ <TELL
+"Ms. Dunbar seems to be looking around for something." CR>)>
+ <RTRUE>)>
+ <RFALSE>)
+ (<AND <==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
+ <FOLLOWED? ,DUNBAR>>
+ <COND (<GET .GT ,GOAL-ENABLE>
+ <PUT .GT ,GOAL-ENABLE <>>)
+ (<PROB 28>
+ <TELL
+"Ms. Dunbar eyes you nervously." CR>
+ <RTRUE>)
+ (<PROB 50>
+ <TELL
+"Ms. Dunbar stares off toward the south." CR>
+ <RTRUE>)
+ (T
+ <TELL
+"Ms. Dunbar seems to be deep in thought." CR>
+ <RTRUE>)>
+ <COND (<AND <NOT ,STUB-DROPPED>
+ <==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>>
+ <TELL
+"Ms. Dunbar spots you and stops. She reaches into her pocket and pulls out a
+cigarette. As she does so, what appears to be a ticket stub falls out of her
+pocket and floats to the ground. She checks her pocket again, apparently for
+a match, but finds none and puts the cigarette back in her pocket." CR>
+ <MOVE ,STUB <LOC ,DUNBAR>>
+ <SETG STUB-DROPPED T>)
+ (<PROB 15>
+ <TELL
+"Ms. Dunbar glances around as she walks. She takes a quick glance in your
+direction, but it doesn't seem like she noticed you." CR>
+ <PUT .GT ,GOAL-ENABLE T>)
+ (<PROB 50>
+ <TELL
+"Ms. Dunbar looks around as she walks and does a brief double-take
+when she looks in your direction. She slows down and stops." CR>)
+ (T
+ <TELL
+"Ms. Dunbar, who has been looking from side to side as she goes,
+comes to a stop. She spins around, looking in all directions." CR>)>)
+ (T
+ <PUT .GT ,GOAL-ENABLE T>
+ <RFALSE>)>>
+
+<GLOBAL STUB-DROPPED <>>
+
+<ROUTINE I-DUNBAR-SEQ-B ()
+ <COND (<OR <==? <LOC ,BAXTER> ,NORTH-LAWN>
+ <==? <GETP ,HERE ,P?LINE> ,TOP-OF-THE-LINE-C>>
+ <QUEUE I-DUNBAR-SEQ-B 0>
+ <ESTABLISH-GOAL ,BAXTER ,SHED-ROOM T>
+ <ENABLE <QUEUE I-DUNBAR-SEQ-B-2 -1>>)>
+ <RFALSE>>
+
+<ROUTINE I-DUNBAR-SEQ-B-2 ("AUX" GT)
+ <SET GT <GET ,GOAL-TABLES ,BAXTER-C>>
+ <COND (<==? <LOC ,BAXTER> ,SHED-ROOM>
+ <QUEUE I-DUNBAR-SEQ-B-2 0>
+ <RFALSE>)
+ (<FOLLOWED? ,BAXTER>
+ <COND (<GET .GT ,GOAL-ENABLE>
+ <PUT .GT ,GOAL-ENABLE <>>
+ <RFALSE>)
+ (<PROB 50>
+ <TELL
+"Baxter draws a deep breath and looks about contentedly." CR>
+ <RTRUE>)
+ (T
+ <TELL
+"Baxter stares out over the lake." CR>
+ <RTRUE>)>
+ <COND (<PROB 50>
+ <TELL
+"Baxter walks slowly, but with determination. He looks around often, as
+if he were a prospective buyer of the property. He stops now, staring
+up at the sky." CR>)
+ (T
+ <TELL
+"Baxter stops, bends down, and ties his shoe.">
+ <COND (<PROB 30>
+ <TELL " As he finishes, he takes stands up,
+and stares at some distant trees." CR>)
+ (T
+ <TELL " He stands up and stares off to the
+south." CR>)>)>)
+ (T
+ <PUT .GT ,GOAL-ENABLE T>
+ <RFALSE>)>>
+
+<GLOBAL SECRET-MEETING 0>
+<GLOBAL MEETING-INTERRUPTED <>>
+
+<ROUTINE I-DUNBAR-SEQ-4 ()
+ <COND (<==? ,HERE ,SHED-ROOM>
+ <COND (<OR <L? ,SECRET-MEETING 2>
+ <G? ,SECRET-MEETING 5>>
+ <TELL
+"You seem to have walked in on some sort of get-together, although from the
+look on Ms. Dunbar's face, you are not the guest of honor. She is aghast, and
+she continually looks back and forth between Mr. Baxter and yourself." CR>)
+ (T
+ <TELL
+"As you enter the shed, Mr. Baxter and Ms. Dunbar, who were in the midst of a
+quiet but heated argument, stop at once. Ms. Dunbar is quite upset and
+clutches Mr. Baxter. Baxter, who has retained his composure throughout,
+attempts to comfort Dunbar. She pushes him away and runs out of the shed." CR>
+ <MOVE ,DUNBAR ,EAST-LAWN>
+ <PUT <GET ,WHERE-TABLES ,DUNBAR-C> 0 ,PRESENT-TIME>
+ <PUT <GET ,WHERE-TABLES 0> ,DUNBAR-C ,PRESENT-TIME>)>
+ <HEAD-FOR-CLIMAX>
+ <RTRUE>)
+ (<==? <LOC ,BAXTER> ,SHED-ROOM>
+ <COND (<G? <SETG SECRET-MEETING <+ ,SECRET-MEETING 1>> 5>
+ <HEAD-FOR-CLIMAX>)>
+ <RFALSE>)>>
+
+<ROUTINE FOLLOWED? (PERSON "AUX" (L <LOC .PERSON>))
+ <COND (<==? .L ,HERE> <RTRUE>)
+ (<==? ,HERE ,GUEST-ROOM> <RFALSE>)
+ (<NOT <==? <BAND <GETP .L ,P?CORRIDOR>
+ <GETP ,HERE ,P?CORRIDOR>> 0>>
+ <RTRUE>)
+ (T <RFALSE>)>>
+
+;"Ok, folks. We have just caused Dunbar to run into the house
+toward her room. It occurs to Baxter that she may well talk. He
+then plans to kill her using a similar plan to his original one,
+this time entering the house through the master bedroom. He
+shoots Dunbar at close range, leaves a forged suicide note, and
+runs outside. He then runs to the house, 'having heard the shot'."
+
+<ROUTINE HEAD-FOR-CLIMAX ()
+ <COND (<EQUAL? ,HERE ,EAST-LAWN ,EAST-SIDE ,EAST-OF-DOOR>
+ <TELL
+"Baxter and Dunbar both leave the shed, heading off in
+different directions." CR>)
+ (<==? ,HERE ,BEHIND-SHED>
+ <TELL
+"The voices stop and you hear sets of footsteps leaving the shed." CR>)>
+ <ESTABLISH-GOAL ,DUNBAR ,DUNBAR-ROOM T>
+ <ESTABLISH-GOAL ,BAXTER ,NORTH-LAWN T>
+ <ENABLE <QUEUE I-BAXTER-SEQ -1>>
+ <QUEUE I-DUNBAR-SEQ-4 0>
+ <SETG MEETING-INTERRUPTED ,SECRET-MEETING>
+ <SETG SECRET-MEETING 0>>
+
+<GLOBAL BAXTER-SEQ-LOC <>>
+<GLOBAL LADDER-FLAG-2 <>>
+<GLOBAL DUNBAR-DEAD <>>
+
+<ROUTINE I-BAXTER-SEQ ()
+ <COND (<==? ,BAXTER-SEQ-LOC ,MASTER-BEDROOM>
+ <COND (<AND <NOT <==? <BAND <GETP ,HERE ,P?CORRIDOR> 1> 1>>
+ <NOT <EQUAL? ,HERE ,STAIRS ,STAIR-BOTTOM
+ ,DUNBAR-ROOM>>>
+ <SETG BAXTER-SEQ-LOC ,BEDROOM-BALCONY>
+ <MOVE ,BAXTER ,BEDROOM-BALCONY>
+ <REMOVE ,DUNBAR>
+ <SETG DUNBAR-DEAD T>
+ <DISABLE <INT I-DUNBAR>>
+ <MOVE ,PISTOL ,DUNBAR-ROOM>
+ <MOVE ,SUICIDE-NOTE ,DUNBAR-ROOM>
+ <MOVE ,CORPSE ,DUNBAR-ROOM>
+ <QUEUE I-BAXTER-SEQ 0>
+ <ENABLE <QUEUE I-BAXTER-ESCAPE -1>>
+ <COND (<==? <GETP ,HERE ,P?LINE> ,TOP-OF-THE-LINE-C>
+ <SETG SHOT-FIRED T>
+ <TELL
+"You hear a pistol shot close by." CR>)
+ (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
+ <TELL
+"You hear what sounds like a pistol shot from inside the house." CR>)
+ (T
+ <TELL
+"From upstairs, you hear a single explosion like a pistol shot." CR>)>
+ <SHOT-FIRED-F>
+ <RTRUE>)>)
+ (<==? ,BAXTER-SEQ-LOC ,BEDROOM-BALCONY>
+ <COND (<AND <NOT <==? ,HERE ,MASTER-BEDROOM>>
+ <NOT <==? <LOC ,MRS-ROBNER> ,MASTER-BEDROOM>>>
+ <MOVE ,BAXTER ,MASTER-BEDROOM>
+ <SETG BAXTER-SEQ-LOC ,MASTER-BEDROOM>)>
+ <RFALSE>)
+ (<==? ,BAXTER-SEQ-LOC ,NORTH-LAWN>
+ <COND (<AND <IN? ,DUNBAR ,DUNBAR-ROOM>
+ <NOT <==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>>
+ <NOT <==? ,HERE ,BEDROOM-BALCONY>>>
+ <SETG LADDER-FLAG-2 T>
+ <SETG LADDER-FLAG <>>
+ <MOVE ,LADDER ,ORCHARD>
+ <FCLEAR ,LADDER ,NDESCBIT>
+ <FSET ,LADDER ,TOUCHBIT>
+ <MOVE ,BAXTER ,BEDROOM-BALCONY>
+ <SETG BAXTER-SEQ-LOC ,BEDROOM-BALCONY>)>
+ <RFALSE>)
+ (<IN? ,BAXTER ,NORTH-LAWN>
+ <SETG BAXTER-SEQ-LOC ,NORTH-LAWN>
+ <RFALSE>)>>
+
+<GLOBAL SHOT-FIRED <>>
+<GLOBAL BAXTER-SEEN <>>
+
+<ROUTINE I-BAXTER-ESCAPE ("AUX" (FLG <>))
+ <COND (,SHOT-FIRED
+ <SETG SHOT-FIRED <>>
+ <COND (<EQUAL? ,HERE ,CORRIDOR-4 ,CORRIDOR-3>
+ <TELL
+"As you enter the hallway, you catch a glimpse of someone running across the
+eastern end of the hallway from south to north." CR>
+ <SET FLG T>)
+ (<==? ,HERE ,MASTER-BEDROOM>
+ <TELL
+"As you walk into the bedroom, you see Baxter running past you to the balcony.
+He doesn't seem to have noticed you." CR>
+ <SET FLG T>
+ <SETG BAXTER-SEEN T>)
+ (<==? <BAND <GETP ,HERE ,P?CORRIDOR> 1> 1>
+ <TELL
+"As you enter the hallway, you see Baxter running from Dunbar's
+room across the hall to the master bedroom." CR>
+ <SET FLG T>
+ <SETG BAXTER-SEEN T>)>)>
+ <SETG BAXTER-SEQ-LOC ,BEDROOM-BALCONY>
+ <COND (<EQUAL? ,HERE ,ORCHARD ,EAST-LAWN ,NORTH-LAWN>
+ .FLG)
+ (T
+ <MOVE ,BAXTER ,IN-ORCHARD>
+ <SETG LADDER-FLAG-2 <>>
+ <ESTABLISH-GOAL ,BAXTER ,DUNBAR-ROOM T>
+ <QUEUE I-BAXTER-ESCAPE 0>
+ <SETG BAXTER-SEQ-LOC <>>
+ .FLG)>>
+
+<ROUTINE I-BAXTER-END-1 ()
+ <UNPRIORITIZE ,BAXTER>
+ <RFALSE>>
+
+<ROUTINE SHOT-FIRED-F ()
+ <ESTABLISH-GOAL ,MRS-ROBNER ,DUNBAR-ROOM T>
+ <ESTABLISH-GOAL ,ROURKE ,CORRIDOR-1 T>
+ <ESTABLISH-GOAL ,GEORGE ,DUNBAR-ROOM T>
+ <ENABLE <QUEUE I-SHOT -1>>>
+
+<GLOBAL SHOT-COUNT 0>
+
+<ROUTINE I-SHOT ("AUX" (FLG <>))
+ <COND (<IN? ,MRS-ROBNER ,DUNBAR-ROOM>
+ <COND (<==? ,HERE ,DUNBAR-ROOM>
+ <TELL
+"Mrs. Robner, standing quietly by the body, starts sobbing and
+leaves the room." CR>)>
+ <UNPRIORITIZE ,MRS-ROBNER>
+ <MOVE ,MRS-ROBNER ,CORRIDOR-1>
+ <SET FLG T>)
+ (<IN? ,GEORGE ,DUNBAR-ROOM>
+ <COND (<==? ,HERE ,DUNBAR-ROOM>
+ <TELL
+"George says something like \"My God\" under his breath." CR>)>
+ <UNPRIORITIZE ,GEORGE>)
+ (<IN? ,ROURKE ,CORRIDOR-1>
+ <COND (<==? ,HERE ,CORRIDOR-1>
+ <TELL
+"Mrs. Rourke peeks in the door and looks sick. \"I'm leaving this
+house,\" she says, and pops out again." CR>)>
+ <MOVE ,ROURKE ,STAIR-TOP>
+ <ESTABLISH-GOAL ,ROURKE ,ROURKE-ROOM T>
+ <SET FLG T>)>
+ <COND (<G? <SETG SHOT-COUNT <+ ,SHOT-COUNT 1>> 20>
+ <QUEUE I-SHOT 0>)>
+ .FLG>
+
+<ROUTINE PISTOL-F ()
+ <COND (<VERB? EXAMINE>
+ <COND (<FSET? ,PISTOL ,TOUCHBIT>
+ <TELL
+"The pistol is bloody and has clearly been used recently." CR>)
+ (T
+ <TELL
+"The pistol has bloodstains on it. It has recently been fired." CR>)>)>>
+
+<ROUTINE CORPSE-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The corpse is most gruesome. Ms. Dunbar was apparently shot in the
+head at close range, leaving a most distasteful mess." CR>)
+ (<VERB? RUB>
+ <TELL
+"The body is still quite warm.">)>>
+
+<ROUTINE GLOBAL-PEN-F ()
+ <COND (<VERB? FIND>
+ <COND (<==? ,HERE ,DUNBAR-ROOM>
+ <TELL
+"It doesn't seem to be around here." CR>)
+ (T
+ <TELL
+"There isn't one here." CR>)>)
+ (<VERB? ASK-FOR ASK-ABOUT> <RFALSE>)
+ (T <TELL "There is no pen to be seen here." CR>)>>
+
+<ROUTINE PEN-F ()
+ <COND (<VERB? WRITE>
+ <TELL
+"The pen makes a mark in a fine blue line." CR>)>>
+
+<GLOBAL SHOW-WAIT 0>
+<GLOBAL NO-SHOW <>>
+
+<ROUTINE I-SHOW-HOLE ()
+ <COND (<G? <SETG SHOW-WAIT <+ ,SHOW-WAIT 1>> 4>
+ <SETG NO-SHOW T>
+ <QUEUE I-SHOW-HOLE 0>
+ <RFALSE>)
+ (<==? ,HERE ,IN-ROSES>
+ <COND (<NOT <==? ,SHOW-WAIT 1>>
+ <TELL
+"McNabb gives you a sideways glance. \"What kept you?\" he asks." CR>)>
+ <SHOW-HOLE>
+ <QUEUE I-SHOW-HOLE 0>)>>
+
+<ROUTINE TODAY-F ()
+ <COND (<VERB? WHAT>
+ <TELL "Today is Friday, July 10." CR>)>>
+
+<ROUTINE GLOBAL-WARRANT-F ()
+ <COND (<VERB? TAKE FIND>
+ <TELL
+"Knowing the courts, it would take weeks to get one." CR>)>>
+
+<ROUTINE CORRIDOR-WINDOW-F ()
+ <COND (<VERB? LOOK-INSIDE>
+ <TELL "You can see the west lawn through the window." CR>)>>
+
+<ROUTINE I-BAXTER-ARRIVE ()
+ <MOVE ,BAXTER ,SOUTH-LAWN>
+ <COND (<==? ,HERE ,SOUTH-LAWN>
+ <TELL
+"A limosine pulls up the drive. Mr. Baxter exits and the limo pulls away.
+Baxter takes a deep breath and looks around." CR>)
+ (<OR <EQUAL? ,HERE ,FRONT-PATH ,EAST-LAWN ,WEST-LAWN>
+ <EQUAL? ,HERE ,EAST-OF-DOOR ,WEST-OF-DOOR>>
+ <TELL
+"A car pulls up the drive to the south, and Mr. Baxter steps out onto
+the lawn." CR>)>>
+
+<ROUTINE I-COATES-ARRIVE ()
+ <MOVE ,COATES ,SOUTH-LAWN>
+ <ESTABLISH-GOAL ,COATES ,LIVING-ROOM T>
+ <COND (<==? ,HERE ,SOUTH-LAWN>
+ <TELL
+"A large automobile pulls up the drive. Mr. Coates, the lawyer, steps out of
+the car. \"Oh, hello! You must be the Inspector. I'll be reading the will at
+noon, you know. Don't be late!\" he says." CR>)
+ (<OR <EQUAL? ,HERE ,FRONT-PATH ,EAST-LAWN ,WEST-LAWN>
+ <EQUAL? ,HERE ,EAST-OF-DOOR ,WEST-OF-DOOR>>
+ <TELL
+"A car pulls up the drive to the south, and Mr. Coates steps out onto
+the lawn." CR>)>>
+
+<ROUTINE TRASH-F ()
+ <COND (<VERB? TAKE READ EXAMINE>
+ <FSET ,TRASH ,TOUCHBIT>
+ <FSET ,TRASH-BASKET ,TOUCHBIT>
+ <RFALSE>)>>
+
+<ROUTINE GLOBAL-DUFFY-F ()
+ <COND (<VERB? FIND>
+ <TELL
+"Like a lurking grue in the dark places of the earth, Sergeant Duffy is always
+near the scene of a crime. If you want something analyzed, he will arrive in
+an instant to take the evidence to the lab. When the results are available,
+he rushes them back to you. If you wish to arrest someone, Duffy will be there
+with the handcuffs. A more dedicated civil servant cannot be found." CR>)>>
+
+<ROUTINE L-RAILING-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The railing is made of a sturdy metal and helps prevent nasty falls. There is
+a small area of paint scraped off the outside edge." CR>)>>
+
+<ROUTINE B-RAILING-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"This sturdy railing protects people on the balcony from being impaled upon
+the exotic plants below. The railing itself is uniformly painted." CR>)>>
+
+<ROUTINE L-BALCONY-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The balcony itself is made of wood, except the railing which is metal. The
+balcony is in good repair, but a few spots of dried mud soil the floor." CR>)>>
+
+<ROUTINE B-BALCONY-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The balcony is wooden, excepting the metal railing surrounding it.
+It is in good repair and is quite clean." CR>)>>
+
+<ROUTINE GLOBAL-ROOM-F ("AUX" TIM)
+ <COND (<VERB? KNOCK>
+ <COND (<==? ,HERE ,UPSTAIRS-CLOSET>
+ <TELL
+"The wall to the north here sounds unusually hollow." CR>)
+ (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
+ <TELL "You're acting very strangely!" CR>)
+ (T
+ <TELL
+"Knocking on the walls reveals nothing unusual." CR>)>)
+ (<AND <VERB? LOOK-INSIDE>
+ <==? ,HERE ,CORRIDOR-2>>
+ <TELL "From here, it looks quite ordinary." 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
+"An exhaustive search of even a single room would take hours. A more
+productive approach would be to examine or search various items of interest
+within the room. A cursory search would take on the order of " N .TIM "
+minutes, but it wouldn't reveal much. Would you like to do it anyway? (Y/N)">
+ <COND (<YES?>
+ <COND (<INT-WAIT .TIM>
+ <TELL
+"Your brief search revealed nothing that was not obvious before." CR>)
+ (T
+ <TELL
+"You didn't get a chance to finish looking over the room." CR>)>)
+ (T <TELL "Ok." CR>)>)>>
+
+<ROUTINE COATES-F ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,M-OBJDESC>
+ <COND (<IN-MOTION? ,COATES> T)
+ (T <TELL "Mr. Coates is here." CR>)>
+ <CARRY-CHECK ,COATES>)
+ (<==? ,WINNER ,COATES>
+ <COND (<VERB? FIND> <RFALSE>)
+ (<COM-CHECK ,COATES> <RTRUE>)
+ (T <TELL <PICK-ONE ,WHY-ME> CR>)>)
+ (<VERB? PHONE>
+ <TELL D ,PRSO>
+ <COND (<G? ,PRESENT-TIME 710>
+ <TELL
+"'s office phone rings. His secretary answers and informs you that
+he will be out for the rest of the day." CR>)
+ (<G? ,PRESENT-TIME 650>
+ <TELL
+"'s secretary answers and informs you that Mr. Coates is on his way
+to the Robner estate." CR>)
+ (T
+ <TELL
+"'s secretary informs you that Mr. Coates is in a very important
+meeting and can't be disturbed. She reminds you that he
+will be at the Robner estate before noon." CR>)>)
+ (<AND <VERB? ASK-ABOUT> <==? ,PRSO ,COATES>>
+ <COND (<OR <EQUAL? ,PRSI ,GLOBAL-OLD-WILL ,GLOBAL-NEW-WILL>
+ <EQUAL? ,PRSI ,GLOBAL-FOCUS ,GLOBAL-OMNIDYNE>>
+ <TELL
+"\"I am not at liberty to discuss Mr. Robner's legal matters. That is
+privileged information between attorney and client.\"" CR>)
+ (T
+ <TELL
+"\"I am sorry, but I can't help you there.\"" CR>)>)>>
+
+<ROUTINE LETTER-F ()
+ <COND (<VERB? TAKE>
+ <FSET ,ENVELOPE ,TOUCHBIT>
+ <RFALSE>)>>
+
+<ROUTINE OBJECT-PAIR-F ()
+ <COND (<VERB? ARREST>
+ <COND (<L? ,PRESENT-TIME 600>
+ <TELL
+"It is rather early in the case to be making hasty judgments." CR>)
+ (<OR <AND <EQUAL? <1 ,P-PRSO> ,BAXTER ,GLOBAL-BAXTER>
+ <EQUAL? <2 ,P-PRSO> ,DUNBAR ,GLOBAL-DUNBAR>>
+ <AND <EQUAL? <1 ,P-PRSO> ,DUNBAR ,GLOBAL-DUNBAR>
+ <EQUAL? <2 ,P-PRSO> ,BAXTER ,GLOBAL-BAXTER>>>
+ <COND (,CORPSE-SEEN
+ <TELL "Ms. Dunbar is dead!" CR>)
+ (,DUNBAR-DEAD
+ <TELL
+"Sergeant Duffy rushes into view. \"Ms. Dunbar is dead! She has
+shot herself in her room! Come quickly!\" He dashes off." CR>)
+ (<AND <FSET? ,BAXTER-PAPERS ,TOUCHBIT>
+ <FSET? ,LAB-REPORT ,TOUCHBIT>
+ ,NOTE-READ
+ ,STUB-D>
+ <CRLF>
+ <END-HEADER "September 5">
+ <TELL
+"Congratulations on your superb handling of the Robner case. As you have
+probably heard, a jury convicted Mr. Baxter and Ms. Dunbar today of the
+murder of Mr. Robner. Thanks to you, the murderers will be behind bars,
+possibly for the rest of their lives. Thanks for a job brilliantly done.
+Which reminds me of another fascinating case I would like to assign you to...|
+|
+Coming soon: Another INTERLOGIC Mystery from Infocom|
+" CR>
+ <EPILOGUE>)
+ (<L? ,PRESENT-TIME 700>
+ <TELL
+"You realize the arrest would be a trifle premature, since you're not even
+sure that a murder was committed." CR>)
+ (<NOT <FSET? ,LAB-REPORT ,TOUCHBIT>>
+ <CRLF>
+ <END-HEADER "August 19">
+ <TELL
+"The District Attorney has decided not to seek an indictment in the Robner
+case. He points out that it has never been proven that a murder was committed,
+despite the deep suspicions to the contrary. Thanks for your help on this
+case. It's too bad we couldn't find out more about the circumstances
+surrounding the death of Mr. Robner.|
+|">)
+ (<NOT <FSET? ,BAXTER-PAPERS ,TOUCHBIT>>
+ <CRLF>
+ <END-HEADER "September 2">
+ <TELL
+"A grand jury looking into the death of Mr. Robner has decided not to indict
+the accused. They felt that the lack of motive as well as the contorted
+hypothesis involving the actual mechanism of the murder of Mr. Robner was not
+convincing. Personally, I think you're on the right track, but I must admit
+that the evidence is meager. Thank you for helping in the case.|
+|">)
+ (<NOT ,NOTE-READ>
+ <CRLF>
+ <END-HEADER "October 4">
+ <TELL
+"The jury in the Robner case has declined to convict Mr. Baxter and Ms.
+Dunbar. Appearances indicate that the verdict was difficult, and that several
+jury members were convinced that the two were guilty. However, no evidence
+was presented directly relating the Focus case with the murder of Mr. Robner.
+This left the question of motive unresolved. I appreciate your efforts in the
+case and am sorry to report this outcome to you.|
+|">)
+ (T
+ <CRLF>
+ <END-HEADER "October 6">
+ <TELL
+"The jury in the Robner case has declined to convict Mr. Baxter and Ms. Dunbar.
+Although most of the jury was convinced of their guilt, it seems that one or
+two felt there was some reasonable doubt about the proposed conspiracy. Their
+main concern was the lack of evidence that Baxter was near the grounds on the
+night of the murder. His alibi of having been to the symphony was confirmed by
+several people. Although this doesn't mean that he didn't go back to the
+Robner estate later, it nevertheless was not convincing. Thank you for your
+excellent efforts. It is sad to think that we may have let the murderers slip
+between our fingers.|
+|">)>
+ <CASE-OVER>)
+ (<OR <AND <EQUAL? <1 ,P-PRSO> ,BAXTER ,GLOBAL-BAXTER>
+ <EQUAL? <2 ,P-PRSO> ,GEORGE ,GLOBAL-GEORGE>>
+ <AND <EQUAL? <1 ,P-PRSO> ,GEORGE ,GLOBAL-GEORGE>
+ <EQUAL? <2 ,P-PRSO> ,BAXTER ,GLOBAL-BAXTER>>>
+ <COND (<NOT <FSET? ,LAB-REPORT ,TOUCHBIT>>
+ <TELL
+"You realize that there is no evidence that a murder has been committed
+and decide not to go ahead with the arrest." CR>)
+ (<AND <OR ,NEW-WILL-SEEN ,GEORGE-RUN>
+ <FSET? ,BAXTER-PAPERS ,TOUCHBIT>
+ ,NOTE-READ>
+ <CRLF>
+ <END-HEADER "November 12">
+ <TELL "
+The district attorney, after extensive interrogation of George Robner and Mr.
+Baxter, has declined to seek an indictment against them. He agrees that there
+has been foul play in the death of Mr. Robner and that both suspects have
+motives for the crime. However, no coherent theory could be proposed which
+involved the two of them conspiring to murder Mr. Robner. On the other hand,
+it seems unlikely that either of them alone could have committed the crime.
+I am sorry that your work has gone for naught.|
+|">
+ <CASE-OVER>)
+ (T
+ <CRLF>
+ <END-HEADER "August 1">
+ <TELL
+"The district attorney has declined to indict George Robner and Mr. Baxter
+in the death of Marshall Robner, noting that there is no link between the
+accused, except hatred, and that all of the evidence is circumstantial.
+I wish you luck on your future cases.|
+|">
+ <CASE-OVER>)>)
+ (T
+ <TELL
+"You realize that this arrest is quite farfetched and would result
+only in your humiliation." CR>)>)>>
+
+<GLOBAL CONTRADICTION <>>
+
+<ROUTINE EPILOGUE ()
+ <CRLF>
+ <TELL
+"You have solved the case! If you would like, you may see the author's summary
+of the story. We would advise you to come up with your own first! Would you
+like to see the author's summary? (Y/N)">
+ <COND (<YES?>
+ <CRLF>
+ <TELL
+"Mr. Robner's work was his life, as pointed out by a number of the principals.
+George knew that his father had lost control of the company, and a story in
+the newspaper indicated that Baxter intended to sell the company to a
+multi-national conglomerate, presumably to advance his career. Baxter admitted
+to the merger plans, but indicated that Mr. Robner was in complete agreement.
+This is contrary to what George and Mrs. Robner said. The note pad found in
+the library was Robner's last, desperate attempt to save the company, in which
+Robner threatened to expose Baxter's involvement in the Focus scandal. Baxter
+denied getting the note, but it was not in the trash. The papers detailing
+Baxter's criminality in the scandal were kept locked in a safe in a hidden
+closet near the library. Only George and Marshall Robner knew the whereabouts
+of the safe.|
+ Baxter planned to murder his partner, aided by the fact that Robner was
+known to be depressed, even suicidal. He enlisted the help of his lover,
+Dunbar, one of whose medicines was found to interact fatally with the pills
+Robner was taking. The relationship of Baxter and Dunbar was kept quiet,
+although Mrs. Rourke had an inkling of it. After the concert in Hartford which
+both Baxter and Dunbar attended, they returned to the Robner estate. Dunbar
+placed some LoBlo in Robner's tea. After Robner died, Baxter used the ladder
+from the shed to enter the library and exchange the incriminating cup for a
+clean one (counting the china in the kitchen reveals that a cup is missing).
+Coming down the ladder, Baxter presumably dropped the cup and inadvertently
+left one piece on the ground in the rose garden, near the ladder holes that
+McNabb found while tending his roses.|
+|">)>
+ <QUIT>>
+
+<ROUTINE COM-CHECK (PERSON)
+ <COND (<VERB? WHAT>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK-ABOUT .PERSON ,PRSO>
+ <RTRUE>)
+ (<VERB? EXAMINE>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?SHOW .PERSON ,PRSO>
+ <RTRUE>)
+ (<AND <VERB? TELL-ME> <==? ,PRSO ,PLAYER>>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK-ABOUT .PERSON ,PRSI>
+ <RTRUE>)
+ (<AND <VERB? SHOW> <==? ,PRSO ,PLAYER>>
+ <TELL "\"I'm sure you can find it, Inspector.\"" CR>
+ <RTRUE>)
+ (<AND <VERB? FOLLOW> <==? ,PRSO ,PLAYER>>
+ <TELL "\"I would rather not.\"" CR>
+ <RTRUE>)>>
+
+<ROUTINE PORTRAITS-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"There are five portraits: two on each side of and one above the bay window.
+The fading portraits are of members of the Phillips family, among the oldest
+in New England." CR>)
+ (<VERB? TAKE> <NO-TOUCH>)>>
+
+<ROUTINE LR-CABINETS-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The cabinets are beautifully handworked walnut and mahogany." CR>)>>
+
+<ROUTINE SEURAT-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The painting by Seurat is a cheerful design which suits the bright decor of
+the dining room. It must be worth a fortune." CR>)
+ (<VERB? TAKE> <NO-TOUCH>)>>
+
+<ROUTINE PAINTINGS-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The paintings are by various artists. They are brightly colored (but not
+overly loud) works of cheerful outdoor scenes and still-lifes. They give the
+room a light and pleasant feel." CR>)
+ (<VERB? TAKE> <NO-TOUCH>)>>
+
+<ROUTINE APPLIANCE-F ()
+ <COND (<VERB? TAKE USE>
+ <TELL
+"The appliances here are useful in preparing meals, cleaning dishes, and the
+like. It is unlikely that Mrs. Rourke would like you using them." CR>)>>
+
+<ROUTINE K-CABINETS-F () <>>
+
+<ROUTINE SILVERWARE-F ()
+ <COND (<VERB? TAKE>
+ <TELL
+"Although the set would make a fine addition to your home, you resist the
+temptation. You would never get away with it anyway, as Mrs. Robner will no
+doubt count the silverware upon your departure." CR>)
+ (<VERB? COUNT>
+ <TELL "There are 16 complete sets of silver." CR>)
+ (<VERB? EXAMINE>
+ <TELL "The silver is of the finest quality and design." CR>)>>
+
+<ROUTINE GLASSES-F ()
+ <COND (<VERB? COUNT> <TELL "There are at least two dozen." CR>)
+ (<VERB? TAKE> <NO-TOUCH>)>>
+
+<ROUTINE NO-TOUCH ()
+ <TELL
+"You would be an impolite guest to fool with these things without cause." CR>>
+
+<ROUTINE FOODS-F ()
+ <COND (<VERB? EAT>
+ <TELL
+"Although manners are not taught at the Academy, surely your mother must have
+given you some sense of proper behavior." CR>)>>
+
+<ROUTINE FRUIT-TREES-F ()
+ <COND (<VERB? PICK EAT TAKE>
+ <TELL
+"The fruits are not abundant, and those within reach are far from ripe." CR>)>>
+
+<ROUTINE BERRY-BUSH-F ()
+ <COND (<VERB? PICK EAT TAKE>
+ <TELL
+"You pick a few berries and pop them into your mouth. Delicious!" CR>)>>
+
+<ROUTINE BATHROOM-MIRROR-F ()
+ <COND (<VERB? MUNG>
+ <TELL
+"Don't you know it's bad luck to break mirrors?" CR>)
+ (<VERB? LOOK-INSIDE>
+ <TELL
+"A weary Police Inspector looks back at you, with
+a look that seems to be saying \"Look what the cat dragged in.\"" CR>)>>
+
+<ROUTINE TREE-TOPS-F ()
+ <TELL "You can't reach the tree tops from here." CR>>
+
+<GLOBAL DRUNK-FLAG <>>
+
+<ROUTINE LIQUOR-F ()
+ <COND (<VERB? DRINK>
+ <COND (,DRUNK-FLAG
+ <TELL
+"It's one thing to take a bracer on occasion, but you must resist
+the temptation to indulge too often." CR>)
+ (T
+ <TELL
+"You take a small swig of the golden fluid, which burns as it goes
+down." CR>
+ <SETG DRUNK-FLAG T>)>)>>
+
+<GLOBAL STEREO-ON <>>
+<GLOBAL TUNE-ON <>>
+
+<ROUTINE STEREO-F ()
+ <COND (<VERB? LAMP-ON>
+ <TELL
+"The stereo is now on." CR>
+ <SETG STEREO-ON T>)
+ (<VERB? LAMP-OFF>
+ <COND (<AND ,TUNE-ON <IN? ,GEORGE ,HERE>>
+ <TELL
+"George turns toward you in disgust as you turn off the " ,TUNE-ON "." CR>)
+ (T <TELL "The stereo is now off." CR>)>
+ <SETG STEREO-ON <>>
+ <SETG TUNE-ON <>>
+ <RTRUE>)
+ (<VERB? TURN-UP>
+ <COND (,TUNE-ON
+ <TELL
+"The " ,TUNE-ON " is already quite loud. Any louder would probably
+disturb the rest of the house." CR>)
+ (T <TELL "It's not on!" CR>)>)
+ (<VERB? TURN-DOWN>
+ <COND (,TUNE-ON
+ <COND (<IN? ,GEORGE ,HERE>
+ <TELL
+"George stops you from turning down the volume. He is practically
+addicted to the " ,TUNE-ON "." CR>)
+ (T <TELL "You can't." CR>)>)
+ (T <TELL "It's not on!" CR>)>)
+ (<VERB? LISTEN>
+ <COND (,TUNE-ON
+ <TELL
+"You can hardly avoid it." CR>)
+ (T
+ <TELL
+"Nothing's playing." CR>)>)>>
+
+<ROUTINE RECORDS-F ()
+ <COND (<VERB? PLAY LISTEN>
+ <TELL
+"You pick a record at random and start it playing. It is a ">
+ <SETG TUNE-ON <PICK-ONE ,RECORD-TABLE>>
+ <TELL ,TUNE-ON "." CR>
+ <ENABLE <QUEUE I-TUNE-OFF 20>>)
+ (<VERB? EXAMINE>
+ <TELL
+"This is a large collection, with many different types of music represented.
+George is evidently not very particular when it comes to music." CR>)>>
+
+<ROUTINE TAPES-F ()
+ <COND (<VERB? PLAY LISTEN>
+ <TELL
+"You pick one at random and start it up. What you hear is a ">
+ <SETG TUNE-ON <PICK-ONE ,TAPE-TABLE>>
+ <ENABLE <QUEUE I-TUNE-OFF 30>>
+ <TELL ,TUNE-ON "." CR>)
+ (<VERB? EXAMINE>
+ <TELL
+"George's collection of tapes is large and quite odd in its variety of
+music." CR>)>>
+
+<GLOBAL RECORD-TABLE
+ <LTABLE "Hungarian Rhapsody"
+ "march by Sir Edward Elgar"
+ "chorus of African tribal music"
+ "Hebrew prayer service"
+ "Pretenders concert"
+ "cacophonous electronic jumble"
+ "bluegrass tune">>
+
+<GLOBAL TAPE-TABLE
+ <LTABLE "Wagnerian opera"
+ "New Orleans jazz band"
+ "Bulgarian shepherdess song"
+ "Navajo night chant"
+ "simulated rain shower"
+ "risque Russian drinking song">>
+
+<ROUTINE I-TUNE-OFF ("AUX" TBL)
+ <COND (<==? ,HERE ,GEORGE-ROOM>
+ <TELL
+"The " ,TUNE-ON " has ended (and not soon enough)." CR>
+ <COND (<IN? ,GEORGE ,HERE>
+ <TELL
+"George walks over to his stereo and returns the music to its
+proper place. He then chooses a ">
+ <COND (<PROB 50>
+ <TELL "record">
+ <SET TBL ,RECORD-TABLE>)
+ (T
+ <TELL "tape">
+ <SET TBL ,TAPE-TABLE>)>
+ <TELL " from his large collection
+and starts it up. Dear Lord! It's a ">
+ <SETG TUNE-ON <PICK-ONE .TBL>>
+ <TELL ,TUNE-ON "." CR>
+ <ENABLE <QUEUE I-TUNE-OFF 25>>)>
+ <RTRUE>)
+ (<IN? ,GEORGE ,GEORGE-ROOM>
+ <SETG TUNE-ON <PICK-ONE ,TAPE-TABLE>>
+ <ENABLE <QUEUE I-TUNE-OFF 35>>
+ <RFALSE>)>>
+
+<ROUTINE CLOSET-STUFF-F ()
+ <COND (<VERB? TAKE MOVE USE>
+ <TELL
+"You have no need for them." CR>)
+ (<VERB? SEARCH EXAMINE>
+ <TELL
+"You go through the" PRSO " and find nothing of interest." CR>)>>
+
+<ROUTINE LIBRARY-CARPET-F ()
+ <COND (<VERB? LOOK-UNDER>
+ <TELL
+"The carpeting is wall-to-wall so you can't look under it." CR>)
+ (<VERB? EXAMINE>
+ <TELL
+"The carpet is an expensive affair, and quite clean, except for
+a few small areas of dried mud in the vicinity of the desk.
+There are no other stains or markings that you can see." CR>
+ <FCLEAR ,MUD-SPOT ,INVISIBLE>)>>
+
+;"Handler for both MURDER and SUICIDE"
+
+<ROUTINE GLOBAL-MURDER-F ("AUX" STR)
+ <COND (<VERB? ASK-ABOUT>
+ <COND (<==? ,PRSI ,GLOBAL-MURDER>
+ <COND (<==? <SET STR
+ <GET ,MURDER-TABLE
+ <GETP ,PRSO ,P?CHARACTER>>> 0>
+ <RFALSE>)
+ (T <TELL .STR CR>)>)
+ (T
+ <TELL
+"\"I told everything I know about it to the other detectives.\"" CR>)>)>>
+
+<GLOBAL MURDER-TABLE
+ <TABLE 0
+ 0
+"\"Murder? My dear inspector, I believe you are reading too many bad detective
+stories. It's clear that he committed suicide.\""
+"Ms. Dunbar turns toward you, looking quite confused. \"Murder? But...but how
+do you know it was murder? I'm sure...\" She stops short, looking frightened."
+"\"My father killed himself, as everyone knows. Please leave me alone.\""
+"\"That's odd that you should say murder. Surely you don't suspect foul play,
+Inspector. My husband was devoted to his business, and its decline led him to
+take his life. The whole affair is tragic enough without your melodramatic
+insinuations.\""
+"\"Was it a murder, then?\" She bounces with excitement. \"In the book I've
+been reading, the jealous wife did it, but I don't know about this. A whole
+batch of suspects, this group here. What do you know? A murder. Here!\" Her
+enjoyment is barely concealed."
+ 0>>
+
+<ROUTINE GUEST-WINDOW-F ()
+ <COND (<VERB? LOOK-INSIDE>
+ <TELL
+"From here you have a good view of the east lawn, a shed, and the
+lake in the background." CR>
+ <PUTP ,GUEST-ROOM ,P?CORRIDOR 512>
+ <CORRIDOR-LOOK>
+ <ENABLE <QUEUE I-WINDOW-LOOK 2>>
+ <RTRUE>)
+ (<VERB? OPEN>
+ <TELL "This window cannot be opened." CR>)>>
+
+<ROUTINE I-WINDOW-LOOK ()
+ <PUTP ,GUEST-ROOM ,P?CORRIDOR 0>
+ <RFALSE>>
+
+<ROUTINE I-WILL-MISSED ()
+ <COND (<IN? ,MRS-ROBNER ,HERE>
+ <TELL
+"Mrs. Robner turns to you. \"I don't understand why you missed the will
+reading. You seem so interested in everything else that goes on around
+here.\"" CR>
+ <QUEUE I-WILL-MISSED 0>)
+ (<IN? ,COATES ,HERE>
+ <TELL
+"Mr. Coates says, in passing, \"To tell you the truth, Inspector, my
+suspicions about this case are not quite allayed. I wish you had been
+at the will reading. Good day.\"" CR>
+ <QUEUE I-WILL-MISSED 0>)>>
+
+<ROUTINE S-SHELVES-F ()
+ <COND (<VERB? EXAMINE>
+ <TELL
+"The shelves contain various garden tools." CR>)>>
+
+<ROUTINE END-HEADER (STR)
+ <TELL "Text of a letter from Police Commissioner Klutz dated ">
+ <TELL .STR>
+ <TELL ":|
+|
+Dear Inspector,|
+| ">>
+
+<ROUTINE GLOBAL-HERE-F ("AUX" (FLG <>) F)
+ <COND (<VERB? WHAT ASK-ABOUT>
+ <SET F <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<NOT .F> <RETURN>)
+ (<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 BALCONY-DOOR-F ()
+ <COND (<VERB? HIDE-BEHIND>
+ <COND (<NOT <FSET? ,PRSO ,OPENBIT>>
+ <TELL "You open the balcony door carefully." CR>
+ <FSET ,PRSO ,OPENBIT>)>
+ <COND (<==? ,HERE ,LIBRARY>
+ <GOTO ,LIBRARY-BALCONY>)
+ (<==? ,HERE ,LIBRARY-BALCONY>
+ <GOTO ,LIBRARY>)
+ (<==? ,HERE ,MASTER-BEDROOM>
+ <GOTO ,BEDROOM-BALCONY>)
+ (T <GOTO ,MASTER-BEDROOM>)>
+ <RTRUE>)
+ (<VERB? LOOK-INSIDE>
+ <COND (<EQUAL? ,HERE ,MASTER-BEDROOM ,LIBRARY>
+ <TELL
+"You can see the balcony, but not much beyond." CR>)
+ (<EQUAL? ,HERE ,LIBRARY-BALCONY>
+ <TELL
+"You can see into the library from here." CR>)
+ (T <TELL "You can see the bedroom from here." CR>)>)>>
+
+<ROUTINE GLOBAL-RED-HERRINGS-F ()
+ <COND (<IN? ,GEORGE ,DINING-ROOM>
+ <COND (<VERB? EAT TAKE MOVE>
+ <TELL
+"You reach for the juicy herrings, but George forces you away. He
+is a killer where herrings are concerned." CR>)
+ (<VERB? FIND>
+ <TELL
+"There are more in this room than elsewhere." CR>)>)
+ (<VERB? FIND>
+ <TELL "They're all around you." CR>)
+ (<VERB? WHAT>
+ <TELL "That would be telling." CR>)>>
+
+<ROUTINE LIBRARY-DESK-F ()
+ <COND (<VERB? LOOK-INSIDE>
+ <TELL "There's nothing of interest in the desk." CR>)>>
+
+<ROUTINE RECURSIVE-BOOK-F ()
+ <COND (<AND <VERB? ASK-FOR> <==? ,PRSO ,BAXTER>>
+ <FCLEAR ,PRSI ,NDESCBIT>
+ <RFALSE>)
+ (<AND <VERB? TAKE> <IN? ,RECURSIVE-BOOK ,BAXTER>>
+ <FCLEAR ,PRSO ,NDESCBIT>
+ <RFALSE>)
+ (<VERB? EXAMINE>
+ <TELL
+"This is a novelization of DEADLINE, a classic work of computer fiction." CR>)
+ (<VERB? READ OPEN>
+ <TELL
+"The book is a novelization of DEADLINE. You start to read it, and it seems
+oddly familiar, as if you had lived it." CR>)>>
+
+<ROUTINE GLOBAL-ENDING-F ()
+ <COND (<IN? ,RECURSIVE-BOOK ,PLAYER>
+ <COND (<VERB? READ WHAT TURN>
+ <TELL
+"You thumb to the last page and start to read the ending, in which the
+protagonist reads the plot of the story and kills himself in disgust.
+Disgustedly, you reach into your pocket, remove a gun, and end your life." CR>
+ <QUIT>)>)
+ (<VERB? WHAT> <TELL "That's up to you!" CR>)
+ (T <TELL "You don't have the book that tells the ending." CR>)>>
+
+<ROUTINE CASE-OVER ()
+ <CRLF>
+ <CRLF>
+ <TELL
+"The case has ended. Would you like to start your investigation over
+from scratch? (Y/N)">
+ <COND (<YES?> <RESTART>)
+ (T <QUIT>)>>
+
+<ROUTINE SAFE-F ()
+ <COND (<AND <VERB? OPEN> <NOT <FSET? ,SAFE ,OPENBIT>>>
+ <TELL "The safe is locked." CR>)
+ (<AND <VERB? CLOSE LOCK> <FSET? ,SAFE ,OPENBIT>>
+ <TELL "The safe closes and locks." CR>
+ <FCLEAR ,SAFE ,OPENBIT>)
+ (<VERB? LOCK>
+ <TELL "It already is." CR>)
+ (<VERB? UNLOCK>
+ <TELL "You don't know the combination." CR>)
+ (<VERB? LOOK-INSIDE EXAMINE>
+ <FCLEAR ,BAXTER-PAPERS ,INVISIBLE>
+ <RFALSE>)>>
+
+<ROUTINE SUICIDE-NOTE-F ()
+ <COND (<VERB? ANALYZE>
+ <TELL
+"The handwriting is very shaky and would be impossible to compare with samples
+on file. The blood makes the finding of fingerprints impossible." CR>)>>
+
+<ROUTINE GLOBAL-MR-ROBNER-F ()
+ <COND (<VERB? FOLLOW>
+ <TELL "Is this what they call a death wish?" CR>)
+ (<VERB? CALL>
+ <TELL "You are, for the moment, not with him." CR>)>>
+
+<ROUTINE RANDOM-MEAL-F ()
+ <COND (<VERB? EAT FIND>
+ <TELL
+"Although rather hungry, you realize that the case is too important
+for you to be eating meals." CR>)
+ (T <TELL "What a strange notion!" CR>)>>
+
+<ROUTINE GLOBAL-HOUSE-F ()
+ <COND (<VERB? WALK-AROUND>
+ <TELL "Use directions to move around inside the house." CR>)>>
+
+<ROUTINE GRAPE-ARBOR-F ()
+ <COND (<VERB? EAT>
+ <TELL "You pick a few grapes and eat them. Mmmm!" CR>)>>
+
+<ROUTINE GLOBAL-CALL-F ()
+ <COND (<AND <VERB? LISTEN>
+ <NOT <0? ,SECRET-MEETING>>
+ <EQUAL? ,HERE ,BEHIND-SHED ,EAST-LAWN>>
+ <TELL
+"The voices from within the shed are too quiet to make out." CR>)
+ (<AND <VERB? LISTEN>
+ ,CALL-IN-PROGRESS
+ <==? ,HERE ,CORRIDOR-1>>
+ <TELL
+"You can't make out the conversation through the door." CR>)
+ (<VERB? LISTEN>
+ <TELL
+"You can't hear any conversation." CR>)>>
+
+<ROUTINE GLOBAL-FINGERPRINTS-F ()
+ <COND (<AND <VERB? TAKE> <==? ,PRSO ,GLOBAL-FINGERPRINTS>>
+ <COND (<NOT ,PRSI>
+ <TELL
+ "You must specify what to take the fingerprints from." CR>)
+ (T
+ <PERFORM ,V?FINGERPRINT ,PRSI>
+ <RTRUE>)>)>>
+
+<ROUTINE GLOBAL-LADDER-F ()
+ <COND (<OR <AND <==? ,HERE ,LIBRARY-BALCONY> ,LADDER-FLAG>
+ <AND <==? ,HERE ,BEDROOM-BALCONY> ,LADDER-FLAG-2>>
+ <COND (<VERB? TAKE>
+ <TELL "It's too difficult from here." CR>)
+ (<VERB? RUB> <RFALSE>)
+ (<VERB? EXAMINE>
+ <TELL
+"The top of the ladder is visible, but the rest is hard to see." CR>)
+ (T
+ <TELL "You can't do that from here." CR>)>)>> \ No newline at end of file
diff --git a/clock.zil b/clock.zil
new file mode 100644
index 0000000..b8f523e
--- /dev/null
+++ b/clock.zil
@@ -0,0 +1,82 @@
+"CLOCK for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+<CONSTANT C-TABLELEN 300>
+
+<GLOBAL C-TABLE <ITABLE NONE 300>>
+
+<GLOBAL C-DEMONS 300>
+
+<GLOBAL C-INTS 300>
+
+<CONSTANT C-INTLEN 6>
+
+<CONSTANT C-ENABLED? 0>
+
+<CONSTANT C-TICK 1>
+
+<CONSTANT C-RTN 2>
+
+<ROUTINE DEMON (RTN TICK "AUX" CINT)
+ #DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
+ <PUT <SET CINT <INT .RTN T>> ,C-TICK .TICK>
+ .CINT>
+
+<ROUTINE QUEUE (RTN TICK "AUX" CINT)
+ #DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
+ <PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
+ .CINT>
+
+<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
+ #DECL ((RTN) ATOM (DEMON) <OR ATOM FALSE> (E C INT) <PRIMTYPE
+ VECTOR>)
+ <SET E <REST ,C-TABLE ,C-TABLELEN>>
+ <SET C <REST ,C-TABLE ,C-INTS>>
+ <REPEAT ()
+ <COND (<==? .C .E>
+ <SETG C-INTS <- ,C-INTS ,C-INTLEN>>
+ <AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
+ <SET INT <REST ,C-TABLE ,C-INTS>>
+ <PUT .INT ,C-RTN .RTN>
+ <RETURN .INT>)
+ (<==? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
+ <SET C <REST .C ,C-INTLEN>>>>
+
+<GLOBAL CLOCK-WAIT <>>
+
+;"SCORE INDICATES HOURS / MOVES = MINUTES"
+
+<GLOBAL SCORE 8>
+<GLOBAL MOVES 0>
+
+<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>))
+ #DECL ((C E) <PRIMTYPE VECTOR> (TICK) FIX (FLG) <OR FALSE ATOM>)
+ <COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
+ <SETG PRESENT-TIME <+ ,PRESENT-TIME 1>>
+ <COND (<G? ,PRESENT-TIME 1199>
+ <TELL
+"Chief Inspector Klutz walks up to you, seemingly from out of nowhere.
+\"I'm sorry, Inspector, but your time is up here. I'm sorry that you
+didn't have any more time to investigate the case. Maybe next time...\"
+He escorts you to a waiting police car, in which you go off into the
+sunset." CR>
+ <QUIT>)>
+ <COND (<G? <SETG MOVES <+ ,MOVES 1>> 59>
+ <SETG MOVES 0>
+ <COND (<G? <SETG SCORE <+ ,SCORE 1>> 23>
+ <SETG SCORE 0>)>)>
+ <SET C <REST ,C-TABLE <COND (,P-WON ,C-INTS) (T ,C-DEMONS)>>>
+ <SET E <REST ,C-TABLE ,C-TABLELEN>>
+ <REPEAT ()
+ <COND (<==? .C .E> <RETURN .FLG>)
+ (<NOT <0? <GET .C ,C-ENABLED?>>>
+ <SET TICK <GET .C ,C-TICK>>
+ <COND (<0? .TICK>)
+ (T
+ <PUT .C ,C-TICK <- .TICK 1>>
+ <COND (<AND <NOT <G? .TICK 1>>
+ <APPLY <GET .C ,C-RTN>>>
+ <SET FLG T>)>)>)>
+ <SET C <REST .C ,C-INTLEN>>>>
diff --git a/crufty.zil b/crufty.zil
new file mode 100644
index 0000000..4a3cd00
--- /dev/null
+++ b/crufty.zil
@@ -0,0 +1,16 @@
+"(c) Copyright 1983 Infocom, Inc. All Rights Reserved."
+
+<ROUTINE THIS-IT? (OBJ TBL "AUX" SYNS)
+ <COND (<FSET? .OBJ ,INVISIBLE> <RFALSE>)
+ (<AND ,P-NAM
+ <NOT <ZMEMQ ,P-NAM
+ <SET SYNS <GETPT .OBJ ,P?SYNONYM>>
+ <- </ <PTSIZE .SYNS> 2> 1>>>>
+ <RFALSE>)
+ (<AND ,P-ADJ
+ <OR <NOT <SET SYNS <GETPT .OBJ ,P?ADJECTIVE>>>
+ <NOT <ZMEMQB ,P-ADJ .SYNS <- <PTSIZE .SYNS> 1>>>>>
+ <RFALSE>)
+ (<AND <NOT <0? ,P-GWIMBIT>> <NOT <FSET? .OBJ ,P-GWIMBIT>>>
+ <RFALSE>)>
+ <RTRUE>>
diff --git a/deadline.zil b/deadline.zil
new file mode 100644
index 0000000..64b942f
--- /dev/null
+++ b/deadline.zil
@@ -0,0 +1,53 @@
+"COMPILE FILE for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+;<SNAME "INFOCOM.DEADLINE">
+
+<COND (<GASSIGNED? PREDGEN>
+ <PRINC "Compiling">
+ <ID 0>)
+ (T <PRINC "Loading">)>
+
+<PRINC " DEADLINE: An INTERLOGIC Mystery
+">
+
+<BLOAT 90000 0 0 3500 0 0 0 0 0 512>
+
+<SET REDEFINE T>
+
+<GLOBAL BIGFIX 10000>
+
+<OR <GASSIGNED? ZILCH>
+ <SETG WBREAKS <STRING !\" !,WBREAKS>>>
+
+<OR <GASSIGNED? INSERT-CRUFTY>
+ <DEFINE INSERT-CRUFTY (STR) <IFILE .STR T>>>
+
+<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
+ <INSERT-FILE .STR .FLOAD?>>
+
+<IFILE "DUNGEON" T>
+
+<PROPDEF SIZE 5>
+<PROPDEF CAPACITY 0>
+
+<IFILE "SYNTAX" T>
+<ENDLOAD>
+<IFILE "MACROS" T>
+<IFILE "CLOCK" T>
+<IFILE "MAIN" T>
+<IFILE "PARSER" T>
+<INSERT-CRUFTY "CRUFTY">
+<IFILE "VERBS" T>
+<IFILE "ACTIONS" T>
+<IFILE "GOAL" T>
+
+<GC-MON T>
+<GC 0 T 5>
+
+
+
+
+
diff --git a/deadline.zip b/deadline.zip
new file mode 100644
index 0000000..ebbe260
--- /dev/null
+++ b/deadline.zip
Binary files differ
diff --git a/dungeon.zil b/dungeon.zil
new file mode 100644
index 0000000..f79e076
--- /dev/null
+++ b/dungeon.zil
@@ -0,0 +1,2541 @@
+"DUNGEON for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+"Directions"
+
+<DIRECTIONS NORTH SOUTH EAST WEST NE NW SE SW UP DOWN IN OUT>
+
+"The usual globals"
+
+<OBJECT GLOBAL-OBJECTS
+ (FLAGS INVISIBLE TOUCHBIT SURFACEBIT OPENBIT TRANSBIT
+ SEARCHBIT)>
+
+<OBJECT LOCAL-GLOBALS
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM ZZKJLK ;"This synonym is necessary - God knows")>
+
+<OBJECT ROOMS>
+
+<OBJECT PSEUDO-OBJECT
+ (IN LOCAL-GLOBALS)
+ (DESC "FROBNO" ;"Place holder (MUST BE 6 CHARACTERS!!!!!)")
+ (ACTION LIBRARY-F ;"Place holder")>
+
+<OBJECT IT
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM IT THEM)
+ (DESC "X")
+ (FLAGS NDESCBIT)>
+
+<OBJECT HIM-HER
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM HE SHE HIM HER)
+ (DESC "X")
+ (FLAGS NDESCBIT)>
+
+"Necessary Flags"
+
+<GLOBAL LOAD-MAX 100>
+<GLOBAL LOAD-ALLOWED 100>
+
+"Grounds of Robner Estate"
+
+<ROOM SOUTH-LAWN
+ (IN ROOMS)
+ (LDESC
+"You are on a wide lawn just north of the entrance to the Robner estate.
+Directly north at the end of a pebbled path is the Robner house, flanked
+to the northeast and northwest by a vast expanse of well-kept lawn.
+Beyond the house can be seen the lakefront.")
+ (DESC "South Lawn")
+ (SYNONYM LAWN)
+ (ADJECTIVE SOUTH)
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO FRONT-PATH)
+ (SOUTH "Leaving the estate would mean quitting the case and, most
+probably, your job.")
+ (NW TO WEST-LAWN)
+ (NE TO EAST-LAWN)
+ (GLOBAL LAWN HOUSE)
+ (LINE 2)
+ (STATION FRONT-PATH)
+ (CORRIDOR 64)>
+
+<ROOM FRONT-PATH
+ (IN ROOMS)
+ (DESC "Front Path")
+ (SYNONYM PATH)
+ (ADJECTIVE FRONT)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION FRONT-PATH-F)
+ (IN TO FOYER IF FRONT-DOOR IS OPEN)
+ (NORTH TO FOYER IF FRONT-DOOR IS OPEN)
+ (SOUTH TO SOUTH-LAWN)
+ (SE TO SOUTH-LAWN)
+ (SW TO SOUTH-LAWN)
+ (WEST TO WEST-OF-DOOR)
+ (EAST TO EAST-OF-DOOR)
+ (GLOBAL HOUSE FRONT-DOOR)
+ (LINE 2)
+ (STATION FRONT-PATH)
+ (CORRIDOR 32)>
+
+<ROOM WEST-OF-DOOR
+ (IN ROOMS)
+ (LDESC
+"You are in front of the Robner house just west of the front door. To the
+north is a large bay window through which can be seen part of the living
+room. To the northwest is the west side of the house.")
+ (DESC "West of Front Door")
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO LIVING-ROOM IF BAY-WINDOW IS OPEN)
+ (NE TO LIVING-ROOM IF BAY-WINDOW IS OPEN)
+ (EAST TO FRONT-PATH)
+ (WEST TO WEST-LAWN)
+ (SOUTH TO SOUTH-LAWN)
+ (SE TO SOUTH-LAWN)
+ (SW TO SOUTH-LAWN)
+ (NW TO WEST-SIDE)
+ (GLOBAL BAY-WINDOW HOUSE)
+ (ACTION WEST-DOOR-F)
+ (LINE 2)
+ (STATION WEST-OF-DOOR)
+ (CORRIDOR 32)>
+
+<ROOM EAST-OF-DOOR
+ (IN ROOMS)
+ (LDESC
+"You are in front of the Robner house just east of the front door. A small
+window, closed and securely locked, is the only thing of note here. To the
+northeast is the east side of the house.")
+ (DESC "East of Front Door")
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH "The window is closed and locked.")
+ (WEST TO FRONT-PATH)
+ (EAST TO EAST-LAWN)
+ (SOUTH TO SOUTH-LAWN)
+ (SE TO SOUTH-LAWN)
+ (SW TO SOUTH-LAWN)
+ (NE TO EAST-SIDE)
+ (GLOBAL WINDOW HOUSE)
+ (LINE 2)
+ (STATION EAST-OF-DOOR)
+ (CORRIDOR 96)>
+
+ <ROOM WEST-LAWN
+ (IN ROOMS)
+ (LDESC
+"This is a sprawling lawn west of the Robner house. To the west and north is
+the lake shore. To the northeast is a rose garden, and to the south another
+wide lawn.")
+ (DESC "West Lawn")
+ (SYNONYM LAWN)
+ (ADJECTIVE WEST)
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH "You can't go into the lake.")
+ (NW "You can't go into the lake.")
+ (WEST "You can't go into the lake.")
+ (NE TO ROSE-GARDEN)
+ (EAST TO WEST-SIDE)
+ (SE TO WEST-OF-DOOR)
+ (SOUTH TO SOUTH-LAWN)
+ (GLOBAL LAWN HOUSE LAKE)
+ (LINE 2)
+ (STATION WEST-LAWN)
+ (CORRIDOR 32)>
+
+<ROOM EAST-LAWN
+ (IN ROOMS)
+ (LDESC
+"You are on a neatly manicured lawn, east of the house, which extends north
+and east to the shore of a lake. To the northwest is a peaceful orchard, and
+toward the south another wide lawn. Southeast, beside the lake, is a small
+shed with a solitary dirty window.")
+ (DESC "East Lawn")
+ (SYNONYM LAWN)
+ (ADJECTIVE EAST)
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH "You can't go into the lake.")
+ (NE "You can't go into the lake.")
+ (EAST "You can't go into the lake.")
+ (NW TO ORCHARD)
+ (WEST TO EAST-SIDE)
+ (SW TO EAST-OF-DOOR)
+ (SOUTH TO SOUTH-LAWN)
+ (SE TO SHED-ROOM)
+ (IN TO SHED-ROOM)
+ (GLOBAL HOUSE LAWN SHED LAKE SHED-WINDOW)
+ (LINE 2)
+ (STATION EAST-LAWN)
+ (CORRIDOR 672)>
+
+<ROOM EAST-SIDE
+ (IN ROOMS)
+ (LDESC
+"There are no windows or entries of any kind here at the east side of the
+house. To the north is the orchard, and the front lawn lies to the south.
+A lawn also slopes down toward the shore of a lake to the east.")
+ (DESC "East Side of House")
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO ORCHARD)
+ (NE TO EAST-LAWN)
+ (SOUTH TO EAST-OF-DOOR)
+ (SE TO EAST-LAWN)
+ (EAST TO EAST-LAWN)
+ (WEST "You can't enter the house here.")
+ (GLOBAL HOUSE)
+ (LINE 2)
+ (STATION EAST-SIDE)
+ (CORRIDOR 64)>
+
+<ROOM WEST-SIDE
+ (IN ROOMS)
+ (LDESC
+"There are no doors or windows at ground level here on the west side of the
+house. A beautiful rose garden, separated by a tall fence, lies to the north,
+and the front of the house is to your south. A large lawn bordering the lake
+lies to the west.")
+ (DESC "West Side of House")
+ (FLAGS RLANDBIT ONBIT)
+ (SW TO WEST-LAWN)
+ (WEST TO WEST-LAWN)
+ (NW TO WEST-LAWN)
+ (NORTH "A fence prevents your mucking up the rose garden.")
+ (SE TO WEST-OF-DOOR)
+ (SOUTH TO WEST-OF-DOOR)
+ (EAST "You can't enter the house here.")
+ (GLOBAL HOUSE)
+ (PSEUDO "FENCE" RANDOM-PSEUDO)
+ (LINE 2)
+ (STATION WEST-SIDE)>
+
+<ROOM SHED-ROOM
+ (IN ROOMS)
+ (LDESC
+"This small garden shed is filled with implements of gardening and lawn care.
+Shelves filled with various tools line the walls and a filthy window looks out
+on the lawn.")
+ (DESC "Shed")
+ (SYNONYM SHED CABIN)
+ (ADJECTIVE TOOL GARDEN WOODEN)
+ (FLAGS RLANDBIT ONBIT)
+ (OUT TO EAST-LAWN)
+ (NORTH TO EAST-LAWN)
+ (NW TO EAST-LAWN)
+ (GLOBAL SHED SHED-WINDOW)
+ (LINE 2)
+ (STATION EAST-LAWN)>
+
+<ROOM BEHIND-SHED
+ (IN ROOMS)
+ (LDESC
+"You are now between the shed and the lake, a position invisible from the
+house or the adjacent lawns. There are no windows here, but you can easily
+enter the shed via the door around the corner.")
+ (DESC "Behind the Shed")
+ (OUT TO EAST-LAWN)
+ (IN TO SHED-ROOM)
+ (EAST "You can't go into the lake.")
+ (WEST TO EAST-LAWN)
+ (NORTH TO EAST-LAWN)
+ (SOUTH TO SOUTH-LAWN)
+ (FLAGS RLANDBIT ONBIT)
+ (GLOBAL SHED)
+ (LINE 2)
+ (STATION EAST-LAWN)>
+
+<ROOM ROSE-GARDEN
+ (IN ROOMS)
+ (DESC "Garden Path")
+ (SYNONYM PATH)
+ (ADJECTIVE GARDEN ROSE FLOWER)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION ROSE-GARDEN-F)
+ (NORTH TO NORTH-LAWN)
+ (NE TO NORTH-LAWN)
+ (NW TO NORTH-LAWN)
+ (SW TO WEST-LAWN)
+ (WEST TO WEST-LAWN)
+ (EAST TO ORCHARD)
+ (SOUTH TO IN-ROSES)
+ (SE TO IN-ROSES)
+ (GLOBAL ROSE HOUSE DINING-ROOM-WINDOW)
+ (LINE 2)
+ (STATION ROSE-GARDEN)
+ (CORRIDOR 2048)>
+
+<ROOM IN-ROSES
+ (IN ROOMS)
+ (DESC "Among the Roses")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION IN-ROSES-F)
+ (UP TO LIBRARY-BALCONY IF LADDER-FLAG)
+ (NORTH TO ROSE-GARDEN)
+ (NE TO ROSE-GARDEN)
+ (NW TO ROSE-GARDEN)
+ (WEST TO WEST-LAWN)
+ (EAST TO IN-ORCHARD)
+ (SOUTH "You can't enter the house here.")
+ (GLOBAL DINING-ROOM-WINDOW HOUSE ROSE BALCONY)
+ (LINE 2)
+ (STATION ROSE-GARDEN)>
+
+<ROOM ORCHARD
+ (IN ROOMS)
+ (LDESC
+"You are on a path at the edge of a small orchard of fruit trees which abuts
+the eastern side of the back of the house. The orchard is obviously intended
+more to display the beauty of the blossoms in spring than to produce
+significant amounts of fruit. The windows of the kitchen look out onto the
+orchard, although your view of them is blocked by the trees and a small grape
+arbor. To the west is a path along a rose garden, and lawns sweep out to the
+north and east.")
+ (DESC "Orchard Path")
+ (SYNONYM PATH)
+ (ADJECTIVE ORCHARD)
+ (FLAGS RLANDBIT ONBIT)
+ (EAST TO EAST-LAWN)
+ (SE TO EAST-LAWN)
+ (NORTH TO NORTH-LAWN)
+ (NW TO NORTH-LAWN)
+ (NE TO NORTH-LAWN)
+ (WEST TO ROSE-GARDEN)
+ (SOUTH TO IN-ORCHARD)
+ (SW TO IN-ORCHARD)
+ (GLOBAL KITCHEN-WINDOW HOUSE FRUIT-TREES)
+ (LINE 2)
+ (STATION ORCHARD)
+ (CORRIDOR 2176)>
+
+<ROOM IN-ORCHARD
+ (IN ROOMS)
+ (DESC "In the Orchard")
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO ORCHARD)
+ (WEST TO IN-ROSES)
+ (NW TO ORCHARD)
+ (NE TO ORCHARD)
+ (UP TO BEDROOM-BALCONY IF LADDER-FLAG-2)
+ (SOUTH TO EAST-SIDE)
+ (ACTION IN-ORCHARD-F)
+ (GLOBAL KITCHEN-WINDOW HOUSE FRUIT-TREES BALCONY)
+ (LINE 2)
+ (STATION ORCHARD)>
+
+<ROOM NORTH-LAWN
+ (IN ROOMS)
+ (LDESC
+"This idyllic spot lies on a jut of land well north of the house and is
+surrounded on three sides by lake shore. Its charm includes the sweet smell
+of roses blown on a southwest breeze from the rose garden and by the sound
+of the leaves rustling in the orchard to the southeast.")
+ (DESC "North Lawn")
+ (SYNONYM LAWN)
+ (ADJECTIVE NORTH)
+ (FLAGS RLANDBIT ONBIT)
+ (NE "You can't go into the lake.")
+ (NW "You can't go into the lake.")
+ (NORTH "You can't go into the lake.")
+ (EAST "You can't go into the lake.")
+ (WEST "You can't go into the lake.")
+ (SW TO ROSE-GARDEN)
+ (SE TO ORCHARD)
+ (SOUTH TO ROSE-GARDEN)
+ (GLOBAL LAWN HOUSE LAKE)
+ (LINE 2)
+ (STATION NORTH-LAWN)
+ (CORRIDOR 128)>
+
+"The First Floor"
+
+<ROOM FOYER
+ (IN ROOMS)
+ (DESC "Foyer")
+ (SYNONYM FOYER)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION FOYER-F)
+ (SOUTH TO FRONT-PATH IF FRONT-DOOR IS OPEN)
+ (NORTH TO NFOYER)
+ (OUT TO FRONT-PATH IF FRONT-DOOR IS OPEN)
+ (GLOBAL FRONT-DOOR)
+ (LINE 1)
+ (STATION FOYER)
+ (CORRIDOR 8)>
+
+<ROOM NFOYER
+ (IN ROOMS)
+ (LDESC
+"This is a hallway north of the foyer. To the west is an open doorway, and to
+the east is the foot of a staircase. The hall continues north.")
+ (DESC "North of Foyer")
+ (FLAGS RLANDBIT ONBIT)
+ (SOUTH TO FOYER)
+ (WEST TO LIVING-ROOM)
+ (EAST TO STAIR-BOTTOM)
+ (NORTH TO CORNER)
+ (LINE 1)
+ (STATION NFOYER)
+ (CORRIDOR 264)>
+
+<ROOM SHALL-1
+ (IN ROOMS)
+ (DESC "South Hallway")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION SHALL-1-F)
+ (EAST TO SHALL-2)
+ (NORTH TO STAIR-BOTTOM)
+ (SOUTH TO ROURKE-ROOM IF ROURKE-DOOR IS OPEN)
+ (GLOBAL ROURKE-DOOR)
+ (LINE 1)
+ (STATION SHALL-1)
+ (CORRIDOR 16)>
+
+<ROOM SHALL-2
+ (IN ROOMS)
+ (DESC "South Hallway")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION SHALL-2-F)
+ (EAST TO ROURKE-BATH IF ROURKE-BATH-DOOR IS OPEN)
+ (WEST TO SHALL-1)
+ (SOUTH TO SOUTH-CLOSET IF SOUTH-CLOSET-DOOR IS OPEN)
+ (GLOBAL ROURKE-BATH-DOOR SOUTH-CLOSET-DOOR)
+ (LINE 1)
+ (STATION SHALL-2)>
+
+<ROOM ROURKE-ROOM
+ (IN ROOMS)
+ (DESC "Mrs. Rourke's Room")
+ (SYNONYM BEDROOM ROOM)
+ (ADJECTIVE ROURKE)
+ (ACTION ROURKE-ROOM-F)
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO SHALL-1 IF ROURKE-DOOR IS OPEN)
+ (OUT TO SHALL-1 IF ROURKE-DOOR IS OPEN)
+ (GLOBAL ROURKE-DOOR END-TABLE CHAIR BED WINDOW)
+ (LINE 1)
+ (STATION SHALL-1)>
+
+<ROOM ROURKE-BATH
+ (IN ROOMS)
+ (DESC "Mrs. Rourke's Bathroom")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION ROURKE-BATH-F)
+ (WEST TO SHALL-2 IF ROURKE-BATH-DOOR IS OPEN)
+ (GLOBAL ROURKE-BATH-DOOR TOILET SHOWER SINK)
+ (LINE 1)
+ (STATION SHALL-2)>
+
+<ROOM SOUTH-CLOSET
+ (IN ROOMS)
+ (LDESC
+"This is a little-used storage closet containing odds and ends of no interest
+whatsoever. The exit is to the north.")
+ (DESC "South Closet")
+ (SYNONYM CLOSET)
+ (ADJECTIVE SOUTH)
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO SHALL-2 IF SOUTH-CLOSET-DOOR IS OPEN)
+ (OUT TO SHALL-2 IF SOUTH-CLOSET-DOOR IS OPEN)
+ (GLOBAL SOUTH-CLOSET-DOOR CLOSET)
+ (LINE 1)
+ (STATION SHALL-2)
+ (SIZE 1)>
+
+<ROOM STAIR-BOTTOM
+ (IN ROOMS)
+ (LDESC
+"You are at the foot of the stairs to the second floor. Open archways lead
+west and south.")
+ (DESC "Bottom of Stairs")
+ (FLAGS RLANDBIT ONBIT)
+ (UP TO STAIRS)
+ (SOUTH TO SHALL-1)
+ (WEST TO NFOYER)
+ (GLOBAL STAIRS)
+ (LINE 1)
+ (STATION STAIR-BOTTOM)
+ (CORRIDOR 272)>
+
+<ROOM LIVING-ROOM
+ (IN ROOMS)
+ (DESC "Living Room")
+ (SYNONYM ROOM)
+ (ADJECTIVE LIVING)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION LIVING-ROOM-F)
+ (EAST TO NFOYER)
+ (OUT TO NFOYER)
+ (SOUTH TO WEST-OF-DOOR IF BAY-WINDOW IS OPEN)
+ (GLOBAL BAY-WINDOW TELEPHONE SOFA CHAIR LGTABLE)
+ (LINE 1)
+ (STATION NFOYER)>
+
+<ROOM CORNER
+ (IN ROOMS)
+ (DESC "Corner")
+ (LDESC
+"You are at the corner of two halls, one a short hallway to the west ending
+with a set of doors, and the other a long hall leading south toward the front
+door. To the north are swinging double doors leading into the kitchen.")
+ (FLAGS RLANDBIT ONBIT)
+ (SOUTH TO NFOYER)
+ (WEST TO DINING-ROOM)
+ (NORTH TO KITCHEN)
+ (LINE 3)
+ (STATION CORNER)
+ (CORRIDOR 8)>
+
+<ROOM DINING-ROOM
+ (IN ROOMS)
+ (LDESC
+"You have entered the dining room. A long table seating twelve is in the
+center of the room and a large trestle table is against the south wall. A
+large picture window to the north allows a view of the rose garden. Hanging
+on the wall are several cheerful paintings, including one by Seurat which
+appears to be an original.")
+ (DESC "Dining Room")
+ (SYNONYM ROOM)
+ (ADJECTIVE DINING)
+ (FLAGS RLANDBIT ONBIT)
+ (EAST TO CORNER)
+ (OUT TO CORNER)
+ (GLOBAL DINING-ROOM-WINDOW)
+ (LINE 3)
+ (STATION DINING-ROOM)>
+
+<ROOM KITCHEN
+ (IN ROOMS)
+ (LDESC
+"This is the Robner kitchen, quite large and with a full complement of
+appliances and labor-saving devices. On one wall, a beautifully-crafted
+shelf unit contains rare china, a unique hand-painted family heirloom
+depicting scenes from Greek mythology. The china consists of many place
+settings of plates, teacups, and saucers. There are several cabinets which
+likely contain silverware, glasses, and the like. To the east is a pantry.")
+ (DESC "Kitchen")
+ (SYNONYM KITCHEN)
+ (FLAGS RLANDBIT ONBIT)
+ (SOUTH TO CORNER)
+ (EAST TO PANTRY)
+ (GLOBAL KITCHEN-WINDOW SINK)
+ (LINE 3)
+ (STATION KITCHEN)>
+
+<ROOM PANTRY
+ (IN ROOMS)
+ (LDESC
+"This is the pantry with shelves containing a large selection of canned and
+packaged foods, such as fruits, vegetables, and dry goods.")
+ (DESC "Pantry")
+ (SYNONYM PANTRY)
+ (FLAGS RLANDBIT ONBIT)
+ (WEST TO KITCHEN)
+ (LINE 3)
+ (STATION PANTRY)>
+
+"Staircase"
+
+<ROOM STAIRS
+ (IN ROOMS)
+ (LDESC
+"You are on a landing halfway up the flight of stairs. You notice that the
+stairs do indeed make quite a noise when stepped upon.")
+ (DESC "Stairs")
+ (SYNONYM STAIRS)
+ (FLAGS RLANDBIT ONBIT)
+ (UP TO STAIR-TOP)
+ (DOWN TO STAIR-BOTTOM)
+ (GLOBAL STAIRS)
+ (LINE 1)
+ (STATION STAIRS)
+ (CORRIDOR 256)>
+
+"Second Floor of Robner House"
+
+<ROOM STAIR-TOP
+ (IN ROOMS)
+ (LDESC
+"You are at the top of the staircase where short hallways run north and south
+and a corridor the length of the house heads west.")
+ (DESC "Top of Stairs")
+ (FLAGS RLANDBIT ONBIT)
+ (DOWN TO STAIRS)
+ (NORTH TO NORTH-HALL)
+ (SOUTH TO SHALL-11)
+ (WEST TO CORRIDOR-1)
+ (GLOBAL STAIRS)
+ (LINE 0)
+ (STATION STAIR-TOP)
+ (CORRIDOR 3)>
+
+<ROOM CORRIDOR-1
+ (IN ROOMS)
+ (DESC "Hallway")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION CORRIDOR-1-F)
+ (EAST TO STAIR-TOP)
+ (WEST TO CORRIDOR-2)
+ (SOUTH TO DUNBAR-ROOM IF DUNBAR-DOOR IS OPEN)
+ (NORTH TO MASTER-BEDROOM IF MASTER-BEDROOM-DOOR IS OPEN)
+ (GLOBAL DUNBAR-DOOR MASTER-BEDROOM-DOOR)
+ (LINE 0)
+ (STATION CORRIDOR-1)
+ (CORRIDOR 1)>
+
+<ROOM CORRIDOR-2
+ (IN ROOMS)
+ (LDESC
+"This is approximately the middle of the corridor, a convenient place for a
+closet full of linens. Stairs to the east and a window to the west are about
+equidistant. The closet, to the north, is open and rather shallow.")
+ (DESC "Hallway")
+ (FLAGS RLANDBIT ONBIT)
+ (NORTH TO UPSTAIRS-CLOSET)
+ (EAST TO CORRIDOR-1)
+ (WEST TO CORRIDOR-3)
+ (GLOBAL CLOSET)
+ (LINE 0)
+ (STATION CORRIDOR-2)
+ (CORRIDOR 1025)>
+
+<ROOM CORRIDOR-3
+ (IN ROOMS)
+ (DESC "Hallway")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION CORRIDOR-3-F)
+ (EAST TO CORRIDOR-2)
+ (WEST TO CORRIDOR-4)
+ (SOUTH TO GEORGE-ROOM IF GEORGE-DOOR IS OPEN)
+ (GLOBAL GEORGE-DOOR)
+ (LINE 0)
+ (STATION CORRIDOR-3)
+ (CORRIDOR 1)>
+
+<ROOM CORRIDOR-4
+ (IN ROOMS)
+ (DESC "End of Hallway")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION CORRIDOR-4-F)
+ (EAST TO CORRIDOR-3)
+ (WEST "The hall ends here.")
+ (NORTH TO LIBRARY)
+ (GLOBAL LIBRARY-DOOR)
+ (LINE 0)
+ (STATION CORRIDOR-4)
+ (CORRIDOR 1)>
+
+<ROOM LIBRARY
+ (IN ROOMS)
+ (DESC "Library")
+ (SYNONYM LIBRARY)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION LIBRARY-F)
+ (EAST TO HIDDEN-CLOSET IF HIDDEN-DOOR-L IS OPEN)
+ (SOUTH TO CORRIDOR-4)
+ (NORTH TO LIBRARY-BALCONY IF LIBRARY-BALCONY-DOOR IS OPEN)
+ (GLOBAL HIDDEN-DOOR-L LIBRARY-BALCONY-DOOR TELEPHONE LIBRARY-DOOR)
+ (LINE 0)
+ (STATION LIBRARY)>
+
+<ROOM LIBRARY-BALCONY
+ (IN ROOMS)
+ (DESC "Library Balcony")
+ (SYNONYM BALCONY)
+ (ADJECTIVE LIBRARY)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION LIBRARY-BALCONY-F)
+ (SOUTH TO LIBRARY IF LIBRARY-BALCONY-DOOR IS OPEN)
+ (DOWN TO IN-ROSES IF LADDER-FLAG
+ ELSE "The fall would probably kill you.")
+ (GLOBAL LIBRARY-BALCONY-DOOR)
+ (LINE 0)
+ (STATION LIBRARY-BALCONY)>
+
+<ROOM UPSTAIRS-CLOSET
+ (IN ROOMS)
+ (LDESC
+"The closet is rather shallow and has some shelves full of assorted linens,
+towels, and uninteresting toilet articles.")
+ (DESC "Upstairs Closet")
+ (SYNONYM CLOSET)
+ (ADJECTIVE UPSTAIRS)
+ (FLAGS RLANDBIT ONBIT)
+ (OUT TO CORRIDOR-2)
+ (SOUTH TO CORRIDOR-2)
+ (GLOBAL CLOSET)
+ (LINE 0)
+ (STATION CORRIDOR-2)
+ (CORRIDOR 1024)>
+
+<ROOM HIDDEN-CLOSET
+ (IN ROOMS)
+ (DESC "Hidden Closet")
+ (SYNONYM CLOSET)
+ (ADJECTIVE HIDDEN)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION HIDDEN-CLOSET-F)
+ (EAST TO MASTER-BEDROOM IF HIDDEN-DOOR-B IS OPEN)
+ (WEST TO LIBRARY IF HIDDEN-DOOR-L IS OPEN)
+ (GLOBAL HIDDEN-DOOR-B HIDDEN-DOOR-L CLOSET)
+ (LINE 0)
+ (STATION LIBRARY)>
+
+<ROOM MASTER-BEDROOM
+ (IN ROOMS)
+ (DESC "Master Bedroom")
+ (SYNONYM BEDROOM ROOM)
+ (ADJECTIVE MASTER ROBNER)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION MASTER-BEDROOM-F)
+ (WEST TO HIDDEN-CLOSET IF HIDDEN-DOOR-B IS OPEN)
+ (NORTH TO BEDROOM-BALCONY IF BEDROOM-BALCONY-DOOR IS OPEN)
+ (SOUTH TO CORRIDOR-1 IF MASTER-BEDROOM-DOOR IS OPEN)
+ (EAST TO MASTER-BATH)
+ (GLOBAL HIDDEN-DOOR-B BEDROOM-BALCONY-DOOR MASTER-BEDROOM-DOOR
+ END-TABLE CHAIR TELEPHONE)
+ (LINE 0)
+ (STATION CORRIDOR-1)>
+
+<ROOM MASTER-BATH
+ (IN ROOMS)
+ (LDESC
+"This is Mr. and Mrs. Robner's private bathroom, accessible only from
+the bedroom through a door to the west. On one wall is a mirror over a long
+counter containing two sinks, and in addition to the usual bathroom fixtures
+is a jacuzzi. Hanging plants give the room an almost tropical atmosphere.")
+ (DESC "Master Bathroom")
+ (SYNONYM BATH BATHROOM)
+ (ADJECTIVE MASTER)
+ (FLAGS RLANDBIT ONBIT)
+ (WEST TO MASTER-BEDROOM)
+ (OUT TO MASTER-BEDROOM)
+ (GLOBAL SHOWER TOILET SINK)
+ (PSEUDO "TOOTHPASTE" RANDOM-PSEUDO)>
+
+<ROOM BEDROOM-BALCONY
+ (IN ROOMS)
+ (DESC "Bedroom Balcony")
+ (SYNONYM BALCONY)
+ (ADJECTIVE BEDROOM)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION BEDROOM-BALCONY-F)
+ (SOUTH TO MASTER-BEDROOM IF BEDROOM-BALCONY-DOOR IS OPEN)
+ (DOWN TO IN-ORCHARD IF LADDER-FLAG-2 ELSE "The jump is inadvisable.")
+ (GLOBAL BEDROOM-BALCONY-DOOR)>
+
+<ROOM NORTH-HALL
+ (IN ROOMS)
+ (LDESC
+"This is the end of a short north-south hallway. To the east is a small room.")
+ (DESC "North Upstairs Hall")
+ (FLAGS RLANDBIT ONBIT)
+ (EAST TO GUEST-ROOM)
+ (SOUTH TO STAIR-TOP)
+ (LINE 0)
+ (STATION STAIR-TOP)>
+
+<ROOM GUEST-ROOM
+ (IN ROOMS)
+ (DESC "Guest Room")
+ (LDESC
+"This room contains the bare essentials for a guest room: bed, tables, and a
+chair. A window looks out toward the east.")
+ (FLAGS RLANDBIT ONBIT)
+ (WEST TO NORTH-HALL)
+ (GLOBAL END-TABLE CHAIR BED)
+ (LINE 0)
+ (CORRIDOR 0)
+ (STATION STAIR-TOP)>
+
+<ROOM SHALL-11
+ (IN ROOMS)
+ (DESC "South Upstairs Hall")
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION SHALL-11-F)
+ (NORTH TO STAIR-TOP)
+ (EAST TO SHALL-12)
+ (SOUTH TO DUNBAR-BATH IF DUNBAR-BATH-DOOR IS OPEN)
+ (GLOBAL DUNBAR-BATH-DOOR)
+ (LINE 0)
+ (STATION SHALL-11)
+ (CORRIDOR 6)>
+
+<ROOM SHALL-12
+ (IN ROOMS)
+ (LDESC
+"The hall ends here. To the south is a walk-in closet.")
+ (DESC "End of South Hall")
+ (FLAGS RLANDBIT ONBIT)
+ (WEST TO SHALL-11)
+ (SOUTH TO CLOSET-11)
+ (IN TO CLOSET-11)
+ (LINE 0)
+ (STATION SHALL-12)
+ (CORRIDOR 4)>
+
+<ROOM CLOSET-11
+ (IN ROOMS)
+ (LDESC
+"This large closet has many shelves containing various cleaning equipment
+and supplies.")
+ (DESC "Closet")
+ (FLAGS RLANDBIT ONBIT)
+ (OUT TO SHALL-12)
+ (NORTH TO SHALL-12)
+ (GLOBAL CLOSET)>
+
+<ROOM DUNBAR-BATH
+ (IN ROOMS)
+ (DESC "Dunbar's Bathroom")
+ (SYNONYM BATHROOM BATH)
+ (ADJECTIVE DUNBAR)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION DUNBAR-BATH-F)
+ (NORTH TO SHALL-11 IF DUNBAR-BATH-DOOR IS OPEN)
+ (GLOBAL DUNBAR-BATH-DOOR SHOWER TOILET SINK)
+ (PSEUDO "POLISH" RANDOM-PSEUDO "NAILPOLISH" RANDOM-PSEUDO)
+ (LINE 0)
+ (STATION SHALL-11)>
+
+<ROOM DUNBAR-ROOM
+ (IN ROOMS)
+ (DESC "Dunbar's Bedroom")
+ (SYNONYM BEDROOM ROOM)
+ (ADJECTIVE DUNBAR)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION DUNBAR-ROOM-F)
+ (NORTH TO CORRIDOR-1 IF DUNBAR-DOOR IS OPEN)
+ (GLOBAL DUNBAR-DOOR END-TABLE CHAIR BED)
+ (LINE 0)
+ (STATION CORRIDOR-1)>
+
+<ROOM GEORGE-BATH
+ (IN ROOMS)
+ (DESC "George's Bathroom")
+ (SYNONYM BATHROOM ROOM)
+ (ADJECTIVE GEORGE)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION GEORGE-BATH-F)
+ (WEST TO GEORGE-ROOM IF GEORGE-BATH-DOOR IS OPEN)
+ (GLOBAL GEORGE-BATH-DOOR TOILET SHOWER SINK)
+ (LINE 0)
+ (STATION CORRIDOR-3)>
+
+<ROOM GEORGE-ROOM
+ (IN ROOMS)
+ (DESC "George's Bedroom")
+ (SYNONYM BEDROOM ROOM)
+ (ADJECTIVE GEORGE)
+ (FLAGS RLANDBIT ONBIT)
+ (ACTION GEORGE-ROOM-F)
+ (NORTH TO CORRIDOR-3 IF GEORGE-DOOR IS OPEN)
+ (EAST TO GEORGE-BATH IF GEORGE-BATH-DOOR IS OPEN)
+ (GLOBAL GEORGE-DOOR GEORGE-BATH-DOOR END-TABLE CHAIR BED)
+ (LINE 0)
+ (STATION CORRIDOR-3)>
+
+"Doors"
+
+<OBJECT SOUTH-CLOSET-DOOR
+ (IN LOCAL-GLOBALS)
+ (ADJECTIVE CLOSET)
+ (SYNONYM DOOR)
+ (DESC "south closet door")
+ (FLAGS DOORBIT CONTBIT OPENBIT)
+ (ACTION DOOR-F)>
+
+<OBJECT FRONT-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE FRONT)
+ (DESC "front door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION DOOR-F)>
+
+<OBJECT ROURKE-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (DESC "door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION DOOR-F)>
+
+<OBJECT DUNBAR-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE DUNBAR SOUTH SOUTHE)
+ (DESC "south door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION DOOR-F)>
+
+<OBJECT DUNBAR-BATH-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (DESC "door")
+ (FLAGS DOORBIT CONTBIT OPENBIT)>
+
+<OBJECT ROURKE-BATH-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE BATHROOM)
+ (DESC "bathroom door")
+ (FLAGS DOORBIT CONTBIT)>
+
+<OBJECT MASTER-BEDROOM-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE BEDROOM MASTER NORTH)
+ (DESC "bedroom door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION MASTER-BEDROOM-DOOR-F)>
+
+<OBJECT GEORGE-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE BEDROOM SOUTH SOUTHE)
+ (DESC "bedroom door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION DOOR-F)>
+
+<OBJECT GEORGE-BATH-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE BATHROOM EAST)
+ (DESC "bathroom door")
+ (FLAGS DOORBIT CONTBIT OPENBIT)>
+
+<OBJECT HIDDEN-DOOR-L
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE HIDDEN)
+ (DESC "hidden door")
+ (FLAGS DOORBIT CONTBIT INVISIBLE)>
+
+<OBJECT HIDDEN-DOOR-B
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR)
+ (ADJECTIVE HIDDEN)
+ (DESC "hidden door")
+ (FLAGS DOORBIT CONTBIT INVISIBLE)>
+
+<OBJECT LIBRARY-BALCONY-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR DOORS WINDOW)
+ (ADJECTIVE BALCONY)
+ (DESC "balcony door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION BALCONY-DOOR-F)>
+
+<OBJECT BEDROOM-BALCONY-DOOR
+ (IN LOCAL-GLOBALS)
+ (SYNONYM DOOR DOORS WINDOW)
+ (ADJECTIVE GLASS BALCONY)
+ (DESC "balcony door")
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION BALCONY-DOOR-F)>
+
+"Objects start here...."
+
+<OBJECT ROSE
+ (IN LOCAL-GLOBALS)
+ (DESC "roses")
+ (SYNONYM BED ROSE ROSES)
+ (ADJECTIVE RED WHITE PINK YELLOW)
+ (ACTION ROSE-F)>
+
+<OBJECT HOUSE
+ (IN LOCAL-GLOBALS)
+ (DESC "house")
+ (SYNONYM HOUSE WALL)
+ (ADJECTIVE ROBNER)
+ (ACTION HOUSE-F)>
+
+<OBJECT LAWN
+ (IN LOCAL-GLOBALS)
+ (DESC "lawn")
+ (SYNONYM LAWN GRASS)
+ (ADJECTIVE GREEN)
+ (ACTION LAWN-F)>
+
+<OBJECT GROUND
+ (IN GLOBAL-OBJECTS)
+ (DESC "ground")
+ (SYNONYM GROUND DIRT MUD SOIL ;AREA)
+ (ADJECTIVE HARD)
+ (ACTION GROUND-F)>
+
+<OBJECT AIR
+ (IN GLOBAL-OBJECTS)
+ (DESC "air")
+ (SYNONYM AIR WIND BREEZE)
+ (ACTION AIR-F)>
+
+<OBJECT SHED
+ (IN LOCAL-GLOBALS)
+ (DESC "shed")
+ (SYNONYM SHED CABIN)
+ (ADJECTIVE LOG WOODEN WOOD)
+ (ACTION SHED-F)>
+
+<OBJECT LAKE
+ (IN LOCAL-GLOBALS)
+ (DESC "lake")
+ (SYNONYM LAKE WATER)
+ (ACTION LAKE-F)>
+
+<OBJECT BALCONY
+ (IN LOCAL-GLOBALS)
+ (DESC "balcony")
+ (SYNONYM BALCONY)>
+
+<OBJECT BAY-WINDOW
+ (IN LOCAL-GLOBALS)
+ (DESC "bay window")
+ (SYNONYM WINDOW)
+ (ADJECTIVE BAY)
+ (FLAGS DOORBIT CONTBIT)
+ (ACTION BAY-WINDOW-F)>
+
+"Kludge"
+
+<ROOM XXX
+ (IN ROOMS)
+ (DESC "X")
+ (FDESC "FROB")
+ (SIZE 10)
+ (CAPACITY 10)>
+
+"People"
+
+<OBJECT PLAYER
+ (IN SOUTH-LAWN)
+ (DESC "player")
+ (SYNONYM ME PLAYER INSPECTOR)
+ (ACTION PLAYER-F)
+ (FLAGS NDESCBIT)
+ (CHARACTER 0)>
+
+<OBJECT GARDENER
+ (IN NORTH-LAWN)
+ (DESC "Mr. McNabb")
+ (SYNONYM MCNABB)
+ (ADJECTIVE MR MISTER ANGUS)
+ (ACTION GARDENER-F)
+ (DESCFCN GARDENER-F)
+ (FLAGS PERSON OPENBIT)
+ (CAPACITY 40)
+ (CHARACTER 1)
+ (STATE 0)>
+
+<OBJECT GLOBAL-GARDENER
+ (DESC "Mr. McNabb")
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM MCNABB)
+ (ADJECTIVE MR MISTER ANGUS)
+ (FLAGS PERSON)
+ (ACTION GLOBAL-PERSON)
+ (CHARACTER 1)>
+
+<OBJECT BAXTER
+ (DESC "Mr. Baxter")
+ (SYNONYM BAXTER)
+ (ADJECTIVE MISTER MR)
+ (FLAGS PERSON OPENBIT)
+ (CAPACITY 40)
+ (ACTION BAXTER-F)
+ (DESCFCN BAXTER-F)
+ (STATE 0)
+ (CHARACTER 2)>
+
+<OBJECT GLOBAL-BAXTER
+ (IN GLOBAL-OBJECTS)
+ (DESC "Mr. Baxter")
+ (SYNONYM BAXTER)
+ (ADJECTIVE MISTER MR)
+ (FLAGS PERSON)
+ (ACTION GLOBAL-PERSON)
+ (CHARACTER 2)>
+
+<OBJECT DUNBAR
+ (IN LIVING-ROOM)
+ (DESC "Ms. Dunbar")
+ (SYNONYM DUNBAR)
+ (ADJECTIVE MS MRS)
+ (FLAGS PERSON OPENBIT)
+ (CAPACITY 40)
+ (ACTION DUNBAR-F)
+ (DESCFCN DUNBAR-F)
+ (STATE 0)
+ (CHARACTER 3)>
+
+<OBJECT GLOBAL-DUNBAR
+ (IN GLOBAL-OBJECTS)
+ (DESC "Ms. Dunbar")
+ (SYNONYM DUNBAR)
+ (ADJECTIVE MS MRS)
+ (FLAGS PERSON)
+ (ACTION GLOBAL-PERSON)
+ (CHARACTER 3)>
+
+<OBJECT GEORGE
+ (IN GEORGE-ROOM)
+ (DESC "George")
+ (ADJECTIVE GEORGE)
+ (SYNONYM GEORGE ROBNER)
+ (FLAGS PERSON OPENBIT)
+ (CAPACITY 40)
+ (ACTION GEORGE-F)
+ (DESCFCN GEORGE-F)
+ (STATE 0)
+ (CHARACTER 4)>
+
+<OBJECT GLOBAL-GEORGE
+ (IN GLOBAL-OBJECTS)
+ (DESC "George")
+ (ADJECTIVE GEORGE)
+ (SYNONYM GEORGE ROBNER)
+ (FLAGS PERSON)
+ (ACTION GLOBAL-PERSON)
+ (CHARACTER 4)>
+
+<OBJECT MRS-ROBNER
+ (IN LIVING-ROOM)
+ (DESC "Mrs. Robner")
+ (SYNONYM ROBNER MOTHER LESLIE)
+ (ADJECTIVE MRS MS LESLIE)
+ (FLAGS PERSON OPENBIT)
+ (CAPACITY 40)
+ (ACTION MRS-ROBNER-F)
+ (DESCFCN MRS-ROBNER-F)
+ (STATE 0)
+ (CHARACTER 5)>
+
+<OBJECT GLOBAL-MRS-ROBNER
+ (IN GLOBAL-OBJECTS)
+ (DESC "Mrs. Robner")
+ (SYNONYM ROBNER MOTHER LESLIE)
+ (ADJECTIVE MRS MS LESLIE)
+ (FLAGS PERSON)
+ (ACTION GLOBAL-PERSON)
+ (CHARACTER 5)>
+
+<OBJECT ROURKE
+ (IN KITCHEN)
+ (DESC "Mrs. Rourke")
+ (SYNONYM ROURKE)
+ (ADJECTIVE MS MRS)
+ (FLAGS PERSON OPENBIT)
+ (CAPACITY 40)
+ (ACTION ROURKE-F)
+ (DESCFCN ROURKE-F)
+ (STATE 0)
+ (CHARACTER 6)>
+
+<OBJECT GLOBAL-ROURKE
+ (IN GLOBAL-OBJECTS)
+ (DESC "Mrs. Rourke")
+ (SYNONYM ROURKE)
+ (ADJECTIVE MS MRS)
+ (FLAGS PERSON)
+ (ACTION GLOBAL-PERSON)
+ (CHARACTER 6)>
+
+"Evidence"
+
+<OBJECT LIBRARY-DESK
+ (IN LIBRARY)
+ (SYNONYM DESK)
+ (ADJECTIVE LARGE EXECUTIVE)
+ (DESC "desk")
+ (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT)
+ (ACTION LIBRARY-DESK-F)
+ (CAPACITY 25)>
+
+<OBJECT NOTE-PAPER
+ (IN LIBRARY-DESK)
+ (SYNONYM PAD PAPER NOTEPAD)
+ (ADJECTIVE NOTE WHITE)
+ (FDESC "Lying atop the desk is a pad of white note paper.")
+ (DESC "note pad")
+ (FLAGS TAKEBIT READBIT BURNBIT)
+ (ACTION NOTE-PAPER-F)>
+
+<OBJECT DESK-CALENDAR
+ (IN LIBRARY-DESK)
+ (DESC "desk calendar")
+ (SYNONYM CALENDAR JULY)
+ (ADJECTIVE DESK)
+ (FLAGS TAKEBIT READBIT BURNBIT TURNBIT)
+ (ACTION DESK-CALENDAR-F)
+ (DESCFCN DESK-CALENDAR-F)>
+
+<OBJECT BAXTER-PAPERS
+ (IN SAFE)
+ (SYNONYM STACK PAPERS)
+ (FDESC "A stack of papers bound together is in the safe.")
+ (DESC "stack of papers")
+ (FLAGS TAKEBIT READBIT BURNBIT INVISIBLE)
+ (TEXT
+"Leafing through these papers, it becomes obvious that they incriminate Mr.
+Baxter in wrongdoings regarding the Focus scandal. They document funds which
+were embezzled by Baxter and tell how the scandal was hushed up. This evidence
+would be sufficient to convict Mr. Baxter in the Focus case.")>
+
+<OBJECT NEW-WILL
+ (IN SAFE)
+ (DESC "new will")
+ (SYNONYM WILL)
+ (ADJECTIVE NEW)
+ (FLAGS TAKEBIT READBIT BURNBIT)
+ (TEXT
+"This is Mr. Robner's new will, disowning George and giving his entire
+estate to his wife.")>
+
+<OBJECT NEWSPAPER
+ (FDESC
+"Leaning against the front door is today's issue of the Daily Herald.")
+ (DESC "Daily Herald")
+ (SYNONYM NEWSPAPER HERALD SECTION PAPER)
+ (ADJECTIVE DAILY FRONT FIRST)
+ (FLAGS TAKEBIT READBIT BURNBIT)
+ (ACTION NEWSPAPER-F)>
+
+<OBJECT SECOND-SECTION
+ (IN GLOBAL-OBJECTS)
+ (DESC "second section of the Herald")
+ (SYNONYM SECTION)
+ (ADJECTIVE SECOND BACK LAST)
+ (FLAGS READBIT)
+ (ACTION SECOND-SECTION-F)>
+
+<OBJECT ENVELOPE
+ (FDESC
+"A handwritten envelope, recently delivered, is lying on the table.")
+ (DESC "handwritten envelope")
+ (SYNONYM ENVELOPE)
+ (ADJECTIVE HANDWR)
+ (FLAGS TAKEBIT READBIT BURNBIT CONTBIT)
+ (CAPACITY 2)
+ (TEXT
+"|
+ CANAAN CT POST OFFICE|
+ * JULY 06 * 08:00 *|
+|
+ Mrs. Marshall Robner|
+ 506 Lake View Rd.|
+ Maitland, Ct.|
+")
+ (ACTION ENVELOPE-F)>
+
+<OBJECT LETTER
+ (IN ENVELOPE)
+ (DESC "letter")
+ (SYNONYM LETTER)
+ (SIZE 1)
+ (FLAGS TAKEBIT READBIT BURNBIT)
+ (TEXT
+"\"Dear Leslie,|
+ I am sorry to learn that Marshall has been despondent again. His
+obsessive interest in business must be causing you terrible anguish. It
+doesn't surprise me that he talks of suicide when he's in this state,
+but the thought of the business going to Baxter after he's gone will keep
+him alive.|
+ So George has finally gone too far? It's hard to believe, after all those
+empty threats, that Marshall actually followed through. It serves that little
+leech right, if you ask me. This means that, should the unthinkable happen,
+you will be provided for as you deserve.|
+ I'll see you Friday as usual.||
+ Love,|
+ Steven\"|")
+ (ACTION LETTER-F)>
+
+"Global objects"
+
+<OBJECT GLOBAL-MURDER
+ (IN GLOBAL-OBJECTS)
+ (DESC "murder")
+ (SYNONYM MURDER KILLING CRIME)
+ (ACTION GLOBAL-MURDER-F)>
+
+<OBJECT GLOBAL-SUICIDE
+ (IN GLOBAL-OBJECTS)
+ (DESC "suicide")
+ (SYNONYM SUICIDE)
+ (ACTION GLOBAL-MURDER-F)>
+
+<OBJECT GLOBAL-OMNIDYNE
+ (IN GLOBAL-OBJECTS)
+ (DESC "Omnidyne Corporation")
+ (SYNONYM OMNIDYNE)>
+
+<OBJECT GLOBAL-ROSES
+ (IN GLOBAL-OBJECTS)
+ (DESC "roses")
+ (SYNONYM ROSES GARDEN ROSE)
+ (ADJECTIVE ROSE)>
+
+<OBJECT GLOBAL-WEATHER
+ (IN GLOBAL-OBJECTS)
+ (DESC "weather")
+ (SYNONYM WEATHER CLIMATE WRONG PROBLEM)>
+
+<OBJECT GLOBAL-LIGHT
+ (IN GLOBAL-OBJECTS)
+ (DESC "light")
+ (SYNONYM LIGHT SUNLIGHT)>
+
+<OBJECT GLOBAL-OLD-WILL
+ (IN GLOBAL-OBJECTS)
+ (DESC "present will")
+ (SYNONYM WILL)
+ (ADJECTIVE CURRENT PRESENT OLD)>
+
+<OBJECT GLOBAL-NEW-WILL
+ (IN GLOBAL-OBJECTS)
+ (DESC "new will")
+ (SYNONYM WILL)
+ (ADJECTIVE NEW)>
+
+<OBJECT FOYER-TABLE
+ (IN FOYER)
+ (DESC "marble-top table")
+ (SYNONYM TABLE)
+ (ADJECTIVE MARBLE)
+ (FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
+ (CAPACITY 40)>
+
+<OBJECT TELEPHONE
+ (IN LOCAL-GLOBALS)
+ (DESC "telephone")
+ (SYNONYM TELEPHONE PHONE RECEIVER)
+ (ACTION TELEPHONE-F)>
+
+<OBJECT GLOBAL-FOCUS
+ (IN GLOBAL-OBJECTS)
+ (DESC "Focus")
+ (SYNONYM FOCUS SCANDAL CASE)
+ (ADJECTIVE FOCUS)>
+
+<OBJECT GLOBAL-MR-ROBNER
+ (IN GLOBAL-OBJECTS)
+ (DESC "Mr. Robner")
+ (SYNONYM ROBNER FATHER MARSHALL)
+ (FLAGS PERSON)
+ (ADJECTIVE MR MISTER)
+ (ACTION GLOBAL-MR-ROBNER-F)>
+
+<OBJECT BOOKSHELVES
+ (IN LIBRARY)
+ (SYNONYM BOOKSHELVES SHELVES BOOK BOOKS)
+ (ADJECTIVE BOOK)
+ (DESC "set of bookshelves")
+ (FLAGS NDESCBIT)
+ (ACTION BOOKSHELVES-F)>
+
+<OBJECT LIBRARY-BUTTON
+ (IN LIBRARY)
+ (SYNONYM BUTTON)
+ (ADJECTIVE BLACK)
+ (DESC "black button")
+ (FLAGS NDESCBIT INVISIBLE)
+ (ACTION LIBRARY-BUTTON-F)>
+
+<OBJECT RED-BUTTON
+ (IN HIDDEN-CLOSET)
+ (SYNONYM BUTTON)
+ (ADJECTIVE RED)
+ (DESC "red button")
+ (FLAGS NDESCBIT)
+ (ACTION RED-BUTTON-F)>
+
+<OBJECT BLUE-BUTTON
+ (IN HIDDEN-CLOSET)
+ (SYNONYM BUTTON)
+ (ADJECTIVE BLUE)
+ (DESC "blue button")
+ (FLAGS NDESCBIT)
+ (ACTION BLUE-BUTTON-F)>
+
+<OBJECT LADDER
+ (IN SHED-ROOM)
+ (SYNONYM LADDER)
+ (ADJECTIVE WOODEN)
+ (DESC "wooden ladder")
+ (FDESC "Leaning in a corner is a wooden ladder.")
+ (FLAGS TAKEBIT CLIMBBIT)
+ (SIZE 50)
+ (ACTION LADDER-F)>
+
+<OBJECT GLOBAL-LADDER
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM LADDER)
+ (ADJECTIVE WOODEN)
+ (DESC "ladder")
+ (FLAGS NDESCBIT)
+ (ACTION GLOBAL-LADDER-F)>
+
+<OBJECT TOOLS-1
+ (IN SHED-ROOM)
+ (SYNONYM TOOLS SAW HAMMER ROPE)
+ (DESC "collection of carpentry tools")
+ (FLAGS NDESCBIT)
+ (ACTION TOOLS-F)>
+
+<OBJECT TOOLS-2
+ (IN SHED-ROOM)
+ (SYNONYM SPADE HOE RAKE HOSE)
+ (DESC "collection of garden tools")
+ (FLAGS NDESCBIT DUPLICATE)
+ (ACTION TOOLS-F)>
+
+<OBJECT S-SHELVES
+ (IN SHED-ROOM)
+ (SYNONYM SHELVES)
+ (DESC "shelf")
+ (FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
+ (CAPACITY 20)
+ (ACTION S-SHELVES-F)>
+
+<OBJECT CUPS
+ (IN KITCHEN)
+ (SYNONYM GROUP CUPS TEACUP)
+ (ADJECTIVE CUPS ANTIQUE TEA)
+ (DESC "group of cups")
+ (FLAGS NDESCBIT)
+ (ACTION CUPS-F)>
+
+<OBJECT SAUCERS
+ (IN KITCHEN)
+ (SYNONYM GROUP SAUCER)
+ (ADJECTIVE SAUCER ANTIQUE)
+ (DESC "group of saucers")
+ (FLAGS NDESCBIT)
+ (ACTION SAUCERS-F)>
+
+<OBJECT CHINA
+ (IN KITCHEN)
+ (SYNONYM CHINA)
+ (DESC "china")
+ (FLAGS NDESCBIT)
+ (ACTION CHINA-F)>
+
+<OBJECT PLATES
+ (IN KITCHEN)
+ (SYNONYM PLATE PLATES)
+ (DESC "plates")
+ (FLAGS NDESCBIT)
+ (ACTION PLATES-F)>
+
+<OBJECT CUP
+ (IN LIBRARY)
+ (SYNONYM CUP TEACUP)
+ (ADJECTIVE TEA BEAUTIFUL)
+ (DESC "cup")
+ (FDESC
+"Turned onto its side, lying on the floor, is a beautiful teacup.")
+ (FLAGS TAKEBIT)
+ (SIZE 4)
+ (ACTION CUP-F)>
+
+<OBJECT SAUCER
+ (IN LIBRARY)
+ (SYNONYM SAUCER)
+ (ADJECTIVE BEAUTIFUL)
+ (DESC "saucer")
+ (FDESC
+"Lying on the floor, overturned, is a beautiful saucer.")
+ (FLAGS TAKEBIT)
+ (SIZE 4)
+ (ACTION SAUCER-F)>
+
+<OBJECT TRASH-BASKET
+ (IN LIBRARY)
+ (SYNONYM BASKET)
+ (ADJECTIVE WASTEP WICKER TRASH)
+ (DESC "wastepaper basket")
+ (FDESC
+"Alongside the desk is a wicker wastepaper basket.")
+ (FLAGS TAKEBIT OPENBIT CONTBIT)
+ (CAPACITY 15)
+ (SIZE 10)>
+
+<OBJECT TRASH
+ (IN TRASH-BASKET)
+ (SYNONYM TRASH PAPERS)
+ (ADJECTIVE CRUMPLED)
+ (DESC "bunch of crumpled papers")
+ (LDESC
+"Inside the wastepaper basket are some crumpled papers.")
+ (FLAGS TAKEBIT READBIT)
+ (TEXT
+"There are three wads of paper. One is a shopping list. Another is a list
+of current stock prices. The last is the start of a letter to the Board of
+Directors of the Robner Corp. Unfortunately, it does not contain enough
+information to allow even a guess about the intent of the letter.")
+ (ACTION TRASH-F)>
+
+<OBJECT GLOBAL-FINGERPRINTS
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM FINGERPRINT)
+ (DESC "fingerprints")
+ (ACTION GLOBAL-FINGERPRINTS-F)>
+
+<OBJECT LIBRARY-CARPET
+ (IN LIBRARY)
+ (SYNONYM CARPET RUG)
+ (DESC "carpet")
+ (FLAGS NDESCBIT)
+ (ACTION LIBRARY-CARPET-F)>
+
+<OBJECT LIBRARY-DOOR
+ (IN LOCAL-GLOBALS)
+ (DESC "oak door")
+ (SYNONYM DOOR)
+ (ADJECTIVE OAK BROKEN)
+ (FLAGS NDESCBIT)
+ (TEXT
+"The door is a magnificent solid oak piece. Its metal bolt is bent and the
+metal piece in which it rested has been sheared off the door frame. It seems
+clear that the door was securely locked from the inside when it was broken
+down.")>
+
+<OBJECT MUD-SPOT
+ (IN LIBRARY)
+ (DESC "mud spots")
+ (SYNONYM SPOT MARK DIRT MUD)
+ (ADJECTIVE DRIED)
+ (FLAGS NDESCBIT INVISIBLE)
+ (TEXT
+"The spots seem to be dried dirt or mud and are bunched in the area between
+the balcony and the desk.")>
+
+<OBJECT SINK
+ (IN LOCAL-GLOBALS)
+ (DESC "sink")
+ (SYNONYM SINK SINKS BOWL BASIN)
+ (FLAGS NDESCBIT FURNITURE)
+ (ACTION SINK-F)>
+
+<OBJECT TOILET
+ (IN LOCAL-GLOBALS)
+ (DESC "toilet")
+ (SYNONYM TOILET)
+ (FLAGS NDESCBIT FURNITURE SURFACEBIT VEHBIT)
+ (ACTION TOILET-F)>
+
+<OBJECT SHOWER
+ (IN LOCAL-GLOBALS)
+ (DESC "shower")
+ (SYNONYM SHOWER TUB BATH BATHTUB)
+ (ADJECTIVE SHOWER BATH)
+ (FLAGS NDESCBIT TRYTAKEBIT FURNITURE)
+ (ACTION SHOWER-F)>
+
+<OBJECT DUNBAR-CABINET
+ (IN DUNBAR-BATH)
+ (DESC "cabinet")
+ (SYNONYM CABINET CHEST)
+ (ADJECTIVE MEDICINE)
+ (FLAGS NDESCBIT CONTBIT SEARCHBIT)
+ (CAPACITY 50)>
+
+<OBJECT BATHTUB
+ (IN MASTER-BATH)
+ (DESC "bathtub")
+ (SYNONYM TUB BATHTUB)
+ (ADJECTIVE BATH)
+ (FLAGS NDESCBIT VEHBIT OPENBIT CONTBIT FURNITURE)
+ (CAPACITY 50)>
+
+<OBJECT MASTER-BATH-COUNTER
+ (IN MASTER-BATH)
+ (DESC "counter")
+ (SYNONYM COUNTER)
+ (ADJECTIVE LONG)
+ (FLAGS NDESCBIT FURNITURE SURFACEBIT CONTBIT OPENBIT)
+ (CAPACITY 50)>
+
+<OBJECT CHAIR
+ (IN LOCAL-GLOBALS)
+ (DESC "chair")
+ (SYNONYM CHAIR CHAIRS)
+ (FLAGS NDESCBIT FURNITURE)>
+
+<OBJECT SOFA
+ (IN LOCAL-GLOBALS)
+ (DESC "sofa")
+ (SYNONYM COUCH SOFA COUCHES)
+ (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT VEHBIT FURNITURE)>
+
+<OBJECT LGTABLE
+ (IN LOCAL-GLOBALS)
+ (DESC "table")
+ (SYNONYM TABLE TABLES)
+ (FLAGS NDESCBIT FURNITURE)>
+
+<OBJECT END-TABLE
+ (IN LOCAL-GLOBALS)
+ (DESC "pair of end tables")
+ (SYNONYM TABLE TABLES)
+ (ADJECTIVE END)
+ (FLAGS NDESCBIT FURNITURE)>
+
+<OBJECT LIVING-ROOM-TABLE
+ (IN LIVING-ROOM)
+ (DESC "living room table")
+ (SYNONYM TABLE TABLES)
+ (ADJECTIVE LIVING ROOM)
+ (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE)
+ (CAPACITY 40)>
+
+<OBJECT BED
+ (IN LOCAL-GLOBALS)
+ (DESC "bed")
+ (SYNONYM BED)
+ (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE VEHBIT)
+ (CAPACITY 30)
+ (ACTION BED-F)>
+
+<OBJECT WINDOW
+ (IN LOCAL-GLOBALS)
+ (DESC "window")
+ (SYNONYM WINDOW)
+ (FLAGS NDESCBIT)
+ (ACTION WINDOW-F)>
+
+<OBJECT KITCHEN-WINDOW
+ (IN LOCAL-GLOBALS)
+ (DESC "kitchen window")
+ (SYNONYM WINDOW)
+ (ADJECTIVE KITCHEN)
+ (FLAGS NDESCBIT)
+ (ACTION KITCHEN-WINDOW-F)>
+
+<OBJECT DINING-ROOM-WINDOW
+ (IN LOCAL-GLOBALS)
+ (DESC "dining room window")
+ (SYNONYM WINDOW)
+ (ADJECTIVE DINING ROOM)
+ (FLAGS NDESCBIT)
+ (ACTION DINING-ROOM-WINDOW-F)>
+
+<OBJECT MASTER-BEDROOM-DRESSER
+ (IN MASTER-BEDROOM)
+ (DESC "dresser")
+ (SYNONYM DRESSER)
+ (FLAGS NDESCBIT CONTBIT)
+ (CAPACITY 30)
+ (ACTION MASTER-BEDROOM-DRESSER-F)>
+
+<OBJECT GLOBAL-HOLE
+ (IN GLOBAL-OBJECTS)
+ (DESC "holes")
+ (SYNONYM HOLE HOLES)
+ (FLAGS NDESCBIT)
+ (ACTION HOLE-F)>
+
+<OBJECT HOLE
+ (IN IN-ROSES)
+ (DESC "holes")
+ (SYNONYM HOLE HOLES)
+ (ADJECTIVE DEEP)
+ (FLAGS NDESCBIT INVISIBLE)
+ (ACTION HOLE-F)>
+
+<OBJECT FRAGMENT
+ (IN IN-ROSES)
+ (DESC "fragment")
+ (SYNONYM PIECE PORCELAIN FRAGMENT SHARD)
+ (FLAGS INVISIBLE TAKEBIT)
+ (ACTION FRAGMENT-F)>
+
+<OBJECT SUGAR-BOWL
+ (IN TRAY)
+ (DESC "sugar bowl")
+ (FDESC
+"Sitting on the tray is a bowl containing a white powdery substance.")
+ (SYNONYM BOWL SUGAR SUBSTANCE POWDER)
+ (ADJECTIVE SUGAR WHITE POWDER)
+ (FLAGS TAKEBIT)
+ (ACTION SUGAR-BOWL-F)>
+
+<OBJECT TRAY
+ (IN LIBRARY)
+ (DESC "tray")
+ (FDESC
+"Beside the desk is a large collapsible tray.")
+ (SYNONYM TRAY)
+ (ADJECTIVE LARGE COLLAPSIBLE)
+ (FLAGS TAKEBIT CONTBIT OPENBIT SURFACEBIT)
+ (CAPACITY 40)
+ (SIZE 40)>
+
+<OBJECT SAFE
+ (IN HIDDEN-CLOSET)
+ (DESC "safe")
+ (SYNONYM COMBINATION SAFE DOOR)
+ (ADJECTIVE SAFE WALL LARGE)
+ (FLAGS NDESCBIT CONTBIT)
+ (CAPACITY 15)
+ (ACTION SAFE-F)>
+
+<OBJECT CORNERSTONE
+ (IN EAST-OF-DOOR)
+ (DESC "cornerstone")
+ (LDESC
+"The ornately carved cornerstone of the house is nearby.")
+ (SYNONYM CORNERSTONE STONE)
+ (ADJECTIVE CARVED ORNATE)
+ (FLAGS READBIT)
+ (TEXT
+"|
+ DEADLINE: An INTERLOGIC Mystery|
+ By Infocom, Inc.|
+ Marc Blank, Chief Architect|
+ Copyright 1982 by Infocom, Inc.|
+ All rights reserved.|
+DEADLINE and INTERLOGIC are trademarks of Infocom, Inc.|
+")>
+
+"DO DRUGS TO LIVE"
+
+<OBJECT LOBLO-BOTTLE
+ (IN DUNBAR-CABINET)
+ (DESC "bottle of LoBlo")
+ (SYNONYM BOTTLE LOBLO LABEL)
+ (ADJECTIVE LOBLO)
+ (FDESC
+"On the bottom shelf is a bottle of tablets labelled 'LoBlo'.")
+ (FLAGS TAKEBIT READBIT CONTBIT)
+ (CAPACITY 5)
+ (TEXT
+"Frobizz Pharmacy #69105|
+|
+Ms. S. Dunbar|
+LoBLO|
+Take 1 tablet 3 times daily|
+|
+Fizmo Labs, Ltd. - Kingston, Ont.|
+LoBLO Brand of Methsparin, USP|
+10mg Tablets|
+|
+Warning: LoBLO may be dangerous|
+when used in combination with|
+other medications. Please read|
+the enclosed circular prior to|
+using these tablets.|
+")>
+
+<OBJECT GLOBAL-EBULLION
+ (IN GLOBAL-OBJECTS)
+ (DESC "Ebullion tablets")
+ (SYNONYM TABLETS EBULLION PILLS)
+ (ADJECTIVE EBULLION)>
+
+<OBJECT GLOBAL-LOBLO
+ (IN GLOBAL-OBJECTS)
+ (DESC "LoBlo tablets")
+ (SYNONYM TABLETS LOBLO PILLS)
+ (ADJECTIVE LOBLO)>
+
+<OBJECT LOBLO
+ (IN LOBLO-BOTTLE)
+ (DESC "couple of LoBLO tablets")
+ (SYNONYM COUPLE TABLETS PILLS LOBLO)
+ (ADJECTIVE LOBLO)
+ (FLAGS TAKEBIT DRUGBIT)
+ (SIZE 4)
+ (ACTION LOBLO-F)
+ (COUNT 10)>
+
+<OBJECT ASPIRIN-BOTTLE
+ (IN DUNBAR-CABINET)
+ (DESC "bottle of aspirin")
+ (FDESC
+"On the top shelf, among various toilet items, is a bottle of aspirin.")
+ (SYNONYM BOTTLE ASPIRIN LABEL)
+ (ADJECTIVE ASPIRIN)
+ (FLAGS TAKEBIT READBIT CONTBIT)
+ (CAPACITY 5)
+ (TEXT
+"|
+|
+Generic ASPIRIN, usp|
+ 30mg / 5 gr|
+|
+")>
+
+<OBJECT ASPIRIN
+ (IN ASPIRIN-BOTTLE)
+ (DESC "handful of aspirin tablets")
+ (SYNONYM PILLS TABLETS ASPIRIN HANDFUL)
+ (ADJECTIVE ASPIRIN)
+ (FLAGS TAKEBIT DRUGBIT)
+ (SIZE 4)
+ (COUNT 15)>
+
+<OBJECT DUM-KOF-BOTTLE
+ (IN DUNBAR-CABINET)
+ (DESC "bottle of cough medicine")
+ (FDESC
+"Standing on a shelf beside some nail polish is a bottle of cough medicine.")
+ (SYNONYM BOTTLE MEDICINE DUM-KOF LABEL)
+ (ADJECTIVE COUGH)
+ (FLAGS TAKEBIT READBIT CONTBIT)
+ (CAPACITY 4)
+ (TEXT
+"|
+General Drug Co.|
+ DUM - KOF|
+ Cough Supressant|
+|
+Directions: 1 tsp every 3-4 hrs|
+Warning: Take as Directed. May|
+cause sedation when taken with other|
+drugs.|
+|")>
+
+<OBJECT DUM-KOF
+ (IN DUM-KOF-BOTTLE)
+ (DESC "quantity of cough syrup")
+ (SYNONYM SYRUP)
+ (ADJECTIVE COUGH)
+ (FLAGS TAKEBIT)
+ (SIZE 4)
+ (ACTION DUM-KOF-F)>
+
+<OBJECT EBULLION-BOTTLE
+ (IN LIBRARY)
+ (DESC "bottle of Ebullion")
+ (SYNONYM LABEL BOTTLE EBULLION)
+ (ADJECTIVE EBULLION)
+ (FLAGS TAKEBIT CONTBIT READBIT)
+ (CAPACITY 5)
+ (TEXT
+"Head Drugs No. 44543|
+|
+Mr. Marshall Robner|
+|
+EBULLION Tablets, 25mg.|
+|
+Directions: Take 1 or 2 twice|
+daily for depression.|
+|
+Warning: Keep out of the reach|
+of children. May be harmful or|
+fatal in sufficient dosage.|
+")>
+
+<OBJECT EBULLION
+ (IN EBULLION-BOTTLE)
+ (DESC "couple of Ebullion tablets")
+ (SYNONYM COUPLE TABLETS EBULLION)
+ (ADJECTIVE EBULLION)
+ (COUNT 3)
+ (SIZE 4)
+ (FLAGS TAKEBIT DRUGBIT)
+ (ACTION EBULLION-F)>
+
+<OBJECT LAB-REPORT
+ (DESC "lab report")
+ (SYNONYM REPORT PAPER NOTE SLIP)
+ (ADJECTIVE LAB)
+ (FLAGS TAKEBIT READBIT)
+ (TEXT
+"Dear Inspector,|
+|
+ In response to your request for analysis of the ceramic fragment, we have
+found evidence of a drug called Methsparin, which is usually sold in this
+country under the name \"LoBlo\". It is a blood pressure lowering agent used
+primarily in Europe, which explains the oversight in our blood analysis of the
+deceased. A double check reveals a high blood level of Methsparin. While the
+amount of Methsparin in the blood isn't dangerous in itself, a strong reaction
+between it and various other drugs has been well documented. As you may have
+gathered, one of those drugs is Amitraxin (Ebullion). The effect of Methsparin
+is to displace Amitraxin from protein binding, leaving more free in the blood
+and simulating an overdose.|
+ Your new evidence leads me to conclude that the cause of death was
+Amitraxin toxicity secondary to ingestion of Methsparin and Amitraxin in
+combination.|
+|
+Sincerely,|
+|
+Arthur Chatworth, Pathologist|
+")>
+
+<OBJECT GLOBAL-MEETING
+ (IN GLOBAL-OBJECTS)
+ (DESC "meeting")
+ (SYNONYM MEETING RENDEZVOUS TRYST)
+ (ADJECTIVE SECRET PRIVATE)>
+
+<OBJECT GLOBAL-CALL
+ (IN GLOBAL-OBJECTS)
+ (DESC "telephone conversation")
+ (SYNONYM CALL CONVERSATION LEFT RIGHT)
+ (ADJECTIVE TELEPHONE PHONE)
+ (ACTION GLOBAL-CALL-F)>
+
+<OBJECT SHED-WINDOW
+ (IN LOCAL-GLOBALS)
+ (DESC "window")
+ (SYNONYM WINDOW)
+ (ADJECTIVE SHED DIRTY GRIMY)
+ (ACTION SHED-WINDOW-F)>
+
+<OBJECT INTNUM
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM INTNUM)
+ (DESC "number")>
+
+<OBJECT PISTOL
+ (DESC "smoking gun")
+ (SYNONYM PISTOL GUN)
+ (ADJECTIVE SMOKING)
+ (FDESC "Lying beside the body is a smoking gun.")
+ (FLAGS TAKEBIT)
+ (ACTION PISTOL-F)>
+
+<OBJECT CORPSE
+ (DESC "body of Ms. Dunbar")
+ (SYNONYM BODY DUNBAR CORPSE STIFF)
+ (ADJECTIVE MS BLOODY)
+ (FDESC "Sprawled on the floor is the body of Ms. Dunbar.")
+ (ACTION CORPSE-F)>
+
+<OBJECT SUICIDE-NOTE
+ (DESC "suicide note")
+ (SYNONYM NOTE HANDWR)
+ (ADJECTIVE SUICIDE)
+ (FDESC "Next to the body, near a pool of blood, is a note.")
+ (FLAGS TAKEBIT READBIT)
+ (ACTION SUICIDE-NOTE-F)
+ (TEXT
+"The note is written in thin blue ink in a very unsteady hand and
+is smeared with blood from your touch. It says:||
+ \"I killed Mr. Robner. Please forgive me.\"|
+")>
+
+<OBJECT POOL-OF-BLOOD
+ (DESC "pool of blood")
+ (SYNONYM POOL BLOOD)
+ (LDESC "A pool of blood is at the head of the body.")>
+
+<OBJECT GLOBAL-PEN
+ (IN GLOBAL-OBJECTS)
+ (DESC "pen")
+ (SYNONYM PEN)
+ (ADJECTIVE BLUE)
+ (ACTION GLOBAL-PEN-F)>
+
+<OBJECT SEURAT
+ (IN DINING-ROOM)
+ (DESC "Seurat")
+ (SYNONYM SEURAT)
+ (FLAGS NDESCBIT)
+ (ACTION SEURAT-F)>
+
+<OBJECT PAINTINGS
+ (IN DINING-ROOM)
+ (DESC "collection of paintings")
+ (SYNONYM PAINTING COLLECTION PICTURE)
+ (ADJECTIVE PAINTING)
+ (FLAGS NDESCBIT)
+ (ACTION PAINTINGS-F)>
+
+<OBJECT SHELF-UNIT
+ (IN KITCHEN)
+ (DESC "shelf unit")
+ (SYNONYM SHELF UNIT)
+ (ADJECTIVE BEAUTIFUL SHELF)
+ (FLAGS NDESCBIT)>
+
+<OBJECT APPLIANCE-1
+ (IN KITCHEN)
+ (DESC "appliance")
+ (SYNONYM APPLIANCE OVEN STOVE REFRIGERATOR)
+ (FLAGS NDESCBIT)
+ (ACTION APPLIANCE-F)>
+
+<OBJECT APPLIANCE-2
+ (IN KITCHEN)
+ (DESC "appliance")
+ (SYNONYM WASHER DISHWASHER DISPOSAL COMPACTOR)
+ (ADJECTIVE GARBAGE DISH)
+ (FLAGS NDESCBIT DUPLICATE)
+ (ACTION APPLIANCE-F)>
+
+<OBJECT DINING-ROOM-TABLE
+ (IN DINING-ROOM)
+ (DESC "long table")
+ (SYNONYM TABLE)
+ (ADJECTIVE LONG)
+ (FLAGS FURNITURE NDESCBIT)>
+
+<OBJECT TRESTLE-TABLE
+ (IN DINING-ROOM)
+ (DESC "trestle table")
+ (SYNONYM TABLE)
+ (ADJECTIVE LARGE TRESTLE)
+ (FLAGS FURTINTURE NDESCBIT)>
+
+<OBJECT PEN
+ (DESC "blue pen")
+ (SYNONYM PEN)
+ (ADJECTIVE BLUE)
+ (FLAGS TAKEBIT)
+ (ACTION PEN-F)>
+
+<OBJECT GLOBAL-STEVEN
+ (IN GLOBAL-OBJECTS)
+ (DESC "Steven")
+ (SYNONYM STEVEN STEVE)>
+
+<OBJECT GLOBAL-SAFE
+ (IN GLOBAL-OBJECTS)
+ (DESC "safe")
+ (SYNONYM COMBINATION SAFE)>
+
+<OBJECT CORRIDOR-WINDOW
+ (IN CORRIDOR-4)
+ (DESC "window")
+ (SYNONYM WINDOW)
+ (FLAGS NDESCBIT)
+ (ACTION CORRIDOR-WINDOW-F)>
+
+<OBJECT TODAY
+ (IN GLOBAL-OBJECTS)
+ (DESC "today")
+ (SYNONYM TODAY)
+ (ACTION TODAY-F)>
+
+<OBJECT GLOBAL-WARRANT
+ (IN GLOBAL-OBJECTS)
+ (DESC "search warrant")
+ (SYNONYM WARRANT)
+ (ADJECTIVE SEARCH)
+ (ACTION GLOBAL-WARRANT-F)>
+
+<OBJECT GLOBAL-WATER
+ (IN GLOBAL-OBJECTS)
+ (DESC "water")
+ (SYNONYM WATER)>
+
+<OBJECT CIRCULAR
+ (IN GLOBAL-OBJECTS)
+ (DESC "circular")
+ (SYNONYM CIRCULAR)>
+
+<OBJECT GLOBAL-DUFFY
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM DUFFY)
+ (ADJECTIVE SERGEANT)
+ (DESC "Sergeant Duffy")
+ (ACTION GLOBAL-DUFFY-F)>
+
+<OBJECT L-RAILING
+ (IN LIBRARY-BALCONY)
+ (SYNONYM RAILING)
+ (ADJECTIVE METAL)
+ (DESC "railing")
+ (FLAGS NDESCBIT)
+ (ACTION L-RAILING-F)>
+
+<OBJECT B-RAILING
+ (IN BEDROOM-BALCONY)
+ (SYNONYM RAILING)
+ (ADJECTIVE METAL)
+ (DESC "railing")
+ (FLAGS NDESCBIT)
+ (ACTION B-RAILING-F)>
+
+<OBJECT L-BALCONY
+ (IN LIBRARY-BALCONY)
+ (SYNONYM BALCONY)
+ (DESC "balcony")
+ (FLAGS NDESCBIT)
+ (ACTION L-BALCONY-F)>
+
+<OBJECT B-BALCONY
+ (IN BEDROOM-BALCONY)
+ (SYNONYM BALCONY)
+ (DESC "balcony")
+ (FLAGS NDESCBIT)
+ (ACTION B-BALCONY-F)>
+
+<OBJECT GLOBAL-MERGER
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM MERGER)
+ (ADJECTIVE OMNIDYNE)
+ (DESC "merger")>
+
+<OBJECT GLOBAL-ROOM
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM ROOM WALL WALLS)
+ (DESC "room")
+ (ACTION GLOBAL-ROOM-F)>
+
+<OBJECT COATES
+ (SYNONYM COATES)
+ (ADJECTIVE MR)
+ (DESC "Mr. Coates")
+ (FLAGS PERSON)
+ (CHARACTER 7)
+ (STATE 0)
+ (ACTION COATES-F)
+ (DESCFCN COATES-F)>
+
+<OBJECT GLOBAL-COATES
+ (IN GLOBAL-OBJECTS)
+ (SYNONYM COATES)
+ (ADJECTIVE MR)
+ (DESC "Mr. Coates")
+ (FLAGS PERSON)
+ (CHARACTER 7)
+ (ACTION GLOBAL-PERSON)>
+
+<OBJECT OBJECT-PAIR
+ (DESC "combination of objects specified")
+ (ACTION OBJECT-PAIR-F)>
+
+<OBJECT NOON
+ (IN GLOBAL-OBJECTS)
+ (DESC "noontime")
+ (SYNONYM NOON)>
+
+<OBJECT CRYSTAL-LAMP
+ (IN FOYER)
+ (DESC "crystal lamp")
+ (SYNONYM LAMP CHANDELIER)
+ (ADJECTIVE FINE CRYSTAL)
+ (FLAGS NDESCBIT)>
+
+<OBJECT FIREPLACE
+ (IN LIVING-ROOM)
+ (DESC "fieldstone fireplace")
+ (SYNONYM FIREPL)
+ (ADJECTIVE FIELDS)
+ (FLAGS NDESCBIT)>
+
+<OBJECT WOOD-PILE
+ (IN LIVING-ROOM)
+ (DESC "wood pile")
+ (SYNONYM PILE)
+ (ADJECTIVE WOOD)
+ (FLAGS NDESCBIT)>
+
+<OBJECT PORTRAITS
+ (IN LIVING-ROOM)
+ (DESC "collection of portraits")
+ (SYNONYM PORTRAITS COLLECTION PICTURE PAINTING)
+ (ADJECTIVE PORTRAITS)
+ (FLAGS NDESCBIT)
+ (ACTION PORTRAITS-F)>
+
+<OBJECT LR-CABINETS
+ (IN LIVING-ROOM)
+ (DESC "fine wooden cabinets")
+ (SYNONYM CABINET)
+ (ADJECTIVE FINE WOODEN)
+ (FLAGS NDESCBIT)
+ (ACTION LR-CABINETS-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)
+ (FLAGS TRYTAKEBIT)
+ (ACTION SILVERWARE-F)>
+
+<OBJECT GLASSES
+ (IN K-CABINETS)
+ (DESC "glass collection")
+ (SYNONYM GLASS GLASSES COLLECTION)
+ (ADJECTIVE GLASS)
+ (FLAGS TRYTAKEBIT)
+ (ACTION GLASSES-F)>
+
+<OBJECT P-SHELVES
+ (IN PANTRY)
+ (DESC "set of wooden shelves")
+ (SYNONYM SHELVES)
+ (ADJECTIVE WOODEN)
+ (FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
+ (CAPACITY 30)>
+
+<OBJECT FOODS
+ (IN P-SHELVES)
+ (DESC "food assortment")
+ (SYNONYM FOOD FOODS CAN CANS)
+ (ADJECTIVE DRIED CANNED PACKAGED)
+ (ACTION FOODS-F)>
+
+<OBJECT FRUIT-TREES
+ (IN LOCAL-GLOBALS)
+ (DESC "fruit tree")
+ (SYNONYM TREE)
+ (ADJECTIVE FRUIT APPLE PEAR PEACH)
+ (FLAGS NDESCBIT)
+ (ACTION FRUIT-TREES-F)>
+
+<OBJECT BERRY-BUSH
+ (IN IN-ORCHARD)
+ (DESC "berry bush")
+ (SYNONYM BUSH)
+ (ADJECTIVE BERRY BERRIE)
+ (FLAGS NDESCBIT)
+ (ACTION BERRY-BUSH-F)>
+
+<OBJECT BATHROOM-MIRROR
+ (IN MASTER-BATH)
+ (DESC "mirror")
+ (SYNONYM MIRROR)
+ (FLAGS NDESCBIT)
+ (ACTION BATHROOM-MIRROR-F)>
+
+<OBJECT HANGING-PLANTS
+ (IN MASTER-BATH)
+ (DESC "hanging plant")
+ (SYNONYM PLANT PLANTS)
+ (ADJECTIVE HANGING)
+ (FLAGS NDESCBIT)>
+
+<OBJECT DUST
+ (IN HIDDEN-CLOSET)
+ (DESC "dust and cobwebs")
+ (SYNONYM DUST COBWEBS)
+ (FLAGS NDESCBIT)>
+
+<OBJECT GLOBAL-HIDDEN-CLOSET
+ (IN GLOBAL-OBJECTS)
+ (DESC "hidden closet")
+ (SYNONYM CLOSET)
+ (ADJECTIVE HIDDEN)
+ (FLAGS NDESCBIT)>
+
+<OBJECT TREE-TOPS
+ (IN BEDROOM-BALCONY)
+ (DESC "treetop")
+ (SYNONYM TREETOP TOP)
+ (ADJECTIVE TREE)
+ (FLAGS NDESCBIT)
+ (ACTION TREE-TOPS-F)>
+
+<OBJECT FOUR-POSTER
+ (IN MASTER-BEDROOM)
+ (DESC "four-poster bed")
+ (SYNONYM BED POSTER)
+ (ADJECTIVE FOUR FOUR-)
+ (FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT FURNITURE VEHBIT)
+ (CAPACITY 30)
+ (ACTION BED-F)>
+
+<OBJECT LOUNGE
+ (IN MASTER-BEDROOM)
+ (DESC "lounge")
+ (SYNONYM LOUNGE)
+ (FLAGS NDESCBIT FURNITURE)>
+
+<OBJECT BEDROOM-MIRROR
+ (IN MASTER-BEDROOM)
+ (DESC "large mirror")
+ (SYNONYM MIRROR FRAME)
+ (ADJECTIVE LARGE GILT)
+ (FLAGS NDESCBIT)
+ (ACTION BATHROOM-MIRROR-F)>
+
+<OBJECT SHAVING-GEAR
+ (IN GEORGE-BATH)
+ (DESC "shaving gear")
+ (SYNONYM GEAR RAZOR CREAM)
+ (ADJECTIVE SHAVING)
+ (FLAGS NDESCBIT)>
+
+<OBJECT LIQUOR-CABINET
+ (IN GEORGE-ROOM)
+ (DESC "liquor cabinet")
+ (SYNONYM CABINET)
+ (ADJECTIVE LIQUOR)
+ (FLAGS NDESCBIT CONTBIT SEARCHBIT)
+ (CAPACITY 30)>
+
+<OBJECT SCOTCH
+ (IN LIQUOR-CABINET)
+ (DESC "bottle of Scotch")
+ (FDESC
+"A half-filled bottle of Scotch is in the cabinet.")
+ (SYNONYM BOTTLE SCOTCH)
+ (ADJECTIVE SCOTCH)
+ (FLAGS TAKEBIT)
+ (ACTION LIQUOR-F)>
+
+<OBJECT BOURBON
+ (IN LIQUOR-CABINET)
+ (DESC "bottle of Bourbon")
+ (FDESC
+"A nearly empty bottle of Bourbon is here.")
+ (SYNONYM BOTTLE BOURBON)
+ (ADJECTIVE BOURBON)
+ (FLAGS TAKEBIT)
+ (ACTION LIQUOR-F)>
+
+<OBJECT STEREO
+ (IN GEORGE-ROOM)
+ (DESC "stereo")
+ (SYNONYM STEREO VOLUME MUSIC HIFI)
+ (FLAGS NDESCBIT)
+ (ACTION STEREO-F)>
+
+<OBJECT RECORDS
+ (IN GEORGE-ROOM)
+ (DESC "record collection")
+ (SYNONYM RECORD)
+ (FLAGS NDESCBIT)
+ (ACTION RECORDS-F)>
+
+<OBJECT TAPES
+ (IN GEORGE-ROOM)
+ (DESC "tape collection")
+ (SYNONYM TAPE TAPES CASSETTE)
+ (FLAGS NDESCBIT)
+ (ACTION TAPES-F)>
+
+<OBJECT ROURKE-SHELVES
+ (IN ROURKE-BATH)
+ (DESC "shelf")
+ (SYNONYM SHELVES SHELF)
+ (FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
+ (CAPACITY 30)>
+
+<OBJECT C11-SHELVES
+ (IN CLOSET-11)
+ (DESC "shelf")
+ (SYNONYM SHELVES SHELF)
+ (FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
+ (CAPACITY 30)>
+
+<OBJECT C11-LINENS
+ (IN C11-SHELVES)
+ (DESC "linens")
+ (SYNONYM LINENS SHEETS LINEN)
+ (FLAGS NDESCBIT)
+ (ACTION CLOSET-STUFF-F)>
+
+<OBJECT UC-SHELVES
+ (IN UPSTAIRS-CLOSET)
+ (DESC "shelf")
+ (SYNONYM SHELVES SHELF)
+ (FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
+ (CAPACITY 30)>
+
+<OBJECT UC-LINENS
+ (IN UC-SHELVES)
+ (DESC "linens")
+ (SYNONYM LINENS SHEETS LINEN)
+ (FLAGS NDESCBIT)
+ (ACTION CLOSET-STUFF-F)>
+
+<OBJECT UC-TOWELS
+ (IN UC-SHELVES)
+ (DESC "towel")
+ (SYNONYM TOWEL TOWELS)
+ (FLAGS NDESCBIT)
+ (ACTION CLOSET-STUFF-F)>
+
+<OBJECT SNEEZO-BOTTLE
+ (IN MASTER-BATH-COUNTER)
+ (DESC "bottle of Sneezo brand decongestant")
+ (SYNONYM BOTTLE DECONG SNEEZO)
+ (ADJECTIVE BOTTLE DECONG SNEEZO BRAND)
+ (FDESC
+"On the counter is a bottle of Sneezo tablets.")
+ (FLAGS TAKEBIT READBIT CONTBIT ;TRANSBIT)
+ (CAPACITY 5)
+ (ACTION MEDICINE-BOTTLE-F)
+ (TEXT
+"Lakeville Pharmacy #223224|
+|
+Mrs. M. Robner|
+Take 1 tablet every 3 hours as needed|
+|
+Sniffle Labs|
+Sneezo Tablets|
+")>
+
+<OBJECT GLOBAL-SNEEZO
+ (IN GLOBAL-OBJECTS)
+ (DESC "Sneezo tablets")
+ (SYNONYM TABLETS SNEEZO DECONG PILLS)
+ (ADJECTIVE DECONG SNEEZO)>
+
+<OBJECT SNEEZO
+ (IN SNEEZO-BOTTLE)
+ (DESC "handful of Sneezo tablets")
+ (SYNONYM HANDFUL TABLETS DECONG SNEEZO)
+ (ADJECTIVE DECONG SNEEZO)
+ (FLAGS TAKEBIT DRUGBIT)
+ (SIZE 4)
+ (ACTION SNEEZO-F)
+ (COUNT 20)>
+
+<OBJECT ALLERGONE-BOTTLE
+ (IN MASTER-BATH-COUNTER)
+ (DESC "bottle of Allergone")
+ (SYNONYM BOTTLE ALLERGONE)
+ (ADJECTIVE BOTTLE ALLERGONE)
+ (FDESC
+"Beside a toothbrush is a bottle of Allergone.")
+ (FLAGS TAKEBIT READBIT CONTBIT ;TRANSBIT)
+ (ACTION MEDICINE-BOTTLE-F)
+ (CAPACITY 5)
+ (TEXT
+"Lakeville Pharmacy #220331|
+|
+Mrs. M. Robner|
+Take 2 tablets every 4 hours as needed
+for allergy symptoms. Do not exceed
+recommended dosage.|
+|
+Rash Labs / Allergone Tablets|
+|
+May cause extreme drowsiness. Do not|
+use machinery or drive while taking this|
+medication. Combination of Allergone with|
+alcohol is dangerous. In case of overdose|
+consult a physician promptly. Keep out|
+of the reach of children!|
+")>
+
+<OBJECT GLOBAL-ALLERGONE
+ (IN GLOBAL-OBJECTS)
+ (DESC "Allergone tablets")
+ (SYNONYM TABLETS ALLERGONE PILLS)
+ (ADJECTIVE ALLERGONE)>
+
+<OBJECT ALLERGONE
+ (IN ALLERGONE-BOTTLE)
+ (DESC "bunch of Allergone tablets")
+ (SYNONYM BUNCH TABLETS ALLERGONE)
+ (ADJECTIVE ALLERGONE)
+ (FLAGS TAKEBIT DRUGBIT)
+ (SIZE 4)
+ (ACTION ALLERGONE-F)
+ (COUNT 15)>
+
+<OBJECT CLOSET
+ (IN LOCAL-GLOBALS)
+ (DESC "closet")
+ (SYNONYM CLOSET)
+ (ACTION GLOBAL-ROOM-F)>
+
+<OBJECT GUEST-WINDOW
+ (IN GUEST-ROOM)
+ (DESC "window")
+ (SYNONYM WINDOW)
+ (ACTION GUEST-WINDOW-F)
+ (FLAGS NDESCBIT)>
+
+<OBJECT SOGGY-WILL
+ (DESC "wet piece of paper")
+ (SYNONYM PIECE PAPER)
+ (ADJECTIVE PAPER WET DRENCHED SOGGY)
+ (FLAGS TAKEBIT READBIT)
+ (TEXT
+"The paper was once some sort of document. It is now smeared and
+completely unreadable.")>
+
+<OBJECT PENCIL
+ (IN LIBRARY)
+ (DESC "pencil")
+ (SYNONYM PENCIL)
+ (FDESC "A pencil is lying on the floor near the desk.")
+ (FLAGS TAKEBIT)>
+
+<OBJECT GLOBAL-HERE
+ (IN GLOBAL-OBJECTS)
+ (DESC "here")
+ (SYNONYM HERE)
+ (FLAGS NDESCBIT)
+ (ACTION GLOBAL-HERE-F)>
+
+<OBJECT GLOBAL-RED-HERRINGS
+ (IN GLOBAL-OBJECTS)
+ (DESC "red herring")
+ (SYNONYM HERRING)
+ (ADJECTIVE RED)
+ (FLAGS NDESCBIT)
+ (ACTION GLOBAL-RED-HERRINGS-F)>
+
+<OBJECT RECURSIVE-BOOK
+ (IN LIVING-ROOM)
+ (DESC "mystery book")
+ (SYNONYM BOOK)
+ (ADJECTIVE HARDCOVER MYSTERY)
+ (FDESC "Sitting on a table is a hardcover book.")
+ (FLAGS TAKEBIT READBIT)
+ (ACTION RECURSIVE-BOOK-F)>
+
+<OBJECT GLOBAL-ENDING
+ (IN GLOBAL-OBJECTS)
+ (DESC "ending")
+ (ADJECTIVE LAST)
+ (SYNONYM ENDING END BOOK PAGE)
+ (ACTION GLOBAL-ENDING-F)>
+
+<OBJECT STUB
+ (DESC "ticket stub")
+ (SYNONYM TICKET STUB)
+ (ADJECTIVE TICKET)
+ (FLAGS TAKEBIT READBIT)
+ (LDESC "Lying on the ground is what appears to be a ticket stub.")
+ (TEXT
+"|
+ Hartford|
+ Philharmonic|
+ Orchestra|
+|
+ July 7, 1982|
+|
+ - 8PM -|
+|
+Row R / Seat 7|
+|
+-^-^-^-^-^-^-^|
+|")>
+
+<OBJECT RANDOM-MEAL
+ (IN GLOBAL-OBJECTS)
+ (DESC "meal")
+ (SYNONYM MEAL LUNCH DINNER BREAKFAST)
+ (ACTION RANDOM-MEAL-F)>
+
+<OBJECT GLOBAL-HOUSE
+ (IN GLOBAL-OBJECTS)
+ (DESC "house")
+ (SYNONYM HOUSE)
+ (ACTION GLOBAL-HOUSE-F)>
+
+<OBJECT GRAPE-ARBOR
+ (IN IN-ORCHARD)
+ (DESC "grape arbor")
+ (SYNONYM ARBOR GRAPE)
+ (ADJECTIVE GRAPE)
+ (FLAGS NDESCBIT)
+ (ACTION GRAPE-ARBOR-F)>
+
+<OBJECT GLOBAL-CONCERT
+ (IN GLOBAL-OBJECTS)
+ (DESC "concert")
+ (SYNONYM SYMPHONY CONCERT PERFORMANCE)
+ (ADJECTIVE SYMPHONY PHILHARMONIC)>
+ \ No newline at end of file
diff --git a/goal.zil b/goal.zil
new file mode 100644
index 0000000..174c72f
--- /dev/null
+++ b/goal.zil
@@ -0,0 +1,730 @@
+"GOAL for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+"This code is the local T system. There are four transit lines:
+ TOP-OF-THE-LINE, BOTTOM-LINE, FOOD-LINE, and OUTSIDE-LINE,
+ corresponding to upstairs, downstairs, kitchen area, and outside.
+ There are routes for each of these lines and transfer points. Much of
+ this is done for the general case, except transfers. Sigh."
+
+<GLOBAL DIR-STRINGS
+ <TABLE 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">>
+
+<GLOBAL TOP-OF-THE-LINE
+ <TABLE 0 LIBRARY-BALCONY P?SOUTH
+ P?NORTH LIBRARY P?SOUTH
+ P?NORTH CORRIDOR-4 P?EAST
+ P?WEST CORRIDOR-3 P?EAST
+ P?WEST CORRIDOR-2 P?EAST
+ P?WEST CORRIDOR-1 P?EAST
+ P?WEST STAIR-TOP P?SOUTH
+ P?NORTH SHALL-11 P?EAST
+ P?WEST SHALL-12 0 >>
+
+<GLOBAL BOTTOM-LINE
+ <TABLE 0 FOYER P?NORTH
+ P?SOUTH NFOYER P?NORTH
+ P?WEST STAIR-BOTTOM P?SOUTH
+ P?NORTH SHALL-1 P?EAST
+ P?WEST SHALL-2 P?EAST
+ P?WEST SHALL-3 0>>
+
+<GLOBAL OUTSIDE-LINE
+ <TABLE 0 FRONT-PATH P?EAST
+ P?WEST EAST-OF-DOOR P?NE
+ P?SOUTH EAST-SIDE P?EAST
+ P?WEST EAST-LAWN P?NW
+ P?SE ORCHARD P?NORTH
+ P?SE NORTH-LAWN P?SOUTH
+ P?NORTH ROSE-GARDEN P?WEST
+ P?NE WEST-LAWN P?EAST
+ P?WEST WEST-SIDE P?SOUTH
+ P?NW WEST-OF-DOOR P?SOUTH
+ P?NORTH SOUTH-LAWN 0>>
+
+<GLOBAL FOOD-LINE
+ <TABLE 0 DINING-ROOM P?EAST
+ P?WEST CORNER P?NORTH
+ P?SOUTH KITCHEN P?EAST
+ P?WEST PANTRY 0>>
+
+"Rapid Transit Line Identifiers"
+
+<CONSTANT TOP-OF-THE-LINE-C 0>
+<CONSTANT BOTTOM-LINE-C 1>
+<CONSTANT OUTSIDE-LINE-C 2>
+<CONSTANT FOOD-LINE-C 3>
+
+<ROUTINE UNPRIORITIZE (PERSON "AUX" GT)
+ <SET GT <GET ,GOAL-TABLES <GETP .PERSON ,P?CHARACTER>>>
+ <PUT .GT ,GOAL-PRIORITY <>>
+ <COND (<GET .GT ,GOAL-QUEUED>
+ <ESTABLISH-GOAL .PERSON <GET .GT ,GOAL-QUEUED>>
+ <PUT .GT ,GOAL-QUEUED <>>)>>
+
+<ROUTINE ESTABLISH-GOAL (PERSON GOAL "OPTIONAL" (PRIORITY <>)
+ "AUX" (HERE <LOC .PERSON>) HL GL GT)
+ #DECL ((PERSON GOAL HERE) OBJECT (HL GL) FIX
+ (PRIORITY) <OR FALSE ATOM>)
+ <SET GT <GET ,GOAL-TABLES <GETP .PERSON ,P?CHARACTER>>>
+ <COND (.PRIORITY
+ <PUT .GT ,GOAL-ENABLE T>
+ <PUT .GT ,GOAL-PRIORITY T>
+ <PUT .GT ,GOAL-QUEUED .HERE>)>
+ <COND (<==? <SET HL <GETP .HERE ,P?LINE>>
+ <SET GL <GETP .GOAL ,P?LINE>>>
+ <PUT .GT ,GOAL-I <>>)
+ (<==? .HL ,TOP-OF-THE-LINE-C>
+ <PUT .GT ,GOAL-I ,STAIR-TOP>)
+ (<==? .HL ,OUTSIDE-LINE-C>
+ <PUT .GT ,GOAL-I ,FRONT-PATH>)
+ (<==? .HL ,FOOD-LINE-C>
+ <PUT .GT ,GOAL-I ,CORNER>)
+ (<==? .GL ,TOP-OF-THE-LINE-C>
+ <PUT .GT ,GOAL-I ,STAIR-BOTTOM>)
+ (<==? .GL ,FOOD-LINE-C>
+ <PUT .GT ,GOAL-I ,NFOYER>)
+ (T
+ <PUT .GT ,GOAL-I ,FOYER>)>
+ <PUT .GT ,GOAL-S <GETP .GOAL ,P?STATION> ;CHOMP>
+ <PUT .GT ,GOAL-F .GOAL>
+ <LOC .PERSON>>
+
+<ROUTINE FOLLOW-GOAL (PERSON "AUX" (HERE <LOC .PERSON>) LINE LN RM GT GOAL FLG
+ (GOAL-FLAG <>) (IGOAL <>) LOC (CNT 1) DIR)
+ #DECL ((PERSON HERE LOC RM) OBJECT (LN CNT) FIX
+ (GOAL-FLAG IGOAL) <OR ATOM FALSE>)
+ <SET GT <GET ,GOAL-TABLES <GETP .PERSON ,P?CHARACTER>>>
+ <COND (<==? .HERE <GET .GT ,GOAL-F>>
+ <SET FLG <GOAL-REACHED .PERSON>>
+ <PUT .GT ,GOAL-S <>>
+ <RETURN .FLG>)
+ (<NOT <GET .GT ,GOAL-ENABLE>> <RFALSE>)>
+ <COND (<NOT <==? <SET LOC <GETP .HERE ,P?STATION> ;CHOMP> .HERE>>
+ <RETURN <MOVE-PERSON .PERSON .LOC>>)>
+ <COND (<SET GOAL <GET .GT ,GOAL-I>>
+ <SET IGOAL T>)
+ (T <SET GOAL <GET .GT ,GOAL-S>>)>
+ <COND (<NOT .GOAL> <RFALSE>)
+ (<==? .HERE ,STAIRS>
+ <RETURN <TRANSFER .PERSON .HERE <GET .GT ,GOAL-F>>>)
+ (<==? .HERE .GOAL>
+ <COND (.IGOAL
+ <RETURN <TRANSFER .PERSON .GOAL <GET .GT ,GOAL-F>>>)
+ (<NOT <==? .HERE <GET .GT ,GOAL-F>>>
+ <SET FLG <MOVE-PERSON .PERSON <GET .GT ,GOAL-F>>>
+ <PUT .GT ,GOAL-S <>>
+ <COND (.FLG <GOAL-REACHED .PERSON>)
+ (T <SET FLG <GOAL-REACHED .PERSON>>)>
+ <RETURN .FLG>)
+ (T
+ <PUT .GT ,GOAL-S <>>
+ <RETURN <GOAL-REACHED .PERSON>>)>)>
+ <SET LN <GETP .GOAL ,P?LINE>>
+ <SET LINE
+ <COND (<==? .LN ,TOP-OF-THE-LINE-C> ,TOP-OF-THE-LINE)
+ (<==? .LN ,BOTTOM-LINE-C> ,BOTTOM-LINE)
+ (<==? .LN ,FOOD-LINE-C> ,FOOD-LINE)
+ (T ,OUTSIDE-LINE)>>
+ <REPEAT ()
+ <COND (<==? <SET RM <GET .LINE .CNT>> .HERE>
+ <COND (.GOAL-FLAG
+ <SET LOC <GET .LINE <- .CNT 3>>>)
+ (T
+ <SET LOC <GET .LINE <+ .CNT 3>>>)>
+ <RETURN <MOVE-PERSON .PERSON .LOC>>)
+ (<==? .RM .GOAL>
+ <SET GOAL-FLAG T>)>
+ <SET CNT <+ .CNT 3>>>>
+
+<ROUTINE GOAL-REACHED (PERSON)
+ #DECL ((PERSON) OBJECT)
+ <APPLY <GET <GET ,GOAL-TABLES <GETP .PERSON ,P?CHARACTER>>
+ ,GOAL-FUNCTION> ,G-REACHED>>
+
+<ROUTINE MOVE-PERSON (PERSON WHERE "AUX" DIR GT OL COR PCOR CHR NC WT (CNT 0)
+ (FLG <>) EX)
+ #DECL ((PERSON WHERE) OBJECT)
+ <SET GT <GET ,GOAL-TABLES <SET CHR <GETP .PERSON ,P?CHARACTER>>>>
+ <SET NC .CHR>
+ <SET OL <LOC .PERSON>>
+ <SET DIR <DIR-FROM .OL .WHERE>>
+ <COND (<==? <PTSIZE <SET EX <GETPT .OL .DIR>>> ,DEXIT>
+ <COND (<NOT <FSET? <SET EX <GETB .EX ,DEXITOBJ>> ,OPENBIT>>
+ <FSET .EX ,OPENBIT>)
+ (T <SET EX <>>)>)
+ (T <SET EX <>>)>
+ <PUT .GT ,GOAL-LDIR .DIR>
+ <COND (<==? .OL ,HERE>
+ <SET FLG T>
+ <TELL D .PERSON>
+ <COND (<==? .DIR ,P?OUT>
+ <TELL " walks out of the room." CR>)
+ (<EQUAL? .DIR ,P?DOWN> <TELL " is going downstairs." CR>)
+ (<EQUAL? .DIR ,P?UP> <TELL " is going upstairs." CR>)
+ (<EQUAL? .DIR ,P?IN>
+ <COND (.EX <TELL " opens the " D .EX " and">)>
+ <TELL " goes into another room.">)
+ (T
+ <COND (.EX <TELL " opens the " D .EX " and">)>
+ <TELL " heads off to ">
+ <DIR-PRINT .DIR>
+ <TELL "." CR>)>)
+ (<==? .WHERE ,HERE>
+ <SET FLG T>
+ <TELL D .PERSON>
+ <COND (<NOT <==? ,HERE <GET .GT ,GOAL-F>>>
+ <TELL " is walking past you." CR>)
+ (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
+ <TELL " stops here." CR>)
+ (T <TELL " steps into the room." CR>)>)
+ (<SET COR <GETP ,HERE ,P?CORRIDOR>>
+ <COND (<AND <SET PCOR <GETP .OL ,P?CORRIDOR>>
+ <NOT <==? <BAND .COR .PCOR> 0>>>
+ <SET FLG T>
+ <COND (<==? .WHERE ,STAIRS>
+ <TELL D .PERSON
+ " steps onto the stairs." CR>)
+ (<NOT <GETP .WHERE ,P?CORRIDOR>>
+ <TELL D .PERSON ", off to ">
+ <DIR-PRINT <COR-DIR ,HERE .OL>>
+ <TELL ",">
+ <COND (.EX
+ <TELL " opens a door and">)>
+ <COND (<==? <GETP ,HERE ,P?LINE>
+ ,OUTSIDE-LINE-C>
+ <TELL " leaves your view">)
+ (<==? .WHERE ,SHED-ROOM>
+ <TELL " darts into the shed">)
+ (T
+ <TELL " ducks into a room">)>
+ <TELL " to ">
+ <DIR-PRINT <DIR-FROM .OL .WHERE>>
+ <TELL "." CR>)
+ (<0? <BAND .COR <GETP .WHERE ,P?CORRIDOR>>>
+ <TELL D .PERSON
+ ", off to ">
+ <DIR-PRINT <COR-DIR ,HERE .OL>>
+ <TELL ", disappears from sight ">
+ <SET PCOR <DIR-FROM .OL .WHERE>>
+ <COND (<==? .PCOR ,P?UP>
+ <TELL "up the stairs">)
+ (<==? .PCOR ,P?DOWN>
+ <TELL "down the stairs">)
+ (T
+ <TELL "to ">
+ <DIR-PRINT .PCOR>)>
+ <TELL "." CR>)
+ (T
+ <TELL D .PERSON " is to ">
+ <DIR-PRINT <COR-DIR ,HERE .WHERE>>
+ <TELL ", heading toward ">
+ <DIR-PRINT <DIR-FROM .OL .WHERE>>
+ <TELL "." CR>)>)
+ (<AND <SET PCOR <GETP .WHERE ,P?CORRIDOR>>
+ <NOT <==? <BAND .COR .PCOR> 0>>>
+ <SET FLG T>
+ <TELL "To ">
+ <DIR-PRINT <COR-DIR ,HERE .WHERE>>
+ <TELL " " D .PERSON>
+ <COND (<OR <==? <GETP .WHERE ,P?LINE> ,OUTSIDE-LINE-C>
+ <==? .WHERE ,STAIRS>>
+ <TELL " comes into view from ">)
+ (T
+ <TELL " enters the hallway from ">)>
+ <DIR-PRINT <DIR-FROM .WHERE .OL>>
+ <TELL "." CR>)>)>
+ <SET WT <GET ,WHERE-TABLES .CHR>>
+ <REPEAT ()
+ <COND (<G? .CNT ,CHARACTER-MAX> <RETURN>)
+ (T
+ <COND (<==? <SET CHR <GET ,CHARACTER-TABLE .CNT>>
+ .PERSON> T)
+ (<OR <AND <0? .CNT> .FLG>
+ <IN? <GET ,CHARACTER-TABLE .CNT> .OL>>
+ <PUT .WT .CNT ,PRESENT-TIME>
+ <PUT <GET ,WHERE-TABLES .CNT>
+ .NC
+ ,PRESENT-TIME>)>
+ <SET CNT <+ .CNT 1>>)>>
+ <MOVE .PERSON .WHERE>
+ .FLG>
+
+<ROUTINE DIR-FROM (HERE THERE "AUX" P L T O)
+ #DECL ((HERE THERE O) OBJECT (P L) FIX)
+ <SET P 0>
+ <REPEAT ()
+ <COND (<0? <SET P <NEXTP .HERE .P>>>
+ <RFALSE>)
+ (<EQUAL? .P ,P?IN ,P?OUT> T)
+ (<NOT <L? .P ,LOW-DIRECTION>>
+ <SET T <GETPT .HERE .P>>
+ <SET L <PTSIZE .T>>
+ <COND (<AND <EQUAL? .L ,DEXIT ,UEXIT ,CEXIT>
+ <==? <GETB .T ,REXIT> .THERE>>
+ <RETURN .P>)>)>>>
+
+<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)
+ (<==? .NUM 16> ,COR-16)
+ (<==? .NUM 32> ,COR-32)
+ (<==? .NUM 64> ,COR-64)
+ (<==? .NUM 128> ,COR-128)
+ (<==? .NUM 256> ,COR-256)
+ (<==? .NUM 512> ,COR-512)
+ (<==? .NUM 1024> ,COR-1024)
+ (T ,COR-2048)>>
+
+<ROUTINE TRANSFER (PERSON IGOAL FGOAL "AUX" V (FLG <>))
+ #DECL ((PERSON IGOAL FGOAL) OBJECT)
+ <COND (<==? .IGOAL ,STAIR-TOP>
+ <COND (<OR <EQUAL? ,HERE ,STAIR-BOTTOM ,NFOYER ,ROURKE-ROOM>
+ <EQUAL? ,HERE ,LIVING-ROOM ,FOYER ,CORNER>>
+ <TELL
+"You can hear footsteps on the staircase." CR>
+ <SET FLG T>)>
+ <OR <MOVE-PERSON .PERSON ,STAIRS> .FLG>)
+ (<==? .IGOAL ,STAIR-BOTTOM>
+ <COND (<OR <EQUAL? ,HERE ,STAIR-TOP ,CORRIDOR-1>
+ <EQUAL? ,HERE ,CORRIDOR-2 ,CORRIDOR-3>>
+ <TELL
+"You can hear footsteps on the staircase." CR>
+ <SET FLG T>)>
+ <OR <MOVE-PERSON .PERSON ,STAIRS> .FLG>)
+ (T
+ <SET V
+ <COND (<==? .IGOAL ,STAIRS>
+ <COND (<==? <GETP .FGOAL ,P?LINE> 0>
+ <MOVE-PERSON .PERSON ,STAIR-TOP>)
+ (T <MOVE-PERSON .PERSON ,STAIR-BOTTOM>)>)
+ (<==? .IGOAL ,FRONT-PATH>
+ <FSET ,FRONT-DOOR ,OPENBIT>
+ <MOVE-PERSON .PERSON ,FOYER>)
+ (<==? .IGOAL ,FOYER>
+ <FSET ,FRONT-DOOR ,OPENBIT>
+ <MOVE-PERSON .PERSON ,FRONT-PATH>)
+ (<==? .IGOAL ,NFOYER>
+ <MOVE-PERSON .PERSON ,CORNER>)
+ (T
+ <MOVE-PERSON .PERSON ,NFOYER>)>>
+ <ESTABLISH-GOAL .PERSON .FGOAL>
+ .V)>>
+
+<ROUTINE DIR-PRINT (DIR "AUX" (CNT 0))
+ #DECL ((DIR CNT) FIX)
+ <REPEAT ()
+ <COND (<==? <GET ,DIR-STRINGS .CNT> .DIR>
+ <COND (<NOT <EQUAL? .DIR ,P?UP ,P?DOWN>>
+ <TELL "the ">)>
+ <PRINT <GET ,DIR-STRINGS <+ .CNT 1>>>
+ <RTRUE>)>
+ <SET CNT <+ .CNT 1>>>>
+
+"Here is the code for goal motivation for the various characters.
+Each character has a tendency to move from one place to another
+at certain times. They all converge on the living room at about
+noon."
+
+"Constants used as table offsets for each character, including
+the player."
+
+<CONSTANT PLAYER-C 0>
+<CONSTANT GARDENER-C 1>
+<CONSTANT BAXTER-C 2>
+<CONSTANT DUNBAR-C 3>
+<CONSTANT GEORGE-C 4>
+<CONSTANT MRS-ROBNER-C 5>
+<CONSTANT ROURKE-C 6>
+<CONSTANT COATES-C 7>
+<CONSTANT CHARACTER-MAX 7>
+
+<GLOBAL CHARACTER-DESCS
+ <TABLE 0
+"Mr. McNabb is an elderly Scottish man with a deeply lined face.
+He is wearing overalls."
+"Baxter is an immaculately dressed middle-aged man with rugged good
+looks."
+"Ms. Dunbar, wearing a fashionable pants suit, is a rather attractive
+woman in her early thirties."
+"George is a young man in his mid-twenties. He is poorly dressed in
+that each item he is wearing clashes with the others. His attire is
+of the highest quality, however. He is wearing various pieces of
+jewelry."
+"Mrs. Robner is a middle-aged woman of great beauty. She is dressed
+in black."
+"Mrs. Rourke is a short woman, more than a bit overweight. She is
+wearing a maid's outfit."
+"Mr. Coates is a rather homely man of advancing years.">>
+
+"Goal tables for the 8 characters (including PLAYER), offset
+by the preceding constants, which, for a given character,
+is the P?CHARACTER property of the object."
+
+<GLOBAL GOAL-TABLES
+ <TABLE <TABLE <> <> <> <> 1 <> <> I-FOLLOW 4 4>
+ <TABLE <> <> <> <> 1 <> <> I-GARDENER 3 3>
+ <TABLE <> <> <> <> 1 <> <> I-BAXTER 4 4>
+ <TABLE <> <> <> <> 1 <> <> I-DUNBAR 3 3>
+ <TABLE <> <> <> <> 1 <> <> I-GEORGE 2 2>
+ <TABLE <> <> <> <> 1 <> <> I-MRS-ROBNER 4 4>
+ <TABLE <> <> <> <> 1 <> <> I-ROURKE 6 6>
+ <TABLE <> <> <> <> 1 <> <> I-COATES 2 2>>>
+
+<GLOBAL ATTENTION-TABLE <TABLE 0 0 0 0 0 0 0 0>>
+
+"Offsets into GOAL-TABLEs"
+
+<CONSTANT GOAL-F 0>
+<CONSTANT GOAL-S 1>
+<CONSTANT GOAL-I 2>
+<CONSTANT GOAL-LDIR 3>
+<CONSTANT GOAL-ENABLE 4>
+<CONSTANT GOAL-PRIORITY 5>
+<CONSTANT GOAL-QUEUED 6>
+<CONSTANT GOAL-FUNCTION 7>
+<CONSTANT ATTENTION-SPAN 8>
+<CONSTANT ATTENTION 9>
+
+"Goal-function constants, similar to M-xxx in MAIN"
+
+<CONSTANT G-REACHED 1>
+<CONSTANT G-ENROUTE 2>
+
+"Here's how the movement goals are done: For each player is
+a table which consists of triplets, a number of minutes until
+the next movement (an clock interrupt number), a number of
+minutes allowed variation (for a bit of randomness), and a
+room toward which to start. All movement is controlled by
+the GOAL-ENABLE flag in the GOAL-TABLE for a character."
+
+"Time starts at 8AM. Characters are at that point in their
+starting positions, as reflected in DUNGEON."
+
+<GLOBAL CHARACTER-TABLE
+ <TABLE PLAYER GARDENER BAXTER DUNBAR GEORGE MRS-ROBNER ROURKE
+ COATES>>
+
+<GLOBAL GLOBAL-CHARACTER-TABLE
+ <TABLE PLAYER GLOBAL-GARDENER GLOBAL-BAXTER GLOBAL-DUNBAR GLOBAL-GEORGE
+ GLOBAL-MRS-ROBNER GLOBAL-ROURKE GLOBAL-COATES>>
+
+<GLOBAL MOVEMENT-GOALS <TABLE
+ ;"PLAYER"
+ <TABLE 0 0 0>
+ ;"GARDENER"
+ <TABLE 0
+ 60 10 NORTH-LAWN ;"9-10AM"
+ 60 10 EAST-LAWN ;"10-11AM"
+ 60 10 ROSE-GARDEN ;"11AM-1PM"
+ 60 10 ORCHARD ;"1-2PM"
+ 60 15 SOUTH-LAWN ;"2-3PM"
+ 120 15 WEST-LAWN ;"3-5PM"
+ 0>
+ ;"BAXTER"
+ <TABLE 0
+ 120 2 LIVING-ROOM ;"Arrival at 9:55"
+ 360 10 SOUTH-LAWN ;"Leave at 4PM"
+ 0>
+ ;"DUNBAR"
+ <TABLE 0
+ 60 10 DUNBAR-BATH ;"9-9:30AM"
+ 30 10 DUNBAR-ROOM ;"9:30-11:30AM"
+ 135 20 LIVING-ROOM ;"11:30AM-2PM"
+ 135 20 DUNBAR-ROOM
+ 0>
+ ;"GEORGE"
+ <TABLE 0
+ 80 10 KITCHEN ;"9:20-9:50AM"
+ 30 10 DINING-ROOM ;"9:50-11AM"
+ 70 20 GEORGE-ROOM ;"11-11:45AM"
+ 45 15 LIVING-ROOM ;"11:45AM-12:30PM"
+ 60 10 EAST-LAWN ;"12:30-2PM"
+ 75 20 LIVING-ROOM ;"2-3PM"
+ 60 15 GEORGE-ROOM
+ 0>
+ ;"MRS-ROBNER"
+ <TABLE 0
+ 30 10 DINING-ROOM ;"8:30-9AM"
+ 100 15 DINING-ROOM ;"10:10-11:10"
+ 60 20 LIVING-ROOM ;"11:10-12:40"
+ 90 20 MASTER-BEDROOM ;"12:40-1:50"
+ 70 30 LIVING-ROOM
+ 0>
+ ;"ROURKE"
+ <TABLE 0
+ 60 10 KITCHEN ;"9-10AM"
+ 60 20 DINING-ROOM ;"10-11AM"
+ 60 10 KITCHEN ;"11AM-1PM"
+ 120 20 LIVING-ROOM ;"1PM-2PM"
+ 60 30 ROURKE-ROOM
+ 0>>>
+
+<ROUTINE START-MOVEMENT ()
+ <ENABLE <QUEUE I-GARDENER 1>>
+ <ENABLE <QUEUE I-BAXTER 1>>
+ <ENABLE <QUEUE I-DUNBAR 1>>
+ <ENABLE <QUEUE I-GEORGE 1>>
+ <ENABLE <QUEUE I-MRS-ROBNER 1>>
+ <ENABLE <QUEUE I-ROURKE 1>>
+ <ENABLE <QUEUE I-FOLLOW -1>>
+ <ENABLE <QUEUE I-ATTENTION -1>>>
+
+<ROUTINE I-G-I-G ()
+ <SETG G-I-G ,PRESENT-TIME>
+ <COND (<AND <==? ,HERE ,ROSE-GARDEN> <NOT ,HOLE-SHOWN>>
+ <SETG HOLE-TELL T>
+ <TELL
+"All of a sudden, Mr. McNabb starts talking to himself quite
+loudly about his poor roses being ruined. He walks up to you and
+says \"You canna believe the holes someone's made. Crushed my
+roses. It'll take me plenty a time to set it right. I just
+canna believe it!\" He shakes his head dejectedly." CR>)>>
+
+<ROUTINE I-GARDENER ("OPTIONAL" (GARG <>) "AUX" (GL <LOC ,GARDENER>))
+ <COND (<NOT .GARG> <IMOVEMENT ,GARDENER I-GARDENER>)
+ (<==? .GARG ,G-REACHED>
+ <COND (<==? .GL ,ROSE-GARDEN>
+ <ENABLE <QUEUE I-G-I-G <+ 2 <RANDOM 10>>>>
+ <RFALSE>)
+ (<==? .GL ,ORCHARD>
+ <COND (<NOT <IN? ,LADDER ,ORCHARD>>
+ <FCLEAR ,LADDER ,NDESCBIT>
+ <SETG LADDER-FLAG <>>
+ <SETG LADDER-FLAG-2 <>>
+ <FSET ,LADDER ,TOUCHBIT>
+ <COND (<IN? ,LADDER ,WINNER>
+ <MOVE ,LADDER ,ORCHARD>
+ <TELL
+"McNabb comes over to you and takes the ladder. He walks off
+toward the orchard." CR>
+ <RTRUE>)
+ (<IN? ,LADDER ,HERE>
+ <MOVE ,LADDER ,ORCHARD>
+ <TELL
+"McNabb picks up the ladder and walks away toward the orchard." CR>
+ <RTRUE>)
+ (<==? ,HERE ,ORCHARD>
+ <MOVE ,LADDER ,ORCHARD>
+ <TELL
+"McNabb places the ladder he was carrying on the ground." CR>
+ <RTRUE>)>
+ <MOVE ,LADDER ,ORCHARD>
+ <RFALSE>)>)
+ (<==? .GL ,IN-ROSES>
+ <UNPRIORITIZE ,GARDENER>
+ <COND (<==? ,HERE .GL>
+ <GRAB-ATTENTION ,GARDENER>
+ <SHOW-HOLE>
+ <RTRUE>)
+ (T
+ <ENABLE <QUEUE I-SHOW-HOLE -1>>
+ <RFALSE>)>)>)>>
+
+<ROUTINE I-BAXTER ("OPTIONAL" (GARG <>) "AUX" (BL <LOC ,BAXTER>))
+ <COND (<NOT .GARG> <IMOVEMENT ,BAXTER I-BAXTER>)
+ (<AND <==? .GARG ,G-REACHED> <==? .BL ,LIVING-ROOM>>
+ <COND (<IN? ,RECURSIVE-BOOK ,LIVING-ROOM>
+ <MOVE ,RECURSIVE-BOOK ,BAXTER>
+ <FSET ,RECURSIVE-BOOK ,NDESCBIT>
+ <RFALSE>)>)
+ (<AND <==? .GARG ,G-REACHED>
+ <==? .BL ,DUNBAR-ROOM>
+ <==? ,HERE ,DUNBAR-ROOM>>
+ <TELL
+"Baxter looks at the body of Ms. Dunbar, lying on the floor, and
+falls to his knees. He starts to sob. \"I knew she would do this,\"
+he says, sobbing, \"but I couldn't stop her. She killed Marshall.
+She just told me a few minutes ago. She said that he was going to fire her,
+just like that, after all of these years. She was so hysterical,
+I couldn't understand everything she said, something about having
+stolen some money. I don't know.\" With that, he breaks down again." CR>
+ <ENABLE <QUEUE I-BAXTER-END-1 10>>)
+ (<AND <==? .GARG ,G-REACHED> <==? .BL ,SHED-ROOM>>
+ <COND (<==? ,HERE ,BEHIND-SHED>
+ <TELL
+"The sound of quick footsteps precedes someone into the shed.
+You can make out two voices in rapid conversation. The voices
+are muffled, however, and cannot be made out." CR>)>)
+ (<AND <==? .GARG ,G-REACHED> <==? .BL ,SOUTH-LAWN>>
+ <COND (<==? ,HERE ,SOUTH-LAWN>
+ <REMOVE ,BAXTER>
+ <TELL
+"A limousine comes up the drive and picks up Mr. Baxter." CR>
+ <RTRUE>)
+ (<EQUAL? ,HERE ,FRONT-PATH ,EAST-OF-DOOR ,WEST-OF-DOOR>
+ <REMOVE ,BAXTER>
+ <TELL
+"To the south, you observe a limousine picking up Mr. Baxter." CR>
+ <RTRUE>)>
+ <REMOVE ,BAXTER>
+ <RFALSE>)>>
+
+<ROUTINE I-DUNBAR ("OPTIONAL" (GARG <>) "AUX" (DL <LOC ,DUNBAR>))
+ <COND (<NOT .GARG> <IMOVEMENT ,DUNBAR I-DUNBAR>)
+ (<AND <==? .GARG ,G-REACHED> <==? .DL ,SHED-ROOM>>
+ <COND (<==? ,HERE ,BEHIND-SHED>
+ <TELL
+"You hear soft footsteps approaching. Someone has entered the shed!" CR>)>)>>
+
+<ROUTINE I-GEORGE ("OPTIONAL" (GARG <>) "AUX" (GL <LOC ,GEORGE>))
+ <COND (<AND <==? .GARG ,G-REACHED> <==? .GL ,EAST-LAWN>>
+ <UNPRIORITIZE ,GEORGE>
+ <RFALSE>)
+ (<AND <==? .GARG ,G-REACHED> <==? .GL ,GEORGE-ROOM>>
+ <SETG STEREO-ON T>
+ <SETG TUNE-ON <PICK-ONE ,RECORD-TABLE>>
+ <ENABLE <QUEUE I-TUNE-OFF 25>>
+ <COND (<==? ,HERE .GL>
+ <TELL
+"George walks over to his stereo and puts on a record. He turns
+to you. \"I naturally assume that you would like to hear a
+" ,TUNE-ON ".\" he says, barely concealing his clear distaste
+for you and your profession." CR>)>)
+ (<AND <==? .GARG ,G-REACHED> <==? .GL ,NORTH-LAWN>>
+ <REMOVE ,NEW-WILL>
+ <MOVE ,SOGGY-WILL ,LAKE>
+ <SETG GEORGE-RUN 0>
+ <UNPRIORITIZE ,GEORGE>
+ <COND (<==? ,HERE ,NORTH-LAWN>
+ <TELL
+"You catch, out of the corner of one eye, George motioning with
+his arm toward the lake." CR>)>)
+ (<NOT .GARG> <IMOVEMENT ,GEORGE I-GEORGE>)>>
+
+<ROUTINE I-ROURKE ("OPTIONAL" (GARG <>))
+ <COND (<AND <==? .GARG ,G-REACHED> <IN? ,ROURKE ,ROURKE-ROOM>>
+ <UNPRIORITIZE ,ROURKE>
+ <RFALSE>)
+ (<NOT .GARG> <IMOVEMENT ,ROURKE I-ROURKE>)>>
+
+<ROUTINE I-MRS-ROBNER ("OPTIONAL" (GARG <>) "AUX" (ML <LOC ,MRS-ROBNER>))
+ <COND (<AND <==? .GARG ,G-REACHED> <==? .ML ,MASTER-BEDROOM>>
+ <COND (<AND <NOT ,HC-ROBNER>
+ <FSET? ,HIDDEN-DOOR-B ,OPENBIT>>
+ <SETG HC-ROBNER T>
+ <COND (<EQUAL? ,HERE ,HIDDEN-CLOSET ,MASTER-BEDROOM>
+ <TELL
+"Mrs. Robner stares in complete surprise at the hidden closet. \"I had
+no idea that such a place existed!\" She sits down on her bed." CR>)>)>)
+ (<NOT .GARG> <IMOVEMENT ,MRS-ROBNER I-MRS-ROBNER>)>>
+
+;"This routine does the interrupt-driven goal establishment
+for the various characters, using the MOVEMENT-GOALS table."
+
+<CONSTANT MG-ROOM 0>
+<CONSTANT MG-TIME 1>
+<CONSTANT MG-VARIATION 2>
+<CONSTANT MG-LENGTH <* 3 2>>
+<CONSTANT MG-NEXT 4>
+
+<ROUTINE IMOVEMENT (PERSON INT "AUX" TB VAR DIS TIM ID RM GT)
+ #DECL ((PERSON) OBJECT (TB) <PRIMTYPE VECTOR> (ID VAR DIS TIM) FIX)
+ <SET TB <GET ,MOVEMENT-GOALS <SET ID <GETP .PERSON ,P?CHARACTER>>>>
+ <SET GT <GET ,GOAL-TABLES .ID>>
+ <COND (<NOT <==? <SET RM <GET .TB ,MG-ROOM>> 0>>
+ <COND (<GET .GT ,GOAL-PRIORITY>
+ <PUT .GT ,GOAL-QUEUED .RM>)
+ (T
+ <ESTABLISH-GOAL .PERSON .RM>)>)>
+ <COND (<NOT <==? <SET TIM <GET .TB ,MG-TIME>> 0>>
+ <SET VAR <GET .TB ,MG-VARIATION>>
+ <SET DIS <RANDOM <* .VAR 2>>>
+ <QUEUE .INT <+ .TIM <- .DIS .VAR>>>
+ <PUT ,MOVEMENT-GOALS .ID <REST .TB ,MG-LENGTH>>
+ <COND (<NOT <==? <GET .TB ,MG-NEXT> 0>>
+ <PUT .TB
+ ,MG-NEXT
+ <+ <GET .TB ,MG-NEXT> <- .VAR .DIS>>>)>)>
+ <RFALSE>>
+
+<ROUTINE I-FOLLOW ("AUX" (FLG <>) (CNT 0) GT)
+ <REPEAT ()
+ <COND (<G? <SET CNT <+ .CNT 1>> ,CHARACTER-MAX>
+ <RETURN>)
+ (<AND <GET <SET GT <GET ,GOAL-TABLES .CNT>> ,GOAL-S>
+ <OR <GET .GT ,GOAL-ENABLE>
+ <0? <GET .GT ,ATTENTION>>>>
+ <PUT .GT ,GOAL-ENABLE T>
+ <COND (<FOLLOW-GOAL <GET ,CHARACTER-TABLE .CNT>>
+ <SET FLG T>)>)>>
+ .FLG>
+
+<ROUTINE I-ATTENTION ("AUX" (FLG <>) (CNT 0) ATT)
+ <REPEAT ()
+ <COND (<G? <SET CNT <+ .CNT 1>> ,CHARACTER-MAX> <RETURN>)
+ (<==? <SET ATT <- <GET ,ATTENTION-TABLE .CNT> 1>> 1>
+ <COND (<IN? <GET ,CHARACTER-TABLE .CNT> ,HERE>
+ <TELL D <GET ,CHARACTER-TABLE .CNT>
+ " starts to move about distractedly." CR>
+ <SET FLG T>)>)
+ (<==? .ATT 0>
+ <PUT <GET ,GOAL-TABLES .CNT> ,GOAL-ENABLE T>)>
+ <PUT ,ATTENTION-TABLE .CNT .ATT>>
+ .FLG>
+
+<ROUTINE GRAB-ATTENTION (PERSON "AUX" (CHR <GETP .PERSON ,P?CHARACTER>) GT ATT)
+ #DECL ((PERSON) OBJECT (ATT) FIX)
+ <SET GT <GET ,GOAL-TABLES .CHR>>
+ <COND (<GET .GT ,GOAL-S>
+ <PUT ,ATTENTION-TABLE .CHR <SET ATT <GET .GT ,ATTENTION-SPAN>>>
+ <COND (<==? .ATT 0>
+ <PUT .GT ,GOAL-ENABLE T>
+ <RFALSE>)
+ (<GET .GT ,GOAL-ENABLE>
+ <PUT .GT ,GOAL-ENABLE <>>)>)>
+ <SETG QCONTEXT .PERSON>
+ <SETG QCONTEXT-ROOM ,HERE>
+ <RTRUE>>
+
+<GLOBAL WHERE-TABLES
+ <TABLE <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>
+ <TABLE 0 0 0 0 0 0 0 0>>>
+
+<ROUTINE I-COATES ("OPTIONAL" (RARG <>))
+ <COND (<==? .RARG ,G-REACHED>
+ <COND (<IN? ,COATES ,SOUTH-LAWN>
+ <REMOVE ,COATES>
+ <SETG POST-WILL <>>
+ <COND (<OR <EQUAL? ,HERE ,SOUTH-LAWN ,FRONT-PATH
+ ,EAST-OF-DOOR>
+ <EQUAL? ,HERE ,WEST-OF-DOOR ,EAST-LAWN
+ ,WEST-LAWN>>
+ <TELL
+"A car pulls up the drive. Coates enters the vehicle, motions
+to the driver, and the car starts up and leaves the grounds." CR>)>)
+ (<IN? ,COATES ,LIVING-ROOM>
+ <COND (<==? ,HERE ,LIVING-ROOM>
+ <TELL
+"Mr. Coates shakes your hand. \"I'm glad you're here, Inspector.
+We'll begin the reading soon.\"" CR>)>
+ <ENABLE <QUEUE I-WILL-READING 0>>
+ <I-WILL-READING>)>)>> \ No newline at end of file
diff --git a/macros.zil b/macros.zil
new file mode 100644
index 0000000..d1ba4bd
--- /dev/null
+++ b/macros.zil
@@ -0,0 +1,97 @@
+"MACROS for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+<SETG C-ENABLED? 0>
+<SETG C-ENABLED 1>
+<SETG C-DISABLED 0>
+
+<DEFMAC TELL ("ARGS" A)
+ <FORM PROG ()
+ !<MAPF ,LIST
+ <FUNCTION ("AUX" E P O)
+ <COND (<EMPTY? .A> <MAPSTOP>)
+ (<SET E <NTH .A 1>>
+ <SET A <REST .A>>)>
+ <COND (<TYPE? .E ATOM>
+ <COND (<OR <=? <SET P <SPNAME .E>>
+ "CRLF">
+ <=? .P "CR">>
+ <MAPRET '<CRLF>>)
+ (<=? .P "PRSO">
+ <MAPRET '<PRSO-PRINT>>)
+ (<=? .P "PRSI">
+ <MAPRET '<PRSI-PRINT>>)
+ (<EMPTY? .A>
+ <ERROR INDICATOR-AT-END? .E>)
+ (ELSE
+ <SET O <NTH .A 1>>
+ <SET A <REST .A>>
+ <COND (<OR <=? <SET P <SPNAME .E>>
+ "DESC">
+ <=? .P "D">
+ <=? .P "OBJ">
+ <=? .P "O">>
+ <MAPRET <FORM PRINTD .O>>)
+ (<OR <=? .P "NUM">
+ <=? .P "N">>
+ <MAPRET <FORM PRINTN .O>>)
+ (<OR <=? .P "CHAR">
+ <=? .P "CHR">
+ <=? .P "C">>
+ <MAPRET <FORM PRINTC .O>>)
+ (ELSE
+ <MAPRET
+ <FORM PRINT
+ <FORM GETP .O .E>>>)>)>)
+ (<TYPE? .E STRING>
+ <MAPRET <FORM PRINTI .E>>)
+ (<TYPE? .E FORM>
+ <MAPRET <FORM PRINT .E>>)
+ (ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
+
+<DEFMAC VERB? ("TUPLE" ATMS "AUX" (O ()) (L ()))
+ <REPEAT ()
+ <COND (<EMPTY? .ATMS>
+ <RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
+ (ELSE <FORM OR !.O>)>>)>
+ <REPEAT ()
+ <COND (<EMPTY? .ATMS> <RETURN!->)>
+ <SET ATM <NTH .ATMS 1>>
+ <SET L
+ (<FORM GVAL <PARSE <STRING "V?" <SPNAME .ATM>>>>
+ !.L)>
+ <SET ATMS <REST .ATMS>>
+ <COND (<==? <LENGTH .L> 3> <RETURN!->)>>
+ <SET O (<FORM EQUAL? ',PRSA !.L> !.O)>
+ <SET L ()>>>
+
+<DEFMAC RFATAL ()
+ '<PROG () <PUSH 2> <RSTACK>>>
+
+<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
+ <COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
+ (ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
+
+<ROUTINE ZPROB (BASE)
+ <G? .BASE <RANDOM 100>>>
+
+<ROUTINE PICK-ONE (FROB)
+ <GET .FROB <RANDOM <GET .FROB 0>>>>
+
+<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
+
+<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
+
+<DEFMAC FLAMING? ('OBJ)
+ <FORM AND <FORM FSET? .OBJ ',FLAMEBIT>
+ <FORM FSET? .OBJ ',ONBIT>>>
+
+<DEFMAC OPENABLE? ('OBJ)
+ <FORM OR <FORM FSET? .OBJ ',DOORBIT>
+ <FORM FSET? .OBJ ',CONTBIT>>>
+
+<DEFMAC ABS ('NUM)
+ <FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
+ (T .NUM)>> \ No newline at end of file
diff --git a/main.zil b/main.zil
new file mode 100644
index 0000000..b93193d
--- /dev/null
+++ b/main.zil
@@ -0,0 +1,190 @@
+"MAIN for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+<GLOBAL P-WON <>>
+
+<CONSTANT M-FATAL 2>
+
+<CONSTANT M-HANDLED 1>
+
+<CONSTANT M-NOT-HANDLED <>>
+
+<CONSTANT M-BEG 1>
+
+<CONSTANT M-END <>>
+
+<CONSTANT M-ENTER 2>
+
+<CONSTANT M-LOOK 3>
+
+<CONSTANT M-FLASH 4>
+
+<CONSTANT M-OBJDESC 5>
+
+<GLOBAL P-HIM-HER <>>
+<GLOBAL P-HIM-HER-LOC <>>
+
+<ROUTINE GO ()
+ <SETG LIT T>
+ <SETG SCORE 8>
+ <SETG WINNER ,PLAYER>
+ <SETG HERE ,SOUTH-LAWN>
+ <SETG P-IT-LOC ,HERE>
+ <SETG P-IT-OBJECT <>>
+ <SETG P-HIM-HER ,MRS-ROBNER>
+ <SETG P-HIM-HER-LOC ,FOYER>
+ <COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
+ <ENABLE <QUEUE I-NEWSPAPER <+ 175 <RANDOM 40>>>>
+ <ENABLE <QUEUE I-MAIL <+ 70 <RANDOM 60>>>>
+ <ENABLE <QUEUE I-CALL <+ 60 <RANDOM 10>>>>
+ <ENABLE <QUEUE I-BAXTER-ARRIVE 115>>
+ <ENABLE <QUEUE I-COATES-ARRIVE <+ 230 <RANDOM 5>>>>
+ <START-MOVEMENT>
+ <V-VERSION>
+ <CRLF>)>
+ <MOVE ,WINNER ,HERE>
+ <V-LOOK>
+ <MAIN-LOOP>
+ <AGAIN>>
+
+
+<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
+ #DECL ((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ) <OR FALSE OBJECT>
+ (OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
+ <REPEAT ()
+ <SET CNT 0>
+ <SET OBJ <>>
+ <SET PTBL T>
+ <COND (<SETG P-WON <PARSER>>
+ <SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
+ <SET NUM
+ <COND (<0? <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>> .OCNT)
+ (<G? .OCNT 1>
+ <SET TBL ,P-PRSO>
+ <COND (<0? .ICNT> <SET OBJ <>>)
+ (T <SET OBJ <GET ,P-PRSI 1>>)>
+ .OCNT)
+ (<G? .ICNT 1>
+ <SET PTBL <>>
+ <SET TBL ,P-PRSI>
+ <SET OBJ <GET ,P-PRSO 1>>
+ .ICNT)
+ (T 1)>>
+ <COND (<NOT <==? ,QCONTEXT-ROOM ,HERE>>
+ <SETG QCONTEXT <>>)>
+ <COND (<AND <NOT .OBJ> <1? .ICNT>> <SET OBJ <GET ,P-PRSI 1>>)>
+ <COND (<==? ,PRSA ,V?WALK>
+ <SET V <PERFORM ,PRSA ,PRSO>>)
+ (<0? .NUM>
+ <COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
+ <SET V <PERFORM ,PRSA>>
+ <SETG PRSO <>>)
+ (T
+ <TELL "There isn't anything to ">
+ <SET TMP <GET ,P-ITBL ,P-VERBN>>
+ <COND (,P-OFLAG
+ <PRINTB <GET .TMP 0>>)
+ (T
+ <WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
+ <TELL "!" CR>
+ <SET V <>>)>)
+ (<AND .PTBL <==? .NUM 2> <==? ,PRSA ,V?ARREST>>
+ <SET V <PERFORM ,PRSA ,OBJECT-PAIR>>)
+ (T
+ <REPEAT ()
+ <COND (<G? <SET CNT <+ .CNT 1>> .NUM> <RETURN>)
+ (T
+ <COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
+ (T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
+ <COND (<G? .NUM 1>
+ <COND (<==? .OBJ1 ,PLAYER> <AGAIN>)
+ (<FSET? .OBJ1 ,DUPLICATE>
+ <AGAIN>)>
+ <PRINTD .OBJ1>
+ <TELL ": ">)>
+ <SET V <QCONTEXT-CHECK <COND (.PTBL .OBJ1)
+ (T .OBJ)>>>
+ <SET V
+ <PERFORM ,PRSA
+ <COND (.PTBL .OBJ1) (T .OBJ)>
+ <COND (.PTBL .OBJ) (T .OBJ1)>>>
+ <COND (<==? .V ,M-FATAL> <RETURN>)>)>>)>
+ <COND (<==? .V ,M-FATAL> <SETG P-CONT <>>)>)
+ (T
+ <SETG P-CONT <>>)>
+ <COND (,P-WON
+ <COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE TIME SAVE SPACE
+ UNSPACE> T)
+ (T <SET V <CLOCKER>>)>)>>>
+
+<ROUTINE QCONTEXT-CHECK (PRSO)
+ <COND (<AND ,QCONTEXT
+ <IN? ,QCONTEXT ,HERE>
+ <==? ,QCONTEXT-ROOM ,HERE>
+ <==? ,WINNER ,PLAYER>>
+ <COND (<OR <VERB? WHAT>
+ <VERB? FIND>
+ <AND <VERB? TELL-ME> <==? .PRSO ,PLAYER>>
+ <AND <VERB? SHOW> <==? .PRSO ,PLAYER>>>
+ <SETG WINNER ,QCONTEXT>
+ <TELL "(said to " D ,QCONTEXT ")" CR>)>)>>
+
+<GLOBAL L-PRSA <>>
+
+<GLOBAL L-PRSO <>>
+
+<GLOBAL L-PRSI <>>
+
+
+<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
+ #DECL ((A) FIX (O) <OR FALSE OBJECT FIX> (I) <OR FALSE OBJECT> (V) ANY)
+ <SET OA ,PRSA>
+ <SET OO ,PRSO>
+ <SET OI ,PRSI>
+ <SETG PRSA .A>
+ <COND (<AND <EQUAL? ,IT .I .O>
+ <NOT <EQUAL? ,P-IT-LOC ,HERE>>>
+ <TELL "I don't see what you are referring to." CR>
+ <RFATAL>)
+ (<AND <EQUAL? ,HIM-HER .I .O>
+ <NOT <EQUAL? ,P-HIM-HER-LOC ,HERE>>>
+ <SET V <GET ,GLOBAL-CHARACTER-TABLE
+ <GETP ,P-HIM-HER ,P?CHARACTER>>>
+ <COND (<==? ,HIM-HER .O> <SET O .V>)
+ (<==? ,HIM-HER .I> <SET I .V>)>)>
+ <COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)
+ (<==? .O ,HIM-HER> <SET O ,P-HIM-HER>)>
+ <COND (<==? .I ,IT> <SET I ,P-IT-OBJECT>)
+ (<==? .I ,HIM-HER> <SET I ,P-HIM-HER>)>
+ <SETG PRSO .O>
+ <COND (<AND ,PRSO <NOT <VERB? WALK>>>
+ <COND (<FSET? ,PRSO ,PERSON>
+ <SETG P-HIM-HER ,PRSO>
+ <SETG P-HIM-HER-LOC ,HERE>)
+ (T
+ <SETG P-IT-OBJECT ,PRSO>
+ <SETG P-IT-LOC ,HERE>)>)>
+ <SETG PRSI .I>
+ <COND (<NOT <==? .A ,V?AGAIN>>
+ <SETG L-PRSA .A>
+ <COND (<==? .A ,V?WALK> <SETG L-PRSO <>>)
+ (T <SETG L-PRSO .O>)>
+ <SETG L-PRSI .I>)>
+ <COND (<SET V <APPLY <GETP ,WINNER ,P?ACTION>>> .V)
+ (<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-BEG>> .V)
+ (<SET V <APPLY <GET ,PREACTIONS .A>>> .V)
+ (<AND .I <SET V <APPLY <GETP .I ,P?ACTION>>>> .V)
+ (<AND .O
+ <NOT <==? .A ,V?WALK>>
+ <SET V <APPLY <GETP .O ,P?ACTION>>>>
+ .V)
+ (<SET V <APPLY <GET ,ACTIONS .A>>> .V)>
+ <COND (<NOT <==? .V ,M-FATAL>>
+ <SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
+ <SETG PRSA .OA>
+ <SETG PRSO .OO>
+ <SETG PRSI .OI>
+ .V>
+
diff --git a/parser.zil b/parser.zil
new file mode 100644
index 0000000..389209d
--- /dev/null
+++ b/parser.zil
@@ -0,0 +1,1117 @@
+"PARSER for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+"Parser global variable convention: All parser globals will
+ begin with 'P-'. Local variables are not restricted in any
+ way.
+"
+
+<SETG SIBREAKS ".,\"">
+
+<GLOBAL ALWAYS-LIT <>>
+
+<GLOBAL GWIM-DISABLE <>>
+
+<GLOBAL PRSA 0>
+
+<GLOBAL PRSI 0>
+
+<GLOBAL PRSO 0>
+
+<GLOBAL P-TABLE 0>
+
+<GLOBAL P-ONEOBJ 0>
+
+<GLOBAL P-SYNTAX 0>
+
+<GLOBAL P-CCSRC 0>
+
+<GLOBAL P-LEN 0>
+
+<GLOBAL P-DIR 0>
+
+<GLOBAL HERE 0>
+
+<GLOBAL WINNER 0>
+
+<GLOBAL P-LEXV <ITABLE BYTE 120>>
+;"INBUF - Input buffer for READ"
+
+<GLOBAL P-INBUF <ITABLE BYTE 100>>
+;"Parse-cont variable"
+
+<GLOBAL P-CONT <>>
+
+<GLOBAL P-IT-OBJECT <>>
+<GLOBAL P-IT-LOC <>>
+
+;"Orphan flag"
+
+<GLOBAL P-OFLAG <>>
+
+<GLOBAL P-MERGED <>>
+
+<GLOBAL P-ACLAUSE <>>
+
+<GLOBAL P-ANAM <>>
+
+<GLOBAL P-AADJ <>>
+;"Parser variables and temporaries"
+
+<CONSTANT P-PHRLEN 3>
+
+<CONSTANT P-ORPHLEN 7>
+
+<CONSTANT P-RTLEN 3>
+;"Byte offset to # of entries in LEXV"
+
+<CONSTANT P-LEXWORDS 1>
+;"Word offset to start of LEXV entries"
+
+<CONSTANT P-LEXSTART 1>
+;"Number of words per LEXV entry"
+
+<CONSTANT P-LEXELEN 2>
+
+<CONSTANT P-WORDLEN 4>
+;"Offset to parts of speech byte"
+
+<CONSTANT P-PSOFF 4>
+;"Offset to first part of speech"
+
+<CONSTANT P-P1OFF 5>
+;"First part of speech bit mask in PSOFF byte"
+
+<CONSTANT P-P1BITS 3>
+
+<CONSTANT P-ITBLLEN 9>
+
+<GLOBAL P-ITBL <TABLE 0 0 0 0 0 0 0 0 0 0>>
+
+<GLOBAL P-OTBL <TABLE 0 0 0 0 0 0 0 0 0 0>>
+
+<GLOBAL P-VTBL <TABLE 0 0 0 0>>
+
+<GLOBAL P-NCN 0>
+
+<CONSTANT P-VERB 0>
+
+<CONSTANT P-VERBN 1>
+
+<CONSTANT P-PREP1 2>
+
+<CONSTANT P-PREP1N 3>
+
+<CONSTANT P-PREP2 4>
+
+<CONSTANT P-PREP2N 5>
+
+<CONSTANT P-NC1 6>
+
+<CONSTANT P-NC1L 7>
+
+<CONSTANT P-NC2 8>
+
+<CONSTANT P-NC2L 9>
+
+<GLOBAL QUOTE-FLAG <>>
+
+" Grovel down the input finding the verb, prepositions, and noun clauses.
+ If the input is <direction> or <walk> <direction>, fall out immediately
+ setting PRSA to ,V?WALK and PRSO to <direction>. Otherwise, perform
+ all required orphaning, syntax checking, and noun clause lookup."
+
+<ROUTINE PARSER ("AUX" (PTR ,P-LEXSTART) WORD (VAL 0) (VERB <>)
+ LEN (DIR <>) (NW 0) (LW 0) NUM SCNT (CNT -1))
+ <REPEAT ()
+ <COND (<G? <SET CNT <+ .CNT 1>> ,P-ITBLLEN> <RETURN>)
+ (T <PUT ,P-ITBL .CNT 0>)>>
+ <SETG P-ADVERB <>>
+ <SETG P-MERGED <>>
+ <PUT ,P-PRSO ,P-MATCHLEN 0>
+ <PUT ,P-PRSI ,P-MATCHLEN 0>
+ <PUT ,P-BUTS ,P-MATCHLEN 0>
+ <COND (<AND <NOT ,QUOTE-FLAG> <N==? ,WINNER ,PLAYER>>
+ <SETG WINNER ,PLAYER>
+ <COND (<NOT <FSET? <LOC ,WINNER> ,VEHBIT>>
+ <SETG HERE <LOC ,WINNER>>)>)>
+ <COND (,P-CONT
+ <SET PTR ,P-CONT>
+ <SETG P-CONT <>>
+ <COND (<NOT <VERB? TELL>> <CRLF>)>)
+ (T
+ <SETG WINNER ,PLAYER>
+ <SETG QUOTE-FLAG <>>
+ <COND (<NOT <FSET? <LOC ,WINNER> ,VEHBIT>>
+ <SETG HERE <LOC ,WINNER>>)>
+ <SET SCNT ,P-SPACE>
+ <REPEAT ()
+ <COND (<L? <SET SCNT <- .SCNT 1>> 0> <RETURN>)
+ (T <CRLF>)>>
+ <TELL ">">
+ <READ ,P-INBUF ,P-LEXV>)>
+ <SETG P-LEN <GETB ,P-LEXV ,P-LEXWORDS>>
+ <COND (<0? ,P-LEN> <TELL "What?" CR> <RFALSE>)
+ (<OR <EQUAL? <SET WORD <GET ,P-LEXV .PTR>> ,W?WHY ,W?HOW ,W?WHEN>
+ <EQUAL? .WORD ,W?IS ,W?DID ,W?ARE>>
+ <TELL
+"Detectives are expected to know how to conduct an interrogation;
+please re-read your casebook for remedial instruction. Remember that the
+documentary evidence enclosed contains the answers to all of the important
+questions which cannot be asked directly." CR>
+ <RFALSE>)>
+ <SET LEN ,P-LEN>
+ <SETG P-DIR <>>
+ <SETG P-NCN 0>
+ <SETG P-GETFLAGS 0>
+ <REPEAT ()
+ <COND (<L? <SETG P-LEN <- ,P-LEN 1>> 0>
+ <SETG QUOTE-FLAG <>>
+ <RETURN>)
+ (<OR <SET WORD <GET ,P-LEXV .PTR>>
+ <SET WORD <NUMBER? .PTR>>>
+ <COND (<AND <==? .WORD ,W?TO>
+ <EQUAL? .VERB ,ACT?TELL ,ACT?ASK>>
+ <SET WORD ,W?QUOTE>)
+ (<AND <==? .WORD ,W?THEN>
+ <NOT .VERB>>
+ <PUT ,P-ITBL ,P-VERB ,ACT?TELL>
+ <PUT ,P-ITBL ,P-VERBN 0>
+ <SET WORD ,W?QUOTE>)>
+ <COND (<AND <EQUAL? .WORD ,W?.>
+ <EQUAL? .LW ,W?MRS ,W?MR ,W?MS>>
+ <SET LW 0>)
+ (<OR <EQUAL? .WORD ,W?THEN ,W?.>
+ <EQUAL? .WORD ,W?QUOTE>>
+ <COND (<EQUAL? .WORD ,W?QUOTE>
+ <COND (,QUOTE-FLAG
+ <SETG QUOTE-FLAG <>>)
+ (T <SETG QUOTE-FLAG T>)>)>
+ <OR <0? ,P-LEN>
+ <SETG P-CONT <+ .PTR ,P-LEXELEN>>>
+ <PUTB ,P-LEXV ,P-LEXWORDS ,P-LEN>
+ <RETURN>)
+ (<AND <SET VAL
+ <WT? .WORD
+ ,PS?DIRECTION
+ ,P1?DIRECTION>>
+ <OR <==? .LEN 1>
+ <AND <==? .LEN 2> <==? .VERB ,ACT?WALK>>
+ <AND <EQUAL? <SET NW
+ <GET ,P-LEXV
+ <+ .PTR ,P-LEXELEN>>>
+ ,W?THEN
+ ,W?QUOTE>
+ <G? .LEN 2>>
+ <AND <EQUAL? .NW ,W?.>
+ <G? .LEN 1>>
+ <AND ,QUOTE-FLAG
+ <==? .LEN 2>
+ <EQUAL? .NW ,W?QUOTE>>
+ <AND <G? .LEN 2>
+ <EQUAL? .NW ,W?COMMA ,W?AND>>>>
+ <SET DIR .VAL>
+ <COND (<EQUAL? .NW ,W?COMMA ,W?AND>
+ <PUT ,P-LEXV
+ <+ .PTR ,P-LEXELEN>
+ ,W?THEN>)>
+ <COND (<NOT <G? .LEN 2>>
+ <SETG QUOTE-FLAG <>>
+ <RETURN>)>)
+ (<AND <SET VAL <WT? .WORD ,PS?VERB ,P1?VERB>>
+ <OR <NOT .VERB>
+ <EQUAL? .VERB ,ACT?WHAT>>>
+ <SET VERB .VAL>
+ <PUT ,P-ITBL ,P-VERB .VAL>
+ <PUT ,P-ITBL ,P-VERBN ,P-VTBL>
+ <PUT ,P-VTBL 0 .WORD>
+ <PUTB ,P-VTBL 2 <GETB ,P-LEXV
+ <SET NUM
+ <+ <* .PTR 2> 2>>>>
+ <PUTB ,P-VTBL 3 <GETB ,P-LEXV <+ .NUM 1>>>)
+ (<OR <SET VAL <WT? .WORD ,PS?PREPOSITION 0>>
+ <AND <OR <EQUAL? .WORD ,W?ALL ,W?ONE ,W?A>
+ <WT? .WORD ,PS?ADJECTIVE>
+ <WT? .WORD ,PS?OBJECT>>
+ <SET VAL 0>>>
+ <COND (<AND <G? ,P-LEN 0>
+ <==? <GET ,P-LEXV
+ <+ .PTR ,P-LEXELEN>>
+ ,W?OF>
+ <NOT <EQUAL? .VERB ,ACT?ACCUSE>>
+ <0? .VAL>
+ <NOT
+ <EQUAL? .WORD ,W?ALL ,W?ONE ,W?A>>>)
+ (<AND <NOT <0? .VAL>>
+ <OR <0? ,P-LEN>
+ <EQUAL? <GET ,P-LEXV <+ .PTR 2>>
+ ,W?THEN ,W?.>>>
+ <COND (<L? ,P-NCN 2>
+ <PUT ,P-ITBL ,P-PREP1 .VAL>
+ <PUT ,P-ITBL ,P-PREP1N .WORD>)>)
+ (<==? ,P-NCN 2>
+ <TELL
+"There were more than two nouns in that sentence." CR>
+ <RFALSE>)
+ (T
+ <SETG P-NCN <+ ,P-NCN 1>>
+ <OR <SET PTR <CLAUSE .PTR .VAL .WORD>>
+ <RFALSE>>
+ <COND (<L? .PTR 0>
+ <SETG QUOTE-FLAG <>>
+ <RETURN>)>)>)
+ (<OR <EQUAL? .WORD ,W?CAREFULLY ,W?QUIETLY>
+ <EQUAL? .WORD ,W?SLOWLY ,W?QUICKLY
+ ,W?BRIEFLY>>
+ <SETG P-ADVERB .WORD>)
+ (<WT? .WORD ,PS?BUZZ-WORD>)
+ (T
+ <CANT-USE .PTR>
+ <RFALSE>)>)
+ (T
+ <UNKNOWN-WORD .PTR>
+ <RFALSE>)>
+ <SET LW .WORD>
+ <SET PTR <+ .PTR ,P-LEXELEN>>>
+ <COND (.DIR <SETG PRSA ,V?WALK> <SETG PRSO .DIR> <RETURN T>)>
+ <COND (,P-OFLAG <ORPHAN-MERGE>)>
+ <COND (<==? <GET ,P-ITBL ,P-VERB> 0> <PUT ,P-ITBL ,P-VERB ,ACT?CALL>)>
+ <COND (<AND <SYNTAX-CHECK> <SNARF-OBJECTS> <TAKE-CHECK> <MANY-CHECK>>
+ T)>>
+;"Check whether word pointed at by PTR is the correct part of speech.
+ The second argument is the part of speech (,PS?<part of speech>). The
+ 3rd argument (,P1?<part of speech>), if given, causes the value
+ for that part of speech to be returned."
+
+<ROUTINE WT? (PTR BIT "OPTIONAL" (B1 5) "AUX" (OFFSET ,P-P1OFF) TYP)
+ <COND (<BTST <SET TYP <GETB .PTR ,P-PSOFF>> .BIT>
+ <COND (<G? .B1 4> <RTRUE>)
+ (T
+ <SET TYP <BAND .TYP ,P-P1BITS>>
+ <COND (<NOT <==? .TYP .B1>> <SET OFFSET <+ .OFFSET 1>>)>
+ <GETB .PTR .OFFSET>)>)>>
+;" Scan through a noun clause, leave a pointer to its starting location"
+
+<ROUTINE CLAUSE (PTR VAL WORD "AUX" OFF NUM (ANDFLG <>) (FIRST?? T) NW (LW 0))
+ #DECL ((PTR VAL OFF NUM) FIX (WORD NW) <OR FALSE FIX TABLE>
+ (ANDFLG FIRST??) <OR ATOM FALSE>)
+ <SET OFF <* <- ,P-NCN 1> 2>>
+ <COND (<NOT <==? .VAL 0>>
+ <PUT ,P-ITBL <SET NUM <+ ,P-PREP1 .OFF>> .VAL>
+ <PUT ,P-ITBL <+ .NUM 1> .WORD>
+ <SET PTR <+ .PTR ,P-LEXELEN>>)
+ (T <SETG P-LEN <+ ,P-LEN 1>>)>
+ <COND (<0? ,P-LEN> <SETG P-NCN <- ,P-NCN 1>> <RETURN -1>)>
+ <PUT ,P-ITBL <SET NUM <+ ,P-NC1 .OFF>> <REST ,P-LEXV <* .PTR 2>>>
+ <COND (<EQUAL? <GET ,P-LEXV .PTR> ,W?THE ,W?A ,W?AN>
+ <PUT ,P-ITBL .NUM <REST <GET ,P-ITBL .NUM> 4>>)>
+ <REPEAT ()
+ <COND (<L? <SETG P-LEN <- ,P-LEN 1>> 0>
+ <PUT ,P-ITBL <+ .NUM 1> <REST ,P-LEXV <* .PTR 2>>>
+ <RETURN -1>)>
+ <COND (<OR <SET WORD <GET ,P-LEXV .PTR>>
+ <SET WORD <NUMBER? .PTR>>>
+ <COND (<0? ,P-LEN> <SET NW 0>)
+ (T <SET NW <GET ,P-LEXV <+ .PTR ,P-LEXELEN>>>)>
+ <COND (<AND <==? .WORD ,W?OF>
+ <==? <GET ,P-ITBL ,P-VERB> ,ACT?ACCUSE>>
+ <PUT ,P-LEXV .PTR ,W?WITH>
+ <SET WORD ,W?WITH>)>
+ <COND (<AND <EQUAL? .WORD ,W?.>
+ <EQUAL? .LW ,W?MRS ,W?MR ,W?MS>>
+ <SET LW 0>)
+ (<EQUAL? .WORD ,W?AND ,W?COMMA> <SET ANDFLG T>)
+ (<EQUAL? .WORD ,W?ALL ,W?ONE>
+ <COND (<==? .NW ,W?OF>
+ <SETG P-LEN <- ,P-LEN 1>>
+ <SET PTR <+ .PTR ,P-LEXELEN>>)>)
+ (<OR <EQUAL? .WORD ,W?THEN ,W?.>
+ <AND <WT? .WORD ,PS?PREPOSITION>
+ <NOT .FIRST??>>>
+ <SETG P-LEN <+ ,P-LEN 1>>
+ <PUT ,P-ITBL
+ <+ .NUM 1>
+ <REST ,P-LEXV <* .PTR 2>>>
+ <RETURN <- .PTR ,P-LEXELEN>>)
+ (<WT? .WORD ,PS?OBJECT>
+ <COND (<AND <WT? .WORD
+ ,PS?ADJECTIVE
+ ,P1?ADJECTIVE>
+ <NOT <==? .NW 0>>
+ <WT? .NW ,PS?OBJECT>>)
+ (<AND <NOT .ANDFLG>
+ <NOT <EQUAL? .NW ,W?BUT ,W?EXCEPT>>
+ <NOT <EQUAL? .NW ,W?AND ,W?COMMA>>>
+ <PUT ,P-ITBL
+ <+ .NUM 1>
+ <REST ,P-LEXV <* <+ .PTR 2> 2>>>
+ <RETURN .PTR>)
+ (T <SET ANDFLG <>>)>)
+ (<OR <WT? .WORD ,PS?ADJECTIVE>
+ <WT? .WORD ,PS?BUZZ-WORD>>)
+ (<AND .ANDFLG
+ <OR <WT? .WORD ,PS?DIRECTION>
+ <WT? .WORD ,PS?VERB>>>
+ <SET PTR <- .PTR 4>>
+ <PUT ,P-LEXV <+ .PTR 2> ,W?THEN>
+ <SETG P-LEN <+ ,P-LEN 2>>)
+ (<WT? .WORD ,PS?PREPOSITION> T)
+ (T
+ <CANT-USE .PTR>
+ <RFALSE>)>)
+ (T <UNKNOWN-WORD .PTR> <RFALSE>)>
+ <SET LW .WORD>
+ <SET FIRST?? <>>
+ <SET PTR <+ .PTR ,P-LEXELEN>>>>
+
+<ROUTINE NUMBER? (PTR "AUX" CNT BPTR CHR (SUM 0) (TIM <>))
+ <SET CNT <GETB <REST ,P-LEXV <* .PTR 2>> 2>>
+ <SET BPTR <GETB <REST ,P-LEXV <* .PTR 2>> 3>>
+ <REPEAT ()
+ <COND (<L? <SET CNT <- .CNT 1>> 0> <RETURN>)
+ (T
+ <SET CHR <GETB ,P-INBUF .BPTR>>
+ <COND (<==? .CHR 58>
+ <SET TIM .SUM>
+ <SET SUM 0>)
+ (<G? .SUM 10000> <RFALSE>)
+ (<AND <L? .CHR 58> <G? .CHR 47>>
+ <SET SUM <+ <* .SUM 10> <- .CHR 48>>>)
+ (T <RFALSE>)>
+ <SET BPTR <+ .BPTR 1>>)>>
+ <PUT ,P-LEXV .PTR ,W?INTNUM>
+ <COND (<G? .SUM 1000> <RFALSE>)
+ (.TIM
+ <COND (<L? .TIM 8> <SET TIM <+ .TIM 12>>)
+ (<G? .TIM 23> <RFALSE>)>
+ <SET SUM <+ .SUM <* .TIM 60>>>)>
+ <SETG P-NUMBER .SUM>
+ ,W?INTNUM>
+
+<GLOBAL P-NUMBER 0>
+
+
+<ROUTINE ORPHAN-MERGE ("AUX" (CNT -1) TEMP VERB BEG END (ADJ <>) WRD)
+ #DECL ((CNT TEMP VERB) FIX (BEG END) <PRIMTYPE VECTOR> (WRD) TABLE)
+ <SETG P-OFLAG <>>
+ <COND
+ (<AND <NOT <0? <SET VERB <GET ,P-ITBL ,P-VERB>>>>
+ <NOT <==? .VERB <GET ,P-OTBL ,P-VERB>>>>
+ <RFALSE>)
+ (<==? ,P-NCN 2>
+ <RFALSE>)
+ (<==? <GET ,P-OTBL ,P-NC1> 1>
+ <COND (<OR <==? <SET TEMP <GET ,P-ITBL ,P-PREP1>> <GET ,P-OTBL ,P-PREP1>>
+ <0? .TEMP>>
+ <PUT ,P-OTBL ,P-NC1 <GET ,P-ITBL ,P-NC1>>
+ <PUT ,P-OTBL ,P-NC1L <GET ,P-ITBL ,P-NC1L>>)
+ (T <RFALSE>)>)
+ (<==? <GET ,P-OTBL ,P-NC2> 1>
+ <COND (<OR <==? <SET TEMP <GET ,P-ITBL ,P-PREP1>> <GET ,P-OTBL ,P-PREP2>>
+ <0? .TEMP>>
+ <PUT ,P-OTBL ,P-NC2 <GET ,P-ITBL ,P-NC1>>
+ <PUT ,P-OTBL ,P-NC2L <GET ,P-ITBL ,P-NC1L>>
+ <SETG P-NCN 2>)
+ (T <RFALSE>)>)
+ (,P-ACLAUSE
+ <COND
+ (<NOT <==? ,P-NCN 1>> <SETG P-ACLAUSE <>> <RFALSE>)
+ (T
+ <SET BEG <GET ,P-ITBL ,P-NC1>>
+ <SET END <GET ,P-ITBL ,P-NC1L>>
+ <REPEAT ()
+ <COND (<==? .BEG .END>
+ <COND (.ADJ
+ <ACLAUSE-WIN .ADJ>
+ <RETURN>)
+ (T
+ <SETG P-ACLAUSE <>>
+ <RFALSE>)>)
+ (<AND <NOT .ADJ>
+ <BTST <GETB <SET WRD <GET .BEG 0>> ,P-PSOFF>
+ ,PS?ADJECTIVE>>
+ <SET ADJ .WRD>)
+ (<OR <BTST <GETB .WRD ,P-PSOFF> ,PS?OBJECT>
+ <==? .WRD ,W?ONE>>
+ <COND (<NOT <EQUAL? .WRD ,P-ANAM ,W?ONE>> <RFALSE>)
+ (T
+ <ACLAUSE-WIN .ADJ>
+ <RETURN>)>)>
+ <SET BEG <REST .BEG ,P-WORDLEN>>>)>)>
+ <REPEAT ()
+ <COND (<G? <SET CNT <+ .CNT 1>> ,P-ITBLLEN>
+ <SETG P-MERGED T>
+ <RTRUE>)
+ (T <PUT ,P-ITBL .CNT <GET ,P-OTBL .CNT>>)>>
+ T>
+
+<ROUTINE ACLAUSE-WIN (ADJ)
+ <SETG P-CCSRC ,P-OTBL>
+ <CLAUSE-COPY ,P-ACLAUSE <+ ,P-ACLAUSE 1> .ADJ>
+ <AND <NOT <==? <GET ,P-OTBL ,P-NC2> 0>>
+ <SETG P-NCN 2>>
+ <SETG P-ACLAUSE <>>
+ <RTRUE>>
+
+;"Print undefined word in input.
+ PTR points to the unknown word in P-LEXV"
+
+<ROUTINE WORD-PRINT (CNT BUF)
+ <REPEAT ()
+ <COND (<DLESS? CNT 0> <RETURN>)
+ (ELSE
+ <PRINTC <GETB ,P-INBUF .BUF>>
+ <SET BUF <+ .BUF 1>>)>>>
+
+<ROUTINE UNKNOWN-WORD (PTR "AUX" BUF)
+ #DECL ((PTR BUF) FIX)
+ <TELL "The word '">
+ <WORD-PRINT <GETB <REST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
+ <GETB <REST ,P-LEXV .BUF> 3>>
+ <TELL "' isn't in your vocabulary." CR>
+ <SETG QUOTE-FLAG <>>
+ <SETG P-OFLAG <>>>
+
+<ROUTINE CANT-USE (PTR "AUX" BUF)
+ #DECL ((PTR BUF) FIX)
+ <TELL "The word '">
+ <WORD-PRINT <GETB <REST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
+ <GETB <REST ,P-LEXV .BUF> 3>>
+ <TELL "' can't be used in that sense." CR>
+ <SETG QUOTE-FLAG <>>
+ <SETG P-OFLAG <>>>
+
+;" Perform syntax matching operations, using P-ITBL as the source of
+ the verb and adjectives for this input. Returns false if no
+ syntax matches, and does it's own orphaning. If return is true,
+ the syntax is saved in P-SYNTAX."
+
+<GLOBAL P-SLOCBITS 0>
+
+<CONSTANT P-SYNLEN 8>
+
+<CONSTANT P-SBITS 0>
+
+<CONSTANT P-SPREP1 1>
+
+<CONSTANT P-SPREP2 2>
+
+<CONSTANT P-SFWIM1 3>
+
+<CONSTANT P-SFWIM2 4>
+
+<CONSTANT P-SLOC1 5>
+
+<CONSTANT P-SLOC2 6>
+
+<CONSTANT P-SACTION 7>
+
+<CONSTANT P-SONUMS 3>
+
+<ROUTINE SYNTAX-CHECK ("AUX" SYN LEN NUM OBJ (DRIVE1 <>) (DRIVE2 <>) PREP VERB TMP)
+ #DECL ((DRIVE1 DRIVE2) <OR FALSE <PRIMTYPE VECTOR>>
+ (SYN) <PRIMTYPE VECTOR> (LEN NUM VERB PREP) FIX
+ (OBJ) <OR FALSE OBJECT>)
+ <COND (<0? <SET VERB <GET ,P-ITBL ,P-VERB>>>
+ <TELL "There's no verb in that sentence!" CR>
+ <RFALSE>)>
+ <SET SYN <GET ,VERBS <- 255 .VERB>>>
+ <SET LEN <GETB .SYN 0>>
+ <SET SYN <REST .SYN>>
+ <REPEAT ()
+ <SET NUM <BAND <GETB .SYN ,P-SBITS> ,P-SONUMS>>
+ <COND (<AND <NOT <L? .NUM 1>>
+ <0? ,P-NCN>
+ <OR <0? <SET PREP <GET ,P-ITBL ,P-PREP1>>>
+ <==? .PREP <GETB .SYN ,P-SPREP1>>>>
+ <SET DRIVE1 .SYN>)
+ (<==? <GETB .SYN ,P-SPREP1> <GET ,P-ITBL ,P-PREP1>>
+ <COND (<AND <==? .NUM 2> <==? ,P-NCN 1>>
+ <SET DRIVE2 .SYN>)
+ (<==? <GETB .SYN ,P-SPREP2> <GET ,P-ITBL ,P-PREP2>>
+ <SYNTAX-FOUND .SYN>
+ <RTRUE>)>)>
+ <COND (<DLESS? LEN 1>
+ <COND (<OR .DRIVE1 .DRIVE2> <RETURN>)
+ (T
+ <TELL "That last sentence didn't make sense." CR>
+ <RFALSE>)>)
+ (T <SET SYN <REST .SYN ,P-SYNLEN>>)>>
+ <COND (<AND .DRIVE1
+ <SET OBJ
+ <GWIM <GETB .DRIVE1 ,P-SFWIM1>
+ <GETB .DRIVE1 ,P-SLOC1>
+ <GETB .DRIVE1 ,P-SPREP1>>>>
+ <PUT ,P-PRSO ,P-MATCHLEN 1>
+ <PUT ,P-PRSO 1 .OBJ>
+ <SYNTAX-FOUND .DRIVE1>)
+ (<AND .DRIVE2
+ <SET OBJ
+ <GWIM <GETB .DRIVE2 ,P-SFWIM2>
+ <GETB .DRIVE2 ,P-SLOC2>
+ <GETB .DRIVE2 ,P-SPREP2>>>>
+ <PUT ,P-PRSI ,P-MATCHLEN 1>
+ <PUT ,P-PRSI 1 .OBJ>
+ <SYNTAX-FOUND .DRIVE2>)
+ (<EQUAL? .VERB ,ACT?FIND ,ACT?WHAT>
+ <TELL "That question cannot be answered." CR>
+ <RFALSE>)
+ (T
+ <ORPHAN .DRIVE1 .DRIVE2>
+ <TELL "What do you want to ">
+ <SET TMP <GET ,P-OTBL ,P-VERBN>>
+ <COND (<==? .TMP 0> <TELL "tell">)
+ (<0? <GETB ,P-VTBL 2>>
+ <PRINTB <GET .TMP 0>>)
+ (T
+ <WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>
+ <PUTB ,P-VTBL 2 0>)>
+ <COND (.DRIVE2
+ <CLAUSE-PRINT ,P-NC1 ,P-NC1L>)>
+ <SETG P-OFLAG T>
+ <PREP-PRINT <COND (.DRIVE1 <GETB .DRIVE1 ,P-SPREP1>)
+ (T <GETB .DRIVE2 ,P-SPREP2>)>>
+ <TELL "?" CR>
+ <RFALSE>)>>
+
+<ROUTINE ORPHAN (D1 D2 "AUX" (CNT -1))
+ #DECL ((D1 D2) <OR FALSE <PRIMTYPE VECTOR>>)
+ <PUT ,P-OCLAUSE ,P-MATCHLEN 0>
+ <SETG P-CCSRC ,P-ITBL>
+ <REPEAT ()
+ <COND (<IGRTR? CNT ,P-ITBLLEN> <RETURN>)
+ (T <PUT ,P-OTBL .CNT <GET ,P-ITBL .CNT>>)>>
+ <COND (<==? ,P-NCN 2> <CLAUSE-COPY ,P-NC2 ,P-NC2L>)>
+ <COND (<NOT <L? ,P-NCN 1>> <CLAUSE-COPY ,P-NC1 ,P-NC1L>)>
+ <COND (.D1
+ <PUT ,P-OTBL ,P-PREP1 <GETB .D1 ,P-SPREP1>>
+ <PUT ,P-OTBL ,P-NC1 1>)
+ (.D2
+ <PUT ,P-OTBL ,P-PREP2 <GETB .D2 ,P-SPREP2>>
+ <PUT ,P-OTBL ,P-NC2 1>)>>
+
+<ROUTINE CLAUSE-PRINT (BPTR EPTR "OPTIONAL" (THE? T))
+ <BUFFER-PRINT <GET ,P-ITBL .BPTR> <GET ,P-ITBL .EPTR> .THE?>>
+
+<ROUTINE BUFFER-PRINT (BEG END CP "AUX" (NOSP <>) WRD (FIRST?? T) (PN <>))
+ #DECL ((BEG END) <PRIMTYPE VECTOR> (CP) <OR FALSE ATOM>)
+ <REPEAT ()
+ <COND (<==? .BEG .END> <RETURN>)
+ (T
+ <COND (.NOSP <SET NOSP <>>)
+ (T <TELL " ">)>
+ <COND (<==? <SET WRD <GET .BEG 0>> ,W?.> <SET NOSP T>)
+ (<==? .WRD ,W?MRS> <TELL "Mrs."> <SET PN T>)
+ (<==? .WRD ,W?MS> <TELL "Ms."> <SET PN T>)
+ (<==? .WRD ,W?MR> <TELL "Mr."> <SET PN T>)
+ (<OR <EQUAL? .WRD ,W?BAXTER ,W?GEORGE ,W?ROBNER>
+ <EQUAL? .WRD ,W?MCNABB ,W?ROURKE ,W?DUNBAR>
+ <EQUAL? .WRD ,W?STEVEN ,W?STEVE ,W?DUFFY>>
+ <CAPITALIZE .BEG>
+ <SET PN T>)
+ (T
+ <COND (<AND .FIRST?? <NOT .PN> .CP>
+ <TELL "the ">)>
+ <COND (,P-OFLAG <PRINTB .WRD>)
+ (<AND <==? .WRD ,W?IT>
+ <==? ,P-IT-LOC ,HERE>>
+ <PRINTD ,P-IT-OBJECT>)
+ (T
+ <WORD-PRINT <GETB .BEG 2>
+ <GETB .BEG 3>>)>
+ <SET FIRST?? <>>)>)>
+ <SET BEG <REST .BEG ,P-WORDLEN>>>>
+
+<ROUTINE CAPITALIZE (PTR)
+ <PRINTC <- <GETB ,P-INBUF <GETB .PTR 3>> 32>>
+ <WORD-PRINT <- <GETB .PTR 2> 1> <+ <GETB .PTR 3> 1>>>
+
+<ROUTINE PREP-PRINT (PREP "AUX" WRD)
+ #DECL ((PREP) FIX)
+ <COND (<NOT <0? .PREP>>
+ <TELL " ">
+ <SET WRD <PREP-FIND .PREP>>
+ <COND (<==? .WRD ,W?AGAINST> <TELL "against">)
+ (T <PRINTB .WRD>)>)>>
+
+<ROUTINE CLAUSE-COPY (BPTR EPTR "OPTIONAL" (INSERT <>) "AUX" BEG END)
+ #DECL ((BPTR EPTR) FIX (BEG END) <PRIMTYPE VECTOR>
+ (INSERT) <OR FALSE TABLE>)
+ <SET BEG <GET ,P-CCSRC .BPTR>>
+ <SET END <GET ,P-CCSRC .EPTR>>
+ <PUT ,P-OTBL
+ .BPTR
+ <REST ,P-OCLAUSE
+ <+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN> 2>>>
+ <REPEAT ()
+ <COND (<==? .BEG .END>
+ <PUT ,P-OTBL
+ .EPTR
+ <REST ,P-OCLAUSE
+ <+ <* <GET ,P-OCLAUSE ,P-MATCHLEN> ,P-LEXELEN>
+ 2>>>
+ <RETURN>)
+ (T
+ <COND (<AND .INSERT <==? ,P-ANAM <GET .BEG 0>>>
+ <CLAUSE-ADD .INSERT>)>
+ <CLAUSE-ADD <GET .BEG 0>>)>
+ <SET BEG <REST .BEG ,P-WORDLEN>>>>
+
+<ROUTINE CLAUSE-ADD (WRD "AUX" PTR)
+ #DECL ((WRD) TABLE (PTR) FIX)
+ <SET PTR <+ <GET ,P-OCLAUSE ,P-MATCHLEN> 2>>
+ <PUT ,P-OCLAUSE <- .PTR 1> .WRD>
+ <PUT ,P-OCLAUSE .PTR 0>
+ <PUT ,P-OCLAUSE ,P-MATCHLEN .PTR>>
+
+<ROUTINE PREP-FIND (PREP "AUX" (CNT 0) SIZE)
+ #DECL ((PREP CNT SIZE) FIX)
+ <SET SIZE <* <GET ,PREPOSITIONS 0> 2>>
+ <REPEAT ()
+ <COND (<IGRTR? CNT .SIZE> <RFALSE>)
+ (<==? <GET ,PREPOSITIONS .CNT> .PREP>
+ <RETURN <GET ,PREPOSITIONS <- .CNT 1>>>)>>>
+
+<ROUTINE SYNTAX-FOUND (SYN)
+ #DECL ((SYN) <PRIMTYPE VECTOR>)
+ <SETG P-SYNTAX .SYN>
+ <SETG PRSA <GETB .SYN ,P-SACTION>>>
+
+<GLOBAL P-GWIMBIT 0>
+
+<ROUTINE GWIM (GBIT LBIT PREP "AUX" OBJ)
+ #DECL ((GBIT LBIT) FIX (OBJ) OBJECT)
+ <COND (<==? .GBIT ,RMUNGBIT>
+ <RETURN ,ROOMS>)>
+ <SETG P-GWIMBIT .GBIT>
+ <SETG P-SLOCBITS .LBIT>
+ <PUT ,P-MERGE ,P-MATCHLEN 0>
+ <COND (<GET-OBJECT ,P-MERGE <>>
+ <SETG P-GWIMBIT 0>
+ <COND (<==? <GET ,P-MERGE ,P-MATCHLEN> 1>
+ <SET OBJ <GET ,P-MERGE 1>>
+ <TELL "(">
+ <COND (<NOT <0? .PREP>>
+ <PRINTB <PREP-FIND .PREP>>
+ <COND (<NOT <FSET? .OBJ ,PERSON>>
+ <TELL " the ">)
+ (T <TELL " ">)>)>
+ <TELL D .OBJ ")" CR>
+ .OBJ)>)
+ (T <SETG P-GWIMBIT 0> <RFALSE>)>>
+
+<ROUTINE SNARF-OBJECTS ("AUX" PTR)
+ #DECL ((PTR) <OR FIX <PRIMTYPE VECTOR>>)
+ <COND (<NOT <==? <SET PTR <GET ,P-ITBL ,P-NC1>> 0>>
+ <SETG P-SLOCBITS <GETB ,P-SYNTAX ,P-SLOC1>>
+ <OR <SNARFEM .PTR <GET ,P-ITBL ,P-NC1L> ,P-PRSO> <RFALSE>>
+ <OR <0? <GET ,P-BUTS ,P-MATCHLEN>>
+ <SETG P-PRSO <BUT-MERGE ,P-PRSO>>>)>
+ <COND (<NOT <==? <SET PTR <GET ,P-ITBL ,P-NC2>> 0>>
+ <SETG P-SLOCBITS <GETB ,P-SYNTAX ,P-SLOC2>>
+ <OR <SNARFEM .PTR <GET ,P-ITBL ,P-NC2L> ,P-PRSI> <RFALSE>>
+ <COND (<NOT <0? <GET ,P-BUTS ,P-MATCHLEN>>>
+ <COND (<==? <GET ,P-PRSI ,P-MATCHLEN> 1>
+ <SETG P-PRSO <BUT-MERGE ,P-PRSO>>)
+ (T <SETG P-PRSI <BUT-MERGE ,P-PRSI>>)>)>)>
+ <RTRUE>>
+
+<ROUTINE BUT-MERGE (TBL "AUX" LEN BUTLEN (CNT 1) (MATCHES 0) OBJ NTBL)
+ #DECL ((TBL NTBL) TABLE (LEN BUTLEN MATCHES) FIX (OBJ) OBJECT)
+ <SET LEN <GET .TBL ,P-MATCHLEN>>
+ <PUT ,P-MERGE ,P-MATCHLEN 0>
+ <REPEAT ()
+ <COND (<DLESS? LEN 0> <RETURN>)
+ (<ZMEMQ <SET OBJ <GET .TBL .CNT>> ,P-BUTS>)
+ (T
+ <PUT ,P-MERGE <+ .MATCHES 1> .OBJ>
+ <SET MATCHES <+ .MATCHES 1>>)>
+ <SET CNT <+ .CNT 1>>>
+ <PUT ,P-MERGE ,P-MATCHLEN .MATCHES>
+ <SET NTBL ,P-MERGE>
+ <SETG P-MERGE .TBL>
+ .NTBL>
+
+<GLOBAL P-NAM <>>
+
+<GLOBAL P-ADJ <>>
+
+<GLOBAL P-ADJN <>>
+
+<GLOBAL P-PRSO <ITABLE NONE 50>>
+
+<GLOBAL P-PRSI <ITABLE NONE 50>>
+
+<GLOBAL P-BUTS <ITABLE NONE 50>>
+
+<GLOBAL P-MERGE <ITABLE NONE 50>>
+
+<GLOBAL P-OCLAUSE <ITABLE NONE 50>>
+
+<GLOBAL P-MATCHLEN 0>
+
+<GLOBAL P-GETFLAGS 0>
+
+<CONSTANT P-ALL 1>
+
+<CONSTANT P-ONE 2>
+
+<CONSTANT P-INHIBIT 4>
+
+<GLOBAL P-CSPTR <>>
+<GLOBAL P-CEPTR <>>
+
+<ROUTINE SNARFEM (PTR EPTR TBL "AUX" (AND <>) (BUT <>) LEN WV WORD NW)
+ #DECL ((TBL) TABLE (PTR EPTR) <PRIMTYPE VECTOR> (AND) <OR ATOM FALSE>
+ (BUT) <OR FALSE TABLE> (WV) <OR FALSE FIX>)
+ <SETG P-GETFLAGS 0>
+ <SETG P-CSPTR .PTR>
+ <SETG P-CEPTR .EPTR>
+ <PUT ,P-BUTS ,P-MATCHLEN 0>
+ <PUT .TBL ,P-MATCHLEN 0>
+ <SET WORD <GET .PTR 0>>
+ <REPEAT ()
+ <COND (<==? .PTR .EPTR> <RETURN <GET-OBJECT <OR .BUT .TBL>>>)
+ (T
+ <SET NW <GET .PTR ,P-LEXELEN>>
+ <COND (<==? .WORD ,W?ALL>
+ <SETG P-GETFLAGS ,P-ALL>
+ <COND (<==? .NW ,W?OF>
+ <SET PTR <REST .PTR ,P-WORDLEN>>)>)
+ (<EQUAL? .WORD ,W?BUT ,W?EXCEPT>
+ <OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
+ <SET BUT ,P-BUTS>
+ <PUT .BUT ,P-MATCHLEN 0>)
+ (<EQUAL? .WORD ,W?A ,W?ONE>
+ <COND (<NOT ,P-ADJ>
+ <SETG P-GETFLAGS ,P-ONE>
+ <COND (<==? .NW ,W?OF>
+ <SET PTR <REST .PTR ,P-WORDLEN>>)>)
+ (T
+ <SETG P-NAM ,P-ONEOBJ>
+ <OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
+ <AND <0? .NW> <RTRUE>>)>)
+ (<AND <EQUAL? .WORD ,W?AND ,W?COMMA>
+ <NOT <EQUAL? .NW ,W?AND ,W?COMMA>>>
+ <OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
+ T)
+ (<WT? .WORD ,PS?BUZZ-WORD>)
+ (<EQUAL? .WORD ,W?AND ,W?COMMA>)
+ (<==? .WORD ,W?OF>
+ <COND (<0? ,P-GETFLAGS>
+ <SETG P-GETFLAGS ,P-INHIBIT>)>)
+ (<AND <SET WV <WT? .WORD ,PS?ADJECTIVE ,P1?ADJECTIVE>>
+ <NOT ,P-ADJ>>
+ <SETG P-ADJ .WV>
+ <SETG P-ADJN .WORD>)
+ (<WT? .WORD ,PS?OBJECT ,P1?OBJECT>
+ <SETG P-NAM .WORD>
+ <SETG P-ONEOBJ .WORD>)>)>
+ <COND (<NOT <==? .PTR .EPTR>>
+ <SET PTR <REST .PTR ,P-WORDLEN>>
+ <SET WORD .NW>)>>>
+
+<CONSTANT SH 128>
+
+<CONSTANT SC 64>
+
+<CONSTANT SIR 32>
+
+<CONSTANT SOG 16>
+
+<CONSTANT STAKE 8>
+
+<CONSTANT SMANY 4>
+
+<CONSTANT SHAVE 2>
+
+<ROUTINE GET-OBJECT (TBL
+ "OPTIONAL" (VRB T)
+ "AUX" BITS LEN XBITS TLEN (GCHECK <>) (OLEN 0))
+ #DECL ((TBL) TABLE (XBITS BITS TLEN LEN) FIX (GWIM) <OR FALSE FIX>
+ (VRB GCHECK) <OR ATOM FALSE>)
+ <SET XBITS ,P-SLOCBITS>
+ <SET TLEN <GET .TBL ,P-MATCHLEN>>
+ <COND (<BTST ,P-GETFLAGS ,P-INHIBIT> <RTRUE>)>
+ <COND (<AND <NOT ,P-NAM> ,P-ADJ <WT? ,P-ADJN ,PS?OBJECT ,P1?OBJECT>>
+ <SETG P-NAM ,P-ADJN>
+ <SETG P-ADJ <>>)>
+ <COND (<AND <NOT ,P-NAM>
+ <NOT ,P-ADJ>
+ <NOT <==? ,P-GETFLAGS ,P-ALL>>
+ <0? ,P-GWIMBIT>>
+ <COND (.VRB
+ <TELL "Your last sentence seemed to be missing a noun."
+ CR>)>
+ <RFALSE>)>
+ <COND (<OR <NOT <==? ,P-GETFLAGS ,P-ALL>> <0? ,P-SLOCBITS>>
+ <SETG P-SLOCBITS -1>)>
+ <SETG P-TABLE .TBL>
+ <PROG ()
+ <COND (.GCHECK <GLOBAL-CHECK .TBL>)
+ (T
+ <COND (,LIT <DO-SL ,HERE ,SOG ,SIR>)>
+ <DO-SL ,PLAYER ,SH ,SC>)>
+ <SET LEN <- <GET .TBL ,P-MATCHLEN> .TLEN>>
+ <COND (<BTST ,P-GETFLAGS ,P-ALL>)
+ (<AND <BTST ,P-GETFLAGS ,P-ONE>
+ <NOT <0? .LEN>>>
+ <COND (<NOT <==? .LEN 1>>
+ <PUT .TBL 1 <GET .TBL <RANDOM .LEN>>>
+ <TELL "(How about the ">
+ <PRINTD <GET .TBL 1>>
+ <TELL "?)" CR>)>
+ <PUT .TBL ,P-MATCHLEN 1>)
+ (<OR <G? .LEN 1>
+ <AND <0? .LEN> <NOT <==? ,P-SLOCBITS -1>>>>
+ <COND (<==? ,P-SLOCBITS -1>
+ <SETG P-SLOCBITS .XBITS>
+ <SET OLEN .LEN>
+ <PUT .TBL
+ ,P-MATCHLEN
+ <- <GET .TBL ,P-MATCHLEN> .LEN>>
+ <AGAIN>)
+ (T
+ <COND (<0? .LEN> <SET LEN .OLEN>)>
+ <COND (<AND .VRB ,P-NAM>
+ <WHICH-PRINT .TLEN .LEN .TBL>
+ <SETG P-ACLAUSE
+ <COND (<==? .TBL ,P-PRSO> ,P-NC1)
+ (T ,P-NC2)>>
+ <SETG P-AADJ ,P-ADJ>
+ <SETG P-ANAM ,P-NAM>
+ <ORPHAN <> <>>
+ <SETG P-OFLAG T>)
+ (.VRB
+ <TELL "You must supply a verb!" CR>)>
+ <SETG P-NAM <>>
+ <SETG P-ADJ <>>
+ <RFALSE>)>)
+ (<AND <0? .LEN> .GCHECK>
+ <COND (.VRB
+ <COND (,LIT
+ <TELL "You can't see any">
+ <COND (,P-OFLAG
+ <COND (,P-ADJ
+ <TELL " ">
+ <PRINTB ,P-ADJN>)>
+ <COND (,P-NAM
+ <TELL " ">
+ <PRINTB ,P-NAM>)>)
+ (T
+ <BUFFER-PRINT ,P-CSPTR
+ ,P-CEPTR
+ <>>)>
+ <TELL " here." CR>)
+ (T
+ <TELL "It's too dark to see." CR>)>)>
+ <SETG P-NAM <>>
+ <SETG P-ADJ <>>
+ <RFALSE>)
+ (<0? .LEN> <SET GCHECK T> <AGAIN>)>
+ <SETG P-ADJ <>>
+ <SETG P-NAM <>>
+ <SETG P-SLOCBITS .XBITS>
+ <RTRUE>>>
+
+<ROUTINE WHICH-PRINT (TLEN LEN TBL "AUX" OBJ RLEN)
+ <SET RLEN .LEN>
+ <TELL "Which ">
+ <COND (<OR ,P-OFLAG ,P-MERGED> <TELL " "> <PRINTB ,P-NAM>)
+ (<==? .TBL ,P-PRSO>
+ <CLAUSE-PRINT ,P-NC1 ,P-NC1L <>>)
+ (T <CLAUSE-PRINT ,P-NC2 ,P-NC2L <>>)>
+ <TELL " do you mean, ">
+ <REPEAT ()
+ <SET TLEN <+ .TLEN 1>>
+ <SET OBJ <GET .TBL .TLEN>>
+ <COND (<NOT <FSET? .OBJ ,PERSON>> <TELL "the ">)>
+ <TELL D .OBJ>
+ <COND (<==? .LEN 2>
+ <COND (<NOT <==? .RLEN 2>> <TELL ",">)>
+ <TELL " or ">)
+ (<G? .LEN 2> <TELL ", ">)>
+ <COND (<L? <SET LEN <- .LEN 1>> 1>
+ <TELL "?" CR>
+ <RETURN>)>>>
+
+
+<ROUTINE GLOBAL-CHECK (TBL "AUX" LEN RMG RMGL (CNT 0) OBJ OBITS FOO)
+ #DECL ((TBL) TABLE (RMG) <OR FALSE TABLE> (RMGL CNT) FIX (OBJ) OBJECT)
+ <SET LEN <GET .TBL ,P-MATCHLEN>>
+ <SET OBITS ,P-SLOCBITS>
+ <COND (<SET RMG <GETPT ,HERE ,P?GLOBAL>>
+ <SET RMGL <- <PTSIZE .RMG> 1>>
+ <REPEAT ()
+ <COND (<THIS-IT? <SET OBJ <GETB .RMG .CNT>> .TBL>
+ <OBJ-FOUND .OBJ .TBL>)>
+ <COND (<IGRTR? CNT .RMGL> <RETURN>)>>)>
+ <COND (<SET RMG <GETPT ,HERE ,P?PSEUDO>>
+ <SET RMGL <- </ <PTSIZE .RMG> 4> 1>>
+ <SET CNT 0>
+ <REPEAT ()
+ <COND (<==? ,P-NAM <GET .RMG <* .CNT 2>>>
+ <PUTP ,PSEUDO-OBJECT
+ ,P?ACTION
+ <GET .RMG <+ <* .CNT 2> 1>>>
+ <SET FOO
+ <BACK <GETPT ,PSEUDO-OBJECT ,P?ACTION> 5>>
+ <PUT .FOO 0 <GET ,P-NAM 0>>
+ <PUT .FOO 1 <GET ,P-NAM 1>>
+ <OBJ-FOUND ,PSEUDO-OBJECT .TBL>
+ <RETURN>)
+ (<IGRTR? CNT .RMGL> <RETURN>)>>)>
+ <COND (<==? <GET .TBL ,P-MATCHLEN> .LEN>
+ <SETG P-SLOCBITS -1>
+ <SETG P-TABLE .TBL>
+ <DO-SL ,GLOBAL-OBJECTS 1 1>
+ <SETG P-SLOCBITS .OBITS>
+ <COND (<0? <GET .TBL ,P-MATCHLEN>>
+ <COND (<OR <EQUAL? ,PRSA ,V?LOOK-INSIDE ,V?SEARCH>
+ <EQUAL? ,PRSA ,V?EXAMINE ,V?FIND ,V?THROUGH>>
+ <DO-SL ,ROOMS 1 1>)>)>)>>
+
+<ROUTINE DO-SL (OBJ BIT1 BIT2 "AUX" BITS)
+ #DECL ((OBJ) OBJECT (BIT1 BIT2 BITS) FIX)
+ <COND (<BTST ,P-SLOCBITS <+ .BIT1 .BIT2>>
+ <SEARCH-LIST .OBJ ,P-TABLE ,P-SRCALL>)
+ (T
+ <COND (<BTST ,P-SLOCBITS .BIT1>
+ <SEARCH-LIST .OBJ ,P-TABLE ,P-SRCTOP>)
+ (<BTST ,P-SLOCBITS .BIT2>
+ <SEARCH-LIST .OBJ ,P-TABLE ,P-SRCBOT>)
+ (T <RTRUE>)>)>>
+
+<CONSTANT P-SRCBOT 2>
+
+<CONSTANT P-SRCTOP 0>
+
+<CONSTANT P-SRCALL 1>
+
+<ROUTINE SEARCH-LIST (OBJ TBL LVL "AUX" FLS NOBJ)
+ #DECL ((OBJ NOBJ) <OR FALSE OBJECT> (TBL) TABLE (LVL) FIX (FLS) ANY)
+ <COND (<SET OBJ <FIRST? .OBJ>>
+ <REPEAT ()
+ <COND (<AND <NOT <==? .LVL ,P-SRCBOT>>
+ <GETPT .OBJ ,P?SYNONYM>
+ <THIS-IT? .OBJ .TBL>>
+ <OBJ-FOUND .OBJ .TBL>)>
+ <COND (<AND <OR <NOT <==? .LVL ,P-SRCTOP>>
+ <FSET? .OBJ ,SEARCHBIT>
+ <FSET? .OBJ ,SURFACEBIT>>
+ <SET NOBJ <FIRST? .OBJ>>
+ <OR <FSET? .OBJ ,OPENBIT>
+ <FSET? .OBJ ,TRANSBIT>>>
+ <SET FLS
+ <SEARCH-LIST .OBJ
+ .TBL
+ <COND (<FSET? .OBJ ,SURFACEBIT>
+ ,P-SRCALL)
+ (<FSET? .OBJ ,SEARCHBIT>
+ ,P-SRCALL)
+ (T ,P-SRCTOP)>>>)>
+ <COND (<SET OBJ <NEXT? .OBJ>>) (T <RETURN>)>>)>>
+
+<ROUTINE OBJ-FOUND (OBJ TBL "AUX" PTR)
+ #DECL ((OBJ) OBJECT (TBL) TABLE (PTR) FIX)
+ <SET PTR <GET .TBL ,P-MATCHLEN>>
+ <PUT .TBL <+ .PTR 1> .OBJ>
+ <PUT .TBL ,P-MATCHLEN <+ .PTR 1>>>
+
+<ROUTINE TAKE-CHECK ()
+ <AND <ITAKE-CHECK ,P-PRSO <GETB ,P-SYNTAX ,P-SLOC1>>
+ <ITAKE-CHECK ,P-PRSI <GETB ,P-SYNTAX ,P-SLOC2>>>>
+
+<ROUTINE ITAKE-CHECK (TBL BITS "AUX" PTR OBJ TAKEN)
+ #DECL ((TBL) TABLE (BITS PTR) FIX (OBJ) OBJECT
+ (TAKEN) <OR FALSE FIX ATOM>)
+ <COND (<AND <SET PTR <GET .TBL ,P-MATCHLEN>> <BTST .BITS ,STAKE>>
+ <REPEAT ()
+ <COND (<L? <SET PTR <- .PTR 1>> 0> <RETURN>)
+ (T
+ <SET OBJ <GET .TBL <+ .PTR 1>>>
+ <COND (<==? .OBJ ,IT> <SET OBJ ,P-IT-OBJECT>)>
+ <COND (<NOT <IN? .OBJ ,WINNER>>
+ <SETG PRSO .OBJ>
+ <COND (<FSET? .OBJ ,TRYTAKEBIT>
+ <SET TAKEN T>)
+ (<==? <ITAKE <>> T>
+ <SET TAKEN <>>)
+ (T <SET TAKEN T>)>
+ <COND (<AND .TAKEN <BTST .BITS ,SHAVE>>
+ <TELL "You don't have the ">
+ <PRINTD .OBJ>
+ <TELL "." CR>
+ <RFALSE>)
+ (<NOT .TAKEN>
+ <TELL "(Taken)" CR>)>)>)>>)
+ (T)>>
+
+<ROUTINE MANY-CHECK ("AUX" (LOSS <>) TMP)
+ #DECL ((LOSS) <OR FALSE FIX>)
+ <COND (<AND <G? <GET ,P-PRSO ,P-MATCHLEN> 1>
+ <NOT <BTST <GETB ,P-SYNTAX ,P-SLOC1> ,SMANY>>>
+ <SET LOSS 1>)
+ (<AND <G? <GET ,P-PRSI ,P-MATCHLEN> 1>
+ <NOT <BTST <GETB ,P-SYNTAX ,P-SLOC2> ,SMANY>>>
+ <SET LOSS 2>)>
+ <COND (.LOSS
+ <TELL "You can't use multiple ">
+ <COND (<==? .LOSS 2> <TELL "in">)>
+ <TELL "direct objects with '">
+ <SET TMP <GET ,P-ITBL ,P-VERBN>>
+ <COND (<0? .TMP> <TELL "tell">)
+ (,P-OFLAG
+ <PRINTB <GET .TMP 0>>)
+ (T
+ <WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>)>
+ <TELL "'." CR>
+ <RFALSE>)
+ (T)>>
+
+<ROUTINE ZMEMQ (ITM TBL "OPTIONAL" (SIZE -1) "AUX" (CNT 1))
+ <COND (<NOT .TBL> <RFALSE>)>
+ <COND (<NOT <L? .SIZE 0>> <SET CNT 0>)
+ (ELSE <SET SIZE <GET .TBL 0>>)>
+ <REPEAT ()
+ <COND (<==? .ITM <GET .TBL .CNT>> <RTRUE>)
+ (<IGRTR? CNT .SIZE> <RFALSE>)>>>
+
+<ROUTINE ZMEMQB (ITM TBL SIZE "AUX" (CNT 0))
+ #DECL ((ITM) ANY (TBL) TABLE (SIZE CNT) FIX)
+ <REPEAT ()
+ <COND (<==? .ITM <GETB .TBL .CNT>> <RTRUE>)
+ (<IGRTR? CNT .SIZE> <RFALSE>)>>>
+
+<SETG ALWAYS-LIT <>>
+
+<ROUTINE LIT? (RM "AUX" OHERE (LIT <>))
+ #DECL ((RM OHERE) OBJECT (LIT) <OR ATOM FALSE>)
+ <SETG P-GWIMBIT ,ONBIT>
+ <SET OHERE ,HERE>
+ <SETG HERE .RM>
+ <COND (<OR <FSET? .RM ,ONBIT> ,ALWAYS-LIT> <SET LIT T>)
+ (T
+ <PUT ,P-MERGE ,P-MATCHLEN 0>
+ <SETG P-TABLE ,P-MERGE>
+ <SETG P-SLOCBITS -1>
+ <COND (<==? .OHERE .RM> <DO-SL ,WINNER 1 1>)>
+ <DO-SL .RM 1 1>
+ <COND (<G? <GET ,P-TABLE ,P-MATCHLEN> 0> <SET LIT T>)>)>
+ <SETG HERE .OHERE>
+ <SETG P-GWIMBIT 0>
+ .LIT>
+
+<ROUTINE PRSO-PRINT ("AUX" PTR)
+ <COND (<OR ,P-MERGED
+ <==? <GET <SET PTR <GET ,P-ITBL ,P-NC1>> 0> ,W?IT>>
+ <TELL " " D ,PRSO>)
+ (T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC1L> <>>)>>
+
+<ROUTINE PRSI-PRINT ("AUX" PTR)
+ <COND (<OR ,P-MERGED
+ <==? <GET <SET PTR <GET ,P-ITBL ,P-NC2>> 0> ,W?IT>>
+ <TELL " " D ,PRSO>)
+ (T <BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC2L> <>>)>> \ No newline at end of file
diff --git a/syntax.zil b/syntax.zil
new file mode 100644
index 0000000..0b0f868
--- /dev/null
+++ b/syntax.zil
@@ -0,0 +1,605 @@
+"SYNTAX for
+ DEADLINE
+ Copyright 1982 Infocom, Inc. All rights reserved.
+"
+
+"SUBTITLE VOCABULARY"
+
+<BUZZ A AN THE IS ARE AND OF THEN ALL ONE BUT EXCEPT \. \, \" Y NUMBER
+ MINUTE BACK PAGE CAREFULLY QUIETLY SLOWLY QUICKLY BRIEFLY
+ DO YOU HAVE WAS WERE YOUR>
+
+<SYNONYM WITH USING THROUGH>
+<SYNONYM IN INSIDE INTO>
+<SYNONYM UNDER UNDERNEATH BENEATH>
+
+<SYNONYM NORTH N>
+<SYNONYM SOUTH S>
+<SYNONYM EAST E>
+<SYNONYM WEST W>
+<SYNONYM DOWN D DOWNSTAIRS>
+<SYNONYM UP U UPSTAIRS>
+<SYNONYM NW NORTHWEST>
+<SYNONYM NE NORTHEAST>
+<SYNONYM SW SOUTHWEST>
+<SYNONYM SE SOUTHE>
+
+\
+
+"ZORK game commands"
+
+<SYNTAX BRIEF = V-BRIEF>
+
+<SYNTAX SUPER = V-SUPER-BRIEF>
+<SYNONYM SUPER SUPERBRIEF>
+
+<SYNTAX SPACE = V-SPACE>
+
+<SYNTAX UNSPACE = V-UNSPACE>
+
+<SYNTAX DIAGNOSE = V-DIAGNOSE>
+
+<SYNTAX INVENTORY = V-INVENTORY>
+<SYNONYM INVENTORY I>
+
+<SYNTAX TIME = V-TIME>
+<SYNONYM TIME T>
+
+<SYNTAX QUIT = V-QUIT>
+<SYNONYM QUIT Q>
+
+<SYNTAX RESTART = V-RESTART>
+
+<SYNTAX RESTORE = V-RESTORE>
+
+<SYNTAX SAVE = V-SAVE>
+
+<SYNTAX SCORE = V-SCORE>
+
+<SYNTAX VERSION = V-VERSION>
+
+<SYNTAX VERBOSE = V-VERBOSE>
+
+\
+
+"SUBTITLE REAL VERBS"
+
+<SYNTAX ACCUSE OBJECT (FIND PERSON) WITH OBJECT = V-ACCUSE PRE-ACCUSE>
+<SYNTAX ACCUSE OBJECT (FIND PERSON) = V-ACCUSE PRE-ACCUSE>
+<SYNTAX AGAIN = V-AGAIN>
+
+<SYNTAX ANALYZE OBJECT FOR OBJECT = V-ANALYZE>
+<SYNTAX ANALYZE OBJECT = V-ANALYZE>
+<SYNTAX ANALYZE OFF OBJECT = V-ANALYZE>
+<SYNONYM ANALYZE ANALYSE CHECK TEST DUST>
+
+<SYNTAX ANSWER = V-ANSWER>
+<SYNTAX ANSWER OBJECT = V-REPLY>
+<SYNONYM ANSWER REPLY>
+
+<SYNTAX APPLY OBJECT TO OBJECT = V-PUT PRE-PUT>
+
+<SYNTAX ARREST OBJECT (FIND PERSON) (MANY) FOR OBJECT = V-ARREST>
+<SYNTAX ARREST OBJECT (FIND PERSON) (MANY) = V-ARREST>
+
+<SYNTAX ASK OBJECT (FIND PERSON) ABOUT OBJECT = V-ASK-ABOUT>
+;<SYNTAX ASK OBJECT (FIND PERSON) ABOUT OBJECT = V-ASK-ABOUT>
+<SYNTAX ASK OBJECT (FIND PERSON) FOR OBJECT = V-ASK-FOR>
+<SYNTAX ASK OBJECT (FIND PERSON) = V-TELL>
+<SYNONYM ASK QUESTION INQUIRE>
+
+<SYNTAX ATTACK
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
+ = V-ATTACK>
+<SYNONYM ATTACK FIGHT HURT INJURE HIT>
+
+<SYNTAX BRUSH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-BRUSH ;*>
+<SYNTAX BRUSH OFF OBJECT (HELD CARRIED) = V-BRUSH>
+<SYNTAX BRUSH
+ OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
+ WITH OBJECT
+ = V-BRUSH>
+<SYNONYM BRUSH CLEAN WIPE>
+
+<SYNTAX BUG = V-BUG>
+
+<SYNTAX BURN
+ OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
+ = V-BURN PRE-BURN>
+<SYNTAX BURN
+ DOWN
+ OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
+ = V-BURN PRE-BURN>
+<SYNONYM BURN INCINERATE IGNITE>
+
+<SYNTAX CALL = V-CALL-LOSE>
+<SYNTAX CALL OBJECT = V-CALL>
+<SYNTAX CALL UP OBJECT = V-PHONE>
+<SYNONYM CALL HEY DIAL>
+
+<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
+<SYNTAX CLIMB UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
+<SYNTAX CLIMB DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
+<SYNTAX CLIMB OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-FOO>
+;<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
+<SYNONYM CLIMB SIT HATCH>
+
+<SYNTAX CLOSE
+ OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-CLOSE>
+
+<SYNTAX CONFRONT OBJECT (FIND PERSON) WITH OBJECT = V-CONFRONT>
+
+<SYNTAX COUNT OBJECT = V-COUNT>
+<SYNONYM COUNT>
+
+<SYNTAX CROSS OBJECT = V-CROSS>
+<SYNONYM CROSS FORD>
+
+<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
+<SYNONYM CUT SLICE PIERCE>
+
+<SYNTAX CURSE = V-CURSES>
+<SYNTAX CURSE OBJECT (FIND PERSON) = V-CURSES>
+<SYNONYM CURSE DAMN>
+
+<SYNTAX DRINK
+ OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-DRINK>
+<SYNONYM DRINK IMBIBE SWALLOW>
+
+<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP ;*>
+<SYNTAX DROP OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
+<SYNTAX DROP OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
+<SYNTAX DROP OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
+<SYNONYM DROP RELEASE>
+
+<SYNTAX EAT
+ OBJECT (FIND FOODBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE MANY)
+ = V-EAT>
+<SYNONYM EAT CONSUME>
+
+<SYNTAX ENTER = V-ENTER>
+<SYNTAX ENTER OBJECT = V-THROUGH>
+<SYNTAX EXIT = V-EXIT>
+<SYNTAX EXIT OBJECT = V-EXIT>
+
+<SYNTAX EXAMINE OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
+ = V-EXAMINE PRE-EXAMINE>
+<SYNONYM EXAMINE DESCRIBE>
+
+<SYNTAX EXTINGUISH
+ OBJECT (FIND LIGHTBIT) (MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
+ = V-LAMP-OFF>
+<SYNONYM EXTINGUISH DOUSE>
+
+<SYNTAX FILL
+ OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ WITH
+ OBJECT
+ = V-FILL>
+<SYNTAX FILL
+ OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-FILL>
+
+<SYNTAX FIND OBJECT = V-FIND PRE-FIND>
+<SYNONYM FIND WHERE THERE SEEN>
+
+<SYNTAX FINGERPRINT OBJECT (HELD CARRIED IN-ROOM ON-GROUND) = V-FINGERPRINT>
+
+<SYNTAX FLUSH OBJECT (ON-GROUND IN-ROOM) = V-FLUSH>
+
+<SYNTAX FOLLOW OBJECT = V-FOLLOW>
+<SYNONYM FOLLOW PURSUE CHASE>
+
+<SYNTAX GIVE
+ OBJECT (MANY HELD CARRIED ON-GROUND IN-ROOM)
+ TO
+ OBJECT (FIND PERSON) (ON-GROUND)
+ = V-GIVE PRE-GIVE>
+<SYNTAX GIVE
+ OBJECT (FIND PERSON) (ON-GROUND)
+ OBJECT (MANY)
+ = V-SGIVE PRE-SGIVE>
+<SYNONYM GIVE HAND DONATE OFFER>
+
+<SYNTAX GOODBYE = V-GOODBYE>
+<SYNTAX GOODBYE OBJECT = V-GOODBYE>
+
+<SYNTAX HELLO = V-HELLO ;*>
+<SYNTAX HELLO OBJECT = V-HELLO>
+<SYNONYM HELLO HI>
+
+<SYNTAX HIDE = V-HIDE>
+<SYNTAX HIDE BEHIND OBJECT = V-HIDE-BEHIND>
+<SYNTAX HIDE ON OBJECT = V-THROUGH>
+
+<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
+
+<SYNTAX JUMP = V-LEAP>
+<SYNTAX JUMP OVER OBJECT = V-LEAP>
+<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
+<SYNTAX JUMP IN OBJECT = V-LEAP>
+<SYNONYM JUMP LEAP>
+
+<SYNTAX KICK OBJECT = V-KICK>
+<SYNONYM KICK BITE TAUNT>
+
+<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KILL>
+<SYNTAX KILL
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
+ = V-KILL>
+<SYNONYM KILL DISPATCH STRANGLE>
+
+<SYNTAX KISS OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KISS>
+
+<SYNTAX KNOCK ON OBJECT = V-KNOCK>
+<SYNTAX KNOCK AT OBJECT = V-KNOCK ;*>
+<SYNTAX KNOCK DOWN OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ATTACK>
+<SYNONYM KNOCK RAP>
+
+<SYNTAX LEAN OBJECT AGAINST OBJECT = V-LEAN>
+<SYNTAX LEAN OBJECT ON OBJECT = V-LEAN>
+<SYNTAX LEAN OBJECT UP OBJECT = V-LEAN>
+<SYNTAX LEAN = V-STAND>
+<SYNTAX LEAN UP OBJECT (FIND RMUNGBIT) = V-STAND>
+<SYNONYM LEAN STAND PROP>
+
+<SYNTAX LEAVE = V-LEAVE>
+<SYNTAX LEAVE OBJECT = V-DROP>
+
+<SYNTAX LIGHT
+ OBJECT (FIND LIGHTBIT)
+ (HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
+ = V-LAMP-ON ;*>
+<SYNTAX LIGHT
+ OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND FLAMEBIT) (HELD CARRIED TAKE HAVE)
+ = V-BURN PRE-BURN>
+
+<SYNTAX LISTEN TO OBJECT = V-LISTEN>
+<SYNTAX LISTEN AT OBJECT = V-LISTEN>
+
+<SYNTAX LOCK
+ OBJECT (ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
+ = V-LOCK>
+
+<SYNTAX LOOK = V-LOOK>
+<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
+<SYNTAX LOOK UP OBJECT (FIND RMUNGBIT) = V-LOOK-UP>
+<SYNTAX LOOK DOWN OBJECT (FIND RMUNGBIT) = V-LOOK-DOWN>
+<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY)
+ = V-EXAMINE PRE-EXAMINE>
+<SYNTAX LOOK OVER OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-EXAMINE PRE-EXAMINE>
+<SYNTAX LOOK WITH OBJECT = V-LOOK-INSIDE>
+<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE>
+<SYNTAX LOOK OUT OBJECT = V-LOOK-INSIDE>
+<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
+<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
+<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-INSIDE>
+<SYNTAX LOOK ON OBJECT (ON-GROUND IN-ROOM) = V-LOOK-ON>
+<SYNTAX LOOK AT OBJECT (HELD CARRIED MANY) WITH OBJECT = V-READ PRE-READ>
+<SYNTAX LOOK FOR OBJECT = V-FIND>
+<SYNTAX LOOK NEAR OBJECT = V-SEARCH-AROUND>
+<SYNONYM LOOK L STARE GAZE>
+
+<SYNTAX WATCH OBJECT = V-EXAMINE>
+
+<SYNTAX SEARCH OBJECT = V-SEARCH PRE-SEARCH>
+<SYNTAX SEARCH IN OBJECT = V-SEARCH PRE-SEARCH>
+<SYNTAX SEARCH FOR OBJECT = V-FIND>
+<SYNTAX SEARCH OBJECT AROUND OBJECT = V-SEARCH-GROUND-AROUND>
+<SYNTAX SEARCH OBJECT UNDER OBJECT = V-SEARCH-GROUND-UNDER>
+<SYNTAX SEARCH AROUND OBJECT = V-SEARCH-AROUND>
+<SYNTAX SEARCH NEAR OBJECT = V-SEARCH-AROUND>
+<SYNTAX SEARCH OBJECT NEAR OBJECT = V-SEARCH-GROUND-AROUND>
+<SYNTAX SEARCH OBJECT FOR OBJECT = V-SEARCH-OBJECT-FOR>
+<SYNTAX SEARCH UP OBJECT = V-SEARCH PRE-SEARCH>
+<SYNONYM SEARCH DIG>
+
+<SYNTAX LOWER OBJECT = V-LOWER>
+
+<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
+<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
+<SYNONYM MOVE>
+
+<SYNTAX PLAY OBJECT = V-PLAY>
+
+<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE ; *>
+<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
+<SYNONYM PULL TUG>
+
+<SYNTAX MUMBLE = V-MUMBLE>
+<SYNONYM MUMBLE SIGH>
+
+<SYNTAX DESTROY
+ OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
+ WITH
+ OBJECT (HELD CARRIED TAKE)
+ = V-MUNG>
+<SYNTAX DESTROY
+ DOWN
+ OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
+ WITH
+ OBJECT (HELD CARRIED TAKE)
+ = V-MUNG>
+<SYNONYM DESTROY DAMAGE BREAK SMASH>
+
+<SYNTAX OPEN
+ OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-OPEN ;*>
+<SYNTAX OPEN
+ UP
+ OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-OPEN ;*>
+<SYNTAX OPEN
+ OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
+ = V-OPEN>
+
+<SYNTAX PEEK IN OBJECT = V-LOOK-INSIDE>
+
+<SYNTAX PICK OBJECT = V-PICK>
+<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
+
+<SYNTAX PICK UP
+ OBJECT (FIND TAKEBIT)
+ (ON-GROUND MANY)
+ = V-TAKE PRE-TAKE>
+
+<SYNTAX POKE
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
+ = V-MUNG>
+<SYNONYM POKE JAB BLIND>
+
+<SYNTAX POUR OBJECT (HELD CARRIED) = V-DROP ;*>
+<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-DROP>
+<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR-ON PRE-POUR-ON>
+<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-DROP>
+<SYNONYM POUR SPILL>
+
+<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
+<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
+<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
+<SYNONYM PUSH PRESS>
+
+<SYNTAX PUT OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT ;*>
+<SYNTAX PUT OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
+<SYNTAX PUT DOWN OBJECT (HELD MANY HAVE) = V-DROP>
+<SYNTAX PUT OBJECT (CARRIED HELD HAVE) UNDER OBJECT = V-PUT-UNDER>
+<SYNTAX PUT OBJECT (CARRIED HELD HAVE) AGAINST OBJECT = V-LEAN>
+<SYNONYM PUT STUFF INSERT PLACE>
+
+<SYNTAX RAISE OBJECT = V-RAISE ;*>
+<SYNTAX RAISE UP OBJECT = V-RAISE>
+<SYNTAX RAISE OBJECT OFF OBJECT = V-TAKE>
+<SYNONYM RAISE LIFT>
+
+<SYNTAX RAPE OBJECT (FIND PERSON) = V-RAPE>
+<SYNONYM RAPE MOLEST>
+
+<SYNTAX READ
+ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
+ = V-READ PRE-READ ; *>
+<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
+ OBJECT = V-READ PRE-READ>
+<SYNTAX READ
+ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
+ WITH
+ OBJECT
+ = V-READ PRE-READ>
+<SYNONYM READ SKIM>
+
+<SYNTAX RING OBJECT (TAKE) = V-RING ;*>
+<SYNTAX RING OBJECT (TAKE) WITH OBJECT = V-RING>
+<SYNONYM RING PEAL>
+
+<SYNTAX RUB OBJECT = V-RUB>
+<SYNTAX RUB OBJECT WITH OBJECT (TAKE HAVE) = V-RUB>
+<SYNTAX RUB OBJECT (TAKE HAVE) OVER OBJECT = V-RUB-OVER PRE-RUB-OVER>
+<SYNTAX RUB OBJECT (TAKE HAVE) ON OBJECT = V-RUB-OVER PRE-RUB-OVER>
+<SYNONYM RUB TOUCH FEEL SHADE>
+
+<SYNTAX SCRIPT = V-SCRIPT>
+<SYNTAX UNSCRIPT = V-UNSCRIPT>
+
+<SYNTAX SEND FOR OBJECT = V-SEND-FOR>
+
+<SYNTAX SHAKE OBJECT = V-SHAKE>
+
+<SYNTAX SHOW OBJECT TO OBJECT (FIND PERSON) = V-SSHOW PRE-SSHOW>
+<SYNTAX SHOW OBJECT (FIND PERSON) OBJECT = V-SHOW>
+
+<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
+
+<SYNTAX SKIP = V-SKIP>
+<SYNONYM SKIP HOP>
+
+<SYNTAX SMELL OBJECT = V-SMELL>
+<SYNONYM SMELL SNIFF>
+
+<SYNTAX SQUEEZE OBJECT = V-SQUEEZE>
+<SYNTAX SQUEEZE OBJECT ON OBJECT = V-PUT PRE-PUT>
+
+<SYNTAX STRIKE
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
+ = V-ATTACK>
+<SYNTAX STRIKE
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ = V-ATTACK ;*>
+<SYNTAX STRIKE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-LAMP-ON>
+
+<SYNTAX SWIM = V-SWIM>
+<SYNTAX SWIM IN OBJECT = V-SWIM>
+<SYNONYM SWIM BATHE WADE>
+
+<SYNTAX SWING
+ OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
+ = V-SWING>
+<SYNTAX SWING
+ OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
+ AT
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ = V-SWING>
+<SYNONYM SWING THRUST>
+
+<SYNTAX TAKE
+ OBJECT (FIND TAKEBIT)
+ (ON-GROUND MANY)
+ = V-TAKE PRE-TAKE ;*>
+;<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
+<SYNTAX TAKE OUT OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
+<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
+<SYNTAX TAKE
+ OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
+ OUT
+ OBJECT
+ = V-TAKE PRE-TAKE>
+<SYNTAX TAKE
+ OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
+ OFF
+ OBJECT
+ = V-TAKE PRE-TAKE>
+<SYNTAX TAKE
+ OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
+ FROM
+ OBJECT
+ = V-TAKE PRE-TAKE>
+<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED TAKE HAVE)
+ UP OBJECT = V-HOLD-UP>
+<SYNTAX TAKE UP OBJECT (FIND RMUNGBIT) = V-STAND>
+<SYNTAX TAKE OBJECT TO OBJECT = V-SHOW>
+<SYNONYM TAKE GET HOLD CARRY REMOVE LEAD>
+
+<SYNTAX TASTE OBJECT = V-TASTE>
+
+<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
+<SYNTAX TELL OBJECT (FIND PERSON) ABOUT OBJECT = V-TELL-ME>
+
+<SYNTAX SAY TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
+<SYNTAX SAY = V-SAY>
+<SYNONYM SAY TALK>
+
+<SYNTAX THROW
+ OBJECT (HELD CARRIED HAVE)
+ AT
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ = V-THROW-AT>
+<SYNTAX THROW
+ OBJECT (HELD CARRIED HAVE)
+ WITH
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ = V-THROW-THROUGH>
+
+<SYNTAX THROW OBJECT (HELD CARRIED HAVE) IN OBJECT = V-PUT PRE-PUT>
+<SYNTAX THROW OBJECT (HELD CARRIED HAVE) ON OBJECT = V-PUT PRE-PUT>
+<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-PUT PRE-PUT>
+<SYNONYM THROW HURL CHUCK TOSS>
+
+<SYNTAX TIE OBJECT TO OBJECT = V-TIE PRE-TIE>
+<SYNTAX TIE UP
+ OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
+ WITH
+ OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
+ = V-TIE-UP>
+<SYNONYM TIE FASTEN SECURE ATTACH>
+
+<SYNTAX TURN OBJECT (FIND TURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-TURN PRE-TURN>
+<SYNTAX TURN IN OBJECT (FIND TURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-TURN PRE-TURN>
+<SYNTAX TURN TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-TURN PRE-TURN>
+<SYNTAX TURN ON
+ OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-LAMP-ON>
+<SYNTAX TURN OFF
+ OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
+ = V-LAMP-OFF>
+<SYNTAX TURN UP OBJECT = V-TURN-UP>
+<SYNTAX TURN DOWN OBJECT = V-TURN-DOWN>
+
+<SYNONYM TURN FLIP SHUT>
+
+<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) = V-UNLOCK>
+
+<SYNTAX UNTIE
+ OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
+ = V-UNTIE PRE-UNTIE ;*>
+<SYNTAX UNTIE
+ OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
+ FROM
+ OBJECT
+ = V-UNTIE PRE-UNTIE>
+<SYNONYM UNTIE FREE UNFASTEN UNATTACH UNHOOK>
+
+<SYNTAX USE OBJECT = V-USE>
+
+<SYNTAX WAIT = V-WAIT>
+<SYNTAX WAIT OBJECT = V-WAIT-FOR>
+<SYNTAX WAIT UNTIL OBJECT = V-WAIT-UNTIL>
+<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
+
+<SYNTAX WAKE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ALARM ;*>
+<SYNTAX WAKE UP OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ALARM>
+<SYNONYM WAKE AWAKE SURPRISE STARTLE>
+
+<SYNTAX WALK OBJECT = V-WALK>
+<SYNTAX WALK TO OBJECT = V-THROUGH>
+<SYNTAX WALK IN OBJECT = V-THROUGH>
+<SYNTAX WALK WITH OBJECT = V-THROUGH>
+<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
+<SYNTAX WALK UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
+<SYNTAX WALK DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
+<SYNTAX WALK BEHIND OBJECT = V-HIDE-BEHIND>
+<SYNTAX WALK OBJECT OVER OBJECT = V-RUN-OVER>
+<SYNONYM WALK GO RUN PROCEED>
+
+<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
+<SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE>
+<SYNONYM WAVE BRANDISH>
+
+<SYNTAX WRITE WITH OBJECT = V-WRITE>
+<SYNTAX WRITE ON OBJECT WITH OBJECT = V-WRITE>
+
+;"Simple questions"
+
+<SYNTAX WHAT OBJECT = V-WHAT>
+<SYNTAX WHAT ABOUT OBJECT = V-WHAT>
+<SYNTAX WHAT IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY) = V-LOOK-INSIDE>
+<SYNTAX WHAT ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY) = V-LOOK-INSIDE>
+<SYNONYM WHAT WHATS WHO>
+
+<SYNTAX KNOW ABOUT OBJECT = V-WHAT>
+<SYNTAX KNOW WHERE OBJECT = V-FIND PRE-FIND>
+
+;"Yes,no"
+
+<SYNTAX YES = V-YN>
+<SYNONYM YES NO MAYBE>
+
+<SYNTAX THANKS = V-THANKS>
+<SYNTAX THANKS OBJECT = V-THANKS>
+<SYNONYM THANKS THANK>
+
+<SYNTAX $VERIFY = V-$VERIFY>
+
+<SYNTAX WHEN = V-THANKS>
+<SYNONYM WHEN DID WHY HOW> \ No newline at end of file