HolyCalcs beta, 5.2 PTR
Anyone here who's dabbled in Druidry might be familiar with TreeCalcs, my Resto theorycraft spreadsheet. Here is my first attempt at retooling it for another spec: Holy Priests (Disc might follow shortly, but Holy seemed much simpler). Still a work in progress, but far enough along to get some feedback I think.
This is not meant to be used quite like a DPS spreadsheet, where you focus on the final total output. In fact, even though the sheet does have a final total output, in some ways that's the least important item on the main page. The sheet has two main components:
1) The individual spell table. This shows the HPET (healing per unit of cast time) and mana efficiency of each heal using your currently selected setup/stats. In addition, the right half of the table shows how each spell scales with 1 point of Int, Haste, Crit, or Mastery. This is to allow you to compare your different spells with context of a concrete, accurate numerical sense of how much they're doing and how each stat or talent affects them.
2) The rotation model. This is necessarily rough for healing as opposed to DPS, but the basic idea is to come up with some approximation of how much you're using each spell, so that stats/talents can be evaluated in light of your performance as a whole. The main value of the rotation model isn't the total raw healing output (which is mostly a holdover from the sheet's time as a DPS model), but the marginal value listed next to each stat, talent, and buff, showing how much you're getting from each one.
Using the sheet:
1) Input your gear, gems, enchants, and reforges on the front page. The basic rule is that any light-blue box is a dropdown menu where you can choose something. The sheet will automatically black out any enchant/gem slots that don't exist, and will highlight any inactive socket bonuses or meta gems in red.
2) On the Main page, input your talents, glyphs and buffs. Here again, any light-blue box is a dropdown menu where you can choose something. Don't modify the pink boxes, which are the stats inherited from the gear page--these are shown so you can see the stat weights (see below). You can also set some parameters about how you use your spells in the purple boxes.
3) Basic results are in green boxes. Most importantly, the HPET and HPM of each of your spells, as discussed above.
4) Advanced results are in the blue boxes. These require the use of data tables, which you have to recompute manually by pressing F9 (Windows) or Cmd-= (Mac). These include:
a) next to each stat, buff, glyph, and talent, the amount of HPS and MP5 derived from that particular thing. For stats, it shows the benefit of having 1 more of that stat. For talents and other bonuses, it shows the value you get from the bonus (i.e. difference between your output with and without that bonus).
--The third column, "combined," is a combined HPS/MP5 value based on the sheet's estimate of how much benefit you get from added mana over the course of a fight.
b) next to the spell table, the amount by an additional stat point improves each individual spell.
The sheet works in both Excel and OpenOffice, except that the data tables/advanced outputs are not supported by OO. OO users select "OpenOffice" from the dropdown on the first page, and everything else should work.
Input a quick gear list for you to work with, tier bonuses should pull through too:
Ok cool. I replaced the attachment to my post with that one also, so there's no confusion.
Will Armory imports work? Also, will they break if the race isn't Tauren/Troll/NE/Worgen? I didn't bother adding new races.
The 4-piece is a little weird. Since it basically assumes you use CoH on cooldown, having the spell on a 4s cooldown really inflates the result. Not sure if there's some better way to handle it.
Why not make it so that you can input actual spell usage (counts or fractions)? That way people can see, based on how they actually heal, which spells and stats are most useful for them? Would probably also be cleaner and easier to code.
It's a good question. It mostly goes back to when I started the Resto spreadsheet in WLK, when it was a better assumption that you filled nearly all possible cast time with some spell or another. From there I've just always had the basic approach of carving up all available cast time into a % allocated to each spell. It is less ideal when you have a non-negligible amount of unused cast time (which every healer necessarily does now if you want mana to last more than a few minutes), but still is more convenient in some ways. Since the point of the sheet is to evaluate scaling with different stats (including Spirit and haste), it becomes hard to work with inputs of fixed numbers of casts, since the whole point is to interpret the value of these stats including their effect on your spell usage.
Basically, if the data for each spell in the table is correct (which is most important thing I want to nail down for now) and the pie chart generally resembles something like your typical spell breakdown, the resulting stat weights should be meaningful for you.
It's less about having a realistic "rotation" (since there really isn't one for healing classes anyway) and more about the model that expresses the right scaling properties. For example, you recently made the point in the Disc thread about Spirit/haste scaling only really applying to no-cooldown spells, etc., and that's one of the behaviors that's easy to examine in the sheet. The value of Spirit is taken by apportioning added mana onto the filler spells only, so for example if you for some reason turned down the PoH usage to something very low, the value of Spirit would also get very low because each point of marginal mana has no efficient outlet. But if you put in a setup with high PoH usage, the displayed value of Spirit will be very high, because the model translates extra available mana mostly into PoH casts. The setup I have isn't as user-friendly but makes it a lot easier to reflect various behavior like this.
Long story short, I probably could come with more intuitive ways to input the spell usage paramaters, but it's never felt like a huge priority as long as what's there reflects the scaling behavior it's supposed to. And like I said in the OP, much of the value of the sheet is before you get to the "rotation" tab at all, just in seeing the real info on various spells and what their scaling is like. Look at the recent twists and turns in the Disc thread about merely trying to see how much crit or mastery or whatever affects a particular spell, and making sure people have their expressions set up correctly. Doing Druid stuff for so long, I've always found it rather handy to have the sheet where I know the calcs are set up for each spell and can be easily modifed for any values without redoing any extra work.
I think you should see how it worked in Valen`s spreadsheet (and it was awesome).
Nice, seems almost exactly the same in concept. He handles the spell selection issue by having you choose from a list of preset distributions using a dropdown, which is not a bad idea at all. Beyond that though they're basically the same setup.
Ok I see--I didn't see it in the dropdown, but that's what the blank columns are for.
So this is mostly an issue of finding an intuitive way to input spell selection? Point's definitely taken, it's probably something I could apply to any of the sheets I do. It might be not a priority until after the Disc module is done. Especially since Disc is slightly more amenable to the way I'm doing things since you have DPS spells to fill otherwise idle time. I should think about it though, since the whole % breakdown thing hasn't been all that natural even for Druid since we stopped constantly spamming at the beginning of Cataclysm.
Main issues are that if you input a fixed number of each spell per minute:
1) have to reflect haste scaling somehow. I could probably assume that each extra point of haste proportionally increases use of all no-cooldown spells.
2) have to reflect benefit of added/reduced mana from any source. Valen's sheet seems to compute total mana available over the course of the fight, then figures out how many seconds of casting you can sustain the desired rotation and multiplies by the rotation HPS to get total healing. It's never been an assumption I liked, again because it treats cooldown and no-cooldown spells the same, whereas in reality the benefit of added mana accrues mostly to no-cooldown spells (although given that Priests have Prayer of Healing available, maybe an academic distinction... ).
3) have to deal with limits imposed by cooldowns and total cast time. Maybe the best thing is to simply have a flag that lights up if the user is violating some spell cooldown, or has more than 60 seconds of casting each minute (probably after Surge of Light/Divine Insight procs).
Either way, I will think about it, since it would be nice to have as more user-friendly frontend if I can do so without compromising the model.
For the moment, why don't you tell me if any of the assumptions in there simply have to be changed in order to let you approximate the casting you want:
1) Cooldown spells used generally on cooldown*: CoH, PoM, L90 Talent, Holy Word:S, and long cooldowns.
2) Remaining time divided between PoH, FH, GH, Renew, and "nothing", in user-defined proportions.
(*No healing spec actually uses their various spells sharply on cooldown, but for the better spells that you tend to use frequently when you have them available, assuming usage is determined by cooldown generally gets you realistic proportions)
I know people aren't super interested in Holy but if any obvious changes have to be put in that would be good. For Disc I'm imagining something like:
1) Used generally on cooldown:
--Penance (probably needs to be toggled at least for now though, since it's often not used much)
--Spirit Shell (doesn't affect throughput in 5.2)
2) Remaining time split between:
--Gheal, Flash, nothing
Penance is also a DPS/HPS increase over Smite if you have it available for use for Atonement healing. The current 4pc bonus makes this especially interesting.
Penance, 1 usage per X sec, where X is defined by user and reflect HIS playstyle. And that X defines HPS, HPET, HPM and other stuff.
In spreadsheet it will be like this
Penance, each 15sec
Cascade, each 30sec
PoM, each 15sec
least common multiple for CD spells - 30sec. In that interval you will use 2 penance, 1 Cascade and 1 PoM. It will cost you 5 sec casting and ~50000 mana. That spells do 50000 hps. Other 25sec you will cast PoH, That 12.5 PoH will cost you ~250000 mana and 100000 hps.
So in 30 sec you spend 300000 mana total and did (50000*5+250000*25)/30 ~= 91600 hps.
I think it will work.
More complex example:
User defined part:
Penance each 9 sec
PoM each 12 sec
PWS each 15 sec
HF each 11 sec
least common multiple for CD spells - 1980 sec:
220 Penance (1980/9)
165 PoM (1980/12)
132 PWS (1980/15)
180 HF (1980/11)
1155,5 sec casting before spell haste implication (220*2+165*1.5+132*1.5+180*1.5)
824,5 sec left for PoH cast (1980-1155.5)
329,8 PoH cast. (824.5/2.5)
And so on, and so on.
2) Another solution.
User defined part:
Penance each 9 sec
PoM each 12 sec
PWS each 15 sec
HF each 11 sec
Combat length - 400sec
44.4 Penance (400/9)
33.3 PoM (400/12)
26.6 PWS (400/15)
36.36 HF (400/11)
233,19 sec casting before spell haste (44.4*2+33.3*1.5+26.6*1.5+36.36*1.5)
166,81 for PoH left, so (400-233.19)
66,724 PoH are casted in 400 sec with all that CD spells. (166.81/2.5)
Yeah, interesting. So Penance should actually be used as a pretty frequent filler even if you're doing little to no single-target healing. Not on cooldown though necessarily, esp if the cooldown is 6 seconds. Probably something like--assume any time allocated to Smite is first allocated to Penance to the extent allowed by cooldown, then to Smite. This may completely supplant Smite in rotations where you don't have much DPS time, but maybe your point is that people should be doing that more in reality.
For other Atonement spells I was mostly planning to treat them like heals on paper, since the Atonement heal preserves proper crit/mastery scaling just as though they were direct heals. Penance is messier since the DPS version outpaces the healing version even at current spellpower levels (and comes with DPS and adds a stack of Evangelism).
As for Discipline in general, there's more messy aspects other than Penance when it comes to a spreadsheet:
How much do heals benefit from Grace on average?
You can do some fancy calculations here but I guess for a first version it'd be enough to have this selectable on a per-spell basis by the user.
How do you model a rotation incorporating Atonement?
Sure you can treat them as direct heals but there's a few differences to usual heals that make things more complicated:
a) Evangelism plays a big role in HPS and HPM values of Atonement heals and Archangel plays a big role in Evangelism uptime. Archangel is also commonly not used on Atonement heals themselves but rather for other heals.
The Archangel part is kind of tricky since it depends on how you model rotations in the end. The evangelism part is kind of easy assuming the player doesn't let the stack drop unless for Archangel. In that case you just need the interval in between Archangel uses, the average amount of Evangelism abilities used in that time frame and you can calculate the average Evangelism stacks when using a spell that benefits from it pretty easily.
b) Additionally, Smite glyph uptime makes a difference in Smite HPS and HPM.
This one depends on whether the user specifically tries to place all Smite uses in his rotation into the DoT's time frame or not and should probably not require more than a checkbox and a few smaller calculations depending on spell distribution.
As for the current Holy spreadsheet:
It's obviously far from finished so I haven't bothered looking into anything related to spell breakdown or talents yet, however here's some feedback on individual spell data:
I do want to respond to Szeretlek's ideas at some point. Short version is that I probably do want to make the user input work a little more like what he describes, but might not be right away. Still focusing on the underlying modeling for the moment.
Even having Grace selectable per-spell might be a bit too granular/overcomplicated for this purpose. I was planning on just ignoring it for AoE-focused spells like PoH, and allowing the user to to put in an estimate for what % of single-target heals are affected. This will ignore some issues (Atonement heals), but I guess I'm comfortable from my other spreadsheet projects knowing the limitations of how far I should be getting into the weeds on these things. Truthfully, a detailed model of Grace is going to have very little impact on relative stat weights or anything like that (it mostly only affects the "bottom line," which like I said above the least interesting part of a healer sheet).
Atonement: Overall it's not too scary. Like I pointed out in reply to Moshne, since an Atonement from say, Holy Fire scales with spellpower, crit, haste, and mastery in just the same way as though Holy Fire were simply a heal spell, I don't really have to treat it any differently. Other than details like worrying about the raid spell damage debuff, the only complication is Evangelism/Archangel, which I was planning to handle in just the way you describe.
I'm expecting to distribute Smites randomly w.r.t Holy Fire DoT uptime; at the moment I don't see a need for anything more complicated.
The other big Disc complication you didn't mention is Borrowed Time. But fortunately the sheet already has machinery for an alternate-haste version of every spell (used for Nature's Grace in Balance and Soul of the Forest in Resto). It's dormant in the Holy sheet, but I should be able to co-opt it for Borrowed Time easily.
Divine Star: probably should be, but now I don't remember offhand. I also forgot that it hits most targets twice. And come to think of it, I don't even know how AoE capping works for spells that travel and don't do all their damage/healing at the same time. Will have to try to look into this more.
Cascade: yes, when I first read it I just totally assumed that "split" meant each jump would reduce the healing by half and then I never went back and fixed it. Should just be MIN(AoETargets, 15).
I know the L90 talents take different hits based on their range mechanics, I was just hoping to avoid adding 3 boxes.
e: By the way, what big things are you thinking need to be done other than rearranging the user input somewhat?
I just did some testing on Divine Star in a 25 man raid setting and it definitely diminishes. It seems like Blizzard took the easy way out and simply calculates the healing of one line at once since it would never hit early targets for significantly more than later targets in my log. That also explains why the healing/damage has always felt out of sync with the animation for me. I don't have any exact numbers but it seems to be roughly the same as for other AoE spells (healing divided by amount of targets / 6) per line, so you'd get a maximum of 12 times the calculated heal total.
As for things to be done:
The whole thing looks pretty good already. To me it looks like it's mostly polishing work to be done in regards to spell distribution/rotation and some talents (level 90 spells, Twist of Fate, Power Word: Solace pre- and/or post-patch). Power Word: Solace may not be a popular choice because it's pretty unnecessary as Disc right now thanks to Atonement healing but it seems pretty competitive as Holy considering its fairly high idle times. Post-patch Power Word: Solace looks like a viable talent for both Holy and Disc.
|All times are GMT -4. The time now is 10:52 AM.|
Forum Infrastructure by vBulletin 3.6.12 ©2000-2007, Jelsoft Enterprises Ltd.