Typing Rating

I decided to try my hand into a typing rating. I think I've already nailed the required formulae, but I won't be as bold as saying that these are the final formulae until I have time to research this thing further.

First of all, we need to consider two facets to typing: its offensive nature and its defensive nature. Its offensive nature is due to the STAB bonus it offers, while its defensive nature is basically due to the type chart.

It should be noted that the offensive nature of the typing of a Pokemon shouldn't note movepool at all. For example, just because we have a Fighting-type Pokemon does not mean that it will have Close Combat. Conversely, just because we have a Normal/Flying type Pokemon does not mean that it won't have Close Combat (see: Staraptor). Hence, as I like to repeat over and over again, the offensive nature of a Pokemon is affected the most by its movepool, and not by its typing or stats.

Without further ado, here's the Offensive Typing Rating (OTR) formula:

Code:

OTR = (72672 + Type1 + Type2) / 68680

where Type1 and Type2 are the two types of the Pokemon whose number corresponds to the table below:

Interestingly, the most defensive typing is Ghost/Steel (hello Kitsunoh), while the least defensive typing is Ice/Rock, which is so far non-existent. However, STAB-wise, Ice/Rock provides the best OTR, while Ghost/Steel ranks very low...

If we incorporate also the fact that types like Ice and Rock tend to deal more damage than types like Poison and Normal, the above chart changes to:

CAP Leader

I'd like to see if there is some way to incorporate this, or some derivative of this, into the CAP process. I really have no clue how to do that. But here's my motivation -- our current type selection process is a total crapshoot. We just randomly throw out potential types, with the hope that it will support our concept, and we take it from there. If we could somehow put a more analytical framework underneath our type discussions and selection process -- perhaps we could add a bit more structure and reason to our project.

I have a lot of random thoughts about this right now, and I don't want to go in a million directions at once. But, perhaps others can think about this stuff too and we might be able to come up with something together. Or maybe not. At the very least, it could be an interesting discussion!

Once again -- great work X-Act! I love when you present this kind of thing. It's always fascinating to see numbers that support our common "gut feelings" about this game we play.

This is pretty interesting, X-Act, but I was wondering where the numbers for the DTR came from. It seems as though the more resistances one typing has, the lower the number assigned it is, but how did you come up with numerical values for each, especially the non-existent (as of now) types?

Steel and Steel/Water both have 11 resistances, 1 immunity, 2 neutrals and 3 super effective moves against them, yet the numerical values for them are slightly different. Is this because of move type frequency in the metagame or some other reason?

The numbers listed in the table are the numbers above multiplied by 4, so that they become a whole number. (I prefer using whole numbers rather than decimals). As you can see, Water/Steel is slightly better than Steel because it has two double resistances (to Steel and to Ice) as opposed to mono-Steel, which doesn't.

DougJustDoug, I think we could incorporate it by doing this: Suppose our concept is Wallbraker. Everyone knows that it is easier to break walls if you get STAB on the moves you are using to break them. So we say, "You can not suggest a type with an OTR below 2100 (I don't know what this number should be, I just think that it is a good number)." That elimates the typings Bug, Dragon, Normal, Poison, Psychic and Steel. Name some walls that take super effective damage from these types.

Anyway, an Ice/Rock sweeper wouldn't work. In four words I will tell you why:
Scizor used Bullet Punch.
Ice/Rock, believe it or not, is the only possible typing that can be 4x weak to Steel.

Nice work X-Act, but could you care to explain more in-depth the OTR formula? Where do "72672" and "68680" come from? And also how did you calculate the OTR of single types? Thanks for your time^^

Click to expand...

Sure.

I considered that a hypothetical Pokemon can have any type of move in its movepool. Be it a Dark/Flying Pokemon or a Water/Dragon Pokemon, they both can learn Dragon Pulse, say. Hence I needed to consider the offense of every Pokemon from each of the 17 types. This would be equal for all Pokemon. To do this, I first took the typing of all the existing Pokemon into account, and calculated the type chart for each Pokemon. Then I added up all the Bug, Fire, Flying, etc. types separately. When I found the average of these type offenses, I got the offense for each Pokemon without taking STAB into account, and I got the number 72672/68680 (I actually got a more simple fraction but I prefer working with whole numbers, as I said before... in fact, 68680 = 17 * 505 * 8 [number of types * number of Pokemon * 8]).

Then, since STAB multiplies the offense of that particular type by 1.5, all I needed to do is to add half of the value for that particular type, because I had already considered that particular type to be multiplied by 1. So I divided each of the numbers for the types I found before by 2, and I got the numbers in the table.

