local GetTime = QuestHelper_GetTime QuestHelper_File["manager_completed.lua"] = "4.0.1.$svnversion$" QuestHelper_Loadtime["manager_completed.lua"] = GetTime() local completed_active = false local rescan function QH_Incomplete() if QueryQuestsCompleted then completed_active = not completed_active if completed_active then QuestHelper:TextOut("Activating incomplete quest list. Please check your map.") else QuestHelper:TextOut("Deactivating incomplete quest list.") end rescan() else QuestHelper:TextOut("This feature isn't available until the WoW 3.3 patch. Sorry!") end end if not QueryQuestsCompleted then return end local quests = {} local temp_notifications = {} function QH_GetCompletedTable() return quests end local notifications = {} function QH_AddCompletionNotifier(func) table.insert(notifications, func) end local function notify() for _, v in ipairs(notifications) do v(quests) end end local poll_again = true local poll_timeout = GetTime() + 30 local poll_first = true QH_Event("QUEST_QUERY_COMPLETE", function () quests = GetQuestsCompleted() -- entertainingly, we actually want exactly the output of this. How convenient! Blizzard does things right <3 forever notify() end) local GetQuestReward_Orig = GetQuestReward GetQuestReward = function (...) poll_again = true GetQuestReward_Orig(...) end QH_OnUpdate(function() if poll_again and poll_timeout < GetTime() then QueryQuestsCompleted() --print("QQC") poll_again = false poll_first = false end end, "quest_completed") -- now over here we're rigging up something to scatter waypoints all over the goddamn map -- we're just tossing them out like sprinkles -- neon lozenges, scattered upon the ground -- colors across the leaves, sucrose stars hangin' out across the foliage -- here comes a squirrel -- oh look it is eating the candy! how adorable -- we should take it home and keep it as a pet -- now you understand waypoints. -- Aloha. local waypoint_zone function rescan() if not waypoint_zone then return end if not QuestHelper.Astrolabe.WorldMapVisible then return end QH_POI_Reset() if not completed_active then return end local questlist = DB_GetItem("questlist", waypoint_zone, true) if not questlist then return end local donequests = QH_GetCompletedTable() for _, v in ipairs(questlist) do if donequests[v] then --print("Done:", v) else --print("Not done:", v) local ql = DB_GetItem("quest", v) --print(ql.start) --print(ql.start.loc) --print(ql.start.loc[1]) QH_POI_Add(waypoint_zone, ql.start.loc[1].x, ql.start.loc[1].y, string.format("%s (quest #%d)", ql.name or "(unknown quest name)", v)) end end end QH_AddCompletionNotifier(rescan) QH_Event("WORLD_MAP_UPDATE", function () -- NOTE: WILL NOT WORK UNTIL UPGRADE.LUA IS FIXED local m, f = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel() --print(c, z) if not QuestHelper_IndexLookup[c] or not QuestHelper_IndexLookup[c][z] then return end QuestHelper: Assert(QuestHelper_IndexLookup[c]) QuestHelper: Assert(QuestHelper_IndexLookup[c][z]) waypoint_zone = QuestHelper_IndexLookup[c][z] rescan() end)