vanilla-wow-addons – Rev 1

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

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

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

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

        supreme_cmd = "supreme",
        supreme_name = "Supreme Alert",
        supreme_desc = "Warn for Supreme Mode",

        debuff_cmd = "debuff",
        debuff_name = "Debuff Alert",
        debuff_desc = "Warn for Defuff",

        supremetrigger = "Ossirian the Unscarred gains Strength of Ossirian.",
        supremewarn = "Ossirian Supreme Mode!",
        supremedelaywarn = "Supreme in %d seconds!",
        debufftrigger = "^Ossirian the Unscarred is afflicted by (.+) Weakness%.$",
        debuffwarn = "Ossirian now weak to %s!",
        bartext = "Supreme",
        expose = "Expose",

        ["Shadow"] = true,
        ["Fire"] = true,
        ["Frost"] = true,
        ["Nature"] = true,
        ["Arcane"] = true,
} end )

L:RegisterTranslations("frFR", function() return {
        supreme_name = "Alerte Mode Supr\195\170me",
        supreme_desc = "Pr\195\169viens lorsque Ossirian passe en mode supr\195\170me.",

        debuff_name = "Sensibilit\195\169s",
        debuff_desc = "Pr\195\169viens lorsque Ossirian change de Sensibilit\195\169.",

        supremetrigger = "Ossirian l'Intouch\195\169 gagne Force d'Ossirian.",
        debufftrigger = "^Ossirian l'Intouch\195\169 subit les effets de (.+)%.$",

        supremewarn = "Ossirian est en mode Supr\195\170me !",
        debuffwarn = "%s pour 45 secondes !",
        supremedelaywarn = "Supr\195\170me dans %d secondes !",
        bartext = "Supr\195\170me",

        ["Shadow"] = "Sensibilit\195\169 \195\160 l'Ombre",
        ["Fire"] = "Sensibilit\195\169 au Feu",
        ["Frost"] = "Sensibilit\195\169 au Givre",
        ["Nature"] = "Sensibilit\195\169 \195\160 la Nature",
        ["Arcane"] = "Sensibilit\195\169 aux Arcanes",
} end )

L:RegisterTranslations("deDE", function() return {
        supreme_name = "St\195\164rke des Ossirian",
        supreme_desc = "Warnung vor St\195\164rke des Ossirian.",

        debuff_name = "Debuff",
        debuff_desc = "Warnung vor Debuff.",

        supremetrigger = "Ossirian der Narbenlose bekommt 'St\195\164rke des Ossirian'.",
        supremewarn = "St\195\164rke des Ossirian!",
        supremedelaywarn = "St\195\164rke des Ossirian in %d Sekunden!",
        debufftrigger = "Ossirian der Narbenlose ist von (.*)schw\195\164che betroffen%.$",
        debuffwarn = "Ossirian f\195\188r 45 Sekunden anf\195\164llig gegen: %s",
        bartext = "St\195\164rke des Ossirian",
        expose = "Schw\195\164che",

        ["Shadow"] = "Schatten",
        ["Fire"] = "Feuer",
        ["Frost"] = "Frost",
        ["Nature"] = "Natur",
        ["Arcane"] = "Arkan",
} end )

L:RegisterTranslations("zhCN", function() return {
        supreme_name = "无敌警报",
        supreme_desc = "奥斯里安进入无敌状态时发出警报",

        debuff_name = "虚弱警报",
        debuff_desc = "奥斯里安受到虚弱效果影响时发出警报",

        supremetrigger = "无疤者奥斯里安获得了奥斯里安之力的效果。",
        supremewarn = "无疤者奥斯里安无敌了!速退!",
        supremedelaywarn = "%d秒后奥斯里安无敌",
        debufftrigger = "^无疤者奥斯里安受到了(.+)虚弱效果的影响。",
        debuffwarn = "奥斯里安新法术弱点: %s",
        bartext = "无敌",
        expose = "我……败……了。",

        ["Shadow"] = "暗影",
        ["Fire"] = "火焰",
        ["Frost"] = "冰霜",
        ["Nature"] = "自然",
        ["Arcane"] = "奥术",
} end )

