public static IList <PKM> GetLivingDex(SaveFile sav) { var bd = sav.BoxData; var tr = sav; for (int i = 1; i <= sav.MaxSpeciesID; i++) // should really get a list of valid species IDs { var pk = sav.BlankPKM; pk.Species = i; pk.Gender = pk.GetSaneGender(); if (i == (int)Species.Meowstic) { pk.AltForm = pk.Gender; } var f = EncounterMovesetGenerator.GeneratePKMs(pk, tr).FirstOrDefault(); if (f == null) { continue; } var converted = PKMConverter.ConvertToType(f, sav.PKMType, out _); if (converted != null) { bd[i] = converted; } } return(bd); }
public static PKM?GetLivingEntry(this ITrainerInfo tr, PKM template, int species, int form, Type destType) { template.Species = species; template.Form = form; template.Gender = template.GetSaneGender(); var f = EncounterMovesetGenerator.GeneratePKMs(template, tr).FirstOrDefault(); if (f == null) { return(null); } var result = PKMConverter.ConvertToType(f, destType, out _); if (result == null) { return(null); } result.CurrentLevel = 100; result.Species = species; result.Form = form; result.Heal(); return(result); }
public static List <PKM> GetLivingDex(ITrainerInfo tr, IEnumerable <int> speciesToGenerate, PKM blank) { var result = new List <PKM>(); var destType = blank.GetType(); foreach (var s in speciesToGenerate) { var pk = blank.Clone(); pk.Species = s; pk.Gender = pk.GetSaneGender(); var pi = pk.PersonalInfo; for (int i = 0; i < pi.FormeCount; i++) { pk.AltForm = i; if (s == (int)Species.Indeedee || s == (int)Species.Meowstic) { pk.Gender = i; } var f = EncounterMovesetGenerator.GeneratePKMs(pk, tr).FirstOrDefault(); if (f == null) { continue; } var converted = PKMConverter.ConvertToType(f, destType, out _); if (converted == null) { continue; } converted.CurrentLevel = 100; converted.Species = s; converted.AltForm = i; result.Add(converted); } } return(result); }