using Robust.Shared.GameStates;
using Robust.Shared.Audio;
namespace Content.Shared.Electrocution;
///
/// Component for things that shock users on touch.
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ElectrifiedComponent : Component
{
[DataField, AutoNetworkedField]
public bool Enabled = true;
///
/// Should player get damage on collide
///
[DataField, AutoNetworkedField]
public bool OnBump = true;
///
/// Should player get damage on attack
///
[DataField, AutoNetworkedField]
public bool OnAttacked = true;
///
/// When true - disables power if a window is present in the same tile
///
[DataField, AutoNetworkedField]
public bool NoWindowInTile = false;
///
/// Should player get damage on interact with empty hand
///
[DataField, AutoNetworkedField]
public bool OnHandInteract = true;
///
/// Should player get damage on interact while holding an object in their hand
///
[DataField, AutoNetworkedField]
public bool OnInteractUsing = true;
///
/// Indicates if the entity requires power to function
///
[DataField, AutoNetworkedField]
public bool RequirePower = true;
///
/// Indicates if the entity uses APC power
///
[DataField, AutoNetworkedField]
public bool UsesApcPower = false;
///
/// Identifier for the high voltage node.
///
[DataField, AutoNetworkedField]
public string? HighVoltageNode;
///
/// Identifier for the medium voltage node.
///
[DataField, AutoNetworkedField]
public string? MediumVoltageNode;
///
/// Identifier for the low voltage node.
///
[DataField, AutoNetworkedField]
public string? LowVoltageNode;
///
/// Damage multiplier for HV electrocution
///
[DataField, AutoNetworkedField]
public float HighVoltageDamageMultiplier = 3f;
///
/// Shock time multiplier for HV electrocution
///
[DataField, AutoNetworkedField]
public float HighVoltageTimeMultiplier = 1.5f;
///
/// Damage multiplier for MV electrocution
///
[DataField, AutoNetworkedField]
public float MediumVoltageDamageMultiplier = 2f;
///
/// Shock time multiplier for MV electrocution
///
[DataField, AutoNetworkedField]
public float MediumVoltageTimeMultiplier = 1.25f;
[DataField, AutoNetworkedField]
public float ShockDamage = 7.5f;
///
/// Shock time, in seconds.
///
[DataField, AutoNetworkedField]
public float ShockTime = 8f;
[DataField, AutoNetworkedField]
public float SiemensCoefficient = 1f;
[DataField, AutoNetworkedField]
public SoundSpecifier ShockNoises = new SoundCollectionSpecifier("sparks");
[DataField, AutoNetworkedField]
public SoundPathSpecifier AirlockElectrifyDisabled = new("/Audio/Machines/airlock_electrify_on.ogg");
[DataField, AutoNetworkedField]
public SoundPathSpecifier AirlockElectrifyEnabled = new("/Audio/Machines/airlock_electrify_off.ogg");
[DataField, AutoNetworkedField]
public bool PlaySoundOnShock = true;
[DataField, AutoNetworkedField]
public float ShockVolume = 20;
[DataField, AutoNetworkedField]
public float Probability = 1f;
[DataField, AutoNetworkedField]
public bool IsWireCut = false;
}