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))