Register

Leafkiller's 4.2 Feral Ovale Script

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

Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Sun Jun 26, 2011 2:45 am

Please go to this post to see the 4.3 version of the Ovale script: viewtopic.php?f=3&t=620










Going forward, the previous version of this script will be posted in the second post of this thread whenever I update it.
=====================================================================

Rotation changes in 4.2 are covered in this blog post: http://fluiddruid.net/2011/06/4-02-cat- ... n-changes/
Handy Blog post on installing the script (a little dated but very helpful): http://murlocparliament.com/2010/10/27/ ... r-dummies/
4.2.14 Add switch to FB less aggressively outside of Berserk. Change the name of RAVAGE! to RAVAGEBANG to fix
the spell being greyed out when displayed.
4.2.13 Add no cooldown options to bear cooldowns and fix the cower code
4.2.12 Use a texture for Ravage! since Ovale can't tell it needs zero energy
4.2.11 Add pulverize tracking and Bear options for far right boxes (also change maul rage to 45)
4.2.10 Add the interrupt defines and make more mods for Alysrazor
4.2.9 Add Predator's Swiftness to the buffs trackable for cat form.
4.2.8 Put back in aggressive FBing during Alysrazor air phase based on duration of Blazing Power debuff.
4.2.7 Posted - fixed the Blazing Power code to recommend TF during the air phase (removed FB and Berserk calls
from Blazing Power). Made the bear cooldown boxes configurable. Added Skullbash and cower code to the
upper left hand box (it will hide the contents temporarily - I may need to add a switch for this).
4.2.5 Add in test for Blazing Power to Berserk/TF/FB (experimental). Also removed tf/berserk-less rotation from
the upper right cooldown box - too specialized and resource consuming.
4.2.4 Add Berserk logic into the bear rotation if "Bear Berserk" option is selected
4.2.3 Remove clipping code from Berserk so having it enabled as an option does not cause issues with adds/trash.
4.2.2 Tweak the Bear rotation slightly based on Mew sims.
4.2.1 Initial version. Cat logic is updated, Bear logic is still 4.1. Based on the 6/25 default sim script in Mew. Added support for the 378 "The Hungerer" trinket and the 384 "Matrix Restabilizer" trinket.
=========================================
Code: Select all
# Ovale Optimized Script Leafkiller 4.2.14
#       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.2.14 09/17/2011 - Add switch to FB less aggressively outside of Berserk. Change the name of RAVAGE!
#                     to RAVAGEBANG to fix the spell being greyed out when displayed.
# 4.2.13 08/14/2011 - Add no cooldown options to bear cooldowns and fix the cower code
# 4.2.12 08/11/2011 - Use a texture for RAVAGEBANG since Ovale can't tell it needs zero energy
# 4.2.11 08/07/2011 - Add pulverize tracking and Bear options for far right boxes (also change maul rage to 45)
# 4.2.10 07/28/2011 - Add interrupt defines and more changes for Alysrazor
# 4.2.9 07/24/2011 - Add Predator's Swiftness to buff tracking for cat form
# 4.2.8 07/24/2011 - Put FBs into air phase of Alysrazor based on 35 seconds left on Blazing Power
# 4.2.7 07/23/2011 - Modify Blazing Power code - only for TF now - no FB, no Berserk
# 4.2.6 07/22/2011 - Skullbash/Cower code to upper left cooldown box
# 4.2.5 07/22/2011 - Add in test for Blazing Power to Berserk/TF/FB (experimental)
# 4.2.4 07/03/2011 - Add Berserk logic into the bear rotation if suggest Bear Berserk is enabled
# 4.2.3 07/03/2011 - Disable the Berserk clipping code - causes a problem on trash thawt are close to dying
# 4.2.2 06/28/2011 - Tweak the bear rotation slightly - based on the Mew Bear threat script
# 4.2.1 06/25/2011 - New cat rotation for 4.2. Support for 378 The Hungerer and 384 Matrix Restabilizer

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
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(GLYPHOFSHRED 54815)
Define(GLYPHOFRIP 54818)
Define(GLYPHOFBERSERK 62969)

