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 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 |