Skip to content

Продолжительность жизни ксено и дварфов - #176

Open
bzzzbzzbz wants to merge 11 commits into
ArcaneSS14:masterfrom
bzzzbzzbz:xeno_ages
Open

Продолжительность жизни ксено и дварфов#176
bzzzbzzbz wants to merge 11 commits into
ArcaneSS14:masterfrom
bzzzbzzbz:xeno_ages

Conversation

@bzzzbzzbz

@bzzzbzzbz bzzzbzzbz commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Описание PR

Увеличил продолжительность жизни ксено до 1000 лет и дварфов - до 500.
КПБ теперь не могут ставить возраст меньше 18.
Лорна.

Медиа

Тип PR

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

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

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

Изменения

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 009aeef6-5882-4e33-9f37-d7857113b49d

📥 Commits

Reviewing files that changed from the base of the PR and between 7dda732 and 964916a.

📒 Files selected for processing (1)
  • Resources/Prototypes/Species/dwarf.yml
📜 Recent review details
⏰ Context from checks skipped due to timeout. (5)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: Test Packaging
  • GitHub Check: YAML Linter
  • GitHub Check: YAML map schema validator
  • 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/Species/dwarf.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: Load ss14-naming-conventions documentation for Resources work
Load ss14-ecs-prototypes documentation for Resources work
Load ss14-upstream-maintenance documentation for Resources work
Load ss14-prototypes-locale documentation for Resources work
Load ss14-localization-strings documentation for Resources work
Load ss14-sprite-overlays-shaders documentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after edits

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

Files:

  • Resources/Prototypes/Species/dwarf.yml
Resources/**/*.{yml,ftl}

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

Follow SS14 prototype locale integration rules and practices

Files:

  • Resources/Prototypes/Species/dwarf.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/Species/dwarf.yml
Resources/Prototypes/**/*.yml

📄 CodeRabbit inference engine (AGENTS.md)

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

Files:

  • Resources/Prototypes/Species/dwarf.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/Species/dwarf.yml
🧠 Learnings (4)
📚 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/Species/dwarf.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/Species/dwarf.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/Species/dwarf.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/Species/dwarf.yml
🔇 Additional comments (2)
Resources/Prototypes/Species/dwarf.yml (2)

17-17: Повторное замечание: maxAge не продлевает срок жизни вида.

maxAge: 400 задаёт верхнюю границу допустимого возраста персонажа. Оно не изменяет фактическое старение или смерть дварфов. Если цель PR — продлить жизнь вида, измените систему старения/смерти, а не только этот прототип.


16-19: 🎯 Functional Correctness

Проверьте YAML после изменения.

Перед слиянием запустите:

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

As per coding guidelines: Resources/**/*.yml требует проверки через Content.YAMLLinter.


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

  • Для HumanoidXeno задан максимальный возраст 1000 лет.
  • Для Dwarf задан максимальный возраст 400 лет.
  • Для HumanoidXeno, Dwarf и IPC задан минимальный возраст 18 лет.
  • Для HumanoidXeno и Dwarf обновлены возрастные границы молодого и пожилого возраста.
  • Роботы не изменялись.

Resources / localization

  • Изменены прототипы видов:
    • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
    • Resources/Prototypes/Species/dwarf.yml
    • Resources/Prototypes/_EinsteinEngines/Species/ipc.yml
  • ID прототипов и расположение файлов не изменялись.
  • Обновления локализации не требуются.

Prediction / networking

  • Shared-код и сетевые сообщения не изменялись.
  • Риск миспредикта отсутствует.

Validation / risk

  • Build & Test Debug завершился тайм-аутом интеграционных тестов: 513 тестов пройдено, 1 не пройден, 3 пропущено.
  • Имя неудачного теста в логе отсутствует.
  • Ранее обнаруженные ошибки с дублирующимся minAge в ipc.yml и неизвестным тегом IPCMaskWearable устранены.
  • Изменения ограничены возрастными параметрами прототипов.

Walkthrough

В прототипы Dwarf и HumanoidXeno добавлены параметры возраста. Для IPC минимальный возраст изменён с 1 на 18.

Changes

Возрастные параметры видов

Layer / File(s) Summary
Настройки возраста прототипов
Resources/Prototypes/Species/dwarf.yml, Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml, Resources/Prototypes/_EinsteinEngines/Species/ipc.yml
Для Dwarf заданы значения возраста 18, 400, 120 и 240. Для HumanoidXeno заданы значения 18, 1000, 300 и 600. Для IPC минимальный возраст изменён с 1 на 18.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: puroslavking

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

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

❤️ Share

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

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

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

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="176"

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

echo
echo "== Failed GitHub Actions jobs and logs =="
gh run list --repo "$repo" --branch "$(gh pr view "$pr" --repo "$repo" --json headRefName --jq .headRefName)" \
  --status failure --limit 10 --json databaseId,name,workflowName,conclusion,url \
  --jq '.[] | [.databaseId, .workflowName, .name, .conclusion, .url] | `@tsv`' |
while IFS=$'\t' read -r run_id workflow job conclusion url; do
  echo "--- Run $run_id: $workflow / $job ($conclusion) ---"
  echo "$url"
  gh run view "$run_id" --repo "$repo" --log-failed 2>&1 | tail -n 160 || true
done

Length of output: 36863


@bzzzbzzbz Тесты упали не из-за изменения возраста ксено в #176.

Причины:

  1. YAML Linter не может загрузить Prototypes/_EinsteinEngines/Species/ipc.yml.
    В файле есть дублирующий ключ minAge на Line 25.

  2. Build & Test Map Renderer падает при инициализации карты.
    Причина: неизвестный тег IPCMaskWearable. Он используется в прототипе или снаряжении IPC, но не зарегистрирован в системе тегов.

Test Packaging и ещё один build (ubuntu-latest) пока выполняются.

You are interacting with an AI system.

@UmbiMax

UmbiMax commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Не трогать роботов. Это не животные.

@UmbiMax

UmbiMax commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Максимум у дварфов урезать до 400

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

Не трогать роботов. Это не животные.

мне векортис сказал сделать и я сделал

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

Максимум у дварфов урезать до 400

сделал

@bzzzbzzbz

Copy link
Copy Markdown
Contributor Author

@coderabbitai что с тестами?

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Tip

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo="ArcaneSS14/arcane"
pr="176"

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

echo
echo "== Latest runs on PR head branch =="
branch="$(gh pr view "$pr" --repo "$repo" --json headRefName --jq '.headRefName')"
gh run list \
  --repo "$repo" \
  --branch "$branch" \
  --limit 10 \
  --json databaseId,workflowName,name,status,conclusion,url,headSha \
  --jq '.[] | [.databaseId, .workflowName, .name, .status, .conclusion, .url, .headSha] | `@tsv`' || true

echo
echo "== Logs for failed runs =="
gh run list \
  --repo "$repo" \
  --branch "$branch" \
  --status failure \
  --limit 5 \
  --json databaseId,workflowName,name,url \
  --jq '.[] | [.databaseId, .workflowName, .name, .url] | `@tsv`' |
while IFS=$'\t' read -r run_id workflow job url; do
  echo "--- $workflow / $job: $url ---"
  gh run view "$run_id" --repo "$repo" --log-failed 2>&1 | tail -n 180 || true
done

Length of output: 136904


@bzzzbzzbz Сейчас почти всё зелёное.

Проходят YAML Linter, Build & Test Map Renderer, Test Packaging и остальные проверки. Ошибки с дублирующимся minAge и тегом IPCMaskWearable устранены.

Падает только Build & Test Debug: процесс интеграционных тестов был принудительно завершён по времени (Tests took way too; Test host process crashed : Process terminated).

Перед завершением: Passed: 513, Failed: 1, Skipped: 3. Лог не показывает имя единственного упавшего теста. По имеющимся данным это не связано с изменениями возраста видов в #176.

You are interacting with an AI system.

Comment thread Resources/Prototypes/Species/dwarf.yml
@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Note

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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/Species/dwarf.yml`:
- Line 17: Clarify that maxAge only clamps the selectable character age and does
not extend species lifespan or alter aging/death behavior. Apply this
clarification to Resources/Prototypes/Species/dwarf.yml:17-17 and
Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml:17-17; if the intended
change is actual lifespan extension, modify the relevant aging/death system
instead of these prototype values.
🪄 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: 41816739-7755-4d63-82ff-5db06290bf1f

📥 Commits

Reviewing files that changed from the base of the PR and between 692ef1d and 7dda732.

📒 Files selected for processing (3)
  • Resources/Prototypes/Species/dwarf.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/_EinsteinEngines/Species/ipc.yml
📜 Review details
⏰ Context from checks skipped due to timeout. (5)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: build (ubuntu-latest)
  • GitHub Check: YAML map schema validator
  • GitHub Check: Test Packaging
  • GitHub Check: YAML Linter
🧰 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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.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: Load ss14-naming-conventions documentation for Resources work
Load ss14-ecs-prototypes documentation for Resources work
Load ss14-upstream-maintenance documentation for Resources work
Load ss14-prototypes-locale documentation for Resources work
Load ss14-localization-strings documentation for Resources work
Load ss14-sprite-overlays-shaders documentation when working with RSI metadata, textures, sprite layers, overlays, or shader resources
Validate YAML after edits

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

Files:

  • Resources/Prototypes/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.yml
Resources/**/*.{yml,ftl}

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

Follow SS14 prototype locale integration rules and practices

Files:

  • Resources/Prototypes/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.yml
Resources/Prototypes/**/*.yml

📄 CodeRabbit inference engine (AGENTS.md)

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

Files:

  • Resources/Prototypes/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.yml
🧠 Learnings (8)
📚 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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.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/_EinsteinEngines/Species/ipc.yml
  • Resources/Prototypes/_Arcane/Species/humanoid_xeno.yml
  • Resources/Prototypes/Species/dwarf.yml
📚 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-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.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.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.yml
🔇 Additional comments (2)
Resources/Prototypes/Species/dwarf.yml (1)

15-15: Охватите minAge маркерами Arcane.

# Arcane-Start начинается на Line 16, поэтому изменённое поле на Line 15 находится вне Arcane-блока. При upstream-синхронизации границы правки будут неполными. Перенесите маркер перед minAge или охватите одним блоком все возрастные поля.

Resources/Prototypes/_EinsteinEngines/Species/ipc.yml (1)

12-12: LGTM!

Comment thread Resources/Prototypes/Species/dwarf.yml
category: Unusual
description: "/ServerInfo/_Orion/SpeciesDescriptions/Dwarf.xml"
minAge: 18
# Arcane-Start

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Пометку на строчку выше.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Пометку на строчку выше.

сделал
и посмотри ещё пр с ростом ксено плес

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants