[FIXED] 3 Months Later, Cosmic Ripple is Still Broken

July 5, 2017July 8, 2017 by Naro

So now that it’s become just a bit more relevant due to Binding Heal‘s newfound strength, I’d like to talk about a bug that has to do with the new gold trait Holy Priests recieved in 7.2, Cosmic Ripple. This bug has been around since CR was introduced, and still hasn’t been fixed to this day.

Update 9/7/17 – Cosmic Ripple Fixed

Since posting this, Cosmic Ripple has now been fixed and no longer procs multiple times as discussed in this post. 3 and a bit months later and Cosmic Ripple is not still broken…

What is Cosmic Ripple?

Cosmic Ripple was Holy’s fourth golden artifact trait introduced in 7.2. It’s a pretty strong increase, doing 3-4% of your healing while also triggering Echo of Light. It’s worth nothing that the original implementation of the trait was bugged badly. Upon Cosmic Ripple proccing, it would also drain the caster’s mana by 55k. This meant that having the trait was actually a detriment, as the CR proc simply wasn’t worth the mana you were forced to spend on it. Luckily, the bug was fixed relatively quickly, before most priests got the trait. However, there was one other issue with CR that didn’t get fixed.

How Should CR Normally Work?

Cosmic Ripple‘s behaviour should be straightforward for the most part. In theory, what should happen is fairly intuitive-

You cast a Holy Word.

You bring that Holy Word off cooldown with Serendipity/waiting until the CD is up.

Cosmic Ripple triggers and heals 5 people.

The Bug

If you’ve had a log where you played Binding Heal recently, pull up the log and look at how many Holy Word casts you’ve had and compare that to the number of Cosmic Ripple hits. The expected number would be exactly 5 hits per Holy Word cast, although there is a little wiggle room. If you casted a Holy Word right before the pull, that cast wouldn’t be captured by WCL, so there’d be 5 extra hits than the expected number on WCL. If you casted a Holy Word that came off CD after the fight ended, you’d be 5 under. And of course, if you had a CR trigger when you didn’t have 5 people within 40 yards of you, you’d miss a few hits. But on some logs, you can see stuff like this:

We’ve got 135 hits on the log, but we’d normally only expect 115. This means that there were 20 extra hits- but our expected value can only be 10 under the actual value if everything’s working properly. Something clearly has to be broken.

Testing the Bug

This is an extremely strange bug. Back in April, when Niphyr and I were originally testing this, we found it incredibly hard to nail down exactly what was going on, despite the fact that the bug is east to reproduce. This was mainly because of the bugs extremely inconsistent nature- it’s very difficult to figure out what causes the issue when the amount of procs you are able to chain in an interval varies so wildly for no apparent reason. It’s also extremely persistent- every single attempt we made to eliminate a possible cause failed to stop Cosmic Ripple from reproccing.

For example, the first explanation that most people would jump to is that it’s interacting weirdly with serendipity. Maybe its simply every time you finish a serendipity inducing cast while the holy word is on cooldown, it triggers CR. Well, it doesn’t do it for Serenity, only Sanctify. It also doesn’t happen all the time, only right after ripple procs legitimately, so there must be more to it.

Then onto our second theory. What if it has something to do with the amount of serendipity generated after the Sanctify comes off cooldown? Well, Binding Heal and Prayer of Healing average out to the same amount of CR reprocs, so that can’t be it.

The order of events in the combatlog does have the beginning of the cast before the CR proc, so maybe it’s something to do with the spellqueueing system? This theory is also fairly easily disproven, as CR reprocs still happen even with a delay between the legitimate proc and the start of the next PoH cast.

But that’s just at the start of the chain. Maybe it’ll fail to proc if we stop in the middle of chain-casting? And what if we switch up the spells that proc it?

That also gets us nowhere. We can wait well over half a second, and procs continue to happen. Therein lies the problem with troubleshooting this- no matter what we do, the bug still happens. The fact that many of the actions we take appear to make the bug happen less, but not disappear altogether, also makes it incredibly difficult. For example, the image above took several attempts. This seems to hint that both switching spells and delaying casts make the bug less common, but also fail to eliminate it altogether- which doesn’t make much sense. To this day we still have no idea what actually causes the bug.

Sanctify vs Serenity

As a side note, there are other clues which point to serendipity simply working differently for Sanctify and Serenity. In the above image, GetSpellCooldown for Sanctify and Serenity are being run after each Binding Heal cast. GetSpellCooldown is a function that returns the timestamp of when the spell was cast for its first value. If you look at the Sanctify image (top), you’ll see that after every Binding Heal cast the timestamp decrements by exactly 4 seconds to handle serendipity. However, in the Serenity image (bottom) the decrement is not consistently exactly 4, but slightly off each time.

How much of an impact does this have?

Surprisingly, this happens in most of the logs on WCL. Niphyr crawled through logs when this issue first came up way back in April, and he found that most logs had a few Cosmic Ripple procs more than they should’ve had. Also, if the player was running Binding Heal, the number of extra CR procs noticeably increase. This isn’t because BH triggers the bug more often, but rather because when Sanctify is available, people tend to cast BH more often than Prayer of Healing.

On an individual level, however, it really doesn’t have too much of an impact. Even a large amount of extra ripple procs won’t necessarily merit a noticeable healing increase. It’s nice when it happens, but it isn’t a huge deal, and it’s most definitely something that you shouldn’t be trying to game. You heal to the available damage- casting 100% overheal PoHs just to trigger an extra CR is a massive waste.

TL;DR

If you chain cast SanctifySerendipity generating spells right after Sanctify comes off cooldown, those casts may also proc Cosmic Ripple. This definitely isn’t worth trying to game, so just take the buggy bonus where you can get it. Extra procs will happen naturally during the course of regular play, especially if you’re running Binding Heal.