Add atmos time compression (#21954)

Add atmos.speedup which is effectively a atmos-only time compression
CVar. This adjusts heat capacities and transfer rates to effectively
globally speed up the time constants of atmos.

This allows faster response to heating/cooling changes and faster
cleanups (by buffing scrubbers, pumps, and everything else) that is
tunable through one global time compression CVar.

It also achieves this without any thermodynamic unsoundness.
This commit is contained in:
Kevin Zheng
2023-12-11 15:59:47 -08:00
committed by GitHub
parent 5d8d668a71
commit a2ed25ad03
16 changed files with 35 additions and 12 deletions

View File

@@ -45,6 +45,7 @@ public sealed partial class FrezonCoolantReaction : IGasReactionEffect
energyReleased = burnRate * Atmospherics.FrezonCoolEnergyReleased * energyModifier;
}
energyReleased /= atmosphereSystem.Speedup; // adjust energy to make sure speedup doesn't cause mega temperature rise
if (energyReleased >= 0f)
return ReactionResult.NoReaction;

View File

@@ -56,6 +56,7 @@ namespace Content.Server.Atmos.Reactions
mixture.AdjustMoles(Gas.CarbonDioxide, plasmaBurnRate * (1.0f - supersaturation));
energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate;
energyReleased /= atmosphereSystem.Speedup; // adjust energy to make sure speedup doesn't cause mega temperature rise
mixture.ReactionResults[GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate);
}
}

View File

@@ -47,6 +47,7 @@ namespace Content.Server.Atmos.Reactions
mixture.ReactionResults[GasReaction.Fire] += burnedFuel;
}
energyReleased /= atmosphereSystem.Speedup; // adjust energy to make sure speedup doesn't cause mega temperature rise
if (energyReleased > 0)
{
var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);