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