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)), AutoGenerateComponentPause] public sealed partial class AnomalyVesselComponent : Component { /// /// The anomaly that the vessel is storing. /// Can be null. /// [ViewVariables] public EntityUid? Anomaly; /// /// The base multiplier without any frills /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float BasePointMultiplier = 1; /// /// The base radiation for only the experimental vessel /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float BaseRadiation = .75f; /// /// A multiplier applied to the amount of points generated. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float PointMultiplier = 1; /// /// A multiplier applied to the amount of points generated based on the machine parts inserted. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float UpgradePointMultiplier = .5f; /// /// A multipler applied to the radiation /// /// /// no free ultra point machine 100% legit /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float UpgradeRadiationMultiplier = .35f; /// /// Which machine part affects the point multiplier /// [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string MachinePartPointMultiplier = "Capacitor"; /// /// 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))] [AutoPausedField] 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"); }