This commit is contained in:
andrew6180
2023-12-29 11:51:34 -07:00
parent 31fc1ffe06
commit 9b7cf19457
65 changed files with 47581 additions and 27154 deletions
+1 -2
View File
@@ -31,10 +31,9 @@
embeds.xml
Locales\Locales.xml
Databases\Databases.xml
Core\AtlasLoot.xml
Menus\Menus.xml
DefaultFrame\Frames.xml
modules.xml
+42 -54
View File
@@ -1,21 +1,8 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
AtlasLoot_Difficulty = {
-- table of difficulties and there itemID references
["Default"] = {};
AtlasLoot.Difficultys["Default"] = {};
["ClassicDungeon"] = {
{"Normal", 2,},
{"Bloodforged", 1,},
};
["PVP"] = {
{"Normal", 2},
{"Bloodforged", 1},
};
["ClassicDungeonExt"] = {
AtlasLoot.Difficultys["ClassicDungeon"] = {
{"Bloodforged", 1},
{"Normal", 2},
{"Heroic", 3},
@@ -30,7 +17,27 @@ AtlasLoot_Difficulty = {
{"Mythic 36", 40 }, {"Mythic 37", 41 }, {"Mythic 38", 42 }, {"Mythic 39", 43 }, {"Mythic 40", 44 },
};
["ClassicRaid"] = {
AtlasLoot.Difficultys["PVP"] = {
{"Normal", 2},
{"Bloodforged", 1},
};
AtlasLoot.Difficultys["ClassicDungeonExt"] = {
{"Bloodforged", 1},
{"Normal", 2},
{"Heroic", 3},
{"Mythic", 4},
{"Mythic 1", 5 }, {"Mythic 2", 6 }, {"Mythic 3", 7 }, {"Mythic 4", 8 }, {"Mythic 5", 9 },
{"Mythic 6", 10 }, {"Mythic 7", 11 }, {"Mythic 8", 12 }, {"Mythic 9", 13 }, {"Mythic 10", 14 },
{"Mythic 11", 15 }, {"Mythic 12", 16 }, {"Mythic 13", 17 }, {"Mythic 14", 18 }, {"Mythic 15", 19 },
{"Mythic 16", 20 }, {"Mythic 17", 21 }, {"Mythic 18", 22 }, {"Mythic 19", 23 }, {"Mythic 20", 24 },
{"Mythic 21", 25 }, {"Mythic 22", 26 }, {"Mythic 23", 27 }, {"Mythic 24", 28 }, {"Mythic 25", 29 },
{"Mythic 26", 30 }, {"Mythic 27", 31 }, {"Mythic 28", 32 }, {"Mythic 29", 33 }, {"Mythic 30", 34 },
{"Mythic 31", 35 }, {"Mythic 32", 36 }, {"Mythic 33", 37 }, {"Mythic 34", 38 }, {"Mythic 35", 39 },
{"Mythic 36", 40 }, {"Mythic 37", 41 }, {"Mythic 38", 42 }, {"Mythic 39", 43 }, {"Mythic 40", 44 },
};
AtlasLoot.Difficultys["ClassicRaid"] = {
{"Normal", 2},
{"Heroic", 3},
{"Mythic", 5},
@@ -38,7 +45,7 @@ AtlasLoot_Difficulty = {
{"Bloodforged", 1},
};
["BCDungeon"] = {
AtlasLoot.Difficultys["BCDungeon"] = {
{"Bloodforged", 1},
{"Normal/Heroic", 2},
{"Mythic", 4},
@@ -52,7 +59,7 @@ AtlasLoot_Difficulty = {
{"Mythic 36", 40 }, {"Mythic 37", 41 }, {"Mythic 38", 42 }, {"Mythic 39", 43 }, {"Mythic 40", 44 },
};
["BCRaid"] = {
AtlasLoot.Difficultys["BCRaid"] = {
{"Normal", 2},
{"Heroic", 3},
{"Mythic", 5},
@@ -60,7 +67,7 @@ AtlasLoot_Difficulty = {
{"Bloodforged", 1},
};
["WrathDungeon"] = {
AtlasLoot.Difficultys["WrathDungeon"] = {
{"Normal/Heroic", 2},
{"Mythic", 4},
{"Bloodforged", 1},
@@ -70,7 +77,7 @@ AtlasLoot_Difficulty = {
{"Mythic 16", 20 }, {"Mythic 17", 21 }, {"Mythic 18", 22 }, {"Mythic 19", 23 }, {"Mythic 20", 24 },
};
["WrathRaid"] = {
AtlasLoot.Difficultys["WrathRaid"] = {
{"Normal", 2},
{"Heroic", 3},
{"Mythic", 4},
@@ -78,22 +85,16 @@ AtlasLoot_Difficulty = {
{"Bloodforged", 1},
};
["Crafting"] = {
{"Crafting Patterns", "Pattern" },
{"Item Normal", 2 },
{"Bloodforged", 1 },
};
["CraftingNoBF"] = {
{"Crafting Patterns", "Pattern" },
{"Item Normal", 2 },
AtlasLoot.Difficultys["Crafting"] = {
{"Normal", 2 },
};
["Search"] = {
AtlasLoot.Difficultys["Search"] = {
{"Bloodforged", 1},
{"Normal", 2},
{"Heroic", 3},
{"Mythic/Ascended", 4},
{"Mythic 1", 5 }, {"Mythic 2", 6 }, {"Mythic 3", 7 }, {"Mythic 4", 8 }, {"Mythic 5", 9 },
{"Mythic", 4},
{"Mythic 1/Ascended", 5 }, {"Mythic 2", 6 }, {"Mythic 3", 7 }, {"Mythic 4", 8 }, {"Mythic 5", 9 },
{"Mythic 6", 10 }, {"Mythic 7", 11 }, {"Mythic 8", 12 }, {"Mythic 9", 13 }, {"Mythic 10", 14 },
{"Mythic 11", 15 }, {"Mythic 12", 16 }, {"Mythic 13", 17 }, {"Mythic 14", 18 }, {"Mythic 15", 19 },
{"Mythic 16", 20 }, {"Mythic 17", 21 }, {"Mythic 18", 22 }, {"Mythic 19", 23 }, {"Mythic 20", 24 },
@@ -104,33 +105,20 @@ AtlasLoot_Difficulty = {
};
--Enums for comparisons in code
Bloodforged = 1;
Normal = 2;
Heroic = 3;
Mythic = 4;
Ascended = 4;
AtlasLoot.Difficultys.Bloodforged = 1;
AtlasLoot.Difficultys.Normal = 2;
AtlasLoot.Difficultys.Heroic = 3;
AtlasLoot.Difficultys.Mythic = 4;
AtlasLoot.Difficultys.Ascended = 4;
MythicPlus = {
AtlasLoot.Difficultys.MythicPlus = {
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44
}; --Usage AtlasLoot_Difficulty.MythicPlus[1-40];
DIF_SEARCH = 16;
DUPLICATE = 17;
MIN_DIF = 18;
MAX_DIF = 19;
}
function AtlasLoot_Difficulty:getMaxDifficulty(difficultyKey)
if(difficultyKey == "ClassicDungeon" or difficultyKey == "PVP") then
return 2;
elseif (difficultyKey == "ClassicDungeonExt" or difficultyKey == "BCDungeon" or difficultyKey == "WrathDungeon") then
return 44;
elseif (difficultyKey == "ClassicRaid" or difficultyKey == "BCRaid" or difficultyKey == "WrathRaid") then
return 5;
else
return 0;
end
end
AtlasLoot.Difficultys.DIF_SEARCH = 16;
AtlasLoot.Difficultys.DUPLICATE = 17;
AtlasLoot.Difficultys.MIN_DIF = 18;
AtlasLoot.Difficultys.MAX_DIF = 19;
File diff suppressed because it is too large Load Diff
+5 -11
View File
@@ -1,22 +1,16 @@
<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/">
<!--Ascension Files-->
<Script file="AtlasDifficulty.lua"/>
<!-- <Script file="ItemIDsDatabase.lua"/>
<Script file="ItemIDsDatabase2.lua"/>
<Script file="ItemIDsDatabase3.lua"/> -->
<!--Default Files-->
<Script file="AtlasLoot.lua"/>
<Script file="ItemIDsDatabaseFixes.lua"/>
<Script file="AtlasDifficulty.lua"/>
<Script file="Utils.lua"/>
<Script file="Filter.lua"/>
<Script file="ExtraText.lua"/>
<Script file="TextParsing.lua"/>
<Script file="Options.lua"/>
<Script file="LootButtons.lua"/>
<Script file="Atlasloot_Maps.lua"/>
<Script file="Launchers.lua"/>
<Script file="MapData.lua"/>
<Script file="Maps.lua"/>
<Script file="Launchers.lua"/>
<Script file="WishList.lua"/>
<Script file="SearchAdvanced.lua"/>
<Script file="Search.lua"/>
+205 -337
View File
@@ -1,62 +1,13 @@
--[[
Atlasloot Enhanced
Author Daviesh
Loot browser associating loot with instance bosses
Can be integrated with Atlas (http://www.atlasmod.com)
Functions:
AtlasLoot:HideFilteredItems()
AtlasLoot_FilterEnableButton()
<local> CreateCheckButton(parrent, text, num)
AtlasLoote_CreateFilterOptions()
AtlasLoot:FilterEnableButton()
]]
local BabbleInventory = AtlasLoot_GetLocaleLibBabble("LibBabble-Inventory-3.0")
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
AtlasLoot_FilterMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_SetFiltersMenu = AceLibrary("Dewdrop-2.0");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
local FilterTable = {
{
Name = AL["Armor Type"],
Type = "ArmorType",
{"Cloth", "Cloth"},
{"Leather", "Leather"},
{"Mail", "Mail"},
{"Plate", "Plate"},
},
{
Name = AL["Weapons"],
Type = "InvType",
{"One-Hand", "INVTYPE_WEAPON"},
{"Two-Hand", "INVTYPE_2HWEAPON"},
{"Main Hand", "INVTYPE_WEAPONMAINHAND"},
{"Off Hand", "INVTYPE_WEAPONOFFHAND"},
{"Caster Off Hand", "INVTYPE_HOLDABLE"},
{"Ranged", "INVTYPE_RANGED"},
{"Thrown", "INVTYPE_THROWN"},
{"Relic", "INVTYPE_RELIC"},
{"Shield", "INVTYPE_SHIELD"}
},
{
Name = AL["Accessories"],
Type = "InvType",
{"Necklace", "INVTYPE_NECK"},
{"Back", "INVTYPE_CLOAK"},
{"Ring", "INVTYPE_FINGER"},
{"Trinket", "INVTYPE_TRINKET"}
},
{
Name = AL["Secondary Stats"],
Type = "Stat",
{"Crit", "ITEM_MOD_CRIT_RATING_SHORT"},
{"Hit", "ITEM_MOD_HIT_RATING_SHORT"},
{"Haste", "ITEM_MOD_HASTE_RATING_SHORT"},
{"Expertise", "ITEM_MOD_EXPERTISE_RATING_SHORT"},
{"Armor Pen", "ITEM_MOD_ARMOR_PENETRATION_RATING_SHORT"},
{"Spell Pen", "ITEM_MOD_SPELL_PENETRATION_SHORT"}
},
{
Name = AL["Primary Stats"],
Type = "PrimaryStat",
@@ -67,6 +18,15 @@ local FilterTable = {
{"Attack Power", "ITEM_MOD_ATTACK_POWER_SHORT"},
{"Spell Power", "ITEM_MOD_SPELL_POWER_SHORT"}
},
{
Name = AL["Secondary Stats"],
Type = "Stat",
{"Crit", "ITEM_MOD_CRIT_RATING_SHORT"},
{"Hit", "ITEM_MOD_HIT_RATING_SHORT"},
{"Haste", "ITEM_MOD_HASTE_RATING_SHORT"},
{"Armor Pen", "ITEM_MOD_ARMOR_PENETRATION_RATING_SHORT"},
{"Spell Pen", "ITEM_MOD_SPELL_PENETRATION_SHORT"}
},
{
Name = AL["Defensive Stats"],
Type = "Stat",
@@ -79,337 +39,245 @@ local FilterTable = {
},
}
local VanityFilterTable = {
{"Owned", "Owned"},
{"OwnedUnknown", "Owned Unknown"},
{"OwnedExcludeKnown", "Owned Exclude Known"}
}
local CraftingFilterTable = {
{"Known", "Known"},
{"Unknown", "Unknown"},
}
-- **********************************************************************
-- ItemFilter:
-- AtlasLoot:HideFilteredItems()
-- AtlasLoot_FilterEnableButton()
-- AtlasLoot:FilterEnableButton()
-- **********************************************************************
AtlasLootFilter = {};
AtlasLootFilter["FilterList"] = {};
AtlasLootFilter = { FilterList = {} }
function AtlasLoot:HideFilteredItems()
local dataID, dataSource, tablenum = AtlasLootItemsFrame.refreshFilter[1], _G[AtlasLootItemsFrame.refreshFilter[2]], AtlasLootItemsFrame.refreshFilter[3];
local dataID, dataSource, tablenum = AtlasLootItemsFrame.refreshFilter[1], _G[AtlasLootItemsFrame.refreshFilter[2]], AtlasLootItemsFrame.refreshFilter[3]
local tablebase = dataSource[dataID][tablenum]
if not tablebase or dataID == "WishList" or dataID == "SearchResult" or AtlasLootCharDB.SelectedFilter == nil then return end
AtlasLootFilter["FilterList"] = {};
AtlasLootFilter["FilterList"].Type = dataSource[dataID].Type;
AtlasLootFilter["FilterList"].Name = dataSource[dataID].Name;
AtlasLootFilter["FilterList"].Back = dataSource[dataID].Back;
AtlasLootFilter["FilterList"].Map = dataSource[dataID].Map;
AtlasLootFilter["FilterList"][1] = {Name = dataSource[dataID][tablenum].Name};
if not tablebase or dataID == "WishList" or dataID == "SearchResult" then return end
local source = dataSource[dataID]
AtlasLootFilter["FilterList"] = {
Type = source.Type,
Name = source.Name,
Back = source.Back,
Map = source.Map,
vanity = source.vanity,
[1] = {Name = source[tablenum].Name}
}
local function getStats(itemID,sType)
for i,v in pairs(AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter]) do
if type(v) == "table" then
if v[1] and v[3] == sType then
local ItemStats = {};
GetItemStats(select(2,GetItemInfo(itemID)), ItemStats);
if ItemStats[v[2]] then
return true;
end
-- returns true if item has the desired stats
local function checkStats(itemStats, sCheck)
for pStat, sStat in pairs(AtlasLootFilterDB) do
if sStat[1] and sStat[2] == sCheck and itemStats[pStat] then
return true
end
end
return false
end
-- checks filters for the right conditions
local function checkfilters(itemStats, sCheck)
if checkStats(itemStats, sCheck) then return true end
for _, fTable in ipairs(FilterTable) do
for _, stat in ipairs(fTable) do
if fTable.Type == sCheck and AtlasLootFilterDB[stat[2]][1] then
return false
end
end
end
return true
end
local function checkNofilter(itemID, filter)
if getStats(itemID,filter) then return true end;
for i,v in pairs(AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter]) do
for n,t in ipairs(FilterTable) do
if t.Type == filter and v[1] then
return true;
end
end
end
end
local count = 0
-- checks filters and whether the id is armor or a weapon
local function getFilterType(itemID)
local filterSelect3, filterSelect2,_ , filterSelect1 = select(6,GetItemInfo(itemID));
local filter1 = AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter][filterSelect1];
local filter2 = AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter][filterSelect2];
if not itemID then return end
local itemLink, _, _, _, armorCheck = select(2,GetItemInfo(itemID))
local itemStats = GetItemStats(itemLink)
if (filter1 and filter1[1] and filter1[3] == "InvType" and getStats(itemID,"PrimaryStat") and checkNofilter(itemID, "Stat")) or
(filter2 and filter2[1] and filter2[3] == "ArmorType" and getStats(itemID,"PrimaryStat") and checkNofilter(itemID, "Stat"))
then
return true;
else
for _,v in pairs(FilterTable) do
for _,t in ipairs(v) do
if t[2] == filterSelect1 or t[2] == filterSelect2 or t[2] == filterSelect3 then
return false;
if (armorCheck == "Armor" or armorCheck == "Weapon") and checkfilters(itemStats, "PrimaryStat") and checkfilters(itemStats, "Stat") then
return true
elseif armorCheck ~= "Armor" and armorCheck ~= "Weapon" then
return true
end
end
local function getVanityFilters(itemID, learnedSpellID)
local db = AtlasLootFilterDB.VanityFilters
local learnedSpellID
if VANITY_ITEMS[itemID] and VANITY_ITEMS[itemID].learnedSpell and VANITY_ITEMS[itemID].learnedSpell ~= 0 then
learnedSpellID = VANITY_ITEMS[itemID].learnedSpell
end
if C_VanityCollection.IsCollectionItemOwned(itemID) then
if learnedSpellID and not CA_IsSpellKnown(learnedSpellID) and db["OwnedUnknown"] then
return true
elseif not learnedSpellID and db["OwnedExcludeKnown"] then
return true
elseif db["Owned"] then
return true
end
end
end
local function getCraftingFilters(spellID)
local db = AtlasLootFilterDB.CraftingFilters
if not db["Unknown"] and not db["Known"] then return true end
if (not CA_IsSpellKnown(spellID) and db["Unknown"]) or (CA_IsSpellKnown(spellID) and db["Known"]) then
return true
end
end
-- build filtered list removing any blank spaces that are not meant to be there
local count = 0
for i = 1, 30 do
if tablebase[i] then
if source.vanity then
if getVanityFilters(tablebase[i].itemID, tablebase[i].learnedSpellID) then
if i == 16 then
count = 0
end
AtlasLootFilter.FilterList[1][i-count] = tablebase[i]
elseif i == 16 then
count = 1
else
count = count + 1
end
elseif source.Type == "Crafting" then
if getCraftingFilters(tablebase[i].spellID) then
if i == 16 then
count = 0
end
AtlasLootFilter.FilterList[1][i-count] = tablebase[i]
elseif i == 16 then
count = 1
else
count = count + 1
end
else
if getFilterType(tablebase[i].itemID) or tablebase[i].icon then
if i == 16 then
count = 0
end
AtlasLootFilter.FilterList[1][i-count] = tablebase[i]
elseif i == 16 then
count = 1
else
count = count + 1
end
end
return true;
end
end
for i,v in ipairs(tablebase) do
if getFilterType(v[2]) or v[2] == 0 then
if v[1] == 16 then
count = 0;
end
table.insert(AtlasLootFilter["FilterList"][1],{v[1] - count,v[2],v[3],v[4],v[5],v[6],v[7],v[8]});
elseif v[1] == 16 then
count = 1
else
count = count + 1;
end
end
AtlasLoot:ShowItemsFrame("FilterList", "AtlasLootFilter", 1)
-- show filtered table
self:ShowItemsFrame("FilterList", "AtlasLootFilter", 1)
end
function AtlasLoot_FilterEnableButton(self, btnclick)
function AtlasLoot:FilterEnableButton(frame, btnclick)
if btnclick == "RightButton" then
if AtlasLoot_FilterMenu:IsOpen() then
AtlasLoot_FilterMenu:Close();
if self.Dewdrop:IsOpen() then
self.Dewdrop:Close()
else
AtlasLoot_FilterMenu:Unregister(AtlasLootFilterCheck);
AtlasLoot:FilterMenuRegister();
AtlasLoot_FilterMenu:Open(self);
self.Dewdrop:Unregister(AtlasLootFilterCheck)
self:FilterMenuRegister()
self.Dewdrop:Open(frame)
end
if AtlasLootFilterCheck:GetChecked() then
AtlasLootFilterCheck:SetChecked(false);
AtlasLootFilterCheck:SetChecked(false)
else
AtlasLootFilterCheck:SetChecked(true);
AtlasLootFilterCheck:SetChecked(true)
end
else
if ATLASLOOT_FILTER_ENABLE then
ATLASLOOT_FILTER_ENABLE = false;
AtlasLoot:ShowItemsFrame(AtlasLootItemsFrame.refreshFilter[1], AtlasLootItemsFrame.refreshFilter[2], AtlasLootItemsFrame.refreshFilter[3]);
if self.filterEnable then
self.filterEnable = false
self:ShowItemsFrame(AtlasLootItemsFrame.refreshFilter[1], AtlasLootItemsFrame.refreshFilter[2], AtlasLootItemsFrame.refreshFilter[3])
else
ATLASLOOT_FILTER_ENABLE = true
AtlasLoot:HideFilteredItems();
self.filterEnable = true
self:HideFilteredItems()
end
end
end
local function disableFilters(current)
local db = AtlasLootFilterDB.VanityFilters
for filter, stat in pairs(db) do
if stat and current ~= filter then
db[filter] = false
end
end
end
--[[
AtlasLoot:FilterMenuRegister:
Constructs the Filter menu.
]]
function AtlasLoot:FilterMenuRegister()
AtlasLoot_FilterMenu:Register(AtlasLootFilterCheck,
local db = AtlasLootFilterDB
self.Dewdrop:Register(AtlasLootFilterCheck,
'point', function(parent)
return "TOP", "BOTTOM"
return "TOPLEFT", "BOTTOM"
end,
'children', function(level, value)
for i,v in ipairs(AtlasLootFilterDB["FilterLists"]) do
local setFilter = false;
if AtlasLootCharDB.SelectedFilter == i then setFilter = true end
AtlasLoot_FilterMenu:AddLine(
"text", v.Name,
if _G[AtlasLootItemsFrame.refreshFilter[2]][AtlasLootItemsFrame.refreshFilter[1]].vanity then
for _, filter in ipairs(VanityFilterTable) do
local fDB = db.VanityFilters
if not fDB[filter[1]] then fDB[filter[1]] = false end
self.Dewdrop:AddLine(
"text", filter[2],
"func", function()
AtlasLootCharDB.SelectedFilter = i;
AtlasLoot_FilterMenu:Close();
fDB[filter[1]] = not fDB[filter[1]]
disableFilters(filter[1])
if self.filterEnable then
self:HideFilteredItems()
end
end,
"checked", setFilter
);
"checked", fDB[filter[1]],
"closeWhenClicked", true
)
end
AtlasLoot_FilterMenu:AddLine(
"text", AL["Add Filter Set"],
"func", function() AtlasLoot:OpenFilterCreate() end,
"notCheckable", true
);
elseif _G[AtlasLootItemsFrame.refreshFilter[2]][AtlasLootItemsFrame.refreshFilter[1]].Type == "Crafting" then
for _, filter in ipairs(CraftingFilterTable) do
local fDB = db.CraftingFilters
if not fDB[filter[1]] then fDB[filter[1]] = false end
self.Dewdrop:AddLine(
"text", filter[2],
"func", function()
fDB[filter[1]] = not fDB[filter[1]]
disableFilters(filter[1])
if self.filterEnable then
self:HideFilteredItems()
end
end,
"checked", fDB[filter[1]],
"closeWhenClicked", true
)
end
else
for _, group in ipairs(FilterTable) do
self.Dewdrop:AddLine('text' , group.Name, 'textHeight', 12, 'textWidth', 12, 'isTitle', true, "notCheckable", true)
for _, filters in ipairs(group) do
if not db[filters[2]] then db[filters[2]] = {false, group.Type} end
self.Dewdrop:AddLine(
"text", filters[1],
"func", function()
db[filters[2]][1] = not db[filters[2]][1]
if self.filterEnable then
self:HideFilteredItems()
end
end,
"checked", db[filters[2]][1]
)
end
end
end
--Close button
AtlasLoot_FilterMenu:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'func', function() AtlasLoot_FilterMenu:Close() end,
'notCheckable', true
);
self.Dewdrop:AddLine('text', AL["Close Menu"], 'textR', 0, 'textG', 1, 'textB', 1, "closeWhenClicked", true, 'notCheckable', true)
end,
'dontHook', true
)
end
--Sets all the filter check boxs for current filter
local function setFilterChecks()
local filterList = AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter];
local count = 1;
for i,v in ipairs(FilterTable) do
count = count + 1;
for n,t in ipairs(v) do
if filterList[t[2]] and filterList[t[2]][1] then
_G["AtlasLootFilterButton_"..count]:SetChecked(true);
else
_G["AtlasLootFilterButton_"..count]:SetChecked(false);
end
count = count + 1;
end
end
end
local function setFilter(arg1,type)
if AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter][arg1] and AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter][arg1][1] then
AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter][arg1] = {false,arg1,type};
else
AtlasLootFilterDB["FilterLists"][AtlasLootCharDB.SelectedFilter][arg1] = {true,arg1,type};
end
end
function AtlasLoot:HideFilterCreateButtons()
if not ATLASLOOT_BUILD_FILTER_LIST then return end
for i=1, 41 do
_G["AtlasLootFilterButton_"..i]:Hide();
end
AtlasLootFilterSelect:Hide();
AtlasLootFilterCreate:Hide();
AtlasLootFilterDelete:Hide();
end
-- **********************************************************************
-- Options:
-- AtlasLoot:HideFilteredItems()
-- **********************************************************************
ATLASLOOT_BUILD_FILTER_LIST = false;
-- Place to add new or edit existing filter lists
function AtlasLoot:OpenFilterCreate()
if not ATLASLOOT_BUILD_FILTER_LIST then
ATLASLOOT_BUILD_FILTER_LIST = true;
local count = 1;
for i,v in ipairs(FilterTable) do
local filterCatLable = AtlasLootItemsFrame:CreateFontString("AtlasLootFilterButton_"..count,"OVERLAY","GameFontNormal");
filterCatLable:SetText(v.Name);
filterCatLable:Show();
if count == 1 then
filterCatLable:SetPoint("TOP", "AtlasLootItemsFrame", "TOP",-150,-90);
elseif count == 16 then
filterCatLable:SetPoint("TOP", "AtlasLootItemsFrame", "TOP",0,-90);
elseif count == 28 then
filterCatLable:SetPoint("TOP", "AtlasLootItemsFrame", "TOP",150,-90);
else
filterCatLable:SetPoint("LEFT", "AtlasLootFilterButton_"..(count - 1), "LEFT",0,-25);
end
count = count + 1;
for n,t in ipairs(v) do
local button = CreateFrame("CheckButton", "AtlasLootFilterButton_"..count, AtlasLootItemsFrame, "OptionsCheckButtonTemplate");
_G["AtlasLootFilterButton_"..count.."Text"]:SetText(t[1]);
button:SetScript("OnClick", function() setFilter(t[2],v.Type) end)
if n == 1 then
button:SetPoint("LEFT", "AtlasLootFilterButton_"..(count - 1), "LEFT",0,-25);
else
button:SetPoint("LEFT", "AtlasLootFilterButton_"..(count - 1), "LEFT",0,-20);
end
count = count + 1;
end
end
local filterSelectButton = CreateFrame("Button", "AtlasLootFilterSelect", AtlasLootItemsFrame, "UIDropDownMenuTemplate");
filterSelectButton:SetSize(190,24);
filterSelectButton:SetPoint("Top", "AtlasLootItemsFrame", "TOP",-110,-35);
local createFilterButton = CreateFrame("Button", "AtlasLootFilterCreate", AtlasLootItemsFrame, "OptionsButtonTemplate");
createFilterButton:SetSize(130,20);
createFilterButton:SetPoint("LEFT", "AtlasLootItemsFrame_BACK", "LEFT",-150,0);
createFilterButton:SetText(AL["Add/Edit Filter"]);
createFilterButton:SetScript("OnClick", function(self) StaticPopup_Show("ATLASLOOT_ADD_FILTER_LIST") end);
local deleteFilterButton = CreateFrame("Button", "AtlasLootFilterDelete", AtlasLootItemsFrame, "OptionsButtonTemplate");
deleteFilterButton:SetSize(130,20);
deleteFilterButton:SetPoint("RIGHT", "AtlasLootItemsFrame_BACK", "RIGHT",150,0);
deleteFilterButton:SetText(AL["Delete Filter"]);
deleteFilterButton:SetScript("OnClick", function(self) StaticPopup_Show("ATLASLOOT_DELETE_FILTERLIST") end);
end
UIDropDownMenu_Initialize(AtlasLootFilterSelect, AtlasLoot.FilterSelectorMenuInitialize);
UIDropDownMenu_SetSelectedID(AtlasLootFilterSelect, AtlasLootCharDB.SelectedFilter);
setFilterChecks();
for i=1,41 do
_G["AtlasLootFilterButton_"..i]:Show();
end
AtlasLootFilterSelect:Show();
AtlasLootFilterCreate:Show();
AtlasLootFilterDelete:Show();
--Ditch the Quicklook selector
AtlasLootQuickLooksButton:Hide();
-- Hide the Filter Check-Box
AtlasLootFilterCheck:Hide();
--Hide navigation buttons by default, only show what we need
_G["AtlasLootItemsFrame_BACK"]:Show();
_G["AtlasLootItemsFrame_NEXT"]:Hide();
_G["AtlasLootItemsFrame_PREV"]:Hide();
--Hide UI objects so that only needed ones are shown
for i = 1, 30, 1 do
_G["AtlasLootItem_"..i.."_Unsafe"]:Hide();
_G["AtlasLootItem_"..i]:Hide();
_G["AtlasLootItem_"..i].itemID = 0;
_G["AtlasLootItem_"..i].spellitemID = 0;
end
--Set Page Title
AtlasLoot_BossName:SetText("Create Filter Set");
AtlasLoot_FilterMenu:Close();
end
local function FilterSelectOnClick()
AtlasLootCharDB.SelectedFilter = this:GetID();
UIDropDownMenu_SetSelectedID(AtlasLootFilterSelect, AtlasLootCharDB.SelectedFilter);
setFilterChecks();
end
function AtlasLoot:FilterSelectorMenuInitialize()
for i,v in ipairs(AtlasLootFilterDB["FilterLists"]) do
local info = {
text = v.Name;
func = FilterSelectOnClick;
};
UIDropDownMenu_AddButton(info);
end
end
--[[
StaticPopupDialogs["ATLASLOOT_ADD_FILTER_LIST"]
This is shown, if you want too add a add/edit a filter list
]]
StaticPopupDialogs["ATLASLOOT_ADD_FILTER_LIST"] = {
text = "Filter Name",
button1 = "Add Filter",
button3 = "Edit Filter",
button2 = AL["Cancel"],
OnShow = function(self)
self.editBox:SetText(UIDropDownMenu_GetText(AtlasLootFilterSelect))
self:SetFrameStrata("TOOLTIP");
end,
OnAccept = function(self)
local text = self.editBox:GetText();
table.insert(AtlasLootFilterDB["FilterLists"],AtlasLoot:CloneTable(AtlasLootFilterDB["FilterLists"][UIDropDownMenu_GetSelectedID(AtlasLootFilterSelect)]));
AtlasLootFilterDB["FilterLists"][#AtlasLootFilterDB["FilterLists"]].Name = text;
UIDropDownMenu_SetSelectedID(AtlasLootFilterSelect,#AtlasLootFilterDB["FilterLists"]);
UIDropDownMenu_SetText(AtlasLootFilterSelect,text);
end,
OnButton3 = function(self)
local text = self.editBox:GetText();
AtlasLootFilterDB["FilterLists"][UIDropDownMenu_GetSelectedID(AtlasLootFilterSelect)].Name = self.editBox:GetText();
UIDropDownMenu_SetText(AtlasLootFilterSelect,text);
end,
hasEditBox = 1,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
--[[
StaticPopupDialogs["ATLASLOOT_DELETE_FILTERLIST"]
This is shown, if you want too delete a filter list
]]
StaticPopupDialogs["ATLASLOOT_DELETE_FILTERLIST"] = {
text = AL["Delete Filter"],
button1 = AL["Delete"],
button2 = AL["Cancel"],
OnShow = function()
this:SetFrameStrata("TOOLTIP");
end,
OnAccept = function()
table.remove(AtlasLootFilterDB["FilterLists"],UIDropDownMenu_GetSelectedID(AtlasLootFilterSelect));
UIDropDownMenu_SetSelectedID(AtlasLootFilterSelect,1);
UIDropDownMenu_SetText(AtlasLootFilterSelect,UIDropDownMenu_GetText(AtlasLootFilterSelect));
end,
timeout = 0,
whileDead = 1,
hideOnEscape = 1
};
end
+42 -124
View File
@@ -1,34 +1,15 @@
--[[
Name : AtlasLootFu
Version : 2.0
Author : Daviesh (oma_daviesh@hotmail.com)
Website : https://discord.gg/uYCE2X2FgA
Description : Adds AtlasLoot to FuBar.
]]
--Invoke libraries
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
--Make an LDB object
LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject("AtlasLoot", {
type = "launcher",
local icon = LibStub('LibDBIcon-1.0')
local minimap = LibStub:GetLibrary('LibDataBroker-1.1'):NewDataObject("AtlasLoot", {
type = 'data source',
text = "AtlasLoot",
icon = "Interface\\Icons\\INV_Box_01",
OnClick = function()
if IsShiftKeyDown() then
AtlasLootOptions_Toggle();
else
if AtlasLootDefaultFrame:IsVisible() then
AtlasLootDefaultFrame:Hide();
else
AtlasLootDefaultFrame:Show();
end
end
end,
})
})
function AtlasLoot_OnBarButtonClick(button)
if IsShiftKeyDown() then
AtlasLootOptions_Toggle();
function minimap.OnClick(frame, button)
GameTooltip:Hide()
if IsShiftKeyDown() then
AtlasLoot:OptionsToggle();
else
if AtlasLootDefaultFrame:IsVisible() then
AtlasLootDefaultFrame:Hide();
@@ -38,110 +19,47 @@ function AtlasLoot_OnBarButtonClick(button)
end
end
--[[function AtlasLoot_MinimapButtonInit()
if AtlasLootMinimapButtonFrame then
if IsAddOnLoaded("FuBar") then
AtlasLootMinimapButtonFrame:SetPoint("CENTER", "UIParent", "CENTER");
AtlasLootMinimapButtonFrame:Hide();
elseif(AtlasLoot.db.profile.MinimapButton == true) then
AtlasLootMinimapButtonFrame:SetPoint("TOPLEFT","Minimap","TOPLEFT",54 - (78 * cos(AtlasLoot.db.profile.MinimapButtonAngle)),(78 * sin(AtlasLoot.db.profile.MinimapButtonAngle)) - 55);
AtlasLootMinimapButtonFrame:Show();
else
AtlasLootMinimapButtonFrame:SetPoint("CENTER", "UIParent", "CENTER");
AtlasLootMinimapButtonFrame:Hide();
end
end
function minimap.OnLeave()
GameTooltip:Hide()
end
function AtlasLoot_MinimapButtonOnEnter()
GameTooltip:SetOwner(this, "ANCHOR_LEFT");
GameTooltip:SetText(string.sub(ATLASLOOT_VERSION, 11, 28));
GameTooltip:AddLine(AL["|cff1eff00Left-Click|r Browse Loot Tables"]);
GameTooltip:AddLine(AL["|cffff0000Shift-Click|r View Options"]);
GameTooltip:AddLine(AL["|cffccccccRight-Click + Drag|r Move Minimap Button"]);
GameTooltip:Show();
-- handle minimap tooltip
local function GetTipAnchor(frame)
local x, y = frame:GetCenter()
if not x or not y then return 'TOPLEFT', 'BOTTOMLEFT' end
local hhalf = (x > UIParent:GetWidth() * 2 / 3) and 'RIGHT' or (x < UIParent:GetWidth() / 3) and 'LEFT' or ''
local vhalf = (y > UIParent:GetHeight() / 2) and 'TOP' or 'BOTTOM'
return vhalf .. hhalf, frame, (vhalf == 'TOP' and 'BOTTOM' or 'TOP') .. hhalf
end
-- Thanks to Yatlas and Atlas for this code
function AtlasLoot_MinimapButtonBeingDragged()
-- Thanks to Gello and Dan Gilbert for this code
local xpos,ypos = GetCursorPosition()
local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom()
xpos = xmin-xpos/UIParent:GetScale()+70
ypos = ypos/UIParent:GetScale()-ymin-70
AtlasLoot_MinimapButtonSetPosition(math.deg(math.atan2(ypos,xpos)));
function minimap.OnEnter(frame)
GameTooltip:SetOwner(frame, 'ANCHOR_NONE')
GameTooltip:SetPoint(GetTipAnchor(frame))
GameTooltip:ClearLines()
GameTooltip:AddLine("AtlasLoot")
GameTooltip:AddLine("|cff1eff00Left-Click|r Browse Loot Tables")
GameTooltip:AddLine("|cffff0000Shift-Click|r View Options")
GameTooltip:AddLine("|cffccccccLeft-Click + Drag|r Move Minimap Button")
GameTooltip:Show()
end
function AtlasLoot_MinimapButtonSetPosition(v)
if(v < 0) then
v = v + 360;
end
function AtlasLoot:MinimapIconSetup()
if not self.db.profile.minimap then
self.db.profile.minimap = {hide = false}
end
AtlasLoot.db.profile.MinimapButtonAngle = v;
AtlasLoot_MinimapButtonUpdatePosition();
if icon then
icon:Register('AtlasLoot', minimap, self.db.profile.minimap)
end
end
function AtlasLoot_MinimapButtonUpdatePosition()
local radius = AtlasLoot.db.profile.MinimapButtonRadius;
AtlasLootMinimapButtonFrame:SetPoint(
"TOPLEFT",
"Minimap",
"TOPLEFT",
54 - (radius * cos(AtlasLoot.db.profile.MinimapButtonAngle)),
(radius * sin(AtlasLoot.db.profile.MinimapButtonAngle)) - 55
);
if(AtlasLoot.db.profile.MinimapButton == true) then
AtlasLootMinimapButtonFrame:Show();
-- show/hide minimap icon
function AtlasLoot:ToggleMinimap()
local hide = not self.db.profile.minimap.hide
self.db.profile.minimap.hide = hide
if hide then
icon:Hide("AtlasLoot")
else
AtlasLootMinimapButtonFrame:Hide();
icon:Show("AtlasLoot")
end
end]]
--[[if IsAddOnLoaded("FuBar") then
if AtlasLootMinimapButtonFrame then
AtlasLootMinimapButtonFrame:SetPoint("CENTER", "UIParent", "CENTER");
AtlasLootMinimapButtonFrame:Hide();
end
AtlasLootFu = LibStub("AceAddon-3.0"):NewAddon("AtlasLootFu");
AceDB = LibStub("AceDB-3.0");
AtlasLootFu.db = AceDB:New("AtlasLootFuDB");
LibStub("AceAddon-3.0"):EmbedLibrary(AtlasLootFu, "LibFuBarPlugin-Mod-3.0", true);
AtlasLootFu:SetFuBarOption("tooltipType", "GameTooltip");
--AtlasLootFu:SetFuBarOption("configType", "Dewdrop-2.0");
AtlasLootFu:SetFuBarOption("iconPath", "Interface\\Icons\\INV_Box_01");
--AtlasLootFu:SetFuBarOption("defaultMinimapPosition", 220);
AtlasLootFu:SetFuBarOption("cannotDetachTooltip", true);
AtlasLootFu:SetFuBarOption("hasNoColor", true);
--Make sure the plugin is the rightt format when activated
function AtlasLootFu:OnEnable()
self:UpdateFuBarPlugin();
end
--Define text to display when the cursor mouses over the plugin
function AtlasLootFu:OnUpdateFuBarTooltip()
GameTooltip:AddLine(AL["|cff1eff00Left-Click|r Browse Loot Tables"]);
GameTooltip:AddLine(AL["|cffff0000Shift-Click|r View Options"]);
GameTooltip:AddLine(AL["|cffccccccLeft-Click + Drag|r Move Minimap Button"]);
end
--Define what to do when the plugin is clicked
function AtlasLootFu:OnFuBarClick(button)
--Left click -> open loot browser
--Shift Left Click -> show options menu
--Right click -> standard FuBar options
AtlasLoot_OnBarButtonClick(button);
end
function AtlasLootFu:OpenMenu()
AtlasLootOptions_Toggle();
end
end]]
end
File diff suppressed because it is too large Load Diff
+257
View File
@@ -0,0 +1,257 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
local ORANGE = "|cffFF8400"
local GOLD = "|cffffcc00"
local WHITE = "|cFFFFFFFF"
local CYAN = "|cff00ffff"
local DefaultPin = "questlog-questtypeicon-daily"
-- Map Functions
local playerFaction = UnitFactionGroup("player")
local lastMap
local totalPins = 0
-- Creates the map pins
function AtlasLoot:CreateMapPins(list)
_G["AtlasLoot_PlayerMapPin"]:Hide()
-- Hide all pins before reshowing so any extras arnt showing
if totalPins then
for i = 1, totalPins do
_G["AtlasLoot_MapPin"..i]:Hide()
end
end
-- Creates buttons on the map for pins if a button dosnt already exist
-- If a button exists reuse it
for i,map in ipairs(list) do
--create pin buttons
if not _G["AtlasLoot_MapPin"..i] then
-- Map Pins
local mapPin = CreateFrame("Button","AtlasLoot_MapPin"..i, AtlasLootDefaultFrame_Map)
mapPin:SetSize(25,25)
mapPin:SetFrameStrata("HIGH")
mapPin.text = mapPin:CreateFontString(nil, "OVERLAY","GameFontNormal")
mapPin.text:SetPoint("LEFT",mapPin, 30, 0)
mapPin.text:SetJustifyH("LEFT")
mapPin.text:SetFont("GameFontNormal", 28)
mapPin.text:SetSize(150,12)
mapPin.tex = mapPin:CreateTexture(nil, "ARTWORK")
mapPin.tex:SetPoint("CENTER")
totalPins = totalPins + 1
end
-- converts a standard coordinate x,y to stardard anchor points
local x = ((AtlasLootDefaultFrame_Map:GetWidth()/100) * map[2][1]) - (_G["AtlasLoot_MapPin"..i]:GetWidth()/2)
local y = (-(AtlasLootDefaultFrame_Map:GetHeight()/100) * map[2][2]) + (_G["AtlasLoot_MapPin"..i]:GetHeight()/2)
_G["AtlasLoot_MapPin"..i]:SetScript("OnEnter", function(btn)
self.showCords = true
GameTooltip:SetOwner(btn, "ANCHOR_TOPLEFT")
GameTooltip:AddLine(WHITE..map[1])
if map[4] and list.groups[map[4]] then
for _,v in ipairs(list.groups[map[4]]) do
if v ~= map[1] then
GameTooltip:AddLine(WHITE..v)
end
end
end
GameTooltip:AddLine("("..map[2][1]..", "..map[2][2]..")")
GameTooltip:Show()
end)
_G["AtlasLoot_MapPin"..i]:SetScript("OnLeave", function()
GameTooltip:Hide()
end)
if map[3] then
local tex = AtlasUtil:GetAtlasInfo(map[3])
_G["AtlasLoot_MapPin"..i].tex:SetTexture(tex.filename)
_G["AtlasLoot_MapPin"..i].tex:SetTexCoord(tex.leftTexCoord, tex.rightTexCoord, tex.topTexCoord, tex.bottomTexCoord)
_G["AtlasLoot_MapPin"..i].tex:SetSize(25,25)
else
local tex = AtlasUtil:GetAtlasInfo(DefaultPin)
_G["AtlasLoot_MapPin"..i].tex:SetTexture(tex.filename)
_G["AtlasLoot_MapPin"..i].tex:SetTexCoord(tex.leftTexCoord, tex.rightTexCoord, tex.topTexCoord, tex.bottomTexCoord)
_G["AtlasLoot_MapPin"..i].tex:SetSize(25,25)
end
_G["AtlasLoot_MapPin"..i].text:SetText(CYAN..map[1])
_G["AtlasLoot_MapPin"..i]:ClearAllPoints()
_G["AtlasLoot_MapPin"..i]:SetPoint("TOPLEFT",AtlasLootDefaultFrame_Map,x ,y)
_G["AtlasLoot_MapPin"..i]:Show()
end
end
function AtlasLoot:MapOnEnter()
local x, y = self:GetCursorCords()
if self.showCords then
AtlasLootDefaultFrame_Map.cursorCords:SetText(WHITE.."Cursor: "..x.." , "..y)
end
end
-- Track the coordinates off the mouse while it is on the map frame
function AtlasLoot:GetCursorCords()
local scale,x, y = AtlasLootDefaultFrame_Map:GetEffectiveScale(), GetCursorPosition()
local width, height = AtlasLootDefaultFrame_Map:GetWidth()/100, AtlasLootDefaultFrame_Map:GetHeight()/100
x, y = math.ceil(((x/scale) - AtlasLootDefaultFrame_Map:GetLeft())/width), math.ceil((((y/scale) - AtlasLootDefaultFrame_Map:GetTop())/height) * -1)
return x, y
end
function AtlasLoot:PlayerPin(firstSet)
if AtlasLootDefaultFrame_Map:IsVisible() and AtlasLoot_MapData[self.CurrentMap].ZoneName[1] == GetRealZoneText() and self.MapNum == GetCurrentMapDungeonLevel() then
_G["AtlasLoot_PlayerMapPin"]:Show()
else
return
end
if GetUnitSpeed("player") > 0 or firstSet then
local x, y = GetPlayerMapPosition("player")
x = ((AtlasLootDefaultFrame_Map:GetWidth()/100) * (x * 100)) - (_G["AtlasLoot_PlayerMapPin"]:GetWidth()/2)
y = (-(AtlasLootDefaultFrame_Map:GetHeight()/100) * (y * 100)) + (_G["AtlasLoot_PlayerMapPin"]:GetHeight()/2)
_G["AtlasLoot_PlayerMapPin"]:ClearAllPoints()
_G["AtlasLoot_PlayerMapPin"]:SetPoint("TOPLEFT",AtlasLootDefaultFrame_Map, x, y )
_G["AtlasLoot_PlayerMapPin"].texture:SetRotation(GetPlayerFacing())
end
self.playerPinTimer = self:ScheduleTimer("PlayerPin", .1)
end
function AtlasLoot:SetNavButtons(mapID, mapNum)
if not AtlasLootDefaultFrame_Map:IsVisible() then return end
--Hide navigation buttons by default, only show what we need
_G["AtlasLootItemsFrame_BACK"]:Hide()
_G["AtlasLootItemsFrame_NEXT"]:Hide()
_G["AtlasLootItemsFrame_PREV"]:Hide()
if mapNum ~= #_G["AtlasLoot_MapData"][mapID] then
_G["AtlasLootItemsFrame_NEXT"]:SetParent("AtlasLootDefaultFrame_Map")
_G["AtlasLootItemsFrame_NEXT"]:Show()
_G["AtlasLootItemsFrame_NEXT"].mapNum = mapNum + 1
_G["AtlasLootItemsFrame_NEXT"].mapID = mapID
_G["AtlasLootItemsFrame_NEXT"]:ClearAllPoints()
_G["AtlasLootItemsFrame_NEXT"]:SetPoint("BOTTOMRIGHT", "AtlasLootDefaultFrame_Map", "BOTTOMRIGHT",-5,5)
end
if mapNum ~= 1 then
_G["AtlasLootItemsFrame_PREV"]:SetParent("AtlasLootDefaultFrame_Map")
_G["AtlasLootItemsFrame_PREV"]:Show()
_G["AtlasLootItemsFrame_PREV"].mapNum = mapNum - 1
_G["AtlasLootItemsFrame_PREV"].mapID = mapID
_G["AtlasLootItemsFrame_PREV"]:ClearAllPoints()
_G["AtlasLootItemsFrame_PREV"]:SetPoint("BOTTOMLEFT", "AtlasLootDefaultFrame_Map", "BOTTOMLEFT",5,5)
end
end
--called everytime you open a map hiding the loot item buttons
function AtlasLoot:MapOnShow(mapID, mapNum, refresh)
if not refresh and AtlasLootDefaultFrame_Map:IsVisible() then
AtlasLootDefaultFrame_Map:Hide()
AtlaslLoot_LootBackground:Show()
self:BackButton_OnClick()
AtlasLoot_BossName:Show()
Atlasloot_HeaderLabel:Hide()
self:ScrollFrameUpdate()
else
if self.CurrentMap then
AtlasLoot_BossName:Hide()
-- Hide the Filter Check-Box
AtlasLootFilterCheck:Hide()
AtlaslLoot_LootBackground:Hide()
--Hide UI objects so that only needed ones are shown
for i = 1, 30, 1 do
_G["AtlasLootItem_"..i]:Hide()
_G["AtlasLootItem_"..i].itemID = 0
end
AtlasLootDefaultFrame_Map:Show()
Atlasloot_HeaderLabel:Show()
self:ScrollFrameUpdate(true)
AtlasLootDefaultFrameScroll:Hide()
SetMapToCurrentZone()
if mapNum and mapID then
self.CurrentMap = mapID
elseif AtlasLoot_MapData[self.CurrentMap].ZoneName[1] == GetRealZoneText() then
if GetCurrentMapDungeonLevel() == 0 then
mapNum = 1
else
mapNum = GetCurrentMapDungeonLevel()
end
elseif lastMap == self.CurrentMap then
mapNum = self.MapNum
end
lastMap = self.CurrentMap
self:MapSelect(self.CurrentMap, mapNum)
end
end
end
--called to change the current displayed map
function AtlasLoot:MapSelect(mapID, mapNum)
local map = AtlasLoot_MapData[mapID]
if map.MapName then
for i = 1, 12 do
local texture = _G["AtlasLoot_MapDetailTile"..i]:SetTexture("Interface\\Worldmap\\"..map.MapName.."\\"..map.MapName..mapNum.."_"..i)
if not texture then
_G["AtlasLoot_MapDetailTile"..i]:SetTexture("Interface\\Worldmap\\"..map.MapName.."\\"..map.MapName..i)
end
end
end
local pinsList = {groups = {}}
local group = 0
for _, v in ipairs (map[mapNum]) do
if v.cords then
group = group + 1
tinsert(pinsList,{v[1],v.cords,v.pinType, group})
end
if group ~= 0 then
if not pinsList.groups[group] then pinsList.groups[group] = {} end
tinsert(pinsList.groups[group], v[1])
end
end
self.MapNum = mapNum
self.CurrentMap = mapID
self:SubTableScrollFrameUpdate(mapID, "AtlasLoot_MapData", mapNum)
self:SetNavButtons(mapID, mapNum)
self:CreateMapPins(pinsList)
self:CancelTimer(self.playerPinTimer)
self:PlayerPin(true)
local text = map.ZoneName[1]..WHITE.." ["..map.Acronym.."]\n"..
GOLD .. "Location: ".. WHITE..map.Location[1].."\n"..
GOLD .. "Level Range: ".. WHITE..map.LevelRange.."\n"..
GOLD .. "Minimum Level: ".. WHITE..map.MinLevel.."\n"..
GOLD .. "Player Limit: ".. WHITE..map.PlayerLimit
if map.Reputation and type(map.Reputation) == "table" then
text = text .. "\n" .. GOLD .. AL["Reputation"] .. ": ".. WHITE .. map.Reputation[playerFaction]
elseif map.Reputation then
text = text .. "\n" .. GOLD .. AL["Reputation"] .. ": ".. WHITE .. map.Reputation
end
Atlasloot_HeaderLabel:SetText(text)
self:SetMapButtonText(mapID, mapNum)
end
function AtlasLoot:SetMapButtonText(mapID, mapNum)
local map = AtlasLoot_MapData[mapID]
mapNum = mapNum or 1
local text
if map[mapNum][1].Zone then
text = map[mapNum][2][1]
else
text = map[mapNum][1][1]
end
AtlasLootDefaultFrame_MapButton:SetText(text)
end
--drop down map menu
function AtlasLoot:MapMenuOpen(frame)
local mapID = self.CurrentMap
local map = AtlasLoot_MapData[mapID]
local menuList = { [1] = {} }
for i,v in ipairs(map) do
local text
if v[1].Zone then
text = map[i][2][1]
else
text = v[1][1]
end
tinsert(menuList[1], {text = WHITE..text, func = function() self:MapOnShow(mapID, i, true) end, notCheckable = true, closeWhenClicked = true, textHeight = 12, textWidth = 12})
end
tinsert(menuList[1], {divider = 35})
tinsert(menuList[1], {text = ORANGE..AL["Open AscensionDB To Zone Map"], func = function() self:OpenDBURL(AtlasLoot_MapData[self.CurrentMap].ZoneName[2] , "zone") end, notCheckable = true, closeWhenClicked = true, textHeight = 12, textWidth = 12})
tinsert(menuList[1], {close = true, divider = 35})
self:OpenDewdropMenu(frame, menuList)
end
+182 -290
View File
@@ -2,152 +2,102 @@
Options.lua
Functions:
AtlasLoot_OptionsPanelOnLoad(panel)
AtlasLootOptions_Init()
AtlasLootOptions_OnLoad()
AtlasLootOptions_SafeLinksToggle()
AtlasLootOptions_AllLinksToggle()
AtlasLootOptions_DefaultTTToggle()
AtlasLootOptions_LootlinkTTToggle()
AtlasLootOptions_ItemSyncTTToggle()
AtlasLootOptions_EquipCompareToggle()
AtlasLootOptions_OpaqueToggle()
AtlasLootOptions_ItemIDToggle()
AtlasLootOptions_MinimapToggle()
AtlasLootOptions_LoDSpam()
AtlasLootOptions_LoDStartup()
AtlasLoot_SetupLootBrowserSlider(frame, mymin, mymax, step)
AtlasLoot_UpdateLootBrowserSlider(frame)
AtlasLoot_DisplayHelp();
AtlasLoot_CreateOptionsInfoTooltips()
AtlasLoot:OptionsInit()
AtlasLoot:OptionsAllLinksToggle()
AtlasLoot:OptionsEquipCompareToggle()
AtlasLoot:OptionsOpaqueToggle()
AtlasLoot:OptionsItemIDToggle()
AtlasLoot:OptionsLoDStartup()
AtlasLoot:SetupLootBrowserSlider(frame, mymin, mymax, step)
AtlasLoot:UpdateLootBrowserSlider(frame)
AtlasLoot:DisplayHelp()
AtlasLoot:CreateOptionsInfoTooltips()
]]
local GREY = "|cff999999";
local RED = "|cffff0000";
local WHITE = "|cffFFFFFF";
local GREEN = "|cff1eff00";
local PURPLE = "|cff9F3FFF";
local BLUE = "|cff0070dd";
local ORANGE = "|cffFF8400";
local GREY = "|cff999999"
local WHITE = "|cffFFFFFF"
local GREEN = "|cff1eff00"
local ORANGE = "|cffFF8400"
--Invoke libraries
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
function AtlasLoot_OptionsPanelOnLoad(panel)
panel.name=AL["AtlasLoot"];
InterfaceOptions_AddCategory(panel);
panel.name=AL["AtlasLoot"]
InterfaceOptions_AddCategory(panel)
end
function AtlasLootOptions_Init()
function AtlasLoot:OptionsInit()
--Initialise all the check boxes on the options frame
AtlasLootOptionsFrameSafeLinks:SetChecked(AtlasLoot.db.profile.SafeLinks);
AtlasLootOptionsFrameDefaultTT:SetChecked(AtlasLoot.db.profile.DefaultTT);
AtlasLootOptionsFrameLootlinkTT:SetChecked(AtlasLoot.db.profile.LootlinkTT);
AtlasLootOptionsFrameItemSyncTT:SetChecked(AtlasLoot.db.profile.ItemSyncTT);
AtlasLootOptionsFrameEquipCompare:SetChecked(AtlasLoot.db.profile.EquipCompare);
AtlasLootOptionsFrameOpaque:SetChecked(AtlasLoot.db.profile.Opaque);
AtlasLootOptionsFrameAutoInstance:SetChecked(AtlasLoot.db.profile.AutoCurrentInstance);
AtlasLootOptionsFrameItemID:SetChecked(AtlasLoot.db.profile.ItemIDs);
AtlasLootOptionsFrameLoDStartup:SetChecked(AtlasLoot.db.profile.LoadAllLoDStartup);
AtlasLootOptionsFrameLootBrowserScale:SetValue(AtlasLoot.db.profile.LootBrowserScale);
AtlasLootOptionsFrameEquipCompare:SetChecked(self.db.profile.EquipCompare)
AtlasLootOptionsFrameOpaque:SetChecked(self.db.profile.Opaque)
AtlasLootOptionsFrameAutoInstance:SetChecked(self.db.profile.AutoCurrentInstance)
AtlasLootOptionsFrameItemID:SetChecked(self.db.profile.ItemIDs)
AtlasLootOptionsFrameLootBrowserScale:SetValue(self.db.profile.LootBrowserScale)
AtlasLootOptionsMinimapIcon:SetChecked(self.db.profile.minimap.hide)
AtlasLootOptionsFrameCraftingInfo:SetChecked(self.db.profile.recipeExtraInfoSwitch)
end
function AtlasLootOptions_OnLoad()
--Disable checkboxes of missing addons
if( not LootLink_SetTooltip ) then
AtlasLootOptionsFrameLootlinkTT:Disable();
AtlasLootOptionsFrameLootlinkTTText:SetText(AL["|cff9d9d9dLootlink Tooltips|r"]);
end
if( not ItemSync ) then
AtlasLootOptionsFrameItemSyncTT:Disable();
AtlasLootOptionsFrameItemSyncTTText:SetText(AL["|cff9d9d9dItemSync Tooltips|r"]);
end
AtlasLootOptions_Init();
temp=AtlasLoot.db.profile.SafeLinks;
end
function AtlasLootOptions_SafeLinksToggle()
if(AtlasLoot.db.profile.SafeLinks) then
AtlasLoot.db.profile.SafeLinks = false;
AtlasLoot.db.profile.AllLinks = true;
--[[
AtlasLoot:OptionsToggle:
Toggle on/off the options window
]]
function AtlasLoot:OptionsToggle()
if InterfaceOptionsFrame_OpenToCategory and not InterfaceOptionsFrame:IsVisible() then
InterfaceOptionsFrame_OpenToCategory(AL["AtlasLoot"])
else
AtlasLoot.db.profile.SafeLinks = true;
AtlasLoot.db.profile.AllLinks = false;
end
AtlasLootOptions_Init();
end
function AtlasLootOptions_DefaultTTToggle()
AtlasLoot.db.profile.DefaultTT = true;
AtlasLoot.db.profile.LootlinkTT = false;
AtlasLoot.db.profile.ItemSyncTT = false;
AtlasLootOptions_Init();
end
function AtlasLootOptions_LootlinkTTToggle()
AtlasLoot.db.profile.DefaultTT = false;
AtlasLoot.db.profile.LootlinkTT = true;
AtlasLoot.db.profile.ItemSyncTT = false;
AtlasLootOptions_Init();
end
function AtlasLootOptions_ItemSyncTTToggle()
AtlasLoot.db.profile.DefaultTT = false;
AtlasLoot.db.profile.LootlinkTT = false;
AtlasLoot.db.profile.ItemSyncTT = true;
AtlasLootOptions_Init();
end
function AtlasLootOptions_OpaqueToggle()
AtlasLoot.db.profile.Opaque=AtlasLootOptionsFrameOpaque:GetChecked();
if (AtlasLoot.db.profile.Opaque) then
AtlasLootItemsFrame_Back:SetTexture(0, 0, 0, 1);
else
AtlasLootItemsFrame_Back:SetTexture(0, 0, 0, 0.65);
InterfaceOptionsFrame:Hide()
end
AtlasLootOptions_Init();
InterfaceOptionsFrame:SetFrameStrata("DIALOG")
end
function AtlasLoot:OptionsOpaqueToggle()
self.db.profile.Opaque = AtlasLootOptionsFrameOpaque:GetChecked()
if (self.db.profile.Opaque) then
AtlasLootItemsFrame_Back:SetTexture(0, 0, 0, 1)
Atlasloot_Difficulty_ScrollFrame_Back:SetTexture(0, 0, 0, 1)
Atlasloot_SubTableFrame_Back:SetTexture(0, 0, 0, 1)
else
AtlasLootItemsFrame_Back:SetTexture(0, 0, 0, 0.05)
Atlasloot_Difficulty_ScrollFrame_Back:SetTexture(0, 0, 0, 0.05)
Atlasloot_SubTableFrame_Back:SetTexture(0, 0, 0, 0.05)
end
self:OptionsInit()
end
function AtlasLoot:Options_AutoInstanceToggle()
AtlasLoot.db.profile.AutoCurrentInstance = AtlasLootOptionsFrameAutoInstance:GetChecked();
self.db.profile.AutoCurrentInstance = AtlasLootOptionsFrameAutoInstance:GetChecked()
end
function AtlasLootOptions_LoDStartup()
if (AtlasLoot.db.profile.LoadAllLoDStartup) then
AtlasLoot.db.profile.LoadAllLoDStartup = false;
else
AtlasLoot.db.profile.LoadAllLoDStartup = true;
end
AtlasLootOptions_Init();
function AtlasLoot:OptionsItemIDToggle()
self.db.profile.ItemIDs=AtlasLootOptionsFrameItemID:GetChecked()
self:OptionsInit()
end
function AtlasLootOptions_ItemIDToggle()
AtlasLoot.db.profile.ItemIDs=AtlasLootOptionsFrameItemID:GetChecked();
AtlasLootOptions_Init();
end
function AtlasLoot_SetupLootBrowserSlider(frame, mymin, mymax, step)
_G[frame:GetName().."Text"]:SetText(AL["Loot Browser Scale: "].." ("..frame:GetValue()..")");
frame:SetMinMaxValues(mymin, mymax);
_G[frame:GetName().."Low"]:SetText(mymin);
_G[frame:GetName().."High"]:SetText(mymax);
frame:SetValueStep(step);
function AtlasLoot:SetupLootBrowserSlider(frame, mymin, mymax, step)
_G[frame:GetName().."Text"]:SetText(AL["Loot Browser Scale: "].." ("..frame:GetValue()..")")
frame:SetMinMaxValues(mymin, mymax)
_G[frame:GetName().."Low"]:SetText(mymin)
_G[frame:GetName().."High"]:SetText(mymax)
frame:SetValueStep(step)
self:OptionsInit()
end
--Borrowed from Atlas, thanks Dan!
local function round(num, idp)
local mult = 10 ^ (idp or 0);
return math.floor(num * mult + 0.5) / mult;
local mult = 10 ^ (idp or 0)
return math.floor(num * mult + 0.5) / mult
end
function AtlasLoot_UpdateLootBrowserSlider(frame)
_G[frame:GetName().."Text"]:SetText(AL["Loot Browser Scale: "].." ("..round(frame:GetValue(),2)..")");
function AtlasLoot:UpdateLootBrowserSlider(frame)
_G[frame:GetName().."Text"]:SetText(AL["Loot Browser Scale: "].." ("..round(frame:GetValue(),2)..")")
end
function AtlasLoot_UpdateLootBrowserScale()
AtlasLootDefaultFrame:SetScale(AtlasLoot.db.profile.LootBrowserScale);
function AtlasLoot:UpdateLootBrowserScale()
AtlasLootDefaultFrame:SetScale(self.db.profile.LootBrowserScale)
end
function AtlasLoot_DisplayHelp()
function AtlasLoot:DisplayHelp()
if not _G["AtlasLootHelpFrame_HelpText"] then
local framewidht = InterfaceOptionsFramePanelContainer:GetWidth()
local panel3 = CreateFrame("ScrollFrame", "AtlasLootHelpFrame_HelpTextFrameScroll", AtlasLootHelpFrame, "UIPanelScrollFrameTemplate")
@@ -169,16 +119,13 @@ function AtlasLoot_DisplayHelp()
local Text = scc:CreateFontString("AtlasLootHelpFrame_HelpText","OVERLAY","GameFontNormal")
Text:SetPoint("TOPLEFT", scc, "TOPLEFT", 0, 0)
Text:SetText(
ORANGE..AL["How to open the standalone Loot Browser:"].."\n"..
WHITE..AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."].."\n\n"..
ORANGE..AL["How to link an item to someone else:"].."\n"..
WHITE..AL["Shift+Left Click the item like you would for any other in-game item"].."\n\n"..
ORANGE..AL["How to view an item in the Dressing Room:"].."\n"..
WHITE..AL["Simply Ctrl+Left Click on the item. Sometimes the dressing room window is hidden behind the Atlas or AtlasLoot windows, so if nothing seems to happen move your Atlas or AtlasLoot windows and see if anything is hidden."].."\n\n"..
ORANGE..AL["How to open an item to its AscensionDB page in your browser window:"].."\n"..
WHITE..AL["Alt+Right Click any item to open it in a browser window."].."\n\n"..
ORANGE..AL["How to add an item to the wishlist:"].."\n"..
WHITE..AL["Alt+Left Click any item to add it to the wishlist."].."\n\n"..
WHITE..AL["Right Click any item and open the context menu and click add to wishlist."].."\n\n"..
WHITE..AL["Or Alt+Left Click any item to add it to the default wishlist."].."\n\n"..
ORANGE..AL["How to delete an item from the wishlist:"].."\n"..
WHITE..AL["While on the wishlist screen, just Alt+Left Click on an item to delete it."].."\n\n"..
ORANGE..AL["What else does the wishlist do?"].."\n"..
@@ -188,7 +135,7 @@ function AtlasLoot_DisplayHelp()
ORANGE..AL["HELP!! I have broken the mod somehow!"].."\n"..
WHITE..AL["Use the reset buttons available in the options menu, or type '/al reset' in your chat window."].."\n\n"..
GREY..AL["For further help, see our website and forums: "]..GREEN.."https://discord.gg/uYCE2X2FgA"
);
)
Text:SetWidth(framewidht-80)
Text:SetJustifyH("LEFT")
Text:SetJustifyV("TOP")
@@ -196,195 +143,140 @@ function AtlasLoot_DisplayHelp()
end
--[[
AtlasLoot_CreateOptionsInfoTooltips()
AtlasLoot:CreateOptionsInfoTooltips()
Adds explanatory tooltips to Atlasloot options
]]
function AtlasLoot_CreateOptionsInfoTooltips()
AtlasLoot:AddTooltip("AtlasLootOptionsFrameDefaultTT", nil) -- AL["Default Tooltips"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameLootlinkTT", nil) -- AL["Lootlink Tooltips"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameItemSyncTT", nil) -- AL["ItemSync Tooltips"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameOpaque", nil) -- AL["Make Loot Table Opaque"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameItemID", nil) -- AL["Show itemIDs at all times"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameSafeLinks", nil) -- AL["Safe Chat Links |cff1eff00(recommended)|r"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameEquipCompare", nil) -- AL["Show Comparison Tooltips"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameLoDSpam", nil) -- AL["Notify on LoD Module Load"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrameLootBrowserScale", nil) -- Scale SLIDER
AtlasLoot:AddTooltip("AtlasLootOptionsFrame_ResetAtlasLoot", nil) -- AL["Reset Frames"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrame_ResetWishlist", nil) -- AL["Reset Wishlist"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrame_ResetQuicklooks", nil) -- AL["Reset Quicklooks"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrame_FuBarShow", nil) -- AL["Show FuBar Plugin"]
AtlasLoot:AddTooltip("AtlasLootOptionsFrame_FuBarHide", nil) -- AL["Hide FuBar Plugin"]
AtlasLoot:AddTooltip("AtlasLoot_SelectLootBrowserStyle", nil)
function AtlasLoot:CreateOptionsInfoTooltips()
self:AddTooltip("AtlasLootOptionsFrameOpaque", nil) -- AL["Make Loot Table Opaque"]
self:AddTooltip("AtlasLootOptionsFrameItemID", nil) -- AL["Show itemIDs at all times"]
self:AddTooltip("AtlasLootOptionsFrameEquipCompare", nil) -- AL["Show Comparison Tooltips"]
self:AddTooltip("AtlasLootOptionsFrameLoDSpam", nil) -- AL["Notify on LoD Module Load"]
self:AddTooltip("AtlasLootOptionsFrameLootBrowserScale", nil) -- Scale SLIDER
self:AddTooltip("AtlasLootOptionsFrame_ResetAtlasLoot", nil) -- AL["Reset Frames"]
self:AddTooltip("AtlasLootOptionsFrame_ResetWishlist", nil) -- AL["Reset Wishlist"]
self:AddTooltip("AtlasLootOptionsFrame_ResetQuicklooks", nil) -- AL["Reset Favorites"]
self:AddTooltip("AtlasLoot_SelectLootBrowserStyle", nil)
end
local function AtlasLoot_SelectLootBrowserStyle_Initialize()
local info;
info = {
text = AL["New Style"];
func = AtlasLoot_SelectLootBrowserStyle_OnClick;
};
UIDropDownMenu_AddButton(info);
info = {
text = AL["Classic Style"];
func = AtlasLoot_SelectLootBrowserStyle_OnClick;
};
UIDropDownMenu_AddButton(info);
end
function AtlasLoot_OptionsOnShow()
AtlasLoot_SelectLootBrowserStyle_Label:SetText(AL["Loot Browser Style:"]);
UIDropDownMenu_Initialize(AtlasLoot_SelectLootBrowserStyle, AtlasLoot_SelectLootBrowserStyle_Initialize);
UIDropDownMenu_SetSelectedID(AtlasLoot_SelectLootBrowserStyle, AtlasLoot.db.profile.LootBrowserStyle);
UIDropDownMenu_SetWidth(AtlasLoot_SelectLootBrowserStyle, 150);
end
function AtlasLoot_SelectLootBrowserStyle_OnClick()
local thisID = this:GetID();
UIDropDownMenu_SetSelectedID(AtlasLoot_SelectLootBrowserStyle, thisID);
AtlasLoot.db.profile.LootBrowserStyle = thisID;
if( AtlasLoot.db.profile.LootBrowserStyle == 1 ) then
AtlasLoot:SetNewStyle("new");
else
AtlasLoot:SetNewStyle("old");
local function selectLootBrowserStyle_Initialize()
for _, skin in pairs(AtlasLoot.skinKeys) do
local info = {
text = skin[2],
func = AtlasLoot.SelectLootBrowserStyle_OnClick,
}
UIDropDownMenu_AddButton(info)
end
AtlasLoot_OptionsOnShow();
end
function AtlasLoot:OptionsOnShow()
AtlasLoot_SelectLootBrowserStyle_Label:SetText(AL["Change AtlasLoot Skin:"])
UIDropDownMenu_Initialize(AtlasLoot_SelectLootBrowserStyle, selectLootBrowserStyle_Initialize)
UIDropDownMenu_SetSelectedID(AtlasLoot_SelectLootBrowserStyle, self.db.profile.LootBrowserStyle)
UIDropDownMenu_SetWidth(AtlasLoot_SelectLootBrowserStyle, 150)
end
function AtlasLoot:SelectLootBrowserStyle_OnClick()
local thisID = this:GetID()
UIDropDownMenu_SetSelectedID(AtlasLoot_SelectLootBrowserStyle, thisID)
AtlasLoot.db.profile.LootBrowserStyle = thisID
if AtlasLoot.db.profile.LootBrowserStyle then
AtlasLoot:SetSkin(AtlasLoot.skinKeys[AtlasLoot.db.profile.LootBrowserStyle][1])
end
AtlasLoot:OptionsOnShow()
end
function AtlasLoot:CreateOptionsFrame()
local helpframe = CreateFrame("Frame", "AtlasLootHelpFrame")
helpframe:SetSize(425,450);
helpframe:Hide();
helpframe:SetPoint("CENTER");
helpframe.title = helpframe:CreateFontString("AtlasLootHelpFrame_Title", "OVERLAY", "GameFontHighlightLarge");
helpframe.title:SetJustifyH("CENTER");
helpframe.title:SetSize(400,30);
helpframe.title:SetPoint("TOP", "AtlasLootHelpFrame","TOP");
helpframe.title:SetText(AL["AtlasLoot Help"]);
helpframe:SetScript("OnShow", function() AtlasLoot_DisplayHelp() end);
helpframe:SetSize(425,450)
helpframe:Hide()
helpframe:SetPoint("CENTER")
helpframe.title = helpframe:CreateFontString("AtlasLootHelpFrame_Title", "OVERLAY", "GameFontHighlightLarge")
helpframe.title:SetJustifyH("CENTER")
helpframe.title:SetSize(400,30)
helpframe.title:SetPoint("TOP", "AtlasLootHelpFrame","TOP")
helpframe.title:SetText(AL["AtlasLoot Help"])
helpframe:SetScript("OnShow", function() self:DisplayHelp() end)
local optframe = CreateFrame("Frame", "AtlasLootOptionsFrame");
optframe:Hide();
optframe:SetSize(425,405);
optframe:SetPoint("CENTER");
optframe.title = optframe:CreateFontString("AtlasLoot_OptionsTitle", "OVERLAY", "GameFontHighlightLarge");
optframe.title:SetJustifyH("CENTER");
optframe.title:SetSize(400,30);
optframe.title:SetPoint("TOP", "AtlasLootOptionsFrame","TOP");
optframe.title:SetText(ATLASLOOT_VERSION);
optframe.foobar = optframe:CreateFontString("AtlasLootOptionsFrame_FuBarNotice", "OVERLAY", "GameFontNormal");
optframe.foobar:SetPoint("BOTTOM",0,45);
optframe.foobar:SetText(AL["The Minimap Button is generated by the FuBar Plugin."].."\n"..AL["This is automatic, you do not need FuBar installed."]);
optframe:SetScript("OnShow", function() AtlasLoot_OptionsOnShow() end);
local optframe = CreateFrame("Frame", "AtlasLootOptionsFrame")
optframe:Hide()
optframe:SetSize(425,405)
optframe:SetPoint("CENTER")
optframe.title = optframe:CreateFontString("AtlasLoot_OptionsTitle", "OVERLAY", "GameFontHighlightLarge")
optframe.title:SetJustifyH("CENTER")
optframe.title:SetSize(400,30)
optframe.title:SetPoint("TOP", "AtlasLootOptionsFrame","TOP")
optframe.title:SetText(self.Version)
optframe:SetScript("OnShow", function() self:OptionsOnShow() end)
local deftt = CreateFrame("CheckButton", "AtlasLootOptionsFrameDefaultTT", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
deftt:SetPoint("TOPLEFT",5,-40);
AtlasLootOptionsFrameDefaultTTText:SetText(AL["Default Tooltips"]);
deftt:SetScript("OnClick", function() AtlasLootOptions_DefaultTTToggle() end);
local opaque = CreateFrame("CheckButton", "AtlasLootOptionsFrameOpaque", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate")
opaque:SetPoint("TOPLEFT",5,-40)
AtlasLootOptionsFrameOpaqueText:SetText(AL["Make Loot Table Opaque"])
opaque:SetScript("OnClick", function() self:OptionsOpaqueToggle() end)
local lootlnk = CreateFrame("CheckButton", "AtlasLootOptionsFrameLootlinkTT", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
lootlnk:SetPoint("TOPLEFT",5,-70);
AtlasLootOptionsFrameLootlinkTTText:SetText(AL["Lootlink Tooltips"]);
lootlnk:SetScript("OnClick", function() AtlasLootOptions_LootlinkTTToggle() end);
local autoInstance = CreateFrame("CheckButton", "AtlasLootOptionsFrameAutoInstance", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate")
autoInstance:SetPoint("TOPLEFT",5,-70)
AtlasLootOptionsFrameAutoInstanceText:SetText(AL["Auto Load Instance Loot Pages"])
autoInstance:SetScript("OnClick", function() self:Options_AutoInstanceToggle() end)
local itemsync = CreateFrame("CheckButton", "AtlasLootOptionsFrameItemSyncTT", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
itemsync:SetPoint("TOPLEFT",5,-100);
AtlasLootOptionsFrameItemSyncTTText:SetText(AL["ItemSync Tooltips"]);
itemsync:SetScript("OnClick", function() AtlasLootOptions_ItemSyncTTToggle() end);
local craftingInfo = CreateFrame("CheckButton", "AtlasLootOptionsFrameCraftingInfo", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate")
craftingInfo:SetPoint("TOPLEFT",5,-100)
AtlasLootOptionsFrameCraftingInfoText:SetText(AL["Only show crafting source while colding CTRL"])
craftingInfo:SetScript("OnClick", function() self.db.profile.recipeExtraInfoSwitch = not self.db.profile.recipeExtraInfoSwitch end)
local opaque = CreateFrame("CheckButton", "AtlasLootOptionsFrameOpaque", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
opaque:SetPoint("TOPLEFT",5,-130);
AtlasLootOptionsFrameOpaqueText:SetText(AL["Make Loot Table Opaque"]);
opaque:SetScript("OnClick", function() AtlasLootOptions_OpaqueToggle() end);
local itemid = CreateFrame("CheckButton", "AtlasLootOptionsFrameItemID", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate")
itemid:SetPoint("TOP",5,-70)
AtlasLootOptionsFrameItemIDText:SetText(AL["Show itemIDs at all times"])
itemid:SetScript("OnClick", function() self:OptionsItemIDToggle() end)
local autoInstance = CreateFrame("CheckButton", "AtlasLootOptionsFrameAutoInstance", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
autoInstance:SetPoint("TOPLEFT",5,-160);
AtlasLootOptionsFrameAutoInstanceText:SetText(AL["Auto Load Instance Loot Pages"]);
autoInstance:SetScript("OnClick", function() AtlasLoot:Options_AutoInstanceToggle() end);
local miniMap = CreateFrame("CheckButton", "AtlasLootOptionsMinimapIcon", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate")
miniMap:SetPoint("TOP",5,-100)
AtlasLootOptionsMinimapIconText:SetText(AL["Hide minimap icon"])
miniMap:SetScript("OnClick", function() self:ToggleMinimap() end)
local itemid = CreateFrame("CheckButton", "AtlasLootOptionsFrameItemID", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
itemid:SetPoint("TOP",5,-130);
AtlasLootOptionsFrameItemIDText:SetText(AL["Show itemIDs at all times"]);
itemid:SetScript("OnClick", function() AtlasLootOptions_ItemIDToggle() end);
local equip = CreateFrame("CheckButton", "AtlasLootOptionsFrameEquipCompare", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate")
equip:SetPoint("TOP",5,-40)
AtlasLootOptionsFrameEquipCompareText:SetText(AL["Show Comparison Tooltips"])
equip:SetScript("OnClick", function() self.db.profile.EquipCompare = not self.db.profile.EquipCompare end)
local lod = CreateFrame("CheckButton", "AtlasLootOptionsFrameLoDStartup", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
lod:SetPoint("TOP",5,-40);
AtlasLootOptionsFrameLoDStartupText:SetText(AL["Load Loot Modules at Startup"]);
lod:SetScript("OnClick", function() AtlasLootOptions_LoDStartup() end);
local sStyle = CreateFrame("Button", "AtlasLoot_SelectLootBrowserStyle", AtlasLootOptionsFrame, "UIDropDownMenuTemplate")
sStyle.lable = sStyle:CreateFontString("AtlasLoot_SelectLootBrowserStyle_Label", "BACKGROUND", "GameFontNormalSmall")
sStyle.lable:SetPoint("LEFT", "AtlasLoot_SelectLootBrowserStyle", "RIGHT",5,2)
sStyle:SetPoint("TOPLEFT",-10,-220)
local safe = CreateFrame("CheckButton", "AtlasLootOptionsFrameSafeLinks", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
safe:SetPoint("TOP",5,-70);
AtlasLootOptionsFrameSafeLinksText:SetText(AL["Safe Chat Links"]);
safe:SetScript("OnClick", function() AtlasLootOptions_SafeLinksToggle() end);
local bscale = CreateFrame("Slider", "AtlasLootOptionsFrameLootBrowserScale", AtlasLootOptionsFrame,"OptionsSliderTemplate")
bscale:SetSize(240,16)
bscale:SetPoint("TOP", 0,-300)
bscale:SetScript("OnShow", function() self:SetupLootBrowserSlider(bscale, 0.25, 1.5, 0.01) end)
bscale:SetScript("OnValueChanged", function()
self:UpdateLootBrowserSlider(bscale)
self.db.profile.LootBrowserScale = bscale:GetValue()
self:UpdateLootBrowserScale()
end)
local equip = CreateFrame("CheckButton", "AtlasLootOptionsFrameEquipCompare", AtlasLootOptionsFrame, "OptionsCheckButtonTemplate");
equip:SetPoint("TOP",5,-100);
AtlasLootOptionsFrameEquipCompareText:SetText(AL["Show Comparison Tooltips"]);
equip:SetScript("OnClick", function()
if(AtlasLoot.db.profile.EquipCompare) then
AtlasLoot.db.profile.EquipCompare = false;
if (EquipCompare_UnregisterTooltip) then
EquipCompare_UnregisterTooltip(AtlasLootTooltip);
end
else
AtlasLoot.db.profile.EquipCompare = true;
if (EquipCompare_RegisterTooltip) then
EquipCompare_RegisterTooltip(AtlasLootTooltip);
end
end
end);
local resetwish = CreateFrame("Button", "AtlasLootOptionsFrame_ResetWishlist", AtlasLootOptionsFrame, "OptionsButtonTemplate")
resetwish:SetSize(130,25)
resetwish:SetPoint("TOP", 0, -325)
resetwish:SetText(AL["Reset Wishlist"])
resetwish:SetScript("OnClick", function() self:Reset("wishlist") end)
resetwish:SetScript("OnShow", function() resetwish:SetWidth(AtlasLootOptionsFrame_ResetWishlist:GetTextWidth()+20) end)
local sStyle = CreateFrame("Button", "AtlasLoot_SelectLootBrowserStyle", AtlasLootOptionsFrame, "UIDropDownMenuTemplate");
sStyle.lable = sStyle:CreateFontString("AtlasLoot_SelectLootBrowserStyle_Label", "BACKGROUND", "GameFontNormalSmall");
sStyle.lable:SetPoint("RIGHT", "AtlasLoot_SelectLootBrowserStyle", "LEFT",15,2);
sStyle:SetPoint("TOP",30,-220);
local bscale = CreateFrame("Slider", "AtlasLootOptionsFrameLootBrowserScale", AtlasLootOptionsFrame,"OptionsSliderTemplate");
bscale:SetSize(240,16);
bscale:SetPoint("TOP", 0,-300);
bscale:SetScript("OnShow", function(self) AtlasLoot_SetupLootBrowserSlider(self, 0.25, 1.5, 0.01) end);
bscale:SetScript("OnValueChanged", function(self)
AtlasLoot_UpdateLootBrowserSlider(self);
AtlasLoot.db.profile.LootBrowserScale = self:GetValue();
AtlasLoot_UpdateLootBrowserScale();
end);
local resetwish = CreateFrame("Button", "AtlasLootOptionsFrame_ResetWishlist", AtlasLootOptionsFrame, "OptionsButtonTemplate");
resetwish:SetSize(130,25);
resetwish:SetPoint("TOP", 0, -325);
resetwish:SetText(AL["Reset Wishlist"]);
resetwish:SetScript("OnClick", function() AtlasLoot_Reset("wishlist") end);
resetwish:SetScript("OnShow", function() resetwish:SetWidth(AtlasLootOptionsFrame_ResetWishlist:GetTextWidth()+20) end);
local resetAtlas = CreateFrame("Button", "AtlasLootOptionsFrame_ResetAtlasLoot", AtlasLootOptionsFrame, "OptionsButtonTemplate");
resetAtlas:SetSize(130,25);
resetAtlas:SetText(AL["Reset Frames"]);
resetAtlas:SetPoint("RIGHT", "AtlasLootOptionsFrame_ResetWishlist", "LEFT", -10, 0);
resetAtlas:SetScript("OnClick", function() AtlasLoot_Reset("frames") end);
local resetAtlas = CreateFrame("Button", "AtlasLootOptionsFrame_ResetAtlasLoot", AtlasLootOptionsFrame, "OptionsButtonTemplate")
resetAtlas:SetSize(130,25)
resetAtlas:SetText(AL["Reset Frames"])
resetAtlas:SetPoint("RIGHT", "AtlasLootOptionsFrame_ResetWishlist", "LEFT", -10, 0)
resetAtlas:SetScript("OnClick", function() self:Reset("frames") end)
resetAtlas:SetScript("OnShow", function() resetAtlas:SetWidth(AtlasLootOptionsFrame_ResetAtlasLoot:GetTextWidth()+20) end)
local resetquick = CreateFrame("Button", "AtlasLootOptionsFrame_ResetQuicklooks", AtlasLootOptionsFrame, "OptionsButtonTemplate");
resetquick:SetSize(130,25);
resetquick:SetText(AL["Reset Quicklooks"]);
resetquick:SetPoint("LEFT", "AtlasLootOptionsFrame_ResetWishlist", "RIGHT", 10, 0);
resetquick:SetScript("OnClick", function() AtlasLoot_Reset("quicklooks") end);
local resetquick = CreateFrame("Button", "AtlasLootOptionsFrame_ResetQuicklooks", AtlasLootOptionsFrame, "OptionsButtonTemplate")
resetquick:SetSize(130,25)
resetquick:SetText(AL["Reset Favorites"])
resetquick:SetPoint("LEFT", "AtlasLootOptionsFrame_ResetWishlist", "RIGHT", 10, 0)
resetquick:SetScript("OnClick", function() self:Reset("quicklooks") end)
resetquick:SetScript("OnShow", function() resetquick:SetWidth(AtlasLootOptionsFrame_ResetQuicklooks:GetTextWidth()+20) end)
local fooshow = CreateFrame("Button", "AtlasLootOptionsFrame_FuBarShow", AtlasLootOptionsFrame, "OptionsButtonTemplate");
fooshow:SetSize(150,25);
fooshow:SetText(AL["Show FuBar Plugin"]);
fooshow:SetPoint("TOP", "AtlasLootOptionsFrame", "TOP", -85, -390);
fooshow:SetScript("OnClick", function()
if AtlasLootFu then
AtlasLootFu:Show();
end
end);
end
local foohide = CreateFrame("Button", "AtlasLootOptionsFrame_FuBarHide", AtlasLootOptionsFrame, "OptionsButtonTemplate");
foohide:SetSize(150,25);
foohide:SetText(AL["Hide FuBar Plugin"]);
foohide:SetPoint("TOP", "AtlasLootOptionsFrame", "TOP", 85, -390);
foohide:SetScript("OnClick", function()
if AtlasLootFu then
AtlasLootFu:Hide();
end
end);
AtlasLoot:CreateOptionsFrame()
+206 -182
View File
@@ -1,18 +1,14 @@
local GREY = "|cff999999";
local RED = "|cffff0000";
local WHITE = "|cffFFFFFF";
local GREEN = "|cff1eff00";
local PURPLE = "|cff9F3FFF";
local BLUE = "|cff0070dd";
local ORANGE = "|cffFF8400";
local RED = "|cffff0000"
local WHITE = "|cffFFFFFF"
local GREEN = "|cff1eff00"
local ORANGE = "|cffFF8400"
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local modules = {"AtlasLoot_BurningCrusade", "AtlasLoot_Vanity", "AtlasLoot_Crafting", "AtlasLoot_OriginalWoW", "AtlasLoot_WorldEvents", "AtlasLoot_WrathoftheLichKing"};
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
-- Supported Operators
local OP_AND = "&"
-- multi-character patterns must come before single-character patterns
local RELATIONAL_OPERATORS = {">=", "<=", "<>", "<", ">", "="};
local RELATIONAL_OPERATORS = {">=", "<=", "<>", "<", ">", "="}
-- Supported Stat Filters
local STAT_FILTERS = {
@@ -82,9 +78,6 @@ local STAT_FILTERS = {
["armourpen"] = "ITEM_MOD_ARMOR_PENETRATION_RATING_SHORT",
["arp"] = "ITEM_MOD_ARMOR_PENETRATION_RATING_SHORT",
["expertise"] = "ITEM_MOD_EXPERTISE_RATING_SHORT",
["exp"] = "ITEM_MOD_EXPERTISE_RATING_SHORT",
["dps"] = "ITEM_MOD_DAMAGE_PER_SECOND_SHORT",
["resilience"] = "ITEM_MOD_RESILIENCE_RATING",
@@ -133,23 +126,23 @@ local STAT_FILTERS = {
["resistancearcane"] = "RESISTANCE6_NAME",
["resarcane"] = "RESISTANCE6_NAME",
["resarc"] = "RESISTANCE6_NAME"
};
}
local SOCKET_FILTERS = {
["socket"] = true,
["sockets"] = true,
["gem"] = true,
["gems"] = true
};
}
local SOCKET_TYPES = {"EMPTY_SOCKET_BLUE", "EMPTY_SOCKET_RED", "EMPTY_SOCKET_YELLOW", "EMPTY_SOCKET_META", "EMPTY_SOCKET_NO_COLOR"};
local SOCKET_TYPES = {"EMPTY_SOCKET_BLUE", "EMPTY_SOCKET_RED", "EMPTY_SOCKET_YELLOW", "EMPTY_SOCKET_META", "EMPTY_SOCKET_NO_COLOR"}
local INFO_FILTERS = {
["ilvl"] = true,
["minlvl"] = true
-- ["type"] = true,
-- ["subtype"] = true,
};
}
local QUALITY_FILTERS = {
["poor"] = 0,
@@ -160,7 +153,7 @@ local QUALITY_FILTERS = {
["legendary"] = 5,
["artifact"] = 6,
["heirloom"] = 7
};
}
local SLOT_FILTERS = {
["none"] = "INVTYPE_NON_EQUIP",
@@ -195,7 +188,7 @@ local SLOT_FILTERS = {
["rangedright"] = "INVTYPE_RANGEDRIGHT",
["quiver"] = "INVTYPE_QUIVER",
["relic"] = "INVTYPE_RELIC"
};
}
local TYPE_FILTERS = {
["cloth"] = "Cloth",
@@ -236,9 +229,9 @@ local NON_EQUIPABLE_SLOTS = {
["INVTYPE_BAG"] = true,
["INVTYPE_AMMO"] = true,
["INVTYPE_QUIVER"] = true
};
}
SLASH_ATLASLOOTHELP1 = "/atlasloothelp";
SLASH_ATLASLOOTHELP1 = "/atlasloothelp"
SlashCmdList["ATLASLOOTHELP"] = function(msg, editBox)
local function show(caption, t)
local keys = {}
@@ -260,13 +253,13 @@ SlashCmdList["ATLASLOOTHELP"] = function(msg, editBox)
print("gladiator")
print("str>40")
print("gladiator&str>40")
print("str>40&ilvl>=120&ilvl<140&int>0&socket>2");
print("sp>20&quality>=rare&quality<legendary&slot=finger");
print("str>40&ilvl>=120&ilvl<140&int>0&socket>2")
print("sp>20&quality>=rare&quality<legendary&slot=finger")
print("stam>20&minlvl<=50")
end
SLASH_ATLASLOOTSEARCH1 = "/atlaslootsearch";
SLASH_ATLASLOOTSEARCH2 = "/als";
SLASH_ATLASLOOTSEARCH1 = "/atlaslootsearch"
SLASH_ATLASLOOTSEARCH2 = "/als"
SlashCmdList["ATLASLOOTSEARCH"] = function(search, editBox)
AtlasLootDefaultFrame:Show()
if search and search ~= '' then
@@ -327,7 +320,7 @@ local function IsItemLevelFilterMatch(term, itemLvl)
return
end
local searchedValue = tonumber(term.right);
local searchedValue = tonumber(term.right)
if not searchedValue then
ThrowQueryError("ilvl search requires a numeric argument")
end
@@ -358,11 +351,11 @@ local function IsItemSocketMatch(term, stats)
ThrowQueryError("'%s' requires a numeric argument", term.left)
end
local socketCount = 0;
local socketCount = 0
for _, socketType in pairs(SOCKET_TYPES) do
local statValue = tonumber(stats[socketType]);
local statValue = tonumber(stats[socketType])
if statValue then
socketCount = socketCount + statValue;
socketCount = socketCount + statValue
end
end
@@ -374,7 +367,7 @@ local function IsMinLevelFilterMatch(term, minLvl)
return
end
local searchedValue = tonumber(term.right);
local searchedValue = tonumber(term.right)
if not searchedValue then
ThrowQueryError("minlvl search requires a numeric argument")
end
@@ -413,14 +406,14 @@ local function IsItemTypeMatch(term, itemEquipType)
ThrowQueryError("unrecognized type name: \"%s\"", term.right)
end
return type == itemEquipType;
return type == itemEquipType
end
local function nameMatches(name, searchText)
if AtlasLoot.db.profile.PartialMatching then
return string.find(string.lower(name), string.lower(searchText));
function AtlasLoot:NameMatches(name, searchText)
if self.db.profile.PartialMatching then
return string.find(string.lower(name), string.lower(searchText))
else
return string.lower(name) == string.lower(searchText);
return string.lower(name) == string.lower(searchText)
end
end
@@ -502,9 +495,6 @@ local RelationalFunctions = {
["armourpen"] = {IsItemStatMatch, 7},
["arp"] = {IsItemStatMatch, 7},
["expertise"] = {IsItemStatMatch, 7},
["exp"] = {IsItemStatMatch, 7},
["dps"] = {IsItemStatMatch, 7},
["resilience"] = {IsItemStatMatch, 7},
@@ -556,30 +546,26 @@ local RelationalFunctions = {
}
local function ItemMatchesTerm(term, itemDetails)
function AtlasLoot:ItemMatchesTerm(term, itemDetails)
if term.relational then
local func, arg = unpack(RelationalFunctions[term.left]);
local func, arg = unpack(RelationalFunctions[term.left])
if func then
return func(term, itemDetails[arg]);
return func(term, itemDetails[arg])
end
return false;
return false
else
return nameMatches(itemDetails[1], term.name);
return self:NameMatches(itemDetails[1], term.name)
end
end
local function ItemMatchesAllTerms(searchTerms, itemDetails)
local function IsItemEquipableMatch(itemEquipLoc)
return not AtlasLoot.db.profile.EquipableFilter or ((itemEquipLoc and itemEquipLoc ~= '' and not NON_EQUIPABLE_SLOTS[itemEquipLoc]))
end
function AtlasLoot:ItemMatchesAllTerms(searchTerms, itemDetails)
for _, term in ipairs(searchTerms) do
if not ItemMatchesTerm(term, itemDetails) then
if not self:ItemMatchesTerm(term, itemDetails) then
return false
end
end
return true and IsItemEquipableMatch(itemDetails[5])
return true
end
local function ParseTerm(termText)
@@ -603,193 +589,231 @@ end
local function ParseQuery(searchText)
local terms = {}
for _, term in pairs(SplitString(searchText, OP_AND)) do
table.insert(terms, ParseTerm(term));
table.insert(terms, ParseTerm(term))
end
return terms
end
local function GetSpellName(itemId, atlasName)
local spellName = GetSpellInfo(string.sub(itemId, 2));
if spellName then
return spellName
elseif (string.sub(atlasName, 1, 2) == "=d") then
return gsub(atlasName, "=ds=", "");
else
return gsub(atlasName, "=q%d=", "");
function AtlasLoot:GetItemDetails(itemId)
-- Name, Link, Quality(num), iLvl(num), minLvl(num), itemType(localized string), itemSubType(localized string), stackCount(num), itemEquipLoc(enum), texture(link to a local file), displayId(num)
local itemName, _, itemQuality, itemLvl, minLvl, _, itemSubType, _, itemEquipLoc = GetItemInfo(itemId)
return itemName, itemQuality, itemLvl, minLvl, itemEquipLoc, itemSubType, GetItemStats("item:" .. itemId)
end
local count = 0
local tablenum = 1
function AtlasLoot:AddItemToSearchResult(item, dataSource, dataID, tableNum)
if AtlasLootCharDB["SearchResult"][tablenum] == nil then
AtlasLootCharDB["SearchResult"][tablenum] = {Name = "Page "..tablenum}
end
local tableCopy = self:CloneTable(item)
tinsert(AtlasLootCharDB["SearchResult"][tablenum], tableCopy)
local tNum = #AtlasLootCharDB["SearchResult"][tablenum]
AtlasLootCharDB["SearchResult"][tablenum][tNum].lootTable = {{dataID, dataSource, tableNum}, "Source"}
AtlasLootCharDB["SearchResult"][tablenum][tNum][1] = (count % 30) + 1
count = count + 1
if (count) % 30 == 0 then
tablenum = tablenum + 1
end
end
local function DoSearch(searchText)
AtlasLootCharDB["SearchResult"] = {Name = "Search Result" , Type = "Search", Back = true};
AtlasLootCharDB.LastSearchedText = searchText;
local count = 0;
local tablenum = 1;
local searchTerms = ParseQuery(searchText);
local equipableFilterOn = AtlasLoot.db.profile.EquipableFilter;
local function GetItemDetails(itemId, atlasName)
-- Name, Link, Quality(num), iLvl(num), minLvl(num), itemType(localized string), itemSubType(localized string), stackCount(num), itemEquipLoc(enum), texture(link to a local file), displayId(num)
local itemName, _, itemQuality, itemLvl, minLvl, _, itemSubType, _, itemEquipLoc = GetItemInfo(itemId);
if not itemName then
itemName = gsub(atlasName, "=q%d=", "")
end
return itemName, itemQuality, itemLvl, minLvl, itemEquipLoc, itemSubType, GetItemStats("item:" .. itemId)
end
local function AddItemToSearchResult(itemId, itemType, itemName, dataID, itemIdBackup, difCap, dataPage)
local lootPage = AtlasLoot_Data[dataID].Name or "Argh!";
if AtlasLootCharDB["SearchResult"][tablenum] == nil then
AtlasLootCharDB["SearchResult"][tablenum] = {Name = "Page "..tablenum};
end
table.insert(AtlasLootCharDB["SearchResult"][tablenum], {(count % 30) + 1, itemId, itemType, itemName, lootPage, "", "", dataID .. "|" .. "AtlasLoot_Data" .. "|" .. tostring(dataPage), itemIdBackup, [AtlasLoot_Difficulty.MAX_DIF] = difCap});
count = count + 1;
if (count) % 30 == 0 then
tablenum = tablenum + 1;
end
end
for dataID, data in pairs(AtlasLoot_Data) do
for dataPage, t in ipairs(data) do
for _, v in ipairs(t) do
if type(v) == "table" then
local _, itemId, itemType, atlasName = unpack(v)
if type(itemId) == "number" and itemId > 0 then
local itemIdBackup = itemId;
if #searchTerms == 1 and searchTerms[1].name then
if nameMatches(atlasName, searchTerms[1].name) then
AddItemToSearchResult(itemId, itemType, atlasName, dataID, itemIdBackup, AtlasLoot_Difficulty:getMaxDifficulty(data.Type), dataPage);
end
local showSearch
function AtlasLoot:ProcessItem(data)
if not data then return end
local itemData, dataID, tableNum, searchTerms, searchText = unpack(data)
if type(itemData) == "table" then
local itemID = itemData.itemID
local spellID = itemData.spellID
if spellID then
self:ItemsLoading(-1)
local spellName = GetSpellInfo(spellID)
if self:NameMatches(spellName, searchText) then
self:AddItemToSearchResult(itemData, "AtlasLoot_Data", dataID, tableNum)
if not showSearch then
self:ShowSearchResult()
showSearch = true
end
self:ItemFrameRefresh()
end
elseif itemID then
local item = Item:CreateFromID(itemID)
if item then
local function nextItem()
self:ItemsLoading(-1)
local itemDetails = {self:GetItemDetails(itemID)}
if self:ItemMatchesAllTerms(searchTerms, itemDetails) then
self:AddItemToSearchResult(itemData, "AtlasLoot_Data", dataID, tableNum)
if not showSearch then
self:ShowSearchResult()
showSearch = true
else
local difficultyCap = min(AtlasLoot_Difficulty:getMaxDifficulty(data.Type), ItemindexID);
itemId = AtlasLoot:FindId(itemId, difficultyCap, data.Type) or 2;
local item = Item:CreateFromID(itemId);
item:ContinueOnLoad(function()
local itemDetails = {GetItemDetails(item.itemID, atlasName)};
if ItemMatchesAllTerms(searchTerms, itemDetails) then
AddItemToSearchResult(itemId, itemType, atlasName, dataID, itemIdBackup, AtlasLoot_Difficulty:getMaxDifficulty(data.Type), dataPage);
end
end)
self:ItemFrameRefresh()
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, itemIdBackup, AtlasLoot_Difficulty:getMaxDifficulty(data.Type), dataPage);
end
end
if not item:GetInfo() then
item:ContinueOnLoad(function(itemID)
nextItem()
end)
else
nextItem()
end
end
end
end
end
local itemList = {}
function AtlasLoot:DoSearch(searchText)
AtlasLootCharDB["SearchResult"] = {Name = "Search Result" , Type = "Search", Back = true}
count = 0
tablenum = 1
showSearch = false
wipe(itemList)
local searchTerms = ParseQuery(searchText)
for dataID, data in pairs(AtlasLoot_Data) do
if self.db.profile.SearchOn.All or self.db.profile.SearchOn[data.Module] or (self.db.profile.SearchAscensionVanity and data.Module == "AtlasLoot_Ascension_Vanity") then
for tableNum, t in ipairs(data) do
for _, itemData in pairs(t) do
if itemData.itemID or itemData.spellID then
if data.Type then
itemData.Type = data.Type
if not itemData[self.Difficultys.MAX_DIF] then
itemData[self.Difficultys.MAX_DIF] = #self.Difficultys[data.Type]
end
end
tinsert(itemList, {{itemData, dataID, tableNum, searchTerms, searchText}})
end
end
end
end
end
-- rate limit tied to half the current frame rate
self:ItemsLoading(#itemList)
local maxDuration = 500/GetFramerate()
local startTime = debugprofilestop()
local function continue()
startTime = debugprofilestop()
local task = tremove(itemList)
while (task) do
self:ProcessItem(task[1])
if (debugprofilestop() - startTime > maxDuration) then
Timer.After(0, continue)
return
end
task = tremove(itemList)
end
end
return continue()
end
function AtlasLoot:ShowSearchResult()
AtlasLoot:ShowItemsFrame("SearchResult", "AtlasLootCharDB", 1);
self:ShowItemsFrame("SearchResult", "AtlasLootCharDB", 1)
end
function AtlasLoot:Search(Text)
if not Text then
function AtlasLoot:Search(text)
if not text then
return
end
Text = strtrim(Text);
if Text == "" then
text = strtrim(text)
if text == "" then
return
end
if self.db.profile.SearchAscensionDB then
return OpenAscensionDBURL("?search="..text)
end
-- Decide if we need load all modules or just specified ones
local allDisabled = not self.db.profile.SearchOn.All;
local allDisabled = not self.db.profile.SearchOn.All
if allDisabled then
for _, module in ipairs(modules) do
if self.db.profile.SearchOn[module] == true then
allDisabled = false;
for _, module in ipairs(self.dataModules) do
if self.db.profile.SearchOn[module] == true or self.db.profile.SearchAscensionVanity then
allDisabled = false
break
end
end
end
if allDisabled then
DEFAULT_CHAT_FRAME:AddMessage(RED .. AL["AtlasLoot"] .. ": " .. WHITE .. AL["You don't have any module selected to search on."]);
return;
DEFAULT_CHAT_FRAME:AddMessage(RED .. AL["AtlasLoot"] .. ": " .. WHITE .. AL["You don't have any module selected to search on. Right click search to select modules the more selected the longer it will take to search"])
return
end
if self.db.profile.SearchOn.All then
AtlasLoot:LoadAllModules();
self:LoadAllModules()
else
for k, v in pairs(self.db.profile.SearchOn) do
if k ~= "All" and v == true and not IsAddOnLoaded(k) and LoadAddOn(k) and self.db.profile.LoDNotify then
DEFAULT_CHAT_FRAME:AddMessage(GREEN .. AL["AtlasLoot"] .. ": " .. ORANGE .. k .. WHITE .. " " .. AL["sucessfully loaded."]);
DEFAULT_CHAT_FRAME:AddMessage(GREEN .. AL["AtlasLoot"] .. ": " .. ORANGE .. k .. WHITE .. " " .. AL["sucessfully loaded."])
end
end
end
local success, message = pcall(DoSearch, Text)
self:DoSearch(text)
--local success, message = pcall(self:DoSearch, text)
if not success then
message = message:match("[^:]+: (.*)") or message -- strip stack location
DEFAULT_CHAT_FRAME:AddMessage(RED .. AL["AtlasLoot"] .. ": " .. WHITE .. message);
elseif #AtlasLootCharDB["SearchResult"] == 0 then
local itemFilterErrorMessage = "";
if operator then
itemFilterErrorMessage = [[
Please check if you have a typo in the filter.
For help, type "/atlasloothelp".
You might also have to query the server for item informations to load them into your client's Cache.]];
end
DEFAULT_CHAT_FRAME:AddMessage(RED .. AL["AtlasLoot"] .. ": " .. WHITE .. AL["No match found for"] .. " \"" .. Text .. "\"." .. itemFilterErrorMessage);
else
AtlasLoot:ShowItemsFrame("SearchResult", "AtlasLootCharDB", 1);
end
-- if not success then
-- message = message:match("[^:]+: (.*)") or message -- strip stack location
-- DEFAULT_CHAT_FRAME:AddMessage(RED .. AL["AtlasLoot"] .. ": " .. WHITE .. message)
-- elseif #AtlasLootCharDB["SearchResult"] == 0 then
-- local itemFilterErrorMessage = ""
-- if operator then
-- itemFilterErrorMessage = [[
-- Please check if you have a typo in the filter.
-- For help, type "/atlasloothelp".
-- You might also have to query the server for item informations to load them into your client's Cache.]]
-- end
-- DEFAULT_CHAT_FRAME:AddMessage(RED .. AL["AtlasLoot"] .. ": " .. WHITE .. AL["No match found for"] .. " \"" .. text .. "\"." .. itemFilterErrorMessage)
-- else
-- self:ShowItemsFrame("SearchResult", "AtlasLootCharDB", 1)
-- end
end
function AtlasLoot:ShowSearchOptions(button)
local dewdrop = AceLibrary("Dewdrop-2.0");
if dewdrop:IsOpen(button) then
dewdrop:Close(1);
if self.Dewdrop:IsOpen(button) then
self.Dewdrop:Close(1)
else
local setOptions = function()
dewdrop:AddLine("text", AL["Search on"], "isTitle", true, "notCheckable", true);
dewdrop:AddLine("text", AL["All modules"], "checked", self.db.profile.SearchOn.All, "tooltipTitle", AL["All modules"], "tooltipText",
self.Dewdrop:AddLine("text", AL["Search on"], "isTitle", true, "notCheckable", true)
self.Dewdrop:AddLine("text", AL["All modules"], "checked", not self.db.profile.SearchAscensionDB and self.db.profile.SearchOn.All, "tooltipTitle", AL["All modules"], "tooltipText",
AL["If checked, AtlasLoot will load and search across all the modules."], "func", function()
self.db.profile.SearchOn.All = not self.db.profile.SearchOn.All;
end);
for _, module in ipairs(modules) do
self.db.profile.SearchOn.All = not self.db.profile.SearchOn.All
end)
for _, module in ipairs(self.dataModules) do
if IsAddOnLoadOnDemand(module) then
local title = GetAddOnMetadata(module, "title");
local notes = GetAddOnMetadata(module, "notes");
dewdrop:AddLine("text", title, "checked", self.db.profile.SearchOn.All or self.db.profile.SearchOn[module], "disabled", self.db.profile.SearchOn.All, "tooltipTitle", title,
local title = GetAddOnMetadata(module, "title")
local notes = GetAddOnMetadata(module, "notes")
self.Dewdrop:AddLine("text", title, "checked", not self.db.profile.SearchAscensionDB and self.db.profile.SearchOn.All or self.db.profile.SearchOn[module], "disabled", self.db.profile.SearchAscensionDB or self.db.profile.SearchOn.All, "tooltipTitle", title,
"tooltipText", notes, "func", function()
if self.db.profile.SearchOn[module] == nil then
self.db.profile.SearchOn[module] = true;
self.db.profile.SearchOn[module] = true
else
self.db.profile.SearchOn[module] = nil;
self.db.profile.SearchOn[module] = nil
end
end);
end)
end
end
dewdrop:AddLine("text", AL["Search options"], "isTitle", true, "notCheckable", true);
dewdrop:AddLine("text", AL["Partial matching"], "checked", self.db.profile.PartialMatching, "tooltipTitle", AL["Partial matching"], "tooltipText",
AL["If checked, AtlasLoot search item names for a partial match."], "func", function()
self.Dewdrop:AddLine("text", AL["Ascension Vanity Collection"], "checked", self.db.profile.SearchAscensionVanity, "tooltipTitle", AL["Ascension Vanity Collection"], "tooltipText",
AL["If checked, AtlasLoot will search Ascension Vanity Collection"], "func", function()
self.db.profile.SearchAscensionVanity = not self.db.profile.SearchAscensionVanity
end)
self.Dewdrop:AddLine("text", AL["Search options"], "isTitle", true, "notCheckable", true)
self.Dewdrop:AddLine("text", AL["Partial matching"], "checked", self.db.profile.PartialMatching, "tooltipTitle", AL["Partial matching"], "tooltipText",
AL["If checked, AtlasLoot search item names for a partial match."], "func", function()
self.db.profile.PartialMatching = not self.db.profile.PartialMatching
end);
dewdrop:AddLine("text", "Only search equipable", -- TODO: put in AL
"checked", self.db.profile.EquipableFilter, "tooltipTitle", "Equipable filter", -- TODO: put in AL
"tooltipText", "If checked, AtlasLoot only includes items that are euipable.", -- TODO: put in AL
"func", function()
self.db.profile.EquipableFilter = not self.db.profile.EquipableFilter
end);
end;
dewdrop:Open(button, 'point', function(parent)
return "BOTTOMLEFT", "BOTTOMRIGHT";
end, "children", setOptions);
end
end
function AtlasLoot:GetOriginalDataFromSearchResult(itemID)
for i, v in ipairs(AtlasLootCharDB["SearchResult"]) do
if v[2] == itemID then
AtlasLoot_ShowWishListDropDown(v[2], v[3], v[4], v[5], v[8], this, nil);
end)
self.Dewdrop:AddLine("text", AL["Search AscensionDB"], "checked", self.db.profile.SearchAscensionDB, "tooltipTitle", AL["Partial matching"], "tooltipText",
AL["If checked, AtlasLoot will open a browser window and search AscensionDB"], "func", function()
self.db.profile.SearchAscensionDB = not self.db.profile.SearchAscensionDB
end)
end
self.Dewdrop:Open(button, 'point', function(parent)
return "BOTTOMLEFT", "BOTTOMRIGHT"
end, "children", setOptions)
end
end
end
+215 -221
View File
@@ -1,70 +1,57 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
AtlasLoot_QualityMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_DifficultyMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_EquipMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_EquipSubMenu = AceLibrary("Dewdrop-2.0");
local MAX_ARGUMENTS = 6
local ACTIVE_ARGUMENT = 0
local MAX_ARGUMENTS = 6;
local ACTIVE_ARGUMENT = 0;
AtlasLoot.SearchMenus = { ArgumentMenus = {}, ArgumentSubMenus = {}}
AtlasLoot_ArgumentMenus = {};
AtlasLoot_ArgumentSubMenus = {};
local RED = "|cffff0000"
local GREY = "|cff999999";
local RED = "|cffff0000";
local WHITE = "|cffFFFFFF";
local GREEN = "|cff1eff00";
local PURPLE = "|cff9F3FFF";
local BLUE = "|cff0070dd";
local ORANGE = "|cffFF8400";
local DEFAULT = "|cffFFd200";
AtlasLoot_FrameMenuList = {
["EquipSubMenu"] = {AtlasLoot_EquipSubMenu, "AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton", "Select Option", "type", ""}
local FrameMenuList = {
["EquipSubMenu"] = {AtlasLoot.Dewdrop, "AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton", "Select Option", "type", ""}
}
AtlasLoot_AdvancedSearchMenus = {
local AdvancedSearchMenus = {
["Difficulty"] = {
[1] = {{"Normal", "difficulty", AtlasLoot_Difficulty.Normal}},
[2] = {{"Heroic", "difficulty", AtlasLoot_Difficulty.Heroic}},
[3] = {{"Mythic/Ascended", "difficulty", AtlasLoot_Difficulty.Mythic}},
[1] = {{"Normal", "difficulty", AtlasLoot.Difficultys.Normal}},
[2] = {{"Heroic", "difficulty", AtlasLoot.Difficultys.Heroic}},
[3] = {{"Mythic/Ascended", "difficulty", AtlasLoot.Difficultys.Mythic}},
[4] = {
["Mythic+ 1-10"] = {{"Mythic 1", "difficulty", AtlasLoot_Difficulty.MythicPlus[1]}, {"Mythic 2", "difficulty", AtlasLoot_Difficulty.MythicPlus[2]},
{"Mythic 3", "difficulty", AtlasLoot_Difficulty.MythicPlus[3]}, {"Mythic 4", "difficulty", AtlasLoot_Difficulty.MythicPlus[4]},
{"Mythic 5", "difficulty", AtlasLoot_Difficulty.MythicPlus[5]}, {"Mythic 6", "difficulty", AtlasLoot_Difficulty.MythicPlus[6]},
{"Mythic 7", "difficulty", AtlasLoot_Difficulty.MythicPlus[7]}, {"Mythic 8", "difficulty", AtlasLoot_Difficulty.MythicPlus[8]},
{"Mythic 9", "difficulty", AtlasLoot_Difficulty.MythicPlus[9]}, {"Mythic 10", "difficulty", AtlasLoot_Difficulty.MythicPlus[10]}}
["Mythic+ 1-10"] = {{"Mythic 1", "difficulty", AtlasLoot.Difficultys.MythicPlus[1]}, {"Mythic 2", "difficulty", AtlasLoot.Difficultys.MythicPlus[2]},
{"Mythic 3", "difficulty", AtlasLoot.Difficultys.MythicPlus[3]}, {"Mythic 4", "difficulty", AtlasLoot.Difficultys.MythicPlus[4]},
{"Mythic 5", "difficulty", AtlasLoot.Difficultys.MythicPlus[5]}, {"Mythic 6", "difficulty", AtlasLoot.Difficultys.MythicPlus[6]},
{"Mythic 7", "difficulty", AtlasLoot.Difficultys.MythicPlus[7]}, {"Mythic 8", "difficulty", AtlasLoot.Difficultys.MythicPlus[8]},
{"Mythic 9", "difficulty", AtlasLoot.Difficultys.MythicPlus[9]}, {"Mythic 10", "difficulty", AtlasLoot.Difficultys.MythicPlus[10]}}
},
[5] = {
["Mythic+ 11-20"] = {{"Mythic 11", "difficulty", AtlasLoot_Difficulty.MythicPlus[11]}, {"Mythic 12", "difficulty", AtlasLoot_Difficulty.MythicPlus[12]},
{"Mythic 13", "difficulty", AtlasLoot_Difficulty.MythicPlus[13]}, {"Mythic 14", "difficulty", AtlasLoot_Difficulty.MythicPlus[14]},
{"Mythic 15", "difficulty", AtlasLoot_Difficulty.MythicPlus[15]}, {"Mythic 16", "difficulty", AtlasLoot_Difficulty.MythicPlus[16]},
{"Mythic 17", "difficulty", AtlasLoot_Difficulty.MythicPlus[17]}, {"Mythic 18", "difficulty", AtlasLoot_Difficulty.MythicPlus[18]},
{"Mythic 19", "difficulty", AtlasLoot_Difficulty.MythicPlus[19]}, {"Mythic 20", "difficulty", AtlasLoot_Difficulty.MythicPlus[20]}}
["Mythic+ 11-20"] = {{"Mythic 11", "difficulty", AtlasLoot.Difficultys.MythicPlus[11]}, {"Mythic 12", "difficulty", AtlasLoot.Difficultys.MythicPlus[12]},
{"Mythic 13", "difficulty", AtlasLoot.Difficultys.MythicPlus[13]}, {"Mythic 14", "difficulty", AtlasLoot.Difficultys.MythicPlus[14]},
{"Mythic 15", "difficulty", AtlasLoot.Difficultys.MythicPlus[15]}, {"Mythic 16", "difficulty", AtlasLoot.Difficultys.MythicPlus[16]},
{"Mythic 17", "difficulty", AtlasLoot.Difficultys.MythicPlus[17]}, {"Mythic 18", "difficulty", AtlasLoot.Difficultys.MythicPlus[18]},
{"Mythic 19", "difficulty", AtlasLoot.Difficultys.MythicPlus[19]}, {"Mythic 20", "difficulty", AtlasLoot.Difficultys.MythicPlus[20]}}
},
[6] = {
["Mythic+ 21-30"] = {{"Mythic 21", "difficulty", AtlasLoot_Difficulty.MythicPlus[21]}, {"Mythic 22", "difficulty", AtlasLoot_Difficulty.MythicPlus[22]},
{"Mythic 23", "difficulty", AtlasLoot_Difficulty.MythicPlus[23]}, {"Mythic 24", "difficulty", AtlasLoot_Difficulty.MythicPlus[24]},
{"Mythic 25", "difficulty", AtlasLoot_Difficulty.MythicPlus[25]}, {"Mythic 26", "difficulty", AtlasLoot_Difficulty.MythicPlus[26]},
{"Mythic 27", "difficulty", AtlasLoot_Difficulty.MythicPlus[27]}, {"Mythic 28", "difficulty", AtlasLoot_Difficulty.MythicPlus[28]},
{"Mythic 29", "difficulty", AtlasLoot_Difficulty.MythicPlus[29]}, {"Mythic 30", "difficulty", AtlasLoot_Difficulty.MythicPlus[30]}}
["Mythic+ 21-30"] = {{"Mythic 21", "difficulty", AtlasLoot.Difficultys.MythicPlus[21]}, {"Mythic 22", "difficulty", AtlasLoot.Difficultys.MythicPlus[22]},
{"Mythic 23", "difficulty", AtlasLoot.Difficultys.MythicPlus[23]}, {"Mythic 24", "difficulty", AtlasLoot.Difficultys.MythicPlus[24]},
{"Mythic 25", "difficulty", AtlasLoot.Difficultys.MythicPlus[25]}, {"Mythic 26", "difficulty", AtlasLoot.Difficultys.MythicPlus[26]},
{"Mythic 27", "difficulty", AtlasLoot.Difficultys.MythicPlus[27]}, {"Mythic 28", "difficulty", AtlasLoot.Difficultys.MythicPlus[28]},
{"Mythic 29", "difficulty", AtlasLoot.Difficultys.MythicPlus[29]}, {"Mythic 30", "difficulty", AtlasLoot.Difficultys.MythicPlus[30]}}
},
[7] = {{"Bloodforged", "difficulty", AtlasLoot_Difficulty.Bloodforged}},
[7] = {{"Bloodforged", "difficulty", AtlasLoot.Difficultys.Bloodforged}},
[8] = {{RED .. "Reset", "difficulty", "reset"}}
},
["Quality"] = {
-- [1] = {
-- {AtlasLoot_FixText("=q0=").."Poor", "quality", "poor"},
-- {AtlasLoot:FixText("=q0=").."Poor", "quality", "poor"},
-- },
-- [2] = {
-- {AtlasLoot_FixText("=q1=").."Common", "quality", "common"},
-- {AtlasLoot:FixText("=q1=").."Common", "quality", "common"},
-- },
[1] = {{AtlasLoot_FixText("=q2=") .. "Uncommon", "quality", "uncommon"}},
[2] = {{AtlasLoot_FixText("=q3=") .. "Rare", "quality", "rare"}},
[3] = {{AtlasLoot_FixText("=q4=") .. "Epic", "quality", "epic"}},
[4] = {{AtlasLoot_FixText("=q5=") .. "Legendary", "quality", "legendary"}},
[1] = {{AtlasLoot:FixText("=q2=") .. "Uncommon", "quality", "uncommon"}},
[2] = {{AtlasLoot:FixText("=q3=") .. "Rare", "quality", "rare"}},
[3] = {{AtlasLoot:FixText("=q4=") .. "Epic", "quality", "epic"}},
[4] = {{AtlasLoot:FixText("=q5=") .. "Legendary", "quality", "legendary"}},
[5] = {{RED .. "Reset", "quality", "reset"}}
},
@@ -137,13 +124,13 @@ AtlasLoot_AdvancedSearchMenus = {
}
}
AtlasLoot_AdvancedSearchArguments = {
local AdvancedSearchArguments = {
["Arguments"] = {
[1] = {
["Primary Stats"] = {{"Stamina", "sta"}, {"Strength", "str"}, {"Agility", "agi"}, {"Intellect", "int"}, {"Spirit", "spi"}}
},
[2] = {
["Secondary Stats"] = {{"Attack Power", "ap"}, {"Spell Power", "sp"}, {"Crit", "crit"}, {"Hit", "hit"}, {"Haste", "haste"}, {"Expertise", "exp"}, {"Armor Pen", "arp"}, {"Spell Pen", "spp"}, {"Mana Per 5", "mp5"}}
["Secondary Stats"] = {{"Attack Power", "ap"}, {"Spell Power", "sp"}, {"Crit", "crit"}, {"Hit", "hit"}, {"Haste", "haste"}, {"Armor Pen", "arp"}, {"Spell Pen", "spp"}, {"Mana Per 5", "mp5"}}
},
[3] = {
["Defensive Stats"] = {{"Defense", "def"}, {"Dodge", "dodge"}, {"Parry", "parry"}, {"Block", "block"}, {"Block Value", "bv"}, {"Resilience", "res"}}
@@ -173,74 +160,64 @@ AtlasLoot_AdvancedSearchArguments = {
}
}
AtlasLoot_AdvSearchOptions = {
local AdvSearchOptions = {
["quality"] = "",
["equip"] = "",
["type"] = "",
["difficulty"] = ""
}
function AtlasLoot_AdvancedSearchSetup()
AtlasLoot_AdvancedSearchRegister(AtlasLoot_QualityMenu, AtlasLootDefaultFrame_AdvancedSearchPanel_QualityButton, AtlasLoot_AdvancedSearchMenus["Quality"]);
AtlasLoot_AdvancedSearchRegister(AtlasLoot_EquipMenu, AtlasLootDefaultFrame_AdvancedSearchPanel_EquipButton, AtlasLoot_AdvancedSearchMenus["Equip"]);
--AtlasLoot_AdvancedSearchRegister(AtlasLoot_DifficultyMenu, AtlasLootDefaultFrame_AdvancedSearchPanel_Difficulty, AtlasLoot_AdvancedSearchMenus["Difficulty"]);
function AtlasLoot:AdvancedSearchSetup()
self:AdvancedSearchRegister(self.Dewdrop, AtlasLootDefaultFrame_AdvancedSearchPanel_QualityButton, AdvancedSearchMenus["Quality"])
self:AdvancedSearchRegister(self.Dewdrop, AtlasLootDefaultFrame_AdvancedSearchPanel_EquipButton, AdvancedSearchMenus["Equip"])
for n = 1, MAX_ARGUMENTS do
AtlasLoot_ArgumentMenus[n] = AceLibrary("Dewdrop-2.0");
AtlasLoot_ArgumentSubMenus[n] = AceLibrary("Dewdrop-2.0");
self.SearchMenus.ArgumentMenus[n] = self.Dewdrop
self.SearchMenus.ArgumentSubMenus[n] = self.Dewdrop
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_ArgumentMenus[n], _G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n)], tostring(n), AtlasLoot_AdvancedSearchArguments["Arguments"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_ArgumentSubMenus[n], _G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Sub"], tostring(n),
AtlasLoot_AdvancedSearchArguments["Operators"]);
self:AdvancedSearchArgumentRegister(self.SearchMenus.ArgumentMenus[n], _G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n)], tostring(n), AdvancedSearchArguments["Arguments"])
self:AdvancedSearchArgumentRegister(self.SearchMenus.ArgumentSubMenus[n], _G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Sub"], tostring(n),
AdvancedSearchArguments["Operators"])
end
-- Reset Search options to defualt
AtlasLoot_AdvancedSearchReset();
self:AdvancedSearchReset()
end
function AtlasLoot_AdvancedSearchShow()
function AtlasLoot:AdvancedSearchShow()
if (AtlasLootDefaultFrame_AdvancedSearchPanel:IsVisible()) then
AtlasLoot_AdvancedSearchClose();
return;
self:AdvancedSearchClose()
return
end
-- Hide all elements that could be in the AtlasTable
_G["AtlasLootItemsFrame_NEXT"]:Hide();
_G["AtlasLootItemsFrame_PREV"]:Hide();
_G["AtlasLootItemsFrame_BACK"]:Hide();
-- Ditch the Quicklook selector
AtlasLootQuickLooksButton:Hide();
_G["AtlasLootItemsFrame_NEXT"]:Hide()
_G["AtlasLootItemsFrame_PREV"]:Hide()
_G["AtlasLootItemsFrame_BACK"]:Hide()
-- Hide the Filter Check-Box
AtlasLootFilterCheck:Hide();
AtlasLootFilterCheck:Hide()
for i = 1, 30, 1 do
_G["AtlasLootItem_" .. i .. "_Unsafe"]:Hide();
_G["AtlasLootItem_" .. i]:Hide();
_G["AtlasLootItem_" .. i].itemID = 0;
_G["AtlasLootItem_" .. i].spellitemID = 0;
_G["AtlasLootItem_" .. i]:Hide()
end
AtlasLoot_BossName:SetText("Advanced Search");
AtlasLoot_BossName:SetText("Advanced Search")
AtlasLootDefaultFrame_AdvancedSearchPanel:Show();
AtlasLootDefaultFrame_AdvancedSearchPanel:Show()
ATLASLOOT_CURRENTTYPE = "Search";
AtlasLoot:ScrollFrameUpdate();
AtlasLoot:SubTableScrollFrameUpdate("EmptyTable","AtlasLoot_Data");
self.CurrentType = "Search"
self:ScrollFrameUpdate()
self:SubTableScrollFrameUpdate("EmptyTable","AtlasLoot_Data")
end
function AtlasLoot_AdvancedSearchClose()
AtlasLootDefaultFrame_AdvancedSearchPanel:Hide();
if (SearchPrevData[1] ~= "") then
AtlasLoot:ShowItemsFrame(SearchPrevData[1], SearchPrevData[2], SearchPrevData[3]);
end
function AtlasLoot:AdvancedSearchClose()
AtlasLootDefaultFrame_AdvancedSearchPanel:Hide()
self:ItemFrameRefresh()
end
function AtlasLoot_AdvancedSearchReset()
AtlasLoot_AdvSearchOptions = {
function AtlasLoot:AdvancedSearchReset()
AdvSearchOptions = {
["quality"] = "",
["equip"] = "",
["type"] = "",
@@ -248,60 +225,60 @@ function AtlasLoot_AdvancedSearchReset()
}
for i = 1, MAX_ARGUMENTS do
AtlasLoot_AdvSearchOptions["arg" .. tostring(i)] = "";
AtlasLoot_AdvSearchOptions["arg" .. tostring(i) .. "op"] = "";
AdvSearchOptions["arg" .. tostring(i)] = ""
AdvSearchOptions["arg" .. tostring(i) .. "op"] = ""
AtlasLoot_RemoveArgumentContainer();
self:RemoveArgumentContainer()
end
local expansionLevels = {60, 70, 80}
AtlasLootDefaultFrame_AdvancedSearchPanel_LevelMin:SetText(expansionLevels[GetAccountExpansionLevel() + 1]);
AtlasLootDefaultFrame_AdvancedSearchPanel_LevelMax:SetText(expansionLevels[GetAccountExpansionLevel() + 1]);
AtlasLootDefaultFrame_AdvancedSearchPanel_iLevelMin:SetText("");
AtlasLootDefaultFrame_AdvancedSearchPanel_iLevelMax:SetText("");
AtlasLootDefaultFrame_AdvancedSearchPanel_LevelMin:SetText(expansionLevels[GetAccountExpansionLevel() + 1])
AtlasLootDefaultFrame_AdvancedSearchPanel_LevelMax:SetText(expansionLevels[GetAccountExpansionLevel() + 1])
AtlasLootDefaultFrame_AdvancedSearchPanel_iLevelMin:SetText("")
AtlasLootDefaultFrame_AdvancedSearchPanel_iLevelMax:SetText("")
AtlasLootDefaultFrame_AdvancedSearchPanel_QualityButton:SetText("Select Quality");
AtlasLootDefaultFrame_AdvancedSearchPanel_QualityButton:SetText("Select Quality")
AtlasLootDefaultFrame_AdvancedSearchPanel_EquipButton:SetText("Select Item Type");
AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton:Disable();
AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton:SetText("Select Option");
AtlasLootDefaultFrame_AdvancedSearchPanel_EquipButton:SetText("Select Item Type")
AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton:Disable()
AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton:SetText("Select Option")
end
function AtlasLoot_AddArgumentContainer()
function AtlasLoot:AddArgumentContainer()
if ACTIVE_ARGUMENT == MAX_ARGUMENTS then
AtlasLoot_AdvSearchArgButtonToggle()
self:AdvSearchArgButtonToggle()
return
end
ACTIVE_ARGUMENT = ACTIVE_ARGUMENT + 1;
ACTIVE_ARGUMENT = ACTIVE_ARGUMENT + 1
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT)]:Show();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT)]:SetText("Select Option");
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Sub"]:Show();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT)]:Show()
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT)]:SetText("Select Option")
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Sub"]:Show()
AtlasLoot_AdvSearchArgButtonToggle()
self:AdvSearchArgButtonToggle()
end
function AtlasLoot_RemoveArgumentContainer()
function AtlasLoot:RemoveArgumentContainer()
if ACTIVE_ARGUMENT == 0 then
AtlasLoot_AdvSearchArgButtonToggle()
self:AdvSearchArgButtonToggle()
return
end
AtlasLoot_AdvSearchOptions["arg" .. tostring(ACTIVE_ARGUMENT)] = "";
AtlasLoot_AdvSearchOptions["arg" .. tostring(ACTIVE_ARGUMENT) .. "op"] = "";
AdvSearchOptions["arg" .. tostring(ACTIVE_ARGUMENT)] = ""
AdvSearchOptions["arg" .. tostring(ACTIVE_ARGUMENT) .. "op"] = ""
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT)]:Hide();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Sub"]:Disable();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Sub"]:Hide();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Value"]:Hide();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT)]:Hide()
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Sub"]:Disable()
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Sub"]:Hide()
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(ACTIVE_ARGUMENT) .. "Value"]:Hide()
ACTIVE_ARGUMENT = ACTIVE_ARGUMENT - 1;
AtlasLoot_AdvSearchArgButtonToggle()
ACTIVE_ARGUMENT = ACTIVE_ARGUMENT - 1
self:AdvSearchArgButtonToggle()
end
function AtlasLoot_AdvSearchArgButtonToggle()
function AtlasLoot:AdvSearchArgButtonToggle()
if ACTIVE_ARGUMENT == MAX_ARGUMENTS then
AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn:Disable()
else
@@ -315,73 +292,76 @@ function AtlasLoot_AdvSearchArgButtonToggle()
end
end
AtlasLoot_AdvSearchDefaultText = {
local AdvSearchDefaultText = {
["quality"] = "Select Quality",
["equip"] = "Select Item Type",
["type"] = "Select Option",
["difficulty"] = "Select Difficulty"
}
function AtlasLoot_AdvancedSearchMenuClick(Object, VariableToSet, VariableValue, ChildMenu, ChildMenuRegister)
function AtlasLoot:AdvancedSearchMenuClick(Object, VariableToSet, VariableValue, ChildMenu, ChildMenuRegister)
-- Setups child menus and sets search options to default
if (ChildMenu ~= nil) then
if (ChildMenuRegister == "Disable") then
AtlasLoot_AdvSearchOptions[AtlasLoot_FrameMenuList[ChildMenu][4]] = AtlasLoot_FrameMenuList[ChildMenu][5];
_G[AtlasLoot_FrameMenuList[ChildMenu][2]]:Disable();
AdvSearchOptions[FrameMenuList[ChildMenu][4]] = FrameMenuList[ChildMenu][5]
_G[FrameMenuList[ChildMenu][2]]:Disable()
-- Disable assigned children menus as well
if (AtlasLoot_FrameMenuList[ChildMenu][6]) then
_G[AtlasLoot_FrameMenuList[ChildMenu][6]]:Disable();
if (FrameMenuList[ChildMenu][6]) then
_G[FrameMenuList[ChildMenu][6]]:Disable()
end
if VariableValue == "reset" then
AtlasLoot_AdvSearchOptions[VariableToSet] = "";
Object[1]:SetText(AtlasLoot_AdvSearchDefaultText[VariableToSet]);
Object[2]:Close();
AdvSearchOptions[VariableToSet] = ""
Object[1]:SetText(AdvSearchDefaultText[VariableToSet])
Object[2]:Close()
_G[AtlasLoot_FrameMenuList[ChildMenu][2]]:SetText(AtlasLoot_FrameMenuList[ChildMenu][3])
_G[FrameMenuList[ChildMenu][2]]:SetText(FrameMenuList[ChildMenu][3])
return
end
else
AtlasLoot_AdvancedSearchRegister(AtlasLoot_FrameMenuList[ChildMenu][1], _G[AtlasLoot_FrameMenuList[ChildMenu][2]], AtlasLoot_AdvancedSearchMenus[ChildMenuRegister]);
AtlasLoot_AdvSearchOptions[AtlasLoot_FrameMenuList[ChildMenu][4]] = AtlasLoot_FrameMenuList[ChildMenu][5];
_G[AtlasLoot_FrameMenuList[ChildMenu][2]]:Enable();
_G[AtlasLoot_FrameMenuList[ChildMenu][2]]:SetText(AtlasLoot_FrameMenuList[ChildMenu][3]);
self:AdvancedSearchRegister(FrameMenuList[ChildMenu][1], _G[FrameMenuList[ChildMenu][2]], AdvancedSearchMenus[ChildMenuRegister])
AdvSearchOptions[FrameMenuList[ChildMenu][4]] = FrameMenuList[ChildMenu][5]
_G[FrameMenuList[ChildMenu][2]]:Enable()
_G[FrameMenuList[ChildMenu][2]]:SetText(FrameMenuList[ChildMenu][3])
-- Disable assigned children menus as well
if (AtlasLoot_FrameMenuList[ChildMenu][6]) then
_G[AtlasLoot_FrameMenuList[ChildMenu][6]]:Disable();
if (FrameMenuList[ChildMenu][6]) then
_G[FrameMenuList[ChildMenu][6]]:Disable()
end
end
end
if VariableValue == "reset" then
AtlasLoot_AdvSearchOptions[VariableToSet] = "";
Object[1]:SetText(AtlasLoot_AdvSearchDefaultText[VariableToSet]);
Object[2]:Close();
AdvSearchOptions[VariableToSet] = ""
Object[1]:SetText(AdvSearchDefaultText[VariableToSet])
Object[2]:Close()
return
end
AtlasLoot_AdvSearchOptions[VariableToSet] = VariableValue;
Object[1]:SetText(Object[3]);
Object[2]:Close();
AdvSearchOptions[VariableToSet] = VariableValue
Object[1]:SetText(Object[3])
Object[2]:Close()
end
function AtlasLoot_AdvancedSearchRegister(DropDown, DropDownObject, MenuOption)
function AtlasLoot:AdvancedSearchRegister(DropDown, DropDownObject, MenuOption)
DropDown:Register(DropDownObject, 'point', function(parent)
return "TOP", "BOTTOM"
end, 'children', function(level, value)
if level == 1 then
if AtlasLoot_AdvancedSearchMenus then
if AdvancedSearchMenus then
for k, v in ipairs(MenuOption) do
-- If a link to show a submenu
if (type(v[1]) == "table") and (type(v[1][1]) == "string") then
if v[1][1] ~= "" then
DropDown:AddLine('text', v[1][1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', AtlasLoot_AdvancedSearchMenuClick, 'arg1', {DropDownObject, DropDown, v[1][1]}, 'arg2',
v[1][2], 'arg3', v[1][3], 'arg4', v[1][4], 'arg5', v[1][5], 'notCheckable', true)
DropDown:AddLine('text', v[1][1], 'textR', 1, 'textG', 0.82, 'textB', 0,
'func', function()
self:AdvancedSearchMenuClick({DropDownObject, DropDown, v[1][1]}, v[1][2], v[1][3], v[1][4], v[1][5])
end,
'notCheckable', true)
end
else
local lock = 0;
local lock = 0
-- If an entry linked to a subtable
for i, j in pairs(v) do
if lock == 0 then
DropDown:AddLine('text', i, 'textR', 1, 'textG', 0.82, 'textB', 0, 'hasArrow', true, 'value', j, 'notCheckable', true)
lock = 1;
lock = 1
end
end
end
@@ -394,80 +374,88 @@ function AtlasLoot_AdvancedSearchRegister(DropDown, DropDownObject, MenuOption)
elseif level == 2 then
if value then
for k, v in ipairs(value) do
DropDown:AddLine('text', v[1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', AtlasLoot_AdvancedSearchMenuClick, 'arg1', {DropDownObject, DropDown, v[1]}, 'arg2', v[2], 'arg3',
v[3], 'arg4', v[4], 'arg5', v[5], 'notCheckable', true)
DropDown:AddLine('text', v[1], 'textR', 1, 'textG', 0.82, 'textB', 0,
'func', function()
self:AdvancedSearchMenuClick({DropDownObject, DropDown, v[1]}, v[2], v[3], v[4], v[5])
end,
'notCheckable', true)
end
end
end
end, 'dontHook', true)
end
function AtlasLoot_AdvancedSearchArgumentClick(Object, VariableToSet, VariableValue, IsOperator)
function AtlasLoot:AdvancedSearchArgumentClick(Object, VariableToSet, VariableValue, IsOperator)
if IsOperator and VariableValue == "reset" then
AtlasLoot_AdvSearchOptions["arg" .. VariableToSet .. "op"] = "";
AdvSearchOptions["arg" .. VariableToSet .. "op"] = ""
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:SetText("");
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Hide();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:SetText("")
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Hide()
Object[1]:SetText("Select Option");
Object[2]:Close();
Object[1]:SetText("Select Option")
Object[2]:Close()
elseif IsOperator then
AtlasLoot_AdvSearchOptions["arg" .. VariableToSet .. "op"] = VariableValue;
AdvSearchOptions["arg" .. VariableToSet .. "op"] = VariableValue
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Show();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Show()
Object[1]:SetText(Object[3]);
Object[2]:Close();
Object[1]:SetText(Object[3])
Object[2]:Close()
elseif VariableValue == "reset" then
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:SetText("Select Option");
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:Disable();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:SetText("Select Option")
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:Disable()
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:SetText("");
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Hide();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:SetText("")
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Hide()
AtlasLoot_AdvSearchOptions["arg" .. VariableToSet] = "";
AtlasLoot_AdvSearchOptions["arg" .. VariableToSet .. "op"] = "";
AdvSearchOptions["arg" .. VariableToSet] = ""
AdvSearchOptions["arg" .. VariableToSet .. "op"] = ""
Object[1]:SetText("Select Option");
Object[2]:Close();
Object[1]:SetText("Select Option")
Object[2]:Close()
else
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:SetText("Select Option");
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:Enable();
AtlasLoot_AdvSearchOptions["arg" .. VariableToSet .. "op"] = "";
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:SetText("Select Option")
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Sub"]:Enable()
AdvSearchOptions["arg" .. VariableToSet .. "op"] = ""
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:SetText("");
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Hide();
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:SetText("")
_G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. VariableToSet .. "Value"]:Hide()
AtlasLoot_AdvSearchOptions["arg" .. VariableToSet] = VariableValue;
Object[1]:SetText(Object[3]);
Object[2]:Close();
AdvSearchOptions["arg" .. VariableToSet] = VariableValue
Object[1]:SetText(Object[3])
Object[2]:Close()
end
end
function AtlasLoot_AdvancedSearchArgumentRegister(DropDown, DropDownObject, ArgumentCount, ArgumentMenu)
function AtlasLoot:AdvancedSearchArgumentRegister(DropDown, DropDownObject, ArgumentCount, ArgumentMenu)
DropDown:Register(DropDownObject, 'point', function(parent)
return "TOP", "BOTTOM"
end, 'children', function(level, value)
if level == 1 then
if AtlasLoot_AdvancedSearchArguments then
if AdvancedSearchArguments then
for k, v in ipairs(ArgumentMenu) do
-- If a link to show a submenu
if (type(v[1]) == "table") and (type(v[1][1]) == "string") then
local checked = false;
local checked = false
if v[1][3] == "Submenu" then
DropDown:AddLine('text', v[1][1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', AtlasLoot_AdvancedSearchArgumentClick, 'arg1', {DropDownObject, DropDown, v[1][1]}, 'arg2',
ArgumentCount, 'arg3', v[1][2], 'arg4', v[1][3], 'notCheckable', true)
DropDown:AddLine('text', v[1][1], 'textR', 1, 'textG', 0.82, 'textB', 0,
'func', function()
self:AdvancedSearchArgumentClick({DropDownObject, DropDown, v[1][1]}, ArgumentCount, v[1][2], v[1][3])
end,
'notCheckable', true)
elseif v[1][1] ~= "" then
DropDown:AddLine('text', v[1][1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', AtlasLoot_AdvancedSearchArgumentClick, 'arg1', {DropDownObject, DropDown, v[1][1]}, 'arg2',
ArgumentCount, 'arg3', v[1][2], 'arg4', v[1][3], 'notCheckable', true)
DropDown:AddLine('text', v[1][1], 'textR', 1, 'textG', 0.82, 'textB', 0,
'func', function() self:AdvancedSearchArgumentClick({DropDownObject, DropDown, v[1][1]}, ArgumentCount, v[1][2], v[1][3])
end,
'notCheckable', true)
end
else
local lock = 0;
local lock = 0
-- If an entry linked to a subtable
for i, j in pairs(v) do
if lock == 0 then
DropDown:AddLine('text', i, 'textR', 1, 'textG', 0.82, 'textB', 0, 'hasArrow', true, 'value', j, 'notCheckable', true)
lock = 1;
lock = 1
end
end
end
@@ -479,20 +467,26 @@ function AtlasLoot_AdvancedSearchArgumentRegister(DropDown, DropDownObject, Argu
end, 'notCheckable', true)
elseif level == 2 then
if value then
for k, v in ipairs(value) do
for _, v in ipairs(value) do
if type(v) == "table" then
if (type(v[1]) == "string") then
local checked = false;
local checked = false
-- If an entry to show a submenu
if v[4] == "Header" then
DropDown:AddLine('text', v[1], 'textR', 0.2, 'textG', 0.82, 'textB', 0.5, 'func', AtlasLoot_AdvancedSearchArgumentClick, 'arg1', {DropDownObject, DropDown, v[1]},
'arg2', ArgumentCount, 'arg3', v[2], 'arg4', v[3], 'notCheckable', true)
DropDown:AddLine('text', v[1], 'textR', 0.2, 'textG', 0.82, 'textB', 0.5, 'func', function()
self:AdvancedSearchArgumentClick({DropDownObject, DropDown, v[1]}, ArgumentCount, v[2], v[3])
end,
'notCheckable', true)
elseif v[3] == "Submenu" then
DropDown:AddLine('text', v[1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', AtlasLoot_AdvancedSearchArgumentClick, 'arg1', {DropDownObject, DropDown, v[1]}, 'arg2',
ArgumentCount, 'arg3', v[2], 'arg4', v[3], 'notCheckable', true)
DropDown:AddLine('text', v[1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', function()
self:AdvancedSearchArgumentClick({DropDownObject, DropDown, v[1]}, ArgumentCount, v[2], v[3])
end,
'notCheckable', true)
else
DropDown:AddLine('text', v[1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', AtlasLoot_AdvancedSearchArgumentClick, 'arg1', {DropDownObject, DropDown, v[1]}, 'arg2',
ArgumentCount, 'arg3', v[2], 'arg4', v[3], 'notCheckable', true)
DropDown:AddLine('text', v[1], 'textR', 1, 'textG', 0.82, 'textB', 0, 'func', function()
self:AdvancedSearchArgumentClick({DropDownObject, DropDown, v[1]}, ArgumentCount, v[2], v[3])
end,
'notCheckable', true)
end
end
end
@@ -509,16 +503,16 @@ function AtlasLoot:AdvancedSearch(Text)
if not Text then
return
end
Text = strtrim(Text);
local advSearchString = Text or "";
Text = strtrim(Text)
local advSearchString = Text or ""
local function AppendSearchString(toAppend, str)
if toAppend ~= "" then
toAppend = toAppend .. "&" .. str;
return toAppend;
toAppend = toAppend .. "&" .. str
return toAppend
end
return str;
return str
end
local function GetTextByName(name)
@@ -526,69 +520,69 @@ function AtlasLoot:AdvancedSearch(Text)
return _G["AtlasLootDefaultFrame_AdvancedSearchPanel_" .. name]:GetText()
end
return nil;
return nil
end
local function FixRangedSlot(subType)
if (subType == "wand" or subType == "gun" or subType == "crossbow") then
return "rangedright";
return "rangedright"
elseif subType == "thrown" then
return "thrown";
return "thrown"
end
return "ranged";
return "ranged"
end
if AtlasLoot_AdvSearchOptions["quality"] ~= "" then
advSearchString = AppendSearchString(advSearchString, "quality=" .. AtlasLoot_AdvSearchOptions["quality"]);
if AdvSearchOptions["quality"] ~= "" then
advSearchString = AppendSearchString(advSearchString, "quality=" .. AdvSearchOptions["quality"])
end
if AtlasLoot_AdvSearchOptions["equip"] ~= "" then
if AtlasLoot_AdvSearchOptions["equip"] == "ranged" and AtlasLoot_AdvSearchOptions["type"] ~= "" then
AtlasLoot_AdvSearchOptions["equip"] = FixRangedSlot(AtlasLoot_AdvSearchOptions["type"]);
if AdvSearchOptions["equip"] ~= "" then
if AdvSearchOptions["equip"] == "ranged" and AdvSearchOptions["type"] ~= "" then
AdvSearchOptions["equip"] = FixRangedSlot(AdvSearchOptions["type"])
end
advSearchString = AppendSearchString(advSearchString, "slot=" .. AtlasLoot_AdvSearchOptions["equip"]);
advSearchString = AppendSearchString(advSearchString, "slot=" .. AdvSearchOptions["equip"])
end
if AtlasLoot_AdvSearchOptions["type"] ~= "" and AtlasLoot_AdvSearchOptions["type"] then
advSearchString = AppendSearchString(advSearchString, "type=" .. AtlasLoot_AdvSearchOptions["type"]);
if AdvSearchOptions["type"] ~= "" and AdvSearchOptions["type"] then
advSearchString = AppendSearchString(advSearchString, "type=" .. AdvSearchOptions["type"])
end
if AtlasLoot_AdvSearchOptions["difficulty"] ~= "" and AtlasLoot_AdvSearchOptions["difficulty"] ~= 2 then
advSearchString = AppendSearchString(advSearchString, "dif=" .. AtlasLoot_AdvSearchOptions["difficulty"]);
if AdvSearchOptions["difficulty"] ~= "" and AdvSearchOptions["difficulty"] ~= 2 then
advSearchString = AppendSearchString(advSearchString, "dif=" .. AdvSearchOptions["difficulty"])
end
if(not AtlasLootDefaultFrame_AdvancedSearchPanel_LevelToggle:GetChecked()) then
if (GetTextByName("LevelMin") and GetTextByName("LevelMin") ~= "") then
advSearchString = AppendSearchString(advSearchString, "minlvl>=" .. GetTextByName("LevelMin"));
advSearchString = AppendSearchString(advSearchString, "minlvl>=" .. GetTextByName("LevelMin"))
end
if (GetTextByName("LevelMax") and GetTextByName("LevelMax") ~= "") then
advSearchString = AppendSearchString(advSearchString, "minlvl<=" .. GetTextByName("LevelMax"));
advSearchString = AppendSearchString(advSearchString, "minlvl<=" .. GetTextByName("LevelMax"))
end
else
advSearchString = AppendSearchString(advSearchString, "minlvl>=" .. UnitLevel("player"));
advSearchString = AppendSearchString(advSearchString, "minlvl<=" .. UnitLevel("player"));
advSearchString = AppendSearchString(advSearchString, "minlvl>=" .. UnitLevel("player"))
advSearchString = AppendSearchString(advSearchString, "minlvl<=" .. UnitLevel("player"))
end
if (GetTextByName("iLevelMin") and GetTextByName("iLevelMin") ~= "") then
advSearchString = AppendSearchString(advSearchString, "ilvl>=" .. GetTextByName("iLevelMin"));
advSearchString = AppendSearchString(advSearchString, "ilvl>=" .. GetTextByName("iLevelMin"))
end
if (GetTextByName("iLevelMax") and GetTextByName("iLevelMax") ~= "") then
advSearchString = AppendSearchString(advSearchString, "ilvl<=" .. GetTextByName("iLevelMax"));
advSearchString = AppendSearchString(advSearchString, "ilvl<=" .. GetTextByName("iLevelMax"))
end
for i = 1, ACTIVE_ARGUMENT, 1 do
if AtlasLoot_AdvSearchOptions["arg" .. i] ~= "" then
local arg = _G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(i) .. "Value"]:GetText();
if AtlasLoot_AdvSearchOptions["arg" .. i .. "op"] == "" then
AtlasLoot_AdvSearchOptions["arg" .. i .. "op"] = ">"
arg = "0";
if AdvSearchOptions["arg" .. i] ~= "" then
local arg = _G["AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(i) .. "Value"]:GetText()
if AdvSearchOptions["arg" .. i .. "op"] == "" then
AdvSearchOptions["arg" .. i .. "op"] = ">"
arg = "0"
end
advSearchString = AppendSearchString(advSearchString, AtlasLoot_AdvSearchOptions["arg" .. i] .. AtlasLoot_AdvSearchOptions["arg" .. i .. "op"] .. arg);
advSearchString = AppendSearchString(advSearchString, AdvSearchOptions["arg" .. i] .. AdvSearchOptions["arg" .. i .. "op"] .. arg)
end
end
AtlasLootDefaultFrame_AdvancedSearchPanel:Hide();
AtlasLoot:Search(string.lower(advSearchString));
AtlasLootDefaultFrame_AdvancedSearchPanel:Hide()
self:Search(string.lower(advSearchString))
end
File diff suppressed because it is too large Load Diff
+442
View File
@@ -0,0 +1,442 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
-- Colours stored for code readability
local GREY = "|cff999999"
local RED = "|cffff0000"
local WHITE = "|cffFFFFFF"
local GREEN = "|cff1eff00"
local PURPLE = "|cff9F3FFF"
local BLUE = "|cff0070dd"
local ORANGE = "|cffFF8400"
local CYAN = "|cff00ffff"
local SPRINGGREEN = "|cFF00FF7F"
-- Used to create a dewdrop menu from a table
function AtlasLoot:OpenDewdropMenu(frame, menuList, skipRegister)
if self.Dewdrop:IsOpen(frame) then self.Dewdrop:Close() return end
if not skipRegister then
self.Dewdrop:Register(frame,
'point', function(parent)
return "TOP", "BOTTOM"
end,
'children', function(level, value)
local altar
for _, menu in pairs(menuList[level]) do
if menu.divider then
local text = WHITE.."----------------------------------------------------------------------------------------------------"
self.Dewdrop:AddLine(
'text' , text:sub(1, menu.divider),
'textHeight', 13,
'textWidth', 13,
'isTitle', true,
'notCheckable', true
)
else
self.Dewdrop:AddLine(
'text', menu.text,
'func', menu.func,
'closeWhenClicked', menu.closeWhenClicked,
'textHeight', menu.textHeight,
'textWidth', menu.textWidth,
'notCheckable', menu.notCheckable,
'tooltip', menu.tooltip,
'secure', menu.secure,
'icon', menu.icon
)
end
-- create close button
if menu.close then
self.Dewdrop:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
'notCheckable', true
)
end
end
end,
'dontHook', true
)
end
self.Dewdrop:Open(frame)
return true
end
--for a adding a divider to dew drop menus
function AtlasLoot:AddDividerLine(maxLenght)
local text = WHITE.."----------------------------------------------------------------------------------------------------"
self.Dewdrop:AddLine(
'text' , text:sub(1, maxLenght),
'textHeight', 12,
'textWidth', 12,
'isTitle', true,
"notCheckable", true
)
end
function AtlasLoot:CloseDewDrop(divider, maxLenght)
if divider then
self:AddDividerLine(maxLenght)
end
self.Dewdrop:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
'notCheckable', true
)
end
-- return a copy of the table table
function AtlasLoot:CloneTable(table)
if type(table) ~= "table" then return end
local new = {} -- create a new table
for i, v in pairs(table) do
if type(v) == "table" then
v = self:CloneTable(v)
end
new[i] = v
end
return new
end
--[[
AtlasLoot:FindId(id, difficulty)
Finds the Ids of other difficulties based on the normal id of the item and the difficulty parameter given.
On the form of {ID, {normal, heroic, mythic, mythic1, mythic2, ... ,mythicN}}
]]
function AtlasLoot:FindId(id, difficulty, type, sourceType)
if not ItemIDsDatabase[id] then return nil, false end
if (difficulty == 4 and (type == "BCRaid" or type == "ClassicRaid") and sourceType == "Search") or
(difficulty == 5 and (type == "BCRaid" or type == "ClassicRaid") and sourceType ~= "Search") then
return ItemIDsDatabase[id]["MythicRaid"], true
end
if (difficulty == 5 and (type == "BCRaid" or type == "ClassicRaid") and sourceType == "Search") then
difficulty = 4
end
return ItemIDsDatabase[id][difficulty], true
end
-- Create enchant tooltip
function AtlasLoot:GetEnchantLink(enchantID)
if not enchantID then return end
local EnchantLink = nil
AtlasLootScanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
AtlasLootScanTooltip:ClearLines()
AtlasLootScanTooltip:SetHyperlink("enchant:"..enchantID)
AtlasLootScanTooltip:Show()
local tooltipline = _G["AtlasLootScanTooltipTextLeft1"]
local text = tooltipline:GetText()
if text and string.find(text, ":") then
EnchantLink = "|cffffd000|Henchant:"..enchantID.."|h["..text.."]|h|r"
else
EnchantLink = GetSpellLink(enchantID)
end
AtlasLootScanTooltip:Hide()
return EnchantLink
end
-- Open a ascension db link
function AtlasLoot:OpenDBURL(ID, Type)
OpenAscensionDBURL("?"..Type.."="..ID)
end
-- create a enchant or item chat link!
function AtlasLoot:Chatlink(ID,chatType,Type)
if Type == "spell" then
SendChatMessage(self:GetEnchantLink(ID) ,chatType)
else
SendChatMessage(select(2,GetItemInfo(ID)) ,chatType)
end
end
function AtlasLoot:GetRecipeData(recipeID, idType)
if not TRADESKILL_RECIPES then return end
for _,prof in pairs(TRADESKILL_RECIPES) do
for _,cat in pairs(prof) do
for _,recipe in pairs(cat) do
if (idType == "spell" and recipeID == recipe.SpellEntry) or (idType == "item" and recipeID == recipe.RecipeItemEntry) then
local info = {{recipe.CreatedItemEntry}, "blank", "blank", "blank", "blank", "blank",spellID = recipe.SpellEntry}
if ItemIDsDatabase[recipe.CreatedItemEntry] and ItemIDsDatabase[recipe.CreatedItemEntry][1] then
info[2] = {ItemIDsDatabase[recipe.CreatedItemEntry][1]}
end
if recipe.RecipeItemEntry and recipe.RecipeItemEntry ~= 0 then
local number = 3
if info[2] == "blank" then
number = 2
end
info[number] = {recipe.RecipeItemEntry}
end
for _,v in pairs(recipe.Reagents) do
tinsert(info, v)
end
return info
end
end
end
end
end
-- Returns the recipe itemID from a crafting spellID
function AtlasLoot:GetRecipeID(spellID)
if not TRADESKILL_RECIPES then return end
for _,prof in pairs(TRADESKILL_RECIPES) do
for _,cat in pairs(prof) do
for _,recipe in pairs(cat) do
if spellID == recipe.SpellEntry and recipe.RecipeItemEntry ~= 0 then
return recipe.RecipeItemEntry
end
end
end
end
end
-- Get rep faction for when you have 2 loot tables and want to show a different one depending on rep
function AtlasLoot:GetReputationFaction(factions)
local factionIndex = 1
local lastFactionName
repeat
local name, _, _, _, _, totalRep = GetFactionInfo(factionIndex)
for _, faction in pairs(factions) do
if name == faction and totalRep and totalRep >= 1 then
return faction
end
if name == faction then
lastFactionName = faction
end
end
factionIndex = factionIndex + 1
until factionIndex > 200
return lastFactionName
end
--[[
AtlasLoot:PopoupItemFrame(item, data)
Used to create a popup item frame for items like gem sacks to show what they contain
]]
function AtlasLoot:PopoupItemFrame(frame, data)
if not data then AtlasLoot_PopupFrame:Hide() return end
--hide the unused buttons
for i = 1, 15 do
local button = _G["AtlasLoot_PopupButton_"..i]
if button then
button:Hide()
end
end
--creates a button only if one dosnt already exist re use old one if it does
local function createButton(num)
if _G["AtlasLoot_PopupButton_"..num] then return end
local button = CreateFrame("Button", "AtlasLoot_PopupButton_"..num, AtlasLoot_PopupFrame)
button:SetID(num)
button:SetSize(30,30)
button:EnableMouse()
button:RegisterForClicks("AnyDown")
button:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD")
button.icon = button:CreateTexture(nil,"ARTWORK")
button.icon:SetSize(30,30)
button.icon:SetPoint("CENTER")
button.name = button:CreateFontString(nil,"ARTWORK","GameFontHighlightLarge")
button.name:SetFont("GameFontHighlightLarge", 30)
button.name:SetSize(30,30)
button.name:SetPoint("CENTER", button.icon,0,0)
button.name:SetJustifyH("CENTER")
button.name:Hide()
button.number = num
button:SetScript("OnClick", function(btn, arg1) self:ItemOnClick(btn, arg1) end)
button:SetScript("OnEnter", function(btn)
self:ItemOnEnter(btn)
AtlasLoot_PopupFrame:Show()
end)
button:SetScript("OnLeave", function(btn)
if not self.Dewdrop:IsOpen(_G["AtlasLoot_PopupButton_"..num]) then
self:ItemOnLeave(btn)
end
end)
if num == 1 then
button:SetPoint("TOPLEFT", "AtlasLoot_PopupFrame", 9, -8)
elseif num == 7 then
button:SetPoint("BOTTOM", "AtlasLoot_PopupButton_1", 0, -33)
elseif num == 13 then
button:SetPoint("BOTTOM", "AtlasLoot_PopupButton_6", 0, -33)
else
button:SetPoint("LEFT", _G["AtlasLoot_PopupButton_"..(num-1)],"RIGHT",3,0)
end
end
if data.Faction then
data = data[self:GetReputationFaction(data.Faction)]
end
local numberBtns
for i, item in ipairs(data) do
createButton(i)
local button = _G["AtlasLoot_PopupButton_"..i]
if item == "blank" then
button:Hide()
else
local itemID = item.itemID or item[1]
local itemData = Item:CreateFromID(itemID)
if itemID and not itemData:GetInfo() then
self:ItemsLoading(1)
itemData:ContinueOnLoad(function(itemID)
self:ItemsLoading(-1)
end)
end
button.icon:SetTexture(GetItemIcon(itemID))
button.itemID = itemID
button.itemTexture = frame.itemTexture
local recipe = self:GetRecipeData(itemID, "item")
if recipe then
button.craftingData = self:RecipeSource(recipe.spellID)
end
if item[2] then
button.name:SetText(WHITE..item[2])
button.name:Show()
else
button.name:Hide()
end
button:Show()
end
numberBtns = i
end
if numberBtns < 6 then
AtlasLoot_PopupFrame:SetWidth((numberBtns*33)+16)
else
AtlasLoot_PopupFrame:SetWidth(214)
end
if numberBtns > 6 then
AtlasLoot_PopupFrame:SetHeight(79)
elseif numberBtns > 12 then
AtlasLoot_PopupFrame:SetHeight(107)
else
AtlasLoot_PopupFrame:SetHeight(46)
end
AtlasLoot_PopupFrame:SetParent(frame)
AtlasLoot_PopupFrame:ClearAllPoints()
AtlasLoot_PopupFrame:SetPoint("TOPLEFT",frame,0,-25)
AtlasLoot_PopupFrame:Show()
end
--Adds explanatory tooltips to UI objects.
function AtlasLoot:AddTooltip(frameb, tooltiptext)
if not tooltiptext or not frameb then return end
local frame = _G[frameb]
frame:SetScript("OnEnter", function()
GameTooltip:SetOwner(frame, "ANCHOR_RIGHT")
GameTooltip:SetText(tooltiptext)
GameTooltip:Show()
end)
frame:SetScript("OnLeave", function() GameTooltip:Hide() end)
end
--Called when 'Back'Button is pressed and calls up the appropriate loot page
function AtlasLoot:BackButton_OnClick()
self.backEnabled = false
if AtlasLootItemsFrame.refreshSearch then
self:ShowItemsFrame(AtlasLootItemsFrame.refreshSearch[1], AtlasLootItemsFrame.refreshSearch[2], AtlasLootItemsFrame.refreshSearch[3])
else
self:ShowItemsFrame(AtlasLootItemsFrame.refreshBack[1], AtlasLootItemsFrame.refreshBack[2], AtlasLootItemsFrame.refreshBack[3])
end
end
--[[
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(dataSource)
local moduleName
moduleName = self.ModuleName[dataSource]
if moduleName and IsAddOnLoaded(moduleName) then
return true
elseif moduleName then
LoadAddOn(moduleName)
end
end
--[[
AtlasLoot:NavButton_OnClick:
Called when <-, -> are pressed and calls up the appropriate loot page
]]
function AtlasLoot:NavButton_OnClick(btn)
if AtlasLootDefaultFrame_Map:IsVisible() then
self:MapSelect(btn.mapID, btn.mapNum)
else
local tablenum, dataID, dataSource = btn.tablenum, btn.tablebase[1], btn.tablebase[2]
if #_G[dataSource][dataID] > 26 then
local min, max = AtlasLootDefaultFrameSubTableScrollScrollBar:GetMinMaxValues()
AtlasLootDefaultFrameSubTableScrollScrollBar:SetValue(tablenum * (max / #_G[dataSource][dataID]))
end
self:ShowItemsFrame(dataID, dataSource, tablenum)
end
end
--------- rate limited item frame refresh ---------
local refreshTimer
function AtlasLoot:ItemRefreshTimer()
self:ShowItemsFrame(AtlasLootItemsFrame.refresh[1], AtlasLootItemsFrame.refresh[2], AtlasLootItemsFrame.refresh[3])
refreshTimer = false
end
function AtlasLoot:ItemFrameRefresh()
if refreshTimer then return end
self:ScheduleTimer("ItemRefreshTimer", 5)
refreshTimer = true
end
-----------------------------------------------------
function AtlasLoot:getMaxDifficulty(difficultyKey)
if(difficultyKey == "ClassicDungeon" or difficultyKey == "PVP") then
return 2
elseif (difficultyKey == "ClassicDungeonExt" or difficultyKey == "BCDungeon" or difficultyKey == "WrathDungeon") then
return 44
elseif (difficultyKey == "ClassicRaid" or difficultyKey == "BCRaid" or difficultyKey == "WrathRaid") then
return 5
else
return 0
end
end
-- Loading items spinner
local loadingCount = 0
function AtlasLoot:ItemsLoading(count)
if count == "reset" then
loadingCount = 0
count = 0
end
loadingCount = loadingCount + count
if(loadingCount > 0) then
AtlasLoot_ItemsLoadingSpinner:SetVertexColor(0,1,0)
AtlasLoot_ItemsLoadingFrameBackground:SetVertexColor(0,1,0)
AtlasLoot_ItemsLoading.tooltip = loadingCount.." Items still loading"
AtlasLoot_ItemsLoading.Loop:Play()
AtlasLoot_ItemsLoading:Show()
if GameTooltip:GetOwner() == AtlasLoot_ItemsLoading then
GameTooltip:SetOwner(AtlasLoot_ItemsLoading, "ANCHOR_LEFT")
GameTooltip:SetText(AtlasLoot_ItemsLoading.tooltip, nil, nil, nil, nil, true)
end
else
AtlasLoot_ItemsLoading.Loop:Stop()
AtlasLoot_ItemsLoading:Hide()
end
end
function AtlasLoot:BatchRequestVanity(itemList)
itemList = self:CloneTable(itemList)
local function nextItem()
local task = tremove(itemList)
while task do
RequestDeliverVanityCollectionItem(task)
return Timer.After(1, nextItem)
end
end
return nextItem()
end
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
+149
View File
@@ -0,0 +1,149 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local BabbleBoss = AtlasLoot_GetLocaleLibBabble("LibBabble-Boss-3.0")
local BabbleInventory = AtlasLoot_GetLocaleLibBabble("LibBabble-Inventory-3.0")
local BabbleFaction = AtlasLoot_GetLocaleLibBabble("LibBabble-Faction-3.0")
local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
--Table holding all loot tables is initialised here as it loads early
AtlasLoot_Data = {}
AtlasLoot_MapData = {}
AtlasLoot_ExtraData = {}
AtlasLoot_CraftingData = {
AquireType = {},
Trainer = {},
WorldDrop = {},
LimitedVendor = {},
QuestDrop = {},
MobDrop = {},
RecipeQuest = {},
Vendor = {},
RepVendor = {},
RecipeVendor = {},
RecipeWorldDrop = {},
RecipeRepVendor = {},
}
AtlasLoot_CraftingData["Custom"] = {
[1] = { AL["DISCOVERY_ALCH_ELIXIRFLASK"] };
[2] = { AL["DISCOVERY_ALCH_POTION"] };
[3] = { AL["DISCOVERY_ALCH_XMUTE"] };
[4] = { AL["DISCOVERY_ALCH_PROT"] };
[5] = { AL["DAILY_COOKING_MEAT"], BabbleZone["Shattrath"], 0, 0 };
[6] = { AL["DAILY_COOKING_FISH"], BabbleZone["Shattrath"], 0, 0 };
[7] = { AL["DAILY_FISHING_SHATT"], BabbleZone["Shattrath"], 0, 0 };
[8] = { AL["DEFAULT_RECIPE"] };
[9] = { AL["CRAFTED_ENGINEERS"] };
[10] = { AL["ONYXIA_HEAD_QUEST"], BabbleZone["Onyxia's Lair"], 0, 0 };
[11] = { AL["EDGE_OF_MADNESS"], BabbleZone["Zul'Gurub"], 0, 0 };
[12] = { AL["DISCOVERY_ALCH_WRATH"] };
[13] = { AL["HENRY_STERN_RFD"], BabbleZone["Razorfen Downs"], 0, 0 };
[14] = { AL["DISCOVERY_INSC_MINOR"] };
[15] = { AL["DISCOVERY_INSC_NORTHREND"] };
[16] = { AL["ENG_GNOMER"], BabbleZone["Gnomeregan"], 0, 0 };
[17] = { AL["ENG_FLOOR_ITEM_BRD"], BabbleZone["Blackrock Depths"], 0, 0 };
[18] = { AL["DISCOVERY_ALCH_NORTHREND_RESEARCH"] };
[19] = { AL["DISCOVERY_ALCH_NORTHREND_XMUTE"] };
[20] = { AL["Custom36"] };
[21] = { AL["Custom36"] };
[22] = { AL["AQ40_RANDOM_BOP"], BabbleZone["Temple of Ahn'Qiraj"], 0, 0 };
[23] = { AL["DM_CACHE"], BabbleZone["Dire Maul"], 59.04, 48.82 };
[24] = { AL["SUNWELL_RANDOM"], BabbleZone["Sunwell Plateau"], 0, 0 };
[25] = { AL["BRD_RANDOM_ROOM"], BabbleZone["Blackrock Depths"], 0, 0 };
[26] = { AL["MC_RANDOM"], BabbleZone["Molten Core"], 0, 0 };
[27] = { AL["HYJAL_RANDOM"], BabbleZone["Hyjal Summit"], 0, 0 };
[28] = { AL["Custom36"] };
[29] = { AL["ZA_RANDOM"], BabbleZone["Zul'Aman"], 0, 0 };
[30] = { AL["SCHOLO_BOOK_SPAWN"], BabbleZone["Scholomance"], 0, 0 };
[31] = { AL["STRATH_BS_PLANS"], BabbleZone["Stratholme"], 0, 0 };
[32] = { AL["DM_TRIBUTE"], BabbleZone["Dire Maul"], 59.04, 48.82 };
[33] = { AL["Custom36"] };
[34] = { AL["BT_RANDOM"], BabbleZone["Black Temple"], 0, 0 };
[35] = { AL["Random Level 70 instance drop"] };
[36] = { AL["Custom36"] };
[37] = { AL["SSC_RANDOM"], BabbleZone["Serpentshrine Cavern"], 0, 0 };
[38] = { AL["DAILY_COOKING_DAL"], BabbleZone["Dalaran"], 0, 0 };
[39] = { AL["ULDUAR_RANDOM"], BabbleZone["Ulduar"], 0, 0 };
[40] = { AL["DISCOVERY_INSC_BOOK"] };
[41] = { AL["Custom41"] };
[42] = { AL["TOC25_RANDOM"] };
[43] = { AL["TK_RANDOM"], BabbleZone["The Eye"], 0, 0 };
[44] = { AL["Custom44"] };
[45] = { AL["Custom45"] };
[46] = { AL["Random Level 70 instance drop/Raid Trash Drop"].."/"..AL["TBC Callboard Cache"] };
}
AtlasLoot_CraftingData["Seasonal"] = {
[1] = { GetCategoryInfo(156) }; -- Winter's Veil
[2] = { GetCategoryInfo(160) }; -- Lunar Festival
[3] = { AL["Darkmoon Faire"] }; -- Darkmoon Faire
[4] = { GetCategoryInfo(161) }; -- Midsummer
[5] = { GetCategoryInfo(14981) }; -- Pilgrim's Bounty
[6] = { AL["Day of the Dead"] }; -- Day of the Dead
}
----------------------
--- Heirloom Items ---
----------------------
AtlasLoot_Data["Heirloom"] = {
Name = AL["Heirloom"];
{
Name = "Chests";
[1] = { itemID = 1648691, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Tattered Dreadmist Robe
[2] = { itemID = 1648687, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Preened Ironfeather Breastplate
[3] = { itemID = 1648689, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Stained Shadowcraft Tunic
[4] = { itemID = 1648677, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Champion's Deathdealer Breastplate
[5] = { itemID = 1648683, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Mystical Vest of Elements
[6] = { itemID = 1648685, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Polished Breastplate of Valor
[7] = { itemID = 3148685, price = "1200 #tokenofprestige# | 192000 #marks# | 800 #bazaar#" }; --Polished Breastplate of Might
},
{
Name = "Shoulders";
[1] = { itemID = 1642985, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Tattered Dreadmist Mantle
[2] = { itemID = 1642984, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Preened Ironfeather Shoulders
[3] = { itemID = 1642952, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Stained Shadowcraft Spaulders
[4] = { itemID = 1642950, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Champion Herod's Shoulder
[5] = { itemID = 1642951, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Mystical Pauldrons of Elements
[6] = { itemID = 1642949, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Polished Spaulders of Valor
[7] = { itemID = 3142949, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Polished Spaulders of Might
[16] = { itemID = 1644107, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Exquisite Sunderseer Mantle
[17] = { itemID = 1644103, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Exceptional Stormshroud Shoulders
[18] = { itemID = 1644105, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Lasting Feralheart Spaulders
[19] = { itemID = 1644102, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Aged Pauldrons of The Five Thunders
[20] = { itemID = 1644101, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Prized Beastmaster's Mantle
[21] = { itemID = 1644100, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Pristine Lightforge Spaulders
[22] = { itemID = 1644099, price = "800 #tokenofprestige# | 128000 #marks# | 600 #bazaar#" }; --Strengthened Stockade Pauldrons
},
{
Name = AL["Accessories"];
[1] = { itemID = 1642992, price = "500 #tokenofprestige# | 80000 #marks# | 500 #bazaar#" }; --Discerning Eye of the Beast
[2] = { itemID = 1642991, price = "500 #tokenofprestige# | 80000 #marks# | 500 #bazaar#" }; --Swift Hand of Justice
[3] = { itemID = 1644098, price = "500 #tokenofprestige# | 80000 #marks# | 500 #bazaar#" }; --Inherited Insignia of the Alliance
[4] = { itemID = 1644097, price = "500 #tokenofprestige# | 80000 #marks# | 500 #bazaar#" }; --Inherited Insignia of the Horde
[5] = { itemID = 339076, price = "" }; --Pendant of Adventure
[6] = { itemID = 339100, price = "" }; --Pendant of Discovery
[7] = { itemID = 50255 }; --Dread Pirate Ring
},
{
Name = "Weapons";
[1] = { itemID = 1642944, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Balanced Heartseeker
[2] = { itemID = 1642945, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Venerable Dal'Rend's Sacred Charge
[3] = { itemID = 1642948, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Devout Aurastone Hammer
[4] = { itemID = 1648716, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Venerable Mass of McGowan
[5] = { itemID = 1644091, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Sharpened Scarlet Kris
[6] = { itemID = 1644096, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Battleworn Thrash Blade
[7] = { itemID = 1644094, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --The Blessed Hammer of Grace
[9] = { itemID = 3140350, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Urn of Aspiring Light
[10] = { itemID = 3148335, price = "600 #tokenofprestige# | 96000 #marks# | 600 #bazaar#" }; --Polished Observer's Shield
[16] = { itemID = 1642943, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Bloodied Arcanite Reaper
[17] = { itemID = 3142943, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Sturdied Arcanite Spear
[18] = { itemID = 1648718, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Repurposed Lava Dredger
[19] = { itemID = 1642947, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Dignified Headmaster's Charge
[20] = { itemID = 1644092, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Reforged Truesilver Champion
[21] = { itemID = 1644095, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Grand Staff of Jordan
[23] = { itemID = 1642946, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Charmed Ancient Bone Bow
[24] = { itemID = 1644093, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Upgraded Dwarven Hand Cannon
[25] = { itemID = 1642846, price = "1000 #tokenofprestige# | 160000 #marks# | 800 #bazaar#" }; --Wand of the Forgotten Lich
},
}
+9
View File
@@ -0,0 +1,9 @@
<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="Databases.lua"/>
<Script file="ItemIDsDatabaseFixes.lua"/>
<Script file="extraCraftingData.lua"/>
<Script file="CraftingSource.lua"/>
<Script file="CraftingLevels.lua"/>
<Script file="npcs.lua"/>
</Ui>
@@ -0,0 +1,589 @@
ItemIDsDatabase = {}
--Items not added from generated file
ItemIDsDatabase[18563] = { 18563, 18563, 318563, 218563 }
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, 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 }
ItemIDsDatabase[27896] = { 6027896, 27896, 27896, 427896 }
ItemIDsDatabase[30007] = { 6030007, 30007, 330007, 230007 }
ItemIDsDatabase[30015] = { 6030015, 30015, 330015, 230015 }
ItemIDsDatabase[30017] = { 6030017, 30017, 330017, 230017 }
ItemIDsDatabase[30018] = { 6030018, 30018, 330018, 230018 }
ItemIDsDatabase[32837] = { 6032837, 32837, 332837, 232837 }
ItemIDsDatabase[32838] = { 6032838, 32838, 332838, 232838 }
ItemIDsDatabase[30104] = { 6033482, 30104, 330104, 230104 }
--MC/Ony Items
ItemIDsDatabase[18216] = { 6018216, 18216, 318216, 218216 }
ItemIDsDatabase[18215] = { 6018215, 18215, 318215, 218215 }
ItemIDsDatabase[18211] = { 6018211, 18211, 318211, 218211 }
ItemIDsDatabase[17084] = { 6017084, 17084, 317084, 217084 }
ItemIDsDatabase[18212] = { 6018212, 18212, 318212, 218212 }
ItemIDsDatabase[17083] = { 6017083, 17083, 317083, 217083 }
--Bwl Items
ItemIDsDatabase[1506015] = { 7506015, 1506015, 1806015, MythicRaid = 2806015, 1706015 }
ItemIDsDatabase[1506014] = { 7506014, 1506014, 1806014, MythicRaid = 2806014, 1706014 }
--T2 missing sets
ItemIDsDatabase[1516900] = { 7516900, 1516900, 1816900, MythicRaid = 2816900, 1716900 }
ItemIDsDatabase[1516902] = { 7516902, 1516902, 1816902, MythicRaid = 2816902, 1716902 }
ItemIDsDatabase[1516897] = { 7516897, 1516897, 1816897, MythicRaid = 2816897, 1716897 }
ItemIDsDatabase[1516904] = { 7516904, 1516904, 1816904, MythicRaid = 2816904, 1716904 }
ItemIDsDatabase[1516904] = { 7516904, 1516904, 1816904, MythicRaid = 2816904, 1716904 }
ItemIDsDatabase[1516899] = { 7516899, 1516899, 1816899, MythicRaid = 2816899, 1716899 }
ItemIDsDatabase[1516903] = { 7516903, 1516903, 1816903, MythicRaid = 2816903, 1716903 }
ItemIDsDatabase[1516898] = { 7516898, 1516898, 1816898, MythicRaid = 2816898, 1716898 }
ItemIDsDatabase[1516892] = { 7516892, 1516892, 1816892, MythicRaid = 2816892, 1716892 }
ItemIDsDatabase[1516894] = { 7516894, 1516894, 1816894, MythicRaid = 2816894, 1716894 }
ItemIDsDatabase[1516889] = { 7516889, 1516889, 1816889, MythicRaid = 2816889, 1716889 }
ItemIDsDatabase[1516896] = { 7516896, 1516896, 1816896, MythicRaid = 2816896, 1716896 }
ItemIDsDatabase[1516891] = { 7516891, 1516891, 1816891, MythicRaid = 2816891, 1716891 }
ItemIDsDatabase[1516895] = { 7516895, 1516895, 1816895, MythicRaid = 2816895, 1716895 }
ItemIDsDatabase[1516893] = { 7516893, 1516893, 1816893, MythicRaid = 2816893, 1716893 }
ItemIDsDatabase[1516890] = { 7516890, 1516890, 1816890, MythicRaid = 2816890, 1716890 }
ItemIDsDatabase[1516955] = { 7516955, 1516955, 1816955, MythicRaid = 2816955, 1716955 }
ItemIDsDatabase[1516953] = { 7516953, 1516953, 1816953, MythicRaid = 2816953, 1716953 }
ItemIDsDatabase[1516958] = { 7516958, 1516958, 1816958, MythicRaid = 2816958, 1716958 }
ItemIDsDatabase[1516951] = { 7516951, 1516951, 1816951, MythicRaid = 2816951, 1716951 }
ItemIDsDatabase[1516956] = { 7516956, 1516956, 1816956, MythicRaid = 2816956, 1716956 }
ItemIDsDatabase[1516952] = { 7516952, 1516952, 1816952, MythicRaid = 2816952, 1716952 }
ItemIDsDatabase[1516954] = { 7516954, 1516954, 1816954, MythicRaid = 2816954, 1716954 }
ItemIDsDatabase[1516957] = { 7516957, 1516957, 1816957, MythicRaid = 2816957, 1716957 }
ItemIDsDatabase[1516921] = { 7516921, 1516921, 1816921, MythicRaid = 2816921, 1716921 }
ItemIDsDatabase[1516924] = { 7516924, 1516924, 1816924, MythicRaid = 2816924, 1716924 }
ItemIDsDatabase[1516923] = { 7516923, 1516923, 1816923, MythicRaid = 2816923, 1716923 }
ItemIDsDatabase[1516926] = { 7516926, 1516926, 1816926, MythicRaid = 2816926, 1716926 }
ItemIDsDatabase[1516920] = { 7516920, 1516920, 1816920, MythicRaid = 2816920, 1716920 }
ItemIDsDatabase[1516925] = { 7516925, 1516925, 1816925, MythicRaid = 2816925, 1716925 }
ItemIDsDatabase[1516922] = { 7516922, 1516922, 1816922, MythicRaid = 2816922, 1716922 }
ItemIDsDatabase[1516919] = { 7516919, 1516919, 1816919, MythicRaid = 2816919, 1716919 }
ItemIDsDatabase[1516947] = { 7516947, 1516947, 1816947, MythicRaid = 2816947, 1716947 }
ItemIDsDatabase[1516945] = { 7516945, 1516945, 1816945, MythicRaid = 2816945, 1716945 }
ItemIDsDatabase[1516950] = { 7516950, 1516950, 1816950, MythicRaid = 2816950, 1716950 }
ItemIDsDatabase[1516943] = { 7516943, 1516943, 1816943, MythicRaid = 2816943, 1716943 }
ItemIDsDatabase[1516948] = { 7516948, 1516948, 1816948, MythicRaid = 2816948, 1716948 }
ItemIDsDatabase[1516944] = { 7516944, 1516944, 1816944, MythicRaid = 2816944, 1716944 }
ItemIDsDatabase[1516946] = { 7516946, 1516946, 1816946, MythicRaid = 2816946, 1716946 }
ItemIDsDatabase[1516949] = { 7516949, 1516949, 1816949, MythicRaid = 2816949, 1716949 }
ItemIDsDatabase[1516963] = { 7516963, 1516963, 1816963, MythicRaid = 2816963, 1716963 }
ItemIDsDatabase[1516961] = { 7516961, 1516961, 1816961, MythicRaid = 2816961, 1716961 }
ItemIDsDatabase[1516966] = { 7516966, 1516966, 1816966, MythicRaid = 2816966, 1716966 }
ItemIDsDatabase[1516959] = { 7516959, 1516959, 1816959, MythicRaid = 2816959, 1716959 }
ItemIDsDatabase[1516964] = { 7516964, 1516964, 1816964, MythicRaid = 2816964, 1716964 }
ItemIDsDatabase[1516960] = { 7516960, 1516960, 1816960, MythicRaid = 2816960, 1716960 }
ItemIDsDatabase[1516962] = { 7516962, 1516962, 1816962, MythicRaid = 2816962, 1716962 }
ItemIDsDatabase[1516965] = { 7516965, 1516965, 1816965, MythicRaid = 2816965, 1716965 }
--Tier 3 Missing Sets
ItemIDsDatabase[1522418] = { 7522515, 1522515, 1822515, MythicRaid = 2822515, 1722515 }
ItemIDsDatabase[1522419] = { 7522419, 1522419, 1822419, MythicRaid = 2822419, 1722419 }
ItemIDsDatabase[1522416] = { 7522491, 1522491, 1822491, MythicRaid = 2822491, 1722491 }
ItemIDsDatabase[1522423] = { 7532491, 1532491, 1832491, MythicRaid = 2832491, 1732491 }
ItemIDsDatabase[1522421] = { 7507038, 1507038, 1807038, MythicRaid = 2807038, 1707038 }
ItemIDsDatabase[1522422] = { 7522467, 1522467, 1822467, MythicRaid = 2822467, 1722467 }
ItemIDsDatabase[1522417] = { 7532429, 1532429, 1832429, MythicRaid = 2832429, 1732429 }
ItemIDsDatabase[1522420] = { 7532428, 1532428, 1832428, MythicRaid = 2832428, 1732428 }
ItemIDsDatabase[1522466] = { 7522429, 1522429, 1822429, MythicRaid = 2822429, 1722429 }
ItemIDsDatabase[1522467] = { 7522418, 1522418, 1822418, MythicRaid = 2822418, 1722418 }
ItemIDsDatabase[1522464] = { 7507037, 1507037, 1807037, MythicRaid = 2807037, 1707037 }
ItemIDsDatabase[1522471] = { 7532490, 1532490, 1832490, MythicRaid = 2832490, 1732490 }
ItemIDsDatabase[1522469] = { 7522490, 1522490, 1822490, MythicRaid = 2822490, 1722490 }
ItemIDsDatabase[1522470] = { 7522470, 1522470, 1822470, MythicRaid = 2822470, 1722470 }
ItemIDsDatabase[1522465] = { 7522465, 1522465, 1822465, MythicRaid = 2822465, 1722465 }
ItemIDsDatabase[1522468] = { 7522468, 1522468, 1822468, MythicRaid = 2822468, 1722468 }
ItemIDsDatabase[1523065] = { 7523065, 1523065, 1823065, MythicRaid = 2823065, 1723065 }
ItemIDsDatabase[1522514] = { 7522514, 1522514, 1822514, MythicRaid = 2822514, 1722514 }
ItemIDsDatabase[1522515] = { 7522515, 1522515, 1822515, MythicRaid = 2822515, 1722515 }
ItemIDsDatabase[1522512] = { 7522512, 1522512, 1822512, MythicRaid = 2822512, 1722512 }
ItemIDsDatabase[1522519] = { 7522519, 1522519, 1822519, MythicRaid = 2822519, 1722519 }
ItemIDsDatabase[1522517] = { 7522517, 1522517, 1822517, MythicRaid = 2822517, 1722517 }
ItemIDsDatabase[1522518] = { 7522518, 1522518, 1822518, MythicRaid = 2822518, 1722518 }
ItemIDsDatabase[1522513] = { 7522513, 1522513, 1822513, MythicRaid = 2822513, 1722513 }
ItemIDsDatabase[1522516] = { 7522516, 1522516, 1822516, MythicRaid = 2822516, 1722516 }
ItemIDsDatabase[1523061] = { 7523061, 1523061, 1823061, MythicRaid = 2823061, 1723061 }
ItemIDsDatabase[1522514] = { 7522514, 1522514, 1822514, MythicRaid = 2822514, 1722514 }
ItemIDsDatabase[1522428] = { 7522428, 1522428, 1822428, MythicRaid = 2822428, 1722428 }
ItemIDsDatabase[1522429] = { 7522429, 1522429, 1822429, MythicRaid = 2822429, 1722429 }
ItemIDsDatabase[1522425] = { 7522425, 1522425, 1822425, MythicRaid = 2822425, 1722425 }
ItemIDsDatabase[1522424] = { 7522424, 1522424, 1822424, MythicRaid = 2822424, 1722424 }
ItemIDsDatabase[1522426] = { 7522426, 1522426, 1822426, MythicRaid = 2822426, 1722426 }
ItemIDsDatabase[1522431] = { 7522431, 1522431, 1822431, MythicRaid = 2822431, 1722431 }
ItemIDsDatabase[1522427] = { 7522427, 1522427, 1822427, MythicRaid = 2822427, 1722427 }
ItemIDsDatabase[1522430] = { 7522430, 1522430, 1822430, MythicRaid = 2822430, 1722430 }
ItemIDsDatabase[1523066] = { 7523066, 1523066, 1823066, MythicRaid = 2823066, 1723066 }
ItemIDsDatabase[1532428] = { 7532428, 1532428, 1832428, MythicRaid = 2832428, 1732428 }
ItemIDsDatabase[1532429] = { 7532429, 1532429, 1832429, MythicRaid = 2832429, 1732429 }
ItemIDsDatabase[1532425] = { 7532425, 1532425, 1832425, MythicRaid = 2832425, 1732425 }
ItemIDsDatabase[1532424] = { 7532424, 1532424, 1832424, MythicRaid = 2832424, 1732424 }
ItemIDsDatabase[1532426] = { 7532426, 1532426, 1832426, MythicRaid = 2832426, 1732426 }
ItemIDsDatabase[1532431] = { 7532431, 1532431, 1832431, MythicRaid = 2832431, 1732431 }
ItemIDsDatabase[1532427] = { 7532427, 1532427, 1832427, MythicRaid = 2832427, 1732427 }
ItemIDsDatabase[1532430] = { 7532430, 1532430, 1832430, MythicRaid = 2832430, 1732430 }
ItemIDsDatabase[1533066] = { 7533066, 1533066, 1833066, MythicRaid = 2833066, 1733066 }
ItemIDsDatabase[1532488] = { 7532488, 1532488, 1832488, MythicRaid = 2832488, 1732488 }
ItemIDsDatabase[1532495] = { 7532495, 1532495, 1832495, MythicRaid = 2832495, 1732495 }
ItemIDsDatabase[1532493] = { 7532493, 1532493, 1832493, MythicRaid = 2832493, 1732493 }
ItemIDsDatabase[1532494] = { 7532494, 1532494, 1832494, MythicRaid = 2832494, 1732494 }
ItemIDsDatabase[1532489] = { 7532489, 1532489, 1832489, MythicRaid = 2832489, 1732489 }
ItemIDsDatabase[1532492] = { 7532492, 1532492, 1832492, MythicRaid = 2832492, 1732492 }
ItemIDsDatabase[1533064] = { 7533064, 1533064, 1833064, MythicRaid = 2833064, 1733064 }
ItemIDsDatabase[1507037] = { 7507037, 1507037, 1807037, MythicRaid = 2807037, 1707037 }
ItemIDsDatabase[1507038] = { 7507038, 1507038, 1807038, MythicRaid = 2807038, 1707038 }
ItemIDsDatabase[1507035] = { 7507035, 1507035, 1807035, MythicRaid = 2807035, 1707035 }
ItemIDsDatabase[1507042] = { 7507042, 1507042, 1807042, MythicRaid = 2807042, 1707042 }
ItemIDsDatabase[1507040] = { 7507040, 1507040, 1807040, MythicRaid = 2807040, 1707040 }
ItemIDsDatabase[1507041] = { 7507041, 1507041, 1807041, MythicRaid = 2807041, 1707041 }
ItemIDsDatabase[1507036] = { 7507036, 1507036, 1807036, MythicRaid = 2807036, 1707036 }
ItemIDsDatabase[1507039] = { 7507039, 1507039, 1807039, MythicRaid = 2807039, 1707039 }
ItemIDsDatabase[1507043] = { 7507043, 1507043, 1807043, MythicRaid = 2807043, 1707043 }
ItemIDsDatabase[1532490] = { 7532490, 1532490, 1832490, MythicRaid = 2832490, 1732490 }
ItemIDsDatabase[1532491] = { 7532491, 1532491, 1832491, MythicRaid = 2832491, 1732491 }
ItemIDsDatabase[1522488] = { 7522488, 1522488, 1822488, MythicRaid = 2822488, 1722488 }
ItemIDsDatabase[1522495] = { 7522495, 1522495, 1822495, MythicRaid = 2822495, 1722495 }
ItemIDsDatabase[1522493] = { 7522493, 1522493, 1822493, MythicRaid = 2822493, 1722493 }
ItemIDsDatabase[1522494] = { 7522494, 1522494, 1822494, MythicRaid = 2822494, 1722494 }
ItemIDsDatabase[1522489] = { 7522489, 1522489, 1822489, MythicRaid = 2822489, 1722489 }
ItemIDsDatabase[1522492] = { 7522492, 1522492, 1822492, MythicRaid = 2822492, 1722492 }
ItemIDsDatabase[1523064] = { 7523064, 1523064, 1823064, MythicRaid = 2823064, 1723064 }
ItemIDsDatabase[1522490] = { 7522490, 1522490, 1822490, MythicRaid = 2822490, 1722490 }
ItemIDsDatabase[1522491] = { 7522491, 1522491, 1822491, MythicRaid = 2822491, 1722491 }
ItemIDsDatabase[1522488] = { 7522488, 1522488, 1822488, MythicRaid = 2822488, 1722488 }
ItemIDsDatabase[1522495] = { 7522495, 1522495, 1822495, MythicRaid = 2822495, 1722495 }
ItemIDsDatabase[1522493] = { 7522493, 1522493, 1822493, MythicRaid = 2822493, 1722493 }
ItemIDsDatabase[1522494] = { 7522494, 1522494, 1822494, MythicRaid = 2822494, 1722494 }
ItemIDsDatabase[1522489] = { 7522489, 1522489, 1822489, MythicRaid = 2822489, 1722489 }
ItemIDsDatabase[1522492] = { 7522492, 1522492, 1822492, MythicRaid = 2822492, 1722492 }
ItemIDsDatabase[1523064] = { 7523064, 1523064, 1823064, MythicRaid = 2823064, 1723064 }
ItemIDsDatabase[1522418] = { 7522418, 1522418, 1822418, MythicRaid = 2822418, 1722418 }
ItemIDsDatabase[1522419] = { 7522419, 1522419, 1822419, MythicRaid = 2822419, 1722419 }
ItemIDsDatabase[1522416] = { 7522416, 1522416, 1822416, MythicRaid = 2822416, 1722416 }
ItemIDsDatabase[1522423] = { 7522423, 1522423, 1822423, MythicRaid = 2822423, 1722423 }
ItemIDsDatabase[1522421] = { 7522421, 1522421, 1822421, MythicRaid = 2822421, 1722421 }
ItemIDsDatabase[1522422] = { 7522422, 1522422, 1822422, MythicRaid = 2822422, 1722422 }
ItemIDsDatabase[1522417] = { 7522417, 1522417, 1822417, MythicRaid = 2822417, 1722417 }
ItemIDsDatabase[1522420] = { 7522420, 1522420, 1822420, MythicRaid = 2822420, 1722420 }
ItemIDsDatabase[1523059] = { 7523059, 1523059, 1823059, MythicRaid = 2823059, 1723059 }
--Tier 1 Tokens
ItemIDsDatabase[2522360] = { 2522360, 2522360, 2622360, 2722360, MythicRaid = 3722360 }
ItemIDsDatabase[2522361] = { 2522361, 2522361, 2622361, 2722361, MythicRaid = 3722361 }
ItemIDsDatabase[2522350] = { 2522350, 2522350, 2622350, 2722350, MythicRaid = 3722350 }
ItemIDsDatabase[2522362] = { 2522362, 2522362, 2622362, 2722362, MythicRaid = 3722362 }
ItemIDsDatabase[2522363] = { 2522363, 2522363, 2622363, 2722363, MythicRaid = 3722363 }
ItemIDsDatabase[2522364] = { 2522364, 2522364, 2622364, 2722364, MythicRaid = 3722364 }
ItemIDsDatabase[2522359] = { 2522359, 2522359, 2622359, 2722359, MythicRaid = 3722359 }
ItemIDsDatabase[2522365] = { 2522365, 2522365, 2622365, 2722365, MythicRaid = 3722365 }
--Tier 1 New Sets
ItemIDsDatabase[11533] = { 6011533, 11533, 311533, 211533 }
ItemIDsDatabase[11534] = { 6011534, 11534, 311534, 211534 }
ItemIDsDatabase[11535] = { 6011535, 11535, 311535, 211535 }
ItemIDsDatabase[11536] = { 6011536, 11536, 311536, 211536 }
ItemIDsDatabase[11537] = { 6011537, 11537, 311537, 211537 }
ItemIDsDatabase[11538] = { 6011538, 11538, 311538, 211538 }
ItemIDsDatabase[11531] = { 6011531, 11531, 311531, 211531 }
ItemIDsDatabase[11532] = { 6011532, 11532, 311532, 211532 }
ItemIDsDatabase[11789] = { 6011789, 11789, 311789, 211789 }
ItemIDsDatabase[11790] = { 6011790, 11790, 311790, 211790 }
ItemIDsDatabase[11791] = { 6011791, 11791, 311791, 211791 }
ItemIDsDatabase[11792] = { 6011792, 11792, 311792, 211792 }
ItemIDsDatabase[11793] = { 6011793, 11793, 311793, 211793 }
ItemIDsDatabase[11794] = { 6011794, 11794, 311794, 211794 }
ItemIDsDatabase[11795] = { 6011795, 11795, 311795, 211795 }
ItemIDsDatabase[11796] = { 6011796, 11796, 311796, 211796 }
ItemIDsDatabase[13432] = { 6013432, 13432, 313432, 213432 }
ItemIDsDatabase[13433] = { 6013433, 13433, 313433, 213433 }
ItemIDsDatabase[13434] = { 6013434, 13434, 313434, 213434 }
ItemIDsDatabase[13435] = { 6013435, 13435, 313435, 213435 }
ItemIDsDatabase[13436] = { 6013436, 13436, 313436, 213436 }
ItemIDsDatabase[13437] = { 6013437, 13437, 313437, 213437 }
ItemIDsDatabase[13438] = { 6013438, 13438, 313438, 213438 }
ItemIDsDatabase[13439] = { 6013439, 13439, 313439, 213439 }
--Tier 2 Tokens
ItemIDsDatabase[2522460] = { 2522460, 2522460, 2622460, 2722460, MythicRaid = 3722460 }
ItemIDsDatabase[2522461] = { 2522461, 2522461, 2622461, 2722461, MythicRaid = 3722461 }
ItemIDsDatabase[2522450] = { 2522450, 2522450, 2622450, 2722450, MythicRaid = 3722450 }
ItemIDsDatabase[2522462] = { 2522462, 2522462, 2622462, 2722462, MythicRaid = 3722462 }
ItemIDsDatabase[2522464] = { 2522464, 2522464, 2622464, 2722464, MythicRaid = 3722464 }
ItemIDsDatabase[2522463] = { 2522463, 2522463, 2622463, 2722463, MythicRaid = 3722463 }
ItemIDsDatabase[2522459] = { 2522459, 2522459, 2622459, 2722459, MythicRaid = 3722459 }
ItemIDsDatabase[2522465] = { 2522465, 2522465, 2622465, 2722465, MythicRaid = 3722465 }
--Tier 2.5 Accessories
ItemIDsDatabase[1506053] = { 1506053, 1506053, 1806053, 1706053, MythicRaid = 2806053 } --Ceremonial Qiraji Pendant
ItemIDsDatabase[1506052] = { 1506052, 1506052, 1806052, 1706052, MythicRaid = 2806052 } --Ceremonial Qiraji Ring
ItemIDsDatabase[1506051] = { 1506051, 1506051, 1806051, 1706051, MythicRaid = 2806051 } --Ceremonial Qiraji Drape
--AQR New Sets
--Heroic = Normal + 300'000
--Mythic = Normal + 1'300'000
--Ascended = Normal + 200'000
--Bloodforged = Normal + 6'000'000
--Heroic Bloodforged = Normal + 6'300'000
ItemIDsDatabase[1506017] = { 7506017, 1506017, 1806017, 1706017, MythicRaid = 2806017 } --Locket of Unending Life
ItemIDsDatabase[1506018] = { 7506018, 1506018, 1806018, 1706018, MythicRaid = 2806018 } --Choker of the Unseen Path
ItemIDsDatabase[1506019] = { 7506019, 1506019, 1806019, 1706019, MythicRaid = 2806019 } --Pendant of Roaring Earth
ItemIDsDatabase[1506020] = { 7506020, 1506020, 1806020, 1706020, MythicRaid = 2806020 } --Medallion of Eternal Justice
ItemIDsDatabase[1506021] = { 7506021, 1506021, 1806021, 1706021, MythicRaid = 2806021 } --Charm of Vaulted Secrets
ItemIDsDatabase[1506022] = { 7506022, 1506022, 1806022, 1706022, MythicRaid = 2806022 } --Lariat of Veiled Shadows
ItemIDsDatabase[1506023] = { 7506023, 1506023, 1806023, 1706023, MythicRaid = 2806023 } --Bayadere of Infinite Wisdom
ItemIDsDatabase[1506024] = { 7506024, 1506024, 1806024, 1706024, MythicRaid = 2806024 } --Necklace of the Gathering Storm
ItemIDsDatabase[1506025] = { 7506025, 1506025, 1806025, 1706025, MythicRaid = 2806025 } --Collar of Unyielding Strength
ItemIDsDatabase[1506026] = { 7506026, 1506026, 1806026, 1706026, MythicRaid = 2806026 } --Bayadere of Unspoken Names
ItemIDsDatabase[1506027] = { 7506027, 1506027, 1806027, 1706027, MythicRaid = 2806027 } --Choker of Endless Machinations
ItemIDsDatabase[1506028] = { 7506028, 1506028, 1806028, 1706028, MythicRaid = 2806028 } --Shroud of Endless Machinations
ItemIDsDatabase[1506029] = { 7506029, 1506029, 1806029, 1706029, MythicRaid = 2806029 } --Loop of Endless Machinations
ItemIDsDatabase[1506030] = { 7506030, 1506030, 1806030, 1706030, MythicRaid = 2806030 } --Signet of Roaring Earth
ItemIDsDatabase[1506031] = { 7506031, 1506031, 1806031, 1706031, MythicRaid = 2806031 } --Drape of Roaring Earth
ItemIDsDatabase[1506032] = { 7506032, 1506032, 1806032, 1706032, MythicRaid = 2806032 } --Signet of Ferocious Vigor
ItemIDsDatabase[1506033] = { 7506033, 1506033, 1806033, 1706033, MythicRaid = 2806033 } --Cape of Ferocious Vigor
ItemIDsDatabase[1506034] = { 7506034, 1506034, 1806034, 1706034, MythicRaid = 2806034 } --Choker of Ferocious Vigor
ItemIDsDatabase[1506035] = { 7506035, 1506035, 1806035, 1706035, MythicRaid = 2806035 } --Band of the Faithful Zealot
ItemIDsDatabase[1506036] = { 7506036, 1506036, 1806036, 1706036, MythicRaid = 2806036 } --Shroud of the Faithful Zealot
ItemIDsDatabase[1506037] = { 7506037, 1506037, 1806037, 1706037, MythicRaid = 2806037 } --Locket of the Faithful Zealot
ItemIDsDatabase[1506038] = { 7506038, 1506038, 1806038, 1706038, MythicRaid = 2806038 } --Band of Masterful Technique
ItemIDsDatabase[1506039] = { 7506039, 1506039, 1806039, 1706039, MythicRaid = 2806039 } --Drape of Masterful Technique
ItemIDsDatabase[1506040] = { 7506040, 1506040, 1806040, 1706040, MythicRaid = 2806040 } --Locket of Masterful Technique
ItemIDsDatabase[1506041] = { 7506041, 1506041, 1806041, 1706041, MythicRaid = 2806041 } --Ring of Martial Prowess
ItemIDsDatabase[1506042] = { 7506042, 1506042, 1806042, 1706042, MythicRaid = 2806042 } --Cloak of Martial Prowess
ItemIDsDatabase[1506043] = { 7506043, 1506043, 1806043, 1706043, MythicRaid = 2806043 } --Lariat of Martial Prowess
ItemIDsDatabase[1506044] = { 7506044, 1506044, 1806044, 1706044, MythicRaid = 2806044 } --Signet of Unrivaled Rage
ItemIDsDatabase[1506045] = { 7506045, 1506045, 1806045, 1706045, MythicRaid = 2806045 } --Cloak of Unrivaled Rage
ItemIDsDatabase[1506046] = { 7506046, 1506046, 1806046, 1706046, MythicRaid = 2806046 } --Collar of Unrivaled Rage
ItemIDsDatabase[1506047] = { 7506047, 1506047, 1806047, 1706047, MythicRaid = 2806047 } --Loop of Expansive Research
ItemIDsDatabase[1506048] = { 7506048, 1506048, 1806048, 1706048, MythicRaid = 2806048 } --Drape of Expansive Research
ItemIDsDatabase[1506049] = { 7506049, 1506049, 1806049, 1706049, MythicRaid = 2806049 } --Bayadere of Expansive Research
--Tier 2.5 New Sets
--Heroic = Normal + 300'000
--Mythic = Normal + 1'300'000
--Ascended = Normal + 200'000
--Bloodforged = Normal + 6'000'000
--Heroic Bloodforged = Normal + 6'300'000
ItemIDsDatabase[1507000] = { 7507000, 1507000, 1807000, 1707000, MythicRaid = 2807000 }-- Conqueror's Tusks
ItemIDsDatabase[1507001] = { 7507001, 1507001, 1807001, 1707001, MythicRaid = 2807001 }-- Conqueror's Shoulderplates
ItemIDsDatabase[1507002] = { 7507002, 1507002, 1807002, 1707002, MythicRaid = 2807002 }-- Conqueror's Carapace
ItemIDsDatabase[1507003] = { 7507003, 1507003, 1807003, 1707003, MythicRaid = 2807003 }-- Conqueror's Tassets
ItemIDsDatabase[1507004] = { 7507004, 1507004, 1807004, 1707004, MythicRaid = 2807004 }-- Conqueror's Advance
ItemIDsDatabase[1507015] = { 7507015, 1507015, 1807015, 1707015, MythicRaid = 2807015 }-- Stormcaller's Crown
ItemIDsDatabase[1507016] = { 7507016, 1507016, 1807016, 1707016, MythicRaid = 2807016 }-- Stormcaller's Stompers
ItemIDsDatabase[1507017] = { 7507017, 1507017, 1807017, 1707017, MythicRaid = 2807017 }-- Stormcaller's Chestguard
ItemIDsDatabase[1507018] = { 7507018, 1507018, 1807018, 1707018, MythicRaid = 2807018 }-- Stormcaller's Greaves
ItemIDsDatabase[1507019] = { 7507019, 1507019, 1807019, 1707019, MythicRaid = 2807019 }-- Stormcaller's Epaulets
ItemIDsDatabase[1507020] = { 7507020, 1507020, 1807020, 1707020, MythicRaid = 2807020 }-- Genesis Visor
ItemIDsDatabase[1507021] = { 7507021, 1507021, 1807021, 1707021, MythicRaid = 2807021 }-- Genesis Pauldrons
ItemIDsDatabase[1507022] = { 7507022, 1507022, 1807022, 1707022, MythicRaid = 2807022 }-- Genesis Footwraps
ItemIDsDatabase[1507023] = { 7507023, 1507023, 1807023, 1707023, MythicRaid = 2807023 }-- Genesis Legguards
ItemIDsDatabase[1507024] = { 7507024, 1507024, 1807024, 1707024, MythicRaid = 2807024 }-- Genesis Garb
ItemIDsDatabase[1507025] = { 7507025, 1507025, 1807025, 1707025, MythicRaid = 2807025 }-- Genesis Mask
ItemIDsDatabase[1507026] = { 7507026, 1507026, 1807026, 1707026, MythicRaid = 2807026 }-- Genesis Shoulderpads
ItemIDsDatabase[1507027] = { 7507027, 1507027, 1807027, 1707027, MythicRaid = 2807027 }-- Genesis Treads
ItemIDsDatabase[1507028] = { 7507028, 1507028, 1807028, 1707028, MythicRaid = 2807028 }-- Genesis Pants
ItemIDsDatabase[1507029] = { 7507029, 1507029, 1807029, 1707029, MythicRaid = 2807029 }-- Genesis Carapace
ItemIDsDatabase[1507030] = { 7507030, 1507030, 1807030, 1707030, MythicRaid = 2807030 }-- Avenger's Carapace
ItemIDsDatabase[1507031] = { 7507031, 1507031, 1807031, 1707031, MythicRaid = 2807031 }-- Avenger's Laurels
ItemIDsDatabase[1507032] = { 7507032, 1507032, 1807032, 1707032, MythicRaid = 2807032 }-- Avenger's Sabatons
ItemIDsDatabase[1507033] = { 7507033, 1507033, 1807033, 1707033, MythicRaid = 2807033 }-- Avenger's Legplates
ItemIDsDatabase[1507034] = { 7507034, 1507034, 1807034, 1707034, MythicRaid = 2807034 }-- Avenger's Shoulderguards
--Tier 3 Tokens
ItemIDsDatabase[22353] = { 22353, 22353, 102278, 222353 }
ItemIDsDatabase[22354] = { 22354, 22354, 102286, 222354 }
ItemIDsDatabase[22349] = { 22349, 22349, 102264, 222349 }
ItemIDsDatabase[22355] = { 22355, 22355, 102262, 222355 }
ItemIDsDatabase[22357] = { 22357, 22357, 102268, 222357 }
ItemIDsDatabase[22356] = { 22356, 22356, 102300, 222356 }
ItemIDsDatabase[22352] = { 22352, 22352, 102284, 222352 }
ItemIDsDatabase[22358] = { 22358, 22358, 102290, 222358 }
--Tier 4 Tokens
ItemIDsDatabase[29761] = { 29761, 29761, 329761, 229761 }
ItemIDsDatabase[29764] = { 29764, 29764, 329764, 229764 }
ItemIDsDatabase[29753] = { 29753, 29753, 329753, 229753 }
ItemIDsDatabase[29758] = { 29758, 29758, 329758, 229758 }
ItemIDsDatabase[29767] = { 29767, 29767, 329767, 229767 }
--Tier 5 Tokens
ItemIDsDatabase[30243] = { 30243, 30243, 330243, 230243 }
ItemIDsDatabase[30249] = { 30249, 30249, 330249, 230249 }
ItemIDsDatabase[30237] = { 30237, 30237, 330237, 230237 }
ItemIDsDatabase[30240] = { 30240, 30240, 330240, 230240 }
ItemIDsDatabase[30246] = { 30246, 30246, 330246, 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 }
--ZA New Items
ItemIDsDatabase[21824] = { 6021824, 21824, 321824, 221824 }
ItemIDsDatabase[24574] = { 6024574, 24574, 324574, 224574 }
ItemIDsDatabase[28354] = { 6028354, 28354, 328354, 228354 }
ItemIDsDatabase[33059] = { 6033059, 33059, 333059, 233059 }
ItemIDsDatabase[33983] = { 6033983, 33983, 333983, 233983 }
ItemIDsDatabase[39755] = { 6039755, 39755, 339755, 239755 }
ItemIDsDatabase[33533] = { 6033533, 33533, 333533, 233533 }
ItemIDsDatabase[33979] = { 6033979, 33979, 333979, 233979 }
ItemIDsDatabase[34071] = { 6034071, 34071, 334071, 234071 }
ItemIDsDatabase[38634] = { 6038634, 38634, 338634, 238634 }
ItemIDsDatabase[33500] = { 6033500, 33500, 333500, 233500 }
ItemIDsDatabase[33496] = { 6033496, 33496, 333496, 233496 }
ItemIDsDatabase[33498] = { 6033498, 33498, 333498, 233498 }
ItemIDsDatabase[33971] = { 6033971, 33971, 333971, 233971 }
ItemIDsDatabase[33495] = { 6033495, 33495, 333495, 233495 }
ItemIDsDatabase[33480] = { 6033480, 33480, 333480, 233480 }
ItemIDsDatabase[33591] = { 6033591, 33591, 333591, 233591 }
ItemIDsDatabase[33590] = { 6033590, 33590, 333590, 233590 }
ItemIDsDatabase[33481] = { 6033481, 33481, 333481, 233481 }
ItemIDsDatabase[33492] = { 6033492, 33492, 333492, 233492 }
ItemIDsDatabase[33499] = { 6033499, 33499, 333499, 233499 }
ItemIDsDatabase[33805] = { 6033805, 33805, 333805, 233805 }
ItemIDsDatabase[33491] = { 6033491, 33491, 333491, 233491 }
ItemIDsDatabase[33490] = { 6033490, 33490, 333490, 233490 }
ItemIDsDatabase[33489] = { 6033489, 33489, 333489, 233489 }
ItemIDsDatabase[33483] = { 6033483, 33483, 333483, 233483 }
ItemIDsDatabase[33493] = { 6033493, 33493, 333493, 233493 }
ItemIDsDatabase[33497] = { 6033497, 33497, 333497, 233497 }
ItemIDsDatabase[33494] = { 6033494, 33494, 333494, 233494 }
ItemIDsDatabase[24537] = { 6024537, 24537, 324537, 224537 }
--ZA Bears
ItemIDsDatabase[1333809] = { 1333809, 1333809, 1433809, 1233809 }
--intact vial of kael'thas sunstrider
ItemIDsDatabase[450001] = { 450001, 450001, 450003, 450005, MythicRaid = 1450003 }
ItemIDsDatabase[450000] = { 450000, 450000, 450002, 450004, MythicRaid = 1450002 }
ItemIDsDatabase[1001620] = { 1001620, 1001620, 1001619, 1001622, MythicRaid = 1001621 }
ItemIDsDatabase[98570] = { 98570, 98570, 98570, 98570, MythicRaid = 98570 }
ItemIDsDatabase[31039] = { 6031039, 31039, 331039, 231039 }
ItemIDsDatabase[31048] = { 6031048, 31048, 331048, 231048 }
ItemIDsDatabase[31042] = { 6031042, 31042, 331042, 231042 }
ItemIDsDatabase[34444] = { 6034444, 34444, 334444, 234444 }
ItemIDsDatabase[31034] = { 6031034, 31034, 331034, 231034 }
ItemIDsDatabase[34556] = { 6034556, 34556, 334556, 234556 }
ItemIDsDatabase[31044] = { 6031044, 31044, 331044, 231044 }
ItemIDsDatabase[34573] = { 6034573, 34573, 334573, 234573 }
ItemIDsDatabase[31037] = { 6031037, 31037, 331037, 231037 }
ItemIDsDatabase[31047] = { 6031047, 31047, 331047, 231047 }
ItemIDsDatabase[31041] = { 6031041, 31041, 331041, 231041 }
ItemIDsDatabase[34445] = { 6034445, 34445, 334445, 234445 }
ItemIDsDatabase[31032] = { 6031032, 31032, 331032, 231032 }
ItemIDsDatabase[34554] = { 6034554, 34554, 334554, 234554 }
ItemIDsDatabase[31045] = { 6031045, 31045, 331045, 231045 }
ItemIDsDatabase[34571] = { 6034571, 34571, 334571, 234571 }
ItemIDsDatabase[31040] = { 6031040, 31040, 331040, 231040 }
ItemIDsDatabase[31049] = { 6031049, 31049, 331049, 231049 }
ItemIDsDatabase[31043] = { 6031043, 31043, 331043, 231043 }
ItemIDsDatabase[34446] = { 6034446, 34446, 334446, 234446 }
ItemIDsDatabase[31035] = { 6031035, 31035, 331035, 231035 }
ItemIDsDatabase[34555] = { 6034555, 34555, 334555, 234555 }
ItemIDsDatabase[31046] = { 6031046, 31046, 331046, 231046 }
ItemIDsDatabase[34572] = { 6034572, 34572, 334572, 234572 }
ItemIDsDatabase[31003] = { 6031003, 31003, 331003, 231003 }
ItemIDsDatabase[31006] = { 6031006, 31006, 331006, 231006 }
ItemIDsDatabase[31004] = { 6031004, 31004, 331004, 231004 }
ItemIDsDatabase[34443] = { 6034443, 34443, 334443, 234443 }
ItemIDsDatabase[31001] = { 6031001, 31001, 331001, 231001 }
ItemIDsDatabase[34549] = { 6034549, 34549, 334549, 234549 }
ItemIDsDatabase[31005] = { 6031005, 31005, 331005, 231005 }
ItemIDsDatabase[34570] = { 6034570, 34570, 334570, 234570 }
ItemIDsDatabase[31056] = { 6031056, 31056, 331056, 231056 }
ItemIDsDatabase[31059] = { 6031059, 31059, 331059, 231059 }
ItemIDsDatabase[31057] = { 6031057, 31057, 331057, 231057 }
ItemIDsDatabase[34447] = { 6034447, 34447, 334447, 234447 }
ItemIDsDatabase[31055] = { 6031055, 31055, 331055, 231055 }
ItemIDsDatabase[34557] = { 6034557, 34557, 334557, 234557 }
ItemIDsDatabase[31058] = { 6031058, 31058, 331058, 231058 }
ItemIDsDatabase[34574] = { 6034574, 34574, 334574, 234574 }
ItemIDsDatabase[30987] = { 6030987, 30987, 330987, 230987 }
ItemIDsDatabase[30998] = { 6030998, 30998, 330998, 230998 }
ItemIDsDatabase[30991] = { 6030991, 30991, 330991, 230991 }
ItemIDsDatabase[34433] = { 6034433, 34433, 334433, 234433 }
ItemIDsDatabase[30985] = { 6030985, 30985, 330985, 230985 }
ItemIDsDatabase[34488] = { 6034488, 34488, 334488, 234488 }
ItemIDsDatabase[30995] = { 6030995, 30995, 330995, 230995 }
ItemIDsDatabase[34560] = { 6034560, 34560, 334560, 234560 }
ItemIDsDatabase[30989] = { 6030989, 30989, 330989, 230989 }
ItemIDsDatabase[30997] = { 6030997, 30997, 330997, 230997 }
ItemIDsDatabase[30990] = { 6030990, 30990, 330990, 230990 }
ItemIDsDatabase[34431] = { 6034431, 34431, 334431, 234431 }
ItemIDsDatabase[30982] = { 6030982, 30982, 330982, 230982 }
ItemIDsDatabase[34485] = { 6034485, 34485, 334485, 234485 }
ItemIDsDatabase[30993] = { 6030993, 30993, 330993, 230993 }
ItemIDsDatabase[34561] = { 6034561, 34561, 334561, 234561 }
ItemIDsDatabase[30988] = { 6030988, 30988, 330988, 230988 }
ItemIDsDatabase[30996] = { 6030996, 30996, 330996, 230996 }
ItemIDsDatabase[30992] = { 6030992, 30992, 330992, 230992 }
ItemIDsDatabase[34432] = { 6034432, 34432, 334432, 234432 }
ItemIDsDatabase[30983] = { 6030983, 30983, 330983, 230983 }
ItemIDsDatabase[34487] = { 6034487, 34487, 334487, 234487 }
ItemIDsDatabase[30994] = { 6030994, 30994, 330994, 230994 }
ItemIDsDatabase[34559] = { 6034559, 34559, 334559, 234559 }
ItemIDsDatabase[31063] = { 6031063, 31063, 331063, 231063 }
ItemIDsDatabase[31069] = { 6031069, 31069, 331069, 231069 }
ItemIDsDatabase[31066] = { 6031066, 31066, 331066, 231066 }
ItemIDsDatabase[34435] = { 6034435, 34435, 334435, 234435 }
ItemIDsDatabase[31060] = { 6031060, 31060, 331060, 231060 }
ItemIDsDatabase[34527] = { 6034527, 34527, 334527, 234527 }
ItemIDsDatabase[31068] = { 6031068, 31068, 331068, 231068 }
ItemIDsDatabase[34562] = { 6034562, 34562, 334562, 234562 }
ItemIDsDatabase[31064] = { 6031064, 31064, 331064, 231064 }
ItemIDsDatabase[31070] = { 6031070, 31070, 331070, 231070 }
ItemIDsDatabase[31065] = { 6031065, 31065, 331065, 231065 }
ItemIDsDatabase[34434] = { 6034434, 34434, 334434, 234434 }
ItemIDsDatabase[31061] = { 6031061, 31061, 331061, 231061 }
ItemIDsDatabase[34528] = { 6034528, 34528, 334528, 234528 }
ItemIDsDatabase[31067] = { 6031067, 31067, 331067, 231067 }
ItemIDsDatabase[34563] = { 6034563, 34563, 334563, 234563 }
ItemIDsDatabase[31027] = { 6031027, 31027, 331027, 231027 }
ItemIDsDatabase[31030] = { 6031030, 31030, 331030, 231030 }
ItemIDsDatabase[31028] = { 6031028, 31028, 331028, 231028 }
ItemIDsDatabase[34448] = { 6034448, 34448, 334448, 234448 }
ItemIDsDatabase[31026] = { 6031026, 31026, 331026, 231026 }
ItemIDsDatabase[34558] = { 6034558, 34558, 334558, 234558 }
ItemIDsDatabase[31029] = { 6031029, 31029, 331029, 231029 }
ItemIDsDatabase[34575] = { 6034575, 34575, 334575, 234575 }
ItemIDsDatabase[31015] = { 6031015, 31015, 331015, 231015 }
ItemIDsDatabase[31024] = { 6031024, 31024, 331024, 231024 }
ItemIDsDatabase[31018] = { 6031018, 31018, 331018, 231018 }
ItemIDsDatabase[34439] = { 6034439, 34439, 334439, 234439 }
ItemIDsDatabase[31011] = { 6031011, 31011, 331011, 231011 }
ItemIDsDatabase[34545] = { 6034545, 34545, 334545, 234545 }
ItemIDsDatabase[31021] = { 6031021, 31021, 331021, 231021 }
ItemIDsDatabase[34567] = { 6034567, 34567, 334567, 234567 }
ItemIDsDatabase[31012] = { 6031012, 31012, 331012, 231012 }
ItemIDsDatabase[31022] = { 6031022, 31022, 331022, 231022 }
ItemIDsDatabase[31016] = { 6031016, 31016, 331016, 231016 }
ItemIDsDatabase[34438] = { 6034438, 34438, 334438, 234438 }
ItemIDsDatabase[31007] = { 6031007, 31007, 331007, 231007 }
ItemIDsDatabase[34543] = { 6034543, 34543, 334543, 234543 }
ItemIDsDatabase[31019] = { 6031019, 31019, 331019, 231019 }
ItemIDsDatabase[34565] = { 6034565, 34565, 334565, 234565 }
ItemIDsDatabase[31014] = { 6031014, 31014, 331014, 231014 }
ItemIDsDatabase[31023] = { 6031023, 31023, 331023, 231023 }
ItemIDsDatabase[31017] = { 6031017, 31017, 331017, 231017 }
ItemIDsDatabase[34437] = { 6034437, 34437, 334437, 234437 }
ItemIDsDatabase[31008] = { 6031008, 31008, 331008, 231008 }
ItemIDsDatabase[34542] = { 6034542, 34542, 334542, 234542 }
ItemIDsDatabase[31020] = { 6031020, 31020, 331020, 231020 }
ItemIDsDatabase[34566] = { 6034566, 34566, 334566, 234566 }
ItemIDsDatabase[31051] = { 6031051, 31051, 331051, 231051 }
ItemIDsDatabase[31054] = { 6031054, 31054, 331054, 231054 }
ItemIDsDatabase[31052] = { 6031052, 31052, 331052, 231052 }
ItemIDsDatabase[34436] = { 6034436, 34436, 334436, 234436 }
ItemIDsDatabase[31050] = { 6031050, 31050, 331050, 231050 }
ItemIDsDatabase[34541] = { 6034541, 34541, 334541, 234541 }
ItemIDsDatabase[31053] = { 6031053, 31053, 331053, 231053 }
ItemIDsDatabase[34564] = { 6034564, 34564, 334564, 234564 }
ItemIDsDatabase[30974] = { 6030974, 30974, 330974, 230974 }
ItemIDsDatabase[30980] = { 6030980, 30980, 330980, 230980 }
ItemIDsDatabase[30976] = { 6030976, 30976, 330976, 230976 }
ItemIDsDatabase[34442] = { 6034442, 34442, 334442, 234442 }
ItemIDsDatabase[30970] = { 6030970, 30970, 330970, 230970 }
ItemIDsDatabase[34547] = { 6034547, 34547, 334547, 234547 }
ItemIDsDatabase[30978] = { 6030978, 30978, 330978, 230978 }
ItemIDsDatabase[34568] = { 6034568, 34568, 334568, 234568 }
ItemIDsDatabase[30972] = { 6030972, 30972, 330972, 230972 }
ItemIDsDatabase[30979] = { 6030979, 30979, 330979, 230979 }
ItemIDsDatabase[30975] = { 6030975, 30975, 330975, 230975 }
ItemIDsDatabase[34441] = { 6034441, 34441, 334441, 234441 }
ItemIDsDatabase[30969] = { 6030969, 30969, 330969, 230969 }
ItemIDsDatabase[34546] = { 6034546, 34546, 334546, 234546 }
ItemIDsDatabase[30977] = { 6030977, 30977, 330977, 230977 }
ItemIDsDatabase[34569] = { 6034569, 34569, 334569, 234569 }
ItemIDsDatabase[14986] = { 6014986, 14986, 314986, 214986 }
ItemIDsDatabase[15839] = { 6015839, 15839, 315839, 215839 }
ItemIDsDatabase[15899] = { 6015899, 15899, 315899, 215899 }
ItemIDsDatabase[15896] = { 6015896, 15896, 315896, 215896 }
ItemIDsDatabase[18764] = { 6018764, 18764, 318764, 218764 }
ItemIDsDatabase[15828] = { 6015828, 15828, 315828, 215828 }
ItemIDsDatabase[15838] = { 6015838, 15838, 315838, 215838 }
ItemIDsDatabase[15831] = { 6015831, 15831, 315831, 215831 }
ItemIDsDatabase[15834] = { 6015834, 15834, 315834, 215834 }
ItemIDsDatabase[15898] = { 6015898, 15898, 315898, 215898 }
ItemIDsDatabase[15830] = { 6015830, 15830, 315830, 215830 }
ItemIDsDatabase[15041] = { 6015041, 15041, 315041, 215041 }
ItemIDsDatabase[15836] = { 6015836, 15836, 315836, 215836 }
ItemIDsDatabase[15835] = { 6015835, 15835, 315835, 215835 }
ItemIDsDatabase[15840] = { 6015840, 15840, 315840, 215840 }
ItemIDsDatabase[30312] = { 30312, 30312, 282620, 30312, MythicRaid = 30312 } --Infinity Blade
ItemIDsDatabase[30311] = { 30311, 30311, 330311, 30311, MythicRaid = 30311 } --Warp Slicer
ItemIDsDatabase[30317] = { 30317, 30317, 282672, 30317, MythicRaid = 30317 } --Cosmic Infuser
ItemIDsDatabase[30316] = { 30316, 30316, 282659, 30316, MythicRaid = 30316 } --Devastation
ItemIDsDatabase[30313] = { 30313, 30313, 282633, 30313, MythicRaid = 30313 } --Staff of Disintegration
ItemIDsDatabase[30314] = { 30314, 30314, 282646, 30314, MythicRaid = 30314 } --Phaseshift Bulwark
ItemIDsDatabase[30318] = { 30318, 30318, 282685, 30318, MythicRaid = 30318 } --Netherstrand Longbow
ItemIDsDatabase[30319] = { 30319, 30319, 30319, 30319, MythicRaid = 30319 } --Nether Spike
ItemIDsDatabase[450009] = {450009, 450009, 450011, 450015, MythicRaid = 450013}; --The String of Time
ItemIDsDatabase[33642] = {6033642, 33642, 333642, 233642, MythicRaid = 1333642};
ItemIDsDatabase[33645] = {6033645, 33645, 333645, 233645, MythicRaid = 1333645};
ItemIDsDatabase[33643] = {6033643, 33643, 333643, 233643, MythicRaid = 1333643};
ItemIDsDatabase[33646] = {6033646, 33646, 333646, 233646, MythicRaid = 1333646};
ItemIDsDatabase[33641] = {6033641, 33641, 333641, 233641, MythicRaid = 1333641};
ItemIDsDatabase[33647] = {6033647, 33647, 333647, 233647, MythicRaid = 1333647};
ItemIDsDatabase[33644] = {6033644, 33644, 333644, 233644, MythicRaid = 1333644};
ItemIDsDatabase[33648] = {6033648, 33648, 333648, 233648, MythicRaid = 1333648};
for _, v in pairs(ItemIDsDatabase) do
if not v["MythicRaid"] then
v["MythicRaid"] = tonumber("13"..v[2])
end
end
+840
View File
@@ -0,0 +1,840 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local BabbleBoss = AtlasLoot_GetLocaleLibBabble("LibBabble-Boss-3.0")
local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
local HORDE = {"|cffff0000","Horde"}
local ALLIANCE = {"|cff1eff00", "Alliance"}
local NEUTRAL = {"|cffFF8400", "Neutral"}
local WHITE = "|cffFFFFFF"
AtlasLoot_CraftingData["VendorList"] = {
[66] = { AL["Tharynn Bouden"], BabbleZone["Elwynn Forest"], 41.9, 67.1, ALLIANCE},
[340] = { AL["Kendor Kabonka"], BabbleZone["Stormwind City"], 77.5, 53.5, ALLIANCE},
[734] = { AL["Corporal Bluth"], BabbleZone["Stranglethorn Vale"], 38.0, 3.0, ALLIANCE},
[777] = { AL["Amy Davenport"], BabbleZone["Redridge Mountains"], 29.1, 47.5, ALLIANCE},
[843] = { AL["Gina MacGregor"], BabbleZone["Westfall"], 57.6, 54.0, ALLIANCE},
[989] = { AL["Banalash"], BabbleZone["Swamp of Sorrows"], 44.7, 56.7, HORDE},
[1146] = { AL["Vharr"], BabbleZone["Stranglethorn Vale"], 32.3, 28.0, HORDE},
[1148] = { AL["Nerrist"], BabbleZone["Stranglethorn Vale"], 32.7, 29.2, HORDE},
[1149] = { AL["Uthok"], BabbleZone["Stranglethorn Vale"], 31.6, 28.0, HORDE},
[1250] = { AL["Drake Lindgren"], BabbleZone["Elwynn Forest"], 83.3, 66.7, ALLIANCE},
[1286] = { AL["Edna Mullby"], BabbleZone["Stormwind City"], 64.6, 71.5, ALLIANCE},
[1313] = { AL["Maria Lumere"], BabbleZone["Stormwind City"], 55.7, 85.5, ALLIANCE},
[1318] = { AL["Jessara Cordell"], BabbleZone["Stormwind City"], 53.0, 74.2, ALLIANCE},
[1347] = { AL["Alexandra Bolero"], BabbleZone["Stormwind City"], 53.3, 81.7, ALLIANCE},
[1448] = { AL["Neal Allen"], BabbleZone["Wetlands"], 10.7, 56.8, ALLIANCE},
[1454] = { AL["Jennabink Powerseam"], BabbleZone["Wetlands"], 8.1, 55.9, ALLIANCE},
[1465] = { AL["Drac Roughcut"], BabbleZone["Loch Modan"], 35.6, 49.0, ALLIANCE},
[1471] = { AL["Jannos Ironwill"], BabbleZone["Arathi Highlands"], 46.0, 47.7, ALLIANCE},
[1474] = { AL["Rann Flamespinner"], BabbleZone["Loch Modan"], 36.0, 46.0, ALLIANCE},
[1669] = { AL["Defias Profiteer"], BabbleZone["Westfall"], 43.5, 66.9, NEUTRAL},
[1684] = { AL["Khara Deepwater"], BabbleZone["Loch Modan"], 39.5, 39.3, ALLIANCE},
[1685] = { AL["Xandar Goodbeard"], BabbleZone["Loch Modan"], 82.5, 63.5, ALLIANCE},
[2118] = { AL["Abigail Shiel"], BabbleZone["Tirisfal Glades"], 61.0, 52.5, HORDE},
[2380] = { AL["Nandar Branson"], BabbleZone["Hillsbrad Foothills"], 50.9, 57.1, ALLIANCE},
[2381] = { AL["Micha Yance"], BabbleZone["Hillsbrad Foothills"], 49.0, 55.1, ALLIANCE},
[2383] = { AL["Lindea Rabonne"], BabbleZone["Hillsbrad Foothills"], 50.6, 61.0, ALLIANCE},
[2393] = { AL["Christoph Jeffcoat"], BabbleZone["Hillsbrad Foothills"], 62.4, 19.1, HORDE},
[2394] = { AL["Mallen Swain"], BabbleZone["Hillsbrad Foothills"], 62.0, 20.9, HORDE},
[2397] = { AL["Derak Nightfall"], BabbleZone["Hillsbrad Foothills"], 63.0, 18.5, HORDE},
[2480] = { AL["Bro'kin"], BabbleZone["Alterac Mountains"], 38.3, 38.8, NEUTRAL},
[2481] = { AL["Bliztik"], BabbleZone["Duskwood"], 18.0, 54.5, NEUTRAL},
[2482] = { AL["Zarena Cromwind"], BabbleZone["Stranglethorn Vale"], 28.4, 75.5, NEUTRAL},
[2483] = { AL["Jaquilina Dramet"], BabbleZone["Stranglethorn Vale"], 35.7, 10.7, NEUTRAL},
[2663] = { AL["Narkk"], BabbleZone["Stranglethorn Vale"], 28.2, 74.5, NEUTRAL},
[2664] = { AL["Kelsey Yance"], BabbleZone["Stranglethorn Vale"], 28.2, 74.4, NEUTRAL},
[2668] = { AL["Danielle Zipstitch"], BabbleZone["Duskwood"], 75.8, 45.5, ALLIANCE},
[2669] = { AL["Sheri Zipstitch"], BabbleZone["Duskwood"], 75.7, 45.5, ALLIANCE},
[2670] = { AL["Xizk Goodstitch"], BabbleZone["Stranglethorn Vale"], 28.7, 76.8, NEUTRAL},
[2672] = { AL["Cowardly Crosby"], BabbleZone["Stranglethorn Vale"], 27.0, 82.5, NEUTRAL},
[2679] = { AL["Wenna Silkbeard"], BabbleZone["Wetlands"], 25.7, 25.8, ALLIANCE},
[2682] = { AL["Fradd Swiftgear"], BabbleZone["Wetlands"], 26.4, 25.8, ALLIANCE},
[2683] = { AL["Namdo Bizzfizzle"], BabbleZone["Gnomeregan"], 0, 0, ALLIANCE},
[2684] = { AL["Rizz Loosebolt"], BabbleZone["Alterac Mountains"], 47.4, 35.3, NEUTRAL},
[2685] = { AL["Mazk Snipeshot"], BabbleZone["Stranglethorn Vale"], 28.5, 75.1, NEUTRAL},
[2687] = { AL["Gnaz Blunderflame"], BabbleZone["Stranglethorn Vale"], 51.0, 35.3, NEUTRAL},
[2688] = { AL["Ruppo Zipcoil"], BabbleZone["The Hinterlands"], 34.3, 37.9, NEUTRAL},
[2697] = { AL["Clyde Ranthal"], BabbleZone["Redridge Mountains"], 88.9, 70.9, ALLIANCE},
[2698] = { AL["George Candarte"], BabbleZone["Hillsbrad Foothills"], 92.0, 38.4, HORDE},
[2699] = { AL["Rikqiz"], BabbleZone["Stranglethorn Vale"], 28.5, 76.0, NEUTRAL},
[2803] = { AL["Malygen"], BabbleZone["Felwood"], 62.3, 25.6, ALLIANCE},
[2806] = { AL["Bale"], BabbleZone["Felwood"], 34.8, 53.1, HORDE},
[2810] = { AL["Hammon Karwn"], BabbleZone["Arathi Highlands"], 46.5, 47.3, ALLIANCE},
[2812] = { AL["Drovnar Strongbrew"], BabbleZone["Arathi Highlands"], 46.4, 47.1, ALLIANCE},
[2814] = { AL["Narj Deepslice"], BabbleZone["Arathi Highlands"], 45.6, 47.6, ALLIANCE},
[2816] = { AL["Androd Fadran"], BabbleZone["Arathi Highlands"], 45.0, 46.9, ALLIANCE},
[2819] = { AL["Tunkk"], BabbleZone["Arathi Highlands"], 74.8, 34.5, HORDE},
[2821] = { AL["Keena"], BabbleZone["Arathi Highlands"], 74.0, 32.7, HORDE},
[2838] = { AL["Crazk Sparks"], BabbleZone["Stranglethorn Vale"], 28.3, 76.7, NEUTRAL},
[2843] = { AL["Jutak"], BabbleZone["Stranglethorn Vale"], 27.5, 77.5, NEUTRAL},
[2846] = { AL["Blixrez Goodstitch"], BabbleZone["Stranglethorn Vale"], 28.2, 77.5, NEUTRAL},
[2848] = { AL["Glyx Brewright"], BabbleZone["Stranglethorn Vale"], 28.1, 78.0, NEUTRAL},
[3005] = { AL["Mahu"], BabbleZone["Thunder Bluff"], 43.8, 44.6, HORDE},
[3012] = { AL["Nata Dawnstrider"], BabbleZone["Thunder Bluff"], 46.5, 38.8, HORDE},
[3027] = { AL["Naal Mistrunner"], BabbleZone["Thunder Bluff"], 51.1, 52.2, HORDE},
[3029] = { AL["Sewa Mistrunner"], BabbleZone["Thunder Bluff"], 56.0, 47.1, HORDE},
[3081] = { AL["Wunna Darkmane"], BabbleZone["Mulgore"], 46.1, 58.2, HORDE},
[3085] = { AL["Gloria Femmel"], BabbleZone["Redridge Mountains"], 26.7, 43.5, ALLIANCE},
[3134] = { AL["Kzixx"], BabbleZone["Duskwood"], 81.9, 19.9, NEUTRAL},
[3178] = { AL["Stuart Fleming"], BabbleZone["Wetlands"], 8.1, 58.4, ALLIANCE},
[3333] = { AL["Shankys"], BabbleZone["Orgrimmar"], 69.1, 31.4, HORDE},
[3335] = { AL["Hagrus"], BabbleZone["Orgrimmar"], 46.0, 45.9, HORDE},
[3346] = { AL["Kithas"], BabbleZone["Orgrimmar"], 53.7, 38.0, HORDE},
[3348] = { AL["Kor'geld"], BabbleZone["Orgrimmar"], 56.1, 35.8, HORDE},
[3364] = { AL["Borya"], BabbleZone["Orgrimmar"], 63.0, 51.2, HORDE},
[3366] = { AL["Tamar"], BabbleZone["Orgrimmar"], 63.0, 45.3, HORDE},
[3367] = { AL["Felika"], BabbleZone["Orgrimmar"], 60.5, 50.7, HORDE},
[3392] = { AL["Prospector Khazgorm"], BabbleZone["The Barrens"], 47.4, 84.8, ALLIANCE},
[3400] = { AL["Xen'to"], BabbleZone["Orgrimmar"], 57.5, 53.2, HORDE},
[3413] = { AL["Sovik"], BabbleZone["Orgrimmar"], 75.6, 25.2, HORDE},
[3482] = { AL["Tari'qa"], BabbleZone["The Barrens"], 51.7, 30.1, HORDE},
[3485] = { AL["Wrahk"], BabbleZone["The Barrens"], 52.2, 31.7, HORDE},
[3489] = { AL["Zargh"], BabbleZone["The Barrens"], 52.6, 29.9, HORDE},
[3490] = { AL["Hula'mahi"], BabbleZone["The Barrens"], 51.4, 30.2, HORDE},
[3495] = { AL["Gagsprocket"], BabbleZone["The Barrens"], 62.7, 36.3, NEUTRAL},
[3497] = { AL["Kilxx"], BabbleZone["The Barrens"], 62.8, 38.2, NEUTRAL},
[3499] = { AL["Ranik"], BabbleZone["The Barrens"], 61.9, 38.7, NEUTRAL},
[3522] = { AL["Constance Brisboise"], BabbleZone["Tirisfal Glades"], 52.6, 55.7, HORDE},
[3537] = { AL["Zixil"], BabbleZone["Hillsbrad Foothills"], 53.5, 38.3, NEUTRAL},
[3550] = { AL["Martine Tramblay"], BabbleZone["Tirisfal Glades"], 65.8, 59.7, HORDE},
[3556] = { AL["Andrew Hilbert"], BabbleZone["Silverpine Forest"], 43.2, 40.7, HORDE},
[3683] = { AL["Kiknikle"], BabbleZone["The Barrens"], 41.8, 38.7, NEUTRAL},
[3881] = { AL["Grimtak"], BabbleZone["Durotar"], 51.2, 42.6, HORDE},
[3954] = { AL["Dalria"], BabbleZone["Ashenvale"], 35.1, 52.1, ALLIANCE},
[3956] = { AL["Harklan Moongrove"], BabbleZone["Ashenvale"], 50.8, 67.0, ALLIANCE},
[3958] = { AL["Lardan"], BabbleZone["Ashenvale"], 34.8, 49.8, ALLIANCE},
[3960] = { AL["Ulthaan"], BabbleZone["Ashenvale"], 50.0, 66.7, ALLIANCE},
[4083] = { AL["Jeeda"], BabbleZone["Stonetalon Mountains"], 47.6, 61.7, HORDE},
[4086] = { AL["Veenix"], BabbleZone["Stonetalon Mountains"], 58.3, 51.7, NEUTRAL},
[4168] = { AL["Elynna"], BabbleZone["Darnassus"], 64.4, 21.6, ALLIANCE},
[4186] = { AL["Mavralyn"], BabbleZone["Darkshore"], 37.0, 41.2, ALLIANCE},
[4189] = { AL["Valdaron"], BabbleZone["Darkshore"], 38.1, 40.6, ALLIANCE},
[4200] = { AL["Laird"], BabbleZone["Darkshore"], 36.8, 44.3, ALLIANCE},
[4223] = { AL["Fyldan"], BabbleZone["Darnassus"], 48.6, 21.4, ALLIANCE},
[4225] = { AL["Saenorion"], BabbleZone["Darnassus"], 63.8, 22.1, ALLIANCE},
[4226] = { AL["Ulthir"], BabbleZone["Darnassus"], 56.0, 24.6, ALLIANCE},
[4228] = { AL["Vaean"], BabbleZone["Darnassus"], 58.5, 14.4, ALLIANCE},
[4229] = { AL["Mythrin'dir"], BabbleZone["Darnassus"], 60.0, 19.1, ALLIANCE},
[4265] = { AL["Nyoma"], BabbleZone["Teldrassil"], 57.2, 61.2, ALLIANCE},
[4305] = { AL["Kriggon Talsone"], BabbleZone["Westfall"], 36.2, 90.1, ALLIANCE},
[4307] = { AL["Heldan Galesong"], BabbleZone["Darkshore"], 37.0, 56.3, ALLIANCE},
[4553] = { AL["Ronald Burch"], BabbleZone["Undercity"], 62.4, 43.4, HORDE},
[4561] = { AL["Daniel Bartlett"], BabbleZone["Undercity"], 64.2, 37.7, HORDE},
[4574] = { AL["Lizbeth Cromwell"], BabbleZone["Undercity"], 81.2, 31.0, HORDE},
[4577] = { AL["Millie Gregorian"], BabbleZone["Undercity"], 70.8, 29.6, HORDE},
[4589] = { AL["Joseph Moore"], BabbleZone["Undercity"], 70.2, 57.8, HORDE},
[4610] = { AL["Algernon"], BabbleZone["Undercity"], 51.9, 74.4, HORDE},
[4617] = { AL["Thaddeus Webb"], BabbleZone["Undercity"], 62.0, 60.7, HORDE},
[4775] = { AL["Felicia Doan"], BabbleZone["Undercity"], 64.3, 50.2, HORDE},
[4782] = { AL["Truk Wildbeard"], BabbleZone["The Hinterlands"], 14.4, 42.5, ALLIANCE},
[4877] = { AL["Jandia"], BabbleZone["Thousand Needles"], 46.1, 51.5, HORDE},
[4878] = { AL["Montarr"], BabbleZone["Thousand Needles"], 45.2, 50.7, HORDE},
[4879] = { AL["Ogg'marr"], BabbleZone["Dustwallow Marsh"], 36.7, 31.0, HORDE},
[4897] = { AL["Helenia Olden"], BabbleZone["Dustwallow Marsh"], 66.4, 51.5, ALLIANCE},
[5128] = { AL["Bombus Finespindle"], BabbleZone["Ironforge"], 39.6, 34.1, ALLIANCE},
[5158] = { AL["Tilli Thistlefuzz"], BabbleZone["Ironforge"], 60.7, 44.2, ALLIANCE},
[5160] = { AL["Emrul Riknussun"], BabbleZone["Ironforge"], 59.9, 37.7, ALLIANCE},
[5162] = { AL["Tansy Puddlefizz"], BabbleZone["Ironforge"], 48.0, 6.3, ALLIANCE},
[5163] = { AL["Burbik Gearspanner"], BabbleZone["Ironforge"], 46.5, 27.1, ALLIANCE},
[5175] = { AL["Gearcutter Cogspinner"], BabbleZone["Ironforge"], 68.0, 43.1, ALLIANCE},
[5178] = { AL["Soolie Berryfizz"], BabbleZone["Ironforge"], 66.6, 54.5, ALLIANCE},
[5411] = { AL["Krinkle Goodsteel"], BabbleZone["Tanaris"], 51.5, 28.8, NEUTRAL},
[5483] = { AL["Erika Tate"], BabbleZone["Stormwind City"], 78.5, 53.0, ALLIANCE},
[5494] = { AL["Catherine Leland"], BabbleZone["Stormwind City"], 55.1, 69.5, ALLIANCE},
[5512] = { AL["Kaita Deepforge"], BabbleZone["Stormwind City"], 63.5, 37.6, ALLIANCE},
[5594] = { AL["Alchemist Pestlezugg"], BabbleZone["Tanaris"], 50.9, 27.0, NEUTRAL},
[5748] = { AL["Killian Sanatha"], BabbleZone["Silverpine Forest"], 33.0, 17.8, HORDE},
[5757] = { AL["Lilly"], BabbleZone["Silverpine Forest"], 43.1, 50.8, HORDE},
[5758] = { AL["Leo Sarn"], BabbleZone["Silverpine Forest"], 53.9, 82.3, HORDE},
[5783] = { AL["Kalldan Felmoon"], BabbleZone["The Barrens"], 46.2, 36.5, NEUTRAL},
[5940] = { AL["Harn Longcast"], BabbleZone["Mulgore"], 47.5, 55.1, HORDE},
[5942] = { AL["Zansoa"], BabbleZone["Durotar"], 56.1, 73.4, HORDE},
[5944] = { AL["Yonada"], BabbleZone["The Barrens"], 45.0, 59.3, HORDE},
[6568] = { AL["Vizzklick"], BabbleZone["Tanaris"], 51.0, 27.4, NEUTRAL},
[6567] = { AL["Ghok'kah"], BabbleZone["Dustwallow Marsh"], 35.2, 30.8, HORDE},
[6574] = { AL["Jun'ha"], BabbleZone["Arathi Highlands"], 72.7, 36.5, HORDE},
[6576] = { AL["Brienna Starglow"], BabbleZone["Feralas"], 89.0, 45.9, ALLIANCE},
[6730] = { AL["Jinky Twizzlefixxit"], BabbleZone["Thousand Needles"], 77.7, 77.8, NEUTRAL},
[6731] = { AL["Harlown Darkweave"], BabbleZone["Ashenvale"], 18.2, 60.0, ALLIANCE},
[6777] = { AL["Zan Shivsproket"], BabbleZone["Alterac Mountains"], 86.0, 80.1, NEUTRAL},
[6779] = { AL["Smudge Thunderwood"], BabbleZone["Alterac Mountains"], 86.1, 79.7, NEUTRAL},
[7733] = { AL["Innkeeper Fizzgrimble"], BabbleZone["Tanaris"], 52.5, 27.9, NEUTRAL},
[7852] = { AL["Pratt McGrubben"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[7854] = { AL["Jangdor Swiftstrider"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[7940] = { AL["Darnall"], BabbleZone["Moonglade"], 51.6, 33.3, NEUTRAL},
[7947] = { AL["Vivianna"], BabbleZone["Feralas"], 31.3, 43.5, ALLIANCE},
[8125] = { AL["Dirge Quikcleave"], BabbleZone["Tanaris"], 52.6, 28.1, NEUTRAL},
[8131] = { AL["Blizrik Buckshot"], BabbleZone["Tanaris"], 50.8, 27.6, NEUTRAL},
[8137] = { AL["Gikkix"], BabbleZone["Tanaris"], 66.6, 22.1, NEUTRAL},
[8139] = { AL["Jabbey"], BabbleZone["Tanaris"], 67.0, 22.0, NEUTRAL},
[8145] = { AL["Sheendra Tallgrass"], BabbleZone["Feralas"], 74.5, 42.8, HORDE},
[8150] = { AL["Janet Hommers"], BabbleZone["Desolace"], 66.2, 6.7, ALLIANCE},
[8157] = { AL["Logannas"], BabbleZone["Feralas"], 32.7, 44.0, ALLIANCE},
[8158] = { AL["Bronk"], BabbleZone["Feralas"], 76.1, 43.3, HORDE},
[8160] = { AL["Nioma"], BabbleZone["The Hinterlands"], 13.4, 43.3, ALLIANCE},
[8161] = { AL["Harggan"], BabbleZone["The Hinterlands"], 13.4, 44.0, ALLIANCE},
[8176] = { AL["Gharash"], BabbleZone["Swamp of Sorrows"], 45.5, 51.6, HORDE},
[8177] = { AL["Rartar"], BabbleZone["Swamp of Sorrows"], 45.4, 57.0, HORDE},
[8178] = { AL["Nina Lightbrew"], BabbleZone["Blasted Lands"], 66.9, 18.3, ALLIANCE},
[8307] = { AL["Tarban Hearthgrain"], BabbleZone["The Barrens"], 55.1, 32.1, HORDE},
[8363] = { AL["Shadi Mistrunner"], BabbleZone["Thunder Bluff"], 40.4, 63.6, HORDE},
[8508] = { AL["Gretta Ganter"], BabbleZone["Dun Morogh"], 31.5, 44.7, ALLIANCE},
[8678] = { AL["Jubie Gadgetspring"], BabbleZone["Azshara"], 45.3, 90.9, NEUTRAL},
[8679] = { AL["Knaz Blunderflame"], BabbleZone["Stranglethorn Vale"], 51.0, 35.3, NEUTRAL},
[8681] = { AL["Outfitter Eric"], BabbleZone["Ironforge"], 43.2, 29.2, ALLIANCE},
[8878] = { AL["Muuran"], BabbleZone["Desolace"], 55.6, 56.5, HORDE},
[9179] = { AL["Jazzrik"], BabbleZone["Badlands"], 42.5, 52.6, HORDE},
[9499] = { BabbleBoss["Plugger Spazzring"], BabbleZone["Blackrock Depths"], 0, 0, NEUTRAL},
[9544] = { AL["Yuka Screwspigot"], BabbleZone["Burning Steppes"], 66.0, 22.0, NEUTRAL},
[9636] = { AL["Kireena"], BabbleZone["Desolace"], 51.0, 53.5, HORDE},
[10118] = { AL["Nessa Shadowsong"], BabbleZone["Teldrassil"], 56.3, 92.4, ALLIANCE},
[10856] = { AL["Argent Quartermaster Hasana"], BabbleZone["Tirisfal Glades"], 83.2, 68.1, NEUTRAL},
[10857] = { AL["Argent Quartermaster Lightspark"], BabbleZone["Western Plaguelands"], 42.8, 83.8, NEUTRAL},
[11185] = { AL["Xizzer Fizzbolt"], BabbleZone["Winterspring"], 60.8, 38.6, NEUTRAL},
[11187] = { AL["Himmik"], BabbleZone["Winterspring"], 61.3, 39.1, NEUTRAL},
[11189] = { AL["Qia"], BabbleZone["Winterspring"], 61.2, 37.2, NEUTRAL},
[11278] = { AL["Magnus Frostwake"], BabbleZone["Western Plaguelands"], 68.1, 77.6, NEUTRAL},
[11536] = { AL["Quartermaster Miranda Breechlock"], BabbleZone["Eastern Plaguelands"], 75.8, 54.1, NEUTRAL},
[11557] = { AL["Meilosh"], BabbleZone["Felwood"], 65.7, 2.9, HORDE},
[11874] = { AL["Masat T'andr"], BabbleZone["Swamp of Sorrows"], 26.3, 31.6, NEUTRAL},
[12022] = { AL["Lorelae Wintersong"], BabbleZone["Moonglade"], 48.3, 40.1, NEUTRAL},
[12033] = { AL["Wulan"], BabbleZone["Desolace"], 26.2, 69.7, HORDE},
[12043] = { AL["Kulwia"], BabbleZone["Stonetalon Mountains"], 45.4, 59.4, HORDE},
[12245] = { AL["Vendor-Tron 1000"], BabbleZone["Desolace"], 60.3, 38.1, NEUTRAL},
[12246] = { AL["Super-Seller 680"], BabbleZone["Desolace"], 40.5, 79.3, NEUTRAL},
[12941] = { AL["Jase Farlane"], BabbleZone["Eastern Plaguelands"], 74.8, 51.8, NEUTRAL},
[12942] = { AL["Leonard Porter"], BabbleZone["Western Plaguelands"], 43.0, 84.3, ALLIANCE},
[12943] = { AL["Werg Thickblade"], BabbleZone["Tirisfal Glades"], 83.2, 69.7, HORDE},
[12944] = { AL["Lokhtos Darkbargainer"], BabbleZone["Blackrock Depths"], 0, 0, NEUTRAL},
[12956] = { AL["Zannok Hidepiercer"], BabbleZone["Silithus"], 81.9, 17.8, NEUTRAL},
[12957] = { AL["Blimo Gadgetspring"], BabbleZone["Azshara"], 45.3, 90.9, NEUTRAL},
[12958] = { AL["Gigget Zipcoil"], BabbleZone["The Hinterlands"], 34.5, 38.5, NEUTRAL},
[12959] = { AL["Nergal"], BabbleZone["Un'Goro Crater"], 43.3, 7.7, NEUTRAL},
[12962] = { AL["Wik'Tar"], BabbleZone["Ashenvale"], 11.8, 34.1, HORDE},
[13420] = { AL["Penney Copperpinch"], BabbleZone["Orgrimmar"], 53.5, 66.1, NEUTRAL},
[13429] = { AL["Nardstrum Copperpinch"], BabbleZone["Undercity"], 67.5, 38.7, HORDE},
[13432] = { AL["Seersa Copperpinch"], BabbleZone["Thunder Bluff"], 42.0, 55.1, HORDE},
[13433] = { AL["Wulmort Jinglepocket"], BabbleZone["Ironforge"], 33.0, 67.6, NEUTRAL},
[13435] = { AL["Khole Jinglepocket"], BabbleZone["Stormwind City"], 62.2, 70.6, ALLIANCE},
[14371] = { AL["Shen'dralar Provisioner"], BabbleZone["Dire Maul"], 0, 0, NEUTRAL},
[14637] = { AL["Zorbin Fandazzle"], BabbleZone["Feralas"], 44.8, 43.4, NEUTRAL},
[14738] = { AL["Otho Moji'ko"], BabbleZone["The Hinterlands"], 79.3, 79.1, HORDE},
[14921] = { AL["Rin'wosho the Trader"], BabbleZone["Stranglethorn Vale"], 15.1, 16.0, NEUTRAL},
[15165] = { AL["Haughty Modiste"], BabbleZone["Tanaris"], 66.5, 22.3, NEUTRAL},
[15176] = { AL["Vargus"], BabbleZone["Silithus"], 51.2, 38.8, NEUTRAL},
[15179] = { AL["Mishta"], BabbleZone["Silithus"], 49.9, 36.5, NEUTRAL},
[15293] = { AL["Aendel Windspear"], BabbleZone["Silithus"], 62.6, 49.8, NEUTRAL},
[15419] = { AL["Kania"], BabbleZone["Silithus"], 52.0, 39.6, NEUTRAL},
[15471] = { BabbleBoss["Lieutenant General Andorov"], BabbleZone["Ruins of Ahn'Qiraj"], 0, 0, NEUTRAL},
[15909] = { AL["Fariel Starsong"], BabbleZone["Moonglade"], 54.0, 35.4, NEUTRAL},
[16224] = { AL["Rathis Tomber"], BabbleZone["Ghostlands"], 47.2, 28.7, HORDE},
[16253] = { AL["Master Chef Mouldier"], BabbleZone["Ghostlands"], 48.3, 30.9, HORDE},
[16262] = { AL["Landraelanis"], BabbleZone["Eversong Woods"], 49.0, 47.0, HORDE},
[16365] = { AL["Master Craftsman Omarion"], BabbleZone["Naxxramas"].." (40},", 0, 0, NEUTRAL},
[16388] = { AL["Koren"], BabbleZone["Karazhan"], 0, 0, NEUTRAL},
[16583] = { AL["Rohok"], BabbleZone["Hellfire Peninsula"], 53.2, 38.2, HORDE},
[16585] = { AL["Cookie One-Eye"], BabbleZone["Hellfire Peninsula"], 54.6, 41.1, HORDE},
[16588] = { AL["Apothecary Antonivich"], BabbleZone["Hellfire Peninsula"], 52.4, 36.5, HORDE},
[16624] = { AL["Gelanthis"], BabbleZone["Silvermoon City"], 90.8, 73.6, HORDE},
[16635] = { AL["Lyna"], BabbleZone["Silvermoon City"], 69.1, 24.4, HORDE},
[16638] = { AL["Deynna"], BabbleZone["Silvermoon City"], 55.8, 51.0, HORDE},
[16641] = { AL["Melaris"], BabbleZone["Silvermoon City"], 66.0, 20.6, HORDE},
[16657] = { AL["Feera"], BabbleZone["The Exodar"], 54.0, 90.5, ALLIANCE},
[16670] = { AL["Eriden"], BabbleZone["Silvermoon City"], 79.5, 36.2, HORDE},
[16677] = { AL["Quelis"], BabbleZone["Silvermoon City"], 69.3, 70.7, HORDE},
[16689] = { AL["Zaralda"], BabbleZone["Silvermoon City"], 84.0, 78.8, HORDE},
[16705] = { AL["Altaa"], BabbleZone["The Exodar"], 27.5, 62.1, ALLIANCE},
[16713] = { AL["Arras"], BabbleZone["The Exodar"], 60.0, 89.5, ALLIANCE},
[16718] = { AL["Phea"], BabbleZone["The Exodar"], 54.7, 26.5, ALLIANCE},
[16722] = { AL["Egomis"], BabbleZone["The Exodar"], 39.1, 39.4, ALLIANCE},
[16748] = { AL["Haferet"], BabbleZone["The Exodar"], 66.0, 74.6, ALLIANCE},
[16767] = { AL["Neii"], BabbleZone["The Exodar"], 64.5, 68.5, ALLIANCE},
[16782] = { AL["Yatheon"], BabbleZone["Silvermoon City"], 76.0, 37.7, HORDE},
[16826] = { AL["Sid Limbardi"], BabbleZone["Hellfire Peninsula"], 54.3, 63.6, ALLIANCE},
[17246] = { AL["\"Cookie\" McWeaksauce"], BabbleZone["Azuremyst Isle"], 46.7, 70.5, ALLIANCE},
[17512] = { AL["Arred"], BabbleZone["The Exodar"], 45.0, 26.0, ALLIANCE},
[17518] = { AL["Ythyar"], BabbleZone["Karazhan"], 0, 0, NEUTRAL},
[17585] = { AL["Quartermaster Urgronn"], BabbleZone["Hellfire Peninsula"], 54.9, 37.9, HORDE},
[17657] = { AL["Logistics Officer Ulrike"], BabbleZone["Hellfire Peninsula"], 56.7, 62.6, ALLIANCE},
[17904] = { AL["Fedryen Swiftspear"], BabbleZone["Zangarmarsh"], 79.3, 63.8, NEUTRAL},
[18005] = { AL["Haalrun"], BabbleZone["Zangarmarsh"], 67.8, 48.0, ALLIANCE},
[18011] = { AL["Zurai"], BabbleZone["Zangarmarsh"], 85.2, 54.7, HORDE},
[18015] = { AL["Gambarinka"], BabbleZone["Zangarmarsh"], 31.7, 49.3, HORDE},
[18017] = { AL["Seer Janidi"], BabbleZone["Zangarmarsh"], 32.4, 51.9, HORDE},
[18255] = { AL["Apprentice Darius"], BabbleZone["Deadwind Pass"], 47.0, 75.3, NEUTRAL},
[18382] = { AL["Mycah"], BabbleZone["Zangarmarsh"], 17.9, 51.2, NEUTRAL},
[18427] = { AL["Fazu"], BabbleZone["Bloodmyst Isle"], 53.5, 56.5, ALLIANCE},
[18484] = { AL["Wind Trader Lathrai"], BabbleZone["Shattrath City"], 72.3, 31.0, NEUTRAL},
[18664] = { AL["Aged Dalaran Wizard"], BabbleZone["Old Hillsbrad Foothills"], 0, 0, NEUTRAL},
[18672] = { AL["Thomas Yance"], BabbleZone["Old Hillsbrad Foothills"], 0, 0, NEUTRAL},
[18753] = { AL["Felannia"], BabbleZone["Hellfire Peninsula"], 52.3, 36.1, HORDE},
[18773] = { AL["Johan Barnes"], BabbleZone["Hellfire Peninsula"], 53.7, 66.1, ALLIANCE},
[18775] = { AL["Lebowski"], BabbleZone["Hellfire Peninsula"], 55.7, 65.5, ALLIANCE},
[18802] = { AL["Alchemist Gribble"], BabbleZone["Hellfire Peninsula"], 53.8, 65.8, ALLIANCE},
[18821] = { AL["Quartermaster Jaffrey Noreliqe"], BabbleZone["Nagrand"], 41.2, 44.3, HORDE},
[18822] = { AL["Quartermaster Davian Vaclav"], BabbleZone["Nagrand"], 41.2, 44.3, ALLIANCE},
[18911] = { AL["Juno Dufrain"], BabbleZone["Zangarmarsh"], 78.0, 66.1, NEUTRAL},
[18951] = { AL["Erilia"], BabbleZone["Eversong Woods"], 55.5, 54.0, HORDE},
[18957] = { AL["Innkeeper Grilka"], BabbleZone["Terokkar Forest"], 48.8, 45.1, HORDE},
[18960] = { AL["Rungor"], BabbleZone["Terokkar Forest"], 48.8, 46.1, HORDE},
[19004] = { AL["Vodesiin"], BabbleZone["Hellfire Peninsula"], 24.4, 38.8, ALLIANCE},
[19015] = { AL["Mathar G'ochar"], BabbleZone["Nagrand"], 57.0, 39.6, HORDE},
[19017] = { AL["Borto"], BabbleZone["Nagrand"], 53.3, 71.9, ALLIANCE},
[19038] = { AL["Supply Officer Mills"], BabbleZone["Terokkar Forest"], 55.7, 53.1, ALLIANCE},
[19042] = { AL["Leeli Longhaggle"], BabbleZone["Terokkar Forest"], 57.7, 53.4, ALLIANCE},
[19065] = { AL["Inessera"], BabbleZone["Shattrath City"], 34.5, 20.2, NEUTRAL},
[19074] = { AL["Skreah"], BabbleZone["Shattrath City"], 46.0, 20.1, NEUTRAL},
[19195] = { AL["Jim Saltit"], BabbleZone["Shattrath City"], 63.6, 68.6, NEUTRAL},
[19196] = { AL["Cro Threadstrong"], BabbleZone["Shattrath City"], 66.1, 68.7, NEUTRAL},
[19213] = { AL["Eiin"], BabbleZone["Shattrath City"], 66.2, 68.7, NEUTRAL},
[19234] = { AL["Yurial Soulwater"], BabbleZone["Shattrath City"], 43.5, 96.9, NEUTRAL},
[19296] = { AL["Innkeeper Biribi"], BabbleZone["Terokkar Forest"], 56.7, 53.3, ALLIANCE},
[19321] = { AL["Quartermaster Endarin"], BabbleZone["Shattrath City"], 47.9, 26.1, NEUTRAL},
[19331] = { AL["Quartermaster Enuril"], BabbleZone["Shattrath City"], 60.5, 64.2, NEUTRAL},
[19342] = { AL["Krek Cragcrush"], BabbleZone["Shadowmoon Valley"], 28.9, 30.8, HORDE},
[19351] = { AL["Daggle Ironshaper"], BabbleZone["Shadowmoon Valley"], 36.8, 54.4, ALLIANCE},
[19373] = { AL["Mari Stonehand"], BabbleZone["Shadowmoon Valley"], 36.8, 55.1, ALLIANCE},
[19383] = { AL["Captured Gnome"], BabbleZone["Zangarmarsh"], 32.5, 48.1, HORDE},
[19521] = { AL["Arrond"], BabbleZone["Shadowmoon Valley"], 55.9, 58.2, NEUTRAL},
[19537] = { AL["Dealer Malij"], BabbleZone["Netherstorm"], 44.2, 34.0, NEUTRAL},
[19540] = { AL["Asarnan"], BabbleZone["Netherstorm"], 44.2, 33.7, NEUTRAL},
[19661] = { AL["Viggz Shinesparked"], BabbleZone["Shattrath City"], 64.9, 69.1, NEUTRAL},
[19662] = { AL["Aaron Hollman"], BabbleZone["Shattrath City"], 63.1, 71.1, NEUTRAL},
[19663] = { AL["Madame Ruby"], BabbleZone["Shattrath City"], 63.1, 69.3, NEUTRAL},
[19694] = { AL["Loolruna"], BabbleZone["Zangarmarsh"], 68.5, 50.1, ALLIANCE},
[19722] = { AL["Muheru the Weaver"], BabbleZone["Zangarmarsh"], 40.6, 28.2, ALLIANCE},
[19836] = { AL["Mixie Farshot"], BabbleZone["Hellfire Peninsula"], 61.1, 81.5, HORDE},
[19837] = { AL["Daga Ramba"], BabbleZone["Blade's Edge Mountains"], 51.1, 57.7, HORDE},
[20028] = { AL["Doba"], BabbleZone["Zangarmarsh"], 42.3, 27.9, ALLIANCE},
[20096] = { AL["Uriku"], BabbleZone["Nagrand"], 56.2, 73.3, ALLIANCE},
[20097] = { AL["Nula the Butcher"], BabbleZone["Nagrand"], 58.0, 35.7, HORDE},
[20240] = { AL["Trader Narasu"], BabbleZone["Nagrand"], 54.6, 75.2, ALLIANCE},
[20241] = { AL["Provisioner Nasela"], BabbleZone["Nagrand"], 53.5, 36.9, HORDE},
[20242] = { AL["Karaaz"], BabbleZone["Netherstorm"], 43.6, 34.3, NEUTRAL},
[20916] = { AL["Xerintha Ravenoak"], BabbleZone["Blade's Edge Mountains"], 62.5, 40.3, NEUTRAL},
[21113] = { AL["Sassa Weldwell"], BabbleZone["Blade's Edge Mountains"], 61.3, 68.9, ALLIANCE},
[21432] = { AL["Almaador"], BabbleZone["Shattrath City"], 51.0, 41.9, NEUTRAL},
[21474] = { AL["Coreiel"], BabbleZone["Nagrand"], 42.8, 42.6, HORDE},
[21485] = { AL["Aldraan"], BabbleZone["Nagrand"], 42.9, 42.5, ALLIANCE},
[21643] = { AL["Alurmi"], BabbleZone["Tanaris"], 63.6, 57.6, NEUTRAL},
[21655] = { AL["Nakodu"], BabbleZone["Shattrath City"], 62.1, 69.0, NEUTRAL},
[22208] = { AL["Nasmara Moonsong"], BabbleZone["Shattrath City"], 66.0, 69.0, NEUTRAL},
[22212] = { AL["Andrion Darkspinner"], BabbleZone["Shattrath City"], 66.0, 67.8, NEUTRAL},
[22213] = { AL["Gidge Spellweaver"], BabbleZone["Shattrath City"], 66.0, 67.9, NEUTRAL},
[23007] = { AL["Paulsta'ats"], BabbleZone["Nagrand"], 30.6, 57.0, NEUTRAL},
[23010] = { AL["Wolgren Jinglepocket"], BabbleZone["The Exodar"], 54.5, 47.2, ALLIANCE},
[23012] = { AL["Hotoppik Copperpinch"], BabbleZone["Silvermoon City"], 63.5, 79.1, HORDE},
[23064] = { AL["Eebee Jinglepocket"], BabbleZone["Shattrath City"], 51.0, 31.3, NEUTRAL},
[23159] = { AL["Okuno"], BabbleZone["Black Temple"], 0, 0, NEUTRAL},
[23437] = { AL["Indormi"], BabbleZone["Hyjal Summit"], 0, 0, NEUTRAL},
[25032] = { AL["Eldara Dawnrunner"], BabbleZone["Isle of Quel'Danas"], 47.1, 30.0, NEUTRAL},
[25950] = { AL["Shaani"], BabbleZone["Isle of Quel'Danas"], 51.5, 32.6, NEUTRAL},
[26081] = { AL["High Admiral \"Shelly\" Jorrik"], BabbleZone["Dun Morogh"], 10.9, 76.1, NEUTRAL},
[26569] = { AL["Alys Vol'tyr"], BabbleZone["Dragonblight"], 36.3, 46.5, HORDE},
[26868] = { AL["Provisioner Lorkran"], BabbleZone["Grizzly Hills"], 22.6, 66.1, HORDE},
[27030] = { AL["Bradley Towns"], BabbleZone["Dragonblight"], 76.9, 62.2, HORDE},
[27054] = { AL["Modoru"], BabbleZone["Dragonblight"], 28.9, 55.9, ALLIANCE},
[27147] = { AL["Librarian Erickson"], BabbleZone["Borean Tundra"], 46.7, 32.5, NEUTRAL},
[27666] = { AL["Ontuvo"], BabbleZone["Shattrath City"], 48.7, 41.3, NEUTRAL},
[28701] = { AL["Timothy Jones"], BabbleZone["Dalaran"], 40.5, 35.2, NEUTRAL},
[28714] = { AL["Ildine Sorrowspear"], BabbleZone["Dalaran"], 39.1, 41.5, NEUTRAL},
[28721] = { AL["Tiffany Cartier"], BabbleZone["Dalaran"], 40.5, 34.4, NEUTRAL},
[28722] = { AL["Bryan Landers"], BabbleZone["Dalaran"], 39.1, 26.5, NEUTRAL},
[28723] = { AL["Larana Drome"], BabbleZone["Dalaran"], 42.3, 37.5, NEUTRAL},
[29510] = { AL["Linna Bruder"], BabbleZone["Dalaran"], 34.6, 34.5, NEUTRAL},
[29511] = { AL["Lalla Brightweave"], BabbleZone["Dalaran"], 36.5, 33.5, NEUTRAL},
[29512] = { AL["Ainderu Summerleaf"], BabbleZone["Dalaran"], 36.5, 34.0, NEUTRAL},
[30431] = { AL["Veteran Crusader Aliocha Segard"], BabbleZone["Icecrown"], 87.6, 75.6, NEUTRAL},
[30489] = { AL["Morgan Day"], BabbleZone["Wintergrasp"], 49.0, 17.1, ALLIANCE},
[30734] = { AL["Jezebel Bican"], BabbleZone["Hellfire Peninsula"], 53.9, 65.5, ALLIANCE},
[30735] = { AL["Kul Inkspiller"], BabbleZone["Hellfire Peninsula"], 52.5, 36.0, HORDE},
[31031] = { AL["Misensi"], BabbleZone["Dalaran"], 70.1, 38.5, HORDE},
[31032] = { AL["Derek Odds"], BabbleZone["Dalaran"], 41.5, 64.8, ALLIANCE},
[31910] = { AL["Geen"], BabbleZone["Sholazar Basin"], 54.5, 56.2, NEUTRAL},
[31911] = { AL["Tanak"], BabbleZone["Sholazar Basin"], 55.1, 69.1, NEUTRAL},
[31916] = { AL["Tanaika"], BabbleZone["Howling Fjord"], 25.5, 58.7, NEUTRAL},
[32287] = { AL["Archmage Alvareaux"], BabbleZone["Dalaran"], 25.5, 47.4, NEUTRAL},
[32294] = { AL["Knight Dameron"], BabbleZone["Wintergrasp"], 51.7, 17.5, ALLIANCE},
[32296] = { AL["Stone Guard Mukar"], BabbleZone["Wintergrasp"], 51.7, 17.5, HORDE},
[32514] = { AL["Vanessa Sellers"], BabbleZone["Dalaran"], 38.7, 40.8, NEUTRAL},
[32515] = { AL["Braeg Stoutbeard"], BabbleZone["Dalaran"], 37.6, 29.5, NEUTRAL},
[32533] = { AL["Cielstrasza"], BabbleZone["Dragonblight"], 59.9, 53.1, NEUTRAL},
[32538] = { AL["Duchess Mynx"], BabbleZone["Icecrown"], 43.5, 20.6, NEUTRAL},
[32540] = { AL["Lillehoff"], BabbleZone["The Storm Peaks"], 66.2, 61.4, NEUTRAL},
[32564] = { AL["Logistics Officer Silverstone"], BabbleZone["Borean Tundra"], 57.7, 66.5, ALLIANCE},
[32565] = { AL["Gara Skullcrush"], BabbleZone["Borean Tundra"], 41.4, 53.6, HORDE},
[32763] = { AL["Sairuk"], BabbleZone["Dragonblight"], 48.5, 75.7, NEUTRAL},
[32773] = { AL["Logistics Officer Brighton"], BabbleZone["Howling Fjord"], 59.7, 63.9, ALLIANCE},
[32774] = { AL["Sebastian Crane"], BabbleZone["Howling Fjord"], 79.6, 30.7, HORDE},
[33595] = { AL["Mera Mistrunner"], BabbleZone["Icecrown"], 72.4, 20.9, NEUTRAL},
[33602] = { AL["Anuur"], BabbleZone["Icecrown"], 71.4, 20.8, NEUTRAL},
[33637] = { AL["Kirembri Silvermane"], BabbleZone["Shattrath City"], 58.1, 75.0, NEUTRAL},
[33680] = { AL["Nemiha"], BabbleZone["Shattrath City"], 36.1, 47.7, NEUTRAL},
[34039] = { AL["Lady Palanseer"], BabbleZone["Orgrimmar"], 37.0, 64.9, HORDE},
[34079] = { AL["Captain O'Neal"], BabbleZone["Stormwind City"], 75.7, 66.6, ALLIANCE},
[37687] = { AL["Alchemist Finklestein"], BabbleZone["Icecrown Citadel"], 0, 0, NEUTRAL},
[40160] = { AL["Frozo the Renowned"], BabbleZone["Dalaran"], 41.0, 28.5, NEUTRAL},
--Shady Dealers
[970000] = { AL["Shady Dealer"], BabbleZone["Wetlands"], 70.8, 79.4, NEUTRAL },
[970001] = { AL["Shady Dealer"], BabbleZone["Un'Goro Crater"], 71.7, 75.8, NEUTRAL },
[970002] = { AL["Shady Dealer"], BabbleZone["Azshara"], 42.6, 80.3, NEUTRAL },
[970003] = { AL["Shady Dealer"], BabbleZone["Tanaris"], 66.8, 22.2, NEUTRAL },
[970004] = { AL["Shady Dealer"], BabbleZone["Burning Steppes"], 95.1, 31.7, NEUTRAL },
[970005] = { AL["Shady Dealer"], BabbleZone["Stranglethorn Vale"], 35.7, 10.6, NEUTRAL },
[970006] = { AL["Shady Dealer"], BabbleZone["Searing Gorge"], 37.8, 49.5, NEUTRAL },
[970007] = { AL["Shady Dealer"], BabbleZone["Alterac Mountains"], 20.2, 85.6, NEUTRAL },
[970008] = { AL["Shady Dealer"], BabbleZone["Blasted Lands"], 50.7, 14.6, NEUTRAL },
[970009] = { AL["Shady Dealer"], BabbleZone["Deadwind Pass"], 50.0, 74.8, NEUTRAL },
[970010] = { AL["Shady Dealer"], BabbleZone["Thousand Needles"], 80.2, 77.1, NEUTRAL },
[970011] = { AL["Shady Dealer"], BabbleZone["Felwood"], 64.8, 8.0, NEUTRAL },
[970012] = { AL["Shady Dealer"], BabbleZone["Eastern Plaguelands"], 43.5, 18.5, NEUTRAL },
[970013] = { AL["Shady Dealer"], BabbleZone["The Barrens"], 49.4, 50.6, NEUTRAL },
[970014] = { AL["Shady Dealer"], BabbleZone["Duskwood"], 81.8, 19.8, NEUTRAL },
[970015] = { AL["Shady Dealer"], BabbleZone["Western Plaguelands"], 45.0, 15.8, NEUTRAL },
[970016] = { AL["Shady Dealer"], BabbleZone["Hillsbrad Foothills"], 77.2, 46.3, NEUTRAL },
[970017] = { AL["Shady Dealer"], BabbleZone["Moonglade"], 54.4, 37.0, NEUTRAL },
[970018] = { AL["Shady Dealer"], BabbleZone["Un'Goro Crater"], 45.2, 5.7, NEUTRAL },
[970019] = { AL["Shady Dealer"], BabbleZone["Azshara"], 45.3, 90.9, NEUTRAL },
[970020] = { AL["Shady Dealer"], BabbleZone["Azshara"], 50.1, 63.8, NEUTRAL },
[970021] = { AL["Shady Dealer"], BabbleZone["Western Plaguelands"], 69.3, 49.8, NEUTRAL },
[970022] = { AL["Shady Dealer"], BabbleZone["Western Plaguelands"], 39.5, 66.7, NEUTRAL },
[970023] = { AL["Shady Dealer"], BabbleZone["Winterspring"], 49.9, 9.9, NEUTRAL },
[970024] = { AL["Shady Dealer"], BabbleZone["Winterspring"], 65.9, 65.2, NEUTRAL },
[970025] = { AL["Shady Dealer"], BabbleZone["Winterspring"], 61.9, 37.6, NEUTRAL },
[970026] = { AL["Shady Dealer"], BabbleZone["Silithus"], 49.5, 37.6, NEUTRAL },
[970027] = { AL["Shady Dealer"], BabbleZone["Silithus"], 41.5, 88.8, NEUTRAL },
[970028] = { AL["Shady Dealer"], BabbleZone["Eastern Plaguelands"], 75.2, 51.4, NEUTRAL },
[970029] = { AL["Shady Dealer"], BabbleZone["The Barrens"], 62.6, 38.3, NEUTRAL },
[970030] = { AL["Shady Dealer"], BabbleZone["Dustwallow Marsh"], 41.8, 74.1, NEUTRAL },
[970031] = { AL["Shady Dealer"], BabbleZone["Felwood"], 51.0, 81.4, NEUTRAL },
[970032] = { AL["Shady Dealer"], BabbleZone["Stranglethorn Vale"], 26.8, 76.4, NEUTRAL },
[970033] = { AL["Shady Dealer"], BabbleZone["Feralas"], 32.0, 77.6, NEUTRAL },
[970034] = { AL["Shady Dealer"], BabbleZone["Dustwallow Marsh"], 77.9, 17.2, NEUTRAL },
[970035] = { AL["Shady Dealer"], BabbleZone["Desolace"], 61.2, 62.1, NEUTRAL },
[970036] = { AL["Shady Dealer"], BabbleZone["Stonetalon Mountains"], 59.0, 62.7, NEUTRAL },
[970037] = { AL["Shady Dealer"], BabbleZone["The Hinterlands"], 26.9, 48.8, NEUTRAL },
[970038] = { AL["Shady Dealer"], BabbleZone["Ashenvale"], 69.8, 70.4, NEUTRAL },
[970039] = { AL["Shady Dealer"], BabbleZone["Badlands"], 62.0, 54.2, NEUTRAL },
[970040] = { AL["Shady Dealer"], BabbleZone["Arathi Highlands"], 32.1, 82.9, NEUTRAL },
[970041] = { AL["Shady Dealer"], BabbleZone["Arathi Highlands"], 33.8, 27.5, NEUTRAL },
[970042] = { AL["Shady Dealer"], BabbleZone["Swamp of Sorrows"], 13.7, 68.6, NEUTRAL },
};
AtlasLoot_CraftingData["MobList"] = {
-- Alterac Mountains
[2242] = { AL["Syndicate Spy"], BabbleZone["Alterac Mountains"], 63.0, 40.6},
[2246] = { AL["Syndicate Assassin"], BabbleZone["Alterac Mountains"], 40.6, 16.8},-- Arathi Highlands
[2556] = { AL["Witherbark Headhunter"], BabbleZone["Arathi Highlands"], 70.5, 70.4},
[2557] = { AL["Witherbark Shadow Hunter"], BabbleZone["Arathi Highlands"], 70.3, 78.9},
[2558] = { AL["Witherbark Berserker"], BabbleZone["Arathi Highlands"], 24.2, 66.2},
[2606] = { AL["Nimar the Slayer"], BabbleZone["Arathi Highlands"], 66.6, 64.0},
[2636] = { AL["Blackwater Deckhand"], BabbleZone["Arathi Highlands"], 33.0, 81.3},-- Ashenvale
[3834] = { AL["Crazed Ancient"], BabbleZone["Ashenvale"], 59.4, 43.0},
[3919] = { AL["Withered Ancient"], BabbleZone["Ashenvale"], 58.5, 36.1},-- Azshara
[6138] = { AL["Arkkoran Oracle"], BabbleZone["Azshara"], 78.0, 41.8},
[6144] = { AL["Son of Arkkoroc"], BabbleZone["Azshara"], 65.5, 54.4},
[6146] = { AL["Cliff Breaker"], BabbleZone["Azshara"], 66.0, 13.2},
[6201] = { AL["Legashi Rogue"], BabbleZone["Azshara"], 50.1, 19.6},-- Blade's Edge Mountains
[16952] = { AL["Anger Guard"], BabbleZone["Blade's Edge Mountains"], 72.0, 40.5},
[19952] = { AL["Bloodmaul Geomancer"], BabbleZone["Blade's Edge Mountains"], 45.0, 68.5},
[19960] = { AL["Doomforge Engineer"], BabbleZone["Blade's Edge Mountains"], 75.1, 39.8},
[19973] = { AL["Abyssal Flamebringer"], BabbleZone["Blade's Edge Mountains"], 30.0, 81.0},
[19984] = { AL["Vekh'nir Dreadhawk"], BabbleZone["Blade's Edge Mountains"], 78.0, 74.3},
[22242] = { AL["Bash'ir Spell-Thief"], BabbleZone["Blade's Edge Mountains"], 51.0, 16.5},
[23385] = { AL["Simon Unit"], BabbleZone["Blade's Edge Mountains"], 33.5, 51.5},
[23386] = { AL["Gan'arg Analyzer"], BabbleZone["Blade's Edge Mountains"], 33.0, 52.5},-- Blasted Lands
[5981] = { AL["Portal Seeker"], BabbleZone["Blasted Lands"], 51.1, 34.0},
[6005] = { AL["Shadowsworn Thug"], BabbleZone["Blasted Lands"], 63.8, 32.0},-- Burning Steppes
[7025] = { AL["Blackrock Soldier"], BabbleZone["Burning Steppes"], 44.0, 52.8},
[7027] = { AL["Blackrock Slayer"], BabbleZone["Burning Steppes"], 44.4, 50.7},
[7029] = { AL["Blackrock Battlemaster"], BabbleZone["Burning Steppes"], 40.5, 35.8},
[7035] = { AL["Firegut Brute"], BabbleZone["Burning Steppes"], 82.5, 48.1},
[7037] = { AL["Thaurissan Firewalker"], BabbleZone["Burning Steppes"], 61.1, 42.0},
[10119] = { AL["Volchan"], BabbleZone["Burning Steppes"], 73.0, 49.3},-- Darkshore
[2337] = { AL["Dark Strand Voidcaller"], BabbleZone["Darkshore"], 56.2, 26.0},-- Deadwind Pass
[7372] = { AL["Deadwind Warlock"], BabbleZone["Deadwind Pass"], 59.8, 74.4},-- Dragonblight
[26343] = { AL["Indu'le Fisherman"], BabbleZone["Dragonblight"], 40.2, 65.5},
[26336] = { AL["Indu'le Mystic"], BabbleZone["Dragonblight"], 40.2, 65.5},
[26344] = { AL["Indu'le Warrior"], BabbleZone["Dragonblight"], 40.2, 65.5},
[27333] = { AL["Onslaught Mason"], BabbleZone["Dragonblight"], 85.8, 36.0},-- Duskwood
[910 ] = { AL["Defias Enchanter"], BabbleZone["Duskwood"], 49.5, 75.6},-- Dustwallow Marsh
[4364] = { AL["Strashaz Warrior"], BabbleZone["Dustwallow Marsh"], 76.5, 22.3},
[4366] = { AL["Strashaz Serpent Guard"], BabbleZone["Dustwallow Marsh"], 74.1, 18.2},
[4368] = { AL["Strashaz Myrmidon"], BabbleZone["Dustwallow Marsh"], 75.1, 14.2},
[4834] = { AL["Theramore Infiltrator"], BabbleZone["Dustwallow Marsh"], 44.0, 27.3},
[16072] = { AL["Tidelord Rrurgaz"], BabbleZone["Dustwallow Marsh"], 76.7, 19.5},-- Eastern Plaguelands
[8546] = { AL["Dark Adept"], BabbleZone["Eastern Plaguelands"], 65.8, 37.9},
[8550] = { AL["Shadowmage"], BabbleZone["Eastern Plaguelands"], 78.5, 35.3},
[8561] = { AL["Mossflayer Shadowhunter"], BabbleZone["Eastern Plaguelands"], 60.9, 21.5},
[9451] = { AL["Scarlet Archmage"], BabbleZone["Eastern Plaguelands"], 81.5, 75.4},-- Felwood
[7106] = { AL["Jadefire Rogue"], BabbleZone["Felwood"], 37.5, 66.5},
[7158] = { AL["Deadwood Shaman"], BabbleZone["Felwood"], 62.5, 10.3},
[7441] = { AL["Winterfall Totemic"], BabbleZone["Felwood"], 41.5, 42.7},-- Grizzly Hills
[26270] = { AL["Iron Rune-Shaper"], BabbleZone["Grizzly Hills"], 67.8, 16.3},
[26679] = { AL["Silverbrook Trapper"], BabbleZone["Grizzly Hills"], 27.3, 33.9},
[26708] = { AL["Silverbrook Villager"], BabbleZone["Grizzly Hills"], 27.3, 33.9},
[27546] = { AL["Silverbrook Hunter"], BabbleZone["Grizzly Hills"], 37.5, 68.0},
[27676] = { AL["Silverbrook Defender"], BabbleZone["Grizzly Hills"], 24.6, 33.3},-- Hillsbrad Foothills
[2434] = { AL["Shadowy Assassin"], BabbleZone["Hillsbrad Foothills"], 52.7, 52.8},
[2264] = { AL["Hillsbrad Tailor"], BabbleZone["Hillsbrad Foothills"], 36.6, 44.4},
[2374] = { AL["Torn Fin Muckdweller"], BabbleZone["Hillsbrad Foothills"], 31.5, 72.1},
[2375] = { AL["Torn Fin Coastrunner"], BabbleZone["Hillsbrad Foothills"], 25.1, 70.5},
[2376] = { AL["Torn Fin Oracle"], BabbleZone["Hillsbrad Foothills"], 42.0, 68.0},
[2377] = { AL["Torn Fin Tidehunter"], BabbleZone["Hillsbrad Foothills"], 39.0, 69.0},
[14276] = { AL["Scargil"], BabbleZone["Hillsbrad Foothills"], 26.6, 71.2},
-- Icecrown
[30921] = { AL["Skeletal Runesmith"], BabbleZone["Icecrown"], 60.0, 73.1},
[31702] = { AL["Frostbrood Spawn"], BabbleZone["Icecrown"], 75.3, 43.4},
[32289] = { AL["Damned Apothecary"], BabbleZone["Icecrown"], 49.8, 32.7},
[32290] = { AL["Cult Alchemist"], BabbleZone["Icecrown"], 49.5, 33.1},
[32297] = { AL["Cult Researcher"], BabbleZone["Icecrown"], 50.7, 30.9},
[32349] = { AL["Cultist Shard Watcher"], BabbleZone["Icecrown"], 48.1, 67.9},-- Nagrand
[17136] = { AL["Boulderfist Warrior"], BabbleZone["Nagrand"], 51.0, 57.0},
[17150] = { AL["Vir'aani Arcanist"], BabbleZone["Nagrand"], 40.5, 69.6},
[18203] = { AL["Murkblood Raider"], BabbleZone["Nagrand"], 31.5, 43.5},-- Netherstorm
[18853] = { AL["Sunfury Bloodwarder"], BabbleZone["Netherstorm"], 27.0, 72.0},
[18866] = { AL["Mageslayer"], BabbleZone["Netherstorm"], 55.5, 85.5},
[18870] = { AL["Voidshrieker"], BabbleZone["Netherstorm"], 60.0, 39.0},
[18872] = { AL["Disembodied Vindicator"], BabbleZone["Netherstorm"], 36.0, 55.5},
[18873] = { AL["Disembodied Protector"], BabbleZone["Netherstorm"], 31.8, 52.7},
[19707] = { AL["Sunfury Archer"], BabbleZone["Netherstorm"], 55.5, 81.0},
[22822] = { AL["Ethereum Nullifier"], BabbleZone["Netherstorm"], 66.0, 49.5},
[20134] = { AL["Sunfury Arcanist"], BabbleZone["Netherstorm"], 51.0, 82.5},
[20135] = { AL["Sunfury Arch Mage"], BabbleZone["Netherstorm"], 46.5, 81.0},
[20136] = { AL["Sunfury Researcher"], BabbleZone["Netherstorm"], 48.2, 82.5},
[20207] = { AL["Sunfury Bowman"], BabbleZone["Netherstorm"], 61.5, 67.5},
[23008] = { AL["Ethereum Jailor"], BabbleZone["Netherstorm"], 58.8, 35.6},
[19514] = { BabbleBoss["Al'ar"], BabbleZone["Tempest Keep"], 0, 0},
[21216] = { BabbleBoss["Hydross the Unstable"], BabbleZone["Serpentshrine Cavern"], 0, 0},
[16457] = { BabbleBoss["Maiden of Virtue"], BabbleZone["Karazhan"], 0, 0},-- Searing Gorge
[5844] = { AL["Dark Iron Slaver"], BabbleZone["Searing Gorge"], 43.8, 33.8},
[5846] = { AL["Dark Iron Taskmaster"], BabbleZone["Searing Gorge"], 44.4, 41.1},
[5861] = { AL["Twilight Fire Guard"], BabbleZone["Searing Gorge"], 25.5, 33.8},
[8637] = { AL["Dark Iron Watchman"], BabbleZone["Searing Gorge"], 69.3, 34.8},
[9026] = { BabbleBoss["Overmaster Pyron"], BabbleZone["Searing Gorge"], 26.2, 74.9},-- Shadowmoon Valley
[19740] = { AL["Wrathwalker"], BabbleZone["Shadowmoon Valley"], 25.5, 33.0},
[19754] = { AL["Deathforge Tinkerer"], BabbleZone["Shadowmoon Valley"], 39.0, 38.7},
[19755] = { AL["Mo'arg Weaponsmith"], BabbleZone["Shadowmoon Valley"], 25.5, 31.5},
[19756] = { AL["Deathforge Smith"], BabbleZone["Shadowmoon Valley"], 37.5, 42.0},
[19768] = { AL["Coilskar Siren"], BabbleZone["Shadowmoon Valley"], 46.5, 30.0},
[19792] = { AL["Eclipsion Centurion"], BabbleZone["Shadowmoon Valley"], 48.0, 61.8},
[19795] = { AL["Eclipsion Blood Knight"], BabbleZone["Shadowmoon Valley"], 52.7, 63.2},
[19796] = { AL["Eclipsion Archmage"], BabbleZone["Shadowmoon Valley"], 49.5, 58.5},
[19806] = { AL["Eclipsion Bloodwarder"], BabbleZone["Shadowmoon Valley"], 46.5, 66.0},
[19826] = { AL["Dark Conclave Shadowmancer"], BabbleZone["Shadowmoon Valley"], 37.5, 29.0},
[20878] = { AL["Deathforge Guardian"], BabbleZone["Shadowmoon Valley"], 39.0, 47.0},
[20887] = { AL["Deathforge Imp"], BabbleZone["Shadowmoon Valley"], 40.5, 39.1},
[21050] = { AL["Enraged Earth Spirit"], BabbleZone["Shadowmoon Valley"], 46.5, 45.0},
[21059] = { AL["Enraged Water Spirit"], BabbleZone["Shadowmoon Valley"], 51.0, 25.5},
[21060] = { AL["Enraged Air Spirit"], BabbleZone["Shadowmoon Valley"], 70.5, 28.5},
[21061] = { AL["Enraged Fire Spirit"], BabbleZone["Shadowmoon Valley"], 48.0, 43.5},
[21302] = { AL["Shadow Council Warlock"], BabbleZone["Shadowmoon Valley"], 22.9, 38.2},
[21314] = { AL["Terrormaster"], BabbleZone["Shadowmoon Valley"], 24.0, 45.0},
[21454] = { AL["Ashtongue Warrior"], BabbleZone["Shadowmoon Valley"], 57.0, 36.0},
[22016] = { AL["Eclipsion Soldier"], BabbleZone["Shadowmoon Valley"], 52.8, 66.5},
[22017] = { AL["Eclipsion Spellbinder"], BabbleZone["Shadowmoon Valley"], 52.7, 63.4},
[22018] = { AL["Eclipsion Cavalier"], BabbleZone["Shadowmoon Valley"], 52.7, 61.1},
[22076] = { AL["Torloth the Magnificent"], BabbleZone["Shadowmoon Valley"], 51.2, 72.5},
[22093] = { AL["Illidari Watcher"], BabbleZone["Shadowmoon Valley"], 52.5, 72.0},
[23305] = { AL["Crazed Murkblood Foreman"], BabbleZone["Shadowmoon Valley"], 72.3, 90.0},
[23324] = { AL["Crazed Murkblood Miner"], BabbleZone["Shadowmoon Valley"], 73.5, 88.5},-- Sholazar Basin
[28123] = { AL["Venture Co. Excavator"], BabbleZone["Sholazar Basin"], 35.8, 45.5},
[28379] = { AL["Shattertusk Mammoth"], BabbleZone["Sholazar Basin"], 53.5, 24.4},-- Silithus
[14454] = { BabbleBoss["The Windreaver"], BabbleZone["Silithus"], 27.0, 26.8},-- Silverpine Forest
[3530] = { AL["Pyrewood Tailor"], BabbleZone["Silverpine Forest"], 45.7, 71.0},
[3531] = { AL["Moonrage Tailor"], BabbleZone["Silverpine Forest"], 45.5, 73.3},-- Stonetalon Mountains
[4028] = { AL["Charred Ancient"], BabbleZone["Stonetalon Mountains"], 34.0, 66.1},
[4029] = { AL["Blackened Ancient"], BabbleZone["Stonetalon Mountains"], 33.0, 70.7},
[4030] = { AL["Vengeful Ancient"], BabbleZone["Stonetalon Mountains"], 33.0, 72.4},-- Stranglethorn Vale
[674 ] = { AL["Venture Co. Strip Miner"], BabbleZone["Stranglethorn Vale"], 40.5, 43.7},
[938 ] = { AL["Kurzen Commando"], BabbleZone["Stranglethorn Vale"], 47.2, 7.6},
[1561] = { AL["Bloodsail Raider"], BabbleZone["Stranglethorn Vale"], 27.0, 69.9},-- Swamp of Sorrows
[764 ] = { AL["Swampwalker"], BabbleZone["Swamp of Sorrows"], 51.0, 36.7},
[765 ] = { AL["Swampwalker Elder"], BabbleZone["Swamp of Sorrows"], 12.0, 33.2},
[766 ] = { AL["Tangled Horror"], BabbleZone["Swamp of Sorrows"], 12.0, 31.8},
[1081] = { AL["Mire Lord"], BabbleZone["Swamp of Sorrows"], 5.6, 31.4},
[14448] = { AL["Molt Thorn"], BabbleZone["Swamp of Sorrows"], 30.4, 41.4},-- Tanaris
[5615] = { AL["Wastewander Rogue"], BabbleZone["Tanaris"], 60.4, 39.3},
[5616] = { AL["Wastewander Thief"], BabbleZone["Tanaris"], 63.0, 29.9},
[5617] = { AL["Wastewander Shadow Mage"], BabbleZone["Tanaris"], 60.0, 37.4},
[5618] = { AL["Wastewander Bandit"], BabbleZone["Tanaris"], 63.6, 30.6},
[5623] = { AL["Wastewander Assassin"], BabbleZone["Tanaris"], 58.6, 36.1},
[7805] = { AL["Wastewander Scofflaw"], BabbleZone["Tanaris"], 66.1, 35.0},
[7883] = { AL["Andre Firebeard"], BabbleZone["Tanaris"], 73.4, 47.1},-- Terokkar Forest
[16810] = { AL["Bonechewer Backbreaker"], BabbleZone["Terokkar Forest"], 66.0, 55.2},
[22148] = { AL["Gordunni Head-Splitter"], BabbleZone["Terokkar Forest"], 22.5, 8.3},
[23022] = { AL["Gordunni Soulreaper"], BabbleZone["Terokkar Forest"], 22.9, 8.8},
[22143] = { AL["Gordunni Back-Breaker"], BabbleZone["Terokkar Forest"], 21.2, 8.1},
[22144] = { AL["Gordunni Elementalist"], BabbleZone["Terokkar Forest"], 21.3, 12.0},-- The Barrens
[3385] = { AL["Theramore Marine"], BabbleZone["The Barrens"], 61.2, 52.2},
[3386] = { AL["Theramore Preserver"], BabbleZone["The Barrens"], 63.1, 56.7},-- The Hinterlands
[2644] = { AL["Vilebranch Hideskinner"], BabbleZone["The Hinterlands"], 62.2, 69.2},-- The Storm Peaks
[29370] = { AL["Stormforged Champion"], BabbleZone["The Storm Peaks"], 26.1, 47.5},
[29376] = { AL["Stormforged Artificer"], BabbleZone["The Storm Peaks"], 31.5, 44.2},
[29402] = { AL["Ironwool Mammoth"], BabbleZone["The Storm Peaks"], 36.0, 83.5},
[29570] = { AL["Nascent Val'kyr"], BabbleZone["The Storm Peaks"], 27.1, 60.0},
[29792] = { AL["Frostfeather Screecher"], BabbleZone["The Storm Peaks"], 33.5, 65.5},
[29793] = { AL["Frostfeather Witch"], BabbleZone["The Storm Peaks"], 33.0, 66.8},
[30208] = { AL["Stormforged Ambusher"], BabbleZone["The Storm Peaks"], 70.3, 57.5},
[30222] = { AL["Stormforged Infiltrator"], BabbleZone["The Storm Peaks"], 58.5, 63.2},
[30260] = { AL["Stoic Mammoth"], BabbleZone["The Storm Peaks"], 54.8, 64.9},
[30448] = { AL["Plains Mammoth"], BabbleZone["The Storm Peaks"], 66.1, 45.6},-- Thousand Needles
[10760] = { AL["Grimtotem Geomancer"], BabbleZone["Thousand Needles"], 33.1, 35.4},-- Un'Goro Crater
[6556] = { AL["Muculent Ooze"], BabbleZone["Un'Goro Crater"], 62.2, 25.4},
[6557] = { AL["Primal Ooze"], BabbleZone["Un'Goro Crater"], 51.8, 34.9},
[6559] = { AL["Glutinous Ooze"], BabbleZone["Un'Goro Crater"], 39.0, 37.7},
[9477] = { AL["Cloned Ooze"], BabbleZone["Un'Goro Crater"], 45.5, 22.7},-- Western Plaguelands
[1783] = { AL["Skeletal Flayer"], BabbleZone["Western Plaguelands"], 50.7, 80.5},
[1791] = { AL["Slavering Ghoul"], BabbleZone["Western Plaguelands"], 36.0, 56.5},
[1812] = { AL["Rotting Behemoth"], BabbleZone["Western Plaguelands"], 64.5, 36.6},
[1813] = { AL["Decaying Horror"], BabbleZone["Western Plaguelands"], 62.0, 37.6},
[1836] = { AL["Scarlet Cavalier"], BabbleZone["Western Plaguelands"], 42.5, 16.0},
[1844] = { AL["Foreman Marcrid"], BabbleZone["Western Plaguelands"], 47.7, 35.4},
[1885] = { AL["Scarlet Smith"], BabbleZone["Western Plaguelands"], 45.4, 14.5},
[4494] = { AL["Scarlet Spellbinder"], BabbleZone["Western Plaguelands"], 52.7, 38.4},-- Westfall
[450 ] = { AL["Defias Renegade Mage"], BabbleZone["Westfall"], 53.0, 78.8},
[590 ] = { AL["Defias Looter"], BabbleZone["Westfall"], 37.5, 58.4},-- Wetlands
[1051] = { AL["Dark Iron Dwarf"], BabbleZone["Wetlands"], 60.1, 25.7},
[1052] = { AL["Dark Iron Saboteur"], BabbleZone["Wetlands"], 58.5, 24.2},
[1053] = { AL["Dark Iron Tunneler"], BabbleZone["Wetlands"], 61.4, 27.7},
[1054] = { AL["Dark Iron Demolitionist"], BabbleZone["Wetlands"], 59.5, 29.7},
[1160] = { AL["Captain Halyndor"], BabbleZone["Wetlands"], 15.0, 24.0},
[1364] = { AL["Balgaras the Foul"], BabbleZone["Wetlands"], 60.0, 28.7},-- Winterspring
[7428] = { AL["Frostmaul Giant"], BabbleZone["Winterspring"], 58.5, 70.0},
[7437] = { AL["Cobalt Mageweaver"], BabbleZone["Winterspring"], 59.5, 49.2},
[7438] = { AL["Winterfall Ursa"], BabbleZone["Winterspring"], 67.5, 36.3},
[7440] = { AL["Winterfall Den Watcher"], BabbleZone["Winterspring"], 68.0, 35.5},
[7524] = { AL["Anguished Highborne"], BabbleZone["Winterspring"], 50.7, 41.9},
[14457] = { BabbleBoss["Princess Tempestria"], BabbleZone["Winterspring"], 52.7, 41.9},-- Zul'drak
[28851] = { AL["Enraged Mammoth"], BabbleZone["Zul'Drak"], 72.0, 41.1},
[29235] = { AL["Gundrak Savage"], BabbleZone["Zul'Drak"], 66.8, 42.4},-------------------------------------------------------------------------------
-- Instances
-------------------------------------------------------------------------------
-- Ahn'kahet: The Old Kingdom
[29311] = { BabbleBoss["Herald Volazj"], BabbleZone["Ahn'kahet: The Old Kingdom"], 0, 0},-- Auchenai Crypts
[18497] = { AL["Auchenai Monk"], BabbleZone["Auchenai Crypts"], 0, 0},
[18521] = { AL["Raging Skeleton"], BabbleZone["Auchenai Crypts"], 0, 0},-- Azjol-Nerub
[29120] = { BabbleBoss["Anub'arak"], BabbleZone["Azjol-Nerub"], 0, 0},-- Blackrock Depths
[8897] = { AL["Doomforge Craftsman"], BabbleZone["Blackrock Depths"], 0, 0},
[8898] = { AL["Anvilrage Marshal"], BabbleZone["Blackrock Depths"], 0, 0},
[8903] = { AL["Anvilrage Captain"], BabbleZone["Blackrock Depths"], 0, 0},
[8920] = { AL["Weapon Technician"], BabbleZone["Blackrock Depths"], 0, 0},
[8983] = { BabbleBoss["Golem Lord Argelmach"], BabbleZone["Blackrock Depths"], 0, 0},
[9024] = { BabbleBoss["Pyromancer Loregrain"], BabbleZone["Blackrock Depths"], 0, 0},
[9025] = { BabbleBoss["Lord Roccor"], BabbleZone["Blackrock Depths"], 0, 0},
[9028] = { BabbleBoss["Grizzle"], BabbleZone["Blackrock Depths"], 0, 0},
[9499] = { BabbleBoss["Plugger Spazzring"], BabbleZone["Blackrock Depths"], 0, 0},
[9543] = { BabbleBoss["Ribbly Screwspigot"], BabbleZone["Blackrock Depths"], 0, 0},
[9554] = { AL["Hammered Patron"], BabbleZone["Blackrock Depths"], 0, 0},
[10043] = { AL["Ribbly's Crony"], BabbleZone["Blackrock Depths"], 0, 0},-- Blackrock Spire
[9216] = { AL["Spirestone Warlord"], BabbleZone["Blackrock Spire"], 0, 0},
[9259] = { AL["Firebrand Grunt"], BabbleZone["Blackrock Spire"], 0, 0},
[9260] = { AL["Firebrand Legionnaire"], BabbleZone["Blackrock Spire"], 0, 0},
[9262] = { AL["Firebrand Invoker"], BabbleZone["Blackrock Spire"], 0, 0},
[9264] = { AL["Firebrand Pyromancer"], BabbleZone["Blackrock Spire"], 0, 0},
[9596] = { BabbleBoss["Bannok Grimaxe"], BabbleZone["Blackrock Spire"], 0, 0},
[9736] = { BabbleBoss["Quartermaster Zigris"], BabbleZone["Blackrock Spire"], 0, 0},
[10264] = { BabbleBoss["Solakar Flamewreath"], BabbleZone["Blackrock Spire"], 0, 0},
[10317] = { AL["Blackhand Elite"], BabbleZone["Blackrock Spire"], 0, 0},
[10339] = { BabbleBoss["Gyth"], BabbleZone["Blackrock Spire"], 0, 0},
[10363] = { BabbleBoss["General Drakkisath"], BabbleZone["Blackrock Spire"], 0, 0},
[10899] = { BabbleBoss["Goraluk Anvilcrack"], BabbleZone["Blackrock Spire"], 0, 0},-- Blackwing Lair
[14401] = { AL["Master Elemental Shaper Krixix"], BabbleZone["Blackwing Lair"], 0, 0},-- Dire Maul
[11487] = { BabbleBoss["Magister Kalendris"], BabbleZone["Dire Maul"], 59.04, 48.82},
[14354] = { BabbleBoss["Pusillin"], BabbleZone["Dire Maul"], 59.04, 48.82},-- Drak'Tharon Keep
[26632] = { BabbleBoss["The Prophet Tharon'ja"], BabbleZone["Drak'Tharon Keep"], 0, 0},-- Gnomeregan
[7800] = { BabbleBoss["Mekgineer Thermaplugg"], BabbleZone["Gnomeregan"], 0, 0},-- Halls of Lightning
[28923] = { BabbleBoss["Loken"], BabbleZone["Halls of Lightning"], 0, 0},-- Halls of Stone
[27978] = { BabbleBoss["Sjonnir The Ironshaper"], BabbleZone["Halls of Stone"], 0, 0},-- Karazhan
[16406] = { AL["Phantom Attendant"], BabbleZone["Karazhan"], 0, 0},
[16408] = { AL["Phantom Valet"], BabbleZone["Karazhan"], 0, 0},
[16472] = { AL["Phantom Stagehand"], BabbleZone["Karazhan"], 0, 0},
[15687] = { BabbleBoss["Moroes"], BabbleZone["Karazhan"], 0, 0},
[15688] = { BabbleBoss["Terestian Illhoof"], BabbleZone["Karazhan"], 0, 0},
[16152] = { BabbleBoss["Attumen the Huntsman"], BabbleZone["Karazhan"], 0, 0},
[16524] = { BabbleBoss["Shade of Aran"], BabbleZone["Karazhan"], 0, 0},-- Magister's Terrace
[24560] = { BabbleBoss["Priestess Delrissa"], BabbleZone["Magisters' Terrace"], 0, 0},
[24664] = { BabbleBoss["Kael'thas Sunstrider"], BabbleZone["Magisters' Terrace"], 0, 0},-- Mana-Tombs
[18314] = { AL["Nexus Stalker"], BabbleZone["Mana-Tombs"], 0, 0},
[18317] = { AL["Ethereal Priest"], BabbleZone["Mana-Tombs"], 0, 0},
[18344] = { BabbleBoss["Nexus-Prince Shaffar"], BabbleZone["Mana-Tombs"], 0, 0},-- Oculus
[27656] = { BabbleBoss["Ley-Guardian Eregos"], BabbleZone["The Oculus"], 0, 0},-- Old Hillsbrad Foothills
[17820] = { AL["Durnholde Rifleman"], BabbleZone["Old Hillsbrad Foothills"], 0, 0},
[17862] = { BabbleBoss["Captain Skarloc"], BabbleZone["Old Hillsbrad Foothills"], 0, 0},
[18096] = { BabbleBoss["Epoch Hunter"], BabbleZone["Old Hillsbrad Foothills"], 0, 0},
[28132] = { AL["Don Carlos"], BabbleZone["Old Hillsbrad Foothills"], 0, 0},-- Ruins of Ahn'Qiraj
[15340] = { BabbleBoss["Moam"], BabbleZone["Ruins of Ahn'Qiraj"], 0, 0},-- Scholomance
[1853] = { BabbleBoss["Darkmaster Gandling"], BabbleZone["Scholomance"], 0, 0},
[10469] = { AL["Scholomance Adept"], BabbleZone["Scholomance"], 0, 0},
[10499] = { AL["Spectral Researcher"], BabbleZone["Scholomance"], 0, 0},
[10503] = { BabbleBoss["Jandice Barov"], BabbleZone["Scholomance"], 0, 0},
[10508] = { BabbleBoss["Ras Frostwhisper"], BabbleZone["Scholomance"], 0, 0},-- Sethekk Halls
[18320] = { AL["Time-Lost Shadowmage"], BabbleZone["Sethekk Halls"], 0, 0},
[18322] = { AL["Sethekk Ravenguard"], BabbleZone["Sethekk Halls"], 0, 0},
[18472] = { BabbleBoss["Darkweaver Syth"], BabbleZone["Sethekk Halls"], 0, 0},-- Shadow Labyrinth
[18667] = { BabbleBoss["Blackheart the Inciter"], BabbleZone["Shadow Labyrinth"], 0, 0},
[18708] = { BabbleBoss["Murmur"], BabbleZone["Shadow Labyrinth"], 0, 0},
[18830] = { AL["Cabal Fanatic"], BabbleZone["Shadow Labyrinth"], 0, 0},-- Stratholme
[10398] = { AL["Thuzadin Shadowcaster"], BabbleZone["Stratholme"], 0, 0},
[10422] = { AL["Crimson Sorcerer"], BabbleZone["Stratholme"], 0, 0},
[10426] = { AL["Crimson Inquisitor"], BabbleZone["Stratholme"], 0, 0},
[10813] = { BabbleBoss["Balnazzar"], BabbleZone["Stratholme"], 0, 0},
[10438] = { BabbleBoss["Maleki the Pallid"], BabbleZone["Stratholme"], 0, 0},
[10997] = { BabbleBoss["Cannon Master Willey"], BabbleZone["Stratholme"], 0, 0},-- Temple of Ahn'Qiraj
[15263] = { BabbleBoss["The Prophet Skeram"], BabbleZone["Temple of Ahn'Qiraj"], 0, 0},
[15275] = { BabbleBoss["Emperor Vek'nilash"], BabbleZone["Temple of Ahn'Qiraj"], 0, 0},
[15276] = { BabbleBoss["Emperor Vek'lor"], BabbleZone["Temple of Ahn'Qiraj"], 0, 0},-- The Arcatraz
[20869] = { AL["Arcatraz Sentinel"], BabbleZone["The Arcatraz"], 0, 0},
[20880] = { AL["Eredar Deathbringer"], BabbleZone["The Arcatraz"], 0, 0},
[20898] = { AL["Gargantuan Abyssal"], BabbleZone["The Arcatraz"], 0, 0},
[20900] = { AL["Unchained Doombringer"], BabbleZone["The Arcatraz"], 0, 0},
[20885] = { BabbleBoss["Dalliah the Doomsayer"], BabbleZone["The Arcatraz"], 0, 0},--The Black Morass
[21104] = { AL["Rift Keeper"], BabbleZone["The Black Morass"], 0, 0},
[17839] = { AL["Rift Lord"], BabbleZone["The Black Morass"], 0, 0},
[17879] = { BabbleBoss["Chrono Lord Deja"], BabbleZone["The Black Morass"], 0, 0},-- The Botanica
[17975] = { BabbleBoss["High Botanist Freywinn"], BabbleZone["The Botanica"], 0, 0},
[18422] = { AL["Sunseeker Botanist"], BabbleZone["The Botanica"], 0, 0},
[17977] = { BabbleBoss["Warp Splinter"], BabbleZone["The Botanica"], 0, 0},
[17978] = { BabbleBoss["Thorngrin the Tender"], BabbleZone["The Botanica"], 0, 0},-- The Deadmines
[657 ] = { AL["Defias Pirate"], BabbleZone["The Deadmines"], 0, 0},
[1732] = { AL["Defias Squallshaper"], BabbleZone["The Deadmines"], 0, 0},-- The Mechanar
[19168] = { AL["Sunseeker Astromage"], BabbleZone["The Mechanar"], 0, 0},
[19219] = { BabbleBoss["Mechano-Lord Capacitus"], BabbleZone["The Mechanar"], 0, 0},
[19220] = { BabbleBoss["Pathaleon the Calculator"], BabbleZone["The Mechanar"], 0, 0},
[19221] = { BabbleBoss["Nethermancer Sepethrea"], BabbleZone["The Mechanar"], 0, 0},
[18831] = { BabbleBoss["High King Maulgar"], BabbleZone["Gruul's Lair"], 0, 0},-- The Nexus
[26723] = { BabbleBoss["Keristrasza"], BabbleZone["The Nexus"], 0, 0},-- The Shattered Halls
[17465] = { AL["Shattered Hand Centurion"], BabbleZone["The Shattered Halls"], 0, 0},
[16807] = { BabbleBoss["Grand Warlock Nethekurse"], BabbleZone["The Shattered Halls"], 0, 0},-- The Slave Pens
[17941] = { BabbleBoss["Mennu the Betrayer"], BabbleZone["The Slave Pens"], 0, 0},-- The Steamvault
[17722] = { AL["Coilfang Sorceress"], BabbleZone["The Steamvault"], 0, 0},
[17803] = { AL["Coilfang Oracle"], BabbleZone["The Steamvault"], 0, 0},
[17796] = { BabbleBoss["Mekgineer Steamrigger"], BabbleZone["The Steamvault"], 0, 0},
[17797] = { BabbleBoss["Hydromancer Thespia"], BabbleZone["The Steamvault"], 0, 0},
[17798] = { BabbleBoss["Warlord Kalithresh"], BabbleZone["The Steamvault"], 0, 0},-- The Temple of Atal'Hakkar
[5226] = { AL["Murk Worm"], BabbleZone["The Temple of Atal'Hakkar"], 0, 0},-- The Violet Hold
[31134] = { BabbleBoss["Cyanigosa"], BabbleZone["The Violet Hold"], 0, 0},-- Utgarde Keep
[23954] = { BabbleBoss["Ingvar the Plunderer"], BabbleZone["Utgarde Keep"], 0, 0},-- Utgarde Pinnacle
[26861] = { BabbleBoss["King Ymiron"], BabbleZone["Utgarde Pinnacle"], 0, 0},};
AtlasLoot_CraftingData["QuestList"] = {
[22] = {AL["Quest"], BabbleZone["Westfall"], 55.77, 30.92, ALLIANCE},
[38] = {AL["Quest"], BabbleZone["Westfall"], 55.77, 30.92, ALLIANCE},
[90] = {AL["Quest"], BabbleZone["Duskwood"], 73.8, 43.7, ALLIANCE},
[92] = {AL["Quest"], BabbleZone["Redridge Mountains"], 22.7, 44.0, ALLIANCE},
[93] = {AL["Quest"], BabbleZone["Duskwood"], 73.8, 43.7, ALLIANCE},
[127] = {AL["Quest"], BabbleZone["Redridge Mountains"], 27.8, 47.3, ALLIANCE},
[296] = {AL["Quest"], BabbleZone["Wetlands"], 38.0, 49.9, ALLIANCE},
[384] = {AL["Quest"], BabbleZone["Dun Morogh"], 46.8, 52.5, ALLIANCE},
[385] = {AL["Quest"], BabbleZone["Loch Modan"], 81.8, 61.7, ALLIANCE},
[418] = {AL["Quest"], BabbleZone["Loch Modan"], 34.8, 49.1, ALLIANCE},
[429] = {AL["Quest"], BabbleZone["Silverpine Forest"], 53.5, 13.5, HORDE},
[471] = {AL["Quest"], BabbleZone["Wetlands"], 8.6, 55.7, ALLIANCE},
[498] = {AL["Quest"], BabbleZone["Hillsbrad Foothills"], 63.2, 20.7, HORDE},
[501] = {AL["Quest"], BabbleZone["Hillsbrad Foothills"], 61.5, 19.2, HORDE},
[555] = {AL["Quest"], BabbleZone["Hillsbrad Foothills"], 51.8, 58.7, ALLIANCE},
[564] = {AL["Quest"], BabbleZone["Hillsbrad Foothills"], 52.4, 56.0, ALLIANCE},
[703] = {AL["Quest"], BabbleZone["Badlands"], 42.4, 52.8, NEUTRAL},
[715] = {AL["Quest"], BabbleZone["Badlands"], 25.8, 44.4, NEUTRAL},
[769] = {AL["Quest"], BabbleZone["Thunder Bluff"], 44.1, 44.6, HORDE},
[862] = {AL["Quest"], BabbleZone["The Barrens"], 55.3, 31.8, HORDE},
[1487] = {AL["Quest"], BabbleZone["The Barrens"], 45.8, 36.3, NEUTRAL},
[1559] = {AL["Quest"], BabbleZone["Badlands"], 42.4, 52.8, NEUTRAL},
[1578] = {AL["Quest"], BabbleZone["Ironforge"], 48.5, 43.0, ALLIANCE},
[1582] = {AL["Quest"], BabbleZone["Darnassus"], 64.3, 21.9, ALLIANCE},
[1618] = {AL["Quest"], BabbleZone["Ironforge"], 48.5, 43.0, ALLIANCE},
[2178] = {AL["Quest"], BabbleZone["Darkshore"], 37.7, 40.7, ALLIANCE},
[2203] = {AL["Quest"], BabbleZone["Badlands"], 2.5, 46.1, HORDE},
[2359] = {AL["Quest"], BabbleZone["Westfall"], 68.4, 70.0, ALLIANCE},
[2478] = {AL["Quest"], BabbleZone["The Barrens"], 55.5, 5.6, HORDE},
[2501] = {AL["Quest"], BabbleZone["Loch Modan"], 37.0, 49.2, ALLIANCE},
[2751] = {AL["Quest"], BabbleZone["Orgrimmar"], 78.0, 21.4, HORDE},
[2752] = {AL["Quest"], BabbleZone["Orgrimmar"], 78.0, 21.4, HORDE},
[2753] = {AL["Quest"], BabbleZone["Orgrimmar"], 78.0, 21.4, HORDE},
[2754] = {AL["Quest"], BabbleZone["Orgrimmar"], 78.0, 21.4, HORDE},
[2755] = {AL["Quest"], BabbleZone["Orgrimmar"], 78.0, 21.4, HORDE},
[2756] = {AL["Quest"], BabbleZone["Orgrimmar"], 80.7, 23.4, HORDE},
[2758] = {AL["Quest"], BabbleZone["Stormwind City"], 63.0, 36.9, ALLIANCE},
[2761] = {AL["Quest"], BabbleZone["Stranglethorn Vale"], 50.6, 20.5, NEUTRAL},
[2762] = {AL["Quest"], BabbleZone["Stranglethorn Vale"], 50.6, 20.5, NEUTRAL},
[2763] = {AL["Quest"], BabbleZone["Stranglethorn Vale"], 50.6, 20.5, NEUTRAL},
[2771] = {AL["Quest"], BabbleZone["Tanaris"], 51.5, 28.7, NEUTRAL},
[2772] = {AL["Quest"], BabbleZone["Tanaris"], 51.5, 28.7, NEUTRAL},
[2773] = {AL["Quest"], BabbleZone["Tanaris"], 51.5, 28.7, NEUTRAL},
[2848] = {AL["Quest"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[2849] = {AL["Quest"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[2850] = {AL["Quest"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[2851] = {AL["Quest"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[2852] = {AL["Quest"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[2853] = {AL["Quest"], BabbleZone["Feralas"], 30.6, 42.7, ALLIANCE},
[2855] = {AL["Quest"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[2856] = {AL["Quest"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[2857] = {AL["Quest"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[2858] = {AL["Quest"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[2859] = {AL["Quest"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[2860] = {AL["Quest"], BabbleZone["Feralas"], 74.5, 42.9, HORDE},
[3402] = {AL["Quest"], BabbleZone["Searing Gorge"], 41.0, 74.8, NEUTRAL},
[4083] = {AL["Quest"], BabbleZone["Blackrock Depths"], 0, 0, NEUTRAL},
[4161] = {AL["Quest"], BabbleZone["Teldrassil"], 57.1, 61.3, ALLIANCE},
[5124] = {AL["Quest"], BabbleZone["Winterspring"], 61.0, 38.7, NEUTRAL},
[5127] = {AL["Quest"], BabbleZone["Winterspring"], 63.8, 73.8, NEUTRAL},
[5305] = {AL["Quest"], BabbleZone["Winterspring"], 61.3, 37.1, NEUTRAL},
[5306] = {AL["Quest"], BabbleZone["Winterspring"], 61.3, 37.1, NEUTRAL},
[5307] = {AL["Quest"], BabbleZone["Winterspring"], 61.3, 37.2, NEUTRAL},
[5518] = {AL["Quest"], BabbleZone["Dire Maul"], 0, 0, NEUTRAL},
[6032] = {AL["Quest"], BabbleZone["Felwood"], 65.7, 2.9, NEUTRAL},
[6610] = {AL["Quest"], BabbleZone["Tanaris"], 52.6, 28.1, NEUTRAL},
[6622] = {AL["Quest"], BabbleZone["Arathi Highlands"], 73.4, 36.8, HORDE},
[6624] = {AL["Quest"], BabbleZone["Dustwallow Marsh"], 67.7, 48.9, ALLIANCE},
[7321] = {AL["Quest"], BabbleZone["Hillsbrad Foothills"], 62.4, 19.1, HORDE},
[7493] = {AL["Quest"], BabbleZone["Orgrimmar"], 51.0, 76.5, HORDE},
[7497] = {AL["Quest"], BabbleZone["Stormwind City"], 67.2, 85.5, ALLIANCE},
[7604] = {AL["Quest"], BabbleZone["Blackrock Depths"], 0, 0, NEUTRAL},
[7649] = {AL["Quest"], BabbleZone["Dire Maul"], 0, 0, NEUTRAL},
[7650] = {AL["Quest"], BabbleZone["Dire Maul"], 0, 0, NEUTRAL},
[7651] = {AL["Quest"], BabbleZone["Dire Maul"], 0, 0, NEUTRAL},
[7653] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[7654] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[7655] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[7656] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[7657] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[7658] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[7659] = {AL["Quest"], BabbleZone["Tanaris"], 51.4, 28.7, NEUTRAL},
[8313] = {AL["Quest"], BabbleZone["Silithus"], 38.0, 45.3, NEUTRAL},
[8323] = {AL["Quest"], BabbleZone["Silithus"], 67.1, 69.7, NEUTRAL},
[8586] = {AL["Quest"], BabbleZone["Tanaris"], 52.6, 28.1, NEUTRAL},
[8798] = {AL["Quest"], BabbleZone["Winterspring"], 60.9, 37.7, NEUTRAL},
[9171] = {AL["Quest"], BabbleZone["Ghostlands"], 48.3, 30.9, HORDE},
[9249] = {AL["Quest"], BabbleZone["Darkmoon Faire"], 0, 0, NEUTRAL},
[9356] = {AL["Quest"], BabbleZone["Hellfire Peninsula"], 49.2, 74.8, NEUTRAL},
[9454] = {AL["Quest"], BabbleZone["Azuremyst Isle"], 49.8, 51.9, ALLIANCE},
[9635] = {AL["Quest"], BabbleZone["Zangarmarsh"], 33.7, 50.2, HORDE},
[9636] = {AL["Quest"], BabbleZone["Zangarmarsh"], 68.6, 50.2, ALLIANCE},
[10860] = {AL["Quest"], BabbleZone["Blade's Edge Mountains"], 76.1, 60.3, HORDE},
[11377] = {AL["Quest"], BabbleZone["Shattrath City"], 61.6, 16.5, NEUTRAL},
[11379] = {AL["Quest"], BabbleZone["Shattrath City"], 61.6, 16.5, NEUTRAL},
[11380] = {AL["Quest"], BabbleZone["Shattrath City"], 61.6, 16.5, NEUTRAL},
[11381] = {AL["Quest"], BabbleZone["Shattrath City"], 61.6, 16.5, NEUTRAL},
[11666] = {AL["Quest"], BabbleZone["Terokkar Forest"], 38.7, 12.8, NEUTRAL},
[11667] = {AL["Quest"], BabbleZone["Terokkar Forest"], 38.7, 12.8, NEUTRAL},
[11668] = {AL["Quest"], BabbleZone["Terokkar Forest"], 38.7, 12.8, NEUTRAL},
[11669] = {AL["Quest"], BabbleZone["Terokkar Forest"], 38.7, 12.8, NEUTRAL},
[12889] = {AL["Quest"], BabbleZone["The Storm Peaks"], 37.7, 46.5, NEUTRAL},
[13571] = {AL["Quest"], BabbleZone["Dalaran"], 0, 0, NEUTRAL},
[13087] = {AL["Quest"], BabbleZone["Howling Fjord"], 58.2, 62.1, ALLIANCE},
[13088] = {AL["Quest"], BabbleZone["Borean Tundra"], 57.9, 71.5, ALLIANCE},
[13089] = {AL["Quest"], BabbleZone["Howling Fjord"], 78.7, 29.5, HORDE},
[13090] = {AL["Quest"], BabbleZone["Borean Tundra"], 42.0, 54.2, HORDE},
[13100] = {AL["Quest"], BabbleZone["Dalaran"], 40.5, 65.8, ALLIANCE},
[13101] = {AL["Quest"], BabbleZone["Dalaran"], 40.5, 65.8, ALLIANCE},
[13102] = {AL["Quest"], BabbleZone["Dalaran"], 40.5, 65.8, ALLIANCE},
[13103] = {AL["Quest"], BabbleZone["Dalaran"], 40.5, 65.8, ALLIANCE},
[13107] = {AL["Quest"], BabbleZone["Dalaran"], 40.5, 65.8, ALLIANCE},
[13112] = {AL["Quest"], BabbleZone["Dalaran"], 70.0, 38.6, HORDE},
[13113] = {AL["Quest"], BabbleZone["Dalaran"], 70.0, 38.6, HORDE},
[13114] = {AL["Quest"], BabbleZone["Dalaran"], 70.0, 38.6, HORDE},
[13115] = {AL["Quest"], BabbleZone["Dalaran"], 70.0, 38.6, HORDE},
[13116] = {AL["Quest"], BabbleZone["Dalaran"], 70.0, 38.6, HORDE},
[14151] = {AL["Quest"], BabbleZone["Dalaran"], 42.5, 32.1, NEUTRAL},
[14182] = {AL["Quest"], AL["Bounty Hunter Kolark"]..WHITE.." - "..BabbleZone["Orgrimmar"], 75.1, 23.0, HORDE},
[14183] = {AL["Quest"], AL["Artilleryman Sheldonore"]..WHITE.." - "..BabbleZone["Ironforge"], 19.7, 51.9, ALLIANCE},
};
@@ -1,282 +1,224 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
local MAX_ARGUMENTS = 6;
local MAX_ARGUMENTS = 6
local framename = "AtlasLootDefaultFrame_AdvancedSearchPanel";
local framename = "AtlasLootDefaultFrame_AdvancedSearchPanel"
--Create Main Search Panel
local searchpanel = CreateFrame("FRAME", framename, AtlasLootDefaultFrame, nil);
searchpanel:SetPoint("TOPLEFT", AtlasLootDefaultFrame_LootBackground, "TOPLEFT", 2, -2);
searchpanel:SetSize(510, 510);
searchpanel.closebtn = CreateFrame("Button", framename.."_CloseButton", searchpanel, "UIPanelCloseButton");
searchpanel.closebtn:SetPoint("TOPRIGHT", searchpanel, "TOPRIGHT", -10, -10);
searchpanel:Hide();
searchpanel.closebtn:SetScript("OnClick", function() AtlasLoot_AdvancedSearchClose(); end);
searchpanel.closebtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
local searchpanel = CreateFrame("FRAME", framename, AtlaslLoot_LootBackground, nil)
searchpanel:SetPoint("TOPLEFT", AtlaslLoot_LootBackground, "TOPLEFT", 2, -2)
searchpanel:SetSize(510, 510)
searchpanel.closebtn = CreateFrame("Button", framename.."_CloseButton", searchpanel, "UIPanelCloseButton")
searchpanel.closebtn:SetPoint("TOPRIGHT", searchpanel, "TOPRIGHT", -10, -10)
searchpanel:Hide()
searchpanel.closebtn:SetScript("OnClick", function() AtlasLoot:AdvancedSearchClose() end)
searchpanel.closebtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end)
--Create search/name box
local searchbox = CreateFrame("EditBox", framename.."_SearchBox", searchpanel, "InputBoxTemplate");
searchbox:SetSize(265, 35);
searchbox:SetPoint("TOPLEFT", searchpanel, "TOPLEFT", 30, -55);
searchbox:SetMaxLetters(100);
searchbox:SetAutoFocus(false);
searchbox:SetTextInsets(0, 8, 0, 0);
searchbox.title = searchbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
searchbox.title:SetText("Name: ");
searchbox.title:SetPoint("TOPLEFT", searchbox, "TOPLEFT", -3, 8);
local searchbox = CreateFrame("EditBox", framename.."_SearchBox", searchpanel, "InputBoxTemplate")
searchbox:SetSize(265, 35)
searchbox:SetPoint("TOPLEFT", searchpanel, "TOPLEFT", 30, -55)
searchbox:SetMaxLetters(100)
searchbox:SetAutoFocus(false)
searchbox:SetTextInsets(0, 8, 0, 0)
searchbox.title = searchbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
searchbox.title:SetText("Name: ")
searchbox.title:SetPoint("TOPLEFT", searchbox, "TOPLEFT", -3, 8)
searchbox:SetScript("OnEnterPressed", function(self)
AtlasLoot:AdvancedSearch(AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:GetText());
self:ClearFocus();
end);
searchbox:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
local searchbox_string = searchbox:CreateFontString(framename.."_SearchBoxString", "ARTWORK", "GameFontNormal");
AtlasLoot:AdvancedSearch(AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:GetText())
self:ClearFocus()
end)
searchbox:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end)
local searchbox_string = searchbox:CreateFontString(framename.."_SearchBoxString", "ARTWORK", "GameFontNormal")
--Create quality button
local qualitybtn = CreateFrame("Button", framename.."_QualityButton", searchpanel, "OptionsButtonTemplate");
qualitybtn:SetSize(130, 20);
qualitybtn:SetPoint("LEFT", searchbox, "RIGHT", 15, 0);
qualitybtn.title = qualitybtn:CreateFontString(nil, "ARTWORK", "GameFontNormal");
qualitybtn.title:SetText("Quality: ");
qualitybtn.title:SetPoint("TOPLEFT", qualitybtn, "TOPLEFT", 3, 15);
local qualitybtn = CreateFrame("Button", framename.."_QualityButton", searchpanel, "OptionsButtonTemplate")
qualitybtn:SetSize(130, 20)
qualitybtn:SetPoint("LEFT", searchbox, "RIGHT", 15, 0)
qualitybtn.title = qualitybtn:CreateFontString(nil, "ARTWORK", "GameFontNormal")
qualitybtn.title:SetText("Quality: ")
qualitybtn.title:SetPoint("TOPLEFT", qualitybtn, "TOPLEFT", 3, 15)
qualitybtn:SetScript("OnClick", function(self)
if AtlasLoot_QualityMenu:IsOpen() then
AtlasLoot_QualityMenu:Close();
if AtlasLoot.Dewdrop:IsOpen() then
AtlasLoot.Dewdrop:Close()
else
AtlasLoot_QualityMenu:Open(self);
AtlasLoot.Dewdrop:Open(self)
end
end);
qualitybtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
end)
qualitybtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end)
--Create equip type button
local equipbtn = CreateFrame("Button", framename.."_EquipButton", searchpanel, "OptionsButtonTemplate");
equipbtn:SetSize(130, 20);
equipbtn:SetPoint("TOPLEFT", searchbox, "BOTTOMLEFT", -8, -25);
equipbtn.title = equipbtn:CreateFontString(nil, "ARTWORK", "GameFontNormal");
equipbtn.title:SetText("Item Type: ");
equipbtn.title:SetPoint("TOPLEFT", equipbtn, "TOPLEFT", 3, 15);
local equipbtn = CreateFrame("Button", framename.."_EquipButton", searchpanel, "OptionsButtonTemplate")
equipbtn:SetSize(130, 20)
equipbtn:SetPoint("TOPLEFT", searchbox, "BOTTOMLEFT", -8, -25)
equipbtn.title = equipbtn:CreateFontString(nil, "ARTWORK", "GameFontNormal")
equipbtn.title:SetText("Item Type: ")
equipbtn.title:SetPoint("TOPLEFT", equipbtn, "TOPLEFT", 3, 15)
--Create equip sub type button
equipbtn.subbtn = CreateFrame("Button", framename.."_EquipSubButton", equipbtn, "OptionsButtonTemplate");
equipbtn.subbtn:SetSize(130, 20);
equipbtn.subbtn:SetPoint("LEFT", equipbtn, "RIGHT", 15, 0);
equipbtn.subbtn.title = equipbtn.subbtn:CreateFontString(nil, "ARTWORK", "GameFontNormal");
equipbtn.subbtn.title:SetText("Item Subtype: ");
equipbtn.subbtn.title:SetPoint("TOPLEFT", equipbtn.subbtn, "TOPLEFT", 3, 15);
equipbtn.subbtn = CreateFrame("Button", framename.."_EquipSubButton", equipbtn, "OptionsButtonTemplate")
equipbtn.subbtn:SetSize(130, 20)
equipbtn.subbtn:SetPoint("LEFT", equipbtn, "RIGHT", 15, 0)
equipbtn.subbtn.title = equipbtn.subbtn:CreateFontString(nil, "ARTWORK", "GameFontNormal")
equipbtn.subbtn.title:SetText("Item Subtype: ")
equipbtn.subbtn.title:SetPoint("TOPLEFT", equipbtn.subbtn, "TOPLEFT", 3, 15)
equipbtn:SetScript("OnClick", function(self)
if AtlasLoot_EquipMenu:IsOpen() then
AtlasLoot_EquipMenu:Close();
if AtlasLoot.Dewdrop:IsOpen() then
AtlasLoot.Dewdrop:Close()
else
AtlasLoot_EquipMenu:Open(self);
AtlasLoot.Dewdrop:Open(self)
end
end);
equipbtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
end)
equipbtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end)
equipbtn.subbtn:SetScript("OnClick", function(self)
if AtlasLoot_EquipSubMenu:IsOpen() then
AtlasLoot_EquipSubMenu:Close();
if AtlasLoot.Dewdrop:IsOpen() then
AtlasLoot.Dewdrop:Close()
else
AtlasLoot_EquipSubMenu:Open(self);
AtlasLoot.Dewdrop:Open(self)
end
end);
equipbtn.subbtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
end)
equipbtn.subbtn:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end)
local levelminbox = CreateFrame("EditBox", framename.."_LevelMin", searchpanel, "InputBoxTemplate");
levelminbox:SetSize(47, 35);
levelminbox:SetPoint("TOPLEFT", searchbox, "BOTTOMLEFT", 0, -70);
local lmnb = levelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
levelminbox:SetMaxLetters(3);
levelminbox:SetAutoFocus(false);
levelminbox:SetTextInsets(0, 8, 0, 0);
levelminbox.title = levelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
levelminbox.title:SetText("Required Level: ");
levelminbox.title:SetPoint("TOPLEFT", levelminbox, "TOPLEFT", -3, 8);
local levelminbox = CreateFrame("EditBox", framename.."_LevelMin", searchpanel, "InputBoxTemplate")
levelminbox:SetSize(47, 35)
levelminbox:SetPoint("TOPLEFT", searchbox, "BOTTOMLEFT", 0, -70)
local lmnb = levelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
levelminbox:SetMaxLetters(3)
levelminbox:SetAutoFocus(false)
levelminbox:SetTextInsets(0, 8, 0, 0)
levelminbox.title = levelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
levelminbox.title:SetText("Required Level: ")
levelminbox.title:SetPoint("TOPLEFT", levelminbox, "TOPLEFT", -3, 8)
local levelmaxbox = CreateFrame("EditBox", framename.."_LevelMax", searchpanel, "InputBoxTemplate");
levelmaxbox:SetSize(47, 35);
levelmaxbox:SetPoint("LEFT", levelminbox, "RIGHT", 25, 0);
local lmxb = levelmaxbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
levelmaxbox:SetMaxLetters(3);
levelmaxbox:SetAutoFocus(false);
levelmaxbox:SetTextInsets(0, 8, 0, 0);
local levelmaxbox = CreateFrame("EditBox", framename.."_LevelMax", searchpanel, "InputBoxTemplate")
levelmaxbox:SetSize(47, 35)
levelmaxbox:SetPoint("LEFT", levelminbox, "RIGHT", 25, 0)
local lmxb = levelmaxbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
levelmaxbox:SetMaxLetters(3)
levelmaxbox:SetAutoFocus(false)
levelmaxbox:SetTextInsets(0, 8, 0, 0)
local ilevelminbox = CreateFrame("EditBox", framename.."_iLevelMin", searchpanel, "InputBoxTemplate");
ilevelminbox:SetSize(47, 35);
ilevelminbox:SetPoint("LEFT", levelmaxbox, "RIGHT", 25, 0);
local ilmnb = ilevelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
ilevelminbox:SetMaxLetters(3);
ilevelminbox:SetAutoFocus(false);
ilevelminbox:SetTextInsets(0, 8, 0, 0);
ilevelminbox.title = ilevelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
ilevelminbox.title:SetText("Item Level: ");
ilevelminbox.title:SetPoint("TOPLEFT", ilevelminbox, "TOPLEFT", -3, 8);
local ilevelminbox = CreateFrame("EditBox", framename.."_iLevelMin", searchpanel, "InputBoxTemplate")
ilevelminbox:SetSize(47, 35)
ilevelminbox:SetPoint("LEFT", levelmaxbox, "RIGHT", 25, 0)
local ilmnb = ilevelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
ilevelminbox:SetMaxLetters(3)
ilevelminbox:SetAutoFocus(false)
ilevelminbox:SetTextInsets(0, 8, 0, 0)
ilevelminbox.title = ilevelminbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
ilevelminbox.title:SetText("Item Level: ")
ilevelminbox.title:SetPoint("TOPLEFT", ilevelminbox, "TOPLEFT", -3, 8)
local ilevelmaxbox = CreateFrame("EditBox", framename.."_iLevelMax", searchpanel, "InputBoxTemplate");
ilevelmaxbox:SetSize(47, 35);
ilevelmaxbox:SetPoint("LEFT", ilevelminbox, "RIGHT", 25, 0);
local ilmxb = ilevelmaxbox:CreateFontString(nil, "ARTWORK", "GameFontNormal");
ilevelmaxbox:SetMaxLetters(3);
ilevelmaxbox:SetAutoFocus(false);
ilevelmaxbox:SetTextInsets(0, 8, 0, 0);
local ilevelmaxbox = CreateFrame("EditBox", framename.."_iLevelMax", searchpanel, "InputBoxTemplate")
ilevelmaxbox:SetSize(47, 35)
ilevelmaxbox:SetPoint("LEFT", ilevelminbox, "RIGHT", 25, 0)
local ilmxb = ilevelmaxbox:CreateFontString(nil, "ARTWORK", "GameFontNormal")
ilevelmaxbox:SetMaxLetters(3)
ilevelmaxbox:SetAutoFocus(false)
ilevelmaxbox:SetTextInsets(0, 8, 0, 0)
local useleveltick = CreateFrame("CheckButton", framename.."_LevelToggle", searchpanel, "ChatConfigCheckButtonTemplate");
useleveltick:SetSize(20, 20);
useleveltick:SetPoint("TOPRIGHT", levelmaxbox, "BOTTOMRIGHT", 0, 5);
useleveltick.title = useleveltick:CreateFontString(nil, "ARTWORK", "GameFontNormal");
useleveltick.title:SetText("Use Current Lv: ");
useleveltick.title:SetPoint("TOPLEFT", levelminbox, "BOTTOMLEFT", 0, 5);
local useleveltick = CreateFrame("CheckButton", framename.."_LevelToggle", searchpanel, "ChatConfigCheckButtonTemplate")
useleveltick:SetSize(20, 20)
useleveltick:SetPoint("TOPRIGHT", levelmaxbox, "BOTTOMRIGHT", 0, 5)
useleveltick.title = useleveltick:CreateFontString(nil, "ARTWORK", "GameFontNormal")
useleveltick.title:SetText("Use Current Lv: ")
useleveltick.title:SetPoint("TOPLEFT", levelminbox, "BOTTOMLEFT", 0, 5)
useleveltick:SetScript("OnClick", function(self, button)
if(self:GetChecked()) then levelmaxbox:Hide(); levelminbox:Hide();
else levelmaxbox:Show(); levelminbox:Show();
if(self:GetChecked()) then levelmaxbox:Hide() levelminbox:Hide()
else levelmaxbox:Show() levelminbox:Show()
end
end)
local argpanel = CreateFrame("Frame", framename.."_ArgumentContainer", searchpanel);
argpanel:SetSize(450, 340);
argpanel:SetPoint("TOPLEFT", levelminbox, "BOTTOMLEFT", 0, -40);
argpanel.title = argpanel:CreateFontString(nil, "ARTWORK", "GameFontNormal");
argpanel.title:SetText("Additional Filters: ");
argpanel.title:SetPoint("TOPLEFT", argpanel, "TOPLEFT", 0, 0);
local argpanel = CreateFrame("Frame", framename.."_ArgumentContainer", searchpanel)
argpanel:SetSize(450, 340)
argpanel:SetPoint("TOPLEFT", levelminbox, "BOTTOMLEFT", 0, -40)
argpanel.title = argpanel:CreateFontString(nil, "ARTWORK", "GameFontNormal")
argpanel.title:SetText("Additional Filters: ")
argpanel.title:SetPoint("TOPLEFT", argpanel, "TOPLEFT", 0, 0)
local addArg = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate");
addArg:SetPoint("TOP", useleveltick, "BOTTOM", 5, -20);
addArg:SetSize(20, 20);
addArg:SetText("+");
local addArg = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate")
addArg:SetPoint("TOP", useleveltick, "BOTTOM", 5, -20)
addArg:SetSize(20, 20)
addArg:SetText("+")
addArg:SetScript("OnClick", function(self, button)
AtlasLoot_AddArgumentContainer();
AtlasLoot:AddArgumentContainer()
end)
local remArg = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerRemArgBtn", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate")
remArg:SetPoint("LEFT", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn, "RIGHT", 10, 0);
remArg:SetSize(20, 20);
remArg:SetText("-");
remArg:SetPoint("LEFT", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainerAddArgBtn, "RIGHT", 10, 0)
remArg:SetSize(20, 20)
remArg:SetText("-")
remArg:SetScript("OnClick", function(self, button)
AtlasLoot_RemoveArgumentContainer();
AtlasLoot:RemoveArgumentContainer()
end)
remArg:Disable();
remArg:Disable()
for n = 1, MAX_ARGUMENTS do
local btn = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n), AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate");
btn:SetPoint("TOPLEFT", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "TOPLEFT", 0, -((n - 1) * 35)-20);
btn:SetSize(130, 20);
local btn = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n), AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate")
btn:SetPoint("TOPLEFT", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "TOPLEFT", 0, -((n - 1) * 35)-20)
btn:SetSize(130, 20)
btn:SetScript("OnClick", function(self, button)
if AtlasLoot_ArgumentMenus[n]:IsOpen() then
AtlasLoot_ArgumentMenus[n]:Close();
if AtlasLoot.SearchMenus.ArgumentMenus[n]:IsOpen() then
AtlasLoot.SearchMenus.ArgumentMenus[n]:Close()
else
AtlasLoot_ArgumentMenus[n]:Open(self);
AtlasLoot.SearchMenus.ArgumentMenus[n]:Open(self)
end
end)
btn:Hide();
btn:SetText("Select Option");
btn:Hide()
btn:SetText("Select Option")
local sub = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Sub", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate");
sub:SetPoint("LEFT", btn, "RIGHT", 15, 0);
sub:SetSize(130, 20);
local sub = CreateFrame("Button", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Sub", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "OptionsButtonTemplate")
sub:SetPoint("LEFT", btn, "RIGHT", 15, 0)
sub:SetSize(130, 20)
sub:SetScript("OnClick", function(self, button)
if AtlasLoot_ArgumentSubMenus[n]:IsOpen() then
AtlasLoot_ArgumentSubMenus[n]:Close();
if AtlasLoot.SearchMenus.ArgumentSubMenus[n]:IsOpen() then
AtlasLoot.SearchMenus.ArgumentSubMenus[n]:Close()
else
AtlasLoot_ArgumentSubMenus[n]:Open(self);
AtlasLoot.SearchMenus.ArgumentSubMenus[n]:Open(self)
end
end)
sub:Hide();
sub:Disable();
sub:Hide()
sub:Disable()
local txt = CreateFrame("EditBox", "AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer" .. tostring(n) .. "Value", AtlasLootDefaultFrame_AdvancedSearchPanel_ArgumentContainer, "InputBoxTemplate")
txt:SetPoint("LEFT", sub, "RIGHT", 15, 0);
txt:SetSize(65, 35);
txt:SetAutoFocus(false);
txt:SetTextInsets(0, 8, 0, 0);
txt:SetPoint("LEFT", sub, "RIGHT", 15, 0)
txt:SetSize(65, 35)
txt:SetAutoFocus(false)
txt:SetTextInsets(0, 8, 0, 0)
txt:SetScript("OnEnterPressed", function(self)
self:ClearFocus();
self:ClearFocus()
end)
txt:Hide();
txt:Hide()
end
--Search Button
local searchbtn = CreateFrame("Button", framename.."_SearchButton", searchpanel, "UIPanelButtonTemplate2");
searchbtn:SetSize(70,32);
searchbtn:SetPoint("BOTTOMLEFT", searchpanel, "BOTTOMLEFT", 20, 20);
local searchbtn = CreateFrame("Button", framename.."_SearchButton", searchpanel, "UIPanelButtonTemplate2")
searchbtn:SetSize(70,32)
searchbtn:SetPoint("BOTTOMLEFT", searchpanel, "BOTTOMLEFT", 20, 20)
searchbtn:SetScript("OnShow", function(self)
self:SetText(AL["Search"]);
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
end);
self:SetText(AL["Search"])
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 )
end)
searchbtn:SetScript("OnClick", function()
AtlasLoot:AdvancedSearch(AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:GetText());
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:ClearFocus();
end);
AtlasLoot:AdvancedSearch(AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:GetText())
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:ClearFocus()
end)
local clearbtn = CreateFrame("Button", framename.."_ClearButton", searchpanel, "UIPanelButtonTemplate2");
clearbtn:SetSize(70,32);
clearbtn:SetPoint("LEFT", searchbtn, "RIGHT", 20, 0);
local clearbtn = CreateFrame("Button", framename.."_ClearButton", searchpanel, "UIPanelButtonTemplate2")
clearbtn:SetSize(70,32)
clearbtn:SetPoint("LEFT", searchbtn, "RIGHT", 20, 0)
clearbtn:SetScript("OnShow", function(self)
self:SetText(AL["Clear"]);
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 );
end);
self:SetText(AL["Clear"])
self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 )
end)
clearbtn:SetScript("OnClick", function()
AtlasLoot_AdvancedSearchReset();
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:SetText("");
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:ClearFocus();
end);
AtlasLoot:AdvancedSearchReset()
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:SetText("")
AtlasLootDefaultFrame_AdvancedSearchPanel_SearchBox:ClearFocus()
end)
AtlasLoot_AdvancedSearchSetup();
--[[
function StreamingIcon_UpdateIcon(status, tooltip)
if(status > 0) then
AtlasLoot_SearchProgressSpinner:SetVertexColor(0,1,0);
AtlasLoot_SearchProgressFrameBackground:SetVertexColor(0,1,0);
AtlasLoot_SearchProgress.tooltip = tooltip;
AtlasLoot_SearchProgress.Loop:Play();
AtlasLoot_SearchProgress:Show();
else
AtlasLoot_SearchProgress.Loop:Stop();
AtlasLoot_SearchProgress:Hide();
end
end
local streamIcon = CreateFrame("Frame", "AtlasLoot_SearchProgress", AtlasLootDefaultFrame_LootBackground);
streamIcon:SetPoint("TOPRIGHT", AtlasLootDefaultFrame_LootBackground, "TOPRIGHT");
streamIcon:SetSize(48, 48);
streamIcon.tooltip = "Searching...";
streamIcon:EnableMouse(true);
streamIcon.icon = streamIcon:CreateTexture("$parentSpinner", "BACKGROUND");
streamIcon.icon:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streamcircle");
streamIcon.icon:SetVertexColor(0,1,0);
streamIcon.icon:SetAllPoints();
streamIcon.spark = streamIcon:CreateTexture("OVERLAY");
streamIcon.spark:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streamspark");
streamIcon.spark:SetAllPoints();
streamIcon.frame = CreateFrame("Frame", "$parentFrame", AtlasLoot_SearchProgress);
streamIcon.frame:SetAllPoints();
streamIcon.frame.bg = streamIcon.frame:CreateTexture("$parentBackground", "BACKGROUND");
streamIcon.frame.bg:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streambackground");
streamIcon.frame.bg:SetVertexColor(0,1,0);
streamIcon.frame.bg:SetAllPoints();
streamIcon.frame.alpha = streamIcon.frame:CreateTexture("$parentAlpha", "ARTWORK");
streamIcon.frame.alpha:SetTexture("Interface\\Addons\\AtlasLoot\\Images\\streamframe");
streamIcon.frame.alpha:SetAllPoints();
streamIcon.Loop = streamIcon:CreateAnimationGroup("$parentLoopAnim");
streamIcon.Loop:SetLooping("REPEAT");
local rotAnim = streamIcon.Loop:CreateAnimation("ROTATION");
rotAnim:SetOrder(1);
rotAnim:SetDuration(8);
rotAnim:SetDegrees(-360);
streamIcon:SetScript("OnEnter",
function(self)
if(self.tooltip ~= nil) then
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(self.tooltip, nil, nil, nil, nil, true);
end
end);
streamIcon:SetScript("OnLeave", GameTooltip_Hide);
streamIcon:SetScript("OnShow", function(self) self:SetFrameLevel( (self:GetParent()):GetFrameLevel() + 1 ) end);
streamIcon:SetPoint("TOPRIGHT", AtlasLootDefaultFrame_LootBackground, "TOPRIGHT");
streamIcon:Hide();]]
AtlasLoot:AdvancedSearchSetup()
+367 -271
View File
@@ -1,142 +1,120 @@
--[[
Functions:
AtlasLoot:OnShow()
AtlasLoot:DewDropClick(tablename, text, tabletype, tabletype2)
AtlasLoot:DewDropSubMenuClick(tablename)
AtlasLoot:DewdropExpansionMenuClick(tablename, text)
AtlasLoot_DefaultFrame_OnShow()
AtlasLootDefaultFrame_OnHide()
AtlasLoot:DewdropExpansionMenuOpen(loottable)
AtlasLoot:DewdropExpansionMenuOpen()
AtlasLoot:DewdropSubMenuOpen(loottable)
AtlasLoot:DewdropOpen()
AtlasLoot:SetNewStyle(style)
AtlasLoot:DewdropModuleMenuOpen()
AtlasLoot:SetSkin(skin)
]]
--Include all needed libraries
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
--Load the 2 dewdrop menus
AtlasLoot_Dewdrop = AceLibrary("Dewdrop-2.0");
ItemindexID = 2;
local WHITE = "|cffFFFFFF"
ItemindexID = 2
AtlasLoot_Data["AtlasLootFallback"] = {
EmptyInstance = {};
};
EmptyInstance = {}
}
--[[
AtlasLootDefaultFrame_OnShow:
AtlasLoot:OnShow():
Called whenever the loot browser is shown and sets up buttons and loot tables
]]
function AtlasLootDefaultFrame_OnShow()
function AtlasLoot:OnShow()
--Definition of where I want the loot table to be shown
--Remove the selection of a loot table in Atlas
AtlasLootItemsFrame.activeBoss = nil;
AtlasLootItemsFrame.activeBoss = nil
--Set the item table to the loot table
--Show the last displayed loot table
local lastboss = AtlasLoot.db.profile.LastBoss[AtlasLoot_Expac];
if AtlasLoot.db.profile.AutoCurrentInstance and AtlasLoot:ShowInstance() then
return;
local lastboss = self.db.profile.LastBoss[self.Expac]
if self.db.profile.AutoCurrentInstance and self:ShowInstance() then
return
elseif lastboss and lastboss[4] then
ATLASLOOT_CURRENTTABLE = lastboss[5];
ATLASLOOT_LASTMODULE = lastboss[4];
ATLASLOOT_MODUELNAME = lastboss[6];
AtlasLoot:IsLootTableAvailable(lastboss[4]);
AtlasLootDefaultFrame_Menu:SetText(ATLASLOOT_MODUELNAME);
AtlasLoot:ShowItemsFrame(lastboss[1], "AtlasLoot_Data", lastboss[3]);
self.currentTable = lastboss[5]
self.lastModule = lastboss[4]
self.moduleName = lastboss[6]
self:IsLootTableAvailable(lastboss[4])
AtlasLootDefaultFrame_Menu:SetText(self.moduleName)
self:ShowItemsFrame(lastboss[1], "AtlasLoot_Data", lastboss[3])
else
AtlasLoot:ShowItemsFrame("EmptyTable", "AtlasLoot_Data", 1);
self:ShowItemsFrame("EmptyTable", "AtlasLoot_Data", 1)
end
end
-- Show the Instance you are in
function AtlasLoot:ShowInstance()
for i, v in pairs(AtlasLoot_SubMenus) do
for n, t in ipairs(v) do
if t[4] == BabbleZone[GetRealZoneText()] then
ATLASLOOT_CURRENTTABLE = v.SubMenu;
ATLASLOOT_LASTMODULE = v.Module;
AtlasLoot:IsLootTableAvailable(ATLASLOOT_LASTMODULE);
AtlasLoot:ShowItemsFrame(t[2], "AtlasLoot_Data", 1);
return true;
for _, v in pairs(AtlasLoot_SubMenus) do
for _, t in ipairs(v) do
if t[4] == BabbleZone[GetRealZoneText()] or (t[5] and t[5] == BabbleZone[GetRealZoneText()]) then
self.currentTable = v.SubMenu
self.lastModule = v.Module
self:IsLootTableAvailable(self.lastModule)
self:ShowItemsFrame(t[2], "AtlasLoot_Data", 1)
return true
end
end
end
end
--[[
AtlasLootDefaultFrame_OnHide:
When we close the loot browser, re-bind the item table to Atlas
and close all Dewdrop menus
]]
function AtlasLootDefaultFrame_OnHide()
AtlasLoot_Dewdrop:Close(1);
-- Used to strip the expansion out of the dataID
function AtlasLoot:CleandataID(newID, listnum)
local cleanlist = { [1] = {"CLASSIC", "TBC", "WRATH"} }
for i = 1, #cleanlist[listnum] do
newID = gsub(newID, cleanlist[listnum][i], "")
end
return newID
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
Called when a button in AtlasLoot.Dewdrop is clicked
]]
function AtlasLoot:DewDropClick(tablename, text, tablenum)
ATLASLOOT_FILTER_ENABLE = false;
ATLASLOOT_BACKENABLED = false;
ATLASLOOT_MODUELNAME = text;
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);
local lasttable = AtlasLoot.db.profile[ATLASLOOT_CURRENTTABLE];
self.filterEnable = false
self.backEnabled = false
self.moduleName = text
AtlasLootFilterCheck:SetChecked(false)
tablename = tablename .. self.Expac
self.currentTable = tablename
tablenum = tablenum or 1
self.lastModule = AtlasLoot_SubMenus[tablename].Module
AtlasLootDefaultFrame_Menu:SetText(text)
self:IsLootTableAvailable(AtlasLoot_SubMenus[tablename].Module)
local lasttable = self.db.profile.savedState[self.currentTable]
if lasttable then
AtlasLoot:ShowItemsFrame(lasttable[1], lasttable[2], lasttable[3]);
self:ShowItemsFrame(lasttable[1], lasttable[2], lasttable[3])
else
AtlasLoot:ShowItemsFrame(AtlasLoot_SubMenus[tablename][tablenum][2], "AtlasLoot_Data", tablenum);
self:ShowItemsFrame(AtlasLoot_SubMenus[tablename][tablenum][2], "AtlasLoot_Data", tablenum)
end
end
--[[
AtlasLoot:DewDropSubMenuClick(tablename):
tablename - Name of the loot table in the database
Called when a button in AtlasLoot_DewdropSubMenu is clicked
Called when a button in AtlasLoot.DewdropSubMenu is clicked
]]
function AtlasLoot:DewDropSubMenuClick(tablename)
ATLASLOOT_BACKENABLED = false;
--Show the select loot table
local tablenum = AtlasLoot_Data[tablename].Loadfirst or 1;
--Show the table that has been selected
AtlasLoot:ShowItemsFrame(tablename, "AtlasLoot_Data", tablenum);
end
local WHITE = "|cffFFFFFF";
function AtlasLoot:AddDividerLine(maxLenght)
local text = WHITE.."----------------------------------------------------------------------------------------------------"
AtlasLoot_Dewdrop:AddLine(
'text' , text:sub(1, maxLenght),
'textHeight', 12,
'textWidth', 12,
'isTitle', true,
"notCheckable", true
);
function AtlasLoot:DewDropSubMenuClick(tablename, onDamand)
local dataSource = "AtlasLoot_Data"
self.backEnabled = false
if onDamand then
dataSource = "AtlasLoot_OnDemand"
self:CreateOnDemandLootTable(onDamand)
else
--Show the select loot table
local tablenum = _G[dataSource][tablename].Loadfirst or 1
--Show the table that has been selected
self:ShowItemsFrame(tablename, dataSource, tablenum)
end
end
function AtlasLoot:CloseDewDrop(divider, maxLenght)
if divider then
AtlasLoot:AddDividerLine(maxLenght)
end
AtlasLoot_Dewdrop:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
'notCheckable', true
)
end
--[[
AtlasLoot:DewdropExpansionMenuClick(expansion, name):
@@ -145,19 +123,19 @@ name - label for the expansion
Called when a button in DewdropExpansionMenuClick is clicked
]]
function AtlasLoot:DewdropExpansionMenuClick(expansion, name)
ATLASLOOT_BACKENABLED = false;
AtlasLootDefaultFrame_ExpansionMenu:SetText(name);
AtlasLoot_Expac = expansion;
if ATLASLOOT_CURRENTTABLE then
ATLASLOOT_CURRENTTABLE = AtlasLoot:CleandataID(ATLASLOOT_CURRENTTABLE, 1) .. AtlasLoot_Expac;
AtlasLoot:IsLootTableAvailable(AtlasLoot_SubMenus[ATLASLOOT_CURRENTTABLE].Module);
local tablename = AtlasLoot_SubMenus[ATLASLOOT_CURRENTTABLE][1][2];
local lasttable = AtlasLoot.db.profile[ATLASLOOT_CURRENTTABLE];
self.backEnabled = false
AtlasLootDefaultFrame_ExpansionMenu:SetText(name)
self.Expac = expansion
if self.currentTable then
self.currentTable = self:CleandataID(self.currentTable, 1) .. self.Expac
self:IsLootTableAvailable(AtlasLoot_SubMenus[self.currentTable].Module)
local tablename = AtlasLoot_SubMenus[self.currentTable][1][2]
local lasttable = self.db.profile.savedState[self.currentTable]
if lasttable then
AtlasLoot:ShowItemsFrame(lasttable[1], lasttable[2], lasttable[3]);
self:ShowItemsFrame(lasttable[1], lasttable[2], lasttable[3])
else
local tablenum = AtlasLoot_Data[tablename].Loadfirst or 1;
AtlasLoot:ShowItemsFrame(tablename, "AtlasLoot_Data", tablenum);
local tablenum = AtlasLoot_Data[tablename].Loadfirst or 1
self:ShowItemsFrame(tablename, "AtlasLoot_Data", tablenum)
end
end
end
@@ -166,40 +144,21 @@ end
AtlasLoot:DewdropExpansionMenuOpen():
Adds expansion menu from expansion table in mainmenus.lua
]]
function AtlasLoot:DewdropExpansionMenuOpen()
local frame = AtlasLootDefaultFrame_ExpansionMenu;
if AtlasLoot_Dewdrop:IsOpen(frame) then AtlasLoot_Dewdrop:Close() return end
AtlasLoot_Dewdrop:Register(frame,
'point', function(parent)
return "TOP", "BOTTOM"
end,
'children', function(level, value)
if AtlasLoot_ExpansionMenu then
for k, v in ipairs(AtlasLoot_ExpansionMenu) do
if type(v) == "table" then
--If a link to show a expansion menu
AtlasLoot_Dewdrop:AddLine(
'text', v[1],
'textR', 1,
'textG', 0.82,
'textB', 0,
'func', function() AtlasLoot:DewdropExpansionMenuClick(v[2], v[1]) end,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
'notCheckable', true
)
end
local expansionMenuLoaded
function AtlasLoot:DewdropExpansionMenuOpen(btn)
local menuList = { [1] = {} }
if not expansionMenuLoaded then
if AtlasLoot_ExpansionMenu then
for i,v in ipairs(AtlasLoot_ExpansionMenu) do
if type(v) == "table" then
tinsert(menuList[1], {text = v[1], func = function() self:DewdropExpansionMenuClick(v[2], v[1]) end, notCheckable = true, closeWhenClicked = true, textHeight = 12, textWidth = 12})
end
end
--Close button
AtlasLoot:CloseDewDrop(true,35)
end,
'dontHook', true
)
AtlasLoot_Dewdrop:Open(frame)
tinsert(menuList[1], {close = true, divider = 35})
end
end
expansionMenuLoaded = self:OpenDewdropMenu(btn, menuList, expansionMenuLoaded)
end
--[[
AtlasLoot:DewdropSubMenuOpen(loottable):
loottable - Table defining the sub menu
@@ -207,58 +166,96 @@ Generates the sub menu needed by passing a table of loot tables and titles
]]
function AtlasLoot:DewdropSubMenuOpen(loottable)
local frame = AtlasLootDefaultFrame_SubMenu
if AtlasLoot_Dewdrop:IsOpen(frame) then AtlasLoot_Dewdrop:Close() return end
AtlasLoot_Dewdrop:Register(frame,
if self.Dewdrop:IsOpen(frame) then self.Dewdrop:Close() return end
self.Dewdrop:Register(frame,
'point', function(parent)
return "TOP", "BOTTOM"
end,
'children', function(level, value)
for k, v in pairs(loottable) do
if type(v) == "table" then
if v[3] == "Header" then
if k ~= 1 then AtlasLoot:AddDividerLine(40) end
AtlasLoot_Dewdrop:AddLine(
'text', v[1],
'textR', 0.2,
'textG', 0.82,
'textB', 0.5,
'textHeight', 13,
'textWidth', 13,
'func', function(arg1) AtlasLoot:DewDropSubMenuClick(arg1) end,
'arg1', v[2],
'notCheckable', true
)
else
AtlasLoot_Dewdrop:AddLine(
'text', AtlasLoot_Data[v[2]].Name,
'func', function(arg1) AtlasLoot:DewDropSubMenuClick(arg1) end,
'arg1', v[2],
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
'notCheckable', true
)
if level == 1 then
for k, v in pairs(loottable) do
if type(v) == "table" then
if type(v[3]) == "table" then
self.Dewdrop:AddLine(
"text", v[1],
"value", v[3],
"hasArrow", true,
'textHeight', 12,
'textWidth', 12,
"notCheckable", true
)
elseif v[3] == "Header" then
if k ~= 1 then self:AddDividerLine(40) end
self.Dewdrop:AddLine(
'text', v[1],
'textR', 0.2,
'textG', 0.82,
'textB', 0.5,
'textHeight', 13,
'textWidth', 13,
'func', function() self:DewDropSubMenuClick(v[2]) end,
'notCheckable', true
)
else
self.Dewdrop:AddLine(
'text', AtlasLoot_Data[v[2]] and AtlasLoot_Data[v[2]].Name or v[1],
'func', function() self:DewDropSubMenuClick(v[2], v.OnDamand) end,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
'notCheckable', true
)
end
end
end
elseif level == 2 then
if value then
for k,v in pairs(value) do
if v[3] == "Header" then
if k ~= 1 then self:AddDividerLine(40) end
self.Dewdrop:AddLine(
'text', v[1],
'textR', 0.2,
'textG', 0.82,
'textB', 0.5,
'textHeight', 13,
'textWidth', 13,
'func', function() self:DewDropSubMenuClick(v[2], v.OnDamand) end,
'notCheckable', true
)
elseif type(v) == "table" then
self.Dewdrop:AddLine(
"text", AtlasLoot_Data[v[2]] and AtlasLoot_Data[v[2]].Name or v[1],
"func", function() self:DewDropSubMenuClick(v[2], v.OnDamand) end,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
"notCheckable", true
)
end
end
end
end
--Close button
AtlasLoot:CloseDewDrop(true,40)
self:CloseDewDrop(true,40)
end,
'dontHook', true
)
AtlasLoot_Dewdrop:Open(frame)
self.Dewdrop:Open(frame)
end
--[[
AtlasLoot:DewdropOpen:
AtlasLoot:DewdropModuleMenuOpen:
Constructs the main category menu from a tiered table
]]
function AtlasLoot:DewdropOpen()
local moduleMenuLoaded
function AtlasLoot:DewdropModuleMenuOpen()
local frame = AtlasLootDefaultFrame_Menu
if AtlasLoot_Dewdrop:IsOpen(frame) then AtlasLoot_Dewdrop:Close() return end
local loaded
if not loaded then
AtlasLoot_Dewdrop:Register(frame,
if self.Dewdrop:IsOpen(frame) then self.Dewdrop:Close() return end
if not moduleMenuLoaded then
self.Dewdrop:Register(frame,
'point', function(parent)
return "TOP", "BOTTOM"
end,
@@ -266,12 +263,12 @@ function AtlasLoot:DewdropOpen()
if AtlasLoot_Modules then
for k, v in ipairs(AtlasLoot_Modules) do
--If a link to show a submenu
AtlasLoot_Dewdrop:AddLine(
self.Dewdrop:AddLine(
'text', v[1],
'textR', 1,
'textG', 0.82,
'textB', 0,
'func', function() AtlasLoot:DewDropClick(v[2], v[1], v[3]) end,
'func', function() self:DewDropClick(v[2], v[1], v[3]) end,
'textHeight', 12,
'textWidth', 12,
'closeWhenClicked', true,
@@ -280,127 +277,226 @@ function AtlasLoot:DewdropOpen()
end
end
--Close button
AtlasLoot:CloseDewDrop(true,35)
self:CloseDewDrop(true,35)
end,
'dontHook', true
)
moduleMenuLoaded = true
end
AtlasLoot_Dewdrop:Open(frame)
self.Dewdrop:Open(frame)
end
AtlasLoot.CloseDefaults = {}
local DF = AtlasLoot.CloseDefaults
DF[1], DF[2], DF[3], DF[4], DF[5] = _G["AtlasLootDefaultFrameCloseButton"]:GetPoint()
AtlasLoot.TitleDefaults = {}
local TDF = AtlasLoot.TitleDefaults
TDF[1], TDF[2], TDF[3], TDF[4], TDF[5] = _G["AtlasLootDefaultFrame"].TitleText:GetPoint()
local buttons = {
"AtlasLootDefaultFrame_Menu",
"AtlasLootDefaultFrame_SubMenu",
"AtlasLootDefaultFrame_ExpansionMenu",
"AtlasLootDefaultFrame_Preset1",
"AtlasLootDefaultFrame_Preset2",
"AtlasLootDefaultFrame_Preset3",
"AtlasLootDefaultFrame_Preset4",
"AtlasLootDefaultFrameSearchButton",
"AtlasLootDefaultFrameLastResultButton",
"AtlasLootDefaultFrameWishListButton",
"AtlasLootDefaultFrameAdvancedSearchButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_EquipButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_QualityButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_SearchButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_ClearButton",
"AtlasLootDefaultFrame_MapButton",
"AtlasLootDefaultFrame_LoadInstanceButton",
"AtlasLoot_Favorites",
}
AtlasLoot.skinKeys = {
{"Modern", AL["Modern"]},
{"OldAtlasLoot", AL["Old AtlasLoot"]},
{"ElvUIDark", AL["ElvUI Dark"]},
}
local skins = {
Modern = {
DefaultFrame = {
bg = "Interface\\DialogFrame\\UI-DialogBox-Background",
bgColor = {2,2,2,2},
edge = "Interface\\Tooltips\\UI-Tooltip-Border",
edgeColor = {1,1,1,1},
tile = true,
},
Backdrop = {
bg = "Interface\\DialogFrame\\UI-DialogBox-Background",
bgColor = {2,2,2,2},
edge = "Interface\\Tooltips\\UI-Tooltip-Border",
edgeColor = {1,1,1,1},
tile = true,
},
btTex = "Interface\\Buttons\\UI-Silver-Button-Up",
insets = {1,1,1,1},
showFrame = true,
searchP = {0,-0.5},
searchH = 24,
edgeSize = 16,
closebtn = {0,0},
title = {0,0},
},
OldAtlasLoot = {
DefaultFrame = {
bg = "Interface/AchievementFrame/UI-Achievement-AchievementBackground",
bgColor = {1, 1, 1, 0.5},
edge = "Interface/Tooltips/UI-Tooltip-Border",
edgeColor = {1, 0.675, 0.125, 1},
tile = false,
},
Backdrop = {
bg = "Interface/AchievementFrame/UI-Achievement-StatsBackground",
bgColor = {0, 0, 0, .7},
edge = nil,
edgeColor = {nil,nil,nil,nil},
tile = false,
},
btTex = "Interface/AchievementFrame/UI-Achievement-Category-Background",
insets = {4,4,4,4},
showFrame = false,
searchP = {2,0},
searchH = 23,
edgeSize = 8,
closebtn = {-5,-5},
title = {0,-5},
},
ElvUIDark = {
DefaultFrame = {
bg = "Interface\\DialogFrame\\UI-DialogBox-Background",
bgColor = {2,2,2,2},
edge = "Interface\\Tooltips\\UI-Tooltip-Border",
edgeColor = {0,0,0,5},
tile = true,
},
Backdrop = {
bg = "Interface\\DialogFrame\\UI-DialogBox-Background",
bgColor = {2,2,2,2},
edge = "Interface\\Tooltips\\UI-Tooltip-Border",
edgeColor = {0,0,0,5},
tile = true,
},
btTex = {0,0,0,.6},
insets = {1,1,1,1},
showFrame = false,
searchP = {2,0},
searchH = 25,
edgeSize = 8,
closebtn = {-5,-5},
title = {0,0},
},
}
local backDropFrames = {
"AtlasLoot_FavoritesPopupFrame",
"AtlaslLoot_LootBackground",
"Atlasloot_Difficulty_ScrollFrame",
"Atlasloot_SubTableFrame",
"AtlasLoot_PopupFrame",
}
--[[
AtlasLoot:SetNewStyle:
Create the new Default Frame style
style = "new"
style = "old"
AtlasLoot:SetSkin()
Changes the skin
]]
function AtlasLoot:SetNewStyle(style)
function AtlasLoot:SetSkin(skin)
skin = skins[skin]
for _, frame in pairs(backDropFrames) do
_G[frame]:SetBackdrop({
bgFile = skin.Backdrop.bg, tile = skin.Backdrop.tile, tileSize = 16,
edgeFile = skin.Backdrop.edge, edgeSize = skin.edgeSize,
insets = { left = skin.insets[1], right = skin.insets[2], top = skin.insets[3], bottom = skin.insets[4] },
})
_G[frame]:SetBackdropColor(skin.Backdrop.bgColor[1], skin.Backdrop.bgColor[2], skin.Backdrop.bgColor[3], skin.Backdrop.bgColor[4])
_G[frame]:SetBackdropBorderColor(skin.Backdrop.edgeColor[1], skin.Backdrop.edgeColor[2], skin.Backdrop.edgeColor[3], skin.Backdrop.edgeColor[4])
end
local buttons = {
"AtlasLootDefaultFrame_Options",
"AtlasLootDefaultFrame_LoadModules",
"AtlasLootDefaultFrame_Menu",
"AtlasLootDefaultFrame_SubMenu",
"AtlasLootDefaultFrame_ExpansionMenu",
"AtlasLootDefaultFrame_Preset1",
"AtlasLootDefaultFrame_Preset2",
"AtlasLootDefaultFrame_Preset3",
"AtlasLootDefaultFrame_Preset4",
"AtlasLootDefaultFrameSearchButton",
"AtlasLootDefaultFrameSearchClearButton",
"AtlasLootDefaultFrameLastResultButton",
"AtlasLootDefaultFrameWishListButton",
"AtlasLootDefaultFrameAdvancedSearchButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_EquipButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_EquipSubButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_QualityButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_SearchButton",
"AtlasLootDefaultFrame_AdvancedSearchPanel_ClearButton",
"AtlasLootDefaultFrame_MapButton",
"AtlasLootDefaultFrame_MapSelectButton",
"AtlasLootDefaultFrame_LoadInstanceButton",
"AtlasLootDefaultFrame_LoadInstanceDBButton",
}
local DF = self.CloseDefaults
_G["AtlasLootDefaultFrameCloseButton"]:SetPoint(DF[1], DF[2], DF[3], DF[4]+skin.closebtn[1], DF[5]+skin.closebtn[2])
if style == "new" then
AtlasLootDefaultFrame_LootBackground:SetBackdrop({ bgFile = "Interface/AchievementFrame/UI-Achievement-StatsBackground" });
AtlasLootDefaultFrame_LootBackground:SetBackdropColor(1, 1, 1, 0.5);
local TDF = self.TitleDefaults
_G["AtlasLootDefaultFrame"].TitleText:SetPoint(TDF[1], TDF[2], TDF[3], TDF[4]+skin.title[1], TDF[5]+skin.title[2])
AtlasLootDefaultFrame:SetBackdrop({ bgFile = "Interface/AchievementFrame/UI-Achievement-AchievementBackground",
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 } });
AtlasLootDefaultFrame:SetBackdropColor(1, 1, 1, 0.5)
AtlasLootDefaultFrame:SetBackdropBorderColor(1, 0.675, 0.125, 1)
AtlasLootDefaultFrameHeader:SetTexture("Interface\\AchievementFrame\\UI-Achievement-Alert-Background.blp")
AtlasLootDefaultFrameHeader:SetTexCoord(0, 0.605, 0, 0.703)
AtlasLootDefaultFrameHeader:SetWidth(299)
AtlasLootDefaultFrameHeader:SetHeight(60)
AtlasLootDefaultFrameHeader:SetPoint("TOP", AtlasLootDefaultFrame, "TOP", -3, 22)
if type(skin.btTex) == "table" then
local color = skin.btTex
_G["AtlasLootDefaultFrameSearchBox"].Left:SetTexture(color[1],color[2],color[3],color[4])
_G["AtlasLootDefaultFrameSearchBox"].Right:SetTexture(color[1],color[2],color[3],color[4])
_G["AtlasLootDefaultFrameSearchBox"].Middle:SetTexture(color[1],color[2],color[3],color[4])
else
_G["AtlasLootDefaultFrameSearchBox"].Left:SetTexture("")
_G["AtlasLootDefaultFrameSearchBox"].Right:SetTexture("")
_G["AtlasLootDefaultFrameSearchBox"].Middle:SetTexture("")
_G["AtlasLootDefaultFrameSearchBox"].Left:SetAtlas("common-search-border-left")
_G["AtlasLootDefaultFrameSearchBox"].Right:SetAtlas("common-search-border-right")
_G["AtlasLootDefaultFrameSearchBox"].Middle:SetAtlas("common-search-border-middle")
end
AtlasLootDefaultFrame_Options:SetNormalTexture("Interface/AchievementFrame/UI-Achievement-Category-Background")
AtlasLootDefaultFrame_Options:SetHeight(24)
AtlasLootDefaultFrame_Options:SetPushedTexture("Interface/AchievementFrame/UI-Achievement-Category-Background")
AtlasLootDefaultFrame_Options:SetHeight(24)
_G["AtlasLootDefaultFrameSearchBox"].Left:SetHeight(skin.searchH)
_G["AtlasLootDefaultFrameSearchBox"].Right:SetHeight(skin.searchH)
_G["AtlasLootDefaultFrameSearchBox"].Middle:SetHeight(skin.searchH)
_G["AtlasLootDefaultFrameSearchButton"]:ClearAllPoints()
_G["AtlasLootDefaultFrameSearchButton"]:SetPoint("LEFT","AtlasLootDefaultFrameSearchBox","RIGHT",skin.searchP[1],skin.searchP[2])
local frame = {"RightEdge","LeftEdge","BottomEdge","TopEdge","BottomRightCorner","BottomLeftCorner","TopRightCorner","TopLeftCorner"}
if skin.showFrame then
for _, frame in ipairs(frame) do
_G["AtlasLootDefaultFrameNineSlice"][frame]:Show()
end
_G["AtlasLootDefaultFramePortrait"]:Show()
_G["AtlasLootDefaultFrameBg"]:Show()
_G["AtlasLootDefaultFrame"].TitleBg:Show()
_G["AtlasLootDefaultFrameTopTileStreaks"]:Show()
_G["AtlasLootDefaultFrame"]:SetBackdrop(nil)
else
for _, frame in ipairs(frame) do
_G["AtlasLootDefaultFrameNineSlice"][frame]:Hide()
end
_G["AtlasLootDefaultFramePortrait"]:Hide()
_G["AtlasLootDefaultFrameBg"]:Hide()
_G["AtlasLootDefaultFrame"].TitleBg:Hide()
_G["AtlasLootDefaultFrameTopTileStreaks"]:Hide()
_G["AtlasLootDefaultFrame"]:SetBackdrop({
bgFile = skin.DefaultFrame.bg, tile = skin.DefaultFrame.tile, tileSize = 16,
edgeFile = skin.DefaultFrame.edge, edgeSize = skin.edgeSize,
insets = { left = skin.insets[1], right = skin.insets[2], top = skin.insets[3], bottom = skin.insets[4] },
})
_G["AtlasLootDefaultFrame"]:SetBackdropColor(skin.DefaultFrame.bgColor[1], skin.DefaultFrame.bgColor[2], skin.DefaultFrame.bgColor[3], skin.DefaultFrame.bgColor[4])
_G["AtlasLootDefaultFrame"]:SetBackdropBorderColor(skin.DefaultFrame.edgeColor[1], skin.DefaultFrame.edgeColor[2], skin.DefaultFrame.edgeColor[3], skin.DefaultFrame.edgeColor[4])
end
local function SetButtons(path)
_G[path]:SetNormalTexture("Interface/AchievementFrame/UI-Achievement-Category-Background")
_G[path]:SetHeight(24)
_G[path]:SetPushedTexture("Interface/AchievementFrame/UI-Achievement-Category-Background")
_G[path]:SetHeight(24)
local tex = _G[path]:GetNormalTexture();
tex:SetTexCoord(0, 0.6640625, 0, 0.8);
tex:SetHeight(32)
local tex2 = _G[path]:GetPushedTexture();
tex2:SetTexCoord(0, 0.6640625, 0, 0.8);
tex2:SetHeight(32)
if _G[path].template and _G[path].template == "FilterDropDownMenuTemplate" then
local tex, tex2, tex3, tex4
if type(skin.btTex) == "table" then
tex, tex2, tex3, tex4 = unpack(skin.btTex)
else
tex = skin.btTex
end
_G[path.."TopLeft"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."TopRight"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."BottomLeft"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."BottomRight"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."TopMiddle"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."MiddleLeft"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."MiddleRight"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."BottomMiddle"]:SetTexture(tex, tex2, tex3, tex4)
_G[path.."MiddleMiddle"]:SetTexture(tex, tex2, tex3, tex4)
end
end
for _, v in pairs(buttons) do
SetButtons(v)
end
elseif style == "old" then
AtlasLootDefaultFrame_LootBackground:SetBackdrop({ bgFile = "" });
AtlasLootDefaultFrame_LootBackground:SetBackdropColor(0, 0, 0.5, 0.5);
AtlasLootDefaultFrame:SetBackdrop({ bgFile = "Interface/DialogFrame/UI-DialogBox-Background",
edgeFile = "Interface/DialogFrame/UI-DialogBox-Border",
edgeSize = 32,
insets = { left = 11, right = 12, top = 12, bottom = 11 } });
AtlasLootDefaultFrame:SetBackdropColor(1, 1, 1, 1)
AtlasLootDefaultFrame:SetBackdropBorderColor(1, 1, 1, 1)
AtlasLootDefaultFrameHeader:SetTexture("Interface/DialogFrame/UI-DialogBox-Header")
AtlasLootDefaultFrameHeader:SetTexCoord(0, 1, 0, 1)
AtlasLootDefaultFrameHeader:SetWidth(425)
AtlasLootDefaultFrameHeader:SetHeight(64)
AtlasLootDefaultFrameHeader:SetPoint("TOP", AtlasLootDefaultFrame, "TOP", 0, 12)
AtlasLootDefaultFrame_Options:SetNormalTexture("Interface/Buttons/UI-Panel-Button-Up")
AtlasLootDefaultFrame_Options:SetHeight(20)
AtlasLootDefaultFrame_Options:SetPushedTexture("Interface/Buttons/UI-Panel-Button-Down")
AtlasLootDefaultFrame_Options:SetHeight(20)
local function SetButtons(path)
_G[path]:SetNormalTexture("Interface/Buttons/UI-Panel-Button-Up")
_G[path]:SetHeight(20)
_G[path]:SetPushedTexture("Interface/Buttons/UI-Panel-Button-Down")
_G[path]:SetHeight(20)
local tex = _G[path]:GetNormalTexture();
tex:SetTexCoord(0, 0.625, 0, 0.6875);
tex:SetHeight(20)
local tex2 = _G[path]:GetPushedTexture();
tex2:SetTexCoord(0, 0.625, 0, 0.6875);
tex2:SetHeight(20)
end
for _, v in pairs(buttons) do
SetButtons(v)
end
end
end
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
+4 -8
View File
@@ -44,17 +44,14 @@ if AL then
AL["Choose Table ..."] = "请选择……";
AL["Unknown"] = "未知";
AL["Add to QuickLooks:"] = "添加到快捷浏览";
AL["Assign this loot table\n to QuickLook"] = "分配此物品表\n至快捷浏览";
AL["Assign this loot table\n to Favorite"] = "分配此物品表\n至快捷浏览";
AL["Query Server"] = "查询物品";
AL["Reset Frames"] = "重置框体";
AL["Reset Wishlist"] = "重置需求表";
AL["Reset Quicklooks"] = "重置快速访问";
AL["Reset Favorites"] = "重置快速访问";
AL["Select a Loot Table..."] = "选择掉落表";
AL["OR"] = "";
AL["FuBar Options"] = "FuBar选项";
AL["Attach to Minimap"] = "附着在小地图";
AL["Hide FuBar Plugin"] = "隐藏FuBar插件";
AL["Show FuBar Plugin"] = "显示FuBar插件";
AL["Position:"] = "位置:";
AL["Left"] = "";
AL["Center"] = "";
@@ -99,7 +96,7 @@ if AL then
AL["Treat Crafted Items:"] = "交易技能呈现方式:";
AL["As Crafting Spells"] = "技能";
AL["As Items"] = "制成品";
AL["Loot Browser Style:"] = "物品掉落表呈现方式:";
AL["Change AtlasLoot Skin:"] = "物品掉落表呈现方式:";
AL["New Style"] = "新样式";
AL["Classic Style"] = "传统样式";
@@ -115,7 +112,7 @@ if AL then
AL["Load Modules"] = "载入所有数据";
AL["Options"] = "设置";
AL["PvP Rewards"] = "PvP奖励";
AL["QuickLook"] = "快捷浏览";
AL["Favorite"] = "快捷浏览";
AL["World Events"] = "世界事件";
--AtlasLoot Panel - Search
@@ -1426,7 +1423,6 @@ if AL then
AL["AtlasLoot Help"] = "AtlasLoot帮助";
AL["For further help, see our website and forums: "] = "要获得更多的帮助,请访问我们的网站和论坛:";
AL["How to open the standalone Loot Browser:"] = "单独打开掉落浏览器的方法:";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "如果你启用了AtlasLootFu,点击小地图按钮,或者由类似Titan或者FuBar的插件生成的按钮。再或者你可以在聊天框里输入“/al”";
AL["How to view an 'unsafe' item:"] = "查看“不安全”的物品的方法:";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "带红框的物品为“不安全物品”,意为自从上次打补丁或者服务器重启以来你没在游戏内见过该物品。你可以通过右击该物品或者点击页面下方的“向服务器查询”按钮来向服务器请求查询。";
AL["How to view an item in the Dressing Room:"] = "在试衣间查看物品的方法:";
+4 -8
View File
@@ -31,17 +31,14 @@ if AL then
AL["Choose Table ..."] = "Verzeichnis wählen ...";
AL["Unknown"] = "Unbekannt";
AL["Add to QuickLooks:"] = "Lesezeichen hinzufügen";
AL["Assign this loot table\n to QuickLook"] = "Dieses Beuteverzeichnis dem\n Lesezeichen hinzufügen";
AL["Assign this loot table\n to Favorite"] = "Dieses Beuteverzeichnis dem\n Lesezeichen hinzufügen";
AL["Query Server"] = "Serverabfrage";
AL["Reset Frames"] = "Fenster zurücksetzen";
AL["Reset Wishlist"] = "Wunschzettel zurücksetzen";
AL["Reset Quicklooks"] = "Lesezeichen zurücksetzen";
AL["Reset Favorites"] = "Lesezeichen zurücksetzen";
AL["Select a Loot Table..."] = "Wähle ein Beuteverzeichnis ...";
AL["OR"] = "ODER";
AL["FuBar Options"] = "FuBar-Optionen";
AL["Attach to Minimap"] = "An der Minimap anbringen";
AL["Hide FuBar Plugin"] = "FuBar Plugin verstecken";
AL["Show FuBar Plugin"] = "FuBar Plugin anzeigen";
-- AL["Position:"] = "Position:";
AL["Left"] = "Links";
AL["Center"] = "Mitte";
@@ -86,7 +83,7 @@ if AL then
AL["Treat Crafted Items:"] = "Herstellbare Gegenstände behandeln";
AL["As Crafting Spells"] = "als Zauber";
AL["As Items"] = "als Gegenstände";
AL["Loot Browser Style:"] = "AtlasLoot Design:";
AL["Change AtlasLoot Skin:"] = "AtlasLoot Design:";
AL["New Style"] = "Modernes Design";
AL["Classic Style"] = "Klassisches Design";
@@ -102,7 +99,7 @@ if AL then
AL["Load Modules"] = "Module laden";
AL["Options"] = "Optionen";
AL["PvP Rewards"] = "PvP Belohnungen";
AL["QuickLook"] = "Lesezeichen";
AL["Favorite"] = "Lesezeichen";
AL["World Events"] = "Weltevents";
-- AtlasLoot Panel - Search
@@ -1413,7 +1410,6 @@ if AL then
AL["AtlasLoot Help"] = "AtlasLoot Hilfe";
AL["For further help, see our website and forums: "] = "Bitte besuchen Sie für weitere Hilfe die Webseite und das Forum: ";
AL["How to open the standalone Loot Browser:"] = "Eigenständigen Beute-Browser öffnen";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "Sollte AtlasLootFu aktiviert sein, klicken Sie einfach den Minimap Button oder den Button in einem installierten Mod wie Titan oder FuBar. Andernfalls können Sie auch einfach '/al' im Chatfenster eingeben.";
AL["How to view an 'unsafe' item:"] = "'Unsicheren' Gegenstand ansehen:";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "Die Symbole unsicherer Gegenstände sind rot umrandet und gekennzeichnet, da sie seit dem letzten Patch oder Serverneustart nicht gesehen wurden. Rechtsklicken Sie den Gegenstand und bewegen dann die Maus wieder über selbigen oder nutzen Sie den 'Serverabfrage' Button am unteren Ende der Beute-Seite.";
AL["How to view an item in the Dressing Room:"] = "Einen Gegenstand in der Anprobe anzeigen";
File diff suppressed because it is too large Load Diff
+4 -8
View File
@@ -41,17 +41,14 @@ if AL then
AL["Choose Table ..."] = "Elige una tabla...";
AL["Unknown"] = "Desconocido";
AL["Add to QuickLooks:"] = "Añade a VistaRápida";
AL["Assign this loot table\n to QuickLook"] = "Asignar esta tabla\n a VistaRapida";
AL["Assign this loot table\n to Favorite"] = "Asignar esta tabla\n a VistaRapida";
AL["Query Server"] = "Pregun. Servidor";
AL["Reset Frames"] = "Restaurar marcos";
AL["Reset Wishlist"] = "Res. ListaDeseada";
AL["Reset Quicklooks"] = "Res. BotínRápido";
AL["Reset Favorites"] = "Res. BotínRápido";
AL["Select a Loot Table..."] = "Elige una tabla de Botín...";
AL["OR"] = "O";
AL["FuBar Options"] = "Opciones FuBar";
AL["Attach to Minimap"] = "Sujetar al minimapa";
AL["Hide FuBar Plugin"] = "Esconder FuBar Plugin";
AL["Show FuBar Plugin"] = "Mostrar FuBar Plugin";
AL["Position:"] = "Posición:";
AL["Left"] = "Izquierda";
AL["Center"] = "Centro";
@@ -96,7 +93,7 @@ if AL then
AL["Treat Crafted Items:"] = "Tratar objetos creados";
AL["As Crafting Spells"] = "Como hechizos creados";
AL["As Items"] = "Como objetos";
AL["Loot Browser Style:"] = "Estilo del buscador:";
AL["Change AtlasLoot Skin:"] = "Estilo del buscador:";
AL["New Style"] = "Estilo nuevo";
AL["Classic Style"] = "Estilo clásico";
@@ -112,7 +109,7 @@ if AL then
AL["Load Modules"] = "Cargar módulos";
AL["Options"] = "Opciones";
AL["PvP Rewards"] = "Recompensas JcJ";
AL["QuickLook"] = "VistaRapida"
AL["Favorite"] = "VistaRapida"
AL["World Events"] = "Eventos mundo";
-- AtlasLoot Panel - Search
@@ -1346,7 +1343,6 @@ if AL then
AL["AtlasLoot Help"] = "Ayuda Atlasloot";
AL["For further help, see our website and forums: "] = "Para mas ayuda consulta nuestra web y foros: ";
AL["How to open the standalone Loot Browser:"] = "Como abrir el buscador de objetos estandar:";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "Si tienes AtlasLootFu activado, haz click en el botón del minimapa, o alternativamente en algún botón generado por otro addon como Titan o FuBar. Finalmente, puedes escribir '/al' en la ventana del chat.";
AL["How to view an 'unsafe' item:"] = "Como ver un objeto 'no seguro':";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "Los objetos no seguros tienen un borde rojo alrededor de su icono y son marcados porque no has visto dicho objeto en el juego desde el último parche o reinicio de servidor. Haz click-dcho en el objeto y después mueve el cursor por encima del icono o haz click en 'pregunta al servidor' en el pie de la ventana de botín.";
AL["How to view an item in the Dressing Room:"] = "Como ver un objeto en la ventana del provador:";
+4 -8
View File
@@ -43,17 +43,14 @@ if AL then
AL["Choose Table ..."] = "Choisissez une liste...";
AL["Unknown"] = "Inconnu";
AL["Add to QuickLooks:"] = "Ajouter à QuickLook :";
AL["Assign this loot table\n to QuickLook"] = "Assigner cette table de loot\n à QuickLook";
AL["Assign this loot table\n to Favorite"] = "Assigner cette table de loot\n à QuickLook";
AL["Query Server"] = "Interroger le serveur";
AL["Reset Frames"] = "Réinitialiser les frames";
AL["Reset Wishlist"] = "Réinitialiser la liste de souhaits";
AL["Reset Quicklooks"] = "Réinitialiser Quicklooks";
AL["Reset Favorites"] = "Réinitialiser Quicklooks";
AL["Select a Loot Table..."] = "Sélectionner une table de loot...";
AL["OR"] = "OU";
AL["FuBar Options"] = "Options de FuBar";
AL["Attach to Minimap"] = "Joindre à la mini-carte";
AL["Hide FuBar Plugin"] = "Cacher le plugin FuBar";
AL["Show FuBar Plugin"] = "Afficher le plugin FuBar";
AL["Position:"] = "Position :";
AL["Left"] = "Gauche";
AL["Center"] = "Centre";
@@ -98,7 +95,7 @@ if AL then
AL["Treat Crafted Items:"] = "Traiter les objets fabriqués :";
AL["As Crafting Spells"] = "comme des sorts";
AL["As Items"] = "comme des objets";
AL["Loot Browser Style:"] = "Style du navigateur de loot :";
AL["Change AtlasLoot Skin:"] = "Style du navigateur de loot :";
AL["New Style"] = "Nouveau style";
AL["Classic Style"] = "Style classique";
@@ -114,7 +111,7 @@ if AL then
AL["Load Modules"] = "Charger les modules";
--AL["Options"] = true;
AL["PvP Rewards"] = "Récompenses JcJ";
--AL["QuickLook"] = true;
--AL["Favorite"] = true;
--AL["World Events"] = true;
-- AtlasLoot Panel - Search
@@ -1413,7 +1410,6 @@ if AL then
AL["AtlasLoot Help"] = "Aide AtlasLoot";
AL["For further help, see our website and forums: "] = "Pour de l'aide complémentaire, visitez notre site web et nos forums : ";
AL["How to open the standalone Loot Browser:"] = "Comment ouvrir le navigateur de butin indépendamment :";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "Si AtlasLootFu est présent et installé, cliquez sur le bouton de la mini-carte ou alors sur le bouton généré par des addons tels que Titan ou Fubar. Vous pouvez également taper la commande '/al' dans la saisie de la fenêtre de discussion.";
AL["How to view an 'unsafe' item:"] = "Comment voir un objet 'peu sûr' :";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "Les objets peu sûrs ont une bordure rouge autour d'une icône d'un point d'interrogation car vous n'avez pas vu l'objet depuis le dernier patch ou le dernier redémarrage du serveur. Faites un Clic-Droit sur l'objet, puis survolez à nouveau l'objet avec votre souris, ou cliquez sur le bouton 'Requête serveur' en bas de la page du butin.";
AL["How to view an item in the Dressing Room:"] = "Comment voir un objet dans la cabine d'essayage :";
+4 -11
View File
@@ -10,9 +10,6 @@ The AL["text"] = true; shortcut can ONLY be used for English (the root translati
-- Last Updated: 6/28/2007
-- missing some BabbleBoss names.
--Table holding all loot tables is initialised here as it loads early
--AtlasLoot_Data = {};
--Create the library instance
local AceLocale = LibStub:GetLibrary("AceLocale-3.0");
@@ -46,17 +43,14 @@ if AL then
AL["Choose Table ..."] = "테이블 선택 ...";
-- AL["Unknown"] = true;
-- AL["Add to QuickLooks:"] = true;
-- AL["Assign this loot table\n to QuickLook"] = true;
-- AL["Assign this loot table\n to Favorite"] = true;
-- AL["Query Server"] = true;
-- AL["Reset Frames"] = true;
-- AL["Reset Wishlist"] = true;
-- AL["Reset Quicklooks"] = true;
-- AL["Reset Favorites"] = true;
-- AL["Select a Loot Table..."] = true;
-- AL["OR"] = true;
-- AL["FuBar Options"] = true;
--- AL["Attach to Minimap"] = true;
-- AL["Hide FuBar Plugin"] = true;
-- AL["Show FuBar Plugin"] = true;
-- AL["Position:"] = true;
-- AL["Left"] = true;
-- AL["Center"] = true;
@@ -101,7 +95,7 @@ if AL then
-- AL["Treat Crafted Items:"] = true;
-- AL["As Crafting Spells"] = true;
-- AL["As Items"] = true;
-- AL["Loot Browser Style:"] = true;
-- AL["Change AtlasLoot Skin:"] = true;
-- AL["New Style"] = true;
-- AL["Classic Style"] = true;
@@ -117,7 +111,7 @@ if AL then
-- AL["Load Modules"] = true;
AL["Options"] = "설정";
AL["PvP Rewards"] = "PvP 보상";
-- AL["QuickLook"] = true;
-- AL["Favorite"] = true;
-- AL["World Events"] = true;
-- AtlasLoot Panel - Search
@@ -1272,7 +1266,6 @@ if AL then
-- AL["AtlasLoot Help"] = true;
-- AL["For further help, see our website and forums: "] = true;
-- AL["How to open the standalone Loot Browser:"] = true;
-- AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = true;
-- AL["How to view an 'unsafe' item:"] = true;
-- AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = true;
-- AL["How to view an item in the Dressing Room:"] = true;
+2 -6
View File
@@ -54,7 +54,7 @@ if AL then
AL["Close Menu"] = "Cerrar menú";
AL["Unknown"] = "Desconocido";
AL["Skill Required:"] = "Habilidad necesaria";
AL["QuickLook"] = "VistaRápida";
AL["Favorite"] = "VistaRápida";
AL["Add to QuickLooks:"] = "Añade a VistaRápida";
AL["Rating:"] = "Indice:"; --Shorthand for 'Required Rating' for the personal/team ratings in Arena S4
AL["Query Server"] = "Pregun. Servidor";
@@ -69,14 +69,11 @@ if AL then
AL["WotLK Factions"] = "Facciones WotLK";
AL["Reset Frames"] = "Restaurar marcos";
AL["Reset Wishlist"] = "Res. ListaDeseada";
AL["Reset Quicklooks"] = "Res. BotínRápido";
AL["Reset Favorites"] = "Res. BotínRápido";
AL["Select a Loot Table..."] = "Elige una tabla de Botín...";
AL["OR"] = "O";
--AL["Wrath of the Lich King"] = true,
AL["FuBar Options"] = "Opciones FuBar";
AL["Attach to Minimap"] = "Sujetar al minimapa";
AL["Hide FuBar Plugin"] = "Esconder FuBar Plugin";
AL["Show FuBar Plugin"] = "Mostrar FuBar Plugin";
AL["Position:"] = "Posición:";
AL["Left"] = "Izquierda";
AL["Center"] = "Centro";
@@ -1223,7 +1220,6 @@ if AL then
AL["AtlasLoot Help"] = "Ayuda Atlasloot";
AL["For further help, see our website and forums: "] = "Para mas ayuda consulta nuestra web y foros: ";
AL["How to open the standalone Loot Browser:"] = "Como abrir el buscador de botín estandar:";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "Si tienes AtlasLootFu activado, haz click en el botón del minimapa, o alternativamente en algún botón generado por otro addon como Titan o FuBar. Finalmente, puedes escribir '/al' en la ventana del chat.";
AL["How to view an 'unsafe' item:"] = "Como ver un objeto 'no seguro':";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "Los objetos no seguros tienen un borde rojo alrededor de su icono y son marcados porque no has visto dicho objeto en el juego desde el último parche o reinicio de servidor. Haz click-dcho en el objeto y después mueve el cursor por encima del icono o haz click en 'pregunta al servidor' en el pie de la ventana de botín.";
AL["How to view an item in the Dressing Room:"] = "Como ver un objeto en la ventana del provador:";
+4 -10
View File
@@ -7,8 +7,6 @@ back to the English translation.
The AL["text"] = true; shortcut can ONLY be used for English (the root translation).
]]
--Table holding all loot tables is initialised here as it loads early
AtlasLoot_Data = {};
--Create the library instance
local AceLocale = LibStub:GetLibrary("AceLocale-3.0");
@@ -43,17 +41,14 @@ if AL then
AL["Choose Table ..."] = "Выбор таблицы";
AL["Unknown"] = "Неизвестно";
AL["Add to QuickLooks:"] = "В БыстрыйОсмотр:";
AL["Assign this loot table\n to QuickLook"] = "Определить эту таблицу в\n в БыстрыйОсмотр";
AL["Assign this loot table\n to Favorite"] = "Определить эту таблицу в\n в БыстрыйОсмотр";
AL["Query Server"] = "Запрос с серв.";
AL["Reset Frames"] = "Сброс фреймов";
AL["Reset Wishlist"] = "Сброс списка нужного";
AL["Reset Quicklooks"] = "Сборс БО";
AL["Reset Favorites"] = "Сборс БО";
AL["Select a Loot Table..."] = "Выберите таблицу добычи";
AL["OR"] = "или";
AL["FuBar Options"] = "Опции FuBarа";
AL["Attach to Minimap"] = "Закрепить у мини-карты";
AL["Hide FuBar Plugin"] = "Скрыть плагин FuBarа";
AL["Show FuBar Plugin"] = "Показ плагин FuBarа";
AL["Position:"] = "Позицыя";
AL["Left"] = "Слево";
AL["Center"] = "По центру";
@@ -98,7 +93,7 @@ if AL then
AL["Treat Crafted Items:"] = "Обзор изготов. предметов:";
AL["As Crafting Spells"] = "Как используемое заклинание";
AL["As Items"] = "Как предмет";
AL["Loot Browser Style:"] = "Стиль просмотра добычи:";
AL["Change AtlasLoot Skin:"] = "Стиль просмотра добычи:";
AL["New Style"] = "Новый стиль";
AL["Classic Style"] = "Класический стиль";
@@ -114,7 +109,7 @@ if AL then
AL["Load Modules"] = "Загр. модулей";
AL["Options"] = "Опции";
AL["PvP Rewards"] = "PvP награды";
AL["QuickLook"] = "БыстрыйОсмотр";
AL["Favorite"] = "БыстрыйОсмотр";
AL["World Events"] = "Мировые события";
-- AtlasLoot Panel - Search
@@ -1425,7 +1420,6 @@ if AL then
AL["AtlasLoot Help"] = "Справка AtlasLoot";
AL["For further help, see our website and forums: "] = "Для получения дополнительной справки, см. наш сайт и форумы: ";
AL["How to open the standalone Loot Browser:"] = "Как открыть отдельный обозреватель добычи:";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "Если у вас есть AtlasLootFu и он включен, нажмите на кнопку у мини карты, или же используйте панели типа Titan или FuBar. В конце концов, вы можете набрать в чат '/ Al'.";
AL["How to view an 'unsafe' item:"] = "Как просмотреть 'небезопасный' предмет:";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "Небезопасные предметы выделены красной рамкой вокруг значка, потому что вы не видели этот предмет после последнего патча или перезагрузки сервера. Щелкните правой кнопкой мыши по предмету, а затем нажмите кнопку 'Запрос с серв.', расположенную в нижней части страницы добычи.";
AL["How to view an item in the Dressing Room:"] = "Как просмотреть предмет в Примерочной";
+4 -11
View File
@@ -8,9 +8,6 @@ back to the English translation.
The AL["text"] = true; shortcut can ONLY be used for English (the root translation).
]]
--Table holding all loot tables is initialised here as it loads early
--AtlasLoot_Data = {};
--Create the library instance
local AceLocale = LibStub:GetLibrary("AceLocale-3.0");
@@ -44,17 +41,14 @@ if AL then
AL["Choose Table ..."] = "選擇表格...";
AL["Unknown"] = "未知";
AL["Add to QuickLooks:"] = "新增至快速瀏覽";
AL["Assign this loot table\n to QuickLook"] = "分配此物品表\n 至快速瀏覽";
AL["Assign this loot table\n to Favorite"] = "分配此物品表\n 至快速瀏覽";
AL["Query Server"] = "向伺服器查詢";
AL["Reset Frames"] = "重設框架";
AL["Reset Wishlist"] = "重設願望清單";
AL["Reset Quicklooks"] = "重設快速瀏覽";
AL["Reset Favorites"] = "重設快速瀏覽";
AL["Select a Loot Table..."] = "選擇一個物品表";
AL["OR"] = "";
AL["FuBar Options"] = "FuBar 選項";
AL["Attach to Minimap"] = "依附於小地圖上";
AL["Hide FuBar Plugin"] = "隱藏 FuBar 插件";
AL["Show FuBar Plugin"] = "顯示 FuBar 插件";
AL["Position:"] = "位置";
AL["Left"] = "";
AL["Center"] = "";
@@ -99,7 +93,7 @@ if AL then
AL["Treat Crafted Items:"] = "交易技能呈現方式:";
AL["As Crafting Spells"] = "技能";
AL["As Items"] = "製成品";
AL["Loot Browser Style:"] = "物品掉落表呈現方式:";
AL["Change AtlasLoot Skin:"] = "物品掉落表呈現方式:";
AL["New Style"] = "新樣式";
AL["Classic Style"] = "傳統樣式";
@@ -115,7 +109,7 @@ if AL then
AL["Load Modules"] = "載入模組";
AL["Options"] = "選項";
AL["PvP Rewards"] = "PvP 榮譽獎勵";
AL["QuickLook"] = "快速瀏覽";
AL["Favorite"] = "快速瀏覽";
AL["World Events"] = "世界事件";
--AtlasLoot Panel - Search
@@ -1426,7 +1420,6 @@ if AL then
AL["AtlasLoot Help"] = "AtlasLoot 說明";
AL["For further help, see our website and forums: "] = "進階說明請參閱網站及論壇: \n";
AL["How to open the standalone Loot Browser:"] = "如何開啟獨立的物品掉落檢視器: ";
AL["If you have AtlasLootFu enabled, click the minimap button, or alternatively a button generated by a mod like Titan or FuBar. Finally, you can type '/al' in the chat window."] = "點選小地圖旁的 AtlasLoot / Titan / FuBar 按鈕。或在聊天視窗輸入 '/al' 以開啟物品掉落檢視器。";
AL["How to view an 'unsafe' item:"] = "如何檢視不安全物品: ";
AL["Unsafe items have a red border around the icon and are marked because you have not seen the item since the last patch or server restart. Right-click the item, then move your mouse back over the item or click the 'Query Server' button at the bottom of the loot page."] = "不安全的物品其圖示周圍有紅色外筐,用以標示從上次的重大更新或伺服器重新啟動後你尚未檢視過的物品。在物品圖示右鍵點擊,然後將滑鼠移開,再重新移回圖示上方,或是按下 '從伺服器查詢' 按鈕。";
AL["How to view an item in the Dressing Room:"] = "如何在試衣間檢視物品: ";
@@ -0,0 +1,76 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
AtlasLoot_SubMenus["CollectionsAscensionCLASSIC"] = {
{ "", "Convenience" },
{ "", "Mounts" },
{ "", "Pets" },
{ "", "Toys" },
{ "", "Seasonal" },
{ "", "Consumable" },
{ "", "Uncategorized" },
{ "Weapons", "", {
{ "", "Axe1H" },
{ "", "Axe2H" },
{ "", "Sword1H" },
{ "", "Sword2H" },
{ "", "Mace1H" },
{ "", "Mace2H" },
{ "", "Dagger" },
{ "", "Fist" },
{ "", "Shield" },
{ "", "Polearm" },
{ "", "Bow" },
{ "", "Gun" },
{ "", "Crossbow" },
{ "", "Thrown" },
{ "", "Wand" },
{ "", "Staff" },
{ "", "FishingPole" },
{ "", "OffHand" },
} },
{ "Armor", "", {
{ "", "Head" },
{ "", "Shoulder" },
{ "", "Chest" },
{ "", "Waist" },
{ "", "Legs" },
{ "", "Feet" },
{ "", "Wrist" },
{ "", "Hands" },
{ "", "Back" },
{ "", "Cloth" },
{ "", "Leather" },
{ "", "Mail" },
{ "", "Plate" },
{ "", "Sets" },
} },
{ "Miscellaneous", "", {
{ "", "Shirt" },
{ "", "Tabard" },
{ "", "Backpack" },
{ "", "Illusion" },
} },
{ "Spells", "", {
{ "", "Visual" },
{ "", "Effect" },
{ "", "Incarnation" },
} },
{ "TamedPets", "", {
{ "", "Whistle" },
{ "", "SummonStone" },
{ "", "Vellum" },
{ "", "Warhorn" },
{ "", "Lodestone" },
} },
}
AtlasLoot_SubMenus["CollectionsAscensionTBC"] = AtlasLoot_SubMenus["CollectionsAscensionCLASSIC"]
AtlasLoot_SubMenus["CollectionsAscensionWRATH"] = AtlasLoot_SubMenus["CollectionsAscensionCLASSIC"]
+34 -62
View File
@@ -1,71 +1,43 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
AtlasLoot_SubMenus["CraftingCLASSIC"] = {
Module = "AtlasLootCrafting";
{"Normal:", "", "Header"};
{ "", "AlchemyCLASSIC"};
{ "", "SmithingCLASSIC"};
{ "", "EnchantingCLASSIC"};
{ "", "EngineeringCLASSIC"};
{ "", "LeatherworkingCLASSIC"};
{ "", "TailoringCLASSIC"};
{ "", "MiningCLASSIC"};
{ "", "CookingCLASSIC"};
{ "", "FirstAidCLASSIC"};
{"High Risk:", "", "Header"};
{ "", "AlchemyHighRiskCLASSIC"};
{ "", "SmithingHighRiskCLASSIC"};
{ "", "EnchantingHighRiskCLASSIC"};
{ "", "EngineeringHighRiskCLASSIC"};
{ "", "LeatherworkingHighRiskCLASSIC"};
{ "", "TailoringHighRiskCLASSIC"};
{ "", "CookingHighRiskCLASSIC"};
Module = "AtlasLootCraftingOriginalWoW",
{ "", "AlchemyCLASSIC"},
{ "", "SmithingCLASSIC"},
{ "", "EnchantingCLASSIC"},
{ "", "EngineeringCLASSIC"},
{ "", "LeatherworkingCLASSIC"},
{ "", "TailoringCLASSIC"},
{ "", "MiningCLASSIC"},
{ "", "CookingCLASSIC"},
{ "", "FirstAidCLASSIC"},
};
AtlasLoot_SubMenus["CraftingTBC"] = {
Module = "AtlasLootCrafting";
{"Normal:", "", "Header"};
{ "", "AlchemyTBC"};
{ "", "SmithingTBC"};
{ "", "EnchantingTBC"};
{ "", "EngineeringTBC"};
{ "", "JewelcraftingTBC"};
{ "", "LeatherworkingTBC"};
{ "", "TailoringTBC"};
{ "", "MiningTBC"};
{ "", "CookingTBC"};
{ "", "FirstAidTBC"};
{"High Risk:", "", "Header"};
{ "", "AlchemyHighRiskTBC"};
{ "", "SmithingHighRiskTBC"};
{ "", "EnchantingHighRiskTBC"};
{ "", "EngineeringHighRiskTBC"};
{ "", "JewelcraftingHighRiskTBC"};
{ "", "LeatherworkingHighRiskTBC"};
{ "", "TailoringHighRiskTBC"};
{ "", "CookingHighRiskTBC"};
Module = "AtlasLootCraftingBurningCrusade",
{ "", "AlchemyTBC"},
{ "", "SmithingTBC"},
{ "", "EnchantingTBC"},
{ "", "EngineeringTBC"},
{ "", "JewelcraftingTBC"},
{ "", "LeatherworkingTBC"},
{ "", "TailoringTBC"},
{ "", "MiningTBC"},
{ "", "CookingTBC"},
{ "", "FirstAidTBC"},
};
AtlasLoot_SubMenus["CraftingWRATH"] = {
Module = "AtlasLootCrafting";
{"Normal:", "", "Header"};
{ "", "AlchemyWRATH"};
{ "", "SmithingWRATH"};
{ "", "EnchantingWRATH"};
{ "", "EngineeringWRATH"};
{ "", "JewelcraftingWRATH"};
{ "", "LeatherworkingWRATH"};
{ "", "TailoringWRATH"};
{ "", "Inscription"};
{ "", "MiningWRATH"};
{ "", "CookingWRATH"};
{ "", "FirstAidWRATH"};
{"High Risk:", "", "Header"};
--[[ { "", "AlchemyHighRiskWRATH"};
{ "", "SmithingHighRiskWRATH"};
{ "", "EnchantingHighRiskWRATH"};
{ "", "EngineeringHighRiskWRATH"};
{ "", "JewelcraftingHighRiskWRATH"};
{ "", "LeatherworkingHighRiskWRATH"};
{ "", "TailoringHighRiskWRATH"}; ]]
Module = "AtlasLootCraftingWotLK",
{ "", "AlchemyWRATH"},
{ "", "SmithingWRATH"},
{ "", "EnchantingWRATH"},
{ "", "EngineeringWRATH"},
{ "", "JewelcraftingWRATH"},
{ "", "LeatherworkingWRATH"},
{ "", "TailoringWRATH"},
{ "", "Inscription"},
{ "", "MiningWRATH"},
{ "", "CookingWRATH"},
{ "", "FirstAidWRATH"},
};
+98 -98
View File
@@ -1,109 +1,109 @@
--Invoke all libraries
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
--Dungeon and Raid Menus
AtlasLoot_SubMenus["Dungeons and RaidsCLASSIC"] = {
Module = "AtlasLootOriginalWoW";
SubMenu = "Dungeons and RaidsCLASSIC";
{ "Raids:", "OldKeys", "Header" };
{ "", "ZulGurub", "", "Zul'Gurub" };
{ "", "MoltenCore", "", "Molten Core" };
{ "", "Onyxia60", "", "Onyxias Hort" };
{ "", "BlackwingLair", "", "Blackwing Lair" };
{ "", "RuinsofAQ", "", "Ruinen von Ahn'Qiraj" };
{ "", "TempleofAQ", "", "Tempel von Ahn'Qiraj" };
{ "", "Naxxramas60", "", "Naxxramas" };
{ "", "WorldBossesCLASSIC","", "World Bosses" };
Module = "AtlasLootOriginalWoW",
SubMenu = "Dungeons and RaidsCLASSIC",
{ "Raids:", "OldKeys", "Header" },
{ "", "ZulGurub", "", "Zul'Gurub" },
{ "", "MoltenCore", "", "Molten Core" },
{ "", "Onyxia60", "", "Onyxias Hort" },
{ "", "BlackwingLair", "", "Blackwing Lair" },
{ "", "RuinsofAQ", "", "Ruinen von Ahn'Qiraj" },
{ "", "TempleofAQ", "", "Tempel von Ahn'Qiraj" },
{ "", "Naxxramas60", "", "Naxxramas" },
{ "", "WorldBossesCLASSIC","", "World Bosses" },
---- Dungeons -----
{ "Dungeons:", "OldKeys", "Header" };
{ "", "BlackfathomDeeps", "", "Blackfathom Deeps" };
{ "", "BlackrockDepths", "", "Blackrock Depths" };
{ "", "LowerBlackrock", "", "Lower Blackrock Spire" };
{ "", "UpperBlackrock", "", "Upper Blackrock Spire" };
{ "", "TheDeadmines", "", "The Deadmines" };
{ "", "DireMaulNorth", "", "Dire Maul (North)" };
{ "", "DireMaulEast", "", "Dire Maul (East)" };
{ "", "DireMaulWest", "", "Dire Maul (West)" };
{ "", "Gnomeregan", "", "Gnomeregan" };
{ "", "Maraudon", "", "Maraudon" };
{ "", "RagefireChasm", "", "Ragefire Chasm" };
{ "", "RazorfenDowns", "", "Razorfen Downs" };
{ "", "RazorfenKraul", "", "Razorfen Kraul" };
{ "", "Scarlet Monastery", "", "Scarlet Monastery" };
{ "", "Scholomance", "", "Scholomance" };
{ "", "ShadowfangKeep", "", "Shadowfang Keep" };
{ "", "TheStockade", "", "The Stockade" };
{ "", "Stratholme", "", "Stratholme" };
{ "", "SunkenTemple", "", "Sunken Temple" };
{ "", "Uldaman", "", "Uldaman" };
{ "", "WailingCaverns", "", "Wailing Caverns" };
{ "", "ZulFarrak", "", "Zul'Farrak" };
};
{ "Dungeons:", "OldKeys", "Header" },
{ "", "BlackfathomDeeps", "", "Blackfathom Deeps" },
{ "", "BlackrockDepths", "", "Blackrock Depths" },
{ "", "LowerBlackrock", "", "Lower Blackrock Spire" },
{ "", "UpperBlackrock", "", "Upper Blackrock Spire" },
{ "", "TheDeadmines", "", "The Deadmines" },
{ "", "DireMaulNorth", "", "Dire Maul (North)", "Dire Maul" },
{ "", "DireMaulEast", "", "Dire Maul (East)", "Dire Maul" },
{ "", "DireMaulWest", "", "Dire Maul (West)", "Dire Maul" },
{ "", "Gnomeregan", "", "Gnomeregan" },
{ "", "Maraudon", "", "Maraudon" },
{ "", "RagefireChasm", "", "Ragefire Chasm" },
{ "", "RazorfenDowns", "", "Razorfen Downs" },
{ "", "RazorfenKraul", "", "Razorfen Kraul" },
{ "", "Scarlet Monastery", "", "Scarlet Monastery" },
{ "", "Scholomance", "", "Scholomance" },
{ "", "ShadowfangKeep", "", "Shadowfang Keep" },
{ "", "TheStockade", "", "The Stockade" },
{ "", "Stratholme", "", "Stratholme" },
{ "", "SunkenTemple", "", "Sunken Temple" },
{ "", "Uldaman", "", "Uldaman" },
{ "", "WailingCaverns", "", "Wailing Caverns" },
{ "", "ZulFarrak", "", "Zul'Farrak" },
}
AtlasLoot_SubMenus["Dungeons and RaidsTBC"] = {
Module = "AtlasLootBurningCrusade";
SubMenu = "Dungeons and RaidsTBC";
{ "Raids:", "BCKeys", "Header" };
{ "", "Karazhan", "", "Karazhan" };
{ "", "GruulsLair", "", "Gruul's Lair" };
{ "", "HCMagtheridon", "", "Magtheridon's Lair" };
{ "", "CFRSerpentshrine", "", "Serpentshrine Cavern" };
{ "", "TKEye", "", "The Eye" };
{ "", "ZulAman", "", "Zul'Aman" };
{ "", "CoTHyjal", "", "Mount Hyjal" };
{ "", "BlackTemple", "", "Black Temple" };
{ "", "SunwellPlateau", "", "Sunwell Plateau" };
{ "", "WorldBossesTBC","", "World Bosses" };
Module = "AtlasLootBurningCrusade",
SubMenu = "Dungeons and RaidsTBC",
{ "Raids:", "BCKeys", "Header" },
{ "", "Karazhan", "", "Karazhan" },
{ "", "GruulsLair", "", "Gruul's Lair" },
{ "", "HCMagtheridon", "", "Magtheridon's Lair" },
{ "", "CFRSerpentshrine", "", "Serpentshrine Cavern" },
{ "", "TKEye", "", "The Eye" },
{ "", "ZulAman", "", "Zul'Aman" },
{ "", "CoTHyjal", "", "Mount Hyjal" },
{ "", "BlackTemple", "", "Black Temple" },
{ "", "SunwellPlateau", "", "Sunwell Plateau" },
{ "", "WorldBossesTBC","", "World Bosses" },
---- Dungeons -----
{ "Dungeons:", "BCKeys", "Header" };
{ "", "HCRamparts", "", "Hellfire Ramparts" };
{ "", "HCShatteredHalls", "", "The Shattered Halls" };
{ "", "HCFurnace", "", "The Blood Furnace" };
{ "", "TKBot", "", "The Botanica" };
{ "", "TKArc", "", "The Arcatraz" };
{ "", "TKMech", "", "The Mechanar" };
{ "", "AuchCrypts", "", "Auchenai Crypts" };
{ "", "AuchManaTombs", "", "Mana-Tombs" };
{ "", "AuchSethekk", "", "Sethekk Halls" };
{ "", "AuchShadowLab", "", "Shadow Labyrinth" };
{ "", "CoTOldHillsbrad", "", "Old Hillsbrad Foothills" };
{ "", "CoTBlackMorass", "", "The Black Morass" };
{ "", "CFRSlavePens", "", "The Slave Pens" };
{ "", "CFRSteamvault", "", "The Steamvault" };
{ "", "CFRUnderbog", "", "The Underbog" };
{ "", "MagistersTerrace", "", "Magisters' Terrace" };
};
{ "Dungeons:", "BCKeys", "Header" },
{ "", "HCRamparts", "", "Hellfire Ramparts" },
{ "", "HCShatteredHalls", "", "The Shattered Halls" },
{ "", "HCFurnace", "", "The Blood Furnace" },
{ "", "TKBot", "", "The Botanica" },
{ "", "TKArc", "", "The Arcatraz" },
{ "", "TKMech", "", "The Mechanar" },
{ "", "AuchCrypts", "", "Auchenai Crypts" },
{ "", "AuchManaTombs", "", "Mana-Tombs" },
{ "", "AuchSethekk", "", "Sethekk Halls" },
{ "", "AuchShadowLab", "", "Shadow Labyrinth" },
{ "", "CoTOldHillsbrad", "", "Old Hillsbrad Foothills" },
{ "", "CoTBlackMorass", "", "The Black Morass" },
{ "", "CFRSlavePens", "", "The Slave Pens" },
{ "", "CFRSteamvault", "", "The Steamvault" },
{ "", "CFRUnderbog", "", "The Underbog" },
{ "", "MagistersTerrace", "", "Magisters' Terrace" },
}
AtlasLoot_SubMenus["Dungeons and RaidsWRATH"] = {
Module = "AtlasLootWotLK";
SubMenu = "Dungeons and RaidsWRATH";
{ "Raids:", "WrathKeys", "Header" };
{ "", "Naxxramas80", "Naxxramas" };
{ "", "Sartharion", "Sartharion" };
{ "", "Malygos", "Malygos" };
{ "", "VaultofArchavon", "Vault of Archavon" };
{ "", "Ulduar", "Ulduar" };
{ "", "TrialoftheCrusader", "Trial of the Crusader" };
{ "", "TrialoftheCrusader2", "Trial of the Crusader" };
{ "", "Onyxia80", "Onyxia" };
{ "", "IcecrownCitadel", "Icecrown Citadel" };
{ "", "Halion", "Halion" };
Module = "AtlasLootWotLK",
SubMenu = "Dungeons and RaidsWRATH",
{ "Raids:", "WrathKeys", "Header" },
{ "", "Naxxramas80", "Naxxramas" },
{ "", "Sartharion", "Sartharion" },
{ "", "Malygos", "Malygos" },
{ "", "VaultofArchavon", "Vault of Archavon" },
{ "", "Ulduar", "Ulduar" },
{ "", "TrialoftheCrusader", "Trial of the Crusader" },
{ "", "TrialoftheCrusader2", "Trial of the Crusader" },
{ "", "Onyxia80", "Onyxia" },
{ "", "IcecrownCitadel", "Icecrown Citadel" },
{ "", "Halion", "Halion" },
---- Dungeons -----
{ "Dungeons:", "WrathKeys", "Header" };
{ "", "Ahnkahet", "Ahnkahet" };
{ "", "AzjolNerub", "AzjolNerub" };
{ "", "CoTStratholme", "The Culling of Stratholme" };
{ "", "DrakTharonKeep", "DrakTharon Keep" };
{ "", "ForgeofSouls", "Forge of Souls" };
{ "", "Gundrak", "Gundrak" };
{ "", "HallsofLightning", "Halls of Lightning" };
{ "", "HallsofReflection", "Halls of Reflection" };
{ "", "HallsofStone", "Halls of Stone" };
{ "", "TheNexus", "The Nexus" };
{ "", "TheOculus", "The Oculus" };
{ "", "PitofSaron", "Pit of Saron" };
{ "", "TrialoftheChampion", "Trial of the Champion" };
{ "", "UtgardeKeep", "Utgarde Keep" };
{ "", "UtgardePinnacle", "Utgarde Pinnacle" };
{ "", "TheVioletHold", "The Violet Hold" };
};
{ "Dungeons:", "WrathKeys", "Header" },
{ "", "Ahnkahet", "Ahnkahet" },
{ "", "AzjolNerub", "AzjolNerub" },
{ "", "CoTStratholme", "The Culling of Stratholme" },
{ "", "DrakTharonKeep", "DrakTharon Keep" },
{ "", "ForgeofSouls", "Forge of Souls" },
{ "", "Gundrak", "Gundrak" },
{ "", "HallsofLightning", "Halls of Lightning" },
{ "", "HallsofReflection", "Halls of Reflection" },
{ "", "HallsofStone", "Halls of Stone" },
{ "", "TheNexus", "The Nexus" },
{ "", "TheOculus", "The Oculus" },
{ "", "PitofSaron", "Pit of Saron" },
{ "", "TrialoftheChampion", "Trial of the Champion" },
{ "", "UtgardeKeep", "Utgarde Keep" },
{ "", "UtgardePinnacle", "Utgarde Pinnacle" },
{ "", "TheVioletHold", "The Violet Hold" },
}
+18 -19
View File
@@ -4,31 +4,30 @@ Defines the table listings for the dropdown lists.
]]
--Invoke all libraries
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
--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", 2};
{AL["Crafting"], "Crafting"};
{AL["Sets/Collections"], "Collections"};
{AL["PvP Rewards"], "PVP"};
{AL["Vanity"], "Vanity"};
{AL["Reputation Factions"], "Reputations"};
{AL["World Events"], "WorldEvents"};
};
{AL["Dungeons and Raids"], "Dungeons and Raids", 2},
{AL["Crafting"], "Crafting"},
{AL["Sets/Collections"], "Collections"},
{AL["PvP Rewards"], "PVP"},
{AL["Vanity"], "Vanity"},
{AL["Ascension Vanity Collection"], "CollectionsAscension"},
{AL["Reputation Factions"], "Reputations"},
{AL["World Events"], "WorldEvents"},
}
AtlasLoot_SubMenus = {};
AtlasLoot_CraftingData = {};
AtlasLoot_SubMenus = {}
AtlasLoot_ExpansionMenu = {
{ AL["Classic"], "CLASSIC" };
{ AL["Burning Crusade"], "TBC" };
{ AL["Wrath of the Lich King"], "WRATH" };
};
{ AL["Classic"], "CLASSIC" },
{ AL["Burning Crusade"], "TBC" },
{ AL["Wrath of the Lich King"], "WRATH" },
}
AtlasLoot_Data["EmptyTable"] = {
Name = AL["Select a Loot Table..."];
{Name = AL["Select a Loot Table..."]};
};
Name = AL["Select a Loot Table..."],
{Name = AL["Select a Loot Table..."]},
}
+1
View File
@@ -6,4 +6,5 @@
<Script file="SetMenus.lua"/>
<Script file="WorldEventMenus.lua"/>
<Script file="RepMenus.lua"/>
<Script file="AscensionCollectionMenu.lua"/>
</Ui>
+63 -63
View File
@@ -1,69 +1,69 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
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"};
};
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_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"};
};
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_SubMenus["PVPWRATH"] = {
Module = "AtlasLootWotLK";
{ "PVP Factions", "LakeWintergrasp", "Header"};
{ "", "LakeWintergrasp"};
{ "", "VentureBay"};
{ "", "PvP80Misc"};
{ "", "PVPidolWRATH"};
{ "", "PvP80NonSet"};
{ "", "WeaponsWRATH"};
{ "PVP Sets", "ArenaDruidWRATH", "Header"};
{ "", "ArenaDruidWRATH"};
{ "", "ArenaHunterWRATH"};
{ "", "ArenaMageWRATH"};
{ "", "ArenaPaladinWRATH"};
{ "", "ArenaPriestWRATH"};
{ "", "ArenaRogueWRATH"};
{ "", "ArenaShamanWRATH"};
{ "", "ArenaWarlockWRATH"};
{ "", "ArenaWarriorWRATH"};
{ "", "ArenaDeathKnightWRATH"};
};
Module = "AtlasLootWotLK",
{ "PVP Factions", "LakeWintergrasp", "Header"},
{ "", "LakeWintergrasp"},
{ "", "VentureBay"},
{ "", "PvP80Misc"},
{ "", "PVPidolWRATH"},
{ "", "PvP80NonSet"},
{ "", "WeaponsWRATH"},
{ "PVP Sets", "ArenaDruidWRATH", "Header"},
{ "", "ArenaDruidWRATH"},
{ "", "ArenaHunterWRATH"},
{ "", "ArenaMageWRATH"},
{ "", "ArenaPaladinWRATH"},
{ "", "ArenaPriestWRATH"},
{ "", "ArenaRogueWRATH"},
{ "", "ArenaShamanWRATH"},
{ "", "ArenaWarlockWRATH"},
{ "", "ArenaWarriorWRATH"},
{ "", "ArenaDeathKnightWRATH"},
}
+52 -52
View File
@@ -1,58 +1,58 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
AtlasLoot_SubMenus["ReputationsCLASSIC"] = {
Module = "AtlasLootOriginalWoW";
{ "", "Argent"};
{ "", "AQBroodRings"};
{ "", "AlteracFactions"};
{ "", "ArathiBasinFactions"};
{ "", "Timbermaw"};
{ "", "Zandalar"};
{ "", "Bloodsail"};
{ "", "Cenarion"};
{ "", "Hydraxian"};
{ "", "DesolaceCentaurClans"};
{ "", "Thorium"};
{ "", "Wintersaber"};
};
Module = "AtlasLootOriginalWoW",
{ "", "Argent"},
{ "", "AQBroodRings"},
{ "", "AlteracFactions"},
{ "", "ArathiBasinFactions"},
{ "", "Timbermaw"},
{ "", "Zandalar"},
{ "", "Bloodsail"},
{ "", "Cenarion"},
{ "", "Hydraxian"},
{ "", "DesolaceCentaurClans"},
{ "", "Thorium"},
{ "", "Wintersaber"},
}
AtlasLoot_SubMenus["ReputationsTBC"] = {
Module = "AtlasLootBurningCrusade";
{ "", "ShattrathFlasks"};
{ "", "Aldor"};
{ "", "Scryer"};
{ "", "Shatar"};
{ "", "LowerCity"};
{ "", "CExpedition"};
{ "", "HonorHold"};
{ "", "Thrallmar"};
{ "", "Kurenai"};
{ "", "Maghar"};
{ "", "Ogrila"};
{ "", "Skyguard"};
{ "", "Sporeggar"};
{ "", "Tranquillien"};
{ "", "Ashtongue"};
{ "", "Consortium"};
{ "", "KeepersofTime"};
{ "", "Netherwing"};
{ "", "ScaleSands"};
{ "", "SunOffensive"};
{ "", "VioletEye"};
};
Module = "AtlasLootBurningCrusade",
{ "", "ShattrathFlasks"},
{ "", "Aldor"},
{ "", "Scryer"},
{ "", "Shatar"},
{ "", "LowerCity"},
{ "", "CExpedition"},
{ "", "HonorHold"},
{ "", "Thrallmar"},
{ "", "Kurenai"},
{ "", "Maghar"},
{ "", "Ogrila"},
{ "", "Skyguard"},
{ "", "Sporeggar"},
{ "", "Tranquillien"},
{ "", "Ashtongue"},
{ "", "Consortium"},
{ "", "KeepersofTime"},
{ "", "Netherwing"},
{ "", "ScaleSands"},
{ "", "SunOffensive"},
{ "", "VioletEye"},
}
AtlasLoot_SubMenus["ReputationsWRATH"] = {
Module = "AtlasLootWotLK";
{ "", "AllianceVanguard"};
{ "", "WinterfinRetreat"};
{ "", "TheWyrmrestAccord"};
{ "", "KnightsoftheEbonBlade"};
{ "", "TheOracles"};
{ "", "TheSonsofHodir"};
{ "", "HordeExpedition"};
{ "", "TheKaluak"};
{ "", "KirinTor"};
{ "", "ArgentCrusade"};
{ "", "FrenzyheartTribe"};
{ "", "AshenVerdict"};
};
Module = "AtlasLootWotLK",
{ "", "AllianceVanguard"},
{ "", "WinterfinRetreat"},
{ "", "TheWyrmrestAccord"},
{ "", "KnightsoftheEbonBlade"},
{ "", "TheOracles"},
{ "", "TheSonsofHodir"},
{ "", "HordeExpedition"},
{ "", "TheKaluak"},
{ "", "KirinTor"},
{ "", "ArgentCrusade"},
{ "", "FrenzyheartTribe"},
{ "", "AshenVerdict"},
}
+55 -117
View File
@@ -1,129 +1,67 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
-- { #, "MOUNTMENU", "INV_Misc_QirajiCrystal_05", "=ds="..AL["Mounts"], ""};
-- { #, "PETMENU", "INV_Box_PetCarrier_01", "=ds="..AL["Vanity Pets"], ""};
-- { #, "Tabards3", "INV_Shirt_GuildTabard_01", "=ds="..AL["Tabards"], ""};
-- { #, "CardGame1", "INV_Misc_Ticket_Tarot_Madness", "=ds="..AL["Upper Deck Card Game Items"], ""};
-- { #, "PVPMENU", "INV_Axe_02", "=ds="..AL["PvP Rewards"], ""};
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
AtlasLoot_SubMenus["CollectionsCLASSIC"] = {
Module = "AtlasLootOriginalWoW";
{ "", "Heirloom"};
{ "", "ClassicSets"};
{ "", "WorldEpicsCLASSIC"};
{ "", "ZGSets"};
{ "", "AQ20Sets"};
{ "", "T0"};
{ "", "T1"};
{ "", "T2"};
{ "", "T2.5"};
{ "", "T3"};
};
Module = "AtlasLootOriginalWoW",
{ "", "Heirloom"},
{ "", "ClassicSets"},
{ "", "WorldEpicsCLASSIC"},
{ "All Dungeon Items", "ClassicDungeonExt", OnDamand = "ClassicDungeonExt"},
{ "", "ZGSets"},
{ "", "AQ20Sets"},
{ "", "T0"},
{ "", "T1"},
{ "", "T2"},
{ "", "T2.5"},
{ "", "T3"},
}
AtlasLoot_SubMenus["CollectionsTBC"] = {
Module = "AtlasLootBurningCrusade";
{ "", "Heirloom"};
{ "", "DS3"};
{ "", "WorldEpicsTBC"};
{ "", "TBCSets"};
{ AL["Badge of Justice Rewards"], "BadgeShatt", "Header"};
{ "", "BadgeShatt"};
{ "", "BadgeSunwell"};
{ "Tier Sets", "T4", "Header"};
{ "", "T4"};
{ "", "T5"};
{ "", "T6"};
};
Module = "AtlasLootBurningCrusade",
{ "", "Heirloom"},
{ "", "DS3"},
{ "", "WorldRaresTBC"},
{ "", "WorldEpicsTBC"},
{ "All Dungeon Items", "BCDungeon", OnDamand = "BCDungeon"},
{ "", "TBCSets"},
{ AL["Badge of Justice Rewards"], "BadgeShatt", "Header"},
{ "", "BadgeShatt"},
{ "", "BadgeSunwell"},
{ "Tier Sets", "T4", "Header"},
{ "", "T4"},
{ "", "T5"},
{ "", "T6"},
}
AtlasLoot_SubMenus["CollectionsWRATH"] = {
Module = "AtlasLootWotLK";
{ "", "Heirloom"};
{ "", "WorldEpicsWrath"};
{ "", "Legendaries"};
{ "Badge Rewards", "EmblemofHeroism", "Header"};
{ "", "EmblemofHeroism"};
{ "", "EmblemofValor"};
{ "", "EmblemofConquest"};
{ "", "EmblemofTriumph"};
{ "", "EmblemofFrost"};
{ "Tier Sets", "T7", "Header"};
{ "", "T7"};
{ "", "T8"};
{ "", "T9"};
{ "", "T10"};
};
Module = "AtlasLootWotLK",
{ "", "Heirloom"},
{ "", "WorldEpicsWrath"},
{ "All Dungeon Items", "WrathDungeon", OnDamand = "WrathDungeon"},
{ "", "Legendaries"},
{ "Badge Rewards", "EmblemofHeroism", "Header"},
{ "", "EmblemofHeroism"},
{ "", "EmblemofValor"},
{ "", "EmblemofConquest"},
{ "", "EmblemofTriumph"},
{ "", "EmblemofFrost"},
{ "Tier Sets", "T7", "Header"},
{ "", "T7"},
{ "", "T8"},
{ "", "T9"},
{ "", "T10"},
}
AtlasLoot_SubMenus["VanityCLASSIC"] = {
Module = "AtlasLootVanity";
{ "", "Tabards"};
{ "", "VanityPets"};
{ "", "Mounts"};
};
Module = "AtlasLootVanity",
{ "", "Tabards"},
{ "", "VanityPets"},
{ "", "Mounts"},
}
AtlasLoot_SubMenus["VanityTBC"] = AtlasLoot_SubMenus["VanityCLASSIC"];
AtlasLoot_SubMenus["VanityWRATH"] = AtlasLoot_SubMenus["VanityCLASSIC"];
----------------------
--- Heirloom Items ---
----------------------
AtlasLoot_Data["Heirloom"] = {
Name = AL["Heirloom"];
{
Name = "Chests";
{ 1, 48691, "", "=q7=Tattered Dreadmist Robe", "=ds=#s5#, #a1#", "1200 #tokenofprestige#" };
{ 2, 48687, "", "=q7=Preened Ironfeather Breastplate", "=ds=#s5#, #a2#", "1200 #tokenofprestige#" };
{ 3, 48689, "", "=q7=Stained Shadowcraft Tunic", "=ds=#s5#, #a2#", "1200 #tokenofprestige#" };
{ 4, 48677, "", "=q7=Champion's Deathdealer Breastplate", "=ds=#s5#, #a3#", "1200 #tokenofprestige#" };
{ 5, 48683, "", "=q7=Mystical Vest of Elements", "=ds=#s5#, #a3#", "1200 #tokenofprestige#" };
{ 6, 48685, "", "=q7=Polished Breastplate of Valor", "=ds=#s5#, #a4#", "1200 #tokenofprestige#" };
{ 7, 1548685, "", "=q7=Polished Breastplate of Might", "=ds=#s5#, #a4#", "1200 #tokenofprestige#" };
};
{
Name = "Shoulders";
{ 1, 42985, "", "=q7=Tattered Dreadmist Mantle", "=ds=#s3#, #a1#", "800 #tokenofprestige#" };
{ 2, 42984, "", "=q7=Preened Ironfeather Shoulders", "=ds=#s3#, #a2#", "800 #tokenofprestige#" };
{ 3, 42952, "", "=q7=Stained Shadowcraft Spaulders", "=ds=#s3#, #a2#", "800 #tokenofprestige#" };
{ 4, 42950, "", "=q7=Champion Herod's Shoulder", "=ds=#s3#, #a3#", "800 #tokenofprestige#" };
{ 5, 42951, "", "=q7=Mystical Pauldrons of Elements", "=ds=#s3#, #a3#", "800 #tokenofprestige#" };
{ 6, 42949, "", "=q7=Polished Spaulders of Valor", "=ds=#s3#, #a4#", "800 #tokenofprestige#" };
{ 7, 1542949, "", "=q7=Polished Spaulders of Might", "=ds=#s3#, #a4#", "800 #tokenofprestige#" };
{ 16, 44107, "", "=q7=Exquisite Sunderseer Mantle", "=ds=#s3#, #a1#", "800 #tokenofprestige#" };
{ 17, 44103, "", "=q7=Exceptional Stormshroud Shoulders", "=ds=#s3#, #a2#", "800 #tokenofprestige#" };
{ 18, 44105, "", "=q7=Lasting Feralheart Spaulders", "=ds=#s3#, #a2#", "800 #tokenofprestige#" };
{ 19, 44102, "", "=q7=Aged Pauldrons of The Five Thunders", "=ds=#s3#, #a3#", "800 #tokenofprestige#" };
{ 20, 44101, "", "=q7=Prized Beastmaster's Mantle", "=ds=#s3#, #a3#", "800 #tokenofprestige#" };
{ 21, 44100, "", "=q7=Pristine Lightforge Spaulders", "=ds=#s3#, #a4#", "800 #tokenofprestige#" };
{ 22, 44099, "", "=q7=Strengthened Stockade Pauldrons", "=ds=#s3#, #a4#", "800 #tokenofprestige#" };
};
{
Name = "Trinkets/Rings";
{ 1, 42992, "", "=q7=Discerning Eye of the Beast", "=ds=#s14#", "500 #tokenofprestige#" };
{ 2, 42991, "", "=q7=Swift Hand of Justice", "=ds=#s14#", "500 #tokenofprestige#" };
{ 3, 44098, "", "=q7=Inherited Insignia of the Alliance", "500 #tokenofprestige#" };
{ 4, 44097, "", "=q7=Inherited Insignia of the Horde", "500 #tokenofprestige#" };
{ 6, 50255, "", "=q7=Dread Pirate Ring", "=ds=#s13#", "" };
};
{
Name = "Weapons";
{ 1, 42944, "", "=q7=Balanced Heartseeker", "=ds=#w4#, #h1#", "600 #tokenofprestige#" };
{ 2, 42945, "", "=q7=Venerable Dal'Rend's Sacred Charge", "=ds=#w10#, #h3#", "600 #tokenofprestige#" };
{ 3, 42948, "", "=q7=Devout Aurastone Hammer", "600 #tokenofprestige#" };
{ 4, 48716, "", "=q7=Venerable Mass of McGowan", "600 #tokenofprestige#" };
{ 5, 44091, "", "=q7=Sharpened Scarlet Kris", "=ds=#h1#, #w4#", "600 #tokenofprestige#" };
{ 6, 44096, "", "=q7=Battleworn Thrash Blade", "=ds=#h1#, #w10#", "600 #tokenofprestige#" };
{ 7, 44094, "", "=q7=The Blessed Hammer of Grace", "=ds=#h3#, #w6#", "600 #tokenofprestige#" };
{ 7, 1540350, "", "=q7=Urn of Aspiring Light", "=ds=#h3#, #w6#", "600 #tokenofprestige#" };
{ 16, 42943, "", "=q7=Bloodied Arcanite Reaper", "=ds=#w1#, #h2#", "1000 #tokenofprestige#" };
{ 17, 1542943, "", "=q7=Sturdied Arcanite Spear", "=ds=#w1#, #h2#", "1000 #tokenofprestige#" };
{ 18, 48718, "", "=q7=Repurposed Lava Dredger", "=ds=#w6#, #h2#", "1000 #tokenofprestige#" };
{ 19, 42947, "", "=q7=Dignified Headmaster's Charge", "=ds=#w9#", "1000 #tokenofprestige#" };
{ 20, 44092, "", "=q7=Reforged Truesilver Champion", "=ds=#h2#, #w10#", "1000 #tokenofprestige#" };
{ 21, 44095, "", "=q7=Grand Staff of Jordan", "=ds=#w9#", "1000 #tokenofprestige#" };
{ 23, 42946, "", "=q7=Charmed Ancient Bone Bow", "=ds=#w2#", "1000 #tokenofprestige#" };
{ 24, 44093, "", "=q7=Upgraded Dwarven Hand Cannon", "=ds=#w5#", "1000 #tokenofprestige#" };
};
};
AtlasLoot_SubMenus["VanityTBC"] = AtlasLoot_SubMenus["VanityCLASSIC"]
AtlasLoot_SubMenus["VanityWRATH"] = AtlasLoot_SubMenus["VanityCLASSIC"]
+66 -66
View File
@@ -1,72 +1,72 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot")
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"};
};
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_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"};
};
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_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"};
};
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"},
}