diff --git a/code/game/dna.dm b/code/game/dna.dm
index c86fa683896..21f94b0ce29 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -563,6 +563,8 @@
else
viable_occupant = null
occupant_status += "Invalid DNA structure"
+ if (viable_occupant && viable_occupant.stat == DEAD)
+ viable_occupant = null // No editing the dead.
else
occupant_status += "No subject detected"
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index be55d92a750..b56321f9588 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -145,6 +145,8 @@
update_icon()
/obj/machinery/iv_drip/attack_hand(mob/user)
+ if (!ishuman(user))
+ return
if(attached)
visible_message("[attached] is detached from \the [src]")
attached = null
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 33308afbfc7..0d5d6fb2695 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -48,6 +48,10 @@
if(!user.IsAdvancedToolUser())
user << "You don't have the dexterity to do this!"
return
+ if(ishuman(target))
+ var/mob/living/carbon/human/humantarget = target
+ if (!humantarget.can_inject(user, 1))
+ return
add_logs(user, target, "attempted to inject", object="[name]")
if(target != user)
diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm
index 91f71dc1fe9..10ca2b4b64e 100644
--- a/code/modules/events/anomaly_bluespace.dm
+++ b/code/modules/events/anomaly_bluespace.dm
@@ -54,8 +54,8 @@
if(A.anchored) continue
var/turf/newloc = locate(A.x + x_distance, A.y + y_distance, TO.z) // calculate the new place
- if(!A.Move(newloc)) // if the atom, for some reason, can't move, FORCE them to move! :) We try Move() first to invoke any movement-related checks the atom needs to perform after moving
- A.loc = locate(A.x + x_distance, A.y + y_distance, TO.z)
+ if(!A.Move(newloc) && newloc) // if the atom, for some reason, can't move, FORCE them to move! :) We try Move() first to invoke any movement-related checks the atom needs to perform after moving
+ A.loc = newloc
spawn()
if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 8aa7647ac50..d14b746171c 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -327,7 +327,7 @@
/mob/living/carbon/human/handle_changeling()
- if(mind)
+ if(mind && hud_used)
if(mind.changeling)
mind.changeling.regenerate()
hud_used.lingchemdisplay.invisibility = 0