Conversation
WalkthroughДобавлен компонент Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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 : EntitySystemAs per coding guidelines: и предлагай /// summary документацию к C# коду, к важным функциям или классам.
Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs
Outdated
Show resolved
Hide resolved
Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs
Outdated
Show resolved
Hide resolved
|
Меня пугает как это будет с ТТС звучать |
Ну я проверял на некоторых женских - с двумя "х" вполне себе прилично |
На мужских проверял? И по возможности видос скинь, пожалуйста |
There was a problem hiding this comment.
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 : EntitySystemAs 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) + );
Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs
Outdated
Show resolved
Hide resolved
Content.Server/ADT/Speech/EntitySystems/BurrinessAccentSystem.cs
Outdated
Show resolved
Hide resolved
К сожалению видос не смогу записать, но проверяя на МРП звучало прилично. Конечно в коротких словах не всегда получается так, как задумано, но в целом сойдёт |
Описание PR
Почему / Баланс
Техническая информация
Медиа
🆑 Kerfus