they dont need a muzzlepoint though since the isMelee/firefromeyevector/whatever parameter in the image allows melee projectiles to spawn from the front of the player rather than from the muzzlepoint
For example, the default gun's shapeBaseImageData(gunImage) is not a melee (
melee = false;), as it actually shoots from the muzzle point.
When you have a melee weapon, you need to do
correctMuzzleVector = false; because when you fire from a point offset from the eye, this handy boolean adjusts the muzzle vector to point to the eye LOS point. Turning it false changes it so that it isn't adjusted.