public PokemonDataViewModel(PokemonData pokemon, PokemonSettings setting = null, Candy candy = null) { this.PowerupText = "Upgrade"; this.AllowPowerup = true; this.PokemonData = pokemon; this.Id = pokemon.Id; this.PokemonName = pokemon.PokemonId; this.HP = pokemon.Stamina; this.MaxHP = pokemon.StaminaMax; this.IV = PokemonInfo.CalculatePokemonPerfection(pokemon); this.CP = PokemonInfo.CalculateCp(pokemon); this.Level = (int)PokemonInfo.GetLevel(pokemon); this.Favorited = pokemon.Favorite > 0; this.IsSelected = false; this.Move1 = pokemon.Move1.ToString(); this.Move2 = pokemon.Move2.ToString(); if (setting != null && candy != null) { this.PokemonSettings = setting; this.AllowEvolve = candy.Candy_ >= setting.CandyToEvolve && setting.EvolutionIds.Count > 0; this.Candy = candy.Candy_; } }
public static async Task SaveAsExcel(ISession session, string Filename = "") { await Task.Run(() => { var allPokemonInBag = session.LogicSettings.PrioritizeIvOverCp ? session.Inventory.GetHighestsPerfect(1000).Result : session.Inventory.GetHighestsCp(1000).Result; string file = !string.IsNullOrEmpty(Filename) ? Filename : $"config\\{session.Settings.GoogleUsername}{session.Settings.PtcUsername}\\allpokemon.xlsx"; int rowNum = 1; using (Stream stream = File.OpenWrite(file)) using (var package = new ExcelPackage(stream)) { var ws = package.Workbook.Worksheets.Add("Pokemons"); foreach (var item in allPokemonInBag) { if (rowNum == 1) { ws.Cells[1, 1].Value = "#"; ws.Cells[1, 2].Value = "Pokemon"; ws.Cells[1, 3].Value = "Display Name"; ws.Cells[1, 4].Value = "Nickname"; ws.Cells[1, 5].Value = "IV"; ws.Cells[1, 6].Value = "Attack"; ws.Cells[1, 7].Value = "Defense"; ws.Cells[1, 8].Value = "Stamina"; ws.Cells[1, 9].Value = "HP"; ws.Cells[1, 10].Value = "MaxHP"; ws.Cells[1, 11].Value = "CP"; ws.Cells[1, 12].Value = "Candy"; ws.Cells[1, 13].Value = "Level"; ws.Cells[1, 14].Value = "Move1"; ws.Cells[1, 15].Value = "Move2"; ws.Cells["A1:O1"].AutoFilter = true; ws.Cells["A1:O1"].Style.Font.Bold = true; } ws.Cells[rowNum + 1, 1].Value = rowNum; ws.Cells[rowNum + 1, 2].Value = item.PokemonId.ToString(); ws.Cells[rowNum + 1, 3].Value = item.Nickname; ws.Cells[rowNum + 1, 4].Value = item.OwnerName; ws.Cells[rowNum + 1, 5].Value = Math.Round(PokemonInfo.CalculatePokemonPerfection(item), 2); ws.Cells[rowNum + 1, 6].Value = item.IndividualAttack; ws.Cells[rowNum + 1, 7].Value = item.IndividualDefense; ws.Cells[rowNum + 1, 8].Value = item.IndividualStamina; ws.Cells[rowNum + 1, 9].Value = item.Stamina; ws.Cells[rowNum + 1, 10].Value = item.StaminaMax; ws.Cells[rowNum + 1, 11].Value = PokemonInfo.CalculateCp(item); ws.Cells[rowNum + 1, 12].Value = session.Inventory.GetCandy(item.PokemonId); ws.Cells[rowNum + 1, 13].Value = PokemonInfo.GetLevel(item); ws.Cells[rowNum + 1, 14].Value = item.Move1.ToString(); ws.Cells[rowNum + 1, 15].Value = item.Move2.ToString(); rowNum++; } package.Save(); } }); }
public static async Task Execute(ISession session, CancellationToken cancellationToken, ulong pokemonId = 0) { PokemonData newBuddy = null; if (pokemonId == 0) { if (string.IsNullOrEmpty(session.LogicSettings.DefaultBuddyPokemon)) return; PokemonId buddyPokemonId; bool success = Enum.TryParse(session.LogicSettings.DefaultBuddyPokemon, out buddyPokemonId); if (!success) { // Invalid buddy pokemon type Logger.Write($"The DefaultBuddyPokemon ({session.LogicSettings.DefaultBuddyPokemon}) is not a valid pokemon.", LogLevel.Error); return; } if (session.Profile.PlayerData.BuddyPokemon?.Id > 0) { var currentBuddy = (await session.Inventory.GetPokemons().ConfigureAwait(false)).FirstOrDefault(x => x.Id == session.Profile.PlayerData.BuddyPokemon.Id); if (currentBuddy.PokemonId == buddyPokemonId) { //dont change same buddy return; } } var buddy = (await session.Inventory.GetPokemons().ConfigureAwait(false)).Where(x => x.PokemonId == buddyPokemonId) .OrderByDescending(x => PokemonInfo.CalculateCp(x)); if (session.LogicSettings.PrioritizeIvOverCp) { buddy = buddy.OrderByDescending(x => PokemonInfo.CalculatePokemonPerfection(x)); } newBuddy = buddy.FirstOrDefault(); if (newBuddy == null) { Logger.Write($"You don't have pokemon {session.LogicSettings.DefaultBuddyPokemon} to set as buddy"); return; } } if (newBuddy == null) { newBuddy = (await session.Inventory.GetPokemons().ConfigureAwait(false)).FirstOrDefault(x => x.Id == pokemonId); } if (newBuddy == null) return; var response = await session.Client.Player.SelectBuddy(newBuddy.Id).ConfigureAwait(false); if (response.Result == SetBuddyPokemonResponse.Types.Result.Success) { session.EventDispatcher.Send(new BuddyUpdateEvent(response.UpdatedBuddy, newBuddy)); } }
public static double CP(this PokemonData pkm) { return(PokemonInfo.CalculateCp(pkm)); }
public static async Task Execute(ISession session, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested(); var pokemons = await session.Inventory.GetPokemons().ConfigureAwait(false); if (session.LogicSettings.TransferDuplicatePokemon && session.LogicSettings.RenamePokemonRespectTransferRule) { var duplicatePokemons = await session.Inventory.GetDuplicatePokemonToTransfer( session.LogicSettings.PokemonsNotToTransfer, session.LogicSettings.PokemonEvolveFilters, session.LogicSettings.KeepPokemonsToBeEvolved, session.LogicSettings.PrioritizeIvOverCp).ConfigureAwait(false); pokemons = pokemons.Where(x => !duplicatePokemons.Any(p => p.Id == x.Id)); } if (session.LogicSettings.TransferWeakPokemon && session.LogicSettings.RenamePokemonRespectTransferRule) { var weakPokemons = await session.Inventory.GetWeakPokemonToTransfer( session.LogicSettings.PokemonsNotToTransfer, session.LogicSettings.PokemonEvolveFilters, session.LogicSettings.KeepPokemonsToBeEvolved).ConfigureAwait(false); pokemons = pokemons.Where(x => !weakPokemons.Any(p => p.Id == x.Id)); } foreach (var pokemon in pokemons) { cancellationToken.ThrowIfCancellationRequested(); TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested(); var perfection = Math.Round(PokemonInfo.CalculatePokemonPerfection(pokemon)); var level = PokemonInfo.GetLevel(pokemon); var pokemonName = session.Translation.GetPokemonTranslation(pokemon.PokemonId); var cp = PokemonInfo.CalculateCp(pokemon); // iv number + templating part + pokemonName <= 12 var newNickname = session.LogicSettings.RenameTemplate.ToUpper(); newNickname = newNickname.Replace("{IV}", Math.Round(perfection, 0).ToString()); newNickname = newNickname.Replace("{LEVEL}", Math.Round(level, 0).ToString()); newNickname = newNickname.Replace("{CP}", cp.ToString()); var nameLength = 18 - newNickname.Length; if (pokemonName.Length > nameLength && nameLength > 0) { pokemonName = pokemonName.Substring(0, nameLength); } newNickname = newNickname.Replace("{NAME}", pokemonName); //verify if (nameLength <= 0) { Logger.Write($"Your rename template : {session.LogicSettings.RenameTemplate} incorrect. : {pokemonName} / {newNickname}"); continue; } var oldNickname = pokemon.Nickname.Length != 0 ? pokemon.Nickname : pokemon.PokemonId.ToString(); // If "RenameOnlyAboveIv" = true only rename pokemon with IV over "KeepMinIvPercentage" if ((!session.LogicSettings.RenameOnlyAboveIv || perfection >= session.LogicSettings.KeepMinIvPercentage) && newNickname != oldNickname) { var result = await session.Client.Inventory.NicknamePokemon(pokemon.Id, newNickname).ConfigureAwait(false); if (result.Result == NicknamePokemonResponse.Types.Result.Success) { pokemon.Nickname = newNickname; session.EventDispatcher.Send(new RenamePokemonEvent { Id = pokemon.Id, PokemonId = pokemon.PokemonId, OldNickname = oldNickname, NewNickname = newNickname }); } //Delay only if the pokemon was really renamed! await DelayingUtils.DelayAsync(session.LogicSettings.RenamePokemonActionDelay, 500, session.CancellationTokenSource.Token).ConfigureAwait(false); } } }
public static async Task SaveAsExcel(ISession session, string Filename = "") { await Task.Run(async() => { var allPokemonInBag = session.LogicSettings.PrioritizeIvOverCp ? await session.Inventory.GetHighestsPerfect(1000).ConfigureAwait(false) : await session.Inventory.GetHighestsCp(1000).ConfigureAwait(false); string file = !string.IsNullOrEmpty(Filename) ? Filename : $"config\\{session.Settings.Username}\\allpokemon.xlsx"; int rowNum = 1; using (Stream stream = File.OpenWrite(file)) using (var package = new ExcelPackage(stream)) { var ws = package.Workbook.Worksheets.Add("Pokemons"); foreach (var item in allPokemonInBag) { var settings = await session.Inventory.GetPokemonSetting(item.PokemonId).ConfigureAwait(false); if (rowNum == 1) { ws.Cells[1, 1].Value = "#"; ws.Cells[1, 2].Value = "Pokemon"; ws.Cells[1, 3].Value = "Display Name"; ws.Cells[1, 4].Value = "Nickname"; ws.Cells[1, 5].Value = "IV"; ws.Cells[1, 6].Value = "Attack"; ws.Cells[1, 7].Value = "Defense"; ws.Cells[1, 8].Value = "Stamina"; ws.Cells[1, 9].Value = "HP"; ws.Cells[1, 10].Value = "MaxHP"; ws.Cells[1, 11].Value = "CP"; ws.Cells[1, 12].Value = "Level"; ws.Cells[1, 13].Value = "Candy"; ws.Cells[1, 14].Value = "Move1"; ws.Cells[1, 15].Value = "Move2"; ws.Cells[1, 16].Value = "Type"; ws.Cells[1, 17].Value = "Shiny"; ws.Cells[1, 18].Value = "Form"; ws.Cells[1, 19].Value = "Costume"; ws.Cells[1, 20].Value = "Sex"; ws.Cells["A1:Q1"].AutoFilter = true; ws.Cells["A1:Q1"].Style.Font.Bold = true; } ws.Cells[rowNum + 1, 1].Value = rowNum; ws.Cells[rowNum + 1, 2].Value = item.PokemonId.ToString(); ws.Cells[rowNum + 1, 3].Value = item.Nickname; ws.Cells[rowNum + 1, 4].Value = item.OwnerName; ws.Cells[rowNum + 1, 5].Value = Math.Round(PokemonInfo.CalculatePokemonPerfection(item), 2); ws.Cells[rowNum + 1, 6].Value = item.IndividualAttack; ws.Cells[rowNum + 1, 7].Value = item.IndividualDefense; ws.Cells[rowNum + 1, 8].Value = item.IndividualStamina; ws.Cells[rowNum + 1, 9].Value = item.Stamina; ws.Cells[rowNum + 1, 10].Value = item.StaminaMax; ws.Cells[rowNum + 1, 11].Value = PokemonInfo.CalculateCp(item); ws.Cells[rowNum + 1, 12].Value = PokemonInfo.GetLevel(item); ws.Cells[rowNum + 1, 13].Value = session.Inventory.GetCandyCount(item.PokemonId); ws.Cells[rowNum + 1, 14].Value = item.Move1.ToString(); ws.Cells[rowNum + 1, 15].Value = item.Move2.ToString(); ws.Cells[rowNum + 1, 16].Value = $"{settings.Type.ToString()},{settings.Type2.ToString()}"; ws.Cells[rowNum + 1, 17].Value = $"{(item.PokemonDisplay.Shiny ? "Yes" : "No")}"; ws.Cells[rowNum + 1, 18].Value = $"{(item.PokemonDisplay.Form.ToString().Replace("Unown", "").Replace("Unset", "Normal"))}"; ws.Cells[rowNum + 1, 19].Value = $"{(item.PokemonDisplay.Costume.ToString().Replace("Unset", "Regular"))}"; ws.Cells[rowNum + 1, 20].Value = $"{(item.PokemonDisplay.Gender.ToString().Replace("Less", "Genderless"))}"; rowNum++; } package.Save(); } }).ConfigureAwait(false); }
public static async Task Execute(ISession session, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested(); var pokemons = session.Inventory.GetPokemons(); if (session.LogicSettings.TransferDuplicatePokemon) { var duplicatePokemons = await session.Inventory.GetDuplicatePokemonToTransfer( session.LogicSettings.PokemonsNotToTransfer, session.LogicSettings.PokemonsToEvolve, session.LogicSettings.KeepPokemonsThatCanEvolve, session.LogicSettings.PrioritizeIvOverCp); pokemons = pokemons.Where(x => !duplicatePokemons.Any(p => p.Id == x.Id)); } if (session.LogicSettings.TransferWeakPokemon) { var pokemonsFiltered = pokemons.Where(pokemon => !session.LogicSettings.PokemonsNotToTransfer.Contains(pokemon.PokemonId) && pokemon.Favorite == 0 && pokemon.DeployedFortId == string.Empty) .ToList().OrderBy(poke => poke.Cp); var weakPokemons = new List <PokemonData>(); foreach (var pokemon in pokemonsFiltered) { cancellationToken.ThrowIfCancellationRequested(); if ((pokemon.Cp >= session.LogicSettings.KeepMinCp) || (PokemonInfo.CalculatePokemonPerfection(pokemon) >= session.LogicSettings.KeepMinIvPercentage && session.LogicSettings.PrioritizeIvOverCp) || (PokemonInfo.GetLevel(pokemon) >= session.LogicSettings.KeepMinLvl && session.LogicSettings.UseKeepMinLvl) || pokemon.Favorite == 1) { continue; } weakPokemons.Add(pokemon); } pokemons = pokemons.Where(x => !weakPokemons.Any(p => p.Id == x.Id)); } foreach (var pokemon in pokemons) { cancellationToken.ThrowIfCancellationRequested(); TinyIoC.TinyIoCContainer.Current.Resolve <MultiAccountManager>().ThrowIfSwitchAccountRequested(); var perfection = Math.Round(PokemonInfo.CalculatePokemonPerfection(pokemon)); var level = PokemonInfo.GetLevel(pokemon); var pokemonName = session.Translation.GetPokemonTranslation(pokemon.PokemonId); var cp = PokemonInfo.CalculateCp(pokemon); // iv number + templating part + pokemonName <= 12 var newNickname = session.LogicSettings.RenameTemplate.ToUpper(); newNickname = newNickname.Replace("{IV}", Math.Round(perfection, 0).ToString()); newNickname = newNickname.Replace("{LEVEL}", Math.Round(level, 0).ToString()); newNickname = newNickname.Replace("{CP}", cp.ToString()); var nameLength = 18 - newNickname.Length; if (pokemonName.Length > nameLength && nameLength > 0) { pokemonName = pokemonName.Substring(0, nameLength); } newNickname = newNickname.Replace("{NAME}", pokemonName); //verify if (Regex.IsMatch(newNickname, @"[^a-zA-Z0-9-_.%/\\]") || nameLength <= 0) { Logger.Write($"Your rename template : {session.LogicSettings.RenameTemplate} incorrect. : {pokemonName} / {newNickname}"); continue; } var oldNickname = pokemon.Nickname.Length != 0 ? pokemon.Nickname : pokemon.PokemonId.ToString(); // If "RenameOnlyAboveIv" = true only rename pokemon with IV over "KeepMinIvPercentage" if ((!session.LogicSettings.RenameOnlyAboveIv || perfection >= session.LogicSettings.KeepMinIvPercentage) && newNickname != oldNickname) { var result = await session.Client.Inventory.NicknamePokemon(pokemon.Id, newNickname); if (result.Result == NicknamePokemonResponse.Types.Result.Success) { pokemon.Nickname = newNickname; session.EventDispatcher.Send(new RenamePokemonEvent { Id = pokemon.Id, PokemonId = pokemon.PokemonId, OldNickname = oldNickname, NewNickname = newNickname }); } //Delay only if the pokemon was really renamed! DelayingUtils.Delay(session.LogicSettings.RenamePokemonActionDelay, 500); } } }