After each raid I upload a log file to World of Logs for parsing and analysis.  I don’t always get the chance to do a real in depth analysis, but when I do I like it to be quick and accurate.  One of the things I analyze is rotations.  I don’t mean DPS, I mean actually analyzing someones rotation and evaluate them on how they’re executing it.

There’s the fast and slightly inaccurate way which would be to look at proportions.  Running a simulationcraft of the player or looking at someone else with comparable gear that you know is correct will give you a rough idea what the relative damage sources should be.  Comparing the ratio between the two can give you an idea if something is drastically wrong.  Quick, but not terribly accurate.

To figure out how to get a more accurate number, it helps to understand how I define optimal.  Executing a priority based ability selection system perfectly means always choosing the highest priority ability when you have to make a choice.  This should directly correlate to the highest priority ability being re-activated the fastest whether it be cooldown based, or duration based.  Once the ability should be re-used, it is, and it should be done faster than any other ability.

In world of logs, when you are browsing a particular fight log, you can access the individual combat lines for that fight by going to the log browser options underneath the menu that initially says “Dashboard”.  This section is particularly useful because I can only show the combat lines I want.  For instance,  I would be able to analyze my usage of the spell Corruption and see when that dropped off the target, and when I re-applied it, and the duration between.  The important number here is average duration between optimal availability and actual application.

To try this out, assuming you have a warlock in the party, or you can substitute with other classes and abilities if you choose, click “Add Query” in the window.  Choose “Spell Cast” from the checkboxes, enter the player name for “Source” and enter “Corruption” or whatever ability you want in “Spell”.  Now we need to run the default filter that shows everything so click “Remove” next to that.  Once that’s been added, hit “Run” and it will pull out those lines.

Running this will show you all the times that player activated that ability.  Now we need to determine optimal cast time for the ability.  If it is a DoT ability, keep in mind that it will be affected by Time Warp/Bloodlust/Heroism as well as other Haste buffs and procs like Improved Soul Fire, Dark Intent, or from trinkets.  Calculating the actual duration of Corruption for that point during the fight is complicated and probably more detail then we need.  Thanks to the way DoTs work now, DoT classes have some leeway, so we can round a bit in our math and still arrive at a comfortable number.  If it is a cooldown based ability then the optimal re-activation time would be the duration of the cooldown.  If it is a cast ability, the optimal re-activation time would be the cast time.  For cast time and DoT duration just use the haste number from the character to calculate it.

From here it get’s really fun.  I copy and paste all of those lines and bring them into Excel, or any other spreadsheet program you would like to use.  Both Open Office and Google Docs should be able to handle this.  I sometimes find it easier to bring the lines into notepad first.  The only thing in these lines we really need to analyze is the time stamp.  I remove all the other data from the line and end up with a column of time stamps.  For example, if the line was initially

[23:55:29.275] Thisius casts Corruption on Magmaw

I import this line into Excel:

23:55:29.275

Once it’s in Excel, I write a formula in an adjacent column.  Assuming your data starts at A1, I write the following formula into B2:

=(A2-A1)*24*60*60

This gives you the amount of seconds between the times.  If your combat log rolls over midnight, you’ll notice one line won’t parse right and you’ll see nothing but “#########”.  If this happens, replace that cell with the following formula:

=(1+(A8+A7))*24*60*60

That will give you the proper amount of seconds.

From here you can create a graph, calculate min, max, average, or any other numerical analysis you want.

So if we do this for every spell in the rotation we’d be able to come up with an average wait time for each spell and you should notice a trend that the highest priority spell has the lowest wait time, while the filler spell should be longest wait time.