Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
 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))