Skip to content

Спонсорский шмот для сервисного отдела - #159

Open
bzzzbzzbz wants to merge 19 commits into
ArcaneSS14:masterfrom
bzzzbzzbz:new_sponsor_clothes
Open

Спонсорский шмот для сервисного отдела#159
bzzzbzzbz wants to merge 19 commits into
ArcaneSS14:masterfrom
bzzzbzzbz:new_sponsor_clothes

Conversation

@bzzzbzzbz

@bzzzbzzbz bzzzbzzbz commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Описание PR

Добавил новые спонсорские косметики в лодауты сервиса.

Медиа

image

Тип PR

  • Feature
  • Fix
  • Tweak
  • Balance
  • Refactor
  • Port
  • Translate
  • Resprite

Изменения

🆑 seemah, Bulbo44key

  • add: Добавлены новые спонсорские вещи сервисному отделу.

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

RSI Diff Bot; head commit b67a83f merging into 5c04ffa
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi

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

Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi

State Old New Status
equipped-EYES Added
icon Added

Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi

State Old New Status
equipped-HAND Added
icon Added

Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi

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

Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi

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

Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi

State Old New Status
equipped-HELMET Added
icon Added

Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi

State Old New Status
equipped-HELMET Added
icon Added

Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi

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

Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi

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

Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi

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

Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi

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

Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi

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

Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi

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

Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi

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

Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi

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

Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi

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

Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi

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

Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi

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

Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi

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

Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi

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

Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi

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

Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi

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

Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi

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

Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi

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

Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi

State Old New Status
equipped-SOCKS Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi

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

Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi

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

Edit: diff updated after b67a83f

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Главное изменение

  • Добавлены спонсорские косметические предметы для сервисного отдела и связанных ролей.
  • Предметы подключены через Tier 2 sponsor loadout’ы, группы экипировки и ролевые лодауты.
  • CE-прототипы и лодауты заменены на NTR-варианты для формы, берета и плащей. Это breaking change для соответствующих ID.
  • Добавлены микрофон радиоведущего и костюм коровы с переключаемым головным убором.

Resources / localization

  • Добавлены YAML-прототипы, loadout groups, role loadouts и sponsor loadout’ы.
  • Добавлены RSI-метаданные для новых предметов с лицензией CC-BY-SA-4.0.
  • Добавлены русские локализации предметов, групп лодаутов и микрофона.
  • Перемещения и замены CE/NTR требуют проверки ссылок на удалённые loadout-группы и prototype ID.

Prediction / networking

  • Изменений Shared-кода, сетевых компонентов и prediction-логики нет.
  • Предметы используют стандартные компоненты экипировки. Микрофон использует BaseItem.

Validation / risk

  • В ходе CI выявлялись ошибки RSI: несовпадение состояний и PNG, отсутствующие icon.png, отсутствующий RSI микрофона и неверный регистр каталога OuterClothing.
  • Также выявлялись дубликат ID ClothingShoesJester, ссылки на удалённые CE-группы и неподдерживаемое поле tiers в SponsorRequirementLoadoutEffect.
  • Ошибки Pool manager has not been initialized были следствием ошибок загрузки RSI.
  • На одном этапе Validate RSIs и Test Packaging проходили, но актуальный итог проверок не подтверждён.
  • Runtime-проверка лодаутов и полноты локализации не указана. Основной риск — оставшиеся ошибки ресурсов, ID и доступности предметов в ролевых лодаутах.

Walkthrough

Добавлены спонсорские предметы одежды и микрофон, их русские локализации, RSI-метаданные, патронные лоадауты и группы ролей. Варианты старшего инженера заменены вариантами NanoTrasen.

Changes

Спонсорская экипировка

