10 REM STTR6.ECB === LAST MOD. 12-15-79 (UTS700) R.E.H. 20 DIM D(2),E(2),J(2),O(30),Y(4),Z(4),R$(12) 40 DEF FNM(A,B)=A-B*INT(A/B) 50 DEF FND(B)=INT(ABS(B/89.9999)) 60 DEF FNX(B)=3.1415926*ABS(90-ABS(B))/180 170 PRINT "&K&J&J" 180 PRINT TAB(24);"S T T R 6" 190 PRINT ,"* * * S T A R - T R E K * * *&J&J&J" 200 DATA " ALL "," DEAD","ENTERPRISE"," FIRING"," KLINGON " 210 DATA " PHASERS"," PHOTON"," SHIELD #"," TORPEDOES" 220 DATA " PROBE LAUNCHER"," MGM." 230 READ A$,D$,E$,F$,K$,P$,H$,S$,T$,R$,M$ 240 FOR X=1 TO 2: LET D(X)=0: LET E(X)=0: NEXT X 250 FOR X=1 TO 4: LET Y(X)=100: LET Z(X)=100: NEXT X 270 LET V=50*(RND(0)-.5) 280 LET T1=0: LET C3=0 290 PRINT TAB(11);"(2 player ENTERPRISE vs. KLINGON game)&J&J" 300 PRINT TAB(13);"(STR6 is player vs. Computor game)&J&J" 310 LET S4=100: LET S3=100 320 LET P2=10: LET P1=10 340 LET R=2000-RND(0)*500 350 LET B1=182*(RND(0)-.5) 360 LET B1=B1-FNM(B1,1) 370 LET B2=182*(RND(0)-.5) 380 LET B2=B2-FNM(B2,1) 390 LET C0=1 400 LET J(1)=S3: LET J(2)=S4 410 PRINT "DO YOU WANT A LIST OF THE COMMANDS "; 412 INPUT (1,0)" ---=>",I$: IF LEN(I$)=0 THEN LET I$="Y" 413 IF I$<>"Y" THEN 420 415 IF C1=0 THEN GOSUB 5000 420 PRINT 430 LET C9=3-C0 440 IF D(C9)<>1 THEN 470 450 PRINT "ENEMY CLOAKED" 460 GOTO 480 470 PRINT "BEARING: ";B1;" DEGREES. RANGE: ";R;M$ 480 IF C1>0 THEN PRINT 490 IF C0=2 THEN PRINT " ";K$; ELSE PRINT " ";E$; 520 INPUT (2,0)" ORDERS? (0-17) ---=>",C1 640 IF C1>=0 AND C1<18 THEN 680 660 PRINT " WHAT? ---=>";: GOTO 520 680 IF C1=17 THEN 1660 ELSE PRINT 685 IF C1<15 THEN 730 690 PRINT : PRINT "ARE YOU SURE"; 700 INPUT (1,0)" ---=>",I$: IF LEN(I$)=0 THEN LET I$="Y" 710 IF I$="Y" THEN 1660 ELSE 420 730 IF C1>13 THEN 1660 735 IF C1<>0 THEN 740 736 GOSUB 5000 737 GOTO 420 740 IF C1>6 THEN 760 750 ON C1 GOTO 420,1660,1660,1660,1660,1660 760 ON (C1-6) GOTO 1010,770,1250,1120,960,4870,4870 770 IF J(C0)>=15 THEN 800 780 PRINT A$;"ENGINES DISABLED": PRINT : GOTO 420 800 PRINT "DEGREES ---=>"; 810 INPUT A9 820 IF ABS(A9)<=180 THEN 850 830 PRINT "WHAT"; 840 GOTO 810 850 LET B1=B1+A9 860 IF ABS(B1)<=180 THEN 420 870 LET B1=B1-360*INT(B1/ABS(B1)) 880 IF ABS(B1)>.1 THEN 910 890 LET B1=0 900 GOTO 430 910 IF ABS(ABS(B1)-180)>.1 THEN 940 920 LET B1=0 930 GOTO 430 940 LET B1=B1-FNM(B1,1) 950 GOTO 430 960 IF D(C9)=1 THEN 450 970 LET B=B1: GOSUB 5400: GOSUB 5500: GOSUB 5600 975 PRINT P$;" = ";100*F2;" %" 980 PRINT H$;T$;" = ";100*F3;" %" 990 PRINT " PROBE = ";100*F4;" %" 1000 GOTO 420 1010 IF J(C0)>=15 THEN 1040 1020 PRINT A$;"ENGINES DISABLED" 1030 GOTO 1660 1040 LET T9=((J(C0)-15)/85)*(400-(V*2*(C0-1.5))) 1050 PRINT "MAXIMUM SPEED ";T9-.001;" MGM/MOVE" 1060 PRINT "HOW MANY MGM."; 1070 INPUT M1 1080 IF M1<0 THEN 420 1090 IF M1<=T9 THEN 1660 1100 LET M1=T9-.001 1110 GOTO 1660 1120 LET E(C0)=0 1130 IF C0=1 THEN 1170 1140 GOSUB 4750 1150 IF Y(K)>35 THEN 1210 1160 GOTO 1190 1170 GOSUB 4810 1180 IF Z(K)>35 THEN 1210 1190 PRINT "UNABLE TO SET SHIELDS" 1200 GOTO 480 1210 LET E(C0)=K 1230 PRINT S$;K;" SET" 1240 GOTO 480 1250 PRINT TAB(5);"SHIELD STRENGTH" 1260 PRINT S$;TAB(10);E$;TAB(24);K$ 1270 FOR I=1 TO 4 1280 PRINT TAB(3);I;TAB(10);Z(I);TAB(24);Y(I) 1290 NEXT I 1300 PRINT " INDEX";TAB(10);S3;TAB(24);S4 1310 PRINT "APPROX R";TAB(10);5*S3;TAB(24);5*S4 1320 PRINT : PAUSE 50 1330 PRINT "WEAPON AND ENGINE STATUS" 1340 PRINT "-----";E$;"-----" 1350 IF S3<70 THEN 1400 1360 PRINT "MAXIMUM SPEED ";((S3-15)/85)*(400+V);" MGM/MOVE" 1370 IF S3<30 THEN 1490 1380 PRINT P1;" PROBES REM AINING" 1390 GOTO 1490 1400 IF S3>=15 THEN 1430 1410 PRINT "COMPLETELY DISABLED" 1420 GOTO 1490 1430 PRINT A$;P$;D$ 1440 IF S3>=50 THEN 1360 1450 PRINT A$;H$;T$;D$ 1460 IF S3>=30 THEN 1360 1470 PRINT "PROBE LAUNCHER";D$ 1480 GOTO 1360 1490 PRINT "-----";K$;"-----" 1500 IF S4<70 THEN 1550 1510 PRINT "MAXIMUM SPEED ";((S4-15)/85)*(400-V);" MGM/MOVE" 1520 IF S4<30 THEN 1640 1530 PRINT P2;" PROBES REM AINING" 1540 GOTO 1640 1550 IF S4>=15 THEN 1580 1560 PRINT "COMPLETELY DISABLED" 1570 GOTO 1640 1580 PRINT A$;P$;D$ 1590 IF S4>=50 THEN 1510 1600 PRINT A$;H$;T$;D$ 1610 IF S4>=30 THEN 1510 1620 PRINT "PROBE LAUNCHER GONE" 1630 GOTO 1510 1640 PRINT 1650 GOTO 420 1660 GOTO 4570 1670 GOSUB 4340 1680 LET M1=RND(0) 1681 IF M1>=.5 THEN 2615 1685 IF C1>11 THEN 1710 1690 IF D(1)=1 THEN 2602 1700 ON (C1-1) GOTO 1720,2180,2220,2300,2340,2610 1710 ON (C1-11) GOTO 2335,2335,2610,2450,2530,2521 1720 IF S3>=70 THEN 1750 1730 PRINT A$;E$;P$;" ARE";D$ 1740 GOTO 2610 1750 PRINT E$;F$;P$;":"; 1760 IF ABS(B8)<90 THEN 1800 1770 PRINT "INCORRECT ANGLE" 1780 GOTO 2610 1790 LET K9=RND(0) 1800 LET R=R9: LET B=B8: GOSUB 5400 1805 IF F2>K9 THEN 1830 1810 PRINT "MISSED" 1820 GOTO 2610 1830 LET K=E(2) 1840 IF E(2)<>0 THEN 1860 1850 LET K=INT(4*RND(0)+1) 1860 LET A1=10*(RND(0)+.1)+15 1870 GOTO 1900 1880 GOSUB 4750 1890 LET A1=Y(K)+1 1900 IF RND(0)<.2 THEN 2150 1910 PRINT "A HIT ON";S$;K 1920 IF Y(K)=0 THEN 4270 1930 IF D(2)<>1 THEN 1960 1940 LET D(2)=0 1960 IF Y(K)>=A1 THEN 1990 1970 LET A1=Y(K) 1980 PRINT "WHICH IS GONE" 1990 LET Y(K)=Y(K)-A1 2000 LET S6=S4 2010 LET S4=S4-A1/4 2020 IF C1<>6 THEN 2610 2030 LET E(2)=0 2040 LET A=200+100*RND(0) 2050 IF R9>A THEN 2610 2060 GOSUB 4810 2070 PRINT "EXPLOSION DESTROYED ";E$;S$;K 2080 IF Z(K)=0 THEN 2460 2090 LET E(1)=0 2100 LET A1=Z(K) 2110 LET Z(K)=0 2120 LET S5=S3 2130 LET S3=S3-A1/4 2140 GOTO 2610 2150 PRINT "A DIRECT HIT ON";S$;K 2160 LET A1=A1*2 2170 GOTO 1920 2180 IF S3<70 THEN 1730 2190 PRINT E$;F$;P$;":"; 2200 IF ABS(B8)>90 THEN 1800 2210 GOTO 1770 2220 IF S3>=50 THEN 2250 2230 PRINT A$;E$;H$;T$;" ARE";D$ 2240 GOTO 2610 2250 PRINT E$;F$;H$;T$;":"; 2260 IF ABS(B8)>=90 THEN 1770 2270 LET K9=RND(0) 2280 LET R=R1: LET B=B8: GOSUB 5500 2285 IF F3>K9 THEN 1830 2290 GOTO 1810 2300 IF S3<50 THEN 2230 2310 PRINT E$;F$;H$;T$;":"; 2320 IF ABS(B8)>90 THEN 2280 2330 GOTO 1770 2335 LET D(1)=C1-12 2336 GOTO 2610 2340 IF S3>=30 THEN 2370 2350 PRINT E$;R$;D$ 2360 GOTO 2610 2370 IF P1>0 THEN 2400 2380 PRINT "NO MORE ";E$;" PROBES" 2390 GOTO 2610 2400 PRINT E$;" LAUNCHING A PROBE:"; 2410 LET P1=P1-1 2420 LET R=R9: GOSUB 5600 2425 IF RND(0)",I$ 2560 IF LEN(I$)=0 THEN LET I$="Y" 2570 IF I$="Y" THEN 2580 ELSE 2600 2580 PRINT "SURRENDER ACCEPTED" 2590 GOTO 6000 2600 PRINT "SURRENDER IGNORED" 2601 GOTO 2610 2602 GOSUB 4810 2603 PRINT "DRAIN ON ";E$;" SHIELD ";K 2604 IF Z(K)>=10 THEN 2607 2605 LET Z(K)=10 2606 PRINT "WHICH IS GONE" 2607 LET Z(K)=Z(K)-10 2608 LET S5=S3 2609 LET S3=S3-2.5 2610 IF M1>=.5 THEN 3425 2615 IF C2>11 THEN 2640 2620 IF D(2)=1 THEN 3412 2630 ON (C2-1) GOTO 2650,3110,3150,3220,3260,3420 2640 ON (C2-11) GOTO 3255,3255,3420,4260,3370,3361 2650 IF S4>=70 THEN 2680 2660 PRINT A$;K$;P$;" ARE";D$ 2670 GOTO 3420 2680 PRINT K$;F$;P$;": "; 2690 IF ABS(B9)<90 THEN 2720 2700 PRINT "INCORRECT ANGLE" 2710 GOTO 3420 2720 LET R=R9: LET B=B9: GOSUB 5400 2725 IF RND(0)0 THEN 2780 2770 LET K=INT(4*RND(0)+1) 2780 LET A2=10*(RND(0)+.1)+15 2790 GOTO 2820 2800 GOSUB 4810 2810 LET A2=Z(K)+1 2820 IF RND(0)<.2 THEN 2860 2830 PRINT "A HIT ON";S$;K 2840 IF Z(K)=0 THEN 2460 2850 GOTO 2890 2860 LET A2=2*A2 2870 PRINT "A DIRECT HIT ON";S$;K 2880 IF Z(K)=0 THEN 2460 2890 IF D(1)<>1 THEN 2920 2900 LET D(1)=0 2920 IF Z(K)>=A2 THEN 2950 2930 LET A2=Z(K) 2940 PRINT "WHICH IS GONE" 2950 LET Z(K)=Z(K)-A2 2960 LET S5=S3 2970 LET S3=S3-A2/4 2980 IF C2<>6 THEN 3420 2990 LET E(1)=0 3000 LET A=200+100*RND(0) 3010 IF R9>A THEN 3420 3020 GOSUB 4750 3030 PRINT "EXPLOSION DESTROYED ";K$;S$;K 3040 IF Y(K)=0 THEN 4270 3050 LET E(2)=0 3060 LET A2=Y(K) 3070 LET Y(K)=0 3080 LET S6=S4 3090 LET S4=S4-A2/4 3100 GOTO 3420 3110 IF S4<70 THEN 2660 3120 PRINT K$;F$;P$;": "; 3130 IF ABS(B9)>90 THEN 2720 3140 GOTO 2700 3150 IF S4>=50 THEN 3180 3160 PRINT A$;K$;H$;T$;" ARE";D$ 3170 GOTO 3420 3180 PRINT K$;F$;H$;T$;": "; 3190 IF ABS(B9)>=90 THEN 2700 3200 LET R=R9: LET B=B9: GOSUB 5500 3205 IF RND(0)90 THEN 3200 3250 GOTO 2700 3255 LET D(2)=C2-12 3256 GOTO 3420 3260 IF S4>=30 THEN 3290 3270 PRINT K$;R$;D$ 3280 GOTO 3420 3290 IF P2>0 THEN 3320 3300 PRINT "NO MORE ";K$;" PROBES" 3310 GOTO 3420 3320 PRINT K$;" LAUNCHING A PROBE: "; 3330 LET P2=P2-1 3340 LET R=R9: GOSUB 5600 3345 IF RND(0)",I$: IF LEN(I$)=0 THEN LET I$="Y" 3400 IF I$="Y" THEN 2580 3410 PRINT "SURRENDER IGNORED" 3411 GOTO 3420 3412 GOSUB 4750 3413 PRINT "DRAIN ON ";K$;" SHIELD ";K 3414 IF Y(K)>=10 THEN 3417 3415 LET Y(K)=10 3416 PRINT "WHICH IS GONE" 3417 LET Y(K)=Y(K)-10 3418 LET S6=S4 3419 LET S4=S4-2.5 3420 IF M1>=.5 THEN 1685 3425 LET R=R1 3430 LET B1=B3 3440 IF ABS(B1)>.1 THEN 3470 3450 LET B1=0 3460 GOTO 3510 3470 IF ABS(ABS(B1)-180)>.1 THEN 3500 3480 LET B1=180 3490 GOTO 3510 3500 LET B1=B1-FNM(B1,1) 3510 LET B2=B4 3520 IF ABS(B2)>.1 THEN 3550 3530 LET B2=0 3540 GOTO 3590 3550 IF ABS(ABS(B2)-180)>.1 THEN 3580 3560 LET B2=180 3570 GOTO 3590 3580 LET B2=B2-FNM(B2,1) 3590 GOSUB 4040 3600 GOSUB 3670 3610 LET J(1)=S3 3620 LET J(2)=S4 3630 PRINT "PROCEED ?"; 3640 INPUT (1,0)" ---=>",I$ 3650 IF LEN(I$)=0 THEN LET I$="Y" 3660 IF R<2000 THEN 420 ELSE 4220 3670 IF S6<15 THEN 3820 3680 IF S6>=30 THEN 3720 3690 IF S4>=15 THEN 3820 3700 PRINT K$;" COMPLETELY DISABLED" 3710 GOTO 3820 3720 IF S6>=50 THEN 3760 3730 IF S4>=30 THEN 3820 3740 PRINT K$;R$;D$ 3750 GOTO 3820 3760 IF S6>=70 THEN 3800 3770 IF S4>=50 THEN 3820 3780 PRINT K$;H$;T$;D$ 3790 GOTO 3820 3800 IF S4>=70 THEN 3820 3810 PRINT K$;P$;D$ 3820 LET S6=S4 3830 RETURN 3840 GOTO 6000 4040 IF S5<15 THEN 4200 4050 IF S5>=30 THEN 4090 4060 IF S3>=15 THEN 4200 4070 PRINT E$;" COMPLETELY DISABLED" 4080 GOTO 4200 4090 IF S5>=50 THEN 4130 4100 IF S3>=30 THEN 4200 4110 PRINT E$;R$;D$ 4120 GOTO 4200 4130 IF S5>=70 THEN 4170 4140 IF S3>=50 THEN 4200 4150 PRINT E$;H$;T$;D$ 4160 GOTO 4200 4170 IF S3>=70 THEN 4200 4180 PRINT E$;P$;D$ 4190 GOTO 4200 4200 LET S5=S3 4210 RETURN 4220 PRINT "CONTACT BROKEN" 4250 GOTO 6000 4260 PRINT K$;" IS INITIATING SELF-DESTRUCTION" 4270 LET A=5*S4+100*RND(0) 4280 PRINT K$;" DESTROYED" 4290 PRINT "EXPLOSION RADIUS ";A;M$ 4300 IF C1=15 THEN 6000 4310 IF A",I$ 4660 GOTO 420 4670 LET C0=1 4680 LET M2=M1 4690 LET M1=Q3 4700 LET C2=C1 4710 LET C1=Q1 4720 LET B2=B1 4730 LET B1=Q2 4740 GOTO 1670 4750 LET K=1 4760 FOR I=2 TO 4 4770 IF Y(K)>=Y(I) THEN 4790 4780 LET K=I 4790 NEXT I 4800 RETURN 4810 LET K=1 4820 FOR I=2 TO 4 4830 IF Z(K)>=Z(I) THEN 4850 4840 LET K=I 4850 NEXT I 4860 RETURN 4870 IF C0=2 THEN 4970 4890 GOSUB 4750 4900 IF Y(K)<35 THEN 1190 4920 IF C1=12 THEN 4950 4930 PRINT "CLOAKING DEVICE ACTIVATED" 4940 GOTO 1660 4950 PRINT "CLOAKING DEVICE OFF" 4960 GOTO 1660 4970 GOSUB 4810 4980 IF Z(K)<35 THEN 1190 4990 GOTO 4920 5000 PRINT "&K THE POSSIBLE COMMANDS ARE DESIGNATED BY THE" 5010 PRINT " FOLLOWING NUMBERS AND CODE WORDS." 5020 PRINT " 0 COMMANDS :REPEAT THIS LIST" 5030 PRINT " 1 RANGE :REPEAT LAST RANGE AND BEARING" 5040 PRINT " 2 PHASEF :FIRE FORWARD ";P$ 5050 PRINT " 3 PHASER :FIRE REAR ";P$ 5060 PRINT " 4 TORPF :FIRE FORWARD";H$;T$ 5070 PRINT " 5 TORPR :FIRE REAR";H$;T$ 5080 PRINT " 6 PROBE :FIRE AN ANTIMATTER PROBE" 5090 PRINT " 7 MOVE :MOVE FORWARD" 5100 PRINT " 8 TURN :CHANGE DIRECTION OF TRAVEL" 5110 PRINT " 9 DAMAGE :GIVE DAMAGE REPORT" 5120 PRINT "10 SHIELDS :SET OPTIMUM SHIELD&J" 5130 INPUT (1,0)"*** Type any letter to see more ---=>",I$ 5140 PRINT "&K" 5150 PRINT "11 CHANCES :GIVE FIRING PROBABILITIES" 5160 PRINT "12 UNCLOAK :DEACTIVATE CLOAKING DEVICE" 5170 PRINT "13 CLOAK :ACTIVATE CLOAKING DEVICE" 5180 PRINT "14 WAIT :LET THE ENEMY MOVE NEXT" 5190 PRINT "15 SUICIDE :BLOW UP YOUR VESSEL" 5200 PRINT "16 SURRENDER :SURRENDER TO THE ENEMY" 5210 PRINT "17 PENETRATE :LOCATE CLOAKED ENEMY WITH SCAN&J" 5230 RETURN 5300 REM ...FNN GOSUB (F1) 5310 LET F1=1.5707963*SGN(Y3) 5320 IF X3=0 THEN RETURN 5330 LET F1=ATN(Y3/X3) 5340 IF SGN(Y3)+SGN(X3)=2 THEN RETURN ELSE 5360 5350 LET F1=F1-3.1415926: RETURN 5360 IF Y3<>0 THEN 5380 5370 IF X3>0 THEN RETURN ELSE 5390 5380 IF Y3<0 THEN RETURN 5390 LET F1=F1+3.1415926: RETURN 5400 REM ...FNP GOSUB (F2) Phasers 5410 LET F2=0 5420 IF R>400 THEN RETURN 5430 LET F2=(R-200)*(R-200) 5440 IF F2=0 THEN RETURN ELSE LET F2=1-(F2/40000) 5450 LET F2=F2*SIN(FNX(B))*(5-FND(B))/5: RETURN 5500 REM ...FNT GOSUB (F3) Photons 5510 LET F3=0 5520 IF ABS(R-500)>200 THEN RETURN 5530 LET F3=(R-500)*(R-500) 5540 IF F3=0 THEN RETURN ELSE LET F3=1-(F3/40000) 5550 LET F3=F3*SIN(FNX(B))*(3-FND(B))/3: RETURN 5600 REM ...FNL GOSUB (F4) Probe 5610 LET F4=((1500-R)/2500)*((1500-R)/2500)*((1500-R)/2500) 5620 IF F4>=0 THEN RETURN 5630 LET F4=0: RETURN 6000 END