diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index da03c4b533..2accfe7d0d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -258,6 +258,16 @@ AM.setDir(current_dir) now_pushing = FALSE +// i wish to have a "friendly chat" with whoever made three tail variables instead of one +/mob/proc/has_tail() + return FALSE + +/mob/living/carbon/human/has_tail() + if(!dna || !dna.features) + return ..() + var/list/L = dna.features // caches list because i refuse to type it out and because performance + return (L["mam_tail"] && (L["mam_tail"] != "None")) || (L["tail_human"] && (L["tail_human"] != "None")) || (L["tail_lizard"] && (L["tail_lizard"] != "None")) + /mob/living/start_pulling(atom/movable/AM, state, force = pull_force, supress_message = FALSE) if(!AM || !src) return FALSE @@ -296,9 +306,12 @@ log_combat(src, M, "grabbed", addition="passive grab") if(!supress_message && !(iscarbon(AM) && HAS_TRAIT(src, TRAIT_STRONG_GRABBER))) - visible_message("[src] has grabbed [M][(zone_selected == "l_arm" || zone_selected == "r_arm")? " by [M.p_their()] hands":" passively"]!", - "You have grabbed [M][(zone_selected == "l_arm" || zone_selected == "r_arm")? " by [M.p_their()] hands":" passively"]!", target = M, - target_message = "[src] has grabbed you[(zone_selected == "l_arm" || zone_selected == "r_arm")? " by your hands":" passively"]!") + if((zone_selected == BODY_ZONE_PRECISE_GROIN) && has_tail() && M.has_tail()) + visible_message("[src] coils [p_their()] tail with [AM], pulling [M.p_them()] along!", "[src] has entwined [p_their()] tail with yours, pulling you along!") + else + visible_message("[src] has grabbed [M][(zone_selected == "l_arm" || zone_selected == "r_arm")? " by [M.p_their()] hands":" passively"]!", + "You have grabbed [M][(zone_selected == "l_arm" || zone_selected == "r_arm")? " by [M.p_their()] hands":" passively"]!", target = M, + target_message = "[src] has grabbed you[(zone_selected == "l_arm" || zone_selected == "r_arm")? " by your hands":" passively"]!") if(!iscarbon(src)) M.LAssailant = null else