Register

Simulationcraft - Feral rotation discussion and script

Face-rippin fun.

Moderator: Forum Administrators

Posts: 22
Joined: Thu Sep 20, 2012 2:54 pm

Re: Simulationcraft - Feral rotation discussion

Postby Abranor » Fri Nov 09, 2012 12:11 pm

Thanks!

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Thu Nov 22, 2012 3:38 pm

Some things I've been thinking of for potential DPS gains:
  • For DoC, only HT during Berserk for Rip and maybe FB. Doing a 4/5 CP HT during berserk just because you're going to cast SR/just to buff 2 shreds is almost surely a loss.
  • Disable the SR<3 lines during Berserk. This will encourage it to put up longer SRs by only using the SR<1 line during Berserk.

Edit: Tried both of them and they were both losses somehow, at least the ways I tried to implement it.
Image

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sat Nov 24, 2012 12:42 pm

By adding the conditions
&buff.savage_roar.remains>=10&energy>=50
to 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

I gained 570 dps (~0,58%, 98300->98870) with my gear http://eu.battle.net/wow/en/character/t ... ree/simple

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

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Sat Nov 24, 2012 3:01 pm

@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.

I will test out your changes shortly and go from there.

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Sat Nov 24, 2012 3:18 pm

Question, did you test profiles other than DoC with your changes?

Edit: Testing HotW with T14BiS gear, the change looks like about a 400dps loss.

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sat Nov 24, 2012 3:33 pm

I did not bother testing other specs than DoC, I'm afraid. I'll continue tweaking the codes if I see something I can try to improve on.

EDIT: Running a 50k iteration sim for every change really gets me into thinking I need a NASA computer...

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Sat Nov 24, 2012 3:38 pm

You might try bounding your conditional to only work if you don't have the 4 piece set bonus:

&((buff.savage_roar.remains>=10&energy>=50&tier14_4pc_melee=0)|tier14_4pc_melee=1)

Edit: this is testing if the 4 piece is a deciding factor. The other thing that could come into play is crit for combo point generation...

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sat Nov 24, 2012 4:42 pm

It seems as though further straining on the ferocious bite requirements gives an increased DPS through Rip uptime. The sweet spot looks to be
&buff.savage_roar.remains>=4&energy>=40.

I tested surrounding SR and energy values. Energy seems especially interesting. I didn't figure out why, but changing to 41 or 39 both lose roughly 40 dps.

Edit: 122082 dps (error: 25.63)
Edit 2: This could be a language issue (noob coder here) but shouldn't the condition you proposed look more like:

&((buff.savage_roar.remains>=10,tier14_4pc_melee=0)|buff.savage_roar.remains>=1,tier14_4pc_melee=1)?

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.

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Sat Nov 24, 2012 5:53 pm

Referee wrote:&((buff.savage_roar.remains>=10,tier14_4pc_melee=0)|buff.savage_roar.remains>=1,tier14_4pc_melee=1)

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.

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sat Nov 24, 2012 6:05 pm

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.

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Sat Nov 24, 2012 6:06 pm

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**

I have not tested this with NV.

* &buff.savage_roar.remains>=4&energy>=40

** &((talent.dream_of_cenarius.enabled&buff.savage_roar.remains>=4&energy>=40)|!talent.dream_of_cenarius.enabled)

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sat Nov 24, 2012 6:23 pm

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.

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sun Nov 25, 2012 8:55 pm

I was able to squeeze out an additional 2-300 dps with the BiS profile and DoC by adding a ferocious bite at a very high priority but with many conditionals.

actions+=/ferocious_bite,if=combo_points>=5&dot.rip.remains>cooldown.tigers_fury.remains&energy>=50&
buff.savage_roar.remains>=dot.rip.remains+4&dot.rip.remains>=4

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.

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Sun Nov 25, 2012 9:07 pm

Referee wrote:I was able to squeeze out an additional 2-300 dps with the BiS profile and DoC by adding a ferocious bite at a very high priority but with many conditionals.

actions+=/ferocious_bite,if=combo_points>=5&dot.rip.remains>cooldown.tigers_fury.remains&energy>=50&buff.savage_roar.remains>=dot.rip.remains+4&dot.rip.remains>=4

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.

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Sun Nov 25, 2012 9:35 pm

