From cd9b82879fb42f72aa11e9c63ee3985065cdf8cb Mon Sep 17 00:00:00 2001 From: hidwood <78058766+hidwood@users.noreply.github.com> Date: Sun, 1 Feb 2026 19:45:57 -0500 Subject: [PATCH] access: provide spoken feedback on null-player early returns in town NPC nav When MyPlayer is null, the town NPC navigation functions now provide spoken feedback instead of returning silently, matching the pattern used in the tracker auto-walk code. RefreshTownNpcOrder also resets SelectedTownNpc to avoid leaving stale state. Co-Authored-By: Claude Opus 4.5 --- Source/controls/town_npc_nav.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Source/controls/town_npc_nav.cpp b/Source/controls/town_npc_nav.cpp index 4c2f76c2e..a66d1eb97 100644 --- a/Source/controls/town_npc_nav.cpp +++ b/Source/controls/town_npc_nav.cpp @@ -50,8 +50,10 @@ void RefreshTownNpcOrder(bool selectFirst = false) TownNpcOrder.clear(); if (leveltype != DTYPE_TOWN) return; - if (MyPlayer == nullptr) + if (MyPlayer == nullptr) { + SelectedTownNpc = -1; return; + } const Point playerPosition = MyPlayer->position.future; @@ -149,8 +151,10 @@ void SpeakSelectedTownNpc() SpeakText(_("No NPC selected."), true); return; } - if (MyPlayer == nullptr) + if (MyPlayer == nullptr) { + SpeakText(_("No NPC selected."), true); return; + } const Towner &towner = Towners[SelectedTownNpc]; const Point playerPosition = MyPlayer->position.future; @@ -285,8 +289,10 @@ void ListTownNpcsKeyPressed() townNpcs.reserve(Towners.size()); cows.reserve(Towners.size()); - if (MyPlayer == nullptr) + if (MyPlayer == nullptr) { + SpeakText(_("No town NPCs found."), true); return; + } const Point playerPosition = MyPlayer->position.future;