From 477327f952c6efa3a7442d41c554ee52a3040c4d Mon Sep 17 00:00:00 2001
From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Date: Fri, 15 Dec 2023 17:02:21 -0500
Subject: [PATCH] Atmos scaling cvar changes (#22501)
---
.../EntitySystems/AtmosphereSystem.Gases.cs | 21 +++++++++++++++----
.../AtmosphereSystem.GridAtmosphere.cs | 9 ++++++++
.../Atmos/EntitySystems/AtmosphereSystem.cs | 7 ++++---
.../EntitySystems/HeatExchangerSystem.cs | 4 ++--
Content.Server/Atmos/IGasReactionEffect.cs | 10 ++++++++-
.../Unary/EntitySystems/GasCondenserSystem.cs | 2 +-
.../EntitySystems/GasThermoMachineSystem.cs | 2 +-
.../Atmos/Reactions/FrezonCoolantReaction.cs | 8 +++----
.../Reactions/FrezonProductionReaction.cs | 3 +--
.../Atmos/Reactions/GasReactionPrototype.cs | 11 ++++++++--
.../Reactions/MiasmicSubsumationReaction.cs | 2 +-
.../Atmos/Reactions/PlasmaFireReaction.cs | 10 +++++----
.../Atmos/Reactions/TritiumFireReaction.cs | 8 +++----
.../Atmos/Reactions/WaterVaporReaction.cs | 7 +++----
.../Power/Generation/Teg/TegSystem.cs | 4 ++--
.../Temperature/Systems/TemperatureSystem.cs | 8 +++----
16 files changed, 76 insertions(+), 40 deletions(-)
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs
index 6a63185811..4c3437e431 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs
@@ -43,11 +43,22 @@ namespace Content.Server.Atmos.EntitySystems
///
/// Calculates the heat capacity for a gas mixture.
///
- public float GetHeatCapacity(GasMixture mixture)
+ /// The mixture whose heat capacity should be calculated
+ /// Whether the internal heat capacity scaling should be applied. This should not be
+ /// used outside of atmospheric related heat transfer.
+ ///
+ public float GetHeatCapacity(GasMixture mixture, bool applyScaling)
{
- return GetHeatCapacityCalculation(mixture.Moles, mixture.Immutable);
+ var scale = GetHeatCapacityCalculation(mixture.Moles, mixture.Immutable);
+
+ // By default GetHeatCapacityCalculation() has the heat-scale divisor pre-applied.
+ // So if we want the un-scaled heat capacity, we have to multiply by the scale.
+ return applyScaling ? scale : scale * HeatScale;
}
+ private float GetHeatCapacity(GasMixture mixture)
+ => GetHeatCapacityCalculation(mixture.Moles, mixture.Immutable);
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private float GetHeatCapacityCalculation(float[] moles, bool space)
{
@@ -320,7 +331,9 @@ namespace Content.Server.Atmos.EntitySystems
var req = prototype.MinimumRequirements[i];
- if (!(mixture.GetMoles(i) < req)) continue;
+ if (!(mixture.GetMoles(i) < req))
+ continue;
+
doReaction = false;
break;
}
@@ -328,7 +341,7 @@ namespace Content.Server.Atmos.EntitySystems
if (!doReaction)
continue;
- reaction = prototype.React(mixture, holder, this);
+ reaction = prototype.React(mixture, holder, this, HeatScale);
if(reaction.HasFlag(ReactionResult.StopReactions))
break;
}
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs
index 036b64cad9..3eb38296f6 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.GridAtmosphere.cs
@@ -3,6 +3,7 @@ using Content.Server.Atmos.Components;
using Content.Server.Atmos.Reactions;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Components;
+using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Utility;
@@ -558,4 +559,12 @@ public sealed partial class AtmosphereSystem
InvalidateVisuals(uid, position, overlay);
}
}
+
+ public TileRef GetTileRef(TileAtmosphere tile)
+ {
+ if (!TryComp(tile.GridIndex, out MapGridComponent? grid))
+ return default;
+ _map.TryGetTileRef(tile.GridIndex, grid, tile.GridIndices, out var tileRef);
+ return tileRef;
+ }
}
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs
index 19855a71e5..07efdb4f67 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs
@@ -1,13 +1,12 @@
using Content.Server.Administration.Logs;
using Content.Server.Atmos.Components;
using Content.Server.Body.Systems;
-using Content.Server.Maps;
+using Content.Server.Fluids.EntitySystems;
using Content.Server.NodeContainer.EntitySystems;
using Content.Shared.Atmos.EntitySystems;
using Content.Shared.Maps;
using JetBrains.Annotations;
using Robust.Server.GameObjects;
-using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers;
using Robust.Shared.Map;
@@ -33,6 +32,8 @@ public sealed partial class AtmosphereSystem : SharedAtmosphereSystem
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly TransformSystem _transformSystem = default!;
[Dependency] private readonly TileSystem _tile = default!;
+ [Dependency] private readonly MapSystem _map = default!;
+ [Dependency] public readonly PuddleSystem Puddle = default!;
private const float ExposedUpdateDelay = 1f;
private float _exposedTimer = 0f;
@@ -80,7 +81,7 @@ public sealed partial class AtmosphereSystem : SharedAtmosphereSystem
return;
var query = EntityQueryEnumerator();
- while (query.MoveNext(out var uid, out var exposed, out var transform))
+ while (query.MoveNext(out var uid, out _, out var transform))
{
var air = GetContainingMixture(uid, transform:transform);
diff --git a/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs b/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs
index e8a7b089c6..2541d98a7e 100644
--- a/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs
+++ b/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs
@@ -83,7 +83,7 @@ public sealed class HeatExchangerSystem : EntitySystem
else
xfer = outlet.Air.Remove(-n);
- float CXfer = _atmosphereSystem.GetHeatCapacity(xfer);
+ float CXfer = _atmosphereSystem.GetHeatCapacity(xfer, true);
if (CXfer < Atmospherics.MinimumHeatCapacity)
return;
@@ -94,7 +94,7 @@ public sealed class HeatExchangerSystem : EntitySystem
float CEnv = 0f;
if (environment != null)
{
- CEnv = _atmosphereSystem.GetHeatCapacity(environment);
+ CEnv = _atmosphereSystem.GetHeatCapacity(environment, true);
hasEnv = CEnv >= Atmospherics.MinimumHeatCapacity && environment.TotalMoles > 0f;
if (hasEnv)
radTemp = environment.Temperature;
diff --git a/Content.Server/Atmos/IGasReactionEffect.cs b/Content.Server/Atmos/IGasReactionEffect.cs
index acaef2a071..bd229694bb 100644
--- a/Content.Server/Atmos/IGasReactionEffect.cs
+++ b/Content.Server/Atmos/IGasReactionEffect.cs
@@ -6,6 +6,14 @@ namespace Content.Server.Atmos
[ImplicitDataDefinitionForInheritors]
public partial interface IGasReactionEffect
{
- ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem);
+ ///
+ /// Process this reaction effect.
+ ///
+ /// The gas mixture to react
+ /// The container of this gas mixture
+ /// The atmosphere system
+ /// Scaling factor that should be applied to all heat input or outputs.
+ ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem,
+ float heatScale);
}
}
diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs
index 1b790b5cf0..8df1bb5365 100644
--- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs
+++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs
@@ -64,7 +64,7 @@ public sealed class GasCondenserSystem : EntitySystem
public float NumberOfMolesToConvert(ApcPowerReceiverComponent comp, GasMixture mix, float dt)
{
- var hc = _atmosphereSystem.GetHeatCapacity(mix);
+ var hc = _atmosphereSystem.GetHeatCapacity(mix, true);
var alpha = 0.8f; // tuned to give us 1-ish u/second of reagent conversion
// ignores the energy needed to cool down the solution to the condensation point, but that probably adds too much difficulty and so let's not simulate that
var energy = comp.Load * dt;
diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs
index 7f5f58fe4b..4140eb2a93 100644
--- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs
+++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs
@@ -80,7 +80,7 @@ namespace Content.Server.Atmos.Piping.Unary.EntitySystems
float dQ = thermoMachine.HeatCapacity * thermoMachine.Cp * args.dt;
// Clamps the heat transferred to not overshoot
- float Cin = _atmosphereSystem.GetHeatCapacity(inlet.Air);
+ float Cin = _atmosphereSystem.GetHeatCapacity(inlet.Air, true);
float dT = targetTemp - temp;
float dQLim = dT * Cin;
float scale = 1f;
diff --git a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs
index ddbd8a772b..051ee8202d 100644
--- a/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs
+++ b/Content.Server/Atmos/Reactions/FrezonCoolantReaction.cs
@@ -10,9 +10,9 @@ namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed partial class FrezonCoolantReaction : IGasReactionEffect
{
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
- var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
+ var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature;
var energyModifier = 1f;
@@ -45,11 +45,11 @@ public sealed partial class FrezonCoolantReaction : IGasReactionEffect
energyReleased = burnRate * Atmospherics.FrezonCoolEnergyReleased * energyModifier;
}
- energyReleased /= atmosphereSystem.HeatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise
+ energyReleased /= heatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise
if (energyReleased >= 0f)
return ReactionResult.NoReaction;
- var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
+ var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = (temperature * oldHeatCapacity + energyReleased) / newHeatCapacity;
diff --git a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
index 084d939e4e..4ffd9c2f5b 100644
--- a/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
+++ b/Content.Server/Atmos/Reactions/FrezonProductionReaction.cs
@@ -11,7 +11,7 @@ namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed partial class FrezonProductionReaction : IGasReactionEffect
{
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var initialN2 = mixture.GetMoles(Gas.Nitrogen);
var initialOxy = mixture.GetMoles(Gas.Oxygen);
@@ -28,7 +28,6 @@ public sealed partial class FrezonProductionReaction : IGasReactionEffect
// Amount of tritium & oxygen that are reacting
var tritBurned = Math.Min(oxyLimit, initialTrit);
var oxyBurned = tritBurned * Atmospherics.FrezonProductionTritRatio;
- var burnRatio = tritBurned / initialTrit;
var oxyConversion = oxyBurned / Atmospherics.FrezonProductionConversionRate;
var tritConversion = tritBurned / Atmospherics.FrezonProductionConversionRate;
diff --git a/Content.Server/Atmos/Reactions/GasReactionPrototype.cs b/Content.Server/Atmos/Reactions/GasReactionPrototype.cs
index 30f9b72f8d..0ee29de3bf 100644
--- a/Content.Server/Atmos/Reactions/GasReactionPrototype.cs
+++ b/Content.Server/Atmos/Reactions/GasReactionPrototype.cs
@@ -60,13 +60,20 @@ namespace Content.Server.Atmos.Reactions
///
[DataField("effects")] private List _effects = new();
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ ///
+ /// Process all reaction effects.
+ ///
+ /// The gas mixture to react
+ /// The container of this gas mixture
+ /// The atmosphere system
+ /// Scaling factor that should be applied to all heat input or outputs.
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var result = ReactionResult.NoReaction;
foreach (var effect in _effects)
{
- result |= effect.React(mixture, holder, atmosphereSystem);
+ result |= effect.React(mixture, holder, atmosphereSystem, heatScale);
}
return result;
diff --git a/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs b/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs
index b7dd5b7eb8..f9e8cbdf77 100644
--- a/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs
+++ b/Content.Server/Atmos/Reactions/MiasmicSubsumationReaction.cs
@@ -10,7 +10,7 @@ namespace Content.Server.Atmos.Reactions;
[UsedImplicitly]
public sealed partial class MiasmicSubsumationReaction : IGasReactionEffect
{
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var initialMiasma = mixture.GetMoles(Gas.Miasma);
var initialFrezon = mixture.GetMoles(Gas.Frezon);
diff --git a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs
index 22a8772e68..9adda3089c 100644
--- a/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs
+++ b/Content.Server/Atmos/Reactions/PlasmaFireReaction.cs
@@ -8,10 +8,10 @@ namespace Content.Server.Atmos.Reactions
[DataDefinition]
public sealed partial class PlasmaFireReaction : IGasReactionEffect
{
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var energyReleased = 0f;
- var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
+ var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature;
var location = holder as TileAtmosphere;
mixture.ReactionResults[GasReaction.Fire] = 0;
@@ -22,8 +22,10 @@ namespace Content.Server.Atmos.Reactions
if (temperature > Atmospherics.PlasmaUpperTemperature)
temperatureScale = 1f;
else
+ {
temperatureScale = (temperature - Atmospherics.PlasmaMinimumBurnTemperature) /
(Atmospherics.PlasmaUpperTemperature - Atmospherics.PlasmaMinimumBurnTemperature);
+ }
if (temperatureScale > 0)
{
@@ -56,14 +58,14 @@ namespace Content.Server.Atmos.Reactions
mixture.AdjustMoles(Gas.CarbonDioxide, plasmaBurnRate * (1.0f - supersaturation));
energyReleased += Atmospherics.FirePlasmaEnergyReleased * plasmaBurnRate;
- energyReleased /= atmosphereSystem.HeatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise
+ energyReleased /= heatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise
mixture.ReactionResults[GasReaction.Fire] += plasmaBurnRate * (1 + oxygenBurnRate);
}
}
if (energyReleased > 0)
{
- var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
+ var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = (temperature * oldHeatCapacity + energyReleased) / newHeatCapacity;
}
diff --git a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs
index d1459993bf..c52b431fd4 100644
--- a/Content.Server/Atmos/Reactions/TritiumFireReaction.cs
+++ b/Content.Server/Atmos/Reactions/TritiumFireReaction.cs
@@ -8,10 +8,10 @@ namespace Content.Server.Atmos.Reactions
[DataDefinition]
public sealed partial class TritiumFireReaction : IGasReactionEffect
{
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
var energyReleased = 0f;
- var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
+ var oldHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
var temperature = mixture.Temperature;
var location = holder as TileAtmosphere;
mixture.ReactionResults[GasReaction.Fire] = 0f;
@@ -47,10 +47,10 @@ namespace Content.Server.Atmos.Reactions
mixture.ReactionResults[GasReaction.Fire] += burnedFuel;
}
- energyReleased /= atmosphereSystem.HeatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise
+ energyReleased /= heatScale; // adjust energy to make sure speedup doesn't cause mega temperature rise
if (energyReleased > 0)
{
- var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture);
+ var newHeatCapacity = atmosphereSystem.GetHeatCapacity(mixture, true);
if (newHeatCapacity > Atmospherics.MinimumHeatCapacity)
mixture.Temperature = ((temperature * oldHeatCapacity + energyReleased) / newHeatCapacity);
}
diff --git a/Content.Server/Atmos/Reactions/WaterVaporReaction.cs b/Content.Server/Atmos/Reactions/WaterVaporReaction.cs
index 75eb0291df..8db8fdbd66 100644
--- a/Content.Server/Atmos/Reactions/WaterVaporReaction.cs
+++ b/Content.Server/Atmos/Reactions/WaterVaporReaction.cs
@@ -17,7 +17,7 @@ namespace Content.Server.Atmos.Reactions
[DataField("molesPerUnit")] public float MolesPerUnit { get; private set; } = 1;
- public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem)
+ public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder, AtmosphereSystem atmosphereSystem, float heatScale)
{
// If any of the prototypes is invalid, we do nothing.
if (string.IsNullOrEmpty(Reagent))
@@ -34,9 +34,8 @@ namespace Content.Server.Atmos.Reactions
// Remove the moles from the mixture...
mixture.AdjustMoles(GasId, -MolesPerUnit);
- var tileRef = tile.GridIndices.GetTileRef(tile.GridIndex);
- EntitySystem.Get()
- .TrySpillAt(tileRef, new Solution(Reagent, FixedPoint2.New(MolesPerUnit)), out _, sound: false);
+ var tileRef = atmosphereSystem.GetTileRef(tile);
+ atmosphereSystem.Puddle.TrySpillAt(tileRef, new Solution(Reagent, FixedPoint2.New(MolesPerUnit)), out _, sound: false);
return ReactionResult.Reacting;
}
diff --git a/Content.Server/Power/Generation/Teg/TegSystem.cs b/Content.Server/Power/Generation/Teg/TegSystem.cs
index 2be41f7c92..1fb844ac5b 100644
--- a/Content.Server/Power/Generation/Teg/TegSystem.cs
+++ b/Content.Server/Power/Generation/Teg/TegSystem.cs
@@ -120,8 +120,8 @@ public sealed class TegSystem : EntitySystem
var (airA, δpA) = GetCirculatorAirTransfer(inletA.Air, outletA.Air);
var (airB, δpB) = GetCirculatorAirTransfer(inletB.Air, outletB.Air);
- var cA = _atmosphere.GetHeatCapacity(airA);
- var cB = _atmosphere.GetHeatCapacity(airB);
+ var cA = _atmosphere.GetHeatCapacity(airA, true);
+ var cB = _atmosphere.GetHeatCapacity(airB, true);
// Shift ramp position based on demand and generation from previous tick.
var curRamp = component.RampPosition;
diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs
index 5de609d24b..2ab9ce74c6 100644
--- a/Content.Server/Temperature/Systems/TemperatureSystem.cs
+++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs
@@ -149,13 +149,11 @@ public sealed class TemperatureSystem : EntitySystem
if (transform.MapUid == null)
return;
- var position = _transform.GetGridTilePositionOrDefault((uid, transform));
var temperatureDelta = args.GasMixture.Temperature - temperature.CurrentTemperature;
- var tileHeatCapacity =
- _atmosphere.GetTileHeatCapacity(transform.GridUid, transform.MapUid.Value, position);
+ var airHeatCapacity = _atmosphere.GetHeatCapacity(args.GasMixture, false);
var heatCapacity = GetHeatCapacity(uid, temperature);
- var heat = temperatureDelta * (tileHeatCapacity * heatCapacity /
- (tileHeatCapacity + heatCapacity));
+ var heat = temperatureDelta * (airHeatCapacity * heatCapacity /
+ (airHeatCapacity + heatCapacity));
ChangeHeat(uid, heat * temperature.AtmosTemperatureTransferEfficiency, temperature: temperature);
}
--
2.51.2