Register

Leafkiller's 4.3 Feral Ovale Script

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

Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Thu Dec 01, 2011 4:38 pm

4.3.7.4

Updated Ravage! logic, increased window to refresh Rip with FB in BitW window, removed Alysrazor air phase code, updated the Rip/TF sync code and added in SR/Rip desync code.

If you want to use Mangle in place of Shred, toggle off the "Use Shred for fillers" option.

Implemented auto-detect for 2 and 4 piece T13. Ovale added support for this in revision 443 which is labeled 4.3.1 and released on December 10th.

Since I do not have 4 piece, I have not been able to verify how it is works with TF generated Ravage.

I removed trinket tracking from this version. There were too many trinkets to keep track of (and I don't use Ovale to track trinkets).

Handy Blog post on installing the script (a little dated but very helpful): http://murlocparliament.com/2010/10/27/ ... r-dummies/

Code: Select all
# Ovale Optimized Script Leafkiller 4.3.7.4
#       Bear code from tbot
# Ovale source: http://wow.curse.com/downloads/wow-addons/details/ovale.aspx
# Cat Rotation based on the Mew single target default script. Contributions to that have come from many ferals.
# Revision History
# 4.3.7.4 01/13/2011 Change to Rip/SR desync code to make it logically closer to Mew script (covers an extra 4 second window)
# 4.3.7   01/12/2011 Update logic to help avoid clipping Ravage! (based on yawning changes to Mew script)
#                    Change FB refresh window to 2.9 seconds from 2.1 seconds in BiTW - dps neutral in Mew - for more game lag
#                    Remove Alysrazor specific code (BLAZINGPOWER) - no point in keeping it in
#                    Make Rip/TF sync match Mew script. Add in Rake and SR/Rip desync code from Mew script changes.
# 4.3.6   12/19/2011 Add a function for BITW range
# 4.3.5.2 12/15/2011 Use texture for Ravage until Ravage! can be investigated.
# 4.3.5   12/15/2011 - Fix typo that crashed Ovale when going Bear.
#                    Tweaks to Ravage! code.
# 4.3.4   12/13/2011 - Remove OOC checking from Ravage! TF call - per Mew testing it is dps neutral.
# 4.3.3   12/13/2011 - Use autodetection for T13
# 4.3.2   12/01/2011 - Add support for 2 piece T13
# 4.3.1   12/01/2011 - First version for patch 4.3
#       Remove trinkets (too many to track). Suppport for Glyph of Bloodletting.
#       Support for Mangle extending Rip. Frontal attack support. Support for 4 piece T13 (toggle).

Define(BARKSKIN 22812)
Define(BASH 5211) #bear interrupt
Define(BERSERK 50334) #cat+bear cd buff
Define(COWER 8998)
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(MAIM 22570) #cat interrupt
Define(MANGLECAT 33876) #cat bleed+debuff
   SpellInfo(MANGLECAT inccounter=ripshreds)
Define(MANGLEBEAR 33878) #bear bleed+debuff
Define(MAUL 6807) #bear
Define(PANTHER 90166) #tier 11 4 piece cat
Define(PREDATORSSWIFTNESS 69369)
Define(PULVERIZE 80313) #bear after lacerate*3
Define (PULVERIZEBUFF 80951) #buff has a different spellid then the ability
Define(RAKE 1822) #cat bleed
Define(RAVAGEBANG 81170) #cat behind+(stampede)
   SpellInfo(RAVAGEBANG combo=1 mana=0)
   SpellAddBuff(RAVAGEBANG STAMPEDE=0)
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(SKULLBASHBEAR 80964) #bear interrupt
Define(SKULLBASHCAT 80965) #cat interrupt
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)
Define(MATRIXRESTABILIZERPROC 96978)
Define(MATRIXRESTABILIZER 68994)
Define(DEVOUR 96911)
Define(THEHUNGERER 68927)

#Glyphs
Define(GLYPHOFRIP 54818)
Define(GLYPHOFBERSERK 62969)
Define(GLYPHOFBLOODLETTING 40901)

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

#Talents
Define(BLOODINTHEWATERTALENT 8341)

AddCheckBox(demo SpellName(DEMOROAR) default mastery=2)
AddCheckBox(fb "Aggressive FB" default mastery=2)
AddCheckBox(berserk "Cat Berserk" default mastery=2)
AddCheckBox(bberserk "Bear 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(shred "Use Shred for fillers"  default mastery=2)
AddCheckBox(t11 "Detect t11 set bonus" default mastery=2)
AddListItem(cd0 t0 "Top right - No Cooldown" default 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 - Predator's Swiftness" 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 - Predator's Swiftness" 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 - Predator's Swiftness" 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 - Predator's Swiftness" mastery=2)

# Bear cooldown dropdowns
AddListItem(bcd0 t99 "Bear top left - No Cooldown" mastery=2)
AddListItem(bcd1 t99 "Bear bottom left - No Cooldown" mastery=2)
AddListItem(bcd2 t99 "Bear top right - No Cooldown" mastery=2)
AddListItem(bcd3 t99 "Bear bottom right - No Cooldown" mastery=2)
AddListItem(bcd4 t99 "Bear top far right - No Cooldown" mastery=2)
AddListItem(bcd5 t99 "Bear bottom far right - No Cooldown" mastery=2)

AddListItem(bcd0 t0 "Bear top left - Barkskin" default mastery=2)
AddListItem(bcd0 t1 "Bear top left - Berserk" mastery=2)
AddListItem(bcd0 t2 "Bear top left - Survival Instincts" mastery=2)
AddListItem(bcd0 t3 "Bear top left - Frenzied Regeneration" mastery=2)
AddListItem(bcd0 t4 "Bear top left - Enrage" mastery=2)
AddListItem(bcd0 t5 "Bear top left - Pulverize" mastery=2)
AddListItem(bcd1 t0 "Bear bottom left - Barkskin" mastery=2)
AddListItem(bcd1 t1 "Bear bottom left - Berserk" default mastery=2)
AddListItem(bcd1 t2 "Bear bottom left - Survival Instincts" mastery=2)
AddListItem(bcd1 t3 "Bear bottom left - Frenzied Regeneration" mastery=2)
AddListItem(bcd1 t4 "Bear bottom left - Enrage" mastery=2)
AddListItem(bcd1 t5 "Bear bottom left - Pulverize" mastery=2)
AddListItem(bcd2 t0 "Bear top right - Barkskin" mastery=2)
AddListItem(bcd2 t1 "Bear top right - Berserk" mastery=2)
AddListItem(bcd2 t2 "Bear top right - Survival Instincts" default mastery=2)
AddListItem(bcd2 t3 "Bear top right - Frenzied Regeneration" mastery=2)
AddListItem(bcd2 t4 "Bear top right - Enrage" mastery=2)
AddListItem(bcd2 t5 "Bear top right - Pulverize" mastery=2)
AddListItem(bcd3 t0 "Bear bottom right - Barkskin" mastery=2)
AddListItem(bcd3 t1 "Bear bottom right - Berserk" mastery=2)
AddListItem(bcd3 t2 "Bear bottom right - Survival Instincts" mastery=2)
AddListItem(bcd3 t3 "Bear bottom right - Frenzied Regeneration" default mastery=2)
AddListItem(bcd3 t4 "Bear bottom right - Enrage" mastery=2)
AddListItem(bcd3 t5 "Bear bottom right - Pulverize" mastery=2)
AddListItem(bcd4 t0 "Bear top far right - Barkskin" mastery=2)
AddListItem(bcd4 t1 "Bear top far right - Berserk" mastery=2)
AddListItem(bcd4 t2 "Bear top far right - Survival Instincts" mastery=2)
AddListItem(bcd4 t3 "Bear top far right - Frenzied Regeneration" mastery=2)
AddListItem(bcd4 t4 "Bear top far right - Enrage" default mastery=2)
AddListItem(bcd4 t5 "Bear top far right - Pulverize" mastery=2)
AddListItem(bcd5 t0 "Bear bottom far right - Barkskin" mastery=2)
AddListItem(bcd5 t1 "Bear bottom far right - Berserk" mastery=2)
AddListItem(bcd5 t2 "Bear bottom far right - Survival Instincts" mastery=2)
AddListItem(bcd5 t3 "Bear bottom far right - Frenzied Regeneration" mastery=2)
AddListItem(bcd5 t4 "Bear bottom far right - Enrage" mastery=2)
AddListItem(bcd5 t5 "Bear bottom far right - Pulverize" default mastery=2)

ScoreSpells(FAERIEFERAL DEMOROAR MANGLEBEAR LACERATE SAVAGEROAR RIP
        MANGLECAT RAKE SHRED FEROCIOUSBITE PULVERIZE MAUL)
       
AddFunction AddCombo
{
   if CheckBoxOn(shred) Spell(SHRED)
   if CheckBoxOff(shred) Spell(MANGLECAT)
}

AddFunction BITWRange
{
   {ArmorSetParts(T13 more 1) and TargetLifePercent(less 60)} or TargetLifePercent(less 25)
}
 
AddIcon help=cd size=small mastery=2 { # TF Icon or Barkskin for Bear
    if CheckBoxOn(cooldownsL) {
        if Stance(3) {
           if TargetIsCasting(yes) and TargetIsInterruptible(yes) {
               Spell(SKULLBASHCAT)
               if ComboPoints(more 1)
                   Spell(MAIM)
           }

         if Threat(more 90 target=target) and TargetInRange(COWER)
               Spell(COWER)
       
            # 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) {
                   unless ArmorSetParts(T13 more 3) and {4s before Spell(TIGERSFURY)} {
                       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) {
           if TargetIsCasting(yes) and TargetIsInterruptible(yes) {
               Spell(SKULLBASHBEAR)
               Spell(BASH)
           }
           if List(bcd0 t0) Spell(BARKSKIN)
           if List(bcd0 t1) Spell(BERSERK)
           if List(bcd0 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd0 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd0 t4) Spell(ENRAGE)
           if List(bcd0 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
AddIcon help=cd size=small mastery=2 { # Berserk Icon
    if CheckBoxOn(cooldownsL) {
        if Stance(1) {
            if List(bcd1 t0) Spell(BARKSKIN)
           if List(bcd1 t1) Spell(BERSERK)
           if List(bcd1 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd1 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd1 t4) Spell(ENRAGE)
           if List(bcd1 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
        if Stance(3) {
         if BuffPresent(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(bberserk) and 0s before Spell(BERSERK) {
          if Glyph(GLYPHOFBERSERK) {       
              unless TargetDebuffExpires(lowerarmor 25 stacks=3) {
                 if BuffPresent(PULVERIZEBUFF 12) Spell(BERSERK)
              }
           }
           unless Glyph(GLYPHOFBERSERK) {
              unless TargetDebuffExpires(lowerarmor 15 stacks=3) {
                 if BuffPresent(PULVERIZEBUFF 12) Spell(BERSERK)
              }
           }
       }
       
        if CheckBoxOn(lucioles) and CheckBoxOff(aoe) and TargetDebuffExpires(lowerarmor 2 stacks=3) {
            Spell(FAERIEFERAL)
        }
       
        if 1s before Spell(MANGLEBEAR) {
            Spell(MANGLEBEAR)
        }

        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 3) {
            Spell(PULVERIZE)
        }
       
        unless TargetDebuffPresent(LACERATE stacks=3) {
            Spell(LACERATE)
        }
        if 0s before Spell(FAERIEFERAL) {
            Spell(FAERIEFERAL)
        }
        Spell(LACERATE)
    }

    if Stance(3) { # cat
       # TF + Berserk logic - only show Berserk if both are off of cooldown - everyone should macro TF to their Berserk key
        unless BuffPresent(BERSERK) or BuffPresent(CLEARCASTING) {
           if ArmorSetParts(T13 more 3) {
            if Mana(less 46) and {0s before Spell(TIGERSFURY)} {
               unless BuffPresent(PANTHER) {
                     if CheckBoxOn(berserk) Spell(BERSERK)
                     Spell(TIGERSFURY)
               }
               }
           } 
           unless ArmorSetParts(T13 more 3) {
              if Mana(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) and CheckBoxOn(berserk) {
           Spell(BERSERK)
        }
       
        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 2) and CheckBoxOn(mangle) {
            Spell(MANGLECAT)
        }
       
        # Ravage Code - this is the catch all
        if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
   
        # 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 BITWRange() and TargetDebuffPresent(RIP mine=1) {
           if ComboPoints(more 4) Spell(FEROCIOUSBITE)
           if ComboPoints(more 0) and TargetDebuffExpires(RIP 2.9 mine=1) Spell(FEROCIOUSBITE)       
        }
        #Extends Rip with shred if glyph
        unless TalentPoints(BLOODINTHEWATERTALENT more 1) and BITWRange() {
         if Glyph(GLYPHOFBLOODLETTING) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
               AddCombo()
           }
        }
       
        # Time to recast Rip - clip if possible - try to hold off for TF
        if ComboPoints(more 4) and TargetDeadIn(more 6) and TargetDebuffExpires(RIP 2 mine=1) and
            {BuffPresent(BERSERK) or {{target.debuffExpires(RIP mine=1)+1.9}<spell(TIGERSFURY)}}
         Spell(RIP)

      # FBs during Berserk
      if BuffPresent(BERSERK) {
         if ComboPoints(more 4) and Mana(more 12) and TargetDebuffPresent(RIP 5 mine=1) and BuffPresent(SAVAGEROAR 3) {
            Spell(FEROCIOUSBITE)
         }
      }

        # 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 TargetDeadIn(more 8.4) and TargetDebuffExpires(RAKE 2.9 mine=1) and {BuffPresent(BERSERK) or Mana(more 70) or
            {{spell(TIGERSFURY)+0.1}>target.debuffExpires(RAKE mine=1)}}
         Spell(RAKE)

      if BuffPresent(CLEARCASTING) AddCombo()
      
        # Savage Roar code - both when it is down and the desync code for Rip and Roar
        if ComboPoints(more 0) and BuffExpires(SAVAGEROAR 2) {
            Spell(SAVAGEROAR)
        }
       
        # SR/Rip desync code
        if ComboPoints(more 4) and TargetDeadIn(more 8.9) and TargetDebuffExpires(RIP 12 mine=1) and
               {{less than 6s between BuffExpires(SAVAGEROAR) and TargetDebuffExpires(RIP mine=1)} or BuffExpires(SAVAGEROAR 6)} {
           Spell(SAVAGEROAR)
        }
       
        # 4 piece T13
        if BuffPresent(STAMPEDE) and ArmorSetParts(T13 more 3) and {1s before Spell(TIGERSFURY)}
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)

        # 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)
        }
       
      if BuffExpires(BERSERK 0) or Mana(less 25) {
         if ComboPoints(more 4) and TargetDebuffPresent(RIP 14 mine=1) and BuffPresent(SAVAGEROAR 10) and CheckBoxOn(fb) {
            Spell(FEROCIOUSBITE)
         }
      }
         
        if BuffPresent(STAMPEDE) and BuffPresent(TIGERSFURY) {
           unless {1s before Mana(more 99)} Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
       
        # try to use up FC Stampede if you have 4 piece T13
        if BuffPresent(STAMPEDE) and ArmorSetParts(T13 more 3) {
           unless {1s before Mana(more 99)} Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
       
        #stack up PANTHER (T11)
        if ArmorSetParts(T11 more 3) and CheckBoxOn(t11) {
            unless BuffPresent(PANTHER stacks=3) Spell(MANGLECAT)
        }
       
        # Shred aggressively for Berserk and TF
        if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) AddCombo()
       
        # Shred for combo points for Rip or SR
        if ComboPoints(less 5) and TargetDebuffExpires(RIP 3 mine=1) AddCombo()
        if ComboPoints(less 1) and BuffExpires(SAVAGEROAR 2) AddCombo()
       
        # Shred to burn off energy so we can TF without capping
        if { 3s before Spell(TIGERSFURY) } AddCombo()
       
        # Shred is the mob will die within one Rake
        if TargetDeadIn(less 8.5) AddCombo()
       
        # Fallback Shred to prevent energy capping
        if 1.2s before Mana(more 99) AddCombo()
    }
}



# Main Rotation (no filler shreds, otherwise copy of other rotation)
AddIcon help=main mastery=2
{
   if Stance(1) {
        if Mana(more 45) {
            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 2) and CheckBoxOn(mangle) {
            Spell(MANGLECAT)
        }
       
        # Ravage Code - this is the catch all
        if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
   
        # 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 BITWRange() and TargetDebuffPresent(RIP mine=1) {
           if ComboPoints(more 4) Spell(FEROCIOUSBITE)
           if ComboPoints(more 0) and TargetDebuffExpires(RIP 2.9 mine=1) Spell(FEROCIOUSBITE)       
        }
        #Extends Rip with shred if glyph
        unless TalentPoints(BLOODINTHEWATERTALENT more 1) and BITWRange() {
         if Glyph(GLYPHOFBLOODLETTING) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
               AddCombo()
           }
        }
       
        # Time to recast Rip - clip if possible - try to hold off for TF
        if ComboPoints(more 4) and TargetDeadIn(more 6) and TargetDebuffExpires(RIP 2 mine=1) and
            {BuffPresent(BERSERK) or {{target.debuffExpires(RIP mine=1)+1.9}<spell(TIGERSFURY)}}
         Spell(RIP)

      # FBs during Berserk
      if BuffPresent(BERSERK) {
         if ComboPoints(more 4) and Mana(more 12) and TargetDebuffPresent(RIP 5 mine=1) and BuffPresent(SAVAGEROAR 3) {
            Spell(FEROCIOUSBITE)
         }
      }
      
        # 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 TargetDeadIn(more 8.4) and TargetDebuffExpires(RAKE 2.9 mine=1) and {BuffPresent(BERSERK) or Mana(more 70) or
            {{spell(TIGERSFURY)+0.1}>target.debuffExpires(RAKE mine=1)}}
         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 2) {
            Spell(SAVAGEROAR)
        }
       
        # SR/Rip desync code
        if ComboPoints(more 4) and TargetDeadIn(more 8.9) and TargetDebuffExpires(RIP 12 mine=1) and
               {{less than 6s between BuffExpires(SAVAGEROAR) and TargetDebuffExpires(RIP mine=1)} or BuffExpires(SAVAGEROAR 6)} {
           Spell(SAVAGEROAR)
       
        # 4 piece T13
        if BuffPresent(STAMPEDE) and ArmorSetParts(T13 more 3) and {1s before Spell(TIGERSFURY)}
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
       
      if BuffExpires(BERSERK 0) or Mana(less 25) {
         if ComboPoints(more 4) and TargetDebuffPresent(RIP 14 mine=1) and BuffPresent(SAVAGEROAR 10) and CheckBoxOn(fb) {
            Spell(FEROCIOUSBITE)
         }
      }
         
        if BuffPresent(STAMPEDE) and BuffPresent(TIGERSFURY) {
           unless {1s before Mana(more 99)} Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
       
        # try to use up FC Stampede if you have 4 piece T13
        if BuffPresent(STAMPEDE) and ArmorSetParts(T13 more 3) {
           unless {1s before Mana(more 99)} Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
    }
}

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) {
               unless BuffPresent(MATRIXRESTABILIZERPROC) {
                  if 0s before BuffGain(MATRIXRESTABILIZERPROC 105) Item(MATRIXRESTABILIZER)
               }
               if BuffPresent(MATRIXRESTABILIZERPROC) {
                   if 0s before BuffExpires(MATRIXRESTABILIZERPROC 0) Texture(inv_gizmo_electrifiedether)
               }
           }
            if List(cd0 t11) {
               unless BuffPresent(DEVOUR) {
                  if 0s before BuffGain(DEVOUR 60) Item(THEHUNGERER)
               }
               if BuffPresent(DEVOUR) {
                   if 0s before BuffExpires(DEVOUR 0) Texture(spell_deathknight_gnaw_ghoul)
               }
           }
           if List(cd0 t12) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
           if List(bcd2 t0) Spell(BARKSKIN)
           if List(bcd2 t1) Spell(BERSERK)
           if List(bcd2 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd2 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd2 t4) Spell(ENRAGE)
           if List(bcd2 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
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) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
            if List(bcd3 t0) Spell(BARKSKIN)
           if List(bcd3 t1) Spell(BERSERK)
           if List(bcd3 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd3 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd3 t4) Spell(ENRAGE)
           if List(bcd3 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
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) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
            if List(bcd4 t0) Spell(BARKSKIN)
           if List(bcd4 t1) Spell(BERSERK)
           if List(bcd4 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd4 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd4 t4) Spell(ENRAGE)
           if List(bcd4 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
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) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
            if List(bcd5 t0) Spell(BARKSKIN)
           if List(bcd5 t1) Spell(BERSERK)
           if List(bcd5 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd5 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd5 t4) Spell(ENRAGE)
           if List(bcd5 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Thu Dec 01, 2011 4:38 pm

4.3.5.2

If you want to use Mangle in place of Shred, toggle off the "Use Shred for fillers" option.

Implemented auto-detect for 2 and 4 piece T13. Ovale added support for this in revision 443 which is labeled 4.3.1 and released on December 10th.

Since I do not have 4 piece, I have not been able to verify how it is works with TF generated Ravage.

I removed trinket tracking from this version. There were too many trinkets to keep track of (and I don't use Ovale to track trinkets).

Handy Blog post on installing the script (a little dated but very helpful): http://murlocparliament.com/2010/10/27/ ... r-dummies/

Code: Select all
# Ovale Optimized Script Leafkiller 4.3.5.2
#       Bear code from tbot
# Ovale source: http://wow.curse.com/downloads/wow-addons/details/ovale.aspx
# Cat Rotation based on the Mew single target default script. Contributions to that have come from many ferals.
# Revision History
# 4.3.5.2 12/15/2011 Use texture for Ravage until Ravage! can be investigated.
# 4.3.5 12/15/2011 - Fix typo that crashed Ovale when going Bear.
#                    Tweaks to Ravage! code.
# 4.3.4 12/13/2011 - Remove OOC checking from Ravage! TF call - per Mew testing it is dps neutral.
# 4.3.3 12/13/2011 - Use autodetection for T13
# 4.3.2 12/01/2011 - Add support for 2 piece T13
# 4.3.1 12/01/2011 - First version for patch 4.3
#       Remove trinkets (too many to track). Suppport for Glyph of Bloodletting.
#       Support for Mangle extending Rip. Frontal attack support. Support for 4 piece T13 (toggle).

Define(BARKSKIN 22812)
Define(BASH 5211) #bear interrupt
Define(BERSERK 50334) #cat+bear cd buff
Define(COWER 8998)
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(MAIM 22570) #cat interrupt
Define(MANGLECAT 33876) #cat bleed+debuff
   SpellInfo(MANGLECAT inccounter=ripshreds)
Define(MANGLEBEAR 33878) #bear bleed+debuff
Define(MAUL 6807) #bear
Define(PANTHER 90166) #tier 11 4 piece cat
Define(PREDATORSSWIFTNESS 69369)
Define(PULVERIZE 80313) #bear after lacerate*3
Define (PULVERIZEBUFF 80951) #buff has a different spellid then the ability
Define(RAKE 1822) #cat bleed
Define(RAVAGEBANG 81170) #cat behind+(stampede)
   SpellInfo(RAVAGEBANG combo=1 mana=0)
   SpellAddBuff(RAVAGEBANG STAMPEDE=0)
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(SKULLBASHBEAR 80964) #bear interrupt
Define(SKULLBASHCAT 80965) #cat interrupt
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)
Define(MATRIXRESTABILIZERPROC 96978)
Define(MATRIXRESTABILIZER 68994)
Define(DEVOUR 96911)
Define(THEHUNGERER 68927)

#Glyphs
Define(GLYPHOFRIP 54818)
Define(GLYPHOFBERSERK 62969)
Define(GLYPHOFBLOODLETTING 40901)

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

#Talents
Define(BLOODINTHEWATERTALENT 8341)

AddCheckBox(demo SpellName(DEMOROAR) default mastery=2)
AddCheckBox(fb "Aggressive FB" default mastery=2)
AddCheckBox(berserk "Cat Berserk" default mastery=2)
AddCheckBox(bberserk "Bear 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(shred "Use Shred for fillers"  default mastery=2)
AddCheckBox(t11 "Detect t11 set bonus" default mastery=2)
AddListItem(cd0 t0 "Top right - No Cooldown" default 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 - Predator's Swiftness" 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 - Predator's Swiftness" 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 - Predator's Swiftness" 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 - Predator's Swiftness" mastery=2)

# Bear cooldown dropdowns
AddListItem(bcd0 t99 "Bear top left - No Cooldown" mastery=2)
AddListItem(bcd1 t99 "Bear bottom left - No Cooldown" mastery=2)
AddListItem(bcd2 t99 "Bear top right - No Cooldown" mastery=2)
AddListItem(bcd3 t99 "Bear bottom right - No Cooldown" mastery=2)
AddListItem(bcd4 t99 "Bear top far right - No Cooldown" mastery=2)
AddListItem(bcd5 t99 "Bear bottom far right - No Cooldown" mastery=2)

AddListItem(bcd0 t0 "Bear top left - Barkskin" default mastery=2)
AddListItem(bcd0 t1 "Bear top left - Berserk" mastery=2)
AddListItem(bcd0 t2 "Bear top left - Survival Instincts" mastery=2)
AddListItem(bcd0 t3 "Bear top left - Frenzied Regeneration" mastery=2)
AddListItem(bcd0 t4 "Bear top left - Enrage" mastery=2)
AddListItem(bcd0 t5 "Bear top left - Pulverize" mastery=2)
AddListItem(bcd1 t0 "Bear bottom left - Barkskin" mastery=2)
AddListItem(bcd1 t1 "Bear bottom left - Berserk" default mastery=2)
AddListItem(bcd1 t2 "Bear bottom left - Survival Instincts" mastery=2)
AddListItem(bcd1 t3 "Bear bottom left - Frenzied Regeneration" mastery=2)
AddListItem(bcd1 t4 "Bear bottom left - Enrage" mastery=2)
AddListItem(bcd1 t5 "Bear bottom left - Pulverize" mastery=2)
AddListItem(bcd2 t0 "Bear top right - Barkskin" mastery=2)
AddListItem(bcd2 t1 "Bear top right - Berserk" mastery=2)
AddListItem(bcd2 t2 "Bear top right - Survival Instincts" default mastery=2)
AddListItem(bcd2 t3 "Bear top right - Frenzied Regeneration" mastery=2)
AddListItem(bcd2 t4 "Bear top right - Enrage" mastery=2)
AddListItem(bcd2 t5 "Bear top right - Pulverize" mastery=2)
AddListItem(bcd3 t0 "Bear bottom right - Barkskin" mastery=2)
AddListItem(bcd3 t1 "Bear bottom right - Berserk" mastery=2)
AddListItem(bcd3 t2 "Bear bottom right - Survival Instincts" mastery=2)
AddListItem(bcd3 t3 "Bear bottom right - Frenzied Regeneration" default mastery=2)
AddListItem(bcd3 t4 "Bear bottom right - Enrage" mastery=2)
AddListItem(bcd3 t5 "Bear bottom right - Pulverize" mastery=2)
AddListItem(bcd4 t0 "Bear top far right - Barkskin" mastery=2)
AddListItem(bcd4 t1 "Bear top far right - Berserk" mastery=2)
AddListItem(bcd4 t2 "Bear top far right - Survival Instincts" mastery=2)
AddListItem(bcd4 t3 "Bear top far right - Frenzied Regeneration" mastery=2)
AddListItem(bcd4 t4 "Bear top far right - Enrage" default mastery=2)
AddListItem(bcd4 t5 "Bear top far right - Pulverize" mastery=2)
AddListItem(bcd5 t0 "Bear bottom far right - Barkskin" mastery=2)
AddListItem(bcd5 t1 "Bear bottom far right - Berserk" mastery=2)
AddListItem(bcd5 t2 "Bear bottom far right - Survival Instincts" mastery=2)
AddListItem(bcd5 t3 "Bear bottom far right - Frenzied Regeneration" mastery=2)
AddListItem(bcd5 t4 "Bear bottom far right - Enrage" mastery=2)
AddListItem(bcd5 t5 "Bear bottom far right - Pulverize" default mastery=2)

ScoreSpells(FAERIEFERAL DEMOROAR MANGLEBEAR LACERATE SAVAGEROAR RIP
        MANGLECAT RAKE SHRED FEROCIOUSBITE PULVERIZE MAUL)
       
AddFunction AddCombo
{
   if CheckBoxOn(shred) Spell(SHRED)
   if CheckBoxOff(shred) Spell(MANGLECAT)
}
 
AddIcon help=cd size=small mastery=2 { # TF Icon or Barkskin for Bear
    if CheckBoxOn(cooldownsL) {
        if Stance(3) {
           if TargetIsCasting(yes) and TargetIsInterruptible(yes) {
               Spell(SKULLBASHCAT)
               if ComboPoints(more 1)
                   Spell(MAIM)
           }

         if Threat(more 90 target=target) and TargetInRange(COWER)
               Spell(COWER)
       
            # 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) {
                   unless ArmorSetParts(T13 more 3) and {4s before Spell(TIGERSFURY)} {
                       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) {
           if TargetIsCasting(yes) and TargetIsInterruptible(yes) {
               Spell(SKULLBASHBEAR)
               Spell(BASH)
           }
           if List(bcd0 t0) Spell(BARKSKIN)
           if List(bcd0 t1) Spell(BERSERK)
           if List(bcd0 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd0 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd0 t4) Spell(ENRAGE)
           if List(bcd0 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
AddIcon help=cd size=small mastery=2 { # Berserk Icon
    if CheckBoxOn(cooldownsL) {
        if Stance(1) {
            if List(bcd1 t0) Spell(BARKSKIN)
           if List(bcd1 t1) Spell(BERSERK)
           if List(bcd1 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd1 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd1 t4) Spell(ENRAGE)
           if List(bcd1 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
        if Stance(3) {
         if BuffPresent(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(bberserk) and 0s before Spell(BERSERK) {
          if Glyph(GLYPHOFBERSERK) {       
              unless TargetDebuffExpires(lowerarmor 25 stacks=3) {
                 if BuffPresent(PULVERIZEBUFF 12) Spell(BERSERK)
              }
           }
           unless Glyph(GLYPHOFBERSERK) {
              unless TargetDebuffExpires(lowerarmor 15 stacks=3) {
                 if BuffPresent(PULVERIZEBUFF 12) Spell(BERSERK)
              }
           }
       }
       
        if CheckBoxOn(lucioles) and CheckBoxOff(aoe) and TargetDebuffExpires(lowerarmor 2 stacks=3) {
            Spell(FAERIEFERAL)
        }
       
        if 1s before Spell(MANGLEBEAR) {
            Spell(MANGLEBEAR)
        }

        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 3) {
            Spell(PULVERIZE)
        }
       
        unless TargetDebuffPresent(LACERATE stacks=3) {
            Spell(LACERATE)
        }
        if 0s before Spell(FAERIEFERAL) {
            Spell(FAERIEFERAL)
        }
        Spell(LACERATE)
    }

    if Stance(3) { # cat
       # TF + Berserk logic - only show Berserk if both are off of cooldown - everyone should macro TF to their Berserk key
        unless BuffPresent(BERSERK) or BuffPresent(CLEARCASTING) {
           if {Mana(less 36) and {0s before Spell(TIGERSFURY)}} {
               if CheckBoxOn(berserk) {
                  unless DebuffPresent(BLAZINGPOWER 29) Spell(BERSERK)
               }
               Spell(TIGERSFURY)
            }
           if DebuffPresent(BLAZINGPOWER 35) and {0s before Spell(TIGERSFURY)} {
               Spell(TIGERSFURY)
            }
         if {Mana(less 46) and {0s before Spell(TIGERSFURY)} and ArmorSetParts(T13 more 3)} {
               if CheckBoxOn(berserk) {
                  unless DebuffPresent(BLAZINGPOWER 29) Spell(BERSERK)
               }
               Spell(TIGERSFURY)
            }
        }
       
        #In case Berserk was not cast with TF
        if BuffPresent(TIGERSFURY) and CheckBoxOn(berserk) {
           unless DebuffPresent(BLAZINGPOWER 29) Spell(BERSERK)
        }
       
        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 2) and CheckBoxOn(mangle) {
            Spell(MANGLECAT)
        }
       
        # Ravage Code - this is the catch all
        if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
   
        # 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 ArmorSetParts(T13 more 1) {
            if TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 60) and TargetDebuffPresent(RIP mine=1) {
              if ComboPoints(more 4) Spell(FEROCIOUSBITE)
              if ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) Spell(FEROCIOUSBITE)       
           }
           #Extends Rip with shred if glyph
           unless TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 60) {
            if Glyph(GLYPHOFBLOODLETTING) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
                  AddCombo()
              }
           }
        }
        unless ArmorSetParts(T13 more 1) {
            if TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
              if ComboPoints(more 4) Spell(FEROCIOUSBITE)
              if ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) Spell(FEROCIOUSBITE)       
           }
           #Extends Rip with shred if glyph
           unless TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 25) {
            if Glyph(GLYPHOFBLOODLETTING) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
                  AddCombo()
              }
           }
        }
       
        # Time to recast Rip - clip if possible - try to hold off for TF
        if ComboPoints(more 4) and TargetDeadIn(more 6) and TargetDebuffExpires(RIP 2 mine=1) and
            {BuffPresent(BERSERK) or {target.debuffExpires(RIP mine=1)<spell(TIGERSFURY)}}
         Spell(RIP)

      # FBs during Berserk
      if BuffPresent(BERSERK) {
         if ComboPoints(more 4) and Mana(more 12) and TargetDebuffPresent(RIP 5 mine=1) and BuffPresent(SAVAGEROAR 3) {
            Spell(FEROCIOUSBITE)
         }
      }
      
      # FB during air phase on Alysrazor
      if DebuffPresent(BLAZINGPOWER 35) {
         if ComboPoints(more 4) and Mana(more 24) and TargetDebuffPresent(RIP 5 mine=1) and BuffPresent(SAVAGEROAR 3) {
            Spell(FEROCIOUSBITE)
         }
      }

        # 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 TargetDeadIn(more 8.4) and TargetDebuffExpires(RAKE 2.9 mine=1) and {BuffPresent(BERSERK) or Mana(more 70) or
            {{spell(TIGERSFURY)+0.8}>target.debuffExpires(RAKE mine=1)}}
         Spell(RAKE)

      if BuffPresent(CLEARCASTING) AddCombo()
      
        # Savage Roar code - both when it is down and the desync code for Rip and Roar
        if ComboPoints(more 0) and BuffExpires(SAVAGEROAR 1) {
            Spell(SAVAGEROAR)
        }
       
        # 4 piece T13
        if BuffPresent(STAMPEDE) and ArmorSetParts(T13 more 3) and {0s before Spell(TIGERSFURY)}
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)

        # 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)
        }
       
      if BuffExpires(BERSERK 0) or Mana(less 25) {
         if ComboPoints(more 4) and TargetDebuffPresent(RIP 14 mine=1) and BuffPresent(SAVAGEROAR 10) and CheckBoxOn(fb) {
            Spell(FEROCIOUSBITE)
         }
      }
         
        if BuffPresent(STAMPEDE) and BuffPresent(TIGERSFURY) {
           unless {1s before Mana(more 99)} Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
       
        # try to use up FC Stampede if you have 4 piece T13
        if BuffPresent(STAMPEDE) and ArmorSetParts(T13 more 3) {
           unless {1s before Mana(more 99)} Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
       
        #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
        # Shred during air phase on Alysrazor
        if DebuffPresent(BLAZINGPOWER 35) AddCombo()
       
        # Shred aggressively for Berserk and TF
        if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) AddCombo()
       
        # Shred for combo points for Rip or SR
        if ComboPoints(less 5) and TargetDebuffExpires(RIP 3 mine=1) AddCombo()
        if ComboPoints(less 1) and BuffExpires(SAVAGEROAR 2) AddCombo()
       
        # Shred to burn off energy so we can TF without capping
        if { 3s before Spell(TIGERSFURY) } AddCombo()
       
        # Shred is the mob will die within one Rake
        if TargetDeadIn(less 8.5) AddCombo()
       
        # Fallback Shred to prevent energy capping
        if 1.2s before Mana(more 99) AddCombo()
    }
}



# Main Rotation (no filler shreds, otherwise copy of other rotation)
AddIcon help=main mastery=2
{
   if Stance(1) {
        if Mana(more 45) {
            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 2) and CheckBoxOn(mangle) {
            Spell(MANGLECAT)
        }
       
        # Ravage Code - this is the catch all
        if BuffPresent(STAMPEDE) and BuffExpires(STAMPEDE 3) {
           Texture(ability_druid_ravage) # Spell(RAVAGEBANG)
        }
   
        # 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 ArmorSetParts(T13 more 1) {
            if TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 60) and TargetDebuffPresent(RIP mine=1) {
              if ComboPoints(more 4) Spell(FEROCIOUSBITE)
              if ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) Spell(FEROCIOUSBITE)       
           }
           #Extends Rip with shred if glyph
           unless TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 60) {
            if Glyph(GLYPHOFBLOODLETTING) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
                  AddCombo()
              }
           }
        }
        unless ArmorSetParts(T13 more 1) {
            if TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 25) and TargetDebuffPresent(RIP mine=1) {
              if ComboPoints(more 4) Spell(FEROCIOUSBITE)
              if ComboPoints(more 0) and TargetDebuffExpires(RIP 2.1 mine=1) Spell(FEROCIOUSBITE)       
           }
           #Extends Rip with shred if glyph
           unless TalentPoints(BLOODINTHEWATERTALENT more 1) and TargetLifePercent(less 25) {
            if Glyph(GLYPHOFBLOODLETTING) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
                  AddCombo()
              }
           }
        }
       
        # Time to recast Rip - clip if possible - try to hold off for TF
        if ComboPoints(more 4) and TargetDeadIn(more 6) and TargetDebuffExpires(RIP 2 mine=1) and
            {BuffPresent(BERSERK) or {target.debuffExpires(RIP mine=1)<spell(TIGERSFURY)}}
         Spell(RIP)

      # FBs during Berserk
      if BuffPresent(BERSERK) {
         if ComboPoints(more 4) and Mana(more 12) and TargetDebuffPresent(RIP 5 mine=1) and BuffPresent(SAVAGEROAR 3) {
            Spell(FEROCIOUSBITE)
         }
      }

      # FB during air phase on Alysrazor
      if DebuffPresent(BLAZINGPOWER 35) {
         if ComboPoints(more 4) and Mana(more 24) and TargetDebuffPresent(RIP 5 mine=1) and BuffPresent(SAVAGEROAR 3) {
            Spell(FEROCIOUSBITE)
         }
      }
      
        # 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 TargetDeadIn(more 8.4) and TargetDebuffExpires(RAKE 2.9 mine=1) and {BuffPresent(BERSERK) or Mana(more 70) or
            {{spell(TIGERSFURY)+0.8}>target.debuffExpires(RAKE mine=1)}}
         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) {
            Spell(SAVAGEROAR)
        }
       
      if BuffExpires(BERSERK 0) or Mana(less 25) {
         if ComboPoints(more 4) and TargetDebuffPresent(RIP 14 mine=1) and BuffPresent(SAVAGEROAR 10) and CheckBoxOn(fb) {
            Spell(FEROCIOUSBITE)
         }
      }
    }
}

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) {
               unless BuffPresent(MATRIXRESTABILIZERPROC) {
                  if 0s before BuffGain(MATRIXRESTABILIZERPROC 105) Item(MATRIXRESTABILIZER)
               }
               if BuffPresent(MATRIXRESTABILIZERPROC) {
                   if 0s before BuffExpires(MATRIXRESTABILIZERPROC 0) Texture(inv_gizmo_electrifiedether)
               }
           }
            if List(cd0 t11) {
               unless BuffPresent(DEVOUR) {
                  if 0s before BuffGain(DEVOUR 60) Item(THEHUNGERER)
               }
               if BuffPresent(DEVOUR) {
                   if 0s before BuffExpires(DEVOUR 0) Texture(spell_deathknight_gnaw_ghoul)
               }
           }
           if List(cd0 t12) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
           if List(bcd2 t0) Spell(BARKSKIN)
           if List(bcd2 t1) Spell(BERSERK)
           if List(bcd2 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd2 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd2 t4) Spell(ENRAGE)
           if List(bcd2 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
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) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
            if List(bcd3 t0) Spell(BARKSKIN)
           if List(bcd3 t1) Spell(BERSERK)
           if List(bcd3 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd3 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd3 t4) Spell(ENRAGE)
           if List(bcd3 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
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) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
            if List(bcd4 t0) Spell(BARKSKIN)
           if List(bcd4 t1) Spell(BERSERK)
           if List(bcd4 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd4 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd4 t4) Spell(ENRAGE)
           if List(bcd4 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}
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) {
              if BuffPresent(PREDATORSSWIFTNESS) {
                 if 0s before BuffExpires(PREDATORSSWIFTNESS 0) Texture(ability_hunter_pet_cat)
              }
           }
        }
        if Stance(1) {
            if List(bcd5 t0) Spell(BARKSKIN)
           if List(bcd5 t1) Spell(BERSERK)
           if List(bcd5 t2) Spell(SURVIVALINSTINCTS)
           if List(bcd5 t3) Spell(FRENZIEDREGENERATION)
           if List(bcd5 t4) Spell(ENRAGE)
           if List(bcd5 t5) {
              if BuffPresent(PULVERIZEBUFF) {
                 if BuffExpires(PULVERIZEBUFF 0) Texture(ability_smash)
              }
              unless BuffPresent(PULVERIZEBUFF) {
                 if TargetDebuffPresent(LACERATE stacks=3) Spell(PULVERIZE)
              }
           }
        }
    }
}

Honored
Posts: 92
Joined: Sun May 29, 2011 2:58 am

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Terias » Thu Dec 01, 2011 8:49 pm

Thanks for the update, do we have to modify the script for 2p t13?

Posts: 1
Joined: Thu Dec 01, 2011 10:15 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Ikilu » Thu Dec 01, 2011 10:52 pm

Thanks a lot Leafkiller! I was waiting for your update

I've a question, if I just edit every "TargetLifePercent(less 25)" to "TargetLifePercent(less 60) it should work without problems for 4T13? Still never edit ovale codes and idk if it can cause some error


Sorry for my bad grammar, isnt my native language and thanks again ^^

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Fri Dec 02, 2011 1:16 am

Clearly I missed the 2 piece set bonus. I will add code for that. It will be a toggle since I don't have auto-detect for tier bonus.

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Fri Dec 02, 2011 3:32 am

4.3.2 has a toggle for 2 piece tier 13 for the 60% blood in the water range. I have not tested this as I don't have any handy raid bosses I can drop below 60/25%. I don't have two piece yet so I need help testing this - to make sure the 25% range is still working and also the 60% range is now working when the "2 Piece T13" toggle is selected.

Honored
User avatar
Posts: 72
Joined: Mon Feb 21, 2011 8:56 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby scorpio0920 » Fri Dec 02, 2011 3:57 am

Argent Tournament

Dummy can help you to test 2T13.

Honored
Posts: 92
Joined: Sun May 29, 2011 2:58 am

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Terias » Fri Dec 02, 2011 4:07 am

Just queued LFR and tested it on morchok, worked fine enabled and disabled.

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Fri Dec 02, 2011 5:14 am

Cool thanks for testing it. Right Argent tournament, I knew there was someplace but I could not remember where. And it is easy to get to...

Posts: 1
Joined: Fri Oct 15, 2010 11:47 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby lacktorium » Fri Dec 02, 2011 5:33 pm

thanks for the update. as always its just the thing needed to keep me on top dps chart.

Honored
Posts: 115
Joined: Thu Apr 28, 2011 12:28 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby adianar » Fri Dec 02, 2011 6:41 pm

This sounds silly, but we missed throwing the sword at the demon at the end of the new 5 man raid. We dps'd the demon down for about 10 mins before we figured it out. Once done, you can pull lots of data on that guy as to timing of stks, dropping buffs, etc. He starts with like 90 Mio health and standing at his back haunch, you can dps, walk away and get a drink and come back and nothing has happened to you... It takes a bit to get a tank adn 3 dps to drop 90 Mio health.. LOL.

Just an idea.

Adi

Posts: 47
Joined: Sun Oct 03, 2010 12:13 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby mineko » Sun Dec 04, 2011 1:25 pm

Thanks Leafkiller. Your script continues to be the only Ovale script I've ever relied on, and has kept me just ahead of the rest of the dps in my raid group ever since you started writing these. I owe you big time.

Posts: 43
Joined: Wed May 25, 2011 3:12 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Kihrawr » Thu Dec 08, 2011 2:57 pm

I have 4pc, so let me know if there's anything specific you'd like me to test.

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Thu Dec 08, 2011 3:12 pm

Kihrawr wrote:I have 4pc, so let me know if there's anything specific you'd like me to test.


Changes for 4 piece include a higher energy threshold for TF (up from 35 to 45), and code to use up a Feral-charge induced Stampede proc before TF comes off of cooldown, and/or before asking you to use TF. Mostly play around with Stampede procs, making sure the FC ones are being called for quickly and the TF ones are being called for ahead of fillers.

Posts: 3
Joined: Thu Dec 08, 2011 5:15 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Catophena » Thu Dec 08, 2011 5:17 pm

Sorry if this is a noob question, but where are the options to toggle things like 2pc T13 or Shred/Mangle fillers?

Exalted
User avatar
Posts: 1529
Joined: Mon May 24, 2010 10:21 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Tinderhoof » Thu Dec 08, 2011 5:24 pm

Just click on the Ovale box/boxes after you have installed Leaf's script. A large number of check boxes will show up and allow you to select your preferences. Just click on the Ovale boxes again to make the options become hidden again.

Posts: 3
Joined: Thu Dec 08, 2011 5:15 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Catophena » Thu Dec 08, 2011 5:39 pm

hrmm...I think I know those options, but I don't recall seeing T13 options. Just one about T11 (maybe) and which boxes to show. I'll have to check again tonight.

Thanks

Exalted
User avatar
Posts: 1529
Joined: Mon May 24, 2010 10:21 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Tinderhoof » Thu Dec 08, 2011 6:39 pm

Catophena wrote:hrmm...I think I know those options, but I don't recall seeing T13 options. Just one about T11 (maybe) and which boxes to show. I'll have to check again tonight.

Thanks

Yep!
Take a look at the below section of the most recent script:
AddCheckBox(mangle SpellName(MANGLECAT) default mastery=2)
AddCheckBox(shred "Use Shred for fillers" default mastery=2)
AddCheckBox(tier13 "4 Piece T13" mastery=2)
AddCheckBox(twotier13 "2 Piece T13" mastery=2)

Posts: 43
Joined: Wed May 25, 2011 3:12 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Kihrawr » Thu Dec 08, 2011 6:59 pm

Leafkiller wrote:
Kihrawr wrote:I have 4pc, so let me know if there's anything specific you'd like me to test.


Changes for 4 piece include a higher energy threshold for TF (up from 35 to 45), and code to use up a Feral-charge induced Stampede proc before TF comes off of cooldown, and/or before asking you to use TF. Mostly play around with Stampede procs, making sure the FC ones are being called for quickly and the TF ones are being called for ahead of fillers.


In terms of energy pooling, it seems like you will want to factor in the fact that TF is coming and thus going to give you the Ravage. It seems like anticipating the TF/Ravage should allow you to Shred more aggressively.

Posts: 1
Joined: Fri Dec 09, 2011 6:11 am

Re: Leafkiller's 4.3 Feral Ovale Script

Postby gkrajina » Fri Dec 09, 2011 6:17 am

hey guys ,have a short question.
When i installed the 4.3 ovale script i saw sonething strange or better say different.
When doing roatation after i get all the buffs ,debuff going i get the icon to refresh rake rly often like for example ,rake has 6 secs before it ends and still ovale wants me to refresh it and not to use shred . plz need some info on it did rotation change or what?
ty in advance

Honored
Posts: 92
Joined: Sun May 29, 2011 2:58 am

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Terias » Fri Dec 09, 2011 6:24 am

Did you hit TF and it told you to refresh rake? It refreshes rake early if you have TF up.

Posts: 30
Joined: Thu May 26, 2011 6:03 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Hinalover » Mon Dec 12, 2011 5:05 pm

With the 2p T13 Bear causing a 100% chance to proc SD with mangle, while Pulverize is up, is it worth having pulverize at a higher priority in the list if the 2pT13 is checked? I know when i was testing, I was going against Ovale's script and putting up a 1 stack of Lacerate then Pulverizing just to get the 2p activated at the start of the fight.

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Mon Dec 12, 2011 6:17 pm

Hinalover wrote:With the 2p T13 Bear causing a 100% chance to proc SD with mangle, while Pulverize is up, is it worth having pulverize at a higher priority in the list if the 2pT13 is checked? I know when i was testing, I was going against Ovale's script and putting up a 1 stack of Lacerate then Pulverizing just to get the 2p activated at the start of the fight.



I was wondering about that also. I have not posted the question specifically to Tangedyn, Arielle or Reesi, but I did read a post from one of them indicating the bear rotation was unchanged in tier 13. I just checked the Mew default bear sim script and my Ovale script is still in sync with it. I have wondered if that is because the Mew bear script is built to optimize threat (which is not as important since threat was buffed) vs. optimizing damage mitigation. The 2 piece tier 13 bear bonus is pretty unique as it is the first time any set bonus has contributed to our passive damage mitigation rather than either buffing dps/threat or buffing/providing a cooldown.

You might want to ask on The Inconspicuous Bear forums.

Posts: 30
Joined: Thu May 26, 2011 6:03 pm

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Hinalover » Mon Dec 12, 2011 7:06 pm

Leafkiller wrote:
Hinalover wrote:With the 2p T13 Bear causing a 100% chance to proc SD with mangle, while Pulverize is up, is it worth having pulverize at a higher priority in the list if the 2pT13 is checked? I know when i was testing, I was going against Ovale's script and putting up a 1 stack of Lacerate then Pulverizing just to get the 2p activated at the start of the fight.



I was wondering about that also. I have not posted the question specifically to Tangedyn, Arielle or Reesi, but I did read a post from one of them indicating the bear rotation was unchanged in tier 13. I just checked the Mew default bear sim script and my Ovale script is still in sync with it. I have wondered if that is because the Mew bear script is built to optimize threat (which is not as important since threat was buffed) vs. optimizing damage mitigation. The 2 piece tier 13 bear bonus is pretty unique as it is the first time any set bonus has contributed to our passive damage mitigation rather than either buffing dps/threat or buffing/providing a cooldown.

You might want to ask on The Inconspicuous Bear forums.


Only reason I came here was a) the script and b) I knew you worked on the Mew script as well. But I'll post over in the theorycrafting forums about that.

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

Re: Leafkiller's 4.3 Feral Ovale Script

Postby Leafkiller » Mon Dec 12, 2011 8:02 pm

Hinalover wrote:Only reason I came here was a) the script and b) I knew you worked on the Mew script as well. But I'll post over in the theorycrafting forums about that.


I have only ever done work on the cat script (along with a couple of minor changes to the Mew UI code). No one is stopping me from working on the bear script, but it has just not been a priority for me since I only tank occasionally (not to mention the bear rotation has not changed in a long time and is very simple).

Let me know what you hear. :)

Next

Return to Kitty DPS

Who is online

Users browsing this forum: Felics, Yahoo [Bot] and 3 guests