Pokémon Red Version, Blue Version, and Yellow Version - Damage Calculation Process
- Stat stage modifying attacks modify the appropriate stat (Attack, Defense, or Special). (This effect is calculated in advance, rather than during damage calculation.)
- In battles in which Exp. Points can be gained, the badges have the appropriate stat multiplied by 9 and divided by 8 for Pokémon controlled by the player. The badges that increase a Pokémon’s stats in battles in which Exp. Points can be gained are the Boulder Badge (Attack), the Thunder Badge (Speed), the Soul Badge (Defense), and the Volcano Badge (Special). (This effect is calculated in advance, rather than during damage calculation.)
- If the attacker is burned, halve the Attack value. (This effect is calculated in advance, rather than during damage calculation.)
- If the attack is a critical hit, the steps above are ignored and the level is doubled. (See "Critical Hits", below.)
- Selfdestruct and Explosion halve the opposing Pokémon’s Defense.
- If the Attack or Defense stat exceeds 255, both stats are equal to ((((X/2)%255)/2)%255). (The "%" means "modulo," or remainder. X means Attack or Defense.)
- If Reflect is in effect for the opposing Pokémon and the attack isn’t a critical hit, the Defense equals ((Orig. value*2)/4) and Attack equals (Orig. value/4).
- If Light Screen is in effect for the opposing Pokémon and the attack isn’t a critical hit, the opposing Pokémon’s Special equals ((Orig. value*2)/4) and attacker’s Special equals (Orig. value/4).
- If the Attack, Defense, or both is 0, it becomes 1.
-
The damage becomes equal to
int(int(int(2*L / 5+2)*A*P / D)/50)
where L is the attacker’s level, A is the attacker’s Attack/Special value, P is the attack’s power, and D is the opposing Pokémon’s Defense/Special value. For physical attack types (Normal, Fighting, Flying, Poison, Ground, Rock, Bug, Ghost), use the Attack and Defense values. For special attack types (Fire, Water, Electric, Grass, Ice, Psychic, Dragon), use the Special value. - If the damage calculated is greater than 997, it becomes 997.
- Add 2 to the calculated damage.
- If the attack type shares a type with one of the user’s types, then the damage is multiplied by 1.5. (This is commonly called Same Type Attack Bonus.)
- The damage calculated is multiplied by the number that depends on the attacker’s and the opposing Pokémon’s types (see the Type Matchup Chart, below).
- Finally, in a process called "damage variance", unless the damage is 768 or more, a random integer from 217 through 255 is multiplied in the currently calculated damage, and divided by 255.