Mythic+ 30

Reworked Search
New Advanced Search UI
This commit is contained in:
merstrax
2022-01-15 05:29:10 -05:00
19 changed files with 14105 additions and 12377 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
## Title: AtlasLoot Ascension Edition
## Notes: Shows the possible loot from the bosses
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Credits: Daviesh, Lag, Cellelach, Asurn, Pernicus and many others.
## X-Category: Map
+14 -1
View File
@@ -1,3 +1,5 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
AtlasLoot_Difficulty = {
-- table of difficulties and there itemID references
["ClassicDungeon"] = {
@@ -32,6 +34,12 @@ AtlasLoot_Difficulty = {
},
},
[6] = {
["Mythic+ 21-30"] = {
{"Mythic 21", 25, "=q4=", [4] = "Submenu" }, {"Mythic 22", 26, "=q4=", [4] = "Submenu" }, {"Mythic 23", 27, "=q4=", [4] = "Submenu" }, {"Mythic 24", 28, "=q4=", [4] = "Submenu" }, {"Mythic 25", 29, "=q4=", [4] = "Submenu" },
{"Mythic 26", 30, "=q4=", [4] = "Submenu" }, {"Mythic 27", 31, "=q4=", [4] = "Submenu" }, {"Mythic 28", 32, "=q4=", [4] = "Submenu" }, {"Mythic 29", 33, "=q4=", [4] = "Submenu" }, {"Mythic 30", 34, "=q4=", [4] = "Submenu" },
},
},
[7] = {
{"Bloodforged", 1, [4] = "Submenu"},
},
};
@@ -167,14 +175,19 @@ AtlasLoot_Difficulty = {
};
["Search"] = {"Bloodforged", "Normal", "Heroic", "Mythic", "Mythic 1", "Mythic 2","Mythic 3","Mythic 4","Mythic 5", "Mythic 6","Mythic 7",
"Mythic 8","Mythic 9", "Mythic 10", "Mythic 11", "Mythic 12","Mythic 13","Mythic 14","Mythic 15", "Mythic 16","Mythic 17","Mythic 18",
"Mythic 19", "Mythic 20", [99] = "Ascended"};
--Enums for comparisons in code
Bloodforged = 1;
Normal = 2;
Heroic = 3;
Mythic = 4; --Use for Ascended as well
MythicPlus = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; --Usage AtlasLoot_Difficulty.MythicPlus[1-20];
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}; --Usage AtlasLoot_Difficulty.MythicPlus[1-30];
DIF_SEARCH = 16;
DUPLICATE = 17;
MIN_DIF = 18;
MAX_DIF = 19;
+32 -1
View File
@@ -86,6 +86,9 @@ SelectedTable2TextSet = true
isTablereference = false
notPattern = false
--Search panel open and close save variables
--dataID, dataSource, boss, pFrame
SearchPrevData = {"", "", "", ""};
AtlasLootCharDB={};
@@ -506,6 +509,8 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
local isItem;
local spellName, spellIcon;
SearchPrevData = {dataID, dataSource, boss, pFrame};
--If the loot table name has not been passed, throw up a debugging statement
if dataID==nil then
DEFAULT_CHAT_FRAME:AddMessage("No dataID!");
@@ -516,6 +521,10 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
HideUIPanel(AtlasQuestInsideFrame);
end
--Hide Advanced search if it is up and reshow Querybutton
AtlasLootAdvancedSearch:Hide();
AtlasLootServerQueryButton:Show();
--Ditch the Quicklook selector
AtlasLoot_QuickLooks:Hide();
AtlasLootQuickLooksButton:Hide();
@@ -544,6 +553,7 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
else
dataSource = AtlasLoot_Data;
end
if dataID == "FilterList" then
Type = lastType;
else
@@ -621,6 +631,9 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
if(toShow) then
IDfound = AL_FindId(string.sub(dataSource[dataID][i][4], 5), ItemindexID) or dataSource[dataID][i][2];
if ((dataID == "SearchResult") or (dataID == "WishList")) then
IDfound = AL_FindId(string.sub(dataSource[dataID][i][4], 5), dataSource[dataID][i][AtlasLoot_Difficulty.DIF_SEARCH]) or dataSource[dataID][i][2];
end
if string.sub(IDfound, 1, 1) == "s" then
isItem = false;
@@ -640,9 +653,16 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
if dataSource[dataID][i][AtlasLoot_Difficulty.DUPLICATE] then
--Used if an item has more then 1 version with the same name eg Atiesh
IDfound = AL_FindId(string.sub(dataSource[dataID][i][4], 5) .. " " .. dataSource[dataID][i][AtlasLoot_Difficulty.DUPLICATE], ItemindexID) or dataSource[dataID][i][2];
if ((dataID == "SearchResult") or (dataID == "WishList")) then
IDfound = AL_FindId(string.sub(dataSource[dataID][i][4], 5), dataSource[dataID][i][AtlasLoot_Difficulty.DIF_SEARCH]) or dataSource[dataID][i][2];
end
else
--If something was found in itemID database show that if not show default table item
IDfound = AL_FindId(string.sub(dataSource[dataID][i][4], 5), ItemindexID) or dataSource[dataID][i][2];
if ((dataID == "SearchResult") or (dataID == "WishList")) then
IDfound = AL_FindId(string.sub(dataSource[dataID][i][4], 5), dataSource[dataID][i][AtlasLoot_Difficulty.DIF_SEARCH]) or dataSource[dataID][i][2];
end
end
itemName, itemLink, itemQuality, itemLevel, itemMinLevel, itemType, itemSubType, itemCount, itemEquipLoc, itemTexture = GetItemInfo(IDfound);
@@ -777,6 +797,17 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
if (dataID == "SearchResult" or dataID == "WishList") and dataSource[dataID][i][8] then
itemButton.sourcePage = dataSource[dataID][i][8];
end
if dataSource[dataID][i][AtlasLoot_Difficulty.DIF_SEARCH] then
itemButton.difficulty = dataSource[dataID][i][AtlasLoot_Difficulty.DIF_SEARCH];
else
itemButton.difficulty = ItemindexID;
if dataSource[dataID].Type then
if string.find(dataSource[dataID].Type, "Raid") and ItemindexID == 4 then
itemButton.difficulty = 99;
end
end
end
itemButton.i = 1;
itemButton:Show();
@@ -786,7 +817,7 @@ function AtlasLoot_ShowItemsFrame(dataID, dataSource, boss, pFrame)
end
if dataID ~= "FilterList" then
lastType = dataSource[dataID].Type
lastType = dataSource[dataID].Type
end
if SelectedTableTextSet then
+615 -5
View File
@@ -16,6 +16,7 @@
<Script file="Launchers.lua"/>
<Script file="AtlasLoot.lua"/>
<Script file="WishList.lua"/>
<Script file="SearchAdvanced.lua"/>
<Script file="Search.lua"/>
@@ -1627,7 +1628,7 @@
</Scripts>
</Button>
<EditBox name="AtlasLootSearchBox" inherits="InputBoxTemplate" letters="100">
<EditBox name="AtlasLootSearchBox" inherits="InputBoxTemplate" letters="100" hidden="true">
<Size>
<AbsDimension x="240" y="35"></AbsDimension>
</Size>
@@ -1650,14 +1651,14 @@
</Scripts>
<FontString name="AtlasLootSearchString" inherits="GameFontNormal"></FontString>
</EditBox>
<Button name="AtlasLootSearchButton" inherits="UIPanelButtonTemplate2" parent="AtlasLootSearchBox">
<Button name="AtlasLootSearchButton" inherits="UIPanelButtonTemplate2">
<Size>
<AbsDimension x="69" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT">
<Anchor point="BOTTOM" relativeTo="$parent" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="0"/>
<AbsDimension x="-123" y="20"/>
</Offset>
</Anchor>
</Anchors>
@@ -1668,7 +1669,7 @@
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
<OnClick>
AtlasLoot:Search(AtlasLootSearchBox:GetText());
AtlasLoot_AdvancedSearchShow();
AtlasLootSearchBox:ClearFocus();
</OnClick>
</Scripts>
@@ -1742,5 +1743,614 @@
</Frames>
</Frame>
<Frame name="AtlasLootAdvancedSearch" parent="UIParent" hidden="true">
<Size>
<AbsDimension x="510" y="510"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Frames>
<Button name="$parent_CloseButton" inherits="UIPanelCloseButton">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-5" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
AtlasLoot_AdvancedSearchClose();
</OnClick>
<OnShow>
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Quality" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="$parent" relativePoint="TOP">
<Offset>
<AbsDimension x="-160" y="-60"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_QualityText" inherits="GameFontNormal" text="Quality: ">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="AtlasLootAdvancedSearch_Quality" relativePoint="TOPLEFT">
<Offset>
<AbsDimension y="5"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
if AtlasLoot_QualityMenu:IsOpen() then
AtlasLoot_QualityMenu:Close();
else
AtlasLoot_QualityMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Quality");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Equip" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="$parent_Quality" relativePoint="BOTTOM">
<Offset>
<AbsDimension y="-25"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_QualityText" inherits="GameFontNormal" text="Equip Type Info: ">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="AtlasLootAdvancedSearch_Equip" relativePoint="TOPLEFT">
<Offset>
<AbsDimension y="5"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
if AtlasLoot_EquipMenu:IsOpen() then
AtlasLoot_EquipMenu:Close();
else
AtlasLoot_EquipMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Item Type");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_EquipSub" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Equip" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
if AtlasLoot_EquipSubMenu:IsOpen() then
AtlasLoot_EquipSubMenu:Close();
else
AtlasLoot_EquipSubMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_WeaponSub" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_EquipSub" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
if AtlasLoot_WeaponSubMenu:IsOpen() then
AtlasLoot_WeaponSubMenu:Close();
else
AtlasLoot_WeaponSubMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Weapon Type");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Difficulty" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="$parent_Equip" relativePoint="BOTTOM">
<Offset>
<AbsDimension y="-25"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_QualityText" inherits="GameFontNormal" text="Difficulty: ">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="AtlasLootAdvancedSearch_Difficulty" relativePoint="TOPLEFT">
<Offset>
<AbsDimension y="5"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
if AtlasLoot_DifficultyMenu:IsOpen() then
AtlasLoot_DifficultyMenu:Close();
else
AtlasLoot_DifficultyMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Difficulty");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_MythicSub" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Difficulty" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
if AtlasLoot_DiffSubMenu:IsOpen() then
AtlasLoot_DiffSubMenu:Close();
else
AtlasLoot_DiffSubMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Mythic+ 1");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Argument1" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="$parent_Difficulty" relativePoint="BOTTOM">
<Offset>
<AbsDimension y="-40"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_QualityText" inherits="GameFontNormal" text="Extra Seach Options 1: ">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="AtlasLootAdvancedSearch_Argument1" relativePoint="TOPLEFT">
<Offset>
<AbsDimension y="5"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
if AtlasLoot_Argument1Menu:IsOpen() then
AtlasLoot_Argument1Menu:Close();
else
AtlasLoot_Argument1Menu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Argument1Sub" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Argument1" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
if AtlasLoot_Argument1SubMenu:IsOpen() then
AtlasLoot_Argument1SubMenu:Close();
else
AtlasLoot_Argument1SubMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<EditBox name="$parent_Argument1Value" inherits="InputBoxTemplate" letters="5">
<Size>
<AbsDimension x="65" y="35"></AbsDimension>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Argument1Sub" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetAutoFocus(false);
this:SetTextInsets(0, 8, 0, 0);
</OnLoad>
<OnEnterPressed>
this:ClearFocus();
</OnEnterPressed>
</Scripts>
<FontString name="$parent_Argument1String" inherits="GameFontNormal"></FontString>
</EditBox>
<Button name="$parent_Argument2" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="$parent_Argument1" relativePoint="BOTTOM">
<Offset>
<AbsDimension y="-25"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_QualityText" inherits="GameFontNormal" text="Extra Seach Options 2: ">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="AtlasLootAdvancedSearch_Argument2" relativePoint="TOPLEFT">
<Offset>
<AbsDimension y="5"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
if AtlasLoot_Argument2Menu:IsOpen() then
AtlasLoot_Argument2Menu:Close();
else
AtlasLoot_Argument2Menu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Argument2Sub" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Argument2" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
if AtlasLoot_Argument2SubMenu:IsOpen() then
AtlasLoot_Argument2SubMenu:Close();
else
AtlasLoot_Argument2SubMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<EditBox name="$parent_Argument2Value" inherits="InputBoxTemplate" letters="5">
<Size>
<AbsDimension x="65" y="35"></AbsDimension>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Argument2Sub" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetAutoFocus(false);
this:SetTextInsets(0, 8, 0, 0);
</OnLoad>
<OnEnterPressed>
this:ClearFocus();
</OnEnterPressed>
</Scripts>
<FontString name="$parent_Argument2String" inherits="GameFontNormal"></FontString>
</EditBox>
<Button name="$parent_Argument3" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="$parent_Argument2" relativePoint="BOTTOM">
<Offset>
<AbsDimension y="-25"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_QualityText" inherits="GameFontNormal" text="Extra Seach Options 3: ">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="AtlasLootAdvancedSearch_Argument3" relativePoint="TOPLEFT">
<Offset>
<AbsDimension y="5"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
if AtlasLoot_Argument3Menu:IsOpen() then
AtlasLoot_Argument3Menu:Close();
else
AtlasLoot_Argument3Menu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Argument3Sub" inherits="OptionsButtonTemplate">
<Size>
<AbsDimension x="130" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Argument3" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
if AtlasLoot_Argument3SubMenu:IsOpen() then
AtlasLoot_Argument3SubMenu:Close();
else
AtlasLoot_Argument3SubMenu:Open(this);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText("Select Option");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<EditBox name="$parent_Argument3Value" inherits="InputBoxTemplate" letters="5">
<Size>
<AbsDimension x="65" y="35"></AbsDimension>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Argument3Sub" relativePoint="RIGHT">
<Offset>
<AbsDimension x="15"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetAutoFocus(false);
this:SetTextInsets(0, 8, 0, 0);
</OnLoad>
<OnEnterPressed>
this:ClearFocus();
</OnEnterPressed>
</Scripts>
<FontString name="$parent_Argument3String" inherits="GameFontNormal"></FontString>
</EditBox>
<EditBox name="$parent_SearchBox" inherits="InputBoxTemplate" letters="100">
<Size>
<AbsDimension x="240" y="35"></AbsDimension>
</Size>
<Anchors>
<Anchor point="BOTTOM" relativeTo="$parent" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="-120" y="20"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetAutoFocus(false);
this:SetTextInsets(0, 8, 0, 0);
</OnLoad>
<OnEnterPressed>
AtlasLoot:AdvancedSearch(AtlasLootAdvancedSearch_SearchBox:GetText());
this:ClearFocus();
</OnEnterPressed>
</Scripts>
<FontString name="$parent_SearchString" inherits="GameFontNormal"></FontString>
</EditBox>
<Button name="$parent_SearchButton" inherits="UIPanelButtonTemplate2">
<Size>
<AbsDimension x="69" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_SearchBox" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["Search"]);
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
<OnClick>
AtlasLootAdvancedSearch_SearchBox:ClearFocus();
AtlasLootAdvancedSearch_Argument1Value:ClearFocus();
AtlasLootAdvancedSearch_Argument2Value:ClearFocus();
AtlasLootAdvancedSearch_Argument3Value:ClearFocus();
AtlasLoot:AdvancedSearch(AtlasLootAdvancedSearch_SearchBox:GetText(), {AtlasLootAdvancedSearch_Argument1Value:GetText(), AtlasLootAdvancedSearch_Argument2Value:GetText(), AtlasLootAdvancedSearch_Argument3Value:GetText()});
</OnClick>
</Scripts>
</Button>
<Button name="$parent_SearchOptionsButton">
<Size>
<AbsDimension x="28" y="28" />
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_SearchButton" relativePoint="RIGHT">
<Offset>
<AbsDimension x="-6" y="0"/>
</Offset>
</Anchor>
</Anchors>
<NormalTexture file="Interface\Buttons\UI-SpellbookIcon-NextPage-Up"/>
<PushedTexture file="Interface\Buttons\UI-SpellbookIcon-NextPage-Down"/>
<DisabledTexture file="Interface\Buttons\UI-SpellbookIcon-NextPage-Disabled"/>
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD"/>
<Scripts>
<OnShow>
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
<OnClick>
AtlasLoot:ShowSearchOptions(this);
</OnClick>
</Scripts>
</Button>
<Button name="$parent_SearchClearButton" inherits="UIPanelButtonTemplate2">
<Size>
<AbsDimension x="58" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_SearchOptionsButton" relativePoint="RIGHT">
<Offset>
<AbsDimension x="-2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["Clear"]);
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
<OnClick>
AtlasLoot_AdvancedSearchReset();
AtlasLootAdvancedSearch_SearchBox:SetText("");
AtlasLootAdvancedSearch_SearchBox:ClearFocus();
</OnClick>
</Scripts>
</Button>
<Button name="$parent_LastResultButton" inherits="UIPanelButtonTemplate2">
<Size>
<AbsDimension x="100" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_SearchClearButton" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["Last Result"]);
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
<OnClick>
AtlasLoot:ShowSearchResult();
</OnClick>
</Scripts>
</Button>
</Frames>
</Frame>
</Ui>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+8 -2
View File
@@ -248,9 +248,15 @@ function AtlasLootItem_OnClick(arg1)
if AtlasLootItemsFrame.refresh[1] == "WishList" then
AtlasLoot_DeleteFromWishList(this.itemID);
elseif AtlasLootItemsFrame.refresh[1] == "SearchResult" then
AtlasLoot:GetOriginalDataFromSearchResult(this.itemID);
if this.difficulty then
AtlasLoot:GetOriginalDataFromSearchResult(this.itemID);
end
else
AtlasLoot_ShowWishListDropDown(this.itemID, this.itemTexture, getglobal("AtlasLootItem_"..this:GetID().."_Name"):GetText(), AtlasLoot_BossName:GetText(), AtlasLootItemsFrame.refreshOri[1].."|"..AtlasLootItemsFrame.refreshOri[2], this);
if this.difficulty then
AtlasLoot_ShowWishListDropDown(this.itemID, this.itemTexture, getglobal("AtlasLootItem_"..this:GetID().."_Name"):GetText(), AtlasLoot_BossName:GetText(), AtlasLootItemsFrame.refreshOri[1].."|"..AtlasLootItemsFrame.refreshOri[2], this, nil, this.difficulty);
else
AtlasLoot_ShowWishListDropDown(this.itemID, this.itemTexture, getglobal("AtlasLootItem_"..this:GetID().."_Name"):GetText(), AtlasLoot_BossName:GetText(), AtlasLootItemsFrame.refreshOri[1].."|"..AtlasLootItemsFrame.refreshOri[2], this);
end
end
elseif((AtlasLootItemsFrame.refresh[1] == "SearchResult" or AtlasLootItemsFrame.refresh[1] == "WishList") and this.sourcePage) then
local dataID, dataSource = strsplit("|", this.sourcePage);
+337 -354
View File
@@ -12,11 +12,13 @@ local currentPage = 1;
local SearchResult = nil;
-- Supported Operators
local BINARYOPERATORS = { "&" };
local OPERATORS = { "<>", "<=", ">=", "=", "<", ">" };
local OP_AND = "&"
local BINARYOPERATORS = { OP_AND };
-- multi-character patterns must come before single-character patterns
local RELATIONAL_OPERATORS = { ">=", "<=", "<>", "<", ">", "=", };
-- Supported Stat Filters
local STATFILTERS = {
local STAT_FILTERS = {
-- Base Stats
["stamina"] = "ITEM_MOD_STAMINA_SHORT",
["stam"] = "ITEM_MOD_STAMINA_SHORT",
@@ -136,7 +138,14 @@ local STATFILTERS = {
["resarc"] = "RESISTANCE6_NAME"
};
local ITEMSOCKETSTATFILTERS = {
local SOCKET_FILTERS = {
["socket"] = true,
["sockets"] = true,
["gem"] = true,
["gems"] = true,
};
local SOCKET_TYPES = {
"EMPTY_SOCKET_BLUE",
"EMPTY_SOCKET_RED",
"EMPTY_SOCKET_YELLOW",
@@ -144,15 +153,14 @@ local ITEMSOCKETSTATFILTERS = {
"EMPTY_SOCKET_NO_COLOR"
};
local ITEMINFOFILTERS = {
["ilvl"] = "ilvl",
["minlvl"] = "minlvl",
["type"] = "type",
["subtype"] = "subtype",
["quality"] = "quality"
local INFO_FILTERS = {
["ilvl"] = true,
["minlvl"] = true,
--["type"] = true,
--["subtype"] = true,
};
local ITEMINFOVALUEFILTERS = {
local QUALITY_FILTERS = {
["poor"] = 0,
["common"] = 1,
["uncommon"] = 2,
@@ -163,75 +171,318 @@ local ITEMINFOVALUEFILTERS = {
["heirloom"] = 7
};
local ITEMINFOEQUIPMENTLOC = {
["INVTYPE_NON_EQUIP"] = "INVTYPE_NON_EQUIP",
["INVTYPE_HEAD"] = "INVTYPE_HEAD",
["INVTYPE_NECK"] = "INVTYPE_NECK",
["INVTYPE_SHOULDER"] = "INVTYPE_SHOULDER",
["INVTYPE_BODY"] = "INVTYPE_BODY",
["INVTYPE_CHEST"] = "INVTYPE_CHEST",
["INVTYPE_WAIST"] = "INVTYPE_WAIST",
["INVTYPE_LEGS"] = "INVTYPE_LEGS",
["INVTYPE_FEET"] = "INVTYPE_FEET",
["INVTYPE_WRIST"] = "INVTYPE_WRIST",
["INVTYPE_HAND"] = "INVTYPE_HAND",
["INVTYPE_FINGER"] = "INVTYPE_FINGER",
["INVTYPE_TRINKET"] = "INVTYPE_TRINKET",
["INVTYPE_WEAPON"] = "INVTYPE_WEAPON",
["INVTYPE_SHIELD"] = "INVTYPE_SHIELD",
["INVTYPE_RANGED"] = "INVTYPE_RANGED",
["INVTYPE_CLOAK"] = "INVTYPE_CLOAK",
["INVTYPE_2HWEAPON"] = "INVTYPE_2HWEAPON",
["INVTYPE_BAG"] = "INVTYPE_BAG",
["INVTYPE_TABARD"] = "INVTYPE_TABARD",
["INVTYPE_ROBE"] = "INVTYPE_ROBE",
["INVTYPE_WEAPONMAINHAND"] = "INVTYPE_WEAPONMAINHAND",
["INVTYPE_WEAPONOFFHAND"] = "INVTYPE_WEAPONOFFHAND",
["INVTYPE_HOLDABLE"] = "INVTYPE_HOLDABLE",
["INVTYPE_AMMO"] = "INVTYPE_AMMO",
["INVTYPE_THROWN"] = "INVTYPE_THROWN",
["INVTYPE_RANGEDRIGHT"] = "INVTYPE_RANGEDRIGHT",
["INVTYPE_QUIVER"] = "INVTYPE_QUIVER",
["INVTYPE_RELIC"] = "INVTYPE_RELIC"
local SLOT_FILTERS = {
["none"] = "INVTYPE_NON_EQUIP",
["head"] = "INVTYPE_HEAD",
["neck"] = "INVTYPE_NECK",
["shoulder"] = "INVTYPE_SHOULDER",
["body"] = "INVTYPE_BODY",
["chest"] = "INVTYPE_CHEST",
["waist"] = "INVTYPE_WAIST",
["legs"] = "INVTYPE_LEGS",
["feet"] = "INVTYPE_FEET",
["wrist"] = "INVTYPE_WRIST",
["hand"] = "INVTYPE_HAND",
["finger"] = "INVTYPE_FINGER",
["trinket"] = "INVTYPE_TRINKET",
["weapon"] = "INVTYPE_WEAPON",
["shield"] = "INVTYPE_SHIELD",
["ranged"] = "INVTYPE_RANGED",
["cloak"] = "INVTYPE_CLOAK",
["2hweapon"] = "INVTYPE_2HWEAPON",
["bag"] = "INVTYPE_BAG",
["tabard"] = "INVTYPE_TABARD",
["robe"] = "INVTYPE_ROBE",
["weaponmainhand"] = "INVTYPE_WEAPONMAINHAND",
["mainhand"] = "INVTYPE_WEAPONMAINHAND",
["weaponoffhand"] = "INVTYPE_WEAPONOFFHAND",
["offhand"] = "INVTYPE_WEAPONOFFHAND",
["holdable"] = "INVTYPE_HOLDABLE",
["ammo"] = "INVTYPE_AMMO",
["thrown"] = "INVTYPE_THROWN",
["rangedright"] = "INVTYPE_RANGEDRIGHT",
["quiver"] = "INVTYPE_QUIVER",
["relic"] = "INVTYPE_RELIC"
};
local ITEMLEVELGEAREQUIPFILTER = {
["INVTYPE_NON_EQUIP"] = "INVTYPE_NON_EQUIP",
["INVTYPE_BODY"] = "INVTYPE_BODY",
["INVTYPE_BAG"] = "INVTYPE_BAG",
["INVTYPE_AMMO"] = "INVTYPE_AMMO",
["INVTYPE_QUIVER"] = "INVTYPE_QUIVER"
local NON_EQUIPABLE_SLOTS = {
["INVTYPE_NON_EQUIP"] = true,
["INVTYPE_BODY"] = true,
["INVTYPE_BAG"] = true,
["INVTYPE_AMMO"] = true,
["INVTYPE_QUIVER"] = true,
};
-- Slash command that prints out all used item filter keys
SLASH_ATLASLOOTITEMINFOFILTERS1 = "/atlaslootfilterkeys";
SlashCmdList["ATLASLOOTITEMINFOFILTERS"] = function(msg, editBox)
local sortedTable = { "socket", "sockets", "gem", "gems", "ilvl" };
for index, statItem in pairs(STATFILTERS) do
table.insert(sortedTable, index);
end
table.sort(sortedTable, function(a,b) return a < b; end)
SLASH_ATLASLOOTHELP1 = "/atlasloothelp";
SlashCmdList["ATLASLOOTHELP"] = function(msg, editBox)
local function show(caption, t)
local keys = {}
for key in pairs(t) do table.insert(keys, key) end
table.sort(keys, function(a,b) return a < b end)
print(caption..": ".. table.concat(keys, ", "))
end
show("stat", STAT_FILTERS)
show("socket", SOCKET_FILTERS)
show("slot", SLOT_FILTERS)
show("quality", QUALITY_FILTERS)
show("info", INFO_FILTERS)
local filterKeys = "Filter keys: [ ";
for i, filterIndex in pairs(sortedTable) do
if i == 1 then
filterKeys = filterKeys..filterIndex;
else
filterKeys = filterKeys..", "..filterIndex;
end
end
filterKeys = filterKeys.." ]";
print(filterKeys);
print("\nExamples:")
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("stam>20&minlvl<=50")
end
-- Slash command that prints filter examples
SLASH_ATLASLOOTITEMINFOFILTEREXAMPLE1 = "/atlaslootfilterexample";
SlashCmdList["ATLASLOOTITEMINFOFILTEREXAMPLE"] = function(msg, editBox)
print("Single search example: str>40");
print("Multi search example: str>40&ilvl<140&ilvl>=120&int>0&socket>2");
SLASH_ATLASLOOTSEARCH1 = "/atlaslootsearch";
SLASH_ATLASLOOTSEARCH2 = "/als";
SlashCmdList["ATLASLOOTSEARCH"] = function(search, editBox)
AtlasLootDefaultFrame:Show()
if search and search ~= '' then
AtlasLootDefaultFrameSearchBox:SetText(search)
AtlasLootDefaultFrameSearchButton:Click()
end
end
-- split one string on another (delimiter can be more than one character)
local function SplitString(str, delimiter)
local result = {}
local start = 1
local len = #str
while start <= len do
local delimPos = str:find(delimiter, start, true)
if delimPos then
result[#result+1] = str:sub(start, delimPos-1) -- grab up to the delimeter
start = delimPos + #delimiter -- advance past the delimiter
else
result[#result+1] = str:sub(start) -- grab the rest of the string
break
end
end
return result
end
local function CompareNumbersByOperator(operator, left, right)
return left and right and (
(operator == "<>" and left ~= right)
or (operator == "<=" and left <= right)
or (operator == ">=" and left >= right)
or (operator == "=" and left == right)
or (operator == "<" and left < right)
or (operator == ">" and left > right)
)
end
local function ThrowQueryError(...)
error("Error: "..string.format(...))
end
local function IsItemStatMatch(term, stats)
local filterKey = STAT_FILTERS[term.left]
if not filterKey then
return
end
local statValue = tonumber(stats[filterKey])
if not statValue then
return
end
local searchedValue = tonumber(term.right)
if not searchedValue then
ThrowQueryError("'%s' requires a numeric argument", term.left)
end
return CompareNumbersByOperator(term.relational, statValue, searchedValue)
end
local function IsItemLevelFilterMatch(term, itemLvl, itemEquipLoc)
if term.left ~= "ilvl" then
return
end
local searchedValue = tonumber(term.right);
if not searchedValue then
ThrowQueryError("ilvl search requires a numeric argument")
end
return itemLvl ~= nil and itemLvl > 0 and CompareNumbersByOperator(term.relational, itemLvl, searchedValue)
end
local function IsItemQualityMatch(term, itemQuality)
if term.left ~= "quality" then
return
end
local searchedValue = QUALITY_FILTERS[term.right]
if not searchedValue then
ThrowQueryError("unrecognized quality value \"%s\"", term.right)
end
return CompareNumbersByOperator(term.relational, itemQuality, searchedValue)
end
local function IsItemSocketMatch(term, stats)
if not SOCKET_FILTERS[term.left] then
return
end
local searchedValue = tonumber(term.right)
if not searchedValue then
ThrowQueryError("'%s' requires a numeric argument", term.left)
end
local socketCount = 0;
for _, socketType in pairs(SOCKET_TYPES) do
local statValue = tonumber(stats[socketType]);
if statValue then
socketCount = socketCount + statValue;
end
end
return CompareNumbersByOperator(term.relational, socketCount, searchedValue)
end
local function IsMinLevelFilterMatch(term, minLvl)
if term.left ~= "minlvl" then
return
end
local searchedValue = tonumber(term.right);
if not searchedValue then
ThrowQueryError("minlvl search requires a numeric argument")
end
return minLvl ~= nil and minLvl > 0 and CompareNumbersByOperator(term.relational, minLvl, searchedValue)
end
local function IsItemSlotMatch(term, itemEquipLoc)
if term.left ~= "slot" then
return
end
if term.relational ~= "=" then
ThrowQueryError("slot searches should be in the form \"slot=[slotname]\"")
end
local slot = SLOT_FILTERS[term.right]
if not slot then
ThrowQueryError("unrecognized slot name: \"%s\"", term.right)
end
return slot == itemEquipLoc
end
local function nameMatches(name, searchText)
if AtlasLoot.db.profile.PartialMatching then
return string.find(string.lower(name), searchText);
else
return string.lower(name) == searchText;
end
end
local function ItemMatchesTerm(term, itemName, stats, itemLvl, minLvl, itemQuality, itemEquipLoc)
if term.relational then
return IsItemStatMatch(term, stats)
or IsItemSocketMatch(term, stats)
or IsItemLevelFilterMatch(term, itemLvl, itemEquipLoc)
or IsMinLevelFilterMatch(term, minLvl)
or IsItemSlotMatch(term, itemEquipLoc)
or IsItemQualityMatch(term, itemQuality)
else
return nameMatches(itemName, term.name)
end
end
local function ItemMatchesAllTerms(searchTerms, itemName, stats, itemLvl, minLvl, itemQuality, itemEquipLoc)
for _, term in ipairs(searchTerms) do
if not ItemMatchesTerm(term, itemName, stats, itemLvl, minLvl, itemQuality, itemEquipLoc) then
return false
end
end
return true
end
local function ParseTerm(termText)
for _, relational in ipairs(RELATIONAL_OPERATORS) do
local operands = SplitString(termText, relational)
if #operands == 2 then
return {
left = operands[1],
right = operands[2],
relational = relational
}
end
end
return { name = termText } -- simple name search
end
-- Parse search text into '&'-delimited search terms,
-- then parse each term on its relational operator, if present.
local function ParseQuery(searchText)
local terms = {}
for i, term in pairs(SplitString(searchText, OP_AND)) do
table.insert(terms, ParseTerm(term))
end
return terms
end
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, _, _, _, itemEquipLoc = GetItemInfo(itemId);
if not itemName then itemName = gsub(atlasName, "=q%d=", "") end
return itemName, itemQuality, itemLvl, minLvl, itemEquipLoc, GetItemStats("item:"..itemId)
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=", "");
end
end
local function DoSearch(searchText)
AtlasLootCharDB["SearchResult"] = {};
AtlasLootCharDB.LastSearchedText = Text;
local function AddItemToSearchResult(itemId, itemType, itemName, dataID)
local lootPage = AtlasLoot_TableNames[dataID] and AtlasLoot_TableNames[dataID][1] or "Argh!";
table.insert(AtlasLootCharDB["SearchResult"], { 0, itemId, itemType, itemName, lootPage, "", "", dataID.."|".."\"\"", [AtlasLoot_Difficulty.DIF_SEARCH] = 2});
end
local searchTerms = ParseQuery(searchText)
local equipableFilterOn = AtlasLoot.db.profile.EquipableFilter
local function IsItemEquipableMatch(itemEquipLoc)
return not equipableFilterOn or (itemEquipLoc and itemEquipLoc ~= '' and not NON_EQUIPABLE_SLOTS[itemEquipLoc])
end
for dataID, data in pairs(AtlasLoot_Data) do
for _, v in ipairs(data) do
local _, itemId, itemType, atlasName = unpack(v)
if type(itemId) == "number" and itemId > 0 then
local itemName, itemQuality, itemLvl, minLvl, itemEquipLoc, stats = GetItemDetails(itemId, atlasName);
if IsItemEquipableMatch(itemEquipLoc) and ItemMatchesAllTerms(searchTerms, itemName, stats, itemLvl, minLvl, itemQuality, itemEquipLoc) then
AddItemToSearchResult(itemId, itemType, itemName, dataID)
end
elseif not equipableFilterOn and itemId and itemId ~= "" and string.sub(itemId, 1, 1) == "s" then
local spellName = GetSpellName(itemId, atlasName)
if nameMatches(spellName, searchText) then
spellName = string.sub(atlasName, 1, 4)..spellName;
AddItemToSearchResult(itemId, itemType, spellName, dataID)
end
end
end
end
end
function AtlasLoot:ShowSearchResult()
AtlasLoot_ShowItemsFrame("SearchResult", "SearchResultPage"..currentPage, (AL["Search Result: %s"]):format(AtlasLootCharDB.LastSearchedText or ""), pFrame);
end
@@ -252,7 +503,7 @@ function AtlasLoot:Search(Text)
end
end
if allDisabled then
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot"]..": "..WHITE..AL["You don't have any module selected to search on."]);
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot"]..": "..WHITE..AL["You don't have any module selected to search on."]);
return;
end
if self.db.profile.SearchOn.All then
@@ -265,292 +516,17 @@ function AtlasLoot:Search(Text)
end
end
AtlasLootCharDB["SearchResult"] = {};
AtlasLootCharDB.LastSearchedText = Text;
local success, message = pcall(DoSearch, Text)
local text = string.lower(Text);
--[[if not self.db.profile.SearchOn.All then
local module = AtlasLoot_GetLODModule(dataSource);
if not module or self.db.profile.SearchOn[module] ~= true then return end
end]]
local function HaveBinaryOperator (textValue)
for index, operator in ipairs(BINARYOPERATORS) do
if string.find(textValue, operator) then
return operator;
end
end
return nil;
end
local function HaveOperator (textValue)
for index, operator in ipairs(OPERATORS) do
if string.find(textValue, operator) then
return operator;
end
end
return nil;
end
local function SplitString(str, delimiter)
result = {};
for match in (str..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match);
end
return result;
end
local function CompareNumbersByOperator (operator, baseValue, valueToCompare)
if baseValue ~= nil and valueToCompare ~= nil
and ((operator == "<>") and (baseValue ~= valueToCompare)
or (operator == "<=") and (baseValue <= valueToCompare)
or (operator == ">=") and (baseValue >= valueToCompare)
or (operator == "=") and (baseValue == valueToCompare)
or (operator == "<") and (baseValue < valueToCompare)
or (operator == ">") and (baseValue > valueToCompare))
then
return true;
end
return false;
end
-- Region: Stat Filter
local function IsSocketTermInSearchText(searchText)
if string.find(searchText, "socket")
or string.find(searchText, "sockets")
or string.find(searchText, "gem")
or string.find(searchText, "gems")
then
return true;
end
return false;
end
local function IsSocketTermEqualsSearchText(searchText)
if searchText == "socket"
or searchText == "sockets"
or searchText == "gem"
or searchText == "gems"
then
return true;
end
return false;
end
local function FilterSockets(searchTextItem, stats, operator)
if stats then
if IsSocketTermInSearchText(searchTextItem) then
local searchedStatValue = tonumber(string.match(searchTextItem, "%d+"));
local searchTerm = string.gsub(searchTextItem, tostring(searchedStatValue), "");
searchTerm = string.gsub(searchTerm, operator, "");
if IsSocketTermEqualsSearchText(searchTerm) then
local socketCount = 0;
for _, socketType in pairs(ITEMSOCKETSTATFILTERS) do
if socketType then
local statValue = tonumber(stats[socketType]);
if statValue then
socketCount = socketCount + statValue;
end
end
end
if CompareNumbersByOperator(operator, socketCount, searchedStatValue) then
return true;
end
end
end
end
return false;
end
local function HaveStat (textValue)
for index, statItem in pairs(STATFILTERS) do
if textValue == index then
return STATFILTERS[index];
end
end
return nil;
end
local function IsItemStatMatch(searchTextItem, stats, operator)
if stats then
local searchedStat = tonumber(string.match(searchTextItem, "%d+"));
local searchTerm = searchTextItem.gsub(searchTextItem, tostring(searchedStat), "");
searchTerm = string.gsub(searchTerm, operator, "");
local statFilterFound = HaveStat(searchTerm);
if statFilterFound then
local statValue = tonumber(stats[statFilterFound]);
if CompareNumbersByOperator(operator, statValue, searchedStat) then
return true;
end
else
return FilterSockets(searchTextItem, stats, operator);
end
end
return false;
end
-- EndRegion
-- Region: Item Level Filter
local function HaveItemInfoFilter (textValue)
for index, itemInfoFilter in pairs(ITEMINFOFILTERS) do
if textValue == index then
return index;
end
end
return nil;
end
local function IsEquipableGear (textValue)
if textValue == nil or textValue == "" then
return false;
end
for index, equipLoc in ipairs(ITEMLEVELGEAREQUIPFILTER) do
if string.find(textValue, equipLoc) then
return false;
end
end
return true;
end
local function IsItemLevelFilter (textValue)
local itemLevelFilter = ITEMINFOFILTERS["ilvl"];
if string.match(textValue, itemLevelFilter) then
return true;
end
return false;
end
local function IsItemLevelFilterMatch(searchText, itemLvl, itemEquipLoc, operator)
local searchedItemLevel = tonumber(string.match(searchText, "%d+"));
local searchTerm = searchText.gsub(searchText, tostring(searchedItemLevel), "");
searchTerm = string.gsub(searchTerm, operator, "");
local itemInfoFilter = HaveItemInfoFilter(searchTerm);
if itemInfoFilter and itemLvl ~= nil and itemLvl > 0
--TODO Equipment filter patch
--and IsEquipableGear(itemEquipLoc)
and IsItemLevelFilter(itemInfoFilter)
then
if CompareNumbersByOperator(operator, itemLvl, searchedItemLevel) then
return true;
end
end
return false;
end
-- EndRegion
-- Add item to Search Result
local function AddItemToSearchResult(itemId, itemType, itemName, lootPage, dataId)
table.insert(AtlasLootCharDB["SearchResult"], { 0, itemId, itemType, itemName, lootPage, "", "", dataId.."|".."\"\"" });
end
-- Checks for Partial Matching
local partial = self.db.profile.PartialMatching;
-- Checks for Item Filters by searching for an Operator in the search text
local operator = HaveOperator(text);
for dataID, data in pairs(AtlasLoot_Data) do
for _, v in ipairs(data) do
if type(v[2]) == "number" and v[2] > 0 then
-- 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, _, _, _, itemEquipLoc = GetItemInfo(v[2]);
if not itemName then itemName = gsub(v[4], "=q%d=", "") end
if operator ~= nil then
local stats = GetItemStats("item:"..tostring(v[2]));
-- Currently only supports "&"
local binaryOperator = HaveBinaryOperator(text);
if binaryOperator ~= nil then
local searchConditionsMet = true;
local searchItems = SplitString(text, binaryOperator);
if searchItems then
for _, searchTextItem in ipairs(searchItems) do
local localOperator = HaveOperator(searchTextItem);
if not localOperator
or not (
-- Stat Filter
IsItemStatMatch(searchTextItem, stats, localOperator)
-- Item Level Filter
or IsItemLevelFilterMatch(searchTextItem, itemLvl, itemEquipLoc, localOperator)
)
then
searchConditionsMet = false;
break;
end
end
if searchConditionsMet then
AddItemToSearchResult(v[2], v[3], itemName, lootpage, dataID);
end
end
else
-- Stat Filter
if IsItemStatMatch(text, stats, operator)
-- Item Level Filter
or IsItemLevelFilterMatch(text, itemLvl, itemEquipLoc, operator)
then
AddItemToSearchResult(v[2], v[3], itemName, lootpage, dataID);
end
-- TODO itemQuality
-- TODO minLvl
-- TODO itemEquipLoc
end
-- Stat Table Cleanup
if stats then
table.wipe(stats);
end
end
local found;
if partial then
found = string.find(string.lower(itemName), text);
else
found = string.lower(itemName) == text;
end
if found then
local _, _, quality = string.find(v[4], "=q(%d)=");
if quality then itemName = "=q"..quality.."="..itemName end
if AtlasLoot_TableNames[dataID] then lootpage = AtlasLoot_TableNames[dataID][1]; else lootpage = "Argh!"; end
table.insert(AtlasLootCharDB["SearchResult"], { 0, v[2], v[3], itemName, lootpage, "", "", dataID.."|".."\"\"" });
end
elseif (v[2] ~= nil) and (v[2] ~= "") and (string.sub(v[2], 1, 1) == "s") then
local spellName = GetSpellInfo(string.sub(v[2], 2));
if not spellName then
if (string.sub(v[4], 1, 2) == "=d") then
spellName = gsub(v[4], "=ds=", "");
else
spellName = gsub(v[4], "=q%d=", "");
end
end
local found;
if partial then
found = string.find(string.lower(spellName), text);
else
found = string.lower(spellName) == text;
end
if found then
spellName = string.sub(v[4], 1, 4)..spellName;
if AtlasLoot_TableNames[dataID][1] then lootpage = AtlasLoot_TableNames[dataID][1]; else lootpage = "Argh!"; end
table.insert(AtlasLootCharDB["SearchResult"], { 0, v[2], v[3], spellName, lootpage, "", "", dataID.."|".."\"\"" });
end
end
end
end
if #AtlasLootCharDB["SearchResult"] == 0 then
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.
To check filter keys, type "/atlaslootfilterkeys".
To check filter examples, type "/atlaslootfilterexample".
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);
@@ -613,6 +589,13 @@ function AtlasLoot:ShowSearchOptions(button)
"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)
@@ -626,7 +609,7 @@ 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);
AtlasLoot_ShowWishListDropDown(v[2], v[3], v[4], v[5], v[8], this, nil, v[AtlasLoot_Difficulty.DIF_SEARCH]);
end
end
end
+777
View File
@@ -0,0 +1,777 @@
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
local modules = { "AtlasLoot_BurningCrusade", "AtlasLoot_Crafting", "AtlasLoot_OriginalWoW", "AtlasLoot_WorldEvents", "AtlasLoot_WrathoftheLichKing" };
AtlasLoot_QualityMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_DifficultyMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_DiffSubMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_EquipMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_EquipSubMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_WeaponSubMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_Argument1Menu = AceLibrary("Dewdrop-2.0");
AtlasLoot_Argument1SubMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_Argument2Menu = AceLibrary("Dewdrop-2.0");
AtlasLoot_Argument2SubMenu = AceLibrary("Dewdrop-2.0");
AtlasLoot_Argument3Menu = AceLibrary("Dewdrop-2.0");
AtlasLoot_Argument3SubMenu = AceLibrary("Dewdrop-2.0");
local GREY = "|cff999999";
local RED = "|cffff0000";
local WHITE = "|cffFFFFFF";
local GREEN = "|cff1eff00";
local PURPLE = "|cff9F3FFF";
local BLUE = "|cff0070dd";
local ORANGE = "|cffFF8400";
local DEFAULT = "|cffFFd200";
AdvSearchSubMenuEnabled = 0;
AdvSearchSubMenuText = "";
AdvSearchSubMenu2Enabled = 0;
AdvSearchSubMenuText = "";
AdvSearchSetup = false;
AtlasLoot_FrameMenuList = {
["EquipSubMenu"] = {AtlasLoot_EquipSubMenu, "AtlasLootAdvancedSearch_EquipSub", "Select Option", "equipType", "", "AtlasLootAdvancedSearch_WeaponSub"};
["MythicSubMenu"] = {AtlasLoot_DiffSubMenu, "AtlasLootAdvancedSearch_MythicSub", "Mythic+ 1", "difficulty", 5};
["WeaponSubMenu"] = {AtlasLoot_WeaponSubMenu, "AtlasLootAdvancedSearch_WeaponSub", "Select Weapon Type", "equipType", ""};
}
AtlasLoot_AdvancedSearchMenus = {
["Difficulty"] ={
[1] = {
{"Normal", "difficulty", 2, "MythicSubMenu", "Disable"},
},
[2] = {
{"Heroic", "difficulty", 3, "MythicSubMenu", "Disable"},
},
[3] = {
{"Mythic/Ascended", "difficulty", 4, "MythicSubMenu", "Disable"},
},
[4] = {
{"Mythic Plus", "difficulty", 5, "MythicSubMenu", "MythicPlus"},
},
[5] = {
{"Bloodforged", "difficulty", 1, "MythicSubMenu", "Disable"},
},
};
["MythicPlus"] = {
};
["Quality"] = {
[1] = {
{AtlasLoot_FixText("=q0=").."Poor", "quality", "poor"},
},
[2] = {
{AtlasLoot_FixText("=q1=").."Normal", "quality", "normal"},
},
[3] = {
{AtlasLoot_FixText("=q2=").."Uncommon", "quality", "uncommon"},
},
[4] = {
{AtlasLoot_FixText("=q3=").."Rare", "quality", "rare"},
},
[5] = {
{AtlasLoot_FixText("=q4=").."Epic", "quality", "epic"},
},
[6] = {
{AtlasLoot_FixText("=q5=").."Legendary", "quality", "legendary"},
},
};
["Equip"] = {
[1] = {
{"Head", "equip", "head", "EquipSubMenu", "ArmorType"},
},
[2] = {
{"Shoulder", "equip", "shoulder", "EquipSubMenu", "ArmorType"},
},
[3] = {
{"Chest", "equip", "chest", "EquipSubMenu", "ArmorType"},
},
[4] = {
{"Wrist", "equip", "wrist", "EquipSubMenu", "ArmorType"},
},
[5] = {
{"Hands", "equip", "hands", "EquipSubMenu", "ArmorType"},
},
[6] = {
{"Waist", "equip", "waist", "EquipSubMenu", "ArmorType"},
},
[7] = {
{"Legs", "equip", "legs", "EquipSubMenu", "ArmorType"},
},
[8] = {
{"Feet", "equip", "feet", "EquipSubMenu", "ArmorType"},
},
[9] = {
{"Back", "equip", "back", "EquipSubMenu", "Disable"},
},
[10] = {
{"Necklace", "equip", "neck", "EquipSubMenu", "Disable"},
},
[11] = {
{"Ring", "equip", "ring", "EquipSubMenu", "Disable"},
},
[12] = {
{"Trinket", "equip", "trinket", "EquipSubMenu", "Disable"},
},
[13] = {
{"Weapon/Shield", "equip", "#w", "EquipSubMenu", "WeaponEquip"},
},
[14] = {
{"Held in Off-Hand", "equip", "holdable", "EquipSubMenu", "Disable"},
},
[15] = {
{"Relic", "equip", "relic", "EquipSubMenu", "RelicType"},
},
};
["ArmorType"] = {
[1] = {
{"Cloth", "equipType", "cloth"},
},
[2] = {
{"Leather", "equipType", "leather"},
},
[3] = {
{"Mail", "equipType", "mail"},
},
[4] = {
{"Plate", "equipType", "plate"},
},
};
["RelicType"] = {
[1] = {
{"Idols", "equipType", "idol"},
},
[2] = {
{"Libram", "equipType", "libram"},
},
[3] = {
{"Totem", "equipType", "totem"},
},
[4] = {
{"Sigil", "equipType", "sigil"},
},
};
["WeaponEquip"] = {
[1] = {
{"One-Hand", "equip", "weapon", "WeaponSubMenu", "WeaponType"},
},
[2] = {
{"Two-Hand", "equip", "2hweapon", "WeaponSubMenu", "WeaponType"},
},
[3] = {
{"Main Hand", "equip", "mainhand", "WeaponSubMenu", "WeaponType"},
},
[4] = {
{"Off Hand", "equip", "offhand", "WeaponSubMenu", "WeaponType"},
},
[5] = {
{"Ranged", "equip", "ranged", "WeaponSubMenu", "WeaponType"},
}
};
["WeaponType"] = {
[1] = {
{"Axe", "equipType", "#w1#"}
},
[2] = {
{"Mace", "equipType", "#w6#"}
},
[3] = {
{"Sword", "equipType", "#w10#"}
},
[4] = {
{"Polearm", "equipType", "#w7#"}
},
[5] = {
{"Dagger", "equipType", "#w4#"}
},
[6] = {
{"Staff", "equipType", "#w9#"}
},
[7] = {
{"Fist Weapon", "equipType", "#w13#"}
},
[8] = {
{"Bow", "equipType", "#w2#"}
},
[9] = {
{"Gun", "equipType", "#w5#"}
},
[10] = {
{"Crossbow", "equipType", "#w3#"}
},
[11] = {
{"Wand", "equipType", "#w12#"}
},
[12] = {
{"Thrown", "equipType", "#w11#"}
},
[13] = {
{"Shield", "equipType", "#w8#"}
},
};
}
AtlasLoot_AdvancedSearchArguments = {
["Arguments"] = {
[1] = {
["Primary Stats"] = {
{"Stamina", "sta"},
{"Strength", "str"},
{"Agility", "agi"};
{"Intellect", "int"},
{"Spirit", "spr"},
}
};
[2] = {
["Secondary Stats"] = {
{"Attack Power", "ap"};
{"Spell Power", "sp"};
{"Crit", "crit"};
{"Hit", "hit"};
{"Haste", "haste"};
{"Expertise", "exp"};
{"Armor Pen", "arp"};
{"Spell Pen", "spp"};
}
};
[3] = {
["Defensive Stats"] = {
{"Defense", "def"};
{"Dodge", "dodge"};
{"Parry", "parry"};
{"Block", "block"};
{"Block Value", "bv"};
{"Resilience", "res"};
}
};
[4] = {
["Resistances"] = {
{"Armor", "armor"};
{"Holy Resist", "resholy"};
{"Fire Resist", "resfire"};
{"Nature Resist", "resnat"};
{"Frost Resist", "resfrost"};
{"Shadow Resist", "resshad"};
{"Arcane Resist", "resarc"};
}
};
[5] = {
["Sockets"] = {
{"Any", "socket"};
{"Red Socket", "socketred"};
{"Blue Socket", "socketblue"};
{"Yellow Socket", "socketyellow"};
{"Meta Socket", "socketmeta"};
}
};
[6] = {
["Other"] = {
{"Required Level", "minlvl"};
{"Item Level", "ilvl"};
}
};
[7] = {
{RED.."Reset", "reset"}
}
};
["Operators"] = {
[1] = {
{"Equals", "=", true};
},
[2] = {
{"Greater Than", ">", true}
},
[3] = {
{"Greater Than Or Equal", ">=", true}
},
[4] = {
{"Less Than", "<", true}
},
[5] = {
{"Less Than Or Equal", "<=", true}
},
[6] = {
{"Not Equal", "<>", true}
},
[7] = {
{RED.."Reset", "reset", true}
}
}
}
AdvancedSearchOptions = {
["quality"] = "",
["equip"] = "",
["equipType"] = "",
["difficulty"] = 0,
["arg1"] = "",
["arg1op"] = "",
["arg2"] = "",
["arg2op"] = "",
["arg3"] = "",
["arg3op"] = "",
}
function AtlasLoot_AdvancedSearchSetup()
AtlasLoot_AdvancedSearchRegister(AtlasLoot_QualityMenu, AtlasLootAdvancedSearch_Quality, AtlasLoot_AdvancedSearchMenus["Quality"]);
AtlasLoot_AdvancedSearchRegister(AtlasLoot_EquipMenu, AtlasLootAdvancedSearch_Equip, AtlasLoot_AdvancedSearchMenus["Equip"]);
AtlasLoot_AdvancedSearchRegister(AtlasLoot_DifficultyMenu, AtlasLootAdvancedSearch_Difficulty, AtlasLoot_AdvancedSearchMenus["Difficulty"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_Argument1Menu, AtlasLootAdvancedSearch_Argument1, "1", AtlasLoot_AdvancedSearchArguments["Arguments"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_Argument2Menu, AtlasLootAdvancedSearch_Argument2, "2", AtlasLoot_AdvancedSearchArguments["Arguments"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_Argument3Menu, AtlasLootAdvancedSearch_Argument3, "3", AtlasLoot_AdvancedSearchArguments["Arguments"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_Argument1SubMenu, AtlasLootAdvancedSearch_Argument1Sub, "1", AtlasLoot_AdvancedSearchArguments["Operators"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_Argument2SubMenu, AtlasLootAdvancedSearch_Argument2Sub, "2", AtlasLoot_AdvancedSearchArguments["Operators"]);
AtlasLoot_AdvancedSearchArgumentRegister(AtlasLoot_Argument3SubMenu, AtlasLootAdvancedSearch_Argument3Sub, "3", AtlasLoot_AdvancedSearchArguments["Operators"]);
--Setup Mythic+ dropdown options;
for i = 1, 30, 1 do
AtlasLoot_AdvancedSearchMenus["MythicPlus"][i] = {
{"Mythic+ "..i, "difficulty", i + 4};
}
end
AdvSearchSetup = true;
end
function AtlasLoot_AdvancedSearchShow()
if (AtlasLootAdvancedSearch:IsVisible()) then
AtlasLoot_AdvancedSearchClose();
return;
end
pFrame = { "TOPLEFT", "AtlasLootDefaultFrame_LootBackground", "TOPLEFT", "2", "-2" };
if not (AdvSearchSetup) then AtlasLoot_AdvancedSearchSetup() end
--Hide all elements that could be in the AtlasTable
getglobal("AtlasLootItemsFrame_NEXT"):Hide();
getglobal("AtlasLootItemsFrame_PREV"):Hide();
getglobal("AtlasLootItemsFrame_BACK"):Hide();
if AtlasLootDefaultFrame_SubMenu2:IsEnabled() then
AdvSearchSubMenu2Enabled = 1;
AdvSearchSubMenu2Text = AtlasLootDefaultFrame_SelectedTable2:GetText();
AtlasLootDefaultFrame_SubMenu2:Disable();
AtlasLootDefaultFrame_SelectedTable2:SetText("");
AtlasLootDefaultFrame_SelectedTable2:Hide();
end
if AtlasLootDefaultFrame_SubMenu:IsEnabled() then
AdvSearchSubMenuEnabled = 1;
AdvSearchSubMenuText = AtlasLootDefaultFrame_SelectedTable:GetText();
AtlasLootDefaultFrame_SubMenu:Disable();
AtlasLootDefaultFrame_SelectedTable:SetText("");
end
AtlasLootServerQueryButton:Hide();
--Ditch the Quicklook selector
AtlasLoot_QuickLooks:Hide();
AtlasLootQuickLooksButton:Hide();
-- Hide the Filter Check-Box
AtlasLootFilterCheck:Hide();
for i = 1, 30, 1 do
getglobal("AtlasLootItem_"..i.."_Unsafe"):Hide();
getglobal("AtlasLootMenuItem_"..i):Hide();
getglobal("AtlasLootItem_"..i):Hide();
getglobal("AtlasLootItem_"..i).itemID = 0;
getglobal("AtlasLootItem_"..i).spellitemID = 0;
end
--Reset Search options
AtlasLoot_AdvancedSearchReset();
AtlasLoot_BossName:SetText("Advanced Search");
AtlasLootAdvancedSearch:ClearAllPoints();
AtlasLootAdvancedSearch:SetParent(pFrame[2]);
AtlasLootAdvancedSearch:ClearAllPoints();
AtlasLootAdvancedSearch:SetPoint(pFrame[1], pFrame[2], pFrame[3], pFrame[4], pFrame[5]);
AtlasLootAdvancedSearch:Show();
end
function AtlasLoot_AdvancedSearchClose()
AtlasLootAdvancedSearch:Hide();
AtlasLootServerQueryButton:Show();
if AdvSearchSubMenu2Enabled then
AtlasLootDefaultFrame_SubMenu2:Enable();
AtlasLootDefaultFrame_SelectedTable2:SetText(AdvSearchSubMenu2Text);
end
if AdvSearchSubMenuEnabled then
AtlasLootDefaultFrame_SubMenu:Enable();
AtlasLootDefaultFrame_SelectedTable:SetText(AdvSearchSubMenuText);
end
AdvSearchSubMenuEnabled = 0;
AdvSearchSubMenu2Enabled = 0;
if (SearchPrevData[1] ~= "") then
AtlasLoot_ShowItemsFrame(SearchPrevData[1], SearchPrevData[2], SearchPrevData[3], SearchPrevData[4]);
end
end
function AtlasLoot_AdvancedSearchReset()
AdvancedSearchOptions = {
["quality"] = "",
["equip"] = "",
["equipType"] = "",
["difficulty"] = 0,
["arg1"] = "",
["arg1op"] = "",
["arg2"] = "",
["arg2op"] = "",
["arg3"] = "",
["arg3op"] = "",
}
AtlasLootAdvancedSearch_Quality:SetText("Select Quality");
AtlasLootAdvancedSearch_Equip:SetText("Select Item Type");
AtlasLootAdvancedSearch_Difficulty:Disable();
AtlasLootAdvancedSearch_Difficulty:SetText("Select Difficulty");
AtlasLootAdvancedSearch_Argument1:SetText("Select Option");
AtlasLootAdvancedSearch_Argument2:SetText("Select Option");
AtlasLootAdvancedSearch_Argument3:SetText("Select Option");
AtlasLootAdvancedSearch_EquipSub:Disable();
AtlasLootAdvancedSearch_EquipSub:SetText("Select Option")
AtlasLootAdvancedSearch_MythicSub:Disable();
AtlasLootAdvancedSearch_MythicSub:SetText("Mythic+ 1");
AtlasLootAdvancedSearch_WeaponSub:Disable();
AtlasLootAdvancedSearch_WeaponSub:SetText("Select Weapon Type")
AtlasLootAdvancedSearch_Argument1Sub:Disable();
AtlasLootAdvancedSearch_Argument1Sub:SetText("Select Option");
AtlasLootAdvancedSearch_Argument1Value:Hide();
AtlasLootAdvancedSearch_Argument1Value:SetText("");
AtlasLootAdvancedSearch_Argument2Sub:Disable();
AtlasLootAdvancedSearch_Argument2Sub:SetText("Select Option");
AtlasLootAdvancedSearch_Argument2Value:Hide();
AtlasLootAdvancedSearch_Argument2Value:SetText("");
AtlasLootAdvancedSearch_Argument3Sub:Disable();
AtlasLootAdvancedSearch_Argument3Sub:SetText("Select Option");
AtlasLootAdvancedSearch_Argument3Value:Hide();
AtlasLootAdvancedSearch_Argument3Value:SetText("");
end
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
AdvancedSearchOptions[AtlasLoot_FrameMenuList[ChildMenu][4]] = AtlasLoot_FrameMenuList[ChildMenu][5];
getglobal(AtlasLoot_FrameMenuList[ChildMenu][2]):Disable();
--Disable assigned children menus as well
if(AtlasLoot_FrameMenuList[ChildMenu][6]) then
getglobal(AtlasLoot_FrameMenuList[ChildMenu][6]):Disable();
end
else
AtlasLoot_AdvancedSearchRegister(AtlasLoot_FrameMenuList[ChildMenu][1], getglobal(AtlasLoot_FrameMenuList[ChildMenu][2]), AtlasLoot_AdvancedSearchMenus[ChildMenuRegister]);
AdvancedSearchOptions[AtlasLoot_FrameMenuList[ChildMenu][4]] = AtlasLoot_FrameMenuList[ChildMenu][5];
getglobal(AtlasLoot_FrameMenuList[ChildMenu][2]):Enable();
getglobal(AtlasLoot_FrameMenuList[ChildMenu][2]):SetText(AtlasLoot_FrameMenuList[ChildMenu][3]);
--Disable assigned children menus as well
if(AtlasLoot_FrameMenuList[ChildMenu][6]) then
getglobal(AtlasLoot_FrameMenuList[ChildMenu][6]):Disable();
end
end
end
AdvancedSearchOptions[VariableToSet] = VariableValue;
Object[1]:SetText(Object[3]);
Object[2]:Close();
end
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
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
)
end
else
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;
end
end
end
end
end
--Close button
DropDown:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'func', function() DropDown:Close() end,
'notCheckable', true
)
end
end,
'dontHook', true
)
end
function AtlasLoot_AdvancedSearchArgumentClick(Object, VariableToSet, VariableValue, IsOperator)
if IsOperator and VariableValue == "reset" then
AdvancedSearchOptions["arg"..VariableToSet.."op"] = "";
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):SetText("");
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):Hide();
Object[1]:SetText("Select Option");
Object[2]:Close();
elseif IsOperator then
AdvancedSearchOptions["arg"..VariableToSet.."op"] = VariableValue;
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):Show();
Object[1]:SetText(Object[3]);
Object[2]:Close();
elseif VariableValue == "reset" then
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Sub"):SetText("Select Option");
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Sub"):Disable();
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):SetText("");
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):Hide();
AdvancedSearchOptions["arg"..VariableToSet] = "";
AdvancedSearchOptions["arg"..VariableToSet.."op"] = "";
Object[1]:SetText("Select Option");
Object[2]:Close();
else
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Sub"):SetText("Select Option");
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Sub"):Enable();
AdvancedSearchOptions["arg"..VariableToSet.."op"] = "";
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):SetText("");
getglobal("AtlasLootAdvancedSearch_Argument"..VariableToSet.."Value"):Hide();
AdvancedSearchOptions["arg"..VariableToSet] = VariableValue;
Object[1]:SetText(Object[3]);
Object[2]:Close();
end
end
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
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;
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
)
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
)
end
else
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;
end
end
end
end
end
--Close button
DropDown:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'func', function() DropDown:Close() end,
'notCheckable', true
)
elseif level == 2 then
if value then
for k,v in ipairs(value) do
if type(v) == "table" then
if (type(v[1]) == "string") then
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
)
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
)
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
)
end
end
end
end
end
DropDown:AddLine(
'text', AL["Close Menu"],
'textR', 0,
'textG', 1,
'textB', 1,
'func', function() DropDown:Close() end,
'notCheckable', true
)
end
end,
'dontHook', true
)
end
function AtlasLoot:AdvancedSearch(Text, args)
if not Text then return end
Text = strtrim(Text);
local advSearchString = Text or "";
local function AppendSearchString(toAppend, str)
if toAppend ~= "" then
toAppend = toAppend.."&"..str;
return toAppend;
end
return str;
end
if AdvancedSearchOptions["quality"] ~= "" then
advSearchString = AppendSearchString(advSearchString, "quality="..AdvancedSearchOptions["quality"]);
end
if AdvancedSearchOptions["equipType"] ~= "" then
--advSearchString = AppendSearchString(advSearchString, AtlasLoot_FixText(AdvancedSearchOptions["equipType"]));
end
if AdvancedSearchOptions["equip"] ~= "" then
advSearchString = AppendSearchString(advSearchString, "slot="..AdvancedSearchOptions["equip"]);
end
for i = 1, 3, 1 do
if AdvancedSearchOptions["arg"..i] ~= "" then
if AdvancedSearchOptions["arg"..i.."op"] == "" then
AdvancedSearchOptions["arg"..i.."op"] = ">"
args[i] = "0";
print(args[i]);
end
advSearchString = AppendSearchString(advSearchString, AdvancedSearchOptions["arg"..i]..AdvancedSearchOptions["arg"..i.."op"]..args[i]);
end
end
print(string.lower(advSearchString));
AtlasLoot:Search(string.lower(advSearchString));
end
+20 -37
View File
@@ -32,7 +32,7 @@ AtlasLoot_WishListDrop = AceLibrary("Dewdrop-2.0");
AtlasLoot_WishList = nil;
local currentPage = 1;
local playerName = UnitName("player")
local itemID, itemTexture, itemName, lootPage, sourcePage, lasttyp, xtyp, xarg2, xarg3
local itemID, itemTexture, itemName, lootPage, sourcePage, lasttyp, xtyp, xarg2, xarg3, difficulty
local lastWishListtyp, lastWishListarg2, lastWishListarg3
local OptionsLoadet = false
@@ -110,7 +110,7 @@ function AtlasLoot_WishListAddDropClick(typ, arg2, arg3, arg4)
return;
end
table.insert(AtlasLootWishList["Own"][playerName][arg2], { 0, itemID, itemTexture, itemName, lootPage, "", "", sourcePage });
table.insert(AtlasLootWishList["Own"][playerName][arg2], { 0, itemID, itemTexture, itemName, lootPage, "", "", sourcePage, [AtlasLoot_Difficulty.DIF_SEARCH] = difficulty});
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot"]..": "..AtlasLoot_FixText(itemName)..GREY..AL[" added to the WishList."]..WHITE.." ("..AtlasLootWishList["Own"][playerName][arg2]["info"][1]..")");
AtlasLoot_WishList = AtlasLoot_CategorizeWishList(AtlasLootWishList["Own"][playerName][arg2]);
@@ -122,7 +122,7 @@ function AtlasLoot_WishListAddDropClick(typ, arg2, arg3, arg4)
return;
end
table.insert(AtlasLootWishList["Own"][arg2][arg3], { 0, itemID, itemTexture, itemName, lootPage, "", "", sourcePage });
table.insert(AtlasLootWishList["Own"][arg2][arg3], { 0, itemID, itemTexture, itemName, lootPage, "", "", sourcePage, [AtlasLoot_Difficulty.DIF_SEARCH] = difficulty});
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot"]..": "..AtlasLoot_FixText(itemName)..GREY..AL[" added to the WishList."]..WHITE.." ("..AtlasLootWishList["Own"][arg2][arg3]["info"][1].." - "..arg2..")");
AtlasLoot_WishList = AtlasLoot_CategorizeWishList(AtlasLootWishList["Own"][arg2][arg3]);
@@ -134,7 +134,7 @@ function AtlasLoot_WishListAddDropClick(typ, arg2, arg3, arg4)
return;
end
table.insert(AtlasLootWishList["Shared"][arg2][arg3], { 0, itemID, itemTexture, itemName, lootPage, "", "", sourcePage });
table.insert(AtlasLootWishList["Shared"][arg2][arg3], { 0, itemID, itemTexture, itemName, lootPage, "", "", sourcePage, [AtlasLoot_Difficulty.DIF_SEARCH] = difficulty});
DEFAULT_CHAT_FRAME:AddMessage(RED..AL["AtlasLoot"]..": "..AtlasLoot_FixText(itemName)..GREY..AL[" added to the WishList."]..WHITE.." ("..AtlasLootWishList["Shared"][arg2][arg3]["info"][1].." - "..arg2..")");
AtlasLoot_WishList = AtlasLoot_CategorizeWishList(AtlasLootWishList["Shared"][arg2][arg3]);
@@ -148,8 +148,8 @@ end
AtlasLoot_ShowWishListDropDown(xitemID, xitemTexture, xitemName, xlootPage, xsourcePage, button, show)
Show the dropdownlist with the wishlists
]]
function AtlasLoot_ShowWishListDropDown(xitemID, xitemTexture, xitemName, xlootPage, xsourcePage, button, show)
itemID, itemTexture, itemName, lootPage, sourcePage = xitemID, xitemTexture, xitemName, xlootPage, xsourcePage
function AtlasLoot_ShowWishListDropDown(xitemID, xitemTexture, xitemName, xlootPage, xsourcePage, button, show, xdifficulty)
itemID, itemTexture, itemName, lootPage, sourcePage, difficulty = xitemID, xitemTexture, xitemName, xlootPage, xsourcePage, xdifficulty;
if AtlasLootWishList["Options"][playerName]["UseDefaultWishlist"] == false then
if AtlasLoot_WishListDrop:IsOpen(button) then
AtlasLoot_WishListDrop:Close(1);
@@ -499,40 +499,23 @@ function AtlasLoot_CategorizeWishList(wlTable)
for _, v in pairs(wlTable) do
if v[8] and v[8] ~= "" then
local dataID = strsplit("|", v[8]);
if v[AtlasLoot_Difficulty.DIF_SEARCH] then
local name = AtlasLoot_GetWishListSubheading(dataID)
dataID = dataID..AtlasLoot_Difficulty.Search[v[AtlasLoot_Difficulty.DIF_SEARCH]];
if not subheadings[dataID] then
subheadings[dataID] = name;
if subheadings[dataID] then subheadings[dataID] = subheadings[dataID].." ("..AtlasLoot_Difficulty.Search[v[AtlasLoot_Difficulty.DIF_SEARCH]]..")" end
end
-- Build subheading table
if not subheadings[dataID] then
-- Heroic handling
local HeroicCheck=string.sub(dataID, string.len(dataID)-10, string.len(dataID));
local NonHeroicdataID=string.sub(dataID, 1, string.len(dataID)-6);
local BigraidCheck=string.sub(dataID, string.len(dataID)-4, string.len(dataID));
if BigraidCheck == "25Man" or HeroicCheck == "25ManHEROIC" then
HeroicCheck=string.sub(dataID, string.len(dataID)-10, string.len(dataID));
NonHeroicdataID=string.sub(dataID, 1, string.len(dataID)-11);
else
HeroicCheck=string.sub(dataID, string.len(dataID)-5, string.len(dataID));
NonHeroicdataID=string.sub(dataID, 1, string.len(dataID)-6);
elseif not subheadings[dataID] then
subheadings[dataID] = AtlasLoot_GetWishListSubheading(dataID);
-- If search failed, replace ID like "Aldor2" to "Aldor1" and try again
if not subheadings[dataID] and string.find(dataID, "^%a+%d?$") then
subheadings[dataID] = AtlasLoot_GetWishListSubheading(strsub(dataID, 1, strlen(dataID) - 1).."1");
end
if HeroicCheck == "HEROIC" then
subheadings[dataID] = AtlasLoot_GetWishListSubheading(NonHeroicdataID);
if subheadings[dataID] then subheadings[dataID] = subheadings[dataID].." ("..AL["Heroic"]..")" end
elseif HeroicCheck == "25ManHEROIC" then
subheadings[dataID] = AtlasLoot_GetWishListSubheading(NonHeroicdataID);
if subheadings[dataID] then subheadings[dataID] = subheadings[dataID].." ("..AL["25 Man"].."-"..AL["Heroic"]..")" end
elseif strsub(dataID, strlen(dataID) - 4) == "25Man" then
subheadings[dataID] = AtlasLoot_GetWishListSubheading(strsub(dataID, 1, strlen(dataID) - 5));
if subheadings[dataID] then subheadings[dataID] = subheadings[dataID].." ("..AL["25 Man"]..")" end
else
subheadings[dataID] = AtlasLoot_GetWishListSubheading(dataID);
-- If search failed, replace ID like "Aldor2" to "Aldor1" and try again
if not subheadings[dataID] and string.find(dataID, "^%a+%d?$") then
subheadings[dataID] = AtlasLoot_GetWishListSubheading(strsub(dataID, 1, strlen(dataID) - 1).."1");
end
end
-- If still cant find it, mark it with Unknown
if not subheadings[dataID] then subheadings[dataID] = AL["Unknown"] end
end
-- If still cant find it, mark it with Unknown
if not subheadings[dataID] then subheadings[dataID] = AL["Unknown"] end
-- Build category tables
if not categories[subheadings[dataID]] then categories[subheadings[dataID]] = {} end
table.insert(categories[subheadings[dataID]], v);
@@ -169,6 +169,8 @@ function AtlasLoot_DifficultyDisable() --Disables Difficulty Menu
end
function AtlasLoot_DifficultyEnable(dataID, dataSource) --Enables Difficulty Menu
if not AtlasLoot_Difficulty[dataSource[dataID].Type] then return end
AtlasLootDefaultFrame_SubMenu2:Enable();
AtlasLoot_DewdropSubMenu2:Unregister(AtlasLootDefaultFrame_SubMenu2);
AtlasLoot_DewdropSubMenu2Register(AtlasLoot_Difficulty[dataSource[dataID].Type]);
@@ -670,7 +672,11 @@ function AtlasLoot_SetNewStyle(style)
"AtlasLootDefaultFrameSearchButton",
"AtlasLootDefaultFrameSearchClearButton",
"AtlasLootDefaultFrameLastResultButton",
"AtlasLootDefaultFrameWishListButton"
"AtlasLootDefaultFrameWishListButton",
"AtlasLootDefaultFrameAdvancedSearchButton",
"AtlasLootAdvancedSearch_SearchButton",
"AtlasLootAdvancedSearch_SearchClearButton",
"AtlasLootAdvancedSearch_LastResultButton"
}
if style == "new" then
@@ -44,7 +44,7 @@
</OnShow>
</Scripts>
</Button>
<Button name="$parent_LoadModules" inherits="AtlasLootDefaultFrameButtonTemplate">
<Button name="$parent_LoadModules" inherits="AtlasLootDefaultFrameButtonTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT">
<Offset>
@@ -183,49 +183,12 @@
</Layer>
</Layers>
</Frame>
<Button name="$parent_Preset1" inherits="AtlasLootDefaultFrameButtonTemplate">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="$parent" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="75" y="63"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnEnter>
if this:IsEnabled() then
GameTooltip:ClearLines();
GameTooltip:SetOwner(this, "ANCHOR_RIGHT", -(this:GetWidth() / 2), 5);
GameTooltip:AddLine(AtlasLootCharDB["QuickLooks"][1][3]);
GameTooltip:Show();
end
</OnEnter>
<OnLeave>
if(GameTooltip:IsVisible()) then
GameTooltip:Hide();
end
</OnLeave>
<OnClick>
if AtlasLoot_IsLootTableAvailable(AtlasLootCharDB["QuickLooks"][1][1]) then
pFrame = { "TOPLEFT", "AtlasLootDefaultFrame_LootBackground", "TOPLEFT", "2", "-2" };
AtlasLoot_ShowItemsFrame(AtlasLootCharDB["QuickLooks"][1][1], AtlasLootCharDB["QuickLooks"][1][2], AtlasLootCharDB["QuickLooks"][1][3], pFrame);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["QuickLook"].." 1");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
if ((not AtlasLootCharDB["QuickLooks"][1]) or (not AtlasLootCharDB["QuickLooks"][1][1])) or (AtlasLootCharDB["QuickLooks"][1][1]==nil) then
this:Disable();
end
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Preset2" inherits="AtlasLootDefaultFrameButtonTemplate">
<Anchors>
<Anchor point="LEFT" relativeTo="$parent_Preset1" relativePoint="RIGHT">
<Anchor point="BOTTOM" relativeTo="$parent" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="5" y="0"/>
<AbsDimension x="0" y="63"/>
</Offset>
</Anchor>
</Anchors>
@@ -258,6 +221,44 @@
end
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Preset1" inherits="AtlasLootDefaultFrameButtonTemplate">
<Anchors>
<Anchor point="RIGHT" relativeTo="$parent_Preset2" relativePoint="LEFT">
<Offset>
<AbsDimension x="-5" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnEnter>
if this:IsEnabled() then
GameTooltip:ClearLines();
GameTooltip:SetOwner(this, "ANCHOR_RIGHT", -(this:GetWidth() / 2), 5);
GameTooltip:AddLine(AtlasLootCharDB["QuickLooks"][1][3]);
GameTooltip:Show();
end
</OnEnter>
<OnLeave>
if(GameTooltip:IsVisible()) then
GameTooltip:Hide();
end
</OnLeave>
<OnClick>
if AtlasLoot_IsLootTableAvailable(AtlasLootCharDB["QuickLooks"][1][1]) then
pFrame = { "TOPLEFT", "AtlasLootDefaultFrame_LootBackground", "TOPLEFT", "2", "-2" };
AtlasLoot_ShowItemsFrame(AtlasLootCharDB["QuickLooks"][1][1], AtlasLootCharDB["QuickLooks"][1][2], AtlasLootCharDB["QuickLooks"][1][3], pFrame);
end
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["QuickLook"].." 1");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
if ((not AtlasLootCharDB["QuickLooks"][1]) or (not AtlasLootCharDB["QuickLooks"][1][1])) or (AtlasLootCharDB["QuickLooks"][1][1]==nil) then
this:Disable();
end
</OnShow>
</Scripts>
</Button>
<Button name="$parent_Preset3" inherits="AtlasLootDefaultFrameButtonTemplate">
<Anchors>
@@ -335,14 +336,33 @@
</OnShow>
</Scripts>
</Button>
<Button name="AtlasLootDefaultFrameWishListButton" inherits="AtlasLootDefaultFrameButtonTemplate">
<Anchors>
<Anchor point="RIGHT" relativeTo="$parent_Preset1" relativePoint="LEFT">
<Offset>
<AbsDimension x="-5" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
AtlasLoot_ShowWishListDropDown("","","","","",this,true)
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["Wishlist"]);
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
</Scripts>
</Button>
<EditBox name="AtlasLootDefaultFrameSearchBox" inherits="InputBoxTemplate" letters="100">
<Size>
<AbsDimension x="180" y="32" />
<AbsDimension x="190" y="32" />
</Size>
<Anchors>
<Anchor point="BOTTOM" relativeTo="$parent" relativePoint="BOTTOM">
<Anchor point="TOPLEFT" relativeTo="AtlasLootDefaultFrameWishListButton" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-70" y="30"/>
<AbsDimension x="7" y="-3"/>
</Offset>
</Anchor>
</Anchors>
@@ -358,14 +378,14 @@
</Scripts>
<FontString name="AtlasLootDefaultFrameSearchString" inherits="GameFontNormal"></FontString>
</EditBox>
<Button name="AtlasLootDefaultFrameSearchButton" inherits="UIPanelButtonTemplate2" parent="AtlasLootDefaultFrameSearchBox">
<Button name="AtlasLootDefaultFrameSearchButton" inherits="UIPanelButtonTemplate2">
<Size>
<AbsDimension x="69" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT">
<Anchor point="LEFT" relativeTo="AtlasLootDefaultFrameSearchBox" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
<AbsDimension x="2"/>
</Offset>
</Anchor>
</Anchors>
@@ -388,7 +408,7 @@
<Anchors>
<Anchor point="LEFT" relativeTo="AtlasLootDefaultFrameSearchButton" relativePoint="RIGHT">
<Offset>
<AbsDimension x="-6" y="0"/>
<AbsDimension x="-5" y="0"/>
</Offset>
</Anchor>
</Anchors>
@@ -435,7 +455,7 @@
<Anchors>
<Anchor point="LEFT" relativeTo="AtlasLootDefaultFrameSearchClearButton" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
<AbsDimension x="1" y="0"/>
</Offset>
</Anchor>
</Anchors>
@@ -450,26 +470,27 @@
</OnClick>
</Scripts>
</Button>
<Button name="AtlasLootDefaultFrameWishListButton" inherits="UIPanelButtonTemplate2" parent="AtlasLootDefaultFrame">
<Button name="AtlasLootDefaultFrameAdvancedSearchButton" inherits="UIPanelButtonTemplate2">
<Size>
<AbsDimension x="100" y="32"/>
<AbsDimension x="95" y="32"/>
</Size>
<Anchors>
<Anchor point="RIGHT" relativeTo="AtlasLootDefaultFrameSearchBox" relativePoint="LEFT">
<Anchor point="LEFT" relativeTo="AtlasLootDefaultFrameLastResultButton" relativePoint="RIGHT">
<Offset>
<AbsDimension x="-7" y="0"/>
<AbsDimension x="2"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
AtlasLoot_ShowWishListDropDown("","","","","",this,true)
</OnClick>
<OnShow>
local AL = LibStub("AceLocale-3.0"):GetLocale("AtlasLoot");
this:SetText(AL["Wishlist"]);
this:SetText("Advanced");
this:SetFrameLevel( (this:GetParent()):GetFrameLevel() + 1 );
</OnShow>
<OnClick>
AtlasLoot_AdvancedSearchShow();
AtlasLootDefaultFrameSearchBox:ClearFocus();
</OnClick>
</Scripts>
</Button>
</Frames>
+1 -1
View File
@@ -4,7 +4,7 @@
## Title-zhTW: |r|cFF0099FF[地圖]|rAL 小地圖按鍵
## Notes-zhTW: AtlasLoot 小地圖按鍵
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
@@ -8,7 +8,7 @@
## Notes-zhCN: AtlasLoot Enhanced 的《燃烧的远征》副本掉落信息
## Notes-zhTW: AtlasLoot 燃燒的遠征副本掉落物品資料庫
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
+43 -46
View File
@@ -148,7 +148,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 25, 27414, "", "=q3=Mok'Nathal Beast-Mask", "=ds=#s1#, #a3#", "", "11.27%"};
{ 26, 27413, "", "=q3=Ring of the Exarchs", "=ds=#s13#", "", "10.42%"};
{ 27, 27416, "", "=q3=Fetish of the Fallen", "=ds=#s14#", "", "12.81%"};
{ 28, 27412, "", "=q3=Ironstaff of Regeneration", "=ds=#w9#", "", "11.95%"};
{ 28, 27412, "", "=q3=Ironstaff of Regeneration", "=ds=#h2#, #w9#", "", "11.95%"};
Prev = "AuchCryptsShirrak";
Next = "AuchCryptsAvatar";
Type = "BCDungeon";
@@ -161,7 +161,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 2, 28268, "", "=q3=Natural Mender's Wraps", "=ds=#s9#, #a2#", "", "3.94%"};
{ 3, 27876, "", "=q3=Will of the Fallen Exarch", "=ds=#h3#, #w6#", "", "5.10%"};
{ 4, 27937, "", "=q3=Sky Breaker", "=ds=#h3#, #w6#", "", "3.48%"};
{ 5, 27877, "", "=q3=Draenic Wildstaff", "=ds=#w9#", "", "4.87%"};
{ 5, 27877, "", "=q3=Draenic Wildstaff", "=ds=#h2#, #w9#", "", "4.87%"};
{ 7, 27797, "", "=q3=Wastewalker Shoulderpads", "=ds=#s3#, #a2# (D3)", "", "3.94%"};
Prev = "AuchCryptsExarch";
Type = "BCDungeon";
@@ -205,7 +205,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 4, 25947, "", "=q3=Lightning-Rod Pauldrons", "=ds=#s3#, #a3#", "", "11.25%"};
{ 5, 25952, "", "=q3=Scimitar of the Nexus-Stalkers", "=ds=#h1#, #w10#", "", "12.12%"};
{ 6, 25944, "", "=q3=Shaarde the Greater", "=ds=#h2#, #w10#", "", "9.35%"};
{ 7, 25950, "", "=q3=Staff of Polarities", "=ds=#w9#", "", "9.91%"};
{ 7, 25950, "", "=q3=Staff of Polarities", "=ds=#h2#, #w9#", "", "9.91%"};
{ 16, 0, "INV_Box_01", "=q6=#j3#", ""};
{ 17, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
{ 18, 30584, "", "=q4=Enscribed Fire Opal", "=ds=#e7#", "", "0.08%"};
@@ -262,7 +262,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 23, 28400, "", "=q3=Warp-Storm Warblade", "=ds=#h1#, #w10#"};
{ 24, 27829, "", "=q3=Axe of the Nexus-Kings", "=ds=#h2#, #w1#", "", "9.09%"};
{ 25, 27840, "", "=q3=Scepter of Sha'tar", "=ds=#h2#, #w6#"};
{ 26, 27842, "", "=q3=Grand Scepter of the Nexus-Kings", "=ds=#w9#", "", "9.09%"};
{ 26, 27842, "", "=q3=Grand Scepter of the Nexus-Kings", "=ds=#h2#, #w9#", "", "9.09%"};
{ 28, 22921, "", "=q2=Recipe: Major Frost Protection Potion", "=ds=#p1# (360)", "", "2.85%"};
Prev = "AuchManaNexusPrince";
Next = "AuchManaYor";
@@ -358,7 +358,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 22, 29249, "", "=q4=Bands of the Benevolent", "=ds=#s8#, #a1#", "", "4.49%"};
{ 23, 29259, "", "=q4=Bracers of the Hunt", "=ds=#s8#, #a3#", "", "7.87%"};
{ 24, 32073, "", "=q4=Spaulders of Dementia", "=ds=#s3#, #a4#"};
{ 25, 29355, "", "=q4=Terokk's Shadowstaff", "=ds=#w9#", "", "0.16%"};
{ 25, 29355, "", "=q4=Terokk's Shadowstaff", "=ds=#h2#, #w9#", "", "0.16%"};
{ 27, 33834, "", "=q1=The Headfeathers of Ikiss", "=ds=#m3#", "", "100%"};
Prev = "AuchSethekkDarkweaver";
Next = "AuchSethekkRavenGod";
@@ -588,7 +588,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 16, 32335, "", "=q4=Unstoppable Aggressor's Ring", "=ds=#s13#", "", "16%"};
{ 17, 32501, "", "=q4=Shadowmoon Insignia", "=ds=#s14#", "", "15%"};
{ 18, 32269, "", "=q4=Messenger of Fate", "=ds=#h1#, #w4#", "", "16%"};
{ 19, 32344, "", "=q4=Staff of Immaculate Recovery", "=ds=#w9#", "", "15%"};
{ 19, 32344, "", "=q4=Staff of Immaculate Recovery", "=ds=#h2#, #w9#", "", "15%"};
{ 20, 32343, "", "=q4=Wand of Prismatic Focus", "=ds=#w12#", "", "14%"};
{ 22, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
Prev = "BTGorefiend";
@@ -672,7 +672,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 18, 31090, "", "=q4=Chestguard of the Forgotten Vanquisher", "=q1=#m1# =ds=#c6#, #c3#, #c1#", "", "78%"};
{ 20, 32471, "", "=q4=Shard of Azzinoth", "=ds=#h1#, #w4#", "", "16%"};
{ 21, 32500, "", "=q4=Crystal Spire of Karabor", "=ds=#h3#, #w6#", "", "15%"};
{ 22, 32374, "", "=q4=Zhar'doom, Greatstaff of the Devourer", "=ds=#w9#", "", "14%"};
{ 22, 32374, "", "=q4=Zhar'doom, Greatstaff of the Devourer", "=ds=#h2#, #w9#", "", "14%"};
{ 23, 32375, "", "=q4=Bulwark of Azzinoth", "=ds=#w8#", "", "14%"};
{ 24, 32336, "", "=q4=Black Bow of the Betrayer", "=ds=#w2#", "", "16%"};
Prev = "BTCouncil";
@@ -879,7 +879,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 3, 28034, "", "=q3=Hourglass of the Unraveller", "=ds=#s14#", "", "13.69%"};
{ 4, 28187, "", "=q3=Star-Heart Lamp", "=ds=#s15#", "", "11.83%"};
{ 5, 28184, "", "=q3=Millennium Blade", "=ds=#h1#, #w10#", "", "11.74%"};
{ 6, 28033, "", "=q3=Epoch-Mender", "=ds=#w9#", "", "13.80%"};
{ 6, 28033, "", "=q3=Epoch-Mender", "=ds=#h2#, #w9#", "", "13.80%"};
{ 16, 0, "INV_Box_01", "=q6=#j27#", ""};
{ 17, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
{ 18, 30558, "", "=q4=Glimmering Fire Opal", "=ds=#e7#"};
@@ -904,7 +904,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 10, 28207, "", "=q3=Pauldrons of the Crimson Flight", "=ds=#s3#, #a4#", "", "11.11%"};
{ 11, 28190, "", "=q3=Scarab of the Infinite Cycle", "=ds=#s14#", "", "11.32%"};
{ 12, 28189, "", "=q3=Latro's Shifting Sword", "=ds=#h1#, #w10#", "", "9.70%"};
{ 13, 28188, "", "=q3=Bloodfire Greatstaff", "=ds=#w9#", "", "10.48%"};
{ 13, 28188, "", "=q3=Bloodfire Greatstaff", "=ds=#h2#, #w9#", "", "10.48%"};
{ 16, 0, "INV_Box_01", "=q6=#j27#", ""};
{ 17, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
{ 18, 30558, "", "=q4=Glimmering Fire Opal", "=ds=#e7#"};
@@ -959,7 +959,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 8, 30878, "", "=q4=Glimmering Steel Mantle", "=ds=#s3#, #a4#", "", "16%"};
{ 16, 30874, "", "=q4=The Unbreakable Will", "=ds=#h1#, #w10#", "", "16%"};
{ 17, 30881, "", "=q4=Blade of Infamy", "=ds=#h1#, #w10#", "", "15%"};
{ 18, 30883, "", "=q4=Pillar of Ferocity", "=ds=#w9#", "", "16%"};
{ 18, 30883, "", "=q4=Pillar of Ferocity", "=ds=#h2#, #w9#", "", "16%"};
{ 19, 30882, "", "=q4=Bastion of Light", "=ds=#w8#", "", "15%"};
{ 21, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
Prev = "MountHyjalWinterchill";
@@ -1018,7 +1018,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 7, 30911, "", "=q4=Scepter of Purification", "=ds=#s15#", "", "15%"};
{ 9, 30910, "", "=q4=Tempest of Chaos", "=ds=#h3#, #w10#", "", "14%"};
{ 10, 30902, "", "=q4=Cataclysm's Edge", "=ds=#h2#, #w10#", "", "15%"};
{ 11, 30908, "", "=q4=Apostle of Argus", "=ds=#w9#", "", "15%"};
{ 11, 30908, "", "=q4=Apostle of Argus", "=ds=#h2#, #w9#", "", "15%"};
{ 12, 30909, "", "=q4=Antonidas's Aegis of Rapt Concentration", "=ds=#w8#", "", "15%"};
{ 13, 30906, "", "=q4=Bristleblitz Striker", "=ds=#w2#", "", "16%"};
{ 16, 31097, "", "=q4=Helm of the Forgotten Conqueror", "=q1=#m1# =ds=#c4#, #c5#, #c8#", "", "70%"};
@@ -1175,7 +1175,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 1, 27793, "", "=q3=Earth Mantle Handwraps", "=ds=#s9#, #a3#", "", "16.92%"};
{ 2, 27790, "", "=q3=Mask of Pennance", "=ds=#s1#, #a4#", "", "16.65%"};
{ 3, 27792, "", "=q3=Steam-Hinge Chain of Valor", "=ds=#s2#", "", "14.49%"};
{ 4, 27791, "", "=q3=Serpentcrest Life-Staff", "=ds=#w9#", "", "17.09%"};
{ 4, 27791, "", "=q3=Serpentcrest Life-Staff", "=ds=#h2#, #w9#", "", "17.09%"};
{ 5, 27794, "", "=q3=Recoilless Rocket Ripper X-54", "=ds=#w5#", "", "15.88%"};
{ 7, 23887, "", "=q3=Schematic: Rocket Boots Xtreme", "=ds=#p5# (355)", "", "0.52%"};
{ 16, 0, "INV_Box_01", "=q6=#j27#", ""};
@@ -1279,7 +1279,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 24, 27755, "", "=q3=Girdle of Gallantry", "=ds=#s10#, #a4#", "", "7.33%"};
{ 25, 27758, "", "=q3=Hydra-fang Necklace", "=ds=#s2#", "", "12.00%"};
{ 26, 27761, "", "=q3=Ring of the Shadow Deeps", "=ds=#s13#", "", "18.67%"};
{ 27, 27757, "", "=q3=Greatstaff of the Leviathan", "=ds=#w9#", "", "16.00%"};
{ 27, 27757, "", "=q3=Greatstaff of the Leviathan", "=ds=#h2#, #w9#", "", "16.00%"};
Prev = "CFRUnderHungarfen";
Next = "CFRUnderSwamplord";
Type = "BCDungeon";
@@ -1492,7 +1492,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 2, 30022, "", "=q4=Pendant of the Perilous", "=ds=#s2#", "", "3%"};
{ 3, 30620, "", "=q4=Spyglass of the Hidden Fleet", "=ds=#s14#", "", "4%"};
{ 4, 30023, "", "=q4=Totem of the Maelstrom", "=ds=#s16#, #w15#", "", "3%"};
{ 5, 30021, "", "=q4=Wildfury Greatstaff", "=ds=#w9#", "", "3%"};
{ 5, 30021, "", "=q4=Wildfury Greatstaff", "=ds=#h2#, #w9#", "", "3%"};
{ 6, 30025, "", "=q4=Serpentshrine Shuriken", "=ds=#w11#", "", "3%"};
{ 7, 44831, "", "=q4=Mmrgrg glm Nuubs", "=ds=#s15#", "", "3%"};
{ 9, 30324, "", "=q4=Plans: Red Havoc Boots", "=ds=#p2# (375)", "", "1%"};
@@ -1622,7 +1622,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 24, 24073, "", "=q3=Garotte-String Necklace", "=ds=#s2#", "", "11.60%"};
{ 25, 24096, "", "=q3=Heartblood Prayer Beads", "=ds=#s2#", "", "11.15%"};
{ 26, 24094, "", "=q3=Heart Fire Warhammer", "=ds=#h2#, #w6#", "", "14.76%"};
{ 27, 24069, "", "=q3=Crystalfire Staff", "=ds=#w9#", "", "12.43%"};
{ 27, 24069, "", "=q3=Crystalfire Staff", "=ds=#h2#, #w9#", "", "12.43%"};
{ 29, 23886, "", "=q1=Omor's Hoof", "=ds=#m3#", "", "100%"};
Prev = "HCRampWatchkeeper";
Next = "HCRampVazruden";
@@ -1642,7 +1642,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 8, 24154, "", "=q3=Witching Band", "=ds=#s13#", "", "13.23%"};
{ 9, 24151, "", "=q3=Mok'Nathal Clan Ring", "=ds=#s13#", "", "15.45%"};
{ 10, 24044, "", "=q3=Hellreaver", "=ds=#w7#", "", "13.91%"};
{ 11, 24155, "", "=q3=Ursol's Claw", "=ds=#w9#", "", "16.21%"};
{ 11, 24155, "", "=q3=Ursol's Claw", "=ds=#h2#, #w9#", "", "16.21%"};
{ 16, 0, "INV_Box_01", "=q6="..BabbleBoss["Vazruden"], ""};
{ 17, 23892, "", "=q1=Ominous Letter", "=ds=#m2#", "", "100%"};
{ 19, 0, "INV_Box_01", "=q6="..BabbleBoss["Nazan"], ""};
@@ -1885,7 +1885,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 7, 28789, "", "=q4=Eye of Magtheridon", "=ds=#s14#"};
{ 8, 28781, "", "=q4=Karaborian Talisman", "=ds=#s15#"};
{ 9, 28774, "", "=q4=Glaive of the Pit", "=ds=#w7#"};
{ 10, 28782, "", "=q4=Crystalheart Pulse-Staff", "=ds=#w9#"};
{ 10, 28782, "", "=q4=Crystalheart Pulse-Staff", "=ds=#h2#, #w9#"};
{ 11, 29458, "", "=q4=Aegis of the Vindicator", "=ds=#w8#"};
{ 12, 28783, "", "=q4=Eredar Wand of Obliteration", "=ds=#w12#"};
{ 14, 34845, "", "=q4=Pit Lord's Satchel", "=ds=#e1# #m15#"};
@@ -2051,7 +2051,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 10, 24139, "", "=q1=Faint Arcane Essence", "=ds=#m3#", "", "100%"};
{ 16, 28609, "", "=q4=Emberspur Talisman", "=ds=#s2#", "", "13.33%"};
{ 17, 28603, "", "=q4=Talisman of Nightbane", "=ds=#s15#", "", "12.62%"};
{ 18, 28604, "", "=q4=Nightstaff of the Everliving", "=ds=#w9#", "", "16.67%"};
{ 18, 28604, "", "=q4=Nightstaff of the Everliving", "=ds=#h2#, #w9#", "", "16.67%"};
{ 19, 28611, "", "=q4=Dragonheart Flameshield", "=ds=#w8#", "", "13.57%"};
{ 20, 28606, "", "=q4=Shield of Impenetrable Darkness", "=ds=#w8#", "", "12.14%"};
{ 22, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
@@ -2068,7 +2068,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 3, 28631, "", "=q4=Dragon-Quake Shoulderguards", "=ds=#s3#, #a3#", "", "13.47%"};
{ 4, 28621, "", "=q4=Wrynn Dynasty Greaves", "=ds=#s11#, #a4#", "", "11.85%"};
{ 5, 28649, "", "=q4=Garona's Signet Ring", "=ds=#s13#", "", "12.07%"};
{ 6, 28633, "", "=q4=Staff of Infinite Mysteries", "=ds=#w9#", "", "12.28%"};
{ 6, 28633, "", "=q4=Staff of Infinite Mysteries", "=ds=#h2#, #w9#", "", "12.28%"};
{ 8, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
{ 16, 29757, "", "=q4=Gloves of the Fallen Champion", "=q1=#m1# =ds=#c4#, #c6#, #c7#", "", "29.42%"};
{ 17, 29758, "", "=q4=Gloves of the Fallen Defender", "=q1=#m1# =ds=#c1#, #c5#, #c9#", "", "23.60%"};
@@ -2092,7 +2092,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 16, 28661, "", "=q4=Mender's Heart-Ring", "=ds=#s13#", "", "11.64%"};
{ 17, 28785, "", "=q4=The Lightning Capacitor", "=ds=#s14#", "", "10.75%"};
{ 18, 28657, "", "=q4=Fool's Bane", "=ds=#h1#, #w6#", "", "14.63%"};
{ 19, 28658, "", "=q4=Terestian's Stranglestaff", "=ds=#w9#", "", "7.46%"};
{ 19, 28658, "", "=q4=Terestian's Stranglestaff", "=ds=#h2#, #w9#", "", "7.46%"};
{ 20, 28659, "", "=q4=Xavian Stiletto", "=ds=#w11#", "", "13.43%"};
{ 22, 22561, "", "=q3=Formula: Enchant Weapon - Soulfrost", "=ds=#p4# (375)", "", "0.30%"};
Prev = "KaraCurator";
@@ -2253,7 +2253,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 18, 434607, "", "=q4=Fel-tinged Mantle", "=ds=#s3#, #a1#", "", "20%"};
{ 19, 434605, "", "=q4=Breastplate of Fierce Survival", "=ds=#s5#, #a4#", "", "19%"};
{ 20, 434606, "", "=q4=Edge of Oppression", "=ds=#h1#, #w4#", "", "20%"};
{ 21, 434608, "", "=q4=Rod of the Blazing Light", "=ds=#w9#", "", "19%"};
{ 21, 434608, "", "=q4=Rod of the Blazing Light", "=ds=#h2#, #w9#", "", "19%"};
{ 23, 435275, "", "=q3=Orb of the Sin'dorei", "=ds=#m20#", "", "2%"};
Prev = "SMTFireheart";
Next = "SMTDelrissa";
@@ -2298,7 +2298,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 18, 434795, "", "=q3=Helm of Sanctification", "=ds=#s1#, #a4#", "", "5%"};
{ 19, 434798, "", "=q3=Band of Celerity", "=ds=#s13#", "", "5%"};
{ 20, 434794, "", "=q3=Axe of Shattered Dreams", "=ds=#h2#, #w1#", "", "5%"};
{ 21, 434797, "", "=q3=Sun-infused Focus Staff", "=ds=#w9#", "", "14%"};
{ 21, 434797, "", "=q3=Sun-infused Focus Staff", "=ds=#h2#, #w9#", "", "14%"};
{ 22, 35504, "", "=q3=Phoenix Hatchling", "=ds=#e13#", "", "7%"};
Prev = "SMTDelrissa";
Next = "SMTKaelthasHeroic";
@@ -2382,7 +2382,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 5, 34383, "", "=q4=Kilt of Spiritual Reconstruction", "=ds=#m29#"};
{ 6, 34184, "", "=q4=Brooch of the Highborne", "=ds=#s2#", "", "16%"};
{ 7, 34185, "", "=q4=Sword Breaker's Bulwark", "=ds=#w8#", "", "16%"};
{ 8, 34182, "", "=q4=Grand Magister's Staff of Torrents", "=ds=#w9#", "", "17%"};
{ 8, 34182, "", "=q4=Grand Magister's Staff of Torrents", "=ds=#h2#, #w9#", "", "17%"};
{ 16, 34856, "", "=q4=Boots of the Forgotten Conqueror", "=q1=#m1# =ds=#c4#, #c5#, #c8#", "", "79%"};
{ 17, 34857, "", "=q4=Boots of the Forgotten Protector", "=q1=#m1# =ds=#c9#, #c2#, #c7#", "", "86%"};
{ 18, 34858, "", "=q4=Boots of the Forgotten Vanquisher", "=q1=#m1# =ds=#c6#, #c3#, #c1#", "", "77%"};
@@ -2420,7 +2420,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 24, 34197, "", "=q4=Shiv of Exsanguination", "=ds=#h1#, #w4#", "", "23%"};
{ 25, 34199, "", "=q4=Archon's Gavel", "=ds=#h3#, #w6#", "", "17%"};
{ 26, 34203, "", "=q4=Grip of Mannoroth", "=ds=#h4#, #w13#", "", "20%"};
{ 27, 34198, "", "=q4=Stanchion of Primal Instinct", "=ds=#w9#", "", "19%"};
{ 27, 34198, "", "=q4=Stanchion of Primal Instinct", "=ds=#h2#, #w9#", "", "19%"};
{ 28, 34196, "", "=q4=Golden Bow of Quel'Thalas", "=ds=#w2#", "", "18%"};
{ 30, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
Prev = "SPFelmyst";
@@ -2495,7 +2495,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 27, 34335, "", "=q4=Hammer of Sanctification", "=ds=#h3#, #w6#", "", "20%"};
{ 28, 34331, "", "=q4=Hand of the Deceiver", "=ds=#h3#, #w13#", "", "17%"};
{ 29, 34336, "", "=q4=Sunflare", "=ds=#h3#, #w4#", "", "18%"};
{ 30, 34337, "", "=q4=Golden Staff of the Sin'dorei", "=ds=#w9#", "", "14%"};
{ 30, 34337, "", "=q4=Golden Staff of the Sin'dorei", "=ds=#h2#, #w9#", "", "14%"};
Prev = "SPMuru";
Type = "BCRaid";
};
@@ -2720,7 +2720,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 4, 28327, "", "=q3=Arcane Netherband", "=ds=#s13#", "", "17.77%"};
{ 5, 28323, "", "=q3=Ring of Umbral Doom", "=ds=#s13#", "", "16.25%"};
{ 6, 28322, "", "=q3=Runed Dagger of Solace", "=ds=#h3#, #w4#", "", "18.16%"};
{ 7, 28325, "", "=q3=Dreamer's Dragonstaff", "=ds=#w9#", "", "15.46%"};
{ 7, 28325, "", "=q3=Dreamer's Dragonstaff", "=ds=#h2#, #w9#", "", "15.46%"};
{ 16, 0, "INV_Box_01", "=q6=#j27#", ""};
{ 17, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
{ 18, 30574, "", "=q4=Brutal Tanzanite", "=ds=#e7#", "", "8.00%"};
@@ -2760,7 +2760,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 7, 28370, "", "=q3=Bangle of Endless Blessings", "=ds=#s14#", "", "12.38%"};
{ 8, 28345, "", "=q3=Warp Splinter's Thorn", "=ds=#h1#, #w4#", "", "10.37%"};
{ 9, 28367, "", "=q3=Greatsword of Forlorn Visions", "=ds=#h2#, #w10#", "", "11.64%"};
{ 10, 28341, "", "=q3=Warpstaff of Arcanum", "=ds=#w9#", "", "10.47%"};
{ 10, 28341, "", "=q3=Warpstaff of Arcanum", "=ds=#h2#, #w9#", "", "10.47%"};
{ 12, 31085, "", "=q1=Top Shard of the Arcatraz Key", "=ds=#m3#", "", "100%"};
{ 16, 28229, "", "=q3=Incanter's Robe", "=ds=#s5#, #a1# (D3)", "", "8.42%"};
{ 17, 28348, "", "=q3=Moonglade Cowl", "=ds=#s1#, #a2# (D3)", "", "11.17%"};
@@ -2779,7 +2779,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 2, 29258, "", "=q4=Boots of Ethereal Manipulation", "=ds=#s11#, #a1#"};
{ 3, 29262, "", "=q4=Boots of the Endless Hunt", "=ds=#s12#, #a3#", "", "4.00%"};
{ 4, 32072, "", "=q4=Gauntlets of Dissension", "=ds=#s9#, #a4#"};
{ 5, 29359, "", "=q4=Feral Staff of Lashing", "=ds=#w9#"};
{ 5, 29359, "", "=q4=Feral Staff of Lashing", "=ds=#h2#, #w9#"};
{ 6, 24311, "", "=q4=Pattern: Whitemend Hood", "=ds=#p8# (375)", "", "0.30%"};
{ 8, 28371, "", "=q3=Netherfury Cape", "=ds=#s4#", "", "4.00%"};
{ 9, 28342, "", "=q3=Warp Infused Drape", "=ds=#s5#, #a1#", "", "8.00%"};
@@ -2788,7 +2788,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 12, 28370, "", "=q3=Bangle of Endless Blessings", "=ds=#s14#", "", "28.00%"};
{ 13, 28345, "", "=q3=Warp Splinter's Thorn", "=ds=#h1#, #w4#", "", "28.00%"};
{ 14, 28367, "", "=q3=Greatsword of Forlorn Visions", "=ds=#h2#, #w10#", "", "8.00%"};
{ 15, 28341, "", "=q3=Warpstaff of Arcanum", "=ds=#w9#", "", "4.00%"};
{ 15, 28341, "", "=q3=Warpstaff of Arcanum", "=ds=#h2#, #w9#", "", "4.00%"};
{ 16, 30574, "", "=q4=Brutal Tanzanite", "=ds=#e7#", "", "8.00%"};
{ 17, 30572, "", "=q4=Imperial Tanzanite", "=ds=#e7#", "", "8.00%"};
{ 18, 30573, "", "=q4=Mysterious Fire Opal", "=ds=#e7#", "", "8.00%"};
@@ -2997,7 +2997,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 9, 29997, "", "=q4=Band of the Ranger-General", "=ds=#s13#", "", "14%"};
{ 10, 29993, "", "=q4=Twinblade of the Phoenix", "=ds=#h2#, #w10#", "", "12%"};
{ 11, 29996, "", "=q4=Rod of the Sun King", "=ds=#h1#, #w6#", "", "15%"};
{ 12, 29988, "", "=q4=The Nexus Key", "=ds=#w9#", "", "14%"};
{ 12, 29988, "", "=q4=The Nexus Key", "=ds=#h2#, #w9#", "", "14%"};
{ 14, 29434, "", "=q4=Badge of Justice", "=ds=#e15#", "", "100%"};
{ 16, 30236, "", "=q4=Chestguard of the Vanquished Champion", "=q1=#m1# =ds=#c4#, #c6#, #c7#", "", "69%"};
{ 17, 30237, "", "=q4=Chestguard of the Vanquished Defender", "=q1=#m1# =ds=#c1#, #c5#, #c9#", "", "68%"};
@@ -3052,7 +3052,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 2, 30311, "", "=q5=Warp Slicer", "=ds=#h1#, #w10#"};
{ 3, 30317, "", "=q5=Cosmic Infuser", "=ds=#h3#, #w6#"};
{ 4, 30316, "", "=q5=Devastation", "=ds=#h2#, #w1#"};
{ 5, 30313, "", "=q5=Staff of Disintegration", "=ds=#w9#"};
{ 5, 30313, "", "=q5=Staff of Disintegration", "=ds=#h2#, #w9#"};
{ 6, 30314, "", "=q5=Phaseshift Bulwark", "=ds=#w8#"};
{ 7, 30318, "", "=q5=Netherstrand Longbow", "=ds=#w2#, =q1=#m1# =ds=#c2#"};
{ 8, 30319, "", "=q5=Nether Spike", "=ds=#w17#"};
@@ -3147,7 +3147,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 19, 33389, "", "=q4=Dagger of Bad Mojo", "=ds=#h1#, #w4#", "", "15%"};
{ 20, 33298, "", "=q4=Prowler's Strikeblade", "=ds=#h1#, #w4#", "", "14%"};
{ 21, 33388, "", "=q4=Heartless", "=ds=#h1#, #w10#", "", "15%"};
{ 22, 33465, "", "=q4=Staff of Primal Fury", "=ds=#w9#", "", "13%"};
{ 22, 33465, "", "=q4=Staff of Primal Fury", "=ds=#h2#, #w9#", "", "13%"};
Prev = "ZAHalazzi";
Next = "ZAZuljin";
Type = "BCRaid";
@@ -3191,8 +3191,8 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 17, 33495, "", "=q4=Rage", "=ds=#h3#, #w13#", "", "12%"};
{ 18, 33493, "", "=q4=Umbral Shiv", "=ds=#h1#, #w4#", "", "12%"};
{ 19, 33492, "", "=q4=Trollbane", "=ds=#h2#, #w1#", "", "11%"};
{ 20, 33490, "", "=q4=Staff of Dark Mending", "=ds=#w9#", "", "13%"};
{ 21, 33494, "", "=q4=Amani Divining Staff", "=ds=#w9#", "", "11%"};
{ 20, 33490, "", "=q4=Staff of Dark Mending", "=ds=#h2#, #w9#", "", "13%"};
{ 21, 33494, "", "=q4=Amani Divining Staff", "=ds=#h2#, #w9#", "", "11%"};
{ 22, 33491, "", "=q4=Tuskbreaker", "=ds=#w5#", "", "12%"};
{ 24, 0, "INV_Box_01", "=q6=#x32#", ""};
{ 25, 33497, "", "=q4=Mana Attuned Band", "=ds=#s13#", "", "18%"};
@@ -3279,7 +3279,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 16, 0, "INV_Misc_Ammo_Arrow_02", "=q6=#r3#", ""};
{ 17, 25838, "", "=q3=Warden's Hauberk", "=ds=#s5#, #a2#"};
{ 18, 25836, "", "=q3=Preserver's Cudgel", "=ds=#h3#, #w6#"};
{ 19, 25835, "", "=q3=Explorer's Walking Stick", "=ds=#w9#"};
{ 19, 25835, "", "=q3=Explorer's Walking Stick", "=ds=#h2#, #w9#"};
{ 20, 25735, "", "=q3=Pattern: Heavy Clefthoof Vest", "=ds=#p7# (360)"};
{ 21, 25736, "", "=q3=Pattern: Heavy Clefthoof Leggings", "=ds=#p7# (355)"};
{ 22, 29194, "", "=q2=Arcanum of Nature Warding", "#s1# #e17#"};
@@ -3691,7 +3691,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 1, 0, "Spell_Holy_SealOfSalvation", "=q6=#r4#", ""};
{ 2, 29127, "", "=q3=Vindicator's Hauberk", "=ds=#s5#, #a4#"};
{ 3, 29128, "", "=q3=Lightwarden's Band", "=ds=#s13#"};
{ 4, 29130, "", "=q3=Auchenai Staff", "=ds=#w9#"};
{ 4, 29130, "", "=q3=Auchenai Staff", "=ds=#h2#, #w9#"};
{ 5, 24177, "", "=q3=Design: Pendant of Shadow's End", "=ds=#p12# (360)"};
{ 6, 23604, "", "=q1=Plans: Flamebane Breastplate", "=ds=#p2# (365)"};
{ 7, 29703, "", "=q1=Pattern: Blastguard Boots", "=ds=#p7# (350)"};
@@ -3896,7 +3896,7 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 2, 29131, "", "=q3=Retainer's Leggings", "=ds=#s11#, #a2# "};
{ 3, 29134, "", "=q3=Gauntlets of the Chosen", "=ds=#s9#, #a4# "};
{ 4, 29132, "", "=q3=Scryer's Bloodgem", "=ds=#s14#"};
{ 5, 29133, "", "=q3=Seer's Cane", "=ds=#w9#"};
{ 5, 29133, "", "=q3=Seer's Cane", "=ds=#h2#, #w9#"};
{ 6, 24176, "", "=q3=Design: Pendant of Withering", "=ds=#p12# (360)"};
{ 7, 22908, "", "=q2=Recipe: Elixir of Major Firepower", "=ds=#p1# (345)"};
{ 8, 23599, "", "=q1=Plans: Enchanted Adamantite Breastplate", "=ds=#p2# (360)"};
@@ -5409,9 +5409,9 @@ local BabbleZone = AtlasLoot_GetLocaleLibBabble("LibBabble-Zone-3.0")
{ 22, 34988, "", "=q4=Brutal Gladiator's Bonecracker", "=ds=#h4#, #w6#", "3150 #arena#", ""};
{ 23, 34989, "", "=q4=Brutal Gladiator's Bonegrinder", "=ds=#h2#, #w6#", "3750 #arena#", ""};
{ 24, 35064, "", "=q4=Brutal Gladiator's Painsaw", "=ds=#w7#", "3750 #arena#", ""};
{ 25, 34987, "", "=q4=Brutal Gladiator's Battle Staff", "=ds=#w9#", "3750 #arena#", ""};
{ 26, 35103, "", "=q4=Brutal Gladiator's Staff", "=ds=#w9#", "3750 #arena#", ""};
{ 27, 35109, "", "=q4=Brutal Gladiator's War Staff", "=ds=#w9#", "3750 #arena#", ""};
{ 25, 34987, "", "=q4=Brutal Gladiator's Battle Staff", "=ds=#h2#, #w9#", "3750 #arena#", ""};
{ 26, 35103, "", "=q4=Brutal Gladiator's Staff", "=ds=#h2#, #w9#", "3750 #arena#", ""};
{ 27, 35109, "", "=q4=Brutal Gladiator's War Staff", "=ds=#h2#, #w9#", "3750 #arena#", ""};
Next = "Arena4Weapons2";
Back = "PVPMENU";
};
@@ -6645,7 +6645,7 @@ AtlasLoot_Data["T6WarriorFury"] = {
{ 23, 34952, "", "=q4=The Mutilator", "=ds=#h4#, #w4#", "45 #heroic#", ""};
{ 24, 34891, "", "=q4=The Blade of Harbingers", "=ds=#h2#, #w1#", "150 #heroic#", ""};
{ 25, 34896, "", "=q4=Gavel of Naaru Blessings", "=ds=#h3#, #w6#", "150 #heroic#", ""};
{ 26, 34898, "", "=q4=Staff of the Forest Lord", "=ds=#w9#", "150 #heroic#", ""};
{ 26, 34898, "", "=q4=Staff of the Forest Lord", "=ds=#h2#, #w9#", "150 #heroic#", ""};
{ 27, 34892, "", "=q4=Crossbow of Relentless Strikes", "=ds=#w3#", "150 #heroic#", ""};
Back = "70TOKENMENU";
};
@@ -6717,7 +6717,7 @@ AtlasLoot_Data["T6WarriorFury"] = {
{ 19, 31318, "", "=q4=Singing Crystal Axe", "=ds=#h2#, #w1#", "", ""};
{ 20, 31342, "", "=q4=The Ancient Scepter of Sue-Min", "=ds=#h3#, #w6#", "", ""};
{ 21, 31322, "", "=q4=The Hammer of Destiny", "=ds=#h2#, #w6#", "", ""};
{ 22, 31334, "", "=q4=Staff of Natural Fury", "=ds=#w9#", "", ""};
{ 22, 31334, "", "=q4=Staff of Natural Fury", "=ds=#h2#, #w9#", "", ""};
{ 23, 34622, "", "=q4=Spinesever", "=ds=#w11#", "", ""};
{ 24, 31323, "", "=q4=Don Santos' Famous Hunting Rifle", "=ds=#w5#", "", ""};
Next = "WorldEpicsWrath1";
@@ -6740,7 +6740,7 @@ AtlasLoot_Data["T6WarriorFury"] = {
{ 8, 30736, "", "=q4=Ring of Flowing Light", "=ds=#s13#", "", "15.8%"};
{ 9, 30738, "", "=q4=Ring of Reciprocity", "=ds=#s13#", "", "23.4%"};
{ 10, 30733, "", "=q4=Hope Ender", "=ds=#h1#, #w10#", "", "16.7%"};
{ 11, 30732, "", "=q4=Exodar Life-Staff", "=ds=#w9#", "", "17.1%"};
{ 11, 30732, "", "=q4=Exodar Life-Staff", "=ds=#h2#, #w9#", "", "17.1%"};
{ 16, 0, "INV_Box_01", "=q6="..BabbleBoss["Doomwalker"], ""};
{ 17, 30729, "", "=q4=Black-Iron Battlecloak", "=ds=#s4#", "", "19.6%"};
{ 18, 30725, "", "=q4=Anger-Spark Gloves", "=ds=#s9#, #a1#", "", "17.9%"};
@@ -6753,6 +6753,3 @@ AtlasLoot_Data["T6WarriorFury"] = {
{ 25, 30722, "", "=q4=Ethereum Nexus-Reaver", "=ds=#h2#, #w1#", "", "16.0%"};
{ 26, 30724, "", "=q4=Barrel-Blade Longrifle", "=ds=#w5#", "", "20.0%"};
};
+1 -1
View File
@@ -7,7 +7,7 @@
## Notes-zhCN: AtlasLoot 交易技能制造出的物品表
## Notes-zhTW: AtlasLoot 商業技能物品資料庫
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
@@ -8,7 +8,7 @@
## Notes-zhCN: AtlasLoot Enhanced 的《燃烧的远征》发售之前的副本掉落信息
## Notes-zhTW: AtlasLoot 艾澤拉斯副本掉落物品資料庫
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
@@ -7,7 +7,7 @@
## Notes-zhCN: AtlasLoot Enhanced 的户外首领掉落信息
## Notes-zhTW: AtlasLoot 世界事件物品掉落資料庫
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2
@@ -6,7 +6,7 @@
## Notes-zhCN: AtlasLoot Enhanced 的《巫妖王之怒》副本掉落信息
## Notes-zhTW: AtlasLoot 巫妖王之怒副本掉落物品資料庫
## Author: Original: Hegarol, Ascension: Skray/Szyler/Anch/Rvng
## Version: v6.1.2
## Version: v6.2.0
## X-eMail: manager@atlasloot.net
## X-Category: Map
## X-License: GPL v2