vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 -- Abomination Wing
2 tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Grobbulus_OnLoad");
3 tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Gluth_OnLoad");
4 tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Thaddius_OnLoad");
5 -- Plague Wing
6 tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Heigan_OnLoad");
7 tinsert(CT_RABoss_ModsToLoad, "CT_RABoss_Gothik_OnLoad");
8 function CT_RABoss_Heigan_OnLoad()
9 CT_RABoss_AddMod("Heigan the Unclean", CT_RABOSS_HEIGAN_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
10 CT_RABoss_AddEvent("Heigan the Unclean", "CHAT_MSG_MONSTER_YELL", CT_RABoss_Heigan_EventHandler);
11 CT_RABoss_AddEvent("Heigan the Unclean", "CHAT_MSG_MONSTER_EMOTE", CT_RABoss_Heigan_EventHandler);
12 CT_RABoss_AddDropDownButton("Heigan the Unclean", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
13 CT_RABoss_AddEvent("Heigan the Unclean", "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", CT_RABoss_Heigan_EventHandler);
14 CT_RABoss_AddEvent("Heigan the Unclean", "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", CT_RABoss_Heigan_EventHandler);
15 CT_RABoss_AddEvent("Heigan the Unclean", "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", CT_RABoss_Heigan_EventHandler);
16 CT_RA_RegisterSlashCmd("/heiganstop", "Stop the Heigan the Unclean bossmod timer.", 30, "HEIGANSTOP", function()
17 CT_RABoss_UnSchedule("CT_RABoss_Heigan_EventHandler");
18 end, "/heiganstop");
19 end
20  
21 function CT_RABoss_Heigan_EventHandler(event)
22 local mod = CT_RABoss_Mods["Heigan the Unclean"];
23 if ( not mod or not mod["status"] or not mod.enabled ) then
24 return;
25 end
26 if ( event == "CHAT_MSG_MONSTER_YELL" ) then
27 if ( not mod.engaged and ( arg1 == CT_RABOSS_HEIGAN_ENGAGE1 or arg1 == CT_RABOSS_HEIGAN_ENGAGE2 or arg1 == CT_RABOSS_HEIGAN_ENGAGE3 ) ) then
28 CT_RABoss_UnSchedule("CT_RABoss_Heigan_EventHandler");
29 CT_RABoss_Announce(CT_RABOSS_HEIGAN_ENGAGED, mod["announce"]);
30 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 10, "splash5");
31 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 75, "cloud15");
32 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 85, "cloud5");
33 mod.feverTrip = nil;
34 elseif ( arg1 == CT_RABOSS_HEIGAN_CLOUD ) then
35 CT_RABoss_Announce(CT_RABOSS_HEIGAN_CLOUDALERT, mod["announce"]);
36 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 40, "cloudstop5");
37 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 45, "cloudstop");
38 end
39 elseif ( event == "CHAT_MSG_MONSTER_EMOTE" ) then
40 if ( arg2 == CT_RABOSS_HEIGAN_NAME and arg1 == CT_RABOSS_HEIGAN_DEATH ) then
41 CT_RABoss_UnSchedule("CT_RABoss_Heigan_EventHandler");
42 end
43 elseif ( event == "splash5" ) then
44 CT_RABoss_Announce(CT_RABOSS_HEIGAN_SPLASH5, mod["announce"]);
45 elseif ( event == "cloud15" ) then
46 CT_RABoss_Announce(format(CT_RABOSS_HEIGAN_PRECLOUD, 15), mod["announce"]);
47 elseif ( event == "cloud5" ) then
48 CT_RABoss_Announce(format(CT_RABOSS_HEIGAN_PRECLOUD, 5), mod["announce"]);
49 elseif ( event == "cloudstop5" ) then
50 CT_RABoss_Announce(CT_RABOSS_HEIGAN_CLOUDSTOP5, mod["announce"]);
51 elseif ( event == "cloudstop" ) then
52 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 5, "splash5");
53 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 75, "cloud15");
54 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 85, "cloud5");
55 CT_RABoss_Announce(CT_RABOSS_HEIGAN_CLOUDSTOP, mod["announce"]);
56 elseif ( event == "feverUntrip" ) then
57 mod.feverTrip = nil;
58 elseif ( not mod.feverTrip ) then
59 if ( string.find(arg1, CT_RABOSS_HEIGAN_FEVERREGEXP) ) then
60 SendChatMessage(CT_RABOSS_HEIGAN_FEVERWARNING, "RAID");
61 mod.feverTrip = true;
62 CT_RABoss_Schedule("CT_RABoss_Heigan_EventHandler", 8, "feverUntrip");
63 end
64 end
65 end
66 -- Grobbulus
67 function CT_RABoss_Grobbulus_OnLoad()
68 CT_RABoss_AddMod("Grobbulus", CT_RABOSS_GROBBULUS_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
69 CT_RABoss_AddEvent("Grobbulus", "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", CT_RABoss_Grobbulus_EventHandler);
70 CT_RABoss_AddEvent("Grobbulus", "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", CT_RABoss_Grobbulus_EventHandler);
71 CT_RABoss_AddEvent("Grobbulus", "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", CT_RABoss_Grobbulus_EventHandler);
72 CT_RABoss_AddDropDownButton("Grobbulus", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
73 CT_RABoss_AddDropDownButton("Grobbulus", { CT_RABOSS_GROBBULUS_INJECTIONTELL, CT_RABOSS_GROBBULUS_INJECTIONTELL_INFO }, "CT_RABoss_ModInfo", "sendInjectionTells", "CT_RABoss_SetInfo");
74 end
75  
76 function CT_RABoss_Grobbulus_EventHandler(event)
77 if ( not CT_RABoss_Mods["Grobbulus"] or not CT_RABoss_Mods["Grobbulus"]["status"] or not CT_RABoss_Mods["Grobbulus"].enabled ) then
78 return;
79 end
80 if ( event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE" ) then
81 local _, _, playerName, playerType = string.find(arg1, CT_RABOSS_GROBBULUS_INJECTIONREGEXP);
82 if ( playerName ) then
83 if ( playerType == CT_RABOSS_GROBBULUS_TYPE_YOU and playerName == CT_RABOSS_GROBBULUS_YOU ) then
84 playerName = UnitName("player");
85 CT_RABoss_Announce(string.format(CT_RABOSS_GROBBULUS_INJECTIONWARNING, CT_RABOSS_GROBBULUS_YOUHAVE));
86 CT_RABoss_Announce(string.format(CT_RABOSS_GROBBULUS_INJECTIONWARNING, CT_RABOSS_GROBBULUS_YOUHAVE));
87 CT_RABoss_PlaySound(2);
88 else
89 if ( CT_RABoss_Mods["Grobbulus"]["sendInjectionTells"] ) then
90 SendChatMessage(CT_RABOSS_GROBBULUS_INJECTIONWARNING_TELL, "WHISPER", nil, playerName);
91 end
92 CT_RABoss_PlaySound(1);
93 CT_RABoss_Announce(string.format(CT_RABOSS_GROBBULUS_INJECTIONWARNING, playerName .. CT_RABOSS_GROBBULUS_HAS));
94 end
95 if ( CT_RA_Level >= 1 and CT_RABoss_Mods["Grobbulus"]["announce"] ) then
96 CT_RA_AddMessage("MS " .. string.format(CT_RABOSS_GROBBULUS_INJECTIONWARNING, playerName));
97 end
98 end
99 end
100 end
101  
102 -- Gluth
103 function CT_RABoss_Gluth_OnLoad()
104 CT_RABoss_AddMod("Gluth", CT_RABOSS_GLUTH_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
105 CT_RABoss_AddEvent("Gluth", "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", CT_RABoss_Gluth_EventHandler);
106 CT_RABoss_AddEvent("Gluth", "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", CT_RABoss_Gluth_EventHandler);
107 CT_RABoss_AddEvent("Gluth", "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", CT_RABoss_Gluth_EventHandler);
108 CT_RABoss_AddEvent("Gluth", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_Gluth_EventHandler);
109 CT_RABoss_AddEvent("Gluth", "PLAYER_LEAVING_WORLD", CT_RABoss_Gluth_EventHandler);
110 CT_RABoss_AddDropDownButton("Gluth", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
111 end
112  
113 function CT_RABoss_Gluth_EventHandler(event)
114 local mod = CT_RABoss_Mods["Gluth"];
115 if ( not mod or not mod["status"] or not mod.enabled ) then
116 return;
117 end
118 if ( event == "PLAYER_LEAVING_WORLD" ) then
119 CT_RABoss_UnSchedule("CT_RABoss_Gluth_EventHandler");
120 mod.engaged = nil;
121 elseif ( event == "fear3" ) then
122 mod.fearTrip = nil;
123 CT_RABoss_Announce(CT_RABOSS_GLUTH_PREFEAR, mod.announce);
124 elseif ( event == "preDecimate15" ) then
125 CT_RABoss_Announce(string.format(CT_RABOSS_GLUTH_PREDECIMATE, 15), mod.announce);
126 mod.decimateTrip = nil;
127 elseif ( event == "preDecimate5" ) then
128 CT_RABoss_Announce(string.format(CT_RABOSS_GLUTH_PREDECIMATE, 5), mod.announce);
129  
130 elseif ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" ) then
131 if ( not mod.decimateTrip and string.find(arg1, CT_RABOSS_GLUTH_DECIMATESTRING) ) then
132 CT_RABoss_UnSchedule("CT_RABoss_Gluth_EventHandler", "preDecimate15");
133 CT_RABoss_UnSchedule("CT_RABoss_Gluth_EventHandler", "preDecimate5");
134 CT_RABoss_Schedule("CT_RABoss_Gluth_EventHandler", 90, "preDecimate15");
135 CT_RABoss_Schedule("CT_RABoss_Gluth_EventHandler", 100, "preDecimate5");
136 mod.decimateTrip = true;
137 CT_RABoss_Announce(CT_RABOSS_GLUTH_DECIMATE, mod.announce);
138 end
139 elseif ( not mod.fearTrip and string.find(arg1, CT_RABOSS_GLUTH_FEARSTRING) ) then
140 CT_RABoss_Schedule("CT_RABoss_Gluth_EventHandler", 15, "fear3");
141 mod.fearTrip = true;
142 CT_RABoss_Announce(CT_RABOSS_GLUTH_FEAR, mod.announce);
143 if ( not mod.engaged ) then
144 CT_RABoss_Schedule("CT_RABoss_Gluth_EventHandler", 70, "preDecimate15");
145 CT_RABoss_Schedule("CT_RABoss_Gluth_EventHandler", 80, "preDecimate5");
146 mod.engaged = true;
147 end
148 end
149 end
150  
151 -- Gothik the Harvest
152 function CT_RABoss_Gothik_OnLoad()
153 CT_RABoss_AddMod("Gothik the Harvester", CT_RABOSS_GOTHIK_INFO, 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
154 CT_RABoss_AddEvent("Gothik the Harvester", "CHAT_MSG_MONSTER_YELL", CT_RABoss_Gothik_EventHandler);
155 CT_RABoss_AddEvent("Gothik the Harvester", "CHAT_MSG_COMBAT_HOSTILE_DEATH", CT_RABoss_Gothik_EventHandler);
156 CT_RABoss_AddDropDownButton("Gothik the Harvester", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
157 CT_RABoss_AddDropDownButton("Gothik the Harvester", { CT_RABOSS_GOTHIK_RIDERSPAWN, CT_RABOSS_GOTHIK_RIDERSPAWN_INFO }, "CT_RABoss_ModInfo", "riderSpawn", "CT_RABoss_SetInfo");
158 CT_RABoss_AddDropDownButton("Gothik the Harvester", { CT_RABOSS_GOTHIK_DKSPAWN, CT_RABOSS_GOTHIK_DKSPAWN_INFO }, "CT_RABoss_ModInfo", "dkSpawn", "CT_RABoss_SetInfo");
159 CT_RABoss_AddDropDownButton("Gothik the Harvester", { CT_RABOSS_GOTHIK_TRAINEESPAWN, CT_RABOSS_GOTHIK_TRAINEESPAWN_INFO }, "CT_RABoss_ModInfo", "traineeSpawn", "CT_RABoss_SetInfo");
160 CT_RA_RegisterSlashCmd("/gothikstop", "Stop Gothik's timers.", 30, "GOTHIKSTOP", function()
161 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler");
162 end, "/gothikstop");
163 end
164  
165 function CT_RABoss_Gothik_EventHandler(event)
166 local mod = CT_RABoss_Mods["Gothik the Harvester"];
167 if ( not mod or not mod["status"] or not mod.enabled ) then
168 return;
169 end
170 if ( event == "CHAT_MSG_MONSTER_YELL" ) then
171 if ( arg1 == CT_RABOSS_GOTHIK_ENGAGE ) then
172 mod.riderCount = 0;
173 mod.traineeCount = 0;
174 CT_RABoss_Announce(CT_RABOSS_GOTHIK_ENGAGED, mod.announce);
175 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 7, "trainee");
176 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 57, "deathknight");
177 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 117, "rider");
178 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 195, "preteleport");
179 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 245, "preteleport10");
180  
181 elseif ( arg1 == CT_RABOSS_GOTHIK_TELEPORT ) then
182 CT_RABoss_Announce(CT_RABOSS_GOTHIK_FIGHT, mod.announce);
183 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler");
184 end
185 elseif ( event == "CHAT_MSG_COMBAT_HOSTILE_DEATH" ) then
186 if ( arg1 == CT_RABOSS_GOTHIK_RIDERDEATHSTRING ) then
187 CT_RABoss_Announce(CT_RABOSS_GOTHIK_RIDERDEATH, mod.announce);
188 elseif ( arg1 == CT_RABOSS_GOTHIK_DEATHKNIGHTDEATHSTRING ) then
189 CT_RABoss_Announce(CT_RABOSS_GOTHIK_DEATHKNIGHTDEATH, mod.announce);
190 end
191 elseif ( event == "rider" or event == "riderRepeat" ) then
192 mod.riderCount = mod.riderCount + 1;
193 if ( mod.riderCount == 4 ) then
194 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler", "riderRepeat");
195 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler", "riderTimer");
196 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 7, "spawnsStopped");
197 else
198 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 30, "riderRepeat");
199 end
200 if ( event == "rider" or mod.riderSpawn ) then
201 CT_RABoss_Announce(CT_RABOSS_GOTHIK_RIDER, mod.announce);
202 end
203 elseif ( event == "deathknight" or event == "deathknightRepeat" ) then
204 if ( mod.riderCount == 4 ) then
205 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler", "deathknightRepeat");
206 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler", "deathknightTimer");
207 else
208 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 25, "deathknightRepeat");
209 end
210 if ( event == "deathknight" or mod.dkSpawn ) then
211 CT_RABoss_Announce(CT_RABOSS_GOTHIK_DEATHKNIGHT, mod.announce);
212 end
213 elseif ( event == "trainee" or event == "traineeRepeat" ) then
214 mod.traineeCount = mod.traineeCount + 1;
215 if ( mod.riderCount == 4 ) then
216 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler", "traineeRepeat");
217 CT_RABoss_UnSchedule("CT_RABoss_Gothik_EventHandler", "traineeTimer");
218 else
219 CT_RABoss_Schedule("CT_RABoss_Gothik_EventHandler", 20, "traineeRepeat");
220 end
221 if ( event == "trainee" or mod.traineeSpawn ) then
222 CT_RABoss_Announce(string.format(CT_RABOSS_GOTHIK_TRAINEE, mod.traineeCount), mod.announce);
223 end
224 elseif ( event == "preteleport" ) then
225 CT_RABoss_Announce(string.format(CT_RABOSS_GOTHIK_PRESPAWN, "1 MIN"), mod.announce);
226 elseif ( event == "preteleport10" ) then
227 CT_RABoss_Announce(string.format(CT_RABOSS_GOTHIK_PRESPAWN, "10 SEC"), mod.announce);
228  
229 elseif ( event == "spawnsStopped" ) then
230 CT_RABoss_Announce(CT_RABOSS_GOTHIK_SPAWNSSTOPPED, mod.announce);
231 end
232 end
233  
234 -- Thaddius
235 function CT_RABoss_Thaddius_OnLoad()
236 CT_RABoss_AddMod("Thaddius", "Stuff.", 1, CT_RABOSS_LOCATIONS_NAXXRAMAS);
237 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_MONSTER_YELL", CT_RABoss_Thaddius_EventHandler);
238 CT_RABoss_AddEvent("Thaddius", "PLAYER_LEAVING_WORLD", CT_RABoss_Thaddius_EventHandler);
239 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS", CT_RABoss_Thaddius_EventHandler);
240 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", CT_RABoss_Thaddius_EventHandler);
241 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", CT_RABoss_Thaddius_EventHandler);
242 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", CT_RABoss_Thaddius_EventHandler);
243 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_MONSTER_EMOTE", CT_RABoss_Thaddius_EventHandler);
244 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", CT_RABoss_Thaddius_EventHandler);
245 CT_RABoss_AddEvent("Thaddius", "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF", CT_RABoss_Thaddius_EventHandler);
246 CT_RABoss_AddDropDownButton("Thaddius", { CT_RABOSS_ANNOUNCE, CT_RABOSS_ANNOUNCE_INFO .. CT_RABOSS_REQ_LEADER_OR_PROM }, "CT_RABoss_ModInfo", "announce", "CT_RABoss_SetInfo");
247 CT_RABoss_AddDropDownButton("Thaddius", { CT_RABOSS_THADDIUS_THROW, CT_RABOSS_THADDIUS_THROW_INFO }, "CT_RABoss_ModInfo", "throw", "CT_RABoss_SetInfo");
248 CT_RABoss_AddDropDownButton("Thaddius", { CT_RABOSS_THADDIUS_TELLS, CT_RABOSS_THADDIUS_TELLS_INFO }, "CT_RABoss_ModInfo", "tells", "CT_RABoss_SetInfo");
249 end
250  
251 function CT_RABoss_Thaddius_EventHandler(event)
252 local mod = CT_RABoss_Mods["Thaddius"];
253 if ( not mod or not mod["status"] or not mod.enabled ) then
254 return;
255 end
256  
257 if ( event == "CHAT_MSG_MONSTER_YELL" ) then
258 if ( not mod.engaged and ( arg1 == CT_RABOSS_THADDIUS_ENGAGEYELL1 or arg1 == CT_RABOSS_THADDIUS_ENGAGEYELL2 ) ) then
259 mod.engaged = true;
260 CT_RABoss_Announce(CT_RABOSS_THADDIUS_PHASE1, mod.announce);
261 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 15, "throw5");
262 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 20, "throw");
263 elseif ( arg1 == CT_RABOSS_THADDIUS_PHASETWOYELL1 or arg1 == CT_RABOSS_THADDIUS_PHASETWOYELL2 or arg1 == CT_RABOSS_THADDIUS_PHASETWOYELL3 ) then
264 CT_RABoss_Announce(CT_RABOSS_THADDIUS_PHASE2, mod.announce);
265 CT_RABoss_UnSchedule("CT_RABoss_Thaddius_EventHandler", "throw5");
266 CT_RABoss_UnSchedule("CT_RABoss_Thaddius_EventHandler", "throw");
267 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 120, "enrage3 min");
268 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 240, "enrage1 min");
269 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 285, "enrage15 sec");
270 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 295, "enrage5 sec");
271  
272 if ( not mod.charges ) then
273 mod.charges = { };
274 else
275 for key, val in pairs(mod.charges) do
276 mod.charges[key] = nil;
277 end
278 end
279 end
280 elseif ( event == "PLAYER_LEAVING_WORLD" ) then
281 mod.engaged = nil;
282 CT_RABoss_UnSchedule("CT_RABoss_Thaddius_EventHandler");
283 elseif ( event == "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS" ) then
284 if ( arg1 == CT_RABOSS_THADDIUS_SURGESTRING ) then
285 CT_RABoss_Announce(CT_RABOSS_THADDIUS_SURGE, mod.announce);
286 end
287  
288 elseif ( event == "throw5" ) then
289 CT_RABoss_Announce(CT_RABOSS_THADDIUS_THROWMSG5, mod.announce);
290 elseif ( event == "throw" ) then
291 CT_RABoss_Announce(CT_RABOSS_THADDIUS_THROWMSG, mod.announce);
292 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 16, "throw5");
293 CT_RABoss_Schedule("CT_RABoss_Thaddius_EventHandler", 21, "throw");
294  
295 elseif ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" or event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF" ) then
296 if ( arg1 == CT_RABOSS_THADDIUS_POLARITYCASTSTRING ) then
297 CT_RABoss_Announce(CT_RABOSS_THADDIUS_POLARITY, mod.announce);
298 end
299 elseif ( event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE" ) then
300 if ( mod.tells ) then
301 local _, _, name, type, debuff = string.find(arg1, CT_RABOSS_THADDIUS_CHARGEREGEXP);
302 if ( name ) then
303 local charges = mod.charges;
304 if ( name == CT_RABOSS_THADDIUS_YOU and type == CT_RABOSS_THADDIUS_TYPE_YOU ) then
305 name = UnitName("player");
306 end
307  
308 if ( debuff ~= charges[name] ) then
309 CT_RaidAssist2:SendSilentMessage(getglobal("CT_RABOSS_THADDIUS_CHARGE_"..debuff), "WHISPER", name);
310 end
311 charges[name] = debuff;
312 end
313 end
314 elseif ( event == "CHAT_MSG_MONSTER_EMOTE" ) then
315 if ( arg1 == CT_RABOSS_THADDIUS_ENRAGESTRING and arg2 == CT_RABOSS_THADDIUS_BOSSNAME ) then
316 CT_RABoss_Announce(CT_RABOSS_THADDIUS_ENRAGE, mod.announce);
317 end
318 elseif ( string.sub(event, 0, 6) == "enrage" ) then
319 CT_RABoss_Announce(string.format(CT_RABOSS_THADDIUS_ENRAGEIN, string.sub(event, 7)), mod.announce);
320 end
321 end
322  
323 --[[ Simulate Polarity Shift, uncomment if you want to have a go!
324 SLASH_PRACTICETHADDIUS1 = "/practicethaddius";
325 SLASH_PRACTICETHADDIUS2 = "/pt";
326 local positive = { };
327 SlashCmdList["PRACTICETHADDIUS"] = function()
328 -- Clear the "positive" table
329 for key, val in pairs(positive) do
330 positive[key] = nil;
331 end
332  
333 -- Grab four groups
334 local num = 0;
335 while ( num < 4 ) do
336 local rnd = math.random(1, 8);
337 if ( not positive[rnd] ) then
338 num = num + 1;
339 positive[rnd] = true;
340 end
341 end
342  
343 -- Send tells
344 local name, rank, subgroup;
345 for i = 1, GetNumRaidMembers(), 1 do
346 name, rank, subgroup = GetRaidRosterInfo(i);
347 if ( positive[subgroup] ) then
348 CT_RaidAssist2:SendSilentMessage("YOU ARE POSITIVE", "WHISPER", name);
349 else
350 CT_RaidAssist2:SendSilentMessage("YOU ARE NEGATIVE", "WHISPER", name);
351 end
352 end
353 end ]]