Pokemon Ruby/Sapphire - Catch Rate Formula
Formula
X = (((A*3-B*2)*C)/(A*3))*D
where:
- A = wild Pokemon's total HP
- B = wild Pokemon's current HP
- C = catch rate, initially equal to wild Pokemon's rareness value
- D = wild Pokemon's status: if asleep or frozen, D=2; if burned, paralyzed, or poisoned, D=1.5; else D=1
If X is greater than 255, capture succeeds. (If X equals 0, X is 1.)
Y = 0x000FFFF0 / (sqrt(sqrt( 0x00FF0000/X ) ) )
Four random numbers from 0 through 65535 are then generated. If all of them are less than Y, capture is successful. Otherwise the number of times the ball shakes before it breaks is equal to the number of random numbers less than Y.
Balls
Different Balls have different rates of success. Below are the multipliers to the catch rate for each Ball.
- Poké Ball - multiplier is 1.0
- Great Ball, Safari Ball - multiplier is 1.5
- Ultra Ball - multiplier is 2.0
- Master Ball - no formula is used, capture succeeds automatically
- Net Ball - multiplier is 3.0 if wild Pokemon is of Bug or Water type; else 1.0
- Nest Ball - if wild Pokemon's level is at least 30, multiplier is 1.0; else multiplier is (40-(wild Pokemon's level))/10
- Dive Ball - multiplier is 4.5 if underwater; else 1.0
- Repeat Ball - multiplier is 3.0 if caught before; else 1.0
- Timer Ball - multiplier is ((No. of turns)+10)/10, maximum 4.0 ("No. of turns" means the number of rounds already completed in a battle; for example if this is the first round, the number of turns is 0.)
- Premier Ball - multiplier is 1.0
- Luxury Ball - multiplier is 1.0
A wild Pokemon can be caught with a Ball even if it's currently using Dig, Fly, Dive or Bounce. If the capture fails, that doesn't affect the wild Pokemon's two-turn attack.
Safari Zone
This applies to the FireRed and LeafGreen version.
Each Pokemon has a so-called "escape rate" (different from rareness). When a wild Pokemon appears in the Safari Zone, two variables, G and E, are set as follows:
G = rareness * 100 / 1275
E = escaperate * 100 / 1275
G and E each can't be less than 3 or greater than 20 at any time. When the player throws a rock, both G and E are doubled. When the player throws bait, both G and E are halved. When the player throws a ball, the initial catch rate, as used in the catch rate formula above, is set to:
catchrate = G * 1275 / 100At the end of each turn, if a random number from 0 through 99 is less than 5 times E, the Pokemon flees.
Each division above is rounded down.
In Generation 3, the escape rates are:
- 0 - All species not listed below.
- 25 - Magikarp
- 50 - Nidoran female, Nidoran male, Paras, Venonat, Psyduck, Poliwag, Slowpoke, Doduo, Goldeen
- 75 - Nidorina, Nidorino, Parasect, Venomoth, Exeggcute, Rhyhorn, Seaking
- 100 - Dratini
- 125 - Chansey, Kangaskhan, Scyther, Pinsir, Tauros, Dragonair
