Prismatic Prison of Pride: Haste Breakpoints

If you’ve had any contact with finding haste breakpoints then you’ve probably seen the healer breakpoint cards at Totemspot which help you find what haste rating to get when going for extra ticks of healing spells.  Eternal Flame functions at a base level of one tick per 3 seconds for 30 seconds.  With haste, the time between ticks decreases as the total duration of the HoT stays the same.  Therefore haste increases the number of ticks.  Sacred Shield functions similarly however the time between ticks is 6 seconds.

The Prismatic Prison of Pride (drops off Sha of Pride) is Siege of Orgrimmar healer specific trinket which increases our haste and mastery rating, critical strike healing and damage, and spirit by a certain percentage depending on the ilvl.  The tooltip displayed is a rounded version of the true multiplier.  Since many reforge programs don’t consider PPP in to their calculations, what you must do is to remove the trinket and calculate the haste needed before the multiplier and reforge to that.

I’m gonna try to make your life more simple and give you a table of the necessary breakpoints with any of PPP version out there.  The massive table below is composed of 6 mini-tables for each un-upgraded version of the trinket (LFR, Flex, Normal, Normal WF, Heroic, Heroic WF).  In each table, there are 3 major columns for un-upgraded (0), upgraded (1) and upgraded (2) versions.


Thanks to Totemspot and Keldion‘s work in making this!


Revisiting the Golden Days: RPPM Mechanics Changes

Four months ago I started this blog at the onset of 5.2 with the introduction of the RPPM mechanic and the new healing trinkets.  It was a whole lot of fun going through and digesting each of the new trinkets and the in-depth analysis of RPPM mechanics that I found and I plan to do something similar when the new trinkets for 5.4 are finalized.

Just yesterday, Lore posted about changing the on proc percentages at the start of fights.  If you recall, Blizzard implemented an alteration improving on how the trinkets would proc after not proccing for a long time.  In short, your chance to proc on each attack would increase the longer you went without a proc.  This made sense.  But in short what happened was between pulls you would go with a 2 or 3 minute break in between and sometimes more and almost every single RPPM item in the game had at least a 0.5 RPPM (roughly 1 proc in 2 minutes) and right at the first hit, all of your trinkets would proc leading to frenzied DPS chaos at the beginning of fights.  This made people who perhaps didn’t have RPPM mechanic items or who capitalized on specific procs by changing their whole gearing strategy unhappy.  Raids were essentially forced to plan Bloodlust and strategies around it wait a certain time before pulling to insure trinket procs, etc.  All in all it was affecting how happy people were.

So they changed it. The new change to the trinket is that at the start of the pull (I’m assuming upon entering combat) the “time since last proc” variable is automatically set to 90 seconds no matter how long you’ve actually waiting.  This of course will affect trinkets differently depending on their RPPM.  Following is a list of items affected by RPPM proc mechanics, and their chance to proc on pull now compared to how long you would have to wait currently to get a 100% proc change on pull.


In effect, the new change to trinket procs did not actually buff the proc change of any classes who were complaining that they didn’t get an on pull proc but rather nerfed only a few of the classes who were more likely to get a proc (yellow times above).  For example, classes who use Rune of Reorigination with a wait time of about 3 minutes for a 100% chance to proc on pull now will be left with only a 1/5 of a chance.  These are the classes with a mediocre waiting time before 100% pull now have their proc on pull %s drastically reduced.  As you can imagine from numbers, the classes impacted most were the classes wearing items with a 100% proc on pull time around 1-2 minutes from 90 seconds.  Where previously, they could wait around for 2-3 minutes or how ever long it takes your raid to wipe and pull again and you can pretty much guarentee a proc on pull, now for these classes this is no longer the class.  An example of this above would be someone with Gaze of the Twins and 30% haste for example.  Your chance to proc on pull is quite low.

I realize all of this doesn’t affect healers so much but it’s still interesting to see what kind of effect the changes brought about and is a nice change from the endless whining that dominated my last few post.

And since no post can be complete with some whining, I’d just like to say the recent comments by all the Devs have left me in the dark.  I just said a few posts ago how I believed that they knew what the problem was and addressing the changes with the right solution was the problem but now I don’t even know if they realize what the problem is.  The whole PTR has felt like I’ve been testing out and analyzing a class completely different from what the devs are testing.  I’m not completely disheartened by the changes nor would I change classes or quit the game just because my class does poorly, but when someone comes out and says that the class is fine, we’re happy with it, it feels like I’ve been slapped in the temples.  There are so many examples of what kind of reduction in healing the nerf to EF will be.  I made a whole post on it with a farm log from real data a while ago.  No simulation bullshit.  No random fight mechanics skewing the data.  Primordius is a fairly typical tank and spank fight with increasing raid and tank damage.  5% reduction?

