Register

Simulationcraft - Feral rotation discussion and script

Face-rippin fun.

Moderator: Forum Administrators

Exalted
User avatar
Posts: 894
Joined: Tue Oct 23, 2012 7:15 am

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Wed Jan 16, 2013 4:37 am

Unfortunately I'm still working on my Brawl stuff so I wasn't able to use my new code, but I was able to hack into Catus simc-support for /run_action_list and /swap_action_list which let me support your latest action list (from above).

For my first test, I replaced the 1.12 coeff with a variable that I can modify in my sim, and then iterated 10k-sample sims from [0.9, 1.3] step 0.005.

To my surprise, there exists a nice structure to the data:
http://raffy.antistupid.com/wow/catsim/ ... iplier.png

I computed everything relative to "clip if better"
/rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1

Note: this simulation is specific to the gear in the profile above (T14 Heroic, no upgrade, DoC spec, etc...)

As the plot shows, as long as new Rake ticks harder than the current Rake, it is a DPS gain to clip Rake.

Caution: this is just my first attempt -- there might be bugs. I'll generate some more results with larger sample sizes soon. I also want to record the Total Rake damage to see if that is changing with aggressive Rake clipping. I also want to play with Rip too.

Edit:

Here is another plot relative to the existence of the clip statement:
http://raffy.antistupid.com/wow/catsim/ ... plier2.png
(blue = multipler > 1 ie. dps gain; red = multiplier <= 1 ie. dps neutral or negative)

Edit:

Increased the sim count and removed the 7.5 minute hard combat stop (that I forgot to remove).
I also recorded the Rake Damage Percent. Same trend as above:
http://raffy.antistupid.com/wow/catsim/ ... plier4.png

Edit:

The fact that negative coeff Rake clipping actually is DPS increase, is basically due to staggered buff fades and no lookahead-style damage modifier support. If instead, the damage modifier was computed twice: relative to the current time and relative to a future time, we could squeeze out more DPS. Catus has support for this.

The situation arises when the current Rake is a DPS loss, but the Rake you'd apply 2-5 seconds now is an even bigger DPS loss. Examples of this happening are things like Potion (25sec) overlapping Springs (10sec), Dancing Steel (12sec), and Bottle (20sec)

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Wed Jan 16, 2013 1:13 pm

Very interesting, I honestly did not expect for it to be gain to essentially clip as aggressively as possible for the most miniscule of damage gains. It definitely feels weird how much clipping there already is in the Ovale script and having that go up more just seems crazy.

Is there a (reasonable) way to refine the data at all? I'm tempted to think that the DPS drop off is just very very slow until you get up to roughly the 1.15ish range and that 1 is the optimal value, but I really shouldn't make that assumption. The data is too indeterminate to find an actual peak.

raffy wrote:The situation arises when the current Rake is a DPS loss, but the Rake you'd apply 2-5 seconds now is an even bigger DPS loss. Examples of this happening are things like Potion (25sec) overlapping Springs (10sec), Dancing Steel (12sec), and Bottle (20sec)


Yeah, this is very noticeable in practice in your opener, where you Rake tends to need refreshing just after all of your cooldowns start falling off. It's much better to refresh it a little earlier if you can get it with pot + both trinkets vs. refreshing later and none at all.

That's not something that I think is really worth worrying about though, I would just leave that for the player to figure out.

PS: I'm jelly of your graphs.


Edit: Oh, well no wonder refreshing rake so aggressively is a gain.
Mangle direct damage: 67056
Shred direct damage: 84081
Rake average tick: 75581 (the direct damage is a tick)

Oddly enough, I'm still having trouble using more accurate damage comparisons and getting a gain out of it. I tried a couple things, one of which was essentially trying to calculate the damage of the rake:
((99+(0.3*attack_power))*multiplier)%((99+(0.3*dot.rake.attack_power))*dot.rake.multiplier)>1
and it lost about 1250 DPS.
Image

Exalted
User avatar
Posts: 894
Joined: Tue Oct 23, 2012 7:15 am

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Wed Jan 16, 2013 5:59 pm

Oddly enough, I'm still having trouble using more accurate damage comparisons and getting a gain out of it. I tried a couple things, one of which was essentially trying to calculate the damage of the rake:
((99+(0.3*attack_power))*multiplier)%((99+(0.3*dot.rake.attack_power))*dot.rake.multiplier)>1
and it lost about 1250 DPS.

Can you confirm that this prevents back to back Rake via combat log? Or can you reveal the Rake damage percentage?

I can focus on this when I get home to make sure I didn't goof something. Before I left work, I glanced at a few combat logs and didn't see anything odd when I forced the tick ratio to be >1.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Wed Jan 16, 2013 10:00 pm

Well, the line doesn't cast at all. Every solution I've tried to have a more accurate damage calculation it always fails and is either true almost all of the time or never so the damage goes to the shitter.
Image

Exalted
User avatar
Posts: 894
Joined: Tue Oct 23, 2012 7:15 am

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Wed Jan 16, 2013 10:52 pm

Does the naked "attack_power" expression exist? I can't find it via google code search.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Thu Jan 17, 2013 5:46 am

Talked to some people on IRC and apparently "attack_power" actually refers to the same thing as dot.rake.attack_power. The line I'm using right now is:

actions.doc+=/rake,if=target.time_to_die-dot.rake.remains>3&((99+(0.3*stat.attack_power))*multiplier)%((99+(0.3*attack_power))*dot.rake.multiplier)>1

Will post a report in a little bit.

Edit: This expression is obviously not working either. 1 is a big DPS loss and anything above 1 is literally identical and is still a DPS loss.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Thu Jan 17, 2013 2:53 pm

Just checked in a change to init_actions for feral. The action list generated by SimC is now that same as the current action list being developed in this thread with the exception that I removed any lines involving dot damage calculation, as well removed a couple things here and there that were needlessly complex for negligible or zero DPS gain. During working on this I did find some changes to the main action list so I'll post the most current version here:

Spoiler: show
#!./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+=/treants,if=talent.force_of_nature.enabled
actions.precombat+=/savage_roar
actions.precombat+=/snapshot_stats
actions.precombat+=/virmens_bite_potion

actions=/swap_action_list,name=doc,if=talent.dream_of_cenarius.enabled
actions+=/swap_action_list,name=nondoc,if=!talent.dream_of_cenarius.enabled

actions.doc=auto_attack
actions.doc+=/skull_bash_cat
actions.doc+=/berserking
actions.doc+=/healing_touch,if=buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
actions.doc+=/savage_roar,if=buff.savage_roar.down
actions.doc+=/faerie_fire,if=debuff.weakened_armor.stack<3
actions.doc+=/healing_touch,if=buff.predatory_swiftness.up&(combo_points>=4|(set_bonus.tier15_2pc_melee&combo_points>=3))&buff.dream_of_cenarius_damage.stack<2
actions.doc+=/healing_touch,if=buff.natures_swiftness.up
actions.doc+=/incarnation,if=enabled&energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
actions.doc+=/use_item,name=eternal_blossom_grips,sync=tigers_fury
actions.doc+=/tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
actions.doc+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
actions.doc+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
actions.doc+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
actions.doc+=/ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
actions.doc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
actions.doc+=/natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
actions.doc+=/virmens_bite_potion,if=(combo_points>=5&target.health.pct<=25&buff.dream_of_cenarius_damage.up)|target.time_to_die<=40
actions.doc+=/rip,line_cd=30,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&target.health.pct<=25&target.time_to_die>30
actions.doc+=/rip,if=combo_points>=5&tick_multiplier%dot.rip.multiplier>1.14&target.health.pct<=25&target.time_to_die>30
actions.doc+=/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))
actions.doc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
actions.doc+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&buff.dream_of_cenarius_damage.up
actions.doc+=/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
actions.doc+=/natures_swiftness,if=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.doc+=/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.doc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
actions.doc+=/run_action_list,name=filler,if=dot.rip.ticking&dot.rip.remains<=4
actions.doc+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)
actions.doc+=/pool_resource,wait=0.1,if=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.doc+=/pool_resource,wait=0.1,if=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.doc+=/ferocious_bite,if=combo_points>=5&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4
actions.doc+=/ferocious_bite,if=combo_points>=5&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6
actions.doc+=/pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&$(rip_remains)>=10.5
actions.doc+=/ferocious_bite,if=combo_points>=5&$(rip_remains)>=10
actions.doc+=/rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rake.multiplier<=tick_multiplier
actions.doc+=/rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1.12
actions.doc+=/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.doc+=/pool_resource,wait=0.1,for_next=1
actions.doc+=/thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&($(rip_remains)>=4|buff.berserk.up)
actions.doc+=/run_action_list,name=filler,if=buff.omen_of_clarity.react
actions.doc+=/run_action_list,name=filler,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions.doc+=/run_action_list,name=filler,if=buff.predatory_swiftness.remains>1
actions.doc+=/run_action_list,name=filler,if=target.time_to_die<=8.5
actions.doc+=/run_action_list,name=filler,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions.doc+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3.0
actions.doc+=/run_action_list,name=filler,if=energy.time_to_max<=1.0
actions.doc+=/treants,if=talent.force_of_nature.enabled

