Skip to content

ТРУСЫЫЫЫЫ - #178

Open
bzzzbzzbz wants to merge 3 commits into
ArcaneSS14:masterfrom
bzzzbzzbz:pants
Open

ТРУСЫЫЫЫЫ#178
bzzzbzzbz wants to merge 3 commits into
ArcaneSS14:masterfrom
bzzzbzzbz:pants

Conversation

@bzzzbzzbz

@bzzzbzzbz bzzzbzzbz commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Описание PR

Добавил автомат с нижним бельём и заполнил его соответственно нижним бельём.

Медиа

image image image image image image

Тип PR

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

Лицензионное соглашение

  • Я согласен с лицензионным соглашением Contributor License Agreement, для Arcane SS14 Organization.

Изменения

🆑 seemah

  • add: Добавлен автомат с нижним бельём - нижнемат.

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

RSI Diff Bot; head commit 6e1bfda merging into 3e26599
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi

State Old New Status
equipped-UNDERWEAR Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi

State Old New Status
equipped-UNDERWEAR Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi

State Old New Status
equipped-UNDERWEAR Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi

State Old New Status
equipped-UNDERWEAR Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi

State Old New Status
equipped-UNDERWEAR Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi

State Old New Status
equipped-UNDERWEAR Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi

State Old New Status
equipped-UNDERSHIRT Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi

State Old New Status
equipped-UNDERSHIRT Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi

State Old New Status
equipped-UNDERSHIRT Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi

State Old New Status
equipped-UNDERSHIRT Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi

State Old New Status
equipped-UNDERSHIRT Added
icon Added

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi

State Old New Status
equipped-UNDERSHIRT Added
icon Added

Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi

State Old New Status
broken Added
deny-unshaded Added
normal-unshaded Added
off Added
panel Added

Edit: diff updated after 6e1bfda

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: cf32d91a-5d5c-49d9-83bc-919418a35866

📥 Commits

Reviewing files that changed from the base of the PR and between 6104414 and 6e1bfda.

📒 Files selected for processing (2)
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
📜 Recent review details
⏰ Context from checks skipped due to timeout. (5)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
  • GitHub Check: YAML map schema validator
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
🧰 Additional context used
📓 Path-based instructions (6)
Resources/**/*.{yml,ftl,json}

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Resources/**/*.{yml,ftl,json}: Follow SS14 naming conventions when editing prototype, localization, and resource files
Follow SS14 upstream maintenance practices when editing resource files

Files:

  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
Resources/**/*.json

📄 CodeRabbit inference engine (AGENTS.md)

Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.

Files:

  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json

⚙️ CodeRabbit configuration file

Resources/**/*.json: Review resource JSON files for path correctness and consistency.
For RSI meta.json files, check ordering, state/layout consistency, and whether referenced prototypes or visualizers still match the available states.

Files:

  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
Resources/**/*.yml

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Resources/**/*.yml: Follow SS14 ECS prototype patterns and conventions
Follow SS14 graphics generic visualizer appearance conventions and patterns

Resources/**/*.yml: Load ss14-naming-conventions documentation for Resources work
Load ss14-ecs-prototypes documentation for Resources work
Load ss14-upstream-maintenance documentation for Resources work
Load ss14-prototypes-locale documentation for Resources work
Load ss14-localization-strings documentation for Resources work
Load ss14-sprite-overlays-shaders documentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after edits

Run dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOpt to validate YAML and resource edits.

Files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
Resources/**/*.{yml,ftl}

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Follow SS14 prototype locale integration rules and practices

Files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
**/*.{cs,xaml,yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

If the task adds tests or you need to choose the right test layer, load skill ss14-tests-authoring.

Files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
Resources/Prototypes/**/*.yml

📄 CodeRabbit inference engine (AGENTS.md)

Resources/Prototypes/**/*.yml: Put prototypes under the most specific existing subtree in Resources/Prototypes/. If you introduce a new prototype parent tree, put parent prototypes in base.yml and variants in sibling files.
Keep entity prototype field order as type, abstract, parent, id, categories, name, suffix, description, components. Do not insert blank lines between - type: entries inside a components: list. Separate prototype blocks with one blank line.
Prefer suffix for spawn-menu distinctions instead of changing prototype name.

Files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml

⚙️ CodeRabbit configuration file

Resources/Prototypes/**/*.yml: Review SS14 prototypes carefully:

  • Use the narrowest existing subtree and avoid duplicating nearby prototype files or parent trees.
  • Keep entity field order as: type, abstract, parent, id, categories, name, suffix, description, components.
  • Prefer base.yml for parent trees and sibling files for variants.
  • Do not add blank lines inside components lists.
  • Call out broken inheritance, risky prototype ID changes, missing paired locale updates, and Appearance / GenericVisualizer mismatches.

