Mercurial > wow > askmrrobot
comparison Gear.lua @ 200:6e8838b231d4 v97
Fixed issue with distinguishing different variants of the same item.
author | Yellowfive |
---|---|
date | Wed, 13 Jan 2021 13:11:54 -0600 |
parents | 4ccc9ff6e824 |
children |
comparison
equal
deleted
inserted
replaced
199:e34c256739be | 200:6e8838b231d4 |
---|---|
30 -- one nil and other not, or different id, totally different | 30 -- one nil and other not, or different id, totally different |
31 if (not item1 and item2) or (item1 and not item2) or item1.id ~= item2.id then | 31 if (not item1 and item2) or (item1 and not item2) or item1.id ~= item2.id then |
32 return 1000000 | 32 return 1000000 |
33 end | 33 end |
34 | 34 |
35 -- different versions of same item (id + bonus ids + suffix + drop level, constitutes a different physical drop) | 35 --if item1.guid and item2.guid and item1.guid == item2.guid then |
36 if Amr.GetItemUniqueId(item1, true, true) ~= Amr.GetItemUniqueId(item2, true, true) then | 36 -- -- these have the same guid, so even if bonus id or something doesn't match for some reason, they are identical items |
37 return 100000 | 37 --else |
38 end | 38 -- different versions of same item (id + bonus ids + suffix + drop level, constitutes a different physical drop) |
39 | 39 if Amr.GetItemUniqueId(item1, true, true) ~= Amr.GetItemUniqueId(item2, true, true) then |
40 -- different upgrade levels of the same item | 40 return 100000 |
41 if item1.upgradeId ~= item2.upgradeId then | 41 end |
42 return 10000 | 42 |
43 end | 43 -- different upgrade levels of the same item |
44 | 44 if item1.upgradeId ~= item2.upgradeId then |
45 return 10000 | |
46 end | |
47 --end | |
48 | |
45 -- a change that requires reforging is considered more different than a change that does not; | 49 -- a change that requires reforging is considered more different than a change that does not; |
46 -- it is assumed that item1 is how we want the item to be in the end, and item2 is how it currently is | 50 -- it is assumed that item1 is how we want the item to be in the end, and item2 is how it currently is |
47 local aztReforges = 0 | 51 local aztReforges = 0 |
48 local aztSelects = 0 | 52 local aztSelects = 0 |
49 | 53 |
116 | 120 |
117 local found = false | 121 local found = false |
118 for k,listItem in pairs(list) do | 122 for k,listItem in pairs(list) do |
119 if listItem then | 123 if listItem then |
120 local diff = countItemDifferences(item, listItem) | 124 local diff = countItemDifferences(item, listItem) |
125 | |
121 if diff < bestDiff then | 126 if diff < bestDiff then |
122 -- each physical item can only be used once, the usedItems table has items we can't use in this search | 127 -- each physical item can only be used once, the usedItems table has items we can't use in this search |
123 local key = string.format("%s_%s", tableType, k) | 128 local key = string.format("%s_%s", tableType, k) |
124 if not usedItems[key] then | 129 if not usedItems[key] then |
125 bestItem = listItem | 130 bestItem = listItem |
126 bestDiff = diff | 131 bestDiff = diff |
127 bestLoc = key | 132 bestLoc = key |
128 found = true | 133 end |
129 end | 134 end |
130 end | 135 |
131 if found then break end | 136 if bestDiff == 0 then break end |
132 end | 137 end |
133 end | 138 end |
134 | 139 |
135 return bestItem, bestDiff, bestLoc | 140 return bestItem, bestDiff, bestLoc |
136 end | 141 end |
1153 | 1158 |
1154 new = bestItem | 1159 new = bestItem |
1155 local diff = countItemDifferences(new, old) | 1160 local diff = countItemDifferences(new, old) |
1156 | 1161 |
1157 if diff > 0 then | 1162 if diff > 0 then |
1163 | |
1158 list[slotId] = new | 1164 list[slotId] = new |
1159 if list == itemsToEquip.mh or list == itemsToEquip.oh then | 1165 if list == itemsToEquip.mh or list == itemsToEquip.oh then |
1160 itemsToEquip.weapons[slotId] = {} | 1166 itemsToEquip.weapons[slotId] = {} |
1161 end | 1167 end |
1162 remaining = remaining + 1 | 1168 remaining = remaining + 1 |