From: Killerqu00 <47712032+Killerqu00@users.noreply.github.com> Date: Sat, 29 Mar 2025 20:09:34 +0000 (+0100) Subject: Shove down a person on uncuff if harm mode is on (#35193) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=8d7b21988bc3f247840272675d8c6676f1fb0860;p=space-station-14.git Shove down a person on uncuff if harm mode is on (#35193) * stamdamage on uncuff while buckled * pro tip * 99 -> 100 stamdmg and don't count self-uncuffs * review implementation * tip update * guidebook update * merg --- diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index a1f5ec2a1c..bdb3a50454 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Administration.Components; using Content.Shared.Administration.Logs; using Content.Shared.Alert; using Content.Shared.Buckle.Components; +using Content.Shared.CombatMode; using Content.Shared.Cuffs.Components; using Content.Shared.Database; using Content.Shared.DoAfter; @@ -53,6 +54,7 @@ namespace Content.Shared.Cuffs [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly UseDelaySystem _delay = default!; + [Dependency] private readonly SharedCombatModeSystem _combatMode = default!; public override void Initialize() { @@ -717,10 +719,31 @@ namespace Content.Shared.Cuffs } } + var shoved = false; + // if combat mode is on, shove the person. + if (_combatMode.IsInCombatMode(user) && target != user && user != null) + { + var eventArgs = new DisarmedEvent { Target = target, Source = user.Value, PushProbability = 1}; + RaiseLocalEvent(target, eventArgs); + shoved = true; + } + if (cuffable.CuffedHandCount == 0) { if (user != null) - _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-success-message"), user.Value, user.Value); + { + if (shoved) + { + _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-push-success-message", + ("otherName", Identity.Name(user.Value, EntityManager, user))), + user.Value, + user.Value); + } + else + { + _popup.PopupClient(Loc.GetString("cuffable-component-remove-cuffs-success-message"), user.Value, user.Value); + } + } if (target != user && user != null) { diff --git a/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl b/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl index a2cb6ed658..092f1d6620 100644 --- a/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl +++ b/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl @@ -8,6 +8,7 @@ cuffable-component-start-uncuffing-target-message = You start unrestraining {$ta cuffable-component-start-uncuffing-by-other-message = {$otherName} starts unrestraining you! cuffable-component-remove-cuffs-success-message = You successfully remove the restraints. +cuffable-component-remove-cuffs-push-success-message = You successfully remove the restraints and push {$otherName} down. cuffable-component-remove-cuffs-by-other-success-message = {$otherName} unrestrains your hands. cuffable-component-remove-cuffs-to-other-partial-success-message = You successfully remove the restraints. {$cuffedHandCount} of {$otherName}'s hands remain restrained. cuffable-component-remove-cuffs-by-other-partial-success-message = {$otherName} removes your restraints. {$cuffedHandCount} of your hands remain restrained. diff --git a/Resources/Locale/en-US/tips.ftl b/Resources/Locale/en-US/tips.ftl index e0e71d66da..ae43ea094a 100644 --- a/Resources/Locale/en-US/tips.ftl +++ b/Resources/Locale/en-US/tips.ftl @@ -135,3 +135,4 @@ tips-dataset-134 = You can tell if an area with firelocks up is spaced by lookin tips-dataset-135 = Instead of picking it up, you can alt-click food to eat it. This also works for mice and other creatures without hands. tips-dataset-136 = If you're trapped behind an electrified door, disable the APC or throw your ID at the door to avoid getting shocked! tips-dataset-137 = If the AI electrifies a door and you have insulated gloves, snip and mend the power wire to reset their electrification! +tips-dataset-138 = If you want to stop your prisoner from escaping from the cell right after being uncuffed, turn on combat mode while uncuffing - this will shove the prisoner down. diff --git a/Resources/ServerInfo/Guidebook/Security/Security.xml b/Resources/ServerInfo/Guidebook/Security/Security.xml index 7306e3f761..3df94c6b9b 100644 --- a/Resources/ServerInfo/Guidebook/Security/Security.xml +++ b/Resources/ServerInfo/Guidebook/Security/Security.xml @@ -15,7 +15,7 @@ They face [textlink="Syndicate Agents" link="Traitors"], [textlink="Nuclear Oper ## Gear -First we have non-lethals a step above simply telling someone to cooperate with instructions. Both the stunbaton and disabler are capable of limiting the movement of an assailant, whereas handcuffs can be applied to deny a criminal free movement and access to their hands. +First we have non-lethals a step above simply telling someone to cooperate with instructions. Both the stunbaton and disabler are capable of limiting the movement of an assailant, whereas handcuffs can be applied to deny a criminal free movement and access to their hands. Cuffs will also shove the person down if your [color=red]harm mode[/color] is active during uncuff. @@ -31,7 +31,7 @@ It is worth noting that flashes can be both used in a large area ([color=yellow] - + ## Lethals Should the situation dictate, [color=#cb0000]Security[/color] have access to laser rifles, shotguns, handguns and automatic rifles able to put down substancial fire against any who would stand against the station.