CatStation/Content.Shared/Medical/Cryogenics/SharedInsideCryoPodSystem.cs
eoineoineoin f905f62250
Fix ejecting dead people from cryotube (#45730)
Handle deferred remove comp
2026-09-21 12:29:18 +00:00

32 lines
1.2 KiB
C#

using Content.Shared.Standing;
using Content.Shared.Temperature;
using Robust.Shared.Containers;
namespace Content.Shared.Medical.Cryogenics;
public abstract partial class SharedCryoPodSystem
{
public virtual void InitializeInsideCryoPod()
{
SubscribeLocalEvent<InsideCryoPodComponent, EntGotRemovedFromContainerMessage>(OnEntGotRemovedFromContainer);
SubscribeLocalEvent<InsideCryoPodComponent, DownAttemptEvent>(HandleDown);
SubscribeLocalEvent<InsideCryoPodComponent, BeforeHeatExchangeEvent>(OnBeforeHeatExchange);
}
private void OnEntGotRemovedFromContainer(Entity<InsideCryoPodComponent> entity, ref EntGotRemovedFromContainerMessage args)
{
RemCompDeferred<InsideCryoPodComponent>(entity);
}
// Must stand in the cryo pod
private void HandleDown(Entity<InsideCryoPodComponent> entity, ref DownAttemptEvent args)
{
if (entity.Comp.LifeStage < ComponentLifeStage.Stopping)
args.Cancel();
}
private void OnBeforeHeatExchange(Entity<InsideCryoPodComponent> entity, ref BeforeHeatExchangeEvent args)
{
args.HeatTransferModifier *= entity.Comp.ConductanceMod;
}
}