From: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com> Date: Thu, 27 Apr 2023 18:56:51 +0000 (-0500) Subject: Fix incorrect source weapon in stamina damage logs (#15778) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=8704707dbd7a65764795a67f538908d781cf8d45;p=space-station-14.git Fix incorrect source weapon in stamina damage logs (#15778) Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index 20205ea29d..0f0a9ad5b0 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -55,7 +55,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem if (!args.CanInteract || !args.CanAccess || component.HideFromExamine) return; - var getDamage = new MeleeHitEvent(new List(), args.User, component.Damage); + var getDamage = new MeleeHitEvent(new List(), args.User, uid, component.Damage); getDamage.IsHit = false; RaiseLocalEvent(uid, getDamage); diff --git a/Content.Shared/Damage/Systems/StaminaSystem.cs b/Content.Shared/Damage/Systems/StaminaSystem.cs index 332bc65e60..368f286d4e 100644 --- a/Content.Shared/Damage/Systems/StaminaSystem.cs +++ b/Content.Shared/Damage/Systems/StaminaSystem.cs @@ -194,7 +194,7 @@ public sealed class StaminaSystem : EntitySystem foreach (var (ent, comp) in toHit) { var oldDamage = comp.StaminaDamage; - TakeStaminaDamage(ent, damage / toHit.Count, comp, source:args.User, with:ent); + TakeStaminaDamage(ent, damage / toHit.Count, comp, source:args.User, with:args.Weapon); if (comp.StaminaDamage.Equals(oldDamage)) { _popup.PopupEntity(Loc.GetString("stamina-resist"), ent, args.User); diff --git a/Content.Shared/Weapons/Melee/Events/MeleeHitEvent.cs b/Content.Shared/Weapons/Melee/Events/MeleeHitEvent.cs index 6810cb6dca..5ba2f4f0bf 100644 --- a/Content.Shared/Weapons/Melee/Events/MeleeHitEvent.cs +++ b/Content.Shared/Weapons/Melee/Events/MeleeHitEvent.cs @@ -44,6 +44,11 @@ public sealed class MeleeHitEvent : HandledEntityEventArgs /// public readonly EntityUid User; + /// + /// The melee weapon used. + /// + public readonly EntityUid Weapon; + /// /// Check if this is true before attempting to do something during a melee attack other than changing/adding bonus damage.
/// For example, do not spend charges unless equals true. @@ -53,10 +58,11 @@ public sealed class MeleeHitEvent : HandledEntityEventArgs /// public bool IsHit = true; - public MeleeHitEvent(List hitEntities, EntityUid user, DamageSpecifier baseDamage) + public MeleeHitEvent(List hitEntities, EntityUid user, EntityUid weapon, DamageSpecifier baseDamage) { HitEntities = hitEntities; User = user; + Weapon = weapon; BaseDamage = baseDamage; } } diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index a2334ba73e..da8e23584d 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -429,7 +429,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem // is when a melee weapon is examined. Misses are inferred from an // empty HitEntities. // TODO: This needs fixing - var missEvent = new MeleeHitEvent(new List(), user, damage); + var missEvent = new MeleeHitEvent(new List(), user, meleeUid, damage); RaiseLocalEvent(meleeUid, missEvent); Audio.PlayPredicted(component.SwingSound, meleeUid, user); return; @@ -438,7 +438,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem // Sawmill.Debug($"Melee damage is {damage.Total} out of {component.Damage.Total}"); // Raise event before doing damage so we can cancel damage if the event is handled - var hitEvent = new MeleeHitEvent(new List { ev.Target.Value }, user, damage); + var hitEvent = new MeleeHitEvent(new List { ev.Target.Value }, user, meleeUid, damage); RaiseLocalEvent(meleeUid, hitEvent); if (hitEvent.Handled) @@ -533,7 +533,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem if (entities.Count == 0) { - var missEvent = new MeleeHitEvent(new List(), user, damage); + var missEvent = new MeleeHitEvent(new List(), user, meleeUid, damage); RaiseLocalEvent(meleeUid, missEvent); Audio.PlayPredicted(component.SwingSound, meleeUid, user); @@ -555,7 +555,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem // Sawmill.Debug($"Melee damage is {damage.Total} out of {component.Damage.Total}"); // Raise event before doing damage so we can cancel damage if the event is handled - var hitEvent = new MeleeHitEvent(targets, user, damage); + var hitEvent = new MeleeHitEvent(targets, user, meleeUid, damage); RaiseLocalEvent(meleeUid, hitEvent); if (hitEvent.Handled)