QuickQuest

QuickQuest

684k Downloads

Interface action failed because of an AddOn

Ramurotand opened this issue ยท 1 comments

commented

Version 80100.39
Retail Game Version 8.2

Quest Frame no longer opens in combat. I believe this is related to the fact that addOns can no longer HideUIPanel or ShowUIPanel in combat (or taint the execution path before Blizzard calls that function).

To reproduce this issue disable all addOns except QuickQuest, get into combat, then click on an npc quest giver to get the message "Interface action failed because of an AddOn" in the chat frame.

I may be mistaken, but I think line 264 of QuickQuest.lua is overwriting a Blizzard function and tainting the execution path so it can no longer ShowUIPanel() later on.

Here is the taintLog:

7/4 03:56:19.612  Global variable INTERFACE_ACTION_BLOCKED_SHOWN tainted by QuickQuest - Interface\FrameXML\UIParent.lua:5296 DisplayInterfaceActionBlockedMessage()
7/4 03:56:19.612      Interface\FrameXML\UIParent.lua:3188 CheckProtectedFunctionsAllowed()
7/4 03:56:19.612      Interface\FrameXML\UIParent.lua:3200 ShowUIPanel()
7/4 03:56:19.612      Interface\FrameXML\QuestFrame.lua:97 QuestFrame_OnEvent()
7/4 03:56:19.612      Interface\AddOns\QuickQuest\QuickQuest.lua:264 method()
7/4 03:56:19.612      Interface\AddOns\QuickQuest\QuickQuest.lua:9 ?()
7/4 03:56:19.612      Interface\AddOns\QuickQuest\QuickQuest.lua:2

Original code:

QuickQuest:Register('QUEST_DETAIL', function(...)
	if(not QuestGetAutoAccept() and not QuestIsFromAreaTrigger() and not QuickQuestBlacklistDB[GetQuestID()]) then
		QuestFrame_OnEvent(QuestFrame, 'QUEST_DETAIL', ...)
	end
end, true)

My small hack to get at least get some functionality without the error:

QuickQuest:Register('QUEST_DETAIL', function(...)
	--[[if(not QuestGetAutoAccept() and not QuestIsFromAreaTrigger() and not QuickQuestBlacklistDB[GetQuestID()]) then
		QuestFrame_OnEvent(QuestFrame, 'QUEST_DETAIL', ...)
	end]]
	if (QuestGetAutoAccept() or QuestIsFromAreaTrigger() or QuickQuestBlacklistDB[GetQuestID()]) then
		return
	end
end, true)
commented

Thanks for reporting with great detail.