10 REM ... STR6.ECB AUTHOR/IMPLEMENTOR - ?/J. LIGHT 20 REM ...UTS400/UTS700 VERSION 12-19-79 R.E.H. 30 LET P=3.1415926: REM ...PI CONSTANT 40 DEF FNM(A,Z8)=A-Z8*INT(A/Z8) 50 DEF FND(B)=INT(ABS(B/89.9999)) 60 DEF FNX(B)=P*ABS(90-ABS(B))/180 70 PRINT "&K&J&J" 80 DIM R$(15) 180 PRINT TAB(15);"S T R 6&J&J" 190 PRINT " * * * S T A R - T R E K * * *&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 260 DATA 1,0,0,0,0,0,100,100,100,100,10,10,0,0 270 READ C0,C3,F1,F2,F6,F7,J(1),J(2),S3,S4,P1,P2,S,T1 280 PRINT "&J&J&J (PLAYER VS. COMPUTOR VERSION)": PRINT 290 PRINT " ( STTR6 is 2 player VERSION )": PRINT 300 PRINT " DO YOU WANT A LIST OF THE COMMANDS"; 310 INPUT (1,0)" ---=>",I$: IF LEN(I$)=0 THEN LET I$="N" 320 IF I$="N" THEN 350 330 IF I$<>"Y" THEN 300 340 GOSUB 4470 350 PRINT 360 PRINT " AN ENEMY SHIP IS APPROACHING" 410 LET V=50*(RND(0)-.5) 500 LET R=2000-RND(0)*500 510 LET B1=182*(RND(0)-.5) 515 LET B1=B1-FNM(B1,1): LET B7=B1 520 LET B2=182*(RND(0)-.5) 525 LET B2=B2-FNM(B2,1) 540 PRINT 570 PRINT "BEARING: ";B1;" DEGREES. RANGE: ";R;M$ 580 PRINT " ORDERS"; 590 INPUT (2,0)" ---=>",C1 612 LET C3=1 613 GOTO 680 614 LET C3=0 680 IF C1<1 THEN 700 690 IF C1<17 THEN 720 700 GOSUB 4470 710 GOTO 540 720 IF C1<15 THEN 770 730 PRINT " ARE YOU SURE"; 740 INPUT (1,0)" ---=>",I$ 750 IF I$="Y" THEN 1650 ELSE 540 770 IF C1>12 THEN 1650 780 IF C1>6 THEN 800 790 ON C1 GOTO 540,1650,1650,1650,1650,1650 800 ON (C1-6) GOTO 970,810,1240,1120,930,1100 810 IF S3>=35 THEN 840 820 PRINT A$;"ENGINES DISABLED" 830 GOTO 540 840 PRINT " DEGREES"; 850 INPUT " ---=>",A9 860 IF ABS(A9)<=180 THEN 890 870 PRINT " WHAT"; 880 GOTO 850 890 LET B1=B1+A9 900 IF ABS(B1)<=180 THEN 540 910 LET B1=B1-360*INT(B1/ABS(B1)) 911 IF ABS(B1)>.1 THEN 914 912 LET B1=0 913 GOTO 570 914 IF ABS(ABS(B1)-180)>.1 THEN 917 915 LET B1=0 916 GOTO 570 917 LET B1=B1-FNM(B1,1) 918 GOTO 570 930 LET Z=R1: LET F5=B1: GOSUB 5400: GOSUB 5500: GOSUB 5600 935 PRINT P$;" = ";100*F2;" %" 940 PRINT H$;T$;" = ";100*F3;" %" 950 PRINT " PROBE = ";100*F4;" %" 960 GOTO 540 970 IF S3>=35 THEN 1000 980 PRINT A$;"ENGINES DISABLED" 990 GOTO 1650 1000 LET T9=((S3-35)/65)*(400+V) 1005 PRINT " MAXIMUM SPEED ";INT(T9);M$;"/MOVE" 1010 PRINT " HOW MANY";M$; 1020 INPUT " ---=>",M1 1040 IF M1<0 THEN 540 1050 IF M1<=T9 THEN 1650 1060 LET M1=T9-.001 1070 GOTO 1650 1100 GOSUB 4470 1110 GOTO 540 1120 LET S=0 1140 LET K=1 1150 FOR I=2 TO 4 1160 IF Z(K)50 THEN 1210 1195 PRINT " UNABLE TO SET SHIELDS" 1200 GOTO 580 1210 REM 1220 LET S=K 1225 PRINT S$;K;" SET" 1230 GOTO 580 1240 PRINT TAB(5);"SHIELD STRENGTH" 1250 PRINT S$;TAB(10);E$;TAB(24);K$ 1260 FOR I=1 TO 4 1270 PRINT TAB(3);I;TAB(10);Z(I);TAB(24);Y(I) 1280 NEXT I 1290 PRINT " INDEX";TAB(10);S3;TAB(24);S4 1300 PRINT " APPROX R";TAB(10);5*S3;TAB(24);5*S4 1310 PRINT : PAUSE 20 1320 PRINT " WEAPON AND ENGINE STATUS" 1330 PRINT " -----";E$;"-----" 1340 IF S3<80 THEN 1390 1350 PRINT " MAXIMUM SPEED ";((S3-35)/65)*(400+V);M$;"/MOVE" 1360 IF S3<45 THEN 1480 1370 PRINT P1;" PROBES REM AINING" 1380 GOTO 1480 1390 IF S3>=35 THEN 1420 1400 PRINT " COMPLETELY DISABLED" 1410 GOTO 1480 1420 PRINT A$;P$;D$ 1430 IF S3>=60 THEN 1350 1440 PRINT A$;H$;T$;D$ 1450 IF S3>=45 THEN 1350 1460 PRINT R$;D$ 1470 GOTO 1350 1480 PRINT " -----";K$;"-----" 1490 IF S4<80 THEN 1540 1500 PRINT " MAXIMUM SPEED ";((S4-35)/65)*(400-V);M$;"/MOVE" 1510 IF S4<45 THEN 1630 1520 PRINT P2;" PROBES REM AINING" 1530 GOTO 1630 1540 IF S4>=35 THEN 1570 1550 PRINT " COMPLETELY DISABLED" 1560 GOTO 1630 1570 PRINT A$;P$;D$ 1580 IF S4>=60 THEN 1500 1590 PRINT A$;H$;T$;D$ 1600 IF S4>=45 THEN 1500 1610 PRINT " PROBE LAUNCHER GONE" 1620 GOTO 1500 1630 PRINT 1640 GOTO 540 1650 GOSUB 3030 1660 GOSUB 4240 1670 IF C1>12 THEN 1690 1680 ON (C1-1) GOTO 1700,2010,2040,2110,2140,2480 1690 ON (C1-12) GOTO 2240,2480,2340,2410 1700 IF S3>=80 THEN 1730 1710 PRINT A$;P$;" ARE";D$ 1720 GOTO 2480 1730 IF ABS(B8)<90 THEN 1760 1740 PRINT " INCORRECT ANGLE: ";ABS(B8) 1750 GOTO 2480 1760 LET K9=RND(0) 1770 LET Z=R9: LET F5=B8: GOSUB 5400 1775 IF F2>K9 THEN 1800 1780 PRINT " YOU MISSED" 1790 GOTO 2480 1800 LET K=1 1810 FOR I=2 TO 4 1820 IF Y(K)50 THEN 1870 1860 LET K=INT(4*RND(0)+1) 1870 LET A1=15*(RND(0)+.1) 1875 IF RND(0)<.2 THEN 1980 1890 PRINT " A HIT ON";S$;K 1900 IF Y(K)=0 THEN 4170 1910 IF Y(K)>=A1 THEN 1940 1920 LET A1=Y(K) 1930 PRINT " WHICH IS GONE" 1940 LET Y(K)=Y(K)-A1 1950 LET S6=S4 1960 LET S4=S4-A1/4 1970 GOTO 2480 1980 PRINT " A DIRECT HIT ON";S$;K 1990 LET A1=A1*2 2000 GOTO 1900 2010 IF S3<80 THEN 1710 2020 IF ABS(B8)>90 THEN 1770 2030 GOTO 1740 2040 IF S3>=60 THEN 2070 2050 PRINT A$;H$;T$;" ARE";D$ 2060 GOTO 2480 2070 IF ABS(B8)>=90 THEN 1740 2080 LET K9=RND(0) 2090 LET Z=R9: LET F5=B8: GOSUB 5500 2095 IF F3>K9 THEN 1800 2100 GOTO 1780 2110 IF S3<60 THEN 2050 2120 IF ABS(B8)>90 THEN 2080 2130 GOTO 1740 2140 IF S3>=45 THEN 2170 2150 PRINT R$;D$ 2160 GOTO 2480 2170 IF P1>0 THEN 2200 2180 PRINT " NO MORE PROBES" 2190 GOTO 2480 2200 LET P1=P1-1 2210 LET Z=R9: GOSUB 5600 2215 IF RND(0)=35 THEN 2300 2270 PRINT K$;" CANNOT MOVE" 2280 PRINT " BLUFF FAILED" 2290 GOTO 2480 2300 IF RND(0)>.2 THEN 2280 2310 IF C2=5 THEN 4160 2320 PRINT K$;" WITHDRAWING AT TOP SPEED" 2330 GOTO 4120 2340 LET A=5*S3+100*RND(0) 2350 PRINT E$;" DESTROYED" 2360 PRINT " EXPLOSION RADIUS ";A;M$ 2370 IF C2=5 THEN 4160 2380 IF A0 THEN 2560 2550 LET K=INT(4*RND(0)+1) 2560 LET A2=15*(RND(0)+.1) 2570 IF RND(0)<.2 THEN 2610 2580 PRINT " A HIT ON";S$;K 2590 IF Z(K)=0 THEN 2340 2600 GOTO 2640 2610 LET A2=2*A2 2620 PRINT " DIRECT HIT ON";S$;K 2630 IF Z(K)=0 THEN 2340 2640 IF Z(K)>A2 THEN 2670 2650 LET A2=Z(K) 2660 PRINT " WHICH IS GONE !!!!!!!!!!!!!!!!!!!!!!" 2670 LET Z(K)=Z(K)-A2 2680 LET S5=S3 2690 LET S3=S3-A2/4 2700 GOTO 2780 2710 PRINT K$;F$;H$;T$;": "; 2720 LET Z=R9: LET F5=B9: GOSUB 5500 2725 IF RND(0).1 THEN 2794 2792 LET B1=0 2793 GOTO 2798 2794 IF ABS(ABS(B1)-180)>.1 THEN 2797 2795 LET B1=180 2796 GOTO 2798 2797 LET Z9=FNM(B1,1): LET B1=B1-Z9 2798 LET B2=B4 2799 IF ABS(B2)>.1 THEN 2802 2800 LET B2=0 2801 GOTO 2810 2802 IF ABS(ABS(B2)-180)>.1 THEN 2805 2803 LET B2=180 2804 GOTO 2810 2805 LET B2=B2-FNM(B2,1) 2810 GOSUB 3940 2820 GOSUB 2850 2830 LET B1=B7: IF R<2000 THEN 540 2840 GOTO 4120 2850 IF S6<35 THEN 3000 2860 IF S6>=45 THEN 2900 2870 IF S4>=35 THEN 3000 2880 PRINT K$;" COMPLETELY DISABLED" 2890 GOTO 3000 2900 IF S6>=60 THEN 2940 2910 IF S4>=45 THEN 3000 2920 PRINT K$;R$;D$ 2930 GOTO 3000 2940 IF S6>=80 THEN 2980 2950 IF S4>=60 THEN 3000 2960 PRINT K$;H$;T$;D$ 2970 GOTO 3000 2980 IF S4>=80 THEN 3000 2990 PRINT K$;P$;D$ 3000 LET S6=S4 3010 RETURN 3020 GOTO 5570 3030 REM ...*** ENEMY DECISION SECTION ***... 3040 LET M2=((S4-35)/65)*(400-V) 3050 IF M2>25 THEN 3070 3060 LET M2=25 3070 LET C2=4 3080 IF S4>=35 THEN 3140 3090 IF R<5*S4+50 THEN 3120 3100 LET M2=0 3110 GOTO 3740 3120 LET C2=5 3130 GOTO 3740 3140 LET B2=0 3150 IF S4>=45 THEN 3200 3160 IF R<5*S4+50 THEN 3120 3170 IF R<700 THEN 3740 3180 LET B2=180 3190 GOTO 3740 3200 IF S4>=60 THEN 3300 3210 IF P2=0 THEN 3160 3220 IF R<800 THEN 3270 3230 IF T1=0 THEN 3250 3240 ON T1 GOTO 3740,3180 3250 LET T1=INT(2*RND(0)+1) 3260 ON T1 GOTO 3740,3180 3270 LET T1=0 3280 LET C2=3 3290 GOTO 3740 3300 IF S4>=80 THEN 3550 3310 IF S3<80 THEN 3360 3320 IF R>1000 THEN 3740 3330 IF R<=400 THEN 3180 3340 LET C2=2 3350 GOTO 3740 3360 IF S3<60 THEN 3400 3370 IF R>1000 THEN 3740 3380 LET C2=2 3390 GOTO 3740 3400 IF S3<45 THEN 3470 3410 IF R<450 THEN 3180 3420 IF R<=750 THEN 3380 3430 LET A=R-550 3440 IF A>=M2 THEN 3740 3450 LET M2=A 3460 GOTO 3740 3470 IF R<=5*S3+50 THEN 3180 3480 IF R<375 THEN 3180 3490 IF R<450 THEN 3520 3500 IF R<=550 THEN 3380 3510 IF R>725 THEN 3740 3520 IF P2=0 THEN 3380 3530 IF RND(0)<.3 THEN 3280 3540 GOTO 3380 3550 IF S3<80 THEN 3630 3560 IF R>1000 THEN 3740 3570 IF R>300 THEN 3600 3580 LET C2=1 3590 GOTO 3740 3600 IF R>400 THEN 3380 3610 LET F5=0: GOSUB 5400: GOSUB 5500 3615 IF F3700 THEN 3740 3650 IF R>375 THEN 3340 3660 IF R<125 THEN 3580 3670 IF S3>67 THEN 3740 3680 GOTO 3340 3690 IF S3>=45 THEN 3410 3700 IF R<5*S3+50 THEN 3180 3710 IF R<375 THEN 3580 3720 IF R>550 THEN 3510 3730 GOTO 3380 3740 RETURN 3940 IF S5<35 THEN 4100 3950 IF S5>=45 THEN 3990 3960 IF S3>=35 THEN 4100 3970 PRINT E$;" COMPLETELY DISABLED" 3980 GOTO 4100 3990 IF S5>=60 THEN 4030 4000 IF S3>=45 THEN 4100 4010 PRINT E$;R$;D$ 4020 GOTO 4100 4030 IF S5>=80 THEN 4070 4040 IF S3>=60 THEN 4100 4050 PRINT E$;H$;T$;D$ 4060 GOTO 4100 4070 IF S3>=80 THEN 4100 4080 PRINT E$;P$;D$ 4090 GOTO 4100 4100 LET S5=S3 4110 RETURN 4120 PRINT " CONTACT WITH ENEMY BROKEN" 4130 IF RND(0)<.2 THEN 5570 4140 PRINT " ANOTHER ENEMY SHIP IS APPROACHING" 4150 GOTO 410 4160 PRINT K$;" IS INITIATING SELF-DESTRUCTION" 4170 LET A=5*S4+100*RND(0) 4180 PRINT K$;" DESTROYED" 4190 PRINT " EXPLOSION RADIUS ";A;M$ 4200 IF C1=15 THEN 5570 4210 IF A",I$ 4590 PRINT " 9 DAMAGE :GIVE DAMAGE REPORT" 4600 PRINT " 10 SHIELDS :SET OPTIMUM SHIELD" 4610 PRINT " 11 CHANCES :GIVE FIRING PROBABILITIES" 4620 PRINT " 12 COMMANDS :REPEAT THIS LIST" 4630 PRINT " 13 BLUFF :ATTEMPT TO BLUFF THE ENEMY" 4640 PRINT " 14 WAIT :LET THE ENEMY MOVE NEXT" 4650 PRINT " 15 SUICIDE :BLOW UP THE ENTERPRISE" 4660 PRINT " 16 SURRENDER :SURRENDER TO THE ENEMY" 4670 PRINT 4680 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 5390 5345 IF SGN(Y3)+SGN(X3)<>-2 THEN 5360 5350 LET F1=F1-P: GOTO 5390 5360 IF Y3<>0 THEN 5380 5370 IF X3>0 THEN 5390 ELSE 5390 5380 IF Y3<0 THEN 5390 5390 LET F1=F1+P: RETURN 5400 REM ...FNP GOSUB (F2) PHASERS 5410 LET F2=0 5420 IF Z>400 THEN RETURN 5430 LET F2=(Z-200)*(Z-200) 5440 IF F2=0 THEN RETURN ELSE LET F2=1-(F2/40000) 5450 LET F2=F2*SIN(FNX(F5))*(5-FND(F5))/5: RETURN 5500 REM ...FNT GOSUB (F3) PHOTONS 5510 LET F3=0 5520 IF ABS(Z-500)>200 THEN RETURN 5530 LET F3=(Z-500)*(Z-500) 5540 IF F3=0 THEN RETURN ELSE LET F3=1-(F3/40000) 5550 LET F3=F3*SIN(FNX(F5))*(3-FND(F5))/3: RETURN 5600 REM ...FNL GOSUB (F4) PROBE 5610 LET F4=(1500-Z)/2500: LET F4=F4*F4*F4 5620 IF F4>=0 THEN RETURN 5630 LET F4=0: RETURN 6000 END