L:RegisterTranslations("zhTW", function() return {
        -- Ossirian the Unscarred 無疤者奧斯里安
        supreme_name = "無敵警報",
        supreme_desc = "無疤者奧斯里安進入無敵狀態時發出警報",

        debuff_name = "虛弱警報",
        debuff_desc = "無疤者奧斯里安受到虛弱效果影響時發出警報",

        supremetrigger = "無疤者奧斯里安獲得了奧斯里安之力的效果。",
        supremewarn = "已經進入了無敵模式!",
        supremedelaywarn = "%d 秒後無敵!",
        debufftrigger = "^無疤者奧斯里安受到(.+)虛弱的傷害",
        debuffwarn = "抗性虛弱 45 秒 : %s - DPS全開!",
        bartext = "無敵",
        expose = "我...已...失敗。",

        ["Shadow"] = "陰影",
        ["Fire"] = "火焰",
        ["Frost"] = "冰霜",
        ["Nature"] = "自然",
        ["Arcane"] = "祕法",
} end )

L:RegisterTranslations("koKR", function() return {
        supreme_name = "무적 경고",
        supreme_desc = "무적 모드에 대한 경고",

        debuff_name = "약화마법 경고",
        debuff_desc = "약화마법에 대한 경고",

        supremetrigger = "무적의 오시리안|1이;가; 오시리안의 힘 효과를 얻었습니다.",
        supremewarn = "오시리안 무적 상태!",
        supremedelaywarn = "%d초후 무적 상태 돌입!",
        debufftrigger = "무적의 오시리안|1이;가; (.+) 약점에 걸렸습니다.",
        debuffwarn = "오시리안이 %s 계열 마법에 약해졌습니다.",
        bartext = "무적 상태",
        expose = "노출",      -- CHECK

        ["Shadow"] = "암흑",
        ["Fire"] = "화염",
        ["Frost"] = "냉기",
        ["Nature"] = "자연",
        ["Arcane"] = "비전",
} end )


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

BigWigsOssirian = BigWigs:NewModule(boss)
BigWigsOssirian.zonename = AceLibrary("Babble-Zone-2.2")["Ruins of Ahn'Qiraj"]
BigWigsOssirian.enabletrigger = boss
BigWigsOssirian.toggleoptions = {"supreme", "debuff", "bosskill"}
BigWigsOssirian.revision = tonumber(string.sub("$Revision: 16639 $", 12, -3))

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

function BigWigsOssirian:OnEnable()
        self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")
        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS")
        self:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE")
        self:RegisterEvent("BigWigs_RecvSync")
        self:TriggerEvent("BigWigs_ThrottleSync", "OssirianWeakness", 10)
end

function BigWigsOssirian:CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS( msg )
        if self.db.profile.supreme and arg1 == L["supremetrigger"] then
                self:TriggerEvent("BigWigs_Message", L["supremewarn"], "Attention")
        end
end

function BigWigsOssirian:CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE( msg )
        local _, _, debuffName = string.find(msg, L["debufftrigger"])
        if debuffName and debuffName ~= L["expose"] and L:HasReverseTranslation(debuffName) then
                self:TriggerEvent("BigWigs_SendSync", "OssirianWeakness "..L:GetReverseTranslation(debuffName))
        end
end

function BigWigsOssirian:BigWigs_RecvSync(sync, debuffKey)
        if sync ~= "OssirianWeakness" or not debuffKey or not L:HasTranslation(debuffKey) then return end

        if self.db.profile.debuff then
                self:TriggerEvent("BigWigs_Message", string.format(L["debuffwarn"], L[debuffKey]), "Important")
        end

        self:CancelScheduledEvent("bwossiriansupreme1")
        self:CancelScheduledEvent("bwossiriansupreme2")
        self:CancelScheduledEvent("bwossiriansupreme3")
        self:TriggerEvent("BigWigs_StopBar", self, L["bartext"])

        if self.db.profile.supreme then
                self:ScheduleEvent("bwossiriansupreme1", "BigWigs_Message", 30, string.format(L["supremedelaywarn"], 15), "Attention")
                self:ScheduleEvent("bwossiriansupreme2", "BigWigs_Message", 35, string.format(L["supremedelaywarn"], 10), "Urgent")
                self:ScheduleEvent("bwossiriansupreme3", "BigWigs_Message", 40, string.format(L["supremedelaywarn"], 5), "Important")
                self:TriggerEvent("BigWigs_StartBar", self, L["bartext"], 45, "Interface\\Icons\\Spell_Shadow_CurseOfTounges")
        end
end