Wikia

Pokémon Essentials Wiki

Evolution

Talk6
189pages on
this wiki
Evolution
Pikachu is evolving!
MarunoAdded by Maruno

This article describes Pokémon evolution. It details the different evolution methods available by default, and explains how to create new evolution methods.

See also

Defining a species

  • The evolution path is one thing that can be defined for a Pokémon species.

Evolution methods

A Pokémon can evolve in a variety of different ways, from gaining a level to gaining a new owner, or if it just really likes you. All evolution methods that exist in the Pokémon games have been coded into Essentials. There is even space for you to invent a few new methods of your own.

The evolution paths for a species are listed in the PBS file "pokemon.txt" as a series of comma-separated triplets. Each triplet describes one evolution branch, and contains the following information:

  1. The internal name of the species to evolve into.
  2. The name of the evolution method used.
  3. A special parameter the evolution method may use, such as a level number or item's internal name.

Each evolution method is checked in the order they are listed in the PBS file "pokemon.txt". If the Pokémon being checked can evolve through several different methods, and fulfils the criteria for more than one of them at the same time, it will evolve using the first checked method and ignore all the others.

The evolution methods that are checked whenever a Pokémon is levelled up are listed in the script section PokemonEvolution in the def pbMiniCheckEvolution, and are as follows:

Method number Method name Parameter Notes Pokémon that use this method
1 Happiness - The Pokémon will only evolve if its happiness is above or equal to 220. This number is set in the evolution method itself, so changing it will affect all Pokémon with this evolution method. Azurill, Buneary, Chansey, Cleffa, Golbat, Igglybuff, Munchlax, Pichu, Swadloon, Togepi, Woobat
2 HappinessDay - Exactly the same as "Happiness", but will only evolve during the daytime. Budew, Eevee, Riolu
3 HappinessNight - Exactly the same as "Happiness", but will only evolve during the night-time. Chingling, Eevee
4 Level Level The Pokémon will evolve when it levels up, if its Level is greater than or equal to the parameter. Most Pokémon
8 AttackGreater Level Exactly the same as "Level", except the Pokémon's Attack stat must also be greater than its Defense stat. Tyrogue
9 AtkDefEqual Level Exactly the same as "Level", except the Pokémon's Attack stat must also be equal to its Defense stat. Tyrogue
10 DefenseGreater Level Exactly the same as "Level", except the Pokémon's Attack stat must also be lower than its Defense stat. Tyrogue
11 Silcoon Level Exactly the same as "Level", except the last digit of the Pokémon's decimalised personal ID number must also be one of 0, 1, 2, 3 or 4. Wurmple
12 Cascoon Level Exactly the same as "Level", except the last digit of the Pokémon's decimalised personal ID number must also be one of 5, 6, 7, 8 or 9. Wurmple
13 Ninjask Level Exactly the same as "Level". There is no difference between the two methods at all. Is used alongside the method "Shedinja". Nincada
14 Shedinja Level Must be used with the method "Ninjask". Duplicates the Pokémon that just evolved (if there is an empty space in the party), and changes the duplicate's species to the given species. Nincada
15 Beauty Minimum beauty level The Pokémon will evolve when it levels up, if its beauty stat is greater than or equal to the parameter. Feebas
18 DayHoldItem Item The Pokémon will evolve if it levels up during the daytime while holding a particular item (named by the parameter). Happiny
19 NightHoldItem Item The Pokémon will evolve if it levels up during the night-time while holding a particular item (named by the parameter). Gligar, Sneasel
20 HasMove Move The Pokémon will evolve if it levels up while knowing a particular move (named by the parameter). Aipom, Bonsly, Lickitung, Mime Jr., Piloswine, Tangela, Yanma
21 HasInParty Species The Pokémon will evolve if it levels up while the player has a Pokémon of a certain species in their party (named by the parameter). The named Pokémon is unaffected. Mantyke
22 LevelMale Level Exactly the same as "Level", except the Pokémon must also be male. Burmy
23 LevelFemale Level Exactly the same as "Level", except the Pokémon must also be female. Burmy, Combee
24 Location Map ID The Pokémon will evolve when it levels up, if the player is currently on the map given by the parameter.

This method should be listed in the PBS file "pokemon.txt" before any others, because it is supposed to take priority over them (e.g. a happy Eevee should evolve into Leafeon, not Espeon/Umbreon, in the appropriate place).

Eevee, Magneton, Nosepass
26-32 Custom1 ... Custom7 Number between 0 and 65535 Unused methods, but can be used to create new evolution methods. -

The following three evolution methods are checked when an item (typically an evolution stone) is used on a Pokémon, rather than whenever it levels up. These methods are listed in the def pbMiniCheckEvolutionItem, just below the one for the above methods.

The difference between the methods above and the three below is that the evolution cannot be cancelled for the three methods below.

Method number Method name Parameter Notes Pokémon that use this method
7 Item Item The Pokémon will evolve if a particular item is used on it (named by the parameter - typically an evolution stone). Clefairy, Cottonee, Eelektrik, Eevee, Exeggcute, Gloom, Growlithe, Jigglypuff, Lampent, Lombre, Minccino, Misdreavus, Munna, Murkrow, Nidorina, Nidorino, Nuzleaf, Panpour, Pansage, Pansear, Petilil, Pikachu, Poliwhirl, Roselia, Shellder, Skitty, Staryu, Sunkern, Togetic, Vulpix, Weepinbell
16 ItemMale Item Exactly the same as "Item", except the Pokémon must also be male. Kirlia
17 ItemFemale Item Exactly the same as "Item", except the Pokémon must also be female. Snorunt

The following three evolution methods are checked when a the player receives a Pokémon in a trade. These methods are listed in the def pbMiniCheckEvolutionTrade, in the script section PokemonTrading.

As with the item evolution methods above, these evolution cannot be cancelled.

Method number Method name Parameter Notes Pokémon that use this method
5 Trade - The Pokémon will evolve immediately after it is traded. Boldore, Graveler, Gurdurr, Haunter, Kadabra, Machoke
6 TradeItem Item Exactly the same as "Trade", except the Pokémon must also be holding a particular item (named by the parameter). That item is removed afterwards. Clamperl, Dusclops, Electabuzz, Feebas, Magmar, Onix, Porygon, Porygon2, Poliwhirl, Rhydon, Scyther, Seadra, Slowpoke
25 TradeSpecies Species Exactly the same as "Trade", except the Pokémon must have been traded for a Pokémon of a certain species (named by the parameter). Karrablast, Shelmet

It is possible that a Pokémon will fulfil two or more evolution methods at the same time (e.g. Eevee can fulfil both happiness and location). To ensure that one method gets priority (e.g. Eevee evolving according to location, not happiness), simply reorder the methods listed in the appropriate Evolutions= line of the PBS file "pokemon.txt", so that the one that should take priority (e.g. "Location") is before the other method (e.g. "Happiness").

Examples

Evolutions=IVYSAUR,Level,16

The evolution path of Bulbasaur. It has only one evolution method, which is evolving through level up at Level 16 into Ivysaur.

Evolutions=TOGETIC,Happiness,

The evolution path of Togepi. It has only one evolution method, which is evolving when really happy into Togetic. Note the comma at the end of this line - the third entry of this triplet is still included, even though it is blank. Every evolution path must be a triplet (i.e. contain two commas).

Evolutions=VAPOREON,Item,WATERSTONE,JOLTEON,Item,THUNDERSTONE,FLAREON,Item,FIRESTONE,LEAFEON,Location,11,GLACEON,Location,8,ESPEON,HappinessDay,,UMBREON,HappinessNight,

The evolution paths of Eevee. It has seven evolution methods, as follows:

  • Use a Water Stone on it to evolve into Vaporeon.
  • Use a Thunderstone on it to evolve into Jolteon.
  • Use a Fire Stone on it to evolve into Flareon.
  • Level up on map 11 into Leafeon. Note this comes before the "Happiness" methods, so this will be checked first.
  • Level up on map 8 into Glaceon. Note this comes before the "Happiness" methods, so this will be checked first.
  • Level up when really happy during the day to evolve into Espeon.
  • Level up when really happy during the night to evolve into Umbreon.
Evolutions=NINJASK,Ninjask,20,SHEDINJA,Shedinja,20

The evolution paths of Nincada. It uses the twin evolution methods of "Ninjask" and "Shedinja":

  • "Ninjask" evolves the Nincada into a Ninjask at/above Level 20, just like "Level" does.
  • "Shedinja" immediately duplicates the Ninjask (if there is an empty spot in the player's party), and turns the duplicate into a Shedinja.

Note that these method names are named after members of the Nincada family only because they are the only Pokémon that exhibit this behaviour. Fakemon can use these methods just as easily.

Creating a new evolution method

Every evolution method (except trade-related ones) is written in the script section PokemonEvolution, in the defs pbMiniCheckEvolution and pbMiniCheckEvolutionItem. Note that the parameter (Level number, item name, move name or species name) is always referred to by the name level.

To add a new evolution method, use the section labelled "Custom 1" (method number 26). Fill it with code similar to that in the other methods, depending on what you want the method to be. That is technically all you need to do to create a new, working evolution method.

You may also wish to rename "Custom1" to something a bit more memorable. If so, search all the script sections for the places where the phrase "Custom1" appears. There should be only two places: in the script sections Compiler and PokemonEditor. Simply replace the names in both places with new ones. Note that exact spelling and capitalisation is important, and for convenience, do not use spaces or punctuation. All this does is rename the method, not change how it works. If you rename "Level" to "HappyRain", it will still behave as "Level". That's all you need to do to rename the evolution methods. Evolution method names are only used in the PBS file "pokemon.txt".

An evolution method can use up to one parameter. Possible types of parameter are a number, an item name, a move name or a species name. Which type of parameter an evolution method has is determined in an array called "evoparams". Again, search the script sections for where this phrase appears, and again, it should only appear twice (in the same defs as the method names above). This array contains numbers, arranged in the same order as the evolution methods given above, where the numbers mean the following:

  • 0 - The method does not use a parameter.
  • 1 - The parameter is a number between 0 and 65535. Typically used for Level numbers, but can be used for any kind of number (e.g. beauty/happiness threshold).
  • 2 - The parameter is the internal name of an item.
  • 3 - The parameter is the internal name of a move.
  • 4 - The parameter is the internal name of a Pokémon species.
  • 5 - The parameter is a number between 0 and 65535 (just like 1).

By default, all the "Custom" evolution methods have a parameter type of "5" (a number), and are all at the end of the array.

Finally, if for whatever reason you end up needing more than seven new evolution methods, then simply add new ones on the end. You will need to extend both the list of names and the "evoparams" array in both places they appear to add extra entries, and then add a new section in the desired pbMiniCheckEvolution def just like for all the other methods.

Possible new evolution methods

There is a great deal of flexibility in what an evolution method can be. In addition to using the terms "pokemon" (the Pokémon being checked to see if it can evolve), "poke" (the species the Pokémon would evolve into) and "level" (the special parameter), you can use any recorded aspect in the game (e.g. weather, location). Some ideas are detailed below.

You could also tweak a few existing methods, such as changing the "Happiness" methods to use a numerical parameter (here representing the happiness threshold), and allowing each species that uses these methods to evolve at different levels of happiness to each other (e.g. you could have Cleffa evolve above a happiness of 220, but Chansey only above a happiness of 250). To carry out this particular change, note that you will need to change the "evoparams" number associated with these methods from a "0" to a "1" (see above for what this means), edit the method itself to replace the number "220" with "level" (remember that, here, "level" is just the name of the parameter), and then edit the PBS file "pokemon.txt" to include happiness thresholds for all appropriate evolutions.

Other ideas:

  • Merge two or more existing methods together into a new one.
  • Evolutions that depend on the Pokémon's nature or form.
  • Fusion evolution (e.g. for Magnemite/Slowpoke). Check that there is a Shellder in the party, and if so, delete it and evolve the levelled-up Slowpoke.
  • Disable all evolutions for a time by inserting the line return -1 if $game_switches[42] at the very beginning of the def pbCheckEvolutionEx (in the script section PokemonEvolution, next to a similar line for the Everstone) and then setting Global Switch 42 to ON whenever you want to forbid all evolutions.

Hatred

This method is almost identical to "Happiness", with the sole changes of replacing the "greater than" sign to a "less than" sign, and changing the threshold value. If you use this method, you should also make it easier to get a Pokémon to hate you in-game (currently the only ways to do this are fainting and using herbal medicine, which can easily be countered by the many more happiness-boosting methods).

As with "Happiness", this method would not use a special parameter (unless it was modified in the way mentioned above about "Happiness", to allow species-specific hatred thresholds).

Evolution=HATEMON,Hatred,

This is an example of the "Evolution" line in the PBS file "pokemon.txt".

Weather

You can have a species evolve only during a certain kind of overworld weather. The following is the code for allowing evolution only if it is raining (both rain and storm):

return poke if $game_screen && ($game_screen.weather==1 || $game_screen.weather==2)

You can make several copies of this method, but just change the weather type each time, for a weather-based Pokémon with several evolutions each based on a different kind of weather.

As is, this method would not use a special parameter.

Evolution=RAINYMON,Rain,,SUNNYMON,Sunny,

This is an example of the "Evolution" line in the PBS file "pokemon.txt".

Well trained

"Well trained" here means that the Pokémon has been in battles and has gained EVs. The following code checks how many EVs the Pokémon has, and allows evolution only if that amount is greater than or equal to the EV threshold value set by the parameter.

evtotal=0
for i in 0...6
 evtotal+=pokemon.ev[i]
end
return poke if evtotal>=level

Remember that the maximum number of EVs a Pokémon can have is 510.

This method's special parameter would be a number.

Evolution=TRAINEDMON,Trained,400

This is an example of the "Evolution" line in the PBS file "pokemon.txt".

Evolution screen

EvolutionCustomBack
The evolution screen with a custom background.
MrchewyAdded by Mrchewy

When a Pokémon evolves, it is displayed on screen with some messages ("What? Pikachu is evolving!", etc.). The player has the chance to cancel some evolutions by pressing a button during the animation.

The animation itself is described in the def pbGenerateMetafiles. It shows the Pokémon's sprite fade to a dark red colour, then spin around more and more quickly before fading into the evolved Pokémon's sprite, and then reversing this process.

The background used for the evolution screen is located in the "Graphics/Pictures" folder, and is called "evolutionbg.png". This image will be tiled across the entire background. If there is no picture with this name, a blank white background will be shown instead.


Related tutorials

Around Wikia's network

Random Wiki