|
5 | 5 | using Content.Shared.Damage.Systems; |
6 | 6 | using Content.Shared.Mobs.Components; |
7 | 7 | using Robust.Shared.Prototypes; |
8 | | -using System.Linq; |
9 | 8 | using Content.Shared.Backmen.Surgery.Consciousness; |
10 | 9 | using Content.Shared.Backmen.Surgery.Consciousness.Components; |
11 | 10 | using Content.Shared.Backmen.Surgery.Consciousness.Systems; |
@@ -100,15 +99,20 @@ public void ApplyLethalDamage(Entity<DamageableComponent> target, ProtoId<Damage |
100 | 99 | public void KillConsciousness(Entity<ConsciousnessComponent> target) |
101 | 100 | { |
102 | 101 | _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) |
104 | 106 | { |
105 | | - _consciousness.RemoveConsciousnessModifier(target.AsNullable(), modifier.Key.Item1, modifier.Key.Item2); |
| 107 | + _consciousness.RemoveConsciousnessModifier(target.AsNullable(), k1, k2); |
106 | 108 | } |
107 | 109 |
|
108 | | - foreach (var multiplier in target.Comp.Multipliers) |
| 110 | + var multiplierKeys = target.Comp.Multipliers.Keys.ToList(); |
| 111 | + foreach (var (k1,k2) in multiplierKeys) |
109 | 112 | { |
110 | | - _consciousness.RemoveConsciousnessMultiplier(target.AsNullable(), multiplier.Key.Item1, multiplier.Key.Item2); |
| 113 | + _consciousness.RemoveConsciousnessMultiplier(target.AsNullable(), k1, k2); |
111 | 114 | } |
| 115 | + // End-backmen: create copies of keys to avoid InvalidOperationException |
112 | 116 |
|
113 | 117 | _consciousness.AddConsciousnessModifier(target.AsNullable(), target, -target.Comp.Cap, "Suicide", ConsciousnessModType.Pain); |
114 | 118 | _consciousness.AddConsciousnessMultiplier(target.AsNullable(), target, 0f, "Suicide", ConsciousnessModType.Pain); |
|
0 commit comments