1
0

DamageOnHoldingComponent.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Content.Shared.Damage.Systems;
  2. using Robust.Shared.GameStates;
  3. using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
  4. namespace Content.Shared.Damage.Components;
  5. [RegisterComponent, NetworkedComponent]
  6. [AutoGenerateComponentState, AutoGenerateComponentPause]
  7. [Access(typeof(DamageOnHoldingSystem))]
  8. public sealed partial class DamageOnHoldingComponent : Component
  9. {
  10. [DataField("enabled"), ViewVariables(VVAccess.ReadWrite)]
  11. [AutoNetworkedField]
  12. public bool Enabled = true;
  13. /// <summary>
  14. /// Damage per interval dealt to entity holding the entity with this component
  15. /// </summary>
  16. [DataField("damage"), ViewVariables(VVAccess.ReadWrite)]
  17. public DamageSpecifier Damage = new();
  18. // TODO: make it networked
  19. /// <summary>
  20. /// Delay between damage events in seconds
  21. /// </summary>
  22. [DataField("interval"), ViewVariables(VVAccess.ReadWrite)]
  23. [AutoNetworkedField]
  24. public float Interval = 1f;
  25. [DataField("nextDamage", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
  26. [AutoNetworkedField]
  27. [AutoPausedField]
  28. public TimeSpan NextDamage = TimeSpan.Zero;
  29. }