diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index c2c10c80758..d6f5f2e47fc 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -99,6 +99,14 @@
if(F.on)
G.toggle_gunlight()
G.visible_message("[G]'s light fades and turns off.")
+ else if(istype(I, /obj/item/clothing/head/hardhat)) //There really needs to be a better way to handle this.
+ var/obj/item/clothing/head/hardhat/hhat = I
+ if(hhat.on)
+ hhat.on = 0
+ hhat.set_light(0)
+ hhat.icon_state = "hardhat0_[hhat.item_color]"
+ hhat.item_state = "hardhat0_[hhat.item_color]"
+ hhat.visible_message("[hhat]'s light fades and turns off.")
return I.light_range
/obj/effect/proc_holder/spell/aoe_turf/veil/proc/extinguishMob(var/mob/living/H)
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 6d36129773a..eae015b09e7 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -94,6 +94,9 @@
return uses
/obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob)
+ if(!M.dna) //You know what would be nice? If the mob you're injecting has DNA, and so doesn't cause runtimes.
+ return 0
+
if(ishuman(M)) // Would've done this via species instead of type, but the basic mob doesn't have a species, go figure.
var/mob/living/carbon/human/H = M
if(H.species.flags & NO_DNA_RAD)
diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm
index 62934f3e53e..a466d62306b 100644
--- a/code/modules/mob/living/simple_animal/hostile/statue.dm
+++ b/code/modules/mob/living/simple_animal/hostile/statue.dm
@@ -174,16 +174,11 @@
/mob/living/simple_animal/hostile/statue/say()
return 0
-//Turn to dust when gibbed
-/mob/living/simple_animal/hostile/statue/gib(var/animation = 0)
- dust(animation)
-
-/mob/living/simple_animal/hostile/statue/death()
- living_mob_list -= src
- dead_mob_list += src
- if(key)
- respawnable_list += src
- gib()
+/mob/living/simple_animal/hostile/statue/death(gibbed)
+ if(!gibbed) //The looping ends here.
+ dust()
+ return
+ return ..()
//Stop attacking clientless mobs
diff --git a/code/modules/mob/living/simple_animal/vox.dm b/code/modules/mob/living/simple_animal/vox.dm
index 3929e9f8f75..e48c7f81d3d 100644
--- a/code/modules/mob/living/simple_animal/vox.dm
+++ b/code/modules/mob/living/simple_animal/vox.dm
@@ -22,15 +22,14 @@
var/amp = null
var/quills = 3
-/mob/living/simple_animal/vox/armalis/death()
-
- living_mob_list -= src
- dead_mob_list += src
- stat = DEAD
- visible_message("\red [src] shudders violently and explodes!","\red You feel your body rupture!")
- explosion(get_turf(loc), -1, -1, 3, 5)
- src.gib()
- return
+/mob/living/simple_animal/vox/armalis/death(gibbed)
+ if(!gibbed)
+ stat = DEAD
+ visible_message("[src] shudders violently and explodes!","\red You feel your body rupture!")
+ explosion(get_turf(loc), -1, -1, 3, 5)
+ gib()
+ return
+ return ..()
/mob/living/simple_animal/vox/armalis/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(O.force)
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index 3c70e86f81f..0e067d1e6f2 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