From: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Date: Mon, 4 Dec 2023 23:06:10 +0000 (+0100) Subject: fix ghost command damage when in crit (#22134) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=14929571d0d4706199fe18599cc1cd7ef8816b19;p=space-station-14.git fix ghost command damage when in crit (#22134) * adjust kill damage on ghost command * tweaks * tweaks 2 argh * refactor, tweak --- diff --git a/Content.Server/GameTicking/GameTicker.GamePreset.cs b/Content.Server/GameTicking/GameTicker.GamePreset.cs index 4ede91babc..5668625d37 100644 --- a/Content.Server/GameTicking/GameTicker.GamePreset.cs +++ b/Content.Server/GameTicking/GameTicker.GamePreset.cs @@ -7,9 +7,12 @@ using Content.Shared.CCVar; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; using Content.Shared.Database; +using Content.Shared.FixedPoint; using Content.Shared.Ghost; using Content.Shared.Mind; +using Content.Shared.Mobs; using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; using JetBrains.Annotations; using Robust.Shared.Player; @@ -17,6 +20,8 @@ namespace Content.Server.GameTicking { public sealed partial class GameTicker { + [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; + public const float PresetFailedCooldownIncrease = 30f; /// @@ -254,7 +259,17 @@ namespace Content.Server.GameTicking //todo: what if they dont breathe lol //cry deeply - DamageSpecifier damage = new(_prototypeManager.Index("Asphyxiation"), 200); + + FixedPoint2 dealtDamage = 200; + if (TryComp(playerEntity, out var damageable) + && TryComp(playerEntity, out var thresholds)) + { + var playerDeadThreshold = _mobThresholdSystem.GetThresholdForState(playerEntity.Value, MobState.Dead, thresholds); + dealtDamage = playerDeadThreshold - damageable.TotalDamage; + } + + DamageSpecifier damage = new(_prototypeManager.Index("Asphyxiation"), dealtDamage); + _damageable.TryChangeDamage(playerEntity, damage, true); } }