Gen VIII Capture Mechanics

Thanks to Anubis for finding the capture routines in the decompilation and assisting with testing, and the several friends who assisted with in-game testing at various stages.

Sword and Shield add some new spice to the capture formula, though it remains significantly similar to the sixth and seventh generations. If you're interested in the mechanics of earlier generations, see here for the fifth-generation games, here for the third- and fourth-generation games, here for the second generation or here for the first generation. To calculate the likelihood of capturing a Pokémon in Gen VIII, use the catch rate calculator.

Note that for the moment, some of the exact nitty-gritty of how raids behave has not been fully verified. Uncertainties include:

  • Under precisely what circumstances is a raid battle capture guaranteed, other than when the difficulty level is 0?
  • What are the difficulty modifier values for each raid catch difficulty level?
  • What are the difficulty modifier values for each Gigantamax species?

I'm working on trying to uncover these details, but in the meantime, the mechanics as described below are accurate for non-raid battles.

The Catch Rate Formula

As usual, a Master Ball will capture the Pokémon without fail, without performing the calculation. Like in the sixth and seventh generations, captures will always succeed on the first route in the game with wild encounters (Route 1). Additionally, for some Max Raids, capture is preset to be guaranteed (details pending).

Otherwise, the game calculates a final capture rate, which can be determined by a formula - and it has a couple of new bits this time around:

`X = (((3M - 2H) * G * C * B) / (3M)) * L * S * D`

The variables here are the current and maximum HP (H and M), the grass modifier (G), the intrinsic catch rate of the species (C), the ball bonus (B), the new low-level modifier (L), the status condition if any (S), and the new difficulty modifier (D).

M (Max HP) and H (Current HP)

Nothing new here; these are once again just the maximum and current HP of the Pokémon you are trying to capture. When the Pokémon is at full health, X will be roughly G * C * B * L * S * D / 3, and lowering its HP will bring it down to towards a limit of G * C * B * L * S * D.

For Max Raid captures, the current HP value appears to be set to 1 for the capture.

G (Grass Modifier)

Like in the sixth and seventh generations, this modifier corresponds to and works like the thick grass modifier in the fifth-generation games, where battles in thick grass (where Pokémon were higher-leveled and you could get into wild double battles) would make Pokémon harder to catch unless you'd already filled out most of your Pokédex - but there is not actually any known way to trigger this modifier to be anything other than 1. The game checks for a certain value of the "terrain" variable - the same variable that tells us if we're fishing or surfing, for instance - but what this value means isn't known, or whether battles with this value even exist in the game at all. (Raid battles are not it.)

Thus, at least the vast majority of the time, this variable is simply 1. If this battle type exists, however, in those battles this modifier will be set according to the number of Pokémon you have registered in any of the game's Pokédexes:

Number of species caughtModifier
More than 6004096/4096 (1)
451-6003686/4096 (~0.9)
301-4503277/4096 (~0.8)
151-3002867/4096 (~0.7)
31-1502048/4096 (0.5)
0-301229/4096 (~0.3)

In the eighth-generation games there are a couple of snags here. First of all, only 584 Pokémon can currently be registered to any Pokédex in the game, even with the Expansion Pass/trading. There are technically 664 obtainable Pokémon in Sword and Shield, but 80 of them are not in any of the game's Pokédexes, and thus will never be counted here - so in practice, the modifier cannot reach the maximum of 1 if it's active, unless further DLC is released with even more Pokédexes. Furthermore, even if you have the Expansion Pass and have received the Pokédexes of the Isle of Armor and the Crown Tundra, there is not actually any way to see the total number of species registered to your Pokédexes within the game if you've caught any of the DLC's Pokémon, since the Galar Pokédex, Isle of Armor Pokédex and Crown Tundra Pokédex are three separate Pokédexes! You might assume that all you have to do is add up the Pokédex completion numbers of the three dexes, but this does not give you the correct number, because a lot of Pokémon exist in more than one of the three dexes, and adding up the Pokédex caught numbers will count them multiple times, while the counting function the game uses here only counts each once.

The grass modifier at the very least doesn't usually matter, since it's simply 1 in most battles; unfortunately, however, the Pokédex registered number is also used for the critical capture calculation, which does apply for all non-raid battles. More on that later.

C (Capture Rate)

By default, this is the intrinsic capture rate of the Pokémon species you're trying to catch. Most legendary Pokémon have a catch rate of 3; most common early-game Pokémon have a catch rate of 255; and other Pokémon are somewhere in between. You can find this number in various online Pokédexes, though some catch rates, especially legendary Pokémon, have changed between generations - make sure the one you use is up-to-date, or use my calculator.

If you're using a Heavy Ball, then this value may be adjusted according to the Pokémon's weight. This uses the Pokémon species' weight as listed by the Pokédex and is unaffected by abilities or items that modify weight in battle:

>= 300 kg (661.38 lbs)+30
>= 200 kg, < 300 kg (440.92-661.38 lbs)+20
>= 100 kg, < 200 kg (220.46-440.92 lbs)+0
< 100 kg (220.46 lbs)-20