Files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
🧠 Learnings (9)
📚 Learning: 2026-06-19T22:21:36.179Z
Learnt from: MataVsn
Repo: ArcaneSS14/arcane-station PR: 69
File: Resources/Textures/_Arcane/Mobs/Silicon/Medical/k4tmed.rsi/meta.json:14-16
Timestamp: 2026-06-19T22:21:36.179Z
Learning: When reviewing RSI texture meta.json files under Resources/Textures/_Arcane (including borg chassis variants like k4t*.rsi), do not flag a difference in `directions` for rest-state entries. If the state name is a rest state (e.g., `*-rest`) for these borg chassis sprites, `directions: 1` is an intentional art choice and should not be treated as a mismatch against other variants that use `directions: 4`. Only raise an issue if the `directions` value is invalid for the file/spec (e.g., not the expected numeric options) or if it occurs on non-rest states.

Applied to files:

  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
📚 Learning: 2026-07-26T02:48:44.443Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane PR: 136
File: Resources/Textures/Clothing/Back/Duffels/captain.rsi/meta.json:4-4
Timestamp: 2026-07-26T02:48:44.443Z
Learning: In `Resources/Textures/**/**/*.rsi/meta.json`, if the PR replaces sprite assets with sources that do not include the previous credit holders (e.g., the new sprites come from another upstream/source), do not keep attribution/author fields for contributors who made no contribution to the current assets. Update the attribution to reflect the actual authors/sources of the sprites currently referenced by the .rsi.

Applied to files:

  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
📚 Learning: 2026-06-29T05:34:31.137Z
Learnt from: Alazell
Repo: ArcaneSS14/arcane-station PR: 99
File: Resources/Prototypes/Entities/Clothing/Belt/belts.yml:973-974
Timestamp: 2026-06-29T05:34:31.137Z
Learning: В SS14 YAML-прототипах для компонента `Storage` поле `grid` задаёт **включительные** координаты прямоугольника. При подсчёте вместимости учитывайте оффсет-инклюзивность: прямоугольник `x1,y1,x2,y2` означает размеры `width = (x2 - x1 + 1)` и `height = (y2 - y1 + 1)`, а число ячеек `width * height`. Например, `0,0,0,0` = 1 ячейка, а `0,0,6,2` = (6-0+1)*(2-0+1)=7*3=21. При ревью файлов наподобие `Resources/Prototypes/Entities/Clothing/Belt/belts.yml` не интерпретируйте `x2/y2` как эксклюзивные (чтобы не ошибиться на 1 в ширине/высоте).

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-29T08:12:37.068Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane PR: 153
File: Resources/Prototypes/_Orion/Entities/Objects/Tools/energy_dome.yml:137-137
Timestamp: 2026-07-29T08:12:37.068Z
Learning: In ArcaneSS14 prototype YAMLs, the YAML field that disables synchronization for `Content.Shared.Power.Components.BatteryComponent` is spelled exactly `netsync` (all lowercase), not `netSync`. For prototypes derived from `PowerNetworkBattery` (including `BaseAPC`, `CoreSubstation`, `BaseSMES`, `TeslaCoil`), set `netsync: false`; otherwise `Content.Server.Power.EntitySystems.BatterySystem.OnStartup` can throw `DebugAssertException` for a predicted battery connected to a power net. For `Resources/Prototypes/_Orion/Entities/Objects/Tools/energy_dome.yml`, ensure `EnergyDomeWiredTest` uses `netsync: false`.

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-05T18:40:45.199Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane-station PR: 101
File: Resources/Prototypes/_Orion/Entities/Objects/Specific/Medical/medkits.yml:0-0
Timestamp: 2026-07-05T18:40:45.199Z
Learning: For ArcaneSS14/arcane-station custom `_Arcane`/`_Orion` entity prototypes under `Resources/Prototypes/_Arcane/` or `Resources/Prototypes/_Orion/`, embed `name` and `description` directly in the prototype `.yml` as the `en-US` fallback text (do not add a separate `en-US` locale override). Then localize only `ru-RU` by adding `ent-<EntityId>` and `ent-<EntityId>.desc` keys in `Resources/Locale/ru-RU/ss14-ru/prototypes/_arcane/...` or `.../_orion/...`, mirroring the entity `.yml` path. By contrast, vanilla-derived entities (e.g., a base `Medkit`) should omit `name`/`description` from the `.yml` entirely and instead provide both `en-US` and `ru-RU` localized `prototypes/...` entries in `Resources/Locale/{en-US,ru-RU}/ss14-ru/prototypes/...`.

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-05T23:32:09.578Z
Learnt from: Alazell
Repo: ArcaneSS14/arcane-old PR: 117
File: Resources/Prototypes/_Arcane/Entities/Objects/Devices/pinpointer.yml:23-28
Timestamp: 2026-07-05T23:32:09.578Z
Learning: When editing ArcaneSS14/arcane-old prototype YAML related to pinpointers and tags:

