Can you elaborate on the pre-conditioning? Are you suggesting we have several scripts depending on the talent combination, or a way to modify the script the user sees based on the talents using some conditionals in the script?

BTW, I just looked at the action list you posted. If I simply removed two of the tier 4 talents that are not sued as often, Force of Nature and Incarnation, it would save at least 11 lines in the script. There are some changes I would make to that based on the work that has gone into the current BiS script, particularly ones that deal with some of the difficulties we see in game executing the script.

Leafkiller wrote:Can you elaborate on the pre-conditioning? Are you suggesting we have several scripts depending on the talent combination, or a way to modify the script the user sees based on the talents using some conditionals in the script?

Well there are two general ways to adapt a action list to the user in SimC:

1) When importing a Character ( let's say from the armory ), you parse his Class, Spec, Talents, Glyphs, Race, Level, and build a custom action list tailored to that setup. Easily done with some if / else statements in eg. druid_t::init_actions().

The advantage is that you have a small and efficient action list for exactly the things you need.

Maybe my simc expression parser is just shitty but, when I encounter an if-expression, I parse it into a condition object that I can evaluate to a boolean, and then add it to my action list as the pair: <Spell, IfCond> Then during simulation evaluation, for each <Spell,IfCond> if (IfCond) do Spell.

Whereas, if I knew, at the time of parsing, that one of the conditions involves a constant (a talent), I could straight up drop the condition from my action list. Now that I write this, I can probably just add this feature to my own code w/o a script modification.

I was just suggesting, that it might be more clearly stated, that if the entire action depends on some talent, you could pull the talent out of the if-expression so it could be tested directly. Or, maybe as a more flexible option, something like:

Thanks for listing the options for customizing the script at import time. It is very helpful.

The shadow priest code has broken down script generation to a very detailed level, literally adding specific actions depending on different conditionals, which is more fine-grained than what I am thinking of - simply breaking what we have now into four scripts.

In each of the key dps tiers for ferals, tier 4 and tier 6, two of the talents are pretty similar for what we model in the rotation, and one talent is different. For tier 4, Soul of the Forest (SotF) changes the rotation significantly while Force of Nature (FoN) and Incarnation (Inc) are pretty similar (Inc changes the filler we use to Ravage! from Shred while it is active, but the actions are identical other than the spell being cast). In tier 6, Dream of Cenarius (DoC) has a very complex rotation, while Nature's Vigil (NV) and Heart of the Wild (HotW) have very similar rotations that are simpler than the DoC rotation.

We end up with a 2x2 matrix for rotations to support (which is better than trying to deal with a 3x3 matrix or 9 rotations):

This breakdown will make the rotations a user sees much simpler and will allow us to focus on optimizing each of the four rotations separately without worrying about side effects. It is a very common design pattern for managing complexity in state machines.

@Raffy - I don't think we are going to get changes to the simc rotation at that level since what they have works.

On a separate but related note (and related to my last post), the complexity we are dealing with for the feral rotation is more than is typical for a spec. It is closer to the complexity for modeling the different specs in the pure classes. Due to the way Blizzard built our talent trees, we literally have four rotations with significant differences. Even compared to the other Druid classes, the impact of the talents is much more significant for ferals. I think this is central to the push back we have gotten from the simc community on the complexity of our rotation, since they are used to separate action lists for the different specs in classes, and don't really think of the feral on the same level as, for example, a rogue, but rather see us more on the level of, for example, a subtlety rogue.

Breaking the current script into four scripts recognizes the complexity we are dealing with.

Leafkiller wrote:Breaking the current script into four scripts recognizes the complexity we are dealing with.

I think this is a good idea but I'm worried (for my own ability to use the script) how this is gonna be implemented. Is there gonna be 4 separate scripts? Or is the action list code going to get hardcoded into simc's source (re: druid_t::init_actions(), etc..). I'd vote for as much logic as possible staying in the script.

I was thinking of four separate scripts per the matrix above. Based on the user's spec we would simply import the appropriate script/action list. This will be trivial for you to deal with (and me in Ovale).

I don't think seperating into that many scripts is the right choice, it would make it a huge chore to maintain. I already wrote the code for generating the action list line-by-line based on talent requirements etc, we just need to make things a bit less daunting in general.

I think there is an advantage to going to 4 chunks since we are starting to deal with side effects now and that is a natural break down. I will probably give that a try and see what the rotations look like and if I can improve them more easily that way.

I did notice that there is a significant DPS discrepancy between the action list we've been using and a generated one so I definitely messed something up somewhere, I'll see if I can take some time to find the problem tomorrow and then I'll upload a patch file somewhere.

Sounds good, thanks for the notice. I made that BiS list months ago before we knew where any of the stuff came from and what was and wasn't obtainable, so I probably just missed em or thought they were a heroic trash drop =)

1. Could the AoE rotation be reposted as a full simc script (complete with shebang and gear stuff), instead of just the action list snippet? I have trouble parsing it automatically because I can't figure out (without some kludgy hack) the /use_item slot from the eternal_blossom_grips -> Hands.

2. Also, I asked aggixx about this last night but I think my question was wrong (as I was wondering about DoC), could the AoE script be improved to support HotW and NV?

Sorcerer wrote:Btw, there are 509 bracers, heroic version of HoF trash drop. Thing is, they are available only through BMAH ... THX blizzard.They are mastery + hit I think, but yeah, pointless to change.

It no longer consumes both charges of doc when you use it with an aoe ability that hits more than one mob.

I'm assuming this was fixed in 5.1.

They actually fxied this sometime before. Swipe is the same way now and only consumes 1 stack. I noticed the fix around the time of the HoF release (saw during our first Windlord attempts). Just didn't get around to writting it up.