actions.nondoc=auto_attack
actions.nondoc+=/skull_bash_cat
actions.nondoc+=/berserking
#actions.nondoc+=/use_item,name=eternal_blossom_grips,if=buff.heart_of_the_wild.up
#actions.nondoc+=/heart_of_the_wild,if=enabled
#actions.nondoc+=/virmens_bite_potion,if=buff.heart_of_the_wild.up|target.time_to_die<=40
#actions.nondoc+=/wrath,if=cast_time<buff.heart_of_the_wild.remains
#actions.nondoc+=/cat_form,if=buff.cat_form.down
actions.nondoc+=/savage_roar,if=buff.savage_roar.down
actions.nondoc+=/faerie_fire,if=debuff.weakened_armor.stack<3
actions.nondoc+=/incarnation,if=enabled&energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
actions.nondoc+=/use_item,name=eternal_blossom_grips,sync=tigers_fury
actions.nondoc+=/tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
actions.nondoc+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
actions.nondoc+=/natures_vigil,if=enabled&buff.berserk.up
actions.nondoc+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=2&target.health.pct<=25
actions.nondoc+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
actions.nondoc+=/ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
actions.nondoc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
actions.nondoc+=/virmens_bite_potion,if=(buff.berserk.up&target.health.pct<=25)|target.time_to_die<=40
actions.nondoc+=/rip,if=combo_points>=5&tick_multiplier%dot.rip.multiplier>1.14&target.health.pct<=25&target.time_to_die>30
actions.nondoc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
actions.nondoc+=/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.nondoc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>$(rip_remains)
actions.nondoc+=/run_action_list,name=filler,if=dot.rip.ticking&dot.rip.remains<=4
actions.nondoc+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)
actions.nondoc+=/ferocious_bite,if=combo_points>=5&($(rip_remains)>10|($(rip_remains)>6&buff.berserk.up))&dot.rip.ticking
actions.nondoc+=/rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1.12
actions.nondoc+=/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.nondoc+=/pool_resource,wait=0.1,for_next=1
actions.nondoc+=/thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&($(rip_remains)>=4|buff.berserk.up)
actions.nondoc+=/run_action_list,name=filler,if=buff.omen_of_clarity.react
actions.nondoc+=/run_action_list,name=filler,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions.nondoc+=/run_action_list,name=filler,if=target.time_to_die<=8.5
actions.nondoc+=/run_action_list,name=filler,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions.nondoc+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3.0
actions.nondoc+=/run_action_list,name=filler,if=energy.time_to_max<=1.0
actions.nondoc+=/run_action_list,name=filler,if=talent.soul_of_the_forest.enabled&combo_points<5
actions.nondoc+=/treants,if=talent.force_of_nature.enabled
actions.nondoc+=/natures_swiftness,if=enabled&buff.natures_vigil.up&!buff.berserk.up&!buff.predatory_swiftness.up
actions.nondoc+=/healing_touch,if=buff.natures_vigil.up&(buff.predatory_swiftness.up|buff.natures_swiftness.up)&!buff.berserk.up

actions.filler=/thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&combo_points>=5
actions.filler+=/ravage
actions.filler+=/shred,if=buff.omen_of_clarity.react&buff.king_of_the_jungle.down
actions.filler+=/shred,if=buff.berserk.up&buff.king_of_the_jungle.down
actions.filler+=/mangle_cat,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))&buff.king_of_the_jungle.down
actions.filler+=/shred,if=buff.king_of_the_jungle.down

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=exp_mastery
back=legbreaker_greatcloak,id=86963,enchant=180crit
chest=eternal_blossom_raiment,id=86923,gems=80agi_160mastery_80agi_160mastery_120mastery,enchant=80all
wrists=smooth_beetle_wristbands,id=86995,enchant=180agi,reforge=exp_hit
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=80agi_160hit_160agi_60crit,reforge=crit_mastery
legs=legguards_of_failing_purification,id=90504,gems=160agi_80agi_160hit_120agi,enchant=285agi_165crit,reforge=hit_crit
feet=treads_of_deadly_secretions,id=86984,gems=80agi_160mastery_60exp,enchant=140agi,reforge=exp_hit
finger1=regails_band_of_the_endless,id=90503,reforge=haste_mastery
finger2=painful_thorned_ring,id=86974
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_crit,addon=7932sp


