You've got an identical call to M.visible_message() here. It would be better to do:

>if(silenced)
>  M << "<span class='userdanger'>You've been shot by [src] in \the [parse_zone(def_zone)]!</span>"
>else
>  if(hitsound)
>    var/volume = vol_by_damage()
>    playsound(loc, hitsound, volume, 1, -1)
>  M.visible_message(...