Add new freezer atmos devices and fix freezer fixgridatmos marker (#34991)

This commit is contained in:
ArtisticRoomba
2025-02-11 23:32:18 -08:00
committed by GitHub
parent 5c98da40cd
commit 75727db3a3
4 changed files with 58 additions and 3 deletions

View File

@@ -61,9 +61,9 @@ public sealed partial class AtmosphereSystem
mixtures[5].Temperature = 5000f; mixtures[5].Temperature = 5000f;
// 6: (Walk-In) Freezer // 6: (Walk-In) Freezer
mixtures[6].AdjustMoles(Gas.Oxygen, Atmospherics.OxygenMolesStandard); mixtures[6].AdjustMoles(Gas.Oxygen, Atmospherics.OxygenMolesFreezer);
mixtures[6].AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard); mixtures[6].AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesFreezer);
mixtures[6].Temperature = 235f; // Little colder than an actual freezer but gives a grace period to get e.g. themomachines set up, should keep warm for a few door openings mixtures[6].Temperature = Atmospherics.FreezerTemp; // Little colder than an actual freezer but gives a grace period to get e.g. themomachines set up, should keep warm for a few door openings
// 7: Nitrogen (101kpa) for vox rooms // 7: Nitrogen (101kpa) for vox rooms
mixtures[7].AdjustMoles(Gas.Nitrogen, Atmospherics.MolesCellStandard); mixtures[7].AdjustMoles(Gas.Nitrogen, Atmospherics.MolesCellStandard);

View File

@@ -40,6 +40,12 @@ namespace Content.Shared.Atmos
/// </summary> /// </summary>
public const float T20C = 293.15f; public const float T20C = 293.15f;
/// <summary>
/// -38.15ºC in K.
/// This is used to initialize roundstart freezer rooms.
/// </summary>
public const float FreezerTemp = 235f;
/// <summary> /// <summary>
/// Do not allow any gas mixture temperatures to exceed this number. It is occasionally possible /// Do not allow any gas mixture temperatures to exceed this number. It is occasionally possible
/// to have very small heat capacity (e.g. room that was just unspaced) and for large amounts of /// to have very small heat capacity (e.g. room that was just unspaced) and for large amounts of
@@ -65,6 +71,12 @@ namespace Content.Shared.Atmos
/// </summary> /// </summary>
public const float MolesCellStandard = (OneAtmosphere * CellVolume / (T20C * R)); public const float MolesCellStandard = (OneAtmosphere * CellVolume / (T20C * R));
/// <summary>
/// Moles in a 2.5 m^3 cell at 101.325 kPa and -38.15ºC.
/// This is used in fix atmos freezer markers to ensure the air is at the correct atmospheric pressure while still being cold.
/// </summary>
public const float MolesCellFreezer = (OneAtmosphere * CellVolume / (FreezerTemp * R));
/// <summary> /// <summary>
/// Moles in a 2.5 m^3 cell at GasMinerDefaultMaxExternalPressure kPa and 20ºC /// Moles in a 2.5 m^3 cell at GasMinerDefaultMaxExternalPressure kPa and 20ºC
/// </summary> /// </summary>
@@ -81,6 +93,9 @@ namespace Content.Shared.Atmos
public const float OxygenMolesStandard = MolesCellStandard * OxygenStandard; public const float OxygenMolesStandard = MolesCellStandard * OxygenStandard;
public const float NitrogenMolesStandard = MolesCellStandard * NitrogenStandard; public const float NitrogenMolesStandard = MolesCellStandard * NitrogenStandard;
public const float OxygenMolesFreezer = MolesCellFreezer * OxygenStandard;
public const float NitrogenMolesFreezer = MolesCellFreezer * NitrogenStandard;
#endregion #endregion
/// <summary> /// <summary>

View File

@@ -114,3 +114,14 @@
threshold: 0.8 # danger below 80% nitrogen threshold: 0.8 # danger below 80% nitrogen
lowerWarnAround: !type:AlarmThresholdSetting lowerWarnAround: !type:AlarmThresholdSetting
threshold: 1.125 # warning below 90% threshold: 1.125 # warning below 90%
- type: alarmThreshold
id: freezerTemperature
upperBound: !type:AlarmThresholdSetting
threshold: 335.15 # T-38.15C (235) + 100
lowerBound: !type:AlarmThresholdSetting
threshold: 135.15 # T-38.15C (235) - 100
upperWarnAround: !type:AlarmThresholdSetting
threshold: 0.8
lowerWarnAround: !type:AlarmThresholdSetting
threshold: 1.1

View File

@@ -0,0 +1,29 @@
- type: entity
abstract: true
parent: AirSensorBase
id: AirSensorFreezerBase
suffix: Freezer Atmosphere
components:
- type: AtmosMonitor
temperatureThresholdId: freezerTemperature
- type: entity
parent: [AirSensorFreezerBase, AirSensor]
id: AirSensorFreezer
- type: entity
parent: [AirSensorFreezerBase, GasVentPump]
id: GasVentPumpFreezer
- type: entity
parent: [AirSensorFreezerBase, GasVentScrubber]
id: GasVentScrubberFreezer
# air alarm proto with auto: false to prevent the automatic switching of modes overriding the default values
- type: entity
parent: AirAlarm
id: AirAlarmFreezer
suffix: Freezer Atmosphere, auto mode disabled
components:
- type: AirAlarm
autoMode: false