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")["Maexxna"]
6 local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)
7  
8 local times = {}
9 local prior = nil
10 local started
11  
12 ----------------------------
13 -- Localization --
14 ----------------------------
15  
16 L:RegisterTranslations("enUS", function() return {
17 cmd = "Maexxna",
18  
19 spray_cmd = "spray",
20 spray_name = "Web Spray Alert",
21 spray_desc = "Warn for webspray and spiders",
22  
23 enrage_cmd = "enrage",
24 enrage_name = "Enrage Alert",
25 enrage_desc = "Warn for enrage",
26  
27 cocoon_cmd = "cocoon",
28 cocoon_name = "Cocoon Alert",
29 cocoon_desc = "Warn for Cocooned players",
30  
31 cocoontrigger = "(.*) (.*) afflicted by Web Wrap.",
32 webspraytrigger = "is afflicted by Web Spray.",
33  
34 cocoonwarn = "%s Cocooned!",
35  
36 enragetrigger = "%s becomes enraged.",
37  
38 webspraywarn30sec = "Wall Cocoons in 10 seconds",
39 webspraywarn20sec = "Wall Cocoons! 10 seconds until Spiders spawn!",
40 webspraywarn10sec = "Spiders Spawn. 10 seconds until Web Spray!",
41 webspraywarn5sec = "WEB SPRAY 5 seconds!",
42 webspraywarn = "Web Spray! 40 seconds until next!",
43 enragewarn = "Enrage - SQUISH SQUISH SQUISH!",
44 enragesoonwarn = "Enrage Soon - Bugsquatters out!",
45  
46 webspraybar = "Web Spray",
47 cocoonbar = "Cocoons",
48 spiderbar = "Spiders",
49  
50 you = "You",
51 are = "are",
52 } end )
53  
54 L:RegisterTranslations("deDE", function() return {
55 spray_name = "Gespinstschauer",
56 spray_desc = "Warnung vor Gespinstschauer und Spinnen.",
57  
58 enrage_name = "Wutanfall",
59 enrage_desc = "Warnung wenn Maexxna w\195\188tend wird.",
60  
61 cocoon_name = "Fangnetz",
62 cocoon_desc = "Warnung, wenn Spieler von Fangnetz betroffen sind.",
63  
64 cocoontrigger = "(.*) (.*) von Fangnetz betroffen.",
65 webspraytrigger = "ist von Gespinstschauer betroffen.",
66  
67 cocoonwarn = "%s im Fangnetz!",
68  
69 enragetrigger = "%s wird w\195\188tend.",
70  
71 webspraywarn30sec = "Fangnetze in 10 Sekunden",
72 webspraywarn20sec = "Fangnetze! Spinnen in 10 Sekunden!",
73 webspraywarn10sec = "Spinnen! Gespinstschauer in 10 Sekunden!",
74 webspraywarn5sec = "Gespinstschauer in 5 Sekunden!",
75 webspraywarn = "Gespinstschauer! N\195\164chster in 40 Sekunden!",
76 enragewarn = "Wutanfall!",
77 enragesoonwarn = "Wutanfall in K\195\188rze!",
78  
79 webspraybar = "Gespinstschauer",
80 cocoonbar = "Fangnetze",
81 spiderbar = "Spinnen",
82  
83 you = "Ihr",
84 are = "seid",
85 } end )
86  
87 L:RegisterTranslations("koKR", function() return {
88  
89 spray_name = "거미줄 뿌리기 경고",
90 spray_desc = "거미줄 뿌리기와 거미 소환에 대한 경고",
91  
92 enrage_name = "분노 경고",
93 enrage_desc = "분노에 대한 경고",
94  
95 cocoon_name = "거미줄 감싸기 경고",
96 cocoon_desc = "거미줄 감싸기에 걸린 플레이어에 대한 경고",
97  
98 cocoontrigger = "^([^|;%s]*)(.*)거미줄 감싸기에 걸렸습니다%.$", -- "(.*) (.*) afflicted by Web Wrap.",
99 webspraytrigger = "거미줄 뿌리기에 걸렸습니다.",
100  
101 cocoonwarn = "<<%s>> 거미줄 감싸기에 걸렸습니다!",
102  
103 enragetrigger = "%s|1이;가; 분노에 휩싸입니다!",
104  
105 webspraywarn30sec = "10초 이내 거미줄 감싸기",
106 webspraywarn20sec = "거미줄 감싸기. 10초 후 거미 소환!",
107 webspraywarn10sec = "거미 소환. 10초 후 거미줄 뿌리기!",
108 webspraywarn5sec = "5초 후 거미줄 뿌리기!",
109 webspraywarn = "거미줄 뿌리기! 다음은 40초 후!",
110 enragewarn = "분노 - 무한 공격!",
111 enragesoonwarn = "분노 예고 - 준비!",
112  
113 webspraybar = "거미줄 뿌리기",
114 cocoonbar = "거미줄 감싸기", -- CHECK
115 spiderbar = "거미 소환", -- CHECK
116  
117 you = "",
118 are = "",
119 } end )
120  
121 L:RegisterTranslations("zhCN", function() return {
122 spray_name = "蛛网喷射警报",
123 spray_desc = "蛛网喷射警报",
124  
125 enrage_name = "激怒警报",
126 enrage_desc = "激怒警报",
127  
128 cocoon_name = "蛛网裹体警报",
129 cocoon_desc = "对被蛛网裹体的玩家发出警报",
130  
131 cocoontrigger = "^(.+)受(.+)了蛛网裹体",
132 webspraytrigger = "蛛网喷射",
133  
134 cocoonwarn = "%s被蛛网裹体了!",
135  
136 enragetrigger = "变得愤怒了!",
137  
138 webspraywarn30sec = "10秒后发动墙茧",
139 webspraywarn20sec = "墙茧 - 10秒后蜘蛛出现!",
140 webspraywarn10sec = "蜘蛛出现 - 10秒后蛛网喷射!",
141 webspraywarn5sec = "蛛网裹体5秒!",
142 webspraywarn = "蛛网裹体 - 40秒后再次发动",
143 enragewarn = "激怒 - 全力攻击!",
144 enragesoonwarn = "即将激怒 - 做好准备!",
145  
146 webspraybar = "蛛网喷射",
147 cocoonbar = "墙茧",
148 spiderbar = "小蜘蛛出现",
149  
150 you = "你",
151 are = "到",
152 } end )
153  
154 L:RegisterTranslations("zhTW", function() return {
155 -- Maexxna 梅克絲娜
156 spray_name = "撒網警報",
157 spray_desc = "當梅克絲娜撒網及小蜘蛛出現時發出警報",
158  
159 enrage_name = "狂怒警報",
160 enrage_desc = "狂怒警報",
161  
162 cocoon_name = "纏繞的蜘蛛網警報",
163 cocoon_desc = "玩家受到蜘蛛網纏繞發出警報",
164  
165 cocoontrigger = "^(.+)受到(.*)纏繞的蜘蛛網",
166 webspraytrigger = "梅克絲娜的撒網",
167  
168 cocoonwarn = "%s 被蛛網纏繞了!",
169  
170 enragetrigger = "變得憤怒了!",
171  
172 webspraywarn30sec = "10 秒後發動纏繞的蜘蛛網",
173 webspraywarn20sec = "纏繞的蜘蛛網! 10 秒後小蜘蛛出現!",
174 webspraywarn10sec = "小蜘蛛出現! 10 秒後撒網!",
175 webspraywarn5sec = "5 秒後撒網!",
176 webspraywarn = "撒網! 40 秒後再次發動",
177 enragewarn = "狂怒!全力攻擊!",
178 enragesoonwarn = "即將狂怒!",
179  
180 webspraybar = "撒網",
181 cocoonbar = "纏繞的蜘蛛網",
182 spiderbar = "小蜘蛛",
183  
184 you = "你",
185 are = "了",
186 } end )
187  
188 L:RegisterTranslations("frFR", function() return {
189 cocoontrigger = "(.*) (.*) les effets de Entoilage.",
190 webspraytrigger = "les effets de Jet de rets.",
191  
192 enragetrigger = "%s devient folle furieuse !",
193  
194 you = "Vous",
195 are = "subissez",
196 } end )
197  
198 ----------------------------------
199 -- Module Declaration --
200 ----------------------------------
201  
202 BigWigsMaexxna = BigWigs:NewModule(boss)
203 BigWigsMaexxna.zonename = AceLibrary("Babble-Zone-2.2")["Naxxramas"]
204 BigWigsMaexxna.enabletrigger = boss
205 BigWigsMaexxna.toggleoptions = {"spray", "cocoon", "enrage", "bosskill"}
206 BigWigsMaexxna.revision = tonumber(string.sub("$Revision: 15520 $", 12, -3))
207  
208 ------------------------------
209 -- Initialization --
210 ------------------------------
211  
212 function BigWigsMaexxna:OnEnable()
213 self.enrageannounced = nil
214 prior = nil
215 times = {}
216 started = nil
217  
218 self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE")
219 self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe")
220 self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckForEngage")
221 self:RegisterEvent("UNIT_HEALTH")
222 self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")
223 self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", "SprayEvent")
224 self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", "SprayEvent")
225 self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", "SprayEvent")
226 self:RegisterEvent("BigWigs_Message")
227  
228 self:RegisterEvent("BigWigs_RecvSync")
229 self:TriggerEvent("BigWigs_ThrottleSync", "MaexxnaWebspray", 8)
230 self:TriggerEvent("BigWigs_ThrottleSync", "MaexxnaCocoon", 0)
231 -- the MaexxnaCocoon sync is left unthrottled, it's throttled inside the module itself
232 -- because the web wrap happens to a lot of players at once.
233 end
234  
235 function BigWigsMaexxna:SprayEvent( msg )
236 -- web spray warning
237 if string.find(msg, L["webspraytrigger"]) and not prior then
238 self:TriggerEvent("BigWigs_SendSync", "MaexxnaWebspray")
239 elseif string.find(msg, L["cocoontrigger"]) then
240 local _,_,wplayer,wtype = string.find(msg, L["cocoontrigger"])
241 if wplayer and wtype then
242 if wplayer == L["you"] and wtype == L["are"] then
243 wplayer = UnitName("player")
244 end
245 local t = GetTime()
246 if ( not times[wplayer] ) or ( times[wplayer] and ( times[wplayer] + 10 ) < t) then
247 self:TriggerEvent("BigWigs_SendSync", "MaexxnaCocoon "..wplayer)
248 end
249 end
250 end
251 end
252  
253 function BigWigsMaexxna:BigWigs_RecvSync( sync, rest )
254 if sync == self:GetEngageSync() and rest and rest == boss and not started then
255 started = true
256 if self:IsEventRegistered("PLAYER_REGEN_DISABLED") then self:UnregisterEvent("PLAYER_REGEN_DISABLED") end
257 self:BigWigs_RecvSync("MaexxnaWebspray", nil, nil)
258 elseif sync == "MaexxnaWebspray" then
259 if prior then return end
260 prior = true
261  
262 self:CancelScheduledEvent("bwmaexxna30")
263 self:CancelScheduledEvent("bwmaexxna20")
264 self:CancelScheduledEvent("bwmaexxna10")
265 self:CancelScheduledEvent("bwmaexxna5")
266  
267 self:TriggerEvent("BigWigs_Message", L["webspraywarn"], "Important")
268 self:ScheduleEvent("bwmaexxna30", "BigWigs_Message", 10, L["webspraywarn30sec"], "Attention")
269 self:ScheduleEvent("bwmaexxna20", "BigWigs_Message", 20, L["webspraywarn20sec"], "Attention")
270 self:ScheduleEvent("bwmaexxna10", "BigWigs_Message", 30, L["webspraywarn10sec"], "Attention")
271 self:ScheduleEvent("bwmaexxna5", "BigWigs_Message", 35, L["webspraywarn5sec"], "Attention")
272 self:TriggerEvent("BigWigs_StartBar", self, L["cocoonbar"], 20, "Interface\\Icons\\Spell_Nature_Web" )
273 self:TriggerEvent("BigWigs_StartBar", self, L["spiderbar"], 30, "Interface\\Icons\\INV_Misc_MonsterSpiderCarapace_01" )
274 self:TriggerEvent("BigWigs_StartBar", self, L["webspraybar"], 40, "Interface\\Icons\\Ability_Ensnare" )
275 elseif sync == "MaexxnaCocoon" then
276 local t = GetTime()
277 if ( not times[rest] ) or ( times[rest] and ( times[rest] + 10 ) < t) then
278 if self.db.profile.cocoon then self:TriggerEvent("BigWigs_Message", string.format(L["cocoonwarn"], rest), "Urgent" ) end
279 times[rest] = t
280 end
281 end
282 end
283  
284 function BigWigsMaexxna:CHAT_MSG_MONSTER_EMOTE( msg )
285 if self.db.profile.enrage and msg == L["enragetrigger"] then
286 self:TriggerEvent("BigWigs_Message", L["enragewarn"], "Important")
287 end
288 end
289  
290 function BigWigsMaexxna:UNIT_HEALTH( msg )
291 if UnitName(msg) == boss then
292 local health = UnitHealth(msg)
293 if (health > 30 and health <= 33 and not self.enrageannounced) then
294 if self.db.profile.enrage then self:TriggerEvent("BigWigs_Message", L["enragesoonwarn"], "Important") end
295 self.enrageannounced = true
296 elseif (health > 40 and self.enrageannounced) then
297 self.enrageannounced = nil
298 end
299 end
300 end
301  
302 function BigWigsMaexxna:BigWigs_Message(text)
303 if text == L["webspraywarn10sec"] then
304 prior = nil
305 end
306 end
307