From 7c99ce2a79b72250c46bd0455257df4c5ca58d62 Mon Sep 17 00:00:00 2001 From: Xurkon <36556990+Xurkon@users.noreply.github.com> Date: Tue, 24 Feb 2026 16:10:01 -0600 Subject: [PATCH] Fix: Resolve nil pairs error in Townsfolk initialization on custom servers --- Modules/QuestieMenu/Townsfolk.lua | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/Modules/QuestieMenu/Townsfolk.lua b/Modules/QuestieMenu/Townsfolk.lua index 0d56e21..e2e5c3a 100644 --- a/Modules/QuestieMenu/Townsfolk.lua +++ b/Modules/QuestieMenu/Townsfolk.lua @@ -6,9 +6,6 @@ local QuestieDB = QuestieLoader:ImportModule("QuestieDB") ---@type QuestieProfessions local QuestieProfessions = QuestieLoader:ImportModule("QuestieProfessions") -local _, playerClass = UnitClass("player") -local playerFaction = UnitFactionGroup("player") - local tinsert = tinsert local sub, bitband, strlen = string.sub, bit.band, string.len @@ -289,7 +286,8 @@ function Townsfolk.PostBoot() -- post DB boot (use queries here) or {5140,2928,8924,5173,2930,8923}, ["DRUID"] = {17034,17026,17035,17021,17038,17036,17037} } - reagents = reagents[playerClass] + local _, playerClass = UnitClass("player") + reagents = (playerClass and reagents[playerClass]) or {} if Questie.IsSoD then table.insert(reagents, 212160) -- In SoD the Chronoboon Displacer is sold by reagent vendors end @@ -316,14 +314,21 @@ end function Townsfolk:BuildCharacterTownsfolk() Questie.db.char.townsfolk = {} Questie.db.char.vendorList = {} - Questie.db.char.townsfolkClass = UnitClass("player") + + local _, playerClass = UnitClass("player") + local playerFaction = UnitFactionGroup("player") + Questie.db.char.townsfolkClass = playerClass - for key, npcs in pairs(Questie.db.global.factionSpecificTownsfolk[playerFaction]) do - Questie.db.char.townsfolk[key] = npcs + if playerFaction and Questie.db.global.factionSpecificTownsfolk[playerFaction] then + for key, npcs in pairs(Questie.db.global.factionSpecificTownsfolk[playerFaction]) do + Questie.db.char.townsfolk[key] = npcs + end end - for key, npcs in pairs(Questie.db.global.classSpecificTownsfolk[playerClass]) do - Questie.db.char.townsfolk[key] = npcs + if Questie.db.global.classSpecificTownsfolk[playerClass] then + for key, npcs in pairs(Questie.db.global.classSpecificTownsfolk[playerClass]) do + Questie.db.char.townsfolk[key] = npcs + end end end @@ -356,6 +361,7 @@ local function _UpdateFoodDrink() end function Townsfolk:UpdatePlayerVendors() -- call on levelup + local _, playerClass = UnitClass("player") _UpdateFoodDrink() if playerClass == "HUNTER" then _UpdatePetFood() @@ -366,6 +372,7 @@ function Townsfolk:UpdatePlayerVendors() -- call on levelup end function Townsfolk:PopulateVendors(itemList, existingTable, restrictLevel) + local playerFaction = UnitFactionGroup("player") local factionKey = playerFaction == "Alliance" and "A" or "H" local tbl = existingTable or {} -- Create a cache to minimize db calls