comparison Gear.lua @ 195:4ccc9ff6e824 v95

Update item parsing for new item link format changes.
author Yellowfive
date Tue, 24 Nov 2020 16:20:10 -0600
parents 4aeedce4c995
children 6e8838b231d4
comparison
equal deleted inserted replaced
194:02bbbf5ef3db 195:4ccc9ff6e824
686 686
687 687
688 -- scan a bag for the best matching item 688 -- scan a bag for the best matching item
689 local function scanBagForItem(item, bagId, bestItem, bestDiff, bestLink) 689 local function scanBagForItem(item, bagId, bestItem, bestDiff, bestLink)
690 local numSlots = GetContainerNumSlots(bagId) 690 local numSlots = GetContainerNumSlots(bagId)
691 local loc = ItemLocation.CreateEmpty() 691 --local loc = ItemLocation.CreateEmpty()
692 local blizzItem
692 for slotId = 1, numSlots do 693 for slotId = 1, numSlots do
693 local _, _, _, _, _, _, itemLink = GetContainerItemInfo(bagId, slotId) 694 local _, _, _, _, _, _, itemLink = GetContainerItemInfo(bagId, slotId)
694 -- we skip any stackable item, as far as we know, there is no equippable gear that can be stacked 695 -- we skip any stackable item, as far as we know, there is no equippable gear that can be stacked
695 if itemLink then 696 if itemLink then
696 local bagItem = Amr.ParseItemLink(itemLink) 697 local bagItem = Amr.ParseItemLink(itemLink)
697 if bagItem ~= nil then 698 if bagItem ~= nil then
699
700 blizzItem = Item:CreateFromBagAndSlot(bagId, slotId)
701
702 -- seems to be of the form Item-1147-0-4000000XXXXXXXXX, so we take just the last 9 digits
703 bagItem.guid = blizzItem:GetItemGUID()
704 if bagItem.guid and strlen(bagItem.guid) > 9 then
705 bagItem.guid = strsub(bagItem.guid, -9)
706 end
707
698 -- see if this is an azerite item and read azerite power ids 708 -- see if this is an azerite item and read azerite power ids
699 --[[loc:SetBagAndSlot(bagId, slotId) 709 --[[loc:SetBagAndSlot(bagId, slotId)
700 if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(loc) then 710 if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(loc) then
701 local powers = Amr.ReadAzeritePowers(loc) 711 local powers = Amr.ReadAzeritePowers(loc)
702 if powers then 712 if powers then
1138 end 1148 end
1139 else 1149 else
1140 1150
1141 -- find the best matching item anywhere in the player's gear 1151 -- find the best matching item anywhere in the player's gear
1142 local bestItem, bestDiff = Amr:FindMatchingItem(new, player, usedItems) 1152 local bestItem, bestDiff = Amr:FindMatchingItem(new, player, usedItems)
1153
1143 new = bestItem 1154 new = bestItem
1144
1145 local diff = countItemDifferences(new, old) 1155 local diff = countItemDifferences(new, old)
1146 1156
1147 if diff > 0 then 1157 if diff > 0 then
1148 list[slotId] = new 1158 list[slotId] = new
1149 if list == itemsToEquip.mh or list == itemsToEquip.oh then 1159 if list == itemsToEquip.mh or list == itemsToEquip.oh then
1150 itemsToEquip.weapons[slotId] = {} 1160 itemsToEquip.weapons[slotId] = {}
1151 end 1161 end
1152 remaining = remaining + 1 1162 remaining = remaining + 1