Rather than keep the most recent working copy of the SimulationCraft feral script in a separate thread, I am moving it here, and making this thread sticky.

In general, I will only posts updates to the script when it is demonstrably better than the previous script that was posted here. This is the script I am using to optimize my Ovale script rather than the one that has been checked into SimulationCraft. Eventually this script, or a version that is close to it will be checked into SimulationCraft. The primary issue we are facing right now is that this script is very complex and is difficult, if not impossible, to execute without an addon. Currently DroodFocus has changes that support this script, and of course my Ovale script supports it. I will update this post as I learn about additional addons that make it possible to execute this script.

The dps gains of this script over the script that is currently checked into SimulationCraft is at least 2% for all three level 90 talents.

Well, first off, I'm kind of off on a tangent in working on the action priority at the moment. I found that I had made a typo in one of the lines that was leading it to perform in a much different manner than intended, but was leading to a large DPS gain. This is the line I'm talking about:

When I transferred this over to the healing_touch line, I intended to type "target.Fluffy_Pillow.dot.rake.remains<=action.healing_touch.gcd" to copy over the meaning of the conditional in the rake line. After examining this later I realized it was extraneous because if there is no rake on the target, dot.rake.multiplier returns 0.

But at this point, I found out that the I had typed the less than sign as a greater than sign and that the line was not working as intended. It essentially functions as "if I can DoC a rake while TF is up, do it." Removing the entire italicized portion above turned out to be neutral (no big surprise really), but what really confuses me is that changing "buff.tigers_fury.up" to "buff.tigers_fury.remains>=action.healing_touch.gcd" is a DPS loss, so the line must be serving some purpose other than just what I think it's trying to achieve.

With all that explained, essentially what I'm trying to do is deconstruct what I've learned from this entire mistake and figure out exactly why it's a DPS gain and how to abuse it into a potentially bigger DPS gain.

I did spend some time trying to approach it from the angle of "optimize DoC rip uptime and then optimize DoC rake uptime" but I ended up coming back to this for the time being because it was really bothering me that I couldn't figure it out.

Leafkiller wrote:I gather that your supposition that tick_multiplier applies to the spell being cast was true which is why you had to multiply by 1.5 on the HTs.

Yep. I asked in IRC and, long story short, Zakalwe confirmed that dot.rake.multiplier is the percent damage increase that the player had when they applied the rake that is currently on the target, and tick_multiplier is the multiplier that the current action in the list it is checking (in this case, rake) would have if you were to cast it at that moment.

Leafkiller wrote:I noticed in several places you have the same conditionals in two actions in a row with the first one having a check for DoC. I assume this is simply for debugging purposes since the second conditional will take care of that case.

That's correct. Internally, I have the two lines labelled so that I can see how many times the spell is DoC'd and how many times it is not. I didn't bother to remove it in the commited profile.

Leafkiller wrote:Did you try moving the 12 second Rake conditional ahead of the Rip extend conditionals?

I have not, but moving rake priority around, particularly the DoC'd ones, is on my list of things after I figure out this TF thing.

Leafkiller wrote:When you finished putting the Rake HT code back in, what were the counts/ratios of DoCed Rakes and Rips at? Did that approach help out or was it a red herring?

Like I said above, I put that at a standstill for now to go back to the TF issue.

Edit: Starfox pointed out the prev.natures_swiftness conditional, which allows you to take out all of the HT,if=buff.natures_swiftness.up.... lines and put one line at the top of the rotation like so:

actions+=/healing_touch,if=prev.natures_swiftness

Because the NS is only executed while the GCD is ready the conditionals can't change between the time when you activate NS and activate the healing_touch. In a way, this basically emulates a NS+HT macro that a player would use, and also sort of does what you were talking about creating an "NS+HT action". Adding an actions+=/NS line is essentially a trigger of a NS_HT combo, minus all of the work.

Just going to start double posting rather than editing into an already large post. Anyway, here's my current hypothesis on what's going on:

Currently the profile that I'm working on will clip any number of rake ticks if it is capable of casting a TF DoC rake, so perhaps by encouraging it to cast a DoC rake near when it activates TF, even if it isn't able to get it TFed, it makes it so that the next time TF comes up it's only clipping one or two ticks max to put up a TF DoC rake.

I "split" the "buff.tigers_fury.up" line into two lines, one of "buff.tigers_fury.remains>=action.healing_touch.gcd" and one of "cooldown.tigers_fury.remains>24", that way that I can tweak the number of seconds that it will go past the TF with a PS DoC Rake.

PS: So many acronyms! Thank god I don't have to say anything like OoC PS NS TF DoC rake.

Edit: Alright, done with that whole deal. I was able to pick up about 75 DPS each time I dropped the cd.tf.remains down by 1 second, and then once I got to >21, it was losing about 120 DPS per second. Going to commit this change, which is a total of about 250 DPS gain and also is quite a lot easier to read.

While it's a nice DPS gain, it lacks any conditional that checks tick_multipliers, so often time it uses the healing_touch at the completely wrong time. You can usually see something in the sample sequence like so (this happens during the BitW berserk):

Leafkiller wrote:Can you try removing the tick_multiplier test and simply clipping Rake at <=12 seconds if there is a DoC buff up? I am curious what impact this will have on DPS. It should give slightly higher DoC uptime on Rake trading it off with some lost shreds. If it is at least dps neutral, then it will be a lot easier to express in Ovale. It might also pick up some of the DoC procs that you are using for the aggressive FBs just before the fillers

In the newest action list I was able to remove the threshold entirely for a DPS gain (same thing as boost it to 15), but adding a 12 second multiplier-less line was a 1k DPS loss, and taking the multiplier off of the 15 second line was about a 2.5k DPS loss.

Leafkiller wrote:Did you try moving the 12 second Rake conditional ahead of the Rip extend conditionals?

400 DPS loss. I'm not sure if fixing the lack of a tick_multiplier conditional the PS line would have an effect on this outcome.

It looks like the dps is about 900 higher than last time I checked. It is kind of sad that so much work has gone into optimizing DoC for such huge gains, and we are all expecting a nerf...

I will check out your current changes later.

Edit:

==============I was reading through looking for the Rake changes and the following caught my eye:M healing_touch,if=buff.predatory_swiftness.up&talent.dream_of_cenarius.enabled&buff.dream_of_cenarius_damage.down&(((combo_points>=1&dot.rip.ticking&target.Fluffy_Pillow.dot.rip.remains<=(2+action.healing_touch.gcd)&target.health.pct<=25)))&(energy.time_to_max>=action.healing_touch.gcd|combo_points>=3)&(!buff.omen_of_clarity.up|combo_points>=5)

I can't help but question the inclusion of "energy.time_to_max>=action.healing_touch.gcd." If Rip only has 2+action.healing_touch.gcd seconds left, and we have the change to refresh it with DoC, worrying about energy capping seems wrong.

You never clip the Rake if it already has DoC on it. Perhaps you could add an additional rake action such as: rake,if=target.time_to_die>=8.5&buff.dream_of_cenarius_damage.up&dot.rake.remains<14.0&(dot.rake.multiplier<=tick_multiplier)

Leafkiller wrote:It looks like the dps is about 900 higher than last time I checked. It is kind of sad that so much work has gone into optimizing DoC for such huge gains, and we are all expecting a nerf...

True, but I have not much else to do anyway!

About that line: Yeah, that's something I was looking at too, but for a complexity reduction. It really was kind of a silly amount of min-maxing for a small DPS gain. I actually just committed a change to it to make it a little less complicated, I replaced these lines:

Worth noting that is still does try to HT a 5cp FB as long as it can get away with it, but when you're in that desperate situation where you're using a sub 5 amount of CP it doesn't bother.

Oh, by the way, the intent of that code was that, since any amount of CP less than 5 is not a guaranteed PS proc, that the proc chance and therefore the combo points have to be above certain thresholds if you're wasting energy or wasting an OOC proc.

But really, it was just unrealistically complicated for a marginal DPS gain. When I reran the change now that the rotation is a little different it's DPS neutral so I just removed it.

You never clip the Rake if it already has DoC on it. Perhaps you could add an additional rake action such as: rake,if=target.time_to_die>=8.5&buff.dream_of_cenarius_damage.up&dot.rake.remains<14.0&(dot.rake.multiplier<=tick_multiplier)

* the 14.0 is only a guess, and could be lower...

===========Edit:

Have you run the current action list with the other level 90 talents recently? It occurred to me that:h ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|target.time_to_die<=1may be too aggressive if one of the other two talents is being used (just in case DoC is nerfed enough that the other talents become viable again).

On the rake suggestion: I tried your suggestion, and added a !prev.rake conditional so it wouldn't cast two rakes in a row, and got about a 300 DPS gain out of it with the inital 14 second threshold. Will see if I can get more out of it by tweaking.

On the FB thing: I don't think that the aggressiveness of that FB line is directly related to DoC. I found that those thresholds could be lowered from the live values for a large DPS gain without DoC at both 85 and 90 (the values used were found to be optimal without DoC). I guess it just happens to synergize with DoC well, so you might even be able to take the values lower if DoC is talented.

Edit: Optimal value for that rake change seems to be 12 seconds, not too surprisingly. Also not surprisingly, it nukes rake's average DPET by more than 100k damage, but rakes percent damage done goes up about 2% to 35%. Committed the change, you'll see it not as it's own individual line but merged into the old DoC line.

Edit: Went to sleep shortly making that change, but it occurred to me that that change has very drastic implications on the rest of the rotation. I'd be surprised if there isn't a ton of other tweaks that can be made to it's favor.

Things that are on the list to try:

Change Rake NS usage. NSing a Rake is probably quite devalued because of the sort of DoC Rake uptime this rotation has.

Change Rake PS usage. Especially looking at the cd.tf.remains line that I added yesterday. If my hypothesis was somewhat accurate on why it was a gain then it should no longer be a gain, or at least as much of one.

Change or remove other rake lines.

Edit: I ran some stat weights, something that I hadn't done since newer iterations of the rotation. I did statweights for both before the aggressive rake change and after. Here's the stat weights I got if anyone's curious, take them with a grain of salt though because I only did 25k iterations which isn't as accurate as it could be for a scale factor run. The margin of error for these are +/- 0.19 for Wdps, and +/- 0.06 for everything else.Pre-rake change:

Agility: 5.58

Wdps: 5.50

Strength: 2.25

Mastery: 2.21

AP: 2.08

Crit: 1.90

Exp/Hit: 1.88

Haste: 1.45

Post-rake change:

Agility: 5.60

Wdps: 5.23

Mastery: 2.28

Strength: 2.22

AP: 2.06

Crit: 1.95

Exp/Hit: 1.84

Haste: 1.65

So it seems like the changes gave a huge boost to haste's value, a small boost to crit and mastery, and a small drop for Exp/Hit. Wdps also takes a huge drop (presumably because it's trading Shred [a Wdps ability] for Rake [an AP ability]), although it's still within the margin of error.

By the way, thanks for starting this thread. I think it's a really nice resource for communicating ideas.

I agree that it should still be the best. It was non-negligibly better back before they buffed it to 50%, and those numbers were based on completely broken conditional lines. If I remember correctly, you could essentially out DPS the other two talents with 25% DoC by just casting HT whenever you had PS up.

aggixx wrote:So they reverted it to what it was 2 builds ago? Nice Blizzard, nice.

Don't sweat this to much. Remember they buffed Rake 35% before this knowing we were going to take a hit. We won't be topping any meters, but maybe at least putting Rake on 2 targets may be worth while in T15 when we get some more stats.

I'm not mad about it or anything, objectively 25% isn't too bad of a place for it to be at (maybe still a little too good, tbd). I just think it's funny how they almost doubled it when it was already a little on the strong side.

Unless I'm misunderstanding, it's probably more important to figure out how they compare with in T14 first

Here's preliminary results of the DoC nerf. I'm still learning spell_querys and spell_data overrides in SimC, so there's a possibility I made the change wrong, but I did do a test profile and the DoC rakes were hitting 26% harder than non-DoC ones.

I have to note that feral in the raid sim on simulationcraft.org does about 1k less than when it's simmed locally because of the %age of the time it spends in execute range changing, so it's about a 3.5k DPS loss. It's... surprisingly resilient to such a huge nerf. Will do a quick talent comparison and then see what optimizing there is to do around the new 25% mark.

Tried to search for Heart of the Wild functionality within the Action list and could not find anything. Did a quick test on beta and just pressed the HotW button, equipped the PvP Int staff and fired away Wraths and Moonfires. After the buff was removed i had 95K DPS, for that period ie no feral abilities was used. That is alot more then i have in feral. Altough the talent is 6 min CD(so roughly only once per combat) it is quite significant dps increase during those 45 seconds.

Is that something that are in the sims now?

Edit: Reforged to haste and got 10K more dps. Haste will give us alot of dps boost in caster so with bloodlust and a haste trinket instead of my agility we can push out alot.

Yes and No. It was not good enough for any specc to use it. Guardians had better dps when staying in bear rather then going feral etc. However the last build they have changed that so it actually benefits to outside your specc during those 45 seconds.

The issue is that for Moonkins to go Cat or Cat go Moonkin means we are doing the same role, dps. That means for us to use the HotW we need to be better then we are doing. Of course we should not go dps but rather tank or healing but i think we have the same "translation" logic as guardians.

But yes it could be a bit OP at the moment but so was DoC. The idea is that it should not be as dps increase to use it "just" in rotation but rather we should also do our hybrid thing and that should be why we are choosing HotW. DoC should be selected if we are healing continuesly, HotW if we are tanking, healing or dpsing during a short amount of time, Nature Vigil aoe healing etc. We should not press the buttons only to increase our DPS but rather to be using its utility.

So basically, its not that it is a bug but rather a design that are very hard to balance.