|
|||||||
![]() |
|
|
Thread Tools |
|
|
#1 |
|
Join Date: Nov 2012
Posts: 46
West Coast USA
|
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 on the Smog about attacking types and their effectiveness in the Gen IV 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 down to only contain 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. BaseDamage = 42*Base Power*(Sp)Atk/(Sp)Def/50 +2 That +2 is largely irrelevant and generally obstructs 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 opponents 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 every time the attack is selected by a small amount. 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 Pokemon with 252 EVs and a neutral nature (think Jolly/Timid), so I kept the 300 for simplicity. plugging these numbers in 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 a 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 was useful. However, I began to notice that the 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 (since 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 1 or 2 Pokemon immune to it aren’t automatically the worst attacking types weren’t (think Water Absorb). Also, since I am assuming the moves used all have 100% accuracy for these calculations, the CKO is essentially the usage-weighted average hits to KO. I then summed up the resulting amount (since it was still weighted by usage) and got the CKO for each type on both the physical and special side. The results can be found below.
1 STAB
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 moves 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:
2 STABs
As you can see, specially based Ghost and Fighting, 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 resist. Another interesting note is the numbers here are generally less than the numbers in the previous table, which makes sense, since 2-move coverage is always better than 1-move coverage. Finally, I wanted to incorporate the possibility of having 1 STAB move with a 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 2 STABs, except the non-STABed type has its damage multiplied by 2/3.
1 STAB w/ Coverage
This is arguably the most useful out of the three tables, since 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.
__________________
Will think of something creative later (or not)... Last edited by MicfiJasan; Apr 19th, 2013 at 8:45:26 PM. |
|
|
|
|
|
#2 |
|
Join Date: May 2011
Posts: 1,110
Wherever the food is.
|
This is an amazing amount of compiled data. Definitely looks like you did both your research and homework regarding this.
All in all, these statistics really show some awesome potential ideas for STAB coverage moves. One thing to consider, though - have you checked how the defenses of these typings also influence how well a STAB can perform? Or at least the potential Stealth Rocks or Spikes or something. That's a lot more data and may be more suitable to another letter, but it would be pretty impressive to have an article showing both all of the positives of STABs regarding attacks and all the negative factors of having a certain type. It could really display why Pokemon in almost every tier are either used or not used (besides the other factors, of course). In fact, having both the offensive and defensive sides of this could show what is really the best typing, in theory. I can already tell here it would be Ghost/Fighting, but if there was a relationship between that and defensive typings (which that might still be the case - immunities, SR resistant and whatnot) that would probably be some of the most important research on Smogon. |
|
|
|
|
|
#3 | |
|
Join Date: Nov 2012
Posts: 46
West Coast USA
|
First, I reorganized the last "table" so that all the STAB types were grouped together, making it easier to locate the best/worst coverage options.
Quote:
You did bring up an interesting point about Stealth Rock, though, since I know people like to include Stealth Rock into their damage calculations. I ultimately decided against it here due to how well regarded the RU spinners are. Also, when studying a tier where one of the biggest threats is Moltres, it doesn't feel right to make calculations assuming it'll always be at 50% when attacked. That said, if people want me to include it, I think I can make it work. Finally, opening this up for QC, because I prefer knowing exactly what I have to change, otherwise I know I'll end up changing something that was fine as it was. I do know that the tables probably aren't up to snuff at the moment, but I really have no idea how the formatting for them works, so I'll see what help I can get.
__________________
Will think of something creative later (or not)... |
|
|
|
|
![]() |
| Thread Tools | |
|
|