Skip to content

[ADD] Картавость#2461

Open
kerfus-owo wants to merge 9 commits intoAdventureTimeSS14:masterfrom
kerfus-owo:burriness-accent
Open

[ADD] Картавость#2461
kerfus-owo wants to merge 9 commits intoAdventureTimeSS14:masterfrom
kerfus-owo:burriness-accent

Conversation

@kerfus-owo
Copy link
Contributor

@kerfus-owo kerfus-owo commented Feb 4, 2026

Описание PR

  • Добавляет новый акцент - картавость, заменяющий букву: "р" на "хх"

Почему / Баланс

  • Больше разнообразия в отыгрыше персонажа

Техническая информация

  • Добавляет код для нового акцента

Медиа

image

🆑 Kerfus

  • add: Добавлен новый акцент - картавость, заменяющий "р" на "хх".

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 4, 2026

Walkthrough

Добавлен компонент BurrinessAccentComponent и система BurrinessAccentSystem, которая подписывается на AccentGetEvent. В обработчике события выполняются последовательные regex-замены: латинские r+hh, R+HH; кириллические р+хх, Р+ХХ. В систему внедрён IRobustRandom (в текущей реализации не используется). Добавлены RU-локализации trait-burriness-accent-name и trait-burriness-accent-desc, прототип черты ADTBurrinessAccent и включение акцента в clone.yml.

Possibly related PRs

  • [Bounty] SickTeethAccent #1888 — добавляет аналогичный акцент с компонентом и EntitySystem, подписывающимся на AccentGetEvent и выполняющим регексп‑замены в сообщениях.

Suggested reviewers

  • Unlumy
  • FaDeOkno
  • Ratyyy
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed Название ясно отражает основное изменение - добавление нового акцента 'картавость', соответствует содержимому PR.
Description check ✅ Passed Описание полностью соответствует внесённым изменениям - объясняет новый акцент, причины добавления и технические детали.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs`:
- Around line 20-21: The handler OnAccent currently takes AccentGetEvent by
value so modifications may be lost; change its signature to accept the event by
ref (i.e. ref AccentGetEvent args) and update any usages inside the method to
work with the ref parameter; ensure the method still matches the system's event
subscription signature (OnAccent(EntityUid uid, BurrinessAccentComponent
component, ref AccentGetEvent args)) so modifications to args persist.
- Around line 24-27: Replace the hardcoded "хх" in BurrinessAccentSystem where
BurrRegex.Replace uses _random.Pick(new List<string> { "хх" }) with a localized
lookup using Loc.GetString("accent-burriness-replacement"), and update the FTL
localization files by adding the key accent-burriness-replacement to the
combo.ftl for both Russian and English with the appropriate values (ru: "хх",
en: [English replacement]); ensure the string key matches exactly and that the
code imports/uses Loc.GetString correctly.

In `@Resources/Locale/ru-RU/ADT/traits/neutral.ftl`:
- Around line 16-17: Исправьте опечатку в значении ключа
trait-burriness-accent-desc: замените «выговаххивать» на правильное
«выговаривать» (ключ trait-burriness-accent-desc в файле neutral.ftl), оставив
остальной текст без изменений.

In `@Resources/Prototypes/ADT/Traits/speech.yml`:
- Around line 29-36: В трейтe ADTBurrinessAccent компонент указан как
BurrinessAccentComponent, но зарегистрированное имя компонента —
BurrinessAccent; замените в списке components значение BurrinessAccentComponent
на BurrinessAccent (уберите суффикс "Component") так же, как сделано для
MothAccent, SickTeethAccent и NyaAccent, чтобы загрузка трейта корректно
разрешила компонент.
🧹 Nitpick comments (2)
Content.Server/ADT/Speech/Component/BurrinessAccentComponent.cs (1)

3-5: Добавьте XML‑summary для компонента.
Короткое описание упростит поддержку и поиск назначения компонента.

✍️ Возможный вариант
 [RegisterComponent]
+/// <summary>
+/// Компонент акцента «картавость», применяющий замену "р" на "хх".
+/// </summary>
 public sealed partial class BurrinessAccentComponent : Component
 {
 
 }

As per coding guidelines: и предлагай /// summary документацию к C# коду, к важным функциям или классам.

Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs (1)

8-9: Добавьте XML‑summary для системы.
Это облегчает поддержку и поиск назначения класса.

✍️ Возможный вариант
- public sealed class BurrinessAccentSystem : EntitySystem
+ /// <summary>
+ /// Система акцента «картавость», изменяющая сообщение при AccentGetEvent.
+ /// </summary>
+ public sealed class BurrinessAccentSystem : EntitySystem

As per coding guidelines: и предлагай /// summary документацию к C# коду, к важным функциям или классам.

@Red-Lis
Copy link
Collaborator

Red-Lis commented Feb 5, 2026

Меня пугает как это будет с ТТС звучать

@kerfus-owo
Copy link
Contributor Author

Меня пугает как это будет с ТТС звучать

Ну я проверял на некоторых женских - с двумя "х" вполне себе прилично

@Red-Lis
Copy link
Collaborator

Red-Lis commented Feb 5, 2026

Ну я проверял на некоторых женских - с двумя "х" вполне себе прилично

На мужских проверял? И по возможности видос скинь, пожалуйста

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs`:
- Around line 1-4: Файл BurrinessAccentSystem.cs имеет несортированные директивы
using; в соответствии с правилами для /ADT/ нужно упорядочить их по алфавиту.
Откройте верх файла (вокруг объявления класса BurrinessAccentSystem) и
переставьте строки using так, чтобы они шли в алфавитном порядке (например:
Content.Server.Speech.Components, Content.Shared.Speech, Robust.Shared.Random,
System.Text.RegularExpressions или их корректный алфавитный порядок), затем
сохраните файл.
- Around line 12-13: В текущем BurrinessAccentSystem заменяются все вхождения по
BurrRegex и LatinBurrRegex на строчные "хх", что ломает регистр (например "Рука"
→ "ххука" вместо "Ххука"); поменяйте логику замены так, как сделано в
ResomiAccentSystem/RoarAccentSystem/VoxAccentSystem — учитывайте регистр: либо
добавить отдельные регулярки/ветвления для заглавных и строчных форм (например
"[р]+" и "[Р]+", "[r]+" и "[R]+") и подставлять "хх"/"ХХ" соответственно, либо
использовать MatchEvaluator в Replace, который по совпадению определяет, все ли
буквы в верхнем регистре/первая буква заглавная, и возвращает соответствующую
вариацию замены; обновите BurrRegex/LatinBurrRegex и метод(ы) в
BurrinessAccentSystem, чтобы сохранять оригинальный регистр при замене.
🧹 Nitpick comments (2)
Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs (2)

