BfA Holy Priest Theorycrafting & Resource Creation

Battle For Azeroth

Leading up to Battle for Azeroth and in the weeks following, there has been an incredible amount of work that’s gone into developing Holy Priest resources by myself and many others. We have all been busy working on content to help everyone from the newest Holy Priest to the multi-expansion veterans, including:

  • Authoring the revamped Icy Veins Holy Priest Guide which now includes even more info including Mythic+ & raid boss tips and common mistakes.
  • Updated guide on – previously
  • Answering the endless questions and hours of discussion along with our amazing Holy Team & regulars in #holy on the Warcraft Priests discord.
  • Creating from scratch the new BfA Holy Priest Spreadsheet with Trinket & Trait modelling, as well as improved Haste and cooldown reduction modelling.
  • Working with other healing spec theorycrafters on providing the most accurate modelling possible for their resources, especially around Trinkets, Azerite Traits and Weapon Enchants.
  • Writing, proof-reading and providing input into various updates, speculation and opinion pieces around the place including Reddit and Wowhead.
  • Helping squash bugs all throughout Alpha, Beta and now Live & PTR by providing detailed bug reports and feedback directly to Blizzard developers.
  • Even translating some of our more popular Azerite and Trinket resources into Russian!

I’ve had a lot of questions about this, as well as the development of various Holy Priest resources so here we are; A roll-up post of everything that has happened over the past few months from a resource creation point of view.

Community Interaction

One of the most satisfying and rewarding aspects of what we do is interacting directly with people, whether it be on Twitter, Discord, forums or in-game. While it can be incredibly time-consuming helping people 1-on-1, it’s time well spent as far as we’re concerned.

It’s always great being able to answer peoples questions and to help someone improve, even if just a little. The #holy channel in particular on the Warcraft Priests discord always has someone able to answer your questions or give you some feedback and we always welcome everyone. No matter what your skill level is, what content you participate in or what your goals are on World of Warcraft we love hearing from you and helping where we can!

You can also keep up to date with the latest information in the #holy-faq channel, and the pins in the #holy channel which we try to keep as current as humanly possible.

Guide Updates

Guides have always been the first stop for many players wanting to learn a new spec or master their current one. The best guides are the ones that grow and evolve with the community, this means regular updates as the game and meta-game changes. It is also imperative these guides aim to give the best possible advice given what we not only presume to be true but wherever possible, what we know to be true through theorycrafting and testing. A significant part of keeping these guides up to date is not only theorycrafting the best stats, enchants, trinkets, traits and talents but also understanding why things work and how to apply our entire toolkit to various situations. There is no one-size-fits-all to healing and guides need to properly reflect that without being too confusing to consume.

Throughout Legion and now into BfA we have been keeping the guide at (formerly How To Priest) updated, and since the middle of Legion, I was given the opportunity to help curate and now author the Icy Veins Holy Priest guide. Writing a guide for a site like Icy Veins has been quite a learning process as it became very evident early on there was a need to provide information that is not only correct to the top end players pushing content to the limits, but also the vast majority of the audience who aren’t playing Holy Priest at the bleeding edge. Being a part of this process has given us all a good appreciation for just how difficult it is to properly provide accurate advice to all levels of players and I’m sure will be an ever-evolving piece of work as time goes on.

This leads into one of the biggest issues I have found since generating community content…

Feedback and Support

While we love spending hours of time poring over logs, talking with players at all difficulty levels, helping people grow and improve, and trying to get out the best information we possibly can – at the end of the day we aren’t perfect. People often ask “how can I support the work you do, how can I donate and show my appreciation?” Feedback on the resources we provide, content that is missing, incorrect or could be improved is the most treasured and valuable source of appreciation you can show us. If you ever want to make an impact and give back to a resource you feel has given something to you then the best thing you can do is give some feedback to help it improve. We don’t write the guides for notoriety, money or glamour… we write them to help as many people as we can and your assistance with this is the best repayment we could dream of.

Some things to get your mind ticking as you consume the various resources and want to give some feedback:

  • Things that are missing from the resource – find yourself consuming something about a topic but still have questions? Didn’t answer your question? Tell us so we can improve it!
  • Things that are incorrect – this one goes without saying, the sooner we can fix up mistakes the better as it will affect fewer people.
  • Things that could be articulated differently – if you find something was difficult to consume, lacking specifics or you just generally think sounded bad please pass it on.
  • A better method of doing something – while we try to keep our eye on other community resources out there to bring information to people in the most appropriate way possible if you see something that someone else is doing better we are always open to that constructive criticism.

Bug Squashing

Particularly throughout Alpha, Beta and the first few weeks of expansion launch we spent a considerable amount of time documenting and reporting bugs to Blizzard. A great amount of work by many people goes into identifying, testing and documenting these issues to pass on, and this effort is not wasted. Typically issues we report will be fixed within a few days, depending on how accurate the information is we provide in our reports.

We also regularly reach out to people on Twitter and in #holy on Discord to help provide logs of a specific spell or ability usage and the responses are always overwhelming. We especially appreciate those who take the time to go and test things in-game and log them to WarcraftLogs for us as well. This makes our lives much easier in identifying and collating specific examples.

Cross-Spec Theorycrafting

Much of the theorycrafting that goes into Holy Priest is also shared with the other healing classes. Particularly our work on Azerite traits, trinkets and enchants have many commonalities. We work with other healing spec theorycrafters to try and improve one another’s resources by sharing different modelling methodologies, formulae and presentation ideas. This is particularly valuable for helping identify errors and inconsistencies in the resources we generate.

During BfA we have spent a good amount of time collaborating with Discipline, Holy Paladin and Restoration Shaman theorycrafters. Working together has not only improved the quality of these resources but also saved those involved quite a lot of time, preventing them from having to duplicate some of the common aspects across specs.

Holy Priest Spreadsheet

In Legion we had a good run with our holy priest spreadsheet, however, we encountered some difficulties properly modelling both haste and cooldown-reduction (previously Serendipity, now known as Holy Words). We also had some approximations for calculating stat scaling for both primary and secondary stat values which were quite accurate but relied on someone developing these formulae and “Magic Coefficients” as we came to know them. Giving mana an estimated HPS or Intellect value was also something we struggled to find a good solution for, which meant our trinket rankings were broken up into throughput trinkets, and Mana trinkets. Finally, due to how modelling healing works, we wanted to try and come up with a better way of allowing people to customise and personalise the assumptions we make, particularly when modelling trinkets and now Azerite traits.

The spreadsheet also took some time to get it to a state we were happy with it for three main reasons. Firstly we started from scratch to try and get away from any lingering issues we might have from Legion, and secondly, we made the decision to wait until traits & trinkets were finalised and live. Finally, the biggest reason for the delay of releasing the spreadsheet was getting some decent logs to aggregate and use as baselines for playstyle profiles. The entire sheet relies heavily on having an accurate profile for both casting and overheal to generate meaningful results, without that the results can be skewed.

Haste and Cooldown-reduction

Moving forward into BfA we wanted to better handle haste and cooldown-reduction. In Legion, we estimated the extra spells you would cast due to the extra haste but did so based on your existing casts per minute of each spell. This gave some skewed results, in particular with abilities that had haste affected cooldowns so we artificially devalued haste to compensate for not accounting for the human element in gaining more haste. In BfA we started using an efficiency model, where we presume you are going to continue being just as efficient with your spell casting as you gain more and more haste. This means if you cast for example 80% of your potential Prayer of Mending, you continue to cast 80% of your potential as you gain more haste, which much more accurately models the actual benefit haste grants you. We use this method for both abilities with cooldowns, and those without. Doing this has meant we no longer artificially devalue haste, and have a far more accurate model on the value of haste.

The same methodology is applied to cooldown reduction (CDR) from our passive Holy Words where we use the efficiency model to estimate how your casting will change with additional CDR (casting more fillers that generate Holy Words cooldown reduction). This allows us to properly model the amount of additional holy word benefit from casting an associated filler spell, so if you typically cast 80% of your potential Holy Word: Sanctify, we presume you continue to cat a potential 80% as your CDR increases.

Stat Scaling

Both primary and secondary stats scale differently compared to one another. They both also scale differently depending on the item level. Blizzard doesn’t publish a formula for figuring out this scaling so the community set about doing it themselves early on during BfA Alpha. As we were working on our spreadsheet we soon realised that the coefficients and formulae that were being produced by members of the community weren’t suitable for what we needed. Given the importance of modelling Azerite Traits and Trinkets the way we wanted, we instead looked to try and get more accurate values. The folks over at SimulationCraft (SimC) have a process that extracts client information and included in this is everything we needed to get more accurate results for the various different scaling values we required.

