fix: let learner turn-ins drive arrow spawns

This commit is contained in:
Xurkon
2026-06-06 11:48:11 -05:00
parent 688e0bc0bf
commit 287751a071
4 changed files with 81 additions and 4 deletions
+32
View File
@@ -142,6 +142,22 @@ describe("QuestieLearner kill-path batching", function()
assert.equals(1, table.getn(Questie.dbLearner.global.npcs[4001][7][44]))
end)
it("keeps quest-related protected npc spawns available for turn-in arrows", function()
Questie.dbLearner.global.settings.dataSourceMode = "auto"
QuestieDB.ascensionOverrideKeys = QuestieDB.ascensionOverrideKeys or {}
QuestieDB.ascensionOverrideKeys.NPC = QuestieDB.ascensionOverrideKeys.NPC or {}
QuestieDB.ascensionOverrideKeys.NPC[5001] = { [7] = true }
QuestieLearner:LearnQuestGiver(6007, 5001, 1, false)
QuestieLearner:LearnNPC(5001, "Protected Turn-In", nil, nil, nil, nil, 15.5, 25.5, 44)
drainQueuedTimers()
assert.is_table(QuestieDB.npcDataOverrides[5001])
assert.is_table(QuestieDB.npcDataOverrides[5001][7])
assert.is_table(QuestieDB.npcDataOverrides[5001][7][44])
assert.equals(1, table.getn(QuestieDB.npcDataOverrides[5001][7][44]))
end)
it("ignores non-quest loot items so they do not pollute learner state", function()
Questie.dbLearner.global.settings.dataSourceMode = "learner"
QuestieDB.private.itemCache = {}
@@ -196,6 +212,22 @@ describe("QuestieLearner kill-path batching", function()
assert.equals(22.2, Questie.dbLearner.global.objects[3302][4][44][1][2])
end)
it("keeps quest-related protected object spawns available for turn-in arrows", function()
Questie.dbLearner.global.settings.dataSourceMode = "auto"
QuestieDB.ascensionOverrideKeys = QuestieDB.ascensionOverrideKeys or {}
QuestieDB.ascensionOverrideKeys.OBJECT = QuestieDB.ascensionOverrideKeys.OBJECT or {}
QuestieDB.ascensionOverrideKeys.OBJECT[5002] = { [4] = true }
QuestieLearner:LearnQuestGiver(6008, 5002, 2, false)
local learned = QuestieLearner:LearnObject(5002, "Protected Object", 21.5, 31.5, 44, true)
assert.is_true(learned)
assert.is_table(QuestieDB.objectDataOverrides[5002])
assert.is_table(QuestieDB.objectDataOverrides[5002][4])
assert.is_table(QuestieDB.objectDataOverrides[5002][4][44])
assert.equals(1, table.getn(QuestieDB.objectDataOverrides[5002][4][44]))
end)
it("rejects non-quest item network merges without quest references", function()
Questie.dbLearner.global.settings.dataSourceMode = "learner"
local changed = QuestieLearner:_ApplyIncomingNetworkMerge("ITEM", 2401, { [1] = "Arcane Sliver" }, "NEW")