diff --git a/src/char/paladin/hammerdin.py b/src/char/paladin/hammerdin.py index d63ccc0..64c44e1 100644 --- a/src/char/paladin/hammerdin.py +++ b/src/char/paladin/hammerdin.py @@ -1076,12 +1076,17 @@ class Hammerdin(Paladin): wait(0.3, 1.2) ### LOOT ### self._picked_up_items |= self._pickit.pick_up_items(self) - if not self._pather.traverse_nodes([612], self): return False # , timeout=3): - if self._skill_hotkeys["redemption"]: - keyboard.send(self._skill_hotkeys["redemption"]) - wait(0.3, 0.6) - self._picked_up_items |= self._pickit.pick_up_items(self) - if not self._pather.traverse_nodes([612], self): return False # , timeout=3): # recalibrate after loot + # Post-loot calibration is NON-FATAL: Vizier is dead; the pentagram + # template loop right after re-anchors position. + if self._pather.traverse_nodes([612], self): + if self._skill_hotkeys["redemption"]: + keyboard.send(self._skill_hotkeys["redemption"]) + wait(0.3, 0.6) + self._picked_up_items |= self._pickit.pick_up_items(self) + if not self._pather.traverse_nodes([612], self): + Logger.warning("A1-L: post-loot recalibration failed — continuing to pentagram loop") + else: + Logger.warning("A1-L: post-loot calibration failed — skipping extra loot pass") elif seal_layout == "A2-Y": ### APPROACH ### @@ -1124,7 +1129,10 @@ class Hammerdin(Paladin): keyboard.send(self._skill_hotkeys["redemption"]) wait(0.3, 0.6) self._picked_up_items |= self._pickit.pick_up_items(self) - if not self._pather.traverse_nodes([622], self): return False # , timeout=3): #recalibrate after loot + # Post-loot recalibration is NON-FATAL: Vizier is dead; the pentagram + # template loop right after re-anchors position. + if not self._pather.traverse_nodes([622], self): + Logger.warning("A2-Y: post-loot recalibration failed — continuing to pentagram loop") else: Logger.warning(seal_layout + ": Invalid location for kill_deseis("+ seal_layout +"), should not happen.") @@ -1213,12 +1221,17 @@ class Hammerdin(Paladin): #if Config().general["info_screenshots"]: cv2.imwrite(f"./log/screenshots/info/info_check_deseis_dead" + seal_layout + "_" + time.strftime("%Y%m%d_%H%M%S") + ".png", grab()) ### LOOT ### self._picked_up_items |= self._pickit.pick_up_items(self) - if not self._pather.traverse_nodes([641], self): return False # , timeout=3): - if not self._pather.traverse_nodes([646], self): return False # , timeout=3): - self._picked_up_items |= self._pickit.pick_up_items(self) - if not self._pather.traverse_nodes([646], self): return False # , timeout=3): - if not self._pather.traverse_nodes([640], self): return False # , timeout=3): - self._picked_up_items |= self._pickit.pick_up_items(self) + # Post-loot calibration hops are NON-FATAL: De Seis is already dead and + # the seal stage re-anchors at the pentagram via template loop right + # after. Aborting the run here threw away two dead bosses (2026-06-10). + if self._pather.traverse_nodes([641], self) and self._pather.traverse_nodes([646], self): + self._picked_up_items |= self._pickit.pick_up_items(self) + if self._pather.traverse_nodes([646], self) and self._pather.traverse_nodes([640], self): + self._picked_up_items |= self._pickit.pick_up_items(self) + else: + Logger.warning("B2-U: post-loot calibration hop failed — skipping last loot pass") + else: + Logger.warning("B2-U: post-loot calibration hop failed — skipping extra loot passes") else: Logger.warning(seal_layout + ": Invalid location for kill_deseis("+ seal_layout +"), should not happen.")