10 rem COPYRIGHT 2002, CHRIS CHARLA. ALL RIGHTS RESERVED. THIS PROGRAM MAY BE FREELY DISTRIBUTED, PROV*DING THAT IT IS UNALTERED IN ANY WAY. 20 rem SPECIAL THANKS TO MIKE MIKA, FOR THE BASIC LESSONS AND THE PC CONVERSION. DEDICATED TO GUMPEI YOKOI. OH WAIT, THAT'S FOR GAME BOY. 100 dim rm(31,4) : dim ob(15,2) : dim l$(15,2) : dim vb$(36) : dim vt(36) 105 rem * 110 er = 0 : r = 17 : rem ER IS OLD ROOM. R IS CURRENT ROOM #. 112 sf = 1 113 al = 1 114 pa = 1 115 dt = 1 116 td = 2 117 ex = 1 118 ls = 35 119 ml = -1 120 mp = -1 121 bd = 1 122 md = 1 123 br = 1 124 gl = 1 125 ft = 1 126 lm = 1 127 ac = 1 128 cc = 1 130 for x = 1 to 31 : for y = 1 to 4 : rem *** BUILD TRAVEL TABLE *** 135 read rm(x,y) 140 next y : next x 150 for x = 1 to 15 : for y = 1 to 2 : rem *** BUILD OBJECT TABLE *** 160 read ob(x,y) 170 next y : next x 180 for z = 1 to 15 : for a = 1 to 2 : rem *** BUILD OBJECT DESCRIPTIONS ***** 185 read l$(z,a) 200 next a : next z 210 for x = 1 to 36 : rem *** BUILD VERB STRINGS FOR TOKENIZING *** 220 read vb$(x) 230 next x 240 for x = 1 to 36 : rem *** BUILD VERB TOKEN TABLE *** 250 read vt(x) 260 next x 270 goto 8500 999 rem * 1000 print : cc = cc+1 : if r = er then goto 1100 : rem IF ROOM # IS SAME AS OLD ROMM #, SKIP ROOM DESCRIPTON STUFF 1010 gosub 4000 : rem IF ROOM IS NEW, GOTO ROOM DESCRIPTION AREAR 1030 rem: OBJECT LOOP DESCRIPTION THING 1040 for x = 1 to 15 1050 if ob(x,2) = r then gosub 5200 : rem IF AN OBJECT OBJECT IS IN THE ROOM, GOTO THE OBJECT DESRIPTION AREAR 1060 next x 1100 rem * 1105 if al = 1 then print "A deafening alarm siren blares from speakers overhead." : print 1106 gosub 8150 1107 if ex = 0 then ls = ls-1 1108 if ls = 20 then td = 1 1109 if ls = 10 then td = 0 1110 if ls = 0 then goto 8100 : rem you're dead. 1111 if ml = r and mp < 0 then goto 8200 1112 if mp = r then print "Marchand is here, looking nervous." 1113 if lm < 1 then lm = lm-1 1114 if lm = -2 then goto 7600 1115 if cc = 300 then goto 2450 1200 input m$ : rem ***MAIN INPUT AREA*** 1210 print "" 1220 l = len(m$) : if l = 0 then goto 1000 1225 m1$ = "" : m2$ = "" : m2 = 0 : x = 0 : rem *** BREAKING INPUT INTO TWO WORDS 1230 for i = 1 to l 1240 a$ = mid$(m$,i,1) : a = asc(a$) : if a >= 97 and a <= 122 then a$ = chr$(a-32) 1250 if a$ <> " " then goto 1260 1255 if m2$ <> "" then goto 1300 1257 x = 1 : goto 1290 1260 if x = 0 then m1$ = m1$+a$ : goto 1290 1270 m2$ = m2$+a$ 1290 next i 1300 if m1$ = "" then print "Input, please!" : goto 1000 1306 mg$ = m1$ : ml$ = left$(m1$,3) : m1$ = ml$ : rem TRUNCATE 1307 mm$ = left$(m2$,3) 1308 m2$ = mm$ 1309 gosub 9000 : rem SYNONYMS 1317 if len(m1$) = 1 then goto 5300 1320 for x = 1 to 36 1330 if vb$(x) = m1$ then t = vt(x) : goto 1350 1340 next x 1345 print "I'm sorry, I don't know how to do that." : print "For a complete list of accepted verbs, type 'HELP.'" : goto 1000 1350 on t goto 2100,2200,2300,2500,2520,2600,2700,2800,2900,3000,3100,3200,3300,3400,3500,3600,3700,3800 2100 rem * 2105 if m1$ = "ACC" then goto 2800 2110 if m1$ = "NOR" or m2$ = "NOR" then m1$ = "N" : goto 1317 2120 if m1$ = "SOU" or m2$ = "SOU" then m1$ = "S" : goto 1317 2130 if m1$ = "EAS" or m2$ = "EAS" then m1$ = "E" : goto 1317 2140 if m1$ = "WES" or m2$ = "WES" then m1$ = "W" : goto 1317 2150 print "I'm sorry, I didn't understand. You must 'go' a direction ('GO NORTH')." 2160 print "Or, you can simply type the direction ('NORTH') or letter ('N')." 2170 goto 1000 2200 rem * 2202 if m2$ = "" then print "You mumble to yourself. Feel better?" : goto 1000 2203 if m2$ = "MAR" and mp = r then goto 2250 2204 if m2$ = "MAR" and ml = r then goto 2240 2206 if m2$ = "COR" and r = 10 then goto 2230 2208 if m2$ = "SEL" then goto 2202 2210 print "You're wasting your breath." : goto 1000 2230 print "You're a good listener, did you know that?" : goto 1000 2240 k = rnd(4) 2241 on k goto 2242,2244,2246,2248 2242 print "You attempt to reason with Marchand, convince him there's no escape." 2243 print "His reply: 'You don't scare me, Cartright.' And with that, he's gone." : goto 1000 2244 print "You tell Marchand his situation is hopeless." 2245 print "'Non, mon ami, you do not threaten me. I have nothing but hope.'" : goto 1000 2246 print "Before you can speak, Marchand makes the 'Shh!' gesture with his fingers." 2247 print "against his lips. He grins a crazy smile and rushes away." : goto 1000 2248 print "You look at him and ask 'Why?'" 2249 print "He shakes his head slightly. 'You were in Vladistan, and still you have to ask?'" : goto 1000 2250 d = rnd(4) 2251 on d goto 2260,2265,2270,2275 2260 print "You turn to him: 'Marchand, there's no way out. Defuse the bomb.'" 2261 print "He smiles. 'Ahh, mon ami, you have been in tighter situations and'" 2262 print "escaped, no? Moi aussi. I think I will wait a bit before I start" 2263 print "to believe that I am truly trapped." : goto 1000 2265 print "You thrust the gun under his chin. 'Defuse it!'" 2266 print "Marchand pushes the barrel away. 'Or what? Are you going" 2267 print "to shoot me? I deed not think so." : goto 1000 2270 print "You look at him: 'I should have killed you in Vladistan.'" 2271 print "He smirks. 'If you had had the courage to shoot me then, I wouldn't be" 2272 print "so confident now, mon ami!" : goto 1000 2275 print "You give up. 'Fine Marchand, don't disarm the bomb. We can" 2276 print "both let God finish what he started in Vladistan.'" 2277 print "He laughs. 'Mon ami, as long as there is the slightest" 2278 print "chance of escape, I will do nothing to disarm anything." : goto 1000 2299 goto 1000 2300 rem * 2305 if m2$ = "" then goto 2390 2308 if r = 14 and ob(7,2) < 0 then goto 2380 2309 if r = 14 and ob(7,2) > -1 then print "You don't find anything special." : goto 1000 2310 for x = 1 to 15 : rem first, check fer objects 2320 if m2$ = left$(l$(x,2),3) then goto 2340 2321 next x 2322 print "You don't see that thing here." : goto 1000 2340 if x = 7 and (ob(7,2) = 0 or ob(7,2) = r) then print "It's a very long series of digits written in longhand." : goto 1000 2341 if x = 3 and (ob(3,2) = 0 or ob(3,2) = r) then print "It's got instructions:" : print "'Remove backing and apply patch. Allow 24 hours for glue to set, or it may " : print "shift under certain conditions.'" : goto 1000 2342 if x = 4 and (ob(4,2) = 0 or ob(4,2) = r) then print "It's an ordinary roll of duct tape, though the brand name is 'Duck Tape.' Cute." : goto 1000 2343 if x = 5 and (ob(5,2) = 0 or ob(5,2) = r) then print "It's a modern magnetic access card. Pretty cool!" : goto 1000 2344 if x = 2 and (ob(2,2) = 0 or ob(2,2) = r) then print "This is a mean looking crowbar. Heavy duty." : goto 1000 2345 if x = 8 and r = 15 then print "The safe is a compact model." : goto 1000 2346 if x = 6 and (ob(6,2) = 0 or ob(6,2) = r) then goto 2370 2348 if x = 10 and r = 10 then print "Grim." : goto 1000 2349 if x = 11 and r = 12 then print "You study the maze of the reactor... None of the areas seem to have" : print "the same exact same pattern of exits." : goto 1000 2350 if x = 1 and (ob(1,2) = 0 or ob(1,2) = r) and pa = 1 then print "It's a standard issue radiation suit, essential for going on the reactor floor." : print "Unfortunately (for you and the previous owner) it has a bullet hole in it." : goto 1000 2351 if x = 9 and r = 5 then print "The case is locked tight." : goto 1000 2352 if x = 1 and (ob(1,2) = 0 or ob(1,2) = r) and pa = 0 then print "A patch is covering the bullet hole." : goto 1000 2354 if x = 1 and (ob(1,2) = 0 or ob(1,2) = r) and dt = 0 then print "Several layers of duct tape are securing the patch. It should hold." : goto 1000 2355 if x = 12 and r = 15 then print "It's a pretty nice photo, showing the control building and cooling tower." : goto 1000 2356 if x = 15 and r = 1 then goto 2400 2360 print "You don't see that here." : goto 1000 2365 goto 1000 2370 if br > 0 then print "It's got one bullet in it." : goto 1000 2371 print "It's empty. Marchand doesn't know that, of course..." : goto 1000 2380 print "As you look through the secretary's papers, you find a combo on a 'Post-It,'" 2381 print "which you quickly slip into your pocket." : ob(7,2) = 0 : goto 1000 2390 er = 0 : goto 1000 2400 print "The bomb is fastened securely to the main console." 2410 print "As you look at it, you are again impressed with Marchand's" 2420 print "skills. It is a masterpiece of tamper-proof explosives." 2430 print "To touch it is to detonate it." : goto 1000 2450 if bd = 0 then cc = 100 : goto 1000 2455 print "You knew you had a time limit, you just didn't know how much." 2460 print "As you hear the bomb go off, you realized you just reached it." 2465 print "You have failed." : goto 8999 2500 m1$ = "I" : goto 1317 2520 if td = 2 then print "As always, you are in top physical condition." 2540 if td = 1 then print "You feel a bit woozy; sadly, it's probably radiation sickness" 2545 if td = 0 then print "You feel really, really, sick." 2550 goto 1000 2600 rem * 2610 if m2$ = "PAT" then goto 2630 2615 if m2$ = "TAP" then goto 2650 2620 print "You don't need to put or apply that to anything." : goto 1000 2630 if ob(1,2) = 0 then print "You can't put on the patch while wearing the suit." : goto 1000 2632 if ob(1,2) = r then goto 2634 2633 print "The kit only works on a radiation suit." : goto 1000 2634 pa = 0 : print "The patch kit has a lot of instructions on it, but it's pretty simple" 2635 print "to remove the paper backing and stick it over the hole. The patch feels" 2636 print "a little loose once it's on, but maybe it's supposed to." : goto 1000 2650 if ob(1,2) = r or ob(1,2) = 0 then goto 2660 2652 print "That isn't something you can fix with duct tape, sorry." : goto 1000 2660 if pa = 0 then goto 2670 2664 print "You consider using some duct tape to patch the hole in the rad. suit, but" 2665 print "as much as you trust duct tape, in this case it seems like it might be" 2668 print "better to at least back it up with something to block the radiation." : goto 1000 2670 dt = 0 : print "You slather duct tape over the patch. That ought to hold it steady." : goto 1000 2700 rem "SHOOT/KILL" 2710 if m2$ = "MAR" and ob(6,2) <> 0 then print "You are trained in countless methods of lethal, unarmed combat." 2715 if m2$ = "MAR" and ob(6,2) <> 0 then print "but so is Marchand. Not worth it. You need an equalizer." : goto 1000 2716 if m2$ = "MAR" then goto 2730 2718 if m2$ = "COR" then print "The stress must be getting to you, Cartright." : goto 1000 2719 if m2$ = "SEL" or m2$ = "ME" then print "The coward's way out? If you insist." : goto 7900 : rem test for conditions there 2720 if m2$ = "" then print "Everyone likes a killer attitude, but please, more focus." : goto 1000 2721 if m2$ = "BOM" then goto 2755 2722 if m2$ = "GUN" then goto 2770 2723 if m2$ = "SUI" then goto 2780 2724 print "Great killer instinct. But you don't need to shoot, kill, maim, or harm that." : goto 1000 2730 if br > 0 then print "You level the gun at Marchand. Almost by itself, the gun fires." : md = 0 : goto 7700 2732 if br = 0 then print "The gun is empty. But Marchand doesn't know that. He will, of course, if" 2733 print "you try to beat him to death with it, which is basically your only" 2734 print "option at this point." : goto 1000 2750 if br = 0 then print "click" : goto 1000 2755 if br > 0 then print "Shooting a bomb you were sent to disarm. Not a good idea. " : goto 2780 2770 if br > 0 then print "The gun fires with a ferocious report!." : br = 0 : goto 1000 2772 if br = 0 then print "click" : goto 1000 2780 print "One of the reasons you rose so high in the secret agent ranks, Cartright, is " 2781 print "because you don't do things like that." : goto 1000 2800 rem "ACCESS" 2805 if m2$ = "" then print "You need to type a direction!" : goto 1000 2810 for x = 1 to 4 2820 if rm(r,x) = -1 then goto 2828 2825 next x 2827 print "There's no doorway here that requires an access card." : goto 1000 : rem trap inappropriate use 2828 if ob(5,2) <> 0 then print "You don't have an access card." : goto 1000 2830 if m2$ = "SOU" or m2$ = "S" then goto 2860 2832 if m2$ = "NOR" or m2$ = "N" then goto 2840 2833 print "There's no doorway in that direction that requires a card." : goto 1000 2840 if r = 2 then er = r : r = 1 : goto 2890 2845 if r = 7 then er = r : r = 5 : goto 2890 2850 if r = 21 then er = r : r = 10 : goto 2890 2855 if r = 22 then er = r : r = 21 : goto 2890 2860 if r = 1 then er = r : r = 2 : goto 2890 2865 if r = 5 then er = r : r = 7 : goto 2890 2870 if r = 10 then er = r : r = 21 : goto 2890 2875 if r = 21 then er = r : r = 22 : goto 2890 2890 print "You slide the access card through the reader, and move through the automatic" 2891 print "blast door as it opens. It slides shut with finality behind you." 2895 goto 1000 2900 rem * 2905 if m2$ = "ALL" then goto 2955 2910 for x = 1 to 15 2915 if m2$ = left$(l$(x,2),3) then 2930 2920 next x 2925 print "You can drop what you can't take!" : goto 1000 2930 if ob(x,2) = 0 then goto 2940 2935 print "You're not holding that!" : goto 1000 2940 rem PUT CONDITIONS FOR DROPPING HERE 2950 ob(x,2) = r : print "Dropped." : goto 1000 2955 print "You can't use the word 'ALL' with objects, sorry." : goto 1000 3000 rem "TAKE" : GOTO 1000 3005 if m2$ = "ALL" then goto 3055 3010 for x = 1 to 15 3015 if m2$ = left$(l$(x,2),3) then 3026 3020 next x 3025 print "Sorry, you can't take that." : goto 1000 3026 if ob(x,2) = -4 and r = 5 then print "The case is fastened securely to the wall." : goto 1000 3027 if ob(x,2) = -5 and r = 10 then print "Have you no respect for the dead!" : goto 1000 3028 if ob(x,2) = -3 and r = 12 then print "The blue prints are mounted securely." : goto 1000 3030 if ob(x,2) = -2 and r = 15 then print "Sorry, you can't take that." : goto 1000 3031 if ob(x,2) = -7 and r = 15 then print "Worry about art collecting later." : goto 1000 3032 if ob(x,2) = -9 and r = 1 then print "Unless you built it, you can't disarm it." : goto 1000 3033 if r = ob(x,2) then 3045 3035 if ob(x,2) = 0 then goto 3050 3040 print "You can't see any "; : print l$(x,2); : print " here." : goto 1000 3045 ob(x,2) = 0 : print "You take the "; : print l$(x,2); : print "." : goto 3060 3050 print "You're already holding it!" : goto 1000 3055 print "Sorry, you need to 'TAKE' each item individually." : goto 1000 3060 ob(x,1) = 0 3071 goto 1000 3100 rem * 3110 if m2$ = "SAF" then goto 3150 3115 if m2$ = "ALA" then goto 3160 3120 goto 1000 3150 print "Honestly, you have more pressing concerns than making the Directors" 3151 print "room look neat. Leave the safe alone, and stop the Marchand!" : goto 1000 3160 if r = 4 then goto 3161 : print "What alarm switch?" : goto 1000 3161 if al = 0 then goto 3162 : print "It's already off." : goto 1000 3162 print "You shut the alarm switch, and the siren goes mercifully silent." 3163 print "The silence is deafening at first, but soon, over the speakers you" 3164 print "hear the sound of footsteps! It's Marchand, looking for the exit!" 3165 al = 0 : goto 1000 3200 rem *** "UNLOCK" *** 3210 if m2$ = "SAF" then goto 3450 3220 if m2$ = "CAS" then goto 3250 3221 if m2$ = "LOC" then goto 3250 3223 if m2$ <> "" then goto 3225 3224 print "You need to use an object with the verb 'unlock.'" : goto 1000 3225 print "There's nothing to unlock here." : goto 1000 3250 if r = 5 then goto 3255 3252 print "You can't see a gun case here." : goto 1000 3255 if gl = 0 then print "The gun case is already open!" : goto 1000 3257 print "The gun locker is secured with a wicked deadbolt." 3260 print "You'd need a crowbar to break it open without the key." 3270 goto 1000 3300 rem * 3310 if m2$ = "CAS" and ob(2,2) = 0 then goto 3350 3315 if m2$ = "CAS" then goto 3333 3320 if m2$ = "BOM" then goto 3340 3325 if m2$ = "DOO" then goto 3335 3327 if m2$ = "SAF" then goto 3337 3329 if m2$ = "ACC" then goto 3360 3330 print "You don't need to break that." : goto 1000 3333 print "You'll need more than your bare hands to do that." : goto 1000 3335 print "The door is too well armored to be broken." : goto 1000 3337 print "The safe is too well made to yield." : goto 1000 3340 print "I'm afraid brute force isn't going to solve this one, old boy." 3342 print "If you tried to smash the bomb, you would only succeed in " 3344 print "detonating it faster." : goto 1000 3350 if gl = 0 then print "The locker is already open!" : goto 1000 3351 print "You jam the crowbar between the lock and the hinge." 3352 print "After a few whacks, the lock suddenly gives way, and" 3354 print "the gun locker door flies open, and a gun comes out." : gl = 0 3355 ob(6,2) = 5 : goto 1000 3360 goto 7400 3399 goto 1000 3400 rem * 3405 if m2$ = "ALA" then goto 3460 3410 if m2$ = "SAF" then goto 3450 3412 if m2$ = "CAS" or m2$ = "LOC" then goto 3255 3420 print "You don't need to open that." : goto 1000 3450 if ob(7,2) = 0 and r = 15 then goto 3455 : rem HAVE COMBO 3451 if r = 15 then print "The combination is so long that you need to be holding it." : goto 1000 3452 print "You don't see a safe here." : goto 1000 3453 print "it to have any hope of opening the safe." : goto 1000 3455 if sf = 0 then print "It's already open." : goto 1000 3456 print "After carefully entering the difficult combo, the safe pops open!" : 3457 ob(5,2) = r : sf = 0 : print : goto 1040 3460 print "Nothing could make you turn that alarm back on. If you survive, your" 3461 print "hearing is probably shot as it is." : goto 1000 3500 rem * 3505 if m2$ = "" then print "Brave talk, but you need to threaten someone!" : goto 1000 3508 if m2$ = "MAR" and ml <> r then print "You must find Marchand before you threaten him." : goto 1000 3510 if m2$ = "MAR" and ml = r then goto 3550 3515 if m2$ = "COR" then print "The corpse is scared stiff." : goto 1000 3516 if m2$ = "BOM" then print "Trying to scare the bomb into deactivating doesn't work." : goto 1000 3520 if m2$ = "N" or m2$ = "NOR" then goto 3560 3521 if m2$ = "S" or m2$ = "SOU" then goto 3570 3522 if m2$ = "E" or m2$ = "EAS" then goto 3580 3523 if m2$ = "W" or m2$ = "WES" then goto 3590 3540 print "Calm down. You don't need to threaten that." : goto 1000 3550 if ob(6,2) = 0 then goto 3552 3551 print "You need something to threaten Marchand with!" : goto 1000 3552 print "You level the gun at Marchand. 'Scared? You should be.'" 3553 print "Marchand looks at you. 'What do you think you will do? Kill me?" 3554 print "I doubt it.' He doesn't look as certain as he sounds." 3555 ml = -1 : mp = r : print "And he doesn't leave the room." 3556 print : print "[Note: to command Marchand to move, type 'Threaten South,' etc.]" 3557 print "[You will automatically use the access card when needed.]" : goto 1000 3560 if mp <> r then print "Marchand isn't here to threaten." : goto 1000 3561 if rm(r,1) < 0 then goto 3564 3562 if rm(r,1) > 0 then er = r : r = rm(r,1) : mp = r : print "You push Marchand ahead of you" : goto 1000 3563 print "As much as Marchand is afraid of your gun, he can't walk through a wall." : goto 1000 3564 if ob(5,2) <> 0 then print "You can't go that way without and access card." : goto 1000 3565 if r = 2 then er = r : r = 1 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3566 if r = 7 then er = r : r = 5 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3567 if r = 21 then er = r : r = 10 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3568 if r = 22 then er = r : r = 21 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3570 if mp <> r then print "Marchand isn't here to threaten." : goto 1000 3571 if rm(r,2) < 0 then goto 3574 3572 if rm(r,2) > 0 then er = r : r = rm(r,2) : mp = r : print "You push Marchand ahead of you" : goto 1000 3573 print "As much as Marchand is afraid of your gun, he can't walk through a wall." : goto 1000 3574 if ob(5,2) <> 0 then print "You can't go that way without and access card." : goto 1000 3575 if r = 1 then er = r : r = 2 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3576 if r = 5 then er = r : r = 7 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3577 if r = 10 then er = r : r = 21 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3578 if r = 21 then er = r : r = 22 : mp = r : print "You slide the access card through the slot and push Marchand through." : goto 1000 3580 if mp <> r then print "Marchand isn't here to threaten." : goto 1000 3581 if rm(r,3) <> 0 then er = r : r = rm(r,3) : mp = r : print "You push Marchand ahead of you" : goto 1000 3582 print "As much as Marchand is afraid of your gun, he can't walk through a wall." : goto 1000 3590 if mp <> r then print "Marchand isn't here to threaten." : goto 1000 3591 if rm(r,4) <> 0 then er = r : r = rm(r,4) : mp = r : print "You push Marchand ahead of you" : goto 1000 3592 print "As much as Marchand is afraid of your gun, he can't walk through a wall." : goto 1000 3600 rem "USE" 3610 print "Four Mile Island accepts the following verbs ('USE' isn't one of them):" 3612 print "Go, North, South, East, West, Talk, Read, Look, Search, Examine," 3613 print "Inventory, Health, Diagnose, Apply, Shoot, Kill, Access, Put, Drop, " 3614 print "Remove, Get, Take, Close, Unlock, Break, Pry, Smash, Help, Open," 3615 print "Threaten, and Scare." : print : goto 1000 3700 rem * 3710 home 3720 for x = 1 to 2000 : next x 3730 print "Okay, you asked for it..." 3740 input po$ 3750 home 3760 print "You are in a 3D maze of twisty little passageways, all alike." 3770 print "Exits lead in all directions." 3780 input po$ 3790 print "Just kidding..." : input po$ 3795 er = 0 : home : goto 1000 3800 if m2$ = "COR" and r = 10 then goto 3835 3802 if mw$ = "MAR" and ml = r then print "He's got a beard! Gross!" : goto 1000 3805 print "What would your betrothed, Carrie Shepherd, think if she knew you," 3810 print "Drake Cartright, master spy, resorted to profanity as soon as" 3820 print "things got tough? Pull yourself together, man!" 3830 goto 1000 3835 print "No one is around but Marchand, and he won't tell... At last, a " 3836 print "chance to live out your deepest fantasy..." 3837 print "*****PARSER INTERUPT!*****" 3838 print "[I'm sorry; I don't care what the designer or you the player]" 3839 print "[have in mind, but I have standards, and you just exceeded them]" 3840 print "[You sick weirdo.]" 3841 print "*--[[Adventure Simulation Aborted]]--*" 3842 goto 8999 3999 goto 8999 4000 if r > 25 then goto 4020 4010 on r goto 4040,4045,4050,4055,4060,4065,4070,4075,4080,4085,4090,4095,4100,4105,4110,4115,4120,4125,4130,4135,4140,4145,4150,4155,4160 4020 g = r : g = g-25 4026 on g goto 4165,4170,4175,4180,4185,4190 4040 print "REACTOR CONTROL" 4041 print "The main control area for the entire plant. If something goes wrong here, like" 4042 print "the bomb on the console going off, say, a melt-down -- and the deaths of " 4043 print "thousands -- is inevitable. " : goto 4340 4045 print "OUTSIDE CONTROL "; : gosub 4240 4046 print "You are in the hallway outside the sealed door to the plant control room." : goto 4340 4050 print "REACTOR CORRIDOR WEST "; : gosub 4240 4051 print "This is an east-west hallway. South is the break room. Blood spatters the walls." : goto 4340 4055 print "FACILITY CONTROL "; : gosub 4240 4056 print "This is where the security of the facility is monitored. A gunfight took place" : print "A gunfight took place here: monitors are shot up. The threat board is all red." 4057 print "The main alarm switch is set to "; 4058 if al = 1 then print "'open.'" : goto 4340 4059 if al = 0 then print "'closed.'" : goto 4340 4060 print "SECURITY "; : gosub 4240 4062 print "This is the main security office. A gun case is mounted on the wall." : goto 4340 4065 print "CENTRAL CORRIDOR "; : gosub 4240 4067 print "This well worn corridor is the center path through the nuclear plant." : goto 4340 4070 print "JUNCTION "; : gosub 4240 4072 print "This is a four way junction. To the east is the entrance to the reactor." : print "To the south, Admin." : goto 4340 4075 print "REACTOR CORRIDOR E "; : gosub 4240 4076 print "This is the east end of a long hallway. Bullet holes pock the walls." : goto 4340 4080 print "REACTOR VESTIBULE "; : gosub 4240 4081 print "To the south lies the reactor." : goto 4340 4085 print "OUTSIDE AIRLOCK "; : gosub 4240 4086 print "The odor of death is here. One of Marchand's victims is here, "; 4087 if ob(1,1) = 1 then print "still clad in a" : print "radiation suit that's been pierced by a bullet." : goto 4340 4088 if ob(1,1) = 0 then print : print "although the suit is gone, the bullet hole remains." : goto 4340 4090 print "ADMIN RECEPTION "; : gosub 4240 4091 print "Abandoned in a hurry, this office is a mess." : goto 4340 4095 print "SPARE OFFICE "; : gosub 4240 4096 print "This spare office has some blue prints in it." : goto 4340 4100 print "OUTER OFFICE "; : gosub 4240 4101 print "A fairly dull office." : goto 4340 4105 print "SECRETARY'S OFFICE "; : gosub 4240 4106 print "This is the office of the Director's secretary. It is covered in tiny" 4107 print "slips of paper, including those new 'Post-It' notes." : goto 4340 4110 print "DIRECTOR'S OFFICE "; : gosub 4240 4111 print "This is the office of the Director of the Plant. A safe, which is "; 4112 if sf = 0 then goto 4114 4113 print "locked, is " : print "behind an ornate desk. An aerial photo of the plant dominates the south wall." : goto 4340 4114 print "open, is " : print "behind an ornate desk. An aerial photo of the plant dominates the south wall." : goto 4340 4115 print "TUNNEL NORTH "; : gosub 4240 4116 print "Well, this is it. As soon as you go north through the hole, they're going to" 4117 print "weld it shut behind you." : goto 4340 4120 print "TUNNEL SOUTH "; : gosub 4240 4121 print "The access tunnel leads north." : goto 4340 4125 print "CLOSET "; : gosub 4240 4126 print "Yep, it's a closet all right." : goto 4340 4130 print "BREAK ROOM "; : gosub 4240 4131 print "This is where plant employees hang out on break." : goto 4340 4135 print "BATHROOM "; : gosub 4240 4136 print "This is the restroom." : goto 4340 4140 print "AIRLOCK "; : gosub 4240 4141 print "This is the airlock. To the south lies the radioactive air" 4142 print "of the reactor complex." : goto 4340 4145 print "REACTOR FLOOR "; : gosub 4240 4146 print "The radiation is high in here. To the north is the air lock." 4147 if ft = 1 then ft = 0 : gosub 7100 4148 goto 4340 4150 print "REACTOR "; : gosub 4240 4151 print "It's like a maze in here." : goto 4340 4155 print "REACTOR "; : gosub 4240 4156 print "It's like a maze in here." : goto 4340 4160 print "REACTOR "; : gosub 4240 4161 print "It's like a maze in here." : goto 4340 4165 print "OUTSIDE STORAGE "; : gosub 4240 4166 print "To the south is a storage closet." : goto 4340 4170 print "REACTOR "; : gosub 4240 4171 print "It's like a maze in here." : goto 4340 4175 print "REACTOR "; : gosub 4240 4176 print "It's like a maze in here." : goto 4340 4180 print "REACTOR "; : gosub 4240 4181 print "It's like a maze in here." : goto 4340 4185 print "REACTOR "; : gosub 4240 4186 print "It's like a maze in here." : goto 4340 4190 print "STORAGE LOCKER "; : gosub 4240 4191 print "Not used much, but they put it here anyway." : goto 4340 4240 print "Exits: "; 4250 if rm(r,1) <> 0 then print "N "; 4260 if rm(r,2) <> 0 then print "S "; 4270 if rm(r,3) <> 0 then print "E "; 4280 if rm(r,4) <> 0 then print "W "; 4300 print : return 4340 print : er = r : return 5000 print : print 5200 rem ** OBJECT DESCRIPTION ROUTINE 5210 for x = 1 to 15 5220 if ob(x,2) = r and ob(x,1) = 1 then print l$(x,1) 5230 if ob(x,2) = r and ob(x,1) = 0 then print "You see a ";l$(x,2) 5240 next x 5250 return 5300 rem ** SINGLE LETTER INPUTS! ** 5310 if m1$ = "I" then goto 5420 5320 if m1$ = "L" then er = 0 : goto 1000 5322 rem ******DIRECTION INFO FOLLOWS******* 5325 if m1$ = "N" then goto 5345 5330 if m1$ = "S" then goto 5355 5335 if m1$ = "E" then goto 5365 5340 if m1$ = "W" then goto 5375 5341 print "I'M SORRY, BUT YOUR INPUT WASN'T UNDERSTOOD." : goto 1000 5345 if rm(r,1) < 1 then b = 1 : goto 5385 : rem **GOING NORTH 5353 er = r : r = rm(er,1) : goto 1000 5355 if rm(r,2) < 1 then b = 2 : goto 5385 : rem **GOING SOUTH 5363 er = r : r = rm(er,2) : goto 1000 5365 if rm(r,3) < 1 then b = 3 : goto 5385 : rem **GOING EAST 5373 er = r : r = rm(er,3) : goto 1000 5375 if rm(r,4) < 1 then b = 4 : goto 5385 : rem **GOING WEST 5383 er = r : r = rm(er,4) : goto 1000 5385 if rm(r,b) < 0 then goto 5388 5387 goto 5399 5388 print "You need to be holding an access card to go that way." 5389 print "The correct syntax to move through an access card door." 5390 print "is 'ACCESS NORTH,' etc." : goto 1000 5399 j = rnd(5) 5400 if j = 0 then print "You can't go that way." : goto 1000 5402 if j = 1 then print "That's not an exit" : goto 1000 5404 if j = 2 then print "Despite your best efforts, you fail to find an exit that way." : goto 1000 5406 if j = 3 then print "Nope, pick another direction." : goto 1000 5408 if j = 4 then print "You can't go that way." : goto 1000 5420 rem ** INVENTORY ** 5425 print "You are holding the following:" : b = 0 5430 for x = 1 to 15 5440 if ob(x,2) = 0 then print "A ";l$(x,2) : b = b+1 5450 next x 5460 if b = 0 then print "NOTHING." 5470 goto 1000 7000 print : print 7100 print : rem rad suit hijinx 7105 if ob(1,2) <> 0 then goto 7140 7110 if dt = 0 then print "The duct tape and patch holds! You shouldn't have much exposure." : return 7120 if pa = 0 and dt = 1 then ex = 0 : print "As you move along in the suit, the patch shifts and comes off!" 7130 print "Your guts tingle as you almost feel the radiation exposure happen." 7131 print "If only you'd read the instructions! Well, you're a dead man walking," 7132 print "but you may still be able to finish the mission before you expire..." : return 7140 ex = 0 : print "Entering the reactor floor without a rad suit on is a death sentence!" 7142 print "But you may still be able to finish the mission before you expire..." : return 7400 if ac = 0 then print "It's already broken!" : goto 1000 7410 print "You snap the card in half with a decisive crunch." : ob(5,2) = -1 7420 if r = 1 and mp = 1 then goto 7430 7425 goto 1000 7430 print : print "Marchand gasps! 'You fool! You've killed us! Without that card there" 7431 print "is no way out.' He bursts into a pallid sweat and begins pacing," 7432 print "muttering to himself. 'Marchand has never failed... Marchand CAN'T" 7433 print "fail...' After a few moments he holds his head in his hand and sobs." 7434 print : print "He looks up at you and says quietly, 'there is no way out for me. Or" 7435 print "you.' He shakes his head, gets up, and walks over to the bomb. After a" 7436 print "few moments of working over the controls he steps back and falls into" 7437 print "chair in front of a console. 'You win,' he says simply, and sighs." 7438 bd = 0 : print "You inspect the bomb. The timer has stopped. It's over. You" 7439 print "signal Ops with your transponder, and moments later you can hear" 7440 print "the sound of troops blow-torching through the door." : lm = 0 : goto 1000 7600 if md = 0 then goto 7670 7610 print "Troops rush in and grab Marchand. He looks once at you with an odd" 7615 print "expression before they drag him away. The Commander, who doesn't look" 7617 print "as though he's broken a sweat during the whole ordeal, walks over. 'Nice" 7620 print "Op, Cartright.' You consider his words, and think of uttering some" 7625 print "cutting remark. But on balance, you decide, he's right. It was a nice" 7630 print "op. You've save the state, saved the country from the horror of nuclear" 7632 print "attack, and done it all with style." 7636 print : print : print "You win." 7638 print "[type 'afterword' for a short afterword, or anything else to quit.]" 7639 input u$ 7640 if u$ = "afterword" then goto 7642 7641 goto 8999 7642 print "Just in case you didn't realize it, this game was created in 2002. It " : print "is a faux-historical game, created largely because I love classic " 7643 print "adventure games (bad parsers and all) and classic magazines." 7644 print "In case you're wondering, most of the 'backstory' is true -- all the" 7645 print "locations, magazines, even the people. There was no Antic Apple II " 7646 print "magazine, but Antic, Mac Home Journal, Wired, even the Sega Master" 7647 print "System are all real. Just for the record, this game is copyright 2002" 7648 print "by Chris Charla. It is a work of fiction. Any use of real names or" 7649 print "locations was done purely to enhance the verisimilitude of the fiction" 7650 print "and shouldn't be construed in any way, by anyone, as an endorsement" 7651 print "of this game, or whatever, by those people, magazines, darkrooms or " 7652 print "videogame systems. Thanks to Mike Mika, Carrie Shepherd and Oscar " 7653 print "Charla." : goto 8999 7670 print "Troops rush in. They stop, almost disappointed, when they see his" 7671 print "lifeless body on the floor. The Commander, who doesn't look as" 7677 print "though he's broken a sweat during the whole ordeal, walks over. 'Nice" 7678 print "Op, Cartright.' You consider his words, and think of uttering some" 7679 print "cutting remark. But on balance, you decide, he's right. It was a nice" 7680 print "op. You've save the state, saved the country from the horror of nuclear" 7681 print "attack, and done it all with style." 7682 print : print : print "You win." 7683 print "[type 'afterword' for a short afterword, or anything else to quit.]" 7684 input u$ 7685 if u$ = "afterword" then goto 7642 7686 goto 8999 7700 rem ****marchand is shot!**** rem test for bomb disarmed... 7710 if bd = 0 then 7730 7712 print "An agent needs to never lose his cool. You just did. Now there's" 7713 print "a bomb set to go off that will kill tens of thousands, and your failure," 7714 print "your anger, prevented you from stopping it. Marchand is dead, but" 7715 print "it's meaningless -- one death among thousands. You have failed" 7716 print "humanity. Your only regret is that you don't have another bullet" 7717 print "in the gun for yourself." : goto 8999 7730 print "Now that it's over, sweat is pouring down your face. You wonder" 7733 print "what would have become of him. A trial? Too risky. No, it's likely that" 7734 print "Marchand would've spilled his guts and disappeared into some kind of " 7735 print "protection program. Not fair. Not after this. There was Vladistan," 7736 print "but this was different. This required real justice. You look at " 7737 print "Marchand one last time, as he lays bleeding on the floor. He looks" 7738 print "in your eyes and nods slightly. It's better this way, for both of you." 7739 mp = -10 : goto 1000 7900 rem ****end of game for suicide**** 7910 if bd = 0 then goto 7920 7915 print "Maybe Marchand is right. Maybe there's no point. Who cares about the bomb." 7917 print "Who cares about anything?" : goto 8999 7920 print "Vladistan. Marchant was right about one thing. It never left. But unlike" 7922 print "Marchand, you still had a job to do. Now that was over, and the bomb " 7924 print "defused, and it was time to take one more sick monster out of the world." 7925 print "You." : goto 8999 8100 rem ****end of game for radiation exposure**** 8110 if bd = 0 then goto 8130 8120 print "Despite your best efforts, the radiation overcomes you..." 8122 print "Your last thoughts are that your fate today will soon" 8124 print "befall tens of thousands of your countrymen. You have failed." 8125 goto 8149 8130 print "As the radiation overcomes you and you collapse, you take" 8131 print "solace in knowing that you've at least finished the mission" 8132 print "and saved tens of thousands from the painful death you" 8133 print "are now experiencing..." 8149 goto 8999 8150 rem ***ou est marchand?*** 8152 x = rnd(15) 8153 x = x+1 8154 if x = 1 or x = 5 or x = 4 or x = 16 or x = 17 then goto 8152 8155 ml = x 8198 return 8199 rem 8200 rem 8202 rem if ob(6,2) = 0 then goto 8300 8204 print "Marchand enters the room!" 8206 x = rnd(6) 8208 on x goto 8210,8215,8220,8225,8230,8235 8210 print "He leers at you. 'You think you have trapped me, no? I assure you," 8211 print "I have no intention of dying here. I vill find my out, while you stay here to" 8212 print "disarm zee bomb. Which you will not do, by zee way.'" : goto 8240 8215 print "Marchand smirks. 'When zee bomb goes off, this facility will be destroyed." 8216 print "At zat point, no matter what you do, zee reactor will be headed for zee" 8217 print "how do you say -- critical point? I will be safely away.'" : goto 8240 8220 print "He doesn't seem entirely confident at first. 'There are many agents" 8221 print "guarding zee ways out.' He brightens. 'But Marchand has never been captured!" 8222 print "My mission will be a success. The facility will be destroyed, and I will not.'" : goto 8240 8225 print "He looks at you. 'Vhy are you steel here, mon ami? Perhaps I shall follow" 8226 print "you out. I think you have no more desire to die than I?" : goto 8240 8230 print "He holds up a shattered access card. 'I have a confession to make. Even if I" 8231 print "wanted to disarm zee bomb, I couldn't. A guard, now dead, of course, saw to" 8232 print "that. No, ze lonely bomb will sit in ze control room until it's time to blow.'" : goto 8240 8235 print "Marchand checks his watch. 'How long, how long... Enough for me, but not enough" 8236 print "for you!" : goto 8240 8240 print : x = rnd(5) 8248 on x goto 8250,8255,8260,8265,8270,8275 8250 print "If only you had some way to threaten Marchand, to get him to move where you" 8251 print "wanted him to. But you don't. Yet..." : print : goto 1200 8255 print "You consider lunging for Marchand, but no... the chance he could win a physical" 8256 print "encounter, however small, is too much. You need a decisive victory." : print : goto 1200 8260 print "There will be time to deal with Marchand when the time is right. You turn away." : print : goto 1200 8265 print "You ponder Marchand. In Vladistan, you were allies. What happened to the man to" 8266 print "turn him to nuclear blackmail? No, not blackmail... simple terrorism." : print : goto 1200 8270 print "You can't take it, and throw at punch at Marchand. He dives out of the way with" 8271 print "the speed of a man who has spent years in training." : print : goto 1200 8275 print "You know there's no way out for Marchand. But you consider... this may be the end" 8276 print "of the line for both of you. And for half the state." : print : goto 1200 8277 goto 1200 8300 rem *****marchand location with player has gun 8499 goto 1000 8500 home : print "As you get ready for the mission, the Commander briefs you one last time." 8502 print "'Cartright, we know it's Marchand in there. He's no suicide, he wants to'" 8504 print "come out. But we've got him bottled up like a rat. Your job is simple." 8506 print "Disarm the bomb. Or convince Marchand to do it for you." 8507 print "Either way, we both know Marchand is one of the top agents in the world." 8508 print "We can't take the chance that he'd be able to disarm you, or escape the way" 8510 print "you came in. So we're welding you in, and sending you in unarmed." 8512 print "See if you can talk to Marchand. You two have a history, right?' You think" 8514 print "of Vladistan. History is putting it mildly. '...and if that doesn't " 8516 print "work, try threatening him. I don't have to tell you just how many lives are" 8518 print "riding on this, do I? I don't have to explain what will happen if a bomb" 8520 print "goes off in the control room of this plant, do I?'" 8522 print "No, he doesn't, but of course he does anyway. 'Thousands dead. Tens of " 8524 print "thousands. Vast areas of land unusable for thousands of years. End of the " 8526 print "world stuff here. That's what we're dealing with, end of the world stuff.'" 8528 print "No, you're not. You're dealing with Marchand. You look at the Commander and" 8530 print "nod, then head towards the tunnel..." : goto 1000 8999 print : print "Game over." : end 9000 rem *****NOUN SYNONYMS 9005 if m2$ = "KIT" then m2$ = "PAT" 9010 if m2$ = "BAR" then m2$ = "CRO" 9020 if m2$ = "DUC" then m2$ = "TAP" 9030 if m2$ = "CAR" then m2$ = "ACC" 9040 if m2$ = "SWI" then m2$ = "ALA" 9050 if m2$ = "BOD" then m2$ = "COR" 9060 if m2$ = "PRI" then m2$ = "BLU" 9070 if m2$ = "KIT" then m2$ = "PAT" 9071 if m2$ = "ME" then m2$ = "SEL" 9072 if m2$ = "LOC" then m2$ = "CAS" 9073 if m2$ = "PIC" then m2$ = "PHO" 9080 return 9999 end 10000 data 0,-1,0,0,-1,0,3,0,0,19,6,2,0,0,5,0,0,-1,0,4,0,0,7,3,-1,11,8,6,0,0,9,7,0,10,0,8,9,-1,0,0 10010 data 7,13,0,0,0,15,13,0,11,14,0,12,13,0,0,15,12,0,14,0,6,17,0,0,16,0,0,0,0,0,19,0,3,20,0,18,19,0,0,0 10020 data -1,-1,0,0,-1,25,0,0,0,27,24,26,0,0,25,23,22,28,0,24,0,31,0,23,24,29,29,23,25,30,0,0,27,27,30,0,28,0,0,29,26,0,0,0 : rem END OF TRAVEL TABLE 10030 data 1,10,1,31,1,5,1,16,1,-1,1,-1,0,-1,1,-2,1,-4,1,-5,1,-3,1,-7,1,-1,1,-1,1,-9 10040 data "Worn by a corpse is a holed radiation suit.","SUIT","This disused closet is empty, except for an old CROWBAR in the back.","CROWBAR","On a desk is a rad suit PATCH kit.","PATCH","A roll of DUCT TAPE hangs here from a, well, a duct.","TAPE" 10050 data "An ACCESS CARD, fallen from the safe, lies on the floor.","ACCESS CARD","A gun is lying on the floor here.","GUN","initial description of COMBINATION","COMBINATION","initial description of SAFE","SAFE" 10060 data "initial description of CASE","CASE","initial description of CORPSE","CORPSE","initial description of GUFFIN3","BLUE PRINTS","initial description of GUFFIN4","PHOTO" 10070 data "initial description of GUFFIN5","GUFFIN5","initial description of GUFFIN6","GUFFIN6","initial description of GUFFIN7","BOMB" 10140 data "GO","NOR","SOU","EAS","WES","TAL","REA","LOO","EXA","SEA","INV","HEA","DIA","APP","SHO","KIL" 10150 data "ACC","PUT","DRO","REM","GET","TAK","CLO","UNL","BRE","PRY","SMA","HEL","OPE","THR","SCA","USE","XYZ","FUC","SHI","PIS" 10160 data 1,1,1,1,1,2,3,3,3,3,4,5,5,6,7,7,8,6,9,9,10,10,11,12,13,13,13,16,14,15,15,16,17,18,18,18