Skip to content

Переработка шестой улицы (СРМ) в новую фракцию - #155

Draft
EmperorStukov wants to merge 4 commits into
ss14-art:masterfrom
EmperorStukov:srm-rework-to-knc
Draft

Переработка шестой улицы (СРМ) в новую фракцию#155
EmperorStukov wants to merge 4 commits into
ss14-art:masterfrom
EmperorStukov:srm-rework-to-knc

Conversation

@EmperorStukov

@EmperorStukov EmperorStukov commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

Описание

Тут короче будет дохуя работы и буков, а может и нет

Описание изменений.


TODO

  • Роли реворка
  • Станция
  • Шаттлы
  • Догтаги (вендоры, магазин)
  • Прототипы доспехов
  • Прототипы оружия
  • Спрайты для оружия
  • Спрайты для доспехов
  • Иконки

Чеклист перед мерджем

  • Описание изменений понятно и информативно
  • Все TODO выполнены или задокументированы для будущего
  • Добавлены скриншоты/видео (если применимо)
  • Код протестирован

Changelog
Будет сделано позже
🆑

  • add: Добавлено веселье!
  • remove: Убрано веселье!
  • tweak: Изменено веселье!
  • fix: Исправлено веселье!

Спасибо за вклад в Ratgore! 🐀

Summary by CodeRabbit

Заметки о выпуске

  • Новые возможности
    • Добавлены новые боевые костюмы, броня и шлемы фракции КНЦ с различными уровнями защиты
    • Добавлены новые форменные костюмы для членов ордена
    • Новые предметы доступны в игре с уникальным дизайном и характеристиками

@github-actions

github-actions Bot commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

RSI Diff Bot; head commit 2e2ce50 merging into 519945b
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Materials/ore.rsi/ore.rsi

State Old New Status
bananium Removed
coal Removed
gold Removed
iron Removed
plasma Removed
salt Removed
silver Removed
spacequartz Removed
uranium Removed

Resources/Textures/_Crescent/Clothing/SRM/Head/mandateberet.rsi

State Old New Status
equipped-HELMET Added
icon Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi

State Old New Status
icon-flash Added
icon Added
off-equipped-HELMET Added
on-equipped-HELMET Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommanderhelmet.rsi

State Old New Status
equipped-HELMET Added
icon Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi

State Old New Status
icon-flash Added
icon Added
off-equipped-HELMET Added
on-equipped-HELMET Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandatehelmet.rsi

State Old New Status
equipped-HELMET Added
icon Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi

State Old New Status
icon-flash Added
icon Added
off-equipped-HELMET Added
on-equipped-HELMET Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi

State Old New Status
icon-flash Added
icon Added
off-equipped-HELMET Added
on-equipped-HELMET Added

Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi

State Old New Status
icon-flash Added
icon Added
off-equipped-HELMET Added
on-equipped-HELMET Added

Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi

State Old New Status
icon-flash Added
icon Added
off-equipped-HELMET Added
on-equipped-HELMET Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecoronet.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi

State Old New Status
equipped-OUTERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi

State Old New Status
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi

State Old New Status
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi

State Old New Status
equipped-INNERCLOTHING Added
icon Added
inhand-left Added
inhand-right Added

Edit: diff updated after 2e2ce50

@coderabbitai

coderabbitai Bot commented Apr 24, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Пошаговое описание

Добавлены новые прототипы одежды и брони для ордена КНС с полным набором локализаций на русском языке. Включены определения сущностей для харддостов, нагрудников, шлемов и комбинезонов, а также метаданные текстур для соответствующих спрайтов.

Изменения

Когорта / Файл(ы) Описание
Локализация русского языка — броня
Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/armor.ftl
Добавлены 8 новых ключей локализации для различных вариантов брони и харддостов КНС (Worker, Command, Soldier, Knight, Coronet, Trooper, Prestige, Juggernaut).
Локализация русского языка — шлемы
Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/helmets.ftl
Добавлены 9 новых ключей локализации для шлемов различных рангов и вариантов КНС с описаниями материалов и герба дома.
Локализация русского языка — комбинезоны
Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/jumpsuits.ftl
Добавлены 3 новых ключа локализации для военной формы (медик, боевая, офицер) с описаниями, связанными с домом Ромэйн.
Прототипы — броня и харддосты
Resources/Prototypes/_Crescent/Entities/Clothing/SRM/armor.yml
Добавлены 8 новых прототипов сущностей для различных уровней брони КНС с параметрами защиты, деградации, сопротивления взрывам (0.6–0.9) и компонентами торговли.
Прототипы — шлемы
Resources/Prototypes/_Crescent/Entities/Clothing/SRM/helmets.yml
Добавлены 9 новых прототипов шлемов, включая беретт и специализированные хардсьюты с подсветкой, защитой от давления и скрытием слоёв одежды.
Прототипы — комбинезоны
Resources/Prototypes/_Crescent/Entities/Clothing/SRM/jumpsuits.yml
Добавлены 3 новых прототипа комбинезонов с ссылками на текстурные активы.
Метаданные текстур — шлемы
Resources/Textures/_Crescent/Clothing/SRM/Head/mandate*.rsi/meta.json, ritterhelmet.rsi/meta.json
Добавлены 9 файлов метаданных RSI для текстур шлемов с определением размеров (32×32), лицензий и состояний спрайтов.
Метаданные текстур — верхняя одежда
Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandate*.rsi/meta.json
Добавлены 8 файлов метаданных RSI для текстур брони и харддостов с поддержкой направлений и состояний в руке.
Метаданные текстур — комбинезоны
Resources/Textures/_Crescent/Clothing/SRM/Uniform/order*.rsi/meta.json
Добавлены 3 файла метаданных RSI для текстур комбинезонов с определением состояний и направлений.

Оценка сложности рецензирования

🎯 3 (Умеренная) | ⏱️ ~25 минут

Возможно связанные PR

Рекомендуемые рецензенты

  • SunChan07

Стихотворение

🐰 Новая броня для ордена взблеск,
Харддосты, шлемы — настоящий прогресс!
Локализация русского слова поёт,
Спрайты танцуют, метаданные поют,
КНС одевается в цвета и уют! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Название точно отражает основное изменение: переработка фракции СРМ (шестой улицы) в новую фракцию КНК. Все файлы содержат локализацию и прототипы для новых предметов одежды и доспехов именно этой фракции.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 17

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml (1)

1-86: ⚠️ Potential issue | 🔴 Critical

Критические дубликаты ID прототипов.

Все семь ID (ClothingNeckImperialBow, ClothingNeckImperialBowJeweled, ClothingNeckCloakImperialGovernor, ClothingNeckCloakInspector, ClothingNeckCloakImperialAdjutant, ClothingNeckCloakImperialCapelet, ClothingNeckImperialGreatcoat) уже определены в Resources/Prototypes/_Crescent/Entities/Clothing/Empire/Neck/misc.yml. Дублирующиеся ID приведут к ошибке загрузки прототипов. Кроме того, некоторые из этих ID ссылаются в файлах рецептов и загрузок (imperialcrafts.yml, neck.yml), что усугубляет конфликт.

Решение: либо удалить этот файл (если нужно переиспользовать существующие сущности из _Crescent), либо переименовать все ID на уникальные для KNC версии (например, добавить префикс ClothingNeckKNC...).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml` around lines 1
- 86, This file duplicates existing prototype IDs causing load errors; either
remove this file to use the originals from _Crescent or rename all entity IDs to
unique KNC variants (e.g., change ClothingNeckImperialBow,
ClothingNeckImperialBowJeweled, ClothingNeckCloakImperialGovernor,
ClothingNeckCloakInspector, ClothingNeckCloakImperialAdjutant,
ClothingNeckCloakImperialCapelet, ClothingNeckImperialGreatcoat →
ClothingNeckKNCImperialBow, ClothingNeckKNCImperialBowJeweled,
ClothingNeckKNCCloakImperialGovernor, etc.), and update any references in
recipe/load files such as imperialcrafts.yml and neck.yml to the new IDs so all
links are consistent.
🧹 Nitpick comments (10)
Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/meta.json (1)

16-30: Несогласованность форматирования: использование табуляции вместо пробелов.

Новые записи состояний KNC (строки 16-29) используют табуляцию для отступов, в то время как остальной файл использует пробелы. Это нарушает единообразие форматирования.

♻️ Предлагаемое исправление форматирования
         "name": "Pretorian"
-        },
-		{
-            "name": "KNC_Lorde"
-        },
-		{
-            "name": "KNC_Banneret"
-        },
-		{
-            "name": "KNC_Knight"
-        },
-		{
-            "name": "KNC_Squire"
-        },
-		{
-            "name": "KNC_Levy"
+        },
+        {
+            "name": "KNC_Lorde"
+        },
+        {
+            "name": "KNC_Banneret"
+        },
+        {
+            "name": "KNC_Knight"
+        },
+        {
+            "name": "KNC_Squire"
+        },
+        {
+            "name": "KNC_Levy"
         }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/meta.json` around lines
