Register

Simulationcraft - Feral rotation discussion and script

Face-rippin fun.
Exalted
User avatar
Posts: 1189
Joined: Fri Nov 25, 2011 7:49 pm

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sun Aug 04, 2013 12:54 am

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.

This is true, but I wish it wasn't :cry:
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Mon Aug 05, 2013 7:56 am

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

Compare these logs:

http://www.worldoflogs.com/reports/rt-i ... 018&e=2638
http://www.worldoflogs.com/reports/rt-r ... 427&e=3043

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Mon Aug 05, 2013 1:50 pm

scorpio0920 wrote:http://www.simulationcraft.org/530/Raid_T15H.html

SimulationCraft 530-6 (r16981)

I checked the others class, the mob casting in SIM-C r6.


Yeah, seems like this behavior got turned on by default. Weird decision, but there you have it.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Stenhaldi » Fri Aug 09, 2013 8:42 am

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

Revered
Posts: 216
Joined: Tue Jun 28, 2011 10:41 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Dysheki » Fri Aug 09, 2013 9:10 am

Alpheus wrote:Compare these logs:

http://www.worldoflogs.com/reports/rt-i ... 018&e=2638
http://www.worldoflogs.com/reports/rt-r ... 427&e=3043

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.

Phase 3 dps from your logs (400k as opposed to sub 200k):

http://www.worldoflogs.com/reports/rt-i ... 466&e=2640
http://www.worldoflogs.com/reports/rt-r ... 884&e=3045

Your P1-P2 logs actually show both parses being similar:

http://www.worldoflogs.com/reports/rt-i ... 018&e=2419
http://www.worldoflogs.com/reports/rt-r ... 427&e=2837

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Stenhaldi » Fri Aug 09, 2013 9:54 am

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.

Honored
Posts: 77
Joined: Mon Jul 22, 2013 11:51 am

Re: Simulationcraft - Feral rotation discussion and script

Postby cg1351 » Sun Aug 25, 2013 2:56 am

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! :shock:).


Thought this was common knowledge..

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

Re: Simulationcraft - Feral rotation discussion and script

Postby stormchen » Wed Aug 28, 2013 5:42 am

I've noticed that changing

Code: Select all
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)


to

Code: Select all
rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&action.rip.tick_damage%dot.rip.tick_dmg>=0.55


is a ~300dps gain. :-)

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Wed Aug 28, 2013 3:57 pm

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

Posts: 7
Joined: Sun Sep 01, 2013 9:15 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Vularo » Sun Sep 01, 2013 9:18 am

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.

Honored
Posts: 77
Joined: Mon Jul 22, 2013 11:51 am

Re: Simulationcraft - Feral rotation discussion and script

Postby cg1351 » Sun Sep 01, 2013 10:15 am

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.


nice find :) now let's keep this hush hush :P

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Sun Sep 01, 2013 10:58 am

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Sun Sep 01, 2013 11:12 am

Vularo wrote:found something weird. the treants benefit from DoC proc, but doenst consume it.


THIS IS MADNESS.
Image

User avatar
Posts: 14
Joined: Wed Aug 21, 2013 11:00 am

Re: Simulationcraft - Feral rotation discussion and script

Postby Rayen » Sun Sep 01, 2013 1:48 pm

Vularo wrote:found something weird. the treants benefit from DoC proc, but doenst consume it.


Sounds like a bug...Vortex 2.0?
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Mon Sep 02, 2013 6:21 pm

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

Move Rake Damage > Mangle Damage to filler:
~400 DPS in HotW, ~150 in DoC
actions.filler+=/rake,if=action.rake.tick_damage>action.mangle_cat.hit_damage&action.rake.tick_damage>=dot.rake.tick_dmg

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 DoC
actions.filler+=/rake,if=action.rake.tick_damage*(dot.rake.ticks_remain+1)-dot.rake.tick_dmg*dot.rake.ticks_remain>action.mangle_cat.hit_damage
or
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

Added expiring Rune logic for Thrash:
~400 DPS in HotW and DoC
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

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

Modified Shred filler line to check for Feral Fury (T16 2P)
~200 DPS in HotW, ~150 DPS in DoC
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


Total gain of all modifications: ~1900 DPS in HotW, ~1250 DPS in DoC

Gonna futz around with it some more later (especially FB logic) but figured I'd post what I got for now.

EDIT: DPS numbers for DoC use the 25% DoC buff, not the 30% it is on the PTR at the moment.
Last edited by ShmooDude on Tue Sep 03, 2013 3:58 am, edited 3 times in total.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Mon Sep 02, 2013 6:24 pm

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Mon Sep 02, 2013 6:27 pm

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby stormchen » Mon Sep 02, 2013 11:36 pm

ShmooDude wrote: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.


Hey,
can you maybe share your script? :)

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

Re: Simulationcraft - Feral rotation discussion and script

Postby ShmooDude » Tue Sep 03, 2013 12:35 am

stormchen wrote:
ShmooDude wrote: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.


Hey,
can you maybe share your script? :)


Spoiler: show
Code: Select all
#!./simc
ptr=1
druid="Druid_Feral_T16N_Adv_Rotation"
level=90
race=troll
role=attack
position=back
talents=010101
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
# 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.react
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
actions.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.5
actions.advanced+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.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.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: 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.

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Tue Sep 03, 2013 2:45 am

Comparison between FoN and SotF:

Image

FoN trinket comparison using Rune of Re-Origination:

Image

FoN trinket comparison without Rune of Re-Origination (edit: I'm dumb and realized I botched the RoR ranking in this report, it doesn't mean anything so just ignore it):

Image
Last edited by aggixx on Tue Sep 03, 2013 4:40 am, edited 3 times in total.
Image

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:08 am

Spoiler: show
Code: Select all
#!./simc
ptr=1
druid="Druid_Feral_T16N_Adv_Rotation"
level=90
race=troll
role=attack
position=back
talents=010102
glyphs=savagery
spec=feral

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

# 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 a DPS upgrade vs FB during execute range
actions.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>25
actions.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>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)&target.health.pct>25
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
# 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.react
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
actions.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.5
actions.advanced+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.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.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_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


Simc script to base the 5.4 version of Ovale on (mostly the Rip lines changed to execute range vs non-execute range)

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Tue Sep 03, 2013 4:35 am

aggixx wrote:
[sims]
...
[/sims]



Thanks aggix!

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby aggixx » Tue Sep 03, 2013 4:42 am

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.

Yes, 553 + 4p.
Image

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Alpheus » Tue Sep 03, 2013 6:02 am

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

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

Re: Simulationcraft - Feral rotation discussion and script

Postby Stenhaldi » Tue Sep 03, 2013 6:44 am

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).
Spoiler: show
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
# 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:
Spoiler: show
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)
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)
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:
Spoiler: show
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.
Spoiler: show
actions.advanced+=/use_item,slot=hands,if=buff.tigers_fury.up
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

...

# 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+=/thrash_cat,if=target.time_to_die>=6&(dot.thrash_cat.remains<3|action.thrash_cat.tick_damage%dot.thrash_cat.tick_dmg>=1.7)&(combo_points>=5|buff.omen_of_clarity.react|(combo_points>=3&dot.rip.remains>=5&buff.savage_roar.remains>=10)|(combo_points>=1&cooldown.tigers_fury.remains<6&dot.rip.remains>=5&buff.savage_roar.remains>=10)|buff.berserk.up)&dot.rip.ticking
# 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+=/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)&dot.rip.ticking

actions.advanced+=/run_action_list,name=filler,if=buff.omen_of_clarity.react

...

actions.filler=ravage
actions.filler+=/thrash_cat,if=target.time_to_die>=6&dot.thrash_cat.remains<3&combo_points>=5
actions.filler+=/shred,if=(buff.omen_of_clarity.react|buff.berserk.up|energy.regen>=15|buff.feral_fury.up)&buff.king_of_the_jungle.down
Those numbers are just guesses but this already picks up ~1000 dps.

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).
Spoiler: show
actions.advanced+=/run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up|buff.natures_vigil.up
actions.advanced+=/run_action_list,name=filler,if=buff.berserk.up
This picks up ~500 dps.

PreviousNext

Return to Kitty DPS

Who is online

Users browsing this forum: No registered users and 4 guests