def get_closest_name(self, name): mapping = {ord(x): ord(y) for x, y in zip("\u2641\u2642.-", "fm ")} clean_names = { n.lower().translate(mapping): n for n in self.pokemon_names } closest_names = difflib.get_close_matches( name.lower().translate(mapping), clean_names.keys(), 1) if closest_names: closest_name = clean_names[closest_names[0]] if name != closest_name: self.logger.warning( "Unknown Pokemon name [%s]. Assuming it is [%s]", name, closest_name) return closest_name else: raise ConfigException("Unknown Pokemon name [%s]" % name)
def initialize(self): self.max_pokemon_storage = inventory.get_pokemon_inventory_size() self.last_pokemon_count = 0 self.pokemon_names = [p.name for p in inventory.pokemons().STATIC_DATA] self.evolution_map = {} self.debug = self.config.get('debug', False) self.ongoing_stardust_count = 0 self.buddy = None self.buddyid = 0 self.lock_buddy = True self.no_log_until = 0 pokemon_upgrade_cost_file = os.path.join(_base_dir, "data", "pokemon_upgrade_cost.json") with open(pokemon_upgrade_cost_file, "r") as fd: self.pokemon_upgrade_cost = json.load(fd) if self.config.get("keep", None) is not None: raise ConfigException("Pokemon Optimizer configuration has changed. See docs/pokemon_optimized.md or configs/config.json.optimizer.example") if self.debug: log_file_path = os.path.join(_base_dir, "data", "pokemon-optimizer-%s.log" % self.bot.config.username) with open(log_file_path, "a") as _: pass self.log_file = open(log_file_path, "r+") self.log_file.seek(0, 2) self.config_bulktransfer_enabled = self.config.get("bulktransfer_enabled", False) self.config_max_bulktransfer = self.config.get("max_bulktransfer", 10) self.config_min_slots_left = self.config.get("min_slots_left", 5) self.config_action_wait_min = self.config.get("action_wait_min", 3) self.config_action_wait_max = self.config.get("action_wait_max", 5) self.config_transfer = self.config.get("transfer", False) self.config_evolve = self.config.get("evolve", False) self.config_evolve_to_final = self.config.get("evolve_to_final", True) self.config_evolve_time = self.config.get("evolve_time", 25) self.config_evolve_for_xp = self.config.get("evolve_for_xp", True) self.config_evolve_only_with_lucky_egg = self.config.get("evolve_only_with_lucky_egg", False) self.config_evolve_count_for_lucky_egg = self.config.get("evolve_count_for_lucky_egg", 80) self.config_may_use_lucky_egg = self.config.get("may_use_lucky_egg", False) self.config_upgrade = self.config.get("upgrade", False) self.config_upgrade_level = self.config.get("upgrade_level", 30) self.config_groups = self.config.get("groups", {"gym": ["Dragonite", "Snorlax", "Lapras", "Arcanine"]}) self.config_rules = self.config.get("rules", [{"mode": "overall", "top": 1, "sort": ["max_cp", "cp"], "keep": {"candy": -124}, "evolve": False, "buddy": True}, {"mode": "overall", "top": 1, "sort": ["-candy", "max_cp", "cp"], "evolve": False, "buddy": True}, {"mode": "by_family", "top": 3, "names": ["gym"], "sort": ["iv", "ncp"], "evolve": {"iv": 0.9, "ncp": 0.9}, "upgrade": {"iv": 0.9, "ncp": 0.9}}, {"mode": "by_family", "top": 1, "sort": ["iv"], "evolve": {"iv": 0.9}}, {"mode": "by_family", "top": 1, "sort": ["ncp"], "evolve": {"ncp": 0.9}}, {"mode": "by_family", "top": 1, "sort": ["cp"], "evolve": False}, {"mode": "by_pokemon", "names": ["!with_next_evolution"], "top": 1, "sort": ["dps_attack", "iv"], "keep": {"iv": 0.9}}]) if (not self.config_may_use_lucky_egg) and self.config_evolve_only_with_lucky_egg: self.config_evolve = False if self.config_evolve_for_xp is True: self.config_evolve_for_xp = ["Caterpie", "Weedle", "Pidgey", "Rattata", "Nidoran F", "Nidoran M", "Zubat", "Oddish", "Paras", "Venonat", "Psyduck", "Tentacool", "Magnemite", "Krabby", "Voltorb", "Goldeen", "Staryu", "Eevee"] elif self.config_evolve_for_xp is False: self.config_evolve_for_xp = [] self.config_evolve_for_xp_whitelist, self.config_evolve_for_xp_blacklist = self.get_colorlist(self.config_evolve_for_xp) self.config_groups["with_next_evolution"] = [] self.config_groups["with_previous_evolution"] = [] for pokemon in inventory.Pokemons.STATIC_DATA: if pokemon.has_next_evolution: self.config_groups["with_next_evolution"].append(pokemon.name) if pokemon.prev_evolutions_all: self.config_groups["with_previous_evolution"].append(pokemon.name)
def initialize(self): self.max_pokemon_storage = inventory.get_pokemon_inventory_size() self.last_pokemon_count = 0 self.pokemon_names = [p.name for p in inventory.pokemons().STATIC_DATA] self.ongoing_stardust_count = 0 pokemon_upgrade_cost_file = os.path.join(_base_dir, "data", "pokemon_upgrade_cost.json") with open(pokemon_upgrade_cost_file, "r") as fd: self.pokemon_upgrade_cost = json.load(fd) if self.config.get("keep", None) is not None: raise ConfigException( "Pokemon Optimizer configuration has changed. See docs/pokemon_optimized.md or configs/config.json.optimizer.example" ) self.config_min_slots_left = self.config.get("min_slots_left", 5) self.config_transfer = self.config.get("transfer", False) self.config_transfer_wait_min = self.config.get("transfer_wait_min", 3) self.config_transfer_wait_max = self.config.get("transfer_wait_max", 5) self.config_evolve = self.config.get("evolve", False) self.config_evolve_time = self.config.get("evolve_time", 25) self.config_evolve_for_xp = self.config.get("evolve_for_xp", True) self.config_evolve_only_with_lucky_egg = self.config.get( "evolve_only_with_lucky_egg", False) self.config_evolve_count_for_lucky_egg = self.config.get( "evolve_count_for_lucky_egg", 80) self.config_may_use_lucky_egg = self.config.get( "may_use_lucky_egg", False) self.config_upgrade = self.config.get("upgrade", False) self.config_upgrade_level = self.config.get("upgrade_level", 60) self.config_groups = self.config.get( "groups", {"gym": ["Dragonite", "Snorlax", "Lapras", "Arcanine"]}) self.config_rules = self.config.get("rules", [{ "mode": "by_family", "top": 1, "sort": ["iv"], "evolve": { "iv": 0.9 } }, { "mode": "by_family", "top": 1, "sort": ["ncp"], "evolve": { "ncp": 0.9 } }, { "mode": "by_family", "top": 1, "sort": ["cp"] }, { "mode": "by_family", "top": 3, "names": ["gym"], "sort": ["iv", "ncp"], "evolve": { "iv": 0.9, "ncp": 0.9 }, "upgrade": { "iv": 0.9, "ncp": 0.9 } }]) if (not self.config_may_use_lucky_egg ) and self.config_evolve_only_with_lucky_egg: self.config_evolve = False
def _validate_item_filter(self): item_list = json.load(open(os.path.join('data', 'items.json'))) for config_item_name, bag_count in self.item_filter.iteritems(): if config_item_name not in item_list.viewvalues(): if config_item_name not in item_list: raise ConfigException("item {} does not exist, spelling mistake? (check for valid item names in data/items.json)".format(config_item_name))