Summary
- Description
- A technique or attack a Pokémon can learn to use.
- Data path
- resources/data/move/
- Schema
- https://poketools.gamestuff.info/data/schema/move.json
Filename
Move 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
crit_rate_bonus
Critical-hit rate bonus
- type
- integer
- minimum
- 1
drain
Drain amount, used by draining moves like Leach life.
- type
- integer
- minimum
- 1
flinch_chance
The percent chance this move will cause the target to flinch.
- type
- integer
- minimum
- 1
- maximum
- 100
ailment
Move Ailment 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)
ailment_chance
The percent chance of inflicting the above ailment on the target.
- type
- integer
- minimum
- 1
- maximum
- 100
recoil
Recoil damage, as a percentage of damage dealt.
- type
- integer
- minimum
- 1
- maximum
- 100
healing
The amount the target will be healed, as a percentage of the target’s maximum HP. Note this can be a negative number for moves that will inflict damage based on the target’s maximum HP, not the user’s power or some other calculation.
- type
- integer
- minimum
- -100
- maximum
- 100
flags
A list of Move Flag identifiers. Flags are special attributes that affect how the game treats this move.
- type
- list[string]
categories
A list of Move category identifiers.
- type
- list[string]
hits
How many times this move will hit in a single turn.
A range is either a single integer or two integers separated by a hyphen, e.g.
5 or 1-10.
- default
- 1
turns
How many turns this move will last, including both damage-dealing and non-damage-dealing turns (e.g. charge)
A range is either a single integer or two integers separated by a hyphen, e.g.
5 or 1-10.
- default
- 1
stat_changes
Stat changes this move will cause on the target, both increases and decreases. The key is the Stat identifier, the value is the change.
- type
- mapping[string: integer]
stat_change_chance
The chance of the stat change above affecting the target.
- type
- integer
- minimum
- 1
- maximum
- 100
type
Type 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
power
Move power
- type
- integer
- minimum
- 1
pp
Move PP
- type
- integer
- minimum
- 1
accuracy
If this move doesn’t consider accuracy (e.g. moves that affect the current team), omit this field.
- type
- integer
- minimum
- 1
- maximum
- 100
priority
Move priority
- type
- integer
- default
- 0
target
Target 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
damage_class
Move Damage Class identifier, where applicable to the generation. 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)
effect
Move Effect ID. The unique id for this entity. Only entities that have no clear name should use this numeric form.
- type
-
integer
- minimum
-
1
- required
effect_chance
Chance of causing some secondary effect on the target. Often used as a part of the effect description, as moves with the same effect may have a different chance of causing the same secondary effect.
- type
- integer
- minimum
- 1
- maximum
- 100
contest_type
Contest type 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)
contest_effect
Contest Effect ID. 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)
super_contest_effect
Super Contest Effect ID. 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)
contest_use_before
Identifiers for moves to use after this one as part of a combo in Contests.
- type
- list
contest_use_after
Identifiers for moves to use before this one as part of a combo in Contests.
- type
- list
super_contest_use_before
Identifiers for moves to use after this one as part of a combo in Super Contests.
- type
- list
super_contest_use_after
Identifiers for moves to use before this one as part of a combo in Super Contests.
- type
- list
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://poketools.gamestuff.info/data/schema/move.json",
"title": "Move",
"description": "A technique or attack a Pokémon can learn to use.",
"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"
},
"crit_rate_bonus": {
"title": "Critical-hit rate bonus",
"type": "integer",
"minimum": 1
},
"drain": {
"title": "Drain amount",
"type": "integer",
"minimum": 1,
"default": 0
},
"flinch_chance": {
"title": "Flinch chance",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"ailment": {
"title": "Ailment",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "ailmentIdentifier"
}
]
},
"ailment_chance": {
"title": "Ailment chance",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"recoil": {
"title": "Recoil",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"healing": {
"title": "Healing",
"type": "integer",
"minimum": -100,
"maximum": 100
},
"flags": {
"title": "Move flags",
"description": "Special attributes that affect how the game treats this move.",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "moveFlagIdentifier"
}
]
},
"default": []
},
"categories": {
"title": "Move categories",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"$filters": "moveCategoryIdentifier"
}
]
},
"default": []
},
"hits": {
"title": "Hit count",
"oneOf": [
{
"type": "integer",
"minimum": 1
},
{
"allOf": [
{
"$ref": "types/range.json"
},
{
"type": "string",
"$filters": {
"$func": "range",
"$vars": {
"min": 1
}
}
}
]
}
],
"default": 1
},
"turns": {
"title": "Turn count",
"description": "Number of turns this move can last",
"oneOf": [
{
"type": "integer",
"minimum": 1
},
{
"allOf": [
{
"$ref": "types/range.json"
},
{
"type": "string",
"$filters": {
"$func": "range",
"$vars": {
"min": 1
}
}
}
]
}
],
"default": 1
},
"stat_changes": {
"title": "Stat changes",
"type": "object",
"propertyNames": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "statIdentifier"
}
]
},
"additionalProperties": {
"type": "integer"
}
},
"stat_change_chance": {
"title": "Stat change chance",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"type": {
"title": "Type",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"typeIdentifier",
{
"$func": "typeInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "1#"
}
}
}
]
}
]
},
"power": {
"title": "Power",
"type": "integer",
"minimum": 1
},
"pp": {
"title": "PP",
"type": "integer",
"minimum": 1
},
"accuracy": {
"title": "Accuracy",
"description": "If this move doesn't consider accuracy (e.g. moves that affect the current team), leave this blank.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"priority": {
"title": "Priority",
"type": "integer",
"default": 0
},
"target": {
"title": "Target",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "moveTargetIdentifier"
}
]
},
"damage_class": {
"title": "Damage class",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "moveDamageClassIdentifier"
}
]
},
"effect": {
"title": "Effect Id",
"type": "integer",
"minimum": 1,
"$filters": [
"moveEffectId",
{
"$func": "moveEffectInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "1#"
}
}
}
]
},
"effect_chance": {
"title": "Effect chance",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"contest_type": {
"title": "Contest type",
"description": "Omit if this version group does not have Contests or Super Contests",
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": "contestTypeIdentifier"
}
]
},
"contest_effect": {
"title": "Contest effect Id",
"description": "Omit if this version group does not have Contests",
"type": "integer",
"minimum": 1,
"$filters": "contestEffectId"
},
"super_contest_effect": {
"title": "Super Contest effect Id",
"description": "Omit if this version group does not have Super Contests",
"type": "integer",
"minimum": 1,
"$filters": "superContestEffectId"
},
"contest_use_before": {
"title": "Contest combo (use before)",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"moveIdentifier",
{
"$func": "moveInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "2#"
}
}
}
]
}
]
}
},
"contest_use_after": {
"title": "Contest combo (use after)",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"moveIdentifier",
{
"$func": "moveInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "2#"
}
}
}
]
}
]
}
},
"super_contest_use_before": {
"title": "Super Contest combo (use before)",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"moveIdentifier",
{
"$func": "moveInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "2#"
}
}
}
]
}
]
}
},
"super_contest_use_after": {
"title": "Super Contest combo (use after)",
"type": "array",
"items": {
"allOf": [
{
"$ref": "types/identifier.json"
},
{
"type": "string",
"$filters": [
"moveIdentifier",
{
"$func": "moveInVersionGroup",
"$vars": {
"versionGroup": {
"$ref": "2#"
}
}
}
]
}
]
}
},
"flavor_text": {
"$ref": "types/flavor_text.json"
}
},
"additionalProperties": false,
"required": [
"name",
"type",
"target",
"effect"
]
}
}