SUBROUTINE ZAP INCLUDE 'TREK.COM/-LI' INCLUDE 'TREK2.COM/-LI' INTEGER CDAM(5) EQUIVALENCE (CRACKS(1),HIT),(CRACKS(3),IHURT),(CRACKS(4),L) PFAC=1.0/INSHLD CHGFAC=1.0 IF(SHLDCH .EQ. 1) CHGFAC=0.25+0.50*RANF(0) IF(SHLDUP .EQ. 0 .AND. SHLDCH .EQ. 0) GO TO 10 PROPOR=AMAX1(PFAC*SHLD,0.10) HITSH=PROPOR*CHGFAC*HIT+1.0 ABSORB=0.8*HITSH IF(ABSORB .GT. SHLD) ABSORB=SHLD SHLD=SHLD-ABSORB IF(SHLD .LE. 0.0) SHLDUP=0 HIT=HIT-HITSH IF(PROPOR .GT. 0.1 .AND. HIT .LT. (0.005*ENERGY)) RETURN C--------IT'S A HIT! PRINT OUT HIT SIZE 10 IHURT=1 CALL CRAMF(HIT,8,2) CALL CRAM(9H UNIT HIT) IF(L .EQ. 0) GO TO 15 CALL CRAM(6H FROM ) JX=KX(L) JY=KY(L) CALL CRMENA(QUAD(JX,JY),0,JX,JY) 15 CALL CREND C--------DECIDE IF HIT IS CRITICAL IF(HIT .LT. (275.0-25.0*SKILL)*(1.0+0.5*RANF(0))) GO TO 60 NCRIT=1.0 + HIT/(500.0+100.0*RANF(0)) CALL CRAM(17H***CRITICAL HIT--) C--------SELECT DEVICE(S) AND CAUSE DAMAGE KTR=1 DO 50 LL=1,NCRIT 20 J=NDEVIC*RANF(0)+1.0 IF(DAMAGE(J) .LT. 0) GO TO 20 C*--------CHEAT TO PREVENT DEATHRAY FROM BEING DAMAGED. IF(J.EQ.14) GOTO 20 C--------CHEAT TO PREVENT SHUTTLE DAMAGE UNLESS ON SHIP. IF((J .EQ. 10) .AND. (ISCRFT .NE. 1)) GO TO 20 CDAM(LL)=J XTRADM=(HIT*DAMFAC)/(NCRIT*(75.0+25.0*RANF(0))) DAMAGE(J)=DAMAGE(J)+XTRADM IF(LL .EQ. 1) GO TO 40 DO 30 LLL=2,LL IF(J .EQ. CDAM(LLL-1)) GO TO 50 30 CONTINUE KTR=KTR+1 IF(KTR .EQ. 3) CALL CREND CALL CRAM(5H AND ) 40 CALL CRAMS(DEVICE(1,J),16) 50 CONTINUE CALL CRMDMP(9H DAMAGED.) C--------PRINT MESSAGE IF SHIELDS WERE UP AND GOT KNOCKED DOWN IF(DAMAGE(8) .EQ. 0) GO TO 60 IF(SHLDUP.NE.0) CALL PROUT(24H***SHIELDS KNOCKED DOWN.,24) SHLDUP=0 60 ENERGY=ENERGY-HIT RETURN END