Register

Simulationcraft - Feral rotation discussion and script

Face-rippin fun.
Revered
Posts: 312
Joined: Tue Feb 08, 2011 5:51 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Tue Sep 03, 2013 4:33 pm

Stenhaldi wrote:FoN has to be a bit more careful about when it can burn combo points on ferocious bite. I tested a "common sense" change that casts ferocious bite much less aggressively unless TF is coming up soon, and compensates by refreshing savage roar earlier if needed. The specific numbers I put in are kind of arbitrary and are not going to be optimal, but this was my change (green indicates added line, red indicates removed line).

I'm using a 561-geared profile with Re-Origination and Haromm's, with HotW and either SotF or FoN. This change was a ~400 dps increase to the SotF profile and a much larger ~1800 dps increase to the FoN profile.


I'm showing under 553 gear with rune/TED (before the 90 energy pooling change):

Under DoC/SotF:
~600 loss

Under DoC/FoN:
~200 gain

Under HotW/SotF:
~900 gain

Under HotW/FoN:
~1700 gain

This tells me that DoC does better with more aggressive FB usage than HotW. Probably due to less finishers going off and thus less DoC usage. I haven't been able to find a single (well technically 2 since you need the pool as well) line that plays well with all specs so this may have to be spec specific.

I actually changed the FB lines to (placed below the rake lines):
Spoiler: show
Code: Select all
# Pool to 50 energy for Ferocious Bite.
actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=90|(buff.berserk.up&energy>=25))&dot.rip.ticking
# Ferocious Bite if we will energy cap before being able to spend our CP on Rip or Savage Roar.
actions.advanced+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking

... for the best DPS (all 4 permutations). Note that this does require the savageroar<=12 line (which unless our energy regen drops below 10, will fire during the pooling for FB energy anytime SR is <=12) and probably my moved Rake filler as well. Don't know if anything else has an effect on it.

Stenhaldi wrote:I also picked up another ~300 dps (in the FoN profile) by pooling to 90 energy for ferocious bite instead of 50:


This actually is a much larger ~2100 gain in DoC(w/ sotf), probably again because of better usage of DoC (higher post finisher energy so more likely to get to next finisher before PS goes down).

Stenhaldi wrote:Casting ferocious bite close to 100 energy is a sensible thing to do in any case (since it lets you regenerate CP quicker to rip if something procs), but I'm surprised that this particular implementation worked because if I understand pool_resource correctly, it could lock out rake refreshes (which are lower in the action list) for up to ~7 seconds. If that's correct, then surely there is a better way than this to ensure that ferocious bites cast close to 100 energy. As one meager attempt, I moved ferocious bite below rake in the priority list:

This picked up another ~200 dps.


DPS neutral in DoC+SotF. I see the ~200 gain in HotW+SotF. Haven't tried any other combos yet.

Stenhaldi wrote:I also decided to rework the thrash logic, because the heavy clearcast emphasis for thrash never made much sense to me (10 energy is nothing compared to other considerations). Thrash is like a mini-ferocious bite, so I gave it similar logic and moved it just above ferocious bite in the priority.

Those numbers are just guesses but this already picks up ~1000 dps.


In DoC+SotF I'm showing a ~2000 DPS loss in my current script (my changes + yours) or ~1000 DPS loss in the base T16N sample profile with just this set of changes.
In HotW+SotF its DPS neutral in my current script or ~1000 DPS gain in base T16N profile.

Making your SR + FB changes (and none of mine) cuts the gain to only ~400 DPS in HotW+SotF. Changing Rake>Mangle to filler (per my post) brings it to a ~300 DPS loss. So I think it has more to do with bringing Thrash above the Rake>Mangle line and using FB less.

However, some of the way you implemented the conditionals seems to work well in the traditional thrash place (just above fillers). Currently they're DPS neutral in DoC+SotF but some tweaking might find some improvement. Gonna experiment more later but running out of time before raid. :)

As a final observation, it's not worth forcing filler just for TF (or presumably NV).

This picks up ~500 dps.


Showing similar in DoC+SotF as well.

EDIT: Moving the buff.feral_fury.react filler line with the rest of the fillers (ie below thrash and FB if you moved that) is a ~400 DPS up

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Tue Sep 03, 2013 5:54 pm

Stenhaldi wrote:Incidentally, is it possible to define variables within the action list (without hardcoding them into the module)? The thrash and ferocious bite conditions would be much cleaner and more transparent if they were written in terms of variables like expected_time_to_5cp and max_time_to_5cp and all the information about combo points, energy, TF cooldown, and clearcasting were put into those variables.

Sort of.
https://code.google.com/p/simulationcra ... templating
It doesn't show that input in the HTML output though, just the final assembled list.

Interesting stuff, looks like we still have a lot of room for optimization. I'll be really busy for the next couple days so if Shmoo or someone else wants to sort through the stuff that would be cool.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Tue Sep 03, 2013 11:00 pm

While I think lots of minor improvements are good, we should be careful to avoid overfitting the rotation. Many of these DPS gains can be DPS losses with different ilvl gear or trinkets.

I like the idea of a longer FB pool -- I often find myself waiting at 5cp when I've got no procs active, but I rarely pool when I've got procs active because refreshing/clipping is almost always a better option.

I think much of the logic should work differently based on what procs are up. You might SR immediately if Rune is active but SR will fade before the duration ends, depending on the number of CP available. Or you might build CP during Rune with Mangle instead of Rake if you have 4pT15 active. Early SR refreshes might be better than FB during proc downtime.

If we had running number that showed our "kitty power" (relative to out of combat before pull), I'd imagine our priority list looks different at 1x than it does at 3x.
Image

Revered
User avatar
Posts: 433
Joined: Wed Jun 29, 2011 4:49 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Stenhaldi » Wed Sep 04, 2013 1:02 am

raffy wrote:While I think lots of minor improvements are good, we should be careful to avoid overfitting the rotation. Many of these DPS gains can be DPS losses with different ilvl gear or trinkets.

Yeah, I normally don't worry much about optimizing simulations -- and by the same token, I normally trust my own estimates over simulation results for ranking trinkets, talents, or anything highly sensitive to the action priority. But at this point, the trinket effects are getting difficult to model and yet I'm in a position where I don't trust the simulation results either because they don't play the way I play. This is why I'm looking at ways to make the simulation play closer to the way I do.

