Pokemon Red, Blue, and Yellow - Damage Calculation

Damage Calculation Process

  • In internal battles, the badges have the appropriate stat multiplied by 9 and divided by 8. The badges that increase a Pokemon's stats in internal battles are the Boulder Badge (Attack), the Thunder Badge (Speed), the Soul Badge (Defense), and the Volcano Badge (Special).
  • Stat stage modifying attacks modify the appropriate stat (Attack or Defense).
  • If the attacker is burned, halve the Attack value.
  • Selfdestruct and Explosion halve the opponent'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 the opponent had used Reflect, Defense equals ((Orig. value*2)/4) and Attack equals (Orig. value/4).
  • If the opponent had used Light Screen, opponent's Special equals ((Orig. value*2)/4) and attacker's Special equals (Orig. value/4).
  • If the Attack and/or Defense 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 opponent'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.
  • The damage calculated cannot exceed 997. If it does, the damage 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 called Same Type Attack Bonus.)
  • The damage calculated is multiplied by the number that depends on the attacker's and opponent's types (see the Battle Chart, below).
  • Finally, in a process called "damage weighting", unless the damage is 768 or more, a random number from 217 through 255 is multiplied in the currently calculated damage, and divided by 255.

Critical Hits

X = max(255,int(int(S/2)*N))

  • S = Pokémon's base Speed
  • N = Modifier: N starts at 1. If the attacker has used Focus Energy, divide N by 4.* If the attacker is using Karate Chop, Slash, Razor Leaf, or Crabhammer, multiply N by 8.

If a random number, from 0 to 255, is less than X, the attack is a critical hit.

Pokémon Gold and Silver uses a different Critical Hit formula.

* It is known that Focus Energy reduces the chances of a critical hit. This problem has been fixed in Stadium (in which N should be multiplied, instead of divided, by 4).

When an attack does a critical hit, multiply the level by 2 and use the attacker's and defender's original, unmodified stats for the damage formula. However, Selfdestruct and Explosion still halve Defense even on a critical hit.

Battle Chart

Attack Type NOR FIG FLY POI GRO ROC BUG GHO FIR WAT GRA ELE PSY ICE DRA
NORMAL 1x 1x 1x 1x 1x 1/2 1x 0 1x 1x 1x 1x 1x 1x 1x
FIGHTING 2x 1x 1/2 1/2 1x 2x 1/2 0 1x 1x 1x 1x 1/2 2x 1x
FLYING 1x 2x 1x 1x 1x 1/2 2x 1x 1x 1x 2x 1/2 1x 1x 1x
POISON 1x 1x 1x 1/2 1/2 1/2 2x 1/2 1x 1x 2x 1x 1x 1x 1x
GROUND 1x 1x 0 2x 1x 2x 1/2 1x 2x 1x 1/2 2x 1x 1x 1x
ROCK 1x 1/2 2x 1x 1/2 1x 2x 1x 2x 1x 1x 1x 1x 2x 1x
BUG 1x 1/2 1/2 2x 1x 1x 1x 1/2 1/2 1x 2x 1x 2x 1x 1x
GHOST 0 1x 1x 1x 1x 1x 1x 2x 1x 1x 1x 1x 0 1x 1x
FIRE 1x 1x 1x 1x 1x 1/2 2x 1x 1/2 1/2 2x 1x 1x 2x 1/2
WATER 1x 1x 1x 1x 2x 2x 1x 1x 2x 1/2 1/2 1x 1x 1x 1/2
GRASS 1x 1x 1/2 1/2 2x 2x 1/2 1x 1/2 2x 1/2 1x 1x 1x 1/2
ELECTRIC 1x 1x 2x 1x 0 1x 1x 1x 1x 2x 1/2 1/2 1x 1x 1/2
PSYCHIC 1x 2x 1x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1/2 1x 1x
ICE 1x 1x 2x 1x 2x 1x 1x 1x 1x 1/2 2x 1x 1x 1/2 2x
DRAGON 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x