using Content.Shared._DV.Psionics.Components; using Content.Shared._DV.Psionics.Events; using Content.Shared.StatusEffectNew; using Robust.Shared.Prototypes; namespace Content.Shared._DV.Psionics.Systems; public abstract partial class SharedPsionicSystem { public static readonly EntProtoId PsionicsDisabledProtoId = "StatusEffectPsionicsDisabled"; public void InitializeStatusEffects() { SubscribeLocalEvent>(OnPowerUseAttempt); SubscribeLocalEvent>(OnTargetedByPsionicPower); SubscribeLocalEvent(OnStatusEffectApplied); SubscribeLocalEvent(OnStatusEffectRemoved); SubscribeLocalEvent(OnStatusEffectApplied); SubscribeLocalEvent(OnStatusEffectRemoved); } private void OnPowerUseAttempt(Entity psionic, ref StatusEffectRelayedEvent args) { var ev = args.Args; ev.CanUsePower = false; args.Args = ev; } private void OnTargetedByPsionicPower(Entity psionic, ref StatusEffectRelayedEvent args) { var ev = args.Args; ev.IsShielded = true; args.Args = ev; } private void OnStatusEffectApplied(Entity statusEffect, ref StatusEffectAppliedEvent args) { var ev = new PsionicSuppressedEvent(args.Target); RaiseLocalEvent(args.Target, ref ev); } private void OnStatusEffectRemoved(Entity statusEffect, ref StatusEffectRemovedEvent args) { if (!CanUsePsionicAbility(args.Target)) return; var ev = new PsionicStoppedSuppressedEvent(args.Target); RaiseLocalEvent(args.Target, ref ev); } private void OnStatusEffectApplied(Entity statusEffect, ref StatusEffectAppliedEvent args) { var ev = new PsionicShieldedEvent(args.Target); RaiseLocalEvent(args.Target, ref ev); } private void OnStatusEffectRemoved(Entity statusEffect, ref StatusEffectRemovedEvent args) { if (!CanBeTargeted(args.Target, showPopup: false)) return; var ev = new PsionicStoppedShieldedEvent(args.Target); RaiseLocalEvent(args.Target, ref ev); } }