diff --git a/PoGo.NecroBot.Logic/Inventory.cs b/PoGo.NecroBot.Logic/Inventory.cs index 27b5b17ef..698d59eef 100644 --- a/PoGo.NecroBot.Logic/Inventory.cs +++ b/PoGo.NecroBot.Logic/Inventory.cs @@ -263,9 +263,16 @@ public async Task> GetPokemonToEvolve(IEnumerable p.DeployedFortId == string.Empty).OrderByDescending(p => p.Cp); //Don't evolve pokemon in gyms - if (filter != null) + if (filter.Any()) + { + myPokemons = + myPokemons.Where( + p => (_logicClient.Settings.EvolveAllPokemonWithEnoughCandy && filter.Contains(p.PokemonId)) || + (_logicClient.Settings.EvolveAllPokemonAboveIv && (PokemonInfo.CalculatePokemonPerfection(p) >= _logicClient.Settings.EvolveAboveIvValue))); + } + else if (_logicClient.Settings.EvolveAllPokemonAboveIv) { - myPokemons = myPokemons.Where(p => filter.Contains(p.PokemonId)); + myPokemons = myPokemons.Where(p => PokemonInfo.CalculatePokemonPerfection(p) >= _logicClient.Settings.EvolveAboveIvValue); } var pokemons = myPokemons.ToList(); @@ -290,20 +297,9 @@ public async Task> GetPokemonToEvolve(IEnumerable pokemonSettings.Single(x => x.PokemonId == p.PokemonId).FamilyId == settings.FamilyId)* settings.CandyToEvolve; - if (_logicClient.Settings.EvolveAllPokemonAboveIv) + if (familyCandy.Candy - pokemonCandyNeededAlready > settings.CandyToEvolve) { - if (PokemonInfo.CalculatePokemonPerfection(pokemon) >= _logicClient.Settings.EvolveAboveIvValue && - familyCandy.Candy - pokemonCandyNeededAlready > settings.CandyToEvolve) - { - pokemonToEvolve.Add(pokemon); - } - } - else - { - if (familyCandy.Candy - pokemonCandyNeededAlready > settings.CandyToEvolve) - { - pokemonToEvolve.Add(pokemon); - } + pokemonToEvolve.Add(pokemon); } } diff --git a/PoGo.NecroBot.Logic/Tasks/EvolvePokemonTask.cs b/PoGo.NecroBot.Logic/Tasks/EvolvePokemonTask.cs index 515c4bbe9..1dbd83d21 100644 --- a/PoGo.NecroBot.Logic/Tasks/EvolvePokemonTask.cs +++ b/PoGo.NecroBot.Logic/Tasks/EvolvePokemonTask.cs @@ -19,32 +19,36 @@ public class EvolvePokemonTask public static async Task Execute(Context ctx, StateMachine machine) { var pokemonToEvolveTask = await ctx.Inventory.GetPokemonToEvolve(ctx.LogicSettings.PokemonsToEvolve); - var pokemonToEvolve = pokemonToEvolveTask; - if (ctx.LogicSettings.UseLuckyEggsWhileEvolving) + var pokemonToEvolve = pokemonToEvolveTask.ToList(); + + if (pokemonToEvolve.Any()) { - if (pokemonToEvolve.Count() >= ctx.LogicSettings.UseLuckyEggsMinPokemonAmount) - { - await UseLuckyEgg(ctx.Client, ctx.Inventory, machine); - } - else + if (ctx.LogicSettings.UseLuckyEggsWhileEvolving) { - // Wait until we have enough pokemon - return; + if (pokemonToEvolve.Count() >= ctx.LogicSettings.UseLuckyEggsMinPokemonAmount) + { + await UseLuckyEgg(ctx.Client, ctx.Inventory, machine); + } + else + { + // Wait until we have enough pokemon + return; + } } - } - foreach (var pokemon in pokemonToEvolve) - { - var evolveResponse = await ctx.Client.Inventory.EvolvePokemon(pokemon.Id); - - machine.Fire(new PokemonEvolveEvent + foreach (var pokemon in pokemonToEvolve) { - Id = pokemon.PokemonId, - Exp = evolveResponse.ExperienceAwarded, - Result = evolveResponse.Result - }); + var evolveResponse = await ctx.Client.Inventory.EvolvePokemon(pokemon.Id); - await Task.Delay(3000); + machine.Fire(new PokemonEvolveEvent + { + Id = pokemon.PokemonId, + Exp = evolveResponse.ExperienceAwarded, + Result = evolveResponse.Result + }); + + await Task.Delay(3000); + } } }