FANDOM


For giving, taking, counting and choosing Pokémon, see Manipulating Pokémon.

This page describes how to edit the attributes of a Pokémon, such as its gender, owner or ribbons.

Editing a Pokémon

The first step is to find the Pokémon to edit. This can be done a variety of different ways depending on the circumstances. For example:

pkmn = $Trainer.party[0]
pkmn = pbFirstAblePokemon(1)
pkmn = $Trainer.lastPokemon
pkmn = pbGetPokemon(1)

These will all return a Pokémon (if possible) and call it "pkmn". This article assumes that the Pokémon being edited is referred to as "pkmn".

Common attributes to edit

Attribute Code Description
Ability pkmn.setAbility(2) Sets the Pokémon's ability to be the first natural (0), second natural (1) or a hidden (2-5) ability available to its species. Use pkmn.setAbility(nil) to remove the override and have the ability determined by the Pokémon's personal ID.

It is not possible to give the Pokémon any ability other than those defined in the PBS file "pokemon.txt" for its species.

Ball used pkmn.ballused=7 Sets the type of Poké Ball the Pokémon is contained in. The list of Poké Balls and their corresponding numbers is in the script section PItem_PokeBalls.
EVs pkmn.ev[2]=42 Sets the Pokémon's EVs for a given stat. Each stat should be a number between 0 and 255 inclusive. The stats (the number in square brackets) are as follows:
  • 0 = HP
  • 1 = Attack
  • 2 = Defense
  • 3 = Speed
  • 4 = Special Attack
  • 5 = Special Defense
Form pkmn.form=1 Sets the Pokémon's form. 0 is the default form as defined in the PBS file "pokemon.txt".

Some Pokémon species determine their form automatically depending on various factors. Their form cannot be manually changed this way, as they will immediately change back.

Setting a Pokémon's form will also recalculate its stats.

Gender pkmn.makeMale
pkmn.makeFemale
Sets the Pokémon's gender to male or female. They cannot give a Pokémon a gender it cannot have. Use pkmn.setGender(nil) to remove the override and have the gender determined by the Pokémon's personal ID.

You will also need to record the new gender as seen, so that it will show up in the Pokédex. To do this, use pbSeenForm(pkmn) afterwards.

Happiness pkmn.happiness=200 Sets the Pokémon's happiness. This should be a number between 0 and 255 inclusive.
Held item pkmn.setItem(:ORANBERRY) Sets the Pokémon's held item. "0" means no item.

If the item is a mail item, then pkmn.mail should also be set: pkmn.mail=PokemonMail.new(PBItems::GRASSMAIL,"This is a message.","Dave")

If the item is a mail item which shows Pokémon on it, then this should instead be: pkmn.mail=PokemonMail.new(PBItems::GRASSMAIL,"This is a message.","Dave",pkmn1,pkmn2,pkmn3). Each "pkmn#" should be an array of the form [species,gender,shininess,form,shadowness,is egg?].

IVs pkmn.iv[2]=7 Sets the Pokémon's IVs for a given stat. Each stat should be a number between 0 and 31 inclusive. The stats (the number in square brackets) are as follows:
  • 0 = HP
  • 1 = Attack
  • 2 = Defense
  • 3 = Speed
  • 4 = Special Attack
  • 5 = Special Defense
Language pkmn.language=2 Sets the Pokémon's language. Is one of the following:
  • 0 = Unknown
  • 1 = Japanese
  • 2 = English (default)
  • 3 = French
  • 4 = Italian
  • 5 = German
  • 7 = Spanish
  • 8 = Korean
Level pkmn.level=42 Sets the Pokémon's current level.

What it actually does is change the Pokémon's "exp" value to be the lowest possible value for that level.

Moveset pkmn.pbLearnMove(:TACKLE)
pkmn.pbDeleteMove(:TACKLE)
pkmn.resetMoves
The first option teaches a move to the Pokémon. This can teach any move, and will do so without informing the player. If the Pokémon already knows 4 moves, the first move will be forgotten, the other three bumped up and the new move added to the end.

The second option deletes a move from the Pokémon, if it knows it. Again, this will happen without informing the player.

The third option resets the Pokémon's moveset to what a wild Pokémon of that species/level/form would know. This can be useful when changing a Pokémon's level/form.

Nature pkmn.setNature(:HASTY) Sets the Pokémon's nature. Use pkmn.setNature(nil) to remove the override and have the nature determined by the Pokémon's personal ID.
Nickname pkmn.name="Dave" Sets the Pokémon's nickname to a given phrase. Use pkmn.name=nil to remove the nickname.

To let the player choose their own name, simply call pbNickname(pkmn).

Obtain text pkmn.obtainText=_I("Day-Care Couple") Sets the phrase to use instead of the obtain map's name as the place where the Pokémon was obtained. Use pkmn.obtainText=nil to remove the phrase.
Pokérus pkmn.givePokerus
pkmn.givePokerus(4)
Gives the Pokémon Pokérus. The parameter is optional, and is the strain of Pokérus to give (between 1 and 15; the strain is randomly chosen if not given).

pkmn.pokerusStage will return either 0 (never infected), 1 (currently infectious), or 2 (cured/immune).

Ribbons pkmn.giveRibbon(:HOENNCOOL)
pkmn.takeRibbon(:HOENNCOOL)
Gives the Pokémon the specified ribbon (or removes it).

