Esempio n. 1
0
        public async Task <MethodResult> EvolvePokemon(IEnumerable <PokemonData> pokemonToEvolve)
        {
            //Shouldn't happen
            if (pokemonToEvolve == null)
            {
                LogCaller(new LoggerEventArgs("Null value sent to evolve pokemon", LoggerTypes.Debug));

                return(new MethodResult());
            }

            foreach (PokemonData pokemon in pokemonToEvolve)
            {
                if (pokemon == null)
                {
                    LogCaller(new LoggerEventArgs("Null pokemon data in IEnumerable", LoggerTypes.Debug));

                    continue;
                }

                try
                {
                    EvolvePokemonResponse evolveResponse = await _client.Inventory.EvolvePokemon(pokemon.Id);

                    if (evolveResponse.Result != EvolvePokemonResponse.Types.Result.Success)
                    {
                        LogCaller(new LoggerEventArgs(String.Format("Failed to evolve pokemon {0}. Response: {1}", pokemon.PokemonId, evolveResponse.Result), LoggerTypes.Warning));
                    }
                    else
                    {
                        ExpIncrease(evolveResponse.ExperienceAwarded);
                        //_expGained += evolveResponse.ExperienceAwarded;

                        LogCaller(new LoggerEventArgs(
                                      String.Format("Successully evolved {0}. Experience: {1}. Cp: {2} -> {3}. IV: {4:0.00}%",
                                                    pokemon.PokemonId,
                                                    evolveResponse.ExperienceAwarded,
                                                    pokemon.Cp,
                                                    evolveResponse.EvolvedPokemonData.Cp,
                                                    CalculateIVPerfection(evolveResponse.EvolvedPokemonData).Data),
                                      LoggerTypes.Evolve));
                    }

                    await Task.Delay(CalculateDelay(UserSettings.DelayBetweenPlayerActions, UserSettings.PlayerActionDelayRandom));
                }
                catch (Exception ex)
                {
                    LogCaller(new LoggerEventArgs("Evolve request failed", LoggerTypes.Exception, ex));
                }
            }

            return(new MethodResult
            {
                Success = true
            });
        }
Esempio n. 2
0
        private void EvolvedPokemon(PokemonData pokemonData, EvolvePokemonResponse evolvePokemonResponse)
        {
            var playerPokemon = PokemonCollection.FirstOrDefault(d => d.PokemonData.Equals(pokemonData));

            if (playerPokemon != null)
            {
                PokemonCollection.Remove(playerPokemon);
            }

            AddPokemon(evolvePokemonResponse.EvolvedPokemonData);
        }
Esempio n. 3
0
        private async void evolveMultiple(ulong[] ids)
        {
            foreach (ulong id in ids)
            {
                EvolvePokemonResponse eps = await this._session.Client.Inventory.EvolvePokemon(id);

                Logger.Write($"Evolve result: {eps.EvolvedPokemonData.PokemonId} CP: {eps.EvolvedPokemonData.Cp} XP: {eps.ExperienceAwarded.ToString()} id: {id.ToString()}", LogLevel.Evolve);
                Logger.Write($"Evolve result: {eps.EvolvedPokemonData.PokemonId} CP: {eps.EvolvedPokemonData.Cp} XP: {eps.ExperienceAwarded.ToString()} id: {id.ToString()}");
                DelayingUtils.Delay(this._session.LogicSettings.DelayBetweenPlayerActions, 0);
            }
            await this.getPokemons();

            Logger.Write($"Evolving of {ids.Length} pokemons completed");
        }
