Fix timed external conditions being rejected instead of reset.

This commit is contained in:
Paul Chote
2017-01-25 20:45:11 +00:00
parent 248d9df3ab
commit 255214e77c
5 changed files with 11 additions and 7 deletions

View File

@@ -211,7 +211,7 @@ namespace OpenRA.Mods.Common.Traits
}
/// <summary>Returns true if the given external condition will have an effect on this actor.</summary>
public bool AcceptsExternalCondition(Actor self, string condition)
public bool AcceptsExternalCondition(Actor self, string condition, bool timed = false)
{
if (state == null)
throw new InvalidOperationException("AcceptsExternalCondition cannot be queried before the actor has been fully created.");
@@ -219,6 +219,10 @@ namespace OpenRA.Mods.Common.Traits
if (!externalConditions.Contains(condition))
return false;
// A timed condition can always replace an existing timed condition (resetting its duration)
if (timed && timers.ContainsKey(condition))
return true;
string[] sc;
if (stackedConditions.TryGetValue(condition, out sc))
return stackedTokens[condition].Count < sc.Length;