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