Alpheus wrote:I disagree, the original problem with PPM still persists: there are certain events which increase the proc chance to unintended levels. For PPM this was non-normalized instants which gave you a larger sample to proc from and for RPPM it's the fact that some classes favor haste and some classes don't. The only reason we didn't get hit by this in the face this patch was because we had RoRo which conveniently forced us into getting more haste. Once we get rid of RoRo, the original PPM problems re-emerge and new "fixes" will be necessary again, which is what is happening on PTR right now.

RPPM caused close to every class that didn't stack haste prior to it to stack it now, feral is no exception to this. It's a very distinct possibility that reforging 1:1:1 would not be a thing, or at least not as much of a thing, if haste did not increase the RPPM of every single proc on our gear. I suppose we may know soon.

Alpheus wrote:No, that's only the case if you actually go for a haste proc, which a feral doesn't. Double-dipping only applies if haste increases the proc chance AND the proc performance increase is also primarily affected by haste (ie. an RPPM proc which gives haste for Balance Druids/Warlocks). In our case the proc actually decreases crit and haste, which makes it kindof "underdip" in the sense that the more haste you stack for it to proc more often the worse off you are when it procs (were it not for mastery).

Read the original post provided by Lore. Any effect that procs a stat bonus for a duration scales with haste, and causing the proc rate to scale with haste means it double dips (Rune being a partial exception to this because the stat bonus provided by the proc is not hasted).

Stenhaldi wrote:Eh, re-origination definitely does double-dip from haste, in that haste makes it proc more frequently and makes the proc more powerful. But of course due to the nature of the proc, this didn't change stat priorities at all.

Don't get me wrong, I see where they're coming from. ICD was no fun, it was a predictable clutch which had people delaying cooldowns on purpose so they could sync big bursts. Not all classes could do this, and those that could, not all players would (similar issue to shield-swapping macro in PvP for warriors). PPM also had an unfair benefit for certain classes.

So they tried to beef it up a bit. Lets have RPPM, a semi-dynamic proc chance with no ICD which gives you your beloved trinket procs. It's supposed to give players more things to master and adapt to so they could have a bit more fun while dealing damage (it also made certain trinkets with unique procs very appealing, ie. UVLS and Rune). Now, here's my problem with this: it's not random in the sense that it is not merely predictable time-wise, but it is also random in performance output. If ICD's gave you 4 procs, you played around that and everything is fine. If the same RPPM gave me 3-5 procs which I had to opportunistically seize advantage of to increase my dps, I would do so. But what's the nail on the coffin for me is that even if I play the RPPM-lottery well (ie. I take advantage of all procs), my dps can still come short of someone by a large margin who played equally well as I did except his trinket procs displayed higher overlap than mine (ie. Rune and Renataki up at the same time on pull, aoe, execute phase).

Lei Shen and Ra-den HC. My gear is identical in both parses. It even has near-identical tick-counts on Rake and Rip on Lei Shen. Except the one which ranked had higher overlap % and a bit more blades procs (especially in P2) and the second didn't. Everything else was the same, I was on the same platform, had the same cooldown usage, didn't die, fight length is only 3 seconds off. THIS is what ticks me off about RPPM.

A class whose DPS is ~70% bleeds and is fully reliant on RoRo and other procs shouldn't be facing such deviation in high-tier heroic fights when played, lets say, to 95th percentile skill.

Just a quick observation since I finally decided to check this. In my gear, rake's direct damage surpasses mangle with as little as a 4-stack of Blades (or 3-stack with dancing steel). If I were using Bad Juju, this would also hold with Juju Madness active. This breakpoint depends on mastery and weapon damage, of course, so results will not be the same in everyone's gear.

(This effect arises because rake scales solely with attack power while mangle's scaling is split between attack power and weapon damage. Attack power procs end up benefiting rake, rip, ferocious bite, and thrash much more than mangle, shred, ravage, and swipe.)

Lei Shen and Ra-den HC. My gear is identical in both parses. It even has near-identical tick-counts on Rake and Rip on Lei Shen. Except the one which ranked had higher overlap % and a bit more blades procs (especially in P2) and the second didn't. Everything else was the same, I was on the same platform, had the same cooldown usage, didn't die, fight length is only 3 seconds off. THIS is what ticks me off about RPPM.

Well, I only looked at Lei Shen and there are definitely not near identical tick counts for rip/thrash. You have 76.3% Rip uptime and 66.6% Thrash uptime compared to 69.8%/59.3%. Not saying you are in control of your dps all the time with RPPM trinkets, rather the large difference in those parses is not solely due to trinket procs. Honestly the largest single reason (imo, assuming you were able to take advantage of it) is the timing of the proc for you in those two parses. At the start of phase 3 you get a Renataki's and then Rune proc halfway through. That is just huge. The worst part is you didn't use your second pot until the end of the fight and it could have been even stronger. The second fight you didn't get a rune proc for a while and a Renataki's proc for ages. That gimps your BitW rip for execute.

I understand your frustration with RPPM. But I like it a lot better than yawning while saying 'oh here comes my trinket proc' and timing everything out. I would much rather have a dynamic situation as opposed to everything just set in stone. But again, our class is able to deal with it better than others. We don't rely on burst as many classes do for their damage. Anyways, my point is I'm more sympathetic towards other classes that hate RPPM as opposed to ferals.

Edit for a TL;DR - You're right to be frustrated at the trinkets for causing the difference in your dps. But the actual reason is the timing. Even though you had more procs in Phases 1 and 2 that didn't equate to a meaningful difference. Most of the difference came from the timing of your BitW rip relative to trinket procs.

Shorter duration and higher proc rate is going to make RPPM trinkets a lot less random over the course of a fight. This is a change I've been pushing for a while and I was pleasantly surprised to see it on PTR.

aggixx wrote:Found and committed a 1,750 DPS gain out of letting strong Rakes expire before reapplying. Props to raffy for trying it in Catus, and Stenhaldi and a bunch of other people that have thought of this before, just haven't got around to trying until now (didn't think it would be so big! ).

I suspected that may be that case but regardless I'm not going to make that change because it's not accurate to in-game. In the sim it knows exactly how many seconds remain until Rip falls off and therefore it does not have to react to the dot expiring, but in reality thanks to the buginess that is Rip the time it expires at is "random" and is going to force a more significant amount of downtime because of it.

Vularo wrote:found something weird. the treants benefit from DoC proc, but doenst consume it. and sometimes in pvp. the last rake tick from the treants ignore resilence on players.

Tested this a bit and have some details: Only periodic damage benefits from DoC (so only the 5 ticks following the initial hit of the Rake) and the state of the buff is snapshotted when the rake is applied, as you would expect.

Some HotW+SotF simc optimizations (not yet tested in DoC/non-SotF which is why I split everything up the way I did in case someone else wants to test) This is using the T16N set.

Modify Thrash line to have |combo_points>=5 instead of having thrash additionally in "filler"~200 DPS in HotW, no change in DoCactions.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

Modify newly moved Rake filler (latter is more accurate end of fight and how I would implement it in ovale, former simply looks cleaner in simc since end of fight is such a small portion of the sim; note that this line should be tested with Soul Charm as it had some weird interactions last time I tried it):~400 DPS in HotW and DoCactions.filler+=/rake,if=action.rake.tick_damage*(dot.rake.ticks_remain+1)-dot.rake.tick_dmg*dot.rake.ticks_remain>action.mangle_cat.hit_damageoractions.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_damageactions.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

Added expiring Rune logic for Rip (the combo_points>=4 might be a problem for DoC as it lowers the chance of a PS proc but in HotW this is the best number [both 3 and 5 sim lower]):~300 DPS in HotW, ~200 DPS in DoCactions.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

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.

Last edited by aggixx on Mon Sep 02, 2013 6:57 pm, edited 2 times in total.

ShmooDude wrote:Needs testing in T15 gear but I'm betting it all still works except maybe the modified rake line (cause of the weird soul charm interaction, but given that the current script currently overwrites rake anytime its superior [as opposed to 112% ratio] and the fact that it ticks up twice as fast I don't see it being an issue anymore).

Maybe not a big deal. In high enough item level gear the difference between Rake and Mangle initial damage with Renataki's up is so small that this might not even come into play at all.

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

# 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_attackactions.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<=25actions.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<3actions.basic+=/virmens_bite_potion,if=(target.health.pct<30&buff.berserk.up)|target.time_to_die<=40actions.basic+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.reactactions.basic+=/berserk,if=buff.tigers_fury.upactions.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.15actions.basic+=/ferocious_bite,if=combo_points>=5&target.health.pct<=25&dot.rip.tickingactions.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-3actions.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_dmgactions.basic+=/run_action_list,name=filler,if=buff.feral_fury.reactactions.basic+=/pool_resource,for_next=1actions.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.reactactions.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.5actions.basic+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.upactions.basic+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3actions.basic+=/run_action_list,name=filler,if=energy.time_to_max<=1.0

actions.advanced=auto_attackactions.advanced+=/skull_bash_catactions.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<=25actions.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.downactions.advanced+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.reactactions.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>=6actions.advanced+=/ferocious_bite,if=target.time_to_die<=1&combo_points>=3actions.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>30actions.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<=25actions.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.remainsactions.advanced+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains&dot.rip.ticking# Pool to 50 energy for Ferocious Bite.actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=50|(buff.berserk.up&energy>=25))&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)# 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&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)# 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*1.12|(dot.rake.remains<3&action.rake.tick_damage%dot.rake.tick_dmg>=0.75))actions.advanced+=/run_action_list,name=filler,if=buff.feral_fury.reactactions.advanced+=/pool_resource,for_next=1actions.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.tickingactions.advanced+=/pool_resource,for_next=1actions.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.tickingactions.advanced+=/run_action_list,name=filler,if=buff.omen_of_clarity.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.5actions.advanced+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.upactions.advanced+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3actions.advanced+=/run_action_list,name=filler,if=energy.time_to_max<=1.0

EDIT: Also, on the treant thing. They'd probably only be a DPS up in single target fights or fights with a lot of downtime (where the treants can recharge). SotF gives energy which is the only one of the talents in that tier which can translate into AoE damage (thrash/swipe) and given the (from what I hear, haven't done a lot of research yet) heavy focus on AoE in Siege its important to keep that in mind.

override.spell_data=effect.197127.base_value=30override.spell_data=effect.195368.base_value=30# 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.

# 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_attackactions.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<=25actions.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<3actions.basic+=/virmens_bite_potion,if=(target.health.pct<30&buff.berserk.up)|target.time_to_die<=40actions.basic+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.reactactions.basic+=/berserk,if=buff.tigers_fury.upactions.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.15actions.basic+=/ferocious_bite,if=combo_points>=5&target.health.pct<=25&dot.rip.tickingactions.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-3actions.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_dmgactions.basic+=/run_action_list,name=filler,if=buff.feral_fury.reactactions.basic+=/pool_resource,for_next=1actions.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.reactactions.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.5actions.basic+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.upactions.basic+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3actions.basic+=/run_action_list,name=filler,if=energy.time_to_max<=1.0

actions.advanced=auto_attackactions.advanced+=/skull_bash_catactions.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<=25actions.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.downactions.advanced+=/tigers_fury,if=energy<=35&!buff.omen_of_clarity.reactactions.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>=6actions.advanced+=/ferocious_bite,if=target.time_to_die<=1&combo_points>=3actions.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 a DPS upgrade vs FB during execute rangeactions.advanced+=/rip,if=combo_points>=5&(tick_damage*(1+crit_pct_current)-tick_dmg*(1+crit_pct_current))*target.time_to_die%2>=action.ferocious_bite.hit_damage*(1+action.ferocious_bite.crit_pct_current)&target.health.pct<=25# 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# Overwrite Rip if it's at least 15% stronger than the current or Rune is expiring and overwriting Rip will not downgrade Rip's damage much.actions.advanced+=/rip,if=combo_points>=5&action.rip.tick_damage%dot.rip.tick_dmg>=1.15&target.health.pct>25actions.advanced+=/rip,if=combo_points>=4&action.rip.tick_damage%dot.rip.tick_dmg>=0.95&buff.rune_of_reorigination.up&buff.rune_of_reorigination.remains<=1.5&target.health.pct>25actions.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)&target.health.pct>25actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remainsactions.advanced+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains&dot.rip.ticking# Pool to 50 energy for Ferocious Bite.actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=50|(buff.berserk.up&energy>=25))&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)# 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&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)# 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*1.12|(dot.rake.remains<3&action.rake.tick_damage%dot.rake.tick_dmg>=0.75))actions.advanced+=/run_action_list,name=filler,if=buff.feral_fury.reactactions.advanced+=/pool_resource,for_next=1actions.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.tickingactions.advanced+=/pool_resource,for_next=1actions.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.tickingactions.advanced+=/run_action_list,name=filler,if=buff.omen_of_clarity.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.5actions.advanced+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.upactions.advanced+=/run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3actions.advanced+=/run_action_list,name=filler,if=energy.time_to_max<=1.0actions.advanced+=/run_action_list,name=filler,if=talent.dream_of_cenarius.enabled&buff.predatory_swiftness.remains>1

