Feature Request - Add item level to "equal" comparison
jrowles opened this issue ยท 11 comments
I would like the item level of an item to be considered before determining that two items are "equal" when comparing. If I have the 725 version of a trinket and a 731 version drops, I would like to know that I don't have the 731 trinket.
When you mean compare are you referring to the search ability? Right now if you typed the following, lvl:115 or level:115 you would get all items returned that are item level 115. Please note the item tooltips that show are based off the ItemID of the item that drops. It's the database id number given by blizzard associated with the item. An item can have the same ItemID but have different versions of it because of a different number stored in the itemID string. I only use the first number of the ItemID string which represents the actual item itself. Under about 90% of the time that's all you need in order to grab an item association in the scripting code. Please let me know if this is what you mean.
I meant in the tooltip when you hover over an item. For example, let's say I have Soul Capacitor with the base item level of 725 in my bags. The Mythic Warforged one drops (item level 731), but when hovering over the Mythic Warforged item to see if I have it or not, it says 1 in the tooltip. I would like this to account for the item level and say 0 because I have 0 Mythic Warforged Soul Capacitor trinkets. The 1 I do have is 725.
It also should only account for the base item level (725 or 731). It should not include valor upgrades.
725 + 1/2 = 730 should evaluate as 725
725 + 2/2 = 735 should evaluate as 725
731 + 1/2 = 736 should evaluate as 731
731 + 2/2 = 741 should evaluate as 731
Okay thank you for the item explanation. It's as I feared. The item level is being adjusted by the bonus digits in the ItemID string.
The Soul Capacitor has an base ItemID of 124225. This is the base number that is used for all different versions of the Soul Capacitor. What is modified for each of the different varieties of it is the bonusID value within the actual ItemID string. Example of an itemID string is something like (item:10242:0:0:0:0:0:0:614:0:80:0:0:0:0). You can read up more on it at the following site. (http://wowwiki.wikia.com/wiki/ItemString)
BagSync currently doesn't acknowledge anything in the ItemID string other then the primary base itemID. That is why it's recording you as having the item but not distinguishing between the different varieties or upgrades of the same item.
Example:
Base Soul Capacitor is:
http://www.wowhead.com/item=124225/soul-capacitor&bonus=0#same-model-as
Notice that the ItemID is in the URL string for WOWhead. Which is 124225.
The enhanced version of the Soul Capacitor is:
http://www.wowhead.com/item=124225/soul-capacitor&bonus=562:567
As you can see it's the same ItemID but has bonus attributes given to the item of 562:567 which is the ilvl 725 -> 731 upgrade.
In order for me to implement what you suggest, I would have to alter the current database system for bagSync to parse the ItemID strings for bonusID numbers and store them. This is quite a big update to go through and change throughout the code. Since I don't have an active subscription I don't foresee this happening anytime soon unless someone jumps in and contributes the changes. I apologize for that as my time has been taken up elsewhere for the moment.
I do hope I've give you some insight on why the issue occurs in the first place.
Actually this site has a more up to date explanation on the ItemID and the BonusID numbers.
No problem. TradeSkillMaster can do this, but it isn't as minimalist as I would like. I will use TSM until you have time to review this further in the future. Thank you for the explanation and for your time.
It's not impossible and I would love to put time into implementing this for you when I get around to it. However, since I don't have an active subscription it's a little harder for me to test this out and make the necessary massive changes to how items are parsed. Sorry about that. I'll implement it someday it just won't be never ;) Who knows I may come back for Legion.
Just a quick update, I've recently completed migrating over BagSync to Ace3. I'm in the process of reviewing the ItemID's and the bonusID situation for implementation before release.
Okay I've added bonusID's to BagSync. It will now take these into account when doing the equal searching for both the BagSync Search window and tooltip counts. I'm currently testing this out before I release it though :)
function bonusItems(itemString)
local bonuses = {}
local tbl = { strsplit(":", itemString) }
for key, value in pairs(tbl) do
if key >= 14 then
table.insert(bonuses, tonumber(value))
end
end
return bonuses
end
http://wow.gamepedia.com/Patch_6.0.2/API_changes
BonusIDs are stored in ItemBonus.db2.
Documenting for future implementation.