Advertisement
aggixx

Untitled

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