ack/examples/paranoia.c

1047 lines
48 KiB
C
Raw Normal View History

2007-02-25 00:30:07 +00:00
/* $Source$
* $State$
* $Revision$
*/
/* This is a solo paranoia game taken from the Jan/Feb issue (No 77) of
"SpaceGamer/FantasyGamer" magazine.
Article by Sam Shirley.
Implemented in C on Vax 11/780 under UNIX by Tim Lister
Very slightly modernised to run on 2007-era (!) compilers by
David Given.
This is a public domain adventure and may not be sold for profit */
#include <stdlib.h>
2007-02-25 00:30:07 +00:00
#include <stdio.h>
#define MOXIE 13
#define AGILITY 15
#define MAXKILL 7 /* The maximum number of UV's you can kill */
int clone=1;
int page=1;
int computer_request=0;
int ultra_violet=0;
int action_doll=0;
int hit_points=10;
int read_letter=0;
int plato_clone=3;
int blast_door=0;
int killer_count=0;
void character(void);
char get_char(void)
2007-02-25 00:30:07 +00:00
{
char c;
fflush(stdout);
c=getchar();
if (c!='\n') while(getchar()!='\n');
return c;
}
void more(void)
2007-02-25 00:30:07 +00:00
{
printf("---------- More ----------");
#ifdef DEBUG
printf("(page %d)",page);
#endif
if (get_char()=='p')
{
character();
printf("---------- More ----------");
(void)get_char();
};
}
int new_clone(int resume)
2007-02-25 00:30:07 +00:00
{
printf("\nClone %d just died.\n",clone);
if (++clone>6)
{
printf("\n*** You Lose ***\n\nAll your clones are dead. Your name has been stricken from the records.\n\n THE END\n");
return 0;
}
else
{
printf("Clone %d now activated.\n",clone);
ultra_violet=0;
action_doll=0;
hit_points=10;
killer_count=0;
return resume;
}
}
int dice_roll(int number, int faces)
2007-02-25 00:30:07 +00:00
{
int i,total=0;
for(i=number;i>0;i--) total+= rand()%faces+1;
return total;
}
void instructions(void)
2007-02-25 00:30:07 +00:00
{
printf("\n\n\n\nWelcome to Paranoia!\n\n");
printf("HOW TO PLAY:\n\n");
printf(" Just press <RETURN> until you are asked to make a choice.\n");
printf(" Select 'a' or 'b' or whatever for your choice, then press <RETURN>.\n");
printf(" You may select 'p' at any time to get a display of your statistics.\n");
printf(" Always choose the least dangerous option. Continue doing this until you win.\n");
printf(" At times you will use a skill or engage in combat and and will be informed of\n");
printf(" the outcome. These sections will be self explanatory.\n\n");
printf("HOW TO DIE:\n\n");
printf(" As Philo-R-DMD you will die at times during the adventure.\n");
printf(" When this happens you will be given an new clone at a particular location.\n");
printf(" The new Philo-R will usually have to retrace some of the old Philo-R\'s path;\n");
printf(" hopefully he won\'t make the same mistake as his predecessor.\n\n");
printf("HOW TO WIN:\n\n");
printf(" Simply complete the mission before you expend all six clones.\n");
printf(" If you make it, congratulations.\n");
printf(" If not, you can try again later.\n");
}
void character(void)
2007-02-25 00:30:07 +00:00
{
printf("===============================================================================\n");
printf("The Character : Philo-R-DMD %d\n", clone);
printf("Primary Attributes Secondary Attributes\n");
printf("===============================================================================\n");
printf("Strength ..................... 13 Carrying Capacity ................. 30\n");
printf("Endurance .................... 13 Damage Bonus ....................... 0\n");
printf("Agility ...................... 15 Macho Bonus ....................... -1\n");
printf("Manual Dexterity ............. 15 Melee Bonus ...................... +5%%\n");
printf("Moxie ........................ 13 Aimed Weapon Bonus .............. +10%%\n");
printf("Chutzpah ...................... 8 Comprehension Bonus .............. +4%%\n");
printf("Mechanical Aptitude .......... 14 Believability Bonus .............. +5%%\n");
printf("Power Index .................. 10 Repair Bonus ..................... +5%%\n");
printf("===============================================================================\n");
printf("Credits: 160 Secret Society: Illuminati Secret Society Rank: 1\n");
printf("Service Group: Power Services Mutant Power: Precognition\n");
printf("Weapon: laser pistol; to hit, 40%%; type, L; Range, 50m; Reload, 6r; Malfnt, 00\n");
printf("Skills: Basics 1(20%%), Aimed Weapon Combat 2(35%%), Laser 3(40%%),\n Personal Development 1(20%%), Communications 2(29%%), Intimidation 3(34%%)\n");
printf("Equipment: Red Reflec Armour, Laser Pistol, Laser Barrel (red),\n");
printf(" Notebook & Stylus, Knife, Com Unit 1, Jump suit,\n");
printf(" Secret Illuminati Eye-In-The-Pyramid(tm) Decoder ring,\n");
printf(" Utility Belt & Pouches\n");
printf("===============================================================================\n");
}
int choose(int a, char* aptr, int b, char* bptr)
2007-02-25 00:30:07 +00:00
{
printf("\nSelect \'a\' or \'b\' :\n");
printf(" a - %s.\n b - %s.\n", aptr, bptr);
if (get_char()=='a') return a;
else return b;
}
int page1(void)
2007-02-25 00:30:07 +00:00
{
printf(" You wake up face down on the red and pink checked E-Z-Kleen linoleum floor.\n");
printf(" You recognise the pattern, it\'s the type preferred in the internal security\nbriefing cells. When you finally look around you, you see that you are alone\n");
printf("in a large mission briefing room.\n");
return 57;
}
int page2(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Greetings,\" says the kindly Internal Security self incrimination expert who\n");
printf("meets you at the door, \"How are we doing today?\" He offers you a doughnut\n");
printf("and coffee and asks what brings you here. This doesn\'t seem so bad, so you\n");
printf("tell him that you have come to confess some possible security lapses. He\n");
printf("smiles knowingly, deftly catching your coffee as you slump to the floor.\n");
printf("\"Nothing to be alarmed about; it\'s just the truth serum,\" he says,\n");
printf("dragging you back into a discussion room.\n");
printf("The next five hours are a dim haze, but you can recall snatches of conversation\n");
printf("about your secret society, your mutant power, and your somewhat paranoid\n");
printf("distrust of The Computer. This should explain why you are hogtied and moving\n");
printf("slowly down the conveyer belt towards the meat processing unit in Food\n");
printf("Services.\n");
if (computer_request==1) return new_clone(45);
else return new_clone(32);
}
int page3(void)
2007-02-25 00:30:07 +00:00
{
printf("You walk to the nearest Computer terminal and request more information about\n");
printf("Christmas. The Computer says, \"That is an A-1 ULTRAVIOLET ONLY IMMEDIATE\n");
printf("TERMINATION classified topic. What is your clearance please, Troubleshooter?\"\n");
return choose(4,"You give your correct clearance",5,"You lie and claim Ultraviolet clearance");
}
int page4(void)
2007-02-25 00:30:07 +00:00
{
printf("\"That is classified information, Troubleshooter, thank you for your inquiry.\n");
printf(" Please report to an Internal Security self incrimination station as soon as\n");
printf(" possible.\"\n");
return 9;
}
int page5(void)
2007-02-25 00:30:07 +00:00
{
printf("The computer says, \"Troubleshooter, you are not wearing the correct colour\n");
printf("uniform. You must put on an Ultraviolet uniform immediately. I have seen to\n");
printf("your needs and ordered one already; it will be here shortly. Please wait with\n");
printf("your back to the wall until it arrives.\" In less than a minute an infrared\n");
printf("arrives carrying a white bundle. He asks you to sign for it, then hands it to\n");
printf("you and stands back, well outside of a fragmentation grenade\'s blast radius.\n");
return choose(6, "You open the package and put on the uniform", 7, "You finally come to your senses and run for it");
}
int page6(void)
2007-02-25 00:30:07 +00:00
{
printf("The uniform definitely makes you look snappy and pert. It really looks\n");
printf("impressive, and even has the new lopsided lapel fashion that you admire so\n");
printf("much. What\'s more, citizens of all ranks come to obsequious attention as you\n");
printf("walk past. This isn\'t so bad being an Ultraviolet. You could probably come\n");
printf("to like it, given time.\n");
printf("The beeping computer terminal interrupts your musings.\n");
ultra_violet=1;
return 8;
}
int page7(void)
2007-02-25 00:30:07 +00:00
{
printf("The corridor lights dim and are replaced by red battle lamps as the Security\n");
printf("Breach alarms howl all around you. You run headlong down the corridor and\n");
printf("desperately windmill around a corner, only to collide with a squad of 12 Blue\n");
printf("clearance Vulture squadron soldiers. \"Stop, Slime Face,\" shouts the\n");
printf("commander, \"or there won\'t be enough of you left for a tissue sample.\"\n");
printf("\"All right, soldiers, stuff the greasy traitor into the uniform,\" he orders,\n");
printf("waving the business end of his blue laser scant inches from your nose.\n");
printf("With his other hand he shakes open a white bundle to reveal a pristine new\n");
printf("Ultraviolet citizen's uniform.\n");
printf("One of the Vulture squadron Troubleshooters grabs you by the neck in the\n");
printf("exotic and very painful Vulture Clamp(tm) death grip (you saw a special about\n");
printf("it on the Teela O\'Malley show), while the rest tear off your clothes and\n");
printf("force you into the Ultraviolet uniform. The moment you are dressed they step\n");
printf("clear and stand at attention.\n");
printf("\"Thank you for your cooperation, sir,\" says the steely eyed leader of the\n");
printf("Vulture Squad. \"We will be going about our business now.\" With perfect\n");
printf("timing the Vultures wheel smartly and goosestep down the corridor.\n");
printf("Special Note: don\'t make the mistake of assuming that your skills have\n");
printf("improved any because of the uniform; you\'re only a Red Troubleshooter\n");
printf("traitorously posing as an Ultraviolet, and don\'t you forget it!\n");
printf("Suddenly, a computer terminal comes to life beside you.\n");
ultra_violet=1;
return 8;
}
int page8(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Now, about your question, citizen. Christmas was an old world marketing ploy\n");
printf("to induce lower clearance citizens to purchase vast quantities of goods, thus\n");
printf("accumulation a large amount of credit under the control of a single class of\n");
printf("citizen known as Retailers. The strategy used is to imply that all good\n");
printf("citizens give gifts during Christmas, thus if one wishes to be a valuable\n");
printf("member of society one must also give gifts during Christmas. More valuable\n");
printf("gifts make one a more valuable member, and thus did the Retailers come to\n");
printf("control a disproportionate amount of the currency. In this way Christmas\n");
printf("eventually caused the collapse of the old world. Understandably, Christmas\n");
printf("has been declared a treasonable practice in Alpha Complex.\n");
printf("Thank you for your inquiry.\"\n");
printf("You continue on your way to GDH7-beta.\n");
return 10;
}
int page9(void)
2007-02-25 00:30:07 +00:00
{
int choice;
printf("As you walk toward the tubecar that will take you to GDH7-beta, you pass one\n");
printf("of the bright blue and orange Internal Security self incrimination stations.\n");
printf("Inside, you can see an IS agent cheerfully greet an infrared citizen and then\n");
printf("lead him at gunpoint into one of the rubber lined discussion rooms.\n");
choice=choose(2,"You decide to stop here and chat, as ordered by The Computer",10,"You just continue blithely on past");
if (choice==2) computer_request = 1;
else computer_request = 0;
return choice;
}
int page10(void)
2007-02-25 00:30:07 +00:00
{
int choice;
printf("You stroll briskly down the corridor, up a ladder, across an unrailed catwalk,\n");
printf("under a perilously swinging blast door in urgent need of repair, and into\n");
printf("tubecar grand central. This is the bustling hub of Alpha Complex tubecar\n");
printf("transportation. Before you spreads a spaghetti maze of magnalift tube tracks\n");
printf("and linear accelerators. You bravely study the specially enhanced 3-D tube\n");
printf("route map; you wouldn\'t be the first Troubleshooter to take a fast tube ride\n");
printf("to nowhere.\n");
if (ultra_violet==0)
{
choice=choose(3,"You decide to ask The Computer about Christmas using a nearby terminal",10,"You think you have the route worked out, so you\'ll board a tube train");
if (choice==3) return choice;
};
printf("You nervously select a tubecar and step aboard.\n");
if (dice_roll(2,10)<MOXIE)
{
printf("You just caught a purple line tubecar.\n");
return 13;
}
else
{
printf("You just caught a brown line tubecar.\n");
return 48;
}
}
int page11(void)
2007-02-25 00:30:07 +00:00
{
printf("The printing on the folder says \"Experimental Self Briefing.\"\n");
printf("You open it and begin to read the following:\n");
printf("Step 1: Compel the briefing subject to attend the briefing.\n");
printf(" Note: See Experimental Briefing Sub Form Indigo-WY-2,\n");
printf(" \'Experimental Self Briefing Subject Acquisition Through The Use Of\n");
printf(" Neurotoxin Room Foggers.\'\n");
printf("Step 2: Inform the briefing subject that the briefing has begun.\n");
printf(" ATTENTION: THE BRIEFING HAS BEGUN.\n");
printf("Step 3: Present the briefing material to the briefing subject.\n");
printf(" GREETINGS TROUBLESHOOTER.\n");
printf(" YOU HAVE BEEN SPECIALLY SELECTED TO SINGLEHANDEDLY\n");
printf(" WIPE OUT A DEN OF TRAITOROUS CHRISTMAS ACTIVITY. YOUR MISSION IS TO\n");
printf(" GO TO GOODS DISTRIBUTION HALL 7-BETA AND ASSESS ANY CHRISTMAS ACTIVITY\n");
printf(" YOU FIND THERE. YOU ARE TO INFILTRATE THESE CHRISTMAS CELEBRANTS,\n");
printf(" LOCATE THEIR RINGLEADER, AN UNKNOWN MASTER RETAILER, AND BRING HIM\n");
printf(" BACK FOR EXECUTION AND TRIAL. THANK YOU. THE COMPUTER IS YOUR FRIEND.\n");
printf("Step 4: Sign the briefing subject\'s briefing release form to indicate that\n");
printf(" the briefing subject has completed the briefing.\n");
printf(" ATTENTION: PLEASE SIGN YOUR BRIEFING RELEASE FORM.\n");
printf("Step 5: Terminate the briefing\n");
printf(" ATTENTION: THE BRIEFING IS TERMINATED.\n");
more();
printf("You walk to the door and hold your signed briefing release form up to the\n");
printf("plexiglass window. A guard scrutinises it for a moment and then slides back\n");
printf("the megabolts holding the door shut. You are now free to continue the\n");
printf("mission.\n");
return choose(3,"You wish to ask The Computer for more information about Christmas",10,"You have decided to go directly to Goods Distribution Hall 7-beta");
}
int page12(void)
2007-02-25 00:30:07 +00:00
{
printf("You walk up to the door and push the button labelled \"push to exit.\"\n");
printf("Within seconds a surly looking guard shoves his face into the small plexiglass\n");
printf("window. You can see his mouth forming words but you can\'t hear any of them.\n");
printf("You just stare at him blankly for a few moments until he points down to a\n");
printf("speaker on your side of the door. When you put your ear to it you can barely\n");
printf("hear him say, \"Let\'s see your briefing release form, bud. You aren\'t\n");
printf("getting out of here without it.\"\n");
return choose(11,"You sit down at the table and read the Orange packet",57,"You stare around the room some more");
}
int page13(void)
2007-02-25 00:30:07 +00:00
{
printf("You step into the shiny plasteel tubecar, wondering why the shape has always\n");
printf("reminded you of bullets. The car shoots forward the instant your feet touch\n");
printf("the slippery gray floor, pinning you immobile against the back wall as the\n");
printf("tubecar careens toward GDH7-beta. Your only solace is the knowledge that it\n");
printf("could be worse, much worse.\n");
printf("Before too long the car comes to a stop. You can see signs for GDH7-beta\n");
printf("through the window. With a little practice you discover that you can crawl\n");
printf("to the door and pull open the latch.\n");
return 14;
}
int page14(void)
2007-02-25 00:30:07 +00:00
{
printf("You manage to pull yourself out of the tubecar and look around. Before you is\n");
printf("one of the most confusing things you have ever seen, a hallway that is\n");
printf("simultaneously both red and green clearance. If this is the result of\n");
printf("Christmas then it\'s easy to see the evils inherent in its practice.\n");
printf("You are in the heart of a large goods distribution centre. You can see all\n");
printf("about you evidence of traitorous secret society Christmas celebration; rubber\n");
printf("faced robots whiz back and forth selling toys to holiday shoppers, simul-plast\n");
printf("wreaths hang from every light fixture, while ahead in the shadows is a citizen\n");
printf("wearing a huge red synthetic flower.\n");
return 22;
}
int page15(void)
2007-02-25 00:30:07 +00:00
{
printf("You are set upon by a runty robot with a queer looking face and two pointy\n");
printf("rubber ears poking from beneath a tattered cap. \"Hey mister,\" it says,\n");
printf("\"you done all your last minute Christmas shopping? I got some real neat junk\n");
printf("here. You don\'t wanna miss the big day tommorrow, if you know what I mean.\"\n");
printf("The robot opens its bag to show you a pile of shoddy Troubleshooter dolls. It\n");
printf("reaches in and pulls out one of them. \"Look, these Action Troubleshooter(tm)\n");
printf("dolls are the neatest thing. This one\'s got moveable arms and when you\n");
printf("squeeze him, his little rifle squirts realistic looking napalm. It\'s only\n");
printf("50 credits. Oh yeah, Merry Christmas.\"\n");
printf("\nSelect \'a\', \'b\' or \'c\' :\n");
printf(" a - You decide to buy the doll.\n");
printf(" b - You shoot the robot.\n");
printf(" c - You ignore the robot and keep searching the hall.\n");
switch(get_char())
{
case 'a' : return 16;
case 'b' : return 17;
case 'c' :
default : return 22;
}
}
int page16(void)
2007-02-25 00:30:07 +00:00
{
printf("The doll is a good buy for fifty credits; it will make a fine Christmas present\n");
printf("for one of your friends. After the sale the robot rolls away. You can use\n");
printf("the doll later in combat. It works just like a cone rifle firing napalm,\n");
printf("except that occasionally it will explode and blow the user to smithereens.\n");
printf("But don\'t let that stop you.\n");
action_doll=1;
return 22;
}
int page17(void)
2007-02-25 00:30:07 +00:00
{
int i, robot_hp=15;
printf("You whip out your laser and shoot the robot, but not before it squeezes the\n");
printf("toy at you. The squeeze toy has the same effect as a cone rifle firing napalm,\n");
printf("and the elfbot\'s armour has no effect against your laser.\n");
for(i=0;i<2;i++)
{
if(dice_roll(1,100)<=25)
{
printf("You have been hit!\n");
hit_points-= dice_roll(1,10);
if (hit_points<=0) return new_clone(45);
}
else printf("It missed you, but not by much!\n");
if(dice_roll(1,100)<=40)
{
printf("You zapped the little bastard!\n");
robot_hp-= dice_roll(2,10);
if (robot_hp<=0)
{
printf("You wasted it! Good shooting!\n");
printf("You will need more evidence, so you search GDH7-beta further\n");
if (hit_points<10) printf("after the GDH medbot has patched you up.\n");
hit_points=10;
return 22;
}
}
else printf("Damn! You missed!\n");
};
printf("It tried to fire again, but the toy exploded and demolished it.\n");
printf("You will need more evidence, so you search GDH7-beta further\n");
if (hit_points<10) printf("after the GDH medbot has patched you up.\n");
hit_points=10;
return 22;
}
int page18(void)
2007-02-25 00:30:07 +00:00
{
printf("You walk to the centre of the hall, ogling like an infrared fresh from the\n");
printf("clone vats. Towering before you is the most unearthly thing you have ever\n");
printf("seen, a green multi armed mutant horror hulking 15 feet above your head.\n");
printf("Its skeletal body is draped with hundreds of metallic strips (probably to\n");
printf("negate the effects of some insidious mutant power), and the entire hideous\n");
printf("creature is wrapped in a thousand blinking hazard lights. It\'s times like\n");
printf("this when you wish you\'d had some training for this job. Luckily the\n");
printf("creature doesn\'t take notice of you but stands unmoving, as though waiting for\n");
printf("a summons from its dark lord, the Master Retailer.\n");
printf("WHAM, suddenly you are struck from behind.\n");
if (dice_roll(2,10)<AGILITY) return 19;
else return 20;
}
int page19(void)
2007-02-25 00:30:07 +00:00
{
printf("Quickly you regain your balance, whirl and fire your laser into the Ultraviolet\n");
printf("citizen behind you. For a moment your heart leaps to your throat, then you\n");
printf("realise that he is indeed dead and you will be the only one filing a report on\n");
printf("this incident. Besides, he was participating in this traitorous Christmas\n");
printf("shopping, as is evident from the rain of shoddy toys falling all around you.\n");
printf("Another valorous deed done in the service of The Computer!\n");
if (++killer_count>(MAXKILL-clone)) return 21;
if (read_letter==1) return 22;
return choose(34,"You search the body, keeping an eye open for Internal Security",22,"You run away like the cowardly dog you are");
}
int page20(void)
2007-02-25 00:30:07 +00:00
{
printf("Oh no! you can\'t keep your balance. You\'re falling, falling head first into\n");
printf("the Christmas beast\'s gaping maw. It\'s a valiant struggle; you think you are\n");
printf("gone when its poisonous needles dig into your flesh, but with a heroic effort\n");
printf("you jerk a string of lights free and jam the live wires into the creature\'s\n");
printf("spine. The Christmas beast topples to the ground and begins to burn, filling\n");
printf("the area with a thick acrid smoke. It takes only a moment to compose yourself,\n");
printf("and then you are ready to continue your search for the Master Retailer.\n");
return 22;
}
int page21(void)
2007-02-25 00:30:07 +00:00
{
printf("You have been wasting the leading citizens of Alpha Complex at a prodigious\n");
printf("rate. This has not gone unnoticed by the Internal Security squad at GDH7-beta.\n");
printf("Suddenly, a net of laser beams spear out of the gloomy corners of the hall,\n");
printf("chopping you into teeny, weeny bite size pieces.\n");
return new_clone(45);
}
int page22(void)
2007-02-25 00:30:07 +00:00
{
printf("You are searching Goods Distribution Hall 7-beta.\n");
switch(dice_roll(1,4))
{
case 1: return 18;
case 2: return 15;
case 3: return 18;
case 4: return 29;
}
}
int page23(void)
2007-02-25 00:30:07 +00:00
{
printf("You go to the nearest computer terminal and declare yourself a mutant.\n");
printf("\"A mutant, he\'s a mutant,\" yells a previously unnoticed infrared who had\n");
printf("been looking over your shoulder. You easily gun him down, but not before a\n");
printf("dozen more citizens take notice and aim their weapons at you.\n");
return choose(28,"You tell them that it was really only a bad joke",24,"You want to fight it out, one against twelve");
}
int page24(void)
2007-02-25 00:30:07 +00:00
{
printf("Golly, I never expected someone to pick this. I haven\'t even designed\n");
printf("the 12 citizens who are going to make a sponge out of you. Tell you what,\n");
printf("I\'ll give you a second chance.\n");
return choose(28,"You change your mind and say it was only a bad joke",25,"You REALLY want to shoot it out");
}
int page25(void)
2007-02-25 00:30:07 +00:00
{
printf("Boy, you really can\'t take a hint!\n");
printf("They\'re closing in. Their trigger fingers are twitching, they\'re about to\n");
printf("shoot. This is your last chance.\n");
return choose(28,"You tell them it was all just a bad joke",26,"You are going to shoot");
}
int page26(void)
2007-02-25 00:30:07 +00:00
{
printf("You can read the cold, sober hatred in their eyes (They really didn\'t think\n");
printf("it was funny), as they tighten the circle around you. One of them shoves a\n");
printf("blaster up your nose, but that doesn\'t hurt as much as the multi-gigawatt\n");
printf("carbonium tipped food drill in the small of your back.\n");
printf("You spend the remaining micro-seconds of your life wondering what you did wrong\n");
return new_clone(32);
}
int page27(void)
2007-02-25 00:30:07 +00:00
{
/* doesn't exist. Can't happen with computer version.
designed to catch dice cheats */
}
int page28(void)
2007-02-25 00:30:07 +00:00
{
printf("They don\'t think it\'s funny.\n");
return 26;
}
int page29(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Psst, hey citizen, come here. Pssfft,\" you hear. When you peer around\n");
printf("you can see someone\'s dim outline in the shadows. \"I got some information\n");
printf("on the Master Retailer. It\'ll only cost you 30 psst credits.\"\n");
printf("\nSelect \'a\', \'b\' or \'c\' :\n");
printf(" a - You pay the 30 credits for the info.\n");
printf(" b - You would rather threaten him for the information.\n");
printf(" c - You ignore him and walk away.\n");
switch(get_char())
{
case 'a' : return 30;
case 'b' : return 31;
case 'c' :
default : return 22;
}
}
int page30(void)
2007-02-25 00:30:07 +00:00
{
printf("You step into the shadows and offer the man a thirty credit bill. \"Just drop\n");
printf("it on the floor,\" he says. \"So you\'re looking for the Master Retailer, pssfft?\n");
printf("I\'ve seen him, he\'s a fat man in a fuzzy red and white jump suit. They say\n");
printf("he\'s a high programmer with no respect for proper security. If you want to\n");
printf("find him then pssfft step behind me and go through the door.\"\n");
printf("Behind the man is a reinforced plasteel blast door. The centre of it has been\n");
printf("buckled toward you in a manner you only saw once before when you were field\n");
printf("testing the rocket assist plasma slingshot (you found it easily portable but\n");
printf("prone to misfire). Luckily it isn\'t buckled too far for you to make out the\n");
printf("warning sign. WARNING!! Don\'t open this door or the same thing will happen to\n");
printf("you. Opening this door is a capital offense. Do not do it. Not at all. This\n");
printf("is not a joke.\n");
printf("\nSelect \'a\', \'b\' or \'c\' :\n");
printf(" a - You use your Precognition mutant power on opening the door.\n");
printf(" b - You just go through the door anyway.\n");
printf(" c - You decide it\'s too dangerous and walk away.\n");
switch(get_char())
{
case 'a' : return 56;
case 'b' : return 33;
case 'c' :
default : return 22;
}
}
int page31(void)
2007-02-25 00:30:07 +00:00
{
printf("Like any good troubleshooter you make the least expensive decision and threaten\n");
printf("him for information. With lightning like reflexes you whip out your laser and\n");
printf("stick it up his nose. \"Talk, you traitorous Christmas celebrator, or who nose\n");
printf("what will happen to you, yuk yuk,\" you pun menacingly, and then you notice\n");
printf("something is very wrong. He doesn\'t have a nose. As a matter of fact he\'s\n");
printf("made of one eighth inch cardboard and your laser is sticking through the other\n");
printf("side of his head. \"Are you going to pay?\" says his mouth speaker,\n");
printf("\"or are you going to pssfft go away stupid?\"\n");
return choose(30,"You pay the 30 credits",22,"You pssfft go away stupid");
}
int page32(void)
2007-02-25 00:30:07 +00:00
{
printf("Finally it\'s your big chance to prove that you\'re as good a troubleshooter\n");
printf("as your previous clone. You walk briskly to mission briefing and pick up your\n");
printf("previous clone\'s personal effects and notepad. After reviewing the notes you\n");
printf("know what has to be done. You catch the purple line to Goods Distribution Hall\n");
printf("7-beta and begin to search for the blast door.\n");
return 22;
}
int page33(void)
2007-02-25 00:30:07 +00:00
{
blast_door=1;
printf("You release the megabolts on the blast door, then strain against it with your\n");
printf("awesome strength. Slowly the door creaks open. You bravely leap through the\n");
printf("opening and smack your head into the barrel of a 300 mm \'ultra shock\' class\n");
printf("plasma cannon. It\'s dark in the barrel now, but just before your head got\n");
printf("stuck you can remember seeing a group of technicians anxiously watch you leap\n");
printf("into the room.\n");
if (ultra_violet==1) return 35;
else return 36;
}
int page34(void)
2007-02-25 00:30:07 +00:00
{
printf("You have found a sealed envelope on the body. You open it and read:\n");
printf("\"WARNING: Ultraviolet Clearance ONLY. DO NOT READ.\n");
printf("Memo from Chico-U-MRX4 to Harpo-U-MRX5.\n");
printf("The planned takeover of the Troubleshooter Training Course goes well, Comrade.\n");
printf("Once we have trained the unwitting bourgeois troubleshooters to work as\n");
printf("communist dupes, the overthrow of Alpha Complex will be unstoppable. My survey\n");
printf("of the complex has convinced me that no one suspects a thing; soon it will be\n");
printf("too late for them to oppose the revolution. The only thing that could possibly\n");
printf("impede the people\'s revolution would be someone alerting The Computer to our\n");
printf("plans (for instance, some enterprising Troubleshooter could tell The Computer\n");
printf("that the communists have liberated the Troubleshooter Training Course and plan\n");
printf("to use it as a jumping off point from which to undermine the stability of all\n");
printf("Alpha Complex), but as we both know, the capitalistic Troubleshooters would\n");
printf("never serve the interests of the proletariat above their own bourgeois desires.\n");
printf("P.S. I\'m doing some Christmas shopping later today. Would you like me to pick\n");
printf("you up something?\"\n");
more();
printf("When you put down the memo you are overcome by that strange deja\'vu again.\n");
printf("You see yourself talking privately with The Computer. You are telling it all\n");
printf("about the communists\' plan, and then the scene shifts and you see yourself\n");
printf("showered with awards for foiling the insidious communist plot to take over the\n");
printf("complex.\n");
read_letter=1;
return choose(46,"You rush off to the nearest computer terminal to expose the commies",22,"You wander off to look for more evidence");
}
int page35(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Oh master,\" you hear through the gun barrel, \"where have you been? It is\n");
printf("time for the great Christmas gifting ceremony. You had better hurry and get\n");
printf("the costume on or the trainee may begin to suspect.\" For the second time\n");
printf("today you are forced to wear attire not of your own choosing. They zip the\n");
printf("suit to your chin just as you hear gunfire erupt behind you.\n");
printf("\"Oh no! Who left the door open? The commies will get in. Quick, fire the\n");
printf("laser cannon or we\'re all doomed.\"\n");
printf("\"Too late you capitalist swine, the people\'s revolutionary strike force claims\n");
printf("this cannon for the proletariat\'s valiant struggle against oppression. Take\n");
printf("that, you running dog imperialist lackey. ZAP, KAPOW\"\n");
printf("Just when you think that things couldn\'t get worse, \"Aha, look what we have\n");
printf("here, the Master Retailer himself with his head caught in his own cannon. His\n");
printf("death will serve as a symbol of freedom for all Alpha Complex.\n");
printf("Fire the cannon.\"\n");
return new_clone(32);
}
int page36(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Congratulations, troubleshooter, you have successfully found the lair of the\n");
printf("Master Retailer and completed the Troubleshooter Training Course test mission,\"\n");
printf("a muffled voice tells you through the barrel. \"Once we dislodge your head\n");
printf("from the barrel of the \'Ultra Shock\' plasma cannon you can begin with the\n");
printf("training seminars, the first of which will concern the 100%% accurate\n");
printf("identification and elimination of unregistered mutants. If you have any\n");
printf("objections please voice them now.\"\n");
printf("\nSelect \'a\', \'b\' or \'c\' :\n");
printf(" a - You appreciate his courtesy and voice an objection.\n");
printf(" b - After your head is removed from the cannon, you register as a mutant.\n");
printf(" c - After your head is removed from the cannon, you go to the unregistered\n");
printf(" mutant identification and elimination seminar.\n");
switch(get_char())
{
case 'a' : return new_clone(32);
case 'b' : return 23;
case 'c' :
default : return 37;
}
}
int page37(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Come with me please, Troubleshooter,\" says the Green clearance technician\n");
printf("after he has dislodged your head from the cannon. \"You have been participating\n");
printf("in the Troubleshooter Training Course since you got off the tube car in\n");
printf("GDH7-beta,\" he explains as he leads you down a corridor. \"The entire\n");
printf("Christmas assignment was a test mission to assess your current level of\n");
printf("training. You didn\'t do so well. We\'re going to start at the beginning with\n");
printf("the other student. Ah, here we are, the mutant identification and elimination\n");
printf("lecture.\" He shows you into a vast lecture hall filled with empty seats.\n");
printf("There is only one other student here, a Troubleshooter near the front row\n");
printf("playing with his Action Troubleshooter(tm) figure. \"Find a seat and I will\n");
printf("begin,\" says the instructor.\n");
return 38;
}
int page38(void)
2007-02-25 00:30:07 +00:00
{
printf("\"I am Plato-B-PHI%d, head of mutant propaganda here at the training course.\n",plato_clone);
printf("If you have any questions about mutants please come to me. Today I will be\n");
printf("talking about mutant detection. Detecting mutants is very easy. One simply\n");
printf("watches for certain tell tale signs, such as the green scaly skin, the third\n");
printf("arm growing from the forehead, or other similar disfigurements so common with\n");
printf("their kind. There are, however, a few rare specimens that show no outward sign\n");
printf("of their treason. This has been a significant problem, so our researchers have\n");
printf("been working on a solution. I would like a volunteer to test this device,\"\n");
printf("he says, holding up a ray gun looking thing. \"It is a mutant detection ray.\n");
printf("This little button detects for mutants, and this big button stuns them once\n");
printf("they are discovered. Who would like to volunteer for a test?\"\n");
printf("The Troubleshooter down the front squirms deeper into his chair.\n");
return choose(39,"You volunteer for the test",40,"You duck behind a chair and hope the instructor doesn\'t notice you");
}
int page39(void)
2007-02-25 00:30:07 +00:00
{
printf("You bravely volunteer to test the mutant detection gun. You stand up and walk\n");
printf("down the steps to the podium, passing a very relieved Troubleshooter along the\n");
printf("way. When you reach the podium Plato-B-PHI hands you the mutant detection gun\n");
printf("and says, \"Here, aim the gun at that Troubleshooter and push the small button.\n");
printf("If you see a purple light, stun him.\" Grasping the opportunity to prove your\n");
printf("worth to The Computer, you fire the mutant detection ray at the Troubleshooter.\n");
printf("A brilliant purple nimbus instantly surrounds his body. You slip your finger\n");
printf("to the large stun button and he falls writhing to the floor.\n");
printf("\"Good shot,\" says the instructor as you hand him the mutant detection gun,\n");
printf("\"I\'ll see that you get a commendation for this. It seems you have the hang\n");
printf("of mutant detection and elimination. You can go on to the secret society\n");
printf("infiltration class. I\'ll see that the little mutie gets packaged for\n");
printf("tomorrow\'s mutant dissection class.\"\n");
return 41;
}
int page40(void)
2007-02-25 00:30:07 +00:00
{
printf("You breathe a sigh of relief as Plato-B-PHI picks on the other Troubleshooter.\n");
printf("\"You down here in the front,\" says the instructor pointing at the other\n");
printf("Troubleshooter, \"you\'ll make a good volunteer. Please step forward.\"\n");
printf("The Troubleshooter looks around with a \`who me?\' expression on his face, but\n");
printf("since he is the only one visible in the audience he figures his number is up.\n");
printf("He walks down to the podium clutching his Action Troubleshooter(tm) doll before\n");
printf("him like a weapon. \"Here,\" says Plato-B-PHI, \"take the mutant detection ray\n");
printf("and point it at the audience. If there are any mutants out there we\'ll know\n");
printf("soon enough.\" Suddenly your skin prickles with static electricity as a bright\n");
printf("purple nimbus surrounds your body. \"Ha Ha, got one,\" says the instructor.\n");
printf("\"Stun him before he gets away.\"\n");
more();
while(1)
{
if (dice_roll(1,100)<=30)
{
printf("His shot hits you. You feel numb all over.\n");
return 49;
}
else printf("His shot just missed.\n");
if (dice_roll(1,100)<=40)
{
printf("You just blew his head off. His lifeless hand drops the mutant detector ray.\n");
return 50;
}
else printf("You burnt a hole in the podium. He sights the mutant detector ray on you.\n");
}
}
int page41(void)
2007-02-25 00:30:07 +00:00
{
printf("You stumble down the hallway of the Troubleshooter Training Course looking for\n");
printf("your next class. Up ahead you see one of the instructors waving to you. When\n");
printf("you get there he shakes your hand and says, \"I am Jung-I-PSY. Welcome to the\n");
printf("secret society infiltration seminar. I hope you ...\" You don\'t catch the\n");
printf("rest of his greeting because you\'re paying too much attention to his handshake;\n");
printf("it is the strangest thing that has ever been done to your hand, sort of how it\n");
printf("would feel if you put a neuro whip in a high energy palm massage unit.\n");
printf("It doesn\'t take you long to learn what he is up to; you feel him briefly shake\n");
printf("your hand with the secret Illuminati handshake.\n");
return choose(42,"You respond with the proper Illuminati code phrase, \"Ewige Blumenkraft\"",43,"You ignore this secret society contact");
}
int page42(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Aha, so you are a member of the elitist Illuminati secret society,\" he says\n");
printf("loudly, \"that is most interesting.\" He turns to the large class already\n");
printf("seated in the auditorium and says, \"You see, class, by simply using the correct\n");
printf("hand shake you can identify the member of any secret society. Please keep your\n");
printf("weapons trained on him while I call a guard.\n");
return choose(51,"You run for it",52,"You wait for the guard");
}
int page43(void)
2007-02-25 00:30:07 +00:00
{
printf("You sit through a long lecture on how to recognise and infiltrate secret\n");
printf("societies, with an emphasis on mimicking secret handshakes. The basic theory,\n");
printf("which you realise to be sound from your Iluminati training, is that with the\n");
printf("proper handshake you can pass unnoticed in any secret society gathering.\n");
printf("What\'s more, the proper handshake will open doors faster than an \'ultra shock\'\n");
printf("plasma cannon. You are certain that with the information you learn here you\n");
printf("will easily be promoted to the next level of your Illuminati secret society.\n");
printf("The lecture continues for three hours, during which you have the opportunity\n");
printf("to practice many different handshakes. Afterwards everyone is directed to\n");
printf("attend the graduation ceremony. Before you must go you have a little time to\n");
printf("talk to The Computer about, you know, certain topics.\n");
return choose(44,"You go looking for a computer terminal",55,"You go to the graduation ceremony immediately");
}
int page44(void)
2007-02-25 00:30:07 +00:00
{
printf("You walk down to a semi-secluded part of the training course complex and\n");
printf("activate a computer terminal. \"AT YOUR SERVICE\" reads the computer screen.\n");
if (read_letter==0) return choose(23,"You register yourself as a mutant",55,"You change your mind and go to the graduation ceremony");
printf("\nSelect \'a\', \'b\' or \'c\' :\n");
printf(" a - You register yourself as a mutant.\n");
printf(" b - You want to chat about the commies.\n");
printf(" c - You change your mind and go to the graduation ceremony.\n");
switch(get_char())
{
case 'a' : return 23;
case 'b' : return 46;
case 'c' :
default : return 55;
}
}
int page45(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Hrank Hrank,\" snorts the alarm in your living quarters. Something is up.\n");
printf("You look at the monitor above the bathroom mirror and see the message you have\n");
printf("been waiting for all these years. \"ATTENTION TROUBLESHOOTER, YOU ARE BEING\n");
printf("ACTIVATED. PLEASE REPORT IMMEDIATELY TO MISSION ASSIGNMENT ROOM A17/GAMMA/LB22.\n");
printf("THANK YOU. THE COMPUTER IS YOUR FRIEND.\" When you arrive at mission\n");
printf("assignment room A17-gamma/LB22 you are given your previous clone\'s\n");
printf("remaining possessions and notebook. You puzzle through your predecessor\'s\n");
printf("cryptic notes, managing to decipher enough to lead you to the tube station and\n");
printf("the tube car to GDH7-beta.\n");
return 10;
}
int page46(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Why do you ask about the communists, Troubleshooter? It is not in the\n");
printf("interest of your continued survival to be asking about such topics,\" says\n");
printf("The Computer.\n");
return choose(53,"You insist on talking about the communists",54,"You change the subject");
}
int page47(void)
2007-02-25 00:30:07 +00:00
{
printf("The Computer orders the entire Vulture squadron to terminate the Troubleshooter\n");
printf("Training Course. Unfortunately you too are terminated for possessing\n");
printf("classified information.\n\n");
printf("Don\'t act so innocent, we both know that you are an Illuminatus which is in\n");
printf("itself an act of treason.\n\n");
printf("Don\'t look to me for sympathy.\n\n");
printf(" THE END\n");
return 0;
}
int page48(void)
2007-02-25 00:30:07 +00:00
{
printf("The tubecar shoots forward as you enter, slamming you back into a pile of\n");
printf("garbage. The front end rotates upward and you, the garbage and the garbage\n");
printf("disposal car shoot straight up out of Alpha Complex. One of the last things\n");
printf("you see is a small blue sphere slowly dwindling behind you. After you fail to\n");
printf("report in, you will be assumed dead.\n");
return new_clone(45);
}
int page49(void)
2007-02-25 00:30:07 +00:00
{
printf("The instructor drags your inert body into a specimen detainment cage.\n");
printf("\"He\'ll make a good subject for tomorrow\'s mutant dissection class,\" you hear.\n");
return new_clone(32);
}
int page50(void)
2007-02-25 00:30:07 +00:00
{
printf("You put down the other Troubleshooter, and then wisely decide to drill a few\n");
printf("holes in the instructor as well; the only good witness is a dead witness.\n");
printf("You continue with the training course.\n");
plato_clone++;
return 41;
}
int page51(void)
2007-02-25 00:30:07 +00:00
{
printf("You run for it, but you don\'t run far. Three hundred strange and exotic\n");
printf("weapons turn you into a freeze dried cloud of soot.\n");
return new_clone(32);
}
int page52(void)
2007-02-25 00:30:07 +00:00
{
printf("You wisely wait until the instructor returns with a Blue Internal Security\n");
printf("guard. The guard leads you to an Internal Security self incrimination station.\n");
return 2;
}
int page53(void)
2007-02-25 00:30:07 +00:00
{
printf("You tell The Computer about:\n");
return choose(47,"The commies who have infiltrated the Troubleshooter Training Course\n and the impending People\'s Revolution",54,"Something less dangerous");
}
int page54(void)
2007-02-25 00:30:07 +00:00
{
printf("\"Do not try to change the subject, Troubleshooter,\" says The Computer.\n");
printf("\"It is a serious crime to ask about the communists. You will be terminated\n");
printf("immediately. Thank you for your inquiry. The Computer is your friend.\"\n");
printf("Steel bars drop to your left and right, trapping you here in the hallway.\n");
printf("A spotlight beams from the computer console to brilliantly iiluminate you while\n");
printf("the speaker above your head rapidly repeats \"Traitor, Traitor, Traitor.\"\n");
printf("It doesn\'t take long for a few guards to notice your predicament and come to\n");
printf("finish you off.\n");
if (blast_door==0) return new_clone(45);
else return new_clone(32);
}
int page55(void)
2007-02-25 00:30:07 +00:00
{
printf("You and 300 other excited graduates are marched from the lecture hall and into\n");
printf("a large auditorium for the graduation exercise. The auditorium is\n");
printf("extravagantly decorated in the colours of the graduating class. Great red and\n");
printf("green plasti-paper ribbons drape from the walls, while a huge sign reading\n");
printf("\"Congratulations class of GDH7-beta-203.44/A\" hangs from the raised stage down\n");
printf("front. Once everyone finds a seat the ceremony begins. Jung-I-PSY is the\n");
printf("first to speak, \"Congratulations students, you have successfully survived the\n");
printf("Troubleshooter Training Course. It always brings me great pride to address\n");
printf("the graduating class, for I know, as I am sure you do too, that you are now\n");
printf("qualified for the most perilous missions The Computer may select for you. The\n");
printf("thanks is not owed to us of the teaching staff, but to all of you, who have\n");
printf("persevered and graduated. Good luck and die trying.\" Then the instructor\n");
printf("begins reading the names of the students who one by one walk to the front of\n");
printf("the auditorium and receive their diplomas. Soon it is your turn,\n");
printf("\"Philo-R-DMD, graduating a master of mutant identification and secret society\n");
printf("infiltration.\" You walk up and receive your diploma from Plato-B-PHI%d, then\n",plato_clone);
printf("return to your seat. There is another speech after the diplomas are handed\n");
printf("out, but it is cut short by by rapid fire laser bursts from the high spirited\n");
printf("graduating class. You are free to return to your barracks to wait, trained\n");
printf("and fully qualified, for your next mission. You also get that cherished\n");
printf("promotion from the Illuminati secret society. In a week you receive a\n");
printf("detailed Training Course bill totalling 1,523 credits.\n");
printf(" THE END\n");
return 0;
}
int page56(void)
2007-02-25 00:30:07 +00:00
{
printf("That familiar strange feeling of deja\'vu envelops you again. It is hard to\n");
printf("say, but whatever is on the other side of the door does not seem to be intended\n");
printf("for you.\n");
return choose(33,"You open the door and step through",22,"You go looking for more information");
}
int page57(void)
2007-02-25 00:30:07 +00:00
{
printf("In the centre of the room is a table and a single chair. There is an Orange\n");
printf("folder on the table top, but you can\'t make out the lettering on it.\n");
return choose(11,"You sit down and read the folder",12,"You leave the room");
}
int next_page(int this_page)
2007-02-25 00:30:07 +00:00
{
printf("\n");
switch (this_page)
{
case 0 : return 0;
case 1 : return page1();
case 2 : return page2();
case 3 : return page3();
case 4 : return page4();
case 5 : return page5();
case 6 : return page6();
case 7 : return page7();
case 8 : return page8();
case 9 : return page9();
case 10 : return page10();
case 11 : return page11();
case 12 : return page12();
case 13 : return page13();
case 14 : return page14();
case 15 : return page15();
case 16 : return page16();
case 17 : return page17();
case 18 : return page18();
case 19 : return page19();
case 20 : return page20();
case 21 : return page21();
case 22 : return page22();
case 23 : return page23();
case 24 : return page24();
case 25 : return page25();
case 26 : return page26();
case 27 : return page27();
case 28 : return page28();
case 29 : return page29();
case 30 : return page30();
case 31 : return page31();
case 32 : return page32();
case 33 : return page33();
case 34 : return page34();
case 35 : return page35();
case 36 : return page36();
case 37 : return page37();
case 38 : return page38();
case 39 : return page39();
case 40 : return page40();
case 41 : return page41();
case 42 : return page42();
case 43 : return page43();
case 44 : return page44();
case 45 : return page45();
case 46 : return page46();
case 47 : return page47();
case 48 : return page48();
case 49 : return page49();
case 50 : return page50();
case 51 : return page51();
case 52 : return page52();
case 53 : return page53();
case 54 : return page54();
case 55 : return page55();
case 56 : return page56();
case 57 : return page57();
default : break;
}
}
int main(int argc, const char* argv[])
2007-02-25 00:30:07 +00:00
{
/* srand(time(0)); */
instructions(); more();
character(); more();
while((page=next_page(page))!=0) more();
return 0;
2007-02-25 00:30:07 +00:00
}