jabbink / PokemonGoBot

DEFUNCT - Bot that plays Pokemon Go
https://www.pogobot.club/
GNU General Public License v3.0
558 stars 232 forks source link

[Discussion] Evolution features and settings #465

Open Forty-Tw0 opened 8 years ago

Forty-Tw0 commented 8 years ago

There are a few different configurations for evolution strategies. Here are some of the use cases I came up with. The first one results in maximally efficient trainer xp, the second results in evolved pokemon with the best possible CP/IV (and subsequentially fills out the pokedex!). If you can think of more useful use cases, please share!

  1. Do not transfer pokemon and ignore keep_pokemon_amount until the bag is full, if the user does not have a lucky egg transfer one pokemon to have limit - 1 bag space, otherwise use a lucky egg and begin evolving only the 1st pokemon in each evolutionary line for maximally efficient xp, there could then be an option to evolve the rest of the evolutionary line, after the lucky egg runs out stop evolving pokemon, repeat. This should still transfer pokemon in the obligatory_transfer list and subsequently respect the keep_pokemon_amount for each pokemon on that list.
  2. When it catches a pokemon and has greater than keep_pokemon_amount, evolve the best pokemon based on CP/IV depending on sort_by_iv & transfer_iv_threshold & transfer_cp_threshold if and only if the pokemon in question has a higher IV or will have a higher CP (how to calculate?) than existing pokemon of the next evolution if there are enough candies to do so, otherwise transfer the worst pokemon. This process would apply to the 2nd evolutionary form pokemon as well. This should still transfer pokemon in the obligatory_transfer list and subsequently respect the keep_pokemon_amount for each pokemon on that list.
iamthasasquatch commented 8 years ago

I honestly do not think XP is an issue in 2 days of running bot my guy is already lvl26 and I live in a crap area for pokestops/pokemon so i can only imagine if i had it going somewhere that is highly active. I would go for the evolving highest IV

Forty-Tw0 commented 8 years ago

XP required ramps up exponentially in the 20s, max level currently is 40. 28 to 29 is 300k xp and you only get 200 from catching and 500 from evolving, while pokestops give 50-100.

ghost commented 8 years ago

I heard rumors from dataminers that leveling 39-40 requires 5 million experience. So I believe we should incline more towards building Experience instead of building Best Team, the bot doesn't (and will probably never) battle Gyms, so no point yet in having high CP/IV evolutions.

Forty-Tw0 commented 8 years ago

We can use conditional branching to do both or more, I am just wondering if there are more ideas for useful evolutionary strategies.

iamthasasquatch commented 8 years ago

I read somewhere though that over 30 didnt do much in terms of CP on the pokemons. I think it was 30 I am trying to dig the thread up.

Forty-Tw0 commented 8 years ago

At level 30 your trainer level stops effecting the CP of pokemon in the wild I think. Eggs never give pokemone with CP more than what you would find at level 20.

ghost commented 8 years ago

Strategies on this can be very wide, maybe we could add functionalities and conditions in the config.properties.template so anyone can build their own strategy. Maybe some people would want to focus on very specific pokemons, regardless of CP/IV.

Forty-Tw0 commented 8 years ago

Could use an auto_evolve list which could be set to ALL for all pokemon, this way people can have more control over what pokemon evolve.

Agronis commented 8 years ago

tldr honestly.. took cliff notes.

auto_evolve = true/false

Maximum XP output.

build_pokedex=true/false

As far as evolving based on CP or IV.. CP can be raised, IV can't be changed. This only matters for build_pokedex, as it will grab highest IV.

use_lucky=true/false

evolve_only_these=LIST,POKEMON,HERE

evolve_IV_threshold=INTEGER

iamthasasquatch commented 8 years ago

honestly this would be best

calculate max evolutions then use lucky

Use_Lucky=true/false

continuous evolve

Evolve_XP=true/false

Evolve based on IV%, -1 for off

Evolve_IV=95

Agronis commented 8 years ago

Calculating evolutions won't matter.. I'd assume you could do several hundred in the course of 30 minutes through the CLI.

Continuous evolve.. and evolve_IV matches my post. So I agree with you, just not your naming scheme.

iamthasasquatch commented 8 years ago

you would need that many base pokemon to evolve though like if you had candy for 700 evolve of rattata youd need 700 rattata to evolve. Would want to make sure there was enough pokemon to fully make use of the lucky egg instead of 3 evolves ok need to catch another pidgey so i can evolve it and waste time waiting till bot catches another

Forty-Tw0 commented 8 years ago

The reason I have option 1 is because later we might want to limit actions based on the actual time it takes in the app to appear human, rather than doing 200 evolves per second. As it stands, even a full bag of pokemon will take less than a minute to evolve which still leaves 29 minutes of lucky egg. Just a precaution to avoid requirement volatility down the road.

Forty-Tw0 commented 8 years ago

As far as CP, some casuals only care about CP. I wrote #208 to implement IV sorting to keep the best pokemon.

iamthasasquatch commented 8 years ago

I only keep pokemon over 95 IV ;/

Forty-Tw0 commented 8 years ago

I keep two of every pokemon so that the bot keeps the two best IVs which I can manually evolve to eventually have the best IV pokemon in every tier of the evolutionary line. Which is why I came up with strategy 2.

keep_pokemon_amount=2 sort_by_iv=true transfer_iv_threshold=-1 transfer_cp_threshold=-1

Agronis commented 8 years ago

you would need that many base pokemon to evolve though like if you had candy for 700 evolve of rattata youd need 700 rattata to evolve. Would want to make sure there was enough pokemon to fully make use of the lucky egg instead of 3 evolves ok need to catch another pidgey so i can evolve it and waste time waiting till bot catches another

  • auto_evolve in my post would evolve when possible.
  • use_lucky is a one time only trigger to prevent use of lucky's while without a large batch.

I do agree with introducing a human 'algorithm' and only allowing 1 evolution every 12-15s.

I'm able to hit evolve in app, close, reopen and evolve again in no more than 15s allowing for at least 90 by human input while leaving room for error/lag.

Simpuhl commented 8 years ago

For the evolve what I would like to see is

We specify amount of Pokemon to save up for an evolve. Let's say 50

wait_for_evolve_count=50

Then the bot does it's thing, how ever, if I have let's say 24 Pidgey candy, it will keep 3 pidgey's, or if I have 100 Squrtle Candy it will keep 3 Squrtle. This way it can evolve 2 and keep 1. Also, it should evolve the highest CP.

Also let's say if we have 200 squrtle candy and so we have 5 squrtle's stored. But it finds a higher CP Squrtle than the current 5. Now we have 203 candy, it will transfer the lowest CP one since now we have too many and keep the new one one. Back to 5. Since we will be evolving at least 4.

There should also an option like complete pokedex

complete_pokedex=true

What this would do is if I have 200 squrtle candy, I already have a warturtle(2nd level), but have yet to find a Blastoise (3rd level), it will instead count that as 3 evolves instead of 4. 100 candy to create the Blastoise and then 50 and 50 for the warturtle. How ever, it should do the two evolves from highest CP Squrtle to Warturtle first, this way if you manage to get a higher CP Wartutle than your current one then it will finally evolve that one.

After that, it would transfer the extra warturtle (lowest cp)

Hope this makes sense.

Also needs this to happen only if you have a lucky egg to activate.

This also needs to some what take into effect the time it takes to evolve the pokemon. If we just massive evolve 50 in a matter of seconds, that doesn't look right.