Layer / File(s) Summary
Прототипы экипировки
Resources/Prototypes/_Arcane/Entities/Clothing/*, Resources/Prototypes/_Arcane/Entities/Objects/*
Добавлены предметы одежды, аксессуары и микрофон. Прототипы CE заменены вариантами NTR.
Патронные лоадауты и группы
Resources/Prototypes/_Arcane/Loadouts/*, Resources/Prototypes/Loadouts/*, Resources/Prototypes/_Goobstation/Loadouts/*
Добавлены патронные записи и группы для ролей. Обновлены группы Librarian, Zookeeper, Clown, Mime, Musician, Radio Host и Service Worker.
Русская локализация
Resources/Locale/ru-RU/_Arcane/entities/*, Resources/Locale/ru-RU/_Arcane/loadouts/*
Добавлены русские названия и описания предметов и групп лоадаутов.
Метаданные спрайтов
Resources/Textures/_Arcane/*
Добавлены RSI-метаданные с состояниями icon, inhand и equipped.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant RoleLoadout
  participant LoadoutGroup
  participant PatronLoadout
  participant EntityPrototype
  RoleLoadout->>LoadoutGroup: выбирает группу экипировки
  LoadoutGroup->>PatronLoadout: предлагает патронный вариант
  PatronLoadout->>EntityPrototype: выдаёт предмет
  EntityPrototype->>EntityPrototype: использует RSI-спрайт
Loading

Possibly related PRs

  • ArcaneSS14/arcane#143 — добавляет связанный прототип ClothingHatFlyAgaric и его русскую локализацию.

Suggested reviewers: puroslavking

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Заголовок точно описывает основное изменение: добавление спонсорской одежды для сервисного отдела.
Description check ✅ Passed Описание связано с изменениями и указывает на добавление новых спонсорских косметических предметов в лодауты сервиса.
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.
✨ 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.

@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: 12

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/head/hats.ftl`:
- Around line 28-29: Update the localized name for ent-ClothingHatNTRBlackBeret
to identify it as the NanoTrasen beret rather than the senior engineer beret,
while leaving its description unchanged.

In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl`:
- Around line 36-43: Исправьте орфографические и грамматические ошибки в
локализациях ent-ClothingUniformBotanist и
ent-ClothingUniformBotanistWhithStraps, а также в названии
ent-ClothingUniformChiefCook, сохранив исходный смысл русских описаний.

In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/cloaks.ftl`:
- Around line 3-4: Исправьте согласование в описании ent-ClothingCloakNTRBlack,
заменив «созданных» на форму, согласованную с существительным «плащ».

In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl`:
- Around line 7-10: Локализовать непереведённые описания в
Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl:7-10 для
ent-ClothingOuterMusicianJacket и ent-ClothingOuterRadioHostJacket, либо явно
подтвердить сохранение цитат. Также локализовать описание женственной формы в
Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl:50-53.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Eyes/glasses.yml`:
- Around line 6-7: Correct the English fallback description for “bookworm's
glasses” by changing the misspelled word “normaly” to “normally” in the
`description` field.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml`:
- Around line 247-254: Update both sprite references in ClothingUniformCook,
under the Sprite and Clothing components, to use the cook.rsi resource instead
of cleaner.rsi.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.yml`:
- Line 25: Исправьте опечатку в описании предмета: замените некорректное слово
“experienNTRd” на “experienced” или, если упоминание NTR намеренно, на
“experienced NTR doctor”, сохранив корректный английский fallback-текст для
пользователя.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/OuterClothing/specific.yml`:
- Around line 54-56: Исправьте значения sprite для костюма коровы и куртки
сервисника в соответствующих сущностях Clothing: используйте корректное имя
каталога OuterClothing/Sponsor с правильным регистром вместо Outerclothing и не
пропускайте каталог Sponsor.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml`:
- Around line 60-62: Исправьте английское описание прототипа
ClothingShoesTwilightSparkle: замените грамматически неверную фразу на “Why are
they so high?”, сохранив остальной текст без изменений.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Socks/socks.yml`:
- Around line 15-16: Correct the English description for mime’s stockings from
“Stripped stockings” to “Striped stockings,” and update the corresponding ru-RU
localization entry to match the intended striped-stockings meaning.

In `@Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml`:
- Around line 352-720: Исправьте поле экипировки во всех новых patron-loadout,
сопоставив каждый предмет с фактическим слотом: head, gloves, outerClothing,
shoes, socks, underwear, eyes или belt вместо neck. Для предметов без слота
используйте обычный Item-объект; в RadioHostMicrophonePatron замените equipment
на storage, поскольку RadioHostMicrophone не является Clothing.

In `@Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/meta.json`:
- Around line 1-26: Синхронизируйте prototype-ссылки с фактическими путями RSI:
в Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/meta.json
(строки 1-26) обновите ссылку ClothingOuterCow на
_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi; в
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/meta.json
(строки 1-26) обновите ClothingOuterServiceJacket на
_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi.
🪄 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: ASSERTIVE

Plan: Pro Plus

Run ID: 437bcc6c-81eb-42b6-8b9f-93ced6b3a6f2

📥 Commits

Reviewing files that changed from the base of the PR and between f62eb03 and e67316a.

⛔ Files ignored due to path filters (181)
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/equipped-BELT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/equipped-EYES.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/equipped-HANDS.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/icon_head.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (76)
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/belt/belt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/eyes/glasses.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/hands/gloves.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/head/hats.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/cloaks.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/shoes/shoes.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/socks.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/objects/specific/sponsor/microphone.ftl
  • Resources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftl
  • Resources/Prototypes/Loadouts/loadout_groups.yml
  • Resources/Prototypes/Loadouts/role_loadouts.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Belt/belt.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Eyes/glasses.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Hands/gloves.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Head/hats.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/OuterClothing/specific.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Socks/socks.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Objects/Specific/Sponsor/microphone.yml
  • Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml
  • Resources/Prototypes/_Arcane/Loadouts/loadout_groups.yml
  • Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml
  • Resources/Prototypes/_Goobstation/Loadouts/role_loadouts.yml
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/meta.json

Comment thread Resources/Locale/ru-RU/_Arcane/entities/clothing/head/hats.ftl Outdated
Comment thread Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/cloaks.ftl Outdated
Comment thread Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl
Comment thread Resources/Prototypes/_Arcane/Entities/Clothing/Eyes/glasses.yml
Comment thread Resources/Prototypes/_Arcane/Entities/Clothing/OuterClothing/specific.yml Outdated
Comment thread Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml
Comment thread Resources/Prototypes/_Arcane/Entities/Clothing/Socks/socks.yml
Comment thread Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml Outdated
@UmbiMax

UmbiMax commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Зоотехника с боксёром удалили.

@ReWAFFlution ReWAFFlution 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.

Линтер и валидатор починить, а всё остальное исправить, ну или дать ответ. Ыыыы

Comment thread Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl
Comment thread Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml
@coderabbitai coderabbitai Bot mentioned this pull request Aug 1, 2026
9 tasks
@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

@coderabbitai почему упали тесты?

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="159"

echo "== PR checks =="
gh pr checks "$pr" --repo "$repo" --watch=false || true

echo
echo "== Recent workflow runs for PR =="
gh run list --repo "$repo" --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq .headRefName)" --limit 20 \
  --json databaseId,name,status,conclusion,displayTitle,event,headSha,url

echo
echo "== Failed workflow job logs =="
while IFS= read -r run_id; do
  echo "--- run ${run_id} ---"
  gh run view "$run_id" --repo "$repo" --log-failed || true
done < <(
  gh run list --repo "$repo" --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq .headRefName)" --limit 20 \
    --json databaseId,conclusion --jq '.[] | select(.conclusion == "failure") | .databaseId'
)

Length of output: 7645


🏁 Script executed:

#!/bin/bash
set -u

repo="ArcaneSS14/arcane"

for run_id in 30603363076 30603363025 30603363031 30603363021; do
  echo "===== workflow run: ${run_id} ====="
  gh run view "$run_id" --repo "$repo" --log-failed || echo "Не удалось получить лог workflow ${run_id}"
  echo
done

Length of output: 200808


🏁 Script executed:

#!/bin/bash
set -euo pipefail

log="/tmp/coderabbit-shell-logs/shell-output-MUPvRW"

echo "== Все строки ошибок из полного CI-лога =="
rg -n -i -C 5 \
  '##\[error\]|Unhandled exception|KeyNotFoundException|error [A-Z]+[0-9]+|fail(ed|ure)?|exception|invalid|missing|not found|YAML' \
  "$log" | head -n 1200 || true

echo
echo "== Состояния из новых RSI без соответствующего PNG =="
while IFS= read -r -d '' meta; do
  dir="$(dirname "$meta")"
  while IFS= read -r state; do
    if [ ! -f "$dir/$state.png" ]; then
      printf '%s: отсутствует %s.png\n' "$dir" "$state"
    fi
  done < <(jq -r '.states[]?.name // empty' "$meta")
done < <(find Resources/Textures/_Arcane -path '*Sponsor/*.rsi/meta.json' -print0)

echo
echo "== Изменённые RSI в PR и их файлы =="
git diff --name-status "origin/$(gh pr view 159 --repo ArcaneSS14/arcane --json baseRefName --jq .baseRefName)"...HEAD \
  | rg '\.rsi/' || true

Length of output: 201576


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
from pathlib import Path
import json
import subprocess

log = Path("/tmp/coderabbit-shell-logs/shell-output-MUPvRW").read_text(errors="replace").splitlines()

jobs = ("Validate RSIs", "YAML Linter", "build (ubuntu-latest)", "Test Packaging")
markers = (
    "##[error]", "Unhandled exception", "KeyNotFoundException",
    "error CS", "error MSB", "fatal", "failed", "failure",
    "invalid", "not found", "missing", "exit code",
)

print("== Фатальные сообщения CI по job ==")
for job in jobs:
    matches = [
        (i, line) for i, line in enumerate(log)
        if line.startswith(job + "\t") and any(marker.lower() in line.lower() for marker in markers)
        and "##[warning]" not in line
    ]
    print(f"\n--- {job}: {len(matches)} совпадений ---")
    for i, _ in matches[:40]:
        for line in log[max(0, i - 2): min(len(log), i + 4)]:
            print(line)
        print()

print("\n== Новые RSI: states без PNG ==")
base = subprocess.check_output(
    ["gh", "pr", "view", "159", "--repo", "ArcaneSS14/arcane", "--json", "baseRefName", "--jq", ".baseRefName"],
    text=True,
).strip()
changed = subprocess.check_output(
    ["git", "diff", "--name-only", f"origin/{base}...HEAD"],
    text=True,
).splitlines()
new_meta = [Path(p) for p in changed if p.startswith("Resources/Textures/") and p.endswith(".rsi/meta.json")]

for meta in new_meta:
    data = json.loads(meta.read_text())
    missing = [state["name"] for state in data.get("states", []) if not (meta.parent / f'{state["name"]}.png').is_file()]
    if missing:
        print(f"{meta}: {', '.join(missing)}")

print("\n== Новые RSI и перечисленные PNG ==")
for meta in new_meta:
    pngs = ", ".join(sorted(p.name for p in meta.parent.glob("*.png"))) or "<PNG отсутствуют>"
    print(f"{meta.parent}: {pngs}")
PY

Length of output: 19101


🏁 Script executed:

#!/bin/bash
set -euo pipefail

log="/tmp/coderabbit-shell-logs/shell-output-MUPvRW"

echo "== Все ошибки YAML linter =="
rg -n -i 'YAML Linter.*(::error|[0-9]+ errors found|exit code)' "$log" || true

echo
echo "== Фатальные строки всех jobs workflow Build & Test Debug =="
rg -n -i -C 3 \
  '(Build & Test Debug|build \(ubuntu-latest\)).*(##\[error\]|Unhandled exception|KeyNotFoundException|error [A-Z]+[0-9]+|failed|failure|exit code|assert|test.*fail)' \
  "$log" || true

echo
echo "== Названия job в полном логе, которые содержат build =="
cut -f1 "$log" | sort -u | rg -i 'build|test' || true

Length of output: 2764


@bzzzbzzbz Тесты падают из-за ошибок в ресурсах и прототипах PR.

  1. Некорректные RSI. Из-за них падают Validate RSIs и Test Packaging.

    • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi: metadata содержит equipped-HAND, но файл называется equipped-HANDS.png.
    • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi: metadata содержит inhand-left и inhand-right, но PNG отсутствуют.
    • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi: metadata содержит icon, но существует только icon_head.png.
  2. Дубликат прототипа. YAML Linter сообщает:

    • Resources/Prototypes/Entities/Clothing/Shoes/specific.yml, Line 219: повторный ID ClothingShoesJester.
  3. Удалены CE loadouts, но ссылки на них остались. В Resources/Prototypes/Loadouts/loadout_groups.yml остаются:

    • CEBlackBeretPatron
    • CEBlackPatron
    • CEBlackSkirtPatron
    • CEWhiteSkirtPatron
    • CEWhitePatron
    • CEBlackCloakPatron
    • CETricolorCloakPatron

    В этом PR их заменили на NTR-варианты в Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml, но соответствующие группы лодаутов не обновили.

build (ubuntu-latest) тоже красный, но его отдельный лог не вернулся из GitHub Actions. Подтверждённые ошибки выше уже достаточны, чтобы объяснить падение Validate RSIs, YAML Linter и Test Packaging.

You are interacting with an AI system.

@UmbiMax

UmbiMax commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Мердж конфликт

@UmbiMax

UmbiMax commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

В остальном всё в порядке. Закинул бы PR

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

Мердж конфликт

А как такой конфликт вообще убрать? Он просит у меня вернуть CEBlackBeretPatron, что сломает пр

@coderabbitai coderabbitai Bot mentioned this pull request Aug 4, 2026
9 tasks
@ReWAFFlution

Copy link
Copy Markdown
Contributor

Починить
image

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

@coderabbitai почему падают тесты?

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="159"

echo "== Current PR checks =="
gh pr checks "$pr" --repo "$repo" || true

echo
echo "== Failed workflow runs on the PR branch =="
branch="$(gh pr view "$pr" --repo "$repo" --json headRefName --jq '.headRefName')"
gh run list --repo "$repo" --branch "$branch" --limit 10 \
  --json databaseId,displayTitle,name,status,conclusion,headSha,url \
  --jq '.[] | select(.conclusion == "failure")'

echo
echo "== Failed job logs =="
while IFS= read -r run_id; do
  echo "--- Run $run_id ---"
  gh run view "$run_id" --repo "$repo" --log-failed || true
done < <(
  gh run list --repo "$repo" --branch "$branch" --limit 10 \
    --json databaseId,conclusion \
    --jq '.[] | select(.conclusion == "failure") | .databaseId'
)

Length of output: 3004


🏁 Script executed:

#!/bin/bash
set -u

repo="ArcaneSS14/arcane"

for run_id in 31040405541 31040405623; do
  echo "===== workflow run: ${run_id} ====="
  gh run view "$run_id" --repo "$repo" --log-failed || true
  echo
done

Length of output: 200738


🏁 Script executed:

#!/bin/bash
set -euo pipefail

log="/tmp/coderabbit-shell-logs/shell-output-9B5pqr"

echo "== YAML Linter: errors =="
rg -n -i -C 4 \
  'YAML Linter.*(error|fail|duplicate|invalid|exception)|::error|duplicate (prototype|id)|[0-9]+ errors found' \
  "$log" | head -n 400 || true

echo
echo "== IntegrationTests: primary termination evidence =="
rg -n -i -C 8 \
  'Run Content\.IntegrationTests.*(Unhandled|fatal|exception|crash|terminated|abort|out of memory|segmentation|stack overflow|timeout|timed out|error|fail)' \
  "$log" | head -n 800 || true

echo
echo "== First failing IntegrationTests messages =="
rg -n 'build \(ubuntu-latest\).*Run Content\.IntegrationTests.*(Failed |Error Message:|##\[error\])' \
  "$log" | head -n 80 || true

Length of output: 153650


@bzzzbzzbz Сейчас CI падает по четырём причинам.

  1. Дубликат прототипа обуви.
    YAML Linter сообщает дубликат ID ClothingShoesJester в Prototypes/Entities/Clothing/Shoes/specific.yml, Line 219.
    Новый прототип должен иметь другой ID или не должен дублировать upstream-прототип.

  2. Неверное поле в sponsor loadout.
    В Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml, Line 357 используется tiers в SponsorRequirementLoadoutEffect.
    Текущий тип эффекта не содержит это поле.

  3. Отсутствует RSI микрофона.
    Integration test не может загрузить:

    /Textures/_Arcane/Objects/Specific/Sponsor/microphone.rsi
    

    Из-за этого не создаётся прототип RadioHostMicrophone.

  4. Неверный регистр пути RSI коровьего костюма.
    Прототип ClothingOuterCow запрашивает:

    /Textures/_Arcane/Clothing/Outerclothing/Sponsor/cow.rsi
    

    Каталог ресурсов называется OuterClothing. Linux различает регистр. Нужно привести путь в прототипе к фактическому имени каталога.

Ошибки Pool manager has not been initialized не являются первопричиной. Они появились после ошибок загрузки RSI и аварийного удаления test-pair. Validate RSIs и Test Packaging уже проходят.

You are interacting with an AI system.

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

@coderabbitai почему падают тесты?

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="159"

echo "== PR checks =="
gh pr checks "$pr" --repo "$repo" || true

branch="$(gh pr view "$pr" --repo "$repo" --json headRefName --jq '.headRefName')"
echo "== Failed workflow runs =="
gh run list --repo "$repo" --branch "$branch" --limit 10 \
  --json databaseId,name,displayTitle,status,conclusion,url \
  --jq '.[] | select(.conclusion == "failure")'

echo "== Failed job logs =="
while IFS= read -r run_id; do
  echo "--- run $run_id ---"
  gh run view "$run_id" --repo "$repo" --log-failed || true
done < <(
  gh run list --repo "$repo" --branch "$branch" --limit 10 \
    --json databaseId,conclusion \
    --jq '.[] | select(.conclusion == "failure") | .databaseId'
)

Length of output: 819


@bzzzbzzbz Проверка не выполнилась: среда не смогла клонировать репозиторий. Поэтому актуальную причину падения тестов подтвердить нельзя.

Повторите запрос после восстановления доступа к репозиторию. Нужны статусы PR checks и логи упавших GitHub Actions jobs.

You are interacting with an AI system.

Comment thread Resources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftl Outdated
Comment thread Resources/Prototypes/Loadouts/loadout_groups.yml Outdated
Comment thread Resources/Prototypes/Loadouts/role_loadouts.yml
Comment thread Resources/Prototypes/Loadouts/role_loadouts.yml
Comment thread Resources/Prototypes/Loadouts/role_loadouts.yml
Comment thread Resources/Prototypes/Loadouts/role_loadouts.yml
- MimeEnvirohelm
- MimeEnvirosuit
- MimeEnvirogloves
- MimeGloves

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Идентичная проблема

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@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: 10

♻️ Duplicate comments (2)
Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl (1)

36-39: 📐 Maintainability & Code Quality | 🟡 Minor

Исправить опечатку в описаниях формы ботаника.

Замените растенями на растениями в обоих описаниях.

Исправление
-    .desc = Специальная одежда для работы с растенями.
+    .desc = Специальная одежда для работы с растениями.

As per path instructions: пользовательские строки в Resources/Locale/**/*.ftl должны быть корректными и локализованными.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl`
around lines 36 - 39, Исправьте опечатку в описаниях ent-ClothingUniformBotanist
и ent-ClothingUniformBotanistWhithStraps: замените «растенями» на «растениями»,
сохранив остальной текст без изменений.

Source: Path instructions

Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl (1)

7-10: 📐 Maintainability & Code Quality | 🟡 Minor

Убрать непереведённые описания из русской локали.

Обе записи используют иностранный текст как полное описание предмета.

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl#L7-L10: заменить английские описания музыкальной куртки и пиджака радиоведущего русскими описаниями.
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl#L50-L53: заменить французские описания женственной формы русскими описаниями.

As per path instructions: каждая пользовательская строка в русской локали должна быть локализована.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl` around
lines 7 - 10, Заменить непереведённые описания записей
ent-ClothingOuterMusicianJacket и ent-ClothingOuterRadioHostJacket в
Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl, строки 7-10,
русскими описаниями. Также заменить французские описания женственной формы в
Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl,
строки 50-53, русскими описаниями; остальные ключи сохранить без изменений.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Resources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftl`:
- Around line 2-22: Добавьте в английские FTL-локали парные записи для всех
новых ключей loadout-group-librarian-*, loadout-group-clown-underwear,
loadout-group-mime-*, loadout-group-musician-shoes, loadout-group-radiohost-* и
loadout-group-service-worker-*. Разместите их в соответствующем файле en-US и
задайте локализованные английские значения, сохранив структуру и смысл русских
записей.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml`:
- Around line 291-298: Добавьте отсутствующий ресурс jester_costume.rsi для
ClothingUniformJesterCostume по указанному пути, включив состояния icon и
equipped-INNERCLOTHING, либо замените ссылки Sprite и Clothing на существующий
совместимый RSI.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.yml`:
- Around line 5-10: Update the English localization entries in cloaks.ftl to
replace the obsolete ClothingCloakCEBlack and ClothingCloakCETricolor keys with
ClothingCloakNTRBlack and ClothingCloakNTRTricolor, preserving the cloak names
and descriptions from the corresponding prototypes.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml`:
- Around line 42-45: Добавьте отсутствующие RSI-ресурсы musician_boots и
jester_shoes по путям, указанным в компонентах Sprite и Clothing соответствующих
shoe-прототипов, чтобы они совпадали с существующими .meta.json. Затем запустите
Content.YAMLLinter и исправьте все остальные новые пути к RSI, для которых
отсутствуют соответствующие ресурсы.
- Around line 47-50: Исправьте ссылки на прототип обуви в записях loadout для
JesterShoes и ClothingShoesJester, чтобы они использовали фактический
идентификатор ClothingShoesJesters, объявленный в прототипе
ClothingShoesJesters. Если вместо этого переименуете ID прототипа в
ClothingShoesJester, обновите все ссылки согласованно и сохраните единый
идентификатор.

