refinement: abstract shot for more weapons.