TL;DR:

  • link to a spreadsheet with all the info about attackers, defenders, prestigers, battles won, battle durations, HP lost in a battle, counter ability and more, based on ~20 000 000 simulated battles
  • not all Pokemon species had been used, as battles would have still been going on; total of 76 attackers vs 47 defenders (565 vs 348 if different movesets are considered) were used in Attackers vs Defenders final simulation round, and total of 134 prestigers vs 27 defenders (970 vs 207 if different movesets are considered) were used in Prestigers vs Defenders final simulation round
  • bonus link : attackers’ rankings and prestigers’ rankings with custom metagame – this was just a fun idea for which I’m not sure if it’s useful or not (set up your own metagame scores for defenders in the “Meta” sheet, and watch rankings change)

Hello again, travelers! After doing couple of simulation projects in the past, I’ve started working on Gen 2 project right after Gen 2 was released. It took a bit longer than I expected to finish what I set up to do. While I was in the last phase of this project, Gamepress released new Tier lists for defenders, and I came up with several new ideas, so I rushed to implement them as well. Therefore, I want to take a moment to thank a lot of people on the Road, /u/dondon151, /u/Ryanoftheday, u/ClamusChowderus, u/testorom, but also many more who helped a lot, with their work on the Road, comments and advices for other players (and therefore for me as well). Global Pokedex helped me as well, with some info and calculations.

New stuff

New stuff includes, but is not limited to, prestigers’ simulations (finally!), average battle time for each match-up, and attacker’s HP lost for each matchup.
The algorithm

Some of you might remember something about the algorithm I had used to simulate battles in my previous projects. The most important part of the algorithm is the dodging system which makes clustered charge attacks harder to dodge.

There is no such thing as a perfect simulation, but in this world of imperfection, I find the dodging system one of the most important things to include into the algorithm. The result of this part of the code is that Hyper Beams, Earthquakes and such are almost always successfully dodged, while Body Slams and Aqua Tails are more likely to hit you across the face. Or your favorite Pokemon.

Since almost 100 new Pokemon entered the battlefield, I had to make cuts wherever possible, to finish the project before Christmas. I still used the same algorithm as before, but I excluded most of my 6 original strategies. Half of those strategies used fast attack only. But since the update, you actually want to use every charge attack, even Vice Grip or Ancient Power. So it seemed logical to make it easier for my poor computer and reduce the exeggcution time in half by getting rid of those strategies. I also eliminated the strategy where an attacker chooses to spam through everything (including charge attacks – that would be silly, right?), so only two strategies were standing alive after those eliminations. I named them “0” and “1”. We do live in a binary world, so I thought to myself – “wynaut”.

0 = dodge fast attacks

1 = spam through fast attacks

(for dodging charge attacks, there is a probability of 75%-100% for a successful dodge, depending on how recently the last charge attack took place)

Each attacker/prestiger who made it to the final round fought bravely against the chosen team of defenders, using both strategies 10 times, after which the better strategy was chosen, and the attacker/prestiger continued to fight the defender for 40 more battles. After those were over, 50 battles using the better strategy were taken into account. Additionally, the numbers such as time, HP lost and strategy were also exported and are playing a role in the final table.

The IVs and levels used in simulations

I decided to use IVs 10/10/10 for all the Pokemon (attackers, defenders and prestigers). I know IVs can play a big role sometimes, especially with prestigers, but I had to choose something simple and not complicate things. I don’t like using 15/15/15 because it’s just not realistic. I also didn’t want to use 7/7/7 or 8/8/8 because 50% doesn’t feel right either. I figured that single value might average around 10 over all the Pokemon used in battle in practice, so I went with 10/10/10 for that reason.

As for the levels in Attackers vs Defenders simulations, I used Level 35 for defenders and Level 25 for attackers (the same as in the previous project). Even with a low level like 25, attackers are mostly destroying defenders, so I feel like it was a good choice.

For Prestigers it’s a specific situation regarding levels, since we want our prestigers to have half the CP of the attacker. I went with two different level setups in two rounds of Prestiging part of the project.

In the Preliminary Round, I set all the defenders at level 35 (IVs 10/10/10). Then I made an additional function which, for each prestiger, calculates the level which gives roughly half the CP of the attacker.

In the Final Round, I chose to set all the defenders’ CPs at roughly 2400, and all the prestigers’ CPs at roughly 1200. This is one of the most common situations that arise in the real battles so I decided to go with it. Some of the prestigers and some of the defenders were omitted because they didn’t have Max CP high enough.

This approach has its downsides, but since the code itself took a very long time to process, I had to do this calculation of levels independently and beforehand so that the code can simply take the information from the table. Anything else would have cost me even more time.


