Pokemon Gold and Silver - Attack Process

This page details the Attack Process, the series of steps the game takes when handling each round of a Pokemon battle.

Round phases

The phases of a round are: use of items (with the Bag command); voluntary switching; use of attacks; and end of round. At the beginning of the round, the menu of commands appears with "Fight", "Pokemon", "Pack", and "Run."

  • Fight: Choose an attack from the list of moves that appears. This move chosen is called the move "chosen for use" for this round.
  • Pokemon: Check data on Pokemon in party or switch the active Pokemon. Switching is not usable if a Pokemon "cannot switch" because of a move's effect.
  • Pack: Use an item on the active Pokemon, who skips its attack this round.
  • Run: Attempt to flee from a wild Pokemon battle. See the Chance of Escape page for how the game calculates the escape rate.

Priority

After both Pokémon choose an attack the attack initiative (who gets to use the attack first) is determined. All attacks are categorized in four priority levels:

2: Endure, Protect, Detect -> 1: Quick Attack, Mach Punch, Extremespeed -> 0: All other attacks -> -1: Counter, Mirror Coat, Whirlwind, Roar, Vital Throw

  • The attack with the higher priority strikes first.
  • If both attacks have the same priority, the holder of Quick Claw has a 23.4% chance of striking first, . If this chance succeeds and both Pokemon hold a Quick Claw, the one who strikes first is randomly determined (in internal battles, the player's Pokemon always strikes first in this case).
  • Otherwise, the Pokemon with the higher Speed strikes first.
  • If both Pokemon have the same Speed, the one who strikes first is randomly determined.

Calculating Speed

This process is followed to calculate a Pokemon's Speed in battle.

  1. In internal battles, if the player has earned the appropriate badge, multiply the original speed by 9, and divide by 8.
  2. Multiply the Speed by the Speed multiplier derived from the Pokemon's Speed stat stage.
  3. If the Pokemon is paralyzed, divide the Speed by 4.

Process

After the initiative is determined, the following steps are taken for each Pokemon about to use an attack.

First checks

If the Pokemon flinches and isn't asleep or frozen, it skips its attack.

If the Pokemon used Hyper Beam on its previous turn, it "must recharge" and skips its attack. (If the Pokemon also flinches, the "X must recharge!" message isn't shown but Hyper Beam's effect will still end.)

Obedience check

In internal battles, only after choosing an attack, the game checks to see if the Pokémon is of a different ID from that of the player. (The OT name is not considered.) If so, and its level is greater than the player's "badge level" (see "Notes" below), a random number is chosen (from 0 to (Pokemon's level + "badge level")). If this number is greater than the badge level, then it'll disobey the command (it might go to sleep, ignore the order, hit itself with confusion damage, or use a different move). If the Pokemon uses a different move, it isn't considered an attack that it last used if it's the first turn of its use . When disobedient, the Pokemon no longer has an attack it last used. It could not use a different move while asleep, during the effect of Disable, or if it has zero PP, but it could while frozen .

Sleep and Freeze Checks

Then, the game checks to see if the attacker is asleep. If so, the attack is not executed unless either Snore or Sleep Talk was chosen: [something goes here] Next, if Pokémon is asleep, ("[Name] is fast asleep!") the game checks if the Pokemon has waken up. Sleep duration is from 1 to 7 turns and is random.
If the Pokemon is frozen, the Pokemon won't use the attack unless it's Flame Wheel or Sacred Fire.

Other Pre-Attack Checks

  • If the attacker is confused, there is a 50% chance for the attacker to hit itself instead.
  • If the attacker is in love, there is a 50% chance for the attack to be canceled.
  • The attacker can't use the move if it is disabled.
  • If the attacker is paralyzed, there is a 50% chance for the attacker to be unable to move.
  • If the attacker is disobedient, it could do something other than attack. If so, it happens now. Sometimes, the attacker could use a different move instead if it is disobedient.

Attacker uses the attack

"[Name] used [Attack]!"

Check PP (Power Points)

If there is no PP remaining for all attacks ("There's no PP left for this move!"), the attack Struggle is used instead. Otherwise, the attack's PP is reduced by 1. Fly, Dig, Petal Dance, Thrash, Rollout, and the like use up 1 PP only when selected. If a different attack is used due to disobedience, 1 PP is spent for the attack actually used.

Is it a Critical Hit?

Critical Hits are decided using the Critical Hit process.

Damage calculation

After that, the damage is calculated. See the Damage Calculation page.

Accuracy

The following situations are checked in order. Earlier effects take precedence over later effects.

  • Using Dream Eater when opponent is not sleeping will fail.
  • If opponent had used Protect or Detect, attack will fail.
  • If attacker had used Mind Reader or Lock-on, attack will not hit Pokémon using Fly if attack is Earthquake, Fissure, or Magnitude. Otherwise the attack will succeed (Gust, Thunder, Twister, and Whirlwind will be effective even to opponents using Dig). Either way, the effect of Mind Reader and Lock-on now ends.
  • Life-draining moves (Dream Eater, Absorb, and so on.) on a substitute will fail.
  • Gust, Thunder, Twister, and Whirlwind are effective to Pokémon using Fly; Earthquake, Fissure, and Magnitude are effective to Pokémon using Dig. All other attacks will fail in either case.
  • During Rain Dance, Thunder will not miss.
  • Swift will not miss.

