diff --git a/Content.Client/SSDIndicator/SSDIndicatorSystem.cs b/Content.Client/SSDIndicator/SSDIndicatorSystem.cs index f30d565061..587450a2f6 100644 --- a/Content.Client/SSDIndicator/SSDIndicatorSystem.cs +++ b/Content.Client/SSDIndicator/SSDIndicatorSystem.cs @@ -1,4 +1,7 @@ using Content.Shared.CCVar; +using Content.Shared.Mind.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.NPC; using Content.Shared.SSDIndicator; using Content.Shared.StatusIcon; using Content.Shared.StatusIcon.Components; @@ -14,6 +17,7 @@ public sealed class SSDIndicatorSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; public override void Initialize() { @@ -24,11 +28,15 @@ public sealed class SSDIndicatorSystem : EntitySystem private void OnGetStatusIcon(EntityUid uid, SSDIndicatorComponent component, ref GetStatusIconsEvent args) { - if (!component.IsSSD || - !_cfg.GetCVar(CCVars.ICShowSSDIndicator) || - args.InContainer) - return; - - args.StatusIcons.Add(_prototype.Index(component.Icon)); + if (component.IsSSD && + _cfg.GetCVar(CCVars.ICShowSSDIndicator) && + !args.InContainer && + !_mobState.IsDead(uid) && + !HasComp(uid) && + TryComp(uid, out var mindContainer) && + mindContainer.ShowExamineInfo) + { + args.StatusIcons.Add(_prototype.Index(component.Icon)); + } } } diff --git a/Content.Shared/SSDIndicator/SSDIndicatorComponent.cs b/Content.Shared/SSDIndicator/SSDIndicatorComponent.cs index 53e1f6a140..66310505a1 100644 --- a/Content.Shared/SSDIndicator/SSDIndicatorComponent.cs +++ b/Content.Shared/SSDIndicator/SSDIndicatorComponent.cs @@ -13,7 +13,7 @@ public sealed partial class SSDIndicatorComponent : Component { [ViewVariables(VVAccess.ReadWrite)] [AutoNetworkedField] - public bool IsSSD = false; + public bool IsSSD = true; [ViewVariables(VVAccess.ReadWrite)] [DataField("icon", customTypeSerializer: typeof(PrototypeIdSerializer))] diff --git a/Content.Shared/SSDIndicator/SSDIndicatorSystem.cs b/Content.Shared/SSDIndicator/SSDIndicatorSystem.cs index 4fe726113a..7fc13d161e 100644 --- a/Content.Shared/SSDIndicator/SSDIndicatorSystem.cs +++ b/Content.Shared/SSDIndicator/SSDIndicatorSystem.cs @@ -1,5 +1,4 @@ -using Content.Shared.Mind.Components; -using Content.Shared.NPC; +using Robust.Shared.Player; namespace Content.Shared.SSDIndicator; @@ -10,30 +9,18 @@ public sealed class SSDIndicatorSystem : EntitySystem { public override void Initialize() { - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnMindAdded); - SubscribeLocalEvent(OnMindRemoved); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); } - private void OnInit(EntityUid uid, SSDIndicatorComponent component, ComponentInit args) - { - if (HasComp(uid)) - return; - - component.IsSSD = !HasComp(uid); - } - - private void OnMindAdded(EntityUid uid, SSDIndicatorComponent component, MindAddedMessage args) + private void OnPlayerAttached(EntityUid uid, SSDIndicatorComponent component, PlayerAttachedEvent args) { component.IsSSD = false; Dirty(uid, component); } - private void OnMindRemoved(EntityUid uid, SSDIndicatorComponent component, MindRemovedMessage args) + private void OnPlayerDetached(EntityUid uid, SSDIndicatorComponent component, PlayerDetachedEvent args) { - if (HasComp(uid)) - return; - component.IsSSD = true; Dirty(uid, component); }