-finshed conversion of classic/tbc tables built function to create token tables from teir collections

This commit is contained in:
Anch
2022-07-31 21:10:39 +12:00
parent 588ea67bdd
commit 474939e8f4
27 changed files with 8888 additions and 10170 deletions
+1 -1
View File
@@ -88,7 +88,7 @@ AtlasLoot_Difficulty = {
["Crafting"] = {
{"Crafting Patterns", "" },
{"Item Normal", "=s=Normal" },
{"Item Normal", 2 },
{"Bloodforged", 1 },
};
+101 -84
View File
@@ -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
-75
View File
@@ -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">
+14 -4
View File
@@ -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};
+4 -2
View File
@@ -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
+3 -45
View File
@@ -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
View File
@@ -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>
+3 -1
View File
@@ -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;
+6 -8
View File
@@ -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"};
-2
View File
@@ -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"};
};
+2 -2
View File
@@ -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
View File
@@ -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 -20
View File
@@ -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"] = {
+25 -33
View File
@@ -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"]};
+66 -68
View File
@@ -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";
};
+34 -34
View File
@@ -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" };
+1
View File
@@ -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"/>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+19
View File
@@ -2232,6 +2232,25 @@ local MASTER = select(2, GetSpellInfo(28596));
Type = "Crafting";
};
AtlasLoot_Data["MiningWRATH"] = {
Name = MINING;
{
Name = MINING;
{ 1, "s55208", "37663", "=q2=Smelt Titansteel", "=ds=#sr# 450"};
{ 2, "s55211", "41163", "=q2=Smelt Titanium", "=ds=#sr# 450"};
{ 3, "s49258", "36913", "=q1=Smelt Saronite", "=ds=#sr# 400"};
{ 4, "s49252", "36916", "=q1=Smelt Cobalt", "=ds=#sr# 350"};
};
};
AtlasLoot_Data["FirstAidWRATH"] = {
Name = FIRSTAID;
{
Name = FIRSTAID;
{ 1, "s45546", "34722", "=q1=Heavy Frostweave Bandage", "=ds=#sr# 400"};
{ 2, "s45545", "34721", "=q1=Frostweave Bandage", "=ds=#sr# 375"};
};
};
-----------------
--- Tailoring ---
-----------------
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff