Stat Mechanics
Welcome to the first Game Mechanics page of The Cave of Dragonflies: Pokémon Stats. As you should all know (or at least I hope so), every Pokémon has six stats named HP (Hit Points), Attack, Defense, Sp. Atk (Special Attack), Sp. Def (Special Defense), and Speed. Here I will walk you through exactly how these values are determined, the relevant terms, and the formulas used in the game.
The Stat Formula
The stat formula for Attack, Defense, Special Attack, Special Defense and Speed is this:
Stat = int(int((2 * B + I + E) * L / 100 + 5) * N)
Meanwhile, the HP formula is a little different:
Stat = int((2 * B + I + E) * L / 100 + L + 10)
You may have noticed that the HP formula is essentially exactly the same as the normal stat formula except for not multiplying by N (or having the rounding there) and replacing the 5 with L + 10; by all means think of it that way if the two formulas are confusing you. int(something), by the way, stands for rounding down, or taking off everything after the decimal point; don't let it confuse you. The letters in the formula are variables which will now be explained one by one.
B (Base Stat)
A base stat is a constant for each of the six stats of each Pokémon species, representing the general relative abilities of that species compared to others. Most online Pokédexes, including Veekun, will show base stats as the stats given on each Pokémon's entry. Base stats range from 1 to 255 and, since they are predetermined for each species, do not change or show any variation between individual Pokémon of the same species. Thanks to their great range, they are the very most influential factors of a Pokémon's stats, barring the level of the Pokémon.
The base stat of 1 is special in that it results in ignoring the formula given above and making the actual stat 1 irrelevant of all other stat factors. The only Pokémon this applies to is Shedinja, whose base and thus total HP is always 1.
When the second generation split R/B/Y's Special stat into Special Attack and Special Defense, the old Special base stat was always used for one of the new stats while the other was then created independently.
I (Individual Value)
Individual Values, or IVs as they are most commonly referred to (pre-Advance, they were often referred to as DVs, standing for either Deter Values or Diversification Values, but "IVs" is almost exclusively used today), are the values responsible for the proclamation that no two Pokémon are alike: they vary between individuals even if they're of the same species, at the same level, freshly caught, and have the same nature. In the pre-Advance games (Red, Blue, Yellow, Gold, Silver and Crystal), there were five IVs: HP, Attack, Defense, Speed and Special. (Even as Special was split into two stats in Gold, Silver and Crystal, the games maintained compatibility with Red, Blue and Yellow and thus had only one Special IV to apply to both Special Attack and Special Defense.) In the Advance games onwards, there is one IV for each of the six stats.
The IVs are randomly determined when you battle a wild Pokémon or an egg is generated (though when an egg is created, up to three of the randomly generated IVs are overwritten with inherited IVs from its parents) and can never be changed after that. In the pre-Advance games, their values ranged from 0 to 15, but in the Advance games onwards from 0 to 31. The HP IV was a little different in the pre-Advance games, too; it was not random, but determined from the other IVs as follows:
- Make a variable X and set its value to 0.
- If the Attack IV is odd, add 8 to X.
- If the Defense IV is odd, add 4 to X.
- If the Speed IV is odd, add 2 to X.
- If the Special IV is odd, add 1 to X.
- Make the HP IV equal to X.
This means that if a R/B/Y/G/S/C Pokémon has a perfect 15 for Attack, Defense, Speed and Special, it will automatically have a 15 for HP too, while conversely, if it has a 0 for Attack, Defense, Speed and Special, it will have 0 for HP too. This also, in a twist of fate, means that shiny Pokémon in those games, which are there defined as any Pokémon with Defense, Speed and Special IVs of 10 and an Attack IV of 2, 3, 6, 7, 10, 11, 14 or 15, will always have either an average HP IV (8), for an odd Attack but even everything else, or the worst it can be (0), for all the other IVs even. In the pre-Advance games, gender was also determined by IVs or more specifically the Attack IV, which simply had a cutoff value for each species where anything with an Attack IV equal to or below it would be female and the others male. Thus, if the genders for a species were 50/50, a female Pokémon had an Attack IV of 7 or below, and a male Pokémon had an Attack IV of 8 or above, while if it had a 75% chance of being male, females would be ones with an Attack IV of 3 or less. Note that none of this applies to the post-Advance games, where shininess and gender are determined according to a hidden value called a personality value which is unconnected to IVs, and the HP IV is random like the others.
The actual value I in the formula is the IV itself in the Advance games onwards, but twice the IV in the pre-Advance games. The IV therefore influences the stat by exactly 30 or 31 points at level 100 (in Advance onwards, this is provided the stat is not affected by the Pokémon's nature); this is because a level of 100 (L) and a neutral nature of 1 (N) simplify the formula to 2 * B + I + E + 5, which is obviously just a few numbers including the I value added together. This ultimately means that in Ruby and Sapphire, all neutral nature max stats rose by one since G/S/C - instead of the I value in the formula for a max-stat Pokémon being 30 (2 * 15), it is 31.
People commonly want to find out the IVs of their Pokémon; to do this, it is best to use one of the many IV calculators found on the Internet, such as this one.
E (Effort Value or Stat Experience)
This E value also changed between G/S/C and Advance - and rather drastically at that, being one of the most important novelties that Ruby and Sapphire brought to the battle system.
Pre-Advance - Stat Experience
In R/B/Y/G/S/C, Pokémon acquired Stat Experience for battling, which was what caused wild-caught Pokémon to have generally worse stats than a trained Pokémon at the same level. There was one Stat Experience value for each R/B/Y stat (HP, Attack, Defense, Speed and Special). These values all started out at 0 for each stat of every Pokémon caught, and could then be raised until they reached 65025, the maximum value.
So how were they raised? Every time a Pokémon battled another Pokémon, it would gain a number of Stat Experience points for each stat, equal to the base stat for that particular stat of the Pokémon species battled. In G/S/C, the Special Stat Experience would be raised according to the opponent's base Special Attack. Remember that the base stats are not affected by level, so battling a level 5 Pidgey would give the same Stat Experience as battling a level 20 Pidgey. If multiple Pokémon took part in the battle (or in the case of EXP All or EXP Share), it would be split between Pokémon like ordinary battle experience.
What the vitamins (Protein for Attack, Iron for Defense, Carbos for Speed and Calcium for Special) actually did was add 2550 Stat Experience points to their respective stat, which is also the reason G/S/C, with two Special stats, only had one vitamin for both. However, once a Pokémon had reached 25500 points of Stat Experience in a particular stat, it would no longer be able to be affected by vitamins - the game makers, after all, did not want people to just raise their Pokémon's levels to 100 using Rare Candies and then make up for the lack of Stat Experience using vitamins. To max out a Pokémon's individually achievable stats, it is therefore necessary to train.
Once a Pokémon reaches level 100, it will no longer level up and thus its stats will ordinarily not increase even though you give it Stat Experience. However, using the so-called Box Trick, you can continue maxing out your Pokémon's Stat Experience even after it reaches level 100: to force the game to recalculate the stats and give you the increases governed by your Stat Experience, simply deposit the Pokémon into a box on the PC and then withdraw it again to find its stats slightly higher. This can be repeated until your Pokémon's stats are completely maxed out for its IVs.
To get the actual E value for the stat formula, you must use the formula E = int((√(Stat Experience - 1) + 1) / 4). This means that with the maximum of 65025 Stat Experience points in a stat, the E value is 63 thanks to that rounding down.
Post-Advance - Effort Values
Effort Values (abbreviated EVs) replace the Stat Experience of the first and second generation in the third onwards. There is one Effort Value for each of the six stats. Each and every Pokémon you battle gives the Pokémon that fought it a certain amount of Effort Points in a specific stat, determined individually for each Pokémon species. For example, Sceptile gives three Speed Effort Points, so if you defeat a Sceptile, the Pokémon you used will get three Effort Points in Speed. The number of Effort Points given by each Pokémon species can be found in most online Pokédexes under something like "Effort Points" or "Effort Given".
Even if many Pokémon share the level experience, whether thanks to the usage of an EXP Share or because many Pokémon took part in the battle, all the Pokémon will get the same number of Effort Points as one Pokémon would for battling it alone - so if you have a Pokémon holding an EXP Share and another one of your Pokémon defeats a Sceptile, both of them will get three Effort Points in Speed, rather than it being split between them as with the Stat Experience of the first two generations.
Effort Points, like Stat Experience, can also be gained through the use of vitamins, which this time will each give 10 Effort Points in their designated stat (Protein for Attack, Iron for Defense, Carbos for Speed, Calcium for Special Attack and Zinc for Special Defense). Like before, there is a cap on how many of your Effort Points can come from vitamins: once a Pokémon has 100 Effort Points in a stat, that stat's vitamin will no longer have an effect on the Pokémon.
The most significant difference between Stat Experience and Effort Points, however, is that a Pokémon can only gain a total of 510 Effort Points at the most, while 255 Effort Points are the upper limit for each individual stat. This forces the player to specialize his or her Pokémon, as only a maximum of two of the six stats of any given Pokémon can actually reach their full potential.
Because of this, players have a good reason to want to remove unwanted Effort Points so that they can be used in some other stat. This was not possible in Ruby, Sapphire, FireRed or LeafGreen, to many people's frustration, but since Emerald, six Berries which before did nothing will each raise a Pokémon's happiness but lower its Effort Value in a particular stat by ten points:
| Berry | EV lowered |
|---|---|
| Pomeg Berry | HP |
| Kelpsy Berry | Attack |
| Qualot Berry | Defense |
| Hondew Berry | Special Attack |
| Grepa Berry | Special Defense |
| Tamato Berry | Speed |
The way to determine the actual E value in the formula is considerably simpler now: it is simply the Effort Value for that stat divided by four and then rounded down. As the maximum Effort Points in a stat are 255 and 255 / 4 is 63.75, rounding down gives you 63 as the E value, the same as if the Effort Value had been 252 rather than 255. Therefore, if you max out two stats, it is always wisest to give only 252 Effort Points in those stats and use the remaining six points to boost another stat by one point. Two of your 510 Effort Points will sadly always go to waste, as 510 is not divisible by four.
L (Level)
L is simply the current level of the Pokémon in question. Seeing as the level is a multiplier of almost everything in the formula and has a great range (from 1 to 100, if you didn't know), it is usually the very most influential value for a stat: a high-level Shuckle will outspeed a low-level Ninjask, for instance.
N (Nature)
A Pokémon's nature is basically its personality and is displayed on every Pokémon's summary screen in the Advance games onwards. In R/B/Y/G/S/C, always regard N as being 1.
Natures can either be neutral or increase one stat while decreasing another. Hit Points are never affected by natures, but there is one nature for each possibility of increasing and decreasing a pair of the other five stats, and five neutral ones that could be said to both raise and lower the same stat so that the effects cancel each other out:
| Nature | Increases | Decreases |
|---|---|---|
| Hardy | None | None |
| Lonely | Attack | Defense |
| Brave | Attack | Speed |
| Adamant | Attack | Special Attack |
| Naughty | Attack | Special Defense |
| Docile | None | None |
| Bold | Defense | Attack |
| Relaxed | Defense | Speed |
| Impish | Defense | Special Attack |
| Lax | Defense | Special Defense |
| Serious | None | None |
| Timid | Speed | Attack |
| Hasty | Speed | Defense |
| Jolly | Speed | Special Attack |
| Naive | Speed | Special Defense |
| Bashful | None | None |
| Modest | Special Attack | Attack |
| Mild | Special Attack | Defense |
| Quiet | Special Attack | Speed |
| Rash | Special Attack | Special Defense |
| Quirky | None | None |
| Calm | Special Defense | Attack |
| Gentle | Special Defense | Defense |
| Sassy | Special Defense | Speed |
| Careful | Special Defense | Special Attack |
Incidentally, Pokémon also have different PokéBlock/Poffin flavor preferences depending on their nature. Each flavor corresponds to one stat (Spicy for Attack, Sour for Defense, Sweet for Speed, Dry for Special Attack and Bitter for Special Defense) and the Pokémon will like the flavor associated with the stat their nature raises but dislike the one associated with the stat it lowers.
The N value in the formula will take on one of three values:
- 1.1 if the Pokémon's nature raises the stat in question;
- 1 if the Pokémon's nature does not affect the stat in question;
- 0.9 if the Pokémon's nature lowers the stat in question.
Therefore, it basically increases one stat by 10% and decreases another by 10% unless it is neutral.
An Example
To show how this all magically works, let's go through the stat formula for my Diamond version Butterfree, whose IVs I have calculated and whose EVs I have monitored, for a demonstration of how this all works. My Butterfree is level 53 at the moment of writing, has a Modest nature, and has been EV trained to have 4 Effort Points in HP, 254 in Special Attack and 252 in Speed but nothing in everything else. Butterfree's (rather shoddy) base stats and this particular one's (strangely good, considering it was only the fourth egg I hatched) IVs are as follows:
| Stat | Base | IV |
|---|---|---|
| HP | 60 | 28 |
| Attack | 45 | 4 |
| Defense | 50 | 17 |
| Special Attack | 80 | 30 |
| Special Defense | 80 | 27 |
| Speed | 70 | 31 |
HP
HP = int((2 * 60 + 28 + 1) * 53 / 100 + 53 + 10)
HP = int(149 * 53 / 100 + 63)
HP = int(149 * 53 / 100 + 63)
HP = int(141.97)
HP = 141
Attack
Attack = int(int((2 * 45 + 4 + 0) * 53 / 100 + 5) * 0.9)
Attack = int(int(94 * 53 / 100 + 5) * 0.9)
Attack = int(int(54.82) * 0.9)
Attack = int(54 * 0.9)
Attack = int(48.6)
Attack = 48
Defense
Defense = int(int((2 * 50 + 17 + 0) * 53 / 100 + 5) * 1)
Defense = int(int(117 * 53 / 100 + 5) * 1)
Defense = int(int(67.01) * 1)
Defense = int(67 * 1)
Defense = 67
Special Attack
Special Attack = int(int((2 * 80 + 30 + 63) * 53 / 100 + 5) * 1.1)
Special Attack = int(int(253 * 53 / 100 + 5) * 1.1)
Special Attack = int(int(139.09) * 1.1)
Special Attack = int(139 * 1.1)
Special Attack = int(152.9)
Special Attack = 152
Special Defense
Special Defense = int(int((2 * 80 + 27 + 0) * 53 / 100 + 5) * 1)
Special Defense = int(int(187 * 53 / 100 + 5) * 1)
Special Defense = int(int(104.11) * 1)
Special Defense = int(104 * 1)
Special Defense = 104
Speed
Speed = int(int((2 * 70 + 31 + 63) * 53 / 100 + 5) * 1)
Speed = int(int(234 * 53 / 100 + 5) * 1)
Speed = int(int(129.02) * 1)
Speed = int(129 * 1)
Speed = 129
I hardly need to tell you that all of these values are exactly what is shown on my Butterfree's stat screen. Through the formula, I can also find out for certain that at level 100 my Butterfree will have 259 HP, 89 Attack, 122 Defense, 283 Special Attack, 192 Special Defense and 239 Speed, unless I start giving it Effort-lowering Berries and EV training it differently (which I won't).
I hope this has taught you something about the inner workings of the Pokémon games. If you liked it, there are more mechanics coming.
Page last modified November 24 2009 at 12:52 GMT






















