using Content.Server.Anomaly.Components; using Content.Shared.Anomaly.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Random; namespace Content.Server.Anomaly.Effects; public sealed class ShuffleParticlesAnomalySystem : EntitySystem { [Dependency] private readonly AnomalySystem _anomaly = default!; [Dependency] private readonly IRobustRandom _random = default!; public override void Initialize() { SubscribeLocalEvent(OnPulse); SubscribeLocalEvent(OnStartCollide); } private void OnStartCollide(Entity ent, ref StartCollideEvent args) { if (!TryComp(ent, out var anomaly)) return; if (!HasComp(args.OtherEntity)) return; if (ent.Comp.ShuffleOnParticleHit && _random.Prob(ent.Comp.Prob)) _anomaly.ShuffleParticlesEffect((ent, anomaly)); } private void OnPulse(Entity ent, ref AnomalyPulseEvent args) { if (!TryComp(ent, out var anomaly)) return; if (ent.Comp.ShuffleOnPulse && _random.Prob(ent.Comp.Prob)) { _anomaly.ShuffleParticlesEffect((ent, anomaly)); } } }