Summary
- Description
- A Pokémon species is a single named entity in the Pokédex.
- Data path
- resources/data/pokemon/
- Schema
- https://poketools.gamestuff.info/data/schema/pokemon.json
Filename
Pokémon identifier
A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
Top-level keys
Version group identifier
A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
Fields
name
The entity’s user-facing name. All of UTF-8 is valid here, so use “é” where appropriate.
- type
-
string
- required
position
The sorting position for this entity.
- type
-
integer
- default
-
0 - required
numbers
A mapping describing the numbers this species has across the Pokédexes it appears in. Keys are Pokédex identifiers, values are numbers.
- type
- mapping[string: integer]
pokemon
Pokémon are defined as a form with different types, moves, or other game- changing properties; e.g. There are four separate “Pokemon” for Deoxys, but only one for Unown.
Keys are used as identifiers for referencing that specific Pokémon.
- type
- mapping
- minimum values
- 1
- required
name
The entity’s user-facing name. All of UTF-8 is valid here, so use “é” where appropriate.
- type
-
string
- required
genus
The short flavor text, such as “Seed” or “Lizard”; usually affixed with the word “Pokémon”.
- type
- string
color
Identifier for the Pokémon Color, used for a search function in the games. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
shape
Identifier for the Pokémon Shape, used for a search function in the games. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
habitat
Identifier for the Pokémon Habitat, used for a search function in the games. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
female_rate
Percentage of wild encounters that are female.
- type
- integer
- minimum
- 0
- maximum
- 100
capture_rate
Wild capture rate, used as part of the Pokéball calculations.
- type
- integer
- minimum
- 1
- maximum
- 255
- required
baby
Is this a baby (and thus unable to breed)?
- type
- boolean
- default
- false
hatch_steps
Number of steps in one egg cycle. The number of cycles before hatching depends on the generation.
- type
- integer
- minimum
- 1
growth_rate
Growth Rate identifier. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
-
string
- pattern
-
^[a-z0-9\-]+$(Test) - required
forms_switchable
Has manually-switchable forms?
- type
- boolean
- default
- false
forms_note
A special note about how forms work with the Pokémon.
Textual content formatted with Markdown. See the CommonMark Spec for details.
- type
- string
pal_park
Pal Park data, for version groups with the Pal Park.
- type
- mapping
area
Pal Park Area identifier. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
-
string
- pattern
-
^[a-z0-9\-]+$(Test) - required
rate
Encounter rate in the Pal Park.
- type
- integer
- minimum
- 1
- maximum
- 100
- required
score
Points earned when capturing this Pokémon in the Pal Park game.
- type
- integer
- minimum
- 1
- required
default
Is this entity the default in the collection?
- type
- boolean
- default
-
false
height
Height, in decimeters.
- type
- integer
- minimum
- 1
- required
weight
Weight, in hectograms.
- type
- integer
- minimum
- 1
- required
experience
Base experience earned when defeating this Pokémon in battle.
- type
- integer
- minimum
- 1
- required
types
A list of Type identifiers.
- type
- list
- required
- minimum values
- 1
egg_groups
A list of Egg Group identifiers.
- type
- list
mega
Is this a Mega Evolution?
- type
- boolean
- default
- false
stats
A mapping describing this Pokémon’s stats. Keys are Stat identifiers.
- type
- mapping[string: mapping]
- required
base_value
Base stat value
- type
- integer
- minimum
- 1
- maximum
- 255
- required
effort_change
EV earned by opponent when this Pokémon is defeated in battle.
- type
- integer
- minimum
- 0
- required
evolution_conditions
A mapping describing how a Pokémon can evolve into this one. Keys are Evolution Trigger identifiers. Values are one or more of the conditions listed below. A Pokémon will evolve under the given trigger when all of the conditions are true. See existing data for examples.
- type
- mapping[string: mapping]
bag_item
Identifier for the Item that must be in the player’s bag. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
trigger_item
Identifier for the Item that will trigger evolution (e.g. evolutionary stone). A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
minimum_level
Minimum level
- type
- integer
- minimum
- 2
- maximum
- 100
gender
Gender identifier. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
location
Identifier for the Location where evolution can take place. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
held_item
Identifier for the Item that must be held. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
time_of_day
A list of identifiers for the Time of Day when evolution can take place. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
known_move
Identifier for the Move the Pokémon must know. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
known_move_type
Identifier for the Type of Move a Pokémon must know. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
minimum_happiness
Minimum happiness
- type
- integer
- minimum
- 1
- maximum
- 255
minimum_beauty
Minimum beauty
- type
- integer
- minimum
- 1
- maximum
- 255
minimum_affection
Minimum affection (from Pokémon-Amie or similar)
- type
- integer
- minimum
- 1
- maximum
- 5
party_species
Identifier for the Pokémon Species that must be in the party. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
party_type
Identifier for the Type of Pokémon that must be in the party. with. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
physical_stats_difference
The difference in physical stats:
- Attack > Defense →
1 - Attack < Defense →
-1 - Attack = Defense →
0
- type
- integer
- values
-
- -1
- 0
- 1
traded_for_species
Identifier for the Pokémon Species that must be traded for. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
overworld_weather
Identifier for the Weather condition that must be present. A machine-usable name for the entity. This is usually a munged version of the entity name. An identifier must consist only of lowercase ASCII characters, 0-9, and/or a hyphen.
i.e. anything unique to the entity matching the regular expression
^[a-z0-9\-]+$ (Test it here)
- type
- string
- pattern
-
^[a-z0-9\-]+$(Test)
console_inverted
Is the console upside-down?
- type
- boolean
abilities
A mapping describing the Pokémon’s Abilities. Keys are the Ability identifier.
- type
- mapping[string: mapping]
position
The sorting position for this entity.
- type
-
integer
- default
-
0 - required
hidden
Is this a Hidden Ability?
- type
- boolean
- default
- false
wild_held_items
A two-level mapping describing items this Pokémon can be found holding in the wild. First-level keys are Version identifiers; second-level keys are Item identifiers. Values are the percent chance. For example:
gold:
lucky-egg: 5
- type
- mapping[string: mapping[string: integer]]
- minimum
- 1
- maximum
- 100
flavor_text
A mapping describing how this Pokémon is described in the Pokédex. Keys are Version identifiers. Values are flavor text.
- type
- mapping[string: string]
How this entity is described in-game. Include line breaks where appropriate.
- type
- string
evolution_parent
A special string in the format {species}/{pokemon} for the Pokémon that
evolves into this one.
- type
- string
forms
An individual form of a Pokémon.
This includes every variant (except shiny differences) of every Pokémon, regardless of how the games treat them. Even Pokémon with no alternate forms have one form to represent their lone “normal” form.
Keys are used as identifiers for referencing that specific Form.
- type
- mapping
- required
- minimum values
- 1
name
The entity’s user-facing name. All of UTF-8 is valid here, so use “é” where appropriate.
- type
-
string
- required
form_name
Similar to name, except only distinguishes this Form from other Forms of the
same Pokémon. E.g. name = Unown A, form_name = A
- type
- string
- required
default
Is this entity the default in the collection?
- type
- boolean
- default
-
false
battle_only
Is this Form only available in battle?
- type
- boolean
- default
- false
pokeathlon_stats
This Form’s base Pokéathlon stats. Keys are Pokéathlon Stat identifiers.
- type
- mapping[string: mapping]
base_value
- type
- integer
- minimum
- 0
- maximum
- 5
- required
range
A range is either a single integer or two integers separated by a hyphen, e.g.
5 or 1-10.
- minimum
- 0
- maximum
- 5
- required
icon
Menu icon. The path to the asset, relative to the entity type’s asset directory.
- type
- string
sprites
List of battle sprites. The path to the asset, relative to the entity type’s asset directory.
- type
-
string
- type
-
list[string]
art
List of concept art. Not all Forms will have this. The path to the asset, relative to the entity type’s asset directory.
- type
-
string
- type
-
list[string]
footprint
Pokémon’s footprint. The path to the asset, relative to the entity type’s asset directory.
- type
- string
cry
Pokémon’s cry The path to the asset, relative to the entity type’s asset directory.
- type
- string
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://poketools.gamestuff.info/data/schema/pokemon.json",
"title": "Pokemon Species",
"description": "A Pokémon species is a single named entity in the Pokédex.",
"type": "object",
"propertyNames": {
"title": "Version Group identifier",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "versionGroupIdentifier"
}
]
},
"minProperties": 1,
"additionalProperties": {
"type": "object",
"properties": {
"name": {
"$ref": "types/name.json"
},
"position": {
"$ref": "types/position.json"
},
"numbers": {
"title": "Pokedex numbers",
"type": "object",
"minProperties": 1,
"propertyNames": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"pokedexIdentifier",
{
"$func": "versionGroupHasPokedex",
"$vars": {
"versionGroup": {
"$ref": "1#"
}
}
}
]
}
]
}
},
"pokemon": {
"title": "Pokemon",
"description": "Pokémon are defined as a form with different types, moves, or other game-changing properties; e.g. There are four separate \"Pokemon\" for Deoxys, but only one for Unown.",
"minProperties": 1,
"propertyNames": {
"$ref": "types/identifier.json"
},
"additionalProperties": {
"type": "object",
"properties": {
"genus": {
"title": "Genus",
"type": "string"
},
"color": {
"title": "Color",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "pokemonColorIdentifier"
}
]
},
"shape": {
"title": "Shape",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"pokemonShapeIdentifier",
{
"$func": "pokemonShapeInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "3#"
}
}
}
]
}
]
},
"habitat": {
"title": "Habitat",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "habitatIdentifier"
}
]
},
"female_rate": {
"title": "Female rate",
"description": "Percentage of encounters that are female",
"type": "integer",
"minimum": 0,
"maximum": 100
},
"capture_rate": {
"title": "Capture rate",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"happiness": {
"title": "Initial happiness",
"type": "integer",
"minimum": 0,
"maximum": 255
},
"baby": {
"title": "Is baby?",
"type": "boolean",
"default": false
},
"hatch_steps": {
"title": "Steps in one egg cycle",
"type": "integer",
"minimum": 1
},
"growth_rate": {
"title": "Growth rate",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "growthRateIdentifier"
}
]
},
"forms_switchable": {
"title": "Has manually-switchable forms",
"type": "boolean"
},
"forms_note": {
"title": "Forms note",
"$ref": "types/markdown.json"
},
"pal_park": {
"title": "Pal Park location",
"type": "object",
"properties": {
"area": {
"title": "Area",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "palParkAreaIdentifier"
}
]
},
"rate": {
"title": "Encounter rate",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"score": {
"title": "Score",
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false,
"required": [
"area",
"rate",
"score"
]
},
"name": {
"$ref": "types/name.json"
},
"default": {
"title": "Default",
"type": "boolean",
"default": false
},
"height": {
"title": "Height (dm)",
"type": "integer",
"minimum": 1
},
"weight": {
"title": "Weight (hg)",
"type": "integer",
"minimum": 1
},
"experience": {
"title": "Experience",
"type": "integer",
"minimum": 1
},
"types": {
"title": "Types",
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"typeIdentifier",
{
"$func": "typeInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "4#"
}
}
}
]
}
]
}
},
"egg_groups": {
"title": "Egg groups",
"type": "array",
"minItems": 1,
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "eggGroupIdentifier"
}
]
}
},
"mega": {
"title": "Is Mega Evolution",
"type": "boolean",
"default": false
},
"stats": {
"title": "Stats",
"type": "object",
"propertyNames": {
"type": "string",
"$filters": "statIdentifier"
},
"minProperties": 1,
"additionalProperties": {
"type": "object",
"properties": {
"base_value": {
"title": "Base value",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"effort_change": {
"title": "Effort change",
"type": "integer",
"minimum": 0
}
},
"additionalProperties": false,
"required": [
"base_value",
"effort_change"
]
}
},
"evolution_conditions": {
"title": "Evolution conditions",
"type": "object",
"propertyNames": {
"title": "Evolution trigger",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "evolutionTriggerIdentifier"
}
]
},
"additionalProperties": {
"oneOf": [
{
"type": "array",
"minItems": 0,
"maxItems": 0
},
{
"type": "object",
"minProperties": 0,
"additionalProperties": false,
"properties": {
"bag_item": {
"title": "Item in Bag",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"itemIdentifier",
{
"$func": "itemInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"trigger_item": {
"title": "Trigger item",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"itemIdentifier",
{
"$func": "itemInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"minimum_level": {
"title": "Minimum level",
"type": "integer",
"minimum": 2,
"maximum": 100
},
"gender": {
"title": "Gender",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "genderIdentifier"
}
]
},
"location": {
"title": "Location",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"locationIdentifier",
{
"$func": "locationInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"held_item": {
"title": "Held item",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"itemIdentifier",
{
"$func": "itemInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"time_of_day": {
"title": "Time of day",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "timeOfDayIdentifier"
}
]
}
},
"known_move": {
"title": "Knows move",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"moveIdentifier",
{
"$func": "moveInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"known_move_type": {
"title": "Knows move of type",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"typeIdentifier",
{
"$func": "typeInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"minimum_happiness": {
"title": "Minimum happiness",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"minimum_beauty": {
"title": "Minimum beauty",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"minimum_affection": {
"title": "Minimum affection",
"type": "integer",
"minimum": 1,
"maximum": 5
},
"party_species": {
"title": "In party with species",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"speciesIdentifier",
{
"$func": "speciesInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"party_type": {
"title": "In party with type",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"typeIdentifier",
{
"$func": "typeInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"physical_stats_difference": {
"title": "Physical stats difference",
"type": "integer",
"minimum": -1,
"maximum": 1
},
"traded_for_species": {
"title": "Traded for species",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"speciesIdentifier",
{
"$func": "speciesInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "5#"
}
}
}
]
}
]
},
"overworld_weather": {
"title": "Overworld weather",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "weatherIdentifier"
}
]
},
"console_inverted": {
"title": "Console upside-down",
"type": "boolean"
}
}
}
]
}
},
"abilities": {
"title": "Abilities",
"type": "object",
"propertyNames": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"abilityIdentifier",
{
"$func": "abilityInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "3#"
}
}
}
]
}
]
},
"additionalProperties": {
"type": "object",
"properties": {
"hidden": {
"title": "Hidden ability",
"type": "boolean",
"default": false
},
"position": {
"$ref": "types/position.json"
}
},
"additionalProperties": false,
"required": [
"position"
]
}
},
"wild_held_items": {
"title": "Wild held items",
"type": "object",
"propertyNames": {
"title": "Version identifier",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"versionIdentifier",
{
"$func": "versionInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "3#"
}
}
}
]
}
]
},
"additionalProperties": {
"type": "object",
"propertyNames": {
"title": "Item identifier",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"itemIdentifier",
{
"$func": "itemInVersionGroup",
"$vars": {
"version": {
"$ref": "0#"
}
}
}
]
}
]
},
"additionalProperties": {
"title": "Percent chance",
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
},
"flavor_text": {
"title": "Flavor text",
"type": "object",
"minProperties": 1,
"propertyNames": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"versionIdentifier",
{
"$func": "versionInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "3#"
}
}
}
]
}
]
},
"additionalProperties": {
"$ref": "types/flavor_text.json"
}
},
"evolution_parent": {
"title": "Evolves from",
"type": "string",
"pattern": "^[a-z0-9\\-]+/[a-z0-9\\-]+$",
"$filters": [
{
"$func": "speciesPokemonCombination",
"$vars": {
"versionGroup": {
"$ref": "3#"
}
}
}
]
},
"forms": {
"title": "Forms",
"type": "object",
"minProperties": 1,
"propertyNames": {
"$ref": "types/identifier.json"
},
"additionalProperties": {
"type": "object",
"properties": {
"name": {
"$ref": "types/name.json"
},
"form_name": {
"title": "Form name",
"$ref": "types/name.json"
},
"default": {
"title": "Default",
"type": "boolean",
"default": false
},
"battle_only": {
"title": "Battle only form",
"type": "boolean",
"default": false
},
"pokeathlon_stats": {
"title": "Pokeathlon stats",
"propertyNames": {
"title": "Pokeathlon stat",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "pokeathlonStatIdentifier"
}
]
},
"additionalProperties": {
"type": "object",
"properties": {
"base_value": {
"title": "Base value",
"type": "integer",
"minimum": 0,
"maximum": 5
},
"range": {
"title": "Range",
"oneOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 5
},
{
"allOf": [
{
"$ref": "types/range.json"
},
{
"type": "string",
"$filters": {
"$func": "range",
"$vars": {
"min": 0,
"max": 5
}
}
}
]
}
]
}
},
"additionalProperties": false,
"required": [
"base_value",
"range"
]
}
},
"icon": {
"title": "Icon",
"$ref": "types/asset_path.json"
},
"sprites": {
"title": "Sprites",
"type": "array",
"uniqueItems": true,
"items": {
"$ref": "types/asset_path.json"
}
},
"art": {
"title": "Concept art",
"type": "array",
"uniqueItems": true,
"items": {
"$ref": "types/asset_path.json"
}
},
"footprint": {
"title": "Footprint",
"$ref": "types/asset_path.json"
},
"cry": {
"title": "Cry",
"$ref": "types/asset_path.json"
}
},
"additionalProperties": false,
"required": [
"name",
"form_name"
]
},
"$filters": "singleDefault"
}
},
"additionalProperties": false,
"required": [
"capture_rate",
"growth_rate",
"name",
"height",
"weight",
"experience",
"types",
"stats",
"forms"
]
},
"$filters": "singleDefault"
}
},
"additionalProperties": false,
"required": [
"name",
"position",
"pokemon"
]
}
}