-
Notifications
You must be signed in to change notification settings - Fork 154
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Balance] Surgery Balance Tweaks #941
Changes from all commits
bfa0ccd
cc9c9d9
4004b39
c0f7fda
3eec66d
3894921
51bd8ca
709ec68
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ | |
using Content.Shared.Access.Components; | ||
using Content.Shared.Access.Systems; | ||
using Content.Shared.Administration.Logs; | ||
using Content.Shared.Backmen.Targeting; | ||
using Content.Shared.Damage; | ||
using Content.Shared.Database; | ||
using Content.Shared.Doors.Components; | ||
|
@@ -542,7 +543,7 @@ public void Crush(EntityUid uid, DoorComponent? door = null, PhysicsComponent? p | |
{ | ||
door.CurrentlyCrushing.Add(entity); | ||
if (door.CrushDamage != null) | ||
_damageableSystem.TryChangeDamage(entity, door.CrushDamage, origin: uid); | ||
_damageableSystem.TryChangeDamage(entity, door.CrushDamage, origin: uid, targetPart: TargetBodyPart.BodyMiddle); // backmen: surgery | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Использование BodyMiddle для урона от дверей некорректно Анализ кода показывает, что TargetBodyPart.BodyMiddle является составным флагом, включающим Torso | Groin | FullArms. Для урона от закрывающейся двери логичнее использовать более специфичную часть тела - Torso, так как:
🔗 Analysis chainПодтвердите корректность таргетинга на BodyMiddle Изменение корректно указывает часть тела для применения урона при закрытии двери. Убедитесь, что BodyMiddle является подходящей целью для всех типов существ, которые могут быть раздавлены дверью. 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Проверка использования TargetBodyPart.BodyMiddle в других системах
# Поиск других случаев использования BodyMiddle для проверки согласованности
ast-grep --pattern 'TargetBodyPart.BodyMiddle'
# Поиск определения перечисления для проверки всех доступных частей тела
rg -A 10 'enum TargetBodyPart'
Length of output: 248 Script: #!/bin/bash
# Поиск определения TargetBodyPart с другим шаблоном
rg "enum\s+TargetBodyPart" -A 10
# Поиск использования TryChangeDamage для анализа других случаев таргетинга
ast-grep --pattern 'TryChangeDamage($$$, $$$, targetPart: $_)'
# Поиск файлов с определениями систем урона
fd "Damage.*System\.cs$"
Length of output: 2506 Script: #!/bin/bash
# Поиск определения BodyMiddle в перечислении
rg "BodyMiddle" Content.Shared/Backmen/Targeting/TargetBodyPart.cs
# Поиск других случаев использования TryChangeDamage с таргетингом на конкретные части тела
rg -B 2 -A 2 "TryChangeDamage.*targetPart:"
# Поиск документации или комментариев по использованию частей тела
rg -l "body.*part|TargetBodyPart" Content.Shared/Damage/
Length of output: 5819 |
||
|
||
_stunSystem.TryParalyze(entity, stunTime, true); | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,13 +30,13 @@ | |
- trigger: | ||
!type:DamageTypeTrigger | ||
damageType: Blunt | ||
damage: 75 | ||
damage: 120 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Обнаружены различия в конфигурации урона для разных типов существ Анализ показывает, что в других файлах сохраняется различие между Blunt и Slash уроном:
Рекомендуется пересмотреть решение об уравнивании порогов урона, так как это может нарушить существующий баланс между различными типами существ и оружия. 🔗 Analysis chainПроверьте баланс между типами урона Увеличение порогов урона соответствует цели сделать части тела более устойчивыми к разрушению. Однако установка одинакового значения (120) для обоих типов урона (Blunt и Slash) может потребовать дополнительного рассмотрения:
Давайте проверим использование этих типов урона в других файлах: Also applies to: 39-39 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Поиск других конфигураций с Blunt и Slash уроном для сравнения
rg -A 2 "damageType: (Blunt|Slash)" --type yaml
Length of output: 3188 |
||
behaviors: | ||
- !type:GibPartBehavior { } | ||
- trigger: | ||
!type:DamageTypeTrigger | ||
damageType: Slash | ||
damage: 100 | ||
damage: 120 | ||
behaviors: | ||
- !type:GibPartBehavior { } | ||
- trigger: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,13 +28,13 @@ | |
- trigger: | ||
!type:DamageTypeTrigger | ||
damageType: Blunt | ||
damage: 110 | ||
damage: 120 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Обнаружены несогласованные пороги урона в прототипах тел Анализ показал несоответствие порогов урона между различными прототипами:
Рекомендуется:
🔗 Analysis chainУнификация порогов урона для различных типов повреждений Выравнивание порогов урона для ударного (blunt) и режущего (slash) типов до 120 делает механику более последовательной. Это соответствует цели PR - усложнить полное уничтожение частей тела. Also applies to: 37-37 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Проверка согласованности порогов урона в других файлах прототипов
rg -g "*.yml" "damageType: (Blunt|Slash)" -A 1
Length of output: 3435 |
||
behaviors: | ||
- !type:GibPartBehavior { } | ||
- trigger: | ||
!type:DamageTypeTrigger | ||
damageType: Slash | ||
damage: 150 | ||
damage: 120 | ||
behaviors: | ||
- !type:GibPartBehavior { } | ||
- trigger: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
Требуется обновление логики урона в системе лазания
В системе лазания обнаружены два места, требующие внимания:
OnGlassClimbed
для урона по столу (component.TableDamage
) не указана целевая часть тела, что не соответствует новой логике спецификации уронаFleshHeartSystem.cs
урон типа "Slash" также применяется без указания целевой части телаРекомендуется:
OnGlassClimbed
FleshHeartSystem
🔗 Analysis chain
Корректное указание целевой части тела при получении урона!
Добавление параметра
targetPart: TargetBodyPart.FullLegs
логично, так как при падении через стеклянный стол урон должен приходиться именно на ноги.Давайте проверим другие методы нанесения урона при лазании:
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 500
Script:
Length of output: 2657
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Где находится OnGlassClimbed метод? В каком классе. И
FleshHeartSystem.cs
какой конкретно метод не указывает целевую часть телаThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@TokenStyle: Метод
OnGlassClimbed
находится в классеClimbSystem
в файлеContent.Shared/Climbing/Systems/ClimbSystem.cs
.В файле
Content.Shared/Backmen/Corvax/HeartAttack/FleshHeartSystem.cs
, методOnHeartAttack
вызываетTryChangeDamage
без указания параметраtargetPart
.🔗 Analysis chain
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 370
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai Где находится OnGlassClimbed метод? В каком классе. И FleshHeartSystem.cs какой конкретно метод не указывает целевую часть тела?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@TokenStyle:
Метод
OnGlassClimbed
находится в классеClimbSystem
, который расположен в файлеContent.Shared/Climbing/Systems/ClimbSystem.cs
. Этот метод обрабатывает событие лазания на стеклянный стол. Вот сигнатура метода:В файле
Content.Shared/Backmen/Corvax/HeartAttack/FleshHeartSystem.cs
методOnHeartAttack
не указывает целевую часть тела при вызовеTryChangeDamage
. Вот соответствующий участок кода:Рекомендуется добавить параметр
targetPart
в вызовTryChangeDamage
, чтобы урон корректно применялся к целевой части тела согласно новой логике спецификации урона.Надеюсь, это проясняет вопрос!