Without going too technical into how it works, the SimC tool extracts data tables from the World of Warcraft client data. These tables contain various scaling values split out into each item level, and can be combined with the extracted spell data in specific ways giving far more accurate values at each item level for primary and secondary stats as well as effects that scale.

Trinkets and Azerite Traits

The three primary reasons people use the Holy Priest spreadsheet is for stat weights, trinket rankings and Azerite rankings. Trinkets and Azerite traits behave very similarly to one another mechanically, so we used a very similar methodology for modelling them. As in Legion, we model them all based on averages to give us an approximation on their relative value to one another. The process we typically go through to build each of these out is as follows:

  1. Use the SimC spell_data extract to find the attributes for the particular trait we’re interested in. These normally include:
    1. RPPM (proc rate)
    2. Scaling Method (used with above-mentioned stat scaling data tables)
    3. Scaling Coefficient (used with the above-mentioned stat scaling data tables)
    4. Internal Cooldown (doesn’t always apply)
    5. Buff or Proc duration
    6. Any other spell effects
  2. Calculate the base values for a specific item level using the above scaling information
  3. Fill out the formula that gives an average benefit based on some configurable assumptions
    1. Assumptions are config variables we can modify easily later
    2. This includes effects that scale with haste, crit, mastery and versatility
    3. Also includes any spell cast per minute interactions
  4. Validate these base values against the in-game and Wowhead tooltips
  5. Validate these base values against in-game logs

Steps 1 through 4 can be done prior to a trinket or trait going live. This information is what we use to generate and publish our “preliminary”‘ rankings. It’s not until we get to step 5 that we can properly evaluate the various configurable assumptions in a real-world scenario. This is where we confirm our calculations for scaling values, proc rate and so forth that are data-mined from the client data perfectly mirror the live version of the game.

Stat Weights

This topic is going to get a post of its own soon, but it deserves a mention as there is some method behind how we handle it on the spreadsheet. Fundamentally stat weights for healers have always been a very grey area, and when it comes down to it your stat breakdown really doesn’t matter. Yes, people hate hearing that but at the end of the day so long as you have lots of any of them you have the potential to perform well. As we found in legion people were able to “parse well” with just about any breakdown of the 4 secondaries. At the time of writing this, secondaries in BfA scale worse and contribute less to your overall healing than intellect, so item level is virtually always the best option.

All of that said, how are we so confident this is in fact true? That’s where our modelling on the spreadsheet comes into it. At its heart, the spreadsheet is a theorycrafting tool to model and compare different scenarios, and we use it as such to compare various gearsets, playstyles and myriads of other configurations and variables to figure out how these all interact with one another.

While we can quite easily model how people “should” play in particular scenarios and give approximate stat weights based on that playstyle, in reality, the way you play can have a dramatic effect on how stats are valued for you. What we try to do is provide a good balance between the two. For the default profiles on the spreadsheet, we aggregate many logs at a Mythic** level and use those aggregations to come up with profiles that fit various different playstyles. We then load those in as the default profiles, this helps to prevent “That one attempt where I forgot to cast X or had to save Y or Z happened” that made your actual casting a bit of a statistical outlier, from having an adverse effect on your produced stat weights. Your playstyle depends on so many factors from fight to fight, attempt to attempt – so rather than load up one specific pull into the spreadsheet to try and figure out your stats our suggestion is always going to be to use one of our pre-configured profiles that fit the playstyle you are aiming for.

**note: We use Mythic because typically the amount of damage taken, and thus healing required is the highest at Mythic difficulty. This is where the small playstyle and gear choices you make have the most impact. These play styles are in nearly all circumstances the same in heroic and normal as well, but due to variable raid sizes and the number of healers, Mythic provides the most reliable way to get a good baseline on how people play on average, especially at the start of a tier before people get all the bosses on farm.

Translation to Russian

There is a Russian priest discord that we were invited to during Legion which sparked a side-project – to localise some of our resources. For the moment only our trinket and Azerite trait output are translated into Russian but hopefully over time the number of resources and languages we can support increases. Part of this output requires some manual translation, such as the information panels in the Azerite tables, but the item names used for both Azerite and trinkets are pulled automatically from the Blizzard API.


Leave a Reply

Leave a Reply

Your email address will not be published. Required fields are marked *