[Feature] Admeme extension#128
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📜 Recent review details⏰ Context from checks skipped due to timeout. (6)
🧰 Additional context used📓 Path-based instructions (5)Resources/**/*.{yml,ftl,json}📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Files:
Resources/**/*.yml📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Files:
Resources/**/*.{yml,ftl}📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Files:
**/*.{cs,xaml,yml,yaml}📄 CodeRabbit inference engine (AGENTS.md)
Files:
Resources/Prototypes/**/*.yml📄 CodeRabbit inference engine (AGENTS.md)
Files:
⚙️ CodeRabbit configuration file
Files:
🧠 Learnings (2)📚 Learning: 2026-06-29T05:34:31.137ZApplied to files:
📚 Learning: 2026-07-07T17:55:50.395ZApplied to files:
🔇 Additional comments (4)
Главное изменение
Resources / localization
Validation / risk
WalkthroughОбновлены инвентарь и стартовая экипировка ChangesЭкипировка призрака и инструменты
Estimated code review effort: 3 (Moderate) | ~25 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 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/_Goobstation/Entities/Objects/Tools/tools.yml`:
- Around line 46-55: В списке qualities прототипа Tool замените идентификатор
Welder на Welding, чтобы он ссылался на существующий ToolQualityPrototype и
корректно загружался.
- Around line 99-108: Для варианта с behavior: Welding в описании
sonic_screwdriver используйте отдельный sprite-state из sonic_screwdriver.rsi
вместо state: crowbar; выберите существующее имя состояния для сварки, чтобы
режимы Welding и Cutting отображались по-разному.
In `@Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml`:
- Around line 284-295: Удалите закомментированные строки trayScanner и Multitool
из набора стартового снаряжения, оставив активные элементы без изменений.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 9487838f-090b-409b-9c30-ecadfd07c6f5
📒 Files selected for processing (2)
Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
- GitHub Check: CodeRabbit / Review
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
- GitHub Check: YAML map schema validator
🧰 Additional context used
📓 Path-based instructions (5)
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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
Resources/**/*.{yml,ftl}
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Follow SS14 prototype locale integration rules and practices
Files:
Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
🧠 Learnings (2)
📚 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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
🔇 Additional comments (1)
Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml (1)
273-280: LGTM!
|
@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-old"
pr=128
echo "=== PR checks ==="
gh pr checks $pr --repo "$repo" || true
echo "=== PR view (statusCheckRollup) ==="
gh pr view $pr --repo "$repo" --json statusCheckRollup,mergeable,mergeStateStatus --jq '.'
echo "=== Recent workflow runs for this PR branch ==="
branch=$(gh pr view $pr --repo "$repo" --json headRefName --jq '.headRefName')
echo "branch: $branch"
gh run list --repo "$repo" --branch "$branch" --limit 10Length of output: 6669 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="ArcaneSS14/arcane-old"
run_id=29087630442
job_id=86345090050
echo "=== Job details ==="
gh api "repos/$repo/actions/jobs/$job_id" --jq '{name, conclusion, started_at, completed_at, steps: [.steps[] | {name, status, conclusion, number}]}'
echo "=== Log tail (last 400 lines) ==="
gh run view $run_id --repo "$repo" --job $job_id --log 2>/dev/null | tail -n 400Length of output: 71698
1. Это значит: сразу после спавна компонент 2.
Почему локально всё ок, а в CI — нет:
Что делать:
Если хочешь, могу завести отдельный issue с этими двумя пунктами для трекинга. |
|
ох блядь как же сложно.. |
|
@coderabbitai |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "=== Search for Aghost entity prototype ==="
rg -n -i 'aghost' --type yaml -g '!*Locale*' | grep -iv 'startinggear\|admeme' | head -80
echo "=== Search MobAghostGear usage and entity that references it ==="
rg -n 'MobAghostGear' --type yaml
echo "=== Search inventory template refs near aghost entity ==="
fd -i aghostLength of output: 730 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "### 1. MobAghostGear references"
rg -n 'MobAghostGear' --type yaml
echo "### 2. Files with entity id containing Aghost/aghost"
rg -n '^- type: entity' -A5 --type yaml | rg -B5 -i 'aghost' || true
echo "### 3. fd for aghost-named files"
fd -i aghost
echo "### 4. Search for observer/ghost entity prototypes that might be 'aghost'"
rg -ln -i 'id:\s*MobObserver' --type yamlLength of output: 751 🏁 Script executed: #!/bin/bash
set +e
echo "### 1. MobAghostGear references"
rg -n 'MobAghostGear' --type yaml
echo "exit: $?"
echo "### 2. Search entity prototypes with id containing aghost (case-insensitive)"
rg -n -i 'id:\s*["'"'"']?[A-Za-z]*[Aa]ghost' --type yaml
echo "exit: $?"
echo "### 3. fd for aghost-named files"
fd -i aghost
echo "exit: $?"
echo "### 4. Broader search for 'Aghost' anywhere"
rg -n -i 'aghost' --type yaml
echo "exit: $?"
echo "### 5. Search entities/roles related to admin ghost job"
rg -n -i 'AdminAghost|GhostRoleAghost|AGhost' --type yaml
echo "exit: $?"Length of output: 912 🏁 Script executed: #!/bin/bash
set +e
pwd
ls
echo "---"
fd misc_startinggear
echo "---"
find . -iname "*startinggear*" 2>/dev/null
echo "---"
git status | head -5
git branch -a | head -20Length of output: 2335 🏁 Script executed: #!/bin/bash
set +e
echo "### cat misc_startinggear.yml (grep context around MobAghostGear)"
grep -n -A40 "id: MobAghostGear" Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml
echo "### test rg basic"
rg -n "MobAghostGear" Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml
echo "### rg version"
rg --versionLength of output: 1743 🏁 Script executed: #!/bin/bash
set +e
echo "### Find role/job referencing MobAghostGear"
rg -n "MobAghostGear" Resources/Prototypes -g '*.yml' -g '!misc_startinggear.yml'
echo "### Search for ghost role prototypes with 'aghost' in id (case-insensitive), broaden"
rg -ni "aghost" Resources/Prototypes -g '*.yml'
echo "### Search Content.Server/Shared for Aghost related C# (spawn command, admin ghost)"
rg -ni "aghost" Content.Server Content.Shared -g '*.cs' | head -60Length of output: 6446 🏁 Script executed: #!/bin/bash
set +e
echo "### aghost_inventory_template.yml full content"
cat -n Resources/Prototypes/InventoryTemplates/aghost_inventory_template.yml
echo "### human_inventory_template.yml (reference, for belt slot definition)"
fd -i inventory_templateLength of output: 6001 🏁 Script executed: #!/bin/bash
set +e
echo "### human_inventory_template.yml - belt slot block"
grep -n -B2 -A10 "name: belt" Resources/Prototypes/InventoryTemplates/human_inventory_template.yml
echo "### full aghost template remaining slots (uiWindowPos used) to avoid collisions"
cat -n Resources/Prototypes/InventoryTemplates/aghost_inventory_template.yml | sed -n '88,200p'Length of output: 1179 🏁 Script executed: #!/bin/bash
set +e
echo "### StartingGearSystem - equip order for 'equipment' vs 'storage' fields"
fd -i startinggearsystem
rg -n "class StartingGearSystem" -A5 Content.Server -g '*.cs'Length of output: 566 🏁 Script executed: #!/bin/bash
set +e
rg -n "EquipStartingGear|SpawnStartingGear|StartingGear" Content.Server -g '*.cs' | head -40
echo "---"
rg -rn "" >/dev/null 2>&1
rg -n "startingGear\.Equipment|Equip.*storage|storage\[" Content.Shared Content.Server -g '*.cs' | head -40Length of output: 5678 🏁 Script executed: #!/bin/bash
set +e
rg -n "EquipStartingGear" -A60 Content.Server/Station/Systems/StationSpawningSystem.cs | head -120Length of output: 2838 🏁 Script executed: #!/bin/bash
set +e
sed -n '1,140p' Content.Server/Administration/Commands/AGhostCommand.csLength of output: 6746 🏁 Script executed: #!/bin/bash
set +e
sed -n '245,270p' Resources/Prototypes/Entities/Mobs/Player/admin_ghost.ymlLength of output: 924
Почему перенос в
|
|
@coderabbitai, как я могу исправить проблему самостоятельно? если это требует внедрения в систему (изменение фундаментального) я вряд ли буду это трогать и попрошу разрешить мердж. Потому что.. Ну а что я сделаю? Вдруг сломаю что-то. |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set +e
echo "### ItemSwitchComponent fields"
fd -i itemswitch
echo "---"
rg -n "class ItemSwitchComponent" -A60 Content.Shared/_Shitmed/ItemSwitch/ 2>/dev/null || fd -i ItemSwitchComponent -x cat -n {}
echo "### SharedItemSwitchSystem OnInit and Switch method"
rg -n "OnInit|void Switch|public.*Switch\(" -A25 Content.Shared/_Shitmed/ItemSwitch/SharedItemSwitchSystem.csLength of output: 9916 🏁 Script executed: #!/bin/bash
set +e
rg -n "AttachToGridOrMap|MapUid|GridUid|_transform\." Content.Shared/_Shitmed/ItemSwitch/SharedItemSwitchSystem.cs
echo "---full Switch method---"
sed -n '150,260p' Content.Shared/_Shitmed/ItemSwitch/SharedItemSwitchSystem.cs
echo "---UpdateClothingLayer---"
rg -n "UpdateClothingLayer" -A20 Content.Shared/_Shitmed/ItemSwitch/SharedItemSwitchSystem.csLength of output: 5581 🏁 Script executed: #!/bin/bash
set +e
echo "### MultipleTool component/system"
fd -i multipletool
rg -n "class MultipleToolComponent" -A40 Content.Shared -g '*.cs'
echo "---system OnInit---"
rg -n "OnInit|Qualities|CurrentEntry|ComponentInit" -A15 Content.Shared/*/MultipleTool*.cs Content.Server/*/MultipleTool*.cs 2>/dev/null
fd -i multipletool -x rg -n "OnInit|Qualities|ComponentInit" -A15 {}Length of output: 4401 🏁 Script executed: #!/bin/bash
set +e
echo "### Full sonic screwdriver entity definition"
rg -n "id: SonicScrewdriver" -A80 Resources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
echo "### Context of OnInit / where entries[0] used, to confirm CurrentEntry index at spawn"
sed -n '90,131p' Content.Shared/Tools/Systems/SharedToolSystem.MultipleTool.csLength of output: 4606
1. SonicScrewdriver (PrototypeSaveTest)В var current = multiple.Entries[multiple.CurrentEntry]; // CurrentEntry = 0 по умолчанию
tool.UseSound = current.UseSound;
tool.Qualities = current.Behavior;
Фикс: просто раскомментировать в - type: Tool
-# Arcane-Delete-Start
-# qualities:
-# - Screwing
-# Arcane-Delete-End
+ qualities:
+ - Screwing
speedModifier: 5
useSound: /Audio/Items/drill_use.oggНикакой логики трогать не нужно — это чисто синхронизация yaml с тем, что система и так проставляет при спавне. 2. «Батин ремень» — твоя идея с belt-слотом рабочаяЯ ошибся раньше. Разобрал
Слот Шаг 1. В - name: belt
slotTexture: belt
fullTextureName: template_small
slotFlags: BELT
slotGroup: SecondHotbar
stripTime: 6
uiWindowPos: 4,1
strippingWindowPos: 1,5
displayName: Belt(проверь Шаг 2. В equipment:
back: ClothingBackpackSatchelAdmin
...
neck: ClothingNeckMantleEpaulettes
+ belt: ClothingBeltWhipping
storage:
back:
- GasAnalyzer
...
- StasisCage
- StasisCage
- StasisCage
- StasisCage
- - ClothingBeltWhippingОба фикса — только yaml, движковую логику не трогаешь, риск сломать что-то минимален. Если после этого тест всё равно упадёт (например, если размер ремня не Small/подходящий и он всё же ловится где-то ещё) — скинь мне лог, разберу дальше. (っ◔◡◔)っ нашлось два чистых yaml-фикса ✏️ Learnings added
|
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml (1)
40-45: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winУдалите закомментированные компоненты
PryingиUseDelay.Мёртвый код в
Arcane-Deleteблоках. Если компоненты намеренно убраны — удалите строки, а не оставляйте закомментированными.♻️ Предлагаемое исправление
Blunt: 0 # melee weapon to allow flashing individual targets -# Arcane-Delete-Start -# - type: Prying -# enabled: false -# - type: UseDelay -# delay: 1 -# Arcane-Delete-End - type: Tool🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Resources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml` around lines 40 - 45, Удалите закомментированные блоки компонентов Prying и UseDelay, включая маркеры Arcane-Delete-Start и Arcane-Delete-End, из определения инструмента в tools.yml.
🤖 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.
Outside diff comments:
In `@Resources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml`:
- Around line 40-45: Удалите закомментированные блоки компонентов Prying и
UseDelay, включая маркеры Arcane-Delete-Start и Arcane-Delete-End, из
определения инструмента в tools.yml.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: eecfc08c-a326-45e7-814d-d8b868c11fa3
📒 Files selected for processing (3)
Resources/Prototypes/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
- GitHub Check: CodeRabbit / Review
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML Linter
- GitHub Check: build (ubuntu-latest)
- GitHub Check: Test Packaging
- GitHub Check: YAML map schema validator
🧰 Additional context used
📓 Path-based instructions (5)
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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
Resources/**/*.{yml,ftl}
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Follow SS14 prototype locale integration rules and practices
Files:
Resources/Prototypes/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
🧠 Learnings (2)
📚 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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.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/InventoryTemplates/aghost_inventory_template.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
🔇 Additional comments (4)
Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml (2)
286-287: Удалите закомментированные строкиtrayScannerиMultitool.Мёртвый код. Было отмечено в предыдущем ревью — не исправлено.
♻️ Предлагаемое исправление
# Arcane-Edit-Start -# - trayScanner -# - Multitool - AccessConfiguratorUniversal
273-280: LGTM!Also applies to: 288-295
Resources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml (1)
93-101: Проверьте работуbehavior: WeldingбезWelderComponentи уникальный sprite-state.Два вопроса:
WelderComponent:WeldableSystemобычно проверяет наличиеWelderComponentи топлива. Без этого компонента режим сварки может не работать. Для админ-инструмента это может быть допустимо, но стоит подтвердить.
state: crowbar: дублирует sprite-state изbehavior: Cutting(строка 82). Режимы визуально не различаются приstatusShowBehavior: true. Было отмечено в предыдущем ревью — не исправлено.#!/bin/bash # Проверить, требует ли Welding качество WelderComponent rg -n 'WelderComponent' Content.Shared/Tools/Systems/ -g '*.cs' | head -20 # Проверить существование sound collection "Welder" rg -n 'Welder' Resources/Prototypes/ -g '*.yml' | grep -i 'sound\|collection' | head -10 # Проверить доступные states в sonic_screwdriver.rsi fd 'sonic_screwdriver.rsi' Resources/ --exec cat {}/meta.json 2>/dev/null | jq '.states | keys' 2>/dev/null || fd 'sonic_screwdriver.rsi' Resources/ --exec cat {}/meta.json 2>/dev/nullResources/Prototypes/InventoryTemplates/aghost_inventory_template.yml (1)
25-35: LGTM!
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Resources/Prototypes/_DEN/Entities/Objects/Misc/Admin.yml (1)
1-26: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick winПорядок полей:
suffixдолжен идти передdescription.Согласно path instructions для
Resources/Prototypes/**/*.yml, порядок полей прототипа сущности:type,abstract,parent,id,categories,name,suffix,description,components. Сейчасdescription(строка 5) стоит передsuffix(строка 6).♻️ Предлагаемое исправление
- type: entity id: AdminMaterialBox parent: BoxCardboard name: admin material box - description: A box of basic materials. suffix: Admin + description: A box of basic materials. components:🤖 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/_DEN/Entities/Objects/Misc/Admin.yml` around lines 1 - 26, Reorder the prototype fields in AdminMaterialBox so suffix appears immediately after name and before description, following the required entity prototype field order; leave all other fields unchanged.Source: Path instructions
♻️ Duplicate comments (1)
Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml (1)
285-286: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick winУдалите закомментированные строки
trayScannerиMultitool.Этот вопрос уже поднимался в предыдущем ревью — мёртвый код в виде комментариев необходимо удалить полностью.
♻️ Предлагаемое исправление
# Arcane-Edit-Start -# - trayScanner -# - Multitool - StasisCage🤖 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/Roles/Jobs/Fun/misc_startinggear.yml` around lines 285 - 286, Удалите закомментированные строки `trayScanner` и `Multitool` из списка стартового снаряжения в `misc_startinggear.yml`, полностью убрав этот мёртвый код.
🤖 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/RCD/rcd.yml`:
- Around line 120-130: Замените collisionMask: Impassable на collisionMask:
FullTileMask во всех новых прототипах стен и шлюзов, включая ReinforcedWall,
ShuttleWall, HighSecDoor, BlastDoor, AirlockGlassShuttle и AirlockShuttle, чтобы
они соответствовали существующим полнотайловым конструкциям.
- Around line 132-142: Добавьте правило rules: - IsWindow в прототип RCD
ShuttleWindow, аналогично существующим оконным прототипам Window,
WindowDirectional, ReinforcedWindow и WindowReinforcedDirectional, чтобы
предотвратить установку поверх другого окна.
---
Outside diff comments:
In `@Resources/Prototypes/_DEN/Entities/Objects/Misc/Admin.yml`:
- Around line 1-26: Reorder the prototype fields in AdminMaterialBox so suffix
appears immediately after name and before description, following the required
entity prototype field order; leave all other fields unchanged.
---
Duplicate comments:
In `@Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml`:
- Around line 285-286: Удалите закомментированные строки `trayScanner` и
`Multitool` из списка стартового снаряжения в `misc_startinggear.yml`, полностью
убрав этот мёртвый код.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 435ba16e-577c-4d29-a74e-09ef7c4a51b2
📒 Files selected for processing (4)
Resources/Prototypes/RCD/rcd.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.ymlResources/Prototypes/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (5)
- GitHub Check: YAML Linter
- GitHub Check: build (ubuntu-latest)
- GitHub Check: YAML map schema validator
- GitHub Check: Test Packaging
- GitHub Check: build (ubuntu-latest)
🧰 Additional context used
📓 Path-based instructions (5)
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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml
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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml
Resources/**/*.{yml,ftl}
📄 CodeRabbit inference engine (.cursor/rules/ss14-resources.mdc)
Follow SS14 prototype locale integration rules and practices
Files:
Resources/Prototypes/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml
🧠 Learnings (2)
📚 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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.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/_DEN/Entities/Objects/Misc/Admin.ymlResources/Prototypes/RCD/rcd.ymlResources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.ymlResources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml
🔇 Additional comments (6)
Resources/Prototypes/_Goobstation/Entities/Objects/Tools/tools.yml (3)
93-102: 🎯 Functional Correctness
behavior: Weldingиспользует тот же sprite-statecrowbar, что иCutting.Этот вопрос уже поднимался в предыдущем ревью. При
statusShowBehavior: trueрежимы Welding и Cutting визуально неразличимы. Если вsonic_screwdriver.rsiесть отдельный state для сварки, используйте его.
40-49: LGTM!
117-160: LGTM!Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml (2)
273-281: LGTM!
287-307: LGTM!Resources/Prototypes/RCD/rcd.yml (1)
107-118: LGTM!Also applies to: 409-470
| - id: SheetPlastic | ||
| - id: MaterialWoodPlank | ||
| - id: MaterialCloth | ||
| - id: PartRodMetal |
There was a problem hiding this comment.
Че за _DEN? Почему новый файл у них?
| - type: Item | ||
| sprite: _Goobstation/Objects/Tools/rcd_chrono.rsi | ||
| - type: RCD | ||
| availablePrototypes: |
| enabled: false | ||
| - type: UseDelay # For insta prying | ||
| delay: 1 | ||
| # Arcane-Delete-Start |
There was a problem hiding this comment.
Arcane-Edit-Start: Removed
| qualities: | ||
| - Screwing | ||
| - Screwing | ||
| speedModifier: 5 # Arcane-Edit 1>5 |
There was a problem hiding this comment.
Просто Arcane. Это новая строчка
| state: icon | ||
| changeSound: | ||
| path: /Audio/Effects/Arcade/newgame.ogg | ||
| # Arcane-Edit-Start |
There was a problem hiding this comment.
Arcane-Start
Это новые, а не изменённые строчки
| - ShuttersWindow | ||
| - AirlockGlassShuttle | ||
| - AirlockShuttle | ||
| # Arcane-Edit-End |
There was a problem hiding this comment.
Строчки новые -> Пиши Arcane-End
| uiWindowPos: 2,1 | ||
| strippingWindowPos: 2,4 | ||
| displayName: ID | ||
| # Arcane-Edit-Start |
| rotation: Fixed | ||
| fx: EffectRCDConstruct2 | ||
|
|
||
| # Arcane-Edit-Start # For AGhost 'RCD Chrono' |
Описание PR
Переработал полезности, но для администраторов конкретно.
В изменения входят две три:
Усиление убитой звуковой отвёртки (предыдущий разработчик думал что его код будет правильным, потому проверять не стал или забил)
Усиление футуристического РСУ (намного больше режимов крафта которые доступны исключительно этому РСУ.)
Снаряжение и добавление полезностей для сущности agost (с добавлением 'авторитета')
Футуристический РСУ:
Звуковая отвёртка теперь:
Снаряжение администратора составляет теперь новенькие золотая адмиралтейская ЦК шапка и золотые адмиралтейские наплечники ЦК.
Бесполезные мультитул и т-сканнер удалены (у вас есть кнопки "проверять пол" в меню строительства)
Бесполезные карманы стали полезными и содержат для debug-функций ядерный пинпоинтер и станцию пинпоинтер. А ещё debug-тазер (который отправляет игроков 'в тотальный ахуй' но безопаснее. просто со звуками грома.) - Возможно это лишнее. Ибо есть другой дисциплинарный предмет не требующий зарядки.
ещё супер-пульт от шлюзов (потому что я не признаю ПКМ>Трюки>болты/аварийка на шлюзы)
В рюкзаке стало ещё веселее
Медиа
Тип PR