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, AutoGenerateComponentState(true)] // Goobstation - Networked all fields public sealed partial class PassiveDamageComponent : Component { /// /// The entitys' states that passive damage will apply in /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public List AllowedStates = new(); /// /// Damage / Healing per interval dealt to the entity every interval /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public DamageSpecifier Damage = new(); /// /// Delay between damage events in seconds /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public float Interval = 1f; /// /// The maximum HP the damage will be given to. If 0, disabled. /// [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public FixedPoint2 DamageCap = 0; [DataField("nextDamage", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public TimeSpan NextDamage = TimeSpan.Zero; }