using Content.Shared.Audio; using Content.Shared.FixedPoint; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Fluids; /// /// For entities that can clean up puddles /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class AbsorbentComponent : Component { /// /// Used by the client to display a bar showing the reagents contained when held. /// Has to still be networked in case the item is given to someone who didn't see a mop in PVS. /// [DataField, AutoNetworkedField] public Dictionary Progress = []; /// /// Name for solution container, that should be used for absorbed solution storage and as source of absorber solution. /// Default is 'absorbed'. /// [DataField] public string SolutionName = "absorbed"; /// /// How much solution we can transfer in one interaction. /// [DataField] public FixedPoint2 PickupAmount = FixedPoint2.New(100); /// /// The effect spawned when the puddle fully evaporates. /// [DataField] public EntProtoId MoppedEffect = "PuddleSparkle"; [DataField] public SoundSpecifier PickupSound = new SoundPathSpecifier("/Audio/Effects/Fluids/watersplash.ogg", AudioParams.Default.WithVariation(SharedContentAudioSystem.DefaultVariation)); [DataField] public SoundSpecifier TransferSound = new SoundPathSpecifier("/Audio/Effects/Fluids/slosh.ogg", AudioParams.Default.WithVariation(SharedContentAudioSystem.DefaultVariation).WithVolume(-3f)); public static readonly SoundSpecifier DefaultTransferSound = new SoundPathSpecifier("/Audio/Effects/Fluids/slosh.ogg", AudioParams.Default.WithVariation(SharedContentAudioSystem.DefaultVariation).WithVolume(-3f)); /// /// Marker that absorbent component owner should try to use 'absorber solution' to replace solution to be absorbed. /// Target solution will be simply consumed into container if set to false. /// [DataField] public bool UseAbsorberSolution = true; }