static AutoLegalityExtensions() { Task.Run(() => { var lang = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Substring(0, 2); Util.SetLocalization(typeof(LegalityCheckStrings), lang); Util.SetLocalization(typeof(MessageStrings), lang); RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); }); // Seed the Trainer Database with enough fake save files so that we return a generation sensitive format when needed. for (int i = 1; i < PKX.Generation; i++) { const string OT = "PKHeX-D"; var blankSAV = SaveUtil.GetBlankSAV(i, OT); TrainerSettings.Register(blankSAV); } var trainer = TrainerSettings.GetSavedTrainerData(7); PKMConverter.SetPrimaryTrainer(trainer); // Legalizer.AllowBruteForce = false; // Update Legality Analysis strings LegalityAnalysis.MoveStrings = GameInfo.Strings.movelist; LegalityAnalysis.SpeciesStrings = GameInfo.Strings.specieslist; }
public dynamic Showdown([FromForm][Required] string set, [FromForm] string generation) { ShowdownSet showdown; try { showdown = new ShowdownSet(set); var sav = SaveUtil.GetBlankSAV(Utils.GetGameVersion(generation), "Scatman"); PKM newPKM = sav.GetLegalFromSet(showdown, out var result); PokemonSummary pks = new PokemonSummary(newPKM, GameInfo.Strings); if (pks.Species == "") { throw new System.ArgumentException("Your Pokemon does not exist!"); } DefaultContractResolver contractResolver = new DefaultContractResolver { NamingStrategy = new SnakeCaseNamingStrategy() }; Response.ContentType = "application/json"; return(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(pks, new JsonSerializerSettings { ContractResolver = contractResolver, Formatting = Formatting.Indented }))); } catch (Exception e) { dynamic error = new JObject(); error.message = e.Message; return(StatusCode(400, error)); } }
public PKM Legalize(PKM pk, GameVersion ver) { var ot_name = pk.OT_Name; var ht_name = pk.HT_Name; var keep_original_data = true; if (debug) { Console.WriteLine(lc.Report); } if (lc.Report.ToLower().Contains("wordfilter") || lc.Report.Contains("SID") || lc.Report.Contains("TID")) { keep_original_data = false; ht_name = "PKHeX"; } var sav = SaveUtil.GetBlankSAV(ver, ht_name); var updated = sav.Legalize(pk); var new_sid = updated.SID; var old_new_name = updated.OT_Name; var new_tid = updated.TID; if (keep_original_data) { updated.TID = pk.TID; updated.SID = pk.SID; updated.OT_Name = ot_name; } lc = new LegalityCheck(updated); if (Legal) { legalpk = updated; } else { if (keep_original_data) { updated.TID = new_tid; updated.OT_Name = old_new_name; updated.SID = new_sid; lc = new LegalityCheck(updated); if (Legal) { legalpk = updated; } } } return(updated); }
private static void VerifyFile(string path) { var lines = File.ReadAllLines(path); var sets = ShowdownSet.GetShowdownSets(lines); var game = GetGameFromFile(path); var sav = SaveUtil.GetBlankSAV(game, "ALM"); sav.Should().NotBeNull(); foreach (var s in sets) { var pk = sav.GetLegalFromSet(s, out _); var la = new LegalityAnalysis(pk); la.Valid.Should().BeTrue($"{path}'s set for {GameInfo.Strings.Species[s.Species]} should generate a legal mon"); } }
private static void InitializeTrainerDatabase() { var ot = GetEnvOrThrow("PKHEX_DEFAULT_OT"); var trainerId = int.Parse(GetEnvOrThrow("PKHEX_DEFAULT_TID")); var secretId = int.Parse(GetEnvOrThrow("PKHEX_DEFAULT_SID")); var languageName = GetEnvOrThrow("PKHEX_DEFAULT_LANGUAGE"); if (!Enum.TryParse <LanguageID>(languageName, true, out var language)) { throw new Exception($"Invalid default language {languageName}"); } SaveFile GetFallbackBlank(int generation) { var blankSav = SaveUtil.GetBlankSAV(generation, ot); blankSav.Language = (int)language; blankSav.TID = trainerId; blankSav.SID = secretId; blankSav.OT = ot; return(blankSav); } for (var i = 1; i < PKX.Generation + 1; i++) { var versions = GameUtil.GetVersionsInGeneration(i, PKX.Generation); foreach (var v in versions) { var fallback = new SimpleTrainerInfo(v) { Language = (int)language, TID = trainerId, SID = secretId, OT = ot, }; var exist = TrainerSettings.GetSavedTrainerData(v, i, fallback); if (exist is SimpleTrainerInfo) { TrainerSettings.Register(fallback); } } } var trainer = TrainerSettings.GetSavedTrainerData(PKX.Generation); PKMConverter.SetPrimaryTrainer(trainer); }
private static Tuple <bool, int, int> SingleSaveTest(this GameVersion s, bool includeforms, bool shiny, ref bool passed) { ModLogic.IncludeForms = includeforms; ModLogic.SetShiny = shiny; var sav = SaveUtil.GetBlankSAV(s, "ALMUT"); PKMConverter.SetPrimaryTrainer(sav); var pkms = sav.GenerateLivingDex(out int attempts); var genned = pkms.Count(); var val = new Tuple <bool, int, int>(genned == attempts, attempts, genned); if (genned != attempts) { passed = false; } return(val); }
public PKM Legalize(PKM pk, GameVersion ver) { if (debug) { Console.WriteLine(lc.Report); } var sav = SaveUtil.GetBlankSAV(ver, "PKHeX"); var updated = sav.Legalize(pk); lc = new LegalityCheck(updated); if (Legal) { legalpk = updated; Console.WriteLine("===================================="); Console.WriteLine("= Legalized with Auto Legality Mod ="); Console.WriteLine("===================================="); Console.WriteLine(lc.VerboseReport); } return(updated); }
private PKM Legalize(PKM pk, GameVersion ver) { Report = la.Report(); var sav = SaveUtil.GetBlankSAV(ver, pk.OT_Name); sav.TID = pk.TID; sav.SID = pk.SID; sav.Language = pk.Language; PKM upd = sav.Legalize(pk.Clone()); upd.SetTrainerData(GetTrainerInfo(pk, ver)); la = new LegalityAnalysis(upd); if (la.Valid) { legalpk = upd; Successful = true; return(legalpk); } return(null); }
private static void InitializeTrainerDatabase() { // Seed the Trainer Database with enough fake save files so that we return a generation sensitive format when needed. var cfg = SysCordInstance.Self.Hub.Config; string OT = cfg.GenerateOT; int TID = cfg.GenerateTID16; int SID = cfg.GenerateSID16; int lang = (int)cfg.GenerateLanguage; var externalSource = cfg.GeneratePathTrainerInfo; if (!string.IsNullOrWhiteSpace(externalSource) && Directory.Exists(externalSource)) { TrainerSettings.LoadTrainerDatabaseFromPath(externalSource); } SaveFile GetFallbackBlank(int generation) { var blankSav = SaveUtil.GetBlankSAV(generation, OT); blankSav.Language = lang; blankSav.TID = TID; blankSav.SID = SID; blankSav.OT = OT; return(blankSav); } for (int i = 1; i < PKX.Generation; i++) { var fallback = GetFallbackBlank(i); var exist = TrainerSettings.GetSavedTrainerData(i, fallback); if (exist == fallback) { TrainerSettings.Register(fallback); } } var trainer = TrainerSettings.GetSavedTrainerData(7); PKMConverter.SetPrimaryTrainer(trainer); }
public static PKM Legalize(PKM pk, GameVersion ver, LegalityAnalysis old = null) { if (old != null) { Debug.WriteLine(old.Report()); } var sav = SaveUtil.GetBlankSAV(ver, "PKHeX"); var updated = sav.Legalize(pk); var la = new LegalityAnalysis(updated); if (!la.Valid) { return(pk); } Console.WriteLine("===================================="); Console.WriteLine("= Legalized with Auto Legality Mod ="); Console.WriteLine("===================================="); Console.WriteLine(la.Report(true)); return(updated); }
public void CanMakeBlankSAV8() { var sav = SaveUtil.GetBlankSAV(GameVersion.SW, "PKHeX"); sav.Should().NotBeNull(); }