fix(quest/learner): draw turn-in '?' for in-log quests; learn turn-in NPC
Reverts the previous approach of stripping char.complete (which mutated completed-quest data). Correct rule: a quest in the player's log is active and should show its turn-in location regardless of the completed flag. - AddFinisher now trusts the live quest log: if the quest is in currentQuestlog and not failed, the '?' finisher draws regardless of the (possibly stale, e.g. prior-prestige) char.complete flag. No completion data is modified. Reverts the AcceptQuest and QUEST_QUERY_COMPLETE strips. - Learner: OnTargetChanged now learns quest-giver/turn-in NPC spawns (it previously only cached the GUID), so targeting a turn-in NPC records its location. OnQuestComplete/OnQuestTurnedIn fall back to the 'target' unit when the 'npc' gossip unit is already cleared, so the finisher NPC is reliably learned on turn-in. selene 0 errors; busted 145 successes / same 7 pre-existing failures.
This commit is contained in:
+1
-7
@@ -734,15 +734,9 @@ end
|
||||
function QuestieCompat:QUEST_QUERY_COMPLETE(event)
|
||||
GetQuestsCompleted(Questie.db.char.complete)
|
||||
|
||||
local currentQuestlog = QuestiePlayer and QuestiePlayer.currentQuestlog
|
||||
local questId = next(Questie.db.char.complete)
|
||||
while questId do
|
||||
-- Repeatable quests are never "complete" for availability purposes.
|
||||
-- Also: a quest currently in the player's log is active, not turned in — the server's
|
||||
-- completed list can still report a quest re-accepted after an Ascension prestige, and
|
||||
-- that stale flag suppresses the turn-in '?' finisher and mislabels it "(Complete)".
|
||||
-- Keep char.complete and the live quest log mutually exclusive.
|
||||
if QuestieDB.IsRepeatable(questId) or (currentQuestlog and currentQuestlog[questId]) then
|
||||
if QuestieDB.IsRepeatable(questId) then
|
||||
Questie.db.char.complete[questId] = nil
|
||||
end
|
||||
questId = next(Questie.db.char.complete, questId)
|
||||
|
||||
Reference in New Issue
Block a user