Battle Mechanics
Welcome to the second Game Mechanics section, Battle Mechanics. This will teach you all about the damage formula, the roles of the six stats in battle, how they are affected by stat modifiers, and the status changes.
The Six Stats
It is appropriate to start off with describing the function of the six stats, HP (Hit Points), Attack, Defense, Speed, Sp. Atk (Special Attack) and Sp. Def (Special Defense). The Stat Mechanics page shows how those stats are determined outside of battle, but what do they actually do?
Hit Points
Your Pokémon's Hit Points stat, or HP, determines how much damage it can take before fainting and being unable to battle. This is fairly obvious. Essentially this stat is split into two: the total HP discussed in the stat mechanics page, and the current HP representing how healthy your Pokémon is at the moment. While the total HP is a constant for a particular Pokémon at a particular level with particular IVs and a particular amount of Stat Experience or Effort Points, the current HP constantly changes depending on how much damage your Pokémon has taken. A Pokémon battle, as you should know, revolves around lowering the opponent's current HP to 0.
Total HP can not be affected in battle by any modifiers or stat boosters; the current HP, however, like previously mentioned, is constantly changing and most moves in the game revolve around lowering that of the opponent.
The Pokémon with the highest base HP in the game is Blissey, which has a base of 255. This is the highest value a base stat can have, so Blissey's record will never be broken. In R/B/Y, before Blissey came into existence, the highest HP belonged to its own pre-evolution Chansey, which has a handsome base HP of 250.
Attack/Defense/Special Attack/Special Defense
These stats control how much damage is done when an attack is used. Your Attack and Special Attack determine how much damage you do; your Defense and Special Defense determine how much damage you take. Whether it uses Attack and Defense or Special Attack and Special Defense in the formula depends on whether the move being used is physical or special. In the first three generations, this was determined by the type of the move:
Physical
- Normal
- Fighting
- Poison
- Ground
- Flying
- Bug
- Rock
- Ghost
- Steel
Special
- Fire
- Water
- Electric
- Grass
- Ice
- Psychic
- Dragon
- Dark
However, the fourth generation has brought about a new way to determine whether a move is physical or special, and this is the most major change that Diamond and Pearl made to the battle system. Now it is determined move for move so that moves whose power should reasonably depend on the physical strength of the Pokémon, such as Tackle or Fire Punch, are regarded as physical, and more mystical moves that involve something like shooting beams or magically raising a tidal wave are regarded as special, irrelevant of their types. This is represented by one of these symbols when you look up the move, either in-game or in most online Pokédexes such as Veekun:
| Symbol | Meaning | Offensive stat | Defensive stat |
|---|---|---|---|
![]() | The move deals physical damage | Attack | Defense |
![]() | The move deals special damage | Sp. Atk | Sp. Def |
![]() | The move does not deal direct damage | None | None |
In Red, Blue and Yellow, there was only one stat, Special, used both for calculating the damage done by special attacks and the damage taken from special attacks for that particular Pokémon. It was therefore essentially two stats in one; a high Special was dramatically more valuable than a high Attack or Defense, and raising or lowering Special such as with Amnesia was really affecting both offensive and defensive power. This had a part in making the R/B/Y metagame almost exclusively Special-based.
These stats may all be affected by various stat modifiers such as Swords Dance, Growth or Tickle.
The highest Attack in the game belongs to the Attack form Deoxys from FireRed (base 180). In the non-legendary category, however, Rampardos is the winner with a base Attack of 165. In Advance, before Rampardos, it was Slaking, which comes fast on its heels with a base of 160; in the pre-Advance games, it was Dragonite and (in G/S/C) Tyranitar, with 134 base each. The highest Defense and Special Defense in the game both belong to the amazing Shuckle, which has a base of 230 in both. In R/B/Y it was Cloyster that had the highest Defense, with a base of 180, and Mewtwo had the highest Special (now its Special Attack) of 154 base, with Alakazam coming second with 135 base (also now its Special Attack). That also allowed Mewtwo to have the highest Special Attack in the game until the Attack Deoxys from FireRed finally dethroned it with a base of 180. Meanwhile, the highest non-legendary Special Attack is still Alakazam's.
Speed
Speed determines the order in which the Pokémon in battle will move each turn. By default, they will attack in descending order by their calculated Speed stat. Speed is merciless and black-and-white: if yours is one point higher than your opponent's, you will always go first, but if your opponent's is one point higher, you'll go last. Only if the Speed stats are exactly equal does the game resort to determining the order randomly.
Technically, the game orders the Pokémon's moves primarily in descending order by the priority rating of the moves they selected (which can be seen in Veekun's Pokédex when you look up moves), secondarily in descending order by Speed, and finally randomly as a last resort - however, as almost all attacks have the same priority rating (the "default" 0), Speed will be what matters most of the time. Nonetheless, moves with higher or lower priority exist and are often used: Quick Attack is perhaps the best-known example of a high-priority move, with a priority of 1, and moves like Counter and Whirlwind have a lower-than-usual priority (-5 and -6, respectively), making them usually go last unless the other Pokémon uses a move of even lower priority.
While move priority is always followed as the primary determination of move orders, there are several exceptions to the Speed-based secondary determination of move order:
- The item Quick Claw, when attached to a Pokémon, will give it a 20% chance of attacking first irrelevant of Speed.
- The item Custap Berry, when attached to a Pokémon, will be consumed in a pinch (i.e. when its HP goes below 1/4 of the total HP) and it will strike first on that turn. If both Pokémon either activate Quick Claw or a Custap berry, the one with the higher Speed strikes first.
- The ability Stall will cause the Pokémon that has it to always move last, irrelevant of Speed. If two Pokémon with Stall are facing one another, the one with the lower Speed goes first, interestingly enough. Pokémon with Stall can still go first if they are holding a Custap Berry or a Quick Claw which activates on that turn.
- The items Full Incense and Lagging Tail will cause the Pokémon holding them to always move last, even after a Pokémon with the Stall ability, irrelevant of Speed. If two Pokémon, both holding one of these items, are facing one another, the one with the lower Speed goes first.
- The move Trick Room will cause the secondary determination of move order to be in ascending order by Speed, rather than descending, for five turns. Move priority still goes from higher to lower, and all of the above exceptions will still apply the way they normally do (Quick Claw makes you move first, Stall last, etc.).
The Speed stat may be boosted in-battle through the use of moves such as Agility.
The Pokémon with the highest Speed is the Speed Deoxys from Emerald (180 base), but out of the non-legendaries and pre-Emerald, it is Ninjask (160 base). In R/B/Y/G/S/C, the highest Speed belonged to Electrode, with 140 base.
Stat Modifiers
Attack, Defense, Special Attack, Special Defense and Speed can all be boosted or reduced during battle using special moves. What these moves actually do is to raise or lower the so-called stat modifier of the stat in question. When your game displays the message "[Pokémon name]'s [stat] rose/went up!", it means that that particular stat's modifier has been raised by 1 for that Pokémon; if it says "[Pokémon name]'s [stat] fell!", the stat modifier has been reduced by 1; if it says "[Pokémon name]'s [stat] greatly rose/went way up/sharply rose!", the stat modifier has been raised by 2; and if it says "[Pokémon name]'s [stat] greatly fell/sharply fell!", it has been reduced by 2. The stat modifier for each particular stat can only range from -6 to 6; any further uses of stat-modifying moves will bring up a "Nothing happened!"/"[Pokémon name]'s [stat] won't go higher/lower!" message.
What the stat modifier actually does is multiply the stat used in the battle by the fraction a/b where a equals max(2, 2 + m) and b equals max(2, 2 - m), m is the current stat modifier of the stat in question and max(x, y) stands for taking the higher out of x or y. If math confuses you, that basically means this:
| Stat modifier | Multiplier |
|---|---|
| -6 | 2/8 (1/4) |
| -5 | 2/7 |
| -4 | 2/6 (1/3) |
| -3 | 2/5 |
| -2 | 2/4 (1/2) |
| -1 | 2/3 |
| 0 | 2/2 (1) |
| 1 | 3/2 |
| 2 | 4/2 (2) |
| 3 | 5/2 |
| 4 | 6/2 (3) |
| 5 | 7/2 |
| 6 | 8/2 (4) |
This means that if you have a Scyther with 319 Attack that then uses Swords Dance three times for an Attack modifier of 6, it will in practice have 1276 Attack, or four times its original Attack stat - or rather, it will in Advance onwards, but in G/S/C and earlier (ignoring the fact that then Scyther's maximum Attack was 318) it capped at 999. When the multiplier is not a whole number, the final stat is always rounded down to the nearest integer.
When a Pokémon is switched out or any Pokémon in the field uses Haze, its stat modifiers are all reset to zero. If a Pokémon is switched out by using the move Baton Pass, the stat modifiers are passed on to the Pokémon that is sent out after it, however.
If the Pokémon has the Simple ability, all stat modifiers on that Pokémon will act like they are in fact double their true value - that is, using Growl will reduce its Attack to half of its usual value rather than 2/3. However, the actual multiplier still caps at 4 and 1/4, so while using Growl four times will be perfectly possible and not bring an "Attack won't go lower!" message, it will in fact not change anything. If a Pokémon has the ability Unaware, any stat modifiers on the opponent will be ignored when calculating battle damage.
Accuracy and Evasion
Sometimes Pokémon's attacks miss, as you will no doubt have noticed if you have played the games at all. Before the damage for a Pokémon's attack is calculated, the game determines whether or not the attack should hit. Note that accuracy and evasion do not apply to any move targeting yourself; such moves will automatically succeed unless some special condition for their success is not met.
While individual moves have their own accuracy rates, Pokémon also have two "hidden" stats named Evasion and Accuracy. These stats are not really stats at all, since they are not species-dependent; in fact they are really just modifiers akin to the Attack, Defense, Special Attack, Special Defense and Speed modifiers discussed above: they start at zero for both Pokémon at the beginning of every battle (and when a Pokémon has just been sent out, unless some accuracy/evasion modifiers were passed on to it via Baton Pass) and are then raised or lowered by moves such as Double Team (which raises your evasion), Sweet Scent (which lowers the foe's evasion) or Sand-Attack (which lowers the foe's accuracy).
These factors can be cancelled, most notably by certain moves which have the property of being "Swift-accurate" (named so after the original only member of this group from R/B/Y, Swift). These are attacks that the game describes as "never missing", and they will entirely ignore evasion and accuracy and skip straight to the dealing damage (although in G/S/C onwards, they can be foiled by moves such as Fly that temporarily take the user off the screen, or the use of Protect or Detect, which prevent all damage done to the Pokémon). There is also an ability (No Guard) and move combos (Lock-On or Mind Reader + any move) that can make any move Swift-accurate, and weather effects can cause this for specific moves (Rain Dance makes Thunder Swift-accurate, and Hail Blizzard). As a bonus, in Diamond and Pearl, these techniques will cause the now Swift-accurate moves to have a chance of hitting through Protect and Detect, equal to (100 - A)% where A is the normal percentage accuracy of the attack - so a Thunder in Rain Dance (or Blizzard in Hail) will have a 30% chance of hitting through Protect, since it normally has a 70% accuracy, and a Zap Cannon used while a Pokémon with No Guard is in play will have a 50% chance of hitting through Protect since its normal accuracy is 50%.
However, when it is not Swift-accurate, the odds of an attack getting through are (A * AM * EM)%, where:
- A is the accuracy of the attack being used, as a percentage. Pre-Advance, this was defined by a number out of 255 chosen to approximate a multiple-of-five percentage as closely as possible (for all intents and purposes, just use the percentage accuracies you will find in most Pokédexes), but in Advance onwards it is an actual number out of 100 (and, as a bonus, it is now shown along with the base damage when you look up the attack on your Pokémon's stat screen). Additionally, in R/B/Y, all "100%" accurate moves in fact had a 1/256 chance of missing by default thanks to a bug, making their actual accuracy closer to 99.6%. In Advance, the A number can be changed by Pokémon abilities.
- AM is the accuracy modifier of the attacking Pokémon, converted to a fraction similar to how it happens with the normal stat modifiers; however, it is converted to a fraction in a slightly different way. Namely, it becomes the fraction a/b where a equals max(3, 3 + m) and b equals max(3, 3 - m) - like the normal stat modifiers except with three instead of two. This means that, although one may have gotten a different impression from personal experiences with too many Sand-Attacks, with a minimum accuracy modifier of -6, the actual fraction is 3/9 - one third.
- EM is the evasion modifier of the defending Pokémon, also converted to a fraction. It works just like accuracy except reversed: it is the fraction b/a, rather than a/b, where a equals max(3, 3 + m) and b equals max(3, 3 - m).
An Example
Just to show how this works, let's imagine that my Butterfree is using Sleep Powder on a random Pidgey. The Pidgey has used Sand-Attack twice on me, and I've (for some unknown reason) used Sweet Scent once on it.
The value of A would normally be 75; however, Butterfree's ability Compoundeyes causes the accuracy of all its moves to be multiplied by 1.3. In all Pokémon formulas, it is also necessary to round the result of any multiplication or division down if it is not an integer. 75 * 1.3 = 97.5; thus, the actual accuracy of that Sleep Powder will be 97.
Next, we have AM. Since Butterfree has had two Sand-Attacks used on it, making its accuracy modifier -2, the value of AM is 3/5.
Finally, the evasion modifier is -1, since Butterfree has used Sweet Scent once and Sweet Scent lowers the target's evasion. This makes the value of EM 4/3.
So our final chance of managing to put that pesky Pidgey to sleep is (97 * 3 / 5 * 4 / 3)%, or 77%.
The game will then figure out whether your attack should hit or not simply by generating a random number and comparing it with the value returned from the accuracy formula. If it has been determined that the attack will hit, it will get to calculating the damage done (provided, of course, that the attack used is damaging).
The Damage Formula
This is the D/P damage formula, according to the fine people at Smogon who went through the trouble of finding it out. The damage formulas for the earlier games will not be covered specially here, but they are similar in all but the details.
Damage = (((((((L * 2 / 5) + 2) * B * A / 50) / D) * M1) + 2) * C * M2 * R / 100) * S * T1 * T2 * M3
such that when multiplying your way through the formula from left to right, you always round down if at any stage in the calculation you have a number which is not an integer.
Note that this formula is not used for all moves; obviously it only affects moves that deal direct damage, and some moves use special formulas to determine the number of Hit Points they do in damage. For details, see the Smogon article linked above.
The letters in the formula are variables:
L (Level)
Simply the level of the attacking Pokémon.
B (Base Power)
The Base Power, or Base Damage, of the move being used. This can be found in all online Pokédexes (such as Veekun) that contain attack data, and additionally for most of them by simply looking at the move in your Pokémon's stat screen.
Be warned that sometimes the Base Power of moves can change; some moves have a variable Base Power, while some abilities and items work by multiplying the Base Power of the move being used by some set number (for example, Overgrow, Blaze and Torrent, the starter abilities, work by multiplying the move's Base Power by 1.5 if the move is Grass, Fire or Water, respectively, and the user's current HP is less than a third of its total HP).
A (Attack or Special Attack) and D (Defense or Special Defense)
The Attack or Special Attack stat and the Defense or Special Defense stat of the attacking Pokémon, depending on whether the move being used is physical or special.
The A and D values used in the formula can be affected by the regular stat modifiers (see above) or by various items and abilities that affect these stats.
M1, M2 and M3 (Modifiers 1, 2 and 3)
Modifiers adjusting the damage for various conditions such as Reflect and Light Screen, the attacker being burned, weather effects, certain items, etc. For full breakdown of the things affecting the three modifiers, see the Smogon article linked above. By default, all the modifiers are 1.
C (Critical Hit Modifier)
Most attacks that use the formula (i.e. most damaging attacks) have a certain chance of being a so-called critical hit. The odds of this happening (in G/S/C onwards; in R/B/Y it was based on Speed and I'm not quite sure exactly how it worked) can be calculated as such:
- Make a variable X and set it to 0.
- If the attacking Pokémon is a Chansey holding a Lucky Punch or a Farfetch'd holding a Stick, add 2 to X.
- If the attacking Pokémon has used Focus Energy, add 2 to X.
- If the attack has a high critical hit ratio (e.g. Slash), add 1 to X.
- If the attacking Pokémon is holding a Scope Lens or Razor Claw, add 1 to X.
The chance of landing a critical hit is then equal to 1/16 if X is 0, 1/8 if X is 1, 1/4 if X is 2, 1/3 if X is 3, and 1/2 if X is 4 or more.
If the attack is not a critical hit, C is equal to 1. If the attack is a critical hit and the attacking Pokémon has the ability Sniper, C is equal to 3. If the attack is a critical hit and the attacking Pokémon has some other ability, C is equal to 2.
In R/B/Y, a critical hit will treat all stat modifiers for Attack or Special Attack and Defense or Special Defense as 0, meaning that if you have used stat modifiers to your advantage, a critical hit might actually deal less damage than a non-critical one. In G/S/C onwards, this has been fixed, and a critical hit will only ignore negative Attack or Special Attack modifiers and positive Defense or Special Defense modifiers.
R (Random Number)
R is a random number ranging from 85 to 100, interestingly not with uniform probability: it is in fact int((r * 100) / 255), with r a random number between 217 and 255 inclusive. (int(something) stands for rounding it down or, if you prefer to think of it that way, cutting off everything after the decimal point.)
S (Same Type Attack Bonus)
The Same Type Attack Bonus, or STAB, is a special boost that applies if one of the attacking Pokémon's types matches the type of the move being used (e.g. a part Flying-type Pokémon uses a Flying-type move, or a Normal-type Pokémon uses a Normal-type move).
If the attacking Pokémon gets STAB for this move, make S equal to 1.5 (or 2, if the attacking Pokémon also has the ability Adaptability). Otherwise, S is 1.
T1 and T2 (Type Modifiers)
T1 applies to the defending Pokémon's Type 1, and T2 applies to its Type 2. For each of them, make it equal to 0.5 if the type of the move being used is "not very effective" on the type the modifier applies to, 2 if the type of the move is "super effective" on it, 0 if the type of the move "doesn't affect" it, and 1 otherwise.
A Damage Calculation Example
So... let's see what damage my Scyther (level 67 at the moment) can deal to Elite Four Aaron's Vespiquen with his Aerial Ace. Scyther's Attack is 185; Aaron's Vespiquen is level 54 and has a base Defense of 102, and although I don't exactly know, I'll assume its EVs and IVs are all zero and its nature neutral, so according to the stat formula its Defense stat should be 115. Let's assume that Scyther has used Swords Dance once and Vespiquen has managed to use Defend Order, say, three times, and that Scyther is holding a Life Orb, just for the heck of it, even though he actually isn't.
- First, we plug L, Scyther's level (67) into the formula. No problems there.
- B, the base damage of the move, would ordinarily be 60 when using Aerial Ace, but as it happens my Scyther has Technician, an ability which causes moves with a base damage of 60 or lower (such as Aerial Ace) to have their actual base damage pumped up to 1.5 times their original value. Therefore, the actual value of B in the formula will be 90.
- A is the Attack. However, Scyther's Attack has a modifier of 2, which effectively doubles its value in the formula from 185 to 370.
- D is the Defense. I found out earlier that Vespiquen's Defense would be 115, and since it has used Defend Order three times, it is multiplied by 5/2 or 2.5 (and rounded down), making it 287.
- M1 is here unaffected, so it is 1.
- Here we will assume that the attack is not a critical hit and C is therefore 1.
- M2 is where Scyther's hypothetical Life Orb comes into play. It multiplies this modifier by 1.3, and since nothing else is affecting the modifier in this case, that will be its value.
- R, the random number, is something we can't ignore, so we will calculate both a minimum and maximum damage for the attack. The minimum is 85 and the maximum is 100.
- S will be 1.5, since Aerial Ace is a Flying attack and Scyther is a Bug/Flying type.
- T1 is 2, since Flying attacks are super effective on Bug, Vespiquen's Type 1.
- T2 is 1, since Flying attacks deal normal damage to Flying-type Pokémon.
- Finally, M3 is 1, since the conditions that modify this multiplier do not apply here.
Now we get our final formula for this particular attack:
Damage = (((((((67 * 2 / 5) + 2) * 90 * 370 / 50) / 287) * 1) + 2) * 1 * 1.3 * R / 100) * 1.5 * 2 * 1 * 1
Damage = ((((((26 + 2) * 90 * 370 / 50) / 287) * 1) + 2) * 1 * 1.3 * R / 100) * 1.5 * 2 * 1 * 1
Damage = (((((28 * 90 * 370 / 50) / 287) * 1) + 2) * 1 * 1.3 * R / 100) * 1.5 * 2 * 1 * 1
Damage = ((((18648 / 287) * 1) + 2) * 1 * 1.3 * R / 100) * 1.5 * 2 * 1 * 1
Damage = ((64 + 2) * 1 * 1.3 * R / 100) * 1.5 * 2 * 1 * 1
Damage = (66 * 1 * 1.3 * R / 100) * 1.5 * 2 * 1 * 1
Damage = (85 * R / 100) * 1.5 * 2 * 1 * 1
At this point, we can branch the damage calculation off into two: one for R being 85, and one for R being 100. Let's also cut out those two ones at the end, since they don't change anything. First, let's find out the minimum damage:
Damage = (85 * 85 / 100) * 1.5 * 2
Damage = 72 * 1.5 * 2
Damage = 216
And then the maximum:
Damage = (85 * 100 / 100) * 1.5 * 2
Damage = 85 * 1.5 * 2
Damage = 254
As a bonus, I might note that a Vespiquen with the specifics given above would have an HP of 139, so despite the defensive boosts, Scyther would have a nicely guaranteed one-hit KO there.
So that concludes this section on battle mechanics. Unless you remember something significant I forgot to mention (status effects have their own section), in which case you are encouraged to contact me.
Page last modified September 17 2009 at 19:05 GMT

























