In certain situations the arrow can be invalidated until its get_pos() is called here - e.g. when the player wears over- enchanted blast protection (65k in this case). This uses the player position for the explosion in these cases