using Content.Server.Objectives.Components; using Content.Server.Terminator.Components; using Content.Shared.Mind; using Content.Shared.Objectives.Components; namespace Content.Server.Objectives.Systems; /// /// Handles copying the exterminator's target override to this objective. /// public sealed class TerminatorTargetOverrideSystem : EntitySystem { [Dependency] private readonly TargetObjectiveSystem _target = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnAssigned); } private void OnAssigned(EntityUid uid, TerminatorTargetOverrideComponent comp, ref ObjectiveAssignedEvent args) { if (args.Mind.OwnedEntity == null) { args.Cancelled = true; return; } var user = args.Mind.OwnedEntity.Value; if (!TryComp(user, out var terminator)) { args.Cancelled = true; return; } // this exterminator has a target override so set its objective target accordingly if (terminator.Target != null) _target.SetTarget(uid, terminator.Target.Value); } }