diff --git a/OpenRA.Game/VoiceExts.cs b/OpenRA.Game/VoiceExts.cs index 302568b109..584e7d5316 100644 --- a/OpenRA.Game/VoiceExts.cs +++ b/OpenRA.Game/VoiceExts.cs @@ -51,26 +51,34 @@ namespace OpenRA public static void PlayVoiceForOrders(this World w, Order[] orders) { - // Find an actor with a phrase to say + // Find the first actor with a phrase to say foreach (var o in orders) { if (o == null) continue; - var orderSubject = o.Subject; - if (orderSubject == null || orderSubject.Disposed) - continue; + if (PlayVoiceForOrder(o)) + return; + } + } - foreach (var voice in orderSubject.TraitsImplementing()) + static bool PlayVoiceForOrder(Order o) + { + var orderSubject = o.Subject; + if (orderSubject == null || orderSubject.Disposed) + return false; + + foreach (var voice in orderSubject.TraitsImplementing()) + { + foreach (var v in orderSubject.TraitsImplementing()) { - foreach (var v in orderSubject.TraitsImplementing()) - { - if (voice.PlayVoice(orderSubject, v.VoicePhraseForOrder(orderSubject, o), - orderSubject.Owner.Faction.InternalName)) - return; - } + if (voice.PlayVoice(orderSubject, v.VoicePhraseForOrder(orderSubject, o), + orderSubject.Owner.Faction.InternalName)) + return true; } } + + return false; } } }