# Race
A playable race with stats and skills.
## Definitions
### Race (`Race`)
A playable race with stats and skills.
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`id` | The race's identifier. An unique, increasing integer. | See details
`ap_value` | How many Adventure Points does the race cost during character creation? | See details
`base_values` | The race’s base values. | See details
`attribute_adjustments` | Describes how to raise or lower maximum attribute values during character creation. | See details
`automatic_advantages?` | A list of automatically applied advantages. This does only work for advantages with no further configuration such as level or special selection. | See details
`strongly_recommended_advantages?` | A list of strongly recommended advantages. | See details
`strongly_recommended_disadvantages?` | A list of strongly recommended disadvantages. | See details
`weight` | Configuration for random weight generation. | See details
`starting_age` | Defines the starting ages for the race. It depends on the selected experience level. | See details
`variants` | A list of available race variants where one has to be selected. If no variants are to be selected, a single variant with no name has to be provided which will be used as the missing values for the base race. | See details
`src` | | See details
`translations` | All translations for the entry, identified by IETF language tag (BCP47). | See details
#### `id`
The race's identifier. An unique, increasing integer.
- **Type:** Integer
- **Minimum:** `1`
#### `ap_value`
How many Adventure Points does the race cost during character creation?
- **Type:** Integer
- **Minimum:** `0`
#### `base_values`
The race’s base values.
- **Type:** BaseValues
#### `attribute_adjustments`
Describes how to raise or lower maximum attribute values during character creation.
- **Type:** AttributeAdjustments
#### `automatic_advantages?`
A list of automatically applied advantages. This does only work for advantages with no further configuration such as level or special selection.
- **Type:** List
- **Items:** Race/automatic_advantages[]
- **Minimum Items:** `1`
#### `strongly_recommended_advantages?`
A list of strongly recommended advantages.
- **Type:** List
- **Items:** Race/strongly_recommended_advantages[]
- **Minimum Items:** `1`
#### `strongly_recommended_disadvantages?`
A list of strongly recommended disadvantages.
- **Type:** List
- **Items:** Race/strongly_recommended_disadvantages[]
- **Minimum Items:** `1`
#### `weight`
Configuration for random weight generation.
- **Type:** RandomWeightGeneration
#### `starting_age`
Defines the starting ages for the race. It depends on the selected experience level.
- **Type:** List
- **Items:** Race/starting_age[]
- **Minimum Items:** `7`
- **Maximum Items:** `7`
#### `variants`
A list of available race variants where one has to be selected. If no variants are to be selected, a single variant with no name has to be provided which will be used as the missing values for the base race.
- **Type:** RaceVariants
#### `src`
- **Type:** PublicationRefs
#### `translations`
All translations for the entry, identified by IETF language tag (BCP47).
- **Type:** LocaleMap<RaceTranslation>
---
### `Race/automatic_advantages[]`
- **Type:** AdvantageReference
---
### `Race/strongly_recommended_advantages[]`
- **Type:** CommonnessRatedAdvantageDisadvantage<AdvantageIdentifier>
---
### `Race/strongly_recommended_disadvantages[]`
- **Type:** CommonnessRatedAdvantageDisadvantage<DisadvantageIdentifier>
---
### `Race/starting_age[]`
- **Type:** StartingAgeConfigForExperienceLevel
---
### `BaseValues`
The race’s base values.
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`life_points` | The race’s life point base value. | See details
`spirit` | The race’s Spirit base value. | See details
`toughness` | The race’s Toughness base value. | See details
`movement` | The race’s tactical movement rate. | See details
#### `life_points`
The race’s life point base value.
- **Type:** Integer
#### `spirit`
The race’s Spirit base value.
- **Type:** Integer
#### `toughness`
The race’s Toughness base value.
- **Type:** Integer
#### `movement`
The race’s tactical movement rate.
- **Type:** Integer
- **Minimum:** `1`
---
### `AttributeAdjustments`
Describes how to raise or lower maximum attribute values during character creation.
- **Type:** Object
- **Minimum Properties:** `1`
Key | Description | Details
:-- | :-- | :--
`fixed?` | The values by which the maximum of the respective attribute is modified. | See details
`selectable?` | An array of attribute maximum modifiers, where the attribute they apply to is selected from a list of options. | See details
#### `fixed?`
The values by which the maximum of the respective attribute is modified.
- **Type:** List
- **Items:** AttributeAdjustments/fixed[]
- **Minimum Items:** `1`
#### `selectable?`
An array of attribute maximum modifiers, where the attribute they apply to is selected from a list of options.
The array only permits a single entry because no race specified more than one selectable attribute adjustment so far. But the schema allows for multiple entries to be future-proof.
- **Type:** List
- **Items:** AttributeAdjustments/selectable[]
- **Minimum Items:** `1`
- **Maximum Items:** `1`
---
### `AttributeAdjustments/fixed[]`
- **Type:** FixedAttributeAdjustment
---
### `AttributeAdjustments/selectable[]`
- **Type:** SelectableAttributeAdjustment
---
### `FixedAttributeAdjustment`
A value by which the maximum of the respective attribute is modified.
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`id` | The attribute the modifier applies to. | See details
`value` | The value by which the specified attribute's maximum is modified (negative values will lower the maximum). | See details
#### `id`
The attribute the modifier applies to.
- **Type:** AttributeIdentifier
#### `value`
The value by which the specified attribute's maximum is modified
(negative values will lower the maximum).
- **Type:** Integer
---
### `SelectableAttributeAdjustment`
A value that will be added to the current maximum of the selected attribute that has been chosen from the listed attributes (negative values will lower the maximum).
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`list` | A list of attributes the player has to choose from. | See details
`value` | The value by which the selected attribute's maximum is modified (negative values will lower the maximum). | See details
#### `list`
A list of attributes the player has to choose from.
- **Type:** List
- **Items:** SelectableAttributeAdjustment/list[]
- **Minimum Items:** `2`
#### `value`
The value by which the selected attribute's maximum is modified
(negative values will lower the maximum).
- **Type:** Integer
---
### `SelectableAttributeAdjustment/list[]`
- **Type:** AttributeReference
---
### `RandomWeightGeneration`
Configuration for random weight generation.
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`base` | The base value used for random weight. The height subtrahend; in case of `Height - 110 + 2D6` it is `110`. | See details
`random` | The dice used for random weight. | See details
#### `base`
The base value used for random weight. The height subtrahend; in case of
`Height - 110 + 2D6` it is `110`.
- **Type:** Integer
- **Minimum:** `1`
#### `random`
The dice used for random weight.
- **Type:** List
- **Items:** RandomWeightGeneration/random[]
- **Minimum Items:** `1`
---
### `RandomWeightGeneration/random[]`
- **Type:** WeightDice
---
### `WeightDice`
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`number` | Number of dice of the same type. Example: 2 in 2D6. | See details
`sides` | Number of sides on every die. Example: 6 in 2D6. | See details
`offset_strategy` | The strategy how to offset the randomly generated values against the base value. Either they are all added or subtracted or even results are added and odd results are subtracted. | See details
#### `number`
Number of dice of the same type. Example: 2 in 2D6.
- **Type:** Integer
- **Minimum:** `1`
#### `sides`
Number of sides on every die. Example: 6 in 2D6.
- **Type:** DieType
#### `offset_strategy`
The strategy how to offset the randomly generated values against the base value. Either they are all added or subtracted or even results are added and odd results are subtracted.
- **Type:** WeightDiceOffsetStrategy
---
### `WeightDiceOffsetStrategy`
The strategy how to offset the randomly generated values against the base value. Either they are all added or subtracted or even results are added and odd results are subtracted.
- **Type:** Union
- **Cases:** WeightDiceOffsetStrategy'0 | WeightDiceOffsetStrategy'1 | WeightDiceOffsetStrategy'2
---
### `WeightDiceOffsetStrategy'0`
- **Constant:** `"Add"`
---
### `WeightDiceOffsetStrategy'1`
- **Constant:** `"Subtract"`
---
### `WeightDiceOffsetStrategy'2`
- **Constant:** `"AddEvenSubtractOdd"`
---
### `StartingAgeConfigForExperienceLevel`
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`id` | The selected experience level's identifier. | See details
`base` | The base value for the selected experience level. | See details
`random` | The random value for the selected experience level. It is going to be added to the base value. | See details
#### `id`
The selected experience level's identifier.
- **Type:** ExperienceLevelIdentifier
#### `base`
The base value for the selected experience level.
- **Type:** Integer
- **Minimum:** `1`
#### `random`
The random value for the selected experience level. It is going to be added to the base value.
- **Type:** Dice
---
### `RaceVariants`
A list of available race variants where one has to be selected. If no variants are to be selected, a single variant with no name has to be provided which will be used as the missing values for the base race.
- **Type:** List
- **Items:** RaceVariants[]
- **Minimum Items:** `1`
---
### `RaceVariants[]`
- **Type:** RaceVariant
---
### Race Variant (`RaceVariant`)
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`id` | An unique, increasing integer. | See details
`common_cultures` | The list of common cultures. | See details
`common_advantages?` | A list of common advantages. | See details
`common_disadvantages?` | A list of common disadvantages. | See details
`uncommon_advantages?` | A list of uncommon advantages. | See details
`uncommon_disadvantages?` | A list of uncommon disadvantages. | See details
`hair_color` | An array containing 20 (numeric) hair color identifiers. The array also represents the 20-sided die for a random hair color. | See details
`eye_color` | An array containing 20 (numeric) eye color identifiers. The array also represents the 20-sided die for a random eye color. | See details
`height` | Configuration for random height generation. | See details
`translations` | All translations for the entry, identified by IETF language tag (BCP47). | See details
#### `id`
An unique, increasing integer.
- **Type:** Integer
- **Minimum:** `1`
#### `common_cultures`
The list of common cultures.
- **Type:** List
- **Items:** RaceVariant/common_cultures[]
- **Minimum Items:** `1`
#### `common_advantages?`
A list of common advantages.
- **Type:** List
- **Items:** RaceVariant/common_advantages[]
- **Minimum Items:** `1`
#### `common_disadvantages?`
A list of common disadvantages.
- **Type:** List
- **Items:** RaceVariant/common_disadvantages[]
- **Minimum Items:** `1`
#### `uncommon_advantages?`
A list of uncommon advantages.
- **Type:** List
- **Items:** RaceVariant/uncommon_advantages[]
- **Minimum Items:** `1`
#### `uncommon_disadvantages?`
A list of uncommon disadvantages.
- **Type:** List
- **Items:** RaceVariant/uncommon_disadvantages[]
- **Minimum Items:** `1`
#### `hair_color`
An array containing 20 (numeric) hair color identifiers. The array also represents the 20-sided die for a random hair color.
- **Type:** List
- **Items:** RaceVariant/hair_color[]
- **Minimum Items:** `20`
- **Maximum Items:** `20`
#### `eye_color`
An array containing 20 (numeric) eye color identifiers. The array also represents the 20-sided die for a random eye color.
- **Type:** List
- **Items:** RaceVariant/eye_color[]
- **Minimum Items:** `20`
- **Maximum Items:** `20`
#### `height`
Configuration for random height generation.
- **Type:** Height
#### `translations`
All translations for the entry, identified by IETF language tag (BCP47).
- **Type:** LocaleMap<RaceVariantTranslation>
---
### `RaceVariant/common_cultures[]`
- **Type:** CultureReference
---
### `RaceVariant/common_advantages[]`
- **Type:** CommonnessRatedAdvantageDisadvantage<AdvantageIdentifier>
---
### `RaceVariant/common_disadvantages[]`
- **Type:** CommonnessRatedAdvantageDisadvantage<DisadvantageIdentifier>
---
### `RaceVariant/uncommon_advantages[]`
- **Type:** CommonnessRatedAdvantageDisadvantage<AdvantageIdentifier>
---
### `RaceVariant/uncommon_disadvantages[]`
- **Type:** CommonnessRatedAdvantageDisadvantage<DisadvantageIdentifier>
---
### `RaceVariant/hair_color[]`
- **Type:** HairColorReference
---
### `RaceVariant/eye_color[]`
- **Type:** EyeColorReference
---
### `Height`
Configuration for random height generation.
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`base` | The base value used for random height. | See details
`random` | The dice used for random height. | See details
#### `base`
The base value used for random height.
- **Type:** Integer
- **Minimum:** `1`
#### `random`
The dice used for random height.
- **Type:** List
- **Items:** Height/random[]
- **Minimum Items:** `1`
---
### `Height/random[]`
- **Type:** Dice
---
### `RaceVariantTranslation`
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`name?` | The race variant's name. If left empty, it defaults to the base race name. This can be used if the race has no (visible) variants so that a single variant has to be provided. | See details
`common_advantages?` | The respective common advantages text from the source book. | See details
`common_disadvantages?` | The respective common disadvantages text from the source book. | See details
`uncommon_advantages?` | The respective uncommon advantages text from the source book. | See details
`uncommon_disadvantages?` | The respective uncommon disadvantages text from the source book. | See details
#### `name?`
The race variant's name. If left empty, it defaults to the base race name. This can be used if the race has no (visible) variants so that a single variant has to be provided.
- **Type:** NonEmptyString
#### `common_advantages?`
The respective common advantages text from the source book.
- **Type:** NonEmptyString
#### `common_disadvantages?`
The respective common disadvantages text from the source book.
- **Type:** NonEmptyString
#### `uncommon_advantages?`
The respective uncommon advantages text from the source book.
- **Type:** NonEmptyString
#### `uncommon_disadvantages?`
The respective uncommon disadvantages text from the source book.
- **Type:** NonEmptyString
---
### `RaceTranslation`
- **Type:** Object
Key | Description | Details
:-- | :-- | :--
`name` | The race's name. | See details
`attribute_adjustments` | The respective attribute adjustments text from the source book. | See details
`automatic_advantages?` | The respective automatic advantages text from the source book. | See details
`strongly_recommended_advantages?` | The respective strongly recommended advantages text from the source book. | See details
`strongly_recommended_disadvantages?` | The respective strongly recommended disadvantages text from the source book. | See details
`errata?` | | See details
#### `name`
The race's name.
- **Type:** NonEmptyString
#### `attribute_adjustments`
The respective attribute adjustments text from the source book.
- **Type:** NonEmptyString
#### `automatic_advantages?`
The respective automatic advantages text from the source book.
- **Type:** NonEmptyString
#### `strongly_recommended_advantages?`
The respective strongly recommended advantages text from the source book.
- **Type:** NonEmptyString
#### `strongly_recommended_disadvantages?`
The respective strongly recommended disadvantages text from the source book.
- **Type:** NonEmptyString
#### `errata?`
- **Type:** Errata