using Content.Shared.Alert; using Content.Shared.Whitelist; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.StatusEffectNew.Components; /// /// Marker component for all status effects - every status effect entity should have it. /// Provides a link between the effect and the affected entity, and some data common to all status effects. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] [Access(typeof(SharedStatusEffectsSystem))] [EntityCategory("StatusEffects")] public sealed partial class StatusEffectComponent : Component { /// /// The entity that this status effect is applied to. /// [DataField, AutoNetworkedField] public EntityUid? AppliedTo; /// /// Status effect indication for the player. If Null, no Alert will be displayed. /// [DataField] public ProtoId? Alert; /// /// When this effect will end. If Null, the effect lasts indefinitely. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField, AutoNetworkedField] public TimeSpan? EndEffectTime; /// /// Whitelist, by which it is determined whether this status effect can be imposed on a particular entity. /// [DataField] public EntityWhitelist? Whitelist; /// /// Blacklist, by which it is determined whether this status effect can be imposed on a particular entity. /// [DataField] public EntityWhitelist? Blacklist; }