By adding the conditions&buff.savage_roar.remains>=10&energy>=50to the two lines: actions+=/ferocious_bite,if=combo_points>=5&(dot.rip.remains+(8-(dot.rip.ticks_added*2)))>6&dot.rip.ticking&(talent.soul_of_the_forest.enabled|buff.berserk.up)actions+=/ferocious_bite,if=combo_points>=5&(dot.rip.remains+(8-(dot.rip.ticks_added*2)))>10&dot.rip.ticking

The BiS profile lost 3 dps (well within error margin). However, reducing the energy conditional to >=40 gained 64 dps (slightly outside error margin).This sprung my interest, and after lots of tweaks I found the strongest combination to be &buff.savage_roar.remains>=1&energy>=50. This seems to suggest that using max buffed bites (>50 energy) is the way to go.

For this quick testing, I used fight length 450 (0% variation), 50000 iterations. For reference, the original code yielded 121388 (error: 25.92) and with my tweaks, 121525 (error: 25.94).

It's not much, but it's something. Also, I would like to report a bug. When importing my character it fails to copy the legendary gem properly. Instead it gives me 2500 extra agility, like this:main_hand=gaorei_staff_of_the_legendary_protector,id=86321,gems=500Agi_500agi_500Agi_500Agi_500agi_500Agi,enchant=dancing_steel,reforge=exp_crit

Just something to look out for.

Edit: I was apparently not using Leafkiller's latest script. His script gave a dps projection of 121885 (error 25.44). However, applying the same change (&buff.savage_roar.remains>=1&energy>=50), increased this to 122025 (error: 25.64).

@Referee - Interesting find. I was talking to Tinderhoof just last night and he was complaining about how the current script will sometimes use a FB when both Rip and SR are low which results in long Rip down times, and your change addresses this. It also makes sense that gain was higher on your profile than the BiS, as the BiS profile has longer Rips and better combo point generation, so the more aggressive FBs don't impact Rip/SR collisions as much.

The "buff.savage_roar.remains" condition, even if set at >=1, is giving a boost. Not sure why, though, as higher priorities should maintain that SR is >=1 anyways.

Edit 3: Does it make sense to separate the specs' scripts to improve the simulations' performance? While it is neat to be able to have everything in one code, I imagine less checks would make it run faster.

I have no idea what the commas in the middle of that conditional will do. Those should be "&"s (logical ands) as follows:&((buff.savage_roar.remains>=10&tier14_4pc_melee=0)|(buff.savage_roar.remains>=1&tier14_4pc_melee=1))

The additional SR check (>=1) should not make a difference. Maybe it is a byproduct of using the commas where you wanted a logical and.

Edit 3: Does it make sense to separate the specs' scripts to improve the simulations' performance? While it is neat to be able to have everything in one code, I imagine less checks would make it run faster.

That would make it harder for people to sim the different specs, and also, since there is a lot of shared actions between the specs, it would introduce the possibility of fixes not being applied to all of the specs.

That makes sense. I will do some more testing with the additional SR checks but those results surfaced before I started fiddling with the set bonuses, so the commas are not to blame. In fact, the program crashed when I attempted to use that code.

I ran your latest change* against my profile as a decent control because I have a lower ilvl than you do (487 vs 489) but I have the 4 piece set bonus. It looks like it is a dps increase for DoC, but not for HotW. What do you see on your profile when you test the change with HotW?

Maybe the main benefit of your change is that it allows DoC to get on more Rips which means we can safely add it by including the a DoC check**

With my profile and HotW, using mastery>crit reforges, it gives an increase of about 210 (95134->95343) (error: ~28).

Is there conclusive evidence that the on-use portion of HotW is a DPS loss (I remember seeing it somewhere on the main EJ thread), and if so, at what gear level does this kick in? I'm asking because I have a hard time seeing how it isn't a huge gain simply because of the CD stacking that can be done during bloodlust (pot giving 4000*1.06*1.05*3.1= 13801 int plus troll racial for example). With 463 MH/OH I remember doing ~140k dps during bloodlust pulls for 40 sec (post nerf) in ~475 ilevel total. This is considerably more than I could do in cat form during that time.