In
`@Resources/Prototypes/_Arcane/Entities/Objects/Specific/Sponsor/microphone.yml`:
- Line 4: Correct the item name in the microphone prototype from “microphine” to
“microphone”.

In `@Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml`:
- Around line 692-706: Update the LibrarianShoes and LibrarianGlasses loadout
groups to use minLimit: 0 instead of minLimit: 1, leaving their maxLimit and
loadout entries unchanged.

In `@Resources/Prototypes/Loadouts/role_loadouts.yml`:
- Around line 129-134: Объедините ServiceWorkerJumpsuit с существующей группой
выбора формы BartenderJumpsuit, чтобы для слота jumpsuit оставалась одна группа:
добавьте новый вариант в ту же группу либо замените BartenderJumpsuit, сохранив
ServiceWorkerShoes и ServiceWorkerBelt.
- Around line 195-200: Удалите дублирующиеся группы из новых блоков roleLoadout
в Resources/Prototypes/Loadouts/role_loadouts.yml: в строках 195-200 уберите
Animals, GroupSpeciesBreathTool и группы enviro библиотекаря; в строках 339-343
— Animals и группы enviro клоуна; в строках 378-383 — Animals, группы enviro и
MimeGloves. Сохраните существующие экземпляры этих групп ниже в соответствующих
roleLoadout.

