This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!

Untitled

By: aggixx on Feb 8th, 2013  |  syntax: None  |  size: 35.06 KB  |  views: 21  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # Leafkiller's Feral/Guardian druid script.
  2. # Cat Rotation based on Simulationcraft single target default script. Contributions to that have come from many ferals.
  3. # Guardian rotation based on the guide at theincbear.com
  4. # Lots of input and constructs from jlam aka Nerien
  5. # Revision History
  6. # 5.1.5 02/08/2013 Update to SimC (Base code from Nerien), code consistency and formatting
  7. # 5.1.4 12/07/2012 Tooth and Claw
  8. # 5.1.3 12/07/2012 Tweak for Bear display with alternate setup selected
  9. # 5.1.2 12/07/2012 Misc changes including SR, Ravage!, alternate layout for Aggixx and some script reconciliation
  10. # 5.1.1 11/30/2012 Ravage fix for PVP 4 set and support for faster combo points on crits
  11. # 5.05.14 11/09/2012 New spell ID for clearcasting
  12. # 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
  13. # 5.05.13 10/23/2012 Don't pool during NV
  14. # 5.05.12 10/22/2012 Fix bad spell name in Rake conditional (TIGERS_FURY should be TIGERSFURY)
  15. # 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.
  16. # 5.05.10 10/21/2012 4 Piece PvP gear support and Nature's Vigil HT code
  17. # 5.05.9 10/16/2012 Feral Spirit support
  18. # 5.05.8 10/14/2012 Fix 3 second SR to interfere less with Rip for HotW (and NV). 60 seconds for Rake.
  19. # 5.05.7 10/14/2012 Update to latest version of sim script - small changes and Rake improvements
  20. # 5.05.6 10/11/2012 Heart of the Wild support, add out of combat support
  21. # 5.05.6 10/10/2012 Update to limit SR using comb points when DoC is up
  22. # 5.05.5a 10/08/2012 Update to include optimizations in simc script
  23. # 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).
  24. # 5.05.4 09/23/2012 Level 90 script - First complete version
  25. # 5.05.2 09/20/2012 Level 90 script - WiP
  26. # 5.05.1 09/08/2012 First version in Nerien's addon
  27.  
  28. ########################
  29. ## Define Spells, Buffs, Talents ##
  30. ########################
  31.  
  32. # Shared spells
  33. Define(BARKSKIN 22812)
  34.     SpellInfo(BARKSKIN cd=60)
  35. Define(FERAL_SPIRIT 110807)
  36. Define(HEALING_TOUCH 5185)
  37. Define(MARK_OF_THE_WILD 1126)
  38.     SpellInfo(MARK_OF_THE_WILD duration=3600)
  39.     SpellAddBuff(MARK_OF_THE_WILD MARK_OF_THE_WILD=1)
  40. Define(SYMBIOSIS 110309)
  41.     SpellAddBuff(SYMBIOSIS SYMBIOSIS=1)
  42. Define(WRATH 5176)
  43.  
  44. # Shared buffs
  45. Define(DREAM_OF_CENARIUS_DAMAGE 108381)
  46.     SpellInfo(DREAM_OF_CENARIUS_DAMAGE duration=30 )
  47.     SpellAddBuff(DREAM_OF_CENARIUS_DAMAGE DREAM_OF_CENARIUS_DAMAGE=1)
  48. Define(NATURES_VIGIL 124974)
  49.     SpellInfo(NATURES_VIGIL cd=180)
  50.     SpellAddBuff(NATURES_VIGIL NATURES_VIGIL=1)
  51. Define(PREDATORY_SWIFTNESS 69369)
  52.     SpellAddBuff(PREDATORY_SWIFTNESS PREDATORY_SWIFTNESS=1)
  53. Define(PRIMAL_FURY 16961)
  54. Define(TRICKS 57933)
  55.     SpellAddBuff(TRICKS TRICKS=1)
  56. Define(WEAKENED_ARMOR 113746)
  57.     SpellInfo(WEAKENED_ARMOR duration=30)
  58. Define(WEAKENED_BLOWS 115798)
  59.     SpellInfo(WEAKENED_BLOWS duration=30)
  60. Define(CLEARCASTING 135700)
  61.  
  62. # Talents
  63. Define(NATURES_SWIFTNESS_TALENT 4)
  64. Define(RENEWAL_TALENT 5)
  65. Define(CENARION_WARD_TALENT 6)
  66. Define(FAERIE_SWARM 7)
  67. Define(TYPHOON_TALENT 9)
  68. Define(SOUL_OF_THE_FOREST 10)
  69. Define(INCARNATION_TALENT 11)
  70. Define(FORCE_OF_NATURE_TALENT 12)
  71. Define(MIGHTY_BASH_TALENT 15)
  72. Define(HEART_OF_THE_WILD_TALENT 16)
  73. Define(DREAM_OF_CENARIUS_TALENT 17)
  74. Define(NATURES_VIGIL_TALENT 18)
  75.  
  76. # Talent spells
  77. Define(CENARION_WARD 102351)
  78.     SpellInfo(CENARION_WARD cd=30)
  79. Define(FORCE_OF_NATURE 106737)
  80.     SpellInfo(FORCE_OF_NATURE duration=15 cd=60)
  81. Define(HEART_OF_THE_WILD 108292)
  82.     SpellInfo(HEART_OF_THE_WILD cd=360)
  83.     SpellAddBuff(HEART_OF_THE_WILD HEART_OF_THE_WILD=1)
  84. Define(MIGHTY_BASH 5211)
  85.     SpellInfo(MIGHTY_BASH cd=50)
  86. Define(NATURES_SWIFTNESS 132158)
  87.     SpellInfo(NATURES_SWIFTNESS cd=60)
  88.     SpellAddBuff(NATURES_SWIFTNESS NATURES_SWIFTNESS=1)
  89. Define(RENEWAL 108238)
  90.     SpellInfo(RENEWAL cd=120)
  91. Define(TYPHOON 132469)
  92.     SpellInfo(TYPHOON cd=20)
  93.  
  94. #Glyphs
  95. Define(GLYPH_OF_SHRED 114234)
  96. Define(GLYPH_OF_SAVAGERY 127540)
  97.  
  98. # Cat spells
  99. Define(BERSERK_CAT 106951) #cat cd buff
  100.     SpellInfo(BERSERK_CAT duration=15 cd=180 )
  101.     SpellAddBuff(BERSERK_CAT BERSERK_CAT=1 )
  102. Define(CAT_FORM 768)
  103.     SpellAddBuff(CAT_FORM CAT_FORM=1)
  104. Define(FAERIE_FERAL 770) #bear+cat
  105.     SpellInfo(FAERIE_FERAL duration=300 cd=6)
  106.     SpellAddTargetDebuff(FAERIE_FERAL FAERIE_FERAL=1 WEAKENED_ARMOR=1)
  107. Define(FAERIE_SWARM 102355) #bear+cat
  108.     SpellInfo(FAERIE_SWARM duration=300 cd=6)
  109.     SpellAddTargetDebuff(FAERIE_SWARM FAERIE_SWARM=1 WEAKENED_ARMOR=1)
  110. Define(FEROCIOUS_BITE 22568) #cat finish 25-50 energy
  111.     SpellInfo(FEROCIOUS_BITE energy=25 combo=0)
  112. Define(INCARNATION_CAT 102543)
  113.     SpellInfo(INCARNATION_CAT duration=30 cd=180)
  114. Define(MAIM 22570) #cat interrupt
  115.     SpellInfo(MAIM cd=10 energy=35 combo=0)
  116. Define(MANGLE_CAT 33876) #cat bleed+debuff
  117.     SpellInfo(MANGLE_CAT inccounter=ripshreds energy=35 combo=1)
  118.     SpellInfo(MANGLE_CAT critcombo=1 if_spell=PRIMAL_FURY)
  119. Define(RAKE 1822) #cat bleed
  120.     SpellInfo(RAKE combo=1 duration=15 energy=35 tick=3)
  121.     SpellInfo(RAKE base=98.13 bonusap=0.31453)
  122.     SpellInfo(RAKE critcombo=1 if_spell=PRIMAL_FURY)
  123.     SpellAddTargetDebuff(RAKE RAKE=1)
  124.     SpellDamageBuff(RAKE DREAM_OF_CENARIUS_DAMAGE=1.25)
  125. Define(RAVAGE 6785)
  126.     SpellInfo(RAVAGE inccounter=ripshreds energy=45 combo=1)
  127.     SpellInfo(RAVAGE critcombo=1 if_spell=PRIMAL_FURY)
  128. Define(RAVAGE_BANG 102545)
  129.     SpellInfo(RAVAGE_BANG inccounter=ripshreds energy=0 combo=1)
  130.     SpellInfo(RAVAGE_BANG critcombo=1 if_spell=PRIMAL_FURY)
  131. Define(RIP 1079) #cat bleed
  132.     SpellInfo(RIP resetcounter=ripshreds duration=16 energy=30 tick=2 combo=0)
  133.     SpellInfo(RIP base=112.76 bonuscp=320 bonusapcp=0.0484) # damage coefficients
  134.     SpellAddTargetDebuff(RIP RIP=1)
  135.     SpellDamageBuff(RIP DREAM_OF_CENARIUS_DAMAGE=1.25)
  136. Define(SAVAGE_ROAR_OLD 52610)
  137.     SpellInfo(SAVAGE_ROAR_OLD duration=18 combo=0 energy=25)
  138.     SpellAddBuff(SAVAGE_ROAR_OLD SAVAGE_ROAR_OLD=1)
  139. Define(SAVAGE_ROAR_GLYPHED 127538)
  140.     SpellInfo(SAVAGE_ROAR_GLYPHED duration=12 combo=-5 energy=25)
  141.     SpellAddBuff(SAVAGE_ROAR_GLYPHED SAVAGE_ROAR_GLYPHED=1)
  142. SpellList(SAVAGE_ROAR 52610 127538)
  143. Define(SHRED 5221) #cat behind
  144.     SpellInfo(SHRED inccounter=ripshreds energy=40 combo=1)
  145.     SpellInfo(SHRED critcombo=1 if_spell=PRIMAL_FURY)
  146. Define(SHRED_BANG 114236)
  147.     SpellInfo(SHRED_BANG inccounter=ripshreds energy=40 combo=1)
  148.     SpellInfo(SHRED_BANG critcombo=1 if_spell=PRIMAL_FURY)
  149. Define(STAMPEDE 81022)
  150.     SpellAddBuff(STAMPEDE STAMPEDE=1)
  151. Define(SKULL_BASH_CAT 80965) #cat interrupt
  152.     SpellInfo(SKULL_BASH_CAT cd=15 energy=15)
  153. Define(THRASH_CAT 106830)
  154.     SpellInfo(THRASH_CAT duration=15 energy=50 tick=3)
  155.     SpellAddTargetDebuff(THRASH_CAT THRASH_CAT=1 WEAKENED_BLOWS=1)
  156.     SpellDamageBuff(THRASH_CAT DREAM_OF_CENARIUS_DAMAGE=1.25)
  157. Define(TIGERS_FURY 5217) #cat buff
  158.     SpellInfo(TIGERS_FURY duration=6 energy=-60 cd=30)
  159.     SpellAddBuff(TIGERS_FURY TIGERS_FURY=1)
  160. Define(WILD_CHARGE 49376)
  161.     SpellInfo(WILD_CHARGE cd=15)
  162.  
  163. # Bear spells
  164. Define(BEAR_FORM 5487)
  165.     SpellAddBuff(BEAR_FORM BEAR_FORM=1)
  166. Define(BERSERK_BEAR 106952) #cat+bear cd buff
  167.     SpellInfo(BERSERK_BEAR duration=10 cd=180 )
  168.     SpellAddBuff(BERSERK_BEAR BERSERK_BEAR=1)
  169. Define(ENRAGE 5229)
  170. Define(FRENZIED_REGEN 22842)
  171. Define(INCARNATION_BEAR 102558)
  172.     SpellInfo(INCARNATION_BEAR duration=30 cd=180 )
  173. Define(LACERATE 33745)
  174. Define(MANGLE_BEAR 33878)
  175.     SpellInfo(MANGLE_BEAR cd=3 buffnocd=INCARNATION_BEAR buffnocd=BERSERK_BEAR)
  176. Define(MAUL 6807)
  177. Define(MIGHT_OF_URSOC 106922)
  178. Define(SAVAGE_DEFENSE 62606)
  179. Define(SURVIVAL_INSTINCTS 61336)
  180. Define(SWIPE_BEAR 779)
  181. Define(THRASH_BEAR 77758)
  182. Define(TOOTH_AND_CLAW 135286)
  183.     SpellAddBuff(TOOTH_AND_CLAW TOOTH_AND_CLAW=1)
  184. Define(TOOTH_AND_CLAW_DEBUFF 135601)
  185.     SpellAddTargetDebuff(TOOTH_AND_CLAW_DEBUFF TOOTH_AND_CLAW_DEBUFF=1)
  186. Define(WILD_CHARGE_BEAR 102401)
  187.     SpellInfo(WILD_CHARGE_BEAR cd=15)
  188.  
  189. ###############
  190. ## Define Settings ##
  191. ###############
  192.  
  193. AddCheckBox(cooldownsL "Show Left Rotation Boxes" default)
  194. AddCheckBox(cooldownsR "Show Right Cooldown Boxes" default)
  195. AddCheckBox(altpredictive "Alternate predictive box")
  196. AddCheckBox(bearaoe "Bear AOE Rotation")
  197. AddCheckBox(cooldownsRatio "Show Rake and Rip Ratio Boxes" mastery=2)
  198. AddCheckBox(lucioles SpellName(FAERIE_FERAL) default mastery=2)
  199. AddCheckBox(berserk "Cat Berserk" default mastery=2)
  200. AddCheckBox(infront "Frontal attack" mastery=2)
  201. AddCheckBox(predictive "Hide predictive box" mastery=2)
  202. AddCheckBox(nvbounce "Use healing CDs for damage" mastery=2)
  203.  
  204. ################
  205. ## Helper Functions ##
  206. ################
  207.  
  208. # Rake functions
  209. AddFunction RakeTickDamage
  210. {
  211.     # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
  212.     Damage(RAKE) * {1 + Mastery()/100}
  213. }
  214. AddFunction LastRakeTickDamage
  215. {
  216.     # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
  217.     LastSpellEstimatedDamage(RAKE) * {1 + LastSpellMastery(RAKE)/100}
  218. }
  219. AddFunction RakeTickDamageRatio
  220. {
  221.     if TargetDebuffPresent(RAKE) {100 * RakeTickDamage()/LastRakeTickDamage()}
  222.     unless TargetDebuffPresent(RAKE) 100.0
  223. }
  224.  
  225. # Rip functions
  226. AddFunction RipTickDamage
  227. {
  228.     # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
  229.     Damage(RIP) * {1 + Mastery()/100}
  230. }
  231. AddFunction LastRipTickDamage
  232. {
  233.     # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
  234.     LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP)/100}
  235. }
  236. AddFunction RipTickDamageRatio
  237. {
  238.     if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
  239.     unless TargetDebuffPresent(RIP) 100.0
  240. }
  241. AddFunction RipDamageTillDead
  242. {
  243.     # The damage from Rip that is cast under the current conditions and lasting till target is dead.
  244.     # Multiply the damage per tick with the number of ticks that can fit into the time to die.
  245.     # XXX Should factor in crit somehow.
  246.     Damage(RIP) * {1 + Mastery() / 100} * {target.TimeToDie() / 2}
  247. }
  248. AddFunction ExistingRipDamageTillDead
  249. {
  250.     # The damage from Rip that is already on the target and lasting till target is dead.
  251.     if target.DebuffPresent(RIP)
  252.     {
  253.         # Multiply the damage per tick with the number of ticks that can fit into the time to die.
  254.         # XXX Should factor in crit somehow.
  255.         LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP) / 100} * {target.TimeToDie() / 2}
  256.     }
  257.     if not target.DebuffPresent(RIP)
  258.     {
  259.         0
  260.     }
  261. }
  262.  
  263. # Misc functions
  264. AddFunction FaerieFire
  265. {
  266.     if TalentPoints(FAERIE_SWARM) Spell(FAERIE_SWARM)
  267.     if not TalentPoints(FAERIE_SWARM) Spell(FAERIE_FERAL)
  268. }
  269. AddFunction FaerieFireReady
  270. {
  271.     {TalentPoints(faerie_swarm_talent) and Spell(faerie_swarm)}
  272.         or {TalentPoints(faerie_swarm_talent) and Spell(faerie_fire)}
  273. }
  274. AddFunction SavageRoar
  275. {
  276.     if Glyph(GLYPH_OF_SAVAGERY) Spell(SAVAGE_ROAR_GLYPHED)
  277.     if Glyph(GLYPH_OF_SAVAGERY no) and ComboPoints(more 0) Spell(SAVAGE_ROAR_OLD)
  278. }
  279. AddFunction SavageRoarReady
  280. {
  281.     {Glyph(glyph_of_savagery) and Spell(savage_roar_glyphed)}
  282.         or {Glyph(glyph_of_savagery no) and ComboPoints() >0 and Spell(savage_roar)}
  283. }
  284. AddFunction BITWRange
  285. {
  286.     # At this target health percent, Ferocious Bite will automatically refresh Rip on the target.
  287.     target.HealthPercent() <=25
  288. }
  289. AddFunction UsePotion
  290. {
  291.     #virmens_bite_potion
  292.     if CheckBoxOn(potions) and target.Classification(worldboss) Item(virmens_bite_potion)
  293. }
  294.  
  295. #############################
  296. ## Feral rotation functions (Mastery=2) ##
  297. #############################
  298.  
  299. AddFunction NotInCombat
  300. {
  301.     if not InCombat() {
  302.         if BuffExpires(str_agi_int 400 any=1) Spell(MARK_OF_THE_WILD)
  303.         if BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and TalentPoints(DREAM_OF_CENARIUS_TALENT) Spell(HEALING_TOUCH)
  304.         unless Stance(3) Spell(CAT_FORM)
  305.         if BuffRemains(SAVAGE_ROAR) <12 SavageRoar()
  306.         if TalentPoints(FORCE_OF_NATURE_TALENT) Spell(FORCE_OF_NATURE)
  307.     }
  308. }
  309.  
  310. AddFunction FillerActions {
  311.     #thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&combo_points>=5
  312.     if target.DebuffRemains(THRASH_CAT) <3 and target.TimeToDie() >=9 and ComboPoints() >=5 Spell(THRASH_CAT)
  313.     if TalentPoints(INCARNATION_TALENT)
  314.     {
  315.         #ravage
  316.         if BuffPresent(INCARNATION_CAT) Spell(RAVAGE_BANG usable=1)
  317.         Spell(RAVAGE usable=1)
  318.     }
  319.     if not TalentPoints(INCARNATION_TALENT) or BuffExpires(INCARNATION_CAT)
  320.     {
  321.         #shred,if=buff.omen_of_clarity.react&buff.king_of_the_jungle.down
  322.         if BuffPresent(CLEARCASTING) Spell(SHRED)
  323.         #shred,if=buff.berserk.up&buff.king_of_the_jungle.down
  324.         if BuffPresent(BERSERK_CAT) Spell(SHRED)
  325.         #mangle_cat,if=((combo_points<5&dot.rip.remains<3.0)|(combo_points=0&buff.savage_roar.remains<2))&buff.king_of_the_jungle.down
  326.         if {ComboPoints() <5 and target.DebuffRemains(RIP) <3} or {ComboPoints() ==0 and BuffRemains(SAVAGE_ROAR) <2} Spell(MANGLE_CAT)
  327.         #shred,if=buff.king_of_the_jungle.down
  328.         Spell(SHRED)
  329.     }
  330. }
  331.  
  332. AddFunction SpareGcdCooldowns {
  333.     if TalentPoints(FORCE_OF_NATURE_TALENT)
  334.     {
  335.     #treants
  336.     Spell(FORCE_OF_NATURE)
  337.     }
  338.     # Spirit Wolves goes here when symbiosis is supported appropriately.
  339. }
  340.  
  341. # Feral rotation for talent builds with "Dream of Cenarius".
  342.  
  343. AddFunction FillerConditionsDoC
  344. {
  345.     #run_action_list,name=filler,if=buff.omen_of_clarity.react
  346.     if BuffPresent(CLEARCASTING) FillerActions()
  347.     #run_action_list,name=filler,if=(combo_points<5&dot.rip.remains<3)|(combo_points=0&buff.savage_roar.remains<2)
  348.     if {ComboPoints() <5 and target.DebuffRemains(RIP) <3} or {ComboPoints() ==0 and BuffRemains(SAVAGE_ROAR) <2} FillerActions()
  349.     #run_action_list,name=filler,if=buff.predatory_swiftness.remains>1
  350.     if BuffRemains(PREDATORY_SWIFTNESS) >1 FillerActions()
  351.     #run_action_list,name=filler,if=target.time_to_die<=8.5
  352.     if target.TimeToDie() <=8.5 FillerActions()
  353.     #run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up
  354.     if BuffPresent(TIGERS_FURY) or BuffPresent(BERSERK_CAT) FillerActions()
  355.     #run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3
  356.     if SpellCooldown(TIGERS_FURY) <=3 FillerActions()
  357.     #run_action_list,name=filler,if=energy.time_to_max<=1
  358.     if TimeToMaxEnergy() <=1 FillerActions()
  359. }
  360.  
  361. AddFunction MainActionsDoC
  362. {
  363.     #auto_attack
  364.     #healing_touch,if=buff.predatory_swiftness.up&buff.predatory_swiftness.remains<=1.5&buff.dream_of_cenarius_damage.down
  365.     if BuffPresent(PREDATORY_SWIFTNESS) and BuffRemains(PREDATORY_SWIFTNESS) <=1.5 and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) Spell(HEALING_TOUCH)
  366.     #savage_roar,if=buff.savage_roar.down
  367.     if BuffExpires(SAVAGE_ROAR) SavageRoar()
  368.     #faerie_fire,if=debuff.weakened_armor.stack<3
  369.     if target.DebuffStacks(WEAKENED_ARMOR) <3 FaerieFire()
  370.     #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
  371.     if BuffPresent(PREDATORY_SWIFTNESS) and BuffStacks(DREAM_OF_CENARIUS_DAMAGE) <2 and ComboPoints() >=4 Spell(HEALING_TOUCH)
  372.     #healing_touch,if=buff.natures_swiftness.up
  373.     if BuffPresent(NATURES_SWIFTNESS) Spell(HEALING_TOUCH)
  374.     if not target.InRange(MANGLE_CAT) Texture(ability_druid_catformattack)
  375.     #incarnation,if=energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
  376.     #use_item,name=eternal_blossom_grips,sync=tigers_fury
  377.     #tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
  378.     #berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
  379.     if {{Energy() <=35 and BuffExpires(CLEARCASTING)} or BuffPresent(INCARNATION_CAT)} and Spell(TIGERS_FURY)
  380.     {
  381.         if CheckBoxOn(berserk) and Spell(BERSERK_CAT)
  382.         {
  383.             if TalentPoints(INCARNATION_TALENT) Spell(INCARNATION_CAT)
  384.             Spell(BERSERK_CAT)
  385.         }
  386.         Spell(TIGERS_FURY)
  387.     }
  388.     if CheckBoxOn(berserk) and BuffPresent(TIGERS_FURY) Spell(BERSERK_CAT)
  389.     #ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
  390.     if BITWRange() and ComboPoints() >=1 and target.DebuffPresent(RIP) and target.DebuffRemains(RIP) <=3 Spell(FEROCIOUS_BITE)
  391.     #thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
  392.     if target.TimeToDie() >=9 and BuffPresent(CLEARCASTING) and target.DebuffRemains(THRASH_CAT) <3 Spell(THRASH_CAT)
  393.     #ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
  394.     if target.TimeToDie() <=4 and ComboPoints() >=5 Spell(FEROCIOUS_BITE)
  395.     if target.TimeToDie() <=1 and ComboPoints() >=3 Spell(FEROCIOUS_BITE)
  396.     if BITWRange()
  397.     {
  398.         #savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
  399.         if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 SavageRoar()
  400.         if ComboPoints() >=5
  401.         {
  402.             #natures_swiftness,if=buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&target.health.pct<=25
  403.             if TalentPoints(NATURES_SWIFTNESS_TALENT) and BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS) Spell(NATURES_SWIFTNESS)
  404.             #virmens_bite_potion,if=(combo_points>=5&target.health.pct<=25&buff.dream_of_cenarius_damage.up)|target.time_to_die<=40
  405.             if ComboPoints() >=5 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) UsePotion()
  406.             if target.TimeToDie() <=40 UsePotion()
  407.             #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
  408.             # Assume that FB will be 400% normal damage (100% increased damage + crit) to decide if we should overwrite Rip.
  409.             if target.TimeToDie() >30
  410.             {
  411.                 if RipDamageTillDead() > {ExistingRipDamageTillDead() + Damage(FEROCIOUS_BITE) * 4} Spell(RIP)
  412.             }
  413.             #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))
  414.             #ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
  415.             if target.DebuffPresent(RIP)
  416.             {
  417.                 unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
  418.                 wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
  419.             }
  420.         }
  421.     }
  422.     #rip,if=combo_points>=5&target.time_to_die>=6&dot.rip.remains<2&buff.dream_of_cenarius_damage.up
  423.     if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) Spell(RIP)
  424.     #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
  425.     if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <6 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) and RipTickDamageRatio() >=100 Spell(RIP)
  426.     if TalentPoints(NATURES_SWIFTNESS_TALENT)
  427.     {
  428.     #natures_swiftness,if=buff.dream_of_cenarius_damage.down&buff.predatory_swiftness.down&combo_points>=5&dot.rip.remains<3&\
  429.     #    (buff.berserk.up|dot.rip.remains+1.9<=cooldown.tigers_fury.remains)
  430.     if BuffExpires(DREAM_OF_CENARIUS_DAMAGE) and BuffExpires(PREDATORY_SWIFTNESS) and ComboPoints() >=5 and target.DebuffRemains(RIP) <3
  431.     and {BuffPresent(BERSERK_CAT) or target.DebuffRemains(RIP) +1.9 <= SpellCooldown(TIGERS_FURY)}
  432.     {
  433.         Spell(NATURES_SWIFTNESS)
  434.     }
  435.     }
  436.     #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)
  437.     if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2
  438.     {
  439.         if BuffPresent(BERSERK_CAT) Spell(RIP)
  440.         if target.DebuffRemains(RIP) +1.9 <= SpellCooldown(TIGERS_FURY) Spell(RIP)
  441.     }
  442.     #savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
  443.     if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 and {BuffRemains(SAVAGE_ROAR) +2 > target.DebuffRemains(RIP)} SavageRoar()
  444.     #savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains
  445.     if BuffRemains(SAVAGE_ROAR) <=6 and ComboPoints() >=5 and {BuffRemains(SAVAGE_ROAR) +2 <= target.DebuffRemains(RIP)} SavageRoar()
  446.     #pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4.5
  447.     #ferocious_bite,if=combo_points>=5&buff.savage_roar.remains-6>=$(rip_remains)&$(rip_remains)>=4
  448.     if ComboPoints() >=5 and BuffRemains(SAVAGE_ROAR)-6 >= target.DebuffRemains(RIP) and target.DebuffRemains(RIP) >=4
  449.     {
  450.         unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
  451.         wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
  452.     }
  453.     #pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6.5
  454.     #ferocious_bite,if=combo_points>=5&buff.savage_roar.remains+6>=$(rip_remains)&$(rip_remains)>=6
  455.     if ComboPoints() >=5 and BuffRemains(SAVAGE_ROAR)+6 >= target.DebuffRemains(RIP) and target.DebuffRemains(RIP) >=6
  456.     {
  457.         unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
  458.         wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
  459.     }
  460.     #pool_resource,wait=0.1,if=combo_points>=5&((energy<50&buff.berserk.down)|(energy<25&buff.berserk.remains>1))&$(rip_remains)>=10.5
  461.     #ferocious_bite,if=combo_points>=5&$(rip_remains)>=10
  462.     if ComboPoints() >=5 and target.DebuffRemains(RIP) >10
  463.     {
  464.         unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
  465.         wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(FEROCIOUS_BITE)
  466.     }
  467.     #rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<6.0&buff.dream_of_cenarius_damage.up&dot.rake.multiplier<=tick_multiplier
  468.     if target.TimeToDie() >3 and target.DebuffRemains(RAKE) <6 and BuffPresent(DREAM_OF_CENARIUS_DAMAGE) and RakeTickDamageRatio() >=100 Spell(RAKE)
  469.     #rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1.12
  470.     if target.TimeToDie() >3 and RakeTickDamageRatio() >=112 Spell(RAKE)
  471.     #rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<3.0&(buff.berserk.up|(cooldown.tigers_fury.remains+0.8)>=dot.rake.remains|energy>60)
  472.     if target.TimeToDie() >3 and target.DebuffRemains(RAKE) <3 and {BuffPresent(BERSERK_CAT) or Energy(more 60)
  473.         or {SpellCooldown(TIGERS_FURY) +0.8 } >=target.DebuffRemains(RAKE)}
  474.         Spell(RAKE)
  475.     #pool_resource,wait=0.25,for_next=1
  476.     #thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&(dot.rip.remains>=4|buff.berserk.up)
  477.     if target.DebuffRemains(THRASH_CAT) <3 and target.TimeToDie() >=9 and {target.DebuffRemains(RIP) >=4 or BuffPresent(BERSERK_CAT)}
  478.     {
  479.         unless {{BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25}} SpareGcdCooldowns()
  480.         wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(THRASH_CAT)
  481.     }
  482. }
  483.  
  484. # Feral rotation for talent builds without "Dream of Cenarius".
  485.  
  486. AddFunction FillerConditionsNonDoC
  487. {
  488.     #run_action_list,name=filler,if=buff.omen_of_clarity.react
  489.     if BuffPresent(CLEARCASTING) FillerActions()
  490.     #run_action_list,name=filler,if=(combo_points<5&dot.rip.remains<3)|(combo_points=0&buff.savage_roar.remains<2)
  491.     if {ComboPoints() <5 and target.DebuffRemains(RIP) <3} or {ComboPoints() ==0 and BuffRemains(SAVAGE_ROAR) <2} FillerActions()
  492.     #run_action_list,name=filler,if=target.time_to_die<=8.5
  493.     if target.TimeToDie() <=8.5 FillerActions()
  494.     #run_action_list,name=filler,if=buff.tigers_fury.up|buff.berserk.up
  495.     if BuffPresent(TIGERS_FURY) or BuffPresent(BERSERK_CAT) FillerActions()
  496.     #run_action_list,name=filler,if=cooldown.tigers_fury.remains<=3
  497.     if SpellCooldown(TIGERS_FURY) <=3 FillerActions()
  498.     #run_action_list,name=filler,if=energy.time_to_max<=1
  499.     if TimeToMaxEnergy() <=1 FillerActions()
  500.     if TalentPoints(SOUL_OF_THE_FOREST_TALENT)
  501.     {
  502.         #run_action_list,name=filler,if=combo_points<5
  503.         if ComboPoints() <5 FillerActions()
  504.     }
  505. }
  506.  
  507. AddFunction MainActionsNonDoC
  508. {
  509.     #savage_roar,if=buff.savage_roar.down
  510.     if BuffExpires(SAVAGE_ROAR) SavageRoar()
  511.     #faerie_fire,if=debuff.weakened_armor.stack<3
  512.     if target.DebuffStacks(WEAKENED_ARMOR) <3 FaerieFire()
  513.     if not target.InRange(MANGLE_CAT) Texture(ability_druid_catformattack)
  514.     #incarnation,if=energy<=35&!buff.omen_of_clarity.react&cooldown.tigers_fury.remains=0&cooldown.berserk.remains=0
  515.     #use_item,name=eternal_blossom_grips,sync=tigers_fury
  516.     #tigers_fury,if=(energy<=35&!buff.omen_of_clarity.react)|buff.king_of_the_jungle.up
  517.     #berserk,if=buff.tigers_fury.up|(target.time_to_die<15&cooldown.tigers_fury.remains>6)
  518.     if {{Energy() <=35 and BuffExpires(CLEARCASTING)} or BuffPresent(INCARNATION_CAT)} and Spell(TIGERS_FURY)
  519.     {
  520.     if CheckBoxOn(berserk) and Spell(BERSERK_CAT)
  521.     {
  522.        if TalentPoints(INCARNATION_TALENT) Spell(INCARNATION_CAT)
  523.            Spell(BERSERK_CAT)
  524.     }
  525.     Spell(TIGERS_FURY)
  526.     }
  527.     if CheckBoxOn(berserk) and BuffPresent(TIGERS_FURY) Spell(BERSERK_CAT)
  528.     if BuffPresent(BERSERK_CAT) Spell(NATURES_VIGIL)
  529.     #ferocious_bite,if=combo_points>=1&dot.rip.ticking&dot.rip.remains<=3&target.health.pct<=25
  530.     if BITWRange() and ComboPoints() >=1 and target.DebuffPresent(RIP) and target.DebuffRemains(RIP) <=3 Spell(FEROCIOUS_BITE)
  531.     #thrash_cat,if=target.time_to_die>=6&buff.omen_of_clarity.react&dot.thrash_cat.remains<3
  532.     if target.TimeToDie() >=9 and BuffPresent(CLEARCASTING) and target.DebuffRemains(THRASH_CAT) <3 Spell(THRASH_CAT)
  533.     #ferocious_bite,if=(target.time_to_die<=4&combo_points>=5)|(target.time_to_die<=1&combo_points>=3)
  534.     if target.TimeToDie() <=4 and ComboPoints() >=5 Spell(FEROCIOUS_BITE)
  535.     if target.TimeToDie() <=1 and ComboPoints() >=3 Spell(FEROCIOUS_BITE)
  536.     if BITWRange()
  537.     {
  538.         #savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&target.health.pct<25
  539.         if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 SavageRoar()
  540.         #ferocious_bite,if=combo_points>=5&dot.rip.ticking&target.health.pct<=25
  541.         if ComboPoints() >=5 and target.DebuffPresent(RIP) Spell(FEROCIOUS_BITE)
  542.     }
  543.     #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)
  544.     if target.TimeToDie() >=6 and ComboPoints() >=5 and target.DebuffRemains(RIP) <2
  545.     {
  546.         if BuffPresent(BERSERK_CAT) Spell(RIP)
  547.         if target.DebuffRemains(RIP) +1.9 <= SpellCooldown(TIGERS_FURY) Spell(RIP)
  548.     }
  549.     #savage_roar,if=buff.savage_roar.remains<=3&combo_points>0&buff.savage_roar.remains+2>dot.rip.remains
  550.     if BuffRemains(SAVAGE_ROAR) <=3 and ComboPoints() >0 and BuffRemains(SAVAGE_ROAR) +2 > target.DebuffRemains(RIP) SavageRoar()
  551.     #savage_roar,if=buff.savage_roar.remains<=6&combo_points>=5&buff.savage_roar.remains+2<=dot.rip.remains
  552.     if BuffRemains(SAVAGE_ROAR) <=6 and ComboPoints() >=5 and {BuffRemains(SAVAGE_ROAR) +2 <= target.DebuffRemains(RIP)} SavageRoar()
  553.     #ferocious_bite,if=combo_points>=5&(dot.rip.remains>10|(dot.rip.remains>6&buff.berserk.up))&dot.rip.ticking
  554.     if ComboPoints() >=5 and target.DebuffPresent(RIP)
  555.     {
  556.         if target.DebuffRemains(RIP) >10 Spell(FEROCIOUS_BITE)
  557.         if target.DebuffRemains(RIP) >6 and BuffPresent(BERSERK_CAT) Spell(FEROCIOUS_BITE)
  558.     }
  559.     #rake,if=target.time_to_die-dot.rake.remains>3&tick_multiplier%dot.rake.multiplier>1.12
  560.     if target.TimeToDie() >3 and RakeTickDamageRatio() >=112 Spell(RAKE)
  561.     #rake,if=target.time_to_die-dot.rake.remains>3&dot.rake.remains<3.0&(buff.berserk.up|(cooldown.tigers_fury.remains+0.8)>=dot.rake.remains|energy>60)
  562.     if target.TimeToDie() >3 and target.DebuffRemains(RAKE) <3 and {BuffPresent(BERSERK_CAT) or Energy(more 60)
  563.         or {SpellCooldown(TIGERS_FURY) +0.8 } >=target.DebuffRemains(RAKE)}
  564.         Spell(RAKE)
  565.     #pool_resource,wait=0.1,for_next=1
  566.     #thrash_cat,if=dot.thrash_cat.remains<3&target.time_to_die>=6&(dot.rip.remains>=4|buff.berserk.up)
  567.     if target.DebuffRemains(THRASH_CAT) <3 and target.TimeToDie() >=9 and {target.DebuffRemains(RIP) >=4 or BuffPresent(BERSERK_CAT)}
  568.     {
  569.         wait if {BuffExpires(BERSERK_CAT) and Energy() >=50} or {BuffPresent(BERSERK_CAT) and Energy() >=25} Spell(THRASH_CAT)
  570.     }
  571. }
  572.  
  573. AddFunction Prediction
  574. {
  575.    
  576.     if Stance(3) {
  577.         if TalentPoints(dream_of_cenarius_talent)
  578.         {
  579.             MainActionsDoC()
  580.         }
  581.         if not TalentPoints(dream_of_cenarius_talent)
  582.         {
  583.             MainActionsNonDoC()
  584.         }
  585.     }
  586.     if Stance(1) {
  587.         if BuffPresent(HEART_OF_THE_WILD) Spell(FRENZIED_REGEN)
  588.         if not BuffPresent(HEART_OF_THE_WILD) Spell(CAT_FORM)
  589.     }
  590.     if Stance(0) {
  591.         if BuffPresent(HEART_OF_THE_WILD) {
  592.             if BuffExpires(HEART_OF_THE_WILD) Texture(spell_holy_blessingofagility)
  593.         }
  594.         if not BuffPresent(HEART_OF_THE_WILD) Spell(CAT_FORM)
  595.     }
  596.     if Stance(4) or Stance(2) Spell(CAT_FORM)
  597. }
  598.  
  599. #####################
  600. ## Feral icons (Mastery=2) ##
  601. #####################
  602.  
  603. AddIcon help=Rake size=small mastery=2 checkboxon=cooldownsRatio
  604. {
  605.     RakeTickDamageRatio()
  606. }
  607.  
  608. AddIcon help=Rip size=small mastery=2 checkboxon=cooldownsRatio
  609. {
  610.     RipTickDamageRatio()
  611. }
  612.  
  613. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsL {
  614.     if target.InRange(SKULL_BASH_CAT) Spell(SKULL_BASH_CAT)
  615.     if not target.Classification(worldboss)
  616.     {
  617.         if TalentPoints(MIGHTY_BASH_TALENT) and target.InRange(MIGHTY_BASH) Spell(MIGHTY_BASH)
  618.         if TalentPoints(TYPHOON_TALENT) and target.InRange(SKULL_BASH_CAT) Spell(TYPHOON)
  619.         if ComboPoints() >0 and target.InRange(MAIM) Spell(MAIM)
  620.     }
  621.     Spell(WILD_CHARGE)
  622. }
  623.  
  624. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsL { # Berserk Icon
  625.     if BuffPresent(TIGERS_FURY) Spell(BERSERK_CAT)
  626.     if 0s before Spell(BERSERK_CAT) Texture(Ability_mount_polarbear_white)
  627. }
  628.  
  629.  
  630. # Predictive rotation
  631. AddIcon help=predictive size=small mastery=2 checkboxon=altpredictive {
  632.     Prediction()
  633. }
  634.  
  635. AddIcon help=extraCD size=small mastery=2 checkboxon=altpredictive {    
  636.     if TalentPoints(HEART_OF_THE_WILD_TALENT) Spell(HEART_OF_THE_WILD)
  637.     if TalentPoints(DREAM_OF_CENARIUS_TALENT) Spell(NATURES_SWIFTNESS)
  638.     if TalentPoints(NATURES_VIGIL_TALENT) Spell(NATURES_VIGIL)
  639. }
  640.  
  641. # Main rotation
  642. AddIcon help=main mastery=2 {
  643.     NotInCombat()
  644.     if Stance(3) {
  645.         if TalentPoints(dream_of_cenarius_talent)
  646.         {
  647.             MainActionsDoC()
  648.             FillerConditionsDoC()
  649.             SpareGcdCooldowns()
  650.         }
  651.         if not TalentPoints(dream_of_cenarius_talent)
  652.         {
  653.             MainActionsNonDoC()
  654.             FillerConditionsNonDoC()
  655.             SpareGcdCooldowns()
  656.         }
  657.     }
  658.     if Stance(1) {
  659.         if BuffPresent(HEART_OF_THE_WILD) {
  660.             if CheckBoxOff(bearaoe) BearMain()
  661.             if CheckBoxOn(bearaoe) BearMainAOE()
  662.         }
  663.         if not BuffPresent(HEART_OF_THE_WILD) Spell(CAT_FORM)
  664.     }
  665.     if Stance(0) {
  666.         if BuffPresent(HEART_OF_THE_WILD) {
  667.             if CastTime(WRATH) <BuffRemains(HEART_OF_THE_WILD) Spell(WRATH)
  668.             Spell(CAT_FORM)
  669.         }
  670.         if not BuffPresent(HEART_OF_THE_WILD) Spell(CAT_FORM)
  671.     }
  672.     if Stance(4) or Stance(2) Spell(CAT_FORM)
  673. }
  674.  
  675. # Predictive rotation
  676. AddIcon help=predictive mastery=2 checkboxoff=predictive {
  677.     Prediction()
  678. }
  679.  
  680. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rake
  681.     if BuffExpires(SAVAGE_ROAR) Texture(ability_druid_skinteeth)
  682. }
  683. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rip
  684.     if TargetDebuffExpires(RIP) Texture(ability_ghoulfrenzy)
  685. }
  686. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rake
  687.     if TargetDebuffExpires(RAKE) Texture(ability_druid_disembowel)
  688. }
  689. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR {
  690.     Spell(TIGERS_FURY)
  691. }
  692.  
  693. ################################
  694. ## Guardian rotation functions (Mastery=3) ##
  695. ################################
  696.  
  697. AddFunction BearMain {
  698.     Spell(MANGLE_BEAR)
  699.    
  700.     # Debuff maintenance.
  701.     if target.DebuffExpires(WEAKENED_BLOWS 3 any=1) Spell(THRASH_BEAR)
  702.     if target.DebuffExpires(WEAKENED_ARMOR 3 any=1) or target.DebuffStacks(WEAKENED_ARMOR any=1) <3
  703.     {
  704.         FaerieFire()
  705.     }
  706.    
  707.     Spell(LACERATE)
  708.     # Faerie Fire (Bear) bugged until 5.2, resets swing timer.
  709.     #if target.DebuffPresent(THRASH_BEAR 6) FaerieFire()
  710.     Spell(THRASH_BEAR)
  711.     Spell(SWIPE_BEAR)
  712. }
  713.  
  714. AddFunction BearMainAOE {
  715.     Spell(MANGLE_BEAR)
  716.     Spell(THRASH_BEAR)
  717.     Spell(SWIPE_BEAR)
  718. }
  719.  
  720. #######################
  721. ## Guardian icons (Mastery=3) ##
  722. #######################
  723.  
  724. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsL {
  725.     Spell(BARKSKIN)
  726. }
  727.  
  728. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsL {
  729.     if TalentPoints(NATURES_SWIFTNESS_TALENT) Spell(NATURES_SWIFTNESS)
  730.     if TalentPoints(RENEWAL_TALENT) Spell(RENEWAL)
  731.     if TalentPoints(CENARION_WARD_TALENT) Spell(CENARION_WARD)
  732. }
  733.  
  734. AddIcon mastery=3 size=small checkboxon=altpredictive checkboxoff=cooldownsL {
  735.     if Rage(less 11) Spell(ENRAGE useable=1)
  736.     Spell(SAVAGE_DEFENSE usable=1)
  737.     Spell(FRENZIED_REGEN)
  738. }
  739.  
  740. AddIcon mastery=3 size=small checkboxon=altpredictive checkboxoff=cooldownsL {
  741.     if BuffPresent(TOOTH_AND_CLAW) and target.DebuffExpires(TOOTH_AND_CLAW_DEBUFF) Spell(TOOTH_AND_CLAW)
  742.     unless BuffPresent(TOOTH_AND_CLAW) and target.DebuffExpires(TOOTH_AND_CLAW_DEBUFF) Spell(MAUL)
  743. }
  744.  
  745. # Main rotation
  746. AddIcon help=main mastery=3 {
  747.     if InCombat(no) and BuffRemains(str_agi_int any=1) <400 Spell(MARK_OF_THE_WILD)
  748.     if not Stance(1) Spell(BEAR_FORM)
  749.    
  750.     if CheckBoxOff(bearaoe) BearMain()
  751.     if CheckBoxOn(bearaoe) BearMainAOE()
  752. }
  753.  
  754. AddIcon help=defense mastery=3 checkboxoff=altpredictive {
  755.     if Rage(less 11) Spell(ENRAGE useable=1)
  756.     Spell(SAVAGE_DEFENSE usable=1)
  757.     Spell(FRENZIED_REGEN)
  758. }
  759.  
  760. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  761.     Spell(SURVIVAL_INSTINCTS)
  762. }
  763.  
  764. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  765.     Spell(MIGHT_OF_URSOC)
  766. }
  767.  
  768. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  769.     if TalentPoints(INCARNATION_TALENT) Spell(INCARNATION_BEAR)
  770.     if TalentPoints(FORCE_OF_NATURE_TALENT) Spell(FORCE_OF_NATURE)
  771. }
  772.  
  773. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  774.     Spell(BERSERK_BEAR)
  775. }
clone this paste RAW Paste Data