using Content.Shared.Damage; using Content.Shared.Mobs.Systems; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Mobs.Components { /// /// When attached to an , /// this component will handle critical and death behaviors for mobs. /// Additionally, it handles sending effects to clients /// (such as blur effect for unconsciousness) and managing the health HUD. /// [RegisterComponent] [NetworkedComponent] [Access(typeof(MobStateSystem), typeof(MobThresholdSystem))] public sealed class MobStateComponent : Component { //default mobstate is always the lowest state level [ViewVariables] public MobState CurrentState { get; set; } = MobState.Alive; [DataField("allowedStates")] public HashSet AllowedStates = new() { MobState.Alive, MobState.Critical, MobState.Dead }; } [Serializable, NetSerializable] public sealed class MobStateComponentState : ComponentState { public readonly MobState CurrentState; public readonly HashSet AllowedStates; public MobStateComponentState(MobState currentState, HashSet allowedStates) { CurrentState = currentState; AllowedStates = allowedStates; } } }