diff --git a/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs b/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs index 83b05615a8..ff38cbce42 100644 --- a/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs +++ b/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs @@ -9,6 +9,7 @@ */ #endregion +using OpenRA.Primitives; using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Sound @@ -21,6 +22,9 @@ namespace OpenRA.Mods.Common.Traits.Sound [Desc("Play a random sound from this list when destroyed.")] public readonly string[] DestroyedSounds = { }; + [Desc("DamageType(s) that trigger the sounds. Leave empty to always trigger a sound.")] + public readonly BitSet DamageTypes = default(BitSet); + public override object Create(ActorInitializer init) { return new SoundOnDamageTransition(this); } } @@ -35,6 +39,9 @@ namespace OpenRA.Mods.Common.Traits.Sound void INotifyDamageStateChanged.DamageStateChanged(Actor self, AttackInfo e) { + if (!info.DamageTypes.IsEmpty && !e.Damage.DamageTypes.Overlaps(info.DamageTypes)) + return; + var rand = Game.CosmeticRandom; if (e.DamageState == DamageState.Dead)