Fix incorrect source weapon in stamina damage logs (#15778)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user