using Content.Shared.Ninja.Systems; using Robust.Shared.GameStates; using Robust.Shared.Serialization; namespace Content.Shared.Ninja.Components; /// /// Component placed on a mob to make it a space ninja, able to use suit and glove powers. /// Contains ids of all ninja equipment. /// // TODO: Contains objective related stuff, might want to move it out somehow [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedNinjaSystem))] public sealed partial class NinjaComponent : Component { /// /// Grid entity of the station the ninja was spawned around. Set if spawned naturally by the event. /// public EntityUid? StationGrid; /// /// Currently worn suit /// [ViewVariables] public EntityUid? Suit = null; /// /// Currently worn gloves /// [ViewVariables] public EntityUid? Gloves = null; /// /// Bound katana, set once picked up and never removed /// [ViewVariables] public EntityUid? Katana = null; /// /// Number of doors that have been doorjacked, used for objective /// [ViewVariables, AutoNetworkedField] public int DoorsJacked = 0; /// /// Research nodes that have been downloaded, used for objective /// // TODO: client doesn't need to know what nodes are downloaded, just how many [ViewVariables, AutoNetworkedField] public HashSet DownloadedNodes = new(); /// /// Warp point that the spider charge has to target /// [ViewVariables, AutoNetworkedField] public EntityUid? SpiderChargeTarget = null; /// /// Whether the spider charge has been detonated on the target, used for objective /// [ViewVariables, AutoNetworkedField] public bool SpiderChargeDetonated; /// /// Whether the comms console has been hacked, used for objective /// [ViewVariables, AutoNetworkedField] public bool CalledInThreat; }