using Content.Shared.Damage; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Atmos.Rotting; /// /// Tracking component for stuff that has started to rot. /// Only the current stage is networked to the client. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentPause] [Access(typeof(SharedRottingSystem))] public sealed partial class RottingComponent : Component { /// /// Whether or not the rotting should deal damage /// [DataField] public bool DealDamage = true; /// /// When the next check will happen for rot progression + effects like damage and ammonia /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] [AutoPausedField] public TimeSpan NextRotUpdate = TimeSpan.Zero; /// /// How long in between each rot update. /// [DataField] public TimeSpan RotUpdateRate = TimeSpan.FromSeconds(5); /// /// How long has this thing been rotting? /// [DataField] public TimeSpan TotalRotTime = TimeSpan.Zero; /// /// The damage dealt by rotting. /// [DataField] public DamageSpecifier Damage = new() { DamageDict = new() { { "Blunt", 0.06 }, { "Cellular", 0.06 } } }; }