using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; namespace Content.Shared.AlertLevel; /// /// Prototype for a single alert level a station can be set to. /// [Prototype] public sealed partial class AlertLevelPrototype : IPrototype, IInheritingPrototype { [IdDataField] public string ID { get; private set; } = default!; [ParentDataField(typeof(AbstractPrototypeIdArraySerializer))] public string[]? Parents { get; private set; } [NeverPushInheritance] [AbstractDataField] public bool Abstract { get; private set; } [DataField(required: true)] private LocId Name { get; set; } [ViewVariables(VVAccess.ReadOnly)] public string LocalizedName => Loc.GetString(Name); /// /// Whether this alert level is selectable from a communications console. /// [DataField] public bool Selectable = true; /// /// If this alert level disables user selection while it is active. Beware - /// setting this while something is selectable will disable selection permanently! /// This should only apply to entities or gamemodes that auto-select an alert level, /// such as a nuclear bomb being set to active. /// [DataField] public bool DisableSelection; /// /// The text that is announced when this alert level is selected. /// [DataField] public LocId? Announcement; /// /// The text that is announced when this alert level is selected. /// [DataField] public LocId? Instructions; /// /// The sound that will played in-game when this alert level is selected. /// [DataField] public SoundSpecifier? Sound; /// /// The color that this alert level will show in-game in chat. /// [DataField] public Color Color = Color.White; /// /// The color to turn emergency lights on this station when they are active. /// [DataField] public Color EmergencyLightColor = Color.FromHex("#FF4020"); /// /// Will this alert level force emergency lights on for the station that's active? /// [DataField] public bool ForceEnableEmergencyLights = false; /// /// How long it takes for the shuttle to arrive when called while this alert level is active. /// [DataField] public TimeSpan ShuttleTime = TimeSpan.FromMinutes(5); }