using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Anomaly.Effects.Components; [RegisterComponent] public sealed partial class ElectricityAnomalyComponent : Component { /// /// the minimum number of lightning strikes /// [DataField, ViewVariables(VVAccess.ReadWrite)] public int MinBoltCount = 2; /// /// the number of lightning strikes, at the maximum severity of the anomaly /// [DataField, ViewVariables(VVAccess.ReadWrite)] public int MaxBoltCount = 5; /// /// The maximum radius of the passive electrocution effect /// scales with stability /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float MaxElectrocuteRange = 7f; /// /// The maximum amount of damage the electrocution can do /// scales with severity /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float MaxElectrocuteDamage = 20f; /// /// The maximum amount of time the electrocution lasts /// scales with severity /// [DataField, ViewVariables(VVAccess.ReadWrite)] public TimeSpan MaxElectrocuteDuration = TimeSpan.FromSeconds(8); /// /// The maximum chance that each second, when in range of the anomaly, you will be electrocuted. /// scales with stability /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float PassiveElectrocutionChance = 0.05f; /// /// Used for tracking seconds, so that we can shock people in a non-tick-dependent way. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextSecond = TimeSpan.Zero; /// /// Energy consumed from devices by the emp pulse upon going supercritical. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float EmpEnergyConsumption = 100000f; /// /// Duration of devices being disabled by the emp pulse upon going supercritical. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float EmpDisabledDuration = 60f; }