using Content.Server.StationEvents.Events; using Content.Shared.Doors.Components; using Content.Shared.Light.Components; using Content.Shared.Radio; using Robust.Shared.Prototypes; 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] 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] 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; /// /// The collection of lights that will be affected by the solar flare event. /// [DataField] public HashSet<(EntityUid, PoweredLightComponent)> AffectedLights = []; /// /// The collection of airlocks that will be affected by the solar flare event. /// [DataField] public HashSet<(EntityUid, AirlockComponent)> AffectedAirlocks = []; /// /// 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; }