using Content.Shared.Alert; using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Content.Shared.StatusIcon; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared._Offbrand.Wounds; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(BrainDamageThresholdsSystem))] public sealed partial class BrainDamageThresholdsComponent : Component { /// /// Which mob state to use, given brain damage. Highest key is selected. /// [DataField(required: true)] public SortedDictionary DamageStateThresholds = new(); /// /// Which mob state to use, given brain oxygen. Lowest key is selected. /// [DataField(required: true)] public SortedDictionary OxygenStateThresholds = new(); [DataField, AutoNetworkedField] public MobState CurrentState = MobState.Alive; /// /// Which status effect to apply, given brain damage. Highest key is selected. /// [DataField(required: true)] public SortedDictionary DamageEffectThresholds = new(); [DataField, AutoNetworkedField] public EntProtoId? CurrentDamageEffect; /// /// Which status effect to apply, given brain damage. Lowest key is selected. /// [DataField(required: true)] public SortedDictionary OxygenEffectThresholds = new(); [DataField, AutoNetworkedField] public EntProtoId? CurrentOxygenEffect; /// /// Damage icons to show on medical HUDs when the brain is alive and non-critical. /// [DataField(required: true)] public List> AliveDamageIcons; /// /// Damage icons to show on medical HUDs when the brain is critical. /// [DataField(required: true)] public List> CriticalDamageIcons; /// /// Damage icons to show on medical HUDs when the brain is dead. /// [DataField(required: true)] public ProtoId DeadIcon; /// /// The alert to display depending on the amount of brain damage. Highest key is selected. /// [DataField(required: true)] public SortedDictionary> DamageAlertThresholds; /// /// The alert category of the alerts. /// [DataField(required: true)] public ProtoId DamageAlertCategory; /// /// The alert used to display oxygen level. /// [DataField(required: true)] public ProtoId OxygenAlert; /// /// The alert category of the oxygen alerts. /// [DataField(required: true)] public ProtoId OxygenAlertCategory; [DataField, AutoNetworkedField] public ProtoId? CurrentDamageAlertThresholdState; }