using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Shared.Anomaly.Effects.Components;
[RegisterComponent]
public sealed class ElectricityAnomalyComponent : Component
{
///
/// The maximum radius of the passive electrocution effect
/// scales with stability
///
[DataField("maxElectrocutionRange"), ViewVariables(VVAccess.ReadWrite)]
public float MaxElectrocuteRange = 7f;
///
/// The maximum amount of damage the electrocution can do
/// scales with severity
///
[DataField("maxElectrocuteDamage"), ViewVariables(VVAccess.ReadWrite)]
public float MaxElectrocuteDamage = 20f;
///
/// The maximum amount of time the electrocution lasts
/// scales with severity
///
[DataField("maxElectrocuteDuration"), 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("passiveElectrocutionChance"), 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("nextSecond", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
public TimeSpan NextSecond = TimeSpan.Zero;
}