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