Attackers vs Defenders

  • Preliminary round: out of 251 Pokemon, only the legendaries, Ditto and Smeargle were omitted in this round. For Ditto there would have to be a different code implemented, and I really didn’t have time for that. I will also mention here that Hidden Power is a normal-type attack in these simulations. So maybe take a note that Pokemon with Hidden Power might be a bit stronger in practice, if they have the right typing. There were 1684 Pokemon in total, and there was a single round-robin tournament, using only strategy 0.
  • Round 1: The best 121 attackers and 69 defenders from Preliminary Round made it to Round 1. That is 899 attackers and 502 defenders in total. Attackers used strategies 0 and 1, but also one of the old strategies (use only fast attacks, dodge everything), just for my sake, to make sure those are not viable anymore. And as expected, this strategy was very rarely chosen as the best one, so I never considered using only fast attacks again.
  • Round 2 – the final round: Only the best 76 attackers and the best 47 defenders made it to this round. I was sad to not include some of the attackers, but I had to make the cut somewhere. For example, Magneton didn’t make it to the final round, but he can actually be a useful counter to Gyarados. So if you don’t see any info on some of the Pokemon in the final table, that’s because their best moveset wasn’t good enough to put them among 76 best attackers (similar goes for defenders).

In this round, each attacker battled each defender 50 times with the better of the two strategies (10 times with both strategies, then 40 more with the better one). If the number of wins after 10 battles for each strategy was the same, then the better strategy was the one with less time spent and less HP lost. There were 565 different attackers in total and 348 different defenders in total, which means there were total of 9 831 000 simulated battles taken into account when the numbers for attackers and defenders were input into the final table.

Prestigers vs Defenders

  • Preliminary Round: Almost all Pokemon (again, except legendaries, Ditto, Smeargle and just a couple more) were fighting only one battle against the chosen set of 348 different Lvl 35 defenders with roughly half the CP. Some of the prestigers couldn’t get to half the CP so it was not a pretty scene for them. It was clear immediately which Pokemon are meant to be prestigers, but more about that a bit later.
  • Final Round: The best 134 prestigers and the best 27 defenders were chosen for the most important prestiging round. That makes the total of 970 different prestigers and 207 different defenders. The system was again – 10 battles with strategies 0 and 1, and additional 40 battles with the better strategy. Total of 970 x 207 x 50 = 10 039 500 simulated battles were taken into account when the numbers for prestigers were put into the final table.

Finally, 19 870 500 simulated battles generated all the numbers shown in the table. The total number of simulated battles was even larger (when battles from previous rounds are included).


A word about prestigers

There is a column in the table called “Approximate Level”, which shows the level prestigers need to be at, to have a CP of roughly 1200. Of course, individual values can affect this quite a bit, so this is not always the case. It can be an useful info though. Also, prestigers can be useful at CP 800-1000 as well.

When all the Pokemon with level not suitable for prestiging and the ones who take a lot of time to beat an opponent are removed from the rankings, the top 10 overall prestigers list (with their best movesets), based on these simulations, looks like this:

  1. Umbreon (Feint Attack or Snarl / Foul Play)
  2. Azumarill (Bubble / Play Rough)
  3. Steelix (Iron Tail or Dragon Tail / Heavy Slam)
  4. Lanturn (Water Gun / Thunderbolt)
  5. Noctowl (Wing Attack / Sky Attack)
  6. Skarmory (Steel Wing / Sky Attack)
  7. Tentacruel (Poison Jab / Hydro Pump)
  8. Miltank (Tackle / Body Slam)
  9. Hypno (Confusion / Future Sight)
  10. Wigglytuff (Pound / Play Rough)

Other solid overall prestigers in line are: Lapras, Muk, Venusaur, Ivysaur, Forretress, Vaporeon and Sudowoodo.

Prestiging against Blissey


Let’s start with the fact that each of 6 different types of Blissey fought 48 500 battles against prestigers in the final round of simulations. 5 of those Blissey won ALL 48 500 battles. The only Blissey who failed to win all the matches is Pound / Psychic Blissey, bless her. Or bliss her, I should say. She won 48 433 battles. Who defeated this Blissey? These were her “slayers”, in order of battles won:

  1. Machamp (Counter / Dynamic Punch) 35/50
  2. Murkrow (Feint Attack / Foul Play) 18/50
  3. Machamp (Counter / Close Combat) 13/50
  4. Primeape (Counter / Close Combat) 1/50

(all of the others 0/50)

Has anyone tried to prestige against Blissey using Murkrow?

The spreadsheets

There is some more stuff in the tables that I haven’t mentioned but you might find interesting. Here they are:

Gen 2 AvD

The spreadsheet is ProfessorKukui-like, but with a completely different set of meanings behind the numbers. I hope it will be useful and easy to use.

Bonus sheet – customize meta

I had an idea that there should be a table which would show rankings of the attackers and prestigers based on the defenders’ meta. So any time you change the meta, the rankings will update too. You can try it out by going to “Meta” sheet and changing the meta scores of each defender. There are less than 30 defenders included, but it should be enough, since the real number of defenders people commonly use in gyms is much smaller.

All comments and suggestions, as well as the comparisons with real-life experiences, are more than welcome. Cheers!