using Content.Shared.Mobs; using Content.Shared.FixedPoint; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.GameStates; namespace Content.Shared.Damage.Components; /// /// Passively damages the entity on a specified interval. /// [RegisterComponent, NetworkedComponent] public sealed partial class PassiveDamageComponent : Component { /// /// The entitys' states that passive damage will apply in /// [DataField, ViewVariables(VVAccess.ReadWrite)] public List AllowedStates = new(); /// /// Damage / Healing per interval dealt to the entity every interval /// [DataField, ViewVariables(VVAccess.ReadWrite)] public DamageSpecifier Damage = new(); /// /// Delay between damage events in seconds /// [DataField, ViewVariables(VVAccess.ReadWrite)] public float Interval = 1f; /// /// The maximum HP the damage will be given to. If 0, disabled. /// [DataField, ViewVariables(VVAccess.ReadWrite)] public FixedPoint2 DamageCap = 0; [DataField("nextDamage", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextDamage = TimeSpan.Zero; }