NeatPlates

NeatPlates

7M Downloads

Quest indicator keeps disappearing on nameplates.

Tyrosi opened this issue ยท 10 comments

commented

What version of the game you are experiencing the issue with:
Live/Retail, French version. Started about 2 days ago

Describe the bug
Quest indicator keeps disappearing on nameplates

To Reproduce
Steps to reproduce the behavior:

  1. Go to a quest or WQ area
  2. No quest indicator
  3. Reload
  4. Quest indicator is back
  5. Loot a quest item (not necessarily related) and it's gone again
  6. Sometimes i don't even need to do anything exept moving, for the quest indicator to disapear

Screenshots

Before reload :
beforereload

After reload :
afterreload

Additional context
Launch was great. No problems of nameplates. Then, i don't really know why, quest indicator start to desapear. Even on my main.
No LUA error related (BugSack addon doesn't show any LUA error when it happens)
(Sorry for my poor english ..)

EDIT :
I just found that the quest indicator disappeared, when i hover an item with the new "Interract key" AND option on "Show All" (See screenshot)
interract

To reproduce

  1. Go to a quest or WQ area
  2. Activate the "Interract with key" option AND "Show all" like screenshot (Set "Show all" option to "Default" solves the problem)
  3. Make sure you see the Quest indicator on mob nameplate
  4. Move your camera to an interractive object, untill you see the name of it (you can start fishing, it works as well)
  5. Quest indicator disappeared.
commented

i can confirm this issue

commented

This issue just got 1000x worse in 10.2. The indicator now disappears every 5 minutes.

commented

This issue is stale because it has been open for 90 days with no activity. If you feel the issue is still relevant, please leave a comment to prevent the issue from being closed in 30 days

commented

Still happening in TWW.

commented

Still happening in TWW.

I can confirm that

commented

Still happening.

commented

@Luxocracy I have been using this for a while now to be able to detect quest and bonus objectives for retail without any problems.

local LT_QuestTitle = Enum.TooltipDataLineType.QuestTitle -- 17
local LT_QuestPlayer = Enum.TooltipDataLineType.QuestPlayer -- 18
local LT_QuestObjective = Enum.TooltipDataLineType.QuestObjective -- 8
local function GetUnitQuestInfo(unit)
	local unitid = unit.unitid
	local questList = {}
	local tooltipData = C_TooltipInfo.GetUnit(unitid)
	local playerName = UnitName("player")
	local lastQuestTitle = nil
	local lastQuestPlayer = nil
	local lastObjectiveTitle = nil
	local lastObjectivePlayer = nil
	local lastObjectiveLine = 0
	local inGroup = GetNumGroupMembers() > 1 -- alone in a group does count as not in group for tooltip data
	local lines = tooltipData and tooltipData.lines
	if lines then
		for i, line  in pairs(lines) do
			-- When alone:
			-- QuestTitle
			-- QuestObjective

			-- When in group
			-- QuestTitle
			-- PlayerName
			-- QuestObjective
			-- PlayerName
			-- QuestObjective

			local lineType = line.type
			if lineType == LT_QuestTitle then
				lastQuestTitle = line.leftText
				questList[lastQuestTitle] = questList[lastQuestTitle] or {}
			elseif lineType == LT_QuestPlayer then
				lastQuestPlayer = line.leftText
			elseif lineType == LT_QuestObjective then
				if lastQuestPlayer == nil or lastQuestPlayer == playerName then
					questList[lastQuestTitle][line.leftText] = line.completed
				end
			end
			-- Event Objective detection
			if i > 1 and lineType == 0 then
				local color = line.leftColor
				if color.r > 0.99 and color.g >= 0.81 and color.b == 0 then -- QuestYellow
					local text = line.leftText
					if lastObjectiveTitle ~= nil and inGroup and UnitGUID(text) then
						lastObjectivePlayer = text
					else
						lastObjectiveTitle = text
						questList[lastObjectiveTitle] = questList[lastObjectiveTitle] or {}
					end
					lastObjectiveLine = i
				elseif lastObjectiveTitle and lastObjectiveLine == (i - 1) then
					if lastObjectivePlayer == nil or lastObjectivePlayer == playerName then
						questList[lastObjectiveTitle][line.leftText] = false
					end
					lastObjectiveLine = i
				else
					lastObjectiveTitle = nil
					lastObjectivePlayer = nil
				end
			end
		end
	end
	-- remove quests without objectives
	for i, objectives in pairs(questList) do
		if next(objectives) == nil then
			questList[i] = nil
		end
	end
	return questList
end
commented

This issue is stale because it has been open for 90 days with no activity. If you feel the issue is still relevant, please leave a comment to prevent the issue from being closed in 30 days

commented

If this works, I'm really thankful for it as this was a pain to debug when I looked at it last.
And it looks much better than looking at texture Ids, which is what was previously done.

I'll add this in and see what I can do about testing it at least a little before releasing anything new.

commented

This seems to be working great from the little testing I was able to do. So I've included it in the latest release.