Fix double-revoke crash in Demolishable.

This commit is contained in:
Paul Chote
2019-02-02 22:33:03 +00:00
committed by reaperrr
parent 0a57fbda3c
commit 2194f17dc2

View File

@@ -45,6 +45,7 @@ namespace OpenRA.Mods.Common.Traits
ConditionManager conditionManager; ConditionManager conditionManager;
List<DemolishAction> actions = new List<DemolishAction>(); List<DemolishAction> actions = new List<DemolishAction>();
List<DemolishAction> removeActions = new List<DemolishAction>();
public Demolishable(DemolishableInfo info) public Demolishable(DemolishableInfo info)
: base(info) { } : base(info) { }
@@ -88,9 +89,18 @@ namespace OpenRA.Mods.Common.Traits
if (Util.ApplyPercentageModifiers(100, modifiers) > 0) if (Util.ApplyPercentageModifiers(100, modifiers) > 0)
self.Kill(a.Saboteur); self.Kill(a.Saboteur);
else if (a.Token != ConditionManager.InvalidConditionToken) else if (a.Token != ConditionManager.InvalidConditionToken)
{
conditionManager.RevokeCondition(self, a.Token); conditionManager.RevokeCondition(self, a.Token);
removeActions.Add(a);
} }
} }
} }
// Remove expired actions to avoid double-revoking
foreach (var a in removeActions)
actions.Remove(a);
removeActions.Clear();
}
} }
} }