WoWInterface SVN GridStatusRaidDebuffWoTLK

[/] [trunk/] [GridStatusRaidDebuff.lua] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 Arvak-118457
----------------------------------------------------------------
2 Arvak-118457
--      Library
3 Arvak-118457
----------------------------------------------------------------
4 Arvak-118457
local BZ = LibStub("LibBabble-Zone-3.0"):GetLookupTable()
5 Arvak-118457
 
6 Arvak-118457
----------------------------------------------------------------
7 Arvak-118457
--      Local Variables
8 Arvak-118457
----------------------------------------------------------------
9 Arvak-118457
local GetSpellInfo = GetSpellInfo
10 Arvak-118457
local fmt = string.format
11 Arvak-118457
local bit_band = bit.band
12 Arvak-118457
local MemberStatuses = {}
13 Arvak-118457
 
14 Arvak-118457
local debuffColorText = {
15 Arvak-118457
        [1] = "|cff3f8fff",
16 Arvak-118457
        [2] = "|cff008f00",
17 Arvak-118457
        [3] = "|cff8f5f00",
18 Arvak-118457
        [4] = "|cff8f00ff"
19 Arvak-118457
}
20 Arvak-118457
 
21 Arvak-118457
local zone
22 Arvak-118457
local db
23 Arvak-118457
----------------------------------------------------------------
24 Arvak-118457
--      Localization
25 Arvak-118457
----------------------------------------------------------------
26 Arvak-118457
local L = AceLibrary("AceLocale-2.2"):new("GridStatusRaidDebuff")
27 Arvak-118457
L:RegisterTranslations("enUS", function()
28 Arvak-118457
        return {
29 Arvak-118457
                ["Raid Debuff"] = true,
30 Arvak-118457
                ["Option for %s"] = true,
31 Arvak-118457
                ["Color"] = true,
32 Arvak-118457
                ["Color for %s"] = true,
33 Arvak-118457
                ["Color Mode"] = true,
34 Arvak-118457
                ["Normal Debuff"] = true,
35 Arvak-118457
                ["Normal debuff is prior"] = true,
36 Arvak-118457
                ["Stackable Debuff"] = true,
37 Arvak-118457
                ["Stackable debuff is prior"] = true,
38 Arvak-118457
                ["Stack Text Mode"] = true,
39 Arvak-118457
                ["Ignore Current Icon & Show Stackable Debuff"] = true,
40 Arvak-118457
                ["Current Icon"] = true,
41 Arvak-118457
                ["Current Debuff is prior"] = true,
42 Arvak-118457
 
43 Arvak-118457
                ["Zone Name"] = true,
44 Arvak-118457
                ["Enable %s"] = true,
45 Arvak-118457
                ["Debuff Color"] = true,
46 Arvak-118457
                ["Add"] = true,
47 Arvak-118457
                ["Add debuff color"] = true,
48 Arvak-118457
                ["Add debuff color for %s"] = true,
49 Arvak-118457
                ["Modify"] = true,
50 Arvak-118457
                ["Modify debuff color"] = true,
51 Arvak-118457
                ["Modify debuff color for %s"] = true,
52 Arvak-118457
                ["Remove"] = true,
53 Arvak-118457
                ["Remove debuff color"] = true,
54 Arvak-118457
                ["Remove debuff color for %s"] = true,
55 Arvak-118457
 
56 Arvak-118457
        }
57 Arvak-118457
end)
58 Arvak-118457
 
59 Arvak-118457
L:RegisterTranslations("koKR", function()
60 Arvak-118457
        return {
61 Arvak-118457
                ["Raid Debuff"] = "??? ???",
62 Arvak-118457
                ["Option for %s"] = "%s? ??",
63 Arvak-118457
                ["Color"] = "??",
64 Arvak-118457
                ["Color for %s"] = "%s? ??",
65 Arvak-118457
                ["Color Mode"] = "??",
66 Arvak-118457
                ["Normal Debuff"] = "?? ???",
67 Arvak-118457
                ["Normal debuff is prior"] = "?? ??? ??",
68 Arvak-118457
                ["Stackable Debuff"] = "?? ???",
69 Arvak-118457
                ["Stackable debuff is prior"] = "?? ??? ??",
70 Arvak-118457
                ["Stack Text Mode"] = "?? ??",
71 Arvak-118457
                ["Ignore Current Icon & Show Stackable Debuff"] = "?????? ???? ?????? ?????",
72 Arvak-118457
                ["Current Icon"] = "?? ???",
73 Arvak-118457
                ["Current Debuff is prior"] = "?? ???? ???? ?????",
74 Arvak-118457
 
75 Arvak-118457
                ["Zone Name"] = "?? ??",
76 Arvak-118457
                ["Enable %s"] = "%s ???",
77 Arvak-118457
 
78 Arvak-118457
                ["Debuff Color"] = "??? ??",
79 Arvak-118457
                ["Add"] = "??",
80 Arvak-118457
                ["Add debuff color"] = "??? ??? ?????.",
81 Arvak-118457
                ["Add debuff color for %s"] = "%s|r? ??? ??? ?????.",
82 Arvak-118457
                ["Modify"] = "??",
83 Arvak-118457
                ["Modify debuff color"] = "??? ??? ?????.",
84 Arvak-118457
                ["Modify debuff color for %s"] = "%s|r? ??? ??? ?????.",
85 Arvak-118457
                ["Remove"] = "??",
86 Arvak-118457
                ["Remove debuff color"] = "??? ??? ?? ???.",
87 Arvak-118457
                ["Remove debuff color for %s"] = "%s|r? ??? ??? ?????.",
88 Arvak-118457
        }
89 Arvak-118457
end)
90 Arvak-118457
 
91 Arvak-118457
L:RegisterTranslations("zhCN", function()
92 Arvak-118457
        return {
93 Arvak-118457
                ["Raid Debuff"] = "????",
94 Arvak-118457
                ["Option for %s"] = "%s ??",
95 Arvak-118457
                ["Color"] = "??",
96 Arvak-118457
                ["Color for %s"] = "%s ??",
97 Arvak-118457
                ["Color Mode"] = "????",
98 Arvak-118457
                ["Normal Debuff"] = "??debuff",
99 Arvak-118457
                ["Normal debuff is prior"] = "??debuff??",
100 Arvak-118457
                ["Stackable Debuff"] = "???debuff",
101 Arvak-118457
                ["Stackable debuff is prior"] = "???debuff??",
102 Arvak-118457
                ["Stack Text Mode"] = "????????",
103 Arvak-118457
                ["Ignore Current Icon & Show Stackable Debuff"] = "?????debuff???????????",
104 Arvak-118457
                ["Current Icon"] = "??debuff",
105 Arvak-118457
                ["Current Debuff is prior"] = "??debuff??",
106 Arvak-118457
 
107 Arvak-118457
                ["Zone Name"] = "????",
108 Arvak-118457
                ["Enable %s"] = "?? %s",
109 Arvak-118457
                ["Debuff Color"] = "???????",
110 Arvak-118457
                ["Add"] = "??????",
111 Arvak-118457
                ["Add debuff color"] = "??????debuff???????????",
112 Arvak-118457
                ["Add debuff color for %s"] = "?? %s ",
113 Arvak-118457
                ["Modify"] = "????",
114 Arvak-118457
                ["Modify debuff color"] = "???debuff???????????",
115 Arvak-118457
                ["Modify debuff color for %s"] = "?? %s ???",
116 Arvak-118457
                ["Remove"] = "??",
117 Arvak-118457
                ["Remove debuff color"] = "??debuff???????",
118 Arvak-118457
                ["Remove debuff color for %s"] = "?? %s ????????",
119 Arvak-118457
        }
120 Arvak-118457
end)
121 Arvak-118457
 
