Register

Leafkiller's 4.1 Feral Ovale Script

Face-rippin fun.
Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Thu May 05, 2011 7:14 pm

The upper left box is used for feral charge and will show you the dash icon if you are not in range to feral charge and it is a reasonable time to do so. It does not check for whether or not you have stampede, in which case you can just ignore it.

The lower left box is used for Berserk. The Polar bear is what I put up there when Berserk is off of cooldown but it is a non-optimum time to cast it (as in it will delay the next TF). There are times you want to cast it anyways, which is why I toss up that texture rather than the Berserk texture.

Honored
Posts: 149
Joined: Fri Feb 25, 2011 5:26 pm

Re: Leafkiller's 4.1 Feral Ovale Script

Postby felhoof » Thu May 05, 2011 7:42 pm

It shows the dash when I'm actually closer than I need to be? That's odd. Same with the clock icon, though I guess that's also saying 'wait'?

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Thu May 05, 2011 8:46 pm

The Dash icon simply tells you that you are not in range to Feral Charge - which can be too close or too far away. Yes the "Spell_nature_timestop" texture indicates that it is not a good time to run away to FC - which is due to having TF or Berserk active, having more than 69 energy, Panther close to expiring, or Rake close to expiring.

In the current content, there is not a lot of opportunity to run away - but being able to see when you can FC on the bosses that have zero distance FC available is very useful.

Posts: 24
Joined: Thu Apr 07, 2011 10:21 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Cuer » Fri May 06, 2011 7:55 pm

Zaxxan wrote:I've nto noticed any werd suggestions but I have been noticing that the window for the suggested next ability sometimes starts to flicker quite badly. Only that window the rest seem fine, and it only started after 4.1 + Updated Script.

I've seen this quite a bit as well, where the "next ability" icon will flash very quickly. I don't know if it's a bug with Ovale itself, or something in the script that's looping the display, but it can be a bit annoying.

Also odd in cat form: occasionally Faerie Fire will pop up in the "what to do now" box, even when it's still applied with multiple minutes left on the debuff. It's like the "do Faerie Fire if there aren't resources to do anything else" part of the bear script is showing up for cats sometimes, too.

On that note: should bears really do Faerie Fire all the time when they don't have any rage? I haven't done any sort of simulation to see, but from a practical matter, it isn't it usually better to do an auto-attack once or twice to build up rage, instead of doing a small damage attack that doesn't generate any rage, in that situation?

For both cats and bear scripts, it might be useful to have some sort of "just auto-attack" icon show up when it's better to build up energy/rage for a GCD or two.

Posts: 46
Joined: Sun Jan 16, 2011 5:47 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Beanna » Sat May 07, 2011 5:00 am

If FFF is already applied on the target, the script only suggests to refresh it because you have absolutely nothing else to do. It will avoid having to refresh it later, in a less favorable situation, while in Berserker for example. Casting FFF does not reset your swing and does not prevent to pull energy.
It is the same for bear : casting FFF does not reset your swing so you can still auto-attack to build up rage and also use FFF to make more damages and aggro while you are waiting for CDs or rage.

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Sat May 07, 2011 5:34 pm

You see flickering when the optimal next ability changes (FBN had that a lot). Some abilities are very time or energy sensitive. Over time I have made some changes to the rotation to minimize that - but only when the changes tested out as no worse than dps neutral. For instance, I removed the code to refresh SR early as it not only was no longer proving a noticeable dps improvement (less than 10dps) but was tied to a very tight window.

Posts: 24
Joined: Thu Apr 07, 2011 10:21 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Cuer » Mon May 09, 2011 1:47 pm

That brings up another question: is it still worthwhile to try to refresh Rip and Rake 2 seconds early? Or is it better to wait until it's expiring/expired, to refresh them? The script seems to suggest waiting until the end.

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Mon May 09, 2011 2:29 pm

The script tries to clip the last tick of rip/rake - it does not wait for them to drop off.

Posts: 2
Joined: Tue May 10, 2011 10:02 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Oberon » Tue May 10, 2011 10:08 am

Hi, I have been looking on this forum for a way to disable the "bear version" of this script. I know it sounds silly but tends to distract me when I am tanking. Is there a quick way to disable Ovale poppig up when I go into bear form?
Thanks in advance and i apologize if I have missed it being mentioned somewhere before.

Posts: 46
Joined: Sun Jan 16, 2011 5:47 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Beanna » Tue May 10, 2011 12:43 pm

Basically I assume that you can delete every part of the code which begins with "if Stance(1)", stance 1 being the bear form and stance 3 being the cat form. That should desactivate every spell icons while you are in bear form.

Posts: 24
Joined: Wed May 11, 2011 4:12 pm

Re: Leafkiller's 4.1 Feral Ovale Script

Postby archury » Wed May 11, 2011 5:11 pm

Leafkiller wrote:The script tries to clip the last tick of rip/rake - it does not wait for them to drop off.

From what I have read, I understand that in cataclysm blizzard changed bleeds (dots). If reapplied before the last tick, the bleed is not clipped. That last tick is added to the new bleed.

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

Re: Leafkiller's 4.1 Feral Ovale Script

Postby ShmooDude » Wed May 11, 2011 11:50 pm

Oberon wrote:Hi, I have been looking on this forum for a way to disable the "bear version" of this script. I know it sounds silly but tends to distract me when I am tanking. Is there a quick way to disable Ovale poppig up when I go into bear form?
Thanks in advance and i apologize if I have missed it being mentioned somewhere before.


/ovale show and /ovale hide to do it manually. Otherwise you'd have to edit the script itself. You could macro these to your cat/bear shapeshifts (mine are already macros anyhow).

Posts: 2
Joined: Tue May 10, 2011 10:02 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Oberon » Thu May 12, 2011 12:52 pm

:shock: OMG...I can't believe that I did not think of that. Thanks so much. ;)

Posts: 46
Joined: Sun Jan 16, 2011 5:47 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Beanna » Sat May 14, 2011 6:02 pm

Hey Leaf,

I read on EJ that you and tangedyn discussed about refreshing Rip with a 5cp Rip while TF is active. Since it is considered as a DPS increase, I am wondering if it will be implemented in a new ovale code soon or not?

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Sat May 14, 2011 7:10 pm

I guess it depends. Here is what Tangedyn wrote:
Just a quick note, we've pretty much confirmed with Mew that it is now a DPS gain to clip Rip when TF is up. Previously it was a DPS loss when we still used FB as a finisher making CPs a limited resource. Also confirmed that letting Rip drop to synch up with an upcoming TF does not improve DPS.


Back in Feb/March - after we had already dropped FB from the rotation, Civilian brought this up on the Mew thread at EJB. Based on the discussion with Civilian, I did a series of tests trying different conditions testing TFed refreshes of Rip - and it was generally a small dps loss. I reported this here: http://elitistjerks.com/f73/t110356-fer ... ost1886053 (read down - there is a fairly long back and forth discussion on this between myself and Civilian).

In the end the one difference I found between my testing and Civilian's napkin math was that he was assuming 12 tick Rips and Mew models 11. The game itself is very inconsistent on this as we have seen logs that report 11, 12 or 13 tick Rips - with nothing obvious as to why this happens (I don't know if this is still happening). This is why I asked Tangedyn if the testing was done with the 1 1/2 tick per Rip Shred option enabled - which models a 12 tick Rip - but he said this was not the case.

So...the testing that Tangedyn reported on was a surprise to me - although it is post 4.1 and it is possible the 4.1 changes affected this. However, Tangedyn did not say under what conditions the testing was done and I have not had the opportunity to ask him or Yawning about this (I have been busy with some RL activities of late). Nor was there an indication of how much of a dps up it is.

I have an additional issue that is specific to Ovale. The Mew code for this checks the following: "!status.isRipTFed()". I am not aware of a way to check that in game - other than looking at the remaining duration of Rip and deciding that it is low enough to conclude the Rip was not cast during TF (10 seconds or less) so I would have to restrict refreshing to that.

One of the concerns from an Ovale perspective is how to test for a Rip that cannot be over-written. Civilian wrote this:
It's typically assumed in the models that you won't be able to reapply rip because the game sometimes forbids it. Realistically the only times I find I can't reapply rip are when an agility potion has worn off or I've lost the strength of the panther stack. However, those holding trinkets with AP/agility temporary buffs, and those with tailoring or engineering professions, would see more such situations where rip cannot be reapplied.


Honestly I am not sure what the rules are in game for when you can or cannot overwrite a Rip (other than AP), but it is a concern in an Ovale script - because it could get stuck for the entire duration of the TF telling you to Rip and failing. Assuming that this condition exists, I might limit refreshing Rip to the end of the TF duration - perhaps when it has no more than 1 1/2 seconds remaining. So my conditions would be RipRemaining < 10 and TF remaining < 1.5 - which is pretty restrictive.

So, when I get some time, I will do some preliminary testing on what the impact is on dps of refreshing Rip during TF. If it is substantial, I will do some testing based on Ovale limitations - to see if I can script something that provides a decent dps gain. Adding the code is not an issue - but I want to make sure it is worth doing.

Posts: 46
Joined: Sun Jan 16, 2011 5:47 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Beanna » Sun May 15, 2011 6:24 am

Thank you very much for this detailed answer. I understand better now why you have doubts about the behavior of Rip in game. As usual, I trust you to make our rotation as perfect as possible. :)

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

Re: Leafkiller's 4.1 Feral Ovale Script

Postby ShmooDude » Mon May 16, 2011 9:02 pm

Leaf, having not done anything with ovale, does it have any sort of memory or variables you can pull from?

Here's what I mean. If you could have it remember (via variables) the Attack Power and Tiger's Fury status on application of Rip/Rake (well probably really just Rip since its the one that causes problems), than you could solve some of the problems you wrote about.

Granted I have no idea if this is possible using Ovale's code. I know you can do it through Lua (which I'm only vaguely familiar with).

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Tue May 17, 2011 3:14 am

I think I would have to request enhancements to the Ovale code for that - much as happened when support for Ripshred counting went in. My guess is the dps gain from clipping Rips will not be that much - but I do need to check it...

Revered
Posts: 457
Joined: Sat Jan 29, 2011 7:17 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby shinryu » Mon May 23, 2011 3:41 am

I dunno if it's been mentioned, but Berserk has been acting kinda odd lately; like say for example on trash pulls, you know normally I don't bother using Berserk so I just follow through on other attacks, yet the odd thing is the script will keep recommending Berserk even if I'm under like a quarter of Energy until it's time to like, say, refresh Rake or use another CP ability, which then seems to make it go away for a while.

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Mon May 23, 2011 12:53 pm

The script will recommend Berserk more often now because there is no longer a cap on energy - so if you have pooled energy above 64, and there is significant time before TF comes off of cooldown (15 seconds or 10 seconds with GoBerserk) then Berserk will continue to be recommended.

You can control this by clicking on the Ovale frame and clicking off the suggest Berserk option.

===============

Oddly enough I was thinking about a restructure to the script just last night. I am thinking about having three suggestion boxes (instead of two) as follows:

First box suggests the full rotation including Berserk/TF. If both Berserk and TF are off of cooldown, it will suggest Berserk only. It is assumed that everyone has macroed TF to Berserk, in other words, when you cast Berserk, you should always try to cast TF first in a macro. You should not do the reverse - you still need a standalone TF key. I am also thinking of including a call to Feral Charge if it is actually castable (for zero travel time fights such as Cho'gall or add switching fights).

Second Box suggests the full rotation including fillers but does not include TF or Berserk.

Third box suggest the full rotation with no fillers and no TF or Berserk.

The motivation is to have a fully optimized suggestion box that includes all of the key abilities at an optimized time, while still knowing what fillers to cast when you do not want to use one of the specials (such as holding off on TF/Berserk for the exposed head phase on Magmaw) and still retaining insight into which of the major cooldown spells is coming next.

===============

Please provide feedback on this idea. I know it will make my play easier as there are times I want to see the full rotation including Berserk/TF and times I only want to see what the next ability is while holding off of TF/berserk and that can occur in the same fight.

I am not sure what to do with the existing cooldown boxes and will probably leave those unchanged in this new script (they can be hidden anyways).

User avatar
Posts: 48
Joined: Thu Apr 28, 2011 4:51 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Puna » Mon May 23, 2011 3:10 pm

having the option to choose which TF/Berserk option you want to have displayed would be really nice, however having a 3rd suggestion box added where it may end up being simply being a wasted box on some fights wouldn't be all that appealing. One of my favorite things about the ovale script for feral is that it is only 2 boxes.

Perhaps making the box have a clickable option where you can choose which conditions you would like ovale to suggest for TF/Zerk would be more appropriate? I'm not great with scripting some I'm not sure how complicated producing those kind of on the fly options are within the current set up.

cheers

Revered
Posts: 457
Joined: Sat Jan 29, 2011 7:17 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby shinryu » Mon May 23, 2011 9:54 pm

Leafkiller wrote:The script will recommend Berserk more often now because there is no longer a cap on energy - so if you have pooled energy above 64, and there is significant time before TF comes off of cooldown (15 seconds or 10 seconds with GoBerserk) then Berserk will continue to be recommended.

You can control this by clicking on the Ovale frame and clicking off the suggest Berserk option.

===============

Oddly enough I was thinking about a restructure to the script just last night. I am thinking about having three suggestion boxes (instead of two) as follows:

First box suggests the full rotation including Berserk/TF. If both Berserk and TF are off of cooldown, it will suggest Berserk only. It is assumed that everyone has macroed TF to Berserk, in other words, when you cast Berserk, you should always try to cast TF first in a macro. You should not do the reverse - you still need a standalone TF key. I am also thinking of including a call to Feral Charge if it is actually castable (for zero travel time fights such as Cho'gall or add switching fights).

Second Box suggests the full rotation including fillers but does not include TF or Berserk.

Third box suggest the full rotation with no fillers and no TF or Berserk.

The motivation is to have a fully optimized suggestion box that includes all of the key abilities at an optimized time, while still knowing what fillers to cast when you do not want to use one of the specials (such as holding off on TF/Berserk for the exposed head phase on Magmaw) and still retaining insight into which of the major cooldown spells is coming next.

===============

Please provide feedback on this idea. I know it will make my play easier as there are times I want to see the full rotation including Berserk/TF and times I only want to see what the next ability is while holding off of TF/berserk and that can occur in the same fight.

I am not sure what to do with the existing cooldown boxes and will probably leave those unchanged in this new script (they can be hidden anyways).

Maybe if it's an option where you can choose which one you have displayed by default (with the predictor as the 2nd) that would be fine...but having all 3 out at once would probably just be unnecessary hassle/clutter imo, there's enough to pay attention to usually without having to remember which box you're following...

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Mon May 23, 2011 10:14 pm

It is a question of prediction. Knowing that it is an optimum time in a perfect rotation to hit berserk/TF together is useful. Knowing what the rotation should look like at times you are intentionally delaying TF is also useful. The Prediction box shows you the next major ability that is coming off of cooldown - and having that data is (at the risk of being repetitive) useful.

None of us will know how useful in game it is short of testing it. I will play with it and see how it feels in raiding.

Exalted
User avatar
Posts: 1143
Joined: Fri Jun 04, 2010 4:28 am

Re: Leafkiller's 4.1 Feral Ovale Script

Postby Leafkiller » Tue May 24, 2011 3:53 am

I played with it and the 3 boxes was too much - but I did come up with a solution that works for me at least. I took the rotation that has no TF/Berserk and made it an option for the top right cooldown box. This allows me to see what fillers to use if I decide to hold off on TF/Berserk.

I also changed the TF code to suggest Berserk in place of TF if both are off of cooldown and the "berserk" option is enabled. I am assuming that everyone has TF macroed to their Berserk now.

A third change was to remove filler Mangles and Berserk from the non-filler suggestion window as those distracted from seeing what was coming off of cooldown next.

Here is the experimental script if anyone else wants to test it:

Code: Select all
# Ovale Optimized Script Leafkiller 1.4.1
#       Bear code from tbot
# Started with the Ovale default druid script, this includes significant work from Alaron and goes back to the work of Fatalsaints
# Script source: http://fluiddruid.net/forum/viewtopic.php?f=3&t=33
# Ovale source: http://wow.curse.com/downloads/wow-addons/details/ovale.aspx
# Initial optimized version based on Sim work from Alaron with some modifications from Leafkiller
# Revision History (post 1.4)
# 1.4.1 05/23/2011
#   Move the new rotation into a cooldown box as an optional choice.
# 1.4 05/23/2011
#   Experimentail Script with an additional Icon - one for full rotation, one
#   with no Berserk/TF and one with no fillers. Also only call for Berserk if both
#   Berserk and TF are off of cooldown. Also remove filler Mangles and Berserk from third Icon.

Define(BARKSKIN 22812)
Define(BERSERK 50334) #cat+bear cd buff
Define(DEMOROAR 99) #bear
Define(ENRAGE 5229) #bear
Define(FAERIEFERAL 16857) #bear+cat
Define(FERALCHARGECAT 49376)
Define(FEROCIOUSBITE 22568) #cat finish 35-70 mana
Define(FRENZIEDREGENERATION 22842) #bear
Define(LACERATE 33745) #bear bleed*3
Define(MANGLECAT 33876) #cat bleed+debuff
Define(MANGLEBEAR 33878) #bear bleed+debuff
Define(MAUL 6807) #bear
Define (PANTHER 90166) #tier 11 4 piece cat
Define(PULVERIZE 80313) #bear after lacerate*3
Define (PULVERIZEBUFF 80951) #buff has a different spellid then the ability
Define(RAKE 1822) #cat bleed
Define(RAVAGE 6785) #cat behind+(prowling or stampede)
Define(RIP 1079) #cat bleed
   SpellInfo(RIP resetcounter=ripshreds)
Define(SAVAGEROAR 52610) #cat damage buff
Define(SHRED 5221) #cat behind
    SpellInfo(SHRED inccounter=ripshreds)
Define(SURVIVALINSTINCTS 61336) #cat+bear surv cd
Define(SWIPEBEAR 779) #bear aoe
Define(SWIPECAT 62078) #cat aoe
Define(THRASH 77758) #bear aoe bleed
Define(TIGERSFURY 5217) #cat buff
   
#Trinket Procs
Define(UNHEEDEDWARNING 59520)
Define(HEEDLESSCARNAGE 92108) #Unheeded Warning Proc
Define(ESSENCEOFCYCLONEH 65140) # heroic Esscence of Cyclone
Define(TWISTEDH 92351)

#Glyphs
Define(GLYPHOFSHRED 54815)
Define(GLYPHOFRIP 54818)
Define(GLYPHOFBERSERK 62969)

#Buff
Define(CLEARCASTING 16870)
Define(STAMPEDE 81022)

#Talents
Define(BLOODINTHEWATERTALENT 8341)

AddCheckBox(demo SpellName(DEMOROAR) default mastery=2)
AddCheckBox(berserk SpellName(BERSERK) default mastery=2)
AddCheckBox(cooldownsL "Show Left Rotation Boxes" default mastery=2)
AddCheckBox(cooldownsR "Show Right Cooldown Boxes" default mastery=2)
AddCheckBox(lucioles SpellName(FAERIEFERAL) default mastery=2)
AddCheckBox(mangle SpellName(MANGLECAT) default mastery=2)
AddCheckBox(t11 "Detect t11 set bonus" default mastery=2)
AddListItem(cd0 t0 "Top right - No Cooldown" default mastery=2)
AddListItem(cd0 t10 "Top right - Rotation no TF/B" mastery=2)
AddListItem(cd0 t1 "Top right - Mangle" mastery=2)
AddListItem(cd0 t2 "Top right - Rake" mastery=2)
AddListItem(cd0 t3 "Top right - Rip" mastery=2)
AddListItem(cd0 t4 "Top right - Savage Roar" mastery=2)
AddListItem(cd0 t5 "Top right - Tiger's Fury" mastery=2)
AddListItem(cd0 t6 "Top right - Trinket 0" mastery=2)
AddListItem(cd0 t7 "Top right - Trinket 1" mastery=2)
AddListItem(cd0 t8 "Top right - Unheeded Warning" mastery=2)
AddListItem(cd0 t9 "Top right - Heroic Essence of Cyclone" mastery=2)
AddListItem(cd1 t0 "Bottom right - No Cooldown" default mastery=2)
AddListItem(cd1 t1 "Bottom right - Mangle" mastery=2)
AddListItem(cd1 t2 "Bottom right - Rake" mastery=2)
AddListItem(cd1 t3 "Bottom right - Rip" mastery=2)
AddListItem(cd1 t4 "Bottom right - Savage Roar" mastery=2)
AddListItem(cd1 t5 "Bottom right - Tiger's Fury" mastery=2)
AddListItem(cd1 t6 "Bottom right - Trinket 0" mastery=2)
AddListItem(cd1 t7 "Bottom right - Trinket 1" mastery=2)
AddListItem(cd1 t8 "Bottom right - Unheeded Warning" mastery=2)
AddListItem(cd1 t9 "Bottom right - Heroic Essence of Cyclone" mastery=2)
AddListItem(cd2 t0 "Top far right - No Cooldown" default mastery=2)
AddListItem(cd2 t1 "Top far right - Mangle" mastery=2)
AddListItem(cd2 t2 "Top far right - Rake" mastery=2)
AddListItem(cd2 t3 "Top far right - Rip" mastery=2)
AddListItem(cd2 t4 "Top far right - Savage Roar" mastery=2)
AddListItem(cd2 t5 "Top far right - Tiger's Fury" mastery=2)
AddListItem(cd2 t6 "Top far right - Trinket 0" mastery=2)
AddListItem(cd2 t7 "Top far right - Trinket 1" mastery=2)
AddListItem(cd2 t8 "Top far right - Unheeded Warning" mastery=2)
AddListItem(cd2 t9 "Top far right - Heroic Essence of Cyclone" mastery=2)
AddListItem(cd3 t0 "Bottom far right - No Cooldown" default mastery=2)
AddListItem(cd3 t1 "Bottom far right - Mangle" mastery=2)
AddListItem(cd3 t2 "Bottom far right - Rake" mastery=2)
AddListItem(cd3 t3 "Bottom far right - Rip" mastery=2)
AddListItem(cd3 t4 "Bottom far right - Savage Roar" mastery=2)
AddListItem(cd3 t5 "Bottom far right - Tiger's Fury" mastery=2)
AddListItem(cd3 t6 "Bottom far right - Trinket 0" mastery=2)
AddListItem(cd3 t7 "Bottom far right - Trinket 1" mastery=2)
AddListItem(cd3 t8 "Bottom far right - Unheeded Warning" mastery=2)
AddListItem(cd3 t9 "Bottom far right - Heroic Essence of Cyclone" mastery=2)

ScoreSpells(FAERIEFERAL DEMOROAR MANGLEBEAR LACERATE SAVAGEROAR RIP
        MANGLECAT RAKE SHRED FEROCIOUSBITE PULVERIZE MAUL)
 
AddIcon help=cd size=small mastery=2 { # TF Icon or Barkskin for Bear
    if CheckBoxOn(cooldownsL) {
        if Stance(3) {
            # off of cooldown and in range
            if TargetInRange(FERALCHARGECAT)
                Spell(FERALCHARGECAT)
            # FC Runaway code
            unless BuffPresent(TIGERSFURY) or BuffPresent(BERSERK) or Mana(more 69) or BuffPresent(CLEARCASTING) {
                unless ArmorSetParts(T11 more 3) and BuffExpires(PANTHER 4) {
                    if 2s before Spell(FERALCHARGECAT) {
                        unless TargetDebuffExpires(RAKE 5.9 mine=1) or TargetInRange(FERALCHARGECAT)
                            Texture(Ability_druid_dash)
                    }
                }   
            }
            # default - shows cooldown
            if 0s before Spell(FERALCHARGECAT)
                Texture(Spell_nature_timestop)  # default - FC is off of cooldown other conditons not met
        }
        if Stance(1) {Spell(BARKSKIN)}
    }
}
AddIcon help=cd size=small mastery=2 { # Berserk Icon
    if CheckBoxOn(cooldownsL) {
        if Stance(1) {
            Spell(BERSERK)
        }
        if Stance(3) {
         if BuffPresent(TIGERSFURY) Spell(BERSERK)
           unless BuffPresent(TIGERSFURY) {
              if Glyph(GLYPHOFBERSERK) {
                 if Mana(more 64) unless 20s before Spell(TIGERSFURY) Spell(BERSERK)
              }
              unless Glyph(GLYPHOFBERSERK) {
                 if Mana(more 64) unless 15s before Spell(TIGERSFURY) Spell(BERSERK)
              }
           }
            if 0s before Spell(BERSERK) Texture(Ability_mount_polarbear_white)
        }
    }
}
# Main rotation
AddIcon help=main mastery=2 {
    if Stance(1) {  #bear
        if CheckBoxOn(lucioles) and CheckBoxOff(aoe) and TargetDebuffExpires(lowerarmor 2 stacks=3) {
            Spell(FAERIEFERAL)
        }
       
        if 1s before Spell(MANGLEBEAR) {
            Spell(MANGLEBEAR priority=4)
        }
       
        if CheckBoxOn(demo) and TargetDebuffExpires(lowerphysicaldamage 4) {
            Spell(DEMOROAR)
        }

        unless TargetDebuffPresent(LACERATE stacks=1 mine=1) {
            Spell(LACERATE)
        }
       
        if 0s before Spell(THRASH) {
            Spell(THRASH)
        }

        if TargetDebuffPresent(LACERATE stacks=3) and BuffExpires(PULVERIZEBUFF 1) {
            Spell(PULVERIZE)
        }
       
        unless TargetDebuffPresent(LACERATE stacks=3) {
            Spell(LACERATE)
        }
        if 0s before Spell(FAERIEFERAL) {
            Spell(FAERIEFERAL)
        }
        Spell(LACERATE)
    }

    if Stance(3) { # cat
        unless BuffPresent(BERSERK) or BuffPresent(CLEARCASTING) {
            if Mana(less 36) {
               if CheckBoxOn(berserk) Spell(BERSERK)
               Spell(TIGERSFURY)
            }
        }
       
        unless TargetInRange(MANGLECAT) {
            Texture(ability_druid_catformattack)
        }

        #refresh PANTHER (T11)
        if ArmorSetParts(T11 more 3) and BuffPresent(PANTHER) and CheckBoxOn(t11) {
            if BuffExpires(PANTHER 4) Spell(MANGLECAT)
        }
   
        if CheckBoxOn(lucioles) and TargetDebuffExpires(lowerarmor 1) and TargetDeadIn(more 15) {
            Spell(FAERIEFERAL)
        }
           
        if TargetDebuffExpires(bleed 1) and CheckBoxOn(mangle) {
            Spell(MANGLECAT)
        }
       
        # Ravage Code - this is the catch all
        if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
            Spell(RAVAGE)
        }
       
        # Berserk Code
        if CheckBoxOn(berserk) {
           if BuffPresent(TIGERSFURY) Spell(BERSERK)
           unless BuffPresent(TIGERSFURY) {
              if Glyph(GLYPHOFBERSERK) {
                 if Mana(more 64) unless 20s before Spell(TIGERSFURY) Spell(BERSERK)
              }
              unless Glyph(GLYPHOFBERSERK) {
                 if Mana(more 64) unless 15s before Spell(TIGERSFURY) Spell(BERSERK)
              }
           }
        }
   
        # 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 TalentPoints(BLOODINTHEWATERTALENT more 1) and ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
            Spell(FEROCIOUSBITE)
        }
        if TalentPoints(BLOODINTHEWATERTALENT more 1) and ComboPoints(more 4) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
            Spell(FEROCIOUSBITE)
        } 
       
        #Extends Rip with shred if glyph
        if Glyph(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
            Spell(SHRED)
        }

        # Burn combo points on FB if the target is about to die - on a boss fight this is redundant with BotW phase
        if ComboPoints(more 4) and TargetDeadIn(less 7) {
            Spell(FEROCIOUSBITE)
        }
       
        # Time to recast Rip - clip if possible
        if ComboPoints(more 4) and TargetDeadIn(more 6) {
            if TargetDebuffExpires(RIP 1.9 mine=1) Spell(RIP)
        }
 
        # clip Rake early if TF is up and rake ramining is less than 9 seconds
        if TargetDebuffExpires(RAKE 8.9 mine=1) and TargetDeadIn(more 8) and BuffPresent(TIGERSFURY) {
          Spell(RAKE)
        }
       
        # intentionally clip Rake to maximize uptime
        if TargetDebuffExpires(RAKE 2.9 mine=1) and TargetDeadIn(more 8.4) {
            Spell(RAKE)
        }
       
        # Savage Roar code - both when it is down and the desync code for Rip and Roar
        if ComboPoints(more 0) and BuffExpires(SAVAGEROAR 1) and TargetDebuffPresent(RIP 6 mine=1) {
            Spell(SAVAGEROAR)
        }
       
        if BuffPresent(STAMPEDE) and BuffPresent(TIGERSFURY) {
            unless BuffPresent(CLEARCASTING) Spell(RAVAGE)
        }
       
        #stack up PANTHER (T11)
        if ArmorSetParts(T11 more 3) and CheckBoxOn(t11) {
            unless BuffPresent(PANTHER stacks=3) Spell(MANGLECAT)
        }
       
        # Conditions for Shreding now that everything else is taken into account
        if Mana(more 69) Spell(SHRED)
        if BuffPresent(CLEARCASTING) or TargetDeadIn(less 10) or BuffPresent(BERSERK) or BuffPresent(TIGERSFURY)
                Spell(SHRED)
        if ComboPoints(less 5) and TargetDebuffExpires(RIP 3 mine=1) Spell(SHRED)
        if ComboPoints(less 1) and BuffExpires(SAVAGEROAR 2) Spell(SHRED)
        if { 3s before Spell(TIGERSFURY) } Spell(SHRED)
    }
}



# Main Rotation (no filler shreds, otherwise copy of other rotation)
AddIcon help=main mastery=2
{
   if Stance(1) {
        if Mana(more 70) {
            Spell(MAUL)
        }
    }

    if Stance(3) { # cat

        #refresh PANTHER (T11)
        if ArmorSetParts(T11 more 3) and BuffPresent(PANTHER) and CheckBoxOn(t11) {
            if BuffExpires(PANTHER 4) Spell(MANGLECAT)
        }
   
        if CheckBoxOn(lucioles) and TargetDebuffExpires(lowerarmor 1) and TargetDeadIn(more 15) {
            Spell(FAERIEFERAL)
        }
           
        if TargetDebuffExpires(bleed 1) and CheckBoxOn(mangle) {
            Spell(MANGLECAT)
        }
       
        # Ravage Code - this is the catch all
        if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
            Spell(RAVAGE)
        }
       
        # 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 TalentPoints(BLOODINTHEWATERTALENT more 1) and ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
            Spell(FEROCIOUSBITE)
        }
        if TalentPoints(BLOODINTHEWATERTALENT more 1) and ComboPoints(more 4) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
            Spell(FEROCIOUSBITE)
        }
       
        #Extends Rip with shred if glyph
        if Glyph(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
            Spell(SHRED)
        }

        # Burn combo points on FB if the target is about to die - on a boss fight this is redundant with BotW phase
        if ComboPoints(more 4) and TargetDeadIn(less 7) {
            Spell(FEROCIOUSBITE)
        }
       
        # Time to recast Rip - clip if possible
        if ComboPoints(more 4) and TargetDeadIn(more 6) {
            if TargetDebuffExpires(RIP 1.9 mine=1) Spell(RIP)
        }
       
        # clip Rake early if TF is up and rake ramining is less than 9 seconds
        if TargetDebuffExpires(RAKE 8.9 mine=1) and TargetDeadIn(more 8.4) and BuffPresent(TIGERSFURY) {
            Spell(RAKE)
        }
       
        # intentionally clip Rake to maximize uptime
        if TargetDebuffExpires(RAKE 2.9 mine=1) and TargetDeadIn(more 8.4) {
            Spell(RAKE)
        }
       
        # Savage Roar code - both when it is down and the desync code for Rip and Roar
        if ComboPoints(more 0) and BuffExpires(SAVAGEROAR 1) and TargetDebuffPresent(RIP 6 mine=1) {
            Spell(SAVAGEROAR)
        }
    }
}

AddIcon help=cd size=small mastery=2 { # Rake/Manglebear Icon
    if CheckBoxOn(cooldownsR) {
        if Stance(3) {
            if List(cd0 t1) {
                if ArmorSetParts(T11 more 3) {
                   if BuffExpires(PANTHER 0) Spell(MANGLECAT)
               }
               unless ArmorSetParts(T11 more 3) {
                   if TargetDebuffExpires(bleed 0) Spell(MANGLECAT)
               }
            }
            if List(cd0 t2) if TargetDebuffExpires(RAKE 0 mine=1) Spell(RAKE)
            if List(cd0 t3) if TargetDebuffExpires(RIP 0 mine=1) Spell(RIP)
            if List(cd0 t4) if BuffExpires(SAVAGEROAR 0) Spell(SAVAGEROAR)
            if List(cd0 t5) Spell(TIGERSFURY)
            if List(cd0 t6) Item(Trinket0Slot usable=1)
            if List(cd0 t7) Item(Trinket1Slot usable=1)
            if List(cd0 t8) {
               unless BuffPresent(HEEDLESSCARNAGE) {
                  if 0s before BuffGain(HEEDLESSCARNAGE 50) Item(UNHEEDEDWARNING)
               }
               if BuffPresent(HEEDLESSCARNAGE) {
                   if 0s before BuffExpires(HEEDLESSCARNAGE 0) Texture(Spell_deathknight_butcher)
               }
           }
            if List(cd0 t9) {
               unless BuffPresent(TWISTEDH) {
                  if 0s before BuffGain(TWISTEDH 50) Item(ESSENCEOFCYCLONEH)
               }
               if BuffPresent(TWISTEDH) {
                   if 0s before BuffExpires(TWISTEDH 0) Texture(Ability_rogue_dirtydeeds)
               }
           }
           if List(cd0 t10) {  # rotation with no TF/B
               unless TargetInRange(MANGLECAT) {
                  Texture(ability_druid_catformattack)
              }

              #refresh PANTHER (T11)
              if ArmorSetParts(T11 more 3) and BuffPresent(PANTHER) and CheckBoxOn(t11) {
                  if BuffExpires(PANTHER 4) Spell(MANGLECAT)
              }
   
              if CheckBoxOn(lucioles) and TargetDebuffExpires(lowerarmor 1) and TargetDeadIn(more 15) {
                  Spell(FAERIEFERAL)
              }
           
              if TargetDebuffExpires(bleed 1) and CheckBoxOn(mangle) {
                  Spell(MANGLECAT)
              }
       
              # Ravage Code - this is the catch all
              if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
                  Spell(RAVAGE)
              }
   
              # 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 TalentPoints(BLOODINTHEWATERTALENT more 1) and ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
                  Spell(FEROCIOUSBITE)
              }
              if TalentPoints(BLOODINTHEWATERTALENT more 1) and ComboPoints(more 4) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
                  Spell(FEROCIOUSBITE)
              } 
       
              #Extends Rip with shred if glyph
              if Glyph(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
                  Spell(SHRED)
              }

              # Burn combo points on FB if the target is about to die - on a boss fight this is redundant with BotW phase
              if ComboPoints(more 4) and TargetDeadIn(less 7) {
                  Spell(FEROCIOUSBITE)
              }
       
              # Time to recast Rip - clip if possible
              if ComboPoints(more 4) and TargetDeadIn(more 6) {
                  if TargetDebuffExpires(RIP 1.9 mine=1) Spell(RIP)
              }
 
              # clip Rake early if TF is up and rake ramining is less than 9 seconds
              if TargetDebuffExpires(RAKE 8.9 mine=1) and TargetDeadIn(more 8) and BuffPresent(TIGERSFURY) {
                Spell(RAKE)
              }
       
              # intentionally clip Rake to maximize uptime
              if TargetDebuffExpires(RAKE 2.9 mine=1) and TargetDeadIn(more 8.4) {
                  Spell(RAKE)
              }
       
              # Savage Roar code - both when it is down and the desync code for Rip and Roar
              if ComboPoints(more 0) and BuffExpires(SAVAGEROAR 1) and TargetDebuffPresent(RIP 6 mine=1) {
                  Spell(SAVAGEROAR)
              }
       
              if BuffPresent(STAMPEDE) and BuffPresent(TIGERSFURY) {
                  unless BuffPresent(CLEARCASTING) Spell(RAVAGE)
              }
       
              #stack up PANTHER (T11)
              if ArmorSetParts(T11 more 3) and CheckBoxOn(t11) {
                  unless BuffPresent(PANTHER stacks=3) Spell(MANGLECAT)
              }
       
              # Conditions for Shreding now that everything else is taken into account
              if Mana(more 69) Spell(SHRED)
              if BuffPresent(CLEARCASTING) or TargetDeadIn(less 10) or BuffPresent(BERSERK) or BuffPresent(TIGERSFURY)
                   Spell(SHRED)
              if ComboPoints(less 5) and TargetDebuffExpires(RIP 3 mine=1) Spell(SHRED)
              if ComboPoints(less 1) and BuffExpires(SAVAGEROAR 2) Spell(SHRED)
              if { 3s before Spell(TIGERSFURY) } Spell(SHRED)
           }
        }
        if Stance(1) {
           Spell(SURVIVALINSTINCTS)
        }
    }
}
AddIcon help=cd size=small mastery=2 { # Rip/Swipebear Icon
    if CheckBoxOn(cooldownsR) {
        if Stance(3) {
            if List(cd1 t1) {
                if ArmorSetParts(T11 more 3) {
                   if BuffExpires(PANTHER 0) Spell(MANGLECAT)
               }
               unless ArmorSetParts(T11 more 3) {
                   if TargetDebuffExpires(bleed 0) Spell(MANGLECAT)
               }
            }
            if List(cd1 t2) if TargetDebuffExpires(RAKE 0 mine=1) Spell(RAKE)
            if List(cd1 t3) if TargetDebuffExpires(RIP 0 mine=1) Spell(RIP)
            if List(cd1 t4) if BuffExpires(SAVAGEROAR 0) Spell(SAVAGEROAR)
            if List(cd1 t5) Spell(TIGERSFURY)
            if List(cd1 t6) Item(Trinket0Slot usable=1)
            if List(cd1 t7) Item(Trinket1Slot usable=1)
            if List(cd1 t8) {
               unless BuffPresent(HEEDLESSCARNAGE) {
                  if 0s before BuffGain(HEEDLESSCARNAGE 50) Item(UNHEEDEDWARNING)
               }
               if BuffPresent(HEEDLESSCARNAGE) {
                   if 0s before BuffExpires(HEEDLESSCARNAGE 0) Texture(Spell_deathknight_butcher)
               }
            }
            if List(cd1 t9) {
               unless BuffPresent(TWISTEDH) {
                  if 0s before BuffGain(TWISTEDH 50) Item(ESSENCEOFCYCLONEH)
               }
               if BuffPresent(TWISTEDH) {
                   if 0s before BuffExpires(TWISTEDH 0) Texture(Ability_rogue_dirtydeeds)
               }
           }
        }
        if Stance(1) {
            Spell(FRENZIEDREGENERATION)
        }
    }
}
AddIcon help=cd size=small mastery=2 { # Rake/Manglebear Icon
    if CheckBoxOn(cooldownsR) {
        if Stance(3) {
            if List(cd2 t1) {
                if ArmorSetParts(T11 more 3) {
                   if BuffExpires(PANTHER 0) Spell(MANGLECAT)
               }
               unless ArmorSetParts(T11 more 3) {
                   if TargetDebuffExpires(bleed 0) Spell(MANGLECAT)
               }
            }
            if List(cd2 t2) if TargetDebuffExpires(RAKE 0 mine=1) Spell(RAKE)
            if List(cd2 t3) if TargetDebuffExpires(RIP 0 mine=1) Spell(RIP)
            if List(cd2 t4) if BuffExpires(SAVAGEROAR 0) Spell(SAVAGEROAR)
            if List(cd2 t5) Spell(TIGERSFURY)
            if List(cd2 t6) Item(Trinket0Slot usable=1)
            if List(cd2 t7) Item(Trinket1Slot usable=1)
            if List(cd2 t8) {
               unless BuffPresent(HEEDLESSCARNAGE) {
                  if 0s before BuffGain(HEEDLESSCARNAGE 50) Item(UNHEEDEDWARNING)
               }
               if BuffPresent(HEEDLESSCARNAGE) {
                   if 0s before BuffExpires(HEEDLESSCARNAGE 0) Texture(Spell_deathknight_butcher)
               }
           }
            if List(cd2 t9) {
               unless BuffPresent(TWISTEDH) {
                  if 0s before BuffGain(TWISTEDH 50) Item(ESSENCEOFCYCLONEH)
               }
               if BuffPresent(TWISTEDH) {
                   if 0s before BuffExpires(TWISTEDH 0) Texture(Ability_rogue_dirtydeeds)
               }
           }
        }
    }
}
AddIcon help=cd size=small mastery=2 { # Rip/Swipebear Icon
    if CheckBoxOn(cooldownsR) {
        if Stance(3) {
            if List(cd3 t1) {
                if ArmorSetParts(T11 more 3) {
                   if BuffExpires(PANTHER 0) Spell(MANGLECAT)
               }
               unless ArmorSetParts(T11 more 3) {
                   if TargetDebuffExpires(bleed 0) Spell(MANGLECAT)
               }
            }
            if List(cd3 t2) if TargetDebuffExpires(RAKE 0 mine=1) Spell(RAKE)
            if List(cd3 t3) if TargetDebuffExpires(RIP 0 mine=1) Spell(RIP)
            if List(cd3 t4) if BuffExpires(SAVAGEROAR 0) Spell(SAVAGEROAR)
            if List(cd3 t5) Spell(TIGERSFURY)
            if List(cd3 t6) Item(Trinket0Slot usable=1)
            if List(cd3 t7) Item(Trinket1Slot usable=1)
            if List(cd3 t8) {
               unless BuffPresent(HEEDLESSCARNAGE) {
                  if 0s before BuffGain(HEEDLESSCARNAGE 50) Item(UNHEEDEDWARNING)
               }
               if BuffPresent(HEEDLESSCARNAGE) {
                   if 0s before BuffExpires(HEEDLESSCARNAGE 0) Texture(Spell_deathknight_butcher)
               }
            }
            if List(cd3 t9) {
               unless BuffPresent(TWISTEDH) {
                  if 0s before BuffGain(TWISTEDH 50) Item(ESSENCEOFCYCLONEH)
               }
               if BuffPresent(TWISTEDH) {
                   if 0s before BuffExpires(TWISTEDH 0) Texture(Ability_rogue_dirtydeeds)
               }
           }
        }
    }
}

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

Re: Leafkiller's 4.1 Feral Ovale Script

Postby ShmooDude » Tue May 24, 2011 6:13 pm

As far as me, I may be in the minority here, but here's how I have it setup:

I have TF and my Synapse springs macroed to all my rotational abilities attacks (except FC/Ravage). I do this because quite honestly, on progression fights, its not worth my time to manually use Tiger's Fury when I can use that mental energy/keybind somewhere else. I'm probably not going to set any records using this method but I do above average DPS.

So I turn off the Berserk suggestion and simply wait for the small side box to show me an optimal time to Berserk (usually shortly after a TF). I also use one of the 4 optional side boxes for TF so I can usually guess when its time to Berserk and know when its coming.

I'll probably try out the script soon, just wanted to give you some insight as to how I played and see if it gave you any thought as to how the script is written.

PreviousNext

Return to Kitty DPS

Who is online

Users browsing this forum: MSNbot Media and 5 guests