This project is abandoned.

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.

Rating Buster: http://wow.curse-gaming.com/en/files/details/4991/rating-buster/

How to use

Gravity has writen an awesome 7 page guide to using TankPoints on his blog: http://pwnwear.com/tankpoints-user-guide/

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.
  • Spell TankPoints Tooltip - Shows your strongest school by default
    • Your stance
    • TankPoints at the following Melee/Spell Damage Ratio
      • 25% Melee Damage 75% <school> damage
      • 50% Melee Damage 50% <school> damage
      • 75% Melee Damage 25% <school> damage
    • Can manually cycle through all schools by left clicking the stat
    • Reset back to showing the strongest school by right click the stat
  • Spell Damage Reduction - Shows your strongest school by default
    • Shows damage reductions for all schools
    • Same click functions as the Spell TankPoints Tooltip

Supported class talants and buffs

  • Warrior: Improved Defensive Stance, Shield Mastery, Shield Wall - Buff, Death Wish - Buff, Recklessness - Buff, Toughness, Vitality
  • Druid: Survival of the Fittest, Natural Perfection, Thick Hide, Balance of Power, Heart of the Wild
  • Paladin: Shield Specialization, Divine Purpose, Blessed Life, Ardent Defender, Spell Warding, Improved Righteous Fury, Divine Strength, Toughness
  • Shaman: Shield Specialization, Elemental Shields, Elemental Warding, Toughness
  • Rogue: Sleight of Hand, Heightened Senses, Deadened Nerves, Vitality, Sinister Calling, Cloak of Shadows - Buff
  • Hunter: Survival Instincts, Thick Hide, Combat Experience, Lightning Reflexes
  • Priest: Shadow Resilience, Spell Warding, Pain Suppression - Buff, Enlightenment
  • Hunter: Survivalist, Endurance Training
  • Warlock: Demonic Resilience, Master Demonologist, Soul Link - Buff, Demonic Embrace, Fel Stamina
  • Mage: Arctic Winds, Prismatic Cloak, Playing with Fire, Frozen Core

Slash Commands

Use: /tp or /tankpoints

  • '''/tp''' - Show help
  • '''/tp calc''' - Toggle calculator
  • '''/tp mob''' - Show mob stats help
  • '''/tp mob level (-20 - 20)''' - Sets the level difference between the mob and you
  • '''/tp mob damage (0 - 99999)''' - Sets mob's damage before damage reduction
  • '''/tp mob default''' - Restores default mob stats
  • '''/tp mob advanced''' - Show advanced mob stats help
  • '''/tp mob advanced crit (0 - 100)''' - Sets mob's melee crit chance
  • '''/tp mob advanced critbonus''' - Sets mob's melee crit bonus
  • '''/tp mob advanced miss (0 - 100)''' - Sets mob's melee miss chance
  • '''/tp mob advanced spellcrit (0 - 100)''' - Sets mob's spell crit chance
  • '''/tp mob advanced spellcritbonus''' - Sets mob's spell crit bonus
  • '''/tp mob advanced spellmiss (0 - 100)''' - Sets mob's spell miss chance
  • '''/tp player sbfreq (0 - 1000)''' - Sets the Shield Block press delay in seconds after Shield Block finishes cooldown

TankPoints Formulas



Melee Total Reduction

  • totalReduction[MELEE] = 1 - ((mobCritChance * (1 + mobCritBonus) * mobCritDamageMod) + (mobCrushChance * 1.5) + (1 - mobCrushChance - mobCritChance - blockChance * blockedMod - parryChance - dodgeChance - mobMissChance)) * (1 - armorReduction) * meleeTakenMod

Spell Total Reduction

  • totalReduction[SCHOOL] = 1 - ((mobSpellCritChance * (1 + mobSpellCritBonus) * mobSpellCritDamageMod) + (1 - mobSpellCritChance - mobSpellMissChance)) * (1 - schoolReduction[SCHOOL]) * spellTakenMod

Armor Reduction

levelModifier = attackerLevel
if ( levelModifier > 59 ) then
  levelModifier = levelModifier + (4.5 * (levelModifier - 59))
armorReductionTemp = armor / ((85 * levelModifier) + 400)
armorReduction = armorReductionTemp / (armorReductionTemp + 1)
if armorReduction > 0.75 then
  armorReduction = 0.75
if armorReduction < 0 then
  armorReduction = 0

Defense Effect

  • defenseEffect = (defense - attackerLevel * 5) * 0.04 * 0.01

Block Value From Strength

  • blockValueFromStrength = floor(totalStr * 0.5 - 10)

Block Value

  • blockValue = floor((floor(totalStr * 0.5 - 10) + blockValueFromItems + blockValueFromShield) * blockValueMod)

Mob Damage (default formula)

  • mobDamage = (levelModifier * 55) * meleeTakenMod * (1 - armorReduction)

Resilience Effect

  • resilienceEffect = ReverseRating(resilience, playerLevel) * 0.01

Mob Crit Chance

  • mobCritChance = max(0, 0.05 - defenseEffect - resilienceEffect)

Mob Crit Bonus

  • mobCritBonus = 1

Mob Miss Chance

  • mobMissChance = max(0, 0.05 + defenseEffect)

Mob Crush Chance (if mobLevel is +4 or more)

  • mobCrushChance = (mobLevel - playerLevel) * 0.1 - 0.15

Mob Crit Damage Mod

  • mobCritDamageMod = max(0, 1 - resilienceEffect * 2)

Blocked Mod

  • blockedMod = min(1, blockValue / mobDamage)

Mob Spell Crit Chance

  • mobSpellCritChance = max(0, 0 - resilienceEffect)

Mob Spell Crit Bonus

  • mobSpellCritBonus = 0.5

Mob Spell Miss Chance

  • mobSpellMissChance = 0

Mob Spell Crit Damage Mod

  • mobSpellCritDamageMod = max(0, 1 - resilienceEffect * 2)

Resistance Reduction

  • schoolReduction[SCHOOL] = 0.75 * (resistance[SCHOOL] / (mobLevel * 5))

EffectiveHealth (EH)

  • effectiveHealth[MELEE] = playerHealth * 1/(1 - (1-armorReduction) * damageTakenMod)
  • effectiveHealth[SCHOOL] = playerHealth * 1/(1 - damageTakenMod) In other words: how much health you have times how much that health translates into raw damage when you're hit

EffectiveHealthWithBlock (EHB)

For every swing of the mob (see mobAtkSpeed) until you are out of health
    if time to press the shield block button given timeBetweenPresses
       refresh charges on shield block
    if mobHitChance + mobCrushChance + mobCritChance == 0 or
      (charges left and mobHitChance + mobCrushChance + mobCritChance <= 75%)
       use a charge on shield block
       min(healthLeft, take raw damage from the monster per mobDamage - blockValue)
       min(healthLeft, take raw damage from the monster per mobDamage)


Version History


  • toc update
  • Packaged with new libraries with 3.2.0 class support
  • Block Value is now 2/0.65 per statpoint
  • Paladin: Fixed Holy Shield talent location
  • Default mob damage at level 83 is now 44165, up from 24365 to match current raid difficulty.
  • Fixed TankPoints per Defense Rating calculation
  • Fixed Effective Health with Block


  • toc update
  • Packaged with new libraries with 3.1.3 class support


  • NEW: Avoidance diminishing returns calculations in Melee DR tooltip will show you how much avoidance you gain for +16 of each stat.
  • Diminishing returns for chance to be missed now supported.
  • Paladin: Combat table will now reflect the effects of Holy Shield if you set it at 100% uptime. To set 100% Holy Shield uptime, use a sqfreq lower then or equal to 2 secs, ex: /tp player sbfreq 2
  • Fixed Block Value formula
  • Can set shield block frequency from 0 secs to 1000 secs, set it to 1000 if you don't want TankPoints to calculate the shield block effect
  • Defense isn't affected by DR (Defense Rating is)
  • Fixed StatFrame data not updated correctly during stance/presence/form/aura change
  • Uses LibStatLogic-1.1 and LibTipHooker-1.1 now
  • Made the Calculator movable by dragging the sides
  • Support for enchant statmods:
  • Enchant: Rune of the Stoneskin Gargoyle: +2% Stamina
  • Enchant: Rune of Spellshattering: Deflects 4% of all spell damage
  • Enchant: Rune of Spellbreaking: Deflects 2% of all spell damage
  • Support for meta gem statmods:
  • Austere Earthsiege Diamond: 2% Increased Armor Value from Items
  • MetaGem: Eternal Earthsiege Diamond:+5% Shield Block Value
  • MetaGem: Eternal Earthstorm Diamond: +5% Shield Block Value
  • MetaGem: Effulgent Skyflare Diamond: Reduce Spell Damage Taken by 2%
  • Fixed Warrior talent detection: Vitality, Strength of Arms, Improved Defensive Stance
  • Death Knight: Added Stance: Frost Presence detection fixed
  • Death Knight: Added Buff: Bone Shield: Damage reduced by 40%.
  • 3.0.8: Death Knight: Updated Stance: Frost Presence: The bonus armor has been increased from 60 to 80% and magic damage reduction increased from 5 to 15%.
  • 3.0.8: Death Knight: Updated Buff: Bone Shield: Damage reduced by 20%.
  • 3.0.8: Death Knight: Updated Buff: Will of the Necropolis: Reduce the damage of any attack that takes the DK below 35% health by 5%/10%/15% instead of boosting armor when wounded.
  • 3.0.8: Druid: Updated Talent: Survival of the Fittest: This talent now grants 22/44/66% bonus armor in Bear Form and Dire Bear Form in addition to all of its previous effects.
  • 3.0.8: Shaman: Updated Talent: Elemental Warding: Now reduces all damage taken by 2/4/6%.
  • Removed Endurance (Tauren racial)


  • Support for Warrior talent: Critical Block
  • Fixed Shield Block and Holy Shield calculations
  • Default mob damage at level 83 is now 24365 instead of 10505
  • Fixed a bug causing "ADD_CRIT_TAKEN" from talents to be capped at MobCritChance
  • Paladin: Added Talent: Redoubt - Increases your block value by 10%/20%/30%
  • Death Knight BaseDodge changed from 0.758% to 3.4636%.


  • Avoidance diminishing returns support: Calculator, ItemTooltip, TankPoints Per Stat, TankPoints Per StatValue
  • Supports Death Knight: Forceful Deflection - Increases your Parry Rating by 25% of your total Strength
  • Added Str to TankPoints Per Stat, TankPoints Per StatValue
  • Fixed EffectiveHealth, EffectiveHealthWithBlock
  • Fixed Warrior Shield Block calculations
  • Support for Paladin Holy Shield
  • Crushing blows only happen when mob is +4 levels
  • 1 Strength now gives 0.5 Block Value
  • Removed Babble-Spell-2.2, Deformat-2.0, Gratuity-2.0
  • Fixed immediate errors in 3.0.2
  • Calculator: Fixed error
  • Code cleanup and stability tweaks
  • toc 30000

