From 61c56dcb000de2fdf7467f96758b1aefab2bc48b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 26 Aug 2019 10:04:53 +0100 Subject: [PATCH] Fix DamageModifier crashes when an actor is demolished. Demolish calls GetDamageModifier with a null Damage. --- OpenRA.Mods.Common/Traits/Infantry/TakeCover.cs | 2 +- OpenRA.Mods.Common/Traits/Infantry/TerrainModifiesDamage.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Infantry/TakeCover.cs b/OpenRA.Mods.Common/Traits/Infantry/TakeCover.cs index bc620d2e06..59331fc5cd 100644 --- a/OpenRA.Mods.Common/Traits/Infantry/TakeCover.cs +++ b/OpenRA.Mods.Common/Traits/Infantry/TakeCover.cs @@ -92,7 +92,7 @@ namespace OpenRA.Mods.Common.Traits if (!IsProne) return 100; - if (damage.DamageTypes.IsEmpty) + if (damage == null || damage.DamageTypes.IsEmpty) return 100; var modifierPercentages = info.DamageModifiers.Where(x => damage.DamageTypes.Contains(x.Key)).Select(x => x.Value); diff --git a/OpenRA.Mods.Common/Traits/Infantry/TerrainModifiesDamage.cs b/OpenRA.Mods.Common/Traits/Infantry/TerrainModifiesDamage.cs index e02073b008..f822ffdadd 100644 --- a/OpenRA.Mods.Common/Traits/Infantry/TerrainModifiesDamage.cs +++ b/OpenRA.Mods.Common/Traits/Infantry/TerrainModifiesDamage.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Traits int IDamageModifier.GetDamageModifier(Actor attacker, Damage damage) { - if (attacker.Owner.IsAlliedWith(self.Owner) && damage.Value < 0 && !Info.ModifyHealing) + if (!Info.ModifyHealing && attacker.Owner.IsAlliedWith(self.Owner) && damage != null && damage.Value < 0) return FullDamage; var world = self.World;