diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index cd570063a75..44985ad1a6d 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -526,8 +526,20 @@ span_notice("[target] moves to avoid being touched by you!"), ) return + var/covered_mouth = FALSE + if((target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE) && ishuman(target)) // No need to test this for now if they don't have the trait + var/mob/living/carbon/human/M = target + if(M.head) + if((M.head.body_parts_covered & FACE) || (M.head.flags_inv & HIDEFACE)) // Need to check both because a lot of items set one or the other, rather than both as you'd expect + covered_mouth = TRUE + if(M.wear_mask) + if((M.wear_mask.body_parts_covered & FACE) || (M.wear_mask.flags_inv & HIDEFACE)) + covered_mouth = TRUE + if(target.is_muzzled()) + covered_mouth = TRUE + if(H.zone_sel.selecting == BP_HEAD) - if(target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE) + if((target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE) && !covered_mouth) H.visible_message( \ span_warning("[target] reflexively bites the hand of [H] to prevent head patting!"), \ span_warning("[target] reflexively bites your hand!"), ) @@ -544,7 +556,7 @@ span_notice("[H] shakes [target]'s hand."), \ span_notice("You shake [target]'s hand."), ) else if(H.zone_sel.selecting == "mouth") - if(target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE) + if((target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE) && !covered_mouth) H.visible_message( \ span_warning("[target] reflexively bites the hand of [H] to prevent nose booping!"), \ span_warning("[target] reflexively bites your hand!"), )