From: Kevin Zheng Date: Sat, 9 Sep 2023 18:48:34 +0000 (-0800) Subject: Add method for real atmos tick rate (#19861) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=1be963cfa58e4c5e564bafcabbcd932ccfcefb62;p=space-station-14.git Add method for real atmos tick rate (#19861) Atmos takes a variable number of atmos sub-ticks to complete processing depending on the configuration options. --- diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs index ea25874db7..38b66a73fa 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs @@ -327,6 +327,23 @@ namespace Content.Server.Atmos.EntitySystems return true; } + /** + * UpdateProcessing() takes a different number of calls to go through all of atmos + * processing depending on what options are enabled. This returns the actual effective time + * between atmos updates that devices actually experience. + */ + public float RealAtmosTime() + { + int num = (int)AtmosphereProcessingState.NumStates; + if (!MonstermosEqualization) + num--; + if (!ExcitedGroups) + num--; + if (!Superconduction) + num--; + return num * AtmosTime; + } + private bool ProcessAtmosDevices(GridAtmosphereComponent atmosphere) { if(!atmosphere.ProcessingPaused) @@ -336,7 +353,7 @@ namespace Content.Server.Atmos.EntitySystems var number = 0; while (atmosphere.CurrentRunAtmosDevices.TryDequeue(out var device)) { - RaiseLocalEvent(device.Owner, new AtmosDeviceUpdateEvent(AtmosTime * (int)AtmosphereProcessingState.NumStates), false); + RaiseLocalEvent(device.Owner, new AtmosDeviceUpdateEvent(RealAtmosTime()), false); device.LastProcess = time; if (number++ < LagCheckIterations) continue;