Untitled diff

Created Diff never expires
# Leafkiller's Feral/Guardian druid script.
# Leafkiller's Feral/Guardian druid script.
# Support/Discussion thread: http://fluiddruid.net/forum/viewtopic.php?f=3&t=857
# Support/Discussion thread: http://fluiddruid.net/forum/viewtopic.php?f=3&t=857
# Cat Rotation based on Simulationcraft single target default script. Contributions to that have come from many ferals.
# Cat Rotation based on Simulationcraft single target default script. Contributions to that have come from many ferals.
# Guardian rotation based on the guide at theincbear.com
# Guardian rotation based on the guide at theincbear.com
# Lots of input and constructs from jlam aka Nerien
# Lots of input and constructs from jlam aka Nerien
# Currently maintained by aggixx and Tinderhoof
# Currently maintained by aggixx and Tinderhoof
# Revision History
# Revision History
# 5.2.3 03/18/2013 Use Mangle to generate combo points except for high energy situations. (Hopefully) fix issue with misplaced NSs.
# 5.2.4 04/14/2013
# 5.2.3 03/18/2013 Use Mangle to generate combo points except for high energy situations. Fix issue with misplaced NSs.
# 5.2.2 03/09/2013 Smarter FB logic, fix Faerie Fire, fix mastery assumption for RoR, better Thrash logic, better precombat SR logic
# 5.2.2 03/09/2013 Smarter FB logic, fix Faerie Fire, fix mastery assumption for RoR, better Thrash logic, better precombat SR logic
# 5.2.1 02/25/2013 Support for 5.2 changes, rough support for Rune of Reorigination
# 5.2.1 02/25/2013 Support for 5.2 changes, rough support for Rune of Reorigination
# 5.1.8 02/16/2013 Fix TF not displaying with berserk checked and TF displaying while Berserk is active, fix lookahead issue with Ravage.
# 5.1.8 02/16/2013 Fix TF not displaying with berserk checked and TF displaying while Berserk is active, fix lookahead issue with Ravage.
# 5.1.7 02/12/2013 Fix FF option, fix WEAKENED_ARMOR.
# 5.1.7 02/12/2013 Fix FF option, fix WEAKENED_ARMOR.
# 5.1.6 02/10/2013 Fix frontal attack and talent conditional in main button (dream_of_cenarius_talent should be DREAM_OF_CENARIUS_TALENT)
# 5.1.6 02/10/2013 Fix frontal attack and talent conditional in main button (dream_of_cenarius_talent should be DREAM_OF_CENARIUS_TALENT)
# 5.1.5 02/09/2013 Update to SimC (Base code from Nerien), code consistency and formatting
# 5.1.5 02/09/2013 Update to SimC (Base code from Nerien), code consistency and formatting
# 5.1.4 12/07/2012 Tooth and Claw
# 5.1.4 12/07/2012 Tooth and Claw
# 5.1.3 12/07/2012 Tweak for Bear display with alternate setup selected
# 5.1.3 12/07/2012 Tweak for Bear display with alternate setup selected
# 5.1.2 12/07/2012 Misc changes including SR, Ravage!, alternate layout for Aggixx and some script reconciliation
# 5.1.2 12/07/2012 Misc changes including SR, Ravage!, alternate layout for Aggixx and some script reconciliation
# 5.1.1 11/30/2012 Ravage fix for PVP 4 set and support for faster combo points on crits
# 5.1.1 11/30/2012 Ravage fix for PVP 4 set and support for faster combo points on crits
# 5.05.14 11/09/2012 New spell ID for clearcasting
# 5.05.14 11/09/2012 New spell ID for clearcasting
# 5.05.14 11/09/2012 Only suggest Feral_spirit if the symbiosis buff is present - otherwise it suggests symbiosis even when the buff is not up
# 5.05.14 11/09/2012 Only suggest Feral_spirit if the symbiosis buff is present - otherwise it suggests symbiosis even when the buff is not up
# 5.05.13 10/23/2012 Don't pool during NV
# 5.05.13 10/23/2012 Don't pool during NV
# 5.05.12 10/22/2012 Fix bad spell name in Rake conditional (TIGERS_FURY should be TIGERSFURY)
# 5.05.12 10/22/2012 Fix bad spell name in Rake conditional (TIGERS_FURY should be TIGERSFURY)
# 5.05.11 10/22/2012 Fix for energy pooling for non-DoC specs. Small updates based on most recent sim script for TTD. FFF() added. TTD updated.
# 5.05.11 10/22/2012 Fix for energy pooling for non-DoC specs. Small updates based on most recent sim script for TTD. FFF() added. TTD updated.
# 5.05.10 10/21/2012 4 Piece PvP gear support and Nature's Vigil HT code
# 5.05.10 10/21/2012 4 Piece PvP gear support and Nature's Vigil HT code
# 5.05.9 10/16/2012 Feral Spirit support
# 5.05.9 10/16/2012 Feral Spirit support
# 5.05.8 10/14/2012 Fix 3 second SR to interfere less with Rip for HotW (and NV). 60 seconds for Rake.
# 5.05.8 10/14/2012 Fix 3 second SR to interfere less with Rip for HotW (and NV). 60 seconds for Rake.
# 5.05.7 10/14/2012 Update to latest version of sim script - small changes and Rake improvements
# 5.05.7 10/14/2012 Update to latest version of sim script - small changes and Rake improvements
# 5.05.6 10/11/2012 Heart of the Wild support, add out of combat support
# 5.05.6 10/11/2012 Heart of the Wild support, add out of combat support
# 5.05.6 10/10/2012 Update to limit SR using comb points when DoC is up
# 5.05.6 10/10/2012 Update to limit SR using comb points when DoC is up
# 5.05.5a 10/08/2012 Update to include optimizations in simc script
# 5.05.5a 10/08/2012 Update to include optimizations in simc script
# 5.05.5 09/24/2012 Multiply damage ratios by 100 to avoid rounding issues, put in variable Rip overwriting during BitW, tweak numbers slightly (TF is 14% not 15% for example).
# 5.05.5 09/24/2012 Multiply damage ratios by 100 to avoid rounding issues, put in variable Rip overwriting during BitW, tweak numbers slightly (TF is 14% not 15% for example).
# 5.05.4 09/23/2012 Level 90 script - First complete version
# 5.05.4 09/23/2012 Level 90 script - First complete version
# 5.05.2 09/20/2012 Level 90 script - WiP
# 5.05.2 09/20/2012 Level 90 script - WiP
# 5.05.1 09/08/2012 First version in Nerien's addon
# 5.05.1 09/08/2012 First version in Nerien's addon
############################
############################
## Define Spells, Buffs, Items, Talents ##
## Define Spells, Buffs, Items, Talents ##
############################
############################
# Shared spells
# Shared spells
Define(BARKSKIN 22812)
Define(BARKSKIN 22812)
SpellInfo(BARKSKIN cd=60)
SpellInfo(BARKSKIN cd=60)
Define(FERAL_SPIRIT 110807)
Define(FERAL_SPIRIT 110807)
Define(HEALING_TOUCH 5185)
Define(HEALING_TOUCH 5185)
Define(MARK_OF_THE_WILD 1126)
Define(MARK_OF_THE_WILD 1126)
SpellInfo(MARK_OF_THE_WILD duration=3600)
SpellInfo(MARK_OF_THE_WILD duration=3600)
SpellAddBuff(MARK_OF_THE_WILD MARK_OF_THE_WILD=1)
SpellAddBuff(MARK_OF_THE_WILD MARK_OF_THE_WILD=1)
Define(SYMBIOSIS 110309)
Define(SYMBIOSIS 110309)
SpellAddBuff(SYMBIOSIS SYMBIOSIS=1)
SpellAddBuff(SYMBIOSIS SYMBIOSIS=1)
Define(WRATH 5176)
Define(WRATH 5176)
# Shared buffs
# Shared buffs
Define(DREAM_OF_CENARIUS_DAMAGE 108381)
Define(DREAM_OF_CENARIUS_DAMAGE 108381)
SpellInfo(DREAM_OF_CENARIUS_DAMAGE duration=30 )
SpellInfo(DREAM_OF_CENARIUS_DAMAGE duration=30 )
SpellAddBuff(DREAM_OF_CENARIUS_DAMAGE DREAM_OF_CENARIUS_DAMAGE=1)
SpellAddBuff(DREAM_OF_CENARIUS_DAMAGE DREAM_OF_CENARIUS_DAMAGE=1)
Define(NATURES_VIGIL 124974)
Define(NATURES_VIGIL 124974)
SpellInfo(NATURES_VIGIL cd=180)
SpellInfo(NATURES_VIGIL cd=180)
SpellAddBuff(NATURES_VIGIL NATURES_VIGIL=1)
SpellAddBuff(NATURES_VIGIL NATURES_VIGIL=1)
Define(PREDATORY_SWIFTNESS 69369)
Define(PREDATORY_SWIFTNESS 69369)
SpellAddBuff(PREDATORY_SWIFTNESS PREDATORY_SWIFTNESS=1)
SpellAddBuff(PREDATORY_SWIFTNESS PREDATORY_SWIFTNESS=1)
Define(PRIMAL_FURY 16961)
Define(PRIMAL_FURY 16961)
Define(TRICKS 57933)
Define(TRICKS 57933)
SpellAddBuff(TRICKS TRICKS=1)
SpellAddBuff(TRICKS TRICKS=1)
Define(WEAKENED_ARMOR 113746)
Define(WEAKENED_ARMOR 113746)
SpellInfo(WEAKENED_ARMOR duration=30)
SpellInfo(WEAKENED_ARMOR duration=30)
Define(WEAKENED_BLOWS 115798)
Define(WEAKENED_BLOWS 115798)
SpellInfo(WEAKENED_BLOWS duration=30)
SpellInfo(WEAKENED_BLOWS duration=30)
Define(CLEARCASTING 135700)
Define(CLEARCASTING 135700)
Define(ROR_CRIT 139117)
Define(ROR_CRIT 139117)
SpellInfo(ROR_CRIT duration=10)
SpellInfo(ROR_CRIT duration=10)
Define(ROR_MASTERY 139120)
Define(ROR_MASTERY 139120)
SpellInfo(ROR_MASTERY duration=10)
SpellInfo(ROR_MASTERY duration=10)
Define(ROR_HASTE 139121)
Define(ROR_HASTE 139121)
SpellInfo(ROR_HASTE duration=10)
SpellInfo(ROR_HASTE duration=10)
SpellList(ROR ROR_CRIT ROR_MASTERY ROR_HASTE)
SpellList(ROR ROR_CRIT ROR_MASTERY ROR_HASTE)
# Shared items
# Shared items
ItemList(ROR_ITEM 94532 95802 96546)
ItemList(ROR_ITEM 94532 95802 96546)
# Talents
# Talents
Define(NATURES_SWIFTNESS_TALENT 4)
Define(NATURES_SWIFTNESS_TALENT 4)
Define(RENEWAL_TALENT 5)
Define(RENEWAL_TALENT 5)
Define(CENARION_WARD_TALENT 6)
Define(CENARION_WARD_TALENT 6)
Define(FAERIE_SWARM_TALENT 7)
Define(FAERIE_SWARM_TALENT 7)
Define(TYPHOON_TALENT 9)
Define(TYPHOON_TALENT 9)
Define(SOUL_OF_THE_FOREST 10)
Define(SOUL_OF_THE_FOREST 10)
Define(INCARNATION_TALENT 11)
Define(INCARNATION_TALENT 11)
Define(FORCE_OF_NATURE_TALENT 12)
Define(FORCE_OF_NATURE_TALENT 12)
Define(MIGHTY_BASH_TALENT 15)
Define(MIGHTY_BASH_TALENT 15)
Define(HEART_OF_THE_WILD_TALENT 16)
Define(HEART_OF_THE_WILD_TALENT 16)
Define(DREAM_OF_CENARIUS_TALENT 17)
Define(DREAM_OF_CENARIUS_TALENT 17)
Define(NATURES_VIGIL_TALENT 18)
Define(NATURES_VIGIL_TALENT 18)
# Talent spells
# Talent spells
Define(CENARION_WARD 102351)
Define(CENARION_WARD 102351)
SpellInfo(CENARION_WARD cd=30)
SpellInfo(CENARION_WARD cd=30)
Define(FORCE_OF_NATURE 106737)
Define(FORCE_OF_NATURE 106737)
SpellInfo(FORCE_OF_NATURE duration=15 cd=60)
SpellInfo(FORCE_OF_NATURE duration=15 cd=60)
Define(HEART_OF_THE_WILD 108292)
Define(HEART_OF_THE_WILD 108292)
SpellInfo(HEART_OF_THE_WILD cd=360)
SpellInfo(HEART_OF_THE_WILD cd=360)
SpellAddBuff(HEART_OF_THE_WILD HEART_OF_THE_WILD=1)
SpellAddBuff(HEART_OF_THE_WILD HEART_OF_THE_WILD=1)
Define(INCARNATION 106731)
Define(INCARNATION 106731)
SpellInfo(INCARNATION cd=180)
SpellInfo(INCARNATION cd=180)
Define(MIGHTY_BASH 5211)
Define(MIGHTY_BASH 5211)
SpellInfo(MIGHTY_BASH cd=50)
SpellInfo(MIGHTY_BASH cd=50)
Define(NATURES_SWIFTNESS 132158)
Define(NATURES_SWIFTNESS 132158)
SpellInfo(NATURES_SWIFTNESS cd=60)
SpellInfo(NATURES_SWIFTNESS cd=60)
SpellAddBuff(NATURES_SWIFTNESS NATURES_SWIFTNESS=1)
SpellAddBuff(NATURES_SWIFTNESS NATURES_SWIFTNESS=1)
Define(RENEWAL 108238)
Define(RENEWAL 108238)
SpellInfo(RENEWAL cd=120)
SpellInfo(RENEWAL cd=120)
Define(TYPHOON 132469)
Define(TYPHOON 132469)
SpellInfo(TYPHOON cd=20)
SpellInfo(TYPHOON cd=20)
Define(WILD_CHARGE 102401)
Define(WILD_CHARGE 102401)
SpellInfo(WILD_CHARGE cd=15)
SpellInfo(WILD_CHARGE cd=15)
#Glyphs
#Glyphs
Define(GLYPH_OF_SHRED 114234)
Define(GLYPH_OF_SHRED 114234)
Define(GLYPH_OF_SAVAGERY 127540)
Define(GLYPH_OF_SAVAGERY 127540)
# Shared spells
# Shared spells
Define(FAERIE_FERAL 770)
Define(FAERIE_FERAL 770)
SpellInfo(FAERIE_FERAL duration=300 cd=6)
SpellInfo(FAERIE_FERAL duration=300 cd=6)
SpellAddTargetDebuff(FAERIE_FERAL FAERIE_FERAL=1 WEAKENED_ARMOR=1)
SpellAddTargetDebuff(FAERIE_FERAL FAERIE_FERAL=1 WEAKENED_ARMOR=1)
Define(FAERIE_SWARM 102355)
Define(FAERIE_SWARM 102355)
SpellInfo(FAERIE_SWARM duration=300 cd=6)
SpellInfo(FAERIE_SWARM duration=300 cd=6)
SpellAddTargetDebuff(FAERIE_SWARM FAERIE_SWARM=1 WEAKENED_ARMOR=1)
SpellAddTargetDebuff(FAERIE_SWARM FAERIE_SWARM=1 WEAKENED_ARMOR=1)
# Cat spells
# Cat spells
Define(BERSERK_CAT 106951) #cat cd buff
Define(BERSERK_CAT 106951) #cat cd buff
SpellInfo(BERSERK_CAT duration=15 cd=180)
SpellInfo(BERSERK_CAT duration=15 cd=180)
SpellAddBuff(BERSERK_CAT BERSERK_CAT=1)
SpellAddBuff(BERSERK_CAT BERSERK_CAT=1)
Define(CAT_FORM 768)
Define(CAT_FORM 768)
SpellAddBuff(CAT_FORM CAT_FORM=1)
SpellAddBuff(CAT_FORM CAT_FORM=1)
Define(FEROCIOUS_BITE 22568) #cat finish 25-50 energy
Define(FEROCIOUS_BITE 22568) #cat finish 25-50 energy
SpellInfo(FEROCIOUS_BITE energy=25 combo=0)
SpellInfo(FEROCIOUS_BITE energy=25 combo=0)
Define(INCARNATION_CAT 102543)
Define(INCARNATION_CAT 102543)
SpellInfo(INCARNATION_CAT duration=30 cd=180)
SpellInfo(INCARNATION_CAT duration=30 cd=180)
Define(MAIM 22570) #cat interrupt
Define(MAIM 22570) #cat interrupt
SpellInfo(MAIM cd=10 energy=35 combo=0)
SpellInfo(MAIM cd=10 energy=35 combo=0)
Define(MANGLE_CAT 33876) #cat bleed+debuff
Define(MANGLE_CAT 33876) #cat bleed+debuff
SpellInfo(MANGLE_CAT inccounter=ripshreds energy=35 combo=1)
SpellInfo(MANGLE_CAT inccounter=ripshreds energy=35 combo=1)
SpellInfo(MANGLE_CAT critcombo=1 if_spell=PRIMAL_FURY)
SpellInfo(MANGLE_CAT critcombo=1 if_spell=PRIMAL_FURY)
Define(RAKE 1822) #cat bleed
Define(RAKE 1822) #cat bleed
SpellInfo(RAKE combo=1 duration=15 energy=35 tick=3)
SpellInfo(RAKE combo=1 duration=15 energy=35 tick=3)
SpellInfo(RAKE base=98.13 bonusap=0.31453)
SpellInfo(RAKE base=98.13 bonusap=0.31453)
SpellInfo(RAKE critcombo=1 if_spell=PRIMAL_FURY)
SpellInfo(RAKE critcombo=1 if_spell=PRIMAL_FURY)
SpellAddTargetDebuff(RAKE RAKE=1)
SpellAddTargetDebuff(RAKE RAKE=1)
SpellDamageBuff(RAKE DREAM_OF_CENARIUS_DAMAGE=1.25)
SpellDamageBuff(RAKE DREAM_OF_CENARIUS_DAMAGE=1.25)
Define(RAVAGE 6785)
Define(RAVAGE 6785)
SpellInfo(RAVAGE inccounter=ripshreds energy=45 combo=1)
SpellInfo(RAVAGE inccounter=ripshreds energy=45 combo=1)
SpellInfo(RAVAGE critcombo=1 if_spell=PRIMAL_FURY)
SpellInfo(RAVAGE critcombo=1 if_spell=PRIMAL_FURY)
Define(RAVAGE_BANG 102545)
Define(RAVAGE_BANG 102545)
SpellInfo(RAVAGE_BANG inccounter=ripshreds energy=0 combo=1)
SpellInfo(RAVAGE_BANG inccounter=ripshreds energy=0 combo=1)
SpellInfo(RAVAGE_BANG critcombo=1 if_spell=PRIMAL_FURY)
SpellInfo(RAVAGE_BANG critcombo=1 if_spell=PRIMAL_FURY)
Define(RIP 1079) #cat bleed
Define(RIP 1079) #cat bleed
SpellInfo(RIP resetcounter=ripshreds duration=16 energy=30 tick=2 combo=0)
SpellInfo(RIP resetcounter=ripshreds duration=16 energy=30 tick=2 combo=0)
SpellInfo(RIP base=112.76 bonuscp=320 bonusapcp=0.0484) # damage coefficients
SpellInfo(RIP base=112.76 bonuscp=320 bonusapcp=0.0484) # damage coefficients
SpellAddTargetDebuff(RIP RIP=1)
SpellAddTargetDebuff(RIP RIP=1)
SpellDamageBuff(RIP DREAM_OF_CENARIUS_DAMAGE=1.25)
SpellDamageBuff(RIP DREAM_OF_CENARIUS_DAMAGE=1.25)
Define(SAVAGE_ROAR_OLD 52610)
Define(SAVAGE_ROAR_OLD 52610)
SpellInfo(SAVAGE_ROAR_OLD duration=18 combo=0 energy=25)
SpellInfo(SAVAGE_ROAR_OLD duration=18 combo=0 energy=25)
SpellAddBuff(SAVAGE_ROAR_OLD SAVAGE_ROAR_OLD=1)
SpellAddBuff(SAVAGE_ROAR_OLD SAVAGE_ROAR_OLD=1)
Define(SAVAGE_ROAR_GLYPHED 127538)
Define(SAVAGE_ROAR_GLYPHED 127538)
SpellInfo(SAVAGE_ROAR_GLYPHED duration=12 combo=-5 energy=25)
SpellInfo(SAVAGE_ROAR_GLYPHED duration=12 combo=-5 energy=25)
SpellAddBuff(SAVAGE_ROAR_GLYPHED SAVAGE_ROAR_GLYPHED=1)
SpellAddBuff(SAVAGE_ROAR_GLYPHED SAVAGE_ROAR_GLYPHED=1)
SpellList(SAVAGE_ROAR 52610 127538)
SpellList(SAVAGE_ROAR 52610 127538)
Define(SHRED 5221) #cat behind
Define(SHRED 5221) #cat behind
SpellInfo(SHRED inccounter=ripshreds energy=40 combo=1)
SpellInfo(SHRED inccounter=ripshreds energy=40 combo=1)
SpellInfo(SHRED critcombo=1 if_spell=PRIMAL_FURY)
SpellInfo(SHRED critcombo=1 if_spell=PRIMAL_FURY)
Define(SHRED_BANG 114236)
Define(SHRED_BANG 114236)
SpellInfo(SHRED_BANG inccounter=ripshreds energy=40 combo=1)
SpellInfo(SHRED_BANG inccounter=ripshreds energy=40 combo=1)
SpellInfo(SHRED_BANG critcombo=1 if_spell=PRIMAL_FURY)
SpellInfo(SHRED_BANG critcombo=1 if_spell=PRIMAL_FURY)
Define(STAMPEDE 81022)
Define(STAMPEDE 81022)
SpellAddBuff(STAMPEDE STAMPEDE=1)
SpellAddBuff(STAMPEDE STAMPEDE=1)
Define(SKULL_BASH_CAT 80965) #cat interrupt
Define(SKULL_BASH_CAT 80965) #cat interrupt
SpellInfo(SKULL_BASH_CAT cd=15 energy=15)
SpellInfo(SKULL_BASH_CAT cd=15 energy=15)
Define(THRASH_CAT 106830)
Define(THRASH_CAT 106830)
SpellInfo(THRASH_CAT duration=15 energy=50 tick=3)
SpellInfo(THRASH_CAT duration=15 energy=50 tick=3)
SpellAddTargetDebuff(THRASH_CAT THRASH_CAT=1 WEAKENED_BLOWS=1)
SpellAddTargetDebuff(THRASH_CAT THRASH_CAT=1 WEAKENED_BLOWS=1)
SpellDamageBuff(THRASH_CAT DREAM_OF_CENARIUS_DAMAGE=1.25)
SpellDamageBuff(THRASH_CAT DREAM_OF_CENARIUS_DAMAGE=1.25)
Define(TIGERS_FURY 5217) #cat buff
Define(TIGERS_FURY 5217) #cat buff
SpellInfo(TIGERS_FURY duration=6 energy=-60 cd=30)
SpellInfo(TIGERS_FURY duration=6 energy=-60 cd=30)
SpellAddBuff(TIGERS_FURY TIGERS_FURY=1)
SpellAddBuff(TIGERS_FURY TIGERS_FURY=1)
# Bear spells
# Bear spells
Define(BEAR_FORM 5487)
Define(BEAR_FORM 5487)
SpellAddBuff(BEAR_FORM BEAR_FORM=1)
SpellAddBuff(BEAR_FORM BEAR_FORM=1)
Define(BERSERK_BEAR 106952) #cat+bear cd buff
Define(BERSERK_BEAR 106952) #cat+bear cd buff
SpellInfo(BERSERK_BEAR duration=10 cd=180 )
SpellInfo(BERSERK_BEAR duration=10 cd=180 )
SpellAddBuff(BERSERK_BEAR BERSERK_BEAR=1)
SpellAddBuff(BERSERK_BEAR BERSERK_BEAR=1)
Define(ENRAGE 5229)
Define(ENRAGE 5229)
Define(FRENZIED_REGEN 22842)
Define(FRENZIED_REGEN 22842)
Define(INCARNATION_BEAR 102558)
Define(INCARNATION_BEAR 102558)
SpellInfo(INCARNATION_BEAR duration=30 cd=180 )
SpellInfo(INCARNATION_BEAR duration=30 cd=180 )
Define(LACERATE 33745)
Define(LACERATE 33745)
Define(MANGLE_BEAR 33878)
Define(MANGLE_BEAR 33878)
SpellInfo(MANGLE_BEAR cd=3 buffnocd=INCARNATION_BEAR buffnocd=BERSERK_BEAR)
SpellInfo(MANGLE_BEAR cd=3 buffnocd=INCARNATION_BEAR buffnocd=BERSERK_BEAR)
Define(MAUL 6807)
Define(MAUL 6807)
Define(MIGHT_OF_URSOC 106922)
Define(MIGHT_OF_URSOC 106922)
Define(SAVAGE_DEFENSE 62606)
Define(SAVAGE_DEFENSE 62606)
Define(SURVIVAL_INSTINCTS 61336)
Define(SURVIVAL_INSTINCTS 61336)
Define(SWIPE_BEAR 779)
Define(SWIPE_BEAR 779)
Define(THRASH_BEAR 77758)
Define(THRASH_BEAR 77758)
Define(TOOTH_AND_CLAW 135286)
Define(TOOTH_AND_CLAW 135286)
SpellAddBuff(TOOTH_AND_CLAW TOOTH_AND_CLAW=1)
SpellAddBuff(TOOTH_AND_CLAW TOOTH_AND_CLAW=1)
Define(TOOTH_AND_CLAW_DEBUFF 135601)
Define(TOOTH_AND_CLAW_DEBUFF 135601)
SpellAddTargetDebuff(TOOTH_AND_CLAW_DEBUFF TOOTH_AND_CLAW_DEBUFF=1)
SpellAddTargetDebuff(TOOTH_AND_CLAW_DEBUFF TOOTH_AND_CLAW_DEBUFF=1)
###############
###############
## Define Settings ##
## Define Settings ##
###############
###############
AddCheckBox(cooldownsL "Show Left Rotation Boxes" default)
AddCheckBox(cooldownsL "Show Left Rotation Boxes" default)
AddCheckBox(cooldownsR "Show Right Cooldown Boxes" default)
AddCheckBox(cooldownsR "Show Right Cooldown Boxes" default)
AddCheckBox(altpredictive "Alternate predictive box")
AddCheckBox(altpredictive "Alternate predictive box")
AddCheckBox(bearaoe "Bear AOE Rotation")
AddCheckBox(bearaoe "Bear AOE Rotation")
AddCheckBox(cooldownsRatio "Show Rake and Rip Ratio Boxes" mastery=2)
AddCheckBox(cooldownsRatio "Show Rake and Rip Ratio Boxes" mastery=2)
AddCheckBox(lucioles SpellName(FAERIE_FERAL) default mastery=2)
AddCheckBox(lucioles SpellName(FAERIE_FERAL) default mastery=2)
AddCheckBox(berserk "Cat Berserk" default mastery=2)
AddCheckBox(berserk "Cat Berserk" default mastery=2)
AddCheckBox(infront "Frontal attack" mastery=2)
AddCheckBox(infront "Frontal attack" mastery=2)
AddCheckBox(predictive "Hide predictive box" mastery=2)
AddCheckBox(predictive "Hide predictive box" mastery=2)
AddCheckBox(nvbounce "Use healing CDs for damage" mastery=2)
AddCheckBox(nvbounce "Use healing CDs for damage" mastery=2)
################
################
## Helper Functions ##
## Helper Functions ##
################
################
# Rake functions
# Rake functions
AddFunction RakeTickDamage
AddFunction RakeTickDamage
{
{
# rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
# rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
Damage(RAKE) * {1 + Mastery()/100}
Damage(RAKE) * {1 + Mastery()/100}
}
}
AddFunction LastRakeTickDamage
AddFunction LastRakeTickDamage
{
{
# rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
# rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
LastSpellEstimatedDamage(RAKE) * {1 + LastSpellMastery(RAKE)/100}
LastSpellEstimatedDamage(RAKE) * {1 + LastSpellMastery(RAKE)/100}
}
}
AddFunction RakeTickDamageRatio
AddFunction RakeRatio
{
{
if TargetDebuffPresent(RAKE) {100 * RakeTickDamage()/LastRakeTickDamage()}
if TargetDebuffPresent(RAKE) {100 * RakeTickDamage()/LastRakeTickDamage()}
unless TargetDebuffPresent(RAKE) 100.0
unless TargetDebuffPresent(RAKE) 100.0
}
}
# Rip functions
# Rip functions
AddFunction RipTickDamage
AddFunction RipTickDamage
{
{
# Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
# Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
Damage(RIP) * {1 + Mastery()/100}
Damage(RIP) * {1 + Mastery()/100}
}
}
AddFunction LastRipTickDamage
AddFunction LastRipTickDamage
{
{
# Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
# Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP)/100}
LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP)/100}
}
}
AddFunction RipTickDamageRatio
AddFunction RipRatio
{
{
if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
unless TargetDebuffPresent(RIP) 100.0
unless TargetDebuffPresent(RIP) 100.0
}
}
AddFunction RipDamageTillDead
AddFunction RipDamageTillDead
{
{
# The damage from Rip that is cast under the current conditions and lasting till target is dead.
# The damage from Rip that is cast under the current conditions and lasting till target is dead.
# Multiply the damage per tick with the number of ticks that can fit into the time to die.
# Multiply the damage per tick with the number of ticks that can fit into the time to die.
# XXX Should factor in crit somehow.
# XXX Should factor in crit somehow.
Damage(RIP) * {1 + Mastery() / 100} * {target.TimeToDie() / 2}
Damage(RIP) * {1 + Mastery() / 100} * {target.TimeToDie() / 2}
}
}
AddFunction ExistingRipDamageTillDead
AddFunction ExistingRipDamageTillDead
{
{
# The damage from Rip that is already on the target and lasting till target is dead.
# The damage from Rip that is already on the target and lasting till target is dead.
if target.DebuffPresent(RIP)
if target.DebuffPresent(RIP)
{
{
# Multiply the damage per tick with the number of ticks that can fit into the time to die.
# Multiply the damage per tick with the number of ticks that can fit into the time to die.
# XXX Should factor in crit somehow.
# XXX Should factor in crit somehow.
LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP) / 100} * {target.TimeToDie() / 2}
LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP) / 100} * {target.TimeToDie() / 2}
}
}
if not target.DebuffPresent(RIP)
if not target.DebuffPresent(RIP)
{
{
0
0
}
}
}
}
# Misc functions
# Misc functions
AddFunction FaerieFire
AddFunction FaerieFire
{
{
if TalentPoints(FAERIE_SWARM_TALENT) Spell(FAERIE_SWARM)
if TalentPoints(FAERIE_SWARM_TALENT) Spell(FAERIE_SWARM)
if not TalentPoints(FAERIE_SWARM_TALENT) Spell(FAERIE_FERAL)
if not TalentPoints(FAERIE_SWARM_TALENT) Spell(FAERIE_FERAL)
}
}
AddFunction SavageRoar
AddFunction SavageRoar
{
{
if Glyph(GLYPH_OF_SAVAGERY) Spell(SAVAGE_ROAR_GLYPHED)
if Glyph(GLYPH_OF_SAVAGERY) Spell(SAVAGE_ROAR_GLYPHED)
if Glyph(GLYPH_OF_SAVAGERY no) and ComboPoints(more 0) Spell(SAVAGE_ROAR_OLD)
if Glyph(GLYPH_OF_SAVAGERY no) and ComboPoints(more 0) Spell(SAVAGE_ROAR_OLD)
}
}
AddFunction BITWRange
AddFunction BITWRange
{
{
# At this target health percent, Ferocious Bite will automatically refresh Rip on the target.
# At this target health percent, Ferocious Bite will automatically refresh Rip on the target.
target.HealthPercent() <=25
target.HealthPercent() <=25
}
}
AddFunction UsePotion
AddFunction UsePotion
{
{
#virmens_bite_potion
#virmens_bite_potion
if CheckBoxOn(potions) and target.Classification(worldboss) Item(virmens_bite_potion)
if CheckBoxOn(potions) and target.Classification(worldboss) Item(virmens_bite_potion)
}
}
AddFunction TimeTilEnergyForThrash
AddFunction TimeTilEnergyForThrash
{
{
if BuffExpires(BERSERK_CAT) {
if BuffExpires(BERSERK_CAT) {
if Energy() <= 50 {
if Energy() <= 50 {
{ 50 - Energy() } / EnergyRegen()
{ 50 - Energy() } / EnergyRegen()
}
}
unless Energy() <= 50 {
unless Energy() <= 50 {
0
0
}
}
}
}
if BuffPresent(BERSERK_CAT) {
if BuffPresent(BERSERK_CAT) {
if Energy() <= 25 {
if Energy() <= 25 {
{ 25 - Energy() } / EnergyRegen()
{ 25 - Energy() } / EnergyRegen()
}
}
unless Energy() <= 25 {
unless Energy() <= 25 {
0
0
}
}
}
}
}
}
#############################
#############################
## Feral rotation functions (Mastery=2) ##
## Feral rotation functions (Mastery=2) ##
#############################
#############################
AddFunction NotInCombat
AddFunction NotInCombat
{
{
if not InCombat() {
if not InCombat() {
if BuffExpires(str_agi_int 400 any=1) Spell(MARK_OF_THE_WILD)
if BuffExpires(str_agi_int 400 any=1) Spell(MARK_OF_THE_WILD)
if BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and TalentPoints(DREAM_OF_CENARIUS_TALENT) Spell(HEALING_TOUCH)
if BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and TalentPoints(DREAM_OF_CENARIUS_TALENT) Spell(HEALING_TOUCH)
unless Stance(3) Spell(CAT_FORM)
unless Stance(3) Spell(CAT_FORM)
if Glyph(GLYPH_OF_SAVAGERY) and ComboPoints() ==0 {
if Glyph(GLYPH_OF_SAVAGERY) and ComboPoints() ==0 {
if BuffRemains(SAVAGE_ROAR_GLYPHED) <15 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-11.5
if BuffRemains(SAVAGE_ROAR_GLYPHED) <15 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-11.5
or BuffRemains(SAVAGE_ROAR_GLYPHED) <9 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-8.5
or BuffRemains(SAVAGE_ROAR_GLYPHED) <9 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-8.5
or BuffRemains(SAVAGE_ROAR_GLYPHED) <6 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-5.5
or BuffRemains(SAVAGE_ROAR_GLYPHED) <6 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-5.5
or BuffRemains(SAVAGE_ROAR_GLYPHED) <3 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-2.5
or BuffRemains(SAVAGE_ROAR_GLYPHED) <3 and TimeToMaxEnergy() < BuffRemains(SAVAGE_ROAR_GLYPHED)-2.5
or BuffExpires(SAVAGE_ROAR_GLYPHED) {
or BuffExpires(SAVAGE_ROAR_GLYPHED) {
SavageRoar()
SavageRoar()
}
}
}
}
if TalentPoints(FORCE_OF_NATURE_TALENT) Spell(FORCE_OF_NATURE)
if TalentPoints(FORCE_OF_NATURE_TALENT) Spell(FORCE_OF_NATURE)
}
}
}
}
AddFunction FillerActions {
AddFunction FillerActions {
#thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&combo_points>=5
#thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&combo_points>=5
if target.DebuffRemains(THRASH_CAT) <3 and target.TimeToDie() >=9 and ComboPoints() >=5 Spell(THRASH_CAT)
if target.DebuffRemains(THRASH_CAT) <3 and target.TimeToDie() >=9 and ComboPoints() >=5 Spell(THRASH_CAT)
if TalentPoints(INCARNATION_TALENT)
if TalentPoints(INCARNATION_TALENT)
{
{
#ravage
#ravage
if BuffPresent(INCARNATION_CAT) Spell(RAVAGE)
if BuffPresent(INCARNATION_CAT) Spell(RAVAGE)
}
}
if not TalentPoints(INCARNATION_TALENT) or BuffExpires(INCARNATION_CAT)
if not TalentPoints(INCARNATION_TALENT) or BuffExpires(INCARNATION_CAT)
{
{
#actions.filler+=/shred,if=(buff.omen_of_clarity.react|buff.berserk.up|energy.regen>=15)&buff.king_of_the_jungle.down
#actions.filler+=/shred,if=(buff.omen_of_clarity.react|buff.berserk.up|energy.regen>=15)&buff.king_of_the_jungle.down
if BuffPresent(CLEARCASTING) or BuffPresent(BERSERK_CAT) or EnergyRegen() >=15
if BuffPresent(CLEARCASTING) or BuffPresent(BERSERK_CAT) or EnergyRegen() >=15
and {not CheckBoxOn(infront)
and {not CheckBoxOn(infront)
or {Glyph(GLYPH_OF_SHRED) and {BuffPresent(TIGERS_FURY) or BuffPresent(BERSERK_CAT)}}}
or {Glyph(GLYPH_OF_SHRED) and {BuffPresent(TIGERS_FURY) or BuffPresent(BERSERK_CAT)}}}
Spell(SHRED)
Spell(SHRED)
#actions.filler+=/mangle_cat,if=buff.king_of_the_jungle.down
#actions.filler+=/mangle_cat,if=buff.king_of_the_jungle.down
Spell(MANGLE_CAT)
Spell(MANGLE_CAT)
}
}
}
}
AddFunction SpareGcdCooldowns {
AddFunction SpareGcdCooldowns {
if TalentPoints(FORCE_OF_NATURE_TALENT)
if TalentPoints(FORCE_OF_NATURE_TALENT)
{
{
#treants
#treants
Spell(FORCE_OF_NATURE)
Spell(FORCE_OF_NATURE)
}
}
# Spirit Wolves goes here when symbiosis is supported appropriately.
# Spirit Wolves goes here when symbiosis is supported appropriately.
}
}
# Feral rotation for talent builds with "Dream of Cenarius".
# Feral rotation for talent builds with "Dream of Cenarius".
AddFunction FillerConditionsDoC
AddFunction FillerConditionsDoC
{
{
#run_action_list,name=filler,if=buff.omen_of_clarity.react
#run_action_list,name=filler,if=buff.omen_of_clarity.react
if BuffPresent(CLEARCASTING) FillerActions()
if BuffPresent(CLEARCASTING) FillerActions()
#run_action_list,name=filler,if=(combo_points<5&dot.rip.remains<3)|(combo_points=0&buff.savage_roar.remains<2)
#run_action_list,name=filler,if=(combo_points<5&dot.rip.remains<3)|(combo_points=0&buff.savage_roar.remains<2)
if {ComboPoints() <5 and target.DebuffRemains(RIP) <3} or {ComboPoints() ==0 and BuffRemains(SAVAGE_ROAR) <2} FillerActions()
if {ComboPoints() <5 and target.DebuffRemains(RIP) <3} or {ComboPoints() ==0 and BuffRemains(SAVAGE_ROAR) <2} FillerActions()
#run_action_list,name=filler,if=buff.predatory_swiftness.remains>1
#run_action_list,name=filler,if=buff.predatory_swiftness.remains>1
if BuffRemains(PREDATORY_SWIFTNESS) >1 FillerActions()
if BuffRemains(PREDATORY_SWIFTNESS) >1 FillerActions()
#run_action_list,name=filler,if=target.time_to_die<=8.5
#run_action_list,name=filler,if=target.time_to_die<=8.5
if target.TimeToDie() <=8.5 FillerActions()
if target.TimeToDie() <=8.5 FillerActions()
#run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up
#run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up
if BuffPresent(TIGERS_FURY) or BuffPresent(BERSERK_CAT) FillerActions()
if BuffPresent(TIGERS_FURY) or BuffPresent(BERSERK_CAT) FillerActions()
#run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3
#run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3
if SpellCooldown(TIGERS_FURY) <=3 FillerActions()
if SpellCooldown(TIGERS_FURY) <=3 FillerActions()
#run_action_list,name=filler,if=energy.time_to_max<=1
#run_action_list,name=filler,if=energy.time_to_max<=1
if TimeToMaxEnergy() <=1 FillerActions()
if TimeToMaxEnergy() <=1 FillerActions()
}
}
AddFunction MainActionsDoC
AddFunction MainActionsDoC
{
{
#auto_attack
#auto_attack
#healing_touch,if=buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
#healing_touch,if=buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
if BuffPresent(PREDATORY_SWIFTNESS) and BuffRemains(PREDATORY_SWIFTNESS) <=1.5 and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) Spell(HEALING_TOUCH)
if BuffPresent(PREDATORY_SWIFTNESS) and BuffRemains(PREDATORY_SWIFTNESS) <=1.5 and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) Spell(HEALING_TOUCH)
#savage_roar,if=buff.savage_roar.down
#savage_roar,if=buff.savage_roar.down
if BuffExpires(SAVAGE_ROAR) SavageRoar()
if BuffExpires(SAVAGE_ROAR) SavageRoar()
#faerie_fire,if=debuff.weakened_armor.stack<3
#faerie_fire,if=debuff.weakened_armor.stack<3
if target.DebuffStacks(WEAKENED_ARMOR any=1) <3 and CheckBoxOn(lucioles) FaerieFire()
if target.DebuffStacks(WEAKENED_ARMOR any=1) <3 and CheckBoxOn(lucioles) FaerieFire()
#healing_touch,if=buff.predatory_swiftness.up&(combo_points>=4|(set_bonus.tier15_2pc_melee&combo_points>=3))&buff.dream_of_cenarius_damage.stack<2
if BuffPresent(PREDATORY_SWIFTNESS) and BuffStacks(DREAM_OF_CENARIUS_DAMAGE) <2 and ComboPoints() >=4 Spell(HEALING_TOUCH)
#healing_touch,if=buff.predatory_swiftness.up&combo_points>=4&buff.dream_of_cenarius_damage.down
if BuffPresent(PREDATORY_SWIFTNESS) and BuffExpire(DREAM_OF_CENARIUS_DAMAGE) and ComboPoints() >=4 Spell(HEALING_TOUCH)
#healing_touch,if=buff.natures_swiftness.up
#healing_touch,if=buff.natures_swiftness.up
if BuffPresent(NATURES_SWIFTNESS) Spell(HEALING_TOUCH)
if BuffPresent(NATURES_SWIFTNESS) Spell(HEALING_TOUCH)
if not target.InRange(MANGLE_CAT) Texture(ability_druid_catformattack)
if not target.InRange(MANGLE_CAT) Texture(ability_druid_catformattack)
#incarnation,if=energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
#incarnation,if=energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
#use_item,name=eternal_blossom_grips,sync=tigers_fury
#use_item,name=eternal_blossom_grips,sync=tigers_fury
#tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
#tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
#berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
#berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
if {{Energy() <=35 and BuffExpires(CLEARCASTING)} or BuffPresent(INCARNATION_CAT)} and Spell(TIGERS_FURY)
if {{Energy() <=35 and BuffExpires(CLEARCASTING)} or BuffPresent(INCARNATION_CAT)} and Spell(TIGERS_FURY)
{
{
if CheckBoxOn(berserk) and Spell(BERSERK_CAT)
if CheckBoxOn(berserk) and Spell(BERSERK_CAT)
{
{
if TalentPoints(INCARNATION_TALENT) Spell(INCARNATION)
if TalentPoints(INCARNATION_TALENT) Spell(INCARNATION)
if not TalentPoints(INCARNATION_TALENT) or BuffPresent(INCARNATION_CAT) Spell(BERSERK_CAT)
if not TalentPoints(INCARNATION_TALENT) or BuffPresent(INCARNATION_CAT) Spell(BERSERK_CAT)
}
}
if not BuffPresent(BERSERK_CAT) Spell(TIGERS_FURY)
if not BuffPresent(BERSERK_CAT) Spell(TIGERS_FURY)
}
}
if CheckBoxOn(berserk) and TalentPoints(INCARNATION_TALENT) and BuffPresent(BERSERK_CAT) Spell(INCARNATION_CAT)
if CheckBoxOn(berserk) and TalentPoints(INCARNATION_TALENT) and BuffPresent(BERSERK_CAT) Spell(INCARNATION_CAT)
#ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
#ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
if BITWRange() and ComboPoints() >=1 and target.DebuffPresent(RIP) and target.DebuffRemains(RIP) <=3 Spell(FEROCIOUS_BITE)
if BITWRange() and ComboPoints() >=1 and target.DebuffPresent(RIP) and target.DebuffRemains(RIP) <=4 Spell(FEROCIOUS_BITE)
#thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
#thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
if target.TimeToDie() >=9 and BuffPresent(CLEARCASTING) and target.DebuffRemains(THRASH_CAT) <3 Spell(THRASH_CAT)
if target.TimeToDie() >=9 and BuffPresent(CLEARCASTING) and target.DebuffRemains(THRASH_CAT) <3 Spell(THRASH_CAT)
#ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
#ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
if target.TimeToDie() <=4 and ComboPoints() >=5 Spell(FEROCIOUS_BITE)
if target.TimeToDie() <=4 and ComboPoints() >=5 Spell(FEROCIOUS_BITE)
if target.TimeToDie() <=1 and ComboPoints() >=3 Spell(FEROCIOUS_BITE)
if target.TimeToDie() <=1 and ComboPoints() >=3 Spell(FEROCIOUS_BITE)
if BITWRange()
if BITWRange()
{
{
#savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
#savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 SavageRoar()
if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 SavageRoar()
if ComboPoints() >=5
if ComboPoints() >=5
{
{
#natures_swiftness,if=buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
#natures_swiftness,if=buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
if TalentPoints(NATURES_SWIFTNESS_TALENT) and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS) and BuffRemains(SAVAGE_ROAR) >5 Spell(NATURES_SWIFTNESS)
if TalentPoints(NATURES_SWIFTNESS_TALENT) and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS) and BuffRemains(SAVAGE_ROAR) >5 Spell(NATURES_SWIFTNESS)
#virmens_bite_potion,if=(combo_points>=5&target.health.pct<=25&buff.dream_of_cenarius_damage.up)arget.time_to_die<=40
if ComboPoints() >=5 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) UsePotion()
#virmens_bite_potion,if=combo_points>=5&$(time_til_bitw)<15&$(rip_ratio)>=1.15&buff.dream_of_cenarius_damage.up
if not HasTrinket(ROR_ITEM) and ComboPoints() >=5 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) and RipRatio() >=115 UsePotion()
#virmens_bite_potion,if=combo_points>=5&$(time_til_bitw)<15&buff.rune_of_reorigination.up&buff.dream_of_cenarius_damage.up
if HasTrinket(ROR_ITEM) and ComboPoints() >=5 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) and BuffPresent(ROR_MASTERY) UsePotion()
#virmens_bite_potion,if=target.time_to_die<=40
if target.TimeToDie() <=40 UsePotion()
if target.TimeToDie() <=40 UsePotion()
#rip,line_cd=30,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&target.health.pct<=25&target.time_to_die>30
#rip,line_cd=30,if=combo_points>=5&buff.virmens_bite_potion.up&buff.dream_of_cenarius_damage.up&target.health.pct<=25&target.time_to_die>30
# Assume that FB will be 400% normal damage (100% increased damage + crit) to decide if we should overwrite Rip.
# Assume that FB will be 400% normal damage (100% increased damage + crit) to decide if we should overwrite Rip.
if target.TimeToDie() >30
if RipDamageTillDead() > {ExistingRipDamageTillDead() + Damage(FEROCIOUS_BITE) * 4} Spell(RIP)
{
if RipDamageTillDead() > {ExistingRipDamageTillDead() + Damage(FEROCIOUS_BITE) * 4} Spell(RIP)
}
#pool_resource,wait=0.25,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))
#pool_resource,wait=0.25,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))
#ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
#ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
if target.DebuffPresent(RIP)
if target.DebuffPresent(RIP)
{
{
unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
}
}
}
}
}
}
if not BITWRange()
if HasTrinket(ROR_ITEM) and BuffPresent(ROR_MASTERY) and not BITWRange()
{
{
#actions.doc+=/natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&$(rip_ratio)>=0.92&target.time_to_die>30
#natures_swiftness,if=enabled&buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&$(rip_ratio)>=0.92&target.time_to_die>30
if TalentPoints(NATURES_SWIFTNESS_TALENT) and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS)
if BuffRemains(ROR_MASTERY) >1.5 and TalentPoints(NATURES_SWIFTNESS_TALENT) and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS)
and ComboPoints() >=5 and RipTickDamageRatio() >=92 and target.TimeToDie() >30 Spell(NATURES_SWIFTNESS)
and ComboPoints() >=5 and RipRatio() >=92 and target.TimeToDie() >30 Spell(NATURES_SWIFTNESS)
#actions.doc+=/rip,if=combo_points>=5&$(rip_ratio)>=1.15&target.time_to_die>30
if HasTrinket(ROR_ITEM) and ComboPoints() >=5 and BuffPresent(ROR_MASTERY) and target.TimeToDie() >30 Spell(RIP)
#rip,if=combo_points>=5&$(rip_ratio)>=1.15&target.time_to_die>30
if ComboPoints() >=5 and RipRatio() >=115 and target.TimeToDie() >30 Spell(RIP)
}
}
#rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&buff.dream_of_cenarius_damage.up
#rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&buff.dream_of_cenarius_damage.up
if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) Spell(RIP)
if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) Spell(RIP)
#rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<=tick_multiplier
#rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rip.multiplier<=tick_multiplier
if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <6 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) and RipTickDamageRatio() >=100 Spell(RIP)
if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <6 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) and RipRatio() >=100 Spell(RIP)
if TalentPoints(NATURES_SWIFTNESS_TALENT)
{
#natures_swiftness,if=buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&dot.rip.remains<3&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)
#natures_swiftness,if=buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&dot.rip.remains<3&\
if TalentPoints(NATURES_SWIFTNESS_TALENT) and BuffExpires(DREAM_OF_CENARIUS_DAMAGE)
# (buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)
and BuffExpires(PREDATORY_SWIFTNESS) and ComboPoints() >=5 and target.DebuffRemains(RIP) <3
if BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS) and ComboPoints() >=5 and target.DebuffRemains(RIP) <3
and {BuffPresent(BERSERK_CAT) or target.DebuffRemains(RIP) +1.9 <= SpellCooldown(TIGERS_FURY)}
and {BuffPresent(BERSERK_CAT) or target.DebuffRemains(RIP) +1.9 <= SpellCooldown(TIGERS_FURY)}
{
{
Spell(NATURES_SWIFTNESS)
Spell(NATURES_SWIFTNESS)
}
}
}
#rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)
#rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&(buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)
if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2
if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2
and {BuffPresent(BERSERK_CAT) or {target.DebuffRemains(RIP)+1.9} <=SpellCooldown(TIGERS_FURY)}
{
{
if BuffPresent(BERSERK_CAT) Spell(RIP)
Spell(RIP)
if target.DebuffRemains(RIP) +1.9 <= SpellCooldown(TIGERS_FURY) Spell(RIP)
}
}
#savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
#savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 and {BuffRemains(SAVAGE_ROAR) +2 > target.DebuffRemains(RIP)} SavageRoar()
if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 and {BuffRemains(SAVAGE_ROAR) +2 > target.DebuffRemains(RIP)} SavageRoar()
#savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains
#savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains
if BuffRemains(SAVAGE_ROAR) <=6 and ComboPoints() >=5 and {BuffRemains(SAVAGE_ROAR) +2 <= target.DebuffRemains(RIP)} SavageRoar()
if BuffRemains(SAVAGE_ROAR) <=6 and ComboPoints() >=5 and {BuffRemains(SAVAGE_ROAR) +2 <= target.DebuffRemains(RIP)} SavageRoar()
#actions.doc+=/pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)
#actions.doc+=/pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)
#actions.doc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)&!((buff.savage_roar.remains-6<=energy.time_to_max-1)&buff.savage_roar.remains+2<=$(rip_remains))
#actions.doc+=/ferocious_bite,if=combo_points>=5&dot.rip.ticking&!(dot.rip.remains-2<=energy.time_to_max-1)&!(buff.savage_roar.remains-3<=energy.time_to_max-1)&!((buff.savage_roar.remains-6<=energy.time_to_max-1)&buff.savage_roar.remains+2<=$(rip_remains))
if ComboPoints() >=5 and target.DebuffPresent(RIP) and BuffPresent(SAVAGE_ROAR)
if ComboPoints() >=5 and target.DebuffPresent(RIP) and BuffPresent(SAVAGE_ROAR)
and not target.DebuffRemains(RIP)-2 <= TimeToMaxEnergy()-1
and not target.DebuffRemains(RIP)-2 <= TimeToMaxEnergy()-1
and not BuffRemains(SAVAGE_ROAR)-3 <= TimeToMaxEnergy()-1
and not BuffRemains(SAVAGE_ROAR)-3 <= TimeToMaxEnergy()-1
and not {BuffRemains(SAVAGE_ROAR)-6 <= TimeToMaxEnergy()-1
and not {BuffRemains(SAVAGE_ROAR)-6 <= TimeToMaxEnergy()-1
and BuffRemains(SAVAGE_ROAR)+2 <= target.DebuffRemains(RIP)}
and BuffRemains(SAVAGE_ROAR)+2 <= target.DebuffRemains(RIP)}
and target.DebuffRemains(RIP) >=5
{
{
unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
}
}
if HasTrinket(ROR_ITEM) {
#rake,if=buff.rune_of_reorigination.up&$(rake_ratio)>=1
#rake,if=action.rake.tick_damage>action.mangle_cat.hit_damage&action.rake.tick_damage>=dot.rake.tick_dmg
if BuffPresent(ROR_MASTERY) and RakeTickDamageRatio() >=100 Spell(RAKE)
#rake,if=buff.rune_of_reorigination.up&dot.rake.remains<9&(buff.rune_of_reorigination.remains<=1.5)
if BuffPresent(ROR_MASTERY) and target.DebuffRemains(RAKE) <9 and BuffRemains(ROR_MASTERY) <=1.5 Spell(RAKE)
}
#rake,if=target.time_to_die-dot.rak