In
`@Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/meta.json`:
- Around line 14-16: Ensure the sterile.rsi resource matches its meta.json
definition: add an icon.png asset with the exact lowercase name and required
dimensions for the declared icon state, or remove the icon state from meta.json
if no icon is intended.

---

Duplicate comments:
In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl`:
- Around line 36-39: Исправьте опечатку в описаниях ent-ClothingUniformBotanist
и ent-ClothingUniformBotanistWhithStraps: замените «растенями» на «растениями»,
сохранив остальной текст без изменений.

In `@Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl`:
- Around line 7-10: Заменить непереведённые описания записей
ent-ClothingOuterMusicianJacket и ent-ClothingOuterRadioHostJacket в
Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl, строки 7-10,
русскими описаниями. Также заменить французские описания женственной формы в
Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl,
строки 50-53, русскими описаниями; остальные ключи сохранить без изменений.
🪄 Autofix

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: ASSERTIVE

Plan: Pro Plus

Run ID: 3f104106-acc5-4929-a2e5-7b9a7c9938e3

📥 Commits

Reviewing files that changed from the base of the PR and between 5c04ffa and b67a83f.

⛔ Files ignored due to path filters (181)
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/equipped-BELT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/equipped-EYES.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/equipped-HAND.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/equipped-HELMET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/equipped-INNERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/equipped-NECK.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/equipped-OUTERCLOTHING.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/equipped-FEET.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/equipped-SOCKS.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-right.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (77)
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/belt/belt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/eyes/glasses.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/hands/gloves.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/head/hats.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/cloaks.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/shoes/shoes.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/socks.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/objects/specific/sponsor/microphone.ftl
  • Resources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftl
  • Resources/Prototypes/Loadouts/loadout_groups.yml
  • Resources/Prototypes/Loadouts/role_loadouts.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Belt/belt.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Eyes/glasses.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Hands/gloves.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Head/hats.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/OuterClothing/specific.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Socks/socks.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Objects/Specific/Sponsor/microphone.yml
  • Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml
  • Resources/Prototypes/_Arcane/Loadouts/loadout_groups.yml
  • Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml
  • Resources/Prototypes/_Goobstation/Loadouts/role_loadouts.yml
  • Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/meta.json
  • Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/meta.json

Comment on lines +2 to +22
loadout-group-librarian-shoes = Библиотекарь, обувь
loadout-group-librarian-glasses = Библиотекарь, очки

# Clown
loadout-group-clown-underwear = Клоун, нижнее бельё

# Mime
loadout-group-mime-hands = Мим, руки
loadout-group-mime-socks = Мим, носки

# Musician
loadout-group-musician-shoes = Музыкант, обувь

# Radio Host
loadout-group-radiohost-outerclothing = Радиоведущий, верхняя одежда
loadout-group-radiohost-microphone = Радиоведущий, микрофон

# Service Worker
loadout-group-service-worker-jumpsuit = Сервисный работник, униформа
loadout-group-service-worker-shoes = Сервисный работник, обувь
loadout-group-service-worker-belt = Сервисный работник, пояс

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

missing=0
for key in \
  loadout-group-librarian-shoes \
  loadout-group-librarian-glasses \
  loadout-group-clown-underwear \
  loadout-group-mime-hands \
  loadout-group-mime-socks \
  loadout-group-musician-shoes \
  loadout-group-radiohost-outerclothing \
  loadout-group-radiohost-microphone \
  loadout-group-service-worker-jumpsuit \
  loadout-group-service-worker-shoes \
  loadout-group-service-worker-belt
do
  if ! rg -q --fixed-strings "$key" Resources/Locale/en-US --glob '*.ftl'; then
    printf 'Missing en-US key: %s\n' "$key"
    missing=1
  fi
done

exit "$missing"

Repository: ArcaneSS14/arcane

Length of output: 715


🏁 Script executed:

#!/bin bash
set -euo pipefail
printf 'Locales for the reviewed key pattern:\n'
rg -n --fixed-strings 'loadout-group-' Resources/Locale --glob '*.ftl' | sed -n '1,220p'
printf '\nFile size:\n'
wc -l Resources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftl Resources/Locale/en-US/_Arcane/loadouts/loadout-groups.ftl 2>/dev/null || true

Repository: ArcaneSS14/arcane

Length of output: 25839


Добавьте парные записи en-US для новых групп лоадаутов.

В текущем изменении есть только значения ru-RU, а перечисленные ключи loadout-group-* отсутствуют в Resources/Locale/en-US/_Arcane/loadouts/loadout-groups.ftl и других FTL-файлах локаля. Это приводит к отображению необработанных ключей в английском интерфейсе.

Добавьте английские локальные значения, как требуют правила локализации Resources/Locale/**: начинать с en-US и локализировать игровую строку.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftl` around lines 2 -
22, Добавьте в английские FTL-локали парные записи для всех новых ключей
loadout-group-librarian-*, loadout-group-clown-underwear, loadout-group-mime-*,
loadout-group-musician-shoes, loadout-group-radiohost-* и
loadout-group-service-worker-*. Разместите их в соответствующем файле en-US и
задайте локализованные английские значения, сохранив структуру и смысл русских
записей.

