Pathfinder 1e for Foundry VTT
    Preparing search index...

    Class Material

    A single material type entry in the Materials registry.

    Hierarchy (View Summary)

    Index

    Constructors

    • Parameters

      • ...args: ConstructorArgs<any, null, any>

      Returns Material

    Properties

    _id: string
    addon: boolean

    Is add-on material

    allowed: {
        buckler: boolean;
        heavyArmor: boolean;
        heavyShield: boolean;
        lightArmor: boolean;
        lightBlade: boolean;
        lightShield: boolean;
        mediumArmor: boolean;
        oneHandBlade: boolean;
        rangedWeapon: boolean;
        towerShield: boolean;
        twoHandBlade: boolean;
    }

    What type of gear is this material allowed on?

    armor: { acp: number; asf: number; maxDex: number }

    Armor modifiers

    baseMaterial: Set<string>

    Materials this can be added on top of

    dr: boolean

    Is this valid for DR choices?

    flags?: object
    hardness: number
    hardnessMultiplier: number
    healthBonus: number
    healthMultiplier: number
    healthPerInch: number
    incompatible: Set<string>

    Explicit incompatible materials when not otherwise determinable

    intrinsic: boolean

    Is always available as base material

    Such as wood.

    masterwork: boolean

    Is this material always masterworked?

    false

    name: string
    namespace: string
    price: {
        ammunition: number;
        enhancement: { weapon: number };
        heavyArmor: number;
        lightArmor: number;
        lightWeapon: number;
        mediumArmor: number;
        multiplier: number;
        oneHandWeapon: number;
        perPound: number;
        rangedOneHandWeapon: number;
        rangedTwoHandWeapon: number;
        shield: number;
        twoHandWeapon: number;
    }

    Price modifiers

    primitive: boolean

    Is primitive material

    For example: bone, wood, or stone.

    shield: { acp: number; asf: number; maxDex: number }

    Shield modifiers

    shortName?: string

    Simpler name when such is known.

    For example, "alchemical silver" is more commonly referred to simply as "silver"

    treatedAs: string

    Behaves for DR/ER exactly the same as another material.

    For example, mithral counts as silver in all regards, there is nothing that has DR penetrated by mithral specifically.

    weight: { bonusPerPound: number; multiplier: number }

    Weight modifiers

    Accessors

    Methods

    • Check if a given material is okay to be added to our materials list

      Parameters

      • source: ItemPF | ItemAction

        Whether we're checking weapons, equipment, or actions

      • altBaseMaterial: string = null

        An alternative base material to check against

      • altNormalMaterial: string = null

        An alternative normal material to check against

      Returns boolean

      • Whether the material is allowed for the given item or action
    • Check if a given addon material is valid for the chosen material

      Parameters

      • material: string | Material

        Material or material ID for which to test if this addon is valid.

      Returns null | boolean

      • Null if the provided parameter is invalid, boolean otherwise.
    • Returns {
          _id: StringField<
              { blank: false; readonly: true; required: true },
              AssignmentType<{ blank: false; readonly: true; required: true }>,
              string,
              string,
          >;
          addon: BooleanField<
              { initial: false; required: false },
              AssignmentType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
          >;
          allowed: SchemaField<
              {
                  buckler: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  heavyArmor: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  heavyShield: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  lightArmor: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  lightBlade: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  lightShield: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  mediumArmor: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  oneHandBlade: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  rangedWeapon: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  towerShield: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
                  twoHandBlade: BooleanField<
                      { initial: true; required: false },
                      AssignmentType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                      InitializedType<
                          SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                      >,
                  >;
              },
              DefaultOptions,
              AssignmentType<
                  {
                      buckler: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      heavyArmor: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      heavyShield: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      lightArmor: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      lightBlade: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      lightShield: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      mediumArmor: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      oneHandBlade: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      rangedWeapon: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      towerShield: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                      twoHandBlade: BooleanField<
                          { initial: true; required: false },
                          AssignmentType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                          InitializedType<
                              SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                          >,
                      >;
                  },
                  SimpleMerge<DefaultOptions, DefaultOptions>,
              >,
              {
                  buckler: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  heavyArmor: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  heavyShield: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  lightArmor: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  lightBlade: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  lightShield: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  mediumArmor: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  oneHandBlade: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  rangedWeapon: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  towerShield: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  twoHandBlade: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
              },
              {
                  buckler: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  heavyArmor: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  heavyShield: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  lightArmor: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  lightBlade: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  lightShield: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  mediumArmor: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  oneHandBlade: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  rangedWeapon: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  towerShield: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
                  twoHandBlade: InitializedType<
                      SimpleMerge<{ initial: true; required: false }, DefaultOptions>,
                  >;
              },
          >;
          armor: SchemaField<
              {
                  acp: NumberField<
                      { initial: 0; integer: true; required: false },
                      AssignmentType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                  >;
                  asf: NumberField<
                      { initial: 0; integer: true; required: false },
                      AssignmentType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                  >;
                  maxDex: NumberField<
                      { initial: 0; integer: true; required: false },
                      AssignmentType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                  >;
              },
              DefaultOptions,
              AssignmentType<
                  {
                      acp: NumberField<
                          { initial: 0; integer: true; required: false },
                          AssignmentType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                      >;
                      asf: NumberField<
                          { initial: 0; integer: true; required: false },
                          AssignmentType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                      >;
                      maxDex: NumberField<
                          { initial: 0; integer: true; required: false },
                          AssignmentType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                      >;
                  },
                  SimpleMerge<DefaultOptions, DefaultOptions>,
              >,
              {
                  acp: InitializedType<{ initial: 0; integer: true; required: false }>;
                  asf: InitializedType<{ initial: 0; integer: true; required: false }>;
                  maxDex: InitializedType<{ initial: 0; integer: true; required: false }>;
              },
              {
                  acp: InitializedType<{ initial: 0; integer: true; required: false }>;
                  asf: InitializedType<{ initial: 0; integer: true; required: false }>;
                  maxDex: InitializedType<{ initial: 0; integer: true; required: false }>;
              },
          >;
          baseMaterial: SetField<
              StringField<
                  DefaultOptions,
                  AssignmentType<DefaultOptions>,
                  InitializedType<DefaultOptions>,
                  InitializedType<DefaultOptions>,
              >,
              { initial: never[]; required: false },
              AssignmentType<DefaultOptions>,
              InitializedType<DefaultOptions>,
              AssignmentType<
                  AssignmentType<DefaultOptions>,
                  { initial: never[]; required: false },
              >,
              InitializedType<
                  InitializedType<DefaultOptions>,
                  { initial: never[]; required: false },
              >,
              InitializedType<DefaultOptions>,
              PersistedType<
                  InitializedType<DefaultOptions>,
                  { initial: never[]; required: false },
              >,
          >;
          dr: BooleanField<
              { initial: false; required: false },
              AssignmentType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
          >;
          flags: ObjectField<
              { initial: {}; required: false },
              AssignmentType<{ initial: {}; required: false }>,
              InitializedType<{ initial: {}; required: false }>,
              InitializedType<{ initial: {}; required: false }>,
          >;
          hardness: NumberField<
              { initial: 10; integer: true; min: 0; required: false },
              AssignmentType<{ initial: 10; integer: true; min: 0; required: false }>,
              InitializedType<{ initial: 10; integer: true; min: 0; required: false }>,
              InitializedType<{ initial: 10; integer: true; min: 0; required: false }>,
          >;
          hardnessMultiplier: NumberField<
              { initial: null; min: 0; nullable: true; required: false },
              AssignmentType<{ initial: null; min: 0; nullable: true; required: false }>,
              InitializedType<
                  { initial: null; min: 0; nullable: true; required: false },
              >,
              InitializedType<
                  { initial: null; min: 0; nullable: true; required: false },
              >,
          >;
          healthBonus: NumberField<
              { initial: 0; integer: true; min: 0; required: false },
              AssignmentType<{ initial: 0; integer: true; min: 0; required: false }>,
              InitializedType<{ initial: 0; integer: true; min: 0; required: false }>,
              InitializedType<{ initial: 0; integer: true; min: 0; required: false }>,
          >;
          healthMultiplier: NumberField<
              { initial: 1; integer: false; positive: true; required: false },
              AssignmentType<
                  { initial: 1; integer: false; positive: true; required: false },
              >,
              InitializedType<
                  { initial: 1; integer: false; positive: true; required: false },
              >,
              InitializedType<
                  { initial: 1; integer: false; positive: true; required: false },
              >,
          >;
          healthPerInch: NumberField<
              {
                  initial: null;
                  integer: true;
                  min: 0;
                  nullable: true;
                  required: false;
              },
              AssignmentType<
                  {
                      initial: null;
                      integer: true;
                      min: 0;
                      nullable: true;
                      required: false;
                  },
              >,
              InitializedType<
                  {
                      initial: null;
                      integer: true;
                      min: 0;
                      nullable: true;
                      required: false;
                  },
              >,
              InitializedType<
                  {
                      initial: null;
                      integer: true;
                      min: 0;
                      nullable: true;
                      required: false;
                  },
              >,
          >;
          incompatible: SetField<
              StringField<
                  DefaultOptions,
                  AssignmentType<DefaultOptions>,
                  InitializedType<DefaultOptions>,
                  InitializedType<DefaultOptions>,
              >,
              { initial: never[]; required: false },
              AssignmentType<DefaultOptions>,
              InitializedType<DefaultOptions>,
              AssignmentType<
                  AssignmentType<DefaultOptions>,
                  { initial: never[]; required: false },
              >,
              InitializedType<
                  InitializedType<DefaultOptions>,
                  { initial: never[]; required: false },
              >,
              InitializedType<DefaultOptions>,
              PersistedType<
                  InitializedType<DefaultOptions>,
                  { initial: never[]; required: false },
              >,
          >;
          intrinsic: BooleanField<
              { initial: false; required: false },
              AssignmentType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
          >;
          masterwork: BooleanField<
              { initial: false; required: false },
              AssignmentType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
          >;
          name: StringField<
              DefaultOptions,
              AssignmentType<DefaultOptions>,
              InitializedType<DefaultOptions>,
              InitializedType<DefaultOptions>,
          >;
          namespace: StringField<
              { blank: false; required: true },
              AssignmentType<{ blank: false; required: true }>,
              string,
              string,
          >;
          price: SchemaField<
              {
                  ammunition: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  enhancement: SchemaField<
                      {
                          weapon: NumberField<
                              { initial: 0; min: 0; required: false },
                              AssignmentType<{ initial: 0; min: 0; required: false }>,
                              InitializedType<{ initial: 0; min: 0; required: false }>,
                              InitializedType<{ initial: 0; min: 0; required: false }>,
                          >;
                      },
                      DefaultOptions,
                      AssignmentType<
                          {
                              weapon: NumberField<
                                  { initial: 0; min: 0; required: false },
                                  AssignmentType<{ initial: 0; min: 0; required: false }>,
                                  InitializedType<{ initial: 0; min: 0; required: false }>,
                                  InitializedType<{ initial: 0; min: 0; required: false }>,
                              >;
                          },
                          SimpleMerge<DefaultOptions, DefaultOptions>,
                      >,
                      { weapon: InitializedType<{ initial: 0; min: 0; required: false }> },
                      { weapon: InitializedType<{ initial: 0; min: 0; required: false }> },
                  >;
                  heavyArmor: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  lightArmor: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  lightWeapon: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  mediumArmor: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  multiplier: NumberField<
                      { initial: 1; integer: false; positive: true; required: false },
                      AssignmentType<
                          { initial: 1; integer: false; positive: true; required: false },
                      >,
                      InitializedType<
                          { initial: 1; integer: false; positive: true; required: false },
                      >,
                      InitializedType<
                          { initial: 1; integer: false; positive: true; required: false },
                      >,
                  >;
                  oneHandWeapon: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  perPound: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  rangedOneHandWeapon: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  rangedTwoHandWeapon: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  shield: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  twoHandWeapon: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
              },
              DefaultOptions,
              AssignmentType<
                  {
                      ammunition: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      enhancement: SchemaField<
                          {
                              weapon: NumberField<
                                  { initial: 0; min: 0; required: false },
                                  AssignmentType<{ initial: 0; min: 0; required: false }>,
                                  InitializedType<{ initial: 0; min: 0; required: false }>,
                                  InitializedType<{ initial: 0; min: 0; required: false }>,
                              >;
                          },
                          DefaultOptions,
                          AssignmentType<
                              {
                                  weapon: NumberField<
                                      { initial: 0; min: 0; required: false },
                                      AssignmentType<{ initial: 0; min: 0; required: false }>,
                                      InitializedType<{ initial: 0; min: 0; required: false }>,
                                      InitializedType<{ initial: 0; min: 0; required: false }>,
                                  >;
                              },
                              SimpleMerge<DefaultOptions, DefaultOptions>,
                          >,
                          { weapon: InitializedType<{ initial: 0; min: 0; required: false }> },
                          { weapon: InitializedType<{ initial: 0; min: 0; required: false }> },
                      >;
                      heavyArmor: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      lightArmor: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      lightWeapon: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      mediumArmor: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      multiplier: NumberField<
                          { initial: 1; integer: false; positive: true; required: false },
                          AssignmentType<
                              { initial: 1; integer: false; positive: true; required: false },
                          >,
                          InitializedType<
                              { initial: 1; integer: false; positive: true; required: false },
                          >,
                          InitializedType<
                              { initial: 1; integer: false; positive: true; required: false },
                          >,
                      >;
                      oneHandWeapon: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      perPound: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      rangedOneHandWeapon: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      rangedTwoHandWeapon: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      shield: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      twoHandWeapon: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                  },
                  SimpleMerge<DefaultOptions, DefaultOptions>,
              >,
              {
                  ammunition: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  enhancement: {
                      weapon: InitializedType<{ initial: 0; min: 0; required: false }>;
                  };
                  heavyArmor: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  lightArmor: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  lightWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  mediumArmor: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  multiplier: InitializedType<
                      { initial: 1; integer: false; positive: true; required: false },
                  >;
                  oneHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  perPound: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  rangedOneHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  rangedTwoHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  shield: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  twoHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
              },
              {
                  ammunition: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  enhancement: {
                      weapon: InitializedType<{ initial: 0; min: 0; required: false }>;
                  };
                  heavyArmor: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  lightArmor: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  lightWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  mediumArmor: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  multiplier: InitializedType<
                      { initial: 1; integer: false; positive: true; required: false },
                  >;
                  oneHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  perPound: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  rangedOneHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  rangedTwoHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  shield: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  twoHandWeapon: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
              },
          >;
          primitive: BooleanField<
              { initial: false; required: false },
              AssignmentType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
              InitializedType<
                  SimpleMerge<{ initial: false; required: false }, DefaultOptions>,
              >,
          >;
          shield: SchemaField<
              {
                  acp: NumberField<
                      { initial: 0; integer: true; required: false },
                      AssignmentType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                  >;
                  asf: NumberField<
                      { initial: 0; integer: true; required: false },
                      AssignmentType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                  >;
                  maxDex: NumberField<
                      { initial: 0; integer: true; required: false },
                      AssignmentType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                      InitializedType<{ initial: 0; integer: true; required: false }>,
                  >;
              },
              DefaultOptions,
              AssignmentType<
                  {
                      acp: NumberField<
                          { initial: 0; integer: true; required: false },
                          AssignmentType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                      >;
                      asf: NumberField<
                          { initial: 0; integer: true; required: false },
                          AssignmentType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                      >;
                      maxDex: NumberField<
                          { initial: 0; integer: true; required: false },
                          AssignmentType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                          InitializedType<{ initial: 0; integer: true; required: false }>,
                      >;
                  },
                  SimpleMerge<DefaultOptions, DefaultOptions>,
              >,
              {
                  acp: InitializedType<{ initial: 0; integer: true; required: false }>;
                  asf: InitializedType<{ initial: 0; integer: true; required: false }>;
                  maxDex: InitializedType<{ initial: 0; integer: true; required: false }>;
              },
              {
                  acp: InitializedType<{ initial: 0; integer: true; required: false }>;
                  asf: InitializedType<{ initial: 0; integer: true; required: false }>;
                  maxDex: InitializedType<{ initial: 0; integer: true; required: false }>;
              },
          >;
          shortName: StringField<
              { blank: false; initial: undefined; localize: true; required: false },
              AssignmentType<
                  { blank: false; initial: undefined; localize: true; required: false },
              >,
              InitializedType<
                  { blank: false; initial: undefined; localize: true; required: false },
              >,
              InitializedType<
                  { blank: false; initial: undefined; localize: true; required: false },
              >,
          >;
          treatedAs: StringField<
              { blank: false; initial: undefined; required: false },
              AssignmentType<{ blank: false; initial: undefined; required: false }>,
              InitializedType<{ blank: false; initial: undefined; required: false }>,
              InitializedType<{ blank: false; initial: undefined; required: false }>,
          >;
          weight: SchemaField<
              {
                  bonusPerPound: NumberField<
                      { initial: 0; integer: false; positive: false; required: false },
                      AssignmentType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                      InitializedType<
                          { initial: 0; integer: false; positive: false; required: false },
                      >,
                  >;
                  multiplier: NumberField<
                      { initial: 1; integer: false; positive: true; required: false },
                      AssignmentType<
                          { initial: 1; integer: false; positive: true; required: false },
                      >,
                      InitializedType<
                          { initial: 1; integer: false; positive: true; required: false },
                      >,
                      InitializedType<
                          { initial: 1; integer: false; positive: true; required: false },
                      >,
                  >;
              },
              DefaultOptions,
              AssignmentType<
                  {
                      bonusPerPound: NumberField<
                          { initial: 0; integer: false; positive: false; required: false },
                          AssignmentType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                          InitializedType<
                              { initial: 0; integer: false; positive: false; required: false },
                          >,
                      >;
                      multiplier: NumberField<
                          { initial: 1; integer: false; positive: true; required: false },
                          AssignmentType<
                              { initial: 1; integer: false; positive: true; required: false },
                          >,
                          InitializedType<
                              { initial: 1; integer: false; positive: true; required: false },
                          >,
                          InitializedType<
                              { initial: 1; integer: false; positive: true; required: false },
                          >,
                      >;
                  },
                  SimpleMerge<DefaultOptions, DefaultOptions>,
              >,
              {
                  bonusPerPound: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  multiplier: InitializedType<
                      { initial: 1; integer: false; positive: true; required: false },
                  >;
              },
              {
                  bonusPerPound: InitializedType<
                      { initial: 0; integer: false; positive: false; required: false },
                  >;
                  multiplier: InitializedType<
                      { initial: 1; integer: false; positive: true; required: false },
                  >;
              },
          >;
      }