1
0

ElectrifiedComponent.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using Robust.Shared.GameStates;
  2. using Robust.Shared.Audio;
  3. namespace Content.Shared.Electrocution;
  4. /// <summary>
  5. /// Component for things that shock users on touch.
  6. /// </summary>
  7. [RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
  8. public sealed partial class ElectrifiedComponent : Component
  9. {
  10. [DataField, AutoNetworkedField]
  11. public bool Enabled = true;
  12. /// <summary>
  13. /// Should player get damage on collide
  14. /// </summary>
  15. [DataField, AutoNetworkedField]
  16. public bool OnBump = true;
  17. /// <summary>
  18. /// Should player get damage on attack
  19. /// </summary>
  20. [DataField, AutoNetworkedField]
  21. public bool OnAttacked = true;
  22. /// <summary>
  23. /// When true - disables power if a window is present in the same tile
  24. /// </summary>
  25. [DataField, AutoNetworkedField]
  26. public bool NoWindowInTile = false;
  27. /// <summary>
  28. /// Should player get damage on interact with empty hand
  29. /// </summary>
  30. [DataField, AutoNetworkedField]
  31. public bool OnHandInteract = true;
  32. /// <summary>
  33. /// Should player get damage on interact while holding an object in their hand
  34. /// </summary>
  35. [DataField, AutoNetworkedField]
  36. public bool OnInteractUsing = true;
  37. /// <summary>
  38. /// Indicates if the entity requires power to function
  39. /// </summary>
  40. [DataField, AutoNetworkedField]
  41. public bool RequirePower = true;
  42. /// <summary>
  43. /// Indicates if the entity uses APC power
  44. /// </summary>
  45. [DataField, AutoNetworkedField]
  46. public bool UsesApcPower = false;
  47. /// <summary>
  48. /// Identifier for the high voltage node.
  49. /// </summary>
  50. [DataField, AutoNetworkedField]
  51. public string? HighVoltageNode;
  52. /// <summary>
  53. /// Identifier for the medium voltage node.
  54. /// </summary>
  55. [DataField, AutoNetworkedField]
  56. public string? MediumVoltageNode;
  57. /// <summary>
  58. /// Identifier for the low voltage node.
  59. /// </summary>
  60. [DataField, AutoNetworkedField]
  61. public string? LowVoltageNode;
  62. /// <summary>
  63. /// Damage multiplier for HV electrocution
  64. /// </summary>
  65. [DataField, AutoNetworkedField]
  66. public float HighVoltageDamageMultiplier = 3f;
  67. /// <summary>
  68. /// Shock time multiplier for HV electrocution
  69. /// </summary>
  70. [DataField, AutoNetworkedField]
  71. public float HighVoltageTimeMultiplier = 2f;
  72. /// <summary>
  73. /// Damage multiplier for MV electrocution
  74. /// </summary>
  75. [DataField, AutoNetworkedField]
  76. public float MediumVoltageDamageMultiplier = 2f;
  77. /// <summary>
  78. /// Shock time multiplier for MV electrocution
  79. /// </summary>
  80. [DataField, AutoNetworkedField]
  81. public float MediumVoltageTimeMultiplier = 1.5f;
  82. [DataField, AutoNetworkedField]
  83. public float ShockDamage = 7.5f;
  84. /// <summary>
  85. /// Shock time, in seconds.
  86. /// </summary>
  87. [DataField, AutoNetworkedField]
  88. public float ShockTime = 5f;
  89. [DataField, AutoNetworkedField]
  90. public float SiemensCoefficient = 1f;
  91. [DataField, AutoNetworkedField]
  92. public SoundSpecifier ShockNoises = new SoundCollectionSpecifier("sparks");
  93. [DataField, AutoNetworkedField]
  94. public SoundPathSpecifier AirlockElectrifyDisabled = new("/Audio/Machines/airlock_electrify_on.ogg");
  95. [DataField, AutoNetworkedField]
  96. public SoundPathSpecifier AirlockElectrifyEnabled = new("/Audio/Machines/airlock_electrify_off.ogg");
  97. [DataField, AutoNetworkedField]
  98. public bool PlaySoundOnShock = true;
  99. [DataField, AutoNetworkedField]
  100. public float ShockVolume = 20;
  101. [DataField, AutoNetworkedField]
  102. public float Probability = 1f;
  103. [DataField, AutoNetworkedField]
  104. public bool IsWireCut = false;
  105. }