vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
------------------------------
--      Are you local?      --
------------------------------
local boss = AceLibrary("Babble-Boss-2.2")["Nefarian"]
local victor = AceLibrary("Babble-Boss-2.2")["Lord Victor Nefarius"]
local L = AceLibrary("AceLocale-2.2"):new("BigWigs"..boss)

local warnpairs = nil

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

L:RegisterTranslations("enUS", function() return {
        landing_soon_trigger = "Well done, my minions",
        landing_trigger = "BURN! You wretches",
        zerg_trigger = "Impossible! Rise my",
        fear_trigger = "Nefarian begins to cast Bellowing Roar",
        shadowflame_trigger = "Nefarian begins to cast Shadow Flame",

        triggershamans  = "Shamans, show me",
        triggerdruid    = "Druids and your silly",
        triggerwarlock  = "Warlocks, you shouldn't be playing",
        triggerpriest   = "Priests! If you're going to keep",
        triggerhunter   = "Hunters and your annoying",
        triggerwarrior  = "Warriors, I know you can hit harder",
        triggerrogue    = "Rogues%? Stop hiding",
        triggerpaladin  = "Paladins",
        triggermage             = "Mages too%?",

        landing_soon_warning = "Nefarian landing in 10 seconds!",
        landing_warning = "Nefarian is landing!",
        zerg_warning = "Zerg incoming!",
        fear_warning = "Fear in 2 sec!",
        fear_soon_warning = "Possible fear in ~5 sec",
        shadowflame_warning = "Shadow Flame incoming!",
        classcall_warning = "Class call incoming!",

        warnshaman      = "Shamans - Totems spawned!",
        warndruid       = "Druids - Stuck in cat form!",
        warnwarlock     = "Warlocks - Incoming Infernals!",
        warnpriest      = "Priests - Heals hurt!",
        warnhunter      = "Hunters - Bows/Guns broken!",
        warnwarrior     = "Warriors - Stuck in berserking stance!",
        warnrogue       = "Rogues - Ported and rooted!",
        warnpaladin     = "Paladins - Blessing of Protection!",
        warnmage        = "Mages - Incoming polymorphs!",

        classcall_bar = "Class call",
        fear_bar = "Possible fear",

        cmd = "Nefarian",

        shadowflame_cmd = "shadowflame",
        shadowflame_name = "Shadow Flame alert",
        shadowflame_desc = "Warn for Shadow Flame",

        fear_cmd = "fear",
        fear_name = "Warn for Fear",
        fear_desc = "Warn when Nefarian casts AoE Fear",

        classcall_cmd = "classcall",
        classcall_name = "Class Call alert",
        classcall_desc = "Warn for Class Calls",

        otherwarn_cmd = "otherwarn",
        otherwarn_name = "Other alerts",
        otherwarn_desc = "Landing and Zerg warnings",
} end)

