ExtraQuestButton

ExtraQuestButton

109k Downloads

Problem with Suramar World Quest id 44067

ggiovannelli opened this issue ยท 8 comments

commented

Hi p3lim,

I am using ExtraQuestButton and I have noticed that in the questid 44067 the item to be used itemid:141253 is always overwritten by the spell used as disguised night elf (spellid 204477).

The problem is that the quest item is to be used when you have to fight some elites, but when you fight you are not disguised anymore and so the the other spell appears (even if in combat) overwritten the first.

Thanks if you can check it .

commented

I'm aware of this, but to fix this I would have to ditch the whole idea of a synergy between the button created by the addon and the ExtraActionButton, as I doubt I can manipulate the EAB like I'd want to.

commented

Contradicting labels, I know, but I will investigate it, just no guaranteed fix for now.

commented

Thanks :)

commented

It seems simple in practice, but when you have to account for the secure environment buttons are limited to, you start running out of options quick.

commented

As a potential solution for this;
Why not have the Suramar disguise EAB only override the EQB if the nightborne disguise buff is not present? It would be a single conditional, and would allow you to programatically address other situations like this? For example, there are vehicle quests where you summon the vehicle using the quest item, if you are in the vehicle it makes sense to no longer show the quest button, and if the vehicle gets destroyed it makes sense to then show the button again.

Seems like a reasonable, polished approach to this type of situation.

commented

Try this commit: aa4242a + badf668

It's the latest on master branch, I've also done a lot of work cleaning up the code in the previous commit so parts of the code might be unfamiliar.

commented
function ExtraQuestButton:SetItem(itemLink, texture)
	if(HasExtraActionBar()) then
		local button = _G['ExtraActionButton1']
		local slot = ActionButton_GetPagedID(button) or ActionButton_CalculateAction(button) or button:GetAttribute('action') or 0
		if HasAction(slot) then
			local actionName, _
			local actionType, id = GetActionInfo(slot)
			if actionType == 'spell' or (actionType == 'macro' and id) then
				actionName = GetSpellinfo(id)
			end
	
			if actionName == "Masquerade" then
				if UnitBuff("player", "Masquerade") then
					DEFAULT_CHAT_FRAME:AddMessage("Player has Masquerade, we can hide the ExtraActionButton1")
				else
					DEFAULT_CHAT_FRAME:AddMessage("Masquerade not present, let the ExtraActionButton1 show")
					return
				end
			end
		
		end
	end

Something like this?

commented

Been testing it on and off, seems to work fine. Closing this issue.