From ca9e459de6ea56d696ef20c72b76bb7b889f60ca Mon Sep 17 00:00:00 2001 From: aeon0 Date: Wed, 8 Dec 2021 09:28:19 +0100 Subject: [PATCH] Check if repairing is needed (#233) --- assets/templates/repair_needed.png | Bin 0 -> 14705 bytes game.ini | 1 + src/bot.py | 8 +++++--- src/template_finder.py | 2 +- src/ui_manager.py | 11 +++++++++-- 5 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 assets/templates/repair_needed.png diff --git a/assets/templates/repair_needed.png b/assets/templates/repair_needed.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1a4d411e64f37f77614b2c6e35c15de342e46a GIT binary patch literal 14705 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 literal 0 HcmV?d00001 diff --git a/game.ini b/game.ini index a2bb0fb..c6ddbd7 100644 --- a/game.ini +++ b/game.ini @@ -112,6 +112,7 @@ hero_selection_logo=0,0,367,553 play_btn=427,613,213,67 window_ingame_ref=600,650,90,90 no_pickup=5,530,240,65 +repair_needed=1000,0,280,280 [path] pindle_save_dist=921,35, 1123,70, 960,88 diff --git a/src/bot.py b/src/bot.py index 9e551d9..ab67b52 100644 --- a/src/bot.py +++ b/src/bot.py @@ -193,9 +193,11 @@ class Bot: return self.trigger_or_stop("end_game") wait(1.0) - # Check if we are out of tps - if self._tps_left < 3: - Logger.info("Repairing and buying TPs at next Vendor") + # Check if we are out of tps or need repairing + need_repair = self._ui_manager.repair_needed() + if self._tps_left < random.randint(2, 5) or need_repair: + if need_repair: Logger.info("Repair needed. Gear is about to break") + else: Logger.info("Repairing and buying TPs at next Vendor") self._curr_loc = self._town_manager.repair_and_fill_tps(self._curr_loc) if not self._curr_loc: return self.trigger_or_stop("end_game") diff --git a/src/template_finder.py b/src/template_finder.py index 9c06c5c..98cbf2f 100644 --- a/src/template_finder.py +++ b/src/template_finder.py @@ -184,7 +184,7 @@ if __name__ == "__main__": config = Config() screen = Screen(config.general["monitor"]) template_finder = TemplateFinder(screen) - search_templates = ["A3_TOWN_1"] + search_templates = ["REPAIR_NEEDED"] while 1: # img = cv2.imread("") img = screen.grab() diff --git a/src/ui_manager.py b/src/ui_manager.py index 93bf4d9..540e951 100644 --- a/src/ui_manager.py +++ b/src/ui_manager.py @@ -447,8 +447,7 @@ class UiManager(): roi=self._config.ui_roi["skill_right"], best_match=True, threshold=0.79, - time_out=4 - ) + time_out=4) if not template_match.valid: Logger.warning("You are out of tps") if self._config.general["info_screenshots"]: @@ -457,6 +456,14 @@ class UiManager(): else: return False + def repair_needed(self) -> bool: + template_match = self._template_finder.search( + "REPAIR_NEEDED", + self._screen.grab(), + roi=self._config.ui_roi["repair_needed"], + use_grayscale=True) + return template_match.valid + def enable_no_pickup(self) -> bool: """ Checks the best match between enabled and disabled an retrys if already set.