Загрузка прототипов для SCP-3008#865
Conversation
|
Warning Rate limit exceeded
⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughПрохождениеДобавлены восемь новых вариантов NPC-сущностей SCP-3008 с локализацией на русском языке, определениями прототипов и ресурсами текстур. Каждый вариант включает различные уровни агрессии, движения и боевых характеристик, а также музыкальная шкатулка как сопутствующий предмет. Изменения
Прогнозируемые затраты на проверку кода🎯 3 (Средняя сложность) | ⏱️ ~20 минут Предлагаемые ярлыки
Поэма
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
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
🧹 Nitpick comments (2)
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl (1)
5-9: Сведите locale-зависимые alias-ссылки к минимуму.Для долгосрочной поддержки лучше использовать полные RU-строки либо единый базовый ключ, чтобы избежать расхождений между локалями.
Based on learnings: "Localization files should avoid locale-specific cross-references ... and minimize locale-dependent aliasing."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl` around lines 5 - 9, Several locale entries (ent-BasicScp3008Angry, ent-StrongScp3008Angry, ent-TallScp3008Angry) are aliasing other locale keys which creates locale-dependent cross-references; replace these alias references with either the full Russian strings or point them to a single shared base key (e.g., make ent-BasicScp3008Angry contain the actual RU text rather than "{ ent-BasicScp3008 }", and similarly replace "{ ent-StrongScp3008Angry }" and "{ ent-TallScp3008 }" with their corresponding Russian literals or redirect all angry variants to a single canonical key like ent-Scp3008Angry to avoid per-locale divergence), updating the entries ent-BasicScp3008Angry, ent-StrongScp3008Angry, and ent-TallScp3008Angry accordingly.Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml (1)
74-77: Добавьте явныеcategories: [HideSpawnMenu]в дочерние SCP-3008 прототипы.Это снижает риск нежелательного появления служебных сущностей в меню спавна при изменениях наследования.
Based on learnings: "Для каждой дочерней сущности обязательно явно указывать categories: [HideSpawnMenu], даже если такая категория уже присутствует у родителя."
Also applies to: 99-103, 127-130, 156-160, 190-193, 211-215
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml` around lines 74 - 77, Child SCP-3008 prototypes (e.g., the prototype with id BasicScp3008 that inherits from BaseScp3008) must explicitly declare categories: [HideSpawnMenu] to prevent accidental exposure in spawn menus when inheritance changes; for each child prototype (including the others noted in the review) add a categories: [HideSpawnMenu] entry at the same level as id/parent/name/components so the child YAML contains the category explicitly even if the parent defines it.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl`:
- Line 7: В ключе ent-StrongScp3008Angry замените рекурсивную самоссылку на
реальную строку перевода или на корректный ключ, например вместо
"ent-StrongScp3008Angry = { ent-StrongScp3008Angry }" используйте фактический
текст состояния (напр., ent-StrongScp3008Angry = "Злой SCP-3008") или ссылку на
существующий корректный ключ (напр., ent-StrongScp3008Angry = {
ent-StrongScp3008Angry_description }), чтобы убрать рекурсию и позволить
резолвингу завершиться.
In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml`:
- Around line 89-90: TimedSpawner.prototypes references the wrong entity IDs
(uses Basic3008*/Strong3008*/Tall3008*) while the actual entities are declared
as BasicScp3008*/StrongScp3008*/TallScp3008*; update every
TimedSpawner.prototypes entry (e.g., the occurrences around where prototypes: -
Basic3008Angry appears and the other listed spots) to use the correct IDs
BasicScp3008*, StrongScp3008*, and TallScp3008* so they match the declared
entity names.
- Line 191: В файле определения прототипа TallScp3008 указан неверный родитель:
свойство parent ссылается на Base3008, тогда как реальное имя базового прототипа
— BaseScp3008; исправьте значение parent в записи TallScp3008 на "BaseScp3008"
чтобы восстановить корректное наследование прототипа.
---
Nitpick comments:
In
`@Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl`:
- Around line 5-9: Several locale entries (ent-BasicScp3008Angry,
ent-StrongScp3008Angry, ent-TallScp3008Angry) are aliasing other locale keys
which creates locale-dependent cross-references; replace these alias references
with either the full Russian strings or point them to a single shared base key
(e.g., make ent-BasicScp3008Angry contain the actual RU text rather than "{
ent-BasicScp3008 }", and similarly replace "{ ent-StrongScp3008Angry }" and "{
ent-TallScp3008 }" with their corresponding Russian literals or redirect all
angry variants to a single canonical key like ent-Scp3008Angry to avoid
per-locale divergence), updating the entries ent-BasicScp3008Angry,
ent-StrongScp3008Angry, and ent-TallScp3008Angry accordingly.
In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml`:
- Around line 74-77: Child SCP-3008 prototypes (e.g., the prototype with id
BasicScp3008 that inherits from BaseScp3008) must explicitly declare categories:
[HideSpawnMenu] to prevent accidental exposure in spawn menus when inheritance
changes; for each child prototype (including the others noted in the review) add
a categories: [HideSpawnMenu] entry at the same level as
id/parent/name/components so the child YAML contains the category explicitly
even if the parent defines it.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 43f4a9fe-5efd-42bc-a23b-d70a70eca20d
⛔ Files ignored due to path filters (5)
Resources/Audio/_Scp/Scp3008/IKEA.oggis excluded by!**/*.oggResources/Audio/_Scp/Scp3008/VOICE.oggis excluded by!**/*.oggResources/Textures/_Scp/Mobs/Scp/scp-3008/basic.rsi/Basic3008.pngis excluded by!**/*.pngResources/Textures/_Scp/Mobs/Scp/scp-3008/basic.rsi/Strong3008.pngis excluded by!**/*.pngResources/Textures/_Scp/Mobs/Scp/scp-3008/tall.rsi/Tall3008.pngis excluded by!**/*.png
📒 Files selected for processing (5)
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftlResources/Maps/_Scp/Events/RJD1/Ikea_v6.3.ymlResources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.ymlResources/Textures/_Scp/Mobs/Scp/scp-3008/basic.rsi/meta.jsonResources/Textures/_Scp/Mobs/Scp/scp-3008/tall.rsi/meta.json
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl
Outdated
Show resolved
Hide resolved
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml
Outdated
Show resolved
Hide resolved
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml`:
- Around line 18-23: Remove the non-serialised activeChannel entry from the
ScpRadio prototype in scp3008.yml: the ScpRadio component's ActiveChannel
property in Content.Shared/_Scp/Other/Radio/ScpRadioComponent.cs does not have a
[DataField] so the YAML key will be ignored or break deserialization; either
delete the activeChannel line(s) under the ScpRadio block in scp3008.yml or
alternatively add a [DataField("activeChannel")] (and proper backing field/type)
to the ActiveChannel property in ScpRadioComponent to make it
serializable—prefer removing the YAML entry unless you intend to persist that
value via a DataField on ActiveChannel.
- Around line 73-254: Add an explicit categories: [HideSpawnMenu] field to every
child SCP-3008 prototype that currently lacks it (BasicScp3008,
BasicScp3008Angry, StrongScp3008, StrongScp3008Angry, TallScp3008,
TallScp3008Angry) because category inheritance from BaseScp3008 is not reliable;
for each of these entity definitions, insert categories: [HideSpawnMenu] at the
top-level of the prototype (alongside id/name/parent/components) so the spawn
menu is hidden for each child prototype.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 272a16c1-53f1-4071-ad8f-3fd2a014e957
📒 Files selected for processing (2)
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftlResources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml
🚧 Files skipped from review as they are similar to previous changes (1)
- Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml
Outdated
Show resolved
Hide resolved
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml
Outdated
Show resolved
Hide resolved
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/main/scp-3008.ftl
Outdated
Show resolved
Hide resolved
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Main/scp3008.yml
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/events/scp-3008.ftl (1)
5-10: Отсутствуют.descдля базовых вариантов.У
ent-BasicScp3008,ent-StrongScp3008иent-TallScp3008не указаны описания (.desc). Они будут использовать описание из YAML-файла на английском или наследовать отBaseScp3008.Рекомендуется добавить локализованные описания для консистентности:
Предлагаемое дополнение
ent-BasicScp3008 = Сотрудник IKEA + .desc = { ent-BaseScp3008.desc } ent-BasicScp3008Angry = { ent-BasicScp3008 } + .desc = { ent-BaseScp3008.desc } ent-StrongScp3008 = Крепкий сотрудник IKEA + .desc = { ent-BaseScp3008.desc } ent-StrongScp3008Angry = { ent-StrongScp3008 } + .desc = { ent-BaseScp3008.desc } ent-TallScp3008 = Высокий сотрудник IKEA + .desc = { ent-BaseScp3008.desc } ent-TallScp3008Angry = { ent-TallScp3008 } + .desc = { ent-BaseScp3008.desc }🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/events/scp-3008.ftl` around lines 5 - 10, Add Russian description entries (.desc) for the base SCP-3008 variants so they don't fall back to English/YAML or BaseScp3008: add ent-BasicScp3008.desc, ent-StrongScp3008.desc and ent-TallScp3008.desc with brief localized Russian descriptions; keep or update ent-BasicScp3008Angry and ent-StrongScp3008Angry and ent-TallScp3008Angry either as aliases to the base keys or add separate .desc entries if the angry variants need distinct text (use the existing ent-BasicScp3008, ent-StrongScp3008, ent-TallScp3008 identifiers to locate where to add the .desc fields).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml`:
- Around line 16-17: В файле scp3008.yml указан путь к аудиофайлу sound.path:
/Audio/_Scp/Scp3008/IKEA.ogg, но pipeline сообщает, что этот файл отсутствует;
либо добавьте в репозиторий нужный файл по этому пути (включая правильные
регистр/каталог) либо исправьте значение sound.path в scp3008.yml на фактический
существующий путь к аудиофайлу (например другой каталог/имя без ведущего слеша,
если ресурсы хранятся по относительному пути), затем пересоберите/проверьте, что
pipeline видит файл.
- Around line 152-155: Проблема: при переопределении поля MeleeWeapon в
прототипе потерян Structural урон из родителя StrongScp3008; чтобы исправить, в
блоке MeleeWeapon (атрибут damage.types) добавить запись Structural: 40 рядом с
Blunt: 15 или объединить/унаследовать типы урона вместо полного перезаписывания;
проверьте, что в секции, где определён MeleeWeapon, присутствуют оба ключа —
Blunt и Structural — чтобы злая версия сохраняла тот же Structural урон, что и
родитель.
- Around line 106-107: В файле есть три вхождения компонента NPCRetaliation где
ключ включения неправильно назван `_enabled: false`; замените во всех случаях
`_enabled` на стандартный `enabled` (т. е. NPCRetaliation: _enabled: false →
NPCRetaliation: enabled: false) чтобы соответствовать проектному YAML синтаксису
и избежать игнорирования флага.
---
Nitpick comments:
In
`@Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/events/scp-3008.ftl`:
- Around line 5-10: Add Russian description entries (.desc) for the base
SCP-3008 variants so they don't fall back to English/YAML or BaseScp3008: add
ent-BasicScp3008.desc, ent-StrongScp3008.desc and ent-TallScp3008.desc with
brief localized Russian descriptions; keep or update ent-BasicScp3008Angry and
ent-StrongScp3008Angry and ent-TallScp3008Angry either as aliases to the base
keys or add separate .desc entries if the angry variants need distinct text (use
the existing ent-BasicScp3008, ent-StrongScp3008, ent-TallScp3008 identifiers to
locate where to add the .desc fields).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: b932cda6-93a4-4642-8eb0-10ed3a66aa65
⛔ Files ignored due to path filters (2)
Resources/Audio/_Scp/Events/Scp3008/IKEA.oggis excluded by!**/*.oggResources/Audio/_Scp/Events/Scp3008/VOICE.oggis excluded by!**/*.ogg
📒 Files selected for processing (2)
Resources/Locale/ru-RU/_prototypes/_scp/entities/mobs/npcs/scp/events/scp-3008.ftlResources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml
Outdated
Show resolved
Hide resolved
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
♻️ Duplicate comments (1)
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml (1)
170-171:⚠️ Potential issue | 🟡 MinorОстались два
NPCRetaliationс_enabledвместоenabled.На Line 171 и Line 239 всё ещё стоит
_enabled: false, хотя на Line 107 в этом же файле уже используется корректный ключenabled. Если_enabledне распознаётся компонентом, флаг будет проигнорирован, и эти варианты продолжат контратаковать.Предлагаемое исправление
- type: NPCRetaliation - _enabled: false + enabled: falseAlso applies to: 238-239
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml` around lines 170 - 171, В файле два компонента NPCRetaliation используют неправильный ключ `_enabled` (из-за этого флаг игнорируется) — замените `_enabled: false` на корректный ключ `enabled: false` для всех вхождений NPCRetaliation (включая упомянутые дубли на строках около 171 и 239), и пройдитесь по файлу, чтобы убедиться, что все NPCRetaliation используют `enabled` одинаково с остальными компонентами.
🧹 Nitpick comments (1)
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml (1)
13-27: Слот батарейки здесь, похоже, ни на что не влияет.
AmbientSoundне завязан наPowerCellSlot, а в самом прототипе не видно компонентов, которые бы проверяли или расходовали заряд. В результатеPowerCellMediumможно вынуть без эффекта. Если предмет должен работать от батарейки, здесь лучше явно добавить логику питания; если нет — убрать слот иstartingItem.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml` around lines 13 - 27, The PowerCellMedium slot currently has no effect because there is no component wiring power logic to PowerCellSlot (the AmbientSound component obviously doesn't use it) — either implement explicit power usage by adding a power-consumer component that references the cell slot (e.g., add a PowerConsumer or PoweredComponent that reads cell_slot/PowerCellSlot and decrements charge over time or on use, and update any sound/behavior logic to check that component), or remove the unused container/cell_slot and the startingItem entry (remove the ContainerContainer block, the PowerCellSlot block, and the ItemSlots.cell_slot startingItem: PowerCellMedium) so the prototype doesn't expose a non-functional battery slot. Ensure references use the existing identifiers: cell_slot, PowerCellSlot, ItemSlots, and PowerCellMedium.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml`:
- Around line 170-171: В файле два компонента NPCRetaliation используют
неправильный ключ `_enabled` (из-за этого флаг игнорируется) — замените
`_enabled: false` на корректный ключ `enabled: false` для всех вхождений
NPCRetaliation (включая упомянутые дубли на строках около 171 и 239), и
пройдитесь по файлу, чтобы убедиться, что все NPCRetaliation используют
`enabled` одинаково с остальными компонентами.
---
Nitpick comments:
In `@Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.yml`:
- Around line 13-27: The PowerCellMedium slot currently has no effect because
there is no component wiring power logic to PowerCellSlot (the AmbientSound
component obviously doesn't use it) — either implement explicit power usage by
adding a power-consumer component that references the cell slot (e.g., add a
PowerConsumer or PoweredComponent that reads cell_slot/PowerCellSlot and
decrements charge over time or on use, and update any sound/behavior logic to
check that component), or remove the unused container/cell_slot and the
startingItem entry (remove the ContainerContainer block, the PowerCellSlot
block, and the ItemSlots.cell_slot startingItem: PowerCellMedium) so the
prototype doesn't expose a non-functional battery slot. Ensure references use
the existing identifiers: cell_slot, PowerCellSlot, ItemSlots, and
PowerCellMedium.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: b0926d87-4729-46fd-b202-d8fcb9ff4502
⛔ Files ignored due to path filters (3)
Resources/Textures/_Scp/Mobs/Scp/Events/scp-3008/basic.rsi/Basic3008.pngis excluded by!**/*.pngResources/Textures/_Scp/Mobs/Scp/Events/scp-3008/basic.rsi/Strong3008.pngis excluded by!**/*.pngResources/Textures/_Scp/Mobs/Scp/Events/scp-3008/tall.rsi/Tall3008.pngis excluded by!**/*.png
📒 Files selected for processing (3)
Resources/Prototypes/_Scp/Entities/Mobs/NPCs/Scp/Events/scp3008.ymlResources/Textures/_Scp/Mobs/Scp/Events/scp-3008/basic.rsi/meta.jsonResources/Textures/_Scp/Mobs/Scp/Events/scp-3008/tall.rsi/meta.json
|
Чини и можно мержить |
Готово |



Краткое описание | Short description
Загрузка прототипов SCP-3008
🆑 Wardex
Summary by CodeRabbit