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

View raw

{
  "$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"
    ]
  }
}