using Content.Shared.Atmos; using Content.Shared.Construction.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Atmos.Portable { [RegisterComponent] public sealed partial class PortableScrubberComponent : Component { /// /// The air inside this machine. /// [DataField("gasMixture"), ViewVariables(VVAccess.ReadWrite)] public GasMixture Air { get; private set; } = new(); [DataField("port"), ViewVariables(VVAccess.ReadWrite)] public string PortName { get; set; } = "port"; /// /// Which gases this machine will scrub out. /// Unlike fixed scrubbers controlled by an air alarm, /// this can't be changed in game. /// [DataField("filterGases")] public HashSet FilterGases = new() { Gas.CarbonDioxide, Gas.Plasma, Gas.Tritium, Gas.WaterVapor, Gas.Miasma, Gas.NitrousOxide, Gas.Frezon }; [ViewVariables(VVAccess.ReadWrite)] public bool Enabled = true; /// /// Maximum internal pressure before it refuses to take more. /// [ViewVariables(VVAccess.ReadWrite)] public float MaxPressure = 2500; /// /// The base amount of maximum internal pressure /// [DataField("baseMaxPressure")] public float BaseMaxPressure = 2500; /// /// The machine part that modifies the maximum internal pressure /// [DataField("machinePartMaxPressure", customTypeSerializer: typeof(PrototypeIdSerializer))] public string MachinePartMaxPressure = "MatterBin"; /// /// How much the will affect the pressure. /// The value will be multiplied by this amount for each increasing part tier. /// [DataField("partRatingMaxPressureModifier")] public float PartRatingMaxPressureModifier = 1.5f; /// /// The speed at which gas is scrubbed from the environment. /// [ViewVariables(VVAccess.ReadWrite)] public float TransferRate = 800; /// /// The base speed at which gas is scrubbed from the environment. /// [DataField("baseTransferRate")] public float BaseTransferRate = 800; /// /// The machine part which modifies the speed of /// [DataField("machinePartTransferRate", customTypeSerializer: typeof(PrototypeIdSerializer))] public string MachinePartTransferRate = "Manipulator"; /// /// How much the will modify the rate. /// The value will be multiplied by this amount for each increasing part tier. /// [DataField("partRatingTransferRateModifier")] public float PartRatingTransferRateModifier = 1.4f; } }