TankPoints

Whether this project is out of date or its author marked it as abandoned, this project is no longer maintained.

If you wish to take this project over, please report it and state your intentions.

TankPoints 2.0 - A benchmark for survivalbility gear

About TankPoints

TankPoints was created to help myself compare different pieces of tanking gear, because it was difficult to decided at a glance like whether 12 defense is better then 1 dodge.

TankPoints can be seen as how much damage you can take before damage reduction, it considers your max health, armor, defense, dodge, parry, block, block value, resilience, crushing blow chance, miss, crit reduction, talants, buffs, stance/forms, and more.

Keep in mind though, that higher TankPoints does not make a better tank, it is only a benchmark for survivalbility gear but does not calculate threat.
It can not decide for you what you should wear for what boss, but it can provide you with a wealth of information what will hopfully be useful for choosing gear.

About TankPoints 2.0

TankPoints 2.0 is a complete rewrite of my original TankPoints for WoW 2.0 using the Ace2 framework.

It has a much improved TankPoints algorithm, intergrates nicely into the character stats dropdown menu, and shows a lot more information then the original TankPoints.

2.0 introduced a new combat ratings system which made it even harder to compare gear, in order to code combat rating support for TankPoints, the exact rating to percentage formula is required which Blizzard didn't give us.
Luckly, I have suceessfully reverse engineered the rating formula for all levels and coded an addon called "Rating Buster" that converts ratings on item tooltips into percentages, you can try it out here.

How to use

The value of Block

The value is Shield Block Value and Block Rating is highly dependent on what you are tanking.
Its very good for mobs that don't hit very hard like in heroics, but is worth much less on hard hitting bosses in 25 man raids.
At level 80, TankPoints' default mob damage is tuned to 25 man raids, with a value of 24365 damage before mitigation.
You can change this value to match what you plan on tanking by using the "/tp mob damage" command in game.
A mob damage of 10505 for example is a good value for level 80 heroics.

TankPoints also calculates the value of Shield Block for Warriors, and Holy Shield for Paladins.
You can use the "/tp player sbfreq" command to set a shield block frequency that matches your rotation (in how many seconds AFTER cooldown finishes).
For most tankadins rotations, you will have a 100% Holy Shield uptime, using "/tp player sbfreq 1" will tell TankPoints that you will use Holy Shield 1 second after cooldown finishes (every 9 secs)

TankPoints 2.0 Features

Imporved TankPoints 2.0 formula

Support for all combat ratings including the new resilience stat

Support for block% and block value

Support for crushing blows

Support for combat table and correctly caps off at a total of 100%.
Using Hit < Crushing < Crit < Block < Parry < Dodge < Miss

Support for mob stats:

Mob level - defaults player level 3

Mob damage

Mob melee crit chance

Mob melee crit bonus

Mob melee miss chance

Mob spell crit chance

Mob spell crit bonus

Mob spell miss chance

Improved TankPoints Calculator

TankPoints User Interface

Intergrated in to the Character stats dropdown menu (See Screeshots)

When TankPoints is selected it displays:

TankPoints

Melee Damage Reduction

Block Value

Spell TankPoints

Spell Damage Reduction

TankPoints tooltip:

Your stance

Mob Stats

Mob Level

Mob Damage (after damage reduction)

Mob Crit Chance

Mob Miss Chance

TankPoints per StatValue - Shows how much TankPoints you gain for each stats with equal item values, because the values below are equal in the item value formula, you can use this data to see what gives the most bang for the buck in terms of item budgets.

1 Agility =

1.5 Stamina =

10 Armor =

1 Resilience =

1 Defense Rating =

1 Dodge Rating =

1 Parry Rating =

1 Block Rating =

1.54 Block Value

Option to hold down ALT key will show how much TankPoints you gain for each stat point

1 Agility

1 Stamina

1 Armor

1 Resilience

1% Defense

1% Dodge

1% Parry

1% Block

1 Block Value

Melee Damage Reduction tooltip:

Armor Damage Reduction against mob level - Useful because the default armor tooltip only shows the reduction for the same level

Mob Level, Player Level

Combat Table - Hit < Crushing < Crit < Block < Parry < Dodge < Miss. The total of these chances must be capped at 100%, if you exceed 100% then lower priority values will be pushed off the table. For example, when you press shield block ( 75% block chance), hit, crush and crit will all be pushed off and will be 0, your real block chance will also be capped at (100% - Parry% - Dodge% - Miss%)

Block Value tooltip - Block Value should have been included in the default UI, but they didn't so I coded my own function that does it, strength, items, talents(warrior, paladin, shaman) are all considered in the algorithm.

Mob Damage before Damage Reduction (armor and stance effects)

Mob Damage after Damage Reduction

Blocked percentage

Block Value / Mob Damage after DR

Block Chance

Equivalent Block Mitigation

Block Chance * Blocked percentage:
This can be seen equal with the same amount of dodge or parry.

Stat weights are really easy to calculate and that being said I cannot understand why a weight system could not be added to TP.

Stat weights are extraordinarily difficult to calculate.

I mean there are still ticks on this wowace site that mention problems with druids and DK calculations and they are all still set at a "new" level of ticket escalation so I was assuming that no one was working on it.

