diff --git a/OpenRA.Game/Traits/Render/RenderSimple.cs b/OpenRA.Game/Traits/Render/RenderSimple.cs index df5adc2e67..76f9acaeb9 100755 --- a/OpenRA.Game/Traits/Render/RenderSimple.cs +++ b/OpenRA.Game/Traits/Render/RenderSimple.cs @@ -55,13 +55,9 @@ namespace OpenRA.Traits .FirstOrDefault(); } - public virtual string NormalizeSequence(Actor self, string baseSequence) + public string NormalizeSequence(Actor self, string baseSequence) { - string damageState = self.GetDamageState() >= DamageState.Heavy ? "damaged-" : ""; - if (anim.HasSequence(damageState + baseSequence)) - return damageState + baseSequence; - else - return baseSequence; + return NormalizeSequence(anim, self.GetDamageState(), baseSequence); } public void PlayCustomAnim(Actor self, string name) diff --git a/OpenRA.Game/Traits/Render/RenderSprites.cs b/OpenRA.Game/Traits/Render/RenderSprites.cs index 252254339d..e3b4d8543c 100755 --- a/OpenRA.Game/Traits/Render/RenderSprites.cs +++ b/OpenRA.Game/Traits/Render/RenderSprites.cs @@ -100,5 +100,21 @@ namespace OpenRA.Traits a.Animation.Tick(); } + public static string NormalizeSequence(Animation anim, DamageState state, string baseSequence) + { + var states = new Pair[] + { + Pair.New(DamageState.Critical, "critical-"), + Pair.New(DamageState.Heavy, "damaged-"), + Pair.New(DamageState.Medium, "scratched-"), + Pair.New(DamageState.Light, "scuffed-") + }; + + foreach (var s in states) + if (state >= s.First && anim.HasSequence(s.Second+baseSequence)) + return s.Second+baseSequence; + + return baseSequence; + } } }