Looking at Swing Reset math

I’ve been looking for a while at a way to calculate the actual amount of reduced autoattacks due to swing resets. Despite mastery spawns and Expel Harm being fixed with 6.2, Surging Mists still resets the swing timer. I’m pretty sure this is by design, for a couple reasons. First, it wasn’t changed when the other two were. Second, I checked on a Shaman, and with 5-stack Maelstrom Weapon (the same as 5-stack Vital Mists, basically), Lightning Bolt and Chain Lightning don’t reset the swing timer, but Healing Surge does. In the combat log (link), too, you can see that it shows up differently: the heal has a “begins casting” line, which is probably what resets the swing timer.

Anyway, with only Surging Mists left to reset the swing timer, I thought it wouldn’t be too hard to see how many swings you actually lose over the long term. I started by figuring out how many autoattack swings I’d take per Surging Mists cast, and then thought it’d be straightforward to figure out a formula from there. (As a side note, this isn’t perfect, because Surging Mists casts aren’t perfectly regular due to your t30, power strikes, etc, but it’s not a huge deal I think). However, I got stuck there. I wasn’t sure how to look at it from a probability standpoint, specifically because a reset doesn’t just remove a swing, it instead delays the next and all subsequent swings.

I returned to the tried-and-true method I used for Tiger Strikes, writing a sim. You can see the code here (link). For this sim, you input your swing timer and resets per second, then it spits out how many swings you’d have if there was no reset, and how many swings actually go off. Then you can divide the second by the first to find the impact of the lost swings. I was expecting to find that the longer your swing timer is, the worse resetting is for you, since you can push the next attack back further. For shorter casts, each reset would add less time, so it wouldn’t be as bad. That’s not what I found.

Looking at my stats first, I ran it with a 1.508 swing timer and .1126 resets per second. I got 84.9% of swings going off. Then I checked what would happen if I instead had a 2 second swing timer. This time, the numbers came out to 90.1% of swings. I had to go to bed at that point, but today I ran some more tests, because two data points is too few. I today checked a 1s swing timer and .1126 resets per second, and to my surprise, that was also 90%. Now, I’m just really confused and not sure where to go from here. Any thoughts?


6 thoughts on “Looking at Swing Reset math

  1. If you assume the autoattacks would land at a random time during the Surging cast, then you lose an average of 0.5 GCDs worth of swings per Surging cast, for which the DPS loss should be the same regardless of swing timer.

    The thing is that it’s not really random since you start using GCDs at the same time you start autoattacking, so the autoattacks probably fall on a few possible times for any particular swing timer, depending on the rotation, so you’ll see some variance there. For example, with a swing timer equal to your GCD, assuming some slight delay between using abilities due to lag, you’d often lose almost no swing time every time because you’d otherwise be swinging very late into the GCD.

    Since it involves a fixed rotation, it is possible but grueling to calculate those times and how many times each time is hit over some duration of time (which is deterministic, not random, since Crane has no procs, assuming you’re not using a Haste proc trinket).


  2. I think you’re looking at it backwards? It’s Surgings landing at a “random” time during autoattacks, not vice versa. I don’t think it should have anything to do with how long your globals are, besides the indirect relationship of more globals = more surgings.

    I was also thinking about just making it deterministic, but there is still the random factor of Jade Mists procs. Even if you’re over soft MS cap and in the long run it won’t change your chi spender globals, pooling chi for RSK should make the rotation not 100% scriptable.


    1. Oh, yeah, what the hell was I saying. You’ve got it now. So you lose an “average” of half a weapon swing per SM cast, right?

      But what I meant was: since you’re doing a simulation, you’re not going to see that exactly, or maybe not even close, because the casts DON’T come at truly (or even almost) random times, especially since nearly everything you do in Crane takes exactly 1 GCD.

      And even if you don’t RSK though, you’re usually using BOK instead, but I see what you’re saying there how it could affect exactly when you use SM.


      1. Right, I though it might just be (swings/surging-0.5)/(swings/surging), but that’s not what the sim is showing. I’ll try to dig deeper into the sim to see if it’s doing anything unexpected, maybe chart some more values.


  3. OK, I think I figured it out after a little bit of debugging: After every reset, you’re essentially re-syncing them. That means it’s not a random time in the swing timer, as we were treating it, but rather a fixed % of swing loss IF surging frequency is constant and so is your swing timer. I’ll try to put a few-second fuzz in the surging frequency tomorrow or Friday to see how that changes things.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s