CONSTANT Story "^Killing the doctor^"; CONSTANT Headline "(C) 2001 by Victor Verbitsky (type 'help' or 'info' for more information)^"; CONSTANT MAX_SCORE 25; include "parser.h"; include "verblib.h"; include "grammar.h"; [ Initialise; location=beach; "^Doctor Proctor Phillips has been bothering the world \ for quite a long time now.^ ^First came the infamous Rabbits' Attacks, then the Tortoise Kamikadzes, and after that - The Mouse Terrorists...^ ^Everyone agreed something had to be done about it, but no-one knew what - that's where you came in.^ ^You, Anthony Amerbach, one of the most extravagant agents the world had ever known. You don't have the charisma of James Bond or even the humour of Nick Pirandello, in fact, you look as ugly as ten drunken goblins and speak like someone who just inhaled too much cocaine.^ ^But you do have one strength - you love the extraordinary... And this Proctor turned out to be the most extraordinary guy FBI has ever faced (much worse than the infamous cannibalistic doctor).^ ^So you were told to go to Proctor's secret hideout... Surprisingly enough, you not only found out its location in a pretty ordinary Chinese atlas (sold only in Krasnoyarsk), you also got there without much problems (ten battleships and five submarines shooting torpedoes don't count).^ "; ]; Object beach "The beach" with description "You're standing on a beach... Once it was famous among sunbathers for its unique location - only here you can get a tan in ten minutes - but then Doctor Proctor arrived, built an ugly tower, created some monsters, and - all the rest is pretty usual - banned alcohol. This the celebrities couldn't take! That's why the area is empty...^ ^From the east you can hear noices usually heard in the zoos' apes sections.^ ^Some monsters are visible west from the beach.", e_to [;deadflag=1; "The monkeys were prepared for your arrival. They already loaded a cannonball into the cannon, now they shoot it at you, making the world safe for tyranny.";], w_to Monsters_room, has light; Object -> "boat" with name "boat", initial "Your boat sits in the water.", description "This boat is over ten days old, and that's already looking old - no surprise! After all, it was shot at ever since Arhangelsk where you started your long journey. What's strange is how it survived at all...", Before [;Take: "You would love to carry all your things around (especially in such a situation), but this enormous motor boat is too much even for a strong secret agent!";], has static; Object -> gun "gun" with name "gun" "pistol", initial "Your gun lies on the sand.", description "It is your beloved pistol - sure, it's not much, it's not Bond's Walther PPK, it's not even a Makarov, it's an old .35 (the name is lost) - well, it does have sentimental value for you! You killed about seventy-five bad guys with it... Sorry, did I say seventy-five? I meant seventy-five thousand, of course!", After [;Take: if (self hasnt general) { print "You take the gun from the sand."; Score=Score+5; give self general; rtrue;} print "You take the gun again (a psychologist would probably use some pretty long words to describe your behaviour)."; rtrue; Drop: "You drop the gun back in the sand. Now why did you do that?"; ], ; Object Monsters_room "Monsters' room" with description [; if (monsters in location) {print "As you look around from behind a big stone (thankfully, you weigh enough stones to fit there), you sigh wearily... As always, the road to the island is guarded.^^ You can hear some strange noices from the south.^ ^At the north you see a lot of rocks.^^ Of course, you can also go back to the beach...^"; rtrue;}; print "There's nothing interesting here - because there's nothing in here... Nothing except the remains of the poor creatures you killed and their computer (you can't look at it, it's under their heavy bodies).^^ You can hear some strange noices from the south.^ ^At the north you see a lot of rocks.^^ Of course, you can also go back to the beach...^"; rtrue;], s_to [; if (monsters in location) "I wouldn't advise you to leave you hiding place! The monsters would spring to action as soon as they hear footsteps.^"; ] Machine, N_to [; if (monsters in location) {"I wouldn't advise you to leave you hiding place! The monsters would spring to action as soon as they hear footsteps.^";}; deadflag=1; "Now why you weren't careful? These damn monsters probably\ were placed to throw you off guard...^ ^A carefully created contraption unwinds, and a rock fall on you from above.";], e_to [;if (monsters in location) print "You carefully crawl back to the beach.^";] Beach , has light; Object -> monsters "monsters" with name "monsters" "boar-headed monsters" "two boar-headed monsters", initial "Two boar-headed monsters are playing ~Quake~. ", description "Well, they have muscular bodies (somewhat like Schwarzenegger's), but they're... umm... boar-headed! Dammit, what else can I say?^^ You wonder why modern evil doctors always create the same monsters. Do they all read one neverending fantasy epic?^^ Currently the hideous creatures are trying to save their brethren from an angry marine...", Before [;ShootWith: if (second~=gun) {print "This may be a strange game - but not THAT strange!"; rtrue;}; if (second==gun) {print "You kill the monsters.^^ You feel nothing - it's all in a day's work.^^ You leave your hiding place.^"; remove monsters; move bodies to location; score=score+5; rtrue;}; ], has static animate; Object bodies "bodies" with name "bodies" "monsters^ bodies", initial "Two monsters' bodies are lying on the sand.", description "After you killed the boar-headed monsters with your gun, they - naturally! - fell to the ground, crashing their beloved computer.", Before [; ShootWith: if (second==gun) {print "Release your anger! Go to the Dark Side!^^ Doctor Proctor Phillips needs you!^"; rtrue;} print "This is the strangest suggestion I ever heard!"; rtrue;], has static; Object Machine "Machine room" with description "This room is practically littered with machines, devices, gizmos, gimmicks, thingumabobs, thingumajigs... damn, I should get either an education or a thesaurus!", n_to Monsters_room, e_to Doctor, has light; object -> "machines" with name "machines" "equipment" "machinery", initial "There's a lot of strange machines in the room...", Before [;Examine: if (self hasnt general) {print "Sorry, I can't tell you anything - I'm not an expert... Nothing rings a bell here.^^ Hey, wait, that's not true! Something just did!"; give self general; rtrue;}; print "There's a lot on unfamiliar machinery standing about.^^ In the depth of the mess something is ringing quietly...^"; rtrue; Take: print "You wouldn't need them.^"; rtrue;], has static; object -> detonator "detonator" with name "detonator", description "You look at the detonator and smile to yourself - it's made from the proper irony iron!^^ Not much more can be told about it - it's a long white tube with a red button on the side.", After [;Take: if (self hasnt general) { print "You carefully pick the dangerous machine up."; score=score+10; give self general; rtrue;};], Before [;Use: if (location~=Doctor) {print "Yes, I know, the world is pretty unpleasant... However, destroying it is what the politicians are good at, and you should concentrate on your present goal.^"; rtrue;}; if (location==Doctor) {print "You look around.^^ You think...^^ You don't see any other choice.^^ You push the button.^^ The secret device in your spinal cord beeps.^^ You start counting. Ten, nine, eight, two...^^ FLASH!^^ It worked! You're at the FBI headquarters!^^"; score=score+5; print "...You wake up. Yes, Trainee Amerbach, it was just a dream!^"; deadflag=2; rtrue;};], has transparent; Object-> -> "red button" with name "button" "red", description "A perfectly ordinary button.", Before [; Push: <>;], has scenery; object Doctor "Proctor's Retreat" with description "You have finally reached your destination!^^ And, frankly, it's a bit of an anticlimax - the room isn't much to look at... You expected something weird - say, a location filled with ~No smoking!~ and ~No drinking!~ posters - but this is a usual room seen not only in a hundred mission, also in a thousand movies.^^ That is, it's filled with countless tables filled with debris - results of the previous experiments - and an equal amount of equipment...^^ There's only one unusual thing - an absolutely clean desk in the centre of the room...^^ The chair on which the Doctor is sitting is definitely taken from one of the abandoned tourist attractions. ", w_to Machine, has light; object -> "chair" with name "chair" "furniture", description "It's a red IKEA chair.^^ Tourists love them. Workers hate them.", has scenery; object-> "tables" with name "tables", description "There isn't a lot on the tables that you can recognize; here's the list: human bodies, boar bodies, Coke cans, a lot of beer, bedsheets and - whatever the reason - printed copies of SPAG and XYZZYnews magazines.^ Clearly, something horrible was going on in here!", has scenery; object -> "equipment" with name "machines" "equipment", description "I told you before, DON'T ASK!", has scenery; object -> "desk" with name "desk", description "The desk is incredibly tidy.^^ In fact, there's nothing on it but a notebook. The Doctor either used some machine or married - everyone knows evil maniacs can't clean after themselves.", has scenery; object -> "notebook" with name "notebook" "book", description "The notebook is filled with discarded ideas...^ The game wouldn't be: a treasure hunt, a puzzle-less game about cameras, a second work based on the famous SF comedy series, a comic game based on a movie...^ Currently Dr. Phillips is trying to write a story-based expanded version of Matt Barringer's ~Detective~...", has scenery; object -> "Proctor" with name "Doctor" "Proctor" "Phillips", initial "Doctor Proctor sits at the desk, working on a plan to take over the world and turn it into a theme park.", description "Your enemy is about thirty years old, cleanly shaved, has no glasses, his blonde hair is in ponytail... As you can see, not a usual evil maniac at all!^^ What's more, he isn't creating an Army of Evil to take over the world, what he is writing in a notebook (you can see this thanks to the special contact lenses you're wearing) looks more like a scenario for a text adventure that would capture people's attention for long enough...", Before [; ShootWith: if (second==gun) {print "The doctor is quick enough to catch you if you try..."; rtrue;}; Kiss: "Sure, forgiving your enemy is a nice concept for youngsters full of love - but not for secret agents!";], has animate; ! Menu-driven help (not really a part of the game itself) ! ---------------------------------------------------------------------------- [ HelpMenu; if (menu_item==0) { item_width=8; item_name="The help menu"; return 3;} if (menu_item==1) { item_width=6; item_name="About the author"; } if (menu_item==2) { item_width=4; item_name="Game information"; } if (menu_item==3) { item_width=7; item_name="Have you tried?"; } ]; [ HelpInfo; if (menu_item==1) { print "I (Victor Verbitsky) am 20 years old and is a student of Russian State University of Humanities (4th course).^^"; print "Yes, yes, that's right, a Russian!^^"; print "I like IF for quite a long time, about 5 years - although to me IF isn't ~text-adventure~, it's ~any game in which the story is the most important part~.^^ In fact, I started on graphical adventure games (which I used to learn English), and I'm still often playing some of them; however, writing them is another thing altogether - writing a text-only game is easier...^^ Unfortunately, due to the university, all the games I start are never finished - that's why I decided to do something short; finally, ~Killing the doctor~ is finished!^^ As a writer of non-interactive fiction (currently nothing published; but then, who cares anyway - you have to know Russian to read all of it except for one story), I am satisfied with it; as a game, it's not that good...^^ You have to keep in mind, however, that it's hard to get Internet access in Russia, and it's even harder to visit the newsgroups; that's why I designed and tested this game entirely on my own (it's hard to find a tester, too - most of our gamers are interested in pictures)...^^ I would appreciate it if someone would send comments about the game to my father's E-mail address: ~Verbit@@64Online.Ru~ (I don't have my own)..."; } if (menu_item==2) {print "This game was first written as a second ~Detective~ on 6th of June, 2000. It had everything - typos, strange direction changes, description errors; but it also had two humorous bits (the ~irony iron~ - which I left in this version - and a room description ending with five exclamation marks... Any Pratchett reader knows it's ~a sure sign of the insane mind~.^^ This version has all the elements out of there (including the ~Use~ command), but it also contains some humoruous text and several more obstacles (like the necessity to kill monsters so that you can proceed), but it also has much more freedom (you can go back anywhere you like). There are also much better death description (logical now, I think)...^^ I considered presenting this game as a conversion of the old Spectrum title, but decided against it (after playing ~Being John Malkovich~, where the humour style is quite like mine - mine in non-interactive titles, that is). Why did I publish it? Well, you see, there are some other projects I may release sometime (a story-based treasure hunt, a game based on Russian folklore, another one based on Greek myths and a philosophical story about a Romanian vampire), and I want my name to be known before that...^^ I'm also proud of the text - try thinking in a foreign language sometime - but want to know other's reactions before deciding to continue (I may abandon the genre altogether).^^ I hope this game isn't ~Detective II~!^^"; } if (menu_item==3) { print "Taking the boat?^^"; print "Entering the apes' room?^^"; print "Going north from the monsters' room?^^"; print "Getting the gun, dropping it and getting it again?^^"; print "Shooting something other than the gun at something?^^"; print "Shooting the gun at something other than the monsters?^^"; print "Using the detonator not in the doctor's lair?^^"; print "Examining machines, detonator and Proctor?^^"; print "Kissing Proctor?^^"; print "Shooting him?^^"; print "Examining the tables, the equipment, the desk, the chair, the furniture and the notebook?^^"; print "Typing ~xyzzy~?^^"; print "Typing ~wake~ (this one is only for people who are replaying the game)?"; }; ]; [ HelpSub; DoMenu("You can read: ^ ^ About the author ^ About the game ^ About amusing things to do^", HelpMenu, HelpInfo); ]; [XyzzySub; print "A hollow voice says ~Long live the legend!~"; ]; [ShootWithSub; if (second==gun) {print "I understand you want to cause destruction, but this isn't that kind of game!"; rtrue;}; if (second~=gun) {print "And just how would you do that?"; rtrue;}; ]; [UseSub; print "That's not very useful..."; rtrue; ]; Extend "wake" replace * ->WakeMe; [WakeMeSub; print "I don't think you're dreaming.^"; rtrue;]; Verb "xyzzy" * -> Xyzzy; Verb "shoot" * noun 'with' held ->ShootWith; Verb "use" * noun -> Use; Verb "help" "info"* -> Help;