Let's give an example. If I have a Water/Ice Pokemon, I considered that if it attacked by a Water move, its power would be 1.5 times the usual power, and the same thing would happen if it were an Ice move. For all the other moves it uses, the power would be the usual amount of power. Hence its ODB is:

The thing in brackets will be the same for every Pokemon, and I found that to be equal to 72672 / 68680. Ice x 0.5 and Water x 0.5 can then be found from the table (and then divided by 68680 as well). This way, I simplified the calculation considerably.

Skarmory has the best DTR of all existing Pokemon, but Special Fire and Electric moves are not all that uncommon. Is there any way of combining your DTR results with the actual % of use of specific types of moves in the OU metagame?

Results like these are a great read, and worth keeping in mind when creating our CAPs, but I'd hesitate to consider applying a formulaic approach when it comes to deciding Type. With our concept tending to be more complex than just 'sweeper' or 'wall', how do you justify calculating an optimal Typing one way or the other without some serious polljumping?

In any case, Typing is one of those attributes we deem least critical to the success or failure of our CAPs. Syclant was at one point monstrous with its Bug/Ice combination, today it is going through a Revision process in order to buff it up. Even there, changing it's Typing to something that might help it deal more easily with the Scizor problem is not on the table.

Skarmory has the best DTR of all existing Pokemon, but Special Fire and Electric moves are not all that uncommon. Is there any way of combining your DTR results with the actual % of use of specific types of moves in the OU metagame?

Click to expand...

It would be possible to do this, yes, but we need to be as objective as possible here. And that means that the typing rating (and the base stats ratings also) should be independent of the metagame the Pokemon are used in.

For example, you mention that Fire and Electric moves are common in the metagame. Maybe they're common just because Steel types are such good defensive types? In other words, the fact that Fire moves are common in a metagame does not make Steel types any less defensive - if anything, it underlines the fact that, since they are so defensive, drastic measures are required to stop them, and one of these measures is, apparently, spamming Fire moves left, right and centre.

In response to X-Act's post after mine, doesn't STAB affect the damage a move does by 1.5? So shouldn't this affect the OTR? If we made two pokemon, one having Ice/Rock typing and the other having Normal/Poison typing, but everything else the same, it's obvious that the Ice/Rock would do better than the Normal/Poison by a good amount, because of its STABs.

I considered that a hypothetical Pokemon can have any type of move in its movepool. Be it a Dark/Flying Pokemon or a Water/Dragon Pokemon, they both can learn Dragon Pulse, say. Hence I needed to consider the offense of every Pokemon from each of the 17 types. This would be equal for all Pokemon. To do this, I first took the typing of all the existing Pokemon into account, and calculated the type chart for each Pokemon. Then I added up all the Bug, Fire, Flying, etc. types separately. When I found the average of these type offenses, I got the offense for each Pokemon without taking STAB into account, and I got the number 72672/68680 (I actually got a more simple fraction but I prefer working with whole numbers, as I said before... in fact, 68680 = 17 * 505 * 8 [number of types * number of Pokemon * 8]).

Then, since STAB multiplies the offense of that particular type by 1.5, all I needed to do is to add half of the value for that particular type, because I had already considered that particular type to be multiplied by 1. So I divided each of the numbers for the types I found before by 2, and I got the numbers in the table.

Let's give an example. If I have a Water/Ice Pokemon, I considered that if it attacked by a Water move, its power would be 1.5 times the usual power, and the same thing would happen if it were an Ice move. For all the other moves it uses, the power would be the usual amount of power. Hence its ODB is:

The thing in brackets will be the same for every Pokemon, and I found that to be equal to 72672 / 68680. Ice x 0.5 and Water x 0.5 can then be found from the table (and then divided by 68680 as well). This way, I simplified the calculation considerably.

Click to expand...

Wow, thanks for the explaination man^^ Where do you teach? One of these days I should attend a course of yours after I finish with philosophy!:-)

X-Act, is it not reasonable to assume that moves that have good offensive type will be used more than moves of poor offensive type? As such, it would seem like having a resistance to a good offensive type would be more useful than a resistance to a poor one. After all, Hippowdon's rock resist is a very important part of its walling ability. Its Poison resist...not so much.

A possible way to handle this is to divide each weakness/resistance by the offensive type rating of each type in question. In other words,

DTR ~ 1/sum(type1mod*type2mod/OTR)

Where the sum is carried out over all types and ~ here means "is proportional to".

This also reminds me of two other modifications. Abilities that affect type interaction (Flash Fire, Dry Skin, Thick Fat, Levitate, etc), and Stealth Rock weakness should probably factor in somehow as well.