- Pinpointer auto-locate vs manual retarget: `PinpointerComponent.Whitelist` controls auto-locate. If `Whitelist` is `null`, the pinpointer `Update` auto-locate logic returns early and will not search for a target; leaving it unset is safe from unintended auto-targeting. Manual retargeting during `OnAfterInteract` is governed by `RetargetingWhitelist`/`RetargetingBlacklist` (not `Whitelist`).
- Emag behavior: in `SharedPinpointerSystem.OnEmagged`, if `canRetarget: true` then `RetargetingWhitelist` is set to `null` (removing retarget restrictions, effectively allowing any retarget target); set `canEmag: false` to prevent emagging if needed.
- Tag prototype registration: any new `Tag` prototype IDs referenced in YAML (e.g., entities with `type: Tag` or `EntityWhitelist.tags`) must have a corresponding prototype declared as `- type: Tag` (commonly in `Resources/Prototypes/_Arcane/tags.yml` or an equivalent...

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-06T05:08:05.731Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane-old PR: 101
File: Resources/Prototypes/_Orion/Entities/Objects/Specific/Medical/medkits.yml:0-0
Timestamp: 2026-07-06T05:08:05.731Z
Learning: When reviewing ArcaneSS14 “_Arcane” prototype changes (especially entity id renames/swaps made via # Arcane-Edit in vanilla-mirrored YAML files), ensure locale/localization handling matches these rules:
1) If a renamed/swapped entity id occurs via a vanilla-mirrored YAML file but the entity is treated as “_Arcane”, add the new id’s localized strings under the corresponding “_Arcane” locale path (e.g., Resources/Locale/<lang>/ss14-ru/prototypes/_arcane/...). Treat this as an explicit exception to the YAML living outside the _Arcane folder.
2) If the old vanilla id is released and then reused by a new “_Arcane” entity, do not create duplicate locale entries for that id under _Arcane; the pre-existing vanilla-mirrored locale entries already apply.
3) For “_Arcane” entity .ftl files, do not reference a parent/base prototype’s locale key (e.g., a base description key) unless that base prototype is defined within the same mirrored YAML path. If the base is abstract or defined elsewhere (e.g....

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-07T17:55:50.395Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane-old PR: 101
File: Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs:192-194
Timestamp: 2026-07-07T17:55:50.395Z
Learning: When reviewing ArcaneSS14/arcane-old changes related to `MobState` thresholds/visuals/actions, treat the `Critical` enum value as requiring explicit mappings (it no longer implicitly behaves as an alias of `SoftCritical`). If any YAML prototype `thresholds:` (for `MobThresholdsComponent.Thresholds`) uses the bare `Critical` key (e.g., `MobThresholdsComponent.Thresholds: { Critical: ... }` for entities like `MobMouseCancer`), ensure the prototype (or referenced config) provides corresponding explicit `StateAlertDict` entries and any required `MobStateActions.actions` and `DamageStateVisuals.states` mappings for `Critical`. Otherwise, review should expect failures because the default `StateAlertDict` in `MobThresholdsComponent.cs` typically maps only `Alive`, `SoftCritical`, `HardCritical`, and `Dead`—not `Critical`.

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-28T15:44:38.498Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane PR: 152
File: Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml:69-72
Timestamp: 2026-07-28T15:44:38.498Z
Learning: В ArcaneSS14/arcane не выполняйте форматирующие перестановки полей (в т.ч. изменение порядка полей) в upstream-файлах: делайте это только если правка добавляет Arcane-специфичную сущность или напрямую требуется для функциональности. Иначе сохраняйте upstream-порядок полей, даже если он противоречит локальным рекомендациям, чтобы не создавать лишние diff и конфликты при upstream-синхронизации. Исключение: допустимо переупорядочивание/форматирование в `Resources/Prototypes/_Arcane` (и только там).

Applied to files:

  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
🔇 Additional comments (2)
Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml (1)

53-53: Повторно исправьте пути к RSI.

Все шесть прототипов используют _Arcane/Clothing/Undershirt/undershirt/..., но добавленные RSI находятся в _Arcane/Clothing/Underwear/undershirt/.... Из-за этого спрайты ClothingBraDriada, ClothingBraEroticPurple, ClothingBraMedusa, ClothingBraLeafs, ClothingBraPinkFancy и ClothingBraRed не загрузятся.

Also applies to: 62-62, 71-71, 80-80, 89-89, 98-98

Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json (1)

4-4: LGTM!

Also applies to: 16-117, 123-126


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

  • Добавлены 6 комплектов нижнего белья и бюстгальтеров: Driada, EroticPurple, Medusa, Leafs, PinkFancy, Red.
  • Добавлен торговый автомат VendingMachineUnderwear с инвентарём UnderMateInventory.
  • В ассортимент включены 186 предметов. Количество каждого предмета — 3.

Resources / localization

  • Добавлены прототипы предметов и торгового автомата.
  • Добавлены RSI-метаданные для 12 комплектов текстур и текстуры автомата pantymate.
  • Добавлены русские локализации предметов и автомата.
  • Breaking ID и перемещения файлов не заявлены.

Validation / risk

  • Тесты и runtime-проверка не указаны.
  • Ранее RSI Validator выявлял ошибки в pantymate.rsi/meta.json: отсутствовало поле copyright, а значения delays имели неверный формат. Поздняя проверка сообщала только об отсутствии copyright.
  • Требуется подтвердить успешную валидацию pantymate.rsi/meta.json.
  • Требуется проверить загрузку прототипов, открытие автомата, ассортимент и отображение всех состояний RSI.
  • Сетевые, prediction и engine-side изменения отсутствуют.

Walkthrough

Добавлены шесть прототипов нижнего белья и шесть прототипов бюстгальтеров с локализацией и текстурами. Добавлены VendingMachineUnderwear, инвентарь на 186 позиций и ресурсы автомата.

Changes

Контент нижнего белья и торгового автомата

Layer / File(s) Summary
Прототипы и ресурсы одежды
Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/*, Resources/Textures/_Arcane/Clothing/Underwear/*
Добавлены прототипы шести вариантов нижнего белья и шести бюстгальтеров. Для предметов указаны описания и отдельные состояния спрайтов.
Локализация одежды
Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/*
Добавлены русские названия и описания новых предметов одежды.
Торговый автомат и ассортимент
Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml, Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml, Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl, Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
Добавлены UnderMateInventory на 186 позиций и VendingMachineUnderwear с ценами, подсветкой, голосовыми сообщениями, поддержкой дронов и состояниями текстуры автомата.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant VendingMachineUnderwear
  participant UnderMateInventory
  participant ClothingPrototypes
  VendingMachineUnderwear->>UnderMateInventory: Загружает ассортимент
  UnderMateInventory->>ClothingPrototypes: Разрешает прототип выбранного предмета
  VendingMachineUnderwear->>ClothingPrototypes: Выдаёт предмет
Loading

Possibly related PRs

  • ArcaneSS14/arcane#5: Добавляет базовую инфраструктуру ClothingUnderwearBase и связанную инфраструктуру торговых автоматов.
  • ArcaneSS14/arcane#159: Добавляет прототипы sponsor clothing и локализацию в той же категории одежды.

Suggested reviewers: puroslavking, clopiks

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Название связано с добавлением нижнего белья, но не указывает на торговый автомат или новые предметы.
Description check ✅ Passed Описание прямо сообщает о добавлении автомата с нижним бельём и соответствует изменениям в прототипах, инвентаре и локализации.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

❤️ Share

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

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 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/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml`:
- Around line 46-98: Обновите значения sprite в компонентах Sprite прототипов
ClothingBraDriada, ClothingBraEroticPurple, ClothingBraMedusa, ClothingBraLeafs,
ClothingBraPinkFancy и ClothingBraRed: замените сегмент пути
_Arcane/Clothing/Undershirt на _Arcane/Clothing/Underwear/undershirt, сохранив
соответствующие имена RSI-файлов.

In
`@Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json`:
- Around line 15-123: Update the delays entries for the normal-unshaded and
deny-unshaded animations to use per-direction arrays instead of numeric values,
wrapping each 0.2 delay in an array with the direction count matching its
sprite.
- Line 4: Rename the metadata key “copyirght” to the required “copyright” key in
the vending machine resource metadata, preserving its existing value.
🪄 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: 494e2c13-43ec-482a-9102-5999475ff975

📥 Commits

Reviewing files that changed from the base of the PR and between 3e26599 and 6104414.

⛔ Files ignored due to path filters (29)
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/equipped-UNDERWEAR.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/equipped-UNDERSHIRT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/equipped-UNDERSHIRT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/equipped-UNDERSHIRT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/equipped-UNDERSHIRT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/equipped-UNDERSHIRT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/equipped-UNDERSHIRT.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/broken.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/deny-unshaded.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/normal-unshaded.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/off.png is excluded by !**/*.png
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/panel.png is excluded by !**/*.png
📒 Files selected for processing (20)
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
📜 Review details
⏰ Context from checks skipped due to timeout. (5)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
  • GitHub Check: YAML map schema validator
  • GitHub Check: YAML Linter
  • GitHub Check: build (ubuntu-latest)
🧰 Additional context used
📓 Path-based instructions (9)
Resources/**/*.{yml,ftl,json}

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Resources/**/*.{yml,ftl,json}: Follow SS14 naming conventions when editing prototype, localization, and resource files
Follow SS14 upstream maintenance practices when editing resource files

Files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json
  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
Resources/**/*.ftl

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Follow SS14 localization string standards and formatting rules

Files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
Resources/**/*.{yml,ftl}

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Follow SS14 prototype locale integration rules and practices

Files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
**/*.ftl

📄 CodeRabbit inference engine (AGENTS.md)

Use specific kebab-case localization IDs.

Files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
Resources/Locale/**/*.ftl

📄 CodeRabbit inference engine (AGENTS.md)

Resources/Locale/**/*.ftl: Add or update FTL entries under Resources/Locale/, starting with en-US; add/update matching ru-RU entries when the same feature already maintains Russian locale or the change is Orion-facing and you can do so without guessing translations.
Use specific kebab-case localization IDs.

Files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl

⚙️ CodeRabbit configuration file

Resources/Locale/**/*.ftl: Treat localization as mandatory:

  • Every player-facing string should be localized.
  • Prefer specific kebab-case keys.
  • Flag raw strings in code or gameplay/resource changes that are missing locale updates.
  • Check consistency when prototype names, descriptions, markings, or UI text changed.

Files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
Resources/**/*.json

📄 CodeRabbit inference engine (AGENTS.md)

Keep RSI meta.json ordered as version, license, copyright, size, states with 4-space indentation.

Files:

  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json

⚙️ CodeRabbit configuration file

Resources/**/*.json: Review resource JSON files for path correctness and consistency.
For RSI meta.json files, check ordering, state/layout consistency, and whether referenced prototypes or visualizers still match the available states.

Files:

  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json
Resources/**/*.yml

📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)

