SUBROUTINE DAMAGE(IHITER, IHITEE, EN, D) C C * CALCULATE DAMAGE DONE WHEN SHIP "IHITER" HITS "IHITEE" C WITH "EN" UNITS FROM DIRECTION "D". "D" > 360 IS A HIT FROM C BEHIND. C C COMMON PARAMETER MAXSHP = 8, MAXHOM = 4, MAXTRP = 10 COMMON/TORPE/TLOCS(MAXSHP, MAXTRP, 2), TDIR(MAXSHP, MAXTRP), IT(MA *XSHP) COMMON/TRKDAT/ENERGY(MAXSHP), SHIELD(MAXSHP), XCORD(MAXSHP), YCORD *(MAXSHP), TORPS(MAXSHP), HOLX, HOLY, HOLW, CDRAIN, NDRAIN, TDRAIN, * SCAN(MAXSHP), PHA(MAXSHP), I1, I2, HYPER(MAXSHP), ISENT(MAXSHP, 1 *0), XPOD(MAXSHP), YPOD(MAXSHP), DPOD(MAXSHP), IPODST(MAXSHP), WPOD *(MAXSHP), XHOM(MAXSHP, MAXHOM), YHOM(MAXSHP, MAXHOM), WHOM(MAXSHP, * MAXHOM), NHOM(MAXSHP), TRBEAM(MAXSHP), SCORE(MAXSHP), CREW(MAXSHP *), DIR(MAXSHP), WARP(MAXSHP), LAUNCH(MAXSHP), UNIV(100, 100), MESS *AG(480), THRU, SHPACT(MAXSHP), CLOAK(MAXSHP), NET(MAXSHP), SHPNAM( *10, MAXSHP) REAL LAUNCH, NDRAIN INTEGER*2SCAN, WHOM, CREW, HYPER, TORPS, TRBEAM LOGICAL*1THRU, SHPACT, CLOAK, NET BYTE UNIV, MESSAG BYTE SHPNAM C NOTE: BHOLE AND EMPTY ARE THE CHARACTERS FOR THE BLACK HOLE C AND EMPTY SPACE. C END COMMON SABS = MIN(SHIELD(IHITEE)/1000., 1.0) C C * CALCULATE FACTOR FOR DIRECTIONAL SHIELDING C IF (.NOT.(D .GT. 360.)) GOTO 2000 DEL = 180. GOTO 2010 2000 CONTINUE DEL = ABS(DIR(IHITEE) - D) IF (.NOT.(DEL .GT. 180.)) GOTO 2020 DEL = 360. - DEL 2020 CONTINUE 2010 CONTINUE SABS = SABS*(.5 + DEL/360.) ENERGY(IHITEE) = ENERGY(IHITEE) - (1.2 - SABS)*EN*6. SHIELD(IHITEE) = MAX(SHIELD(IHITEE) - SABS*EN, 0.0) IF (.NOT.(IHITEE .NE. IHITER)) GOTO 2040 SCORE(IHITER) = SCORE(IHITER) + EN 2040 CONTINUE IF (.NOT.(ENERGY(IHITEE) .LE. 0)) GOTO 2060 IF (.NOT.(IHITER .NE. IHITEE)) GOTO 2080 C ***alien destroyed*** CALL SENT(IHITER, 22) SCORE(IHITER) = SCORE(IHITER) + 2000. 2080 CONTINUE CALL RESET(IHITEE) 2060 CONTINUE RETURN END