feat: Release v1.3.2 — Taint Resolution & Stability patches
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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 = {}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user