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; }
private void PopulateRibbons() { TLP_Ribbons.ColumnCount = 2; TLP_Ribbons.RowCount = 0; // Add Ribbons foreach (var rib in riblist) { AddRibbonSprite(rib); } foreach (var rib in riblist.OrderBy(z => RibbonStrings.GetName(z.Name))) { AddRibbonChoice(rib); } // Force auto-size foreach (RowStyle style in TLP_Ribbons.RowStyles) { style.SizeType = SizeType.AutoSize; } foreach (ColumnStyle style in TLP_Ribbons.ColumnStyles) { style.SizeType = SizeType.AutoSize; } }
private void AddRibbonChoice(RibbonInfo rib) { // Get row we add to int row = TLP_Ribbons.RowCount; TLP_Ribbons.RowCount++; var label = new Label { Anchor = AnchorStyles.Left, Name = PrefixLabel + rib.Name, Text = RibbonStrings.GetName(rib.Name), Padding = Padding.Empty, Margin = Padding.Empty, AutoSize = true, }; TLP_Ribbons.Controls.Add(label, 1, row); if (rib.RibbonCount >= 0) // numeric count ribbon { AddRibbonNumericUpDown(rib, row); } else // boolean ribbon { AddRibbonCheckBox(rib, row, label); } }
public static void RunLivingDexTests() { EncounterEvent.RefreshMGDB(Path.Combine(Directory.GetCurrentDirectory(), "mgdb")); RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); var dir = Directory.GetCurrentDirectory(); bool legalizer_settings = Legalizer.EnableEasterEggs; bool ribbon_settings = APILegality.SetAllLegalRibbons; int set_timeout = APILegality.Timeout; bool inc_forms = ModLogic.IncludeForms; bool set_shiny = ModLogic.SetShiny; Legalizer.EnableEasterEggs = false; APILegality.SetAllLegalRibbons = false; APILegality.Timeout = 99999; var result_f_f = TestLivingDex(false, false, out bool p1); var result_f_t = TestLivingDex(false, true, out bool p2); var result_t_f = TestLivingDex(true, false, out bool p3); var result_t_t = TestLivingDex(true, true, out bool p4); var passed = p1 && p2 && p3 && p4; Legalizer.EnableEasterEggs = legalizer_settings; APILegality.SetAllLegalRibbons = ribbon_settings; APILegality.Timeout = set_timeout; ModLogic.IncludeForms = inc_forms; ModLogic.SetShiny = set_shiny; Directory.CreateDirectory(Path.Combine(dir, "logs")); var res = Status(result_f_f, false, false) + Environment.NewLine + Status(result_t_f, true, false) + Environment.NewLine + Status(result_f_t, false, true) + Environment.NewLine + Status(result_t_t, true, true); File.WriteAllText(Path.Combine(dir, "logs", "output_livingdex.txt"), res); passed.Should().BeTrue($"Living Dex Successfully Genned (Output: \n\n{res}\n\n)"); }
public RibbonEditor(PKM pk) { pkm = pk; InitializeComponent(); WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); riblist = RibbonInfo.GetRibbonInfo(pkm); int vertScrollWidth = SystemInformation.VerticalScrollBarWidth; TLP_Ribbons.Padding = FLP_Ribbons.Padding = new Padding(0, 0, vertScrollWidth, 0); // Updating a Control display with autosized elements on every row addition is cpu intensive. Disable layout updates while populating. TLP_Ribbons.SuspendLayout(); FLP_Ribbons.Scroll += WinFormsUtil.PanelScroll; TLP_Ribbons.Scroll += WinFormsUtil.PanelScroll; PopulateRibbons(); TLP_Ribbons.ResumeLayout(); if (pk is PK8 pk8) { var names = Enum.GetNames(typeof(RibbonIndex)); var values = (RibbonIndex[])Enum.GetValues(typeof(RibbonIndex)); var items = names.Select((z, i) => new ComboItem(RibbonStrings.GetName("Ribbon" + z), (int)values[i])).OrderBy(z => z.Text); var ds = new List <ComboItem> { new(GameInfo.GetStrings(Main.CurrentLanguage).Move[0], -1) }; ds.AddRange(items.ToArray()); CB_Affixed.InitializeBinding(); CB_Affixed.DataSource = ds; CB_Affixed.SelectedValue = (int)pk8.AffixedRibbon; } else { CB_Affixed.Visible = false; } }
private static void InitializePKHeXEnvironment() { if (!EncounterEvent.Initialized) { EncounterEvent.RefreshMGDB(); } RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); }
private static void InitializeCoreStrings() { var lang = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Substring(0, 2); Util.SetLocalization(typeof(LegalityCheckStrings), lang); Util.SetLocalization(typeof(MessageStrings), lang); RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); LegalityAnalysis.ChangeLocalizationStrings(GameInfo.Strings.movelist, GameInfo.Strings.specieslist); }
static LegalityTest() { if (EncounterEvent.Initialized) { return; } RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); EncounterEvent.RefreshMGDB(); }
/// <summary> /// Fix invalid and missing ribbons. (V600 and V601) /// </summary> /// <param name="pk">PKM whose ribbons need to be fixed</param> public static void FixRibbons(PKM pk) { string Report = new LegalityAnalysis(pk).Report(); if (Report.Contains(String.Format(V600, ""))) { string[] ribbonList = Report.Split(new string[] { String.Format(V600, "") }, StringSplitOptions.None)[1].Split(new string[] { "\r\n" }, StringSplitOptions.None)[0].Split(new string[] { ", " }, StringSplitOptions.None); var RibbonNames = ReflectUtil.GetPropertiesStartWithPrefix(pk.GetType(), "Ribbon").Distinct(); List <string> missingRibbons = new List <string>(); foreach (var RibbonName in RibbonNames) { string v = RibbonStrings.GetName(RibbonName).Replace("Ribbon", ""); if (ribbonList.Contains(v)) { missingRibbons.Add(RibbonName); } } foreach (string missing in missingRibbons) { if (missing == "RibbonCountMemoryBattle" || missing == "RibbonCountMemoryContest") { ReflectUtil.SetValue(pk, missing, 0); } else { ReflectUtil.SetValue(pk, missing, -1); } } } if (Report.Contains(String.Format(V601, ""))) { string[] ribbonList = Report.Split(new string[] { String.Format(V601, "") }, StringSplitOptions.None)[1].Split(new string[] { "\r\n" }, StringSplitOptions.None)[0].Split(new string[] { ", " }, StringSplitOptions.None); var RibbonNames = ReflectUtil.GetPropertiesStartWithPrefix(pk.GetType(), "Ribbon").Distinct(); List <string> invalidRibbons = new List <string>(); foreach (var RibbonName in RibbonNames) { string v = RibbonStrings.GetName(RibbonName).Replace("Ribbon", ""); if (ribbonList.Contains(v)) { invalidRibbons.Add(RibbonName); } } foreach (string invalid in invalidRibbons) { if (invalid == "RibbonCountMemoryBattle" || invalid == "RibbonCountMemoryContest") { ReflectUtil.SetValue(pk, invalid, 0); } else { ReflectUtil.SetValue(pk, invalid, false); } } } }
/// <summary> /// Method to get ribbons from ribbon string array /// </summary> /// <param name="pk">pokemon</param> /// <param name="ribbonList">string array of ribbons</param> /// <returns>IEnumberable of all ribbons</returns> private static IEnumerable <string> GetRibbonsRequired(PKM pk, string[] ribbonList) { foreach (var RibbonName in GetRibbonNames(pk)) { string v = RibbonStrings.GetName(RibbonName).Replace("Ribbon", ""); if (ribbonList.Contains(v)) { yield return(RibbonName); } } }
public static string GetMarkName(IRibbonIndex pk) { for (var mark = RibbonIndex.MarkLunchtime; mark <= RibbonIndex.MarkSlump; mark++) { if (pk.GetRibbon((int)mark)) { return(RibbonStrings.GetName($"Ribbon{mark}")); } } return(""); }
//[Theory] //[InlineData(B2, true, true)] //[InlineData(B, true, true)] //[InlineData(Pt, true, true)] #pragma warning disable xUnit1013 // Only for internal debugging public static void VerifyManually(GameVersion s, bool includeforms, bool shiny) #pragma warning restore xUnit1013 // Only for internal debugging { EncounterEvent.RefreshMGDB(Path.Combine(Directory.GetCurrentDirectory(), "mgdb")); RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); APILegality.Timeout = 99999; var passed = true; var res = s.SingleSaveTest(includeforms, shiny, ref passed); passed.Should().BeTrue(); }
public static string GetMarkName(IRibbonIndex pk) { for (var mark = RibbonIndex.MarkLunchtime; mark <= RibbonIndex.MarkSlump; mark++) { if (pk.GetRibbon((int)mark)) { return($"\nPokémon found to have **{RibbonStrings.GetName($"Ribbon{mark}")}**!"); } } return(""); }
static Legalizer() { 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); }); // Update Legality Analysis strings LegalityAnalysis.MoveStrings = GameInfo.Strings.movelist; LegalityAnalysis.SpeciesStrings = GameInfo.Strings.specieslist; }
public static void InitializePKHeXEnvironment() { if (Initialized) { return; } if (!EncounterEvent.Initialized) { EncounterEvent.RefreshMGDB(); } RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); Initialized = true; }
public Startup(IConfiguration configuration) { // Initalize everything needed Helpers.MoveType.MT = File.ReadAllLines("./Moves.csv").Skip(1).Select(m => Helpers.MoveType.ReadCsv(m)).ToList(); Helpers.Sprite.loadJSON(); EncounterEvent.RefreshMGDB(string.Empty); RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); /*LegalityAnalysis.ChangeLocalizationStrings. * LegalityAnalysis.MoveStrings = GameInfo.Strings.movelist; * LegalityAnalysis.SpeciesStrings = GameInfo.Strings.specieslist;*/ Configuration = configuration; }
private void AddRibbonSprite(RibbonInfo rib) { var name = rib.Name; var pb = new PictureBox { AutoSize = false, Size = new Size(40, 40), BackgroundImageLayout = ImageLayout.Center, Visible = false, Name = PrefixPB + name }; var img = SpriteUtil.GetRibbonSprite(name); pb.BackgroundImage = img; var display = RibbonStrings.GetName(name); pb.MouseEnter += (s, e) => tipName.SetToolTip(pb, display); FLP_Ribbons.Controls.Add(pb); }
public static void InitializePKHeXEnvironment() { lock (_lock) { if (Initialized) { return; } if (!EncounterEvent.Initialized) { EncounterEvent.RefreshMGDB(); } RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); Legalizer.EnableEasterEggs = false; APILegality.SetAllLegalRibbons = false; APILegality.Timeout = 99999; Initialized = true; } }
/// <summary> /// Initializes PKHeX's runtime strings to the specified language. /// </summary> /// <param name="lang">2-char language ID</param> /// <param name="sav">Save data (optional)</param> /// <param name="hax">Permit illegal things (items, only)</param> public static void InitializeStrings(string lang, SaveFile?sav = null, bool hax = false) { var str = GameInfo.Strings = GameInfo.GetStrings(lang); if (sav != null) { GameInfo.FilteredSources = new FilteredGameDataSource(sav, GameInfo.Sources, hax); } // Update Legality Analysis strings ParseSettings.ChangeLocalizationStrings(str.movelist, str.specieslist); // Update Legality Strings Task.Run(() => { RibbonStrings.ResetDictionary(str.ribbons); LocalizationUtil.SetLocalization(typeof(LegalityCheckStrings), lang); LocalizationUtil.SetLocalization(typeof(MessageStrings), lang); }); }
private void InitializeAffixed(PKM pk) { if (pk is not IRibbonSetAffixed affixed) { CB_Affixed.Visible = false; return; } var ds = new List <ComboItem> { new(GameInfo.GetStrings(Main.CurrentLanguage).Move[0], -1) }; var list = Enumerable.Range(0, (int)RibbonIndex.MAX_COUNT) .Select(z => new ComboItem(RibbonStrings.GetName($"Ribbon{(RibbonIndex)z}"), z)) .OrderBy(z => z.Text); ds.AddRange(list); CB_Affixed.InitializeBinding(); CB_Affixed.DataSource = ds; CB_Affixed.SelectedValue = (int)affixed.AffixedRibbon; }
private void PopulateRibbons() { // Get a list of all Ribbon Attributes in the PKM var RibbonNames = ReflectUtil.GetPropertiesStartWithPrefix(pkm.GetType(), "Ribbon").Distinct(); foreach (var RibbonName in RibbonNames) { object RibbonValue = ReflectUtil.GetValue(pkm, RibbonName); if (RibbonValue is int x) { riblist.Add(new RibbonInfo(RibbonName, x)); } if (RibbonValue is bool b) { riblist.Add(new RibbonInfo(RibbonName, b)); } } TLP_Ribbons.ColumnCount = 2; TLP_Ribbons.RowCount = 0; // Add Ribbons foreach (var rib in riblist) { AddRibbonSprite(rib); } foreach (var rib in riblist.OrderBy(z => RibbonStrings.GetName(z.Name))) { AddRibbonChoice(rib); } // Force auto-size foreach (RowStyle style in TLP_Ribbons.RowStyles) { style.SizeType = SizeType.AutoSize; } foreach (ColumnStyle style in TLP_Ribbons.ColumnStyles) { style.SizeType = SizeType.AutoSize; } }
static void Main(string[] args) { string appPath = Environment.CurrentDirectory; mt = File.ReadAllLines("./coreconsole/Moves.csv").Skip(1).Select(m => MoveType.ReadCsv(m)).ToList(); if (args.Contains("-server")) { // Init the database EncounterEvent.RefreshMGDB(string.Empty); RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons); LegalityAnalysis.MoveStrings = GameInfo.Strings.movelist; LegalityAnalysis.SpeciesStrings = GameInfo.Strings.specieslist; moveNames = Util.GetMovesList(GameLanguage.DefaultLanguage); // Init Move Types DB var server1 = new Server(); server1.Server_start(7272, "legality_check", false); var server2 = new Server(); server2.Server_start(7273, "info_get", false); var server3 = new Server(); server3.Server_start(7274, "legal_fix", false); var server4 = new Server(); server4.Server_start(7275, "bot_info", true); } else { Initialize(args); if (args.Contains("-l")) { // Legality API calls var lc = new LegalityCheck(pk); if (args.Contains("--verbose")) { Console.WriteLine(lc.VerboseReport); } else { Console.WriteLine(lc.Report); } } if (args.Contains("-alm")) { if (!args.Contains("--version")) { Console.WriteLine("Specify version with the [--version] tag"); } else { var alm = new AutoLegality(pk, args[Array.IndexOf(args, "--version") + 1]); if (alm != null) { if (!args.Contains("-o")) { string output = Util.CleanFileName(alm.GetLegalPKM().FileName); File.WriteAllBytes(Path.Combine(appPath, "output", output), alm.GetLegalPKM().DecryptedBoxData); } else { string output = GetOutputPath(args); File.WriteAllBytes(output, alm.GetLegalPKM().DecryptedBoxData); } } else { Console.WriteLine("Invalid version"); } } } } }
public RibbonResult(string prop, bool invalid = true) { Name = RibbonStrings.GetName(prop); Invalid = invalid; }
public PokemonSummary(PKM pkm, GameStrings strings) : base(pkm, strings) { Ribbons = new List <string>(); foreach (var ribbon in RibbonInfo.GetRibbonInfo(pkm)) { if (ribbon.HasRibbon) { Ribbons.Add(RibbonStrings.GetName(ribbon.Name)); } } Moves = new List <Move> { new Move() { Move_Name = Move1, Move_Type = MoveType.MT[pkm.Move1].Type, Move_PP = Move1_PP, Move_PP_Up = Move1_PPUp }, new Move() { Move_Name = Move2, Move_Type = MoveType.MT[pkm.Move2].Type, Move_PP = Move2_PP, Move_PP_Up = Move2_PPUp }, new Move() { Move_Name = Move3, Move_Type = MoveType.MT[pkm.Move3].Type, Move_PP = Move3_PP, Move_PP_Up = Move3_PPUp }, new Move() { Move_Name = Move4, Move_Type = MoveType.MT[pkm.Move4].Type, Move_PP = Move4_PP, Move_PP_Up = Move4_PPUp } }; Stats = new List <Stat> { new Stat() { Stat_Name = "HP", Stat_IV = HP_IV, Stat_EV = HP_EV, Stat_Total = HP }, new Stat() { Stat_Name = "Attack", Stat_IV = ATK_IV, Stat_EV = ATK_EV, Stat_Total = ATK }, new Stat() { Stat_Name = "Defense", Stat_IV = DEF_IV, Stat_EV = DEF_EV, Stat_Total = DEF }, new Stat() { Stat_Name = "Speed", Stat_IV = SPE_IV, Stat_EV = SPE_EV, Stat_Total = SPE }, new Stat() { Stat_Name = "Special Attack", Stat_IV = SPA_IV, Stat_EV = SPA_EV, Stat_Total = SPA }, new Stat() { Stat_Name = "Special Defense", Stat_IV = SPD_IV, Stat_EV = SPD_EV, Stat_Total = SPD }, }; Generation = Utils.GetGeneration(pkm); Form = Utils.GetForm(pkm, pkm.Form); HeldItemSpriteURL = ""; HT = pkm.HT_Name; DexNumber = pkm.Species; Size = pkm.SIZE_STORED; ItemNum = pkm.HeldItem; var LC = new LegalityAnalysis(pkm); IllegalReasons = LC.Report(); IsLegal = LC.Valid; QR = Utils.GenerateQR(QRMessageUtil.GetMessage(pkm)); Base64 = System.Convert.ToBase64String(pkm.DecryptedBoxData); SpeciesSpriteURL = Helpers.Sprite.getFormURL(DexNumber, Generation, Form, IsShiny, Gender, Species); }