Support empty strings to skip condition levels.

This commit is contained in:
Paul Chote
2017-01-30 17:57:44 +00:00
parent 27cd31879f
commit 47a013e6c2
2 changed files with 13 additions and 3 deletions

View File

@@ -153,10 +153,18 @@ namespace OpenRA.Mods.Common.Traits
var target = (conditionState.Tokens.Count - 1).Clamp(0, sc.Length);
var st = stackedTokens[condition];
for (var i = st.Count; i < target; i++)
st.Push(GrantCondition(self, sc[i]));
{
// Empty strings are used to skip unwanted levels
var t = !string.IsNullOrEmpty(sc[i]) ? GrantCondition(self, sc[i]) : InvalidConditionToken;
st.Push(t);
}
for (var i = st.Count; i > target; i--)
RevokeCondition(self, st.Pop());
{
var t = st.Pop();
if (t != InvalidConditionToken)
RevokeCondition(self, t);
}
}
}

View File

@@ -22,9 +22,11 @@ namespace OpenRA.Mods.Common.Traits
public readonly string Condition = null;
[FieldLoader.Require]
[FieldLoader.AllowEmptyEntries]
[GrantedConditionReference]
[Desc("Conditions to grant when the monitored condition is granted multiple times.",
"The first entry is activated at 2x grants, second entry at 3x grants, and so on.")]
"The first entry is activated at 2x grants, second entry at 3x grants, and so on.",
"Use empty entries to skip levels.")]
public readonly string[] StackedConditions = { };
}