Resources/**/*.yml: Follow SS14 ECS prototype patterns and conventions
Follow SS14 graphics generic visualizer appearance conventions and patterns

Resources/**/*.yml: Load ss14-naming-conventions documentation for Resources work
Load ss14-ecs-prototypes documentation for Resources work
Load ss14-upstream-maintenance documentation for Resources work
Load ss14-prototypes-locale documentation for Resources work
Load ss14-localization-strings documentation for Resources work
Load ss14-sprite-overlays-shaders documentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after edits

Run dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOpt to validate YAML and resource edits.

Files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
**/*.{cs,xaml,yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

If the task adds tests or you need to choose the right test layer, load skill ss14-tests-authoring.

Files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
Resources/Prototypes/**/*.yml

📄 CodeRabbit inference engine (AGENTS.md)

Resources/Prototypes/**/*.yml: Put prototypes under the most specific existing subtree in Resources/Prototypes/. If you introduce a new prototype parent tree, put parent prototypes in base.yml and variants in sibling files.
Keep entity prototype field order as type, abstract, parent, id, categories, name, suffix, description, components. Do not insert blank lines between - type: entries inside a components: list. Separate prototype blocks with one blank line.
Prefer suffix for spawn-menu distinctions instead of changing prototype name.

Files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml

⚙️ CodeRabbit configuration file

