From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Date: Wed, 24 Dec 2025 06:34:10 +0000 (+0100)
Subject: [HOTFIX] Fix MMI mind transfer (#41941)
X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=9212f261eac13e8c6393b49bd1d67df2c4d95846;p=space-station-14.git
[HOTFIX] Fix MMI mind transfer (#41941)
---
diff --git a/Content.Shared/Silicons/Borgs/Components/MMILinkedComponent.cs b/Content.Shared/Silicons/Borgs/Components/MMILinkedComponent.cs
deleted file mode 100644
index cebbc9b746..0000000000
--- a/Content.Shared/Silicons/Borgs/Components/MMILinkedComponent.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Robust.Shared.GameStates;
-
-namespace Content.Shared.Silicons.Borgs.Components;
-
-///
-/// This is used for an entity that is linked to an MMI, usually a brain.
-/// Mostly for receiving events.
-///
-[RegisterComponent, NetworkedComponent, Access(typeof(SharedBorgSystem))]
-[AutoGenerateComponentState]
-public sealed partial class MMILinkedComponent : Component
-{
- ///
- /// The MMI this entity is linked to.
- ///
- [DataField, AutoNetworkedField]
- public EntityUid? LinkedMMI;
-}
diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.MMI.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.MMI.cs
index efcd5a378c..3d33c6af4e 100644
--- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.MMI.cs
+++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.MMI.cs
@@ -17,8 +17,7 @@ public abstract partial class SharedBorgSystem
SubscribeLocalEvent(OnMMIMindAdded);
SubscribeLocalEvent(OnMMIMindRemoved);
- SubscribeLocalEvent(OnMMILinkedMindAdded);
- SubscribeLocalEvent(OnMMILinkedRemoved);
+ SubscribeLocalEvent(OnMMILinkedRemoved);
}
private void OnMMIInit(Entity ent, ref ComponentInit args)
@@ -35,9 +34,6 @@ public abstract partial class SharedBorgSystem
return;
var brain = args.Entity;
- var linked = EnsureComp(brain);
- linked.LinkedMMI = ent.Owner;
- Dirty(brain, linked);
if (_mind.TryGetMind(brain, out var mindId, out var mindComp))
{
@@ -60,35 +56,22 @@ public abstract partial class SharedBorgSystem
_appearance.SetData(ent.Owner, MMIVisuals.HasMind, false);
}
- private void OnMMILinkedMindAdded(Entity ent, ref MindAddedMessage args)
- {
- if (ent.Comp.LinkedMMI == null || !_mind.TryGetMind(ent.Owner, out var mindId, out var mindComp))
- return;
-
- _mind.TransferTo(mindId, ent.Comp.LinkedMMI, true, mind: mindComp);
- }
-
- private void OnMMILinkedRemoved(Entity ent, ref EntGotRemovedFromContainerMessage args)
+ private void OnMMILinkedRemoved(Entity ent, ref EntRemovedFromContainerMessage args)
{
if (_timing.ApplyingState)
return; // The changes are already networked with the same game state
- if (Terminating(ent.Owner))
- return;
-
- if (ent.Comp.LinkedMMI is not { } linked)
+ if (args.Container.ID != ent.Comp.BrainSlotId)
return;
- RemCompDeferred(ent.Owner);
-
- if (_mind.TryGetMind(linked, out var mindId, out var mindComp))
+ if (_mind.TryGetMind(ent, out var mindId, out var mindComp))
{
+ _mind.TransferTo(mindId, args.Entity, true, mind: mindComp);
+
if (_roles.MindHasRole(mindId))
_roles.MindRemoveRole(mindId);
-
- _mind.TransferTo(mindId, ent.Owner, true, mind: mindComp);
}
- _appearance.SetData(linked, MMIVisuals.BrainPresent, false);
+ _appearance.SetData(ent, MMIVisuals.BrainPresent, false);
}
}