A better way to check for collisions I think with your arrow is the following. Don't set the collision type for your arrows. Instead do this:
Prior to moving the arrow each frame record the oldx,oldy,oldz positions.
After moving store the newx,newy,newz positions.
Do a line pick from the oldx,oldy,oldz to the newx,newy,newz.eg WhichTargetHit=LinePick(oldx,oldy,oldz,newx-oldx,newy-oldy,newz-oldz),
then go through your list of enemies and see if their entityhandle equals the "whichtargethit" value you have just stored.
Prior to moving the arrow each frame record the oldx,oldy,oldz positions.
After moving store the newx,newy,newz positions.
Do a line pick from the oldx,oldy,oldz to the newx,newy,newz.eg WhichTargetHit=LinePick(oldx,oldy,oldz,newx-oldx,newy-oldy,newz-oldz),
then go through your list of enemies and see if their entityhandle equals the "whichtargethit" value you have just stored.