The latest idea,

actions+=/ferocious_bite,if=combo_points>=5&dot.rip.remains>cooldown.tigers_fury.remains&energy>=50&
buff.savage_roar.remains>=dot.rip.remains+4&dot.rip.remains>=4,

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.

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Mon Nov 26, 2012 6:04 am

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.

I'll mess with it a bit and see if I work anything out.
Image

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Mon Nov 26, 2012 6:26 am

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:

  1. Cast additional Savage Roars to desynchronize our Rip and SR timer.
  2. 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.
Image

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Mon Nov 26, 2012 7:34 am

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.

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Mon Nov 26, 2012 7:50 am

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.
Image

Posts: 13
Joined: Sat Nov 24, 2012 11:01 am

Re: Simulationcraft - Feral rotation discussion

Postby Referee » Mon Nov 26, 2012 8:07 am

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.

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Mon Nov 26, 2012 11:46 am

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.
Spoiler: show
Code: Select all
#!./simc

druid="Druid_Feral_T14H"
origin="unknown"
level=90
race=troll
spec=feral
role=attack
position=back
professions=engineering=600/inscription=600
talents=010102
glyphs=savagery

$(rip_remains)=(dot.rip.remains+(8-(dot.rip.ticks_added*2)))

actions.precombat=flask,type=spring_blossoms
actions.precombat+=/food,type=sea_mist_rice_noodles
actions.precombat+=/mark_of_the_wild,if=!aura.str_agi_int.up
actions.precombat+=/healing_touch,if=!buff.dream_of_cenarius_damage.up&talent.dream_of_cenarius.enabled
actions.precombat+=/cat_form
actions.precombat+=/savage_roar
actions.precombat+=/snapshot_stats
actions.precombat+=/virmens_bite_potion
actions.precombat+=/treants,if=talent.force_of_nature.enabled

actions=auto_attack
actions+=/berserking
actions+=/use_item,name=eternal_blossom_grips,if=buff.heart_of_the_wild.up
#actions+=/heart_of_the_wild,if=enabled
actions+=/virmens_bite_potion,if=buff.heart_of_the_wild.up|target.time_to_die<=40
actions+=/wrath,if=cast_time<buff.heart_of_the_wild.remains

actions+=/cat_form,if=buff.cat_form.down
actions+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
actions+=/savage_roar,if=buff.savage_roar.down
actions+=/skull_bash_cat

actions+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&combo_points>=4&buff.dream_of_cenarius_damage.stack<2
actions+=/healing_touch,if=talent.dream_of_cenarius.enabled&prev.natures_swiftness

actions+=/use_item,name=eternal_blossom_grips,sync=tigers_fury
actions+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
actions+=/natures_vigil,if=buff.berserk.up&talent.natures_vigil.enabled
actions+=/incarnation,if=buff.berserk.up&talent.incarnation.enabled

actions+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=2&target.health.pct<=25
actions+=/faerie_fire,if=debuff.weakened_armor.stack<3

actions+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3&buff.dream_of_cenarius_damage.down

actions+=/ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)

actions+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.dream_of_cenarius_damage.down&target.health.pct<25

actions+=/natures_swiftness,if=talent.dream_of_cenarius.enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
actions+=/virmens_bite_potion,if=(talent.dream_of_cenarius.enabled&combo_points>=5&target.health.pct<=25&buff.dream_of_cenarius_damage.up)|(!talent.dream_of_cenarius.enabled&buff.berserk.up&target.health.pct<=25)|target.time_to_die<=40
actions+=/rip,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<tick_multiplier&target.health.pct<=25&target.time_to_die>30
actions+=/rip,if=combo_points>=5&tick_multiplier%dot.rip.multiplier>1.14&target.health.pct<=25&target.time_to_die>30
actions+=/pool_resource,wait=0.1,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25&energy<50&talent.dream_of_cenarius.enabled
actions+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25

actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&buff.dream_of_cenarius_damage.up
actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<=tick_multiplier&target.health.pct>25

