Fix double-revoke crash in Demolishable.
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user