1
0

ShockOnTriggerComponent.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
  2. using Content.Server.Explosion.EntitySystems;
  3. namespace Content.Server.Explosion.Components;
  4. /// <summary>
  5. /// A component that electrocutes an entity having this component when a trigger is triggered.
  6. /// </summary>
  7. [RegisterComponent, AutoGenerateComponentPause]
  8. [Access(typeof(TriggerSystem))]
  9. public sealed partial class ShockOnTriggerComponent : Component
  10. {
  11. /// <summary>
  12. /// The force of an electric shock when the trigger is triggered.
  13. /// </summary>
  14. [DataField]
  15. public int Damage = 5;
  16. /// <summary>
  17. /// Duration of electric shock when the trigger is triggered.
  18. /// </summary>
  19. [DataField]
  20. public TimeSpan Duration = TimeSpan.FromSeconds(2);
  21. /// <summary>
  22. /// The minimum delay between repeating triggers.
  23. /// </summary>
  24. [DataField]
  25. public TimeSpan Cooldown = TimeSpan.FromSeconds(4);
  26. /// <summary>
  27. /// When can the trigger run again?
  28. /// </summary>
  29. [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
  30. [AutoPausedField]
  31. public TimeSpan NextTrigger = TimeSpan.Zero;
  32. }