using Content.Shared.Anomaly; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.Anomaly.Components; /// /// Anomaly Vessels can have an anomaly "stored" in them /// by interacting on them with an anomaly scanner. Then, /// they generate points for the selected server based on /// the anomaly's stability and severity. /// [RegisterComponent, Access(typeof(SharedAnomalySystem))] public sealed partial class AnomalyVesselComponent : Component { /// /// The anomaly that the vessel is storing. /// Can be null. /// [ViewVariables] public EntityUid? Anomaly; /// /// A multiplier applied to the amount of points generated. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float PointMultiplier = 1; /// /// The maximum time between each beep /// [DataField("maxBeepInterval")] public TimeSpan MaxBeepInterval = TimeSpan.FromSeconds(2f); /// /// The minimum time between each beep /// [DataField("minBeepInterval")] public TimeSpan MinBeepInterval = TimeSpan.FromSeconds(0.75f); /// /// When the next beep sound will play /// [DataField("nextBeep", customTypeSerializer:typeof(TimeOffsetSerializer))] public TimeSpan NextBeep = TimeSpan.Zero; /// /// The sound that is played repeatedly when the anomaly is destabilizing/decaying /// [DataField("beepSound")] public SoundSpecifier BeepSound = new SoundPathSpecifier("/Audio/Machines/vessel_warning.ogg"); }