comparison Gear.lua @ 145:df1596b1a744 v68

Tweak for handling duplicate azerite items.
author yellowfive
date Sun, 09 Dec 2018 22:53:08 -0800
parents 55823e37403b
children cfdb5e5c828e
comparison
equal deleted inserted replaced
144:69e759e03838 145:df1596b1a744
49 aztDiffs = #item1.azerite * 10 49 aztDiffs = #item1.azerite * 10
50 elseif item2.azerite and not item1.azerite then 50 elseif item2.azerite and not item1.azerite then
51 aztDiffs = #item2.azerite * 10 51 aztDiffs = #item2.azerite * 10
52 else 52 else
53 -- count up number in item1 but missing from item2 53 -- count up number in item1 but missing from item2
54 for i = 1, #item1.azerite do 54 for i = 1, #item1.azerite do
55 local missing = false 55 local missing = true
56 for j = 1, #item2.azerite do 56 for j = 1, #item2.azerite do
57 if item2[j] == item1[i] then 57 if item2.azerite[j] == item1.azerite[i] then
58 missing = false 58 missing = false
59 end 59 end
60 end 60 end
61 if missing then 61 if missing then
62 aztDiffs = aztDiffs + 10 62 aztDiffs = aztDiffs + 10
63 end 63 end
64 end 64 end
65 -- count up number in item2 but missing from item1 65 -- count up number in item2 but missing from item1
66 for i = 1, #item2.azerite do 66 for i = 1, #item2.azerite do
67 local missing = false 67 local missing = true
68 for j = 1, #item1.azerite do 68 for j = 1, #item1.azerite do
69 if item1[j] == item2[i] then 69 if item1.azerite[j] == item2.azerite[i] then
70 missing = false 70 missing = false
71 end 71 end
72 end 72 end
73 if missing then 73 if missing then
74 aztDiffs = aztDiffs + 10 74 aztDiffs = aztDiffs + 10
286 local optimalItemLink = Amr.CreateItemLink(optimalItem) 286 local optimalItemLink = Amr.CreateItemLink(optimalItem)
287 287
288 -- see if item is currently equipped, is false if don't have any item for that slot (e.g. OH for a 2-hander) 288 -- see if item is currently equipped, is false if don't have any item for that slot (e.g. OH for a 2-hander)
289 local isEquipped = false 289 local isEquipped = false
290 if equippedItem and optimalItem and Amr.GetItemUniqueId(equippedItem, false, true) == Amr.GetItemUniqueId(optimalItem, false, true) then 290 if equippedItem and optimalItem and Amr.GetItemUniqueId(equippedItem, false, true) == Amr.GetItemUniqueId(optimalItem, false, true) then
291 isEquipped = true 291
292 if slotId == 1 or slotId == 3 or slotId == 5 then
293 -- show the item as not equipped if azerite doesn't match... might mean they have to switch to another version of same item
294 local aztDiff = countItemDifferences(equippedItem, optimalItem)
295 if aztDiff == 0 then
296 isEquipped = true
297 end
298 else
299 isEquipped = true
300 end
292 end 301 end
293 302
294 local isAzerite = optimalItem and C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItemByID(optimalItem.id) 303 local isAzerite = optimalItem and C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItemByID(optimalItem.id)
295 304
296 -- find the item in the player's inventory that best matches what the optimization wants to use 305 -- find the item in the player's inventory that best matches what the optimization wants to use
696 705
697 local setup = getSetupById(_activeSetupId) 706 local setup = getSetupById(_activeSetupId)
698 local setname = setup.Label -- "AMR " .. specName 707 local setname = setup.Label -- "AMR " .. specName
699 local setid = C_EquipmentSet.GetEquipmentSetID(setname) 708 local setid = C_EquipmentSet.GetEquipmentSetID(setname)
700 if setid then 709 if setid then
710 local oldName, oldIcon = C_EquipmentSet.GetEquipmentSetInfo(setid)
711 setIcon = oldIcon
701 C_EquipmentSet.SaveEquipmentSet(setid, setIcon) 712 C_EquipmentSet.SaveEquipmentSet(setid, setIcon)
702 else 713 else
703 C_EquipmentSet.CreateEquipmentSet(setname, setIcon) 714 C_EquipmentSet.CreateEquipmentSet(setname, setIcon)
704 end 715 end
705 end 716 end
1040 itemsToEquip.weapons[slotId] = {} 1051 itemsToEquip.weapons[slotId] = {}
1041 end 1052 end
1042 remaining = remaining + 1 1053 remaining = remaining + 1
1043 end 1054 end
1044 else 1055 else
1056
1045 -- find the best matching item anywhere in the player's gear 1057 -- find the best matching item anywhere in the player's gear
1046 local bestItem, bestDiff = Amr:FindMatchingItem(new, player, usedItems) 1058 local bestItem, bestDiff = Amr:FindMatchingItem(new, player, usedItems)
1047 new = bestItem 1059 new = bestItem
1048 1060
1049 local diff = countItemDifferences(old, new) 1061 local diff = countItemDifferences(old, new)
1050
1051 --[[
1052 if diff > 0 and diff < 1000 then
1053 -- same item, see if inventory has one that is closer (e.g. a duplicate item with correct enchants/gems)
1054 local bestItem, bestDiff = Amr:FindMatchingItem(new, player, usedItems)
1055 if bestDiff and bestDiff < diff then
1056 new = bestItem
1057 diff = bestDiff
1058 end
1059 end
1060 ]]
1061 1062
1062 if diff > 0 then 1063 if diff > 0 then
1063 list[slotId] = new 1064 list[slotId] = new
1064 if list == itemsToEquip.mh or list == itemsToEquip.oh then 1065 if list == itemsToEquip.mh or list == itemsToEquip.oh then
1065 itemsToEquip.weapons[slotId] = {} 1066 itemsToEquip.weapons[slotId] = {}