16 - 30, The new JSON entries for KNC ("KNC_Lorde", "KNC_Banneret",
"KNC_Knight", "KNC_Squire", "KNC_Levy") use tabs for indentation while the rest
of the file uses spaces; replace the tab characters with the same number of
spaces used elsewhere in the file to match existing formatting (ensure the
"name" lines align with other entries and preserve the surrounding commas/braces
exactly).
Resources/Prototypes/_Crescent/Roles/factions.yml (3)

208-229: Новая фракция KNC — оформление корректное.

Структура прототипа KNC согласована с остальными фракциями в файле (descriptionPrefix, buttonColor, description, color, weight, enabled, icon). Weight 5 разумно вписывается в ранжирование относительно TFSC (6) и TAP (4). Описание и descriptionPrefix соответствуют заявленному вайтлист-режиму. Небольшая придирка по тексту: в descriptionPrefix у других фракций формат МИНИМАЛЬНОЕ ВРЕМЯ ИГРЫ: ..., а здесь МИНИМАЛЬНОЕ ВРЕМЯ: ... — можно унифицировать для консистентности UI.

Предложение по унификации строки префикса
-    МИНИМАЛЬНОЕ ВРЕМЯ: Только по вайтлисту
+    МИНИМАЛЬНОЕ ВРЕМЯ ИГРЫ: Только по вайтлисту
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Crescent/Roles/factions.yml` around lines 208 - 229,
Unify the descriptionPrefix format for faction KNC by changing its
descriptionPrefix value from "МИНИМАЛЬНОЕ ВРЕМЯ: Только по вайтлисту" to the
same pattern used elsewhere ("МИНИМАЛЬНОЕ ВРЕМЯ ИГРЫ: Только по вайтлисту");
locate the KNC faction entry (type: faction, id: KNC) and update the
descriptionPrefix field to the standardized string so the UI displays
consistently with other factions.

230-232: Иконка KNC временно переиспользует спрайт SRM — не забыть заменить.

  icon:
    sprite: /Textures/_Crescent/faction_icons.rsi
    state: srm

KNC использует тот же state: srm, что и отключённая теперь фракция SRM. Это согласуется с пунктом TODO «Иконки» в описании PR (ещё не выполнено), то есть сейчас это осознанный placeholder. Две небольшие рекомендации:

  1. Перед мерджем добавить выделенный стейт (например, knc) в Resources/Textures/_Crescent/faction_icons.rsi и переключить state на него, либо явно оставить TODO-комментарий рядом с блоком icon, чтобы placeholder не потерялся.
  2. Учитывая, что SRM выключен (enabled: false), а KNC позиционируется как его идейный преемник в рамках этого реворка, общий спрайт визуально не собьёт игроков — но в миксовом раунде/UI два разных ID, указывающих на один и тот же state, могут путать при отладке/логах.

Если хочется, могу набросать заготовку отдельной иконки (именования/структуру stateʼа в faction_icons.rsi/meta.json) — дайте знать.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Crescent/Roles/factions.yml` around lines 230 - 232, В
блоке icon для фракции KNC указан placeholder state: srm, который дублирует
отключённую SRM; замените его на выделенный стейт (например, knc) в файле
Resources/Textures/_Crescent/faction_icons.rsi (добавьте соответствующий стейт в
его meta/rsn), и переключите state в
Resources/Prototypes/_Crescent/Roles/factions.yml с srm на knc; если нельзя
сейчас добавить файл-стейт — оставьте чёткий TODO-комментарий рядом с блоком
icon (указав sprite: /Textures/_Crescent/faction_icons.rsi и state: srm) чтобы
не потерять placeholder перед мерджем.

207-207: Маркер ## RATGORE — OK, но желательно единообразие.

Комментарий-секция ## RATGORE удобен, но в репозитории встречаются и другие стили маркеров (# RATGORE, и т.п. в соседних файлах). Если в проекте принята конкретная конвенция для разделителей контента, стоит придерживаться её. Не блокирующе.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Crescent/Roles/factions.yml` at line 207, The header
marker "## RATGORE" is inconsistent with other files; determine the repository's
chosen section delimiter (e.g. "# RATGORE" vs "## RATGORE") by checking existing
files and replace the "## RATGORE" marker with the project's standard marker so
this file uses the same header style as other faction sections.
Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml (1)

28-35: Непоследовательный отступ внутри components:.

В прототипах Bow/BowJeweled/Greatcoat используется 2-пробельный отступ ( - type: Sprite), а в Governor/Inspector/Adjutant/Capelet — 3-пробельный ( - type: Sprite). YAML это переварит, но для единообразия стиля стоит привести к одному формату.

