From 6355545890986d770514e60295e0fd8567ebcd0a Mon Sep 17 00:00:00 2001 From: Xurkon Date: Thu, 11 Jun 2026 15:34:04 -0500 Subject: [PATCH] fix(learner): show every learned pin on Sunstrider, not a clustered dot A prior change (dd630fd) kept clustering enabled on Sunstrider Isle in learner mode to avoid pin fan-out, but that collapsed several distinct learned coordinates (e.g. 7 Arcane Wraith spots) into a single pin -- breaking the DB-building workflow where every learned spawn must be visible. The SavedVariables data was correct the whole time; this was a display regression. Sunstrider (1241) now shows every distinct pin by default in all data-source modes; consolidation only happens when the player explicitly raises the Dense Pin Clustering Aggressiveness knob. --- CHANGELOG.md | 1 + Modules/Quest/QuestieQuest.lua | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 281b886..2fdabe6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ ### Bug Fixes +- **[Learner - Sunstrider Shows Every Learned Pin Again]** Learner-recorded spawns on Sunstrider Isle were being collapsed to a single pin: a prior change kept clustering enabled there in learner mode, so several distinct learned coordinates (e.g. seven Arcane Wraith spots) consolidated into one icon — breaking the DB-building workflow where every learned spawn must be visible. Sunstrider (uiMapID 1241) now shows every distinct pin by default in **all** data-source modes; consolidation only happens if the player explicitly raises the Dense Pin Clustering Aggressiveness knob. (The data was correct in SavedVariables the whole time — this was purely a display/clustering regression.) - **[Tooltip - Collapse Stacked Ascension Quest-Progress Lines]** (#9) Tooltips could pile up a stack of progress lines for the same objective — `0/8`, `1/8`, `2/8`, `3/8` — because the Ascension server appends a new progress line on every objective update instead of replacing the old one. A new always-on pass (`DedupeAscensionProgressLines`) collapses each stack to its single most-progressed line. It only ever hides a line when the same tooltip holds another progress line with the same objective text and denominator, so it never touches other addons' tooltip lines or Questie's own single-line objectives (unit-tested). This is separate from the opt-in "Hide Ascension quest progress lines" option (#16), which removes such lines entirely. - **[Map - Completed Quest Pins Stuck On The World Map Until Reload]** (#9) A completed quest/objective's pin could stay on the world map (while the minimap correctly cleared it) until a `/reload`. Cause: a draw-queue race. The world-map and minimap draw queues are processed independently in `ProcessQueue`, so when a frame was unloaded while still queued (e.g. an objective that completes the same tick its pins were queued), the frame's minimap-queue entry could trigger the deferred `Unload` first — removing both icons and clearing the unload flag — and then a later map-queue entry would re-add the world-map icon. Because `Unload` had already nil'd the `questIdFrames`/`_G` reference, that re-added pin was orphaned and survived until `/reload`. `Unload` now drops the frame's pending draw-queue entries (new `QuestieMap:DequeueFrameDrawCalls`), so an unloaded frame can never be re-added to a map — keeping both maps in sync. - **[Map - Quest-Type Filters Now Truly Apply To The Minimap]** (#11) Filtered quest types (e.g. dungeon quests) could still show on the minimap while correctly hidden on the world map. The previous fix made the minimap `FadeLogic` re-check `ShouldBeHidden` only when deciding whether to *re-show* an already-hidden icon — so an icon that was already visible (or that HBD's pin renderer showed on coming into range) was never hidden. `FadeLogic` now proactively calls `ShouldBeHidden` for every in-range minimap icon and `FakeHide`s it when filtered, in both minimap fade paths (quest icons and townsfolk/manual icons). The same path also picked up the #17 minimap-radius cutoff gating it was missing. diff --git a/Modules/Quest/QuestieQuest.lua b/Modules/Quest/QuestieQuest.lua index 98a7ba9..f82c817 100644 --- a/Modules/Quest/QuestieQuest.lua +++ b/Modules/Quest/QuestieQuest.lua @@ -2073,15 +2073,14 @@ _DrawObjectiveIcons = function(questId, iconsToDraw, objective, maxPerType) range = range * 0.2; -- Only use 20% of the default range. end - -- Sunstrider Isle (uiMapID 1241) is a tiny starting area where AscensionDB - -- places individual spawn coords that should each show as a distinct pin. - -- In learner mode we keep clustering enabled so newly learned coordinates - -- can still consolidate; static/auto keeps the old "show every pin" path. - local learnerMode = Questie.dbLearner - and Questie.dbLearner.global - and Questie.dbLearner.global.settings - and Questie.dbLearner.global.settings.dataSourceMode == "learner" - if orderedList[1] and orderedList[1].zone == 1241 and not learnerMode then + -- Sunstrider Isle (uiMapID 1241) is a tiny starting area where AscensionDB and the + -- learner both place individual spawn coords that should each render as a distinct pin + -- — it is also where players build/verify the learner DB and need to SEE every learned + -- spawn, not a single consolidated dot. Show every pin here by default in ALL data-source + -- modes (learner included). Only consolidate when the player has explicitly turned up the + -- Dense Pin Clustering Aggressiveness knob; the previous "cluster in learner mode" special + -- case collapsed multiple learned spawns into one pin, which broke DB building. + if orderedList[1] and orderedList[1].zone == 1241 and densityAggression == 0 then range = 0 end