//this task is duplicated, may need remove to clean up. public static async Task Execute(ISession session, ulong pokemonId) { using (var blocker = new BlockableScope(session, BotActions.Upgrade)) { if (!await blocker.WaitToRun().ConfigureAwait(false)) { return; } var all = await session.Inventory.GetPokemons().ConfigureAwait(false); var pokemons = all.OrderByDescending(x => x.Cp).ThenBy(n => n.StaminaMax); var pokemon = pokemons.FirstOrDefault(p => p.Id == pokemonId); if (pokemon == null) { return; } var upgradeResult = await session.Inventory.UpgradePokemon(pokemon.Id).ConfigureAwait(false); if (upgradeResult.Result.ToString().ToLower().Contains("success")) { var stardust = -PokemonCpUtils.GetStardustCostsForPowerup(pokemon.CpMultiplier); //+ pokemon.AdditionalCpMultiplier); var totalStarDust = session.Inventory.UpdateStarDust(stardust); Logger.Write($"LevelUpSpecificPokemonTasks: SD: {stardust} | CP: {-PokemonCpUtils.GetStardustCostsForPowerup(pokemon.CpMultiplier + pokemon.AdditionalCpMultiplier)}", LogLevel.Info); Logger.Write($"LevelUpSpecificPokemonTasks: {session.Translation.GetPokemonTranslation(upgradeResult.UpgradedPokemon.PokemonId)} | CP: {upgradeResult.UpgradedPokemon.Cp}", LogLevel.Info); session.EventDispatcher.Send(new PokemonLevelUpEvent { Id = upgradeResult.UpgradedPokemon.PokemonId, Cp = upgradeResult.UpgradedPokemon.Cp, UniqueId = pokemon.Id, PSD = stardust, PCandies = await PokemonInfo.GetCandy(session, pokemon).ConfigureAwait(false), Lvl = upgradeResult.UpgradedPokemon.Level(), }); } await DelayingUtils.DelayAsync(session.LogicSettings.DelayBetweenPlayerActions, 0, session.CancellationTokenSource.Token).ConfigureAwait(false); } }
public static async Task <bool> UpgradeSinglePokemon(ISession session, PokemonData pokemon) { if (!(await session.Inventory.CanUpgradePokemon(pokemon).ConfigureAwait(false))) { return(false); } var upgradeResult = await session.Inventory.UpgradePokemon(pokemon.Id).ConfigureAwait(false); if (upgradeResult.Result == UpgradePokemonResponse.Types.Result.Success && upgradeResult.UpgradedPokemon != null) { var bestPokemonOfType = (session.LogicSettings.PrioritizeIvOverCp ? await session.Inventory.GetHighestPokemonOfTypeByIv(upgradeResult .UpgradedPokemon).ConfigureAwait(false) : await session.Inventory.GetHighestPokemonOfTypeByCp(upgradeResult .UpgradedPokemon).ConfigureAwait(false)) ?? upgradeResult.UpgradedPokemon; var stardust = -PokemonCpUtils.GetStardustCostsForPowerup(upgradeResult.UpgradedPokemon.CpMultiplier); //+ upgradeResult.UpgradedPokemon.AdditionalCpMultiplier); var totalStarDust = session.Inventory.UpdateStarDust(stardust); Logger.Write($"UpgradeSinglePokemonTasks: SD: {stardust} | CP: {-PokemonCpUtils.GetStardustCostsForPowerup(pokemon.CpMultiplier + pokemon.AdditionalCpMultiplier)}", LogLevel.Info); Logger.Write($"UpgradeSinglePokemonTasks: {session.Translation.GetPokemonTranslation(upgradeResult.UpgradedPokemon.PokemonId)} | CP: {upgradeResult.UpgradedPokemon.Cp}", LogLevel.Info); session.EventDispatcher.Send(new UpgradePokemonEvent() { Candy = await session.Inventory.GetCandyCount(pokemon.PokemonId).ConfigureAwait(false), Pokemon = upgradeResult.UpgradedPokemon, PokemonId = upgradeResult.UpgradedPokemon.PokemonId, Cp = upgradeResult.UpgradedPokemon.Cp, Id = upgradeResult.UpgradedPokemon.Id, BestCp = bestPokemonOfType.Cp, BestPerfection = PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType), Perfection = PokemonInfo.CalculatePokemonPerfection(upgradeResult.UpgradedPokemon), USD = stardust, Lvl = upgradeResult.UpgradedPokemon.Level(), }); return(true); } return(false); }
public static async Task <bool> UpgradeSinglePokemon(ISession session, PokemonData pokemon) { if (!(await session.Inventory.CanUpgradePokemon(pokemon).ConfigureAwait(false))) { return(false); } var upgradeResult = await session.Inventory.UpgradePokemon(pokemon.Id).ConfigureAwait(false); if (upgradeResult.Result == UpgradePokemonResponse.Types.Result.Success && upgradeResult.UpgradedPokemon != null) { var bestPokemonOfType = (session.LogicSettings.PrioritizeIvOverCp ? await session.Inventory.GetHighestPokemonOfTypeByIv(upgradeResult .UpgradedPokemon).ConfigureAwait(false) : await session.Inventory.GetHighestPokemonOfTypeByCp(upgradeResult .UpgradedPokemon).ConfigureAwait(false)) ?? upgradeResult.UpgradedPokemon; //stardust from what I've gathered is supposed to be - not + for AdditionalCpMultiplier var stardust = -PokemonCpUtils.GetStardustCostsForPowerup(upgradeResult.UpgradedPokemon.CpMultiplier); var stardust2 = -PokemonCpUtils.GetStardustCostsForPowerup(upgradeResult.UpgradedPokemon.CpMultiplier - upgradeResult.UpgradedPokemon.AdditionalCpMultiplier); var totalStarDust = session.Inventory.UpdateStarDust(stardust); Logging.Logger.Write($"SD1: {stardust,5:0} | SD2: {stardust2,5:0} | TotalSD: {totalStarDust,5:0}", Logging.LogLevel.Error); session.EventDispatcher.Send(new UpgradePokemonEvent() { Candy = await session.Inventory.GetCandyCount(pokemon.PokemonId).ConfigureAwait(false), Pokemon = upgradeResult.UpgradedPokemon, PokemonId = upgradeResult.UpgradedPokemon.PokemonId, Cp = upgradeResult.UpgradedPokemon.Cp, Id = upgradeResult.UpgradedPokemon.Id, BestCp = bestPokemonOfType.Cp, BestPerfection = PokemonInfo.CalculatePokemonPerfection(bestPokemonOfType), Perfection = PokemonInfo.CalculatePokemonPerfection(upgradeResult.UpgradedPokemon), USD = stardust, Lvl = upgradeResult.UpgradedPokemon.Level(), }); return(true); } return(false); }
public bool CanUpgradePokemon(PokemonData pokemon) { // Can't upgrade pokemon in gyms. if (!string.IsNullOrEmpty(pokemon.DeployedFortId)) { return(false); } var playerLevel = GetPlayerStats().FirstOrDefault().Level; var pokemonLevel = PokemonInfo.GetLevel(pokemon); // Can't evolve unless pokemon level is lower than trainer. if (pokemonLevel >= playerLevel + 2) { return(false); } int familyCandy = GetCandyCount(pokemon.PokemonId); // Can't evolve if not enough candy. int pokemonCandyNeededAlready = PokemonCpUtils.GetCandyCostsForPowerup(pokemon.CpMultiplier + pokemon.AdditionalCpMultiplier); if (familyCandy < pokemonCandyNeededAlready) { return(false); } // Can't evolve if not enough stardust. var stardustToUpgrade = PokemonCpUtils.GetStardustCostsForPowerup(pokemon.CpMultiplier + pokemon.AdditionalCpMultiplier); if (GetStarDust() < stardustToUpgrade) { return(false); } return(true); }
public static double GetLevel(PokemonData poke) { return(PokemonCpUtils.GetLevel(poke)); }
public static int CalculateMaxCp(PokemonId pokemonId, int level = 40) { return(PokemonCpUtils.GetAbsoluteMaxCp(pokemonId, level)); }
public static int CalculateCp(PokemonData poke) { return(PokemonCpUtils.GetCp(poke)); }