Спонсорский шмот для сервисного отдела - #159
Conversation
|
RSI Diff Bot; head commit b67a83f merging into 5c04ffa Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi
Resources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi
Resources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi
Resources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi
Resources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi
Resources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi
Resources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi
Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi
Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi
Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi
Resources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi
Resources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi
Resources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi
Resources/Textures/_Arcane/Objects/Sponsor/microphone.rsi
|
Главное изменение
Resources / localization
Prediction / networking
Validation / risk
WalkthroughДобавлены спонсорские предметы одежды и микрофон, их русские локализации, RSI-метаданные, патронные лоадауты и группы ролей. Варианты старшего инженера заменены вариантами NanoTrasen. ChangesСпонсорская экипировка
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-спрайт
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 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
⛔ Files ignored due to path filters (181)
Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/equipped-BELT.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/equipped-EYES.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/equipped-HANDS.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/icon_head.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/equipped-UNDERWEAR.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-right.pngis excluded by!**/*.png
📒 Files selected for processing (76)
Resources/Locale/ru-RU/_Arcane/entities/clothing/belt/belt.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/eyes/glasses.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/hands/gloves.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/head/hats.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/neck/cloaks.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/shoes/shoes.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/underwear/socks.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftlResources/Locale/ru-RU/_Arcane/entities/objects/specific/sponsor/microphone.ftlResources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftlResources/Prototypes/Loadouts/loadout_groups.ymlResources/Prototypes/Loadouts/role_loadouts.ymlResources/Prototypes/_Arcane/Entities/Clothing/Belt/belt.ymlResources/Prototypes/_Arcane/Entities/Clothing/Eyes/glasses.ymlResources/Prototypes/_Arcane/Entities/Clothing/Hands/gloves.ymlResources/Prototypes/_Arcane/Entities/Clothing/Head/hats.ymlResources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.ymlResources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.ymlResources/Prototypes/_Arcane/Entities/Clothing/OuterClothing/specific.ymlResources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.ymlResources/Prototypes/_Arcane/Entities/Clothing/Socks/socks.ymlResources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.ymlResources/Prototypes/_Arcane/Entities/Objects/Specific/Sponsor/microphone.ymlResources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.ymlResources/Prototypes/_Arcane/Loadouts/loadout_groups.ymlResources/Prototypes/_Goobstation/Loadouts/loadout_groups.ymlResources/Prototypes/_Goobstation/Loadouts/role_loadouts.ymlResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/meta.json
|
Зоотехника с боксёром удалили. |
|
@coderabbitai почему упали тесты? |
|
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
doneLength 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/' || trueLength 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}")
PYLength 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' || trueLength of output: 2764
You are interacting with an AI system. |
|
Мердж конфликт |
|
В остальном всё в порядке. Закинул бы PR |
А как такой конфликт вообще убрать? Он просит у меня вернуть CEBlackBeretPatron, что сломает пр |
|
@coderabbitai почему падают тесты? |
|
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
doneLength 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 || trueLength of output: 153650
Ошибки You are interacting with an AI system. |
|
@coderabbitai почему падают тесты? |
|
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
Повторите запрос после восстановления доступа к репозиторию. Нужны статусы PR checks и логи упавших GitHub Actions jobs. You are interacting with an AI system. |
| - MimeEnvirohelm | ||
| - MimeEnvirosuit | ||
| - MimeEnvirogloves | ||
| - MimeGloves |
|
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. |
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (181)
Resources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/equipped-BELT.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/equipped-EYES.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/equipped-HAND.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/equipped-HELMET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/equipped-INNERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/equipped-NECK.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/equipped-OUTERCLOTHING.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/equipped-FEET.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/equipped-SOCKS.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/equipped-UNDERWEAR.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/inhand-right.pngis excluded by!**/*.pngResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/icon.pngis excluded by!**/*.pngResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-left.pngis excluded by!**/*.pngResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/inhand-right.pngis excluded by!**/*.png
📒 Files selected for processing (77)
Resources/Locale/ru-RU/_Arcane/entities/clothing/belt/belt.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/eyes/glasses.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/hands/gloves.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/head/hats.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/innerclothing/uniforms.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/neck/cloaks.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/neck/specific.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/shoes/shoes.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/underwear/socks.ftlResources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftlResources/Locale/ru-RU/_Arcane/entities/objects/specific/sponsor/microphone.ftlResources/Locale/ru-RU/_Arcane/loadouts/loadout-groups.ftlResources/Prototypes/Loadouts/loadout_groups.ymlResources/Prototypes/Loadouts/role_loadouts.ymlResources/Prototypes/_Arcane/Entities/Clothing/Belt/belt.ymlResources/Prototypes/_Arcane/Entities/Clothing/Eyes/glasses.ymlResources/Prototypes/_Arcane/Entities/Clothing/Hands/gloves.ymlResources/Prototypes/_Arcane/Entities/Clothing/Head/hats.ymlResources/Prototypes/_Arcane/Entities/Clothing/Innerclothing/uniforms.ymlResources/Prototypes/_Arcane/Entities/Clothing/Neck/cloaks.ymlResources/Prototypes/_Arcane/Entities/Clothing/OuterClothing/specific.ymlResources/Prototypes/_Arcane/Entities/Clothing/Shoes/shoes.ymlResources/Prototypes/_Arcane/Entities/Clothing/Socks/socks.ymlResources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.ymlResources/Prototypes/_Arcane/Entities/Objects/Specific/Sponsor/microphone.ymlResources/Prototypes/_Arcane/Loadouts/Miscellaneous/patron.ymlResources/Prototypes/_Arcane/Loadouts/loadout_groups.ymlResources/Prototypes/_Goobstation/Loadouts/loadout_groups.ymlResources/Prototypes/_Goobstation/Loadouts/role_loadouts.ymlResources/Textures/_Arcane/Clothing/Belt/Sponsor/service_apron.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Eyes/Sponsor/twilight_sparkle.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Hands/Sponsor/mime_mittens.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/NTR_beret.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/botanist.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/camouflage.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/clown_cilinder.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/cow.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/fish_cook_bandana.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/high_cook_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/inclined_cook_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/jester_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Head/Sponsor/red_cook_hat.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_black_skirt.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/NTR_white_skirt.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/botanist_straps.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/camouflage.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/chief_cook.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cleaner.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/cook.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/dancer.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/feminine_form_empty.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/perfomance_dress.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/radio_host.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/service_skirt.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/sterile.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Innerclothing/Sponsor/twilight_sparkle.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_black_cloak.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Neck/Sponsor/NTR_white_cloak.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Neck/Sponsor/ian_cloak.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cleaner_overall.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cook_apron.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/cow.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/musician_jacket.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/radio_host_jacket.rsi/meta.jsonResources/Textures/_Arcane/Clothing/OuterClothing/Sponsor/service_jacket.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/jester_shoes.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/twilight_sparkle.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Shoes/Sponsor/worker_boots.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Socks/Sponsor/mime_stockings.rsi/meta.jsonResources/Textures/_Arcane/Clothing/Underwear/Sponsor/jester_underwear.rsi/meta.jsonResources/Textures/_Arcane/Objects/Sponsor/microphone.rsi/meta.json
| 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 = Сервисный работник, пояс |
There was a problem hiding this comment.
🎯 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 || trueRepository: 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
| 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 |
There was a problem hiding this comment.
🗄️ 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 -200Repository: 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
fiRepository: 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
fiRepository: 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.
| 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 |
There was a problem hiding this comment.
🗄️ 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 || trueRepository: 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.
| - type: Sprite | ||
| sprite: _Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi | ||
| - type: Clothing | ||
| sprite: _Arcane/Clothing/Shoes/Sponsor/musician_boots.rsi |
There was a problem hiding this comment.
🩺 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"
doneRepository: 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 || trueRepository: 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
| - type: entity | ||
| parent: ClothingShoesClown | ||
| id: ClothingShoesJesters | ||
| name: jester's shoes |
There was a problem hiding this comment.
🗄️ 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/LocaleRepository: 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/PrototypesRepository: 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/PrototypesRepository: 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 |
There was a problem hiding this comment.
🎯 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.
| 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”.
| - 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 |
There was a problem hiding this comment.
🎯 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.
| - BartenderJumpsuit | ||
| # Arcane-Start | ||
| - ServiceWorkerJumpsuit | ||
| - ServiceWorkerShoes | ||
| - ServiceWorkerBelt | ||
| # Arcane-End |
There was a problem hiding this comment.
🎯 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.
| - Animals | ||
| - GroupSpeciesBreathTool | ||
| # Goobstation - EE Plasmeme Change. | ||
| - LibrarianEnvirohelm | ||
| - LibrarianEnvirosuit | ||
| - LibrarianEnvirogloves |
There was a problem hiding this comment.
🎯 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-L343Resources/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.
| { | ||
| "name": "icon" | ||
| }, |
There was a problem hiding this comment.
🗄️ 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.

















































































































Описание PR
Добавил новые спонсорские косметики в лодауты сервиса.
Медиа
Тип PR
Изменения
🆑 seemah, Bulbo44key