예제 #1
0
        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);
            }
        }
예제 #2
0
파일: Logic.cs 프로젝트: Jeampan/Pokebot
        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);
            }
        }