actions+=/natures_swiftness,if=talent.dream_of_cenarius.enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&dot.rip.remains<3&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)&target.health.pct>25
actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)

actions+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&talent.dream_of_cenarius.enabled&buff.savage_roar.remains+2>dot.rip.remains
actions+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&!talent.dream_of_cenarius.enabled&!(dot.rip.remains<2.0&combo_points>=5&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains))

actions+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3

actions+=/ravage,extend_rip=1,if=dot.rip.ticking&dot.rip.remains<=4
actions+=/shred,extend_rip=1,if=dot.rip.ticking&dot.rip.remains<=4

actions+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)

actions+=/pool_resource,wait=0.1,if=talent.dream_of_cenarius.enabled&combo_points>=5&energy<50&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4.5
actions+=/pool_resource,wait=0.1,if=talent.dream_of_cenarius.enabled&combo_points>=5&energy<50&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6.5
actions+=/ferocious_bite,if=talent.dream_of_cenarius.enabled&combo_points>=5&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4
actions+=/ferocious_bite,if=talent.dream_of_cenarius.enabled&combo_points>=5&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6
actions+=/pool_resource,wait=0.1,if=talent.dream_of_cenarius.enabled&combo_points>=5&energy<50&$(rip_remains)>=10.5
actions+=/ferocious_bite,if=talent.dream_of_cenarius.enabled&combo_points>=5&$(rip_remains)>=10

actions+=/ferocious_bite,if=combo_points>=5&($(rip_remains)>10|$(rip_remains)>6&buff.berserk.up)&dot.rip.ticking

actions+=/rake,if=target.time_to_die>3&dot.rake.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rake.multiplier<=tick_multiplier
actions+=/rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1.12
actions+=/rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<3.0&(buff.berserk.up|(cooldown.tigers_fury.remains+0.8)>=dot.rake.remains|energy>60)