Sources: Coding guidelines, Path instructions

Comment on lines +291 to +298
id: ClothingUniformJesterCostume
name: jester's costume
description: Old-fashioned clown costume.
components:
- type: Sprite
sprite: _Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi
- type: Clothing
sprite: _Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi

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.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rsi='Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi'

test -f "$rsi/meta.json"
test -f "$rsi/icon.png"

jq -e '
  [.states[].name] as $states
  | (($states | index("icon")) != null)
  and (($states | index("equipped-INNERCLOTHING")) != null)
' "$rsi/meta.json"

Repository: ArcaneSS14/arcane

Length of output: 155


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Files matching jester_costume.rsi:"
git ls-files | grep -F 'jester_costume.rsi' || true

echo
echo "Prototype lines:"
cat -n "Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml" | sed -n '280,305p'

echo
echo "Candidate RSI paths from repo:"
git ls-files 'Resources/Textures/*jester*|Resources/Textures/**/*jester*'
git ls-files | rg 'jester_costume\.rsi|jester.*costume|Sponsor' | head -200

Repository: ArcaneSS14/arcane

Length of output: 18126


🏁 Script executed:

#!/bin/bash
set -euo pipefail

rsi='Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi'

echo "path tests:"
test -f "$rsi/meta.json" && echo "meta.json exists" || echo "meta.json missing"
test -f "$rsi/icon.png" && echo "icon.png exists" || echo "icon.png missing"

if test -f "$rsi/meta.json"; then
  python3 - <<'PY'
import json
from pathlib import Path
p=Path('Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi/meta.json')
try:
    data=json.loads(p.read_text())
except Exception as e:
    print(e)
    raise SystemExit(2)
names=[s.get("name") for s in data.get("states", [])]
print("states:", names)
for needed in ["icon", "equipped-INNERCLOTHING"]:
    print(f"{needed}: {needed in names}")
PY
fi

Repository: ArcaneSS14/arcane

Length of output: 202


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Files matching jester_costume.rsi:"
git ls-files | grep -F 'jester_costume.rsi' || true

echo
echo "Prototype lines:"
cat -n "Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml" | sed -n '280,305p'

echo
echo "Candidate RSI paths from repo:"
git ls-files 'Resources/Textures/*jester*|Resources/Textures/**/*jester*'
git ls-files | rg 'jester_costume\.rsi|jester.*costume|Sponsor' | head -200

echo
echo "Path/tests for required RSI:"
rsi='Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi'
test -f "$rsi/meta.json" && echo "meta.json exists" || echo "meta.json missing"
test -f "$rsi/icon.png" && echo "icon.png exists" || echo "icon.png missing"

if test -f "$rsi/meta.json"; then
  python3 - <<'PY'
import json
from pathlib import Path
p = Path('Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi/meta.json')
data = json.loads(p.read_text())
names = [s.get("name") for s in data.get("states", []) if isinstance(s, dict)]
print("states:", names)
for needed in ["icon", "equipped-INNERCLOTHING"]:
    print(f"{needed}: {needed in names}")
PY
fi

Repository: ArcaneSS14/arcane

Length of output: 18126


Добавьте отсутствующий RSI jester_costume.rsi.

