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;
}