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")["Ragnaros"]
6 local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)
7 local started = nil
8  
9 ----------------------------
10 -- Localization --
11 ----------------------------
12  
13 L:RegisterTranslations("enUS", function() return {
14 knockback_trigger = "^TASTE",
15 submerge_trigger = "^COME FORTH,",
16 engage_trigger = "^NOW FOR YOU,",
17  
18 knockback_message = "Knockback!",
19 knockback_soon_message = "5 sec to knockback!",
20 submerge_message = "Ragnaros down for 90 sec. Incoming Sons of Flame!",
21 emerge_soon_message = "15 sec until Ragnaros emerges!",
22 emerge_message = "Ragnaros emerged, 3 minutes until submerge!",
23 submerge_60sec_message = "60 sec to submerge!",
24 submerge_20sec_message = "20 sec to submerge!",
25  
26 knockback_bar = "AoE knockback",
27 emerge_bar = "Ragnaros emerge",
28 submerge_bar = "Ragnaros submerge",
29  
30 sonofflame = "Son of Flame",
31 sonsdeadwarn = "%d/8 Sons of Flame dead!",
32  
33 cmd = "Ragnaros",
34  
35 emerge_cmd = "emerge",
36 emerge_name = "Emerge alert",
37 emerge_desc = "Warn for Ragnaros Emerge",
38  
39 sondeath_cmd = "sondeath",
40 sondeath_name = "Son of Flame dies",
41 sondeath_desc = "Warn when a son dies",
42  
43 submerge_cmd = "submerge",
44 submerge_name = "Submerge alert",
45 submerge_desc = "Warn for Ragnaros Submerge & Sons of Flame",
46  
47 aoeknock_cmd = "aoeknock",
48 aoeknock_name = "Knockback alert",
49 aoeknock_desc = "Warn for Wrath of Ragnaros knockback",
50 } end)
51  
52 L:RegisterTranslations("zhCN", function() return {
53 knockback_trigger = "^尝尝萨弗隆的火焰吧",
54 submerge_trigger = "^出现吧,我的奴仆",
55 engage_trigger = "^现在轮到你们了",
56  
57 knockback_message = "群体击退!",
58 knockback_soon_message = "5秒后发动群体击退!",
59 submerge_message = "拉格纳罗斯消失90秒。烈焰之子出现!",
60 emerge_soon_message = "15秒后拉格纳罗斯重新出现!",
61 emerge_message = "拉格纳罗斯已经激活,将在3分钟后暂时消失并召唤烈焰之子!",
62 submerge_60sec_message = "60秒后拉格纳罗斯将暂时消失并召唤烈焰之子!",
63 submerge_20sec_message = "20秒后拉格纳罗斯将暂时消失并召唤烈焰之子!",
64  
65 knockback_bar = "群体击退",
66 emerge_bar = "拉格纳罗斯出现",
67 submerge_bar = "拉格纳罗斯消失",
68  
69 sonofflame = "烈焰之子",
70 sonsdeadwarn = "%d/8个烈焰之子死亡了!",
71  
72 emerge_name = "出现警报",
73 emerge_desc = "出现警报",
74  
75 sondeath_name = "烈焰之子死亡",
76 sondeath_desc = "当一个烈焰之子死亡时发出警报",
77  
78 submerge_name = "消失警报",
79 submerge_desc = "消失警报",
80  
81 aoeknock_name = "群体击退警报",
82 aoeknock_desc = "群体击退警报",
83 } end)
84  
85 L:RegisterTranslations("zhTW", function() return {
86 -- Ragnaros 拉格納羅斯
87 knockback_trigger = "^感受薩弗隆的烈焰吧!",
88 submerge_trigger = "^出現吧,我的奴僕",
89 engage_trigger = "^現在輪到你們了",
90  
91 knockback_message = "群體擊退!",
92 knockback_soon_message = "5 秒後群體擊退,近戰後退!",
93 submerge_message = "消失 90 秒! 烈焰之子出現!",
94 emerge_soon_message = "15 秒後重新出現!",
95 emerge_message = "拉格納羅斯已經進入戰鬥,3 分鐘後暫時消失並召喚烈焰之子",
96 submerge_60sec_message = "60 秒後暫時消失並召喚烈焰之子!",
97 submerge_20sec_message = "20 秒後暫時消失並召喚烈焰之子!",
98  
99 knockback_bar = "群體擊退",
100 emerge_bar = "拉格納羅斯出現",
101 submerge_bar = "拉格納羅斯消失",
102  
103 sonofflame = "烈焰之子",
104 sonsdeadwarn = "%d/8 個烈焰之子死亡了!",
105  
106 emerge_name = "出現警報",
107 emerge_desc = "當拉格納羅斯出現消失時發出警報",
108  
109 sondeath_name = "烈焰之子死亡",
110 sondeath_desc = "當一個烈焰之子死亡時發出警報",
111  
112 submerge_name = "消失警報",
113 submerge_desc = "當拉格納羅斯消失時發出警報",
114  
115 aoeknock_name = "群體擊退警報",
116 aoeknock_desc = "當拉格納羅斯發動擊退技能時發出警報",
117 } end)
118  
119 L:RegisterTranslations("koKR", function() return {
120 knockback_trigger = "설퍼론의 유황",
121 submerge_trigger = "나의 종들아",
122 engage_trigger = "이제 너희",
123  
124 knockback_message = "광역 튕겨냄!",
125 knockback_soon_message = "5초후 튕겨냄!",
126 submerge_message = "90초간 라그나로스 사라짐. 피조물 등장!",
127 emerge_soon_message = "15초후 라그나로스 재등장!",
128 emerge_message = "라그나로스가 등장했습니다. 3분후 피조물 소환!",
129 submerge_60sec_message = "60초후 피조물 등장!",
130 submerge_20sec_message = "20초후 피조물 등장!",
131  
132 knockback_bar = "광역 튕겨냄",
133 emerge_bar = "라그나로스 등장",
134 submerge_bar = "피조물 등장",
135  
136 sonofflame = "화염의 수호물",
137 sonsdeadwarn = "%d/8 화염의 수호물 사망!",
138  
139 emerge_name = "등장 경고",
140 emerge_desc = "라그나로스 등장에 대한 경고",
141  
142 sondeath_name = "화염의 수호물 죽음",
143 sondeath_desc = "화염의 수호물 죽음 알림",
144  
145 submerge_name = "사라짐 경고",
146 submerge_desc = "라그나로스 사라짐 & 피조물에 대한 경고",
147  
148 aoeknock_name = "튕겨냄 경고",
149 aoeknock_desc = "라그나로스의 튕겨냄 경고",
150 } end)
151  
152 L:RegisterTranslations("deDE", function() return {
153 knockback_trigger = "^SP\195\156RT DIE FLAMMEN",
154 submerge_trigger = "^KOMMT HERBEI, MEINE DIENER", -- ?
155 engage_trigger = "^NUN ZU EUCH, INSEKTEN", -- ?
156  
157 knockback_message = "AoE Rundumschlag!",
158 knockback_soon_message = "AoE Rundumschlag in 5 Sekunden!",
159 submerge_message = "Ragnaros untergetaucht f\195\188r 90 Sekunden! S\195\182hne der Flamme kommen!",
160 emerge_soon_message = "Ragnaros taucht auf in 15 Sekunden!",
161 emerge_message = "Ragnaros aufgetaucht! Untertauchen in 3 Minuten!",
162 submerge_60sec_message = "Ragnaros taucht unter in 60 Sekunden!",
163 submerge_20sec_message = "Ragnaros taucht unter in 20 Sekunden!",
164  
165 knockback_bar = "AoE Rundumschlag",
166 emerge_bar = "Auftauchen Ragnaros",
167 submerge_bar = "Untertauchen Ragnaros",
168  
169 sonofflame = "Sohn der Flamme",
170 sonsdeadwarn = "%d/8 S\195\182hne der Flamme tot!",
171  
172 emerge_name = "Auftauchen",
173 emerge_desc = "Warnung, wenn Ragnaros auftaucht.",
174  
175 sondeath_name = "S\195\182hne der Flamme",
176 sondeath_desc = "Counter f\195\188r die get\195\182teten S\195\182ohne der Flamme.",
177  
178 submerge_name = "Untertauchen",
179 submerge_desc = "Warnung, wenn Ragnaros untertaucht und die S\195\182hne der Flamme erscheinen.",
180  
181 aoeknock_name = "AoE Rundumschlag",
182 aoeknock_desc = "Warnung, wenn Ragnaros AoE Rundumschlag wirkt.",
183 } end)
184  
185 L:RegisterTranslations("frFR", function() return {
186 knockback_trigger = "^GO\195\155TEZ ",
187 submerge_trigger = "^VENEZ, MES SERVITEURS",
188 engage_trigger = "^ET MAINTENANT",
189  
190 knockback_message = "Projection de zone !",
191 knockback_soon_message = "5 secondes avant Projection de zone !",
192 submerge_message = "Ragnaros dispara\195\174t pour 90 secondes. Arriv\195\169e des Fils des flammes !",
193 emerge_soon_message = "15 secondes avant que Ragnaros n'\195\169merge !",
194 emerge_message = "Ragnaros a \195\169merg\195\169. 3 minutes avant l'arriv\195\169e des Fils des flammes !",
195 submerge_60sec_message = "60 secondes avant l'arriv\195\169e des Fils des flammes !",
196 submerge_20sec_message = "20 secondes avant l'arriv\195\169e des Fils des flammes !",
197  
198 knockback_bar = "Projection de zone",
199 emerge_bar = "Ragnaros \195\169merge",
200 submerge_bar = "Fils des flammes",
201  
202 sonofflame = "Fils des flammes",
203 sonsdeadwarn = "%d/8 Fils des flammes mort !",
204  
205 emerge_name = "Alerte Emerge",
206 emerge_desc = "Pr\195\169viens quand Ragnaros \195\169merge.",
207  
208 sondeath_name = "Alerte mort des Fils",
209 sondeath_desc = "Pr\195\169viens de la mort d'un Fils des flammes.",
210  
211 submerge_name = "Alerte Immersion",
212 submerge_desc = "Pr\195\169viens de l'immersion de Ragnaros et l'arriv\195\169e des Fils des flammes.",
213  
214 aoeknock_name = "Alerte Projection de zone",
215 aoeknock_desc = "Pr\195\169viens des projections de zone.",
216 } end)
217  
218 ----------------------------------
219 -- Module Declaration --
220 ----------------------------------
221  
222 BigWigsRagnaros = BigWigs:NewModule(boss)
223 BigWigsRagnaros.zonename = AceLibrary("Babble-Zone-2.2")["Molten Core"]
224 BigWigsRagnaros.enabletrigger = boss
225 BigWigsRagnaros.wipemobs = { L["sonofflame"] }
226 BigWigsRagnaros.toggleoptions = { "sondeath", "submerge", "emerge", "aoeknock", "bosskill" }
227 BigWigsRagnaros.revision = tonumber(string.sub("$Revision: 16639 $", 12, -3))
228  
229 ------------------------------
230 -- Initialization --
231 ------------------------------
232  
233 function BigWigsRagnaros:OnEnable()
234 started = nil
235 self.sonsdead = 0
236  
237 self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe")
238 self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckForEngage")
239 self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
240 self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH")
241  
242 self:RegisterEvent("BigWigs_RecvSync")
243 self:TriggerEvent("BigWigs_ThrottleSync", "RagnarosSonDead", .1)
244 end
245  
246 ------------------------------
247 -- Event Handlers --
248 ------------------------------
249  
250 function BigWigsRagnaros:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
251 if msg == string.format(UNITDIESOTHER, L["sonofflame"]) then
252 self:TriggerEvent("BigWigs_SendSync", "RagnarosSonDead "..tostring(self.sonsdead + 1) )
253 else
254 self:GenericBossDeath(msg)
255 end
256 end
257  
258 function BigWigsRagnaros:BigWigs_RecvSync(sync, rest)
259 if sync == self:GetEngageSync() and rest and rest == boss and not started then
260 started = true
261 if self:IsEventRegistered("PLAYER_REGEN_ENABLED") then
262 self:UnregisterEvent("PLAYER_REGEN_ENABLED")
263 end
264 self:Emerge()
265 elseif sync == "RagnarosSonDead" and rest then
266 rest = tonumber(rest)
267 if not rest then return end
268 if rest == (self.sonsdead + 1) then
269 self.sonsdead = self.sonsdead + 1
270 if self.db.profile.sondeath then
271 self:TriggerEvent("BigWigs_Message", string.format(L["sonsdeadwarn"], self.sonsdead), "Urgent")
272 end
273 if self.sonsdead == 8 then
274 self:CancelScheduledEvent("bwragnarosemerge")
275 self:TriggerEvent("BigWigs_StopBar", L["emerge_bar"])
276 self.sonsdead = 0 -- reset counter
277 self:Emerge()
278 end
279 end
280 end
281 end
282  
283 function BigWigsRagnaros:CHAT_MSG_MONSTER_YELL(msg)
284 if string.find(msg, L["knockback_trigger"]) and self.db.profile.aoeknock then
285 self:TriggerEvent("BigWigs_Message", L["knockback_message"], "Important")
286 self:ScheduleEvent("bwragnarosaekbwarn", "BigWigs_Message", 23, L["knockback_soon_message"], "Urgent")
287 self:TriggerEvent("BigWigs_StartBar", self, L["knockback_bar"], 28, "Interface\\Icons\\Spell_Fire_SoulBurn")
288 elseif string.find(msg, L["submerge_trigger"]) then
289 self:Submerge()
290 end
291 end
292  
293 function BigWigsRagnaros:Submerge()
294 self:CancelScheduledEvent("bwragnarosaekbwarn")
295 self:TriggerEvent("BigWigs_StopBar", self, L["knockback_bar"])
296  
297 if self.db.profile.submerge then
298 self:TriggerEvent("BigWigs_Message", L["submerge_message"], "Important")
299 end
300 if self.db.profile.emerge then
301 self:ScheduleEvent("bwragnarosemergewarn", "BigWigs_Message", 75, L["emerge_soon_message"], "Urgent")
302 self:TriggerEvent("BigWigs_StartBar", self, L["emerge_bar"], 90, "Interface\\Icons\\Spell_Fire_Volcano")
303 end
304 self:ScheduleRepeatingEvent("bwragnarosemergecheck", self.EmergeCheck, 2, self)
305 self:ScheduleEvent("bwragnarosemerge", self.Emerge, 90, self)
306 end
307  
308 function BigWigsRagnaros:EmergeCheck()
309 if UnitExists("target") and UnitName("target") == boss and UnitExists("targettarget") then
310 self:Emerge()
311 return
312 end
313 local num = GetNumRaidMembers()
314 for i = 1, num do
315 local raidUnit = string.format("raid%starget", i)
316 if UnitExists(raidUnit) and UnitName(raidUnit) == boss and UnitExists(raidUnit.."target") then
317 self:Emerge()
318 return
319 end
320 end
321 end
322  
323 function BigWigsRagnaros:Emerge()
324 self:CancelScheduledEvent("bwragnarosemergecheck")
325 self:CancelScheduledEvent("bwragnarosemergewarn")
326 self:TriggerEvent("BigWigs_StopBar", self, L["emerge_bar"])
327  
328 if self.db.profile.emerge then
329 self:TriggerEvent("BigWigs_Message", L["emerge_message"], "Attention")
330 end
331 if self.db.profile.submerge then
332 self:ScheduleEvent("BigWigs_Message", 120, L["submerge_60sec_message"], "Urgent")
333 self:ScheduleEvent("BigWigs_Message", 160, L["submerge_20sec_message"], "Important")
334 self:TriggerEvent("BigWigs_StartBar", self, L["submerge_bar"], 180, "Interface\\Icons\\Spell_Fire_SelfDestruct")
335 end
336 end
337