If you're interested in using the "simple" action list, you'll need to download and compile the most recent build of SimulationCraft, or wait til a new precompiled release.
Image

Honored
User avatar
Posts: 67
Joined: Sat Dec 08, 2012 3:35 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby Vami » Thu Jan 24, 2013 2:24 am

So, I've been thinking if using Mangle would be a dps up in a situation where you're basically energy starved and Rip has fell off the target. The plus side would be getting Rip back up faster, and the downside obviously that Mangle does less damage than Shred. (Of course you would still use any OCC procs on Thrash or Shred...) But as Mangle seems to be a dps-up for 2-target-dps, I'm fairly curious to see if this showed up to be one as well. I've tried it in action an it feels nicer to get Rip back up faster but I've got no idea if it really is a dps-up or not.

Would it be possible to sim this? Although, the dps difference probably won't be that big if there's any at all(?) I just thought it'd be interesting to see the results if someone has the time, knowledge and interest to do this kind of a sim study. (I personally am not that familiar with SimC that I could be trying this, or at least it'd take me unreasonably long to first learn the coding part and then try to figure out how to get the "if energystarved&&riphasfelloff --> use mangle instead of shred, but if OCC procs, use shred" in there.)

Posts: 11
Joined: Wed Oct 24, 2012 1:48 am

Re: Simulationcraft - Feral rotation discussion and script

Postby stormchen » Thu Jan 24, 2013 2:41 am

Vami wrote:So, I've been thinking if using Mangle would be a dps up in a situation where you're basically energy starved and Rip has fell off the target. The plus side would be getting Rip back up faster, and the downside obviously that Mangle does less damage than Shred.



Hey Vami!
I think your issue has allready been adresse in the latest simc action list that aggixx has posted.

Code: Select all
actions.filler+=/mangle_cat,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))&buff.king_of_the_jungle.down


If rip | savage roar are about to fall off, he uses mangle to gain CPs.

Honored
User avatar
Posts: 67
Joined: Sat Dec 08, 2012 3:35 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby Vami » Thu Jan 24, 2013 2:50 am

Ah, cool, looks like I've totally missed it if someone mentioned it here somewhere. Thanks! (Looks like it is a dps-up then, which is also nice.)

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Thu Jan 24, 2013 9:21 pm

Yup, it's not a huge gain, but it's also safe to assume that anytime you're really tight on CPs you can switch to mangle and pick up a little DPS (like trying to keep your bleeds up with the highest possible uptime on two targets at the same time).
Image

Revered
Posts: 219
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby Jeshu » Mon Jan 28, 2013 4:39 pm

I'm looking at r15408 of sc_druid.cpp and I see this line in the DoC action list:

Code: Select all
rip,line_cd=30,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&target.health.pct<=25&target.time_to_die>30

What is that action statement trying to express? The documentation for "line_cd=30" says only run this action every 30 seconds, but that seems a bit artificial to me. From what I understand of taking DoC, the goal is to sustain the strongest Rip possible throughout the execute phase by extending it via Ferocious Bite. Is that statement trying to express the following?

Put up Rip if it doesn't already exist, or if we would overwrite it with a much stronger Rip (because of Agi/Mastery/Crit procs).

If that's the case, then in Ovale, I would try to calculate:

  1. Total damage a Rip in the current conditions would do in the remaining time.
  2. Total damage the existing Rip would do in the remaining time.
  3. Damage from a Ferocious Bite in the current conditions.

If (1) > (2) + (3), then suggest overwriting Rip. Does this sound correct?

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Tue Jan 29, 2013 6:39 pm

Jeshu wrote:
Code: Select all
rip,line_cd=30,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&target.health.pct<=25&target.time_to_die>30

What is that action statement trying to express? The documentation for "line_cd=30" says only run this action every 30 seconds, but that seems a bit artificial to me. From what I understand of taking DoC, the goal is to sustain the strongest Rip possible throughout the execute phase by extending it via Ferocious Bite. Is that statement trying to express the following?

The line_cd is because we don't have true damage calculation in SimC so it's generally a safe assumption that applying Rip one time after you potion will allow you to have a stronger rip. Ovale doesn't need to worry about such a thing because we have true damage calculation as well as potion usage being something that's typically left in the user's hands.

