WoWInterface SVN RaidWatch2

[/] [trunk/] [RaidWatch_PartyWOTLK/] [GeneralBoss.lua] - Rev 22

Compare with Previous | Blame | View Log

local loadZone = {"Ahn'kahet: The Old Kingdom",
        "Azjol-Nerub",
        "The Culling of Stratholme",
        "Drak'Tharon Keep",
        "Gundrak",
        "Halls of Lightning",
        "Halls of Stone",
        "The Nexus",
        "The Oculus",
        "Utgarde Keep",
        "Utgarde Pinnacle",
        "The Violet Hold",
        "Trial of the Champion",
        "Blackrock Depths",
        "Scarlet Monastery",
        "Pit of Saron",
        "The Forge of Souls",
        "Halls of Reflection"
}

local mod = RW:Boss("PartyBoss", loadZone, "Party - WOTLK")
local L
mod.type = "party"

---------------------------
-- Variables
local mEngaged
local tGeneralCast
local mGeneralCast
local mGeneralDebuff
local mGeneralEmote

---------------------------
-- Init

function mod:OnRegister()
        L = mod:RegisterLocale(self:GetName(), "enUS", true)
        if L then
                L.name = "PartyBoss"
                
                L.engage_msg = "Engaged %s!"
                L.engage_opt = "Engage boss message"
                L.engage_grp = "Boss Stuff"
                
                L.general_cast = "Casting: %s"
                L.general_cast_opt = "Cast timer"
                L.general_group = "General warnings"
                
                L.general_castmsg_opt = "Cast message"
                
                L.general_debuff = "%s: >%s<"
                L.general_debuff_opt = "Debuff message"
                
                L.general_emote = "<%s>: %s"
                L.general_emote_opt = "Emote messages"
        end
        L = mod:GetLocale()
        self.L = L
        
        self:SetTrigger(29309,29308,29310,29311,30258,28684,28921,29120,33373,33403,33379,33361,33372,33225,
        33592,33312,33593,33335,35119,35451,26630,27483,26632,29304,29307,29305,29306,29932,26529,26530,26532,
        26533,32273,26763,26794,26723,26796,26798,27654,27447,29315,29316,29313,29266,29312,29314,31134,28586,
        28587,28546,28923,27975,27977,27978,24200,23954,26668,26687,26693,26861)
        
        self:SetWin("combat")
        
        
        mEngaged                = self:CustomMessage(L.engage_msg, L.engage_opt, nil, L.engage_grp)
        
        tGeneralCast    = self:CustomTimer(5, L.general_cast, L.general_cast_opt, nil, L.general_group)
        
        mGeneralCast    = self:CustomMessage(L.general_cast, L.general_castmsg_opt, nil, L.general_group)
        mGeneralDebuff  = self:CustomMessage(L.general_debuff, L.general_debuff_opt, nil, L.general_group)
        mGeneralEmote   = self:CustomMessage(L.general_emote, L.general_emote_opt, nil, L.general_group)
end

---------------------------
-- Locals
local debuffTarget = {}

---------------------------
-- Start

function mod:OnEngage(trigger)
        --[[ self:Track("SPELL_CAST_START", 47843, 47610)
        self:Track("SPELL_AURA_APPLIED", 47864, 59164)
        
        self:YellTrack("CHAT_MSG_MONSTER_YELL", "Random 1")
        self:YellTrack("CHAT_MSG_MONSTER_EMOTE", "Random 2")

        wipe(debuffTarget)
        
        if type(triger) == "number" then
                local uID = self:UIDFromCID(trigger)
                if uID then
                        mEngaged:Show(UnitName(uID))
                else
                        mEngaged:Show("Some boss")
                end
        end ]]--
end

--[[ function mod:SPELL_CAST_START(event, args)
        if args:IsHostile() then
                local name, rank, icon, cost, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo(args.spellID)
                if castTime > 0 then
                        local spellHaste = select(7, GetSpellInfo(53142)) / 10000
                        castTime = castTime / spellHaste / 1000
                end
                tGeneralCast:SetIcon(icon)
                tGeneralCast:Start(castTime > 0 and castTime or nil, name)
                
                mGeneralCast:SetIcon(icon)
                mGeneralCast:Show(name)
        end
end

do
        local messages = {}
        local icons = {}
        local function showDebuff()
                wipe(messages)
                wipe(icons)
                
                for player, spell in pairs(debuffTarget) do
                        local name, rank, icon, cost, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo(spell)
                        messages[name] = ((messages[name] and messages[name]..",")   or "") ..">"..player.."<"
                        icons[name] = icon
                end
                
                for spellMessage, text in pairs(messages) do
                        mGeneralDebuff:SetIcon(icons[spellMessage])
                        mGeneralDebuff:Show(spellMessage, text)
                end
                
                wipe(debuffTarget)
        end

        function mod:SPELL_AURA_APPLIED(event, args)
                if args:IsHostile() then
                        debuffTarget[args.dName] = args.spellID
                        self:Schedule("ShowDebuff", 0.3, showDebuff)
                end
        end
        mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
end

function mod:CHAT_MSG_MONSTER_YELL(event, msg, name)
        mGeneralEmote:Show(name, msg)
end
mod.CHAT_MSG_MONSTER_EMOTE = mod.CHAT_MSG_MONSTER_YELL
mod.CHAT_MSG_MONSTER_SAY = mod.CHAT_MSG_MONSTER_YELL
mod.CHAT_MSG_MONSTER_EMOTE = mod.CHAT_MSG_MONSTER_YELL ]]--

Compare with Previous | Blame