From 262c2190b370a0d7fd9760105093c576d6ee7f17 Mon Sep 17 00:00:00 2001 From: MerlionRock Date: Tue, 25 Jul 2017 17:21:37 +0800 Subject: [PATCH 1/2] Updated GymPokemon Config added "can_be_disabled_by_catch_limter" --- configs/config.json.example | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/configs/config.json.example b/configs/config.json.example index 11cb2c88f1..f10f8dfd33 100644 --- a/configs/config.json.example +++ b/configs/config.json.example @@ -477,7 +477,8 @@ "never_place": ["Machamp"], "leave_at_least_spots": 1, "take_at_most": 10, - "pick_random_pokemon": true + "pick_random_pokemon": true, + "can_be_disabled_by_catch_limter": false } }, { From b25043da0c40421425036c4bc90ee89d7458f844 Mon Sep 17 00:00:00 2001 From: MerlionRock Date: Tue, 25 Jul 2017 17:27:13 +0800 Subject: [PATCH 2/2] Updated Catch Limiter Updated Catch Limiter to take "min_ultraball_to_keep" into calculation Updated Gym Pokemon to be able to be disabled by Catch Limiter --- pokemongo_bot/cell_workers/catch_limiter.py | 12 +++++++++--- pokemongo_bot/cell_workers/gym_pokemon.py | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/pokemongo_bot/cell_workers/catch_limiter.py b/pokemongo_bot/cell_workers/catch_limiter.py index 4d84f27e47..7c192fff15 100644 --- a/pokemongo_bot/cell_workers/catch_limiter.py +++ b/pokemongo_bot/cell_workers/catch_limiter.py @@ -19,6 +19,12 @@ def __init__(self, bot, config): self.min_balls = self.config.get("min_balls", 20) self.resume_at_balls = self.config.get("resume_at_balls", 100) self.duration = self.config.get("duration",15) + self.min_ultraball_to_keep = 0 + for subVal in self.bot.config.raw_tasks: + if "type" in subVal: + if subVal["type"] == "CatchPokemon": + self.min_ultraball_to_keep = subVal["config"]["min_ultraball_to_keep"] + if not hasattr(self.bot, "catch_resume_at"): self.bot.catch_resume_at = None def work(self): @@ -26,8 +32,8 @@ def work(self): return WorkerResult.SUCCESS now = datetime.now() - balls_on_hand = self.get_pokeball_count() - + balls_on_hand = self.get_pokeball_count() - self.min_ultraball_to_keep + # If resume time has passed, resume catching tasks if self.bot.catch_disabled and now >= self.bot.catch_resume_at: if balls_on_hand > self.min_balls: @@ -42,7 +48,7 @@ def work(self): if self.bot.catch_disabled and balls_on_hand >= self.resume_at_balls: self.emit_event( 'catch_limit_off', - formatted="Resume time hasn't passed yet, bu balls on hand ({}) exceeds threshold {}. Re-enabling catch tasks.". + formatted="Resume time hasn't passed yet, but balls on hand ({}) exceeds threshold {}. Re-enabling catch tasks.". format(balls_on_hand, self.resume_at_balls) ) self.bot.catch_disabled = False diff --git a/pokemongo_bot/cell_workers/gym_pokemon.py b/pokemongo_bot/cell_workers/gym_pokemon.py index e3bb084e2c..fdd567d9f4 100644 --- a/pokemongo_bot/cell_workers/gym_pokemon.py +++ b/pokemongo_bot/cell_workers/gym_pokemon.py @@ -75,6 +75,8 @@ def initialize(self): self.never_place = self.config.get('never_place', []) self.pick_random_pokemon = self.config.get('pick_random_pokemon', True) + + self.can_be_disabled_by_catch_limter = self.config.get("can_be_disabled_by_catch_limter", False) self.recheck = datetime.now() self.walker = self.config.get('walker', 'StepWalker') @@ -121,6 +123,22 @@ def display_fort_pokemon(self): self.logger.info("%s (%s CP)" % (pokemon.name, pokemon.cp)) def work(self): + if not self.enabled: + return WorkerResult.SUCCESS + + if self.bot.catch_disabled and self.can_be_disabled_by_catch_limter: + # When catching is disabled, drop the target. + if self.destination is not None: + self.destination = None + + if not hasattr(self.bot, "gym_pokemon_disabled_global_warning") or \ + (hasattr(self.bot, "gym_pokemon_disabled_global_warning") and not self.bot.gym_pokemon_disabled_global_warning): + self.logger.info("All gym tasks are currently disabled until {}. Gym function will resume when catching tasks are re-enabled".format(self.bot.catch_resume_at.strftime("%H:%M:%S"))) + self.bot.gym_pokemon_disabled_global_warning = True + return WorkerResult.SUCCESS + else: + self.bot.gym_pokemon_disabled_global_warning = False + self.pokemons = inventory.pokemons().all() self.fort_pokemons = [p for p in self.pokemons if p.in_fort] self.pokemons = [p for p in self.pokemons if not p.in_fort]