using Content.Server.Roles;
using Content.Shared.Database;
using Content.Shared.Implants;
-using Content.Shared.Implants.Components;
using Content.Shared.Mindshield.Components;
using Content.Shared.Revolutionary.Components;
-using Content.Shared.Tag;
using Robust.Shared.Containers;
namespace Content.Server.Mindshield;
/// <summary>
-/// System used for checking if the implanted is a Rev or Head Rev.
+/// System used for adding or removing components with a mindshield implant
+/// as well as checking if the implanted is a Rev or Head Rev.
/// </summary>
public sealed class MindShieldSystem : EntitySystem
{
[Dependency] private readonly IAdminLogManager _adminLogManager = default!;
[Dependency] private readonly RoleSystem _roleSystem = default!;
[Dependency] private readonly MindSystem _mindSystem = default!;
- [Dependency] private readonly TagSystem _tag = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
- [ValidatePrototypeId<TagPrototype>]
- public const string MindShieldTag = "MindShield";
-
public override void Initialize()
{
base.Initialize();
- SubscribeLocalEvent<SubdermalImplantComponent, ImplantImplantedEvent>(ImplantCheck);
+
+ SubscribeLocalEvent<MindShieldImplantComponent, ImplantImplantedEvent>(OnImplantImplanted);
SubscribeLocalEvent<MindShieldImplantComponent, EntGotRemovedFromContainerMessage>(OnImplantDraw);
}
- /// <summary>
- /// Checks if the implant was a mindshield or not
- /// </summary>
- public void ImplantCheck(EntityUid uid, SubdermalImplantComponent comp, ref ImplantImplantedEvent ev)
+ private void OnImplantImplanted(Entity<MindShieldImplantComponent> ent, ref ImplantImplantedEvent ev)
{
- if (_tag.HasTag(ev.Implant, MindShieldTag) && ev.Implanted != null)
- {
- EnsureComp<MindShieldComponent>(ev.Implanted.Value);
- MindShieldRemovalCheck(ev.Implanted.Value, ev.Implant);
- }
+ if (ev.Implanted == null)
+ return;
+
+ EnsureComp<MindShieldComponent>(ev.Implanted.Value);
+ MindShieldRemovalCheck(ev.Implanted.Value, ev.Implant);
}
/// <summary>
/// Checks if the implanted person was a Rev or Head Rev and remove role or destroy mindshield respectively.
/// </summary>
- public void MindShieldRemovalCheck(EntityUid implanted, EntityUid implant)
+ private void MindShieldRemovalCheck(EntityUid implanted, EntityUid implant)
{
if (HasComp<HeadRevolutionaryComponent>(implanted))
{