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 }); }
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); }
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"); }
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); } }
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); }
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; } }
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 }); }
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);