Support empty strings to skip condition levels.
This commit is contained in:
@@ -153,10 +153,18 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var target = (conditionState.Tokens.Count - 1).Clamp(0, sc.Length);
|
var target = (conditionState.Tokens.Count - 1).Clamp(0, sc.Length);
|
||||||
var st = stackedTokens[condition];
|
var st = stackedTokens[condition];
|
||||||
for (var i = st.Count; i < target; i++)
|
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--)
|
for (var i = st.Count; i > target; i--)
|
||||||
RevokeCondition(self, st.Pop());
|
{
|
||||||
|
var t = st.Pop();
|
||||||
|
if (t != InvalidConditionToken)
|
||||||
|
RevokeCondition(self, t);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string Condition = null;
|
public readonly string Condition = null;
|
||||||
|
|
||||||
[FieldLoader.Require]
|
[FieldLoader.Require]
|
||||||
|
[FieldLoader.AllowEmptyEntries]
|
||||||
[GrantedConditionReference]
|
[GrantedConditionReference]
|
||||||
[Desc("Conditions to grant when the monitored condition is granted multiple times.",
|
[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 = { };
|
public readonly string[] StackedConditions = { };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user