SUBROUTINE MHOMER C C MOVE HOMING TORPEDOES C INCLUDE 'TRKCOMMON.FTN' REAL LAUNCH INTEGER SCAN,WHOM,CREW,HYPER,TORPS LOGICAL*1 THRU,XSHIP,CLOAK,CLON,FBASE BYTE MESSAG,INITLS,CHAR COMMON /TORPES/ XHOM(8,15),YHOM(8,15),TLOCS(8,15,3),TDIR(8,15) C C DO 10001 I=1,8 DO 10001 II=1,15 10008 IF (LHOM(I,II).EQ.0) GO TO 10001 IF (LHOM(I,II).LT.0) GO TO 10012 C C * CHECK TO SEE IF ACTIVE C IX=XHOM(I,II) IY=YHOM(I,II) IU=HUNI(I,II) CALL UNIV(IX,IY,CHAR,IU) IF (CHAR.NE.'^') GO TO 10014 C C * CALCULATE COURSE C D=ATAN2((YCORD(LHOM(I,II))-YHOM(I,II)),(XCORD(LHOM(I,II)) 1 -XHOM(I,II))) * 180./3.14159 IF (CLOAK(LHOM(I,II))) D=0 XX=XHOM(I,II) YY=YHOM(I,II) CALL MOVE(XX,YY,X,Y,D,10.,CHAR,IMAXX,IMAXY,IU) KX=X KY=Y IF (CHAR.EQ.'.') GO TO 10017 C C HIT SOMETHING C CALL THIT(I,KX,KY,CHAR,D,300.,IU) CALL UNIVIN(IX,IY,'.',IU) 10014 LHOM(I,II)=0 IACTRP(I)=IACTRP(I)-1 IF (IACTRP(I).LT.0) IACTRP(I)=0 GOTO 10001 C C MOVE THE TORPEDO C 10017 CALL UNIVIN(IX,IY,'.',IU) CALL UNIVIN(KX,KY,'^',IU) XHOM(I,II)=X YHOM(I,II)=Y GOTO 10001 C C * LAUNCH C 10012 LHOM(I,II)= -LHOM(I,II) IACTRP(I)=IACTRP(I)+1 XH=XCORD(I) YH=YCORD(I) D=ATAN2((YCORD(LHOM(I,II))-YH),(XCORD(LHOM(I,II)) 1 -XH)) * 180./3.14159 CALL MOVE(XH,YH,X,Y,D,10.,CHAR,IMAXX,IMAXY,IUNIV(I)) KX=X KY=Y IX=XCORD(I) IY=YCORD(I) IF (.NOT.((IX.EQ.KX).AND.(IY.EQ.KY))) GO TO 10022 CALL MOVE(X,Y,X1,Y1,D,10.,CHAR,IMAXX,IMAXY,IUNIV(I)) X=X1 Y=Y1 10022 CONTINUE KX=X KY=Y IF (CHAR.EQ.'.') GO TO 10025 CALL THIT(I,KX,KY,CHAR,D,300.,IUNIV(I)) LHOM(I,II)=0 GO TO 10001 C C DIDN'T HIT ANYTHING C 10025 CALL UNIVIN(KX,KY,'^',IUNIV(I)) XHOM(I,II)=X YHOM(I,II)=Y HUNI(I,II)=IUNIV(I) IF (CLON(I).AND..NOT.CLOAK(I).AND.IDAMGE(I,4).EQ.0) CLOAK(I)=.TRUE. C 10001 CONTINUE C RETURN END