IMBA_KelThuzadInterrupt_Players={}; function IMBA_KelThuzadInterrupt_CastFrostbolt() IMBA_KelThuzadInterrupt_TimerFrostbolt:SetBarText("Frostbolt Casting in"); IMBA_KelThuzadInterrupt_TimerFrostbolt.timeLength=2; IMBA_KelThuzadInterrupt_TimerFrostbolt.timeEnd=GetTime()+2; IMBA_KelThuzadInterrupt_TimerFrostbolt.repeating=false; IMBA_KelThuzadInterrupt_TimerFrostbolt.active=true; end function IMBA_KelThuzadInterrupt_AddPlayer(name) tinsert(IMBA_KelThuzadInterrupt_Players,{name,GetTime(),"Kick",IMBA_FindPlayerUnitByName(name)}); end function IMBA_KelThuzadInterrupt_PlayerKicks(name) for k,v in IMBA_KelThuzadInterrupt_Players do if v[1]==name then v[2]=GetTime()+10; v[3]=10; v[4]="Kick"; return; end end tinsert(IMBA_KelThuzadInterrupt_Players,{name,GetTime()+10,10,"Kick",IMBA_FindPlayerUnitByName(name)}); end function IMBA_KelThuzadInterrupt_PlayerPummels(name) for k,v in IMBA_KelThuzadInterrupt_Players do if v[1]==name then v[2]=GetTime()+10; v[3]=10; v[4]="Pummel"; return; end end tinsert(IMBA_KelThuzadInterrupt_Players,{name,GetTime()+10,10,"Pummel",IMBA_FindPlayerUnitByName(name)}); end function IMBA_KelThuzadInterrupt_PlayerShieldBashes(name) for k,v in IMBA_KelThuzadInterrupt_Players do if v[1]==name then v[2]=GetTime()+12; v[3]=12; v[4]="Shield Bash"; return; end end tinsert(IMBA_KelThuzadInterrupt_Players,{name,GetTime()+12,12,"Shield Bash",IMBA_FindPlayerUnitByName(name)}); end function IMBA_KelThuzadInterrupt_Sort(v1,v2) if v1[2]==v2[2] then return v1[1]8 then numEntries=8; end IMBA_KelThuzadInterrupt:SetHeight(numEntries*20+70); end function IMBA_KelThuzadInterrupt_PlayerInList(player) for k,v in IMBA_KelThuzadInterrupt_Players do if v[1]==player then return true; end end return false; end function IMBA_KelThuzadInterrupt_UpdateList() IMBA_KelThuzadInterrupt_Players={}; for i = 1, GetNumRaidMembers() do if UnitExists("raid"..i) and (IMBA_KelThuzadInterrupt_PlayerInList(UnitName("raid"..i))==false) then local playerClass, englishClass = UnitClass("raid"..i); if englishClass=="WARRIOR" and (IMBA_CheckVar("Kel'Thuzad - Interrupt Assister","TrackWarriors")==false) then tinsert(IMBA_KelThuzadInterrupt_Players,{UnitName("raid"..i),GetTime(),12,"Shield Bash","raid"..i}); elseif englishClass=="ROGUE" and (IMBA_CheckVar("Kel'Thuzad - Interrupt Assister","TrackRogues")==false) then tinsert(IMBA_KelThuzadInterrupt_Players,{UnitName("raid"..i),GetTime(),10,"Kick","raid"..i}); end end end end function IMBA_KelThuzadInterrupt_RegisterEvents() this:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_PARTY_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE"); this:RegisterEvent("CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE"); this:RegisterEvent("RAID_ROSTER_UPDATE"); this:RegisterEvent("PARTY_MEMBERS_CHANGED"); end function IMBA_KelThuzadInterrupt_UnregisterEvents() this:UnregisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE"); this:UnregisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE"); this:UnregisterEvent("CHAT_MSG_SPELL_PARTY_DAMAGE"); this:UnregisterEvent("CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE"); this:UnregisterEvent("CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE"); this:UnregisterEvent("RAID_ROSTER_UPDATE"); this:UnregisterEvent("PARTY_MEMBERS_CHANGED"); end function IMBA_KelThuzadInterrupt_YellActivator(arg1) if string.find(arg1,IMBA_KelThuzad_Stage1_End_Yell1) or string.find(arg1,IMBA_KelThuzad_Stage1_End_Yell2) or string.find(arg1,IMBA_KelThuzad_Stage1_End_Yell3) then IMBA_KelThuzadInterrupt:Show(); end end function IMBA_KelThuzadInterrupt_OnLoad() this:SetBackdropBorderColor(1, 1, 1, 1); this:SetBackdropColor(0.0,0.0,0.0,0.6); IMBA_KelThuzadInterrupt_Title:SetText("Kel'Thuzad Interrupts"); IMBA_KelThuzadInterrupt_TimerFrostbolt:SetBarText("Frostbolt Casting in"); IMBA_KelThuzadInterrupt_TitleInterrupters:SetText("Interrupters"); for i=1,8,1 do getglobal("IMBA_KelThuzadInterrupt_Icon"..i):SetIcon("Interface\\AddOns\\IMBA\\textures\\RedArrow.blp"); end IMBA_PlayerName=UnitName("player"); IMBA_AddAddon("Kel'Thuzad - Interrupt Assister", "Aids melee interrupters in not wasting interrupts", IMBA_LOCATIONS_NAXX_LAIR, nil, "IMBA_KelThuzadInterrupt_YellActivator",IMBA_KelThuzad_Stage1_End_Yell1,"IMBA_KelThuzadInterrupt"); IMBA_AddOption2("Kel'Thuzad - Interrupt Assister","TrackRogues","Don't Track Rogues"); IMBA_AddOption2("Kel'Thuzad - Interrupt Assister","TrackWarriors","Don't Track Warriors"); IMBA_KelThuzadInterrupt_UpdateList(); IMBA_KelThuzadInterrupt_TimerFrostbolt.timeLength=2; IMBA_KelThuzadInterrupt_TimerFrostbolt.timeEnd=0; IMBA_KelThuzadInterrupt_TimerFrostbolt.active=true; IMBA_KelThuzadInterrupt_RegisterEvents(); end function IMBA_KelThuzadInterrupt_OnEvent(event) if event=="CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE" then if arg1=="Kel'Thuzad begins to cast Frostbolt." then IMBA_KelThuzadInterrupt_CastFrostbolt(); IMBA_AddAlert("** Kel'Thuzad begins to cast Frostbolt **"); end elseif (event=="CHAT_MSG_SPELL_SELF_DAMAGE") or (event=="CHAT_MSG_SPELL_PARTY_DAMAGE") or (event=="CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE") or (event=="CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE") then local iStart, iEnd, sPlayer; if IMBA_CheckVar("Kel'Thuzad - Interrupt Assister","TrackRogues")==false then iStart, iEnd, sPlayer = string.find(arg1, "^([%a]+) ?'?s? Kick"); if ( sPlayer ) then if ( sPlayer == "Your") then IMBA_KelThuzadInterrupt_PlayerKicks(IMBA_PlayerName); return; else IMBA_KelThuzadInterrupt_PlayerKicks(sPlayer); return; end end end if IMBA_CheckVar("Kel'Thuzad - Interrupt Assister","TrackWarriors")==false then iStart, iEnd, sPlayer = string.find(arg1, "^([%a]+) ?'?s? Pummel"); if ( sPlayer ) then if ( sPlayer == "Your") then IMBA_KelThuzadInterrupt_PlayerPummels(IMBA_PlayerName); return; else IMBA_KelThuzadInterrupt_PlayerPummels(sPlayer); return; end end iStart, iEnd, sPlayer = string.find(arg1, "^([%a]+) ?'?s? Shield Bash"); if ( sPlayer ) then if ( sPlayer == "Your") then IMBA_KelThuzadInterrupt_PlayerShieldBashes(IMBA_PlayerName); return; else IMBA_KelThuzadInterrupt_PlayerShieldBashes(sPlayer); return; end end end if string.find(arg1,"interrupts Kel'Thuzad's Frostbolt.") then IMBA_KelThuzadInterrupt_TimerFrostbolt.timeEnd=0; IMBA_KelThuzadInterrupt_TimerFrostbolt:SetBarText("Frostbolt Interrupted"); IMBA_AddAlert("** Frostbolt Interrupted **"); end elseif (event=="RAID_ROSTER_UPDATE") or (event=="PARTY_MEMBERS_CHANGED") then IMBA_KelThuzadInterrupt_UpdateList(); end end