Rarity

Rarity

18M Downloads

Machine Defense Unit 1-11 uses wrong object ID for container

rdw-software opened this issue ยท 2 comments

commented

Source: WowAce

With the latest version of the addon, opening the Awakened Caches upon completion of the machine awakening scenario is giving too much credit for attempts toward the mount. According to Wowhead, only a single object (https://www.wowhead.com/object=464938/awakened-cache) can drop the mount - this is the one for doing all 20 waves.

Instead, multiple opens of the different caches are counting toward mount progress. For an accurate count, this means manually going in and adjusting down the number of attempts.


Rarity doesn't actually use object IDs to detect game objects, but rather tooltip scanning (based on the object's localized name). Unfortunately, that means there's no way to differentiate between the caches by their ID. There was no wowhead data suggesting they'd need to be treated differently and the implementation is based on user reports, because I have no way to test the detection ingame (nor access to TWW content in general).

If there's a way to retrieve the object ID when opening containers, the detection can be improved. However, I'm not aware of one.

commented

One vague idea I did have:

Since wowhead seems to be tracking what players received from opening the containers, and they use an addon (called "wowhead looter") for this, there should in theory be a way to figure out what they're doing and reproduce the relevant parts in Rarity.

This might warrant an investigation, although I don't think I'll have time to tackle this anytime soon. Maybe someone else will ;)

commented

It's actually much simpler than I had originally thought: On LOOT_READY, Rarity already checks the "NPC" GUID.
Currently the handling is skipped if the object isn't one tracked via SPECIAL code, but that's an easy fix (ignore target).
I'm not sure how reliable this method will be, but it's probably not worse than the current approach in this regard?

In the long term, it might be worth generalizing GUID checks and simply storing the wowhead IDs in the database:

	["Machine Defense Unit 1-11"] = {
		cat = CONSTANTS.ITEM_CATEGORIES.TWW,
		type = CONSTANTS.ITEM_TYPES.MOUNT,
		method = CONSTANTS.DETECTION_METHODS.WORLD_OBJECT, -- Or similar
		objectId = 464938, -- https://www.wowhead.com/object=464938/awakened-cache
		name = L["Machine Defense Unit 1-11"],
		itemId = 223269,
		spellId = 448188,
		chance = 5,
		coords = { { m = CONSTANTS.UIMAPIDS.THE_RINGING_DEEPS } },
	},

Some other things worth considering:

  • Does it work the same on Classic Era/Cataclysm as well? (e.g., AOE vs. single target looting)
  • Is the spell tracking required for this method? If not, it could be simplified (for this case; but not fishing/opening?)
  • Is there any way this could fail? If yes, maybe a fallback using tooltip scanning or quest completion would be needed
  • The GUID format may have changed at some point (?), don't remember exactly - worth researching, just in case

Even a quick fix for this particular item would be useful so that people can test it ingame. Everything else can be done later.