using System.Collections.Frozen; using Content.Shared.Random.Helpers; using Content.Shared.Speech.Components; using Robust.Shared.Random; using Robust.Shared.Timing; namespace Content.Shared.Speech.EntitySystems; public sealed partial class BarkAccentSystem : RelayAccentSystem { [Dependency] private IGameTiming _timing = default!; [Dependency] private IRobustRandom _random = default!; private static readonly IReadOnlyList Barks = [ " Гав!", " ГАВ", " вуф-вуф" // Corvax-Localization ]; private static readonly FrozenDictionary SpecialWords = new Dictionary { { "ah", "arf" }, { "Ah", "Arf" }, { "oh", "oof" }, { "Oh", "Oof" }, //Corvax-Localization-Start { "га", "гаф" }, { "Га", "Гаф" }, { "угу", "вуф" }, { "Угу", "Вуф" }, //Corvax-Localization-End }.ToFrozenDictionary(); public override string Accentuate(string message, Entity? ent = null) { var random = ent.HasValue ? SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent.Value)) : _random; foreach (var (word, repl) in SpecialWords) { message = message.Replace(word, repl); } return message.Replace("!", random.Pick(Barks)) .Replace("l", "r") .Replace("L", "R") .Replace("л", "р").Replace("Л", "Р");//Corvax-Localization } }