@@ -17,6 +17,33 @@ local mmax = math.max
17
17
local mmin = math.min
18
18
local mfloor = math.floor
19
19
20
+ ---- --------------------------------------------------------------------------------------------------------------------
21
+ -- Common profile definition
22
+ ---- --------------------------------------------------------------------------------------------------------------------
23
+
24
+ -- Runeforges
25
+ local runeforging_overrides = {
26
+ charred_passions = {
27
+ runeforge_equipped = false , -- TODO
28
+ },
29
+ }
30
+
31
+ -- Covenants
32
+ local covenant_overrides = {
33
+ weapons_of_order = { -- Kyrian
34
+ SpellIDs = { 310454 }, -- TODO, add aura IDs
35
+ },
36
+ fallen_order = { -- Venthyr
37
+ SpellIDs = { 326860 }, -- TODO, add aura IDs
38
+ },
39
+ bonedust_brew = { -- Necrolord
40
+ SpellIDs = { 325216 }, -- TODO, add aura IDs
41
+ },
42
+ faeline_stomp = { -- Night Fae
43
+ SpellIDs = { 327104 }, -- TODO, add aura IDs
44
+ },
45
+ }
46
+
20
47
---- --------------------------------------------------------------------------------------------------------------------
21
48
-- Brewmaster profile definition
22
49
---- --------------------------------------------------------------------------------------------------------------------
@@ -87,21 +114,99 @@ local brewmaster_base_overrides = {
87
114
end
88
115
end ,
89
116
},
117
+ invoke_niuzao_the_black_ox = {
118
+ CanCast = function (spell , env )
119
+ return env .target .exists
120
+ end ,
121
+ },
122
+ touch_of_death = {
123
+ CanCast = function (spell , env )
124
+ return env .target .exists
125
+ end ,
126
+ },
127
+ purifying_brew = {
128
+ PerformCast = function (spell ,env )
129
+ -- Swap stagger urgency to be down one level, to approximate purification (heavy->moderate, moderate->light)
130
+ if env .stagger_heavy .aura_up then
131
+ env .stagger_moderate .expirationTime = env .stagger_heavy .expirationTime
132
+ env .stagger_heavy .expirationTime = 0
133
+ elseif env .stagger_moderate .aura_up then
134
+ env .stagger_light .expirationTime = env .stagger_moderate .expirationTime
135
+ env .stagger_moderate .expirationTime = 0
136
+ end
137
+ end ,
138
+ },
139
+ elusive_brawler = {
140
+ AuraID = 195630 ,
141
+ AuraUnit = ' player' ,
142
+ AuraMine = true ,
143
+ },
90
144
}
91
145
92
146
local brewmaster_talent_overrides = {
93
147
}
94
148
149
+ local brewmaster_stagger_overrides = {
150
+ stagger = {
151
+ any = function (spell , env ) return spell .light or spell .moderate or spell .heavy or false end ,
152
+ light = function (spell , env ) return (env .stagger_light .aura_remains > 0 ) and true or false end ,
153
+ moderate = function (spell , env ) return (env .stagger_moderate .aura_remains > 0 ) and true or false end ,
154
+ heavy = function (spell , env ) return (env .stagger_heavy .aura_remains > 0 ) and true or false end ,
155
+ total_damage_staggered = function (spell , env )
156
+ return UnitStagger (' player' ) or 0
157
+ end ,
158
+ ticks_remain = function (spell , env )
159
+ return mfloor (spell .aura_remains * 2 ) -- every 0.5 secs, so double the
160
+ end ,
161
+ damage_per_tick = function (spell , env )
162
+ local ticks = spell .ticks_remain
163
+ if ticks <= 0 then return 0 end
164
+ return spell .total_damage_staggered / ticks
165
+ end ,
166
+ aura_remains = function (spell , env )
167
+ return spell .heavy and env .stagger_heavy .aura_remains
168
+ or spell .moderate and env .stagger_moderate .aura_remains
169
+ or spell .light and env .stagger_light .aura_remains
170
+ or 0
171
+ end ,
172
+ },
173
+ stagger_light = {
174
+ AuraID = 124275 ,
175
+ AuraUnit = ' player' ,
176
+ AuraMine = true ,
177
+ },
178
+ stagger_moderate = {
179
+ AuraID = 124274 ,
180
+ AuraUnit = ' player' ,
181
+ AuraMine = true ,
182
+ },
183
+ stagger_heavy = {
184
+ AuraID = 124273 ,
185
+ AuraUnit = ' player' ,
186
+ AuraMine = true ,
187
+ },
188
+ }
189
+
190
+ -- Stagger tick damage accumulator
191
+ for i = 1 ,20 do
192
+ brewmaster_stagger_overrides .stagger [' last_tick_damage_' .. i ] = function (spell , env )
193
+ return spell .damage_per_tick * i
194
+ end
195
+ end
196
+
95
197
TJ :RegisterPlayerClass ({
96
198
name = ' Brewmaster' ,
97
199
class_id = 10 ,
98
200
spec_id = 1 ,
99
201
default_action_profile = ' simc::monk::brewmaster' ,
100
202
resources = { ' energy' , ' chi' },
101
203
actions = {
204
+ runeforging_overrides ,
205
+ covenant_overrides ,
102
206
brewmaster_abilities_exported ,
103
207
brewmaster_base_overrides ,
104
- brewmaster_talent_overrides
208
+ brewmaster_talent_overrides ,
209
+ brewmaster_stagger_overrides
105
210
},
106
211
blacklisted = {
107
212
},
0 commit comments