A few works on the judgement nerf.  The increase of 5% to 12% base mana for Judgement is a change of 4200 mana.  Considering a typical 6 minute fight and assuming a 5 second Judgement and 80% Judgement usage efficiency, you’ll use approximately 58 judgements.  The nerf brings a difference of 241,920 mana.  It’s no laughing matter and with more efficient Judgement usage, the nerf is actually more damaging.  Now the issue is that with the SH build, a heavy haste/mastery gearing strategy is practically necessary to keep it up and competitive with the playstyle.  With too much haste, we don’t heal enough with HR and our other general spells. With too much mastery we don’t get as many uses out of Judgement and that equates to less HPS from less buffed HR.  Spirit was not necessary because generating 3 HP required much lower mana due to the cost of Judgement.  The SH build as has been stated is less a HP generation increase and more a mana regen buff as I’ve stated before.  The nerfed Judgement will now even remove that aspect from the SH build.  Please don’t let this change go live.

BUT, bright side is at least they seem to be willing to see things differently so lets not get discouraged and keep trying to bring the right issues to light.  I’m sure if things were to go live today, we would find a way to make things work or be in such a terrible place that we’ll have to get a hotfix sometime in to the patch.  🙂

Lightning-Imbued Chalice, Revisited

On March 29th, Blizzard decided to buff the proc chance of the Lightning-Imbued Chalice, a healing trinket that drops from Lei Shen. Just as a reminder, this is what version 1 of the trinket did.

  • Static intellect: 1218/1467/1552/1657/1728*
  • Smart heal proc: 46561/56071/59207*/63294/66816*
  • 3 RPPM (real procs per minute) (here’s an explanation of what this means) (
  • Procs off direct or periodic healing spell
  • Healing buff called “Restoration of the Infinite”, accumulated charges called “Infinite Power”

Recall earlier in the month around March 13th, they buffed the proc chance on all of the trinkets together once. Therefore this trinket has been essentially buffed twice since we looked at it previously.  Lets take a look at what the changes resulted in.

Here are some basic statistics about the logs I gathered:


Using the WoL import mentioned in one of my previous posts, I imported all of the information.  All logs are in English and are full kill logs.  I realized that including wipe logs would incorporate much more information, but in wipes, weird things happen especially towards the end and I can not quickly distinguish when the raid has given up so I left those out.  A caveat of the analysis is that all of these logs are from around 5-6 individuals therefore there may be some bias in play style.

Our first step is to verify that our data makes sense.  What I mean by this is longer fights for example, we would expect on average more healing done, more direct heals, etc. Lets check some of these points first.


The plot above shows the comparison between healing done and fight length.  We would expect this plot to have roughly a positive slope which you can see here is true.  This plot is interesting on several levels. Notice that the points are clustered together roughly according to group for some fights (ex. Horridon (H)). For every heroic fight, if you’re a DPS you can calculate on average how much DPS you will need to do to kill the boss before enrage.  It is kind of interesting that you can tell from this boss around what healing you will need to do in terms of HPS to keep people alive through a boss.  This number is of course extremely variable due to healing composition but the here is undeniable.

Here is a type of image called a dendrogram.  This type of analysis which is a simple unsupervised hierarchical clustering is designed to identify similarities between two things.  Imagine if you had a group of balls, some of which are red and some of which are blue.  It would be very easy to distinguish these into two groups and in fact since you have no other information about them such as their size or any patterns they would separate into exactly two groups.  But now suppose you had other information such as size and perhaps some balls have different patterns; to group these into similar groups would be a much more difficult task.  What hierarchical clustering does is takes input, in our example it would be ball size, color, and pattern and identifies grouping based on these multiple input categories numerically.  You can read more about the math behind it here but basically in a sense, the same action I’ve just describe to you can be achieved mathematically by the use of matrices.  For example, we could denote different colors and patterns by values such as 1 for red and 2 for blue.  Ball size is already a numerical value.  Mathematically we can find the similarity between observations for one ball compared to another by metrics such as the ones stated on the Euclidean page.  By doing this recursively we can find which balls are more similar to each other numerically and end up with a robust system of dividing the groups.


So what is this picture saying?  This tree denotes a similarity structure where the longer the arm of the tree, the more different the two fights are from each other.  Remember this is based on two factors, the healing done and the fight length. If we for example split this picture in to four groups, we notice the top group contains a lot of Dark Animus fights.  This indicates that a majority of the Dark Animus fights have very similar fight lengths and healing done.  We also notice in the second group, there is a majority of the Horridon (H) fights in the top half of the group.  These are two groups where the two input variables were very similar among different logs.  This could indicate many things.  Perhaps this fight is relatively easy and everyone doesn’t need to heal a lot and therefore, difference in play style or raid comp don’t make a huge difference on healing.  It’s also possible that these fights have very strict healing requirements and thus most successes in killing the boss have similar values.

Now lets look at a fight which doesn’t cluster well such as the Tortos fight.  In my experience, Tortos is a very different fight depending on healing composition. Some ToT fights are very suited towards certain classes such as those primarily for AoE healing or single target healing.  A paldin healing with a Monk and Shaman might not do as well as a paladin healing with a Disc priest.

Lets move on to looking at direct heals + HoTs since these are the spells which have the chance to trigger charges of Infinite Power.  We would expect that a plot of this value versus fight length would be roughly similar to the one above.


The plot above shows the fight length by the Direct Heals + HoT ticks value.  Recall that the LIC procs either on direct or HoT ticks.  The purpose of this plot was to show that as the fight length went on longer, you would naturally have more direct heals and HoT values, regardless of how much healing was done.  We would expect this plot to have a roughly positive slope and we do see that shape here.  Once again notice how the fights are roughly grouped together indicating possibly that play style for these fights are all very similar.

We can estimate from each person’s logs their spell power very roughly.  I was recently lucky enough to become the owner of the Thunderforged Hydra-spawn trinket.  I am positive the absorb from this trinket is not affected by any holy paladin base talents such a Seal of Insight (1.05) or Holy Insight (1.25).  Therefore, I can make an educated assumption that it does not affect the healing from the lightning-imbued chalice as well.  This means that fights such as Jin’rokh (H) which give a healing bonus will not affect our calculation of spell power.

The LIC’s heal component is 56071 + 125% of SP for the 522 normal version.  This value changes very little between the normal and normal thunderforged version which gives a base healing amoutn of 56286 and maintains the same SP coefficient but goes up drastically in the heroic and heroic thunderforged versions. Using this knowledge, and the crit coefficient of 2x because the heal from this trinket can crit, we can estimate the average SP.


Looking at the plot, you can see that a majority of the SP values are around 40,000 which I think is pretty much impossible even with Jade Spirit, Intellect Flask up continually.  If you look at the outlying values which I plotted the fights specifically on to because the coloring was too close, they are both related to the Jin’rokh heroic fight.  Thus we know that the healing from this trinket is affected by external fight mechanics.  Is it possible that I was incorrect in assuming this trinket is not affected by holy paladin buffs like the Hydra-spawn trinket?

I replotted the values including both the innate holy paladin buffs and the values are a lot more realistic.  The important thing from this plot we see is that the SP does not scale based on fight length which is what we expect.

I therefore have reasonable evidence to believe that this trinket is affected by both the Seal of Insight and Holy Insight buffs as well as any external boss mechanic healing buffs. I can also say that the general trend of our data from looking at these points is roughly similar to what we would expect in the typical raid situation.

Buffed PPM Proc Rate ~6.4

The first time I looked at this trinket, I made a mistake and took the proc chance from the number of procs of the actual heal and forgetting that the heal takes 6 charges to build up.  I calculated the average proc for the heal to be around 105 seconds meaning that there was on average a proc ever 17.5 seconds.  The original PPM value was therefore very close to the true value of 3 PPM.  Let us not make the same mistake and look at the proc rate in the new data.


The plot above shows the total procs by fight length.  The red points represent the buffed trinket and the blue points represent the original version.  I have a fitted a linear model to the points because I expect the number of procs to go up linearly with fight length.  By using R’s lm function which essentially takes a set of points and tries to find a linear line which will best describe the set of points.  It does this by plotting a large number of lines with different plots and finding out how much error, or how far away the actual points are to the line.  The sum of these errors which is the least is the line of best fit and R will return the slope of it.

The slope of the original trinket is 0.058208.  The units of this value is procs per second.  Therefore this trinket comes out to be around 3.49 RPPM.  The slope of the new trinket is 0.107103 procs/second or ~6.42 RPPM.  Essentially they buffed this trinket by almost two times so that in one minute it is very likely for the actually heal to go off once.

Notice the two red points close to the blue group.  I suspected that these were actually non-buffed trinkets.  Since the hotfix came in relation to the American time zone, I’m not sure whether the trinkets were buffed even though the log was recorded on the 29th.  I went back and checked the log dates and the dates for these two were clearly after the 29th.  However I noticed that in one log, the person survived only 70% through the fight and the other was around 56%.  I suspect this is why these values are outliers.


I originally had tried to pull out information from the expression browser however that page is written with a javascript instead of HTML.  Since I didn’t record the haste, I had wanted to calculate it from looking at Holy Light cases and deducing an approximate haste value from the time it took for the cast to finish.  However I’m not familiar enough with HTML to extract a javascript source code so I went through and did it manually after making the URL which would find the page.  I was interested in haste because from our previous analysis, it appeared to scale the best with PPM.  However, the logs also have some lag which is different between different logs so I realized that this is probably not a viable method of calculating haste as there would be a lot of error in the value.

I feel like the only way to make a reasonable analysis of haste is for me to test it out on the trinket I came into possession of so we’ll hold off on this discussion for now.

Direct Heals + HoTs scales with number of Procs


Here we see a comparison of procs (of Infinite Power) and direct heals and HoTs.  From the description of the trinket, we expect this relationship to be positie.  Here we can see that relatively this is true.  Up to around 4000 DH+HoT, the value of Procs is consistently increase.  After a certain number however, the number of procs become extremely varied.  If you look at the number of DH+HoT for people who received 60 procs, the number rangse between 2000 and 6000.  Perhaps this haas something to do with the fight?


We see a slight grouping of the type of fight.  For example, Horridon (H) points are once again grouped together.  The relationship is however not extremely clear.  We do notice that Megera (H) fights have a lot of DH+HoT but on average, less procs than other fights where paladins used the same number of DH+HoT.


I therefore conjectured that the fight might have ore to do with fight length after a certain point. First off, I want to point out something quite striking, we see essentially the same rainbow pattern consecutively from left to right indicating number of procs is very closely associated with fight length.  From a vertical point of view however, it is almost like the number of procs you get is unrelated to the number of heals you do.  Therefore, any class who has a higher active time from HoTs or something such as paladins or druids will not benefit from this trinket over classes which have lower active times such as priests. This is of course expected since the healing from this trinket is unaffected by how many times you cast.  The equation could easily have told you that.

Healing Done from Trinket is ~1% Greater than Unbuffed Version


When reading the next second, remember the number of data points in each set and just keep this in mind.


This is a plot of the percent of total healing taken by LIC by item level and version.  As you can see the previous version of the trinket was healing under 1% for the normal version and around 1.5% for the thunderforged version.  The difference between the normal and normal thunderforged version is actually quite large.  While this the difference between normal and normal thunderforged decreases, we can see that in the last two for the buffed version, t he average healing is around the 2-2.5% range.  This is approximately 1% better than the older normal version.  The thunderforged version of the buffed trinket has a shorter bottom quantile meaning while the average of this trinket versus the normal version of the buffed trinket is similar, the chance for a higher % of overall healing is a lot higher with the thunderforged version whereas the normal buffed version even reaches down below 1%.  Even though the buffed version of the normal trinket has the most datapoints, it has the longest tails.  This means that the variability of this trinket is still extremely large.  While the old normal version only had 7 samples, you see that the range of values is surprisingly small.


The buff to this trinket is quite noticeable.  The trinket is proccing a lot more and thus healing a lot more than the old version.  There is no denying it’s an improvement, but the source of argument is whether the buff was enough.  Let’s put things in perspective.  Our spell daybreak heals approximated 1-4% each fight.  This is a paladin spell.  We are talking about a trinket which provides on-par healing with a paladin spell.  I don’t think there should be any argument about how good this is if it on average can provide an addition 2.5% healing.

However…this trinket still has two problems.  The first is the overhealing. As expected we see an extremely positive trend in the data when comparing healing vs procs.


Look however at this plot for overhealing vs healing.


This plot shows the effective healing from the trinket by the over healing percentage.  This kind of negative trend strongly indicates that the decrease in healing from this trinket for some people was mainly due to overhealing.  Of course we expect to see a trend because the more effective healing you do, the more overhealing you do.  What would be ideal would be if the overhealing % was relatively independent of effective healing.

The second problem I saw was that for the new version of the trinket, the number of procs is highly variable.  Some people using the trinket reported numbers around 1.5% which from our data is perfectly viable.  But this value is not much different from what the old version was giving.  Of course people are going to complain that the new version didn’t buff anything.

Therefore, what I think will solve this (and I’ve said this before) is if we decrease the SP scaling or the base heal amount AND make the number of procs more consistent.  I realize the model for RPPM is fairly dynamic and dependent on play style but I would argue for a method to make the value less variable or dependent on so many variables.  With more consistent procs and less healing per proc, I think the overall amount of healing would increase.

Ultimately I would use this trinket if it dropped for me.  Despite my frusturations at it, I feel like the trinket is better than say Relic of Chi-ji.  As people gear up, we are already noticing the trend towards using less spirit simply because the fights are not as mana intensive.  I personally think sitting around 15-16K spirit unbuffed will last you through most of the heroic fights.  The main problem now, is not that we’re going OOM but during damage heavy damage phases, we won’t be able to keep people up because our heals are not strong enough.  Therefore this trinket with its static INT would be the go to choice with Horridon’s Last Gasp as the preferential spirit trinket.  I suspect in the following days, we will see some buff to the Stolen Relic.  That one is currently and was before the worst performing trinket.  We’ll have to se what they do to it because unlike this trinket and the Hydra-spawn bag, the trinket is an on use item and if changed properly could end up being stronger than both LIC and the IHS.

Programming with R and WoL Import

My choice of language when doing things that will take Excel a long time is R (  R is a relatively intuitive language compared to others while a bit slower. If you’ve ever used Excel or some other type of spreadsheet software, you have problem typed in a function such as “SUM()”.  These are simply user-friendly versions of what is done in R through “calling” functions.  For example in Excel, the sum function will sum up the values of all cells you put within the parenthesis.  In R, the same can be done through a function also called sum.  This is an example of what I mean by intuitive.  Functions are typically called by names indicative of their actual uses.  This is not a great example of why someone might choose to program rather than using nicely constructed programs such as Excel so let me give you a good simple one.

In Excel there is a function called “IF(a, b, c)”.  I mentioned this on my haste page.  This functions evaluates the truthfulness of the statement ‘a’.  ‘a’ can be something such as A1 = B1, where A1 and B1 are cells in Excel.  If this statement is true then the function ‘returns’ the value ‘b’, and if the statement is not true, it returns the value ‘c’.

Ex: IF(Male Taurens > Female Taurens, Males are Bigger, Females are Bigger)
Since male taurens are larger than female taurens, this statement would return “Males are Bigger”.

Now imagine that we would like to put a series of if statements nested within each other and use a bunch of different inputs from multiple cells in different tables. Suppose now we wanted to do a comparison between female tauren size and females from all other classes then repeat the same exercise with males.  This would be doable in Excel, but it would take you a bit longer.  In R, you could read the size of each class in as a variable and use it in your analysis without reading new information and denoting each variable by a name which is indicative of what it actually is (ex. Variable representing female tauren; good: femTauren; bad: cow).  Now imagine that we ‘re not discussing something which only has 10 categories or so, but something with 500,000 categories.  No longer would this exercise be viable to use in Excel. You could do it, but you could not interpret the results and interpretation is the ultimate goal for any type of data analysis.  Anyone can make pretty graphs or perform calculations but it’s the interpretation of these and the reasoning behind how they are set up that is most important.  Now a days, 500,000 could be considered a moderately sized data set.  If you think about the information that companies such as Google or even Blizzard go through then you can see more and more why programming is important.  We use programming to do things our humans minds would be able to do much slower.  A program or algorithm is only as smart as its maker.

In any case, what I have done is wrote an R program to import a WoL page and extract three tables “Healing Done”, “Buffs” under the Buffs Cast tab and “Power Gains” under the same tab.  This is very important to make things that I’m trying to analyze including the healing simulation as well as my analysis of the new trinkets.  If anyone is interested in using this themselves, once I clean up the program I can upload this to a pastebin file for you to download and use in R.

What the program does is using a random URL, it will important these tables from the HTML script.  This is basically what websites like Comparebot does but perhaps in a different method and more intelligently than me.  For my purposes, I’ve constructed the barebones of what I need.

Here’s an example url from the top ranking Holy Paladin from the Jin’rokh the Breaker HM fight. The URL must be from the character’s page, not the overall healing done page.  It should look like this:



The function from the program is called “getWoLinfo”.  After downloading the R script you can simple run the whole program first.  Then in the R Console, you can input the following getWoLinfo(“”)  Remember to include the double quotes on either side.  What the program will then output is the following tables.  The first one is the overall healing done, the second is the buffs cast and the third is the power gains cast.


Recall that I had begun to compile manually a database of WoL reports with people who are using the new trinkets.  I can easily use this function to pull out the data I want to look at to compare between logs.  This will also help greatly in my simulation analysis where I plan to use WoL reports about player actions as a basis for optimizing gear, secondary stats, etc.

I will be doing an analysis on the updated trinkets very soon, potentially later today or tomorrow so look out for those.

Also, the reason I have not put up heroic guides is our guild has not downed them yet…RL things came up but we should be starting progression again next week so I might have some up then 🙂



In-depth RPPM Analysis Part 4 (and last!)

Beginning from where we left off last time:

Single Proc Trinket, no ICD
Recall this equation for the chance of n events in time t:


Recall that the lambda term as derived in the paper comes from this term representing the total number of events over a time period [a,b]:


By plugging in a with 0 and b with t, we will get the number of events in a period of time [0,t].  Dividing this value by the time period will get the rate of events, the lambda-t term in the first equation.  This is because rate is defined as the number of occurrences over time. This term can then be plugged into the lambda terms in the first equation.

To find the uptime of a trinket, first we need find the average time to proc by multiplying the above formula by t to find the average number of procs and integrating the time from 0 to infinity to find the overall average time to proc. Very little explanation is given for the reasoning of this equation. In a sense, the equation above representing the chance of n events in timeframe [0,t] is multiplied by t.


In the formula above, to represent the chance of 1 event, n is taken to be 1.  Thus we multiply the chance of one event in time t, by t.   This is approximated as the average time between procs given a certain time period, t.  By integrating the expression over infinity, we sum up all possibilities for different time periods.  I’m not quite sure where the average part comes in to all of this as I don’t see a normalizing term to number of events or something similar to that.

Assumptions (which are not mentioned) are made to arrive at the following equation after plugging in the equation P above into the equation for t.  I do not own Mathematica, but if you do, you can plug the code given into it and evaluate the result to see exactly what assumptions were made.


The uptime given the duration of the proc will be defined then as followed:


It is clear where uptime is calculated this way as the bottom term represents the average time between single procs and the term on the top represents the duration of the proc.  In terms of healing trinkets however for example for Horridon’s Last Gasp with a stacking debuff the uptime will be calculated differently.

 Single Proc Trinket, with ICD
This equation is exactly the same as above, the only difference is the times are adjusted for the duration of the ICD and changing any probabilities for procs in the ICD duration to be zero.  For example, the first two equations (which are actually the same with one generalized so the time factor is not negative which is impossible) adds a case where if the time period is under ICD, the probability of a proc is zero.

The second equation which is the average time to proc rather than integrating from 0 to infinity, is now integrated from the ICD to infinity. This returns a very complicated variation of the above equation for the time between procs.  The t(ICD) term is the same equation for t with the integral above, taking the ICD to be the time value at the beginning.

Further variations of this formula can be changed around to find the average time between procs for different situations.  I won’t go into them here but the following are calculated:

  • Time to first proc give a time delay factor (time since last proc) less than limit of the time in the max equation required for the largest term to go above 1
  • Time to first proc give a time delay factor greater than the limit, note that the time must go from the beginning of the time delay factor to infinity in calculating the time between procs

The last equation seeks to find the time to first proc which makes the equation below equal to 1 (one event must occur).


To do this we simply change the time limits, a to the time delay (last time since proc) and b to time at first proc).


The term in the integral comes from the second point of this old equation:


By solving for the time at first proc the following equation is derived:


By plugging in the time delay (typically the time since last wipe) we can calculated to an approximation how much time into the fight until your first proc will happen.

I hope these analyses have at least been an enjoyable read for everyone and not too confusing.  Essentially all distributions in mathematics can be approximated with certain functions, in this case exponential functions.  What I hope to do after this is to use the derive equations and put in known values for the healing trinkets to see how close the approximation is to the real values.  Speaking of real values, I’ve been gathering a database of world of logs posts for people who have used the healing trinkets in fights.  I plan to summarize what hopefully will be a larger data set than the initial analysis and see where they are at.  I learned a lot about what to look for in analyzing the trinket logs and my new analysis should be a lot cleaner and answer exactly the questions proposed.

Also, I hope to talk about and simulate some common problems or questions that always go unanswered, including topics such as EF blanketing and when to switch tier 14 to tier 15.

In-depth RPPM Analysis Part 3

I’ll skip describing the proc on pull portion because it’s not extremely relevant but in a gist, if you recall the equation for the chance to proc equation where t is the last time since a proc:


By setting this equation to 1 (definite chance to proc) and knowing your RPPM and Haste, you can calculate t so that you are guaranteed a proc on pull.

The next equation approximates the maximum time before a proc during combat. This is different from the above approximation because the change in time term is no longer 10 seconds (simulating no attacks) and you are not scaling the approximation by any kind of attack factor.  The 10 seconds is the maximum time which was provided by Blizzard to count between attacks meaning even if you were not in combat, the time between attacks would max at 10 seconds in their calculations.

In this equation, we assume similarly that tmax, the maximum possible theoretical time before the RPPM mechanics has 100% chance to proc is greater than 3/2 * lambda.  This value was not pulled out of a hat.  Recall the first part of this analysis where I talked about what time would be necessary for the penalty factor, the one which accounts for the last time the mechanic procced, would be above 1.


For this value to be above 1, t must be greater than the value 3/2*lambda.  This is a valid assumption since otherwise, the maximum value in the above max() expression would be 1 and nothing would change with the proc chance.  We’re assuming there’s a reason for the penalty factor to be implemented in that the maximum time before a proc is going to cause the second penalty term above to increase greater than 1.

With the same reasoning as the proc on pull mechanic, the following equation is derived:


I was confused about the reasoning behind this equation.  Since they want the chance to proc to be 100%, I thought the second part of the equation above would already be one.  Furthermore, I don’t see any kind of summarization term which combines all attacks.  To make an educated guess at the reasoning behind this equation, based on the attacks per second, you want to find the probability of the proc occurring with 100% certainty.  You must include the ‘attacks per second’ term because your 100% certainty must include this scaling factor based on attack speed.

By plugging our equations into the above expression (we have everything in these equations from parts 1 and 2) we find that the maximum time before a proc is proportional to:


The author demonstrates that the RPPM constant has limits (can not go below a certain amount) for there to be a 100% chance to proc.  In other words, if the RPPM constant was under 0.019, you might never get a single proc. This is calculated by setting t (time since last proc) to the Blizzard stated limit of 1000 seconds and finding the proc rate lambda (Blizzard’s equation).

Average Proc Rates (Single Proc)

The author here defines some initial terms.


This term represents the total number of events over a period a-b.  This essentially integrates the function for proc rate based on the time since last proc.  Integrating the function allows you to find the area under the curve, the sum of a number of different proc chances.  It is entirely possible that this value will not add to 1, but if it does it means that at least one event will occur in this time period a to b. To average this over a time interval [0,t) we divide the above equation substituting a by 0 and b by t and divide it over the time range t, which is exactly how you would calculate a rate (number of events over time).  If we identify an equation for the average proc rate at time t over interval (0,t) we get:


This is essentially a modified form of one of the first equations we derived and the one we were referring to in the previous second:


We have substituted the integral above into the first term in this equation.  We have replaced a chance to proc (based on last time since proc value) which is essentially a rate value with an average proc rate value.  With some math, this turns out to be”


This part is confusing to me because we are replacing one kind of term with a different kind of term.  The first term in the new equation is a proc rate, and the first term in the original equation is a probability term.  We can look at the two symbols and thing well they’re both lambda but they actually represent what is in my opinion different things.  In fact, the term in the new equation is actually the integral of the term in the second equation which makes the reasoning behind the substitution even more dodgy.  Lets just give the author the benefit of the doubt though.

Let me say a few sentence about the graph.  First, we notice the protection doesn’t kick in until the time between procs reaches above 80 seconds. After a certain point, the protection system will actually return less proc chance than without the protection system.  It is likely however, that the time between procs will never reach this period but that still needs to be determined.

Overall, this part of the analysis is at times confusing to me, not in the mathematical sense but in the logical reasoning sense.  Approximations can only be made if the base considerations follow what we would expect in real life.  For example, you can not approximate the speed of a car if you only take its mileage for example and how long you’ve owned the car.  These are not related to the speed.  Regardless, perhaps the reasoning for these is beyond by level of understanding and you can in fact use these equations to calculate timings.  These calculations might be a little more complicated since you will be forced to take the integrals yourself.  If you have access to Mathematica or even some online websites such as Wolfram Alpha, you can use those to calculate you integrals. In this section, the authors have included a graph which allows the analogy behind all of this math and the real word to be discerned. You can easily use a plot like this to identify your proc rate after knowing a period of no procs and see for example, if your trinkets (by either looking at world of logs or other things) is a following this approximation.

Remember the words of our good friend George E. P. Box, “All models are false but some models are useful.”

In-depth RPPM Analysis Part 2

The next approximation is for the probability that one proc happens at a particular time t.  This event is mirrored by a mathematical process which is known as a probability density function.In probability theory, the chance of anything occurring or the addition of the probability of a number of different states always sums up to 1.  For example, you pick a ball from a bag with a blue, red and yellow ball.  The chance that you pick a ball (disregarding the color) is 1 because we’ve already established that you’re picking a ball.  The chance you pick a ball of a particular color is 1 out of 3 because there are 3 different colored balls.

The integral in the equation shown is a fancy way of summing up all possibilities to 1 as I’ve stated.  P(t) is a probability distribution function which is simply what the probability is over a range of t values. At one single t, there will be one unique probability (chance to proc).

Recall the equations from last time:


The paper has reasoned the equation for a proc at time t, by multiplying the chance for it not to proc between time [0,t) by the chance for it to occur between [t, t+dt].  ‘dt’ or adding a ‘d’ in front of a variable such as t, is a fancy way to say instantly or some like to say an infinitesimally short period of time.  It’s used to describe an event occurring at time t. It’s a little more complicated than this but this is the essential gist of it.

From the equations above, the chance of a proc occurring at time t-t+dt means it could not have procced before time t, and must proc in that range.  Thus we multiply the two equations from above:


By integrating this equation from 0 to infinity with respect to t, we get the probability that a proc occurs at any time t.  Note in the above equation, that the interval t-t+dt is symbolized by a triangle which is what mathematicians like to use to describe change.  Here it represents a change in time.  With some math, this equation becomes:


The paper states this is in the form of a basic exponential distribution.  Basically, there are some distributions or functions which commonly occur so they are recognizable.  This equation, when plotted out, symbolizes one of these known as the exponential distribution ( The paper also mentions that the inter-proc time is distributed according to P(t) which is essentially saying in real English what we’ve just calculated.  Between any two procs, there is a time where it does not occur, here we’ve denoted it as the period [0,t) and a time which it does occur [t,t+dt].  We are calculating the probability of a proc at this time [t,t+dt], therefore over the scale of times, which will be see from plotting the above function P(t) over a range of t, the probability to proc at certain times.  From this plot, we might see a significant peak.  This is what the average inter-proc time will be.

The next approximation is the general case of n events occurring in a time interval.


The author mentions it can happen in two cases.

1. All n events occur before time t, no events occur in time t – t+dt, approximated by the equation:


2. n-1 events happen before time t, 1 event in time t—t+dt


Note that the variables are used here so that the same two cases can occur for any time t. Combining these equations we arrive at the final equation:


We also know, from properties of differential functions that this holds true:


As I mentioned before, approximations like this are ways of calculating the value of a function like this without using difficult or complicated mathematics.


Solving this equation for Pn(t) yields:


(! is the mathematical symbol for factorial.  3! = 3 * 2 *1)

This is as mentioned, the standard form of another common distribution called the Poisson distribution, poisson being the name of a famous mathematician. The author mentions something important here.  This chance of n procs of interval [0, t] is independent of your attack speed.

I think I’ll stop at this point.  This section had a lot mathematical terms in it but I hope I’ve made it a little bit clearer to you.  Similar to last time, I want to remind everyone that these equations are actually usable in real life.  Often mathematicians forget about the purpose of their approximations and equations.  Suppose you wanted to see how many procs you would get in an 8 minute fight.  Given the constants for the trinket and your haste, you can plot the function out above and see what the distribution looks like.  Then you can say with reasonable certainty, the number of procs you will get falls somewhere along the distribution you plotted.  This is what makes math cool.

Look out for the last part of the explanation coming soon 🙂