!\--------------------------------------------------------------------------- GBHELP.HUG Help menu system for Guilty Bastards by Kent Tessman (c) 1998 ---------------------------------------------------------------------------\! !---------------------------------------------------------------------------- ! GENERAL HELP MENU: !---------------------------------------------------------------------------- replace DoHelp { local a = 1 ! Since we're corrupting the graphics window last_drawn_picture = 0 ! MENU_...COLOR settings added to this DoHelp replacement: MENU_TEXTCOLOR = DEF_FOREGROUND MENU_BGCOLOR = DEF_BACKGROUND MENU_SELECTCOLOR = DEF_SL_FOREGROUND MENU_SELECTBGCOLOR = DEF_SL_BACKGROUND while true { menuitem[0] = "GUILTY BASTARDS" menuitem[1] = "About the game" menuitem[2] = "Some basic commands" menuitem[3] = "Hints, or What Do I Do Now?" menuitem[4] = "" menuitem[5] = "Release history" menuitem[6] = "Credits and acknowledgements" menuitem[7] = "License and copyright information" menuitem[8] = "About the Hugo Compiler" #ifclear BETA_TEST a = Menu(8, 0, a) #else menuitem[9] = "" menuitem[10] = "So you wanna be a beta-tester?" a = Menu(10, 0, a) #endif select a case 0 { window 0 cls PrintStatusline DescribePlace(location) return } case 1: Help_AbouttheGame case 2: Help_BasicCommands case 3: Help_Hints case 5: Help_ReleaseHistory case 6: Help_Credits case 7: Help_License case 8: Help_AboutHugo #ifset BETA_TEST case 10: Help_BetaTest #endif } } routine Help_AbouttheGame { CenterTitle("ABOUT THE GAME") "The kink in your neck is from sleeping in a chair in the corner of your hotel room: don't do that again. Sleeping in a chair is from coming back last night so dead tired from an all-night stakeout that you basically managed to fire the keys onto the night table and collapse into the nearest non-floor object. The all-night stakeout gig was an act of desperation. The desperation is from being so short of negotiable currency that the subject of rent became such a sore point between you and your recently ex-landlord that you now find yourself living in this hotel. The lack of cash is due to, well, let's call it poor financial planning. That and about a dozen or so really bad wagers on the ponies." "\nSo here you are, stiff neck and all. And a couple of resolutions. One: No more ponies, at least until they shape up and start pulling their weight. Two: No more all-night stakeouts. \ Especially not like this one: your meager excuse for a client was so uninformed that the woman whose apartment he had you watching--his soon-to-be ex-wife--wasn't even in Los Angeles. And hadn't been for two months. Of course you didn't find this out until sometime this morning. Right before you found out that said client had also skipped town without exactly leaving a forwarding address." "\n\"Go back to sleep,\" you tell yourself. That's solid advice. \ But when's the last time you listened to solid advice, particularly your own? \"Things will look better in the morning.\" Except it is the morning, and things don't look exceptionally better." "\nAlthough this is L.A. And in L.A., somebody's always in trouble. There's always something new happening. Something new popping up." "\nLike that envelope under the door..." "\n[Press a key...]"; pause } routine Help_BasicCommands { CenterTitle("BASIC COMMANDS") "You can start by moving around. Try \"go north\", \"go south\", \"walk west\", \"go up\", etc. (or \"n\", \"s\", \"w\", and \"u\" for short). If there's a house in front of you, try: \"enter the house\" or \"go inside\". A closed door might be remedied with \"open the door\", and a set of stairs deserves: \"climb the stairs\". That sort of thing." "\nAdditionally, you can get and drop things you might find about the landscape. Check what you're carrying with \"take inventory\" or just plain \"i\". You can examine things (using \"examine\" or \"x\"), try to open them, taste them, show them around, throw them at other objects or people--whatever comes to mind. You can be as descriptive as you like about where you'd like to go or what you'd like to do, since the story understands everything from one-word commands to complete English sentences." "\n(Now since this is a mystery, if you were a real detective you'd also be able to \"dust the letter opener for fingerprints\" or \"send the piece of glass to the lab\".)" "\nIf you run into someone, try to talk to them: \"ask Scarlett about Rhett\", \"Rhett, give me the pocketwatch\", \"tell Ashley to follow me\", or anything similar. You might also want to keep in mind that someone may change their story depending on how things develop, so it pays to ask again if you think someone was lying to you before. Of course, you have to be on your toes to make sure he or she isn't lying to you \Inow\i." "\nYou can wait around--i.e., \"wait\" (or simply \"z\"), \"wait until 11:30\", \"wait for 10 minutes\", \"wait for (someone)\"--or, if you want, repeat your last command just by typing \"again\" or \"g\". If you make a mistake in your typing, and the story complains that it doesn't know the misspelled word, you may easily atone by typing \"oops\" (or \"o\") followed by the properly spelled word." !\ \"g\". Try \"score\" to get an idea of how you're faring in terms of getting close to any kind of goal. If you make a mistake in your typing, and the story complains that it doesn't know the misspelled word, you may easily atone by typing \"oops\" (or \"o\") followed by the properly spelled word." \! "\nYou can change the way text is displayed with \"display wide\" or \"display tall\" (or just \"wide\" or \"tall\"), or \"inventory wide\" or \"inventory tall\" (or just \"i wide\" or \"i tall\") to list objects in either sentences or itemized lists. Type \"verbose\" or \"long\" to have the full room description displayed every time you enter a room. \"Superbrief\" or \"short\" will only display the full room description if you ask for it (by typing \"look\" or \"l\"). The default setting is \"brief\" descriptions (or \"normal\"), where the full room description is displayed only the first time the room is entered (or when you \"look\")." "\nAt any point in the game, you can freeze your state of affairs using the \"save\" command. You can pick up again later from this same point by typing \"restore\". In fact, it's recommended to save periodically, particularly after any important accomplishments. Should you later make a mistake that renders the game \"unwinnable\", it's much less frustrating to be able to restore to an earlier point and only have to redo the last ten moves instead of the last seventy-\ five. Any story that takes a radical turn for the worse can be started again from the beginning with \"restart\"."; #ifclear NO_UNDO " (And you can take back a move that, in hindsight, might not have been the smartest possible thing to try by typing \"undo\". Be warned, however, that only a finite number of undos in a row is allowed--you can't trace your steps all the way back to the beginning every time.)"; #endif " Finally, you are able to start or stop recording a transcript of your story with \"script on\" and \"script off\", enabling you to have everything that appears on the screen to be copied to your printer or to disk." "\n[Press a key...]"; pause } routine Help_ReleaseHistory { CenterTitle("RELEASE HISTORY") "\n\IRelease 1 (August 1998)\i\n\ \_ The first public release of "; print GameTitle; "." ! Followed quickly by the 1.01 patch. Thanks to Matthew Amster-Burton. "\n\IRelease 2 (mid-August 1998)\i\n \_ Incorporating minor fixes following Release 1, plus some new hints and game details." ! The 2.01 patch was released at the start of September, and the 2.02 patch ! was released in January 1999, along with this source code. The 2.03 patch ! came out in July 1999. ! ! Patches 2.04 through 2.06 were released between August and October. 2.07 ! was released in early November (thanks to Miriam Wynn). "\n[Press a key...]"; pause } routine Help_Credits { CenterTitle("CREDITS AND ACKNOWLEDGEMENTS") print "\n"; GameTitle; " was written by Kent Tessman, copyright (c) 1998-1999. Please send bug reports and other comments to \I\i." "\n\I\UCast\i\u" "Kelly Senecal, Ljiljana Kvesic, Dean Tessman, John Lawson, Ed Tessman, Pat Donnelly, Alan MacDonald, Sharon Mitchell" "\n\I\UMusic\i\u" "\"Michelle\" (opening theme) and \"Barbarella\" (Funkzilla track) by Matt Swoboda (Smash)." "\n\"Fragments of Peace\" (Cindy's apartment) and \"Sea of Faith\" (overlooking the Pacific) by Jon Dal Kristbjornsson (Mesonyx)." "\n\"The Eleventh Hour\" (office espionage) by Bruno Olsen (Lionheart)." "\n\"Galactic Impression\" (hiding and watching) by Greg Kruk (Zond 3)." ! "\nTitle theme (\"The Guilty Bastards Swing\") by Kent Tessman" "\n\I\UTesting\i\u" "Dean Tessman, Alan MacDonald, Brett Borger, Jason Penney, George Ellison, Jason Dyer, Rybread Celsius, Colin Turnbull, Ralph Hilton. \ Further post-release notes by Matthew Amster-Burton (including timely input on the 1.01 patch), Jason Peter Brown, Julian Arnold, and Adam Cadre." "\nWhistling monkey quotes by Alan MacDonald." "\nPhotographed on location in Los Angeles, California." "\nDesign, programming, and artwork by Kent Tessman." Disclaimer "\n[Press a key...]"; pause } routine Help_License { CenterTitle("LICENSE AND COPYRIGHT INFORMATION") print "\n\B\U"; GameTitle; "\b\u" "Copyright (c) 1998-1999 by Kent Tessman" "\n\B\UHugo Compiler and Engine\b\u" "Copyright (c) 1995-1999 by Kent Tessman" "\nThis game ("; GameTitle ") is copyright (c) 1998 by Kent Tessman (the author). The author reserves all rights regarding duplication, distribution, and modification of the game or any of its parts." "\n\n\B\UDistribution\b\u" "\nFree distribution of "; GameTitle " is allowable provided that it is modified in no manner and no fee is charged." "\n(Similar distribution of the Hugo Compiler and Engine is also allowable, given the same provisions. Additionally, distribution of programs created with the Hugo Compiler and/or using the Hugo Library must correspond to the terms of use specified by the author, primarily that explicitly commercial distribution of the Hugo Engine or elements of the Hugo Library is allowable with with the express written consent of the author. See the Hugo Manual for more details.)" "\n\n\B\UWarranty\b\u" print "\n"; GameTitle; " and the Hugo Engine are available free of charge, and there is no warranty whatsoever pertaining to their use." "\n\n\B\UDisclaimer\b\u" Disclaimer "\n[Press a key...]"; pause } routine Disclaimer { "\nThe characters and events in this game are fictitious. Any resemblance to real characters or events is entirely coincidental." } routine Help_AboutHugo { CenterTitle("ABOUT THE HUGO COMPILER") "\BHugo\b is a language designed and written by Kent Tessman for developing interactive fiction. The system consists of the \BHugo Compiler\b, which compiles source code to be run by the interpreter (the \BHugo Engine\b)." "\nHugo is an easy-to-learn, powerful, and flexible language. The syntax is relatively straightforward, keeping hieroglyphic syntax to minimum. Hugo is relatively object-oriented, in that a program consists of a number of objects representing the rooms, objects, and characters that make up the landscape of the story. Interaction between these objects is governed by a set of rules, or routines, that are specified by the programmer." "\nA number of powerful pre-existing routines are available in the \BHugo Library\b, which is a part of the standard Hugo package. The library routines are designed to manage many of the \"real-world\" aspects of an interactive story, such as weight and containment of objects, the presence or absence of light in a location, doors, vehicles, characters, clothing, and a full complement of player verb routines for moving about, getting things, examining them, opening and closing them, switching them on and off, eating them, drinking them, throwing them, conversing with characters, etc. By using the library, a programmer need not worry about many of the more mechanical aspects of maintaining the game universe, and can more quickly dive into the writing of the story proper." "\nThe Hugo compiler and interpreter are written in ANSI C, and the source code is readily available; porting of Hugo to other computer platforms is encouraged." "\nHugo is currently available via anonymous FTP from the \BInteractive Fiction Archive\b maintained by Volker Blasius at \Iftp.gmd.de\i in the directory \Iif-archive/programming/hugo\i. \ There one may find the executable versions of both the compiler and engine, as well as the library files and a number of Hugo example programs. A selection of Hugo games is available under \Iif-archive/games/hugo\i. The Interaction Fiction Archive is also an excellent source of materials relating to the history and development of interactive fiction." "\nFinally, current discussion of interactive fiction design in general, as well as Hugo and other languages in specific, can be found on the Usenet newsgroup \Brec.arts.int-fiction\b. Discussion of game play can be found on \Brec.games.int-fiction\b." "\nVisit the Hugo Homepage at \Ihttp://www.generalcoffee.com\i." "\n[Press a key...]"; pause } #ifset BETA_TEST routine Help_BetaTest { CenterTitle("SO YOU WANNA BE A BETA-TESTER?") "\I(Please also see any additional notes accompanying this beta release.)\i\n" "With this beta release of "; GameTitle ", the intentions are: 1.) to hunt down any bugs in the interface, such as pictures or sounds that seem to pop up at the wrong times; 2.) to smooth out any rough edges of the game itself, such as lapses in story logic or the typical early-release bugs such as being able to put a space capsule in your wallet; and 3.) to report back to me, your author, what the game is missing--where you wanted to be able to go but couldn't, if the game ever stopped you from doing something you really wanted to do with an offhanded and unimaginative reprimand, a topic that a character should have had an opinion about but didn't, and anything else that completes the sentence, \"You know, this game would be better if only...\"" "\n(It may help to keep a transcript of each playtesting session in order to have some log of exactly what happened when and where. \ Use \"script on\", then e-mail the log file to me.)" "\nSomething that gets mentioned by betatesters as a criticism is the lack of detail in a game. In particular, players prefer to get a unique answer for a question asked of a character or an action performed on an object instead of a stock library response. Glaring cases of these, where a better response is definitely required, should be given special attention." "\nAnother thing that may or may not work is that, in order to provide some sense of realism and structure to the goings-on, as well as to facilitate some fairly intricate plot synchronization, some things aren't known to the player until encountered in the story. This may be an irritation to players over multiple sessions\ --I don't know--but is it sensible to allow someone to cut to the chase by 8:15 a.m.?" "\nI'll emphasize that the game interface is relatively new, and in that respect I'd appreciate if you did everything you could to try and break it. This in addition to the usual detailed scrutinizing and merciless criticism that a good beta-tester, at least in my opinion, displays. If something doesn't work, let me know. Pick apart the storytelling, the coding, the prose, the art, my haircut, etc." "\nThanks for participating in the "; GameTitle " beta-test.\n\n--Kent Tessman" "\n(Please e-mail bug reports and other feedback to \I\i.)" "\n[Press a key...]"; pause } #endif routine GameTitle { color LIGHT_RED "Guilty Bastards"; color DEF_FOREGROUND } !---------------------------------------------------------------------------- ! HINT SYSTEM: !---------------------------------------------------------------------------- routine DoHint ! i.e., in response to "hint" or "hints" { Help_Hints window 0 cls PrintStatusline DescribePlace(location) } #ifset INCLUDE_HINTS array hint_categories[MAX_MENUITEMS] routine Help_Hints { local i, count, category, old_category local topic, old_topic MENU_TEXTCOLOR = DEF_FOREGROUND MENU_BGCOLOR = DEF_BACKGROUND MENU_SELECTCOLOR = DEF_SL_FOREGROUND MENU_SELECTBGCOLOR = DEF_SL_BACKGROUND ! Since we're corrupting the graphics window last_drawn_picture = 0 :PickHintCategory ! First, create a list of hint categories: count = 0 for category in hint_category { if category.hints_available { menuitem[++count] = category.name hint_categories[count] = category } } if count = 0 { CenterTitle("HINTS") "\n[No hints available. Press any key...]"; pause return } menuitem[0] = "HINTS" category = Menu(count, 0, old_category) old_category = category if category = 0: return ! Convert category from a menu selection number to a ! hint_category class: category = hint_categories[category] :PickHintTopic ! For a selected category, create a list of subcategories: for (topic=1; category.(hint1-1+topic)~=""; topic++) { menuitem[topic] = category.(hint1-1+topic) hint_categories[topic] = category.(hint1-1+topic) #2 } menuitem[0] = category.name ! Get the desired topic: topic = Menu(topic-1, 0, old_topic) old_topic = topic if topic = 0 jump PickHintCategory ! If we get here, then we've successfully selected a topic ! and can start printing the actual hints: CenterTitle(menuitem[topic]) ! Change topic from a menu selection number to a ! hint_topic class: topic = hint_categories[topic] i = 0 :PrintHints for (; i<=topic.hints_revealed; i++) { print "" run topic.(hint1+i) } if &topic.(hint1+i) = 0 ! i.e., no more topics { "\n[No more hints. Press any key...]"; pause jump PickHintTopic } else { "[Press 'H' for another hint, or 'Q' to quit]"; :GetHintKey pause if word[0] = 'Q', 'q', ESCAPE_KEY jump PickHintTopic if word[0] = 'H', 'h' { topic.hints_revealed++ print newline jump PrintHints } jump GetHintKey } } property hint1 alias n_to property hint2 alias ne_to property hint3 alias e_to property hint4 alias se_to property hint5 alias s_to property hint6 alias sw_to property hint7 alias w_to property hint8 alias nw_to property hint9 alias u_to property hint10 alias d_to property hints_available alias in_to property hints_revealed alias out_to ! hint_category objects must be explicitly placed "in hint_category". They ! should contain two values for each hint1, hint2, etc.: a label/question ! and the name of the hint_topic object. hint_topic objects should be ! comprised of property routines for hint1, hint2, etc., giving successive ! hints on the topic. class hint_category { hints_available true } class hint_topic { hints_revealed 0 } !---------------------------------------------------------------------------- ! GAME HINTS: !---------------------------------------------------------------------------- !-------------- ! HOTEL HINTS: !-------------- hint_category hotel_hints "Starting out (the Pelican Hotel)" { in hint_category hint1 "(The author's advice on using hints)", author_hints hint2 "General Detective Tips", general_hints hint3 "How do I get anywhere in this damned city?", drive_hints hint4 "Where did I leave the keys to the Volvo?", keys_hints } hint_topic author_hints { hint1 "Hints are a mixed bag of good and bad. On one hand, most of the fun in playing a game like this is in finally getting the cathartic revelation that enables you to get over an obstacle, to solve a problem, to figure out what to do or where to go or who to talk to. So it does spoil the fun a little to prematurely reach for a hint. But on the other hand, it's probably even less fun to be interminably stuck on one puzzle or situation and spend all your playing time retracing your steps, getting nowhere, and swearing up a cloud of blue smoke at your computer." hint2 "That's why these hints are provided, then--but notice that you don't have to view \Iall\i the hints for a given topic. In fact, they get progressively more revealing each time you hit 'H', so if you just need a little nudge, you can probably read the first one or two and get back to the game." hint3 "One last thing: I'm not swearing with hand over heart that all of the topics are \"real\". It's a compromise, making sure that hints are read only if and when they're needed instead of by idle browsing. There might just be enough misinformation in there to throw you off if that's your not-too-detectively game." } hint_topic general_hints { hint1 "A murderer always returns to the scene of the crime." hint2 "Well, maybe not always, but it's been known to happen." hint3 "Guilt is a great motivator for getting someone to do what you want." hint4 "Figuring out motive is very useful in steering you toward the guilty party. Don't just look at the individual pieces: try to get an understanding of the big picture." hint5 "Confronting the guilty with proof that they're it is a good way to set them off--which can be a really bad thing if you don't know you've done it." hint6 "If you're expecting an ambush, don't show up alone." hint7 "Leave no stone unturned (or no piece of potential evidence, at any rate). Be sure to examine people, places, and things carefully." hint8 "But at the same time, especially if you're poking around something like a crime scene, try to be careful what sort of shape you leave things in." } hint_topic keys_hints { hint1 "You came into your hotel room, it was late, all you wanted to do was get some sleep. Where might you have stashed the keys?" hint2 "Have you looked everywhere? Under and on everything?" hint3 "Try typing \"help\" and reading \"About the game\"--\ carefully." hint4 "They're on the night table in your hotel room." } hint_topic drive_hints { hint1 "Do you have somewhere you need to be?" hint2 "Open the envelope." hint3 "To get to the studio, go downstairs, get into the car, and try \"drive to the studio\"." } #ifset PART1 !--------------- ! STUDIO HINTS: !--------------- hint_category studio_hints "Rocket Pictures Studios" { in hint_category hints_available { if studiogate is visited return true else return false } hint1 "How do I get on the studio lot?", studiopass_hints hint2 "How do I open the soundstage door?", soundstage_hints hint3 "Who is the mysterious figure?", figure_hints } hint_topic studiopass_hints { hint1 { "Movie studio security is on par with Area 51. To get on the lot, you'll need a pass." } hint2 { "There's a studio pass in the envelope that was slipped under the door of your hotel room." } hint3 { "Drive to the studio lot. Make sure you've got the pass handy. Get out of the car and go north." } } hint_topic soundstage_hints { hint1 "Well, they don't let just anyone wander onto a soundstage. \ But they might let you if you were with someone who they \Iwould\i just let wander on." hint2 "Johnny LaFleure, the French Canadian movie star, comes out for a smoke break every hour or so." hint3 "It might be possible to sneak in behind Johnny when he goes back inside." hint4 "On the other hand, it might not be." hint5 "You can't get into any of the soundstage buildings. Nor do you need to." } hint_topic figure_hints { hint1 "Well, you're not going to be able to just waltz up to the mysterious figure and give him the fifth degree, that's for sure--he'll take off if you come near." hint2 "But that doesn't mean you can't follow the mysterious figure from a distance." hint3 "Keep an eye on the mysterious figure and who he talks to, then watch where he goes." hint4 "Exactly what mysterious figure are you talking about?" } !------------------ ! APARTMENT HINTS: !------------------ hint_category apartment_hints "Cindy Painter's apartment" { in hint_category hints_available { if nationalblvd is visited return true else return false } hint1 "What about Cindy's neighbor(s)?", neighbor_hints hint2 "Is there anything to find?", apt_hints hint3 "Who delivers the package?", package_hints hint4 "Where else can I go?", behindbldg_hints } hint_topic neighbor_hints { hint1 "In an apartment building, especially one like this, there are some people that mind everyone else's business, that know everything that goes on in the building." hint2 "The elderly lady is one of these." hint3 "But you're going to have to get to her, first. And she won't answer the door if you knock." hint4 "Catch her when she's out walking her Jack Russell terrier Kipper. But there is one small catch..." hint5 "To be honest, there is no elderly lady." hint6 "You can't talk to any of Cindy's neighbors. Even if you could find them, they probably wouldn't want to talk to you." } hint_topic apt_hints { hint1 "Yes." hint2 "A thorough search of everywhere and everything might turn up something the police missed." hint3 "The apartment is fairly bare; there isn't a great deal in the way of furnishings or anything else--but be sure to look in and on and under and behind what little there is." hint4 "Like the sofa." hint5 "Look under the sofa in the living room." } hint_topic package_hints { hint1 "The package simply gets left in front of Cindy Painter's front door." hint2 "So in order to find who delivers it, you're going to have to catch him or her in the act." hint3 "But he or she is not going to deliver it while you're standing there. You're going to have to find some place to hide." hint4 "Could you hide down the stairwell? Or, on the other hand..." hint5 "It is possible to see the street from Cindy's living room window." hint6 "No one delivers the package." hint7 "Because there is no package." } hint_topic behindbldg_hints { hint1 "Look through the kitchen window and you'll see an alley behind the apartment building." hint2 "You can get to it by going back out to National Blvd. and going behind the building." } !------------------- ! BACK ALLEY HINTS: !------------------- hint_category alley_hints "In the back alley" { in hint_category hints_available { if alley is visited return true else return false } hint1 "Can I enter the other building?", otherbldg_hints hint2 "Is there anything in the dumpster?", dumpster_hints } hint_topic otherbldg_hints { hint1 "The other building would, if it had a window in the right place, be an ideal place from which to have observed Cindy Painter's comings and goings." hint2 "It would also be a good lookout over the back alley and the dumpster. If you had a good spot to watch from, you could see everything that got thrown out, and everyone who did the throwing." hint3 "But how to get into the other building..." hint4 "A key might be the easiest thing. But on the other hand, since you don't have a key, there might just be another way." hint5 "Or not. There's no way to get into the other building, nor do you need to." } hint_topic dumpster_hints { hint1 "Yes--plenty of garbage." hint2 "More specifically: lots of garbage bags, each of which could be individually opened up and searched through were you so inclined." hint3 "On the other hand, there might be a better way than to spend your time methodically picking through garbage, most of which is guaranteed to be of little use to you." hint4 "The garbage bags are, for starters, all of different colors. Would help if you knew what color you were looking for." hint5 "Now where would a person--say, Cindy Painter--keep a supply of garbage bags?" hint6 "Look under the sink in her kitchen." hint7 "Look behind the plumbing." } #endif ! ifset PART1 #ifset PART2 !---------------------- ! WILSHIRE BLVD. HINTS !---------------------- hint_category wilshire_hints "The Wilshire building" { in hint_category hints_available { if wilshire is visited return true else return false } hint1 "Is there anything in Chuck Bixby's office?", chucksoffice_hints hint2 "Chuck won't let me answer the phone", phone_hints hint3 "How do I open the safe?", safe_hints hint4 "How do I get Chuck out of the office?", firealarm_hints hint5 "But Chuck keeps kicking me out!", sinatra_hints } hint_topic chucksoffice_hints { hint1 "Well, there is a safe." hint2 "But you're not going to be able to open it while Chuck is in the office." hint3 "There's also a desk..." hint4 "...that Chuck also wouldn't approve of you rifling through if he were in the room." } hint_topic phone_hints { hint1 "If Chuck won't let you answer the phone, you're going to have to get him out of the office." hint2 "There \Iis\i a way to get Chuck out of the office." hint3 "See the \"How do I get Chuck out of the office?\" hints." hint4 "But on the other hand, there is no phone to answer." hint5 "If you can find a phone, you're welcome to answer it." } hint_topic safe_hints { hint1 { "Simple:\n" Font(PROP_OFF) "\_ >turn dial to \n \_ >turn dial to \n \_ >turn dial to \n \_ >open safe" Font(DEFAULT_FONT) } hint2 "But of course you're going to need to find the combination first, aren't you?" hint3 "Here's a hint: it is somewhere in Chuck Bixby's office. \ He doesn't have it on his person." hint4 "It's under the desk blotter." } hint_topic firealarm_hints { hint1 "You could always pull the fire alarm." hint2 "But you're going to get arrested for mischief if you get busted pulling the alarm for no good reason. You could start a fire, or..." hint3 "...you could try to figure out some way to pull the fire alarm without actually standing there and pulling it." hint4 "Check out the adjoining rooms to the lobby." hint5 "The mop in the maintenance closet has a length of string tangled in it." hint6 "You can thread the string through the ventilation grill leading back into the lobby." hint7 "Once you've done that, you can loop the head of the string around the fire alarm, go back into the maintenance closet, and pull the tail of the string from there." } hint_topic sinatra_hints { hint1 "The compromising photos aren't the only things in the safe." hint2 "After you take the photos out, look in the safe again--\ there's something in there that Chuck really doesn't want you to find. And he's not going to call the cops on you after you've uncovered it, because he doesn't want to get busted." } !-------------------- ! SANTA MONICA HINTS !-------------------- hint_category beach_hints "On the beach in Santa Monica" { in hint_category hints_available { if beach is visited return true else return false } hint1 "Does Billy Van Earl have anything to say?", billy_hints hint2 "Does Billy have anything else to say?", billy2_hints hint3 "What about the old man on the beach?", oldman_hints } hint_topic billy_hints { hint1 "Yes, he does. But he's a skittish, not particularly courageous sort. Chances are you're either going to have to guilt him or trap him in a lie." hint2 "He claims he didn't know Cindy. Prove he knew her." hint3 "Show him something, some solid proof that he knew her." hint4 "You might find something like that around Cindy's apartment; if it's not in her apartment, maybe it was at one time." hint5 "In which case it might be in the garbage now, like in the dumpster behind the building." } hint_topic billy2_hints { hint1 "Of course. Now what could it be? Let's think for a second. \ Billy is a rock star (funk star, actually), and not necessarily the brightest bulb on the tree. There's a chance he might have, oh...woman trouble, no?" hint2 "After you trap him in his lie about not knowing Cindy, be sure to ask him about her again." hint3 "He might just slip up and use someone else's name. In that case, jump all over it and give him the third degree about this \Iother\i woman." } hint_topic oldman_hints { hint1 "At first you'd think an old man wandering the beach would be a bum or a vagrant--at any rate, not anyone useful to your little investigation. But if you're going to pick someone to ask questions about regarding the inhabitants of this little stretch of beach..." hint2 "First off, you'd better ask him about Billy Van Earl. Make sure you get the whole story." hint3 "The whole story includes who \Ielse\i might have been seen around Billy Van Earl's place." hint4 "But there's one more thing you should keep in mind..." hint5 "Namely that there isn't any old man on the beach, nor anywhere else." } !-------------- ! MALIBU HINTS !-------------- hint_category malibu_hints "Skulking around Malibu" { in hint_category hints_available { if malibu is visited return true else return false } hint1 "How can I get to see Holly Golden?", holly_hints hint2 "Holly took off with the photos!", hollyphoto_hints hint3 "Holly took off with the revolver!", revolver_hints } hint_topic holly_hints { hint1 "Well, the first step is probably to go to her house. There is a sign outside her driveway, however, that you may want to read." hint2 "You're going to have to ignore the 'Private Road - No Trespassing' sign if you're going to get anywhere near the house." hint3 "But Holly probably isn't just hanging around outside, is she? There are at least a couple of ways to get someone to come out of her house, even if you can't exactly stand there and ring the doorbell over and over." hint4 "One way is to just shout. Literally. Just yell. I mean, wouldn't you wonder what the hell was going on outside if someone was shouting?" hint5 "Another way is to make some other kind of racket. Like maybe start playing a little basketball on her driveway. \ There's got to be a basketball around there somewhere..." hint6 "Look in the bushes." } hint_topic hollyphoto_hints { hint1 "Well, the photos are pretty compromising, and it's probably pretty important to Holly that no one should ever see them, ever. So of course she's going to dispose of them if she can get her hands on them." hint2 "Don't give her the photos. And if she grabs them, grab them back." } hint_topic revolver_hints { hint1 "Well, here you've got a problem. You are working a murder, and keeping the gun in your possession is probably pretty important." hint2 "Problem is, Holly is going to take the revolver if she has even the smallest chance. One solution would be just to keep away from her." hint3 "But if you're got to go talk to her, that may pose a bit of a problem." hint4 "Another thing you can do is point out why she \Ican't\i take the revolver, and that way you can convince her not to." hint5 "In other words, the revolver doesn't exist, and it probably doesn't make much sense to be wasting time reading hints about it if you haven't seen one." } !------------- ! PHOTO HINTS !------------- hint_category photo_hints "Now that I've got the photos" { in hint_category hints_available return (photos is known) hint1 "Where are the negatives?", negative_hints hint2 "Who do I show the photographs to?", showphotos_hints hint3 "And what do I do after that?", afterphotos_hints } hint_topic negative_hints { hint1 "A lot of people keep the negatives for their pictures with the photographs themselves, don't they?" hint2 "But not with these, obviously. The negatives are somewhere else." hint3 "A long shot might be finding out where the photographs were developed, and looking there." hint4 "Go to the photofinishing place where the photos were done." hint5 "And if you do that, let me know, because I can never find the damned place. In fact, I don't think it even exists." hint6 "Maybe the negatives are somewhere else after all." } hint_topic showphotos_hints { hint1 "First clue: not everyone." hint2 "There are some people to whom if you show the photos, you're really not going to gain much. You may even make enemies if 1.) said person is one of the people in the photographs, or 2.) said person doesn't want someone like you to have them." hint3 "On the other hand, this is potentially a pretty strong card for you to play--if you choose wisely who to show the pictures to." hint4 "Show them to Holly, she may just grab them and bolt." hint5 "Who else had history with both Holly and Cindy Painter?" hint6 "Of course you could show them to Billy Van Earl..." hint7 "...but they were both actresses. And there is, if you remember correctly, a movie studio around here somewhere." hint8 "What happens if you show the pictures to Milt Walker? To Johnny LaFleure? To Stuart Fina?" } hint_topic afterphotos_hints { hint1 "Considering that you might be able to spur someone into action, it might be helpful to be able to keep an eye on them. It might be even more helpful to do it without them knowing." hint2 "In other words, you might want to find somewhere to hide." hint3 "Can you hide in the soundstage?" hint4 "Can you hide behind the tree outside the side building?" } #endif ! ifset PART2 !----------------------- ! GETTING KILLED HINTS: !----------------------- hint_category killed_hints "I keep getting killed!" { in hint_category hints_available { if photos is known return true else return false } hint1 "(Another quick warning)", killed_warning_hints hint2 "...at the Pelican Hotel", killed_hotel_hints hint3 "...in the Pacific Ocean", killed_ocean_hints hint4 "...at Rocket Pictures Studios", killed_studio_hints hint5 "...at Cindy Painter's apartment", killed_apt_hints hint6 "...on National Boulevard", killed_blvd_hints hint7 "...anywhere else", killed_anywhere_hints } hint_topic killed_warning_hints { hint1 "The \"I keep getting killed!\" hints are potentially more revealing than others--because they necessarily have to refer to something relatively drastic that's happened in the story--so it's recommended that you don't idly browse these hints in particular for fear of spoiling part(s) of the game." } hint_topic killed_hotel_hints { hint1 "There are a number of things you can do for security while staying in a hotel." hint2 "Keep your door locked at all times." hint3 "Don't answer the door for unannounced strangers or unordered room service. If the knock at the door claims to be maid service, tell them to come back later." hint4 "Check the room carefully--under the bed, behind the door, etc.--when you come back in to make sure no one is hiding in it waiting for you." hint5 "And finally, if you're managing to get yourself killed in the hotel, you've impressed the hell out of me, 'cause I have no idea how you're doing it." } hint_topic killed_ocean_hints { hint1 "First you have to figure out why you keep running out of air." hint2 "Someone has sabotaged your air tank. But who?" hint3 "There are two things to keep in mind here..." hint4 "1. Who actually supplies you with the air tank?" hint5 "and 2. What the hell are you talking about? What air tank?" hint6 "There is no air tank. And you're not in the ocean. Cut it out and solve the damned murder already." } hint_topic killed_studio_hints { hint1 "Now what is it that you did to make someone angry enough at you to kill you?" hint2 "Maybe \"angry\" isn't the best word. Maybe \"scared\" is better." hint3 "First of all, make sure you don't get caught snooping about where you shouldn't be." hint4 "Secondly, when you're not sure who's telling the truth and who's a murder, it probably pays to play your cards--\ whatever evidence you've managed to piece together--close to the chest." hint5 "It's okay to reveal a little of what you know. It might just be enough to force someone to act. But don't go showing everything--don't let on that you know \Itoo\i much. Or else you'll make yourself a target." hint6 "Don't go flashing notes and such around, especially to someone whose handwriting it could be proven they're written in (or whose fingerprints might be all over it)." } hint_topic killed_apt_hints { hint1 "The problem is that you're getting ambushed inside the apartment." hint2 "Read your \"General Detective Tips\ for hints on dealing appropriately with an impending ambush." hint3 "You're going to have to get someone to come with you to the apartment." hint4 "(You can ask a character to follow you using \"Character, follow me\" or \"tell Character to follow me\".)" hint5 "You're going to want someone who won't go into Cindy's apartment--who will wait outside and not get caught in the ambush with you." hint6 "Try Billy Van Earl." } hint_topic killed_blvd_hints { hint1 "What's the number-one chance of getting killed on the corner of National Blvd.?" hint2 "That's right: traffic." hint3 "Don't stand so close to the edge of the sidewalk." } hint_topic killed_anywhere_hints { hint1 "Now, obviously you're doing something to incur this sort of hostility." hint2 "You've done something to someone to get yourself marked as having to be eliminated." hint3 "Stealing the negatives from the trunk of the car probably didn't help, now, did it?" hint4 "On the other hand, you do need that as evidence..." hint5 "...so if you're going to have to steal them and therefore make someone want to kill you, make sure you stay one step ahead of them." hint6 "If you know somewhere they're likely to go more than anywhere else, go there and wait. But don't go alone." } #else ! i.e., ifclear INCLUDE_HINTS routine Help_Hints { CenterTitle("(No hints available)") "\n[Press a key...]"; pause } #endif ! ifset INCLUDE_HINTS