@@ -4,51 +4,44 @@ using Content.Server.Popups;
|
||||
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))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user