vanilla-wow-addons – Rev 1

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

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

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

L:RegisterTranslations("enUS", function() return {
        -- Chat message triggers
        engage_trigger = "FACE THE WRATH OF THE SOULFLAYER!",
        drain_trigger = "^Hakkar suffers (.+) from (.+) Blood Siphon",
        mindcontrol_trigger = "(.*) (.*) afflicted by Cause Insanity",

        you = "You",
        are = "are",

        flee = "Fleeing will do you no good, mortals!",

        -- Warnings and bar texts
        start_message = "Hakkar engaged - 90sec to drain - 10min to enrage!",
        drain_warning = "%d sec to Life Drain!",
        drain_message = "Life Drain - 90 sec to next!",

        mindcontrol_message = "%s is mindcontrolled!",
        mindcontrol_bar = "MC: %s",

        ["Enrage"] = true,
        ["Life Drain"] = true,

        cmd = "Hakkar",

        drain_cmd = "drain",
        drain_name = "Drain Alerts",
        drain_desc = "Warn for Drains",

        enrage_cmd = "enrage",
        enrage_name = "Enrage Alerts",
        enrage_desc = "Warn for Enrage",

        mc_cmd = "mc",
        mc_name = "Mind Control",
        mc_desc = "Alert when someone is mind controlled.",

        icon_cmd = "icon",
        icon_name = "Place Icon",
        icon_desc = "Place a skull icon on the mind controlled person (requires promoted or higher)",
} end)

L:RegisterTranslations("deDE", function() return {
        engage_trigger = "^EURE \195\156BERHEBLICHKEIT K\195\156NDET BEREITS VOM ENDE DIESER WELT!", -- ?
        drain_trigger = "^Hakkar erleidet (.+) Naturschaden von (.+) %(durch Bluttrinker%).",
        mindcontrol_trigger = "(.*) (.*) von Wahnsinn verursachen betroffen.",

        you = "Ihr",
        are = "seid",

        flee = "Es ist sinnlos zu fl\195\188chten, Sterbliche!",

        start_message = "Hakkar angegriffen! Bluttrinker in 90 Sekunden! Wutanfall in 10 Minuten!",
        drain_warning = "Bluttrinker in %d Sekunden!",
        drain_message = "Bluttrinker! N\195\164chster in 90 Sekunden!",

        mindcontrol_message = "%s steht unter Gedankenkontrolle!",
        mindcontrol_bar = "MC: %s",

        ["Enrage"] = "Wutanfall",
        ["Life Drain"] = "Bluttrinker",

        drain_name = "Bluttrinker",
        drain_desc = "Warnung, wenn Hakkar Bluttrinker wirkt.",

        enrage_name = "Wutanfall",
        enrage_desc = "Warnung, wenn Hakkar w\195\188tend wird.",

        mc_name = "Gedankenkontrolle",
        mc_desc = "Warnung wenn jemand unter Gedankenkontrolle steht.",

        icon_name = "Symbol",
        icon_desc = "Platziert ein Symbol \195\188ber dem Spieler, der unter Gedankenkontrolle steht. (Ben\195\182tigt Anf\195\188hrer oder Bef\195\182rdert Status.)",
} end)

L:RegisterTranslations("frFR", function() return {
        -- Chat message triggers
        engage_trigger = "ANNONCE LA FIN DE VOTRE MONDE",
        drain_trigger = "^Siphon de sang .+ (.+) inflige \195\160 Hakkar (.+).",
        mindcontrol_trigger = "(.*) (.*) les effets de Rendre fou.",

        you = "Vous",
        are = "subissez",

        flee = "Fuir ne vous servira \195\160 rien, mortels !",

-- Warnings and bar texts
        start_message = "Hakkar engag\195\169 - 90 sec. avant Drain - 10 min. avant Enrager",
        drain_warning = "%d sec. avant le Drain de vie !",      
        drain_message = "Drain de vie - 90 sec. avant le prochain !",

        mindcontrol_message = "%s est devenu fou !",
        mindcontrol_bar = "CM: %s",

        ["Enrage"] = "Enrager",
        ["Life Drain"] = "Drain de vie",

        drain_name = "Alerte Drain",
        drain_desc = "Pr\195\169viens quand Hakkar fait ses drains de vie.",

        enrage_name = "Alerte Enrager",
        enrage_desc = "Pr\195\169viens quand Hakkar devient enrag\195\169.",

        mc_name = "Alerte Contr\195\180le Mental",
        mc_desc = "Pr\195\169viens quand quelqu'un est sous le contr\195\180le d'Hakkar.",

        icon_name = "Placer une ic\195\180ne",
        icon_desc = "Place une ic\195\180ne de raid sur la personne sous contr\195\180le mental (n\195\169cessite d'\195\170tre promu ou mieux).",      
} end)

L:RegisterTranslations("koKR", function() return {
        -- Chat message triggers
        engage_trigger = "자만심은 세상의 종말을 불러올 뿐이다. 오너라! 건방진 피조물들이여! 와서 신의 진노에 맞서 보아라!",
        drain_trigger = "학카르|1이;가; (.+)의 피의 착취에 의해 (.+)의 자연 피해를 입었습니다.",
        mindcontrol_trigger = "^([^|;%s]*)(.*)정신 착란에 걸렸습니다%.$", -- "(.*) (.*) afflicted by Cause Insanity", -- CHECK

        you = "",
        are = "",

        flee = "도망쳐 봐야 소용없다, 어리석은 생명체여!", -- by turtl

        -- Warnings and bar texts
        start_message = "학카르 시작 - 90초후 생명력 흡수 - 10분후 격노",
        drain_warning = "생명력 흡수 %d초전",
        drain_message = "생명력 흡수 - 다음 시전은 90초후",

        mindcontrol_message = "%s|1이;가; 정신 지배되었습니다!",
        mindcontrol_bar = "정신지배: %s",

        ["Enrage"] = "격노",
        ["Life Drain"] = "생명력 흡수",

        drain_name = "흡수 경고",
        drain_desc = "흡수에 대한 경고",
        
        enrage_name = "격노 경고",
        enrage_desc = "격노에 대한 경고",

        mc_name = "정신 지배",
        mc_desc = "정신 지배 되었을 때 경고",

        icon_name = "아이콘 지정",
        icon_desc = "정신 지배된 사람에게 해골 아이콘 지정 (승급자 이상 필요)",
} end)


L:RegisterTranslations("zhCN", function() return {
        -- Chat message triggers
        engage_trigger = "^骄傲会将你送上绝路",
        drain_trigger = "^(.+)的酸性血液虹吸使哈卡受到了(.+)",
        mindcontrol_trigger = "^(.+)受(.+)疯狂效果的影响",
        
        you = "你",
        are = "到",
        
        flee = "逃跑",

        -- Warnings and bar texts
        start_message = "哈卡已经激活 - 90秒后开始生命吸取 - 10分钟后进入激怒状态",
        drain_warning = "%d秒后发动生命吸取",
        drain_message = "血液虹吸 - 90秒后再次发动",
        
        mindcontrol_message = "%s 被控制了",
        mindcontrol_bar = "MC: %s",
        
        ["Enrage"] = "激怒",
        ["Life Drain"] = "生命吸取",

        drain_name = "生命吸取警报",
        drain_desc = "生命吸取警报",

        enrage_name = "激怒警报",
        enrage_desc = "激怒警报",

        mc_name = "精神控制警报",
        mc_desc = "哈卡使用精神控制时警报。",

        icon_name = "标记精神控制",
        icon_desc = "团队标记被精神控制者 (需要助力或更高权限)",
} end)

L:RegisterTranslations("zhTW", function() return {
        -- Hakkar 哈卡
        -- Chat message triggers
        engage_trigger = "^驕傲會將你送上絕路",
        drain_trigger = "^(.+)的血液虹吸使哈卡受到了(.+)點自然傷害。$",
        mindcontrol_trigger = "^(.+)受到(.*)導致瘋狂",
        
        you = "你",
        are = "了",
        
        flee = "逃跑",

        -- Warnings and bar texts
        start_message = "哈卡已經進入戰鬥 - 90秒後開始血液虹吸 - 10分鐘後進入狂怒狀態",
        drain_warning = "%d 秒後開始生命吸取",
        drain_message = "血液虹吸 - 90秒後再次發動",
        
        mindcontrol_message = "%s 被控制了,法師快羊",
        mindcontrol_bar = "MC: %s",
        
        ["Enrage"] = "狂怒",
        ["Life Drain"] = "血液虹吸",

        drain_name = "血液虹吸警報",
        drain_desc = "血液虹吸警報",

        enrage_name = "狂怒警報",
        enrage_desc = "狂怒警報",

        mc_name = "精神控制警報",
        mc_desc = "哈卡使用精神控制時警報。",

        icon_name = "標記被精神控制的隊友",
        icon_desc = "在被精神控制的隊友頭上設置標記 (需要助手或領隊權限)",
} end)

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

BigWigsHakkar = BigWigs:NewModule(boss)
BigWigsHakkar.zonename = AceLibrary("Babble-Zone-2.2")["Zul'Gurub"]
BigWigsHakkar.enabletrigger = boss
BigWigsHakkar.toggleoptions = { "drain", "enrage", -1, "mc", "icon", "bosskill" }
BigWigsHakkar.revision = tonumber(string.sub("$Revision: 17555 $", 12, -3))

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

function BigWigsHakkar:OnEnable()
        self.prior = nil
        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE")
        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE")
        self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
        self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")

        self:RegisterEvent("BigWigs_Message")
end

------------------------------
--      Event Handlers      --
------------------------------

function BigWigsHakkar:CHAT_MSG_MONSTER_YELL(msg)
        if string.find(msg, L["engage_trigger"]) then
                self:TriggerEvent("BigWigs_Message", L["start_message"], "Important")
                if self.db.profile.enrage then self:TriggerEvent("BigWigs_StartBar", self, L["Enrage"], 600, "Interface\\Icons\\Spell_Shadow_UnholyFrenzy") end
                self:BeginTimers(true)
        elseif string.find(msg, L["flee"]) then
                self:TriggerEvent("BigWigs_RebootModule", self)
        end
end

function BigWigsHakkar:CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE(msg)
        if not self.prior and string.find(msg, L["drain_trigger"]) then
                self.prior = true
                self:BeginTimers()
        end
end

function BigWigsHakkar:CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE(msg)
        local _,_, mcplayer, mctype = string.find(msg, L["mindcontrol_trigger"])
        if mcplayer then
                if mcplayer == L["you"] then
                        mcplayer = UnitName("player")
                end
                if self.db.profile.mc then
                        self:TriggerEvent("BigWigs_StartBar", self, string.format(L["mindcontrol_bar"], mcplayer), 9.5, "Interface\\Icons\\Spell_Shadow_ShadowWordDominate")
                        self:TriggerEvent("BigWigs_Message", string.format(L["mindcontrol_message"], mcplayer), "Urgent")
                end
                if self.db.profile.icon then
                        self:TriggerEvent("BigWigs_SetRaidIcon", mcplayer)
                end
        end
end

function BigWigsHakkar:BigWigs_Message(text)
        if text == string.format(L["drain_warning"], 60) then self.prior = nil end
end

function BigWigsHakkar:BeginTimers(first)
        if self.db.profile.drain then
                if not first then self:TriggerEvent("BigWigs_Message", L["drain_message"], "Attention") end
                self:ScheduleEvent("bwhakkarld60", "BigWigs_Message", 30, string.format(L["drain_warning"], 60), "Attention")
                self:ScheduleEvent("bwhakkarld45", "BigWigs_Message", 45, string.format(L["drain_warning"], 45), "Attention")
                self:ScheduleEvent("bwhakkarld30", "BigWigs_Message", 60, string.format(L["drain_warning"], 30), "Urgent")
                self:ScheduleEvent("bwhakkarld15", "BigWigs_Message", 75, string.format(L["drain_warning"], 15), "Important")
                self:TriggerEvent("BigWigs_StartBar", self, L["Life Drain"], 90, "Interface\\Icons\\Spell_Shadow_LifeDrain")
        end
end