10 REM COPYRIGHT 2000, 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.
30 REM Hi Carrie, Hi Oscar!
100 DIM RM(51,4) : DIM OB(23,2) : DIM L$(23,2) : DIM VB$(36) : DIM VT(36)
110 ER = 0 : R = 4 : REM ER IS OLD ROOM. R IS CURRENT ROOM #.
115 mt = 1 
116 tb = 1 
117 dd = 4 
118 CC = 0 
119 vu = 1 
120 ci = 1 
121 fu = 5 
122 td = 1 
123 pd = 1 
124 cb = 1 
125 jo = 1 
126 vi = 1 
127 si = 1 
128 mf = 0 
130 FOR X = 1 TO 51 : FOR Y = 1 TO 4 
135 READ RM(X,Y)
140 NEXT Y : NEXT X
150 FOR X = 1 TO 23 : FOR Y = 1 TO 2 
160 READ OB(X,Y)
170 NEXT Y : NEXT X
180 FOR Z = 1 TO 23 : FOR A = 1 TO 2 
185 READ L$(Z,A)
200 NEXT A : NEXT Z
210 FOR X = 1 TO 36 : 
220 READ VB$(X)
230 NEXT X
240 FOR X = 1 TO 36 :
250 READ VT(X)
260 NEXT X
1000 cc = cc + 1 : IF R = ER THEN GOTO 1100 : 
1005 if er = 51 and r = 7 then goto 8010
1010 GOSUB 4000 : 
1030 REM: 
1040 FOR X = 1 TO 23
1050 IF OB(X,2) = R THEN GOSUB 5200 
1060 NEXT X
1100 REM 
1101 IF CC = W1 THEN GOTO 5000
1102 IF CC = 3 THEN GOTO 5010
1103 IF CC = W2 THEN GOTO 5020
1104 if cc = w3 then goto 5030
1105 if cc = w4 then goto 5040
1106 if cc = w5 then goto 5050 
1107 if fu < 5 then fu = fu - 1
1108 if fu = 0 then goto 3570 : rem blow shit up.
1109 if ob(1,2) = 0 and ry = 0 and r > 6 then goto 7000
1110 if mf = 1 then goto 7020
1111 if mf = 5 then goto 7020
1112 if mf = 9 then goto 7020
1113 if mf > 0 and r > 8 then goto 7030
1114 if mf > 0 and ob(1,2) = 100 then goto 7060
1115 if mf > 0 then mf = mf + 1
1200 INPUT M$ 
1210 ? ""
1220 L = LEN(M$) : IF L = 0 THEN GOTO 1000
1225 M1$ = "" : M2$ = "" : M2 = 0 : X = 0 
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$
1307 ML$ = LEFT$(M1$,3) 
1308 M1$ = ML$
1312 MM$ = LEFT$(M2$,3)
1314 M2$ = MM$
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 ? "I'm sorry, I don't know how to "; MG$ : 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 
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 ? "I'm sorry, I didn't understand. You must 'go' a direction ('GO NORTH')."
2160 ? "Or, you can simply type the direction ('NORTH') or letter ('N')."
2170 GOTO 1000
2200 ta = 0
2202 if m2$ = "" then print "You mumble to yourself. Feel better?" : goto 1000
2206 if R > 8 THEN ? "There's no one to talk to in here." : goto 1000
2207 if m2$ = "WAI" or m2$ = "CAT" then goto 2280
2209 if m2$ = "GUE" then goto 2270
2210 if m2$ = "COP" or m2$ = "POL" then ? "You like to live dangerously, but you don't have a death wish!" : GOTO 1000
2211 if m2$ = "MAR" or m2$ = "DAV" or m2$ = "SPY" then ta = 5
2220 if ta = 5 and r = 7 and mt = 1 then goto 2290
2222 if ta = 5 and r = 7 and mt = 0 then ? "Marchant looks away. 'Remember our deal, Cartright.'" : goto 1000
2224 if ta = 5 and r <> 7 then ? "Marchant isn't here." : goto 1000
2230 ? "I don't understand who you want to talk to." : goto 1000
2270 x = 0 : x = rnd (3)
2272 if x = 0 then ? "'Isn't it exciting!' says a woman from the English embassy."
2273 if x = 1 then ? "'Why are you speaking to me?' asks a suspicious Vladistani."
2274 if x = 2 then ? "'Someone will pay for this outrage.' mutters a Morolian diplomat."
2276 goto 1000
2280 if OB(1,2) <> 0 then goto 2286
2281 if r < 4 or R > 5 then goto 2287 
2282 ? "Unless you want one of them to recognize you as an imposter and go to the"
2283 ? "police, you should probably steer clear of your fellow waiters. Anyway they"
2284 ? "might find that tux you have on under your waiter's uniform a little weird."
2285 goto 1000
2286 ? "It's not polite for guests to talk to the help in Vladistan." : goto 1000
2287 print "There are no waiters around here." : goto 1000
2290 ? "Marchant looks at you. 'Cartright. I thought zat was you in zee waiter outfeet."
2291 ? "I suspect we have been sent here on similar errands by our superiors. "
2292 ? "And now I suspect zat zis bomb threat may be your doing, no? It eez troubling.'"
2293 ? "He pauses for a moment then turns to you. 'For one of us to accompleesh his "
2294 ? "mission, the other must fail. I am thus tempted to turn you in. No doubt you 
2295 ? "may be theenking the same thing. So I propose a truce of sorts. I will keep my"
2296 ? "mouth shut about you, and you do zee same for me. Of course, like all bargins"
2297 ? "in zees business, I cannot make any guarentees about the duration of our deal."
2298 mt = 0 : goto 1000
2300 if m2$ = "" then goto 2390
2310 for x = 1 to 23 : rem first, check fer objects
2320 if m2$ = left$(l$(x,2),3) then goto 2340
2330 next x
2335 ? "You don't see anything special." : goto 1000
2340 if x = 10 then goto 2380
2342 if x = 15 or x = 17 then goto 2378
2345 if x = 16 then goto 2382
2350 if x = 21 then goto 2384
2351 if x = 20 then goto 2385
2355 if x = 2 then goto 2386
2356 if x = 8 then goto 2365
2360 ? "It's just an ordinary "; : ? l$(x,2);:?".":goto 1000
2365 if vi = 0 and si = 1 then print "There is some vinegar in the jar and "; : goto 2376
2366 if vi = 1 and si = 0 then print "There is some vinegar in the jar and "; : goto 2376
2367 if vi = 1 and si = 1 then print "The jar is empty, and "; : goto 2376
2368 if vi = 0 and si = 0 and jo = 0 then print "The jar is open, and filled with a bubbling solution." : goto 1000
2369 if vi = 0 and si = 0 and jo = 1 then print "The jar is closed, but there is bubbling inside." : goto 1000
2376 if jo = 1 then print "the jar is closed." : goto 1000
2377 if jo = 0 then print "the jar is open." : goto 1000
2378 ? "It looks like ordinary cleanser of Eastern European design -- "
2379 ? "meaning it looks rough and kind of gray." : goto 1000
2380 ? "The note is in French. It says: Marchant, the Slava is the plastique."
2381 ? "Good luck, Yves." : goto 1000
2382 ? "At first it looked like cleanser, but on closer examination, it"
2383 ? "actually bears a closer resemblance to modeling clay." : goto 1000
2384 ? "These are the plans to the XJ-39 nuclear device!" : ? "They are printed on special, waxy, paper." : goto 1000
2385 ? "It's a top secret Morolian codebook." : goto 1000
2386 ? "It's loaded." : goto 1000
2390 er = 0 : goto 1000
2500 M1$ = "I" : GOTO 1317
2520 rem
2530 if td = 1 then print "As always, you are in top physical condition."
2540 if td = 0 then print "You're a little shaken from the blast, but otherwise you feel fine."
2550 goto 1000
2600 if ob(5,2) = 0 then goto 2620
2615 ? "You need a knife before you can cut anything!" : goto 1000
2620 if r = 16 then goto 2650
2630 if r = 51 then goto 2670
2640 if r = 19 then goto 2648
2642 ? "You can't cut anything here." : goto 1000
2648 ? "Cutting the wires is pointless -- you need to really disable the transmitter." : goto 1000
2650 ? "You cut the ropes holding the dumbwaiter up and it plunges down!" : ?""
2660 r = 50 : goto 1000
2670 if ob(19,2) = 0 then goto 3374
2680 if ob(19,2) <> 0 then goto 3373
2700 IF M2$ = "COP" OR M2$ = "POLICE" THEN GOTO 2750
2720 IF M2$ = "ME" OR M2$ = "SEL" THEN GOTO 2760
2730 if m1$ = "sho" then goto 2740
2735 ? "You are a spy, not an assassin. Killing is not the way you do business." : goto 1000
2740 if ob(2,2) = 0 then goto 2742
2741 ? "You need a gun or rifle to shoot!" : goto 1000
2742 ? "The rifle misfires! The bullets must be 100 years old." : goto 1000
2750 if ci = 0 then goto 2752
2751 ? "You can't see anyone to shoot!" : goto 1000
2752 print "Before you can react, the Vladistani officer delivers a well"
2753 ? "placed bullet to your kneecap, and you go down hard." : goto 5052 
2760 if ci = 0 then goto 2765
2761 ? :? "As you crack the cyanide pill in your tooth, you muse: the mission"
2762 ? "is a failure, the XJ-39 is as good as in the Red's hands, but at"
2763 ? "least you won't be around to see the Soviets take over..." : goto 8000
2765 ? :? "As you crack the cyanide pill in your tooth, you muse: the mission"
2766 ? "is a failure, but at least the Vladistanis won't get the satisfaction"
2767 ? "of tossing you to one of their meaty torturers. Your secrets die with you." : goto 8000
2800 if ob(22,2) = 0 then goto 2815
2810 print "You don't have a shovel!" : goto 1000
2815 if r = 46 then goto 2840
2817 IF R = 45 THEN GOTO 2876
2820 if r < 50 and r > 37 then print "You dig a little into the dirt floor, but it fails to accomplish much here."
2825 if r < 38 then print "You need dirt to dig in." 
2830 Goto 1000 
2840 ? "You dig out some dirt from the soft cellar floor just under the" : ?"massive vault door." :?: dd = dd -1 
2850 if dd = 3 then print "There is now a little hole under the massive door." : goto 1000
2855 if dd = 2 then print "The hole under the door is getting much bigger now." : goto 1000
2857 if dd = 1 then print "The hole under the door is almost big enough to crawl through!" : goto 1000
2860 if dd = 0 then print "The hole under the door is big enough to crawl through! "
2865 if dd = 0 then goto 2875
2867 if dd = -1 then print "Any more digging and you could collapse the hole!" : GOTO 1000
2869 if dd = -2 then print "The hole under the door collapses!" : dd = 5 : rm(46,1) = 0 : goto 1000
2870 GOTO 1000
2875 RM(46,1) = 45 : GOTO 1000
2876 ? "You dug under the door, now don't try to get cute." : goto 1000
2900 IF M2$ = "ALL" THEN GOTO 2955
2910 FOR X = 1 TO 23
2915 IF M2$ = LEFT$(L$(X,2),3) THEN 2930
2920 NEXT X
2925 ? "You can drop what you can't take!" : goto 1000
2930 if OB(X,2) = 0 THEN 2945
2940 ? "You aren't holding that!" : goto 1000
2945 if X = 1 THEN GOTO 2960
2946 if X = 16 and r = 33 then goto 2970
2947 if X = 13 and r = 33 and ob(16,2) = 33 then 2972
2948 if jo = 0 and ob(8,2) = 0 and x = 7 then goto 2980
2949 if jo = 0 and ob(8,2) = 0 and x = 6 then goto 2985
2950 OB(X,2) = R : ? "Dropped." : goto 1000
2960 OB(1,2) = 100 : ? "You stash the jacket behind some bushes, revealing your tux."
2965 ? "Now you're ready to mingle with the guests!" : goto 1000
2970 ob(16,2) = 33 : ? "You pull the Slava out of the box and mold it into one of the"
2971 ? "support beams of the radio tower." : goto 1000
2972 ob(13,2) = 33 : ? "You insert the blasting cap into the plastique, with the fuse"
2973 ? "sticking out, ready to light." : goto 1000
2980 ob(7,2) = 100 : vi = 0 : ? "You drop the vinegar into the open jar." : goto 1000
2985 ob(6,2) = 100 : si = 0 : ? "You drop the baking soda into the open jar." : goto 1000
3000 if m2$ = "ALL" then goto 3055
3010 FOR X = 1 TO 23
3015 IF M2$ = LEFT$(L$(X,2),3) THEN 3030
3020 NEXT X
3025 ? "Sorry, you can't take that." : GOTO 1000
3030 IF R = OB(X,2) THEN 3045
3035 IF OB(X,2) = 0 THEN GOTO 3050
3040 ? "You can't see the "; : ? l$(x,2); : ? " here." : goto 1000
3045 OB(X,2) = 0 : ? "You take the ";:? l$(x,2);:?".": goto 3060
3050 PRINT "You're already holding it!" : goto 1000
3055 ? "Sorry, you need to 'TAKE' each item individually." : goto 1000
3060 OB(X,1) = 0
3065 IF X = 9 THEN  ? "As you pick up the coat you notice a handwritten message on a slip"; : goto 3085
3070 IF X = 12 THEN goto 3072
3071 goto 1000
3072 ? "You grab the attache case and open it, to reveal, along with a copy of"
3075 ? "Le Monde, which you discard, a small blasting cap with a length of fuse"
3080 ? "coming from one end." : OB(13,2) = 0 : GOTO 1000
3085 ?" of paper in an inner pocket." : OB(10,2) = 0 : goto 1000
3100 if m2$ = "JAR" then goto 3150
3120 if r = 11 then goto 3140
3140 ? "You gently close the French door you came in." : goto 1000
3150 if ob(8,2) = 0 then goto 3153
3151 if ob(8,2) = r then goto 3153
3152 ? "You can't see any jar here." : goto 1000
3153 if jo = 1 then goto 3170
3160 jo = 1 : ? "You close the jar tightly." : goto 1000
3170 ? "The jar is already closed!" : goto 1000
3200 IF R = 13 THEN GOTO 3230
3220 IF R = 14 OR R = 46 THEN GOTO 3229
3221 IF R = 51 THEN GOTO 3228
3222 ? "There's nothing to unlock here." : goto 1000
3228 ? "You don't have a key for the iron padlock." : goto 1000
3229 ? "You haven't got the combination." : goto 1000
3230 if ob(14,2) = 0 then goto 3240
3235 ? "You haven't got the key!" : goto 1000
3240 ? "You unlock the cloak room with the key."
3250 rm(13,2) = 15 : goto 1000
3300 if m2$ = "JAR" then goto 3340
3302 if r = 46 then goto 3320
3303 if m2$ = "PAD" or m2$ = "LOC" or m2$ = "DOO" then goto 3370
3304 if m2$ = "WIR" then goto 3322
3305 if m2$ = "TOW" or M2$ = "RAD" then goto 3324
3310 ? "You can't break anything here." : goto 1000
3320 ? "The blast door withstands your best efforts." : goto 1000
3322 ? "You snap the wires, but you can't be sure they are the ONLY wires..." : goto 1000
3324 if r = 33 then goto 3325 : ? "You can't see that here." : goto 1000
3325 ? "You'll need more than brute strength to take down the radio tower." : goto 1000
3340 if ob(8,2) = 0 then goto 3350
3341 if ob(8,2) = r then goto 3350
3342 ? "You can't see the jar here." : goto 1000
3350 if vi = 0 and si = 0 and jo = 1 then goto 3360
3351 if vi = 0 and si = 0 and jo = 0 then goto 3357
3352 if vi = 0 and si = 1 then goto 3355
3353 if vi = 1 and si = 0 then goto 3355
3354 ? "You smash the jar. It doesn't make as loud a noise as you'd expect." : ob(8,2) = 100 : goto 1000
3355 ? "You smash the jar, spilling its contents." : ob(8,2) = 100 : goto 1000
3357 ? "You smash the open jar, spilling its contents. The soda and vinegar foams"
3358 ? "for a while on the floor." : ob(8,2) = 100 : goto 1000
3360 ? "You smash the closed jar on the floor. The stored up gasses make a"
3361 ? "surprisingly loud POP! A moment later, your wrist radio buzzes."
3362 ? "'I don't know what you did in there,' says K, 'but they picked it"
3363 ? "up on their listening devices, and they now seem convinced that there's"
3364 ? "some kind of explosive activity going on in there. I think the"
3365 ? "authorities will stay out for the time being.'" : ob(8,2) = 100 : vu = 0 : goto 1000
3370 if r = 51 then goto 3372
3371 ? "Despite your best efforts, you fail." : goto 1000
3372 if ob(19,2) = 0 then goto 3374
3373 ? "You don't have the right tool to do that!" : goto 1000
3374 ? "You snap off the old padlock." : rm(51,3) = 7 : goto 1000
3400 if m2$ = "JAR" then goto 3450
3420 if m2$ = "DOO" then goto 3430
3425 if m2$ = "SLA" or m2$ = "SUD" or m2$ = "STA" then goto 3440
3430 ? "The door doesn't budge." : goto 1000
3440 ? "You open the box, look inside, then close it again." : goto 1000
3450 if ob(8,2) = 0 then goto 3455
3451 if ob(8,2) = r then goto 3455
3452 ? "What jar?" : goto 1000
3455 if jo = 0 then goto 3470
3460 jo = 0 : ? "You open the jar." : goto 1000
3470 ? "The jar is already open!" : goto 1000 
3500 if m2$ = "FUS" or m2$= "BLA" or m2$ = "CAP" then goto 3545
3502 IF R = 41 THEN GOTO 3514
3503 if ob(11,2) <> 0 then goto 3512 
3504 for x = 1 to 23 : if m2$ = left$(l$(x,2),3) then goto 3507 
3505 next x
3506 ? "You can't burn that." : goto 1000
3507 if x = 21 then goto 3510
3508 if x = 16 then goto 3511
3509 ? " There's no point in burning the "; : ?l$(x,2);:?"." : goto 1000
3510 print "The plans are printed on some kind of flame retardant paper." :?"You'll need more heat to destroy them." : goto 1000
3511 ? "The matches are ineffective on the plastique. You need to find": ? "something with more power." : goto 1000
3512 ? "You don't have anything to burn anything with!" : goto 1000
3514 for x = 1 to 23 
3515 if m2$ = left$(l$(x,2),3) then goto 3518
3516 next x
3517 ? "You can't burn that here." : goto 1000
3518 if x = 16 then goto 3523 
3519 if x = 21 then goto 3528 
3520 if x = 20 then goto 3530
3521 ? "You toss the "; : ?l$(x,2); :?" in the furnace, where it is consumed."
3522 ob(x,2) = 100 : goto 1000
3523 ? : ? "The next thing to go through your mind after you toss the Slava into"
3524 ? "the furnace is the furnace door itself. The Slava was actually plastique,"
3525 ? "and you are dead."
3526 if pd = 0 then print "At least the plans are destroyed, so your mission wasn't a total failure."
3527 GOTO 8000
3528 ? "You toss the plans in the furnace with gusto. Let's see the Ruskies try to" : ? "rebuild the plans from the ashes! The XJ-39 remains American technology!"
3529 ? "Your primary mission is complete. Now to escape with your life..."  : ob(21,2) = 100 : pd = 0 : goto 1000
3530 ? "The code book burns quickly. You'd never have gotten it past Marchant, anyway." : ob(20,2) = 100 : cb = 0 : goto 1000
3545 if ob(13,2) = r or ob(13,2) = 0 then goto 3551
3546 ? "You don't have the blasting cap!" : goto 1000
3551 if ob(11,2) <> 0 then ? "You haven't got any matches!" : goto 1000
3552 ? "You light the fuse on the end of the blasting cap. " : fu = 4 : goto 1000
3570 ? :? "You hear the pop of the blasting cap going off!" 
3571 if ob(16,2) = ob(13,2) then goto 3575
3572 ob(13,2) = 100 : goto 1000
3575 ? "The blasting cap sets off the plastique!"
3576 if ob(16,2) <> 0 then 3578
3577 ? : ? "Unfortunately, you were holding the plastique. You gaze for a moment at" :  ? "the fountain of blood shooting from your wrists before everything goes black." : goto 8000
3578 if ob(16,2) = 33 then goto 3583
3579 if ob(16,2) = r then goto 3596
3580 ob(13,2) = 100 : ob(16,2) = 100 : vu = 0 : ? "That ought to convince them there was a reason for the bomb threat!"
3581 ? : ? "*** Your radio crackles. 'We heard the explosion, but the tower is still there."
3582 ? "We better hope the plans weren't ready for transfer..." : goto 1000
3583 if r = 33 then goto 3590
3584 ? "A moment after the main blast, you hear the satisfying sound of"
3585 ? "transmission tower falling." : vu = 0 : ob(13,2) = 100 : ob(16,2) = 100 : td = 0
3586 ? : ? "*** Your radio crackles. 'Nice work, Cartright.'" : goto 1000
3590 ?:? "As you fly through the air towards the ground, after being blown"
3591 ? "off the roof by the blast, it occurs to you that there may have been"
3592 ? "safer places to stand after you lit the fuse. Really, though, falling"
3593 ? "two stories is the least of your problems. Getting away from the cops"
3594 ? "with your legs blown off will be a much bigger challenge..." : goto 8000
3596 ?:? "The blast sounds especially loud because you're in the same room as it!" : ? "Blinded and disorientated by the flash, you don't even"
3597 ?"notice the fountain of blood shooting from your neck.":?"You just get very, very sleepy..." : goto 8000
3600 ? "Sorry, you can't use the word USE. An accepted verb list follows:"
3611 ? "Go, North, South, East, West, Talk, Read, Look, Search, Examine,"
3612 ? "Inventory, Health, Diagnose, Cut, Shoot, Kill, Dig, Put, Drop, "
3613 ? "Remove, Get, Take, Close, Unlock, Break, Pry, Smash, Bend, Open,"
3614 ? "Light, Burn, and Use (well, sorta)." : goto 1000
3700 home
3720 for x = 1 to 2000 : next x
3730 ? "Okay, you asked for it..."
3740 input po$
3750 home
3760 ? "You are in a maze of twisty little passageways, all alike."
3770 ? "Exits lead in all directions."
3780 input po$
3790 ? "Just kidding..." : input po$
3795 er = 0 : home : goto 1000
3800 ? "What would your betrothed, Carrie Shepherd, think if she knew you,"
3810 ? "Drake Cartright, master spy, resorted to profanity as soon as"
3820 ? "things got tough? Pull yourself together, man!"
3830 goto 1000
3999 END
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, 4195, 4200, 4205, 4210, 4215, 4220, 4225, 4230, 4235, 4240, 4245, 4250, 4255, 4260, 4265, 4270, 4275, 4280, 4285, 4290
4040 ? "You are on the front lawn of the house, just east of the driveway.          " : goto 4340
4045 ? "This is the front of the Morolian Ambassador's mansion. To your north is"
4046 ? "the front door." : GOTO 4340
4050 ? "You are standing on the front lawn of the estate, just west of the driveway."
4051 ? "Several guests are here, waiting for the valets to bring their cars.": GOTO 4340
4055 ? "The back service lot. Nervous caterers mill around, exchanging gossip about"
4056 ? "the bomb threat. Police are questioning some of them, but your skills and"
4057 ? "your waiter jacket let you mingle with the help without being singled out." : GOTO 4340
4060 ? "You are in the backyard. You can see into the Game Room from here, but you'd"
4061 ? "need a ladder to get in from this spot. South of here, you can see."
4062 ? "guests chatting in their finery -- a far cry from your waiter's jacket." : GOTO 4340
4065 ? "The backyard. To your west is the back service lot. Tittering guests have" 
4066 ? "congregated here. The bomb threat and heavy police response has made this THE"
4067 ? "event of Vladistan's bleak social season." : GOTO 4340
4070 ? "The heaviest concentration of guests and police are here, east of the house." : ? "Most of the guests are diplomats, but one your recognize: Davide Marchant, with"
4071 ? "the French Intelligence service. He must be here on an op of his own." :        ? "Possibly he's after the XJ-39 plans too. The front lawn is south, but to the "
4072 ? "east, there appear to be a set of doors that lead to the cellar. Not wanting" : ? "to be recognized by Marchant, it's tough to look too closely." : GOTO 4340
4075 ? "Here, west of the house, only a few guests are gathered. You spy an open"
4076 ? "French door leading to the ball room. This may be your big chance.": GOTO 4340
4080 ? "This is the Parlor and Smoking Room. Hunting trophies and traditional"
4081 ? "Morolian hunting horns adorn the walls, and the air is still heavy with"
4082 ? "cigar and pipe smoke.": GOTO 4340
4085 ? "The grand foyer of the mansion is well named -- twenty foot ceilings and a "
4086 ? "grand chandelier make this one of the more brilliant rooms in all of"
4087 ? "Vladistan. A majestic double staircase to the north leads up, and to the "
4088 ? "east and west are the living and ball rooms respectively." : GOTO 4340 
4090 ? "The grand ballroom. The game room is north, a service hall east, and "
4091 ? "the main foyer is south." : IF W0 = 1 THEN GOTO 4092 : GOTO 4340 
4092 W0 = 0 : W1 = CC + 5 : GOTO 4340
4095 ? "The game room. Morolian games tend to run to blood sports, but a pool."
4096 ? "table has been installed in a nod to local sensibilities. ": GOTO 4340
4100 ? "This is the service hall. The kitchen is north, and the cloakroom is south" : GOTO 4340
4105 ? "The kitchen is rarely used. An old dumbwaiter is north and stairs to the"
4106 ? "cellar are east." : GOTO 4340
4110 ? "This is the cloak room. The only exit is north. ": GOTO 4340
4115 ? "With great effort you squeeze yourself into the dumbwaiter. The controls are "
4116 ? "outside, but here inside you can see the ropes that actually move the platform.": GOTO 4340
4120 ? "North Hall. North, stairs lead down. The hallways continues south, and doors"
4121 ? "lead east and west." : GOTO 4340
4125 ? "The ambassador's wife's bedroom. It is surprisingly austere." : GOTO 4340
4130 ? "The ambassador's office. Wires lead from a typewriter-like machine north out"
4131 ? "a set of French doors here to a roof deck.": GOTO 4340
4135 ? "After the opulence of the downstairs, this hallway is almost austere." 
4136 ? "There are exits in all directions." : goto 4340
4140 ? "This east/west hallway is distinguished by a framed print of Morolian"
4141 ? "shepherds.": goto 4340
4145 ? "This west end of the hall features a framed print of Oscar D'Agistino, a"
4146 ? "scientist of Morolian-Italian descent who worked with Fermi.": goto 4340
4150  ? "The only bathroom upstairs. A small linen closet is south.": goto 4340
4155  ? "The south hall features a print of the pride of Morolian"
4156  ? "industrial accomplishment: a coal-fired power plant.": goto 4340
4160  ? "This guest room is coated in dust.": goto 4340
4165  ? "The Ambassador's bedroom. It's decorated in gaudy gold lame and"
4166  ? "red velvet.": goto 4340
4170  ? "The servants' quarters. This military style barracks features"
4171 ? "narrow cots. A closet is south.": goto 4340
4175  ? "This is a dusty closet.": goto 4340
4180  ? "Linen closet.": goto 4340
4185  ? "A faint odor of urine hangs in the air of this unused bedroom.": goto 4340
4190  ? "The sitting room is decorated with cross-stitched renditions of Morolia's"
4191  ? "national foods, including blood dumplings and steaming mare's milk.": goto 4340
4195  ? "This is a small roof deck. To the west is the radio tower.": goto 4340
4200  ? "You are at the base of a tall radio tower (you can probably see to" 
4201  ?  "Moscow from the top, you think grimly).": goto 4340
4205  ? "The other main entertainment room, the living room is decorate with"
4206  ? "gold velvet couches and rugs of Morolian yak fur, died royal purple.": goto 4340
4210  ? "This magnificent walk in closet is packed with gilded uniforms of the"
4211  ? "Morolian Foreign Service.": goto 4340
4215  ? "Tiny closet.": goto 4340
4220  ? "As bleak as its description, this closet is.": goto 4340
4225  ? "This old cellar room is filled with cobwebs.": goto 4340
4230  ? "The western end of the cellar hallway.": goto 4340
4235  ? "Apparently this is an interrogation room (or else the Ambassador's pretty kinky)."
4236  ? "Various implements of torture that you thought went out with the Plague litter"
4237  ? "the room, including a rack.": goto 4340
4240  ? "This room is dominated by a massive black furnace: a gaping hole in the side"
4241  ? "reveals white hot flames.": goto 4340
4245  ? "The hallway goes east and west here, and a passage heads north.": goto 4340
4250  ? "You're in a dirt-floored north/south hallway.": goto 4340
4255  ? "This was probably the kitchen storeroom at one time, judging from the"
4256  ? "old orange crates and what not littering the floor. A door in the west"
4257  ? "wall probably used to lead up, but it is firmly boarded shut.": goto 4340
4260  ? "A high-tech warren of East German VAX clones, the hum of air conditioning"
4261 ?  "and massive reel to reel tape drives makes it hard to even think in here."
4262  ? "Clearly, this is where the bulk of the espionage happens in Vladistan." : goto 4340
4265  ? "The hall continues east and west from here. An imposing door lies north.": goto 4340
4270  ? "This dirt floored room is entirely empty.": goto 4340
4275  ? "This room is filled with garbage of every imaginable kind.": goto 4340
4280  ? "Given its contents, you could probably (if you were feeling charitable)"
4281  ? "call this room 'garden storage,' but you'd probably be just as accurate"
4282  ? "calling it 'more garbage' or 'dingy cellar room.'": goto 4340
4285  ? "You are crammed into the dumbwaiter, which is wedged into the bottom"
4286  ? "of its shaft. One lone cut rope swings piteously." : goto 4340
4290  ? "You are on some sloping stairs that lead to the lawn. Doors close"
4291  ? "above your head.": goto 4340
4340 ER = R : RETURN
5000 if vu = 0 then goto 1000
5001 ?:?"***Your one-way wrist radio crackles to life. It's K, with a message:"
5002   ?"Cartright, the bomb scare won't hold the police back very "
5003   ?"long. You need to make a boom in there, even if its a small  "
5004   ?"one, to keep them outside.***" : w2 = cc + 10 : goto 1000
5010 ?:?"***Your one-way wrist radio crackles to life. It's K, with a message:"
5011   ?"Cartright, we've received word that a French agent may be on the
5012   ?"premises. We don't know why he's there. Avoid him or talk to him":?"at your discretion, but remember, ";
5013   ?"when it comes to nuclear secrets,":?"we have no allies.***" : goto 1000
5020 ?:?"***Your one-way wrist radio crackles to life. It's K, with a message:"
5021   ?"'We may have an opportunity to kill two birds with one stone here."
5022   ?"Now that you're in, see if you can destroy the radio tower on the "
5023   ?"roof. Good luck.'*** " : w3 = cc + 40
5024   ?:?"A moment later the radio crackles again. 'Cartright, K. Bit of a"
5025   ?"wrinkle for you. It appears the tower there is a reverse packet."
5026   ?"radio transmitter. The XJ-39 data may be waiting for the Russians to"
5027   ?"call in. You must, I repeat MUST, bring that radio tower down! K out.'":goto 1000
5030   if vu = 0 then goto 1000
5031 ?:?"***Your one-way wrist radio crackles to life. 'Cartright!,' barks"
5032   ?"K, 'the cops haven't detected a blast and they're about to come in!"
5033   ?"GET OUT! But if you can't, make sure you are not taken alive."
5034   w4 = cc + 3 goto 1000
5040   if vu = 0 then goto 1000
5041  ?:?"***Your wrist radio crackles to life, but you don't need to listen"
5042   ?"to know what K is about to say -- you can hear the cops coming"
5043   ?"into the building. It's only a matter of time before they get you."
5044   ci = 0 : w5 = cc + 3 : goto 1000
5050   ?:?"Uh-oh. You are face to face with two of Vladistan's finest, joined"
5051   ?"by a very angry looking Morolian Marine."
5052   ?"Images of a rat-infested prison cell and all the torture you can"
5053   ?"stand rush to your head."
5054   ?"Of course the agency will deny all knowledge of your actions. As "
5055   ?"far as they're concerned, what you're about to get is probably just"
5056   ?"punishment for not killing yourself as soon as you realized the cops"
5057   ?"were inside. As they drag you away, you wonder how long you can hold"
5058   ?"before they break you..." : goto 8000
5200 FOR X = 1 TO 23
5220 IF OB(X,2) = R AND OB(X,1) = 1 then ? l$(x,1)
5230 IF OB(X,2) = R AND OB(x,1) = 0 then ? "You see a "; l$(x,2)
5240 NEXT X
5250 RETURN
5300 IF M1$ = "I" THEN GOTO 5420
5320 IF M1$ = "L" THEN ER = 0 : goto 1000
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 ? "I'M SORRY, BUT YOUR INPUT WASN'T UNDERSTOOD." : goto 1000
5345 IF RM(R,1) < 1 THEN  B = 1 : GOTO 5385 
5353 ER = R : R = RM(ER,1) : goto 1000
5355 IF RM(R,2) < 1 THEN B = 2 : GOTO 5385 
5363 ER = R : R = RM(ER,2) : goto 1000
5365 IF RM(R,3) < 1 THEN B = 3 : GOTO 5385 
5373 ER = R : R = RM(ER,3) : goto 1000
5375 IF RM(R,4) < 1 THEN B = 4 : GOTO 5385 
5383 ER = R : R = RM(ER,4) : goto 1000
5385 FOR X = 1 TO 4                     
5387 IF RM(R,X) = -1 AND B = X THEN PRINT  "There're too many people around to sneak in that way.": goto 1000
5388 IF RM(R,X) = -2 AND B = X  THEN PRINT "You could go out that way, but you'd probably be (unfortunately but correctly)" : ?"shot as a spy.": goto 1000
5389 IF RM(R,X) = -3 AND B = X THEN PRINT  "The door between the cellar and kitchen is locked tight." : GOTO 1000
5390 IF RM(R,X) = -4 AND B = X  THEN PRINT "Impossible. You'd be too conspicuous, and the doors are locked on the inside." : goto 1000
5391 IF RM(R,X) = -5 AND B = X  THEN PRINT "You scramble up the dusty shoot, but it is cemented over at the top. " : goto 1000 
5392 IF RM(R,X) = -6 AND B = X  THEN PRINT "The door to the cloak room is locked." : goto 1000
5393 IF RM(R,X) = -7 AND B = X  THEN PRINT "That's the way you got in, but there's too many people there now to go out." : goto 1000 
5394 IF RM(R,X) = -8 AND B = X  THEN PRINT "The door to the north is sealed shut with a massive vaulted blast door." : ? "It looks strong enough to defeat even your safe cracking skills." : goto 1000
5395 IF RM(R,X) = -9 AND B = X  THEN PRINT "The cellar doors are sealed with a strong iron padlock." : goto 1000
5396 NEXT X
5399 FOR X = 1 TO 4 : IF RM(R,X) = 0 THEN 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
5410 NEXT X
5420 REM *
5425 ? "You are holding the following:" : b = 0
5430 FOR X = 1 TO 23
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 ?:? "'Why is that waiter mingling with the guests?' you hear a suspicious"
7010 ? "voice say behind you." : mf = mf + 1 : ry = 1 : goto 1000
7020 ?:? "You notice a man following you." : mf = mf + 1 : goto 1000
7030 ?:? "Just as you step inside the hose, the man who's been following you"
7040 ? "signals to some police, who quickly surround you and haul you off for"
7050 ? "questioning..." : goto 8000
7060 ?:? "After stashing the waiter's jacket and revealing your tux, you slip"
7070 ? "away from your tail and melt into the crowd." : mf = 0 : goto 1000
8000 ? : ? "Game over." : end
8010 ? : ?               
8020 ? : ? "You burst through the celler doors, directly into a crowd of guests."
8030     ? "Among them is Marchant. 'Ahh, Cartright,' he says, as he turns to his left,"
8040     ? "indicating rapidly approaching men in uniform. 'I zink your mission ees at an"
8050     ? "end, one way or another.'"
8060 if ob(21,2) = 0 then eg1 = 1 
8070 if ob(21,2) <> 0 and pd = 1 then eg1 = 2
8080 if pd = 0 then eg1 = 3
8090 if td = 1 then eg2 = 1
8100 if td = 0 then eg2 = 0
8110 if ob(20,2) = 0 then eg3 = 1 
8120 if ob(20,2) <> 0 and cb = 1 then eg3 = 2
8130 if cb = 0 then eg3 = 3
8135 if eg1 = 1 then ?
8140 if eg1 = 1 then ? "He reaches inside your tux. 'I will take thees,' he says as he grabs the plans."
8145 if eg1 = 1 then ? "He looks briefly at the plans. 'Thees is not the codebook I was sent to steal,'"
8147 if eg1 = 1 then ? "he says. He looks up at you. 'But I think it may be even more valuable, no?'"
8149 if eg1 = 2 then ?
8150 if eg1 = 2 then ? "He looks at you. 'I see from your eyes that you did not find what you came for.'"
8155 if eg1 = 3 then ?
8160 if eg1 = 3 then ? "He pauses. 'You have the look of a man who has completed his mission. It is a"
8170 if eg1 = 3 then ? "look only one in our line of work could see.'"
8175 if eg3 = 1 then ?
8180 if eg3 = 1 then ? "He eyes you briefly, then reaches over and snatches the small Morolian codebook"
8190 if eg3 = 1 then ? "out of your pants pocket. 'The codebook! Wonderful! Cartright,' he beams, 'you"
8200 if eg3 = 1 then ? "have done my mission for me! Merci,' he says as he tucks it away in his coat."
8205 if eg3 = 2 then ?
8210 if eg3 = 2 then ? "Marchant looks at you and frowns. 'You didn't get it did you? Damnit,"
8220 if eg3 = 2 then ? "Cartright. After zis show you put on tonight, how will I get inzide to get zat "
8230 if eg3 = 2 then ? "codebook now, eh? You, my friend, have made my life tres difficile ce soir.'"
8240 if eg3 = 2 then ? "He sighs. 'Ah well, you must do your job just as I must do mine, no?'"
8242 if eg3 = 3 then ?
8245 if eg3 = 3 then ? "He grabs you. 'The codebook, you deedn't destroy it, did you.' You nod."
8250 if eg3 = 3 then ? "Marchant winces. 'My my mission... blown.' He sighs and pulls himself together."
8260 if eg3 = 3 then ? "'Ahh well. Zat is the way, sometimes, the game ends up, eh?'"
8270 input x$
8280 ?: ? "Before you can do anything, the police are upon you. As they reach for you,"
8290 ? "Marchant steps forward. 'Do not touch him,' he says in perfect Vladistani."
8300 ? "'This man is with me. He has the full protection of France, and should be"
8310 ? "treated as a dipolat, with full immunity. Come with me, mon ami,' he says to"
8320 ? "you, and takes you by the arm. As you walk away from the mansion, he leans in."
8330 ? "'You owe me one,' he says."
8340 if td = 1 then ? "'Merci,' you say 'I just wish I had destroyed the tower...'"
8350 ?:?:?"FINIS."
9999 END
10000 DATA 7,0,0,2,-1,0,1,3,8,0,2,0,0,-1,6,5,0,8,4,0,0,7,0,4,6,1,-4,0,5,3,11,0,-2,34,-2,-2,17,-2,34,11
10010 DATA 12,10,13,-7,-2,11,-2,-2,14,-6,34,11,16,13,-3,0,13,0,0,0,0,14,0,0,10,20,19,18,0,0,17,0,32,0,0,17,17,24,21,22
10020 DATA 0,26,27,20,31,30,20,0,0,29,24,0,20,0,25,23,0,36,0,24,21,35,0,0,0,28,0,21,27,0,0,0,23,0,0,0,22,37,0,0
10030 DATA 0,22,0,0,0,19,0,33,0,0,32,0,9,10,-2,13,26,0,0,0,25,0,0,0,30,0,0,0,0,39,0,0,38,40,42,0,39,0,0,0
10040 DATA 42,-5,0,0,43,41,46,39,50,42,0,44,0,0,43,-3,0,46,0,0,-8,47,48,42,46,0,0,0,49,0,51,46,0,48,0,0,0,43,0,0,0,0,-9,48
10050 DATA 0,0,1,12,1,12,1,12,1,12,1,14,1,14,1,14,1,9,0,100,1,9,1,15,0,100,1,28,1,29,1,29,1,29,1,38,1,38,1,45,1,45,1,49,1,49
10060 DATA "WAITER'S JACKET","JACKET","On the wall is an antique hunting rifle.","RIFLE","On the pool table sits an ivory ball.","BALL"
10070 DATA "A pool cue sits on the floor where it was hastily dropped.", "POOL CUE", "In a special case rests a Morolian hunting knife.","KNIFE"
10080 DATA "A box of soda is on the floor.", "SODA", "A bottle of vinegar is on the counter.", "VINEGAR", "A small mason jar is on the stove.", "JAR"
10085 data "A well made coat is draped across a chair here.", "COAT"
10090 DATA "MESSAGE", "MESSAGE", "A book of matches sits in an ashtray.", "MATCHES", "An case with the initials DM on it catches your attention.", "CASE"
10100 DATA "BLASTING CAP", "BLASTING CAP", "In the dust of the servants's closet you notice a key.", "KEY", "A box of Sudski sits on the floor.", "SUDSKI", "A box of Slava soap sits on the floor.", "SLAVA"
10110 DATA "An unused bottle of StalinClean (Russia's #1 soap) rests here.", "STALINCLEAN", "A crowbar rusts in the corner.", "CROWBAR", "Bolt cutters hang from a hook in the ceiling."
10120 DATA "BOLTCUTTER", "A Morolian Codebook sits unguarded by the console.", "CODEBOOK", "There! Atop a manila folder lie the plans for the XJ-39!"
10130 DATA "PLANS", "A well used gardening shovel sits in the corner.", "SHOVEL", "A broken rake lies on the floor.", "RAKE"
10140 DATA "GO", "NOR", "SOU", "EAS", "WES", "TAL", "REA", "LOO", "EXA", "SEA", "INV", "HEA", "DIA", "CUT", "SHO", "KIL"
10150 DATA "DIG", "PUT", "DRO", "REM", "GET", "TAK", "CLO", "UNL", "BRE", "PRY", "SMA", "BEN", "OPE", "LIG", "BUR", "USE", "XYZ", "FUC", "SHI", "PIS"
10160 DATA 1,1,1,1,1,2,3,3,3,3,4,5,5,6,7,7,8,9,9,9,10,10,11,12,13,13,13,13,14,15,15,16,17, 18, 18, 18

