using Content.Server.Atmos.EntitySystems; using Content.Shared.Trigger; using Content.Shared.Trigger.Components.Effects; namespace Content.Server.Trigger.Systems; /// /// Trigger system for adding or removing fire stacks from an entity with . /// /// public sealed class FireStackOnTriggerSystem : EntitySystem { [Dependency] private readonly FlammableSystem _flame = default!; /// public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnTriggerFlame); SubscribeLocalEvent(OnTriggerExtinguish); } private void OnTriggerFlame(Entity ent, ref TriggerEvent args) { if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key)) return; var target = ent.Comp.TargetUser ? args.User : ent.Owner; if (target == null) return; _flame.AdjustFireStacks(target.Value, ent.Comp.FireStacks, ignite: ent.Comp.DoIgnite); args.Handled = true; } private void OnTriggerExtinguish(Entity ent, ref TriggerEvent args) { if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key)) return; var target = ent.Comp.TargetUser ? args.User : ent.Owner; if (target == null) return; _flame.Extinguish(target.Value); args.Handled = true; } }