using Content.Shared._CP14.MagicVision; using Content.Shared.Eye; using Robust.Shared.Timing; namespace Content.Server._CP14.MagicVision; public sealed class CP14MagicVisionSystem : CP14SharedMagicVisionSystem { [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedEyeSystem _eye = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMagicVisionToggle); SubscribeLocalEvent(OnGetVisMask); } private void OnGetVisMask(Entity ent, ref GetVisMaskEvent args) { args.VisibilityMask |= (int)VisibilityFlags.CP14MagicVision; } private void OnMagicVisionToggle(Entity ent, ref CP14MagicVisionToggleActionEvent args) { if (!HasComp(ent)) { AddComp(ent); } else { RemComp(ent); } _eye.RefreshVisibilityMask(ent.Owner); } public override void Update(float frameTime) { base.Update(frameTime); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var marker)) { if (marker.EndTime == TimeSpan.Zero) continue; if (_timing.CurTime < marker.EndTime) continue; QueueDel(uid); } } }