--Raid mark bar. Similar to quickmark which just semms to be impossible to skin local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore local LT = E:NewModule('Loot', 'AceHook-3.0', 'AceEvent-3.0') local check = false local t = 0 local loottemp = {} function LT:Check() local name, rank, isML for x = 1, GetNumGroupMembers() do name, rank, _, _, _, _, _, _, _, _, isML = GetRaidRosterInfo(x) if name == UnitName("player") and isML then return true elseif name == UnitName("player") and rank == 1 then return true elseif name == UnitName("player") and rank == 2 then return true end end return false end function LT:Announce() local name = {} local loot = {} local numbers = {} local m = 0 local q = E.db.sle.loot.quality == "EPIC" and 4 or E.db.sle.loot.quality == "RARE" and 3 or E.db.sle.loot.quality == "UNCOMMON" and 2 local n = 0 local inGroup, inRaid, inPartyLFG = IsInGroup(), IsInRaid(), IsPartyLFG() local p, chat if not inGroup then return end -- not in group, exit. if (LT:Check() and E.db.sle.loot.auto) or (IsLeftControlKeyDown() and (IsInGroup() or IsInRaid())) then for i = 1, GetNumLootItems() do if GetLootSlotType(i) == 1 then for j = 1, t do if GetLootSlotLink(i) == loottemp[j] then check = true end end end end if check == false or IsLeftControlKeyDown() then for i = 1, GetNumLootItems() do if GetLootSlotType(i) ~= 1 then m = m + 1 else local _, item, quantity, quality = GetLootSlotInfo(i) if quality >= q then name[i] = item k = 1 while name[i] ~= name[k] do k = k + 1 end if i == k then n = n + 1 loot[n] = GetLootSlotLink(i) numbers[n] = quantity else p = 1 while GetLootSlotLink(k) ~= loot[p] do p = p + 1 end numbers[p] = numbers[p] + quantity end end end end if n ~= 0 then if E.db.sle.loot.chat == "PARTY" then SendChatMessage(L["Loot Dropped:"], inPartyLFG and "INSTANCE_CHAT" or "PARTY") elseif E.db.sle.loot.chat == "RAID" then if inRaid then SendChatMessage(L["Loot Dropped:"], inPartyLFG and "INSTANCE_CHAT" or "RAID") else SendChatMessage(L["Loot Dropped:"], inPartyLFG and "INSTANCE_CHAT" or "PARTY") end elseif E.db.sle.loot.chat == "SAY" then SendChatMessage(L["Loot Dropped:"], "SAY") end end for i = 1, n do if E.db.sle.loot.chat == "PARTY" then if numbers[i] == 1 then SendChatMessage(i..". "..loot[i], inPartyLFG and "INSTANCE_CHAT" or "PARTY") elseif numbers[i] > 1 then SendChatMessage(i..". "..loot[i].."x"..numbers[i], inPartyLFG and "INSTANCE_CHAT" or "PARTY") end elseif E.db.sle.loot.chat == "RAID" then if inRaid then if numbers[i] == 1 then SendChatMessage(i..". "..loot[i], inPartyLFG and "INSTANCE_CHAT" or "RAID") elseif numbers[i] > 1 then SendChatMessage(i..". "..loot[i].."x"..numbers[i], inPartyLFG and "INSTANCE_CHAT" or "RAID") end else if numbers[i] == 1 then SendChatMessage(i..". "..loot[i], inPartyLFG and "INSTANCE_CHAT" or "PARTY") elseif numbers[i] > 1 then SendChatMessage(i..". "..loot[i].."x"..numbers[i], inPartyLFG and "INSTANCE_CHAT" or "PARTY") end end elseif E.db.sle.loot.chat == "SAY" then if numbers[i] == 1 then SendChatMessage(i..". "..loot[i], "SAY") elseif numbers[i] > 1 then SendChatMessage(i..". "..loot[i].."x"..numbers[i], "SAY") end end end end for i = 1, GetNumLootItems() do if GetLootSlotType(i) == 1 then loottemp[i] = GetLootSlotLink(i) end end t = GetNumLootItems() check = false end end function LT:Initialize() if not E.private.sle.loot.enable then return end self:RegisterEvent("LOOT_OPENED", "Announce") end E:RegisterModule(LT:GetName())