Diablo3 Effective Health Pool Calculator

  • #1
    I've created a tool to calculate your effective health pool based on your stats.
    And compare items.

    The tool is now build so that it can support all classes:
    - Barbarian
    - Wizzard
    - Monk
    - Witch Doctor
    - Demon Hunter

    Features:
    - with / without dodge
    - with melee / ranged / magic specific reduction
    - with all skills that increase you EHP in some way
    - easily toggling skills on and off to compare them
    - statweights, EHP gain for +1 vit, +1 resist, +10 armor, +1 str
    - Item Compare
    - VIT Equivelant instead of EHP

    So here you can find the working version:
    http://rubensayshi.github.com/d3-ehp-calculator/

    A nice movie giving you a practical approach to EHP and featuring the calculator by Zravex: http://www.youtube.com/watch?v=9vBWweBQSBY

    It's completely clientside javascript, so changing stuff will make it calculate everything on your machine, hence you might find a small spike/freeze when you do,
    this is mostly because I haven't bothered a lot with optimizing it (atm the onchange events trigger itself, thankfully backbone handles that fairly well).

    You can input your base armor, resistance, VIT and life %, it will generate your final life, armor, resistance (which should match your character screen).

    Behind all the checkboxes it displays the EHP if you would change it (checked<->uncked) and how much %% change that would be.
    That's what you can use to see which ones increase your EHP the most.
    For example you can easily see that War Cry with +resist rune is far better then the other two options.

    Known issues / bugs:
    - For skills with multiple interesting runes you could check them all, should change this to be a radio button or selectbox at some point

    Upcoming changes priority list:
    - Think of a way to include block
    - Handle skillbuilds with different runes nicely (maybe seperate the skillbuild more)
    - Add option to copy a link to your curently input/selection (like talent calculators do)
    - Recieve buffs from other classes
    - Pull in stats from blizzard API (kdmcclel is already working on some code eventhough the API ain't up yet)

    Please let me know what you think of it :D
    Please bump the thread a bit once in a while (preferably with constructive comments or positive feedback) so that it stays visible on page 1 :D :D

    Contibuting
    It's on github (the page you're opening is project page of it), code is here in case you're interested:
    https://github.com/r...ehp-calculator/

    If you wanna join in and help out, you're very welcome! I already got some awesome pull requests on github from kdmcclel and MrMarvin and merged those almost instantly!
    the project is all javascript, nothing serversided, I could easily host some serversided code too if needed but if we can stick to javascript only then that's preferred!

    *** Authors / Contributors ***
    Drakie (rubensayshi)
    kdmcclel
    Marv Cool (MrMarvin)

    *** Changelog ***
    Check out the github page for all the changes and open issues / feature requests, it has become to much to keep track of it here ;)
  • #2
    Very nice tool, thanks for sharing it. Interesting that my barb has already 1mio ehp wtf.
    Could you add blocking to the calculation? Because block gets added after all damage reduction, so it could be interesting to see how much it is worth.
    €: Oh, and melee/ranged damage reduction stats would be nice too!
    I am also at 1408 vitality with 25% life and the tool shows me I should have 61600 life, but ingame I have 61945
  • #3
    I already included the 30% dmg reduction you get from being monk/barb fyi

    I should probally split up the EHP at the bottom between physical melee / phyical ranged / magic, that way it won't be up to the user to properly keep in mind that superstition is ranged/magic only and that you can't get threatening shout on ranged mobs cuz they are to far away from you and I can include the specific melee/ranged reductions.


    For now I've updated the style so I won't hurt your eyes as bad anymore xD


    I will be including a shield and dodge, but acording to most theorycrafting ppl it shouldn't be in EHP calculations since it's random.
    But that's mostly because for most games (WoW, other MMOs) EHP is used to see how reliable a tank is, I think for diablo3 we just want to know how beefy we are :-)
    Another problem with block is that it will be relative to how big a hits you're taking, I'll dig into that stuff later ...


    oh and nice stats xD, I really need to pump up my own all resist :(
  • #4
    a little out of topic i guess but does Threatening Shout reduce dmg of stuff like mortar, molten, arcane lazers etc. ?
  • #5
    Quote from SaikoDrakie

    I already included the 30% dmg reduction you get from being monk/barb fyi

    Oh, I did not mean the 30% baseline reduction, but the reduction from stats like "reduces damage from melee attacks by x%".
  • #6
    Update 1 [2012/05/24 10:20]
    Thanks to pull request from 'kdmcclel' we now have multi-class support and he already implemented wizzard!
    Surely more classes will follow :)

    Update 2 [2012/05/24 10:22]
    Since it's no longer barb only I renamed the project, URLs are changed, old URL stopped working ;)
  • #7
    Update 3 [2012/05/24 10:46]
    The stats you input are (locally) stored so you don't have to keep putting them in each visit, choices aren't stored yet though!
  • #8
    Quote from Anduryondon

    I am also at 1408 vitality with 25% life and the tool shows me I should have 61600 life, but ingame I have 61945


    Base health maybe?
  • #9
    Quote from Legaia

    Quote from Anduryondon

    I am also at 1408 vitality with 25% life and the tool shows me I should have 61600 life, but ingame I have 61945


    Base health maybe?


    Base HP is 110 I think (36 + (4 x level=1) + (10 x vit=7)

    The formula for HP is taken from online source, multiple report the same, odd since it really never matches exactly :P

    I've noticed a small difference for myself too, though atm @work I wouldn't know the exact different, I'll check it out tonight and see if I can see a relation to your difference :)
  • #10
    NICE WORK, now i can stop building my spreadsheet!

    You should be aware that Nerves of Steel benefit to armor is calculated BEFORE any other +armor% abilities like war cry and tough as nails, but the benefits from these other buffs are calculated on their own from that new BASE armor (after nerves of steel), then added to your total. they do not compound on one another.

    In other words if your armor after nerves is 1000 and you add 20% and 25%, the result should be 1000+45% = 1450 armor, not 1500 armor as the app currently calculates.

    I believe your math is compounding them sequentially and adding too much armor , something like this:
    (armor x 1.25) x 1.2

    ^ This is not how armor is calculated. Your app needs to keep track of base armor after nerves, and have war cry and tough as nails use that value instead of over-writing armor for every buff. I see the place in the code that needs changing.

    The correct math for the other buffs is:
    armor + (armor x .2) + (armor x .25)
    =
    armor + (armor x (.2 + .25))
    =
    armor + (armor x .45)
    =
    armor x 1.45


    for coding, something like this would work
    armor = armor_base //with no passives
    if (nerves_of_steel){ armor += vitality }
    armor_total = armor
    if (tough_as_nails) {armor_total += .25 x armor}
    if (war_cry) {armor_total += .2 x armor}
    if (hardened_wrath) {armor_total += .2 x armor}


    I love what you've done!

    If you like, can contribute my coding skill to the project (programers unite!)

    P.S. here's my spreadsheet
  • #11
    thanks for the feedback, I'm updating it now to add the armor modifiers (and resist) together before multiplying the base, was already doing that properly for life ;)

    any idea how + and - work together?
    for a wizard they have energy_armor giving +65% armor and glass_canon giving -10%, that becomes +55% right?

    the code is on github, you can fork it and submit pull requests and I'll merge them asap :D




    Update 4 [2012/05/25 09:23]
    Fixed armor formula
  • #12
    Next up will be monk implementation, since everything is ready for it now :-)

    Update 5 [2012/05/25 13:03]
    Cleaned up code, made it possible to seperate classes from each other (classperclass xD).
    Added dodge calculations, seperated it from the pure EHP though since dodge ain't part of traditional EHP calculations, but specially since it's also working on magic it's very much relevant ;)



    Just a few hours later:


    Update 6 [2012/05/25 15:01]
    Added first implementation of Monk class, needs some work though on the active skills which apply short duration buffs/debuffs and I need to double check if I haven't forgotten any skills.
  • #13
    Quote from SaikoDrakie

    any idea how + and - work together?
    for a wizard they have energy_armor giving +65% armor and glass_canon giving -10%, that becomes +55% right?


    That makes sense, but to be sure you'd have to experiment the way I did with my barbarian.
    Then again, after i concluded my experiment I later found a post in the barb forums that confirmed my findings. Perhaps the wizard forums have figured that out. good luck.

    edit: we get the same numbers now, lets hope we're both right. I like yours better so now i'm using yours exclusively. i especially like how it calculates percentage changes before you click them, AWESOME feature.
    I would re-arrange the passives first starting with nerves, then group all the war crys together after that. also would be good to have some javascript assist in un-checking impossible combinations of war cry runes to only allow one rune at a time. I very much look forward to see where this goes and cant wait for features like pre-calculating additional armor/vit/res the way you do for passives! keep up the awesome work.
  • #14
    Nice work, it agrees with my spreadsheet I made for my Monk. Extra confimation is always nice.

    One thing looks to be a little off though: HP. The formula is 36+4*lvl + X*vit. Where X is lvl-25 capping at 10 at the lowest.

    [Edit:]

    Just looked at the code, you have the 36+4*lvl factor in the <35 section of your IF but forgot the term in the ELSE.

    [Edit:]

    Also Mantra of Evasion isn't adding dodge. Though the Hard Target rune is properly adding armor.

    Looking at the code, the extra dodge from MoE or Guardians Path isn't added to your current dodge chance, they stack multiplicitivly. So if you have 20% chance to dodge and put on MoE you don't get 35% dodge you get 1-((1-.20) * (1-.15)) = 32% chance to dodge total.
  • #15
    Quote from Haakkon

    One thing looks to be a little off though: HP. The formula is 36+4*lvl + X*vit. Where X is lvl-25 capping at 10 at the lowest.


    Acording to 2 websites the HP above lvl35 is calculated different then below 35, but since it's off by a bit maybe it got changed in beta and your formula might be right, I'll try it out

    Quote from Haakkon

    Also Mantra of Evasion isn't adding dodge. Though the Hard Target rune is properly adding armor.

    Looking at the code, the extra dodge from MoE or Guardians Path isn't added to your current dodge chance, they stack multiplicitivly. So if you have 20% chance to dodge and put on MoE you don't get 35% dodge you get 1-((1-.20) * (1-.15)) = 32% chance to dodge total.


    Hmm I didn't even bother checking on that since I thought it would be logical that having multiple sources of dodge would stack sequentially since it's +some-stat, but I guess since it's a % based stat to begin with it isn't that simple.



    PS. there's actually a fair amount of visits to the website, which is really cool and motivates me to keep on working on this project more and more :D

    I'm moving into my new apartment this weekend so I'm not sure if I'll have any updates before monday, but maybe I can squeeze in some coding 2night before I go to sleep to at least process some feedback.
    kdmcclel is already actively helping me and parmattlab has the intention to dive into the project to so maybe we'll see some nice updates this weekend nonetheless ^_^
  • #16
    Few things i would like to see:

    Wizard: Archon adds 40% Armor and Resistances, which stacks with Force armor. Could it be possible to add it to the equation? It may only be a 15 second effect on a 2 minute cooldown, so instead of trying to "even it out", it would be preferable to see my archon EHP, and if i uncheck it, see my EHP without.

    Also, overall request, it may sound silly and adds another layer of numbers, but i would like to see my actual total damage reduction. as nice as it is to know i have 200k EHP, i also like to know stuff like "Im reducing all damage by 83%, awesome"
  • #17
    I might be doing something wrong here, and if so sorry. But there seems to be something up with the monk's mantra of evasion. Using the following inputs (Monk/60/63/751/1101/17%/4000/171/0/0/18% Y-Resolve) my
    EHP is: 1435999 DodgeEHP(DEHP) is: 175121
    If I switch on Mantra of evasion I get: EHP=1435999 DEHP=214328
    If I turn off Mantra of evasion and turn on Mantra of evasion with Hard Target my numbers are EHP=159666 DEHP=194715.721

    Now my issue is, I don't get why an increase in armor results in a descrease of DEHP since the only difference between Mantra of Evasion and Mantra of Evasion Hard Target is Hard Target get 20% armor.

    Now as I'm writing this I'm beginning to think that I actually need to choose both of them, but it might be nice to have a tooltip that says that for new people to the sheet. Please let me know if that is correct.

    Edit: Also wanted to say thanks for putting this together, can't wait to get home and see it with my actual numbers
  • #18
    there's a bug in the monk dodge calculation, I'll fix it in the next few hours, I should have some time :-)
  • #19
    your monk stats with dodge should display properly now, fixed it :-)

    gonna see if I can do a major overhaul tomorrow so that I can display +1 str, vit, dex, int, resist, armor.



    Update 7 [2012/05/28 19:38]
    Fixed how dodge is calculated (like a modifier instead of a static stat). Added warcry dodge rune.
  • #20
    Quote from Haakkon

    Nice work, it agrees with my spreadsheet I made for my Monk. Extra confimation is always nice.

    One thing looks to be a little off though: HP. The formula is 36+4*lvl + X*vit. Where X is lvl-25 capping at 10 at the lowest.

    [Edit:]

    Just looked at the code, you have the 36+4*lvl factor in the <35 section of your IF but forgot the term in the ELSE.

    [Edit:]

    Also Mantra of Evasion isn't adding dodge. Though the Hard Target rune is properly adding armor.

    Looking at the code, the extra dodge from MoE or Guardians Path isn't added to your current dodge chance, they stack multiplicitivly. So if you have 20% chance to dodge and put on MoE you don't get 35% dodge you get 1-((1-.20) * (1-.15)) = 32% chance to dodge total.


    I fixed the HP thing you mentioned too, it's 100% acurate for my own char now :-)
  • To post a comment, please or register a new account.
Posts Quoted:
Reply
Clear All Quotes