diff --git a/Mappy/Controllers/IntegrationsController.cs b/Mappy/Controllers/IntegrationsController.cs index fd6cdf9..d997f8b 100644 --- a/Mappy/Controllers/IntegrationsController.cs +++ b/Mappy/Controllers/IntegrationsController.cs @@ -159,10 +159,16 @@ public unsafe class IntegrationsController : IDisposable RequestSilentRefresh(); // objectives added (e.g. new quest) if (_lastQuestSequenceSnapshot.Length > 0 && sequenceSnapshot != _lastQuestSequenceSnapshot) RequestSilentRefresh(); // quest step advanced (multi-step objective) + _lastQuestCount = questCount; + _lastTempMarkerCount = tempCount; + _lastQuestSequenceSnapshot = sequenceSnapshot; + } else { + // During suppression: only update temp/sequence baseline so we don't false-trigger + // when suppression ends (e.g. Duty List click repopulates markers). Keep _lastQuestCount + // so quest turn-in during suppression still triggers refresh when suppression ends. + _lastTempMarkerCount = tempCount; + _lastQuestSequenceSnapshot = sequenceSnapshot; } - _lastQuestCount = questCount; - _lastTempMarkerCount = tempCount; - _lastQuestSequenceSnapshot = sequenceSnapshot; } /// Build a string of (QuestId, Sequence) for each active quest so we can detect step advances. @@ -204,6 +210,9 @@ public unsafe class IntegrationsController : IDisposable var currentMapId = agent->CurrentMapId; if (currentMapId == 0) return; + // Clear temp marker cache so old markers (e.g. from turned-in quest) don't persist + MapRenderer.MapRenderer.InvalidateTempMarkerCache(currentMapId); + SilentRefreshInProgress = true; agent->OpenMapByMapId(currentMapId, 0, true); agent->ResetMapMarkers(); diff --git a/Mappy/MapRenderer/MapRenderer.MinimapMarkers.cs b/Mappy/MapRenderer/MapRenderer.MinimapMarkers.cs index 8936410..0d7677d 100644 --- a/Mappy/MapRenderer/MapRenderer.MinimapMarkers.cs +++ b/Mappy/MapRenderer/MapRenderer.MinimapMarkers.cs @@ -369,6 +369,9 @@ public partial class MapRenderer /// Cached quest/objective (temp) markers per map; populated during silent refresh on quest accept/turn-in/objective update. private static readonly Dictionary> TempMarkerCache = new(); + /// Clear the temp marker cache for a map so stale markers (e.g. from a turned-in quest) are not drawn until we refresh. + public static void InvalidateTempMarkerCache(uint mapId) => TempMarkerCache.Remove(mapId); + /// Cached non-FATE event markers per map; populated during silent refresh. private static readonly Dictionary> EventMarkerCache = new(); diff --git a/Mappy/Mappy.csproj b/Mappy/Mappy.csproj index 42f5ba3..dc88b41 100644 --- a/Mappy/Mappy.csproj +++ b/Mappy/Mappy.csproj @@ -4,7 +4,7 @@ HSMappy HSMappy Knack117 - 1.0.0.2 + 1.0.0.3 A more versatile in-game map. Replaces the in-game map with an ImGui implementation with several additional features. Fork with minimap improvements, quest radius on minimap, and more. http://brassnet.ddns.net:33983/KnackAtNite/HSMappy diff --git a/Mappy/pluginmaster.json b/Mappy/pluginmaster.json index 0babe6b..9ff9306 100644 --- a/Mappy/pluginmaster.json +++ b/Mappy/pluginmaster.json @@ -1 +1 @@ -[{"Author":"Knack117","Name":"HSMappy","Punchline":"A more versatile in-game map.","Description":"Replaces the in-game map with an ImGui implementation with several additional features. Fork with minimap improvements, quest radius on minimap, white gradient player cone, and more.","Changelog":"1.0.0.2: Red direction arrow on minimap pointing to player flag. 1.0.0.1: Duty List quest click keeps Area Map open; player flags show on minimap. 1.0.0.0: Initial HSMappy release. Minimap: quest radius circle (orange, transparent), tooltip; cone drawn under markers; white gradient cone; /hsmappy commands.","InternalName":"HSMappy","AssemblyVersion":"1.0.0.2","RepoUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy","ApplicableVersion":"any","Tags":["map","mapping","overlay","utility"],"CategoryTags":["jobs"],"DalamudApiLevel":14,"DownloadLinkInstall":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy/releases/download/v1.0.0.2/latest.zip","IsHide":false,"IsTestingExclusive":false,"DownloadLinkTesting":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy/releases/download/v1.0.0.2/latest.zip","DownloadLinkUpdate":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy/releases/download/v1.0.0.2/latest.zip","LastUpdate":"1772140942"}] +[{"Author":"Knack117","Name":"HSMappy","Punchline":"A more versatile in-game map.","Description":"Replaces the in-game map with an ImGui implementation with several additional features. Fork with minimap improvements, quest radius on minimap, white gradient player cone, and more.","Changelog":"1.0.0.3: Fix marker cache refresh after quest turn-in; invalidate temp cache so old markers don't persist. 1.0.0.2: Red direction arrow on minimap pointing to player flag. 1.0.0.1: Duty List quest click keeps Area Map open; player flags show on minimap. 1.0.0.0: Initial HSMappy release. Minimap: quest radius circle (orange, transparent), tooltip; cone drawn under markers; white gradient cone; /hsmappy commands.","InternalName":"HSMappy","AssemblyVersion":"1.0.0.3","RepoUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy","ApplicableVersion":"any","Tags":["map","mapping","overlay","utility"],"CategoryTags":["jobs"],"DalamudApiLevel":14,"DownloadLinkInstall":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy/releases/download/v1.0.0.3/latest.zip","IsHide":false,"IsTestingExclusive":false,"DownloadLinkTesting":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy/releases/download/v1.0.0.3/latest.zip","DownloadLinkUpdate":"http://brassnet.ddns.net:33983/KnackAtNite/HSMappy/releases/download/v1.0.0.3/latest.zip","LastUpdate":"1772142707"}]