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 = 2f; /// /// Damage multiplier for MV electrocution /// [DataField, AutoNetworkedField] public float MediumVoltageDamageMultiplier = 2f; /// /// Shock time multiplier for MV electrocution /// [DataField, AutoNetworkedField] public float MediumVoltageTimeMultiplier = 1.5f; [DataField, AutoNetworkedField] public float ShockDamage = 7.5f; /// /// Shock time, in seconds. /// [DataField, AutoNetworkedField] public float ShockTime = 5f; [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; }