add MailBox Editor

I just wanted to fix PK3 heldMailID.
This commit is contained in:
pokecal 2017-12-03 07:20:56 +09:00
parent ff63cf4fce
commit c4ca3aba75
8 changed files with 1876 additions and 0 deletions

View file

@ -151,6 +151,7 @@ namespace PKHeX.Core
public override int Stat_SPE { get => BitConverter.ToUInt16(Data, 0x5E); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x5E); } public override int Stat_SPE { get => BitConverter.ToUInt16(Data, 0x5E); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x5E); }
public override int Stat_SPA { get => BitConverter.ToUInt16(Data, 0x60); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x60); } public override int Stat_SPA { get => BitConverter.ToUInt16(Data, 0x60); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x60); }
public override int Stat_SPD { get => BitConverter.ToUInt16(Data, 0x62); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x62); } public override int Stat_SPD { get => BitConverter.ToUInt16(Data, 0x62); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x62); }
public sbyte HeldMailID { get => (sbyte)Data[0x55]; set => Data[0x55] = (byte)value; }
// Generated Attributes // Generated Attributes
public override int AbilityNumber { get => 1 << (AbilityBit ? 1 : 0); set => AbilityBit = value > 1; } // 1/2 -> 0/1 public override int AbilityNumber { get => 1 << (AbilityBit ? 1 : 0); set => AbilityBit = value > 1; } // 1/2 -> 0/1

View file

@ -324,6 +324,7 @@ namespace PKHeX.Core
public override int Stat_SPE { get => BitConverter.ToUInt16(Data, 0x96); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x96); } public override int Stat_SPE { get => BitConverter.ToUInt16(Data, 0x96); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x96); }
public override int Stat_SPA { get => BitConverter.ToUInt16(Data, 0x98); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x98); } public override int Stat_SPA { get => BitConverter.ToUInt16(Data, 0x98); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x98); }
public override int Stat_SPD { get => BitConverter.ToUInt16(Data, 0x9A); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x9A); } public override int Stat_SPD { get => BitConverter.ToUInt16(Data, 0x9A); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x9A); }
public byte[] HeldMailData { get => Data.Skip(0x9C).Take(0x38).ToArray(); set => value.CopyTo(Data, 0x9C); }
public override int PSV => (int)((PID >> 16 ^ PID & 0xFFFF) >> 3); public override int PSV => (int)((PID >> 16 ^ PID & 0xFFFF) >> 3);
public override int TSV => (TID ^ SID) >> 3; public override int TSV => (TID ^ SID) >> 3;

View file

@ -112,6 +112,7 @@
this.B_OpenUGSEditor = new System.Windows.Forms.Button(); this.B_OpenUGSEditor = new System.Windows.Forms.Button();
this.B_Roamer = new System.Windows.Forms.Button(); this.B_Roamer = new System.Windows.Forms.Button();
this.B_FestivalPlaza = new System.Windows.Forms.Button(); this.B_FestivalPlaza = new System.Windows.Forms.Button();
this.B_MailBox = new System.Windows.Forms.Button();
this.tabBoxMulti.SuspendLayout(); this.tabBoxMulti.SuspendLayout();
this.Tab_Box.SuspendLayout(); this.Tab_Box.SuspendLayout();
this.Tab_PartyBattle.SuspendLayout(); this.Tab_PartyBattle.SuspendLayout();
@ -786,6 +787,7 @@
this.FLP_SAVtools.Controls.Add(this.B_OpenUGSEditor); this.FLP_SAVtools.Controls.Add(this.B_OpenUGSEditor);
this.FLP_SAVtools.Controls.Add(this.B_Roamer); this.FLP_SAVtools.Controls.Add(this.B_Roamer);
this.FLP_SAVtools.Controls.Add(this.B_FestivalPlaza); this.FLP_SAVtools.Controls.Add(this.B_FestivalPlaza);
this.FLP_SAVtools.Controls.Add(this.B_MailBox);
this.FLP_SAVtools.Location = new System.Drawing.Point(6, 10); this.FLP_SAVtools.Location = new System.Drawing.Point(6, 10);
this.FLP_SAVtools.Name = "FLP_SAVtools"; this.FLP_SAVtools.Name = "FLP_SAVtools";
this.FLP_SAVtools.Size = new System.Drawing.Size(297, 88); this.FLP_SAVtools.Size = new System.Drawing.Size(297, 88);
@ -1044,6 +1046,16 @@
this.B_FestivalPlaza.UseVisualStyleBackColor = true; this.B_FestivalPlaza.UseVisualStyleBackColor = true;
this.B_FestivalPlaza.Click += new System.EventHandler(this.B_FestivalPlaza_Click); this.B_FestivalPlaza.Click += new System.EventHandler(this.B_FestivalPlaza_Click);
// //
// B_MailBox
//
this.B_MailBox.Location = new System.Drawing.Point(96, 235);
this.B_MailBox.Name = "B_MailBox";
this.B_MailBox.Size = new System.Drawing.Size(87, 23);
this.B_MailBox.TabIndex = 32;
this.B_MailBox.Text = "Mail Box";
this.B_MailBox.UseVisualStyleBackColor = true;
this.B_MailBox.Click += new System.EventHandler(this.B_MailBox_Click);
//
// SAVEditor // SAVEditor
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
@ -1181,5 +1193,6 @@
private System.Windows.Forms.Button B_OpenUGSEditor; private System.Windows.Forms.Button B_OpenUGSEditor;
private System.Windows.Forms.Button B_Roamer; private System.Windows.Forms.Button B_Roamer;
private System.Windows.Forms.Button B_FestivalPlaza; private System.Windows.Forms.Button B_FestivalPlaza;
private System.Windows.Forms.Button B_MailBox;
} }
} }

View file

@ -1010,6 +1010,7 @@ namespace PKHeX.WinForms.Controls
B_OpenRTCEditor.Enabled = sav.RS || sav.E || sav.Generation == 2; B_OpenRTCEditor.Enabled = sav.RS || sav.E || sav.Generation == 2;
B_OpenUGSEditor.Enabled = sav.DP || sav.Pt; B_OpenUGSEditor.Enabled = sav.DP || sav.Pt;
B_FestivalPlaza.Enabled = sav.Generation == 7; B_FestivalPlaza.Enabled = sav.Generation == 7;
B_MailBox.Enabled = sav.Generation >= 2 && sav.Generation <= 4;
} }
GB_SAVtools.Visible = sav.Exportable && FLP_SAVtools.Controls.Cast<Control>().Any(c => c.Enabled); GB_SAVtools.Visible = sav.Exportable && FLP_SAVtools.Controls.Cast<Control>().Any(c => c.Enabled);
foreach (Control c in FLP_SAVtools.Controls.Cast<Control>()) foreach (Control c in FLP_SAVtools.Controls.Cast<Control>())
@ -1146,5 +1147,10 @@ namespace PKHeX.WinForms.Controls
if (SAV.Generation == 7) if (SAV.Generation == 7)
new SAV_FestivalPlaza(SAV).ShowDialog(); new SAV_FestivalPlaza(SAV).ShowDialog();
} }
private void B_MailBox_Click(object sender, EventArgs e)
{
new SAV_MailBox(SAV).ShowDialog();
ResetParty();
}
} }
} }

View file

@ -498,6 +498,12 @@
<Compile Include="Subforms\Save Editors\SAV_Inventory.Designer.cs"> <Compile Include="Subforms\Save Editors\SAV_Inventory.Designer.cs">
<DependentUpon>SAV_Inventory.cs</DependentUpon> <DependentUpon>SAV_Inventory.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Subforms\Save Editors\SAV_MailBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Subforms\Save Editors\SAV_MailBox.Designer.cs">
<DependentUpon>SAV_MailBox.cs</DependentUpon>
</Compile>
<Compile Include="Subforms\Save Editors\SAV_SimplePokedex.cs"> <Compile Include="Subforms\Save Editors\SAV_SimplePokedex.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -712,6 +718,9 @@
<EmbeddedResource Include="Subforms\Save Editors\SAV_Inventory.resx"> <EmbeddedResource Include="Subforms\Save Editors\SAV_Inventory.resx">
<DependentUpon>SAV_Inventory.cs</DependentUpon> <DependentUpon>SAV_Inventory.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Subforms\Save Editors\SAV_MailBox.resx">
<DependentUpon>SAV_MailBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Subforms\Save Editors\SAV_SimplePokedex.resx"> <EmbeddedResource Include="Subforms\Save Editors\SAV_SimplePokedex.resx">
<DependentUpon>SAV_SimplePokedex.cs</DependentUpon> <DependentUpon>SAV_SimplePokedex.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>

View file

