v1.0.0.21: Refresh minimap when exiting NPC/quest dialogue (fix speak-to-NPC objectives)

Made-with: Cursor
This commit is contained in:
2026-03-05 00:16:11 -05:00
parent 448d3ca933
commit 1744943e75
3 changed files with 10 additions and 2 deletions
@@ -32,6 +32,8 @@ public unsafe class IntegrationsController : IDisposable
private string _lastQuestSequenceSnapshot = string.Empty;
/// <summary>Snapshot of temp marker positions; when this changes we refresh so quest area circles update (e.g. marker moved from 1/3 to 2/3 location).</summary>
private string _lastTempMarkerSnapshot = string.Empty;
/// <summary>True on the previous frame if player was in NPC or quest dialogue (Occupied / OccupiedInQuestEvent). Used to refresh minimap when dialogue ends (e.g. after speaking to quest NPC with no step counter).</summary>
private bool _wasInQuestOrNpcDialogue;
private bool _refreshedDuringLoad;
/// <summary>When true, request a silent refresh on the next framework update (e.g. after plugin load).</summary>
private bool _requestRefreshOnLoad = true;
@@ -142,6 +144,12 @@ public unsafe class IntegrationsController : IDisposable
RequestSilentRefresh();
}
// When player exits NPC or quest dialogue, refresh so minimap updates (e.g. "go to destination and speak to NPC" with no 1/3, 2/3 step counter).
var inDialogue = Service.Condition[ConditionFlag.Occupied] || Service.Condition[ConditionFlag.OccupiedInQuestEvent];
if (_wasInQuestOrNpcDialogue && !inDialogue)
RequestSilentRefresh();
_wasInQuestOrNpcDialogue = inDialogue;
// Quest turned in, quest accepted, or objectives updated: refresh so markers stay in sync
// Skip these triggers when user just opened map via Duty List (quest/gathering/flag/teleport)
// so we don't close the map they intentionally opened.