Fix cloak sounds playing on build for initially cloaked actors.
This commit is contained in:
@@ -71,6 +71,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
CPos? lastPos;
|
CPos? lastPos;
|
||||||
bool wasCloaked = false;
|
bool wasCloaked = false;
|
||||||
|
bool firstTick = true;
|
||||||
int cloakedToken = ConditionManager.InvalidConditionToken;
|
int cloakedToken = ConditionManager.InvalidConditionToken;
|
||||||
|
|
||||||
public Cloak(CloakInfo info)
|
public Cloak(CloakInfo info)
|
||||||
@@ -153,7 +154,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (conditionManager != null && cloakedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
if (conditionManager != null && cloakedToken == ConditionManager.InvalidConditionToken && !string.IsNullOrEmpty(Info.CloakedCondition))
|
||||||
cloakedToken = conditionManager.GrantCondition(self, Info.CloakedCondition);
|
cloakedToken = conditionManager.GrantCondition(self, Info.CloakedCondition);
|
||||||
|
|
||||||
if (!self.TraitsImplementing<Cloak>().Any(a => a != this && a.Cloaked))
|
// Sounds shouldn't play if the actor starts cloaked
|
||||||
|
if (!(firstTick && Info.InitialDelay == 0) && !self.TraitsImplementing<Cloak>().Any(a => a != this && a.Cloaked))
|
||||||
Game.Sound.Play(SoundType.World, Info.CloakSound, self.CenterPosition);
|
Game.Sound.Play(SoundType.World, Info.CloakSound, self.CenterPosition);
|
||||||
}
|
}
|
||||||
else if (!isCloaked && wasCloaked)
|
else if (!isCloaked && wasCloaked)
|
||||||
@@ -161,11 +163,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (cloakedToken != ConditionManager.InvalidConditionToken)
|
if (cloakedToken != ConditionManager.InvalidConditionToken)
|
||||||
cloakedToken = conditionManager.RevokeCondition(self, cloakedToken);
|
cloakedToken = conditionManager.RevokeCondition(self, cloakedToken);
|
||||||
|
|
||||||
if (!self.TraitsImplementing<Cloak>().Any(a => a != this && a.Cloaked))
|
if (!(firstTick && Info.InitialDelay == 0) && !self.TraitsImplementing<Cloak>().Any(a => a != this && a.Cloaked))
|
||||||
Game.Sound.Play(SoundType.World, Info.UncloakSound, self.CenterPosition);
|
Game.Sound.Play(SoundType.World, Info.UncloakSound, self.CenterPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
wasCloaked = isCloaked;
|
wasCloaked = isCloaked;
|
||||||
|
firstTick = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsVisible(Actor self, Player viewer)
|
public bool IsVisible(Actor self, Player viewer)
|
||||||
|
|||||||
Reference in New Issue
Block a user