From 0a5b85f717d6d878e23557d3009ac4041d2a6eaf Mon Sep 17 00:00:00 2001 From: wylab Date: Wed, 17 Dec 2025 02:24:01 +0100 Subject: [PATCH] feat: add RemoveStaminaDamage method for vampire healing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Port RemoveStaminaDamage from wega fork to enable proper stamina reset in vampire abilities. Enables vampires and thralls to have their stamina damage cleared during healing abilities. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../_Wega/Vampire/VampireSystem.Abilities.cs | 9 +++------ .../Damage/Systems/SharedStaminaSystem.cs | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Content.Server/_Wega/Vampire/VampireSystem.Abilities.cs b/Content.Server/_Wega/Vampire/VampireSystem.Abilities.cs index 05fadf1328..8d79b5c96f 100644 --- a/Content.Server/_Wega/Vampire/VampireSystem.Abilities.cs +++ b/Content.Server/_Wega/Vampire/VampireSystem.Abilities.cs @@ -220,8 +220,7 @@ public sealed partial class VampireSystem if (HasComp(uid)) { RemoveKnockdown(uid); - // TODO: wega fork has RemoveStaminaDamage, wylab doesn't - implement stamina reset - // _stamina.RemoveStaminaDamage(uid); + _stamina.RemoveStaminaDamage(uid); } if (component.CurrentBlood >= 200) @@ -868,8 +867,7 @@ public sealed partial class VampireSystem if (HasComp(uid)) { RemoveKnockdown(uid); - // TODO: wega fork has RemoveStaminaDamage, wylab doesn't - implement stamina reset - // _stamina.RemoveStaminaDamage(uid); + _stamina.RemoveStaminaDamage(uid); } if (component.CurrentBlood >= 200 && TryComp(uid, out var damageableComponent)) @@ -1390,8 +1388,7 @@ public sealed partial class VampireSystem if (HasComp(thrallEntity)) { RemoveKnockdown(thrallEntity); - // TODO: wega fork has RemoveStaminaDamage, wylab doesn't - implement stamina reset - // _stamina.RemoveStaminaDamage(thrallEntity.Owner); + _stamina.RemoveStaminaDamage(thrallEntity.Owner); } } diff --git a/Content.Shared/Damage/Systems/SharedStaminaSystem.cs b/Content.Shared/Damage/Systems/SharedStaminaSystem.cs index ca030d5e5d..a7fad053f2 100644 --- a/Content.Shared/Damage/Systems/SharedStaminaSystem.cs +++ b/Content.Shared/Damage/Systems/SharedStaminaSystem.cs @@ -452,6 +452,24 @@ public abstract partial class SharedStaminaSystem : EntitySystem _movementMod.TryUpdateMovementStatus(ent.Owner, status.Value, ent.Comp.StunModifierThresholds[closest]); } + // WyLab-Wega-Start + public void RemoveStaminaDamage(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + if (ent.Comp.StaminaDamage >= ent.Comp.CritThreshold) + ExitStamCrit(ent); + + ent.Comp.StaminaDamage = 0; + AdjustStatus(ent.Owner); + RemComp(ent); + _status.TryRemoveStatusEffect(ent, StaminaLow); + UpdateStaminaVisuals((ent.Owner, ent.Comp)); + Dirty(ent); + } + // WyLab-Wega-End + [Serializable, NetSerializable] public sealed class StaminaAnimationEvent(NetEntity entity) : EntityEventArgs {