Fixed "collection was modified" exceptions if a huskified human dies in a fire

This commit is contained in:
Regalis
2017-04-09 18:32:13 +03:00
parent e94a50a29a
commit 4ee96e4fbe
+5 -4
View File
@@ -245,20 +245,21 @@ namespace Barotrauma
{ {
if (size.X <= 0.0f) return; if (size.X <= 0.0f) return;
foreach (Character c in Character.CharacterList) for (int i = 0; i < Character.CharacterList.Count; i++)
{ {
Character c = Character.CharacterList[i];
if (c.AnimController.CurrentHull == null || c.IsDead) continue; if (c.AnimController.CurrentHull == null || c.IsDead) continue;
float range = (float)Math.Sqrt(size.X) * 20.0f; float range = (float)Math.Sqrt(size.X) * 20.0f;
if (c.Position.X < position.X - range || c.Position.X > position.X + size.X + range) continue; if (c.Position.X < position.X - range || c.Position.X > position.X + size.X + range) continue;
if (c.Position.Y < position.Y - size.Y || c.Position.Y > hull.Rect.Y) continue; if (c.Position.Y < position.Y - size.Y || c.Position.Y > hull.Rect.Y) continue;
float dmg = (float)Math.Sqrt(size.X) * deltaTime / c.AnimController.Limbs.Length; float dmg = (float)Math.Sqrt(size.X) * deltaTime / c.AnimController.Limbs.Length;
foreach (Limb limb in c.AnimController.Limbs) foreach (Limb limb in c.AnimController.Limbs)
{ {
if (limb.WearingItems.Find(w => w!=null && w.WearableComponent.Item.FireProof)!=null) continue; if (limb.WearingItems.Find(w => w != null && w.WearableComponent.Item.FireProof) != null) continue;
limb.Burnt += dmg * 10.0f; limb.Burnt += dmg * 10.0f;
c.AddDamage(limb.SimPosition, DamageType.None, dmg, 0,0,false); c.AddDamage(limb.SimPosition, DamageType.None, dmg, 0, 0, false);
} }
} }
} }