You can actually see this quite clearly in the HTML report if you go to the rip section of the damage breakdown, expand it, and look at the DPS graph. The DPS jumps to above average in the last quarter of the fight and then stays there.

And yes, if you wanted to do the "perfect" calculation of when it is or isn't worth using rip vs FB in BitW range that would be what I would do as well. Potential problems are that:

  • In a realistic scenario you can't assume that the rip will be on the target all the way until it dies.
  • You have to account for that rip potentially getting overwritten by an even stronger rip in the damage calculation somehow.
Image

Revered
Posts: 219
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby Jeshu » Wed Jan 30, 2013 10:58 pm

I have another question with regards to the energy pooling in these two lines in the DoC rotation.
Code: Select all
/pool_resource,wait=0.25,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25&\
        ((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))
/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25

The tooltip for Ferocious Bite says that it costs 25 energy and it uses up to 25 additional energy to gain up to 100% increased damage.

I understand why we want to pool to 50 energy if Berserk is down -- a 5CP + 50 energy FB will do 200% damage. But why pool to 25 energy if Berserk is up? That only nets 150% damage.

Exalted
User avatar
Posts: 894
Joined: Tue Oct 23, 2012 7:15 am

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Thu Jan 31, 2013 3:55 am

Pre-MoP Berserk used to 1/2 the energy cost of FB (25) but leave the extra energy consumption untouched (for ~37.5 energy FB's during Berserk, which sucked). However in MoP, both are modified by Berserk, so 25 energy cost (12.5+12.5) for +100% damage (which is worth it on bleeder targets due to crit chance bonus).

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Thu Jan 31, 2013 4:12 am

What Raffy said, the max extra cost is halved and the extra damage is still calculated by extra cost divided by max extra cost. On a side note, the reason why I have .remains>1 instead of .up is so that it stops pooling early enough to get the FB off during the Berserk (since naturally it saves you energy to get as many casts off during the berserk as possible).
Image

Revered
Posts: 219
Joined: Tue Dec 14, 2010 5:34 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby Jeshu » Sat Feb 02, 2013 1:29 pm

I've released version 2.1.14 of Nerien's Ovale Scripts that has my own feral script based on the latest SimC:sc_druid.cpp code. I've only tested the non-DoC rotation (my druid is not level 90 yet). It's probably not 100% right, but it's a start.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sun Feb 03, 2013 6:25 pm

So I ran about 20 or 30 different sims with varying levels of gear and stat distributions to see if maintaining Thrash outside of OoC and pooling energy for DoC FBs was a DPS gain at all levels of gear, and I actually could not find a combination where it was a DPS loss. The difference in damage starts to get really negligible when you have a 461 item level set of gear stacked with haste rating, but it's still not a loss.
Image

Revered
User avatar
Posts: 326
Joined: Tue Oct 23, 2012 4:19 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Mon Feb 04, 2013 10:45 am

aggixx wrote:So I ran about 20 or 30 different sims with varying levels of gear and stat distributions to see if maintaining Thrash outside of OoC and pooling energy for DoC FBs was a DPS gain at all levels of gear, and I actually could not find a combination where it was a DPS loss. The difference in damage starts to get really negligible when you have a 461 item level set of gear stacked with haste rating, but it's still not a loss.


I assume the dot itself does not surpass rake in priority, does it? That would make the rotation extremely tedious.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Mon Feb 04, 2013 2:03 pm

Right, it's the last thing in the last before fillers (Shred/Mangle/Ravage).
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Feb 16, 2013 7:10 pm

About to commit the 1 sec GCD spell change, seems like around a 500 DPS gain, not too shabby.
Image

Exalted
User avatar
Posts: 1686
Joined: Mon May 24, 2010 10:21 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby Tinderhoof » Sat Feb 16, 2013 7:59 pm

Simwise it's better, but it will be even better for just the flow of the rotation.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Feb 23, 2013 10:27 am

Here's the most recent action list I'm using for testing, including support for rune of reorigination. Unfortunately if you're not using Rune of Reorigination you'll have to manually comment out any line that contains "rune_of_reorigination" (put a # sign before the respective line). The whole profile is included for the sake of inclusiveness, but everything (especially the gear) is highly subject to change.

Spoiler: show
#!./simc

druid="Druid_Feral_T15H"
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)))
$(rip_ratio)=((action.rip.attack_power*action.rip.tick_multiplier)%(dot.rip.attack_power*dot.rip.multiplier))
$(rake_ratio)=((action.rake.attack_power*action.rake.tick_multiplier)%(dot.rake.attack_power*dot.rake.multiplier))
$(time_til_bitw)=(target.time_to_die*(target.health.pct-25)%target.health.pct)

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+=/treants,if=talent.force_of_nature.enabled
actions.precombat+=/savage_roar
actions.precombat+=/snapshot_stats
actions.precombat+=/virmens_bite_potion

