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")["Chromaggus"]
6 local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)
7 local twenty
8  
9 ----------------------------
10 -- Localization --
11 ----------------------------
12  
13 L:RegisterTranslations("enUS", function() return {
14 cmd = "Chromaggus",
15  
16 enrage_cmd = "enrage",
17 enrage_name = "Enrage",
18 enrage_desc = "Warn before Enrage at 20%",
19  
20 frenzy_cmd = "frenzy",
21 frenzy_name = "Frenzy Alert",
22 frenzy_desc = "Warn for Frenzy",
23  
24 breath_cmd = "breath",
25 breath_name = "Breath Alerts",
26 breath_desc = "Warn for Breaths",
27  
28 vulnerability_cmd = "vulnerability",
29 vulnerability_name = "Vulnerability Alerts",
30 vulnerability_desc = "Warn for Vulnerability changes",
31  
32 breath_trigger = "^Chromaggus begins to cast ([%w ]+)\.",
33 vulnerability_test = "^[%w']+ [%w' ]+ ([%w]+) Chromaggus for ([%d]+) ([%w ]+) damage%..*",
34 frenzy_trigger = "%s goes into a killing frenzy!",
35 vulnerability_trigger = "%s flinches as its skin shimmers.",
36  
37 hit = "hits",
38 crit = "crits",
39  
40 breath_warning = "%s in 10 seconds!",
41 breath_message = "%s is casting!",
42 vulnerability_message = "Vulnerability: %s!",
43 vulnerability_warning = "Spell vulnerability changed!",
44 frenzy_message = "Frenzy Alert!",
45 enrage_warning = "Enrage soon!",
46  
47 breath1 = "Time Lapse",
48 breath2 = "Corrosive Acid",
49 breath3 = "Ignite Flesh",
50 breath4 = "Incinerate",
51 breath5 = "Frost Burn",
52  
53 iconunknown = "Interface\\Icons\\INV_Misc_QuestionMark",
54 icon1 = "Interface\\Icons\\Spell_Arcane_PortalOrgrimmar",
55 icon2 = "Interface\\Icons\\Spell_Nature_Acid_01",
56 icon3 = "Interface\\Icons\\Spell_Fire_Fire",
57 icon4 = "Interface\\Icons\\Spell_Shadow_ChillTouch",
58 icon5 = "Interface\\Icons\\Spell_Frost_ChillingBlast",
59  
60 castingbar = "Cast %s",
61  
62 } end )
63  
64 L:RegisterTranslations("deDE", function() return {
65 enrage_name = "Wutanfall",
66 enrage_desc = "Warnung, wenn Chromaggus w\195\188tend wird. (ab 20%).",
67  
68 frenzy_name = "Raserei",
69 frenzy_desc = "Warnung, wenn Chromaggus in Raserei ger\195\164t.",
70  
71 breath_name = "Atem",
72 breath_desc = "Warnung, wenn Chromaggus seinen Atem wirkt.",
73  
74 vulnerability_name = "Zauber-Verwundbarkeiten",
75 vulnerability_desc = "Warnung, wenn Chromagguss Zauber-Verwundbarkeit sich \195\164ndert.",
76  
77 breath_trigger = "^Chromaggus beginnt (.+) zu wirken%.",
78 vulnerability_test = "^[^%s]+ .* trifft Chromaggus(.+)f\195\188r ([%d]+) ([%w ]+)'schaden%..*", -- ?
79 frenzy_trigger = "%s ger\195\164t in t\195\182dliche Raserei!",
80 vulnerability_trigger = "%s weicht zur\195\188ck, als die Haut schimmert.",
81  
82 hit = "trifft",
83 crit = "kritisch",
84  
85 breath_warning = "%s in 10 Sekunden!",
86 breath_message = "Chromaggus wirkt: %s Atem!",
87 vulnerability_message = "Neue Zauber-Verwundbarkeit: %s",
88 vulnerability_warning = "Zauber-Verwundbarkeit ge\195\164ndert!",
89 frenzy_message = "Raserei - Einlullender Schuss!",
90 enrage_warning = "Wutanfall steht kurz bevor!",
91  
92 breath1 = "Zeitraffer",
93 breath2 = "\195\132tzende S\195\164ure",
94 breath3 = "Fleisch entz\195\188nden",
95 breath4 = "Verbrennen",
96 breath5 = "Frostbeulen",
97  
98 castingbar = "Wirkt %s",
99 } end )
100  
101 L:RegisterTranslations("zhCN", function() return {
102 enrage_name = "激怒警报",
103 enrage_desc = "20%生命激怒前发出警报。",
104  
105 frenzy_name = "狂暴警报",
106 frenzy_desc = "狂暴警报",
107  
108 breath_name = "吐息警报",
109 breath_desc = "吐息警报",
110  
111 vulnerability_name = "弱点警报",
112 vulnerability_desc = "克洛玛古斯弱点改变时发出警报",
113  
114 breath_trigger = "^克洛玛古斯开始施放(.+)。",
115 vulnerability_test = "^.+的.+(.+)克洛玛古斯.+(%d+)点(.+)伤害。",
116  
117 frenzy_trigger = "%s变得极为狂暴!",
118 vulnerability_trigger = "%s的皮肤闪着微光",
119  
120 hit = "使",
121 crit = "致命一击对",
122  
123 breath_warning = "%s - 10秒后施放!",
124 breath_message = "克洛玛古斯 %s!",
125 vulnerability_message = "克洛玛古斯新弱点:%s",
126 vulnerability_warning = "克洛玛古斯弱点改变",
127 frenzy_message = "狂暴警报 - 猎人立刻使用宁神射击!",
128 enrage_warning = "即将激怒!",
129  
130 breath1 = "时间流逝",
131 breath2 = "腐蚀酸液",
132 breath3 = "点燃躯体",
133 breath4 = "焚烧",
134 breath5 = "冰霜灼烧",
135  
136 castingbar = "施放 %s",
137 } end )
138  
139 L:RegisterTranslations("zhTW", function() return {
140 -- Chromaggus 克洛瑪古斯
141 enrage_name = "狂暴警報",
142 enrage_desc = "當克洛瑪古斯生命值剩 20% ,狂暴時發出警報。",
143  
144 frenzy_name = "狂怒警報",
145 frenzy_desc = "當克洛瑪古斯狂怒時發出警報",
146  
147 breath_name = "吐息警報",
148 breath_desc = "當克洛瑪古斯吐息時發出警報",
149  
150 vulnerability_name = "弱點改變警報",
151 vulnerability_desc = "當克洛瑪古斯弱點改變時發出警報",
152  
153 breath_trigger = "^克洛瑪古斯開始施放(.+)。",
154 vulnerability_test = "^.+的.+克洛瑪古斯(.+)成(%d+)點(......)傷害。",
155 frenzy_trigger = "%s變得極為狂暴!", --完全比對
156 vulnerability_trigger = "%s因皮膚閃著微光而驚訝退縮。", --完全比對
157  
158 hit = "造",
159 crit = "致命一擊造",
160  
161 breath_warning = "%s - 10 秒後施放!",
162 breath_message = "克洛瑪古斯施放:%s !",
163 vulnerability_message = "克洛瑪古斯新弱點:%s !",
164 vulnerability_warning = "克洛瑪古斯弱點改變",
165 frenzy_message = "狂怒警報 - 獵人立刻使用寧神射擊!",
166 enrage_warning = "即將暴怒!",
167  
168 breath1 = "時間流逝",
169 breath2 = "腐蝕酸液",
170 breath3 = "點燃軀體",
171 breath4 = "燒盡",
172 breath5 = "冰霜灼燒",
173  
174 castingbar = "施放 %s",
175 -- about vulnerability_test
176 -- 誰的什麼法術擊中克洛瑪古斯 造 成 幾 點 哪種 傷害。 <-法術hit描述,空白為對照用
177 -- 誰的什麼法術對 克洛瑪古斯致命一擊造成 幾 點 哪種 傷害。 <-法術crit描述,空白為對照用
178 -- .+的 .+ 克洛瑪古斯 (.+) 成(%d+)點(......)傷害。 ,這樣修改可以不用動到程式。
179 -- drop drop type dmg school 多抓一個"造"字是因type不能為空.又,判斷對跟擊中的話,要改程式碼(像koKR的做法)
180 -- 原判斷句型會誤判其他近戰的暴擊句型,造成school抓出"致命一擊"字樣。
181 -- 最後一個變數從(.+)改為(......),法術傷害只有兩個中文字,編碼為utf8所以是6個"."。
182 } end )
183  
184 L:RegisterTranslations("koKR", function() return {
185  
186 enrage_name = "격노",
187 enrage_desc = "20% 격노 전 경고",
188  
189 frenzy_name = "광폭화 경고",
190 frenzy_desc = "광폭화에 대한 경고",
191  
192 breath_name = "브레스 경고",
193 breath_desc = "브레스에 대한 경고",
194  
195 vulnerability_name = "약화 속성 경고",
196 vulnerability_desc = "약화 속성 변경에 대한 경고",
197  
198 breath_trigger = "크로마구스|1이;가; (.+)|1을;를; 시전합니다.",
199 vulnerability_test = "(.+)|1으로;로; 크로마구스에게 (%d+)의 ([^%s]+) (.*)피해를 입혔습니다.",
200 frenzy_trigger = "%s|1이;가; 살기를 띤 듯한 광란의 상태에 빠집니다!",
201 vulnerability_trigger = "%s|1이;가; 주춤하면서 물러나면서 가죽이 빛납니다.", --"가죽이 점점 빛나면서 물러서기 시작합니다.",
202  
203 hit = "",
204 crit = "치명상 ",
205  
206 breath_warning = "%s 10초전!",
207 breath_message = "%s 시전!",
208 vulnerability_message = "새로운 취약 속성: %s",
209 vulnerability_warning = "취약 속성이 변경되었습니다!",
210 frenzy_message = "광폭화 - 평정 사격!",
211 enrage_warning = "격노 경고!",
212  
213 breath1 = "시간의 쇠퇴",
214 breath2 = "부식성 산",
215 breath3 = "살점 태우기",
216 breath4 = "소각",
217 breath5 = "동결",
218  
219 castingbar = "%s 시전",
220 } end )
221  
222 L:RegisterTranslations("frFR", function() return {
223 enrage_name = "Alerte Enrag\195\169",
224 enrage_desc = "Pr\195\169viens quand Chromaggus s'enrage (\195\160 20%).",
225  
226 frenzy_name = "Alerte Fr\195\169n\195\169sie",
227 frenzy_desc = "Pr\195\169viens quand Chromaggus entre dans des fr\195\169n\195\169sies sanglantes.",
228  
229 breath_name = "Alerte Souffles",
230 breath_desc = "Pr\195\169viens quand Chromaggus souffle ainsi que leurs types.",
231  
232 vulnerability_name = "Alerte Vuln\195\169rabilit\195\169s",
233 vulnerability_desc = "Pr\195\169viens quand la vuln\195\169rabilit\195\169 de Chromaggus change.",
234  
235 breath_trigger = "^Chromaggus commence \195\160 lancer (.+)%.",
236 vulnerability_test = "^.+ lance .+ et (.+) \195\160 Chromaggus %(([%d]+) points de d\195\169g\195\162ts .+ (.+)%)%.";
237 frenzy_trigger = "%s entre dans une fr\195\169n\195\169sie sanglante !",
238 vulnerability_trigger = "%s grimace lorsque sa peau se met \195\160 briller.",
239  
240 hit = "lui inflige",
241 crit = "inflige un coup critique",
242  
243 breath_warning = "%s dans 10 sec. !",
244 breath_message = "%s en cours d'incantation !",
245 vulnerability_message = "Vulnerabilit\195\169 : %s !",
246 vulnerability_warning = "Vuln\195\169rabilit\195\169 aux sorts modifi\195\169e !",
247 frenzy_message = "Alerte fr\195\169n\195\169sie !",
248 enrage_warning = "Enragement imminent !",
249  
250 breath1 = "Trou de temps",
251 breath2 = "Acide corrosif",
252 breath3 = "Enflammer la chair",
253 breath4 = "Incin\195\169rer",
254 breath5 = "Br\195\187lure de givre",
255 } end )
256  
257 ----------------------------------
258 -- Module Declaration --
259 ----------------------------------
260  
261 BigWigsChromaggus = BigWigs:NewModule(boss)
262 BigWigsChromaggus.zonename = AceLibrary("Babble-Zone-2.2")["Blackwing Lair"]
263 BigWigsChromaggus.enabletrigger = boss
264 BigWigsChromaggus.toggleoptions = { "enrage", "frenzy", "breath", "vulnerability", "bosskill"}
265 BigWigsChromaggus.revision = tonumber(string.sub("$Revision: 16721 $", 12, -3))
266  
267 ------------------------------
268 -- Initialization --
269 ------------------------------
270  
271 function BigWigsChromaggus:OnEnable()
272 -- in the module itself for resetting via schedule
273 self.vulnerability = nil
274 twenty = nil
275  
276 self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE")
277 self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE")
278 self:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE", "PlayerDamageEvents")
279 self:RegisterEvent("CHAT_MSG_SPELL_PET_DAMAGE", "PlayerDamageEvents")
280 self:RegisterEvent("CHAT_MSG_SPELL_PARTY_DAMAGE", "PlayerDamageEvents")
281 self:RegisterEvent("CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE", "PlayerDamageEvents")
282 self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")
283 self:RegisterEvent("UNIT_HEALTH")
284  
285 self:RegisterEvent("BigWigs_RecvSync")
286 self:TriggerEvent("BigWigs_ThrottleSync", "ChromaggusBreath", 10)
287 end
288  
289 function BigWigsChromaggus:UNIT_HEALTH( msg )
290 if self.db.profile.enrage and UnitName(msg) == boss then
291 local health = UnitHealth(msg)
292 if health > 20 and health <= 23 and not twenty then
293 if self.db.profile.enrage then self:TriggerEvent("BigWigs_Message", L["enrage_warning"], "Important") end
294 twenty = true
295 elseif health > 40 and twenty then
296 twenty = nil
297 end
298 end
299 end
300  
301 function BigWigsChromaggus:CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE( msg )
302 local _,_, spellName = string.find(msg, L["breath_trigger"])
303 if spellName then
304 local breath = L:HasReverseTranslation(spellName) and L:GetReverseTranslation(spellName) or nil
305 if not breath then return end
306 breath = string.sub(breath, -1)
307 self:TriggerEvent("BigWigs_SendSync", "ChromaggusBreath "..breath)
308 end
309 end
310  
311 function BigWigsChromaggus:BigWigs_RecvSync(sync, spellId)
312 if sync ~= "ChromaggusBreath" or not spellId or not self.db.profile.breath then return end
313  
314 local spellName = L:HasTranslation("breath"..spellId) and L["breath"..spellId] or nil
315 if not spellName then return end
316  
317 self:TriggerEvent("BigWigs_StartBar", self, string.format( L["castingbar"], spellName), 2 )
318 self:TriggerEvent("BigWigs_Message", string.format(L["breath_message"], spellName), "Important")
319 self:ScheduleEvent("bwchromaggusbreath"..spellName, "BigWigs_Message", 50, string.format(L["breath_warning"], spellName), "Important")
320 self:TriggerEvent("BigWigs_StartBar", self, spellName, 60, L["icon"..spellId])
321 end
322  
323 function BigWigsChromaggus:CHAT_MSG_MONSTER_EMOTE(msg)
324 if msg == L["frenzy_trigger"] and self.db.profile.frenzy then
325 self:TriggerEvent("BigWigs_Message", L["frenzy_message"], "Important")
326 elseif msg == L["vulnerability_trigger"] then
327 if self.db.profile.vulnerability then
328 self:TriggerEvent("BigWigs_Message", L["vulnerability_warning"], "Positive")
329 end
330 self:ScheduleEvent(function() BigWigsChromaggus.vulnerability = nil end, 2.5)
331 end
332 end
333  
334 if (GetLocale() == "koKR") then
335 function BigWigsChromaggus:PlayerDamageEvents(msg)
336 if (not self.vulnerability) then
337 local _,_,_, dmg, school, type = string.find(msg, L["vulnerability_test"])
338 if ( type == L["hit"] or type == L["crit"] ) and tonumber(dmg or "") and school then
339 if (tonumber(dmg) >= 550 and type == L["hit"]) or (tonumber(dmg) >= 1100 and type == L["crit"]) then
340 self.vulnerability = school
341 if self.db.profile.vulnerability then self:TriggerEvent("BigWigs_Message", format(L["vulnerability_message"], school), "Positive") end
342 end
343 end
344 end
345 end
346 else
347 function BigWigsChromaggus:PlayerDamageEvents(msg)
348 if (not self.vulnerability) then
349 local _,_, type, dmg, school = string.find(msg, L["vulnerability_test"])
350 if ( type == L["hit"] or type == L["crit"] ) and tonumber(dmg or "") and school then
351 if (tonumber(dmg) >= 550 and type == L["hit"]) or (tonumber(dmg) >= 1100 and type == L["crit"]) then
352 self.vulnerability = school
353 if self.db.profile.vulnerability then self:TriggerEvent("BigWigs_Message", format(L["vulnerability_message"], school), "Positive") end
354 end
355 end
356 end
357 end
358 end
359