using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; namespace Content.Server.Atmos.Components; /// /// This is basically a reverse scrubber but using . /// [RegisterComponent, Access(typeof(AirFilterSystem))] public sealed partial class AirFilterComponent : Component { /// /// Gases that will be filtered out of internal air /// [DataField(required: true)] public HashSet Gases = new(); /// /// Gases that will be filtered out of internal air to maintain oxygen ratio. /// When oxygen is below , these gases will be filtered instead of . /// [DataField(required: true)] public HashSet OverflowGases = new(); /// /// Minimum oxygen fraction before it will start removing . /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float TargetOxygen = 0.21f; /// /// Gas to consider oxygen for and logic. /// /// /// For slime you might want to change this to be nitrogen, and overflowgases to remove oxygen. /// However theres still no real danger since standard atmos is mostly nitrogen so nitrogen tends to 100% anyway. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public Gas Oxygen = Gas.Oxygen; /// /// Fraction of target volume to transfer every second. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float TransferRate = 0.1f; }