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