Revered
Posts: 312
Joined: Tue Feb 08, 2011 5:51 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Wed Sep 04, 2013 1:57 am

raffy wrote:While I think lots of minor improvements are good, we should be careful to avoid overfitting the rotation. Many of these DPS gains can be DPS losses with different ilvl gear or trinkets.

I like the idea of a longer FB pool -- I often find myself waiting at 5cp when I've got no procs active, but I rarely pool when I've got procs active because refreshing/clipping is almost always a better option.

I think much of the logic should work differently based on what procs are up. You might SR immediately if Rune is active but SR will fade before the duration ends, depending on the number of CP available. Or you might build CP during Rune with Mangle instead of Rake if you have 4pT15 active. Early SR refreshes might be better than FB during proc downtime.

If we had running number that showed our "kitty power" (relative to out of combat before pull), I'd imagine our priority list looks different at 1x than it does at 3x.


I've been wanting to try that kind of logic for a bit now (even have jeshu musing on a way to give us that functionality in ovale) but I'm not quire sure how to do it in Simcraft.

As far as the changes to Simc go, I've merged the best of mine and Stenhaldi's:

Spoiler: show
Reconciling all the multitude of changes (note that there's zero treant usage in any of these, but as its off the gcd it should have no effect on the relative DPS of these changes):

1st changes:
Changed Thrash to |combo_points>=5 and removed filler version
Moved Rake>Mangle line and modified to:
actions.filler+=/rake,if=target.time_to_die-dot.rake.remains>3&action.rake.tick_damage*(dot.rake.ticks_remain+1)-dot.rake.tick_dmg*dot.rake.ticks_remain>action.mangle_cat.hit_damage
actions.filler+=/rake,if=target.time_to_die-dot.rake.remains<=3&action.rake.tick_damage*(target.time_to_die%3+1)-dot.rake.tick_dmg*target.time_to_die%3>action.mangle_cat.hit_damage
Results:
DoC+SotF: +300 DPS
HotW+SotF: +1150 DPS
DoC+FoN: +350 DPS
HotW+FoN: +800 DPS


2nd changes (All changed together because on their own they have no DPS change but are all required for the FB change; also requires the Rake change from the 1st set of changes):
Feral Fury filler line moved below Thrash (no net change by itself)
Added new SR line (small to no net change by itself or w/ feral fury change):
actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=12&combo_points>=5&energy.time_to_max<=1.0&buff.savage_roar.remains<=dot.rip.remains+6&dot.rip.ticking
Non-execute FB Moved just above fillers and modify to:
# Pool to 90 energy for Ferocious Bite.
actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=90|(buff.berserk.up&energy>=25))&dot.rip.ticking
# Ferocious Bite if we reach 90 energy without having to do something else first
actions.advanced+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking
Results:
DoC+SotF: +800 DPS
HotW+SotF: +1000 DPS
DoC+FoN: +1650 DPS
HotW+FoN: +2100 DPS


3rd change:
Added expiring rune logic for Thrash
actions.advanced+=/pool_resource,for_next=1
actions.advanced+=/thrash_cat,if=target.time_to_die>=6&dot.thrash_cat.remains<9&buff.rune_of_reorigination.up&buff.rune_of_reorigination.remains<=1.5&dot.rip.ticking
Results:
DoC+SotF: +250 DPS
HotW+SotF: +400 DPS
DoC+FoN: +350 DPS
HotW+FoN: +400 DPS


4th change:
Added expiring rune logic for Rip
actions.advanced+=/rip,if=combo_points>=4&action.rip.tick_damage%dot.rip.tick_dmg>=0.95&target.time_to_die>30&buff.rune_of_reorigination.up&buff.rune_of_reorigination.remains<=1.5
Results:
DoC+SotF: +200 DPS
HotW+SotF: +100 DPS
DoC+FoN: +200 DPS
HotW+FoN: +150 DPS


5th change (this was actually a DPS loss for DoC+SotF before the 3rd and 4th change above):
Removed using fillers during TF (and NV)
Results:
DoC+SotF: -0 DPS (teensie downgrade but well within the margin of error)
HotW+SotF: +550 DPS
DoC+FoN: +150 DPS
HotW+FoN: +750 DPS


Net Change:
DoC+SotF: +1950 DPS
HotW+SotF: +3400 DPS
DoC+FoN: +3650 DPS
HotW+FoN: +4750 DPS


The script itself (still needs incarnation and force of nature logic which I think aggixx has):
Spoiler: show
Code: Select all
#!./simc
ptr=1
druid="HotW+SotF"
level=90
race=troll
role=attack
position=back
talents=000101
glyphs=savagery
spec=feral

# This default action priority list is automatically created based on your character.
# It is a attempt to provide you with a action list that is both simple and practicable,
# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps.
# Feel free to edit, adapt and improve it to your own needs.
# SimulationCraft is always looking for updates and improvements to the default action lists.

# Executed before combat begins. Accepts non-harmful actions only.

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.up&talent.dream_of_cenarius.enabled
actions.precombat+=/cat_form
actions.precombat+=/savage_roar
# Snapshot raid buffed stats before combat begins and pre-potting is done.
actions.precombat+=/snapshot_stats
actions.precombat+=/virmens_bite_potion

# Executed every time the actor is available.

# By default the simulation will use the "Basic" action list, if you would like to instead use the "Advanced" action list do so here.
actions=swap_action_list,name=advanced

