using Content.Server.Objectives.Components; using Content.Shared.Anomaly.Components; using Content.Shared.Objectives.Components; namespace Content.Server.Objectives.Systems; public sealed partial class SupercriticalAnomaliesConditionSystem : EntitySystem { [Dependency] private NumberObjectiveSystem _numberObjective = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAnomalySupercrit); SubscribeLocalEvent(OnGetProgress); } private void OnAnomalySupercrit(ref AnomalyShutdownEvent args) { if (!args.Supercritical) return; var query = EntityQueryEnumerator(); while (query.MoveNext(out var comp)) { comp.SupercriticalAnomalies += 1; } } private void OnGetProgress(Entity ent, ref ObjectiveGetProgressEvent args) { var target = _numberObjective.GetTarget(ent); if (target == 0) { args.Progress = 0f; return; } args.Progress = MathF.Min((float)ent.Comp.SupercriticalAnomalies / target, 1f); } }