home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!howland.reston.ans.net!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 [12/18]
- Date: 7 Apr 93 10:58:49 EDT
- Organization: Pembroke State University
- Lines: 433
- Message-ID: <1993Apr7.105849.1@pembvax1.pembroke.edu>
- NNTP-Posting-Host: papa.pembroke.edu
- Xref: uunet vmsnet.sources.games:654
-
- -+-+-+-+-+-+-+-+ START OF PART 12 -+-+-+-+-+-+-+-+
- X`09IF(IPOOP.EQ.0.OR.NENHERE.EQ.0)GO TO 15
- X`09CALL PROUT ('PHASERS NOT USABLE; BATTLE COMPUTER DATA FOLLOWS:',49)
- X`09GO TO 870
- X15`09IDIDIT=0
- X`09IF(IFAST.NE.0) ENERGY=ENERGY+200.0
- X`09RETURN
- X 16 ENERGY=ENERGY-200.
- X IFAST = 1`20
- XC--------READ IN AMOUNT OF ENERGY TO EXPEND ON PHASER FIRE
- X 20 CALL SCAN
- X`09POW=FNUM
- X IF(NENHERE .EQ. 0) GO TO 35`20
- X K=1`20
- X IF(KEY.EQ.IHALPHA) GOTO 23 `20
- X`09IF(KEY.EQ.IHREAL) GOTO 28
- X IF(.NOT.CROP(AITEM,2HNO)) GOTO 23`20
- X`09NO=1
- X`09CALL SCAN
- X`09POW=FNUM
- X 23 IF(KEY .EQ. IHALPHA .AND.CROP(AITEM,6HMANUAL))GO TO 90
- X IF(DAMAGE(11).NE.0)GO TO 80`20
- X IF(DAMAGE(1).NE.0) GO TO 81`20
- XC------- IS KEY EOL,AUTO OR PHAS POWER?`20
- X IF(KEY .NE. IHALPHA)GO TO 2301
- X IF(CROP(AITEM,9HAUTOMATIC))GO TO 27`20
- X GO TO 24
- XC-------- DIFFERENTIATE BETWEEN EOL AND PHASER POWER(COMMAND MODE)
- X 2301 IF(KEY .NE. IHEOL)GO TO 30
- XC------ REQUEST MANUAL OR AUTO
- X 24 CALL MANORA`20
- X CALL SCAN`20
- X`09IF(FNUM.EQ.-1.) GO TO 15
- X IF(KEY .NE. IHALPHA) GO TO 24`20
- X IF(CROP(AITEM,6HMANUAL))GO TO 90`20
- X IF( .NOT.CROP(AITEM,9HAUTOMATIC))GO TO 24
- XC-------- INFORM USER OF AVAIL ENERGY AND READ IN DESIRED PHASER POWER
- X 2409 IF(NENHERE .EQ. 0) GO TO 26`20
- X CALL CRAM(46HPHASERS LOCKED ON TARGET. ENERGY AVAILABLE = )
- X25`09CALL CRAMF(ENERGY,0,2)
- X`09CALL CREND
- X`09IF (IPOOP.EQ.0) GO TO 26
- X CALL CRAM(1H()
- X`09IREC=0
- X`09DO 29 K=1,NENHERE
- X29`09IREC=ABS(KPOWER(K))/(PHASFAC*0.9**KDIST(K))*(1.01+0.05*RANF(0))+1.
- X`091 +IREC
- X CALL CRAMI(IREC,0)
- X CALL CRAM(3H) )
- X CALL CRAM(22HUNITS TO FIRE AT ENEMY)`20
- X CALL CREND
- X 26 CALL PROMPT(15HUNITS TO FIRE: ,15)
- X 27 CALL SCAN
- X`09POW=FNUM
- X28`09KEY1=KEY
- X IF(KEY .EQ. IHEOL) GO TO 2409`20
- X 30 CALL SCAN`20
- XC*** READ IN ITM FIRST CHAR IN COMMON SCANBRF
- X`09KEY2=KEY
- X`09KEY=KEY1
- X IF(KEY2 .EQ. IHEOL)GO TO 35`20
- X`09IF(ITM.NE.1HN) GOTO 34
- X`09NO=1
- X`09GO TO 35
- X 34 CALL BEGPARD
- X GO TO 15
- X 35 IF(KEY .NE. IHREAL) GO TO 26
- X IF(POW .LT. ENERGY)GO TO 41 `20
- X CALL CRAM(18HENERGY AVAILABLE= )
- X GO TO 25
- X 41 IF(POW .GE. 5.0)GO TO 46
- X`09IF (POW.LE.0) GO TO 15
- X`09CALL PROUT (45HMINIMUM ENERGY FOR AUTOMATIC FIRE IS 5 UNITS.,45)
- X GO TO 15
- XC--------PRINT MESSAGE FOR SHIELD CONTROL, AND DECIDE IF MALFUNCTION OCCURS.
- X 42 CALL SKIP(1)
- X IF(RANF(0.).LT.0.995) GO TO 45
- XC--------SOMETHING BAD HAS HAPPENED.
- X CALL REDALRT
- X CALL SKIP(1)
- X CALL PROUT(36HSULU: "SHIELD CONTROL MALFUNCTION!" ,36) `20
- X CALL SKIP(1)
- X CALL PROUT(35HSAFETY INTERLOCK OVERRIDES PHASERS. ,35)`20
- X RETURN
- X 45 CALL PROUT(16HSHIELDS LOWERED. ,16)`20
- X GO TO IWHERE
- XC--------ALLOCATE ENERGY AMONG KLINGONS ACCORDING TO NEAREST FIRST
- XC STRATEGY AND COMPUTE HITS
- X 46 IF(IFAST .EQ. 0) GO TO 47`20
- X ASSIGN 47 TO IWHERE`20
- X GO TO 42
- X 47 ENERGY=ENERGY-POW`20
- X EXTRA=POW`20
- X IF(NENHERE.EQ. 0)GO TO 75`20
- XC--------- LOOP THAT DISTRIBUTES HITS IN AUTO MODE IS HERE.`20
- X`09EXTRA=0.0
- X`09POWREM=POW
- X DO 50 I=1,NENHERE`20
- X`09HITS(I)=0.
- X`09IF (POWREM .LE. 0.) GO TO 50
- X HITS (I)=ABS(KPOWER(I))/(PHASFAC*0.90**KDIST(I))
- X OVER=(.01+.05*RANF(0))*HITS(I)
- X`09TEMP=POWREM
- X`09POWREM=POWREM-HITS(I)-OVER
- X IF(POWREM .LE. 0.) HITS(I)=AMIN1(TEMP,HITS(I))
- X IF(POWREM .LE. 0.) OVER=0.
- X EXTRA=EXTRA+OVER
- X 50 CONTINUE
- X IF(POWREM .GT. 0.) EXTRA=EXTRA+POWREM`20
- X CALL HITEM(HITS) `20
- X IF(EXTRA.EQ.0 .OR. ALLDONE.NE.0) GO TO 200
- XC--------- INFORM OF OVERKILL.
- X75 IF(ITHERE.EQ.0) GO TO 78
- X CALL CRAM3AS
- X CALL CRAM(19HTHOLIAN WEB ABSORBS ) `20
- X IF(NENHERE.GT.0) CALL CRAM(7H EXCESS ) `20
- X CALL CRAMDMP(16H PHASER ENERGY. )`20
- X GO TO 200 `20
- X78 CALL CRAMF(EXTRA,0,2)`20
- X CALL CRAMDMP(25H EXPENDED ON EMPTY SPACE.)
- X GO TO 200`20
- XC-------- MANUAL SECTION BEGINS HERE.`20
- XC-------- INFORM OF IMPOSED MANUAL CONDITION.`20
- X 80 CALL PROUT(42HBATTLE COMPUTER DAMAGED; MANUAL FIRE ONLY.,42)`20
- X GO TO 84
- X 81 CALL SKIP(1)
- X CALL PROUT(13H---WORKING---,13)
- X CALL PROUT(27HSHORT-RANGE-SENSORS-DAMAGED,27)
- X CALL PROUT(43HINSUFFICIENT-DATA-FOR-AUTOMATIC-PHASER-FIRE,43)
- X CALL PROUT(24HMANUAL-FIRE-MUST-BE-USED,24)`20
- X CALL SKIP(1)
- X 84 CALL CRAM(18HENERGY AVAILABLE= )
- X CALL CRAMF(ENERGY-0.006,0,2)
- X CALL CREND
- XC--------- LOOP FOR DESIRED INDIVIDUAL HITS.
- X870`09K=1`20
- X 87 IF(IPOOP .EQ. 0) GO TO 88`20
- XC--------PRINT BATTLE-COMPUTER RECOMMENDATION`20
- X CALL CRAM(1H()
- X IREC=ABS(KPOWER(K))/(PHASFAC*0.9**KDIST(K))*(1.01+0.05*RANF(0))+1.
- X CALL CRAMI(IREC,0)
- X CALL CRAM(3H) )
- X 88 CALL CRAM(17HUNITS TO FIRE AT )`20
- X II=KX(K)
- X JJ=KY(K)
- X IENM=QUAD(II,JJ)
- X CALL CRAMENA(IENM,2,II,JJ)
- X`09IF(IDOIT.EQ.1)GO TO 89
- XC--------PHASERS CAN'T ACTUALLY BE FIRED - LOOP BACK FOR NEXT COMPUTER
- XC--------READOUT, OR TERMINATE IF THAT'S ALL
- X`09CALL CREND
- X`09K=K+1
- X`09IF(K.LE.NENHERE)GO TO 87
- X`09GO TO 15
- X 89 CALL CRAM(3H: )
- X CALL CRENDNO
- X 90 IF(K .EQ. 1)POW=0`20
- X CALL SCAN
- X`09HITS(K)=FNUM
- X`09IF(KEY .EQ. IHREAL)GO TO 95`20
- X`09IF (KEY.NE.IHEOL) GO TO 91
- X`09IF(K .EQ. 1) GO TO 84
- X`09GO TO 87
- XC-------- BEG PARDON UNLESS KEY IS PHASER POWER, END-OF-LINE, OR 'NO'.
- X91`09IF (ITM.NE.1HN) GO TO 34
- X`09NO=1
- X`09GO TO 90
- XC-------- IF HIT LESS THAN ZERO, ABORT PHASERS.`20
- X 95 IF(HITS(K) .LT. 0)GO TO 15
- X POW=POW+HITS(K)`20
- XC-------- IF TOTAL AMOUNT OF POWER REQUESTED IS TOO MUCH, INFORM
- XC-------- AND START OVER.`20
- X IF(POW .LT. ENERGY)GO TO 97`20
- X CALL PROUT(26HAVAILABLE ENERGY EXCEEDED.,26)`20
- X GO TO 84
- X 97 K=K+1`20
- X IF(K .LE. NENHERE) GO TO 90`20
- XC--------IF TOTAL REQUESTED IS ZERO, ABORT PHASERS
- X IF(POW .EQ. 0.0) GO TO 15`20
- X CALL SCAN`20
- X IF(KEY .NE. IHALPHA) GO TO 9701`20
- X`09IF(ITM.EQ.1HN) NO=1
- X 9701 ENERGY=ENERGY-POW`20
- X IF(IFAST .EQ. 0) GO TO 98`20
- X ASSIGN 98 TO IWHERE`20
- X GO TO 42
- XC-------- GO DELIVER THE HITS.
- X 98 CALL HITEM(HITS)
- X IDIDIT=1
- XC--------SAY SHIELDS RAISED OR MALFUNCTION, IF NECESSARY.`20
- X 200 IF(ALLDONE.NE.0) RETURN`20
- X IF(IFAST .EQ. 0) GO TO 210
- X CALL SKIP(1)
- X IF(NO.NE.0) GO TO 202`20
- X IF(RANF(0) .LT. 0.99) GO TO 205`20
- X CALL PROUT(66HSULU: "SIR, THE HIGH-SPEED SHIELD CONTROL HAS MALFU
- X CNCTIONED . . .,66)`20
- X CALL PROUT(`20
- X +51H CLICK CLICK POP . . . NO RESPONSE, SIR!" ,51) `20
- X 202 SHLDUP =0`20
- X GO TO 210`20
- X 205 CALL PROUT(15HSHIELDS RAISED.,15)
- XC--------CHECK FOR PHASER OVERHEAT
- X210`09IF(POW .LE. 1500.) RETURN
- X`09CHEKBRN=(POW-1500.)*.00038
- X IF(RANF(0.) .GT. CHEKBRN) RETURN
- XC--------DO YOU SMELL SMOKE?
- X CALL SKIP(1)
- X CALL PROUT(48HWEAPONS OFFICER SULU: "PHASERS OVERHEATED, SIR."
- X`091 ,48)
- X`09DAMAGE(3) = DAMFAC*(1.0 + RANF(0))*(1.+CHEKBRN)
- X RETURN
- X END`20
- $ CALL UNPACK TRPHASERS.FOR;1 1610966166
- $ create 'f'
- X SUBROUTINE PHOTONS
- XC
- XC`0913-JUN-79
- XC`09CORRECT 'THOLIAN DISAPPEARS' MESSAGE
- XC`09DON'T CHARGE PLAYER FOR A PLANET DESTROYED BY AN ENEMY
- XC
- X`09INCLUDE 'TREKCOM/NOLIST'
- X`09LOGICAL*1 IQUAD,ISHIP
- X`09REAL*8 AITEM
- X`09COMMON/SCANBF/KEY,AITEM
- X`09EQUIVALENCE (FNUM,AITEM),(SHIP,ISHIP)
- X DIMENSION TARG(3,2), COURSE(3)
- X REAL KP`20
- X INTEGER BOT,TOP,TOP2
- X EQUIVALENCE (CRACKS(1),HIT),(CRACKS(4),KSHOT)`20
- X EQUIVALENCE (KSTUF(1),ITHERE),(KSTUF(2),ITHX),(KSTUF(3),ITHY)`20
- X`09DATA IHDOC/'DO'/
- XC--------CHECK TORPEDO COUNT AND STATUS OF PHOTON TUBES`20
- X`09IDIDIT=1
- X`09KSHOT=0
- X IF(DAMAGE(4) .EQ. 0)GO TO 10
- X CALL PROUT(21HPHOTON TUBES DAMAGED.,21)
- X GO TO 3005
- X10 IF(TORPS .NE.0)GO TO 15`20
- X CALL PROUT(18HNO TORPEDOES LEFT.,18)`20
- X GO TO 3005
- XC--------SCAN AND MAKE SENSE OF COMMAND INPUT LINE
- X 15 CALL SCAN`20
- X`09TEMP=FNUM
- X N = TEMP + 0.5
- X IF(KEY .EQ. IHREAL) GO TO 30
- X 16 CALL CRAMI(TORPS,0)`20
- X CALL CRAMDMP(16H TORPEDOES LEFT.)`20
- X CALL PROMPT(30HNUMBER OF TORPEDOES TO FIRE: ,30)
- X GO TO 15
- X 30 IF(N .LE. 0) GO TO 3005`20
- X IF(N .LE. 3) GO TO 31`20
- X CALL PROUT(33HMAXIMUM OF 3 TORPEDOES PER BURST.,33)
- X GO TO 16
- X 3004 CALL BEGPARD
- X 3005 IDIDIT=0
- X RETURN
- X 31 IF(N .LE. TORPS) GO TO 32`20
- X GO TO 16
- XC--------ALL TORPEDOES FIRED AT SAME SPOT.
- X 3101 DO 3102 I=2,N`20
- X TARG(I,1)=TARG(1,1)`20
- X 3102 TARG(I,2)=TARG(1,2)`20
- X GO TO 36
- XC--------READ IN TARGET SECTORS`20
- X 32 DO 33 I=1,N`20
- X CALL SCAN`20
- X`09TARG(I,1)=FNUM
- X IF((I.EQ.1) .AND. (KEY.EQ.IHEOL)) GO TO 34
- X IF((I .EQ. 2) .AND. (KEY .EQ. IHEOL)) GO TO 3101`20
- X IF (KEY .NE. IHREAL) GO TO 3004`20
- X CALL SCAN`20
- X`09TARG(I,2)=FNUM
- X 33 IF (KEY .NE. IHREAL) GO TO 3004`20
- X GO TO 36
- X 34 DO 35 I=1,N`20
- X`09CALL CHEW
- X CALL CRAM (33HTARGET SECTOR FOR TORPEDO NUMBER )
- X CALL CRAMI(I,0)`20
- X`09CALL CRAM(3H: )
- X`09CALL CRENDNO
- X CALL SCAN`20
- X`09TARG(I,1)=FNUM
- X IF (KEY .NE. IHREAL) GO TO 3004`20
- X CALL SCAN`20
- X`09TARG(I,2)=FNUM
- X 35 IF( KEY .NE. IHREAL) GO TO 3004`20
- XC--------CHECK FOR INVALID TARGETS.`20
- X 36 DO 37 I=1,N`20
- X DO 37 J=1,2`20
- X TEMP = TARG(I,J)
- X`09IF(TEMP.EQ.-1.) GO TO 3005
- X 37 IF ((TEMP .LT. 0.999) .OR. (TEMP .GT. 10.001)) GO TO 3004`20
- XC--------COMPUTE COURSE FOR EACH TORPEDO.`20
- X DO 40 I=1,N`20
- X DELTX = 0.1*(TARG(I,2)-SECTY)`20
- X DELTY=0.1*(SECTX-TARG(I,1))`20
- XC--------DO NOT ALLOW ENTERPRISE TO SHOOT A TORPEDO AT ITSELF.
- X IF((DELTX .NE. 0) .OR. (DELTY .NE. 0)) GO TO 40`20
- X CALL SKIP(1)
- X CALL PROUT(41HSPOCK: "BRIDGE TO SICKBAY. DR. MC COY, ,41) `20
- X CALL PROUT(36H I RECOMMEND AN IMMEDIATE REVIEW OF,36)`20
- X CALL PROUT(41H THE CAPTAIN'S PSYCHOLOGICAL PROFILE." ,41) `20
- X GO TO 3005
- X 40 COURSE (I) = 1.90985932*ATAN2(DELTX,DELTY)
- XC--------BEGIN OUTER LOOP FOR MOVING <N> TORPEDOES
- X I=0`20
- X 50 I=I+1`20
- X IF(I .GT. N) GO TO 115
- X IF(CONDIT .NE. IHDOC ) TORPS=TORPS-1
- X J=I`20
- X`09STARTX=SECTX
- X`09STARTY=SECTY
- X R=(RANF(0)+RANF(0))*0.5 -0.5
- X IF(ABS(R) .LT. 0.49) GO TO 5709`20
- X R=(RANF(0)+1.2)*R`20
- XC-------- TORPEDO MISFIRES
- X IF(N.GT.1) GO TO 5706`20
- X CALL PROUT(21H***TORPEDO MISFIRES. ,21) `20
- X GO TO 5707
- X5706 CALL CRAM(18H***TORPEDO NUMBER )
- X CALL CRAMI(I,0)`20
- X CALL CRAMDMP(10H MISFIRES.)`20
- X IF(I . LT. N) CALL PROUT(31H REMAINDER OF BURST ABORTED. ,31)`20
- X I=N`20
- X5707 IF(RANF(0.) .GT. .200000)GO TO 5709`20
- XC------- CHECK IF MISFIRE DOES SHIP DAMAGE. IF SO DON'T GIVE TRACK.`20
- X CALL PROUT(35H***PHOTON TUBES DAMAGED BY MISFIRE.,35)
- X DAMAGE(4)=DAMFAC*(1.0+2.0*RANF(0))
- X GO TO 115`20
- X5709 IF(SHLDUP.NE.0 .OR. CONDIT.EQ.IHDOC ) R=R+0.001*SHLD*R
- X AC=COURSE(I)+0.25*R`20
- X GO TO 5710
- XC*`20
- X ENTRY KPHOTON`20
- XC*`20
- XC----------- SET FLAG FOR KLINGON `20
- XC--------ENEMY FIRES PHOTON TORPEDO`20
- X`09IX=KX(KSHOT)
- X`09IY=KY(KSHOT)
- X`09I=1
- X`09N=1
- X`09STARTX=IX
- X`09STARTY=IY
- X`09DELTX=0.1*(SECTY-STARTY)
- X`09DELTY=0.1*(STARTX-SECTX)
- X AC=1.90985932*ATAN2(DELTX,DELTY)
- X TEMP=RANF(0)-0.5
- X R=TEMP*(1.0+0.001*KPOWER(KSHOT))+RANF(0.)*TEMP `20
- X AC=AC+0.25*R
- X IQUAD=QUAD(IX,IY)`20
- X CALL CRMSENA(IQUAD,0,IX,IY)`20
- X CALL CRAMDMP(22H FIRES PHOTON TORPEDO. )`20
- XC--------CHECK FOR KLINGON MISFIRE
- X IF(ABS(TEMP) .LT. 0.45) GO TO 5710
- XC--------ENEMY TORPEDO MISFIRED. DETERMINE DAMAGE.`20
- X ANGLE=(15.0-AC)*0.5235988 `20
- X HIT=200.0 + 600.0*RANF(0)`20
- X LL=KSHOT
- X CALL PROUT(21H***TORPEDO MISFIRES! ,21)`20
- X GO TO 68
- X 5710 ANGLE=(15.0-AC)*0.5235988`20
- X IF(N .EQ. 1)GO TO 58`20
- X CALL SKIP(1)
- X CALL CRAM(25HTRACK FOR TORPEDO NUMBER )`20
- X CALL CRAMI(J,0)`20
- X 5720 CALL CRAM(6H: )`20
- X GO TO 59
- X58 CALL SKIP(1)
- X CALL CRAM(15HTORPEDO TRACK: )`20
- X59 DELTAX=-SIN(ANGLE)
- X DELTAY=COS(ANGLE)`20
- X BIGGER=AMAX1(ABS(DELTAX),ABS(DELTAY))`20
- X DELTAX=DELTAX/BIGGER
- X DELTAY=DELTAY/BIGGER
- X`09X=STARTX
- X`09Y=STARTY
- XC--------BEGIN INNER LOOP FOR MOVING A SINGLE TORPEDO`20
- X L=0`20
- X 5910 L=L+1`20
- X X=X+DELTAX
- X IX=X+0.5
- X IF(IX .LT. 1 .OR. IX .GT. 10)GO TO 105
- X Y=Y+DELTAY
- X IY=Y+0.5
- X IF(IY .LT. 1 .OR. IY .GT. 10)GO TO 105
- X IF(L .EQ. 4 .OR. L .EQ. 9)CALL CREND
- X CALL CRAMF(X,0,1)`20
- X CALL CRAM(3H - )
- X CALL CRAMF(Y,0,1)`20
- X CALL CRAM(3H )
- X IQUAD=QUAD(IX,IY)`20
- X IF(IQUAD.EQ.IHDOT) GOTO 5910 `20
- XC--------BEGIN HIT CHECKS`20
- X CALL CREND `20
- XC--------COMPUTE EXACT ANGLE TO SECTOR HIT, DISTANCE TO SECTOR HIT,`20
- XC NORMAL MISS DISTANCE, AND HIT
- X DIST=SQRT((STARTX-IX)**2 + (STARTY-IY)**2)
- X`09DELTX=0.1*(IY-STARTY)
- X`09DELTY=0.1*(STARTX-IX)
- X BULSEYE=1.90985932*ATAN2(DELTX,DELTY)`20
- X BULSEYE=(15.0-BULSEYE)*0.5235988
- X SINANG=SIN(ANGLE-BULSEYE)`20
- X DISTN=ABS(SINANG) * DIST
- X HIT=700.0+100.0*RANF(0)-1000.0*DISTN
- XC--------TEST FOR AND COPE WITH HIT ON KLINGON,ROMULAN, OR COMMANDER.`20
- X IF(IQUAD .EQ. IHK .OR. IQUAD .EQ. IHR) GO TO 62`20
- X IF(IQUAD .NE. IHC .AND. IQUAD .NE. IHS) GO TO 70
- X IF(RANF(0) .GT. 0.05) GO TO 62
- X CALL CRMSENA(IQUAD,2,IX,IY)`20
- X CALL CRAMDMP(25H USES ANTI-PHOTON DEVICE;)
- X CALL PROUT(23H TORPEDO NEUTRALIZED.,23)
- X GO TO 50
- X62 DO 65 LL=1,NENHERE
- X IF(IX.EQ.KX(LL) .AND. IY.EQ.KY(LL)) GO TO 68
- X65 CONTINUE
- X68 KP=KPOWER(LL)`20
- X KPOWER(LL)=KP-SIGN(AMIN1(ABS(KP),HIT),KP)`20
- X IF(KPOWER(LL) .NE. 0.0) GO TO 69
- X CALL DEADKL(IX,IY,IQUAD,IX,IY)
- X GO TO 50
- X 69 CALL CRMSENA(IQUAD,2,IX,IY)`20
- XC--------IF ENEMY DAMAGED BUT NOT DESTROYED, TRY TO DISPLACE HIM
- X 6901 ANG=ANGLE + 2.5*(RANF(0)-0.5)`20
- X TEMP=AMAX1(ABS(-SIN(ANG)),ABS(COS(ANG)))
- X XX=-SIN(ANG) / TEMP`20
- X YY= COS(ANG) / TEMP`20
- X JX=IX+XX+0.5
- X JY=IY+YY+0.5
- X IF(JX.LT.1 .OR. JX.GT.10 .OR. JY.LT.1 .OR. JY.GT.10) GO TO 6905`20
- X IF(QUAD(JX,JY) .NE. '@') GO TO 6903`20
- XC--------SOMEONE FALLS INTO A BLACK HOLE
- +-+-+-+-+-+-+-+- END OF PART 12 +-+-+-+-+-+-+-+-
-