-finshed conversion of classic/tbc tables built function to create token tables from teir collections
This commit is contained in:
@@ -88,7 +88,7 @@ AtlasLoot_Difficulty = {
|
||||
|
||||
["Crafting"] = {
|
||||
{"Crafting Patterns", "" },
|
||||
{"Item Normal", "=s=Normal" },
|
||||
{"Item Normal", 2 },
|
||||
{"Bloodforged", 1 },
|
||||
};
|
||||
|
||||
|
||||
+101
-84
@@ -14,7 +14,6 @@ AtlasLoot_OnLoad()
|
||||
AtlasLootBoss_OnClick()
|
||||
AtlasLoot_ShowItemsFrame()
|
||||
AtlasLoot_GenerateAtlasMenu(dataID, pFrame)
|
||||
AtlasLootOptions_ItemAutoQuery()
|
||||
AtlasLoot_SetItemInfoFrame()
|
||||
AtlasLootItemsFrame_OnCloseButton()
|
||||
AtlasLootMenuItem_OnClick()
|
||||
@@ -28,12 +27,13 @@ AtlasLoot_AddTooltip(frameb, tooltiptext)
|
||||
AL_FindId(name, difficulty)
|
||||
]]
|
||||
|
||||
AtlasLoot = LibStub("AceAddon-3.0"):NewAddon("AtlasLoot");
|
||||
AtlasLoot = LibStub("AceAddon-3.0"):NewAddon("AtlasLoot", "AceTimer-3.0");
|
||||
|
||||
--Instance required libraries
|
||||
local BabbleBoss = AtlasLoot_GetLocaleLibBabble("LibBabble-Boss-3.0")
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
|
||||
|
||||
--Establish version number and compatible version of Atlas
|
||||
local VERSION_MAJOR = "5";
|
||||
local VERSION_MINOR = "11";
|
||||
@@ -206,12 +206,6 @@ function AtlasLoot_OnVariablesLoaded()
|
||||
if not AtlasLootCharDB["WishList"] then AtlasLootCharDB["WishList"] = {} end
|
||||
if not AtlasLootCharDB["QuickLooks"] then AtlasLootCharDB["QuickLooks"] = {} end
|
||||
if not AtlasLootCharDB["SearchResult"] then AtlasLootCharDB["SearchResult"] = {} end
|
||||
AtlasLoot.db.profile.LastBoss = "EmptyTable";
|
||||
if AtlasLoot_TableNames then
|
||||
AtlasLoot_TableNames["EmptyTable"] = { AL["Select a Loot Table..."], "Menu" };
|
||||
AtlasLoot_TableNames["EmptyInstance"] = { "AtlasLoot", "AtlasLootFallback" };
|
||||
AtlasLoot_TableNames["AtlasLootFallback"] = { "AtlasLoot", "AtlasLootFallback" };
|
||||
end
|
||||
if AtlasLoot_Data then
|
||||
AtlasLoot_Data["EmptyTable"] = {
|
||||
Name = AL["Select a Loot Table..."];
|
||||
@@ -389,7 +383,6 @@ function AtlasLoot_Reset(data)
|
||||
AtlasFrame:Hide();
|
||||
end
|
||||
if data == "frames" then
|
||||
AtlasLoot.db.profile.LastBoss = "EmptyTable";
|
||||
AtlasLootDefaultFrame:ClearAllPoints();
|
||||
AtlasLootDefaultFrame:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
|
||||
if AtlasLootFu then
|
||||
@@ -400,16 +393,13 @@ function AtlasLoot_Reset(data)
|
||||
AtlasLoot.db.profile.LootBrowserScale = 1.0;
|
||||
AtlasLoot_UpdateLootBrowserScale();
|
||||
elseif data == "quicklooks" then
|
||||
AtlasLoot.db.profile.LastBoss = "EmptyTable";
|
||||
AtlasLootCharDB["QuickLooks"] = {};
|
||||
AtlasLoot_RefreshQuickLookButtons();
|
||||
elseif data == "wishlist" then
|
||||
AtlasLoot.db.profile.LastBoss = "EmptyTable";
|
||||
AtlasLootCharDB["WishList"] = {};
|
||||
AtlasLootCharDB["SearchResult"] = {};
|
||||
AtlasLootCharDB.LastSearchedText = "";
|
||||
elseif data == "all" then
|
||||
AtlasLoot.db.profile.LastBoss = "EmptyTable";
|
||||
AtlasLootDefaultFrame:ClearAllPoints();
|
||||
AtlasLootDefaultFrame:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
|
||||
if AtlasLootFu then
|
||||
@@ -490,21 +480,67 @@ function AtlasLoot_OnLoad()
|
||||
end
|
||||
|
||||
function AtlasLoot_CleandataID(newID, listnum)
|
||||
local cleanlist = { [1] = {"CLASSIC", "TBC", "WRATH", "1", "2", "3", "4", "5", "6", "7", "8"},
|
||||
[2] = {"1", "2", "3", "4", "5", "6", "7", "8"}
|
||||
};
|
||||
local cleanlist = { [1] = {"CLASSIC", "TBC", "WRATH"} };
|
||||
for i = 1, #cleanlist[listnum] do
|
||||
newID = gsub(newID, cleanlist[listnum][i], "");
|
||||
end
|
||||
return newID;
|
||||
end
|
||||
|
||||
--Creates tables for raid tokens from the collections tables
|
||||
function Atlasloot_CreateToken(dataID)
|
||||
local itemType, slotType, itemName, itemType2
|
||||
--orginal dataID
|
||||
local orgID = dataID;
|
||||
--list of item types to find
|
||||
local names = { {"HEAD", "INVTYPE_HEAD", "Head"}, {"SHOULDER", "INVTYPE_SHOULDER", "Shoulders"}, {"CHEST", "INVTYPE_CHEST", "Chest", "INVTYPE_ROBE"}, {"WRIST", "INVTYPE_WRIST", "Wrists"}, {"HAND", "INVTYPE_HAND", "Hands"}, {"WAIST", "INVTYPE_WAIST", "Waist"}, {"LEGS", "INVTYPE_LEGS", "Legs"}, {"FEET", "INVTYPE_FEET", "Feet"}, {"FINGER", "INVTYPE_FINGER", "Rings"}};
|
||||
--finds the item type to create a list of
|
||||
for a, b in pairs(names) do
|
||||
dataID = gsub(dataID, b[1], "");
|
||||
slotType = gsub(orgID, dataID, "");
|
||||
if slotType == b[1] then
|
||||
itemType = b[2];
|
||||
itemType2 = b[4];
|
||||
itemName = b[3];
|
||||
end
|
||||
end
|
||||
--Creates data set of the item type
|
||||
AtlasLoot_Data[orgID] = {};
|
||||
local newData = AtlasLoot_Data[orgID];
|
||||
newData.Name = itemName;
|
||||
newData.Type = AtlasLoot_Data[dataID].Type;
|
||||
newData.Back = true;
|
||||
newData[1] = {};
|
||||
newData[1].Name = itemName;
|
||||
--used to refresh the page after its loaded all the items
|
||||
function AtlasLoot:callShowloot()
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3], AtlasLootItemsFrame.refresh[4], AtlasLootItemsFrame.refresh[5])
|
||||
end
|
||||
--Adds all the items to the new data set
|
||||
--Uses a timer so that AtlasLoot:callShowloot() only fires once after all then items have been loaded
|
||||
for i, v in ipairs(AtlasLoot_Data[dataID]) do
|
||||
for t, id in ipairs(v) do
|
||||
local itemID = id[2];
|
||||
local item = Item:CreateFromID(itemID);
|
||||
item:ContinueOnLoad(function(itemID)
|
||||
AtlasLoot:CancelTimer(AtlasLoot.refreshTimer);
|
||||
if itemType == select(9,GetItemInfo(itemID)) or itemType2 == select(9,GetItemInfo(itemID)) then
|
||||
local newTable = rawset(id, 1, i);
|
||||
table.insert(newData[1],newTable);
|
||||
end
|
||||
AtlasLoot.refreshTimer = AtlasLoot:ScheduleTimer("callShowloot", .5);
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame):
|
||||
dataID - Name of the loot table
|
||||
dataSource - Table in the database where the loot table is stored
|
||||
boss - Text string to use as a title for the loot page
|
||||
pFrame - Data structure describing how and where to anchor the item frame (more details, see the function AtlasLoot_SetItemInfoFrame)
|
||||
tablenum - Table number of the loot table being displayed
|
||||
This fuction is not normally called directly, it is usually invoked by AtlasLoot_ShowBossLoot.
|
||||
It is the workhorse of the mod and allows the loot tables to be displayed any way anywhere in any mod.
|
||||
]]
|
||||
@@ -531,7 +567,6 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
|
||||
--Hide Advanced search if it is up and reshow Querybutton
|
||||
AtlasLootAdvancedSearch:Hide();
|
||||
AtlasLootServerQueryButton:Show();
|
||||
|
||||
--Ditch the Quicklook selector
|
||||
AtlasLoot_QuickLooks:Hide();
|
||||
@@ -652,8 +687,8 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
|
||||
--Store data about the state of the items frame to allow minor tweaks or a recall of the current loot page
|
||||
AtlasLootItemsFrame.refresh = {dataID, dataSource_backup, boss, pFrame, tablenum};
|
||||
if dataID ~= "FilterList" then
|
||||
AtlasLootItemsFrame.refreshOri = {dataID, dataSource_backup, boss, pFrame, tablenum}
|
||||
if dataID ~= "FilterList" and dataSource[dataID].Back ~= true then
|
||||
AtlasLootItemsFrame.refreshOri = {dataID, dataSource_backup, boss, pFrame, tablenum};
|
||||
end
|
||||
|
||||
--Insert the item description
|
||||
@@ -775,32 +810,29 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
end
|
||||
|
||||
AtlasLootItemsFrame.refresh = {dataID, dataSource_backup, boss, pFrame, tablenum};
|
||||
if dataID ~= "FilterList" then
|
||||
if dataID ~= "FilterList" and dataSource[dataID].Back ~= true then
|
||||
AtlasLootItemsFrame.refreshOri = {dataID, dataSource_backup, boss, pFrame, tablenum};
|
||||
AtlasLoot.db.profile.LastBoss = {dataID, dataSource_backup, boss, pFrame, tablenum, ATLASLOOT_LASTMODULE, ATLASLOOT_CURRENTTABLE};
|
||||
end
|
||||
|
||||
--If the item is not in cache, querying the server may cause a disconnect
|
||||
--Show a red box around the item to indicate this to the user
|
||||
--((dataSource[dataID][i][2] ~= 0) and (not GetItemInfo(dataSource[dataID][i][2]))
|
||||
for i = 1, 30, 1 do
|
||||
itemID = getglobal("AtlasLootItem_"..i).itemID;
|
||||
if itemID and itemID ~= 0 and (string.sub(itemID, 1, 1) ~= "s") then
|
||||
if GetItemInfo(itemID) then
|
||||
getglobal("AtlasLootItem_"..i.."_Unsafe"):Hide();
|
||||
else
|
||||
getglobal("AtlasLootItem_"..i.."_Unsafe"):Show();
|
||||
end
|
||||
else
|
||||
getglobal("AtlasLootItem_"..i.."_Unsafe"):Hide();
|
||||
end
|
||||
end
|
||||
|
||||
--This is a valid QuickLook, so show the UI objects
|
||||
AtlasLoot_QuickLooks:Show();
|
||||
AtlasLootQuickLooksButton:Show();
|
||||
|
||||
-- Checks dataID with submenus to stop filter button loading on certain tables
|
||||
local function filterCheck(find)
|
||||
local mtype = {"Crafting", "Reputations", "WorldEvents", "PVP", "Collections"}
|
||||
for m, t in pairs (mtype) do
|
||||
for i, v in ipairs (AtlasLoot_SubMenus[t..AtlasLoot_Expac]) do
|
||||
if find == v[2] then
|
||||
return true;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Show the Filter Check-Box
|
||||
if dataID ~= "WishList" and dataID ~= "SearchResult" and dataSource[dataID].NoFilter ~= true then
|
||||
if dataID ~= "WishList" and dataID ~= "SearchResult" and filterCheck(dataID) ~= true then
|
||||
AtlasLootFilterCheck:Show();
|
||||
end
|
||||
|
||||
@@ -809,8 +841,10 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
getglobal("AtlasLootItemsFrame_NEXT"):Hide();
|
||||
getglobal("AtlasLootItemsFrame_PREV"):Hide();
|
||||
|
||||
AtlasLoot_BossName:SetText(dataSource[dataID][tablenum].Name);
|
||||
AtlasLootDefaultFrame_SubMenu:SetText(dataSource[dataID].Name);
|
||||
if dataID ~= "FilterList" then
|
||||
AtlasLoot_BossName:SetText(dataSource[dataID][tablenum].Name);
|
||||
AtlasLootDefaultFrame_SubMenu:SetText(dataSource[dataID].Name);
|
||||
end
|
||||
|
||||
--Consult the button registry to determine what nav buttons are required
|
||||
if dataID == "SearchResult" or dataID == "WishList" then
|
||||
@@ -823,11 +857,11 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
getglobal("AtlasLootItemsFrame_PREV").lootpage = dataID.."Page"..(wlPage - 1);
|
||||
end
|
||||
else
|
||||
local tablebase = dataID;
|
||||
local tablebase = dataID;
|
||||
if ATLASLOOT_FILTER_ENABLE and dataID == "FilterList" then
|
||||
tablebase = AtlasLootItemsFrame.refreshOri[1];
|
||||
end
|
||||
|
||||
|
||||
if tablenum + 1 ~= AtlasLoot_GetNumOfRows(dataSource[tablebase]) then
|
||||
getglobal("AtlasLootItemsFrame_NEXT"):Show();
|
||||
getglobal("AtlasLootItemsFrame_NEXT").lootpage = tablebase;
|
||||
@@ -838,11 +872,10 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
getglobal("AtlasLootItemsFrame_PREV").lootpage = tablebase;
|
||||
getglobal("AtlasLootItemsFrame_PREV").tablenum = tablenum - 1;
|
||||
end
|
||||
--[[ if tablebase.Back then
|
||||
if dataSource[tablebase].Back then
|
||||
getglobal("AtlasLootItemsFrame_BACK"):Show();
|
||||
getglobal("AtlasLootItemsFrame_BACK").lootpage = tablebase.Back;
|
||||
end
|
||||
]] end
|
||||
end
|
||||
end
|
||||
|
||||
--Anchor the item frame where it is supposed to be
|
||||
@@ -850,7 +883,9 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame, tablenum)
|
||||
if ATLASLOOT_FILTER_ENABLE and dataID ~= "FilterList" then
|
||||
AtlasLoot_HideNoUsableItems();
|
||||
end
|
||||
if AtlasLoot.db.profile.ItemAutoQuery then AtlasLoot_QueryLootPage(); end
|
||||
|
||||
AtlasLoot_QueryLootPage();
|
||||
|
||||
end
|
||||
|
||||
--[[
|
||||
@@ -915,7 +950,6 @@ Called when <-, -> are pressed and calls up the appropriate loot page
|
||||
function AtlasLoot_NavButton_OnClick()
|
||||
local tabelname = this.lootpage;
|
||||
local tablenum = this.tablenum;
|
||||
local filtercheck = false;
|
||||
|
||||
if AtlasLootItemsFrame.refresh and AtlasLootItemsFrame.refresh[4] and AtlasLootItemsFrame.refresh[5] then
|
||||
if strsub(tabelname, 1, 16) == "SearchResultPage" then
|
||||
@@ -937,22 +971,7 @@ AtlasLoot_NavButton_OnClick:
|
||||
Called when 'Back'Button is pressed and calls up the appropriate loot page
|
||||
]]
|
||||
function AtlasLoot_BackButton_OnClick()
|
||||
if AtlasLootItemsFrame.refresh and AtlasLootItemsFrame.refresh[4] then
|
||||
if strsub(this.lootpage, 1, 16) == "SearchResultPage" then
|
||||
AtlasLoot_ShowItemsFrame("SearchResult", this.lootpage, (AL["Search Result: %s"]):format(AtlasLootCharDB.LastSearchedText or ""), AtlasLootItemsFrame.refresh[4]);
|
||||
elseif strsub(this.lootpage, 1, 12) == "WishListPage" then
|
||||
AtlasLoot_ShowItemsFrame("WishList", this.lootpage, AL["Wishlist"], AtlasLootItemsFrame.refresh[4]);
|
||||
elseif AtlasLoot_Hold == true then
|
||||
AtlasLoot_ShowItemsFrame(AtlasLoot_Lastboss, AtlasLootItemsFrame.refresh[2], "", AtlasLootItemsFrame.refresh[4]);
|
||||
-- Lets AtlasLoot_Lastboss be updated after going back to main table
|
||||
AtlasLoot_Hold = false;
|
||||
else
|
||||
AtlasLoot_ShowItemsFrame(this.lootpage, AtlasLootItemsFrame.refresh[2], "", AtlasLootItemsFrame.refresh[4]);
|
||||
end
|
||||
else
|
||||
--Fallback for if the requested loot page is a menu and does not have a .refresh instance
|
||||
AtlasLoot_ShowItemsFrame(this.lootpage, "", "", AtlasFrame);
|
||||
end
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5]);
|
||||
end
|
||||
|
||||
--[[
|
||||
@@ -960,16 +979,17 @@ AtlasLoot_IsLootTableAvailable(dataID):
|
||||
Checks if a loot table is in memory and attempts to load the correct LoD module if it isn't
|
||||
dataID: Loot table dataID
|
||||
]]
|
||||
function AtlasLoot_IsLootTableAvailable(dataID,dataSource)
|
||||
function AtlasLoot_IsLootTableAvailable(dataSource)
|
||||
|
||||
local moduleName=nil;
|
||||
|
||||
moduleName = AtlasLoot_GetLODModule(dataSource);
|
||||
|
||||
if AtlasLoot_Data[dataID] then
|
||||
if IsAddOnLoaded(moduleName) then
|
||||
return true;
|
||||
else
|
||||
if moduleName then
|
||||
LoadAddOn(moduleName);
|
||||
--[[ if moduleName then
|
||||
if not IsAddOnLoaded(moduleName) then
|
||||
loaded, reason=LoadAddOn(moduleName);
|
||||
if not loaded then
|
||||
@@ -982,7 +1002,7 @@ function AtlasLoot_IsLootTableAvailable(dataID,dataSource)
|
||||
end
|
||||
end
|
||||
end
|
||||
--[[ if AtlasLoot_Data[dataID] then
|
||||
if AtlasLoot_Data[dataID] then
|
||||
if ATLASLOOT_DEBUGMESSAGES then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(GREEN..AL["AtlasLoot"]..": "..ORANGE..moduleName..WHITE.." "..AL["sucessfully loaded."]);
|
||||
end
|
||||
@@ -991,11 +1011,11 @@ function AtlasLoot_IsLootTableAvailable(dataID,dataSource)
|
||||
else
|
||||
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot Error!"].." "..ORANGE..AtlasLoot_TableNames[dataID][1]..WHITE..AL[" could not be accessed, the following module may be out of date: "]..ORANGE..moduleName);
|
||||
return false;
|
||||
end ]]
|
||||
end
|
||||
else
|
||||
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot Error!"].." "..ORANGE..AL["Loot module returned as nil!"]);
|
||||
return false;
|
||||
end
|
||||
end ]]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1074,7 +1094,7 @@ function AtlasLoot_ShowQuickLooks(button)
|
||||
"tooltipTitle", AL["QuickLook"].." 1",
|
||||
"tooltipText", AL["Assign this loot table\n to QuickLook"].." 1",
|
||||
"func", function()
|
||||
AtlasLootCharDB["QuickLooks"][1]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5]};
|
||||
AtlasLootCharDB["QuickLooks"][1]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5], ATLASLOOT_LASTMODULE, ATLASLOOT_CURRENTTABLE};
|
||||
AtlasLoot_RefreshQuickLookButtons();
|
||||
dewdrop:Close(1);
|
||||
end
|
||||
@@ -1084,7 +1104,7 @@ function AtlasLoot_ShowQuickLooks(button)
|
||||
"tooltipTitle", AL["QuickLook"].." 2",
|
||||
"tooltipText", AL["Assign this loot table\n to QuickLook"].." 2",
|
||||
"func", function()
|
||||
AtlasLootCharDB["QuickLooks"][2]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5]};
|
||||
AtlasLootCharDB["QuickLooks"][2]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5], ATLASLOOT_LASTMODULE, ATLASLOOT_CURRENTTABLE};
|
||||
AtlasLoot_RefreshQuickLookButtons();
|
||||
dewdrop:Close(1);
|
||||
end
|
||||
@@ -1094,7 +1114,7 @@ function AtlasLoot_ShowQuickLooks(button)
|
||||
"tooltipTitle", AL["QuickLook"].." 3",
|
||||
"tooltipText", AL["Assign this loot table\n to QuickLook"].." 3",
|
||||
"func", function()
|
||||
AtlasLootCharDB["QuickLooks"][3]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5]};
|
||||
AtlasLootCharDB["QuickLooks"][3]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5], ATLASLOOT_LASTMODULE, ATLASLOOT_CURRENTTABLE};
|
||||
AtlasLoot_RefreshQuickLookButtons();
|
||||
dewdrop:Close(1);
|
||||
end
|
||||
@@ -1104,7 +1124,7 @@ function AtlasLoot_ShowQuickLooks(button)
|
||||
"tooltipTitle", AL["QuickLook"].." 4",
|
||||
"tooltipText", AL["Assign this loot table\n to QuickLook"].." 4",
|
||||
"func", function()
|
||||
AtlasLootCharDB["QuickLooks"][4]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5]};
|
||||
AtlasLootCharDB["QuickLooks"][4]={AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5], ATLASLOOT_LASTMODULE, ATLASLOOT_CURRENTTABLE};
|
||||
AtlasLoot_RefreshQuickLookButtons();
|
||||
dewdrop:Close(1);
|
||||
end
|
||||
@@ -1142,19 +1162,16 @@ AtlasLoot_QueryLootPage()
|
||||
Querys all valid items on the current loot page.
|
||||
]]
|
||||
function AtlasLoot_QueryLootPage()
|
||||
i=1;
|
||||
local querytime = 0;
|
||||
local now = 0;
|
||||
while i<31 do
|
||||
now = GetTime();
|
||||
if now - querytime > 0.01 then
|
||||
querytime = GetTime();
|
||||
button = getglobal("AtlasLootItem_"..i);
|
||||
queryitem = button.itemID;
|
||||
if (queryitem) and (queryitem ~= nil) and (queryitem ~= "") and (queryitem ~= 0) and (string.sub(queryitem, 1, 1) ~= "s") then
|
||||
AtlasLootTooltip:SetHyperlink("item:"..queryitem..":0:0:0:0:0:0:0");
|
||||
end
|
||||
i=i+1;
|
||||
for i = 1, 30, 1 do
|
||||
button = getglobal("AtlasLootItem_"..i);
|
||||
queryitem = button.itemID;
|
||||
if (queryitem) and (queryitem ~= nil) and (queryitem ~= "") and (queryitem ~= 0) and (string.sub(queryitem, 1, 1) ~= "s") then
|
||||
local item = Item:CreateFromID(queryitem);
|
||||
item:ContinueOnLoad(function(itemId)
|
||||
if item:GetInfo() then
|
||||
AtlasLootTooltip:SetHyperlink("item:"..itemId..":0:0:0:0:0:0:0");
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -481,43 +481,6 @@
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="AtlasLootServerQueryButton" inherits="OptionsButtonTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="140" y="23"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativeTo="$parent" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="130" y="4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnShow>
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
this:SetText(AL["Query Server"]);
|
||||
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
|
||||
</OnShow>
|
||||
<OnEnter>
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
GameTooltip:ClearLines();
|
||||
GameTooltip:SetOwner(this, "ANCHOR_RIGHT", -(this:GetWidth() / 2), 5);
|
||||
GameTooltip:AddLine("|cffff0000"..AL["Query Server"]);
|
||||
GameTooltip:AddLine(AL["Queries the server for all items"]);
|
||||
GameTooltip:AddLine(AL["on this page. The items will be"]);
|
||||
GameTooltip:AddLine(AL["refreshed when you next mouse"]);
|
||||
GameTooltip:AddLine(AL["over them. |cffff0000 (Includes Bloodforged)"]);
|
||||
GameTooltip:Show();
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
GameTooltip:Hide();
|
||||
</OnLeave>
|
||||
<OnClick>
|
||||
GameTooltip:Hide();
|
||||
AtlasLoot_QueryLootPage();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="AtlasLootQuickLooksButton">
|
||||
<Size>
|
||||
<AbsDimension x="25" y="25" />
|
||||
@@ -763,24 +726,6 @@
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="$parentSubtablePosition" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="-190"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
getglobal(this:GetName().."Text"):SetText("Swap Subtable/Difficuilty Menus");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
AtlasLootOptions_SubtablePositionToggle();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="$parentLoDStartup" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
@@ -863,26 +808,6 @@
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="$parentItemAutoQuery" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="-136"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
getglobal(this:GetName().."Text"):SetText(AL["Auto Query items on page load"]);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
AtlasLootOptions_ItemAutoQuery();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="$parentHidePanel" inherits="OptionsCheckButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
|
||||
@@ -4,10 +4,12 @@ ItemIDsDatabase[18564] = {18564, 18564, 318564, 218564};
|
||||
ItemIDsDatabase[17204] = {17204, 17204, 317204, 217204};
|
||||
ItemIDsDatabase[19017] = {19017, 19017, 319017, 219017};
|
||||
ItemIDsDatabase[11879] = {11879, 11879, 311879, 211879};
|
||||
ItemIDsDatabase[22589] = {6022589, 22589, 100174, 222589};
|
||||
ItemIDsDatabase[22632] = {6022632, 22632, 22632, 222632};
|
||||
ItemIDsDatabase[22631] = {6022631, 22631, 22631, 222631};
|
||||
ItemIDsDatabase[22630] = {6022630, 22630, 22630, 222630};
|
||||
|
||||
|
||||
ItemIDsDatabase[22589] = {6022589, 22589, 322589, 222589};
|
||||
ItemIDsDatabase[22632] = {6022632, 22632, 322632, 222632};
|
||||
ItemIDsDatabase[22631] = {6022631, 22631, 322631, 222631};
|
||||
ItemIDsDatabase[22630] = {6022630, 22630, 322630, 222630};
|
||||
|
||||
ItemIDsDatabase[2032902] = {6053891, 2032902, 2232902, 2332902};
|
||||
ItemIDsDatabase[44831] = {6044831, 44831, 344831, 244831};
|
||||
@@ -69,3 +71,11 @@ ItemIDsDatabase[30249] = {30249, 30249, 330249, 230249};
|
||||
ItemIDsDatabase[30237] = {30237, 30237, 330237, 230237};
|
||||
ItemIDsDatabase[30240] = {30240, 30240, 330240, 230240};
|
||||
ItemIDsDatabase[30246] = {30246, 30246, 30246, 230246};
|
||||
|
||||
--Druid
|
||||
|
||||
ItemIDsDatabase[29098] = {6029098, 29098, 314712, 214712};
|
||||
ItemIDsDatabase[29100] = {6029100, 29100, 314714, 214714};
|
||||
ItemIDsDatabase[29096] = {6029096, 29096, 314710, 214710};
|
||||
ItemIDsDatabase[29097] = {6029097, 29097, 314711, 214711};
|
||||
ItemIDsDatabase[29099] = {6029099, 29099, 314713, 214713};
|
||||
|
||||
@@ -265,8 +265,10 @@ function AtlasLootItem_OnClick(arg1)
|
||||
end
|
||||
elseif (arg1=="LeftButton") and this.sourcePage ~= nil then
|
||||
--Holds AtlasLoot_Lastboss so back button works
|
||||
AtlasLoot_Hold = true;
|
||||
AtlasLoot_ShowBossLoot(this.sourcePage, this.sourcePage, pFrame);
|
||||
if AtlasLoot_Data[this.sourcePage] == nil then
|
||||
Atlasloot_CreateToken(this.sourcePage)
|
||||
end
|
||||
AtlasLoot_ShowItemsFrame(this.sourcePage, "",this.sourcePage, pFrame,1);
|
||||
end
|
||||
else
|
||||
if IsShiftKeyDown() then
|
||||
|
||||
@@ -13,7 +13,6 @@ AtlasLootOptions_EquipCompareToggle()
|
||||
AtlasLootOptions_OpaqueToggle()
|
||||
AtlasLootOptions_ItemIDToggle()
|
||||
AtlasLootOptions_ItemSpam()
|
||||
AtlasLootOptions_ItemAutoQuery()
|
||||
AtlasLootOptions_MinimapToggle()
|
||||
AtlasLootOptions_LoDSpam()
|
||||
AtlasLootOptions_LoDStartup()
|
||||
@@ -46,10 +45,8 @@ function AtlasLootOptions_Init()
|
||||
AtlasLootOptionsFrameLootlinkTT:SetChecked(AtlasLoot.db.profile.LootlinkTT);
|
||||
AtlasLootOptionsFrameItemSyncTT:SetChecked(AtlasLoot.db.profile.ItemSyncTT);
|
||||
AtlasLootOptionsFrameEquipCompare:SetChecked(AtlasLoot.db.profile.EquipCompare);
|
||||
AtlasLootOptionsFrameItemAutoQuery:SetChecked(AtlasLoot.db.profile.ItemAutoQuery);
|
||||
AtlasLootOptionsFrameOpaque:SetChecked(AtlasLoot.db.profile.Opaque);
|
||||
AtlasLootOptionsFrameItemID:SetChecked(AtlasLoot.db.profile.ItemIDs);
|
||||
AtlasLootOptionsFrameSubtablePosition:SetChecked(AtlasLoot.db.profile.SubtablePosition);
|
||||
AtlasLootOptionsFrameItemSpam:SetChecked(AtlasLoot.db.profile.ItemSpam);
|
||||
AtlasLootOptionsFrameLoDStartup:SetChecked(AtlasLoot.db.profile.LoadAllLoDStartup);
|
||||
AtlasLootOptionsFrameHidePanel:SetChecked(AtlasLoot.db.profile.HidePanel);
|
||||
@@ -122,15 +119,6 @@ function AtlasLootOptions_ItemSpam()
|
||||
AtlasLootOptions_Init();
|
||||
end
|
||||
|
||||
function AtlasLootOptions_ItemAutoQuery()
|
||||
if (AtlasLoot.db.profile.ItemAutoQuery) then
|
||||
AtlasLoot.db.profile.ItemAutoQuery = false;
|
||||
else
|
||||
AtlasLoot.db.profile.ItemAutoQuery = true;
|
||||
end
|
||||
AtlasLootOptions_Init();
|
||||
end
|
||||
|
||||
function AtlasLootOptions_LoDStartup()
|
||||
if (AtlasLoot.db.profile.LoadAllLoDStartup) then
|
||||
AtlasLoot.db.profile.LoadAllLoDStartup = false;
|
||||
@@ -235,7 +223,6 @@ function AtlasLoot_CreateOptionsInfoTooltips()
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrameHidePanel", nil) -- AL["Hide AtlasLoot Panel"]
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrameItemSpam", nil) -- AL["Suppress Item Query Text"]
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrameLoDSpam", nil) -- AL["Notify on LoD Module Load"]
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrameItemAutoQuery", nil) -- AL["Auto Query items on page load"]
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrameLootBrowserScale", nil) -- Scale SLIDER
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrame_ResetAtlasLoot", nil) -- AL["Reset Frames"]
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrame_ResetWishlist", nil) -- AL["Reset Wishlist"]
|
||||
@@ -243,7 +230,6 @@ function AtlasLoot_CreateOptionsInfoTooltips()
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrame_FuBarShow", nil) -- AL["Show FuBar Plugin"]
|
||||
AtlasLoot_AddTooltip("AtlasLootOptionsFrame_FuBarHide", nil) -- AL["Hide FuBar Plugin"]
|
||||
AtlasLoot_AddTooltip("AtlasLoot_SelectLootBrowserStyle", nil)
|
||||
--AtlasLoot_AddTooltip("AtlasLoot_SelectMythicPlussTier", nil)
|
||||
end
|
||||
|
||||
function AtlasLoot_OptionsOnShow()
|
||||
@@ -255,10 +241,6 @@ function AtlasLoot_OptionsOnShow()
|
||||
UIDropDownMenu_Initialize(AtlasLoot_CraftingLink, AtlasLoot_CraftingLink_Initialize);
|
||||
UIDropDownMenu_SetSelectedID(AtlasLoot_CraftingLink, AtlasLoot.db.profile.CraftingLink);
|
||||
UIDropDownMenu_SetWidth(AtlasLoot_CraftingLink, 150);
|
||||
-- AtlasLoot_SelectMythicPlussTier_Label:SetText(AL["Select Mythic Pluss Tier:"]);
|
||||
-- UIDropDownMenu_Initialize(AtlasLoot_SelectMythicPlussTier, AtlasLoot_SelectMythicPlussTier_Initialize);
|
||||
-- UIDropDownMenu_SetSelectedID(AtlasLoot_SelectMythicPlussTier, AtlasLoot.db.profile.MythicPlussTier);
|
||||
-- UIDropDownMenu_SetWidth(AtlasLoot_SelectMythicPlussTier, 150);
|
||||
end
|
||||
|
||||
function AtlasLoot_SelectLootBrowserStyle_Initialize()
|
||||
@@ -306,35 +288,11 @@ function AtlasLoot_CraftingLink_OnClick()
|
||||
UIDropDownMenu_SetSelectedID(AtlasLoot_CraftingLink, thisID);
|
||||
AtlasLoot.db.profile.CraftingLink = thisID;
|
||||
if AtlasLootItemsFrame:IsVisible() and AtlasLootItemsFrame.refresh then
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3], AtlasLootItemsFrame.refresh[4]);
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3], AtlasLootItemsFrame.refresh[4], AtlasLootItemsFrame.refresh[5]);
|
||||
end
|
||||
AtlasLoot_OptionsOnShow();
|
||||
end
|
||||
|
||||
-- function AtlasLoot_SelectMythicPlussTier_Initialize()
|
||||
-- local info;
|
||||
|
||||
-- for t = 0, 10, 1 do
|
||||
-- info = {
|
||||
-- text = AL["Mythic Tier "..t];
|
||||
-- func = AtlasLoot_MythicPlussTier_OnClick;
|
||||
-- };
|
||||
-- UIDropDownMenu_AddButton(info);
|
||||
-- end
|
||||
|
||||
-- end
|
||||
|
||||
-- function AtlasLoot_MythicPlussTier_OnClick()
|
||||
-- local thisID = this:GetID();
|
||||
-- UIDropDownMenu_SetSelectedID(AtlasLoot_SelectMythicPlussTier, thisID);
|
||||
-- AtlasLoot.db.profile.MythicPlussTier = thisID;
|
||||
-- if AtlasLootItemsFrame:IsVisible() and AtlasLootItemsFrame.refresh then
|
||||
-- Mythic_Reload();
|
||||
-- AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3], AtlasLootItemsFrame.refresh[4]);
|
||||
-- end
|
||||
-- AtlasLoot_OptionsOnShow();
|
||||
-- end
|
||||
|
||||
local Authors = {
|
||||
["Calî"] = "Arthas",
|
||||
["Lâg"] = "Arthas",
|
||||
@@ -347,9 +305,9 @@ function AtlasLoot_UnitTarget()
|
||||
local name = GameTooltip:GetUnit()
|
||||
if UnitName("mouseover") == name then
|
||||
local _, realm = UnitName("mouseover")
|
||||
if not realm then
|
||||
if not realm then
|
||||
realm = GetRealmName()
|
||||
end;
|
||||
end;
|
||||
if name and Authors[name] then
|
||||
if Authors[name] == realm then
|
||||
GameTooltip:AddLine("AtlasLoot Author |TInterface\\AddOns\\AtlasLoot\\Images\\gold:0|t", 0, 1, 0 )
|
||||
|
||||
+20
-18
@@ -676,29 +676,31 @@ local function DoSearch(searchText)
|
||||
local difficulty = TermsContainDifficulty(searchTerms);
|
||||
|
||||
for dataID, data in pairs(AtlasLoot_Data) do
|
||||
for _, v in ipairs(data) do
|
||||
local _, itemId, itemType, atlasName = unpack(v)
|
||||
for _, datatable in pairs(data) do
|
||||
for _, v in ipairs(datatable) do
|
||||
local _, itemId, itemType, atlasName = unpack(v)
|
||||
|
||||
if type(itemId) == "number" and itemId > 0 then
|
||||
if difficulty ~= 2 then
|
||||
itemId = AL_FindId(itemId, difficulty) or itemId;
|
||||
end
|
||||
if type(itemId) == "number" and itemId > 0 then
|
||||
if difficulty ~= 2 then
|
||||
itemId = AL_FindId(itemId, difficulty) or itemId;
|
||||
end
|
||||
|
||||
local itemDetails = {GetItemDetails(itemId, atlasName)};
|
||||
itemDetails[8] = difficulty;
|
||||
local itemDetails = {GetItemDetails(itemId, atlasName)};
|
||||
itemDetails[8] = difficulty;
|
||||
|
||||
if #searchTerms == 1 and searchTerms[1].name then
|
||||
if nameMatches(atlasName, searchTerms[1].name) then
|
||||
if #searchTerms == 1 and searchTerms[1].name then
|
||||
if nameMatches(atlasName, searchTerms[1].name) then
|
||||
AddItemToSearchResult(itemId, itemType, atlasName, dataID);
|
||||
end
|
||||
elseif ItemMatchesAllTerms(searchTerms, itemDetails) then
|
||||
AddItemToSearchResult(itemId, itemType, atlasName, dataID);
|
||||
end
|
||||
elseif ItemMatchesAllTerms(searchTerms, itemDetails) then
|
||||
AddItemToSearchResult(itemId, itemType, atlasName, dataID);
|
||||
end
|
||||
elseif not equipableFilterOn and itemId and itemId ~= "" and string.sub(itemId, 1, 1) == "s" then
|
||||
local spellName = GetSpellName(itemId, atlasName)
|
||||
if nameMatches(spellName, searchText) then
|
||||
spellName = string.sub(atlasName, 1, 4) .. spellName;
|
||||
AddItemToSearchResult(itemId, itemType, spellName, dataID)
|
||||
elseif not equipableFilterOn and itemId and itemId ~= "" and string.sub(itemId, 1, 1) == "s" then
|
||||
local spellName = GetSpellName(itemId, atlasName)
|
||||
if nameMatches(spellName, searchText) then
|
||||
spellName = string.sub(atlasName, 1, 4) .. spellName;
|
||||
AddItemToSearchResult(itemId, itemType, spellName, dataID)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,47 +33,6 @@ AtlasLoot_Data["AtlasLootFallback"] = {
|
||||
EmptyInstance = {};
|
||||
};
|
||||
|
||||
--[[
|
||||
AtlasLoot_DewDropClick(tablename, text, tabletype):
|
||||
tablename - Name of the loot table in the database
|
||||
text - Heading for the loot table
|
||||
Called when a button in AtlasLoot_Dewdrop is clicked
|
||||
]]
|
||||
function AtlasLoot_DewDropClick(tablename, text, tablenum)
|
||||
ATLASLOOT_FILTER_ENABLE = false;
|
||||
AtlasLootFilterCheck:SetChecked(false);
|
||||
AltasLoot_CurrentTable = tablename;
|
||||
tablename = tablename .. AtlasLoot_Expac;
|
||||
AtlasLootDefaultFrame_Menu:SetText(text);
|
||||
AtlasLoot_IsLootTableAvailable(tablename,AtlasLoot_SubMenus[tablename].Module);
|
||||
AtlasLoot_DewdropSubMenu:Unregister(AtlasLootDefaultFrame_SubMenu);
|
||||
AtlasLoot_DewdropSubMenuRegister(AtlasLoot_SubMenus[tablename]);
|
||||
if AtlasLoot_SubMenus[tablename].AutoLoad then
|
||||
AtlasLoot_DewDropSubMenuClick(AtlasLoot_SubMenus[tablename][1][2])
|
||||
end
|
||||
AtlasLoot_Dewdrop:Close(1);
|
||||
end
|
||||
|
||||
--[[
|
||||
AtlasLoot_DewDropSubMenuClick(tablename, text):
|
||||
tablename - Name of the loot table in the database
|
||||
text - Heading for the loot table
|
||||
Called when a button in AtlasLoot_DewdropSubMenu is clicked
|
||||
]]
|
||||
function AtlasLoot_DewDropSubMenuClick(tablename, text)
|
||||
--Definition of where I want the loot table to be shown
|
||||
pFrame = { "TOPLEFT", "AtlasLootDefaultFrame_LootBackground", "TOPLEFT", "2", "-2" };
|
||||
--Show the select loot table
|
||||
local tablenum = AtlasLoot_Data[tablename].Loadfirst or 1;
|
||||
ItemindexID = ItemindexID or 2;
|
||||
AtlasLoot_ShowItemsFrame(tablename, AtlasLoot_Data, AtlasLoot_Data[tablename][tablenum].Name, pFrame, tablenum);
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(tablename, AtlasLoot_Data, pFrame, tablenum);
|
||||
--Save needed info for fuure re-display of the table
|
||||
AtlasLoot.db.profile.LastBoss = {tablename, AtlasLoot_Data, AtlasLoot_Data[tablename][tablenum].Name, pFrame, tablenum};
|
||||
--Show the table that has been selected
|
||||
AtlasLoot_DewdropSubMenu:Close(1);
|
||||
end
|
||||
|
||||
--[[
|
||||
AtlasLootDefaultFrame_OnShow:
|
||||
Called whenever the loot browser is shown and sets up buttons and loot tables
|
||||
@@ -86,18 +45,23 @@ function AtlasLootDefaultFrame_OnShow()
|
||||
if AtlasFrame then
|
||||
AtlasFrame:Hide();
|
||||
end
|
||||
|
||||
--Remove the selection of a loot table in Atlas
|
||||
AtlasLootItemsFrame.activeBoss = nil;
|
||||
--Set the item table to the loot table
|
||||
AtlasLoot_SetItemInfoFrame(pFrame);
|
||||
--Show the last displayed loot table
|
||||
local lastboss = AtlasLoot.db.profile.LastBoss;
|
||||
if AtlasLoot_IsLootTableAvailable(lastboss[2]) then
|
||||
AtlasLoot_ShowItemsFrame(lastboss[1], lastboss[2], lastboss[3], lastboss[4], lastboss[5]);
|
||||
else
|
||||
AtlasLoot_ShowItemsFrame("EmptyTable", "",AL["Select a Loot Table..."], pFrame);
|
||||
end
|
||||
if lastboss then
|
||||
ATLASLOOT_CURRENTTABLE = lastboss[7];
|
||||
ATLASLOOT_LASTMODULE = lastboss[6];
|
||||
AtlasLoot_IsLootTableAvailable(lastboss[6]);
|
||||
AtlasLoot_ShowItemsFrame(lastboss[1], AtlasLoot_Data, AtlasLoot_Data[lastboss[1]][lastboss[5]].Name, pFrame, lastboss[5]);
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(lastboss[1], AtlasLoot_Data, pFrame, lastboss[5]);
|
||||
AtlasLoot_DewdropSubMenu:Unregister(AtlasLootDefaultFrame_SubMenu);
|
||||
AtlasLoot_DewdropSubMenuRegister(AtlasLoot_SubMenus[lastboss[7]]);
|
||||
else
|
||||
AtlasLoot_ShowItemsFrame("EmptyTable", AtlasLoot_Data, AtlasLoot_Data["EmptyTable"].Name,pFrame,1);
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
@@ -111,13 +75,60 @@ function AtlasLootDefaultFrame_OnHide()
|
||||
AtlasLoot_DewdropExpansionMenu:Close(1);
|
||||
end
|
||||
|
||||
--[[
|
||||
AtlasLoot_DewDropClick(tablename, text, tabletype):
|
||||
tablename - Name of the loot table in the database
|
||||
text - Heading for the loot table
|
||||
Called when a button in AtlasLoot_Dewdrop is clicked
|
||||
]]
|
||||
function AtlasLoot_DewDropClick(tablename, text, tablenum)
|
||||
ATLASLOOT_FILTER_ENABLE = false;
|
||||
AtlasLootFilterCheck:SetChecked(false);
|
||||
tablename = tablename .. AtlasLoot_Expac;
|
||||
ATLASLOOT_CURRENTTABLE = tablename;
|
||||
tablenum = tablenum or 1;
|
||||
ATLASLOOT_LASTMODULE = AtlasLoot_SubMenus[tablename].Module;
|
||||
AtlasLootDefaultFrame_Menu:SetText(text);
|
||||
AtlasLoot_IsLootTableAvailable(AtlasLoot_SubMenus[tablename].Module);
|
||||
AtlasLoot_DewdropSubMenu:Unregister(AtlasLootDefaultFrame_SubMenu);
|
||||
AtlasLoot_DewdropSubMenuRegister(AtlasLoot_SubMenus[tablename]);
|
||||
AtlasLoot_DewDropSubMenuClick(AtlasLoot_SubMenus[tablename][tablenum][2])
|
||||
AtlasLoot_Dewdrop:Close(1);
|
||||
end
|
||||
|
||||
--[[
|
||||
AtlasLoot_DewDropSubMenuClick(tablename, text):
|
||||
tablename - Name of the loot table in the database
|
||||
text - Heading for the loot table
|
||||
Called when a button in AtlasLoot_DewdropSubMenu is clicked
|
||||
]]
|
||||
function AtlasLoot_DewDropSubMenuClick(tablename)
|
||||
--Definition of where I want the loot table to be shown
|
||||
pFrame = { "TOPLEFT", "AtlasLootDefaultFrame_LootBackground", "TOPLEFT", "2", "-2" };
|
||||
--Show the select loot table
|
||||
local tablenum = AtlasLoot_Data[tablename].Loadfirst or 1;
|
||||
ItemindexID = ItemindexID or 2;
|
||||
AtlasLoot_ShowItemsFrame(tablename, AtlasLoot_Data, AtlasLoot_Data[tablename][tablenum].Name, pFrame, tablenum);
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(tablename, AtlasLoot_Data, pFrame, tablenum);
|
||||
--Save needed info for fuure re-display of the table
|
||||
-- AtlasLoot.db.profile.LastBoss = {tablename, AtlasLoot_Data, AtlasLoot_Data[tablename][tablenum].Name, pFrame, tablenum, ATLASLOOT_LASTMODULE, ATLASLOOT_CURRENTTABLE};
|
||||
--Show the table that has been selected
|
||||
AtlasLoot_DewdropSubMenu:Close(1);
|
||||
end
|
||||
|
||||
--[[
|
||||
AtlasLoot_DewdropExpansionMenuClick(expansion, name):
|
||||
tablename - Name of the loot table in the database
|
||||
text - Heading for the loot table
|
||||
Called when a button in AtlasLoot_DewdropSubMenu is clicked
|
||||
]]
|
||||
function AtlasLoot_DewdropExpansionMenuClick(expansion, name)
|
||||
AtlasLootDefaultFrame_ExpansionMenu:SetText(name);
|
||||
AtlasLoot_DewdropExpansionMenu:Close(1);
|
||||
AtlasLoot_Expac = expansion;
|
||||
if AltasLoot_CurrentTable then
|
||||
local tablename = AltasLoot_CurrentTable .. AtlasLoot_Expac;
|
||||
AtlasLoot_IsLootTableAvailable(tablename,AtlasLoot_SubMenus[tablename].Module);
|
||||
if ATLASLOOT_CURRENTTABLE then
|
||||
local tablename = AtlasLoot_CleandataID(ATLASLOOT_CURRENTTABLE, 1) .. AtlasLoot_Expac;
|
||||
AtlasLoot_IsLootTableAvailable(AtlasLoot_SubMenus[tablename].Module);
|
||||
AtlasLoot_DewdropSubMenu:Unregister(AtlasLootDefaultFrame_SubMenu);
|
||||
AtlasLoot_DewdropSubMenuRegister(AtlasLoot_SubMenus[tablename]);
|
||||
end
|
||||
@@ -188,6 +199,7 @@ function AtlasLoot_DewdropSubMenuRegister(loottable)
|
||||
'func', AtlasLoot_DewDropSubMenuClick,
|
||||
'arg1', v[2],
|
||||
'arg2', v[1],
|
||||
'arg2', v[3],
|
||||
'notCheckable', true
|
||||
)
|
||||
else
|
||||
@@ -228,18 +240,18 @@ function AtlasLoot_DewdropRegister()
|
||||
if AtlasLoot_Modules then
|
||||
for k,v in ipairs(AtlasLoot_Modules) do
|
||||
--If a link to show a submenu
|
||||
local checked = false;
|
||||
AtlasLoot_Dewdrop:AddLine(
|
||||
'text', v[1],
|
||||
'textR', 1,
|
||||
'textG', 0.82,
|
||||
'textB', 0,
|
||||
'func', AtlasLoot_DewDropClick,
|
||||
'arg1', v[2],
|
||||
'arg2', v[1],
|
||||
'arg3', k,
|
||||
'notCheckable', true
|
||||
)
|
||||
local checked = false;
|
||||
AtlasLoot_Dewdrop:AddLine(
|
||||
'text', v[1],
|
||||
'textR', 1,
|
||||
'textG', 0.82,
|
||||
'textB', 0,
|
||||
'func', AtlasLoot_DewDropClick,
|
||||
'arg1', v[2],
|
||||
'arg2', v[1],
|
||||
'arg3', v[3],
|
||||
'notCheckable', true
|
||||
)
|
||||
end
|
||||
end
|
||||
--Close button
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
|
||||
|
||||
--Main AtlasLoot Frame
|
||||
local mainframe = CreateFrame("FRAME", "AtlasLootDefaultFrame", UIParent, nil);
|
||||
mainframe:SetPoint("CENTER",0,0);
|
||||
mainframe:SetSize(880,690);
|
||||
mainframe:EnableMouse(true);
|
||||
mainframe:SetMovable(1);
|
||||
mainframe:SetFrameStrata("HIGH");
|
||||
mainframe:SetBackdropColor(0.75,0,0,0.75);
|
||||
mainframe:RegisterForDrag("LeftButton");
|
||||
mainframe:SetMovable(true);
|
||||
@@ -20,7 +21,6 @@ local mainframe = CreateFrame("FRAME", "AtlasLootDefaultFrame", UIParent, nil);
|
||||
titleSize = 32,
|
||||
});
|
||||
mainframe:SetScript("OnShow", function()
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
getglobal("AtlasLootDefaultFrame_Notice"):SetText(AL["This is a loot browser only. To view maps as well, install either Atlas or Alphamap."]);
|
||||
AtlasLootDefaultFrame_OnShow();
|
||||
end);
|
||||
@@ -71,7 +71,7 @@ local optionsbtn = CreateFrame("Button", "AtlasLootDefaultFrame_Options", AtlasL
|
||||
|
||||
--Moduel Menu Button
|
||||
local menubtn = CreateFrame("Button", "AtlasLootDefaultFrame_Menu", AtlasLootDefaultFrame, "OptionsButtonTemplate");
|
||||
menubtn:SetSize(179,25);
|
||||
menubtn:SetSize(174,25);
|
||||
menubtn:SetPoint("TOPLEFT", AtlasLootDefaultFrame, "TOPLEFT",38,-55);
|
||||
menubtn.Lable = menubtn:CreateFontString("AtlasLootDefaultFrame_SelectedCategory", "OVERLAY","GameFontNormal")
|
||||
menubtn.Lable:SetPoint("TOP",menubtn,"BOTTOM",0,37);
|
||||
@@ -91,8 +91,8 @@ local menubtn = CreateFrame("Button", "AtlasLootDefaultFrame_Menu", AtlasLootDef
|
||||
|
||||
--SubMenu Button
|
||||
local submenubtn = CreateFrame("Button", "AtlasLootDefaultFrame_SubMenu", AtlasLootDefaultFrame, "OptionsButtonTemplate");
|
||||
submenubtn:SetSize(179,25);
|
||||
submenubtn:SetPoint("LEFT", "AtlasLootDefaultFrame_Menu", "RIGHT",5,0);
|
||||
submenubtn:SetSize(200,25);
|
||||
submenubtn:SetPoint("LEFT", "AtlasLootDefaultFrame_Menu", "RIGHT",0,0);
|
||||
submenubtn.Lable = submenubtn:CreateFontString("AtlasLootDefaultFrame_SelectedTable", "OVERLAY","GameFontNormal")
|
||||
submenubtn.Lable:SetPoint("TOP",submenubtn,"BOTTOM",0,37);
|
||||
submenubtn.Lable:SetText("Select Subcategory");
|
||||
@@ -111,8 +111,8 @@ local submenubtn = CreateFrame("Button", "AtlasLootDefaultFrame_SubMenu", AtlasL
|
||||
|
||||
--Expansion Menu Button
|
||||
local expansionmenubtn = CreateFrame("Button", "AtlasLootDefaultFrame_ExpansionMenu", AtlasLootDefaultFrame, "OptionsButtonTemplate");
|
||||
expansionmenubtn:SetSize(179,25);
|
||||
expansionmenubtn:SetPoint("LEFT", "AtlasLootDefaultFrame_SubMenu", "RIGHT",5,0);
|
||||
expansionmenubtn:SetSize(174,25);
|
||||
expansionmenubtn:SetPoint("LEFT", "AtlasLootDefaultFrame_SubMenu", "RIGHT",0,0);
|
||||
expansionmenubtn:SetText(AtlasLoot_ExpansionMenu[GetAccountExpansionLevel()+1][1]);
|
||||
expansionmenubtn.Lable = expansionmenubtn:CreateFontString("AtlasLootDefaultFrame_SelectedTable2", "OVERLAY","GameFontNormal")
|
||||
expansionmenubtn.Lable:SetPoint("TOP",expansionmenubtn,"BOTTOM",0,37);
|
||||
@@ -145,7 +145,6 @@ local wishbtn = CreateFrame("Button", "AtlasLootDefaultFrameWishListButton", Atl
|
||||
wishbtn:SetSize(105,20);
|
||||
wishbtn:SetScript("OnClick", function(self)AtlasLoot_ShowWishListDropDown("","","","","",self,true) end);
|
||||
wishbtn:SetScript("OnShow", function(self)
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
self:SetText(AL["Wishlist"]);
|
||||
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
|
||||
end);
|
||||
@@ -167,14 +166,15 @@ local function presetcreate(preset,num)
|
||||
end
|
||||
end);
|
||||
preset:SetScript("OnClick", function()
|
||||
if AtlasLoot_IsLootTableAvailable(AtlasLootCharDB["QuickLooks"][num][1]) then
|
||||
if AtlasLoot_IsLootTableAvailable(AtlasLootCharDB["QuickLooks"][num][6]) then
|
||||
pFrame = { "TOPLEFT", "AtlasLootDefaultFrame_LootBackground", "TOPLEFT", "2", "-2" };
|
||||
ATLASLOOT_LASTMODULE = AtlasLootCharDB["QuickLooks"][num][6];
|
||||
ATLASLOOT_CURRENTTABLE = AtlasLootCharDB["QuickLooks"][num][7];
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(AtlasLootCharDB["QuickLooks"][num][1], AtlasLootCharDB["QuickLooks"][num][2], pFrame, AtlasLootCharDB["QuickLooks"][num][5])
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootCharDB["QuickLooks"][num][1], AtlasLootCharDB["QuickLooks"][num][2], AtlasLootCharDB["QuickLooks"][num][3], pFrame, AtlasLootCharDB["QuickLooks"][num][5]);
|
||||
end
|
||||
end);
|
||||
preset:SetScript("OnShow", function(self)
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
self:SetText(AL["QuickLook"].." "..num);
|
||||
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
|
||||
if ((not AtlasLootCharDB["QuickLooks"][num]) or (not AtlasLootCharDB["QuickLooks"][num][1])) or (AtlasLootCharDB["QuickLooks"][num][1]==nil) then
|
||||
@@ -218,7 +218,6 @@ local searchbtn = CreateFrame("Button","AtlasLootDefaultFrameSearchButton",Atlas
|
||||
searchbtn:SetSize(69,32);
|
||||
searchbtn:SetPoint("LEFT","AtlasLootDefaultFrameSearchBox","RIGHT",2,0);
|
||||
searchbtn:SetScript("OnShow", function(self)
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
self:SetText(AL["Search"]);
|
||||
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
|
||||
end);
|
||||
@@ -243,7 +242,6 @@ local searchclear = CreateFrame("Button","AtlasLootDefaultFrameSearchClearButton
|
||||
searchclear:SetSize(58,32);
|
||||
searchclear:SetPoint("LEFT",AtlasLootDefaultFrameSearchOptionsButton,"RIGHT",-2,0);
|
||||
searchclear:SetScript("OnShow", function(self)
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
self:SetText(AL["Clear"]);
|
||||
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
|
||||
end);
|
||||
@@ -256,8 +254,7 @@ local searchclear = CreateFrame("Button","AtlasLootDefaultFrameSearchClearButton
|
||||
local lastresult = CreateFrame("Button","AtlasLootDefaultFrameLastResultButton",AtlasLootDefaultFrameSearchBox,"UIPanelButtonTemplate2");
|
||||
lastresult:SetSize(100,32);
|
||||
lastresult:SetPoint("LEFT",AtlasLootDefaultFrameSearchClearButton,"RIGHT",1,0);
|
||||
lastresult:SetScript("OnShow", function(self)
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
lastresult:SetScript("OnShow", function(self)
|
||||
self:SetText(AL["Last Result"]);
|
||||
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
|
||||
end);
|
||||
@@ -267,8 +264,7 @@ local lastresult = CreateFrame("Button","AtlasLootDefaultFrameLastResultButton",
|
||||
local advSearch = CreateFrame("Button","AtlasLootDefaultFrameAdvancedSearchButton", AtlasLootDefaultFrame,"UIPanelButtonTemplate2");
|
||||
advSearch:SetSize(95,32);
|
||||
advSearch:SetPoint("LEFT",AtlasLootDefaultFrameLastResultButton,"RIGHT",2);
|
||||
advSearch:SetScript("OnShow", function(self)
|
||||
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
|
||||
advSearch:SetScript("OnShow", function(self)
|
||||
self:SetText("Advanced");
|
||||
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
|
||||
end)
|
||||
@@ -346,7 +342,7 @@ local rows = setmetatable({}, { __index = function(t, i)
|
||||
row:SetCheckedTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD");
|
||||
row:SetScript("OnClick", function()
|
||||
ItemindexID = row.itemIndex;
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refreshOri[1], AtlasLootItemsFrame.refreshOri[2], AtlasLootItemsFrame.refreshOri[3], AtlasLootItemsFrame.refreshOri[4], AtlasLootItemsFrame.refreshOri[5]);
|
||||
AtlasLoot_ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3], AtlasLootItemsFrame.refresh[4], AtlasLootItemsFrame.refresh[5]);
|
||||
AtlasLootDefaultFrame_ScrollFrameUpdate();
|
||||
end)
|
||||
if i == 1 then
|
||||
@@ -372,7 +368,7 @@ local subtableFrame = CreateFrame("Frame", "Atlasloot_SubTableFrame", AtlasLootD
|
||||
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
|
||||
insets = { left = 4, right = 4, top = 4, bottom = 4 },
|
||||
});
|
||||
|
||||
|
||||
function AtlasLootDefaultFrame_SubTableScrollFrameUpdate(tablename, dataSource, pFrame, currenttablenum)
|
||||
if dataSource ~= nil then
|
||||
local maxValue = AtlasLoot_GetNumOfRows(dataSource[tablename]);
|
||||
@@ -408,13 +404,13 @@ local scrollSlider2 = CreateFrame("ScrollFrame","AtlasLootDefaultFrameSubTableSc
|
||||
self.offset = math.floor(offset / ROW_HEIGHT + 0.5)
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(subtableFrame.tablename);
|
||||
end)
|
||||
|
||||
|
||||
scrollSlider2:SetScript("OnShow", function()
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(subtableFrame.tablename);
|
||||
end)
|
||||
|
||||
|
||||
subtableFrame.scrollBar = scrollSlider2
|
||||
|
||||
|
||||
local rows2 = setmetatable({}, { __index = function(t, i)
|
||||
local row = CreateFrame("CheckButton", "$parentRow"..i, subtableFrame)
|
||||
row:SetSize(150, ROW_HEIGHT)
|
||||
@@ -423,7 +419,6 @@ local rows2 = setmetatable({}, { __index = function(t, i)
|
||||
row:SetScript("OnClick", function()
|
||||
AtlasLootDefaultFrame_SubTableScrollFrameUpdate(row.tablename, row.dataSource, row.pFrame, row.tablenum);
|
||||
AtlasLoot_ShowItemsFrame(row.tablename, row.dataSource, row.dataSource[row.tablename][row.tablenum].Name, row.pFrame, row.tablenum);
|
||||
AtlasLoot.db.profile.LastBoss = {row.tablename, row.dataSource, row.dataSource[row.tablename][row.tablenum].Name, row.pFrame, row.tablenum};
|
||||
end)
|
||||
if i == 1 then
|
||||
row:SetPoint("TOPLEFT", subtableFrame, 8, -8)
|
||||
@@ -434,5 +429,5 @@ local rows2 = setmetatable({}, { __index = function(t, i)
|
||||
rawset(t, i, row)
|
||||
return row
|
||||
end })
|
||||
|
||||
|
||||
subtableFrame.rows = rows2
|
||||
|
||||
@@ -0,0 +1,473 @@
|
||||
--- **AceTimer-3.0** provides a central facility for registering timers.
|
||||
-- AceTimer supports one-shot timers and repeating timers. All timers are stored in an efficient
|
||||
-- data structure that allows easy dispatching and fast rescheduling. Timers can be registered, rescheduled
|
||||
-- or canceled at any time, even from within a running timer, without conflict or large overhead.\\
|
||||
-- AceTimer is currently limited to firing timers at a frequency of 0.1s. This constant may change
|
||||
-- in the future, but for now it seemed like a good compromise in efficiency and accuracy.
|
||||
--
|
||||
-- All `:Schedule` functions will return a handle to the current timer, which you will need to store if you
|
||||
-- need to cancel or reschedule the timer you just registered.
|
||||
--
|
||||
-- **AceTimer-3.0** can be embeded into your addon, either explicitly by calling AceTimer:Embed(MyAddon) or by
|
||||
-- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object
|
||||
-- and can be accessed directly, without having to explicitly call AceTimer itself.\\
|
||||
-- It is recommended to embed AceTimer, otherwise you'll have to specify a custom `self` on all calls you
|
||||
-- make into AceTimer.
|
||||
-- @class file
|
||||
-- @name AceTimer-3.0
|
||||
-- @release $Id: AceTimer-3.0.lua 895 2009-12-06 16:28:55Z nevcairiel $
|
||||
|
||||
--[[
|
||||
Basic assumptions:
|
||||
* In a typical system, we do more re-scheduling per second than there are timer pulses per second
|
||||
* Regardless of timer implementation, we cannot guarantee timely delivery due to FPS restriction (may be as low as 10)
|
||||
|
||||
This implementation:
|
||||
CON: The smallest timer interval is constrained by HZ (currently 1/10s).
|
||||
PRO: It will still correctly fire any timer slower than HZ over a length of time, e.g. 0.11s interval -> 90 times over 10 seconds
|
||||
PRO: In lag bursts, the system simly skips missed timer intervals to decrease load
|
||||
CON: Algorithms depending on a timer firing "N times per minute" will fail
|
||||
PRO: (Re-)scheduling is O(1) with a VERY small constant. It's a simple linked list insertion in a hash bucket.
|
||||
CAUTION: The BUCKETS constant constrains how many timers can be efficiently handled. With too many hash collisions, performance will decrease.
|
||||
|
||||
Major assumptions upheld:
|
||||
- ALLOWS scheduling multiple timers with the same funcref/method
|
||||
- ALLOWS scheduling more timers during OnUpdate processing
|
||||
- ALLOWS unscheduling ANY timer (including the current running one) at any time, including during OnUpdate processing
|
||||
]]
|
||||
|
||||
local MAJOR, MINOR = "AceTimer-3.0", 5
|
||||
local AceTimer, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
|
||||
|
||||
if not AceTimer then return end -- No upgrade needed
|
||||
|
||||
AceTimer.hash = AceTimer.hash or {} -- Array of [0..BUCKET-1] = linked list of timers (using .next member)
|
||||
-- Linked list gets around ACE-88 and ACE-90.
|
||||
AceTimer.selfs = AceTimer.selfs or {} -- Array of [self]={[handle]=timerobj, [handle2]=timerobj2, ...}
|
||||
AceTimer.frame = AceTimer.frame or CreateFrame("Frame", "AceTimer30Frame")
|
||||
|
||||
-- Lua APIs
|
||||
local assert, error, loadstring = assert, error, loadstring
|
||||
local setmetatable, rawset, rawget = setmetatable, rawset, rawget
|
||||
local select, pairs, type, next, tostring = select, pairs, type, next, tostring
|
||||
local floor, max, min = math.floor, math.max, math.min
|
||||
local tconcat = table.concat
|
||||
|
||||
-- WoW APIs
|
||||
local GetTime = GetTime
|
||||
|
||||
-- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
|
||||
-- List them here for Mikk's FindGlobals script
|
||||
-- GLOBALS: DEFAULT_CHAT_FRAME, geterrorhandler
|
||||
|
||||
-- Simple ONE-SHOT timer cache. Much more efficient than a full compost for our purposes.
|
||||
local timerCache = nil
|
||||
|
||||
--[[
|
||||
Timers will not be fired more often than HZ-1 times per second.
|
||||
Keep at intended speed PLUS ONE or we get bitten by floating point rounding errors (n.5 + 0.1 can be n.599999)
|
||||
If this is ever LOWERED, all existing timers need to be enforced to have a delay >= 1/HZ on lib upgrade.
|
||||
If this number is ever changed, all entries need to be rehashed on lib upgrade.
|
||||
]]
|
||||
local HZ = 11
|
||||
|
||||
--[[
|
||||
Prime for good distribution
|
||||
If this number is ever changed, all entries need to be rehashed on lib upgrade.
|
||||
]]
|
||||
local BUCKETS = 131
|
||||
|
||||
local hash = AceTimer.hash
|
||||
for i=1,BUCKETS do
|
||||
hash[i] = hash[i] or false -- make it an integer-indexed array; it's faster than hashes
|
||||
end
|
||||
|
||||
--[[
|
||||
xpcall safecall implementation
|
||||
]]
|
||||
local xpcall = xpcall
|
||||
|
||||
local function errorhandler(err)
|
||||
return geterrorhandler()(err)
|
||||
end
|
||||
|
||||
local function CreateDispatcher(argCount)
|
||||
local code = [[
|
||||
local xpcall, eh = ... -- our arguments are received as unnamed values in "..." since we don't have a proper function declaration
|
||||
local method, ARGS
|
||||
local function call() return method(ARGS) end
|
||||
|
||||
local function dispatch(func, ...)
|
||||
method = func
|
||||
if not method then return end
|
||||
ARGS = ...
|
||||
return xpcall(call, eh)
|
||||
end
|
||||
|
||||
return dispatch
|
||||
]]
|
||||
|
||||
local ARGS = {}
|
||||
for i = 1, argCount do ARGS[i] = "arg"..i end
|
||||
code = code:gsub("ARGS", tconcat(ARGS, ", "))
|
||||
return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler)
|
||||
end
|
||||
|
||||
local Dispatchers = setmetatable({}, {
|
||||
__index=function(self, argCount)
|
||||
local dispatcher = CreateDispatcher(argCount)
|
||||
rawset(self, argCount, dispatcher)
|
||||
return dispatcher
|
||||
end
|
||||
})
|
||||
Dispatchers[0] = function(func)
|
||||
return xpcall(func, errorhandler)
|
||||
end
|
||||
|
||||
local function safecall(func, ...)
|
||||
return Dispatchers[select('#', ...)](func, ...)
|
||||
end
|
||||
|
||||
local lastint = floor(GetTime() * HZ)
|
||||
|
||||
-- --------------------------------------------------------------------
|
||||
-- OnUpdate handler
|
||||
--
|
||||
-- traverse buckets, always chasing "now", and fire timers that have expired
|
||||
|
||||
local function OnUpdate()
|
||||
local now = GetTime()
|
||||
local nowint = floor(now * HZ)
|
||||
|
||||
-- Have we passed into a new hash bucket?
|
||||
if nowint == lastint then return end
|
||||
|
||||
local soon = now + 1 -- +1 is safe as long as 1 < HZ < BUCKETS/2
|
||||
|
||||
-- Pass through each bucket at most once
|
||||
-- Happens on e.g. instance loads, but COULD happen on high local load situations also
|
||||
for curint = (max(lastint, nowint - BUCKETS) + 1), nowint do -- loop until we catch up with "now", usually only 1 iteration
|
||||
local curbucket = (curint % BUCKETS)+1
|
||||
-- Yank the list of timers out of the bucket and empty it. This allows reinsertion in the currently-processed bucket from callbacks.
|
||||
local nexttimer = hash[curbucket]
|
||||
hash[curbucket] = false -- false rather than nil to prevent the array from becoming a hash
|
||||
|
||||
while nexttimer do
|
||||
local timer = nexttimer
|
||||
nexttimer = timer.next
|
||||
local when = timer.when
|
||||
|
||||
if when < soon then
|
||||
-- Call the timer func, either as a method on given object, or a straight function ref
|
||||
local callback = timer.callback
|
||||
if type(callback) == "string" then
|
||||
safecall(timer.object[callback], timer.object, timer.arg)
|
||||
elseif callback then
|
||||
safecall(callback, timer.arg)
|
||||
else
|
||||
-- probably nilled out by CancelTimer
|
||||
timer.delay = nil -- don't reschedule it
|
||||
end
|
||||
|
||||
local delay = timer.delay -- NOW make a local copy, can't do it earlier in case the timer cancelled itself in the callback
|
||||
|
||||
if not delay then
|
||||
-- single-shot timer (or cancelled)
|
||||
AceTimer.selfs[timer.object][tostring(timer)] = nil
|
||||
timerCache = timer
|
||||
else
|
||||
-- repeating timer
|
||||
local newtime = when + delay
|
||||
if newtime < now then -- Keep lag from making us firing a timer unnecessarily. (Note that this still won't catch too-short-delay timers though.)
|
||||
newtime = now + delay
|
||||
end
|
||||
timer.when = newtime
|
||||
|
||||
-- add next timer execution to the correct bucket
|
||||
local bucket = (floor(newtime * HZ) % BUCKETS) + 1
|
||||
timer.next = hash[bucket]
|
||||
hash[bucket] = timer
|
||||
end
|
||||
else -- if when>=soon
|
||||
-- reinsert (yeah, somewhat expensive, but shouldn't be happening too often either due to hash distribution)
|
||||
timer.next = hash[curbucket]
|
||||
hash[curbucket] = timer
|
||||
end -- if when<soon ... else
|
||||
end -- while nexttimer do
|
||||
end -- for curint=lastint,nowint
|
||||
|
||||
lastint = nowint
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Reg( callback, delay, arg, repeating )
|
||||
--
|
||||
-- callback( function or string ) - direct function ref or method name in our object for the callback
|
||||
-- delay(int) - delay for the timer
|
||||
-- arg(variant) - any argument to be passed to the callback function
|
||||
-- repeating(boolean) - repeating timer, or oneshot
|
||||
--
|
||||
-- returns the handle of the timer for later processing (canceling etc)
|
||||
local function Reg(self, callback, delay, arg, repeating)
|
||||
if type(callback) ~= "string" and type(callback) ~= "function" then
|
||||
local error_origin = repeating and "ScheduleRepeatingTimer" or "ScheduleTimer"
|
||||
error(MAJOR..": " .. error_origin .. "(callback, delay, arg): 'callback' - function or method name expected.", 3)
|
||||
end
|
||||
if type(callback) == "string" then
|
||||
if type(self)~="table" then
|
||||
local error_origin = repeating and "ScheduleRepeatingTimer" or "ScheduleTimer"
|
||||
error(MAJOR..": " .. error_origin .. "(\"methodName\", delay, arg): 'self' - must be a table.", 3)
|
||||
end
|
||||
if type(self[callback]) ~= "function" then
|
||||
local error_origin = repeating and "ScheduleRepeatingTimer" or "ScheduleTimer"
|
||||
error(MAJOR..": " .. error_origin .. "(\"methodName\", delay, arg): 'methodName' - method not found on target object.", 3)
|
||||
end
|
||||
end
|
||||
|
||||
if delay < (1 / (HZ - 1)) then
|
||||
delay = 1 / (HZ - 1)
|
||||
end
|
||||
|
||||
-- Create and stuff timer in the correct hash bucket
|
||||
local now = GetTime()
|
||||
|
||||
local timer = timerCache or {} -- Get new timer object (from cache if available)
|
||||
timerCache = nil
|
||||
|
||||
timer.object = self
|
||||
timer.callback = callback
|
||||
timer.delay = (repeating and delay)
|
||||
timer.arg = arg
|
||||
timer.when = now + delay
|
||||
|
||||
local bucket = (floor((now+delay)*HZ) % BUCKETS) + 1
|
||||
timer.next = hash[bucket]
|
||||
hash[bucket] = timer
|
||||
|
||||
-- Insert timer in our self->handle->timer registry
|
||||
local handle = tostring(timer)
|
||||
|
||||
local selftimers = AceTimer.selfs[self]
|
||||
if not selftimers then
|
||||
selftimers = {}
|
||||
AceTimer.selfs[self] = selftimers
|
||||
end
|
||||
selftimers[handle] = timer
|
||||
selftimers.__ops = (selftimers.__ops or 0) + 1
|
||||
|
||||
return handle
|
||||
end
|
||||
|
||||
--- Schedule a new one-shot timer.
|
||||
-- The timer will fire once in `delay` seconds, unless canceled before.
|
||||
-- @param callback Callback function for the timer pulse (funcref or method name).
|
||||
-- @param delay Delay for the timer, in seconds.
|
||||
-- @param arg An optional argument to be passed to the callback function.
|
||||
-- @usage
|
||||
-- MyAddon = LibStub("AceAddon-3.0"):NewAddon("TimerTest", "AceTimer-3.0")
|
||||
--
|
||||
-- function MyAddon:OnEnable()
|
||||
-- self:ScheduleTimer("TimerFeedback", 5)
|
||||
-- end
|
||||
--
|
||||
-- function MyAddon:TimerFeedback()
|
||||
-- print("5 seconds passed")
|
||||
-- end
|
||||
function AceTimer:ScheduleTimer(callback, delay, arg)
|
||||
return Reg(self, callback, delay, arg)
|
||||
end
|
||||
|
||||
--- Schedule a repeating timer.
|
||||
-- The timer will fire every `delay` seconds, until canceled.
|
||||
-- @param callback Callback function for the timer pulse (funcref or method name).
|
||||
-- @param delay Delay for the timer, in seconds.
|
||||
-- @param arg An optional argument to be passed to the callback function.
|
||||
-- @usage
|
||||
-- MyAddon = LibStub("AceAddon-3.0"):NewAddon("TimerTest", "AceTimer-3.0")
|
||||
--
|
||||
-- function MyAddon:OnEnable()
|
||||
-- self.timerCount = 0
|
||||
-- self.testTimer = self:ScheduleRepeatingTimer("TimerFeedback", 5)
|
||||
-- end
|
||||
--
|
||||
-- function MyAddon:TimerFeedback()
|
||||
-- self.timerCount = self.timerCount + 1
|
||||
-- print(("%d seconds passed"):format(5 * self.timerCount))
|
||||
-- -- run 30 seconds in total
|
||||
-- if self.timerCount == 6 then
|
||||
-- self:CancelTimer(self.testTimer)
|
||||
-- end
|
||||
-- end
|
||||
function AceTimer:ScheduleRepeatingTimer(callback, delay, arg)
|
||||
return Reg(self, callback, delay, arg, true)
|
||||
end
|
||||
|
||||
--- Cancels a timer with the given handle, registered by the same addon object as used for `:ScheduleTimer`
|
||||
-- Both one-shot and repeating timers can be canceled with this function, as long as the `handle` is valid
|
||||
-- and the timer has not fired yet or was canceled before.
|
||||
-- @param handle The handle of the timer, as returned by `:ScheduleTimer` or `:ScheduleRepeatingTimer`
|
||||
-- @param silent If true, no error is raised if the timer handle is invalid (expired or already canceled)
|
||||
-- @return True if the timer was successfully cancelled.
|
||||
function AceTimer:CancelTimer(handle, silent)
|
||||
if not handle then return end -- nil handle -> bail out without erroring
|
||||
if type(handle) ~= "string" then
|
||||
error(MAJOR..": CancelTimer(handle): 'handle' - expected a string", 2) -- for now, anyway
|
||||
end
|
||||
local selftimers = AceTimer.selfs[self]
|
||||
local timer = selftimers and selftimers[handle]
|
||||
if silent then
|
||||
if timer then
|
||||
timer.callback = nil -- don't run it again
|
||||
timer.delay = nil -- if this is the currently-executing one: don't even reschedule
|
||||
-- The timer object is removed in the OnUpdate loop
|
||||
end
|
||||
return not not timer -- might return "true" even if we double-cancel. we'll live.
|
||||
else
|
||||
if not timer then
|
||||
geterrorhandler()(MAJOR..": CancelTimer(handle[, silent]): '"..tostring(handle).."' - no such timer registered")
|
||||
return false
|
||||
end
|
||||
if not timer.callback then
|
||||
geterrorhandler()(MAJOR..": CancelTimer(handle[, silent]): '"..tostring(handle).."' - timer already cancelled or expired")
|
||||
return false
|
||||
end
|
||||
timer.callback = nil -- don't run it again
|
||||
timer.delay = nil -- if this is the currently-executing one: don't even reschedule
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
--- Cancels all timers registered to the current addon object ('self')
|
||||
function AceTimer:CancelAllTimers()
|
||||
if not(type(self) == "string" or type(self) == "table") then
|
||||
error(MAJOR..": CancelAllTimers(): 'self' - must be a string or a table",2)
|
||||
end
|
||||
if self == AceTimer then
|
||||
error(MAJOR..": CancelAllTimers(): supply a meaningful 'self'", 2)
|
||||
end
|
||||
|
||||
local selftimers = AceTimer.selfs[self]
|
||||
if selftimers then
|
||||
for handle,v in pairs(selftimers) do
|
||||
if type(v) == "table" then -- avoid __ops, etc
|
||||
AceTimer.CancelTimer(self, handle, true)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Returns the time left for a timer with the given handle, registered by the current addon object ('self').
|
||||
-- This function will raise a warning when the handle is invalid, but not stop execution.
|
||||
-- @param handle The handle of the timer, as returned by `:ScheduleTimer` or `:ScheduleRepeatingTimer`
|
||||
-- @return The time left on the timer, or false if the handle is invalid.
|
||||
function AceTimer:TimeLeft(handle)
|
||||
if not handle then return end
|
||||
if type(handle) ~= "string" then
|
||||
error(MAJOR..": TimeLeft(handle): 'handle' - expected a string", 2) -- for now, anyway
|
||||
end
|
||||
local selftimers = AceTimer.selfs[self]
|
||||
local timer = selftimers and selftimers[handle]
|
||||
if not timer then
|
||||
geterrorhandler()(MAJOR..": TimeLeft(handle): '"..tostring(handle).."' - no such timer registered")
|
||||
return false
|
||||
end
|
||||
return timer.when - GetTime()
|
||||
end
|
||||
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- PLAYER_REGEN_ENABLED: Run through our .selfs[] array step by step
|
||||
-- and clean it out - otherwise the table indices can grow indefinitely
|
||||
-- if an addon starts and stops a lot of timers. AceBucket does this!
|
||||
--
|
||||
-- See ACE-94 and tests/AceTimer-3.0-ACE-94.lua
|
||||
|
||||
local lastCleaned = nil
|
||||
|
||||
local function OnEvent(this, event)
|
||||
if event~="PLAYER_REGEN_ENABLED" then
|
||||
return
|
||||
end
|
||||
|
||||
-- Get the next 'self' to process
|
||||
local selfs = AceTimer.selfs
|
||||
local self = next(selfs, lastCleaned)
|
||||
if not self then
|
||||
self = next(selfs)
|
||||
end
|
||||
lastCleaned = self
|
||||
if not self then -- should only happen if .selfs[] is empty
|
||||
return
|
||||
end
|
||||
|
||||
-- Time to clean it out?
|
||||
local list = selfs[self]
|
||||
if (list.__ops or 0) < 250 then -- 250 slosh indices = ~10KB wasted (max!). For one 'self'.
|
||||
return
|
||||
end
|
||||
|
||||
-- Create a new table and copy all members over
|
||||
local newlist = {}
|
||||
local n=0
|
||||
for k,v in pairs(list) do
|
||||
newlist[k] = v
|
||||
n=n+1
|
||||
end
|
||||
newlist.__ops = 0 -- Reset operation count
|
||||
|
||||
-- And since we now have a count of the number of live timers, check that it's reasonable. Emit a warning if not.
|
||||
if n>BUCKETS then
|
||||
DEFAULT_CHAT_FRAME:AddMessage(MAJOR..": Warning: The addon/module '"..tostring(self).."' has "..n.." live timers. Surely that's not intended?")
|
||||
end
|
||||
|
||||
selfs[self] = newlist
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Embed handling
|
||||
|
||||
AceTimer.embeds = AceTimer.embeds or {}
|
||||
|
||||
local mixins = {
|
||||
"ScheduleTimer", "ScheduleRepeatingTimer",
|
||||
"CancelTimer", "CancelAllTimers",
|
||||
"TimeLeft"
|
||||
}
|
||||
|
||||
function AceTimer:Embed(target)
|
||||
AceTimer.embeds[target] = true
|
||||
for _,v in pairs(mixins) do
|
||||
target[v] = AceTimer[v]
|
||||
end
|
||||
return target
|
||||
end
|
||||
|
||||
-- AceTimer:OnEmbedDisable( target )
|
||||
-- target (object) - target object that AceTimer is embedded in.
|
||||
--
|
||||
-- cancel all timers registered for the object
|
||||
function AceTimer:OnEmbedDisable( target )
|
||||
target:CancelAllTimers()
|
||||
end
|
||||
|
||||
|
||||
for addon in pairs(AceTimer.embeds) do
|
||||
AceTimer:Embed(addon)
|
||||
end
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Debug tools (expose copies of internals to test suites)
|
||||
AceTimer.debug = AceTimer.debug or {}
|
||||
AceTimer.debug.HZ = HZ
|
||||
AceTimer.debug.BUCKETS = BUCKETS
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Finishing touchups
|
||||
|
||||
AceTimer.frame:SetScript("OnUpdate", OnUpdate)
|
||||
AceTimer.frame:SetScript("OnEvent", OnEvent)
|
||||
AceTimer.frame:RegisterEvent("PLAYER_REGEN_ENABLED")
|
||||
|
||||
-- In theory, we should hide&show the frame based on there being timers or not.
|
||||
-- However, this job is fairly expensive, and the chance that there will
|
||||
-- actually be zero timers running is diminuitive to say the lest.
|
||||
@@ -0,0 +1,4 @@
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="AceTimer-3.0.lua"/>
|
||||
</Ui>
|
||||
@@ -19,6 +19,8 @@ local AL = AceLocale:NewLocale("AtlasLoot", "enUS", true);
|
||||
--Register translations
|
||||
if AL then
|
||||
|
||||
AL["Druid"] = true;
|
||||
|
||||
-- Text strings for UI objects
|
||||
AL["AtlasLoot"] = true;
|
||||
AL["Select Loot Table"] = true;
|
||||
@@ -96,7 +98,6 @@ if AL then
|
||||
AL["|cff9d9d9dShow Basic Minimap Button|r"] = true;
|
||||
AL["Set Minimap Button Position"] = true;
|
||||
AL["Suppress Item Query Text"] = true;
|
||||
AL["Auto Query items on page load"] = true;
|
||||
AL["Notify on LoD Module Load"] = true;
|
||||
AL["Load Loot Modules at Startup"] = true;
|
||||
AL["Loot Browser Scale: "] = true;
|
||||
@@ -1153,6 +1154,7 @@ if AL then
|
||||
AL["The Defiler's Determination"] = true;
|
||||
AL["The Defiler's Fortitude"] = true;
|
||||
AL["The Defiler's Resolution"] = true;
|
||||
AL["The Defiler's Resolve"] = true;
|
||||
|
||||
-- PvP Level 60 Rare Sets - Alliance
|
||||
AL["Lieutenant Commander's Refuge"] = true;
|
||||
|
||||
@@ -10,10 +10,9 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
{ "", "EngineeringCLASSIC"};
|
||||
{ "", "LeatherworkingCLASSIC"};
|
||||
{ "", "TailoringCLASSIC"};
|
||||
{ "", "Inscription"};
|
||||
{ "", "Mining"};
|
||||
{ "", "MiningCLASSIC"};
|
||||
{ "", "CookingCLASSIC"};
|
||||
{ "", "FirstAid"};
|
||||
{ "", "FirstAidCLASSIC"};
|
||||
{"High Risk:", "", "Header"};
|
||||
{ "", "AlchemyHighRiskCLASSIC"};
|
||||
{ "", "SmithingHighRiskCLASSIC"};
|
||||
@@ -33,10 +32,9 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
{ "", "JewelcraftingTBC"};
|
||||
{ "", "LeatherworkingTBC"};
|
||||
{ "", "TailoringTBC"};
|
||||
{ "", "Inscription"};
|
||||
{ "", "Mining"};
|
||||
{ "", "MiningTBC"};
|
||||
{ "", "CookingTBC"};
|
||||
{ "", "FirstAid"};
|
||||
{ "", "FirstAidTBC"};
|
||||
{"High Risk:", "", "Header"};
|
||||
{ "", "AlchemyHighRiskTBC"};
|
||||
{ "", "SmithingHighRiskTBC"};
|
||||
@@ -58,9 +56,9 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
{ "", "LeatherworkingWRATH"};
|
||||
{ "", "TailoringWRATH"};
|
||||
{ "", "Inscription"};
|
||||
{ "", "Mining"};
|
||||
{ "", "MiningWRATH"};
|
||||
{ "", "CookingWRATH"};
|
||||
{ "", "FirstAid"};
|
||||
{ "", "FirstAidWRATH"};
|
||||
{"High Risk:", "", "Header"};
|
||||
--[[ { "", "AlchemyHighRiskWRATH"};
|
||||
{ "", "SmithingHighRiskWRATH"};
|
||||
|
||||
@@ -107,12 +107,10 @@ local BabbleInventory = AtlasLoot_GetLocaleLibBabble("LibBabble-Inventory-3.0");
|
||||
|
||||
AtlasLoot_SubMenus["WorldBossesMenuCLASSIC"] = {
|
||||
Module = "AtlasLootOriginalWoW";
|
||||
AutoLoad = true;
|
||||
{ "","WorldBossesCLASSIC"};
|
||||
};
|
||||
|
||||
AtlasLoot_SubMenus["WorldBossesMenuTBC"] = {
|
||||
Module = "AtlasLootBurningCrusade";
|
||||
AutoLoad = true;
|
||||
{ "","WorldBossesTBC"};
|
||||
};
|
||||
@@ -13,7 +13,7 @@ local BabbleInventory = AtlasLoot_GetLocaleLibBabble("LibBabble-Inventory-3.0")
|
||||
--This is a multi-layer table defining the main loot listing.
|
||||
--Entries have the text to display, loot table or sub table to link to and if the link is to a loot table or sub table
|
||||
AtlasLoot_Modules = {
|
||||
{AL["Dungeons and Raids"], "Dungeons and Raids "};
|
||||
{AL["Dungeons and Raids"], "Dungeons and Raids ", 2};
|
||||
{AL["Crafting"], "Crafting"};
|
||||
{AL["Sets/Collections"], "Collections"};
|
||||
{AL["PvP Rewards"], "PVP"};
|
||||
@@ -27,7 +27,7 @@ AtlasLoot_SubMenus = {};
|
||||
AtlasLoot_ExpansionMenu = {
|
||||
{ AL["Classic"], "CLASSIC" };
|
||||
{ AL["Burning Crusade"], "TBC" };
|
||||
{ AL["Wrath of the Lich King"], "WRATH" };
|
||||
--{ AL["Wrath of the Lich King"], "WRATH" };
|
||||
};
|
||||
|
||||
AtlasLoot_Data["EmptyTable"] = {
|
||||
|
||||
+42
-144
@@ -3,150 +3,48 @@ local BabbleBoss = AtlasLoot_GetLocaleLibBabble("LibBabble-Boss-3.0")
|
||||
local BabbleInventory = AtlasLoot_GetLocaleLibBabble("LibBabble-Inventory-3.0")
|
||||
local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
|
||||
AtlasLoot_Data["PVPMENUCLASSIC"] = {
|
||||
{ 1, "PvP60Accessories1_A", "inv_jewelry_trinketpvp_01", "=ds="..AL["PvP Accessories"], "=q5="..AL["Level 60"]};
|
||||
{ 2, "PVPSET", "INV_Axe_02", "=ds="..AL["PvP Armor Sets"], "=q5="..AL["Level 60"]};
|
||||
{ 4, "PVPMENU2", "INV_Jewelry_Necklace_21", "=ds="..AL["BG PvP Rewards"], ""};
|
||||
{ 16, "PVPWeapons_A", "INV_Weapon_Bow_08", "=ds="..AL["PvP Weapons"], "=q5="..AL["Level 60"]};
|
||||
{ 17, "PvP60Ench", "INV_Scroll_06", "=ds="..AL["PvP Enchants"], "=q5="..AL["Level 60"]};
|
||||
Prev = "PVPMENUWRATH";
|
||||
Next = "PVPMENUTBC";
|
||||
Back = "PVPMENU"..AtlasLoot_Expac;
|
||||
Submenu = "Expansion";
|
||||
AtlasLoot_SubMenus["PVPCLASSIC"] = {
|
||||
Module = "AtlasLootOriginalWoW";
|
||||
{ "PVP Factions", "AVMisc", "Header"};
|
||||
{ "", "AVMisc"};
|
||||
{ "", "AB_A"};
|
||||
{ "", "AB_H"};
|
||||
{ "", "WSG_A"};
|
||||
{ "", "WSG_H"};
|
||||
{ "", "PVPWeapons60"};
|
||||
{ "", "PvP60Accessories"};
|
||||
{ "", "PvP60Ench"};
|
||||
{ "PVP Sets", "PVPDruid", "Header"};
|
||||
{ "", "PVPDruid"};
|
||||
{ "", "PVPHunter"};
|
||||
{ "", "PVPMage"};
|
||||
{ "", "PVPPaladin"};
|
||||
{ "", "PVPPriest"};
|
||||
{ "", "PVPRogue"};
|
||||
{ "", "PVPShaman"};
|
||||
{ "", "PVPWarlock"};
|
||||
{ "", "PVPWarrior"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["PVPMENUTBC"] = {
|
||||
{ 1, "PvP70Accessories1_A", "inv_jewelry_ring_60", "=ds="..AL["PvP Accessories"], "=q5="..AL["Level 70"]};
|
||||
{ 2, "PVP70RepSET", "INV_Axe_02", "=ds="..AL["PvP Reputation Sets"], "=q5="..AL["Level 70"]};
|
||||
{ 3, "ARENASET", "inv_gauntlets_29", "=ds="..AL["PvP Armor Sets"], "=q5="..AL["Level 70"]};
|
||||
{ 4, "PvP70NonSet1", "inv_belt_13", "=ds="..AL["PvP Non-Set Epics"], "=q5="..AL["Level 70"]};
|
||||
{ 6, "Hellfire", "INV_Misc_Token_HonorHold", "=ds="..BabbleZone["Hellfire Peninsula"], "=q5="..AL["Hellfire Fortifications"]};
|
||||
{ 7, "Zangarmarsh", "Spell_Nature_ElementalPrecision_1", "=ds="..BabbleZone["Zangarmarsh"], "=q5="..AL["Twin Spire Ruins"]};
|
||||
{ 8, "Terokkar", "INV_Jewelry_FrostwolfTrinket_04", "=ds="..BabbleZone["Terokkar Forest"], "=q5="..AL["Spirit Towers"]};
|
||||
{ 9, "Nagrand1", "INV_Misc_Rune_09", "=ds="..BabbleZone["Nagrand"], "=q5="..AL["Halaa"]};
|
||||
{ 16, "Arena0Weapons1_A", "INV_Weapon_Crossbow_09", "=ds="..AL["Arena Season 0 Weapons"], "=q5="..AL["Level 70"]};
|
||||
{ 17, "Arena1Weapons1", "INV_Weapon_Crossbow_10", "=ds="..AL["Arena Season 1 Weapons"], "=q5="..AL["Level 70"]};
|
||||
{ 18, "Arena2Weapons1", "INV_Weapon_Crossbow_11", "=ds="..AL["Arena Season 2 Weapons"], "=q5="..AL["Level 70"]};
|
||||
{ 19, "Arena3Weapons1", "INV_Weapon_Crossbow_12", "=ds="..AL["Arena Season 3 Weapons"], "=q5="..AL["Level 70"]};
|
||||
{ 20, "Arena4Weapons1", "inv_weapon_crossbow_26", "=ds="..AL["Arena Season 4 Weapons"], "=q5="..AL["Level 70"]};
|
||||
Prev = "PVPMENUCLASSIC";
|
||||
Next = "PVPMENUWRATH";
|
||||
Back = "PVPMENU"..AtlasLoot_Expac;
|
||||
Submenu = "Expansion";
|
||||
AtlasLoot_SubMenus["PVPTBC"] = {
|
||||
Module = "AtlasLootBurningCrusade";
|
||||
{ "PVP Factions", "PVPHellfire", "Header"};
|
||||
{ "", "PVPHellfire"};
|
||||
{ "", "PVPHalaa"};
|
||||
{ "", "PVPSpiritTowers"};
|
||||
{ "", "PVPTwinSpireRuins"};
|
||||
{ "", "PVP70RepGear"};
|
||||
{ "", "PvP70Accessories"};
|
||||
{ "", "PvP70NonSet"};
|
||||
{ "", "WeaponsTBC"};
|
||||
{ "PVP Sets", "ArenaDruidTBC", "Header"};
|
||||
{ "", "ArenaDruidTBC"};
|
||||
{ "", "ArenaHunterTBC"};
|
||||
{ "", "ArenaMageTBC"};
|
||||
{ "", "ArenaPaladinTBC"};
|
||||
{ "", "ArenaPriestTBC"};
|
||||
{ "", "ArenaRogueTBC"};
|
||||
{ "", "ArenaShamanTBC"};
|
||||
{ "", "ArenaWarlockTBC"};
|
||||
{ "", "ArenaWarriorTBC"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["PVPMENUWRATH"] = {
|
||||
{ 1, "PvP80NonSet1", "INV_Jewelry_Necklace_36", "=ds="..AL["PvP Accessories"], "=q5="..AL["Level 80"]};
|
||||
{ 2, "PvP80Misc", "INV_Scroll_06", "=ds="..AL["PvP Misc"], "=q5="..AL["Level 80"]};
|
||||
{ 3, "LEVEL80PVPSETS", "INV_Boots_01", "=ds="..AL["PvP Armor Sets"], "=q5="..AL["Level 80"], "" };
|
||||
{ 4, "WINTERGRASPMENU", "INV_Misc_Platnumdisks", "=ds="..BabbleZone["Wintergrasp"], ""};
|
||||
{ 6, "VentureBay1", "INV_Misc_Coin_16", "=ds="..BabbleZone["Grizzly Hills"], "=q5="..AL["Venture Bay"]};
|
||||
{ 16, "PVP80NONSETEPICS", "inv_bracer_51", "=ds="..AL["PvP Non-Set Epics"], "=q5="..AL["Level 80"]};
|
||||
{ 17, "WrathfulGladiatorWeapons1", "INV_Sword_86", "=ds="..AL["Wrathful Gladiator\'s Weapons"], "=q5="..AL["Level 80"] };
|
||||
Prev = "PVPMENUTBC";
|
||||
Next = "PVPMENUCLASSIC";
|
||||
Back = "PVPMENU"..AtlasLoot_Expac;
|
||||
Submenu = "Expansion";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["PVPMENU2"] = {
|
||||
{ 1, "ABMisc_A", "INV_Jewelry_Amulet_07", "=ds="..AL["Misc. Rewards"], "=q5="..BabbleZone["Arathi Basin"]};
|
||||
{ 2, "ABSets1_A", "INV_Jewelry_Amulet_07", "=ds="..AL["Arathi Basin Sets"], ""};
|
||||
{ 16, "AB4049_A", "INV_Jewelry_Amulet_07", "=ds="..AL["Level 40-49 Rewards"], "=q5="..BabbleZone["Arathi Basin"]};
|
||||
{ 17, "AB2039_A", "INV_Jewelry_Amulet_07", "=ds="..AL["Level 20-39 Rewards"], "=q5="..BabbleZone["Arathi Basin"]};
|
||||
{ 4, "WSGMisc", "INV_Misc_Rune_07", "=ds="..AL["Misc. Rewards"], "=q5="..BabbleZone["Warsong Gulch"]};
|
||||
{ 5, "WSGAccessories_A", "INV_Misc_Rune_07", "=ds="..AL["Accessories"], "=q5="..BabbleZone["Warsong Gulch"]};
|
||||
{ 19, "WSGWeapons_A", "INV_Misc_Rune_07", "=ds="..AL["Weapons"], "=q5="..BabbleZone["Warsong Gulch"]};
|
||||
{ 20, "WSGArmor_A", "INV_Misc_Rune_07", "=ds="..BabbleInventory["Armor"], "=q5="..BabbleZone["Warsong Gulch"]};
|
||||
{ 7, "AVMisc", "INV_Jewelry_Necklace_21", "=ds="..BabbleZone["Alterac Valley"], ""};
|
||||
Back = "PVPMENUCLASSIC";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["PVPSET"] = {
|
||||
{ 3, "PVPDruid", "Spell_Nature_Regeneration", "=ds=".."Druid", ""};
|
||||
{ 4, "PVPMage", "Spell_Frost_IceStorm", "=ds="..LOCALIZED_CLASS_NAMES_MALE["MAGE"], ""};
|
||||
{ 5, "PVPPriest", "Spell_Holy_PowerWordShield", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PRIEST"], ""};
|
||||
{ 6, "PVPShaman", "Spell_FireResistanceTotem_01", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], ""};
|
||||
{ 7, "PVPWarrior", "INV_Shield_05", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARRIOR"], ""};
|
||||
{ 18, "PVPHunter", "Ability_Hunter_RunningShot", "=ds="..LOCALIZED_CLASS_NAMES_MALE["HUNTER"], ""};
|
||||
{ 19, "PVPPaladin", "Spell_Holy_SealOfMight", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PALADIN"], ""};
|
||||
{ 20, "PVPRogue", "Ability_BackStab", "=ds="..LOCALIZED_CLASS_NAMES_MALE["ROGUE"], ""};
|
||||
{ 21, "PVPWarlock", "Spell_Shadow_CurseOfTounges", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARLOCK"], ""};
|
||||
Back = "PVPMENUCLASSIC";
|
||||
};
|
||||
|
||||
-- PVP arena set BC
|
||||
AtlasLoot_Data["ARENASET"] = {
|
||||
{ 3, "ArenaDruidBalance", "Spell_Nature_InsectSwarm", "=ds=".."Druid", "=q5="..AL["Balance"]};
|
||||
{ 4, "ArenaDruidFeral", "Ability_Druid_Maul", "=ds=".."Druid", "=q5="..AL["Feral"]};
|
||||
{ 5, "ArenaDruidRestoration", "Spell_Nature_Regeneration", "=ds=".."Druid", "=q5="..AL["Restoration"]};
|
||||
{ 7, "ArenaHunter", "Ability_Hunter_RunningShot", "=ds="..LOCALIZED_CLASS_NAMES_MALE["HUNTER"], ""};
|
||||
{ 9, "ArenaMage", "Spell_Frost_IceStorm", "=ds="..LOCALIZED_CLASS_NAMES_MALE["MAGE"], ""};
|
||||
{ 11, "ArenaPaladinHoly", "Spell_Holy_HolyBolt", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PALADIN"], "=q5="..AL["Holy"]};
|
||||
{ 12, "ArenaPaladinProtection", "Spell_Holy_SealOfMight", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PALADIN"], "=q5="..AL["Protection"]};
|
||||
{ 13, "ArenaPaladinRetribution", "Spell_Holy_AuraOfLight", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PALADIN"], "=q5="..AL["Retribution"]};
|
||||
{ 17, "ArenaPriestHoly", "Spell_Holy_PowerWordShield", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PRIEST"], "=q5="..AL["Holy"]};
|
||||
{ 18, "ArenaPriestShadow", "Spell_Shadow_AntiShadow", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PRIEST"], "=q5="..AL["Shadow"]};
|
||||
{ 20, "ArenaRogue", "Ability_BackStab", "=ds="..LOCALIZED_CLASS_NAMES_MALE["ROGUE"], ""};
|
||||
{ 22, "ArenaShamanElemental", "Spell_Nature_Lightning", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], "=q5="..AL["Elemental"]};
|
||||
{ 23, "ArenaShamanEnhancement", "Spell_FireResistanceTotem_01", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], "=q5="..AL["Enhancement"]};
|
||||
{ 24, "ArenaShamanRestoration", "Spell_Nature_HealingWaveGreater", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], "=q5="..AL["Restoration"]};
|
||||
{ 26, "ArenaWarlockDemonology", "Spell_Shadow_CurseOfTounges", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARLOCK"], "=q5="..AL["Demonology"]};
|
||||
{ 27, "ArenaWarlockDestruction", "Spell_Shadow_CurseOfTounges", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARLOCK"], "=q5="..AL["Destruction"]};
|
||||
{ 29, "ArenaWarrior", "Ability_Warrior_BattleShout", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARRIOR"], ""};
|
||||
Back = "PVPMENUTBC";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["PVP70RepSET"] = {
|
||||
{ 2, "PVP70RepCloth", "INV_Boots_Cloth_12", "=ds="..BabbleInventory["Cloth"], "=q5=".."Reputation"};
|
||||
{ 3, "PVP70RepMail", "INV_Boots_Plate_06", "=ds="..BabbleInventory["Mail"], "=q5=".."Reputation"};
|
||||
{ 17, "PVP70RepLeather", "INV_Boots_08", "=ds="..BabbleInventory["Leather"], "=q5=".."Reputation"};
|
||||
{ 18, "PVP70RepPlate", "INV_Boots_Plate_04", "=ds="..BabbleInventory["Plate"], "=q5=".."Reputation"};
|
||||
{ 5, "PVP70RareCloth_A", "INV_Boots_Cloth_12", "=ds="..BabbleInventory["Cloth"], "=q5=".."Pre-Arena"};
|
||||
{ 6, "PVP70RareMail_A", "INV_Boots_Plate_06", "=ds="..BabbleInventory["Mail"], "=q5=".."Pre-Arena"};
|
||||
{ 20, "PVP70RareLeather_A", "INV_Boots_08", "=ds="..BabbleInventory["Leather"], "=q5=".."Pre-Arena"};
|
||||
{ 21, "PVP70RarePlate_A", "INV_Boots_Plate_04", "=ds="..BabbleInventory["Plate"], "=q5=".."Pre-Arena"};
|
||||
Back = "PVPMENUTBC";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["PVP80NONSETEPICS"] = {
|
||||
{ 2, "PvP80NonSet3", "INV_Boots_Cloth_12", "=ds="..BabbleInventory["Cloth"], ""};
|
||||
{ 3, "PvP80NonSet5", "INV_Boots_Plate_06", "=ds="..BabbleInventory["Mail"], ""};
|
||||
{ 4, "PvP80ClassItems1", "Spell_Frost_SummonWaterElemental", "=ds="..BabbleInventory["Relic"], "" };
|
||||
{ 17, "PvP80NonSet4", "INV_Boots_08", "=ds="..BabbleInventory["Leather"], ""};
|
||||
{ 18, "PvP80NonSet6", "INV_Boots_Plate_04", "=ds="..BabbleInventory["Plate"], ""};
|
||||
Back = "PVPMENUWRATH";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["LEVEL80PVPSETS"] = {
|
||||
{ 2, "PvP80DeathKnight", "Spell_Deathknight_DeathStrike", "=ds="..LOCALIZED_CLASS_NAMES_MALE["DEATHKNIGHT"], ""};
|
||||
{ 4, "PvP80DruidBalance", "Spell_Nature_InsectSwarm", "=ds=".."Druid", "=q5="..AL["Balance"]};
|
||||
{ 5, "PvP80DruidFeral", "Ability_Druid_Maul", "=ds=".."Druid", "=q5="..AL["Feral"]};
|
||||
{ 6, "PvP80DruidRestoration", "Spell_Nature_Regeneration", "=ds=".."Druid", "=q5="..AL["Restoration"]};
|
||||
{ 8, "PvP80Hunter", "Ability_Hunter_RunningShot", "=ds="..LOCALIZED_CLASS_NAMES_MALE["HUNTER"], ""};
|
||||
{ 10, "PvP80Mage", "Spell_Frost_IceStorm", "=ds="..LOCALIZED_CLASS_NAMES_MALE["MAGE"], ""};
|
||||
{ 12, "PvP80PaladinHoly", "Spell_Holy_HolyBolt", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PALADIN"], "=q5="..AL["Holy"]};
|
||||
{ 13, "PvP80PaladinRetribution", "Spell_Holy_AuraOfLight", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PALADIN"], "=q5="..AL["Retribution"]};
|
||||
{ 17, "PvP80PriestHoly", "Spell_Holy_PowerWordShield", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PRIEST"], "=q5="..AL["Holy"]};
|
||||
{ 18, "PvP80PriestShadow", "Spell_Shadow_AntiShadow", "=ds="..LOCALIZED_CLASS_NAMES_MALE["PRIEST"], "=q5="..AL["Shadow"]};
|
||||
{ 20, "PvP80Rogue", "Ability_BackStab", "=ds="..LOCALIZED_CLASS_NAMES_MALE["ROGUE"], ""};
|
||||
{ 22, "PvP80ShamanElemental", "Spell_Nature_Lightning", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], "=q5="..AL["Elemental"]};
|
||||
{ 23, "PvP80ShamanEnhancement", "Spell_FireResistanceTotem_01", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], "=q5="..AL["Enhancement"]};
|
||||
{ 24, "PvP80ShamanRestoration", "Spell_Nature_HealingWaveGreater", "=ds="..LOCALIZED_CLASS_NAMES_MALE["SHAMAN"], "=q5="..AL["Restoration"]};
|
||||
{ 26, "PvP80Warlock", "Spell_Shadow_CurseOfTounges", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARLOCK"], ""};
|
||||
{ 28, "PvP80Warrior", "Ability_Warrior_BattleShout", "=ds="..LOCALIZED_CLASS_NAMES_MALE["WARRIOR"], ""};
|
||||
Back = "PVPMENUWRATH";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["WINTERGRASPMENU"] = {
|
||||
{ 2, "LakeWintergrasp2", "inv_helmet_136", "=ds="..BabbleInventory["Cloth"], ""};
|
||||
{ 3, "LakeWintergrasp3", "INV_Helmet_141", "=ds="..BabbleInventory["Leather"], ""};
|
||||
{ 4, "LakeWintergrasp4", "INV_Helmet_138", "=ds="..BabbleInventory["Mail"], ""};
|
||||
{ 5, "LakeWintergrasp5", "inv_helmet_134", "=ds="..BabbleInventory["Plate"], ""};
|
||||
{ 17, "LakeWintergrasp1", "inv_misc_rune_11", "=ds="..AL["Accessories"], ""};
|
||||
{ 18, "LakeWintergrasp7", "inv_sword_19", "=ds="..AL["Heirloom"], ""};
|
||||
{ 19, "LakeWintergrasp6", "inv_jewelcrafting_icediamond_02", "=ds="..AL["PVP Gems/Enchants/Jewelcrafting Designs"], ""};
|
||||
Back = "PVPMENU2";
|
||||
};
|
||||
|
||||
|
||||
@@ -21,26 +21,27 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
|
||||
AtlasLoot_SubMenus["ReputationsTBC"] = {
|
||||
Module = "AtlasLootBurningCrusade";
|
||||
{ "", "Aldor1", "INV_Jewelry_Talisman_08", "=ds="..BabbleFaction["The Aldor"], ""};
|
||||
{ "", "CExpedition1", "INV_Misc_Ammo_Arrow_02", "=ds="..BabbleFaction["Cenarion Expedition"], "=q5="..BabbleZone["Zangarmarsh"]};
|
||||
{ "", "HonorHold1", "INV_BannerPVP_02", "=ds="..BabbleFaction["Honor Hold"], "=q5="..BabbleFaction["Alliance"].." - "..BabbleZone["Hellfire Peninsula"]};
|
||||
{ "", "Kurenai1", "INV_Misc_Foot_Centaur", "=ds="..BabbleFaction["Kurenai"], "=q5="..BabbleFaction["Alliance"].." - "..BabbleZone["Nagrand"]};
|
||||
{ "", "Maghar1", "INV_Misc_Foot_Centaur", "=ds="..BabbleFaction["The Mag'har"], "=q5="..BabbleFaction["Horde"].." - "..BabbleZone["Nagrand"]};
|
||||
{ "", "Ogrila1", "inv_misc_apexis_crystal", "=ds="..BabbleFaction["Ogri'la"], "=q5="..BabbleZone["Blade's Edge Mountains"]};
|
||||
{ "", "Scryer1", "INV_Misc_Foot_Centaur", "=ds="..BabbleFaction["The Scryers"], ""};
|
||||
{ "", "Skyguard1", "INV_Misc_Ribbon_01", "=ds="..BabbleFaction["Sha'tari Skyguard"], "=q5="..BabbleZone["Terokkar Forest"].." / "..BabbleZone["Blade's Edge Mountains"]};
|
||||
{ "", "Sporeggar1", "inv_mushroom_11", "=ds="..BabbleFaction["Sporeggar"], "=q5="..BabbleZone["Zangarmarsh"]};
|
||||
{ "", "Tranquillien1", "INV_Misc_Bandana_03", "=ds="..BabbleFaction["Tranquillien"], "=q5="..BabbleFaction["Horde"].." - "..BabbleZone["Ghostlands"]};
|
||||
{ "", "Ashtongue1", "achievement_reputation_ashtonguedeathsworn", "=ds="..BabbleFaction["Ashtongue Deathsworn"], "=q5="..BabbleZone["Shadowmoon Valley"].." / "..BabbleZone["Black Temple"]};
|
||||
{ "", "Consortium1", "INV_Weapon_Shortblade_31", "=ds="..BabbleFaction["The Consortium"], ""};
|
||||
{ "", "KeepersofTime1", "Ability_Warrior_VictoryRush", "=ds="..BabbleFaction["Keepers of Time"], "=q5="..BabbleZone["Caverns of Time"]};
|
||||
{ "", "LowerCity1", "Spell_Holy_ChampionsBond", "=ds="..BabbleFaction["Lower City"], ""};
|
||||
{ "", "Netherwing1", "Ability_Mount_Netherdrakepurple", "=ds="..BabbleFaction["Netherwing"], "=q5="..BabbleZone["Shadowmoon Valley"]};
|
||||
{ "", "ScaleSands1", "INV_Misc_MonsterScales_13", "=ds="..BabbleFaction["The Scale of the Sands"], "=q5="..BabbleZone["Hyjal Summit"]};
|
||||
{ "", "Shatar1", "Ability_Warrior_ShieldMastery", "=ds="..BabbleFaction["The Sha'tar"], ""};
|
||||
{ "", "SunOffensive1", "inv_shield_48", "=ds="..BabbleFaction["Shattered Sun Offensive"], "=q5="..BabbleZone["Isle of Quel'Danas"]};
|
||||
{ "", "Thrallmar1", "INV_BannerPVP_01", "=ds="..BabbleFaction["Thrallmar"], "=q5="..BabbleFaction["Horde"].." - "..BabbleZone["Hellfire Peninsula"]};
|
||||
{ "", "VioletEye1", "spell_holy_mindsooth", "=ds="..BabbleFaction["The Violet Eye"], "=q5="..BabbleZone["Karazhan"]};
|
||||
{ "", "ShattrathFlasks"};
|
||||
{ "", "Aldor"};
|
||||
{ "", "Scryer"};
|
||||
{ "", "Shatar"};
|
||||
{ "", "LowerCity"};
|
||||
{ "", "CExpedition"};
|
||||
{ "", "HonorHold"};
|
||||
{ "", "Thrallmar"};
|
||||
{ "", "Kurenai"};
|
||||
{ "", "Maghar"};
|
||||
{ "", "Ogrila"};
|
||||
{ "", "Skyguard"};
|
||||
{ "", "Sporeggar"};
|
||||
{ "", "Tranquillien"};
|
||||
{ "", "Ashtongue"};
|
||||
{ "", "Consortium"};
|
||||
{ "", "KeepersofTime"};
|
||||
{ "", "Netherwing"};
|
||||
{ "", "ScaleSands"};
|
||||
{ "", "SunOffensive"};
|
||||
{ "", "VioletEye"};
|
||||
};
|
||||
|
||||
AtlasLoot_SubMenus["ReputationsWRATH"] = {
|
||||
|
||||
@@ -9,40 +9,32 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
-- { #, "CardGame1", "INV_Misc_Ticket_Tarot_Madness", "=ds="..AL["Upper Deck Card Game Items"], ""};
|
||||
-- { #, "PVPMENU", "INV_Axe_02", "=ds="..AL["PvP Rewards"], ""};
|
||||
|
||||
AtlasLoot_Data["SETMENUCLASSIC"] = {
|
||||
{ 1, "SETSCLASSIC", "INV_Sword_43", "=ds="..AL["Classic Sets"], ""};
|
||||
{ 3, 0, "INV_Box_01", "=q6="..AL["BoE World Epics"], ""};
|
||||
{ 4, "WorldEpics1", "INV_Jewelry_Ring_15", "=ds="..AL["Level 30-39"], ""};
|
||||
{ 5, "WorldEpics2", "INV_Staff_29", "=ds="..AL["Level 40-49"], ""};
|
||||
{ 6, "WorldEpics3", "INV_Jewelry_Amulet_01", "=ds="..AL["Level 50-60"], ""};
|
||||
{ 8, "Heirloom", "INV_Sword_43", "=ds="..AL["Heirloom"], ""};
|
||||
{ 9, "Legendaries", "INV_Staff_Medivh", "=ds="..AL["Legendary Items"], ""};
|
||||
{ 16, "T0SET", "INV_Chest_Chain_03", "=ds="..AL["Dungeon 1/2 Sets"], ""};
|
||||
{ 17, "ZGSets1", "INV_Misc_MonsterClaw_04", "=ds="..AL["Zul'Gurub Sets"], ""};
|
||||
{ 18, "AQ20Sets1", "INV_Jewelry_Ring_AhnQiraj_03", "=ds="..AL["Ruins of Ahn'Qiraj Sets"], ""};
|
||||
{ 19, "AQ40Sets1", "INV_Sword_59", "=ds="..AL["Temple of Ahn'Qiraj Sets"], ""};
|
||||
{ 21, "T1SET", "INV_Pants_Mail_03", "=ds="..AL["Tier 1 Sets"], ""};
|
||||
{ 22, "T2SET", "INV_Pants_Mail_26", "=ds="..AL["Tier 2 Sets"], ""};
|
||||
{ 23, "T3SET", "INV_Pants_Mail_38v3", "=ds="..AL["Tier 3 Sets"], ""};
|
||||
Prev = "SETMENUWRATH";
|
||||
Next = "SETMENUTBC";
|
||||
Submenu = "Expansion";
|
||||
};
|
||||
AtlasLoot_SubMenus["CollectionsCLASSIC"] = {
|
||||
Module = "AtlasLootOriginalWoW";
|
||||
{ "", "ClassicSets"};
|
||||
{ "", "WorldEpicsCLASSIC"};
|
||||
{ "", "ZGSets"};
|
||||
{ "", "AQ20Sets"};
|
||||
{ "", "T0"};
|
||||
{ "", "T1"};
|
||||
{ "", "T2"};
|
||||
{ "", "T2.5"};
|
||||
{ "", "T3"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["SETMENUTBC"] = {
|
||||
{ 1, "70TOKENMENU", "Spell_Holy_ChampionsBond", "=ds="..AL["Badge of Justice Rewards"], "=q5="..AL["Burning Crusade"]};
|
||||
{ 3, "Heirloom", "INV_Sword_43", "=ds="..AL["Heirloom"], ""};
|
||||
{ 4, "WorldEpics4", "INV_Sword_76", "=ds=".."World Epics", ""};
|
||||
{ 5, "TBCSets", "INV_Weapon_Glave_01", "=ds="..AL["Burning Crusade Misc Sets"], ""};
|
||||
{ 6, "Legendaries", "INV_Staff_Medivh", "=ds="..AL["Legendary Items"], ""};
|
||||
{ 16, "DS3SET", "INV_Helmet_15", "=ds="..AL["Dungeon 3 Sets"], ""};
|
||||
{ 18, "T4SET", "inv_helmet_58", "=ds="..AL["Tier 4 Sets"], ""};
|
||||
{ 19, "T5SET", "inv_helmet_92", "=ds="..AL["Tier 5 Sets"], ""};
|
||||
{ 20, "T6SET", "inv_helmet_98", "=ds="..AL["Tier 6 Sets"], ""};
|
||||
Prev = "SETMENUCLASSIC";
|
||||
Next = "SETMENUWRATH";
|
||||
Submenu = "Expansion";
|
||||
};
|
||||
AtlasLoot_SubMenus["CollectionsTBC"] = {
|
||||
Module = "AtlasLootBurningCrusade";
|
||||
{ "", "DS3"};
|
||||
{ "", "WorldEpicsTBC"};
|
||||
{ "", "TBCSets"};
|
||||
{ AL["Badge of Justice Rewards"], "BadgeShatt", "Header"};
|
||||
{ "", "BadgeShatt"};
|
||||
{ "", "BadgeSunwell"};
|
||||
{ "Teir Sets", "T4", "Header"};
|
||||
{ "", "T4"};
|
||||
{ "", "T5"};
|
||||
{ "", "T6"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["SETMENUWRATH"] = {
|
||||
{ 1, "EMBLEMOFFROSTMENU", "inv_misc_frostemblem_01", "=ds="..AL["Emblem of Frost Rewards"], "=q5="..AL["Wrath of the Lich King"]};
|
||||
|
||||
@@ -3,75 +3,73 @@ local BabbleInventory = AtlasLoot_GetLocaleLibBabble("LibBabble-Inventory-3.0")
|
||||
local BabbleFaction = AtlasLoot_GetLocaleLibBabble("LibBabble-Faction-3.0")
|
||||
local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
|
||||
|
||||
AtlasLoot_SubMenus["WorldEventsCLASSIC"] = {
|
||||
Module = "AtlasLootWorldEvents";
|
||||
{ "Seasonal", "BrewfestCLASSIC", "Header"};
|
||||
{ "", "BrewfestCLASSIC"};
|
||||
{ "", "DayoftheDead"};
|
||||
{ "", "HalloweenCLASSIC"};
|
||||
{ "", "Valentineday"};
|
||||
{ "", "MidsummerFestivalCLASSIC"};
|
||||
{ "", "PilgrimsBounty"};
|
||||
{ "", "ChildrensWeek"};
|
||||
{ "", "Winterviel"};
|
||||
{ "", "HarvestFestival"};
|
||||
{ "", "LunarFestival"};
|
||||
{ "", "Noblegarden"};
|
||||
{ "Other", "Darkmoon", "Header"};
|
||||
{ "", "Darkmoon"};
|
||||
{ "", "GurubashiArena"};
|
||||
{ "", "AbyssalCouncil"};
|
||||
{ "", "ElementalInvasion"};
|
||||
{ "", "ScourgeInvasionEvent"};
|
||||
{ "", "FishingExtravaganza"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["WORLDEVENTMENU"] = {
|
||||
{ 1, "ARGENTMENU", "Ability_Paladin_ArtofWar", "=ds="..AL["Argent Tournament"], "=q5="..BabbleZone["Icecrown"]};
|
||||
{ 3, "Brewfest1", "INV_Cask_04", "=ds="..AL["Brewfest"], "=q5="..AL["Various Locations"]};
|
||||
{ 4, "DayoftheDead", "INV_Misc_Bone_HumanSkull_02", "=ds="..AL["Day of the Dead"], "=q5="..AL["Various Locations"]};
|
||||
{ 5, "Halloween1", "INV_Misc_Bag_28_Halloween", "=ds="..AL["Hallow's End"], "=q5="..AL["Various Locations"]};
|
||||
{ 6, "Valentineday", "INV_ValentinesBoxOfChocolates02", "=ds="..AL["Love is in the Air"], "=q5="..AL["Various Locations"]};
|
||||
{ 7, "MidsummerFestival", "INV_SummerFest_FireFlower", "=ds="..AL["Midsummer Fire Festival"], "=q5="..AL["Various Locations"]};
|
||||
{ 8, "PilgrimsBounty_H", "inv_helmet_65", "=ds="..AL["Pilgrim's Bounty"], "=q5="..AL["Various Locations"]};
|
||||
{ 10, "BashirLanding", "INV_Trinket_Naxxramas02", "=ds="..AL["Bash'ir Landing Skyguard Raid"], "=q5="..BabbleZone["Blade's Edge Mountains"]};
|
||||
{ 11, "GurubashiArena", "INV_Box_02", "=ds="..AL["Gurubashi Arena Booty Run"], "=q5="..BabbleZone["Stranglethorn Vale"]};
|
||||
{ 12, "Shartuul", "INV_Misc_Rune_04", "=ds="..AL["Shartuul"], "=q5="..BabbleZone["Blade's Edge Mountains"]};
|
||||
{ 14, "ABYSSALMENU", "INV_Staff_13", "=ds="..AL["Abyssal Council"], "=q5="..BabbleZone["Silithus"]};
|
||||
{ 15, "SKETTISMENU", "Spell_Nature_NaturesWrath", "=ds="..AL["Skettis"], "=q5="..BabbleZone["Terokkar Forest"]};
|
||||
{ 16, "DARKMOONMENU", "INV_Misc_Ticket_Tarot_Madness", "=ds="..BabbleFaction["Darkmoon Faire"], "=q5="..AL["Various Locations"]};
|
||||
{ 18, "ChildrensWeek", "Ability_Hunter_BeastCall", "=ds="..AL["Children's Week"], "=q5="..AL["Various Locations"]};
|
||||
{ 19, "Winterviel1", "INV_Holiday_Christmas_Present_01", "=ds="..AL["Feast of Winter Veil"], "=q5="..AL["Various Locations"]};
|
||||
{ 20, "HarvestFestival", "INV_Misc_Food_33", "=ds="..AL["Harvest Festival"], "=q5="..AL["Various Locations"]};
|
||||
{ 21, "LunarFestival1", "INV_Misc_ElvenCoins", "=ds="..AL["Lunar Festival"], "=q5="..AL["Various Locations"]};
|
||||
{ 22, "Noblegarden", "INV_Egg_03", "=ds="..AL["Noblegarden"], "=q5="..AL["Various Locations"]};
|
||||
{ 25, "ElementalInvasion", "INV_DataCrystal03", "=ds="..AL["Elemental Invasion"], "=q5="..AL["Various Locations"]};
|
||||
{ 26, "ScourgeInvasionEvent1", "INV_Jewelry_Talisman_13", "=ds="..AL["Scourge Invasion"], "=q5="..AL["Various Locations"]};
|
||||
{ 27, "FishingExtravaganza", "INV_Fishingpole_02", "=ds="..AL["Stranglethorn Fishing Extravaganza"], "=q5="..BabbleZone["Stranglethorn Vale"]};
|
||||
{ 29, "ETHEREUMMENU", "INV_Misc_PunchCards_Prismatic", "=ds="..AL["Ethereum Prison"], ""};
|
||||
AtlasLoot_SubMenus["WorldEventsTBC"] = {
|
||||
Module = "AtlasLootWorldEvents";
|
||||
{ "Seasonal", "BrewfestTBC", "Header"};
|
||||
{ "", "BrewfestTBC"};
|
||||
{ "", "DayoftheDead"};
|
||||
{ "", "HalloweenTBC"};
|
||||
{ "", "Valentineday"};
|
||||
{ "", "MidsummerFestivalTBC"};
|
||||
{ "", "PilgrimsBounty"};
|
||||
{ "", "ChildrensWeek"};
|
||||
{ "", "Winterviel"};
|
||||
{ "", "HarvestFestival"};
|
||||
{ "", "LunarFestival"};
|
||||
{ "", "Noblegarden"};
|
||||
{ "Other", "BashirLanding", "Header"};
|
||||
{ "", "BashirLanding"};
|
||||
{ "", "GurubashiArena"};
|
||||
{ "", "Shartuul"};
|
||||
{ "", "AbyssalCouncil"};
|
||||
{ "", "Skettis"};
|
||||
{ "", "Darkmoon"};
|
||||
{ "", "FishingExtravaganza"};
|
||||
{ "", "EthereumPrison"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["ARGENTMENU"] = {
|
||||
{ 2, "ArgentTournament1", "inv_scroll_11", "=ds="..BabbleInventory["Miscellaneous"], ""};
|
||||
{ 3, "ArgentTournament3", "inv_boots_plate_09", "=ds="..BabbleInventory["Armor"], ""};
|
||||
{ 4, "ArgentTournament5", "achievement_reputation_argentchampion", "=ds="..AL["Vanity Pets"], ""};
|
||||
{ 5, "ArgentTournament8", "inv_jewelry_talisman_01", "=ds="..AL["Heirloom"], ""};
|
||||
{ 17, "ArgentTournament2", "inv_misc_tournaments_tabard_human", "=ds="..AL["Tabards"].." / "..AL["Banner"], ""};
|
||||
{ 18, "ArgentTournament4", "inv_mace_29", "=ds="..AL["Weapons"], ""};
|
||||
{ 19, "ArgentTournament6", "ability_mount_charger", "=ds="..AL["Mounts"], ""};
|
||||
Back = "WORLDEVENTMENU";
|
||||
AtlasLoot_SubMenus["WorldEventsWRATH"] = {
|
||||
Module = "AtlasLootWorldEvents";
|
||||
{ "Seasonal", "BrewfestWRATH", "Header"};
|
||||
{ "", "BrewfestWRATH"};
|
||||
{ "", "DayoftheDead"};
|
||||
{ "", "HalloweenWRATH"};
|
||||
{ "", "Valentineday"};
|
||||
{ "", "MidsummerFestivalWRATH"};
|
||||
{ "", "PilgrimsBounty"};
|
||||
{ "", "ChildrensWeek"};
|
||||
{ "", "Winterviel"};
|
||||
{ "", "HarvestFestival"};
|
||||
{ "", "LunarFestival"};
|
||||
{ "", "Noblegarden"};
|
||||
{ "Other", "ArgentTournament", "Header"};
|
||||
{ "", "ArgentTournament"};
|
||||
{ "", "GurubashiArena"};
|
||||
{ "", "Shartuul"};
|
||||
{ "", "Skettis"};
|
||||
{ "", "Darkmoon"};
|
||||
{ "", "FishingExtravaganza"};
|
||||
};
|
||||
|
||||
AtlasLoot_Data["DARKMOONMENU"] = {
|
||||
{ 2, "Darkmoon1", "INV_Misc_Ticket_Darkmoon_01", "=ds="..AL["Darkmoon Faire Rewards"], ""};
|
||||
{ 3, "Darkmoon3", "INV_Misc_Ticket_Tarot_Madness", "=ds="..AL["Original and BC Trinkets"], ""};
|
||||
{ 17, "Darkmoon2", "INV_Misc_Ticket_Tarot_Furies", "=ds="..AL["Low Level Decks"], ""};
|
||||
{ 18, "Darkmoon4", "INV_Inscription_TarotGreatness", "=ds="..AL["WotLK Trinkets"], ""};
|
||||
Back = "WORLDEVENTMENU";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["ABYSSALMENU"] = {
|
||||
{ 2, "Templars", "INV_Jewelry_Talisman_05", "=ds="..AL["Abyssal Council"].." - "..AL["Templars"], ""};
|
||||
{ 3, "HighCouncil", "INV_Staff_13", "=ds="..AL["Abyssal Council"].." - "..AL["High Council"], ""};
|
||||
{ 17, "Dukes", "INV_Jewelry_Ring_36", "=ds="..AL["Abyssal Council"].." - "..AL["Dukes"], ""};
|
||||
Back = "WORLDEVENTMENU";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["ETHEREUMMENU"] = {
|
||||
{ 2, "ArmbreakerHuffaz", "INV_Jewelry_Ring_59", "=ds="..AL["Armbreaker Huffaz"], ""};
|
||||
{ 3, "Forgosh", "INV_Boots_05", "=ds="..AL["Forgosh"], ""};
|
||||
{ 4, "MalevustheMad", "INV_Boots_Chain_04", "=ds="..AL["Malevus the Mad"], ""};
|
||||
{ 5, "WrathbringerLaztarash", "INV_Misc_Orb_01", "=ds="..AL["Wrathbringer Laz-tarash"], ""};
|
||||
{ 17, "FelTinkererZortan", "INV_Boots_Chain_08", "=ds="..AL["Fel Tinkerer Zortan"], ""};
|
||||
{ 18, "Gulbor", "INV_Jewelry_Necklace_29Naxxramas", "=ds="..AL["Gul'bor"], ""};
|
||||
{ 19, "PorfustheGemGorger", "INV_Boots_Cloth_01", "=ds="..AL["Porfus the Gem Gorger"], ""};
|
||||
{ 20, "BashirStasisChambers", "INV_Trinket_Naxxramas02", "=ds="..AL["Bash'ir Landing Stasis Chambers"], ""};
|
||||
Back = "WORLDEVENTMENU";
|
||||
};
|
||||
|
||||
AtlasLoot_Data["SKETTISMENU"] = {
|
||||
{ 2, "DarkscreecherAkkarai", "INV_Misc_Rune_07", "=ds="..AL["Darkscreecher Akkarai"], ""};
|
||||
{ 3, "GezzaraktheHuntress", "INV_Misc_Rune_07", "=ds="..AL["Gezzarak the Huntress"], ""};
|
||||
{ 4, "Terokk", "INV_Misc_Rune_07", "=ds="..AL["Terokk"], ""};
|
||||
{ 17, "Karrog", "INV_Misc_Rune_07", "=ds="..AL["Karrog"], ""};
|
||||
{ 18, "VakkiztheWindrager", "INV_Misc_Rune_07", "=ds="..AL["Vakkiz the Windrager"], ""};
|
||||
Back = "WORLDEVENTMENU";
|
||||
};
|
||||
@@ -1129,41 +1129,41 @@ end
|
||||
AtlasLoot_TableNames["T3Warrior"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"], "AtlasLootOriginalWoW" };
|
||||
AtlasLoot_TableNames["T3DPSWarrior"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"], "AtlasLootOriginalWoW" };
|
||||
-- T4 Sets
|
||||
AtlasLoot_TableNames["T4DruidBalance"] = { "Druid".." - T4 "..AL["Balance"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4DruidFeral"] = { "Druid".." - T4 "..AL["Feral"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4DruidRestoration"] = { "Druid".." - T4 "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Hunter"] = { LOCALIZED_CLASS_NAMES_MALE["HUNTER"].." - T4 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Mage"] = { LOCALIZED_CLASS_NAMES_MALE["MAGE"].." - T4 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PaladinHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - T4 "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PaladinProtection"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - T4 "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PaladinRetribution"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - T4 "..AL["Retribution"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PriestHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - T4 "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PriestShadow"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - T4 "..AL["Shadow"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Rogue"] = { LOCALIZED_CLASS_NAMES_MALE["ROGUE"].." - T4 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4ShamanElemental"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - T4 "..AL["Elemental"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4ShamanEnhancement"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - T4 "..AL["Enhancement"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4ShamanRestoration"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - T4 "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Warlock"] = { LOCALIZED_CLASS_NAMES_MALE["WARLOCK"].." - T4 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4WarriorFury"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - T4 "..AL["Fury"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4WarriorProtection"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - T4 "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4DruidBalance"] = { "Druid".." - "..AL["Balance"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4DruidFeral"] = { "Druid".." - "..AL["Feral"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4DruidRestoration"] = { "Druid".." - "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Hunter"] = { LOCALIZED_CLASS_NAMES_MALE["HUNTER"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Mage"] = { LOCALIZED_CLASS_NAMES_MALE["MAGE"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PaladinHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PaladinProtection"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"]..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PaladinRetribution"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - "..AL["Retribution"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PriestHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4PriestShadow"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - "..AL["Shadow"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Rogue"] = { LOCALIZED_CLASS_NAMES_MALE["ROGUE"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4ShamanElemental"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - "..AL["Elemental"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4ShamanEnhancement"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - "..AL["Enhancement"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4ShamanRestoration"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4Warlock"] = { LOCALIZED_CLASS_NAMES_MALE["WARLOCK"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4WarriorFury"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - "..AL["Fury"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T4WarriorProtection"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
-- T5 Sets
|
||||
AtlasLoot_TableNames["T5DruidBalance"] = { "Druid".." - T5 "..AL["Balance"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5DruidFeral"] = { "Druid".." - T5 "..AL["Feral"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5DruidRestoration"] = { "Druid".." - T5 "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Hunter"] = { LOCALIZED_CLASS_NAMES_MALE["HUNTER"].." - T5 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Mage"] = { LOCALIZED_CLASS_NAMES_MALE["MAGE"].." - T5 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PaladinHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - T5 "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PaladinProtection"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - T5 "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PaladinRetribution"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - T5 "..AL["Retribution"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PriestHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - T5 "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PriestShadow"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - T5 "..AL["Shadow"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Rogue"] = { LOCALIZED_CLASS_NAMES_MALE["ROGUE"].." - T5 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5ShamanElemental"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - T5 "..AL["Elemental"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5ShamanEnhancement"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - T5 "..AL["Enhancement"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5ShamanRestoration"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - T5 "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Warlock"] = { LOCALIZED_CLASS_NAMES_MALE["WARLOCK"].." - T5 ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5WarriorFury"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - T5 "..AL["Fury"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5WarriorProtection"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - T5 "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5DruidBalance"] = { "Druid".." - "..AL["Balance"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5DruidFeral"] = { "Druid".." - "..AL["Feral"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5DruidRestoration"] = { "Druid".." - "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Hunter"] = { LOCALIZED_CLASS_NAMES_MALE["HUNTER"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Mage"] = { LOCALIZED_CLASS_NAMES_MALE["MAGE"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PaladinHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PaladinProtection"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PaladinRetribution"] = { LOCALIZED_CLASS_NAMES_MALE["PALADIN"].." - "..AL["Retribution"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PriestHoly"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - "..AL["Holy"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5PriestShadow"] = { LOCALIZED_CLASS_NAMES_MALE["PRIEST"].." - "..AL["Shadow"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Rogue"] = { LOCALIZED_CLASS_NAMES_MALE["ROGUE"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5ShamanElemental"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - "..AL["Elemental"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5ShamanEnhancement"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - "..AL["Enhancement"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5ShamanRestoration"] = { LOCALIZED_CLASS_NAMES_MALE["SHAMAN"].." - "..AL["Restoration"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5Warlock"] = { LOCALIZED_CLASS_NAMES_MALE["WARLOCK"].." - ", "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5WarriorFury"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - "..AL["Fury"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T5WarriorProtection"] = { LOCALIZED_CLASS_NAMES_MALE["WARRIOR"].." - "..AL["Protection"], "AtlasLootBurningCrusade" };
|
||||
-- T6 Sets
|
||||
AtlasLoot_TableNames["T6DruidBalance"] = { "Druid".." - T6 "..AL["Balance"], "AtlasLootBurningCrusade" };
|
||||
AtlasLoot_TableNames["T6DruidFeral"] = { "Druid".." - T6 "..AL["Feral"], "AtlasLootBurningCrusade" };
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
<Include file="Libs\AceLocale-3.0\AceLocale-3.0.xml"/>
|
||||
<Include file="Libs\AceSerializer-3.0\AceSerializer-3.0.xml"/>
|
||||
<Include file="Libs\AceComm-3.0\AceComm-3.0.xml"/>
|
||||
<Include file="Libs\AceTimer-3.0\AceTimer-3.0.xml"/>
|
||||
|
||||
<Include file="Libs\DewdropLib\embeds.xml"/>
|
||||
<Script file="Libs\DewdropLib\Dewdrop-2.0\Dewdrop-2.0.lua"/>
|
||||
|
||||
Reference in New Issue
Block a user