Skip to content

Мелочи по 173, 049 и 082#959

Open
VASHKENT wants to merge 8 commits intospace-sunrise:masterfrom
VASHKENT:mlya-nado-chtoto-delat
Open

Мелочи по 173, 049 и 082#959
VASHKENT wants to merge 8 commits intospace-sunrise:masterfrom
VASHKENT:mlya-nado-chtoto-delat

Conversation

@VASHKENT
Copy link
Copy Markdown
Contributor

@VASHKENT VASHKENT commented Apr 17, 2026

Краткое описание | Short description

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

Changelog

🆑 Vashkentya

  • add: Удары SCP-082 теперь откидывают цель. Добавлена возможность удара по области на ПКМ.
  • fix: SCP-082 теперь передвигается со соответствующей скоростью.
  • add: SCP-082 обрел голод и жажду.
  • add: SCP-049 теперь может складывать в свою сумку химические бутылочки.
  • fix: Исправлено ломание труб способностью SCP-173, которые находятся под плиткой.

Summary by CodeRabbit

  • Исправления ошибок

    • Урон от конструкций больше не применяется к объектам, скрытым под полом
  • Новые функции

    • Рюкзак SCP-049 теперь принимает бутылки
    • SCP-082 получил голод и жажду
    • SCP-082 может переносить предметы и его ближние атаки отбрасывают цели при попадании
    • У SCP-082 улучшена система кровообращения с периодическим восстановлением крови

@VASHKENT VASHKENT requested a review from ThereDrD0 as a code owner April 17, 2026 17:59
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 17, 2026

📝 Walkthrough

Walkthrough

Scp173System теперь ищет только статические сущности в радиусе 4f и при обработке пропускает цели с компонентом SubFloorHideComponent и IsUnderCover == true, предотвращая применение структурного урона и сопутствующих эффектов. Прототипы: рюкзак SCP‑049 принимает Bottle; SCP‑082 получил новые компоненты и правки оружия/фикстур; у SCP‑049/082 убран requiredLegs.

Changes

Cohort / File(s) Summary
Scp173 система (C#)
Content.Server/_Scp/Scp173/Scp173System.cs
Запрос сущностей в 4f теперь использует LookupFlags.Static; при обработке добавлена проверка SubFloorHideComponent.IsUnderCover — такие цели пропускаются, что предотвращает структурный урон и связанные побочные эффекты.
Прототип — рюкзак (YAML)
Resources/Prototypes/_Scp/Entities/Clothing/Bags/scp049.yml
В ClothingBackpackScp049 в components[type=Storage].whitelist добавлен тег Bottle, разрешающий хранение бутылок.
Прототип — SCP‑082 (YAML)
Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml
Удалено Body.requiredLegs; добавлены компоненты Hunger, Thirst, MeleeThrowOnHit (speed: 2, distance: 0.25), Bloodstream (bloodRefreshAmount: 5, референт крови с Quantity: 1500) и Fixtures (AABB); в скрытом MeleeWeapon изменены/добавлены поля altDisarm: false, animation: WeaponArcSmash, wideAnimation: WeaponArcSmash.
Прототип — SCP‑049 (YAML)
Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp049.yml
Удалено поле Body.requiredLegs: 2 из прототипа сущности.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 минут

Poem

🐇 Я — кролик в коде, пробежал под плитой,
Там цель скрыта — удар пропал, как в сновиде.
В рюкзак бутылка тихо влезла,
У SCP‑082 кровь и жажда проснулась.
Пусть патч прыгает — сборка празднует зарю.


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 warning, 2 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive Название на русском языке 'Мелочи по 173, 049 и 082' является очень обобщённым и неинформативным. Хотя оно формально указывает на затронутые SCP-сущности, слово 'Мелочи' (мелкие изменения/мелочи) не раскрывает суть изменений и не даёт ясного представления о содержимом PR. Замените название на более описательное и конкретное, например: 'SCP-173, SCP-049 и SCP-082: исправления и улучшения механик' или укажите основные изменения, такие как 'Добавить откид цели для SCP-082, исправить ломание труб SCP-173'.
Ss14 C# Rules ❓ Inconclusive Выполнение проверки SS14 C# rules невозможно в полном объеме, так как обязательные файлы правил отсутствуют в репозитории. Добавьте недостающие файлы правил в директорию .agent/rules/ или обновите инструкции проверки для отражения существующих правил.
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Ss14 Bridge Sync ✅ Passed Проверка SS14 bridge sync не применима, так как в PR отсутствуют изменения canonical rules/skills в .agent/ директориях.
Ss14 Yaml/Ftl Rules ✅ Passed Все измененные YAML файлы полностью соответствуют требованиям SS14 YAML/FTL правил: корректный синтаксис компонентов, IDs в CamelCase, fork-specific сущности в папке _Scp, отсутствие русского текста, правильные FTL ключи.
Ss14 Prototype ↔ Ftl Parity ✅ Passed PR содержит только механические изменения прототипов без модификации идентификаторов и player-facing полей. Все существующие FTL записи остаются актуальными.
Ss14 Prediction Safety ✅ Passed Проверка безопасности прогнозирования SS14 не применима. PR изменяет только серверный код и прототипы YAML, без изменений Content.Shared, предсказываемой обработки ввода или общего игрового кода.
✨ 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 and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 4fc185b and 9e808d5.

📒 Files selected for processing (3)
  • Content.Server/_Scp/Scp173/Scp173System.cs
  • Resources/Prototypes/_Scp/Entities/Clothing/Bags/scp049.yml
  • Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml

Comment thread Content.Server/_Scp/Scp173/Scp173System.cs
Comment thread Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml
Comment thread Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml Outdated
Comment thread Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ 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: Fixtures for Scp082 is for weight/physics and is not the cause of nor the intended fix for the MovementSpeedModifier spawn-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

📥 Commits

Reviewing files that changed from the base of the PR and between 74a9aef and 5be0288.

📒 Files selected for processing (1)
  • Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp082.yml

@VASHKENT
Copy link
Copy Markdown
Contributor Author

Теперь скорость у них та, которая задана в прототипе

@VASHKENT VASHKENT requested a review from ThereDrD0 April 18, 2026 13:31
@ThereDrD0
Copy link
Copy Markdown
Collaborator

@VASHKENT я же предложил более правильное решение, что ты сделал

image

@VASHKENT
Copy link
Copy Markdown
Contributor Author

А, я не заметил

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ 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

📥 Commits

Reviewing files that changed from the base of the PR and between 5be0288 and 88b69cc.

📒 Files selected for processing (3)
  • Content.Server/_Scp/Scp173/Scp173System.cs
  • Resources/Prototypes/_Scp/Entities/Mobs/Player/Scp/Main/scp049.yml
  • Resources/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

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants