using Content.Server.StationEvents.Events; using Content.Shared.Radio; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; namespace Content.Server.StationEvents.Components; /// /// Solar Flare event specific configuration /// [RegisterComponent, Access(typeof(SolarFlareRule))] public sealed partial class SolarFlareRuleComponent : Component { /// /// If true, only headsets affected, but e.g. handheld radio will still work /// [DataField("onlyJamHeadsets")] public bool OnlyJamHeadsets; /// /// Channels that will be disabled for a duration of event /// [DataField("affectedChannels", customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] public HashSet AffectedChannels = new(); /// /// List of extra channels that can be random disabled on top of the starting channels. /// /// /// Channels are not removed from this, so its possible to roll the same channel multiple times. /// [DataField("extraChannels", customTypeSerializer: typeof(PrototypeIdListSerializer))] public List ExtraChannels = new(); /// /// Number of times to roll a channel from ExtraChannels. /// /// /// Channels are not removed from it, so its possible to roll the same channel multiple times. /// [DataField("extraCount")] public uint ExtraCount; /// /// Chance light bulb breaks per second during event /// [DataField("lightBreakChancePerSecond")] public float LightBreakChancePerSecond; /// /// Chance door toggles per second during event /// [DataField("doorToggleChancePerSecond")] public float DoorToggleChancePerSecond; }