!------------------------------------------------------------------------------ ! ! ! D E A D L I N E ! ! ! Inform Port ! ! ! This material contains elements based on the game Deadline. ! It is used with permission as instructive material. ! Original Deadline material is (c) 1982, 1999 Activision, Inc. ! Deadline and Activision are registered trademarks of Activision, Inc. ! All rights reserved. ! ! Inform Port written by Volker Lanz. Please do not distribute modified ! versions of these files. ! You can contact me via e-mail: volker.lanz@gmx.net ! ! FIRSTFLOOR.INF ! ============== ! The first floor of the house ! ! !------------------------------------------------------------------------------ !------------------------------------------------------------------------------ Firstfloor Stairs "Stairs" with description "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.", npc_subway red_line purple_line, d_to Bottom_Of_Stairs, u_to Top_Of_Stairs, has corridor; !------------------------------------------------------------------------------ Firstfloor Top_Of_Stairs "Top of Stairs" with description "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.", npc_subway purple_line beige_line, d_to Stairs, w_to Hallway_1, n_to North_Upstairs_Hall, s_to South_Upstairs_Hall, has corridor; !------------------------------------------------------------------------------ Firstfloor South_Upstairs_Hall "South Upstairs Hall" with description [; "The hallway turns a corner here and continues east. To the north is the head of the stairs. A door to the south is ", (DoorStatus) Dunbar_Bathroom_Door, "."; ], npc_subway beige_line, n_to Top_Of_Stairs, e_to End_Of_South_Hall, s_to Dunbar_Bathroom_Door, has corridor; !------------------------------------------------------------------------------ Door_Class -> Dunbar_Bathroom_Door "door" with name "bathroom" "door", door_to [; if (self in South_Upstairs_Hall) return Dunbar_Bathroom; return South_Upstairs_Hall; ], door_dir [; if (self in South_Upstairs_Hall) return s_to; return n_to; ], found_in South_Upstairs_Hall Dunbar_Bathroom, has open; !------------------------------------------------------------------------------ Firstfloor Dunbar_Bathroom "Dunbar's Bathroom" with name "ms" "dunbar^s" "dunbar" "bathroom", description [; print "This bathroom contains the usual sink, toilet, and bath. A medicine cabinet, "; if (Dunbar_Medicine_Cabinet has open) print "lying partially open"; else print "closed"; ", is above the sink. A door to the north is ", (DoorStatus) Dunbar_Bathroom_Door, "."; ], npc_subway beige_line, n_to Dunbar_Bathroom_Door, has proper; !------------------------------------------------------------------------------ Object -> Shower "shower" with name "shower", before [; Take: "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."; ], found_in Dunbar_Bathroom George_Bathroom Master_Bathroom Rourke_Bathroom, has static concealed; !------------------------------------------------------------------------------ Object -> Toilet "toilet" with name "loo" "toilet", description "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...", before [; Flush: "Whhoooossshhhhh!"; Search, LookUnder: << EXAMINE self >>; ], found_in Dunbar_Bathroom George_Bathroom Master_Bathroom Rourke_Bathroom, has scenery concealed; !------------------------------------------------------------------------------ Object -> Sink "sink" with name "sink", before [; SwitchOn: "You turn the handle and lo! Water starts to run. Impressed, you turn the handle again, and the water stops running! Bravo!"; SwitchOff: "The water isn't running."; ], found_in Dunbar_Bathroom George_Bathroom Master_Bathroom Rourke_Bathroom, has scenery concealed; !------------------------------------------------------------------------------ Object -> Dunbar_Medicine_Cabinet "medicine cabinet" with name "medicine" "cabinet", capacity 15, space 10, before [; Open: give self ~scenery; Close: give self scenery; ], has container openable scenery static; !------------------------------------------------------------------------------ Object -> -> LoBlo "bottle of LoBlo" with name "bottle" "of" "loblo", capacity 1, space 1, weight 1, size 2, description "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.^", before [; Read: << EXAMINE Self >>; Receive: if (noun ~= LoBlo_Tablets) print_ret (string) ContainMedicineOnly; ], has container openable topic; !------------------------------------------------------------------------------ Object -> -> -> LoBlo_Tablets "couple of LoBlo tablets" with name "couple" "of" "loblo" "tablets", size 1, weight 1, description "They are small, yellow pills.", before [; Taste: "The pills are virtually tasteless."; Smell: "The pills are odorless."; Eat: "Nervous? Blood Pressure high? See a doctor."; ]; !------------------------------------------------------------------------------ Object -> -> Cough_Medicine "bottle of cough medicine" with name "bottle" "of" "cough" "medicine", capacity 1, space 1, weight 1, size 2, description "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.", before [; Read: << EXAMINE Self >>; Receive: print_ret (string) ContainMedicineOnly; ], has container openable; !------------------------------------------------------------------------------ Object -> -> -> Cough_Syrup "quantity of cough syrup" with name "quantity" "of" "cough" "syrup", before [; Take: << DRINK self >>; Drink: remove self; "You drink the remaining cough syrup. Yuk! That was awful!"; Taste: "Yuk! It tastes like cough medicine!"; ]; !------------------------------------------------------------------------------ Object -> -> Aspirin "bottle of aspirin" with name "bottle" "of" "aspirin", capacity 1, space 1, weight 1, size 2, description "^^Generic ASPIRIN, usp^ 30mg / 5 gr", before [; Read: << EXAMINE Self >>; Receive: if (noun ~= Aspirin_Tablets) print_ret (string) ContainMedicineOnly; ], has container openable; !------------------------------------------------------------------------------ Object -> -> -> Aspirin_Tablets "handful of aspirin tablets" with weight 1, size 1, name "handful" "of" "aspirin" "tablets"; !------------------------------------------------------------------------------ Firstfloor End_Of_South_Hall "End of South Hall" with description "The hall ends here. To the south is a walk-in closet.", w_to South_Upstairs_Hall, s_to Closet, has corridor; !------------------------------------------------------------------------------ Firstfloor Closet "Closet" with description "This large closet has many shelves containing various cleaning equipment and supplies.", name "closet", n_to End_Of_South_Hall; !------------------------------------------------------------------------------ Object -> Closet_Shelves "shelves" with name "shelf" "shelves", capacity 12, space 10, has supporter scenery pluralname; !------------------------------------------------------------------------------ Firstfloor North_Upstairs_Hall "North Upstairs Hall" with description "This is the end of a short north-south hallway. To the east is a small room.", s_to Top_Of_Stairs, e_to Guest_Room, has corridor; !------------------------------------------------------------------------------ Firstfloor Guest_Room "Guest Room" with description "This room contains the bare essentials for a guest room: bed, tables, and a chair. A window looks out toward the east.", name "guest" "room", w_to North_Upstairs_Hall; !------------------------------------------------------------------------------ Bed_Class -> Guest_Bed "bed"; !------------------------------------------------------------------------------ Window_Class -> Guest_Room_Window "window" with name "window", before [; LookThrough: print "From here you have a good view of the east lawn, a shed, and the lake in the background.^"; NPC_LookThroughWindow(self); rtrue; ], door_dir e_to, door_to West_Side_Of_House, looks_to East_Side_Of_House East_Lawn Orchard_Path; !------------------------------------------------------------------------------ Firstfloor Hallway_1 "Hallway" with description [; print "You are just west of the staircase. There are doors on both sides (north and south) of the hallway, which continues west. "; if (Master_Bedroom_Door has open) { if (Dunbar_Bedroom_Door has open) "Both doors are open."; "The door to the north is open."; } if (Dunbar_Bedroom_Door has open) "The door to the south is open."; "Both doors are closed."; ], after [; Go: if(noun == s_obj && Mrs_Robner.go_phone == 2 && Mrs_Robner in Master_Bedroom) { print "Mrs. Robner shuts the bedroom door.^^"; give Master_Bedroom_Door ~open; Mrs_Robner.go_phone = 3; StartTimer(StevenCallEnds, 10); StopDaemon(LeaveMasterBedroom); rfalse; } ], before [; Go: ! If player surprises Baxter on his way to kill Dunbar, he is killed if (noun == n_obj && Master_Bedroom_Door has open && Mr_Baxter in Master_Bedroom && KillDunbar.stage > 0 && KillDunbar.stage < 4) { print "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.^"; EndOfGame(0); } ], npc_subway purple_line black_line, e_to Top_Of_Stairs, w_to Hallway_2, n_to Master_Bedroom_Door, s_to Dunbar_Bedroom_Door, has corridor; !------------------------------------------------------------------------------ Door_Class -> Master_Bedroom_Door "bedroom door" with whichnpc, parse_name [w; switch(NextWord()) { 'master': w = NextWord(); if (w == 'door') return 2; if (w == 'bedroom' && NextWord() == 'door') return 3; return 0; 'bedroom': if (NextWord() == 'door') return 2; return 0; 'door': return 1; default: return 0; } ], door_to [; if (self in Master_Bedroom) return Hallway_1; return Master_Bedroom; ], door_dir [; if (self in Master_Bedroom) return s_to; return n_to; ], before [; MyListen: if(self has open) rfalse; if(Mrs_Robner.go_phone == 3) "You can hear the muffled voice of Mrs. Robner through the door."; Knock: if(Mrs_Robner.go_phone == 3) "Mrs. Robner calls out: ~Wait just one minute!~"; "There is no answer at the door."; ], after [; Open: if (Mrs_Robner.go_phone == 3) ! She's just talking { Mrs_Robner.go_phone = 0; print "You open ", (the) self, ".^"; print "Mrs. Robner speaks quietly into the phone and hangs up.^"; StopTimer(StevenCallEnds); NPC_StopSchedule(Mrs_Robner); NPC_Path(Mrs_Robner, Living_Room); rtrue; } ], found_in Master_Bedroom Hallway_1; !------------------------------------------------------------------------------ Door_Class -> Dunbar_Bedroom_Door "south door" with name "south" "door", door_to [; if (self in Dunbar_Bedroom) return Hallway_1; return Dunbar_Bedroom; ], door_dir [; if (self in Dunbar_Bedroom) return n_to; return s_to; ], found_in Dunbar_Bedroom Hallway_1; !------------------------------------------------------------------------------ Firstfloor Dunbar_Bedroom "Dunbar's Bedroom" with name "ms" "dunbar" "dunbar^s" "bedroom", description [; "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 ", (DoorStatus) Dunbar_Bedroom_Door, "."; ], after [; Go: ! If the body of Ms Dunbar is here, we give it general to indicate that player has seen it if (Dunbar_Body in self) give Dunbar_Body general; ], npc_subway black_line, n_to Dunbar_Bedroom_Door, has proper; !------------------------------------------------------------------------------ Bed_Class -> Dunbar_Bed "bed"; !------------------------------------------------------------------------------ Firstfloor Master_Bedroom "Master Bedroom" with name "master" "bedroom", description [; print "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 ", (DoorStatus) Bedroom_Balcony_Door, ". An open doorway leads east to the bathroom. A large mirror with a gilt frame hangs on the west wall.^"; if (self.w_to ~= 0) "Part of the west wall has been swung away, revealing a hidden closet."; ], before [; Go: if (noun == n_obj && Bedroom_Balcony_Door has open && Mr_Baxter in Bedroom_Balcony && KillDunbar.stage > 0 && KillDunbar.stage < 4) { print "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.^"; EndOfGame(0); } ], npc_subway black_line, s_to Master_Bedroom_Door, n_to Bedroom_Balcony_Door, e_to Master_Bathroom, w_to 0; !------------------------------------------------------------------------------ Bed_Class -> Master_Bedroom_Bed "four-poster bed" with name "four-poster" "bed", capacity 40, space 24; !------------------------------------------------------------------------------ Object -> Dresser "dresser" with name "dresser" "dressers", description "The dresser is a beautiful piece of cabinetry.", before [; Open: "You open all of the drawers, but find only a variety of stockings, undergarments, and handkerchiefs."; ], has scenery; !------------------------------------------------------------------------------ Object -> Master_Bedroom_End_Tables "end tables" with name "end" "tables", capacity 12, space 6, has supporter scenery pluralname; !------------------------------------------------------------------------------ Object -> Master_Bedroom_Chair "small chair" with name "small" "chair", capacity 12, space 6, has supporter scenery enterable; !------------------------------------------------------------------------------ Object -> Master_Bedroom_Lounge "lounge" with name "lounge", capacity 20, space 12, has supporter scenery enterable; !------------------------------------------------------------------------------ Mirror_Class -> Master_Bedroom_Mirror "mirror" with name "large" "mirror" "frame"; !------------------------------------------------------------------------------ Door_Class -> Bedroom_Balcony_Door "balcony door" with parse_name [i word; while (1) { word=NextWord(); if (word=='door' or 'window') i++; else if (word=='balcony' or 'glass') { if (location == Master_Bedroom or Bedroom_Balcony) { if (NextWord()=='door' or 'window') i=i+2; else return 0; } else i++; } else return i; } ], door_to [; if (self in Master_Bedroom) return Bedroom_Balcony; return Master_Bedroom; ], door_dir [; if (self in Master_Bedroom) return n_to; return s_to; ], before [; LookThrough: if (self in Master_Bedroom) { print "You can see the balcony, but not much beyond. "; if (Mr_Baxter in Bedroom_Balcony) print "For a moment you think you caught a glimpse of someone hiding out there."; new_line; rtrue; } "You can see the bedroom from here."; Knock: "It appears that nobody's home."; Close: if (self in Bedroom_Balcony && Mrs_Robner in Master_Bedroom && DaemonRunning(LeaveMasterBedroom)) "Mrs. Robner stop you from closing ", (the) self, "."; rfalse; ], found_in Master_Bedroom Bedroom_Balcony; !------------------------------------------------------------------------------ Firstfloor Bedroom_Balcony "Bedroom Balcony" with parse_name [w; w = NextWord(); if (w == 'balcony') return 1; if (w == 'bedroom' && NextWord() == 'balcony') return 2; return 0; ], description [; print "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 ", (DoorStatus) Bedroom_Balcony_Door, ".^"; if (self.d_to ~= 0) "The top of a ladder is resting on the metal railing."; ], before [; Go: if (noun == d_obj && self.d_to == 0) "The jump is inadvisable."; ], npc_subway black_line, s_to Bedroom_Balcony_Door, d_to 0; !------------------------------------------------------------------------------ Object -> Bedroom_Balcony_Examine "balcony" with name "balcony", description "The balcony is wooden, excepting the metal railing surrounding it. It is in good repair and is quite clean.", has scenery; !------------------------------------------------------------------------------ Object -> Treetops "tree tops" with name "treetops" "treetop" "tree" "top" "tops", description "You can't reach the tree tops from here.", before [; Take: << EXAMINE Treetops >>; ], has scenery pluralname; !------------------------------------------------------------------------------ Object -> Bedroom_Railing "railing" with add_to_scope [; if (Bedroom_Balcony.d_to) PlaceInScope(Ladder); ], description "This sturdy railing protects people on the balcony from being impaled upon the exotic plants below. The railing itself is uniformly painted.", name "metal" "railing", has scenery; !------------------------------------------------------------------------------ Firstfloor Master_Bathroom "Master Bathroom" with name "master" "bathroom", description "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.", w_to Master_Bedroom; !------------------------------------------------------------------------------ Object -> Bathtub "bathtub" with name "tub" "bathtub", description "The bathtub is empty.", has scenery; !------------------------------------------------------------------------------ Object -> Hanging_Plant "hanging plants" with name "hanging" "plant" "plants", has scenery pluralname; !------------------------------------------------------------------------------ Mirror_Class -> Master_Bathroom_Mirror "mirror" with name "mirror"; !------------------------------------------------------------------------------ Object -> Counter "counter" with name "counter", capacity 12, space 10, description [; if(children(self) == 0) "There is nothing on ", (the) self, "."; Locale(self); rtrue; ], has supporter scenery; !------------------------------------------------------------------------------ Object -> -> Sneezo "bottle of Sneezo brand decongestant" with name "bottle" "of" "sneezo" "brand" "decongestant", capacity 1, space 1, weight 1, size 2, initial "On the counter is a bottle of Sneezo tablets.", description "Lakeville Pharmacy #223224^^ Mrs. M. Robner^ Take 1 tablet every 3 hours as needed^^ Sniffle Labs^ Sneezo Tablets", before [; Read: << EXAMINE Self >>; Receive: if (noun ~= Sneezo_Tablets) print_ret (string) ContainMedicineOnly; ], has container openable topic; !------------------------------------------------------------------------------ Object -> -> -> Sneezo_Tablets "handful of Sneezo tablets" with name "sneezo" "tablets", size 1, weight 1, description "They are small, white pills.", before [; Taste: "The pills are virtually tasteless."; Smell: "The pills are odorless."; Eat: "You must realize that you aren't sick."; ]; !------------------------------------------------------------------------------ Object -> -> Allergone "bottle of Allergone" with name "bottle" "of" "allergone", capacity 1, space 1, weight 1, size 2, initial "Beside a toothbrush is a bottle of Allergone.", description "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!", before [; Read: << EXAMINE Self >>; Receive: if (noun ~= Allergone_Tablets) print_ret (string) ContainMedicineOnly; ], has container openable topic; !------------------------------------------------------------------------------ Object -> -> -> Allergone_Tablets "bunch of Allergone tablets" with name "allergone" "tablets", size 1, weight 1, description "They are tiny red pills.", before [; Taste: "The pills are bitter on the tongue."; Smell: "The pills are odorless."; Eat: "The only allergy you seem to have is to work."; ]; !------------------------------------------------------------------------------ Firstfloor Hallway_2 "Hallway" with description "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.", npc_subway purple_line, e_to Hallway_1, w_to Hallway_3, n_to Upstairs_Closet, has corridor; !------------------------------------------------------------------------------ Firstfloor Upstairs_Closet "Upstairs Closet" with description "The closet is rather shallow and has some shelves full of assorted linens, towels, and uninteresting toilet articles.", name "upstairs" "closet", s_to Hallway_2; !------------------------------------------------------------------------------ Object -> Upstairs_Closet_Shelf "shelves" with name "shelf" "shelves", capacity 12, space 10, has supporter scenery pluralname; !------------------------------------------------------------------------------ Object -> -> Linens "linens" with name "linen" "linens", description "You go through the linens and find nothing of interest.", before [; Take: "You have no need for them."; ], has scenery pluralname; !------------------------------------------------------------------------------ Object -> -> Towels "towels" with name "towel" "towels", description "You go through the towels and find nothing of interest.", before [; Take: "You have no need for them."; ], has scenery pluralname; !------------------------------------------------------------------------------ Firstfloor Hallway_3 "Hallway" with description [; "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 ", (DoorStatus) George_Bedroom_Door, "."; ], after [; Go: if(noun == n_obj && George in George_Bedroom && GeorgeNervous.active == 1) { LookSub(1); give George_Bedroom_Door ~open; GeorgeNervous.waitleave = 0; GeorgeNervous.delay = 3; "You hear George's bedroom door close."; } ], npc_subway purple_line yellow_line, w_to End_Of_Hallway, e_to Hallway_2, s_to George_Bedroom_Door, has corridor; !------------------------------------------------------------------------------ Door_Class -> George_Bedroom_Door "bedroom door" with parse_name [w; switch(NextWord()) { 'george^s', 'george': w = NextWord(); if (w == 'door') return 2; if (w == 'bedroom' && NextWord() == 'door') return 3; return 0; 'bedroom': if (NextWord() == 'door') return 2; return 0; 'door': return 1; default: return 0; } ], door_to [; if (self in Hallway_3) return George_Bedroom; return Hallway_3; ], door_dir [; if (self in George_Bedroom) return n_to; return s_to; ], before [; MyListen: if (self has open) rfalse; if (location == Hallway_3 && (Records.active ~= 0 || Tapes.active ~= 0)) { print "You hear the deafening sound of a "; Describe_Music(); " through ", (the) self, "."; } ], after [; Open: if(location == Hallway_3 && GeorgeNervous.active == 1 && George in George_Bedroom) "As the door opens, you hear George say ~Close that door! I'm working!~"; ], found_in George_Bedroom Hallway_3; !------------------------------------------------------------------------------ Firstfloor George_Bedroom "George's Bedroom" with name "george^s" "george" "bedroom", description [; print "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 ", (DoorStatus) George_Bedroom_Door, ". Another door, to the east, is ", (DoorStatus) George_Bathroom_Door, ".^"; if(Tapes.active ~= 0 || Records.active ~=0) { print "Playing on the stereo is a "; Describe_Music(); print ".^"; } ], npc_subway purple_line, n_to George_Bedroom_Door, e_to George_Bathroom_Door, has proper; !------------------------------------------------------------------------------ Object -> Stereo "stereo" with name "stereo" "volume", before [; MyListen: if(Tapes.active == 0 && Records.active == 0) "Nothing's playing."; else "You can hardly avoid it."; TurnOn: "The stereo is now on."; TurnOff: if(ScopeCeiling(George) == George_Bedroom && (Tapes.active ~= 0 || Records.active ~= 0)) { print "George turns toward you in disgust as you turn off the "; Describe_Music(); print ".^"; } else print "The stereo is now off.^"; StopTimer(MusicEnds); Tapes.active = 0; Records.active = 0; rtrue; TurnUp: if (Records.active == 0 && Tapes.active == 0) "It's not on!"; print "The "; Describe_Music(); " is already quite loud. Any louder would probably disturb the rest of the house."; TurnDown: if(George in George_Bedroom && (Tapes.active ~= 0 || Records.active ~= 0)) { print "George stops you from turning down the volume. He is practically addicted to the "; Describe_Music(); "."; } else if (Records.active == 0 && Tapes.active == 0) "It's not on!"; "You can't."; ], has scenery; !------------------------------------------------------------------------------ Object -> Tapes "tape collection" with active 0, name "tapes" "tape" "collection", description "George's collection of tapes is large and quite odd in its variety of music.", before [; Play: StopTimer(MusicEnds); StartTimer(MusicEnds, 15+random(5)); print "You pick one at random and start it up. What you year is a "; self.active = random(6); Records.active = 0; Describe_Music(); "."; ], has scenery; !------------------------------------------------------------------------------ Object -> Records "record collection" with active 0, name "records" "record" "collection", description "This is a large collection, with many different types of music represented. George is evidently not very particular when it comes to music.", before [; Play: StopTimer(MusicEnds); StartTimer(MusicEnds, 15+random(5)); print "You pick a record at random and start it up. It's a "; self.active = random(7); Tapes.active = 0; Describe_Music(); "."; ], has scenery; !------------------------------------------------------------------------------ Bed_Class -> George_Bed "bed"; !------------------------------------------------------------------------------ Door_Class -> George_Bathroom_Door "bathroom door" with name "bathroom" "door", door_to [; if (self in George_Bathroom) return George_Bedroom; return George_Bathroom; ], door_dir [; if (self in George_Bedroom) return e_to; return w_to; ], found_in George_Bedroom George_Bathroom, has open; !------------------------------------------------------------------------------ Object -> George_Cabinet "liquor cabinet" with name "liquor" "cabinet", capacity 15, space 10, before [; Open: give self ~scenery; Close: give self scenery; ], has static scenery container openable; !------------------------------------------------------------------------------ Object -> -> Scotch "bottle of Scotch" with name "bottle" "of" "scotch", weight 3, size 4, before [; Open: print_ret (The) self, " is now open."; Close: print_ret (The) self, " is now closed."; Drink: if (self hasnt general) { give Scotch general; give Bourbon general; "You take a small swig of the golden fluid, which burns as it goes down."; } "It's one thing to take a bracer on occasion, but you must resist the temptation to indulge too often."; ]; !------------------------------------------------------------------------------ Object -> -> Bourbon "bottle of Bourbon" with name "bottle" "of" "bourbon", weight 3, size 4, before [; Open: print_ret (The) self, " is now open."; Close: print_ret (The) self, " is now closed."; Drink: << DRINK Scotch >>; ]; !------------------------------------------------------------------------------ Firstfloor George_Bathroom "George's Bathroom" with name "george^s" "george" "bathroom", description [; "This is George's bathroom, with all the appropriate fixtures. Shaving gear sits near the sink. The door, to the west, is ", (DoorStatus) George_Bathroom_Door, "."; ], w_to George_Bathroom_Door, has proper; !------------------------------------------------------------------------------ Firstfloor End_Of_Hallway "End of Hallway" with description "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.", npc_subway yellow_line, w_to "The hall ends here.", e_to Hallway_3, n_to Library, has corridor; !------------------------------------------------------------------------------ Window_Class -> End_Of_Hallway_Window "window" with name "window", before [; LookThrough: "You can see the west lawn through the window."; ]; !------------------------------------------------------------------------------ Firstfloor Library "Library", with name "library", description [; print "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.^"; if (Library_Balcony_Door has open) print "The window to the balcony has been opened.^"; if (self.e_to == Hidden_Closet) print "The bookshelf unit on the far left has been swung open, revealing a room behind it!^"; ], before [; HideOn: if (noun == Library_Balcony_Door) << GO n_obj >>; ], after [; Go: ! Player has hidden on balcony, comes into Library before George enters the Hidden Closet if (noun == s_obj && George in self && GeorgeNewWill.stage == 1 or 2) { StopDaemon(GeorgeNewWill); GeorgeNewWill.stage = 0; move George to George_Bedroom; give George_Bedroom_Door ~open; LookSub(1); ! George, now in his room, will start to go to the East Lawn in some time and, ! from there, return to the Living Room NPC_Schedule(George, East_Lawn, 20+random(30)); "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."; } ], npc_subway yellow_line, s_to End_Of_Hallway, n_to Library_Balcony_Door, e_to Hidden_Door; !------------------------------------------------------------------------------ Door_Class -> Library_Balcony_Door "balcony door" with parse_name [i word; while (1) { word = NextWord(); if (word == 'door' or 'window') i++; else if (word == 'balcony' or 'glass') { if (location == Library or Library_Balcony) { if (NextWord() == 'door' or 'window') i=i+2; else return 0; } else i++; } else return i; } ], door_to [; if (self in Library) return Library_Balcony; return Library; ], door_dir [; if (self in Library) return n_to; return s_to; ], before [; LookThrough: if (self in Library) "You can see the balcony, but not much beyond."; "You can see into the library from here."; Knock: "It appears that nobody's home."; ], found_in Library Library_Balcony; !------------------------------------------------------------------------------ Object -> Hidden_Door "hidden door" with npc_open [npc; give self open; if (npc in Hidden_Closet && location == Hidden_Closet) npc.npc_door_passed = self; rtrue; ], door_to [; if (self in Library) return Hidden_Closet; return Library; ], door_dir [; if (self in Library) return e_to; return w_to; ], react_before [; ! If the hidden door isn't open, we need to pretend it isn't there... Go: if (location == Library && self hasnt open && noun == e_obj) return(L__M(##Go, 2)); if (location == Hidden_Closet && self hasnt open && noun == w_obj) return(L__M(##Go, 2)); ], found_in Library Hidden_Closet, has concealed door static; !------------------------------------------------------------------------------ Object -> Library_Rug "rug" with name "rug" "carpet", description [; move Library_Mud to Library; "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."; ], before [; LookUnder: "The carpeting is wall-to-wall so you can't look under it."; ], has scenery; !------------------------------------------------------------------------------ Object -> Bookshelf "set of bookshelves" with name "bookshelf" "shelf" "shelves" "bookshelves" "units", description [; print "The shelves contain many books and manuscripts covering a wide range of subjects. They are meticulously arranged."; if (Black_Button has general) { print " 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."; move Black_Button to Library; } new_line; rtrue; ], before [; Search: << Examine self >>; ], has scenery; !------------------------------------------------------------------------------ Object -> Library_Books "books in the library" with name "book" "books", before [; Read: "Reading, while educational, will not help you solve this case."; Take: "You have better things to do than taking books from the shelves."; ], has scenery pluralname; !------------------------------------------------------------------------------ Object -> Desk "desk" with name "desk", capacity 15, space 9, description [; if(children(self) == 0) "There is nothing on ", (the) self, "."; Locale(self); rtrue; ], before [; Open: "It is already open."; Close: "You cannot close that."; Search: "There's nothing of interest in the desk."; ], has supporter scenery; !------------------------------------------------------------------------------ Object -> -> Pad "pad of white note paper" with initial "Lying atop the desk is a pad of white note paper.", name "pad" "of" "white" "note" "paper" "notepad", weight 2, size 3, description [; if (pad hasnt general) "There doesn't seem to be anything written on the pad."; print "Examination of the paper"; DescribePad(); ], before [; Read: << EXAMINE Self >>; ExamCare: if (self has general) rfalse; "There are some indentations on the paper. Something may have been written on the previous sheet."; MyRub: if (second == 0) "You should try rubbing or shading the pad with something."; if (second ~= Pencil) rfalse; print "Shading the paper with the pencil"; DescribePad(); rtrue; LookAgainst: print "Looking at the pad against the light"; DescribePad(); rtrue; ]; !------------------------------------------------------------------------------ Object -> -> Calendar "calendar" with name "calendar", weight 3, size 4, date 7, initial [; self.describe(); ], describe [; "A desk calendar is here, open to July ", self.date, "."; ], description [; print "It is open to July ", self.date, ". "; switch(self.date) { 7: "The only listing here is an appointment with Baxter at 2PM at the Robner Corp. office."; 8: "There is only one notation here, in the 9AM spot: ~Call Coates: Will completed~."; default: "Nothing of interest is scheduled on this date."; } ], before [ old; Read: << EXAMINE Self >>; Turn, TurnTo: old = self.date; self.date = second; if (action == ##Turn) self.date = old + 1; if (self.date < 1) { self.date = old; "Do you suppose that would be June 30?"; } else if (self.date > 31) { print "Thirty days hath September,^April, June, and November,^All the rest have ", self.date, "???^"; self.date = old; rtrue; } << EXAMINE Self >>; ]; !------------------------------------------------------------------------------ Object -> Pencil "pencil" with initial "A pencil is lying on the floor near the desk.", weight 1, size 2, name "pencil", before [; RunOver: if (second ~= Pad) rfalse; print "Running the pencil over the paper"; DescribePad(); rtrue; ]; !------------------------------------------------------------------------------ Object -> Tray "tray" with initial "Beside the desk is a large collapsible tray.", name "tray", size 6, weight 2, capacity 10, space 5, has supporter; !------------------------------------------------------------------------------ Object -> -> Bowl "sugar bowl" with name "sugar" "bowl" "powder", weight 3, size 3, initial "Sitting on the tray is a bowl containing a white powdery substance.", before [; Smell: "There is no high from sniffing this powder."; Eat: "You eat some, but it is cloyingly sweet, so you stop."; Taste: "The powder tastes like sugar."; ]; !------------------------------------------------------------------------------ Object -> Library_Saucer "saucer" with name "saucer", weight 2, size 3, initial "Lying on the floor, overturned, is a beautiful saucer.", description "The saucer is hand-painted with a mythological scene. It has a couple of small areas of brown discoloration.", before [; Smell: "There is a faint smell of tea."; ]; !------------------------------------------------------------------------------ Object -> Library_Teacup "teacup" with name "teacup" "cup", weight 2, size 3, initial "Turned onto its side, lying on the floor, is a beautiful teacup.", description "The cup is painted with a scene from Greek mythology and has a brown discoloration at the bottom.", before [; Smell: "The cup smells faintly of tea."; ]; !------------------------------------------------------------------------------ Object -> Ebullion_Bottle "bottle of Ebullion" with name "bottle" "of" "ebullion", capacity 1, space 1, size 1, weight 1, description "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.", before [; Read: << EXAMINE Self >>; Receive: if (noun ~= Ebullion_Tablets) print_ret (string) ContainMedicineOnly; ], has container openable; !------------------------------------------------------------------------------ Object -> -> Ebullion_Tablets "couple of Ebullion tablets" with name "couple" "of" "ebullion" "tablets", size 1, weight 1, description "These are little white pills.", before [; Taste: "The pills are quite bitter."; Smell: "The pills have a faint pungent aroma."; Eat: "Are you depressed? Given your performance on this case, that isn't surprising. In any event, you shouldn't take other people's medicine!"; ]; !------------------------------------------------------------------------------ Object -> Oak_Door "oak door" with name "oak" "door", description "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.", before [; Open, Close, Knock: "You're a bit too late to do that to the oak door."; ], has scenery; !------------------------------------------------------------------------------ Object -> Basket "basket" with name "wicker" "wastepaper" "basket", initial "Alongside the desk is a wicker wastepaper basket.", capacity 15, space 6, size 6, weight 2, has container open; !------------------------------------------------------------------------------ Object -> -> Papers "bunch of crumpled papers" with name "bunch" "of" "crumpled" "papers", size 3, weight 2, description "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.", before [; Read: << EXAMINE Self >>; ]; !------------------------------------------------------------------------------ Object Library_Mud "mud" with name "mud" "dirt" "stains", description "The spots seem to be dried dirt or mud and are bunched in the area between the balcony and the desk.", has scenery concealed; !------------------------------------------------------------------------------ Firstfloor Library_Balcony "Library Balcony" with parse_name [w; w = NextWord(); if (w == 'balcony') return 1; if (w == 'library' && NextWord() == 'balcony') return 2; return 0; ], description [; print "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 ", (DoorStatus) Library_Balcony_Door, ".^"; if (self.d_to ~= 0) print "The top of a ladder is resting on the metal railing.^"; if (Mr_McNabb in Garden_Path) "Mr. McNabb is tending to the roses."; if (Mr_McNabb in North_Lawn) "Away to the north, Mr. McNabb can be seen ", (string) DescribeMcNabbWork(), "."; rtrue; ], before [; Go: if (noun == d_obj && self.d_to == 0) "The fall would probably kill you."; ], s_to Library_Balcony_Door, d_to 0; !------------------------------------------------------------------------------ Object -> Library_Railing "railing" with name "metal" "railing", add_to_scope [; if (Library_Balcony.d_to) PlaceInScope(Ladder); ], description "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.", has scenery; !------------------------------------------------------------------------------ Object -> Library_Balcony_Examine "balcony" with name "balcony", description "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.", has scenery; !------------------------------------------------------------------------------ Firstfloor Hidden_Closet "Hidden Closet" with name "hidden" "closet", description [; print "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."; if (Safe has open) print " The heavy safe door is wide open."; new_line; if (Hidden_Door has open) { if (self.e_to ~= 0) "The library can be seen through a door to the west and an open door to the east leads to the master bedroom."; "The library can be seen through a door to the west."; } if (self.e_to ~= 0) "The master bedroom can be seen through a door to the east."; ], before [; Go: if (noun == e_obj && self.e_to == Master_Bedroom && Mr_Baxter in Master_Bedroom && KillDunbar.stage > 0 && KillDunbar.stage < 4) { print "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.^"; EndOfGame(0); } ], npc_subway yellow_line, w_to Hidden_Door, e_to 0, has topic; !------------------------------------------------------------------------------ Object -> Safe "safe" with name "safe" "combination", capacity 4, description [; print "The safe is "; if (self has open) "open."; "closed."; ], before [; Close: if (self hasnt open) "It already is."; give self ~open; "The safe closes and locks."; Open: if (self has open) "It already is."; "The safe is locked."; MyUnlock: "You don't know the combination."; ], has scenery container topic; !------------------------------------------------------------------------------ Object -> -> New_Will "new will" with destruction_seen 0, ! The player has seen that George destroyed the new will name "new" "will", weight 2, size 2, description "This is Mr. Robner's new will, disowning George and giving his entire estate to his wife.", before [; Read: << EXAMINE self >>; ], has legible topic; !------------------------------------------------------------------------------ Object -> -> Stack_Of_Papers "stack of papers" with name "stack" "of" "papers", weight 4, size 4, description "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.", before [; Read: << EXAMINE self >>; ], has legible; !------------------------------------------------------------------------------ Object -> Blue_Button "blue button" with name "blue" "button", before [; Push: print "The wall to the east swings "; if (Hidden_Closet.e_to == Master_Bedroom) { Hidden_Closet.e_to = 0; Master_Bedroom.w_to = 0; "closed."; } else { Hidden_Closet.e_to = Master_Bedroom; Master_Bedroom.w_to = Hidden_Closet; print "open, revealing the master bedroom on the other side.^"; if (Mrs_Robner in Master_Bedroom && Mrs_Robner.surprise == 0) { Mrs_Robner.surprise = 1; "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."; } rtrue; } ], has scenery; !------------------------------------------------------------------------------ Object -> Red_Button "red button" with name "red" "button", before [; Push: print "The wall to the west "; if (Hidden_Door has open) { give Hidden_Door ~open; "silently closes."; } else { give Hidden_Door open; "swings open, revealing the library on the other side."; } ], has scenery;