Resources/Prototypes/**/*.yml: Review SS14 prototypes carefully:

  • Use the narrowest existing subtree and avoid duplicating nearby prototype files or parent trees.
  • Keep entity field order as: type, abstract, parent, id, categories, name, suffix, description, components.
  • Prefer base.yml for parent trees and sibling files for variants.
  • Do not add blank lines inside components lists.
  • Call out broken inheritance, risky prototype ID changes, missing paired locale updates, and Appearance / GenericVisualizer mismatches.

Files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
🧠 Learnings (9)
📚 Learning: 2026-07-06T05:08:05.731Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane-old PR: 101
File: Resources/Prototypes/_Orion/Entities/Objects/Specific/Medical/medkits.yml:0-0
Timestamp: 2026-07-06T05:08:05.731Z
Learning: When reviewing ArcaneSS14 “_Arcane” prototype changes (especially entity id renames/swaps made via # Arcane-Edit in vanilla-mirrored YAML files), ensure locale/localization handling matches these rules:
1) If a renamed/swapped entity id occurs via a vanilla-mirrored YAML file but the entity is treated as “_Arcane”, add the new id’s localized strings under the corresponding “_Arcane” locale path (e.g., Resources/Locale/<lang>/ss14-ru/prototypes/_arcane/...). Treat this as an explicit exception to the YAML living outside the _Arcane folder.
2) If the old vanilla id is released and then reused by a new “_Arcane” entity, do not create duplicate locale entries for that id under _Arcane; the pre-existing vanilla-mirrored locale entries already apply.
3) For “_Arcane” entity .ftl files, do not reference a parent/base prototype’s locale key (e.g., a base description key) unless that base prototype is defined within the same mirrored YAML path. If the base is abstract or defined elsewhere (e.g....

Applied to files:

  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl
  • Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl
  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/underwear.ftl
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-06-19T22:21:36.179Z
Learnt from: MataVsn
Repo: ArcaneSS14/arcane-station PR: 69
File: Resources/Textures/_Arcane/Mobs/Silicon/Medical/k4tmed.rsi/meta.json:14-16
Timestamp: 2026-06-19T22:21:36.179Z
Learning: When reviewing RSI texture meta.json files under Resources/Textures/_Arcane (including borg chassis variants like k4t*.rsi), do not flag a difference in `directions` for rest-state entries. If the state name is a rest state (e.g., `*-rest`) for these borg chassis sprites, `directions: 1` is an intentional art choice and should not be treated as a mismatch against other variants that use `directions: 4`. Only raise an issue if the `directions` value is invalid for the file/spec (e.g., not the expected numeric options) or if it occurs on non-rest states.

Applied to files:

  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json
📚 Learning: 2026-07-26T02:48:44.443Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane PR: 136
File: Resources/Textures/Clothing/Back/Duffels/captain.rsi/meta.json:4-4
Timestamp: 2026-07-26T02:48:44.443Z
Learning: In `Resources/Textures/**/**/*.rsi/meta.json`, if the PR replaces sprite assets with sources that do not include the previous credit holders (e.g., the new sprites come from another upstream/source), do not keep attribution/author fields for contributors who made no contribution to the current assets. Update the attribution to reflect the actual authors/sources of the sprites currently referenced by the .rsi.

Applied to files:

  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json
  • Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json
  • Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json
📚 Learning: 2026-06-29T05:34:31.137Z
Learnt from: Alazell
Repo: ArcaneSS14/arcane-station PR: 99
File: Resources/Prototypes/Entities/Clothing/Belt/belts.yml:973-974
Timestamp: 2026-06-29T05:34:31.137Z
Learning: В SS14 YAML-прототипах для компонента `Storage` поле `grid` задаёт **включительные** координаты прямоугольника. При подсчёте вместимости учитывайте оффсет-инклюзивность: прямоугольник `x1,y1,x2,y2` означает размеры `width = (x2 - x1 + 1)` и `height = (y2 - y1 + 1)`, а число ячеек `width * height`. Например, `0,0,0,0` = 1 ячейка, а `0,0,6,2` = (6-0+1)*(2-0+1)=7*3=21. При ревью файлов наподобие `Resources/Prototypes/Entities/Clothing/Belt/belts.yml` не интерпретируйте `x2/y2` как эксклюзивные (чтобы не ошибиться на 1 в ширине/высоте).

Applied to files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-29T08:12:37.068Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane PR: 153
File: Resources/Prototypes/_Orion/Entities/Objects/Tools/energy_dome.yml:137-137
Timestamp: 2026-07-29T08:12:37.068Z
Learning: In ArcaneSS14 prototype YAMLs, the YAML field that disables synchronization for `Content.Shared.Power.Components.BatteryComponent` is spelled exactly `netsync` (all lowercase), not `netSync`. For prototypes derived from `PowerNetworkBattery` (including `BaseAPC`, `CoreSubstation`, `BaseSMES`, `TeslaCoil`), set `netsync: false`; otherwise `Content.Server.Power.EntitySystems.BatterySystem.OnStartup` can throw `DebugAssertException` for a predicted battery connected to a power net. For `Resources/Prototypes/_Orion/Entities/Objects/Tools/energy_dome.yml`, ensure `EnergyDomeWiredTest` uses `netsync: false`.

Applied to files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-05T18:40:45.199Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane-station PR: 101
File: Resources/Prototypes/_Orion/Entities/Objects/Specific/Medical/medkits.yml:0-0
Timestamp: 2026-07-05T18:40:45.199Z
Learning: For ArcaneSS14/arcane-station custom `_Arcane`/`_Orion` entity prototypes under `Resources/Prototypes/_Arcane/` or `Resources/Prototypes/_Orion/`, embed `name` and `description` directly in the prototype `.yml` as the `en-US` fallback text (do not add a separate `en-US` locale override). Then localize only `ru-RU` by adding `ent-<EntityId>` and `ent-<EntityId>.desc` keys in `Resources/Locale/ru-RU/ss14-ru/prototypes/_arcane/...` or `.../_orion/...`, mirroring the entity `.yml` path. By contrast, vanilla-derived entities (e.g., a base `Medkit`) should omit `name`/`description` from the `.yml` entirely and instead provide both `en-US` and `ru-RU` localized `prototypes/...` entries in `Resources/Locale/{en-US,ru-RU}/ss14-ru/prototypes/...`.

Applied to files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-05T23:32:09.578Z
Learnt from: Alazell
Repo: ArcaneSS14/arcane-old PR: 117
File: Resources/Prototypes/_Arcane/Entities/Objects/Devices/pinpointer.yml:23-28
Timestamp: 2026-07-05T23:32:09.578Z
Learning: When editing ArcaneSS14/arcane-old prototype YAML related to pinpointers and tags:

- Pinpointer auto-locate vs manual retarget: `PinpointerComponent.Whitelist` controls auto-locate. If `Whitelist` is `null`, the pinpointer `Update` auto-locate logic returns early and will not search for a target; leaving it unset is safe from unintended auto-targeting. Manual retargeting during `OnAfterInteract` is governed by `RetargetingWhitelist`/`RetargetingBlacklist` (not `Whitelist`).
- Emag behavior: in `SharedPinpointerSystem.OnEmagged`, if `canRetarget: true` then `RetargetingWhitelist` is set to `null` (removing retarget restrictions, effectively allowing any retarget target); set `canEmag: false` to prevent emagging if needed.
- Tag prototype registration: any new `Tag` prototype IDs referenced in YAML (e.g., entities with `type: Tag` or `EntityWhitelist.tags`) must have a corresponding prototype declared as `- type: Tag` (commonly in `Resources/Prototypes/_Arcane/tags.yml` or an equivalent...

Applied to files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-07T17:55:50.395Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane-old PR: 101
File: Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs:192-194
Timestamp: 2026-07-07T17:55:50.395Z
Learning: When reviewing ArcaneSS14/arcane-old changes related to `MobState` thresholds/visuals/actions, treat the `Critical` enum value as requiring explicit mappings (it no longer implicitly behaves as an alias of `SoftCritical`). If any YAML prototype `thresholds:` (for `MobThresholdsComponent.Thresholds`) uses the bare `Critical` key (e.g., `MobThresholdsComponent.Thresholds: { Critical: ... }` for entities like `MobMouseCancer`), ensure the prototype (or referenced config) provides corresponding explicit `StateAlertDict` entries and any required `MobStateActions.actions` and `DamageStateVisuals.states` mappings for `Critical`. Otherwise, review should expect failures because the default `StateAlertDict` in `MobThresholdsComponent.cs` typically maps only `Alive`, `SoftCritical`, `HardCritical`, and `Dead`—not `Critical`.

Applied to files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
📚 Learning: 2026-07-28T15:44:38.498Z
Learnt from: UmbiMax
Repo: ArcaneSS14/arcane PR: 152
File: Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml:69-72
Timestamp: 2026-07-28T15:44:38.498Z
Learning: В ArcaneSS14/arcane не выполняйте форматирующие перестановки полей (в т.ч. изменение порядка полей) в upstream-файлах: делайте это только если правка добавляет Arcane-специфичную сущность или напрямую требуется для функциональности. Иначе сохраняйте upstream-порядок полей, даже если он противоречит локальным рекомендациям, чтобы не создавать лишние diff и конфликты при upstream-синхронизации. Исключение: допустимо переупорядочивание/форматирование в `Resources/Prototypes/_Arcane` (и только там).

Applied to files:

  • Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml
  • Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml
  • Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml
🪛 GitHub Actions: RSI Validator / 0_Validate RSIs.txt
Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json

[error] 1-1: RSI metadata validation failed: required property 'copyright' is missing. Command: python3 RobustToolbox/Schemas/validate_rsis.py Resources/


[error] 1-1: RSI metadata validation failed: values in states[1].delays[0..99] are numbers (0.2) but must be arrays.


[error] 1-1: RSI metadata validation failed: values in states[2].delays[0..1] are numbers (0.2) but must be arrays.

🪛 GitHub Actions: RSI Validator / Validate RSIs
Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json

[error] 1-1: RSI validation failed when running 'python3 RobustToolbox/Schemas/validate_rsis.py Resources/': required property 'copyright' is missing.


[error] 1-1: RSI validation failed: $.states[1].delays entries 0–99 contain numeric value 0.2, but each entry must be an array.


[error] 1-1: RSI validation failed: $.states[2].delays entries 0–1 contain numeric value 0.2, but each entry must be an array.

🔇 Additional comments (18)
Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/underwear.yml (1)

74-126: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/driada.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/erotic_purple.rsi/meta.json (1)

1-18: LGTM!

Resources/Locale/ru-RU/_Arcane/entities/clothing/underwear/undershirt.ftl (1)

3-14: LGTM!

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

3-14: LGTM!

Resources/Prototypes/_Arcane/Catalog/VendingMachines/Inventories/undermate.yml (1)

1-187: LGTM!

Resources/Locale/ru-RU/_Arcane/entities/machines/vending_machines.ftl (1)

3-4: LGTM!

Resources/Prototypes/_Arcane/Entities/Structures/Machines/vending_machines.yml (1)

60-97: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/leafs.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/medusa.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/pink_fancy.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/Underwear/red.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/driada.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/erotic_purple.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/leafs.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/medusa.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/pink_fancy.rsi/meta.json (1)

1-18: LGTM!

Resources/Textures/_Arcane/Clothing/Underwear/undershirt/red.rsi/meta.json (1)

1-18: LGTM!

Comment thread Resources/Prototypes/_Arcane/Entities/Clothing/Underwear/undershirt.yml Outdated
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="178"

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

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

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

Length of output: 5193


🏁 Script executed:

#!/bin/bash
set -euo pipefail

gh run view 30961351402 \
  --repo ArcaneSS14/arcane \
  --log-failed

Length of output: 21122


@bzzzbzzbz Падает RSI Validator, не игровые тесты.

Файл: Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json.

Причины:

  1. Нет обязательного поля copyright.
  2. В states[1].delays 100 значений записаны как число 0.2. Схема RSI требует массив для каждого элемента.
  3. В states[2].delays[0] и states[2].delays[1] та же ошибка.

Нужно добавить copyright и заменить значения вида:

0.2

на массивы вида:

[0.2]

Остальные CI-проверки в момент проверки ещё выполнялись.

You are interacting with an AI system.

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

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

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="178"

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

echo
echo "== Recent failed runs =="
gh run list --repo "$repo" \
  --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq '.headRefName')" \
  --status failure --limit 5 \
  --json databaseId,displayTitle,name,workflowName,headSha,url

echo
echo "== Failed-job logs from the newest failed run =="
run_id="$(gh run list --repo "$repo" \
  --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq '.headRefName')" \
  --status failure --limit 1 --json databaseId --jq '.[0].databaseId // empty')"

if [ -n "$run_id" ]; then
  gh run view "$run_id" --repo "$repo" --log-failed
else
  echo "No failed workflow run found."
fi

Length of output: 3271


@bzzzbzzbz Сейчас падает только Validate RSIs.

Причина: в Resources/Textures/_Arcane/Structures/Machines/VendingMachines/pantymate.rsi/meta.json отсутствует обязательное поле copyright:

'copyright' is a required property

Добавьте поле с указанием источника или автора спрайта. Ошибки с delays, которые были раньше, в текущем журнале больше не указаны.

Build & Test Debug уже проходит. Несколько других проверок ещё имеют статус pending.

🐇⚠️

You are interacting with an AI system.

@ReWAFFlution

Copy link
Copy Markdown
Contributor

Валидатор починить
image

@ReWAFFlution

Copy link
Copy Markdown
Contributor

Ещё просьба есть чтобы в лодауте трусы были обязательным предметом. Если персонаж женского пола - бюсгальтер тоже.

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

Ещё просьба есть чтобы в лодауте трусы были обязательным предметом. Если персонаж женского пола - бюсгальтер тоже.

ну тут хезе, будто бы лишнее. лично меня раздражало это, как ксенойоба

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants