using Content.Shared.Eye.Blinding.Components; using Content.Shared.Flash; using Content.Shared.StatusEffectNew; using Robust.Shared.Prototypes; namespace Content.Shared.Eye.Blinding.Systems; public sealed partial class BlindnessSystem : EntitySystem { public static readonly EntProtoId BlindingStatusEffect = "StatusEffectBlindness"; [Dependency] private BlindableSystem _blindableSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnApplied); SubscribeLocalEvent(OnRemoved); SubscribeLocalEvent>(OnBlindTrySee); SubscribeLocalEvent>(OnFlashAttempt); } private void OnApplied(Entity ent, ref StatusEffectAppliedEvent args) { _blindableSystem.UpdateIsBlind(args.Target); } private void OnRemoved(Entity ent, ref StatusEffectRemovedEvent args) { _blindableSystem.UpdateIsBlind(args.Target); } private void OnBlindTrySee(Entity ent, ref StatusEffectRelayedEvent args) { var ev = args.Args; ev.Cancel(); args.Args = ev; } private void OnFlashAttempt(Entity ent, ref StatusEffectRelayedEvent args) { var ev = args.Args; ev.Cancelled = true; args.Args = ev; } }