Mathematically Determining the Attacking Types of RU

By MicfiJasan.

Introduction

We've all heard at some point or another about a Pokémon having a good offensive typing or having moves that provided solid coverage. A few years ago, a user by the name of X-Act published an article in The Smog about attacking types and their effectiveness in the DPP OU, UU, and Uber metagames of the time. For those of you that are interested, you can read the article here. Fascinated by his work, I took it upon myself to apply his research to the RU tier.

What X-Act Had Done

As with X-Act's research, I started my exploration of attacking types with the damage formula. He had simplified the formula until it contained only the most important factors. Here was the original formula:

BaseDamage = ((((2*Level)/5 +2)*Base Power*(Sp)Atk)/(Sp)Def)/50 +2

If we assume that the Pokemon is at level 100, then the formula becomes the following:

BaseDamage = 42*Base Power*(Sp)Atk/(Sp)Def/50 +2

That +2 is largely irrelevant and generally interferes with the calculations once modifiers are applied, so it can be removed for simplicity's sake. Since percent damage is used in the formula, we also need to take into account the opponent's HP. Finally, since we're studying types, the type effectiveness must be included as well.

%Damage=0.84*(Sp)Atk*Base Power*Type Effectiveness/(Opp_(Sp)Def*Opp_HP)

In the actual damage formula there is a modifier that chooses a random number between 1 and .85 each time a Pokemon attacks. This means that the actual damage done will change by a small amount every time the attack is selected. For the purposes of these calculations, I sided with simplicity and set it to 1. When looking at types themselves, further simplifications had to be made. Namely, it would be assumed that the attacker's Attack stat and Base Power of its moves would be constant for all 17 types, both physical and special. X-Act used 300 Attack and 80 Base Power in his calculations, but I felt that 80 Base Power was too low for this purpose. When looking at single types, it would be safe to assume that a Mono-Attacker would usually be utilizing a STAB move, so I upped the Base Power to 120 to account for that. Also, 299 is the stat of a base 100 Attack stat Pokemon with 252 EVs and a neutral nature (think Jolly/Timid), so I kept the 300 for simplicity. Plugging in these numbers gives the updated formula.

%Damage=30240*Type_Eff/(Opp_[Sp]Def*Opp_HP)

Now, since the maximum amount of percent damage done by any single attack is the entire opponent's HP, I put a cap on this formula. This was done by taking the minimum of the percent damage and 1. I did this to prevent types like Fire from being at the top of the list chiefly because they exploited 4x weaknesses (Escavalier, Durant, Snover, etc). Finally, usage needed to be factored into the formula so that hitting common threats like Slowking hard is more important than hitting something like Klinklang hard. The overall average percent came from summing up all the resulting values for each prevalent Pokemon in the metagame. This leads to the final formula.

Avg_Damage=sum(%Usage*min(30240*Type_Eff/(Opp_[Sp]Def*Opp_HP),1))

Changing Things Up

The numbers given out by this formula in and of itself were useful. However, I began to notice that Dragon-type attacks were surprisingly low on my initial rankings despite the lack of Steel-types in RU, and that Ground-type attacks, despite the numerous amount of Levitators and Flying-types, were quite high on the list. This made no sense from what I had heard from observing the posts of numerous competent battlers, so I set out to change the formula to make more viable conclusions. Fairly quickly I found that whenever offense was mentioned, it was always relative to how many hits it took to KO the opponent rather than the overall damage given. I had a minor epiphany, as I realized 60% and 90% were both essentially the same output in a 1v1 scenario, both being 2HKOs. However, in the previous formula, doing 90% attack would contribute to a significantly better score than doing 60%. This led to the scores rewarding super effective coverage more than solid neutral coverage. It wasn't hard to change the formula, I just had to take the inverse of the current formula and round up, creating what I am going to call "Clicks to KO" (CKO for short), represented by:

CKO=ceiling(1/maximum(Avg_Damage,0.1))/Accuracy

There were a few errors regarding immunities (because they dealt no damage), so I took the maximum of the average damage and 0.1, essentially setting the CKO of immunities and extremely weak hits to 10. I chose 10 as my minimum so types that have one or two Pokemon immune to it aren't automatically the worst attacking types (think Water Absorb). Also, since I am assuming the moves used had 100% accuracy for these calculations, the CKO is essentially the usage-weighted average hits to KO.

I then summed up the resulting amount (as it was still weighted by usage) and got the CKO for each type on both the physical and special sides. The results can be found below.

Rank Type CKO
1Special Dragon3.072
2Special Dark3.117
3Special Flying3.161
4Special Rock3.165
5Physical Flying3.261
6Physical Dragon3.311
7Physical Rock3.367
8Special Ghost3.379
9Physical Dark3.379
10Special Ice3.468
11Special Bug3.485
12Special Water3.518
13Special Fire3.566
14Physical Ice3.573
15Physical Water3.595
16Physical Bug3.666
17Physical Fire3.687
18Physical Ghost3.738
19Special Steel3.772
20Special Normal3.774
21Special Fighting3.825
22Special Psychic3.878
23Physical Fighting3.927
24Special Electric3.969
25Special Ground3.997
26Physical Normal4.001
27Special Grass4.017
28Physical Electric4.021
29Physical Steel4.031
30Special Poison4.033
31Physical Poison4.037
32Physical Psychic4.038
33Physical Grass4.124
34Physical Ground4.131

As I suspected, Dragon-type moves, having very little to resist them, were at the top of the list and Ground-types, with many Pokemon immune to them, were at the bottom. Does this mean that Earthquake is a bad move? No. This list is assuming a mono-attacking set, so having numerous Pokemon immune to your STAB move is a major downside.

Adding Another Move

Now that I had single-move coverage figured out, I browsed through the old Pokemetrics forums some more, and came across a thread by Dragontamer. Those that want to read his work can go here. I thought it was fascinating, so I figured that I would apply it to the CKO. Since the original formula summed up the CKOs for each Pokemon, to account for two-move coverage I simply took the minimum CKO between the two types and summed those up. The results for those numbers are here:

As you can see, the combination of specially based Ghost and Fighting attacks, known for being unresisted against all current Pokemon, is the best theoretical STAB combination in this metagame. Interestingly, the Ghost and Fire STAB combination is close behind, despite both types being resisted by Crawdaunt, a decently common Pokemon in RU. This implies that the super effective coverage provided by these types is enough to offset that one Pokemon. Another interesting note is the numbers here are generally less than the numbers in the previous table, which makes sense, since two-move coverage is always better than one-move coverage.

Finally, I wanted to incorporate the possibility of having one STAB move with a non-STAB coverage move. It is logical to assume that a hypothetical Normal / Poison type would be better off with a coverage move over one of their STABs, and it also accounts for two-move coverage on monotype Pokemon like Uxie, Lilligant, and Cryogonal. The method for this value is almost the same as for two STABs, except the non-STAB type has its damage multiplied by 2/3.

This is arguably the most useful out of the three tables, as it now allows you to make certain choices given an attacker's movepool. The most obvious example of this is deciding on a Hidden Power type for Pokemon like Lilligant who use it as their only coverage move. Pokemon Showdown! automatically sets the Base Power of Hidden Power to 70, which is close to the 80 that is used in the calculation, so we can assume that the relative ranking of the CKOs will not change within a type group. Using the Lilligant example, we scroll down until we see STAB Special Grass, and the type listed in the other column is the best Hidden Power type, in this case, Hidden Power Rock.

One last note: Since these scores are based on usage statistics, they will change as the new statistics come out each month.