diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index 12391d724f..d3374bd775 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -214,6 +214,7 @@ public sealed class DefibrillatorSystem : EntitySystem ICommonSession? session = null; + var dead = true; if (_rotting.IsRotten(target)) { _chatManager.TrySendInGameICMessage(uid, Loc.GetString("defibrillator-rotten"), @@ -223,9 +224,16 @@ public sealed class DefibrillatorSystem : EntitySystem { if (_mobState.IsDead(target, mob)) _damageable.TryChangeDamage(target, component.ZapHeal, true, origin: uid); - _mobState.ChangeMobState(target, MobState.Critical, mob, uid); - if (_mind.TryGetMind(target, out var mindId, out var mind) && + if (_mobThreshold.TryGetThresholdForState(target, MobState.Dead, out var threshold) && + TryComp(target, out var damageableComponent) && + damageableComponent.TotalDamage < threshold) + { + _mobState.ChangeMobState(target, MobState.Critical, mob, uid); + dead = false; + } + + if (_mind.TryGetMind(target, out _, out var mind) && mind.Session is { } playerSession) { session = playerSession; @@ -242,7 +250,7 @@ public sealed class DefibrillatorSystem : EntitySystem } } - var sound = _mobState.IsDead(target, mob) || session == null + var sound = dead || session == null ? component.FailureSound : component.SuccessSound; _audio.PlayPvs(sound, uid); diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 244631509c..d22ba66570 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -27,7 +27,6 @@ - FootstepSound - DoorBumpOpener - SpiderCraft - - type: Perishable - type: Butcherable butcheringType: Spike spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 71a60e9aa4..1ce48ce140 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -284,6 +284,7 @@ shiveringHeatRegulation: 2000 normalBodyTemperature: 310.15 thermalRegulationTemperatureThreshold: 25 + - type: Perishable - type: Butcherable butcheringType: Spike # TODO human. spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index 6ca493aedd..2951f5b620 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -28,7 +28,6 @@ Brute: sprite: Mobs/Effects/brute_damage.rsi color: "#75b1f0" - - type: Perishable - type: Butcherable butcheringType: Spike spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 70e75e5483..ff94c70fe0 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -28,7 +28,6 @@ - type: Body prototype: Dwarf requiredLegs: 2 - - type: Perishable - type: Butcherable butcheringType: Spike spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 990097c396..51450cf3ff 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -14,7 +14,6 @@ sprite: Mobs/Species/Human/parts.rsi state: full - type: Thirst - - type: Perishable - type: Butcherable butcheringType: Spike spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 5dc1fba979..32105112f6 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -28,7 +28,6 @@ speechVerb: Moth - type: TypingIndicator proto: moth - - type: Perishable - type: Butcherable butcheringType: Spike spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index b01f838119..fea2513256 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -21,7 +21,6 @@ - type: Body prototype: Reptilian requiredLegs: 2 - - type: Perishable - type: Butcherable butcheringType: Spike spawned: diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index c1ee7744c8..e17b2f7080 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -97,7 +97,6 @@ - type: Inventory speciesId: vox - type: InventorySlots - - type: Perishable - type: Butcherable butcheringType: Spike spawned: