function IMBA_RaidInCombat() if GetNumRaidMembers()==0 then return false end NumInCombat=0; for i = 1, GetNumRaidMembers() do if UnitAffectingCombat("raid"..i)~=nil then NumInCombat=NumInCombat+UnitAffectingCombat("raid"..i); end end if NumInCombat>2 then return true; end return false; end function IMBA_BossAggroed(BossName) if UnitName("target")==BossName then return true; end if GetNumRaidMembers()==0 then return false end for i = 1, GetNumRaidMembers() do if UnitName("raid"..i.."target")==BossName then if UnitAffectingCombat("raid"..i.."target")~=nil then return true; end end end return false; end --Don't call this before UI has finished loading function IMBA_SetLogDistance(Dist) if not Dist then Dist=200; end SetCVar("CombatDeathLogRange", Dist); SetCVar("CombatLogRangeParty", Dist); SetCVar("CombatLogRangePartyPet", Dist); SetCVar("CombatLogRangeFriendlyPlayers", Dist); SetCVar("CombatLogRangeFriendlyPlayersPets", Dist); SetCVar("CombatLogRangeHostilePlayers", Dist); SetCVar("CombatLogRangeHostilePlayersPets", Dist); SetCVar("CombatLogRangeCreature", Dist); end --This Function is From AllInOneInventory function IMBA_ExtractNextParam(msg) local params = msg; local command = params; local index = strfind(command, " "); if ( index ) then command = strsub(command, 1, index-1); params = strsub(params, index+1); else params = ""; end return command, params; end function IMBA_FindBuffCountAndDuration(name) local j, buff, buffApplications, buffTime; for j=1,16 do buff = GetPlayerBuffTexture(GetPlayerBuff(j - 1, "HELPFUL")); if string.find(string.upper(buff),string.upper(name)) then buffApplications = GetPlayerBuffApplications(GetPlayerBuff(j - 1, "HELPFUL")); buffTime = GetPlayerBuffTimeLeft(GetPlayerBuff(j - 1, "HELPFUL")); return buffApplications, buffTime; end end return 0, 0; end function IMBA_FindDebuffCountAndDuration(name) local j, buff, debuffApplications, debuffTime; for j=1,16 do buff = GetPlayerBuffTexture(GetPlayerBuff(j - 1, "HARMFUL")); if buff~=nil and string.find(string.upper(buff),string.upper(name)) then debuffApplications = GetPlayerBuffApplications(GetPlayerBuff(j - 1, "HARMFUL")); debuffTime = GetPlayerBuffTimeLeft(GetPlayerBuff(j - 1, "HARMFUL")); return debuffApplications, debuffTime; end end return 0, 0; end function IMBA_GetRaidIconUnitID(raidtargetindex) if GetNumRaidMembers()==0 then return nil end for i=1,GetNumRaidMembers() do if UnitExists("raid"..i) and GetRaidTargetIndex("raid"..i) == raidtargetindex then return "raid"..i elseif UnitExists("raid"..i.."target") and GetRaidTargetIndex("raid"..i.."target") == raidtargetindex then return "raid"..i.."target" elseif UnitExists("raid"..i.."targettarget") and GetRaidTargetIndex("raid"..i.."targettarget") == raidtargetindex then return "raid"..i.."targettarget" elseif UnitExists("raidpet"..i) and GetRaidTargetIndex("raidpet"..i) == raidtargetindex then return "raidpet"..i end end return nil; end function IMBA_GetRaidIconName(raidtargetindex) if raidtargetindex==1 then return "Star"; elseif raidtargetindex==2 then return "Circle"; elseif raidtargetindex==3 then return "Diamond"; elseif raidtargetindex==4 then return "Triangle"; elseif raidtargetindex==5 then return "Moon"; elseif raidtargetindex==6 then return "Square"; elseif raidtargetindex==7 then return "Cross"; elseif raidtargetindex==8 then return "Skull"; end end function IMBA_FindPlayerUnitByName(name) if UnitExists("player") and (UnitName("player")==name) then return "player"; end if GetNumRaidMembers()==0 then return nil end for i=1,GetNumRaidMembers() do if UnitExists("raid"..i) and (UnitName("raid"..i)==name) then return "raid"..i; end end return nil; end function IMBA_FindUnitByName(name) if UnitExists("player") and (UnitName("player")==name) then return "player"; end if UnitExists("playertarget") and (UnitName("playertarget")==name) then return "playertarget"; end if GetNumRaidMembers()==0 then return nil end for i=1,GetNumRaidMembers() do if UnitExists("raid"..i) and (UnitName("raid"..i)==name) then return "raid"..i; elseif UnitExists("raid"..i.."target") and (UnitName("raid"..i.."target")==name) then return "raid"..i.."target"; end end return nil; end function IMBA_SendEvent(event) local frame -- first let's find all the frames local hasonevent while true do -- get next frame frame = EnumerateFrames(frame) if frame == nil then break end hasonevent = frame:GetScript("OnEvent") if hasonevent then hasonevent(event,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9); end end end function IMBA_CheckIfCanActivate(Addon) return (IMBA_Addons[Addon].RegenActivator~=nil) or (IMBA_Addons[Addon].YellActivator~=nil); end function IMBA_IsPlayerALeader() return IsPartyLeader() or IsRaidLeader() or IsRaidOfficer() end --Function from gatherer though slightly changed to be more correctly named function IMBA_isMinimapInsideWMO() local tempzoom = 0; local InsideWMO = 0; if (GetCVar("minimapZoom") == GetCVar("minimapInsideZoom")) then if (GetCVar("minimapInsideZoom")+0 >= 3) then Minimap:SetZoom(Minimap:GetZoom() - 1); tempzoom = 1; else Minimap:SetZoom(Minimap:GetZoom() + 1); tempzoom = -1; end end if (GetCVar("minimapInsideZoom")+0 == Minimap:GetZoom()) then InsideWMO = 1; end Minimap:SetZoom(Minimap:GetZoom() + tempzoom); return InsideWMO; end function IMBA_Flash_Warning() UIFrameFlash(LowHealthFrame, 0.5, 0.5, 5); LowHealthFrame.flashing = 1; end --Just some fun function I made to traverse all the children of a frame --Help me find about screen flashing :) --UIFrameFlash(LowHealthFrame, 0.5, 0.5, 5); LowHealthFrame.flashing = 1; function TraverseChildren(TheFrame,msg) local i, smsg; if not msg then msg=""; end local children = {TheFrame:GetChildren()}; for i=1,getn(children) do if not children[i]:GetName() then DEFAULT_CHAT_FRAME:AddMessage(msg.."Child "..i); smsg=msg.."Child "..i.."->" else DEFAULT_CHAT_FRAME:AddMessage(msg..children[i]:GetName()); smsg=msg..children[i]:GetName().."->" end TraverseChildren(children[i],smsg) end end