Damage Formula
This formula is how the game calculates damage in combat. Its original version was first discovered by Reddit user u/Qmike. Let's examine the formula and its implications in detail.
See these threads for the research that helped derived this formula.
Flooring
The Floor function simply rounds a number down. Floor() + 1 guarantees that the minimum damage of any attack is 1.
Flooring benefits faster, smaller attacks, since the +1 would constitute a larger component of its damage output. Flooring is the root of the breakpoints, bulkpoints, and all other discontinuities in the game.
Move Power and Cooldown
Power and cooldown are the most important determinants of a move's damage output. Power is the number displayed next to the Pokemon's moves in the game. Cooldown limits your earliest next move; you can only perform another action after the cooldown is over. Although cooldown is not factored in the damage formula, it determines the calculation of DPS (Damage Per Second).
Attack and Defense
In the damage formula, $Atk$ is the damage giver's current attack and $Def$ is the damage receiver's current defense. Current attack and current defense are based on the Pokemon's base attribute, individual values (IV), and current level:
$$Current Attack = (Base Attack + Attack IV) * CPM$$ $$Current Defense = (Base Defense + Defense IV) * CPM$$While Pokemon level is not directly part of the formula, CPM (CP Multiplier) is, and CPM is a function of Pokemon level.
There's no exact formula for calculating CPM, so it requires looking up the CPM table instead. At level 25, a Pokemon's current stats are 2/3 of its base stats and IV.
Between levels 10 and 30, CPM is approximately 0.1336 * Level0.5. That relationship means that current attack and defense roughly scale with the square root of level, for example:
- A level 25 Pokemon deals 25% more damage than at level 16.
- A level 16 Pokemon receives 33% less damage than at level 9.
Multipliers
There are four current damage multipliers to consider when calculating damage.
STAB is an acronym for Same Type Attack Bonus. If a Pokemon uses a move that matches one of its types, then the attack damage gets a x1.2 multiplier.
WAB is an acronym for Weather Attack Bonus. If a Pokemon uses a move that matches one of the boosted types in the current weather, then the attack gets a x1.2 multiplier, same as that of STAB.
FAB is an acronym for Friendship Attack Bonus. Friend bonuses are 3%, 5%, 7% or 10% depending on your level of friendship.
Effectiveness refers to the multiplier applied to using a "super effective" or "not very effective" move.
Type Effectiveness
The effectiveness multiplier is how effective the attack is against the defending Pokemon type, based on the following type(s) table:
Credit: Reddit user u/ashiqrh
Multipliers for effectiveness have been updated since then and now read as follows
- Light green - Neutral
- Dark green - Super effective; x1.6
- Light red - Not very effective; x0.625
- Dark red - "Immune" in PokemonGo counts as two not very effective multipliers; x0.390625
Against dual-type Pokemon, apply both type effectiveness multipliers.
Effectiveness Stacking
There can be multiple effective bonuses when the defending Pokemon is a dual type. The overall effectiveness multiplier is the product of the two multipliers.
Example 1: Gyarados is doubly weak to Electric-type attacks, because both Flying and Water are weak to Electric. As such, Gyarados receives 1.6 x 1.6 = x2.56 damage.
Example 2: Flygon triply resists Electric-type attacks, because both Ground and Dragon resist Electric, but Ground has the stronger "immune" resistance while Dragon has the usual resistance. As such, Flygon receives 0.390625 x 0.625 = x0.244 damage.
Summary:
- Power and cooldown are the most important factors that determine damage output.
- Damage scales with the square root of a Pokemon's level.
- STAB and weather attack bonus are x1.2 multipliers.
- Friendship attack bonus provides up to a x1.1 multiplier.
- "Super effective" type advantage is a x1.6 multiplier.
- "Not very effective" type disadvantage is a x0.625 multiplier.
- "Immune" type disadvantage is a x0.390625 multiplier.
- Dual-typed Pokemon can have multiple weaknesses or resistances to one or more types.