feat: Release v1.3.2 — Taint Resolution & Stability patches

This commit is contained in:
Xurkon
2026-03-18 15:08:52 -05:00
parent b3021eb06d
commit aed0daf4ce
14 changed files with 107 additions and 99 deletions
+5 -1
View File
@@ -139,7 +139,11 @@ end
function QuestieLoader:PopulateGlobals() -- called when debugging is enabled
for name, module in pairs(modules) do
_G[name] = module
if _G[name] == nil then
_G[name] = module
elseif _G[name] ~= module then
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieLoader] GLOBAL COLLISION: '" .. tostring(name) .. "' already exists in _G! Skipping population to avoid Taint.")
end
end
end
+2 -29
View File
@@ -471,11 +471,8 @@ QuestieComms._yellWaitingQuests = {}
QuestieComms._yellQueue = {}
QuestieComms._isYelling = false
local _loadupTime_removeme = GetTime() -- this will be removed in 6.0.1 or 6.1, when we can figure out a proper way to prevent
-- yelling quests on login. Not enough time to make and test a proper fix
function QuestieComms:YellProgress(questId)
if Questie.db.profile.disableYellComms or badYellLocations[C_Map.GetBestMapForUnit("player")] or QuestiePlayer.numberOfGroupMembers > 4 or GetTime() - _loadupTime_removeme < 8 then
if Questie.db.profile.disableYellComms or badYellLocations[C_Map.GetBestMapForUnit("player")] or QuestiePlayer.numberOfGroupMembers > 4 then
return
end
if not QuestieComms._yellWaitingQuests[questId] then
@@ -484,35 +481,11 @@ function QuestieComms:YellProgress(questId)
tinsert(QuestieComms._yellQueue, questId)
else
QuestieComms._isYelling = true
C_Timer.After(2, function()
_DoYell(questId)
end)
-- Yell progress feature is currently disabled
end
end
end
_DoYell = function(questId)
--[[local data = {}
local _, count = QuestieComms:PopulateQuestDataPacketV2(questId, data, 1)
if count > 0 then -- dont send quests with no objectives
local packet = _QuestieComms:CreatePacket(_QuestieComms.QC_ID_YELL_PROGRESS);
packet.data[1] = data;
packet.data.priority = "BULK"
packet.data.writeMode = _QuestieComms.QC_WRITE_YELL
packet:write();
QuestieComms._yellWaitingQuests[questId] = nil
end
local nextQuest = tremove(QuestieComms._yellQueue, 1)
if nextQuest then
C_Timer.After(2, function()
_DoYell(nextQuest)
end)
else
QuestieComms._isYelling = false
end]]
end
_QuestieComms._isBroadcasting = false
_QuestieComms._needsNewBroadcast = false
_QuestieComms._nextBroadcastData = {}
+9 -21
View File
@@ -93,29 +93,17 @@ function QuestieComms.data:RegisterTooltip(questId, playerName, objectives)
--Questie:Debug(Questie.DEBUG_DEVELOP, "Adding tooltip lookup", lookupKey, questId, playerName);
if(objective.type == "i") then
local item = QuestieDB:GetItem(objective.id);
if not item or item.Hidden then
return
end
for index, source in pairs(item.Sources or {}) do
local sourceType = string.sub(source.Type, 1, 1);
local sourceId = source.Id;
local sourceLookupKey = sourceType.."_"..sourceId;
QuestieComms.data:AddTooltip(playerName, questId, sourceLookupKey, objectiveIndex, objective);
if item and not item.Hidden then
for index, source in pairs(item.Sources or {}) do
local sourceType = string.sub(source.Type, 1, 1);
local sourceId = source.Id;
local sourceLookupKey = sourceType.."_"..sourceId;
QuestieComms.data:AddTooltip(playerName, questId, sourceLookupKey, objectiveIndex, objective);
end
end
else
QuestieComms.data:AddTooltip(playerName, questId, lookupKey, objectiveIndex, objective);
end
--[[if(not commsTooltipLookup[lookupKey]) then
commsTooltipLookup[lookupKey] = {}
end
if(not commsTooltipLookup[lookupKey][playerName]) then
commsTooltipLookup[lookupKey][playerName] = {};
end
if(not commsTooltipLookup[lookupKey][playerName][questId]) then
commsTooltipLookup[lookupKey][playerName][questId] = {};
end
commsTooltipLookup[lookupKey][playerName][questId][objectiveIndex] = objective;
playerRegisteredTooltips[playerName][questId][lookupKey] = true;]]--
QuestieComms.data:AddTooltip(playerName, questId, lookupKey, objectiveIndex, objective);
end
end
end
+7 -9
View File
@@ -14,12 +14,9 @@ local GetQuestIDFromLogIndex = QuestieCompat.GetQuestIDFromLogIndex
function Hooks:HookQuestLogTitle()
Questie:Debug(Questie.DEBUG_DEVELOP, "[Hooks] Hooking Quest Log Title")
local baseQLTB_OnClick = QuestLogTitleButton_OnClick
-- We can not use hooksecurefunc because this needs to be a pre-hook to work properly unfortunately
QuestLogTitleButton_OnClick = function(self, button)
hooksecurefunc("QuestLogTitleButton_OnClick", function(self, button)
if (not self) or self.isHeader then
baseQLTB_OnClick(self, button)
return
end
@@ -39,18 +36,19 @@ function Hooks:HookQuestLogTitle()
ChatEdit_InsertLink(questLink)
end
QuestLog_SetSelection(questLogLineIndex)
return
-- We can't return here to stop the execution of the original function in hooksecurefunc,
-- but for chat links the original function usually just selects the quest anyway.
end
-- For all other clicks (including tracking/untracking), use the original function
-- only call Questie's tracker if we actually want to fix this quest (normal quests already call AQW_insert)
if Questie.db.profile.trackerEnabled and GetNumQuestLeaderBoards(questLogLineIndex) == 0 and (not IsQuestWatched(questLogLineIndex)) then
QuestieTracker:AQW_Insert(questLogLineIndex, QUEST_WATCH_NO_EXPIRE)
WatchFrame_Update()
if WatchFrame_Update then
WatchFrame_Update()
end
QuestLog_SetSelection(questLogLineIndex)
QuestLog_Update()
else
baseQLTB_OnClick(self, button)
end
end
end)
end
-1
View File
@@ -473,7 +473,6 @@ function QuestieInit:LoadBaseDB()
local function _pullGlobal(dbKey, globalName)
if type(_G[globalName]) == "table" then
QuestieDB[dbKey] = _G[globalName]
_G[globalName] = nil
return true
end
return false
+3 -3
View File
@@ -7,15 +7,15 @@ local function doWorkaround()
-- HDB (and Questie fork of it) uses WorldMapFrame:AddDataProvider( ).
-- print("|cff30fc96Questie|r: |cff00bc32Hiding drop-down menus on the World Map.|r This is currently necessary as a workaround for a bug in the default Blizzard UI related to drop-down menus.")
if WorldMapZoneMinimapDropDown then
WorldMapZoneMinimapDropDown_Update = function() end
WorldMapZoneMinimapDropDown:Hide()
end
if WorldMapContinentDropDown then
--WorldMapContinentDropDown_Update = function() end
-- We only Hide() these frames.
-- Reassigning the _Update functions (e.g. WorldMapContinentDropDown_Update = function() end)
-- would cause Taint, which results in ADDON_ACTION_BLOCKED: UseAction().
WorldMapContinentDropDown:Hide()
end
if WorldMapZoneDropDown then
--WorldMapZoneDropDown_Update = function() end
WorldMapZoneDropDown:Hide()
end
--WorldMapMagnifyingGlassButton:Hide()