Cracking the Rocket CP Formula – 2021 edition
Intro
The exact stats and CP of Team Rocket Pokémon were unknown since at least the release of Trainer Levels up to 50. This research aims to fill this knowledge gap and allow us to know how to calculate their attack, defense, and stamina which is used to calculate the CP to more accurately, simulate battles and provide more accurate Team Rocket counters at sites like Pokebattler.com.
The Shadow Pokémon that Rockets use in their battle against you had their IVs changed to:
Attack IV = Floor (2/3 * Pokémon Base ATK + 25)
Defense IV = 15
Stamina IV = 9
Which can be used to calculate their stats using the following formulas:
Attack = 2 * (baseAttack + Attack IV) * rCPM * Rank
Defense = 0.8 * (baseDefense + 15) * rCPM * Rank
Stamina = 1.1 * (baseStamina + 9) * rCPM * Rank
Where Rank equals 1.0 for a Grunt, 1.05 for a Leader and 1.15 for Giovanni.
With the rCPM (rocket Combat Power Multiplier) increasing with your Trainer Level.
These stats can then be used to calculate the CP of the Shadow Pokémon using the standard CP formula:
CP = Floor(0.1 * Attack * sqrt(Defense) * sqrt(Stamina))
Background story
Since the appearance of Team GO Rocket (TGR) in Pokémon GO in July 2019, their line-ups went through multiple rotations and there were slight changes in their mechanics. In the early beginnings, KakunaMattata known as the creator of PvPoke, Celandro from Pokebattler, dondon151 from GamePress and skewtr made efforts to figure out how to calculate the stats and CP for Rocket’s Shadow Pokémon. This was finished in December 2019 and resulted in formulas as well as Combat Power Multipliers (CPMs) for all available trainer levels. These multipliers increase the difficulty of the Rockets with increasing trainer level and were important to come up with the best Pokémon to beat Team GO Rocket.
Since then, the difficulty and line-ups of Team Go Rocket changed and trainer levels up to level 50 were released as well. However, as far as I am aware, no published research covered these updates. Recently, Pokebattler reached out to the community, asking for data to fill this knowledge gap. Around the same time, I was trying to make a breakpoint calculator to aid in the Silph Mirror Challenge against Cliff and ran into similar problems where the stats of the Shadow Pokémon I encountered did not match the calculated values. After sending some data to Celandro, I was contacted and we continued working on this together, trying to ‘solve’ the stats of the Rocket’s once more…
The Unknowns
The last known information about Shadow Pokémon was that they follow the standard CP formula with multipliers for their individual stats:
CP = Floor(0.1 * Attack * sqrt(Defense) * sqrt(Stamina))
where
Attack = 4 * (baseAttack + 15) * rCPM
Defense = 2 * (baseDefense + 15) * rCPM
Stamina = (2 * Floor(0.5 * baseStamina) + 14) * rCPM
rCPM is the rocket Combat Power Multiplier, a multiplier that increases with trainer level.
When calculating the stats of a Shadow Pokémon with these formulas, the values do not match with what you find in the wild. So, beyond elucidating the difficulty scaling above Trainer Level 40, the multipliers for each stat and the rocket combat power multiplier had to be cracked once again.
The most straightforward method to figure out the stat multipliers is by going into the field. The HP of a Pokémon can be figured out by Yawning it down to 0HP, since Yawn always deals 1 damage. Next, its HP can be compared to a calculated HP value and the ratio between them is your HP multiplier.
From its HP it is a quick way to do the same for Defense, but this time you count the fast moves it takes to KO a Pokémon and with this calculate the damage each move dealt. The damage it received can then be plugged into a reversed damage formula to get the Defense stat of the Pokémon. Compare this to the calculated expected Defense stat for your multiplier.
Finally, the attack stat is deducted by letting a Shadow Pokémon hit your defender once with its fast move, followed by quickly swapping or exiting the battle. You then check the damage you received, plug that into another rewritten damage formula and you get the Attack stat of the Pokémon.
With this method -assuming an identical multiplier for all Pokémon- the job would be done quickly. However, all of this is only possible if you know the stats of the Pokémon, including their IVs… The old consensus of 15/15/14 IVs did not hold anymore when performing the calculations, so there was another variable to be solved…
The Packet Capture
Luckily, Celandro obtained the IVs of some Pokémon through a packet capture from an anonymous email. Below are two examples, Vulpix and Houndoom:
Pokedex ID: 37
CP Multiplier: 0.85374104
CP: 1326
Attack: 89
Defense: 15
HP: 9
Pokedex ID: 229
CP Multiplier: 0.85374104
CP: 3956
Attack: 174
Defense: 15
HP: 9
This showed us that the Defense IV is 15 and the HP IV is an odd 9. The Attack IV seemed to be variable. I will save you some time, but after fiddling around I found out that the Attack IV equals:
Floor (2/3 * Pokémon Base ATK + 25)
This gives Pokémon with a naturally high base Attack an even larger boost to their Attack stat!
Using these IVs we could go back into the field and battle a lot… A lot of Rocket’s to get as much data as possible to refine and confirm the multipliers until we were sure they were correct.
Multipliers
The multipliers we managed to deduct were significantly different than they used to be, as shown in the table below.
Stat | New Multiplier | Old Multiplier |
---|---|---|
Attack | 2.0 | 4.0 |
Defense | 0.8 | 2.0 |
HP | 1.1 | 1.0 |
Since my Trainer Level was 44 during all encounters, it was now possible to correctly calculate the stats and CP of any Shadow Pokémon I would battle against. The Rocket’s difficulty scales with increasing Trainer level, do we have to repeat the same research and encounters for each Trainer Level? Luckily not, that would be too tedious. Simply said, we recorded the CP of Shadow Pokémon for several Trainer Levels and since CP scales with the stats of a Pokémon, we were able to figure out the difficulty multiplier per level.
The multipliers per level seemed to follow a linear trend, which allowed us to make a reliable calculation based on regression. Until Trainer Level 40 the multiplier, thus difficulty, increases rapidly. Above that, the increase is only about a fifth of the lower levels. The table below lists all the multipliers (rCPM) per Trainer Level.  For use in the formulas, these still have to be multiplied by the CP Multiplier of 0.85374104 as found in the package capture.
Level | rCPM | Sample size |
---|---|---|
50 | 1.00000000 | 8 |
49 | 0.99589676 | 11 |
48 | 0.99179353 | 7 |
47 | 0.98769029 | 58 |
46 | 0.98358705 | 21 |
45 | 0.97948381 | 7 |
44 | 0.97538058 | 63 |
43 | 0.97127734 | 29 |
42 | 0.96717410 | 7 |
41 | 0.96307086 | 21 |
40 | 0.95653364 | 12 |
39 | 0.93806907 | 20 |
38 | 0.91960450 | 9 |
37 | 0.90113993 | 17 |
36 | 0.88267536 | 14 |
35 | 0.86421080 | 25 |
34 | 0.84574623 | 15 |
33 | 0.82728166 | 10 |
32 | 0.80881709 | 3 |
31 | 0.79035252 | 4 |
30 | 0.77188796 | 6 |
29 | 0.75342339 | 17 |
28 | 0.73495882 | 14 |
27 | 0.71649425 | 5 |
26 | 0.69802968 | 0 |
25 | 0.67956512 | 0 |
24 | 0.66110055 | 3 |
23 | 0.64263598 | 16 |
22 | 0.62417141 | 9 |
21 | 0.60570684 | 0 |
20 | 0.58724227 | 2 |
19 | 0.56877771 | 0 |
18 | 0.55031314 | 0 |
17 | 0.53184857 | 0 |
16 | 0.51338400 | 0 |
15 | 0.49491943 | 0 |
14 | 0.47645487 | 0 |
13 | 0.45799030 | 0 |
12 | 0.43952573 | 0 |
11 | 0.42106116 | 0 |
10 | 0.40259659 | 0 |
9 | 0.38413203 | 0 |
8 | 0.36566746 | 0 |
Concluding remarks
During the analysis it was quickly observed that the difficulty multipliers for Team GO Rocket Leaders and Giovanni were changed as well, to 1.05 and 1.15 respectively from their previous 1.2 and 1.25.
Due to the limited sample size of CPs, the certainty of the multipliers is not as perfect as the previous analyses, but it does allow us again to make a good estimation of the stats and CP of the Shadow Pokémon. With the current dataset, the CP of each Pokémon can be calculated with more than 98% accuracy.
An important running start was the information Celandro got from the packet capture, which immediately gave us the HP and Defense IVs and allowed us to derive the Attack IVs. After that followed a lot of field work and -in my opinion- enjoyable analysis for the desired results. By the time of you reading this, all the new changes are already implemented in Pokebattler, ready to prepare you for Shadow Ho-Oh!