Party

*For ways to give, take or check for Pokémon, see Manipulating Pokémon.*
*For how to change the properties of a Pokémon, see Editing a Pokémon.*

This page describes the player's **party**. The party screen is primarily accessed from the pause menu and displays all Pokémon the player currently has to hand.

## The party

The player can carry around up to 6 Pokémon at any one time, which they use to battle with and traverse obstacles with. This set of Pokémon is the player's party.

The player's party is stored as an array called `$player.party`. It can contain up to 6 Pokémon/eggs.

* `$player.party[4]` is the Pokémon/egg in the fifth position of the party (or `nil` if the party isn't that full).
* `$player.first_party` is the player's lead Pokémon/egg.
* `$player.last_party` is *always* the Pokémon/egg at the end of the party. Useful for locating newly added Pokémon.
* `$player.party_count` is the number of Pokémon/eggs in the party.

You can then find and edit specific properties of a given Pokémon, e.g.

* `$player.first_party.species` is the species of the player's lead Pokémon/egg.
* `$player.party[1].level = 42` sets the level of the player's second Pokémon/egg to 42.

The maximum number of Pokémon/eggs that can be in the party at once is given by the setting `MAX_PARTY_SIZE`, which is 6 by default. Note that various UI will not support more than 6 party members, so all that will need to be redesigned if you want to increase this limit.

### Variants of the party

`$player.party` is the entire player's party, including eggs and fainted Pokémon. However, sometimes eggs and/or fainted Pokémon will need to be ignored when manipulating the contents of the party. For this reason, there are two variants of the `$player.party` array which can be used instead, both of which derive from it:

* `$player.pokemon_party` is the same as `$player.party`, except it ignores any eggs in the party.
* `$player.able_party` is the same as `$player.party`, except it ignores any eggs and fainted Pokémon in the party.

They can be used in the same way as `$player.party`. For example:

* `$player.pokemon_count` is the number of Pokémon in the party (fainted and unfainted).
* `$player.first_pokemon` is the first Pokémon in the party (ignores eggs).
* `$player.last_pokemon` is the last Pokémon in the party (ignores eggs).
* `$player.able_pokemon_count` is the number of unfainted Pokémon in the party.
* `$player.first_able_pokemon` is the first Pokémon in the party that can battle, i.e. it is the Pokémon that will be sent out first in battles.
* `$player.last_able_pokemon` is the last unfainted Pokémon in the party (ignores eggs and fainted Pokémon).
* `$player.pokemon_party[1].level = 42` sets the level of the player's second Pokémon to 42.

## Party screen

The party screen is displayed by the code in the script section **UI\_Party**. It can be accessed via the pause menu, when choosing to use/give an item to a Pokémon from the Bag, when choosing a Pokémon, and through the battle screen.

Each Pokémon in the party has its own panel in the party screen, which displays various bits of information about it (including an icon, its name/nickname, level, HP, whether it has a held item, and so on). The contents of this panel are displayed by `class PokemonPartyPanel` in `def refresh`.

The graphics used in the party screen are all in the folder "Graphics/Pictures/Party", except for the Pokémon icons which are in the appropriate folder in the folder "Graphics/Pokemon".

A Pokémon in the party can be selected, at which point a menu will appear containing a list of options. These options can vary depending on the situation, but tend to include "Summary", "Switch" and a list of moves that Pokémon knows which can be used outside battle.

In Debug mode, this menu contains an additional option called "Debug", which allows the user to easily view/edit the properties of the selected Pokémon.