using Content.Shared.NPC.Prototypes;
using Content.Shared.Whitelist;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared._DV.Recruiter;
///
/// Pen that can be pricked with the user's blood, and requires blood to sign papers.
///
[RegisterComponent, NetworkedComponent, Access(typeof(SharedRecruiterPenSystem))]
[AutoGenerateComponentState]
public sealed partial class RecruiterPenComponent : Component
{
///
/// Solution on the pen to draw blood to and use for signing.
///
[DataField]
public string Solution = "blood";
///
/// Mind of the recruiter this pen belongs to.
/// Used for objective and is set when first picked up.
///
[DataField]
public EntityUid? RecruiterMind;
///
/// Lets other clients predict recruiter being bound without knowing who it is.
///
[DataField, AutoNetworkedField]
public bool Bound;
///
/// Entities of every person that signed paper with this pen.
/// Used to prevent someone gaming it by signing multiple papers.
///
[DataField]
public HashSet Recruited = new();
///
/// If the user matches this blacklist they can't use this pen.
///
[DataField]
public EntityWhitelist? Blacklist;
///
/// If the user is in any of these factions they can't use this pen.
///
[DataField]
public List> FactionBlacklist = new();
///
/// Payout on successful sign.
///
[DataField(required: true)]
public EntProtoId Currency;
}