Пример #1
0
        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);
            }
        }
Пример #2
0
        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());
        }
Пример #3
0
        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();
        }
Пример #4
0
        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());
        }
Пример #5
0
        public static void MaximizeAIFlags(VsTrainer tr)
        {
            const TrainerAI max = (TrainerAI.Basic | TrainerAI.Strong | TrainerAI.Expert | TrainerAI.PokeChange);

            tr.Self.AI |= (int)max;
        }
Пример #6
0
        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());
        }