vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
IMBA_Maexxna_Wrapped={};
IMBA_Maexxna_WrappedTexture = "Interface\\Icons\\Spell_Nature_Web";

IMBA_MAEXXNA_WEBWRAP_TIME       =       20
IMBA_MAEXXNA_SPIDERSPAWN_TIME   =       30
IMBA_MAEXXNA_WEBSPIN_TIME       =       40

IMBA_MAEXXNA_WEBWRAP_MSG = "^([^%s]+) ([^%s]+) afflicted by Web Wrap"
IMBA_MAEXXNA_WEBSRAY_MSG = "Maexxna ?'s Web Spray hits"
IMBA_MAEXXNA_ENRAGE = "Maexxna gains Enrage."

if (GetLocale()=="frFR") then
        --Translation by A.su.K.A
        IMBA_MAEXXNA_WEBWRAP_MSG = "^([^%s]+) ([^%s]+) les effets de Entoilage."
        IMBA_MAEXXNA_WEBSRAY_MSG = "les effets de Jet de rets"
        IMBA_MAEXXNA_ENRAGE = "Maexxna devient folle furieuse"
end

function IMBA_Maexxna_RegenActivator()
        IMBA_Maexxna_Wrapped={};
        IMBA_Maexxna_TimerWebWrap:StartTimer(IMBA_MAEXXNA_WEBWRAP_TIME,false,nil,6)
        IMBA_Maexxna_TimerSpiderSpawn:StartTimer(IMBA_MAEXXNA_SPIDERSPAWN_TIME,false,nil,6);
        IMBA_Maexxna_TimerSpiderSpawn:StartWarningTimer("** Spider Spawns in ~5 Seconds **",5,IMBA_CheckVar("Maexxna","AnnounceSpawns"),IMBA_CheckVar("Maexxna","AnnounceSpawns"));
        IMBA_Maexxna_TimerWebSpin:StartTimer(IMBA_MAEXXNA_WEBSPIN_TIME,false,nil,6);
        IMBA_Maexxna_TimerWebSpin:StartWarningTimer("** Web Spin in ~5 Seconds **",5,IMBA_CheckVar("Maexxna","AnnounceWebSpin"),IMBA_CheckVar("Maexxna","AnnounceWebSpin"));

        IMBA_Maexxna:Show();
end

function IMBA_Maexxna_RegisterEvents()
        this:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");
        this:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE");
        this:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE");
        this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");
        this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE");
        this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE");

        this:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF");
        this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS");
end

function IMBA_Maexxna_UnregisterEvents()
        this:UnregisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");
        this:UnregisterEvent("CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE");
        this:UnregisterEvent("CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE");
        this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");
        this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE");
        this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE");

        this:UnregisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF");
        this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS");
end

function IMBA_Maexxna_OnLoad()
        this:SetBackdropBorderColor(1, 1, 1, 1);
        this:SetBackdropColor(0.0,0.0,0.0,0.6);

        
        IMBA_Maexxna_Title:SetText("Maexxna Timers");

        IMBA_Maexxna_WebWrapped:SetText("Web Wrapped");
        IMBA_Maexxna_TimerWebWrap:SetBarText("Web Wrap in");
        IMBA_Maexxna_TimerSpiderSpawn:SetBarText("Spiders Spawn in");
        IMBA_Maexxna_TimerWebSpin:SetBarText("Web Spray in");




        IMBA_AddAddon("Maexxna", "Timers for Web Wrap, Spider Spawns, and Web Spray and Unit Bars for those Wrapped", IMBA_LOCATIONS_NAXX_SPIDER, "IMBA_Maexxna_RegenActivator", nil, nil,"IMBA_Maexxna");
        IMBA_AddOption2("Maexxna","AnnounceSpawns","Warn for Spider Spawns")
        IMBA_AddOption2("Maexxna","AnnounceWebSpin","Warn for Web Spray")
        IMBA_AddOption2("Maexxna","AnnounceEnrage","Announce Enrage")
        IMBA_AddOption2("Maexxna","AnnounceWebWraps","Announce who is Web Wrapped")
        IMBA_MaexxnaDelay=0;
        IMBA_MaexxnaWrapCheckTime=0;
end

function IMBA_Maexxna_AddWrapped(name)
        IMBA_MaexxnaWrapCheckTime=GetTime()+5;
        tinsert(IMBA_Maexxna_Wrapped,IMBA_FindPlayerUnitByName(name));
end

function IMBA_Maexxna_OnUpdate()
        local numEntries = getn(IMBA_Maexxna_Wrapped), Wrapped,Removed;

        for i=1,3,1 do
                if i<=numEntries then
                        getglobal("IMBA_Maexxna_WebWrap"..i).unit=IMBA_Maexxna_Wrapped[i];
                else
                        getglobal("IMBA_Maexxna_WebWrap"..i).unit=nil;
                end
        end

        if (numEntries>0) and (IMBA_MaexxnaWrapCheckTime<GetTime()) then
                IMBA_MaexxnaWrapCheckTime=GetTime()+0.5;
                Removed=0;
                for i=1,numEntries,1 do
                        Wrapped=false
                        for a=1,16 do
                                local t,c = UnitDebuff(IMBA_Maexxna_Wrapped[i-Removed],a);
                                if(t == nil) then break; end;
                                if(t == IMBA_Maexxna_WrappedTexture)
                                then
                                        Wrapped=true;
                                        break;
                                end
                        end
                        
                        if (Wrapped==false) then
                                tremove(IMBA_Maexxna_Wrapped,i-Removed);
                                Removed=Removed+1;
                        end             
                end
        end
end


function IMBA_Maexxna_OnEvent(event)
        if (event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE") or (event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE") or (event == "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE") or (event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE") or (event == "CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE") or (event == "CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE") then
                local iStart, iEnd, sPlayer, sType = string.find(arg1, IMBA_MAEXXNA_WEBWRAP_MSG);
                if ( sPlayer and sType ) then
                        if ( sPlayer == "You" and sType == "are" ) or ( sPlayer == "Vous" and sType == "subissez" ) then
                                IMBA_Maexxna_AddWrapped(UnitName("player"));
                                IMBA_AddRaidAlert("** "..UnitName("player").." is Web Wrapped **",IMBA_CheckVar("Maexxna","AnnounceWebWraps"),IMBA_CheckVar("Maexxna","AnnounceWebWraps"));
                        else
                                IMBA_Maexxna_AddWrapped(sPlayer);
                                IMBA_AddRaidAlert("** "..sPlayer.." is Web Wrapped **",IMBA_CheckVar("Maexxna","AnnounceWebWraps"),IMBA_CheckVar("Maexxna","AnnounceWebWraps"));
                        end
                end

                if string.find(arg1,IMBA_MAEXXNA_WEBSRAY_MSG) and GetTime()>IMBA_MaexxnaDelay then
                        IMBA_MaexxnaDelay=GetTime()+5.0;
                        IMBA_Maexxna_TimerWebWrap:StartTimer(IMBA_MAEXXNA_WEBWRAP_TIME)
                        IMBA_Maexxna_TimerSpiderSpawn:StartTimer(IMBA_MAEXXNA_SPIDERSPAWN_TIME);
                        IMBA_Maexxna_TimerSpiderSpawn:StartWarningTimer("** Spider Spawns in ~5 Seconds **",5,IMBA_CheckVar("Maexxna","AnnounceSpawns"),IMBA_CheckVar("Maexxna","AnnounceSpawns"));
                        IMBA_Maexxna_TimerWebSpin:StartTimer(IMBA_MAEXXNA_WEBSPIN_TIME);
                        IMBA_Maexxna_TimerWebSpin:StartWarningTimer("** Web Spray in ~5 Seconds **",5,IMBA_CheckVar("Maexxna","AnnounceWebSpin"),IMBA_CheckVar("Maexxna","AnnounceWebSpin"));
                        IMBA_Maexxna_Wrapped={};
                end
        elseif (event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF" ) or (event == "CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS") then
                if string.find(arg1,IMBA_MAEXXNA_ENRAGE) then
                        IMBA_AddRaidAlert("** Maexxna is Enraged **",IMBA_CheckVar("Maexxna","AnnounceEnrage"),IMBA_CheckVar("Maexxna","AnnounceEnrage"));
                end
        end
end

Generated by GNU Enscript 1.6.5.90.