using Content.Server.Objectives.Components; using Content.Shared.Mind; using Content.Shared.Objectives.Components; namespace Content.Server.Objectives.Systems; /// /// Handles keep alive condition logic. /// public sealed class KeepAliveConditionSystem : EntitySystem { [Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly TargetObjectiveSystem _target = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnGetProgress); } private void OnGetProgress(EntityUid uid, KeepAliveConditionComponent comp, ref ObjectiveGetProgressEvent args) { if (!_target.GetTarget(uid, out var target)) return; args.Progress = GetProgress(target.Value); } private float GetProgress(EntityUid target) { if (!TryComp(target, out var mind)) return 0f; return _mind.IsCharacterDeadIc(mind) ? 0f : 1f; } }