home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG022.ARK / TREKMOD.ASC < prev    next >
Text File  |  1985-02-10  |  43KB  |  1,279 lines

  1. 10 'BASED ON BIGTREK GAME / SHORTENED BY EDISON DOGGE.
  2. 20 WIDTH90:LQ=1000'REM NO SCORE - NO VISUALS
  3. 30 INPUT"CLEARANCE NUMBER (1 TO 25000)...";I
  4. 40 IFI<1ORI>25000ORI<>INT(I)THEN30
  5. 50 I1=IMOD97:IFI1=0THENI=I+199:GOTO50
  6. 60 I=RND(-I1):FORI1=1TOI:X=RND(1):NEXT
  7. 70 DIM G1$(16),V$(5,5),C$(20),G(8,8),D$(12),Q$(10,10),D4(12),D9(106)
  8. 80 DIM S2(8,8):Q$="?"
  9. 90 DATA S.R. SENSORS,L.R. SENSORS,PHASERS,PHOTON TUBES,LIFE SUPPORT
  10. 100 DATA WARP ENGINES,IMPULSE ENGINES,SHIELDS,SUBSPACE RADIO
  11. 110 DATA SHUTTLE CRAFT,COMPUTER,TRANSFER PANEL,ABANDON,CHART,COMPUTER
  12. 120 DATA DAMAGES,DESTRUCT,DOCK,IDLE,IMPULSE,LRSCAN,NAVIGATE,PHASERS,QUIT
  13. 130 DATA SHIELDS,SOS,SRSCAN,STATUS,TORPEDO,TRANSFER,VISUAL,WARP,SHORT
  14. 140 DATA MEDIUM,LONG,BEGINNER,NOVICE,SENIOR,EXPERT,COURSE,WCOST,ICOST
  15. 150 DATA PEFFECT,OUT,ANTARES,SIRIUS,RIGEL,MERAK,PROCYON,CAPELLA
  16. 160 DATA VEGA,DENEB,CANOPUS,ALDEBARAN,ALTAIR,REGULUS,BELLATRIX,ARCTURUS
  17. 170 DATA POLLUX,SPICA,10.5,12,1.5,9,0,3,7.5,6,4.5
  18. 180 DEF FNA(X)=INT(8*RND(X))+1:DEF FNB(X)=INT(10*RND(X))+1
  19. 190 DEF FND(X)=X/60
  20. 200 DEFFNR(X)=INT(X*10+.5)/10:DEFFNS(X)=INT(X*100+.5)/100
  21. 210 FORI=1TO12:READD$(I):NEXT:FORI=1TO20:READC$(I):NEXT
  22. 220 FORI=1TO3:READT$(I):NEXT:FORI=1TO4:READS$(I):NEXT:FORI=1TO5
  23. 230 READC2$(I):NEXT:FORI=1TO16:READG1$(I):NEXT:FORI=1TO9:READC5(I):NEXT
  24. 240 GOSUB9760:S7$(1)="":S7$(2)="  ":S7$(3)=" ":S7$(4)=""
  25. 250 IFA2<>0THEN760
  26. 260 J4=0:T1=0:INPUT"COMMAND";A$:IFLEN(A$)>1THEN280
  27. 270 PRINT"2 LETTERS, PLEASE.":GOTO260
  28. 280 FORI=1TO20
  29. 290 IFA$=LEFT$(C$(I),LEN(A$))THEN350
  30. 300 NEXT
  31. 310 PRINT"ILLEGAL !! - USE THIS LIST"
  32. 320 PRINT:FORI=1TO20STEP4
  33. 330 PRINTC$(I);TAB(12);C$(I+1);TAB(22);C$(I+2);TAB(32);C$(I+3)
  34. 340 NEXT:PRINT:GOTO250
  35. 350 ONIGOTO370,380,390,400,410,420,430,470,490,500
  36. 360 ONI-10GOTO530,760,550,580,590,600,610,620,660,670
  37. 370 GOSUB 12310:GOTO250
  38. 380 GOSUB 2020:GOTO250
  39. 390 GOSUB2540:GOTO250
  40. 400 GOSUB3540:GOTO250
  41. 410 GOSUB12550:GOTO250
  42. 420 GOSUB3430:GOTO250
  43. 430 GOSUB11700:IFJ3=0THEN250
  44. 440 IFA2<>0THEN760
  45. 450 IFG(Q1,Q2)=1000THEN720
  46. 460 GOSUB790:GOTO250
  47. 470 GOSUB5390:IFJ3=0THEN250
  48. 480 GOTO680
  49. 490 GOSUB5650:GOTO250
  50. 500 GOSUB11830
  51. 510 IFJ3=0THEN250
  52. 520 GOTO680
  53. 530 GOSUB8270:IFJ3=0THEN250
  54. 540 GOSUB790:GOTO250
  55. 550 GOSUB10370:IFJ3=0THEN250
  56. 560 IFA2<>0THEN760
  57. 570 GOSUB790:S9=0:GOTO250
  58. 580 GOSUB4720:GOTO250
  59. 590 GOSUB11090:GOSUB5650:GOTO250
  60. 600 PRINT:GOSUB12770:GOTO250
  61. 610 GOSUB8660:IFJ3=0THEN250ELSE680
  62. 620 GOSUB11560:IFJ3=0THEN250
  63. 630 IFA2<>0THEN760
  64. 640 IFG(Q1,Q2)<>LQTHEN250
  65. 650 GOTO720
  66. 660 PRINT:PRINT"VISUAL INOPERATIVE !":RETURN
  67. 670 GOSUB10210:GOTO250
  68. 680 IFA2<>0THEN760
  69. 690 IFT1<>0THENGOSUB3640
  70. 700 IFA2<>0THEN760
  71. 710 IFG(Q1,Q2)<LQTHEN750
  72. 720 GOSUB1580:IFA2<>0THEN760
  73. 730 IFA2<>0THEN760
  74. 740 GOTO710
  75. 750 GOSUB790:GOTO250
  76. 760 PRINT:PRINT:INPUT"ANOTHER GAME ";A$
  77. 770 IFLEFT$(A$,1)="Y"THEN240
  78. 780 PRINTCHR$(26):END
  79. 790 IF(C3<>0)AND(J4=0)THENGOSUB6620
  80. 800 IFK3=0THENRETURN
  81. 810 IFA2<>0THENRETURN
  82. 820 P2=1/I8
  83. 830 J5=0
  84. 840 PRINT
  85. 850 IFC5$="DOCKED"THEN1530
  86. 860 H2=0:H3=0:C6=1
  87. 870 IFS9=1THENC6=.5+.5*RND(1)
  88. 880 A3=0
  89. 890 FORL=1TOK3
  90. 900 IFK6(L)<0THEN1320
  91. 910 A3=1
  92. 920 D6=.8+.05*RND(1)
  93. 930 H4=K6(L)*D6^K8(L)
  94. 940 IF(S4=0)AND(S9=0)THEN1000
  95. 950 P3=.1:IFP2*S3>P3THENP3=P2*S3
  96. 960 H5=P3*C6*H4+1
  97. 970 IFH5>S3THENH5=S3
  98. 980 S3=S3-H5:H4=H4-H5
  99. 990 IF(P3>.1)AND(H4<5E-03*E1)THEN1320
  100. 1000 J5=1
  101. 1010 PRINTFNR(H4);"UNIT HIT ON THE ";S5$;" FROM ";
  102. 1020 J6=K4(L):J7=K5(L)
  103. 1030 IFQ$(J6,J7)="K"THENPRINT"KLINGON AT";
  104. 1040 IFQ$(J6,J7)="C"THENPRINT"COMMANDER AT";
  105. 1050 PRINTJ6;"-";J7
  106. 1060 IFH4>H2THENH2=H4
  107. 1070 H3=H3+H4
  108. 1080 IFH4<(275-25*S8)*(1+.5*RND(1))THEN1310
  109. 1090 N4=1+INT(H4/(500+100*RND(1)))
  110. 1100 PRINT"*** CRITICAL HIT--";
  111. 1110 K9=1
  112. 1120 FORW4=1TON4
  113. 1130 J9=INT(12*RND(1))+1
  114. 1140 C5(W4)=J9
  115. 1150 E3=(H4*D5)/(N4*(75+25*RND(1)))
  116. 1160 IFJ9=6THENE3=E3/3
  117. 1170 D4(J9)=D4(J9)+E3
  118. 1180 IFW4=1THEN1250
  119. 1190 FORV=1TOW4
  120. 1200 IFJ9=C5(V-1)THEN1260
  121. 1210 NEXTV
  122. 1220 K9=K9+1
  123. 1230 IFK9=3THENPRINT
  124. 1240 PRINT " AND ";
  125. 1250 PRINTD$(J9);
  126. 1260 NEXTW4
  127. 1270 PRINT " DAMAGED."
  128. 1280 IFD4(8)=0THEN1310
  129. 1290 IFS4<>0THENPRINT"*** SHIELDS KNOCKED DOWN."
  130. 1300 S4=0
  131. 1310 E1=E1-H4
  132. 1320 NEXTL
  133. 1330 IFA3=0THENRETURN
  134. 1340 IFE1<=0THEN1510
  135. 1350 P4=100*P2*S3+.5
  136. 1360 IFJ5<>0THEN1390
  137. 1370 PRINT"ENEMY ATTACK--SHIELDS REDUCED TO ";
  138. 1380 GOTO1430
  139. 1390 PRINT"ENERGY LEFT:";FNS(E1);"   SHIELDS ";
  140. 1400 IFS4<>0THENPRINT"UP,";
  141. 1410 IF(S4=0)AND(D4(8)=0)THENPRINT"DOWN, ";
  142. 1420 IFD4(8)>0THENPRINT"DAM GED, ";
  143. 1430 PRINTINT(P4);"%"
  144. 1440 IF(H2<200)AND(H3<500)THEN1540
  145. 1450 J8=INT(H3*RND(1)*.015)
  146. 1460 IFJ8<2THEN1540
  147. 1470 PRINT
  148. 1480 PRINT"---> 'SICKBAY TO BRIDGE.  WE SUFFERED ";J8;"CASUALTIES IN THAT ATTACK"
  149. 1490 C4=C4+J8
  150. 1500 GOTO1540
  151. 1510 F9=5
  152. 1520 GOSUB4710:RETURN
  153. 1530 PRINT"*** KLINGONS ATTACK-- STARBASE SHIELDS PROTECT THE ";S5$
  154. 1540 FORW4=1TOK3
  155. 1550 K8(W4)=K7(W4)
  156. 1560 NEXTW4
  157. 1570 GOSUB10980:RETURN
  158. 1580 PRINT:IFJ4=0THEN1610
  159. 1590 PRINT"*** RED ALERT!  RED ALERT!"
  160. 1600 PRINT"*** THE ";S5$;" HAS STOPPED IN QUADRANT CONTAINING SUPERNOVA"
  161. 1610 PRINT "*** AUTO-OVERRIDE ATTEMPTS TO HURL ";S5$;" TO OTHER QUADRANT"
  162. 1620 S2(Q1,Q2)=1
  163. 1630 GOSUB7260
  164. 1640 IFD4(6)=0THEN1830
  165. 1650 PRINT
  166. 1660 PRINT"WARP ENGINES DAMAGED."
  167. 1670 PRINT:PRINT"TRYING TO ENGAGE IMPULSE ENGINES..."
  168. 1680 IFD4(7)=0THEN1730
  169. 1690 PRINT"IMPULSE ENGINES DAMAGED."
  170. 1700 F9=8
  171. 1710 GOSUB4710
  172. 1720 RETURN
  173. 1730 P2=.75*E1
  174. 1740 D6=4E-03*(P2-50)
  175. 1750 D7=1.4142+1.2*RND(1)
  176. 1760 D1=D6
  177. 1770 IFD6>D7THEND1=D7
  178. 1780 T1=D1/.4
  179. 1790 D2=12*RND(1)
  180. 1800 J4=0
  181. 1810 GOSUB5590
  182. 1820 GOTO1940
  183. 1830 W1=6+2*RND(1)
  184. 1840 W2=W1*W1
  185. 1850 P2=.75*E1
  186. 1860 D6=P2/(W1*W1*W1*(S4+1))
  187. 1870 D7=1.4142+2*RND(1)
  188. 1880 D1=D6
  189. 1890 IFD6>D7THEND1=D7
  190. 1900 T1=10*D1/W2
  191. 1910 D2=12*RND(1)
  192. 1920 J4=0
  193. 1930 GOSUB12040
  194. 1940 IFJ4<>0THEN1980
  195. 1950 F9=8
  196. 1960 GOSUB4710
  197. 1970 RETURN
  198. 1980 IFR1<>0THENRETURN
  199. 1990 F9=1
  200. 2000 GOSUB4710
  201. 2010 RETURN
  202. 2020 PRINT:PRINT"      1   2   3   4   5   6   7   8"
  203. 2030 PRINT"     --- --- --- --- --- --- --- ---"
  204. 2040 FORI=1TO8
  205. 2050 PRINTI;" ";
  206. 2060 FORJ=1TO8
  207. 2070 ONSGN(S2(I,J))+2GOTO2080,2100,2120
  208. 2080 PRINT" .1.";
  209. 2090 GOTO 2170
  210. 2100 PRINT" ...";
  211. 2110 GOTO2170
  212. 2120 IFS2(I,J)>LQTHEN2160
  213. 2130 IFG(I,J)<LQTHENPRINTS7$(LEN(STR$(G(I,J))));STR$(G(I,J));
  214. 2140 IFG(I,J)=LQTHENPRINT" ***";
  215. 2150 GOTO2170
  216. 2160 PRINTS2(I,J)-LQ;
  217. 2170 NEXTJ:PRINT:NEXTI:GOSUB7550:PRINT
  218. 2180 PRINT"THE ";S5$;" IS CURRENTLY IN ";G2$;" (";Q1;"-";Q2;")"
  219. 2190 RETURN
  220. 2200 PRINTCHR$(26)
  221. 2210 S8=0:L2=0
  222. 2220 PRINT"MISSION DURATION...: ";
  223. 2230 INPUTA$
  224. 2240 FOR I=1TO3
  225. 2250 IFA$=LEFT$(T$(I),LEN(A$))THEN2290
  226. 2260 NEXTI
  227. 2270 PRINT"WOULD YOU LIKE A SHORT, MEDIUM OR LONG GAME";
  228. 2280 GOTO2230
  229. 2290 L2=I
  230. 2300 PRINT"ARE YOU A BEGINNER, NOVICE, SENIOR OR EXPERT ";
  231. 2310 INPUTA$
  232. 2320 FORI=1TO4
  233. 2330 IFA$=LEFT$(S$(I),LEN(A$))THEN2360
  234. 2340 NEXTI
  235. 2350 GOTO2300
  236. 2360 S8=I
  237. 2370 INPUT"ENTER MISSION PASSWORD...";X$:PRINT
  238. 2380 PRINT"....STAND BY...."
  239. 2390 J=RND(1)
  240. 2400 D5=.5*S8:I2=INT(L2+1+RND(1)*3)
  241. 2410 IFI2>5THENI2=5
  242. 2420 R3=I2
  243. 2430 I5=7*L2
  244. 2440 R5=I5
  245. 2450 R7=(S8-2*RND(1)+1)*S8*.1+.1
  246. 2460 IFR7<.2THENR7=R7+.1
  247. 2470 I1=INT(2*R7*I5)
  248. 2480 R1=I1
  249. 2490 I4=INT(S8+.0625*I1*RND(1))
  250. 2500 R2=I4
  251. 2510 I3=(I1+4*I4)*I5
  252. 2520 R4=I3
  253. 2530 RETURN
  254. 2540 IFD4(11)=0THEN2570
  255. 2550 PRINT" COMPUTER DISABLED"
  256. 2560 RETURN
  257. 2570 PRINT"----COMPUTER ACTIVE----"
  258. 2580 INPUT"PROGRAM NAME";B$
  259. 2590 FORI=1TO6
  260. 2600 IFB$=LEFT$(C2$(I),LEN(B$))THEN2660
  261. 2610 NEXT
  262. 2620 PRINT"VALID PROGRAMS ARE:"
  263. 2630 PRINT"  COURSE    WCOST   OUT"
  264. 2640 PRINT"  PEFFECT   ICOST"
  265. 2650 GOTO2580
  266. 2660 ON IGOTO2670,2910,2980,3040,2580,3110
  267. 2670 INPUT "ENTER QUADRANT AND SECTOR - ";A3,A4
  268. 2680 IF(A3<>INT(A3))OR(A4<>INT(A4))THEN3120
  269. 2690 IFA3<0THEN2580
  270. 2700 IFA3=0THENA3=10*Q1+Q2
  271. 2710 A3=A3+.5
  272. 2720 K=INT(A3/10)
  273. 2730 IF(K<1)OR(K>8)THEN3120
  274. 2740 C6(1)=K:K=INT(A3-C6(1)*10)
  275. 2750 IF(K<1)OR(K>8)THEN3120
  276. 2760 C6(2)=K:A4=A4+.5
  277. 2770 K=INT(A4/100)
  278. 2780 IF(K<1)OR(K>10)THEN3120
  279. 2790 C6(1)=C6(1)+(K-1)/10:K=INT(A4-K*100)
  280. 2800 IF(K<1)OR(K>10)THEN3120
  281. 2810 C6(2)=C6(2)+(K-1)/10
  282. 2820 X=Q1+((S6-1)/10)-C6(1):Y=Q2+((S7-1)/10)-C6(2)
  283. 2830 D1=0:D2=0:IF(X=0)AND(Y=0)THEN2890
  284. 2840 D1=SQR(X*X+Y*Y)
  285. 2850 IFX<0THENZ7=SGN(Y)*(3.1416-ATN(ABS(Y/X)))
  286. 2860 IFX=0THENZ7=SGN(Y)*1.5708
  287. 2870 IFX>0THENZ7=ATN(Y/X)
  288. 2880 D2=12-Z7*1.9098593#:IFD2>12THEND2=D2-12
  289. 2890 PRINT"COURSE IS";FNS(D2);" FOR A DISTANCE OF";
  290. 2900 PRINTFNS(D1);"QUADRANTS.":GOTO2580
  291. 2910 INPUT"ENTER DISTANCE AND WARP FACTOR";D1,A4
  292. 2920 IF(D1<0)THEN2580
  293. 2930 C7=D1*A4*A4*A4
  294. 2940 T1=(10*D1)/((A4*A4)+1E-05)
  295. 2950 PRINT"IT WOULD TAKE";FNS(T1);"STARDATES AND USE"
  296. 2960 PRINTFNR(C7);"UNITS OF ENERGY  (";FNR(C7+C7);"IF SHIELDS ARE UP)"
  297. 2970 GOTO2580
  298. 2980 INPUT"ENTER DISTANCE...";D1
  299. 2990 IFD1<0THEN2580
  300. 3000 C7=250*D1+50:T1=D1/.4
  301. 3010 PRINT"IT WOULD TAKE";FNR(T1);"STARDATES AND USE"
  302. 3020 PRINTC7;"UNITS OF ENERGY"
  303. 3030 GOTO2580
  304. 3040 INPUT"ENTER PHASER RANGE IN QUADRANTS";A3
  305. 3050 IFA3<0THEN2580
  306. 3060 A3=A3*10:C7=(.9^A3)*100
  307. 3070 PRINT"PHASERS ARE ";LEFT$(STR$(C7),5);"% EFFECTIVE AT THAT RANGE"
  308. 3080 GOTO2580
  309. 3090 GOSUB9750
  310. 3100 GOTO2580
  311. 3110 RETURN
  312. 3120 PRINT"FORMAT IS MN,XXYY...WHERE MN IS THE QUADRANT"
  313. 3130 PRINT"AND XXYY IS THE SECTOR...E.G. 64,0307 REFERS"
  314. 3140 PRINT"TO QUADRANT 6-4, SECTOR 3-7."
  315. 3150 GOTO 2580
  316. 3160 IFT2$<>"C"THEN3250
  317. 3170 C3=0:PRINT"*** COMMANDER AT";
  318. 3180 FORF=1TOR2:IF(C1(F)=Q1)AND(C2(F)=Q2)THEN3200
  319. 3190 NEXTF
  320. 3200 C1(F)=C1(R2):C2(F)=C2(R2):C1(R2)=0:C2(R2)=0
  321. 3210 R2=R2-1:F1(2)=1E+30
  322. 3220 IFR2<>0THENF1(2)=D0-(I4/R2)*LOG(RND(1))
  323. 3230 K2=K2+1
  324. 3240 GOTO3270
  325. 3250 PRINT"*** KLINGON AT";
  326. 3260 K1=K1+1
  327. 3270 PRINTA5;"-";A6;"DESTROYED."
  328. 3280 Q$(A5,A6)=".":R1=R1-1
  329. 3290 IFR1=0THENRETURN
  330. 3300 R5=R4/(R1+4*R2)
  331. 3310 G(Q1,Q2)=G(Q1,Q2)-100
  332. 3320 FORF=1TOK3
  333. 3330 IF(K4(F)=A5)AND(K5(F)=A6)THEN3350
  334. 3340 NEXTF
  335. 3350 K3=K3-1
  336. 3360 IFF>K3THEN3410
  337. 3370 FORG=FTOK3
  338. 3380 K4(G)=K4(G+1):K5(G)=K5(G+1):K6(G)=K6(G+1)
  339. 3390 K7(G)=K7(G+1):K8(G)=K7(G)
  340. 3400 NEXTG
  341. 3410 K4(K3+1)=0:K5(K3+1)=0:K7(K3+1)=0:K8(K3+1)=0:K6(K3+1)=0
  342. 3420 RETURN
  343. 3430 IFC5$="DOCKED"THEN3520
  344. 3440 IFB6=0THEN3460
  345. 3450 IF(ABS(S6-B6)<=1)AND(ABS(S7-B7)<=1)THEN3480
  346. 3460 PRINTS5$;" NOT ADJACENT TO A BASE."
  347. 3470 RETURN
  348. 3480 C5$="DOCKED"
  349. 3490 PRINT"---> DOCKING COMPLETED"
  350. 3500 E1=I7:S3=I8:T4[9:L1=J1
  351. 3510 RETURN
  352. 3520 PRINT"CAPTAIN, WE'RE ALREADY DOCKED!"
  353. 3530 RETURN
  354. 3540 J=0:PRINT:FORI=1TO12
  355. 3550 IFD4(I)<=0THEN3600
  356. 3560 IFJ<>0THEN3590
  357. 3570 PRINT"     DEVICE";SPC(12);"-REPAIR TIMES-"
  358. 3580 PRINTSPC(21);"IN FLIGHT    DOCKED":J=1
  359. 3590 PRINT"  ";D$(I);TAB(23);FNS(D4(I));TAB(33);FNS(D3*D4(I))
  360. 3600 NEXTI
  361. 3610 PRINT"TAB(23);"VISUAL SENSORS PERMANENTLY DAMAGED"
  362. 3620 IFJ=0THENPRINT" - ALL DEVICES (EXCEPT VISUAL) FUNCTIONAL -"
  363. 3630 RETURN
  364. 3640 M=0:D7=D0+T1:FORL=1TO5
  365. 3650 IFF1(L)>D7THEN3670
  366. 3660 M=L:D7=F1(L)
  367. 3670 NEXTL
  368. 3680 X6=D7-D0:D0=D7
  369. 3690 R4=R4-(R1+4*R2)*X6
  370. 3700 R5=R4/(R1+4*R2)
  371. 3710 IFR5>0THEN3750
  372. 3720 F9=2
  373. 3730 GOSUB4710
  374. 3740 RETURN
  375. 3750 IF(D4(5)=0)OR(C5$="DOCKED")THEN3810
  376. 3760 IF(L1>=X6)OR(D4(5)<=L1)THEN3790
  377. 3770 F9=3:GOSUB4710
  378. 3780 RETURN
  379. 3790 L1=L1-X6
  380. 3800 IFD4(5)<=X6THENL1=J1
  381. 3810 R=X6
  382. 3820 IFC5$="DOCKED"THENR=X6/D3
  383. 3830 FORL=1TO12
  384. 3840 IFD4(L)<=0THEN3890
  385. 3850 D4(L)=D4(L)-R
  386. 3860 IFD4(L)<0THEND4(L)=0
  387. 3870 IFD4(L)<>0THEN3890
  388. 3880 PRINT:PRINT"DAMAGE CONTROL-  ";D$(L);" NOW OPERATIONAL."
  389. 3890 NEXTL
  390. 3900 IFM=0THENRETURN
  391. 3910 T1=T1-X6
  392. 3920 ONMGOTO3930,3970,4190,4280,4450
  393. 3930 X2=0:Y2=0:GOSUB10520
  394. 3940 F1(1)=D0-.5*I5*LOG(RND(1))
  395. 3950 IFG(Q1,Q2)=LQTHENRETURN
  396. 3960 GOTO3640
  397. 3970 IFR2=0THEN4180
  398. 3980 IFC5$="DOCKED"THEN4160
  399. 3990 I=INT(RND(1)*R2)+1
  400. 4000 Y6=(C1(I)-Q1)^2+(C2(I)-Q2)^2
  401. 4010 IFY6=0THEN4160
  402. 4020 Y6=SQR(Y6):T1=.17778*Y6
  403. 4030 PRINT:PRINT"*** ";S5$;" CAUGHT IN LONG-RANGE TRACTOR BEAM--"
  404. 4040 Q1=C1(I):Q2=C2(I)
  405. 4050 S6=FNB(1):S7=FNB(1)
  406. 4060 PRINT"PULLED TO QUADRANT";Q1;"-";Q2;", SECTOR";S6;"-";S7
  407. 4070 IFR6<>0THENPRINT"(IDLE PERIOD CANCELLED)"
  408. 4080 R6=0
  409. 4090 IFS4<>0THEN4150
  410. 4100 IF(D4(8)=0)AND(S3>0)THEN4130
  411. 4110 PRINT"(SHIELDS NOT CURRENTLY USABLE.)"
  412. 4120 GOTO4150
  413. 4130 GOSUB10390
  414. 4140 S9=0
  415. 4150 GOSUB7260
  416. 4160 F1(2)=D0+T1-1.5*(I5/R2)*LOG(RND(1))
  417. 4170 GOTO3640
  418. 4180 F1(2)=1E+30:GOTO3640
  419. 4190 D9(1)=D0:D9(2)=R1:D9(3)=R2:D9(4)=R3:D9(5)=R4:D9(6)=R5
  420. 4200 D9(7)=S1:D9(8)=B1:D9(9)=K1:D9(10)=K2
  421. 4210 FORI=1TO8:FORJ=1TO8:D9(I-1+8*(J-1)+11)=G(I,J):NEXTJ:NEXTI
  422. 4220 FORI=75TO84:D9(I)=C1(I-74):NEXT
  423. 4230 FORI=85TO94:D9(I)=C2(I-84):NEXT
  424. 4240 FORI=95TO99:D9(I)=B2(I-94):NEXT
  425. 4250 FORI=100TO104:D9(I)=B3(I-99):NEXT
  426. 4260 D9(105)=B4:D9(106)=B5
  427. 4270 S0=1:F1(3)=D0-.3*I5*LOG(RND(1)):GOTO3640
  428. 4280 IF(R2=0)OR(R3=0)THEN4330
  429. 4290 FORI=1TOR3:FORJ=1TOR2:IF(B2(I)=C1(J))AND(B3(I)=C2(J))THEN4340
  430. 4300 NEXTJ:NEXTI
  431. 4310 F1(4)=D0+.5+3*RND(1)
  432. 4320 F1(5)=1E+30:GOTO3640
  433. 4330 F1(4)=1E+30:F1(5)=1E+30:GOTO3640
  434. 4340 B4=B2(I):B5=B3(I)
  435. 4350 IF(B4=Q1)AND(B5=Q2)THEN4310
  436. 4360 F1(5)=D0+.5+3*RND(1)
  437. 4370 F1(4)=F1(5)-.3*I5*LOG(RND(1))
  438. 4380 IFD4(9)>0THEN3640
  439. 4390 PRINT:PRINT"  CAPTAIN, THE STARBASE IN";B4;"-";B5;"IS UNDER ATTACK-"
  440. 4400 PRINT"  AND CAN ONLY RESIST UNTIL STARDATE";FNR(F1(5));"!!!"
  441. 4410 IFR6=0THEN3640
  442. 4420 INPUT"  SHALL WE CANCEL IDLE PERIOD";B$
  443. 4430 IFLEFT$(B$,1)="Y"THENR6=0
  444. 4440 GOTO3640
  445. 4450 F1(5)=1E+30:IF(R2=0)OR(R3=0)THEN3640
  446. 4460 K=INT(G(B4,B5)/100):IFG(B4,B5)-K*100<10THEN3640
  447. 4470 FORI=1TOR2:IF(C1(I)=B4)AND(C2(I)=B5)THEN4490
  448. 4480 NEXT:GOTO3640
  449. 4490 IFS2(B4,B5)=-1THENS2(B4,B5)=0
  450. 4500 IFS2(B4,B5)>999THENS2(B4,B5)=S2(B4,B5)-10
  451. 4510 IF(B4<>Q1)OR(B5<>Q2)THEN4600
  452. 4520 FORI=1TOK3:K=K4(I):L=K5(I)
  453. 4530 IFQ$(K,L)="C"THEN4550
  454. 4540 NEXT
  455. 4550 IFK6(I)<25+50*RND(1)THEN3640
  456. 4560 Q$(B6,B7)=".":B6=0:B7=0
  457. 4570 GOSUB7230
  458. 4580 PRINT:PRINT"CAPTAIN, I BELIEVE THE STARBASE HAS BEEN DESTROYED"
  459. 4590 GOTO4640
  460. 4600 IF(R3=1)OR(D4(9)>0)THEN4640
  461. 4610 PRINT
  462. 4620 PRINT"--> STARFLEET COMMAND REPORTS THAT STARBASE IN QUADRANT";B4;"-";B5
  463. 4630 PRINT"HAS BEEN DESTROYED BY ENEMY COMMANDER !!"
  464. 4640 G(B4,B5)=G(B4,B5)-10
  465. 4650 IFR3<=1THEN4690
  466. 4660 FORI=1TOR3:IF(B2(I)=B4)AND(B3(I)=B5)THEN4680
  467. 4670 NEXT
  468. 4680 B2(I)=B2(R3):B3(I)=B3(R3)
  469. 4690 R3=R3-1
  470. 4700 GOTO3640
  471. 4710 PRINT:PRINT:PRINT:PRINT"CONFLICT RESOLVED -GAME OVER":GOTO760
  472. 4720 IFC5$<>"DOCKED"THEN4750
  473. 4730 PRINT"--> CAPTAIN, WE'RE ALREADY DOCKED!"
  474. 4740 RETURN
  475. 4750 IFD4(9)=0THEN4770
  476. 4760 PRINT"SUBSPACE RADIO DAMAGED...CANNOT TRANSMIT.":RETURN
  477. 4770 IFR3<>0THEN4790
  478. 4780 PRINT"CAPTAIN, NO RESPONSE FROM STARBASE !":RETURN
  479. 4790 N1=N1+1:IFB6=0THEN4810
  480. 4800 GOTO4870
  481. 4810 D1=1E+30
  482. 4820 FORL=1TOR3:X=10*SQR((B2(L)-Q1)^2+(B3(L)-Q2)^2)
  483. 4830 IFX>D1THEN4850
  484. 4840 D1=X:K=L
  485. 4850 NEXTL
  486. 4860 Q1=B2(K):Q2=B3(K):GOSUB7260
  487. 4870 Q$(S6,S7)="."
  488. 4880 PRINT
  489. 4890 PRINT"STARBASE IN QUADRANT";Q1;"-";Q2;"RESPONDS --";
  490. 4900 PRINT"  ";S5$;" DEMATERIALIZES."
  491. 4910 P2=(1-.98^D1)^.333333
  492. 4920 FORL=1TO3
  493. 4930 IFL=1THENPRINT"1ST ";
  494. 4940 IFL=2THENPRINT"2ND ";
  495. 4950 IFL=3THENPRINT"3RD ";
  496. 4960 PRINT"ATTEMPT TO RE-MATERIALIZE THE ";S5$;". . . . .";
  497. 4970 IFRND(1)>P2THEN5000
  498. 4980 PRINT"FAILS.":NEXTL
  499. 4990 F9=11:GOSUB4710:RETURN
  500. 5000 FORL=1TO5:I=B6+INT(3*RND(1))-1
  501. 5010 IF(I<1)OR(I>10)THEN5050
  502. 5020 J=B7+INT(3*RND(1))-1
  503. 5030 IF(J<1)OR(J>10)THEN5050
  504. 5040 IFQ$(I,J)="."THEN5060
  505. 5050 NEXTL:PRINT"FAILS.":GOTO4990
  506. 5060 PRINT"SUCCEEDS.":S6=I:S7=J:Q$(I,J)=LEFT$(S5$,1)
  507. 5070 GOSUB3430:PRINT"CAPTAIN, WE MADE IT!":RETURN
  508. 5080 P4=2:L5=K3:N=1
  509. 5090 FORK=1TOL5
  510. 5100 IFH3(K)=0THEN5360
  511. 5110 D6=.9+.01*RND(1):H2=H3(K)*D6^K7(N)
  512. 5120 P3=K6(N)
  513. 5130 P=ABS(P3):IFP4*H2<PTHENP=P4*H2
  514. 5140 K6(N)=P3-SGN(P3)*ABS(P)
  515. 5150 X8=K4(N):Y8=K5(N)
  516. 5160 IFH2>4.99THEN5180
  517. 5170 PRINT"MINOR HIT ON ":GOTO5190
  518. 5180 PRINTFNR(H2);"UNIT HIT ON ";
  519. 5190 M$=Q$(X8,Y8)
  520. 5200 IF M$="K"THENPRINT"KLINGON AT";
  521. 5210 IFM$="C"THENPRINT"COMMANDER AT";
  522. 5220 PRINTX8;"-";Y8
  523. 5230 IFK6(N)<>0THEN5270
  524. 5240 A5=X8:A6=Y8:T2$=Q$(X8,Y8):GOSUB3160
  525. 5250 IFR1<>0THEN5370
  526. 5260 F9=1:GOSUB4710:GOTO5370
  527. 5270 IFK6(N)<0THEN5360
  528. 5280 IFRND(1)<.9THEN5360
  529. 5290 IFK6(N)>(.4+.4*RND(1))*P3THEN5360
  530. 5300 PRINT
  531. 5310 PRINT"*** CAPTAIN, THE VESSEL AT SECTOR";
  532. 5320 PRINTX8;"-";Y8
  533. 5330 PRINT"   HAS JUST LOST ITS FIREPOWER !!!"
  534. 5340 PRINT
  535. 5350 K6(N)=-K6(N)
  536. 5360 N=N+1
  537. 5370 NEXTK
  538. 5380 RETURN
  539. 5390 J3=0
  540. 5400 IFD4(7)<>0THEN5640
  541. 5410 IFE1<=75THEN5470
  542. 5420 INPUT"ENTER COURSE....";D2
  543. 5430 IFD2<.01ORD2>12THENGOSUB12780ELSE5450
  544. 5440 RETURN
  545. 5450 P3=50+250*D1
  546. 5460 IFP3<E1THEN5540
  547. 5470 PRINT
  548. 5480 PRINT"1ST OFFICER SPOCK-  'CAPTAIN, THE IMPULSE ENGINES"
  549. 5490 PRINT"REQUIRE 50 UNITS OF ENERGY TO ENGAGE, PLUS 250 UNITS PER ";
  550. 5500 IFE1>75THEN5520
  551. 5510 PRINT"QUADRANT.  THEY ARE USELESS NOW.'":RETURN
  552. 5520 PRINT"QUADRANT.  WE CAN GO A MAXIMUM OF ";
  553. 5530 PRINTFNR(4E-03*(E1-50)-.05);"QUADRANTS.'":RETURN
  554. 5540 T1=D1/.4
  555. 5550 IFT1<R5THEN5590
  556. 5560 PRINT"SIR, MAX. SPEED UNDER IMPULSE IS ONLY 4 SECTORS PER STARDATE"
  557. 5570 INPUT"-- AUTHORIZE ";B$
  558. 5580 IFLEFT$(B$,1)<>"Y"THENRETURN
  559. 5590 GOSUB5850:J3=1
  560. 5600 IFA2<>0THENRETURN
  561. 5610 E1=E1-P3
  562. 5620 IFE1>0THENRETURN
  563. 5630 F9=4:GOSUB4710:RETURN
  564. 5640 PRINT"IMPULSE ENGINES DAMAGED.":RETURN
  565. 5650 N$="    #"
  566. 5660 PRINT
  567. 5670 IFD4(2)<>0THEN5840
  568. 5680 PRINT"L.R. SCAN FOR QUADRANT";Q1;"-";Q2:PRINT
  569. 5690 I=Q1-1:J=Q1+1:K=Q2-1:L=Q2+1
  570. 5700 FORM=ITOJ:FORN=KTOL
  571. 5710 IF(M<=0)OR(M>8)THEN5770
  572. 5720 IF(N<=0)OR(N>8)THEN5770
  573. 5730 IFD4(11)=0THENS2(M,N)=1
  574. 5740 IFG(M,N)>=LQTHEN PRINT"  ***";" ";
  575. 5750 IFG(M,N)<LQTHENPRINTSPC(5-LEN(STR$(G(M,N))));G(M,N);
  576. 5760 GOTO5780
  577. 5770 PRINTN$;" ";
  578. 5780 NEXTN:PRINT
  579. 5790 PRINT
  580. 5800 NEXTM
  581. 5810 IFD4(11)=0THENRETURN
  582. 5820 PRINT"*** WARNING *** - COMPUTER DISABLED - SCAN NO`RECORDED."
  583. 5830 RETURN
  584. 5840 PRINT"LONG RANGE SENSORS DAMAGED.":RETURN
  585. 5850 A5=(15-D2)*.523599:D4=-SIN(A5):D6=COS(A5):B8=ABS(D4)
  586. 5860 IFABS(D6)>B8THENB8=ABS(D6)
  587. 5870 D4=D4/B8:D6=D6/B8:T5=0:T6=0
  588. 5880 IFD0+T1<F1(2)THEN5910
  589. 5890 T5=1:C5$="RED":D1=D1*(F1(2)-D0)/T1+.1
  590. 5900 T1=F1(2)-D0+1E-05
  591. 5910 Q$(S6,S7)=".":X7=S6:Y7=S7:H9=INT(10*D1*B8+.5)
  592. 5920 IFH9=0THEN6020
  593. 5930 FORL=1TOH9
  594. 5940 X7=X7+D4:X1=INT(X7+.5):Y7=Y7+D6:Y1=INT(Y7+.5)
  595. 5950 IF(X1<1)OR(X1>10)THEN6190
  596. 5960 IF(Y1<1)OR(Y1>10)THEN6190
  597. 5970 IFQ$(X1,Y1)="O"THEN6000
  598. 5980 IFQ$(X1,Y1)<>"."THEN6070
  599. 5990 NEXTL
  600. 6000 D1=.1*SQR((S6-X1)^2+(S7-Y1)^2)
  601. 6010 S6=X1:S7=Y1
  602. 6020 F4=S6:F5=S7
  603. 6030 IFQ$(X1,Y1)<>"O"THEN6520
  604. 6040 T2=FNA(1):T3=FNA(1)
  605. 6050 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):PRINT
  606. 6060 PRINT"*** SPACE PORTAL ENTERED ***":GOTO6490
  607. 6070 T6=1:K=50*D1/T1+1E-03:D1=.1*SQR((S6-X1)^2+(S7-Y1)^2)
  608. 6080 IF(Q$(X1,Y1)="K")OR(Q$(X1,Y1)="C")THEN6180
  609. 6090 PRINT:PRINTS5$;" BLOCKED BY ";
  610. 6100 IFQ$(X1,Y1)="*"THENPRINT"STAR AT";
  611. 6110 IFQ$(X1,Y1)="B"THENPRINT"STARBASE AT";
  612. 6120 PRINT" SECTOR";X1;"-";Y1;"...."
  613. 6130 PRINT"EMERGENCY STOP REQUIRED";FNR(K);"UNITS OF ENERGY."
  614. 6140 E1=E1-K
  615. 6150 S6=INT(X7-D4+.5):F4=S6:S7=INT(Y7-D6+.5):F5=S7
  616. 6160 IFE1>0THEN6520
  617. 6170 F9=4:GOSUB4710:RETURN
  618. 6180 S6=X1:S7=Y1:GOSUB9600:F4=S6:F5=S7:GOTO6520
  619. 6190 IFK3=0THEN6250
  620. 6200 FORL=1TOK3
  621. 6210 F3=SQR((X1-K4(L))^2+(Y1-K5(L))^2)
  622. 6220 K8(L)=.5*(F3+K7(L)):NEXTL
  623. 6230 IFG(Q1,Q2)<>LQTHENGOSUB790
  624. 6240 IFA2<>0THENRETURN
  625. 6250 X7=10*(Q1-1)+S6:Y7=10*(Q2-1)+S7
  626. 6260 X1=INT(X7+10*D1*B8*D4+.5)
  627. 6270 Y1=INT(Y7+10*D1*B8*D6+.5):L6=0
  628. 6280 L5=0
  629. 6290 IFX1>0THEN6310
  630. 6300 X1=-X1+1:L5=1
  631. 6310 IFY1>0THEN6330
  632. 6320 Y1=-Y1+1:L5=1
  633. 6330 IFX1<=80THEN6350
  634. 6340 X1=161-X1:L5=1
  635. 6350 IFY1<=80THEN6370
  636. 6360 Y1=161-Y1:L5=1
  637. 6370 IFL5=0THEN6390
  638. 6380 L6=1:GOTO6280
  639. 6390 IFL6=0THEN6460
  640. 6400 PRINT:PRINT"*** MESSAGE FROM STARFLEET COMMAND.....STARDATE";FNR(DO)
  641. 6410 PRINT"PERMISSION TO EXIT GALAXY - DENIED -"
  642. 6420 PRINT"'ENGINES SHUT DOWN AT ";
  643. 6430 Z1=INT((X1+9)/10):Z2=INT((Y1+9)/10)
  644. 6440 PRINT"QUADRANT";Z1;"-";Z2;",  ";
  645. 6450 PRINT"SECTOR";X1-10*(Z1-1);"-";Y1-10*(Z2-1);"'"
  646. 6460 IFT5<>0THENRETURN
  647. 6470 Q1=INT((X1+9)/10):Q2=INT((Y1+9)/10)
  648. 6480 S6=X1-10*(Q1-1):S7=Y1-10*(Q2-1)
  649. 6490 GOSUB7550:PRINT:GOTO6510
  650. 6500 PRINTCHR$(26):PRINT"ENTERING THE ";G2$;" QUADRANT  (";Q1;"-";Q2;")"
  651. 6510 Q$(S6,S7)=LEFT$(S5$,1):GOSUB7260:GOSUB11090:GOSUB5650:RETURN
  652. 6520 Q$(S6,S7)=LEFT$(S5$,1)
  653. 6530 IFL6=1THENRETURN
  654. 6540 IFK3=0THEN6610
  655. 6550 FORL=1TOK3
  656. 6560 F3=SQR((F4-K4(L))^2+(F5-K5(L))^2)
  657. 6570 K8(L)=.5*(K7(L)+F3)
  658. 6580 K7(L)=F3
  659. 6590 NEXTL
  660. 6600 GOSUB10980
  661. 6610 GOSUB7230:RETURN
  662. 6620 A=1:B=1
  663. 6630 FORK=1TOK3
  664. 6640 C=K4(K):D=K5(K)
  665. 6650 IFQ$(C,D)="C"THEN6670
  666. 6660 NEXTK
  667. 6670 N=0:F=K6(K)+100*K3
  668. 6680 IFF>LQTHENN=INT(RND(1)*K7(K)+1)
  669. 6690 IF((C5$="DOCKED")AND((B4<>Q1)OR(B5<>Q2)))THENN=-S8
  670. 6700 IFN=0THENN=INT(((F+200*RND(1))/150)-5)
  671. 6710 IFN=0THENRETURN
  672. 6720 IF(N>0)AND(K7(K)<1.5)THENRETURN
  673. 6730 IFABS(N)>S8THENN=SGN(N)*ABS(S8)
  674. 6740 T=ABS(N):P=S6-C:Q=S7-D
  675. 6750 IF2*ABS(P)<ABS(Q)THENP=0
  676. 6760 IF2*ABS(Q)<ABS(P)THENQ=0
  677. 6770 IFP<>0THENP=SGN(P*N)
  678. 6780 IFQ<>0THENQ=SGN(Q*N)
  679. 6790 R=C:S=D:Q$(C,D)="."
  680. 6800 FORL2=1TOT:L=R+P:M=S+Q
  681. 6810 IF(L>0)AND(L<=10)THEN6830
  682. 6820 ONSGN(N)+2GOTO7060,6920,6920
  683. 6830 IF(M>0)AND(M<=10)THEN6850
  684. 6840 ONSGN(N)+2GOTO7060,6860,6860
  685. 6850 IFQ$(L,M)="."THEN6980
  686. 6860 IF(Q=B)OR(P=0)THEN6920
  687. 6870 M=S+B
  688. 6880 IF(M>0)AND(M<=10)THEN6900
  689. 6890 ONSGN(N)+2GOTO7060,6910,6910
  690. 6900 IFQ$(L,M)="."THEN6980
  691. 6910 B=-B
  692. 6920 IF(P=A)OR(Q=0)THEN6990
  693. 6930 L=R+A
  694. 6940 IF(L>0)AND(L<=10)THEN6960
  695. 6950 ONSGN(N)+2GOTO7060,6970,6970
  696. 6960 IFQ$(L,M)="."THEN6980
  697. 6970 A=-A:GOTO6990
  698. 6980 R=L:S=M
  699. 6990 NEXTL2
  700. 7000 Q$(R,S)="C"
  701. 7010 IF(R=C)AND(S=D)THENRETURN
  702. 7020 K4(K)=R:K5(K)=S:K7(K)=SQR((S6-R)^2+(S7-S)^2)
  703. 7030 K8(K)=K7(K):IFN>0THENPRINT"*** COMMANDER ADVANCES TO";
  704. 7040 IFN<0THENPRINT"*** COMMANDER RETREATS TO";
  705. 7050 PRINT" SECTOR";R;"-";S:GOSUB10980:RETURN
  706. 7060 I=Q1+INT((L+9)/10)-1:J=Q2+INT((M+9)/10)-1
  707. 7070 IF(I<1)OR(I>8)THEN7220
  708. 7080 IF(J<1)OR(J>8)THEN7220
  709. 7090 FORL3=1TOR2
  710. 7100 IF(C1(L3)=I)AND(C2(L3)=J)THEN7220
  711. 7110 NEXTL3:PRINT"*** COMMANDER ESCAPES TO ";
  712. 7120 PRINT"QUADRANT";I;"-";J;"  (AND REGAINS STRENGTH)"
  713. 7130 K4(K)=K4(K3):K5(K)=K5(K3):K7(K)=K7(K3):K8(K)=K8(K3)
  714. 7140 K6(K)=K6(K3):K3=K3-1:C3=0
  715. 7150 IFC5$<>"DOCKED"THENGOSUB7230
  716. 7160 GOSUB10980
  717. 7170 G(Q1,Q2)=G(Q1,Q2)-100:G(I,J)=G(I,J)+100
  718. 7180 FORL3=1TOR2
  719. 7190 IF(C1(L3)=Q1)AND(C2(L3)=Q2)THEN7210
  720. 7200 NEXTL3
  721. 7210 C1(L3)=I:C2(L3)=J:RETURN
  722. 7220 A=-A:B=-B:GOTO6990
  723. 7230 C5$="GREEN":IFE1<LQTHENC5$="YELLOW"
  724. 7240 IFG(Q1,Q2)>99THENC5$="RED"
  725. 7250 RETURN
  726. 7260 J4=1:B6=0:B7=0:K3=0:C3=0:U=G(Q1,Q2):IFU>999THEN7530
  727. 7270 K3=INT(.01*U):FORA=1TO10:FORB=1TO10:Q$(A,B)=".":NEXTB:NEXTA
  728. 7280 Q$(S6,S7)=LEFT$(S5$,1):U=G(Q1,Q2):IFU<100THEN7400
  729. 7290 U=U-100*K3:FORA=1TOK3
  730. 7300 S=FNB(1):K4(A)=S:T=FNB(1):K5(A)=T
  731. 7310 IFQ$(S,T)<>"."THEN7300
  732. 7320 Q$(S,T)="K":K7(A)=SQR((S6-S)^2+(S7-T)^2):K8(A)=K7(A)
  733. 7330 K6(A)=RND(1)*150+325:NEXTA
  734. 7340 IFR2=0THEN7390
  735. 7350 FORA=1TOR2
  736. 7360 IF(C1(A)=Q1)AND(C2(A)=Q2)THEN7380
  737. 7370 NEXTA:GOTO7390
  738. 7380 Q$(S,T)="C":K6(K3)=LQ+400*RND(1):C3=1
  739. 7390 GOSUB10980
  740. 7400 IFU<10THEN7440
  741. 7410 U=U-10
  742. 7420 B6=FNB(1):B7=FNB(1):IFQ$(B6,B7)<>"."THEN7420
  743. 7430 Q$(B6,B7)="B"
  744. 7440 GOSUB7230:IFU<1THENRETURN
  745. 7450 FORA=1TOU
  746. 7460 S=FNB(1):T=FNB(1):IFQ$(S,T)<>"."THEN7460
  747. 7470 Q$(S,T)="*":NEXTA
  748. 7480 IF(T2<>Q1)OR(T3<>Q2)THENRETURN
  749. 7490 S=FNB(1):T=FNB(1):IFQ$(S,T)<>"."THEN7490
  750. 7500 Q$(S,T)="O":PRINT
  751. 7510 PRINT"*** SHORT-RANGE SENSORS DETECT A SPACE-WARP IN THIS QUADRANT"
  752. 7520 RETURN
  753. 7530 FORA=1TO10:FORB=1TO10:Q$(A,B)=".":NEXTB:NEXTA
  754. 7540 Q$(S6,S7)=LEFT$(S5$,1):RETURN
  755. 7550 G4$="III":L=2:IFQ2>=5THEN7570
  756. 7560 L=1
  757. 7570 G2$=G1$(2*(Q1-1)+L):L=Q2
  758. 7580 IFL<=4THEN7600
  759. 7590 L=Q2-4
  760. 7600 G3$="IV":IFL=4THEN7620
  761. 7610 G3$=LEFT$(G4$,L)
  762. 7620 G2$=G2$+" "+G3$:RETURN
  763. 7630 IFRND(1)>.1THEN7650
  764. 7640 GOSUB10520:RETURN
  765. 7650 Q$(A5,A6)=".":PRINT"*** STAR AT SECTOR";A5;"-";A6;"NOVAS."
  766. 7660 G(Q1,Q2)=G(Q1,Q2)-1:S1=S1+1
  767. 7670 B9=1:T6=1:T7=1:K=0:X1=0:Y1=0
  768. 7680 H4(B9,1)=A5:H4(B9,2)=A6
  769. 7690 FORM=B9TOT6:FORQ=1TO3:FORJ=1TO3
  770. 7700 IFJ*Q=4THEN8140
  771. 7710 J5=H4(M,1)+Q-2:J6=H4(M,2)+J-2
  772. 7720 IF(J5<1)OR(J5>10)THEN8140
  773. 7730 IF(J6<1)OR(J6>10)THEN8140
  774. 7740 IFQ$(J5,J6)="."THEN8140
  775. 7750 IFQ$(J5,J6)="O"THEN8140
  776. 7760 IFQ$(J5,J6)<>"*"THEN7820
  777. 7770 IFRND(1)>=.1THEN7790
  778. 7780 X2=J5:Y2=J6:GOSUB10520:RETURN
  779. 7790 T7=T7+1:H4(T7,1)=J5:H4(T7,2)=J6:G(Q1,Q2)=G(Q1,Q2)-1
  780. 7800 S1=S1+1:PRINT"*** STAR AT SECTOR";J5;"-";J6;"NOVAS."
  781. 7810 GOTO8130
  782. 7820 IFQ$(J5,J6)<>"B"THEN7890
  783. 7830 G(Q1,Q2)=G(Q1,Q2)-10:FORV=1TOR3
  784. 7840 IF(B2(V)<>Q1)OR(B3(V)<>Q2)THEN7860
  785. 7850 B2(V)=B2(R3):B3(V)=B3(R3)
  786. 7860 NEXTV:R3=R3-1:B6=0:B7=0:B1=B1+1:GOSUB7230
  787. 7870 PRINT"*** STARBASE AT SECTOR";J5;"-";J6;"DESTROYED."
  788. 7880 GOTO8130
  789. 7890 IF(S6<>J5)OR(S7<>J6)THEN7990
  790. 7900 PRINT"*** STARSHIP BUFFETED BY NOVA.":IFS4<>0THEN7920
  791. 7910 E1=E1-LQ:GOTO7950
  792. 7920 IFS3>=LQTHEN7970
  793. 7930 D6=LQ-S3:E1=E1-D6:GOSUB7230:S3=0:S4=0
  794. 7940 PRINT"*** STARSHIP SHIELDS KNOCKED OUT.":D4(8)=5E-03*D5*RND(1))*D6
  795. 7950 IFE1>0THEN7980
  796. 7960 F9=7:GOSUB4710:RETURN
  797. 7970 S3=S3-LQ
  798. 7980 X1=X1+S6-H4(M,1):Y1=Y1+S7-H4(M,2):K=K+1:GOTO8140
  799. 7990 IFQ$(J5,J6)<>"C"THEN8120
  800. 8000 FORV=1TOK3
  801. 8010 IF(K4(V)=J5)AND(K5(V)=J6)THEN8030
  802. 8020 NEXTV
  803. 8030 K6(V)=K6(V)-800:IFK6(V)<=0THEN8120
  804. 8040 N5=J5+J5-H4(M,1):N6=J6+J6-H4(M,2)
  805. 8050 PRINT"*** COMMANDER AT SECTOR";J5;"-";J6;"DAMAGED";
  806. 8060 IF(N5<1)OR(N5>10)OR(N6<1)OR(N6>10)THEN8110
  807. 8070 PRINT" AND BUFFETED TO SECTOR";N5;"-";N6
  808. 8080 Q$(N5,N6)="C":K4(V)=N5:K5(V)=N6
  809. 8090 K7(V)=SQR((S6-N5)^2+(S7-N6)^2):K8(V)=K7(V)
  810. 8100 Q$(J5,J6)="."
  811. 8110 PRINT:GOTO8140
  812. 8120 A5=J5:A6=J6:T2$=Q$(J5,J6):GOSUB3160:GOTO8140
  813. 8130 PRINT:Q$(J5,J6)="."
  814. 8140 NEXTJ:NEXTQ:NEXTM
  815. 8150 IFT6=T7THEN8170
  816. 8160 B9=T6+1:T6=T7:GOTO7690
  817. 8170 IFK=0THENRETURN
  818. 8180 D1=K*.1
  819. 8190 IFX1<>0THENX1=SGN(X1)
  820. 8200 IFY1<>0THENY1=SGN(Y1)
  821. 8210 I=3*(X1+1)+Y1+2
  822. 8220 D2=C5(I)
  823. 8230 IFD2=0THEND1=0
  824. 8240 IFD1=0THENRETURN
  825. 8250 PRINT:PRINT"FORCE OF NOVA DISPLACES STARSHIP."
  826. 8260 GOSUB5850:RETURN
  827. 8270 P=2:J3=1
  828. 8280 IFC5$<>"DOCKED"THEN8300
  829. 8290 PRINT"PHASERS CAN'T BE FIRED THRU BASE SHIELDS.":GOTO8370
  830. 8300 IFD4(3)=0THEN8320
  831. 8310 PRINT"PHASER BANKS DAMAGED.":GOTO8370
  832. 8320 IFS4=0THEN8340
  833. 8330 PRINT"SHIELDS MUST BE DOWN TO FIRE PHASERS.":GOTO8370
  834. 8340 IFK3>0THEN8380
  835. 8350 PRINT
  836. 8360 PRINT"THE SHORT-RANGE SENSORS DETECT NO ENEMY IN THIS QUADRANT."
  837. 8370 J3=0:RETURN
  838. 8380 PRINT"PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE=";
  839. 8390 PRINT.01*INT(100*E1)
  840. 8400 INPUT"UNITS TO FIRE";P1:IFP1<E1THEN8420
  841. 8410 PRINT"ENERGY AVAILABLE =";:GOTO8390
  842. 8420 IFP1>0THEN8440
  843. 8430 J3=0:RETURN
  844. 8440 E1=E1-P1
  845. 8450 IFD4(11)=0THEN8480
  846. 8460 P1=P1*(RND(1)*.5+.5)
  847. 8470 PRINT:PRINT"COMPUTER MALFUNCTION HAMPERS PHASER ACCURACY.":PRINT
  848. 8480 E=P1:IFK3=0THEN8650
  849. 8490 E=0:T5=(K3*(K3+1))/2
  850. 8500 FORI=1TOK3:H3(I)=((K3+1-I)/T5)*P1
  851. 8510 H5(I)=ABS(K6(I))/(P*.9^K7(I))
  852. 8520 IFH3(I)<=H5(I)THEN8540
  853. 8530 E=E+(H3(I)-H5(I)):H3(I)=H5(I)
  854. 8540 NEXTI
  855. 8550 IFE=0THEN8620
  856. 8560 FORI=1TOK3:R7=H5(I)-H3(I)
  857. 8570 IFR7<=0THEN8600
  858. 8580 IFR7>=ETHEN8610
  859. 8590 H3(I)=H5(I):E=E-R7
  860. 8600 NEXTI:GOTO8620
  861. 8610 H3(I)=H3(I)+E:E=0
  862. 8620 GOSUB5080
  863. 8630 IF(E<>0)AND(A2=0)THEN8650
  864. 8640 J3=1:RETURN
  865. 8650 PRINTFNR(E);"EXPENDED ON EMPTY SPACE.":J3=1:RETURN
  866. 8660 J3=1:IFD4(4)=0THEN8680
  867. 8670 PRINT"PHOTON TUBES DAMAGED.":GOTO8720
  868. 8680 IFT4<>0THEN8700
  869. 8690 PRINT"NO TORPEDOS LEFT.":GOTO8720
  870. 8700 INPUT"TORPEDO COURSE";C6
  871. 8710 IFC6<.01ORC6>12THENGOSUB12780ELSE8730
  872. 8720 J3=0:RETURN
  873. 8730 INPUT"BURST OF 3";B$:N=1
  874. 8740 IFLEFT$(B$,1)="N"THEN8830
  875. 8750 IFLEFT$(B$,1)<>"Y"THEN8730
  876. 8760 IFT4>2THEN8780
  877. 8770 PRINT"NO BURST.  ONLY";T4;"TORPEDOS LEFT.":GOTO8720
  878. 8780 INPUT"SPREAD ANGLE (3 - 30 DEG)";G2
  879. 8790 IFG2<0THEN8720
  880. 8800 IF(G2<3)OR(G2>30)THEN8780
  881. 8810 G2=FND(G2)
  882. 8820 N=3
  883. 8830 FORZ6=1TON
  884. 8840 IFC5$<>"DOCKED"THENT4=T4-1
  885. 8850 Z7=Z6:R=RND(1)
  886. 8860 R=(R+RND(1))*.5-.5
  887. 8870 IF(R>=-.4)AND(R<=.4)THEN8940
  888. 8880 R=(RND(1)+1.2)*R:IFN=3THEN8900
  889. 8890 PRINT"*** TORPEDO MISFIRES...":GOTO8910
  890. 8900 PRINT"*** TORPEDO NUMBER";Z6;"MISFIRES..."
  891. 8910 IF RND(1)>.2THEN8940
  892. 8920 PRINT"*** PHOTON TUBES DAMAGED BY MISFIRE."
  893. 8930 D4(4)=D5*(1+2*RND(1)):GOTO9580
  894. 8940 IF(S4<>0)OR(C5$="DOCKED")THENR=R+1E-03*S3*R
  895. 8950 A3=C6+.25*R:IFN=1THEN8980
  896. 8960 A8=(15-A3+(2-Z6)*G2)*.523599:PRINT
  897. 8970 PRINT"TRACK FOR TORPEDO NUMBER";Z7;"--":GOTO8990
  898. 8980 PRINT:PRINT"TORPEDO TRACK --":A8=(15-A3)*.523599
  899. 8990 X4=-SIN(A8):Y4=COS(A8):B8=ABS(X4)
  900. 9000 IFABS(Y4)>ABS(X4)THENB8=ABS(Y4)
  901. 9010 X4=X4/B8:Y4=Y4/B8:X5=S6:Y5=S7
  902. 9020 FORL9=1TO15:X5=X5+X4:A5=INT(X5+.5)
  903. 9030 IF(A5<1)OR(A5>10)THEN9560
  904. 9040 Y5=Y5+Y4:A6=INT(Y5+.5)
  905. 9050 IF(A6<1)OR(A6>10)THEN9560
  906. 9060 IF(L9=5)OR(L9=9)THENPRINT
  907. 9070 PRINTFNR(X5);"-";FNR(Y5);", ";
  908. 9080 IFQ$(A5,A6)<>"."THEN9100
  909. 9090 GOTO9550
  910. 9100 PRINT:IFQ$(A5,A6)="K"THEN9150
  911. 9110 IFQ$(A5,A6)<>"C"THEN9370
  912. 9120 IFRND(1)>.1THEN9150
  913. 9130 PRINT"*** COMMANDER AT SECTOR";A5;"-";A6;"USES ANTI-PHOTON DEVICE !"
  914. 9140 PRINT"-- TORPEDO NEUTRALIZED.":GOTO9570
  915. 9150 FORV=1TOK3
  916. 9160 IF(A5=K4(V))AND(A6=K5(V))THEN9180
  917. 9170 NEXTV
  918. 9180 K=K6(V):W3=200+800*RND(1)
  919. 9190 IFABS(K)<W3THENW3=ABS(K)
  920. 9200 K6(V)=K-SGN(K)*ABS(W3):IFK6(V)<>0THEN9220
  921. 9210 T2$=Q$(A5,A6):GOSUB3160:GOTO9570
  922. 9220 IFQ$(A5,A6)="K"THENPRINT"*** KLINGON AT";
  923. 9230 IFQ$(A5,A6)="C"THENPRINT"*** COMMANDER AT";
  924. 9240 PRINTA5;"-";A6;
  925. 9250 A7=A8+2.5*(RND(1)-.5)
  926. 9260 W3=ABS(-SIN(A7)):IFABS(COS(A7))>W3THENW3=ABS(COS(A7))
  927. 9270 X7=-SIN(A7)/W3:Y7=COS(A7)/W3
  928. 9280 P=INT(A5+X7+.5):Q=INT(A6+Y7+.5)
  929. 9290 IF(P<1)OR(P>10)OR(Q<1)OR(Q>10)THEN9360
  930. 9300 IFQ$(P,Q)<>"."THEN9360
  931. 9310 Q$(P,Q)=Q$(A5,A6):Q$(A5,A6)=".":PRINT"DAMAGED--"
  932. 9320 PRINT"   DISPLACED BY BLAST TO SECTOR";P;"-";Q
  933. 9330 K4(V)=P:K5(V)=Q:K7(V)=SQR((S6-P)^2+(S7-Q)^2)
  934. 9340 K8(V)=K7(V)
  935. 9350 GOSUB10980:GOTO9570
  936. 9360 PRINT"DAMAGED, BUT NOT DESTROYED.":GOTO9570
  937. 9370 IFQ$(A5,A6)<>"B"THEN9450
  938. 9380 PRINT"*** STARBASE DESTROYED...!!!"
  939. 9390 IFS2(Q1,Q2)<0THENS2(Q1,Q2)=0
  940. 9400 FORW=1TOR3
  941. 9410 IF(B2(W)<>Q1)OR(B3(W)<>Q2)THEN9430
  942. 9420 B2(W)=B2(R3):B3(W)=B3(R3)
  943. 9430 NEXTW:Q$(A5,A6)=".":R3=R3-1:B6=0:B7=0
  944. 9440 G(Q1,Q2)=G(Q1,Q2)-10:B1=B1+1:GOSUB7230:GOTO9570
  945. 9450 IFQ$(A5,A6)<>"*"THEN9530
  946. 9460 IFRND(1)>.15THEN9490
  947. 9470 PRINT"*** STAR AT SECTOR";A5;"-";A6;"UNAFFECTED BY PHOTON BLAST"
  948. 9480 GOTO9570
  949. 9490 X2=A5:Y2=A6:GOSUB7630:A5=X2:A6=Y2
  950. 9500 IFG(Q1,Q2)=LQTHENRETURN
  951. 9510 IFA2<>0THENRETURN
  952. 9520 GOTO9570
  953. 9530 PRINT:PRINT"  >>> ORGANIAN TRUCE-MONITOR DESTROYED <<<":Q$(A5,A6)=".":PRINT
  954. 9540 T2=0:T3=0:GOTO9570
  955. 9550 NEXTL9
  956. 9560 PRINT:PRINT"TORPEDO MISSED!"
  957. 9570 NEXTZ6
  958. 9580 IFR1<>0THENRETURN
  959. 9590 F9=1:GOSUB4710:RETURN
  960. 9600 PRINT:PRINT"*** RED ALERT!!   RED ALERT!! ***":PRINT
  961. 9610 PRINT"*** COLLISION IMMINENT!!":PRINT
  962. 9620 PRINT"*** ";S5$;" RAMS ";:W7=1:IFQ$(S6,S7)="C"THENW7=2
  963. 9630 IFW7=1THENPRINT"KLINGON AT ";
  964. 9640 IFW7=2THENPRINT"COMMANDER AT ";
  965. 9650 PRINT"SECTOR";S6;"-";S7:A5=S6:A6=S7:T2$=Q$(S6,S7)
  966. 9660 GOSUB3160:PRINT"*** ";S5$;" HEAVILY DAMAGED."
  967. 9670 K=INT(5+RND(1)*20):PRINT"***SICKBAY REPORTS";K;"CASUALTIES!"
  968. 9680 C4=C4+K:FORL=1TO12:I=RND(1)
  969. 9690 J=(3.5*W7*(RND(1)+I)+1)*D5
  970. 9700 IFL=6THENJ=J/3
  971. 9710 D4(L)=D4(L)+T1+J:NEXTL:D4(6)=D4(6)-3
  972. 9720 IFD4(6)<0THEND4(6)=0
  973. 9730 S4=0:IFR1<>0THENRETURN
  974. 9740 F9=1:GOSUB4710:RETURN
  975. 9750 RETURN
  976. 9760 A2=0:G1=0:GOSUB2200:S5$="ENTERPRISE"
  977. 9770 I7=5000:E1=I7:I8=2500:S3=I8:S4=0:S9=S4:J1=4:L1=J1
  978. 9780 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):I9=10:T4=I9
  979. 9790 W1=5:W2=25:FORI=1TO12:D4(I)=0:NEXT
  980. 9800 J2=100*INT(31*RND(1)+20):D0=J2:K1=0:K2=0:N1=0:N2=0:R6=0:C4=0
  981. 9810 A1=1:D3=.25:FORI=1TO8:FORJ=1TO8:S2(I,J)=0:NEXTJ:NEXTI
  982. 9820 F1(1)=D0-.5*I5*LOG(RND(1)):F1(5)=1E+30
  983. 9830 F1(2)=D0-1.5*(I5/R2)*LOG(RND(1)):I6=0
  984. 9840 F1(3)=D0-.3*I5*LOG(RND(1)):F1(4)=D0-.3*I5*LOG(RND(1))
  985. 9850 FORI=1TO8:FORJ=1TO8:K=INT(RND(1)*9+1):I6=I6+K
  986. 9860 G(I,J)=K:NEXTJ:NEXTI:S1=0
  987. 9870 FOR I=1TOI2
  988. 9880 X=INT(RND(1)*6+2):Y=INT(RND(1)*6+2)
  989. 9890 IFG(X,Y)>=10THEN9880
  990. 9900 IFI<2THEN9940
  991. 9910 K=I-1:FORJ=1TOK:D1=SQR((B2(J)-X)^2+(B3(J)-Y)^2)
  992. 9920 IFD1<2THEN9880
  993. 9930 NEXTJ
  994. 9940 B2(I)=X:B3(I)=Y:S2(X,Y)=-1:G(X,Y)=G(X,Y)+10:NEXTI
  995. 9950 B1=0:K=I1-I4:L=INT(.25*S8*(9-L2)+1)
  996. 9960 M=INT((1-RND(1)^2)*L):IFM>KTHENM=K
  997. 9970 N=100*M
  998. 9980 X=FNA(1):Y=FNA(1):IFG(X,Y)+N>999THEN9980
  999. 9990 G(X,Y)=G(X,Y)+N:K=K-M:IFK<>0THEN9960
  1000. 10000 FORI=1TOI4
  1001. 10010 X=FNA(1):Y=FNA(1):IF(G(X,Y)<99)AND(RND(1)<.75)THEN10010
  1002. 10020 IFG(X,Y)>899THEN10010
  1003. 10030 IFI=1THEN10060
  1004. 10040 M=I-1:FORJ=1TOM:IF(C1(J)=X)AND(C2(J)=Y)THEN10010
  1005. 10050 NEXTJ
  1006. 10060 G(X,Y)=G(X,Y)+100:C1(I)=X:C2(I)=Y:NEXTI
  1007. 10070 I=INT(D0):PRINT:S0=0
  1008. 10080 T2=FNA(1):T3=FNA(1):IFG(T2,T3)<100THEN10080
  1009. 10090 PRINT"STARDATE..............";I
  1010. 10100 PRINT"NUMBER OF KLINGONS....";I1
  1011. 10110 PRINT"NUMBER OF STARDATES...";INT(I5)
  1012. 10120 PRINT"NUMBER OF STARBASES...";I2
  1013. 10130 PRINT"STARBASE LOCATIONS....";
  1014. 10140 FORI=1TOI2:PRINTB2(I);"-";B3(I);
  1015. 10150 IFI<>I2THENPRINT", ";
  1016. 10160 NEXTI:PRINT:PRINT
  1017. 10170 GOSUB7550
  1018. 10180 PRINT"THE ";S5$;" IS CURRENTLY IN THE ";G2$;" QUADRANT."
  1019. 10190 GOSUB7260
  1020. 10200 PRINT:INPUT"READY TO CONTINUE";NL$:PRINTCHR$(26):GOSUB11090:GOSUB5650:RETURN
  1021. 10210 INPUT"WARP FACTOR";K
  1022. 10220 PRINT
  1023. 10230 IFK<1THEN10340
  1024. 10240 IFK>10THEN10350
  1025. 10250 J=W1:W1=K:W2=W1*W1
  1026. 10260 IF(W1<=J)OR(W1<=6)THEN10290
  1027. 10270 IFW1<=8THEN10300
  1028. 10280 IFW1>8THEN10310
  1029. 10290 PRINT"'WARP FACTOR";W1;"CAPTAIN'":RETURN
  1030. 10300 PRINT"*** OUR MAXIMUM SAFE SPEED IS WARP 6":RETURN";
  1031. 10310 IFW1=10THEN10330
  1032. 10320 PRINT"*** CAPTAIN, OUR ENGINES MAY NOT TAKE IT !":RETURN
  1033. 10330 PRINT"-'AYE, CAPTAIN, WE'LL GIVE IT A TRY.'":RETURN
  1034. 10340 PRINT"-'WE CAN'T GO BELOW WARP 1, CAPTAIN.'":RETURN
  1035. 10350 PRINT"-'OUR TOP SPEED IS WARP 10, CAPTAIN.'"
  1036. 10360 RETURN
  1037. 10370 J3=0:IFD4(8)<>0THEN10490
  1038. 10380 IFS4<>0THEN10420
  1039. 10390 INPUT"SHIELDS ARE DOWN.  DO YOU WANT THEM UP";B$
  1040. 10400 IFLEFT$(B$,1)="Y"THEN10450
  1041. 10410 RETURN
  1042. 10420 INPUT"SHIELDS ARE UP.  DO YOU WANT THEM DOWN";B$
  1043. 10430 IFLEFT$(B$,1)="Y"THEN10480
  1044. 10440 RETURN
  1045. 10450 S4=1:S9=1:IFC5$<>"DOCKED"THENE1=E1-50
  1046. 10460 PRINT"SHIELDS RAISED.":IFE1<=0THEN10500
  1047. 10470 J3=1:RETURN
  1048. 10480 S4=0:S9=1:PRINT"SHIELDS LOWERED.":J3=1:RETURN
  1049. 10490 PRINT"SHIELDS DAMAGED AND DOWN. ":RETURN
  1050. 10500 PRINT:PRINT"SHIELDS CONSUME ALL ENERGY."
  1051. 10510 F9=4:GOSUB4710:RETURN
  1052. 10520 IFX2<>0THEN10620
  1053. 10530 N=INT(RND(1)*I6+1):FORX=1TO8:FORY=1TO8
  1054. 10540 N=N-(G(X,Y)-INT(G(X,Y)/10)*10):IFN<=0THEN10560
  1055. 10550 NEXTY:NEXTX:RETURN
  1056. 10560 IF(X<>Q1)OR(Y<>Q2)THEN10680
  1057. 10570 IFJ4<>0THEN10680
  1058. 10580 N=INT(RND(1)*(G(X,Y)-INT(G(X,Y)/10)*10))+1
  1059. 10590 FORX3=1TO10:FORY3=1TO10:IFQ$(X3,Y3)<>"*"THEN10610
  1060. 10600 N=N-1:IFN=0THEN10620
  1061. 10610 NEXTY3:NEXTX3
  1062. 10620 PRINT:PRINT"*** RED ALERT!!  RED ALERT!! ***
  1063. 10630 X3=X2:Y3=Y2
  1064. 10640 PRINT"*** INCIPIENT SUPERNOVA DETECTED AT SECTOR";X3;"-";Y3
  1065. 10650 X=Q1:Y=Q2:K=(X2-S6)^2+(Y2-S7)^2
  1066. 10660 IFK>1.5THEN10720
  1067. 10670 PRINT"*** EMERGENCY AUTO-OVERRIDE JAMMED ***":A2=1:GOTO10720
  1068. 10680 IFD4(9)<>0THEN10720
  1069. 10690 PRINT:PRINT"MESSAGE FROM STARFLEET COMMAND...STARDATE";INT(D0)
  1070. 10700 PRINT"'SUPERNOVA IN QUADRANT";X;"-";Y;
  1071. 10710 PRINT"....CAUTION ADVISED'"
  1072. 10720 N=G(X,Y):R=INT(N/100):Q=0
  1073. 10730 IF(X<>Q1)OR(Y<>Q2)THEN10750
  1074. 10740 K3=0:C3=0
  1075. 10750 IFR=0THEN10810
  1076. 10760 R1=R1-R:IFR2=0THEN10810
  1077. 10770 FORL=1TOR2:IF(C1(L)<>X)OR(C2(L)<>Y)THEN10800
  1078. 10780 C1(L)=C1(R2):C2(L)=C2(R2):C1(R2)=0:C2(R2)=0
  1079. 10790 R2=R2-1:R=R-1:Q=1:IFR2=0THENF1(2)=1E+30
  1080. 10800 NEXTL
  1081. 10810 IFR3=0THEN10850
  1082. 10820 FORL=1TOR3:IF(B2(L)<>X)OR(B3(L)<>Y)THEN10840
  1083. 10830 B2(L)=B2(R3):B3(L)=B3(R3):B2(R3)=0:B3(R3)=0:R3=R3-1
  1084. 10840 NEXTL
  1085. 10850 IFX2=0THEN10890
  1086. 10860 N=G(X,Y)-INT(G(X,Y)/100)*100
  1087. 10870 S1=S1+(N-INT(N/10)*10):B1=B1+INT(N/10)
  1088. 10880 K1=K1+R:K2=K2+Q
  1089. 10890 IF(S2(X,Y)<>0)AND(D4(9)<>0)THENS2(X,Y)=LQ+G(X,Y)
  1090. 10900 IF(D4(9)=0)OR((Q1=X)AND(Q2=Y))THENS2(X,Y)=1
  1091. 10910 G(X,Y)=1000
  1092. 10920 IF(R1<>0)OR((X=Q1)AND(Y=Q2))THEN10960
  1093. 10930 PRINTCHR$(26):PRINT"*** SUPERNOVA IN QUADRANT";X;"-";Y;"HAS DESTROYED THE"
  1094. 10940 PRINT"REMAINDER OF THE ENEMY FLEET !!"
  1095. 10950 F9=1:GOTO4710
  1096. 10960 IFA2=0THENRETURN
  1097. 10970 F9=8:GOTO4710
  1098. 10980 IFK3<=1THENRETURN
  1099. 10990 Z4=0:FORO=1TOK3-1:IFK7(O)<=K7(O+1)THEN11060
  1100. 11000 K=K7(O):K7(O)=K7(O+1):K7(O+1)=K
  1101. 11010 K=K8(O):K8(O)=K8(O+1):K8(O+1)=K
  1102. 11020 K=K4(O):K4(O)=K4(O+1):K4(O+1)=K
  1103. 11030 K=K5(O):K5(O)=K5(O+1):K5(O+1)=K
  1104. 11040 K=K6(O):K6(O)=K6(O+1):K6(O+1)=K
  1105. 11050 Z4=1
  1106. 11060 NEXTO
  1107. 11070 IFZ4<>0THEN10990
  1108. 11080 RETURN
  1109. 11090 IFD(1)<>0THEN11330
  1110. 11100 PRINT:PRINT"    1 2 3 4 5 6 7 8 9 10"
  1111. 11110 FORI=1TO10:IFI<10THENPRINT" ";
  1112. 11120 PRINTI;:FORJ=1TO10:PRINTQ$(I,J);" ";:NEXTJ
  1113. 11130 ONIGOTO11150,11160,11180,11190,11240
  1114. 11140 ONI-5GOTO11250,11260,11270,11300,11310
  1115. 11150 PRINT" STARDATE      ";FNR(D0):GOTO11320
  1116. 11160 IFC5$<>"DOCKED"THENGOSUB7230
  1117. 11170 PRINT" CONDITION      ";C5$:GOTO11320
  1118. 11180 PRINT" POSITION      ";Q1;"-";Q2;", ";S6;"-";S7:GOTO11320
  1119. 11190 PRINT" LIFE SUPPORT   ";:IFD4(5)<>0THEN11210
  1120. 11200 PRINT"ACTIVE":GOTO11320
  1121. 11210 IFC5$<>"DOCKED"THEN11230
  1122. 11220 PRINT"DAMAGED, SUPPORTED BY STARBASE":GOTO11320
  1123. 11230 PRINT"DAMAGED, RESERVES=";FNS(L1):GOTO11320
  1124. 11240 PRINT" WARP FACTOR   ";FNR(W1):GOTO11320
  1125. 11250 PRINT" ENERGY";SPC(8);.01*INT(100*E1):GOTO11320
  1126. 11260 PRINT" TORPEDOS      ";T4:GOTO11320
  1127. 11270 PRINT" SHIELDS        ";:B$="DOWN,":IFS4<>0THENB$="UP,"
  1128. 11280 IFD4(8)>0THENB$="DAMAGED,"
  1129. 11290 PRINTB$;INT(100*S3/I8+.5);"%":GOTO11320
  1130. 11300 PRINT" KLINGONS LEFT ";R1:GOTO11320
  1131. 11310 PRINT" TIME LEFT     ";FNS(R5)
  1132. 11320 NEXTI:RETURN
  1133. 11330 PRINT"SHORT RANGE SENSORS DAMAGED.":RETURN
  1134. 11340 PRINT:PRINT"*** TIME WARP ENTERED ***":PRINT"YOU ARE TRAVELING ";
  1135. 11350 IFS0<>0THEN11390
  1136. 11360 T1=-.5*I5*LOG(RND(1))
  1137. 11370 PRINT"FORWARD IN TIME";FNR(T1);"STARDATES."
  1138. 11380 F1(2)=F1(2)+T1:GOTO11550
  1139. 11390 M=D0:D0=D9(1)
  1140. 11400 PRINT"BACKWARD IN TIME";FNR(M-D0);"STARDATES.":S0=0
  1141. 11410 R1=D9(2):R2=D9(3):R3=D9(4):R4=D9(5):R5=D9(6)
  1142. 11420 S1=D9(7):B1=D9(8):K1=D9(9):K2=D9(10)
  1143. 11430 FORI=1TO8:FORJ=1TO8:G(I,J)=D9(I-1+8*(J-1)+11):NEXTJ:NEXTI
  1144. 11440 FORI=75TO84:C1(I-74)=D9(I):NEXT
  1145. 11450 FORI=85TO94:C2(I-84)=D9(I):NEXT
  1146. 11460 FORI=95TO99:B2(I-94)=D9(I):NEXT
  1147. 11470 FORI=100TO104:B3(I-99)=D9(I):NEXT:B4=D9(105):B5=D9(106)
  1148. 11480 F1(1)=D0-.5*I5*LOG(RND(1))
  1149. 11490 IFR2<>0THENF1(2)=D0-(I5/R2)*LOG(RND(1))
  1150. 11500 F1(3)=D0-.5*I5*LOG(RND(1))
  1151. 11510 FORI=1TO8:FORJ=1TO8:IF1<S2(I,J)THENS2(I,J)=1
  1152. 11520 NEXTJ:NEXTI
  1153. 11530 PRINT
  1154. 11540 PRINT"SPOCK HAS RECONSTRUCTED A CORRECT STAR CHART FROM MEMORY."
  1155. 11550 GOSUB7260:RETURN
  1156. 11560 J3=0:IFD4(12)<>0THEN11690
  1157. 11570 INPUT"NUMBER OF UNITS TO SHIELDS";Z3
  1158. 11580 IFZ3<0THENRETURN
  1159. 11590 IFE1+S3-Z3>0THEN11620
  1160. 11600 PRINT"SCOTT HERE-  'WE ONLY HAVE";FNR(E1+S3);"UNITS LEFT.'"
  1161. 11610 RETURN
  1162. 11620 E1=E1+S3-Z3:S3=Z3:PRINT"--ENERGY TRANSFER COMPLETE--"
  1163. 11630 PRINT"(SHIP ENERGY=";FNR(E1);"    SHIELD ENERGY=";FNR(S3);")"
  1164. 11640 J3=1
  1165. 11650 T1=.1:P5=(K3+4*C3)/48:IFP5<.1THENP5=.1
  1166. 11660 IFP5>RND(1)THENGOSUB790
  1167. 11670 IFA2<>0THENRETURN
  1168. 11680 GOSUB3640:RETURN
  1169. 11690 PRINT"TRANSFER PANEL DAMAGED.":RETURN
  1170. 11700 J3=0:INPUT"HOW MANY STARDATES";Z5:IF(Z5<R5)AND(K3=0)THEN11720
  1171. 11710 INPUT"ARE YOU SURE";B$:IFLEFT$(B$,1)<>"Y"THENRETURN
  1172. 11720 R6=1
  1173. 11730 IFZ5<=0THENR6=0
  1174. 11740 IFR6=0THENRETURN
  1175. 11750 T1=Z5:Z6=Z5
  1176. 11760 IFK3=0THEN11790
  1177. 11770 T1=1+RND(1):IFZ5<T1THENT1=Z5
  1178. 11780 Z6=T1
  1179. 11790 IFT1<Z5THENGOSUB790
  1180. 11800 IFA2<>0THENRETURN
  1181. 11810 GOSUB3640:J3=1:IFA2<>0THENRETURN
  1182. 11820 Z5=Z5-Z6:GOTO11730
  1183. 11830 J3=0:IFD4(6)<>0THEN12300
  1184. 11840 INPUT"ENTER COURSE...";D2:IFD2<.01ORD2>12THENGOSUB12780
  1185. 11850 INPUT"DISTANCE...";D1
  1186. 11860 P=(D1+.05)*W1*W1*W1*(S4+1):IFP<E1THEN11980
  1187. 11870 J3=0:PRINT:PRINT"ENGINEERING TO BRIDGE--"
  1188. 11880 IF(S4=0)OR(.5*P>E1)THEN11910
  1189. 11890 PRINT"  WE HAVEN'T THE ENERGY TO GO THAT FAR WITH";
  1190. 11900 PRINT" THE SHIELDS UP.":RETURN
  1191. 11910 W=INT((E1/(D1+.05))^.333333):IFW<=0THEN11960
  1192. 11920 PRINT"  WE HAVEN'T THE ENERGY.  BUT WE COULD DO IT AT WARP";W
  1193. 11930 IFS4<>0THEN11950
  1194. 11940 RETURN
  1195. 11950 PRINT"  IF YOU'LL LOWER THE SHIELDS.":RETURN
  1196. 11960 PRINT"  WE CAN'T DO IT, CAPTAIN.  WE HAVEN'T GOT THE ENERGY."
  1197. 11970 RETURN
  1198. 11980 T1=10*D1/W2:IFT1<.8*R5THEN12040
  1199. 11990 PRINT:PRINT"MR. SPOCK - 'CAPTAIN, I COMPUTE THAT SUCH A TRIP"
  1200. 12000 PRINT" WILL REQUIRE APPROXIMATELY";FNR(100*T1/R5);
  1201. 12010 PRINT"PERCENT":PRINT"   OF OUR REMAINING TIME.  ARE YOU SURE ";
  1202. 12020 INPUT "THIS IS WISE";B$:IFLEFT$(B$,1)="Y"THEN12040
  1203. 12030 J3=0:RETURN
  1204. 12040 Q4=0:W=0:IFW1<=6THEN12200
  1205. 12050 P=D1*(6-W1)^2/66.6667:IFP>RND(1)THENQ4=1
  1206. 12060 IFQ4<>0THEND1=RND(1)*D1
  1207. 12070 W=0:IFW1<10THEN12090
  1208. 12080 IF.25*D1>RND(1)THENW=1
  1209. 12090 IF(Q4=0)AND(W=0)THEN12200
  1210. 12100 A=(15-D2)*.5236:X1=-SIN(A):X2=COS(A)
  1211. 12110 B8=ABS(X1):IFABS(X2)>ABS(X1)THENB8=ABS(X2)
  1212. 12120 X1=X1/B8:Y1=Y1/B8:N=INT(10*D1*B8+.5):X=S6:Y=S7
  1213. 12130 IFN=0THEN12200
  1214. 12140 FORL=1TON
  1215. 12150 X=X+X1:Q=INT(X+.5):IF(Q<1)OR(Q>10)THEN12200
  1216. 12160 Y=Y+Y1:R=INT(Y+.5):IF(R<1)OR(R>10)THEN12200
  1217. 12170 IFQ$(Q,R)="."THEN12190
  1218. 12180 Q4=0:W=0
  1219. 12190 NEXTL
  1220. 12200 GOSUB5850:IFA2<>0THENRETURN
  1221. 12210 E1=E1-D1*W1*W1*W1*(S4+1):IFE1>0THEN12230
  1222. 12220 F9=4:GOSUB4710:RETURN
  1223. 12230 T1=10*D1/W2:IFW<>0THENGOSUB11340
  1224. 12240 IFQ4=0THEN12290
  1225. 12250 PRINT:PRINT"ENGINEERING TO BRIDGE--":PRINT"   SCOTT HERE-  ";
  1226. 12260 PRINT"'WE'VE JUST BLOWN THE WARP ENGINES."
  1227. 12270 PRINT"   WE'LL HAVE TO SHUT 'ER DOWN HERE, CAPTAIN.'"
  1228. 12280 D4(6)=D5*(3*RND(1)+1)
  1229. 12290 J3=1:RETURN
  1230. 12300 PRINT"WARP ENGINES DAMAGED.":RETURN
  1231. 12310 ONSGN(D4(10))+2GOTO12320,12340,12330
  1232. 12320 PRINT"YE FAERIE QUEENE HAS NO SHUTTLE CRAFT.":RETURN
  1233. 12330 PRINT"SHUTTLE CRAFT DAMAGED.":RETURN
  1234. 12340 PRINT:PRINT"***ABANDON SHIP!  ABANDON SHIP!"
  1235. 12350 PRINT"***ALL HANDS ABANDON SHIP!":PRINT
  1236. 12360 PRINT"YOU AND THE BRIDGE CREW ESCAPE IN THE GALILEO."
  1237. 12370 PRINT"THE REMAINDER OF THE CREW BEAMS DOWN"
  1238. 12380 PRINT"TO THE NEAREST HABITABLE PLANET.":IFR3<>0THEN12400
  1239. 12390 F9=9:GOSUB4710:RETURN
  1240. 12400 PRINT:PRINT"YOU ARE CAPTURED BY KLINGONS AND RELEASED TO"
  1241. 12410 PRINT"THE FEDERATION IN A PRISONER-OF-WAR EXCHANGE."
  1242. 12420 PRINT"STARFLEET PUTS YOU IN COMMAND OF ANOTHER SHIP,"
  1243. 12430 PRINT"THE FAERIE QUEENE WHICH IS ANTIQUATED, BUT"
  1244. 12440 PRINT"STILL USABLE.":N=INT(RND(1)*R3+1):Q1=B2(N):Q2=B3(N)
  1245. 12450 S6=5:S7=5:GOSUB7260:Q$(S6,S7)="."
  1246. 12460 FORL=1TO3:S6=INT(3*RND(1)-1+B6)
  1247. 12470 IF(S6<1)OR(S7>10)THEN12500
  1248. 12480 S7=INT(3*RND(1)-1+B7):IF(S7<1)OR(S7>10)THEN12500
  1249. 12490 IFQ$(S6,S7)="."THEN12510
  1250. 12500 NEXTL:GOTO12450
  1251. 12510 S5$="FAERIE QUEENE":Q$(S6,S7)=LEFT$(S5$,1):C5$="DOCKED"
  1252. 12520 FORL=1TO12:D4(L)=0:NEXT:D4(10)=-1:E1=3000:I7=E1
  1253. 12530 S3=1500:I8=S3:T4=6:I9=T4:L1=3:J1=L1:S4=0:W1=5:W2=25
  1254. 12540 RETURN
  1255. 12550 IFD4(11)=0THEN12580
  1256. 12560 PRINT"COMPUTER DAMAGED - CANNOT EXECUTE DESTRUCT SEQUENCE"
  1257. 12570 RETURN
  1258. 12580 PRINT:PRINT"    ---WORKING---"
  1259. 12590 PRINT"IDENTIFICATION-POSITIVE"
  1260. 12600 PRINT"SELF-DESTRUCT-SEQUENCE-ACTIVATED":J=3
  1261. 12610 FORI=10TO6STEP-1:PRINTSPC(J);I:GOSUB12760:J=J+3:NEXT
  1262. 12620 PRINT"ENTER-YOUR-MISSION-PASSWORD-TO-CONTINUE"
  1263. 12630 PRINT"SELF-DESTRUCT-SEQUENCE-OTHERWISE-DESTRUCT"
  1264. 12640 PRINT"SEQUENCE-WILL-BE-ABORTED"
  1265. 12650 INPUTB$:IFB$<>X$THEN12740
  1266. 12660 PRINT"PASSWORD-ACCEPTED":J=10
  1267. 12670 FORI=5TO1STEP-1:PRINTSPC(J);I:GOSUB12760:J=J+3:NEXT
  1268. 12680 PRINT:PRINT"*****ENTROPY OF ";S5$;" MAXIMIZED*****"
  1269. 12690 PRINT:IFK3=0THEN12730
  1270. 12700 W=20*E1:FORL=1TOK3:IFK6(L)*K7(L)>WTHEN12720
  1271. 12710 A5=K4(L):A6=K5(L):T2$=Q$(A5,A6):GOSUB3160
  1272. 12720 NEXTL
  1273. 12730 F9=10:GOSUB4710:RETURN
  1274. 12740 PRINT"PASSWORD-REJECTED"
  1275. 12750 PRINT"CONTINUITY-EFFECTED":PRINT:RETURN
  1276. 12760 K=12345:FORM=1TO90:K=K+1:NEXTM:RETURN
  1277. 12770 FORI=1TO10:GOTO11130:RETURN
  1278. 12780 PRINT"---> COURSE(S) .01-12 ONLY !!!":RETURN
  1279.