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