I am sure we can sim this. The issue you are describing is one of deciding to clip SRs at certain points in order to minimize the frequency it is cast. We really have not tried to sim a 2 target cleave rotation, and I am sure in so doing we would learn a few things and probably refine what advanced players such as yourself are doing.

First time post on the site and I have to say I really enjoy and value the information that I read on this website. With this being said I also enjoy the script, it is teaching me to be a lot more agressive with using NS to get stronger rips. One thing I noticed however, is that from time to time the addon flickers when suggesting and it seems the suggested ability is "redded out?". Is this working as intended or is there an issue I'm missing?

A small thing - would it be possible to rearrange the order the check boxes appear in the options list for the script? The main one I change regularly is the "frontal attack" option which is right down the bottom of the list off the bottom of my screen. I could obviously edit the script myself, but then that kind of defeats the purpose of using Neriens scripts.

Fattycopjr wrote:First time post on the site and I have to say I really enjoy and value the information that I read on this website. With this being said I also enjoy the script, it is teaching me to be a lot more agressive with using NS to get stronger rips. One thing I noticed however, is that from time to time the addon flickers when suggesting and it seems the suggested ability is "redded out?". Is this working as intended or is there an issue I'm missing?

The script is trying to figure out which ability it is going to recomend next. The red is because you will be waiting. The flickering has actually improved a lot recently, but it will likely not go away completly. Just give it a little time to pool energy and see what it recomends next. As you get in the habit of things you should be able to look at your buff/debuff timers, and combo points and guess what the script will be suggesting next. Just takes some practice.

RareBeast wrote:A small thing - would it be possible to rearrange the order the check boxes appear in the options list for the script? The main one I change regularly is the "frontal attack" option which is right down the bottom of the list off the bottom of my screen. I could obviously edit the script myself, but then that kind of defeats the purpose of using Neriens scripts.

You should be able to do this yourself. If you look in the script in ovale near the top the check boxes are defined. The order they are defined is the order they are distplayed. Just cut and paste the "Attack from the front" to the top and you should be golden. I would put an example in but I am at work, and can't get to a copy of the script. I will update this later when I get home.

AddFunction NotInCombat{ if not InCombat() { if not BuffPresent(str_agi_int any=1) Spell(mark_of_the_wild) if not BuffPresent(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) Spell(healing_touch) unless Stance(3) Spell(cat_form) if BuffExpires(savage_roar_buff) SavageRoar() if TalentPoints(force_of_nature_talent) Spell(treants) }}AddFunction StartRotation{ if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and BuffRemains(predatory_swiftness) <=1.5 and BuffExpires(dream_of_cenarius_damage) Spell(healing_touch) if BuffExpires(savage_roar_buff) SavageRoar() if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and ComboPoints() >= 4 and BuffStacks(dream_of_cenarius_damage) <2 Spell(healing_touch) if TalentPoints(dream_of_cenarius_talent) and PreviousSpell(natures_swiftness) Spell(healing_touch)}

AddFunction TFBerserk{ # TF + Berserk logic - only show Berserk if both are off of cooldown - everyone should macro TF to their Berserk key if not {BuffPresent(BERSERK) or BuffPresent(CLEARCASTING)} { if Energy(less 36) and {0s before Spell(TIGERSFURY)} { if CheckBoxOn(berserk) Spell(BERSERK) Spell(TIGERSFURY) } }

#In case Berserk was not cast with TF if {BuffPresent(TIGERSFURY) or {TimeUntilTargetIsDead() <15 and SpellCooldown(TIGERSFURY) >6 }} and CheckBoxOn(berserk) Spell(BERSERK)}

#Cooldowns #actions.doc+=/incarnation,if=enabled&energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0 #actions.doc+=/tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up #actions.doc+=/berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6) # TF + Berserk logic - only show Berserk if both are off of cooldown - everyone should macro TF to their Berserk key if not {BuffPresent(BERSERK) or BuffPresent(CLEARCASTING)} { if Energy(less 36) and {0s before Spell(TIGERSFURY)} { if CheckBoxOn(berserk) Spell(BERSERK) Spell(TIGERSFURY) } } #In case Berserk was not cast with TF if {BuffPresent(TIGERSFURY) or {TimeUntilTargetIsDead() <15 and SpellCooldown(TIGERSFURY) >6 }} and CheckBoxOn(berserk) Spell(BERSERK) #Cooldowns that should be popped with Berserk if BuffPresent(BERSERK) { if TalentPoints(incarnation_talent) Spell(incarnation) }

# Two conditions for FB during Blood of the Water phase # Add in FB code for end of fight - only do this is Rip buff is present #actions.doc+=/ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25 if BITWRange() and ComboPoints(more 0) and TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 2.9) Spell(FEROCIOUSBITE)

#actions.doc+=/thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3 if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) Spell(THRASHCAT)

# Blood in the water code - mostly for DoC - combined the BITW check to make Ovale more efficient #actions.doc+=/savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25 #actions.doc+=/natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25 #actions.doc+=/rip,if=combo_points>=5&tick_multiplier%dot.rip.multiplier>1.14&target.health.pct<=25&target.time_to_die>30 #actions.doc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25 if BITWRange() { if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) SavageRoar() if BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 Spell(natures_swiftness) if ComboPoints() >=5 and TimeUntilTargetIsDead() >30 and RipTickDamageRatio() >=114 Spell(RIP) # Pool here if TargetDebuffPresent(RIP) and ComboPoints() >=5 Spell(FEROCIOUSBITE) }

#actions.doc+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&buff.dream_of_cenarius_damage.up #actions.doc+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<=tick_multiplier if BuffPresent(dream_of_cenarius_damage) and ComboPoints() >=5 and TimeUntilTargetIsDead() >6 and {TargetDebuffExpires(RIP 2) or {TargetDebuffExpires(RIP 6) and RipTickDamageRatio() >=100 and not BITWRange()}} Spell(RIP)

#actions.doc+=/natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&dot.rip.remains<3&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)&target.health.pct>25 if BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and TargetDebuffExpires(RIP) <3 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)} and not BITWRange() Spell(natures_swiftness)

# Time to recast Rip - clip if possible - try to hold off for TF #actions.doc+=/rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2.0&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains) if ComboPoints() >=5 and TimeUntilTargetIsDead() >=6 and TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)} Spell(RIP)

# Two conditions for FB during Blood of the Water phase # Add in FB code for end of fight - only do this is Rip buff is present if BITWRange() and ComboPoints(more 0) and TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 2.9) Spell(FEROCIOUSBITE) if CheckBoxOn(lucioles) and target.DebuffStacks(weakened_armor any=1) <3 FFF()

if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) and BuffExpires(dream_of_cenarius_damage) Spell(THRASHCAT)

if {TimeUntilTargetIsDead() <=4 and ComboPoints() >=5} or {TimeUntilTargetIsDead() <=1 and ComboPoints() >=3} Spell(FEROCIOUSBITE)

# Blood in the water code - mostly for DoC - combined the BITW check to make Ovale more efficient if BITWRange() { if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) SavageRoar() if TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 Spell(natures_swiftness) if ComboPoints() >=5 and TimeUntilTargetIsDead() >30 and RipTickDamageRatio() >=114 Spell(RIP) # Pool here if TargetDebuffPresent(RIP) and ComboPoints() >=5 Spell(FEROCIOUSBITE) }

if BuffPresent(dream_of_cenarius_damage) and ComboPoints() >=5 and TimeUntilTargetIsDead() >6 and {TargetDebuffExpires(RIP 2) or {TargetDebuffExpires(RIP 6) and RipTickDamageRatio() >=100 and not BITWRange()}} Spell(RIP)

if TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5 and TargetDebuffExpires(RIP) <3 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)} and not BITWRange() Spell(natures_swiftness)

# Time to recast Rip - clip if possible - try to hold off for TF if ComboPoints() >=5 and TimeUntilTargetIsDead() >=6 and TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)} Spell(RIP)

if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) SavageRoar() if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and not TalentPoints(dream_of_cenarius_talent) { if not {TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)}} SavageRoar() }

if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) Spell(THRASHCAT)

#Extends Rip with shred/mangle/ravage if TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 4) and Counter(ripshreds less 3) AddCombo()

if ComboPoints() >=5 and BuffRemains(savage_roar_buff) <=6 and target.DebuffPresent(RIP) and {BuffRemains(savage_roar_buff)+2 <= ExtendedRipDuration()} SavageRoar()

# Doc FB and pooling code here

if ComboPoints() >=5 and target.DebuffPresent(RIP) and {{BuffPresent(BERSERK) and ExtendedRipDuration() > 6} or ExtendedRipDuration() >10} Spell(FEROCIOUSBITE)

AddFunction Fillers{ # take care of OOC when it was not used for Thrash if BuffPresent(CLEARCASTING) AddCombo()

# Shred for combo points for Rip or SR if ComboPoints(less 5) and TargetDebuffExpires(RIP 3) AddCombo() if ComboPoints(less 1) and BuffExpires(savage_roar_buff 2) AddCombo()

# aggressive shred for Predatory Swiftness and/or Soul of the Forest if TalentPoints(dream_of_cenarius_talent) and BuffRemains(predatory_swiftness) > 1 AddCombo() if not TalentPoints(dream_of_cenarius_talent) and TalentPoints(soul_of_the_forest) and ComboPoints() < 5 AddCombo()

if TimeUntilTargetIsDead() <= 8.5 AddCombo()

# Shred aggressively for Berserk and TF if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) or BuffPresent(natures_vigil_buff) AddCombo()

# Shred to burn off energy so we can TF without capping if { 4s before Spell(TIGERSFURY) } AddCombo()

if Stance(3) { StartRotation() MainRotation() } if Stance(1) { if BuffPresent(heart_of_the_wild_spell) Spell(FRENZIEDREGEN) if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form) } if Stance(0) { if BuffPresent(heart_of_the_wild_spell) { if BuffExpires(heart_of_the_wild_spell) Texture(spell_holy_blessingofagility) } if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form) } if Stance(4) or Stance(2) Spell(cat_form)}

Okay since i've admittedly started to lay back during a few of the raids i've picked up my ovale again.

There is a strange usage of Nature's Swiftness+TF+HT. It goes like Tiger's Fury-> NS->HT i would like to have it NS->HT->TF because you waste seconds using NS->HT that would maybe've been enough time to hit another spell with TF since you would be energy caped as well since you poped TF first.Also sometimes on OoC procs we'r poping Thrash when DoC is up when Rake would've been boosted with DoC and a trinket from being just SR buffed and it would've done way higher damage then the first Rake application.

First time poster, long time lurker and fan of Ovale. I want to say thank you to each and every one of you working on this. I've use other similar add-ons but none can compare to Ovale + Nerien's.

I've just got one question: is the feral part of the balance/feral script in Nerien's the same as in the feral/guardian script? I have the pleasure of being a dedicated kitty in my raid group but I switch to moonkin just for a change of pace for dailies, dungeons, lfr, etc. I've been switching between the balance/feral and feral/guardian scripts. Some times, after playing moonkin, I forget to switch and only realize it after combat has started and notice the suggestions don't seem to be the same.

Etapicx wrote:There is a strange usage of Nature's Swiftness+TF+HT. It goes like Tiger's Fury-> NS->HT i would like to have it NS->HT->TF because you waste seconds using NS->HT that would maybe've been enough time to hit another spell with TF since you would be energy caped as well since you poped TF first.

Yes it's the same with Berserk, for exemple at the pull when you don't get Predatory Swiftness, the script suggests to use Berserk (+ TF) and then NS -> HT, which wastes one GCD from Berserk buff.

It's a GCD and a half. HT in Cat form triggers a 1.5 second GCD instead of a 1 second like all the rest of our abilities. I have been pressing for a fix since beta, but have not gotten anything back regarding it. I will do some work this weekend to see if I can make the HT happen before TF as often as possible. However in some cases TF is required to get enough combo points to use the PS proc in time. That is something I will not likely be able to adjust.

This is likely to be an Ovale issue rather than a script issue, but if I change from casting symbiosis on a shaman to another class the script still recommends casting the spirit wolves even though I no longer can. Pretty sure a /reload fixes it but usually I realise once in combat an it is too late.

On an unrelated note, a question on the tick box for Faeryfire in the script. If it is off, does the script never recommend FF? Or only if it is missing? I find with it ticked it casts it any time there is nothing else to press and it is off CD. This is good in theory as it ensures it doesn't fall off if things get hectic rotation-wise but I find it a little bit overkill. I'd much rather more time spent showing me the next ability to be used to maintain the 'rotation' (and giving my old reflexes more time to prepare) than having it often showing FF and making me try and react faster afterward casting FF.

I really need to have a look at learning how to modify the script more myself I suppose

Leaf tried a few times to find a way for FF to be suggested smartly (IE when we didn't have something to do, or if it fell off), but it never did seem to work out the way we hoped. I will see what I can do with it, but because it's easy to track outside of Ovale and lots of other classes can apply it, it is a lower priority on the "to be looked at list".

Tinderhoof wrote:Leaf tried a few times to find a way for FF to be suggested smartly (IE when we didn't have something to do, or if it fell off), but it never did seem to work out the way we hoped. I will see what I can do with it, but because it's easy to track outside of Ovale and lots of other classes can apply it, it is a lower priority on the "to be looked at list".

Being a bit more aggressive on this might mess with pooling and OoC reaction though, I'm not really sure it's worth it.

Beatrix wrote:I was wondering whether or not the addon with the scripts from Nieren contains the latest version of Leafkiller"s script for ferals.

Nerien's Ovale Scripts will always have the latest released version of Leafkiller's Ovale script because Leafkiller (and Tinderhoof now) directly maintain it in the addon and make new releases when they update it. You can verify for yourself when you select the Leafkiller script in the addon because the script has a changelog at the top of the script that tells you what version of the script and when it was last updated.

@Leafkiller, @Tinderhoof: I released version 2.1.14 of Nerien's Ovale Scripts. One of the new scripts is a feral one based on the latest SimC code. There are examples in there for how to translate the "pool_resource" statements into Ovale's language. Please let me know if you see any errors or if you have any questions.

Something is definitely not working for me with savage roar, it looks like it's recommending I use savage roar anytime I have combo points.

Edit: Found it, there's a few places where you're checking for the presence of "savage_roar" instead of "savage_roar_buff". You can find them quickly by searching for "savage_roar)", lines 535, 646, 648, 727, 729, 910, 970. A Find & Replace of "savage_roar)" to "savage_roar_buff)" seems to do the trick (just have to make sure it doesn't modify the SavageRoar() functions of course).

#healing_touch,if=buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down if BuffPresent(predatory_swiftness) and BuffExpires(predatory_swiftness) <=1.5 and BuffExpires(dream_of_cenarius_damage) Spell(healing_touch)

does not work at all. As far as I can tell "BuffExpires(predatory_swiftness)" should be "BuffRemains(predatory_swiftness)" and that fixes it.

Question for you Jeshu. I know that Leaf implemented something with Spirit Wolves in the script but in my limited experience it's quite buggy. Is there a better or way to do symbiosis usage or is it just not supported well enough at the moment? For example, if I wanted to change the Bear AoE list you have:

Right now, Ovale just asks the game itself whether a spell is usable. If you've ever cast Symbiosis on anyone else, the spell that you gained will always be "usable" if you query the game, even if you've cast it on another class in-between. This holds true also for vehicle/possess action bars as well, where you gain abilities that you need to use when in a vehicle fight, e.g., Amber-Shaper in HoF -- if I make an Ovale script that tries to tell someone to cast Struggle for Control, that shows as usable if you're not currently Reshaped. I need to see if there's a way to identify a spell you've used before as not being usable anymore, but not sure how to do that yet.

Jeshu wrote:Right now, Ovale just asks the game itself whether a spell is usable. If you've ever cast Symbiosis on anyone else, the spell that you gained will always be "usable" if you query the game, even if you've cast it on another class in-between. This holds true also for vehicle/possess action bars as well, where you gain abilities that you need to use when in a vehicle fight, e.g., Amber-Shaper in HoF -- if I make an Ovale script that tries to tell someone to cast Struggle for Control, that shows as usable if you're not currently Reshaped. I need to see if there's a way to identify a spell you've used before as not being usable anymore, but not sure how to do that yet.

Isn't it possible to check the SpellID of the buff on the druid? I was under the impression that every symbiosis class-combination applied a different one.

Alpheus wrote:Isn't it possible to check the SpellID of the buff on the druid? I was under the impression that every symbiosis class-combination applied a different one.

Please let me know if this is true. You can test by casting Symbiosis on someone and then typing "/ovale buff" to list the names and IDs of the active player buffs. If this is true, then it's easy to script it now without modifying Ovale.