Add atmos stuff for mapping Vox environments (#31320)
This commit is contained in:
@@ -36,7 +36,7 @@ public sealed partial class AtmosphereSystem
|
||||
return;
|
||||
}
|
||||
|
||||
var mixtures = new GasMixture[7];
|
||||
var mixtures = new GasMixture[8];
|
||||
for (var i = 0; i < mixtures.Length; i++)
|
||||
mixtures[i] = new GasMixture(Atmospherics.CellVolume) { Temperature = Atmospherics.T20C };
|
||||
|
||||
@@ -65,6 +65,9 @@ public sealed partial class AtmosphereSystem
|
||||
mixtures[6].AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard);
|
||||
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
|
||||
|
||||
// 7: Nitrogen (101kpa) for vox rooms
|
||||
mixtures[7].AdjustMoles(Gas.Nitrogen, Atmospherics.MolesCellStandard);
|
||||
|
||||
foreach (var arg in args)
|
||||
{
|
||||
if (!NetEntity.TryParse(arg, out var netEntity) || !TryGetEntity(netEntity, out var euid))
|
||||
|
||||
@@ -11,8 +11,8 @@ namespace Content.Server.Atmos.Monitor.Components;
|
||||
[RegisterComponent]
|
||||
public sealed partial class AirAlarmComponent : Component
|
||||
{
|
||||
[ViewVariables] public AirAlarmMode CurrentMode { get; set; } = AirAlarmMode.Filtering;
|
||||
[ViewVariables] public bool AutoMode { get; set; } = true;
|
||||
[DataField] public AirAlarmMode CurrentMode { get; set; } = AirAlarmMode.Filtering;
|
||||
[DataField] public bool AutoMode { get; set; } = true;
|
||||
|
||||
// Remember to null this afterwards.
|
||||
[ViewVariables] public IAirAlarmModeUpdate? CurrentModeUpdater { get; set; }
|
||||
|
||||
@@ -5,31 +5,25 @@ namespace Content.Server.Atmos.Piping.Trinary.Components
|
||||
[RegisterComponent]
|
||||
public sealed partial class GasFilterComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("enabled")]
|
||||
public bool Enabled { get; set; } = true;
|
||||
[DataField]
|
||||
public bool Enabled = true;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("inlet")]
|
||||
public string InletName { get; set; } = "inlet";
|
||||
public string InletName = "inlet";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("filter")]
|
||||
public string FilterName { get; set; } = "filter";
|
||||
public string FilterName = "filter";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("outlet")]
|
||||
public string OutletName { get; set; } = "outlet";
|
||||
public string OutletName = "outlet";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public float TransferRate = Atmospherics.MaxTransferRate;
|
||||
|
||||
[DataField("transferRate")]
|
||||
public float TransferRate { get; set; } = Atmospherics.MaxTransferRate;
|
||||
[DataField]
|
||||
public float MaxTransferRate = Atmospherics.MaxTransferRate;
|
||||
|
||||
[DataField("maxTransferRate")]
|
||||
public float MaxTransferRate { get; set; } = Atmospherics.MaxTransferRate;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public Gas? FilteredGas { get; set; }
|
||||
[DataField]
|
||||
public Gas? FilteredGas;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,26 +9,25 @@ namespace Content.Server.Atmos.Piping.Unary.Components
|
||||
[Access(typeof(GasVentScrubberSystem))]
|
||||
public sealed partial class GasVentScrubberComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public bool Enabled { get; set; } = false;
|
||||
|
||||
[ViewVariables]
|
||||
[DataField]
|
||||
public bool IsDirty { get; set; } = false;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("outlet")]
|
||||
public string OutletName { get; set; } = "pipe";
|
||||
|
||||
[ViewVariables]
|
||||
public readonly HashSet<Gas> FilterGases = new(GasVentScrubberData.DefaultFilterGases);
|
||||
[DataField]
|
||||
public HashSet<Gas> FilterGases = new(GasVentScrubberData.DefaultFilterGases);
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public ScrubberPumpDirection PumpDirection { get; set; } = ScrubberPumpDirection.Scrubbing;
|
||||
|
||||
/// <summary>
|
||||
/// Target volume to transfer. If <see cref="WideNet"/> is enabled, actual transfer rate will be much higher.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public float TransferRate
|
||||
{
|
||||
get => _transferRate;
|
||||
@@ -37,18 +36,17 @@ namespace Content.Server.Atmos.Piping.Unary.Components
|
||||
|
||||
private float _transferRate = Atmospherics.MaxTransferRate;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("maxTransferRate")]
|
||||
[DataField]
|
||||
public float MaxTransferRate = Atmospherics.MaxTransferRate;
|
||||
|
||||
/// <summary>
|
||||
/// As pressure difference approaches this number, the effective volume rate may be smaller than <see
|
||||
/// cref="TransferRate"/>
|
||||
/// </summary>
|
||||
[DataField("maxPressure")]
|
||||
[DataField]
|
||||
public float MaxPressure = Atmospherics.MaxOutputPressure;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField]
|
||||
public bool WideNet { get; set; } = false;
|
||||
|
||||
public GasVentScrubberData ToAirAlarmData()
|
||||
|
||||
@@ -89,3 +89,17 @@
|
||||
id: danger # just any gas you don't want at all
|
||||
upperBound: !type:AlarmThresholdSetting
|
||||
threshold: 0.0001
|
||||
|
||||
- type: alarmThreshold
|
||||
id: voxOxygen
|
||||
upperBound: !type:AlarmThresholdSetting
|
||||
threshold: 0.02 # 2%
|
||||
upperWarnAround: !type:AlarmThresholdSetting
|
||||
threshold: 0.5 # 1%
|
||||
|
||||
- type: alarmThreshold
|
||||
id: voxNitrogen
|
||||
lowerBound: !type:AlarmThresholdSetting
|
||||
threshold: 0.8 # danger below 80% nitrogen
|
||||
lowerWarnAround: !type:AlarmThresholdSetting
|
||||
threshold: 1.125 # warning below 90%
|
||||
|
||||
@@ -99,3 +99,12 @@
|
||||
state: freeze
|
||||
- type: AtmosFixMarker
|
||||
mode: 6
|
||||
|
||||
- type: entity
|
||||
parent: AtmosFixNitrogenMarker
|
||||
id: AtmosFixVoxMarker
|
||||
suffix: Vox Atmosphere
|
||||
description: "Nitrogen @ 101 kPa, 20C"
|
||||
components:
|
||||
- type: AtmosFixMarker
|
||||
mode: 7
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: AirSensorBase
|
||||
id: AirSensorVoxBase
|
||||
suffix: Vox Atmosphere
|
||||
components:
|
||||
- type: AtmosMonitor
|
||||
gasThresholdPrototypes:
|
||||
Oxygen: voxOxygen
|
||||
Nitrogen: voxNitrogen
|
||||
CarbonDioxide: stationCO2
|
||||
Plasma: stationPlasma
|
||||
Tritium: stationTritium
|
||||
WaterVapor: stationWaterVapor
|
||||
Ammonia: stationAmmonia
|
||||
NitrousOxide: stationNO
|
||||
Frezon: danger
|
||||
|
||||
- type: entity
|
||||
parent: [AirSensorVoxBase, AirSensor]
|
||||
id: AirSensorVox
|
||||
|
||||
- type: entity
|
||||
parent: [AirSensorVoxBase, GasVentPump]
|
||||
id: GasVentPumpVox
|
||||
|
||||
- type: entity
|
||||
parent: [AirSensorVoxBase, GasVentScrubber]
|
||||
id: GasVentScrubberVox
|
||||
components:
|
||||
- type: GasVentScrubber
|
||||
wideNet: true # Air alarm with auto mode overrides filters with hardcoded defaults so default to widenet
|
||||
filterGases:
|
||||
- Oxygen # filter out oxygen as well as regular harmful gases
|
||||
- CarbonDioxide
|
||||
- Plasma
|
||||
- Tritium
|
||||
- WaterVapor
|
||||
- Ammonia
|
||||
- NitrousOxide
|
||||
- Frezon
|
||||
|
||||
# use this to prevent overriding filters with hardcoded defaults
|
||||
- type: entity
|
||||
parent: AirAlarm
|
||||
id: AirAlarmVox
|
||||
suffix: Vox Atmosphere, auto mode disabled
|
||||
components:
|
||||
- type: AirAlarm
|
||||
autoMode: false
|
||||
Reference in New Issue
Block a user