From b53f10fbb268bb1cdd7e3a2256cd8cc424485cd3 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Wed, 11 Oct 2023 15:14:00 -0700 Subject: [PATCH] Fix not removing RevolutionaryRoleComponent from minds on mindshield application (#20832) * Fix not removing RevolutionaryRoleComponent from minds on mindshield application * Simplify other part of the mindshield code * Fix being able to mindshield head revs * Other way around --- Content.Server/Mindshield/MindShieldSystem.cs | 33 ++++++++++--------- .../SharedRevolutionarySystem.cs | 14 ++++---- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/Content.Server/Mindshield/MindShieldSystem.cs b/Content.Server/Mindshield/MindShieldSystem.cs index 714055bd94..bfca6c008e 100644 --- a/Content.Server/Mindshield/MindShieldSystem.cs +++ b/Content.Server/Mindshield/MindShieldSystem.cs @@ -1,13 +1,13 @@ -using Content.Shared.Mindshield.Components; -using Content.Shared.Revolutionary.Components; -using Content.Server.Popups; -using Content.Shared.Database; using Content.Server.Administration.Logs; using Content.Server.Mind; -using Content.Shared.Implants; -using Content.Shared.Tag; +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; namespace Content.Server.Mindshield; @@ -39,25 +39,26 @@ public sealed class MindShieldSystem : EntitySystem if (_tag.HasTag(ev.Implant, MindShieldTag) && ev.Implanted != null) { EnsureComp(ev.Implanted.Value); - MindShieldRemovalCheck(ev.Implanted, ev.Implant); + MindShieldRemovalCheck(ev.Implanted.Value, ev.Implant); } } /// /// Checks if the implanted person was a Rev or Head Rev and remove role or destroy mindshield respectively. /// - public void MindShieldRemovalCheck(EntityUid? implanted, EntityUid implant) + public void MindShieldRemovalCheck(EntityUid implanted, EntityUid implant) { - if (HasComp(implanted) && !HasComp(implanted)) + if (HasComp(implanted)) { - _mindSystem.TryGetMind(implanted.Value, out var mindId, out _); - _adminLogManager.Add(LogType.Mind, LogImpact.Medium, $"{ToPrettyString(implanted.Value)} was deconverted due to being implanted with a Mindshield."); - _roleSystem.MindTryRemoveRole(mindId); - } - else if (HasComp(implanted)) - { - _popupSystem.PopupEntity(Loc.GetString("head-rev-break-mindshield"), implanted.Value); + _popupSystem.PopupEntity(Loc.GetString("head-rev-break-mindshield"), implanted); QueueDel(implant); + return; + } + + if (_mindSystem.TryGetMind(implanted, out var mindId, out _) && + _roleSystem.MindTryRemoveRole(mindId)) + { + _adminLogManager.Add(LogType.Mind, LogImpact.Medium, $"{ToPrettyString(implanted)} was deconverted due to being implanted with a Mindshield."); } } } diff --git a/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs b/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs index e2a8192716..1399b116e0 100644 --- a/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs +++ b/Content.Shared/Revolutionary/SharedRevolutionarySystem.cs @@ -1,7 +1,7 @@ -using Content.Shared.Revolutionary.Components; using Content.Shared.IdentityManagement; using Content.Shared.Mindshield.Components; using Content.Shared.Popups; +using Content.Shared.Revolutionary.Components; using Content.Shared.Stunnable; namespace Content.Shared.Revolutionary; @@ -22,7 +22,13 @@ public sealed class SharedRevolutionarySystem : EntitySystem /// private void MindShieldImplanted(EntityUid uid, MindShieldComponent comp, MapInitEvent init) { - if (HasComp(uid) && !HasComp(uid)) + if (HasComp(uid)) + { + RemCompDeferred(uid); + return; + } + + if (HasComp(uid)) { var stunTime = TimeSpan.FromSeconds(4); var name = Identity.Entity(uid, EntityManager); @@ -30,9 +36,5 @@ public sealed class SharedRevolutionarySystem : EntitySystem _sharedStun.TryParalyze(uid, stunTime, true); _popupSystem.PopupEntity(Loc.GetString("rev-break-control", ("name", name)), uid); } - else if (HasComp(uid)) - { - RemCompDeferred(uid); - } } }