home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTRAN / SUPERT87.ZIP / TSHUTL.FOR < prev   
Encoding:
Text File  |  1986-12-15  |  19.6 KB  |  262 lines

  1.       SUBROUTINE TSHUTL                                                 5663
  2.  
  3. c    include 'tcommon.for'
  4.     %include tcommon.for
  5.  
  6.       EQUIVALENCE(ISHST,ISTSH)                                          5701
  7.       DATA PRSHXD,ZFIND,NTTF/.01,.4,18/                                 5702
  8.       PCT(A,B)=(A-B)/B*100.                                             5703
  9. C     ...ISDH SHOWS WANTS. ISTSH SHOWS STATUS.                          5704
  10. C     ...ISHD=1-9. EXPLORE STAR SYSTEM 1-9.                             5705
  11. C     ...ISHD=99. RETURN TO E.                                          5706
  12. C     ...ISHD=0. DO NOTHING.                                            5707
  13. C     ...ISTSH=1-9. ON STAR SYSTEM 1-9.                                 5708
  14. C     ...ISTSH=99. IN SPACE.                                            5709
  15. C     ...ISTSH=0. ON E.                                                 5710
  16.       IF(ISHD.EQ.99)GO TO 500                                           5711
  17. C     ...EXPLORE NEW STAR SYSTEM.                                       5712
  18.       IF(ISHST.EQ.ISHD)GO TO 999                                        5713
  19.       IF(ISTSH.NE.0)GO TO 100                                           5714
  20.       WRITE(*,1)                                                        5715
  21. 1     FORMAT(' SHUTTLECRAFT LAUNCHED')                                  5716
  22.       SHX=XQE                                                           5717
  23.       SHY=YQE                                                           5718
  24. C     ...MOVE IT.                                                       5719
  25. 100   CALL GETBRG(SHDEG,SHX,STARS(ISHD,1),SHY,STARS(ISHD,2),VPX,VPY)    5720
  26.       IF(ISTSH.EQ.99)GO TO 110                                          5721
  27.       VPX=SQRT(VPX*VPX+VPY*VPY)/SHVX/100.-.01                           5722
  28.       WRITE(*,101)VPX                                                   5723
  29. 101   FORMAT(' ARRIVAL IN ',F4.2,' STARDAYS')                           5724
  30. 110   ISTSH=99                                                          5725
  31.       SHX=SHX+COSD(SHDEG)*SHVX                                          5726
  32.       SHY=SHY+SIND(SHDEG)*SHVX                                          5727
  33. C     ...CHECK IF ENTERING STAR SYSTEM.                                 5728
  34.       IF(RANGE(SHX,STARS(ISHD,1),SHY,STARS(ISHD,2)).GT.RADSS)GO TO 999  5729
  35.       ISHST=ISHD                                                        5730
  36.       WRITE(*,2)ISHD                                                    5731
  37. 2     FORMAT(' STAR SYSTEM ',I2,' ENTERED AND EXPLORED')                5732
  38. C     ...FINDS. DO NOT TELL UNTIL RETURN UNLESS DESTROYED.              5733
  39.       IF(IFNDS(ISHD).NE.0)GO TO 300                                     5734
  40.       IF(RAN(IZZ).GE.PRSHXD)GO TO 200                                   5735
  41. 155   WRITE(*,3)                                                        5736
  42. 3     FORMAT(' SHUTTLECRAFT LOST OR DESTROYED')                         5737
  43.       ISHD=0                                                            5738
  44.       ISHST=0                                                           5739
  45.       JMSG=0                                                            5740
  46.       DO 156 J=1,9                                                      5741
  47.       IF(IFNDS(J).EQ.-1)GO TO 156                                       5742
  48.       IFNDS(J)=0                                                        5743
  49.       ISHSTR(J)=0                                                       5744
  50. 156   CONTINUE                                                          5745
  51.       ISHNUM=ISHNUM-1                                                   5746
  52.       GO TO 999                                                         5747
  53. 200   X=RAN(IZZ)                                                        5748
  54.       DO 210 J=1,NTTF                                                   5749
  55.       IF(X.LE.ZFIND+(J-1)*((1.-ZFIND)/NTTF))GO TO 220                   5750
  56. 210   CONTINUE                                                          5751
  57. 220   IFNDS(ISHD)=J                                                     5752
  58. 230   ISHST=ISHD                                                        5753
  59.       ISHD=ISHSTR(2)                                                    5754
  60.       IF(ISHD.LE.0.OR.STARS(ISHD,1).EQ.0.)ISHD=99                       5755
  61.       DO 240 J=2,10                                                     5756
  62. 240   ISHSTR(J-1)=ISHSTR(J)                                             5757
  63.       GO TO 999                                                         5758
  64. 300   WRITE(*,301)                                                      5759
  65. 301   FORMAT(' WE''VE BEEN HERE BEFORE, YOU DUMMY!')                    5760
  66.       GO TO 230                                                         5761
  67. C     ...RETURN TO E.                                                   5762
  68. 500   IF(ISHST.EQ.0)GO TO 996                                           5763
  69.       IF(JMSG.NE.0)GO TO 502                                            5764
  70.       JMSG=1                                                            5765
  71.       DO 501 J=1,NSTARS                                                 5766
  72.       IF(IFNDS(J).EQ.15)GO TO 503                                       5767
  73. 501   CONTINUE                                                          5768
  74.       GO TO 502                                                         5769
  75. 503   WRITE(*,504)                                                      5770
  76. 504   FORMAT(' SHUTTLECRAFT TAKEN OVER BY DANGEROUS ALIENS. TYPE "1" TO 5771
  77.      1DESTROY IT.')                                                     5772
  78.       READ(*,506,ERR=503,END=4321)K                                     5773
  79. 506   FORMAT(I1)                                                        5774
  80.       IF(K.EQ.1)GO TO 155                                               5775
  81. 502   DO 50201 I=1,10                                                   5776
  82. 50201 ISHSTR(I)=0                                                       5777
  83.       CALL GETBRG(SHDEG,SHX,XQE,SHY,YQE,VPX,VPY)                        5778
  84.       SHX=SHX+COSD(SHDEG)*SHVX                                          5779
  85. C     ...CHECK FOR RETURN. PRINT FINDINGS.                              5780
  86.       IF(ISHST.EQ.99)GO TO 505                                          5781
  87.       VPX=SQRT(VPX*VPX+VPY*VPY)/SHVX/100.                               5782
  88.       WRITE(*,101)VPX                                                   5783
  89.       ISTSH=99                                                          5784
  90. 505   SHY=SHY+SIND(SHDEG)*SHVX                                          5785
  91.       IF(RANGE(SHX,XQE,SHY,YQE).GE.RADES)GO TO 999                      5786
  92.       WRITE(*,4)                                                        5787
  93. 4     FORMAT(' SHUTTLECRAFT RETURNED')                                  5788
  94.       JJ=0                                                              5789
  95.       DO 550 J=1,NSTARS                                                 5790
  96.       IF(IFNDS(J).LE.1)GO TO 550                                        5791
  97.       K=IFNDS(J)-1                                                      5792
  98.       IFNDS(J)=-1                                                       5793
  99.       GO TO (601,602,603,604,605,606,607,608,609,610,611,6115,612,613,615794
  100.      14,615,616),K                                                      5795
  101. C     ...DISEASE.                                                       5796
  102. 601   IF(IDSES.EQ.1)GO TO 550                                           5797
  103.       WRITE(*,701)                                                      5798
  104. 701   FORMAT(' VIRULENT DISEASE RAMPAGING ON ENTERPRISE!')              5799
  105.       IDSES=1                                                           5800
  106.       VDSES=RAN(IZZ)*VDSESM                                             5801
  107.       VSTRDS=RAN(IZZ)*.15+VSTRM                                         5802
  108.       GO TO 555                                                         5803
  109. C     ...WARP DRIVE ACCELERATION INCREASE.                              5804
  110. 602   IF(DVWP.GE.1.)GO TO 6025                                          5805
  111.       XINC=DVWP+2.*DVWP*DVWP*RAN(IZZ)                                   5806
  112.       GO TO 6016                                                        5807
  113. 6025  XINC=DVWP+.3*DVWP*RAN(IZZ)                                        5808
  114. 6016  IXRAT=PCT(XINC,DVWP)                                              5809
  115.       IF(IXRAT.EQ.0)GO TO 550                                           5810
  116.       WRITE(*,702)NAMD(1),IXRAT                                         5811
  117. 702   FORMAT(' ',A10,' ACCELERATION INCREASED ',I3,'%')                 5812
  118. C     ...REVISE ENERGY USAGE TO COMPENSATE FOR INCREASED ACCELERATION.  5813
  119.       VPY=IXRAT/100.                                                    5814
  120.       VPX=EWRP                                                          5815
  121.       EWRP=DVWP*DVWP*EWRP/(XINC*XINC)                                   5816
  122.       DVWP=XINC                                                         5817
  123.       IXRAT=-PCT(VPX,EWRP0)                                             5818
  124.       EWRP0=EWRP/(1.-FLOAT(IXRAT)/100.)                                 5819
  125. C     ...ALSO INCREMENT DEG CHANGE/SM, ALTHOUGH NOT BY SO MUCH.         5820
  126.       DGWP=DGWP+RAN(IZZ)*DGWP/3.                                        5821
  127.       IF(DGWP.GT.90.)DGWP=90.                                           5822
  128.       GO TO 555                                                         5823
  129. C     ...WAPR DRIVE EFFICIENCY.                                         5824
  130. 603   XINC=EWRP-1.7*SQRT(EWRP)*RAN(IZZ)                                 5825
  131.       IXRAT=-PCT(XINC,EWRP)                                             5826
  132.       IF(IXRAT.EQ.0)GO TO 550                                           5827
  133.       WRITE(*,703)NAMD(1),IXRAT                                         5828
  134. 703   FORMAT(1X,A10,' EFFICIENCY INCREASED BY ',I3,'%')                 5829
  135.       EWRP=XINC                                                         5830
  136.       EVENU=EVENU-IXRAT/100.*EVENU                                      5831
  137.       GO TO 555                                                         5832
  138. C     ...PHASER IMPROVEMENT.                                            5833
  139. 604   XINC=DISTPE+.5*SQRT(DISTPE)*RAN(IZZ)                              5834
  140.       IXRAT=PCT(XINC,DISTPE)                                            5835
  141.       IF(IXRAT.EQ.0)GO TO 550                                           5836
  142.       WRITE(*,704)NAMD(3),IXRAT                                         5837
  143. 704   FORMAT(1X,A10,' EFFECTIVENESS INCREASED BY ',I3,'%')              5838
  144.       DISTPE=XINC                                                       5839
  145.       GO TO 555                                                         5840
  146. C     ...TORP V INCREASE.                                               5841
  147. 605   ETVEL=ETVEL+(.9-ETVEL)/5.                                         5842
  148.       WRITE(*,705)NAMD(4),ETVEL                                         5843
  149. 705   FORMAT(1X,A10,' VELOCITY INCREASED TO ',F5.3)                     5844
  150.       GO TO 555                                                         5845
  151. C     ...TORP RATE OF FIRE.                                             5846
  152. 606   IETOFT=IETOFT+1                                                   5847
  153.       WRITE(*,706)NAMD(4),IETOFT                                        5848
  154. 706   FORMAT(1X,A10,' RATE NOW ',I2,' PER STAR-MINUTE')                 5849
  155.       GO TO 555                                                         5850
  156. 607   XINC=DISTGT+.5*SQRT(DISTGT)*RAN(IZZ)                              5851
  157.       IXRAT=PCT(XINC,DISTGT)                                            5852
  158.       IF(IXRAT.EQ.0)GO TO 550                                           5853
  159.       WRITE(*,704)NAMD(5),IXRAT                                         5854
  160.       DISTGT=XINC                                                       5855
  161.       DISTKR=DISTKR+IXRAT/100.*DISTKR                                   5856
  162.       GO TO 555                                                         5857
  163. 608   XINC=CODDS+CODDS*CODDS*5.*RAN(IZZ)                                5858
  164.       IXRAT=PCT(XINC,CODDS)                                             5859
  165.       IF(IXRAT.EQ.0)GO TO 550                                           5860
  166.       WRITE(*,708)IXRAT                                                 5861
  167. 708   FORMAT(' TROOP FIGHTING EFFECTIVENESS VS KLINGONS INCREASED BY ',I5862
  168.      13,'%')                                                            5863
  169.       CODDS=XINC                                                        5864
  170.       GO TO 555                                                         5865
  171. 609   XINC=EODDS+EODDS*EODDS*2.5*RAN(IZZ)                               5866
  172.       IXRAT=PCT(XINC,EODDS)                                             5867
  173.       IF(IXRAT.EQ.0)GO TO 550                                           5868
  174.       WRITE(*,709)IXRAT                                                 5869
  175. 709   FORMAT(' TROOP FIGHTING EFFECTIVENESS VS ROMULANS INCREASED BY ',I5870
  176.      13,'%')                                                            5871
  177.       EODDS=XINC                                                        5872
  178.       GO TO 555                                                         5873
  179. C     ...TRANSPORTERS.                                                  5874
  180. 610   JDAMRP =FLOAT(IDAMRP)+2.*SQRT(FLOAT(IDAMRP))*RAN(IZZ)             5875
  181.       IF(JDAMRP.EQ.IDAMRP)GO TO 550                                     5876
  182.       IDAMRP=JDAMRP                                                     5877
  183.       WRITE(*,706) NAMD(8),IDAMRP                                       5878
  184.       GO TO 555                                                         5879
  185. C     ...COMMUNICATIONS.                                                5880
  186. 611   XINC=PJAM-2.*PJAM*(PJAM)*RAN(IZZ)                                 5881
  187.       IXRAT=PCT(-XINC,-PJAM)                                            5882
  188.       IXRAT=-IXRAT                                                      5883
  189.       IF(IXRAT.EQ.0)GO TO 550                                           5884
  190.       WRITE(*,710)NAMD(9),IXRAT                                         5885
  191. 710   FORMAT(1X,A10,' INTERCEPTION PROBABILITY REDUCED BY ',I3,'%')     5886
  192.       PJAM=XINC                                                         5887
  193.       GO TO 555                                                         5888
  194. C     ...SHIELDS IMPROVEMENT.                                           5889
  195. 6115  XINC=SHLDF+RAN(IZZ)*.2*SHLDF                                      5890
  196.       IXRAT=PCT(XINC,SHLDF)                                             5891
  197.       IF(IXRAT.EQ.0)GO TO 550                                           5892
  198.       WRITE(*,6112)IXRAT                                                5893
  199. 6112  FORMAT(' SHIELDS IMPROVED BY ',I3 ,'%')                           5894
  200.       SHLDF=XINC                                                        5895
  201.       GO TO 555                                                         5896
  202. C     ...ALIEN FORCE-HOSTILE                                            5897
  203. 612   IF (IALSS.NE.0)GO TO 550                                          5898
  204.       IXRAT=RAN(IZZ)*40.+10.                                            5899
  205.       XINC=ENERGY/IXRAT/100.                                            5900
  206.       WRITE(*,712)J,IXRAT,XINC                                          5901
  207. 712   FORMAT(' ALIEN BEINGS FROM STAR SYSTEM ',I1,' DRAINING'/      ' EN5902
  208.      1TERPRISE ENERGY BANKS AT THE RATE OF ',I3,' UNITS/STARMINUTE'/    5903
  209.      1  ' ZERO ENERGY LEVEL IN ',F6.2,' STARDAYS!!')                    5904
  210.       ALEDR=IXRAT                                                       5905
  211.       IALIC=ICE                                                         5906
  212.       IALJC=JCE                                                         5907
  213.       IALSS=J                                                           5908
  214.       GO TO 555                                                         5909
  215. C     ...ENERGY FORMS                                                   5910
  216. 613   IF(NDRA.EQ.1)GO TO 550                                            5911
  217.       IF(IDMG(1).NE.0)GO TO 550                                         5912
  218.       WRITE(*,713)                                                      5913
  219. 713   FORMAT(' SEMI-SENTIENT ENERGY FORMS INVADING ENTERPRISE COMPUTER B5914
  220.      1ANKS!'/      ' ENTERPRISE WARP DRIVE ENGINES UNDER ALIEN CONTROL!!5915
  221.      1')                                                                5916
  222.       NDRA=1                                                            5917
  223.       DSP=RAN(IZZ)+1.                                                   5918
  224.       JMSG=0                                                            5919
  225.       DDEG=RAN(IZZ)*360.                                                5920
  226.       GO TO 555                                                         5921
  227. C     ...TROOP REINFORCEMENTS.                                          5922
  228. 614   IXRAT=RAN(IZZ)*NTROPS+1.                                          5923
  229.       WRITE(*,714)IXRAT,J                                               5924
  230. 714   FORMAT(1X,I4,' ANDROID TROOP REINFORCEMENTS FROM FRIENDLY CIVILIZA5925
  231.      1TION'/      ' ON STAR SYSTEM ',I1)                                5926
  232.       ITRMEN(1)=ITRMEN(1)+IXRAT                                         5927
  233.       GO TO 555                                                         5928
  234. C     ...IMPROVED TRANSPORTER ENERGY USAGE.                             5929
  235. 615   XINC=TRNRGY-RAN(IZZ)*TRNRGY*TRNRGY*.5                             5930
  236.       IXRAT=-PCT(XINC,TRNRGY)                                           5931
  237.       IF(IXRAT.LE.0)GO TO 500                                           5932
  238.       WRITE(*,703)NAMD(8),IXRAT                                         5933
  239.       TRNRGY=XINC                                                       5934
  240.       GO TO 555                                                         5935
  241. C     ...MICROTRIBBLES.                                                 5936
  242. 616   SDAYS=RAN(IZZ)+1.                                                 5937
  243.       WRITE(*,716)                                                      5938
  244. 716   FORMAT(' MICRO-TRIBBLES MULTIPLYING OUT OF CONTROL IN COMPUTER BAN5939
  245.      1KS!!')                                                            5940
  246.       IDMG(10)=IDMG(10)+SDAYS*100.                                      5941
  247.       GO TO 555                                                         5942
  248. 555   JJ=1                                                              5943
  249. 550   CONTINUE                                                          5944
  250.       IF(JJ.EQ.1)GO TO 800                                              5945
  251.       WRITE(*,575)                                                      5946
  252. 575   FORMAT(' NOTHING OF VALUE FOUND THIS EXPLORATION')                5947
  253. 800   ISTSH=0                                                           5948
  254.       ISHD=0                                                            5949
  255. 999   RETURN                                                            5950
  256. 4321  STOP                                                              5951
  257. C     ...RETURN NOT POSSIBLE.                                           5952
  258. 996   WRITE(*,995)                                                      5953
  259. 995   FORMAT(' RETURN NOT POSSIBLE')                                    5954
  260.       GO TO 999                                                         5955
  261.       END                                                               5956
  262.