using Content.Shared.Anomaly; using Content.Shared.Construction.Prototypes; using Robust.Shared.Audio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; 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. /// [ViewVariables(VVAccess.ReadWrite)] public float PointMultiplier = 1; /// /// The machine part that affects the point multiplier of the vessel /// [DataField("machinePartPointModifier", customTypeSerializer: typeof(PrototypeIdSerializer))] public string MachinePartPointModifier = "Capacitor"; /// /// A value used to scale the point multiplier /// with the corresponding part rating. /// [DataField("partRatingPointModifier")] public float PartRatingPointModifier = 1.25f; /// /// 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"); }