Blood Draining Enchant - TTL Simulation

Warning: Theorycraft inside.

Moderators: Fridmarr, Worldie, Aergis, theckhd

Blood Draining Enchant - TTL Simulation

Postby theckhd » Tue May 12, 2009 11:35 am

This work was prompted by cordelia's post here, as well as my response, in the Enchant Weapon: Blade Ward - testing results thread. So you can blame cordelia for this, he always seems to ask questions that gnaw at my curiosity just enough to make me overanalyze things.

The question I want to address is whether the Blood Draining enchant is worth using for Paladins. There's been a lot of unsubstantiated guessing going on about whether this enchant is worth it, but very few hard numbers. In particular, I've seen several people suggest that it's bad for us, because it triggers at the same percentage as Ardent Defender. The argument is that this runs the risk of bumping us back up out of AD range, increasing the chance that it will be "leapfrogged" and actually reducing our survivability.

To answer the question, I've written a MATLAB TTL simulation. The code can be found here, the files you want are blooddraining.m and blooddraining_master.m; blooddraining is a function that performs the calculations, and blooddraining_master calls it over and over to create the mesh analysis I'll show at the end.

First of all, let's make sure we understand what we're calculating. This TTL calculation will simulate the number of boss attacks a player can absorb until dying, including the killing blow itself. It assumes that the more hits you can take, the higher your survivability. It assumes that you are not receiving any heals; in other words it's a "worst-case" scenario calculation.

Including healing would be possible in several ways, none of which are both trivial and useful.
  • Assuming you get healed for X every Y seconds is trivial, but not useful, since that's not representative of the types of situations that kill you while raiding. Rarely is the average incoming DTPS larger than your incoming HPS;, usually it's a sudden spike in DTPS or a sudden drop in HPS that causes a tank death.
    Furthermore, the exact values of X and Y depend greatly on the type of healing - Holy Light spam and HoTs will give different results.
    More importantly though, this type of healing generally has no effect on the results we're interested in analyzing here. Including heals will increase TTL across the board, but won't make very much difference when it comes to whether the extra healing from Blood Draining increases survivability.
  • A more useful healing model would be to determine the probability of being at any given hit point value, and use those probabilities to weight the results of the simulation. For example, over the length of an average fight, you will almost certainly be more likely to have (max_health - boss_hit_size) hit points than (max_health - boss_hit_size/2). Why? Because on most fights you'll be topped off every so often, and the next hit will always take you to (max_health - boss_hit_size).
    This is doubly useful since it can be changed from fight to fight to incorporate environmental damage, movement phases (where you're likely to be topped off), and so on. It's very versatile in that respect.
    Of course, the problem with this version is that it's not trivial. Figuring out this probability density function is very complicated, since it depends on so many factors: max health, boss hit size, incoming heal composition and size, environmental effects, and whatever else you want to put into it. It may be a tackle-able problem, but it would be an entire numerical simulation unto itself.
    It would probably be faster, in fact, to take a few WWS reports and parse them to calculate the probability density function empirically.

As such, our simulation will assume there's an equal probability of being at any HP value between 0 and the max_health. This is a reasonably big assumption, and probably the biggest source of error in the simulation. However, the results should still give us a reasonably clear window into the relative effectiveness of the enchant, especially as a first step.

The simulation basically does the following (in pseudocode):
Code: Select all
set current_health = starting_health
while current_health > 0
  if current_health > 0.35*max_health
    subtract boss_hit_size from current_health
  else
    subtract boss_hit_size*0.7 from current_health
  end

  if current_health > 0 and current_health < 0.35*max_health
    add blood_draining_heal_size to current_health
  end
end

It also tracks the number of hits taken before death, the number of AD procs, the number of those procs that saved you from death (i.e. when current_health < 0.3*boss_hit_size), and the number of blood draining procs. For this simulation we'll assume that the proc heals for 2k exactly each time - later on if we desire we can calculate a more realistic value for this based on estimated proc rate (it's got a 10-second internal cooldown from what I've read) and crit chance.

For a simple example, let's take a look at how this works without AD. This will also give us an intuitive look at what AD actually does to the graphs, so we can more easily identify those artifacts later.
Image
First, let's look at the top plot. This is just the number of hits you can take, calculated for a tank with 40k maximum hit points taking 15k melee attacks from the boss, as a function of the "starting health." In other words, if you start with 10k hit points, you can only take 1 hit from the boss (which kills you). If you start with 20k hit points, it takes 2 hits to kill you. Unsurprisingly, the plot is a monotonic step function here, because the only thing that buys you more time is more hit points.

Now take a look at the second plot. This plot incorporates the enchant, and the teal dotted line represents the number of times it will heal you. Note that between 28k and 29k, it procs twice and grants you an extra "hit taken" that you don't have in the upper graph. In other words, one attack took you below 35%, the heal boosted you above 35% by enough to survive another hit, and it healed you again after that hit.

The bottom graph shows the difference between the top and middle graphs. It is, in essence, the "extra" hits taken, or TTL, that the enchant has granted you. The legend of the 2nd graph also applies here - the blue line is hits taken, teal line is blood draining procs, and so forth. As you can see, the enchant only grants you one extra hit in that small range, and doesn't provide any benefit outside that range.

From now on, rather than continuing to write out "hits taken," I'll abbreviate it as HT to make the wording less confusing. If we assume that you have an equal probability of being at any of these health values, then we could simply sum the values of the blue line from the bottom graph to determine how many HT's the enchant gives us. This sum is the value given as "Net TTL bonus of enchant" in the title of the bottom graph. The higher this value, the more situations the enchant will save us, and the lower this number, the less it will save us. The "Net AD saves" column will perform a similar calculation for AD effects.

Since we've completely ignored Ardent Defender here, the plots all show 0 for "AD procs" and "AD saves." "AD procs" just counts the number of times we get hit while below the AD threshold, and "AD saves" counts the number of times it prevented enough damage to save you from death (i.e. buys you an extra 1 hit in TTL). Let's take a look at the same situation as above, but with AD included this time:
Image
First, let's look at the top graph, which doesn't include the enchant effect. The first thing we notice is that we've gained one HT between 26k and 29k, whereas without AD we don't get a third HT until over 30k. This bump is due to an attack dropping us into the AD region, and leaving us with enough health to survive a second (weaker) attack that's partially mitigated by AD. The title of the top graph shows all three of the pertinent stats here: Boss hit size (15k), AD level (14k), and AD hit size (11k = 15k * 0.7, rounded off to the closest integer). So for example:
Start with 27k,
take a 15k hit (now at 12k, which is below AD threshold),
take an 11k hit,
we're still alive to take the third hit (which kills us).

The "notch" between 29k and 30k is the dreaded "leapfrog regime", where the boss's hit leapfrogs our AD ability. As an example
Start with 29.5k
take a 15k hit (now at 14.5k, still above AD threshold)
take another 15k hit (dead)

The red dotted line is the number of AD procs we get, while the green line is the number of times AD actually saves our life. Note that there's a large region where we get dropped into AD region (it procs) but don't have enough health to survive another hit (it doesn't save). Thus we'll really want to watch the green line, since that gives us the most relevant information about how many deaths it's saving us from.

There are a few important things we want to make note of here:
  • The "leapfrog" region only occurs when the Boss Hit value is larger than the AD level. The higher you push this AD level (by increasing max health), the smaller the leapfrog region is. As Ratanna would say, "STAMINA, STAMINA, STAMINA".
  • While I'm not going to keep track of how useful AD is in this simulation, I could have. It's pretty visible from this graph that you gain a noticeable TTL boost from AD compared to the first set of plots.

Now, let's look at the second plot on that graph. This is the simulation that includes the blood draining enchant. It doesn't have any effect at the lower end (<15k), because even though it procs, it's not enough to keep you above the 11k (10.5 really) needed to survive a second attack. However, it does some interesting things in the 23+ region.
  1. First, we note that we're now getting 3 HT's as early as 23.75k hp. This is directly due to the enchant, it's healing us just enough to take an extra boss hit within AD range.
  2. Second, we see that there's now two notches indicative of leapfrog regions. This is the worry of most critics of the enchant - it will, on occasion, heal you enough to boost you out of AD range, so that you take full damage from the next hit and die. The plateau in-between the notches is the section where it boosts you enough to survive that next full hit (i.e. 13.5k to 15.5k).
  3. Third, we note that we've gained an additional HT at the very top end of the graph, above 38.75k. You can see that this is another case where it's healed us within AD range, and saved our life.

Looking at the bottom graph, we can see the net effects. There's a region between 27.75 and 28.25 where the enchant actually reduces our TTL, because it bypasses AD. On the other hand, there are two larger regions where it increases our TTL. If you calculate the sum, it's now up to 9 HT's worth of TTL, as compared to 3 in the case without Ardent Defender. So despite the effect the critics have pointed out, the enchant has in fact increased our overall TTL as calculated in this fashion.

If we increase our maximum HP without increasing the boss hit size, the AD threshold will eventually eclipse the size of a boss hit. At this point, the leapfrog region disappears, and the enchant will always provide a benefit to TTL. This can be clearly seen if you compare the graph above to the following two graphs, calculated with Maximum Health values of 42k and 45k respectively, while keeping the Boss Hit size at 15k:
42k Max HP with 15k boss hits
45k Max HP with 15k boss hits

As we'll see shortly, it turns out that the enchant's effect on TTL is always positive or zero. The effective "extension" of the AD range by situation 1 above always compensates for the region of negative TTL it creates via situation 2. At worst, the two exactly compensate for one another and cancel out. Thus, the enchant never decreases your overall TTL.

This is a little more visible if you look at the following two plots calculated for a Boss Hit size of 20k and Maximum Health values of 42k and 45k respectively:
42k Max HP with 20k boss hits
45k Max HP with 20k boss hits
You can see that when the Boss hit greatly exceeds the AD range, Blood Draining just shifts around our TTL distribution, but doesn't actually net us any TTL.

For a more thorough analysis, let's feed the simulation a matrix of Maximum Health values and Boss Hit sizes. I have 42k HP fully raid buffed in my current gear, which is nowhere near full Ulduar-25 level yet, so let's take health values between 35k and 50k as a reasonable range to investigate. Similarly, let's look at boss hits anywhere between 10k and 30k. Plotting HT's versus these two parameters gives us the following plot:
Image
The vast dark blue region is the section where the enchant gives you 0 net TTL benefit, while the Scottish highlands to the east are the sections where the enchant is giving you a noticeable benefit. Since 3-D plots are somewhat hard to analyze in 2-D, I'll also post the "flat" version, aka the "top-down view" of the plot:
Image
Again, the border of the dark blue region represents the minimum boss hit size at which the enchant gives you no net TTL benefit. So for my case of 42k max HP, the enchant is worthless for any boss attack that does more than 16.5k damage. Which, unfortunately, is the type of boss hit I actually care about.

The enchant does give a small benefit for hits between 12k and 16k (~5-20 net HTs), and as the hit size decreases it gets better and better.

For those interested in the particular relationship, here's a plot where the Maximum Hit Point axis has been replaced with "AD threshold":
Image
If you try and fit the border of the "useless" region with a line, the equation you get is roughly:
Boss_Hit_Size = (1.05)*(AD_Threshold) + 1.43
Which lends itself to the following rule of thumb:
If the size of the incoming attacks is much larger than your AD threshold, this enchant is pretty much useless for you. As a rough guess I'd use (AD_Threshold + 1.5k) as the boss hit value at which the enchant's value reaches zero.


Admittedly, this analysis is very simple, and doesn't cover every situation. In particular, ignoring healing is unrealistic, but somewhat necessary given the complexity of modeling it properly. As an example, let's take the original situation with 40k max health and 15k hits.
  • If we believe that you'd be more likely to sit at 25k than 29k in that situation, then this enchant's value gets better, because it shifts TTL into the region around 25k (which is more probable) and away from 29k (which is less probable), giving you a bigger overall TTL increase than my analysis would estimate.
  • On the other hand, if you think it's very likely you'll receive 4k in healing (HoTs, JoL, etc) after each boss hit, then this enchant is actually worse than my estimate, because it's shifting TTL away from a more probably region and towards a less probable region
Including healing would also help reduce the granularity of the simulation - currently we can only calculate TTL in integer numbers of hits, and because we're talking about such a small number, our plots look like step functions. If we added healing, we'd have a much larger number of hits to work with and the plots would look more like continuous functions.

One could argue that when an enchant requires a full statistical analysis to determine whether it has any effect at all, it's a poorly designed enchant. It's an argument I would be inclined to agree with. :P However, let's at least recap what this analysis has demonstrated:

TLDR Summary:
  • While Blood Draining can push us out of AD range, and thus cause "leapfrogging" that kills us, reducing our TTL in some situations, it also adds TTL to other situations where we were in AD range but had slightly less HP than the size of the incoming hits after AD mitigation is factored in.
  • As a result, at least in this simple analysis, Blood Draining will never reduce your average TTL, assuming that your "starting health" obeys a flat probability density function. So at least in that respect, the naysayers were wrong.
  • Yes, the above is an unreliable (and probably incorrect) assumption, but without a more involved model of how healing effects change the probability density function, it will be hard to come up with anything rigorous. Empirical data might help here.
  • Despite the fact that blood draining won't reduce your survivability, it also doesn't do anything to increase it for very large boss hits. Unfortunately, very large boss hits are often what kills a tank, making this an expensive enchant that works best in the cases we don't need it, and worst in the cases we do.

If anyone has suggestions, or theorycrafts a good PDF to apply to this, I'll be glad to mess around with the results and see what it does to them.
Last edited by theckhd on Tue May 12, 2009 12:50 pm, edited 1 time in total.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8003
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Blood Draining Enchant - TTL Simulation

Postby Agarious » Tue May 12, 2009 11:58 am

Excellent read! Thankyou for taking the time to provide this.
Agarious
 
Posts: 15
Joined: Mon Jun 25, 2007 10:46 am

Re: Blood Draining Enchant - TTL Simulation

Postby Arees » Tue May 12, 2009 12:04 pm

You should add this to the index of your matlab thread if you haven't done so already.
Image
User avatar
Arees
 
Posts: 546
Joined: Tue Dec 25, 2007 9:50 pm

Re: Blood Draining Enchant - TTL Simulation

Postby theothersteve7 » Tue May 12, 2009 12:09 pm

Thank you so much. This is exactly what I've been looking for. I had a theory that you were at least as likely to be bumped up into AD saving range as out of it but I wasn't sure how to do the math.

Eyeballing the chart, the example (which I think has pretty accurate numbers for what I'm usually tanking) appears to have maybe a 1-2K larger range of +1 hit than the -1 hit. Would that imply that the enchant is worth around the neighborhood of (~1.5/40) = ~3.75% avoidance in this particular case from a TTL standpoint? That seems a bit high. Maybe I need to divide that by the number of hits I'm taking? Just trying to put a price tag on it so I can stack it up against agility.
Moo.
theothersteve7
 
Posts: 402
Joined: Tue Nov 25, 2008 11:45 am

Re: Blood Draining Enchant - TTL Simulation

Postby Worldie » Tue May 12, 2009 12:12 pm

Nothing different from what i've guessed myself, nice work, you totally have too much time in your hands :)
theckhd wrote:Fuck no, we've seen what you do to guilds. Just imagine what you could do to an entire country. Just visiting the US might be enough to make the southern states try to secede again.

halabar wrote:Noo.. you don't realize the problem. Worldie was to negative guild breaking energy like Bolvar is to the Scourge. If Worldie is removed, than someone must pick up that mantle, otherwise that negative guild breaking energy will run rampant, destroying all the servers.
User avatar
Worldie
Global Mod
 
Posts: 13560
Joined: Sun Sep 02, 2007 1:49 pm
Location: Italy

Re: Blood Draining Enchant - TTL Simulation

Postby theckhd » Tue May 12, 2009 12:20 pm

WATERBOYsh wrote:You should add this to the index of your matlab thread if you haven't done so already.

I was thinking about it, but it's not really a "TPS" calculation either. My fear is that adding too many disjointed simulations to one thread could be too confusing to keep track of. Or they might annihilate, causing a temporal rift that destroys the board or something.

Since the TPS analysis is something I'll keep updating and adding new things to, and this is more of a one-off calculation that probably won't get revisited much in the future, I think it makes sense to keep them in separate threads. However, maybe adding it to the index (under a "non-TPS calculations" subheading) like you've suggesting isn't too problematic.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8003
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Blood Draining Enchant - TTL Simulation

Postby theckhd » Tue May 12, 2009 12:21 pm

Worldie wrote:Nothing different from what i've guessed myself, nice work, you totally have too much time in your hands :)

If only. This time comes at the direct expense of me ever getting around to finishing my Ph.D.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8003
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Blood Draining Enchant - TTL Simulation

Postby Dakiros » Tue May 12, 2009 12:30 pm

You, sir, are an absolute genius with matlab analyses. Great work once again.
User avatar
Dakiros
 
Posts: 351
Joined: Wed Feb 27, 2008 6:46 am

Re: Blood Draining Enchant - TTL Simulation

Postby theckhd » Tue May 12, 2009 12:42 pm

theothersteve7 wrote:Eyeballing the chart, the example (which I think has pretty accurate numbers for what I'm usually tanking) appears to have maybe a 1-2K larger range of +1 hit than the -1 hit. Would that imply that the enchant is worth around the neighborhood of (~1.5/40) = ~3.75% avoidance in this particular case from a TTL standpoint? That seems a bit high. Maybe I need to divide that by the number of hits I'm taking? Just trying to put a price tag on it so I can stack it up against agility.

Well, first of all, the data is calculated in 250-health increments. The regions you're referring to (i think) are between 23.75-25.5 (a difference of 1.75) and 27-28 (a difference of 1). So at least in that vicinity, the +1-hit section is 750 hit points (3 data points) wider. However, the relevant thing to compare it to would be the average TTL without the enchant, after dividing the width of that region by the total health like you did. If you sum the blue curve, you get 300 "hits" of TTL over the entire probability distribution, so the 3 data points is closer to a 1% effect.

That's also neglecting the plateau near 40k. The more accurate way to do it would be to use the "Net TTL benefit" sum (9) and divide that by 300, which is 3%.

However, that's not directly comparable to 3% avoidance. You'd have to calculate the net TTL benefit of 3% avoidance for a 15k hit on a 40k HP tank to directly compare the two. I would bet that 3% avoidance vastly outdoes the enchant in terms of TTL. I don't have the equations handy at the moment though.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 8003
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Blood Draining Enchant - TTL Simulation

Postby theothersteve7 » Tue May 12, 2009 2:18 pm

Yeah, that's what I meant. I kind of just treated the bottom chart's blue line as the final... thing. Also I did miss the plateau at the top end like you pointed out.

So, er, 9 out of every 300 instances where your healers all simultaneously disconnect and damage behaves just like this, you can take one extra hit if you have Blood Draining. That's actually not terrible.
Moo.
theothersteve7
 
Posts: 402
Joined: Tue Nov 25, 2008 11:45 am

Re: Blood Draining Enchant - TTL Simulation

Postby Lave » Tue May 12, 2009 3:11 pm

Despite the fact that blood draining won't reduce your survivability, it also doesn't do anything to increase it for very large boss hits. Unfortunately, very large boss hits are often what kills a tank, making this an expensive enchant that works best in the cases we don't need it, and worst in the cases we do.

i guess thats true for someone who doesnt get additional heal? when i get strucked down to 10k life by a 20k hit & the next one is coming i need >10k healing in those 2 seconds to survive. blood draining reduces that gap to like 7k.
sure, BD alone doesnt save me in this scenario.. but its still more likely for me to survive in the constant stream of hots/direct heals incoming
Image
User avatar
Lave
 
Posts: 187
Joined: Fri Aug 10, 2007 6:50 am
Location: Berlin, Germany

Re: Blood Draining Enchant - TTL Simulation

Postby Kelaan » Tue May 12, 2009 4:24 pm

Wow. Awesome! I appreciate your analysis of what it means, and what we can derive from it.

You hit on an interesting point, though: healing makes the probability of being at various health totals different. I think the Next Step (haha) is an app that lets one apply healing strategies (chained HL's, HoTs, Shields), and show a the value (e.g., your 3d plots) of AD and the enchant. I think we're less likely to be IN the AD (or enchant) activation range, but that damage reductions on incoming hits (whether from shields or from defensive cooldowns/HoSac/DSac) could make the boss hits effectively fall to a more favorable size as far as AD and the enchant are concerned.

How long do these calculations end up taking, anyhow?
User avatar
Kelaan
 
Posts: 4037
Joined: Thu Jan 03, 2008 12:01 pm

Re: Blood Draining Enchant - TTL Simulation

Postby rokkon » Tue May 12, 2009 5:05 pm

I thought ardent defender kicked in at 25%. Tooltip on wowhead and in-game now say 35%. Is this a change with the patch today or is my memory that bad?

edit: answered in another post. Answer is, yes my memory is that bad, it's always been 35%.
Last edited by rokkon on Wed May 13, 2009 6:24 am, edited 2 times in total.
rokkon
 
Posts: 167
Joined: Wed Apr 15, 2009 6:10 am

Re: Blood Draining Enchant - TTL Simulation

Postby Squishums » Tue May 12, 2009 7:34 pm

So any small heal on a pally tank below 35% is a double edged sword.

But does this mean BD is better than we instinctivly feel because the possibility of lowering our TTL that make us so nervous is just the same as what healing causes......or that small steady heals are in fact bad and nobody should stack hots on a pally tank, instead just spam big enough heals that if it took you out of AD range it would make up for the extra dmg youll take?
Squishums
 
Posts: 136
Joined: Thu Jun 19, 2008 4:50 pm

Re: Blood Draining Enchant - TTL Simulation

Postby cordelia » Wed May 13, 2009 3:58 am

Honestly, the Health distribution should be exceedingly easy to bootstrap from a combat log with simple unix shell skills. Too bad my shell skills are so rusty.

Take a combat log for one boss fight. Send it through WWS parser or equivalent that converts it into words.
Resave as clog.

cat clog | grep for tank name | grep "[1-9][0-9]" | grep -vi "(rage)|(mana)|(runic power)

This gives you all damage above 10+ to tank and all heals above 10+ to tank.

Here's where my rudimentary unix skills get poor.

All healing sentences come in two phrases:
- MT gains %H health
- ... heals MT for %H.
Overheals always tacked on at end via (%OH Overheal), if they exist.
Should be easy enough to parse each line for %H and %OH, then subtract for effective healing: %EH = %H-%OH

Damage comes in the form of:
- MT suffers %D *type* damage
- hits MT for %D *type*.

Then just do a quick vector summation, adding +%EH, and subtracting %D.

The original health of the tank doesn't matter for the distribution - it just changes the mean.
User avatar
cordelia
 
Posts: 630
Joined: Tue Oct 09, 2007 3:33 am

Next

Return to Advanced Theorycraft and Calculations

Who is online

Users browsing this forum: Bing [Bot], Minkus and 1 guest

Who is online

In total there are 3 users online :: 2 registered, 0 hidden and 1 guest (based on users active over the past 5 minutes)
Most users ever online was 380 on Tue Oct 14, 2008 6:28 pm

Users browsing this forum: Bing [Bot], Minkus and 1 guest