Also applies to: 42-46, 53-57, 64-71

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml` around lines
28 - 35, Внутри блока components есть непоследовательный отступ: строки с "-
type: Sprite" / "- type: Clothing" и т.д. используют разное количество пробелов;
приведи все элементы списка в этом файле к единому 2-пробельному отступу (или к
формату, принятому в репозитории) — исправь отступы перед "- type: Sprite", "-
type: Clothing" и "- type: ReverseEngineering" и сохраняй одинаковый отступ для
элементов recipes (например для ClothingNeckCloakImperialGovernor), аналогично
поправь также упомянутые диапазоны (42-46, 53-57, 64-71).
Resources/Prototypes/_Rat/Roles/Ranks/KNC/knc_ranks.yml (1)

8-92: Несогласованный формат paygrade.

Для Lorde/Banneret используется формат с дефисом и буквенным префиксом (KNC-L2, KNC-B3…), а для Knight/Squire/Levy — без дефиса и без буквы (KNC9KNC1). Это затруднит парсинг/сортировку и выглядит как копипаста из разных источников. Рекомендуется привести к единой схеме (например, KNC-K3/KNC-S2/KNC-V1) либо полностью к числовой.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Roles/Ranks/KNC/knc_ranks.yml` around lines 8 - 92,
Paygrade values are inconsistent (some like KNC-L2/KNC-B3 use a hyphen+letter,
others like KNC9..KNC1 use no hyphen/letter); update all paygrade fields to a
single consistent schema (e.g., hyphenated with role letter: KNC-L2 for
RatRankKNCLordeStandart, KNC-B3/KNC-B2/KNC-B1 for
RatRankKNCBanneretSenior/Middle/Junior, and convert the knights/squires/levy
entries RatRankKNCKnightSenior/Middle/Junior,
RatRankKNCSquireSenior/Middle/Junior, RatRankKNCLevySenior/Middle/Junior to the
same pattern — e.g., KNC-K9/KNC-K8/KNC-K7 for knights, KNC-S6/KNC-S5/KNC-S4 for
squires, KNC-V3/KNC-V2/KNC-V1 for levy — or choose another consistent
numeric-only scheme and apply it to every paygrade field so parsing/sorting will
be uniform.
Resources/Prototypes/_Rat/Entities/Clothing/KNC/OuterClothing/outerclothing.yml (2)

177-219: Juggernaut без ReverseEngineering — осознанно?

Другие боевые хардсьюты (ImperialSoldier, ImperialKnight) имеют блок ReverseEngineering с рецептами и difficulty. У ClothingOuterHardsuitImperialJuggernaut такого блока нет. Если это сознательно (эндгейм-шмотка, не подлежащая реверс-инжинирингу) — можно оставить, но стоит зафиксировать это решение комментарием в YAML, чтобы в будущем не приняли за упущение.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Resources/Prototypes/_Rat/Entities/Clothing/KNC/OuterClothing/outerclothing.yml`
around lines 177 - 219, ClothingOuterHardsuitImperialJuggernaut is missing a
ReverseEngineering block unlike other hardsuits (e.g., ImperialSoldier,
ImperialKnight); either add a ReverseEngineering component with the appropriate
recipes and difficulty matching project conventions or, if intentional (not
reversable endgame item), add an inline YAML comment under the entity explaining
the deliberate omission to prevent future confusion. Reference the entity id
ClothingOuterHardsuitImperialJuggernaut and the ReverseEngineering block when
making the change.

43-77: LGTM на ClothingOuterHardsuitKNCLorde — единственная KNC-специфичная запись в файле, параметры и parent согласуются с ClothingOuterHardsuitImperialCommand.

Мелочь: стоит обдумать целесообразность размещения Imperial/Clarizian-хардсьютов в каталоге /KNC/OuterClothing/, раз KNC-специфичный здесь только Lorde; остальное по смыслу — DSM/Crescent-контент. Не блокер.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Resources/Prototypes/_Rat/Entities/Clothing/KNC/OuterClothing/outerclothing.yml`
around lines 43 - 77, This is a non-blocking housekeeping suggestion: consider
moving the non-KNC-specific Imperial/Clarizian hardsuit assets out of the
/KNC/OuterClothing/ directory so only the KNC-specific item (id:
ClothingOuterHardsuitKNCLorde) remains there; if you move files, update the
sprite reference (_Crescent/Clothing/Empire/OuterClothing/mandatecommand.rsi),
the parent (ClothingOuterHardsuitImperialCommand) and the clothingPrototype
(ClothingHeadHelmetHardsuitImperialCommand) to their new paths or adjust names
accordingly to keep references valid.
Resources/Prototypes/_Rat/Entities/Clothing/KNC/Head/helmets.yml (2)

615-624: ClothingHeadHatDSMCapsoft лежит в каталоге KNC/Head/.

Идентификатор и спрайт (dsm_cap.rsi) принадлежат DSM, а файл находится в KNC-каталоге. Либо перенесите прототип в DSM-файл, либо переименуйте, если это KNC-кап в DSM-цветах. Сейчас структура каталогов вводит в заблуждение при поиске по фракции.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Head/helmets.yml` around
lines 615 - 624, Prototype ClothingHeadHatDSMCapsoft references DSM assets
(sprite dsm_cap.rsi) but is located under KNC/Head, causing faction confusion;
fix by either moving this prototype into the DSM faction file (so
ClothingHeadHatDSMCapsoft and sprite _Crescent/Clothing/Empire/Head/dsm_cap.rsi
live with other DSM prototypes) or rename the prototype and replace the sprite
with the correct KNC asset (or update sprite path) so the identifier
ClothingHeadHatDSMCapsoft no longer misrepresents faction ownership; ensure the
component entries (type: Sprite and type: Clothing) reference the corrected
identifier/sprite.

67-67: Выравнять именование Clarize / Clarizian для улучшения читаемости кода.

В файле встречаются смешанные варианты: ClothingHeadHelmetHardsuitClarizeWorker, ClothingHeadHelmetHardsuitClarize и ClothingHeadHelmetClarizianTrooperHelmet. Поиск по этим ID требует использования альтернативных регулярных выражений. Хотя различие кажется семантическим (рабочее снаряжение vs военное), оно не задокументировано явно. При следующем рефакторинге стоит рассмотреть либо унификацию, либо явное документирование этого соглашения об именовании.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Head/helmets.yml` at line 67,
В файле встречается смешанное именование сущностей
(ClothingHeadHelmetHardsuitClarizeWorker, ClothingHeadHelmetHardsuitClarize,
ClothingHeadHelmetClarizianTrooperHelmet); приведите его к единому виду:
выберите одно написание (Clarize или Clarizian), переименуйте все
соответствующие id в этом файле и все внутренние/внешние ссылки на эти id
(поиск/замена по проекту) и обновите любые связанные документирующие файлы или
конвенции; в качестве альтернативы, если различие семантическое, добавьте явную
запись в документацию/комментарий в YAML, объясняющую правило, и согласуйте
имена внутри одной семантической группы (обновить
ClothingHeadHelmetHardsuitClarizeWorker, ClothingHeadHelmetHardsuitClarize,
ClothingHeadHelmetClarizianTrooperHelmet соответственно).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Uniform/jumpsuits.yml`:
- Line 22: Fix two English article typos in the jumpsuits.yml descriptions:
change the description value "An knight's silken suit." to "A knight's silken
suit." and change "A apothecary's jumpsuit with Order livery." to "An
apothecary's jumpsuit with Order livery." — locate and update the relevant
description fields in the Uniform/jumpsuits entries.
- Around line 11-12: В компоненте ClothingAddFaction у трёх KNC-предметов одежды
замените значение faction: SRM на faction: KNC — поискать все вхождения
компонента ClothingAddFaction в файле jumpsuits.yml для предметов KNC (три
места, соответствующие KNC по директории/ID/описанию) и заменить строку faction:
SRM на faction: KNC, чтобы ссылка указывала на включённую фракцию KNC.

In `@Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_banneret.yml`:
- Around line 67-77: В файле с прототипом стартового снаряжения замените
унаследованные от старой СРМ плейсхолдеры либо на КНЦ-аналоги, либо
задокументируйте их как намеренные плейсхолдеры: найдите поля id: MontagnePDA,
ClothingUniformJumpsuitHunter, ClothingHeadHelmetHunterBasic,
ClothingOuterArmorHunterDusterMontagne, ClothingBackpackSRM и любые access-теги
Hunter / HunterSenior и либо подмените их на соответствующие КНЦ-прототипы, либо
добавьте явную TODO/запись в changelog рядом с этими полями, указывающую что они
временные и будут заменены после создания «Прототипов доспехов/оружия/догтагов».

In `@Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_levy.yml`:
- Around line 7-14: В файле с требованиями рангов замените неверный tracker
JobTenderSRM на правильный JobLevyKNC для записей RatRankKNCLevySenior и
RatRankKNCLevyMiddle: откройте блокы с !type:CharacterPlaytimeRequirement для
RatRankKNCLevySenior и RatRankKNCLevyMiddle и поменяйте значение tracker с
JobTenderSRM на JobLevyKNC, чтобы соответствовать playTimeTracker, объявленному
в задании и в play_time_trackers.yml.

In `@Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_lorde.yml`:
- Line 11: Rename the misspelled rank identifier RatRankKNCLordeStandart to
RatRankKNCLordeStandard across the codebase; update every occurrence (including
the counterpart in knc_ranks.yml) so the identifier is consistent, and run a
quick search to ensure no remaining references to "Standart" remain to avoid
breaking references.

In `@Resources/Prototypes/_Rat/Roles/Ranks/KNC/knc_ranks.yml`:
- Around line 18-22: The rank definition RatRankKNCBanneretSenior uses name:
"Рыцарь-коммандор Дома Ромейн" and prefix: "Рыцарь-коммандор", which collides
with the Empire job-name "Рыцарь-коммандор"; to fix this, update the name and/or
prefix in the RatRankKNCBanneretSenior entry to a distinct title (e.g., alter
the base rank word or add a qualifier like "Рыцарь-коммандор (Ромейн)" or choose
an alternative rank term) so it no longer matches job-name-knight, keeping the
id RatRankKNCBanneretSenior unchanged and ensuring any display or prefix
references reflect the new string.
- Around line 59-74: The three rank entries RatRankKNCSquireSenior,
RatRankKNCSquireMiddle, and RatRankKNCSquireJunior use inconsistent prefix terms
("Мл. рыцарь", "Эсквайр", "Сквайр"); pick a consistent prefix scheme and update
the prefix fields for those IDs to match (for example: "Мл. оруженосец" for
RatRankKNCSquireSenior, "Ст. оруженосец" or "Оруженосец-ветеран" for
RatRankKNCSquireMiddle, and "Оруженосец" for RatRankKNCSquireJunior), or
alternatively adjust the name fields to make the existing prefixes
explicit—apply the change to the prefix property of each rank entry so HUD/log
output is uniform.
- Around line 10-14: Rename the rank ID RatRankKNCLordeStandart to
RatRankKNCLordeStandard in the knc_ranks.yml entry (and adjust the
human-readable name if needed), and then update the corresponding rank reference
inside KNC_lorde.yml (the job file that references the lord rank) so it points
to RatRankKNCLordeStandard instead of the misspelled ID to keep references
consistent.

In `@Resources/Textures/_Rat/Clothing/KNC/Head/KNCbanneret.rsi/meta.json`:
- Around line 17-22: Replace the incorrect state names "off-equipped-HELMET" and
"on-equipped-HELMET" in KNCbanneret.rsi/meta.json with the standard
"equipped-HELMET" used by the rendering system (matching the pattern in
KNCcommanderhelmet.rsi/meta.json); if the "off-"/"on-" variants are required for
alternate visuals, instead revert them to "equipped-HELMET" and add separate,
explicitly handled state keys only after implementing the necessary rendering
logic to recognize those variants.

In `@Resources/Textures/_Rat/Clothing/KNC/Head/KNCjuggernauthelmet.rsi/meta.json`:
- Around line 17-22: В meta.json замените некорректные состояния
"off-equipped-HELMET" и "on-equipped-HELMET" на ожидаемое системой состояние
"equipped-HELMET" в объекте, где указаны поля "name" (ищите строки с именами
состояний и ключи "directions"), чтобы рендер использовал единый корректный
идентификатор экипированного шлема.

In `@Resources/Textures/_Rat/Clothing/KNC/Head/KNCknight.rsi/meta.json`:
- Around line 3-4: В поле "license" в meta.json сейчас пусто, нужно заполнить
его корректной лицензией: определите подходящий SPDX-идентификатор или точную
лицензию проекта (например "CC-BY-4.0" или "All Rights Reserved" в зависимости
от политики) и заменить пустую строку в ключе "license" на этот идентификатор;
убедитесь, что значение синтаксически корректно (строка) и согласовано с текстом
в ключе "copyright".

In `@Resources/Textures/_Rat/Clothing/KNC/Head/KNCritterhelmet.rsi/meta.json`:
- Around line 3-4: Поле "license" сейчас пустое — замените пустую строку на
явное значение лицензии, согласованное с лицензией репозитория (например
"CC-BY-SA-4.0" или "All Rights Reserved"), обновив значение свойства "license" в
meta.json и убедившись, что оно соответствует политике проекта; оставьте другие
поля (например "copyright") без изменений.

In `@Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/meta.json`:
- Around line 17-22: The meta.json contains incorrect state names
"off-equipped-HELMET" and "on-equipped-HELMET" which the clothing system doesn't
recognize; replace those entries so the equipped helmet state uses the single
expected name "equipped-HELMET" (remove or rename both "off-equipped-HELMET" and
"on-equipped-HELMET" to "equipped-HELMET") ensuring the "name" fields match the
system expectation and keep "directions": 4 unchanged.

In
`@Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/meta.json`:
- Around line 3-4: The metadata declares "license": null while the "copyright"
field contains an "All rights reserved" notice for the Hullrot asset
(KNCjuggernaut.rsi meta.json), which makes the sprite incompatible with SS14
licensing; either obtain written permission from the author to relicense to a
compatible license and update the "license" and "copyright" fields accordingly,
replace the file with a source that has a compatible license (e.g., the original
tgstation/Shiptest equivalent) and update the metadata, or remove/replace the
asset by redrawing it and setting a compatible license; until one of these fixes
is completed, remove the meta.json reference (and any prototypes using this
asset) from the merge to prevent including the incompatible asset.

In `@Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/meta.json`:
- Around line 3-4: The metadata for asset KNCknight.rsi has an empty "license"
field and a restrictive copyright string containing "All rights reserved. Do not
copy, use, modify, or redistribute." which is incompatible with SS14
open-licensing; update the "license" field to a valid SPDX identifier (or remove
the asset from the repo if no relicense permission) and replace the copyright
text with a permissive notice that matches the chosen SPDX license, or obtain
written permission from the Hullrot team to relicense; apply the same fix to the
other affected asset metadata (KNCjuggernaut.rsi) so both use valid SPDX
identifiers and permissive copyright statements.

In `@Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/meta.json`:
- Around line 3-4: Поле "license" в meta.json пустое, из-за чего правовой статус
ассета неоднозначен; заполните ключ "license" явным значением, принятом в
репозитории (например стандартным идентификатором лицензии или
"proprietary"/конкретный SPDX-тег), чтобы согласовать его с уже существующей
строкой "copyright" и политиками репо; отредактируйте значение ключа "license" в
том же объекте JSON, не меняя другие поля.

In `@Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/meta.json`:
- Around line 3-4: Поле "license" в meta.json пустое, из‑за этого метаданные
неполны; откройте
Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/meta.json и
заполните ключ "license" явной лицензией (например SPDX идентификатором вроде
"SPDX: CC-BY-4.0" или текстом "All Rights Reserved"), либо укажите точную строку
правового режима, согласованную с проектом; сохраните JSON как валидную строку.

---

Outside diff comments:
In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml`:
- Around line 1-86: This file duplicates existing prototype IDs causing load
errors; either remove this file to use the originals from _Crescent or rename
all entity IDs to unique KNC variants (e.g., change ClothingNeckImperialBow,
ClothingNeckImperialBowJeweled, ClothingNeckCloakImperialGovernor,
ClothingNeckCloakInspector, ClothingNeckCloakImperialAdjutant,
ClothingNeckCloakImperialCapelet, ClothingNeckImperialGreatcoat →
ClothingNeckKNCImperialBow, ClothingNeckKNCImperialBowJeweled,
ClothingNeckKNCCloakImperialGovernor, etc.), and update any references in
recipe/load files such as imperialcrafts.yml and neck.yml to the new IDs so all
links are consistent.

---

Nitpick comments:
In `@Resources/Prototypes/_Crescent/Roles/factions.yml`:
- Around line 208-229: Unify the descriptionPrefix format for faction KNC by
changing its descriptionPrefix value from "МИНИМАЛЬНОЕ ВРЕМЯ: Только по
вайтлисту" to the same pattern used elsewhere ("МИНИМАЛЬНОЕ ВРЕМЯ ИГРЫ: Только
по вайтлисту"); locate the KNC faction entry (type: faction, id: KNC) and update
the descriptionPrefix field to the standardized string so the UI displays
consistently with other factions.
- Around line 230-232: В блоке icon для фракции KNC указан placeholder state:
srm, который дублирует отключённую SRM; замените его на выделенный стейт
(например, knc) в файле Resources/Textures/_Crescent/faction_icons.rsi (добавьте
соответствующий стейт в его meta/rsn), и переключите state в
Resources/Prototypes/_Crescent/Roles/factions.yml с srm на knc; если нельзя
сейчас добавить файл-стейт — оставьте чёткий TODO-комментарий рядом с блоком
icon (указав sprite: /Textures/_Crescent/faction_icons.rsi и state: srm) чтобы
не потерять placeholder перед мерджем.
- Line 207: The header marker "## RATGORE" is inconsistent with other files;
determine the repository's chosen section delimiter (e.g. "# RATGORE" vs "##
RATGORE") by checking existing files and replace the "## RATGORE" marker with
the project's standard marker so this file uses the same header style as other
faction sections.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Head/helmets.yml`:
- Around line 615-624: Prototype ClothingHeadHatDSMCapsoft references DSM assets
(sprite dsm_cap.rsi) but is located under KNC/Head, causing faction confusion;
fix by either moving this prototype into the DSM faction file (so
ClothingHeadHatDSMCapsoft and sprite _Crescent/Clothing/Empire/Head/dsm_cap.rsi
live with other DSM prototypes) or rename the prototype and replace the sprite
with the correct KNC asset (or update sprite path) so the identifier
ClothingHeadHatDSMCapsoft no longer misrepresents faction ownership; ensure the
component entries (type: Sprite and type: Clothing) reference the corrected
identifier/sprite.
- Line 67: В файле встречается смешанное именование сущностей
(ClothingHeadHelmetHardsuitClarizeWorker, ClothingHeadHelmetHardsuitClarize,
ClothingHeadHelmetClarizianTrooperHelmet); приведите его к единому виду:
выберите одно написание (Clarize или Clarizian), переименуйте все
соответствующие id в этом файле и все внутренние/внешние ссылки на эти id
(поиск/замена по проекту) и обновите любые связанные документирующие файлы или
конвенции; в качестве альтернативы, если различие семантическое, добавьте явную
запись в документацию/комментарий в YAML, объясняющую правило, и согласуйте
имена внутри одной семантической группы (обновить
ClothingHeadHelmetHardsuitClarizeWorker, ClothingHeadHelmetHardsuitClarize,
ClothingHeadHelmetClarizianTrooperHelmet соответственно).

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml`:
- Around line 28-35: Внутри блока components есть непоследовательный отступ:
строки с "- type: Sprite" / "- type: Clothing" и т.д. используют разное
количество пробелов; приведи все элементы списка в этом файле к единому
2-пробельному отступу (или к формату, принятому в репозитории) — исправь отступы
перед "- type: Sprite", "- type: Clothing" и "- type: ReverseEngineering" и
сохраняй одинаковый отступ для элементов recipes (например для
ClothingNeckCloakImperialGovernor), аналогично поправь также упомянутые
диапазоны (42-46, 53-57, 64-71).

In
`@Resources/Prototypes/_Rat/Entities/Clothing/KNC/OuterClothing/outerclothing.yml`:
- Around line 177-219: ClothingOuterHardsuitImperialJuggernaut is missing a
ReverseEngineering block unlike other hardsuits (e.g., ImperialSoldier,
ImperialKnight); either add a ReverseEngineering component with the appropriate
recipes and difficulty matching project conventions or, if intentional (not
reversable endgame item), add an inline YAML comment under the entity explaining
the deliberate omission to prevent future confusion. Reference the entity id
ClothingOuterHardsuitImperialJuggernaut and the ReverseEngineering block when
making the change.
- Around line 43-77: This is a non-blocking housekeeping suggestion: consider
moving the non-KNC-specific Imperial/Clarizian hardsuit assets out of the
/KNC/OuterClothing/ directory so only the KNC-specific item (id:
ClothingOuterHardsuitKNCLorde) remains there; if you move files, update the
sprite reference (_Crescent/Clothing/Empire/OuterClothing/mandatecommand.rsi),
the parent (ClothingOuterHardsuitImperialCommand) and the clothingPrototype
(ClothingHeadHelmetHardsuitImperialCommand) to their new paths or adjust names
accordingly to keep references valid.

In `@Resources/Prototypes/_Rat/Roles/Ranks/KNC/knc_ranks.yml`:
- Around line 8-92: Paygrade values are inconsistent (some like KNC-L2/KNC-B3
use a hyphen+letter, others like KNC9..KNC1 use no hyphen/letter); update all
paygrade fields to a single consistent schema (e.g., hyphenated with role
letter: KNC-L2 for RatRankKNCLordeStandart, KNC-B3/KNC-B2/KNC-B1 for
RatRankKNCBanneretSenior/Middle/Junior, and convert the knights/squires/levy
entries RatRankKNCKnightSenior/Middle/Junior,
RatRankKNCSquireSenior/Middle/Junior, RatRankKNCLevySenior/Middle/Junior to the
same pattern — e.g., KNC-K9/KNC-K8/KNC-K7 for knights, KNC-S6/KNC-S5/KNC-S4 for
squires, KNC-V3/KNC-V2/KNC-V1 for levy — or choose another consistent
numeric-only scheme and apply it to every paygrade field so parsing/sorting will
be uniform.

In `@Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/meta.json`:
- Around line 16-30: The new JSON entries for KNC ("KNC_Lorde", "KNC_Banneret",
"KNC_Knight", "KNC_Squire", "KNC_Levy") use tabs for indentation while the rest
of the file uses spaces; replace the tab characters with the same number of
spaces used elsewhere in the file to match existing formatting (ensure the
"name" lines align with other entries and preserve the surrounding commas/braces
exactly).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 22ce6b38-5141-4d30-9659-6fc778f8442d

📥 Commits

Reviewing files that changed from the base of the PR and between 2c8a095 and 1db37a6.

⛔ Files ignored due to path filters (83)
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCbanneret.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCbanneret.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCbanneret.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCbanneret.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCberet.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCberet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommand.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommand.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommand.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommand.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommanderhelmet.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommanderhelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNChelmet.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNChelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCjuggernauthelmet.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCjuggernauthelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCjuggernauthelmet.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCjuggernauthelmet.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCknight.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCknight.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCknight.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCknight.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCritterhelmet.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCritterhelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCritterhelmet.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCritterhelmet.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Neck/KNCcapelet.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Neck/KNCcapelet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Neck/KNCcapelet.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Neck/KNCcapelet.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmor.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmor.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmor.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmor.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmorprestige.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmorprestige.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmorprestige.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmorprestige.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCbanneret.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCbanneret.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCbanneret.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCbanneret.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCcommand.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCcommand.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCcommand.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCcommand.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCsquire.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCsquire.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCsquire.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCsquire.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCworker.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCworker.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCworker.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCworker.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCmedic.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCmedic.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCmedic.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCmedic.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/KNC_Banneret.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/KNC_Knight.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/KNC_Levy.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/KNC_Lorde.png is excluded by !**/*.png
  • Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/KNC_Squire.png is excluded by !**/*.png
📒 Files selected for processing (40)
  • Resources/Locale/ru-RU/_Crescent/job/job-description.ftl
  • Resources/Locale/ru-RU/_Crescent/job/job-names.ftl
  • Resources/Locale/ru-RU/_Crescent/job/job-supervisors.ftl
  • Resources/Prototypes/Roles/Jobs/departments.yml
  • Resources/Prototypes/_Crescent/Roles/factions.yml
  • Resources/Prototypes/_Rat/Entities/Clothing/KNC/Head/helmets.yml
  • Resources/Prototypes/_Rat/Entities/Clothing/KNC/Neck/misc.yml
  • Resources/Prototypes/_Rat/Entities/Clothing/KNC/OuterClothing/outerclothing.yml
  • Resources/Prototypes/_Rat/Entities/Clothing/KNC/Uniform/jumpsuits.yml
  • Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_banneret.yml
  • Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_knight.yml
  • Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_levy.yml
  • Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_lorde.yml
  • Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_squire.yml
  • Resources/Prototypes/_Rat/Roles/Jobs/play_time_trackers.yml
  • Resources/Prototypes/_Rat/Roles/Ranks/KNC/knc_ranks.yml
  • Resources/Prototypes/_Rat/Roles/Ranks/TFSC/tsfc_gorlex.yml
  • Resources/Prototypes/_Rat/StatusEffects/job.yml
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCbanneret.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCberet.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommand.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCcommanderhelmet.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNChelmet.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCjuggernauthelmet.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCknight.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCritterhelmet.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Neck/KNCcapelet.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmor.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCarmorprestige.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCbanneret.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCcommand.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCsquire.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCworker.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCmedic.rsi/meta.json
  • Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/meta.json
  • Resources/Textures/_Rat/Interface/Misc/job_icons.rsi/meta.json
💤 Files with no reviewable changes (1)
  • Resources/Prototypes/_Rat/Roles/Ranks/TFSC/tsfc_gorlex.yml

Comment on lines +11 to +12
- type: ClothingAddFaction
faction: SRM

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify whether KNC NpcFactionPrototype exists and inspect SRM status.
rg -nP --type=yaml -C2 '^\s*-\s*type:\s*npcFaction\b' | rg -nC3 -iP '\bid:\s*(KNC|SRM)\b'
echo "---"
rg -nP --type=yaml -C2 '^\s*-\s*type:\s*faction\b' | rg -nC3 -iP '\bid:\s*(KNC|SRM)\b'
echo "--- all usages of faction: SRM/KNC ---"
rg -nP --type=yaml '\bfaction:\s*(SRM|KNC)\b'

Repository: ss14-art/ratgore

Length of output: 2285


🏁 Script executed:

cat -n Resources/Prototypes/_Crescent/Roles/factions.yml | sed -n '130,145p'
echo "---"
cat -n Resources/Prototypes/_Crescent/Roles/factions.yml | sed -n '205,220p'

Repository: ss14-art/ratgore

Length of output: 1730


🏁 Script executed:

cat -n Resources/Prototypes/_Rat/Entities/Clothing/KNC/Uniform/jumpsuits.yml | head -50

Repository: ss14-art/ratgore

Length of output: 2014


🏁 Script executed:

rg -nA15 '^\s*-\s*type:\s*faction\s*$' Resources/Prototypes/_Crescent/Roles/factions.yml | rg -A15 'id:\s*(SRM|KNC)'

Repository: ss14-art/ratgore

Length of output: 1867


🏁 Script executed:

sed -n '135,165p' Resources/Prototypes/_Crescent/Roles/factions.yml | cat -n

Repository: ss14-art/ratgore

Length of output: 1591


🏁 Script executed:

sed -n '208,235p' Resources/Prototypes/_Crescent/Roles/factions.yml | cat -n

Repository: ss14-art/ratgore

Length of output: 1684


Ошибка: KNC одежда ссылается на отключённую фракцию SRM.

Все три предмета одежды KNC (строки 12, 29, 46) имеют faction: SRM в компоненте ClothingAddFaction. Фракция SRM помечена как enabled: false в factions.yml. Поскольку эти предметы относятся к фракции KNC (по директории, ID и описанию), должно быть faction: KNC. KNC фракция корректно определена как enabled: true и используется всеми KNC ролями. Исправьте на faction: KNC во всех трёх местах.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Uniform/jumpsuits.yml` around
lines 11 - 12, В компоненте ClothingAddFaction у трёх KNC-предметов одежды
замените значение faction: SRM на faction: KNC — поискать все вхождения
компонента ClothingAddFaction в файле jumpsuits.yml для предметов KNC (три
места, соответствующие KNC по директории/ID/описанию) и заменить строку faction:
SRM на faction: KNC, чтобы ссылка указывала на включённую фракцию KNC.

parent: ClothingUniformJumpsuitClarizeOfficer
id: ClothingUniformJumpsuitKNCNoble
name: order knight regals
description: An knight's silken suit.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Опечатки в английских описаниях.

  • Line 22: An knight's silken suit.A knight's silken suit.
  • Line 39: A apothecary's jumpsuit with Order livery.An apothecary's jumpsuit with Order livery.
✏️ Предлагаемое исправление
-  description: An knight's silken suit.
+  description: A knight's silken suit.
-  description: A apothecary's jumpsuit with Order livery.
+  description: An apothecary's jumpsuit with Order livery.

Also applies to: 39-39

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Entities/Clothing/KNC/Uniform/jumpsuits.yml` at
line 22, Fix two English article typos in the jumpsuits.yml descriptions: change
the description value "An knight's silken suit." to "A knight's silken suit."
and change "A apothecary's jumpsuit with Order livery." to "An apothecary's
jumpsuit with Order livery." — locate and update the relevant description fields
in the Uniform/jumpsuits entries.

Comment on lines +67 to +77
equipment:
id: MontagnePDA
ears: ClothingHeadsetHunter
jumpsuit: ClothingUniformJumpsuitHunter
head: ClothingHeadHelmetHunterBasic
shoes: ClothingShoesBootsHunter
outerClothing: ClothingOuterArmorHunterDusterMontagne
gloves: ClothingHandsGlovesHunter
pocket2: RomaineBible
belt: ClothingBeltAssault
back: ClothingBackpackSRM

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Стартовое снаряжение и access используют унаследованные СРМ-прототипы.

id: MontagnePDA, ClothingUniformJumpsuitHunter, ClothingHeadHelmetHunterBasic, ClothingOuterArmorHunterDusterMontagne, ClothingBackpackSRM, а также access-теги Hunter/HunterSenior — это наследие старой СРМ. В описании PR прямо указано, что «Прототипы доспехов», «Прототипы оружия», «Догтаги (вендоры, магазин)» ещё не сделаны, так что это ожидаемо как placeholder. Перед мерджем удостоверьтесь, что либо заменили на КНЦ-аналоги, либо явно зафиксировали в TODO/changelog.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_banneret.yml` around lines 67 -
77, В файле с прототипом стартового снаряжения замените унаследованные от старой
СРМ плейсхолдеры либо на КНЦ-аналоги, либо задокументируйте их как намеренные
плейсхолдеры: найдите поля id: MontagnePDA, ClothingUniformJumpsuitHunter,
ClothingHeadHelmetHunterBasic, ClothingOuterArmorHunterDusterMontagne,
ClothingBackpackSRM и любые access-теги Hunter / HunterSenior и либо подмените
их на соответствующие КНЦ-прототипы, либо добавьте явную TODO/запись в changelog
рядом с этими полями, указывающую что они временные и будут заменены после
создания «Прототипов доспехов/оружия/догтагов».

Comment on lines +7 to +14
RatRankKNCLevySenior:
- !type:CharacterPlaytimeRequirement
tracker: JobTenderSRM
min: 72000 # 20 hours
RatRankKNCLevyMiddle:
- !type:CharacterPlaytimeRequirement
tracker: JobTenderSRM
min: 36000 # 10 hours

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Неверный tracker в требованиях ранга — используется JobTenderSRM вместо JobLevyKNC.

Это похоже на остаток после копипасты из SRM. Job определяет playTimeTracker: JobLevyKNC (строка 5) и в play_time_trackers.yml зарегистрирован именно JobLevyKNC. Аналогичный KNC_banneret.yml последовательно использует JobBanneretKNC во всех требованиях. С текущим значением отыгранные часы на роли Levy не будут засчитываться для разблокировки старших рангов.

🐛 Предлагаемый фикс
     RatRankKNCLevySenior:
     - !type:CharacterPlaytimeRequirement
-      tracker: JobTenderSRM
+      tracker: JobLevyKNC
       min: 72000 # 20 hours
     RatRankKNCLevyMiddle:
     - !type:CharacterPlaytimeRequirement
-      tracker: JobTenderSRM
+      tracker: JobLevyKNC
       min: 36000 # 10 hours
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_levy.yml` around lines 7 - 14, В
файле с требованиями рангов замените неверный tracker JobTenderSRM на правильный
JobLevyKNC для записей RatRankKNCLevySenior и RatRankKNCLevyMiddle: откройте
блокы с !type:CharacterPlaytimeRequirement для RatRankKNCLevySenior и
RatRankKNCLevyMiddle и поменяйте значение tracker с JobTenderSRM на JobLevyKNC,
чтобы соответствовать playTimeTracker, объявленному в задании и в
play_time_trackers.yml.

- !type:CharacterPlaytimeRequirement
tracker: JobLordeKNC
min: 3600000 # 1000 hours
RatRankKNCLordeStandart: []

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Проверка согласованности идентификатора ранга
rg -nP 'RatRankKNCLordeStand(art|ard)\b'

Repository: ss14-art/ratgore

Length of output: 239


Опечатка в идентификаторе ранга RatRankKNCLordeStandart.

Идентификатор содержит опечатку ("Standart" вместо "Standard"). Несмотря на то, что опечатка последовательно используется в обоих файлах (knc_ranks.yml и KNC_lorde.yml) и поэтому код работает корректно, рекомендуется исправить её одновременно в обоих местах, чтобы избежать опечатки в публичном идентификаторе.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Rat/Roles/Jobs/KNC/KNC_lorde.yml` at line 11, Rename
the misspelled rank identifier RatRankKNCLordeStandart to
RatRankKNCLordeStandard across the codebase; update every occurrence (including
the counterpart in knc_ranks.yml) so the identifier is consistent, and run a
quick search to ensure no remaining references to "Standart" remain to avoid
breaking references.

Comment on lines +17 to +22
"name": "off-equipped-HELMET",
"directions": 4
},
{
"name": "on-equipped-HELMET",
"directions": 4

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Критическая ошибка: неверные названия состояний для экипированного шлема.

Аналогично проблеме в KNCbanneret.rsi/meta.json, здесь используются состояния off-equipped-HELMET и on-equipped-HELMET, в то время как система одежды ожидает equipped-HELMET. Шлем не будет отображаться при надевании.

🔧 Предлагаемое исправление
     {
-      "name": "off-equipped-HELMET",
+      "name": "equipped-HELMET",
       "directions": 4
-    },
-    {
-      "name": "on-equipped-HELMET",
-      "directions": 4
     }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"name": "off-equipped-HELMET",
"directions": 4
},
{
"name": "on-equipped-HELMET",
"directions": 4
"name": "equipped-HELMET",
"directions": 4
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Textures/_Rat/Clothing/KNC/Head/KNCsoldier.rsi/meta.json` around
lines 17 - 22, The meta.json contains incorrect state names
"off-equipped-HELMET" and "on-equipped-HELMET" which the clothing system doesn't
recognize; replace those entries so the equipped helmet state uses the single
expected name "equipped-HELMET" (remove or rename both "off-equipped-HELMET" and
"on-equipped-HELMET" to "equipped-HELMET") ensuring the "name" fields match the
system expectation and keep "directions": 4 unchanged.

Comment on lines +3 to +4
"license": null,
"copyright": "Original artwork made by @naelmiros for the Hullrot Project. All rights reserved. Do not copy, use, modify, or redistribute without permission.",

@coderabbitai coderabbitai Bot Apr 24, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Найти все meta.json с null/пустой лицензией или запретительным копирайтом
fd -e json meta.json Resources/Textures/_Rat | while read -r f; do
  if jq -e '(.license == null) or (.license == "")' "$f" >/dev/null 2>&1; then
    echo "=== $f ==="
    jq '{license, copyright}' "$f"
  fi
done

# И отдельно — упоминания "All rights reserved" в meta.json
rg -n --type=json 'All rights reserved' Resources/Textures/_Rat

Repository: ss14-art/ratgore

Length of output: 4422


Несовместимая лицензия: «All rights reserved» ассет Hullrot.

"license": null в сочетании с копирайтом «Original artwork made by @naelmiros for the Hullrot Project. All rights reserved. Do not copy, use, modify, or redistribute without permission.» означает, что спрайт запрещён к использованию, модификации и распространению без явного разрешения автора. Для SS14-контента (обычно CC-BY-SA-3.0 / MIT для ассетов) это блокирующая проблема: ассет нельзя включать в публичный репозиторий.

Варианты решения:

  1. Получить письменное разрешение от @naelmiros / Hullrot на повторное лицензирование под CC-BY-SA-3.0 и отразить это в license/copyright.
  2. Найти источник с совместимой лицензией (например, оригинал из tgstation/Shiptest как в соседних KNC-файлах).
  3. Перерисовать спрайт самостоятельно и выставить совместимую лицензию.

До выяснения ситуации этот файл (и использующие его прототипы) не должны попадать в мердж.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCjuggernaut.rsi/meta.json`
around lines 3 - 4, The metadata declares "license": null while the "copyright"
field contains an "All rights reserved" notice for the Hullrot asset
(KNCjuggernaut.rsi meta.json), which makes the sprite incompatible with SS14
licensing; either obtain written permission from the author to relicense to a
compatible license and update the "license" and "copyright" fields accordingly,
replace the file with a source that has a compatible license (e.g., the original
tgstation/Shiptest equivalent) and update the metadata, or remove/replace the
asset by redrawing it and setting a compatible license; until one of these fixes
is completed, remove the meta.json reference (and any prototypes using this
asset) from the merge to prevent including the incompatible asset.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

Comment thread Resources/Textures/_Rat/Clothing/KNC/OuterClothing/KNCknight.rsi/meta.json Outdated
Comment thread Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCcombat.rsi/meta.json Outdated
Comment thread Resources/Textures/_Rat/Clothing/KNC/Uniform/KNCofficer.rsi/meta.json Outdated
@xtensig
xtensig force-pushed the srm-rework-to-knc branch from d2f89f8 to 2c8a095 Compare April 28, 2026 17:19
@SunChan07
SunChan07 marked this pull request as ready for review April 28, 2026 17:46
@SunChan07
SunChan07 marked this pull request as draft April 28, 2026 17:54

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
Resources/Prototypes/_Crescent/Entities/Clothing/SRM/helmets.yml (1)

162-360: Рекомендуется вынести общие компоненты KNC hardsuit-шлемов в абстрактного родителя.

Сейчас много копипасты с одинаковыми боевыми/световыми параметрами; отдельный abstract-прототип упростит дальнейший баланс и правки.

Возможный шаблон рефактора
+- type: entity
+  abstract: true
+  id: ClothingHeadHelmetHardsuitKNCBase
+  parent: ClothingHeadHardsuitWithLightBase
+  categories: [ HideSpawnMenu ]
+  components:
+  - type: BreathMask
+  - type: PointLight
+    radius: 6
+    color: "#c3fffa"
+  - type: PressureProtection
+    highPressureMultiplier: 0.1
+    lowPressureMultiplier: 1000
+  - type: Armor
+    modifiers:
+      coefficients:
+        Blunt: 0.9
+        Slash: 0.9
+        Piercing: 0.9
+        Heat: 0.9
+        Radiation: 0.9
+        Caustic: 0.9
+  - type: HideLayerClothing
+    slots: [ Hair, Snout ]

 - type: entity
-  parent: ClothingHeadHardsuitWithLightBase
+  parent: ClothingHeadHelmetHardsuitKNCBase
   id: ClothingHeadHelmetHardsuitKNCSoldier
   components:
   - type: Sprite
     sprite: _Crescent/Clothing/SRM/Head/mandatesoldier.rsi
   - type: Clothing
     sprite: _Crescent/Clothing/SRM/Head/mandatesoldier.rsi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Crescent/Entities/Clothing/SRM/helmets.yml` around
lines 162 - 360, Create an abstract parent entity (e.g.,
ClothingHeadHardsuitKNCBase) that contains the shared components (BreathMask,
PointLight with radius/color, PressureProtection
highPressureMultiplier/lowPressureMultiplier, Armor modifiers with the listed
coefficients, and HideLayerClothing slots Hair and Snout) and change each
specific helmet entity (ClothingHeadHelmetHardsuitKNCCommand,
ClothingHeadHelmetHardsuitKNCCoronet, ClothingHeadHelmetKNCjuggernaut,
ClothingHeadHelmetHardsuitKNCKnight, ClothingHeadHelmetHardsuitKNCSoldier,
ClothingHeadHelmetKNCRitter) to inherit from that new abstract parent, leaving
only unique per-entity components (Sprite and Clothing with their sprite paths,
plus name/description) in each child; remove the duplicated common component
blocks from the child entities so future balance/edits are centralized in
ClothingHeadHardsuitKNCBase.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/helmets.ftl`:
- Around line 19-29: Fix typos and grammatical cases in the listed ru-RU
entries: for ent-ClothingHeadHelmetHardsuitKNCCoronet change "доспех" to
"доспеха" (or rephrase to "из доспеха") and make the desc read "улучшенной
версии рыцарского доспеха "VIGILANTE" четвёртого поколения"; for
ent-ClothingHeadHatKNCBeret ensure the description starts with lowercase
"престижный" (remove duplicated "П"); for ent-ClothingHeadHelmetKNCRitter change
"шлем от массово производимой броня" to "шлем от массово производимой брони";
scan ent-ClothingHeadHelmetKNCTrooperHelmet,
ent-ClothingHeadHelmetKNCKnightCommanderHelmet, and
ent-ClothingHeadHelmetKNCjuggernaut for similar capitalization/case errors and
make descriptions consistent (lowercase sentence starts, correct genitive forms
and remove doubled letters).

In `@Resources/Prototypes/_Crescent/Entities/Clothing/SRM/armor.yml`:
- Around line 237-255: Описание у предмета с id
ClothingOuterArmorKNCArmorPrestige заявляет «slightly more durable», но статы
(armorMaxHealth, initialModifiers и т.д.) совпадают с trooper-версией; исправьте
это: либо обновите поле description у ClothingOuterArmorKNCArmorPrestige,
убрав/корректируя фразу про повышенную прочность, чтобы описание соответствовало
текущим параметрам, либо (если намерение — действительно повысить живучесть)
увеличьте armorMaxHealth и/или соответствующие значения в initialModifiers
(Blunt/Slash/Piercing/Heat/Caustic) в секции DegradeableArmor; отредактируйте
соответствующее описание или параметры рядом с id
ClothingOuterArmorKNCArmorPrestige.

---

Nitpick comments:
In `@Resources/Prototypes/_Crescent/Entities/Clothing/SRM/helmets.yml`:
- Around line 162-360: Create an abstract parent entity (e.g.,
ClothingHeadHardsuitKNCBase) that contains the shared components (BreathMask,
PointLight with radius/color, PressureProtection
highPressureMultiplier/lowPressureMultiplier, Armor modifiers with the listed
coefficients, and HideLayerClothing slots Hair and Snout) and change each
specific helmet entity (ClothingHeadHelmetHardsuitKNCCommand,
ClothingHeadHelmetHardsuitKNCCoronet, ClothingHeadHelmetKNCjuggernaut,
ClothingHeadHelmetHardsuitKNCKnight, ClothingHeadHelmetHardsuitKNCSoldier,
ClothingHeadHelmetKNCRitter) to inherit from that new abstract parent, leaving
only unique per-entity components (Sprite and Clothing with their sprite paths,
plus name/description) in each child; remove the duplicated common component
blocks from the child entities so future balance/edits are centralized in
ClothingHeadHardsuitKNCBase.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 41c2e06a-6599-4485-9f04-bfab8a59767e

📥 Commits

Reviewing files that changed from the base of the PR and between 1db37a6 and 2e2ce50.

⛔ Files ignored due to path filters (83)
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/bananium.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/coal.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/gold.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/iron.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/plasma.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/salt.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/silver.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/spacequartz.png is excluded by !**/*.png
  • Resources/Textures/Objects/Materials/ore.rsi/ore.rsi/uranium.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateberet.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateberet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommanderhelmet.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommanderhelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatehelmet.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatehelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi/icon-flash.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi/off-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi/on-equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecoronet.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecoronet.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecoronet.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecoronet.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (26)
  • Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/armor.ftl
  • Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/helmets.ftl
  • Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/jumpsuits.ftl
  • Resources/Prototypes/_Crescent/Entities/Clothing/SRM/armor.yml
  • Resources/Prototypes/_Crescent/Entities/Clothing/SRM/helmets.yml
  • Resources/Prototypes/_Crescent/Entities/Clothing/SRM/jumpsuits.yml
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateberet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommanderhelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatehelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecoronet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi/meta.json
✅ Files skipped from review due to trivial changes (20)
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommanderhelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/orderofficer.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordermedic.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecoronet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateworker.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatejuggernauthelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatejuggernaut.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatesoldier.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatesoldier.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateknight.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatecommand.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/ritterhelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatecommand.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandateberet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmor.rsi/meta.json
  • Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/armor.ftl
  • Resources/Textures/_Crescent/Clothing/SRM/Head/mandatehelmet.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandateknight.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi/meta.json
  • Resources/Textures/_Crescent/Clothing/SRM/Uniform/ordercombat.rsi/meta.json

Comment on lines +19 to +29
ent-ClothingHeadHelmetHardsuitKNCCoronet = рыцарский шлем от доспех "HONOR" mk.IV
.desc = шлем от улучшенной версии рыцарского доспеха "VIGILANTE" в четвёртом поколении. Смотрится брутально и величественно.
ent-ClothingHeadHatKNCBeret = рыцарский берет
.desc = престижный берет из дорогого материала в цветах Дома Ромейн. Показывает статус, но не защищает голову от проникновения нежелательных мыслей и предметов.
ent-ClothingHeadHelmetKNCTrooperHelmet = воинский шлем ордена
.desc = шлем, украшенный геральдикой Дома Ромейн.
ent-ClothingHeadHelmetKNCKnightCommanderHelmet = офицерский шлем ордена
.desc = Ппрестижный шлем, украшенный позолотой и геральдикой Дома Ромейн.
ent-ClothingHeadHelmetKNCRitter = шлем от боевого скафандра "PARABELLUM" mk.II
.desc = шлем от массово производимой броня для многочисленного ополчения, собираемого рыцарскими домами. Выглядит простовато.
ent-ClothingHeadHelmetKNCjuggernaut = рыцарский шлем от боевого скафандра "VALOR" mk.II

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Исправьте опечатки и падежи в новых ru-RU строках.

Есть несколько заметных ошибок, которые будут видны игрокам (например, Ппрестижный).

Предлагаемая правка
-ent-ClothingHeadHelmetHardsuitKNCCoronet = рыцарский шлем от доспех "HONOR" mk.IV
+ent-ClothingHeadHelmetHardsuitKNCCoronet = рыцарский шлем от доспеха "HONOR" mk.IV

-ent-ClothingHeadHelmetKNCKnightCommanderHelmet = офицерский шлем ордена
-    .desc = Ппрестижный шлем, украшенный позолотой и геральдикой Дома Ромейн.
+ent-ClothingHeadHelmetKNCKnightCommanderHelmet = офицерский шлем ордена
+    .desc = престижный шлем, украшенный позолотой и геральдикой Дома Ромейн.

-ent-ClothingHeadHelmetKNCRitter = шлем от боевого скафандра "PARABELLUM" mk.II
-    .desc = шлем от массово производимой броня для многочисленного ополчения, собираемого рыцарскими домами. Выглядит простовато.
+ent-ClothingHeadHelmetKNCRitter = шлем от боевого скафандра "PARABELLUM" mk.II
+    .desc = шлем от массово производимой брони для многочисленного ополчения, собираемого рыцарскими домами. Выглядит простовато.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
ent-ClothingHeadHelmetHardsuitKNCCoronet = рыцарский шлем от доспех "HONOR" mk.IV
.desc = шлем от улучшенной версии рыцарского доспеха "VIGILANTE" в четвёртом поколении. Смотрится брутально и величественно.
ent-ClothingHeadHatKNCBeret = рыцарский берет
.desc = престижный берет из дорогого материала в цветах Дома Ромейн. Показывает статус, но не защищает голову от проникновения нежелательных мыслей и предметов.
ent-ClothingHeadHelmetKNCTrooperHelmet = воинский шлем ордена
.desc = шлем, украшенный геральдикой Дома Ромейн.
ent-ClothingHeadHelmetKNCKnightCommanderHelmet = офицерский шлем ордена
.desc = Ппрестижный шлем, украшенный позолотой и геральдикой Дома Ромейн.
ent-ClothingHeadHelmetKNCRitter = шлем от боевого скафандра "PARABELLUM" mk.II
.desc = шлем от массово производимой броня для многочисленного ополчения, собираемого рыцарскими домами. Выглядит простовато.
ent-ClothingHeadHelmetKNCjuggernaut = рыцарский шлем от боевого скафандра "VALOR" mk.II
ent-ClothingHeadHelmetHardsuitKNCCoronet = рыцарский шлем от доспеха "HONOR" mk.IV
.desc = шлем от улучшенной версии рыцарского доспеха "VIGILANTE" в четвёртом поколении. Смотрится брутально и величественно.
ent-ClothingHeadHatKNCBeret = рыцарский берет
.desc = престижный берет из дорогого материала в цветах Дома Ромейн. Показывает статус, но не защищает голову от проникновения нежелательных мыслей и предметов.
ent-ClothingHeadHelmetKNCTrooperHelmet = воинский шлем ордена
.desc = шлем, украшенный геральдикой Дома Ромейн.
ent-ClothingHeadHelmetKNCKnightCommanderHelmet = офицерский шлем ордена
.desc = престижный шлем, украшенный позолотой и геральдикой Дома Ромейн.
ent-ClothingHeadHelmetKNCRitter = шлем от боевого скафандра "PARABELLUM" mk.II
.desc = шлем от массово производимой брони для многочисленного ополчения, собираемого рыцарскими домами. Выглядит простовато.
ent-ClothingHeadHelmetKNCjuggernaut = рыцарский шлем от боевого скафандра "VALOR" mk.II
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@Resources/Locale/ru-RU/ss14-ru/prototypes/_crescent/entities/clothing/srm/helmets.ftl`
around lines 19 - 29, Fix typos and grammatical cases in the listed ru-RU
entries: for ent-ClothingHeadHelmetHardsuitKNCCoronet change "доспех" to
"доспеха" (or rephrase to "из доспеха") and make the desc read "улучшенной
версии рыцарского доспеха "VIGILANTE" четвёртого поколения"; for
ent-ClothingHeadHatKNCBeret ensure the description starts with lowercase
"престижный" (remove duplicated "П"); for ent-ClothingHeadHelmetKNCRitter change
"шлем от массово производимой броня" to "шлем от массово производимой брони";
scan ent-ClothingHeadHelmetKNCTrooperHelmet,
ent-ClothingHeadHelmetKNCKnightCommanderHelmet, and
ent-ClothingHeadHelmetKNCjuggernaut for similar capitalization/case errors and
make descriptions consistent (lowercase sentence starts, correct genitive forms
and remove doubled letters).

Comment on lines +237 to +255
id: ClothingOuterArmorKNCArmorPrestige
name: Order Officer's Chestplate
description: A standard-issue chestplate manufactured according to the Order's existing CIF blueprints. Modified for officer's needs – the construction is slightly more durable than the soldier's chestplate. Adorned with additional parts indicating the owner's status.
components:
- type: Sprite
sprite: _Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi
- type: Clothing
sprite: _Crescent/Clothing/SRM/OuterClothing/mandatearmorprestige.rsi
- type: DegradeableArmor
armorMaxHealth: 750
armorType: Metallic
armorRepair: PlasteelEncasedKevlar
initialModifiers:
flatReductions:
Blunt: 15
Slash: 15
Piercing: 35
Heat: 20
Caustic: 15

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Описание prestige-варианта не соответствует его статам.

На Line 239 указано, что нагрудник офицера «slightly more durable», но параметры брони полностью совпадают с trooper-вариантом.

Минимальный безопасный фикс (обновить описание)
-  description: A standard-issue chestplate manufactured according to the Order's existing CIF blueprints. Modified for officer's needs – the construction is slightly more durable than the soldier's chestplate. Adorned with additional parts indicating the owner's status.
+  description: A standard-issue chestplate manufactured according to the Order's existing CIF blueprints. Modified for officer's needs and adorned with additional parts indicating the owner's status.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@Resources/Prototypes/_Crescent/Entities/Clothing/SRM/armor.yml` around lines
237 - 255, Описание у предмета с id ClothingOuterArmorKNCArmorPrestige заявляет
«slightly more durable», но статы (armorMaxHealth, initialModifiers и т.д.)
совпадают с trooper-версией; исправьте это: либо обновите поле description у
ClothingOuterArmorKNCArmorPrestige, убрав/корректируя фразу про повышенную
прочность, чтобы описание соответствовало текущим параметрам, либо (если
намерение — действительно повысить живучесть) увеличьте armorMaxHealth и/или
соответствующие значения в initialModifiers (Blunt/Slash/Piercing/Heat/Caustic)
в секции DegradeableArmor; отредактируйте соответствующее описание или параметры
рядом с id ClothingOuterArmorKNCArmorPrestige.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants