Skip to content

Commit a6d8241

Browse files
committed
Update SharedSuicideSystem.cs
1 parent 2d5e01c commit a6d8241

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

Content.Shared/Chat/SharedSuicideSystem.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using Content.Shared.Damage.Systems;
66
using Content.Shared.Mobs.Components;
77
using Robust.Shared.Prototypes;
8-
using System.Linq;
98
using Content.Shared.Backmen.Surgery.Consciousness;
109
using Content.Shared.Backmen.Surgery.Consciousness.Components;
1110
using Content.Shared.Backmen.Surgery.Consciousness.Systems;
@@ -100,15 +99,20 @@ public void ApplyLethalDamage(Entity<DamageableComponent> target, ProtoId<Damage
10099
public void KillConsciousness(Entity<ConsciousnessComponent> target)
101100
{
102101
_consciousness.ClearForceEffects(target.AsNullable());
103-
foreach (var modifier in target.Comp.Modifiers)
102+
103+
// Start-backmen: create copies of keys to avoid InvalidOperationException when modifying collection during iteration
104+
var modifierKeys = target.Comp.Modifiers.Keys.ToList();
105+
foreach (var (k1,k2) in modifierKeys)
104106
{
105-
_consciousness.RemoveConsciousnessModifier(target.AsNullable(), modifier.Key.Item1, modifier.Key.Item2);
107+
_consciousness.RemoveConsciousnessModifier(target.AsNullable(), k1, k2);
106108
}
107109

108-
foreach (var multiplier in target.Comp.Multipliers)
110+
var multiplierKeys = target.Comp.Multipliers.Keys.ToList();
111+
foreach (var (k1,k2) in multiplierKeys)
109112
{
110-
_consciousness.RemoveConsciousnessMultiplier(target.AsNullable(), multiplier.Key.Item1, multiplier.Key.Item2);
113+
_consciousness.RemoveConsciousnessMultiplier(target.AsNullable(), k1, k2);
111114
}
115+
// End-backmen: create copies of keys to avoid InvalidOperationException
112116

113117
_consciousness.AddConsciousnessModifier(target.AsNullable(), target, -target.Comp.Cap, "Suicide", ConsciousnessModType.Pain);
114118
_consciousness.AddConsciousnessMultiplier(target.AsNullable(), target, 0f, "Suicide", ConsciousnessModType.Pain);

0 commit comments

Comments
 (0)