From 1b88d11ac3817e17d0e375bc4e61e16817304843 Mon Sep 17 00:00:00 2001 From: Morb <14136326+Morb0@users.noreply.github.com> Date: Wed, 21 Dec 2022 23:47:49 +0300 Subject: [PATCH] Correct signal linker removing (#13058) --- Content.Server/MachineLinking/System/SignalLinkerSystem.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Content.Server/MachineLinking/System/SignalLinkerSystem.cs b/Content.Server/MachineLinking/System/SignalLinkerSystem.cs index 98bc32c951..860a3cde3e 100644 --- a/Content.Server/MachineLinking/System/SignalLinkerSystem.cs +++ b/Content.Server/MachineLinking/System/SignalLinkerSystem.cs @@ -164,15 +164,19 @@ namespace Content.Server.MachineLinking.System // validate links Dictionary uidCache = new(); foreach (var rport in receiver.Inputs) + { + var toRemove = new List(); foreach (var tport in rport.Value) { if (!uidCache.TryGetValue(tport.Uid, out var transmitter)) uidCache.Add(tport.Uid, transmitter = CompOrNull(tport.Uid)); if (transmitter == null || !transmitter.Outputs.TryGetValue(tport.Port, out var tpv)) - rport.Value.Remove(tport); + toRemove.Add(tport); else if (!tpv.Contains(new(uid, rport.Key))) tpv.Add(new(uid, rport.Key)); } + toRemove.ForEach(tport => rport.Value.Remove(tport)); + } } private void OnTransmitterRemoved(EntityUid uid, SignalTransmitterComponent transmitter, ComponentRemove args)