SUBROUTINE MHOMER # # MOVE HOMING TORPEDOES # INCLUDE COMMON.RAT COMMON /DOLOOP/ SHIPS INTEGER SHIPS(8) BYTE CHAR LOGICAL*1 MYTORP # CALL PERM(SHIPS, I1, I2) DO I = 1, 8 [ ISHP = SHIPS(I) DO IH = 1, MAXHOM [ ITSHP = WHOM(ISHP,IH) # TARGET SHIP TO HOME ON IF (ITSHP > 0) [ # # * CHECK TO SEE IF IT'S STILL ACTIVE # XH = XHOM(ISHP,IH) YH = YHOM(ISHP,IH) IX = XH IY = YH IF (UNIV(IX,IY) == '^') [ # # * CALCULATE COURSE # CALL DIRDIS( XH, YH, XCORD(ITSHP), YCORD(ITSHP), DIREC, DIS ) CALL MOVE(XH,YH,X,Y,DIREC,10.,CHAR,UNIV,EMPTY) KX=X KY=Y IF (CHAR != EMPTY) [ IF ( !MYTORP(ISHP,KX,KY,CHAR) ) [ CALL THIT(ISHP,KX,KY,CHAR,DIREC,300.) UNIV(IX,IY)=EMPTY WHOM(ISHP,IH)=0 ] ] ELSE [ UNIV(IX,IY)=EMPTY UNIV(KX,KY)='^' XHOM(ISHP,IH)=X YHOM(ISHP,IH)=Y ] ] ELSE [ WHOM(ISHP,IH)=0 ] ] ELSE IF (ITSHP < 0) [ # # * LAUNCH AT SHIP -ITSHP # ITSHP = -ITSHP # SHIP TO HOME ON XH=XCORD(ISHP) YH=YCORD(ISHP) CALL DIRDIS( XH, YH, XCORD(ITSHP), YCORD(ITSHP), DIREC, DIS ) CALL MOVE(XH,YH,X,Y,DIREC,10.,CHAR,UNIV,EMPTY) KX=X KY=Y IX=XCORD(ISHP) IY=YCORD(ISHP) IF ((IX == KX) & (IY == KY)) [ # MAKE SURE IT MOVES OUT OF OUR SQUARE CALL MOVE(X,Y,X1,Y1,DIREC,10.,CHAR,UNIV,EMPTY) X=X1 Y=Y1 ] KX=X KY=Y IF (CHAR != EMPTY) [ IF ( !MYTORP( ISHP, KX, KY, CHAR ) ) [ CALL THIT(ISHP,KX,KY,CHAR,DIREC,300.) WHOM(ISHP,IH)=0 ] ] ELSE [ UNIV(KX,KY)='^' XHOM(ISHP,IH)=X YHOM(ISHP,IH)=Y WHOM(ISHP,IH) = ITSHP ] ] ] ] RETURN END