Edit: I'll run NV tests with my profile.Edit 2: The increase is identical for my NV profile, using the same reforges (96262->96484).Edit 3: Using crit=mastery reforges (balanced out) gives a slightly larger increase and results in general (96284->96541) (error: ~29).¨Edit 4: With the BiS profile, the SR condition (>=4) does not seem to have any impact at all on dps, compared to only using &energy>=40.

400k iterations with &buff.savage_roar.remains>=4&energy>=40 gives an average of 122095 dps. 250k iterations with only &energy>=40 gives an average of 122092 dps.The reason for using so many iterations is that the results from the 50k iteration runs varied between 122050 and 122170 for both.

Just under the faerie fire action. I've not yet had the time to test all possible number combinations or where to actually place it in the priority (I went with intuition). But it already looks very promising.What I intended with this change was to add more "safe" opportunities to use FB. In this case when TF will come off CD before rip falls off and savage roar has plenty remaining. A side effect of this change is that it increases that DPCT of bite significantly which for me at least is aesthetically pleasing. And it will probably mean that it is easier for the brain to recognize that the loss of a few seconds of Rip was justified.

I will look into adding cooldown.berserk.remains conditions to increase the number of "safe" bites.

Just under the faerie fire action. I've not yet had the time to test all possible number combinations or where to actually place it in the priority (I went with intuition). But it already looks very promising.What I intended with this change was to add more "safe" opportunities to use FB. In this case when TF will come off CD before rip falls off and savage roar has plenty remaining. A side effect of this change is that it increases that DPCT of bite significantly which for me at least is aesthetically pleasing And it will probably mean that it is easier for the brain to recognize that the loss of a few seconds of Rip was justified.

I will look into adding cooldown.berserk.remains conditions to increase the number of "safe" bites.

You should reset your work by grabbing the latest action list from the Experimental rotation thread. aggixx and I spent some hours last night on the script. We incorporated part of your conditional on the aggressive FBs (just the energy pcheck and not the check on SR duration since that does not actually do anything). We also incorporated an idea aggixx had to pool energy during BitW for the 5 combo point FBs.

True to form, these changes made a huge difference in the DoC profile but not in the HotW profile. We believe this is the case because the DoC profile emphasizes damage on finishers, particularly FB and Rip, and the changes we added simply shift more energy into the FBs. I am reminded of work that Mihir did to try pool energy for FBs back at the start of Cata, but it was not a dps increase at that time - which is consistent with what we are seeing with the non-DoC profiles*.

I think there is some additional work that can be done to refine the pooling during Berserk as pooling to 40 or 50 energy for an FB during Berserk seems like it would be a dps loss, but this will be pretty small given how infrequently we cast Berserk. Let me know if your new FB conditional still makes sense in the context of the new script. I have not really processed it yet.

* I realize that it is a dps increase with some profiles, but it is a dps loss for other profiles, so I am keeping these changes focused on DoC where it is clearly a dps gain.

seems to produce a very tiny increase (~50) with the updated script. I am noticing somewhat large fluctuations in DPS between runs. One would think that 50k iterations is a large enough number to produce results within 0.02% of each other, but I am seeing upwards ~120 dps differences (0.1%).

Edit: I'm not sure really how high in the priority I should place it. Because of the strict conditionals I reckon it deserves a very high priority. Moving it down a few lines does not seem to have any effect.

I believe you're approaching it from the wrong angle, it seems what you're trying to achieve is to make a better aggressive FB conditional in which case you should try removing the current ones and making a complete replacement.

I see that you're checking that rip will end at least 4 seconds before SR, but you're not checking the other case where SR ends at least 4 seconds before Rip. The 4 second min on rip looks good (although the exact amount could potentially be adjusted, 4 seems very very aggressive) and no minimum on SR is probably fine as well.

Leafkiller and I talked about this pretty extensively last night, the current problem the action list is that a aggressive FB when Rip and SR have similar remaining durations results in extended Rip downtime and we're not doing enough to prevent that. There are two main ways we can fix this in the rotation:

Cast additional Savage Roars to desynchronize our Rip and SR timer.

Restrict Ferocious Bite casts while Rip and SR are synchronized.

The latter has a lot in common with the FB conditional you posted, that approach would work something like the following:

When Rip is greater than x and SR is at least y longer than Rip

When Rip is greater than x and Rip is at least y longer than SR

When Rip and SR are greater than z

