	SUBROUTINE HITCHECK(I)
C Routine to check if a bullet has hit any target
	IMPLICIT REAL*8 (A-Z)
	INCLUDE 'ARRAYS.INC/NOLIST'
	INTEGER*4 I,IX,IY
	LOGICAL*1 HIT
	BYTE OBJECT
C
C Get bullet's current coordinates, and see what character is on
C the screen at that location
C
	IX = BU_ARY(B_XLOC,I)
	IY = BU_ARY(B_YLOC,I)
	OBJECT = SCREEN_ARY(IX,IY,POINT_NEW)
	IF(OBJECT.NE.' ') THEN
C Something was hit - find out what - possibilities are a
C barrier, a millipede segment, or a special target - then
C call the routine to handle a hit on that object
	  HIT = .TRUE.
	  IF(OBJECT.EQ.CHAR_BARR) THEN
	    CALL HITBARR(IX,IY)
	  ELSEIF(OBJECT.EQ.CHAR_SEG) THEN
	    CALL HITMILLI(IX,IY)
	  ELSEIF(OBJECT.EQ.TARG_CHAR(TARG_IDX)) THEN
	    IF(TARG_ACTIVE) THEN
	      CALL HITTARG
	    ELSE
C A special target was hit when no special target was active - this is a bug
	      UNDO_CODE = U_BUGCHECK4
	    ENDIF
	  ELSE
C When a bullet is initially fired, it will 'hit' the gun - this should not
C be a real hit, so take care of it here
	    HIT = .FALSE.
	  ENDIF
	  IF (HIT) THEN
C The bullet hit something - the bullet ceases to exist
	    BU_ARY(B_XLOC,I) = 0
	  ENDIF
	ENDIF
	RETURN
	END
