1279 lines
42 KiB
QBasic
1279 lines
42 KiB
QBasic
10 'BASED ON BIGTREK GAME / SHORTENED BY EDISON DOGGE.
|
||
20 WIDTH90:LQ=1000'REM NO SCORE - NO VISUALS
|
||
30 INPUT"CLEARANCE NUMBER (1 TO 25000)...";I
|
||
40 IFI<1ORI>25000ORI<>INT(I)THEN30
|
||
50 I1=IMOD97:IFI1=0THENI=I+199:GOTO50
|
||
60 I=RND(-I1):FORI1=1TOI:X=RND(1):NEXT
|
||
70 DIM G1$(16),V$(5,5),C$(20),G(8,8),D$(12),Q$(10,10),D4(12),D9(106)
|
||
80 DIM S2(8,8):Q$="?"
|
||
90 DATA S.R. SENSORS,L.R. SENSORS,PHASERS,PHOTON TUBES,LIFE SUPPORT
|
||
100 DATA WARP ENGINES,IMPULSE ENGINES,SHIELDS,SUBSPACE RADIO
|
||
110 DATA SHUTTLE CRAFT,COMPUTER,TRANSFER PANEL,ABANDON,CHART,COMPUTER
|
||
120 DATA DAMAGES,DESTRUCT,DOCK,IDLE,IMPULSE,LRSCAN,NAVIGATE,PHASERS,QUIT
|
||
130 DATA SHIELDS,SOS,SRSCAN,STATUS,TORPEDO,TRANSFER,VISUAL,WARP,SHORT
|
||
140 DATA MEDIUM,LONG,BEGINNER,NOVICE,SENIOR,EXPERT,COURSE,WCOST,ICOST
|
||
150 DATA PEFFECT,OUT,ANTARES,SIRIUS,RIGEL,MERAK,PROCYON,CAPELLA
|
||
160 DATA VEGA,DENEB,CANOPUS,ALDEBARAN,ALTAIR,REGULUS,BELLATRIX,ARCTURUS
|
||
170 DATA POLLUX,SPICA,10.5,12,1.5,9,0,3,7.5,6,4.5
|
||
180 DEF FNA(X)=INT(8*RND(X))+1:DEF FNB(X)=INT(10*RND(X))+1
|
||
190 DEF FND(X)=X/60
|
||
200 DEFFNR(X)=INT(X*10+.5)/10:DEFFNS(X)=INT(X*100+.5)/100
|
||
210 FORI=1TO12:READD$(I):NEXT:FORI=1TO20:READC$(I):NEXT
|
||
220 FORI=1TO3:READT$(I):NEXT:FORI=1TO4:READS$(I):NEXT:FORI=1TO5
|
||
230 READC2$(I):NEXT:FORI=1TO16:READG1$(I):NEXT:FORI=1TO9:READC5(I):NEXT
|
||
240 GOSUB9760:S7$(1)="":S7$(2)=" ":S7$(3)=" ":S7$(4)=""
|
||
250 IFA2<>0THEN760
|
||
260 J4=0:T1=0:INPUT"COMMAND";A$:IFLEN(A$)>1THEN280
|
||
270 PRINT"2 LETTERS, PLEASE.":GOTO260
|
||
280 FORI=1TO20
|
||
290 IFA$=LEFT$(C$(I),LEN(A$))THEN350
|
||
300 NEXT
|
||
310 PRINT"ILLEGAL !! - USE THIS LIST"
|
||
320 PRINT:FORI=1TO20STEP4
|
||
330 PRINTC$(I);TAB(12);C$(I+1);TAB(22);C$(I+2);TAB(32);C$(I+3)
|
||
340 NEXT:PRINT:GOTO250
|
||
350 ONIGOTO370,380,390,400,410,420,430,470,490,500
|
||
360 ONI-10GOTO530,760,550,580,590,600,610,620,660,670
|
||
370 GOSUB 12310:GOTO250
|
||
380 GOSUB 2020:GOTO250
|
||
390 GOSUB2540:GOTO250
|
||
400 GOSUB3540:GOTO250
|
||
410 GOSUB12550:GOTO250
|
||
420 GOSUB3430:GOTO250
|
||
430 GOSUB11700:IFJ3=0THEN250
|
||
440 IFA2<>0THEN760
|
||
450 IFG(Q1,Q2)=1000THEN720
|
||
460 GOSUB790:GOTO250
|
||
470 GOSUB5390:IFJ3=0THEN250
|
||
480 GOTO680
|
||
490 GOSUB5650:GOTO250
|
||
500 GOSUB11830
|
||
510 IFJ3=0THEN250
|
||
520 GOTO680
|
||
530 GOSUB8270:IFJ3=0THEN250
|
||
540 GOSUB790:GOTO250
|
||
550 GOSUB10370:IFJ3=0THEN250
|
||
560 IFA2<>0THEN760
|
||
570 GOSUB790:S9=0:GOTO250
|
||
580 GOSUB4720:GOTO250
|
||
590 GOSUB11090:GOSUB5650:GOTO250
|
||
600 PRINT:GOSUB12770:GOTO250
|
||
610 GOSUB8660:IFJ3=0THEN250ELSE680
|
||
620 GOSUB11560:IFJ3=0THEN250
|
||
630 IFA2<>0THEN760
|
||
640 IFG(Q1,Q2)<>LQTHEN250
|
||
650 GOTO720
|
||
660 PRINT:PRINT"VISUAL INOPERATIVE !":RETURN
|
||
670 GOSUB10210:GOTO250
|
||
680 IFA2<>0THEN760
|
||
690 IFT1<>0THENGOSUB3640
|
||
700 IFA2<>0THEN760
|
||
710 IFG(Q1,Q2)<LQTHEN750
|
||
720 GOSUB1580:IFA2<>0THEN760
|
||
730 IFA2<>0THEN760
|
||
740 GOTO710
|
||
750 GOSUB790:GOTO250
|
||
760 PRINT:PRINT:INPUT"ANOTHER GAME ";A$
|
||
770 IFLEFT$(A$,1)="Y"THEN240
|
||
780 PRINTCHR$(26):END
|
||
790 IF(C3<>0)AND(J4=0)THENGOSUB6620
|
||
800 IFK3=0THENRETURN
|
||
810 IFA2<>0THENRETURN
|
||
820 P2=1/I8
|
||
830 J5=0
|
||
840 PRINT
|
||
850 IFC5$="DOCKED"THEN1530
|
||
860 H2=0:H3=0:C6=1
|
||
870 IFS9=1THENC6=.5+.5*RND(1)
|
||
880 A3=0
|
||
890 FORL=1TOK3
|
||
900 IFK6(L)<0THEN1320
|
||
910 A3=1
|
||
920 D6=.8+.05*RND(1)
|
||
930 H4=K6(L)*D6^K8(L)
|
||
940 IF(S4=0)AND(S9=0)THEN1000
|
||
950 P3=.1:IFP2*S3>P3THENP3=P2*S3
|
||
960 H5=P3*C6*H4+1
|
||
970 IFH5>S3THENH5=S3
|
||
980 S3=S3-H5:H4=H4-H5
|
||
990 IF(P3>.1)AND(H4<5E-03*E1)THEN1320
|
||
1000 J5=1
|
||
1010 PRINTFNR(H4);"UNIT HIT ON THE ";S5$;" FROM ";
|
||
1020 J6=K4(L):J7=K5(L)
|
||
1030 IFQ$(J6,J7)="K"THENPRINT"KLINGON AT";
|
||
1040 IFQ$(J6,J7)="C"THENPRINT"COMMANDER AT";
|
||
1050 PRINTJ6;"-";J7
|
||
1060 IFH4>H2THENH2=H4
|
||
1070 H3=H3+H4
|
||
1080 IFH4<(275-25*S8)*(1+.5*RND(1))THEN1310
|
||
1090 N4=1+INT(H4/(500+100*RND(1)))
|
||
1100 PRINT"*** CRITICAL HIT--";
|
||
1110 K9=1
|
||
1120 FORW4=1TON4
|
||
1130 J9=INT(12*RND(1))+1
|
||
1140 C5(W4)=J9
|
||
1150 E3=(H4*D5)/(N4*(75+25*RND(1)))
|
||
1160 IFJ9=6THENE3=E3/3
|
||
1170 D4(J9)=D4(J9)+E3
|
||
1180 IFW4=1THEN1250
|
||
1190 FORV=1TOW4
|
||
1200 IFJ9=C5(V-1)THEN1260
|
||
1210 NEXTV
|
||
1220 K9=K9+1
|
||
1230 IFK9=3THENPRINT
|
||
1240 PRINT " AND ";
|
||
1250 PRINTD$(J9);
|
||
1260 NEXTW4
|
||
1270 PRINT " DAMAGED."
|
||
1280 IFD4(8)=0THEN1310
|
||
1290 IFS4<>0THENPRINT"*** SHIELDS KNOCKED DOWN."
|
||
1300 S4=0
|
||
1310 E1=E1-H4
|
||
1320 NEXTL
|
||
1330 IFA3=0THENRETURN
|
||
1340 IFE1<=0THEN1510
|
||
1350 P4=100*P2*S3+.5
|
||
1360 IFJ5<>0THEN1390
|
||
1370 PRINT"ENEMY ATTACK--SHIELDS REDUCED TO ";
|
||
1380 GOTO1430
|
||
1390 PRINT"ENERGY LEFT:";FNS(E1);" SHIELDS ";
|
||
1400 IFS4<>0THENPRINT"UP,";
|
||
1410 IF(S4=0)AND(D4(8)=0)THENPRINT"DOWN, ";
|
||
1420 IFD4(8)>0THENPRINT"DAMÿGED, ";
|
||
1430 PRINTINT(P4);"%"
|
||
1440 IF(H2<200)AND(H3<500)THEN1540
|
||
1450 J8=INT(H3*RND(1)*.015)
|
||
1460 IFJ8<2THEN1540
|
||
1470 PRINT
|
||
1480 PRINT"---> 'SICKBAY TO BRIDGE. WE SUFFERED ";J8;"CASUALTIES IN THAT ATTACK"
|
||
1490 C4=C4+J8
|
||
1500 GOTO1540
|
||
1510 F9=5
|
||
1520 GOSUB4710:RETURN
|
||
1530 PRINT"*** KLINGONS ATTACK-- STARBASE SHIELDS PROTECT THE ";S5$
|
||
1540 FORW4=1TOK3
|
||
1550 K8(W4)=K7(W4)
|
||
1560 NEXTW4
|
||
1570 GOSUB10980:RETURN
|
||
1580 PRINT:IFJ4=0THEN1610
|
||
1590 PRINT"*** RED ALERT! RED ALERT!"
|
||
1600 PRINT"*** THE ";S5$;" HAS STOPPED IN QUADRANT CONTAINING SUPERNOVA"
|
||
1610 PRINT "*** AUTO-OVERRIDE ATTEMPTS TO HURL ";S5$;" TO OTHER QUADRANT"
|
||
1620 S2(Q1,Q2)=1
|
||
1630 GOSUB7260
|
||
1640 IFD4(6)=0THEN1830
|
||
1650 PRINT
|
||
1660 PRINT"WARP ENGINES DAMAGED."
|
||
1670 PRINT:PRINT"TRYING TO ENGAGE IMPULSE ENGINES..."
|
||
1680 IFD4(7)=0THEN1730
|
||
1690 PRINT"IMPULSE ENGINES DAMAGED."
|
||
1700 F9=8
|
||
1710 GOSUB4710
|
||
1720 RETURN
|
||
1730 P2=.75*E1
|
||
1740 D6=4E-03*(P2-50)
|
||
1750 D7=1.4142+1.2*RND(1)
|
||
1760 D1=D6
|
||
1770 IFD6>D7THEND1=D7
|
||
1780 T1=D1/.4
|
||
1790 D2=12*RND(1)
|
||
1800 J4=0
|
||
1810 GOSUB5590
|
||
1820 GOTO1940
|
||
1830 W1=6+2*RND(1)
|
||
1840 W2=W1*W1
|
||
1850 P2=.75*E1
|
||
1860 D6=P2/(W1*W1*W1*(S4+1))
|
||
1870 D7=1.4142+2*RND(1)
|
||
1880 D1=D6
|
||
1890 IFD6>D7THEND1=D7
|
||
1900 T1=10*D1/W2
|
||
1910 D2=12*RND(1)
|
||
1920 J4=0
|
||
1930 GOSUB12040
|
||
1940 IFJ4<>0THEN1980
|
||
1950 F9=8
|
||
1960 GOSUB4710
|
||
1970 RETURN
|
||
1980 IFR1<>0THENRETURN
|
||
1990 F9=1
|
||
2000 GOSUB4710
|
||
2010 RETURN
|
||
2020 PRINT:PRINT" 1 2 3 4 5 6 7 8"
|
||
2030 PRINT" --- --- --- --- --- --- --- ---"
|
||
2040 FORI=1TO8
|
||
2050 PRINTI;" ";
|
||
2060 FORJ=1TO8
|
||
2070 ONSGN(S2(I,J))+2GOTO2080,2100,2120
|
||
2080 PRINT" .1.";
|
||
2090 GOTO 2170
|
||
2100 PRINT" ...";
|
||
2110 GOTO2170
|
||
2120 IFS2(I,J)>LQTHEN2160
|
||
2130 IFG(I,J)<LQTHENPRINTS7$(LEN(STR$(G(I,J))));STR$(G(I,J));
|
||
2140 IFG(I,J)=LQTHENPRINT" ***";
|
||
2150 GOTO2170
|
||
2160 PRINTS2(I,J)-LQ;
|
||
2170 NEXTJ:PRINT:NEXTI:GOSUB7550:PRINT
|
||
2180 PRINT"THE ";S5$;" IS CURRENTLY IN ";G2$;" (";Q1;"-";Q2;")"
|
||
2190 RETURN
|
||
2200 PRINTCHR$(26)
|
||
2210 S8=0:L2=0
|
||
2220 PRINT"MISSION DURATION...: ";
|
||
2230 INPUTA$
|
||
2240 FOR I=1TO3
|
||
2250 IFA$=LEFT$(T$(I),LEN(A$))THEN2290
|
||
2260 NEXTI
|
||
2270 PRINT"WOULD YOU LIKE A SHORT, MEDIUM OR LONG GAME";
|
||
2280 GOTO2230
|
||
2290 L2=I
|
||
2300 PRINT"ARE YOU A BEGINNER, NOVICE, SENIOR OR EXPERT ";
|
||
2310 INPUTA$
|
||
2320 FORI=1TO4
|
||
2330 IFA$=LEFT$(S$(I),LEN(A$))THEN2360
|
||
2340 NEXTI
|
||
2350 GOTO2300
|
||
2360 S8=I
|
||
2370 INPUT"ENTER MISSION PASSWORD...";X$:PRINT
|
||
2380 PRINT"....STAND BY...."
|
||
2390 J=RND(1)
|
||
2400 D5=.5*S8:I2=INT(L2+1+RND(1)*3)
|
||
2410 IFI2>5THENI2=5
|
||
2420 R3=I2
|
||
2430 I5=7*L2
|
||
2440 R5=I5
|
||
2450 R7=(S8-2*RND(1)+1)*S8*.1+.1
|
||
2460 IFR7<.2THENR7=R7+.1
|
||
2470 I1=INT(2*R7*I5)
|
||
2480 R1=I1
|
||
2490 I4=INT(S8+.0625*I1*RND(1))
|
||
2500 R2=I4
|
||
2510 I3=(I1+4*I4)*I5
|
||
2520 R4=I3
|
||
2530 RETURN
|
||
2540 IFD4(11)=0THEN2570
|
||
2550 PRINT" COMPUTER DISABLED"
|
||
2560 RETURN
|
||
2570 PRINT"----COMPUTER ACTIVE----"
|
||
2580 INPUT"PROGRAM NAME";B$
|
||
2590 FORI=1TO6
|
||
2600 IFB$=LEFT$(C2$(I),LEN(B$))THEN2660
|
||
2610 NEXT
|
||
2620 PRINT"VALID PROGRAMS ARE:"
|
||
2630 PRINT" COURSE WCOST OUT"
|
||
2640 PRINT" PEFFECT ICOST"
|
||
2650 GOTO2580
|
||
2660 ON IGOTO2670,2910,2980,3040,2580,3110
|
||
2670 INPUT "ENTER QUADRANT AND SECTOR - ";A3,A4
|
||
2680 IF(A3<>INT(A3))OR(A4<>INT(A4))THEN3120
|
||
2690 IFA3<0THEN2580
|
||
2700 IFA3=0THENA3=10*Q1+Q2
|
||
2710 A3=A3+.5
|
||
2720 K=INT(A3/10)
|
||
2730 IF(K<1)OR(K>8)THEN3120
|
||
2740 C6(1)=K:K=INT(A3-C6(1)*10)
|
||
2750 IF(K<1)OR(K>8)THEN3120
|
||
2760 C6(2)=K:A4=A4+.5
|
||
2770 K=INT(A4/100)
|
||
2780 IF(K<1)OR(K>10)THEN3120
|
||
2790 C6(1)=C6(1)+(K-1)/10:K=INT(A4-K*100)
|
||
2800 IF(K<1)OR(K>10)THEN3120
|
||
2810 C6(2)=C6(2)+(K-1)/10
|
||
2820 X=Q1+((S6-1)/10)-C6(1):Y=Q2+((S7-1)/10)-C6(2)
|
||
2830 D1=0:D2=0:IF(X=0)AND(Y=0)THEN2890
|
||
2840 D1=SQR(X*X+Y*Y)
|
||
2850 IFX<0THENZ7=SGN(Y)*(3.1416-ATN(ABS(Y/X)))
|
||
2860 IFX=0THENZ7=SGN(Y)*1.5708
|
||
2870 IFX>0THENZ7=ATN(Y/X)
|
||
2880 D2=12-Z7*1.9098593#:IFD2>12THEND2=D2-12
|
||
2890 PRINT"COURSE IS";FNS(D2);" FOR A DISTANCE OF";
|
||
2900 PRINTFNS(D1);"QUADRANTS.":GOTO2580
|
||
2910 INPUT"ENTER DISTANCE AND WARP FACTOR";D1,A4
|
||
2920 IF(D1<0)THEN2580
|
||
2930 C7=D1*A4*A4*A4
|
||
2940 T1=(10*D1)/((A4*A4)+1E-05)
|
||
2950 PRINT"IT WOULD TAKE";FNS(T1);"STARDATES AND USE"
|
||
2960 PRINTFNR(C7);"UNITS OF ENERGY (";FNR(C7+C7);"IF SHIELDS ARE UP)"
|
||
2970 GOTO2580
|
||
2980 INPUT"ENTER DISTANCE...";D1
|
||
2990 IFD1<0THEN2580
|
||
3000 C7=250*D1+50:T1=D1/.4
|
||
3010 PRINT"IT WOULD TAKE";FNR(T1);"STARDATES AND USE"
|
||
3020 PRINTC7;"UNITS OF ENERGY"
|
||
3030 GOTO2580
|
||
3040 INPUT"ENTER PHASER RANGE IN QUADRANTS";A3
|
||
3050 IFA3<0THEN2580
|
||
3060 A3=A3*10:C7=(.9^A3)*100
|
||
3070 PRINT"PHASERS ARE ";LEFT$(STR$(C7),5);"% EFFECTIVE AT THAT RANGE"
|
||
3080 GOTO2580
|
||
3090 GOSUB9750
|
||
3100 GOTO2580
|
||
3110 RETURN
|
||
3120 PRINT"FORMAT IS MN,XXYY...WHERE MN IS THE QUADRANT"
|
||
3130 PRINT"AND XXYY IS THE SECTOR...E.G. 64,0307 REFERS"
|
||
3140 PRINT"TO QUADRANT 6-4, SECTOR 3-7."
|
||
3150 GOTO 2580
|
||
3160 IFT2$<>"C"THEN3250
|
||
3170 C3=0:PRINT"*** COMMANDER AT";
|
||
3180 FORF=1TOR2:IF(C1(F)=Q1)AND(C2(F)=Q2)THEN3200
|
||
3190 NEXTF
|
||
3200 C1(F)=C1(R2):C2(F)=C2(R2):C1(R2)=0:C2(R2)=0
|
||
3210 R2=R2-1:F1(2)=1E+30
|
||
3220 IFR2<>0THENF1(2)=D0-(I4/R2)*LOG(RND(1))
|
||
3230 K2=K2+1
|
||
3240 GOTO3270
|
||
3250 PRINT"*** KLINGON AT";
|
||
3260 K1=K1+1
|
||
3270 PRINTA5;"-";A6;"DESTROYED."
|
||
3280 Q$(A5,A6)=".":R1=R1-1
|
||
3290 IFR1=0THENRETURN
|
||
3300 R5=R4/(R1+4*R2)
|
||
3310 G(Q1,Q2)=G(Q1,Q2)-100
|
||
3320 FORF=1TOK3
|
||
3330 IF(K4(F)=A5)AND(K5(F)=A6)THEN3350
|
||
3340 NEXTF
|
||
3350 K3=K3-1
|
||
3360 IFF>K3THEN3410
|
||
3370 FORG=FTOK3
|
||
3380 K4(G)=K4(G+1):K5(G)=K5(G+1):K6(G)=K6(G+1)
|
||
3390 K7(G)=K7(G+1):K8(G)=K7(G)
|
||
3400 NEXTG
|
||
3410 K4(K3+1)=0:K5(K3+1)=0:K7(K3+1)=0:K8(K3+1)=0:K6(K3+1)=0
|
||
3420 RETURN
|
||
3430 IFC5$="DOCKED"THEN3520
|
||
3440 IFB6=0THEN3460
|
||
3450 IF(ABS(S6-B6)<=1)AND(ABS(S7-B7)<=1)THEN3480
|
||
3460 PRINTS5$;" NOT ADJACENT TO A BASE."
|
||
3470 RETURN
|
||
3480 C5$="DOCKED"
|
||
3490 PRINT"---> DOCKING COMPLETED"
|
||
3500 E1=I7:S3=I8:T4[9:L1=J1
|
||
3510 RETURN
|
||
3520 PRINT"CAPTAIN, WE'RE ALREADY DOCKED!"
|
||
3530 RETURN
|
||
3540 J=0:PRINT:FORI=1TO12
|
||
3550 IFD4(I)<=0THEN3600
|
||
3560 IFJ<>0THEN3590
|
||
3570 PRINT" DEVICE";SPC(12);"-REPAIR TIMES-"
|
||
3580 PRINTSPC(21);"IN FLIGHT DOCKED":J=1
|
||
3590 PRINT" ";D$(I);TAB(23);FNS(D4(I));TAB(33);FNS(D3*D4(I))
|
||
3600 NEXTI
|
||
3610 PRINT"TAB(23);"VISUAL SENSORS PERMANENTLY DAMAGED"
|
||
3620 IFJ=0THENPRINT" - ALL DEVICES (EXCEPT VISUAL) FUNCTIONAL -"
|
||
3630 RETURN
|
||
3640 M=0:D7=D0+T1:FORL=1TO5
|
||
3650 IFF1(L)>D7THEN3670
|
||
3660 M=L:D7=F1(L)
|
||
3670 NEXTL
|
||
3680 X6=D7-D0:D0=D7
|
||
3690 R4=R4-(R1+4*R2)*X6
|
||
3700 R5=R4/(R1+4*R2)
|
||
3710 IFR5>0THEN3750
|
||
3720 F9=2
|
||
3730 GOSUB4710
|
||
3740 RETURN
|
||
3750 IF(D4(5)=0)OR(C5$="DOCKED")THEN3810
|
||
3760 IF(L1>=X6)OR(D4(5)<=L1)THEN3790
|
||
3770 F9=3:GOSUB4710
|
||
3780 RETURN
|
||
3790 L1=L1-X6
|
||
3800 IFD4(5)<=X6THENL1=J1
|
||
3810 R=X6
|
||
3820 IFC5$="DOCKED"THENR=X6/D3
|
||
3830 FORL=1TO12
|
||
3840 IFD4(L)<=0THEN3890
|
||
3850 D4(L)=D4(L)-R
|
||
3860 IFD4(L)<0THEND4(L)=0
|
||
3870 IFD4(L)<>0THEN3890
|
||
3880 PRINT:PRINT"DAMAGE CONTROL- ";D$(L);" NOW OPERATIONAL."
|
||
3890 NEXTL
|
||
3900 IFM=0THENRETURN
|
||
3910 T1=T1-X6
|
||
3920 ONMGOTO3930,3970,4190,4280,4450
|
||
3930 X2=0:Y2=0:GOSUB10520
|
||
3940 F1(1)=D0-.5*I5*LOG(RND(1))
|
||
3950 IFG(Q1,Q2)=LQTHENRETURN
|
||
3960 GOTO3640
|
||
3970 IFR2=0THEN4180
|
||
3980 IFC5$="DOCKED"THEN4160
|
||
3990 I=INT(RND(1)*R2)+1
|
||
4000 Y6=(C1(I)-Q1)^2+(C2(I)-Q2)^2
|
||
4010 IFY6=0THEN4160
|
||
4020 Y6=SQR(Y6):T1=.17778*Y6
|
||
4030 PRINT:PRINT"*** ";S5$;" CAUGHT IN LONG-RANGE TRACTOR BEAM--"
|
||
4040 Q1=C1(I):Q2=C2(I)
|
||
4050 S6=FNB(1):S7=FNB(1)
|
||
4060 PRINT"PULLED TO QUADRANT";Q1;"-";Q2;", SECTOR";S6;"-";S7
|
||
4070 IFR6<>0THENPRINT"(IDLE PERIOD CANCELLED)"
|
||
4080 R6=0
|
||
4090 IFS4<>0THEN4150
|
||
4100 IF(D4(8)=0)AND(S3>0)THEN4130
|
||
4110 PRINT"(SHIELDS NOT CURRENTLY USABLE.)"
|
||
4120 GOTO4150
|
||
4130 GOSUB10390
|
||
4140 S9=0
|
||
4150 GOSUB7260
|
||
4160 F1(2)=D0+T1-1.5*(I5/R2)*LOG(RND(1))
|
||
4170 GOTO3640
|
||
4180 F1(2)=1E+30:GOTO3640
|
||
4190 D9(1)=D0:D9(2)=R1:D9(3)=R2:D9(4)=R3:D9(5)=R4:D9(6)=R5
|
||
4200 D9(7)=S1:D9(8)=B1:D9(9)=K1:D9(10)=K2
|
||
4210 FORI=1TO8:FORJ=1TO8:D9(I-1+8*(J-1)+11)=G(I,J):NEXTJ:NEXTI
|
||
4220 FORI=75TO84:D9(I)=C1(I-74):NEXT
|
||
4230 FORI=85TO94:D9(I)=C2(I-84):NEXT
|
||
4240 FORI=95TO99:D9(I)=B2(I-94):NEXT
|
||
4250 FORI=100TO104:D9(I)=B3(I-99):NEXT
|
||
4260 D9(105)=B4:D9(106)=B5
|
||
4270 S0=1:F1(3)=D0-.3*I5*LOG(RND(1)):GOTO3640
|
||
4280 IF(R2=0)OR(R3=0)THEN4330
|
||
4290 FORI=1TOR3:FORJ=1TOR2:IF(B2(I)=C1(J))AND(B3(I)=C2(J))THEN4340
|
||
4300 NEXTJ:NEXTI
|
||
4310 F1(4)=D0+.5+3*RND(1)
|
||
4320 F1(5)=1E+30:GOTO3640
|
||
4330 F1(4)=1E+30:F1(5)=1E+30:GOTO3640
|
||
4340 B4=B2(I):B5=B3(I)
|
||
4350 IF(B4=Q1)AND(B5=Q2)THEN4310
|
||
4360 F1(5)=D0+.5+3*RND(1)
|
||
4370 F1(4)=F1(5)-.3*I5*LOG(RND(1))
|
||
4380 IFD4(9)>0THEN3640
|
||
4390 PRINT:PRINT" CAPTAIN, THE STARBASE IN";B4;"-";B5;"IS UNDER ATTACK-"
|
||
4400 PRINT" AND CAN ONLY RESIST UNTIL STARDATE";FNR(F1(5));"!!!"
|
||
4410 IFR6=0THEN3640
|
||
4420 INPUT" SHALL WE CANCEL IDLE PERIOD";B$
|
||
4430 IFLEFT$(B$,1)="Y"THENR6=0
|
||
4440 GOTO3640
|
||
4450 F1(5)=1E+30:IF(R2=0)OR(R3=0)THEN3640
|
||
4460 K=INT(G(B4,B5)/100):IFG(B4,B5)-K*100<10THEN3640
|
||
4470 FORI=1TOR2:IF(C1(I)=B4)AND(C2(I)=B5)THEN4490
|
||
4480 NEXT:GOTO3640
|
||
4490 IFS2(B4,B5)=-1THENS2(B4,B5)=0
|
||
4500 IFS2(B4,B5)>999THENS2(B4,B5)=S2(B4,B5)-10
|
||
4510 IF(B4<>Q1)OR(B5<>Q2)THEN4600
|
||
4520 FORI=1TOK3:K=K4(I):L=K5(I)
|
||
4530 IFQ$(K,L)="C"THEN4550
|
||
4540 NEXT
|
||
4550 IFK6(I)<25+50*RND(1)THEN3640
|
||
4560 Q$(B6,B7)=".":B6=0:B7=0
|
||
4570 GOSUB7230
|
||
4580 PRINT:PRINT"CAPTAIN, I BELIEVE THE STARBASE HAS BEEN DESTROYED"
|
||
4590 GOTO4640
|
||
4600 IF(R3=1)OR(D4(9)>0)THEN4640
|
||
4610 PRINT
|
||
4620 PRINT"--> STARFLEET COMMAND REPORTS THAT STARBASE IN QUADRANT";B4;"-";B5
|
||
4630 PRINT"HAS BEEN DESTROYED BY ENEMY COMMANDER !!"
|
||
4640 G(B4,B5)=G(B4,B5)-10
|
||
4650 IFR3<=1THEN4690
|
||
4660 FORI=1TOR3:IF(B2(I)=B4)AND(B3(I)=B5)THEN4680
|
||
4670 NEXT
|
||
4680 B2(I)=B2(R3):B3(I)=B3(R3)
|
||
4690 R3=R3-1
|
||
4700 GOTO3640
|
||
4710 PRINT:PRINT:PRINT:PRINT"CONFLICT RESOLVED -GAME OVER":GOTO760
|
||
4720 IFC5$<>"DOCKED"THEN4750
|
||
4730 PRINT"--> CAPTAIN, WE'RE ALREADY DOCKED!"
|
||
4740 RETURN
|
||
4750 IFD4(9)=0THEN4770
|
||
4760 PRINT"SUBSPACE RADIO DAMAGED...CANNOT TRANSMIT.":RETURN
|
||
4770 IFR3<>0THEN4790
|
||
4780 PRINT"CAPTAIN, NO RESPONSE FROM STARBASE !":RETURN
|
||
4790 N1=N1+1:IFB6=0THEN4810
|
||
4800 GOTO4870
|
||
4810 D1=1E+30
|
||
4820 FORL=1TOR3:X=10*SQR((B2(L)-Q1)^2+(B3(L)-Q2)^2)
|
||
4830 IFX>D1THEN4850
|
||
4840 D1=X:K=L
|
||
4850 NEXTL
|
||
4860 Q1=B2(K):Q2=B3(K):GOSUB7260
|
||
4870 Q$(S6,S7)="."
|
||
4880 PRINT
|
||
4890 PRINT"STARBASE IN QUADRANT";Q1;"-";Q2;"RESPONDS --";
|
||
4900 PRINT" ";S5$;" DEMATERIALIZES."
|
||
4910 P2=(1-.98^D1)^.333333
|
||
4920 FORL=1TO3
|
||
4930 IFL=1THENPRINT"1ST ";
|
||
4940 IFL=2THENPRINT"2ND ";
|
||
4950 IFL=3THENPRINT"3RD ";
|
||
4960 PRINT"ATTEMPT TO RE-MATERIALIZE THE ";S5$;". . . . .";
|
||
4970 IFRND(1)>P2THEN5000
|
||
4980 PRINT"FAILS.":NEXTL
|
||
4990 F9=11:GOSUB4710:RETURN
|
||
5000 FORL=1TO5:I=B6+INT(3*RND(1))-1
|
||
5010 IF(I<1)OR(I>10)THEN5050
|
||
5020 J=B7+INT(3*RND(1))-1
|
||
5030 IF(J<1)OR(J>10)THEN5050
|
||
5040 IFQ$(I,J)="."THEN5060
|
||
5050 NEXTL:PRINT"FAILS.":GOTO4990
|
||
5060 PRINT"SUCCEEDS.":S6=I:S7=J:Q$(I,J)=LEFT$(S5$,1)
|
||
5070 GOSUB3430:PRINT"CAPTAIN, WE MADE IT!":RETURN
|
||
5080 P4=2:L5=K3:N=1
|
||
5090 FORK=1TOL5
|
||
5100 IFH3(K)=0THEN5360
|
||
5110 D6=.9+.01*RND(1):H2=H3(K)*D6^K7(N)
|
||
5120 P3=K6(N)
|
||
5130 P=ABS(P3):IFP4*H2<PTHENP=P4*H2
|
||
5140 K6(N)=P3-SGN(P3)*ABS(P)
|
||
5150 X8=K4(N):Y8=K5(N)
|
||
5160 IFH2>4.99THEN5180
|
||
5170 PRINT"MINOR HIT ON ":GOTO5190
|
||
5180 PRINTFNR(H2);"UNIT HIT ON ";
|
||
5190 M$=Q$(X8,Y8)
|
||
5200 IF M$="K"THENPRINT"KLINGON AT";
|
||
5210 IFM$="C"THENPRINT"COMMANDER AT";
|
||
5220 PRINTX8;"-";Y8
|
||
5230 IFK6(N)<>0THEN5270
|
||
5240 A5=X8:A6=Y8:T2$=Q$(X8,Y8):GOSUB3160
|
||
5250 IFR1<>0THEN5370
|
||
5260 F9=1:GOSUB4710:GOTO5370
|
||
5270 IFK6(N)<0THEN5360
|
||
5280 IFRND(1)<.9THEN5360
|
||
5290 IFK6(N)>(.4+.4*RND(1))*P3THEN5360
|
||
5300 PRINT
|
||
5310 PRINT"*** CAPTAIN, THE VESSEL AT SECTOR";
|
||
5320 PRINTX8;"-";Y8
|
||
5330 PRINT" HAS JUST LOST ITS FIREPOWER !!!"
|
||
5340 PRINT
|
||
5350 K6(N)=-K6(N)
|
||
5360 N=N+1
|
||
5370 NEXTK
|
||
5380 RETURN
|
||
5390 J3=0
|
||
5400 IFD4(7)<>0THEN5640
|
||
5410 IFE1<=75THEN5470
|
||
5420 INPUT"ENTER COURSE....";D2
|
||
5430 IFD2<.01ORD2>12THENGOSUB12780ELSE5450
|
||
5440 RETURN
|
||
5450 P3=50+250*D1
|
||
5460 IFP3<E1THEN5540
|
||
5470 PRINT
|
||
5480 PRINT"1ST OFFICER SPOCK- 'CAPTAIN, THE IMPULSE ENGINES"
|
||
5490 PRINT"REQUIRE 50 UNITS OF ENERGY TO ENGAGE, PLUS 250 UNITS PER ";
|
||
5500 IFE1>75THEN5520
|
||
5510 PRINT"QUADRANT. THEY ARE USELESS NOW.'":RETURN
|
||
5520 PRINT"QUADRANT. WE CAN GO A MAXIMUM OF ";
|
||
5530 PRINTFNR(4E-03*(E1-50)-.05);"QUADRANTS.'":RETURN
|
||
5540 T1=D1/.4
|
||
5550 IFT1<R5THEN5590
|
||
5560 PRINT"SIR, MAX. SPEED UNDER IMPULSE IS ONLY 4 SECTORS PER STARDATE"
|
||
5570 INPUT"-- AUTHORIZE ";B$
|
||
5580 IFLEFT$(B$,1)<>"Y"THENRETURN
|
||
5590 GOSUB5850:J3=1
|
||
5600 IFA2<>0THENRETURN
|
||
5610 E1=E1-P3
|
||
5620 IFE1>0THENRETURN
|
||
5630 F9=4:GOSUB4710:RETURN
|
||
5640 PRINT"IMPULSE ENGINES DAMAGED.":RETURN
|
||
5650 N$=" #"
|
||
5660 PRINT
|
||
5670 IFD4(2)<>0THEN5840
|
||
5680 PRINT"L.R. SCAN FOR QUADRANT";Q1;"-";Q2:PRINT
|
||
5690 I=Q1-1:J=Q1+1:K=Q2-1:L=Q2+1
|
||
5700 FORM=ITOJ:FORN=KTOL
|
||
5710 IF(M<=0)OR(M>8)THEN5770
|
||
5720 IF(N<=0)OR(N>8)THEN5770
|
||
5730 IFD4(11)=0THENS2(M,N)=1
|
||
5740 IFG(M,N)>=LQTHEN PRINT" ***";" ";
|
||
5750 IFG(M,N)<LQTHENPRINTSPC(5-LEN(STR$(G(M,N))));G(M,N);
|
||
5760 GOTO5780
|
||
5770 PRINTN$;" ";
|
||
5780 NEXTN:PRINT
|
||
5790 PRINT
|
||
5800 NEXTM
|
||
5810 IFD4(11)=0THENRETURN
|
||
5820 PRINT"*** WARNING *** - COMPUTER DISABLED - SCAN NO`RECORDED."
|
||
5830 RETURN
|
||
5840 PRINT"LONG RANGE SENSORS DAMAGED.":RETURN
|
||
5850 A5=(15-D2)*.523599:D4=-SIN(A5):D6=COS(A5):B8=ABS(D4)
|
||
5860 IFABS(D6)>B8THENB8=ABS(D6)
|
||
5870 D4=D4/B8:D6=D6/B8:T5=0:T6=0
|
||
5880 IFD0+T1<F1(2)THEN5910
|
||
5890 T5=1:C5$="RED":D1=D1*(F1(2)-D0)/T1+.1
|
||
5900 T1=F1(2)-D0+1E-05
|
||
5910 Q$(S6,S7)=".":X7=S6:Y7=S7:H9=INT(10*D1*B8+.5)
|
||
5920 IFH9=0THEN6020
|
||
5930 FORL=1TOH9
|
||
5940 X7=X7+D4:X1=INT(X7+.5):Y7=Y7+D6:Y1=INT(Y7+.5)
|
||
5950 IF(X1<1)OR(X1>10)THEN6190
|
||
5960 IF(Y1<1)OR(Y1>10)THEN6190
|
||
5970 IFQ$(X1,Y1)="O"THEN6000
|
||
5980 IFQ$(X1,Y1)<>"."THEN6070
|
||
5990 NEXTL
|
||
6000 D1=.1*SQR((S6-X1)^2+(S7-Y1)^2)
|
||
6010 S6=X1:S7=Y1
|
||
6020 F4=S6:F5=S7
|
||
6030 IFQ$(X1,Y1)<>"O"THEN6520
|
||
6040 T2=FNA(1):T3=FNA(1)
|
||
6050 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):PRINT
|
||
6060 PRINT"*** SPACE PORTAL ENTERED ***":GOTO6490
|
||
6070 T6=1:K=50*D1/T1+1E-03:D1=.1*SQR((S6-X1)^2+(S7-Y1)^2)
|
||
6080 IF(Q$(X1,Y1)="K")OR(Q$(X1,Y1)="C")THEN6180
|
||
6090 PRINT:PRINTS5$;" BLOCKED BY ";
|
||
6100 IFQ$(X1,Y1)="*"THENPRINT"STAR AT";
|
||
6110 IFQ$(X1,Y1)="B"THENPRINT"STARBASE AT";
|
||
6120 PRINT" SECTOR";X1;"-";Y1;"...."
|
||
6130 PRINT"EMERGENCY STOP REQUIRED";FNR(K);"UNITS OF ENERGY."
|
||
6140 E1=E1-K
|
||
6150 S6=INT(X7-D4+.5):F4=S6:S7=INT(Y7-D6+.5):F5=S7
|
||
6160 IFE1>0THEN6520
|
||
6170 F9=4:GOSUB4710:RETURN
|
||
6180 S6=X1:S7=Y1:GOSUB9600:F4=S6:F5=S7:GOTO6520
|
||
6190 IFK3=0THEN6250
|
||
6200 FORL=1TOK3
|
||
6210 F3=SQR((X1-K4(L))^2+(Y1-K5(L))^2)
|
||
6220 K8(L)=.5*(F3+K7(L)):NEXTL
|
||
6230 IFG(Q1,Q2)<>LQTHENGOSUB790
|
||
6240 IFA2<>0THENRETURN
|
||
6250 X7=10*(Q1-1)+S6:Y7=10*(Q2-1)+S7
|
||
6260 X1=INT(X7+10*D1*B8*D4+.5)
|
||
6270 Y1=INT(Y7+10*D1*B8*D6+.5):L6=0
|
||
6280 L5=0
|
||
6290 IFX1>0THEN6310
|
||
6300 X1=-X1+1:L5=1
|
||
6310 IFY1>0THEN6330
|
||
6320 Y1=-Y1+1:L5=1
|
||
6330 IFX1<=80THEN6350
|
||
6340 X1=161-X1:L5=1
|
||
6350 IFY1<=80THEN6370
|
||
6360 Y1=161-Y1:L5=1
|
||
6370 IFL5=0THEN6390
|
||
6380 L6=1:GOTO6280
|
||
6390 IFL6=0THEN6460
|
||
6400 PRINT:PRINT"*** MESSAGE FROM STARFLEET COMMAND.....STARDATE";FNR(DO)
|
||
6410 PRINT"PERMISSION TO EXIT GALAXY - DENIED -"
|
||
6420 PRINT"'ENGINES SHUT DOWN AT ";
|
||
6430 Z1=INT((X1+9)/10):Z2=INT((Y1+9)/10)
|
||
6440 PRINT"QUADRANT";Z1;"-";Z2;", ";
|
||
6450 PRINT"SECTOR";X1-10*(Z1-1);"-";Y1-10*(Z2-1);"'"
|
||
6460 IFT5<>0THENRETURN
|
||
6470 Q1=INT((X1+9)/10):Q2=INT((Y1+9)/10)
|
||
6480 S6=X1-10*(Q1-1):S7=Y1-10*(Q2-1)
|
||
6490 GOSUB7550:PRINT:GOTO6510
|
||
6500 PRINTCHR$(26):PRINT"ENTERING THE ";G2$;" QUADRANT (";Q1;"-";Q2;")"
|
||
6510 Q$(S6,S7)=LEFT$(S5$,1):GOSUB7260:GOSUB11090:GOSUB5650:RETURN
|
||
6520 Q$(S6,S7)=LEFT$(S5$,1)
|
||
6530 IFL6=1THENRETURN
|
||
6540 IFK3=0THEN6610
|
||
6550 FORL=1TOK3
|
||
6560 F3=SQR((F4-K4(L))^2+(F5-K5(L))^2)
|
||
6570 K8(L)=.5*(K7(L)+F3)
|
||
6580 K7(L)=F3
|
||
6590 NEXTL
|
||
6600 GOSUB10980
|
||
6610 GOSUB7230:RETURN
|
||
6620 A=1:B=1
|
||
6630 FORK=1TOK3
|
||
6640 C=K4(K):D=K5(K)
|
||
6650 IFQ$(C,D)="C"THEN6670
|
||
6660 NEXTK
|
||
6670 N=0:F=K6(K)+100*K3
|
||
6680 IFF>LQTHENN=INT(RND(1)*K7(K)+1)
|
||
6690 IF((C5$="DOCKED")AND((B4<>Q1)OR(B5<>Q2)))THENN=-S8
|
||
6700 IFN=0THENN=INT(((F+200*RND(1))/150)-5)
|
||
6710 IFN=0THENRETURN
|
||
6720 IF(N>0)AND(K7(K)<1.5)THENRETURN
|
||
6730 IFABS(N)>S8THENN=SGN(N)*ABS(S8)
|
||
6740 T=ABS(N):P=S6-C:Q=S7-D
|
||
6750 IF2*ABS(P)<ABS(Q)THENP=0
|
||
6760 IF2*ABS(Q)<ABS(P)THENQ=0
|
||
6770 IFP<>0THENP=SGN(P*N)
|
||
6780 IFQ<>0THENQ=SGN(Q*N)
|
||
6790 R=C:S=D:Q$(C,D)="."
|
||
6800 FORL2=1TOT:L=R+P:M=S+Q
|
||
6810 IF(L>0)AND(L<=10)THEN6830
|
||
6820 ONSGN(N)+2GOTO7060,6920,6920
|
||
6830 IF(M>0)AND(M<=10)THEN6850
|
||
6840 ONSGN(N)+2GOTO7060,6860,6860
|
||
6850 IFQ$(L,M)="."THEN6980
|
||
6860 IF(Q=B)OR(P=0)THEN6920
|
||
6870 M=S+B
|
||
6880 IF(M>0)AND(M<=10)THEN6900
|
||
6890 ONSGN(N)+2GOTO7060,6910,6910
|
||
6900 IFQ$(L,M)="."THEN6980
|
||
6910 B=-B
|
||
6920 IF(P=A)OR(Q=0)THEN6990
|
||
6930 L=R+A
|
||
6940 IF(L>0)AND(L<=10)THEN6960
|
||
6950 ONSGN(N)+2GOTO7060,6970,6970
|
||
6960 IFQ$(L,M)="."THEN6980
|
||
6970 A=-A:GOTO6990
|
||
6980 R=L:S=M
|
||
6990 NEXTL2
|
||
7000 Q$(R,S)="C"
|
||
7010 IF(R=C)AND(S=D)THENRETURN
|
||
7020 K4(K)=R:K5(K)=S:K7(K)=SQR((S6-R)^2+(S7-S)^2)
|
||
7030 K8(K)=K7(K):IFN>0THENPRINT"*** COMMANDER ADVANCES TO";
|
||
7040 IFN<0THENPRINT"*** COMMANDER RETREATS TO";
|
||
7050 PRINT" SECTOR";R;"-";S:GOSUB10980:RETURN
|
||
7060 I=Q1+INT((L+9)/10)-1:J=Q2+INT((M+9)/10)-1
|
||
7070 IF(I<1)OR(I>8)THEN7220
|
||
7080 IF(J<1)OR(J>8)THEN7220
|
||
7090 FORL3=1TOR2
|
||
7100 IF(C1(L3)=I)AND(C2(L3)=J)THEN7220
|
||
7110 NEXTL3:PRINT"*** COMMANDER ESCAPES TO ";
|
||
7120 PRINT"QUADRANT";I;"-";J;" (AND REGAINS STRENGTH)"
|
||
7130 K4(K)=K4(K3):K5(K)=K5(K3):K7(K)=K7(K3):K8(K)=K8(K3)
|
||
7140 K6(K)=K6(K3):K3=K3-1:C3=0
|
||
7150 IFC5$<>"DOCKED"THENGOSUB7230
|
||
7160 GOSUB10980
|
||
7170 G(Q1,Q2)=G(Q1,Q2)-100:G(I,J)=G(I,J)+100
|
||
7180 FORL3=1TOR2
|
||
7190 IF(C1(L3)=Q1)AND(C2(L3)=Q2)THEN7210
|
||
7200 NEXTL3
|
||
7210 C1(L3)=I:C2(L3)=J:RETURN
|
||
7220 A=-A:B=-B:GOTO6990
|
||
7230 C5$="GREEN":IFE1<LQTHENC5$="YELLOW"
|
||
7240 IFG(Q1,Q2)>99THENC5$="RED"
|
||
7250 RETURN
|
||
7260 J4=1:B6=0:B7=0:K3=0:C3=0:U=G(Q1,Q2):IFU>999THEN7530
|
||
7270 K3=INT(.01*U):FORA=1TO10:FORB=1TO10:Q$(A,B)=".":NEXTB:NEXTA
|
||
7280 Q$(S6,S7)=LEFT$(S5$,1):U=G(Q1,Q2):IFU<100THEN7400
|
||
7290 U=U-100*K3:FORA=1TOK3
|
||
7300 S=FNB(1):K4(A)=S:T=FNB(1):K5(A)=T
|
||
7310 IFQ$(S,T)<>"."THEN7300
|
||
7320 Q$(S,T)="K":K7(A)=SQR((S6-S)^2+(S7-T)^2):K8(A)=K7(A)
|
||
7330 K6(A)=RND(1)*150+325:NEXTA
|
||
7340 IFR2=0THEN7390
|
||
7350 FORA=1TOR2
|
||
7360 IF(C1(A)=Q1)AND(C2(A)=Q2)THEN7380
|
||
7370 NEXTA:GOTO7390
|
||
7380 Q$(S,T)="C":K6(K3)=LQ+400*RND(1):C3=1
|
||
7390 GOSUB10980
|
||
7400 IFU<10THEN7440
|
||
7410 U=U-10
|
||
7420 B6=FNB(1):B7=FNB(1):IFQ$(B6,B7)<>"."THEN7420
|
||
7430 Q$(B6,B7)="B"
|
||
7440 GOSUB7230:IFU<1THENRETURN
|
||
7450 FORA=1TOU
|
||
7460 S=FNB(1):T=FNB(1):IFQ$(S,T)<>"."THEN7460
|
||
7470 Q$(S,T)="*":NEXTA
|
||
7480 IF(T2<>Q1)OR(T3<>Q2)THENRETURN
|
||
7490 S=FNB(1):T=FNB(1):IFQ$(S,T)<>"."THEN7490
|
||
7500 Q$(S,T)="O":PRINT
|
||
7510 PRINT"*** SHORT-RANGE SENSORS DETECT A SPACE-WARP IN THIS QUADRANT"
|
||
7520 RETURN
|
||
7530 FORA=1TO10:FORB=1TO10:Q$(A,B)=".":NEXTB:NEXTA
|
||
7540 Q$(S6,S7)=LEFT$(S5$,1):RETURN
|
||
7550 G4$="III":L=2:IFQ2>=5THEN7570
|
||
7560 L=1
|
||
7570 G2$=G1$(2*(Q1-1)+L):L=Q2
|
||
7580 IFL<=4THEN7600
|
||
7590 L=Q2-4
|
||
7600 G3$="IV":IFL=4THEN7620
|
||
7610 G3$=LEFT$(G4$,L)
|
||
7620 G2$=G2$+" "+G3$:RETURN
|
||
7630 IFRND(1)>.1THEN7650
|
||
7640 GOSUB10520:RETURN
|
||
7650 Q$(A5,A6)=".":PRINT"*** STAR AT SECTOR";A5;"-";A6;"NOVAS."
|
||
7660 G(Q1,Q2)=G(Q1,Q2)-1:S1=S1+1
|
||
7670 B9=1:T6=1:T7=1:K=0:X1=0:Y1=0
|
||
7680 H4(B9,1)=A5:H4(B9,2)=A6
|
||
7690 FORM=B9TOT6:FORQ=1TO3:FORJ=1TO3
|
||
7700 IFJ*Q=4THEN8140
|
||
7710 J5=H4(M,1)+Q-2:J6=H4(M,2)+J-2
|
||
7720 IF(J5<1)OR(J5>10)THEN8140
|
||
7730 IF(J6<1)OR(J6>10)THEN8140
|
||
7740 IFQ$(J5,J6)="."THEN8140
|
||
7750 IFQ$(J5,J6)="O"THEN8140
|
||
7760 IFQ$(J5,J6)<>"*"THEN7820
|
||
7770 IFRND(1)>=.1THEN7790
|
||
7780 X2=J5:Y2=J6:GOSUB10520:RETURN
|
||
7790 T7=T7+1:H4(T7,1)=J5:H4(T7,2)=J6:G(Q1,Q2)=G(Q1,Q2)-1
|
||
7800 S1=S1+1:PRINT"*** STAR AT SECTOR";J5;"-";J6;"NOVAS."
|
||
7810 GOTO8130
|
||
7820 IFQ$(J5,J6)<>"B"THEN7890
|
||
7830 G(Q1,Q2)=G(Q1,Q2)-10:FORV=1TOR3
|
||
7840 IF(B2(V)<>Q1)OR(B3(V)<>Q2)THEN7860
|
||
7850 B2(V)=B2(R3):B3(V)=B3(R3)
|
||
7860 NEXTV:R3=R3-1:B6=0:B7=0:B1=B1+1:GOSUB7230
|
||
7870 PRINT"*** STARBASE AT SECTOR";J5;"-";J6;"DESTROYED."
|
||
7880 GOTO8130
|
||
7890 IF(S6<>J5)OR(S7<>J6)THEN7990
|
||
7900 PRINT"*** STARSHIP BUFFETED BY NOVA.":IFS4<>0THEN7920
|
||
7910 E1=E1-LQ:GOTO7950
|
||
7920 IFS3>=LQTHEN7970
|
||
7930 D6=LQ-S3:E1=E1-D6:GOSUB7230:S3=0:S4=0
|
||
7940 PRINT"*** STARSHIP SHIELDS KNOCKED OUT.":D4(8)=5E-03*D5*RND(1))*D6
|
||
7950 IFE1>0THEN7980
|
||
7960 F9=7:GOSUB4710:RETURN
|
||
7970 S3=S3-LQ
|
||
7980 X1=X1+S6-H4(M,1):Y1=Y1+S7-H4(M,2):K=K+1:GOTO8140
|
||
7990 IFQ$(J5,J6)<>"C"THEN8120
|
||
8000 FORV=1TOK3
|
||
8010 IF(K4(V)=J5)AND(K5(V)=J6)THEN8030
|
||
8020 NEXTV
|
||
8030 K6(V)=K6(V)-800:IFK6(V)<=0THEN8120
|
||
8040 N5=J5+J5-H4(M,1):N6=J6+J6-H4(M,2)
|
||
8050 PRINT"*** COMMANDER AT SECTOR";J5;"-";J6;"DAMAGED";
|
||
8060 IF(N5<1)OR(N5>10)OR(N6<1)OR(N6>10)THEN8110
|
||
8070 PRINT" AND BUFFETED TO SECTOR";N5;"-";N6
|
||
8080 Q$(N5,N6)="C":K4(V)=N5:K5(V)=N6
|
||
8090 K7(V)=SQR((S6-N5)^2+(S7-N6)^2):K8(V)=K7(V)
|
||
8100 Q$(J5,J6)="."
|
||
8110 PRINT:GOTO8140
|
||
8120 A5=J5:A6=J6:T2$=Q$(J5,J6):GOSUB3160:GOTO8140
|
||
8130 PRINT:Q$(J5,J6)="."
|
||
8140 NEXTJ:NEXTQ:NEXTM
|
||
8150 IFT6=T7THEN8170
|
||
8160 B9=T6+1:T6=T7:GOTO7690
|
||
8170 IFK=0THENRETURN
|
||
8180 D1=K*.1
|
||
8190 IFX1<>0THENX1=SGN(X1)
|
||
8200 IFY1<>0THENY1=SGN(Y1)
|
||
8210 I=3*(X1+1)+Y1+2
|
||
8220 D2=C5(I)
|
||
8230 IFD2=0THEND1=0
|
||
8240 IFD1=0THENRETURN
|
||
8250 PRINT:PRINT"FORCE OF NOVA DISPLACES STARSHIP."
|
||
8260 GOSUB5850:RETURN
|
||
8270 P=2:J3=1
|
||
8280 IFC5$<>"DOCKED"THEN8300
|
||
8290 PRINT"PHASERS CAN'T BE FIRED THRU BASE SHIELDS.":GOTO8370
|
||
8300 IFD4(3)=0THEN8320
|
||
8310 PRINT"PHASER BANKS DAMAGED.":GOTO8370
|
||
8320 IFS4=0THEN8340
|
||
8330 PRINT"SHIELDS MUST BE DOWN TO FIRE PHASERS.":GOTO8370
|
||
8340 IFK3>0THEN8380
|
||
8350 PRINT
|
||
8360 PRINT"THE SHORT-RANGE SENSORS DETECT NO ENEMY IN THIS QUADRANT."
|
||
8370 J3=0:RETURN
|
||
8380 PRINT"PHASERS LOCKED ON TARGET. ENERGY AVAILABLE=";
|
||
8390 PRINT.01*INT(100*E1)
|
||
8400 INPUT"UNITS TO FIRE";P1:IFP1<E1THEN8420
|
||
8410 PRINT"ENERGY AVAILABLE =";:GOTO8390
|
||
8420 IFP1>0THEN8440
|
||
8430 J3=0:RETURN
|
||
8440 E1=E1-P1
|
||
8450 IFD4(11)=0THEN8480
|
||
8460 P1=P1*(RND(1)*.5+.5)
|
||
8470 PRINT:PRINT"COMPUTER MALFUNCTION HAMPERS PHASER ACCURACY.":PRINT
|
||
8480 E=P1:IFK3=0THEN8650
|
||
8490 E=0:T5=(K3*(K3+1))/2
|
||
8500 FORI=1TOK3:H3(I)=((K3+1-I)/T5)*P1
|
||
8510 H5(I)=ABS(K6(I))/(P*.9^K7(I))
|
||
8520 IFH3(I)<=H5(I)THEN8540
|
||
8530 E=E+(H3(I)-H5(I)):H3(I)=H5(I)
|
||
8540 NEXTI
|
||
8550 IFE=0THEN8620
|
||
8560 FORI=1TOK3:R7=H5(I)-H3(I)
|
||
8570 IFR7<=0THEN8600
|
||
8580 IFR7>=ETHEN8610
|
||
8590 H3(I)=H5(I):E=E-R7
|
||
8600 NEXTI:GOTO8620
|
||
8610 H3(I)=H3(I)+E:E=0
|
||
8620 GOSUB5080
|
||
8630 IF(E<>0)AND(A2=0)THEN8650
|
||
8640 J3=1:RETURN
|
||
8650 PRINTFNR(E);"EXPENDED ON EMPTY SPACE.":J3=1:RETURN
|
||
8660 J3=1:IFD4(4)=0THEN8680
|
||
8670 PRINT"PHOTON TUBES DAMAGED.":GOTO8720
|
||
8680 IFT4<>0THEN8700
|
||
8690 PRINT"NO TORPEDOS LEFT.":GOTO8720
|
||
8700 INPUT"TORPEDO COURSE";C6
|
||
8710 IFC6<.01ORC6>12THENGOSUB12780ELSE8730
|
||
8720 J3=0:RETURN
|
||
8730 INPUT"BURST OF 3";B$:N=1
|
||
8740 IFLEFT$(B$,1)="N"THEN8830
|
||
8750 IFLEFT$(B$,1)<>"Y"THEN8730
|
||
8760 IFT4>2THEN8780
|
||
8770 PRINT"NO BURST. ONLY";T4;"TORPEDOS LEFT.":GOTO8720
|
||
8780 INPUT"SPREAD ANGLE (3 - 30 DEG)";G2
|
||
8790 IFG2<0THEN8720
|
||
8800 IF(G2<3)OR(G2>30)THEN8780
|
||
8810 G2=FND(G2)
|
||
8820 N=3
|
||
8830 FORZ6=1TON
|
||
8840 IFC5$<>"DOCKED"THENT4=T4-1
|
||
8850 Z7=Z6:R=RND(1)
|
||
8860 R=(R+RND(1))*.5-.5
|
||
8870 IF(R>=-.4)AND(R<=.4)THEN8940
|
||
8880 R=(RND(1)+1.2)*R:IFN=3THEN8900
|
||
8890 PRINT"*** TORPEDO MISFIRES...":GOTO8910
|
||
8900 PRINT"*** TORPEDO NUMBER";Z6;"MISFIRES..."
|
||
8910 IF RND(1)>.2THEN8940
|
||
8920 PRINT"*** PHOTON TUBES DAMAGED BY MISFIRE."
|
||
8930 D4(4)=D5*(1+2*RND(1)):GOTO9580
|
||
8940 IF(S4<>0)OR(C5$="DOCKED")THENR=R+1E-03*S3*R
|
||
8950 A3=C6+.25*R:IFN=1THEN8980
|
||
8960 A8=(15-A3+(2-Z6)*G2)*.523599:PRINT
|
||
8970 PRINT"TRACK FOR TORPEDO NUMBER";Z7;"--":GOTO8990
|
||
8980 PRINT:PRINT"TORPEDO TRACK --":A8=(15-A3)*.523599
|
||
8990 X4=-SIN(A8):Y4=COS(A8):B8=ABS(X4)
|
||
9000 IFABS(Y4)>ABS(X4)THENB8=ABS(Y4)
|
||
9010 X4=X4/B8:Y4=Y4/B8:X5=S6:Y5=S7
|
||
9020 FORL9=1TO15:X5=X5+X4:A5=INT(X5+.5)
|
||
9030 IF(A5<1)OR(A5>10)THEN9560
|
||
9040 Y5=Y5+Y4:A6=INT(Y5+.5)
|
||
9050 IF(A6<1)OR(A6>10)THEN9560
|
||
9060 IF(L9=5)OR(L9=9)THENPRINT
|
||
9070 PRINTFNR(X5);"-";FNR(Y5);", ";
|
||
9080 IFQ$(A5,A6)<>"."THEN9100
|
||
9090 GOTO9550
|
||
9100 PRINT:IFQ$(A5,A6)="K"THEN9150
|
||
9110 IFQ$(A5,A6)<>"C"THEN9370
|
||
9120 IFRND(1)>.1THEN9150
|
||
9130 PRINT"*** COMMANDER AT SECTOR";A5;"-";A6;"USES ANTI-PHOTON DEVICE !"
|
||
9140 PRINT"-- TORPEDO NEUTRALIZED.":GOTO9570
|
||
9150 FORV=1TOK3
|
||
9160 IF(A5=K4(V))AND(A6=K5(V))THEN9180
|
||
9170 NEXTV
|
||
9180 K=K6(V):W3=200+800*RND(1)
|
||
9190 IFABS(K)<W3THENW3=ABS(K)
|
||
9200 K6(V)=K-SGN(K)*ABS(W3):IFK6(V)<>0THEN9220
|
||
9210 T2$=Q$(A5,A6):GOSUB3160:GOTO9570
|
||
9220 IFQ$(A5,A6)="K"THENPRINT"*** KLINGON AT";
|
||
9230 IFQ$(A5,A6)="C"THENPRINT"*** COMMANDER AT";
|
||
9240 PRINTA5;"-";A6;
|
||
9250 A7=A8+2.5*(RND(1)-.5)
|
||
9260 W3=ABS(-SIN(A7)):IFABS(COS(A7))>W3THENW3=ABS(COS(A7))
|
||
9270 X7=-SIN(A7)/W3:Y7=COS(A7)/W3
|
||
9280 P=INT(A5+X7+.5):Q=INT(A6+Y7+.5)
|
||
9290 IF(P<1)OR(P>10)OR(Q<1)OR(Q>10)THEN9360
|
||
9300 IFQ$(P,Q)<>"."THEN9360
|
||
9310 Q$(P,Q)=Q$(A5,A6):Q$(A5,A6)=".":PRINT"DAMAGED--"
|
||
9320 PRINT" DISPLACED BY BLAST TO SECTOR";P;"-";Q
|
||
9330 K4(V)=P:K5(V)=Q:K7(V)=SQR((S6-P)^2+(S7-Q)^2)
|
||
9340 K8(V)=K7(V)
|
||
9350 GOSUB10980:GOTO9570
|
||
9360 PRINT"DAMAGED, BUT NOT DESTROYED.":GOTO9570
|
||
9370 IFQ$(A5,A6)<>"B"THEN9450
|
||
9380 PRINT"*** STARBASE DESTROYED...!!!"
|
||
9390 IFS2(Q1,Q2)<0THENS2(Q1,Q2)=0
|
||
9400 FORW=1TOR3
|
||
9410 IF(B2(W)<>Q1)OR(B3(W)<>Q2)THEN9430
|
||
9420 B2(W)=B2(R3):B3(W)=B3(R3)
|
||
9430 NEXTW:Q$(A5,A6)=".":R3=R3-1:B6=0:B7=0
|
||
9440 G(Q1,Q2)=G(Q1,Q2)-10:B1=B1+1:GOSUB7230:GOTO9570
|
||
9450 IFQ$(A5,A6)<>"*"THEN9530
|
||
9460 IFRND(1)>.15THEN9490
|
||
9470 PRINT"*** STAR AT SECTOR";A5;"-";A6;"UNAFFECTED BY PHOTON BLAST"
|
||
9480 GOTO9570
|
||
9490 X2=A5:Y2=A6:GOSUB7630:A5=X2:A6=Y2
|
||
9500 IFG(Q1,Q2)=LQTHENRETURN
|
||
9510 IFA2<>0THENRETURN
|
||
9520 GOTO9570
|
||
9530 PRINT:PRINT" >>> ORGANIAN TRUCE-MONITOR DESTROYED <<<":Q$(A5,A6)=".":PRINT
|
||
9540 T2=0:T3=0:GOTO9570
|
||
9550 NEXTL9
|
||
9560 PRINT:PRINT"TORPEDO MISSED!"
|
||
9570 NEXTZ6
|
||
9580 IFR1<>0THENRETURN
|
||
9590 F9=1:GOSUB4710:RETURN
|
||
9600 PRINT:PRINT"*** RED ALERT!! RED ALERT!! ***":PRINT
|
||
9610 PRINT"*** COLLISION IMMINENT!!":PRINT
|
||
9620 PRINT"*** ";S5$;" RAMS ";:W7=1:IFQ$(S6,S7)="C"THENW7=2
|
||
9630 IFW7=1THENPRINT"KLINGON AT ";
|
||
9640 IFW7=2THENPRINT"COMMANDER AT ";
|
||
9650 PRINT"SECTOR";S6;"-";S7:A5=S6:A6=S7:T2$=Q$(S6,S7)
|
||
9660 GOSUB3160:PRINT"*** ";S5$;" HEAVILY DAMAGED."
|
||
9670 K=INT(5+RND(1)*20):PRINT"***SICKBAY REPORTS";K;"CASUALTIES!"
|
||
9680 C4=C4+K:FORL=1TO12:I=RND(1)
|
||
9690 J=(3.5*W7*(RND(1)+I)+1)*D5
|
||
9700 IFL=6THENJ=J/3
|
||
9710 D4(L)=D4(L)+T1+J:NEXTL:D4(6)=D4(6)-3
|
||
9720 IFD4(6)<0THEND4(6)=0
|
||
9730 S4=0:IFR1<>0THENRETURN
|
||
9740 F9=1:GOSUB4710:RETURN
|
||
9750 RETURN
|
||
9760 A2=0:G1=0:GOSUB2200:S5$="ENTERPRISE"
|
||
9770 I7=5000:E1=I7:I8=2500:S3=I8:S4=0:S9=S4:J1=4:L1=J1
|
||
9780 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):I9=10:T4=I9
|
||
9790 W1=5:W2=25:FORI=1TO12:D4(I)=0:NEXT
|
||
9800 J2=100*INT(31*RND(1)+20):D0=J2:K1=0:K2=0:N1=0:N2=0:R6=0:C4=0
|
||
9810 A1=1:D3=.25:FORI=1TO8:FORJ=1TO8:S2(I,J)=0:NEXTJ:NEXTI
|
||
9820 F1(1)=D0-.5*I5*LOG(RND(1)):F1(5)=1E+30
|
||
9830 F1(2)=D0-1.5*(I5/R2)*LOG(RND(1)):I6=0
|
||
9840 F1(3)=D0-.3*I5*LOG(RND(1)):F1(4)=D0-.3*I5*LOG(RND(1))
|
||
9850 FORI=1TO8:FORJ=1TO8:K=INT(RND(1)*9+1):I6=I6+K
|
||
9860 G(I,J)=K:NEXTJ:NEXTI:S1=0
|
||
9870 FOR I=1TOI2
|
||
9880 X=INT(RND(1)*6+2):Y=INT(RND(1)*6+2)
|
||
9890 IFG(X,Y)>=10THEN9880
|
||
9900 IFI<2THEN9940
|
||
9910 K=I-1:FORJ=1TOK:D1=SQR((B2(J)-X)^2+(B3(J)-Y)^2)
|
||
9920 IFD1<2THEN9880
|
||
9930 NEXTJ
|
||
9940 B2(I)=X:B3(I)=Y:S2(X,Y)=-1:G(X,Y)=G(X,Y)+10:NEXTI
|
||
9950 B1=0:K=I1-I4:L=INT(.25*S8*(9-L2)+1)
|
||
9960 M=INT((1-RND(1)^2)*L):IFM>KTHENM=K
|
||
9970 N=100*M
|
||
9980 X=FNA(1):Y=FNA(1):IFG(X,Y)+N>999THEN9980
|
||
9990 G(X,Y)=G(X,Y)+N:K=K-M:IFK<>0THEN9960
|
||
10000 FORI=1TOI4
|
||
10010 X=FNA(1):Y=FNA(1):IF(G(X,Y)<99)AND(RND(1)<.75)THEN10010
|
||
10020 IFG(X,Y)>899THEN10010
|
||
10030 IFI=1THEN10060
|
||
10040 M=I-1:FORJ=1TOM:IF(C1(J)=X)AND(C2(J)=Y)THEN10010
|
||
10050 NEXTJ
|
||
10060 G(X,Y)=G(X,Y)+100:C1(I)=X:C2(I)=Y:NEXTI
|
||
10070 I=INT(D0):PRINT:S0=0
|
||
10080 T2=FNA(1):T3=FNA(1):IFG(T2,T3)<100THEN10080
|
||
10090 PRINT"STARDATE..............";I
|
||
10100 PRINT"NUMBER OF KLINGONS....";I1
|
||
10110 PRINT"NUMBER OF STARDATES...";INT(I5)
|
||
10120 PRINT"NUMBER OF STARBASES...";I2
|
||
10130 PRINT"STARBASE LOCATIONS....";
|
||
10140 FORI=1TOI2:PRINTB2(I);"-";B3(I);
|
||
10150 IFI<>I2THENPRINT", ";
|
||
10160 NEXTI:PRINT:PRINT
|
||
10170 GOSUB7550
|
||
10180 PRINT"THE ";S5$;" IS CURRENTLY IN THE ";G2$;" QUADRANT."
|
||
10190 GOSUB7260
|
||
10200 PRINT:INPUT"READY TO CONTINUE";NL$:PRINTCHR$(26):GOSUB11090:GOSUB5650:RETURN
|
||
10210 INPUT"WARP FACTOR";K
|
||
10220 PRINT
|
||
10230 IFK<1THEN10340
|
||
10240 IFK>10THEN10350
|
||
10250 J=W1:W1=K:W2=W1*W1
|
||
10260 IF(W1<=J)OR(W1<=6)THEN10290
|
||
10270 IFW1<=8THEN10300
|
||
10280 IFW1>8THEN10310
|
||
10290 PRINT"'WARP FACTOR";W1;"CAPTAIN'":RETURN
|
||
10300 PRINT"*** OUR MAXIMUM SAFE SPEED IS WARP 6":RETURN";
|
||
10310 IFW1=10THEN10330
|
||
10320 PRINT"*** CAPTAIN, OUR ENGINES MAY NOT TAKE IT !":RETURN
|
||
10330 PRINT"-'AYE, CAPTAIN, WE'LL GIVE IT A TRY.'":RETURN
|
||
10340 PRINT"-'WE CAN'T GO BELOW WARP 1, CAPTAIN.'":RETURN
|
||
10350 PRINT"-'OUR TOP SPEED IS WARP 10, CAPTAIN.'"
|
||
10360 RETURN
|
||
10370 J3=0:IFD4(8)<>0THEN10490
|
||
10380 IFS4<>0THEN10420
|
||
10390 INPUT"SHIELDS ARE DOWN. DO YOU WANT THEM UP";B$
|
||
10400 IFLEFT$(B$,1)="Y"THEN10450
|
||
10410 RETURN
|
||
10420 INPUT"SHIELDS ARE UP. DO YOU WANT THEM DOWN";B$
|
||
10430 IFLEFT$(B$,1)="Y"THEN10480
|
||
10440 RETURN
|
||
10450 S4=1:S9=1:IFC5$<>"DOCKED"THENE1=E1-50
|
||
10460 PRINT"SHIELDS RAISED.":IFE1<=0THEN10500
|
||
10470 J3=1:RETURN
|
||
10480 S4=0:S9=1:PRINT"SHIELDS LOWERED.":J3=1:RETURN
|
||
10490 PRINT"SHIELDS DAMAGED AND DOWN. ":RETURN
|
||
10500 PRINT:PRINT"SHIELDS CONSUME ALL ENERGY."
|
||
10510 F9=4:GOSUB4710:RETURN
|
||
10520 IFX2<>0THEN10620
|
||
10530 N=INT(RND(1)*I6+1):FORX=1TO8:FORY=1TO8
|
||
10540 N=N-(G(X,Y)-INT(G(X,Y)/10)*10):IFN<=0THEN10560
|
||
10550 NEXTY:NEXTX:RETURN
|
||
10560 IF(X<>Q1)OR(Y<>Q2)THEN10680
|
||
10570 IFJ4<>0THEN10680
|
||
10580 N=INT(RND(1)*(G(X,Y)-INT(G(X,Y)/10)*10))+1
|
||
10590 FORX3=1TO10:FORY3=1TO10:IFQ$(X3,Y3)<>"*"THEN10610
|
||
10600 N=N-1:IFN=0THEN10620
|
||
10610 NEXTY3:NEXTX3
|
||
10620 PRINT:PRINT"*** RED ALERT!! RED ALERT!! ***
|
||
10630 X3=X2:Y3=Y2
|
||
10640 PRINT"*** INCIPIENT SUPERNOVA DETECTED AT SECTOR";X3;"-";Y3
|
||
10650 X=Q1:Y=Q2:K=(X2-S6)^2+(Y2-S7)^2
|
||
10660 IFK>1.5THEN10720
|
||
10670 PRINT"*** EMERGENCY AUTO-OVERRIDE JAMMED ***":A2=1:GOTO10720
|
||
10680 IFD4(9)<>0THEN10720
|
||
10690 PRINT:PRINT"MESSAGE FROM STARFLEET COMMAND...STARDATE";INT(D0)
|
||
10700 PRINT"'SUPERNOVA IN QUADRANT";X;"-";Y;
|
||
10710 PRINT"....CAUTION ADVISED'"
|
||
10720 N=G(X,Y):R=INT(N/100):Q=0
|
||
10730 IF(X<>Q1)OR(Y<>Q2)THEN10750
|
||
10740 K3=0:C3=0
|
||
10750 IFR=0THEN10810
|
||
10760 R1=R1-R:IFR2=0THEN10810
|
||
10770 FORL=1TOR2:IF(C1(L)<>X)OR(C2(L)<>Y)THEN10800
|
||
10780 C1(L)=C1(R2):C2(L)=C2(R2):C1(R2)=0:C2(R2)=0
|
||
10790 R2=R2-1:R=R-1:Q=1:IFR2=0THENF1(2)=1E+30
|
||
10800 NEXTL
|
||
10810 IFR3=0THEN10850
|
||
10820 FORL=1TOR3:IF(B2(L)<>X)OR(B3(L)<>Y)THEN10840
|
||
10830 B2(L)=B2(R3):B3(L)=B3(R3):B2(R3)=0:B3(R3)=0:R3=R3-1
|
||
10840 NEXTL
|
||
10850 IFX2=0THEN10890
|
||
10860 N=G(X,Y)-INT(G(X,Y)/100)*100
|
||
10870 S1=S1+(N-INT(N/10)*10):B1=B1+INT(N/10)
|
||
10880 K1=K1+R:K2=K2+Q
|
||
10890 IF(S2(X,Y)<>0)AND(D4(9)<>0)THENS2(X,Y)=LQ+G(X,Y)
|
||
10900 IF(D4(9)=0)OR((Q1=X)AND(Q2=Y))THENS2(X,Y)=1
|
||
10910 G(X,Y)=1000
|
||
10920 IF(R1<>0)OR((X=Q1)AND(Y=Q2))THEN10960
|
||
10930 PRINTCHR$(26):PRINT"*** SUPERNOVA IN QUADRANT";X;"-";Y;"HAS DESTROYED THE"
|
||
10940 PRINT"REMAINDER OF THE ENEMY FLEET !!"
|
||
10950 F9=1:GOTO4710
|
||
10960 IFA2=0THENRETURN
|
||
10970 F9=8:GOTO4710
|
||
10980 IFK3<=1THENRETURN
|
||
10990 Z4=0:FORO=1TOK3-1:IFK7(O)<=K7(O+1)THEN11060
|
||
11000 K=K7(O):K7(O)=K7(O+1):K7(O+1)=K
|
||
11010 K=K8(O):K8(O)=K8(O+1):K8(O+1)=K
|
||
11020 K=K4(O):K4(O)=K4(O+1):K4(O+1)=K
|
||
11030 K=K5(O):K5(O)=K5(O+1):K5(O+1)=K
|
||
11040 K=K6(O):K6(O)=K6(O+1):K6(O+1)=K
|
||
11050 Z4=1
|
||
11060 NEXTO
|
||
11070 IFZ4<>0THEN10990
|
||
11080 RETURN
|
||
11090 IFD(1)<>0THEN11330
|
||
11100 PRINT:PRINT" 1 2 3 4 5 6 7 8 9 10"
|
||
11110 FORI=1TO10:IFI<10THENPRINT" ";
|
||
11120 PRINTI;:FORJ=1TO10:PRINTQ$(I,J);" ";:NEXTJ
|
||
11130 ONIGOTO11150,11160,11180,11190,11240
|
||
11140 ONI-5GOTO11250,11260,11270,11300,11310
|
||
11150 PRINT" STARDATE ";FNR(D0):GOTO11320
|
||
11160 IFC5$<>"DOCKED"THENGOSUB7230
|
||
11170 PRINT" CONDITION ";C5$:GOTO11320
|
||
11180 PRINT" POSITION ";Q1;"-";Q2;", ";S6;"-";S7:GOTO11320
|
||
11190 PRINT" LIFE SUPPORT ";:IFD4(5)<>0THEN11210
|
||
11200 PRINT"ACTIVE":GOTO11320
|
||
11210 IFC5$<>"DOCKED"THEN11230
|
||
11220 PRINT"DAMAGED, SUPPORTED BY STARBASE":GOTO11320
|
||
11230 PRINT"DAMAGED, RESERVES=";FNS(L1):GOTO11320
|
||
11240 PRINT" WARP FACTOR ";FNR(W1):GOTO11320
|
||
11250 PRINT" ENERGY";SPC(8);.01*INT(100*E1):GOTO11320
|
||
11260 PRINT" TORPEDOS ";T4:GOTO11320
|
||
11270 PRINT" SHIELDS ";:B$="DOWN,":IFS4<>0THENB$="UP,"
|
||
11280 IFD4(8)>0THENB$="DAMAGED,"
|
||
11290 PRINTB$;INT(100*S3/I8+.5);"%":GOTO11320
|
||
11300 PRINT" KLINGONS LEFT ";R1:GOTO11320
|
||
11310 PRINT" TIME LEFT ";FNS(R5)
|
||
11320 NEXTI:RETURN
|
||
11330 PRINT"SHORT RANGE SENSORS DAMAGED.":RETURN
|
||
11340 PRINT:PRINT"*** TIME WARP ENTERED ***":PRINT"YOU ARE TRAVELING ";
|
||
11350 IFS0<>0THEN11390
|
||
11360 T1=-.5*I5*LOG(RND(1))
|
||
11370 PRINT"FORWARD IN TIME";FNR(T1);"STARDATES."
|
||
11380 F1(2)=F1(2)+T1:GOTO11550
|
||
11390 M=D0:D0=D9(1)
|
||
11400 PRINT"BACKWARD IN TIME";FNR(M-D0);"STARDATES.":S0=0
|
||
11410 R1=D9(2):R2=D9(3):R3=D9(4):R4=D9(5):R5=D9(6)
|
||
11420 S1=D9(7):B1=D9(8):K1=D9(9):K2=D9(10)
|
||
11430 FORI=1TO8:FORJ=1TO8:G(I,J)=D9(I-1+8*(J-1)+11):NEXTJ:NEXTI
|
||
11440 FORI=75TO84:C1(I-74)=D9(I):NEXT
|
||
11450 FORI=85TO94:C2(I-84)=D9(I):NEXT
|
||
11460 FORI=95TO99:B2(I-94)=D9(I):NEXT
|
||
11470 FORI=100TO104:B3(I-99)=D9(I):NEXT:B4=D9(105):B5=D9(106)
|
||
11480 F1(1)=D0-.5*I5*LOG(RND(1))
|
||
11490 IFR2<>0THENF1(2)=D0-(I5/R2)*LOG(RND(1))
|
||
11500 F1(3)=D0-.5*I5*LOG(RND(1))
|
||
11510 FORI=1TO8:FORJ=1TO8:IF1<S2(I,J)THENS2(I,J)=1
|
||
11520 NEXTJ:NEXTI
|
||
11530 PRINT
|
||
11540 PRINT"SPOCK HAS RECONSTRUCTED A CORRECT STAR CHART FROM MEMORY."
|
||
11550 GOSUB7260:RETURN
|
||
11560 J3=0:IFD4(12)<>0THEN11690
|
||
11570 INPUT"NUMBER OF UNITS TO SHIELDS";Z3
|
||
11580 IFZ3<0THENRETURN
|
||
11590 IFE1+S3-Z3>0THEN11620
|
||
11600 PRINT"SCOTT HERE- 'WE ONLY HAVE";FNR(E1+S3);"UNITS LEFT.'"
|
||
11610 RETURN
|
||
11620 E1=E1+S3-Z3:S3=Z3:PRINT"--ENERGY TRANSFER COMPLETE--"
|
||
11630 PRINT"(SHIP ENERGY=";FNR(E1);" SHIELD ENERGY=";FNR(S3);")"
|
||
11640 J3=1
|
||
11650 T1=.1:P5=(K3+4*C3)/48:IFP5<.1THENP5=.1
|
||
11660 IFP5>RND(1)THENGOSUB790
|
||
11670 IFA2<>0THENRETURN
|
||
11680 GOSUB3640:RETURN
|
||
11690 PRINT"TRANSFER PANEL DAMAGED.":RETURN
|
||
11700 J3=0:INPUT"HOW MANY STARDATES";Z5:IF(Z5<R5)AND(K3=0)THEN11720
|
||
11710 INPUT"ARE YOU SURE";B$:IFLEFT$(B$,1)<>"Y"THENRETURN
|
||
11720 R6=1
|
||
11730 IFZ5<=0THENR6=0
|
||
11740 IFR6=0THENRETURN
|
||
11750 T1=Z5:Z6=Z5
|
||
11760 IFK3=0THEN11790
|
||
11770 T1=1+RND(1):IFZ5<T1THENT1=Z5
|
||
11780 Z6=T1
|
||
11790 IFT1<Z5THENGOSUB790
|
||
11800 IFA2<>0THENRETURN
|
||
11810 GOSUB3640:J3=1:IFA2<>0THENRETURN
|
||
11820 Z5=Z5-Z6:GOTO11730
|
||
11830 J3=0:IFD4(6)<>0THEN12300
|
||
11840 INPUT"ENTER COURSE...";D2:IFD2<.01ORD2>12THENGOSUB12780
|
||
11850 INPUT"DISTANCE...";D1
|
||
11860 P=(D1+.05)*W1*W1*W1*(S4+1):IFP<E1THEN11980
|
||
11870 J3=0:PRINT:PRINT"ENGINEERING TO BRIDGE--"
|
||
11880 IF(S4=0)OR(.5*P>E1)THEN11910
|
||
11890 PRINT" WE HAVEN'T THE ENERGY TO GO THAT FAR WITH";
|
||
11900 PRINT" THE SHIELDS UP.":RETURN
|
||
11910 W=INT((E1/(D1+.05))^.333333):IFW<=0THEN11960
|
||
11920 PRINT" WE HAVEN'T THE ENERGY. BUT WE COULD DO IT AT WARP";W
|
||
11930 IFS4<>0THEN11950
|
||
11940 RETURN
|
||
11950 PRINT" IF YOU'LL LOWER THE SHIELDS.":RETURN
|
||
11960 PRINT" WE CAN'T DO IT, CAPTAIN. WE HAVEN'T GOT THE ENERGY."
|
||
11970 RETURN
|
||
11980 T1=10*D1/W2:IFT1<.8*R5THEN12040
|
||
11990 PRINT:PRINT"MR. SPOCK - 'CAPTAIN, I COMPUTE THAT SUCH A TRIP"
|
||
12000 PRINT" WILL REQUIRE APPROXIMATELY";FNR(100*T1/R5);
|
||
12010 PRINT"PERCENT":PRINT" OF OUR REMAINING TIME. ARE YOU SURE ";
|
||
12020 INPUT "THIS IS WISE";B$:IFLEFT$(B$,1)="Y"THEN12040
|
||
12030 J3=0:RETURN
|
||
12040 Q4=0:W=0:IFW1<=6THEN12200
|
||
12050 P=D1*(6-W1)^2/66.6667:IFP>RND(1)THENQ4=1
|
||
12060 IFQ4<>0THEND1=RND(1)*D1
|
||
12070 W=0:IFW1<10THEN12090
|
||
12080 IF.25*D1>RND(1)THENW=1
|
||
12090 IF(Q4=0)AND(W=0)THEN12200
|
||
12100 A=(15-D2)*.5236:X1=-SIN(A):X2=COS(A)
|
||
12110 B8=ABS(X1):IFABS(X2)>ABS(X1)THENB8=ABS(X2)
|
||
12120 X1=X1/B8:Y1=Y1/B8:N=INT(10*D1*B8+.5):X=S6:Y=S7
|
||
12130 IFN=0THEN12200
|
||
12140 FORL=1TON
|
||
12150 X=X+X1:Q=INT(X+.5):IF(Q<1)OR(Q>10)THEN12200
|
||
12160 Y=Y+Y1:R=INT(Y+.5):IF(R<1)OR(R>10)THEN12200
|
||
12170 IFQ$(Q,R)="."THEN12190
|
||
12180 Q4=0:W=0
|
||
12190 NEXTL
|
||
12200 GOSUB5850:IFA2<>0THENRETURN
|
||
12210 E1=E1-D1*W1*W1*W1*(S4+1):IFE1>0THEN12230
|
||
12220 F9=4:GOSUB4710:RETURN
|
||
12230 T1=10*D1/W2:IFW<>0THENGOSUB11340
|
||
12240 IFQ4=0THEN12290
|
||
12250 PRINT:PRINT"ENGINEERING TO BRIDGE--":PRINT" SCOTT HERE- ";
|
||
12260 PRINT"'WE'VE JUST BLOWN THE WARP ENGINES."
|
||
12270 PRINT" WE'LL HAVE TO SHUT 'ER DOWN HERE, CAPTAIN.'"
|
||
12280 D4(6)=D5*(3*RND(1)+1)
|
||
12290 J3=1:RETURN
|
||
12300 PRINT"WARP ENGINES DAMAGED.":RETURN
|
||
12310 ONSGN(D4(10))+2GOTO12320,12340,12330
|
||
12320 PRINT"YE FAERIE QUEENE HAS NO SHUTTLE CRAFT.":RETURN
|
||
12330 PRINT"SHUTTLE CRAFT DAMAGED.":RETURN
|
||
12340 PRINT:PRINT"***ABANDON SHIP! ABANDON SHIP!"
|
||
12350 PRINT"***ALL HANDS ABANDON SHIP!":PRINT
|
||
12360 PRINT"YOU AND THE BRIDGE CREW ESCAPE IN THE GALILEO."
|
||
12370 PRINT"THE REMAINDER OF THE CREW BEAMS DOWN"
|
||
12380 PRINT"TO THE NEAREST HABITABLE PLANET.":IFR3<>0THEN12400
|
||
12390 F9=9:GOSUB4710:RETURN
|
||
12400 PRINT:PRINT"YOU ARE CAPTURED BY KLINGONS AND RELEASED TO"
|
||
12410 PRINT"THE FEDERATION IN A PRISONER-OF-WAR EXCHANGE."
|
||
12420 PRINT"STARFLEET PUTS YOU IN COMMAND OF ANOTHER SHIP,"
|
||
12430 PRINT"THE FAERIE QUEENE WHICH IS ANTIQUATED, BUT"
|
||
12440 PRINT"STILL USABLE.":N=INT(RND(1)*R3+1):Q1=B2(N):Q2=B3(N)
|
||
12450 S6=5:S7=5:GOSUB7260:Q$(S6,S7)="."
|
||
12460 FORL=1TO3:S6=INT(3*RND(1)-1+B6)
|
||
12470 IF(S6<1)OR(S7>10)THEN12500
|
||
12480 S7=INT(3*RND(1)-1+B7):IF(S7<1)OR(S7>10)THEN12500
|
||
12490 IFQ$(S6,S7)="."THEN12510
|
||
12500 NEXTL:GOTO12450
|
||
12510 S5$="FAERIE QUEENE":Q$(S6,S7)=LEFT$(S5$,1):C5$="DOCKED"
|
||
12520 FORL=1TO12:D4(L)=0:NEXT:D4(10)=-1:E1=3000:I7=E1
|
||
12530 S3=1500:I8=S3:T4=6:I9=T4:L1=3:J1=L1:S4=0:W1=5:W2=25
|
||
12540 RETURN
|
||
12550 IFD4(11)=0THEN12580
|
||
12560 PRINT"COMPUTER DAMAGED - CANNOT EXECUTE DESTRUCT SEQUENCE"
|
||
12570 RETURN
|
||
12580 PRINT:PRINT" ---WORKING---"
|
||
12590 PRINT"IDENTIFICATION-POSITIVE"
|
||
12600 PRINT"SELF-DESTRUCT-SEQUENCE-ACTIVATED":J=3
|
||
12610 FORI=10TO6STEP-1:PRINTSPC(J);I:GOSUB12760:J=J+3:NEXT
|
||
12620 PRINT"ENTER-YOUR-MISSION-PASSWORD-TO-CONTINUE"
|
||
12630 PRINT"SELF-DESTRUCT-SEQUENCE-OTHERWISE-DESTRUCT"
|
||
12640 PRINT"SEQUENCE-WILL-BE-ABORTED"
|
||
12650 INPUTB$:IFB$<>X$THEN12740
|
||
12660 PRINT"PASSWORD-ACCEPTED":J=10
|
||
12670 FORI=5TO1STEP-1:PRINTSPC(J);I:GOSUB12760:J=J+3:NEXT
|
||
12680 PRINT:PRINT"*****ENTROPY OF ";S5$;" MAXIMIZED*****"
|
||
12690 PRINT:IFK3=0THEN12730
|
||
12700 W=20*E1:FORL=1TOK3:IFK6(L)*K7(L)>WTHEN12720
|
||
12710 A5=K4(L):A6=K5(L):T2$=Q$(A5,A6):GOSUB3160
|
||
12720 NEXTL
|
||
12730 F9=10:GOSUB4710:RETURN
|
||
12740 PRINT"PASSWORD-REJECTED"
|
||
12750 PRINT"CONTINUITY-EFFECTED":PRINT:RETURN
|
||
12760 K=12345:FORM=1TO90:K=K+1:NEXTM:RETURN
|
||
12770 FORI=1TO10:GOTO11130:RETURN
|
||
12780 PRINT"---> COURSE(S) .01-12 ONLY !!!":RETURN
|
||
|