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