actions.basic=auto_attack
actions.basic+=/skull_bash_cat
# Keep Rip from falling off during execute range.
actions.basic+=/ferocious_bite,if=dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
actions.basic+=/faerie_fire,if=debuff.weakened_armor.stack<3
# Proc Dream of Cenarius at 4+ CP or when PS is about to expire.
actions.basic+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&(buff.predatory_swiftness.remains<1.5|combo_points>=4)
actions.basic+=/savage_roar,if=buff.savage_roar.remains<3
actions.basic+=/virmens_bite_potion,if=(target.health.pct<30&buff.berserk.up)|target.time_to_die<=40
actions.basic+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions.basic+=/berserk,if=buff.tigers_fury.up
actions.basic+=/berserking,if=buff.tigers_fury.up
# Overwrite Rip during execute range if it's at least 15% stronger than the current.
actions.basic+=/rip,if=combo_points>=5&target.health.pct<=25&action.rip.tick_damage%dot.rip.tick_dmg>=1.15
actions.basic+=/ferocious_bite,if=combo_points>=5&target.health.pct<=25&dot.rip.ticking
actions.basic+=/rip,if=combo_points>=5&dot.rip.remains<2
# Ferocious Bite if we will energy cap before being able to spend our CP on Rip or Savage Roar.
actions.basic+=/ferocious_bite,if=combo_points>=5&energy.time_to_max<dot.rip.remains-2&energy.time_to_max<buff.savage_roar.remains-3
actions.basic+=/thrash_cat,if=buff.omen_of_clarity.react&dot.thrash_cat.remains<3
# Rake if it hits harder than Mangle and we won't apply a weaker bleed to the target.
actions.basic+=/rake,if=action.rake.tick_damage>action.mangle_cat.hit_damage&action.rake.tick_damage>=dot.rake.tick_dmg
# Rake if it's about to fall off or we can apply a stronger Rake.
actions.basic+=/rake,if=dot.rake.remains<3|action.rake.tick_damage>dot.rake.tick_dmg
actions.basic+=/run_action_list,name=filler,if=buff.feral_fury.react
actions.basic+=/pool_resource,for_next=1
actions.basic+=/thrash_cat,if=dot.thrash_cat.remains<3&(dot.rip.remains>6|combo_points>=5)
# Conditions under which we should execute a CP generator.
actions.basic+=/run_action_list,name=filler,if=buff.omen_of_clarity.react
actions.basic+=/run_action_list,name=filler,if=(combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2)
actions.basic+=/run_action_list,name=filler,if=target.time_to_die<=8.5
actions.basic+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up
actions.basic+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3
actions.basic+=/run_action_list,name=filler,if=energy.time_to_max<=1.0

actions.advanced=auto_attack
actions.advanced+=/skull_bash_cat
actions.advanced+=/berserking
# Keep Rip from falling off during execute range.
actions.advanced+=/ferocious_bite,if=dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
actions.advanced+=/faerie_fire,if=debuff.weakened_armor.stack<3
# Proc Dream of Cenarius at 4+ CP or when PS is about to expire.
actions.advanced+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&(buff.predatory_swiftness.remains<1.5|combo_points>=4)
actions.advanced+=/savage_roar,if=buff.savage_roar.down
actions.advanced+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions.advanced+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<18&cooldown.tigers_fury.remains>6)
actions.advanced+=/thrash_cat,if=buff.omen_of_clarity.react&dot.thrash_cat.remains<3&target.time_to_die>=6
actions.advanced+=/ferocious_bite,if=target.time_to_die<=1&combo_points>=3
actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
# Potion near or during execute range when Rune is up and we have 5 CP.
actions.advanced+=/virmens_bite_potion,if=(combo_points>=5&(target.time_to_die*(target.health.pct-25)%target.health.pct)<15&buff.rune_of_reorigination.up)|target.time_to_die<=40
# Overwrite Rip if it's at least 15% stronger than the current.
actions.advanced+=/rip,if=combo_points>=5&action.rip.tick_damage%dot.rip.tick_dmg>=1.15&target.time_to_die>30
actions.advanced+=/rip,if=combo_points>=4&action.rip.tick_damage%dot.rip.tick_dmg>=0.95&target.time_to_die>30&buff.rune_of_reorigination.up&buff.rune_of_reorigination.remains<=1.5
# Pool 50 energy for Ferocious Bite.
actions.advanced+=/pool_resource,if=combo_points>=5&target.health.pct<=25&dot.rip.ticking&!(energy>=50|(buff.berserk.up&energy>=25))
actions.advanced+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
actions.advanced+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)
actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains&dot.rip.ticking
actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=12&combo_points>=5&energy.time_to_max<=1.0&buff.savage_roar.remains<=dot.rip.remains+6&dot.rip.ticking
# Rake if it hits harder than Mangle and we won't apply a weaker bleed to the target.
actions.advanced+=/rake,if=action.rake.tick_damage>action.mangle_cat.hit_damage&action.rake.tick_damage>=dot.rake.tick_dmg
# Refresh Rake as Re-Origination is about to end if Rake has <9 seconds left.
actions.advanced+=/rake,if=buff.rune_of_reorigination.up&dot.rake.remains<9&buff.rune_of_reorigination.remains<=1.5
# Rake if we can apply a stronger Rake or if it's about to fall off and clipping the last tick won't waste too much damage.
actions.advanced+=/rake,if=target.time_to_die-dot.rake.remains>3&(action.rake.tick_damage>dot.rake.tick_dmg|(dot.rake.remains<3&action.rake.tick_damage%dot.rake.tick_dmg>=0.75))
actions.advanced+=/pool_resource,for_next=1
actions.advanced+=/thrash_cat,if=target.time_to_die>=6&dot.thrash_cat.remains<3&(dot.rip.remains>=8&buff.savage_roar.remains>=12|buff.berserk.up|combo_points>=5)&dot.rip.ticking
actions.advanced+=/pool_resource,for_next=1
actions.advanced+=/thrash_cat,if=target.time_to_die>=6&dot.thrash_cat.remains<9&buff.rune_of_reorigination.up&buff.rune_of_reorigination.remains<=1.5&dot.rip.ticking
# Pool to 90 energy for Ferocious Bite.
actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=90|(buff.berserk.up&energy>=25))&dot.rip.ticking
# Ferocious Bite if we reach 90 energy without having to do something else first
actions.advanced+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking
actions.advanced+=/run_action_list,name=filler,if=buff.omen_of_clarity.react
actions.advanced+=/run_action_list,name=filler,if=buff.feral_fury.react
# Conditions under which we should execute a CP generator.
actions.advanced+=/run_action_list,name=filler,if=(combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2)
actions.advanced+=/run_action_list,name=filler,if=target.time_to_die<=8.5
actions.advanced+=/run_action_list,name=filler,if=buff.berserk.up
actions.advanced+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3
actions.advanced+=/run_action_list,name=filler,if=energy.time_to_max<=1.0

actions.filler=ravage
actions.filler+=/rake,if=target.time_to_die-dot.rake.remains>3&action.rake.tick_damage*(dot.rake.ticks_remain+1)-dot.rake.tick_dmg*dot.rake.ticks_remain>action.mangle_cat.hit_damage
actions.filler+=/rake,if=target.time_to_die-dot.rake.remains<=3&action.rake.tick_damage*(target.time_to_die%3+1)-dot.rake.tick_dmg*target.time_to_die%3>action.mangle_cat.hit_damage
actions.filler+=/shred,if=(buff.omen_of_clarity.react|buff.berserk.up|energy.regen>=15|buff.feral_fury.react)&buff.king_of_the_jungle.down
actions.filler+=/mangle_cat,if=buff.king_of_the_jungle.down

actions.aoe=swap_action_list,name=default,if=active_enemies<5
actions.aoe+=/auto_attack
actions.aoe+=/faerie_fire,cycle_targets=1,if=debuff.weakened_armor.stack<3
actions.aoe+=/savage_roar,if=buff.savage_roar.down|(buff.savage_roar.remains<3&combo_points>0)
actions.aoe+=/berserking,if=buff.tigers_fury.up
actions.aoe+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions.aoe+=/berserk,if=buff.tigers_fury.up
actions.aoe+=/pool_resource,for_next=1
actions.aoe+=/thrash_cat,if=buff.rune_of_reorigination.up
actions.aoe+=/pool_resource,wait=0.1,for_next=1
actions.aoe+=/thrash_cat,if=dot.thrash_cat.remains<3|(buff.tigers_fury.up&dot.thrash_cat.remains<9)
actions.aoe+=/savage_roar,if=buff.savage_roar.remains<9&combo_points>=5
actions.aoe+=/rip,if=combo_points>=5
actions.aoe+=/rake,cycle_targets=1,if=(active_enemies<8|buff.rune_of_reorigination.up)&dot.rake.remains<3&target.time_to_die>=15
actions.aoe+=/swipe_cat,if=buff.savage_roar.remains<=5
actions.aoe+=/swipe_cat,if=buff.tigers_fury.up|buff.berserk.up
actions.aoe+=/swipe_cat,if=cooldown.tigers_fury.remains<3
actions.aoe+=/swipe_cat,if=buff.omen_of_clarity.react
actions.aoe+=/swipe_cat,if=energy.time_to_max<=1

head=headpiece_of_the_shattered_vale,id=99182,gems=capacitive_primal_160agi_180agi,reforge=mastery_hit
neck=immerseus_crystalline_eye,id=103749,reforge=mastery_hit
shoulders=shoulderguards_of_the_righteous_stand,id=103913,gems=80agi_160crit_80agi_160crit_120agi,enchant=200agi_100crit,reforge=mastery_hit
back=fenyu_fury_of_xuen,id=102248,gems=160agi_60agi,enchant=180hit,reforge=mastery_hit
chest=raiment_of_the_shattered_vale,id=99180,gems=160agi_160agi_160agi_180agi,enchant=80all,reforge=mastery_haste
wrists=bombers_blackened_wristwatch,id=103910,enchant=180agi,reforge=mastery_hit
hands=grips_of_the_shattered_vale,id=99181,gems=160agi_160agi_120agi,enchant=170exp,reforge=crit_exp
waist=cord_of_black_dreams,id=103928,gems=160agi_80agi_160crit_160agi_120agi,reforge=haste_hit
legs=legguards_of_the_shattered_vale,id=99183,gems=80agi_160haste_80agi_160haste_120agi,enchant=285agi_165crit
feet=pandaren_roofsprinters,id=103779,gems=80agi_160hit_60mastery,enchant=140agi,reforge=haste_exp
finger1=kilruks_band_of_ascendancy,id=103844,gems=160agi_60crit
finger2=ring_of_restless_energy,id=103843,gems=160agi_60crit,reforge=mastery_exp
trinket1=ticking_ebon_detonator,id=102311,reforge=mastery_exp
trinket2=rune_of_reorigination,id=96918,upgrade=2
main_hand=halberd_of_inner_shadows,id=103952,gems=80agi_160crit_160agi_60agi,enchant=dancing_steel,reforge=mastery_exp

# Gear Summary
# gear_strength=80
# gear_agility=25628
# gear_stamina=31490
# gear_intellect=80
# gear_spirit=80
# gear_expertise_rating=2550
# gear_hit_rating=2552
# gear_crit_rating=8570
# gear_haste_rating=8579
# gear_mastery_rating=8583
# gear_armor=21305
# meta_gem=capacitive_primal
# tier16_2pc_melee=1
# tier16_4pc_melee=1
# trinket2=rune_of_reorigination,heroic=1,elite=1
# main_hand=halberd_of_inner_shadows,weapon=polearm_3.60speed_21886min_32829max,enchant=dancing_steel


EDIT: Turns out Raffy made a good prediction. Making the changes in my current gear resulted in:
Spoiler: show
My gear:
1st changes (Filler fixes):
DoC+SotF: +150 DPS
HotW+SotF: +500 DPS
DoC+FoN: +150 DPS
HotW+FoN: +350 DPS

2nd changes (SR/FB Logic):
DoC+SotF: +250 DPS
HotW+SotF: +150 DPS
DoC+FoN: +250 DPS
HotW+FoN: +0 DPS

3rd change (Rune+Thrash Logic):
DoC+SotF: +450 DPS
HotW+SotF: +350 DPS
DoC+FoN: +450 DPS
HotW+FoN: +350 DPS

4th change (Rune+Rip Logic):
DoC+SotF: +150 DPS
HotW+SotF: +100 DPS
DoC+FoN: +150 DPS
HotW+FoN: +200 DPS

5th change (No TF Filler):
DoC+SotF: -800 DPS
HotW+SotF: +200 DPS
DoC+FoN: -450 DPS
HotW+FoN: +350 DPS

So DoC should use fillers during TF, HotW should not.

Will probably do one more pass in like a T15N gear set or something but trying out a few other changes first.

Revered
Posts: 312
Joined: Tue Feb 08, 2011 5:51 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Fri Sep 06, 2013 4:35 pm

After implementing these changes into Ovale, it feels like we need one more filler conditional for DoC to try to get to 4 CPs before PS is going to fall off. After trying a few things I came up with:

actions.advanced+=/run_action_list,name=filler,if=talent.dream_of_cenarius.enabled&combo_points<=3&buff.predatory_swiftness.remains<(5.5-combo_points)&buff.predatory_swiftness.up

This resulted in ~200 DPS gain

Might be a better line that someone can come up with but I'll probably put this one in ovale for now.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Sep 07, 2013 2:55 am

For profiles using DoC, 4pT16, Rune of Re-Origination and either Haromm's Talisman or Ticking Ebon Detonator, the following opener is higher DPS than the normal:
Healing Touch
Cat Form
Savage Roar
Virmen's Bite
Prowl
Tiger's Fury
Savage Roar
Ravage
Berserk / Synapse Springs
Rip

This is much stronger if you have a 549 Rune as that grants you a guaranteed Rune proc on your first of every encounter. See this pretty chart:
http://www.wolframalpha.com/share/clip? ... eafdf08g1i

I've made the necessary adjustments for this to be used for applicable profiles, and I've also committed the changes in Shmoo's post above with some minor modifications that we discussed.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Sat Sep 07, 2013 3:13 pm

aggixx wrote:For profiles using DoC, 4pT16, Rune of Re-Origination and either Haromm's Talisman or Ticking Ebon Detonator, the following opener is higher DPS than the normal:
Healing Touch
Cat Form
Savage Roar
Virmen's Bite
Prowl
Tiger's Fury
Savage Roar
Ravage
Berserk / Synapse Springs
Rip

This is much stronger if you have a 549 Rune as that grants you a guaranteed Rune proc on your first of every encounter. See this pretty chart:
http://www.wolframalpha.com/share/clip? ... eafdf08g1i

I've made the necessary adjustments for this to be used for applicable profiles, and I've also committed the changes in Shmoo's post above with some minor modifications that we discussed.


That opening looks terribly clumsy. Does the wasted energy from the early TF trade positively for the faster rip?
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Sat Sep 07, 2013 4:02 pm

