LibObjectiveProgress-1.0

14.8k Downloads

LibObjectiveProgress is a simple library designed to provide an API for quest objective progress weight information.

For Mythic dungeons, it provides the following API (where mapID is mapID, NOT worldMapID, and where isTeeming is a boolean that defaults to false):
GetNPCWeightByMap(mapID, npcID, isTeeming = false, isAlternate = false) - returns weight in percentage form ('1' for 1%) or nil

Note: isTeeming and isAlternate do not need to be supplied; they are assumed false if not provided. Also, the purpose of the 'isAlternate' argument is for two specific dungeons that share a map. Upper Karazhan and the Horde version of Siege of Boralus are accessed by supplying the argument 'true', otherwise, Lower Karazhan and the Alliance version of Siege of Boralus will have their results returned.

For quests (including world quests), it provides the following API:
GetNPCWeightByQuest(questID, npcID) - returns weight in percentage form ('1' for 1%) or nil
GetNPCWeightByCurrentQuests(npcID) - returns a table of '[questID] = weight' pairs for the specified NPC -or- nil in the case that the NPC has no weights under any of the current quests

The library is relatively lightweight, and data is not directly loaded until it is requested (first request for a map-based weight will load all map-based weights, and first request for a quest-based weight will load all quest-based weights).

KNOWN ISSUES:
World quest NPC weight data is lacking for some quests. Gathering the weights from the game's files is an intensive process and relies on the server having seen a player do the quest.