In response to X-Act's post after mine, doesn't STAB affect the damage a move does by 1.5? So shouldn't this affect the OTR? If we made two pokemon, one having Ice/Rock typing and the other having Normal/Poison typing, but everything else the same, it's obvious that the Ice/Rock would do better than the Normal/Poison by a good amount, because of its STABs.

Click to expand...

The OTR formula provides a higher number for an Ice/Rock Pokemon than for a Normal/Poison Pokemon already, so what is the problem?

(Also I'd argue that an Ice/Rock Pokemon would always be a better attacker than a Normal/Poison Pokemon - you're assuming that an Ice/Rock Pokemon will have a good Ice move and a good Rock move, which, while a natural assumption, is not always the case [see: Flareon]. This emphasizes once again that movepool is what makes a Pokemon offensive.)

X-Act, is it not reasonable to assume that moves that have good offensive type will be used more than moves of poor offensive type? As such, it would seem like having a resistance to a good offensive type would be more useful than a resistance to a poor one. After all, Hippowdon's rock resist is a very important part of its walling ability. Its Poison resist...not so much.

Imagine two hypothetical types, henceforth known as A and B. A is immune to ice and rock, and weak to poison, while B resists poison, normal, steel, and ghost, and is weak to ground. Both have defensive typing ratings of 64, yet I'm pretty sure A is a better type, especially because of the stealth rock immunity.

If we were to adjust the numbers used in the ratios to signify just how useful a resist or immunity to a specific type is, or just how bad each specific weakness is, the DTR would probably be a bit more accurate.

Imagine two hypothetical types, henceforth known as A and B. A is immune to ice and rock, and weak to poison, while B resists poison, normal, steel, and ghost, and is weak to ground. Both have defensive typing ratings of 64, yet I'm pretty sure A is a better type, especially because of the stealth rock immunity.

If we were to adjust the numbers used in the ratios to signify just how useful a resist or immunity to a specific type is, or just how bad each specific weakness is, the DTR would probably be a bit more accurate.

Click to expand...

I agree with you after thinking about it, and I've managed to fix it. Your particular example now yields a DTR of 65.727 for Type A and 69.112 for Type B.

Ha! Very interesting concept, nice work. I'll probably end up consulting the chart in the future.

The obvious point that's been mentioned is the divide between theory and results in the actual environment. Strategies will compensate and increase the priorities of some typing and decrease others. And being a dynamic environment, this constantly shifts. (Not saying anything that isn't obvious)

I can see this chart as a useful tool looking from a broad perspective.
Of course you can't use it as the definitive answer of course, because that's where this project's creative and innovative sides come to play.

Long time lurker, thought I might as well go ahead and say something.
Thanks for your work.

I was thinking, since DTR=68/type, and "type" is so much larger when adjusted (for instance, 68->78 for normal), should the DTR equation be changed for adjusted stats as well? Maybe something like DTR=~78/type? Because there are several pretty defensive types with adjusted DTRs above 1 (even bug/steel), while the only typings that really should be above 1 are the defensively below average ones.

I was thinking, since DTR=68/type, and "type" is so much larger when adjusted (for instance, 68->78 for normal), should the DTR equation be changed for adjusted stats as well? Maybe something like DTR=~78/type? Because there are several pretty defensive types with adjusted DTRs above 1 (even bug/steel), while the only typings that really should be above 1 are the defensively below average ones.

Click to expand...

68 was chosen for a very specific reason. Originally, it was 17 (the number of different types), but since I had multiplied each number on the table by 4 to make them whole numbers, I had to multiply 17 by 4 as well to compensate. Now that the numbers are all weird decimals, this step is redundant, but we can't just replace the 68 without changing the decimals written on the table as well.

Mono-Water now becomes the best out of these, since it resists Ice and Fire and is neutral to Rock. Normal/Flying becomes the worst since it is weak to both Ice and Rock and is neutral to Fire. Exactly as we wanted!

So thank you to all those people who suggested improving the DTR measure.

By the way, to get these new numbers, I took the type chart again, but, before I summed up the values in the type chart corresponding to the types, I first multiplied each value by the number of the OTR chart of the type that's attacking it divided by 2020 (= 505 x 4). For example, if a type was neutral to Bug, I added the OTR corresponding to Bug in the OTR chart divided by 2020 (= 2080/2020 = 1.03) instead of adding 1.

What I meant was, shouldn't we use (2080/2020+2171/2020+2046/2020+2200/2020+...)x4 instead of (1+1+1+1+...)x4? When unadjusted, a typeless (and therefore defensively average) will take 1x damage from all attacks, and thus 68 is an excellent unadjusted base number. But when using adjusted numbers, it's not (4, 2, 1, .5, .25 or 0)x1 plus 16 others, but instead (4, 2, 1, .5, .25, or 0)xOTR plus 16 others.