fix(pindle): don't hard-fail the portal retry when no town marker is visible

The retry path I added treated detect_current_act() returning None as "we are not in
act 5" and aborted the run. None only means no TOWN_MARKERS template is on screen, which
happens routinely by the red portal in Harrogath's NE corner — the same blind spot that
makes on_init bail there.

All 6 occurrences in the 2026-08-26 19:0x session were "detected None"; not one was an
actual wrong act. Five of them landed consecutively, tripped the 5-strike circuit breaker,
disabled run_pindle and stopped an otherwise healthy 31-game session (level 32 -> 43,
526k gold stashed, 26/31 runs successful).

Fix: None now falls back to `loc`, the act-5 location already confirmed by go_to_act(5) at
the top of the same approach() call — a failed portal click cannot move the character
between acts. A genuinely different detected act still travels to act 5 as before, so the
Bug 9 desync protection is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
alexpolo1
2026-08-26 20:58:58 +02:00
parent 97703acf85
commit 4db82cfcd6

View File

@@ -82,9 +82,18 @@ class Pindle:
# A5_TOWN_START start walked it into the Harrogath wall — and onto the
# waypoint, whose panel the health manager then read as a chicken.
retry_loc = self._town_manager.detect_current_act()
if retry_loc != Location.A5_TOWN_START:
if retry_loc is None:
# No town marker in view. That is NOT evidence we left the act — it happens
# routinely by the portal in Harrogath's NE corner, where none of the
# TOWN_MARKERS render. `loc` was confirmed to be act 5 at the top of this
# run and a failed portal click cannot move us between acts, so reuse it.
# Treating None as "wrong act" hard-failed 6 runs and burned the 5-strike
# circuit breaker, ending an otherwise healthy 31-game session.
Logger.debug("Pindle approach: no town marker in view — reusing the act-5 location confirmed at run start")
retry_loc = loc
elif retry_loc != Location.A5_TOWN_START:
Logger.warning(f"Pindle approach: not confirmed in A5 (detected {retry_loc}) — traveling to act 5")
retry_loc = self._town_manager.go_to_act(5, retry_loc) if retry_loc else False
retry_loc = self._town_manager.go_to_act(5, retry_loc)
if not retry_loc:
self.approach_fail_step = "retry_traverse_to_portal"
Logger.error("Pindle approach: could not confirm A5 town position for retry")