TankPoints
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
TankPoints
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)) end armorReductionTemp = armor / ((85 * levelModifier) + 400) armorReduction = armorReductionTemp / (armorReductionTemp + 1) if armorReduction > 0.75 then armorReduction = 0.75 end if armorReduction < 0 then armorReduction = 0 end
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) else min(healthLeft, take raw damage from the monster per mobDamage) end end
TODO
Version History
2.8.4
- 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
2.8.3
- toc update
- Packaged with new libraries with 3.1.3 class support
2.8.2
- 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)
2.8.1
- 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%.
2.8.0
- 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)
2.6.8
- 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
2.6.7
- Updated Taiwan localization by Whitetooth
- Improved stat scanning
- Updated German localization
2.6.6
- 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
2.6.5
- 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
2.6.0
- Calculator: Fixed MobLevel calculations
- Better Talant and Buff support
- Improved Block Value calculation
- Code for smooth transition to 2.1.0
- Updated Libs
2.5.7
- Fixed incorrect tooltip values
- Fixed calculater rounding errors
2.5.6
- Fixed library error
2.5.5
- Added StatLogic deDE localizations by Gailly
2.5.4
- Fixed incorrect armor calculations in tooltips for Druilds
- Added Taiwan localizations by CuteMiyu
2.5.3
- Updated Korean localization by fenlis
2.5.2
- Fixed another StatLogic bug
2.5.1
- Fixed StatLogic bug
- Druid Bear Form formulas updated to 2.0.10 fixes
- Updated French localizations by Tixu
- Added Korean localization by fenlis
2.5.0
- Item tooltips will now show TankPoints (only works for English client until localized)
- Removed Compost
- Removed ReverseRating.lua
- Code cleanup and optimizations
2.4.1
- Fixed Calculator Block Value from Strength calculations
2.4.0
- 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
2.3.5
- 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
2.3.3
- Fixed Druid Dire Bear Form armor calculations
2.3.2
- Added support for new pally talants: Spell Warding, Improved Righteous Fury
- Updated Libs
2.3.1
- TOC 20003
- Updated Libs
2.3
- 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
2.2.3
- Fixed low level resistance calculations
- Fixed Druid Bear Form armor bonus
- Plays nice with other mods that may add to the character dropdown list
2.2.2
- Fixed Tauren health error
2.2.1
- 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
2.2
- The improved TankPoints Calculator is now in
- Changed Soul Link formula 30% -> 20%
2.1.1
- Fixed TP per defense rating in tooltip again
- Updated French localizations by Tixu
2.1
- 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
2.0.1
- 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
2.0
- Complete rewrite for the 2.0 client using Ace2
perfect ^^ all stances are recognized correctly now
It should work :) Tell me if it doesn't, or want something added for druids.
Thanks, please try the new 0.4.5b and see if the stances are correct now :).
Hi! very nice tool, thx for making it.
Anyway, there are some problems with the current frFR localization
here is the correct syntaxe for stance (second word has no caps, berserker doent have a "z"):
TANKPOINTS_WARRIOR_COMBAT_STANCE = "Posture de combat"; TANKPOINTS_WARRIOR_DEFENSIVE_STANCE = "Posture d\195\169fensive"; TANKPOINTS_WARRIOR_BERSERKER_STANCE = "Posture berserker";
I've added a TANKPOINTS_WARRIOR_COMBAT_STANCE reference, to translate the "default" stance: ( anyway, any "defaut" reference has to be replaced):
-- Warrior stance local stanceModifier = 1; local currentStance = TANKPOINTS_WARRIOR_COMBAT_STANCE; for i = 1, GetNumShapeshiftForms(), 1 do local icon, name, isActive = GetShapeshiftFormInfo(i); if isActive then currentStance = name; end end if (currentStance == TANKPOINTS_WARRIOR_DEFENSIVE_STANCE) then stanceModifier = 0.9; elseif (currentStance == TANKPOINTS_WARRIOR_BERSERKER_STANCE) then stanceModifier = 1.1; end
Hi,
Does this work at all for druids using bear form to tank?
TANKPOINTS_TOOLTIP_IN is used in the tooltips, "In xxxxxx stance".
I added TANKPOINTS_DODGE_SPELL_NAME = "Esquiver", for dodge in 0.4.5a, please test and see if it works or not.
thanks
I've changes the core TankPoints code in 0.4.5 so that block, parry, dodge should not need localizations(need help testing since I do not have a non english client), and also added a localization.lua, post your localization texts here and I'll add them in the next version.
Thanks
Please post abilities next time so I don't have to do extraneous research. It would be greatly appreciated.
Test 1: With regards to running those tests, it is hard to get a warrior and a rogue with those specific stats but again you've stated in your results what you have assumed as well. Also as I have not taken into your view of how damage and misses are mitigated, I can not agree with your formula. As for an accurate test, here is the info for
Recklessness: The warrior will cause critical hits with most attacks and will be immune to Fear effects for the next 15 sec, but all damage taken is increased by 20%.
Evasion: The rogue's dodge chance will increase by 50% for 15 sec.
That is hardly a basis for a sound test as not much is guaranteed.
Test 2: Shield Block: Increases chance to block by 75% for 5 sec, but will only block 1 attack. Okay... I'm not sure what your point is. Please let me know.
Test 3: Of course the crit is 20%. The critical takes effect on hits and not misses(and others). Why you mentioned block/dodge/parry/etc/etc/etc, I don't know.
Seb: So you're saying with 35% of each dodge, miss, parry: "Each of these events has a probabilty of 35%, but as each event has 3 elements or rolls, the eventual probability is calculated as 3*0,35/3, which leads us back to the original 35%." that the miss rate overall is 35%. Why not just stack on stat then to the highest since having any amount lower than the highest won't improve miss rate? It doesn't fly.
So you're looking at this formula: ArmourReduction = AC/(AC+5500)
This gives you a PERCENTAGE. When you then go further to gather the actual figures and calculate with the same health and higher AC, how many hits you can take with 500 more ac?, you will see that linearly, the number of hits scale. Even TankPoints actually shows this in it's calculator. Simply add 500 armor and change nothing. Look at the TankPoints and notice the change. Then add another 500 armor and look at the change in TankPoints. Keep adding and adding until you realize it is not diminished to add armor. The percentages lie since you really need take a look at damage taken, not damage reduced and then divide among health. That has just turn the graph upside down.
Press C to open your Character Info Window http://www.curse-gaming.com/modscreens.php?id=3274
I can type /tankpoints which was a guess on my part. Is there a guide to other related commands here somewhere as I cannot see it.
I agree with Whitetooth on the damage reduction formula. The mistake you're making, Shreavel, is calculating the probabilities of dodge/parry/miss incorrectly. Dodge, parry, and miss are dependent events and cannot occur at the same time. Let's resume you example of a 35% chance to dodge, parry and miss, respectively. The possible events in this case during one attack are the tuples (dodge, parry, miss) with 1=true and 0=false: (1,0,0);(0,1,0);(0,0,1). Each of these events has a probabilty of 35%, but as each event has 3 elements or rolls, the eventual probability is calculated as 3*0,35/3, which leads us back to the original 35%.
You stated as well, that armour class were to be preferred over stamina/hp. This assumptions is wrong as well. AC has diminishing returns, while an increase in stamina will always grant you x*10 HPs, therefore yielding constant returns. The fact that AC can easily been seen by looking at the formula used to calculate the damage mitigation resulting from your equipped armour. For a lvl60 player the formulas can be combined: ArmourReduction = AC/(AC+5500). Deriving this with respect to AC, we get: 5500/(AC+5500)^2 and we can see easily that the derivative is concave.
When I look at the formulas, it seems to me that the effect of the defense skill on the chance to suffer a crushing blow is not included. I know that this effect is somewhat obscure to say the least, but maybe someone could shed some light on this. Blizz states that there is no effect at all, when you're def skill is maxed out, while there seems to be evidence that it might actually increase the chance to get hit? Any data on this, whitetooth. Other than that it's a really nifty add-on.
Lets focus on crits first.
The first test
A duel wielding warrior(A) attacks a rogue(B) 20% crits, 20% miss, 60% normal hit (hit + parry + dodge + block) 1 to 20 = miss 21 to 80 = normal hit (hit + parry + dodge + block) 81 to 100 = crit
Now the warrior hits Recklessness, and the rogue hits evasion. This is where you do your test, its very eazy and take little time compared to other tests, please do try.
The result is as follows: 1 to 20 = miss 21 to 100 = crit
you will only see a miss or a crit, and NOT ONE dodge, with a rogue on evasion with 70% dodge.
Please test and explain.
The second test
A duel wielding warrior(A) attacks a warrior(C)
Now the warrior(A) hits Recklessness, and the warrior(C) uses defensive stance and shield block. This is where you do your test.
You will not see a crit being blocked. And any warrior who pays attention to his combat log knows.
Please test and explain.
The third test
Say you look at your attack button and see 25% critical rate. You use Damage Meters or Combats stats to record your criticals, and attack a warrior with 425 defense, 15% block, 10% dodge, 15% parry. Because defense lowers the chance of being crit, you will only have 20% crit and miss 10% against the the 425 defense warrior.
After 1000 swings(this takes a while), you see that your crit % is near 20%, not (20% * 90%(dodge) * 85%(parry) * 90%(miss)) = 13.77%.
Please test and explain.
These are just a few of the tests I've been doing, and I've done a lot more. It turns out that my work agrees with the words of WOW game programmers, and you're trying to argue with me based on assumptions and not tests.
So here it is for you to try out since you choose not to believe my words :)
I'll talk about the other parts after we both agree on this part, to keep it short and focused.
Thank you for your time :)
While it is not possible now, maybe in the future end-game players are able to acquire these stats. For example, what if the player were to have 35% dodge, 35% parry, and 35% miss? The total sum would equal 105%. So within the 100 point assignment bracket or array, you see there is no room for 105 points in 100 spaces. This also guarantees that pretty much you will take no hits and take no damage. From a logical standpoint, this can not be. If blizzard should choose to program this way, well I could not believe that. If you choose to, disregard the rest of this post.
Also, you say you have taken many samples but without full knowledge of the complete formula (esp the block portion), how can you take an accurate sample?
I can demostrate the reason why your test samples may come in reasonably close though. Within small percentages, calculating percentages by the inverse multiplication method I listed yields results extremely close to that of just adding up results which may lead to confusion. As the percentages scale up to larger numbers though, the distortation becomes more evident. For example, 5% dodge and 5% parry. Using the inverse multiplication method, the percentages becomes 9.75%. If you added those numbers up, you'd have 5+5=10%. Now, take a larger percent such as 75% dodge and 75% parry and add them up. You will receive 150%. Using the inverse multiplication method, you will instead have 93.75%. There is a distortion amount of 56.25%! (or in real terms, just 6.25% comparing 100%[equal to 150% for these purposes] to 93.75%). Using small numbers such as 10% and 15% will not produce drastically different results in test samples which may have led to the confusion.
By the way, abilities like block and parry only trigger if you are hit from the front, which leads me to believe that Blizzard indeed have proper programmers that can separate the percentages instead of just adding them.
Regarding blocks, I fail to see how attack speed will affect how much a block absorbs. I do remember reading on the Blizzard forums that strength increases melee attack power and damage blocked with a shield. http://www.worldofwarcraft.com/info/basics/characters.html
Regarding mob criticals, I will steal a quote from you :p "crit can not miss, and can not be parried, dodged nor blocked, which also conforms our in game tests." For one thing, I have no clue how you can test that a crit can not be parried, dodged, nor blocked. That is fact and obvious already if the crit has landed. So there is really no test for it. Second of all, the critical of a physical attack is 200% damage for that hit. In essence it is an extra hit. Therefore you would scale that with the pure misses versus the hits and place the crit percentage with the hit percentages. For example, a mob crits 4.5% of the time. That would mean you would take about 4.5% more damage when you are hit. So you take that into account when you calculate hit percentage by multiplying damage taken by 104.5% and then looking at that in conjuntion with the pure miss percentage. Do you understand why mobcrit can not simply be added (or inverse multiplied) with dodge, miss, parry?
Thanks for your time.
Whitetooth, thanks for all the comments and feedback to our posts. And also, thanks for the great work on the Addon!! :) I'm checking this Addon at least once per day for new updates :p
The Localization file is in work, thank you for your patience.
First, my formula is not wrong :) I have Blizzard posts and a ton of in game test results backing me up.
I used to use the same formula as yours in TankPoints 0.3, it is still downloadable if you would like to see, until I improved it to the current formula in 0.4.
Why?
You need to understand how the server determines hit, crit, miss, parry, dodge and block first. You think the checks are sequential which was what I used to think, and the formula would be multiplication, like X = 1 - (1 - mobMiss) * (1 - dodge) * (1 - parry) not addition, like X = 1 - (1 - mobMiss - dodge - parry) but after numeruos in game tests and a Blizzard post on how it really works, it turns out to be addition not multiplication.
Allow me to give a simple example: To keep it simple: mobMiss = 5, mobCrit = 10, dodge = 10, parry = 10, block = 10. Every time the mob attacks the server generates a roll to see if the attack lands or not, again keeping it simple, lets say the roll is random from 1 to 100. If the roll lands between: 1 to 10 = crit 11 to 20 = dodge 21 to 30 = parry 31 to 40 = block 41 to 45 = miss 46 to 100 = hit the above example was given by a blizzard poster on the official forums, but I'm not sure if the post still exist or not or already deleted. It also shows that crit can not miss, and can not be parried, dodged nor blocked, which also conforms our in game tests.
All in all, I think my formula is preety solid minus the block effect, which differs from mob to mob cause attack speed differs, and also differs from warrior to warrior on how frequently the Shield Block skill is used, the more you use it the more TankPoints block value means to you, and this is impossible to take in to account with a fixed formula unless I implement code that records your personal block habit and use that data in the formula.
Does this addon work with the german client? If not, please add a Localization-File, so it can be translated by somebody and your addon gains popularity :)
Binolino
Sorry, this addon does not currently work with non english client atm.
I actually did thought about the Thoughness talent when I was coding the calculator, but I decided not to include it because curtain buffs and enchantments (armor kits and +125 armor to legs/helm) does not work with Thoughness, thus is the reason I left it out, I do plan to implement a Thoughness check box that you can turn on and off below the armor line that will auto add 10% if checked. Thank you for your comment.
OverloadUT, I have made some performace tweaks in the recent release, please tell me if the improvements work or not, thank you.