How are you connecting the signal? Looking at the script, I assume the signal is connected through the editor. I would double check to make sure the signal goes to the right node and function. You can also connect the signal through code, if you want:
func _ready():
connect("body_entered", self, "_on_Semi_Auto_Bullet_body_entered")
(Also, I fixed the code formatting in the opening post :smile: )