L:RegisterTranslations("zhCN", function() return {
        landing_soon_trigger = "干得好,我的手下。",
        landing_trigger = "燃烧吧!你这个",
        zerg_trigger = "^不可能",
        fear_trigger = "奈法利安开始施放低沉咆哮。",
        shadowflame_trigger = "奈法利安开始施放暗影烈焰。",

        triggershamans  = "^萨满祭司",
        triggerdruid    = "^德鲁伊",
        triggerwarlock  = "^术士",
        triggerpriest   = "^牧师",
        triggerhunter   = "^猎人",
        triggerwarrior  = "^战士",
        triggerrogue    = "^盗贼",
        triggerpaladin  = "^圣骑士",
        triggermage     = "^你们也是法师",

        landing_soon_warning = "奈法利安将在10秒后降落!",
        landing_warning = "奈法利安已降落!",
        zerg_warning = "骨龙群出现!",
        fear_warning = "2秒后发动群体恐惧!",
        fear_soon_warning = "~5秒后可能发动群体恐惧",
        shadowflame_warning = "暗影烈焰发动!",
        classcall_warning = "5秒后开始点名!",

        warnshaman      = "萨满祭司 - 图腾涌现!",
        warndruid       = "德鲁伊 - 强制猫形态,无法治疗和解诅咒!",
        warnwarlock     = "术士 - 地狱火出现,DPS职业尽快将其消灭!",
        warnpriest      = "牧师 - 停止治疗,静等25秒!",
        warnhunter      = "猎人 - 远程武器损坏!",
        warnwarrior     = "战士 - 强制狂暴姿态,加大对MT的治疗量!",
        warnrogue       = "盗贼 - 被传送和麻痹!",
        warnpaladin     = "圣骑士 - BOSS受到保护祝福,物理攻击无效!",
        warnmage        = "法师 - 变形术发动,注意解除!",

        classcall_bar = "职业点名",
        fear_bar = "可能恐惧",
        
        shadowflame_name = "暗影烈焰警报",
        shadowflame_desc = "暗影烈焰警报",
        
        fear_name = "恐惧警报",
        fear_desc = "恐惧警报",
        
        classcall_name = "职业点名警报",
        classcall_desc = "职业点名警报",
        
        otherwarn_name = "其他警报",
        otherwarn_desc = "降落与杂兵出现时发出警报",
} end)

L:RegisterTranslations("zhTW", function() return {
        -- Nefarian 奈法利安
        landing_soon_trigger = "幹得好,我的手下。",
        landing_trigger = "燃燒吧!你這個",
        zerg_trigger = "^不可能",
        fear_trigger = "奈法利安開始施放低沉咆哮。",
        shadowflame_trigger = "奈法利安開始施放暗影烈焰。",

        triggershamans  = "^薩滿,讓我看看",
        triggerdruid    = "^德魯伊和你們愚蠢的變形。讓我們看看什麼會發生吧!",
        triggerwarlock  = "^術士,不要隨便去玩那些你不理解的法術。看看會發生什麼吧?",
        triggerpriest   = "^牧師!如果你要繼續這麼治療的話,那我們來玩點有趣的東西!",
        triggerhunter   = "^獵人和你那討厭的豌豆射擊!",
        triggerwarrior  = "^戰士,我知道你應該比較抗打!讓我們來見識一下吧!",
        triggerrogue    = "^盜賊?不要躲了,面對我吧!",
        triggerpaladin  = "^聖騎士……聽說你有無數條命。讓我看看到底是怎麼樣的吧。",
        triggermage     = "^還有法師?你應該小心使用你的魔法……",

        landing_soon_warning    = "10秒後降落!",
        landing_warning         = "奈法利安已降落!",
        zerg_warning            = "龍獸出現!",
        fear_warning            = "群體恐懼 - 2 秒後發動",
        fear_soon_warning       = "群體恐懼 - 5 秒後發動",
        shadowflame_warning     = "暗影烈焰發動!",
        classcall_warning       = "5 秒後開始點名!",

        warnshaman      = "薩滿 - 圖騰湧現",
        warndruid       = "德魯伊 - 強制貓形態,無法治療和解詛咒",
        warnwarlock     = "術士 - 地獄火出現,DPS職業盡快將其消滅",
        warnpriest      = "牧師 - 停止治療,靜等 25 秒",
        warnhunter      = "獵人 - 遠程武器損壞",
        warnwarrior     = "戰士 - 強制狂暴姿態,加大對MT的治療量",
        warnrogue       = "盜賊 - 被傳送和麻痺",
        warnpaladin     = "聖騎士 - BOSS受到保護祝福,物理攻擊無效",
        warnmage        = "法師 - 變形術發動,注意解除",

        classcall_bar = "職業點名",
        fear_bar = "可能恐懼",
        
        shadowflame_name = "暗影烈焰警報",
        shadowflame_desc = "當奈法利安施放暗影烈焰時發出警報",
        
        fear_name = "恐懼警報",
        fear_desc = "當奈法利安施放群體恐懼時發出警報",
        
        classcall_name = "職業點名警報",
        classcall_desc = "當奈法利安進行職業點名時發出警報",
        
        otherwarn_name = "其他警報",
        otherwarn_desc = "降落及龍獸出現時發出警報",
} end)

L:RegisterTranslations("koKR", function() return {
        landing_soon_trigger = "적들의 사기가 떨어지고 있다",
        landing_trigger = "불타라! 활활!",
        zerg_trigger = "말도 안 돼! 일어나라!",
        fear_trigger = "네파리안|1이;가; 우레와같은 울부짖음|1을;를; 시전합니다.",
        shadowflame_trigger = "네파리안|1이;가; 암흑의 불길|1을;를; 시전합니다.",
        triggershamans  = "주술사",
        triggerdruid    = "드루이드 녀석, 그 바보",
        triggerwarlock  = "흑마법사여, 네가 이해하지도 못하는",
        triggerpriest   = "사제야, 그렇게 치유를",
        triggerhunter   = "그 장난감",
        triggerwarrior  = "전사들이로군, 네가 그보다 더 강하게 내려 칠 수",
        triggerrogue    = "도적들인가?",
        triggerpaladin  = "성기사여",
        triggermage             = "네가 마법사냐?",

        landing_soon_warning = "네파리안이 10초 후 착지합니다!",
        landing_warning = "네파리안이 착지했습니다!",
        zerg_warning = "해골 등장!",
        fear_warning = "2초 후 공포!",
        fear_soon_warning = "약 5초내 공포!",
        shadowflame_warning = "암흑의 불길 주의!",
        classcall_warning = "곧 직업이 지목됩니다!",
        warnshaman      = "주술사 - 토템 파괴!",
        warndruid       = "드루이드 - 강제 표범 변신!",
        warnwarlock     = "흑마법사 - 지옥불정령 등장!",
        warnpriest      = "사제 - 치유 주문 금지!",
        warnhunter      = "사냥꾼 - 원거리 무기 파손!",
        warnwarrior     = "전사 - 광태 강제 전환!",
        warnrogue       = "도적 - 강제 소환!",
        warnpaladin     = "성기사 - 강제 보축 사용!",
        warnmage        = "마법사 - 변이!",

        classcall_bar = "직업 지목",
        fear_bar = "공포 가능",
        
        shadowflame_name = "암흑의 불길 경고",
        shadowflame_desc = "암흑의 불길에 대한 경고",
        
        fear_name = "공포 경고",
        fear_desc = "네파리안이 공포 시전시 경고",
        
        classcall_name = "직업 지목 경고",
        classcall_desc = "직업 지목에 대한 경고",
        
        otherwarn_name = "기타 경고",
        otherwarn_desc = "착지와 소환에 대한 경고",
} end)

L:RegisterTranslations("deDE", function() return {
        landing_soon_trigger = "Sehr gut, meine Diener",
        landing_trigger = "BRENNT! Ihr Elenden!",
        zerg_trigger = "Unm\195\182glich! Erhebt euch",
        fear_trigger = "Nefarian beginnt Dr\195\182hnendes Gebr\195\188ll zu wirken.",
        shadowflame_trigger = "Nefarian beginnt Schattenflamme zu wirken.",
        triggershamans  = "Schamane, zeigt mir was",
        triggerdruid    = "Druiden und ihre l\195\164cherliche",
        triggerwarlock  = "Hexenmeister, Ihr solltet nicht mit Magie",
        triggerpriest   = "Priester! Wenn Ihr weiterhin",
        triggerhunter   = "J\195\164ger und ihre l\195\164stigen",
        triggerwarrior  = "Krieger, Ich bin mir sicher",
        triggerrogue    = "Schurken%? Kommt aus den Schatten",
        triggerpaladin  = "Paladine",
        triggermage             = "Auch Magier%? Ihr solltet vorsichtiger",

        landing_soon_warning = "Nefarian landet in 10 Sekunden!",
        landing_warning = "Nefarian ist gelandet!",
        zerg_warning = "Diener herbeigerufen!",
        fear_warning = "AoE Furcht in 2 Sekunden!",
        shadowflame_warning = "Schattenflamme in K\195\188rze!",
        classcall_warning = "Klassenruf in K\195\188rze!",
        warnshaman      = "Schamanen - Totems!",
        warndruid       = "Druiden - Gefangen in Katzenform!",
        warnwarlock     = "Hexenmeister - H\195\182llenbestien herbeigerufen!",
        warnpriest      = "Priester - Heilung schadet!",
        warnhunter      = "J\195\164ger - Angelegte Fernkampfwaffen defekt!",
        warnwarrior     = "Krieger - Gefangen in Berserkerhaltung!",
        warnrogue       = "Schurken - Teleportiert und festgewurzelt!",
        warnpaladin     = "Paladine - Segen des Schutzes!",
        warnmage        = "Magier - Verwandlung!",

        classcall_bar = "Klassenruf",

        shadowflame_name = "Schattenflamme",
        shadowflame_desc = "Warnung, wenn Nefarian Schattenflamme wirkt.",
        
        fear_name = "Furcht",
        fear_desc = "Warnung, wenn Nefarian AoE Furcht wirkt.",
        
        classcall_name = "Klassenruf",
        classcall_desc = "Warnung vor Klassenrufen.",
        
        otherwarn_name = "Anderes",
        otherwarn_desc = "Warnung, wenn Nefarian landet und seine Diener ruft.",
} end)

L:RegisterTranslations("frFR", function() return {
        landing_soon_trigger = "Beau travail",
        landing_trigger = "BR\195\155LEZ, mis\195\169rables",
        zerg_trigger = "C'est impossible ! Relevez%-vous, serviteurs !",
        fear_trigger = "Nefarian commence \195\160 lancer Rugissement puissant",
        shadowflame_trigger = "Nefarian commence \195\160 lancer Flamme d'ombre.",
        triggershamans  = "Chamans, montrez moi",
        triggerdruid    = "Les druides et leur stupides",
        triggerwarlock  = "D\195\169monistes, vous ne devriez pas jouer",
        triggerpriest   = "Pr\195\170tres ! Si vous continuez",
        triggerhunter   = "Ah, les chasseurs et les stupides",
        triggerwarrior  = "Guerriers, je sais que vous pouvez frapper plus fort",
        triggerrogue    = "Voleurs, arr\195\170tez de vous cacher",
        triggerpaladin  = "Les paladins",
        triggermage             = "Les mages aussi",
        
        landing_soon_warning = "Nefarian atterit dans 10 sec. !",
        landing_warning = "Nefarian atterit !",
        zerg_warning = "Zergs imminent !",
        fear_warning = "Peur dans 2 sec. !",
        shadowflame_warning = "Flamme d'ombre imminente !",
        classcall_warning = "D\195\169but de l'appel des classes !",
        warnshaman      = "Chamans - Totems pos\195\169s !",
        warndruid       = "Druides - Coinc\195\169s en forme f\195\169line !",
        warnwarlock     = "D\195\169monistes - Infernaux en approche !",
        warnpriest      = "Pr\195\170tre - Stoppez les soins !",
        warnhunter      = "Chasseurs - Arcs/Fusils cass\195\169s !",
        warnwarrior     = "Guerriers - Coinc\195\169s en posture berseker !",
        warnrogue       = "Voleurs - T\195\169l\195\169port\195\169s et clou\195\169s au sol !",
        warnpaladin     = "Paladins - B\195\169n\195\169diction de protection !",
        warnmage        = "Mages - M\195\169tamorphoses imminentes !",
        
        classcall_bar = "Appel des classes",
        fear_bar = "Peur probable",

        shadowflame_name = "Alerte Flamme d'ombre",
        shadowflame_desc = "Pr\195\169viens quand Nefarian utilise sa Flamme d'ombre.",
        
        fear_name = "Alerte Peur",
        fear_desc = "Pr\195\169viens quand Nefarian incante sa peur de zone.",
        
        classcall_name = "Alertes Appel de classe",
        classcall_desc = "Signale les classes cibl\195\169s par l'appel de classe.",
        
        otherwarn_name = "Autres alertes",
        otherwarn_desc = "Pr\195\169viens quand les Zergs arrivent et quand Nefarian atterit.", 
} end)

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

BigWigsNefarian = BigWigs:NewModule(boss)
BigWigsNefarian.zonename = AceLibrary("Babble-Zone-2.2")["Blackwing Lair"]
BigWigsNefarian.enabletrigger = { boss, victor }
BigWigsNefarian.toggleoptions = {"shadowflame", "fear", "classcall", "otherwarn", "bosskill"}
BigWigsNefarian.revision = tonumber(string.sub("$Revision: 16639 $", 12, -3))

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

function BigWigsNefarian:OnEnable()
        self:RegisterEvent("CHAT_MSG_MONSTER_YELL")
        self:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE")
        self:RegisterEvent("CHAT_MSG_COMBAT_HOSTILE_DEATH", "GenericBossDeath")

        self:RegisterEvent("BigWigs_RecvSync")
        self:TriggerEvent("BigWigs_ThrottleSync", "NefarianShadowflame", 10)
        self:TriggerEvent("BigWigs_ThrottleSync", "NefarianFear", 10)
        
        if not warnpairs then warnpairs = {
                [L["triggershamans"]] = {L["warnshaman"], true},
                [L["triggerdruid"]] = {L["warndruid"], true},
                [L["triggerwarlock"]] = {L["warnwarlock"], true},
                [L["triggerpriest"]] = {L["warnpriest"], true},
                [L["triggerhunter"]] = {L["warnhunter"], true},
                [L["triggerwarrior"]] = {L["warnwarrior"], true},
                [L["triggerrogue"]] = {L["warnrogue"], true},
                [L["triggerpaladin"]] = {L["warnpaladin"], true},
                [L["triggermage"]] = {L["warnmage"], true},
                [L["landing_soon_trigger"]] = {L["landing_soon_warning"]},
                [L["landing_trigger"]] = {L["landing_warning"]},
                [L["zerg_trigger"]] = {L["zerg_warning"]},
        } end
end

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

function BigWigsNefarian:CHAT_MSG_MONSTER_YELL(msg)
        for i,v in pairs(warnpairs) do
                if string.find(msg, i) then
                        if v[2] then
                                if self.db.profile.classcall then
                                        self:TriggerEvent("BigWigs_Message", v[1], "Important")
                                        self:ScheduleEvent("BigWigs_Message", 27, L["classcall_warning"], "Important")
                                        self:TriggerEvent("BigWigs_StartBar", self, L["classcall_bar"], 30, "Interface\\Icons\\Spell_Shadow_Charm")
                                end
                        else
                                if self.db.profile.otherwarn then self:TriggerEvent("BigWigs_Message", v[1], "Important") end
                        end
                        return
                end
        end
end

function BigWigsNefarian:CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE(msg)
        if string.find(msg, L["fear_trigger"]) then
                self:TriggerEvent("BigWigs_SendSync", "NefarianFear")
        elseif string.find(msg, L["shadowflame_trigger"]) then
                self:TriggerEvent("BigWigs_SendSync", "NefarianShadowflame")
        end
end

function BigWigsNefarian:BigWigs_RecvSync( sync )
        if sync == "NefarianShadowflame" and self.db.profile.shadowflame then
                self:TriggerEvent("BigWigs_Message", L["shadowflame_warning"], "Important")
        elseif sync == "NefarianFear" and self.db.profile.fear then
                self:CancelScheduledEvent("bwneffearsoon")
                self:TriggerEvent("BigWigs_Message", L["fear_warning"], "Important")
                self:ScheduleEvent("bwneffearsoon", "BigWigs_Message", 26, L["fear_soon_warning"], "Important")
                self:TriggerEvent("BigWigs_StartBar", self, L["fear_bar"], 32, "Interface\\Icons\\Spell_Shadow_PsychicScream")
        end
end