2.7.0 by Aliset

  • NEW: You can specify pre-mitigation mob damage using /tp mob drdamage
  • NEW: Ciderhelm's EffectiveHealth and a derived stat, EffectiveHealthWithBlock
  • Moved to StatFrameLib-1.0 for paperdoll stat frames
  • Alt events didn't seem to be working, so moved to clicks for per-stat/per-rating change
  • Consolidated some aspects of TankPoints calculation
  • Pretty print many of the large numbers shown (so 789956 shows up as 789,956)


  • NEW: You can now open the options window using /tp optionswin
  • Fixed: Error in TankPoints.lua:1286 and TankPoints.lua:947
  • Updated Korean localizations by fenlis


  • Updated Taiwan localization by Whitetooth
  • Improved stat scanning
  • Updated German localization


  • Updated French localization by Tixu, TankPoints Tooltips now works with the French client
  • Fixed a bug causing TankPoints tooltips not showing correctly for languages other then English
  • Fixed Parry/SpellHaste rating calculations
  • Updated libs


  • Pre updated the TOC to 2.1.0
  • Support for Shield Block skill, with options to set mobs attack speed(default 2.0) and average time between Shield Block key presses(default 8 sec)
  • Fixed error when changing options with the Calculator open


  • Calculator: Fixed MobLevel calculations
  • Better Talant and Buff support
  • Improved Block Value calculation
  • Code for smooth transition to 2.1.0
  • Updated Libs


  • Fixed incorrect tooltip values
  • Fixed calculater rounding errors


  • Fixed library error


  • Added StatLogic deDE localizations by Gailly


  • Fixed incorrect armor calculations in tooltips for Druilds
  • Added Taiwan localizations by CuteMiyu


  • Updated Korean localization by fenlis


  • Fixed another StatLogic bug


  • Fixed StatLogic bug
  • Druid Bear Form formulas updated to 2.0.10 fixes
  • Updated French localizations by Tixu
  • Added Korean localization by fenlis


  • Item tooltips will now show TankPoints (only works for English client until localized)
  • Removed Compost
  • Removed ReverseRating.lua
  • Code cleanup and optimizations


  • Fixed Calculator Block Value from Strength calculations


  • May now input Armor from items and Armor from non items in the Calculator
  • Really fixed Night Elf and Feral Swiftness dodge calculations
  • Improved accuracy of calculator stat calculations
  • Improved calculator support for Druid Forms
  • Calculator support for Druid talant * Heart of the Wild, Balance of Power,
  • Calculator support for Rogue talant * Cloak of Shadows
  • Calculator support for Paladin talant * Toughness
  • Calculator support for Hunter talant * Survivalist, Endurance Training
  • Calculator support for Warlock talant * Fel Stamina
  • Calculator support for health mods
  • Support for Death Wish, Recklessness


  • Fixed Druid, Hunter and Night Elf dodge calculation bug
  • Fixed Druid talant * Survival of the Fittest not being counted bug
  • Fixed Paladin talant * Ardent Defender being always on bug


  • Fixed Druid Dire Bear Form armor calculations


  • Added support for new pally talants: Spell Warding, Improved Righteous Fury
  • Updated Libs


  • TOC 20003
  • Updated Libs


  • Greatly improved the Calculator algorithms
  • Calculator: better support for talants that give bonus strength, agility, stamina, armor
  • Calculator: better handling for Defense Rating
  • Improved TP per StatValue/Stat calculations in TankPoints tooltips


  • Fixed low level resistance calculations
  • Fixed Druid Bear Form armor bonus
  • Plays nice with other mods that may add to the character dropdown list


  • Fixed Tauren health error


  • Added German localization by AbbedieD
  • Improved support for Druid armor bonuses in various forms
  • Removed (%) from Defense in Caculator
  • Partially updated French localizations
  • Updated libs


  • The improved TankPoints Calculator is now in
  • Changed Soul Link formula 30% -> 20%


  • Fixed TP per defense rating in tooltip again
  • Updated French localizations by Tixu


  • Support for various class specific talants and buffs
  • Fixed TP per defense rating in tooltip
  • PlayerHasShield() localized
  • GetBlockValue() localized
  • Fixed a couple slash command's option range
  • Partial French localizations by Tixu


  • Fixed ReverseRating error
  • Updated Libs
  • Fixed a display bug in TankPoints tooltips
  • Fixed Block Value algorithm not working with some shields
  • Set Block% to zero if you don't have a shield on


  • Complete rewrite for the 2.0 client using Ace2

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of JackTripper JackTripper Jul 29, 2013 at 11:56 UTC - 0 likes

    <<reply 1666547="">>

    Awww, it's been in the back of my mind. But i was hoping you'd have forgotten about it!

    i'll look into it.

  • Avatar of Xit_Draka Xit_Draka Jul 27, 2013 at 17:09 UTC - 0 likes

    Greetings Jacktripper.

    Just wondering if you ever got around to refactoring the tooltip calculations so that they can be called from an external module?

  • Avatar of JackTripper JackTripper Mar 01, 2013 at 00:44 UTC - 0 likes

    <<reply 1302182="">>

    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:

    SavageDefenderBlockValue = AttackPower * (35% + 32% + Mastery*4%)

    Adding in the fact that it only triggers after half your crits:

    SavageDefenderBlockValueAvg = 
          CritRate/2 * AttackPower * (35% + 32% + Mastery*4)

    Now this reduces damage taken from a hit by a fixed amount. We want to convert it to a fraction of an attack. This means we need to know a typical mob hit value:

    SavageDefenderBlockReduction = 
          (MobHit - SavageDefenderBlockValueAvg) / MobHit

    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):

    ChanceToBeHit = 100% - MissChance - DodgeChance


    SavageDefenderBlockReduction = 
          (MobHit - SavageDefenderBlockValueAvg*ChanceToBeHit) / MobHit

    Giving the massive formula:

    SavageDefenderBlockRedution = 
          (MobHit - 
                 * AttackPower
                 * (35% + 32% + Mastery*4) 
                 * (100% - MissChance - DodgeChance)
          / MobHit

    Plugging in some numbers from a friend of mine (Deldignore!):

    • MissChance: 5% (base for everyone)
    • MobHit: 20,000 (TankPoints configurable value)
    • DodgeChance: 18.1%
    • CritRate: 25.71%
    • AttackPower: 650
    • Mastery: 11.88

    Plugging these sample values into the formula, gives an average reduction due to Savage Defense of:

          = (20000 - 12.855% * 650 * 144.52% * 76.9%) / 20000
          = (20000 - 120.76*76.9%) / 20000
          = (20000 - 92.86) / 20000
          = (19907) / 20000
          = 99.5%

    All incoming attacks are reduced to 99.5% of their original value?

    This value is obviously way too low: an average damage reduction of 0.5%?

    So someone is free to come up with some alternate math; i'm not going to spend time coding up logic that is completely wrong.

    Unless of course Savage Defense effect is counted after armor reduction:

    • ArmorReduction: 29.03%

    This means that the average landing attack will be 14,194 rather than 20,000:

          = (14194 - 12.855% * 650 * 144.52% * 76.9%) / 14194
          = (14194 - 120.76*76.9%) / 14194
          = (14194 - 92.86) / 14194
          = (14101) / 14194
          = 99.3%

    ...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.

    Last edited Mar 01, 2013 by JackTripper
  • Avatar of HellrazerXP HellrazerXP Mar 01, 2013 at 00:01 UTC - 0 likes

    @JackTripper: Go

    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...

  • Avatar of JackTripper JackTripper Feb 25, 2013 at 16:33 UTC - 0 likes

    @HellrazerXP: Go

    There's no todo list because, as far as i know, it's calculations are right (for me, as a paladin).

    It doesn't handle Mastery of non-Paladin tanks because, well, i'm not a non-Paladin.

    You can hover over the "TankPoints" number in the calculator, and see the breakdown of where the value comes from. But unless you can suggest what's wrong - it can't be fixed.

    Which brings me back to the beginning: There's no todo list because, as far as i know, the calculations are correct.

  • Avatar of HellrazerXP HellrazerXP Feb 25, 2013 at 09:29 UTC - 0 likes

    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.

    http://www.curse.com/addons/wow/pawn/ http://wow.curseforge.com/addons/pawn/

  • Avatar of Xit_Draka Xit_Draka Dec 04, 2012 at 17:59 UTC - 0 likes

    @JackTripper: Go

    Many thanks, that explains a lot and will make it very easy for me to call from my addon.

  • Avatar of JackTripper JackTripper Dec 04, 2012 at 13:21 UTC - 0 likes

    <<reply 1103766="">>

    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
    • returns

      tpLeft, tpRight, drLeft, drRight, ehLeft, ehRight, ehbLeft, ehbRight


    • tp = tankPoints
    • dr = damageReduction
    • eh = effectiveHealth
    • ehb = *effectiveHealthWithBlock (warrior only)


    Last edited Dec 05, 2012 by JackTripper
  • Avatar of Xit_Draka Xit_Draka Dec 04, 2012 at 03:02 UTC - 0 likes

    @Xit_Draka: Go

    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.

    Last edited Dec 04, 2012 by Xit_Draka
  • Avatar of Xit_Draka Xit_Draka Dec 04, 2012 at 02:43 UTC - 0 likes

    @JackTripper: Go

    I can do that, as I am already creating a tooltip for scraping the text. Can you briefly explain the difference between tankPointsLeft and tankPointsRight?


Date created
Jun 01, 2005
Last update
Sep 01, 2014
Development stage
  • deDE
  • enUS
  • esES
  • frFR
  • koKR
  • zhCN
  • zhTW
GNU General Public License version 2 (GPLv2)
Reverse relationships
Recent files
  • A: r238 for 5.4.8 Sep 01, 2014
  • A: r237 for 5.4.8 Sep 01, 2014
  • A: r236 for 5.4.8 Aug 31, 2014
  • A: r235 for 5.4.8 Aug 31, 2014
  • A: r234 for 5.4.8 Aug 31, 2014