#Ifdef notdef; Object x "x"; #Endif; CvsId "$Id: SF_CliffHouse.inf,v 1.15 2005/02/15 19:45:59 joelh Exp $"; ! FIXME-5 I should implement the Cliff House dining area. It's ! unreasonable to expect players to work on how to go through the ! hall, but not to the dining area. Street cliff "Cliff" with name 'cliff', description "You are at a cliff overlooking the majestic Pacific Ocean. The waves crash against the rocks below, and the salt air leaves a sharp smell in your nostrils. The historic Cliff House restaurant stands over the cliff to the west. The windmill to the east marks the border to Golden Gate Park. You could also proceed northeast to the Bridge, or southeast to the peninsula.", d_to "The bath house below was destroyed a century ago; now there are only sharp rocks that you would surely die upon. You think better of the descent and stay on top of the cliff.", w_to cliff_house, ne_to bridge, e_to park, se_to peninsula, ralph_thinks [; if (location == cliff) "~Ooh, is that sea air I smell? No, just surfers' BO.~"; "~I love to smell the sea air there.~"; ]; Object cliff_house_front "Cliff House" cliff with pname 'cliff' '.x' 'house' '.or' 'entrance', description "Glass windows and classical columns line the front of the third historic Cliff House restaurant and Musee Mecanique. The first two Cliff Houses were destroyed by fire. Fortunately, you had good alibis.", before [; Enter: print "You step into the Cliff House restaurant.^"; PlayerTo(cliff_house); rtrue; ], ralph_thinks "~Ooh, I love the Chinese food.~^ ~I think they only serve fish.~^ ~They won't serve ferrets? That's racial discrimination!~", curator_thinks [; print_ret (string)mechanical_museum.curator_thinks; ], has enterable scenery; Room cliff_house "Cliff House" with pname 'cliff' '.x' 'house' '.or' 'here' '.or' 'restaurant', description "Oaken paneling and brass fixtures mark the luxurious Cliff House restaurant's interior. If you had a reservation, you might go up to the dining room. There is also a hall to the west, and the exit to the east.", heard_ralph false, after [; Go: if (photograph has concealed) { self.heard_ralph = false; hostess.allows_bathroom = false; } rfalse; ], ask_in_scope 1, ralph_thinks [; ! I don't think this will get called unless we're in the ! Cliff House; I think that it will call the front ! instead. if (location == cliff_house && photograph has concealed) "~What do you think I think? I want to see their bathroom!~"; if (photograph has concealed) "~Great place, if you ask me.~"; "~Nice place, except for the bathroom.~"; ], curator_thinks [; print_ret (string)mechanical_museum.curator_thinks; ], each_turn [; if (photograph has concealed && IndirectlyContains(cliff_house, ralph)) { print "^"; if (~~self.heard_ralph) { self.heard_ralph = true; print "Ralph quietly tells you, "; } "~I have to go to the bathroom!~"; } ], cant_go "You can only go east, west, or up.", out_to cliff, e_to cliff, w_to [; if (hostess.allows_bathroom) return cliff_house_hall; self.heard_ralph = false; "The hostess politely blocks you. ~The dining area is upstairs, but you'll need a reservation.~"; ], u_to [; self.heard_ralph = false; "The hostess politely blocks you. ~Do you have a reservation?~^ ~Quite a few.~^ ~Name?~^ ~Jacques and Ralph.~^ ~I'm sorry, but you're not on the list.~^ ~There's a first.~"; ]; Object hostess "hostess" cliff_house, with pname 'hostess' '.or' 'maitre' 'd//' '.or' 'receptionist' '.or' 'girl' '.or' 'woman', initial "The hostess, a petite blond girl, stands behind a small podium with a reservation book.", ralph_thinks "~Sure she's cute, but can she cook? And more to the point, can she direct me to the bathroom?~", allows_bathroom false, allow_bathroom [; self.allows_bathroom = true; if (photograph has concealed && parent(ralph)) { print "Ralph scurries off to the west.^"; ! We can't usefully move Ralph to the bathroom, ! since the found_in processing will remove him. ralph.in_bathroom = 1; remove ralph; } rtrue; ], life [; Ask: ! This makes the dialogue a little easier to tell who's ! saying what. cliff_house.heard_ralph = false; switch (second) { bathroom_referent, ralph, cliff_house_hall, 'hall', w_obj: print "~The facilities are just down the hall to the right,~ she says. ~Go right ahead.~^"; hostess.allow_bathroom(); rtrue; mechanical_museum: print "~It's down the hall. Go right ahead.~^"; if (photograph has concealed && parent(ralph)) print "~Ooh, isn't that where the bathroom is?~ "; hostess.allow_bathroom(); rtrue; reservation_book: "The receptionist gives you a mildly disappointed look. ~You need to call at least 24 hours in advance for a reservation.~"; u_obj, 'dining', 'food', 'meal', 'bar': "~I'm sorry,~ she says, ~you'll need a reservation before I can seat you.~"; cliff_house: "~The historic Cliff House,~ recites the hostess with more enthusiasm than you'd expect, ~is a fine dining establishment that focuses on impeccable service, top fresh seafood and local ingredients that are farmed using sustainable practices.~"; photograph: "~I can't possibly remember all the customers that visit.~"; gun: "~Forget to load it, big guy?~"; default: "The hostess gives you a confused look."; } Show: if (metaclass(noun) == Object) << Ask hostess noun >>; ], orders [; Show: if ((noun == player or ralph) && second == cliff_house_bathroom or bathroom_referent) << Ask hostess bathroom_referent >>; if ((noun == player or ralph) && second == mechanical_museum) << Ask self mechanical_museum >>; Give: << Ask self noun >>; ], has animate female static transparent; ! This is partially so that 'ASK HOSTESS FOR RESERVATION' can be ! reasonably implemented. The podium is in the hostess so that ! ObjectIsUnreachable, referring to it or the book, will say that it ! belongs to the hostess. Object podium "podium" hostess with name 'podium' 'stand', description "The book looks a bit like an accoutant's ledger. The names are written in a hasty scrawl, and you can't make any of them out.", capacity 1, before [; Take,Push,Pull: "It's bolted down."; ], has static supporter; Object reservation_book "reservation book" podium with name 'reservation' 'book', description "The book looks a bit like an accoutant's ledger. The names are written in a hasty scrawl, and you can't make any of them out.", has static; ! Make sure that, if the player refers to the bathroom in "Ask", it's ! this one. Object bathroom_referent "Bathroom" cliff_house, with name 'toilet' 'bathroom' 'bath' 'rest' 'room' 'restroom', before [; "A sign says it's down the hall."; ], has scenery; Room cliff_house_hall "Hall", with name 'hall', description "The oaken hall joins the entrance to the east on one side, with the Musee Mecanique at the back of the Cliff House to the west. A small bathroom is to the north.", e_to cliff_house, w_to mechanical_museum, n_to cliff_house_bathroom, after [; Go: Achieved(3); ]; Room cliff_house_bathroom "Bathroom" with name 'bathroom' 'bath' 'rest' 'room' 'restroom', description "The small bathroom contains a simple toilet and sink. There's a distinct musk present.", cant_go "The bathroom exit is to the south.", out_to cliff_house_hall, s_to cliff_house_hall, asked_ralph false, ralph_thinks [; cliff_house_bathroom.asked_ralph = true; print "~Say, Ralph,~ you say, ~I noticed you've needed to go to the bathroom a lot."; if (lower_elevator_door.ralph_used_bathroom > 1) { print " I mean, ", lower_elevator_door.ralph_used_bathroom, " times "; if (location == pyramid) print "here"; else print "in the Transamerica Pyramid"; if (cliff_house_hall has visited) { print ", not to mention "; if (location == cliff or cliff_house or cliff_house_hall or cliff_house_bathroom) print "here"; else print "in the Cliff House"; } else { print " alone"; } print "."; } " Have you seen a doctor?~^ ~Not that I know of, but the guy in the stall next to me may have been one.~"; ! FIXME-5 Improve that conversation. It's here because I ! feel that, after Ralph constantly going to the bathroom, ! it's only in good sense to comment on it. ], before [; Smell: "This probably isn't the best place to do that."; ], after [; Go: if (self hasnt visited) print "~Hey, Ralph,~ you say, ~You know I like having you at my side, but...~^ ~Yes?~^ ~Er, nevermind.~^"; rfalse; ], ask_in_scope 1; Object cliff_house_toilet "toilet" cliff_house_bathroom, with name 'toilet', description "The toilet is best left undescribed.", before [; Take: "That's hardly potable."; Taste: "Disgusting!"; Use: "You don't need to go right now."; Flush: "Nothing happens."; ], ralph_thinks [; if (location == cliff_house_bathroom) "~I'm all better now.~"; "~Do you mean the restroom?~"; ], has scenery container openable; Object cliff_house_sink "sink" cliff_house_bathroom, with name 'sink' 'sign' 'faucet' 'spigot', description "The sink has a sign posted above it:^ ~Employees must wash hands before returning to work.~", ralph_thinks "~Why do they put that sign there? What kind of employees are they hiring?~", before [; Use,SwitchOn: "The faucet opens with a squeak, but no water comes forth."; ], has scenery container open; Room mechanical_museum "Musee Mecanique" with name 'mechanical' 'museum' 'musee' 'mecanique' 'mechanique', description "Various coin-operated machines of yesteryear line the walls of this mechanical museum, the precursors to modern arcade games. They've been altered to not require coins. Occasional mechanical clanks and clacks echo off the wood and iron machines. The only exit is back to the east.", ask_in_scope 1, ralph_thinks [; ! The Musee isn't there anymore in real life, so I'll have ! a brief bit about it moving. This is also the only way ! to learn where the Musee is without going there. (The ! other places are talked about in easily-accessible ! location descriptions.) print "~Say, Ralph, I heard they moved the museum.~^ ~I didn't give them zoning clearance, Jacques.~^ ~Why would they need your permission?~^ ~They wouldn't.~^"; if (mechanical_museum has visited) rtrue; "~So where is it now?~^ ~Same as always: behind the Cliff House.~"; ], curator_thinks "~I go to the Cliff House regularly. While I'm waiting for a table, I go in back to visit the Musee Mecanique. I was at the Cliff House on the night that our own museum was burgled. When I went to the Musee, I saw a big empty spot against the wall. I don't remember what used to be there, but in light of the other events, I'm certain there was a theft.~", e_to cliff_house_hall, before [; Listen: if (noun == nothing or mechanical_museum) "The regular wooden and steel clanks make this place sound more like a pinball parlor than a museum."; ]; Object robots "robot fighting game" mechanical_museum with name 'robot' 'robots' 'battle' 'game' 'rock' 'sock' 'em' 'stick' 'sticks' 'golem' 'golems', description "Two wooden golems grace the playfield of this game. Two sets of control sticks sit on opposite sides of the machine.", ! Note that many comment cards in the real-life mechanical ! museum refer to places destroyed in historic earthquakes or ! their subsequent fires. ! FIXME-4 Maybe a reference to Slouching Towards Bedlam would ! be appropriate here. ralph_thinks "~I prefer the stone MechWarrior game. Wasn't that here?~^ ~It was destroyed in the 1906 earthquake, Ralph.~^ ~What wasn't?~", before [; SwitchOn: print "~Hey, Ralph, get over there.~^ ~You're on!~ He takes up position and the two of you duke it out through your wooden proxies.^"; switch (random(4)) { 1: print "It's a quick and decisive battle: "; 2: print "After a long and arduous contest, "; 3: print "You're evenly matched, but in the end, "; default: print "You fight with all your strength, and Ralph with all his skill, until finally "; } if (random(2) == 1) { "he soundly knocks your block off.^ ~I blame the lack of realism,~ you say. ~There's no firearms involved.~"; } else { "you deliver a decisive final blow.^ ~I blame the lack of realism,~ he says. ~There's no first-person view.~"; } ] has static; Object cinescope "binocular cinescope" mechanical_museum with name 'binocular' 'cinescope' 'viewmaster' 'scope', description "The binocular cinescope has a hooded viewing area which, when the machine is turned on, rapidly flashes slightly different photographs to each of your eyes, creating the illusion of 3d motion.", ! MIMESIS ralph_thinks "~Who would want a fabricated reality?~", before [; Search: << SwitchOn self >>; SwitchOn: print "You peer into the cinescope and flick it on. Once the film gets up to speed, you see (in brilliant 3d) a short clip showing people swimming on the beach.^ ~Hey, Ralph, check it out!~^ Ralph looks through the machine. "; switch (random(3)) { 1: "~Oooh, a shark! GO SHARK GO!~"; 2: "~Take it off, baby! WOOHOO!~"; default: "~Huh, I didn't know that Vader was Luke's father.~"; } ], has static; Object photo_booth "photo booth" mechanical_museum with pname '.x' 'photo' 'booth' '.or' 'camera' '.or' 'slot' '.or' 'switch' '.or' 'swyche', description [; print "The wooden photo booth is now a freestanding apparatus: the booth section was removed for space reasons, leaving the camera pointing into the room. Next to the camera is a switch on it that reads ~Turne on Swyche to Engayge Photographique Recordere.~"; if (photograph in self) " A photograph is in the slot."; ""; ], ralph_thinks [; if (photograph has concealed) "~Ooh, somebody already took a picture!~"; "~I don't think you'd look very flattering in two dimensions.~"; ], before [; Receive: if (second == photograph) rtrue; "It doesn't fit in the slot."; Enter: "The so-called ~booth~ is not the sort you enter; you just stand next to it and turn it on."; Search: if (photograph hasnt moved) { give self container; move photograph to self; give photograph ~concealed; "There seems to be a photograph in the slot."; } SwitchOn,Turn: ! I hate games that make you search each item without ! regard for rhyme or reason. Hopefully, playing with ! everything in this room will be something the player ! will want to do anyway. ! ! Turn is here for TURN SWITCH. print "~C'mere, Ralph, let's get a picture!~^ He joins you under the hood, and you each strike poses: you "; switch (random(3)) { 1: print "sticking out your tongue"; 2: print "looking comically serious"; default: print "with a goofy grin"; } print ", and Ralph "; switch (random(3)) { 1: print "with a Robin Hoodesque hat and feather"; 2: print "wearing a Marilyn Monroe dress"; default: print "giving you lagomorph-ears"; } print ". The flash fires, and before your eyes recover, you think you see a flicker from the lamp labeled: ~Berefte ofe Photographique Filme~.^~Oh, that's too bad,~ you tell Ralph.^"; give photograph ~concealed; if (photograph hasnt moved) { give self container; move photograph to self; "~Yeah,~ he says, ~but somebody else was kind enough to leave their picture in the slot!~"; } rtrue; ], has static open; ! We don't actually put the clue in the booth because then 'X PHOTO' ! (expecting to examine the photo booth) would examine the photo. We ! leave it concealed to make it easy to tell whether it's been exposed ! or removed. Object photograph "photograph" with name 'photo' 'photograph' 'picture' 'clue' 'clues//p', description [; carla.know_woman(); "The grainy photograph shows a pimply-faced youth grinning like a fool. As you look more closely, you can see, in the background, a woman in a long coat and wide, floppy-rimmed hat loading one of the machines onto a cart. It's not enough for a positive ID, but it's a step towards reasonable cause for an arrest. And isn't that what life's all about?"; ], after [; Take: Achieved(4); rfalse; ], ! Failsafe, because there are ways for to get possession of it ! without actually using ##Take (eg, Ralph takes photo, we ! take Ralph, Ralph drops photo). each_turn [; if (self has moved) Achieved(4); ], ralph_thinks "~She looks somehow familiar, but I can't be sure.~", curator_thinks [; print "~Hmmm, she looks familiar, let me think.~ He scratches his chin for a moment. "; if (calling_card has moved) "~Yes, I do believe that's the woman I saw.~"; curator.do_calling_card(); rtrue; ], has concealed; ! Local variables: ! mode:inform ! inform-project-file:"Flibnaub.inf" ! End: