vanilla-wow-addons – Rev 1
?pathlinks?
------------------------------
-- Are you local? --
------------------------------
local boss = AceLibrary("Babble-Boss-2.2")["Ragnaros"]
local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)
local started = nil
----------------------------
-- Localization --
----------------------------
L:RegisterTranslations("enUS", function() return {
knockback_trigger = "^TASTE",
submerge_trigger = "^COME FORTH,",
engage_trigger = "^NOW FOR YOU,",
knockback_message = "Knockback!",
knockback_soon_message = "5 sec to knockback!",
submerge_message = "Ragnaros down for 90 sec. Incoming Sons of Flame!",
emerge_soon_message = "15 sec until Ragnaros emerges!",
emerge_message = "Ragnaros emerged, 3 minutes until submerge!",
submerge_60sec_message = "60 sec to submerge!",
submerge_20sec_message = "20 sec to submerge!",
knockback_bar = "AoE knockback",
emerge_bar = "Ragnaros emerge",
submerge_bar = "Ragnaros submerge",
sonofflame = "Son of Flame",
sonsdeadwarn = "%d/8 Sons of Flame dead!",
cmd = "Ragnaros",
emerge_cmd = "emerge",
emerge_name = "Emerge alert",
emerge_desc = "Warn for Ragnaros Emerge",
sondeath_cmd = "sondeath",
sondeath_name = "Son of Flame dies",
sondeath_desc = "Warn when a son dies",
submerge_cmd = "submerge",
submerge_name = "Submerge alert",
submerge_desc = "Warn for Ragnaros Submerge & Sons of Flame",
aoeknock_cmd = "aoeknock",
aoeknock_name = "Knockback alert",
aoeknock_desc = "Warn for Wrath of Ragnaros knockback",
} end)
L:RegisterTranslations("zhCN", function() return {
knockback_trigger = "^尝尝萨弗隆的火焰吧",
submerge_trigger = "^出现吧,我的奴仆",
engage_trigger = "^现在轮到你们了",
knockback_message = "群体击退!",
knockback_soon_message = "5秒后发动群体击退!",
submerge_message = "拉格纳罗斯消失90秒。烈焰之子出现!",
emerge_soon_message = "15秒后拉格纳罗斯重新出现!",
emerge_message = "拉格纳罗斯已经激活,将在3分钟后暂时消失并召唤烈焰之子!",
submerge_60sec_message = "60秒后拉格纳罗斯将暂时消失并召唤烈焰之子!",
submerge_20sec_message = "20秒后拉格纳罗斯将暂时消失并召唤烈焰之子!",
knockback_bar = "群体击退",
emerge_bar = "拉格纳罗斯出现",
submerge_bar = "拉格纳罗斯消失",
sonofflame = "烈焰之子",
sonsdeadwarn = "%d/8个烈焰之子死亡了!",
emerge_name = "出现警报",
emerge_desc = "出现警报",
sondeath_name = "烈焰之子死亡",
sondeath_desc = "当一个烈焰之子死亡时发出警报",
submerge_name = "消失警报",
submerge_desc = "消失警报",
aoeknock_name = "群体击退警报",
aoeknock_desc = "群体击退警报",
} end)
L:RegisterTranslations("zhTW", function() return {
-- Ragnaros 拉格納羅斯
knockback_trigger = "^感受薩弗隆的烈焰吧!",
submerge_trigger = "^出現吧,我的奴僕",
engage_trigger = "^現在輪到你們了",
knockback_message = "群體擊退!",
knockback_soon_message = "5 秒後群體擊退,近戰後退!",
submerge_message = "消失 90 秒! 烈焰之子出現!",
emerge_soon_message = "15 秒後重新出現!",
emerge_message = "拉格納羅斯已經進入戰鬥,3 分鐘後暫時消失並召喚烈焰之子",
submerge_60sec_message = "60 秒後暫時消失並召喚烈焰之子!",
submerge_20sec_message = "20 秒後暫時消失並召喚烈焰之子!",
knockback_bar = "群體擊退",
emerge_bar = "拉格納羅斯出現",
submerge_bar = "拉格納羅斯消失",
sonofflame = "烈焰之子",
sonsdeadwarn = "%d/8 個烈焰之子死亡了!",
emerge_name = "出現警報",
emerge_desc = "當拉格納羅斯出現消失時發出警報",
sondeath_name = "烈焰之子死亡",
sondeath_desc = "當一個烈焰之子死亡時發出警報",
submerge_name = "消失警報",
submerge_desc = "當拉格納羅斯消失時發出警報",
aoeknock_name = "群體擊退警報",
aoeknock_desc = "當拉格納羅斯發動擊退技能時發出警報",
} end)
L:RegisterTranslations("koKR", function() return {
knockback_trigger = "설퍼론의 유황",
submerge_trigger = "나의 종들아",
engage_trigger = "이제 너희",
knockback_message = "광역 튕겨냄!",
knockback_soon_message = "5초후 튕겨냄!",
submerge_message = "90초간 라그나로스 사라짐. 피조물 등장!",
emerge_soon_message = "15초후 라그나로스 재등장!",
emerge_message = "라그나로스가 등장했습니다. 3분후 피조물 소환!",
submerge_60sec_message = "60초후 피조물 등장!",
submerge_20sec_message = "20초후 피조물 등장!",
knockback_bar = "광역 튕겨냄",
emerge_bar = "라그나로스 등장",
submerge_bar = "피조물 등장",
sonofflame = "화염의 수호물",
sonsdeadwarn = "%d/8 화염의 수호물 사망!",
emerge_name = "등장 경고",
emerge_desc = "라그나로스 등장에 대한 경고",
sondeath_name = "화염의 수호물 죽음",
sondeath_desc = "화염의 수호물 죽음 알림",
submerge_name = "사라짐 경고",
submerge_desc = "라그나로스 사라짐 & 피조물에 대한 경고",
aoeknock_name = "튕겨냄 경고",
aoeknock_desc = "라그나로스의 튕겨냄 경고",
} end)
L:RegisterTranslations("deDE", function() return {
knockback_trigger = "^SP\195\156RT DIE FLAMMEN",
submerge_trigger = "^KOMMT HERBEI, MEINE DIENER", -- ?
engage_trigger = "^NUN ZU EUCH, INSEKTEN", -- ?
knockback_message = "AoE Rundumschlag!",
knockback_soon_message = "AoE Rundumschlag in 5 Sekunden!",
submerge_message = "Ragnaros untergetaucht f\195\188r 90 Sekunden! S\195\182hne der Flamme kommen!",
emerge_soon_message = "Ragnaros taucht auf in 15 Sekunden!",
emerge_message = "Ragnaros aufgetaucht! Untertauchen in 3 Minuten!",
submerge_60sec_message = "Ragnaros taucht unter in 60 Sekunden!",
submerge_20sec_message = "Ragnaros taucht unter in 20 Sekunden!",
knockback_bar = "AoE Rundumschlag",
emerge_bar = "Auftauchen Ragnaros",
submerge_bar = "Untertauchen Ragnaros",
sonofflame = "Sohn der Flamme",
sonsdeadwarn = "%d/8 S\195\182hne der Flamme tot!",
emerge_name = "Auftauchen",
emerge_desc = "Warnung, wenn Ragnaros auftaucht.",
sondeath_name = "S\195\182hne der Flamme",
sondeath_desc = "Counter f\195\188r die get\195\182teten S\195\182ohne der Flamme.",
submerge_name = "Untertauchen",
submerge_desc = "Warnung, wenn Ragnaros untertaucht und die S\195\182hne der Flamme erscheinen.",
aoeknock_name = "AoE Rundumschlag",
aoeknock_desc = "Warnung, wenn Ragnaros AoE Rundumschlag wirkt.",
} end)
L:RegisterTranslations("frFR", function() return {
knockback_trigger = "^GO\195\155TEZ ",
submerge_trigger = "^VENEZ, MES SERVITEURS",
engage_trigger = "^ET MAINTENANT",
knockback_message = "Projection de zone !",
knockback_soon_message = "5 secondes avant Projection de zone !",
submerge_message = "Ragnaros dispara\195\174t pour 90 secondes. Arriv\195\169e des Fils des flammes !",
emerge_soon_message = "15 secondes avant que Ragnaros n'\195\169merge !",
emerge_message = "Ragnaros a \195\169merg\195\169. 3 minutes avant l'arriv\195\169e des Fils des flammes !",
submerge_60sec_message = "60 secondes avant l'arriv\195\169e des Fils des flammes !",
submerge_20sec_message = "20 secondes avant l'arriv\195\169e des Fils des flammes !",
knockback_bar = "Projection de zone",
emerge_bar = "Ragnaros \195\169merge",
submerge_bar = "Fils des flammes",
sonofflame = "Fils des flammes",
sonsdeadwarn = "%d/8 Fils des flammes mort !",
emerge_name = "Alerte Emerge",
emerge_desc = "Pr\195\169viens quand Ragnaros \195\169merge.",
sondeath_name = "Alerte mort des Fils",
sondeath_desc = "Pr\195\169viens de la mort d'un Fils des flammes.",
submerge_name = "Alerte Immersion",
submerge_desc = "Pr\195\169viens de l'immersion de Ragnaros et l'arriv\195\169e des Fils des flammes.",
aoeknock_name = "Alerte Projection de zone",
aoeknock_desc = "Pr\195\169viens des projections de zone.",
} end)
----------------------------------
-- Module Declaration --
----------------------------------
BigWigsRagnaros = BigWigs:NewModule(boss)
BigWigsRagnaros.zonename = AceLibrary("Babble-Zone-2.2")["Molten Core"]
BigWigsRagnaros.enabletrigger = boss
BigWigsRagnaros.wipemobs = { L["sonofflame"] }
BigWigsRagnaros.toggleoptions = { "sondeath", "submerge", "emerge", "aoeknock", "bosskill" }
BigWigsRagnaros.revision = tonumber(string.sub("$Revision: 16639 $", 12, -3))
------------------------------
-- Initialization --
------------------------------
function BigWigsRagnaros:OnEnable()
started = nil
self.sonsdead = 0
self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe")
self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckForEngage")
self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH")
self:RegisterEvent("BigWigs_RecvSync")
self:TriggerEvent("BigWigs_ThrottleSync", "RagnarosSonDead", .1)
end
------------------------------
-- Event Handlers --
------------------------------
function BigWigsRagnaros:CHAT_MSG_COMBAT_HOSTILE_DEATH(msg)
if msg == string.format(UNITDIESOTHER, L["sonofflame"]) then
self:TriggerEvent("BigWigs_SendSync", "RagnarosSonDead "..tostring(self.sonsdead + 1) )
else
self:GenericBossDeath(msg)
end
end
function BigWigsRagnaros:BigWigs_RecvSync(sync, rest)
if sync == self:GetEngageSync() and rest and rest == boss and not started then
started = true
if self:IsEventRegistered("PLAYER_REGEN_ENABLED") then
self:UnregisterEvent("PLAYER_REGEN_ENABLED")
end
self:Emerge()
elseif sync == "RagnarosSonDead" and rest then
rest = tonumber(rest)
if not rest then return end
if rest == (self.sonsdead + 1) then
self.sonsdead = self.sonsdead + 1
if self.db.profile.sondeath then
self:TriggerEvent("BigWigs_Message", string.format(L["sonsdeadwarn"], self.sonsdead), "Urgent")
end
if self.sonsdead == 8 then
self:CancelScheduledEvent("bwragnarosemerge")
self:TriggerEvent("BigWigs_StopBar", L["emerge_bar"])
self.sonsdead = 0 -- reset counter
self:Emerge()
end
end
end
end
function BigWigsRagnaros:CHAT_MSG_MONSTER_YELL(msg)
if string.find(msg, L["knockback_trigger"]) and self.db.profile.aoeknock then
self:TriggerEvent("BigWigs_Message", L["knockback_message"], "Important")
self:ScheduleEvent("bwragnarosaekbwarn", "BigWigs_Message", 23, L["knockback_soon_message"], "Urgent")
self:TriggerEvent("BigWigs_StartBar", self, L["knockback_bar"], 28, "Interface\\Icons\\Spell_Fire_SoulBurn")
elseif string.find(msg, L["submerge_trigger"]) then
self:Submerge()
end
end
function BigWigsRagnaros:Submerge()
self:CancelScheduledEvent("bwragnarosaekbwarn")
self:TriggerEvent("BigWigs_StopBar", self, L["knockback_bar"])
if self.db.profile.submerge then
self:TriggerEvent("BigWigs_Message", L["submerge_message"], "Important")
end
if self.db.profile.emerge then
self:ScheduleEvent("bwragnarosemergewarn", "BigWigs_Message", 75, L["emerge_soon_message"], "Urgent")
self:TriggerEvent("BigWigs_StartBar", self, L["emerge_bar"], 90, "Interface\\Icons\\Spell_Fire_Volcano")
end
self:ScheduleRepeatingEvent("bwragnarosemergecheck", self.EmergeCheck, 2, self)
self:ScheduleEvent("bwragnarosemerge", self.Emerge, 90, self)
end
function BigWigsRagnaros:EmergeCheck()
if UnitExists("target") and UnitName("target") == boss and UnitExists("targettarget") then
self:Emerge()
return
end
local num = GetNumRaidMembers()
for i = 1, num do
local raidUnit = string.format("raid%starget", i)
if UnitExists(raidUnit) and UnitName(raidUnit) == boss and UnitExists(raidUnit.."target") then
self:Emerge()
return
end
end
end
function BigWigsRagnaros:Emerge()
self:CancelScheduledEvent("bwragnarosemergecheck")
self:CancelScheduledEvent("bwragnarosemergewarn")
self:TriggerEvent("BigWigs_StopBar", self, L["emerge_bar"])
if self.db.profile.emerge then
self:TriggerEvent("BigWigs_Message", L["emerge_message"], "Attention")
end
if self.db.profile.submerge then
self:ScheduleEvent("BigWigs_Message", 120, L["submerge_60sec_message"], "Urgent")
self:ScheduleEvent("BigWigs_Message", 160, L["submerge_20sec_message"], "Important")
self:TriggerEvent("BigWigs_StartBar", self, L["submerge_bar"], 180, "Interface\\Icons\\Spell_Fire_SelfDestruct")
end
end