vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | ------------------------------ |
2 | -- Are you local? -- |
||
3 | ------------------------------ |
||
4 | |||
5 | local thane = AceLibrary("Babble-Boss-2.2")["Thane Korth'azz"] |
||
6 | local mograine = AceLibrary("Babble-Boss-2.2")["Highlord Mograine"] |
||
7 | local zeliek = AceLibrary("Babble-Boss-2.2")["Sir Zeliek"] |
||
8 | local blaumeux = AceLibrary("Babble-Boss-2.2")["Lady Blaumeux"] |
||
9 | local boss = AceLibrary("Babble-Boss-2.2")["The Four Horsemen"] |
||
10 | |||
11 | local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss) |
||
12 | |||
13 | local times = nil |
||
14 | |||
15 | local started = nil |
||
16 | |||
17 | ---------------------------- |
||
18 | -- Localization -- |
||
19 | ---------------------------- |
||
20 | |||
21 | L:RegisterTranslations("enUS", function() return { |
||
22 | cmd = "Horsemen", |
||
23 | |||
24 | mark_cmd = "mark", |
||
25 | mark_name = "Mark Alerts", |
||
26 | mark_desc = "Warn for marks", |
||
27 | |||
28 | shieldwall_cmd = "shieldwall", |
||
29 | shieldwall_name = "Shieldwall Alerts", |
||
30 | shieldwall_desc = "Warn for shieldwall", |
||
31 | |||
32 | void_cmd = "void", |
||
33 | void_name = "Void Zone Alerts", |
||
34 | void_desc = "Warn on Lady Blaumeux casting Void Zone.", |
||
35 | |||
36 | meteor_cmd = "meteor", |
||
37 | meteor_name = "Meteor Alerts", |
||
38 | meteor_desc = "Warn on Thane casting Meteor.", |
||
39 | |||
40 | wrath_cmd = "wrath", |
||
41 | wrath_name = "Holy Wrath Alerts", |
||
42 | wrath_desc = "Warn on Zeliek casting Wrath.", |
||
43 | |||
44 | markbar = "Mark %d", |
||
45 | markwarn1 = "Mark %d!", |
||
46 | markwarn2 = "Mark %d in 5 sec", |
||
47 | marktrigger = "is afflicted by Mark of ", |
||
48 | |||
49 | voidtrigger = "Lady Blaumeux casts Void Zone.", |
||
50 | voidwarn = "Void Zone Incoming", |
||
51 | voidbar = "Void Zone", |
||
52 | |||
53 | meteortrigger = "Thane Korth'azz's Meteor hits ", |
||
54 | meteorwarn = "Meteor!", |
||
55 | meteorbar = "Meteor", |
||
56 | |||
57 | wrathtrigger = "Sir Zeliek's Holy Wrath hits ", |
||
58 | wrathwarn = "Holy Wrath!", |
||
59 | wrathbar = "Holy Wrath", |
||
60 | |||
61 | startwarn = "The Four Horsemen Engaged! Mark in ~17 sec", |
||
62 | |||
63 | shieldwallbar = "%s - Shield Wall", |
||
64 | shieldwalltrigger = "(.*) gains Shield Wall.", |
||
65 | shieldwallwarn = "%s - Shield Wall for 20 sec", |
||
66 | shieldwallwarn2 = "%s - Shield Wall GONE!", |
||
67 | } end ) |
||
68 | |||
69 | L:RegisterTranslations("koKR", function() return { |
||
70 | |||
71 | mark_name = "징표 경고", |
||
72 | mark_desc = "징표에 대한 경고", |
||
73 | |||
74 | shieldwall_name = "방패의벽 경고", |
||
75 | shieldwall_desc = "방패의벽에 대한 경고", |
||
76 | |||
77 | void_name = "공허의 지대 경고", |
||
78 | void_desc = "여군주 블라미우스 공허의 지대 시전 경고.", |
||
79 | |||
80 | meteor_name = "유성 경고", |
||
81 | meteor_desc = "영주 코스아즈 유성 시전 경고.", |
||
82 | |||
83 | wrath_name = "성스러운 격노 경고", |
||
84 | wrath_desc = "젤리에크 경 신성한 격노 시전 경고", |
||
85 | |||
86 | markbar = "징표 %d", |
||
87 | markwarn1 = "%d 징표!", |
||
88 | markwarn2 = "%d 징표 - 5 초", |
||
89 | --marktrigger = "is afflicted by Mark of (Korth'azz|Blaumeux|Mograine|Zeliek)", |
||
90 | marktrigger = "의 징표에 걸렸습니다.", |
||
91 | |||
92 | voidtrigger = "여군주 블라미우스|1이;가; 공허의 지대|1을;를; 시전합니다.", |
||
93 | voidwarn = "블라미우스 공허의 지대 생성!", |
||
94 | voidbar = "공허의 지대", |
||
95 | |||
96 | meteortrigger = "영주 코스아즈|1이;가; 유성|1으로;로; ", |
||
97 | meteorwarn = "코스아즈 유성!", |
||
98 | meteorbar = "유성", |
||
99 | |||
100 | wrathtrigger = "젤리에크 경|1이;가; 신의 격노|1으로;로;", |
||
101 | wrathwarn = "젤리에크 신의 격노!", |
||
102 | wrathbar = "신의 격노", |
||
103 | |||
104 | startwarn = "4인의 기병대 전투 시작! 약 17 초내에 징표", |
||
105 | |||
106 | shieldwallbar = "%s - 방패의 벽", |
||
107 | shieldwalltrigger = "(.*)|1이;가; 방패의 벽 효과를 얻었습니다.", |
||
108 | shieldwallwarn = "%s - 20초간 방패의 벽", |
||
109 | shieldwallwarn2 = "%s - 방패의 벽 사라짐!", |
||
110 | } end ) |
||
111 | |||
112 | L:RegisterTranslations("deDE", function() return { |
||
113 | mark_name = "Mal Alarm", |
||
114 | mark_desc = "Warnt vor den Mal Debuffs", |
||
115 | |||
116 | shieldwall_name = "Schildwall", |
||
117 | shieldwall_desc = "Warnung vor Schildwall.", |
||
118 | |||
119 | void_name = "Zone der Leere Warnung", |
||
120 | void_desc = "Warnt, wenn Lady Blaumeux Zone der Leere zaubert.", |
||
121 | |||
122 | meteor_name = "Meteor Alarm", |
||
123 | meteor_desc = "Warnt, wenn Thane Meteor zaubert.", |
||
124 | |||
125 | wrath_name = "Heiliger Zorn Alarm", |
||
126 | wrath_desc = "Warnt, wenn Sire Zeliek Heiliger Zorn zaubert.", |
||
127 | |||
128 | markbar = "Mal", |
||
129 | markwarn1 = "Mal (%d)!", |
||
130 | markwarn2 = "Mal (%d) - 5 Sekunden", |
||
131 | marktrigger = "ist von Mal von .+ betroffen", |
||
132 | |||
133 | voidtrigger = "Lady Blaumeux wirkt Zone der Leere.", |
||
134 | voidwarn = "Zone der Leere kommt", |
||
135 | voidbar = "Zone der Leere", |
||
136 | |||
137 | meteortrigger = "Thane Korth'azzs Meteor trifft ", |
||
138 | meteorwarn = "Meteor!", |
||
139 | meteorbar = "Meteor", |
||
140 | |||
141 | wrathtrigger = "Sire Zelieks Heiliger Zorn trifft ", |
||
142 | wrathwarn = "Heiliger Zorn!", |
||
143 | wrathbar = "Heiliger Zorn", |
||
144 | |||
145 | startwarn = "Die Vier Reiter angegriffen! Mal in ~17 Sekunden", |
||
146 | |||
147 | shieldwallbar = "%s - Schildwall", |
||
148 | shieldwalltrigger = "(.+) bekommt 'Schildwall'.", |
||
149 | shieldwallwarn = "%s - Schildwall f\195\188r 20 Sekunden", |
||
150 | shieldwallwarn2 = "%s - Schildwall Vorbei!", |
||
151 | } end ) |
||
152 | |||
153 | L:RegisterTranslations("zhCN", function() return { |
||
154 | mark_name = "标记警报", |
||
155 | mark_desc = "标记警报", |
||
156 | |||
157 | shieldwall_name = "盾墙警报", |
||
158 | shieldwall_desc = "盾墙警报", |
||
159 | |||
160 | void_name = "虚空领域警报", |
||
161 | void_desc = "当施放虚空领域时警报", |
||
162 | |||
163 | meteor_name = "流星警报", |
||
164 | meteor_desc = "库尔塔兹领主的流星警报", |
||
165 | |||
166 | wrath_name = "神圣之怒警报", |
||
167 | wrath_desc = "瑟里耶克爵士的神圣之怒警报", |
||
168 | |||
169 | markbar = "标记 %d", |
||
170 | markwarn1 = "标记(%d)!", |
||
171 | markwarn2 = "标记(%d) - 5秒", |
||
172 | |||
173 | marktrigger = "受到了库尔塔兹印记效果的影响。", |
||
174 | |||
175 | voidtrigger = "女公爵布劳缪克丝施放了虚空领域。", |
||
176 | voidwarn = "5秒后虚空领域", |
||
177 | voidbar = "虚空领域", |
||
178 | |||
179 | meteortrigger = "库尔塔兹领主的流星击中 ", |
||
180 | meteorwarn = "流星", |
||
181 | meteorbar = "流星", |
||
182 | |||
183 | wrathtrigger = "瑟里耶克爵士的神圣之怒击中 ", |
||
184 | wrathwarn = "神圣之怒", |
||
185 | wrathbar = "神圣之怒", |
||
186 | |||
187 | startwarn = "四骑士已激活 - ~17秒后标记", |
||
188 | |||
189 | shieldwallbar = "%s - 盾墙", |
||
190 | shieldwalltrigger = "获得了盾墙", |
||
191 | shieldwallwarn = "%s - 20秒盾墙效果", |
||
192 | shieldwallwarn2 = "%s - 盾墙消失了!", |
||
193 | } end ) |
||
194 | |||
195 | L:RegisterTranslations("zhTW", function() return { |
||
196 | mark_name = "標記警報", |
||
197 | mark_desc = "標記警報", |
||
198 | |||
199 | shieldwall_name = "盾牆警報", |
||
200 | shieldwall_desc = "盾牆警報", |
||
201 | |||
202 | void_name = "虛空地區警報", |
||
203 | void_desc = "當布洛莫斯爵士施放虛空地區時警報", |
||
204 | |||
205 | meteor_name = "隕石術警報", |
||
206 | meteor_desc = "寇斯艾茲族長的隕石術警報", |
||
207 | |||
208 | wrath_name = "神聖之怒警報", |
||
209 | wrath_desc = "札里克爵士的神聖之怒警報", |
||
210 | |||
211 | markbar = "標記 %d", |
||
212 | markwarn1 = "標記(%d)!", |
||
213 | markwarn2 = "標記(%d) - 5秒", |
||
214 | |||
215 | marktrigger = "受到了庫爾塔茲印記效果的影響。", |
||
216 | |||
217 | voidtrigger = "布洛莫斯爵士施放了虛空地區。", |
||
218 | voidwarn = "5秒後虛空地區", |
||
219 | voidbar = "虛空地區", |
||
220 | |||
221 | meteortrigger = "寇斯艾茲族長的隕石術擊中", |
||
222 | meteorwarn = "隕石術", |
||
223 | meteorbar = "隕石術", |
||
224 | |||
225 | wrathtrigger = "札里克爵士的神聖之怒擊中", |
||
226 | wrathwarn = "神聖之怒", |
||
227 | wrathbar = "神聖之怒", |
||
228 | |||
229 | startwarn = "四騎士已進入戰鬥 - 17秒後標記", |
||
230 | |||
231 | shieldwallbar = "%s - 盾牆", |
||
232 | shieldwalltrigger = "獲得了盾牆", |
||
233 | shieldwallwarn = "%s - 20秒盾牆效果", |
||
234 | shieldwallwarn2 = "%s - 盾牆消失了!", |
||
235 | } end ) |
||
236 | |||
237 | ---------------------------------- |
||
238 | -- Module Declaration -- |
||
239 | ---------------------------------- |
||
240 | |||
241 | BigWigsHorsemen = BigWigs:NewModule(boss) |
||
242 | BigWigsHorsemen.zonename = AceLibrary("Babble-Zone-2.2")["Naxxramas"] |
||
243 | BigWigsHorsemen.enabletrigger = { thane, mograine, zeliek, blaumeux } |
||
244 | BigWigsHorsemen.toggleoptions = {"mark", "shieldwall", -1, "meteor", "void", "wrath", "bosskill"} |
||
245 | BigWigsHorsemen.revision = tonumber(string.sub("$Revision: 16494 $", 12, -3)) |
||
246 | |||
247 | ------------------------------ |
||
248 | -- Initialization -- |
||
249 | ------------------------------ |
||
250 | |||
251 | function BigWigsHorsemen:OnEnable() |
||
252 | self.marks = 1 |
||
253 | self.deaths = 0 |
||
254 | |||
255 | times = {} |
||
256 | started = nil |
||
257 | |||
258 | self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe") |
||
259 | self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckForEngage") |
||
260 | self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH") |
||
261 | self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS") |
||
262 | self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF") |
||
263 | self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE", "SkillEvent") |
||
264 | self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE", "SkillEvent") |
||
265 | self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", "MarkEvent") |
||
266 | self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", "MarkEvent") |
||
267 | self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", "MarkEvent") |
||
268 | |||
269 | self:RegisterEvent("BigWigs_RecvSync") |
||
270 | self:TriggerEvent("BigWigs_ThrottleSync", "HorsemenShieldWall", 3) |
||
271 | -- Upgraded to HorsemenMark2 so that we don't get blocked by throttled syncs |
||
272 | -- from older revisions. |
||
273 | self:TriggerEvent("BigWigs_ThrottleSync", "HorsemenMark2", 8) |
||
274 | self:TriggerEvent("BigWigs_ThrottleSync", "HorsemenVoid", 5) |
||
275 | self:TriggerEvent("BigWigs_ThrottleSync", "HorsemenWrath", 5) |
||
276 | self:TriggerEvent("BigWigs_ThrottleSync", "HorsemenMeteor", 5) |
||
277 | end |
||
278 | |||
279 | function BigWigsHorsemen:MarkEvent( msg ) |
||
280 | if string.find(msg, L["marktrigger"]) then |
||
281 | local t = GetTime() |
||
282 | if not times["mark"] or (times["mark"] and (times["mark"] + 8) < t) then |
||
283 | self:TriggerEvent("BigWigs_SendSync", "HorsemenMark2 "..tostring(self.marks + 1)) |
||
284 | times["mark"] = t |
||
285 | end |
||
286 | end |
||
287 | end |
||
288 | |||
289 | function BigWigsHorsemen:SkillEvent( msg ) |
||
290 | local t = GetTime() |
||
291 | if string.find(msg, L["meteortrigger"]) then |
||
292 | if not times["meteor"] or (times["meteor"] and (times["meteor"] + 8) < t) then |
||
293 | self:TriggerEvent("BigWigs_SendSync", "HorsemenMeteor") |
||
294 | times["meteor"] = t |
||
295 | end |
||
296 | elseif string.find(msg, L["wrathtrigger"]) then |
||
297 | if not times["wrath"] or (times["wrath"] and (times["wrath"] + 8) < t) then |
||
298 | self:TriggerEvent("BigWigs_SendSync", "HorsemenWrath") |
||
299 | times["wrath"] = t |
||
300 | end |
||
301 | elseif msg == L["voidtrigger"] then |
||
302 | if not times["void"] or (times["void"] and (times["void"] + 8) < t) then |
||
303 | self:TriggerEvent("BigWigs_SendSync", "HorsemenVoid" ) |
||
304 | times["void"] = t |
||
305 | end |
||
306 | end |
||
307 | end |
||
308 | |||
309 | function BigWigsHorsemen:BigWigs_RecvSync(sync, rest) |
||
310 | if sync == self:GetEngageSync() and rest and rest == boss and not started then |
||
311 | started = true |
||
312 | if self:IsEventRegistered("PLAYER_REGEN_DISABLED") then |
||
313 | self:UnregisterEvent("PLAYER_REGEN_DISABLED") |
||
314 | end |
||
315 | if self.db.profile.mark then |
||
316 | self:TriggerEvent("BigWigs_Message", L["startwarn"], "Attention") |
||
317 | self:TriggerEvent("BigWigs_StartBar", self, string.format( L["markbar"], self.marks), 17, "Interface\\Icons\\Spell_Shadow_CurseOfAchimonde") |
||
318 | self:ScheduleEvent("bwhorsemenmark2", "BigWigs_Message", 12, string.format( L["markwarn2"], self.marks ), "Urgent") |
||
319 | end |
||
320 | elseif sync == "HorsemenMark2" and rest then |
||
321 | rest = tonumber(rest) |
||
322 | if rest == nil then return end |
||
323 | if rest == (self.marks + 1) then |
||
324 | if self.db.profile.mark then |
||
325 | self:TriggerEvent("BigWigs_Message", string.format( L["markwarn1"], self.marks ), "Important") |
||
326 | end |
||
327 | self.marks = self.marks + 1 |
||
328 | if self.db.profile.mark then |
||
329 | self:TriggerEvent("BigWigs_StartBar", self, string.format( L["markbar"], self.marks ), 12, "Interface\\Icons\\Spell_Shadow_CurseOfAchimonde") |
||
330 | self:ScheduleEvent("bwhorsemenmark2", "BigWigs_Message", 7, string.format( L["markwarn2"], self.marks ), "Urgent") |
||
331 | end |
||
332 | end |
||
333 | elseif sync == "HorsemenMeteor" then |
||
334 | if self.db.profile.meteor then |
||
335 | self:TriggerEvent("BigWigs_Message", L["meteorwarn"], "Important") |
||
336 | self:TriggerEvent("BigWigs_StartBar", self, L["meteorbar"], 12, "Interface\\Icons\\Spell_Fire_Fireball02") |
||
337 | end |
||
338 | elseif sync == "HorsemenWrath" then |
||
339 | if self.db.profile.wrath then |
||
340 | self:TriggerEvent("BigWigs_Message", L["wrathwarn"], "Important") |
||
341 | self:TriggerEvent("BigWigs_StartBar", self, L["wrathbar"], 12, "Interface\\Icons\\Spell_Holy_Excorcism") |
||
342 | end |
||
343 | elseif sync == "HorsemenVoid" then |
||
344 | if self.db.profile.void then |
||
345 | self:TriggerEvent("BigWigs_Message", L["voidwarn"], "Important") |
||
346 | self:TriggerEvent("BigWigs_StartBar", self, L["voidbar"], 12, "Interface\\Icons\\Spell_Frost_IceStorm") |
||
347 | end |
||
348 | elseif sync == "HorsemenShieldWall" and self.db.profile.shieldwall and rest then |
||
349 | self:TriggerEvent("BigWigs_Message", string.format(L["shieldwallwarn"], rest), "Attention") |
||
350 | self:ScheduleEvent("BigWigs_Message", 20, string.format(L["shieldwallwarn2"], rest), "Positive") |
||
351 | self:TriggerEvent("BigWigs_StartBar", self, string.format(L["shieldwallbar"], rest), 20, "Interface\\Icons\\Ability_Warrior_ShieldWall") |
||
352 | end |
||
353 | end |
||
354 | |||
355 | function BigWigsHorsemen:CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS( msg ) |
||
356 | local _,_, mob = string.find(msg, L["shieldwalltrigger"]) |
||
357 | if mob then self:TriggerEvent("BigWigs_SendSync", "HorsemenShieldWall "..mob) end |
||
358 | end |
||
359 | |||
360 | function BigWigsHorsemen:CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF(msg) |
||
361 | if msg == L["voidtrigger"] then |
||
362 | self:TriggerEvent("BigWigs_SendSync", "HorsemenVoid" ) |
||
363 | end |
||
364 | end |
||
365 | |||
366 | function BigWigsHorsemen:CHAT_MSG_COMBAT_HOSTILE_DEATH( msg ) |
||
367 | if msg == string.format(UNITDIESOTHER, thane ) or |
||
368 | msg == string.format(UNITDIESOTHER, zeliek) or |
||
369 | msg == string.format(UNITDIESOTHER, mograine) or |
||
370 | msg == string.format(UNITDIESOTHER, blaumeux) then |
||
371 | self.deaths = self.deaths + 1 |
||
372 | if self.deaths == 4 then |
||
373 | if self.db.profile.bosskill then self:TriggerEvent("BigWigs_Message", string.format(AceLibrary("AceLocale-2.2"):new("BigWigs")["%s have been defeated"], boss), "Bosskill", nil, "Victory") end |
||
374 | self.core:ToggleModuleActive(self, false) |
||
375 | end |
||
376 | end |
||
377 | end |
||
378 |