Skip to content

Commit

Permalink
Merge pull request #6006 from davidakachaos/optimizer_fix
Browse files Browse the repository at this point in the history
Optimizer fix
  • Loading branch information
pogarek authored Apr 10, 2017
2 parents 07572ab + 8b1ead9 commit 52cca10
Showing 1 changed file with 74 additions and 73 deletions.
147 changes: 74 additions & 73 deletions pokemongo_bot/cell_workers/pokemon_optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,103 +129,104 @@ def work(self):
if self.lock_buddy and (self.get_pokemon_slot_left() > self.config_min_slots_left):
return WorkerResult.SUCCESS

self.open_inventory()
if self.get_pokemon_slot_left() > self.config_min_slots_left:
return WorkerResult.SUCCESS

keep_all = []
try_evolve_all = []
try_upgrade_all = []
buddy_all = []
# Repeat the optimizer 2 times, to get rid of the trash evolved.
# Moved up from 227 to see if we fix issue #5999
for _ in itertools.repeat(None, 2):
self.open_inventory()

for rule in self.config_rules:
mode = rule.get("mode", "by_family")
names = rule.get("names", [])
whitelist, blacklist = self.get_colorlist(names)
keep_all = []
try_evolve_all = []
try_upgrade_all = []
buddy_all = []

if mode == "by_pokemon":
for pokemon_id, pokemon_list in self.group_by_pokemon_id(inventory.pokemons().all()):
name = inventory.pokemons().name_for(pokemon_id)
for rule in self.config_rules:
mode = rule.get("mode", "by_family")
names = rule.get("names", [])
whitelist, blacklist = self.get_colorlist(names)

if name in blacklist:
continue
if mode == "by_pokemon":
for pokemon_id, pokemon_list in self.group_by_pokemon_id(inventory.pokemons().all()):
name = inventory.pokemons().name_for(pokemon_id)

if whitelist and (name not in whitelist):
continue
if name in blacklist:
continue

sorted_list = self.score_and_sort(pokemon_list, rule)
if whitelist and (name not in whitelist):
continue

if len(sorted_list) == 0:
continue
sorted_list = self.score_and_sort(pokemon_list, rule)

keep, try_evolve, try_upgrade, buddy = self.get_best_pokemon_for_rule(sorted_list, rule)
keep_all += keep
try_evolve_all += try_evolve
try_upgrade_all += try_upgrade
buddy_all += buddy
elif mode == "by_family":
for family_id, pokemon_list in self.group_by_family_id(inventory.pokemons().all()):
matching_names = self.get_family_names(family_id)
if len(sorted_list) == 0:
continue

if any(n in blacklist for n in matching_names):
continue
keep, try_evolve, try_upgrade, buddy = self.get_best_pokemon_for_rule(sorted_list, rule)
keep_all += keep
try_evolve_all += try_evolve
try_upgrade_all += try_upgrade
buddy_all += buddy
elif mode == "by_family":
for family_id, pokemon_list in self.group_by_family_id(inventory.pokemons().all()):
matching_names = self.get_family_names(family_id)

if whitelist and not any(n in whitelist for n in matching_names):
continue
if any(n in blacklist for n in matching_names):
continue

sorted_list = self.score_and_sort(pokemon_list, rule)
if whitelist and not any(n in whitelist for n in matching_names):
continue

if len(sorted_list) == 0:
continue
sorted_list = self.score_and_sort(pokemon_list, rule)

if family_id == 133: # "Eevee"
keep, try_evolve, try_upgrade, buddy = self.get_multi_best_pokemon_for_rule(sorted_list, rule, 3)
else:
keep, try_evolve, try_upgrade, buddy = self.get_best_pokemon_for_rule(sorted_list, rule)
if len(sorted_list) == 0:
continue

keep_all += keep
try_evolve_all += try_evolve
try_upgrade_all += try_upgrade
buddy_all += buddy
elif mode == "overall":
pokemon_list = []
if family_id == 133: # "Eevee"
keep, try_evolve, try_upgrade, buddy = self.get_multi_best_pokemon_for_rule(sorted_list, rule, 3)
else:
keep, try_evolve, try_upgrade, buddy = self.get_best_pokemon_for_rule(sorted_list, rule)

for pokemon in inventory.pokemons().all():
name = pokemon.name
keep_all += keep
try_evolve_all += try_evolve
try_upgrade_all += try_upgrade
buddy_all += buddy
elif mode == "overall":
pokemon_list = []

if name in blacklist:
continue
for pokemon in inventory.pokemons().all():
name = pokemon.name

if whitelist and (name not in whitelist):
continue
if name in blacklist:
continue

pokemon_list.append(pokemon)
if whitelist and (name not in whitelist):
continue

sorted_list = self.score_and_sort(pokemon_list, rule)
pokemon_list.append(pokemon)

if len(sorted_list) == 0:
continue
sorted_list = self.score_and_sort(pokemon_list, rule)

keep, try_evolve, try_upgrade, buddy = self.get_best_pokemon_for_rule(sorted_list, rule)
keep_all += keep
try_evolve_all += try_evolve
try_upgrade_all += try_upgrade
buddy_all += buddy
if len(sorted_list) == 0:
continue

keep_all = self.unique_pokemon_list(keep_all)
try_evolve_all = self.unique_pokemon_list(try_evolve_all)
try_upgrade_all = self.unique_pokemon_list(try_upgrade_all)
buddy_all = self.unique_pokemon_list(buddy_all)
keep, try_evolve, try_upgrade, buddy = self.get_best_pokemon_for_rule(sorted_list, rule)
keep_all += keep
try_evolve_all += try_evolve
try_upgrade_all += try_upgrade
buddy_all += buddy

if (not self.lock_buddy) and (len(buddy_all) > 0):
new_buddy = buddy_all[0]
keep_all = self.unique_pokemon_list(keep_all)
try_evolve_all = self.unique_pokemon_list(try_evolve_all)
try_upgrade_all = self.unique_pokemon_list(try_upgrade_all)
buddy_all = self.unique_pokemon_list(buddy_all)

if (not self.buddy) or (self.buddy["id"] != new_buddy.unique_id):
self.set_buddy_pokemon(new_buddy)
if (not self.lock_buddy) and (len(buddy_all) > 0):
new_buddy = buddy_all[0]

if self.get_pokemon_slot_left() > self.config_min_slots_left:
return WorkerResult.SUCCESS
if (not self.buddy) or (self.buddy["id"] != new_buddy.unique_id):
self.set_buddy_pokemon(new_buddy)

# Repeat the optimizer 2 times, to get rid of the trash evolved.
for _ in itertools.repeat(None, 2):
transfer_all = []
evolve_all = []
upgrade_all = []
Expand Down Expand Up @@ -719,13 +720,13 @@ def transfer_pokemon(self, pokemons):
return False
except Exception:
return False

for pokemon in transfered:
candy = inventory.candies().get(pokemon.pokemon_id)

if self.config_transfer and (not self.bot.config.test):
candy.add(1)

self.emit_event("pokemon_release",
formatted="Exchanged {pokemon} [IV {iv}] [CP {cp}] [{candy} candies]",
data={"pokemon": pokemon.name,
Expand Down

0 comments on commit 52cca10

Please sign in to comment.