This is the formula that Pokemon Go uses to calculate damage dealt and received in combat. We'll go through this formula step-by-step:
The Floor function rounds a decimal down to the nearest integer. For example, a move that would do 2.9 damage will in reality do 2 damage. A move that would do 3.9 damage will do 3 damage, and so on.
The Floor function is the source of all breakpoints and bulkpoints.
Floor() + 1 ensures that your attacks will always do at least 1 damage.
A move's Base Power is the number displayed next to the move in-game. Base Power is important, but other metrics such as Cooldown, Energy per Use, or Energy Cost are more important for determining how a move performs overall.
For more information on what makes a good move 'good', check out Move Stats Explained.
Attack is the attacker's actual Attack stat, while Defense is the defender's actual Defense stat. These are defined as follows:
The CP Multiplier is just a number that Niantic uses to scale Pokemon stats according to their Level. For a more in-depth explanation, see Advanced Pokemon Stats.
Raid Bosses will always have a perfect Defense IV.
Multipliers refer to various damage bonuses that are factored into the damage formula. There are 4 damage multipliers:
Type Effectiveness refers to the damage multipliers applied when your move is either Super Effective or Not very Effective.
There are 3 main categories of type effectiveness:
Against a Pokemon with two types, type effectiveness stacks multiplicatively:
Some types are not effective against other types. If you're familiar with the main series, you may know these as immunities. Immunity in Pokemon Go is treated as a double resistance:
Immunities and single resistances or weaknesses can stack multiplicatively:
For more information on type effectiveness, see this page.
STAB is an acronym for Same-Type Attack Bonus. If a Pokemon uses a move that matches one of its own type(s), that move will receive an additional damage multiplier of 1.2x.
For example, if a Rayquaza (Dragon/Flying) uses Dragon Tail (Dragon-type), Dragon Tail will do an additional 20% damage.
If a Groudon (Ground) uses Dragon Tail, Dragon Tail will not do an additional 20% damage, since Groudon is not a Dragon-type.
The in-game Weather will boost 2-3 different types. If a Pokemon uses a move that matches one of the currently Weather-boosted types, an additional damage multiplier of 1.2x is added.
For example, Windy Weather boosts Psychic-, Flying-, and Dragon-types. If a Rayquaza uses Dragon Tail (Dragon-type) while the in-game Weather is Windy, Dragon Tail will do an additional 20% damage.
Raiding with an in-game Friend will add an additional damage multiplier for both of your Pokemon. The damage increase depends on the level of Friendship: