aggixx

Untitled

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