private void SetupTeamCount(VsTrainer tr) { bool special = IndexFixedCount.TryGetValue(tr.ID, out var count); special &= (count != 6 || Settings.ForceSpecialTeamCount6); int min = special ? count : Settings.TeamCountMin; int max = special ? count : Settings.TeamCountMax; var avgBST = (int)tr.Team.Average(pk => Personal[pk.Species].BST); int avgLevel = (int)tr.Team.Average(pk => pk.Level); var pinfo = Personal.Table.OrderBy(pk => Math.Abs(avgBST - pk.BST)).First(); int avgSpec = Array.IndexOf(Personal.Table, pinfo); if (Settings.ForceDoubles && !(special && count % 2 == 1)) { if (tr.Team.Count % 2 != 0) { tr.Team.Add(GetBlankPKM(avgLevel, avgSpec)); } tr.Self.AI |= (int)TrainerAI.Doubles; tr.Self.Mode = BattleMode.Doubles; } if (tr.Team.Count < min) { for (int p = tr.Team.Count; p < min; p++) { tr.Team.Add(GetBlankPKM(avgLevel, avgSpec)); } } else if (tr.Team.Count > max) { tr.Team.RemoveRange(max, tr.Team.Count - max); } }
private string GetTrainerString(VsTrainer Trainer) { var file = Trainer.ID; var tr = Trainer.Self; var name = Trainer.Name; var team = Trainer.Team; var sb = new StringBuilder(); if (tr.Class > trClass.Length) // Klara and Avery out of bounds trclass edge case { tr.Class = 1; } sb.AppendLine("======"); sb.Append(file).Append(" - ").Append(trClass[tr.Class]).Append(" ").AppendLine(name); sb.AppendLine("======"); sb.Append("Pokemon: ").Append(tr.NumPokemon).AppendLine(); for (int i = 0; i < tr.NumPokemon; i++) { var pk = team[i]; if (pk.Shiny) { sb.Append("Shiny "); } sb.Append(specieslist[pk.Species]); sb.Append(" (Lv. ").Append(pk.Level).Append(") "); if (pk.HeldItem > 0) { sb.Append("@").Append(itemlist[pk.HeldItem]); } if (pk.Nature != 0) { sb.Append(" (Nature: ").Append(natures[pk.Nature]).Append(")"); } sb.Append(" (Moves: ").Append(string.Join("/", pk.Moves.Select(m => m == 0 ? "(None)" : movelist[m]))).Append(")"); var ivs = pk.IVs; sb.Append(" IVs: ").Append(string.Join("/", ivs)); var evs = pk.EVs; if (evs.Any(z => z != 0)) { sb.Append(" EVs: ").Append(string.Join("/", pk.EVs)); } if (pk is IAwakened a) { var avs = a.AVs(); if (avs.Any(z => z != 0)) { sb.Append(" AVs: ").Append(string.Join("/", avs)); } } sb.AppendLine(); } return(sb.ToString()); }
private void SetRandomClass(VsTrainer tr) { // ignore special classes if (Settings.SkipSpecialClasses && SpecialClasses.Contains(tr.Self.Class)) { return; } if (CrashClasses.Contains(tr.Self.Class)) { return; // keep as is } tr.Self.Class = Class.Next(); }
private string GetTrainerString(VsTrainer Trainer) { var file = Trainer.ID; var tr = Trainer.Self; var name = Trainer.Name; var team = Trainer.Team; var sb = new StringBuilder(); sb.AppendLine("======"); sb.Append(file).Append(" - ").Append(trClass[tr.Class]).Append(" ").AppendLine(name); sb.AppendLine("======"); sb.Append("Pokemon: ").Append(tr.NumPokemon).AppendLine(); for (int i = 0; i < tr.NumPokemon; i++) { if (team[i].Shiny) { sb.Append("Shiny "); } sb.Append(specieslist[team[i].Species]); sb.Append(" (Lv. ").Append(team[i].Level).Append(") "); if (team[i].HeldItem > 0) { sb.Append("@").Append(itemlist[team[i].HeldItem]); } if (team[i].Nature != 0) { sb.Append(" (Nature: ").Append(natures[team[i].Nature]).Append(")"); } sb.Append(" (Moves: ").Append(string.Join("/", team[i].Moves.Select(m => m == 0 ? "(None)" : movelist[m]))).Append(")"); sb.Append(" IVs: ").Append(string.Join("/", team[i].IVs)); sb.Append(" EVs: ").Append(string.Join("/", team[i].EVs)); sb.AppendLine(); } return(sb.ToString()); }
public static void MaximizeAIFlags(VsTrainer tr) { const TrainerAI max = (TrainerAI.Basic | TrainerAI.Strong | TrainerAI.Expert | TrainerAI.PokeChange); tr.Self.AI |= (int)max; }
private string GetTrainerString(VsTrainer Trainer) { var file = Trainer.ID; var tr = Trainer.Self; var name = Trainer.Name; var team = Trainer.Team; var sb = new StringBuilder(); if (tr.Class > trClass.Length) // Klara and Avery out of bounds trclass edge case { tr.Class = 1; } // Trainer ID -- Trainer Class -- Trainer Name sb.Append(file).Append(":").Append(trClass[tr.Class]).Append(":").AppendLine(name); // Number of Pokemon sb.Append(tr.NumPokemon).AppendLine(); for (int i = 0; i < tr.NumPokemon; i++) { TrainerPoke pk = team[i]; // // Pokemon Shiny Disable for now // if (pk.Shiny) // sb.Append("Shiny "); // Pokemon Species sb.Append(pk.Species).Append(":").Append(specieslist[pk.Species]); sb.Append(" form:").Append(pk.Form).Append(" level:").Append(pk.Level); sb.Append(" nature:").Append(pk.Nature).Append(" ability:").Append(pk.Ability); string[] moves = new string[4]; Debug.WriteLine("I pass through ability..."); moves[0] = pk.Move1.ToString() + "-" + movelist[pk.Move1].Replace(' ', '_'); moves[1] = pk.Move2.ToString() + "-" + movelist[pk.Move2].Replace(' ', '_'); moves[2] = pk.Move3.ToString() + "-" + movelist[pk.Move3].Replace(' ', '_'); moves[3] = pk.Move4.ToString() + "-" + movelist[pk.Move4].Replace(' ', '_'); sb.Append(" moves:").Append(string.Join("/", moves)); Debug.WriteLine("I pass through moves..."); var ivs = pk.IVs; sb.Append(" IVs:").Append(string.Join("/", ivs)); switch (pk) { case TrainerPoke8 c: sb.Append(" canDyna:").Append(c.CanDynamax); sb.Append(" dynaLevel:").Append(c.DynamaxLevel); sb.Append(" canGiga:").Append(c.CanGigantamax); break; } Debug.WriteLine("I got to new line"); sb.AppendLine(); } return(sb.ToString()); }