ClothingUniformJesterCostume указывает на _Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi, но репозиторий не содержит Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/jester_costume.rsi. В результате прототипы не загрузятся; добавьте недостающий RSI-папок с состояниями icon, equipped-INNERCLOTHING, либо используйте существующий ресурс.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.yml`
around lines 291 - 298, Добавьте отсутствующий ресурс jester_costume.rsi для
ClothingUniformJesterCostume по указанному пути, включив состояния icon и
equipped-INNERCLOTHING, либо замените ссылки Sprite и Clothing на существующий
совместимый RSI.

Comment on lines +5 to +10
id: ClothingCloakNTRBlack
name: NTR's black cloak
description: A black cloak with gold trim, made for the best in his field.
components:
- type: Sprite
sprite: _Arcane/Clothing/Neck/Sponsor/CE_black_cloak.rsi
sprite: _Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi

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.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n --glob '*.yml' --glob '*.ftl' --glob '*.cs' \
  'ClothingCloak(CEBlack|CETricolor|NTRBlack|NTRTricolor)' .

Repository: ArcaneSS14/arcane

Length of output: 1062


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Locale files:\n'
rg -n --glob '*.ftl' \
  'ClothingCloak(CEBlack|CETricolor|NTRBlack|NTRTricolor)' Resources/Locale || true

printf '\nPrototype files:\n'
rg -n --glob '*.yml' \
  'ClothingCloak(CEBlack|CETricolor|NTRBlack|NTRTricolor)' Resources/Prototypes Resources/Locale --glob '!Resources/Locale/**/*.ftl' || true

printf '\nDiff/stat around relevant files:\n'
git diff --stat -- Resources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.yml Resources/Locale/en-US/_Arcane/entities/clothing/neck/cloaks.ftl Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml || true

Repository: ArcaneSS14/arcane

Length of output: 1112


Обновите английские ключи локализации.

Старые ClothingCloakCEBlack и ClothingCloakCETricolor больше нет в прототипах, а в Resources/Locale/en-US/_Arcane/entities/clothing/neck/cloaks.ftl ключи остались старые. Для ClothingCloakNTRBlack и ClothingCloakNTRTricolor добавьте/поправьте английские строки.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.yml` around lines
5 - 10, Update the English localization entries in cloaks.ftl to replace the
obsolete ClothingCloakCEBlack and ClothingCloakCETricolor keys with
ClothingCloakNTRBlack and ClothingCloakNTRTricolor, preserving the cloak names
and descriptions from the corresponding prototypes.

Comment on lines +42 to +45
- type: Sprite
sprite: _Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi
- type: Clothing
sprite: _Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi

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.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOpt

for rsi in \
  "_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi" \
  "_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi" \
  "_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi" \
  "_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi"
do
  test -f "Resources/Textures/$rsi/meta.json"
done

Repository: ArcaneSS14/arcane

Length of output: 199


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

echo "Locate candidate RSI files:"
for rsi in \
  "_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi" \
  "_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi" \
  "_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi" \
  "_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi"
do
  printf '%-70s ' "$rsi"
  if [ -f "Resources/Textures/$rsi" ]; then
    echo "exists"
  else
    echo "missing"
  fi
  echo "  meta: $( [ -f "Resources/Textures/$rsi/meta.json" ] && echo exists || echo missing )"
done

echo
echo "Prototype snippets with sprites:"
python3 - <<'PY'
from pathlib import Path
p = Path("Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml")
if p.exists():
    lines = p.read_text(encoding="utf-8").splitlines()
    for i in [40,44,48,52]:
        lo=max(1,i-2); hi=min(len(lines),i+4)
        print(f"\n--- around prototype {i} ---")
        for n in range(lo, hi+1):
            print(f"{n:4}: {lines[n-1]}")
PY

echo
echo "Check for .NET availability:"
command -v dotnet || true

Repository: ArcaneSS14/arcane

Length of output: 1706