122 Arvak-118457
L:RegisterTranslations("zhTW", function()
123 Arvak-118457
        return {
124 Arvak-118457
                ["Raid Debuff"] = "????",
125 Arvak-118457
                ["Option for %s"] = "%s ??",
126 Arvak-118457
                ["Color"] = "??",
127 Arvak-118457
                ["Color for %s"] = "%s ???",
128 Arvak-118457
                ["Color Mode"] = "????",
129 Arvak-118457
                ["Normal Debuff"] = "????",
130 Arvak-118457
                ["Normal debuff is prior"] = "????????",
131 Arvak-118457
                ["Stackable Debuff"] = "?????",
132 Arvak-118457
                ["Stackable debuff is prior"] = "?????????",
133 Arvak-118457
                ["Stack Text Mode"] = "??????",
134 Arvak-118457
                ["Ignore Current Icon & Show Stackable Debuff"] = "??????????????",
135 Arvak-118457
                ["Current Icon"] = "????",
136 Arvak-118457
                ["Current Debuff is prior"] = "????????",
137 Arvak-118457
 
138 Arvak-118457
                ["Zone Name"] = "????",
139 Arvak-118457
                ["Enable %s"] = "??%s",
140 Arvak-118457
                ["Debuff Color"] = "????",
141 Arvak-118457
                ["Add"] = "??",
142 Arvak-118457
                ["Add debuff color"] = "??????",
143 Arvak-118457
                ["Add debuff color for %s"] = "?? %s ?????",
144 Arvak-118457
                ["Modify"] = "??",
145 Arvak-118457
                ["Modify debuff color"] = "??????",
146 Arvak-118457
                ["Modify debuff color for %s"] = "?? %s ?????",
147 Arvak-118457
                ["Remove"] = "??",
148 Arvak-118457
                ["Remove debuff color"] = "??????",
149 Arvak-118457
                ["Remove debuff color for %s"] = "?? %s ?????",
150 Arvak-118457
 
151 Arvak-118457
        }
152 Arvak-118457
end)
153 Arvak-118457
 
154 Arvak-118457
----------------------------------------------------------------
155 Arvak-118457
--      Module
156 Arvak-118457
----------------------------------------------------------------
157 Arvak-118457
GSRD = GridStatus:NewModule("GridStatusRaidDebuff")
158 Arvak-118457
 
159 Arvak-118457
local GSRD = GSRD
160 Arvak-118457
GSRD.menuName = L["Raid Debuff"]
161 Arvak-118457
 
162 Arvak-118457
GSRD.options = false
163 Arvak-118457
 
164 Arvak-118457
GSRD.defaultDB = {
165 Arvak-118457
        debug = false,
166 Arvak-118457
        prior_stack = true,
167 Arvak-118457
        stacktext = true,
168 Arvak-118457
 
169 Arvak-118457
        alert_RaidDebuff = {
170 Arvak-118457
                text = L["Raid Debuff"],
171 Arvak-118457
                desc = L["Raid Debuff"],
172 Arvak-118457
                enable = true,
173 Arvak-118457
                color = { r = 1.0, g = 0.0, b = 0.0, a = 1 },
174 Arvak-118457
                priority = 98,
175 Arvak-118457
                range = false,
176 Arvak-118457
        },
177 Arvak-118457
 
178 Arvak-118457
        debuff_list = {
179 Arvak-118457
                [BZ["Naxxramas"]] = {
180 Arvak-118457
                        -- 10m Razuv
181 Arvak-118457
                        [55550] = { -- Jagged Knife
182 Arvak-118457
                                enable = true,
183 Arvak-118457
                                order = 1,
184 Arvak-118457
                        },
185 Arvak-118457
                        -- Maexxna
186 Arvak-118457
                        [28622] = { -- Web Wrap
187 Arvak-118457
                                enable = true,
188 Arvak-118457
                                order = 1,
189 Arvak-118457
                        },
190 Arvak-118457
                        -- Gluth
191 Arvak-118457
                        [28467] = { -- Mortal Wound
192 Arvak-118457
                                enable = true,
193 Arvak-118457
                                order = 1,
194 Arvak-118457
                        },
195 Arvak-118457
                        -- Sapphiron
196 Arvak-118457
                        [28522] = { -- Icebolt
197 Arvak-118457
                                enable = true,
198 Arvak-118457
                                order = 1,
199 Arvak-118457
                        },
200 Arvak-118457
                        -- Kel'Thuzad
201 Arvak-118457
                        [27819] = { -- Detonate Mana
202 Arvak-118457
                                enable = true,
203 Arvak-118457
                                order = 1,
204 Arvak-118457
                        },
205 Arvak-118457
                        [27808] = { -- Frost Blast
206 Arvak-118457
                                enable = true,
207 Arvak-118457
                                order = 1,
208 Arvak-118457
                        },
209 Arvak-118457
                        [29879] = {
210 Arvak-118457
                                enable = true,
211 Arvak-118457
                                order =1,
212 Arvak-118457
                        },
213 Arvak-118457
                },
214 Arvak-118457
                [BZ["The Obsidian Sanctum"]] = {
215 Arvak-118457
                        -- Sartharion debuffs
216 Arvak-118457
                        [56910] = { -- Tail Lash (10)
217 Arvak-118457
                                enable = true,
218 Arvak-118457
                                order = 1,
219 Arvak-118457
                        },
220 Arvak-118457
                        [58957] = { -- Tail Lash (25)
221 Arvak-118457
                                enable = true,
222 Arvak-118457
                                order = 1,
223 Arvak-118457
                        },
224 Arvak-118457
                },
225 Arvak-118457
                [BZ["The Eye of Eternity"]] = {
226 Arvak-118457
                        -- Malygos debuffs
227 Arvak-118457
                },
228 Arvak-118457
 
229 Arvak-118457
                [BZ["Karazhan"]] = {
230 Arvak-118457
                        --Moroes
231 Arvak-118457
                        [37066] = { --Garrote
232 Arvak-118457
                                enable = true,
233 Arvak-118457
                                order = 1,
234 Arvak-118457
                        },
235 Arvak-118457
                        --Maiden
236 Arvak-118457
                        [29522] = { --Holy Fire
237 Arvak-118457
                                enable = true,
238 Arvak-118457
                                order = 4,
239 Arvak-118457
                                debuffType = 1, --1 magic, 2 poison, 3 disease, 4 curse
240 Arvak-118457
                        },
241 Arvak-118457
                        [29511] = { --Repentance
242 Arvak-118457
                                enable = true,
243 Arvak-118457
                                order = 5,
244 Arvak-118457
                                duration = 12,
245 Arvak-118457
                        },
246 Arvak-118457
                        --Opera : Bigbad wolf
247 Arvak-118457
                        [30753] = { -- Red riding hood
248 Arvak-118457
                                enable = true,
249 Arvak-118457
                                order = 6,
250 Arvak-118457
                                duration = 20,
251 Arvak-118457
                        },
252 Arvak-118457
                        --Illhoof
253 Arvak-118457
                        [30115] = { --sacrifice
254 Arvak-118457
                                enable = true,
255 Arvak-118457
                                order = 7,
256 Arvak-118457
                        },
257 Arvak-118457
                        --Malche
258 Arvak-118457
                        [30843]= { --Enfeeble
259 Arvak-118457
                                enable = true,
260 Arvak-118457
                                order = 8,
261 Arvak-118457
                        },
262 Arvak-118457
                },
263 Arvak-118457
                [BZ["Zul'Aman"]] = {
264 Arvak-118457
                        --Nalorakk
265 Arvak-118457
                        [42389] = { --Mangle
266 Arvak-118457
                                enable = true,
267 Arvak-118457
                                order = 1,
268 Arvak-118457
                        },
269 Arvak-118457
                        --Akilzon
270 Arvak-118457
                        [43657] = { --Electrical Storm
271 Arvak-118457
                                enable = true,
272 Arvak-118457
                                order = 2,
273 Arvak-118457
                        },
274 Arvak-118457
                        [43622] = { --Static Distruption
275 Arvak-118457
                                enable = true,
276 Arvak-118457
                                order = 3,
277 Arvak-118457
                        },
278 Arvak-118457
                        --Zanalai
279 Arvak-118457
                        [43299] = { --Flame Buffet
280 Arvak-118457
                                enable = true,
281 Arvak-118457
                                order = 4,
282 Arvak-118457
                                debuffType = 1,
283 Arvak-118457
                        },
284 Arvak-118457
                        --halazzi
285 Arvak-118457
                        [43303] = { --Flame Shock
286 Arvak-118457
                                enable = true,
287 Arvak-118457
                                order = 5,
288 Arvak-118457
                                debuffType = 1,
289 Arvak-118457
                        },
290 Arvak-118457
                        --hex lord
291 Arvak-118457
                        [43613] = { --Cold Stare
292 Arvak-118457
                                enable = true,
293 Arvak-118457
                                order = 6,
294 Arvak-118457
                                debuffType = 4,
295 Arvak-118457
                        },
296 Arvak-118457
                        [43501] = { --Siphon soul
297 Arvak-118457
                                enable = true,
298 Arvak-118457
                                order = 7,
299 Arvak-118457
                        },
300 Arvak-118457
                        --Zulzin
301 Arvak-118457
                        [43093] = { --Throw
302 Arvak-118457
                                enable = true,
303 Arvak-118457
                                order = 8,
304 Arvak-118457
                        },
305 Arvak-118457
                        [43095] = { --Paralyze
306 Arvak-118457
                                enable = true,
307 Arvak-118457
                                order = 9,
308 Arvak-118457
                        },
309 Arvak-118457
                        [43150] = { --Rage
310 Arvak-118457
                                enable = true,
311 Arvak-118457
                                order = 10,
312 Arvak-118457
                        },
313 Arvak-118457
                },
314 Arvak-118457
                [BZ["Serpentshrine Cavern"]] = {
315 Arvak-118457
                        -- Trash
316 Arvak-118457
                        [39042] = { --Rampent Infection
317 Arvak-118457
                                enable = true,
318 Arvak-118457
                                debuffType = 3,
319 Arvak-118457
                                order = 1,
320 Arvak-118457
                        },
321 Arvak-118457
                        [39044] = { --Serpentshrine Parasite
322 Arvak-118457
                                enable = true,
323 Arvak-118457
                                order = 2,
324 Arvak-118457
                                duration = 10,
325 Arvak-118457
                        },
326 Arvak-118457
                        --Hydross
327 Arvak-118457
                        [38235] = { --Water Tomb
328 Arvak-118457
                                enable = true,
329 Arvak-118457
                                order = 3,
330 Arvak-118457
                                duration = 4,
331 Arvak-118457
                        },
332 Arvak-118457
                        [38246] = { --Vile Sludge
333 Arvak-118457
                                enable = true,
334 Arvak-118457
                                order = 4,
335 Arvak-118457
                        },
336 Arvak-118457
                        --Morogrim
337 Arvak-118457
                        [37850] = { --Watery Grave
338 Arvak-118457
                                enable = true,
339 Arvak-118457
                                order = 5,
340 Arvak-118457
                                duration = 6,
341 Arvak-118457
                        },
342 Arvak-118457
                        [38023] = {
343 Arvak-118457
                                delegater = 37850,
344 Arvak-118457
                        },
345 Arvak-118457
                        [38024] = {
346 Arvak-118457
                                delegater = 37850,
347 Arvak-118457
                        },
348 Arvak-118457
                        [38025] = {
349 Arvak-118457
                                delegater = 37850,
350 Arvak-118457
                        },
351 Arvak-118457
                        --Leotheras
352 Arvak-118457
                        [37676] = { --insidious whisper
353 Arvak-118457
                                enable = true,
354 Arvak-118457
                                order = 6,
355 Arvak-118457
                        },
356 Arvak-118457
                        [37641] = { --Whirl wind
357 Arvak-118457
                                enable = true,
358 Arvak-118457
                                order = 7,
359 Arvak-118457
                                duration = 15,
360 Arvak-118457
                        },
361 Arvak-118457
                        [37749] = { --Madness
362 Arvak-118457
                                enable = true,
363 Arvak-118457
                                order = 8,
364 Arvak-118457
                        },
365 Arvak-118457
                        --Vashj
366 Arvak-118457
                        [38280] = { --Static Charge
367 Arvak-118457
                                enable = true,
368 Arvak-118457
                                order = 9,
369 Arvak-118457
                                duration = 20,
370 Arvak-118457
                        },
371 Arvak-118457
                },
372 Arvak-118457
                [BZ["Tempest Keep"]] = {
373 Arvak-118457
                        --Trash
374 Arvak-118457
                        [37123] = { --Saw Blade
375 Arvak-118457
                                enable = true,
376 Arvak-118457
                                order = 1,
377 Arvak-118457
                        },
378 Arvak-118457
                        [37120] = { --Fragmentation Bomb
379 Arvak-118457
                                enable = true,
380 Arvak-118457
                                order = 2,
381 Arvak-118457
                        },
382 Arvak-118457
                        [37118] = { --Shell Shock
383 Arvak-118457
                                enable = true,
384 Arvak-118457
                                order = 3,
385 Arvak-118457
                        },
386 Arvak-118457
                        --Solarian
387 Arvak-118457
                        [42783] = { --Wrath of the Astromancer
388 Arvak-118457
                                enable = true,
389 Arvak-118457
                                order = 4,
390 Arvak-118457
                                duration = 6,
391 Arvak-118457
                        },
392 Arvak-118457
                        --Kaeltahas
393 Arvak-118457
                        [37027] = { --Remote Toy
394 Arvak-118457
                                enable = true,
395 Arvak-118457
                                order = 5,
396 Arvak-118457
                        },
397 Arvak-118457
                        [36798] = { --Mind Control
398 Arvak-118457
                                enable = true,
399 Arvak-118457
                                order = 6,
400 Arvak-118457
                        },
401 Arvak-118457
                },
402 Arvak-118457
                [BZ["Hyjal Summit"]] = {
403 Arvak-118457
                        --Winterchill
404 Arvak-118457
                        [31249] = { --Ice Bolt
405 Arvak-118457
                                enable = true,
406 Arvak-118457
                                order = 1,
407 Arvak-118457
                                duration = 4,
408 Arvak-118457
                        },
409 Arvak-118457
                        --Aneteron
410 Arvak-118457
                        [31306] = { --Carrion Swarm
411 Arvak-118457
                                enable = true,
412 Arvak-118457
                                order = 2,
413 Arvak-118457
                                duration = 20,
414 Arvak-118457
                        },
415 Arvak-118457
                        [31298] = { --Sleep
416 Arvak-118457
                                enable = true,
417 Arvak-118457
                                order = 3,
418 Arvak-118457
                                duration = 10,
419 Arvak-118457
                        },
420 Arvak-118457
                        --Azgalor
421 Arvak-118457
                        [31347] = { --Doom
422 Arvak-118457
                                enable = true,
423 Arvak-118457
                                order = 4,
424 Arvak-118457
                                duration = 20,
425 Arvak-118457
                        },
426 Arvak-118457
                        [31341] = { --Unquenchable Flames
427 Arvak-118457
                                enable = true,
428 Arvak-118457
                                order = 5,
429 Arvak-118457
                                duration = 5,
430 Arvak-118457
                        },
431 Arvak-118457
                        [31344] = { --Howl of Azgalor
432 Arvak-118457
                                enable = true,
433 Arvak-118457
                                order = 6,
434 Arvak-118457
                                duration = 5,
435 Arvak-118457
                        },
436 Arvak-118457
                        --Achimonde
437 Arvak-118457
                        [31944] = { --Doomfire
438 Arvak-118457
                                enable = true,
439 Arvak-118457
                                order = 8,
440 Arvak-118457
                                duration = 45,
441 Arvak-118457
                        },
442 Arvak-118457
                        [31972] = { --Grip
443 Arvak-118457
                                enable = true,
444 Arvak-118457
                                order = 9,
445 Arvak-118457
                                debuffType = 4,
446 Arvak-118457
                        },
447 Arvak-118457
                },
448 Arvak-118457
                [BZ["Black Temple"]] = {
449 Arvak-118457
                        --Trash
450 Arvak-118457
                        [34654] = { --Blind
451 Arvak-118457
                                enable = true,
452 Arvak-118457
                                order = 1,
453 Arvak-118457
                                debuffType = 1,
454 Arvak-118457
                                duration = 10,
455 Arvak-118457
                        },
456 Arvak-118457
                        [39674] = { --Banish
457 Arvak-118457
                                enable = true,
458 Arvak-118457
                                order = 2,
459 Arvak-118457
                                duration = 15,
460 Arvak-118457
                        },
461 Arvak-118457
                        [41150] = { --Fear
462 Arvak-118457
                                enable = true,
463 Arvak-118457
                                order = 3,
464 Arvak-118457
                                debuffType = 1,
465 Arvak-118457
                                duration = 3,
466 Arvak-118457
                        },
467 Arvak-118457
                        [41168] = { --Sonic Strike
468 Arvak-118457
                                enable = true,
469 Arvak-118457
                                order = 4,
470 Arvak-118457
                                duration = 5,
471 Arvak-118457
                        },
472 Arvak-118457
                        --Najentus
473 Arvak-118457
                        [39837] = { --Impaling Spine
474 Arvak-118457
                                enable = true,
475 Arvak-118457
                                order = 10,
476 Arvak-118457
                        },
477 Arvak-118457
                        --Terron
478 Arvak-118457
                        [40239] = { --Incinerate
479 Arvak-118457
                                enable = true,
480 Arvak-118457
                                order = 20,
481 Arvak-118457
                                debuffType = 1,
482 Arvak-118457
                                duration = 3,
483 Arvak-118457
                        },
484 Arvak-118457
                        [40251] = { --Shadow of death
485 Arvak-118457
                                enable = true,
486 Arvak-118457
                                order = 30,
487 Arvak-118457
                                duration = 55,
488 Arvak-118457
                        },
489 Arvak-118457
                        --Gurtogg
490 Arvak-118457
                        [40604] = { --FelRage
491 Arvak-118457
                                enable = true,
492 Arvak-118457
                                order = 40,
493 Arvak-118457
                                duration = 30,
494 Arvak-118457
                        },
495 Arvak-118457
                        [40481] = { --Acidic Wound
496 Arvak-118457
                                enable = true,
497 Arvak-118457
                                order = 41,
498 Arvak-118457
                                stackable = true,
499 Arvak-118457
                                duration = 60,
500 Arvak-118457
                        },
501 Arvak-118457
                        [40508] = { --Fel-Acid Breath
502 Arvak-118457
                                enable = true,
503 Arvak-118457
                                order = 42,
504 Arvak-118457
                                duration = 20,
505 Arvak-118457
                        },
506 Arvak-118457
                        [42005] = { --bloodboil
507 Arvak-118457
                                enable = true,
508 Arvak-118457
                                order = 43,
509 Arvak-118457
                                stackable = true,
510 Arvak-118457
                                duration = 24,
511 Arvak-118457
                        },
512 Arvak-118457
                        --ROS
513 Arvak-118457
                        [41303] = { --soulDrain
514 Arvak-118457
                                enable = true,
515 Arvak-118457
                                order = 50,
516 Arvak-118457
                        },
517 Arvak-118457
                        [41410] = { --Deaden
518 Arvak-118457
                                enable = true,
519 Arvak-118457
                                order = 51,
520 Arvak-118457
                                duration = 10,
521 Arvak-118457
                        },
522 Arvak-118457
                        [41376] = { --Spite
523 Arvak-118457
                                enable = true,
524 Arvak-118457
                                order = 52,
525 Arvak-118457
                                duration = 6,
526 Arvak-118457
                        },
527 Arvak-118457
                        --Mother
528 Arvak-118457
                        [40860] = { --Vile Beam
529 Arvak-118457
                                enable = true,
530 Arvak-118457
                                order = 60,
531 Arvak-118457
                                duration = 8,
532 Arvak-118457
                        },
533 Arvak-118457
                        [41001] = { --Attraction
534 Arvak-118457
                                enable = true,
535 Arvak-118457
                                order = 61,
536 Arvak-118457
                        },
537 Arvak-118457
                        --Council
538 Arvak-118457
                        [41485] = { --Deadly Poison
539 Arvak-118457
                                enable = true,
540 Arvak-118457
                                order = 70,
541 Arvak-118457
                                duration = 4,
542 Arvak-118457
                        },
543 Arvak-118457
                        [41472] = { --Wrath
544 Arvak-118457
                                enable = true,
545 Arvak-118457
                                order = 71,
546 Arvak-118457
                                duration = 8,
547 Arvak-118457
                        },
548 Arvak-118457
                        --Illiidan
549 Arvak-118457
                        [41914] = { --Parasitic Shadowfiend
550 Arvak-118457
                                enable = true,
551 Arvak-118457
                                order = 80,
552 Arvak-118457
                                duration = 10,
553 Arvak-118457
                        },
554 Arvak-118457
                        [41917] = {
555 Arvak-118457
                                delegater = 41914,
556 Arvak-118457
                        },
557 Arvak-118457
                        [40585] = { --Dark Barrage
558 Arvak-118457
                                enable = true,
559 Arvak-118457
                                order = 81,
560 Arvak-118457
                                duration = 10,
561 Arvak-118457
                        },
562 Arvak-118457
                        [41032] = { --Shear
563 Arvak-118457
                                enable = true,
564 Arvak-118457
                                order = 82,
565 Arvak-118457
                        },
566 Arvak-118457
                        [40932] = { --Flames
567 Arvak-118457
                                enable = true,
568 Arvak-118457
                                order = 83,
569 Arvak-118457
                                duration = 60,
570 Arvak-118457
                        },
571 Arvak-118457
                },
572 Arvak-118457
                [BZ["Sunwell Plateau"]] = {
573 Arvak-118457
                        --Trash
574 Arvak-118457
                        [46561] = { --Fear
575 Arvak-118457
                                enable = true,
576 Arvak-118457
                                order = 1,
577 Arvak-118457
                                debuffType = 1,
578 Arvak-118457
                        },
579 Arvak-118457
                        [46562] = { --Mind Flay
580 Arvak-118457
                                enable = true,
581 Arvak-118457
                                order = 2,
582 Arvak-118457
                        },
583 Arvak-118457
                        [46266] = { --Burn Mana
584 Arvak-118457
                                enable = true,
585 Arvak-118457
                                order = 3,
586 Arvak-118457
                                debuffType = 1,
587 Arvak-118457
                        },
588 Arvak-118457
                        [46557] = { --Slaying Shot
589 Arvak-118457
                                enable = true,
590 Arvak-118457
                                order = 4,
591 Arvak-118457
                        },
592 Arvak-118457
                        [46560] = { --Shadow Word: Pain
593 Arvak-118457
                                enable = true,
594 Arvak-118457
                                order = 5,
595 Arvak-118457
                                debuffType = 1,
596 Arvak-118457
                        },
597 Arvak-118457
                        [46543] = { --Ignite Mana
598 Arvak-118457
                                enable = true,
599 Arvak-118457
                                order = 6,
600 Arvak-118457
                                debuffType = 1,
601 Arvak-118457
                        },
602 Arvak-118457
                        [46427] = { --Domination
603 Arvak-118457
                                enable = true,
604 Arvak-118457
                                order = 7,
605 Arvak-118457
                                debuffType = 1,
606 Arvak-118457
                        },
607 Arvak-118457
                        --Kalecgos
608 Arvak-118457
                        [45032] = { --Curse of Boundless Agony
609 Arvak-118457
                                enable = true,
610 Arvak-118457
                                order = 10,
611 Arvak-118457
                                debuffType = 4,
612 Arvak-118457
                                duration = 30,
613 Arvak-118457
                        },
614 Arvak-118457
                        [45034] = {
615 Arvak-118457
                                delegater = 45032,
616 Arvak-118457
                        },
617 Arvak-118457
                        [45018] = { --Arcane Buffet
618 Arvak-118457
                                enable = true,
619 Arvak-118457
                                order = 12,
620 Arvak-118457
                                stackable = true,
621 Arvak-118457
                        },
622 Arvak-118457
                        --Brutallus
623 Arvak-118457
                        [46394] = { --Burn
624 Arvak-118457
                                enable = true,
625 Arvak-118457
                                order = 20,
626 Arvak-118457
                                duration = 60,
627 Arvak-118457
                        },
628 Arvak-118457
                        [45150] = { --Meteor Slash
629 Arvak-118457
                                enable = true,
630 Arvak-118457
                                order = 21,
631 Arvak-118457
                                stackable = true,
632 Arvak-118457
                        },
633 Arvak-118457
                        --Felmyst
634 Arvak-118457
                        [45855] = { --Gas Nova
635 Arvak-118457
                                enable = true,
636 Arvak-118457
                                order = 30,
637 Arvak-118457
                                debuffType = 1,
638 Arvak-118457
                        },
639 Arvak-118457
                        [45662] = { --Encapsulate
640 Arvak-118457
                                enable = true,
641 Arvak-118457
                                order = 31,
642 Arvak-118457
                                duration = 6,
643 Arvak-118457
                                auraCheck = true, -- doesn't have a combatlog event
644 Arvak-118457
                        },
645 Arvak-118457
                        [45402] = { --Demonic Vapor
646 Arvak-118457
                                enable = true,
647 Arvak-118457
                                order = 32,
648 Arvak-118457
                        },
649 Arvak-118457
                        [45717] = { --Fog of Corruption
650 Arvak-118457
                                enable = true,
651 Arvak-118457
                                order = 33,
652 Arvak-118457
                                auraCheck = true, -- unit is hostile in comabtlog event
653 Arvak-118457
                        },
654 Arvak-118457
                        --Twins
655 Arvak-118457
                        [45256] = { --Confounding Blow
656 Arvak-118457
                                enable = true,
657 Arvak-118457
                                order = 41,
658 Arvak-118457
                        },
659 Arvak-118457
                        [45333] = { --Conflagration
660 Arvak-118457
                                enable = true,
661 Arvak-118457
                                order = 42,
662 Arvak-118457
                        },
663 Arvak-118457
                        [46771] = { --Flame Sear
664 Arvak-118457
                                enable = true,
665 Arvak-118457
                                order = 43,
666 Arvak-118457
                        },
667 Arvak-118457
                        [45270] = { --Shadowfury
668 Arvak-118457
                                enable = true,
669 Arvak-118457
                                order = 44,
670 Arvak-118457
                        },
671 Arvak-118457
                        [45347] = { --Dark Touched
672 Arvak-118457
                                enable = true,
673 Arvak-118457
                                order = 45,
674 Arvak-118457
                                stackable = true,
675 Arvak-118457
                                color = { r = 0, g = 0, b = 0, a = 1},
676 Arvak-118457
                        },
677 Arvak-118457
                        [45348] = { --Fire Touched
678 Arvak-118457
                                enable = true,
679 Arvak-118457
                                order = 46,
680 Arvak-118457
                                stackable = true,
681 Arvak-118457
                        },
682 Arvak-118457
                        --Muru
683 Arvak-118457
                        [45996] = { --Darkness
684 Arvak-118457
                                enable = true,
685 Arvak-118457
                                order = 50,
686 Arvak-118457
                        },
687 Arvak-118457
                        --Kiljaeden
688 Arvak-118457
                        [45442] = { --Soul Flay
689 Arvak-118457
                                enable = true,
690 Arvak-118457
                                order = 61,
691 Arvak-118457
                        },
692 Arvak-118457
                        [45641] = { --Fire Bloom
693 Arvak-118457
                                enable = true,
694 Arvak-118457
                                order = 62,
695 Arvak-118457
                                duration = 20,
696 Arvak-118457
                        },
697 Arvak-118457
                        [45885] = { --Shadow Spike
698 Arvak-118457
                                enable = true,
699 Arvak-118457
                                order = 63,
700 Arvak-118457
                                duration = 10,
701 Arvak-118457
                        },
702 Arvak-118457
                        [45737] = { --Flame Dart
703 Arvak-118457
                                enable = true,
704 Arvak-118457
                                order = 64,
705 Arvak-118457
                                duration = 15,
706 Arvak-118457
                        },
707 Arvak-118457
                        [45740] = {
708 Arvak-118457
                                delegater = 45737,
709 Arvak-118457
                        },
710 Arvak-118457
                        [45741] = {
711 Arvak-118457
                                delegater = 45737,
712 Arvak-118457
                        },
713 Arvak-118457
                },
714 Arvak-118457
        }
715 Arvak-118457
}
716 Arvak-118457
 
