]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix incorrect source weapon in stamina damage logs (#15778)
authorChief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
Thu, 27 Apr 2023 18:56:51 +0000 (13:56 -0500)
committerGitHub <noreply@github.com>
Thu, 27 Apr 2023 18:56:51 +0000 (11:56 -0700)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Content.Server/Weapons/Melee/MeleeWeaponSystem.cs
Content.Shared/Damage/Systems/StaminaSystem.cs
Content.Shared/Weapons/Melee/Events/MeleeHitEvent.cs
Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs

index 20205ea29d410be0eddb1c49739e608867e55f41..0f0a9ad5b0c9d5f0534d2395b0db92a71da17d79 100644 (file)
@@ -55,7 +55,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
         if (!args.CanInteract || !args.CanAccess || component.HideFromExamine)
             return;
 
-        var getDamage = new MeleeHitEvent(new List<EntityUid>(), args.User, component.Damage);
+        var getDamage = new MeleeHitEvent(new List<EntityUid>(), args.User, uid, component.Damage);
         getDamage.IsHit = false;
         RaiseLocalEvent(uid, getDamage);
 
index 332bc65e60b9da6310473baa87e709502b002397..368f286d4e5777ea08f0ac36885f0e243666ad75 100644 (file)
@@ -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);
index 6810cb6dca3431cc900959868b457971f8bd7d2e..5ba2f4f0bf476d2d9afd87c8a7dc56328ca76f50 100644 (file)
@@ -44,6 +44,11 @@ public sealed class MeleeHitEvent : HandledEntityEventArgs
     /// </summary>
     public readonly EntityUid User;
 
+    /// <summary>
+    /// The melee weapon used.
+    /// </summary>
+    public readonly EntityUid Weapon;
+
     /// <summary>
     /// Check if this is true before attempting to do something during a melee attack other than changing/adding bonus damage. <br/>
     /// For example, do not spend charges unless <see cref="IsHit"/> equals true.
@@ -53,10 +58,11 @@ public sealed class MeleeHitEvent : HandledEntityEventArgs
     /// </remarks>
     public bool IsHit = true;
 
-    public MeleeHitEvent(List<EntityUid> hitEntities, EntityUid user, DamageSpecifier baseDamage)
+    public MeleeHitEvent(List<EntityUid> hitEntities, EntityUid user, EntityUid weapon, DamageSpecifier baseDamage)
     {
         HitEntities = hitEntities;
         User = user;
+        Weapon = weapon;
         BaseDamage = baseDamage;
     }
 }
index a2334ba73e4d97fe2d968516c5fd216341f32d6c..da8e23584dfd038f051ff4f6aff42f339e24aa0d 100644 (file)
@@ -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<EntityUid>(), user, damage);
+            var missEvent = new MeleeHitEvent(new List<EntityUid>(), 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<EntityUid> { ev.Target.Value }, user, damage);
+        var hitEvent = new MeleeHitEvent(new List<EntityUid> { 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<EntityUid>(), user, damage);
+            var missEvent = new MeleeHitEvent(new List<EntityUid>(), 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)