aggixx

Untitled

Oct 31st, 2012
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.08 KB | None | 0 0
  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 script from Tinderhoof.
  4. # Lots of input and constructs from jlam aka Nerien
  5. # Revision History
  6. # 5.05.12 10/22/2012 Fix bad spell name in Rake conditional (tigers_fury should be TIGERSFURY)
  7. # 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.
  8. # 5.05.10 10/21/2012 4 Piece PvP gear support and Nature's Vigil HT code
  9. # 5.05.9 10/16/2012 Feral Spirit support
  10. # 5.05.8 10/14/2012 Fix 3 second SR to interfere less with Rip for HotW (and NV). 60 seconds for Rake.
  11. # 5.05.7 10/14/2012 Update to latest version of sim script - small changes and Rake improvements
  12. # 5.05.6 10/11/2012 Heart of the Wild support, add out of combat support
  13. # 5.05.6 10/10/2012 Update to limit SR using comb points when DoC is up
  14. # 5.05.5a 10/08/2012 Update to include optimizations in simc script
  15. # 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).
  16. # 5.05.4 09/23/2012 Level 90 script - First complete version
  17. # 5.05.2 09/20/2012 Level 90 script - WiP
  18. # 5.05.1 09/08/2012 First version in Nerien's addon
  19.  
  20. # Shared defines
  21. Define(barkskin 22812)
  22. SpellInfo(barkskin cd=60)
  23. Define(cat_form 768)
  24. SpellAddBuff(cat_form cat_form=1)
  25. Define(cenarion_ward 102351)
  26. SpellInfo(cenarion_ward cd=30)
  27. Define(dream_of_cenarius_damage 108381)
  28. SpellInfo(dream_of_cenarius_damage duration=30 )
  29. SpellAddBuff(dream_of_cenarius_damage dream_of_cenarius_damage=1)
  30. Define(feral_spirit 110807)
  31. Define(force_of_nature 106737)
  32. SpellInfo(force_of_nature cd=60)
  33. Define(healing_touch 5185)
  34. Define(heart_of_the_wild_spell 108292)
  35. SpellInfo(heart_of_the_wild_spell cd=360)
  36. SpellAddBuff(heart_of_the_wild_spell heart_of_the_wild_spell=1)
  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(natures_swiftness 132158)
  41. SpellInfo(natures_swiftness cd=60)
  42. SpellAddBuff(natures_swiftness natures_swiftness=1)
  43. Define(natures_vigil_buff 124974)
  44. SpellInfo(natures_vigil_buff cd=180)
  45. SpellAddBuff(natures_vigil_buff natures_vigil_buff=1)
  46. Define(predatory_swiftness 69369)
  47. SpellAddBuff(predatory_swiftness predatory_swiftness=1)
  48. Define(renewal 108238)
  49. SpellInfo(renewal cd=120 )
  50. Define(treants 106737)
  51. SpellInfo(treants duration=15 cd=60)
  52. Define(tricks 57933)
  53. SpellAddBuff(tricks tricks=1)
  54. Define(wrath 5176)
  55. Define(weakened_armor 113746)
  56. SpellInfo(weakened_armor duration=30)
  57. Define(weakened_blows 115798)
  58. SpellInfo(weakened_blows duration=30)
  59.  
  60. # Talents
  61. Define(natures_swiftness_talent 4)
  62. Define(renewal_talent 5)
  63. Define(cenarion_ward_talent 6)
  64. Define(faerie_swarm 7)
  65. Define(soul_of_the_forest 10)
  66. Define(incarnation_talent 11)
  67. Define(force_of_nature_talent 12)
  68. Define(heart_of_the_wild_talent 16)
  69. Define(dream_of_cenarius_talent 17)
  70. Define(natures_vigil_talent 18)
  71.  
  72. #Buff
  73. Define(CLEARCASTING 16870)
  74.  
  75. #Glyphs
  76. Define(GLYPHOFSHRED 114234)
  77. Define(GLYPHOFSAVAGERY 127540)
  78.  
  79. # cat abilities. Using the convention that constants are CAPs
  80. Define(BERSERK 106951) #cat cd buff
  81. SpellInfo(BERSERK duration=15 cd=180 )
  82. SpellAddBuff(BERSERK BERSERK=1 )
  83. Define(FAERIEFERAL 770) #bear+cat
  84. SpellInfo(FAERIEFERAL duration=300 cd=6)
  85. SpellAddTargetDebuff(FAERIEFERAL FAERIEFERAL=1 weakened_armor=1)
  86. Define(FAERIESWARM 102355) #bear+cat
  87. SpellInfo(FAERIESWARM duration=300 cd=6)
  88. SpellAddTargetDebuff(FAERIESWARM FAERIESWARM=1 weakened_armor=1)
  89. Define(FEROCIOUSBITE 22568) #cat finish 25-50 energy
  90. SpellInfo(FEROCIOUSBITE energy=25 combo=0)
  91. Define(INCARNATIONCAT 102543)
  92. SpellInfo(INCARNATIONCAT duration=30 cd=180 )
  93. Define(MAIM 22570) #cat interrupt
  94. SpellInfo(MAIM cd=10 energy=35 combo=0)
  95. Define(MANGLECAT 33876) #cat bleed+debuff
  96. SpellInfo(MANGLECAT inccounter=ripshreds energy=35 combo=1)
  97. Define(RAKE 1822) #cat bleed
  98. SpellInfo(RAKE combo=1 duration=15 energy=35 tick=3)
  99. SpellInfo(RAKE base=98.13 bonusap=0.31453)
  100. SpellAddTargetDebuff(RAKE RAKE=1)
  101. SpellDamageBuff(RAKE dream_of_cenarius_damage=1.25)
  102. Define(RAVAGE 6785)
  103. SpellInfo(RAVAGE inccounter=ripshreds energy=45 combo=1)
  104. Define(RAVAGEBANG 102545)
  105. SpellInfo(RAVAGEBANG inccounter=ripshreds energy=0 combo=1)
  106. Define(RIP 1079) #cat bleed
  107. SpellInfo(RIP resetcounter=ripshreds duration=16 energy=30 tick=2 combo=0)
  108. SpellInfo(RIP base=112.76 bonuscp=320 bonusapcp=0.0484) # damage coefficients
  109. SpellAddTargetDebuff(RIP RIP=1)
  110. SpellDamageBuff(RIP dream_of_cenarius_damage=1.25)
  111. Define(SAVAGEROAROLD 52610)
  112. SpellInfo(SAVAGEROAROLD duration=18 combo=0 energy=25)
  113. SpellAddBuff(SAVAGEROAROLD SAVAGEROAROLD=1)
  114. Define(SAVAGEROARGLYPHED 127538)
  115. SpellInfo(SAVAGEROARGLYPHED duration=12 combo=-5 energy=25)
  116. SpellAddBuff(SAVAGEROARGLYPHED SAVAGEROARGLYPHED=1)
  117. SpellList(savage_roar_buff 52610 127538)
  118. Define(SHRED 5221) #cat behind
  119. SpellInfo(SHRED inccounter=ripshreds energy=40 combo=1)
  120. Define(SHREDBANG 114236)
  121. SpellInfo(SHREDBANG inccounter=ripshreds energy=40 combo=1)
  122. Define(STAMPEDEBUFF 81022)
  123. SpellAddBuff(STAMPEDEBUFF STAMPEDEBUFF=1)
  124. Define(SKULLBASHCAT 80965) #cat interrupt
  125. SpellInfo(SKULLBASHCAT cd=15 energy=15)
  126. Define(THRASHCAT 106830)
  127. SpellInfo(THRASHCAT duration=15 energy=50 tick=3)
  128. SpellAddTargetDebuff(THRASHCAT THRASHCAT=1 weakened_blows=1)
  129. SpellDamageBuff(THRASHCAT dream_of_cenarius_damage=1.25)
  130. Define(TIGERSFURY 5217) #cat buff
  131. SpellInfo(TIGERSFURY duration=6 energy=-60 cd=30)
  132. SpellAddBuff(TIGERSFURY TIGERSFURY=1)
  133. Define(WILDCHARGE 49376)
  134. SpellInfo(WILDCHARGE cd=15)
  135. Define(HEART_OF_THE_WILD 108288)
  136. SpellInfo(HEART_OF_THE_WILD cd=360 duration=45)
  137.  
  138. # Bear abilities. Using the convention that constants are all CAPs
  139.  
  140. Define(BERSERKBEAR 106952) #cat+bear cd buff
  141. SpellInfo(BERSERKBEAR duration=10 cd=180 )
  142. SpellAddBuff(BERSERKBEAR BERSERKBEAR=1)
  143. Define(ENRAGE 5229)
  144. Define(FRENZIEDREGEN 22842)
  145. Define(INCARNATIONBEAR 102558)
  146. SpellInfo(INCARNATIONBEAR duration=30 cd=180 )
  147. Define(LACERATE 33745)
  148. Define(MANGLEBEAR 33878)
  149. Define(MAUL 6807)
  150. Define(MIGHTOFURSOC 106922)
  151. Define(RENEWAL 108238)
  152. Define(SAVAGEDEFENSE 62606)
  153. Define(SURVIVALINSTINCTS 61336)
  154. Define(SWIPEBEAR 779)
  155. Define(THRASHBEAR 77758)
  156. Define(WILDCHARGEBEAR 102401)
  157. SpellInfo(WILDCHARGEBEAR cd=15)
  158.  
  159. AddCheckBox(cooldownsL "Show Left Rotation Boxes (Feral)" default)
  160. AddCheckBox(cooldownsLG "Show Left Rotation Boxes (Guardian)" default)
  161. AddCheckBox(cooldownsR "Show Right Cooldown Boxes" default)
  162.  
  163. AddCheckBox(bearaoe "Bear AOE Rotation")
  164.  
  165. AddCheckBox(cooldownsRatio "Show Rake and Rip Ratio Boxes" mastery=2)
  166. AddCheckBox(lucioles SpellName(FAERIEFERAL) default mastery=2)
  167. AddCheckBox(berserk "Cat Berserk" default mastery=2)
  168. AddCheckBox(infront "Frontal attack" mastery=2)
  169. AddCheckBox(predictive "Hide predictive box" mastery=2)
  170.  
  171. #
  172. # Mastery=2 Feral cooldown boxes and rotation
  173. #
  174. AddFunction FFF
  175. {
  176. if TalentPoints(faerie_swarm) Spell(FAERIESWARM)
  177. if not TalentPoints(faerie_swarm) Spell(FAERIEFERAL)
  178. }
  179. AddFunction SavageRoar
  180. {
  181. if Glyph(GLYPHOFSAVAGERY) Spell(SAVAGEROARGLYPHED)
  182. if Glyph(GLYPHOFSAVAGERY no) and ComboPoints(more 0) Spell(SAVAGEROAROLD)
  183. }
  184.  
  185. AddFunction TimeUntilTargetIsDead
  186. {
  187. target.TimeToDie()
  188. }
  189.  
  190.  
  191. AddFunction MinRatioForRipOverwrite
  192. {
  193. if {TimeUntilTargetIsDead() >120} 112
  194. if {TimeUntilTargetIsDead() <=120} {{0.002*{180.00-TimeUntilTargetIsDead()}} + 1.00} * 100
  195. }
  196.  
  197. #
  198. # Rake functions
  199. AddFunction RakeTickDamage
  200. {
  201. # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
  202. Damage(RAKE) * {1 + Mastery()/100}
  203. }
  204.  
  205. AddFunction LastRakeTickDamage
  206. {
  207. # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
  208. LastSpellEstimatedDamage(RAKE) * {1 + LastSpellMastery(RAKE)/100}
  209. }
  210.  
  211. AddFunction RakeTickDamageRatio
  212. {
  213. if TargetDebuffPresent(RAKE) {100 * RakeTickDamage()/LastRakeTickDamage()}
  214. unless TargetDebuffPresent(RAKE) 100.0
  215. }
  216.  
  217. #
  218. # Rip functions
  219. AddFunction RipTickDamage
  220. {
  221. # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
  222. Damage(RIP) * {1 + Mastery()/100}
  223. }
  224.  
  225. AddFunction LastRipTickDamage
  226. {
  227. # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
  228. LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP)/100}
  229. }
  230.  
  231. AddFunction RipTickDamageRatio
  232. {
  233. if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
  234. unless TargetDebuffPresent(RIP) 100.0
  235. }
  236.  
  237.  
  238. AddIcon help=Rake size=small mastery=2 checkboxon=cooldownsRatio
  239. {
  240. RakeTickDamageRatio()
  241. }
  242.  
  243. AddIcon help=Rip size=small mastery=2 checkboxon=cooldownsRatio
  244. {
  245. RipTickDamageRatio()
  246. }
  247.  
  248. AddFunction ExtendRip
  249. {
  250. if TalentPoints(incarnation_talent) Spell(RAVAGE usable=1)
  251. if CheckBoxOn(infront) {
  252. if Glyph(GLYPHOFSHRED) and {BuffPresent(TIGERSFURY) or BuffPresent(BERSERK)} Spell(SHRED)
  253. Spell(MANGLECAT)
  254. }
  255. Spell(SHRED)
  256. }
  257.  
  258. AddFunction AddCombo
  259. {
  260. ExtendRip()
  261. }
  262.  
  263.  
  264. AddFunction AddComboWithThrash
  265. {
  266. if ComboPoints() >= 5 and target.DebuffRemains(THRASHCAT) < 6 and TimeUntilTargetIsDead() >=6 Spell(THRASHCAT)
  267. AddCombo()
  268. }
  269.  
  270. AddFunction BITWRange
  271. {
  272. {ArmorSetParts(T13 more 1) and TargetLifePercent(less 60)} or TargetLifePercent(less 25)
  273. }
  274.  
  275. AddFunction ExtendedRipDuration
  276. {
  277. if {target.DebuffPresent(RIP) and Counter(ripshreds) < 3} {{{3-Counter(ripshreds)}*2} + target.DebuffRemains(RIP)}
  278. if {target.DebuffPresent(RIP) and Counter(ripshreds) >= 3} {target.DebuffRemains(RIP)}
  279. }
  280.  
  281. AddFunction EnergyForPredatorySwiftness
  282. {
  283. Energy()+{10*{BuffRemains(predatory_swiftness) -1}}
  284. }
  285.  
  286. AddFunction EnergyForSoul
  287. {
  288. Energy()+{10*{4 - ComboPoints()}}
  289. }
  290.  
  291. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsL {
  292. if TargetIsInterruptible(yes) {
  293. Spell(SKULLBASHCAT)
  294. if ComboPoints(more 1)
  295. Spell(MAIM)
  296. }
  297. Spell(WILDCHARGE)
  298. }
  299.  
  300. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsL { # Berserk Icon
  301. if BuffPresent(TIGERSFURY) Spell(BERSERK)
  302. if 0s before Spell(BERSERK) Texture(Ability_mount_polarbear_white)
  303. }
  304.  
  305. AddFunction NotInCombat
  306. {
  307. if not InCombat() {
  308. if not BuffPresent(str_agi_int any=1) Spell(mark_of_the_wild)
  309. if not BuffPresent(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) Spell(healing_touch)
  310. unless Stance(3) Spell(cat_form)
  311. if BuffRemains(savage_roar_buff) <=1 SavageRoar()
  312. if TalentPoints(force_of_nature_talent) Spell(treants)
  313. }
  314. }
  315. AddFunction StartRotation
  316. {
  317. if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and BuffRemains(predatory_swiftness) <=1.5 and BuffExpires(dream_of_cenarius_damage)
  318. Spell(healing_touch)
  319. if BuffRemains(savage_roar_buff) <=1 SavageRoar()
  320. if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and ComboPoints() >= 4 and BuffStacks(dream_of_cenarius_damage) <2
  321. Spell(healing_touch)
  322. if TalentPoints(dream_of_cenarius_talent) and PreviousSpell(natures_swiftness) Spell(healing_touch)
  323. }
  324.  
  325. AddFunction TFBerserk
  326. {
  327. # TF + Berserk logic - only show Berserk if both are off of cooldown - everyone should macro TF to their Berserk key
  328. if not {BuffPresent(BERSERK) or BuffPresent(CLEARCASTING)} {
  329. if Energy(less 36) and {0s before Spell(TIGERSFURY)} {
  330. if CheckBoxOn(berserk) Spell(BERSERK)
  331. Spell(TIGERSFURY)
  332. }
  333. }
  334.  
  335. #In case Berserk was not cast with TF
  336. if {BuffPresent(TIGERSFURY) or {TimeUntilTargetIsDead() <15 and SpellCooldown(TIGERSFURY) >6 }} and CheckBoxOn(berserk) Spell(BERSERK)
  337. }
  338.  
  339. AddFunction MainRotation
  340. {
  341. # Two conditions for FB during Blood of the Water phase
  342. # Add in FB code for end of fight - only do this is Rip buff is present
  343. if BITWRange() and ComboPoints(more 0) and TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 2.9) Spell(FEROCIOUSBITE)
  344. if CheckBoxOn(lucioles) and target.DebuffStacks(weakened_armor any=1) <3 FFF()
  345.  
  346. if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) and BuffExpires(dream_of_cenarius_damage) Spell(THRASHCAT)
  347.  
  348. # Blood in the water code - mostly for DoC - combined the BITW check to make Ovale more efficient
  349. if BITWRange() {
  350. if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) SavageRoar()
  351. if TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5
  352. Spell(natures_swiftness)
  353. if ComboPoints() >=5 and TimeUntilTargetIsDead() >30 and RipTickDamageRatio() >=114 Spell(RIP)
  354. if TargetDebuffPresent(RIP) and ComboPoints() >=5 Spell(FEROCIOUSBITE)
  355. }
  356.  
  357. if BuffPresent(dream_of_cenarius_damage) and ComboPoints() >=5 and TimeUntilTargetIsDead() >6 and {TargetDebuffExpires(RIP 2) or
  358. {TargetDebuffExpires(RIP 6) and RipTickDamageRatio() >=100 and not BITWRange()}} Spell(RIP)
  359.  
  360. if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) SavageRoar()
  361. if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and not TalentPoints(dream_of_cenarius_talent) {
  362. if not {TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)}} SavageRoar()
  363. }
  364.  
  365. if TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5
  366. and TargetDebuffExpires(RIP) <3 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)} and not BITWRange()
  367. Spell(natures_swiftness)
  368.  
  369. # Time to recast Rip - clip if possible - try to hold off for TF
  370. if ComboPoints() >=5 and TimeUntilTargetIsDead() >=6 and TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)}
  371. Spell(RIP)
  372.  
  373. if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) Spell(THRASHCAT)
  374.  
  375. #Extends Rip with shred/mangle/ravage
  376. if TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 4) and Counter(ripshreds less 3) ExtendRip()
  377.  
  378. if {TimeUntilTargetIsDead() <=4 and ComboPoints() >=5} or {TimeUntilTargetIsDead() <=1 and {{ComboPoints() >=2 and Energy() >=38} or ComboPoints() >=3}}
  379. Spell(FEROCIOUSBITE)
  380.  
  381. if ComboPoints() >=5 and BuffRemains(savage_roar_buff) <=6 and target.DebuffPresent(RIP) and
  382. {{TalentPoints(soul_of_the_forest) and ExtendedRipDuration() > 6} or ExtendedRipDuration() >10} SavageRoar()
  383.  
  384. if ComboPoints() >=5 and target.DebuffPresent(RIP) and {{{TalentPoints(soul_of_the_forest) or BuffPresent(BERSERK)} and ExtendedRipDuration() > 6}
  385. or ExtendedRipDuration() >10} Spell(FEROCIOUSBITE)
  386.  
  387. # clip Rake early if TF is up and rake ramining is less than 9 seconds
  388. if TimeUntilTargetIsDead() >3 and BuffPresent(dream_of_cenarius_damage) and target.DebuffRemains(RAKE) <6 and RakeTickDamageRatio() >=100 Spell(RAKE)
  389. if TimeUntilTargetIsDead() >3 and RakeTickDamageRatio() >=112 Spell(RAKE)
  390. if TimeUntilTargetIsDead() >3 and TargetDebuffExpires(RAKE 2.9) and {BuffPresent(BERSERK) or Energy(more 60)
  391. or {SpellCooldown(TIGERSFURY) +0.8 } >=target.DebuffRemains(RAKE)}
  392. Spell(RAKE)
  393. }
  394.  
  395. AddFunction Fillers
  396. {
  397. # take care of OOC when it was not used for Thrash
  398. if BuffPresent(CLEARCASTING) AddCombo()
  399.  
  400. # use Ravage! before other fillers since it is free
  401. if BuffPresent(STAMPEDEBUFF) Spell(RAVAGEBANG)
  402.  
  403. # aggressive shred for Predatory Swiftness and/or Soul of the Forest
  404. if TalentPoints(dream_of_cenarius_talent) and BuffRemains(predatory_swiftness) >1 and EnergyForPredatorySwiftness() > {{4 - ComboPoints()}*20} AddCombo()
  405. if TalentPoints(soul_of_the_forest) and ComboPoints() <5 and EnergyForSoul() > {{5 - ComboPoints()}*20} and not TalentPoints(dream_of_cenarius_talent) AddCombo()
  406.  
  407. # Shred for combo points for Rip or SR
  408. if ComboPoints(less 5) and TargetDebuffExpires(RIP 3) AddCombo()
  409. if ComboPoints(less 1) and BuffExpires(savage_roar_buff 2) AddCombo()
  410.  
  411. if TimeUntilTargetIsDead() <=8.5 AddCombo()
  412.  
  413. # Shred aggressively for Berserk and TF
  414. if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) AddComboWithThrash()
  415.  
  416. # Shred to burn off energy so we can TF without capping
  417. if { 4s before Spell(TIGERSFURY) } AddComboWithThrash()
  418.  
  419. # Fallback Shred to prevent energy capping
  420. if 1.4s before Energy(more 99) AddComboWithThrash()
  421.  
  422. # Nature's Vigil HTs for extra damage
  423. if BuffPresent(natures_vigil_buff) and not {BuffPresent(BERSERK) or BuffPresent(predatory_swiftness)} Spell(natures_swiftness)
  424. if BuffPresent(natures_vigil_buff) and {BuffPresent(predatory_swiftness) or BuffPresent(natures_swiftness)} and not BuffPresent(BERSERK) Spell(healing_touch)
  425.  
  426. # Feral Spirit
  427. Spell(feral_spirit)
  428.  
  429. # opportunistic FF
  430. if CheckBoxOn(lucioles) and target.DebuffExpires(weakened_armor) <15 and Energy(less 75) FFF()
  431. }
  432.  
  433. # Predictive rotation
  434. AddIcon help=predictive mastery=2 size=small checkboxoff=predictive {
  435. if Stance(3) {
  436. StartRotation()
  437. MainRotation()
  438. }
  439. if Stance(1) {
  440. if BuffPresent(heart_of_the_wild_spell) Spell(FRENZIEDREGEN)
  441. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  442. }
  443. if Stance(0) {
  444. if BuffPresent(heart_of_the_wild_spell) {
  445. if BuffExpires(heart_of_the_wild_spell) Texture(spell_holy_blessingofagility)
  446. }
  447. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  448. }
  449. if Stance(4) or Stance(2) Spell(cat_form)
  450. }
  451.  
  452. AddIcon help=hotw mastery=2 size=small {
  453. if TalentPoints(heart_of_the_wild_talent) Spell(HEART_OF_THE_WILD)
  454. if TalentPoints(dream_of_cenarius_talent) Spell(natures_swiftness)
  455. }
  456.  
  457. # Main rotation
  458. AddIcon help=main mastery=2 {
  459. NotInCombat()
  460. if Stance(3) {
  461. StartRotation()
  462. TFBerserk()
  463. if not TargetInRange(SHRED) Texture(ability_druid_catformattack)
  464. MainRotation()
  465. Fillers()
  466. }
  467. if Stance(1) {
  468. if BuffPresent(heart_of_the_wild_spell) {
  469. if CheckBoxOff(bearaoe) BearMain()
  470. if CheckBoxOn(bearaoe) BearMainAOE()
  471. }
  472. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  473. }
  474. if Stance(0) {
  475. if BuffPresent(heart_of_the_wild_spell) {
  476. if CastTime(wrath) <BuffRemains(heart_of_the_wild_spell) Spell(wrath)
  477. Spell(cat_form)
  478. }
  479. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  480. }
  481. if Stance(4) or Stance(2) Spell(cat_form)
  482. }
  483.  
  484. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rake
  485. if BuffExpires(savage_roar_buff) Texture(ability_druid_skinteeth)
  486. }
  487. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rip
  488. if TargetDebuffExpires(RIP) Texture(ability_ghoulfrenzy)
  489. }
  490. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rake
  491. if TargetDebuffExpires(RAKE ) Texture(ability_druid_disembowel)
  492. }
  493. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR {
  494. Spell(TIGERSFURY)
  495. }
  496.  
  497. #
  498. # Mastery=3 Guardian cooldown boxes and rotation
  499. #
  500. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsLG {
  501. Spell(barkskin)
  502. }
  503.  
  504. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsLG {
  505. if TalentPoints(natures_swiftness_talent) Spell(natures_swiftness)
  506. if TalentPoints(renewal_talent) Spell(RENEWAL)
  507. if TalentPoints(cenarion_ward_talent) Spell(cenarion_ward)
  508. }
  509.  
  510. AddFunction BearMain
  511. {
  512. if 1s before Spell(MANGLEBEAR) Spell(MANGLEBEAR)
  513.  
  514. if not TargetDebuffPresent(weakened_blows any=1) Spell(THRASHBEAR)
  515. if target.DebuffStacks(weakened_armor any=1) <1 FFF()
  516. if TargetDebuffPresent(THRASHBEAR) <4 Spell(THRASHBEAR)
  517.  
  518. Spell(LACERATE)
  519. FFF()
  520. }
  521.  
  522. AddFunction BearMainAOE
  523. {
  524. if 1s before Spell(MANGLEBEAR) Spell(MANGLEBEAR)
  525. Spell(THRASHBEAR)
  526. Spell(SWIPEBEAR)
  527. }
  528.  
  529. # Main rotation
  530. AddIcon help=main mastery=3 {
  531. if CheckBoxOff(bearaoe) BearMain()
  532. if CheckBoxOn(bearaoe) BearMainAOE()
  533. }
  534.  
  535. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  536. Spell(SURVIVALINSTINCTS)
  537. }
  538.  
  539. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  540. Spell(MIGHTOFURSOC)
  541. }
  542.  
  543. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  544. if TalentPoints(incarnation_talent) Spell(INCARNATIONBEAR)
  545. if TalentPoints(force_of_nature_talent) Spell(force_of_nature)
  546. }
  547.  
  548. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  549. Spell(BERSERKBEAR)
  550. }
Advertisement
Add Comment
Please, Sign In to add comment