diff --git a/Content.Server/ADT/Speech/Component/BurrinessAccentComponent.cs b/Content.Server/ADT/Speech/Component/BurrinessAccentComponent.cs new file mode 100644 index 00000000000..eac651c2d46 --- /dev/null +++ b/Content.Server/ADT/Speech/Component/BurrinessAccentComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.Speech.Components; + +[RegisterComponent] +public sealed partial class BurrinessAccentComponent : Component +{ + +} \ No newline at end of file diff --git a/Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs b/Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs new file mode 100644 index 00000000000..644b7acfaae --- /dev/null +++ b/Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs @@ -0,0 +1,27 @@ +using Content.Server.Speech.Components; +using Content.Shared.Speech; +using Robust.Shared.Random; +using System.Text.RegularExpressions; + +namespace Content.Server.Speech.EntitySystems; + +public sealed class BurrinessAccentSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnAccent); + } + + private void OnAccent(EntityUid uid, BurrinessAccentComponent component, ref AccentGetEvent args) + { + var message = args.Message; + message = Regex.Replace(message, "r+", "hh"); + message = Regex.Replace(message, "R+", "HH"); + message = Regex.Replace(message, "р+", "хх"); + message = Regex.Replace(message, "Р+", "ХХ"); + args.Message = message; + } +} diff --git a/Resources/Locale/ru-RU/ADT/traits/neutral.ftl b/Resources/Locale/ru-RU/ADT/traits/neutral.ftl index 9369fc788ee..ab953366556 100644 --- a/Resources/Locale/ru-RU/ADT/traits/neutral.ftl +++ b/Resources/Locale/ru-RU/ADT/traits/neutral.ftl @@ -13,6 +13,9 @@ trait-nya-accent-desc = Кажется на вас нашло мря-гкое г trait-sick-teeth-accent-name = Зубной дефект trait-sick-teeth-accent-desc = Проблемы с зубами меняют вашу речь: некоторые согласные звучат иначе. +trait-burriness-accent-name = Картавость +trait-burriness-accent-desc = Вы не умеете выговаххивать букву "Р" ;w; + trait-tall-name = Высокий diff --git a/Resources/Prototypes/ADT/Traits/speech.yml b/Resources/Prototypes/ADT/Traits/speech.yml index 18b870c3077..7ea6f4bc7d9 100644 --- a/Resources/Prototypes/ADT/Traits/speech.yml +++ b/Resources/Prototypes/ADT/Traits/speech.yml @@ -25,3 +25,12 @@ cost: 1 components: - type: SickTeethAccent + +- type: trait + id: ADTBurrinessAccent + name: trait-burriness-accent-name + description: trait-burriness-accent-desc + category: SpeechTraits + cost: 1 + components: + - type: BurrinessAccent diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml index ebd34055841..098b3934efd 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -69,6 +69,7 @@ - StutteringAccent - TTS # Corvax-TTS # ADT-fix-clone-start + - BurrinessAccent - LanguageSpeaker - SpeechBarks - SizeAttribute