If the result is less than 1, it will be bumped up to 1, so that it's impossible for the catch rate to be zero or negative. Like in the seventh generation, the Heavy Ball's usefulness is extremely limited: since it adds to the catch rate rather than applying a ball bonus multiplier like other balls do, it's only a substantial improvement for Pokémon that have very low intrinsic catch rates. In practice, all they can be more useful for than a decent ordinary ball is legendaries over 200kg - but for those, it will be superior to any other ball.

B (Ball Bonus)

Balls other than the Heavy Ball will instead apply a ball bonus multiplier depending on the ball and any conditions specific to that ball. If the Pokémon is an Ultra Beast (Nihilego, Buzzwole, Pheromosa, Xurkitree, Celesteela, Kartana, Guzzlord, Poipole, Naganadel, Stakataka or Blacephalon), the ball bonus will always be 410/4096 (~0.1) for any ball other than a Beast Ball. Otherwise, the ball bonus is set as follows:

Poké Ball, Premier Ball, Luxury Ball, Heal Ball, any ball not listed
B = 1
Great Ball
B = 1.5
Ultra Ball
B = 2
Master Ball, any ball on the first route of the game
The formula is not used; the capture is always successful
Net Ball
B = 3.5 if one of the Pokémon's types is Water or Bug; B = 1 otherwise
Nest Ball
B = (((41 - Pokémon's level) / 10) if the Pokémon's level is less than 31; B = 1 otherwise
Dive Ball
B = 3.5 when on or in water; B = 1 otherwise
Repeat Ball
B = 3.5 if the Pokémon's species is already registered as caught in the Pokédex; B = 1 otherwise
Timer Ball
B = 1 + (number of turns passed in battle * 1229/4096), maximum 4; since 1229/4096 is approximately 0.3, the bonus reaches its cap on the eleventh turn
Quick Ball
B = 5 on the first turn of a battle; B = 1 otherwise
Dusk Ball
B = 3 at night and inside caves; B = 1 otherwise
Fast Ball
B = 4 if the Pokémon's base Speed is 100 or more; B = 1 otherwise
Level Ball
B = 8 if your Pokémon's level divided by four and rounded down is greater than the target Pokémon's level; otherwise, B = 4 if your Pokémon's level divided by two and rounded down is greater than the target Pokémon's level; otherwise, B = 2 if your Pokémon's level is greater than that of the target Pokémon; B = 1 otherwise
Love Ball
B = 8 if the Pokémon is of the same species as your Pokémon but the opposite gender; B = 1 otherwise
Lure Ball
B = 4 when fishing; B = 1 otherwise
Moon Ball
B = 4 if the Pokémon belongs to a family that evolves by Moon Stone (those would be both Nidoran families, the Clefairy and Jigglypuff families, and the Skitty and Munna families); B = 1 otherwise
Beast Ball
B = 5 if the Pokémon is an Ultra Beast (Nihilego, Buzzwole, Pheromosa, Xurkitree, Celesteela, Kartana, Guzzlord, Poipole, Naganadel, Stakataka or Blacephalon); B = 410/4096 (~0.1) otherwise
Dream Ball
B = 4 if the Pokémon is asleep or has the ability Comatose; B = 1 otherwise

The only changes here since the seventh generation are that Lure Balls now give a 4x bonus when fishing rather than a 5x one and the addition of Dream Balls as a regular ball - originally these were used in the fifth generation to capture Pokémon in Entree Forest after encountering them with the Dream Radar, and would never fail, but now they are extra effective against Pokémon who are asleep, including the pseudo-sleep of Komala's signature ability Comatose.

Note that for a raid battle capture, the "turns passed" variable ticks up before the capture happens. That means that effectively, if you beat the raid in one turn, the capture acts as if it's turn 2. This means Quick Balls never get their 5x bonus for a raid capture, but Timer Balls do always get at least a 1.3x bonus.

L (Low-Level Modifier)

The first new modifier in the Gen VIII formula, and it's a doozy! For the first time in the main series, it is now easier to catch low-level Pokémon. If the Pokémon's level is less than 21, the catch rate is multiplied by (30 - the Pokémon's level) / 10. In other words, for a hypothetical level 1 Pokémon, L would be 2.9; for a level 10 Pokémon it's 2.0; and for a level 15 Pokémon it's 1.5. Past level 20, L is simply 1, and the Pokémon's level has no effect on the result, like in previous games. The idea here is presumably to be kinder and make capturing easier at the beginning of the game, when the player is still learning the ropes, while it ramps up in difficulty as they get the hang of it.

S (Status)

This multiplier is applied if the Pokémon has a status ailment: if the Pokémon is asleep or frozen, S = 2.5; if the Pokémon is poisoned, paralyzed or burned, S = 1.5; and otherwise, S = 1. (Note that this multiplier is not applied to a Pokémon with Comatose.)

Max Raid boss Pokémon never count as having a status condition applied for the purposes of the capture formula; the status is gone before you get the chance to capture it.

D (Difficulty Modifier)

This is the other new variable in the catch rate formula for this generation. This is a multiplier representing a special difficulty modifier, to make capturing more or less difficult when appropriate.

For regular wild battles, this modifier has one purpose: if you have not yet completed the main storyline (captured Eternatus), then if your Pokémon's level is lower than the level of the wild Pokémon, this value will be 410/4096 (~0.1). Otherwise, this value is 1.

However, in a Max Raid, this modifier will be set depending on the raid and whether you are the raid host or a guest, with the host generally having a higher catch rate. Unfortunately the actual multiplier values have not yet been extracted from the game. Non-Gigantamax raids each in practice have two difficulty levels set for them, one for the raid host and one for guests, with difficulty level 0 meaning capture will be guaranteed and difficulty levels 1-6 each corresponding to a certain multiplier (difficulty level 4 is probably 0.5x, or else 0.6x), while each Gigantamaxable Pokémon has a customized multiplier that applies to both the host and guests for Gigantamax raids.

Critical Captures

As with the previous three generations, the eighth features critical captures, where sometimes the ball will make a different sound when thrown and then shake only once in mid-air, making the capture much more likely. Critical captures cannot happen in Max Raids; that entire bit of code is skipped over in raids.

The chance that a given capture will be critical is very similar to the previous generations, with the addition of one new variable, Ch:

`"CC" = |__(min(255, X) * P * Ch) / 6__|`

The CC number is compared against a random number between 0 and 255 inclusive; if the random number is less than CC, the capture will be critical. Thus, the chance of a critical capture is CC / 256. The X variable in the formula is the final catch rate calculated before; the other two variables are as follows:

P (Pokédex Modifier)

This is the other spot where Pokédex completion matters for capturing. The Pokédex modifier is set according to the same categories of Pokédex completion as in the G modifier, but with different values:

Number of species caughtModifier
More than 6002.5

Thus, it's impossible to get a critical capture at the beginning of the game when you've caught 30 or fewer Pokémon, but becomes easier as you go on and catch more. Unfortunately, as with the grass modifier, the total number of species registered in your Pokédex is not actually visible in-game if you have Pokémon from the Isle of Armor or Crown Tundra DLC (again, note that adding the three Pokédex caught numbers together will get you an overestimate thanks to Pokémon that are in multiple dexes), and it's impossible to reach the highest tier of 600+, since the maximum number of species you can currently register in your Pokédexes in the game even with an Expansion Pass and trading is 584. The maximum Pokédex modifier in the game as it is is therefore 2.0.

Ch (Catching Charm)

The Catching Charm item, which can be obtained in one of the rooms on the second floor of Hotel Ionia in Circhester, will double the critical capture chance; in other words, the Ch variable is 2 if you have the Catching Charm and 1 without it. Thus, it won't help you if you have caught 30 or fewer Pokémon - but since it happens before any rounding, sometimes it can make the difference between a critical capture being possible and impossible, for a low X.

Throwing a Ball

This bit works identically to the previous two generations. If X is 255 or more, then the capture will automatically succeed. Otherwise, we calculate a second number Y from X:

`Y = |__65536 / (255 / X)^(3/16)__|`

The Pokémon will now attempt to break out of the ball a number of times. To simulate a breakout attempt, the game will generate a random number between 0 and 65535 inclusive; if this number is less than Y, then the ball holds, while otherwise it breaks. This means that the chance the ball holds on each breakout attempt is Y / 65536.

Normally, the Pokémon will make up to four attempts to break out of the ball; in order to capture it, the ball has to hold on all four. For each breakout check where the ball holds, you will see the ball wobble on the screen once - so if it wobbles three times and then breaks, you really did almost have it! If it holds on the fourth check, the ball seals rather than wobbling again. Since there are four checks, the odds that you capture the Pokémon are (Y / 65536)4, which equals (X / 255)0.75.

For a critical capture, however, the Pokémon will only get one chance to break out of the ball! The breakout calculation is the same - it just only happens once. You'll always see the ball wobble once on a critical capture, and then either break or seal depending on whether that one check was successful. The success chance for a critical capture is just Y / 65536, or (X / 255)0.1875.

The overall chance of a capture in a non-raid battle, then, is the chance that you get a critical capture and it succeeds, plus the chance that you get a non-critical capture and it succeeds, or (CC / 256) * (X / 255)0.1875 + (1 - CC / 256) * (X / 255)0.75. Quite a mouthful! There is unfortunately no way to meaningfully simplify this much.

Catch Rate Calculator

Luckily, then, I've got a Gen VIII catch rate calculator that will take care of all the numbers for you. At the moment the support for raids is limited - you'll have to guess the difficulty multiplier yourself. If you have illuminating concrete data on the raid uncertainties discussed at the top of this article, by all means contact me.

Page last modified November 26 2021 at 16:43 GMT