actions+=/ravage,if=buff.omen_of_clarity.react
actions+=/shred,if=buff.omen_of_clarity.react
actions+=/ravage,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.remains>1&!(energy+(energy.regen*(buff.predatory_swiftness.remains-1))<(4-combo_points)*20)
actions+=/ravage,if=!talent.dream_of_cenarius.enabled&talent.soul_of_the_forest.enabled&combo_points<5&(energy+(energy.regen*(4-combo_points))>(5-combo_points)*20)
actions+=/ravage,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions+=/ravage,if=target.time_to_die<=8.5
actions+=/shred,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.remains>1&!(energy+(energy.regen*(buff.predatory_swiftness.remains-1))<(4-combo_points)*20)
actions+=/shred,if=!talent.dream_of_cenarius.enabled&talent.soul_of_the_forest.enabled&combo_points<5&(energy+(energy.regen*(4-combo_points))>(5-combo_points)*20)
actions+=/shred,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions+=/shred,if=target.time_to_die<=8.5
actions+=/thrash_cat,if=target.time_to_die>=6&combo_points>=5&dot.thrash_cat.remains<6&(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions+=/thrash_cat,if=target.time_to_die>=6&combo_points>=5&dot.thrash_cat.remains<6&cooldown.tigers_fury.remains<=3.0
actions+=/thrash_cat,if=target.time_to_die>=6&combo_points>=5&dot.thrash_cat.remains<6&energy.time_to_max<=1.0
actions+=/ravage,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions+=/ravage,if=cooldown.tigers_fury.remains<=3.0
actions+=/ravage,if=energy.time_to_max<=1.0
actions+=/shred,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions+=/shred,if=cooldown.tigers_fury.remains<=3.0
actions+=/shred,if=energy.time_to_max<=1.0
actions+=/treants,if=talent.force_of_nature.enabled
actions+=/natures_swiftness,if=buff.natures_vigil.up&!buff.berserk.up&!buff.predatory_swiftness.up
actions+=/healing_touch,if=buff.natures_vigil.up&(buff.predatory_swiftness.up|buff.natures_swiftness.up)&!buff.berserk.up

head=eternal_blossom_headpiece,id=86925,gems=agile_primal_80agi_160hit_180agi,reforge=exp_crit
neck=choker_of_the_unleashed_storm,id=86953
shoulders=eternal_blossom_spaulders,id=86927,gems=80agi_160hit_60agi,enchant=520agi_100crit,reforge=haste_mastery
back=legbreaker_greatcloak,id=86963,enchant=180hit,reforge=crit_exp
chest=eternal_blossom_raiment,id=86923,gems=80agi_160mastery_80agi_160mastery_120mastery,enchant=80all
wrists=bracers_of_unseen_strikes,id=86954,enchant=180agi,reforge=haste_mastery
hands=eternal_blossom_grips,id=86924,enchant=170mastery,addon=synapse_springs_mark_ii,reforge=hit_mastery
waist=stalkers_cord_of_eternal_autumn,id=87180,gems=160agi_160agi,reforge=crit_mastery
legs=legguards_of_failing_purification,id=90504,gems=160agi_80agi_160hit_120agi,enchant=285agi_165crit,reforge=hit_exp
feet=boots_of_the_still_breath,id=86943,gems=160agi,enchant=140mastery,reforge=haste_mastery
finger1=regails_band_of_the_endless,id=90503,reforge=haste_mastery
finger2=painful_thorned_ring,id=86974,reforge=exp_crit
trinket1=terror_in_the_mists,id=87167
trinket2=bottle_of_infinite_stars,id=87057
main_hand=gaorei_staff_of_the_legendary_protector,id=87156,gems=500agi,enchant=dancing_steel,reforge=exp_hit,addon=7932sp

# Gear Summary
# gear_strength=80
# gear_agility=17296
# gear_stamina=20502
# gear_intellect=80
# gear_spirit=80
# gear_expertise_rating=2537
# gear_hit_rating=2545
# gear_crit_rating=5124
# gear_haste_rating=1351
# gear_mastery_rating=8406
# gear_armor=18644
# meta_gem=agile_primal
# tier14_2pc_melee=1
# tier14_4pc_melee=1
# hands=eternal_blossom_grips,heroic=1,addon=synapse_springs_mark_ii
# main_hand=gaorei_staff_of_the_legendary_protector,heroic=1,weapon=staff_3.30speed_13314min_19972max,enchant=dancing_steel
Last edited by aggixx on Mon Nov 26, 2012 2:18 pm, edited 1 time in total.
Image

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Mon Nov 26, 2012 2:14 pm

@aggixx

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...

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Mon Nov 26, 2012 2:25 pm

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.

FB Berserk stuff, yep, need to work on that.
Image

Exalted
User avatar
Posts: 1573
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion

Postby aggixx » Mon Nov 26, 2012 6:22 pm

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.
Spoiler: show
Code: Select all
#!./simc

druid="Druid_Feral_T14H"
origin="unknown"
level=90
race=troll
spec=feral
role=attack
position=back
professions=engineering=600/inscription=600
talents=010102
glyphs=savagery

$(rip_remains)=(dot.rip.remains+(8-(dot.rip.ticks_added*2)))

actions.precombat=flask,type=spring_blossoms
actions.precombat+=/food,type=sea_mist_rice_noodles
actions.precombat+=/mark_of_the_wild,if=!aura.str_agi_int.up
actions.precombat+=/healing_touch,if=!buff.dream_of_cenarius_damage.up&talent.dream_of_cenarius.enabled
actions.precombat+=/cat_form
actions.precombat+=/savage_roar
actions.precombat+=/snapshot_stats
actions.precombat+=/virmens_bite_potion
actions.precombat+=/treants,if=talent.force_of_nature.enabled

actions=auto_attack
actions+=/berserking
actions+=/use_item,name=eternal_blossom_grips,if=buff.heart_of_the_wild.up
#actions+=/heart_of_the_wild,if=enabled
actions+=/virmens_bite_potion,if=buff.heart_of_the_wild.up|target.time_to_die<=40
actions+=/wrath,if=cast_time<buff.heart_of_the_wild.remains

actions+=/cat_form,if=buff.cat_form.down
actions+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
actions+=/savage_roar,if=buff.savage_roar.down
actions+=/skull_bash_cat

actions+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&combo_points>=4&buff.dream_of_cenarius_damage.stack<2
actions+=/healing_touch,if=talent.dream_of_cenarius.enabled&prev.natures_swiftness

actions+=/use_item,name=eternal_blossom_grips,sync=tigers_fury
actions+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
actions+=/natures_vigil,if=buff.berserk.up&talent.natures_vigil.enabled
actions+=/incarnation,if=buff.berserk.up&talent.incarnation.enabled

actions+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=2&target.health.pct<=25
actions+=/faerie_fire,if=debuff.weakened_armor.stack<3

actions+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3&buff.dream_of_cenarius_damage.down

actions+=/ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)

