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