diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm
index 1134f310aa..0f5cd7039c 100644
--- a/code/datums/components/tackle.dm
+++ b/code/datums/components/tackle.dm
@@ -98,10 +98,11 @@
RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/checkObstacle)
playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1)
+ var/leap_word = isfelinid(user) ? "pounce" : "leap" ///If cat, "pounce" instead of "leap".
if(can_see(user, A, 7))
- user.visible_message("[user] leaps at [A]!", "You leap at [A]!")
+ user.visible_message("[user] [leap_word]s at [A]!", "You [leap_word] at [A]!")
else
- user.visible_message("[user] leaps!", "You leap!")
+ user.visible_message("[user] [leap_word]s!", "You [leap_word]!")
if(get_dist(user, A) < min_distance)
A = get_ranged_target_turf(user, get_dir(user, A), min_distance) //TODO: this only works in cardinals/diagonals, make it work with in-betweens too!
@@ -143,14 +144,18 @@
return
var/mob/living/carbon/target = hit
+ var/mob/living/carbon/human/T = target
+ var/mob/living/carbon/human/S = user
+ var/tackle_word = isfelinid(user) ? "pounce" : "tackle" ///If cat, "pounce" instead of "tackle".
var/roll = rollTackle(target)
user.tackling = FALSE
switch(roll)
if(-INFINITY to -5)
- user.visible_message("[user] botches [user.p_their()] tackle and slams [user.p_their()] head into [target], knocking [user.p_them()]self silly!", "You botch your tackle and slam your head into [target], knocking yourself silly!", target)
- to_chat(target, "[user] botches [user.p_their()] tackle and slams [user.p_their()] head into you, knocking [user.p_them()]self silly!")
+ user.visible_message("[user] botches [user.p_their()] [tackle_word] and slams [user.p_their()] head into [target], knocking [user.p_them()]self silly!", "You botch your [tackle_word] and slam your head into [target], knocking yourself silly!", target)
+ to_chat(target, "[user] botches [user.p_their()] [tackle_word] and slams [user.p_their()] head into you, knocking [user.p_them()]self silly!")
+
user.Paralyze(30)
var/obj/item/bodypart/head/hed = user.get_bodypart(BODY_ZONE_HEAD)
if(hed)
@@ -158,30 +163,34 @@
user.gain_trauma(/datum/brain_trauma/mild/concussion)
if(-4 to -2) // glancing blow at best
- user.visible_message("[user] lands a weak tackle on [target], briefly knocking [target.p_them()] off-balance!", "You land a weak tackle on [target], briefly knocking [target.p_them()] off-balance!", target)
- to_chat(target, "[user] lands a weak tackle on you, briefly knocking you off-balance!")
+ user.visible_message("[user] lands a weak [tackle_word] on [target], briefly knocking [target.p_them()] off-balance!", "You land a weak [tackle_word] on [target], briefly knocking [target.p_them()] off-balance!", target)
+ to_chat(target, "[user] lands a weak [tackle_word] on you, briefly knocking you off-balance!")
+
user.Knockdown(30)
target.apply_status_effect(STATUS_EFFECT_TASED_WEAK, 6 SECONDS)
if(-1 to 0) // decent hit, both parties are about equally inconvenienced
- user.visible_message("[user] lands a passable tackle on [target], sending them both tumbling!", "You land a passable tackle on [target], sending you both tumbling!", target)
- to_chat(target, "[user] lands a passable tackle on you, sending you both tumbling!")
+ user.visible_message("[user] lands a passable [tackle_word] on [target], sending them both tumbling!", "You land a passable [tackle_word] on [target], sending you both tumbling!", target)
+ to_chat(target, "[user] lands a passable [tackle_word] on you, sending you both tumbling!")
+
target.adjustStaminaLoss(stamina_cost)
target.Paralyze(5)
user.Knockdown(20)
target.Knockdown(25)
if(1 to 2) // solid hit, tackler has a slight advantage
- user.visible_message("[user] lands a solid tackle on [target], knocking them both down hard!", "You land a solid tackle on [target], knocking you both down hard!", target)
- to_chat(target, "[user] lands a solid tackle on you, knocking you both down hard!")
+ user.visible_message("[user] lands a solid [tackle_word] on [target], knocking them both down hard!", "You land a solid [tackle_word] on [target], knocking you both down hard!", target)
+ to_chat(target, "[user] lands a solid [tackle_word] on you, knocking you both down hard!")
+
target.adjustStaminaLoss(30)
target.Paralyze(5)
user.Knockdown(10)
target.Knockdown(20)
if(3 to 4) // really good hit, the target is definitely worse off here. Without positive modifiers, this is as good a tackle as you can land
- user.visible_message("[user] lands an expert tackle on [target], knocking [target.p_them()] down hard while landing on [user.p_their()] feet with a passive grip!", "You land an expert tackle on [target], knocking [target.p_them()] down hard while landing on your feet with a passive grip!", target)
- to_chat(target, "[user] lands an expert tackle on you, knocking you down hard and maintaining a passive grab!")
+ user.visible_message("[user] lands an expert [tackle_word] on [target], knocking [target.p_them()] down hard while landing on [user.p_their()] feet with a passive grip!", "You land an expert [tackle_word] on [target], knocking [target.p_them()] down hard while landing on your feet with a passive grip!", target)
+ to_chat(target, "[user] lands an expert [tackle_word] on you, knocking you down hard and maintaining a passive grab!")
+
user.SetKnockdown(0)
user.set_resting(FALSE, TRUE, FALSE)
user.forceMove(get_turf(target))
@@ -192,8 +201,9 @@
target.grabbedby(user)
if(5 to INFINITY) // absolutely BODIED
- user.visible_message("[user] lands a monster tackle on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", "You land a monster tackle on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", target)
- to_chat(target, "[user] lands a monster tackle on you, knocking you senseless and aggressively pinning you!")
+ user.visible_message("[user] lands a monster [tackle_word] on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", "You land a monster [tackle_word] on [target], knocking [target.p_them()] senseless and applying an aggressive pin!", target)
+ to_chat(target, "[user] lands a monster [tackle_word] on you, knocking you senseless and aggressively pinning you!")
+
user.SetKnockdown(0)
user.set_resting(FALSE, TRUE, FALSE)
user.forceMove(get_turf(target))