actions+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.dream_of_cenarius_damage.down&target.health.pct<25

actions+=/natures_swiftness,if=talent.dream_of_cenarius.enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
actions+=/virmens_bite_potion,if=(talent.dream_of_cenarius.enabled&combo_points>=5&target.health.pct<=25&buff.dream_of_cenarius_damage.up)|(!talent.dream_of_cenarius.enabled&buff.berserk.up&target.health.pct<=25)|target.time_to_die<=40
actions+=/rip,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<tick_multiplier&target.health.pct<=25&target.time_to_die>30
actions+=/rip,if=combo_points>=5&tick_multiplier%dot.rip.multiplier>1.14&target.health.pct<=25&target.time_to_die>30
actions+=/pool_resource,wait=0.1,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&talent.dream_of_cenarius.enabled
actions+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25

actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&buff.dream_of_cenarius_damage.up
actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<=tick_multiplier&target.health.pct>25

actions+=/natures_swiftness,if=talent.dream_of_cenarius.enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&dot.rip.remains<3&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)&target.health.pct>25
actions+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)

actions+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&talent.dream_of_cenarius.enabled&buff.savage_roar.remains+2>dot.rip.remains
actions+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&!talent.dream_of_cenarius.enabled&!(dot.rip.remains<2.0&combo_points>=5&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains))

actions+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3

actions+=/ravage,extend_rip=1,if=dot.rip.ticking&dot.rip.remains<=4
actions+=/shred,extend_rip=1,if=dot.rip.ticking&dot.rip.remains<=4

actions+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)

actions+=/pool_resource,wait=0.1,if=talent.dream_of_cenarius.enabled&combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4.5
actions+=/pool_resource,wait=0.1,if=talent.dream_of_cenarius.enabled&combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6.5
actions+=/ferocious_bite,if=talent.dream_of_cenarius.enabled&combo_points>=5&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4
actions+=/ferocious_bite,if=talent.dream_of_cenarius.enabled&combo_points>=5&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6
actions+=/pool_resource,wait=0.1,if=talent.dream_of_cenarius.enabled&combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&$(rip_remains)>=10.5
actions+=/ferocious_bite,if=talent.dream_of_cenarius.enabled&combo_points>=5&$(rip_remains)>=10

actions+=/ferocious_bite,if=combo_points>=5&($(rip_remains)>10|($(rip_remains)>6&buff.berserk.up))&dot.rip.ticking

actions+=/rake,if=target.time_to_die>3&dot.rake.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rake.multiplier<=tick_multiplier
actions+=/rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1.12
actions+=/rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<3.0&(buff.berserk.up|(cooldown.tigers_fury.remains+0.8)>=dot.rake.remains|energy>60)

