From d3086184bd946e96d6b0a999a124ec167ff991e8 Mon Sep 17 00:00:00 2001 From: Aviu00 <93730715+Aviu00@users.noreply.github.com> Date: Mon, 8 Apr 2024 03:22:48 +0900 Subject: [PATCH] - fix: Fix offering rune part 2. (#275) --- .../_White/Cult/GameRule/CultRuleSystem.cs | 15 ++++++++++----- .../_White/Cult/HolyWater/DeconvertCultist.cs | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs b/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs index 32d1055534..89a5e5240b 100644 --- a/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs +++ b/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs @@ -175,7 +175,9 @@ public sealed class CultRuleSystem : GameRuleSystem if (TryComp(uid, out var actor)) { - cultistsRule.CultistsCache.Add(MetaData(uid).EntityName, actor.PlayerSession.Name); + var name = MetaData(uid).EntityName; + if (!cultistsRule.CultistsCache.ContainsKey(name)) + cultistsRule.CultistsCache.Add(name, actor.PlayerSession.Name); } UpdateCultistsAppearance(cultistsRule); @@ -451,12 +453,15 @@ public sealed class CultRuleSystem : GameRuleSystem return false; } - var cultistComponent = new CultistRoleComponent + if (!_roleSystem.MindHasRole(mindId)) { - PrototypeId = cultistRule.CultistRolePrototype - }; + var cultistComponent = new CultistRoleComponent + { + PrototypeId = cultistRule.CultistRolePrototype + }; - _roleSystem.MindAddRole(mindId, cultistComponent, mind); + _roleSystem.MindAddRole(mindId, cultistComponent, mind); + } EnsureComp(playerEntity); _factionSystem.RemoveFaction(playerEntity, "NanoTrasen", false); diff --git a/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs b/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs index f3bc82616c..0496b388ff 100644 --- a/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs +++ b/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs @@ -1,11 +1,13 @@ using System.Threading; +using Content.Server.Objectives.Components; using Content.Server.Popups; +using Content.Server.Roles; using Content.Server.Stunnable; using Content.Shared.Chemistry.Reagent; using Content.Shared.IdentityManagement; using Content.Shared.Inventory; -using Content.Shared._White.Cult; using Content.Shared._White.Cult.Components; +using Content.Shared.Mind; using JetBrains.Annotations; using Robust.Server.Containers; using Robust.Shared.Prototypes; @@ -69,5 +71,20 @@ public sealed partial class DeconvertCultist : ReagentEffect entityManager.RemoveComponent(uid); entityManager.RemoveComponent(uid); + + var mindSystem = entityManager.System(); + var roleSystem = entityManager.System(); + + if (!mindSystem.TryGetMind(uid, out var mindId, out var mind)) + return; + + var objectives = mind.Objectives.FindAll(entityManager.HasComponent); + foreach (var obj in objectives) + { + mindSystem.TryRemoveObjective(mindId, mind, mind.Objectives.IndexOf(obj)); + } + + if (roleSystem.MindHasRole(mindId)) + roleSystem.MindRemoveRole(mindId); } }