vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
------------------------------
--      Are you local?      --
------------------------------

local boss = AceLibrary("Babble-Boss-2.2")["Gluth"]
local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)

local started = nil

----------------------------
--      Localization      --
----------------------------

L:RegisterTranslations("enUS", function() return {
        cmd = "Gluth",

        fear_cmd = "fear",
        fear_name = "Fear Alert",
        fear_desc = "Warn for fear",

        frenzy_cmd = "frenzy",
        frenzy_name = "Frenzy Alert",
        frenzy_desc = "Warn for frenzy",

        decimate_cmd = "decimate",
        decimate_name = "Decimate Alert",
        decimate_desc = "Warn for Decimate",

        trigger1 = "%s goes into a frenzy!",
        trigger2 = "by Terrifying Roar.",
        starttrigger = "devours all nearby zombies!",

        warn1 = "Frenzy Alert!",
        warn2 = "5 second until AoE Fear!",
        warn3 = "AoE Fear alert - 20 seconds till next!",

        startwarn = "Gluth Engaged! ~105 seconds till Zombies!",
        decimatesoonwarn = "Decimate Soon!",
        decimatewarn = "Decimate!",
        decimatetrigger = "Decimate",

        bar1text = "AoE Fear",
        decimatebartext = "Decimate Zombies",
} end )

L:RegisterTranslations("koKR", function() return {

        fear_name = "공포 경고",
        fear_desc = "공포에 대한 경고",
        
        frenzy_name = "광폭화 경고",
        frenzy_desc = "광폭화에 대한 경고",

        decimate_name = "척살 경보",
        decimate_desc = "척살에 대한 경고",

        trigger1 = "%s|1이;가; 광란의 상태에 빠집니다!", -- CHECK
        trigger2 = "공포의 포효에",
        starttrigger = "주위의 모든 좀비|1을;를; 먹어치웁니다!", -- CHECK (not used)

        warn1 = "광폭화 경고!",
        warn2 = "광역 공포 5초 전!",
        warn3 = "광역 공포 경고 - 20초 후",

        startwarn = "글루스 전투 시작! 약 105초 후 좀비!",
        decimatesoonwarn = "곧 척살!",
        decimatewarn = "척살!",
        decimatetrigger = "척살",

        bar1text = "광역 공포",
        decimatebartext = "척살 좀비",
} end )

L:RegisterTranslations("deDE", function() return {
        fear_name = "Furcht",
        fear_desc = "Warnung vor AoE Furcht.",

        frenzy_name = "Raserei",
        frenzy_desc = "Warnung, wenn Gluth in Raserei ger\195\164t",

        decimate_name = "Dezimieren", -- ?
        decimate_desc = "Warnung vor Dezimieren", -- ?

        trigger1 = "%s ger\195\164t in Raserei!",
        trigger2 = "von Erschreckendes Gebr\195\188ll betroffen.",
        starttrigger = "devours all nearby zombies!", -- ?

        warn1 = "Raserei!",
        warn2 = "5 Sekunden bis AoE Furcht!",
        warn3 = "AoE Furcht - N\195\164chste in 20 Sekunden!",

        startwarn = "Gluth angegriffen! ~105 Sekunden bis Zombies!",
        decimatesoonwarn = "Dezimieren kurz bevor",
        decimatewarn = "Dezimieren! - AoE Zombies!",
        decimatetrigger = "Decimate", -- ?

        bar1text = "Furcht",
        decimatebartext = "Dezimieren", -- ?
} end )

L:RegisterTranslations("zhCN", function() return {
        fear_name = "恐惧警报",
        fear_desc = "恐惧警报",

        frenzy_name = "狂暴警报",
        frenzy_desc = "狂暴警报",

        decimate_name = "残杀警报",
        decimate_desc = "残杀警报",

        trigger1 = "%s变得狂怒无比!",
        trigger2 = "恐惧怒吼",
        starttrigger = "吞吃了周围所有的僵尸!",

        warn1 = "狂暴警报 - 猎人立刻使用宁神射击!",
        warn2 = "5秒后发动群体恐惧!",
        warn3 = "群体恐惧 - 20秒后再次发动",

        startwarn = "格拉斯已激活,~105秒后僵尸出现!",
        decimatesoonwarn = "残杀来临!",
        decimatewarn = "残杀 - AoE僵尸!",
        decimatetrigger = "残杀",

        bar1text = "群体恐惧",
        decimatebartext = "残杀",
} end )