There are a few other methods dealing with ribbons:

  • pkmn.upgradeRibbon(:HOENNCOOL,:HOENNCOOLSUPER,:HOENNCOOLHYPER,:HOENNCOOLMASTER) - Any number of ribbons can be listed. Either adds the first ribbon if the Pokémon has none of them, or turns the possessed ribbon into the next one listed. Returns the number of the ribbon added/upgraded into, or 0 if nothing changed.
  • pkmn.ribbonCount - Returns the total number of ribbons the Pokémon has.
  • pkmn.hasRibbon?(:HOENNCOOL) - Returns TRUE if the Pokémon has the specified ribbon, and FALSE if not.
  • pkmn.clearAllRibbons - Removes all ribbons from the Pokémon.
Shadowness pkmn.makeShadow Makes the Pokémon a Shadow Pokémon. It is not so easy to turn a Shadow Pokémon into a regular Pokémon, though.
Shininess pkmn.makeShiny
pkmn.makeNotShiny
Makes the Pokémon shiny, or not. Use pkmn.shinyflag=nil to remove the override and have the shininess determined by the Pokémon's personal ID.

Rare attributes to edit

The following are attributes you are unlikely to ever want to edit. They are listed mainly for completeness.

Attribute Code Description
Contest stats pkmn.beauty=42
pkmn.cool=42
pkmn.cute=42
pkmn.smart=42
pkmn.tough=42
pkmn.sheen=42
Sets the Pokémon's contest stats. Each stat should be a number between 0 and 255 inclusive.

Note that these properties are currently unused (except beauty for Feebas' evolution).

Current HP pkmn.hp=42
pkmn.healHP
pkmn.heal
Sets the Pokémon's current HP. The second option fully heals the Pokémon's HP. The last option will also restore the Pokémon's PP and status to full/normal.
Egg steps pkmn.eggsteps=5355 Sets the number of steps required for the Pokémon egg to hatch.
Experience pkmn.exp=12345 Sets the Pokémon's Experience Points. You will usually want to add/subtract amounts from this, rather than setting it to a specific new value.
Fused Pokémon pkmn.fused=pkmn2 Sets the Pokémon which is fused with this Pokémon. pkmn2is itself a Pokémon. Use pkmn.fused=nil to erase the fused Pokémon.
Hatched map pkmn.hatchedMap=42 Sets the map in which the Pokémon hatched from an egg. Is used only if the Pokémon's obtain method is "egg received".
Hatched time pkmn.timeEggHatched=Time.now Sets the time at which the Pokémon hatched from an egg. Is used only if the Pokémon's obtain method is "egg received".
Markings pkmn.markings=5 Sets the markings the Pokémon has. Each marking has a value, and the Pokémon will have the markings whose values add up to the number specified. The six markings are in order:
  • 1 = ●
  • 4 = ▲
  • 2 = ■
  • 8 = ♥
  • 16 = ★
  • 32 = ♦

For example, if this number is 5, the values that make 5 are 1 (circle) and 4 (triangle), so the Pokémon will have those two markings.

Obtain level pkmn.obtainLevel=42 Sets the Level at which the Pokémon was obtained.
Obtain map pkmn.obtainMap=42 Sets the map in which the Pokémon was obtained.
Obtain method pkmn.obtainMode=1 Sets the method by which the Pokémon was obtained. The number is either nil, 0 ("met"), 1 ("egg received", i.e. it then hatched), 2 ("traded") or 4 ("fateful encounter").
Original trainer's gender pkmn.otgender=1 Sets the gender of the Pokémon's original trainer. The number is either 0 (male), 1 (female), 2 (mixed) or 3 (unknown).
Original trainer's ID number pkmn.trainerID=$Trainer.id
pkmn.trainerID=$Trainer.getForeignID
Sets the ID number of the Pokémon's original trainer. The first option sets it to the player's ID number, and the second option sets it to a random other ID number.

This and the original trainer's name determine whether the Pokémon originally belonged to the player or not.

Original trainer's name pkmn.ot="Dave" Sets the name of the Pokémon's original trainer.

This and the original trainer's ID number determine whether the Pokémon originally belonged to the player or not.

Personal ID pkmn.personalID=rand(2**32) Sets the Pokémon's personal ID. The example will randomise the Pokémon's personal ID, although it can also be set to any value between 0 and 4,294,967,295.

Note that the Pokémon's gender, nature, ability and shininess all depend on the value of the personal ID by default. Spinda's spot locations and the evolution methods "Silcoon" and "Cascoon" also depend on it.

Species pkmn.species=PBSpecies::BULBASAUR Sets the Pokémon's species.
Status pkmn.status=PBStatuses::POISON
pkmn.status=0
pkmn.healStatus
Sets the Pokémon's status. The possible statuses are:
  • 0 (healthy)
  • 1 (or PBStatuses::SLEEP)
  • 2 (or PBStatuses::POISON)
  • 3 (or PBStatuses::BURN)
  • 4 (or PBStatuses::PARALYSIS)
  • 5 (or PBStatuses::FROZEN)

If putting the Pokémon to sleep, then pkmn.statusCount=3should also be set, where the number is the number of rounds the Pokémon will remain asleep.

What can't be changed

There are some attributes of a Pokémon that cannot be changed directly. These are:

  • Type 1
  • Type 2
  • Stats:
    • Maximum HP
    • Attack
    • Defense
    • Speed
    • Special Attack
    • Special Defense

The last part of editing a Pokémon

Once a Pokémon's attributes have been edited, its stats may need to be recalculated. This is done by the following code:

pkmn.calcStats

To be safe, you should always include this line after all other edits.