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 ***
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 ""
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
$ = "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
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.'"
71 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
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
fortunately (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
s 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
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."
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
hen 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
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
hen 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
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
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
ar 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"
o 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."
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
: 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
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,"
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]"
nt "[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
s 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
"; : 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"
ng 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
es 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
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)
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
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."
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"
ing 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."
or 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 "
ogame 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"
at 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
d 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)
153 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!"
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
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."
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.'"
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
,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"
C","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