diff --git a/OpenRA.Game/Controller.cs b/OpenRA.Game/Controller.cs index aad916a163..cc45896b7a 100644 --- a/OpenRA.Game/Controller.cs +++ b/OpenRA.Game/Controller.cs @@ -48,6 +48,11 @@ namespace OpenRA } } + static bool HasVoice(Actor a) + { + return a.Info.Traits.Contains() && a.Info.Traits.Get().Voice != null; + } + void ApplyOrders(World world, float2 xy, MouseInput mi) { if (orderGenerator == null) return; @@ -56,14 +61,13 @@ namespace OpenRA Game.orderManager.IssueOrders( orders ); var voicedActor = orders.Select(o => o.Subject) - .FirstOrDefault(a => a.Owner == world.LocalPlayer && a.traits.Contains()); + .FirstOrDefault(a => a.Owner == world.LocalPlayer && HasVoice(a)); var isMove = orders.Any(o => o.OrderString == "Move"); var isAttack = orders.Any( o => o.OrderString == "Attack" ); if (voicedActor != null) { - if(voicedActor.traits.GetOrDefault().CanEnterCell(xy.ToInt2())) Sound.PlayVoice(isAttack ? "Attack" : "Move", voicedActor); diff --git a/OpenRA.Game/Traits/Selectable.cs b/OpenRA.Game/Traits/Selectable.cs index 4a91253b9c..131f32fe85 100755 --- a/OpenRA.Game/Traits/Selectable.cs +++ b/OpenRA.Game/Traits/Selectable.cs @@ -24,7 +24,7 @@ namespace OpenRA.Traits { public readonly int Priority = 10; public readonly int[] Bounds = null; - public readonly string Voice = "GenericVoice"; + public readonly string Voice = null; public readonly float Radius = 10; } diff --git a/mods/cnc/defaults.yaml b/mods/cnc/defaults.yaml index 3a4867c0d9..d6829265d8 100644 --- a/mods/cnc/defaults.yaml +++ b/mods/cnc/defaults.yaml @@ -59,6 +59,7 @@ TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River TerrainSpeeds: 90%, 80%, 100%, 0%, 0%, 0%, 0%, 90%, 80%, 0% Selectable: + Voice: GenericVoice RenderInfantry: AutoTarget: Passenger: @@ -74,6 +75,7 @@ Unit: TargetType: Air Selectable: + Voice: GenericVoice HiddenUnderFog: RevealsShroud: GainsExperience: diff --git a/mods/ra/defaults.yaml b/mods/ra/defaults.yaml index fdc9cf364b..7daff66285 100644 --- a/mods/ra/defaults.yaml +++ b/mods/ra/defaults.yaml @@ -46,6 +46,7 @@ TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River TerrainSpeeds: 90%, 80%, 100%, 0%, 0%, 0%, 0%, 100%, 80%, 0% Selectable: + Voice: GenericVoice RenderInfantry: AutoTarget: Passenger: @@ -62,6 +63,7 @@ TerrainTypes: Clear, Rough, Road, Tree, Water, Rock, Wall, Ore, Beach, River TerrainSpeeds: 0%, 0%, 0%, 0%, 100%, 0%, 0%, 0%, 0%, 0% Selectable: + Voice: GenericVoice HiddenUnderFog: RevealsShroud: GainsExperience: @@ -72,6 +74,7 @@ Unit: TargetType: Air Selectable: + Voice: GenericVoice HiddenUnderFog: RevealsShroud: GainsExperience: