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 RecycleItems() { await Inventory.GetCachedInventory(_client, true); var items = await _inventory.GetItemsToRecycle(_clientSettings); if (items != null && items.Any()) { Logger.Write($"Found {items.Count()} Recyclable {(items.Count() == 1 ? "Item" : "Items")}:", LogLevel.Info); } foreach (var item in items) { await _client.RecycleItem((ItemId)item.Item_, item.Count); Logger.Write($"{item.Count}x {(ItemId)item.Item_}", LogLevel.Recycling); _stats.AddItemsRemoved(item.Count); _stats.UpdateConsoleTitle(_client, _inventory); } _recycleCounter = 0; }
private async Task EvolvePokemon() { await Inventory.GetCachedInventory(_client, true); var pokemonToEvolve = await _inventory.GetPokemonToEvolve(_clientSettings.PrioritizeIVOverCP, _clientSettings.PokemonsToEvolve); if (pokemonToEvolve != null && pokemonToEvolve.Any()) { Logger.Write($"Found {pokemonToEvolve.Count()} Pokemon for Evolve:", LogLevel.Info); } foreach (var pokemon in pokemonToEvolve) { var evolvePokemonOutProto = await _client.EvolvePokemon(pokemon.Id); await Inventory.GetCachedInventory(_client, true); Logger.Write( evolvePokemonOutProto.Result == EvolvePokemonOut.Types.EvolvePokemonStatus.PokemonEvolvedSuccess ? $"{pokemon.PokemonId} successfully for {evolvePokemonOutProto.ExpAwarded} xp" : $"Failed: {pokemon.PokemonId}. EvolvePokemonOutProto.Result was {evolvePokemonOutProto.Result}, stopping evolving {pokemon.PokemonId}" , LogLevel.Evolve); } }
public async Task PostLoginExecute() { Logger.Write($"Client logged in", LogLevel.Info); while (true) { if (!_isInitialized) { await Inventory.GetCachedInventory(); _playerProfile = await _client.Player.GetPlayer(); BotStats.UpdateConsoleTitle(); var stats = await Inventory.GetPlayerStats(); var stat = stats.FirstOrDefault(); if (stat != null) { BotStats.KmWalkedOnStart = stat.KmWalked; } Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow); if (_clientSettings.AuthType == AuthType.Ptc) { Logger.Write($"PTC Account: {BotStats.GetUsername(_playerProfile)}\n", LogLevel.None, ConsoleColor.Cyan); } Logger.Write($"Latitude: {_clientSettings.DefaultLatitude}", LogLevel.None, ConsoleColor.DarkGray); Logger.Write($"Longitude: {_clientSettings.DefaultLongitude}", LogLevel.None, ConsoleColor.DarkGray); Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow); Logger.Write("Your Account:\n"); Logger.Write($"Name: {BotStats.GetUsername(_playerProfile)}", LogLevel.None, ConsoleColor.DarkGray); Logger.Write($"Team: {_playerProfile.PlayerData.Team}", LogLevel.None, ConsoleColor.DarkGray); Logger.Write($"Level: {BotStats.GetCurrentInfo()}", LogLevel.None, ConsoleColor.DarkGray); Logger.Write($"Stardust: {_playerProfile.PlayerData.Currencies.ToArray()[1].Amount}", LogLevel.None, ConsoleColor.DarkGray); Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow); await DisplayHighests(); Logger.Write("----------------------------", LogLevel.None, ConsoleColor.Yellow); var pokemonsToNotTransfer = _clientSettings.PokemonsToNotTransfer; var pokemonsToNotCatch = _clientSettings.PokemonsToNotCatch; var pokemonsToEvolve = _clientSettings.PokemonsToEvolve; await RecycleItemsTask.Execute(); if (_client.Settings.UseLuckyEggs) { await UseLuckyEggTask.Execute(); } if (_client.Settings.EvolvePokemon || _client.Settings.EvolvePokemonAboveIV) { await EvolvePokemonTask.Execute(); } if (_client.Settings.TransferPokemon) { await TransferPokemonTask.Execute(); } await ExportPokemonToCsv.Execute(_playerProfile.PlayerData); if (_clientSettings.HatchEggs) { await HatchEggsTask.Execute(); } } _isInitialized = true; await Main(); await RefreshTokens(); /* * Example calls below * * var profile = await _client.GetProfile(); * var settings = await _client.GetSettings(); * var mapObjects = await _client.GetMapObjects(); * var inventory = await _client.GetInventory(); * var pokemons = inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.Pokemon).Where(p => p != null && p?.PokemonId > 0); */ await Task.Delay(10000); } }