check name for Actor.GrantCondition()
This commit is contained in:
@@ -528,10 +528,16 @@ namespace OpenRA
|
|||||||
notify(this, readOnlyConditionCache);
|
notify(this, readOnlyConditionCache);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Grants a specified condition.</summary>
|
/// <summary>
|
||||||
|
/// Grants a specified condition if it is valid.
|
||||||
|
/// Otherwise, just returns InvalidConditionToken.
|
||||||
|
/// </summary>
|
||||||
/// <returns>The token that is used to revoke this condition.</returns>
|
/// <returns>The token that is used to revoke this condition.</returns>
|
||||||
public int GrantCondition(string condition)
|
public int GrantCondition(string condition)
|
||||||
{
|
{
|
||||||
|
if (string.IsNullOrEmpty(condition))
|
||||||
|
return InvalidConditionToken;
|
||||||
|
|
||||||
var token = nextConditionToken++;
|
var token = nextConditionToken++;
|
||||||
conditionTokens.Add(token, condition);
|
conditionTokens.Add(token, condition);
|
||||||
UpdateConditionState(condition, token, false);
|
UpdateConditionState(condition, token, false);
|
||||||
|
|||||||
@@ -55,8 +55,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
|
|
||||||
public void GrantLeapCondition(Actor self)
|
public void GrantLeapCondition(Actor self)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(info.LeapCondition))
|
leapToken = self.GrantCondition(info.LeapCondition);
|
||||||
leapToken = self.GrantCondition(info.LeapCondition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RevokeLeapCondition(Actor self)
|
public void RevokeLeapCondition(Actor self)
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
|
|
||||||
void TriggerVortex()
|
void TriggerVortex()
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(info.Condition) && conditionToken == Actor.InvalidConditionToken)
|
if (conditionToken == Actor.InvalidConditionToken)
|
||||||
conditionToken = self.GrantCondition(info.Condition);
|
conditionToken = self.GrantCondition(info.Condition);
|
||||||
|
|
||||||
triggered = true;
|
triggered = true;
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
|
|
||||||
if (Disguised != oldDisguiseSetting)
|
if (Disguised != oldDisguiseSetting)
|
||||||
{
|
{
|
||||||
if (Disguised && disguisedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(info.DisguisedCondition))
|
if (Disguised && disguisedToken == Actor.InvalidConditionToken)
|
||||||
disguisedToken = self.GrantCondition(info.DisguisedCondition);
|
disguisedToken = self.GrantCondition(info.DisguisedCondition);
|
||||||
else if (!Disguised && disguisedToken != Actor.InvalidConditionToken)
|
else if (!Disguised && disguisedToken != Actor.InvalidConditionToken)
|
||||||
disguisedToken = self.RevokeCondition(disguisedToken);
|
disguisedToken = self.RevokeCondition(disguisedToken);
|
||||||
|
|||||||
@@ -188,8 +188,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
if (target.Type == TargetType.Invalid)
|
if (target.Type == TargetType.Invalid)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(mad.info.DeployedCondition))
|
self.GrantCondition(mad.info.DeployedCondition);
|
||||||
self.GrantCondition(mad.info.DeployedCondition);
|
|
||||||
|
|
||||||
self.World.AddFrameEndTask(w => EjectDriver());
|
self.World.AddFrameEndTask(w => EjectDriver());
|
||||||
if (mad.info.ThumpSequence != null)
|
if (mad.info.ThumpSequence != null)
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
if (attackMove == null)
|
if (attackMove == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!isAssaultMove && !string.IsNullOrEmpty(attackMove.Info.AttackMoveCondition))
|
if (isAssaultMove)
|
||||||
token = self.GrantCondition(attackMove.Info.AttackMoveCondition);
|
|
||||||
else if (isAssaultMove && !string.IsNullOrEmpty(attackMove.Info.AssaultMoveCondition))
|
|
||||||
token = self.GrantCondition(attackMove.Info.AssaultMoveCondition);
|
token = self.GrantCondition(attackMove.Info.AssaultMoveCondition);
|
||||||
|
else
|
||||||
|
token = self.GrantCondition(attackMove.Info.AttackMoveCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Tick(Actor self)
|
public override bool Tick(Actor self)
|
||||||
|
|||||||
@@ -1114,7 +1114,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
airborne = true;
|
airborne = true;
|
||||||
if (!string.IsNullOrEmpty(Info.AirborneCondition) && airborneToken == Actor.InvalidConditionToken)
|
if (airborneToken == Actor.InvalidConditionToken)
|
||||||
airborneToken = self.GrantCondition(Info.AirborneCondition);
|
airborneToken = self.GrantCondition(Info.AirborneCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1138,7 +1138,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
cruising = true;
|
cruising = true;
|
||||||
if (!string.IsNullOrEmpty(Info.CruisingCondition) && cruisingToken == Actor.InvalidConditionToken)
|
if (cruisingToken == Actor.InvalidConditionToken)
|
||||||
cruisingToken = self.GrantCondition(Info.CruisingCondition);
|
cruisingToken = self.GrantCondition(Info.CruisingCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,8 +54,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var delta = charging ? info.ChargeRate : -info.DischargeRate;
|
var delta = charging ? info.ChargeRate : -info.DischargeRate;
|
||||||
ChargeLevel = (ChargeLevel + delta).Clamp(0, info.ChargeLevel);
|
ChargeLevel = (ChargeLevel + delta).Clamp(0, info.ChargeLevel);
|
||||||
|
|
||||||
if (ChargeLevel > 0 && !string.IsNullOrEmpty(info.ChargingCondition)
|
if (ChargeLevel > 0 && chargingToken == Actor.InvalidConditionToken)
|
||||||
&& chargingToken == Actor.InvalidConditionToken)
|
|
||||||
chargingToken = self.GrantCondition(info.ChargingCondition);
|
chargingToken = self.GrantCondition(info.ChargingCondition);
|
||||||
|
|
||||||
if (ChargeLevel == 0 && chargingToken != Actor.InvalidConditionToken)
|
if (ChargeLevel == 0 && chargingToken != Actor.InvalidConditionToken)
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
b.Trait.SetPrimaryProducer(b.Actor, false);
|
b.Trait.SetPrimaryProducer(b.Actor, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (primaryToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.PrimaryCondition))
|
if (primaryToken == Actor.InvalidConditionToken)
|
||||||
primaryToken = self.GrantCondition(Info.PrimaryCondition);
|
primaryToken = self.GrantCondition(Info.PrimaryCondition);
|
||||||
|
|
||||||
Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.SelectionNotification, self.Owner.Faction.InternalName);
|
Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.SelectionNotification, self.Owner.Faction.InternalName);
|
||||||
|
|||||||
@@ -204,12 +204,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
else
|
else
|
||||||
currentTargetDelay += 1;
|
currentTargetDelay += 1;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(info.CapturingCondition) &&
|
if (capturingToken == Actor.InvalidConditionToken)
|
||||||
capturingToken == Actor.InvalidConditionToken)
|
|
||||||
capturingToken = self.GrantCondition(info.CapturingCondition);
|
capturingToken = self.GrantCondition(info.CapturingCondition);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(targetManager.info.BeingCapturedCondition) &&
|
if (targetManager.beingCapturedToken == Actor.InvalidConditionToken)
|
||||||
targetManager.beingCapturedToken == Actor.InvalidConditionToken)
|
|
||||||
targetManager.beingCapturedToken = target.GrantCondition(targetManager.info.BeingCapturedCondition);
|
targetManager.beingCapturedToken = target.GrantCondition(targetManager.info.BeingCapturedCondition);
|
||||||
|
|
||||||
captures = enabledCaptures
|
captures = enabledCaptures
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (!HasSpace(w))
|
if (!HasSpace(w))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (loadingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.LoadingCondition))
|
if (loadingToken == Actor.InvalidConditionToken)
|
||||||
loadingToken = self.GrantCondition(Info.LoadingCondition);
|
loadingToken = self.GrantCondition(Info.LoadingCondition);
|
||||||
|
|
||||||
reserves.Add(a);
|
reserves.Add(a);
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
attached = true;
|
attached = true;
|
||||||
|
|
||||||
if (carriedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CarriedCondition))
|
if (carriedToken == Actor.InvalidConditionToken)
|
||||||
carriedToken = self.GrantCondition(Info.CarriedCondition);
|
carriedToken = self.GrantCondition(Info.CarriedCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
state = State.Reserved;
|
state = State.Reserved;
|
||||||
Carrier = carrier;
|
Carrier = carrier;
|
||||||
|
|
||||||
if (reservedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.ReservedCondition))
|
if (reservedToken == Actor.InvalidConditionToken)
|
||||||
reservedToken = self.GrantCondition(Info.ReservedCondition);
|
reservedToken = self.GrantCondition(Info.ReservedCondition);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -134,7 +134,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
state = State.Locked;
|
state = State.Locked;
|
||||||
Carrier = carrier;
|
Carrier = carrier;
|
||||||
|
|
||||||
if (lockedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.LockedCondition))
|
if (lockedToken == Actor.InvalidConditionToken)
|
||||||
lockedToken = self.GrantCondition(Info.LockedCondition);
|
lockedToken = self.GrantCondition(Info.LockedCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (Cloaked)
|
if (Cloaked)
|
||||||
{
|
{
|
||||||
wasCloaked = true;
|
wasCloaked = true;
|
||||||
if (cloakedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
if (cloakedToken == Actor.InvalidConditionToken)
|
||||||
cloakedToken = self.GrantCondition(Info.CloakedCondition);
|
cloakedToken = self.GrantCondition(Info.CloakedCondition);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var isCloaked = Cloaked;
|
var isCloaked = Cloaked;
|
||||||
if (isCloaked && !wasCloaked)
|
if (isCloaked && !wasCloaked)
|
||||||
{
|
{
|
||||||
if (cloakedToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
if (cloakedToken == Actor.InvalidConditionToken)
|
||||||
cloakedToken = self.GrantCondition(Info.CloakedCondition);
|
cloakedToken = self.GrantCondition(Info.CloakedCondition);
|
||||||
|
|
||||||
// Sounds shouldn't play if the actor starts cloaked
|
// Sounds shouldn't play if the actor starts cloaked
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
void OnDeployCompleted()
|
void OnDeployCompleted()
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(Info.DeployedCondition) && deployedToken == Actor.InvalidConditionToken)
|
if (deployedToken == Actor.InvalidConditionToken)
|
||||||
deployedToken = self.GrantCondition(Info.DeployedCondition);
|
deployedToken = self.GrantCondition(Info.DeployedCondition);
|
||||||
|
|
||||||
deployState = DeployState.Deployed;
|
deployState = DeployState.Deployed;
|
||||||
@@ -339,7 +339,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
void OnUndeployCompleted()
|
void OnUndeployCompleted()
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(Info.UndeployedCondition) && undeployedToken == Actor.InvalidConditionToken)
|
if (undeployedToken == Actor.InvalidConditionToken)
|
||||||
undeployedToken = self.GrantCondition(Info.UndeployedCondition);
|
undeployedToken = self.GrantCondition(Info.UndeployedCondition);
|
||||||
|
|
||||||
deployState = DeployState.Undeployed;
|
deployState = DeployState.Undeployed;
|
||||||
|
|||||||
@@ -40,10 +40,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
void INotifyCreated.Created(Actor self)
|
void INotifyCreated.Created(Actor self)
|
||||||
{
|
{
|
||||||
if (direction != info.Direction)
|
if (direction == info.Direction)
|
||||||
return;
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(info.Condition))
|
|
||||||
self.GrantCondition(info.Condition);
|
self.GrantCondition(info.Condition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,10 +59,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (IsTraitDisabled)
|
if (IsTraitDisabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var token = Actor.InvalidConditionToken;
|
var token = self.GrantCondition(Info.Condition);
|
||||||
if (!string.IsNullOrEmpty(Info.Condition))
|
|
||||||
token = self.GrantCondition(Info.Condition);
|
|
||||||
|
|
||||||
actions.Add(new DemolishAction(saboteur, delay, token));
|
actions.Add(new DemolishAction(saboteur, delay, token));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,8 +73,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (self.IsDead)
|
if (self.IsDead)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Info.GrantsCondition))
|
self.GrantCondition(Info.GrantsCondition);
|
||||||
self.GrantCondition(Info.GrantsCondition);
|
|
||||||
|
|
||||||
if (Info.RemoveInstead || !self.Info.HasTraitInfo<IHealthInfo>())
|
if (Info.RemoveInstead || !self.Info.HasTraitInfo<IHealthInfo>())
|
||||||
self.Dispose();
|
self.Dispose();
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
IsInAir = true;
|
IsInAir = true;
|
||||||
|
|
||||||
if (parachutingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(info.ParachutingCondition))
|
if (parachutingToken == Actor.InvalidConditionToken)
|
||||||
parachutingToken = self.GrantCondition(info.ParachutingCondition);
|
parachutingToken = self.GrantCondition(info.ParachutingCondition);
|
||||||
|
|
||||||
self.NotifyBlocker(self.Location);
|
self.NotifyBlocker(self.Location);
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
string specificCargoCondition;
|
string specificCargoCondition;
|
||||||
|
|
||||||
if (anyCargoToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(Info.CargoCondition))
|
if (anyCargoToken == Actor.InvalidConditionToken)
|
||||||
anyCargoToken = self.GrantCondition(Info.CargoCondition);
|
anyCargoToken = self.GrantCondition(Info.CargoCondition);
|
||||||
|
|
||||||
if (specificCargoToken == Actor.InvalidConditionToken && Info.CargoConditions.TryGetValue(cargo.Info.Name, out specificCargoCondition))
|
if (specificCargoToken == Actor.InvalidConditionToken && Info.CargoConditions.TryGetValue(cargo.Info.Name, out specificCargoCondition))
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
|
|
||||||
public void Forward(Actor self, Action onComplete)
|
public void Forward(Actor self, Action onComplete)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(info.Condition) && token == Actor.InvalidConditionToken)
|
if (token == Actor.InvalidConditionToken)
|
||||||
token = self.GrantCondition(info.Condition);
|
token = self.GrantCondition(info.Condition);
|
||||||
|
|
||||||
var wsb = wsbs.FirstEnabledTraitOrDefault();
|
var wsb = wsbs.FirstEnabledTraitOrDefault();
|
||||||
@@ -80,7 +80,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
|
|
||||||
public void Reverse(Actor self, Action onComplete)
|
public void Reverse(Actor self, Action onComplete)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(info.Condition) && token == Actor.InvalidConditionToken)
|
if (token == Actor.InvalidConditionToken)
|
||||||
token = self.GrantCondition(info.Condition);
|
token = self.GrantCondition(info.Condition);
|
||||||
|
|
||||||
var wsb = wsbs.FirstEnabledTraitOrDefault();
|
var wsb = wsbs.FirstEnabledTraitOrDefault();
|
||||||
@@ -114,8 +114,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
|||||||
if (wsb != null)
|
if (wsb != null)
|
||||||
wsb.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
|
wsb.DefaultAnimation.PlayFetchIndex(info.Sequence, () => 0);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(info.Condition))
|
token = self.GrantCondition(info.Condition);
|
||||||
token = self.GrantCondition(info.Condition);
|
|
||||||
|
|
||||||
self.QueueActivity(queued, activity);
|
self.QueueActivity(queued, activity);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -101,8 +101,9 @@ namespace OpenRA.Mods.D2k.Activities
|
|||||||
stance = AttackState.Burrowed;
|
stance = AttackState.Burrowed;
|
||||||
countdown = swallow.Info.AttackDelay;
|
countdown = swallow.Info.AttackDelay;
|
||||||
burrowLocation = self.Location;
|
burrowLocation = self.Location;
|
||||||
if (attackingToken == Actor.InvalidConditionToken && !string.IsNullOrEmpty(swallow.Info.AttackingCondition))
|
if (attackingToken == Actor.InvalidConditionToken)
|
||||||
attackingToken = self.GrantCondition(swallow.Info.AttackingCondition);
|
attackingToken = self.GrantCondition(swallow.Info.AttackingCondition);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case AttackState.Burrowed:
|
case AttackState.Burrowed:
|
||||||
if (--countdown > 0)
|
if (--countdown > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user