diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 1ab1a779e6814..f802a3dfd3919 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -156,9 +156,10 @@ span_userdanger("[src] leaps at your face!")) // probiscis-blocker handling - if(target.is_mouth_covered(ITEM_SLOT_HEAD)) - target.visible_message(span_danger("[src] smashes against [target]'s [target.head]!"), \ - span_userdanger("[src] smashes against your [target.head]!")) + var/obj/item/blocking_item = target.is_mouth_covered(ITEM_SLOT_HEAD) + if(blocking_item) + target.visible_message(span_danger("[src] smashes against [target]'s [blocking_item]!"), \ + span_userdanger("[src] smashes against your [blocking_item]!")) Die() return FALSE diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 760cd1c6bddd3..b7cd8a6845760 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -27,34 +27,35 @@ else . += E.bang_protect -/mob/living/carbon/is_mouth_covered(check_flags = ALL) - if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & HEADCOVERSMOUTH)) - return head - if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) - return wear_mask - +/mob/living/carbon/proc/check_equipment_cover_flags(flags = NONE) + for(var/obj/item/thing in get_equipped_items()) + if(thing.flags_cover & flags) + return thing return null -/mob/living/carbon/is_eyes_covered(check_flags = ALL) - if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & HEADCOVERSEYES)) - return head - if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & MASKCOVERSEYES)) - return wear_mask - if((check_flags & ITEM_SLOT_EYES) && glasses && (glasses.flags_cover & GLASSESCOVERSEYES)) - return glasses +/mob/living/carbon/is_mouth_covered(check_flags = ALL) + var/needed_coverage = NONE + if(check_flags & ITEM_SLOT_HEAD) + needed_coverage |= HEADCOVERSMOUTH + if(check_flags & ITEM_SLOT_MASK) + needed_coverage |= MASKCOVERSMOUTH + return check_equipment_cover_flags(needed_coverage) - return null +/mob/living/carbon/is_eyes_covered(check_flags = ALL) + var/needed_coverage = NONE + if(check_flags & ITEM_SLOT_HEAD) + needed_coverage |= HEADCOVERSEYES + if(check_flags & ITEM_SLOT_MASK) + needed_coverage |= MASKCOVERSEYES + if(check_flags & ITEM_SLOT_EYES) + needed_coverage |= GLASSESCOVERSEYES + return check_equipment_cover_flags(needed_coverage) /mob/living/carbon/is_pepper_proof(check_flags = ALL) var/obj/item/organ/internal/eyes/eyes = get_organ_by_type(/obj/item/organ/internal/eyes) - if(eyes && eyes.pepperspray_protect) + if(eyes?.pepperspray_protect) return eyes - if((check_flags & ITEM_SLOT_HEAD) && head && (head.flags_cover & PEPPERPROOF)) - return head - if((check_flags & ITEM_SLOT_MASK) && wear_mask && (wear_mask.flags_cover & PEPPERPROOF)) - return wear_mask - - return null + return check_equipment_cover_flags(PEPPERPROOF) /mob/living/carbon/check_projectile_dismemberment(obj/projectile/P, def_zone) var/obj/item/bodypart/affecting = get_bodypart(def_zone)