actions=/swap_action_list,name=doc,if=talent.dream_of_cenarius.enabled
actions+=/swap_action_list,name=nondoc,if=!talent.dream_of_cenarius.enabled

actions.doc=auto_attack
actions.doc+=/skull_bash_cat
actions.doc+=/berserking
actions.doc+=/healing_touch,if=buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
actions.doc+=/savage_roar,if=buff.savage_roar.down
actions.doc+=/faerie_fire,if=debuff.weakened_armor.stack<3
actions.doc+=/healing_touch,if=buff.predatory_swiftness.up&combo_points>=4&buff.dream_of_cenarius_damage.stack<2
actions.doc+=/healing_touch,if=buff.natures_swiftness.up
actions.doc+=/incarnation,if=enabled&energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
actions.doc+=/use_item,name=grips_of_the_haunted_forest,sync=tigers_fury
actions.doc+=/tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
actions.doc+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<18&cooldown.tigers_fury.remains>6)
actions.doc+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
actions.doc+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
actions.doc+=/ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
actions.doc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
actions.doc+=/virmens_bite_potion,if=(combo_points>=5&$(time_til_bitw)<15&buff.rune_of_reorigination.up&buff.dream_of_cenarius_damage.up)|target.time_to_die<=40
actions.doc+=/natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&$(rip_ratio)>=0.92&target.time_to_die>30
actions.doc+=/rip,if=combo_points>=5&$(rip_ratio)>=1.15&target.time_to_die>30
actions.doc+=/natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
actions.doc+=/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))
actions.doc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
actions.doc+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&buff.dream_of_cenarius_damage.up
actions.doc+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<6.0&buff.dream_of_cenarius_damage.up&$(rip_ratio)>=1
actions.doc+=/natures_swiftness,if=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.doc+=/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.doc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
actions.doc+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)
actions.doc+=/pool_resource,wait=0.1,if=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.doc+=/pool_resource,wait=0.1,if=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.doc+=/ferocious_bite,if=combo_points>=5&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4
actions.doc+=/ferocious_bite,if=combo_points>=5&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6
actions.doc+=/pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&$(rip_remains)>=10.5
actions.doc+=/ferocious_bite,if=combo_points>=5&$(rip_remains)>=10
actions.doc+=/rake,if=buff.rune_of_reorigination.up&$(rake_ratio)>=1
actions.doc+=/rake,if=buff.rune_of_reorigination.up&dot.rake.remains<9&(buff.rune_of_reorigination.remains<=1.5)
actions.doc+=/rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<6.0&buff.dream_of_cenarius_damage.up&$(rake_ratio)>=1
actions.doc+=/rake,if=target.time_to_die-dot.rake.remains>3&$(rake_ratio)>1.12
actions.doc+=/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.doc+=/pool_resource,wait=0.1,for_next=1
actions.doc+=/thrash_cat,if=target.time_to_die>=6&dot.thrash_cat.remains<3&($(rip_remains)>=4|buff.berserk.up)
actions.doc+=/run_action_list,name=filler,if=buff.omen_of_clarity.react
actions.doc+=/run_action_list,name=filler,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions.doc+=/run_action_list,name=filler,if=buff.predatory_swiftness.remains>1
actions.doc+=/run_action_list,name=filler,if=target.time_to_die<=8.5
actions.doc+=/run_action_list,name=filler,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions.doc+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3.0
actions.doc+=/run_action_list,name=filler,if=energy.time_to_max<=1.0
actions.doc+=/treants,if=talent.force_of_nature.enabled

