Ешо кастомка ксено, гыыыыы - #187
Conversation
Главное изменениеДобавлены новые варианты кастомизации
Для Resources / localization
Validation / riskТесты и runtime-проверка не указаны. Основной риск связан с корректностью имён marking, sprite states и направлений при сборке кастомизации. WalkthroughДобавлены варианты кастомизации HumanoidXeno для хвостов, голов, трахей, кистей и стоп. Добавлены текстурные состояния, marking-записи и русские локализационные строки. Трахеи сделаны необязательными. ChangesКастомизация HumanoidXeno
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 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 |
|
RSI Diff Bot; head commit 30e0047 merging into 02498b1 Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi
|
There was a problem hiding this comment.
Actionable comments posted: 7
🤖 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/Mobs/Customization/Markings/humanoid_xeno.yml`:
- Around line 204-205: Удалите одну из двух пустых строк между прототипом
HumanoidXenoTailBurrower и следующим блоком - type: marking, оставив ровно одну
пустую строку между блоками прототипов.
- Around line 212-217: Исправьте состояние в marking humanoid_xeno, заменив
lord_tail_spike на точное имя lord_tail_spikes, объявленное в
long_tails.rsi/meta.json; остальные состояния оставьте без изменений.
- Around line 823-830: Исправьте значение markingCategory в прототипе
HumanoidXenoLegsBurrowerLeft с LefttFoot на LeftFoot, сохранив остальные поля
marking без изменений.
- Around line 225-228: Update the HumanoidXenoTailOpress marking to reference
the exact RSI gradient state defined by the metadata, replacing lord_tail_grad
with opress_tail_grad in the long_tails.rsi sprite entry.
- Around line 535-540: Update the Defender head marking states to use the
RSI-declared names: change defender_head, defender_teeth, and
defender_head_shine to defer_head, defer_teeth, and defer_head_shine
respectively, while keeping the existing sprite path unchanged.
- Around line 917-933: Update the sprite resource in
HumanoidXenoHandBurrowerRight and HumanoidXenoHandBurrowerLeft to use
claws_arms.rsi instead of short_claws_arms.rsi, while preserving their existing
burrower_claws_r_hand and burrower_claws_l_hand states.
In
`@Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.json`:
- Around line 77-116: Добавьте состояние razor_tail_spike в список состояний
long_tails.rsi/meta.json с directions, соответствующим связанным состояниям
razor_tail и razor_tail_grad, чтобы ссылка HumanoidXenoTailRazor разрешалась
корректно.
🪄 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: c9174a8c-f956-46f7-9e85-6a46f30cfbfb
⛔ Files ignored due to path filters (37)
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/burrower_claws_l_hand.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/burrower_claws_r_hand.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/burrower_claws_l_foot.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/burrower_claws_r_foot.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/burrower_head.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/burrower_head_shine.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/burrower_teeth.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/defer_head.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/defer_head_shine.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/defer_teeth.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/valkyr_head.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/valkyr_head_plates.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/valkyr_head_shine.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/valkyr_teeth.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/warrior_head.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/warrior_head_shine.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/warrior_teeth.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/burrower_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/burrower_tail_grad.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/burrower_tail_spike.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/lord_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/lord_tail_butt.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/lord_tail_spikes.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/opress_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/opress_tail_grad.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/razor_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/razor_tail_grad.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/razor_tail_spike.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/valkyr_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/valkyr_tail_grad.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/defer_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/defer_tail_ball.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/defer_tail_grad.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/warrior_tail.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/warrior_tail_thin.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/warrior_tail_thin_grad.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi/warrior_tubes.pngis excluded by!**/*.png
📒 Files selected for processing (9)
Resources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.ymlResources/Prototypes/_Arcane/Species/humanoid_xeno.ymlResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi/meta.json
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
- GitHub Check: YAML map schema validator
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Diff
⚠️ CI failures not shown inline (2)
GitHub Actions: RSI Validator / Validate RSIs: Ешо кастомка ксено, гыыыыы
Conclusion: failure
##[group]Run python3 RobustToolbox/Schemas/validate_rsis.py Resources/
�[36;1mpython3 RobustToolbox/Schemas/validate_rsis.py Resources/�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_l_hand: sprite sheet of 64x64 is too small, metadata defines 4 frames, but it can only fit 1 at most
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_r_hand: sprite sheet of 64x64 is too small, metadata defines 4 frames, but it can only fit 1 at most
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi: PNG not defined in metadata: razor_tail_spike.png
##[error]Process completed with exit code 1.
GitHub Actions: RSI Validator / 0_Validate RSIs.txt: Ешо кастомка ксено, гыыыыы
Conclusion: failure
##[group]Run python3 RobustToolbox/Schemas/validate_rsis.py Resources/
�[36;1mpython3 RobustToolbox/Schemas/validate_rsis.py Resources/�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_l_hand: sprite sheet of 64x64 is too small, metadata defines 4 frames, but it can only fit 1 at most
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_r_hand: sprite sheet of 64x64 is too small, metadata defines 4 frames, but it can only fit 1 at most
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi: PNG not defined in metadata: razor_tail_spike.png
##[error]Process completed with exit code 1.
🧰 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/Prototypes/_Arcane/Species/humanoid_xeno.ymlResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.jsonResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.ymlResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi/meta.jsonResources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftl
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: Loadss14-naming-conventionsdocumentation for Resources work
Loadss14-ecs-prototypesdocumentation for Resources work
Loadss14-upstream-maintenancedocumentation for Resources work
Loadss14-prototypes-localedocumentation for Resources work
Loadss14-localization-stringsdocumentation for Resources work
Loadss14-sprite-overlays-shadersdocumentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after editsRun
dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOptto validate YAML and resource edits.
Files:
Resources/Prototypes/_Arcane/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml
Resources/**/*.{yml,ftl}
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Follow SS14 prototype locale integration rules and practices
Files:
Resources/Prototypes/_Arcane/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.ymlResources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftl
**/*.{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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml
Resources/Prototypes/**/*.yml
📄 CodeRabbit inference engine (AGENTS.md)
Resources/Prototypes/**/*.yml: Put prototypes under the most specific existing subtree inResources/Prototypes/. If you introduce a new prototype parent tree, put parent prototypes inbase.ymland variants in sibling files.
Keep entity prototype field order astype,abstract,parent,id,categories,name,suffix,description,components. Do not insert blank lines between- type:entries inside acomponents:list. Separate prototype blocks with one blank line.
Prefersuffixfor spawn-menu distinctions instead of changing prototypename.
Files:
Resources/Prototypes/_Arcane/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml
Resources/**/*.json
📄 CodeRabbit inference engine (AGENTS.md)
Keep RSI
meta.jsonordered asversion,license,copyright,size,stateswith 4-space indentation.
Files:
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.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/Mobs/Customization/HumanoidXeno/head.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi/meta.json
Resources/**/*.ftl
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Follow SS14 localization string standards and formatting rules
Files:
Resources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftl
**/*.ftl
📄 CodeRabbit inference engine (AGENTS.md)
Use specific
kebab-caselocalization IDs.
Files:
Resources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftl
Resources/Locale/**/*.ftl
📄 CodeRabbit inference engine (AGENTS.md)
Resources/Locale/**/*.ftl: Add or update FTL entries underResources/Locale/, starting withen-US; add/update matchingru-RUentries when the same feature already maintains Russian locale or the change is Orion-facing and you can do so without guessing translations.
Use specifickebab-caselocalization IDs.
Files:
Resources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.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/markings/humanoid_xeno.ftl
🧠 Learnings (10)
📚 Learning: 2026-05-14T18:47:39.537Z
Learnt from: MataVsn
Repo: ArcaneSS14/arcane-station PR: 5
File: Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml:22-32
Timestamp: 2026-05-14T18:47:39.537Z
Learning: In ArcaneSS14/arcane-station, species prototype YAML files under Resources/Prototypes/_Arcane/Species should use direct hardcoded text strings (not localization keys) for the `pros` and `cons` fields when writing race/species descriptions. During review, do not flag `pros`/`cons` for lacking localization keys in these species prototype files; treat hardcoded strings as the accepted project format.
Applied to files:
Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
📚 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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.ymlResources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftl
📚 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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Species/humanoid_xeno.ymlResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/HumanoidXeno/head.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.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/Mobs/Customization/HumanoidXeno/head.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.jsonResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi/meta.json
🔇 Additional comments (13)
Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml (1)
91-91: LGTM!Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi/meta.json (1)
17-24: LGTM!Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_legs.rsi/meta.json (1)
25-32: LGTM!Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/head.rsi/meta.json (1)
237-288: LGTM!Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tail.rsi/meta.json (1)
77-100: LGTM!Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/tracheas.rsi/meta.json (1)
57-60: LGTM!Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml (6)
192-203: LGTM!
230-265: LGTM!
516-527: LGTM!
542-569: LGTM!
738-746: LGTM!
814-821: LGTM!Resources/Locale/ru-RU/_Arcane/markings/humanoid_xeno.ftl (1)
18-23: 🎯 Functional CorrectnessПроверьте локализационный контракт для новых marking.
В наборе изменений добавлены только записи
ru-RU. Правило требует сначала добавить соответствующие записиen-US. Проверьте наличие всех новых ключей вResources/Locale/en-US/и добавьте отсутствующие записи до merge.Новые ключи имеют форму
marking-HumanoidXeno..., а не literalkebab-case. Подтвердите, что это допустимое исключение для engine-bound marking IDs. Не переименовывайте только FTL-ключи: это может нарушить lookup по prototype ID.As per coding guidelines: новые локализационные записи должны начинаться с
en-USи использовать specifickebab-caseIDs.
As per path instructions: каждый player-facing string должен иметь согласованную локализацию.Also applies to: 43-46, 65-74, 84-85
Sources: Coding guidelines, Path instructions
There was a problem hiding this comment.
♻️ Duplicate comments (2)
Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml (2)
224-227: 🗄️ Data Integrity & Integration | 🟠 MajorИсправьте состояние градиента для
HumanoidXenoTailOpress.
long_tails.rsi/meta.jsonобъявляетopress_tail_grad, но marking используетlord_tail_grad. В результатеHumanoidXenoTailOpressполучает градиент Lord вместо градиента Opress.Замените
lord_tail_gradнаopress_tail_grad.Предлагаемая правка
- sprite: _Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi - state: lord_tail_grad + state: opress_tail_gradПосле исправления запустите YAML-валидатор:
dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOptAs per path instructions:
markingдолжен ссылаться на точное имя состояния из 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/Mobs/Customization/Markings/humanoid_xeno.yml` around lines 224 - 227, Замените состояние спрайта lord_tail_grad на opress_tail_grad в определении HumanoidXenoTailOpress, чтобы marking ссылался на точное состояние из long_tails.rsi/meta.json. После изменения запустите YAML-валидатор Content.YAMLLinter.Source: Path instructions
922-923: 🗄️ Data Integrity & Integration | 🟠 MajorИспользуйте RSI с состояниями Burrower для кистей.
burrower_claws_r_handиburrower_claws_l_handобъявлены вclaws_arms.rsi, но оба marking используютshort_claws_arms.rsi. Эти состояния не будут разрешаться из указанного RSI, поэтому кисти Burrower не отобразятся корректно.Замените оба пути на
claws_arms.rsi.Предлагаемая правка
- - sprite: _Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi + - sprite: _Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi state: burrower_claws_r_hand ... - - sprite: _Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi + - sprite: _Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi state: burrower_claws_l_handAs per path instructions:
spriteиstateв marking должны указывать на один существующий RSI-ресурс.Also applies to: 931-932
🤖 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/Mobs/Customization/Markings/humanoid_xeno.yml` around lines 922 - 923, В обоих marking для состояний burrower_claws_r_hand и burrower_claws_l_hand замените значение sprite с short_claws_arms.rsi на claws_arms.rsi, сохранив соответствующие state без изменений.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.
Duplicate comments:
In
`@Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml`:
- Around line 224-227: Замените состояние спрайта lord_tail_grad на
opress_tail_grad в определении HumanoidXenoTailOpress, чтобы marking ссылался на
точное состояние из long_tails.rsi/meta.json. После изменения запустите
YAML-валидатор Content.YAMLLinter.
- Around line 922-923: В обоих marking для состояний burrower_claws_r_hand и
burrower_claws_l_hand замените значение sprite с short_claws_arms.rsi на
claws_arms.rsi, сохранив соответствующие state без изменений.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 963649f0-9c55-4425-b94c-27be105e0ed9
⛔ Files ignored due to path filters (2)
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi/burrower_claws_l_hand.pngis excluded by!**/*.pngResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi/burrower_claws_r_hand.pngis excluded by!**/*.png
📒 Files selected for processing (2)
Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.ymlResources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.json
📜 Review details
⏰ Context from checks skipped due to timeout. (5)
- GitHub Check: YAML Linter
- GitHub Check: build (ubuntu-latest)
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: YAML map schema validator
⚠️ CI failures not shown inline (2)
GitHub Actions: RSI Validator / Validate RSIs: Ешо кастомка ксено, гыыыыы
Conclusion: failure
##[group]Run python3 RobustToolbox/Schemas/validate_rsis.py Resources/
�[36;1mpython3 RobustToolbox/Schemas/validate_rsis.py Resources/�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi: PNG not defined in metadata: burrower_claws_r_hand.png
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi: PNG not defined in metadata: burrower_claws_l_hand.png
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_l_hand: failed to open state burrower_claws_l_hand.png
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_r_hand: failed to open state burrower_claws_r_hand.png
##[error]Process completed with exit code 1.
GitHub Actions: RSI Validator / 0_Validate RSIs.txt: Ешо кастомка ксено, гыыыыы
Conclusion: failure
##[group]Run python3 RobustToolbox/Schemas/validate_rsis.py Resources/
�[36;1mpython3 RobustToolbox/Schemas/validate_rsis.py Resources/�[0m
shell: /usr/bin/bash -e {0}
##[endgroup]
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi: PNG not defined in metadata: burrower_claws_r_hand.png
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/short_claws_arms.rsi: PNG not defined in metadata: burrower_claws_l_hand.png
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_l_hand: failed to open state burrower_claws_l_hand.png
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/claws_arms.rsi: burrower_claws_r_hand: failed to open state burrower_claws_r_hand.png
##[error]Process completed with exit code 1.
🧰 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/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.jsonResources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml
Resources/**/*.json
📄 CodeRabbit inference engine (AGENTS.md)
Keep RSI
meta.jsonordered asversion,license,copyright,size,stateswith 4-space indentation.
Files:
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.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/Mobs/Customization/HumanoidXeno/long_tails.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: Loadss14-naming-conventionsdocumentation for Resources work
Loadss14-ecs-prototypesdocumentation for Resources work
Loadss14-upstream-maintenancedocumentation for Resources work
Loadss14-prototypes-localedocumentation for Resources work
Loadss14-localization-stringsdocumentation for Resources work
Loadss14-sprite-overlays-shadersdocumentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after editsRun
dotnet run --project Content.YAMLLinter/Content.YAMLLinter.csproj -c DebugOptto validate YAML and resource edits.
Files:
Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.yml
Resources/Prototypes/**/*.yml
📄 CodeRabbit inference engine (AGENTS.md)
Resources/Prototypes/**/*.yml: Put prototypes under the most specific existing subtree inResources/Prototypes/. If you introduce a new prototype parent tree, put parent prototypes inbase.ymland variants in sibling files.
Keep entity prototype field order astype,abstract,parent,id,categories,name,suffix,description,components. Do not insert blank lines between- type:entries inside acomponents:list. Separate prototype blocks with one blank line.
Prefersuffixfor spawn-menu distinctions instead of changing prototypename.
Files:
Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/HumanoidXeno/long_tails.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/Mobs/Customization/HumanoidXeno/long_tails.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.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/Mobs/Customization/Markings/humanoid_xeno.yml
🔇 Additional comments (2)
Resources/Textures/_Arcane/Mobs/Customization/HumanoidXeno/long_tails.rsi/meta.json (1)
78-120: LGTM!Resources/Prototypes/_Arcane/Entities/Mobs/Customization/Markings/humanoid_xeno.yml (1)
189-216: LGTM!Also applies to: 229-265, 515-568, 737-745, 813-830
|
@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="187"
echo "== PR checks =="
gh pr checks "$pr" --repo "$repo" --watch=false || true
echo
echo "== Failed check runs =="
gh api "repos/$repo/commits/$(gh pr view "$pr" --repo "$repo" --json headRefOid --jq .headRefOid)/check-runs?filter=latest&per_page=100" \
--jq '.check_runs[] | select(.conclusion == "failure" or .conclusion == "timed_out" or .conclusion == "cancelled") | [.id, .name, .conclusion, .details_url] | `@tsv`' \
> /tmp/failed-checks.tsv || true
cat /tmp/failed-checks.tsv
while IFS=$'\t' read -r id name conclusion url; do
[ -n "${id:-}" ] || continue
echo
echo "== Logs: $name ($conclusion) =="
gh api "repos/$repo/check-runs/$id" --jq '{name, conclusion, output: {title: .output.title, summary: .output.summary, text: .output.text}}' || true
done < /tmp/failed-checks.tsv
echo
echo "== Failed workflow jobs =="
gh run list --repo "$repo" --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq .headRefName)" --limit 20 \
--json databaseId,conclusion,status,workflowName,headSha \
--jq '.[] | select(.conclusion == "failure") | [.databaseId, .workflowName, .headSha] | `@tsv`' \
> /tmp/failed-runs.tsv || true
cat /tmp/failed-runs.tsv
while IFS=$'\t' read -r run_id workflow sha; do
[ -n "${run_id:-}" ] || continue
echo
echo "== Failed log tail: $workflow ($run_id) =="
gh run view "$run_id" --repo "$repo" --log-failed 2>&1 | tail -n 240 || true
done < /tmp/failed-runs.tsvLength of output: 201628
Основной сбой: Нужно проверить, что в
Их размер должен содержать 4 directional-кадра, потому что в Также ранний запуск валидатора сообщил: Если файл ещё есть, добавьте Ошибки You are interacting with an AI system. |







































Описание PR
Крч мы с Бульбой сходили на морпехов, держите завоз кастомки по мотивам ыы14 спейс сторис маринес корпс.
Правда мы сходили туда гораздо раньше, но этот момент мы упустим...
Медиа
Тип PR
Лицензионное соглашение
Изменения
🆑 seemah