#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(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 - 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(cd0 t10 "Top right - Matrix Restabilizer" mastery=2)
AddListItem(cd0 t11 "Top right - The Hungerer" mastery=2)
AddListItem(cd0 t12 "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 - 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(cd1 t10 "Bottom right - Matrix Restabilizer" mastery=2)
AddListItem(cd1 t11 "Bottom right - The Hungerer" mastery=2)
AddListItem(cd1 t12 "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 - 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(cd2 t10 "Top far right - Matrix Restabilizer" mastery=2)
AddListItem(cd2 t11 "Top far right - The Hungerer" mastery=2)
AddListItem(cd2 t12 "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 - 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)
AddListItem(cd3 t10 "Bottom far right - Matrix Restabilizer" mastery=2)
AddListItem(cd3 t11 "Bottom far right - The Hungerer" mastery=2)
AddListItem(cd3 t12 "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)
 
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) {
                    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)
            }
        }
       
        #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) {
           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 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(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
               Spell(SHRED)
           }
        }
       
        # 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) Spell(SHRED)
      
        # 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)
        }

        # 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) {
           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) Spell(SHRED)
       
        # Shred aggressively for Berserk and TF
        if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) Spell(SHRED)
       
        # Shred for combo points for Rip or SR
        if ComboPoints(less 5) and TargetDebuffExpires(RIP 3 mine=1) Spell(SHRED)
        if ComboPoints(less 1) and BuffExpires(SAVAGEROAR 2) Spell(SHRED)
       
        # Shred to burn off energy so we can TF without capping
        if { 3s before Spell(TIGERSFURY) } Spell(SHRED)
       
        # Shred is the mob will die within one Rake
        if TargetDeadIn(less 8.5) Spell(SHRED)
       
        # Fallback Shred to prevent energy capping
        if 1.2s before Mana(more 99) Spell(SHRED)
    }
}



# 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) {
           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 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(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
               Spell(SHRED)
           }
        }
       
        # 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) 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 List(cd1 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(cd1 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(cd1 t12) {
              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) 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)
               }
           }
            if List(cd2 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(cd2 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(cd2 t12) {
              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) 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)
               }
           }
            if List(cd3 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(cd3 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(cd3 t12) {
              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.2 Feral Ovale Script

Postby Leafkiller » Sun Jun 26, 2011 4:16 am

Ok - I just cheated and deleted an old post that was between this post and the first post. Going forward, I will post the old version of the rotation here when I post a new one in the first post of this thread.

===================================================================
Rotation changes in 4.2 are covered in this blog post: http://fluiddruid.net/2011/06/4-02-cat- ... n-changes/
Handy Blog post on installing the script (a little dated but very helpful): http://murlocparliament.com/2010/10/27/ ... r-dummies/
4.2.13 Add no cooldown options to bear cooldowns and fix the cower code
4.2.12 Use a texture for Ravage! since Ovale can't tell it needs zero energy
4.2.11 Add pulverize tracking and Bear options for far right boxes (also change maul rage to 45)
4.2.10 Add the interrupt defines and make more mods for Alysrazor
4.2.9 Add Predator's Swiftness to the buffs trackable for cat form.
4.2.8 Put back in aggressive FBing during Alysrazor air phase based on duration of Blazing Power debuff.
4.2.7 Posted - fixed the Blazing Power code to recommend TF during the air phase (removed FB and Berserk calls
from Blazing Power). Made the bear cooldown boxes configurable. Added Skullbash and cower code to the
upper left hand box (it will hide the contents temporarily - I may need to add a switch for this).
4.2.5 Add in test for Blazing Power to Berserk/TF/FB (experimental). Also removed tf/berserk-less rotation from
the upper right cooldown box - too specialized and resource consuming.
4.2.4 Add Berserk logic into the bear rotation if "Bear Berserk" option is selected
4.2.3 Remove clipping code from Berserk so having it enabled as an option does not cause issues with adds/trash.
4.2.2 Tweak the Bear rotation slightly based on Mew sims.
4.2.1 Initial version. Cat logic is updated, Bear logic is still 4.1. Based on the 6/25 default sim script in Mew. Added support for the 378 "The Hungerer" trinket and the 384 "Matrix Restabilizer" trinket.
=========================================
Code: Select all
# Ovale Optimized Script Leafkiller 4.2.13
#       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.2.13 08/14/2011 - Add no cooldown options to bear cooldowns and fix the cower code
# 4.2.12 08/11/2011 - Use a texture for Ravage! since Ovale can't tell it needs zero energy
# 4.2.11 08/07/2011 - Add pulverize tracking and Bear options for far right boxes (also change maul rage to 45)
# 4.2.10 07/28/2011 - Add interrupt defines and more changes for Alysrazor
# 4.2.9 07/24/2011 - Add Predator's Swiftness to buff tracking for cat form
# 4.2.8 07/24/2011 - Put FBs into air phase of Alysrazor based on 35 seconds left on Blazing Power
# 4.2.7 07/23/2011 - Modify Blazing Power code - only for TF now - no FB, no Berserk
# 4.2.6 07/22/2011 - Skullbash/Cower code to upper left cooldown box
# 4.2.5 07/22/2011 - Add in test for Blazing Power to Berserk/TF/FB (experimental)
# 4.2.4 07/03/2011 - Add Berserk logic into the bear rotation if suggest Bear Berserk is enabled
# 4.2.3 07/03/2011 - Disable the Berserk clipping code - causes a problem on trash thawt are close to dying
# 4.2.2 06/28/2011 - Tweak the bear rotation slightly - based on the Mew Bear threat script
# 4.2.1 06/25/2011 - New cat rotation for 4.2. Support for 378 The Hungerer and 384 Matrix Restabilizer

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
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(RAVAGE! 81170) #cat behind+(stampede)
   SpellInfo(RAVAGE! combo=1 mana=0)
   SpellAddBuff(RAVAGE! 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(GLYPHOFSHRED 54815)
Define(GLYPHOFRIP 54818)
Define(GLYPHOFBERSERK 62969)

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

#Talents
Define(BLOODINTHEWATERTALENT 8341)

AddCheckBox(demo SpellName(DEMOROAR) 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(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 - 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(cd0 t10 "Top right - Matrix Restabilizer" mastery=2)
AddListItem(cd0 t11 "Top right - The Hungerer" mastery=2)
AddListItem(cd0 t12 "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 - 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(cd1 t10 "Bottom right - Matrix Restabilizer" mastery=2)
AddListItem(cd1 t11 "Bottom right - The Hungerer" mastery=2)
AddListItem(cd1 t12 "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 - 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(cd2 t10 "Top far right - Matrix Restabilizer" mastery=2)
AddListItem(cd2 t11 "Top far right - The Hungerer" mastery=2)
AddListItem(cd2 t12 "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 - 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)
AddListItem(cd3 t10 "Bottom far right - Matrix Restabilizer" mastery=2)
AddListItem(cd3 t11 "Bottom far right - The Hungerer" mastery=2)
AddListItem(cd3 t12 "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)
 
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) {
                    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)
            }
        }
       
        #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(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 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(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
               Spell(SHRED)
           }
        }
       
        # 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) Spell(SHRED)
      
        # 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)
        }

        # 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) {
            Spell(FEROCIOUSBITE)
         }
      }
         
        if BuffPresent(STAMPEDE) and BuffPresent(TIGERSFURY) {
            unless BuffPresent(CLEARCASTING) Texture(ability_druid_ravage) # 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
        # Shred during air phase on Alysrazor
        if DebuffPresent(BLAZINGPOWER 35) Spell(SHRED)
       
        # Shred aggressively for Berserk and TF
        if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) Spell(SHRED)
       
        # Shred for combo points for Rip or SR
        if ComboPoints(less 5) and TargetDebuffExpires(RIP 3 mine=1) Spell(SHRED)
        if ComboPoints(less 1) and BuffExpires(SAVAGEROAR 2) Spell(SHRED)
       
        # Shred to burn off energy so we can TF without capping
        if { 3s before Spell(TIGERSFURY) } Spell(SHRED)
       
        # Shred is the mob will die within one Rake
        if TargetDeadIn(less 8.5) Spell(SHRED)
       
        # Fallback Shred to prevent energy capping
        if 1.2s before Mana(more 99) Spell(SHRED)
    }
}



