Rarity

Rarity

17M Downloads

Add new (standardized) detection method for looting game objects

rdw-software opened this issue ยท 4 comments

commented

Source: WowAce

Argus zones have transmog sets that can be found in each zone's rotating/daily treasure chests. These chests rotate locations within a group have an internal/invisible daily quest tracking their completion status. (For instance, one such chest group and its associated tracking quest.)

In essence, each chest has a many-to-many relationship to each potential transmog item drop. Is it possible to set up custom item rules so that opening a chest counts as an attempt towards that item? I tried setting it up as a container rule, but I think that's for item containers like Paragon caches. And trying to use the tracking quest ID as an "item defeated" quest ID doesn't register either.

We could remove the custom logic added for various items IFF we manage to find a way to streamline it and generalize it to the point that it could be exposed to end users via the "Custom" category.

Caveat: It will only work if the object's name is translated (for non-English clients). This should likely be reflected as a warning in the Options UI if this feature was to be implemented.

commented

The only way to detect quest completion for treasures appears to be rather unwieldy: https://www.wowinterface.com/forums/showthread.php?t=54696

You should look at some Handy Notes plugins to see how they check completion of quests.
You may also be able to glean quest IDs from the appropriate plugin.

commented

As far as getting the quest IDs yourself, it's a two step process:

Step 1) Make a macro with this and run it before you click a treasure

/script local q = {}; for id = 0, 100000 do q[id] = C_QuestLog.IsQuestFlaggedCompleted(id) end _G.QUESTCHECK = q; print('Quests scanned!')

Step 2) Make another macro, and run after you click a treasure

/script local q = _G.QUESTCHECK; for id = 0, 100000 do local s = C_QuestLog.IsQuestFlaggedCompleted(id); if s ~= q[id] then print('Quest '..id..' changed: '..tostring(q[id]).. ' => '..tostring(s)) end end print('Quests checked!')
commented

Yes, that's exactly what I was referring to as "unwieldy" :) You have to take a snapshot of all completed quests before and after looting a treasure, i.e., there's no event or other method of registering for quest completion from looting them.

This is awkward and might also have some performance implications, if performed frequently (after looting).

commented

The only way to detect quest completion for treasures appears to be rather unwieldy: https://www.wowinterface.com/forums/showthread.php?t=54696