TL;DR Scroll down to the table in the middle of the post.

If you’ve already read my previous threads on CP efficiency for Snorlax, Gyarados, Vaporeon, Exeggutor, or Lapras, skip the intros and go to the new section on Measuring efficiency.

Noob’s intro to how training/prestiging works

When training up a gym of your own team, you get 1000 prestige for the battle if the CP of your entire team of attackers is 50% or less the CP of the defender. For example, to get 1000 prestige, if the defender is 2400 CP, you must use attackers that are 1200 CP or lower.

You only get 500 prestige if your attackers are the same CP as the defender. You get 750 prestige if they’re 75% the CP of the defender, and so on for every CP value between 50% and 100%.

In my thread 1000 prestige/battle is most time- and potion-efficient, I prove that you should always go for 1000 prestige, with attackers that are 50% or less the CP of the defender. All of the simulations I’ve done are based on this premise.

Intro to CP efficiency

The spreadsheets from Professor_Kikui, qmike, and dneal12 and various infographics you may have seen around here are for attacking enemy gyms, so they are based on performance at the same level, e.g. how a level 30 Wartortle performs versus a level 30 Vaporeon. They show that Vaporeon is much stronger.

For training up a friendly gym, the CP of your attackers is essential. At 1100 CP, Vaporeon is around level 12, while a Wartortle is around level 30. When these two Pokemon are at the same CP, Wartortle is actually slightly stronger. So Wartortle is very CP efficient.

Measuring Efficiency

Your two most important resources when battling gyms are time and potions. I have decided to focus on time. In almost all cases, the most time-efficient attackers also take the least damage and consume the fewest potions.

In my previous posts, I used /u/vlfph‘s excellent CP efficiency spreadsheet, which is based on a theoretical formula. My new method uses /u/celandro‘s Pokebattler, which I believe is even more accurate. vlfph’s spreadsheet sorted by DPS is fairly similar to these results.

With /u/ClamusChowderus‘s help, we have simulated 39 battles for each matchup, at defender levels 20-39 (CP 2046-3530), with the attacker at half the CP or slightly below. The results of the 39 battles have been averaged together. For Dragonite alone, we simulated 3.7 million battles.

Dragonite

  • Time – Combat time, averaged across all matchups and movesets
  • Time% – Similar to Time, but a percentile
  • Dmg – Damage your Pokemon receives. Useful if you’re concerned about potion-efficiency. This is based on the matchup where the defender is level 30 / CP 3070.
  • Power – Pokebattler stat that shows how many times the attacker can defeat the defender. For example, 250% means the attacker could defeat two of the exact same defender, and faint halfway through the third attempt.

Pro tip: you can sort columns by clicking on the header. By default, it’s sorted by Time.

Observations

Ice is double super effective (1.56x) against Dragonite, so Jynx, Sneasel, Piloswine, Cloyster, Lapras are at the top of the rankings.

With the Gen 2 rebalance favoring charge moves, any attacker with Avalanche ranks highly. Even Sneasel Feint Attack / Avalanche performs almost as well as Ice Shard / Avalanche.

Rock attacks are super effective (1.25x), so Pokemon with Rock Slide do well, such as Omastar, Graveler, Sudowoodo.

Fairy attacks are also super effective, so Pokemon with Play Rough do well, such as Wigglytuff and Granbull.

Beedrill’s typing is neutral against Dragonite. This may mean that it as an excellent all-purpose prestiger. We’ll find out when we look at the other defenders.

Blissey is not too bad, taking 42 seconds, though this is twice as long as Jynx.

Spreadsheet

Strict results: view only, or make a copy.  Only movesets that win all matchups, best strategy selected. The above table is extracted from this.

Complete results: view only or make a copy. All movesets, all strategies, even losing ones.

Caveats

Pokebattler simulations dodge perfectly; a human player won’t do as well. But most of the higher ranked attackers in the above table are able to win with plenty of HP remaining. You can determine this from the Power column. An attacker with 200% Power would have 50% HP remaining.

The only Pokebattler strategies that can win all matchups are Dodge All and Dodge All Pro (except for Blissey).

The complete results spreadsheet shows some cases like Piloswine, which wins 5 seconds faster using Dodge Specials Pro than Dodge All Pro, but loses against Dragon Tail / Hurricane. Piloswine can even win against half of Dragonite’s movesets by not dodging at all!

But these cases are rare, and leave you with less HP for the next battle, or in case you miss a dodge, so I made a decision to exclude them from the table above.

All defender movesets are weighted equally, though the Gen 2 moves are probably less common than the legacy moves currently. Fortunately, all of the attackers perform similarly across all the movesets, so this doesn’t really matter.

Matchups were simulated for the defender at levels 20-39 (CP 2046-3530). Attackers like Shuckle with low max CP will not do well in these rankings, though a 250 CP Shuckle can defeat three 500 CP Dragonites.

Both attacker and defender are assumed to have perfect IV. /u/vlfph shows that “optimal IVs are 15/0/0 to maximize RDPS and 0/15/15 to maximize RBE”. My rankings incorporate both RBE (by excluding attackers that can’t win every matchup) and RDPS (by sorting by time), so it’s not clear how IV would affect the rankings. If they do, the difference would be small. My advice is to just ignore IV for prestigers. So then the average IV for prestigers would be 8/8/8, which has the same attack/defense/HP distribution as 15/15/15.

 

Methodology

Nitty gritty technical details in this section; you probably want to skip it.

/u/ClamusChowderus wrote a wrapper around /u/celandro‘s open source Pokebattler code. This can simulate millions of battles in minutes. This produced a massive 3 GB set of CSVs (download 620 MB zipped). This is too large for Google Sheets to open (Sheets is limited to 2 million cells).

So I uploaded the data into a Google BigQuery dataset (Google Cloud Platform account required).

This query generates Dragonite_avg, which averages the results of all the different CP matchups.

Then this query generates Dragonite_avg_result, which compares each strategy across all the defender movesets.

Then this query generates Dragonite_avg_collapse, which removes all strategies that can’t win all matchups, and then selects only the fastest strategy for each moveset.

Save the results to Google Sheets, copy and paste into my spreadsheet, sheet Import. The Dragonite sheet will then format everything nicely. If you want to sort, do so on the Import sheet.

VictoryTime is a commonly used variable. If the attacker wins, Then VictoryTime = CombatTime, Else VictoryTime = CombatTime / Power. For example, if an attacker loses with Power 50%, then it would take 2 of the same attacker to actually defeat the defender. So VictoryTime = CombatTime / 0.5. CombatTime can be very low if the attacker faints early, so VictoryTime is an attempt to address that. This doesn’t account for the 2-3 second wait time between battles, and that the defender will have some carryover energy.

 

Credits

/u/celandro for making Pokebattler open source.

/u/ClamusChowderus for collaborating with me on every aspect of this post.

/u/vlfph for first developing the CP efficiency spreadsheet.

Further research

I look forward to feedback. I’m currently working on other popular defenders like Rhydon, Blissey, and Tyranitar and will also rewrite my previous guides on Snorlax, Gyarados, and Vaporeon using this new methodology. I’ll take your comments into consideration before I publish those results.

See also

1000 prestige/battle is most time- and potion-efficient

The following threads are based on Gen 1 and will be updated in the upcoming weeks: