vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 local inittime, initmem, initgc = GetTime(), gcinfo()
2  
3 Warmup = {
4 -- gcalerts = true,
5  
6 myname = "!!Warmup",
7  
8 inittime = inittime,
9 initmem = initmem,
10 initgc = initgc,
11  
12 lasttime = inittime,
13 lastmem = initmem,
14 lastgc = initgc,
15  
16 longesttime = 0,
17 biggestmem = 0,
18 totalmem = 0,
19  
20 timethresh = 1.0,
21 timethresh2 = 0.5,
22 timethresh3 = 0.1,
23  
24 memthresh = 1000,
25 memthresh2 = 500,
26 memthresh3 = 100,
27  
28 green = "|cff80ff80",
29 yellow = "|cffffff80",
30 orange = "|cffff8000",
31 red = "|cffff0000",
32 }
33 inittime, initmem, initgc = nil, nil, nil
34  
35  
36 function Warmup:PutOut(txt, color, time, mem)
37 local outstr = ((not time) and string.format("%s%s (%d KiB)", color, txt, mem))
38 or (not mem and string.format("%.3f sec | %s%s", time, color, txt))
39 or string.format("%.3f sec | %s%s (%d KiB)", time, color, txt, mem)
40  
41 self.frame:AddMessage(outstr)
42 self.myframe:AddMessage(outstr)
43 end
44  
45  
46 function Warmup:PutOutAO(ao)
47 local gc = (ao.gc and " |cffff80ff-GC-") or ""
48 local tc = (ao.time >= Warmup.timethresh and self.red) or (ao.time >= Warmup.timethresh2 and self.orange) or (ao.time >= Warmup.timethresh3 and self.yellow) or self.green
49 local mc = (ao.mem >= Warmup.memthresh and self.red) or (ao.mem >= Warmup.memthresh2 and self.orange) or (ao.mem >= Warmup.memthresh3 and self.yellow) or self.green
50 local outstr = string.format("%s%.3f sec|r | %s (%s%d KiB|r)%s", tc, ao.time, ao.name, mc, ao.mem, gc)
51  
52 self.myframe:AddMessage(outstr)
53 end
54  
55  
56 function Warmup:OnLoad()
57 tinsert(UISpecialFrames,"WarmupOutputFrame")
58  
59 this:RegisterEvent("VARIABLES_LOADED")
60 this:RegisterEvent("ADDON_LOADED")
61  
62 self.WoW_ReloadUI = ReloadUI
63 ReloadUI = function ()
64 Warmup.reloading = true
65 Warmup.WoW_ReloadUI()
66 end
67  
68 self.WoW_LoadAddOn = LoadAddOn
69 LoadAddOn = function (addon)
70 Warmup.lasttime = GetTime()
71 Warmup.lastmem, Warmup.lastgc = gcinfo()
72 return Warmup.WoW_LoadAddOn(addon)
73 end
74  
75 self:SetEventTable()
76 for i,ev in pairs(self.events) do this:RegisterEvent(ev) end
77  
78 self.eventvals = {}
79 end
80  
81  
82 function Warmup:Init()
83 if not WarmupSV then WarmupSV = {} end
84 self.sv = WarmupSV
85 self.sv.addoninfo = {}
86  
87 self.myframe = getglobal("WarmupChatFrame")
88 self.frame = getglobal("ChatFrame2")
89 for i=1,GetNumAddOns() do
90 if IsAddOnLoaded(i) then
91 if GetAddOnInfo(i) ~= self.myname then
92 self.frame:AddMessage("Addon loaded before Warmup: ".. GetAddOnInfo(i))
93 self.myframe:AddMessage("Addon loaded before Warmup: ".. GetAddOnInfo(i))
94 end
95 end
96 end
97  
98 self.myframe:SetScript("OnMouseWheel", function ()
99 if arg1 > 0 then this:ScrollUp()
100 elseif arg1 < 0 then
101 if IsShiftKeyDown() then this:ScrollToBottom()
102 else this:ScrollDown() end
103 end
104 end)
105 self.myframe:EnableMouseWheel(1)
106  
107 end
108  
109  
110 function Warmup:OnUpdate()
111 if self.gcalerts then
112 local mem, gc = gcinfo()
113  
114 if (Warmup.gc and gc ~= Warmup.gc) then
115 local outstr = string.format("GC fired | mem %d --> %d | threshold %d --> %d", Warmup.mem, mem, Warmup.gc, gc)
116 Warmup.frame:AddMessage(outstr)
117 self.myframe:AddMessage(outstr)
118 end
119  
120 self.mem, self.gc = mem, gc
121 end
122 end
123  
124  
125 function Warmup:DumpEvents()
126 local sortt = {}
127 for ev,val in pairs(self.eventvals) do table.insert(sortt, ev) end
128  
129 table.sort(sortt, function (a,b) return a<b end)
130  
131 for i,ev in pairs(sortt) do
132 self.myframe:AddMessage(string.format(self.red.."%d|r | %s%s|r", Warmup.eventvals[ev], self.green, ev))
133 end
134 end
135  
136  
137 function Warmup:OnEvent()
138 if self.eventvals then self.eventvals[event] = (self.eventvals[event] or 0) + 1 end
139  
140 if (event == "ADDON_LOADED") then self:ADDON_LOADED()
141 elseif (event == "VARIABLES_LOADED") then self:VARIABLES_LOADED()
142 elseif (event == "PLAYER_LOGIN") then self:PLAYER_LOGIN()
143 elseif (event == "PLAYER_ENTERING_WORLD") then self:PLAYER_ENTERING_WORLD()
144 elseif (event == "PLAYER_LEAVING_WORLD") then self:PLAYER_LEAVING_WORLD()
145 elseif (event == "PLAYER_LOGOUT") then self:PLAYER_LOGOUT() end
146 end
147  
148  
149 function Warmup:ADDON_LOADED()
150 local addontime, addonmem, addongc = GetTime(), gcinfo()
151 local diff = addonmem - self.lastmem
152 local hadgc
153  
154 if not self.myframe then self:Init() end
155  
156 local aoinfo = {
157 name = arg1,
158 time = addontime - self.lasttime,
159 mem = addonmem - self.lastmem,
160 }
161  
162 -- When LUA performs a GC it sets the new threshold to the new memory use * 1.25
163 -- so we can figure out how much memory was freed!
164  
165 if addongc ~= self.lastgc then
166 diff = addonmem - (addongc/1.25) + self.lastgc - self.lastmem
167 hadgc = true
168 aoinfo.mem = addonmem - (addongc/1.25) + self.lastgc - self.lastmem;
169 aoinfo.gc = true
170 end
171  
172 self:PutOutAO(aoinfo)
173 table.insert(self.sv.addoninfo, aoinfo)
174  
175 if (addontime - self.lasttime) > self.longesttime then
176 self.longesttime = addontime - Warmup.lasttime
177 self.longestaddon = arg1
178 end
179 if (diff) > self.biggestmem then
180 self.biggestmem = diff
181 self.biggestaddon = arg1
182 end
183 self.totalmem = Warmup.totalmem + diff
184 self.lasttime, self.lastmem, self.lastgc = addontime, addonmem, addongc
185 end
186  
187  
188 function Warmup:VARIABLES_LOADED()
189 self.varsloadtime = GetTime()
190 if self.sv.time then
191 self:PutOut("ReloadUI", self.green, self.inittime - self.sv.time)
192 end
193 self:PutOut("Addon Loadup", self.green, self.varsloadtime - self.inittime, self.lastmem - self.initmem)
194  
195 self:PutOut("Longest addon: ".. self.longestaddon, self.yellow, self.longesttime)
196 self:PutOut("Biggest addon: ".. self.biggestaddon, self.yellow, nil, self.biggestmem)
197  
198 this:RegisterEvent("PLAYER_LOGIN")
199 this:UnregisterEvent("VARIABLES_LOADED")
200  
201 SlashCmdList["RELOADTIME"] = function() ReloadUI() end
202 SLASH_RELOADTIME1 = "/rlt"
203  
204 SlashCmdList["WARMUP"] = function (msg) Warmup:Slash(msg) end
205 SLASH_WARMUP1 = "/wu"
206 SLASH_WARMUP2 = "/warmup"
207 end
208  
209  
210 function Warmup:PLAYER_LOGIN()
211 self.logging = true
212 this:RegisterEvent("PLAYER_ENTERING_WORLD")
213 end
214  
215  
216 function Warmup:PLAYER_ENTERING_WORLD()
217 if self.inittime and self.logging then
218 local entrytime = GetTime()
219  
220 self:PutOut("World entry", self.green, entrytime - self.varsloadtime)
221  
222 if self.sv.time then self:PutOut("Total time", self.green, entrytime - self.sv.time)
223 else self:PutOut("Total time", self.green, entrytime - Warmup.inittime) end
224  
225 self.sv.time = nil
226 self.varsloadtime = nil
227 elseif self.sv.time then
228 self:PutOut("Zoning", self.green, GetTime() - self.sv.time)
229 self.sv.time = nil
230 end
231 self.logging = nil
232 this:UnregisterEvent("PLAYER_LOGIN")
233 this:UnregisterEvent("PLAYER_LOGOUT")
234 this:UnregisterEvent("PLAYER_ENTERING_WORLD")
235 this:RegisterEvent("PLAYER_LEAVING_WORLD")
236  
237 for i,ev in pairs(Warmup.events) do this:UnregisterEvent(ev) end
238  
239 self:DumpEvents()
240 self.events = nil
241 self.eventvals = nil
242 end
243  
244  
245 function Warmup:PLAYER_LEAVING_WORLD()
246 self.sv.time = GetTime()
247 this:RegisterEvent("PLAYER_ENTERING_WORLD")
248 this:RegisterEvent("PLAYER_LOGOUT")
249 this:UnregisterEvent("PLAYER_LEAVING_WORLD")
250  
251 self:SetEventTable()
252  
253 for i,ev in pairs(Warmup.events) do this:RegisterEvent(ev) end
254  
255 self.eventvals = {}
256 end
257  
258  
259 function Warmup:PLAYER_LOGOUT()
260 if not self.reloading then self.sv.time = nil end
261 end
262  
263  
264  
265  
266 function Warmup:Slash(msg)
267 if (WarmupOutputFrame:IsVisible()) then WarmupOutputFrame:Hide()
268 else WarmupOutputFrame:Show() end
269 end
270  
271  
272 function Warmup:SetEventTable()
273 self.events = {
274 "ACTIONBAR_HIDEGRID",
275 "ACTIONBAR_PAGE_CHANGED",
276 "ACTIONBAR_SHOWGRID",
277 "ACTIONBAR_SLOT_CHANGED",
278 "ACTIONBAR_UPDATE_COOLDOWN",
279 "ACTIONBAR_UPDATE_STATE",
280 "ACTIONBAR_UPDATE_USABLE",
281 "AREA_SPIRIT_HEALER_IN_RANGE",
282 "AREA_SPIRIT_HEALER_OUT_OF_RANGE",
283 "AUCTION_BIDDER_LIST_UPDATE",
284 "AUCTION_HOUSE_CLOSED",
285 "AUCTION_HOUSE_SHOW",
286 "AUCTION_ITEM_LIST_UPDATE",
287 "AUCTION_OWNED_LIST_UPDATE",
288 "AUTOEQUIP_BIND_CONFIRM",
289 "AUTOFOLLOW_BEGIN",
290 "AUTOFOLLOW_END",
291 "BAG_CLOSED",
292 "BAG_OPEN",
293 "BAG_UPDATE",
294 "BAG_UPDATE_COOLDOWN",
295 "BANKFRAME_CLOSED",
296 "BANKFRAME_OPENED",
297 "BATTLEFIELDS_CLOSED",
298 "BATTLEFIELDS_SHOW",
299 "BILLING_NAG_DIALOG",
300 "BIND_ENCHANT",
301 "CANCEL_LOOT_ROLL",
302 "CHARACTER_LIST_UPDATE",
303 "CHARACTER_POINTS_CHANGED",
304 "CHAT_MSG",
305 "CHAT_MSG_AFK",
306 "CHAT_MSG_BG_SYSTEM_ALLIANCE",
307 "CHAT_MSG_BG_SYSTEM_HORDE",
308 "CHAT_MSG_BG_SYSTEM_NEUTRAL",
309 "CHAT_MSG_CHANNEL",
310 "CHAT_MSG_CHANNEL_JOIN",
311 "CHAT_MSG_CHANNEL_LEAVE",
312 "CHAT_MSG_CHANNEL_LIST",
313 "CHAT_MSG_CHANNEL_NOTICE",
314 "CHAT_MSG_CHANNEL_NOTICE_USER",
315 "CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS",
316 "CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES",
317 "CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS",
318 "CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES",
319 "CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS",
320 "CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES",
321 "CHAT_MSG_COMBAT_ERROR",
322 "CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS",
323 "CHAT_MSG_COMBAT_FRIENDLYPLAYER_MISSES",
324 "CHAT_MSG_COMBAT_FRIENDLY_DEATH",
325 "CHAT_MSG_COMBAT_HONOR_GAIN",
326 "CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS",
327 "CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES",
328 "CHAT_MSG_COMBAT_HOSTILE_DEATH",
329 "CHAT_MSG_COMBAT_MISC_INFO",
330 "CHAT_MSG_COMBAT_PARTY_HITS",
331 "CHAT_MSG_COMBAT_PARTY_MISSES",
332 "CHAT_MSG_COMBAT_PET_HITS",
333 "CHAT_MSG_COMBAT_PET_MISSES",
334 "CHAT_MSG_COMBAT_SELF_HITS",
335 "CHAT_MSG_COMBAT_SELF_MISSES",
336 "CHAT_MSG_COMBAT_XP_GAIN",
337 "CHAT_MSG_DND",
338 "CHAT_MSG_EMOTE",
339 "CHAT_MSG_GUILD",
340 "CHAT_MSG_IGNORED",
341 "CHAT_MSG_LOOT",
342 "CHAT_MSG_MONSTER_EMOTE",
343 "CHAT_MSG_MONSTER_SAY",
344 "CHAT_MSG_MONSTER_WHISPER",
345 "CHAT_MSG_MONSTER_YELL",
346 "CHAT_MSG_OFFICER",
347 "CHAT_MSG_PARTY",
348 "CHAT_MSG_RAID",
349 "CHAT_MSG_SAY",
350 "CHAT_MSG_SKILL",
351 "CHAT_MSG_SPELL_AURA_GONE_OTHER",
352 "CHAT_MSG_SPELL_AURA_GONE_SELF",
353 "CHAT_MSG_SPELL_BREAK_AURA",
354 "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF",
355 "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE",
356 "CHAT_MSG_SPELL_CREATURE_VS_PARTY_BUFF",
357 "CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE",
358 "CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF",
359 "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE",
360 "CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS",
361 "CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF",
362 "CHAT_MSG_SPELL_FAILED_LOCALPLAYER",
363 "CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF",
364 "CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE",
365 "CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF",
366 "CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE",
367 "CHAT_MSG_SPELL_ITEM_ENCHANTMENTS",
368 "CHAT_MSG_SPELL_PARTY_BUFF",
369 "CHAT_MSG_SPELL_PARTY_DAMAGE",
370 "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS",
371 "CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE",
372 "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS",
373 "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE",
374 "CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS",
375 "CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE",
376 "CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS",
377 "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE",
378 "CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS",
379 "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE",
380 "CHAT_MSG_SPELL_PET_BUFF",
381 "CHAT_MSG_SPELL_PET_DAMAGE",
382 "CHAT_MSG_SPELL_SELF_BUFF",
383 "CHAT_MSG_SPELL_SELF_DAMAGE",
384 "CHAT_MSG_SPELL_TRADESKILLS",
385 "CHAT_MSG_SYSTEM",
386 "CHAT_MSG_TEXT_EMOTE",
387 "CHAT_MSG_WHISPER",
388 "CHAT_MSG_WHISPER_INFORM",
389 "CHAT_MSG_YELL",
390 "CINEMATIC_START",
391 "CINEMATIC_STOP",
392 "CLEAR_TOOLTIP",
393 "CLOSE_INBOX_ITEM",
394 "CLOSE_TABARD_FRAME",
395 "CLOSE_WORLD_MAP",
396 "CONFIRM_BINDER",
397 "CONFIRM_LOOT_ROLL",
398 "CONFIRM_PET_UNLEARN",
399 "CONFIRM_SUMMON",
400 "CONFIRM_TALENT_WIPE",
401 "CONFIRM_XP_LOSS",
402 "CORPSE_IN_INSTANCE",
403 "CORPSE_IN_RANGE",
404 "CORPSE_OUT_OF_RANGE",
405 "CRAFT_CLOSE",
406 "CRAFT_SHOW",
407 "CRAFT_UPDATE",
408 "CURRENT_SPELL_CAST_CHANGED",
409 "CURSOR_UPDATE",
410 "CVAR_UPDATE",
411 "DELETE_ITEM_CONFIRM",
412 "DISPLAY_SIZE_CHANGED",
413 "DUEL_FINISHED",
414 "DUEL_INBOUNDS",
415 "DUEL_OUTOFBOUNDS",
416 "DUEL_REQUESTED",
417 "EQUIP_BIND_CONFIRM",
418 "EXECUTE_CHAT_LINE",
419 "FRIENDLIST_SHOW",
420 "FRIENDLIST_UPDATE",
421 "GOSSIP_CLOSED",
422 "GOSSIP_ENTER_CODE",
423 "GOSSIP_SHOW",
424 "GUILD_INVITE_CANCEL",
425 "GUILD_INVITE_REQUEST",
426 "GUILD_MOTD",
427 "GUILD_REGISTRAR_CLOSED",
428 "GUILD_REGISTRAR_SHOW",
429 "GUILD_ROSTER_SHOW",
430 "GUILD_ROSTER_UPDATE",
431 "IGNORELIST_UPDATE",
432 "IGR_BILLING_NAG_DIALOG",
433 "INSTANCE_BOOT_START",
434 "INSTANCE_BOOT_STOP",
435 "ITEM_LOCK_CHANGED",
436 "ITEM_PUSH",
437 "ITEM_TEXT_BEGIN",
438 "ITEM_TEXT_CLOSED",
439 "ITEM_TEXT_READY",
440 "ITEM_TEXT_TRANSLATION",
441 "LANGUAGE_LIST_CHANGED",
442 "LEARNED_SPELL_IN_TAB",
443 "LOCALPLAYER_PET_RENAMED",
444 "LOGOUT_CANCEL",
445 "LOOT_BIND_CONFIRM",
446 "LOOT_CLOSED",
447 "LOOT_OPENED",
448 "LOOT_SLOT_CLEARED",
449 "MAIL_CLOSED",
450 "MAIL_FAILED",
451 "MAIL_INBOX_UPDATE",
452 "MAIL_SEND_INFO_UPDATE",
453 "MAIL_SEND_SUCCESS",
454 "MAIL_SHOW",
455 "MEETINGSTONE_CHANGED",
456 "MEMORY_EXHAUSTED",
457 "MEMORY_RECOVERED",
458 "MERCHANT_CLOSED",
459 "MERCHANT_SHOW",
460 "MERCHANT_UPDATE",
461 "MINIMAP_PING",
462 "MINIMAP_UPDATE_ZOOM",
463 "MINIMAP_ZONE_CHANGED",
464 "MIRROR_TIMER_PAUSE",
465 "MIRROR_TIMER_START",
466 "MIRROR_TIMER_STOP",
467 "NEW_AUCTION_UPDATE",
468 "OPEN_MASTER_LOOT_LIST",
469 "OPEN_TABARD_FRAME",
470 "PARTY_INVITE_CANCEL",
471 "PARTY_INVITE_REQUEST",
472 "PARTY_LEADER_CHANGED",
473 "PARTY_LOOT_METHOD_CHANGED",
474 "PARTY_MEMBERS_CHANGED",
475 "PARTY_MEMBER_DISABLE",
476 "PARTY_MEMBER_ENABLE",
477 "PETITION_CLOSED",
478 "PETITION_SHOW",
479 "PET_ATTACK_START",
480 "PET_ATTACK_STOP",
481 "PET_BAR_HIDEGRID",
482 "PET_BAR_SHOWGRID",
483 "PET_BAR_UPDATE",
484 "PET_BAR_UPDATE_COOLDOWN",
485 "PET_STABLE_CLOSED",
486 "PET_STABLE_SHOW",
487 "PET_STABLE_UPDATE",
488 "PET_STABLE_UPDATE_PAPERDOLL",
489 "PET_UI_CLOSE",
490 "PET_UI_UPDATE",
491 "PLAYERBANKBAGSLOTS_CHANGED",
492 "PLAYERBANKSLOTS_CHANGED",
493 "PLAYER_ALIVE",
494 "PLAYER_AURAS_CHANGED",
495 "PLAYER_CAMPING",
496 "PLAYER_COMBO_POINTS",
497 "PLAYER_CONTROL_GAINED",
498 "PLAYER_CONTROL_LOST",
499 "PLAYER_DAMAGE_DONE_MODS",
500 "PLAYER_DEAD",
501 "PLAYER_FARSIGHT_FOCUS_CHANGED",
502 "PLAYER_ENTER_COMBAT",
503 "PLAYER_FLAGS_CHANGED",
504 "PLAYER_GUILD_UPDATE",
505 "PLAYER_LEAVE_COMBAT",
506 "PLAYER_LEVEL_UP",
507 "PLAYER_LOGIN",
508 "PLAYER_LOGOUT",
509 "PLAYER_MONEY",
510 "PLAYER_PET_CHANGED",
511 "PLAYER_PVP_KILLS_CHANGED",
512 "PLAYER_PVP_RANK_CHANGED",
513 "PLAYER_PVPLEVEL_CHANGED",
514 "PLAYER_QUITING",
515 "PLAYER_REGEN_DISABLED",
516 "PLAYER_REGEN_ENABLED",
517 "PLAYER_SKINNED",
518 "PLAYER_TARGET_CHANGED",
519 "PLAYER_TRADE_MONEY",
520 "PLAYER_UNGHOST",
521 "PLAYER_UPDATE_RESTING",
522 "PLAYER_XP_UPDATE",
523 "PLAYTIME_CHANGED",
524 "QUEST_ACCEPT_CONFIRM",
525 "QUEST_COMPLETE",
526 "QUEST_DETAIL",
527 "QUEST_FINISHED",
528 "QUEST_GREETING",
529 "QUEST_ITEM_UPDATE",
530 "QUEST_LOG_UPDATE",
531 "QUEST_PROGRESS",
532 "RAID_ROSTER_UPDATE",
533 "REPLACE_ENCHANT",
534 "RESURRECT_REQUEST",
535 "SCREENSHOT_FAILED",
536 "SCREENSHOT_SUCCEEDED",
537 "SELECT_FIRST_CHARACTER",
538 "SELECT_LAST_CHARACTER",
539 "SEND_MAIL_COD_CHANGED",
540 "SEND_MAIL_MONEY_CHANGED",
541 "SHOW_COMPARE_TOOLTIP",
542 "SKILL_LINES_CHANGED",
543 "SPELLCAST_CHANNEL_START",
544 "SPELLCAST_CHANNEL_UPDATE",
545 "SPELLCAST_DELAYED",
546 "SPELLCAST_FAILED",
547 "SPELLCAST_INTERRUPTED",
548 "SPELLCAST_START",
549 "SPELLCAST_STOP",
550 "SPELLS_CHANGED",
551 "SPELL_UPDATE_COOLDOWN",
552 "SPELL_UPDATE_USABLE",
553 "START_AUTOREPEAT_SPELL",
554 "START_LOOT_ROLL",
555 "STOP_AUTOREPEAT_SPELL",
556 "SUGGEST_REALM",
557 "SYSMSG",
558 "TABARD_CANSAVE_CHANGED",
559 "TABARD_SAVE_PENDING",
560 "TAXIMAP_CLOSED",
561 "TAXIMAP_OPENED",
562 "TIME_PLAYED_MSG",
563 "TOOLTIP_ADD_MONEY",
564 "TOOLTIP_ANCHOR_DEFAULT",
565 "TRADE_ACCEPT_UPDATE",
566 "TRADE_CLOSED",
567 "TRADE_MONEY_CHANGED",
568 "TRADE_PLAYER_ITEM_CHANGED",
569 "TRADE_REPLACE_ENCHANT",
570 "TRADE_REQUEST",
571 "TRADE_REQUEST_CANCEL",
572 "TRADE_SHOW",
573 "TRADE_SKILL_CLOSE",
574 "TRADE_SKILL_SHOW",
575 "TRADE_SKILL_UPDATE",
576 "TRADE_TARGET_ITEM_CHANGED",
577 "TRADE_UPDATE",
578 "TRAINER_CLOSED",
579 "TRAINER_SHOW",
580 "TRAINER_UPDATE",
581 "TUTORIAL_TRIGGER",
582 "UI_ERROR_MESSAGE",
583 "UI_INFO_MESSAGE",
584 "UNIT_ATTACK",
585 "UNIT_ATTACK_POWER",
586 "UNIT_ATTACK_SPEED",
587 "UNIT_AURA",
588 "UNIT_AURASTATE",
589 "UNIT_CLASSIFICATION_CHANGED",
590 "UNIT_COMBAT",
591 "UNIT_COMBO_POINTS",
592 "UNIT_DAMAGE",
593 "UNIT_DEFENSE",
594 "UNIT_DISPLAYPOWER",
595 "UNIT_DYNAMIC_FLAGS",
596 "UNIT_ENERGY",
597 "UNIT_FACTION",
598 "UNIT_FLAGS",
599 "UNIT_FOCUS",
600 "UNIT_HAPPINESS",
601 "UNIT_HEALTH",
602 "UNIT_INVENTORY_CHANGED",
603 "UNIT_LEVEL",
604 "UNIT_LOYALTY",
605 "UNIT_MANA",
606 "UNIT_MAXENERGY",
607 "UNIT_MAXFOCUS",
608 "UNIT_MAXHAPPINESS",
609 "UNIT_MAXHEALTH",
610 "UNIT_MAXMANA",
611 "UNIT_MAXRAGE",
612 "UNIT_MODEL_CHANGED",
613 "UNIT_NAME_UPDATE",
614 "UNIT_PET",
615 "UNIT_PET_EXPERIENCE",
616 "UNIT_PET_TRAINING_POINTS",
617 "UNIT_PORTRAIT_UPDATE",
618 "UNIT_PVP_UPDATE",
619 "UNIT_QUEST_LOG_CHANGED",
620 "UNIT_RAGE",
621 "UNIT_RANGEDDAMAGE",
622 "UNIT_RANGED_ATTACK_POWER",
623 "UNIT_RESISTANCES",
624 "UNIT_SPELLMISS",
625 "UNIT_STATS",
626 "UPDATE_BATTLEFIELD_SCORE",
627 "UPDATE_BATTLEFIELD_STATUS",
628 "UPDATE_BINDINGS",
629 "UPDATE_BONUS_ACTIONBAR",
630 "UPDATE_CHAT_COLOR",
631 "UPDATE_CHAT_WINDOWS",
632 "UPDATE_EXHAUSTION",
633 "UPDATE_FACTION",
634 "UPDATE_GM_STATUS",
635 "UPDATE_INVENTORY_ALERTS",
636 "UPDATE_MACROS",
637 "UPDATE_MASTER_LOOT_LIST",
638 "UPDATE_MOUSEOVER_UNIT",
639 "UPDATE_PENDING_MAIL",
640 "UPDATE_SELECTED_CHARACTER",
641 "UPDATE_SHAPESHIFT_FORMS",
642 "UPDATE_TICKET",
643 "UPDATE_TRADESKILL_RECAST",
644 "UPDATE_WORLD_STATES",
645 "USE_BIND_CONFIRM",
646 "VARIABLES_LOADED",
647 "WHO_LIST_UPDATE",
648 "WORLD_MAP_NAME_UPDATE",
649 "WORLD_MAP_UPDATE",
650 "ZONE_CHANGED",
651 "ZONE_CHANGED_INDOORS",
652 "ZONE_CHANGED_NEW_AREA",
653 "ZONE_UNDER_ATTACK",
654 }
655 end