using Content.Shared.Whitelist; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using static Robust.Shared.Prototypes.EntityPrototype; // don't worry about it namespace Content.Shared.Traits { /// /// Describes a trait. /// [Prototype("trait")] public sealed class TraitPrototype : IPrototype { [ViewVariables] [IdDataField] public string ID { get; private set; } = default!; /// /// The name of this trait. /// [DataField("name")] public string Name { get; private set; } = ""; /// /// The description of this trait. /// [DataField("description")] public string? Description { get; private set; } /// /// Don't apply this trait to entities this whitelist IS NOT valid for. /// [DataField("whitelist")] public EntityWhitelist? Whitelist; /// /// Don't apply this trait to entities this whitelist IS valid for. (hence, a blacklist) /// [DataField("blacklist")] public EntityWhitelist? Blacklist; /// /// The components that get added to the player, when they pick this trait. /// [DataField("components")] public ComponentRegistry Components { get; private set; } = default!; /// /// Gear that is given to the player, when they pick this trait. /// [DataField("traitGear", required: false, customTypeSerializer:typeof(PrototypeIdSerializer))] public string? TraitGear; } }