using Content.Server.Fluids.EntitySystems; using Content.Shared.FixedPoint; using Robust.Shared.Audio; namespace Content.Server.Fluids.Components; /// /// For entities that can clean up puddles /// [RegisterComponent, Access(typeof(MoppingSystem))] public sealed class AbsorbentComponent : Component { public const string SolutionName = "absorbed"; [DataField("pickupAmount")] public FixedPoint2 PickupAmount = FixedPoint2.New(10); /// /// When using this tool on an empty floor tile, leave this much reagent as a new puddle. /// [DataField("residueAmount")] public FixedPoint2 ResidueAmount = FixedPoint2.New(10); // Should be higher than MopLowerLimit /// /// To leave behind a wet floor, this tool will be unable to take from puddles with a volume less than this /// amount. This limit is ignored if the target puddle does not evaporate. /// [DataField("lowerLimit")] public FixedPoint2 LowerLimit = FixedPoint2.New(5); [DataField("pickupSound")] public SoundSpecifier PickupSound = new SoundPathSpecifier("/Audio/Effects/Fluids/slosh.ogg"); [DataField("transferSound")] public SoundSpecifier TransferSound = new SoundPathSpecifier("/Audio/Effects/Fluids/watersplash.ogg"); /// /// Quantity of reagent that this mop can pick up per second. Determines the length of the do-after. /// [DataField("speed")] public float Speed = 10; /// /// How many entities can this tool interact with at once? /// [DataField("maxEntities")] public int MaxInteractingEntities = 1; /// /// What entities is this tool interacting with right now? /// [ViewVariables] public HashSet InteractingEntities = new(); }