L:RegisterTranslations("zhTW", function() return {
         -- Gluth 古魯斯
        fear_name = "恐懼警報",
        fear_desc = "當古魯斯施放群體恐懼時發出警報",

        frenzy_name = "狂暴警報",
        frenzy_desc = "當古魯斯狂暴時發出警報",

        decimate_name = "屠殺警報",
        decimate_desc = "當古魯斯屠殺時發出警報",

        trigger1 = "變得狂暴起來!",
        trigger2 = "恐嚇咆哮",
        starttrigger = "毀滅所有附近的蛇神!",

        warn1 = "狂暴警報 - 獵人立刻使用寧神射擊!",
        warn2 = "5 秒後發動群體恐懼!",
        warn3 = "群體恐懼 - 20 秒後再次發動",

        startwarn = "古魯斯已進入戰鬥 - 105 秒後僵屍出現!",
        decimatesoonwarn = "屠殺來臨!",
        decimatewarn = "屠殺 - AE僵屍!",
        decimatetrigger = "屠殺",

        bar1text = "群體恐懼",
        decimatebartext = "屠殺",
} end )

L:RegisterTranslations("frFR", function() return {
        trigger1 = "%s gagne Fr\195\169n\195\169sie.",
        trigger2 = "de Rugissement terrifiant.",
        starttrigger = "d\195\169vore tous les zombies aux alentours !",
        decimatetrigger = "D\195\169cimer",
} end )


----------------------------------
--      Module Declaration      --
----------------------------------

BigWigsGluth = BigWigs:NewModule(boss)
BigWigsGluth.zonename = AceLibrary("Babble-Zone-2.2")["Naxxramas"]
BigWigsGluth.enabletrigger = boss
BigWigsGluth.toggleoptions = {"frenzy", "fear", "decimate", "bosskill"}
BigWigsGluth.revision = tonumber(string.sub("$Revision: 15380 $", 12, -3))

------------------------------
--      Initialization      --
------------------------------

-- XXX Need to add a timer bar for berserker rage.
-- XXX It happens some time after the 3rd decimate, but it's probably on a
-- XXX fixed timer, so just make it a bar like the Twins@AQ40 enrage timer.

function BigWigsGluth:OnEnable()
        self.prior = nil
        started = nil

        self:RegisterEvent("BigWigs_Message")

        self:RegisterEvent("PLAYER_REGEN_ENABLED", "CheckForWipe")
        self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckForEngage")

        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS", "Frenzy")
        self:RegisterEvent("CHAT_MSG_MONSTER_EMOTE", "Frenzy")

        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE", "Fear")
        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE", "Fear")
        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE", "Fear")

        self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")

        self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE", "Decimate")

        self:RegisterEvent("BigWigs_RecvSync")
        self:TriggerEvent("BigWigs_ThrottleSync", "GluthDecimate", 30)
end

function BigWigsGluth:Frenzy( msg )
        if self.db.profile.frenzy and msg == L["trigger1"] then
                self:TriggerEvent("BigWigs_Message", L["warn1"], "Important")
        end
end

function BigWigsGluth:Fear( msg )
        if self.db.profile.fear and not self.prior and string.find(msg, L["trigger2"]) then
                self:TriggerEvent("BigWigs_Message", L["warn3"], "Important")
                self:TriggerEvent("BigWigs_StartBar", self, L["bar1text"], 20, "Interface\\Icons\\Spell_Shadow_PsychicScream")
                self:ScheduleEvent("BigWigs_Message", 15, L["warn2"], "Urgent")
                self.prior = true
        end
end

function BigWigsGluth:Decimate( msg )
        if string.find(msg, L["decimatetrigger"]) then
                self:TriggerEvent("BigWigs_SendSync", "GluthDecimate")
        end
end

function BigWigsGluth:BigWigs_RecvSync( sync, rest, nick )
        if sync == "GluthDecimate" and self.db.profile.decimate then
                self:TriggerEvent("BigWigs_Message", L["decimatewarn"], "Important")
                self:TriggerEvent("BigWigs_StartBar", self, L["decimatebartext"], 105, "Interface\\Icons\\INV_Shield_01")
                self:ScheduleEvent("BigWigs_Message", 100, L["decimatesoonwarn"], "Urgent")
        elseif sync == self:GetEngageSync() and rest and rest == boss and not started then
                started = true
                if self:IsEventRegistered("PLAYER_REGEN_DISABLED") then self:UnregisterEvent("PLAYER_REGEN_DISABLED") end
                if self.db.profile.decimate then
                        self:TriggerEvent("BigWigs_Message", L["startwarn"], "Attention")
                        self:TriggerEvent("BigWigs_StartBar", self, L["decimatebartext"], 105, "Interface\\Icons\\INV_Shield_01")
                        self:ScheduleEvent("BigWigs_Message", 100, L["decimatesoonwarn"], "Urgent")
                end
        end
end

function BigWigsGluth:BigWigs_Message(text)
        if text == L["warn2"] then self.prior = nil end
end