@ -0,0 +1,999 @@
namespace PKHeX.WinForms
{
partial class SAV_MailBox
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SAV_MailBox));
this.B_Cancel = new System.Windows.Forms.Button();
this.B_Save = new System.Windows.Forms.Button();
this.LB_PartyHeld = new System.Windows.Forms.ListBox();
this.LB_PCBOX = new System.Windows.Forms.ListBox();
this.B_Delete = new System.Windows.Forms.Button();
this.L_BoxSize = new System.Windows.Forms.Label();
this.TB_MessageBody21 = new System.Windows.Forms.TextBox();
this.TB_MessageBody22 = new System.Windows.Forms.TextBox();
this.TB_AuthorName = new System.Windows.Forms.TextBox();
this.NUD_AuthorTID = new System.Windows.Forms.NumericUpDown();
this.CB_AppearPKM1 = new System.Windows.Forms.ComboBox();
this.CB_MailType = new System.Windows.Forms.ComboBox();
this.NUD_AuthorSID = new System.Windows.Forms.NumericUpDown();
this.NUD_BoxSize = new System.Windows.Forms.NumericUpDown();
this.GB_MessageTB = new System.Windows.Forms.GroupBox();
this.GB_MessageNUD = new System.Windows.Forms.GroupBox();
this.NUD_Message23 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message13 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message03 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message22 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message21 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message20 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message12 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message11 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message10 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message02 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message01 = new System.Windows.Forms.NumericUpDown();
this.NUD_Message00 = new System.Windows.Forms.NumericUpDown();
this.GB_Author = new System.Windows.Forms.GroupBox();
this.CB_AuthorVersion = new System.Windows.Forms.ComboBox();
this.CB_AuthorLang = new System.Windows.Forms.ComboBox();
this.Label_OTGender = new System.Windows.Forms.Label();
this.L_MailType = new System.Windows.Forms.Label();
this.L_AppearPKM = new System.Windows.Forms.Label();
this.GB_PKM = new System.Windows.Forms.GroupBox();
this.L_HeldItem6 = new System.Windows.Forms.Label();
this.NUD_MailID6 = new System.Windows.Forms.NumericUpDown();
this.L_PKM6 = new System.Windows.Forms.Label();
this.L_HeldItem5 = new System.Windows.Forms.Label();
this.NUD_MailID5 = new System.Windows.Forms.NumericUpDown();
this.L_PKM5 = new System.Windows.Forms.Label();
this.L_HeldItem4 = new System.Windows.Forms.Label();
this.NUD_MailID4 = new System.Windows.Forms.NumericUpDown();
this.L_PKM4 = new System.Windows.Forms.Label();
this.L_HeldItem3 = new System.Windows.Forms.Label();
this.NUD_MailID3 = new System.Windows.Forms.NumericUpDown();
this.L_PKM3 = new System.Windows.Forms.Label();
this.L_HeldItem2 = new System.Windows.Forms.Label();
this.NUD_MailID2 = new System.Windows.Forms.NumericUpDown();
this.L_PKM2 = new System.Windows.Forms.Label();
this.L_HeldItem1 = new System.Windows.Forms.Label();
this.NUD_MailID1 = new System.Windows.Forms.NumericUpDown();
this.L_PKM1 = new System.Windows.Forms.Label();
this.L_PartyHeld = new System.Windows.Forms.Label();
this.L_PCBOX = new System.Windows.Forms.Label();
this.CB_AppearPKM2 = new System.Windows.Forms.ComboBox();
this.CB_AppearPKM3 = new System.Windows.Forms.ComboBox();
((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorTID)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorSID)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_BoxSize)).BeginInit();
this.GB_MessageTB.SuspendLayout();
this.GB_MessageNUD.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message23)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message13)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message03)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message22)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message21)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message20)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message12)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message11)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message10)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message02)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message01)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message00)).BeginInit();
this.GB_Author.SuspendLayout();
this.GB_PKM.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID6)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID1)).BeginInit();
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(425, 371);
this.B_Cancel.Name = "B_Cancel";
this.B_Cancel.Size = new System.Drawing.Size(75, 23);
this.B_Cancel.TabIndex = 0;
this.B_Cancel.Text = "Cancel";
this.B_Cancel.UseVisualStyleBackColor = true;
this.B_Cancel.Click += new System.EventHandler(this.B_Cancel_Click);
//
// 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(509, 371);
this.B_Save.Name = "B_Save";
this.B_Save.Size = new System.Drawing.Size(75, 23);
this.B_Save.TabIndex = 1;
this.B_Save.Text = "Save";
this.B_Save.UseVisualStyleBackColor = true;
this.B_Save.Click += new System.EventHandler(this.B_Save_Click);
//
// LB_PartyHeld
//
this.LB_PartyHeld.FormattingEnabled = true;
this.LB_PartyHeld.IntegralHeight = false;
this.LB_PartyHeld.ItemHeight = 12;
this.LB_PartyHeld.Location = new System.Drawing.Point(15, 36);
this.LB_PartyHeld.Name = "LB_PartyHeld";
this.LB_PartyHeld.Size = new System.Drawing.Size(120, 82);
this.LB_PartyHeld.TabIndex = 2;
this.LB_PartyHeld.SelectedIndexChanged += new System.EventHandler(this.EntryControl);
//
// LB_PCBOX
//
this.LB_PCBOX.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.LB_PCBOX.FormattingEnabled = true;
this.LB_PCBOX.IntegralHeight = false;
this.LB_PCBOX.ItemHeight = 12;
this.LB_PCBOX.Location = new System.Drawing.Point(15, 154);
this.LB_PCBOX.Name = "LB_PCBOX";
this.LB_PCBOX.Size = new System.Drawing.Size(120, 190);
this.LB_PCBOX.TabIndex = 3;
this.LB_PCBOX.SelectedIndexChanged += new System.EventHandler(this.EntryControl);
//
// B_Delete
//
this.B_Delete.Location = new System.Drawing.Point(330, 15);
this.B_Delete.Name = "B_Delete";
this.B_Delete.Size = new System.Drawing.Size(75, 23);
this.B_Delete.TabIndex = 4;
this.B_Delete.Text = "Delete";
this.B_Delete.UseVisualStyleBackColor = true;
this.B_Delete.Click += new System.EventHandler(this.B_Delete_Click);
//
// L_BoxSize
//
this.L_BoxSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.L_BoxSize.Location = new System.Drawing.Point(12, 350);
this.L_BoxSize.Name = "L_BoxSize";
this.L_BoxSize.Size = new System.Drawing.Size(129, 18);
this.L_BoxSize.TabIndex = 5;
this.L_BoxSize.Text = "MailBox (PC) Served:";
this.L_BoxSize.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// TB_MessageBody21
//
this.TB_MessageBody21.Location = new System.Drawing.Point(9, 21);
this.TB_MessageBody21.MaxLength = 16;
this.TB_MessageBody21.Name = "TB_MessageBody21";
this.TB_MessageBody21.Size = new System.Drawing.Size(160, 19);
this.TB_MessageBody21.TabIndex = 7;
this.TB_MessageBody21.Text = "MMMMMMMMMMMMMMMM";
//
// TB_MessageBody22
//
this.TB_MessageBody22.Location = new System.Drawing.Point(9, 49);
this.TB_MessageBody22.MaxLength = 16;
this.TB_MessageBody22.Name = "TB_MessageBody22";
this.TB_MessageBody22.Size = new System.Drawing.Size(160, 19);
this.TB_MessageBody22.TabIndex = 8;
this.TB_MessageBody22.Text = "MMMMMMMMMMMMMMMM";
//
// TB_AuthorName
//
this.TB_AuthorName.Location = new System.Drawing.Point(9, 21);
this.TB_AuthorName.MaxLength = 7;
this.TB_AuthorName.Name = "TB_AuthorName";
this.TB_AuthorName.Size = new System.Drawing.Size(83, 19);
this.TB_AuthorName.TabIndex = 9;
this.TB_AuthorName.Text = "MMMMMMM";
//
// NUD_AuthorTID
//
this.NUD_AuthorTID.Location = new System.Drawing.Point(9, 49);
this.NUD_AuthorTID.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_AuthorTID.Name = "NUD_AuthorTID";
this.NUD_AuthorTID.Size = new System.Drawing.Size(54, 19);
this.NUD_AuthorTID.TabIndex = 10;
this.NUD_AuthorTID.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// CB_AppearPKM1
//
this.CB_AppearPKM1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CB_AppearPKM1.FormattingEnabled = true;
this.CB_AppearPKM1.Location = new System.Drawing.Point(235, 276);
this.CB_AppearPKM1.Name = "CB_AppearPKM1";
this.CB_AppearPKM1.Size = new System.Drawing.Size(107, 20);
this.CB_AppearPKM1.TabIndex = 11;
//
// CB_MailType
//
this.CB_MailType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CB_MailType.FormattingEnabled = true;
this.CB_MailType.Location = new System.Drawing.Point(235, 247);
this.CB_MailType.Name = "CB_MailType";
this.CB_MailType.Size = new System.Drawing.Size(107, 20);
this.CB_MailType.TabIndex = 12;
//
// NUD_AuthorSID
//
this.NUD_AuthorSID.Location = new System.Drawing.Point(72, 49);
this.NUD_AuthorSID.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_AuthorSID.Name = "NUD_AuthorSID";
this.NUD_AuthorSID.Size = new System.Drawing.Size(54, 19);
this.NUD_AuthorSID.TabIndex = 13;
this.NUD_AuthorSID.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_BoxSize
//
this.NUD_BoxSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.NUD_BoxSize.Location = new System.Drawing.Point(90, 371);
this.NUD_BoxSize.Maximum = new decimal(new int[] {
10,
0,
0,
0});
this.NUD_BoxSize.Name = "NUD_BoxSize";
this.NUD_BoxSize.Size = new System.Drawing.Size(37, 19);
this.NUD_BoxSize.TabIndex = 14;
this.NUD_BoxSize.Value = new decimal(new int[] {
10,
0,
0,
0});
this.NUD_BoxSize.ValueChanged += new System.EventHandler(this.NUD_BoxSize_ValueChanged);
//
// GB_MessageTB
//
this.GB_MessageTB.Controls.Add(this.TB_MessageBody21);
this.GB_MessageTB.Controls.Add(this.TB_MessageBody22);
this.GB_MessageTB.Location = new System.Drawing.Point(144, 47);
this.GB_MessageTB.Name = "GB_MessageTB";
this.GB_MessageTB.Size = new System.Drawing.Size(178, 77);
this.GB_MessageTB.TabIndex = 15;
this.GB_MessageTB.TabStop = false;
this.GB_MessageTB.Text = "Message";
//
// GB_MessageNUD
//
this.GB_MessageNUD.Controls.Add(this.NUD_Message23);
this.GB_MessageNUD.Controls.Add(this.NUD_Message13);
this.GB_MessageNUD.Controls.Add(this.NUD_Message03);
this.GB_MessageNUD.Controls.Add(this.NUD_Message22);
this.GB_MessageNUD.Controls.Add(this.NUD_Message21);
this.GB_MessageNUD.Controls.Add(this.NUD_Message20);
this.GB_MessageNUD.Controls.Add(this.NUD_Message12);
this.GB_MessageNUD.Controls.Add(this.NUD_Message11);
this.GB_MessageNUD.Controls.Add(this.NUD_Message10);
this.GB_MessageNUD.Controls.Add(this.NUD_Message02);
this.GB_MessageNUD.Controls.Add(this.NUD_Message01);
this.GB_MessageNUD.Controls.Add(this.NUD_Message00);
this.GB_MessageNUD.Location = new System.Drawing.Point(144, 47);
this.GB_MessageNUD.Name = "GB_MessageNUD";
this.GB_MessageNUD.Size = new System.Drawing.Size(261, 105);
this.GB_MessageNUD.TabIndex = 16;
this.GB_MessageNUD.TabStop = false;
this.GB_MessageNUD.Text = "Message";
//
// NUD_Message23
//
this.NUD_Message23.Location = new System.Drawing.Point(198, 77);
this.NUD_Message23.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message23.Name = "NUD_Message23";
this.NUD_Message23.Size = new System.Drawing.Size(54, 19);
this.NUD_Message23.TabIndex = 11;
this.NUD_Message23.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message13
//
this.NUD_Message13.Location = new System.Drawing.Point(198, 49);
this.NUD_Message13.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message13.Name = "NUD_Message13";
this.NUD_Message13.Size = new System.Drawing.Size(54, 19);
this.NUD_Message13.TabIndex = 7;
this.NUD_Message13.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message03
//
this.NUD_Message03.Location = new System.Drawing.Point(198, 21);
this.NUD_Message03.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message03.Name = "NUD_Message03";
this.NUD_Message03.Size = new System.Drawing.Size(54, 19);
this.NUD_Message03.TabIndex = 3;
this.NUD_Message03.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message22
//
this.NUD_Message22.Location = new System.Drawing.Point(135, 77);
this.NUD_Message22.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message22.Name = "NUD_Message22";
this.NUD_Message22.Size = new System.Drawing.Size(54, 19);
this.NUD_Message22.TabIndex = 10;
this.NUD_Message22.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message21
//
this.NUD_Message21.Location = new System.Drawing.Point(72, 77);
this.NUD_Message21.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message21.Name = "NUD_Message21";
this.NUD_Message21.Size = new System.Drawing.Size(54, 19);
this.NUD_Message21.TabIndex = 9;
this.NUD_Message21.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message20
//
this.NUD_Message20.Location = new System.Drawing.Point(9, 77);
this.NUD_Message20.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message20.Name = "NUD_Message20";
this.NUD_Message20.Size = new System.Drawing.Size(54, 19);
this.NUD_Message20.TabIndex = 8;
this.NUD_Message20.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message12
//
this.NUD_Message12.Location = new System.Drawing.Point(135, 49);
this.NUD_Message12.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message12.Name = "NUD_Message12";
this.NUD_Message12.Size = new System.Drawing.Size(54, 19);
this.NUD_Message12.TabIndex = 6;
this.NUD_Message12.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message11
//
this.NUD_Message11.Location = new System.Drawing.Point(72, 49);
this.NUD_Message11.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message11.Name = "NUD_Message11";
this.NUD_Message11.Size = new System.Drawing.Size(54, 19);
this.NUD_Message11.TabIndex = 5;
this.NUD_Message11.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message10
//
this.NUD_Message10.Location = new System.Drawing.Point(9, 49);
this.NUD_Message10.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message10.Name = "NUD_Message10";
this.NUD_Message10.Size = new System.Drawing.Size(54, 19);
this.NUD_Message10.TabIndex = 4;
this.NUD_Message10.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message02
//
this.NUD_Message02.Location = new System.Drawing.Point(135, 21);
this.NUD_Message02.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message02.Name = "NUD_Message02";
this.NUD_Message02.Size = new System.Drawing.Size(54, 19);
this.NUD_Message02.TabIndex = 2;
this.NUD_Message02.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message01
//
this.NUD_Message01.Location = new System.Drawing.Point(72, 21);
this.NUD_Message01.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message01.Name = "NUD_Message01";
this.NUD_Message01.Size = new System.Drawing.Size(54, 19);
this.NUD_Message01.TabIndex = 1;
this.NUD_Message01.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// NUD_Message00
//
this.NUD_Message00.Location = new System.Drawing.Point(9, 21);
this.NUD_Message00.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.NUD_Message00.Name = "NUD_Message00";
this.NUD_Message00.Size = new System.Drawing.Size(54, 19);
this.NUD_Message00.TabIndex = 0;
this.NUD_Message00.Value = new decimal(new int[] {
65535,
0,
0,
0});
//
// GB_Author
//
this.GB_Author.Controls.Add(this.CB_AuthorVersion);
this.GB_Author.Controls.Add(this.CB_AuthorLang);
this.GB_Author.Controls.Add(this.Label_OTGender);
this.GB_Author.Controls.Add(this.TB_AuthorName);
this.GB_Author.Controls.Add(this.NUD_AuthorTID);
this.GB_Author.Controls.Add(this.NUD_AuthorSID);
this.GB_Author.Location = new System.Drawing.Point(144, 161);
this.GB_Author.Name = "GB_Author";
this.GB_Author.Size = new System.Drawing.Size(261, 77);
this.GB_Author.TabIndex = 17;
this.GB_Author.TabStop = false;
this.GB_Author.Text = "Author";
//
// CB_AuthorVersion
//
this.CB_AuthorVersion.FormattingEnabled = true;
this.CB_AuthorVersion.Location = new System.Drawing.Point(135, 48);
this.CB_AuthorVersion.Name = "CB_AuthorVersion";
this.CB_AuthorVersion.Size = new System.Drawing.Size(117, 20);
this.CB_AuthorVersion.TabIndex = 60;
//
// CB_AuthorLang
//
this.CB_AuthorLang.FormattingEnabled = true;
this.CB_AuthorLang.Location = new System.Drawing.Point(135, 19);
this.CB_AuthorLang.Name = "CB_AuthorLang";
this.CB_AuthorLang.Size = new System.Drawing.Size(117, 20);
this.CB_AuthorLang.TabIndex = 59;
//
// Label_OTGender
//
this.Label_OTGender.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Label_OTGender.Location = new System.Drawing.Point(101, 19);
this.Label_OTGender.Name = "Label_OTGender";
this.Label_OTGender.Size = new System.Drawing.Size(20, 20);
this.Label_OTGender.TabIndex = 58;
this.Label_OTGender.Text = "G";
this.Label_OTGender.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.Label_OTGender.Click += new System.EventHandler(this.Label_OTGender_Click);
//
// L_MailType
//
this.L_MailType.Location = new System.Drawing.Point(157, 247);
this.L_MailType.Name = "L_MailType";
this.L_MailType.Size = new System.Drawing.Size(72, 18);
this.L_MailType.TabIndex = 18;
this.L_MailType.Text = "Mail Type:";
this.L_MailType.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_AppearPKM
//
this.L_AppearPKM.Location = new System.Drawing.Point(144, 276);
this.L_AppearPKM.Name = "L_AppearPKM";
this.L_AppearPKM.Size = new System.Drawing.Size(85, 18);
this.L_AppearPKM.TabIndex = 19;
this.L_AppearPKM.Text = "Appear PKM:";
this.L_AppearPKM.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// GB_PKM
//
this.GB_PKM.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.GB_PKM.Controls.Add(this.L_HeldItem6);
this.GB_PKM.Controls.Add(this.NUD_MailID6);
this.GB_PKM.Controls.Add(this.L_PKM6);
this.GB_PKM.Controls.Add(this.L_HeldItem5);
this.GB_PKM.Controls.Add(this.NUD_MailID5);
this.GB_PKM.Controls.Add(this.L_PKM5);
this.GB_PKM.Controls.Add(this.L_HeldItem4);
this.GB_PKM.Controls.Add(this.NUD_MailID4);
this.GB_PKM.Controls.Add(this.L_PKM4);
this.GB_PKM.Controls.Add(this.L_HeldItem3);
this.GB_PKM.Controls.Add(this.NUD_MailID3);
this.GB_PKM.Controls.Add(this.L_PKM3);
this.GB_PKM.Controls.Add(this.L_HeldItem2);
this.GB_PKM.Controls.Add(this.NUD_MailID2);
this.GB_PKM.Controls.Add(this.L_PKM2);
this.GB_PKM.Controls.Add(this.L_HeldItem1);
this.GB_PKM.Controls.Add(this.NUD_MailID1);
this.GB_PKM.Controls.Add(this.L_PKM1);
this.GB_PKM.Location = new System.Drawing.Point(414, 15);
this.GB_PKM.Name = "GB_PKM";
this.GB_PKM.Size = new System.Drawing.Size(170, 242);
this.GB_PKM.TabIndex = 20;
this.GB_PKM.TabStop = false;
this.GB_PKM.Text = "Held MailID";
//
// L_HeldItem6
//
this.L_HeldItem6.Location = new System.Drawing.Point(9, 218);
this.L_HeldItem6.Name = "L_HeldItem6";
this.L_HeldItem6.Size = new System.Drawing.Size(100, 18);
this.L_HeldItem6.TabIndex = 17;
this.L_HeldItem6.Text = "(Mail)";
this.L_HeldItem6.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// NUD_MailID6
//
this.NUD_MailID6.Location = new System.Drawing.Point(118, 201);
this.NUD_MailID6.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUD_MailID6.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUD_MailID6.Name = "NUD_MailID6";
this.NUD_MailID6.Size = new System.Drawing.Size(43, 19);
this.NUD_MailID6.TabIndex = 16;
this.NUD_MailID6.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// L_PKM6
//
this.L_PKM6.Location = new System.Drawing.Point(9, 200);
this.L_PKM6.Name = "L_PKM6";
this.L_PKM6.Size = new System.Drawing.Size(100, 18);
this.L_PKM6.TabIndex = 15;
this.L_PKM6.Text = "Bulbasaur:";
this.L_PKM6.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_HeldItem5
//
this.L_HeldItem5.Location = new System.Drawing.Point(9, 182);
this.L_HeldItem5.Name = "L_HeldItem5";
this.L_HeldItem5.Size = new System.Drawing.Size(100, 18);
this.L_HeldItem5.TabIndex = 14;
this.L_HeldItem5.Text = "(Mail)";
this.L_HeldItem5.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// NUD_MailID5
//
this.NUD_MailID5.Location = new System.Drawing.Point(118, 165);
this.NUD_MailID5.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUD_MailID5.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUD_MailID5.Name = "NUD_MailID5";
this.NUD_MailID5.Size = new System.Drawing.Size(43, 19);
this.NUD_MailID5.TabIndex = 13;
this.NUD_MailID5.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// L_PKM5
//
this.L_PKM5.Location = new System.Drawing.Point(9, 164);
this.L_PKM5.Name = "L_PKM5";
this.L_PKM5.Size = new System.Drawing.Size(100, 18);
this.L_PKM5.TabIndex = 12;
this.L_PKM5.Text = "Bulbasaur:";
this.L_PKM5.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_HeldItem4
//
this.L_HeldItem4.Location = new System.Drawing.Point(9, 146);
this.L_HeldItem4.Name = "L_HeldItem4";
this.L_HeldItem4.Size = new System.Drawing.Size(100, 18);
this.L_HeldItem4.TabIndex = 11;
this.L_HeldItem4.Text = "(Mail)";
this.L_HeldItem4.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// NUD_MailID4
//
this.NUD_MailID4.Location = new System.Drawing.Point(118, 129);
this.NUD_MailID4.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUD_MailID4.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUD_MailID4.Name = "NUD_MailID4";
this.NUD_MailID4.Size = new System.Drawing.Size(43, 19);
this.NUD_MailID4.TabIndex = 10;
this.NUD_MailID4.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// L_PKM4
//
this.L_PKM4.Location = new System.Drawing.Point(9, 128);
this.L_PKM4.Name = "L_PKM4";
this.L_PKM4.Size = new System.Drawing.Size(100, 18);
this.L_PKM4.TabIndex = 9;
this.L_PKM4.Text = "Bulbasaur:";
this.L_PKM4.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_HeldItem3
//
this.L_HeldItem3.Location = new System.Drawing.Point(9, 110);
this.L_HeldItem3.Name = "L_HeldItem3";
this.L_HeldItem3.Size = new System.Drawing.Size(100, 18);
this.L_HeldItem3.TabIndex = 8;
this.L_HeldItem3.Text = "(Mail)";
this.L_HeldItem3.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// NUD_MailID3
//
this.NUD_MailID3.Location = new System.Drawing.Point(118, 93);
this.NUD_MailID3.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUD_MailID3.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUD_MailID3.Name = "NUD_MailID3";
this.NUD_MailID3.Size = new System.Drawing.Size(43, 19);
this.NUD_MailID3.TabIndex = 7;
this.NUD_MailID3.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// L_PKM3
//
this.L_PKM3.Location = new System.Drawing.Point(9, 92);
this.L_PKM3.Name = "L_PKM3";
this.L_PKM3.Size = new System.Drawing.Size(100, 18);
this.L_PKM3.TabIndex = 6;
this.L_PKM3.Text = "Bulbasaur:";
this.L_PKM3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_HeldItem2
//
this.L_HeldItem2.Location = new System.Drawing.Point(9, 74);
this.L_HeldItem2.Name = "L_HeldItem2";
this.L_HeldItem2.Size = new System.Drawing.Size(100, 18);
this.L_HeldItem2.TabIndex = 5;
this.L_HeldItem2.Text = "(Mail)";
this.L_HeldItem2.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// NUD_MailID2
//
this.NUD_MailID2.Location = new System.Drawing.Point(118, 57);
this.NUD_MailID2.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUD_MailID2.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUD_MailID2.Name = "NUD_MailID2";
this.NUD_MailID2.Size = new System.Drawing.Size(43, 19);
this.NUD_MailID2.TabIndex = 4;
this.NUD_MailID2.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// L_PKM2
//
this.L_PKM2.Location = new System.Drawing.Point(9, 56);
this.L_PKM2.Name = "L_PKM2";
this.L_PKM2.Size = new System.Drawing.Size(100, 18);
this.L_PKM2.TabIndex = 3;
this.L_PKM2.Text = "Bulbasaur:";
this.L_PKM2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_HeldItem1
//
this.L_HeldItem1.Location = new System.Drawing.Point(9, 38);
this.L_HeldItem1.Name = "L_HeldItem1";
this.L_HeldItem1.Size = new System.Drawing.Size(100, 18);
this.L_HeldItem1.TabIndex = 2;
this.L_HeldItem1.Text = "(Mail)";
this.L_HeldItem1.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// NUD_MailID1
//
this.NUD_MailID1.Location = new System.Drawing.Point(118, 21);
this.NUD_MailID1.Maximum = new decimal(new int[] {
5,
0,
0,
0});
this.NUD_MailID1.Minimum = new decimal(new int[] {
1,
0,
0,
-2147483648});
this.NUD_MailID1.Name = "NUD_MailID1";
this.NUD_MailID1.Size = new System.Drawing.Size(43, 19);
this.NUD_MailID1.TabIndex = 1;
this.NUD_MailID1.Value = new decimal(new int[] {
5,
0,
0,
0});
//
// L_PKM1
//
this.L_PKM1.Location = new System.Drawing.Point(9, 20);
this.L_PKM1.Name = "L_PKM1";
this.L_PKM1.Size = new System.Drawing.Size(100, 18);
this.L_PKM1.TabIndex = 0;
this.L_PKM1.Text = "Bulbasaur:";
this.L_PKM1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// L_PartyHeld
//
this.L_PartyHeld.Location = new System.Drawing.Point(15, 12);
this.L_PartyHeld.Name = "L_PartyHeld";
this.L_PartyHeld.Size = new System.Drawing.Size(100, 18);
this.L_PartyHeld.TabIndex = 21;
this.L_PartyHeld.Text = "MailBox (Party)";
this.L_PartyHeld.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// L_PCBOX
//
this.L_PCBOX.Location = new System.Drawing.Point(15, 130);
this.L_PCBOX.Name = "L_PCBOX";
this.L_PCBOX.Size = new System.Drawing.Size(88, 18);
this.L_PCBOX.TabIndex = 22;
this.L_PCBOX.Text = "MailBox (PC)";
this.L_PCBOX.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// CB_AppearPKM2
//
this.CB_AppearPKM2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CB_AppearPKM2.FormattingEnabled = true;
this.CB_AppearPKM2.Location = new System.Drawing.Point(351, 276);
this.CB_AppearPKM2.Name = "CB_AppearPKM2";
this.CB_AppearPKM2.Size = new System.Drawing.Size(107, 20);
this.CB_AppearPKM2.TabIndex = 23;
//
// CB_AppearPKM3
//
this.CB_AppearPKM3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.CB_AppearPKM3.FormattingEnabled = true;
this.CB_AppearPKM3.Location = new System.Drawing.Point(467, 276);
this.CB_AppearPKM3.Name = "CB_AppearPKM3";
this.CB_AppearPKM3.Size = new System.Drawing.Size(107, 20);
this.CB_AppearPKM3.TabIndex = 24;
//
// SAV_MailBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(599, 409);
this.Controls.Add(this.CB_AppearPKM3);
this.Controls.Add(this.CB_AppearPKM2);
this.Controls.Add(this.L_PCBOX);
this.Controls.Add(this.L_PartyHeld);
this.Controls.Add(this.GB_PKM);
this.Controls.Add(this.L_AppearPKM);
this.Controls.Add(this.L_MailType);
this.Controls.Add(this.GB_Author);
this.Controls.Add(this.GB_MessageTB);
this.Controls.Add(this.GB_MessageNUD);
this.Controls.Add(this.NUD_BoxSize);
this.Controls.Add(this.CB_MailType);
this.Controls.Add(this.CB_AppearPKM1);
this.Controls.Add(this.L_BoxSize);
this.Controls.Add(this.B_Delete);
this.Controls.Add(this.LB_PCBOX);
this.Controls.Add(this.LB_PartyHeld);
this.Controls.Add(this.B_Save);
this.Controls.Add(this.B_Cancel);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "SAV_MailBox";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "MailBox Editor";
((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorTID)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_AuthorSID)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_BoxSize)).EndInit();
this.GB_MessageTB.ResumeLayout(false);
this.GB_MessageTB.PerformLayout();
this.GB_MessageNUD.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NUD_Message23)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message13)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message03)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message22)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message21)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message20)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message12)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message11)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message10)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message02)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message01)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_Message00)).EndInit();
this.GB_Author.ResumeLayout(false);
this.GB_Author.PerformLayout();
this.GB_PKM.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID6)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.NUD_MailID1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button B_Cancel;
private System.Windows.Forms.Button B_Save;
private System.Windows.Forms.ListBox LB_PartyHeld;
private System.Windows.Forms.ListBox LB_PCBOX;
private System.Windows.Forms.Button B_Delete;
private System.Windows.Forms.Label L_BoxSize;
private System.Windows.Forms.TextBox TB_MessageBody21;
private System.Windows.Forms.TextBox TB_MessageBody22;
private System.Windows.Forms.TextBox TB_AuthorName;
private System.Windows.Forms.NumericUpDown NUD_AuthorTID;
private System.Windows.Forms.ComboBox CB_AppearPKM1;
private System.Windows.Forms.ComboBox CB_MailType;
private System.Windows.Forms.NumericUpDown NUD_AuthorSID;
private System.Windows.Forms.NumericUpDown NUD_BoxSize;
private System.Windows.Forms.GroupBox GB_MessageTB;
private System.Windows.Forms.GroupBox GB_MessageNUD;
private System.Windows.Forms.NumericUpDown NUD_Message22;
private System.Windows.Forms.NumericUpDown NUD_Message21;
private System.Windows.Forms.NumericUpDown NUD_Message20;
private System.Windows.Forms.NumericUpDown NUD_Message12;
private System.Windows.Forms.NumericUpDown NUD_Message11;
private System.Windows.Forms.NumericUpDown NUD_Message10;
private System.Windows.Forms.NumericUpDown NUD_Message02;
private System.Windows.Forms.NumericUpDown NUD_Message01;
private System.Windows.Forms.NumericUpDown NUD_Message00;
private System.Windows.Forms.GroupBox GB_Author;
private System.Windows.Forms.Label L_MailType;
private System.Windows.Forms.Label L_AppearPKM;
private System.Windows.Forms.GroupBox GB_PKM;
private System.Windows.Forms.NumericUpDown NUD_MailID1;
private System.Windows.Forms.Label L_PKM1;
private System.Windows.Forms.Label L_PartyHeld;
private System.Windows.Forms.Label L_PCBOX;
private System.Windows.Forms.Label L_HeldItem6;
private System.Windows.Forms.NumericUpDown NUD_MailID6;
private System.Windows.Forms.Label L_PKM6;
private System.Windows.Forms.Label L_HeldItem5;
private System.Windows.Forms.NumericUpDown NUD_MailID5;
private System.Windows.Forms.Label L_PKM5;
private System.Windows.Forms.Label L_HeldItem4;
private System.Windows.Forms.NumericUpDown NUD_MailID4;
private System.Windows.Forms.Label L_PKM4;
private System.Windows.Forms.Label L_HeldItem3;
private System.Windows.Forms.NumericUpDown NUD_MailID3;
private System.Windows.Forms.Label L_PKM3;
private System.Windows.Forms.Label L_HeldItem2;
private System.Windows.Forms.NumericUpDown NUD_MailID2;
private System.Windows.Forms.Label L_PKM2;
private System.Windows.Forms.Label L_HeldItem1;
private System.Windows.Forms.ComboBox CB_AppearPKM2;
private System.Windows.Forms.ComboBox CB_AppearPKM3;
private System.Windows.Forms.NumericUpDown NUD_Message03;
private System.Windows.Forms.NumericUpDown NUD_Message13;
private System.Windows.Forms.NumericUpDown NUD_Message23;
private System.Windows.Forms.ComboBox CB_AuthorVersion;
private System.Windows.Forms.ComboBox CB_AuthorLang;
private System.Windows.Forms.Label Label_OTGender;
}
}

View file

@ -0,0 +1,631 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using PKHeX.Core;
namespace PKHeX.WinForms
{
public partial class SAV_MailBox : Form
{
private readonly SaveFile Origin;
private readonly SaveFile SAV;
public SAV_MailBox(SaveFile sav)
{
SAV = (Origin = sav).Clone();
Gen = SAV.Generation;
p = SAV.PartyData;
editing = true;
InitializeComponent();
Messages = new NumericUpDown[][] {
new[] { NUD_Message00, NUD_Message01, NUD_Message02, NUD_Message03 },
new[] { NUD_Message10, NUD_Message11, NUD_Message12, NUD_Message13 },
new[] { NUD_Message20, NUD_Message21, NUD_Message22, NUD_Message23 }
};
PKMLabels = new[] { L_PKM1, L_PKM2, L_PKM3, L_PKM4, L_PKM5, L_PKM6 };
PKMHeldItems = new[] { L_HeldItem1, L_HeldItem2, L_HeldItem3, L_HeldItem4, L_HeldItem5, L_HeldItem6 };
PKMNUDs = new[] { NUD_MailID1, NUD_MailID2, NUD_MailID3, NUD_MailID4, NUD_MailID5, NUD_MailID6 };
AppearPKMs = new[] { CB_AppearPKM1, CB_AppearPKM2, CB_AppearPKM3 };
NUD_BoxSize.Visible = L_BoxSize.Visible = Gen == 2;
GB_MessageTB.Visible = Gen == 2;
GB_MessageNUD.Visible = Gen != 2;
Messages[0][3].Visible = Messages[1][3].Visible = Messages[2][3].Visible = Gen == 4;
NUD_AuthorSID.Visible = Gen != 2;
Label_OTGender.Visible = CB_AuthorLang.Visible = CB_AuthorVersion.Visible = AppearPKMs[1].Visible = AppearPKMs[2].Visible = Gen == 4;
for (int i = p.Count; i < 6; i++)
PKMNUDs[i].Visible = PKMLabels[i].Visible = PKMHeldItems[i].Visible = false;
if (Gen == 2 || Gen == 4)
{
for (int i = 0; i < PKMNUDs.Length; i++)
{
PKMNUDs[i].Value = i;
PKMNUDs[i].Enabled = false;
}
}
switch (SAV)
{
case SAV2 sav2:
m = new Mail2[6 + 10];
for (int i = 0; i < m.Length; i++)
m[i] = new Mail2(sav2, i);
NUD_BoxSize.Value = SAV.Data[0x834];
MakePartyList();
MakePCList();
MailItemID = Enumerable.Range(0xB5, 9).ToArray();
break;
case SAV3 sav3:
m = new Mail3[6 + 10];
for (int i = 0; i < m.Length; i++)
m[i] = new Mail3(sav3, i);
MakePartyList();
MakePCList();
MailItemID = Enumerable.Range(0x79, 12).ToArray();
break;
case SAV4 sav4:
m = new Mail4[p.Count + 20];
for (int i = 0; i < p.Count; i++)
m[i] = new Mail4((p[i] as PK4).HeldMailData);
for (int i = p.Count, j = 0; i < m.Length; i++, j++)
m[i] = new Mail4(sav4, j);
MakePartyList();
MakePCList();
MailItemID = Enumerable.Range(0x89, 12).ToArray();
break;
}
if (Gen == 2 || Gen == 3)
{
CB_AppearPKM1.Items.Clear();
CB_AppearPKM1.DisplayMember = "Text";
CB_AppearPKM1.ValueMember = "Value";
CB_AppearPKM1.DataSource = new BindingSource(GameInfo.SpeciesDataSource.Where(id => id.Value <= sav.MaxSpeciesID).ToList(), null);
}
else if (Gen == 4)
{
var species = GameInfo.SpeciesDataSource.Where(id => id.Value <= sav.MaxSpeciesID).ToList();
foreach(ComboBox a in AppearPKMs)
{
a.Items.Clear();
a.DisplayMember = "Text";
a.ValueMember = "Value";
a.DataSource = new BindingSource(species, null);
}
CB_AuthorVersion.Items.Clear();
CB_AuthorVersion.DisplayMember = "Text";
CB_AuthorVersion.ValueMember = "Value";
CB_AuthorVersion.DataSource = new BindingSource(new ComboItem[] {
new ComboItem { Text = "Diamond", Value = (int)GameVersion.D },
new ComboItem { Text = "Pearl", Value = (int)GameVersion.P },
new ComboItem { Text = "Platinum", Value = (int)GameVersion.Pt },
new ComboItem { Text = "HeartGold", Value = (int)GameVersion.HG },
new ComboItem { Text = "SoulSilver", Value = (int)GameVersion.P },
}.ToList(), null);
CB_AuthorLang.Items.Clear();
CB_AuthorLang.DisplayMember = "Text";
CB_AuthorLang.ValueMember = "Value";
CB_AuthorLang.DataSource = new BindingSource(new ComboItem[] {
// not sure
new ComboItem { Text = "JP", Value = 1 },
new ComboItem { Text = "US", Value = 2 },
new ComboItem { Text = "KOR", Value = 3 },
}.ToList(), null);
}
string[] ItemList = GameInfo.Strings.GetItemStrings(Gen, SAV.Version);
CB_MailType.Items.Clear();
CB_MailType.Items.Add(ItemList[0]);
for (int i = 0; i < MailItemID.Length; i++)
CB_MailType.Items.Add(ItemList[MailItemID[i]]);
LoadPKM(true);
entry = -1;
editing = false;
LB_PartyHeld.SelectedIndex = 0;
}
private readonly int[] HoennListMixed = {
277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,
304,305,309,310,392,393,394,311,312,306,307,364,365,366,301,302,303,370,371,372,335,336,350,320,315,316,
322,355,382,383,384,356,357,337,338,353,354,386,387,363,367,368,330,331,313,314,
339,340,321,351,352,308,332,333,334,344,345,358,359,380,379,348,349,323,324,
326,327,318,319,388,389,390,391,328,329,385,317,377,378,361,362,369,411,376,360,
346,347,341,342,343,373,374,375,381,325,395,396,397,398,399,400,
401,402,403,407,408,404,405,406,409,410
};
private void LoadList()
{
if (entry < 6) MakePartyList();
else MakePCList();
}
private void MakePartyList()
{
LB_PartyHeld.BeginUpdate();
int s = LB_PartyHeld.SelectedIndex;
LB_PartyHeld.Items.Clear();
for (int i = 0, j = Gen == 4 ? p.Count : 6; i < j; i++)
LB_PartyHeld.Items.Add($"{i}: {m[i].AuthorName}");
if (s != LB_PartyHeld.SelectedIndex && s < LB_PartyHeld.Items.Count)
LB_PartyHeld.SelectedIndex = s;
LB_PartyHeld.EndUpdate();
}
private void MakePCList()
{
LB_PCBOX.BeginUpdate();
int s = LB_PCBOX.SelectedIndex;
LB_PCBOX.Items.Clear();
switch (Gen)
{
case 2:
for (int i = 6, j = 0, boxsize = (int)NUD_BoxSize.Value; i < m.Length; i++, j++) {
if (j < boxsize) LB_PCBOX.Items.Add($"{i}: {m[i].AuthorName}");
else LB_PCBOX.Items.Add("x");
}
break;
case 3:
for (int i = 6; i < m.Length; i++) {
if (m[i].MailType != 0) LB_PCBOX.Items.Add($"{i}: {m[i].AuthorName}");
else LB_PCBOX.Items.Add("x");
}
break;
case 4:
for (int i = p.Count; i < m.Length; i++) {
if (m[i].MailType <= 11) LB_PCBOX.Items.Add($"{i}: {m[i].AuthorName}");
else LB_PCBOX.Items.Add("x");
}
break;
}
if (s != LB_PCBOX.SelectedIndex && s < LB_PCBOX.Items.Count)
LB_PCBOX.SelectedIndex = s;
LB_PCBOX.EndUpdate();
}
private void LoadPKM(bool isInit)
{
for (int i = 0, j, k; i < p.Count; i++)
{
if (isInit)
PKMLabels[i].Text = GetSpeciesNameFromCB(p[i].Species);
j = MailTypeToCBIndex(p[i].HeldItem);
PKMHeldItems[i].Text = j <= 0 ? "(not Mail)" : CB_MailType.Items[j].ToString();
PKMHeldItems[i].TextAlign = j <= 0 ? ContentAlignment.TopLeft : ContentAlignment.TopRight;
if (Gen == 3)
{
k = (p[i] as PK3).HeldMailID;
PKMNUDs[i].Value = k >= -1 && k <= 5 ? k : -1;
}
}
}
private readonly Mail[] m;
private bool editing;
private int entry;
private readonly NumericUpDown[][] Messages;
private readonly NumericUpDown[] PKMNUDs;
private readonly Label[] PKMLabels, PKMHeldItems;
private readonly ComboBox[] AppearPKMs;
private readonly int Gen;
private void Save()
{
switch (Gen)
{
case 2:
foreach (var n in m) n.CopyTo(SAV);
// duplicate
int ofs = 0x600;
int len = 0x2F * 6;
Array.Copy(SAV.Data, ofs, SAV.Data, ofs + len, len);
ofs += len << 1;
SAV.Data[ofs] = (byte)NUD_BoxSize.Value;
len = 0x2F * 10 + 1;
Array.Copy(SAV.Data, ofs, SAV.Data, ofs + len, len);
break;
case 3:
foreach (var n in m) n.CopyTo(SAV);
for (int i = 0; i < p.Count; i++)
(p[i] as PK3).HeldMailID = (sbyte)PKMNUDs[i].Value;
break;
case 4:
for (int i = 0; i < p.Count; i++)
m[i].CopyTo(p[i] as PK4);
for (int i = p.Count; i < m.Length; i++)
m[i].CopyTo(SAV);
break;
}
SAV.PartyData = p;
}
private void TempSave()
{
switch (m[entry])
{
case Mail2 m2:
m2.AuthorName = TB_AuthorName.Text;
m2.AuthorTID = (ushort)NUD_AuthorTID.Value;
m2.MailType = CBIndexToMailType(CB_MailType.SelectedIndex);
m2.SetMessage(TB_MessageBody21.Text, TB_MessageBody22.Text);
m2.AppearPKM = CB_AppearPKM1.SelectedValue as int? ?? 0;
break;
case Mail3 m3:
m3.AuthorName = TB_AuthorName.Text;
m3.AuthorTID = (ushort)NUD_AuthorTID.Value;
m3.MailType = CBIndexToMailType(CB_MailType.SelectedIndex);
for (int y = 0; y < 2; y++)
for (int x = 0; x < 2; x++)
m3.SetMessage(y, x, (ushort)Messages[y][x].Value);
m3.AuthorSID = (ushort)NUD_AuthorSID.Value;
int v = CB_AppearPKM1.SelectedValue as int? ?? 0;
m3.AppearPKM = v < 252 ? v : HoennListMixed[v - 252];
break;
case Mail4 m4:
m4.AuthorName = TB_AuthorName.Text;
m4.AuthorTID = (ushort)NUD_AuthorTID.Value;
v = CB_MailType.SelectedIndex;
m4.MailType = v > 0 ? v - 1 : 0xFF;
for (int y = 0; y < 2; y++)
for (int x = 0; x < 3; x++)
m4.SetMessage(y, x, (ushort)Messages[y][x].Value);
m4.AuthorSID = (ushort)NUD_AuthorSID.Value;
for (int i = 0; i < AppearPKMs.Length; i++)
m4.SetAppearPKM(i, (AppearPKMs[i].SelectedValue as int?) + 7 ?? 0);
m4.AuthorVersion = CB_AuthorVersion.SelectedValue as byte? ?? 0;
m4.AuthorLanguage = CB_AuthorLang.SelectedValue as byte? ?? 0;
break;
}
}
private string CheckValid()
{
string ret = "";
// Gen3
// A: held item is mail, but heldMailID is not 0 to 5. it should be 0 to 5, or held not mail.
// B: held item is mail, but mail is empty(mail type is 0). it should be not empty, or held not mail and heldMailId -1.
// C: held item is not mail, but heldMailID is not -1. it should be -1, or held mail and mail not empty.
// D: other pkm have same heldMailID. it should be different.
// E: mail is not empty, but no pkm refer to the mail. it should be empty, or someone refer to the mail.
if (Gen == 3)
{
int[] heldMailIDs = new int[p.Count];
for (int i = 0, h; i < p.Count; i++)
{
h = (p[i] as PK3).HeldMailID;
heldMailIDs[i] = h;
if (ItemIsMail(p[i].HeldItem))
{
if (h < 0 || h > 5) //A
ret += $"{Environment.NewLine}Party#{i + 1} MailID mismatch";
else if (m[h].MailType == 0) //B
ret += $"{Environment.NewLine}Party#{i + 1} MailID mismatch";
}
else if (h != -1) //C
ret += $"{Environment.NewLine}Party#{i + 1} MailID mismatch";
}
for(int i = 0; i < 6; i++)
{
if (heldMailIDs.Count(v => v == i) > 1) //D
ret += $"{Environment.NewLine}MailID{i} duplicated";
if (m[i].MailType != 0 && heldMailIDs.All(v => v != i)) //E
ret += $"{Environment.NewLine}MailID{i} not referred";
}
}
// Gen2, Gen4
// P: held item is mail, but mail is empty(invalid mail type. g2:not 181 to 189, g4:12 to 255). it should be not empty or held not mail.
// Q: held item is not mail, but mail is not empty. it should be empty or held mail.
else if (Gen == 2)
{
for(int i = 0; i < p.Count; i++)
{
if (ItemIsMail(p[i].HeldItem))
{
if (!ItemIsMail(m[i].MailType)) //P
ret += $"{Environment.NewLine}MailID{i} MailType mismatch";
}
else if (m[i].MailType != 0) //Q
ret += $"{Environment.NewLine}MailID{i} MailType mismatch";
}
}
else if (Gen == 4)
{
for(int i = 0; i < p.Count; i++)
{
if (ItemIsMail(p[i].HeldItem))
{
if (m[i].MailType >= 12) //P
ret += $"{Environment.NewLine}MailID{i} MailType mismatch";
}
else if (m[i].MailType != 0xFF) //Q
ret += $"{Environment.NewLine}MailID{i} MailType mismatch";
}
}
return ret;
}
private void B_Cancel_Click(object sender, EventArgs e) => Close();
private void B_Save_Click(object sender, EventArgs e)
{
if (entry >= 0) TempSave();
Save();
string Err = CheckValid();
if (Err.Length == 0 || DialogResult.Yes == WinFormsUtil.Prompt(MessageBoxButtons.YesNo, $"Validation Error. Save?{Environment.NewLine}{Err}"))
{
Origin.SetData(SAV.Data, 0);
Close();
}
}
private bool ItemIsMail(int itemID) => Array.IndexOf(MailItemID, itemID) >= 0;
private int MailTypeToCBIndex(int mailtype) => 1 + Array.IndexOf(MailItemID, mailtype);
private int CBIndexToMailType(int cbindex) => cbindex <= 0 ? 0 : cbindex <= MailItemID.Length ? MailItemID[cbindex - 1] : MailItemID[0];
private int[] MailItemID;
private IList<PKM> p;
private string GetSpeciesNameFromCB(int index)
{
foreach (ComboItem i in CB_AppearPKM1.Items)
if (index == i.Value) return i.Text;
return "PKM";
}
private DialogResult ModifyHeldItem()
{
DialogResult ret = DialogResult.Abort;
if (entry >= p.Count) return ret;
PKM s = p[entry];
if (!ItemIsMail(s.HeldItem)) return ret;
System.Media.SystemSounds.Question.Play();
ret = MessageBox.Show($"Modify {PKMLabels[entry].Text}'s HeldItem?{Environment.NewLine}{Environment.NewLine} {PKMHeldItems[entry].Text} -> {CB_MailType.Items[0].ToString()}{Environment.NewLine}{Environment.NewLine}Yes: Delete Mail & Modify PKM{Environment.NewLine}No: Delete Mail", "Prompt", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button3);
if (ret != DialogResult.Yes) return ret;
s.HeldItem = 0;
if (Gen == 3) (s as PK3).HeldMailID = -1;
LoadPKM(false);
return ret;
}
private void B_Delete_Click(object sender, EventArgs e)
{
if (entry < 0) return;
if (entry < 6)
{
DialogResult ret= ModifyHeldItem();
if (ret == DialogResult.Cancel) return;
}
editing = true;
switch (Gen)
{
case 2:
TB_MessageBody21.Text = TB_MessageBody22.Text = "";
break;
case 3:
for (int y = 0; y < 3; y++)
for (int x = 0; x < 3; x++)
Messages[y][x].Value = 0xFFFF;
NUD_AuthorSID.Value = 0;
break;
case 4:
for (int y = 0; y < 3; y++)
for (int x = 0; x < 4; x++)
Messages[y][x].Value = x == 1 ? 0 : 0xFFFF;
NUD_AuthorSID.Value = 0;
CB_AppearPKM2.SelectedValue = CB_AppearPKM3.SelectedValue = 0;
// which value to reset? (version value is not detected)
// CB_AuthorLang.SelectedIndex = 0;
// CB_AuthorVersion.SelectedValue = 0;
break;
}
TB_AuthorName.Text = "";
NUD_AuthorTID.Value = 0;
CB_AppearPKM1.SelectedValue = Gen == 3 ? 1 : 0;
CB_MailType.SelectedIndex = 0;
TempSave();
LoadList();
editing = false;
}
private void EntryControl(object sender, EventArgs e)
{
if (editing) return;
editing = true;
int partyIndex = LB_PartyHeld.SelectedIndex;
int pcIndex = LB_PCBOX.SelectedIndex;
if (entry >= 0)
{
TempSave();
LoadList();
}
if (sender == LB_PartyHeld && pcIndex >= 0)
{
pcIndex = -1;
LB_PCBOX.SelectedIndex = -1;
}
else if (sender == LB_PCBOX && partyIndex >= 0)
{
partyIndex = -1;
LB_PartyHeld.SelectedIndex = -1;
}
if (partyIndex >= 0)
entry = partyIndex;
else if (pcIndex >= 0)
entry = 6 + pcIndex;
else entry = -1;
if (entry >= 0) LoadMail();
editing = false;
}
private void LoadMail()
{
switch (m[entry])
{
case Mail2 m2:
TB_AuthorName.Text = m2.AuthorName;
NUD_AuthorTID.Value = m2.AuthorTID;
CB_MailType.SelectedIndex = MailTypeToCBIndex(m2.MailType);
TB_MessageBody21.Text = m2.GetMessage(false);
TB_MessageBody22.Text = m2.GetMessage(true);
AppearPKMs[0].SelectedValue = m2.AppearPKM;
break;
case Mail3 m3:
TB_AuthorName.Text = m3.AuthorName;
NUD_AuthorTID.Value = m3.AuthorTID;
CB_MailType.SelectedIndex = MailTypeToCBIndex(m3.MailType);
for (int y = 0; y < 3; y++)
for (int x = 0; x < 3; x++)
Messages[y][x].Value = m3.GetMessage(y, x);
NUD_AuthorSID.Value = m3.AuthorSID;
int v = Array.IndexOf(HoennListMixed, m3.AppearPKM);
AppearPKMs[0].SelectedValue = m3.AppearPKM < 252 ? m3.AppearPKM : v >= 0 ? 252 + v : 0;
break;
case Mail4 m4:
TB_AuthorName.Text = m4.AuthorName;
NUD_AuthorTID.Value = m4.AuthorTID;
v = m4.MailType;
CB_MailType.SelectedIndex = v <= 11 ? v + 1 : 0;
for (int y = 0; y < 3; y++)
for (int x = 0; x < 4; x++)
Messages[y][x].Value = m4.GetMessage(y, x);
NUD_AuthorSID.Value = m4.AuthorSID;
for (int i = 0; i < AppearPKMs.Length; i++)
AppearPKMs[i].SelectedValue = Math.Max(0, m4.GetAppearPKM(i) - 7);
LoadOTlabel(m4.AuthorGender);
CB_AuthorVersion.SelectedValue = m4.AuthorVersion;
CB_AuthorLang.SelectedValue = m4.AuthorLanguage;
break;
}
}
private readonly string[] gendersymbols = { "♂", "♀" };
private void LoadOTlabel(int b)
{
Label_OTGender.Text = gendersymbols[b & 1];
Label_OTGender.ForeColor = b == 1 ? Color.Red : Color.Blue;
}
private void Label_OTGender_Click(object sender, EventArgs e)
{
if (entry < 0) return;
if (Gen != 4) return;
var mail = m[entry] as Mail4;
var b = mail.AuthorGender;
b ^= 1;
mail.AuthorGender = b;
LoadOTlabel(b);
}
private void NUD_BoxSize_ValueChanged(object sender, EventArgs e)
{
if (editing) return;
editing = true;
MakePCList();
editing = false;
}
}
public class Mail2 : Mail
{
private bool US;
public Mail2(SAV2 sav, int index)
{
US = !sav.Japanese && !sav.Korean;
DataOffset = index < 6 ? index * 0x2F + 0x600 : (index - 6) * 0x2F + 0x835;
Data = sav.GetData(DataOffset, 0x2F);
}
public override string GetMessage(bool isLastLine) => US ? StringConverter.GetString1(Data, isLastLine ? 0x11 : 0, 0x10, false) : string.Empty;
public override void SetMessage(string line1, string line2)
{
if (US)
{
StringConverter.SetString1(line2, 0x10, false, 0x10, 0x50).CopyTo(Data, 0x11);
StringConverter.SetString1(line1, 0x10, false, 0x10, (ushort)(Data.Skip(0x11).Take(0x10).All(v => v == 0x50) ? 0x50 : 0x7F)).CopyTo(Data, 0);
Data[0x10] = 0x4E;
}
}
public override string AuthorName
{
get => US ? StringConverter.GetString1(Data, 0x21, 7, false) : string.Empty;
set
{
if (US)
{
StringConverter.SetString1(value, 7, false, 8, 0x50).CopyTo(Data, 0x21);
Data[0x29] = Data[0x2A] = 0;
}
}
}
public override ushort AuthorTID
{
get => (ushort)(Data[0x2B] << 8 | Data[0x2C]);
set
{
Data[0x2B] = (byte)(value >> 8);
Data[0x2C] = (byte)(value & 0xFF);
}
}
public override int AppearPKM { get => Data[0x2D]; set => Data[0x2D] = (byte)value; }
public override int MailType { get => Data[0x2E]; set => Data[0x2E] = (byte)value; }
}
public class Mail3 : Mail
{
public Mail3(SAV3 sav, int index)
{
DataOffset = index * 0x24 + sav.GetBlockOffset(3) + 0xCE0;
Data = sav.GetData(DataOffset, 0x24);
}
public override ushort GetMessage(int index1, int index2) => BitConverter.ToUInt16(Data, (index1 * 3 + index2) * 2);
public override void SetMessage(int index1, int index2, ushort value) => BitConverter.GetBytes(value).CopyTo(Data, (index1 * 3 + index2) * 2);
public override string AuthorName
{
get => StringConverter.GetString3(Data, 0x12, 7, false);
set
{
Data[0x18] = Data[0x19] = 0xFF;
StringConverter.SetString3(value, 7, false, 6, 0).CopyTo(Data, 0x12);
}
}
public override ushort AuthorTID { get => BitConverter.ToUInt16(Data, 0x1A); set => BitConverter.GetBytes(value).CopyTo(Data, 0x1A); }
public ushort AuthorSID { get => BitConverter.ToUInt16(Data, 0x1C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x1C); }
public override int AppearPKM { get => BitConverter.ToUInt16(Data, 0x1E); set => BitConverter.GetBytes((ushort)(value == 0 ? 1 : value)).CopyTo(Data, 0x1E); }
public override int MailType { get => BitConverter.ToUInt16(Data, 0x20); set => BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x20); }
}
public class Mail4 : Mail
{
public Mail4(SAV4 sav, int index)
{
switch (sav.Version)
{
case GameVersion.DP: DataOffset = index * 0x38 + 0x4BEC + sav.GetGBO; break;
case GameVersion.Pt: DataOffset = index * 0x38 + 0x4E80 + sav.GetGBO; break;
case GameVersion.HGSS: DataOffset = index * 0x38 + 0x3FA8 + sav.GetGBO; break;
}
Data = sav.GetData(DataOffset, 0x38);
}
public Mail4(byte[] data) => Data = data;
public override void CopyTo(PK4 pk4) => pk4.HeldMailData = Data;
public override ushort AuthorTID { get => BitConverter.ToUInt16(Data, 0); set => BitConverter.GetBytes(value).CopyTo(Data, 0); }
public ushort AuthorSID { get => BitConverter.ToUInt16(Data, 2); set => BitConverter.GetBytes(value).CopyTo(Data, 2); }
public byte AuthorGender { get => Data[4]; set => Data[4] = value; }
public byte AuthorLanguage { get => Data[5]; set => Data[5] = value; }
public byte AuthorVersion { get => Data[6]; set => Data[6] = value; }
public override int MailType { get => Data[7]; set => Data[7] = (byte)value; }
public override string AuthorName { get => StringConverter.GetString4(Data, 8, 0x10); set => StringConverter.SetString4(value, 7, 8, 0xFFFF).CopyTo(Data, 8); }
public int GetAppearPKM(int index) => BitConverter.ToUInt16(Data, 0x1C - index * 2);
public void SetAppearPKM(int index, int value) => BitConverter.GetBytes((ushort)(value == 0 ? 0xFFFF : value)).CopyTo(Data, 0x1C - index * 2);
public override ushort GetMessage(int index1, int index2) => BitConverter.ToUInt16(Data, 0x20 + (index1 * 4 + index2) * 2);
public override void SetMessage(int index1, int index2, ushort value) => BitConverter.GetBytes(value).CopyTo(Data, 0x20 + (index1 * 4 + index2) * 2);
}
public class Mail
{
protected byte[] Data;
protected int DataOffset;
public void CopyTo(SaveFile sav) => sav.SetData(Data, DataOffset);
public virtual void CopyTo(PK4 pk4) { }
public virtual string GetMessage(bool isLastLine) => null;
public virtual ushort GetMessage(int index1, int index2) => 0;
public virtual void SetMessage(string line1, string line2) { }
public virtual void SetMessage(int index1, int index2, ushort value) { }
public virtual string AuthorName { get; set; }
public virtual ushort AuthorTID { get; set; }
public virtual int AppearPKM { get; set; }
public virtual int MailType { get; set; }
}
}

View file

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE
AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq
KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+
vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li
4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg
4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly
8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz
8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v//
//+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P
Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA
Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK
k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF
Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P
aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N
pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT
vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV
yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ
yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq
rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY
GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e
HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq
quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq
quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY
2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY
2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra
2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna
2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ
WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li
4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA
AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk
5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb
2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl
5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh
4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm
5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk
4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn
5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn
5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn
5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq
6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn
5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA
AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl
5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR
0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA
AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk
5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG
RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn
5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC
LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC
K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ
rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK
s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL
p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC
Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK
ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE
UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA
AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA
AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER
w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL
pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER
wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P
tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT
wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER
vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV
wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV
wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV
xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW
yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV
x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl
eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX
zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA
AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ
zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA
AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws
p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb
ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA
AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB//////
</value>
</data>
</root>