private async Task TransferDuplicatePokemon(bool keepPokemonsThatCanEvolve = false) { var duplicatePokemons = await _inventory.GetDuplicatePokemonToTransfer(keepPokemonsThatCanEvolve, _clientSettings.PrioritizeIVOverCP, _clientSettings.PokemonsNotToTransfer); foreach (var duplicatePokemon in duplicatePokemons) { if (duplicatePokemon.Cp >= _clientSettings.KeepMinCP || PokemonInfo.CalculatePokemonPerfection(duplicatePokemon) > _clientSettings.KeepMinIVPercentage) { continue; } await _client.TransferPokemon(duplicatePokemon.Id); _inventory.DeletePokemonFromInvById(duplicatePokemon.Id); _stats.IncreasePokemonsTransfered(); _stats.UpdateConsoleTitle(_inventory); var bestPokemonOfType = _client.Settings.PrioritizeIVOverCP ? await _inventory.GetHighestPokemonOfTypeByIv(duplicatePokemon) : await _inventory.GetHighestPokemonOfTypeByCp(duplicatePokemon); Logger.Write( $"{duplicatePokemon.PokemonId} with {duplicatePokemon.Cp} ({PokemonInfo.CalculatePokemonPerfection(duplicatePokemon).ToString("0.00")} % perfect) CP (Best: {bestPokemonOfType.Cp} | ({PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType).ToString("0.00")} % perfect))", LogLevel.Transfer); await Task.Delay(500); } }
private async Task TransferPokemon() { await Inventory.GetCachedInventory(_client, true); Inventory inventory = new Inventory(_client); var myPokemon = inventory.GetPokemons().Result; var pokemonToTransfer = await _inventory.GetPokemonToTransfer(myPokemon, _client.Settings, _clientSettings.NotTransferPokemonsThatCanEvolve, _clientSettings.PrioritizeIVOverCP, _clientSettings.PokemonsToNotTransfer); if (pokemonToTransfer != null && pokemonToTransfer.Any()) { Logger.Write($"Found {pokemonToTransfer.Count()} Pokemon for Transfer:", LogLevel.Info); } foreach (var pokemon in pokemonToTransfer) { await _client.TransferPokemon(pokemon.Id); await Inventory.GetCachedInventory(_client, true); var myPokemonSettings = await _inventory.GetPokemonSettings(); var pokemonSettings = myPokemonSettings.ToList(); var myPokemonFamilies = await _inventory.GetPokemonFamilies(); var pokemonFamilies = myPokemonFamilies.ToArray(); var settings = pokemonSettings.Single(x => x.PokemonId == pokemon.PokemonId); var familyCandy = pokemonFamilies.Single(x => settings.FamilyId == x.FamilyId); var familyCandies = $"{familyCandy.Candy}"; _stats.IncreasePokemonsTransfered(); _stats.UpdateConsoleTitle(_client, _inventory); var bestPokemonOfType = _client.Settings.PrioritizeIVOverCP ? await _inventory.GetHighestPokemonOfTypeByIv(pokemon) : await _inventory.GetHighestPokemonOfTypeByCp(pokemon); var bestPokemonInfo = "NONE"; if (bestPokemonOfType != null) { bestPokemonInfo = $"CP: {bestPokemonOfType.Cp}/{PokemonInfo.CalculateMaxCp(bestPokemonOfType)} | IV: {PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType).ToString("0.00")}% perfect"; } Logger.Write($"{pokemon.PokemonId} [CP {pokemon.Cp}/{PokemonInfo.CalculateMaxCp(pokemon)} | IV: { PokemonInfo.CalculatePokemonPerfection(pokemon).ToString("0.00")}% perfect] | Best: [{bestPokemonInfo}] | Family Candies: {familyCandies}", LogLevel.Transfer); } }
private async Task TransferDuplicatePokemon(bool keepPokemonsThatCanEvolve = false) { IEnumerable <PokemonData> duplicatePokemons; await Task.Delay(200); if (!_clientSettings.TransferDuplicatePokemon && !_clientSettings.OnlyTransferDuplicateShit) { Logger.Write("Not Transferring Duplicates", LogLevel.Info); return; } else if (_clientSettings.OnlyTransferDuplicateShit) { duplicatePokemons = await _inventory.GetDuplicatePokemonToTransfer(keepPokemonsThatCanEvolve, _clientSettings.PrioritizeIVOverCP, _clientSettings.ShitPokemonsToTransfer, true); } else { duplicatePokemons = await _inventory.GetDuplicatePokemonToTransfer(keepPokemonsThatCanEvolve, _clientSettings.PrioritizeIVOverCP, _clientSettings.PokemonsNotToTransfer); } foreach (var duplicatePokemon in duplicatePokemons) { if (duplicatePokemon.Cp >= _clientSettings.KeepMinCP || PokemonInfo.CalculatePokemonPerfection(duplicatePokemon) > _clientSettings.KeepMinIVPercentage) { continue; } await _client.Inventory.TransferPokemon(duplicatePokemon.Id); _inventory.DeletePokemonFromInvById(duplicatePokemon.Id); _stats.IncreasePokemonsTransfered(); _stats.UpdateConsoleTitle(_inventory); var bestPokemonOfType = _client.Settings.PrioritizeIVOverCP ? await _inventory.GetHighestPokemonOfTypeByIv(duplicatePokemon) : await _inventory.GetHighestPokemonOfTypeByCp(duplicatePokemon); Logger.Write( $"{duplicatePokemon.PokemonId} with {duplicatePokemon.Cp} ({PokemonInfo.CalculatePokemonPerfection(duplicatePokemon).ToString("0.00")} % perfect) CP (Best: {bestPokemonOfType.Cp} | ({PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType).ToString("0.00")} % perfect))", LogLevel.Transfer); if (_caughtInSession.Count > 0) { var i = 0; var found = false; foreach (var pokemon in _caughtInSession) { if (pokemon.WeightKg == duplicatePokemon.WeightKg && pokemon.Cp == duplicatePokemon.Cp) { found = true; break; } i++; } if (found) { _caughtInSession.RemoveAt(i); Statistics.KeptPokemon--; } } await Task.Delay(500); } }