aggixx

Untitled

Dec 23rd, 2012
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.21 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. Define(URSOLS_VORTEX 102793)
  149. SpellInfo(URSOLS_VORTEX cd=60)
  150. Define(URSOLS_VORTEX 127797)
  151.  
  152. # Bear abilities. Using the convention that constants are all CAPs
  153.  
  154. Define(BERSERKBEAR 106952) #cat+bear cd buff
  155. SpellInfo(BERSERKBEAR duration=10 cd=180 )
  156. SpellAddBuff(BERSERKBEAR BERSERKBEAR=1)
  157. Define(ENRAGE 5229)
  158. Define(FRENZIEDREGEN 22842)
  159. Define(INCARNATIONBEAR 102558)
  160. SpellInfo(INCARNATIONBEAR duration=30 cd=180 )
  161. Define(LACERATE 33745)
  162. Define(MANGLEBEAR 33878)
  163. Define(MAUL 6807)
  164. Define(MIGHTOFURSOC 106922)
  165. Define(RENEWAL 108238)
  166. Define(SAVAGEDEFENSE 62606)
  167. Define(SURVIVALINSTINCTS 61336)
  168. Define(SWIPEBEAR 779)
  169. Define(THRASHBEAR 77758)
  170. Define(WILDCHARGEBEAR 102401)
  171. SpellInfo(WILDCHARGEBEAR cd=15)
  172.  
  173. AddCheckBox(ursol "Ursol's Vortex" mastery=2)
  174.  
  175. AddCheckBox(cooldownsL "Show Left Rotation Boxes" default)
  176. AddCheckBox(cooldownsR "Show Right Cooldown Boxes" default)
  177.  
  178. AddCheckBox(bearaoe "Bear AOE Rotation")
  179. AddCheckBox(alternate "Alternate layout")
  180.  
  181. AddCheckBox(cooldownsRatio "Show Rake and Rip Ratio Boxes" mastery=2)
  182. AddCheckBox(lucioles SpellName(FAERIEFERAL) default mastery=2)
  183. AddCheckBox(berserk "Cat Berserk" default mastery=2)
  184. AddCheckBox(infront "Frontal attack" mastery=2)
  185. AddCheckBox(predictive "Hide predictive box" mastery=2)
  186.  
  187. #
  188. # Mastery=2 Feral cooldown boxes and rotation
  189. #
  190. AddFunction FFF
  191. {
  192. if TalentPoints(faerie_swarm) Spell(FAERIESWARM)
  193. if not TalentPoints(faerie_swarm) Spell(FAERIEFERAL)
  194. }
  195. AddFunction SavageRoar
  196. {
  197. if Glyph(GLYPHOFSAVAGERY) Spell(SAVAGEROARGLYPHED)
  198. if Glyph(GLYPHOFSAVAGERY no) and ComboPoints(more 0) Spell(SAVAGEROAROLD)
  199. }
  200.  
  201. AddFunction TimeUntilTargetIsDead
  202. {
  203. target.TimeToDie()
  204. }
  205.  
  206.  
  207. AddFunction MinRatioForRipOverwrite
  208. {
  209. if {TimeUntilTargetIsDead() >120} 112
  210. if {TimeUntilTargetIsDead() <=120} {{0.002*{180.00-TimeUntilTargetIsDead()}} + 1.00} * 100
  211. }
  212.  
  213. #
  214. # Rake functions
  215. AddFunction RakeTickDamage
  216. {
  217. # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
  218. Damage(RAKE) * {1 + Mastery()/100}
  219. }
  220.  
  221. AddFunction LastRakeTickDamage
  222. {
  223. # rake_tick_damage = (tick_damage + coeff * AP) * damage_multiplier * bleed_multiplier
  224. LastSpellEstimatedDamage(RAKE) * {1 + LastSpellMastery(RAKE)/100}
  225. }
  226.  
  227. AddFunction RakeTickDamageRatio
  228. {
  229. if TargetDebuffPresent(RAKE) {100 * RakeTickDamage()/LastRakeTickDamage()}
  230. unless TargetDebuffPresent(RAKE) 100.0
  231. }
  232.  
  233. #
  234. # Rip functions
  235. AddFunction RipTickDamage
  236. {
  237. # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
  238. Damage(RIP) * {1 + Mastery()/100}
  239. }
  240.  
  241. AddFunction LastRipTickDamage
  242. {
  243. # Damage(rip) == { 113 + (320 * CP) + (0.3872 * AP * CP) } * DamageMultiplier(rip)
  244. LastSpellEstimatedDamage(RIP) * {1 + LastSpellMastery(RIP)/100}
  245. }
  246.  
  247. AddFunction RipTickDamageRatio
  248. {
  249. if TargetDebuffPresent(RIP) {100 * RipTickDamage()/LastRipTickDamage()}
  250. unless TargetDebuffPresent(RIP) 100.0
  251. }
  252.  
  253.  
  254. AddIcon help=Rake size=small mastery=2 checkboxon=cooldownsRatio
  255. {
  256. RakeTickDamageRatio()
  257. }
  258.  
  259. AddIcon help=Rip size=small mastery=2 checkboxon=cooldownsRatio
  260. {
  261. RipTickDamageRatio()
  262. }
  263.  
  264. AddFunction ExtendRip
  265. {
  266. Spell(RAVAGE usable=1)
  267. if CheckBoxOn(ursol) and {Counter(ripshreds more 3) or target.DebuffPresent(URSOLS_VORTEX)} and target.DebuffPresent(RIP) and not BITWRange() and not BuffPresent(CLEARCASTING) Spell(MANGLECAT)
  268. if CheckBoxOn(infront) {
  269. if Glyph(GLYPHOFSHRED) and {BuffPresent(TIGERSFURY) or BuffPresent(BERSERK)} Spell(SHRED)
  270. Spell(MANGLECAT)
  271. }
  272. Spell(SHRED)
  273. }
  274.  
  275. AddFunction AddCombo
  276. {
  277. ExtendRip()
  278. }
  279.  
  280.  
  281. AddFunction AddComboWithThrash
  282. {
  283. if ComboPoints() >= 5 and target.DebuffRemains(THRASHCAT) < 6 and TimeUntilTargetIsDead() >=6 and CheckBoxOff(ursol) Spell(THRASHCAT)
  284. AddCombo()
  285. }
  286.  
  287. AddFunction BITWRange
  288. {
  289. {ArmorSetParts(T13 more 1) and TargetLifePercent(less 60)} or TargetLifePercent(less 25)
  290. }
  291.  
  292. AddFunction ExtendedRipDuration
  293. {
  294. if CheckBoxOn(ursol) {target.DebuffRemains(RIP)}
  295. if {target.DebuffPresent(RIP) and Counter(ripshreds) < 3} {{{3-Counter(ripshreds)}*2} + target.DebuffRemains(RIP)}
  296. if {target.DebuffPresent(RIP) and Counter(ripshreds) >= 3} {target.DebuffRemains(RIP)}
  297. }
  298.  
  299. AddFunction EnergyForPredatorySwiftness
  300. {
  301. Energy()+{10*{BuffRemains(predatory_swiftness) -1}}
  302. }
  303.  
  304. AddFunction EnergyForSoul
  305. {
  306. Energy()+{10*{4 - ComboPoints()}}
  307. }
  308.  
  309. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsL {
  310. if TargetIsInterruptible(yes) {
  311. Spell(SKULLBASHCAT)
  312. if ComboPoints(more 1)
  313. Spell(MAIM)
  314. }
  315. Spell(WILDCHARGE)
  316. }
  317.  
  318. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsL { # Berserk Icon
  319. if BuffPresent(TIGERSFURY) Spell(BERSERK)
  320. if 0s before Spell(BERSERK) Texture(Ability_mount_polarbear_white)
  321. }
  322.  
  323. AddFunction NotInCombat
  324. {
  325. if not InCombat() {
  326. if not BuffPresent(str_agi_int any=1) Spell(mark_of_the_wild)
  327. if not BuffPresent(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) Spell(healing_touch)
  328. unless Stance(3) Spell(cat_form)
  329. if BuffRemains(savage_roar_buff) <=1 SavageRoar()
  330. if TalentPoints(force_of_nature_talent) Spell(treants)
  331. }
  332. }
  333. AddFunction StartRotation
  334. {
  335. if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and BuffRemains(predatory_swiftness) <=1.5 and BuffExpires(dream_of_cenarius_damage)
  336. Spell(healing_touch)
  337. if BuffRemains(savage_roar_buff) <=1 SavageRoar()
  338. if TalentPoints(dream_of_cenarius_talent) and BuffPresent(predatory_swiftness) and ComboPoints() >= 4 and BuffStacks(dream_of_cenarius_damage) <2
  339. Spell(healing_touch)
  340. if TalentPoints(dream_of_cenarius_talent) and PreviousSpell(natures_swiftness) Spell(healing_touch)
  341. }
  342.  
  343. AddFunction TFBerserk
  344. {
  345. # TF + Berserk logic - only show Berserk if both are off of cooldown - everyone should macro TF to their Berserk key
  346. if not {BuffPresent(BERSERK) or BuffPresent(CLEARCASTING)} {
  347. if Energy(less 36) and {0s before Spell(TIGERSFURY)} {
  348. if CheckBoxOn(berserk) Spell(BERSERK)
  349. Spell(TIGERSFURY)
  350. }
  351. }
  352.  
  353. #In case Berserk was not cast with TF
  354. if {BuffPresent(TIGERSFURY) or {TimeUntilTargetIsDead() <15 and SpellCooldown(TIGERSFURY) >6 }} and CheckBoxOn(berserk) Spell(BERSERK)
  355. }
  356.  
  357. AddFunction MainRotation
  358. {
  359. # Two conditions for FB during Blood of the Water phase
  360. # Add in FB code for end of fight - only do this is Rip buff is present
  361. if BITWRange() and ComboPoints(more 0) and TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 2.9) Spell(FEROCIOUSBITE)
  362. if CheckBoxOn(lucioles) and target.DebuffStacks(weakened_armor any=1) <3 FFF()
  363.  
  364. if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) and BuffExpires(dream_of_cenarius_damage) and CheckBoxOff(ursol) Spell(THRASHCAT)
  365.  
  366. # Blood in the water code - mostly for DoC - combined the BITW check to make Ovale more efficient
  367. if BITWRange() {
  368. if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) SavageRoar()
  369. if TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5
  370. Spell(natures_swiftness)
  371. if ComboPoints() >=5 and TimeUntilTargetIsDead() >30 and RipTickDamageRatio() >=114 Spell(RIP)
  372. if TargetDebuffPresent(RIP) and ComboPoints() >=5 Spell(FEROCIOUSBITE)
  373. }
  374.  
  375. if BuffPresent(dream_of_cenarius_damage) and ComboPoints() >=5 and TimeUntilTargetIsDead() >6 and {TargetDebuffExpires(RIP 2) or
  376. {TargetDebuffExpires(RIP 6) and RipTickDamageRatio() >=100 and not BITWRange()}} Spell(RIP)
  377.  
  378. if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and BuffExpires(dream_of_cenarius_damage) and TalentPoints(dream_of_cenarius_talent) SavageRoar()
  379. if BuffRemains(savage_roar_buff) <=3 and ComboPoints(more 0) and not TalentPoints(dream_of_cenarius_talent) {
  380. if not {TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)}} SavageRoar()
  381. }
  382.  
  383. if TalentPoints(dream_of_cenarius_talent) and BuffExpires(dream_of_cenarius_damage) and BuffExpires(predatory_swiftness) and ComboPoints() >=5
  384. and TargetDebuffExpires(RIP) <3 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)} and not BITWRange()
  385. Spell(natures_swiftness)
  386.  
  387. # Time to recast Rip - clip if possible - try to hold off for TF
  388. if ComboPoints() >=5 and TimeUntilTargetIsDead() >=6 and TargetDebuffExpires(RIP) <2 and {BuffPresent(BERSERK) or target.DebuffRemains(RIP)+1.9 <=SpellCooldown(TIGERSFURY)}
  389. Spell(RIP)
  390.  
  391. if TimeUntilTargetIsDead() >=6 and BuffPresent(CLEARCASTING) and TargetDebuffExpires(THRASHCAT 3) and CheckBoxOff(ursol) Spell(THRASHCAT)
  392.  
  393. #Ursol's Vortex exploit lol
  394. if TargetDebuffPresent(RIP) and Counter(ripshreds equal 2) and CheckBoxOn(ursol)
  395. Spell(URSOLS_VORTEX)
  396.  
  397. #Extends Rip with shred/mangle/ravage
  398. if TargetDebuffPresent(RIP) and TargetDebuffExpires(RIP 4) and {Counter(ripshreds less 3) or CheckBoxOn(ursol)} ExtendRip()
  399.  
  400. if {TimeUntilTargetIsDead() <=4 and ComboPoints() >=5} or {TimeUntilTargetIsDead() <=1 and {{ComboPoints() >=2 and Energy() >=38} or ComboPoints() >=3}}
  401. Spell(FEROCIOUSBITE)
  402.  
  403. if ComboPoints() >=5 and BuffRemains(savage_roar_buff) <=6 and target.DebuffPresent(RIP) and
  404. {{TalentPoints(soul_of_the_forest) and ExtendedRipDuration() > 6} or ExtendedRipDuration() >10} SavageRoar()
  405.  
  406. if ComboPoints() >=5 and target.DebuffPresent(RIP) and {{{TalentPoints(soul_of_the_forest) or BuffPresent(BERSERK)} and ExtendedRipDuration() > 6}
  407. or ExtendedRipDuration() >10} Spell(FEROCIOUSBITE)
  408.  
  409. # clip Rake early if TF is up and rake ramining is less than 9 seconds
  410. if TimeUntilTargetIsDead() >3 and BuffPresent(dream_of_cenarius_damage) and target.DebuffRemains(RAKE) <6 and RakeTickDamageRatio() >=100 Spell(RAKE)
  411. if TimeUntilTargetIsDead() >3 and RakeTickDamageRatio() >=112 Spell(RAKE)
  412. if TimeUntilTargetIsDead() >3 and TargetDebuffExpires(RAKE 2.9) and {BuffPresent(BERSERK) or Energy(more 60)
  413. or {SpellCooldown(TIGERSFURY) +0.8 } >=target.DebuffRemains(RAKE)}
  414. Spell(RAKE)
  415. }
  416.  
  417. AddFunction Fillers
  418. {
  419. # take care of OOC when it was not used for Thrash
  420. if BuffPresent(CLEARCASTING) AddCombo()
  421.  
  422. # use Ravage! before other fillers since it is freen
  423.  
  424. # aggressive shred for Predatory Swiftness and/or Soul of the Forest
  425. if TalentPoints(dream_of_cenarius_talent) and BuffRemains(predatory_swiftness) >1 and EnergyForPredatorySwiftness() > {{4 - ComboPoints()}*20} AddCombo()
  426. if TalentPoints(soul_of_the_forest) and ComboPoints() <5 and EnergyForSoul() > {{5 - ComboPoints()}*20} and not TalentPoints(dream_of_cenarius_talent) AddCombo()
  427.  
  428. # Shred for combo points for Rip or SR
  429. if ComboPoints(less 5) and TargetDebuffExpires(RIP 3) AddCombo()
  430. if ComboPoints(less 1) and BuffExpires(savage_roar_buff 2) AddCombo()
  431.  
  432. if TimeUntilTargetIsDead() <=8.5 AddCombo()
  433.  
  434. # Shred aggressively for Berserk and TF
  435. if BuffPresent(BERSERK) or BuffPresent(TIGERSFURY) or BuffPresent(natures_vigil_buff) AddComboWithThrash()
  436.  
  437. # Shred to burn off energy so we can TF without capping
  438. if { 4s before Spell(TIGERSFURY) } AddComboWithThrash()
  439.  
  440. # Fallback Shred to prevent energy capping
  441. if 1.4s before Energy(more 99) AddComboWithThrash()
  442.  
  443. # Nature's Vigil HTs for extra damage
  444. if not BuffPresent(BERSERK) and BuffPresent(natures_vigil_buff) {
  445. if BuffExpires(predatory_swiftness) Spell(natures_swiftness)
  446. if BuffPresent(predatory_swiftness) or BuffPresent(natures_swiftness) Spell(healing_touch)
  447. }
  448.  
  449. # Feral Spirit
  450. if BuffPresent(symbiosis) Spell(feral_spirit)
  451.  
  452. # opportunistic FF
  453. if CheckBoxOn(lucioles) and target.DebuffExpires(weakened_armor) <15 and Energy(less 75) FFF()
  454. }
  455.  
  456. # Predictive rotation (alternative layout)
  457. AddIcon help=predictive mastery=2 checkboxoff=predictive checkboxon=alternative size=small {
  458. if Stance(3) {
  459. StartRotation()
  460. MainRotation()
  461. }
  462. if Stance(1) {
  463. if BuffPresent(heart_of_the_wild_spell) Spell(FRENZIEDREGEN)
  464. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  465. }
  466. if Stance(0) {
  467. if BuffPresent(heart_of_the_wild_spell) {
  468. if BuffExpires(heart_of_the_wild_spell) Texture(spell_holy_blessingofagility)
  469. }
  470. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  471. }
  472. if Stance(4) or Stance(2) Spell(cat_form)
  473. }
  474.  
  475. AddIcon help=hotw mastery=2 size=small checkboxon=alternative {
  476. if TalentPoints(heart_of_the_wild_talent) Spell(HEART_OF_THE_WILD)
  477. if TalentPoints(dream_of_cenarius_talent) Spell(natures_swiftness)
  478. }
  479.  
  480. # Main rotation
  481. AddIcon help=main mastery=2 {
  482. NotInCombat()
  483. if Stance(3) {
  484. StartRotation()
  485. TFBerserk()
  486. if not TargetInRange(SHRED) Texture(ability_druid_catformattack)
  487. MainRotation()
  488. Fillers()
  489. }
  490. if Stance(1) {
  491. if BuffPresent(heart_of_the_wild_spell) {
  492. if CheckBoxOff(bearaoe) BearMain()
  493. if CheckBoxOn(bearaoe) BearMainAOE()
  494. }
  495. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  496. }
  497. if Stance(0) {
  498. if BuffPresent(heart_of_the_wild_spell) {
  499. if CastTime(wrath) <BuffRemains(heart_of_the_wild_spell) Spell(wrath)
  500. Spell(cat_form)
  501. }
  502. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  503. }
  504. if Stance(4) or Stance(2) Spell(cat_form)
  505. }
  506.  
  507. # Predictive rotation
  508. AddIcon help=predictive mastery=2 checkboxoff=predictive checkboxoff=alternative {
  509. if Stance(3) {
  510. StartRotation()
  511. MainRotation()
  512. }
  513. if Stance(1) {
  514. if BuffPresent(heart_of_the_wild_spell) Spell(FRENZIEDREGEN)
  515. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  516. }
  517. if Stance(0) {
  518. if BuffPresent(heart_of_the_wild_spell) {
  519. if BuffExpires(heart_of_the_wild_spell) Texture(spell_holy_blessingofagility)
  520. }
  521. if not BuffPresent(heart_of_the_wild_spell) Spell(cat_form)
  522. }
  523. if Stance(4) or Stance(2) Spell(cat_form)
  524. }
  525.  
  526. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rake
  527. if BuffExpires(savage_roar_buff) Texture(ability_druid_skinteeth)
  528. }
  529. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rip
  530. if TargetDebuffExpires(RIP) Texture(ability_ghoulfrenzy)
  531. }
  532. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR { # Rake
  533. if TargetDebuffExpires(RAKE ) Texture(ability_druid_disembowel)
  534. }
  535. AddIcon help=cd size=small mastery=2 checkboxon=cooldownsR {
  536. Spell(TIGERSFURY)
  537. }
  538.  
  539. #
  540. # Mastery=3 Guardian cooldown boxes and rotation
  541. #
  542. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsL {
  543. Spell(barkskin)
  544. }
  545.  
  546. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsL {
  547. if TalentPoints(natures_swiftness_talent) Spell(natures_swiftness)
  548. if TalentPoints(renewal_talent) Spell(RENEWAL)
  549. if TalentPoints(cenarion_ward_talent) Spell(cenarion_ward)
  550. }
  551.  
  552. AddFunction BearMain
  553. {
  554. if 1.7s before Spell(MANGLEBEAR) Spell(MANGLEBEAR)
  555.  
  556. if not TargetDebuffPresent(weakened_blows any=1) Spell(THRASHBEAR)
  557. if target.DebuffStacks(weakened_armor any=1) <1 FFF()
  558. if TargetDebuffPresent(THRASHBEAR) <4 Spell(THRASHBEAR)
  559.  
  560. Spell(LACERATE)
  561. FFF()
  562. }
  563.  
  564. AddFunction BearMainAOE
  565. {
  566. if 1.7s before Spell(MANGLEBEAR) Spell(MANGLEBEAR)
  567. Spell(THRASHBEAR)
  568. Spell(SWIPEBEAR)
  569. }
  570.  
  571. AddIcon mastery=3 size=small checkboxon=alternate checkboxoff=cooldownsL {
  572. }
  573.  
  574. # Main rotation
  575. AddIcon help=main mastery=3 {
  576. if CheckBoxOff(bearaoe) BearMain()
  577. if CheckBoxOn(bearaoe) BearMainAOE()
  578. }
  579.  
  580. AddIcon help=defense mastery=3 checkboxoff=alternate {
  581. if Rage(less 11) Spell(ENRAGE useable=1)
  582. Spell(SAVAGEDEFENSE usable=1)
  583. Spell(FRENZIEDREGEN)
  584. }
  585.  
  586. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  587. Spell(SURVIVALINSTINCTS)
  588. }
  589.  
  590. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  591. Spell(MIGHTOFURSOC)
  592. }
  593.  
  594. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  595. if TalentPoints(incarnation_talent) Spell(INCARNATIONBEAR)
  596. if TalentPoints(force_of_nature_talent) Spell(force_of_nature)
  597. }
  598.  
  599. AddIcon help=cd size=small mastery=3 checkboxon=cooldownsR {
  600. Spell(BERSERKBEAR)
  601. }
Advertisement
Add Comment
Please, Sign In to add comment