actions.nondoc=auto_attack
actions.nondoc+=/skull_bash_cat
actions.nondoc+=/berserking
#actions.nondoc+=/use_item,name=darkwood_spiritstaff,if=buff.heart_of_the_wild.up
#actions.nondoc+=/use_item,name=grips_of_the_haunted_forest,if=buff.heart_of_the_wild.up
#actions.nondoc+=/heart_of_the_wild,if=enabled&time<10
#actions.nondoc+=/virmens_bite_potion,if=buff.heart_of_the_wild.up|target.time_to_die<=40
#actions.nondoc+=/wrath,if=cast_time<buff.heart_of_the_wild.remains
#actions.nondoc+=/cat_form,if=buff.cat_form.down
actions.nondoc+=/savage_roar,if=buff.savage_roar.down
actions.nondoc+=/faerie_fire,if=debuff.weakened_armor.stack<3
actions.nondoc+=/incarnation,if=enabled&energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
actions.nondoc+=/use_item,name=grips_of_the_haunted_forest,sync=tigers_fury
actions.nondoc+=/tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
actions.nondoc+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<18&cooldown.tigers_fury.remains>6)
actions.nondoc+=/natures_vigil,if=enabled&(buff.tigers_fury.up|(target.time_to_die<35&cooldown.tigers_fury.remains>6))
actions.nondoc+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=2&target.health.pct<=25
actions.nondoc+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
actions.nondoc+=/ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
actions.nondoc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
actions.nondoc+=/virmens_bite_potion,if=(combo_points>=5&$(time_til_bitw)<15&buff.rune_of_reorigination.up)|target.time_to_die<=40
actions.nondoc+=/rip,if=combo_points>=5&$(rip_ratio)>=1.15&target.time_to_die>30
actions.nondoc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
actions.nondoc+=/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.nondoc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>$(rip_remains)
actions.nondoc+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)
actions.nondoc+=/ferocious_bite,if=combo_points>=5&($(rip_remains)>10|($(rip_remains)>6&buff.berserk.up))&dot.rip.ticking
actions.nondoc+=/rake,if=buff.rune_of_reorigination.up&$(rake_ratio)>=1
actions.nondoc+=/rake,if=buff.rune_of_reorigination.up&dot.rake.remains<9&(buff.rune_of_reorigination.remains<=1.5)
actions.nondoc+=/rake,if=target.time_to_die-dot.rake.remains>3&$(rake_ratio)>1.12
actions.nondoc+=/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.nondoc+=/pool_resource,wait=0.1,for_next=1
actions.nondoc+=/thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&($(rip_remains)>=4|buff.berserk.up)
actions.nondoc+=/run_action_list,name=filler,if=buff.omen_of_clarity.react
actions.nondoc+=/run_action_list,name=filler,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))
actions.nondoc+=/run_action_list,name=filler,if=target.time_to_die<=8.5
actions.nondoc+=/run_action_list,name=filler,if=(buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up)
actions.nondoc+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3.0
actions.nondoc+=/run_action_list,name=filler,if=energy.time_to_max<=1.0
actions.nondoc+=/run_action_list,name=filler,if=talent.soul_of_the_forest.enabled&combo_points<5
actions.nondoc+=/treants,if=talent.force_of_nature.enabled
actions.nondoc+=/natures_swiftness,if=enabled&buff.natures_vigil.up&!buff.predatory_swiftness.up
actions.nondoc+=/healing_touch,if=buff.natures_vigil.up&(buff.predatory_swiftness.up|buff.natures_swiftness.up)&!buff.berserk.up

actions.filler=/thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&combo_points>=5
actions.filler+=/ravage
actions.filler+=/shred,if=buff.omen_of_clarity.react&buff.king_of_the_jungle.down
actions.filler+=/shred,if=buff.berserk.up&buff.king_of_the_jungle.down
actions.filler+=/mangle_cat,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))&buff.king_of_the_jungle.down
actions.filler+=/shred,if=buff.king_of_the_jungle.down

