diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm index 1bb55079dbea2..506579b492753 100644 --- a/code/datums/elements/embed.dm +++ b/code/datums/elements/embed.dm @@ -70,10 +70,10 @@ /// Checking to see if we're gonna embed into a human -/datum/element/embed/proc/checkEmbed(obj/item/weapon, mob/living/carbon/victim, hit_zone, datum/thrownthing/throwingdatum, forced=FALSE) +/datum/element/embed/proc/checkEmbed(obj/item/weapon, mob/living/carbon/victim, hit_zone, blocked, datum/thrownthing/throwingdatum, forced=FALSE) SIGNAL_HANDLER - if(!istype(victim) || HAS_TRAIT(victim, TRAIT_PIERCEIMMUNE)) + if((!forced && blocked) || !istype(victim) || HAS_TRAIT(victim, TRAIT_PIERCEIMMUNE)) return var/flying_speed = throwingdatum ? throwingdatum.speed : weapon.throw_speed diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index f31fcfaefe27c..4766ab38a1685 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -398,6 +398,11 @@ GENE SCANNER if(H.has_status_effect(STATUS_EFFECT_LING_TRANSFORMATION)) message += "\tSubject's DNA appears to be in an unstable state." + // Embedded Items + for(var/obj/item/bodypart/limb as anything in H.bodyparts) + for(var/obj/item/embed as anything in limb.embedded_objects) + message += "\tForeign object embedded in subject's [limb.name]." + // Species and body temperature if(ishuman(M)) var/mob/living/carbon/human/H = M diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index d7bdc58edd35b..785be6765635b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -91,7 +91,7 @@ var/zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest var/dtype = BRUTE var/volume = I.get_volume_by_throwforce_and_or_w_class() - var/nosell_hit = SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone, throwingdatum) // TODO: find a better way to handle hitpush and skipcatch for humans + var/nosell_hit = SEND_SIGNAL(I, COMSIG_MOVABLE_IMPACT_ZONE, src, zone, blocked, throwingdatum) // TODO: find a better way to handle hitpush and skipcatch for humans if(nosell_hit) skipcatch = TRUE hitpush = FALSE