SUBROUTINE RFIRE C** RETURN FIRE COMMON /GENDTA/SDATA,COND(2),KLING,TMLEFT,ITORP,ENERGY,SHELDS COMMON /QUAD/IQAAD(8,8),IQX,IQY COMMON /SECT/SEC(64,64),ISX,ISY,ISX8,ISY8 COMMON /DAMAGS/IRPARS(10,2),IRAND,IRATE,IDMGD,TSTRT,GTIME TENRGY= 500. IX=ISX-3 IY=ISY-3 IF(IX .LT. 1)IX=64+IX IF(IY .LT. 1)IY=64+IY ISAVE = IY NOKNS=0 DO 600 I=1,7 IY = ISAVE DO 610 J=1,7 IF(SEC(IX,IY) .NE. '')GO TO 620 C** DIST = SQRT((IX-ISX)**2 + (IY-ISY)**2) DELX = I-4 DELY = J-4 DIST = SQRT(DELX**2 + DELY**2) IF(DIST .GT. 7.0 .OR. DIST .LE. 0.0)GO TO 620 IF(COND(1) .NE. 'DOCK')GO TO 630 TYPE *,' STARBASE SHIELDS PROTECT THE ENTERPRISE FROM' TYPE *,' KLINGON FIRE.' GO TO 999 630 AFFECT=TENRGY*(7.0 -DIST)/7 SHELDS = SHELDS - AFFECT TYPE 1006,AFFECT,IX,IY,SHELDS 1006 FORMAT(2X,F7.1,' UNIT HIT ON THE ENTERPRISE FROM SECTOR ',2I3,/, * 2X,F7.1,' UNITS LEFT TO ENTERPRISE SHIELDS') C** CHECK FOR DAMAGE INFLICTED ON THE ENTERPRISE NOKNS = NOKNS + 1 IF(SHELDS .GT. 2500.0)GO TO 620 IDMGD = 1 CALL DAMGED 620 IY=IY +1 IF(IY .EQ. 65)IY=1 610 CONTINUE IX = IX +1 IF(IX .EQ. 65)IX =1 600 CONTINUE IF(COND(1) .EQ. 'DOCK')GO TO 999 IF(NOKNS .EQ. 0)GO TO 900 COND(1) = 'RED ' COND(2) = ' ' GO TO 999 900 COND(1)='YELL' COND(2)='OW ' 999 RETURN END