head=headpiece_of_the_haunted_forest,id=96581,gems=capacitive_primal_80agi_160mastery_180agi,reforge=hit_mastery
neck=necklace_of_the_terracotta_archer,id=96702,gems=160agi_60exp,reforge=crit_mastery
shoulders=spaulders_of_the_haunted_forest,id=96583,gems=160agi_80agi_160mastery_120mastery,enchant=520agi_100crit,reforge=crit_haste
back=grey_wind_mistcloak,id=95015,gems=80agi_160mastery_60haste,enchant=180crit,reforge=crit_exp
chest=chestguard_of_coruscating_blades,id=95033,gems=160agi_160agi_160agi_180agi,enchant=80all,reforge=crit_mastery
wrists=bracers_of_the_midnight_comet_of_the_zephyr,id=96540,gems=80agi_160mastery_60agi,enchant=180agi,suffix=136,reforge=haste_exp
hands=grips_of_the_haunted_forest,id=96580,gems=160agi_60agi,enchant=170mastery,addon=synapse_springs_mark_ii,reforge=exp_mastery
waist=strap_of_murderous_strikes,id=94998,gems=80agi_160hit_80agi_160hit_160agi_120agi,reforge=crit_haste
legs=legguards_of_the_haunted_forest,id=96582,gems=80agi_160mastery_80agi_160hit_120agi,enchant=285agi_165crit
feet=twisttoe_tabi,id=95007,gems=80agi_160mastery_80agi_160hit_120agi,enchant=140agi,reforge=exp_mastery
finger1=radens_swift_seal,id=95021,gems=80agi_160hit_60agi,reforge=hit_mastery
finger2=goresoaked_gear,id=96513,gems=80agi_160mastery_60crit,reforge=crit_mastery
trinket1=renatakis_soul_charm,id=96369,reforge=exp_mastery
trinket2=rune_of_reorigination,id=96546
main_hand=darkwood_spiritstaff,id=96606,gems=80agi_160mastery_160agi_60agi,enchant=dancing_steel,reforge=crit_haste,use=45dur_300cd_-1979agi_-1013crit_-1354mastery_674int_463haste_463mastery_160int_60int_160int_10078sp_900int_670crit_518haste_160int_60int

# Gear Summary
# gear_strength=80
# gear_agility=21966
# gear_stamina=26225
# gear_intellect=80
# gear_spirit=80
# gear_expertise_rating=2471
# gear_hit_rating=1648
# gear_crit_rating=7480
# gear_haste_rating=3483
# gear_mastery_rating=9402
# gear_armor=20184
# meta_gem=agile_primal
# tier15_2pc_melee=1
# tier15_4pc_melee=1
# trinket1=rune_of_reorigination,heroic=1
# main_hand=darkwood_spiritstaff,heroic=1,weapon=staff_3.30speed_16964min_25448max,enchant=dancing_steel
Image

Posts: 14
Joined: Mon Sep 10, 2012 11:42 am

Re: Simulationcraft - Feral rotation discussion and script

Postby averter » Thu Feb 28, 2013 5:14 am

aggixx, just amazing work! Thank you for all the contribution to feral community. Only if I can buy you a beer.

Some questions about last rotation. Don't know much about simulationcraft internal workings, so sorry if I'm mistaken.
Spoiler: show
$(rip_remains)=(dot.rip.remains+(8-(dot.rip.ticks_added*2)))
If Rip isn't up then this formula should always return 8? Asking because some lines don't contain dot.rip.ticking

About DoC vs w/o Doc rotation has some inconsistencies. Following lines
Spoiler: show
actions.doc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
actions.doc+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)

actions.nondoc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>$(rip_remains)
actions.nondoc+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=$(rip_remains)
Is this right?
$(rip_remains) - potential remaining Rip length
dot.rip.remains - current remaining Rip length

Also some point filler with dot.rip.ticks_added < 3 condition disappeared. Is this dps neutral condition or replaced with (combo_points<5&dot.rip.remains<3.0)?

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Mar 02, 2013 3:49 am

  • That would be a mistake on my part. I have caught some of these before and they made no significant change to the DPS. It's possible ticks_added does not return a value when the dot is not active causing it to automatically evaluate to false. I'll have to look into this one.
  • Just a small inconsistency, the inclusion of calculating the full potential time remaining of a Rip is fairly negligible in DPS. I'll look into it again and see if there's something worth doing with it.
  • Right, it was DPS neutral to remove it. SotF and DoC incentivize very efficient use of energy to generate combo points, and casting a filler to extend rip regardless of CP does not mesh with that. The rotation already includes almost no pooling due to the buff.predatory_swiftness.up filler line, and that will force most of the extends for the rip by itself. After using this priority on live and PTR I can say you definitely do miss out on some extends, but the reality is that if you didn't have 5 CP ready to put a new rip up then you would be pushing to get to 5 CP and it will extend it 3 times anyway.

Edit: After talking to serge in IRC apparently the added_ticks variable of the dot does not get reset to 0 when the dot fades from the target. This would explain the lack of a difference, (un)fortunately that means I'll actually have to retest and fix all of those things :P
Last edited by aggixx on Sat Mar 02, 2013 5:44 am, edited 2 times in total.
Image

PreviousNext

Return to Kitty DPS

Who is online

Users browsing this forum: Bing [Bot], Yahoo [Bot] and 13 guests