using Content.Shared.Damage; using Content.Shared.NPC.Prototypes; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Clothing.Components; /// /// This is used for a mask that takes over the host when worn. /// [RegisterComponent, NetworkedComponent, Access(typeof(SharedCursedMaskSystem))] public sealed partial class CursedMaskComponent : Component { /// /// The current expression shown. Used to determine which effect is applied. /// [DataField] public CursedMaskExpression CurrentState = CursedMaskExpression.Neutral; /// /// Speed modifier applied when the "Joy" expression is present. /// [DataField] public float JoySpeedModifier = 1.15f; /// /// Damage modifier applied when the "Despair" expression is present. /// [DataField] public DamageModifierSet DespairDamageModifier = new(); /// /// Whether or not the mask is currently attached to an NPC. /// [DataField] public bool HasNpc; /// /// The mind that was booted from the wearer when the mask took over. /// [DataField] public EntityUid? StolenMind; [DataField] public ProtoId CursedMaskFaction = "SimpleHostile"; [DataField] public HashSet> OldFactions = new(); } [Serializable, NetSerializable] public enum CursedMaskVisuals : byte { State } [Serializable, NetSerializable] public enum CursedMaskExpression : byte { Neutral, Joy, Despair, Anger }