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)