717 Arvak-118457
local AuraCheckListZones = {}
718 Arvak-118457
local AuraCheckList = {}
719 Arvak-118457
 
720 Arvak-118457
function GSRD:OnInitialize()
721 Arvak-118457
        self:PreLoader()
722 Arvak-118457
        self.super.OnInitialize(self)
723 Arvak-118457
        self:RegisterStatuses()
724 Arvak-118457
        self:CreateMenu()
725 Arvak-118457
end
726 Arvak-118457
 
727 Arvak-118457
--for get name and icon(Destination is when user played first time... he can see the debuff tooltip.. this is some problem)
728 Arvak-118457
--also initialize AuraCheckList
729 Arvak-118457
function GSRD:PreLoader()
730 Arvak-118457
        for zone, cont in pairs(self.defaultDB["debuff_list"]) do
731 Arvak-118457
                for stNum, dInfo in pairs(cont) do
732 Arvak-118457
                        if not dInfo.delegater then
733 Arvak-118457
                                local link_name,_,link_icon = GetSpellInfo(stNum)
734 Arvak-118457
                                dInfo.name = link_name or "nil"
735 Arvak-118457
                                dInfo.icon = link_icon or "nil"
736 Arvak-118457
                        end
737 Arvak-118457
                        if dInfo.name and dInfo.auraCheck then
