Fix incorrect source weapon in stamina damage logs (#15778)

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
Chief-Engineer
2023-04-27 13:56:51 -05:00
committed by GitHub
parent 4b371ae271
commit 8704707dbd
4 changed files with 13 additions and 7 deletions

View File

@@ -55,7 +55,7 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem
if (!args.CanInteract || !args.CanAccess || component.HideFromExamine) if (!args.CanInteract || !args.CanAccess || component.HideFromExamine)
return; 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; getDamage.IsHit = false;
RaiseLocalEvent(uid, getDamage); RaiseLocalEvent(uid, getDamage);

View File

@@ -194,7 +194,7 @@ public sealed class StaminaSystem : EntitySystem
foreach (var (ent, comp) in toHit) foreach (var (ent, comp) in toHit)
{ {
var oldDamage = comp.StaminaDamage; 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)) if (comp.StaminaDamage.Equals(oldDamage))
{ {
_popup.PopupEntity(Loc.GetString("stamina-resist"), ent, args.User); _popup.PopupEntity(Loc.GetString("stamina-resist"), ent, args.User);

View File

@@ -44,6 +44,11 @@ public sealed class MeleeHitEvent : HandledEntityEventArgs
/// </summary> /// </summary>
public readonly EntityUid User; public readonly EntityUid User;
/// <summary>
/// The melee weapon used.
/// </summary>
public readonly EntityUid Weapon;
/// <summary> /// <summary>
/// Check if this is true before attempting to do something during a melee attack other than changing/adding bonus damage. <br/> /// 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. /// For example, do not spend charges unless <see cref="IsHit"/> equals true.
@@ -53,10 +58,11 @@ public sealed class MeleeHitEvent : HandledEntityEventArgs
/// </remarks> /// </remarks>
public bool IsHit = true; 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; HitEntities = hitEntities;
User = user; User = user;
Weapon = weapon;
BaseDamage = baseDamage; BaseDamage = baseDamage;
} }
} }

View File

@@ -429,7 +429,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
// is when a melee weapon is examined. Misses are inferred from an // is when a melee weapon is examined. Misses are inferred from an
// empty HitEntities. // empty HitEntities.
// TODO: This needs fixing // 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); RaiseLocalEvent(meleeUid, missEvent);
Audio.PlayPredicted(component.SwingSound, meleeUid, user); Audio.PlayPredicted(component.SwingSound, meleeUid, user);
return; return;
@@ -438,7 +438,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
// Sawmill.Debug($"Melee damage is {damage.Total} out of {component.Damage.Total}"); // 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 // 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); RaiseLocalEvent(meleeUid, hitEvent);
if (hitEvent.Handled) if (hitEvent.Handled)
@@ -533,7 +533,7 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem
if (entities.Count == 0) 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); RaiseLocalEvent(meleeUid, missEvent);
Audio.PlayPredicted(component.SwingSound, meleeUid, user); 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}"); // 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 // 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); RaiseLocalEvent(meleeUid, hitEvent);
if (hitEvent.Handled) if (hitEvent.Handled)