fix ghost command damage when in crit (#22134)
* adjust kill damage on ghost command * tweaks * tweaks 2 argh * refactor, tweak
This commit is contained in:
@@ -7,9 +7,12 @@ using Content.Shared.CCVar;
|
|||||||
using Content.Shared.Damage;
|
using Content.Shared.Damage;
|
||||||
using Content.Shared.Damage.Prototypes;
|
using Content.Shared.Damage.Prototypes;
|
||||||
using Content.Shared.Database;
|
using Content.Shared.Database;
|
||||||
|
using Content.Shared.FixedPoint;
|
||||||
using Content.Shared.Ghost;
|
using Content.Shared.Ghost;
|
||||||
using Content.Shared.Mind;
|
using Content.Shared.Mind;
|
||||||
|
using Content.Shared.Mobs;
|
||||||
using Content.Shared.Mobs.Components;
|
using Content.Shared.Mobs.Components;
|
||||||
|
using Content.Shared.Mobs.Systems;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using Robust.Shared.Player;
|
using Robust.Shared.Player;
|
||||||
|
|
||||||
@@ -17,6 +20,8 @@ namespace Content.Server.GameTicking
|
|||||||
{
|
{
|
||||||
public sealed partial class GameTicker
|
public sealed partial class GameTicker
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
|
||||||
|
|
||||||
public const float PresetFailedCooldownIncrease = 30f;
|
public const float PresetFailedCooldownIncrease = 30f;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -254,7 +259,17 @@ namespace Content.Server.GameTicking
|
|||||||
|
|
||||||
//todo: what if they dont breathe lol
|
//todo: what if they dont breathe lol
|
||||||
//cry deeply
|
//cry deeply
|
||||||
DamageSpecifier damage = new(_prototypeManager.Index<DamageTypePrototype>("Asphyxiation"), 200);
|
|
||||||
|
FixedPoint2 dealtDamage = 200;
|
||||||
|
if (TryComp<DamageableComponent>(playerEntity, out var damageable)
|
||||||
|
&& TryComp<MobThresholdsComponent>(playerEntity, out var thresholds))
|
||||||
|
{
|
||||||
|
var playerDeadThreshold = _mobThresholdSystem.GetThresholdForState(playerEntity.Value, MobState.Dead, thresholds);
|
||||||
|
dealtDamage = playerDeadThreshold - damageable.TotalDamage;
|
||||||
|
}
|
||||||
|
|
||||||
|
DamageSpecifier damage = new(_prototypeManager.Index<DamageTypePrototype>("Asphyxiation"), dealtDamage);
|
||||||
|
|
||||||
_damageable.TryChangeDamage(playerEntity, damage, true);
|
_damageable.TryChangeDamage(playerEntity, damage, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user