using Content.Shared.Damage; using Content.Shared.Trigger.Components.Effects; namespace Content.Shared.Trigger.Systems; public sealed class DamageOnTriggerSystem : XOnTriggerSystem { [Dependency] private readonly DamageableSystem _damageableSystem = default!; protected override void OnTrigger(Entity ent, EntityUid target, ref TriggerEvent args) { var damage = new DamageSpecifier(ent.Comp.Damage); var ev = new BeforeDamageOnTriggerEvent(damage, target); RaiseLocalEvent(ent.Owner, ref ev); args.Handled |= _damageableSystem.TryChangeDamage(target, ev.Damage, ent.Comp.IgnoreResistances, origin: ent.Owner) is not null; } } /// /// Raised on an entity before it deals damage using DamageOnTriggerComponent. /// Used to modify the damage that will be dealt. /// [ByRefEvent] public record struct BeforeDamageOnTriggerEvent(DamageSpecifier Damage, EntityUid Tripper);