Conversation
WalkthroughPR переводит обработку видимости псионических эффектов на события GetVisMask, мигрирует использование статус-эффектов на новый API (TryAddStatusEffectDuration / TryUpdateStatusEffectDuration), уточняет проверки жизненного цикла компонентов, убирает Taser из нескольких локеров и добавляет прототипы пси-мины и нового статус-эффекта. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant MetapsionicPowerSystem
participant StatusEffectsSystem
participant VisibilitySystem
participant PsionicInvisibilitySystem
participant Observers
User->>MetapsionicPowerSystem: Использует Metapsionic Pulse (OnPowerUsed)
MetapsionicPowerSystem->>StatusEffectsSystem: TryAddStatusEffectDuration(StatusEffectPsionicAllSee, duration)
StatusEffectsSystem-->>MetapsionicPowerSystem: Подтверждение/неудача
Note over MetapsionicPowerSystem,VisibilitySystem: Добавление/обновление статуса инициирует перерасчёт видимости
VisibilitySystem->>PsionicInvisibilitySystem: GetVisMaskEvent(ent)
PsionicInvisibilitySystem-->>VisibilitySystem: Пометить PsionicInvisibility / DarkSwapInvisibility (с учётом LifeStage и изоляции)
VisibilitySystem->>Observers: Обновлённая информация о видимости сущностей
Оценка сложности рецензирования🎯 4 (Complex) | ⏱️ ~45 минут Стихотворение
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Content.Server/Backmen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs (1)
73-108: Логирование использования способности происходит только при неудаче.
LogPowerUsedвызывается только когда метапсионический импульс не обнаруживает сущностей (строка 105). При успешном обнаружении (строки 87-89, 99-101) способность фактически используется (статус-эффект применяется на строке 78), но логирование пропускается.Это несоответствует паттернам в других системах:
MassSleepPowerSystem: логирует при успехеNoosphericZapPowerSystem: логирует безусловноPsionicInvisibilityPowerSystem: логирует после применения🔧 Предлагаемое исправление
if (entity.Owner != uid && !_insulationQuery.HasComp(entity) //&& !(HasComp<ClothingGrantPsionicPowerComponent>(entity) && Transform(entity).ParentUid == uid) ) { _popups.PopupEntity(Loc.GetString("metapsionic-pulse-success"), uid, uid, PopupType.LargeCaution); + _psionics.LogPowerUsed(uid, "metapsionic pulse", 2, 4); args.Handled = true; return; } } foreach (var entity in _lookup.GetEntitiesInRange<ShadowkinDarkSwappedComponent>(coord, component.Range)) { if (entity.Owner != uid && !_insulationQuery.HasComp(entity) //&& !(HasComp<ClothingGrantPsionicPowerComponent>(entity) && Transform(entity).ParentUid == uid) ) { _popups.PopupEntity(Loc.GetString("metapsionic-pulse-shadowkin-success"), uid, uid, PopupType.LargeCaution); + _psionics.LogPowerUsed(uid, "metapsionic pulse", 2, 4); args.Handled = true; return; } }
🧹 Nitpick comments (1)
Content.Server/Backmen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs (1)
78-78: Рассмотрите проверку результатаTryAddStatusEffectDuration.Возвращаемое значение
TryAddStatusEffectDurationигнорируется. Если применение статус-эффекта не удастся (например, сущность не поддерживает статус-эффекты), способность всё равно продолжит выполнение.♻️ Опциональное улучшение
- _statusEffects.TryAddStatusEffectDuration(uid, MetapsionicVisibleStatus, TimeSpan.FromSeconds(10)); + if (!_statusEffects.TryAddStatusEffectDuration(uid, MetapsionicVisibleStatus, TimeSpan.FromSeconds(10))) + return;
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
Content.Server/Backmen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs (1)
81-107: Логирование использования способности вызывается только при неудаче, что противоречит паттерну других способностей.В
MetapsionicPowerSystem_psionics.LogPowerUsed()вызывается только при отсутствии целей (строка 105), тогда как во всех остальных псионических способностях (Telegnosis, Pyrokinesis, Psychokinesis, Psionic Regeneration, Psionic Invisibility, Noospheric Zap, Dispel, Mind Swap) логирование происходит при успешном использовании способности. Требуется переместить вызовLogPowerUsed()в блок успешного обнаружения целей (строки 88-89 и/или 100-101) или в начало метода, чтобы логировать все попытки использования способности.
🧹 Nitpick comments (1)
Content.Server/Backmen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs (1)
71-78: Рассмотрите вынос длительности эффекта в компонент.Длительность статус-эффекта (10 секунд) захардкожена. Для гибкости настройки рекомендуется перенести это значение в
MetapsionicPowerComponent.♻️ Предлагаемое изменение
В
MetapsionicPowerComponentдобавить:[DataField] public TimeSpan VisibleDuration = TimeSpan.FromSeconds(10);В
OnPowerUsed:-_statusEffects.TryAddStatusEffectDuration(uid, MetapsionicVisibleStatus, TimeSpan.FromSeconds(10)); +_statusEffects.TryAddStatusEffectDuration(uid, MetapsionicVisibleStatus, component.VisibleDuration);
Summary by CodeRabbit
Примечания к выпуску
Исправления ошибок
Изменения баланса
Новые функции
✏️ Tip: You can customize this high-level summary in your review settings.