diff --git a/Content.Server/Bed/BedSystem.cs b/Content.Server/Bed/BedSystem.cs index 45696d4985..6936fcfdbe 100644 --- a/Content.Server/Bed/BedSystem.cs +++ b/Content.Server/Bed/BedSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Body.Components; using Content.Shared.Bed; using Content.Server.Power.Components; using Content.Shared.Emag.Systems; +using Content.Shared.MobState.Components; namespace Content.Server.Bed { @@ -39,21 +40,24 @@ namespace Content.Server.Bed { base.Update(frameTime); - foreach (var healingComp in EntityQuery(true)) + foreach (var (_, bedComponent, strapComponent) in EntityQuery()) { - var bed = healingComp.Owner; - var bedComponent = EntityManager.GetComponent(bed); - var strapComponent = EntityManager.GetComponent(bed); - bedComponent.Accumulator += frameTime; if (bedComponent.Accumulator < bedComponent.HealTime) - { continue; - } + bedComponent.Accumulator -= bedComponent.HealTime; - foreach (EntityUid healedEntity in strapComponent.BuckledEntities) + + if (strapComponent.BuckledEntities.Count == 0) continue; + + var mobStateQuery = GetEntityQuery(); + + foreach (var healedEntity in strapComponent.BuckledEntities) { + if (mobStateQuery.TryGetComponent(healedEntity, out var state) && state.IsDead()) + continue; + _damageableSystem.TryChangeDamage(healedEntity, bedComponent.Damage, true); } } @@ -90,8 +94,8 @@ namespace Content.Server.Bed private void OnEmagged(EntityUid uid, StasisBedComponent component, GotEmaggedEvent args) { - ///Repeatable - ///Reset any metabolisms first so they receive the multiplier correctly + // Repeatable + // Reset any metabolisms first so they receive the multiplier correctly UpdateMetabolisms(uid, component, false); component.Multiplier = 1 / component.Multiplier; UpdateMetabolisms(uid, component, true);