# 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(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 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(GLYPHOFSHRED) and TargetDebuffPresent(RIP mine=1) and TargetDebuffExpires(RIP 4 mine=1) and Counter(ripshreds less 3) {
               Spell(SHRED)
           }
        }
       
        # 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) {
            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) 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 List(cd1 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(cd1 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(cd1 t12) {
              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) 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)
               }
           }
            if List(cd2 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(cd2 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(cd2 t12) {
              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) 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)
               }
           }
            if List(cd3 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(cd3 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(cd3 t12) {
              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)
              }
           }
        }
    }
}

User avatar
Posts: 48
Joined: Wed Oct 20, 2010 2:56 pm

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Lax » Sun Jun 26, 2011 7:07 am

Leafkiller wrote:Rotation changes will be in my blog post ;)

Good post leaf :)
I will give some feedback when I can.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Beanna » Sun Jun 26, 2011 7:51 am

Thank you very much for this nice job Leaf, as always. I didn't imagine it would happen so quickly! :)

Posts: 5
Joined: Mon May 30, 2011 6:59 am

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Mystar » Sun Jun 26, 2011 10:29 am

It is absolutely great work.

A big thank you, from a happy kitten.

User avatar
Posts: 48
Joined: Wed Oct 20, 2010 2:56 pm

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Lax » Sun Jun 26, 2011 1:06 pm

I havent had much time to test it yet, but I went on the PTR and tried it out a bit. Here's some random feedback:

  • Having FB in the rotation above 25% again is really nice :)
  • The window to cast FB when berserk is not up is really narrow. It seems like its quite easy to make a mistake, so having an option to turn it off might be an idea.
  • I immediately noticed less uptime on rip and it feels a bit wrong*, but for "patchwork" type phases I'll go along with it ;)

Anyways, only had time for a couple of rounds on a dummy. Raiding time..

Edit: * Not saying it is wrong, but that it feels wrong

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Sun Jun 26, 2011 3:17 pm

On the FB code outside of Berserk. I tested it on a 372 profile and it is dps neutral. On a 378 profile it is about a 11 dps increase (very small). On a 391 profile it is a 44 dps increase.

I would rather not provide an option to disable this. It flashes by very quickly and you either hit it or you don't. Either way will not make or break you and it does provide some variety to the rotation and it does scale with gear.

For Rip, it will have lower uptime. Blame Blizz for buffing every ability we had except for Rip and learn to live with it. ;)

Exalted
User avatar
Posts: 568
Joined: Sat May 28, 2011 3:43 pm

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Konungr » Sun Jun 26, 2011 3:18 pm

Leafkiller wrote:For Rip, it will have lower uptime. Blame Blizz for buffing every ability we had except for Rip and learn to live with it. ;)


And that's beneficial?

Also, I haven't used Ovale or the script in a long time, but I notice that it has lines in the script for the trinkets, so I assume that the script will do everything it can to maximize the dps gained from trinkets, such as, during a Unheeded Warning Proc it will evaluate the dps gained by ignoring an ability that is not buffed by it's proc?

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Sun Jun 26, 2011 3:21 pm

Konungr wrote:
Leafkiller wrote:For Rip, it will have lower uptime. Blame Blizz for buffing every ability we had except for Rip and learn to live with it. ;)


And that's beneficial?


Our overall dps went up, and our dps scales better with gear now. Overall, I would say that 4.2 is beneficial to ferals. We will know more in a few weeks, because what really matters is how our output stacks up to the other classes in the game.

Exalted
User avatar
Posts: 568
Joined: Sat May 28, 2011 3:43 pm

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Konungr » Sun Jun 26, 2011 3:29 pm

Leafkiller wrote:
Konungr wrote:
Leafkiller wrote:For Rip, it will have lower uptime. Blame Blizz for buffing every ability we had except for Rip and learn to live with it. ;)


And that's beneficial?


Our overall dps went up, and our dps scales better with gear now. Overall, I would say that 4.2 is beneficial to ferals. We will know more in a few weeks, because what really matters is how our output stacks up to the other classes in the game.


I was referring to not having Rip at ~95% uptime being beneficial. Also, see above.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Sun Jun 26, 2011 7:11 pm

The rotation does not change based on trinkets - it simply provides a way to track them in separate frames. This was done at the request of several players.

To my knowledge, no one has ever built a sim that changed logic based on Trinket procs, and short of measuring something, I leave it in the hands of the players to decide when they want to vary the rotation (for example, early refreshes of Rip/Rake at the end of the Exposed Head phase on Magmaw). The Ovale script simply suggests an optimal rotation based on a Patchwork style fight, and should be used like any other tool, in context with the fight itself.

As for lower Rip uptime in conjunction with higher Savage Roar uptime, the sims do show that as beneficial.

Exalted
User avatar
Posts: 568
Joined: Sat May 28, 2011 3:43 pm

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Konungr » Sun Jun 26, 2011 7:16 pm

Leafkiller wrote:As for lower Rip uptime in conjunction with higher Savage Roar uptime, the sims do show that as beneficial.


Ok, so I guess in that case I am just going to continue using DroodFocus, since it tracks everything I need it to and I'm used to it. You said somewhere, either above or on the Blog that SR had not replaced Rip in priority, or something to that effect so I will go back and read it and try to piece together what the new priority is and the Clip/Refresh/Guard times are and just change my playstyle accordingly. Thanks for the great work on the Ovale, I loaded it up and did a few minutes with it on to see how it operated, I just dunno where in my UI I would put it and it distracts me from my DF timers.

Honored
Posts: 80
Joined: Wed Jun 09, 2010 12:22 pm

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Mihir » Mon Jun 27, 2011 3:32 am

Leafkiller wrote:The rotation does not change based on trinkets - it simply provides a way to track them in separate frames. This was done at the request of several players.

To my knowledge, no one has ever built a sim that changed logic based on Trinket procs, and short of measuring something, I leave it in the hands of the players to decide when they want to vary the rotation (for example, early refreshes of Rip/Rake at the end of the Exposed Head phase on Magmaw). The Ovale script simply suggests an optimal rotation based on a Patchwork style fight, and should be used like any other tool, in context with the fight itself.

As for lower Rip uptime in conjunction with higher Savage Roar uptime, the sims do show that as beneficial.

The original FeralbyNight did this, as it dynamically adjusted your rotation based on your current stats, including any procs or buffs. For example on mjolnir procs it never suggested refreshing Rake, and it also changed your rotation if you got the hodir buff.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Mon Jun 27, 2011 3:49 am

The original FeralbyNight did this, as it dynamically adjusted your rotation based on your current stats, including any procs or buffs. For example on mjolnir procs it never suggested refreshing Rake, and it also changed your rotation if you got the hodir buff.


Nightcrowler was way ahead of all of us. Of course, anyone who ever tried to read his code probably died from an aneurism...besides, Rake sucked in BC compared to now.

As for the Hodir buff, that gets into the subject of fight specific logic, that would probably require moving to a dedicated addon rather than Ovale.

I will ask Yawning about providing calls to check for procs.

Honored
Posts: 76
Joined: Sat Jun 04, 2011 4:21 am

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Yawning » Mon Jun 27, 2011 2:29 pm

Leafkiller wrote:I will ask Yawning about providing calls to check for procs.


He did ask. If I get bored enough I may consider doing something like this (The project is open source so well written patches will also be accepted, though the naive implementation of this is likely going to be rather slow, so I would rather do it correctly than increase the already considerably run times further.). In general I'm vaguely tempted to rewrite chunks of the proc code, but what I want to do is somewhat more involved.

I would be more inclined to do something like this if someone provided a concrete example of say.... sacrificing Rake or Rip uptime due to a proc being a considerable net gain.
"Understanding is a three-edged sword."

Mew: http://code.google.com/p/mew-wow-druid-model/

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Mon Jun 27, 2011 3:09 pm

Yawning wrote:If I get bored enough and all the mutant dogs are dead I may consider doing something like this


Fixed.

Posts: 43
Joined: Thu Oct 14, 2010 1:48 am

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Evil » Tue Jun 28, 2011 7:28 am

First of all thanks goes to Leafkiller - quick and fantastic work - as usual.

@Yawning: I'm sure it's a hell of a project to include procs - but the community would really appreciate it - thanks!

@Leafkiller: Any plans to include a updated and up to date Bear part into your script?

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Tue Jun 28, 2011 6:05 pm

Evil - I looked at the Bear simulation script in Mew and there is almost no difference from what I currently have. All I saw was a lower threshold for Maul (45 vs. 70 rage in my script) and Demo Roar is above Mangle vs. below in my script. The basic threat model is the same. So...go forward and tank and don't worry about it.

Posts: 3
Joined: Wed Jun 29, 2011 8:04 am

Re: Leafkiller's 4.2 Feral Ovale Script

Postby holytiamat » Wed Jun 29, 2011 8:19 am

Hi guys,

I tested this script yesterday, and I really appreciated this. It's really nice to see our FB useful during the whole fight again.

But I'm new with Ovale Addon and I was with some doubts, like: We have 2 main Icons (big ones) on Addon and the Left one presents to us the skill we need to do, right? and the second one the next skill we shall do, but in cooldown, yet? Could you give me a simple explanation?

I've done a research on Google about something explaning the use about this addon, but I couldn't find out anything, and I decided to ask help here.

Another, doubt is Why the addon is showing Bear Skills on little icons on left side When I am in Cat form? It's a bug?

Sorry it is not the correct post to ask it.

Many thanks!

Posts: 1
Joined: Sun Jun 26, 2011 9:47 am

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Lunaru » Wed Jun 29, 2011 11:56 am

@holytiamat - Left is main rotation. Right is main rotation with no filler shreds, otherwise copy of other rotation.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Beanna » Wed Jun 29, 2011 6:25 pm

Is there any way to disable the Berserker icon on the main rotation box when the energy is not high enough like it is set in the 1.3.2 script? Having a box completely monopolised by the berserker icon during several minutes when you want to save your berserker for some special phase is really annoying for the rotation.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Leafkiller » Wed Jun 29, 2011 6:35 pm

Beanna wrote:Is there any way to disable the Berserker icon on the main rotation box when the energy is not high enough like it is set in the 1.3.2 script? Having a box completely monopolised by the berserker icon during several minutes when you want to save your berserker for some special phase is really annoying for the rotation.


Click on the box and deselect Berserk from the options that pop up. The option is still there to toggle it.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Beanna » Wed Jun 29, 2011 6:56 pm

Thank you. I did not think to look at new options...

Honored
Posts: 143
Joined: Thu Mar 18, 2010 12:33 am
Location: Melbourne, Australia

Re: Leafkiller's 4.2 Feral Ovale Script

Postby Grenache » Wed Jun 29, 2011 8:15 pm

I think the option to untick Beserk and other suggestions has been around for awhile.

The bit that always confused me was that right clicking on any of the boxes always gives the same menu. When I first started using Ovale, I thought that each box had a separate options menu, but it's all just the one.

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

Re: Leafkiller's 4.2 Feral Ovale Script

Postby shinryu » Wed Jun 29, 2011 11:01 pm

Well works fine for me...seems to want to save and pool more Energy than the prior one did though, dunno if that's good or bad but it seemed slower to me.

Next

Return to Kitty DPS

Who is online

Users browsing this forum: Bysket, Google [Bot], Google Feedfetcher and 1 guest