Alright. The issue is that the rotation of your character is never changing. You are mirroring its image and setting a boolean value to indicate the direction the image appears to be facing; but the rotational angle of the actor remains zero. Therefore, setting the rotation of the Shot object to that of the character does not alter the rotation of the shot. Instead of:
try this:
s.setRotation(getRotation());
s.setRotation(facingLeft ? 180 : 0);
