File daybreak.lua changed (mode: 100644) (index 49b6314..a2c4249) |
... |
... |
local function getDefaultButtonSize() |
19 |
19 |
return 28 |
return 28 |
20 |
20 |
end |
end |
21 |
21 |
|
|
22 |
|
local function formatNumber(n) |
|
23 |
|
if n > 1000 then |
|
|
22 |
|
local function formatQuantity(n) |
|
23 |
|
local absn = math.abs(n) |
|
24 |
|
if absn < 1000 then |
|
25 |
|
return tostring(n) |
|
26 |
|
elseif absn < 1000000 then |
24 |
27 |
n = math.floor(n / 1000) |
n = math.floor(n / 1000) |
25 |
28 |
return tostring(n) .. 'K' |
return tostring(n) .. 'K' |
26 |
29 |
else |
else |
|
30 |
|
n = math.floor(n / 1000000) |
|
31 |
|
return tostring(n) .. 'M' |
|
32 |
|
end |
|
33 |
|
end |
|
34 |
|
|
|
35 |
|
local function formatTime(n) |
|
36 |
|
local absn = math.abs(n) |
|
37 |
|
if absn < 60 then |
27 |
38 |
return tostring(n) |
return tostring(n) |
|
39 |
|
elseif absn < 60 * 60 then |
|
40 |
|
n = math.floor(n / 60) |
|
41 |
|
return tostring(n) .. 'm' |
|
42 |
|
elseif absn < 60 * 60 * 24 then |
|
43 |
|
n = math.floor(n / 3600) |
|
44 |
|
return tostring(n) .. 'h' |
|
45 |
|
else |
|
46 |
|
n = math.floor(n / (60 * 60 * 24)) |
|
47 |
|
return tostring(n) .. 'd' |
28 |
48 |
end |
end |
|
49 |
|
|
29 |
50 |
end |
end |
30 |
51 |
|
|
31 |
|
--[[-- |
|
32 |
|
Process timer tick to update remaining aura duration. |
|
33 |
|
The update employs artificial delay to hopefully reduce the memory cost of updates. |
|
34 |
|
@function applyOverlayUpdate |
|
35 |
|
@tparam frame button button to update |
|
36 |
|
@return nothing |
|
37 |
|
]] |
|
38 |
|
local function applyOverlayUpdate(button) |
|
39 |
|
assert (button ~= nil) |
|
|
52 |
|
local function getArchetypeDesignationDuration() |
|
53 |
|
return 1 |
|
54 |
|
end |
40 |
55 |
|
|
41 |
|
local auraName = button.spell |
|
42 |
|
assert (auraName ~= nil) |
|
43 |
|
assert ('string' == type(auraName)) |
|
44 |
|
assert (string.len(auraName) >= 2) |
|
45 |
|
assert (string.len(auraName) <= 256) |
|
|
56 |
|
local function getArchetypeDesignationAbsorption() |
|
57 |
|
return 2 |
|
58 |
|
end |
46 |
59 |
|
|
47 |
|
local unitDesignation = button.unit |
|
48 |
|
assert (unitDesignation ~= nil) |
|
49 |
|
assert ('string' == type(unitDesignation)) |
|
50 |
|
assert (string.len(unitDesignation) >= 2) |
|
51 |
|
assert (string.len(unitDesignation) <= 256) |
|
|
60 |
|
local function getAuraDuration(unitDesignation, auraName, optionalFilter) |
|
61 |
|
local filter = optionalFilter or 'HELPFUL' |
|
62 |
|
local rank = nil |
|
63 |
|
local _, _, _, quantity, _, duration, expirationInstance = UnitAura(unitDesignation, auraName, rank, filter) |
|
64 |
|
quantity = math.min(math.max(0, quantity or 0), 99) |
|
65 |
|
duration = math.min(math.max(0, duration or 0), 60 * 60 * 24 * 365) |
|
66 |
|
expirationInstance = math.max(0, expirationInstance or 0) |
|
67 |
|
local now = GetTime() or 0 |
|
68 |
|
local remainingDuration = math.max(0, math.ceil(expirationInstance - now)) |
|
69 |
|
return remainingDuration or 0, duration or 0, math.floor(quantity or 0) |
|
70 |
|
end |
52 |
71 |
|
|
53 |
|
local filter = button.filter or 'HELPFUL' |
|
54 |
|
local _, _, _, quantity, _, duration, expirationInstance, |
|
55 |
|
_, _, _, _, _, _, absorbtionAmount = UnitAura(unitDesignation, auraName, nil, filter) |
|
56 |
|
quantity = quantity or 0 |
|
57 |
|
assert (quantity ~= nil) |
|
58 |
|
assert ('number' == type(quantity)) |
|
59 |
|
quantity = math.ceil(math.min(math.max(0, quantity), 99)) |
|
60 |
|
|
|
61 |
|
if nil == expirationInstance then |
|
62 |
|
return |
|
|
72 |
|
local function getArtworkTransparency(remainingDuration, duration) |
|
73 |
|
remainingDuration = remainingDuration or 0 |
|
74 |
|
duration = duration or 0 |
|
75 |
|
if duration == 0 then |
|
76 |
|
return 1 |
63 |
77 |
end |
end |
64 |
|
local now = GetTime() |
|
65 |
|
local remainingDuration = math.max(0, math.ceil(expirationInstance - now)) |
|
66 |
|
local isDurationUnlimited = (remainingDuration or 0) == 0 and (duration or 0) == 0 |
|
67 |
|
local t |
|
68 |
|
if button.isAbsorbtionTracker and absorbtionAmount > 0 then |
|
69 |
|
t = formatNumber(absorbtionAmount) |
|
70 |
|
elseif isDurationUnlimited or remainingDuration > 60 then |
|
71 |
|
t = nil |
|
72 |
|
elseif quantity < 2 then |
|
73 |
|
t = tostring(remainingDuration) |
|
74 |
|
elseif quantity > 9 then |
|
75 |
|
t = tostring(remainingDuration) .. "*?" |
|
|
78 |
|
remainingDuration = math.min(remainingDuration, duration) |
|
79 |
|
duration = math.max(remainingDuration, duration) |
|
80 |
|
local a = math.abs(remainingDuration) / math.max(duration, 1) |
|
81 |
|
if a < 0.34 then |
|
82 |
|
return 0.6 |
76 |
83 |
else |
else |
77 |
|
t = tostring(remainingDuration) .. "*" .. tostring(quantity) |
|
|
84 |
|
return 1 |
78 |
85 |
end |
end |
79 |
|
button:SetText(t) |
|
80 |
86 |
end |
end |
81 |
87 |
|
|
82 |
|
local function overlayUpdateProcessor(self, updateDurationSec) |
|
|
88 |
|
local function applyOverlayUpdateDelay(self, updateDurationSec) |
83 |
89 |
assert (self ~= nil) |
assert (self ~= nil) |
84 |
90 |
|
|
85 |
91 |
assert (updateDurationSec ~= nil) |
assert (updateDurationSec ~= nil) |
|
... |
... |
local function overlayUpdateProcessor(self, updateDurationSec) |
97 |
103 |
|
|
98 |
104 |
if updateCooldownDurationSec > 0 then |
if updateCooldownDurationSec > 0 then |
99 |
105 |
self.updateCooldownDurationSec = updateCooldownDurationSec |
self.updateCooldownDurationSec = updateCooldownDurationSec |
100 |
|
return |
|
|
106 |
|
return false |
101 |
107 |
else |
else |
102 |
108 |
updateCooldownDurationSec = 0.084 |
updateCooldownDurationSec = 0.084 |
103 |
109 |
self.updateCooldownDurationSec = updateCooldownDurationSec |
self.updateCooldownDurationSec = updateCooldownDurationSec |
104 |
|
applyOverlayUpdate(self) |
|
|
110 |
|
return true |
105 |
111 |
end |
end |
106 |
112 |
end |
end |
107 |
113 |
|
|
|
114 |
|
local function applyOverlayUpdateArtwork(button) |
|
115 |
|
assert (button ~= nil) |
|
116 |
|
|
|
117 |
|
local auraName = button.spell |
|
118 |
|
assert (auraName ~= nil) |
|
119 |
|
assert ('string' == type(auraName)) |
|
120 |
|
assert (string.len(auraName) >= 2) |
|
121 |
|
assert (string.len(auraName) <= 256) |
|
122 |
|
|
|
123 |
|
local unitDesignation = button.unit |
|
124 |
|
assert (unitDesignation ~= nil) |
|
125 |
|
assert ('string' == type(unitDesignation)) |
|
126 |
|
assert (string.len(unitDesignation) >= 2) |
|
127 |
|
assert (string.len(unitDesignation) <= 256) |
|
128 |
|
|
|
129 |
|
local filter = button.filter or 'HELPFUL' |
|
130 |
|
assert (filter ~= nil) |
|
131 |
|
assert ('string' == type(filter)) |
|
132 |
|
assert (string.len(filter) >= 2) |
|
133 |
|
assert (string.len(filter) <= 256) |
|
134 |
|
|
|
135 |
|
local remainingDuration, duration = getAuraDuration(unitDesignation, auraName, filter) |
|
136 |
|
local a = getArtworkTransparency(remainingDuration, duration) |
|
137 |
|
local artwork = button:GetNormalTexture() |
|
138 |
|
artwork:SetVertexColor(1, 1, 1, a) |
|
139 |
|
return a |
|
140 |
|
end |
|
141 |
|
|
|
142 |
|
local function overlayUpdateProcessorDuration(button, updateDurationSec) |
|
143 |
|
assert (button ~= nil) |
|
144 |
|
if not applyOverlayUpdateDelay(button, updateDurationSec) then |
|
145 |
|
return |
|
146 |
|
end |
|
147 |
|
|
|
148 |
|
local auraName = button.spell |
|
149 |
|
assert (auraName ~= nil) |
|
150 |
|
assert ('string' == type(auraName)) |
|
151 |
|
assert (string.len(auraName) >= 2) |
|
152 |
|
assert (string.len(auraName) <= 256) |
|
153 |
|
|
|
154 |
|
local unitDesignation = button.unit |
|
155 |
|
assert (unitDesignation ~= nil) |
|
156 |
|
assert ('string' == type(unitDesignation)) |
|
157 |
|
assert (string.len(unitDesignation) >= 2) |
|
158 |
|
assert (string.len(unitDesignation) <= 256) |
|
159 |
|
|
|
160 |
|
local filter = button.filter or 'HELPFUL' |
|
161 |
|
assert (filter ~= nil) |
|
162 |
|
assert ('string' == type(filter)) |
|
163 |
|
assert (string.len(filter) >= 2) |
|
164 |
|
assert (string.len(filter) <= 256) |
|
165 |
|
|
|
166 |
|
local remainingDuration, duration, quantity = getAuraDuration(unitDesignation, auraName, filter) |
|
167 |
|
local isDurationUnlimited = (remainingDuration or 0) == 0 and (duration or 0) == 0 |
|
168 |
|
local t |
|
169 |
|
if isDurationUnlimited or remainingDuration > 60 then |
|
170 |
|
t = nil |
|
171 |
|
else |
|
172 |
|
t = formatTime(remainingDuration) |
|
173 |
|
local a = remainingDuration / math.max(duration, 1) |
|
174 |
|
a = a + 0.4 |
|
175 |
|
local artwork = button:GetNormalTexture() |
|
176 |
|
artwork:SetVertexColor(1, 1, 1, a) |
|
177 |
|
end |
|
178 |
|
if quantity > 9 then |
|
179 |
|
t = t .. '*?' |
|
180 |
|
elseif quantity >= 2 and quantity <= 9 then |
|
181 |
|
t = t .. '*' .. quantity |
|
182 |
|
end |
|
183 |
|
button:SetText(t) |
|
184 |
|
|
|
185 |
|
applyOverlayUpdateArtwork(button) |
|
186 |
|
end |
|
187 |
|
|
|
188 |
|
local function overlayUpdateProcessorAbsorption(button, updateDurationSec) |
|
189 |
|
assert (button ~= nil) |
|
190 |
|
if not applyOverlayUpdateDelay(button, updateDurationSec) then |
|
191 |
|
return |
|
192 |
|
end |
|
193 |
|
|
|
194 |
|
local auraName = button.spell |
|
195 |
|
assert (auraName ~= nil) |
|
196 |
|
assert ('string' == type(auraName)) |
|
197 |
|
assert (string.len(auraName) >= 2) |
|
198 |
|
assert (string.len(auraName) <= 256) |
|
199 |
|
|
|
200 |
|
local unitDesignation = button.unit |
|
201 |
|
assert (unitDesignation ~= nil) |
|
202 |
|
assert ('string' == type(unitDesignation)) |
|
203 |
|
assert (string.len(unitDesignation) >= 2) |
|
204 |
|
assert (string.len(unitDesignation) <= 256) |
|
205 |
|
|
|
206 |
|
local filter = button.filter or 'HELPFUL' |
|
207 |
|
assert (filter ~= nil) |
|
208 |
|
assert ('string' == type(filter)) |
|
209 |
|
assert (string.len(filter) >= 2) |
|
210 |
|
assert (string.len(filter) <= 256) |
|
211 |
|
|
|
212 |
|
local _, _, _, _, _, _, _, |
|
213 |
|
_, _, _, _, _, _, absorbtionAmount = UnitAura(unitDesignation, auraName, nil, filter) |
|
214 |
|
local t = formatQuantity(absorbtionAmount) |
|
215 |
|
button:SetText(t) |
|
216 |
|
|
|
217 |
|
applyOverlayUpdateArtwork(button) |
|
218 |
|
end |
|
219 |
|
|
108 |
220 |
--[[-- |
--[[-- |
109 |
221 |
Process reaction to UNIT_AURA event for aura indicator. |
Process reaction to UNIT_AURA event for aura indicator. |
110 |
222 |
When aura disappears from the unit associated with this button, |
When aura disappears from the unit associated with this button, |
|
... |
... |
hide the button. Show it otherwise. |
116 |
228 |
]] |
]] |
117 |
229 |
local function acceptOverlayUnitAura(button, eventCategory) |
local function acceptOverlayUnitAura(button, eventCategory) |
118 |
230 |
assert (button ~= nil) |
assert (button ~= nil) |
|
231 |
|
|
119 |
232 |
assert (eventCategory ~= nil) |
assert (eventCategory ~= nil) |
120 |
233 |
assert ('string' == type(eventCategory)) |
assert ('string' == type(eventCategory)) |
121 |
234 |
assert (string.len(eventCategory) >= 2) |
assert (string.len(eventCategory) >= 2) |
|
... |
... |
local function acceptOverlayUnitAura(button, eventCategory) |
134 |
247 |
assert (string.len(unitDesignation) <= 256) |
assert (string.len(unitDesignation) <= 256) |
135 |
248 |
|
|
136 |
249 |
local filter = button.filter or 'HELPFUL' |
local filter = button.filter or 'HELPFUL' |
|
250 |
|
assert (filter ~= nil) |
|
251 |
|
assert ('string' == type(filter)) |
|
252 |
|
assert (string.len(filter) >= 2) |
|
253 |
|
assert (string.len(filter) <= 256) |
137 |
254 |
local name, _, icon = UnitAura(unitDesignation, auraName, nil, filter) |
local name, _, icon = UnitAura(unitDesignation, auraName, nil, filter) |
138 |
255 |
if name then |
if name then |
|
256 |
|
if button:IsShown() then |
|
257 |
|
--[[ Given update is unnecessary then abort to avoid indicator flicker ]]-- |
|
258 |
|
return |
|
259 |
|
end |
139 |
260 |
--[[ FIXME Apply graphics only once instead of every aura update ]]-- |
--[[ FIXME Apply graphics only once instead of every aura update ]]-- |
140 |
261 |
button:SetNormalTexture(icon) |
button:SetNormalTexture(icon) |
|
262 |
|
local artwork = button:GetNormalTexture() |
|
263 |
|
artwork:SetVertexColor(1, 1, 1, 1) |
141 |
264 |
button:Show() |
button:Show() |
142 |
|
button:SetScript('OnUpdate', overlayUpdateProcessor) |
|
|
265 |
|
|
|
266 |
|
local archetypeDesignation = button.archetypeDesignation or 1 |
|
267 |
|
if 1 == archetypeDesignation then |
|
268 |
|
button:SetScript('OnUpdate', overlayUpdateProcessorDuration) |
|
269 |
|
elseif 2 == archetypeDesignation then |
|
270 |
|
button:SetScript('OnUpdate', overlayUpdateProcessorAbsorption) |
|
271 |
|
end |
143 |
272 |
else |
else |
144 |
273 |
button:Hide() |
button:Hide() |
145 |
274 |
button:SetScript('OnUpdate', nil) |
button:SetScript('OnUpdate', nil) |
|
... |
... |
code line sorting. |
159 |
288 |
@tparam string buttonName |
@tparam string buttonName |
160 |
289 |
@tparam frame parentFrame |
@tparam frame parentFrame |
161 |
290 |
@tparam string filter optional filter keywords forwarded to UnitAura function |
@tparam string filter optional filter keywords forwarded to UnitAura function |
|
291 |
|
@tparam number archetypeDesignation either 1 track duration or 2 track absorption amount |
162 |
292 |
@tparam number size optional button artwork size pixels |
@tparam number size optional button artwork size pixels |
163 |
293 |
@tparam number size optional button artwork padding pixels |
@tparam number size optional button artwork padding pixels |
164 |
294 |
@treturn frame newly allocated button frame instance |
@treturn frame newly allocated button frame instance |
165 |
295 |
]] |
]] |
166 |
296 |
local function createButton(column, row, localizedSpellName, buttonName, parentFrame, |
local function createButton(column, row, localizedSpellName, buttonName, parentFrame, |
167 |
|
filter, size, padding) |
|
|
297 |
|
filter, archetypeDesignation, size, padding) |
168 |
298 |
assert (buttonName ~= nil) |
assert (buttonName ~= nil) |
169 |
299 |
assert ('string' == type(buttonName)) |
assert ('string' == type(buttonName)) |
170 |
300 |
assert (string.len(buttonName) >= 2) |
assert (string.len(buttonName) >= 2) |
|
... |
... |
local function createButton(column, row, localizedSpellName, buttonName, parentF |
177 |
307 |
assert (string.len(localizedSpellName) >= 2) |
assert (string.len(localizedSpellName) >= 2) |
178 |
308 |
assert (string.len(localizedSpellName) <= 256) |
assert (string.len(localizedSpellName) <= 256) |
179 |
309 |
|
|
|
310 |
|
if not archetypeDesignation then |
|
311 |
|
archetypeDesignation = getArchetypeDesignationDuration() |
|
312 |
|
end |
|
313 |
|
|
180 |
314 |
local button = CreateFrame('BUTTON', buttonName, parentFrame) |
local button = CreateFrame('BUTTON', buttonName, parentFrame) |
181 |
315 |
if not padding then |
if not padding then |
182 |
316 |
padding = 4 |
padding = 4 |
|
... |
... |
local function createButton(column, row, localizedSpellName, buttonName, parentF |
200 |
334 |
button.spell = localizedSpellName |
button.spell = localizedSpellName |
201 |
335 |
button.unit = 'player' |
button.unit = 'player' |
202 |
336 |
button.filter = filter or 'HELPFUL' |
button.filter = filter or 'HELPFUL' |
|
337 |
|
button.archetypeDesignation = archetypeDesignation or 1 |
203 |
338 |
|
|
204 |
339 |
button:RegisterEvent('UNIT_AURA') |
button:RegisterEvent('UNIT_AURA') |
205 |
340 |
button:SetScript('OnEvent', acceptOverlayUnitAura) |
button:SetScript('OnEvent', acceptOverlayUnitAura) |
|
... |
... |
local function cycloneEventProcessor(self) |
660 |
795 |
if activeSpellName then |
if activeSpellName then |
661 |
796 |
self.spell = activeSpellName |
self.spell = activeSpellName |
662 |
797 |
self:SetNormalTexture(activeSpellIcon) |
self:SetNormalTexture(activeSpellIcon) |
663 |
|
self:SetScript('OnUpdate', applyOverlayUpdate) |
|
|
798 |
|
self:SetScript('OnUpdate', overlayUpdateProcessorDuration) |
664 |
799 |
self:Show() |
self:Show() |
665 |
800 |
else |
else |
666 |
801 |
self.spell = nil |
self.spell = nil |
|
... |
... |
local function createCycloneButton(column, row, buttonDesignation, parentFrame, |
678 |
813 |
local size = 40 |
local size = 40 |
679 |
814 |
local padding = 8 |
local padding = 8 |
680 |
815 |
local b = createButton(column, row, 'Cyclone', buttonDesignation, parentFrame, |
local b = createButton(column, row, 'Cyclone', buttonDesignation, parentFrame, |
681 |
|
'HARMFUL', size, padding) |
|
|
816 |
|
'HARMFUL', 3, size, padding) |
682 |
817 |
|
|
683 |
818 |
b.unit = 'player' |
b.unit = 'player' |
684 |
819 |
b.auraTable = auraTable |
b.auraTable = auraTable |
|
... |
... |
local function initSerendipity(rootFrame) |
1052 |
1187 |
--[[ Priest general ]]-- |
--[[ Priest general ]]-- |
1053 |
1188 |
createButton(9, 0, 'Inspiration', 'DaybreakOverlayPriestInspiration', rootFrame) |
createButton(9, 0, 'Inspiration', 'DaybreakOverlayPriestInspiration', rootFrame) |
1054 |
1189 |
createButton(9, 1, 'Renew', 'DaybreakOverlayPriestRenew', rootFrame) |
createButton(9, 1, 'Renew', 'DaybreakOverlayPriestRenew', rootFrame) |
1055 |
|
local ill = createButton(9, 2, 'Power Word: Shield', 'DaybreakOverlayPriestPowerWordShield', rootFrame) |
|
1056 |
|
ill.isAbsorbtionTracker = true |
|
|
1190 |
|
local arch = getArchetypeDesignationAbsorption() |
|
1191 |
|
createButton(9, 2, 'Power Word: Shield', 'DaybreakOverlayPriestPowerWordShield', rootFrame, 'HELPFUL', arch) |
1057 |
1192 |
createButton(10, 2, 'Body and Soul', 'DaybreakOverlayPriestBodyAndSoul', rootFrame) |
createButton(10, 2, 'Body and Soul', 'DaybreakOverlayPriestBodyAndSoul', rootFrame) |
1058 |
1193 |
|
|
1059 |
1194 |
--[[ Hide native spell proc indicators that flash in the middle of the screen ]]-- |
--[[ Hide native spell proc indicators that flash in the middle of the screen ]]-- |
|
... |
... |
local function initDaybreak(rootFrame) |
1100 |
1235 |
local auraFrame = CreateFrame('FRAME', 'DaybreakAuraHeader', rootFrame) |
local auraFrame = CreateFrame('FRAME', 'DaybreakAuraHeader', rootFrame) |
1101 |
1236 |
auraFrame:SetSize(16*5, 16*5) |
auraFrame:SetSize(16*5, 16*5) |
1102 |
1237 |
auraFrame:SetPoint('BOTTOMLEFT', 128 + 64, 0) |
auraFrame:SetPoint('BOTTOMLEFT', 128 + 64, 0) |
1103 |
|
createButton(12, 0, 'Concentration Aura', 'DaybreakOverlayPaladinConcentrationAura2', auraFrame, 'HELPFUL', 14, 2) |
|
1104 |
|
createButton(13, 0, 'Crusader Aura', 'DaybreakOverlayPaladinCrusaderAura2', auraFrame, 'HELPFUL', 14, 2) |
|
1105 |
|
createButton(14, 0, 'Devotion Aura', 'DaybreakOverlayPaladinDevotionAura2', auraFrame, 'HELPFUL', 14, 2) |
|
1106 |
|
createButton(12, 1, 'Resistance Aura', 'DaybreakOverlayPaladinResistanceAura2', auraFrame, 'HELPFUL', 14, 2) |
|
1107 |
|
createButton(13, 1, 'Retribution Aura', 'DaybreakOverlayPaladinRetributionAura2', auraFrame, 'HELPFUL', 14, 2) |
|
|
1238 |
|
local ar = getArchetypeDesignationDuration() |
|
1239 |
|
createButton(12, 0, 'Concentration Aura', 'DaybreakOverlayPaladinConcentrationAura2', auraFrame, 'HELPFUL', ar, 14, 2) |
|
1240 |
|
createButton(13, 0, 'Crusader Aura', 'DaybreakOverlayPaladinCrusaderAura2', auraFrame, 'HELPFUL', ar, 14, 2) |
|
1241 |
|
createButton(14, 0, 'Devotion Aura', 'DaybreakOverlayPaladinDevotionAura2', auraFrame, 'HELPFUL', ar, 14, 2) |
|
1242 |
|
createButton(12, 1, 'Resistance Aura', 'DaybreakOverlayPaladinResistanceAura2', auraFrame, 'HELPFUL', ar, 14, 2) |
|
1243 |
|
createButton(13, 1, 'Retribution Aura', 'DaybreakOverlayPaladinRetributionAura2', auraFrame, 'HELPFUL', ar, 14, 2) |
1108 |
1244 |
|
|
1109 |
1245 |
createButton(11, 1, 'Seal of Insight', 'DaybreakOverlayPaladinSealOfInsight', rootFrame, 'PLAYER HELPFUL') |
createButton(11, 1, 'Seal of Insight', 'DaybreakOverlayPaladinSealOfInsight', rootFrame, 'PLAYER HELPFUL') |
1110 |
1246 |
createButton(11, 1, 'Seal of Justice', 'DaybreakOverlayPaladinSealOfJustice', rootFrame, 'PLAYER HELPFUL') |
createButton(11, 1, 'Seal of Justice', 'DaybreakOverlayPaladinSealOfJustice', rootFrame, 'PLAYER HELPFUL') |
|
... |
... |
local function initDaybreak(rootFrame) |
1121 |
1257 |
createButton(9, 2, 'Hand of Protection', 'DaybreakOverlayPaladinHandOfProtection', rootFrame) |
createButton(9, 2, 'Hand of Protection', 'DaybreakOverlayPaladinHandOfProtection', rootFrame) |
1122 |
1258 |
createButton(9, 3, 'Divine Sacrifice', 'DaybreakOverlayPaladinDivineSacrifice', rootFrame) |
createButton(9, 3, 'Divine Sacrifice', 'DaybreakOverlayPaladinDivineSacrifice', rootFrame) |
1123 |
1259 |
createButton(9, 4, 'Aura Mastery', 'DaybreakOverlayPaladinAuraMastery', rootFrame) |
createButton(9, 4, 'Aura Mastery', 'DaybreakOverlayPaladinAuraMastery', rootFrame) |
1124 |
|
local ill =createButton(10, 0, 'Illuminated Healing', 'DaybreakOverlayPaladinIlluminatedHealing', rootFrame) |
|
1125 |
|
ill.isAbsorbtionTracker = true |
|
|
1260 |
|
local arch = getArchetypeDesignationAbsorption() |
|
1261 |
|
createButton(10, 0, 'Illuminated Healing', 'DaybreakOverlayPaladinIlluminatedHealing', rootFrame, 'HELPFUL', arch) |
1126 |
1262 |
createButton(10, 1, 'Conviction', 'DaybreakOverlayPaladinConviction', rootFrame) |
createButton(10, 1, 'Conviction', 'DaybreakOverlayPaladinConviction', rootFrame) |
1127 |
1263 |
createButton(10, 2, 'Power Torrent', 'DaybreakOverlayPaladinPowerTorrent', rootFrame) |
createButton(10, 2, 'Power Torrent', 'DaybreakOverlayPaladinPowerTorrent', rootFrame) |
1128 |
1264 |
createButton(10, 3, 'Surge of Dominance', 'DaybreakOverlayPaladinSurgeOfDominance', rootFrame) |
createButton(10, 3, 'Surge of Dominance', 'DaybreakOverlayPaladinSurgeOfDominance', rootFrame) |