From 68fcd1842fefd2d35d780e3c727b66f4e31f84b0 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sun, 7 Jul 2024 05:17:28 +0200 Subject: [PATCH] [MIRROR] Limits the methods through which you can be stunned by a shove. Shoves disarm people who are knocked down. (#28667) * Limits the methods through which you can be stunned by a shove. Shoves disarm people who are knocked down. (#84640) ## About The Pull Request For the sake of this PR's language, we'll be defining two different stuns; First: **wall stuns** are any stuns related to the shoving mechanic where you are pushing people into objects and other people to cause a knockdown. And, while they are in that specific knockdown, you shove them again to stun them. Second, a **shove stun** is any instance where you would be currently able to apply this stun from a shove even if the conditions above have not been met. This PR limits down the potential stuns from a shove to; **wall stuns**, and **shove stuns** following a telescoping baton knockdown or being touched by the Mansus Grasp. To know when you can stun someone with a shove, they will have this animated visual cue. ![image](https://github.com/tgstation/tgstation/assets/40847847/123a47f2-93eb-4c25-a8e7-a7ae62e33c7f) Successfully stunning, paralyzing or immobilizing the victim will remove the opportunity for a stun. You cannot apply another stun from a shove on someone for at least 3.5 seconds after the last stun was applied. The stun lasts for 3 seconds, so there is a 0.5 gap after the stun expires before another stun from a shove can be applied. This does not prevent further knockdowns or staggers. This part was added mostly to help clarify better when someone is or is not vulnerable, as well as cut down on chain stuns without some additional attacks. To make up for the loss of this advantage, shoving someone while they are in any kind of knockdown forces them to drop their held items. ## Why It's Good For The Game You may have remembered the removal of shove stuns testmerge a bit ago. [You can read a bit about it here, but I'll link specifically to my conclusions about that testmerge.](https://tgstation13.org/phpBB/viewtopic.php?p=726119#p726119) At the moment, shove stuns are very oppressive. Generally, it makes a few engagements against a variety of tools too dangerous to be worth attempting, and can often mean that a fight has already been won not from the intelligent employment of a tool, but the mere existence of one taking advantage of a very specific combination of actions. The most egregious part is that it enables an individual who knows the patterns to chain these stuns together to deny someone a chance at fighting back. Wall stunning, however, is a good equalizer that punishes people for not considering their environment, and rewards players who are. It allows the clever player to maneuver themselves just right to score a powerful reversal against even better equipped opponents, or a strong opener to allow them a chance at a successful attack. And it is a strong example of our environmental combat mechanics. Something that shove stuns in isolation is not necessarily (though it can be in some cases). Shove stuns are not exclusive to these scenarios, however. They exist as a ubiquitous means of turning any given knockdown effect into a chain of stun effects. Better equipped opponents, particularly ones with gear able to apply knockdowns, often find themselves able to readily match any opponent without having to worry about the aforementioned environmental aspect of shoving. It is all the advantages with none of the effort put in, and does play into any kind of struggle once the chain effects start to take place. We want to enable players to be able to have their big win moments against the odds. But we also don't want to be rewarding players for already being in an advantage position beyond what their gear affords them. Edit: With the new visual cue, I've allowed in a few shove stuns for equipment that somewhat needs it in order to function well. Heads of staff utilizing their telebatons are meant to be reasonably intimidating opponents, contractors absolutely need the advantage in order to successfully kidnap, and Heretics were one of the biggest sufferers during the testmerge and clearly also hinge quite a bit on the effect. ## Changelog :cl: balance: You can only stun someone with a shove if they have been shoved into objects or people, or have been hit by telescopic batons, contractor batons or the Mansus Grasp. balance: If someone is knocked to the floor, however, you can still disarm them of any object with a shove. /:cl: --------- Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> * Limits the methods through which you can be stunned by a shove. Shoves disarm people who are knocked down. --------- Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com> --- code/__DEFINES/combat.dm | 10 +- code/__DEFINES/traits/declarations.dm | 3 + code/_globalvars/traits/_traits.dm | 1 + .../status_effects/debuffs/staggered.dm | 89 ++++++++++++++++++ code/game/objects/items/melee/baton.dm | 4 + .../antagonists/heretic/magic/mansus_grasp.dm | 1 + .../mob/living/carbon/carbon_defense.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 2 + code/modules/mob/living/living_defense.dm | 8 +- icons/effects/effects.dmi | Bin 926493 -> 926435 bytes 10 files changed, 110 insertions(+), 10 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 6246e25e93b..6fc955782ce 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -163,13 +163,13 @@ DEFINE_BITFIELD(status_flags, list( #define DEFAULT_MESSAGE_RANGE 7 //Shove knockdown lengths (deciseconds) -#define SHOVE_KNOCKDOWN_SOLID 20 -#define SHOVE_KNOCKDOWN_HUMAN 20 -#define SHOVE_KNOCKDOWN_TABLE 20 +#define SHOVE_KNOCKDOWN_SOLID 2 SECONDS +#define SHOVE_KNOCKDOWN_HUMAN 2 SECONDS +#define SHOVE_KNOCKDOWN_TABLE 2 SECONDS #define SHOVE_KNOCKDOWN_COLLATERAL 1 -#define SHOVE_CHAIN_PARALYZE 30 +#define SHOVE_CHAIN_PARALYZE 3 SECONDS //Staggered slowdown, an effect caused by shoving and a few other features, such as tackling -#define STAGGERED_SLOWDOWN_LENGTH 30 +#define STAGGERED_SLOWDOWN_LENGTH 3 SECONDS #define STAGGERED_SLOWDOWN_STRENGTH 0.85 //multiplier //Shove disarming item list GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index ff73ecb3302..abe3665907e 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -563,6 +563,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Makes the player appear as their respective job in Binary Talk rather than being a 'Default Cyborg'. #define TRAIT_DISPLAY_JOB_IN_BINARY "display job in binary" +/// Trait that determines vulnerability to being stunned from a shove +#define TRAIT_STUN_ON_NEXT_SHOVE "stun on next shove" + // METABOLISMS // Various jobs on the station have historically had better reactions // to various drinks and foodstuffs. Security liking donuts is a classic diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 2cbb96c158c..860dc18e978 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -470,6 +470,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_STRONG_STOMACH" = TRAIT_STRONG_STOMACH, "TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY, "TRAIT_STUNIMMUNE" = TRAIT_STUNIMMUNE, + "TRAIT_STUN_ON_NEXT_SHOVE" = TRAIT_STUN_ON_NEXT_SHOVE, "TRAIT_STURDY_FRAME" = TRAIT_STURDY_FRAME, "TRAIT_SUCCUMB_OVERRIDE" = TRAIT_SUCCUMB_OVERRIDE, "TRAIT_SUICIDED" = TRAIT_SUICIDED, diff --git a/code/datums/status_effects/debuffs/staggered.dm b/code/datums/status_effects/debuffs/staggered.dm index 89cf4943c19..9db72e1fd06 100644 --- a/code/datums/status_effects/debuffs/staggered.dm +++ b/code/datums/status_effects/debuffs/staggered.dm @@ -1,3 +1,7 @@ +/// Staggered, Next Shove Stuns, No Side Kick +/// Status effects related to shoving effects and collisions due to shoving + +/// Staggered can occur most often via shoving, but can also occur in other places too. /datum/status_effect/staggered id = "staggered" tick_interval = 0.5 SECONDS @@ -43,3 +47,88 @@ /mob/living/proc/do_stagger_animation() animate(src, pixel_x = 4, time = 0.2 SECONDS, loop = 6, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL) animate(pixel_x = -4, time = 0.2 SECONDS, flags = ANIMATION_RELATIVE) + +/// Status effect specifically for instances where someone is vulnerable to being stunned when shoved. +/datum/status_effect/next_shove_stuns + id = "next shove stuns" + duration = 3 SECONDS + status_type = STATUS_EFFECT_UNIQUE + tick_interval = 0.5 SECONDS + alert_type = null + remove_on_fullheal = TRUE + /// Our visual cue for the vulnerable state this status effect puts us in. + var/mutable_appearance/vulnverability_overlay + +/datum/status_effect/next_shove_stuns/on_apply() + //Let's just clear this if they're dead or we can't stun them on a shove + if(owner.stat == DEAD || HAS_TRAIT(owner, TRAIT_NO_SIDE_KICK) || HAS_TRAIT(owner, TRAIT_IMMOBILIZED)) + return FALSE + RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(clear_stun_vulnverability_on_death)) + RegisterSignals(owner, list( + COMSIG_LIVING_STATUS_PARALYZE, + COMSIG_LIVING_STATUS_STUN, + COMSIG_LIVING_STATUS_IMMOBILIZE), PROC_REF(clear_stun_vulnverability) + ) + ADD_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, STATUS_EFFECT_TRAIT) + vulnverability_overlay = mutable_appearance(icon = 'icons/effects/effects.dmi', icon_state = "dazed") + owner.add_overlay(vulnverability_overlay) + return TRUE + +/datum/status_effect/next_shove_stuns/on_remove() + UnregisterSignal(owner, list( + COMSIG_LIVING_STATUS_PARALYZE, + COMSIG_LIVING_STATUS_STUN, + COMSIG_LIVING_STATUS_IMMOBILIZE, + COMSIG_LIVING_DEATH, + )) + REMOVE_TRAIT(owner, TRAIT_STUN_ON_NEXT_SHOVE, STATUS_EFFECT_TRAIT) + if(vulnverability_overlay) + clear_stun_vulnverability_overlay() + +/// If our owner is either stunned, paralzyed or immobilized, we remove the status effect. +/// This is both an anti-chainstun measure and a sanity check. +/datum/status_effect/next_shove_stuns/proc/clear_stun_vulnverability(mob/living/source, amount = 0, ignore_canstun = FALSE) + SIGNAL_HANDLER + + if(amount > 0) + // Making absolutely sure we're removing this overlay + clear_stun_vulnverability_overlay() + qdel(src) + +/datum/status_effect/next_shove_stuns/proc/clear_stun_vulnverability_on_death(mob/living/source) + SIGNAL_HANDLER + + clear_stun_vulnverability_overlay() + qdel(src) + +/// Clears our overlay where needed. +/datum/status_effect/next_shove_stuns/proc/clear_stun_vulnverability_overlay() + owner.cut_overlay(vulnverability_overlay) + vulnverability_overlay = null + +/// Status effect to prevent stuns from a shove +/// Only applied by shoving someone to paralyze them +/datum/status_effect/no_side_kick + id = "no side kick" + duration = 3.5 SECONDS + status_type = STATUS_EFFECT_UNIQUE + tick_interval = 0.5 SECONDS + alert_type = null + remove_on_fullheal = TRUE + +/datum/status_effect/no_side_kick/on_apply() + // Once again, clear if dead + if(owner.stat == DEAD) + return FALSE + RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(clear_on_death)) + ADD_TRAIT(owner, TRAIT_NO_SIDE_KICK, STATUS_EFFECT_TRAIT) + return TRUE + +/datum/status_effect/no_side_kick/on_remove() + UnregisterSignal(owner, list(COMSIG_LIVING_DEATH)) + REMOVE_TRAIT(owner, TRAIT_NO_SIDE_KICK, STATUS_EFFECT_TRAIT) + +/datum/status_effect/no_side_kick/proc/clear_on_death(mob/living/source) + SIGNAL_HANDLER + + qdel(src) diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index 05a4ebc3f8d..27909b5317e 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -339,6 +339,9 @@ ) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) +/obj/item/melee/baton/telescopic/additional_effects_non_cyborg(mob/living/target, mob/living/user) + target.apply_status_effect(/datum/status_effect/next_shove_stuns) + /obj/item/melee/baton/telescopic/suicide_act(mob/living/user) var/mob/living/carbon/human/human_user = user var/obj/item/organ/internal/brain/our_brain = human_user.get_organ_by_type(/obj/item/organ/internal/brain) @@ -401,6 +404,7 @@ return span_danger("The baton is still charging!") /obj/item/melee/baton/telescopic/contractor_baton/additional_effects_non_cyborg(mob/living/target, mob/living/user) + . = ..() target.set_jitter_if_lower(40 SECONDS) target.set_stutter_if_lower(40 SECONDS) diff --git a/code/modules/antagonists/heretic/magic/mansus_grasp.dm b/code/modules/antagonists/heretic/magic/mansus_grasp.dm index 483425f3847..803bdd3d218 100644 --- a/code/modules/antagonists/heretic/magic/mansus_grasp.dm +++ b/code/modules/antagonists/heretic/magic/mansus_grasp.dm @@ -66,6 +66,7 @@ carbon_hit.adjust_timed_status_effect(4 SECONDS, /datum/status_effect/speech/slurring/heretic) carbon_hit.AdjustKnockdown(5 SECONDS) carbon_hit.adjustStaminaLoss(80) + carbon_hit.apply_status_effect(/datum/status_effect/next_shove_stuns) return TRUE diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 30d1246f957..03056090dd4 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -742,7 +742,7 @@ /mob/living/carbon/get_shove_flags(mob/living/shover, obj/item/weapon) . = ..() . |= SHOVE_CAN_STAGGER - if(IsKnockdown() && !IsParalyzed()) + if(IsKnockdown() && !IsParalyzed() && HAS_TRAIT(src, TRAIT_STUN_ON_NEXT_SHOVE)) . |= SHOVE_CAN_KICK_SIDE if(HAS_TRAIT(src, TRAIT_NO_SIDE_KICK)) // added as an extra check, just in case . &= ~SHOVE_CAN_KICK_SIDE diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 2b03f703af0..acec80f5652 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -146,8 +146,10 @@ return if(!(shove_flags & SHOVE_KNOCKDOWN_BLOCKED)) target.Knockdown(SHOVE_KNOCKDOWN_HUMAN) + target.apply_status_effect(/datum/status_effect/next_shove_stuns) if(!HAS_TRAIT(src, TRAIT_BRAWLING_KNOCKDOWN_BLOCKED)) Knockdown(SHOVE_KNOCKDOWN_COLLATERAL) + apply_status_effect(/datum/status_effect/next_shove_stuns) target.visible_message(span_danger("[shover] shoves [target.name] into [name]!"), span_userdanger("You're shoved into [name] by [shover]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You shove [target.name] into [name]!")) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f19fd32d971..939ecab4365 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -712,6 +712,7 @@ return if((shove_flags & SHOVE_BLOCKED) && !(shove_flags & (SHOVE_KNOCKDOWN_BLOCKED|SHOVE_CAN_KICK_SIDE))) target.Knockdown(SHOVE_KNOCKDOWN_SOLID) + target.apply_status_effect(/datum/status_effect/next_shove_stuns) target.visible_message(span_danger("[name] shoves [target.name], knocking [target.p_them()] down!"), span_userdanger("You're knocked down from a shove by [name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You shove [target.name], knocking [target.p_them()] down!")) @@ -720,6 +721,7 @@ if(shove_flags & SHOVE_CAN_KICK_SIDE) //KICK HIM IN THE NUTS target.Paralyze(SHOVE_CHAIN_PARALYZE) + target.apply_status_effect(/datum/status_effect/no_side_kick) target.visible_message(span_danger("[name] kicks [target.name] onto [target.p_their()] side!"), span_userdanger("You're kicked onto your side by [name]!"), span_hear("You hear aggressive shuffling followed by a loud thud!"), COMBAT_MESSAGE_RANGE, src) to_chat(src, span_danger("You kick [target.name] onto [target.p_their()] side!")) @@ -732,10 +734,8 @@ //Take their lunch money var/target_held_item = target.get_active_held_item() var/append_message = weapon ? " with [weapon]" : "" - if(!is_type_in_typecache(target_held_item, GLOB.shove_disarming_types)) //It's too expensive we'll get caught - target_held_item = null - - if(target_held_item && target.get_timed_status_effect_duration(/datum/status_effect/staggered)) + // If it's in our typecache, they're staggered and it exists, disarm. If they're knocked down, disarm too. + if(target_held_item && target.get_timed_status_effect_duration(/datum/status_effect/staggered) && is_type_in_typecache(target_held_item, GLOB.shove_disarming_types) || target_held_item && target.body_position == LYING_DOWN) target.dropItemToGround(target_held_item) append_message = "causing [target.p_them()] to drop [target_held_item]" target.visible_message(span_danger("[target.name] drops \the [target_held_item]!"), diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 8ef1254e7448739c8ef0560c818b3736d1e2ff5e..efbe4989c64283ef6d06d8ece800afa448dfa521 100644 GIT binary patch delta 17724 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