Edit(s):I don't understand what your intent of putting dot.rip.remains>cooldown.tigers_fury.remains in that line was. Perhaps a guard to make sure it's not taking priority over the rip line? In that case you should be putting it below the rip line and not including that conditional.

I'm still thinking that a pool_resource line before the aggressive FB lines will perform significantly better than a hard energy requirement if it's designed correctly. Edit: Picked up a gain of something like 90 DPS.

I was able to pick up a significant gain (200/300 DPS? idk exact yet) by changing the SR<1 line to SR.down and moving the SR<3 lines below rip and adding buff.savage_roar.remains+2>dot.rip.remains. This makes it so that the sim prioritizes keeping SR up over Rip, but it prioritizes refreshing SR below Rip.

Broke the 123k mark. Trying to refine the advanced conditionals for FB to surpass the simple >6 one.

Last edited by aggixx on Mon Nov 26, 2012 7:47 am, edited 2 times in total.

The whole idea was at first to give the script a way to recognize that tiger's fury is about to come off cooldown and thus loosen the requirements on bite (seeing as there will be 60 additional energy to build CPs with, effectively reducing Rip downtime).

&cooldown.tigers_fury.remains<dot.rip.remains&dot.rip.remains>=4

Then, to avoid having it cast bites at obviously bad times, for example when both rip and SR have only a few sec remaining, I added more conditions. It is still a rough draft at this point, obviously. But it feels intuitive that the conditions don't need to be strict for bite when you have TF available to "save" the timers with. To come up with the numbers I imagined the time required to build 5 CPs to be lower than 7 seconds (giving time to apply rip before SR falls off).

Edit: There should be no "other case" where SR falls off 4 seconds before rip. I don't get where you see that.

buff.savage_roar.remains>=dot.rip.remains+4&dot.rip.remains>=4

should ensure that the remaining duration of SR always is at least 4 seconds larger than that of rip. Or so is my thought anyway.

Ok, I read the line as a different intent than what you designed it for and took it a completely different direction. I have thought of having more relaxed requirements if there is an upcoming TF to carry the rip uptime but I haven't got around to trying such a thing.

Something to keep in mind is that your line may be inadvertently providing a DPS gain for a completely different reason than you designed it for. In this case I think it may have come out to a gain because it's allowing the sim to be even more aggressive when it knows that the timers are desynched, not merely because of the TF CD.

That could very well be the case. I like the ideas for solving the problem with rip downtime.

Edit: Actually, I will try putting very harsh requirements on bite except just before TF and see what happens. I'm expecting rip uptimes to increase by a few percentage units and a significantly lower amount of bites.Edit 2: It doesn't seem to be an increase, at least not the way I tried to implement it.

I was able to get to 123,177 DPS over 250,000 iterations with the following profile. My main problem is I have basically no understanding of why the numbers in the ferocious bite lines are set the way they are other than that they yield the most DPS of anything I tried. I also only changed the FBs for DoC as I didn't test the other two talents.

I still think the energy pooling should take into account Berserk. It makes no sense to pool to 50 energy when the most energy the FB will use is 25, not to mention the potential to miss an extra attack during Berserk. I was thinking along the lines of changing the energy<50 to (energy<50&buff.berserk.down|energy<25&buff.berserk.up).

Also, in the energy pooling statements you have outside of BitW, you are still pooling even if OOC is up which you did take care of in the first energy pooling conditional. I am wondering about using !buff.omen_of_clarity.react vs !buff.omen_of_clarity.up. Do you know how ".react" works compared to ".up"? I am not sure exactly how ".react" is coded.

Edit: Handling pooling lines that are separated into three places is going to be interesting in Ovale...

I already checked out the omen of clarity thing, caring about OoC on the non-BitW FBs is a DPS loss and caring about them on BitW is DPS neutral (I just edited the post above with a couple minor changes one of which was removing OOC check on the bitw one to make things consistent, but it doesn't really matter).

The short explanation of .react is that returns a boolean value of whether or not a buff was up x seconds ago where x is the sim's reaction time. It's used for a realistic modelling of non-predictable procs whereas .up is used for things that the user themself triggered and already know that the buff is up before they could possibly react to the buff being received.

This is my final update for today I think, I'm at 123330 DPS or so. I added hard thrashes during Berserk for SotF DoC (since it has issues with energy capping, if you're only running SotF or only DoC then it's neutral at best) as well as the modified pooling threshold while under berserk.