Esempio n. 4
0
        private async void evolvePokemon(ulong id, bool runUpdate = true)
        {
            EvolvePokemonResponse eps = await this._session.Client.Inventory.EvolvePokemon(id);

            if (eps.EvolvedPokemonData != null)
            {
                MessageBox.Show($"Evolve result: {eps.EvolvedPokemonData.PokemonId} CP: {eps.EvolvedPokemonData.Cp}\nXP: {eps.ExperienceAwarded.ToString()}", "Evolve result", MessageBoxButtons.OK, MessageBoxIcon.Information);
                if (runUpdate)
                {
                    await this.getPokemons();
                }
            }
            else
            {
                MessageBox.Show($"Unable to evolve: {eps.Result}", "Evolve failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 5
0
        public async Task <EvolvePokemonResponse> EvolvePokemon(ulong pokemonId, ItemId ievolutionItem = ItemId.ItemUnknown)
        {
            var evolvePokemonRequest = new Request
            {
                RequestType    = RequestType.EvolvePokemon,
                RequestMessage = ((IMessage) new EvolvePokemonMessage
                {
                    PokemonId = pokemonId,
                    EvolutionItemRequirement = ievolutionItem
                }).ToByteString()
            };

            var request = await GetRequestBuilder().GetRequestEnvelope(CommonRequest.FillRequest(evolvePokemonRequest, Client)).ConfigureAwait(false);

            Tuple <EvolvePokemonResponse, CheckChallengeResponse, GetHatchedEggsResponse, GetHoloInventoryResponse, CheckAwardedBadgesResponse, DownloadSettingsResponse, GetBuddyWalkedResponse> response =
                await
                PostProtoPayload
                <Request, EvolvePokemonResponse, CheckChallengeResponse, GetHatchedEggsResponse, GetHoloInventoryResponse,
                 CheckAwardedBadgesResponse, DownloadSettingsResponse, GetBuddyWalkedResponse>(request).ConfigureAwait(false);

            CheckChallengeResponse checkChallengeResponse = response.Item2;

            CommonRequest.ProcessCheckChallengeResponse(Client, checkChallengeResponse);

            GetHoloInventoryResponse getHoloInventoryResponse = response.Item4;

            CommonRequest.ProcessGetHoloInventoryResponse(Client, getHoloInventoryResponse);

            DownloadSettingsResponse downloadSettingsResponse = response.Item6;

            CommonRequest.ProcessDownloadSettingsResponse(Client, downloadSettingsResponse);

            EvolvePokemonResponse evolveResponse = response.Item1;

            return(evolveResponse);
        }
Esempio n. 6
0
        private void btnEvolve_Click(object sender, EventArgs e)
        {
            EnabledButton(false, "Evolving...");
            var    selectedItems = PokemonListView.SelectedItems;
            int    evolved       = 0;
            int    total         = selectedItems.Count;
            string failed        = string.Empty;
            var    date          = DateTime.Now.ToString();
            string logPath       = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs");
            string evolvelog     = System.IO.Path.Combine(logPath, "EvolveLog.txt");
            int    gotXP         = 0;

            //var resp = new taskResponse(false, string.Empty);
            EvolvePokemonResponse resp = new EvolvePokemonResponse();

            if (GlobalVars.pauseAtEvolve2)
            {
                Logger.ColoredConsoleWrite(ConsoleColor.Green, $"Taking a break to evolve some pokemons!");
                GlobalVars.PauseTheWalking = true;
            }

            foreach (ListViewItem selectedItem in selectedItems)
            {
                var pokemoninfo = (PokemonData)selectedItem.Tag;

                resp = client.Inventory.EvolvePokemon(pokemoninfo.Id).Result;

                var name = pokemoninfo.PokemonId;

                var getPokemonName = StringUtils.getPokemonNameByLanguage(pokemoninfo.PokemonId);
                var cp             = pokemoninfo.Cp;
                var calcPerf       = PokemonInfo.CalculatePokemonPerfection(pokemoninfo).ToString("0.00");
                var getEvolvedName = StringUtils.getPokemonNameByLanguage(resp.EvolvedPokemonData.PokemonId);
                var getEvolvedCP   = resp.EvolvedPokemonData.Cp;
                gotXP = gotXP + resp.ExperienceAwarded;

                Logger.Info($"Evolved Pokemon: {getPokemonName} | CP {cp} | Perfection {calcPerf}% | => to {getEvolvedName} | CP: {getEvolvedCP} | XP Reward: {resp.ExperienceAwarded.ToString("N0")} XP");

                if (resp.Result == EvolvePokemonResponse.Types.Result.Success)
                {
                    evolved++;
                    statusTexbox.Text = "Evolving..." + evolved;
                }
                else
                {
                    Logger.ColoredConsoleWrite(ConsoleColor.Red, $"Failed to evolve {pokemoninfo.PokemonId}. EvolvePokemonOutProto.Result was {resp.Result}");
                    failed += " {pokemoninfo.PokemonId} ";
                }

                if (GlobalVars.UseAnimationTimes)
                {
                    Helpers.RandomHelper.RandomSleep(30000, 35000);
                }
            }

            PokemonListView.Refresh();

            if (failed != string.Empty)
            {
                if (BotSettings.LogEvolve)
                {
                    File.AppendAllText(evolvelog, $"[{date}] - MANUAL - Sucessfully evolved {evolved}/{total} Pokemons. Failed: {failed}" + Environment.NewLine);
                }
                MessageBox.Show(th.TS("Succesfully evolved {0}/{1} Pokemons. Failed: {2}", evolved, total, failed), th.TS("Evolve status"), MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                if (BotSettings.LogEvolve)
                {
                    File.AppendAllText(evolvelog, $"[{date}] - MANUAL - Sucessfully evolved {evolved}/{total} Pokemons." + Environment.NewLine);
                }
                MessageBox.Show(th.TS("Succesfully evolved {0}/{1} Pokemons.", evolved, total), th.TS("Evolve status"), MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            Logger.Info($"Evolved {evolved} Pokemons. We have got {gotXP.ToString("N0")} XP.");

            if (evolved > 0)
            {
                Execute();
            }
            else
            {
                EnabledButton(true);
            }

            if (GlobalVars.pauseAtEvolve)
            {
                Logger.ColoredConsoleWrite(ConsoleColor.Green, $"Evolved everything. Time to continue our journey!");
                GlobalVars.PauseTheWalking = false;
            }
        }
Esempio n. 7
0
        public async Task <MethodResult> EvolvePokemon(IEnumerable <PokemonData> pokemonToEvolve)
        {
            //TODO: revise
            //return new MethodResult { Message = "Dev mode sorry" };

            //Shouldn't happen
            if (pokemonToEvolve == null)
            {
                LogCaller(new LoggerEventArgs("Null value sent to evolve pokemon", LoggerTypes.Debug));

                return(new MethodResult());
            }

            foreach (PokemonData pokemon in pokemonToEvolve)
            {
                if (pokemon == null)
                {
                    LogCaller(new LoggerEventArgs("Null pokemon data in IEnumerable", LoggerTypes.Debug));

                    continue;
                }

                try
                {
                    var response = await ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                    {
                        RequestType    = RequestType.EvolvePokemon,
                        RequestMessage = new EvolvePokemonMessage
                        {
                            PokemonId = pokemon.Id
                        }.ToByteString()
                    });

                    EvolvePokemonResponse evolvePokemonResponse = null;

                    evolvePokemonResponse = EvolvePokemonResponse.Parser.ParseFrom(response);
                    ExpIncrease(evolvePokemonResponse.ExperienceAwarded);
                    //_expGained += evolveResponse.ExperienceAwarded;

                    LogCaller(new LoggerEventArgs(
                                  String.Format("Successully evolved {0}. Experience: {1}. Cp: {2} -> {3}. IV: {4:0.00}%",
                                                pokemon.PokemonId,
                                                evolvePokemonResponse.ExperienceAwarded,
                                                pokemon.Cp,
                                                evolvePokemonResponse.EvolvedPokemonData.Cp,
                                                CalculateIVPerfection(evolvePokemonResponse.EvolvedPokemonData).Data),
                                  LoggerTypes.Evolve));

                    await Task.Delay(CalculateDelay(UserSettings.DelayBetweenPlayerActions, UserSettings.PlayerActionDelayRandom));

                    return(new MethodResult
                    {
                        Success = true
                    });
                }
                catch (Exception ex)
                {
                    LogCaller(new LoggerEventArgs("Evolve request failed", LoggerTypes.Exception, ex));
                    return(new MethodResult());
                }
            }

            return(new MethodResult
            {
                Success = true
            });
        }
Esempio n. 8
0
        public async Task <MethodResult> EvolvePokemon(IEnumerable <PokemonData> pokemonToEvolve)
        {
            //Shouldn't happen
            if (pokemonToEvolve.Count() < 1)
            {
                LogCaller(new LoggerEventArgs("Null value sent to evolve pokemon", LoggerTypes.Debug));

                return(new MethodResult());
            }

            foreach (PokemonData pokemon in pokemonToEvolve)
            {
                if (pokemon == null)
                {
                    LogCaller(new LoggerEventArgs("Null pokemon data in IEnumerable", LoggerTypes.Debug));

                    continue;
                }

                if (pokemon.IsBad)
                {
                    LogCaller(new LoggerEventArgs(String.Format("Pokemon {0} is slashed.", pokemon.PokemonId), LoggerTypes.Warning));
                    //await TransferPokemon(new List<PokemonData> { pokemon });
                    continue;
                }

                if (!CanEvolvePokemon(pokemon))
                {
                    LogCaller(new LoggerEventArgs(String.Format("Skipped {0}, this pokemon cant not be upgrated maybe is deployed pokemon or you not have needed resources.", pokemon.PokemonId), LoggerTypes.Info));
                    continue;
                }

                PokemonSettings pokemonSettings = GetPokemonSetting((pokemon).PokemonId).Data;
                ItemId          itemNeeded      = pokemonSettings.EvolutionBranch.Select(x => x.EvolutionItemRequirement).FirstOrDefault();

                if (!_client.LoggedIn)
                {
                    MethodResult result = await AcLogin();

                    if (!result.Success)
                    {
                        return(result);
                    }
                }

                var response = await _client.ClientSession.RpcClient.SendRemoteProcedureCallAsync(new Request
                {
                    RequestType    = RequestType.EvolvePokemon,
                    RequestMessage = new EvolvePokemonMessage
                    {
                        PokemonId = pokemon.Id,
                        EvolutionItemRequirement = itemNeeded
                    }.ToByteString()
                });

                if (response == null)
                {
                    return(new MethodResult());
                }

                EvolvePokemonResponse evolvePokemonResponse = EvolvePokemonResponse.Parser.ParseFrom(response);
                switch (evolvePokemonResponse.Result)
                {
                case EvolvePokemonResponse.Types.Result.Success:
                    ExpIncrease(evolvePokemonResponse.ExperienceAwarded);
                    //_expGained += evolvePokemonResponse.ExperienceAwarded;

                    LogCaller(new LoggerEventArgs(
                                  String.Format("Successully evolved {0} to {1}. Experience: {2}. Cp: {3} -> {4}. IV: {5:0.00}%",
                                                pokemon.PokemonId,
                                                pokemonSettings.EvolutionBranch.Select(x => x.Evolution).FirstOrDefault(),
                                                evolvePokemonResponse.ExperienceAwarded,
                                                pokemon.Cp,
                                                evolvePokemonResponse.EvolvedPokemonData.Cp,
                                                CalculateIVPerfection(evolvePokemonResponse.EvolvedPokemonData)),
                                  LoggerTypes.Evolve));

                    UpdateInventory(InventoryRefresh.Pokemon);
                    UpdateInventory(InventoryRefresh.PokemonCandy);

                    await Task.Delay(CalculateDelay(UserSettings.DelayBetweenPlayerActions, UserSettings.PlayerActionDelayRandom));

                    continue;

                case EvolvePokemonResponse.Types.Result.FailedInsufficientResources:
                    LogCaller(new LoggerEventArgs("Evolve request failed: Failed Insufficient Resources", LoggerTypes.Debug));
                    continue;

                case EvolvePokemonResponse.Types.Result.FailedInvalidItemRequirement:
                    LogCaller(new LoggerEventArgs("Evolve request failed: Failed Invalid Item Requirement", LoggerTypes.Debug));
                    continue;

                case EvolvePokemonResponse.Types.Result.FailedPokemonCannotEvolve:
                    LogCaller(new LoggerEventArgs("Evolve request failed: Failed Pokemon Cannot Evolve", LoggerTypes.Debug));
                    continue;

                case EvolvePokemonResponse.Types.Result.FailedPokemonIsDeployed:
                    LogCaller(new LoggerEventArgs("Evolve request failed: Failed Pokemon IsDeployed", LoggerTypes.Debug));
                    continue;

                case EvolvePokemonResponse.Types.Result.FailedPokemonMissing:
                    LogCaller(new LoggerEventArgs("Evolve request failed: Failed Pokemon Missing", LoggerTypes.Debug));
                    continue;

                case EvolvePokemonResponse.Types.Result.Unset:
                    LogCaller(new LoggerEventArgs("Evolve request failed", LoggerTypes.Debug));
                    continue;
                }
            }

            return(new MethodResult
            {
                Success = true
            });
        }
 /// <summary>
 /// Provides a safe way to invoke the <see cref="EvolvePokemonReceived" /> event.
 /// </summary>
 /// <param name="value"></param>
 public void RaiseEvolvePokemonReceived(EvolvePokemonResponse value) => EvolvePokemonReceived?.Invoke(this, value);