Notice to addon makers: This is built on a wholesale ripoff of an old version of GearScore Lite, so apologies to whoever wrote the original code I've now heartlessly butchered because I'm too lazy to do my own ToolTip API stuff. Your stuff was neat and handy, thanks for doing such a good job! Also, it uses LibStatLogic, which is awesome and saves me having to do any real math (I think...).
SpecScore gives you a value to judge the relative worth of items. Presently, it's only calibrated for level 85 Survival Hunters and level 1-85 Holy Priests. For each, it provides specific information that the player can use to judge whether an item will improve their effectiveness.
The calculations for values of stats are (typically) based on two major concepts: additive and multiplicative bonuses. Calculations are based on best available data (wowpedia.org and elitistjerks.com). See code comments for details and theoretical analysis.
SpecScore provides the level 85 survival hunter with an estimate for the amount of dps increase the hunter can expect from an item. A higher number on a new item represents an increase in dps. It's weighted for 15000 dps, but that number is easy to find in the code if you want to weight it differently.
The system uses the dps base value to estimate the worth of proportional benefits, like crit rating or mastery, against linear benefits, like dps from a bow. A higher base dps value will weight crit rating higher. You should pick a base dps near your typical, steady-state raid boss dps.
The hunter will receive two numbers. One number includes hit rating bonus. It is presently up to the hunter to monitor their own hit rating cap and utilize the provided information appropriately. Haste cap is not presently accounted for, but should be monitored. Haste cap accounting will be added in the future.
SpecScore provides the holy priest of any level with number representing both the mana regeneration capacity in combat and the estimated hps bonus provided healing. Both are calibrated around the renew spell, and the factors for everything adjust by level based on high order polynomial regressions of data from elitistjerks.com.
Mana regeneration capacity is rated in numbers of renews that can be continually cast. A value of 1 represents the ability to completely regenerate the cost of a renew in the time it takes the renew to complete. It is best to consider this as a design margin, and to aim for some percentage above 1. Obviously, if you're not stupid and lazy like me and use something other than renew, the number can be drastically different from 1. But it will still change to reflect your mana regeneration regardless of play style, so it provides valuable information whether or not you actually use renew. Renew is just a convenient baseline. The system accounts for whether you've invested in talents in the holy tree which impact in-combat mana regeneration.
HPS bonus is also rated against renew. It calculates how much healing renew is boosted by per second, using experimental data from elitistjerks.com and wowpedia.org as well as my own testing. Again, renew is simply a convenient baseline, and all other spells will find similar relative benefits for items with a higher rating on this factor.
These two values are factored together to provide a general area under the curve value representing the benefit of both, wherein HPS tends to provide more healing per mana bar at higher mana draw and Renews tends to provide more healing per mana bar at lower mana draws. Renews and HPS are also provided as (Renews%/HPS) for information.
Level scaling is accomplished with piecemeal regressions based on data from the above sources. Cursory testing shows it to be relatively reliable, but let me know if you find a significant error, particularly for level capped play.
SpecScore provides the protection Paladin of any level with a TTL value representing the relative contribution of an item to your overall estimated time to live. It also provides a DPS value which is deprecated and presently defaults to 1. This portion heavily relies upon LibStatLogic, which I believe has much better math than any of my other sections. The other sections may be adapted to use this framework in the future.
Time to live (TTL) is calculated accounting for damage reduction from armor, dodge and parry. Helath gains from stamina are appropriately accounted for. The provided value should reflect the proportional value of an item. Details are listed in the code. The system assumes you have Touch by the Light and three ranks of Toughness.
Other Classes and Specs:
There is presently no plan to incorporate more classes and specs unless I feel like it. Code exists for other classes, and I might fix it in the future.
If you want me to write code for your class and spec, you're most likely out of luck. Sorry.
- Added discussion of Priest analysis to code
- Removed debugging from Priest code
- Corrected a bug in which UnitHealth was used in lieu of UnitHealthMax in Paladin code causing fluctuating (yet not misleading) values
- Combined the two priest factors into one value based on new analysis
- Assumes three ranks of toughness for Protection Paladins