diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs index 8a3c2ff229..c2e0096635 100644 --- a/OpenRA.Game/Network/OrderManager.cs +++ b/OpenRA.Game/Network/OrderManager.cs @@ -22,6 +22,9 @@ namespace OpenRA.Network { const OrderPacket ClientDisconnected = null; + [TranslationReference("frame")] + const string DesyncCompareLogs = "notification-desync-compare-logs"; + readonly SyncReport syncReport; readonly Dictionary> pendingOrders = new(); readonly Dictionary syncForFrame = new(); @@ -85,7 +88,7 @@ namespace OpenRA.Network World.OutOfSync(); IsOutOfSync = true; - TextNotificationsManager.AddSystemLine($"Out of sync in frame {frame}.\nCompare syncreport.log with other players."); + TextNotificationsManager.AddSystemLine(DesyncCompareLogs, Translation.Arguments("frame", frame)); } public void StartGame() diff --git a/OpenRA.Game/Network/UnitOrders.cs b/OpenRA.Game/Network/UnitOrders.cs index 6820a66b99..cd74ef0cf2 100644 --- a/OpenRA.Game/Network/UnitOrders.cs +++ b/OpenRA.Game/Network/UnitOrders.cs @@ -26,6 +26,18 @@ namespace OpenRA.Network [TranslationReference("player")] const string Left = "notification-lobby-disconnected"; + [TranslationReference] + const string GameStarted = "notification-game-has-started"; + + [TranslationReference] + const string GameSaved = "notification-game-saved"; + + [TranslationReference("player")] + const string GamePaused = "notification-game-paused"; + + [TranslationReference("player")] + const string GameUnpaused = "notification-game-unpaused"; + static Player FindPlayerByClient(this World world, Session.Client c) { return world.Players.FirstOrDefault(p => p.ClientIndex == c.Index && p.PlayerReference.Playable); @@ -161,7 +173,7 @@ namespace OpenRA.Network FieldLoader.GetValue("SaveSyncFrame", saveSyncFrame.Value.Value); } else - TextNotificationsManager.AddSystemLine("The game has started."); + TextNotificationsManager.AddSystemLine(GameStarted); Game.StartGame(orderManager.LobbyInfo.GlobalSettings.Map, WorldType.Regular); break; @@ -179,7 +191,7 @@ namespace OpenRA.Network case "GameSaved": if (!orderManager.World.IsReplay) - TextNotificationsManager.AddSystemLine("Game saved"); + TextNotificationsManager.AddSystemLine(GameSaved); foreach (var nsr in orderManager.World.WorldActor.TraitsImplementing()) nsr.GameSaved(orderManager.World); @@ -197,10 +209,7 @@ namespace OpenRA.Network break; if (orderManager.World.Paused != pause && world != null && world.LobbyInfo.NonBotClients.Count() > 1) - { - var pausetext = $"The game is {(pause ? "paused" : "un-paused")} by {client.Name}"; - TextNotificationsManager.AddSystemLine(pausetext); - } + TextNotificationsManager.AddSystemLine(pause ? GamePaused : GameUnpaused, Translation.Arguments("player", client.Name)); orderManager.World.Paused = pause; orderManager.World.PredictedPaused = pause; diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForCash.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForCash.cs index 0b93c6b3e7..15b46f23e0 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForCash.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForCash.cs @@ -43,6 +43,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the victim will hear when they get robbed.")] public readonly string InfiltratedNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the victim will see when they get robbed.")] public readonly string InfiltratedTextNotification = null; @@ -50,6 +51,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the perpetrator will hear after successful infiltration.")] public readonly string InfiltrationNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the perpetrator will see after successful infiltration.")] public readonly string InfiltrationTextNotification = null; diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForExploration.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForExploration.cs index d74e005bfb..c13c1851d6 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForExploration.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForExploration.cs @@ -29,6 +29,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the victim will hear when they get sabotaged.")] public readonly string InfiltratedNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the victim will see when they get sabotaged.")] public readonly string InfiltratedTextNotification = null; @@ -36,6 +37,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the perpetrator will hear after successful infiltration.")] public readonly string InfiltrationNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the perpetrator will see after successful infiltration.")] public readonly string InfiltrationTextNotification = null; diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForPowerOutage.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForPowerOutage.cs index a6257bda86..03c56f0f71 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForPowerOutage.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForPowerOutage.cs @@ -30,6 +30,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the victim will hear when they get sabotaged.")] public readonly string InfiltratedNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the victim will see when they get sabotaged.")] public readonly string InfiltratedTextNotification = null; @@ -37,6 +38,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the perpetrator will hear after successful infiltration.")] public readonly string InfiltrationNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the perpetrator will see after successful infiltration.")] public readonly string InfiltrationTextNotification = null; diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPower.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPower.cs index e850f7fd42..a5c7ab4b1c 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPower.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPower.cs @@ -31,6 +31,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the victim will hear when technology gets stolen.")] public readonly string InfiltratedNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the victim will see when technology gets stolen.")] public readonly string InfiltratedTextNotification = null; @@ -38,6 +39,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the perpetrator will hear after successful infiltration.")] public readonly string InfiltrationNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the perpetrator will see after successful infiltration.")] public readonly string InfiltrationTextNotification = null; diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPowerReset.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPowerReset.cs index 7003d73bd4..2aa1701d4b 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPowerReset.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/InfiltrateForSupportPowerReset.cs @@ -28,6 +28,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Experience to grant to the infiltrating player.")] public readonly int PlayerExperience = 0; + [TranslationReference(optional: true)] [Desc("Text notification the victim will see when they get sabotaged.")] public readonly string InfiltratedTextNotification = null; @@ -35,6 +36,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Sound the perpetrator will hear after successful infiltration.")] public readonly string InfiltrationNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification the perpetrator will see after successful infiltration.")] public readonly string InfiltrationTextNotification = null; diff --git a/OpenRA.Mods.Cnc/Traits/Infiltration/Infiltrates.cs b/OpenRA.Mods.Cnc/Traits/Infiltration/Infiltrates.cs index 613188646d..032119535c 100644 --- a/OpenRA.Mods.Cnc/Traits/Infiltration/Infiltrates.cs +++ b/OpenRA.Mods.Cnc/Traits/Infiltration/Infiltrates.cs @@ -41,6 +41,7 @@ namespace OpenRA.Mods.Cnc.Traits [Desc("Notification to play when a target is infiltrated.")] public readonly string Notification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when a target is infiltrated.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Buildings/PrimaryBuilding.cs b/OpenRA.Mods.Common/Traits/Buildings/PrimaryBuilding.cs index e5a46f193d..7420ed1194 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/PrimaryBuilding.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/PrimaryBuilding.cs @@ -37,6 +37,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when selecting a primary building.")] public readonly string SelectionNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when selecting a primary building.")] public readonly string SelectionTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Buildings/ProductionAirdrop.cs b/OpenRA.Mods.Common/Traits/Buildings/ProductionAirdrop.cs index eac0cceb68..7311121182 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/ProductionAirdrop.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/ProductionAirdrop.cs @@ -24,6 +24,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when a unit is delivered.")] public readonly string ReadyAudio = "Reinforce"; + [TranslationReference(optional: true)] [Desc("Text notification to display when a unit is delivered.")] public readonly string ReadyTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Buildings/RallyPoint.cs b/OpenRA.Mods.Common/Traits/Buildings/RallyPoint.cs index d4fbb43f1e..2d41cce552 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/RallyPoint.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/RallyPoint.cs @@ -49,6 +49,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when setting a new rallypoint.")] public readonly string Notification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when setting a new rallypoint.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Buildings/RepairableBuilding.cs b/OpenRA.Mods.Common/Traits/Buildings/RepairableBuilding.cs index 60635315f9..fac895924a 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/RepairableBuilding.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/RepairableBuilding.cs @@ -47,10 +47,11 @@ namespace OpenRA.Mods.Common.Traits public readonly string RepairCondition = null; [NotificationReference("Speech")] - [Desc("Speech notification to play when the repair process is started.")] + [Desc("Voice line to play when repairs are started.")] public readonly string RepairingNotification = null; - [Desc("Text notification to display when the repair process is started.")] + [TranslationReference(optional: true)] + [Desc("Transient text message to display when repairs are started.")] public readonly string RepairingTextNotification = null; [NotificationReference("Speech")] diff --git a/OpenRA.Mods.Common/Traits/Conditions/ToggleConditionOnOrder.cs b/OpenRA.Mods.Common/Traits/Conditions/ToggleConditionOnOrder.cs index eaeaab0904..deb356536f 100644 --- a/OpenRA.Mods.Common/Traits/Conditions/ToggleConditionOnOrder.cs +++ b/OpenRA.Mods.Common/Traits/Conditions/ToggleConditionOnOrder.cs @@ -31,6 +31,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string EnabledSpeech = null; + [TranslationReference(optional: true)] public readonly string EnabledTextNotification = null; [NotificationReference("Sounds")] @@ -39,6 +40,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string DisabledSpeech = null; + [TranslationReference(optional: true)] public readonly string DisabledTextNotification = null; public override object Create(ActorInitializer init) { return new ToggleConditionOnOrder(this); } diff --git a/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs index f0f1d01666..1df5e90949 100644 --- a/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs +++ b/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs @@ -39,6 +39,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when the crate is collected.")] public readonly string Notification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when the crate is collected.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/GainsExperience.cs b/OpenRA.Mods.Common/Traits/GainsExperience.cs index 1ec2c35485..82e50746a7 100644 --- a/OpenRA.Mods.Common/Traits/GainsExperience.cs +++ b/OpenRA.Mods.Common/Traits/GainsExperience.cs @@ -49,6 +49,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Sounds")] public readonly string LevelUpNotification = null; + [TranslationReference(optional: true)] public readonly string LevelUpTextNotification = null; public override object Create(ActorInitializer init) { return new GainsExperience(init, this); } diff --git a/OpenRA.Mods.Common/Traits/Player/BaseAttackNotifier.cs b/OpenRA.Mods.Common/Traits/Player/BaseAttackNotifier.cs index c9c5342f6a..89c80bb742 100644 --- a/OpenRA.Mods.Common/Traits/Player/BaseAttackNotifier.cs +++ b/OpenRA.Mods.Common/Traits/Player/BaseAttackNotifier.cs @@ -31,6 +31,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification type to play.")] public readonly string Notification = "BaseAttack"; + [TranslationReference(optional: true)] [Desc("Text notification to display.")] public readonly string TextNotification = null; @@ -39,6 +40,7 @@ namespace OpenRA.Mods.Common.Traits "Won't play a notification to allies if this is null.")] public readonly string AllyNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display to allies when under attack.")] public readonly string AllyTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Player/HarvesterAttackNotifier.cs b/OpenRA.Mods.Common/Traits/Player/HarvesterAttackNotifier.cs index ab46a32f83..f4227ea161 100644 --- a/OpenRA.Mods.Common/Traits/Player/HarvesterAttackNotifier.cs +++ b/OpenRA.Mods.Common/Traits/Player/HarvesterAttackNotifier.cs @@ -31,6 +31,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification type to play.")] public readonly string Notification = "HarvesterAttack"; + [TranslationReference(optional: true)] [Desc("Text notification to display.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs b/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs index 4464e734ca..4cf94c0ea3 100644 --- a/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs +++ b/OpenRA.Mods.Common/Traits/Player/MissionObjectives.cs @@ -54,16 +54,19 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string WinNotification = null; + [TranslationReference(optional: true)] public readonly string WinTextNotification = null; [NotificationReference("Speech")] public readonly string LoseNotification = null; + [TranslationReference(optional: true)] public readonly string LoseTextNotification = null; [NotificationReference("Speech")] public readonly string LeaveNotification = null; + [TranslationReference(optional: true)] public readonly string LeaveTextNotification = null; public override object Create(ActorInitializer init) { return new MissionObjectives(init.Self.Owner, this); } diff --git a/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs b/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs index e38127394f..949d1c8c67 100644 --- a/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs +++ b/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs @@ -29,6 +29,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play after building placement if new construction options are available.")] public readonly string NewOptionsNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display after building placement if new construction options are available.")] public readonly string NewOptionsTextNotification = null; @@ -36,6 +37,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play if building placement is not possible.")] public readonly string CannotPlaceNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display if building placement is not possible.")] public readonly string CannotPlaceTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Player/PlayerResources.cs b/OpenRA.Mods.Common/Traits/Player/PlayerResources.cs index 5f454d82fa..a4d3df1da3 100644 --- a/OpenRA.Mods.Common/Traits/Player/PlayerResources.cs +++ b/OpenRA.Mods.Common/Traits/Player/PlayerResources.cs @@ -45,6 +45,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when the player does not have any funds.")] public readonly string InsufficientFundsNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when the player does not have any funds.")] public readonly string InsufficientFundsTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs b/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs index 063260b5f7..cbb24260b6 100644 --- a/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs +++ b/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs @@ -61,6 +61,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string ReadyAudio = null; + [TranslationReference(optional: true)] [Desc("Notification displayed when production is complete.")] public readonly string ReadyTextNotification = null; @@ -70,6 +71,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string BlockedAudio = null; + [TranslationReference(optional: true)] [Desc("Notification displayed when you can't train another actor", "when the build limit exceeded or the exit is jammed.")] public readonly string BlockedTextNotification = null; @@ -80,6 +82,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string LimitedAudio = null; + [TranslationReference(optional: true)] [Desc("Notification displayed when you can't queue another actor", "when the queue length limit is exceeded.")] public readonly string LimitedTextNotification = null; @@ -95,6 +98,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string QueuedAudio = null; + [TranslationReference(optional: true)] [Desc("Notification displayed when user clicks on the build palette icon.")] public readonly string QueuedTextNotification = null; @@ -103,6 +107,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string OnHoldAudio = null; + [TranslationReference(optional: true)] [Desc("Notification displayed when player right-clicks on the build palette icon.")] public readonly string OnHoldTextNotification = null; @@ -111,6 +116,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string CancelledAudio = null; + [TranslationReference(optional: true)] [Desc("Notification displayed when player right-clicks on a build palette icon that is already on hold.")] public readonly string CancelledTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Player/ResourceStorageWarning.cs b/OpenRA.Mods.Common/Traits/Player/ResourceStorageWarning.cs index d1f658165c..dc7850a2c5 100644 --- a/OpenRA.Mods.Common/Traits/Player/ResourceStorageWarning.cs +++ b/OpenRA.Mods.Common/Traits/Player/ResourceStorageWarning.cs @@ -27,6 +27,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech to play for the warning.")] public readonly string Notification = "SilosNeeded"; + [TranslationReference(optional: true)] [Desc("Text to display for the warning.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs b/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs index 60f5d69a13..cebd4d3227 100644 --- a/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs +++ b/OpenRA.Mods.Common/Traits/Power/Player/PowerManager.cs @@ -27,6 +27,7 @@ namespace OpenRA.Mods.Common.Traits public readonly string SpeechNotification = null; [Desc("The text notification to display when the player is low power.")] + [TranslationReference(optional: true)] public readonly string TextNotification = null; public override object Create(ActorInitializer init) { return new PowerManager(init.Self, this); } diff --git a/OpenRA.Mods.Common/Traits/ProductionParadrop.cs b/OpenRA.Mods.Common/Traits/ProductionParadrop.cs index 9d0767fbd0..92b1a456f7 100644 --- a/OpenRA.Mods.Common/Traits/ProductionParadrop.cs +++ b/OpenRA.Mods.Common/Traits/ProductionParadrop.cs @@ -32,6 +32,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when dropping the unit.")] public readonly string ReadyAudio = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when dropping the unit.")] public readonly string ReadyTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/RepairsBridges.cs b/OpenRA.Mods.Common/Traits/RepairsBridges.cs index 88bcdbc0d6..2a878ecb3d 100644 --- a/OpenRA.Mods.Common/Traits/RepairsBridges.cs +++ b/OpenRA.Mods.Common/Traits/RepairsBridges.cs @@ -42,6 +42,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when a bridge is repaired.")] public readonly string RepairNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when a bridge is repaired.")] public readonly string RepairTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/RepairsUnits.cs b/OpenRA.Mods.Common/Traits/RepairsUnits.cs index 67bfd39080..e61aff7f9b 100644 --- a/OpenRA.Mods.Common/Traits/RepairsUnits.cs +++ b/OpenRA.Mods.Common/Traits/RepairsUnits.cs @@ -31,6 +31,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification played when starting to repair a unit.")] public readonly string StartRepairingNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification displayed when starting to repair a unit.")] public readonly string StartRepairingTextNotification = null; @@ -38,6 +39,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification played when repairing a unit is done.")] public readonly string FinishRepairingNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification displayed when repairing a unit is done.")] public readonly string FinishRepairingTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Sellable.cs b/OpenRA.Mods.Common/Traits/Sellable.cs index be484667cf..0689fc4041 100644 --- a/OpenRA.Mods.Common/Traits/Sellable.cs +++ b/OpenRA.Mods.Common/Traits/Sellable.cs @@ -30,6 +30,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play.")] public readonly string Notification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Sound/ActorLostNotification.cs b/OpenRA.Mods.Common/Traits/Sound/ActorLostNotification.cs index ba81e2a5c5..446c3aa5ad 100644 --- a/OpenRA.Mods.Common/Traits/Sound/ActorLostNotification.cs +++ b/OpenRA.Mods.Common/Traits/Sound/ActorLostNotification.cs @@ -20,6 +20,7 @@ namespace OpenRA.Mods.Common.Traits.Sound public readonly string Notification = "UnitLost"; [Desc("Text notification to display.")] + [TranslationReference(optional: true)] public readonly string TextNotification = null; public readonly bool NotifyAll = false; diff --git a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnSeen.cs b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnSeen.cs index cc96127851..ec1542c35e 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnSeen.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnSeen.cs @@ -26,6 +26,7 @@ namespace OpenRA.Mods.Common.Traits.Sound [Desc("Speech notification to play.")] public readonly string Notification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display.")] public readonly string TextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/Sound/CaptureNotification.cs b/OpenRA.Mods.Common/Traits/Sound/CaptureNotification.cs index dff1364a72..b5b7204fc3 100644 --- a/OpenRA.Mods.Common/Traits/Sound/CaptureNotification.cs +++ b/OpenRA.Mods.Common/Traits/Sound/CaptureNotification.cs @@ -20,6 +20,7 @@ namespace OpenRA.Mods.Common.Traits.Sound [Desc("Speech notification to play to the new owner.")] public readonly string Notification = "BuildingCaptured"; + [TranslationReference(optional: true)] [Desc("Text notification to display to the new owner.")] public readonly string TextNotification = null; @@ -30,6 +31,7 @@ namespace OpenRA.Mods.Common.Traits.Sound [Desc("Speech notification to play to the old owner.")] public readonly string LoseNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display to the old owner.")] public readonly string LoseTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs index 3ece219667..80e5d5960c 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/ParatroopersPower.cs @@ -30,6 +30,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when entering the drop zone.")] public readonly string ReinforcementsArrivedSpeechNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when entering the drop zone.")] public readonly string ReinforcementsArrivedTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/ProduceActorPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/ProduceActorPower.cs index 4108f22dc4..1ee55900e2 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/ProduceActorPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/ProduceActorPower.cs @@ -32,6 +32,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string ReadyAudio = null; + [TranslationReference(optional: true)] [Desc("Text notification displayed when production is activated.")] public readonly string ReadyTextNotification = null; @@ -40,6 +41,7 @@ namespace OpenRA.Mods.Common.Traits "The filename of the audio is defined per faction in notifications.yaml.")] public readonly string BlockedAudio = null; + [TranslationReference(optional: true)] [Desc("Text notification displayed when the exit is jammed.")] public readonly string BlockedTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs index 3868d066a0..e5be5a18c5 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs @@ -53,6 +53,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string DetectedSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string DetectedTextNotification = null; public readonly string BeginChargeSound = null; @@ -60,6 +61,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string BeginChargeSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string BeginChargeTextNotification = null; public readonly string EndChargeSound = null; @@ -67,6 +69,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string EndChargeSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string EndChargeTextNotification = null; public readonly string SelectTargetSound = null; @@ -74,6 +77,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string SelectTargetSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string SelectTargetTextNotification = null; public readonly string InsufficientPowerSound = null; @@ -81,6 +85,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string InsufficientPowerSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string InsufficientPowerTextNotification = null; public readonly string LaunchSound = null; @@ -88,6 +93,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string LaunchSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string LaunchTextNotification = null; public readonly string IncomingSound = null; @@ -95,6 +101,7 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string IncomingSpeechNotification = null; + [TranslationReference(optional: true)] public readonly string IncomingTextNotification = null; [Desc("Defines to which players the timer is shown.")] diff --git a/OpenRA.Mods.Common/Traits/Transforms.cs b/OpenRA.Mods.Common/Traits/Transforms.cs index 102475942d..7d424542d2 100644 --- a/OpenRA.Mods.Common/Traits/Transforms.cs +++ b/OpenRA.Mods.Common/Traits/Transforms.cs @@ -42,6 +42,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when transforming.")] public readonly string TransformNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when transforming.")] public readonly string TransformTextNotification = null; @@ -49,6 +50,7 @@ namespace OpenRA.Mods.Common.Traits [Desc("Speech notification to play when the transformation is blocked.")] public readonly string NoTransformNotification = null; + [TranslationReference(optional: true)] [Desc("Text notification to display when the transformation is blocked.")] public readonly string NoTransformTextNotification = null; diff --git a/OpenRA.Mods.Common/Traits/World/StartGameNotification.cs b/OpenRA.Mods.Common/Traits/World/StartGameNotification.cs index 006275bb08..0d77342b35 100644 --- a/OpenRA.Mods.Common/Traits/World/StartGameNotification.cs +++ b/OpenRA.Mods.Common/Traits/World/StartGameNotification.cs @@ -20,16 +20,19 @@ namespace OpenRA.Mods.Common.Traits [NotificationReference("Speech")] public readonly string Notification = "StartGame"; + [TranslationReference(optional: true)] public readonly string TextNotification = null; [NotificationReference("Speech")] public readonly string LoadedNotification = "GameLoaded"; + [TranslationReference(optional: true)] public readonly string LoadedTextNotification = null; [NotificationReference("Speech")] public readonly string SavedNotification = "GameSaved"; + [TranslationReference(optional: true)] public readonly string SavedTextNotification = null; public override object Create(ActorInitializer init) { return new StartGameNotification(this); } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs index e6987344d1..a8debba51d 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/SaveMapLogic.cs @@ -316,7 +316,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (actionManager != null) actionManager.Modified = false; - TextNotificationsManager.AddTransientLine(world.LocalPlayer, TranslationProvider.GetString(SaveCurrentMap)); + TextNotificationsManager.AddTransientLine(world.LocalPlayer, SaveCurrentMap); } catch (Exception e) { diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectAllUnitsHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectAllUnitsHotkeyLogic.cs index 3e1519b9b0..040768c313 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectAllUnitsHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectAllUnitsHotkeyLogic.cs @@ -27,6 +27,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame public readonly string ClickSound = ChromeMetrics.Get("ClickSound"); + [TranslationReference("units")] + const string SelectedUnitsAcrossScreen = "selected-units-across-screen"; + + [TranslationReference("units")] + const string SelectedUnitsAcrossMap = "selected-units-across-map"; + [ObjectCreator.UseCtor] public SelectAllUnitsHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, World world, Dictionary logicArgs) : base(widget, modData, "SelectAllUnitsKey", "WORLD_KEYHANDLER", logicArgs) @@ -48,21 +54,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame // Check if selecting actors on the screen has selected new units if (newSelection.Count > selection.Actors.Count()) - { - if (newSelection.Count > 1) - TextNotificationsManager.AddFeedbackLine($"Selected {newSelection.Count} units across screen."); - else - TextNotificationsManager.AddFeedbackLine("Selected one unit across screen."); - } + TextNotificationsManager.AddFeedbackLine(SelectedUnitsAcrossScreen, Translation.Arguments("units", newSelection.Count)); else { // Select actors in the world that have highest selection priority newSelection = SelectionUtils.SelectActorsInWorld(world, null, eligiblePlayers).SubsetWithHighestSelectionPriority(e.Modifiers).ToList(); - - if (newSelection.Count > 1) - TextNotificationsManager.AddFeedbackLine($"Selected {newSelection.Count} units across map."); - else - TextNotificationsManager.AddFeedbackLine("Selected one unit across map."); + TextNotificationsManager.AddFeedbackLine(SelectedUnitsAcrossMap, Translation.Arguments("units", newSelection.Count)); } selection.Combine(world, newSelection, false, false); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectUnitsByTypeHotkeyLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectUnitsByTypeHotkeyLogic.cs index 38fe23ee91..3352ece933 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectUnitsByTypeHotkeyLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/Hotkeys/SelectUnitsByTypeHotkeyLogic.cs @@ -29,6 +29,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame public readonly string ClickSound = ChromeMetrics.Get("ClickSound"); public readonly string ClickDisabledSound = ChromeMetrics.Get("ClickDisabledSound"); + [TranslationReference] + const string NothingSelected = "nothing-selected"; + + [TranslationReference("units")] + const string SelectedUnitsAcrossScreen = "selected-units-across-screen"; + + [TranslationReference("units")] + const string SelectedUnitsAcrossMap = "selected-units-across-map"; + [ObjectCreator.UseCtor] public SelectUnitsByTypeHotkeyLogic(Widget widget, ModData modData, WorldRenderer worldRenderer, World world, Dictionary logicArgs) : base(widget, modData, "SelectUnitsByTypeKey", "WORLD_KEYHANDLER", logicArgs) @@ -45,7 +54,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame if (!selection.Actors.Any()) { - TextNotificationsManager.AddFeedbackLine("Nothing selected."); + TextNotificationsManager.AddFeedbackLine(NothingSelected); Game.Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Sounds", ClickDisabledSound, null); return false; @@ -70,21 +79,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic.Ingame // Check if selecting actors on the screen has selected new units if (newSelection.Count > selection.Actors.Count()) - { - if (newSelection.Count > 1) - TextNotificationsManager.AddFeedbackLine($"Selected {newSelection.Count} units across screen."); - else - TextNotificationsManager.AddFeedbackLine("Selected one unit across screen."); - } + TextNotificationsManager.AddFeedbackLine(SelectedUnitsAcrossScreen, Translation.Arguments("units", newSelection.Count)); else { // Select actors in the world that have the same selection class as one of the already selected actors newSelection = SelectionUtils.SelectActorsInWorld(world, selectedClasses, eligiblePlayers).ToList(); - - if (newSelection.Count > 1) - TextNotificationsManager.AddFeedbackLine($"Selected {newSelection.Count} units across map."); - else - TextNotificationsManager.AddFeedbackLine("Selected one unit across map."); + TextNotificationsManager.AddFeedbackLine(SelectedUnitsAcrossMap, Translation.Arguments("units", newSelection.Count)); } selection.Combine(world, newSelection, true, false); diff --git a/OpenRA.Mods.D2k/Traits/AttackSwallow.cs b/OpenRA.Mods.D2k/Traits/AttackSwallow.cs index bada7256a5..3a8d589910 100644 --- a/OpenRA.Mods.D2k/Traits/AttackSwallow.cs +++ b/OpenRA.Mods.D2k/Traits/AttackSwallow.cs @@ -38,7 +38,8 @@ namespace OpenRA.Mods.D2k.Traits [NotificationReference("Speech")] public readonly string WormAttackNotification = "WormAttack"; - public readonly string WormAttackTextNotification = "Worm attack."; + [TranslationReference] + public readonly string WormAttackTextNotification = "notification-worm-attack"; public override object Create(ActorInitializer init) { return new AttackSwallow(init.Self, this); } } diff --git a/mods/cnc/languages/rules/en.ftl b/mods/cnc/languages/rules/en.ftl index 0453b45052..be758e9ab9 100644 --- a/mods/cnc/languages/rules/en.ftl +++ b/mods/cnc/languages/rules/en.ftl @@ -13,6 +13,13 @@ checkbox-stealth-deliveries = .label = Stealth Deliveries .description = Nod's delivery plane is cloaked +notification-new-construction-options = New construction options. +notification-cannot-deploy-here = Cannot deploy here. +notification-low-power = Low power. +notification-base-under-attack = Base under attack. +notification-ally-under-attack = Our ally is under attack. +notification-silos-needed = Silos needed. + ## World options-starting-units = .mcv-only = MCV Only @@ -25,3 +32,30 @@ dropdown-map-creeps = options-difficulty = .normal = Normal + +## Structures +notification-construction-complete = Construction complete. +notification-unit-ready = Unit ready. +notification-reinforcements-have-arrived = Reinforcements have arrived. +notification-unable-to-build-more = Unable to build more. +notification-unable-to-comply-building-in-progress = Unable to comply. Building in progress. +notification-repairing = Repairing. +notification-ion-cannon-charging = Ion cannon charging. +notification-ion-cannon-ready = Ion cannon ready. +notification-select-target = Select target. +notification-insufficient-power = Insufficient power. +notification-airstrike-ready = Airstrike ready. +notification-enemy-planes-approaching = Enemy planes approaching. +notification-nuclear-weapon-available = Nuclear weapon available. +notification-nuclear-weapon-launched = Nuclear weapon launched. +notification-nuclear-warhead-approaching = Nuclear warhead approaching. + +## Defaults +notification-unit-lost = Unit lost. +notification-unit-promoted = Unit promoted. +notification-building-captured = Building captured. +notification-civilian-building-captured = Civilian Building captured. +notification-structure-lost = Structure lost. + +## Vehicles +notification-harvester-lost = Harvester lost. diff --git a/mods/cnc/maps/gdi08b/en.ftl b/mods/cnc/maps/gdi08b/en.ftl new file mode 100644 index 0000000000..15436a0691 --- /dev/null +++ b/mods/cnc/maps/gdi08b/en.ftl @@ -0,0 +1 @@ +civilian-killed = Civilian killed. diff --git a/mods/cnc/maps/gdi08b/map.yaml b/mods/cnc/maps/gdi08b/map.yaml index bb6196dc7b..c00a61d154 100644 --- a/mods/cnc/maps/gdi08b/map.yaml +++ b/mods/cnc/maps/gdi08b/map.yaml @@ -1063,4 +1063,4 @@ Actors: Rules: cnc|rules/campaign-maprules.yaml, cnc|rules/campaign-tooltips.yaml, cnc|rules/campaign-palettes.yaml, rules.yaml -Translations: cnc|languages/lua/en.ftl, cnc|languages/difficulties/en.ftl +Translations: cnc|languages/lua/en.ftl, cnc|languages/difficulties/en.ftl, en.ftl diff --git a/mods/cnc/maps/gdi08b/rules.yaml b/mods/cnc/maps/gdi08b/rules.yaml index 2671be5cc4..ef09a127a1 100644 --- a/mods/cnc/maps/gdi08b/rules.yaml +++ b/mods/cnc/maps/gdi08b/rules.yaml @@ -178,5 +178,5 @@ HQ: MaxMoveDelay: 1000 ActorLostNotification: Notification: CivilianKilled - TextNotification: Civilian killed. + TextNotification: civilian-killed NotifyAll: true diff --git a/mods/cnc/maps/twist-of-fate/rules.yaml b/mods/cnc/maps/twist-of-fate/rules.yaml index 7eb2a80ded..d444197f2a 100644 --- a/mods/cnc/maps/twist-of-fate/rules.yaml +++ b/mods/cnc/maps/twist-of-fate/rules.yaml @@ -89,10 +89,10 @@ Astk.proxy: SelectTargetSpeechNotification: SelectTarget InsufficientPowerSpeechNotification: InsufficientPower IncomingSpeechNotification: EnemyPlanesApproaching - EndChargeTextNotification: Airstrike ready. - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - IncomingTextNotification: Enemy planes approaching. + EndChargeTextNotification: notification-airstrike-ready + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + IncomingTextNotification: notification-enemy-planes-approaching UnitType: a10 DisplayBeacon: True BeaconPoster: airstrike diff --git a/mods/cnc/rules/campaign-maprules.yaml b/mods/cnc/rules/campaign-maprules.yaml index 38d473a74d..528d267376 100644 --- a/mods/cnc/rules/campaign-maprules.yaml +++ b/mods/cnc/rules/campaign-maprules.yaml @@ -68,10 +68,10 @@ airstrike.proxy: SelectTargetSpeechNotification: SelectTarget InsufficientPowerSpeechNotification: InsufficientPower IncomingSpeechNotification: EnemyPlanesApproaching - EndChargeTextNotification: Airstrike ready. - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - IncomingTextNotification: Enemy planes approaching. + EndChargeTextNotification: notification-airstrike-ready + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + IncomingTextNotification: notification-enemy-planes-approaching UnitType: a10 DisplayBeacon: True BeaconPoster: airstrike diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index 0c4de51c94..88c808381f 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -48,7 +48,7 @@ ^GainsExperience: GainsExperience: LevelUpNotification: LevelUp - LevelUpTextNotification: Unit promoted. + LevelUpTextNotification: notification-unit-promoted Conditions: 250: rank-veteran 500: rank-veteran @@ -246,7 +246,7 @@ Passenger: CargoType: Vehicle ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost HiddenUnderFog: AttackMove: WithDamageOverlay: @@ -305,7 +305,7 @@ HiddenUnderFog: Type: GroundPosition ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost Explodes: Weapon: HeliExplode EmptyWeapon: HeliExplode @@ -390,7 +390,7 @@ Margin: 5, 6 RequiresCondition: hazmatsuits ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost SpawnActorOnDeath: Probability: 5 Actor: vice @@ -633,7 +633,7 @@ Type: GroundPosition AlwaysVisibleRelationships: None ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost AttackMove: WithShadow: Offset: 43, 128, 0 @@ -657,7 +657,7 @@ TargetTypes: Ground, Water HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost AttackMove: WithDamageOverlay: Explodes: @@ -703,11 +703,11 @@ EmptyWeapon: BuildingExplode CaptureNotification: Notification: BuildingCaptured - TextNotification: Building captured. + TextNotification: notification-building-captured NewOwnerVoice: false ActorLostNotification: Notification: BuildingLost - TextNotification: Structure lost. + TextNotification: notification-structure-lost ShakeOnDeath: Guardable: Range: 3c0 @@ -800,7 +800,7 @@ Types: building CaptureNotification: Notification: CivilianBuildingCaptured - TextNotification: Civilian building captured. + TextNotification: notification-civilian-building-captured RepairableBuilding: RepairPercent: 40 RepairStep: 1400 diff --git a/mods/cnc/rules/infantry.yaml b/mods/cnc/rules/infantry.yaml index c14e757435..e861c28671 100644 --- a/mods/cnc/rules/infantry.yaml +++ b/mods/cnc/rules/infantry.yaml @@ -271,7 +271,7 @@ PVICE: UpdatesPlayerStatistics: AddToArmyValue: true ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost STEG: Inherits: ^DINO diff --git a/mods/cnc/rules/player.yaml b/mods/cnc/rules/player.yaml index 0a0ce4cecc..6394fc950a 100644 --- a/mods/cnc/rules/player.yaml +++ b/mods/cnc/rules/player.yaml @@ -14,8 +14,8 @@ Player: PlaceBuilding: NewOptionsNotification: NewOptions CannotPlaceNotification: BuildingCannotPlaceAudio - NewOptionsTextNotification: New construction options. - CannotPlaceTextNotification: Cannot deploy here. + NewOptionsTextNotification: notification-new-construction-options + CannotPlaceTextNotification: notification-cannot-deploy-here TechTree: SupportPowerManager: ScriptTriggers: @@ -26,7 +26,7 @@ Player: ConquestVictoryConditions: PowerManager: SpeechNotification: LowPower - TextNotification: Low power. + TextNotification: notification-low-power AllyRepair: PlayerResources: CashTickUpNotification: CashTickUp @@ -36,8 +36,8 @@ Player: DeveloperMode: CheckboxDisplayOrder: 9 BaseAttackNotifier: - TextNotification: Base under attack. - AllyTextNotification: Our ally is under attack. + TextNotification: notification-base-under-attack + AllyTextNotification: notification-ally-under-attack Shroud: FogCheckboxDisplayOrder: 3 LobbyPrerequisiteCheckbox@GLOBALFACTUNDEPLOY: @@ -75,7 +75,7 @@ Player: Id: unrestricted GrantConditionOnPrerequisiteManager: ResourceStorageWarning: - TextNotification: Silos needed. + TextNotification: notification-silos-needed PlayerExperience: GameSaveViewportManager: PlayerRadarTerrain: diff --git a/mods/cnc/rules/structures.yaml b/mods/cnc/rules/structures.yaml index 30eac98a8a..7450e14395 100644 --- a/mods/cnc/rules/structures.yaml +++ b/mods/cnc/rules/structures.yaml @@ -49,11 +49,11 @@ FACT: Group: Building LowPowerModifier: 150 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -64,11 +64,11 @@ FACT: Group: Building LowPowerModifier: 150 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -79,11 +79,11 @@ FACT: Group: Defence LowPowerModifier: 150 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -94,11 +94,11 @@ FACT: Group: Defence LowPowerModifier: 150 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -350,11 +350,11 @@ PYLE: Group: Infantry LowPowerModifier: 150 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -410,11 +410,11 @@ HAND: Group: Infantry LowPowerModifier: 150 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -464,7 +464,7 @@ AFLD: ProductionAirdrop: Produces: Vehicle.Nod ActorType: c17 - ReadyTextNotification: Reinforcements have arrived. + ReadyTextNotification: notification-reinforcements-have-arrived WithBuildingBib: WithIdleOverlay@DISH: RequiresCondition: !build-incomplete @@ -477,9 +477,9 @@ AFLD: Group: Vehicle LowPowerModifier: 150 BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -538,11 +538,11 @@ WEAP: Group: Vehicle LowPowerModifier: 150 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -590,7 +590,7 @@ HPAD: HpPerStep: 1000 PlayerExperience: 5 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing WithResupplyAnimation: RequiresCondition: !build-incomplete RallyPoint: @@ -603,11 +603,11 @@ HPAD: Group: Aircraft LowPowerModifier: 150 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -618,11 +618,11 @@ HPAD: Group: Aircraft LowPowerModifier: 150 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -686,10 +686,10 @@ HQ: SelectTargetSpeechNotification: SelectTarget InsufficientPowerSpeechNotification: InsufficientPower IncomingSpeechNotification: EnemyPlanesApproaching - EndChargeTextNotification: Airstrike ready. - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - IncomingTextNotification: Enemy planes approaching. + EndChargeTextNotification: notification-airstrike-ready + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + IncomingTextNotification: notification-enemy-planes-approaching UnitType: a10 DisplayBeacon: True BeaconPoster: airstrike @@ -741,7 +741,7 @@ FIX: Interval: 15 PlayerExperience: 5 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing RallyPoint: CommandBarBlacklist: DisableStop: false @@ -800,10 +800,10 @@ EYE: EndChargeSpeechNotification: IonCannonReady SelectTargetSpeechNotification: SelectTarget InsufficientPowerSpeechNotification: InsufficientPower - BeginChargeTextNotification: Ion cannon charging. - EndChargeTextNotification: Ion cannon ready. - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. + BeginChargeTextNotification: notification-ion-cannon-charging + EndChargeTextNotification: notification-ion-cannon-ready + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power OnFireSound: ion1.aud DisplayRadarPing: True CameraActor: camera.small @@ -859,11 +859,11 @@ TMPL: InsufficientPowerSpeechNotification: InsufficientPower LaunchSpeechNotification: NuclearWeaponLaunched IncomingSpeechNotification: NuclearWarheadApproaching - SelectTargetTextNotification: Select target. - EndChargeTextNotification: Nuclear weapon available. - InsufficientPowerTextNotification: Insufficient power. - LaunchTextNotification: Nuclear weapon launched. - IncomingTextNotification: Nuclear warhead approaching. + SelectTargetTextNotification: notification-select-target + EndChargeTextNotification: notification-nuclear-weapon-available + InsufficientPowerTextNotification: notification-insufficient-power + LaunchTextNotification: notification-nuclear-weapon-launched + IncomingTextNotification: notification-nuclear-warhead-approaching MissileWeapon: atomic MissileImage: atomic MissileDelay: 11 diff --git a/mods/cnc/rules/vehicles.yaml b/mods/cnc/rules/vehicles.yaml index 474f5055de..cb189a451b 100644 --- a/mods/cnc/rules/vehicles.yaml +++ b/mods/cnc/rules/vehicles.yaml @@ -28,7 +28,7 @@ MCV: Facing: 432 TransformSounds: constru2.aud, hvydoor1.aud NoTransformNotification: BuildingCannotPlaceAudio - NoTransformTextNotification: Cannot deploy here. + NoTransformTextNotification: notification-cannot-deploy-here Voice: Unload MustBeDestroyed: RequiredForShortGame: true @@ -76,7 +76,7 @@ HARV: Range: 4c0 ActorLostNotification: Notification: HarvesterLost - TextNotification: Harvester lost. + TextNotification: notification-harvester-lost SpawnActorOnDeath: Actor: HARV.Husk OwnerType: InternalName diff --git a/mods/common/languages/en.ftl b/mods/common/languages/en.ftl index e595f949a7..bccff3d1ac 100644 --- a/mods/common/languages/en.ftl +++ b/mods/common/languages/en.ftl @@ -87,6 +87,12 @@ notification-slot-closed = Your slot was closed by the host. notification-joined = { $player } has joined the game. notification-lobby-disconnected = { $player } has left. +## UnitOrders +notification-game-has-started = The game has started. +notification-game-saved = Game saved. +notification-game-paused = The game is paused by { $player } +notification-game-unpaused = The game is un-paused by { $player } + ## Server notification-game-started = Game started @@ -561,6 +567,22 @@ dialog-incompatible-replay = .prompt-unavailable-map = { -incompatible-replay-recorded } an unavailable map: { $map }. +# SelectUnitsByTypeHotkeyLogic +nothing-selected = Nothing selected. + +## SelectUnitsByTypeHotkeyLogic, SelectAllUnitsHotkeyLogic +selected-units-across-screen = + { $units -> + [one] Selected one unit across screen. + *[other] Selected { $units } units across screen. + } + +selected-units-across-map = + { $units -> + [one] Selected one unit across map. + *[other] Selected { $units } units across map. + } + ## ServerCreationLogic label-internet-server-nat-A = Internet Server (UPnP/NAT-PMP label-internet-server-nat-B-enabled = Enabled @@ -754,3 +776,11 @@ notification-opened = Opened ## ActorEditLogic notification-edited-actor = Edited { $name } ({ $id }) + +## ConquestVictoryConditions, StrategicVictoryConditions +notification-player-is-victorious = { $player } is victorious. +notification-player-is-defeated = { $player } is defeated. + +## OrderManager +notification-desync-compare-logs = Out of sync in frame { $frame }. + Compare syncreport.log with other players. diff --git a/mods/d2k/languages/rules/en.ftl b/mods/d2k/languages/rules/en.ftl index 64adf3aa50..3550c79bac 100644 --- a/mods/d2k/languages/rules/en.ftl +++ b/mods/d2k/languages/rules/en.ftl @@ -9,6 +9,18 @@ checkbox-automatic-concrete = .label = Automatic Concrete .description = Concrete foundations are automatically created beneath buildings +notification-insufficient-funds = Insufficient funds. +notification-new-construction-options = New construction options. +notification-cannot-deploy-here = Cannot deploy here. +notification-low-power = Low power. +notification-base-under-attack = Base under attack. +notification-ally-under-attack = Our ally is under attack. +notification-harvester-under-attack = Harvester under attack. +notification-silos-needed = Silos needed. +notification-no-room-for-new-units = No room for new unit. +notification-cannot-build-here = Cannot build here. +notification-one-of-our-buildings-has-been-captured = One of our buildings has been captured. + ## World dropdown-map-worms = .label = Worms @@ -21,3 +33,28 @@ options-starting-units = options-difficulty = .normal = Normal + +## Arrakis +notification-worm-attack = Worm attack. +notification-worm-sign = Worm sign. + +## Structures +notification-construction-complete = Construction complete. +notification-unit-ready = Unit ready. +notification-repairing = Repairing. +notification-unit-repaired = Unit repaired. +notification-select-target = Select target. +notifciation-missile-launch-detected = Missile launch detected. +notification-airstrike-ready = Airstrike ready. +notification-building-lost = Building lost. +notification-reinforcements-have-arrived = Reinforcements have arrived. +notification-death-hand-missile-prepping = Death Hand missile prepping. +notification-death-hand-missile-ready = Death Hand missile ready. +notification-fremen-ready = Fremen ready. +notification-saboteur-ready = Saboteur ready. + +## Defaults +notification-unit-lost = Unit lost. +notification-unit-promoted = Unit promoted. +notification-enemy-building-captured = Enemy Building captured. +notification-primary-building-selected = Primary building selected. diff --git a/mods/d2k/rules/arrakis.yaml b/mods/d2k/rules/arrakis.yaml index 46619c4ecd..ee9384db8b 100644 --- a/mods/d2k/rules/arrakis.yaml +++ b/mods/d2k/rules/arrakis.yaml @@ -113,7 +113,7 @@ sandworm: IgnoresCloak: AnnounceOnSeen: Notification: WormSign - TextNotification: Worm sign. + TextNotification: notification-worm-sign PingRadar: True RevealsShroud: Range: 5c0 diff --git a/mods/d2k/rules/defaults.yaml b/mods/d2k/rules/defaults.yaml index e0a93e04a2..0e12730fcb 100644 --- a/mods/d2k/rules/defaults.yaml +++ b/mods/d2k/rules/defaults.yaml @@ -15,7 +15,7 @@ ^GainsExperience: GainsExperience: LevelUpNotification: LevelUp - LevelUpTextNotification: Unit promoted. + LevelUpTextNotification: notification-unit-promoted Conditions: 200: rank-veteran 400: rank-veteran @@ -221,7 +221,7 @@ AttackMove: HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost Repairable: RepairActors: repair_pad Guard: @@ -376,7 +376,7 @@ CargoType: Infantry HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost Crushable: CrushSound: CRUSH1.WAV Guard: @@ -417,7 +417,7 @@ HiddenUnderFog: Type: GroundPosition ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost AttackMove: WithFacingSpriteBody: WithShadow: @@ -481,11 +481,11 @@ RequiredForShortGame: true FrozenUnderFog: CaptureNotification: - TextNotification: Enemy building captured. - LoseTextNotification: One of our buildings has been captured. + TextNotification: notification-enemy-building-captured + LoseTextNotification: notification-one-of-our-buildings-has-been-captured ActorLostNotification: Notification: BuildingLost - TextNotification: Building lost. + TextNotification: notification-building-lost ShakeOnDeath: Demolishable: Condition: being-demolished @@ -629,7 +629,7 @@ PrimaryCondition: primary ProductionQueues: Building SelectionNotification: PrimaryBuildingSelected - SelectionTextNotification: Primary building selected. + SelectionTextNotification: notification-primary-building-selected WithTextDecoration@primary: RequiresCondition: primary Position: Top diff --git a/mods/d2k/rules/player.yaml b/mods/d2k/rules/player.yaml index 4091ec84fb..7a995016d8 100644 --- a/mods/d2k/rules/player.yaml +++ b/mods/d2k/rules/player.yaml @@ -16,9 +16,9 @@ Player: DisplayOrder: 0 LowPowerModifier: 300 ReadyAudio: BuildingReady - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -29,9 +29,9 @@ Player: DisplayOrder: 1 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -42,9 +42,9 @@ Player: DisplayOrder: 2 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -55,9 +55,9 @@ Player: DisplayOrder: 3 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -68,7 +68,7 @@ Player: DisplayOrder: 4 BuildDurationModifier: 212 BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: OrderPlaced OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -77,9 +77,9 @@ Player: DisplayOrder: 5 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -88,17 +88,17 @@ Player: ClassicProductionQueue@Upgrade: # Upgrade is defined after others so it won't be automatically selected by ProductionQueueFromSelection. Type: Upgrade ReadyAudio: NewOptions - ReadyTextNotification: New construction options. + ReadyTextNotification: notification-new-construction-options BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units QueuedAudio: Upgrading OnHoldAudio: OnHold CancelledAudio: Cancelled PlaceBuilding: NewOptionsNotification: NewOptions CannotPlaceNotification: BuildingCannotPlaceAudio - NewOptionsTextNotification: New construction options. - CannotPlaceTextNotification: Cannot build here. + NewOptionsTextNotification: notification-new-construction-options + CannotPlaceTextNotification: notification-cannot-build-here SupportPowerManager: ScriptTriggers: MissionObjectives: @@ -109,19 +109,19 @@ Player: PowerManager: AdviceInterval: 26000 SpeechNotification: LowPower - TextNotification: Low power. + TextNotification: notification-low-power AllyRepair: PlayerResources: SelectableCash: 2500, 5000, 7000, 10000, 20000 InsufficientFundsNotification: InsufficientFunds - InsufficientFundsTextNotification: Insufficient funds. + InsufficientFundsTextNotification: notification-insufficient-funds CashTickUpNotification: CashTickUp CashTickDownNotification: CashTickDown DeveloperMode: CheckboxDisplayOrder: 8 BaseAttackNotifier: - TextNotification: Base under attack. - AllyTextNotification: Our ally is under attack. + TextNotification: notification-base-under-attack + AllyTextNotification: notification-ally-under-attack Shroud: FogCheckboxDisplayOrder: 3 LobbyPrerequisiteCheckbox@AUTOCONCRETE: @@ -133,7 +133,7 @@ Player: Prerequisites: global-auto-concrete FrozenActorLayer: HarvesterAttackNotifier: - TextNotification: Harvester under attack. + TextNotification: notification-harvester-under-attack PlayerStatistics: PlaceBeacon: ProvidesPrerequisite@atreides: @@ -178,7 +178,7 @@ Player: GrantConditionOnPrerequisiteManager: ResourceStorageWarning: AdviceInterval: 26000 - TextNotification: Silos needed. + TextNotification: notification-silos-needed PlayerExperience: GameSaveViewportManager: PlayerRadarTerrain: diff --git a/mods/d2k/rules/structures.yaml b/mods/d2k/rules/structures.yaml index 159a02aaa2..249d438dcd 100644 --- a/mods/d2k/rules/structures.yaml +++ b/mods/d2k/rules/structures.yaml @@ -661,7 +661,7 @@ starport: ProductionAirdrop: Produces: Starport ActorType: frigate - ReadyTextNotification: Reinforcements have arrived. + ReadyTextNotification: notification-reinforcements-have-arrived RenderSprites: Image: starport.ordos FactionImages: @@ -907,9 +907,9 @@ repair_pad: Interval: 10 HpPerStep: 800 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired PlayerExperience: 10 RallyPoint: CommandBarBlacklist: @@ -1011,8 +1011,8 @@ high_tech_factory: UseDirectionalTarget: True DirectionArrowAnimation: ornidirection SupportPowerPaletteOrder: 10 - EndChargeTextNotification: Airstrike ready. - SelectTargetTextNotification: Select target. + EndChargeTextNotification: notification-airstrike-ready + SelectTargetTextNotification: notification-select-target Power: Amount: -75 GrantConditionOnPrerequisite@UPGRADEABLE: @@ -1160,10 +1160,10 @@ palace: BeginChargeSpeechNotification: DeathHandMissilePrepping EndChargeSpeechNotification: DeathHandMissileReady IncomingSpeechNotification: MissileLaunchDetected - BeginChargeTextNotification: Death Hand missile prepping. - EndChargeTextNotification: Death Hand missile ready. - IncomingTextNotification: Missile launch detected. - SelectTargetTextNotification: Select target. + BeginChargeTextNotification: notification-death-hand-missile-prepping + EndChargeTextNotification: notification-death-hand-missile-ready + IncomingTextNotification: notifciation-missile-launch-detected + SelectTargetTextNotification: notification-select-target MissileWeapon: deathhand MissileImage: deathhand MissileDelay: 18 @@ -1191,11 +1191,11 @@ palace: Actors: fremen, fremen Type: Fremen ChargeInterval: 2250 - EndChargeTextNotification: Fremen ready. + EndChargeTextNotification: notification-fremen-ready ReadyAudio: Reinforce - ReadyTextNotification: Reinforcements have arrived. + ReadyTextNotification: notification-reinforcements-have-arrived BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units OrderName: ProduceActorPower.Fremen SupportPowerPaletteOrder: 20 ProduceActorPower@saboteur: @@ -1208,11 +1208,11 @@ palace: Actors: saboteur Type: Saboteur ChargeInterval: 2250 - EndChargeTextNotification: Saboteur ready. + EndChargeTextNotification: notification-saboteur-ready ReadyAudio: Reinforce - ReadyTextNotification: Reinforcements have arrived. + ReadyTextNotification: notification-reinforcements-have-arrived BlockedAudio: NoRoom - BlockedTextNotification: No room for new unit. + BlockedTextNotification: notification-no-room-for-new-units OrderName: ProduceActorPower.Saboteur SupportPowerPaletteOrder: 30 Exit@1: diff --git a/mods/d2k/rules/vehicles.yaml b/mods/d2k/rules/vehicles.yaml index 295b03fdf4..b22efa8b7a 100644 --- a/mods/d2k/rules/vehicles.yaml +++ b/mods/d2k/rules/vehicles.yaml @@ -39,7 +39,7 @@ mcv: Offset: -1,-1 TransformSounds: BUILD1.WAV NoTransformNotification: CannotDeploy - NoTransformTextNotification: Cannot deploy here. + NoTransformTextNotification: notification-cannot-deploy-here SpawnActorOnDeath: Actor: mcv.husk OwnerType: InternalName diff --git a/mods/ra/languages/rules/en.ftl b/mods/ra/languages/rules/en.ftl index 3af1fcad5a..bd9a74e183 100644 --- a/mods/ra/languages/rules/en.ftl +++ b/mods/ra/languages/rules/en.ftl @@ -18,6 +18,14 @@ checkbox-reusable-engineers = .label = Reusable Engineers .description = Engineers remain on the battlefield after capturing a structure +notification-insufficient-funds = Insufficient funds. +notification-new-construction-options = New construction options. +notification-cannot-deploy-here = Cannot deploy here. +notification-low-power = Low power. +notification-base-under-attack = Base under attack. +notification-ally-under-attack = Our ally is under attack. +notification-silos-needed = Silos needed. + ## World options-starting-units = .mcv-only = MCV Only @@ -26,3 +34,39 @@ options-starting-units = options-difficulty = .normal = Normal + +## Structures +notification-construction-complete = Construction complete. +notification-unit-ready = Unit ready. +notification-unable-to-build-more = Unable to build more. +notification-unable-to-comply-building-in-progress = Unable to comply. Building in progress. +notification-repairing = Repairing. +notification-unit-repaired = Unit repaired. +notification-select-target = Select target. +notification-insufficient-power = Insufficient power. +notification-reinforcements-have-arrived = Reinforcements have arrived. +notification-abomb-prepping = A-bomb prepping. +notification-abomb-ready = A-bomb ready. +notification-abomb-launch-detected = A-bomb launch detected. +notification-iron-curtain-charging = Iron curtain charging. +notification-iron-curtain-ready = Iron curtain ready. +notification-chronosphere-charging = Chronosphere charging. +notification-chronosphere-ready = Chronosphere ready. +notification-satellite-launched = Satellite launched. +notification-credits-stolen = Credits stolen. +notifcation-spy-plane-ready = Spy plane ready. + +## Defaults +notification-unit-lost = Unit lost. +notification-airborne-unit-lost = Airborne Unit lost. +notification-naval-unit-lost = Naval Unit lost. +notification-unit-promoted = Unit promoted. +notification-primary-building-selected = Primary building selected. +notification-structure-captured = Structure captured. +notification-unit-stolen = Unit stolen. + +## Infantry +notification-building-infiltrated = Building infiltrated. + +## Misc +notification-sonar-pulse-ready = Sonar pulse ready. diff --git a/mods/ra/maps/bomber-john/rules.yaml b/mods/ra/maps/bomber-john/rules.yaml index 5de1d0cdbb..5f50646872 100644 --- a/mods/ra/maps/bomber-john/rules.yaml +++ b/mods/ra/maps/bomber-john/rules.yaml @@ -101,8 +101,8 @@ Player: InsufficientPowerSpeechNotification: InsufficientPower BeginChargeSpeechNotification: IronCurtainCharging EndChargeSpeechNotification: IronCurtainReady - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power BeginChargeTextNotification: Iron curtain charging. EndChargeTextNotification: Iron curtain ready. Condition: invulnerability diff --git a/mods/ra/maps/fort-lonestar/rules.yaml b/mods/ra/maps/fort-lonestar/rules.yaml index 7cef909ab7..aab4eb2056 100644 --- a/mods/ra/maps/fort-lonestar/rules.yaml +++ b/mods/ra/maps/fort-lonestar/rules.yaml @@ -164,7 +164,7 @@ MOBILETENT: Facing: 384 TransformSounds: placbldg.aud, build5.aud NoTransformNotification: BuildingCannotPlaceAudio - NoTransformTextNotification: Cannot deploy here. + NoTransformTextNotification: notification-cannot-deploy-here RenderSprites: Image: TRUK diff --git a/mods/ra/maps/top-o-the-world/rules.yaml b/mods/ra/maps/top-o-the-world/rules.yaml index 7198f4d44f..98c16d88f3 100644 --- a/mods/ra/maps/top-o-the-world/rules.yaml +++ b/mods/ra/maps/top-o-the-world/rules.yaml @@ -59,8 +59,8 @@ powerproxy.spyplane: OneShot: true SelectTargetSpeechNotification: SelectTarget EndChargeSpeechNotification: SpyPlaneReady - SelectTargetTextNotification: Select target. - EndChargeTextNotification: Spy plane ready. + SelectTargetTextNotification: notification-select-target + EndChargeTextNotification: notifcation-spy-plane-ready CameraActor: camera.spyplane CameraRemoveDelay: 150 UnitType: u2 diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index a92902ca98..6bc53b19ce 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -47,7 +47,7 @@ ^GainsExperience: GainsExperience: LevelUpNotification: LevelUp - LevelUpTextNotification: Unit promoted. + LevelUpTextNotification: notification-unit-promoted Conditions: 200: rank-veteran 400: rank-veteran @@ -268,7 +268,7 @@ AttackMove: HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost ProximityCaptor: Types: Vehicle GpsDot: @@ -285,9 +285,9 @@ CancelActivity: True CaptureNotification: Notification: UnitStolen - TextNotification: Unit stolen. + TextNotification: notification-unit-stolen LoseNotification: UnitLost - LoseTextNotification: Unit lost. + LoseTextNotification: notification-unit-lost MustBeDestroyed: Voiced: VoiceSet: VehicleVoice @@ -371,7 +371,7 @@ RequiresCondition: disable-experience HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost GpsDot: String: Infantry Crushable: @@ -519,7 +519,7 @@ AttackMove: ActorLostNotification: Notification: NavalUnitLost - TextNotification: Naval unit lost. + TextNotification: notification-naval-unit-lost ProximityCaptor: Types: Ship Chronoshiftable: @@ -604,7 +604,7 @@ Guardable: ActorLostNotification: Notification: AirUnitLost - TextNotification: Airborne unit lost. + TextNotification: notification-airborne-unit-lost ProximityCaptor: Types: Plane EjectOnDeath: @@ -639,9 +639,9 @@ RequiresCondition: !airborne CaptureNotification: Notification: UnitStolen - TextNotification: Unit stolen. + TextNotification: notification-unit-stolen LoseNotification: UnitLost - LoseTextNotification: Unit lost. + LoseTextNotification: notification-unit-lost ^Plane: Inherits: ^NeutralPlane @@ -700,7 +700,7 @@ Weapon: BuildingExplode EmptyWeapon: BuildingExplode CaptureNotification: - TextNotification: Structure captured. + TextNotification: notification-structure-captured ShakeOnDeath: ProximityCaptor: Types: Building @@ -1344,7 +1344,7 @@ PrimaryBuilding: PrimaryCondition: primary SelectionNotification: PrimaryBuildingSelected - SelectionTextNotification: Primary building selected. + SelectionTextNotification: notification-primary-building-selected WithDecoration@primary: RequiresCondition: primary Position: Top diff --git a/mods/ra/rules/infantry.yaml b/mods/ra/rules/infantry.yaml index bad73c0746..5310be8b45 100644 --- a/mods/ra/rules/infantry.yaml +++ b/mods/ra/rules/infantry.yaml @@ -350,7 +350,7 @@ SPY: Infiltrates: Types: SpyInfiltrate Notification: BuildingInfiltrated - TextNotification: Building infiltrated. + TextNotification: notification-building-infiltrated AutoTarget: InitialStance: HoldFire InitialStanceAI: HoldFire @@ -645,7 +645,7 @@ THF: Infiltrates: Types: ThiefInfiltrate Notification: BuildingInfiltrated - TextNotification: Building infiltrated. + TextNotification: notification-building-infiltrated Voiced: VoiceSet: ThiefVoice -TakeCover: diff --git a/mods/ra/rules/misc.yaml b/mods/ra/rules/misc.yaml index 9d621f3486..bc4d72cbcd 100644 --- a/mods/ra/rules/misc.yaml +++ b/mods/ra/rules/misc.yaml @@ -352,7 +352,7 @@ powerproxy.parabombs: AllowMultiple: true UnitType: badr.bomber SelectTargetSpeechNotification: SelectTarget - SelectTargetTextNotification: Select target. + SelectTargetTextNotification: notification-select-target QuantizedFacings: 8 DisplayBeacon: True BeaconPoster: pbmbicon @@ -371,8 +371,8 @@ powerproxy.sonarpulse: ChargeInterval: 750 EndChargeSpeechNotification: SonarPulseReady SelectTargetSpeechNotification: SelectTarget - EndChargeTextNotification: Sonar pulse ready. - SelectTargetTextNotification: Select target. + EndChargeTextNotification: notification-sonar-pulse-ready + SelectTargetTextNotification: notification-select-target Actor: sonar Terrain: Water AllowUnderShroud: false @@ -391,7 +391,7 @@ powerproxy.paratroopers: Description: A Badger drops a squad of infantry\nanywhere on the map. DropItems: E1,E1,E1,E3,E3 SelectTargetSpeechNotification: SelectTarget - SelectTargetTextNotification: Select target. + SelectTargetTextNotification: notification-select-target AllowImpassableCells: false QuantizedFacings: 8 CameraActor: camera.paradrop diff --git a/mods/ra/rules/player.yaml b/mods/ra/rules/player.yaml index 5d63082f91..007eb359fe 100644 --- a/mods/ra/rules/player.yaml +++ b/mods/ra/rules/player.yaml @@ -17,11 +17,11 @@ Player: DisplayOrder: 0 LowPowerModifier: 300 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -31,11 +31,11 @@ Player: DisplayOrder: 1 LowPowerModifier: 300 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -45,11 +45,11 @@ Player: DisplayOrder: 3 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -60,11 +60,11 @@ Player: DisplayOrder: 2 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -74,11 +74,11 @@ Player: DisplayOrder: 5 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -88,11 +88,11 @@ Player: DisplayOrder: 4 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready BlockedAudio: NoBuild - BlockedTextNotification: Unable to build more. + BlockedTextNotification: notification-unable-to-build-more LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -100,8 +100,8 @@ Player: PlaceBuilding: NewOptionsNotification: NewOptions CannotPlaceNotification: BuildingCannotPlaceAudio - NewOptionsTextNotification: New construction options. - CannotPlaceTextNotification: Cannot deploy here. + NewOptionsTextNotification: notification-new-construction-options + CannotPlaceTextNotification: notification-cannot-deploy-here SupportPowerManager: ScriptTriggers: MissionObjectives: @@ -111,11 +111,11 @@ Player: ConquestVictoryConditions: PowerManager: SpeechNotification: LowPower - TextNotification: Low power. + TextNotification: notification-low-power AllyRepair: PlayerResources: InsufficientFundsNotification: InsufficientFunds - InsufficientFundsTextNotification: Insufficient funds. + InsufficientFundsTextNotification: notification-insufficient-funds CashTickUpNotification: CashTickUp CashTickDownNotification: CashTickDown DeveloperMode: @@ -146,8 +146,8 @@ Player: Prerequisites: global-reusable-engineers FrozenActorLayer: BaseAttackNotifier: - TextNotification: Base under attack. - AllyTextNotification: Our ally is under attack. + TextNotification: notification-base-under-attack + AllyTextNotification: notification-ally-under-attack PlayerStatistics: PlaceBeacon: ProvidesTechPrerequisite@infonly: @@ -177,7 +177,7 @@ Player: Image: iconchevrons Sequence: veteran ResourceStorageWarning: - TextNotification: Silos needed. + TextNotification: notification-silos-needed PlayerExperience: GameSaveViewportManager: PlayerRadarTerrain: diff --git a/mods/ra/rules/structures.yaml b/mods/ra/rules/structures.yaml index 51f7cc6cdb..d81719550b 100644 --- a/mods/ra/rules/structures.yaml +++ b/mods/ra/rules/structures.yaml @@ -44,11 +44,11 @@ MSLO: SelectTargetSpeechNotification: SelectTarget InsufficientPowerSpeechNotification: InsufficientPower IncomingSpeechNotification: AbombLaunchDetected - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - BeginChargeTextNotification: A-bomb prepping. - EndChargeTextNotification: A-bomb ready. - IncomingTextNotification: A-bomb launch detected. + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + BeginChargeTextNotification: notification-abomb-prepping + EndChargeTextNotification: notification-abomb-ready + IncomingTextNotification: notification-abomb-launch-detected MissileWeapon: atomic MissileImage: atomic MissileDelay: 5 @@ -213,9 +213,9 @@ SPEN: RepairsUnits: HpPerStep: 1000 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired PlayerExperience: 5 RallyPoint: ForceSetType: Ship @@ -333,9 +333,9 @@ SYRD: RepairsUnits: HpPerStep: 1000 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired PlayerExperience: 5 RallyPoint: ForceSetType: Ship @@ -441,10 +441,10 @@ IRON: InsufficientPowerSpeechNotification: InsufficientPower BeginChargeSpeechNotification: IronCurtainCharging EndChargeSpeechNotification: IronCurtainReady - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - BeginChargeTextNotification: Iron curtain charging. - EndChargeTextNotification: Iron curtain ready. + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + BeginChargeTextNotification: notification-iron-curtain-charging + EndChargeTextNotification: notification-iron-curtain-ready DisplayRadarPing: True Condition: invulnerability OnFireSound: ironcur9.aud @@ -516,10 +516,10 @@ PDOX: InsufficientPowerSpeechNotification: InsufficientPower BeginChargeSpeechNotification: ChronosphereCharging EndChargeSpeechNotification: ChronosphereReady - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - BeginChargeTextNotification: Chronosphere charging. - EndChargeTextNotification: Chronosphere ready. + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + BeginChargeTextNotification: notification-chronosphere-charging + EndChargeTextNotification: notification-chronosphere-ready Duration: 400 KillCargo: true DisplayRadarPing: True @@ -538,10 +538,10 @@ PDOX: InsufficientPowerSpeechNotification: InsufficientPower BeginChargeSpeechNotification: ChronosphereCharging EndChargeSpeechNotification: ChronosphereReady - SelectTargetTextNotification: Select target. - InsufficientPowerTextNotification: Insufficient power. - BeginChargeTextNotification: Chronosphere charging. - EndChargeTextNotification: Chronosphere ready. + SelectTargetTextNotification: notification-select-target + InsufficientPowerTextNotification: notification-insufficient-power + BeginChargeTextNotification: notification-chronosphere-charging + EndChargeTextNotification: notification-chronosphere-charging Duration: 400 KillCargo: true DisplayRadarPing: True @@ -1016,7 +1016,7 @@ ATEK: Description: Reveals map terrain and provides tactical\ninformation. Requires power and active radar. RevealDelay: 375 LaunchSpeechNotification: SatelliteLaunched - LaunchTextNotification: Satellite launched. + LaunchTextNotification: notification-satellite-launched DisplayTimerRelationships: Ally, Neutral, Enemy SupportPowerPaletteOrder: 90 SupportPowerChargeBar: @@ -1305,7 +1305,7 @@ PROC: PlayerExperiencePercentage: 1 Types: SpyInfiltrate, ThiefInfiltrate InfiltratedNotification: CreditsStolen - InfiltratedTextNotification: Credits stolen. + InfiltratedTextNotification: notification-credits-stolen WithBuildingBib: WithIdleOverlay@TOP: RequiresCondition: !build-incomplete @@ -1370,7 +1370,7 @@ SILO: PlayerExperiencePercentage: 1 Types: ThiefInfiltrate InfiltratedNotification: CreditsStolen - InfiltratedTextNotification: Credits stolen. + InfiltratedTextNotification: notification-credits-stolen WithBuildingBib: HasMinibib: true -WithSpriteBody: @@ -1556,8 +1556,8 @@ AFLD: Description: Reveals an area of the map. SelectTargetSpeechNotification: SelectTarget EndChargeSpeechNotification: SpyPlaneReady - SelectTargetTextNotification: Select target. - EndChargeTextNotification: Spy plane ready. + SelectTargetTextNotification: notification-select-target + EndChargeTextNotification: notifcation-spy-plane-ready CameraActor: camera.spyplane CameraRemoveDelay: 150 UnitType: u2 @@ -1580,8 +1580,8 @@ AFLD: DropItems: E1R1,E1R1,E1R1,E3R1,E3R1 ReinforcementsArrivedSpeechNotification: ReinforcementsArrived SelectTargetSpeechNotification: SelectTarget - ReinforcementsArrivedTextNotification: Reinforcements have arrived. - SelectTargetTextNotification: Select target. + ReinforcementsArrivedTextNotification: notification-reinforcements-have-arrived + SelectTargetTextNotification: notification-select-target AllowImpassableCells: false QuantizedFacings: 8 CameraActor: camera.paradrop @@ -1601,7 +1601,7 @@ AFLD: Name: Parabombs Description: A Badger drops a load of parachuted bombs\nat the selected location. SelectTargetSpeechNotification: SelectTarget - SelectTargetTextNotification: Select target. + SelectTargetTextNotification: notification-select-target CameraActor: camera CameraRemoveDelay: 150 UnitType: badr.bomber @@ -2055,9 +2055,9 @@ FIX: HpPerStep: 1000 Interval: 7 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired PlayerExperience: 5 WithBuildingBib: HasMinibib: true diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index b29f060da9..3427020d8c 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -396,7 +396,7 @@ MCV: Facing: 384 TransformSounds: placbldg.aud, build5.aud NoTransformNotification: BuildingCannotPlaceAudio - NoTransformTextNotification: Cannot deploy here. + NoTransformTextNotification: notification-cannot-deploy-here MustBeDestroyed: RequiredForShortGame: true BaseBuilding: diff --git a/mods/ts/languages/rules/en.ftl b/mods/ts/languages/rules/en.ftl index d5aa2b3cfd..23d234bc37 100644 --- a/mods/ts/languages/rules/en.ftl +++ b/mods/ts/languages/rules/en.ftl @@ -9,6 +9,15 @@ checkbox-redeployable-mcvs = .label = Redeployable MCVs .description = Allow undeploying Construction Yard +notification-insufficient-funds = Insufficient funds. +notification-new-construction-options = New construction options. +notification-cannot-deploy-here = Cannot deploy here. +notification-low-power = Low power. +notification-base-under-attack = Base under attack. +notification-ally-under-attack = Our ally is under attack. +notification-harvester-under-attack = Harvester under attack. +notification-silos-needed = Silos needed. + ## World options-starting-units = .mcv-only = MCV Only @@ -22,3 +31,25 @@ dropdown-map-creeps = options-difficulty = .normal = Normal + +## Structures +notification-construction-complete = Construction complete. +notification-unit-ready = Unit ready. +notification-unable-to-comply-building-in-progress = Unable to comply. Building in progress. +notification-repairing = Repairing. +notification-unit-repaired = Unit repaired. +notification-ion-cannon-ready = Ion cannon ready. +notification-select-target = Select target. +notification-cluster-missile-ready = Cluster missile ready. +notifciation-missile-launch-detected = Missile launch detected. +notification-emp-cannon-ready = EMP cannon ready. + +## Defaults +notification-unit-lost = Unit lost. +notification-unit-promoted = Unit promoted. +notification-primary-building-selected = Primary building selected. + +## Infantry +notification-building-infiltrated = Building infiltrated. +notification-building-captured = Building captured. +notification-bridge-repaired = Bridge repaired. diff --git a/mods/ts/rules/civilian-infantry.yaml b/mods/ts/rules/civilian-infantry.yaml index 9d1f3260fe..b0646401cf 100644 --- a/mods/ts/rules/civilian-infantry.yaml +++ b/mods/ts/rules/civilian-infantry.yaml @@ -82,7 +82,7 @@ CHAMSPY: Infiltrates: Types: SpyInfiltrate Notification: BuildingInfiltrated - TextNotification: Building infiltrated. + TextNotification: notification-building-infiltrated -WithSplitAttackPaletteInfantryBody: WithDisguisingInfantryBody: IdleSequences: idle1, idle2 diff --git a/mods/ts/rules/civilian-structures.yaml b/mods/ts/rules/civilian-structures.yaml index 22b0a9308a..b55af73f38 100644 --- a/mods/ts/rules/civilian-structures.yaml +++ b/mods/ts/rules/civilian-structures.yaml @@ -827,7 +827,7 @@ CAHOSP: Capturable: Types: building CaptureNotification: - TextNotification: Building captured. + TextNotification: notification-building-captured ProvidesPrerequisite@BuildingName: ThrowsShrapnel@SMALL: Pieces: 5, 9 diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index 7f5680f3b5..41a7c18bcb 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -17,7 +17,7 @@ ^GainsExperience: GainsExperience: LevelUpNotification: LevelUp - LevelUpTextNotification: Unit promoted. + LevelUpTextNotification: notification-unit-promoted Conditions: 500: rank 1000: rank @@ -392,7 +392,7 @@ OwnerLostAction: Action: Kill CaptureNotification: - TextNotification: Building captured. + TextNotification: notification-building-captured Demolishable: Condition: being-demolished Sellable: @@ -600,7 +600,7 @@ Voice: Move HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost DamagedByTerrain: Terrain: Tiberium, BlueTiberium Damage: 200 @@ -812,7 +812,7 @@ Voice: Move HiddenUnderFog: ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost CaptureManager: BeingCapturedCondition: being-captured Capturable: @@ -929,7 +929,7 @@ Voice: Move MoveIntoShroud: false ActorLostNotification: - TextNotification: Unit lost. + TextNotification: notification-unit-lost BodyOrientation: QuantizedFacings: 0 CameraPitch: 85 @@ -1436,7 +1436,7 @@ PrimaryBuilding: PrimaryCondition: primary SelectionNotification: PrimaryBuildingSelected - SelectionTextNotification: Primary building selected. + SelectionTextNotification: notification-primary-building-selected WithTextDecoration@primary: RequiresCondition: primary Position: Top diff --git a/mods/ts/rules/gdi-structures.yaml b/mods/ts/rules/gdi-structures.yaml index 519c7634a4..2017e6fe18 100644 --- a/mods/ts/rules/gdi-structures.yaml +++ b/mods/ts/rules/gdi-structures.yaml @@ -321,9 +321,9 @@ GAHPAD: PauseOnCondition: empdisable PlayerExperience: 5 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired ProductionBar: ProductionType: Air WithIdleOverlay@PLATFORM: @@ -371,9 +371,9 @@ GADEPT: PauseOnCondition: empdisable PlayerExperience: 5 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired RallyPoint: Palette: mouse IsPlayerPalette: false @@ -563,8 +563,8 @@ GAPLUG: Description: Initiate an Ion Cannon strike.\nApplies instant damage to a small area. EndChargeSpeechNotification: IonCannonReady SelectTargetSpeechNotification: SelectTarget - EndChargeTextNotification: Ion cannon ready. - SelectTargetTextNotification: Select target. + EndChargeTextNotification: notification-ion-cannon-ready + SelectTargetTextNotification: notification-select-target DisplayRadarPing: True CameraActor: camera DropPodsPower: @@ -575,7 +575,7 @@ GAPLUG: Name: Drop Pods Description: Drop Pod reinforcements.\nSmall team of elite soldiers orbital drops\nto target location. SelectTargetSpeechNotification: SelectTarget - SelectTargetTextNotification: Select target. + SelectTargetTextNotification: notification-select-target DisplayRadarPing: true ChargeInterval: 10000 UnitTypes: DPOD2E1, DPOD2E2 diff --git a/mods/ts/rules/nod-structures.yaml b/mods/ts/rules/nod-structures.yaml index e5a1f699dd..6b89e3e0a9 100644 --- a/mods/ts/rules/nod-structures.yaml +++ b/mods/ts/rules/nod-structures.yaml @@ -285,9 +285,9 @@ NAHPAD: PauseOnCondition: empdisable PlayerExperience: 5 StartRepairingNotification: Repairing - StartRepairingTextNotification: Repairing. + StartRepairingTextNotification: notification-repairing FinishRepairingNotification: UnitRepaired - FinishRepairingTextNotification: Unit repaired. + FinishRepairingTextNotification: notification-unit-repaired ProductionBar: ProductionType: Air WithIdleOverlay@PLATFORM: @@ -538,9 +538,9 @@ NAMISL: EndChargeSpeechNotification: ClusterMissileReady SelectTargetSpeechNotification: SelectTarget IncomingSpeechNotification: MissileLaunchDetected - EndChargeTextNotification: Cluster missile ready. - SelectTargetTextNotification: Select target. - IncomingTextNotification: Missile launch detected. + EndChargeTextNotification: notification-cluster-missile-ready + SelectTargetTextNotification: notification-select-target + IncomingTextNotification: notifciation-missile-launch-detected LaunchSound: icbm1.aud MissileWeapon: ClusterMissile MissileImage: ClusterMissile diff --git a/mods/ts/rules/player.yaml b/mods/ts/rules/player.yaml index 89a84a9c62..915d0ecd0d 100644 --- a/mods/ts/rules/player.yaml +++ b/mods/ts/rules/player.yaml @@ -20,9 +20,9 @@ Player: BuildDurationModifier: 120 LowPowerModifier: 300 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -33,9 +33,9 @@ Player: BuildDurationModifier: 120 LowPowerModifier: 300 ReadyAudio: ConstructionComplete - ReadyTextNotification: Construction complete. + ReadyTextNotification: notification-construction-complete LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Building OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -46,9 +46,9 @@ Player: BuildDurationModifier: 120 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -59,9 +59,9 @@ Player: BuildDurationModifier: 120 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -72,9 +72,9 @@ Player: BuildDurationModifier: 120 LowPowerModifier: 300 ReadyAudio: UnitReady - ReadyTextNotification: Unit ready. + ReadyTextNotification: notification-unit-ready LimitedAudio: BuildingInProgress - LimitedTextNotification: Unable to comply. Building in progress. + LimitedTextNotification: notification-unable-to-comply-building-in-progress QueuedAudio: Training OnHoldAudio: OnHold CancelledAudio: Cancelled @@ -82,8 +82,8 @@ Player: PlaceBuilding: NewOptionsNotification: NewOptions CannotPlaceNotification: BuildingCannotPlaceAudio - NewOptionsTextNotification: New construction options. - CannotPlaceTextNotification: Cannot deploy here. + NewOptionsTextNotification: notification-new-construction-options + CannotPlaceTextNotification: notification-cannot-deploy-here SupportPowerManager: ScriptTriggers: MissionObjectives: @@ -93,11 +93,11 @@ Player: ConquestVictoryConditions: PowerManager: SpeechNotification: LowPower - TextNotification: Low power. + TextNotification: notification-low-power AllyRepair: PlayerResources: InsufficientFundsNotification: InsufficientFunds - InsufficientFundsTextNotification: Insufficient funds. + InsufficientFundsTextNotification: notification-insufficient-funds CashTickUpNotification: CashTickUp CashTickDownNotification: CashTickDown DeveloperMode: @@ -114,11 +114,11 @@ Player: Prerequisites: global-factundeploy FrozenActorLayer: BaseAttackNotifier: - TextNotification: Base under attack. - AllyTextNotification: Our ally is under attack. + TextNotification: notification-base-under-attack + AllyTextNotification: notification-ally-under-attack AllyNotification: OurAllyIsUnderAttack HarvesterAttackNotifier: - TextNotification: Harvester under attack. + TextNotification: notification-harvester-under-attack PlayerStatistics: PlaceBeacon: Palette: effect @@ -143,7 +143,7 @@ Player: Prerequisites: techlevel.low, techlevel.medium, techlevel.high, techlevel.superweapons Id: unrestricted ResourceStorageWarning: - TextNotification: Silos needed. + TextNotification: notification-silos-needed PlayerExperience: GameSaveViewportManager: PlayerRadarTerrain: diff --git a/mods/ts/rules/shared-infantry.yaml b/mods/ts/rules/shared-infantry.yaml index 7235d2e2ad..ea878ca598 100644 --- a/mods/ts/rules/shared-infantry.yaml +++ b/mods/ts/rules/shared-infantry.yaml @@ -73,7 +73,7 @@ ENGINEER: InstantlyRepairs: RepairsBridges: RepairNotification: BridgeRepaired - RepairTextNotification: Bridge repaired. + RepairTextNotification: notification-bridge-repaired CaptureManager: Captures: CaptureTypes: building diff --git a/mods/ts/rules/shared-support.yaml b/mods/ts/rules/shared-support.yaml index 462d374b61..aa5673abbd 100644 --- a/mods/ts/rules/shared-support.yaml +++ b/mods/ts/rules/shared-support.yaml @@ -51,5 +51,5 @@ NAPULS: Description: Fires a pulse blast which disables\nall mechanical units in the area. EndChargeSpeechNotification: EmPulseCannonReady SelectTargetSpeechNotification: SelectTarget - EndChargeTextNotification: EMP cannon ready. - SelectTargetTextNotification: Select target. + EndChargeTextNotification: notification-emp-cannon-ready + SelectTargetTextNotification: notification-select-target diff --git a/mods/ts/rules/shared-vehicles.yaml b/mods/ts/rules/shared-vehicles.yaml index 5078c013a8..bc588bf76a 100644 --- a/mods/ts/rules/shared-vehicles.yaml +++ b/mods/ts/rules/shared-vehicles.yaml @@ -35,7 +35,7 @@ MCV: NoTransformSounds: Voice: Move NoTransformNotification: BuildingCannotPlaceAudio - NoTransformTextNotification: Cannot deploy here. + NoTransformTextNotification: notification-cannot-deploy-here RenderSprites: Image: mcv.gdi FactionImages: