Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make initial_transfer use release config #1023

Conversation

alvarogzp
Copy link
Contributor

@alvarogzp alvarogzp commented Jul 26, 2016

Modify the initial_transfer feature so that instead of releasing all pokemons below a certain CP, use the release config to decide whether release the pokemon or not.

@VictorChen
Copy link
Contributor

would be good to update the documentation as well:

https://github.com/PokemonGoF/PokemonGo-Bot/blob/dev/README.md#advance-configuration

@solderzzc
Copy link
Contributor

The feature is good, README need modified as @VictorChen mentioned.

@douglascamata
Copy link
Member

@alvarogzp please fix readme because I love this PR.

@alvarogzp
Copy link
Contributor Author

@solderzzc @douglascamata done! I have also set initial_transfer to false in config examples

@alvarogzp
Copy link
Contributor Author

I have also added me to contributors :P

@douglascamata
Copy link
Member

douglascamata commented Jul 26, 2016

@alvarogzp try to reuse this code from PokemonCatchWorker to respect iv, cp and have a configurable logic between them (iv AND cp or iv OR cp)

def should_release_pokemon(self, pokemon_name, cp, iv, response_dict):
        release_config = self._get_release_config_for(pokemon_name)
        cp_iv_logic = release_config.get('logic')
        if not cp_iv_logic:
            cp_iv_logic = self._get_release_config_for('any').get('logic', 'and')

        release_results = {
            'cp': False,
            'iv': False,
        }

        if release_config.get('never_release', False):
            return False

        if release_config.get('always_release', False):
            return True

        release_cp = release_config.get('release_below_cp', 0)
        if cp < release_cp:
            release_results['cp'] = True

        release_iv = release_config.get('release_below_iv', 0)
        if iv < release_iv:
            release_results['iv'] = True

        logic_to_function = {
            'or': lambda x, y: x or y,
            'and': lambda x, y: x and y
        }

        #logger.log(
        #    "Release config for {}: CP {} {} IV {}".format(
        #        pokemon_name,
        #        min_cp,
        #        cp_iv_logic,
        #        min_iv
        #    ), 'yellow'
        #)

        return logic_to_function[cp_iv_logic](*release_results.values())

    def _get_release_config_for(self, pokemon):
        release_config = self.config.release.get(pokemon)
        if not release_config:
            release_config = self.config.release.get('any')
        if not release_config:
            release_config = {}
        return release_config

@alvarogzp
Copy link
Contributor Author

@douglascamata the problem is that the IV has to be calculated, and that logic is buried inside pokemon_catch_worker, but I will try :)

@douglascamata
Copy link
Member

@alvarogzp oh crap, I forgot that. Maybe you can extract that logic too. I would be great!

@alvarogzp
Copy link
Contributor Author

@douglascamata I think it is completed now

@ZgrK
Copy link
Contributor

ZgrK commented Jul 26, 2016

Hello,

I try it first i catch one ratata 249 cp
screen shot 2016-07-26 at 10 14 40 pm
After that i stop to script and worked again
screen shot 2016-07-26 at 10 14 32 pm
Show to that massage
Cleaning up Pokemon Bag using the release CP config
Notting more it must be send to prof. :(

screen shot 2016-07-26 at 10 15 16 pm

After few poke store show me that error "unfortunately I am not sure that error about this but i saw it"
screen shot 2016-07-26 at 10 18 10 pm

@solderzzc

` "release": {
"any": {"release_under_cp": 300, "release_under_iv": 0, "logic": "or" },

  "// Legendary pokemons (Goes under S-Tier)": {},
  "Lapras": { "release_under_cp": 1041, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Moltres": { "release_under_cp": 1132, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Zapdos": { "release_under_cp": 1087, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Articuno": { "release_under_cp": 1039, "release_under_iv": 0.8, "cp_iv_logic": "and" },

  "// S-Tier pokemons (if pokemon can be evolved into tier, list the representative)": {},
  "Mewtwo": { "release_under_cp": 1447, "release_under_iv": 0.8, "cp_iv_logic": "and"},
  "Dragonite": { "release_under_cp": 1221, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Snorlax": { "release_under_cp": 1087, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "// Mew evolves to Mewtwo": {},
  "Mew": { "release_under_cp": 1152, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Arcanine": { "release_under_cp": 1041, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Vaporeon": { "release_under_cp": 984, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Gyarados": { "release_under_cp": 938, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Exeggutor": { "release_under_cp": 1032, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Muk": { "release_under_cp": 909, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Weezing": { "release_under_cp": 784, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Flareon": { "release_under_cp": 924, "release_under_iv": 0.8, "cp_iv_logic": "and" },

  "// Growlithe evolves to Arcanine": {},
  "Growlithe": { "release_under_cp": 465, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "// Dragonair evolves to Dragonite": {},
  "Dragonair": { "release_under_cp": 609, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "// Grimer evolves to Muk": {},
  "Grimer": { "release_under_cp": 448, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "// Magikarp evolves to Gyarados": {},
  "Magikarp": { "release_under_cp": 91, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "// Exeggcute evolves to Exeggutor": {},
  "Exeggcute": { "release_under_cp": 384, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "// Eevee evolves to many versions, like Vaporeon, Flareon": {},
  "Eevee": { "release_under_cp": 376, "release_under_iv": 0.8, "cp_iv_logic": "and" },

  "// A-Tier pokemons": {},
  "Slowbro": { "release_under_cp": 907, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Victreebel": { "release_under_cp": 883, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Machamp": { "release_under_cp": 907, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Poliwrath": { "release_under_cp": 876, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Clefable": { "release_under_cp": 837, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Nidoking": { "release_under_cp": 864, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Venusaur": { "release_under_cp": 902, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Charizard": { "release_under_cp": 909, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Golduck": { "release_under_cp": 832, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Nidoqueen": { "release_under_cp": 868, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Vileplume": { "release_under_cp": 871, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Blastoise": { "release_under_cp": 888, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Omastar":  { "release_under_cp": 780, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Aerodactyl": { "release_under_cp": 756, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Golem": { "release_under_cp": 804, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Wigglytuff": { "release_under_cp": 760, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Dewgong": { "release_under_cp": 748, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Ninetales": { "release_under_cp": 763, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Magmar": { "release_under_cp": 792, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Kabutops": { "release_under_cp": 744, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Electabuzz": { "release_under_cp": 739, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Starmie": { "release_under_cp": 763, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Jolteon": { "release_under_cp": 746, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Rapidash": { "release_under_cp": 768, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Pinsir": { "release_under_cp": 741, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Scyther": { "release_under_cp": 724, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Tentacruel": { "release_under_cp": 775, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Gengar": { "release_under_cp": 724, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Hypno": { "release_under_cp": 763, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Pidgeot": { "release_under_cp": 729, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Rhydon": { "release_under_cp": 782, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Seaking": { "release_under_cp": 712, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Kangaskhan": { "release_under_cp": 712, "release_under_iv": 0.8, "cp_iv_logic": "and" },

  "// Koffing evolves to Weezing (A-Tier)": {},
  "Koffing": { "release_under_cp": 403, "release_under_iv": 0.8, "cp_iv_logic": "and" },

  "// Below is B-tier and lower pokemons": {},
  "Magikarp": { "release_under_cp": 91, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Caterpie": { "release_under_cp": 156, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Weedle": { "release_under_cp": 156, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Diglett": { "release_under_cp": 158, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Metapod": { "release_under_cp": 168, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Kakuna": { "release_under_cp": 170, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Rattata": { "release_under_cp": 204, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Abra": { "release_under_cp": 208, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Zubat": { "release_under_cp": 225, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Chansey": { "release_under_cp": 235, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Pidgey": { "release_under_cp": 237, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Spearow": { "release_under_cp": 240, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Meowth": { "release_under_cp": 264, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Krabby": { "release_under_cp": 276, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Sandshrew": { "release_under_cp": 278, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Poliwag": { "release_under_cp": 278, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Horsea": { "release_under_cp": 278, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Gastly": { "release_under_cp": 280, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Ekans": { "release_under_cp": 288, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Shellder": { "release_under_cp": 288, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Vulpix": { "release_under_cp": 290, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Voltorb": { "release_under_cp": 292, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Geodude": { "release_under_cp": 297, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Doduo": { "release_under_cp": 297, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Onix": { "release_under_cp": 300, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Mankey": { "release_under_cp": 307, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Pikachu": { "release_under_cp": 309, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Magnemite": { "release_under_cp": 312, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Tentacool": { "release_under_cp": 316, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Paras": { "release_under_cp": 319, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Jigglypuff": { "release_under_cp": 321, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Ditto": { "release_under_cp": 321, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Staryu": { "release_under_cp": 326, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Charmander": { "release_under_cp": 333, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Goldeen": { "release_under_cp": 336, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Squirtle": { "release_under_cp": 352, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Cubone": { "release_under_cp": 352, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Venonat": { "release_under_cp": 360, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Bulbasaur": { "release_under_cp": 374, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Drowzee": { "release_under_cp": 374, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Machop": { "release_under_cp": 381, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Psyduck": { "release_under_cp": 386, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Seel": { "release_under_cp": 386, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Kabuto": { "release_under_cp": 386, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Bellsprout": { "release_under_cp": 391, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Omanyte": { "release_under_cp": 391, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Kadabra": { "release_under_cp": 396, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Oddish": { "release_under_cp": 400, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Dugtrio": { "release_under_cp": 408, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Rhyhorn": { "release_under_cp": 412, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Clefairy": { "release_under_cp": 420, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Slowpoke": { "release_under_cp": 424, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Pidgeotto": { "release_under_cp": 427, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Farfetch'd": { "release_under_cp": 441, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Poliwhirl": { "release_under_cp": 468, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Nidorino": { "release_under_cp": 480, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Haunter": { "release_under_cp": 482, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Nidorina": { "release_under_cp": 489, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Graveler": { "release_under_cp": 501, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Beedrill": { "release_under_cp": 504, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Raticate": { "release_under_cp": 504, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Butterfree": { "release_under_cp": 508, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Hitmonlee": { "release_under_cp": 520, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Ponyta": { "release_under_cp": 530, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Hitmonchan": { "release_under_cp": 530, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Charmeleon": { "release_under_cp": 544, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Wartortle": { "release_under_cp": 552, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Persian": { "release_under_cp": 568, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Lickitung": { "release_under_cp": 568, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Ivysaur": { "release_under_cp": 571, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Electrode": { "release_under_cp": 576, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Marowak": { "release_under_cp": 578, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Gloom": { "release_under_cp": 590, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Porygon": { "release_under_cp": 590, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Seadra": { "release_under_cp": 597, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Jynx": { "release_under_cp": 600, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Weepinbell": { "release_under_cp": 602, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Tangela": { "release_under_cp": 607, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Fearow": { "release_under_cp": 609, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Parasect": { "release_under_cp": 609, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Machoke": { "release_under_cp": 614, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Arbok": { "release_under_cp": 616, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Sandslash": { "release_under_cp": 631, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Alakazam": { "release_under_cp": 633, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Kingler": { "release_under_cp": 636, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Dodrio": { "release_under_cp": 640, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Tauros": { "release_under_cp": 643, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Primeape": { "release_under_cp": 650, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Magneton": { "release_under_cp": 657, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Venomoth": { "release_under_cp": 660, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Golbat": { "release_under_cp": 672, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Raichu": { "release_under_cp": 708, "release_under_iv": 0.8, "cp_iv_logic": "and" },
  "Cloyster": { "release_under_cp": 717, "release_under_iv": 0.8, "cp_iv_logic": "and"}
}

}
`

@alvarogzp
Copy link
Contributor Author

@Zgrkaralar please put your release config to see if it does not released because of it.

Also, please update to last commit (as now it uses also IV to decide if exchange or not).

@douglascamata
Copy link
Member

douglascamata commented Jul 26, 2016

Please test this a lot, guys. It's very important for release code to not have bugs.

Very good job tho!

@alvarogzp alvarogzp changed the title Make initial_transfer use release CP config Make initial_transfer use release config Jul 26, 2016
@SteffanLong
Copy link
Contributor

I have code that removes initial transfer entirely in favor of a worker that checks every loop what needs to be released. We can merge this, but my PR if accepted will just delete it. :)

@douglascamata
Copy link
Member

@SteffanLong where is you PR, dude? Someone did this too and PR is open, just want to merge this first

@SteffanLong
Copy link
Contributor

@douglascamata It was closed because diff was too large. I haven't had time to merge upstream, fix the conflicts, and then create multiple PRs yet. Go ahead and merge this, least it will help for the time being.

@douglascamata douglascamata merged commit 7aaf345 into PokemonGoF:dev Jul 26, 2016
MFizz pushed a commit to MFizz/PokemonGo-Bot that referenced this pull request Jul 29, 2016
* Modify initial_transfer_worker.py to use release CP config

* Update README to inidicate initial_transfer new meaning

* Update config examples to set initial_transfer to false instead of 0

* Add myself to contributors

* Take into account also the iv to release a pokemon in the initial_transfer

* Update README and log messages

* Improve Exchange message
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants