Move Set Formulas

The formulas for determining how much damage a Pokémon can do to another is very complex.
This page does the best I can do to explain what is going on.



 
˅
Damage Formula

This is the "basic" formula for the Damage inflicted by a Single attack Move:

Damage  =  FLOOR ( ( ) × ( ) × Effectiveness ) + 1
 
(BaseAttack + AttackIV) × AttackerCPM Power × STAB × WeatherBoost
(BaseDefense + DefenseIV) × DefenderCPM 2
   

Here is what everything means:

FLOOR Chop off everything after the decimal point.
BaseAttack The Attacking Pokémon's Base Attack score.
BaseDefense The Defending Pokémon's Base Defense score.
AttackIV The Attacking Pokémon's Attack IV score.
DefenseIV The Defending Pokémon's Defense IV score.
AttackerCPM The CPM for the Attacking Pokémon.
DefenderCPM The CPM for the Defending Pokémon.
Power How much damage will be caused by the move.
STAB
  (Same Type Attack Bonus)
If the type of the attack is the same as the Attacking Pokémon's type then it is 1.25, otherwise it is 1.
For example:
Tyranitars are of type Rock and Dark.
The Move Bite is a Dark type move, so Tyranitars with this move DO get a STAB. (STAB = 1.25)
On the other hand the Move Iron Tail is a Steel type move, so Tyranitars with this move DO NOT get a STAB. (STAB = 1)
WeatherBoost If the type of the attack is boosted by the current weather then it is 1.25, otherwise it is 1. (Similar to STAB)
For example:
Vine Whip is a Grass type move and Grass types are boosted by Sunny weather.
So, if the weather is Sunny Vine Whip WILL be boosted. (WeatherBoost = 1.25)
On the other hand if the weather is Cloudy Vine Whip WILL NOT get boosted. (WeatherBoost = 1)
Effectiveness A bonus or penalty depending upon the Type of the Move and the Type of the Defending Pokémon.
AttackTime The amount of time it takes the Attacking Pokémon to perform the move.

NOTES:



 
˅
Damage Per Second (DPS) Formula

To make things worse, as mentioned above, that formula is for the Damage from a Single Move! To get the DPS for that one Move you would only need to do:

DPS  =  Damage
AttackTime

   ... BUT ...

To get the DPS for a Move Set you need to figure out:

  1. How many Fast Moves have to be performed to generate the Energy for the Charged Move.
  2. How long it takes to perform all of those Fast Moves
  3. How long it takes to perform the Charged Move
  4. What the total damage is for all of the Fast Moves and the Charged Move

In the end, the formula looks like this:

Base DPS  =  ( FastMoveDamage × CEILING ( ) ) + ChargedMoveDamage
 
ChargedMoveEnergy
FastMoveEnergy
 
( FastMoveTime × CEILING ( ) ) + ChargedMoveTime
 
ChargedMoveEnergy
FastMoveEnergy
 

Here is what everything means:

CEILING Get the smallest whole number (integer) that is greater than or equal to value.
FastMoveDamage The amount of Damage (using Damage Formula above) that a single Fast Move will inflict.
ChargedMoveDamage The amount of Damage (using Damage Formula above) that a single Charged Move will inflict.
FastMoveEnergy The amount of Energy the Fast Move generates.
ChargedMoveEnergy The amount of Energy the Charged Move requires.
FastMoveTime The amount of time it takes to perform the Fast Move.
ChargedMoveTime The amount of time it takes to perform the Fast Move.

Simply put it is:

(If you can call that "simply".)


 
˅
Simplifying (True DPS)

Unfortunately, there are some things that will change for each situation.
For example, some parts of the formulas really require us to know what Pokémon is being attacked. (Effectiveness, CPM, BaseIV, etc.)

However, we can choose to assume several things to get a good idea of the damage a specific Attacking Pokémon can inflict with a specific Move Set:

With those assumptions, the Damage formula (after simplification) becomes:

Damage  =  FLOOR ( ) + 1
 
(BaseAttack + 15) × Power × STAB
200
 

Then, merging that into the Base DPS formula (which is now a little easier than it would have been with the full Damage formula), we end up with:

True DPS  = 
( ( FLOOR ( ) + 1 ) × CEILING ( ) ) + FLOOR ( ) + 1
     
(BaseAttack + 15) × FastPower × FastSTAB ChargedMoveEnergy (BaseAttack + 15) × ChargedPower × ChargedSTAB
200 FastMoveEnergy 200
     
  ( FastMoveTime × CEILING ( ) ) + ChargedMoveTime
 
ChargedMoveEnergy
FastMoveEnergy
 

I refer to this as the "True DPS" on the charts in Pokémon Move Sets.



 
˅
Even Simpler (Base DPS)

Obviously, True DPS is still quite a complex formula.
To simplify it further, many people will use only the values from the Move Set itself, removing the values from the Pokémon. This will give a generic DPS for the moveset.
(In other words, it will be the same value regardless the Pokémon.)

With that, we end up with:

Base DPS  = 
( ( FLOOR ( FastPower ) + 1 ) × CEILING ( ) ) + ( ChargedPower ) + 1
 
ChargedMoveEnergy
FastMoveEnergy
 
  ( FastMoveTime × CEILING ( ) ) +  ChargedMoveTime
 
ChargedMoveEnergy
FastMoveEnergy
 

I personally don't pay attention to this, but I include it as the "Base DPS" on the charts in Pokémon Move Sets in case you are interested.



Sum-Up

I have included both Base DPS and True DPS in the Pokémon Move Sets page. However, in my humble opinion, the True DPS formula is the most useful, and the one I pay attention to the most.

Although these formulas are a quite technical, I have programmed them into a spreadsheet that does all the calculations. If any of the values change in the future, I just copy-and-paste them in and re-generate the data for the pages on this site.

NOTE: In the past, Niantic has adjusted the Base values for some of the Pokémon.

I would LOVE to get your feedback!
Let me know about typos, broken links, hard-to-understand (or badly worded) information, etc.
Also, let me know if there is something you would like for me to add or enhance.
Just send me an e-mail at pokeeref@gmail.com (The extra 'e' is not a typo. pokeref@gmail.com was already taken. 😁)