using Content.Shared._Offbrand.Wounds; using Content.Shared.Body.Events; using Content.Shared.Body.Systems; using Content.Shared.Medical.Cryogenics; using Content.Shared.Temperature.Components; using Content.Shared.Temperature; namespace Content.Server._Offbrand.Wounds; public sealed class CryostasisFactorSystem : EntitySystem { [Dependency] protected readonly SharedMetabolizerSystem _metabolizer = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnTemperatureChange); SubscribeLocalEvent(OnGetMetabolicMultiplier); } private void OnTemperatureChange(Entity ent, ref OnTemperatureChangeEvent args) { _metabolizer.UpdateMetabolicMultiplier(ent); } private void OnGetMetabolicMultiplier(Entity ent, ref GetMetabolicMultiplierEvent args) { if (!TryComp(ent, out var temp)) return; args.Multiplier *= Math.Max(ent.Comp.TemperatureCoefficient * temp.CurrentTemperature + ent.Comp.TemperatureConstant, 1); } }