Ejemplo n.º 1
0
    def _moved(self, move):
        self._must_recharge = False
        self._preparing = False

        id_ = Move.retrieve_id(move)

        if Move.should_be_stored(id_):
            if id_ not in self._moves:
                self._moves[id_] = Move(id_)

            self.moves[id_].use()
Ejemplo n.º 2
0
 def _add_move(self, move_id: str, use: bool = False) -> None:
     """Store the move if applicable."""
     id_ = Move.retrieve_id(move_id)
     if Move.should_be_stored(id_):
         move = Move(id_)
         if move.id not in self._moves:
             if len(self._moves) >= 4:
                 self._moves = {}
             self._moves[id_] = Move(id_)
         if use:
             self.moves[id_].use()
Ejemplo n.º 3
0
    def _add_move(self, move_id: str, use: bool = False) -> None:
        """Store the move if applicable."""
        id_ = Move.retrieve_id(move_id)

        if not Move.should_be_stored(id_):
            return

        if id_ not in self._moves:
            move = Move(move_id=id_)
            self._moves[id_] = move
        if use:
            self._moves[id_].use()
Ejemplo n.º 4
0
    def _update_from_request(self, request_pokemon: Dict[str, Any]) -> None:
        self._ability = request_pokemon["ability"]
        self._active = request_pokemon["active"]
        self._base_ability = request_pokemon["baseAbility"]

        condition = request_pokemon["condition"]
        if condition == "0 fnt":
            self._current_hp = 0
            self.status = Status.FNT
        else:
            if " " in condition:
                hps, status = condition.split(" ")
                self.status = status
            else:
                hps = condition
                self.status = None
            self._current_hp, self._max_hp = hps.split("/")
            self._current_hp = int(self._current_hp)
            self._max_hp = int(self._max_hp)

        self._item = request_pokemon["item"]

        details = request_pokemon["details"]

        if ", shiny" in details:
            self._shiny = True
            details = details.replace(", shiny", "")
        else:
            self._shiny = False

        details = details.split(", ")

        gender = PokemonGender.NEUTRAL
        level = 100

        if len(details) == 3:
            species, level, gender = details
        elif len(details) == 2:
            if details[1].startswith("L"):
                species, level = details
            else:
                species, gender = details
        else:
            species = details[0]

        if not isinstance(gender, PokemonGender):
            gender = PokemonGender.from_request_details(gender)
        if not isinstance(level, int):
            level = int(level[1:])
        if species != self._species:
            self._update_from_pokedex(species)

        self._gender = gender
        self._level = int(level)

        for move in request_pokemon["moves"]:
            move_id = Move.retrieve_id(move)
            if move_id not in self._moves:
                self._moves[move_id] = Move(move_id=move_id)

        ident = request_pokemon["ident"].split(": ")

        if len(ident) == 2:
            self._species = ident[1]
        elif len(ident) == 3:
            self._species = ": ".join(ident[1:])
        else:
            raise NotImplementedError("Unmanaged pokemon ident: %s" % ident)
        self._pokeball = request_pokemon["pokeball"]
        self._stats = request_pokemon["stats"]