Conversation
📝 WalkthroughWalkthroughScp173System теперь ищет только статические сущности в радиусе 4f и при обработке пропускает цели с компонентом Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 минут Poem
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (1 warning, 2 inconclusive)
✅ Passed checks (5 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 the current code and only fix it if needed.
Inline comments:
In `@Content.Server/_Scp/Scp173/Scp173System.cs`:
- Around line 135-139: The skip logic in Scp173System currently ignores only
subFloor.IsUnderCover, which diverges from SharedSubFloorHideSystem behavior;
update the check where TryComp<SubFloorHideComponent>(ent, out var subFloor) is
used (in the Scp173System entity loop) to also require
subFloor.BlockInteractions (i.e., only continue/skip when
subFloor.BlockInteractions && subFloor.IsUnderCover) so the entity is only
protected when both flags are set, matching the other handlers.
In `@Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml`:
- Around line 55-57: Файл оставляет TODO про некорректное применение скоростей в
MovementSpeedModifier (поля baseWalkSpeed/baseSprintSpeed) из‑за того, что
значения переопределяются при спавне Fixtures; нужно либо исправить порядок
применения модификаторов/фикстур в коде, где применяется
MovementSpeedModifier/Fixtures, чтобы гарантировать применение baseWalkSpeed и
baseSprintSpeed, либо завести отдельный issue и заменить строкки с "TO DO" на
"TODO:" с ссылкой на этот issue; в инструкции укажите конкретно места/символы
для проверки — MovementSpeedModifier, baseWalkSpeed, baseSprintSpeed и логику
применения Fixtures — и добавьте в PR комментарий с ссылкой на созданный issue
если вы решаете отложить баг на потом.
- Around line 37-38: В scp082.yml компонентам Hunger и Thirst добавлены без
конфигурации — исправьте это либо удалив эти компоненты полностью если механика
голода/жажды не нужна для SCP-082, либо явно сконфигурировав их как в реализации
SCP-035: добавьте поля thresholds и baseDecayRate с подходящими значениями (или
другие используемые параметры) для компонентов Hunger и Thirst, чтобы заменить
поведение по умолчанию; проверьте в коде/других YAML-прототипах пример
конфигурации и скопируйте те же ключи и структуру для компонентов Hunger и
Thirst в этом файле.
🪄 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
Run ID: 707eeecd-fa53-469b-89ef-73b461f6d7fc
📒 Files selected for processing (3)
Content.Server/_Scp/Scp173/Scp173System.csResources/Prototypes/_Scp/Entities/Clothing/Bags/scp049.ymlResources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml
There was a problem hiding this comment.
♻️ Duplicate comments (2)
Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml (2)
37-38:⚠️ Potential issue | 🟡 MinorДублирую: настройте
HungerиThirstявно или подтвердите дефолты.Сейчас SCP-082 получает стандартные пороги голода/жажды, а эти системы также влияют на модификаторы скорости. Для боевого SCP лучше явно зафиксировать балансные
thresholds/baseDecayRateлибо оставить понятное подтверждение, что дефолты намеренные.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml` around lines 37 - 38, SCP-082 currently inherits default Hunger and Thirst settings which affect speed modifiers; explicitly configure the Hunger and Thirst entries in scp082.yml by adding concrete threshold and baseDecayRate values (e.g., set desired thresholds and baseDecayRate under the existing type: Hunger and type: Thirst blocks) or add a clear comment line confirming that using engine defaults is intentional; target the Hunger and Thirst entries so the balance for SCP-082's speed modifiers is deterministic.
56-57:⚠️ Potential issue | 🟡 MinorНе привязывайте TODO по скорости к
Fixtures.Комментарий всё ещё утверждает, что скорость меняется «из-за Fixtures», но для этого PR это отдельная механика веса/физики, не причина и не исправление проблемы применения
MovementSpeedModifier. Либо исправьте применение скорости, либо замените комментарий на нейтральныйTODO:со ссылкой на задачу.Предлагаемая правка комментариев
- baseWalkSpeed: 1.5 # TO DO: добиться изменения его скорости до указанных значений, на данный момент при спавне ему задается значение 2.5 и меняется из-за Fixtures - baseSprintSpeed: 2.5 # TO DO: добиться изменения его скорости до указанных значений, на данный момент при спавне ему задается значение 4.5 и меняется из-за Fixtures + baseWalkSpeed: 1.5 # TODO: добиться применения указанной скорости при спавне. + baseSprintSpeed: 2.5 # TODO: добиться применения указанной скорости при спавне.Based on learnings:
FixturesforScp082is for weight/physics and is not the cause of nor the intended fix for theMovementSpeedModifierspawn-time speed override issue.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml` around lines 56 - 57, The TODO comments on baseWalkSpeed and baseSprintSpeed incorrectly blame Fixtures for spawn-time overrides; either remove the Fixtures reference and replace with a neutral TODO referencing the related issue/task, or fix the actual speed application in the MovementSpeedModifier code so baseWalkSpeed/baseSprintSpeed are applied correctly at spawn; update the comments in scp082.yml (keys baseWalkSpeed and baseSprintSpeed) to say e.g. "TODO: ensure MovementSpeedModifier correctly applies spawn-time speeds — see TASK-XXXXX" or implement the fix in the MovementSpeedModifier logic that currently overrides these values instead of blaming Fixtures.
🤖 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/Player/Scp/Main/scp082.yml`:
- Around line 37-38: SCP-082 currently inherits default Hunger and Thirst
settings which affect speed modifiers; explicitly configure the Hunger and
Thirst entries in scp082.yml by adding concrete threshold and baseDecayRate
values (e.g., set desired thresholds and baseDecayRate under the existing type:
Hunger and type: Thirst blocks) or add a clear comment line confirming that
using engine defaults is intentional; target the Hunger and Thirst entries so
the balance for SCP-082's speed modifiers is deterministic.
- Around line 56-57: The TODO comments on baseWalkSpeed and baseSprintSpeed
incorrectly blame Fixtures for spawn-time overrides; either remove the Fixtures
reference and replace with a neutral TODO referencing the related issue/task, or
fix the actual speed application in the MovementSpeedModifier code so
baseWalkSpeed/baseSprintSpeed are applied correctly at spawn; update the
comments in scp082.yml (keys baseWalkSpeed and baseSprintSpeed) to say e.g.
"TODO: ensure MovementSpeedModifier correctly applies spawn-time speeds — see
TASK-XXXXX" or implement the fix in the MovementSpeedModifier logic that
currently overrides these values instead of blaming Fixtures.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 4f27d562-a82b-41f1-855a-96f7b1a94189
📒 Files selected for processing (1)
Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml
|
Теперь скорость у них та, которая задана в прототипе |
|
@VASHKENT я же предложил более правильное решение, что ты сделал
|
|
А, я не заметил |
There was a problem hiding this comment.
♻️ Duplicate comments (1)
Content.Server/_Scp/Scp173/Scp173System.cs (1)
135-139:⚠️ Potential issue | 🟡 MinorПроверка
IsUnderCoverкорректно фиксит баг с трубами под плиткой, но расходится с апстримом поBlockInteractions.В
SharedSubFloorHideSystemвсе защитные хендлеры (OnGetExplosionResistance,OnAttackAttempt,OnInteractionAttempt) используютBlockInteractions && IsUnderCover. Здесь же скип только поIsUnderCover, из-за чего сущности сBlockInteractions = false(например, венты, которые по дизайну должны оставаться интерактивными сквозь плитку) тоже будут неуязвимы к способности 173. Для единообразия рекомендую дополнить условие флагомBlockInteractions.♻️ Предлагаемая правка
- // Проверяем, скрыта ли труба под плиткой - var isUnderCover = TryComp<SubFloorHideComponent>(ent, out var subFloor) && subFloor.IsUnderCover; - if (isUnderCover) - continue; // Не ломаем то, что под полом + // Не ломаем то, что скрыто под плиткой (поведение аналогично SharedSubFloorHideSystem) + if (TryComp<SubFloorHideComponent>(ent, out var subFloor) + && subFloor.BlockInteractions + && subFloor.IsUnderCover) + continue;🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Content.Server/_Scp/Scp173/Scp173System.cs` around lines 135 - 139, The current skip checks only SubFloorHideComponent.IsUnderCover, causing entities with BlockInteractions == false to be incorrectly protected; update the isUnderCover evaluation in Scp173System (the TryComp<SubFloorHideComponent>(ent, out var subFloor) check) to also require subFloor.BlockInteractions (i.e., only treat as covered when both IsUnderCover and BlockInteractions are true) so behavior matches SharedSubFloorHideSystem handlers.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@Content.Server/_Scp/Scp173/Scp173System.cs`:
- Around line 135-139: The current skip checks only
SubFloorHideComponent.IsUnderCover, causing entities with BlockInteractions ==
false to be incorrectly protected; update the isUnderCover evaluation in
Scp173System (the TryComp<SubFloorHideComponent>(ent, out var subFloor) check)
to also require subFloor.BlockInteractions (i.e., only treat as covered when
both IsUnderCover and BlockInteractions are true) so behavior matches
SharedSubFloorHideSystem handlers.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: c2b39e6f-2d53-442b-812c-e0f11a68448b
📒 Files selected for processing (3)
Content.Server/_Scp/Scp173/Scp173System.csResources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp049.ymlResources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml
💤 Files with no reviewable changes (1)
- Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp049.yml

Краткое описание | Short description
Исправил ситуацию, при которой способность "Осквернить" 173-го ломала трубы (атмос и мусорку) под полом через добавление проверки, накрыта ли сущность плиткой или нет.
Добавил откидывание сущностей от ударов 082 как у 096. Добавил возможность удара по области через ПКМ. Добавил возможность брать на руки других существ и носить так. Добавил Fixtures, после которого 082 обрел "вес", пониженную скорость передвижения и скорость поднятия существ. Добавлена механика голода и жажды для 082. Увеличено количество крови у 082 и скорость ее регенерации, так как при нескольких ударов ножом игрок за 082 получал все отрицательные эффекты (расплывчатость камеры, заикания), хотя урон для него несущественный.
Добавил возможность 049-му класть в свою сумку химические бутылочки.
Changelog
🆑 Vashkentya
Summary by CodeRabbit
Исправления ошибок
Новые функции