From c54cd30a3c7fdddfd3d0217adce56c3bcaaeeb70 Mon Sep 17 00:00:00 2001 From: pokecal Date: Sat, 3 Jun 2017 00:43:08 +0900 Subject: [PATCH 1/2] add EventFlags resources BW2 resources about legendaries --- PKHeX.Core/Properties/Resources.Designer.cs | 35 +++++++++++++++++++ PKHeX.Core/Properties/Resources.resx | 6 ++++ .../Resources/text/other/const_b2w2.txt | 2 ++ .../Resources/text/other/flags_b2w2.txt | 17 +++++++++ .../Subforms/Save Editors/SAV_EventFlags.cs | 3 ++ 5 files changed, 63 insertions(+) create mode 100644 PKHeX.Core/Resources/text/other/const_b2w2.txt create mode 100644 PKHeX.Core/Resources/text/other/flags_b2w2.txt diff --git a/PKHeX.Core/Properties/Resources.Designer.cs b/PKHeX.Core/Properties/Resources.Designer.cs index b6619eafb..aaadbe747 100644 --- a/PKHeX.Core/Properties/Resources.Designer.cs +++ b/PKHeX.Core/Properties/Resources.Designer.cs @@ -61,6 +61,16 @@ internal class Resources { } } + /// + /// Looks up a localized string similar to 0077 Entralink 6:Finished tutorial + ///0268 Rati@s 5:Battleable,6:Disappeared. + /// + internal static string const_b2w2 { + get { + return ResourceManager.GetString("const_b2w2", resourceCulture); + } + } + /// /// Looks up a localized string similar to 0182 Ns Castle 0:Event,1:Event,2:Before Reshiram/Zekrom,3:Before N,4:Event,5:Before Ghetsis ///0145 Victini 0:Event,1:Event,2:Battleable,3:Defeated,4:Captured,5:All event finished @@ -145,6 +155,31 @@ internal class Resources { } } + /// + /// Looks up a localized string similar to 0802 Cobalion disappeared + ///0302 Cobalion LV+20 + ///0810 Terrakion disappeared + ///0329 Terrakion LV+20 + ///0801 Virizion disappeared + ///0300 Virizion LV+20 + ///0667 Reshiram/Zekrom disappeared + ///1004 Kyurem disappeared + ///0922 Regirock disappeared + ///0921 Regice disappeared + ///0923 Registeel disappeared + ///0918 Uxie disappeared + ///0919 Mesprit disappeared + ///0920 Azelf disappeared + ///0900 Heatran disappeared + ///0924 Regigigas disappeared + ///0897 Cresselia disappeared. + /// + internal static string flags_b2w2 { + get { + return ResourceManager.GetString("flags_b2w2", resourceCulture); + } + } + /// /// Looks up a localized string similar to 0669 Plasma guide(LeaguePokemart) disappeared ///0661 Reshiram/Zekrom(NsCastle) disappeared diff --git a/PKHeX.Core/Properties/Resources.resx b/PKHeX.Core/Properties/Resources.resx index 632f9595d..264319c55 100644 --- a/PKHeX.Core/Properties/Resources.resx +++ b/PKHeX.Core/Properties/Resources.resx @@ -1451,4 +1451,10 @@ ..\Resources\text\other\flags_bw.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;shift_jis + + ..\Resources\text\other\const_b2w2.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;shift_jis + + + ..\Resources\text\other\flags_b2w2.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;shift_jis + \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/const_b2w2.txt b/PKHeX.Core/Resources/text/other/const_b2w2.txt new file mode 100644 index 000000000..2b173be7e --- /dev/null +++ b/PKHeX.Core/Resources/text/other/const_b2w2.txt @@ -0,0 +1,2 @@ +0077 Entralink 6:Finished tutorial +0268 Rati@s 5:Battleable,6:Disappeared \ No newline at end of file diff --git a/PKHeX.Core/Resources/text/other/flags_b2w2.txt b/PKHeX.Core/Resources/text/other/flags_b2w2.txt new file mode 100644 index 000000000..fc5d919ae --- /dev/null +++ b/PKHeX.Core/Resources/text/other/flags_b2w2.txt @@ -0,0 +1,17 @@ +0802 Cobalion disappeared +0302 Cobalion LV+20 +0810 Terrakion disappeared +0329 Terrakion LV+20 +0801 Virizion disappeared +0300 Virizion LV+20 +0667 Reshiram/Zekrom disappeared +1004 Kyurem disappeared +0922 Regirock disappeared +0921 Regice disappeared +0923 Registeel disappeared +0918 Uxie disappeared +0919 Mesprit disappeared +0920 Azelf disappeared +0900 Heatran disappeared +0924 Regigigas disappeared +0897 Cresselia disappeared \ No newline at end of file diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs index 4084967f5..fc129ec9c 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs @@ -117,6 +117,9 @@ private string[] getStringList(string type) case GameVersion.BW: gamePrefix = "bw"; break; + case GameVersion.B2W2: + gamePrefix = "b2w2"; + break; default: return null; } From 497f0c62b2f4444aff2812a7b71f90707eb749ae Mon Sep 17 00:00:00 2001 From: pokecal Date: Sat, 3 Jun 2017 00:52:25 +0900 Subject: [PATCH 2/2] add BW2 FunfestMission controls The entree level can display 9999 in game, but fixed to 999 when it change. MAX PassPowers require 9999 costs. --- .../Save Editors/Gen5/SAV_Misc5.Designer.cs | 604 +++++++++++++++++- .../Subforms/Save Editors/Gen5/SAV_Misc5.cs | 312 ++++++++- 2 files changed, 877 insertions(+), 39 deletions(-) diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs index 505cbcb87..5f1dd0f80 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs @@ -33,6 +33,9 @@ private void InitializeComponent() this.B_Save = new System.Windows.Forms.Button(); this.TC_Misc = new System.Windows.Forms.TabControl(); this.TAB_Main = new System.Windows.Forms.TabPage(); + this.GB_KeySystem = new System.Windows.Forms.GroupBox(); + this.B_AllKeys = new System.Windows.Forms.Button(); + this.CLB_KeySystem = new System.Windows.Forms.CheckedListBox(); this.CHK_LibertyPass = new System.Windows.Forms.CheckBox(); this.GB_Roamer = new System.Windows.Forms.GroupBox(); this.L_Roamer642 = new System.Windows.Forms.Label(); @@ -42,20 +45,65 @@ private void InitializeComponent() this.GB_FlyDest = new System.Windows.Forms.GroupBox(); this.CLB_FlyDest = new System.Windows.Forms.CheckedListBox(); this.B_AllFlyDest = new System.Windows.Forms.Button(); - this.GB_KeySystem = new System.Windows.Forms.GroupBox(); - this.CLB_KeySystem = new System.Windows.Forms.CheckedListBox(); - this.B_AllKeys = new System.Windows.Forms.Button(); + this.TAB_Entralink = new System.Windows.Forms.TabPage(); + this.L_FMParticipants = new System.Windows.Forms.Label(); + this.L_FMCompleted = new System.Windows.Forms.Label(); + this.L_FMParticipated = new System.Windows.Forms.Label(); + this.L_FMHosted = new System.Windows.Forms.Label(); + this.L_FMTopScore = new System.Windows.Forms.Label(); + this.GB_EntreeLevel = new System.Windows.Forms.GroupBox(); + this.NUD_EntreeWhiteEXP = new System.Windows.Forms.NumericUpDown(); + this.NUD_EntreeBlackEXP = new System.Windows.Forms.NumericUpDown(); + this.NUD_EntreeBlackLV = new System.Windows.Forms.NumericUpDown(); + this.NUD_EntreeWhiteLV = new System.Windows.Forms.NumericUpDown(); + this.L_EntreeBlack = new System.Windows.Forms.Label(); + this.L_EntreeWhite = new System.Windows.Forms.Label(); + this.NUD_FMMostParticipants = new System.Windows.Forms.NumericUpDown(); + this.NUD_FMTopScores = new System.Windows.Forms.NumericUpDown(); + this.NUD_FMCompleted = new System.Windows.Forms.NumericUpDown(); + this.NUD_FMParticipated = new System.Windows.Forms.NumericUpDown(); + this.NUD_FMHosted = new System.Windows.Forms.NumericUpDown(); + this.GB_FunfestMissions = new System.Windows.Forms.GroupBox(); + this.CHK_FMNew = new System.Windows.Forms.CheckBox(); + this.L_FMLocked = new System.Windows.Forms.Label(); + this.L_FMBestScore = new System.Windows.Forms.Label(); + this.L_FMBestTotal = new System.Windows.Forms.Label(); + this.NUD_FMBestScore = new System.Windows.Forms.NumericUpDown(); + this.NUD_FMBestTotal = new System.Windows.Forms.NumericUpDown(); + this.CB_FMLevel = new System.Windows.Forms.ComboBox(); + this.L_FMUnlocked = new System.Windows.Forms.Label(); + this.B_FunfestMissions = new System.Windows.Forms.Button(); + this.LB_FunfestMissions = new System.Windows.Forms.ListBox(); + this.GB_PassPowers = new System.Windows.Forms.GroupBox(); + this.CB_PassPower3 = new System.Windows.Forms.ComboBox(); + this.CB_PassPower2 = new System.Windows.Forms.ComboBox(); + this.CB_PassPower1 = new System.Windows.Forms.ComboBox(); this.TC_Misc.SuspendLayout(); this.TAB_Main.SuspendLayout(); + this.GB_KeySystem.SuspendLayout(); this.GB_Roamer.SuspendLayout(); this.GB_FlyDest.SuspendLayout(); - this.GB_KeySystem.SuspendLayout(); + this.TAB_Entralink.SuspendLayout(); + this.GB_EntreeLevel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeWhiteEXP)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeBlackEXP)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeBlackLV)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeWhiteLV)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMMostParticipants)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMTopScores)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMCompleted)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMParticipated)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMHosted)).BeginInit(); + this.GB_FunfestMissions.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMBestScore)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMBestTotal)).BeginInit(); + this.GB_PassPowers.SuspendLayout(); this.SuspendLayout(); // // B_Cancel // this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Cancel.Location = new System.Drawing.Point(52, 316); + this.B_Cancel.Location = new System.Drawing.Point(197, 311); this.B_Cancel.Name = "B_Cancel"; this.B_Cancel.Size = new System.Drawing.Size(75, 23); this.B_Cancel.TabIndex = 0; @@ -66,7 +114,7 @@ private void InitializeComponent() // B_Save // this.B_Save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.B_Save.Location = new System.Drawing.Point(133, 316); + this.B_Save.Location = new System.Drawing.Point(278, 311); this.B_Save.Name = "B_Save"; this.B_Save.Size = new System.Drawing.Size(75, 23); this.B_Save.TabIndex = 1; @@ -80,10 +128,11 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.TC_Misc.Controls.Add(this.TAB_Main); + this.TC_Misc.Controls.Add(this.TAB_Entralink); this.TC_Misc.Location = new System.Drawing.Point(12, 12); this.TC_Misc.Name = "TC_Misc"; this.TC_Misc.SelectedIndex = 0; - this.TC_Misc.Size = new System.Drawing.Size(196, 298); + this.TC_Misc.Size = new System.Drawing.Size(341, 293); this.TC_Misc.TabIndex = 2; // // TAB_Main @@ -95,11 +144,41 @@ private void InitializeComponent() this.TAB_Main.Location = new System.Drawing.Point(4, 22); this.TAB_Main.Name = "TAB_Main"; this.TAB_Main.Padding = new System.Windows.Forms.Padding(3); - this.TAB_Main.Size = new System.Drawing.Size(188, 272); + this.TAB_Main.Size = new System.Drawing.Size(333, 267); this.TAB_Main.TabIndex = 0; this.TAB_Main.Text = "Main"; this.TAB_Main.UseVisualStyleBackColor = true; // + // GB_KeySystem + // + this.GB_KeySystem.Controls.Add(this.B_AllKeys); + this.GB_KeySystem.Controls.Add(this.CLB_KeySystem); + this.GB_KeySystem.Location = new System.Drawing.Point(152, 6); + this.GB_KeySystem.Name = "GB_KeySystem"; + this.GB_KeySystem.Size = new System.Drawing.Size(140, 127); + this.GB_KeySystem.TabIndex = 3; + this.GB_KeySystem.TabStop = false; + this.GB_KeySystem.Text = "Unlocked Keys"; + // + // B_AllKeys + // + this.B_AllKeys.Location = new System.Drawing.Point(6, 18); + this.B_AllKeys.Name = "B_AllKeys"; + this.B_AllKeys.Size = new System.Drawing.Size(75, 23); + this.B_AllKeys.TabIndex = 1; + this.B_AllKeys.Text = "Check All"; + this.B_AllKeys.UseVisualStyleBackColor = true; + this.B_AllKeys.Click += new System.EventHandler(this.B_AllKeys_Click); + // + // CLB_KeySystem + // + this.CLB_KeySystem.CheckOnClick = true; + this.CLB_KeySystem.FormattingEnabled = true; + this.CLB_KeySystem.Location = new System.Drawing.Point(6, 47); + this.CLB_KeySystem.Name = "CLB_KeySystem"; + this.CLB_KeySystem.Size = new System.Drawing.Size(128, 74); + this.CLB_KeySystem.TabIndex = 0; + // // CHK_LibertyPass // this.CHK_LibertyPass.AutoSize = true; @@ -187,41 +266,450 @@ private void InitializeComponent() this.B_AllFlyDest.UseVisualStyleBackColor = true; this.B_AllFlyDest.Click += new System.EventHandler(this.B_AllFlyDest_Click); // - // GB_KeySystem + // TAB_Entralink // - this.GB_KeySystem.Controls.Add(this.B_AllKeys); - this.GB_KeySystem.Controls.Add(this.CLB_KeySystem); - this.GB_KeySystem.Location = new System.Drawing.Point(6, 139); - this.GB_KeySystem.Name = "GB_KeySystem"; - this.GB_KeySystem.Size = new System.Drawing.Size(140, 127); - this.GB_KeySystem.TabIndex = 3; - this.GB_KeySystem.TabStop = false; - this.GB_KeySystem.Text = "Unlocked Keys"; + this.TAB_Entralink.Controls.Add(this.L_FMParticipants); + this.TAB_Entralink.Controls.Add(this.L_FMCompleted); + this.TAB_Entralink.Controls.Add(this.L_FMParticipated); + this.TAB_Entralink.Controls.Add(this.L_FMHosted); + this.TAB_Entralink.Controls.Add(this.L_FMTopScore); + this.TAB_Entralink.Controls.Add(this.GB_EntreeLevel); + this.TAB_Entralink.Controls.Add(this.NUD_FMMostParticipants); + this.TAB_Entralink.Controls.Add(this.NUD_FMTopScores); + this.TAB_Entralink.Controls.Add(this.NUD_FMCompleted); + this.TAB_Entralink.Controls.Add(this.NUD_FMParticipated); + this.TAB_Entralink.Controls.Add(this.NUD_FMHosted); + this.TAB_Entralink.Controls.Add(this.GB_FunfestMissions); + this.TAB_Entralink.Controls.Add(this.GB_PassPowers); + this.TAB_Entralink.Location = new System.Drawing.Point(4, 22); + this.TAB_Entralink.Name = "TAB_Entralink"; + this.TAB_Entralink.Size = new System.Drawing.Size(333, 267); + this.TAB_Entralink.TabIndex = 1; + this.TAB_Entralink.Text = "Entralink"; + this.TAB_Entralink.UseVisualStyleBackColor = true; // - // CLB_KeySystem + // L_FMParticipants // - this.CLB_KeySystem.CheckOnClick = true; - this.CLB_KeySystem.FormattingEnabled = true; - this.CLB_KeySystem.Location = new System.Drawing.Point(6, 47); - this.CLB_KeySystem.Name = "CLB_KeySystem"; - this.CLB_KeySystem.Size = new System.Drawing.Size(128, 74); - this.CLB_KeySystem.TabIndex = 0; + this.L_FMParticipants.Location = new System.Drawing.Point(161, 239); + this.L_FMParticipants.Name = "L_FMParticipants"; + this.L_FMParticipants.Size = new System.Drawing.Size(114, 23); + this.L_FMParticipants.TabIndex = 16; + this.L_FMParticipants.Text = "Most Participants"; + this.L_FMParticipants.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // B_AllKeys + // L_FMCompleted // - this.B_AllKeys.Location = new System.Drawing.Point(6, 18); - this.B_AllKeys.Name = "B_AllKeys"; - this.B_AllKeys.Size = new System.Drawing.Size(75, 23); - this.B_AllKeys.TabIndex = 1; - this.B_AllKeys.Text = "Check All"; - this.B_AllKeys.UseVisualStyleBackColor = true; - this.B_AllKeys.Click += new System.EventHandler(this.B_AllKeys_Click); + this.L_FMCompleted.Location = new System.Drawing.Point(4, 239); + this.L_FMCompleted.Name = "L_FMCompleted"; + this.L_FMCompleted.Size = new System.Drawing.Size(84, 23); + this.L_FMCompleted.TabIndex = 15; + this.L_FMCompleted.Text = "Completed"; + this.L_FMCompleted.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_FMParticipated + // + this.L_FMParticipated.Location = new System.Drawing.Point(4, 214); + this.L_FMParticipated.Name = "L_FMParticipated"; + this.L_FMParticipated.Size = new System.Drawing.Size(84, 23); + this.L_FMParticipated.TabIndex = 14; + this.L_FMParticipated.Text = "Participated"; + this.L_FMParticipated.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_FMHosted + // + this.L_FMHosted.Location = new System.Drawing.Point(4, 189); + this.L_FMHosted.Name = "L_FMHosted"; + this.L_FMHosted.Size = new System.Drawing.Size(84, 23); + this.L_FMHosted.TabIndex = 13; + this.L_FMHosted.Text = "Hosted"; + this.L_FMHosted.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_FMTopScore + // + this.L_FMTopScore.Location = new System.Drawing.Point(158, 214); + this.L_FMTopScore.Name = "L_FMTopScore"; + this.L_FMTopScore.Size = new System.Drawing.Size(111, 23); + this.L_FMTopScore.TabIndex = 12; + this.L_FMTopScore.Text = "Top Score"; + this.L_FMTopScore.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // GB_EntreeLevel + // + this.GB_EntreeLevel.Controls.Add(this.NUD_EntreeWhiteEXP); + this.GB_EntreeLevel.Controls.Add(this.NUD_EntreeBlackEXP); + this.GB_EntreeLevel.Controls.Add(this.NUD_EntreeBlackLV); + this.GB_EntreeLevel.Controls.Add(this.NUD_EntreeWhiteLV); + this.GB_EntreeLevel.Controls.Add(this.L_EntreeBlack); + this.GB_EntreeLevel.Controls.Add(this.L_EntreeWhite); + this.GB_EntreeLevel.Location = new System.Drawing.Point(6, 6); + this.GB_EntreeLevel.Name = "GB_EntreeLevel"; + this.GB_EntreeLevel.Size = new System.Drawing.Size(137, 68); + this.GB_EntreeLevel.TabIndex = 11; + this.GB_EntreeLevel.TabStop = false; + this.GB_EntreeLevel.Text = "Entree Level"; + // + // NUD_EntreeWhiteEXP + // + this.NUD_EntreeWhiteEXP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_EntreeWhiteEXP.Location = new System.Drawing.Point(94, 43); + this.NUD_EntreeWhiteEXP.Maximum = new decimal(new int[] { + 49, + 0, + 0, + 0}); + this.NUD_EntreeWhiteEXP.Name = "NUD_EntreeWhiteEXP"; + this.NUD_EntreeWhiteEXP.Size = new System.Drawing.Size(37, 19); + this.NUD_EntreeWhiteEXP.TabIndex = 6; + this.NUD_EntreeWhiteEXP.Value = new decimal(new int[] { + 49, + 0, + 0, + 0}); + this.NUD_EntreeWhiteEXP.ValueChanged += new System.EventHandler(this.NUD_EntreeWhiteEXP_ValueChanged); + // + // NUD_EntreeBlackEXP + // + this.NUD_EntreeBlackEXP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_EntreeBlackEXP.Location = new System.Drawing.Point(94, 18); + this.NUD_EntreeBlackEXP.Maximum = new decimal(new int[] { + 49, + 0, + 0, + 0}); + this.NUD_EntreeBlackEXP.Name = "NUD_EntreeBlackEXP"; + this.NUD_EntreeBlackEXP.Size = new System.Drawing.Size(37, 19); + this.NUD_EntreeBlackEXP.TabIndex = 5; + this.NUD_EntreeBlackEXP.Value = new decimal(new int[] { + 49, + 0, + 0, + 0}); + this.NUD_EntreeBlackEXP.ValueChanged += new System.EventHandler(this.NUD_EntreeBlackEXP_ValueChanged); + // + // NUD_EntreeBlackLV + // + this.NUD_EntreeBlackLV.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_EntreeBlackLV.Location = new System.Drawing.Point(45, 18); + this.NUD_EntreeBlackLV.Maximum = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.NUD_EntreeBlackLV.Name = "NUD_EntreeBlackLV"; + this.NUD_EntreeBlackLV.Size = new System.Drawing.Size(43, 19); + this.NUD_EntreeBlackLV.TabIndex = 1; + this.NUD_EntreeBlackLV.Value = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.NUD_EntreeBlackLV.ValueChanged += new System.EventHandler(this.NUD_EntreeBlackLV_ValueChanged); + // + // NUD_EntreeWhiteLV + // + this.NUD_EntreeWhiteLV.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_EntreeWhiteLV.Location = new System.Drawing.Point(45, 43); + this.NUD_EntreeWhiteLV.Maximum = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.NUD_EntreeWhiteLV.Name = "NUD_EntreeWhiteLV"; + this.NUD_EntreeWhiteLV.Size = new System.Drawing.Size(43, 19); + this.NUD_EntreeWhiteLV.TabIndex = 0; + this.NUD_EntreeWhiteLV.Value = new decimal(new int[] { + 999, + 0, + 0, + 0}); + this.NUD_EntreeWhiteLV.ValueChanged += new System.EventHandler(this.NUD_EntreeWhiteLV_ValueChanged); + // + // L_EntreeBlack + // + this.L_EntreeBlack.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.L_EntreeBlack.Location = new System.Drawing.Point(6, 15); + this.L_EntreeBlack.Name = "L_EntreeBlack"; + this.L_EntreeBlack.Size = new System.Drawing.Size(33, 23); + this.L_EntreeBlack.TabIndex = 3; + this.L_EntreeBlack.Text = "B"; + this.L_EntreeBlack.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_EntreeWhite + // + this.L_EntreeWhite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.L_EntreeWhite.Location = new System.Drawing.Point(5, 40); + this.L_EntreeWhite.Name = "L_EntreeWhite"; + this.L_EntreeWhite.Size = new System.Drawing.Size(34, 23); + this.L_EntreeWhite.TabIndex = 4; + this.L_EntreeWhite.Text = "W"; + this.L_EntreeWhite.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // NUD_FMMostParticipants + // + this.NUD_FMMostParticipants.Location = new System.Drawing.Point(281, 242); + this.NUD_FMMostParticipants.Maximum = new decimal(new int[] { + 255, + 0, + 0, + 0}); + this.NUD_FMMostParticipants.Name = "NUD_FMMostParticipants"; + this.NUD_FMMostParticipants.Size = new System.Drawing.Size(43, 19); + this.NUD_FMMostParticipants.TabIndex = 10; + this.NUD_FMMostParticipants.Value = new decimal(new int[] { + 255, + 0, + 0, + 0}); + // + // NUD_FMTopScores + // + this.NUD_FMTopScores.Location = new System.Drawing.Point(275, 217); + this.NUD_FMTopScores.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUD_FMTopScores.Name = "NUD_FMTopScores"; + this.NUD_FMTopScores.Size = new System.Drawing.Size(49, 19); + this.NUD_FMTopScores.TabIndex = 9; + this.NUD_FMTopScores.Value = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + // + // NUD_FMCompleted + // + this.NUD_FMCompleted.Location = new System.Drawing.Point(94, 242); + this.NUD_FMCompleted.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUD_FMCompleted.Name = "NUD_FMCompleted"; + this.NUD_FMCompleted.Size = new System.Drawing.Size(49, 19); + this.NUD_FMCompleted.TabIndex = 8; + this.NUD_FMCompleted.Value = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + // + // NUD_FMParticipated + // + this.NUD_FMParticipated.Location = new System.Drawing.Point(94, 217); + this.NUD_FMParticipated.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUD_FMParticipated.Name = "NUD_FMParticipated"; + this.NUD_FMParticipated.Size = new System.Drawing.Size(49, 19); + this.NUD_FMParticipated.TabIndex = 7; + this.NUD_FMParticipated.Value = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + // + // NUD_FMHosted + // + this.NUD_FMHosted.Location = new System.Drawing.Point(94, 192); + this.NUD_FMHosted.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUD_FMHosted.Name = "NUD_FMHosted"; + this.NUD_FMHosted.Size = new System.Drawing.Size(49, 19); + this.NUD_FMHosted.TabIndex = 6; + this.NUD_FMHosted.Value = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + // + // GB_FunfestMissions + // + this.GB_FunfestMissions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.GB_FunfestMissions.Controls.Add(this.CHK_FMNew); + this.GB_FunfestMissions.Controls.Add(this.L_FMLocked); + this.GB_FunfestMissions.Controls.Add(this.L_FMBestScore); + this.GB_FunfestMissions.Controls.Add(this.L_FMBestTotal); + this.GB_FunfestMissions.Controls.Add(this.NUD_FMBestScore); + this.GB_FunfestMissions.Controls.Add(this.NUD_FMBestTotal); + this.GB_FunfestMissions.Controls.Add(this.CB_FMLevel); + this.GB_FunfestMissions.Controls.Add(this.L_FMUnlocked); + this.GB_FunfestMissions.Controls.Add(this.B_FunfestMissions); + this.GB_FunfestMissions.Controls.Add(this.LB_FunfestMissions); + this.GB_FunfestMissions.Location = new System.Drawing.Point(149, 6); + this.GB_FunfestMissions.Name = "GB_FunfestMissions"; + this.GB_FunfestMissions.Size = new System.Drawing.Size(178, 205); + this.GB_FunfestMissions.TabIndex = 5; + this.GB_FunfestMissions.TabStop = false; + this.GB_FunfestMissions.Text = "Funfest Missions"; + // + // CHK_FMNew + // + this.CHK_FMNew.Location = new System.Drawing.Point(6, 177); + this.CHK_FMNew.Name = "CHK_FMNew"; + this.CHK_FMNew.Size = new System.Drawing.Size(66, 24); + this.CHK_FMNew.TabIndex = 9; + this.CHK_FMNew.Text = "NEW"; + this.CHK_FMNew.UseVisualStyleBackColor = true; + this.CHK_FMNew.CheckedChanged += new System.EventHandler(this.CHK_FMNew_CheckedChanged); + // + // L_FMLocked + // + this.L_FMLocked.Location = new System.Drawing.Point(6, 127); + this.L_FMLocked.Name = "L_FMLocked"; + this.L_FMLocked.Size = new System.Drawing.Size(70, 23); + this.L_FMLocked.TabIndex = 8; + this.L_FMLocked.Text = "Locked"; + this.L_FMLocked.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // L_FMBestScore + // + this.L_FMBestScore.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.L_FMBestScore.Location = new System.Drawing.Point(65, 177); + this.L_FMBestScore.Name = "L_FMBestScore"; + this.L_FMBestScore.Size = new System.Drawing.Size(52, 23); + this.L_FMBestScore.TabIndex = 7; + this.L_FMBestScore.Text = "Score"; + this.L_FMBestScore.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // L_FMBestTotal + // + this.L_FMBestTotal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.L_FMBestTotal.Location = new System.Drawing.Point(4, 152); + this.L_FMBestTotal.Name = "L_FMBestTotal"; + this.L_FMBestTotal.Size = new System.Drawing.Size(113, 23); + this.L_FMBestTotal.TabIndex = 6; + this.L_FMBestTotal.Text = "Best Records Total"; + this.L_FMBestTotal.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // NUD_FMBestScore + // + this.NUD_FMBestScore.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_FMBestScore.Location = new System.Drawing.Point(123, 180); + this.NUD_FMBestScore.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUD_FMBestScore.Name = "NUD_FMBestScore"; + this.NUD_FMBestScore.Size = new System.Drawing.Size(49, 19); + this.NUD_FMBestScore.TabIndex = 5; + this.NUD_FMBestScore.ValueChanged += new System.EventHandler(this.NUD_FMBestScore_ValueChanged); + // + // NUD_FMBestTotal + // + this.NUD_FMBestTotal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.NUD_FMBestTotal.Location = new System.Drawing.Point(123, 155); + this.NUD_FMBestTotal.Maximum = new decimal(new int[] { + 9999, + 0, + 0, + 0}); + this.NUD_FMBestTotal.Name = "NUD_FMBestTotal"; + this.NUD_FMBestTotal.Size = new System.Drawing.Size(49, 19); + this.NUD_FMBestTotal.TabIndex = 4; + this.NUD_FMBestTotal.ValueChanged += new System.EventHandler(this.NUD_FMBestTotal_ValueChanged); + // + // CB_FMLevel + // + this.CB_FMLevel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CB_FMLevel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_FMLevel.FormattingEnabled = true; + this.CB_FMLevel.Location = new System.Drawing.Point(82, 129); + this.CB_FMLevel.Name = "CB_FMLevel"; + this.CB_FMLevel.Size = new System.Drawing.Size(90, 20); + this.CB_FMLevel.TabIndex = 3; + this.CB_FMLevel.SelectedIndexChanged += new System.EventHandler(this.CB_FMLevel_SelectedIndexChanged); + // + // L_FMUnlocked + // + this.L_FMUnlocked.Location = new System.Drawing.Point(6, 127); + this.L_FMUnlocked.Name = "L_FMUnlocked"; + this.L_FMUnlocked.Size = new System.Drawing.Size(70, 23); + this.L_FMUnlocked.TabIndex = 2; + this.L_FMUnlocked.Text = "Unlocked"; + this.L_FMUnlocked.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // B_FunfestMissions + // + this.B_FunfestMissions.Location = new System.Drawing.Point(6, 18); + this.B_FunfestMissions.Name = "B_FunfestMissions"; + this.B_FunfestMissions.Size = new System.Drawing.Size(144, 23); + this.B_FunfestMissions.TabIndex = 0; + this.B_FunfestMissions.Text = "Unlock All (w/o No.0)"; + this.B_FunfestMissions.UseVisualStyleBackColor = true; + this.B_FunfestMissions.Click += new System.EventHandler(this.B_FunfestMissions_Click); + // + // LB_FunfestMissions + // + this.LB_FunfestMissions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.LB_FunfestMissions.FormattingEnabled = true; + this.LB_FunfestMissions.ItemHeight = 12; + this.LB_FunfestMissions.Location = new System.Drawing.Point(6, 47); + this.LB_FunfestMissions.Name = "LB_FunfestMissions"; + this.LB_FunfestMissions.Size = new System.Drawing.Size(166, 76); + this.LB_FunfestMissions.TabIndex = 1; + this.LB_FunfestMissions.SelectedIndexChanged += new System.EventHandler(this.LB_FunfestMissions_SelectedIndexChanged); + // + // GB_PassPowers + // + this.GB_PassPowers.Controls.Add(this.CB_PassPower3); + this.GB_PassPowers.Controls.Add(this.CB_PassPower2); + this.GB_PassPowers.Controls.Add(this.CB_PassPower1); + this.GB_PassPowers.Location = new System.Drawing.Point(6, 80); + this.GB_PassPowers.Name = "GB_PassPowers"; + this.GB_PassPowers.Size = new System.Drawing.Size(137, 96); + this.GB_PassPowers.TabIndex = 2; + this.GB_PassPowers.TabStop = false; + this.GB_PassPowers.Text = "Pass Powers"; + // + // CB_PassPower3 + // + this.CB_PassPower3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CB_PassPower3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_PassPower3.FormattingEnabled = true; + this.CB_PassPower3.Location = new System.Drawing.Point(6, 70); + this.CB_PassPower3.Name = "CB_PassPower3"; + this.CB_PassPower3.Size = new System.Drawing.Size(125, 20); + this.CB_PassPower3.TabIndex = 2; + // + // CB_PassPower2 + // + this.CB_PassPower2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CB_PassPower2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_PassPower2.FormattingEnabled = true; + this.CB_PassPower2.Location = new System.Drawing.Point(6, 44); + this.CB_PassPower2.Name = "CB_PassPower2"; + this.CB_PassPower2.Size = new System.Drawing.Size(125, 20); + this.CB_PassPower2.TabIndex = 1; + // + // CB_PassPower1 + // + this.CB_PassPower1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CB_PassPower1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_PassPower1.FormattingEnabled = true; + this.CB_PassPower1.Location = new System.Drawing.Point(6, 18); + this.CB_PassPower1.Name = "CB_PassPower1"; + this.CB_PassPower1.Size = new System.Drawing.Size(125, 20); + this.CB_PassPower1.TabIndex = 0; // // SAV_Misc5 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(220, 351); + this.ClientSize = new System.Drawing.Size(365, 346); this.Controls.Add(this.TC_Misc); this.Controls.Add(this.B_Save); this.Controls.Add(this.B_Cancel); @@ -232,9 +720,24 @@ private void InitializeComponent() this.TC_Misc.ResumeLayout(false); this.TAB_Main.ResumeLayout(false); this.TAB_Main.PerformLayout(); + this.GB_KeySystem.ResumeLayout(false); this.GB_Roamer.ResumeLayout(false); this.GB_FlyDest.ResumeLayout(false); - this.GB_KeySystem.ResumeLayout(false); + this.TAB_Entralink.ResumeLayout(false); + this.GB_EntreeLevel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeWhiteEXP)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeBlackEXP)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeBlackLV)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_EntreeWhiteLV)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMMostParticipants)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMTopScores)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMCompleted)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMParticipated)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMHosted)).EndInit(); + this.GB_FunfestMissions.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMBestScore)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.NUD_FMBestTotal)).EndInit(); + this.GB_PassPowers.ResumeLayout(false); this.ResumeLayout(false); } @@ -257,5 +760,38 @@ private void InitializeComponent() private System.Windows.Forms.GroupBox GB_KeySystem; private System.Windows.Forms.Button B_AllKeys; private System.Windows.Forms.CheckedListBox CLB_KeySystem; + private System.Windows.Forms.TabPage TAB_Entralink; + private System.Windows.Forms.NumericUpDown NUD_EntreeWhiteLV; + private System.Windows.Forms.NumericUpDown NUD_EntreeBlackLV; + private System.Windows.Forms.Label L_FMParticipants; + private System.Windows.Forms.Label L_FMCompleted; + private System.Windows.Forms.Label L_FMParticipated; + private System.Windows.Forms.Label L_FMHosted; + private System.Windows.Forms.Label L_FMTopScore; + private System.Windows.Forms.GroupBox GB_EntreeLevel; + private System.Windows.Forms.Label L_EntreeBlack; + private System.Windows.Forms.Label L_EntreeWhite; + private System.Windows.Forms.NumericUpDown NUD_FMMostParticipants; + private System.Windows.Forms.NumericUpDown NUD_FMTopScores; + private System.Windows.Forms.NumericUpDown NUD_FMCompleted; + private System.Windows.Forms.NumericUpDown NUD_FMParticipated; + private System.Windows.Forms.NumericUpDown NUD_FMHosted; + private System.Windows.Forms.GroupBox GB_FunfestMissions; + private System.Windows.Forms.Label L_FMBestScore; + private System.Windows.Forms.Label L_FMBestTotal; + private System.Windows.Forms.NumericUpDown NUD_FMBestScore; + private System.Windows.Forms.NumericUpDown NUD_FMBestTotal; + private System.Windows.Forms.ComboBox CB_FMLevel; + private System.Windows.Forms.Label L_FMUnlocked; + private System.Windows.Forms.Button B_FunfestMissions; + private System.Windows.Forms.ListBox LB_FunfestMissions; + private System.Windows.Forms.GroupBox GB_PassPowers; + private System.Windows.Forms.ComboBox CB_PassPower3; + private System.Windows.Forms.ComboBox CB_PassPower2; + private System.Windows.Forms.ComboBox CB_PassPower1; + private System.Windows.Forms.Label L_FMLocked; + private System.Windows.Forms.CheckBox CHK_FMNew; + private System.Windows.Forms.NumericUpDown NUD_EntreeWhiteEXP; + private System.Windows.Forms.NumericUpDown NUD_EntreeBlackEXP; } } \ No newline at end of file diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs index 85c7dd680..2b094da69 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs @@ -14,6 +14,8 @@ public SAV_Misc5(SaveFile sav) SAV = (SAV5)(Origin = sav).Clone(); InitializeComponent(); readMain(); + if (SAV.B2W2) readEntralink(); + else TC_Misc.Controls.Remove(TAB_Entralink); } private void B_Cancel_Click(object sender, EventArgs e) @@ -24,6 +26,7 @@ private void B_Cancel_Click(object sender, EventArgs e) private void B_Save_Click(object sender, EventArgs e) { saveMain(); + if (SAV.B2W2) saveEntralink(); Origin.setData(SAV.Data, 0); Close(); } @@ -31,13 +34,13 @@ private void B_Save_Click(object sender, EventArgs e) private ComboBox[] cbr; private int ofsFly; private int[] FlyDestC; - protected int ofsRoamer = 0x21B00; - protected int ofsLibPass = 0x212BC; - protected uint keyLibPass = 0x0132B536; + private readonly int ofsRoamer = 0x21B00; + private readonly int ofsLibPass = 0x212BC; + private readonly uint keyLibPass = 0x0132B536; private uint valLibPass; private bool bLibPass; - protected int ofsKS = 0x25828; - protected uint[] keyKS = new uint[] { + private readonly int ofsKS = 0x25828; + private readonly uint[] keyKS = new uint[] { // 0x34525, 0x11963, // Selected City // 0x31239, 0x15657, 0x49589, // Selected Difficulty // 0x94525, 0x81963, 0x38569, // Selected Mystery Door @@ -208,5 +211,304 @@ private void B_AllKeys_Click(object sender, EventArgs e) for (int i = 0; i < CLB_KeySystem.Items.Count; i++) CLB_KeySystem.SetItemChecked(i, true); } + + private readonly int[][] FMUnlockConditions = new[] { + null, // 00 + null, // 01 + new[] { 2444, }, // 02 + null, // 03 + new[] { 2445, }, // 04 + null, // 05 + new[] { 2462, }, // 06 + new[] { 2452, 2476, }, // 07 + new[] { 2476, 2548, }, // 08 + new[] { 2447, }, new[] { 2447, }, // 09 + new[] { 2453, }, new[] { 2453, }, // 10 + new[] { 2504, }, // 11 + new[] { 2457, 2507, }, // 12 + new[] { 2458, 2478, }, // 13 + new[] { 2456, 2508, }, // 14 + new[] { 2448, }, new[] { 2448, }, // 15 + new[] { 2549, }, // 16 + new[] { 2449, }, // 17 + new[] { 2479, 2513, }, // 18 + new[] { 2479, 2550, }, // 19 + new[] { 2481, }, // 20 + new[] { 2459, }, // 21 + new[] { 2454, }, // 22 + new[] { 2551, }, // 23 + new[] { 2400, }, // 24 + new[] { 2400, }, // 25 + new[] { 2400, }, new[] { 2400, }, // 26 + new[] { 2400, }, new[] { 2400, }, // 27 + new[] { 2400, }, // 28 + new[] { 2400, 2460, }, // 29 + new[] { 2400, }, // 30 + new[] { 2400, 2461, }, new[] { 2400, 2461, }, // 31 + new[] { 2437, }, // 32 + new[] { 2450, }, // 33 + new[] { 2451, }, // 34 + new[] { 2455, }, // 35 + new[] { 105, }, // 36 + new[] { 2400, }, // 37 + new[] { 2557, }, // 38 + }; + private bool editing; + private readonly int ofsFM = 0x25900; + private readonly ToolTip TipExpB = new ToolTip(), TipExpW = new ToolTip(); + private NumericUpDown[] nudaE, nudaF; + private ComboBox[] cba; + private ToolTip[] ta; + private void readEntralink() + { + editing = true; + nudaE = new[] { NUD_EntreeWhiteLV, NUD_EntreeWhiteEXP, NUD_EntreeBlackLV, NUD_EntreeBlackEXP }; + ushort u; + for (int i = 0; i < 2; i++) + { + u = BitConverter.ToUInt16(SAV.Data, 0x2120C + (i << 1)); + nudaE[i << 1].Value = u > 999 ? 999 : u; + nudaE[(i << 1) + 1].Value = SAV.Data[ofsFM + 0xF8 + i]; + } + + string[] PassPowerA = new[] { + "(none)", + "-1 Encounter", "-2 Encounter", "-3 Encounter", "+1 Encounter", "+2 Encounter", "+3 Encounter", + "+1 Hatching", "+2 Hatching", "+3 Hatching", "S Hatching", + "+1 Befriending", "+2 Befriending", "+3 Befriending", "S Befriending", + "+1 Bargain", "+2 Bargain", "+3 Bargain", "S Bargain", + "+1 HP(20)", "+2 HP(50)", "+3 HP(200)", "+1 PP(5)", "+2 PP(10)", "+3 PP(ALL)", + "-1 Exp.", "-2 Exp.", "-3 Exp.", "+1 Exp.", "+2 Exp.", "+3 Exp.", "S Exp.", + "+1 PrizeMoney", "+2 PrizeMoney", "+3 PrizeMoney", "S PrizeMoney", + "+1 Capture", "+2 Capture", "+3 Capture", "S Capture", + "+1 Search", "+2 Search", "+3 Search", "S Search", + "+1 HiddenGrotto", "+2 HiddenGrotto", "+3 HiddenGrotto", "S HiddenGrotto", + "+1 Charm", "+2 Charm", "+3 Charm", "S Charm", + "(HP Full Recovery)", "(MAX Hatching)", "(MAX Bargain)", "(MAX Befriending)", "(MAX Exp.)", "(MAX PrizeMoney)", "(MAX Capture)", "(MAX Search)", "(MAX HiddenGrotto)", "(MAX Charm)", + }; + int[] PassPowerC = new[] { + 48, + 3, 4, 5, 0, 1, 2, + 6, 7, 8, 33, + 9, 10, 11, 35, + 12, 13, 14, 34, + 15, 16, 17, 18, 19, 20, + 24, 25, 26, 21, 22, 23, 36, + 27, 28, 29, 37, + 30, 31, 32, 38, + 49, 50, 51, 58, + 52, 53, 54, 60, + 55, 56, 57, 62, + 39, 40, 41, 42, 43, 44, 45, 59, 61, 63, + }; + ComboItem[] PassPowerB = PassPowerA.Zip(PassPowerC, (f, s) => new ComboItem { Text = f, Value = s, }).ToArray(); + cba = new[] { CB_PassPower1, CB_PassPower2, CB_PassPower3 }; + for(int i = 0; i < cba.Length; i++) + { + cba[i].Items.Clear(); + cba[i].DisplayMember = "Text"; + cba[i].ValueMember = "Value"; + cba[i].DataSource = new BindingSource(PassPowerB, null); + cba[i].SelectedValue = (int)SAV.Data[0x213A0 + i]; + } + + nudaF = new[] { NUD_FMHosted, NUD_FMParticipated, NUD_FMCompleted, NUD_FMTopScores }; + for (int i = 0; i < nudaF.Length; i++) + { + u = BitConverter.ToUInt16(SAV.Data, ofsFM + 0xF0 + (i << 1)); + nudaF[i].Value = u > 9999 ? 9999 : u; + } + NUD_FMMostParticipants.Value = SAV.Data[ofsFM + 0xFA]; + + string[] FMTitles = new[] { + "00 The First Berry Search!", + "01 Collect Berries!", + "02 Find Lost Items!", + "03 Find Lost Boys!", + "04 Enjoy Shopping!", + "05 Find Audino!", + "06 Search for 3 Pokemon!", + "07 Train with Martial Artists!", + "08 Sparring with 10 Trainers!", + "09B Get Rich Quick!", + "09W Treasure Hunting!", + "10B Exciting Trading!", + "10W Exhilarating Trading!", + "11 Find Emolga!", + "12 Wings Falling on the Drawbridge!", + "13 Find Treasures!", + "14 Mushrooms Hide-and-Seek!", + "15B Find Mysterious Ores!", + "15W Find Shining Ores!", + "16 The 2 Lost Treasures", + "17 Big Harvest of Berries!", + "18 Ring the Bell...", + "19 The Bell that Rings 3 Times", + "20 Path to an Ace!", + "21 Shocking Shopping!", + "22 Memory Training!", + "23 Push the Limit of Your Memory...", + "24 Find Rustling Grass!", + "25 Find Shards!", + "26B Forgotten Lost Items", + "26W Not-Found Lost Items", + "27B What is the Best Price?", + "27W What is the Real Price?", + "28 Give me the Item!", + "29 Do a Great Trade-Up!", + "30 Search Hidden Grottes!", + "31B Noisy Hidden Grottes!", + "31W Quiet Hidden Grottes!", + "32 Fishing Competition!", + "33 Mulch Collector!", + "34 Where are Fluttering Hearts?", + "35 Rock-Paper-Scissors Competition!", + "36 Take a Walk with Eggs!", + "37 Find Steelix!", + "38 The Berry-Hunting Adventure!", + }; + LB_FunfestMissions.Items.Clear(); + LB_FunfestMissions.Items.AddRange(FMTitles); + + CB_FMLevel.Items.Clear(); + CB_FMLevel.Items.AddRange(new string[] { "Lv.1", "Lv.2 +", "Lv.3 ++", "Lv.3 +++", }); + ta = new[] { TipExpW, TipExpB }; + setNudMax(); + setEntreeExpTooltip(); + editing = false; + } + private void saveEntralink() + { + for (int i = 0; i < 2; i++) + { + BitConverter.GetBytes((ushort)nudaE[i << 1].Value).CopyTo(SAV.Data, 0x2120C + (i << 1)); + SAV.Data[ofsFM + 0xF8 + i] = (byte)nudaE[(i << 1) + 1].Value; + } + for (int i = 0, j; i < cba.Length; i++) + { + if (cba[i].SelectedIndex < 0) continue; + j = (int)cba[i].SelectedValue; + SAV.Data[0x213A0 + i] = (byte)j; + } + for (int i = 0; i < nudaF.Length; i++) + BitConverter.GetBytes((ushort)nudaF[i].Value).CopyTo(SAV.Data, ofsFM + 0xF0 + (i << 1)); + SAV.Data[ofsFM + 0xFA] = (byte)NUD_FMMostParticipants.Value; + } + private void setEntreeExpTooltip(bool? isBlack = null) + { + int lv; + int exp; + string tip0; + for (int i = 0; i < 2; i++) + { + if (isBlack == true) continue; + lv = (int)nudaE[i << 1].Value; + if (lv < 9) + exp = (lv * (lv + 1) * 5) / 2; + else + exp = (lv - 9) * 50 + 225; + exp += (int)nudaE[(i << 1) + 1].Value; + tip0 = (i == 0 ? "White" : "Black") + " LV " + lv.ToString() + Environment.NewLine + " Exp.Points: " + exp.ToString() + Environment.NewLine + " To Next Lv: " + ((lv == 999) ? "-" : (nudaE[(i << 1) + 1].Maximum - nudaE[(i << 1) + 1].Value + 1).ToString()); + ta[i].RemoveAll(); + ta[i].SetToolTip(nudaE[i << 1], tip0); + ta[i].SetToolTip(nudaE[(i << 1) + 1], tip0); + } + } + private void setNudMax(bool? isBlack = null) + { + int lv; + int expmax; + for (int i = 0; i < 2; i++) + { + if (isBlack == true) continue; + lv = (int)nudaE[i << 1].Value; + expmax = lv > 8 ? 49 : lv * 5 + 4; + if (nudaE[(i << 1) + 1].Value > expmax) nudaE[(i << 1) + 1].Value = expmax; + nudaE[(i << 1) + 1].Maximum = expmax; + } + } + private void setFMVal(int ofsB, int len, uint val) + { + int s = LB_FunfestMissions.SelectedIndex; + if (s < 0 || s >= FMUnlockConditions.Length) return; + BitConverter.GetBytes(BitConverter.ToUInt32(SAV.Data, ofsFM + (s << 2)) & ~(~(uint)0 >> (32 - len) << ofsB) | val << ofsB).CopyTo(SAV.Data, ofsFM + (s << 2)); + } + private void LB_FunfestMissions_SelectedIndexChanged(object sender, EventArgs e) + { + int s = LB_FunfestMissions.SelectedIndex; + if (s < 0 || s >= FMUnlockConditions.Length) return; + editing = true; + bool FirstMissionCleared = (SAV.Data[0x2025E + (2438 >> 3)] & 1 << (2438 & 7)) != 0; + L_FMUnlocked.Visible = s == 0 ? !FirstMissionCleared : FirstMissionCleared && (FMUnlockConditions[s]?.All(v => (SAV.Data[0x2025E + (v >> 3)] & 1 << (v & 7)) != 0)) != false; + L_FMLocked.Visible = !L_FMUnlocked.Visible; + uint u = BitConverter.ToUInt32(SAV.Data, ofsFM + (s << 2)); + CHK_FMNew.Checked = u >> 31 != 0; + CB_FMLevel.SelectedIndex = (int)(u << 2 >> 30); + int i = (int)(u << 4 >> 18); + NUD_FMBestScore.Value = i > 9999 ? 9999 : i; + i = (int)(u & 0x3FF); + NUD_FMBestTotal.Value = i > 9999 ? 9999 : i; + editing = false; + } + + private void CHK_FMNew_CheckedChanged(object sender, EventArgs e) + { + if (editing) return; + setFMVal(31, 1, (uint)(CHK_FMNew.Checked ? 1 : 0)); + } + + private void CB_FMLevel_SelectedIndexChanged(object sender, EventArgs e) + { + if (editing) return; + setFMVal(28, 3, (uint)(CB_FMLevel.SelectedIndex & 3)); + } + + private void NUD_FMBestScore_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + setFMVal(14, 14, (uint)NUD_FMBestScore.Value); + } + + private void NUD_FMBestTotal_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + setFMVal(0, 14, (uint)NUD_FMBestTotal.Value); + } + + private void B_FunfestMissions_Click(object sender, EventArgs e) + { + SAV.Data[0x2025E + (2438 >> 3)] |= (byte)(1 << (2438 & 7)); + foreach (int[] ia in FMUnlockConditions) + for (int i = 0; i < ia?.Length; i++) + SAV.Data[0x2025E + (ia[i] >> 3)] |= (byte)(1 << (ia[i] & 7)); + L_FMUnlocked.Visible = true; + L_FMLocked.Visible = false; + } + + private void NUD_EntreeBlackLV_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + setNudMax(isBlack: true); + setEntreeExpTooltip(isBlack: true); + } + + private void NUD_EntreeWhiteLV_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + setNudMax(isBlack: false); + setEntreeExpTooltip(isBlack: false); + } + + private void NUD_EntreeBlackEXP_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + setEntreeExpTooltip(isBlack: true); + } + + private void NUD_EntreeWhiteEXP_ValueChanged(object sender, EventArgs e) + { + if (editing) return; + setEntreeExpTooltip(isBlack: false); + } } }