diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index f5ead80bdd..33eef8bc56 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -172,14 +172,18 @@ public sealed class SiliconLawSystem : SharedSiliconLawSystem }); } - private void EnsureSubvertedSiliconRole(EntityUid mindId) + protected override void EnsureSubvertedSiliconRole(EntityUid mindId) { + base.EnsureSubvertedSiliconRole(mindId); + if (!_roles.MindHasRole(mindId)) _roles.MindAddRole(mindId, "MindRoleSubvertedSilicon", silent: true); } - private void RemoveSubvertedSiliconRole(EntityUid mindId) + protected override void RemoveSubvertedSiliconRole(EntityUid mindId) { + base.RemoveSubvertedSiliconRole(mindId); + if (_roles.MindHasRole(mindId)) _roles.MindTryRemoveRole(mindId); } @@ -239,8 +243,10 @@ public sealed class SiliconLawSystem : SharedSiliconLawSystem return ev.Laws; } - public void NotifyLawsChanged(EntityUid uid, SoundSpecifier? cue = null) + public override void NotifyLawsChanged(EntityUid uid, SoundSpecifier? cue = null) { + base.NotifyLawsChanged(uid, cue); + if (!TryComp(uid, out var actor)) return; diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index 89cd95c2ea..d624bc512e 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -168,11 +168,9 @@ public abstract class SharedRoleSystem : EntitySystem var update = MindRolesUpdate((mindId, mind)); // RoleType refresh, Role time tracking, Update Admin playerlist - if (mind.OwnedEntity != null) - { - var message = new RoleAddedEvent(mindId, mind, update, silent); - RaiseLocalEvent(mind.OwnedEntity.Value, message, true); - } + + var message = new RoleAddedEvent(mindId, mind, update, silent); + RaiseLocalEvent(mindId, message, true); var name = Loc.GetString(protoEnt.Name); if (mind.OwnedEntity is not null) @@ -311,11 +309,8 @@ public abstract class SharedRoleSystem : EntitySystem var update = MindRolesUpdate(mind); - if (mind.Comp.OwnedEntity != null) - { - var message = new RoleRemovedEvent(mind.Owner, mind.Comp, update); - RaiseLocalEvent(mind.Comp.OwnedEntity.Value, message, true); - } + var message = new RoleRemovedEvent(mind.Owner, mind.Comp, update); + RaiseLocalEvent(mind, message, true); _adminLogger.Add(LogType.Mind, LogImpact.Low, diff --git a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs index c3a8c22808..e7433de604 100644 --- a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs +++ b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs @@ -62,7 +62,7 @@ public abstract partial class SharedSiliconLawSystem : EntitySystem args.Handled = true; } - protected virtual void NotifyLawsChanged(EntityUid uid, SoundSpecifier? cue = null) + public virtual void NotifyLawsChanged(EntityUid uid, SoundSpecifier? cue = null) { } @@ -71,6 +71,11 @@ public abstract partial class SharedSiliconLawSystem : EntitySystem { } + + protected virtual void RemoveSubvertedSiliconRole(EntityUid mindId) + { + + } } [ByRefEvent]