This page provides a general overview of how moves work in the game.

Moves known by a Pokémon

Moves known by a Pokémon are stored in the array pokemon.moves. A Pokémon can only know a maximum of 4 moves at once (in fact, it will always know exactly 4 moves, blank ones being dummy moves). The first move is pokemon.moves[0], the second is pokemon.moves[1], and so forth. pokemon.numMoves is how many moves the Pokémon knows.

A move can be different to the same move known by another Pokémon in two ways:

  • Its current PP can be different
  • Its maximum PP can be different (due to PP Up items used on it)

Because of this, each move is an instance of the class "PBMove" rather than a stand-alone variable or set of variables. This class stores 3 numbers: the move's ID, the current PP and the number of PP Ups used on it.

The maximum number of PP Ups that can be used on a move is limited only by the effects of the PP Up and PP Max items themselves, and not by a fundamental part of the move's scripts.


  • You could let moves be "upgraded" by some means during the game, such as by increasing their base damage or the probability of their additional effects. The PP Up item is an existing feature which upgrades moves; you can just expand on that concept. Your upgrades don't have to be caused by items, of course.