1 REM ...STRTK.ECB 28K - Lost end of program. Too big for memory? 2 REM ...STAR TREK...by COL. W.F.LUBBERT 3 REM .INSTRUCTION SUPPORT DIVISION 4 REM .UNITED STATES MILITARY ACADEMY, WEST POINT, N.Y. 5 REM 6 REM .REVISED BY JEFF WILMOT 7 REM .TO RUN PROGRAM STARTRK TYPE 'RNH,MI=5000' 10 DIM B(40,2),S(40,2),V(2),W(40,2),X(40,2),Y(40,2) 20 DIM E$(11),N$(12),N1$(23),P$(136),U$(25),F(40,2) 30 PRINT "&K&J&J" 40 DATA 1,1,1 50 READ J,J1,K 80 LET U$="SIR, I DO NOT UNDERSTAND" 100 LET A$=" " 110 LET C$=" " 130 LET D$=" " 140 PRINT D$;"EXPERIMENTAL ADVANCED VERSION OF STARTREK" 150 PRINT 160 PRINT A$;"MERITSS 'STARTKS' REVISED 17 MAY 1973" 170 PRINT A$;"FOR MORE INFORMATION RUN PROGRAM 'GAME,STRINFO' (STRIN.ECB)" 180 PRINT D$ 190 PRINT D$;"WELCOME ABOARD CAPTAIN.&J" 200 INPUT " PLEASE ENTER YOUR NAME IN THE LOG.",N$ 210 PRINT "DO YOU WANT BRIEFING ON THE COORD. AND AZIMUTH SYSTEM?" 220 INPUT (1,0)"( ENTER Y OR N )",H$ 230 IF H$="N" THEN 450 231 IF H$="Y" THEN 300 232 PRINT U$ 233 GOTO 210 300 PRINT A$;"AZIMUTHS AND BEARINGS ARE MEASURED IN A NAVIGATIONAL" 310 IF B(J,1)<0 THEN 2370 320 PRINT "Y-AXIS, AND MEASURED IN A CLOCKWISE DIRECTION. I.E.," 330 PRINT "90 DEGREES IS ALONG THE POSITIVE X-AXIS, 180 DEGREES" 340 PRINT "ALONG THE NEGATIVE Y-AXIS, AND 270 DEGREES ALONG THE" 350 PRINT "NEGATIVE X-AXIS.";A$ 370 PRINT "AZIMUTH IS A CLOCKWISE ANGLE FROM A LINE PASSING THROUGH THE" 380 PRINT "ENTERPRISE PARALLEL TO THE POSITIVE Y-AXIS (0 DEGREES)" 390 PRINT "TO A LINE PASSING FROM THE ENTERPRISE TO THE KLINGON" 400 PRINT " ENTERPRISE AND KLINGON BEARINGS ARE THEIR COURSE ANGLES" 410 PRINT "MEASURED FROM A LINE PASSING THROUGH THE SHIP THAT IS" 420 PRINT "PARALLEL TO THE Y-AXIS." 430 PRINT A$;"THE BEARING OF A SHIP IS THE DIRECTION THAT SHIP IS FLYING" 440 PRINT "THE AZIMUTH IS THE DIRECTION FROM THE ENTERPRISE TO THE KLINGON." 450 PRINT A$;"DO YOU WANT A BRIEFING ON THE TYPES OF COMMANDS" 470 INPUT (1,0)"( ENTER Y OR N )",L$ 480 IF L$="N" THEN 690 490 IF L$="Y" THEN 520 500 PRINT U$ 510 GOTO 450 520 GOSUB 4430 525 REM 526 REM ********************************** 530 REM .INITALIZATION OF GAME PARAMETERS 540 REM 550 REM .THE ARRAY - W - IS A HISTORY OF WARPS 560 REM .THE ARRAY - X -IS A HISTORY OF X-COORDINATES 570 REM .THE ARRAY - S - IS A HISTORY OF CAPACITY 580 REM .THE ARRAY - Y - IS A HISTORY OF Y-COORDINATES 590 REM .THE ARRAY - B - IS A HISTORY OF BEARINGS 600 REM .THE ARRAY - F - IS A HISTORY OF WHAT IS FIRED 610 REM .THE ARRAY - V - IS THE NUMBER OF KM/WARP 620 REM .THE ARRAY - M - IS THE RELATIVE POTENCY 630 REM .THE ARRAY - O - IS THE PHASOR HIT ANGLE 640 REM .THE ARRAY - P - IS THE PHOTON TORPEDO HIT ANGLE 650 REM 651 REM ***************************************** 652 REM 690 LET C=1/57.2957795131 695 LET M(1)=0 700 LET G=1 705 LET I=0 710 LET H1=99999 720 LET A2=A 730 LET N1$="ENTERPRISE": LET E$="ENTERPRISE" 740 LET N1$=N1$+" " 750 LET P$=" -<*>- NONE -<*>-" 760 LET P$=P$+"TRIVIAL (0-5%) " 770 LET P$=P$+"MINOR (5-25%) " 780 LET P$=P$+"MODERATE (25-50%)" 790 LET P$=P$+"MEDIUM (50-70%) " 800 LET P$=P$+"HEAVY (70-87%) " 810 LET P$=P$+"CRITICAL (87-99%)" 820 LET P$=P$+"TOTAL DESTRUCTION" 825 LET P$=P$+" " 830 LET V(1)=INT(8*RND(0))+1 840 LET V(2)=25000 850 LET W(1,1)=8*RND(0)+1 860 LET W(1,2)=8*RND(0)+1 870 LET S(1,1)=100 880 LET S(1,2)=100 890 LET B(1,1)=(360*RND(0))+1 895 LET B(2,1)=(360*RND(0))+1 900 LET X(1,1)=INT(RND(0)+9)+1 905 LET X(2,1)=INT(RND(0)+90)+10 910 LET X(1,2)=SGN(RND(0)-.25)*(RND(0)*4E5+4E5) 920 LET Y(1,1)=INT(RND(0)+9)+1 925 LET Y(2,1)=INT(RND(0)+90)+10 930 LET Y(1,2)=SGN(RND(0)-.75)*(RND(0)*4E5+2E5) 940 LET Z1=INT(99*RND(0)+1) 945 IF M(1)>0 THEN 1110 950 REM 955 REM .**************************************** 960 REM .INITAL INTERPLAY WITH STARSHIP CAPTAIN 965 REM .**************************************** 970 REM 980 PRINT C$;"ENTER HANDICAP FACTOR" 990 PRINT " 0.5 = GRANDMASTER" 1000 PRINT " 1 = MASTER" 1010 PRINT " 2 = JOURNEYMAN" 1020 PRINT " 3 = APPRENTICE" 1030 INPUT (1,0)M(1) 1040 IF M(1)<=3.0 THEN 1080 1050 PRINT "*** BALONEY *** NO ONE IS ANY WORSE THAN APPRENTICE" 1060 LET M(1)=3.0 1070 GOTO 1110 1080 IF M(1)>=.5 THEN 1110 1090 LET M(1)=2 1100 PRINT "HOGWASH - AT BEST YOU'RE A JOURNEYMAN" 1110 LET M(2)=1/M(1) 1120 IF M(1)>.75 THEN 1150 1130 LET T2=1 1140 GOTO 1160 1150 LET T2=INT(M(1)+.5)+1 1160 LET T1=1 1180 LET O(1)=45*M(1) 1190 LET O(2)=45*M(2) 1200 LET P(1)=M(1)*5 1210 LET P(2)=M(2)*5 1220 IF M(1)*RND(0)<.45 THEN 1310 1230 PRINT 1240 PRINT ".... CAPTAINS LOG .....STAR DATE ";1E4*RND(0) 1250 PRINT 1260 PRINT "THE USS ENTERPRISE IS ON PATROL IN THE ACTURUS SECTOR" 1270 PRINT "OF THE GALAXY NEAR GAMMA TRISKELLION ";INT(20*RND(0)+1) 1280 PRINT 1290 PRINT "MR. SPOCK PICKS UP THE NEUTRON SIGNATURE OF A " 1300 PRINT "KLINGON HEAVY CRUISER AND TENTATIVELY IDENTIFIES IT" 1305 PRINT "AS THE KHC-";Z1 1310 PRINT D$ 1320 PRINT A$;" KLINGON ATTACKING . . . RED ALERT" 1330 PRINT "SHIELDS ON CAPTAIN ";N$;" - READY TO ENGAGE ENEMY" 1340 PRINT A$;"> > > > > > > > MISS" 1350 REM 1355 REM .*********************** 1360 REM .GAME EXECUTIVE PROGRAM 1365 REM .*********************** 1370 LET J=1 1380 LET J=J+1 1385 REM 1390 REM .ENTERPRISE PORTION OF GAME CYCLE 1410 REM .GO TO ENTERPRISE TACTICS 1415 REM 1420 GOTO 3560 1425 REM 1430 REM .GO TO ENTERPRISE MOVE 1435 REM 1440 PRINT 1445 IF I=2 THEN 1510 1450 GOSUB 3480 1460 REM 1470 REM .KLINGON PORTION OF GAME CYCLE 1480 REM 1490 IF S(J-1,2)<=10*RND(0)*M(1) THEN 1520 1510 IF J<36 THEN 1550 1520 GOSUB 10520 1530 LET K=2 1540 GOTO 1580 1550 GOSUB 6900 1555 REM 1560 REM .GOTO KLINGON MOVE 1565 REM 1570 IF V5=1 THEN 1610 1580 GOSUB 3480 1590 REM 1600 REM .GO TO TACTICAL EVALUATION, BOTH SHIPS 1605 REM 1610 GOSUB 9710 1620 LET V5=0 1630 IF J<42 THEN 1380 1631 REM 1632 REM .PARTIAL REINITALIZATION 1633 REM 1650 PRINT C$;"STARSHIP MEMORY BANK CAPACITY EXCEEDED" 1660 PRINT "CONSIDERABLE BATTLE HISTORY INFORMATION LOST" 1680 LET B(1,1)=B(40,1) 1690 LET B(1,2)=B(40,2) 1700 LET S(1,1)=S(40,1) 1710 LET S(1,2)=S(40,2) 1720 LET W(1,1)=W(40,1) 1730 LET W(1,2)=W(40,2) 1740 LET X(1,1)=X(40,1) 1750 LET X(1,2)=X(40,2) 1760 LET Y(1,1)=Y(40,1) 1770 LET Y(1,2)=Y(40,2) 1780 GOTO 1380 1790 REM 1800 REM .********************************** 1810 REM .GENERAL USAGE SERVICE SUBROUTINES 1820 REM .********************************** 1825 REM 1830 REM .================================================== 1840 REM .COMPUTE RANGE AND AZIMUTH BETWEEN ARBITRARY POINTS 1845 REM 1850 LET R=SQR((X1*X1)+(Y1*Y1)) 1860 IF X1<>0 THEN 1880 1870 LET X=.000001 1880 LET A=ATN(Y1/X1)/C 1890 IF X1<0 THEN 1980 1895 REM 1900 REM .FIRST OR FOURTH QUADRANT 1905 REM 1910 IF Y1<0 THEN 1950 1915 REM 1920 REM .FIRST QUADRANT - NO CHANGE 1925 REM 1930 GOTO 2000 1935 REM 1940 REM .FOURTH QUADRANT - ADD 360 1945 REM 1950 LET A=A+360 1960 GOTO 2000 1965 REM 1970 REM .SECOND OR THIRD QUADRANT - ADD 180 1975 REM 1980 LET A=A+180 1985 REM 1990 REM .VALIDATE ACHIEVEMENT OF POSITIVE AZIMUTH 1995 REM 2000 IF A>=0 THEN 2030 2010 IF A<=360 THEN 2030 2020 PRINT "AZIMUTH BUG" 2030 RETURN 2040 REM 2050 REM .============================================= 2060 REM .COMPUTE RANGE AND AZIMUTH BETWEEN SHIPS AT J-1 2065 REM 2070 LET X1=X(J-1,2)-X(J-1,1) 2080 LET Y1=Y(J-1,2)-Y(J-1,1) 2085 REM 2090 REM .GO TO GENERAL RANGE AND AZIMUTH SUBROUTINE 2095 REM 2100 GOSUB 1850 2110 RETURN 2115 REM 2120 REM .================================================== 2130 REM .COMPUTE RANGE AND AZIMUTH AT HALFWAY POINT (J-1,J) 2135 REM 2140 LET X1=(X(J,2)+X(J-1,2)-X(J,1)-X(J-1,1))/2 2150 LET Y1=(Y(J,2)+Y(J-1,2)-Y(J,1)-Y(J-1,1))/2 2160 GOSUB 1850 2170 RETURN 2175 REM 2180 REM .=========================================== 2190 REM .COMPUTE RANGE AND AZIMUTH BETWEEN SHIPS AT J 2195 REM 2200 LET X1=X(J,2)-X(J,1) 2210 LET Y1=Y(J,2)-Y(J,1) 2215 REM 2220 REM .GO TO GENERAL RANGE AND AZIMUTH SUBROUTINE 2225 REM 2230 GOSUB 1850 2240 RETURN 2250 REM 2260 REM .========================== 2270 REM .REQUEST NEW COURSE BEARING 2275 REM 2280 PRINT A$;"NEW COURSE BEARING, SIR"; 2290 INPUT B(J,1) 2300 LET B(J,1)=(450-B(J,1))-360*INT((450-B(J,1))/360) 2320 IF B(J,1)>360 THEN 2370 2330 LET B6=ABS(B(J,1)-B(J-1,1)) 2340 IF B6<=180 THEN 2360 2350 LET B6=360-B6 2360 RETURN 2370 PRINT U$ 2380 GOTO 2280 2400 REM 2410 REM .======================= 2420 REM .GET WEAPONS SELECTION 2425 REM 2430 PRINT "SELECT WEAPONS TO FIRE "; 2440 PRINT "(1=TORPEDO; 2=PHASOR)" 2450 INPUT F3 2460 IF F3<0 THEN 2510 2470 LET F3=INT(F3) 2480 IF F3<>0 THEN 2500 2490 PRINT "CEASE FIRING" 2500 IF F3<3 THEN 2530 2510 PRINT U$ 2520 GOTO 2430 2530 RETURN 2540 REM 2550 REM .=========================================== 2560 REM .CALCULATION OF NORMALIZED FIRING DEFLECTION 2565 REM 2570 IF D<180 THEN 2590 2580 LET D=360-D 2590 IF D<90 THEN 2610 2600 LET D=180-D 2610 RETURN 2620 REM 2630 REM .========================================= 2640 REM .CALCULATION OF NORMALIZED KLINGON AZIMUTH 2645 REM 2650 IF B(J,2)>=0 THEN 2680 2660 LET B(J,2)=B(J,2)+360 2670 GOTO 2650 2680 IF B(J,2)<=360 THEN 2710 2690 LET B(J,2)=B(J,2)-360 2700 GOTO 2680 2710 LET B(J,2)=INT(B(J,2)) 2720 RETURN 2725 REM 2730 REM .============================== 2740 REM .WEAPONS EVALUATION SUBROUTINE 2745 REM 2750 REM .SUBROUTINE USES CURRENT VALUES OF R AND A 2760 REM . 2770 REM .Q1 = 1 FOR IN RANGE =0 FOR OUT (PHOTON TORPEDO) 2780 REM .Q2 = PROBABILITY OF PHOTON TORPEDO HIT 2790 REM .Q3 = 1 FOR IN RANGE =0 FOR OUT (PHASOR) 2800 REM .Q4 = PROBABILITY OF PHASOR HIT 2810 REM .Q5 = 1 IF RANGE <=100000 =0 FOR RANGE >100000 2820 REM 2830 LET Q1=0 2840 LET Q2=0 2850 LET Q3=0 2860 LET Q4=0 2870 LET Q5=0 2880 LET Q7=0 2890 LET O=O(K9) 2900 LET P=P(K9) 2910 IF R<7E5 THEN 2950 2920 LET Q7=1 2925 REM 2930 REM .R IS GREATER THAN 700000 2935 REM 2940 RETURN 2950 IF R>6E5 THEN 3130 2955 REM 2970 REM .R IS BETWEEN 400000 AND 600000 2975 REM 2980 IF R>2E5 THEN 3010 2985 REM 2990 REM .R IS LESS THAN 200000 2995 REM 3000 GOTO 3050 3010 GOSUB 2570 3020 LET Q1=1 3030 IF D>P THEN 3050 3040 LET Q2=((P-D)/P)*((P-D)/P) 3050 IF R>3E5 THEN 3130 3060 LET Q3=1 3070 IF D>O THEN 3090 3080 LET Q4=SQR((O-D)/O) 3090 IF R>1E5 THEN 3130 3100 IF K9=1 THEN 3130 3110 LET Q4=1 3120 LET Q5=1 3130 RETURN 3140 REM 3150 REM .============================= 3160 REM .DAMAGE EVALUATION SUBROUTINE 3170 REM 3180 REM .S5 = PERCENTAGE OF DAMAGE 3190 REM .S8 = ZONED DAMAGE 3200 REM 3210 LET S5=100-S(J1,K) 3220 IF S5<>0 THEN 3250 3230 LET S8=1 3240 GOTO 3440 3250 IF S5>5 THEN 3280 3260 LET S8=2 3270 GOTO 3440 3280 IF S5>25 THEN 3310 3290 LET S8=3 3300 GOTO 3440 3310 IF S5>50 THEN 3340 3320 LET S8=4 3330 GOTO 3440 3340 IF S5>70 THEN 3370 3350 LET S8=5 3360 GOTO 3440 3370 IF S5>87 THEN 3400 3380 LET S8=6 3390 GOTO 3440 3400 IF S5>99.99 THEN 3430 3410 LET S8=7 3420 GOTO 3440 3430 LET S8=8 3440 RETURN 3450 REM . 3460 REM .======================================= 3470 REM .MOVE ANY STARSHIP FROM J-1 TO J POSITION 3475 REM 3480 LET X(J,K)=X(J-1,K)+COS(C*B(J,K))*V(K)*W(J,K) 3490 LET Y(J,K)=Y(J-1,K)+SIN(C*B(J,K))*V(K)*W(J,K) 3500 RETURN 3520 REM .************************************* 3530 REM .ENTERPRISE TACTICAL CHOICE SUBROUTINE 3540 REM .************************************* 3545 REM 3550 REM .INITALIZE FOR ENTERPRISE 3555 REM 3560 LET F(J,1)=0 3570 LET K=1 3575 REM 3580 REM .GIVE CAPTAIN STATUS INFORMATION 3585 REM 3590 GOSUB 3610 3600 GOTO 3950 3610 GOSUB 2070 3620 LET R=INT(R+0.5) 3630 LET A=INT(A+0.5) 3640 LET A9=(450-A)-360*INT((450-A)/360) 3650 IF J<>1 THEN 3690 3660 LET B(1,2)=A+90+RND(0)*180 3670 GOSUB 2650 3675 LET R REM 3680 REM .INITAL KLINGON BEARING IS NOT MORE THAN 3681 REM .90 DEGREES FROM ENTERPRISE 3685 REM 3690 PRINT TAB(20);"ENEMY ";X1;" IS AT RANGE ";R; 3695 PRINT " KM. AZIMUTH ";A9;" DEGREES." 3700 PRINT " SHIP DAMAGE BEARING WARP X Y" 3710 LET J1=J-1 3720 GOSUB 3740 3730 RETURN 3731 REM 3732 REM .========================================== 3735 REM .SETUP ENTERPRISE AND KLINGON DAMAGE REPORT 3736 REM .========================================== 3737 REM 3740 LET K=1 3760 GOSUB 3210 3770 LET J9=100*INT(Y(J1,K)/100) 3780 LET K9=100*INT(X(J1,K)/100) 3790 LET B(J-1,K)=INT(B(J-1,K)+0.5) 3800 LET W(J-1,K)=INT(W(J-1,K)+0.5) 3810 LET S5=INT(S5) 3820 LET B9=(450-B(J1,K))-360*INT((450-B(J1,K))/360) 3830 PRINT N1$((K*11)-10,(K*11)-1),S5;" %"; 3840 PRINT TAB(35);B9;TAB(41);W(J1,K);TAB(49);K9;TAB(58);J9 3850 LET K=2 3860 GOSUB 3210 3870 LET K9=100*INT(X(J1,K)/100) 3880 LET J9=100*INT(Y(J1,K)/100) 3890 LET B(J-1,K)=INT(B(J-1,K)+0.5) 3900 LET W(J-1,K)=INT(W(J-1,K)+0.5) 3910 LET B9=(450-B(J1,K))-360*INT((450-B(J1,K))/360) 3915 LET L=(S8*17)-16 3920 PRINT N1$(12,22),P$(L,L+16); 3925 PRINT TAB(35);B9;TAB(41);W(J1,K);TAB(49);K9;TAB(58);J9 3930 LET K=1 3940 RETURN 3941 REM .========================================= 3942 REM 3950 IF S(J-1,2)<.01 THEN 10310 3960 IF S(J-1,1)<.01 THEN 10410 3970 IF W(J,1)<>0 THEN 4110 3980 IF W(J-1,1)<>0 THEN 4110 3990 PRINT "*** MR.SCOT REPORTS THAT UNLESS WE GET UNDERWAY AT ONCE" 4000 PRINT " THE WARP DRIVE IS IN DANGER OF GOING CRITICAL AND" 4010 PRINT " SERIOUSLY DAMAGING THE ENTERPRISE." 4020 IF J<2 THEN 4110 4030 IF W(J-2,1)<>0 THEN 4110 4040 IF RND(0)>.3 THEN 4070 4050 PRINT "*** MR. SCOTT SUCCEEDS IN KEEPING ENGINES SUB-CRITTICAL." 4060 GOTO 4110 4070 PRINT A$;" MOTORS GO CRITICAL ! ! ! ! ! ! " 4080 LET T1=0 4100 GOTO 10410 4110 LET H(1)=SQR((X(J-1,1)*X(J-1,1))+(Y(J-1,1)*Y(J-1,1))) 4120 LET H(2)=SQR((X(J-1,2)*X(J-1,2))+(Y(J-1,2)*Y(J-1,2))) 4130 IF H(1)<15E5 THEN 4170 4140 PRINT "* MR. SPOCK REPORTS THAT THE CLOUD OF " 4150 PRINT "ANTI-MATTER IS GETTING DANGEROUSLY CLOSE!" 4160 STOP 4170 IF H(1)<125E4 THEN 4200 4180 PRINT "-<*>- THE ANTI-MATTER IS IN THIS SECTOR OF THE NEUTRAL ZONE!" 4190 GOTO 4240 4200 IF H(1)<1E6 THEN 4240 4210 PRINT E$;" IS NEARING NEUTRAL ZONE." 4220 PRINT "TURN AND ENGAGE KLINGON HEAVY CRUISER ";Z1;". MANEUVER" 4230 PRINT "TOWARD THE CENTER OF YOUR SECTOR." 4240 PRINT "-=<*>=- FOR AN ORDERS SUMMARY, TYPE '0'" 4250 PRINT "YOUR ORDERS, SIR"; 4260 INPUT I 4270 IF I<0 THEN 4330 4280 IF I=0 THEN 4410 4290 IF I>10 THEN 4330 4300 LET T1=I+7 4320 ON I GOTO 4590,4940,5190,5340,5620,5710,6300,6650,4360,5490 4330 PRINT "INVALID ORDER SIR..." 4340 GOTO 4250 4341 REM 4342 REM .=========================================== 4350 REM .I=9 RESPOND WITH STRATEGIC SITUATION SUMMARY 4355 REM 4360 GOSUB 3610 4365 PRINT 4370 GOTO 4250 4380 REM 4390 REM .======================================= 4400 REM .I=0 RESPOND WITH LIST OF COMMAND TYPES 4405 REM 4410 GOSUB 4430 4420 GOTO 4250 4430 PRINT A$;"FOR BREVITY GIVE COMMANDS BY TYPE" 4440 PRINT "TACTICAL MANEUVER ORDER TYPES" 4450 PRINT " 1 = WARP MANEUVER (ANY DIRECTION, ANY SPEED, NO FIRING)" 4460 PRINT " 2 = EVASIVE ACTION (ANY DIR., WARP 0-2, THEN FIRE)" 4470 PRINT " 3 = WEAPONS EXPLOITATION (SAME DIRECTION AND SPEED,FIRE TWICE)" 4480 PRINT " 4 = FIRING MANEUVER (STOP DEAD, FIRE ANY DIRECTION)" 4490 PRINT "SHIP'S OFFICERS REPORTS (DO NOT COST A GAME TURN)" 4500 PRINT " 5 = BATTLE SUMMARY REPORT (VERY LONG IF GAME IS OLD)" 4510 PRINT " 6 = WEAPONS DEPLOYMENT & EFFECT EVALUATION" 4520 PRINT " 7 = ANTICIPATED FUTURE POSITION COMPUTATION" 4530 PRINT " 8 = REQUIRED COURSE AND SPEED COMPUTATION" 4535 PRINT " 9 = STRATEGIC SITUATION SUMMARY" 4540 PRINT "10 = INTELLIGENCE PREDICTION OF NEXT KLINGON MOVE" 4545 PRINT 4550 RETURN 4560 REM 4570 REM .============================== 4580 REM .I=1 UNDERTAKE WARP MANEUVER 4585 REM 4590 PRINT C$;" WARP MANEUVER, SIR." 4595 REM 4600 REM .GET NEW COURSE BEARING 4605 REM 4610 GOSUB 2280 4620 PRINT "WARP SPEED, SIR (0 THRU 9 ONLY)"; 4630 INPUT W(J,1) 4640 IF W(J,1)<0 THEN 4690 4650 IF W(J,1)>9 THEN 4690 4660 LET T=B6*ABS(W(J,1)+W(J-1,1)) 4670 IF T<1001 THEN 4890 4680 GOTO 4710 4690 PRINT "INVALID ORDER, SIR" 4700 GOTO 4620 4710 IF (T-1000)/(50*M(1))<=1 THEN 4890 4720 PRINT "*** MR. SCOTT REPORTS THAT WARP MANUVER WILL CAUSE" 4730 PRINT "POSSIBLE STRUCTURAL DAMAGE TO THE ENTERPRISE." 4735 REM . 4740 REM .THIS HAS BEEN INCREASED SO THAT THE ENTERPRISE WILL GET 4750 REM .AT LEAST HALF ON A VIOLENT MANEUVER. MORE REALISTIC. 4755 REM 4760 PRINT "-<*>- POSSIBLE DAMAGE = ";(T-1000)/(50*M(1));"%" 4770 PRINT "DAMAGE EXPECTATION = ";.75*(T-1000)/(50*M(1));"%" 4780 PRINT "+++ DO YOU WISH TO RECONSIDER SIR ? (Y OR N)"; 4790 INPUT H$ 4795 PRINT A$ 4800 IF H$="NO" THEN 4830 4810 LET H3=1 4820 GOTO 4250 4830 LET S1=INT((T-1000)/(50*M(1))-RND(0)*(T-1000)/(100*M(1))) 4840 PRINT "CAPTIN ";N$;", DAMAGE REPORT FROM MR.SCOTT INDICATES" 4850 PRINT "VIOLENT MANEUVER CAUSED APPROXIMATELY ";S1;"% DAMAGE." 4860 IF S1=0 THEN 4890 4870 LET S(J-1,1)=S(J-1,1)-S1 4880 PRINT "-<*>- EFFECTIVENESS NOW REDUCED TO ";S(J-1,1);"%" 4890 ON H3 GOTO 6820,5070,5390 4910 REM 4920 REM .=============================== 4930 REM .I=2 UNDERTAKE EVASIVE ACTION 4935 REM 4940 PRINT C$;"EVASIVE MOTION, SIR." 4945 REM 4950 REM .GET NEW COURSE BEARING FOR EVASIVE MANEUVER 4955 REM 4960 GOSUB 2280 4970 PRINT "PLEASE ENTER WARP SPEED (0,1 OR 2 ONLY)"; 4980 INPUT W(J,1) 4990 IF W(J,1)<0 THEN 5010 5000 IF W(J,1)<=2 THEN 5030 5010 PRINT U$ 5020 GOTO 4970 5030 LET H3=2 5040 GOTO 4660 5045 REM 5050 REM .GET COURSE BEARING FOR FIRING AT TIME J 5055 REM 5070 PRINT "NEW BEARING FOR FIRING"; 5080 GOSUB 3480 5090 GOSUB 2290 5095 REM 5100 REM .GET WEAPONS SELECTION 5105 REM 5110 GOSUB 2430 5120 LET F(J-1,1)=0 5130 LET F(J,1)=F3 5140 LET H3=1 5150 GOTO 6820 5160 REM 5170 REM .============================================= 5180 REM .I=3 UNDERTAKE WEAPONS EXPLOITATION MANEUVER 5185 REM 5190 PRINT "-<*>- PRESENT COURSE, BEARING, AND SPEED SIR." 5200 LET B(J,1)=B(J-1,1) 5210 LET W(J,1)=W(J-1,1) 5220 PRINT A$;"FIRST SHOT" 5225 REM 5230 REM .GET WEAPONS SELECTION 5235 REM 5240 GOSUB 2430 5250 LET F(J-1,1)=F3 5255 REM 5260 PRINT A$;"SECOND SHOT" 5265 REM 5270 REM .GET WEAPONS SELECTION 5275 REM 5280 GOSUB 2430 5290 LET F(J,1)=F3 5300 GOTO 6820 5310 REM 5320 REM .================================= 5330 REM .I=4 UNDERTAKE FIRING MANEUVER 5335 REM 5340 PRINT C$;"DEAD STOP AND FIRE, SIR." 5350 LET W(J,1)=0 5355 REM 5360 REM .GET COURSE FOR FIRING AT TIME J-1 5365 REM 5370 GOSUB 2280 5380 LET H3=3 5390 LET B(J-1,1)=B(J,1) 5395 REM 5400 REM .GET WEAPONS SELECTION 5405 REM 5410 GOSUB 2430 5420 LET F(J-1,1)=F 5430 LET F(J,1)=0 5440 LET H3=1 5450 GOTO 6820 5460 REM 5470 REM .============================================ 5480 REM .I=10 RESPOND WITH PREDICTED KLINGON ACTION 5485 REM 5490 PRINT C$;"THE MOST LIKELY MANEUVER WILL BE THAT THE" 5500 LET H1=B(J-1,2) 5510 GOSUB 6900 5520 LET B(J-1,2)=H1 5530 LET H1=99999 5540 LET B9=(450-B(J,2))-360*INT((450-B(J,2))/360) 5550 PRINT "BEARING = ";B9 5560 PRINT "WARP = ";W(J,2);A$ 5570 LET K=1 5580 GOTO 4250 5590 REM 5600 REM .====================================== 5610 REM .I=5 RESPOND WITH BATTLE SUMMARY REPORT 5615 REM 5620 PRINT C$;"BATTLE SUMMARY REPORT, SIR.";A$ 5625 PRINT "* SHIP DAMAGE BEARING WARP X Y" 5630 FOR J1=1 TO J-1 5640 PRINT A$;"GAME CYCLE = ";J1 5650 GOSUB 3740 5660 NEXT J1 5665 PRINT 5670 GOTO 4250 5680 REM 5690 REM .================================================== 5700 REM .I=6 RESPOND WITH WEAPONS DEPLOYMENT AND EFFECT REPORT 5705 REM 5710 PRINT "-<*>- READY TO COMPUTE WEAPONS DEPLOYMENT + EFFECTIVENESS" 5730 PRINT A$;"WHAT IS ANTICIPATED ENEMY X-COORDINATE?" 5740 PRINT "(ENTER 0 IF PRESENT ENEMY LOCATION IS TO BE USED)" 5750 INPUT X9 5760 IF X9<>0 THEN 5800 5770 LET X9=X(J-1,2) 5780 LET Y9=Y(J-1,2) 5790 GOTO 5820 5800 PRINT "WHAT IS ANTICIPATED ENEMY Y-COORDINATE?" 5810 INPUT Y9 5820 PRINT "WHAT COORDINATE OF LOCATION FROM WHICH WE FIRE?" 5830 PRINT "(ENTER 0 IF WE ARE TO FIRE FROM PRESENT LOCATION)" 5840 INPUT X8 5850 IF X8=0 THEN 5890 5860 PRINT "WHAT IS Y-COORDINATE OF LOCATION FROM WHICH WE FIRE?" 5870 INPUT Y8 5880 GOTO 5910 5890 LET X8=X(J-1,1) 5900 LET Y8=Y(J-1,1) 5910 LET X1=X9-X8 5920 LET Y1=Y9-Y8 5930 GOSUB 1850 5940 LET A9=(450-A)-360*INT((450-A)/360) 5950 PRINT " ";A;" KM. AZIMUTH = ";A9;" DEGREES." 5960 PRINT "-<*>- EXPECTED SHIP'S BEARING AT THE TIME OF FIRING?" 5970 INPUT A3 5975 PRINT 5980 LET A3=(450-A3)-360*INT((450-A3)/360) 5990 LET D=ABS(A-A3) 6000 REM 6010 REM .GO TO WEAPONS EVALUATION SUBROUTINE 6015 REM 6020 LET K9=1 6030 GOSUB 2570 6040 GOSUB 2830 6050 IF Q1=1 THEN 6090 6060 IF Q3=1 THEN 6150 6070 PRINT "* NOT IN RANGE OF ANY WEAPON" 6080 GOTO 6210 6090 IF Q2=0 THEN 6130 6100 PRINT "* A PHOTON TORPEDO LAUNCHED AT PRESENT AZIMUTH HAS" 6110 PRINT " A HIT PROBABILITY OF ";Q2 6120 GOTO 6140 6130 PRINT "* IN PHOTON TORPEDO RANGE, BUT A SURE MISS AT PRESENT AZIMUTH." 6140 IF Q3=0 THEN 6210 6150 IF Q4=0 THEN 6190 6160 PRINT "* A PHASOR LAUNCHED AT PRESENT AZIMUTH HAS" 6170 PRINT " A HIT PROBABILITY OF ";Q4 6180 GOTO 6210 6190 PRINT "* IN PHASOR RANGE, BUT A SURE MISS AT PRESENT AZIMUTH." 6210 PRINT A$;"SIR, WOULD YOU LIKE TO TRY ANOTHER BEARING ?" 6220 INPUT (1,0)"(ENTER Y OR N)---=>",L$ 6230 IF L$="Y" THEN 5960 6235 PRINT 6240 IF L$="N" THEN 4250 6250 PRINT U$ 6260 GOTO 6210 6270 REM 6280 REM .================================================== 6290 REM .I=7 RESPOND WITH FUTURE POSITION COMPUTATION REPORT 6295 REM 6300 PRINT "FOR ANTICIPATED FUTURE POSITION OF ENTERPRISE, ENTER 1" 6310 PRINT "TO COMPUTE ANTICIPATED FUTURE POSITION OF KLINGON, ENTER 2" 6320 LET K1=K 6330 INPUT K 6340 IF K=1 THEN 6380 6350 IF K=2 THEN 6380 6360 PRINT U$ 6370 GOTO 6300 6380 PRINT A$;"ENTER SHIP'S ANTICIPATED COURSE BEARING."; 6390 INPUT B7 6400 LET B7=((450-B7)-360)*INT((450-B7)/360) 6410 IF B7<0 THEN 6440 6420 IF B7>360 THEN 6440 6430 GOTO 6460 6440 PRINT U$ 6450 GOTO 6380 6460 PRINT "ENTER SHIP'S ANTICIPATED WARP SPEED (0-9)"; 6470 INPUT W7 6480 IF W7<0 THEN 6500 6490 IF W7<=9 THEN 6520 6500 PRINT U$ 6510 GOTO 6460 6520 LET X7=X(J-1,K)+COS(C*B7)*V(K)*W7 6530 LET Y7=Y(J-1,K)+SIN(C*B7)*V(K)*W7 6550 PRINT A$;"ANTICIPATED FUTURE POSITION OF THE ";N1$((K*11)-10,K*11) 6580 PRINT " X-COORDINATE = ";X7 6590 PRINT " Y-COORDINATE = ";Y7;A$ 6600 LET K=K1 6610 GOTO 4250 6620 REM 6630 REM .================================================== 6640 REM .I=8 RESPOND WITH REQUIRED COURSE & SPEED COMPUTATION RPT 6645 REM 6650 PRINT "-<*>- READY TO COMPUTE AZIMUTH AND SPEED REQUIRED." 6660 PRINT "FOR ENTERPRISE TO MOVE TO ANY DESIRED NEW LOCATION." 6670 PRINT "ENTER X-COORDINATE OF DESIRED LOCATION"; 6680 INPUT X8 6690 PRINT "ENTER Y-COORDINATE OF DESIRED LOCATION"; 6700 INPUT Y8 6710 LET X1=X8-X(J-1,1) 6720 LET Y1=Y8-Y(J-1,1) 6730 GOSUB 1850 6740 LET W7=R/V(1) 6750 LET A9=(450-A)-360*INT((450-A)/360) 6760 PRINT A$;"REQUIRED AZIMUTH = ";A9 6780 PRINT "REQUIRED WARP SPEED = ";W7;A$ 6790 GOTO 4250 6800 REM 6801 REM .************************ 6810 REM .END OF STARSHIP TACTICS 6815 REM .************************ 6820 LET F1=F(J,1) 6840 GOTO 1440 6850 REM 6860 REM .************************ 6870 REM .INITALIZE FOR KLINGON 6880 REM .************************ 6890 REM 6900 LET K9=2 6910 LET V4=0 6920 LET F(J,2)=0 6930 LET F(J-1,2)=0 6935 REM 6940 REM .GET RANGE & AZIMUTH & WEAPONS FIRING EXPECTATION 6945 REM 6950 GOSUB 2070 6960 LET D=ABS(B(J-1,K9)-A) 6970 LET D5=ABS(B(J,1)-A) 6980 LET K=2 6990 GOSUB 2570 6995 REM 7000 REM .GO TO WEAPONS EVALUATION SUBROUTINE 7005 REM 7010 GOSUB 2830 7015 REM 7020 REM .CHECK ON ENTERPRISE "BORE IN" TACTICS 7025 REM 7030 IF J<3 THEN 7230: REM ....IF J<2 THEN 7230 7040 IF W(J-1,2)<>0 THEN 7070 7050 IF M(1)>2.5 THEN 8500 7060 GOTO 8460 7070 IF Q5=1 THEN 8130 7080 IF B(J-2,1)<>B(J-1,1) THEN 7230 7090 IF B(J-1,1)<>B(J,1) THEN 7230 7100 IF R>6E5 THEN 8500 7110 LET F(J-1,2)=0 7120 LET F(J,2)=0 7130 LET D5=D 7140 IF R>3E5 THEN 7170 7150 IF D5>M(1)*45 THEN 7200 7160 GOTO 8650 7170 IF R>6E5 THEN 8500 7180 IF D5>M(1)*5 THEN 7200 7190 GOTO 8650 7195 REM 7200 REM .ENTERPRISE IS IN RANGE AND NOT THREATENING A TYPE 3 7210 REM .MANEUVER IT USED TO BE IF B(J-1,2)=B(J,2) GO TO FLEE 7215 REM 7220 GOTO 9070 7225 REM 7230 REM .CHECK TO SEE IF RANGE IS GREATER THAN 700000 7235 REM 7240 IF M(1)>2.5 THEN 7270 7250 IF R>7E5 THEN 8500 7260 GOTO 7280 7270 IF R>6E5 THEN 8500 7280 IF Q3=1 THEN 7310 7290 IF Q2>.5 THEN 7340 7300 GOTO 7470 7310 IF Q2<.5 THEN 8090 7315 REM 7320 REM .ENTERPRISE IN TORPEDO RANGE & GOOD FIRING BEARING 7330 REM .ENTER TYPE 3 WEAPONS EXPLOITATION MANEUVER 7335 REM 7340 IF Q5=1 THEN 8130 7350 IF Q3=1 THEN 7400 7360 LET F(J-1,2)=1 7370 LET F(J,2)=1 7380 PRINT "KLINGON EXECUTES TYPE 3TT MANEUVER" 7390 GOTO 7430 7400 LET F(J-1,2)=1 7410 LET F(J,2)=2 7420 PRINT "KLINGON EXECUTES TYPE 3TP MANEUVER" 7430 LET B(J,2)=B(J-1,2) 7440 LET W(J,2)=W(J-1,2) 7450 GOTO 9620 7455 REM 7460 REM .CHECK TO SEE IF IN TORPEDO RANGE BUT BAD BEARING 7465 REM 7470 IF R<4E5 THEN 7730 7480 IF J<3 THEN 7890: REM ....IF J<2 THEN 7890 7490 IF W(J-2,2)<>2 THEN 7890 7500 IF W(J-1,2)<>2 THEN 7890 7510 IF M(1)>1.5 THEN 9070 7520 GOTO 8700 7540 IF W(J-1,1)>2 THEN 7580 7550 LET X8=X(J-1,1)+COS(C*B(J-1,1))*V(1)*W(J-1,1) 7560 LET Y8=Y(J-1,1)+SIN(C*B(J-1,1))*V(1)*W(J-1,1) 7570 GOTO 7600 7580 LET X8=X(J-1,1 7590 LET Y8=Y(J-1,1) 7600 LET W(J,2)=2 7610 GOSUB 9090 7620 GOSUB 3480 7630 LET V5=1 7640 LET X1=X8-X(J,2) 7650 LET Y1=Y8-Y(J,2) 7660 GOSUB 1850 7670 LET B(J,2)=A 7680 GOSUB 2650 7690 LET F(J-1,2)=0 7700 LET F(J,2)=1 7710 GOTO 9620 7715 REM 7720 REM .ENTERPRISE IN TORPEDO RANGE BUT BAD BEARING 7725 REM 7730 IF W(J-1,2)=0 THEN 8460 7735 REM 7740 REM .ENTER TYPE 4 FIRING MANEUVER 7745 REM 7750 LET F(J-1,2)=1 7760 LET F(J,2)=0 7770 PRINT "KLINGON EXECUTES TYPE 4T MANEUVER" 7780 LET W(J,2)=0 7790 LET B(J,2)=A+180 7800 GOSUB 2650 7810 LET B6=ABS(B(J,2)-B(J-1,2)) 7820 IF B6<180 THEN 7840 7830 LET B6=360-B6 7840 LET T=B6*(W(J,2)+W(J-1,2)) 7850 IF T<1050 THEN 9390 7860 LET B(J,2)=A 7870 GOSUB 2650 7880 GOTO 9390 7890 IF M(1)>2.5 THEN 7750 7900 PRINT "KLINGON EXECUTES TYPE 2T MANEUVER" 7920 IF M(1)>1.5 THEN 7950 7930 IF R<6E5 THEN 7540 7935 REM 7940 REM .EVASIVE ACTION DOES NOT BEGIN AS SUCH UNTIL R<600000 7945 REM 7950 LET W(J,2)=2 7960 LET B(J,2)=A+180 7970 GOSUB 2650 7980 LET B6=ABS(B(J,2)-B(J-1,2) 7990 IF B6<=180 THEN 8010 8000 LET B6=360-B6 8010 IF B6*(W(J,2)+W(J-1,2))<=1000 THEN 7690 8020 LET B(J,2)=A 8030 GOSUB 3480 8040 LET V5=1 8050 LET B(J,2)=A+180 8060 GOTO 7680 8065 REM 8080 REM .CHECK TO SEE IF GOOD PHASOR SHOT 8085 REM 8090 IF Q5=1 THEN 8130 8100 IF Q4<.75 THEN 8170 8105 REM 8110 REM .GOOD PHASOR SHOT ON PRESENT BEARIN 8120 REM .ENTER TYPE 3 WEAPONS EXPLOITATION MANEUVER 8125 REM 8130 LET F(J-1,2)=2 8140 LET F(J,2)=2 8150 PRINT "KLINGON EXECUTES TYPE 3PP MANEUVER" 8160 GOTO 7430 8170 IF Q3=0 THEN 8500 8180 IF R<2E5 THEN 8390 8190 IF M(1)>2.5 THEN 8410 8200 PRINT "KLINGON EXECUTES TYPE 2P MANEUVER" 8210 LET F(J-1,2)=0 8220 LET F(J,2)=2 8230 LET W(J,2)=2 8240 LET B(J,2)=A+180 8250 GOSUB 2650 8260 LET B9=B(J,2) 8270 GOSUB 2650 8280 LET B6=ABS(B(J,2)-B(J-1,2)) 8290 IF B6<=180 THEN 8310 8300 LET B6=360-B6 8310 IF B6*(W(J,2)+W(J-1,2))<=1000 THEN 8370 8320 LET B(J,2)=A 8330 GOSUB 3480 8340 LET V5=1 8350 LET B(J,2)=B9 8370 GOTO 9620 8375 REM 8380 REM .GOOD PHASOR SHOT BUT BAD BEARING 8385 REM 8390 IF W(J-1,2)=0 THEN 8500 8395 REM 8400 REM .ENTER TYPE 4 FIRING MANEUVER 8405 REM 8410 LET F(J-1,2)=2 8420 LET F(J,2)=0 8430 PRINT "KLINGON EXECUTES TYPE 4P MANEUVER" 8440 GOTO 7780 8445 REM 8450 REM .NO GOOD SHOTS - TRY WARP MANEUVER 8455 REM 8460 IF B(J-1,1)=B(J,1) THEN 7100 8470 IF S(J-1,2)<50 THEN 7100 8480 IF R<3E5 THEN 8190 8490 IF R<45E4 THEN 7890 8500 LET F(J-1,2)=0 8510 LET F(J,2)=0 8520 IF M(1)>2.5 THEN 8570 8530 IF W(J-1,2)<>0 THEN 8570 8540 IF B(J-1,1)=B(J,1) THEN 7100 8550 IF R<3E5 THEN 8190 8560 IF R<4E5 THEN 7890 8570 IF R>6E5 THEN 8950 8580 IF RND(0)<.25 THEN 8870 8590 IF RND(0)<.50 THEN 8950 8600 IF RND(0)<.75 THEN 9070 8610 IF M(1)>1.5 THEN 8630 8620 GOTO 8700 8630 IF RND(0)<.833 THEN 8870 8640 IF RND(0)<.916 THEN 9070 8645 REM 8650 REM .GET READY FOR A NON-FIRING SHOT 8655 REM 8660 LET F(J-1,2)=0 8670 LET F(J,2)=0 8680 GOTO 9070 8685 REM 8690 REM .KLINGON EXECUTES TYPE 1 MANEUVER 8691 REM .CLOSING IN ON SLOW-MOVING ENTERPRISE 8695 REM 8700 LET W(J,2)=9 8710 IF RND(0)>.5 THEN 8740 8720 LET B(J,2)=A+180+30+30*RND(0) 8730 GOTO 8750 8740 LET B(J,2)=A+180-30-30*RND(0) 8750 GOSUB 2650 8760 LET B6=ABS(B(J,2)-B(J-1,2)) 8770 IF 11*B6>1000 THEN 7100 8780 PRINT "KLINGON EXECUTES TYPE 1 MANEUVER" 8790 LET F(J-1,2)=0 8800 LET F(J,2)=0 8810 GOTO 9610 8830 REM 8840 REM .ZERO IN ON PRESENT POSITIO 8850 REM 8870 LET B(J,2)=A+180 8880 GOSUB 2650 8890 LET W(J,2)=(R/V(K))*(.95+.1*RND(0)) 8900 LET W(J,2)=INT(W(J,2)) 8910 PRINT "KLINGON HOMES IN ON OLD ENTERPRISE POSITION" 8920 GOTO 9340 8925 REM 8930 REM .NO WEAPONS - SO ZERO IN ON ENTERPRISE POSITION 8940 REM .IF IT CONTINUES COURSE & SPEED 8945 REM 8950 LET X7=X(J-1,1)+COS(C*B(J-1,1))*V(1)*W(J-1,1) 8960 LET Y7=Y(J-1,1)+SIN(C*B(J-1,1))*V(1)*W(J-1,1) 8970 LET X1=X7-X(J-1,2) 8980 LET Y1=Y7-Y(J-1,2) 8985 REM . 8990 REM .FIND RANGE AND AZIMUTH TO EXPECTED ENTERPRISE POSITION 8995 REM 9000 GOSUB 1850 9010 LET B(J,2)=A 9020 LET W(J,2)=(R/V(K))*(.95+.1*RND(0)) 9030 LET W(J,2)=INT(W(J,2)) 9040 PRINT "KLINGON HOMES IN ON PROJECTED ENTERPRISE POSITION" 9050 GOTO 9340 9055 REM 9060 REM .DISENGAGE FROM PRESENT LINE OF FIRE 9065 REM 9070 GOSUB 9090 9080 GOTO 9210 9090 LET B(J,2)=A+90 9100 GOSUB 2650 9110 LET B6=ABS(B(J,2)-B(J-1,2)) 9120 IF B6<180 THEN 9140 9130 LET B6=360-B6 9140 IF B6<90 THEN 9170 9150 LET B(J,2)=A+270 9160 GOTO 9180 9170 LET B(J,2)=A+90 9180 GOSUB 2650 9190 RETURN 9195 REM 9200 REM .SET UP THE WARP FOR THE KLINGON FLEE MANEUVER 9205 REM 9210 IF M(1)<=1.5 THEN 9240 9220 LET W(J,2)=9 9230 IF M(1)>2.5 THEN 9310 9240 LET W(J,2)=INT(R/V(K)+.5) 9250 IF W(J,2)<9 THEN 9270 9260 LET W(J,2)=9 9270 IF B6*(W(J,2)+W(J-1,2))<1000 THEN 9310 9280 LET W(J,2)=W(J,2)-RND(0)*.5*W(J,2) 9290 IF W(J,2)>1 THEN 9310 9300 LET W(J,2)=1 9310 PRINT "KLINGON FLEES FROM PRESENT LINE OF FIRE" 9320 GOSUB 2650 9325 REM 9330 REM .CHECK MANEUVER FOR EXCESSIVE VIOLENCE 9335 REM 9340 IF W(J,2)<9 THEN 9360 9350 LET W(J,2)=9 9360 LET B6=ABS(B(J,2)-B(J-1,2)) 9370 IF B6<180 THEN 9390 9380 LET B6=360-B6 9390 LET T=B6*(W(J-1,2)+W(J,2)) 9400 IF T<1000 THEN 9610 9410 IF RND(0)<.5 THEN 9500 9420 LET W(J,2)=(1000/B6)-W(J-1,2) 9430 IF W(J,2)>0 THEN 9610 9440 LET W(J,2)=0 9450 IF H1<>99999 THEN 9640 9460 PRINT N1$((K*11)-10,K*11);" SHIP WRACKED BY MYSTERIOUS EXPLOSION." 9470 LET S2=INT(RND(0)*(W(J,2)+W(J-1,2))*B6/(50)) 9480 GOTO 9530 9500 IF H1<>99999 THEN 9640 9510 PRINT "== KLINGON EXECUTES VIOLENT MANEUVER !!" 9520 LET S2=INT(RND(0)*(T-1000)/50) 9530 LET S(J-1,2)=S(J-1,2)-S2 9540 IF S2>5 THEN 9570 9550 PRINT "IT SEEMS TO HAVE DAMAGED ITSELF SLIGHTLY" 9560 GOTO 9610 9570 IF S2>25 THEN 9600 9580 PRINT "IT SEEMS TO HAVE DAMAGED ITSELF SIGNIFICANTLY" 9590 GOTO 9610 9600 PRINT "IT SEEMS TO HAVE DONE VERY GREAT DAMAGE TO ITSELF" 9610 LET F2=F(J,2) 9620 LET S(J,K)=S(J-1,K) 9630 RETURN 9640 GOSUB 10250 9650 RETURN 9670 REM 9680 REM .************************************************** 9690 REM .TACTICAL EVAL. & DAMAGE ASSESS. PART OF GAME CYCLE 9700 REM .************************************************** 9705 REM 9710 LET S(J,1)=S(J-1,1) 9720 LET S(J,2)=S(J-1,2) 9725 PRINT 9730 FOR J9=J-1 TO J 9740 FOR K9=1 TO 2 9750 LET K8=2 9760 IF K9<2 THEN 9780 9770 LET K8=1 9780 IF J9=J THEN 9830 9785 REM 9790 REM .GET RANGE & AZIMUTH AT HALFWAY BETWEEN J-1 & J 9795 REM 9800 GOSUB 2140 9810 GOTO 9840 9815 REM 9820 REM .GET RANGE & AZIMUTH AT J 9825 REM 9830 GOSUB 2200 9840 LET D=ABS(B(J9,K9)-A) 9850 GOSUB 2570 9860 GOSUB 2830 9870 LET F3=F(J9,K9) 9880 LET F4=F3+1 9890 IF F4>3 THEN 945 9900 IF F4<1 THEN 9450 9910 ON F4 GOTO 9920,9950,10100 9920 PRINT "#" 9930 GOTO 10230 9935 REM 9940 REM .F3=1 : FIRE TORPEDO 9945 REM 9950 IF Q2>0 THEN 10000 9955 REM 9960 REM .BAD TORPEDO SHOT 9965 REM 9970 PRINT N1$((K9*11)-10,K9*11);" PHOTON TORPEDO WASTED BY BAD SHOT" 9980 GOTO 10230 9985 REM 9990 REM .GOOD TORPEDO SHOT 9995 REM 10000 IF RND(0)>Q2 THEN 10070 10005 REM 10010 REM .SUCCESSFUL SHOT 10015 REM 10020 PRINT "> > > > > > > > ";N1$((K9*11)-10,K9*11); 10025 PRINT " TORPEDO HITS ";N1$((K8*11)-10,K8*11) 10030 REM .HOW MUCH DAMAGE 10035 REM 10040 LET S1=RND(0)*50 10050 LET S(J,K8)=S(J,K8)-S1 10060 GOTO 10230 10070 PRINT ">>> >> > >> > >> > ";N1$((K8*11)-10,K8*11); 10075 PRINT " DEFLECTS ";N1$((K9*11)-10,K9*11);" PHOTON TORPEDO" 10080 GOTO 10230 10085 REM 10090 REM .F3=2 : FIRE PHASORS 10095 REM 10100 IF Q4>0 THEN 10150 10105 REM 10110 REM .BAD SHOT 10115 REM 10120 PRINT N1$((K9*11)-10,K9*11);" PHASOR SHOT WIDE OF "; 10125 PRINT N1$((K8*11)-10,K8*11);", SHOT WASTED" 10130 GOTO 10230 10135 REM 10140 REM .GOOD PHASOR SHOT 10145 REM 10150 IF RND(0)>Q4 THEN 10220 10155 REM 10160 REM .SUCCESSFUL GOOD PHASOR SHOT 10165 REM 10170 PRINT " > > > > > > > > ";N1$((K9*11)-10,K9*11); 10175 PRINT " PHASOR HITS ";N1$((K8*11)-10,K8*11) 10180 REM .HOW MUCH DAMAGE 10185 REM 10190 LET S1=RND(0)*25 10200 GOTO 10050 10205 REM 10210 REM .UNSUCCESSFUL GOOD PHASOR SHOT 10215 REM 10220 PRINT ">> >> >> >> ";N1$((K8*11)-10,K8*11); 10225 PRINT " SHIELDS PROTECT AGAINST ";N1$((K9*11)-10,K9*11);" PHASOR." 10230 NEXT K9 10240 NEXT J9 10250 LET F(J,1)=0 10260 LET F(J,2)=0 10270 RETURN 10280 REM 10290 REM .********************** 10300 REM .END OF GAME WRAP UP 10305 REM .********************** 10306 REM 10310 IF S(J-1,1)<.01 THEN 10470 10320 PRINT D$;"CONGRATULATIONS CAPTAIN ";N$ 10330 PRINT "== KLINGON HEAVY CRUISER ";Z1;" HAS BEEN DESTROYED!" 10340 LET T1=2 10360 GOTO 10910 10365 PRINT A$;"PLAY ANOTHER GAME, SIR . . ." 10380 INPUT (1,0)"(ENTER Y OR N)---=>",B$ 10390 IF B$="Y" THEN 850 10400 STOP 10410 PRINT D$;" ENTERPRISE DESTROYED" 10420 LET T1=3 10440 PRINT "-<*>- YOU AND SEVERAL CREW MEMBERS ESCAPE." 10450 PRINT A$;"YOU ARE PICKED UP BY ANOTHER STARSHIP" 10460 GOTO 10360 10470 PRINT D$;"ENTERPRISE AND KLINGON DESTROY EACH OTHER " 10480 LET T1=4 10500 GOTO 10440 10505 REM 10506 REM .================================================== 10510 REM .EXPERIMENTAL : MAKE KLINGON TRY TO BREAK CONTACT 10516 REM .================================================== 10517 REM 10520 PRINT "KLINGON TRIES TO BREAK CONTACT" 10530 LET X1=X(J-1,2) 10540 LET Y1=Y(J-1,2) 10550 GOSUB 1850 10560 LET E(2)=A 10570 GOSUB 2070 10580 LET E(1)=A 10590 LET B(J,2)=E(2)+(E(2)-E(1))/2 10600 GOSUB 2650 10610 LET B6=ABS(E(1)-B(J,2)) 10620 IF B6<180 THEN 10640 10630 LET B6=360-B6 10640 IF B6<90 THEN 10670 10641 STOP: REM ,,, LL ERROR 10670 PRINT 'MISSING LINE 10670' 10671 STOP 10910 PRINT 'MISSING LINE 10910'