diff --git a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs index f2b4188cc9..f2fb745b6f 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs @@ -13,13 +13,26 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Play the Build voice of this actor when trained.")] - public class AnnounceOnBuildInfo : TraitInfo { } + public class AnnounceOnBuildInfo : ITraitInfo + { + [Desc("Voice to use when built/trained.")] + public readonly string BuildVoice = "Build"; + + public object Create(ActorInitializer init) { return new AnnounceOnBuild(init.Self, this); } + } public class AnnounceOnBuild : INotifyBuildComplete { + readonly AnnounceOnBuildInfo info; + + public AnnounceOnBuild(Actor self, AnnounceOnBuildInfo info) + { + this.info = info; + } + public void BuildingComplete(Actor self) { - self.PlayVoice("Build"); + self.PlayVoice(info.BuildVoice); } } } diff --git a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs index e5d552d2fc..64713a8b82 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs @@ -18,6 +18,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Minimum duration (in seconds) between sound events.")] public readonly int Interval = 5; + [Desc("Voice to use when killing something.")] + public readonly string KillVoice = "Kill"; + public object Create(ActorInitializer init) { return new AnnounceOnKill(init.Self, this); } } @@ -39,7 +42,7 @@ namespace OpenRA.Mods.Common.Traits if (e.DamageState == DamageState.Dead && damaged != e.Attacker) { if (self.World.WorldTick - lastAnnounce > info.Interval * 25) - self.PlayVoice("Kill"); + self.PlayVoice(info.KillVoice); lastAnnounce = self.World.WorldTick; }