The reason is because nobody has ever offered to supply any information. Saying "It's wrong" isn't useful to me. i do not have:

a level 90 warrior

a level 90 druid

a level 90 death knight

a level 90 monk

i have a level 90 Paladin. i'll gladly adopt any input that anyone else can offer; but nobody has offered anything.

Stat weights are extraordinarily difficult to calculate. Here's a practical example from two years ago, of me trying to figure out what Druid's Savage Defense was worth:

Savage Defense Passive
Requires Bear Form
Each time you deal a critical strike while in Bear Form, you have a 50% chance to gain Savage Defense, reducing the damage taken from the next physical attack that strikes you by 35% of your attack power.

Savage Defender
Requires Bear Form
Increases the damage absorbed by your Savage Defense ability by 32%. Each point of Mastery increases the absorb by an additional 4%.

Well i can see why Whitetooth's LibStatLogic doesn't include it - it's damn near impossible to define. It has to be modeled as an average % damage reduction.

The variables are:

your crit chance

how often you swing

how often the enemy swings

your attack power

i'll assume that you and the enemy have the same swing speed, that eliminates two variables.

Assume you have a 30% melee crit chance: 30 swings in 100 will be crits.
Only 50% of those will trigger Savage Defense.
So 15 swings in 100 will trigger Savage Defense.

The damage reduction of Savage Defense is 35% of attack power.Savage Defender increases that percentage by 32%. This means that the damage reduction could be either 67% (additive, 35%+32%=67%), or 46.2% (multiplicative, 35%*1.32=46.2%).

i'll assume the absorption increase is additive: 67% of attack power. Each point of mastery increases the absorb by 4%:

AbsorbEffect = 35% + 32% + Mastery*4%

So it now begins to act like the old shield block value, meaning reducing an incoming attack by a fixed amount, rather than a percentage:

But Savage Defense only has any value if you're actually hit. If you're never hit (i.e. dodge+miss is over 100%), then Savage Defense has zero damage reduction. So we reduce it's effectiveness by your chance to be hit (100% chance to be hit = 100% usefulness; 0% chance to be hit = 0% usefulness; 75% chance to be hit = 75% usefulness):

...which is still a lousy value. So i'll wait for someone else to analyze it.

In other words: i tried and tried, and i still couldn't get a value.

Calculating stat weights is extraordinarily difficult. This isn't my addon, i just maintain it so it's accurate for my paladin. It would be nice if it worked for other tank classes; but i'm not a bitch. This project is open source; you don't like it: fix it your damn self. i'm not going to do other people's work for them, and i'm not here to do anything for anyone. Tell me specifically where the formula's are wrong, and what the right formulas are, and i might consider doing your work for you and changing the code.

Have you not tested it on any other classes? Because I know personally one druids and DKs it is far from correct. Warriors it seems to revert to the Stamina being the judgement for TP calculation and as for pallys I have never had to gear a pally to tank so I simply do not know about how well it works for them. Stat weights are really easy to calculate and that being said I cannot understand why a weight system could not be added to TP. I mean there are still ticks on this wowace site that mention problems with druids and DK calculations and they are all still set at a "new" level of ticket escalation so I was assuming that no one was working on it...

I see that there is currently no To Do list for this add-on does the meant it is dead because the calculations are always off for almost any and all classes. Not matter what stats the gear has on it TP says it is like a 10k+TP Upgrade for almost all classes. It seems the only thing it ever takes into account is stamina, while most tank classes now stack stamina and use the abilities in their class for mitigation, there has to be something better. Considering that there has not been a major update in a immense amount of time might I suggest pairing up with the authors of Pawn to possibly integrate this into their add-on or finally fix the calculations...? Just a suggestion I would love to see this add-on returned to it's prime.

The function TPTips.ProcessTooltip currently calculates a few values (i'll change the variable names to make it more obvious):

tankPointsLeft, tankPointsRight

effectiveHealthLeft, effectiveHealthRight

damageReductionLeft, damageReductionRight

The whole "left" verses "right" means when you're comparing the item against the two possible slots it can go in.

if it's a trinket: tankPointsLeft refers to the top slot, tankPointsRight refers to the bottom slot

if it's a ring: tankPointsLeft refers to the top slot, tankPointsRight refers to the bottom slot

if it's a One-Handed weapon: tankPointsLeft refers to the main slot, tankPointsRight refers to the off-hand slot.

In other words you want to use whichever value (tpLeft, tpRight) is larger.

As for ignoring gems/enchants, right now that also only follows the configuration settings. One might argue that if you're looking at items in the auction house they should follow the user's TankPoints configuration preferences. (i.e. don't worry about it).

But i can definitely see how the code should be redone to have that portion refactored out; and you pass a parameter saying if you want to ignore gems/enchants of the player's item you're comparing to.

So the todo list

create a new function that can be called with an item link

has a parameter if we should ignoreEnchants on the player's item we're comparing against

has a parameter if we should ignoreGems on the player's item we're comparing against

has a parameter if we should ignorePrismatic on the player's item we're comparing against

Also, is there a way for me to have it ignore enchants / gems / prismatic (override settings defined in the tankpoints config)? If not, I can put in the documentation to change those settings using the tankpoints config.