actions.filler=ravage# Rake if it will result in more damage than using Mangle.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_damageactions.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_damageactions.filler+=/shred,if=(buff.omen_of_clarity.react|buff.berserk.up|energy.regen>=15|buff.feral_fury.react)&buff.king_of_the_jungle.downactions.filler+=/mangle_cat,if=buff.king_of_the_jungle.down

I'm a bit confused though, how come there's a Rune combo with Renataki doing ~313k and an unknown combo with Rune doing 317k? Is this just deviation for the same trinket or did you use a generic one? Also, from the dps levels I take this is done in 553 gear with 4set?

The 2nd chart is Rune + X, the 3rd chart is generic trinket + X. I included Rune because I wanted some comparison point of how good it actually is but I just realized I screwed it up, so just ignore the ones rankings for Rune in the 3rd chart.

It's interesting to note that the energy spikes are much lower during berserk and TF so the risk of energy capping is much lower. This is something to keep in mind when using heroism at such a time that there's only one target up (and aoe dps isn't dominant/necessary throughout the fight).

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

actions.advanced+=/savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains&dot.rip.tickingactions.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# Pool to 50 energy for Ferocious Bite.actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=50|(buff.berserk.up&energy>=25))&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)actions.advanced+=/pool_resource,if=combo_points>=5&!(energy>=50|(buff.berserk.up&energy>=25))&dot.rip.ticking&!(dot.rip.remains-5<=energy.time_to_max-1&dot.rip.remains-5<=cooldown.tigers_fury.remains)&!(buff.savage_roar.remains-10<=energy.time_to_max-1&buff.savage_roar.remains-10<=cooldown.tigers_fury.remains)# 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&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)actions.advanced+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&!(dot.rip.remains-5<=energy.time_to_max-1&dot.rip.remains-5<=cooldown.tigers_fury.remains)&!(buff.savage_roar.remains-10<=energy.time_to_max-1&buff.savage_roar.remains-10<=cooldown.tigers_fury.remains)

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 also picked up another ~300 dps (in the FoN profile) by pooling to 90 energy for ferocious bite instead of 50:

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:

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# 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&!(dot.rip.remains-5<=energy.time_to_max-1&dot.rip.remains-5<=cooldown.tigers_fury.remains)&!(buff.savage_roar.remains-10<=energy.time_to_max-1&buff.savage_roar.remains-10<=cooldown.tigers_fury.remains)# 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&!(dot.rip.remains-5<=energy.time_to_max-1&dot.rip.remains-5<=cooldown.tigers_fury.remains)&!(buff.savage_roar.remains-10<=energy.time_to_max-1&buff.savage_roar.remains-10<=cooldown.tigers_fury.remains)# 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))# 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&!(dot.rip.remains-5<=energy.time_to_max-1&dot.rip.remains-5<=cooldown.tigers_fury.remains)&!(buff.savage_roar.remains-10<=energy.time_to_max-1&buff.savage_roar.remains-10<=cooldown.tigers_fury.remains)# 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&!(dot.rip.remains-5<=energy.time_to_max-1&dot.rip.remains-5<=cooldown.tigers_fury.remains)&!(buff.savage_roar.remains-10<=energy.time_to_max-1&buff.savage_roar.remains-10<=cooldown.tigers_fury.remains)

This picked up another ~200 dps.

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.

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.

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