Restore visible error for non-event objectives missing spawnList

Event-type objectives (triggerEnd with no coordinates) silently skip.
All other objective types with missing spawnList keep Questie:Error
so players can see and report missing spawn data.
This commit is contained in:
Xurkon
2026-02-21 11:10:15 -06:00
parent db1d8363c4
commit 6600e57d30
+19 -2
View File
@@ -665,7 +665,22 @@ function QuestieQuest:UpdateQuest(questId)
-- Quest was somehow reset back to incomplete after being completed (quest.WasComplete == true).
-- The "or" check looks for a sourceItemId then checks to see if it's NOT in the players bag.
-- Player destroyed quest items? Or some other quest mechanic removed the needed quest item.
if quest and (quest.WasComplete or (sourceItemId > 0 and QuestieQuest:CheckQuestSourceItem(questId) == false)) then
-- Check if all objectives are already complete before treating a missing source item as a reset.
-- Some quests use consumable key items (e.g. Cold Iron Key for quest 12843). After using the key
-- the item leaves the bag, making CheckQuestSourceItem return false. Without this guard, Questie
-- would reset the quest and draw the key-drop NPC on the map even though all objectives are done.
local allObjectivesComplete = false
if quest.Objectives and #quest.Objectives > 0 then
local doneCount = 0
for i = 1, #quest.Objectives do
if quest.Objectives[i] and quest.Objectives[i].Completed == true then
doneCount = doneCount + 1
end
end
allObjectivesComplete = (doneCount == #quest.Objectives)
end
if quest and not allObjectivesComplete and (quest.WasComplete or (sourceItemId > 0 and QuestieQuest:CheckQuestSourceItem(questId) == false)) then
Questie:Debug(Questie.DEBUG_DEVELOP,
"[QuestieQuest:UpdateQuest] Quest was once complete or Quest Item(s) were removed. Resetting quest.")
@@ -1278,7 +1293,9 @@ _RegisterObjectiveTooltips = function(objective, questId, blockItemTooltips)
objective.hasRegisteredTooltips = true
return
end
Questie:Debug(Questie.DEBUG_ELEVATED, "[QuestieQuest]: [Tooltips] No spawnList for objective:", objective.Description, "quest:", questId)
Questie:Error("[QuestieQuest]: [Tooltips] " ..
l10n("There was an error populating objectives for %s %s %s %s", objective.Description or "No objective text",
questId or "No quest id", 0 or "No objective", "No error"))
end
if (not objective.registeredItemTooltips) and objective.Type == "item" and (not blockItemTooltips) and objective.Id then