vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 ------------------------------
2 -- Are you local? --
3 ------------------------------
4  
5 local boss = AceLibrary("Babble-Boss-2.2")["Kel'Thuzad"]
6 local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)
7  
8 local mcTime
9 local frostBlastTime
10  
11 ----------------------------
12 -- Localization --
13 ----------------------------
14  
15 L:RegisterTranslations("enUS", function() return {
16 cmd = "Kelthuzad",
17  
18 KELTHUZADCHAMBERLOCALIZEDLOLHAX = "Kel'Thuzad Chamber",
19  
20 phase_cmd = "phase",
21 phase_name = "Phase Warnings",
22 phase_desc = "Warn for phases.",
23  
24 mc_cmd = "mindcontrol",
25 mc_name = "Mind Control Alert",
26 mc_desc = "Alerts when people are mind controlled.",
27  
28 fissure_cmd = "fissure",
29 fissure_name = "Shadow Fissure Alert",
30 fissure_desc = "Alerts about incoming Shadow Fizzures.",
31  
32 frostblast_cmd = "frostblast",
33 frostblast_name = "Frost Blast Alert",
34 frostblast_desc = "Alerts when people get Frost Blasted.",
35  
36 detonate_cmd = "detonate",
37 detonate_name = "Detonate Mana Warning",
38 detonate_desc = "Warns about Detonate Mana soon.",
39  
40 detonateicon_cmd = "detonateicon",
41 detonateicon_name = "Raid Icon on Detonate",
42 detonateicon_desc = "Place a raid icon on people with Detonate Mana.",
43  
44 guardians_cmd = "guardians",
45 guardians_name = "Guardian Spawns",
46 guardians_desc = "Warn for incoming Icecrown Guardians in phase 3.",
47  
48 mc_trigger1 = "Your soul is bound to me, now!",
49 mc_trigger2 = "There will be no escape!",
50 mc_warning = "Mind Control!",
51  
52 start_trigger = "Minions, servants, soldiers of the cold dark! Obey the call of Kel'Thuzad!",
53 start_warning = "Kel'Thuzad encounter started! ~5min till he is active!",
54 start_bar = "Phase 2",
55  
56 phase2_trigger = "Pray for mercy!",
57 phase2_warning = "Phase 2, Kel'Thuzad incoming!",
58 phase2_bar = "Kel'Thuzad Active!",
59  
60 phase3_soon_warning = "Phase 3 soon!",
61 phase3_trigger = "Master, I require aid!",
62 phase3_warning = "Phase 3, Guardians in ~15sec!",
63  
64 guardians_trigger = "Very well. Warriors of the frozen wastes, rise up! I command you to fight, kill and die for your master! Let none survive!",
65 guardians_warning = "Guardians incoming in ~10sec!",
66 guardians_bar = "Guardians incoming!",
67  
68 fissure_trigger = "Kel'Thuzad casts Shadow Fissure.",
69 fissure_warning = "Shadow Fissure!",
70  
71 frostblast_bar = "Possible Frost Blast",
72 frostblast_trigger = "^([^%s]+) ([^%s]+) afflicted by Frost Blast",
73 frostblast_warning = "Frost Blast!",
74 frostblast_soon_message = "Possible Frost Blast in ~5sec!",
75  
76 detonate_trigger = "^([^%s]+) ([^%s]+) afflicted by Detonate Mana",
77 detonate_bar = "Detonate Mana - %s",
78 detonate_possible_bar = "Possible Detonate",
79 detonate_warning = "%s has Detonate Mana!",
80  
81 you = "You",
82 are = "are",
83 } end )
84  
85 L:RegisterTranslations("koKR", function() return {
86  
87 KELTHUZADCHAMBERLOCALIZEDLOLHAX = "캘투자드 연구실",
88  
89 phase_name = "단계 알림",
90 phase_desc = "단계에 대한 알림.",
91  
92 mc_name = "정신 지배",
93 mc_desc = "정신 지배 경고.",
94  
95 fissure_name = "어둠의 분열 경고",
96 fissure_desc = "어둠의 분열 시전에 관한 경고.",
97  
98 frostblast_name = "냉기작열 경고",
99 frostblast_desc = "냉기 작열에 걸렸을 때 경고.",
100  
101 detonate_name = "마나 폭발 경고",
102 detonate_desc = "마나 폭발에 대한 경고.",
103  
104 detonateicon_name = "폭발 공격대 아이콘",
105 detonateicon_desc = "마나 폭발인 사람에게 공격대 아이콘 지정.",
106  
107 guardians_name = "Guardian Spawns",
108 guardians_desc = "Warn for incoming Icecrown Guardians in phase 3.",
109  
110 mc_trigger1 = "Your soul is bound to me, now!", -- CHECK
111 mc_trigger2 = "There will be no escape!", -- CHECK
112 mc_warning = "정신 지배!",
113  
114 start_trigger = "Minions, servants, soldiers of the cold dark! Obey the call of Kel'Thuzad!", -- CHECK
115 start_warning = "Kel'Thuzad encounter started! ~5min till he is active!", -- CHECK
116 start_bar = "2 단계",
117  
118 phase2_trigger = "Pray for mercy!", -- CHECK
119 phase2_warning = "2 단계, 켈투자드 다가옴!",
120 phase2_bar = "켈투자드 활동!",
121  
122 phase3_soon_warning = "곧 3 단계 돌입!",
123 phase3_trigger = "Master, I require aid!", -- CHECK
124 phase3_warning = "3 단계, Guardians in ~15sec!",
125  
126 guardians_trigger = "Very well. Warriors of the frozen wastes, rise up! I command you to fight, kill and die for your master! Let none survive!", -- CHECK
127 guardians_warning = "Guardians incoming in ~10sec!",
128 guardians_bar = "Guardians incoming!",
129  
130 fissure_trigger = "켈투자드|1이;가; 어둠의 분열|1을;를; 시전합니다.",
131 fissure_warning = "어둠의 분열!",
132  
133 frostblast_bar = "냉기 작열 가능",
134 frostblast_trigger = "^([^|;%s]*)(.*)냉기 작열에 걸렸습니다%.$",
135 frostblast_warning = "냉기 작열!",
136 frostblast_soon_message = "냉기 작열 가능 - 약 5초 이내!",
137  
138 detonate_trigger = "^([^|;%s]*)(.*)마나 폭발에 걸렸습니다%.$",
139 detonate_bar = "마나 폭발 - %s",
140 detonate_possible_bar = "폭발 가능",
141 detonate_warning = "%s%|1이;가; 마나 폭발!",
142  
143 you = "",
144 are = "",
145 } end )
146  
147 L:RegisterTranslations("deDE", function() return {
148 KELTHUZADCHAMBERLOCALIZEDLOLHAX = "Kel'Thuzads Gem\195\164cher",
149  
150 phase_name = "Phasenwarnung",
151 phase_desc = "Warnt vor den verschiedenen Phasen.",
152  
153 mc_name = "Gedankenkontrolle Warnung",
154 mc_desc = "Warnt, wenn Spieler von Gedankenkontrolle betroffen sind.",
155  
156 fissure_name = "Schattenspalt Warnung",
157 fissure_desc = "Warnt vor Schattenspalt.",
158  
159 frostblast_name = "Frostschlag Warnung",
160 frostblast_desc = "Warnt wenn Leute Frostschlag bekommen.",
161  
162 detonate_name = "Detonierendes Mana Warnung",
163 detonate_desc = "Warnt vor Detonierendes Mana.",
164  
165 detonateicon_name = "Schlachtzugicon bei Detonierung",
166 detonateicon_desc = "Plaziert ein Icon auf Spielern mit Detonierendes Mana.",
167  
168 guardians_name = "Guardian Spawns",
169 guardians_desc = "Warn for incoming Icecrown Guardians in phase 3.",
170  
171 mc_trigger1 = "Eure Seele geh\195\182rt jetzt mir!",
172 mc_trigger2 = "Es gibt kein Entkommen!",
173 mc_warning = "Gedankenkontrolle!",
174  
175 start_trigger = "Diener, J\195\188nger, Soldaten der eisigen Finsternis! Folgt dem Ruf von Kel'Thuzad!",
176 start_warning = "Kel'Thuzad Encounter gestarted! ~5min bis er aktiv wird!",
177 start_bar = "Phase 2",
178  
179 phase2_trigger = "Fleht um Gnade!",
180 phase2_warning = "Phase 2, Kel'Thuzad kommt!",
181 phase2_bar = "Kel'Thuzad aktiv!",
182  
183 phase3_soon_warning = "Phase 3 bald!",
184 phase3_trigger = "Meister, helft mir!",
185 phase3_warning = "Phase 3, W\195\164chter in ~15sek!",
186  
187 guardians_trigger = "Also gut. Erhebt euch, Krieger der eisigen Weiten! Ich befehle euch zu k\195\164mpfen, zu t\195\182ten und f\195\188r euren Meister zu sterben! Lasst keinen am Leben!",
188 guardians_warning = "W\195\164chter in ~10sek!",
189 guardians_bar = "W\195\164chter kommen!",
190  
191 fissure_trigger = "Kel'Thuzad wirkt Schattenspalt.",
192 fissure_warning = "Schattenspalt!",
193  
194 frostblast_trigger = "^([^%s]+) ([^%s]+) von Frostschlag betroffen",
195 frostblast_warning = "Frostschlag!",
196  
197 detonate_trigger = "^([^%s]+) ([^%s]+) von Detonierendes Mana betroffen",
198 detonate_bar = "Detonierendes Mana - %s",
199 detonate_possible_bar = "Detonierendes Mana",
200 detonate_warning = "%s hat Detonierendes Mana!",
201  
202 you = "Ihr",
203 are = "seid",
204 } end )
205  
206 L:RegisterTranslations("zhCN", function() return {
207 KELTHUZADCHAMBERLOCALIZEDLOLHAX = "克尔苏加德的大厅",
208  
209 phase_name = "每个阶段警报",
210 phase_desc = "每个阶段警报",
211  
212 mc_name = "精神控制警报",
213 mc_desc = "当有人被精神控制后警报",
214  
215 fissure_name = "暗影裂隙警报",
216 fissure_desc = "警报即将来领的暗影裂隙",
217  
218 frostblast_name = "冰霜冲击警报",
219 frostblast_desc = "当有人被冰霜冲击后警报",
220  
221 detonate_name = "自爆法力警报",
222 detonate_desc = "警报即将来领的自爆法力",
223  
224 detonateicon_name = "自爆法力标记",
225 detonateicon_desc = "标记即将自爆法力的人",
226  
227 guardians_name = "寒冰皇冠卫士警报",
228 guardians_desc = "提前警报第三阶段召唤来的寒冰皇冠卫士",
229  
230 mc_trigger1 = "你的灵魂现在属于我了!",
231 mc_trigger2 = "没有人能逃得掉!",
232 mc_warning = "精神控制!",
233  
234 start_trigger = "仆从们,侍卫们,隶属于黑暗与寒冷战士们!听从克尔苏加德的召唤!",
235 start_warning = "克尔苏加德之战开始,他将在~5分钟后激活!",
236 start_bar = "第二阶段",
237  
238 phase2_trigger = "祈祷我的慈悲吧!",
239 phase2_warning = "第二阶段开始,克尔苏加德来了!",
240 phase2_bar = "克尔苏加德激活!",
241  
242 phase3_soon_warning = "第三阶段即将来到!",
243 phase3_trigger = "主人,我需要帮助!",
244 phase3_warning = "第三阶段开始,~15秒后卫士出现!",
245  
246 guardians_trigger = "很好,冰荒废土的战士们,起来吧!我命令你们为主人而战斗,杀戮,直到死亡!一个活口都不要留!",
247 guardians_warning = "~10秒后卫士出现!",
248 guardians_bar = "卫士出现!",
249  
250 fissure_trigger = "克尔苏加德施放了暗影裂隙。",
251 fissure_warning = "暗影裂隙!",
252  
253 frostblast_bar = "可能的冰霜冲击",
254 frostblast_trigger = "^(.+)受到了冰霜冲击的影响。",
255 frostblast_warning = "冰霜冲击!",
256 frostblast_soon_message = "~5秒后可能有冰霜冲击!",
257  
258 detonate_trigger = "^(.+)受到了自爆法力的影响。",
259 detonate_bar = "自爆法力 - %s",
260 detonate_possible_bar = "可能的自爆",
261 detonate_warning = "%s中了自爆法力!",
262  
263 you = "你",
264 are = "到",
265 } end )
266  
267  
268 L:RegisterTranslations("zhTW", function() return {
269  
270 KELTHUZADCHAMBERLOCALIZEDLOLHAX = "科爾蘇加德的大廳",
271  
272 phase_name = "每個階段警報",
273 phase_desc = "每個階段警報",
274  
275 mc_name = "心靈控制警報",
276 mc_desc = "當有人被心靈控制後警報",
277  
278 fissure_name = "暗影裂縫警報",
279 fissure_desc = "警報即將來領的暗影裂縫",
280  
281 frostblast_name = "冰霜衝擊警報",
282 frostblast_desc = "當有人被冰霜衝擊後警報",
283  
284 detonate_name = "爆裂法力警報",
285 detonate_desc = "警報即將來領的爆裂法力",
286  
287 detonateicon_name = "爆裂法力標記",
288 detonateicon_desc = "標記即將爆裂法力的人",
289  
290 guardians_name = "寒冰皇冠守衛者警報",
291 guardians_desc = "提前警報第三階段召喚來的寒冰皇冠守衛者",
292  
293 mc_trigger1 = "你的靈魂現在屬於我了!",
294 mc_trigger2 = "沒有人能逃得掉!",
295 mc_warning = "精神控制!",
296  
297 start_trigger = "僕從們,侍衛們,隸屬於黑暗與寒冷的戰士!聽從科爾蘇加德的召換!",
298 start_warning = "科爾蘇加德之戰開始,他將在 5 分鐘後進入戰鬥!",
299 start_bar = "第二階段",
300  
301 phase2_trigger = "祈禱我的慈悲吧!",
302 phase2_warning = "第二階段開始,科爾蘇加德來了!",
303 phase2_bar = "科爾蘇加德進入戰鬥!",
304  
305 phase3_soon_warning = "第三階段即將來到!",
306 phase3_trigger = "主人,我需要",
307 phase3_warning = "第三階段開始, 15 秒後衛士出現!",
308  
309 guardians_trigger = "那好吧。冰冷廢墟的戰士,站起來!我命令你戰鬥,為你的主人而殺,而死!不要留一個!", -- need to check the line
310 guardians_warning = " 10 秒後護衛出現!",
311 guardians_bar = "護衛出現!",
312  
313 fissure_trigger = "科爾蘇加德施放了暗影裂縫。",
314 fissure_warning = "暗影裂縫!",
315  
316 frostblast_bar = "可能的冰霜衝擊",
317 frostblast_trigger = "^(.+)受到(.+)冰霜衝擊的影響。",
318 frostblast_warning = "冰霜沖擊!",
319 frostblast_soon_message = "~5秒後可能有冰霜衝擊!",
320  
321 detonate_trigger = "^(.+)受到(.+)爆裂法力的影響。",
322 detonate_bar = "爆裂法力 - %s",
323 detonate_possible_bar = "可能的爆裂法力",
324 detonate_warning = "%s中了爆裂法力!",
325  
326 you = "你",
327 are = "了",
328 } end )
329  
330 ----------------------------------
331 -- Module Declaration --
332 ----------------------------------
333  
334 BigWigsKelThuzad = BigWigs:NewModule(boss)
335 BigWigsKelThuzad.zonename = AceLibrary("Babble-Zone-2.2")["Naxxramas"]
336 BigWigsKelThuzad.enabletrigger = boss
337 BigWigsKelThuzad.toggleoptions = { "frostblast", "fissure", "mc", -1, "detonate", "detonateicon", -1 ,"guardians", "phase", "bosskill" }
338 BigWigsKelThuzad.revision = tonumber(string.sub("$Revision: 17275 $", 12, -3))
339  
340 ------------------------------
341 -- Initialization --
342 ------------------------------
343  
344 function BigWigsKelThuzad:OnRegister()
345 -- Big evul hack to enable the module when entering Kel'Thuzads chamber.
346 self:RegisterEvent("MINIMAP_ZONE_CHANGED")
347 end
348  
349 function BigWigsKelThuzad:OnEnable()
350 self.warnedAboutPhase3Soon = nil
351  
352 frostBlastTime = nil
353 mcTime = nil
354  
355 self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
356 self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE")
357 self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")
358 self:RegisterEvent("UNIT_HEALTH")
359  
360 self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", "Affliction")
361 self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", "Affliction")
362 self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", "Affliction")
363  
364 self:RegisterEvent("BigWigs_RecvSync")
365 self:TriggerEvent("BigWigs_ThrottleSync", "KelDetonate", 5)
366 self:TriggerEvent("BigWigs_ThrottleSync", "KelFrostBlast", 5)
367 self:TriggerEvent("BigWigs_ThrottleSync", "KelFizzure", 2)
368 self:TriggerEvent("BigWigs_ThrottleSync", "KelMindControl", 5)
369 end
370  
371 ------------------------------
372 -- Event Handlers --
373 ------------------------------
374  
375 function BigWigsKelThuzad:MINIMAP_ZONE_CHANGED(msg)
376 if GetMinimapZoneText() ~= L["KELTHUZADCHAMBERLOCALIZEDLOLHAX"] or self.core:IsModuleActive(boss) then return end
377 -- Activate the Kel'Thuzad mod!
378 self.core:EnableModule(boss)
379 end
380  
381 function BigWigsKelThuzad:UNIT_HEALTH(msg)
382 if not self.db.profile.phase then return end
383  
384 if UnitName(msg) == boss then
385 local health = UnitHealth(msg)
386 if health > 40 and health <= 43 and not self.warnedAboutPhase3Soon then
387 self:TriggerEvent("BigWigs_Message", L["phase3_soon_warning"], "Attention")
388 self.warnedAboutPhase3Soon = true
389 elseif health > 60 and self.warnedAboutPhase3Soon then
390 self.warnedAboutPhase3Soon = nil
391 end
392 end
393 end
394  
395 function BigWigsKelThuzad:CHAT_MSG_MONSTER_YELL(msg)
396 if self.db.profile.phase and msg == L["start_trigger"] then
397 self:TriggerEvent("BigWigs_Message", L["start_warning"], "Attention")
398 self:TriggerEvent("BigWigs_StartBar", self, L["start_bar"], 320 )
399 elseif self.db.profile.phase and msg == L["phase2_trigger"] then
400 self:TriggerEvent("BigWigs_StopBar", self, L["start_bar"] )
401 self:TriggerEvent("BigWigs_Message", L["phase2_warning"], "Important")
402 self:TriggerEvent("BigWigs_StartBar", self, L["phase2_bar"], 20 )
403 elseif self.db.profile.phase and msg == L["phase3_trigger"] then
404 self:TriggerEvent("BigWigs_Message", L["phase3_warning"], "Attention")
405 elseif msg == L["mc_trigger1"] or msg == L["mc_trigger2"] then
406 if not mcTime or (mcTime + 2) < GetTime() then
407 self:TriggerEvent("BigWigs_SendSync", "KelMindControl")
408 mcTime = GetTime()
409 end
410 elseif self.db.profile.guardians and msg == L["guardians_trigger"] then
411 self:TriggerEvent("BigWigs_Message", L["guardians_warning"], "Important")
412 self:TriggerEvent("BigWigs_StartBar", self, L["guardians_bar"], 10)
413 end
414 end
415  
416 function BigWigsKelThuzad:CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE( msg )
417 if msg == L["fissure_trigger"] then
418 self:TriggerEvent("BigWigs_SendSync", "KelFizzure")
419 end
420 end
421  
422 function BigWigsKelThuzad:BigWigs_RecvSync(sync, rest, nick)
423 if sync == "KelDetonate" and rest and self.db.profile.detonate then
424 self:TriggerEvent("BigWigs_Message", string.format(L["detonate_warning"], rest), "Attention")
425 if self.db.profile.detonateicon then self:TriggerEvent("BigWigs_SetRaidIcon", rest ) end
426 self:TriggerEvent("BigWigs_StartBar", self, string.format(L["detonate_bar"], rest), 5, "Interface\\Icons\\Spell_Nature_WispSplode")
427 self:TriggerEvent("BigWigs_StartBar", self, L["detonate_possible_bar"], 20, "Interface\\Icons\\Spell_Nature_WispSplode")
428 elseif sync == "KelFrostBlast" and self.db.profile.frostblast then
429 self:TriggerEvent("BigWigs_Message", L["frostblast_warning"], "Attention")
430 self:ScheduleEvent("bwktfbwarn", "BigWigs_Message", 20, L["frostblast_soon_message"])
431 self:TriggerEvent("BigWigs_StartBar", self, L["frostblast_bar"], 25, "Interface\\Icons\\Spell_Frost_FreezingBreath")
432 elseif sync == "KelFizzure" and self.db.profile.fissure then
433 self:TriggerEvent("BigWigs_Message", L["fissure_warning"], "Important")
434 elseif sync == "KelMindControl" and self.db.profile.mc then
435 self:TriggerEvent("BigWigs_Message", L["mc_warning"], "Urgent")
436 end
437 end
438  
439 function BigWigsKelThuzad:Affliction( msg )
440 if string.find(msg, L["detonate_trigger"]) then
441 local _,_, dplayer, dtype = string.find( msg, L["detonate_trigger"])
442 if dplayer and dtype then
443 if dplayer == L["you"] and dtype == L["are"] then
444 dplayer = UnitName("player")
445 end
446 self:TriggerEvent("BigWigs_SendSync", "KelDetonate "..dplayer)
447 end
448 elseif string.find(msg, L["frostblast_trigger"]) then
449 if not frostBlastTime or (frostBlastTime + 2) < GetTime() then
450 self:TriggerEvent("BigWigs_SendSync", "KelFrostBlast")
451 frostBlastTime = GetTime()
452 end
453 end
454 end