Set quest.isComplete when IsComplete==1 in GetAllQuestIds

QuestieArrow._CollectQuestTargets checks quest.isComplete (the quest
object field) to decide whether to collect finisher spawns or objective
spawns. Without setting this field, the arrow fell through to objective
collection and picked up the stale Cold Iron Key fake objective
(CheckQuestSourceItem) which resolves to NPC 29323 at 39.8, 72.7.

Now when QuestieDB.IsComplete returns 1, set quest.isComplete = true
and quest.WasComplete = true before PopulateObjectiveNotes, so the
arrow correctly routes to the finisher (Gretchen Fizzlespark) instead.
This commit is contained in:
Xurkon
2026-02-21 11:59:34 -06:00
parent 25f2ece139
commit 6d86a784e7
+7 -1
View File
@@ -781,7 +781,13 @@ function QuestieQuest:GetAllQuestIds()
-- Only draw the source item objective when the quest is not yet complete. -- Only draw the source item objective when the quest is not yet complete.
-- If the quest is complete (complete == 1), the source item was consumed during -- If the quest is complete (complete == 1), the source item was consumed during
-- the quest (e.g. Cold Iron Key for quest 12843) and should not draw its drop NPC. -- the quest (e.g. Cold Iron Key for quest 12843) and should not draw its drop NPC.
if complete ~= 1 then if complete == 1 then
-- Mark the quest object as complete so QuestieArrow collects finisher spawns
-- instead of objective spawns. Without this, the arrow falls through to the
-- objective collection path and picks up any stale fake item objectives.
quest.isComplete = true
quest.WasComplete = true
else
QuestieQuest:CheckQuestSourceItem(questId, true) QuestieQuest:CheckQuestSourceItem(questId, true)
end end
QuestieQuest:PopulateQuestLogInfo(quest) QuestieQuest:PopulateQuestLogInfo(quest)