fix: Sunstrider pin regression, ghost pins, and learner zone normalization
- Fix: isSunstrider block in _MergeSpawnEvidence now checks IsAscensionProtected before writing learner data to npcDataOverrides. Without this guard, each Mana Wyrm kill overwrote AscensionDB's z1241=5 data with learner z3431 coords. - Fix: Clustering disabled for zone 1241 (Sunstrider Isle) in _DrawObjectiveIcons so all 5 AscensionDB spawn pins display individually instead of collapsing to 2. - Fix: Ghost pin loop in AvailableQuests.lua -- 'while frames[i]' was iterating a string-keyed table with a numeric index (never iterated). Changed to pairs(). - Fix: NormalizeSpawnZoneKey now uses ZoneDB.areaIdToUiMapId for all zones so learner evidence is stored under map IDs (e.g. 1241) not area IDs (e.g. 3431), matching AscensionDB's key space. Applied in LearnNPC and _StoreGuidSpawnEvidence. - Fix: isSunstrider detection in _MergeSpawnEvidence updated from hardcoded zoneId==3431 check to IsSunstriderNativeZone() since zone IDs are now normalized to map IDs at storage time.
This commit is contained in:
@@ -712,9 +712,15 @@ local function _GetZoneName(zoneOrSort, questId, zoneNameOverride)
|
||||
elseif (zoneOrSort) < 0 then
|
||||
zoneName = TrackerUtils:GetCategoryNameByID(zoneOrSort)
|
||||
else
|
||||
zoneName = "Unknown Zone"
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[TrackerUtils:_GetZoneName] zoneOrSort", zoneOrSort, "of quest",
|
||||
questId, "is not in the Database!")
|
||||
-- zoneOrSort == 0: try quest log header as last resort before "Unknown Zone"
|
||||
local logZone = GetQuestLogZoneName(questId)
|
||||
if logZone then
|
||||
zoneName = logZone
|
||||
else
|
||||
zoneName = "Unknown Zone"
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[TrackerUtils:_GetZoneName] zoneOrSort", zoneOrSort, "of quest",
|
||||
questId, "is not in the Database!")
|
||||
end
|
||||
end
|
||||
else
|
||||
if sortObj == "byComplete" then
|
||||
@@ -837,7 +843,9 @@ function TrackerUtils:GetSortedQuestIds()
|
||||
if not quest.SpecialObjectives then quest.SpecialObjectives = {} end
|
||||
if not quest.ExtraObjectives then quest.ExtraObjectives = {} end
|
||||
-- Use the quest log header walk (canonical 3.3.5 zone resolution)
|
||||
if not quest.zoneName or quest.zoneName == "" then
|
||||
-- Also run if zoneName is set but zoneOrSort is still 0 (e.g. GetAreaIdByZoneName
|
||||
-- returned 0 for a valid zone name like "Sunstrider Isle", leaving zoneOrSort wrong).
|
||||
if not quest.zoneName or quest.zoneName == "" or quest.zoneOrSort == 0 then
|
||||
local logZone = GetQuestLogZoneName(capturedId)
|
||||
if logZone then
|
||||
quest.zoneName = logZone
|
||||
|
||||
Reference in New Issue
Block a user