diff --git a/Content.Server/Speech/EntitySystems/LizardAccentSystem.cs b/Content.Server/Speech/EntitySystems/LizardAccentSystem.cs index 7f2736975fd..cdf7bc4f111 100644 --- a/Content.Server/Speech/EntitySystems/LizardAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/LizardAccentSystem.cs @@ -2,12 +2,17 @@ using System.Text.RegularExpressions; using Content.Server.Speech.Components; +using Robust.Shared.Random; using Content.Shared.Speech; +#pragma warning disable RA0026 + namespace Content.Server.Speech.EntitySystems; public sealed class LizardAccentSystem : EntitySystem { + [Dependency] private readonly IRobustRandom _random = default!; // Arcane: Localization + private static readonly Regex RegexLowerS = new("s+"); private static readonly Regex RegexUpperS = new("S+"); private static readonly Regex RegexInternalX = new(@"(\w)x"); @@ -35,6 +40,56 @@ private void OnAccent(EntityUid uid, LizardAccentComponent component, AccentGetE // eckS message = RegexUpperEndX.Replace(message, "ECKS$1"); + // Arcane-Start: Localization + // c => ссс + message = Regex.Replace( + message, + "с+", + _random.Pick(new List() { "сс", "ссс" }) + ); + // С => CCC + message = Regex.Replace( + message, + "С+", + _random.Pick(new List() { "СС", "ССС" }) + ); + // з => ссс + message = Regex.Replace( + message, + "з+", + _random.Pick(new List() { "сс", "ссс" }) + ); + // З => CCC + message = Regex.Replace( + message, + "З+", + _random.Pick(new List() { "СС", "ССС" }) + ); + // ш => шшш + message = Regex.Replace( + message, + "ш+", + _random.Pick(new List() { "шш", "шшш" }) + ); + // Ш => ШШШ + message = Regex.Replace( + message, + "Ш+", + _random.Pick(new List() { "ШШ", "ШШШ" }) + ); + // ч => щщщ + message = Regex.Replace( + message, + "ч+", + _random.Pick(new List() { "щщ", "щщщ" }) + ); + // Ч => ЩЩЩ + message = Regex.Replace( + message, + "Ч+", + _random.Pick(new List() { "ЩЩ", "ЩЩЩ" }) + ); + // Arcane-End args.Message = message; } -} \ No newline at end of file +} diff --git a/Content.Server/Speech/EntitySystems/StutteringSystem.cs b/Content.Server/Speech/EntitySystems/StutteringSystem.cs index a730727cf17..a89caf5cd02 100644 --- a/Content.Server/Speech/EntitySystems/StutteringSystem.cs +++ b/Content.Server/Speech/EntitySystems/StutteringSystem.cs @@ -16,7 +16,7 @@ public sealed class StutteringSystem : SharedStutteringSystem [Dependency] private readonly IRobustRandom _random = default!; // Regex of characters to stutter. - private static readonly Regex Stutter = new(@"[b-df-hj-np-tv-wxyz]", + private static readonly Regex Stutter = new(@"[b-df-hj-np-tv-wxyz-б-вд-к-лмн-прст]", // Arcane-Edit RegexOptions.Compiled | RegexOptions.IgnoreCase); public override void Initialize()