using Content.Shared.Ninja.Systems; using Content.Shared.Objectives.Components; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; namespace Content.Shared.Ninja.Components; /// /// Component for toggling glove powers. /// /// /// Requires ItemToggleComponent. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedNinjaGlovesSystem))] public sealed partial class NinjaGlovesComponent : Component { /// /// Entity of the ninja using these gloves, usually means enabled /// [DataField, AutoNetworkedField] public EntityUid? User; /// /// Abilities to give to the user when enabled. /// [DataField(required: true)] public List Abilities = new(); } /// /// An ability that adds components to the user when the gloves are enabled. /// [DataRecord] public partial record struct NinjaGloveAbility() { /// /// If not null, checks if an objective with this prototype has been completed. /// If it has, the ability components are skipped to prevent doing the objective twice. /// The objective must have CodeConditionComponent to be checked. /// [DataField] public EntProtoId? Objective; /// /// Components to add and remove. /// [DataField(required: true)] public ComponentRegistry Components = new(); }