Skip to content

Use catch probability from encounter_data to select ball #322

Description

@xasdf

I propose using catch probability to select ball instead of relying on combat_power.

Example plugins/catch_pokemon/init.py modifications:

        probability = encounter_data.probability[0]
        ...
        # TODO: This should probably be cleaned up
        for catch_attempt in range(20):
            if total_pokeballs == 0:
                log("No Pokeballs in inventory; cannot catch.", color="red")
                return

            pokeball = 0

            if balls_stock[1] > 0:
                pokeball = 1

            if balls_stock[2] > 0:
                if probability < 0.25 or pokemon_potential > 0.82 or combat_power > 1000 or (pokeball is 0 and balls_stock[2] > 9):
                    pokeball = 2

            if balls_stock[3] > 0:
                if probability < 0.15 or pokemon_potential > 0.92 or combat_power > 1200 or (pokeball is 0 and balls_stock[3] > 9):
                    pokeball = 3

            if pokeball == 0:
                log("No ball selected as all balls are low in stock. Saving for better Pokemon.", color="red")
                break

            log("Using {}... ({} left!)".format(bot.item_list[pokeball], balls_stock[pokeball]-1))

            probability -= 0.05
            balls_stock[pokeball] -= 1
            ...

Probability is decreased each time so that better balls can be selected as throws miss. This probably should be enhanced to use master balls too but I don't know their id (is it 4?).

Sorry this is not PR, maybe someone can pick it up and create a proper PR.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions