vanilla-wow-addons – Rev 1
?pathlinks?
IMBA_SAPPHIRON_LIFEDRAIN_TIME = 22;
IMBA_SAPPHIRON_LIFEDRAIN_MSG = "is afflicted by Life Drain."
IMBA_SAPPHIRON_ICEBOMB_TIME = 7;
IMBA_SAPPHIRON_ICEBOMB_MSG = "Sapphiron begins to cast Frost Breath."
IMBA_SAPPHIRON_LANDING_MSG = "Icebolt fades from"
IMBA_SAPPHIRON_GROUND_TIME_INIT = 35;
IMBA_SAPPHIRON_GROUND_TIME = 70;
IMBA_SAPPHIRON_FLIGHT_TIME = 30;
function IMBA_Sapphiron_StartLifeDrainTimer()
IMBA_Sapphiron_TimerLifeDrain.timeLength=IMBA_SAPPHIRON_LIFEDRAIN_TIME;
IMBA_Sapphiron_TimerLifeDrain.timeEnd=GetTime()+IMBA_SAPPHIRON_LIFEDRAIN_TIME;
IMBA_Sapphiron_TimerLifeDrain.repeating=false;
IMBA_Sapphiron_TimerLifeDrain.active=true;
end
function IMBA_Sapphiron_StartIceBombTimer()
IMBA_Sapphiron_TimerIceBomb.timeLength=IMBA_SAPPHIRON_ICEBOMB_TIME;
IMBA_Sapphiron_TimerIceBomb.timeEnd=GetTime()+IMBA_SAPPHIRON_ICEBOMB_TIME;
IMBA_Sapphiron_TimerIceBomb.repeating=false;
IMBA_Sapphiron_TimerIceBomb.active=true;
end
function IMBA_Sapphiron_Null()
IMBA_RangeChecker_Active=false;
end
function IMBA_Sapphiron_StartFlightTimer()
IMBA_RangeChecker_Active=true;
IMBA_Sapphiron_TimerFlight:SetBarText("Time in Air");
IMBA_Sapphiron_TimerFlight.timeLength=IMBA_SAPPHIRON_FLIGHT_TIME;
IMBA_Sapphiron_TimerFlight.timeEnd=GetTime()+IMBA_SAPPHIRON_FLIGHT_TIME;
IMBA_Sapphiron_TimerFlight.repeating=false;
IMBA_Sapphiron_TimerFlight.active=true;
IMBA_Sapphiron_TimerFlight.callback=IMBA_Sapphiron_Null;
end
function IMBA_Sapphiron_StartGroundTimerInit()
IMBA_Sapphiron_TimerFlight:SetBarText("Time on Ground");
IMBA_Sapphiron_TimerFlight.timeLength=IMBA_SAPPHIRON_GROUND_TIME_INIT;
IMBA_Sapphiron_TimerFlight.timeEnd=GetTime()+IMBA_SAPPHIRON_GROUND_TIME_INIT;
IMBA_Sapphiron_TimerFlight.repeating=false;
IMBA_Sapphiron_TimerFlight.active=true;
IMBA_Sapphiron_TimerFlight.callback=IMBA_Sapphiron_StartFlightTimer;
end
function IMBA_Sapphiron_StartGroundTimer()
IMBA_Sapphiron_TimerFlight:SetBarText("Time on Ground");
IMBA_Sapphiron_TimerFlight.timeLength=IMBA_SAPPHIRON_GROUND_TIME;
IMBA_Sapphiron_TimerFlight.timeEnd=GetTime()+IMBA_SAPPHIRON_GROUND_TIME;
IMBA_Sapphiron_TimerFlight.repeating=false;
IMBA_Sapphiron_TimerFlight.active=true;
IMBA_Sapphiron_TimerFlight.oldcallback=IMBA_Sapphiron_TimerFlight.callback;
IMBA_Sapphiron_TimerFlight.callback=IMBA_Sapphiron_StartFlightTimer;
end
function IMBA_Sapphiron_Start()
IMBA_Sapphiron_Blocks=1;
IMBA_Minimap_ClearBossMarkers();
IMBA_Sapphiron_StartGroundTimerInit();
if IMBA_CheckVar("Sapphiron","ActivateRangeChecker") then
IMBA_RangeChecker:Show();
end
end
function IMBA_Sapphiron_RegenActivator()
IMBA_Sapphiron_Start();
IMBA_Sapphiron:Show();
end
function IMBA_Sapphiron_RegisterEvents()
this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE");
this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE");
this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");
this:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
this:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");
this:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_OTHER");
this:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
end
function IMBA_Sapphiron_UnregisterEvents()
this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE");
this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE");
this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");
this:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
this:UnregisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");
this:UnregisterEvent("CHAT_MSG_SPELL_AURA_GONE_OTHER");
this:UnregisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
end
function IMBA_Sapphiron_CheckBombAnnounce()
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb==nil then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb=false;
return false;
end
return IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb;
end
function IMBA_Sapphiron_ToggleBombAnnounce()
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb==nil then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb=true;
return;
end
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb=false
else
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb=true;
end
end
function IMBA_Sapphiron_CheckLifeDrainAnnounce()
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain==nil then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain=false;
return false;
end
return IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain;
end
function IMBA_Sapphiron_ToggleLifeDrainAnnounce()
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain==nil then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain=true;
return;
end
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain=false
else
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain=true;
end
end
function IMBA_Sapphiron_CheckAnnounceBlocks()
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks==nil then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks=false;
return false;
end
return IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks;
end
function IMBA_Sapphiron_ToggleAnnounceBlocks()
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks==nil then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks=true;
return;
end
if IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks then
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks=false
else
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks=true;
end
end
function IMBA_Sapphiron_OnLoad()
this:SetBackdropBorderColor(1, 1, 1, 1);
this:SetBackdropColor(0.0,0.0,0.0,0.6);
IMBA_Sapphiron_Title:SetText("Sapphiron Timers");
IMBA_Sapphiron_TimerLifeDrain:SetBarText("Life Drain");
IMBA_Sapphiron_TimerIceBomb:SetBarText("Ice Bomb");
IMBA_Sapphiron_TimerFlight:SetBarText("Time on Ground");
IMBA_Sapphiron_DrainLockout=0;
IMBA_Sapphiron_LandLockout=0;
local playerClass, englishClass = UnitClass("player");
if (englishClass=="DRUID") or (englishClass=="MAGE") then
IMBA_Sapphiron_Decurser=true;
else
IMBA_Sapphiron_Decurser=false;
end
IMBA_AddAddon("Sapphiron", "Timers for Life Drain, Ice Bomb, Flight Time, and marks Ice Blocks on the Minimap", IMBA_LOCATIONS_NAXX_LAIR, "IMBA_Sapphiron_RegenActivator", nil,nil,"IMBA_Sapphiron");
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb=false;
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain=false;
IMBA_SavedVariables.Mods["Sapphiron"].MarkBlocks=false;
IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks=false;
IMBA_AddOption("Sapphiron","Announce Bombs",IMBA_Sapphiron_ToggleBombAnnounce,IMBA_Sapphiron_CheckBombAnnounce)
IMBA_AddOption("Sapphiron","Announce Life Drains",IMBA_Sapphiron_ToggleLifeDrainAnnounce,IMBA_Sapphiron_CheckLifeDrainAnnounce)
IMBA_AddOption("Sapphiron","Announce Ice Blocks",IMBA_Sapphiron_ToggleAnnounceBlocks,IMBA_Sapphiron_CheckAnnounceBlocks)
IMBA_AddOption2("Sapphiron","ActivateRangeChecker","Activate Range Checker");
IMBA_Sapphiron_TimerFlight.oldcallback=IMBA_Sapphiron_TimerFlight.callback;
end
function IMBA_Sapphiron_OnEvent(event)
if ( event == "CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" ) then
if string.find(arg1,IMBA_SAPPHIRON_ICEBOMB_MSG) then
IMBA_RangeChecker_Active=false;
IMBA_AddRaidAlert("** Ice Bomb Incoming! **",true,IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBomb);
IMBA_Sapphiron_StartIceBombTimer();
end
elseif ( event == "CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE" or event == "CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE" ) then
if ( string.find(arg1,IMBA_SAPPHIRON_LIFEDRAIN_MSG) ) and ( IMBA_Sapphiron_DrainLockout < GetTime() ) then
IMBA_Sapphiron_DrainLockout=GetTime()+5;
if IMBA_Sapphiron_Decurser then
IMBA_AddAlert("** Decurse Life Drains **");
end
IMBA_AddRaidAlert("** Decurse Life Drains **",false,IMBA_SavedVariables.Mods["Sapphiron"].AnnounceLifeDrain);
IMBA_Sapphiron_StartLifeDrainTimer();
else
local iStart, iEnd, sPlayer, sType = string.find(arg1, "^([^%s]+) ([^%s]+) afflicted by Icebolt");
if ( sPlayer and sType ) then
IMBA_RangeChecker_Active=true;
if ( sPlayer == "You" and sType == "are" ) then
IMBA_Minimap_SetBossMarker();
IMBA_AddRaidAlert("** Ice Block "..IMBA_Sapphiron_Blocks.." ("..UnitName("player")..") **",true,IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks);
else
IMBA_AddRaidAlert("** Ice Block "..IMBA_Sapphiron_Blocks.." ("..sPlayer..") **",true,IMBA_SavedVariables.Mods["Sapphiron"].AnnounceBlocks);
end
IMBA_Sapphiron_Blocks=IMBA_Sapphiron_Blocks+1;
end
end
elseif ( event == "CHAT_MSG_SPELL_AURA_GONE_OTHER" or event == "CHAT_MSG_SPELL_AURA_GONE_SELF") then
if (string.find(arg1, IMBA_SAPPHIRON_LANDING_MSG) ) and ( IMBA_Sapphiron_LandLockout < GetTime() ) then
IMBA_RangeChecker_Active=false;
IMBA_Minimap_ClearBossMarkers();
IMBA_Sapphiron_Blocks=1;
IMBA_Sapphiron_LandLockout=GetTime()+5;
IMBA_Sapphiron_StartGroundTimer();
end
end
end
Generated by GNU Enscript 1.6.5.90.