From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Fri, 3 Oct 2025 11:08:36 +0000 (+0300) Subject: Localize space villain arcade (#40641) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=3dacdc03c619f22f0af956c8ffde885e3e501a73;p=space-station-14.git Localize space villain arcade (#40641) --- diff --git a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeComponent.cs b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeComponent.cs index 3c8a4de2df..35e1f5b89b 100644 --- a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeComponent.cs +++ b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.Arcade; +using Content.Shared.Dataset; using Robust.Shared.Audio; using Robust.Shared.Prototypes; @@ -23,85 +24,73 @@ public sealed partial class SpaceVillainArcadeComponent : SharedSpaceVillainArca /// /// The sound played when a new session of the SpaceVillain game is begun. /// - [DataField("newGameSound")] + [DataField] public SoundSpecifier NewGameSound = new SoundPathSpecifier("/Audio/Effects/Arcade/newgame.ogg"); /// /// The sound played when the player chooses to attack. /// - [DataField("playerAttackSound")] + [DataField] public SoundSpecifier PlayerAttackSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_attack.ogg"); /// /// The sound played when the player chooses to heal. /// - [DataField("playerHealSound")] + [DataField] public SoundSpecifier PlayerHealSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_heal.ogg"); /// /// The sound played when the player chooses to regain mana. /// - [DataField("playerChargeSound")] + [DataField] public SoundSpecifier PlayerChargeSound = new SoundPathSpecifier("/Audio/Effects/Arcade/player_charge.ogg"); /// /// The sound played when the player wins. /// - [DataField("winSound")] + [DataField] public SoundSpecifier WinSound = new SoundPathSpecifier("/Audio/Effects/Arcade/win.ogg"); /// /// The sound played when the player loses. /// - [DataField("gameOverSound")] + [DataField] public SoundSpecifier GameOverSound = new SoundPathSpecifier("/Audio/Effects/Arcade/gameover.ogg"); /// /// The prefixes that can be used to create the game name. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("possibleFightVerbs")] - public List PossibleFightVerbs = new() - {"Defeat", "Annihilate", "Save", "Strike", "Stop", "Destroy", "Robust", "Romance", "Pwn", "Own"}; + [DataField] + public ProtoId PossibleFightVerbs = "SpaceVillainVerbsFight"; /// /// The first names/titles that can be used to construct the name of the villain. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("possibleFirstEnemyNames")] - public List PossibleFirstEnemyNames = new(){ - "the Automatic", "Farmer", "Lord", "Professor", "the Cuban", "the Evil", "the Dread King", - "the Space", "Lord", "the Great", "Duke", "General" - }; + [DataField] + public ProtoId PossibleFirstEnemyNames = "SpaceVillainNamesEnemyFirst"; /// /// The last names that can be used to construct the name of the villain. /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("possibleLastEnemyNames")] - public List PossibleLastEnemyNames = new() - { - "Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", - "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn" - }; + [DataField] + public ProtoId PossibleLastEnemyNames = "SpaceVillainNamesEnemyLast"; /// /// The prototypes that can be dispensed as a reward for winning the game. /// - [ViewVariables(VVAccess.ReadWrite)] [DataField] public List PossibleRewards = new(); /// /// The minimum number of prizes the arcade machine can have. /// - [DataField("rewardMinAmount")] + [DataField] public int RewardMinAmount; /// /// The maximum number of prizes the arcade machine can have. /// - [DataField("rewardMaxAmount")] + [DataField] public int RewardMaxAmount; /// diff --git a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs index bb717c7012..021d6f6f11 100644 --- a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs +++ b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs @@ -4,15 +4,18 @@ using Content.Server.Advertise.EntitySystems; using Content.Shared.Advertise.Components; using Content.Shared.Arcade; using Content.Shared.Power; +using Content.Shared.Random.Helpers; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; +using Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.Arcade.SpaceVillain; public sealed partial class SpaceVillainArcadeSystem : EntitySystem { + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; @@ -52,7 +55,7 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem /// A fight-verb. public string GenerateFightVerb(SpaceVillainArcadeComponent arcade) { - return _random.Pick(arcade.PossibleFightVerbs); + return _random.Pick(_prototypeManager.Index(arcade.PossibleFightVerbs)); } /// @@ -61,7 +64,10 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem /// An enemy-name. public string GenerateEnemyName(SpaceVillainArcadeComponent arcade) { - return $"{_random.Pick(arcade.PossibleFirstEnemyNames)} {_random.Pick(arcade.PossibleLastEnemyNames)}"; + var possibleFirstEnemyNames = _prototypeManager.Index(arcade.PossibleFirstEnemyNames); + var possibleLastEnemyNames = _prototypeManager.Index(arcade.PossibleLastEnemyNames); + + return $"{_random.Pick(possibleFirstEnemyNames)} {_random.Pick(possibleLastEnemyNames)}"; } private void OnComponentInit(EntityUid uid, SpaceVillainArcadeComponent component, ComponentInit args) diff --git a/Resources/Locale/en-US/datasets/arcade_villain.ftl b/Resources/Locale/en-US/datasets/arcade_villain.ftl new file mode 100644 index 0000000000..b1cb2d5973 --- /dev/null +++ b/Resources/Locale/en-US/datasets/arcade_villain.ftl @@ -0,0 +1,40 @@ +# Verbs +arcade-villain-verbs-fight-1 = Annihilate +arcade-villain-verbs-fight-2 = Defeat +arcade-villain-verbs-fight-3 = Destroy +arcade-villain-verbs-fight-4 = Own +arcade-villain-verbs-fight-5 = Pwn +arcade-villain-verbs-fight-6 = Robust +arcade-villain-verbs-fight-7 = Romance +arcade-villain-verbs-fight-8 = Save +arcade-villain-verbs-fight-9 = Stop +arcade-villain-verbs-fight-10 = Strike + +# Enemy names +arcade-villain-names-enemy-first-1 = Duke +arcade-villain-names-enemy-first-2 = Farmer +arcade-villain-names-enemy-first-3 = General +arcade-villain-names-enemy-first-4 = Lord +arcade-villain-names-enemy-first-5 = Professor +arcade-villain-names-enemy-first-6 = the Automatic +arcade-villain-names-enemy-first-7 = the Cuban +arcade-villain-names-enemy-first-8 = the Dread King +arcade-villain-names-enemy-first-9 = the Evil +arcade-villain-names-enemy-first-10 = the Great +arcade-villain-names-enemy-first-11 = the Space + +arcade-villain-names-enemy-last-1 = Crushulon +arcade-villain-names-enemy-last-2 = ERPer +arcade-villain-names-enemy-last-3 = Ectoplasm +arcade-villain-names-enemy-last-4 = Griefer +arcade-villain-names-enemy-last-5 = Jeff +arcade-villain-names-enemy-last-6 = Lizard Man +arcade-villain-names-enemy-last-7 = Melonoid +arcade-villain-names-enemy-last-8 = Murdertron +arcade-villain-names-enemy-last-9 = Peteoid +arcade-villain-names-enemy-last-10 = Ruin +arcade-villain-names-enemy-last-11 = Sorcerer +arcade-villain-names-enemy-last-12 = Uhangoid +arcade-villain-names-enemy-last-13 = Unicorn +arcade-villain-names-enemy-last-14 = Vhakoid +arcade-villain-names-enemy-last-15 = slime diff --git a/Resources/Prototypes/Datasets/arcade_villain.yml b/Resources/Prototypes/Datasets/arcade_villain.yml new file mode 100644 index 0000000000..5e4a517f1f --- /dev/null +++ b/Resources/Prototypes/Datasets/arcade_villain.yml @@ -0,0 +1,17 @@ +- type: localizedDataset + id: SpaceVillainVerbsFight + values: + prefix: arcade-villain-verbs-fight- + count: 10 + +- type: localizedDataset + id: SpaceVillainNamesEnemyFirst + values: + prefix: arcade-villain-names-enemy-first- + count: 11 + +- type: localizedDataset + id: SpaceVillainNamesEnemyLast + values: + prefix: arcade-villain-names-enemy-last- + count: 15