Please revive TankPoints

^ my favorite addon from the original BC was TankPoints but now i cant find it anywhere :frowning:
if some1 with addon updating skills could bring this addon back from the dead i will love u long time

From the conversation on curseforge,

ā€œThis project is open source; you donā€™t like it: fix it your damn self.ā€

https://www.curseforge.com/wow/addons/tank-points

Looks like it was an interesting addon for calculating the usefulness of gear, but was somewhat abandoned by the original author, then maintained by someone who liked using it for their Paladin, but didnā€™t want to spend the time or effort required to maintain it for other classes.

3 Likes

i wish i knew how to fix it

Iā€™m sure there are tutorials for writing addons.

i just googled a tutorial and it looks complicated

The things we like often require effort.

2 Likes

Then it looks like you waiting for someone to come along that may put in the effort.

that would be nice

It is complicated. Even if you were already very proficient at coding, itā€™s a lot of work.

There was some interesting discussion in that thread where someone said something like, ā€œStat weights are really easy to calculateā€

And it was apparent that that person had no idea how to calculate stat weights. This seems like a very common sort of thing that non-technical people seem to believe, ā€œDoing X is very easy.ā€ Yet, they have no idea how to do it.

If it is so easy, why donā€™t they do it?

Anyway the maintainer (at that time), who was maintaining it for his Paladin, gave a really nice reply that explained how one might go about calculating stat weights for a druid, which at the time may have been applicable for 3.x or somethingā€¦


"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

giving

SavageDefenderBlockReduction = 
      (MobHit - SavageDefenderBlockValueAvg*ChanceToBeHit) / MobHit

Giving the massive formula:

SavageDefenderBlockRedution = 
      (MobHit - 
             CritRate/2 
             * 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:

SavageDefenderBlockReduction 
      = (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:

SavageDefenderBlockReduction 
      = (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."


So, long story short, if youā€™re really interested in helping someone who is able to code it out actually code it out and maintain it, perhaps you could help out with defining the logic for how it works.

3 Likes

My old Wrath/Cata spreadsheet managed all of this, but like the poster you quoted said, it was a lot of work. Probably why I got namesake boots in ZG.

That being said, stat weights for current class mechanics are decidedly NOT as much work. The most complicated thing is going to be DPS rotations and even then weā€™re only talking things like Feral and Rogue DPS because dual resources make for clunkier coding. For Tanks more specifically, until something like Savage Defense returns, there isnā€™t much all to calculate aside from raw EH (which was easy even when SD was a thing) and TPS/DPS for whatever you can call our ā€œrotationsā€ right now.

My current sheet doesnā€™t have export strings for Pawn, but thatā€™s Soonā„¢

1 Like

Come to think of it, the source-code for the addon above is using Version Control, so ā€¦ maybe Iā€™ll download it after work and see if thereā€™s a version in the history that would just work for TBCā€¦

I suspect there may be some updates required to work with some changes made to the Client and/or API calls available, so it might not be as simple as having it just work, but if it did work at some point for TBC, and if the commit history shows that, then the logic might not be that hard (maybe only about idkā€¦ a few 10s of hours or so of actual work) to sort out.

2 Likes

I never wanted to bother with reducing my spreadsheet down to a formula to be plugged into an addon, largely because gear planning is done primarily outside of raids and other content and you have the luxury of checking/tabbing to things outside of the game.

To be sure, eliminating that would be wonderful, but would take even more work than just performing the underlying iterations on a spreadsheet.

1 Like

very cool to read.

similar people who say that, also likely are the ones to say, ā€œwhy not add this to the game, it would be so easy to implementā€

3 Likes

if u could actually do it that would be the most awesome thing ever!
i would do it myself but this is way over my noob head

Iā€™m a software developer, but that doesnā€™t mean that itā€™s super easy anyway. For one Iā€™m not familiar with WoW Addons. I can pretty easily pick up LUA, but Iā€™m also unfamiliar with the WoW Addon API, and also how whoever coded it coded itā€¦

Itā€™s very unlikely something that I could just figure out in say 5-10 hours. But, given a few days of full-time work, probably. And thatā€™s if itā€™s as simple as finding some commit points in the code history where itā€™s a functional addon that just needs some updating to work on the modern client.

:open_mouth: i wanna be a software dev but i have stupid health problems that cause me to randomly pass out or lose focus :frowning: so i will likely never be able to learn it.
if u could take a look at the mod tho that would be great. but if its way too much work then ill understand.

Thatā€™s unfortunate, but it might not prevent you from becoming a software developer. It might make it difficult to attend scheduled meetings, though!

But I suspect itā€™s something you can work around, if you do decide to focus on learning software development. Itā€™s not a super quick, super easy journey, but there are a lot of resources, and that just seems to be improving more and more. Iā€™d give it a try if youā€™re really interested.


Iā€™ll try to do some poking around and see what I can learn from the source code. If nothing else, perhaps I can save a little time for the next person. Or, perhaps I can actually get somewhere :slight_smile:

THANX!
u r my new god lol

1 Like

LoL, save the praise for if I actually get anywhereā€¦ I could easily spend a couple hours reading through commit history to come back with, ā€œI didnā€™t find much.ā€

well at least u said u would look. :slight_smile:
i think ur the 1st person to do that in a long time

1 Like