738 Arvak-118457
                                AuraCheckListZones[zone] = true
739 Arvak-118457
                                AuraCheckList[dInfo.name] = stNum
740 Arvak-118457
                        else
741 Arvak-118457
                                AuraCheckListZones[zone] = false
742 Arvak-118457
                        end
743 Arvak-118457
                end
744 Arvak-118457
        end
745 Arvak-118457
end
746 Arvak-118457
 
747 Arvak-118457
function GSRD:OnEnable()
748 Arvak-118457
        self.debugging = self.db.profile.debug
749 Arvak-118457
 
750 Arvak-118457
        self:RegisterEvent("PLAYER_ENTERING_WORLD")
751 Arvak-118457
        self:RegisterEvent("ZONE_CHANGED_NEW_AREA", "ZoneCheck")
752 Arvak-118457
 
753 Arvak-118457
        db = self.db.profile.debuff_list
754 Arvak-118457
end
755 Arvak-118457
 
756 Arvak-118457
function GSRD:ZoneCheck()
757 Arvak-118457
        zone = GetRealZoneText()
758 Arvak-118457
 
759 Arvak-118457
        self:NukeStatuses()
760 Arvak-118457
 
761 Arvak-118457
        if self.db.profile.debuff_list[zone] then
762 Arvak-118457
                if not self:IsEventRegistered("COMBAT_LOG_EVENT_UNFILTERED") then
763 Arvak-118457
                        self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED", "EventHandler")
764 Arvak-118457
                        self:RegisterEvent("PLAYER_REGEN_ENABLED")
765 Arvak-118457
 
766 Arvak-118457
                        -- If this zone has debuffs that require aura checking, then register for
767 Arvak-118457
                        -- the necessary events.
768 Arvak-118457
                        if (AuraCheckListZones[zone]) then
769 Arvak-118457
                                if not self:IsEventRegistered("SpecialEvents_UnitDebuffGained") then
770 Arvak-118457
                                        self:RegisterEvent("SpecialEvents_UnitDebuffGained", "AuraCheckGainedDebuff")
771 Arvak-118457
                                        self:RegisterEvent("SpecialEvents_UnitDebuffCountChanged", "AuraCheckGainedDebuff")
772 Arvak-118457
                                        self:RegisterEvent("SpecialEvents_UnitDebuffLost", "AuraCheckRemovedDebuff")
773 Arvak-118457
                                end
774 Arvak-118457
                        else
775 Arvak-118457
                                if self:IsEventRegistered("SpecialEvents_UnitDebuffGained") then
776 Arvak-118457
                                        self:UnregisterEvent("SpecialEvents_UnitDebuffGained")
777 Arvak-118457
                                        self:UnregisterEvent("SpecialEvents_UnitDebuffCountChanged")
778 Arvak-118457
                                        self:UnregisterEvent("SpecialEvents_UnitDebuffLost")
779 Arvak-118457
                                end
780 Arvak-118457
                        end
781 Arvak-118457
                end
782 Arvak-118457
        else
783 Arvak-118457
                if self:IsEventRegistered("COMBAT_LOG_EVENT_UNFILTERED") then
784 Arvak-118457
                        self:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
785 Arvak-118457
                        self:UnregisterEvent("PLAYER_REGEN_ENABLED")
786 Arvak-118457
 
787 Arvak-118457
                        if self:IsEventRegistered("SpecialEvents_UnitDebuffGained") then
788 Arvak-118457
                                self:UnregisterEvent("SpecialEvents_UnitDebuffGained")
789 Arvak-118457
                                self:UnregisterEvent("SpecialEvents_UnitDebuffCountChanged")
790 Arvak-118457
                                self:UnregisterEvent("SpecialEvents_UnitDebuffLost")
791 Arvak-118457
                        end
792 Arvak-118457
                end
793 Arvak-118457
        end
794 Arvak-118457
end
795 Arvak-118457
 
796 Arvak-118457
function GSRD:NukeStatuses()
797 Arvak-118457
        for i,k in pairs(MemberStatuses) do
798 Arvak-118457
                MemberStatuses[i] = nil
799 Arvak-118457
                self.core:SendStatusLost(i, "alert_RaidDebuff")
800 Arvak-118457
        end
801 Arvak-118457
end
802 Arvak-118457
 
803 Arvak-118457
function GSRD:PLAYER_REGEN_ENABLED()
804 Arvak-118457
        local NumMembers = GetNumRaidMembers()
805 Arvak-118457
        if NumMembers then
806 Arvak-118457
                for i = 1, NumMembers do
807 Arvak-118457
                        local unitID = "raid"..i
808 Arvak-118457
                        if not UnitDebuff(unitID, 1) then
809 Arvak-118457
                                local uName = UnitName(unitID)
810 Arvak-118457
                                self:NukeUnit(uName)
811 Arvak-118457
                        end
812 Arvak-118457
                end
813 Arvak-118457
        end
814 Arvak-118457
end
815 Arvak-118457
 
816 Arvak-118457
 
817 Arvak-118457
function GSRD:PLAYER_ENTERING_WORLD()
818 Arvak-118457
        if not zone then
819 Arvak-118457
                self:ZoneCheck()
820 Arvak-118457
        else
821 Arvak-118457
                self:UnregisterEvent("PLAYER_ENTERING_WORLD")
822 Arvak-118457
        end
823 Arvak-118457
end
824 Arvak-118457
 
825 Arvak-118457
function GSRD:RegisterStatuses()
826 Arvak-118457
        self:RegisterStatus("alert_RaidDebuff",L["Raid Debuff"],nil,true)
827 Arvak-118457
end
828 Arvak-118457
 
829 Arvak-118457
function GSRD:UnregisterStatuses()
830 Arvak-118457
        self:UnregisterStatus("alert_RaidDebuff")
831 Arvak-118457
end
832 Arvak-118457
 
833 Arvak-118457
function GSRD:CreateMenu()
834 Arvak-118457
        local db = self.db.profile.debuff_list
835 Arvak-118457
        local args = GridStatus.options.args["alert_RaidDebuff"].args
836 Arvak-118457
 
837 Arvak-118457
        args["color mode"] = {
838 Arvak-118457
                type = "group",
839 Arvak-118457
                name = L["Color Mode"],
840 Arvak-118457
                desc = L["Option for %s"]:format(L["Color Mode"]),
841 Arvak-118457
                order = 10,
842 Arvak-118457
                args = {
843 Arvak-118457
                        ["Stackable Debuff"] =
844 Arvak-118457
                        {
845 Arvak-118457
                                type = "toggle",
846 Arvak-118457
                                name = L["Stackable Debuff"],
847 Arvak-118457
                                desc = L["Stackable debuff is prior"],
848 Arvak-118457
                                get = function() return self.db.profile.prior_stack end,
849 Arvak-118457
                                set = function(v) self.db.profile.prior_stack = v end,
850 Arvak-118457
                        },
851 Arvak-118457
                        ["Normal Debuff"] =
852 Arvak-118457
                        {
853 Arvak-118457
                                type = "toggle",
854 Arvak-118457
                                name = L["Normal Debuff"],
855 Arvak-118457
                                desc = L["Normal debuff is prior"],
856 Arvak-118457
                                get = function() return not self.db.profile.prior_stack end,
857 Arvak-118457
                                set = function(v) self.db.profile.prior_stack = not v end,
858 Arvak-118457
                        },
859 Arvak-118457
                },
860 Arvak-118457
        }
861 Arvak-118457
 
862 Arvak-118457
        args["stack mode"] = {
863 Arvak-118457
                type = "group",
864 Arvak-118457
                name = L["Stack Text Mode"],
865 Arvak-118457
                desc = L["Option for %s"]:format(L["Stack Text Mode"]),
866 Arvak-118457
                order = 11,
867 Arvak-118457
                args = {
868 Arvak-118457
                        ["Stackable Debuff"] =
869 Arvak-118457
                        {
870 Arvak-118457
                                type = "toggle",
871 Arvak-118457
                                name = L["Stackable Debuff"],
872 Arvak-118457
                                desc = L["Ignore Current Icon & Show Stackable Debuff"],
873 Arvak-118457
                                get = function() return self.db.profile.stacktext end,
874 Arvak-118457
                                set = function(v) self.db.profile.stacktext = v end,
875 Arvak-118457
                        },
876 Arvak-118457
                        ["Current Icon"] =
877 Arvak-118457
                        {
878 Arvak-118457
                                type = "toggle",
879 Arvak-118457
                                name = L["Current Icon"],
880 Arvak-118457
                                desc = L["Current Debuff is prior"],
881 Arvak-118457
                                get = function() return not self.db.profile.stacktext end,
882 Arvak-118457
                                set = function(v) self.db.profile.stacktext = not v end,
883 Arvak-118457
                        },
884 Arvak-118457
                },
885 Arvak-118457
        }
886 Arvak-118457
 
887 Arvak-118457
        args["custom"] = {
888 Arvak-118457
                type = "group",
889 Arvak-118457
                name = L["Debuff Color"],
890 Arvak-118457
                desc = L["Option for %s"]:format(L["Debuff Color"]),
891 Arvak-118457
                order = 13,
892 Arvak-118457
                args = {
893 Arvak-118457
                        ["add"] = {
894 Arvak-118457
                                type = "group",
895 Arvak-118457
                                name = L["Add"],
896 Arvak-118457
                                desc = L["Add debuff color"],
897 Arvak-118457
                                order = 1,
898 Arvak-118457
                                args = {},
899 Arvak-118457
                        },
900 Arvak-118457
                        ["modify"] = {
901 Arvak-118457
                                type = "group",
902 Arvak-118457
                                name = L["Modify"],
903 Arvak-118457
                                desc = L["Modify debuff color"],
904 Arvak-118457
                                order = 2,
905 Arvak-118457
                                args = {},
906 Arvak-118457
                        },
907 Arvak-118457
                        ["remove"] = {
908 Arvak-118457
                                type = "group",
909 Arvak-118457
                                name = L["Remove"],
910 Arvak-118457
                                desc = L["Remove debuff color"],
911 Arvak-118457
                                order = 3,
912 Arvak-118457
                                args = {},
913 Arvak-118457
                        }
914 Arvak-118457
                }
915 Arvak-118457
        }
916 Arvak-118457
 
917 Arvak-118457
        args["space1"] = {
918 Arvak-118457
                type = "header",
919 Arvak-118457
                name = " ",
920 Arvak-118457
                order = 14,
921 Arvak-118457
        }
922 Arvak-118457
 
923 Arvak-118457
        args["space2"] = {
924 Arvak-118457
                type = "header",
925 Arvak-118457
                name = " ",
926 Arvak-118457
                order = 16,
927 Arvak-118457
        }
928 Arvak-118457
 
929 Arvak-118457
        for zone, dlist in pairs(db) do
930 Arvak-118457
                local ccargs = args["custom"].args
931 Arvak-118457
                args[zone] = {
932 Arvak-118457
                        type = "group",
933 Arvak-118457
                        name = zone,
934 Arvak-118457
                        desc = L["Option for %s"]:format(zone),
935 Arvak-118457
                        order = 15,
936 Arvak-118457
                        args = {},
937 Arvak-118457
                }
938 Arvak-118457
                ccargs["add"].args[zone] = {
939 Arvak-118457
                        type = "group",
940 Arvak-118457
                        name = zone,
941 Arvak-118457
                        desc = zone,
942 Arvak-118457
                        args = {},
943 Arvak-118457
                }
944 Arvak-118457
                ccargs["modify"].args[zone] = {
945 Arvak-118457
                        type = "group",
946 Arvak-118457
                        name = zone,
947 Arvak-118457
                        desc = zone,
948 Arvak-118457
                        args = {},
949 Arvak-118457
                }
950 Arvak-118457
                ccargs["remove"].args[zone] = {
951 Arvak-118457
                        type = "group",
952 Arvak-118457
                        name = zone,
953 Arvak-118457
                        desc = zone,
954 Arvak-118457
                        args = {},
955 Arvak-118457
                }
956 Arvak-118457
                local zoneargs = args[zone].args
957 Arvak-118457
 
958 Arvak-118457
 
959 Arvak-118457
                for stNum, dInfo in pairs(dlist) do
960 Arvak-118457
                        if not dInfo.delegater then
961 Arvak-118457
                                local prefix = "|r"
962 Arvak-118457
                                if dInfo.debuffType then
963 Arvak-118457
                                        prefix = debuffColorText[dInfo.debuffType]
964 Arvak-118457
                                end
965 Arvak-118457
 
966 Arvak-118457
                                local title = fmt("|T%s:0|t%s%s",dInfo.icon or "nil",prefix,dInfo.name or "nil")
967 Arvak-118457
 
968 Arvak-118457
                                zoneargs[stNum] = {
969 Arvak-118457
                                        type = "toggle",
970 Arvak-118457
                                        name = title,
971 Arvak-118457
                                        desc = L["Enable %s"]:format(dInfo.name),
972 Arvak-118457
                                        order = dInfo.order,
973 Arvak-118457
                                        get = function() return dInfo.enable end,
974 Arvak-118457
                                        set = function(v) dInfo.enable = v end,
975 Arvak-118457
                                }
976 Arvak-118457
 
977 Arvak-118457
                                if not dInfo.color then
978 Arvak-118457
                                        ccargs["add"].args[zone].args[stNum] = {
979 Arvak-118457
                                                type = "execute",
980 Arvak-118457
                                                name = title,
981 Arvak-118457
                                                desc = L["Add debuff color for %s"]:format(dInfo.name),
982 Arvak-118457
                                                order = dInfo.order,
983 Arvak-118457
                                                func = function()
984 Arvak-118457
                                                        self.db.profile["debuff_list"][zone][stNum].color = {r = 1, g = 0, b = 0, a = 1}
985 Arvak-118457
                                                        self:CreateMenu()
986 Arvak-118457
                                                end,
987 Arvak-118457
                                        }
988 Arvak-118457
                                else
989 Arvak-118457
                                        ccargs["modify"].args[zone].args[stNum] = {
990 Arvak-118457
                                                type = "color",
991 Arvak-118457
                                                name = title,
992 Arvak-118457
                                                desc = L["Modify debuff color for %s"]:format(dInfo.name),
993 Arvak-118457
                                                order = dInfo.order,
994 Arvak-118457
                                                hasAlpha = true,
995 Arvak-118457
                                                get = function()
996 Arvak-118457
                                                        local color = self.db.profile["debuff_list"][zone][stNum].color
997 Arvak-118457
                                                        return color.r, color.g, color.b, color.a
998 Arvak-118457
                                                end,
999 Arvak-118457
                                                set = function(r, g, b, a)
1000 Arvak-118457
                                                        local color = self.db.profile["debuff_list"][zone][stNum].color
1001 Arvak-118457
                                                        color.r = r
1002 Arvak-118457
                                                        color.g = g
1003 Arvak-118457
                                                        color.b = b
1004 Arvak-118457
                                                        color.a = a
1005 Arvak-118457
                                                end,
1006 Arvak-118457
                                        }
1007 Arvak-118457
                                        ccargs["remove"].args[zone].args[stNum] = {
1008 Arvak-118457
                                                type = "execute",
1009 Arvak-118457
                                                name = title,
1010 Arvak-118457
                                                desc = L["Remove debuff color for %s"]:format(dInfo.name),
1011 Arvak-118457
                                                order = dInfo.order,
1012 Arvak-118457
                                                func = function()
1013 Arvak-118457
                                                        self.db.profile["debuff_list"][zone][stNum].color = nil
1014 Arvak-118457
                                                        self:CreateMenu()
1015 Arvak-118457
                                                end,
1016 Arvak-118457
                                        }
1017 Arvak-118457
                                end
1018 Arvak-118457
                        end
1019 Arvak-118457
 
1020 Arvak-118457
                        if next(ccargs["add"].args[zone].args) then
1021 Arvak-118457
                                ccargs["add"].args[zone].hidden = false
1022 Arvak-118457
                        else
1023 Arvak-118457
                                ccargs["add"].args[zone].hidden = true
1024 Arvak-118457
                        end
1025 Arvak-118457
 
1026 Arvak-118457
                        if next(ccargs["modify"].args[zone].args) then
1027 Arvak-118457
                                ccargs["modify"].args[zone].hidden = false
1028 Arvak-118457
                                ccargs["remove"].args[zone].hidden = false
1029 Arvak-118457
                        else
1030 Arvak-118457
                                ccargs["modify"].args[zone].hidden = true
1031 Arvak-118457
                                ccargs["remove"].args[zone].hidden = true
1032 Arvak-118457
                        end
1033 Arvak-118457
                end
1034 Arvak-118457
        end
1035 Arvak-118457
end
1036 Arvak-118457
 
1037 Arvak-118457
function GSRD:Reset()
1038 Arvak-118457
        self.super.Reset(self)
1039 Arvak-118457
        self:UnregisterStatuses()
1040 Arvak-118457
        self:RegisterStatuses()
1041 Arvak-118457
end
1042 Arvak-118457
 
1043 Arvak-118457
-- COMBAT_LOG_EVENT_UNFILTERED handler
1044 Arvak-118457
function GSRD:EventHandler(ts, event, srcguid, srcname, srcflg, dstguid, dstname, dstflg, ...)
1045 Arvak-118457
        if bit_band(dstflg, 0x00006868) == 0 then
1046 Arvak-118457
                if
1047 Arvak-118457
                        event == "SPELL_AURA_APPLIED" or event == "SPELL_AURA_APPLIED_DOSE" or event == "SPELL_AURA_REMOVED_DOSE"
1048 Arvak-118457
                then
1049 Arvak-118457
                        local spellId, name, _, auraType, count = select(1, ...)
1050 Arvak-118457
                        if auraType ~= "BUFF" then
1051 Arvak-118457
                                self:GainedDebuff(dstname, spellId, count or 1)
1052 Arvak-118457
                        end
1053 Arvak-118457
                elseif
1054 Arvak-118457
                        event == "SPELL_AURA_REMOVED"
1055 Arvak-118457
                then
1056 Arvak-118457
                        local spellId, name, _, auraType = select(1, ...)
1057 Arvak-118457
                        if auraType ~= "BUFF" then
1058 Arvak-118457
                                self:RemovedDebuff(dstname, spellId)
1059 Arvak-118457
                        end
1060 Arvak-118457
                elseif
1061 Arvak-118457
                        event == "UNIT_DIED"
1062 Arvak-118457
                then
1063 Arvak-118457
                        self:NukeUnit(dstname)
1064 Arvak-118457
                end
1065 Arvak-118457
        end
1066 Arvak-118457
end
1067 Arvak-118457
 
1068 Arvak-118457
-- UNIT_AURA handler (unit, name, count, dispelType, icon, rank, index, duration, timeLeft, debuffIndex)
1069 Arvak-118457
function GSRD:AuraCheckGainedDebuff(unit, name, count)
1070 Arvak-118457
        -- 1 table check is all we need, no need to check if unit is in raid because it will not usually happen with raid debuffs
1071 Arvak-118457
        if AuraCheckList[name] then
1072 Arvak-118457
                self:GainedDebuff(UnitName(unit), AuraCheckList[name], count or 1)
1073 Arvak-118457
        end
1074 Arvak-118457
end
1075 Arvak-118457
 
1076 Arvak-118457
function GSRD:AuraCheckRemovedDebuff(unit, name)
1077 Arvak-118457
        if AuraCheckList[name] then
1078 Arvak-118457
                self:RemovedDebuff(UnitName(unit), AuraCheckList[name])
1079 Arvak-118457
        end
1080 Arvak-118457
end
1081 Arvak-118457
 
1082 Arvak-118457
function GSRD:GainedDebuff(uName, stNum, count)
1083 Arvak-118457
        if db[zone] then
1084 Arvak-118457
                local dInfo = db[zone][stNum]
1085 Arvak-118457
                if dInfo then
1086 Arvak-118457
                        if dInfo.delegater then
1087 Arvak-118457
                                dInfo = db[zone][dInfo.delegater]
1088 Arvak-118457
                        end
1089 Arvak-118457
 
1090 Arvak-118457
                        if dInfo.enable then
1091 Arvak-118457
                                if not MemberStatuses[uName] then MemberStatuses[uName] = {} end
1092 Arvak-118457
 
1093 Arvak-118457
                                MemberStatuses[uName][stNum] = {
1094 Arvak-118457
                                        value = count and fmt("%d",count),
1095 Arvak-118457
                                        color = dInfo.color or self.db.profile["alert_RaidDebuff"].color,
1096 Arvak-118457
                                        icon = dInfo.icon,
1097 Arvak-118457
                                        start = GetTime(),
1098 Arvak-118457
                                        duration = dInfo.duration,
1099 Arvak-118457
                                        stackable = dInfo.stackable,
1100 Arvak-118457
                                }
1101 Arvak-118457
 
1102 Arvak-118457
                                self:UpdateUnit(uName)
1103 Arvak-118457
                        end
1104 Arvak-118457
                end
1105 Arvak-118457
        end
1106 Arvak-118457
end
1107 Arvak-118457
 
1108 Arvak-118457
function GSRD:RemovedDebuff(uName, stNum)
1109 Arvak-118457
        if MemberStatuses and MemberStatuses[uName] and MemberStatuses[uName][stNum] then
1110 Arvak-118457
                MemberStatuses[uName][stNum] = nil
1111 Arvak-118457
                self:UpdateUnit(uName)
1112 Arvak-118457
        end
1113 Arvak-118457
end
1114 Arvak-118457
 
1115 Arvak-118457
function GSRD:NukeUnit(uName)
1116 Arvak-118457
        if MemberStatuses and MemberStatuses[uName] then
1117 Arvak-118457
                MemberStatuses[uName] = nil
1118 Arvak-118457
                self.core:SendStatusLost(uName, "alert_RaidDebuff")
1119 Arvak-118457
        end
1120 Arvak-118457
end
1121 Arvak-118457
 
1122 Arvak-118457
function GSRD:UpdateUnit(uName)
1123 Arvak-118457
        if MemberStatuses[uName] and next(MemberStatuses[uName]) then
1124 Arvak-118457
                local settings = self.db.profile["alert_RaidDebuff"]
1125 Arvak-118457
                local icon, start, duration
1126 Arvak-118457
                local value, stackicon
1127 Arvak-118457
 
1128 Arvak-118457
 
1129 Arvak-118457
                local normalcolor
1130 Arvak-118457
                local stackcolor
1131 Arvak-118457
                for i,k in pairs(MemberStatuses[uName]) do
1132 Arvak-118457
                        if k.stackable then
1133 Arvak-118457
                                stackicon = k.icon
1134 Arvak-118457
                                value = k.value
1135 Arvak-118457
                                stackcolor = k.color
1136 Arvak-118457
                        end
1137 Arvak-118457
                        if not duration then
1138 Arvak-118457
                                icon = k.icon
1139 Arvak-118457
                                start = k.start
1140 Arvak-118457
                                duration = k.duration
1141 Arvak-118457
                                normalcolor = k.color
1142 Arvak-118457
                        end
1143 Arvak-118457
                end
1144 Arvak-118457
 
1145 Arvak-118457
                local color
1146 Arvak-118457
                if self.db.profile.prior_stack then
1147 Arvak-118457
                        color = stackcolor or normalcolor
1148 Arvak-118457
                else
1149 Arvak-118457
                        color = normalcolor or stackcolor
1150 Arvak-118457
                end
1151 Arvak-118457
 
1152 Arvak-118457
                value = (self.db.profile.stacktext and value) or (icon and "") or value
1153 Arvak-118457
 
1154 Arvak-118457
                self.core:SendStatusGained(
1155 Arvak-118457
                        uName, "alert_RaidDebuff", settings.priority, (settings.range and 40),
1156 Arvak-118457
                        color, nil, nil, nil, icon or stackicon, start, duration, value)
1157 Arvak-118457
        else
1158 Arvak-118457
                self.core:SendStatusLost(uName, "alert_RaidDebuff")
1159 Arvak-118457
        end
1160 Arvak-118457
end