home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!usc!elroy.jpl.nasa.gov!decwrl!concert!lester.appstate.edu!pembvax1.pembroke.edu!rennie
- From: rennie@pembvax1.pembroke.edu
- Newsgroups: vmsnet.sources.games
- Subject: Star Trek - Part [11/18]
- Date: 7 Apr 93 10:57:47 EDT
- Organization: Pembroke State University
- Lines: 445
- Message-ID: <1993Apr7.105747.1@pembvax1.pembroke.edu>
- NNTP-Posting-Host: papa.pembroke.edu
- Xref: uunet vmsnet.sources.games:653
-
- -+-+-+-+-+-+-+-+ START OF PART 11 -+-+-+-+-+-+-+-+
- X`09IF(I.LE.NENHERE) GOTO 1
- X`09CALL SORTKL
- X`09RETURN
- X END`20
- $ CALL UNPACK TRMOVECOM.FOR;1 1446162428
- $ create 'f'
- X SUBROUTINE MOVETHO
- X`09INCLUDE 'TREKCOM/NOLIST'
- X EQUIVALENCE (KSTUF(1),ITHERE),(KSTUF(2),ITHX),(KSTUF(3),ITHY)`20
- X `20
- X IF(ITHERE.EQ.0) RETURN
- X IF(JUSTIN.EQ.1) RETURN
- X `20
- X IF((ITHX.EQ.1).AND.(ITHY.EQ.1)) GO TO 10 `20
- X IF((ITHX.EQ.1).AND.(ITHY.EQ.10))GO TO 20 `20
- X IF((ITHX.EQ.10).AND.(ITHY.EQ.10))GOTO 30 `20
- X IF((ITHX.EQ.10).AND.(ITHY.EQ.1))GO TO 40 `20
- XC---------SOMETHING IS VERY WRONG....GET RID OF THOLIAN. `20
- X ITHERE=0 `20
- X RETURN `20
- X `20
- XC--------SET DESTINATION SECTOR. `20
- X10`09IDX=1
- X`09IDY=10
- X`09GO TO 50
- X20`09IDX=10
- X`09IDY=10
- X`09GO TO 50
- X30`09IDX=10
- X`09IDY=1
- X`09GO TO 50
- X40`09IDX=1
- X`09IDY=1
- X `20
- XC----------MAKE SURE DESTINATION IS EMPTY. IF NOT, FORGET IT. `20
- X50 IF((QUAD(IDX,IDY).NE.IHDOT).AND.(QUAD(IDX,IDY).NE.IHNUM)) `20
- X 2 RETURN `20
- X QUAD(ITHX,ITHY)=IHNUM`20
- X IF(ITHX.EQ.IDX) GO TO 120 `20
- XC----------MOVE THOLIAN ON X-AXIS `20
- X IM=ABS(FLOAT(IDX-ITHX))/FLOAT(IDX-ITHX) `20
- X70 IF(ITHX.EQ.IDX) GO TO 200 `20
- X ITHX=ITHX+IM
- X IF(QUAD(ITHX,ITHY).EQ.IHDOT) QUAD(ITHX,ITHY)=IHNUM `20
- X GO TO 70 `20
- X120 IF(ITHY.EQ.IDY) GO TO 200 `20
- XC------------MOVE THOLIAN ON Y-AXIS. `20
- X IM=ABS(FLOAT(IDY-ITHY))/FLOAT(IDY-ITHY) `20
- X130 IF(ITHY.EQ.IDY) GO TO 200 `20
- X ITHY=ITHY+IM
- X IF(QUAD(ITHX,ITHY).EQ.IHDOT) QUAD(ITHX,ITHY)=IHNUM `20
- X GO TO 130 `20
- X200 QUAD(ITHX,ITHY)=IHT `20
- XC-------CHECK TO SEE IF ALL HOLES ARE PLUGED `20
- X DO 220 I=1,10`20
- X IF(QUAD(1,I).EQ.IHNUM) GO TO 205
- X IF(QUAD(1,I).NE.IHT) RETURN `20
- X205 IF(QUAD(10,I).EQ.IHNUM) GO TO 210`20
- X IF(QUAD(10,I).NE.IHT) RETURN `20
- X210 IF(QUAD(I,1).EQ.IHNUM) GO TO 215
- X IF(QUAD(I,1).NE.IHT) RETURN `20
- X215 IF(QUAD(I,10).EQ.IHNUM) GO TO 220`20
- X IF(QUAD(I,10).NE.IHT) RETURN `20
- X220 CONTINUE `20
- XC-------ALL PLUGED UP, THOLIAN SPLITS.
- X QUAD(ITHX,ITHY)=IHNUM`20
- X CALL DROPIN('@',ID1,ID2) `20
- X ITHERE=0 `20
- X CALL CRMSENA(IHT,2,ITHX,ITHY) `20
- X CALL CRAMDMP(15H COMPLETES WEB. ) `20
- X RETURN `20
- X END`20
- $ CALL UNPACK TRMOVETHO.FOR;1 1718768731
- $ create 'f'
- X SUBROUTINE NEWCOND
- X`09INCLUDE 'TREKCOM/NOLIST'
- X CONDIT=IHGREEN
- X IF(ENERGY .LT. 1000.0) CONDIT=IHYELLO
- X IF((GALAXY(QUADX,QUADY) .GT. 99) .OR. (NEWSTUF(QUADX,QUADY) .GT.
- X C 9))CONDIT=IHRED
- X RETURN
- X END`20
- $ CALL UNPACK TRNEWCOND.FOR;1 192507788
- $ create 'f'
- X SUBROUTINE NEWQUAD
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09LOGICAL*1 ISHIP
- X INTEGER QUADNUM`20
- X`09REAL*8 THOLIANX
- X EQUIVALENCE (CRACKS(2),SHUTUP),(SHIP,ISHIP)
- X EQUIVALENCE (KSTUF(1),ITHERE),(KSTUF(2),ITHX),(KSTUF(3),ITHY)`20
- X`09DATA THOLIANX/8HTHOLIANX/
- X JUSTIN=1
- X`09BASEX=0
- X`09BASEY=0
- X`09KLHERE=0
- X`09COMHERE=0
- X`09PLNETX=0
- X`09PLNETY=0
- X`09ISHERE=0
- X`09IRHERE=0
- X`09IPLANET=0
- X`09NENHERE=0
- X`09NEUTZ=0
- X`09INORBIT=0
- X`09LANDED=-1
- X`09IENTESC=0
- X ITHERE=0 `20
- X IF(ISCATE .EQ. 0) GO TO 5`20
- XC--------ENTERPRISE TRIED TO ESCAPE FROM A SUPER-COMMANDER.`20
- X`09ISCATE=0
- X`09IENTESC=1
- X5 QUADNUM=GALAXY(QUADX,QUADY)`20
- X IF(QUADNUM .GT. 999) GO TO 70`20
- X KLHERE=QUADNUM/100
- X`09NEWNUM=NEWSTUF(QUADX,QUADY)
- X`09IRHERE=NEWNUM/10
- X`09NPLAN=NEWNUM-IRHERE*10
- X`09NENHERE=KLHERE+IRHERE
- XC--------EMPTY QUADRANT AND POSITION STARSHIP`20
- X DO 15 I=1,10
- X DO 15 J=1,10
- X15 QUAD(I,J)=IHDOT`20
- X QUAD(SECTX,SECTY)=ISHIP
- XC-----------DECIDE IF THIS QUADRENT NEEDS A THOLIAN..... `20
- X IF((RANF(0).GT.0.08).AND.(PASSWD.NE.8HTHOLIANX)) GO TO 23 `20
- XC--------DECIDE POSITION FOR THOLIAN...... `20
- X17 ITHX=INT(RANF(0)+0.5)*9+1 `20
- X ITHY=INT(RANF(0)+0.5)*9+1 `20
- X IF(QUAD(ITHX,ITHY).NE.IHDOT) GO TO 17 `20
- X QUAD(ITHX,ITHY)=IHT `20
- X ITHERE=1 `20
- XC---------PUT AN X IN EACH UNOCCUPIED CORNER. (TO RESERVE IT) `20
- X IF(QUAD(1,1).EQ.IHDOT) QUAD(1,1)=1HX `20
- X IF(QUAD(1,10).EQ.IHDOT)QUAD(1,10)=1HX `20
- X IF(QUAD(10,10).EQ.IHDOT)QUAD(10,10)=1HX `20
- X IF(QUAD(10,1).EQ.IHDOT)QUAD(10,1)=1HX `20
- X23 CONTINUE `20
- XC--------POSITION ORDINARY KLINGON VESSELS
- X IF(QUADNUM .LT.100)GO TO 34`20
- X QUADNUM=QUADNUM-100*KLHERE
- X DO 25 I=1,KLHERE
- X CALL DROPIN(IHK,IX,IY)
- X`09KX(I)=IX
- X`09KY(I)=IY
- X 25 KPOWER(I)=RANF(0)*150.0+300.+25.*SKILL
- XC--------IF THIS QUADRANT NEEDS A COMMANDER, PROMOTE ONE KLINGON
- X IF(REMCOM .EQ. 0) GO TO 32
- X DO 30 I=1,REMCOM
- X IF(CX(I) .EQ. QUADX .AND. CY(I) .EQ. QUADY)GO TO 31`20
- X 30 CONTINUE
- X GO TO 32
- X 31 QUAD(IX,IY)=IHC`20
- X KPOWER(KLHERE)=950.0+400.0*RANF(0)+50.*SKILL
- X COMHERE=1`20
- X COMX=IX`20
- X COMY=IY`20
- XC--------IF THIS QUADRANT NEEDS A SUPER-COMMANDER, PROMOTE ONE KLINGON.`20
- X 32 I=KLHERE
- X IF((QUADX .NE. ISX) .OR. (QUADY .NE. ISY)) GO TO 34`20
- X IF(COMHERE .EQ. 0) GO TO 33`20
- X`09I=KLHERE-1
- X`09IX=KX(I)
- X`09IY=KY(I)
- X 33 QUAD(IX,IY) = IHS`20
- X KPOWER(I)=1175.0+400.0*RANF(0)+125.0*SKILL
- X`09ISCATE=1
- X`09ISHERE=1
- XC--------PUT IN ROMULANS IF NEEDED.`20
- X34`09IF(IRHERE .EQ. 0) GO TO 37
- X ITEMP1=KLHERE+1`20
- X DO 36 I=ITEMP1, NENHERE`20
- X CALL DROPIN(IHR,IX,IY)
- X`09KX(I)=IX
- X`09KY(I)=IY
- X 36 KPOWER(I)=450.+400.*RANF(0)+50.*SKILL`20
- X37`09CALL RESETD
- X`09CALL SORTKL
- XC--------IF QUADRANT CONTAINS A STARBASE, CHOOSE ITS POSITION`20
- X IF(QUADNUM .LT. 10)GO TO 50 `20
- X QUADNUM =QUADNUM - 10`20
- X CALL DROPIN(IHB,BASEX,BASEY)
- XC--------IF QUADRANT NEEDS A PLANET, PUT ONE IN.
- X 50 IF(NPLAN .EQ. 0) GO TO 54`20
- X DO 51 I=1,INPLAN
- X IPLANET=I`20
- X IF(PLNETS(I,1) .EQ. QUADX .AND. PLNETS(I,2) .EQ. QUADY) GO TO 52
- X 51 CONTINUE
- X`09IPLANET=0
- X`09GO TO 54
- X 52 CALL DROPIN(IHP,PLNETX,PLNETY)
- XC--------AND FINALLY, THE STARS`20
- X54 CALL NEWCOND
- X IF(QUADNUM .LT. 1)GO TO 62
- X DO 60I=1,QUADNUM
- X 60 CALL DROPIN(IHSTAR,IX,IY)`20
- XC--------IF ROMULANS PRESENT WITHOUT KLINGONS OR BASE, PRINT SPECIAL MESSAGE
- V.`20
- X 62 IF((IRHERE .EQ. 0) .OR. (KLHERE .NE. 0) .OR. (BASEX .NE. 0))GOTO66
- X IF(DAMAGE(9) .GT. 0.) GO TO 64
- X CALL SKIP(1)
- X CALL PROUT(41HLT. UHURA: "CAPTAIN, AN URGENT MESSAGE. ,41)
- X CALL PROUT(31H I'LL PUT IT ON AUDIO." CLICK ,31)`20
- X CALL SKIP(1)
- X CALL PROUT(58H "INTRUDER! YOU HAVE VIOLATED THE ROMULAN NEUTRAL
- V `20
- X CZONE." ,58)`20
- X CALL PROUT(44H "LEAVE AT ONCE, OR YOU WILL BE DESTROYED!" ,44)
- V `20
- X 64 NEUTZ=1`20
- XC--------PUT IN "THING" IF NEEDED`20
- X 66 IF(SHUTUP.NE.0.) GO TO 67 `20
- X IF(THINGX.NE.QUADX .OR. THINGY.NE.QUADY) GO TO 67`20
- X CALL DROPIN(IHQUEST,IX,IY)
- X`09THINGX=0
- X`09THINGY=0
- X IF(DAMAGE(1) .GT. 0) GO TO 67
- X CALL SKIP(1)
- X CALL PROUT(`20
- X + 43HMR. SPOCK: "CAPTAIN, THIS IS MOST UNUSUAL.,43)
- X CALL PROUT(`20
- X + 43H PLEASE EXAMINE YOUR SHORT-RANGE SCAN.",43)
- XC--------DROP IN A FEW BLACK HOLES
- X 67 DO 68 I=1,3`20
- X 68 IF(RANF(0) .GT. 0.89) CALL DROPIN('@',IX,IY) `20
- XC----------IF THOLIAN HERE, TAKE THE X OUT OF EACH CORNER.
- X IF(ITHERE.EQ.0) RETURN
- X IF(QUAD(1,1).EQ.1HX) QUAD(1,1)=IHDOT `20
- X IF(QUAD(1,10).EQ.1HX)QUAD(1,10)=IHDOT `20
- X IF(QUAD(10,10).EQ.1HX)QUAD(10,10)=IHDOT `20
- X IF(QUAD(10,1).EQ.1HX) QUAD(10,1)=IHDOT `20
- X RETURN `20
- XC--------COPE IF QUADRANT CONTAINS ONLY A SUPERNOVA`20
- X70 DO 75 I=1,10
- X DO 75 J=1,10
- X75 QUAD(I,J)=IHDOT`20
- X RETURN
- X END`20
- $ CALL UNPACK TRNEWQUAD.FOR;1 1363100824
- $ create 'f'
- X SUBROUTINE NOVA(IX,IY)
- XC
- XC`095-DEC-79
- XC`09DON'T CHARGE PLAYER FOR A PLANET NOVAED BY AN ENEMY
- XC
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09LOGICAL*1 IQUAD,IQUAD1,ISHIP
- X INTEGER BURST,HITS(10,2),BOT,TOP,TOP2`20
- X DIMENSION COURSE(9)`20
- X EQUIVALENCE (CRACKS(1),HIT),(CRACKS(4),KSHOT),(SHIP,ISHIP)
- X DATA COURSE/ 10.5, 12.0, 1.5, 9.0, 0.0, 3.0, 7.5, 6.0, 4.5 /
- XC--------CHECK FOR SUPERNOVA POSSIBILITY
- X IF(RANF(0) .GE. 0.05) GO TO 76 `20
- X CALL SNOVA(IX,IY)`20
- X RETURN
- XC--------PRINT NOVA MESSAGE FOR INITIAL STAR AT LOCATION (IX,IY)
- X 76 QUAD(IX,IY)=IHDOT`20
- X CALL CRMSENA(IHSTAR,2,IX,IY)
- X CALL CRAMDMP(7H NOVAS.)`20
- X GALAXY(QUADX,QUADY)=GALAXY(QUADX,QUADY)-1`20
- XC-------IF ENTERPRISE DESTROYS STAR, TAKE OFF POINTS `20
- X IF(IPHWHO.NE.1) STARKL=STARKL+1`20
- XC--------SET UP STACK TO RECURSIVELY TRIGGER ADJACENT STARS`20
- X`09BOT=1
- X`09TOP=1
- X`09TOP2=1
- X`09KOUNT=0
- X`09ICX=0
- X`09ICY=0
- X HITS(BOT,1)=IX
- X HITS(BOT,2)=IY
- X 78 DO 90 MM=BOT,TOP
- X DO 90 NN=1,3
- X DO 90 J=1,3`20
- X IF((J*NN) .EQ. 4)GO TO 90`20
- X II=HITS(MM,1)+NN-2
- X JJ=HITS(MM,2)+J-2`20
- X IF(II .LT. 1 .OR. II .GT. 10)GO TO 90`20
- X IF(JJ .LT. 1 .OR. JJ .GT. 10)GO TO 90`20
- X IQUAD=QUAD(II,JJ)`20
- X IF(IQUAD.EQ.IHDOT .OR. IQUAD.EQ.IHQUEST .OR. IQUAD.EQ.'@')
- X + GO TO 90
- X IF(IQUAD.EQ.IHNUM) GO TO 90 `20
- X IF(IQUAD.EQ.IHT) GO TO 90 `20
- X IF(IQUAD .NE. IHSTAR) GO TO 80
- XC--------ANOTHER STAR AFFECTED BY A NOVA
- X IF(RANF(0.) .GE. .05)GO TO 79`20
- X CALL SNOVA(II,JJ)`20
- X RETURN
- X 79 TOP2=TOP2+1`20
- X HITS(TOP2,1)=II`20
- X HITS(TOP2,2)=JJ`20
- X GALAXY(QUADX,QUADY)=GALAXY(QUADX,QUADY)-1`20
- X IF(IPHWHO.NE.1) STARKL=STARKL+1`20
- X CALL CRMSENA(IHSTAR,2,II,JJ)
- X CALL CRAM(7H NOVAS.)
- X GO TO 8905
- X 80 IF(IQUAD .NE. IHP) GO TO 8002`20
- XC--------PLANET DESTROYED BY NOVA.
- X NEWSTUF(QUADX,QUADY)=NEWSTUF(QUADX,QUADY) -1
- X`09IF(IPHWHO.NE.1)NPLANKL=NPLANKL+1
- X CALL CRMSENA(IHP,2,II,JJ)`20
- X CALL CRAM(11H DESTROYED.)`20
- X DO 8001 I=1,5`20
- X 8001 PLNETS(IPLANET,I)=0
- X`09IPLANET=0
- X`09PLNETX=0
- X`09PLNETY=0
- X`09IF(LANDED .NE. 1) GO TO 8905
- X`09CALL FINISH
- X`09GO TO 95
- X 8002 IF(IQUAD .NE. IHB) GO TO 82`20
- XC----------NOVA DESTROYS STARBASE`20
- X GALAXY(QUADX,QUADY)=GALAXY(QUADX,QUADY)-10
- X DO 81 LLL=1,REMBASE`20
- X IF(BASEQX(LLL).NE.QUADX .OR. BASEQY(LLL).NE.QUADY) GO TO 81`20
- X BASEQX(LLL)=BASEQX(REMBASE)`20
- X BASEQY(LLL)=BASEQY(REMBASE)`20
- X 81 CONTINUE
- X REMBASE=REMBASE-1`20
- X`09BASEX=0
- X`09BASEY=0
- X IF(IPHWHO.NE.1) BASEKL=BASEKL+1`20
- X CALL NEWCOND
- X CALL CRMSENA(IHB,2,II,JJ)`20
- X CALL CRAM(12H DESTROYED. )
- X GO TO 8905
- X 82 HIT=800.0 + 800.0*RANF(0)`20
- X IF(IQUAD .NE.ISHIP) GO TO 87
- XC----------STARSHIP IN A NOVA`20
- X CALL PROUT(29H***STARSHIP BUFFETED BY NOVA.,29)
- X KSHOT=0`20
- X CALL ZAP
- XC-------CHECK IF STARSHIP SURVIVED NOVA`20
- X IF(ENERGY .GT. 0)GO TO 86`20
- X CALL FINISH(7)
- X RETURN
- XC--------ADD IN COURSE NOVA CONTRIBUTES TO KICKING STARSHIP`20
- X 86 ICX=ICX+SECTX-HITS(MM,1)
- X ICY=ICY+SECTY-HITS(MM,2)
- X KOUNT=KOUNT+1`20
- X GO TO 90
- XC--------ENEMY DESTROYED OR DAMAGED ; BUFFETED BY NOVA.`20
- X 87 IF(IQUAD .EQ. IHK) GO TO 88`20
- X DO 8701 LL=1,NENHERE
- X IF(KX(LL).EQ.II .AND. KY(LL).EQ.JJ) GO TO 8702
- X 8701 CONTINUE
- X 8702 KPOWER(LL)=KPOWER(LL)-HIT`20
- X IF(KPOWER(LL) .LE. 0) GO TO 88
- X NEWCX=II+II-HITS(MM,1)
- X NEWCY=JJ+JJ-HITS(MM,2)
- X CALL CRMSENA(IQUAD,2,II,JJ)`20
- X CALL CRAM(8H DAMAGED)`20
- X IF(NEWCX.LT.1 .OR. NEWCX.GT.10 .OR.`20
- X + NEWCY.LT.1 .OR. NEWCY.GT.10) GO TO 8703
- X IQUAD1=QUAD(NEWCX,NEWCY)
- X IF(IQUAD1 .NE. '@') GO TO 87025`20
- XC--------ENEMY DISPLACED INTO BLACK HOLE
- X CALL CRAMDMP(26H, BLASTED INTO BLACK HOLE.)`20
- X CALL DEADKL(II,JJ,IQUAD,NEWCX,NEWCY)`20
- X`09GO TO 90
- X87025 IF(IQUAD1 .NE. IHDOT) GO TO 8703
- X CALL CRAM(13H, BUFFETED TO)`20
- X CALL CRAMLOC(2,NEWCX,NEWCY)`20
- X QUAD(II,JJ)=IHDOT`20
- X QUAD(NEWCX,NEWCY)=IQUAD`20
- X KX(LL)=NEWCX
- X KY(LL)=NEWCY
- X KDIST(LL)= SQRT(FLOAT((SECTX-NEWCX)**2+(SECTY-NEWCY)**2))
- X 8703 CALL CREND
- X GO TO 90
- XC--------ENEMY DESTROYED BY NOVA.`20
- X 88 CALL DEADKL(II,JJ,IQUAD,II,JJ)
- X GO TO 90
- X 8905 CALL CREND
- X QUAD(II,JJ)=IHDOT`20
- X 90 CONTINUE
- XC--------IF MORE STARS AFFECTED BY NOVA GO FIND WHAT THEY GOT`20
- X IF(TOP .EQ. TOP2)GO TO 93`20
- X BOT=TOP+1`20
- X TOP=TOP2
- X GO TO 78
- X 93 IF(KOUNT .EQ. 0)RETURN
- XC--------STARSHIP AFFECTED BY NOVA - KICK IT AWAY.
- X DIST=KOUNT*.1`20
- X IF(ICX .NE. 0) ICX=ISIGN(1,ICX)`20
- X IF(ICY .NE. 0) ICY=ISIGN(1,ICY)`20
- X INDEX=3*(ICX+1)+ICY+2`20
- X DIREC=COURSE(INDEX)`20
- X IF(DIREC .EQ. 0) DIST=0`20
- X IF(DIST .EQ. 0)RETURN`20
- X TIME=12.0*DIST
- X CALL SKIP(1)
- X CALL PROUT(34HFORCE OF NOVA DISPLACES STARSHIP. ,34)`20
- X CALL MOVE`20
- X 95 RETURN
- X END`20
- $ CALL UNPACK TRNOVA.FOR;1 1734993791
- $ create 'f'
- X SUBROUTINE PHASERS
- XC
- XC`094-APR-79
- XC`09THIS MODULE HAS BEEN WORKED OVER TO MAKE IT HARDER TO FIRE THE
- XC`09PHASERS ACCIDENTALLY WHEN YOU REALLY WANTED TO DO SOMETHING
- XC`09ELSE. ALSO, THE BATTLE COMPUTER DAMAGE LOOPHOLE HAS BEEN
- XC`09CLOSED.
- XC`093-DEC-79
- XC`09ALLOW PLAYER TO OBTAIN BATTLE COMPUTER DATA EVEN IF THE PHASERS
- XC`09ARE BROKEN (OR OTHERWISE UNUSABLE).
- XC
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09LOGICAL*1 IENM
- X`09LOGICAL CROP
- X`09REAL*8 AITEM
- X`09BYTE ITM
- X`09COMMON/SCANBF/KEY,AITEM
- X`09EQUIVALENCE (FNUM,AITEM)
- X`09EQUIVALENCE (ITM,AITEM)
- X REAL HITS(20)`20
- X`09DATA PHASFAC/2.0/
- X IFAST=0
- X`09NO=0
- X IDIDIT=1
- X`09IPOOP=1
- X IF(DAMAGE(1)+DAMAGE(11) .GT. 0.0) IPOOP=0`20
- X`09IDOIT=1
- XC--------ENSURE PHASERS CAN BE FIRED
- X IF(CONDIT .NE.IHDOCKD )GO TO 5`20
- X CALL PROUT(`20
- X + 44HPHASERS CAN'T BE FIRED THROUGH BASE SHIELDS.,44)
- X GO TO 19
- X5 IF(DAMAGE(3) .EQ. 0)GO TO 10
- X CALL PROUT(23HPHASER CONTROL DAMAGED.,23)
- X GO TO 19
- XC--------DO CHECKS FOR HI-SPEED SHIELD CONTROL
- X 10 IF(SHLDUP .EQ. 0)GO TO 20`20
- X IF(DAMAGE(13) .EQ. 0.) GO TO 13`20
- X CALL PROUT(34HHIGH-SPEED SHIELD CONTROL DAMAGED.,34)`20
- X GO TO 19
- X 13 IF(ENERGY .GT. 200.) GO TO 16`20
- X CALL PROUT(58HINSUFFICIENT ENERGY TO ACTIVATE HIGH-SPEED SHIELD CO
- X CNTROL. ,58)
- X19`09IDOIT=0
- +-+-+-+-+-+-+-+- END OF PART 11 +-+-+-+-+-+-+-+-
-