For 549 Rune + 553 Ebon, this is a ~250 DPS gain for me for FoN+DoC @ 556 ilvl.
Oh I see, it's clearcast Thrashing :X
Edit: nope, didn't fix it, I still see this as minor. I'll keep looking.
Code: Select all
00:00.000 @Player Healing Touch
00:00.000 +Dream of Cenarius: +2
00:00.000 +SR`0: 12.91s (0.00s)
00:00.000 +Potion#1
00:00.000 +Prowl
00:00.000 +TF: +0 (100 > 100)
00:00.000 +Feral Rage
00:00.000 *** Combat ***
00:00.000 *SR`0: 14.08s (12.91s)
00:00.000 -Feral Rage
00:00.000 @Boss   Combo: 3 (+3/3)
00:00.000 +Skull Banner
00:00.000 +Stormlash Totem
00:01.030 -Prowl
00:01.030 ~Dream of Cenarius (1/2)
00:01.030 @Boss   Ravage                             428745 Crit         +SR+DoC+TF+Agi(4000)
00:01.030 +Dancing Steel: +1650 Agility
00:01.030 +Flurry of Xuen
00:01.030 +Rune of Re-Origination<549>: +34290 Mastery, -8590 Crit, -8555 Haste
00:01.030 +Ticking Ebon Detonator<553>: +21380 Agility (20/20)
00:01.030 @Boss   Stormlash#Ravage                    38143 Hit          +Agi(27030)
00:01.030 @Boss   Combo: 5 (+2/2)
00:01.030 +Treant#1 (2/3) @ Boss
00:01.030 @Boss   Treant/Rake#0                       50339 Hit          +Agi(27030)+Mastery(34290)-Crit(8590)
00:01.030 @Boss   Treant/Melee                        28580 Crit         
00:01.030 @Boss   Melee                               74950 Crit         +SR+TF+Agi(27030)
00:01.030 @Player LotP
00:01.080 +Treant#2 (1/3) @ Boss
00:01.080 @Boss   Treant/Rake#0                       50339 Hit          +Agi(27030)+Mastery(34290)-Crit(8590)
00:01.080 @Boss   Treant/Melee                        14290 Hit         
00:01.130 +Treant#3 (0/3) @ Boss
00:01.130 @Boss   Treant/Rake#0                       50339 Hit          +Agi(27030)+Mastery(34290)-Crit(8590)
00:01.130 @Boss   Treant/Melee                        14290 Glance       
00:01.180 +Berserk
00:01.330 @Boss   Flurry of Xuen                      63521 Crit         +SR+TF+Agi(27030)
00:01.530 ~Ticking Ebon Detonator<553>: +20311 Agility (19/20)
00:01.630 @Boss   Flurry of Xuen                      62278 Crit         +SR+TF+Agi(25961)
00:01.930 @Boss   Flurry of Xuen                      62278 Crit         +SR+TF+Agi(25961)
00:01.939 @Boss   Melee                               74302 Crit         +SR+TF+Agi(25961)
00:01.939 @Boss   Stormlash#Melee                     13605 Hit          +Agi(25961)
00:02.030 ~Ticking Ebon Detonator<553>: +19242 Agility (18/20)
00:02.075 +Synapse Springs
00:02.075 -Dream of Cenarius (0/2)
00:02.075 @Boss   +Rip`5+SR+DoC+TF+Agi(26812)+Mastery(34290)-Crit(8590)
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Sep 07, 2013 5:39 pm

Alpheus wrote:That opening looks terribly clumsy. Does the wasted energy from the early TF trade positively for the faster rip?

With a normal opener and a best case scenario, you get to 5 CP in 3 GCDs, this is fairly likely but not guaranteed (maybe 6% chance of needing a 4th CP generator). And you end up with a Rip that looks something like this:

0:00:03.300 Rip: Dancing Steel, Virmen's Bite, 13x Restless Agility, Re-Origination, Tiger's Fury

Whereas with the other opener, it only takes you 2 GCDs to get to 5 CP but the first is a non-hostile attack meaning it does not consume DoC and does not proc your trinkets. The resulting rip looks like this:

0:00:02.200 Rip: Dancing Steel, Virmen's Bite, 18x Restless Agility, Re-Origination, Tiger's Fury, Dream of Cenarius

So your rip has an extra ~6k agility (more with a higher level TED, that's a 553 one) and is buffed by Dream of Cenarius. That rip is then 35-45% better than the normal opener and is applied 1 second earlier. You're trading 1 second of TF uptime and 60 energy for a Rip that does about 2-3 million more damage.

Also I'd like to say, while it was quite a significant gain for Ticking Ebon Detonator (about a 1% DPS gain) it was a very small amount for Haromm's, and Haromm's opener will likely end up getting changed.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Sat Sep 07, 2013 6:02 pm

aggixx wrote:
Alpheus wrote:That opening looks terribly clumsy. Does the wasted energy from the early TF trade positively for the faster rip?

With a normal opener and a best case scenario, you get to 5 CP in 3 GCDs, this is fairly likely but not guaranteed (maybe 6% chance of needing a 4th CP generator). And you end up with a Rip that looks something like this:

0:00:03.300 Rip: Dancing Steel, Virmen's Bite, 13x Restless Agility, Re-Origination, Tiger's Fury

Whereas with the other opener, it only takes you 2 GCDs to get to 5 CP but the first is a non-hostile attack meaning it does not consume DoC and does not proc your trinkets. The resulting rip looks like this:

0:00:02.200 Rip: Dancing Steel, Virmen's Bite, 18x Restless Agility, Re-Origination, Tiger's Fury, Dream of Cenarius

So your rip has an extra ~6k agility (more with a higher level TED, that's a 553 one) and is buffed by Dream of Cenarius. That rip is then 35-45% better than the normal opener and is applied 1 second earlier. You're trading 1 second of TF uptime and 60 energy for a Rip that does about 2-3 million more damage.

Also I'd like to say, while it was quite a significant gain for Ticking Ebon Detonator (about a 1% DPS gain) it was a very small amount for Haromm's, and Haromm's opener will likely end up getting changed.


TED has a slightly lower RPPM than rune if I see correctly. Does it mean both should be up for the pull (assuming max rune).
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Sep 07, 2013 6:08 pm

No, TED is not guaranteed to be up for the pull like rune is. If I did the math correctly the chance is only 42%, but worse case if it doesn't proc you can clip again later during the rune proc anyway.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Sat Sep 07, 2013 6:17 pm

This ruins the opener if Clearcasting occurs between Ravage and Rip:
Code: Select all
actions.advanced+=/thrash_cat,if=buff.omen_of_clarity.react&dot.thrash_cat.remains<3&target.time_to_die>=6


What is the logic for this line?
Code: Select all
actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25


Aggixx, can you get on IRC? :D
Image

Revered
User avatar
Posts: 433
Joined: Wed Jun 29, 2011 4:49 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Stenhaldi » Sat Sep 07, 2013 8:33 pm

Why do AoC profiles have less Tiger's Fury uptime than non-AoC profiles? It looks like when the trinket is present, the Tiger's Fury buff only triggers every other TF cast.

e.g. with AoC: tigers_fury : start=10.8 refresh= 0.0 interval= 43.5 trigger= 43.5 uptime=14%
without AoC: tigers_fury : start=15.1 refresh= 0.0 interval= 30.7 trigger= 30.7 uptime=20%

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Sep 07, 2013 11:07 pm

Fixed in r17541.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Sun Sep 08, 2013 5:44 pm

I've added some new functions to Catus's "simc":
Code: Select all
rip_damage() = current rip tick average
rip_damage(t) = new rip tick average if you apply t-sec from now (where t=0 would mean now)

rip_power() = current rip tick ratio relative to 5cp+SR w/buffs before combat
rip_power(t) = same but for new rip

rip_ratio(t) = new rip / current rip

The same exists for Rake: rake_damage(), rake_power(), rake_ratio()

Can these be used to write better clipping conditions? Or is other information required?

I'm thinking the following can be changed:
1. >=4pt Rip line that has Rune-specific logic
2. Rake logic that clips the final tick

You can say thing's like this, which gives you an idea of how much more powerful a Rip would be if you applied it now vs waited 1.5sec.
Code: Select all
rip_power(0)%rip_power(1.5)

The inner value can be expression:
Code: Select all
rip_power(energy.time_to_max) // :p
Image

Revered
Posts: 312
Joined: Tue Feb 08, 2011 5:51 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Sun Sep 08, 2013 6:25 pm

@aggixx

Does this bug fix affect where AoC ranks as far as trinkets go? I think I recall the last trinket rankings I looked at were different between simc and catus, perhaps this is why.

@raffy

Yeah, that's defiantly the better way to do it. I've no idea how to do that in simc or even if its possible though and don't know how to sim in catus.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sun Sep 08, 2013 6:42 pm

I hope to be posting numbers on trinkets some time this evening. It does affect things, obviously, but nearly as significantly as you might think; the tiger's fury was still casting which means it was still granting the 60 energy and 4-piece buffs, it was only the damage buff that was absent.

I will say raffy and my trinket numbers are very very close (relatively speaking).
Image

Revered
Posts: 312
Joined: Tue Feb 08, 2011 5:51 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Thu Sep 12, 2013 9:52 pm

Updated AoE rotation:

Spoiler: show
actions.aoe=swap_action_list,name=default,if=active_enemies<3
actions.aoe+=/auto_attack
actions.aoe+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&buff.predatory_swiftness.remains<1.5
actions.aoe+=/faerie_fire,cycle_targets=1,if=debuff.weakened_armor.stack<3
actions.aoe+=/savage_roar,if=buff.savage_roar.down|(buff.savage_roar.remains<3&combo_points>0)|(buff.feral_rage.up&buff.feral_rage.remains<=1&talent.soul_of_the_forest.enabled)
actions.aoe+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions.aoe+=/berserk,if=buff.tigers_fury.up
actions.aoe+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&buff.rune_of_reorigination.up&dot.thrash_cat.remains<10
actions.aoe+=/pool_resource,for_next=1
actions.aoe+=/thrash_cat,if=buff.rune_of_reorigination.up&dot.thrash_cat.remains<9
actions.aoe+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&dot.thrash_cat.remains<4
actions.aoe+=/pool_resource,wait=0.1,for_next=1
actions.aoe+=/thrash_cat,if=dot.thrash_cat.remains<3
actions.aoe+=/savage_roar,if=buff.savage_roar.remains<9&combo_points>=5
actions.aoe+=/rip,if=combo_points>=5&target.time_to_die>=6&(talent.dream_of_cenarius.enabled|talent.soul_of_the_forest.enabled|active_enemies<=6)
actions.aoe+=/rake,if=buff.rune_of_reorigination.up&active_enemies<=8&dot.rake.remains<3&target.time_to_die>=15
actions.aoe+=/rake,if=active_enemies<=4&dot.rake.remains<3&target.time_to_die>=15
actions.aoe+=/swipe_cat,if=buff.omen_of_clarity.react
actions.aoe+=/swipe_cat,if=buff.feral_fury.react
actions.aoe+=/swipe_cat,if=buff.savage_roar.remains<=5
actions.aoe+=/swipe_cat,if=buff.tigers_fury.up|buff.berserk.up
actions.aoe+=/swipe_cat,if=cooldown.tigers_fury.remains<3
actions.aoe+=/swipe_cat,if=energy.time_to_max<=1


Note that rake does NOT cycle targets because simc puts the combo points on the player. If raffy has this implemented correctly in simcraft, I'd be very interested in seeing the results with different active enemies values (and different talents as its likely to have a large effect on it). Note that for the second rake line active_enemies<=5 is better until you get 2pt16 (and might be other active_enemies that'd be different without that set bonus).

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

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Thu Sep 12, 2013 10:17 pm

Sure, I can test that out in Catus.

My cleave encounter still needs more work too, and possibly split into multiple encounters, because it's hard to have one action list for Sustained AoE (few and many) and Primary Target + Periodic AoE (short and long duration), etc... especially when Hotwcane is involved.

Rake cycling works and the combos are on the target, I just have non-boss Rake disabled for the cleave encounter because I didn't add any options yet to signify that the main target is non-primary. There's definitely a difference between Tortos+Bats and cleaving a wave of 8 identical adds.

If curious, you can play with this yourself in Catus: you can edit the script inside, Catus/Cache/dl.dropbox/Encounter-Cleave.txt That file is reloaded each time the Cleave encounter is run and there is very basic error handling for incorrect script syntax. I have very incomplete script support, but it's getting better each update. The syntax is virtually the same beyond the different prefix: "main:" vs "actions.main+=/". I'm trying to move everything over to Feral-specific functions, like the rip_power(t), rake_damage(t), things above to help reduce script verbosity. You can debug what it's doing with the Combat Log. You can add the field "debug" like "rake,if=blah,debug=RakeTest1" to get inline prints in the combat log when that action is fired. The combat log also includes when action list swaps occur.

Spoiler: show
Code: Select all
00:58.835 ~Dancing Steel: +1650 Agility
00:59.157 @Boss   Mangle                             111393 Crit         +SR+Agi(1650)
00:59.157 @Boss   Combo: 2 (+2/2)
00:59.597 @Boss   Melee                               54158 Crit         +SR+Agi(1650)
01:00.000 >Spawned: W01#01
01:00.000 >Spawned: W01#02
01:00.000 >Spawned: W01#03
01:00.000 >Spawned: W01#04
01:00.000 >Spawned: W01#05
01:00.000 >Spawned: W01#06
01:00.000 >Spawned: W01#07
01:00.000 >Spawned: W01#08
01:00.082 @Boss   Rip`5#28                            71434 Hit          +SR+TF+Agi(8920)
01:00.179 Swap Action List: cleave
01:00.179 +Heart of the Wild
01:00.179 Swap Action List: hotw
01:00.179 Swap Weapon: Main > Swap
01:00.594 @Boss   Rake#3                             113272 Crit         +SR+Agi(1650)
01:00.874 @Boss   Thrash/Cat#8                        26729 Hit          +SR
01:00.941 @Boss   Melee                               50170 Crit         +SR+Agi(1650)
01:00.941 @Player LotP
01:01.687 -Cat
01:01.687 Channelling: Hurricane
01:02.082 @Boss   Rip`5#29                           142867 Crit         +SR+TF+Agi(8920)
01:02.082 @Boss   -Rip
01:02.494 @Boss   Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#01 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#02 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#03 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#04 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#05 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#06 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#07 Hurricane#1                         50149 Hit          +Agi(1650)+320%
01:02.494 @W01#08 Hurricane#1                        100297 Crit         +Agi(1650)+320%
Image

Revered
Posts: 312
Joined: Tue Feb 08, 2011 5:51 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Sat Sep 14, 2013 7:35 am

After getting a chance to try the aoe in ovale in actual raids (h tot 10) the finisher logic needed some work so I mostly integrated the finisher logic from the main script with a few changes (FB at low energy instead of high or not at all depending on spec/berserk)

New AoE rotation:

Spoiler: show
Code: Select all
actions.aoe=swap_action_list,name=default,if=active_enemies<3
actions.aoe+=/auto_attack
# Keep Rip from falling off during execute range.
actions.aoe+=/ferocious_bite,if=dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25&energy<=35
# Proc Dream of Cenarius when PS is about to expire.
actions.aoe+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&buff.predatory_swiftness.remains<1.5
actions.aoe+=/faerie_fire,cycle_targets=1,if=debuff.weakened_armor.stack<3
actions.aoe+=/savage_roar,if=buff.savage_roar.down|(buff.savage_roar.remains<3&combo_points>0)|(buff.feral_rage.up&buff.feral_rage.remains<=1&talent.soul_of_the_forest.enabled)
actions.aoe+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.react
actions.aoe+=/berserk,if=buff.tigers_fury.up
actions.aoe+=/thrash_cat,if=buff.omen_of_clarity.react&dot.thrash_cat.remains<3&target.time_to_die>=6
actions.aoe+=/swipe_cat,if=buff.omen_of_clarity.react
actions.aoe+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
# Overwrite Rip if it's at least 15% stronger than the current.
actions.aoe+=/rip,if=combo_points>=5&action.rip.tick_damage%dot.rip.tick_dmg>=1.15&target.time_to_die>30&(talent.dream_of_cenarius.enabled|talent.soul_of_the_forest.enabled|active_enemies<=6)
actions.aoe+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25&energy<=35
# Use 4 or more CP to apply Rip if Rune of Reorigination is about to expire and it's at least close to the current rip in damage.
actions.aoe+=/rip,if=combo_points>=4&action.rip.tick_damage%dot.rip.tick_dmg>=0.95&target.time_to_die>30&buff.rune_of_reorigination.up&buff.rune_of_reorigination.remains<=1.5&(talent.dream_of_cenarius.enabled|talent.soul_of_the_forest.enabled|active_enemies<=6)
actions.aoe+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&(talent.dream_of_cenarius.enabled|talent.soul_of_the_forest.enabled|active_enemies<=6)
actions.aoe+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
actions.aoe+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains&dot.rip.ticking
actions.aoe+=/savage_roar,if=buff.savage_roar.remains<=12&combo_points>=5&energy.time_to_max<=1.0&buff.savage_roar.remains<=dot.rip.remains+6&dot.rip.ticking
actions.aoe+=/healing_touch,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.up&buff.dream_of_cenarius.down&(buff.rune_of_reorigination.up&dot.thrash_cat.remains<10|dot.thrash_cat.remains<4)
actions.aoe+=/pool_resource,for_next=1
actions.aoe+=/thrash_cat,if=(buff.rune_of_reorigination.up&dot.thrash_cat.remains<9)|dot.thrash_cat.remains<3
actions.aoe+=/swipe_cat,if=buff.feral_fury.react
actions.aoe+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&talent.dream_of_cenarius.enabled&talent.soul_of_the_forest.enabled&buff.berserk.up
actions.aoe+=/rake,if=buff.rune_of_reorigination.up&active_enemies<=8&dot.rake.remains<3&target.time_to_die>=15
actions.aoe+=/rake,if=active_enemies<=4&dot.rake.remains<3&target.time_to_die>=15
actions.aoe+=/swipe_cat,if=dot.rip.ticking&dot.rip.remains<=6&target.health.pct<=25
actions.aoe+=/swipe_cat,if=cooldown.tigers_fury.remains<=3
actions.aoe+=/swipe_cat,if=buff.tigers_fury.up|buff.berserk.up
actions.aoe+=/swipe_cat,if=energy.time_to_max<=1.0


Its pretty much identical to the main rotation now with the following exceptions:
Swipe as filler (duh!)
Clearcast Swipe if you're not using Clearcasting on Thrash (ie prioritized over finishers)
Don't FB except to refresh rip in execute range (and do so at lowest energy possible) unless berserk is up, feral fury is not up and you're DoC+SotF
Don't clip Rake early, just refresh or don't use at all depending on number of targets and rune proc
Always refresh Thrash (as opposed to only when it won't cost rip uptime)
HT used before Thrash for DoC instead of CP >=4
Thrash prioritized over Rake

There were some minor gains with slightly more aggressive SR usage for DoC+SotF (only like 0.3% DPS) but I didn't include them as almost no AoE fights are sustained for minutes like simc is doing. I'll probably try some catus simming to see what it does in the cleave encounter there.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby raffy » Mon Sep 16, 2013 10:06 pm

The non-SR'd Rake tick in the report you (aggixx) sent me comes from:
- SR fades
- OoC procs
- GCD is available
- SR is down, but we're below 25 energy
- Rake/Thrash (or whatever) gets Cast
Possibly the "savage_roar,if=down" line needs a pool_resource guard. Maybe this is too rare of an occurrence, but I don't think any player would actually use an OoC proc before restoring SR.
Code: Select all
pool_resource,for_next=1,if=buff.savage_roar.down
savage_roar,if=buff.savage_roar.down
Image

Posts: 5
Joined: Wed Jul 24, 2013 12:09 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Ungala » Sat Sep 21, 2013 1:09 pm

aggixx wrote:So after what literally amounts to hours and hours of works, raffy and I seem to have worked our what we think is optimal usage for Force of Nature. The usage depends somewhat on your gear, but the basic idea is like this:

  • You're at (or are about to reach) 3 charges.
  • The encounter is going to end within ~20 seconds.
  • At least one of your trinkets is up.

Now on the last line, typically what would happen is your Agility trinket procs and you spend 2 charges (remember, you're goal in between trinket procs is to keep from hitting 3 charges). Some amount of time later, your 3rd treant may finish recharging, at which point you should use it if the trinket proc is still up at that time. After the proc ends, you'll go back to keeping it from hitting max charges until you get another trinket proc.

Now there are two trinkets that present a special case in how you should use your charges (instead of just using them at any point during the trinket proc):
Rune of Re-Origination: Use them at the end of the proc (ideally about 1 second before the proc ends). This way the Rake benefits from the vastly increased mastery, and then after the proc fades they get your crit and haste back and they're auto attack does a bit more damage than if you had summoned it at the start of the proc.
Renataki's Soul Charm: Similar to Rune but for a different reason, you want to also use your charges at the end of this proc. This will get you an extremely hard hitting rake, which dwarfs the loss in auto attack damage that you would have otherwise had if you had used your charges earlier in the trinket proc.

In all of the trinket pairs that I tested, it was worth expending your charges when either trinket procs, but conceivably if one of your trinkets greatly outshadows the other in item level that may be unadvisable. That would be something you would have to sim for yourself.

Finally, I should say that if you're dealing with procs that are longer than 15 seconds, it would be beneficial to wait until 15 seconds remains on the proc to allow for a small chance of multiple procs being active at the same time, but that is of course assuming you're not losing the benefit of some other buff because of it.

Edit: Just discovered something that makes me think this post isn't entirely accurate. Take with a grain of salt.



I have just started trying out FoN, and I am a little confused on the optimal usage. Should I use all 3 charges when the conditions are met, or only use 1 charge when I hit 3 charges and save the other 2 for trinkets? I have been looking all over, and this is the best info I have found so far, but I am not 100% sure what you mean by it. Also what was discovered that makes the post not accurate, and which part?

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sat Sep 21, 2013 6:48 pm

You want to wait until the end of the trinket proc to use FoN. If neither of your trinkets are Rune or Renataki's then you should dump all of your charges immediately if your 2nd trinket procs while you're waiting for the first trinket to reach its end. If you're using Ticking Ebon Detonator, you want to dump all of your charges the second it procs (in addition to using them when your other trinket is about to end).
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Tue Sep 24, 2013 9:09 pm

Implemented Rip hotfix as well as the FoN + DoC bug (on by default, can be disabled with bugs=0) to the latest SVN version of SimC.
Image

PreviousNext

Return to Kitty DPS

Who is online

Users browsing this forum: Google [Bot] and 1 guest