8-10: Добавьте /// <summary> документацию к классу.

Для понимания назначения системы стоит добавить XML-документацию.

📝 Пример
+/// <summary>
+/// Система акцента «картавость»: заменяет «р/Р» на «хх» и «r/R» на «hh».
+/// </summary>
 public sealed class BurrinessAccentSystem : EntitySystem

As per coding guidelines, "предлагай /// summary документацию к C# коду, к важным функциям или классам".


25-33: Лишняя аллокация: _random.Pick с одноэлементным списком.

На каждое совпадение Regex создаётся новый List<string> из одного элемента, и _random.Pick по нему бессмысленен — результат всегда один и тот же. Это лишняя нагрузка на GC при каждом сообщении. Если в будущем планируется добавить варианты замен — оставьте список, но вынесите его в поле класса. Если нет — используйте строку напрямую.

♻️ Упрощённый вариант (без вариативности)
-        message = BurrRegex.Replace(
-            message,
-            match => _random.Pick(new List<string> { "хх" })
-        );
+        message = BurrRegex.Replace(message, "хх");

-        message = LatinBurrRegex.Replace(
-            message,
-            match => _random.Pick(new List<string> { "hh" })
-        );
+        message = LatinBurrRegex.Replace(message, "hh");

Если вариативность всё же нужна в перспективе, вынесите списки в static readonly поля:

♻️ Вариант с полем
+    private static readonly List<string> CyrillicReplacements = new() { "хх" };
+    private static readonly List<string> LatinReplacements = new() { "hh" };
+
     private void OnAccent(...)
     {
         ...
-        message = BurrRegex.Replace(
-            message,
-            match => _random.Pick(new List<string> { "хх" })
-        );
+        message = BurrRegex.Replace(
+            message,
+            _ => _random.Pick(CyrillicReplacements)
+        );

@kerfus-owo
Copy link
Contributor Author

Ну я проверял на некоторых женских - с двумя "х" вполне себе прилично

На мужских проверял? И по возможности видос скинь, пожалуйста

К сожалению видос не смогу записать, но проверяя на МРП звучало прилично. Конечно в коротких словах не всегда получается так, как задумано, но в целом сойдёт

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants