From d349948b64ab85ec2713c2d416179e5e964263c8 Mon Sep 17 00:00:00 2001 From: hidwood <78058766+hidwood@users.noreply.github.com> Date: Wed, 4 Feb 2026 20:41:05 -0500 Subject: [PATCH] access: detect alternative dungeon exits in tracker (fixes #6) Add WM_DIABTWARPUP to trigger message checks so the tracker's entrances/exits and stairs categories detect town warps from Catacombs L1, Caves L1, Hell L1, Hive, and Crypt back to town. Previously only regular stairs up (WM_DIABPREVLVL) were detected. TriggerLabelForSpeech already handles WM_DIABTWARPUP and returns "Warp up", so labeling works automatically. Co-Authored-By: Claude Opus 4.5 --- Source/controls/tracker.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/controls/tracker.cpp b/Source/controls/tracker.cpp index 3d0ff5c94..714984f1b 100644 --- a/Source/controls/tracker.cpp +++ b/Source/controls/tracker.cpp @@ -647,7 +647,7 @@ template if (trigger._tmsg != WM_DIABRTNLVL) continue; } else { - if (trigger._tmsg != WM_DIABPREVLVL) + if (!IsAnyOf(trigger._tmsg, WM_DIABPREVLVL, WM_DIABTWARPUP)) continue; } @@ -749,7 +749,7 @@ template for (int i = 0; i < numtrigs; ++i) { const TriggerStruct &trigger = trigs[i]; - if (!IsAnyOf(trigger._tmsg, WM_DIABNEXTLVL, WM_DIABPREVLVL)) + if (!IsAnyOf(trigger._tmsg, WM_DIABNEXTLVL, WM_DIABPREVLVL, WM_DIABTWARPUP)) continue; const Point triggerPosition { trigger.position.x, trigger.position.y }; @@ -2651,7 +2651,7 @@ void UpdateAutoWalkTracker() const TriggerStruct &trigger = trigs[triggerIndex]; const bool valid = leveltype == DTYPE_TOWN ? IsAnyOf(trigger._tmsg, WM_DIABNEXTLVL, WM_DIABTOWNWARP) - : (setlevel ? trigger._tmsg == WM_DIABRTNLVL : trigger._tmsg == WM_DIABPREVLVL); + : (setlevel ? trigger._tmsg == WM_DIABRTNLVL : IsAnyOf(trigger._tmsg, WM_DIABPREVLVL, WM_DIABTWARPUP)); if (!valid) { AutoWalkTrackerTargetId = -1; SpeakText(_("Target entrance is gone."), true); @@ -2674,7 +2674,7 @@ void UpdateAutoWalkTracker() return; } const TriggerStruct &trigger = trigs[triggerIndex]; - if (!IsAnyOf(trigger._tmsg, WM_DIABNEXTLVL, WM_DIABPREVLVL)) { + if (!IsAnyOf(trigger._tmsg, WM_DIABNEXTLVL, WM_DIABPREVLVL, WM_DIABTWARPUP)) { AutoWalkTrackerTargetId = -1; SpeakText(_("Target stairs are gone."), true); return;