diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs index 318576029b..212b29263d 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/AirstrikePower.cs @@ -129,6 +129,8 @@ namespace OpenRA.Mods.Common.Traits { var notification = self.Owner.IsAlliedWith(self.World.RenderPlayer) ? Info.LaunchSound : Info.IncomingSound; Game.Sound.Play(notification); + Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", + Info.IncomingSpeechNotification, self.Owner.Faction.InternalName); Actor distanceTestActor = null; for (var i = -info.SquadSize / 2; i <= info.SquadSize / 2; i++) diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs index b35e775a33..f2e8691238 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/NukePower.cs @@ -96,7 +96,11 @@ namespace OpenRA.Mods.Common.Traits if (self.Owner.IsAlliedWith(self.World.RenderPlayer)) Game.Sound.Play(Info.LaunchSound); else + { Game.Sound.Play(Info.IncomingSound); + Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", + Info.IncomingSpeechNotification, self.Owner.Faction.InternalName); + } if (!string.IsNullOrEmpty(info.ActivationSequence)) { diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs index b5ccbc16b7..ed583cec29 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs @@ -32,11 +32,15 @@ namespace OpenRA.Mods.Common.Traits public readonly string[] Prerequisites = { }; public readonly string BeginChargeSound = null; + public readonly string BeginChargeSpeechNotification = null; public readonly string EndChargeSound = null; + public readonly string EndChargeSpeechNotification = null; public readonly string SelectTargetSound = null; + public readonly string SelectTargetSpeechNotification = null; public readonly string InsufficientPowerSound = null; public readonly string LaunchSound = null; public readonly string IncomingSound = null; + public readonly string IncomingSpeechNotification = null; public readonly bool DisplayTimer = false; @@ -83,16 +87,22 @@ namespace OpenRA.Mods.Common.Traits public virtual void Charging(Actor self, string key) { Game.Sound.PlayToPlayer(self.Owner, Info.BeginChargeSound); + Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", + Info.BeginChargeSpeechNotification, self.Owner.Faction.InternalName); } public virtual void Charged(Actor self, string key) { Game.Sound.PlayToPlayer(self.Owner, Info.EndChargeSound); + Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", + Info.EndChargeSpeechNotification, self.Owner.Faction.InternalName); } public virtual void SelectTarget(Actor self, string order, SupportPowerManager manager) { Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); + Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", + Info.SelectTargetSpeechNotification, self.Owner.Faction.InternalName); self.World.OrderGenerator = new SelectGenericPowerTarget(order, manager, info.Cursor, MouseButton.Left); } diff --git a/mods/d2k/audio/notifications.yaml b/mods/d2k/audio/notifications.yaml index fe65053390..8253e86793 100644 --- a/mods/d2k/audio/notifications.yaml +++ b/mods/d2k/audio/notifications.yaml @@ -63,7 +63,7 @@ Sounds: DisablePower: POWRUP1 EnablePower: POWRDN1 CashTickUp: CASHTIK1 - CashTickDown:CASHTIK1 + CashTickDown: CASHTIK1 LevelUp: SCORTIK1 ChatLine: CHAT1 BuildPaletteOpen: BUTTON1 diff --git a/mods/d2k/rules/structures.yaml b/mods/d2k/rules/structures.yaml index b15f129683..2b88b6d041 100644 --- a/mods/d2k/rules/structures.yaml +++ b/mods/d2k/rules/structures.yaml @@ -838,7 +838,6 @@ high_tech_factory: SquadSize: 3 LongDesc: Ornithopters hit the target with bombs UnitType: ornithopter - SelectTargetSound: DisplayBeacon: True CameraActor: camera WithProductionOverlay@WELDING: @@ -951,11 +950,9 @@ palace: ChargeTime: 300 Description: Death Hand LongDesc: Launches an atomic missile at a target location - BeginChargeSound: HI_PREP.AUD - EndChargeSound: HI_DHRDY.AUD - SelectTargetSound: - LaunchSound: - IncomingSound: + BeginChargeSpeechNotification: DeathHandMissilePrepping + EndChargeSpeechNotification: DeathHandMissileReady + MissileLaunchDetected: MissileLaunchDetected MissileWeapon: atomic SpawnOffset: -512,1c171,0 DisplayBeacon: True diff --git a/mods/ts/rules/gdi-structures.yaml b/mods/ts/rules/gdi-structures.yaml index 2508d7259c..94fcc3e01a 100644 --- a/mods/ts/rules/gdi-structures.yaml +++ b/mods/ts/rules/gdi-structures.yaml @@ -403,11 +403,8 @@ GAPLUG: ChargeTime: 180 Description: Ion Cannon LongDesc: Initiate an Ion Cannon strike.\nApplies instant damage to a small area. - BeginChargeSound: - EndChargeSound: 00-i156.aud - LaunchSound: - SelectTargetSound: - InsufficientPowerSound: + EndChargeSpeechNotification: IonCannonReady + SelectTargetSpeechNotification: SelectTarget DisplayRadarPing: True CameraActor: camera ProduceActorPower: diff --git a/mods/ts/rules/gdi-support.yaml b/mods/ts/rules/gdi-support.yaml index bfe111b303..6def61f38b 100644 --- a/mods/ts/rules/gdi-support.yaml +++ b/mods/ts/rules/gdi-support.yaml @@ -4,9 +4,7 @@ GAWALL: Queue: Defense BuildPaletteOrder: 20 Prerequisites: ~structures.gdi - SoundOnDamageTransition: - DamagedSounds: - DestroyedSounds: + -SoundOnDamageTransition: Valued: Cost: 50 CustomSellValue: diff --git a/mods/ts/rules/nod-support.yaml b/mods/ts/rules/nod-support.yaml index 9ddc79e748..66a7e22668 100644 --- a/mods/ts/rules/nod-support.yaml +++ b/mods/ts/rules/nod-support.yaml @@ -4,9 +4,7 @@ NAWALL: Queue: Defense BuildPaletteOrder: 1001 Prerequisites: ~structures.nod - SoundOnDamageTransition: - DamagedSounds: - DestroyedSounds: + -SoundOnDamageTransition: Valued: Cost: 50 CustomSellValue: @@ -240,11 +238,9 @@ NAMISL: ChargeTime: 540 Description: Cluster Missile LongDesc: Launches a conventional warhead\nat a target location. - BeginChargeSound: - EndChargeSound: 00-i154.aud - SelectTargetSound: - InsufficientPowerSound: - IncomingSound: 00-i150.aud + EndChargeSpeechNotification: ClusterMissileReady + SelectTargetSpeechNotification: SelectTarget + IncomingSpeechNotification: MissileLaunchDetected LaunchSound: icbm1.aud MissileWeapon: ClusterMissile SpawnOffset: 0,427,0 diff --git a/mods/ts/rules/shared-support.yaml b/mods/ts/rules/shared-support.yaml index a15036d5aa..785a0be4af 100644 --- a/mods/ts/rules/shared-support.yaml +++ b/mods/ts/rules/shared-support.yaml @@ -43,30 +43,12 @@ NAPULS: gdi: napuls.gdi nod: napuls.nod ProvidesPrerequisite@gdi: - Prerequisite: emp.gdi - Factions: gdi ResetOnOwnerChange: true - ProvidesPrerequisite@nod: - Prerequisite: emp.nod - Factions: nod - ResetOnOwnerChange: true - AttackOrderPower@nod: + AttackOrderPower: Cursor: emp Icon: emp ChargeTime: 135 Description: E.M. Pulse LongDesc: Fires a pulse blast which disables\nall mechanical units in the area. - EndChargeSound: speech-nod|00-i158.aud - SelectTargetSound: speech-nod|00-i042.aud - Prerequisites: emp.nod - OrderName: Nodemp - AttackOrderPower@gdi: - Cursor: emp - Icon: emp - ChargeTime: 135 - Description: E.M. Pulse - LongDesc: Fires a pulse blast which disables\nall mechanical units in the area. - EndChargeSound: speech-gdi|00-i158.aud - SelectTargetSound: speech-gdi|00-i042.aud - Prerequisites: emp.gdi - OrderName: GDIemp + EndChargeSpeechNotification: EmPulseCannonReady + SelectTargetSpeechNotification: SelectTarget