Then, the accuracy ratio is decided as follows. Each Pokemon has one stat stage each for evasion and Accuracy, which are not really stats, but affect an attack's probability of hitting an opponent. The table below shows the multipliers for evasion and Accuracy.

Stat Stage -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
Accuracy Multiplier 0.33 0.36 0.43 0.5 0.6 0.75 1 1.33 1.66 2 2.33 2.66 3
Evasion Multiplier 3 2.66 2.33 2 1.66 1.33 1 0.75 0.6 0.5 0.43 0.36 0.33

An attack's accuracy is multiplied by its user's Accuracy multiplier, as shown in the table above, but not to less than 1, then multiplied by its opponent's evasion multiplier, as shown in the table above, but not to less than 1 or greater than 255. For certain attacks, if the opponent is holding BrightPowder, the accuracy is decreased by 20, but not to less than 0. Then, if the accuracy equals 255, it will hit. Otherwise, the attack will hit if a random number from 0 through 255 is less than its accuracy.

Accuracy and evasion are two of a Pokemon's stat stages. Like other stat stages, each Pokemon begins with a stat stage of 0, and a Pokemon's stat stages are reset to 0 when it is switched.

Some attacks cannot be evaded and always have the accuracy defined for the attack. No accuracy checks are performed for such attacks.

Additional effects

If the attack has an additional effect such as a stat stage modification or a status problem, the probability of the effect happening is determined in this last step. For instance, for Blizzard, there is a 9.8% chance the opponent will become frozen. The additional effect will not occur if the opponent faints due to damage (this is significant only for Steel Wing, Metal Claw, and Ancientpower).
  • 9.8 - Fire Punch, Ice Punch, Thunder Punch, Acid, Ember, Flamethrower, Ice Beam, Blizzard, Psybeam, Bubblebeam, Aurora Beam, Thundershock, Thunderbolt, Confusion, Psychic, Bone Club, Fire Blast, Constrict, Bubble, Hyper Fang, Flame Wheel, Powder Snow, Steel Wing, Metal Claw, Ancientpower
  • 19.9% - Twineedle, Dizzy Punch, Tri Attack, Twister, Crunch, Shadow Ball
  • 29.7% - Stomp, Rolling Kick, Skull Bash, Body Slam, Poison Sting, Bite, Low Kick, Thunder, Lick, Sludge, Rock Slide, Snore, Sludge Bomb, Spark, Dragonbreath, Iron Tail
  • 39.8% - Smog
  • 49.6% - Octazooka, Sacred Fire, Rock Smash
  • 99.6% - Thief, Mud-Slap, Zap Cannon, Icy Wind, Swagger, Dynamicpunch

Multi-hit attacks

The attack process, in its short form, for multi-hit attacks is below.

  1. Check accuracy and success
  2. For each hit:
    1. Calculate damage
    2. Stop multi-hit attack if opponent fainted
  3. Check for additional effect

End of turn

After a Pokemon's turn, any end-of-turn effects trigger for that Pokemon. These effects are invoked even if a Pokemon doesn't choose a move for use at the beginning of the round. These effects are, in order:

  1. HP loss from poison/burn
  2. HP loss and recovery from Leech Seed
  3. Effect of Nightmare
  4. Effect of Curse

End of round

These effects are invoked at the end of the round, after all Pokemon take their turns. The effects are, in order:

  1. Future Sight
  2. Sandstorm/Sunny Day/Rain Dance
  3. Multi-turn attacks
  4. Perish Song
  5. Recover with Leftovers
  6. Check if defrosted
  7. Check end of Reflect/Light Screen/Safeguard
  8. Check for condition based on Berry (for both players)
  9. Check end of Encore

Notes

*The "badge level" depends on the badges the player has:

  • No badges: Badge level=10
  • Hive Badge: Badge level=30
  • Fog Badge: Badge level=50
  • Storm Badge: Badge level=70
  • Rising Badge: Badge level=100

Chance of Escape in Wild Battles

In a wild battle, if the Speed of the Pokemon trying to flee is equal to or greater than the opponent's, escape is successful. Otherwise, the formula below is used.

X=int(A*32/B)+(30*C)

where:

  • A = Current Speed of Pokemon trying to flee
  • B = Remainder of (D / 4) divided by 256 where D is the current Speed of the opponent. If B equals 0, escape is successful.
  • C = Number of times the player already tried to flee this battle, not counting the current attempt. Doesn't count attempts to flee when an effect (such as Mean Look) prevents the Pokemon from fleeing. This variable is reset to 0 when the player chooses the Fight command, but doesn't change when the player's Pokemon changes.

If X is greater than 255, escape is successful. Otherwise, if a random number from 0 through 255 is less than or equal to X, escape is successful. Otherwise, escape fails.