actions+=/ravage,if=buff.omen_of_clarity.react
actions+=/shred,if=buff.omen_of_clarity.react
actions+=/ravage,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions+=/shred,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions+=/thrash_cat,if=target.time_to_die>=15&dot.thrash_cat.remains<3&buff.berserk.up&talent.soul_of_the_forest.enabled&talent.dream_of_cenarius.enabled
actions+=/ravage,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.remains>1&!(energy+(energy.regen*(buff.predatory_swiftness.remains-1))<(4-combo_points)*20)
actions+=/ravage,if=!talent.dream_of_cenarius.enabled&talent.soul_of_the_forest.enabled&combo_points<5&(energy+(energy.regen*(4-combo_points))>(5-combo_points)*20)
actions+=/ravage,if=target.time_to_die<=8.5
actions+=/shred,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.remains>1&!(energy+(energy.regen*(buff.predatory_swiftness.remains-1))<(4-combo_points)*20)
actions+=/shred,if=!talent.dream_of_cenarius.enabled&talent.soul_of_the_forest.enabled&combo_points<5&(energy+(energy.regen*(4-combo_points))>(5-combo_points)*20)
actions+=/shred,if=target.time_to_die<=8.5
actions+=/thrash_cat,if=target.time_to_die>=6&combo_points>=5&dot.thrash_cat.remains<6&(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions+=/thrash_cat,if=target.time_to_die>=6&combo_points>=5&dot.thrash_cat.remains<6&cooldown.tigers_fury.remains<=3.0
actions+=/thrash_cat,if=target.time_to_die>=6&combo_points>=5&dot.thrash_cat.remains<6&energy.time_to_max<=1.0
actions+=/ravage,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions+=/ravage,if=cooldown.tigers_fury.remains<=3.0
actions+=/ravage,if=energy.time_to_max<=1.0
actions+=/shred,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions+=/shred,if=cooldown.tigers_fury.remains<=3.0
actions+=/shred,if=energy.time_to_max<=1.0
actions+=/treants,if=talent.force_of_nature.enabled
actions+=/natures_swiftness,if=buff.natures_vigil.up&!buff.berserk.up&!buff.predatory_swiftness.up
actions+=/healing_touch,if=buff.natures_vigil.up&(buff.predatory_swiftness.up|buff.natures_swiftness.up)&!buff.berserk.up

head=eternal_blossom_headpiece,id=86925,gems=agile_primal_80agi_160hit_180agi,reforge=exp_crit
neck=choker_of_the_unleashed_storm,id=86953
shoulders=eternal_blossom_spaulders,id=86927,gems=80agi_160hit_60agi,enchant=520agi_100crit,reforge=haste_mastery
back=legbreaker_greatcloak,id=86963,enchant=180hit,reforge=crit_exp
chest=eternal_blossom_raiment,id=86923,gems=80agi_160mastery_80agi_160mastery_120mastery,enchant=80all
wrists=bracers_of_unseen_strikes,id=86954,enchant=180agi,reforge=haste_mastery
hands=eternal_blossom_grips,id=86924,enchant=170mastery,addon=synapse_springs_mark_ii,reforge=hit_mastery
waist=stalkers_cord_of_eternal_autumn,id=87180,gems=160agi_160agi,reforge=crit_mastery
legs=legguards_of_failing_purification,id=90504,gems=160agi_80agi_160hit_120agi,enchant=285agi_165crit,reforge=hit_exp
feet=boots_of_the_still_breath,id=86943,gems=160agi,enchant=140mastery,reforge=haste_mastery
finger1=regails_band_of_the_endless,id=90503,reforge=haste_mastery
finger2=painful_thorned_ring,id=86974,reforge=exp_crit
trinket1=terror_in_the_mists,id=87167
trinket2=bottle_of_infinite_stars,id=87057
main_hand=gaorei_staff_of_the_legendary_protector,id=87156,gems=500agi,enchant=dancing_steel,reforge=exp_hit,addon=7932sp

# Gear Summary
# gear_strength=80
# gear_agility=17296
# gear_stamina=20502
# gear_intellect=80
# gear_spirit=80
# gear_expertise_rating=2537
# gear_hit_rating=2545
# gear_crit_rating=5124
# gear_haste_rating=1351
# gear_mastery_rating=8406
# gear_armor=18644
# meta_gem=agile_primal
# tier14_2pc_melee=1
# tier14_4pc_melee=1
# hands=eternal_blossom_grips,heroic=1,addon=synapse_springs_mark_ii
# main_hand=gaorei_staff_of_the_legendary_protector,heroic=1,weapon=staff_3.30speed_13314min_19972max,enchant=dancing_steel
Image

Exalted
User avatar
Posts: 1147
Joined: Fri Jun 04, 2010 4:28 am

Re: Simulationcraft - Feral rotation discussion

Postby Leafkiller » Mon Nov 26, 2012 6:36 pm

Should I just replace the existing script in the Experimental thread with this one?

PreviousNext

Return to Kitty DPS

Who is online

Users browsing this forum: Google [Bot] and 5 guests