Projectile and damage events now include the origin (#19322)
This commit is contained in:
@@ -43,12 +43,12 @@ public sealed class ProjectileSystem : SharedProjectileSystem
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var ev = new ProjectileHitEvent(target);
|
var ev = new ProjectileHitEvent(component.Damage, target, component.Shooter);
|
||||||
RaiseLocalEvent(uid, ref ev);
|
RaiseLocalEvent(uid, ref ev);
|
||||||
|
|
||||||
var otherName = ToPrettyString(target);
|
var otherName = ToPrettyString(target);
|
||||||
var direction = args.OurBody.LinearVelocity.Normalized();
|
var direction = args.OurBody.LinearVelocity.Normalized();
|
||||||
var modifiedDamage = _damageableSystem.TryChangeDamage(target, component.Damage, component.IgnoreResistances, origin: component.Shooter);
|
var modifiedDamage = _damageableSystem.TryChangeDamage(target, ev.Damage, component.IgnoreResistances, origin: component.Shooter);
|
||||||
var deleted = Deleted(target);
|
var deleted = Deleted(target);
|
||||||
|
|
||||||
if (modifiedDamage is not null && EntityManager.EntityExists(component.Shooter))
|
if (modifiedDamage is not null && EntityManager.EntityExists(component.Shooter))
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ namespace Content.Shared.Damage
|
|||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
var before = new BeforeDamageChangedEvent(damage);
|
var before = new BeforeDamageChangedEvent(damage, origin);
|
||||||
RaiseLocalEvent(uid.Value, ref before);
|
RaiseLocalEvent(uid.Value, ref before);
|
||||||
|
|
||||||
if (before.Cancelled)
|
if (before.Cancelled)
|
||||||
@@ -149,7 +149,7 @@ namespace Content.Shared.Damage
|
|||||||
damage = DamageSpecifier.ApplyModifierSet(damage, modifierSet);
|
damage = DamageSpecifier.ApplyModifierSet(damage, modifierSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
var ev = new DamageModifyEvent(damage);
|
var ev = new DamageModifyEvent(damage, origin);
|
||||||
RaiseLocalEvent(uid.Value, ev);
|
RaiseLocalEvent(uid.Value, ev);
|
||||||
damage = ev.Damage;
|
damage = ev.Damage;
|
||||||
|
|
||||||
@@ -271,7 +271,7 @@ namespace Content.Shared.Damage
|
|||||||
/// Raised before damage is done, so stuff can cancel it if necessary.
|
/// Raised before damage is done, so stuff can cancel it if necessary.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ByRefEvent]
|
[ByRefEvent]
|
||||||
public record struct BeforeDamageChangedEvent(DamageSpecifier Delta, bool Cancelled=false);
|
public record struct BeforeDamageChangedEvent(DamageSpecifier Delta, EntityUid? Origin = null, bool Cancelled = false);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raised on an entity when damage is about to be dealt,
|
/// Raised on an entity when damage is about to be dealt,
|
||||||
@@ -287,11 +287,13 @@ namespace Content.Shared.Damage
|
|||||||
|
|
||||||
public readonly DamageSpecifier OriginalDamage;
|
public readonly DamageSpecifier OriginalDamage;
|
||||||
public DamageSpecifier Damage;
|
public DamageSpecifier Damage;
|
||||||
|
public EntityUid? Origin;
|
||||||
|
|
||||||
public DamageModifyEvent(DamageSpecifier damage)
|
public DamageModifyEvent(DamageSpecifier damage, EntityUid? origin = null)
|
||||||
{
|
{
|
||||||
OriginalDamage = damage;
|
OriginalDamage = damage;
|
||||||
Damage = damage;
|
Damage = damage;
|
||||||
|
Origin = origin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
using Content.Shared.Damage;
|
||||||
using Content.Shared.DoAfter;
|
using Content.Shared.DoAfter;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
using Content.Shared.Projectiles;
|
using Content.Shared.Projectiles;
|
||||||
@@ -152,13 +153,13 @@ public sealed class ImpactEffectEvent : EntityEventArgs
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raised when entity is just about to be hit with projectile but can reflect it
|
/// Raised when an entity is just about to be hit with a projectile but can reflect it
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ByRefEvent]
|
[ByRefEvent]
|
||||||
public record struct ProjectileReflectAttemptEvent(EntityUid ProjUid, ProjectileComponent Component, bool Cancelled);
|
public record struct ProjectileReflectAttemptEvent(EntityUid ProjUid, ProjectileComponent Component, bool Cancelled);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Raised when projectile hits other entity
|
/// Raised when a projectile hits an entity
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ByRefEvent]
|
[ByRefEvent]
|
||||||
public readonly record struct ProjectileHitEvent(EntityUid Target);
|
public record struct ProjectileHitEvent(DamageSpecifier Damage, EntityUid Target, EntityUid? Shooter = null);
|
||||||
|
|||||||
Reference in New Issue
Block a user