Убедитесь, что для новых shoe-прототипов присутствуют сами RSI.

Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/*.meta.json есть для musician_boots и jester_shoes, но файлов _Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi и _Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi нет. Без них Sprite и Clothing компоненты не смогут загрузить спрайты и приведут к ошибкам игровых ресурсов.

Также выполните dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj и проверьте остальные новые RSI-пути.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml` around lines
42 - 45, Добавьте отсутствующие RSI-ресурсы musician_boots и jester_shoes по
путям, указанным в компонентах Sprite и Clothing соответствующих
shoe-прототипов, чтобы они совпадали с существующими .meta.json. Затем запустите
Content.YAMLLinter и исправьте все остальные новые пути к RSI, для которых
отсутствуют соответствующие ресурсы.

Source: Coding guidelines

Comment on lines +47 to +50
- type: entity
parent: ClothingShoesClown
id: ClothingShoesJesters
name: jester's shoes

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.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail
rg -n --glob '*.yml' --glob '*.ftl' '\bClothingShoesJesters?\b' \
  Resources/Prototypes Resources/Locale

Repository: ArcaneSS14/arcane

Length of output: 975


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '--- target prototype ---\n'
sed -n '1,80p' Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml

printf '\n--- base clown shoes prototype ---\n'
sed -n '180,240p' Resources/Prototypes/Entities/Clothing/Shoes/specific.yml

printf '\n--- patron loadout context ---\n'
sed -n '640,680p' Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml

printf '\n--- clown job loadout context ---\n'
sed -n '45,85p' Resources/Prototypes/Loadouts/Jobs/Civilian/clown.yml

printf '\n--- all ClothingShoes* prototype IDs ---\n'
rg -n --glob '*.yml' '^\s*id:\s*ClothingShoes' Resources/Prototypes

Repository: ArcaneSS14/arcane

Length of output: 246


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- target prototype ---'
sed -n '1,80p' Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml

printf '%s\n' ''
printf '%s\n' '--- base clown shoes prototype ---'
sed -n '180,240p' Resources/Prototypes/Entities/Clothing/Shoes/specific.yml

printf '%s\n' ''
printf '%s\n' '--- patron loadout context ---'
sed -n '640,680p' Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml

printf '%s\n' ''
printf '%s\n' '--- clown job loadout context ---'
sed -n '45,85p' Resources/Prototypes/Loadouts/Jobs/Civilian/clown.yml

printf '%s\n' ''
printf '%s\n' '--- all ClothingShoes* prototype IDs ---'
rg -n --glob '*.yml' '^\s*id:\s*ClothingShoes' Resources/Prototypes

Repository: ArcaneSS14/arcane

Length of output: 17040


Исправьте все ссылки на ClothingShoesJesters.

Прототип определяет id: ClothingShoesJesters, но ссылки JesterShoes и ClothingShoesJesters указывают на него со сториного ID ClothingShoesJester. Обновите Resources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.yml:666 и Resources/Prototypes/Loadouts/Jobs/Civilian/clown.yml:65; при желании переименуйте prototype ID в ClothingShoesJester, сохранив консистентность с базовым клоуном.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.yml` around lines
47 - 50, Исправьте ссылки на прототип обуви в записях loadout для JesterShoes и
ClothingShoesJester, чтобы они использовали фактический идентификатор
ClothingShoesJesters, объявленный в прототипе ClothingShoesJesters. Если вместо
этого переименуете ID прототипа в ClothingShoesJester, обновите все ссылки
согласованно и сохраните единый идентификатор.

- type: entity
parent: BaseItem
id: RadioHostMicrophone
name: microphine

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Исправьте имя предмета.

microphine отображается как английское имя предмета. Замените на microphone.

Исправление
-  name: microphine
+  name: microphone
📝 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: microphine
name: microphone
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@Resources/Prototypes/_Arcane/Entities/Objects/Specific/Sponsor/microphone.yml`
at line 4, Correct the item name in the microphone prototype from “microphine”
to “microphone”.

Comment on lines +692 to +706
- type: loadoutGroup
id: LibrarianShoes
name: loadout-group-librarian-shoes
minLimit: 1
maxLimit: 1
loadouts:
- TwilightSparkleBootsPatron

- type: loadoutGroup
id: LibrarianGlasses
name: loadout-group-librarian-glasses
minLimit: 1
maxLimit: 1
loadouts:
- TwilightSparkleGlassesPatron

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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Сделайте patron-группы библиотекаря необязательными.

LibrarianShoes и LibrarianGlasses имеют minLimit: 1, но содержат только лоадауты с ограничением SponsorTier2. Пользователь без этого уровня не может выбрать допустимый вариант для обязательной группы.

Установите minLimit: 0 для обеих групп.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/_Goobstation/Loadouts/loadout_groups.yml` around lines
692 - 706, Update the LibrarianShoes and LibrarianGlasses loadout groups to use
minLimit: 0 instead of minLimit: 1, leaving their maxLimit and loadout entries
unchanged.

Comment on lines 129 to +134
- BartenderJumpsuit
# Arcane-Start
- ServiceWorkerJumpsuit
- ServiceWorkerShoes
- ServiceWorkerBelt
# Arcane-End

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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Оставьте для сервисного работника одну группу формы.

BartenderJumpsuit уже выбирает предмет для слота jumpsuit. Новая ServiceWorkerJumpsuit также выбирает предмет для jumpsuit. Спонсор, который выберет варианты из обеих групп, получит конфликт слота, и один предмет не экипируется.

Добавьте новые patron-лоадауты в существующую группу формы или замените BartenderJumpsuit вместо добавления второй группы.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/Loadouts/role_loadouts.yml` around lines 129 - 134,
Объедините ServiceWorkerJumpsuit с существующей группой выбора формы
BartenderJumpsuit, чтобы для слота jumpsuit оставалась одна группа: добавьте
новый вариант в ту же группу либо замените BartenderJumpsuit, сохранив
ServiceWorkerShoes и ServiceWorkerBelt.

Comment on lines +195 to +200
- Animals
- GroupSpeciesBreathTool
# Goobstation - EE Plasmeme Change.
- LibrarianEnvirohelm
- LibrarianEnvirosuit
- LibrarianEnvirogloves

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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Удалите дублирующиеся группы из новых блоков ролей.

Новые блоки повторно добавляют группы, которые остаются ниже в тех же roleLoadout. Это приводит к повторному применению лоадаут-групп.

  • Resources/Prototypes/Loadouts/role_loadouts.yml#L195-L200: удалите повторные Animals, GroupSpeciesBreathTool и группы enviro библиотекаря.
  • Resources/Prototypes/Loadouts/role_loadouts.yml#L339-L343: удалите повторные Animals и группы enviro клоуна.
  • Resources/Prototypes/Loadouts/role_loadouts.yml#L378-L383: удалите повторные Animals, группы enviro и MimeGloves.
📍 Affects 1 file
  • Resources/Prototypes/Loadouts/role_loadouts.yml#L195-L200 (this comment)
  • Resources/Prototypes/Loadouts/role_loadouts.yml#L339-L343
  • Resources/Prototypes/Loadouts/role_loadouts.yml#L378-L383
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Resources/Prototypes/Loadouts/role_loadouts.yml` around lines 195 - 200,
Удалите дублирующиеся группы из новых блоков roleLoadout в
Resources/Prototypes/Loadouts/role_loadouts.yml: в строках 195-200 уберите
Animals, GroupSpeciesBreathTool и группы enviro библиотекаря; в строках 339-343
— Animals и группы enviro клоуна; в строках 378-383 — Animals, группы enviro и
MimeGloves. Сохраните существующие экземпляры этих групп ниже в соответствующих
roleLoadout.

Comment on lines +14 to +16
{
"name": "icon"
},

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.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rsi='Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi'
test -f "$rsi/meta.json"
jq -e '.states[] | select(.name == "icon")' "$rsi/meta.json" >/dev/null
test -f "$rsi/icon.png"

Repository: ArcaneSS14/arcane

Length of output: 155


Проверка пройденная — добавьте icon.png для состояния icon.

meta.json содержит состояние icon, но sterile.rsi/icon.png отсутствует. Загрузка ресурса и RSI-валидация могут завершиться ошибкой; добавьте файл с точным регистром имени или удалите состояние icon, если иконка не требуется.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/meta.json`
around lines 14 - 16, Ensure the sterile.rsi resource matches its meta.json
definition: add an icon.png asset with the exact lowercase name and required
dimensions for the declared icon state, or remove the icon state from meta.json
if no icon is intended.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants