You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

637 lines
24 KiB

-- module independent variables --
----------------------------------
local addon, ns = ...
local C, L, I = ns.LC.color, ns.L, ns.I
-- module own local variables and local cached functions --
-----------------------------------------------------------
local name = "Equipment"; -- BAG_FILTER_EQUIPMENT L["ModDesc-Equipment"]
local ttName, ttColumns, tt, module, equipPending = name.."TT", 3;
local objLink,objColor,objType,objId,objData,objName,objInfo,objTooltip=1,2,3,4,6,5,7,8;
local itemEnchant,itemGem1,itemGem2,itemGem3,itemGem4=1,2,3,4,5;
local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, itemSellPrice=1,2,3,4,5,6,7,8,9,10,11;
local slots = {"HEAD","NECK","SHOULDER","SHIRT","CHEST","WAIST","LEGS","FEET","WRIST","HANDS","FINGER0","FINGER1","TRINKET0","TRINKET1","BACK","MAINHAND","SECONDARYHAND","RANGED","TABARD"};
local inventory,enchantSlots = {iLevelMin=0,iLevelMax=0},{}; -- (enchantSlots) -1 = [iLevel<600], 0 = both, 1 = [iLevel=>600]
local warlords_crafted,tSetItems = {},{};
local extendedItemInfos,isRegistered = {};
local ignoreWeapon = {
["0"] = L["Do not ignore"],
["1"] = L["Ignore all"],
["2"] = L["Ignore artifact weapons"],
};
-- register icon names and default files --
-------------------------------------------
I[name] = {iconfile="Interface\\ICONS\\INV_Chest_Chain", coords={0.1,0.9,0.1,0.9}}; --IconName::Equipment--
-- some local functions --
--------------------------
local function pairsEquipmentSets()
local equipSetIDs = C_EquipmentSet.GetEquipmentSetIDs() or {};
local i = 0;
return function()
i = i + 1;
if equipSetIDs[i] then
return C_EquipmentSet.GetEquipmentSetInfo(equipSetIDs[i]);
end
return nil;
end
end
-- defined in addon namespace for chatcommand.lua
function ns.toggleEquipment(eSetID)
if InCombatLockdown() or UnitIsDeadOrGhost("player") then
equipPending = eSetID
module.onevent("BE_DUMMY_EVENT")
else
C_EquipmentSet.UseEquipmentSet(eSetID);
end
ns.hideTooltip(tt);
end
local function updateBroker()
local obj = ns.LDB:GetDataObjectByName(module.ldbName);
local icon,iconCoords,text = I[name].iconfile,{0.1,0.9,0.1,0.9},{};
local pending = (equipPending and C("orange",equipPending)) or false;
if ns.profile[name].showCurrentSet and C_EquipmentSet then
for equipName, iconFileID, setID, isEquipped, _, _, _, numMissing in pairsEquipmentSets() do
if equipName and isEquipped then
icon,iconCoords = iconFileID,{0.05,0.95,0.05,0.95};
tinsert(text,equipPending==setID and pending or equipName);
end
end
if #text==0 then
local txt = L["No sets found"];
if ns.profile[name].showShorterInfo then
txt = L["No sets"];
end
tinsert(text,pending or txt);
end
elseif pending~=false then
tinsert(text,pending);
end
if ns.profile[name].showItemLevel and GetAverageItemLevel then
local _, ilevel = GetAverageItemLevel();
tinsert(text,("%1.1f"):format(ilevel or 0));
end
obj.iconCoords = iconCoords;
obj.icon = icon;
obj.text = #text>0 and table.concat(text,", ") or BAG_FILTER_EQUIPMENT;
end
local function UpdateInvSlotTooltip(data)
extendedItemInfos[data.slot] = data;
end
local function UpdateInventory()
local lst={iLevelMin=0,iLevelMax=0};
for _, d in pairs(ns.items.bySlot)do
if d and d.bag==-1 then
local obj,_ = CopyTable(d);
obj.type = "inv";
ns.ScanTT.query(obj,true);
lst[d.slot] = obj;
-- calc min/max item level
if ns.client_version>=6 and d.slot~=4 and d.slot~=19 then
obj.level = obj.level or 0;
if lst.iLevelMin==0 or obj.level<lst.iLevelMin then
lst.iLevelMin=obj.level;
end
if obj.level>lst.iLevelMax then
lst.iLevelMax=obj.level;
end
end
-- get sockets and gems of eqiupment
local stats = GetItemStats(obj.link);
local numGems,_ = 0;
lst.gems = false;
if stats then
-- get number of available sockets across socket types
-- "RED","YELLOW","META","HYDRAULIC","BLUE","PRISMATIC","COGWHEEL"
for label,num in pairs(stats) do
if label:find("EMPTY_SOCKET_") then
numGems = numGems + num;
end
end
end
if numGems>0 then
obj.gems = {};
for i=1, numGems do
_, obj.gems[i] = GetItemGem(obj.link, i);
if not obj.gems[i] then
obj.gems[i] = false;
obj.empty_gem = true;
end
end
end
end
end
inventory = lst;
updateBroker();
end
local function GetILevelColor(il)
local colors = {"cyan","green","yellow","orange","red"};
if not inventory then
UpdateInventory();
end
if (il==inventory.iLevelMax) then return colors[1]; end
local diff = inventory.iLevelMax-inventory.iLevelMin;
if (diff<=6) then
if (il==inventory.iLevelMin) then return colors[3]; end
else
if (il==inventory.iLevelMin) then return colors[5]; end
local p=floor(diff/3);
local p1,p2,p3 = inventory.iLevelMin+p,inventory.iLevelMin+(p*2),inventory.iLevelMin+(p*3);
if (il>p2) then
return colors[2];
elseif (il>p1) then
return colors[3];
elseif (il>inventory.iLevelMin) then
return colors[4];
end
end
return "white";
end
local function InventoryTooltipShow(self,slot)
GameTooltip:SetOwner(self,"ANCHOR_NONE");
GameTooltip:SetPoint(ns.GetTipAnchor(self,"horizontal",tt));
GameTooltip:ClearLines();
GameTooltip:SetInventoryItem("player", slot);
GameTooltip:SetFrameLevel(self:GetFrameLevel()+1);
GameTooltip:Show();
end
local function equipOnClick(self,equipSetID)
if (IsShiftKeyDown()) then
if (tt) and (tt:IsShown()) then ns.hideTooltip(tt); end
local main = ns.items.bySlot[-0.16];
if (ns.profile[name].ignoreMainHand=="2" and main and main.quality==6) or ns.profile[name].ignoreMainHand=="1" then
C_EquipmentSet.IgnoreSlotForSave(16);
end
local off = ns.items.bySlot[-0.17];
if (ns.profile[name].ignoreOffHand=="2" and off and off.quality==6) or ns.profile[name].ignoreOffHand=="1" then
C_EquipmentSet.IgnoreSlotForSave(17);
end
local setName = C_EquipmentSet.GetEquipmentSetInfo(equipSetID);
local dialog = StaticPopup_Show('CONFIRM_SAVE_EQUIPMENT_SET', setName);
if dialog then
dialog.data = equipSetID;
end
elseif (IsControlKeyDown()) then
if (tt) and (tt:IsShown()) then ns.hideTooltip(tt); end
local setName = C_EquipmentSet.GetEquipmentSetInfo(equipSetID);
local dialog = StaticPopup_Show('CONFIRM_DELETE_EQUIPMENT_SET', setName);
if dialog then
dialog.data = equipSetID;
end
else
ns.toggleEquipment(equipSetID);
end
end
local function equipOnEnter(self,equipSetID)
if equipSetID then
GameTooltip:SetOwner(self,"ANCHOR_NONE");
GameTooltip:SetPoint(ns.GetTipAnchor(self,"horizontal",tt));
GameTooltip:SetEquipmentSet(equipSetID);
GameTooltip:Show();
end
end
local function createTooltip(tt)
if not (tt and tt.key and tt.key==ttName) then return end -- don't override other LibQTip tooltips...
local line, column, hasSets
if tt.lines~=nil then tt:Clear(); end
tt:AddHeader(C("dkyellow",BAG_FILTER_EQUIPMENT))
if (ns.profile[name].showSets) and C_EquipmentSet then
-- equipment sets
tt:AddSeparator(4,0,0,0,0);
tt:AddLine(C("ltblue",WARDROBE_SETS));
tt:AddSeparator();
if (CanUseEquipmentSets) and (not CanUseEquipmentSets()) then -- prevent error if function removed
ns.AddSpannedLine(tt,L["Equipment manager is not enabled"]);
ns.AddSpannedLine(tt,L["Enable it from the character info"]);
else
for eName, icon, setID, isEquipped, _, _, _, numMissing in pairsEquipmentSets() do
if eName then
local color = (equipPending and equipPending==setID and "orange") or (numMissing>0 and "red") or (isEquipped and "ltyellow") or false
local formatName = color~=false and C(color,eName) or eName;
local line = ns.AddSpannedLine(tt, "|T"..(icon or ns.icon_fallback)..":0|t "..formatName);
tt:SetLineScript(line, "OnMouseUp", equipOnClick,setID);
tt:SetLineScript(line, "OnEnter", equipOnEnter,setID);
tt:SetLineScript(line, "OnLeave", GameTooltip_Hide);
hasSets = true;
end
end
if not hasSets then
ns.AddSpannedLine(tt, L["No equipment sets found"]);
elseif ns.profile.GeneralOptions.showHints then
tt:AddSeparator();
ns.AddSpannedLine(tt, C("ltblue",L["MouseBtn"]).." "..C("green",L["to equip"]) .." - ".. C("ltblue",L["ModKeyC"].."+"..L["MouseBtn"]).." "..C("green",L["to delete"]));
ns.AddSpannedLine(tt, C("ltblue",L["ModKeyS"].."+"..L["MouseBtn"]).." "..C("green",L["to update/save"]));
end
end
end
if (ns.profile[name].showInventory) then
UpdateInventory();
tt:AddSeparator(4,0,0,0,0);
local l=tt:AddLine(
C("ltblue",TRADESKILL_FILTER_SLOTS),
C("ltblue",NAME)
);
if ns.client_version>=6 then
tt:SetCell(l,3,C("ltblue",LEVEL));
end
tt:AddSeparator();
local prof1, prof2, prof1SkillLine, prof2SkillLine, _;
if GetProfessions then
prof1, prof2 = GetProfessions();
end
if prof1 then
_,_,_,_,_,_,prof1SkillLine = GetProfessionInfo(prof1);
end
if prof2 then
_,_,_,_,_,_,prof2SkillLine = GetProfessionInfo(prof2);
end
local none,miss=true,false;
local iSlots = {1,2,3,15,5,9,10,6,7,8,11,12,13,14,16,17};
if ns.profile[name].showShirt then
tinsert(iSlots,6,4);
end
if ns.profile[name].showTabard then
tinsert(iSlots,6,19);
end
for _,i in ipairs(iSlots) do
local obj = ns.items.bySlot[-(i/100)];
if obj and inventory[obj.slot] then
none=false;
-- nice blizzard. Query heirloom item info's. very unstable/slow...
local itemName, _, itemQuality, itemLevel, _, itemType, subType = GetItemInfo(obj.link);
if not itemName then
tt:AddLine(
C("ltyellow",_G[slots[i].."SLOT"]),
C("gray",L["Pending item info request..."])
);
else
local itemInfo = inventory[obj.slot];
local tSetItem,setName,enchanted,greenline,upgrades,gems = "","","","","","";
itemQuality = itemQuality or itemInfo.quality or "black";
itemName = itemName or obj.link:match("%[(.*)%]");
local canEnchant = false;
if type(enchantSlots[i])=="table" then -- tradeSkillID table
for profSkillLine in pairs(enchantSlots[i]) do
if profSkillLine==prof1SkillLine or profSkillLine==prof2SkillLine then
canEnchant = true;
end
end
elseif i==17 and itemType==LE_ITEM_CLASS_WEAPON then -- has equipped weapon in off-hand
canEnchant = enchantSlots[16]==true;
else
canEnchant = enchantSlots[i]==true;
end
if ns.profile[name].showNotEnchanted and obj.id~=158075 --[[ hearth of azeroth can't be enchanted ]] and canEnchant and (tonumber(itemInfo.linkData[1]) or 0)==0 then
enchanted=C("red"," #");
miss=true;
end
if ns.profile[name].showEmptyGems and itemInfo.empty_gem then
gems=C("yellow"," #");
miss=true;
end
if ns.profile[name].showSetName and itemInfo.setname then
setName=" "..C("dkgreen",itemInfo.setname);
end
if(ns.profile[name].showGreenText and itemInfo.lines and type(itemInfo.lines[2])=="string" and itemInfo.lines[2]:find("\124"))then
greenline = " "..itemInfo.lines[2];
end
if ns.profile[name].showUpgrades and itemInfo.upgrades then
local col,cur,max = "ltblue",strsplit("/",itemInfo.upgrades);
if ns.profile[name].fullyUpgraded and cur==max then
col="blue";
end
upgrades = " "..C(col,itemInfo.upgrades);
end
local itemLevelStr = "";
if (ns.client_version>=6 and itemInfo.level) and not (i==19 or i==4) then
itemLevelStr = C(GetILevelColor(itemInfo.level),itemInfo.level);
end
if ns.profile[name].showTSet and tSetItems[obj.id] then
tSetItem=C("yellow"," T"..tSetItems[obj.id]);
end
local l = tt:AddLine(
C("ltyellow",_G[slots[i].."SLOT"]),
C("quality"..itemQuality,itemName) .. greenline .. tSetItem .. setName .. upgrades .. enchanted .. gems,
itemLevelStr
);
tt:SetLineScript(l,"OnEnter",InventoryTooltipShow, obj.slot);
tt:SetLineScript(l,"OnLeave",GameTooltip_Hide);
end
elseif ns.profile[name].showEmptySlots then
tt:AddLine(
C("ltyellow",_G[slots[i].."SLOT"]),
C("gray",EMPTY)
);
end
end
if none and not ns.profile[name].showEmptySlots then
local l = tt:AddLine();
tt:SetCell(l,1,L["All slots are empty"],nil,nil,ttColumns);
end
tt:AddSeparator();
if ns.client_version>=6 and GetAverageItemLevel then
local _, avgItemLevelEquipped = GetAverageItemLevel();
local l = tt:AddLine(nil,nil,C(GetILevelColor(avgItemLevelEquipped),"%.1f"):format(avgItemLevelEquipped));
tt:SetCell(l,1,C("ltblue",STAT_AVERAGE_ITEM_LEVEL),nil,nil,2);
end
if (miss) then
ns.AddSpannedLine(tt,C("red","#")..CHAT_HEADER_SUFFIX..C("ltgray",L["Item is not enchanted"]) .. " || " .. C("yellow","#")..CHAT_HEADER_SUFFIX..C("ltgray",L["Item has empty socket"]));
end
end
line, column = nil, nil
if (ns.profile.GeneralOptions.showHints) then
tt:AddSeparator(4,0,0,0,0);
ns.ClickOpts.ttAddHints(tt,name);
end
ns.roundupTooltip(tt);
end
-- module functions and variables --
------------------------------------
module = {
events = {
"PLAYER_LOGIN",
"PLAYER_REGEN_ENABLED",
"PLAYER_ALIVE",
"PLAYER_UNGHOST",
},
config_defaults = {
enabled = true,
showSets = true,
showInventory = true,
showEmptySlots = false,
showItemLevel = true,
showCurrentSet = true,
fullyUpgraded = true,
showNotEnchanted = true,
showEmptyGems = true,
showTSet = true,
showSetName = true,
showGreenText = true,
showUpgrades = true,
showShorterInfo = true,
showTabard = false,
showShirt = false,
ignoreMainHand = "2",
ignoreOffHand = "2"
},
clickOptionsRename = {
["charinfo"] = "1_open_character_info",
["sets"] = "3_open_equipment_sets_tab",
["menu"] = "2_open_menu"
},
clickOptions = {
["charinfo"] = "CharacterInfo",
["sets"] = {EQUIPMENT_MANAGER,"module","equipMan"},
["menu"] = "OptionMenu"
}
}
if ns.client_version>=6 then
tinsert(module.events,"EQUIPMENT_SWAP_FINISHED");
--tinsert(module.events,"ITEM_UPGRADE_MASTER_UPDATE"); -- TODO: removed in 9.1.5
tinsert(module.events,"EQUIPMENT_SETS_CHANGED");
end
ns.ClickOpts.addDefaults(module,{
charinfo = "_LEFT",
sets = "__NONE",
menu = "_RIGHT"
});
function module.equipMan(self,button)
securecall("ToggleCharacter","PaperDollFrame");
securecall("PaperDollFrame_SetSidebar",nil,3);
end
function module.options()
return {
broker = {
showCurrentSet={ type="toggle", order=1, name=L["CurrentSet"], desc=L["CurrentSetDesc"], hidden=ns.IsClassicClient},
showItemLevel={ type="toggle", order=2, name=L["AvItemLvl"], desc=L["AvItemLvlDesc"], hidden=ns.IsClassicClient},
showShorterInfo={ type="toggle", order=3, name=L["ShorterSetInfo"], desc=L["ShorterSetInfoDesc"], hidden=ns.IsClassicClient},
},
tooltip = {
showSets={ type="toggle", order=1, name=L["EquipSets"], desc=L["EquipSetsDesc"], hidden=ns.IsClassicClient},
showInventory={ type="toggle", order=2, name=L["Show inventory"], desc=L["Display a list of currently equipped items"]},
showEmptySlots={ type="toggle", order=3, name=L["Show emtpy slots"], desc=L["Display empty equipment slots"]},
showNotEnchanted={ type="toggle", order=4, name=L["Show 'not enchanted' mark"], desc=L["Display a red # on not enchanted/enchantable items"]},
showEmptyGems={ type="toggle", order=5, name=L["Show 'empty socket' mark"], desc=L["Display a yellow # on items with empty sockets"]},
showTSet={ type="toggle", order=6, name=L["Show T-Set"], desc=L["Display a T-Set label on items"], hidden=ns.IsClassicClient},
showSetName={ type="toggle", order=7, name=L["Show Set name"], desc=L["Display set name on items"], hidden=ns.IsClassicClient},
showGreenText={ type="toggle", order=8, name=L["Show green text"], desc=L["Display green text line from item tooltip like titanforged"], hidden=ns.IsClassicClient},
showUpgrades={ type="toggle", order=9, name=L["Show upgrade info"], desc=L["Display upgrade info like 2/6"], hidden=ns.IsClassicClient},
fullyUpgraded={ type="toggle", order=10, name=L["Darker blue for fully upgraded"], desc=L["Display upgrade counter in darker blue on fully upgraded items"], hidden=ns.IsClassicClient},
showTabard={ type="toggle", order=11, name=L["ShowTabard"], desc=L["ShowTabardDesc"]},
showShirt={ type="toggle", order=12, name=L["ShowShirt"], desc=L["ShowShirtDesc"]},
},
misc = {
ignoreMainHand={ type="select", order=1, name=L["Ignore main hand"], desc=L["'Save set' should ignore main hand weapon"], values=ignoreWeapon, hidden=ns.IsClassicClient },
ignoreOffHand={ type="select", order=2, name=L["Ignore off-hand"], desc=L["'Save set' should ignore off-hand weapon"], values=ignoreWeapon, hidden=ns.IsClassicClient }
},
}
end
function module.init()
--[[
profession skill line id
171 -- Alchemy
164 -- Blacksmithing
333 -- Enchanting
202 -- Engineering
773 -- Inscription
755 -- Jewelcrafting
165 -- Leatherworking
197 -- Tailoring
--]]
if ns.client_version<3 then -- classic
enchantSlots = {
[8]=true, [9]=true,[5]=true,[10]=true,[15]=true,[17]=true,[16]=true, -- enchanters
}
elseif ns.client_version<6 then -- pre wod
enchantSlots = {
[1]=true,[5]=true,[6]=true,[8]=true,[9]=true,[10]=true,[11]=true,[12]=true,[15]=true,[16]=true,[17]=true, -- enchanters
[3]=true, -- inscription
[7]=true, -- misc trade skills
};
elseif ns.client_version<7 then -- pre legion
enchantSlots = {
[2]=true,[11]=true,[12]=true,[15]=true,[16]=true -- enchanters
};
elseif ns.client_version<8 then -- pre bfa
enchantSlots = {
[2]=true,[3]=true,[10]=true,[11]=true,[12]=true,[15]=true -- enchanters
};
elseif ns.client_version<9 then -- bfa
enchantSlots = {
[6]={[202]=true},[9]={[333]=true},[10]=true,[11]=true,[12]=true,[15]=true,[16]=true -- enchanters
};
else-- if ns.client_version<10 then -- sl
-- idea: [<invSlot>] = true | { [<tradeSkillID>]=true, ... }
enchantSlots = {
[5]=true,[6]={[202]=true},[8]=true,[9]=true,[10]=true,[11]=true,[12]=true,[15]=true,[16]=true -- enchanters
}
end
warlords_crafted = {
-- Alchemy
[122601]=1,[122602]=1,[122603]=1,[122604]=1,
-- Blacksmithing
[114230]=1,[114231]=1,[114232]=1,[114233]=1,
[114234]=1,[114235]=1,[114236]=1,[114237]=1,
-- Engineering
[109171]=1,[109172]=1,[109173]=1,[109174]=1,
-- Jewelcrafting
[115794]=1,[115796]=1,[115798]=1,[115799]=1,
[115800]=1,[115801]=1,
-- Leatherworking
[116174]=1,[116191]=1,[116193]=1,[116187]=1,
[116188]=1,[116190]=1,[116194]=1,[116189]=1,
[116192]=1,[116183]=1,[116176]=1,[116177]=1,
[116180]=1,[116182]=1,[116179]=1,[116178]=1,
[116181]=1,[116171]=1,[116175]=1,
-- Tailoring
[114809]=1,[114810]=1,[114811]=1,[114812]=1,
[114813]=1,[114814]=1,[114815]=1,[114816]=1,
[114817]=1,[114818]=1,[114819]=1,
}
tSetItems = {
-- Tier 1
[16828]=1,[16829]=1,[16830]=1,[16833]=1,[16831]=1,[16834]=1,[16835]=1,[16836]=1,[16851]=1,[16849]=1,[16850]=1,[16845]=1,[16848]=1,[16852]=1,
[16846]=1,[16847]=1,[16802]=1,[16799]=1,[16795]=1,[16800]=1,[16801]=1,[16796]=1,[16797]=1,[16798]=1,[16858]=1,[16859]=1,[16857]=1,[16853]=1,
[16860]=1,[16854]=1,[16855]=1,[16856]=1,[16811]=1,[16813]=1,[16817]=1,[16812]=1,[16814]=1,[16816]=1,[16815]=1,[16819]=1,[16827]=1,[16824]=1,
[16825]=1,[16820]=1,[16821]=1,[16826]=1,[16822]=1,[16823]=1,[16838]=1,[16837]=1,[16840]=1,[16841]=1,[16844]=1,[16839]=1,[16842]=1,[16843]=1,
-- Tier 2
-- Tier 3
-- Tier 4
-- Tier 5
-- Tier 6
-- Tier 7
-- Tier 8
-- Tier 9
-- Tier 10
-- Tier 11
-- Tier 12
-- Tier 13
-- Tier 14
-- Tier 15
-- Tier 16
-- Tier 17 (WoD 6.0)
[115535]=17,[115536]=17,[115537]=17,[115538]=17,[115539]=17,[115540]=17,[115541]=17,[115542]=17,[115543]=17,[115544]=17,[115545]=17,
[115546]=17,[115547]=17,[115548]=17,[115549]=17,[115550]=17,[115551]=17,[115552]=17,[115553]=17,[115554]=17,[115555]=17,[115556]=17,
[115557]=17,[115558]=17,[115559]=17,[115560]=17,[115561]=17,[115562]=17,[115563]=17,[115564]=17,[115565]=17,[115566]=17,[115567]=17,
[115568]=17,[115569]=17,[115570]=17,[115571]=17,[115572]=17,[115573]=17,[115574]=17,[115575]=17,[115576]=17,[115577]=17,[115578]=17,
[115579]=17,[115580]=17,[115581]=17,[115582]=17,[115583]=17,[115584]=17,[115585]=17,[115586]=17,[115587]=17,[115588]=17,[115589]=17,
-- Tier 18 (WoD 6.2)
[124154]=18,[124155]=18,[124156]=18,[124160]=18,[124161]=18,[124162]=18,[124165]=18,[124166]=18,[124167]=18,[124171]=18,[124172]=18,
[124173]=18,[124177]=18,[124178]=18,[124179]=18,[124246]=18,[124247]=18,[124248]=18,[124255]=18,[124256]=18,[124257]=18,[124261]=18,
[124262]=18,[124263]=18,[124267]=18,[124268]=18,[124269]=18,[124272]=18,[124273]=18,[124274]=18,[124284]=18,[124292]=18,[124293]=18,
[124296]=18,[124297]=18,[124301]=18,[124302]=18,[124303]=18,[124307]=18,[124308]=18,[124317]=18,[124318]=18,[124319]=18,[124327]=18,
[124328]=18,[124329]=18,[124332]=18,[124333]=18,[124334]=18,[124338]=18,[124339]=18,[124340]=18,[124344]=18,[124345]=18,[124346]=18,
-- Tier 19 (Legion 7.0)
[138309]=19,[138310]=19,[138311]=19,[138312]=19,[138313]=19,[138314]=19,[138315]=19,[138316]=19,[138317]=19,[138318]=19,[138319]=19,
[138320]=19,[138321]=19,[138322]=19,[138323]=19,[138324]=19,[138325]=19,[138326]=19,[138327]=19,[138328]=19,[138329]=19,[138330]=19,
[138331]=19,[138332]=19,[138333]=19,[138334]=19,[138335]=19,[138336]=19,[138337]=19,[138338]=19,[138339]=19,[138340]=19,[138341]=19,
[138342]=19,[138343]=19,[138344]=19,[138345]=19,[138346]=19,[138347]=19,[138348]=19,[138349]=19,[138350]=19,[138351]=19,[138352]=19,
[138353]=19,[138354]=19,[138355]=19,[138356]=19,[138357]=19,[138358]=19,[138359]=19,[138360]=19,[138361]=19,[138362]=19,[138363]=19,
[138364]=19,[138365]=19,[138366]=19,[138367]=19,[138368]=19,[138369]=19,[138370]=19,[138371]=19,[138372]=19,[138373]=19,[138374]=19,
[138375]=19,[138376]=19,[138377]=19,[138378]=19,[138379]=19,[138380]=19,
-- Tier 20 (Legion 7.?)
}
if not isRegistered then
ns.items.RegisterCallback(name,updateBroker,"inv");
isRegistered = true;
end
end
function module.onevent(self,event,arg1,...)
if event=="BE_UPDATE_CFG" then
if arg1 and arg1:find("^ClickOpt") then
ns.ClickOpts.update(name);
return;
end
updateBroker();
elseif event=="ADDON_LOADED" and arg1=="Blizzard_ArtifactUI" and ArtifactRelicForgeFrame then
ArtifactRelicForgeFrame:HookScript("OnHide",updateBroker);
self:UnregisterEvent("ADDON_LOADED");
elseif event=="PLAYER_LOGIN" then
if not isRegistered then
ns.items.RegisterCallback(name,UpdateInventory,"inv"); -- oops. register twice
isRegistered = true;
end
if UpgradeItem then
hooksecurefunc("UpgradeItem",updateBroker);
end
self:RegisterEvent("ADDON_LOADED");
elseif (event=="PLAYER_REGEN_ENABLED" or event=="PLAYER_ALIVE" or event=="PLAYER_UNGHOST") and equipPending~=nil then
if C_EquipmentSet then
C_EquipmentSet.UseEquipmentSet(equipPending);
end
equipPending = nil
updateBroker();
end
end
-- function module.optionspanel(panel) end
-- function module.onmousewheel(self,direction) end
-- function module.ontooltip(tt) end
function module.onenter(self)
if (ns.tooltipChkOnShowModifier(false)) then return; end
tt = ns.acquireTooltip({ttName, ttColumns, "LEFT", "LEFT", "RIGHT"},{false},{self});
createTooltip(tt);
end
-- function module.onleave(self) end
-- function module.onclick(self,button) end
-- function module.ondblclick(self,button) end
-- final module registration --
-------------------------------
ns.modules[name] = module;