mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-27 22:40:22 +00:00
commit
7f5e08bf6a
32 changed files with 2020 additions and 498 deletions
|
@ -710,7 +710,7 @@ namespace PKHeX
|
|||
switch (pk6.OT_Memory)
|
||||
{
|
||||
case 2: // {0} hatched from an Egg and saw {1} for the first time at... {2}. {4} that {3}.
|
||||
if (!pk6.WasEgg)
|
||||
if (!pk6.WasEgg && pk6.Egg_Location != 60004)
|
||||
return new LegalityCheck(Severity.Invalid, "OT Memory: OT did not hatch this.");
|
||||
return new LegalityCheck(Severity.Valid, "OT Memory is valid.");
|
||||
case 4: // {0} became {1}’s friend when it arrived via Link Trade at... {2}. {4} that {3}.
|
||||
|
|
|
@ -444,6 +444,7 @@ namespace PKHeX
|
|||
486, // Regigigas
|
||||
487, // Giratina
|
||||
488, // Cresselia
|
||||
490, // Manaphy
|
||||
491, // Darkrai
|
||||
492, // Shaymin
|
||||
493, // Arceus
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace PKHeX
|
|||
internal static readonly ushort[] Pouch_Battle_DP = {
|
||||
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67
|
||||
};
|
||||
internal static readonly ushort[] HeldItems_DP = new ushort[1].Concat(Pouch_Items_DP).Concat(Pouch_Mail_DP).Concat(Pouch_Medicine_DP).Concat(Pouch_Berries_DP).Concat(Pouch_Ball_DP).ToArray();
|
||||
internal static readonly ushort[] HeldItems_DP = new ushort[1].Concat(Pouch_Items_DP).Concat(Pouch_Mail_DP).Concat(Pouch_Medicine_DP).Concat(Pouch_Berries_DP).Concat(Pouch_Ball_DP).Concat(Pouch_TMHM_DP.Take(Pouch_TMHM_DP.Length - 8)).ToArray();
|
||||
#endregion
|
||||
|
||||
#region Pt
|
||||
|
@ -47,7 +47,7 @@ namespace PKHeX
|
|||
internal static readonly ushort[] Pouch_Ball_Pt = Pouch_Ball_DP;
|
||||
internal static readonly ushort[] Pouch_Battle_Pt = Pouch_Battle_DP;
|
||||
|
||||
internal static readonly ushort[] HeldItems_Pt = new ushort[1].Concat(Pouch_Items_Pt).Concat(Pouch_Mail_Pt).Concat(Pouch_Medicine_Pt).Concat(Pouch_Berries_Pt).Concat(Pouch_Ball_Pt).ToArray();
|
||||
internal static readonly ushort[] HeldItems_Pt = new ushort[1].Concat(Pouch_Items_Pt).Concat(Pouch_Mail_Pt).Concat(Pouch_Medicine_Pt).Concat(Pouch_Berries_Pt).Concat(Pouch_Ball_Pt).Concat(Pouch_TMHM_Pt.Take(Pouch_TMHM_Pt.Length - 8)).ToArray();
|
||||
#endregion
|
||||
|
||||
#region HGSS
|
||||
|
@ -64,7 +64,7 @@ namespace PKHeX
|
|||
};
|
||||
internal static readonly ushort[] Pouch_Battle_HGSS = Pouch_Battle_DP;
|
||||
|
||||
internal static readonly ushort[] HeldItems_HGSS = new ushort[1].Concat(Pouch_Items_HGSS).Concat(Pouch_Mail_HGSS).Concat(Pouch_Medicine_HGSS).Concat(Pouch_Berries_HGSS).Concat(Pouch_Ball_Pt).ToArray();
|
||||
internal static readonly ushort[] HeldItems_HGSS = new ushort[1].Concat(Pouch_Items_HGSS).Concat(Pouch_Mail_HGSS).Concat(Pouch_Medicine_HGSS).Concat(Pouch_Berries_HGSS).Concat(Pouch_Ball_Pt).Concat(Pouch_TMHM_HGSS.Take(Pouch_TMHM_HGSS.Length - 8)).ToArray();
|
||||
#endregion
|
||||
|
||||
internal static readonly int[] MovePP_DP =
|
||||
|
|
209
MainWindow/Main.Designer.cs
generated
209
MainWindow/Main.Designer.cs
generated
|
@ -356,6 +356,7 @@
|
|||
this.B_OpenSecretBase = new System.Windows.Forms.Button();
|
||||
this.B_Pokeblocks = new System.Windows.Forms.Button();
|
||||
this.B_LinkInfo = new System.Windows.Forms.Button();
|
||||
this.B_CGearSkin = new System.Windows.Forms.Button();
|
||||
this.dragout = new System.Windows.Forms.PictureBox();
|
||||
this.mnuL = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.mnuLLegality = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -851,7 +852,7 @@
|
|||
// CHK_IsEgg
|
||||
//
|
||||
this.CHK_IsEgg.AutoSize = true;
|
||||
this.CHK_IsEgg.Location = new System.Drawing.Point(43, 196);
|
||||
this.CHK_IsEgg.Location = new System.Drawing.Point(35, 196);
|
||||
this.CHK_IsEgg.Name = "CHK_IsEgg";
|
||||
this.CHK_IsEgg.Size = new System.Drawing.Size(56, 17);
|
||||
this.CHK_IsEgg.TabIndex = 16;
|
||||
|
@ -872,7 +873,7 @@
|
|||
// Label_Form
|
||||
//
|
||||
this.Label_Form.AutoSize = true;
|
||||
this.Label_Form.Location = new System.Drawing.Point(128, 136);
|
||||
this.Label_Form.Location = new System.Drawing.Point(125, 136);
|
||||
this.Label_Form.Name = "Label_Form";
|
||||
this.Label_Form.Size = new System.Drawing.Size(33, 13);
|
||||
this.Label_Form.TabIndex = 11;
|
||||
|
@ -2644,9 +2645,9 @@
|
|||
//
|
||||
// Label_EncryptionConstant
|
||||
//
|
||||
this.Label_EncryptionConstant.Location = new System.Drawing.Point(29, 279);
|
||||
this.Label_EncryptionConstant.Location = new System.Drawing.Point(20, 279);
|
||||
this.Label_EncryptionConstant.Name = "Label_EncryptionConstant";
|
||||
this.Label_EncryptionConstant.Size = new System.Drawing.Size(105, 13);
|
||||
this.Label_EncryptionConstant.Size = new System.Drawing.Size(120, 13);
|
||||
this.Label_EncryptionConstant.TabIndex = 1;
|
||||
this.Label_EncryptionConstant.Text = "Encryption Constant:";
|
||||
this.Label_EncryptionConstant.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
|
@ -3072,7 +3073,11 @@
|
|||
this.bpkx30.TabStop = false;
|
||||
this.bpkx30.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx30.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx30.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx30.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx30.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx30.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx30.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// mnuVSD
|
||||
//
|
||||
|
@ -3116,7 +3121,11 @@
|
|||
this.bpkx29.TabStop = false;
|
||||
this.bpkx29.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx29.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx29.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx29.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx29.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx29.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx29.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx28
|
||||
//
|
||||
|
@ -3130,7 +3139,11 @@
|
|||
this.bpkx28.TabStop = false;
|
||||
this.bpkx28.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx28.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx28.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx28.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx28.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx28.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx28.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx27
|
||||
//
|
||||
|
@ -3144,7 +3157,11 @@
|
|||
this.bpkx27.TabStop = false;
|
||||
this.bpkx27.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx27.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx27.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx27.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx27.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx27.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx27.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx26
|
||||
//
|
||||
|
@ -3158,7 +3175,11 @@
|
|||
this.bpkx26.TabStop = false;
|
||||
this.bpkx26.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx26.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx26.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx26.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx26.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx26.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx26.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx25
|
||||
//
|
||||
|
@ -3172,7 +3193,11 @@
|
|||
this.bpkx25.TabStop = false;
|
||||
this.bpkx25.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx25.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx25.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx25.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx25.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx25.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx25.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx24
|
||||
//
|
||||
|
@ -3186,7 +3211,11 @@
|
|||
this.bpkx24.TabStop = false;
|
||||
this.bpkx24.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx24.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx24.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx24.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx24.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx24.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx24.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx23
|
||||
//
|
||||
|
@ -3200,7 +3229,11 @@
|
|||
this.bpkx23.TabStop = false;
|
||||
this.bpkx23.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx23.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx23.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx23.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx23.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx23.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx23.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx22
|
||||
//
|
||||
|
@ -3214,7 +3247,11 @@
|
|||
this.bpkx22.TabStop = false;
|
||||
this.bpkx22.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx22.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx22.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx22.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx22.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx22.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx22.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx21
|
||||
//
|
||||
|
@ -3228,7 +3265,11 @@
|
|||
this.bpkx21.TabStop = false;
|
||||
this.bpkx21.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx21.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx21.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx21.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx21.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx21.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx21.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx20
|
||||
//
|
||||
|
@ -3242,7 +3283,11 @@
|
|||
this.bpkx20.TabStop = false;
|
||||
this.bpkx20.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx20.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx20.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx20.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx20.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx20.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx20.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx19
|
||||
//
|
||||
|
@ -3256,7 +3301,11 @@
|
|||
this.bpkx19.TabStop = false;
|
||||
this.bpkx19.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx19.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx19.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx19.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx19.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx19.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx19.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx18
|
||||
//
|
||||
|
@ -3270,7 +3319,11 @@
|
|||
this.bpkx18.TabStop = false;
|
||||
this.bpkx18.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx18.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx18.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx18.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx18.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx18.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx18.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx17
|
||||
//
|
||||
|
@ -3284,7 +3337,11 @@
|
|||
this.bpkx17.TabStop = false;
|
||||
this.bpkx17.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx17.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx17.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx17.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx17.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx17.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx17.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx16
|
||||
//
|
||||
|
@ -3298,7 +3355,11 @@
|
|||
this.bpkx16.TabStop = false;
|
||||
this.bpkx16.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx16.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx16.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx16.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx16.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx16.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx16.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx15
|
||||
//
|
||||
|
@ -3312,7 +3373,11 @@
|
|||
this.bpkx15.TabStop = false;
|
||||
this.bpkx15.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx15.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx15.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx15.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx15.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx15.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx15.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx14
|
||||
//
|
||||
|
@ -3326,7 +3391,11 @@
|
|||
this.bpkx14.TabStop = false;
|
||||
this.bpkx14.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx14.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx14.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx14.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx14.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx14.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx13
|
||||
//
|
||||
|
@ -3340,7 +3409,11 @@
|
|||
this.bpkx13.TabStop = false;
|
||||
this.bpkx13.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx13.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx13.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx13.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx13.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx13.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx13.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx12
|
||||
//
|
||||
|
@ -3354,7 +3427,11 @@
|
|||
this.bpkx12.TabStop = false;
|
||||
this.bpkx12.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx12.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx12.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx12.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx12.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx12.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx12.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx11
|
||||
//
|
||||
|
@ -3368,7 +3445,11 @@
|
|||
this.bpkx11.TabStop = false;
|
||||
this.bpkx11.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx11.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx11.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx11.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx11.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx11.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx11.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx10
|
||||
//
|
||||
|
@ -3382,7 +3463,11 @@
|
|||
this.bpkx10.TabStop = false;
|
||||
this.bpkx10.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx10.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx10.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx10.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx10.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx10.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx10.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx9
|
||||
//
|
||||
|
@ -3396,7 +3481,11 @@
|
|||
this.bpkx9.TabStop = false;
|
||||
this.bpkx9.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx9.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx9.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx9.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx9.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx9.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx8
|
||||
//
|
||||
|
@ -3410,7 +3499,11 @@
|
|||
this.bpkx8.TabStop = false;
|
||||
this.bpkx8.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx8.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx8.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx8.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx8.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx8.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx7
|
||||
//
|
||||
|
@ -3424,7 +3517,11 @@
|
|||
this.bpkx7.TabStop = false;
|
||||
this.bpkx7.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx7.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx7.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx7.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx7.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx7.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx6
|
||||
//
|
||||
|
@ -3438,7 +3535,11 @@
|
|||
this.bpkx6.TabStop = false;
|
||||
this.bpkx6.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx6.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx5
|
||||
//
|
||||
|
@ -3452,7 +3553,11 @@
|
|||
this.bpkx5.TabStop = false;
|
||||
this.bpkx5.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx5.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx4
|
||||
//
|
||||
|
@ -3466,7 +3571,11 @@
|
|||
this.bpkx4.TabStop = false;
|
||||
this.bpkx4.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx4.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx3
|
||||
//
|
||||
|
@ -3480,7 +3589,11 @@
|
|||
this.bpkx3.TabStop = false;
|
||||
this.bpkx3.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx3.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx2
|
||||
//
|
||||
|
@ -3494,7 +3607,11 @@
|
|||
this.bpkx2.TabStop = false;
|
||||
this.bpkx2.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx2.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bpkx1
|
||||
//
|
||||
|
@ -3508,7 +3625,11 @@
|
|||
this.bpkx1.TabStop = false;
|
||||
this.bpkx1.DragDrop += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragDrop);
|
||||
this.bpkx1.DragEnter += new System.Windows.Forms.DragEventHandler(this.pbBoxSlot_DragEnter);
|
||||
this.bpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// B_BoxRight
|
||||
//
|
||||
|
@ -3624,7 +3745,11 @@
|
|||
this.bbpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.bbpkx1.TabIndex = 8;
|
||||
this.bbpkx1.TabStop = false;
|
||||
this.bbpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bbpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bbpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bbpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bbpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// mnuV
|
||||
//
|
||||
|
@ -3649,7 +3774,11 @@
|
|||
this.bbpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.bbpkx2.TabIndex = 9;
|
||||
this.bbpkx2.TabStop = false;
|
||||
this.bbpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bbpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bbpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bbpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bbpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bbpkx3
|
||||
//
|
||||
|
@ -3660,7 +3789,11 @@
|
|||
this.bbpkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.bbpkx3.TabIndex = 10;
|
||||
this.bbpkx3.TabStop = false;
|
||||
this.bbpkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bbpkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bbpkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bbpkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bbpkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bbpkx4
|
||||
//
|
||||
|
@ -3671,7 +3804,11 @@
|
|||
this.bbpkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.bbpkx4.TabIndex = 11;
|
||||
this.bbpkx4.TabStop = false;
|
||||
this.bbpkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bbpkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bbpkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bbpkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bbpkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bbpkx5
|
||||
//
|
||||
|
@ -3682,7 +3819,11 @@
|
|||
this.bbpkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.bbpkx5.TabIndex = 12;
|
||||
this.bbpkx5.TabStop = false;
|
||||
this.bbpkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bbpkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bbpkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bbpkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bbpkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// bbpkx6
|
||||
//
|
||||
|
@ -3693,7 +3834,11 @@
|
|||
this.bbpkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.bbpkx6.TabIndex = 13;
|
||||
this.bbpkx6.TabStop = false;
|
||||
this.bbpkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.bbpkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.bbpkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.bbpkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.bbpkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// L_ReadOnlyPBB
|
||||
//
|
||||
|
@ -3749,7 +3894,11 @@
|
|||
this.ppkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.ppkx1.TabIndex = 2;
|
||||
this.ppkx1.TabStop = false;
|
||||
this.ppkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.ppkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.ppkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.ppkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.ppkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// ppkx2
|
||||
//
|
||||
|
@ -3760,7 +3909,11 @@
|
|||
this.ppkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.ppkx2.TabIndex = 3;
|
||||
this.ppkx2.TabStop = false;
|
||||
this.ppkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.ppkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.ppkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.ppkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.ppkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// ppkx3
|
||||
//
|
||||
|
@ -3771,7 +3924,11 @@
|
|||
this.ppkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.ppkx3.TabIndex = 4;
|
||||
this.ppkx3.TabStop = false;
|
||||
this.ppkx3.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.ppkx3.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.ppkx3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.ppkx3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.ppkx3.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// ppkx4
|
||||
//
|
||||
|
@ -3782,7 +3939,11 @@
|
|||
this.ppkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.ppkx4.TabIndex = 5;
|
||||
this.ppkx4.TabStop = false;
|
||||
this.ppkx4.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.ppkx4.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.ppkx4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.ppkx4.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.ppkx4.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// ppkx5
|
||||
//
|
||||
|
@ -3793,7 +3954,11 @@
|
|||
this.ppkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.ppkx5.TabIndex = 6;
|
||||
this.ppkx5.TabStop = false;
|
||||
this.ppkx5.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.ppkx5.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.ppkx5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.ppkx5.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.ppkx5.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// ppkx6
|
||||
//
|
||||
|
@ -3804,7 +3969,11 @@
|
|||
this.ppkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.ppkx6.TabIndex = 7;
|
||||
this.ppkx6.TabStop = false;
|
||||
this.ppkx6.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.ppkx6.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.ppkx6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.ppkx6.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.ppkx6.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// Tab_Other
|
||||
//
|
||||
|
@ -3922,7 +4091,11 @@
|
|||
this.dcpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.dcpkx2.TabIndex = 11;
|
||||
this.dcpkx2.TabStop = false;
|
||||
this.dcpkx2.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.dcpkx2.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.dcpkx2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.dcpkx2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.dcpkx2.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// dcpkx1
|
||||
//
|
||||
|
@ -3934,7 +4107,11 @@
|
|||
this.dcpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.dcpkx1.TabIndex = 10;
|
||||
this.dcpkx1.TabStop = false;
|
||||
this.dcpkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.dcpkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.dcpkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.dcpkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.dcpkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// DayCare_HasEgg
|
||||
//
|
||||
|
@ -3967,7 +4144,11 @@
|
|||
this.gtspkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.gtspkx.TabIndex = 23;
|
||||
this.gtspkx.TabStop = false;
|
||||
this.gtspkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.gtspkx.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.gtspkx.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.gtspkx.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.gtspkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// GB_Fused
|
||||
//
|
||||
|
@ -3989,7 +4170,11 @@
|
|||
this.fusedpkx.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.fusedpkx.TabIndex = 24;
|
||||
this.fusedpkx.TabStop = false;
|
||||
this.fusedpkx.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.fusedpkx.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.fusedpkx.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.fusedpkx.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.fusedpkx.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// L_ReadOnlyOther
|
||||
//
|
||||
|
@ -4023,7 +4208,11 @@
|
|||
this.subepkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||
this.subepkx1.TabIndex = 18;
|
||||
this.subepkx1.TabStop = false;
|
||||
this.subepkx1.QueryContinueDrag += new System.Windows.Forms.QueryContinueDragEventHandler(this.pbBoxSlot_QueryContinueDrag);
|
||||
this.subepkx1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseClick);
|
||||
this.subepkx1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseDown);
|
||||
this.subepkx1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseMove);
|
||||
this.subepkx1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.pbBoxSlot_MouseUp);
|
||||
//
|
||||
// subepkx2
|
||||
//
|
||||
|
@ -4189,6 +4378,7 @@
|
|||
this.FLP_SAVtools.Controls.Add(this.B_OpenSecretBase);
|
||||
this.FLP_SAVtools.Controls.Add(this.B_Pokeblocks);
|
||||
this.FLP_SAVtools.Controls.Add(this.B_LinkInfo);
|
||||
this.FLP_SAVtools.Controls.Add(this.B_CGearSkin);
|
||||
this.FLP_SAVtools.Location = new System.Drawing.Point(6, 10);
|
||||
this.FLP_SAVtools.Name = "FLP_SAVtools";
|
||||
this.FLP_SAVtools.Size = new System.Drawing.Size(297, 87);
|
||||
|
@ -4347,6 +4537,16 @@
|
|||
this.B_LinkInfo.UseVisualStyleBackColor = true;
|
||||
this.B_LinkInfo.Click += new System.EventHandler(this.B_LinkInfo_Click);
|
||||
//
|
||||
// B_CGearSkin
|
||||
//
|
||||
this.B_CGearSkin.Location = new System.Drawing.Point(3, 148);
|
||||
this.B_CGearSkin.Name = "B_CGearSkin";
|
||||
this.B_CGearSkin.Size = new System.Drawing.Size(87, 23);
|
||||
this.B_CGearSkin.TabIndex = 24;
|
||||
this.B_CGearSkin.Text = "C-Gear Skin";
|
||||
this.B_CGearSkin.UseVisualStyleBackColor = true;
|
||||
this.B_CGearSkin.Click += new System.EventHandler(this.B_CGearSkin_Click);
|
||||
//
|
||||
// dragout
|
||||
//
|
||||
this.dragout.BackColor = System.Drawing.Color.Transparent;
|
||||
|
@ -4883,6 +5083,7 @@
|
|||
private System.Windows.Forms.Button BTN_Medals;
|
||||
private System.Windows.Forms.FlowLayoutPanel FLP_PKMEditors;
|
||||
private System.Windows.Forms.Button B_LinkInfo;
|
||||
private System.Windows.Forms.Button B_CGearSkin;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace PKHeX
|
|||
{
|
||||
#region Initialize Form
|
||||
new Thread(() => new SplashScreen().ShowDialog()).Start();
|
||||
pkm_from = SAV.BlankPKM.EncryptedPartyData;
|
||||
slotPkmSource = SAV.BlankPKM.EncryptedPartyData;
|
||||
InitializeComponent();
|
||||
CB_ExtraBytes.SelectedIndex = 0;
|
||||
SaveFile.SetUpdateDex = Menu_ModifyDex.Checked;
|
||||
|
@ -115,8 +115,8 @@ namespace PKHeX
|
|||
}
|
||||
if (!SAV.Exportable) // No SAV loaded from exe args
|
||||
{
|
||||
string path = detectSaveFile();
|
||||
if (path != null)
|
||||
string path = SaveUtil.detectSaveFile();
|
||||
if (path != null && File.Exists(path))
|
||||
openQuick(path, force: true);
|
||||
else
|
||||
GB_SAVtools.Visible = false;
|
||||
|
@ -177,54 +177,33 @@ namespace PKHeX
|
|||
|
||||
#region Path Variables
|
||||
|
||||
public static string WorkingDirectory {
|
||||
get
|
||||
{
|
||||
if (ApplicationDeployment.IsNetworkDeployed)
|
||||
{
|
||||
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Environment.CurrentDirectory;
|
||||
}
|
||||
}
|
||||
}
|
||||
public static string WorkingDirectory => ApplicationDeployment.IsNetworkDeployed ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX") : Environment.CurrentDirectory;
|
||||
public static string DatabasePath => Path.Combine(WorkingDirectory, "db");
|
||||
private static string WC6DatabasePath => Path.Combine(WorkingDirectory, "wc6");
|
||||
private static string BackupPath => Path.Combine(WorkingDirectory, "bak");
|
||||
|
||||
public static string DatabasePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(WorkingDirectory, "db");
|
||||
}
|
||||
}
|
||||
|
||||
private static string WC6DatabasePath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(WorkingDirectory, "wc6");
|
||||
}
|
||||
}
|
||||
|
||||
private static string BackupPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(WorkingDirectory, "bak");
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region //// MAIN MENU FUNCTIONS ////
|
||||
// Main Menu Strip UI Functions
|
||||
private void mainMenuOpen(object sender, EventArgs e)
|
||||
{
|
||||
string pkx = pkm.Extension;
|
||||
string ekx = 'e' + pkx.Substring(1, pkx.Length-1);
|
||||
|
||||
string supported = "*.pkm;";
|
||||
for (int i = 3; i <= SAV.Generation; i++)
|
||||
{
|
||||
supported += $"*.pk{i}";
|
||||
if (i != pkm.Format)
|
||||
supported += ";";
|
||||
}
|
||||
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "PKX File|*.pk6;*.pkx" +
|
||||
"|EKX File|*.ek6;*.ekx" +
|
||||
"|BIN File|*.bin" +
|
||||
Filter = $"Decrypted PKM File|{supported}" +
|
||||
$"|Encrypted PKM File|*.{ekx}" +
|
||||
"|Binary File|*.bin" +
|
||||
"|All Files|*.*",
|
||||
RestoreDirectory = true,
|
||||
FilterIndex = 4,
|
||||
|
@ -236,7 +215,7 @@ namespace PKHeX
|
|||
ofd.InitialDirectory = WorkingDirectory;
|
||||
|
||||
// Detect main
|
||||
string path = detectSaveFile();
|
||||
string path = SaveUtil.detectSaveFile();
|
||||
if (path != null)
|
||||
{ ofd.InitialDirectory = Path.GetDirectoryName(path); }
|
||||
else if (File.Exists(Path.Combine(ofd.InitialDirectory, "main")))
|
||||
|
@ -251,32 +230,32 @@ namespace PKHeX
|
|||
{
|
||||
if (!verifiedPKM()) return;
|
||||
PKM pk = preparePKM();
|
||||
string pkx = pk.Extension;
|
||||
string ekx = 'e' + pkx.Substring(1, pkx.Length - 1);
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "PKX File|*.pk6;*.pkx" +
|
||||
"|EKX File|*.ek6;*.ekx" +
|
||||
"|BIN File|*.bin" +
|
||||
Filter = $"Decrypted PKM File|*.{pkx}" +
|
||||
$"|Encrypted PKM File|*.{ekx}" +
|
||||
"|Binary File|*.bin" +
|
||||
"|All Files|*.*",
|
||||
DefaultExt = "pk6",
|
||||
DefaultExt = pkx,
|
||||
FileName = Util.CleanFileName(pk.FileName)
|
||||
};
|
||||
if (sfd.ShowDialog() != DialogResult.OK) return;
|
||||
string path = sfd.FileName;
|
||||
// Injection Dummy Override
|
||||
if (path.Contains("pokemon.ekx")) path = Path.Combine(Path.GetDirectoryName(path), "pokemon.ekx");
|
||||
string ext = Path.GetExtension(path);
|
||||
|
||||
if (File.Exists(path) && !path.Contains("pokemon.ekx"))
|
||||
if (File.Exists(path))
|
||||
{
|
||||
// File already exists, save a .bak
|
||||
byte[] backupfile = File.ReadAllBytes(path);
|
||||
File.WriteAllBytes(path + ".bak", backupfile);
|
||||
}
|
||||
|
||||
if (new[] {".ekx", ".ek6", ".bin"}.Contains(ext))
|
||||
if (new[] {".ekx", "."+ekx, ".bin"}.Contains(ext))
|
||||
File.WriteAllBytes(path, pk.EncryptedPartyData);
|
||||
else if (new[] { ".pkx", ".pk6" }.Contains(ext))
|
||||
File.WriteAllBytes(path, pk.Data);
|
||||
else if (new[] { "."+pkx }.Contains(ext))
|
||||
File.WriteAllBytes(path, pk.DecryptedBoxData);
|
||||
else
|
||||
{
|
||||
Util.Error($"Foreign File Extension: {ext}", "Exporting as encrypted.");
|
||||
|
@ -520,17 +499,17 @@ namespace PKHeX
|
|||
}
|
||||
private void clickOpenSDFFolder(object sender, EventArgs e)
|
||||
{
|
||||
string path;
|
||||
if (Util.get3DSLocation() != null && Directory.Exists(path = Util.GetSDFLocation()))
|
||||
string path = Path.GetPathRoot(Util.get3DSLocation());
|
||||
if (path != null && Directory.Exists(path = Path.Combine(path, "filer", "UserSaveData")))
|
||||
Process.Start("explorer.exe", path);
|
||||
else
|
||||
Util.Alert("Can't find the SaveDataFiler folder.");
|
||||
}
|
||||
private void clickOpenSDBFolder(object sender, EventArgs e)
|
||||
{
|
||||
string path3DS = Util.get3DSLocation();
|
||||
string path3DS = Path.GetPathRoot(Util.get3DSLocation());
|
||||
string path;
|
||||
if (path3DS != null && Directory.Exists(path = Path.Combine(Path.GetPathRoot(path3DS), "SaveDataBackup")))
|
||||
if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "SaveDataBackup")))
|
||||
Process.Start("explorer.exe", path);
|
||||
else
|
||||
Util.Alert("Can't find the SaveDataBackup folder.");
|
||||
|
@ -741,11 +720,11 @@ namespace PKHeX
|
|||
"Cancel: FireRed / LeafGreen");
|
||||
|
||||
if (drGame == DialogResult.Yes)
|
||||
sav = new SAV3(sav.Data, GameVersion.RS);
|
||||
sav = new SAV3(sav.BAK, GameVersion.RS);
|
||||
else if (drGame == DialogResult.No)
|
||||
sav = new SAV3(sav.Data, GameVersion.E);
|
||||
sav = new SAV3(sav.BAK, GameVersion.E);
|
||||
else
|
||||
sav = new SAV3(sav.Data, GameVersion.FRLG);
|
||||
sav = new SAV3(sav.BAK, GameVersion.FRLG);
|
||||
}
|
||||
var drJP = Util.Prompt(MessageBoxButtons.YesNoCancel, $"Generation 3 ({sav.Version}) Save File detected. Select Origins:", "Yes: International" + Environment.NewLine + "No: Japanese");
|
||||
if (drJP == DialogResult.Cancel)
|
||||
|
@ -807,6 +786,7 @@ namespace PKHeX
|
|||
B_JPEG.Visible = SAV.HasJPEG;
|
||||
B_OpenEventFlags.Visible = SAV.HasEvents;
|
||||
B_LinkInfo.Visible = SAV.HasLink;
|
||||
B_CGearSkin.Visible = SAV.Generation == 5;
|
||||
|
||||
// Generational Interface
|
||||
byte[] extraBytes = new byte[1];
|
||||
|
@ -2423,7 +2403,7 @@ namespace PKHeX
|
|||
// Drag & Drop Events
|
||||
private void tabMain_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Move;
|
||||
}
|
||||
private void tabMain_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
|
@ -2819,7 +2799,7 @@ namespace PKHeX
|
|||
for (int i = 0; i < battle.Length; i++)
|
||||
getQuickFiller(SlotPictureBoxes[i + 36], battle[i]);
|
||||
for (int i = battle.Length; i < 6; i++)
|
||||
SlotPictureBoxes[i + 30].Image = null;
|
||||
SlotPictureBoxes[i + 36].Image = null;
|
||||
}
|
||||
}
|
||||
private int getPKXOffset(int slot)
|
||||
|
@ -3256,6 +3236,10 @@ namespace PKHeX
|
|||
{
|
||||
new SAV_Link6().ShowDialog();
|
||||
}
|
||||
private void B_CGearSkin_Click(object sender, EventArgs e)
|
||||
{
|
||||
new SAV_CGearSkin().ShowDialog();
|
||||
}
|
||||
private void B_JPEG_Click(object sender, EventArgs e)
|
||||
{
|
||||
byte[] jpeg = SAV.JPEGData;
|
||||
|
@ -3269,100 +3253,108 @@ namespace PKHeX
|
|||
// Save Folder Related
|
||||
private void clickSaveFileName(object sender, EventArgs e)
|
||||
{
|
||||
string path = detectSaveFile();
|
||||
string path = SaveUtil.detectSaveFile();
|
||||
if (path == null || !File.Exists(path)) return;
|
||||
if (Util.Prompt(MessageBoxButtons.YesNo, "Open save file from the following location?", path) == DialogResult.Yes)
|
||||
openQuick(path); // load save
|
||||
}
|
||||
private static string detectSaveFile()
|
||||
|
||||
// Drag and drop related functions
|
||||
private void pbBoxSlot_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
string pathSDF = Util.GetSDFLocation();
|
||||
string path3DS = Util.get3DSLocation();
|
||||
string pathCache = Util.GetCacheFolder();
|
||||
if (slotDragDropInProgress)
|
||||
return;
|
||||
|
||||
if (path3DS != null && Directory.Exists(Path.Combine(path3DS, "SaveDataBackup")) && ModifierKeys != Keys.Control)
|
||||
return Path.Combine(Path.GetPathRoot(path3DS), "SaveDataBackup", "main");
|
||||
if (pathSDF != null && ModifierKeys != Keys.Shift) // if we have a result
|
||||
return Path.Combine(pathSDF, "main");
|
||||
if (path3DS != null && Directory.Exists(Path.Combine(Path.GetPathRoot(path3DS), "JKSV", "Saves")))
|
||||
return Directory.GetFiles(Path.Combine(Path.GetPathRoot(path3DS), "JKSV", "Saves"), "main", SearchOption.AllDirectories)
|
||||
.Where(f => SaveUtil.SizeValidSAV6((int)new FileInfo(f).Length)) // filter
|
||||
.OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault();
|
||||
if (Directory.Exists(pathCache))
|
||||
return Directory.GetFiles(pathCache).Where(f => SaveUtil.SizeValidSAV6((int)new FileInfo(f).Length)) // filter
|
||||
.OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault();
|
||||
try
|
||||
{
|
||||
if (File.Exists(Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main")))) // if cgse exists
|
||||
return Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root", "main"));
|
||||
} catch { }
|
||||
|
||||
return null;
|
||||
clickSlot(sender, e);
|
||||
}
|
||||
private void pbBoxSlot_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button == MouseButtons.Left)
|
||||
slotLeftMouseIsDown = false;
|
||||
if (e.Button == MouseButtons.Right)
|
||||
slotRightMouseIsDown = false;
|
||||
}
|
||||
|
||||
// Drag & Drop within Box
|
||||
private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.Button != MouseButtons.Left || e.Clicks != 1) return;
|
||||
if (ModifierKeys == Keys.Control || ModifierKeys == Keys.Alt || ModifierKeys == Keys.Shift || ModifierKeys == (Keys.Control | Keys.Alt))
|
||||
{ clickSlot(sender, e); return; }
|
||||
PictureBox pb = (PictureBox)sender;
|
||||
if (pb.Image == null)
|
||||
if (e.Button == MouseButtons.Left)
|
||||
slotLeftMouseIsDown = true;
|
||||
if (e.Button == MouseButtons.Right)
|
||||
slotRightMouseIsDown = true;
|
||||
}
|
||||
private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (slotDragDropInProgress)
|
||||
return;
|
||||
|
||||
pkm_from_slot = getSlot(sender);
|
||||
int offset = getPKXOffset(pkm_from_slot);
|
||||
// Create Temp File to Drag
|
||||
Cursor.Current = Cursors.Hand;
|
||||
|
||||
// Prepare Data
|
||||
pkm_from = SAV.getData(offset, SAV.SIZE_STORED);
|
||||
pkm_from_offset = offset;
|
||||
|
||||
// Make a new file name based off the PID
|
||||
byte[] dragdata = SAV.decryptPKM(pkm_from);
|
||||
Array.Resize(ref dragdata, SAV.SIZE_STORED);
|
||||
PKM pkx = SAV.getPKM(dragdata);
|
||||
string filename = pkx.FileName;
|
||||
|
||||
// Make File
|
||||
string newfile = Path.Combine(Path.GetTempPath(), Util.CleanFileName(filename));
|
||||
try
|
||||
if (slotLeftMouseIsDown)
|
||||
{
|
||||
File.WriteAllBytes(newfile, dragdata);
|
||||
DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||
// The goal is to create a temporary PKX file for the underlying Pokemon
|
||||
// and use that file to perform a drag drop operation.
|
||||
|
||||
// Abort if there is no Pokemon in the given slot.
|
||||
if (((PictureBox)sender).Image == null)
|
||||
return;
|
||||
|
||||
// Set flag to prevent re-entering.
|
||||
slotDragDropInProgress = true;
|
||||
|
||||
slotSourceSlotNumber = getSlot(sender);
|
||||
int offset = getPKXOffset(slotSourceSlotNumber);
|
||||
|
||||
// Prepare Data
|
||||
slotPkmSource = SAV.getData(offset, SAV.SIZE_STORED);
|
||||
slotSourceOffset = offset;
|
||||
|
||||
// Make a new file name based off the PID
|
||||
byte[] dragdata = SAV.decryptPKM(slotPkmSource);
|
||||
Array.Resize(ref dragdata, SAV.SIZE_STORED);
|
||||
PKM pkx = SAV.getPKM(dragdata);
|
||||
string filename = pkx.FileName;
|
||||
|
||||
// Make File
|
||||
string newfile = Path.Combine(Path.GetTempPath(), Util.CleanFileName(filename));
|
||||
try
|
||||
{
|
||||
File.WriteAllBytes(newfile, dragdata);
|
||||
// Thread Blocks on DoDragDrop
|
||||
((PictureBox)sender).DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||
}
|
||||
catch (Exception x)
|
||||
{
|
||||
Util.Error("Drag & Drop Error:", x.ToString());
|
||||
}
|
||||
slotSourceOffset = 0;
|
||||
|
||||
// Browser apps need time to load data since the file isn't moved to a location on the user's local storage.
|
||||
// Tested 10ms -> too quick, 100ms was fine. 500ms should be safe?
|
||||
new Thread(() =>
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
if (File.Exists(newfile))
|
||||
File.Delete(newfile);
|
||||
}).Start();
|
||||
}
|
||||
catch (ArgumentException x)
|
||||
{ Util.Error("Drag & Drop Error:", x.ToString()); }
|
||||
pkm_from_offset = 0;
|
||||
|
||||
// Browser apps need time to load data since the file isn't moved to a location on the user's local storage.
|
||||
// Tested 10ms -> too quick, 100ms was fine. 500ms should be safe?
|
||||
new Thread(() =>
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
if (File.Exists(newfile))
|
||||
File.Delete(newfile);
|
||||
}).Start();
|
||||
}
|
||||
private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
|
||||
{
|
||||
int slot = getSlot(sender);
|
||||
int offset = getPKXOffset(slot);
|
||||
int slotDestinationSlotNumber = getSlot(sender);
|
||||
int slotDestinationOffset = getPKXOffset(slotDestinationSlotNumber);
|
||||
|
||||
// Check for In-Dropped files (PKX,SAV,ETC)
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
if (Directory.Exists(files[0])) { loadBoxesFromDB(files[0]); return; }
|
||||
if (pkm_from_offset == 0)
|
||||
if (slotSourceOffset == 0)
|
||||
{
|
||||
if (files.Length <= 0)
|
||||
return;
|
||||
string file = files[0];
|
||||
if (!PKX.getIsPKM(new FileInfo(file).Length))
|
||||
FileInfo fi = new FileInfo(file);
|
||||
if (!PKX.getIsPKM(fi.Length) && !MysteryGift.getIsMysteryGift(fi.Length))
|
||||
{ openQuick(file); return; }
|
||||
|
||||
byte[] data = File.ReadAllBytes(file);
|
||||
PKM temp = PKMConverter.getPKMfromBytes(data);
|
||||
MysteryGift mg = MysteryGift.getMysteryGift(data, fi.Extension);
|
||||
PKM temp = mg != null ? mg.convertToPKM(SAV) : PKMConverter.getPKMfromBytes(data);
|
||||
string c;
|
||||
|
||||
PKM pk = PKMConverter.convertToFormat(temp, SAV.Generation, out c);
|
||||
|
@ -3377,36 +3369,45 @@ namespace PKHeX
|
|||
{ Console.WriteLine(c); Console.WriteLine(concat); return; }
|
||||
}
|
||||
|
||||
SAV.setStoredSlot(pk, offset);
|
||||
getQuickFiller(SlotPictureBoxes[slot], pk);
|
||||
getSlotColor(slot, Properties.Resources.slotSet);
|
||||
SAV.setStoredSlot(pk, slotDestinationOffset);
|
||||
getQuickFiller(SlotPictureBoxes[slotDestinationSlotNumber], pk);
|
||||
getSlotColor(slotDestinationSlotNumber, Properties.Resources.slotSet);
|
||||
Console.WriteLine(c);
|
||||
}
|
||||
else
|
||||
{
|
||||
PKM pkz = SAV.getStoredSlot(pkm_from_offset);
|
||||
if (ModifierKeys == Keys.Alt && slot > -1) // overwrite delete old slot
|
||||
PKM pkz = SAV.getStoredSlot(slotSourceOffset);
|
||||
if (ModifierKeys == Keys.Alt && slotDestinationSlotNumber > -1) // overwrite delete old slot
|
||||
{
|
||||
// Clear from slot
|
||||
getQuickFiller(SlotPictureBoxes[pkm_from_slot], SAV.BlankPKM); // picturebox
|
||||
SAV.setStoredSlot(SAV.BlankPKM, pkm_from_offset); // savefile
|
||||
getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], SAV.BlankPKM); // picturebox
|
||||
SAV.setStoredSlot(SAV.BlankPKM, slotSourceOffset); // savefile
|
||||
}
|
||||
else if (ModifierKeys != Keys.Control && slot > -1)
|
||||
else if (ModifierKeys != Keys.Control && slotDestinationSlotNumber > -1)
|
||||
{
|
||||
// Load data from destination
|
||||
PKM pk = SAV.getStoredSlot(offset);
|
||||
if (((PictureBox)sender).Image != null)
|
||||
{
|
||||
// Load data from destination
|
||||
PKM pk = SAV.getStoredSlot(slotDestinationOffset);
|
||||
|
||||
// Swap slot picture
|
||||
getQuickFiller(SlotPictureBoxes[pkm_from_slot], pk);
|
||||
// Set destination pokemon image to source picture box
|
||||
getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], pk);
|
||||
|
||||
// Swap slot data to source
|
||||
SAV.setStoredSlot(pk, pkm_from_offset);
|
||||
// Set destination pokemon data to source slot
|
||||
SAV.setStoredSlot(pk, slotSourceOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Set blank to source slot
|
||||
SAV.setStoredSlot(SAV.BlankPKM, slotSourceOffset);
|
||||
SlotPictureBoxes[slotSourceSlotNumber].Image = null;
|
||||
}
|
||||
}
|
||||
// Copy from temp slot to new.
|
||||
SAV.setStoredSlot(pkz, offset);
|
||||
getQuickFiller(SlotPictureBoxes[slot], pkz);
|
||||
// Copy from temp to destination slot.
|
||||
SAV.setStoredSlot(pkz, slotDestinationOffset);
|
||||
getQuickFiller(SlotPictureBoxes[slotDestinationSlotNumber], pkz);
|
||||
|
||||
pkm_from_offset = 0; // Clear offset value
|
||||
slotSourceOffset = 0; // Clear offset value
|
||||
}
|
||||
}
|
||||
private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)
|
||||
|
@ -3416,10 +3417,22 @@ namespace PKHeX
|
|||
else if (e.Data != null) // within
|
||||
e.Effect = DragDropEffects.Move;
|
||||
}
|
||||
private void pbBoxSlot_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
|
||||
{
|
||||
if (e.Action == DragAction.Cancel || e.Action == DragAction.Drop)
|
||||
{
|
||||
slotLeftMouseIsDown = false;
|
||||
slotRightMouseIsDown = false;
|
||||
slotDragDropInProgress = false;
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] pkm_from;
|
||||
private int pkm_from_offset;
|
||||
private int pkm_from_slot = -1;
|
||||
private static bool slotLeftMouseIsDown = false;
|
||||
private static bool slotRightMouseIsDown = false;
|
||||
private static bool slotDragDropInProgress = false;
|
||||
private byte[] slotPkmSource;
|
||||
private int slotSourceOffset;
|
||||
private int slotSourceSlotNumber = -1;
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1306,6 +1306,9 @@
|
|||
<metadata name="B_LinkInfo.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="B_CGearSkin.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dragout.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
|
|
@ -5,6 +5,10 @@ namespace PKHeX
|
|||
{
|
||||
public abstract class MysteryGift
|
||||
{
|
||||
internal static bool getIsMysteryGift(long len)
|
||||
{
|
||||
return new[] { WC6.SizeFull, WC6.Size, PGF.Size, PGT.Size, PCD.Size }.Contains((int)len);
|
||||
}
|
||||
internal static MysteryGift getMysteryGift(byte[] data, string ext)
|
||||
{
|
||||
if (data.Length == WC6.SizeFull && ext == ".wc6full")
|
||||
|
|
11
PKHeX.csproj
11
PKHeX.csproj
|
@ -173,6 +173,13 @@
|
|||
</Compile>
|
||||
<Compile Include="Saves\SaveObjects.cs" />
|
||||
<Compile Include="Saves\SaveUtil.cs" />
|
||||
<Compile Include="Subforms\Save Editors\Gen5\CGearBackground.cs" />
|
||||
<Compile Include="Subforms\Save Editors\Gen5\SAV_CGearSkin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Subforms\Save Editors\Gen5\SAV_CGearSkin.Designer.cs">
|
||||
<DependentUpon>SAV_CGearSkin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Subforms\Save Editors\Gen6\SAV_Link6.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -324,6 +331,9 @@
|
|||
<EmbeddedResource Include="Subforms\PKM Editors\MemoryAmie.resx">
|
||||
<DependentUpon>MemoryAmie.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Subforms\Save Editors\Gen5\SAV_CGearSkin.resx">
|
||||
<DependentUpon>SAV_CGearSkin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Subforms\Save Editors\Gen6\SAV_Link6.resx">
|
||||
<DependentUpon>SAV_Link6.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -708,6 +718,7 @@
|
|||
<None Include="Resources\img\box\xy\box_wp03xy.png" />
|
||||
<None Include="Resources\img\box\xy\box_wp02xy.png" />
|
||||
<None Include="Resources\img\box\xy\box_wp01xy.png" />
|
||||
<None Include="Resources\img\item\item_tm.png" />
|
||||
<Content Include="Resources\text\de\text_Pokeblock_de.txt" />
|
||||
<None Include="Resources\text\de\text_tradeao_de.txt" />
|
||||
<None Include="Resources\text\de\text_tradexy_de.txt" />
|
||||
|
|
|
@ -105,7 +105,7 @@ namespace PKHeX
|
|||
public override int Met_Location { get { return Data[0x45]; } set { Data[0x45] = (byte)value; } }
|
||||
// Origins
|
||||
private ushort Origins { get { return BitConverter.ToUInt16(Data, 0x46); } set { BitConverter.GetBytes(value).CopyTo(Data, 0x46); } }
|
||||
public override int Met_Level { get { return Origins & 0x3F; } set { Origins = (ushort)((Origins & ~0x3F) | value); } }
|
||||
public override int Met_Level { get { return Origins & 0x7F; } set { Origins = (ushort)((Origins & ~0x7F) | value); } }
|
||||
public override int Version { get { return (Origins >> 7) & 0xF; } set { Origins = (ushort)((Origins & ~0x780) | ((value & 0xF) << 7));} }
|
||||
public override int Ball { get { return (Origins >> 11) & 0xF; } set { Origins = (ushort)((Origins & ~0x7800) | ((value & 0xF) << 11)); } }
|
||||
public override int OT_Gender { get { return (Origins >> 15) & 1; } set { Origins = (ushort)(Origins & ~(1 << 15) | ((value & 1) << 15)); } }
|
||||
|
@ -196,7 +196,7 @@ namespace PKHeX
|
|||
SID = SID,
|
||||
EXP = IsEgg ? PKX.getEXP(5, Species) : EXP,
|
||||
IsEgg = false,
|
||||
OT_Friendship = 40,
|
||||
OT_Friendship = 70,
|
||||
MarkCircle = MarkCircle,
|
||||
MarkSquare = MarkSquare,
|
||||
MarkTriangle = MarkTriangle,
|
||||
|
@ -296,6 +296,10 @@ namespace PKHeX
|
|||
// Unown Form
|
||||
pk4.AltForm = AltForm;
|
||||
|
||||
int item = HeldItem;
|
||||
if (HeldItem > 0)
|
||||
pk4.HeldItem = item;
|
||||
|
||||
// Remove HM moves
|
||||
int[] banned = { 15, 19, 57, 70, 148, 249, 127, 291 };
|
||||
int[] newMoves = pk4.Moves;
|
||||
|
|
60
PKM/PK4.cs
60
PKM/PK4.cs
|
@ -261,10 +261,21 @@ namespace PKHeX
|
|||
}
|
||||
set
|
||||
{
|
||||
if (PtHGSS)
|
||||
if (value == 0)
|
||||
{
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x44);
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x7E);
|
||||
}
|
||||
else if (PtHGSS)
|
||||
{
|
||||
BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x44);
|
||||
BitConverter.GetBytes(0x7D0).CopyTo(Data, 0x7E);
|
||||
BitConverter.GetBytes(0xBBA).CopyTo(Data, 0x7E); // Faraway Place (for DP display)
|
||||
}
|
||||
else if ((value < 2000 && value > 111) || (value < 3000 && value > 2010))
|
||||
{
|
||||
// Met location not in DP, set to Mystery Zone (0, illegal) as opposed to Faraway Place
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x44);
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x7E);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -284,10 +295,21 @@ namespace PKHeX
|
|||
}
|
||||
set
|
||||
{
|
||||
if (PtHGSS)
|
||||
if (value == 0)
|
||||
{
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x46);
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x80);
|
||||
}
|
||||
else if (PtHGSS)
|
||||
{
|
||||
BitConverter.GetBytes((ushort)value).CopyTo(Data, 0x46);
|
||||
BitConverter.GetBytes(0x7D0).CopyTo(Data, 0x80);
|
||||
BitConverter.GetBytes(0xBBA).CopyTo(Data, 0x80); // Faraway Place (for DP display)
|
||||
}
|
||||
else if ((value < 2000 && value > 111) || (value < 3000 && value > 2010))
|
||||
{
|
||||
// Met location not in DP, set to Mystery Zone (0, illegal) as opposed to Faraway Place
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x46);
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(Data, 0x80);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -299,11 +321,26 @@ namespace PKHeX
|
|||
private byte PKRS { get { return Data[0x82]; } set { Data[0x82] = value; } }
|
||||
public override int PKRS_Days { get { return PKRS & 0xF; } set { PKRS = (byte)(PKRS & ~0xF | value); } }
|
||||
public override int PKRS_Strain { get { return PKRS >> 4; } set { PKRS = (byte)(PKRS & 0xF | (value << 4)); } }
|
||||
public override int Ball { get { return Data[0x83]; } set { Data[0x83] = (byte)value; } }
|
||||
public override int Ball
|
||||
{
|
||||
get { return Data[HGSS ? 0x86 : 0x83]; }
|
||||
set
|
||||
{
|
||||
if (HGSS)
|
||||
{
|
||||
Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Ball to display in DP (cap at Cherish)
|
||||
Data[0x86] = (byte)(value <= 0x18 ? value : 4); // Cap at Comp Ball
|
||||
}
|
||||
else
|
||||
{
|
||||
Data[0x83] = (byte)(value <= 0x10 ? value : 4); // Cap at Cherish Ball
|
||||
Data[0x86] = 0; // Unused
|
||||
}
|
||||
}
|
||||
}
|
||||
public override int Met_Level { get { return Data[0x84] & ~0x80; } set { Data[0x84] = (byte)((Data[0x84] & 0x80) | value); } }
|
||||
public override int OT_Gender { get { return Data[0x84] >> 7; } set { Data[0x84] = (byte)((Data[0x84] & ~0x80) | value << 7); } }
|
||||
public override int EncounterType { get { return Data[0x85]; } set { Data[0x85] = (byte)value; } }
|
||||
public int HGSSBall { get { return Data[0x86]; } set { Data[0x86] = (byte)value; } }
|
||||
// Unused 0x87
|
||||
#endregion
|
||||
|
||||
|
@ -392,14 +429,13 @@ namespace PKHeX
|
|||
BitConverter.GetBytes((uint)0).CopyTo(pk5.Data, 0x44);
|
||||
|
||||
// Met / Crown Data Detection
|
||||
pk5.Met_Location = pk5.FatefulEncounter && Array.IndexOf(new[] {251, 243, 244, 245}, pk5.Species) >= 0
|
||||
pk5.Met_Location = pk5.Gen4 && pk5.FatefulEncounter && Array.IndexOf(new[] {251, 243, 244, 245}, pk5.Species) >= 0
|
||||
? (pk5.Species == 251 ? 30010 : 30012) // Celebi : Beast
|
||||
: 30001; // Pokétransfer (not Crown)
|
||||
|
||||
// Delete HGSS Data
|
||||
BitConverter.GetBytes((ushort)0).CopyTo(pk5.Data, 0x86);
|
||||
if (HGSSBall > 0 && HGSSBall != 4)
|
||||
pk5.Ball = HGSSBall;
|
||||
pk5.Ball = Ball;
|
||||
|
||||
// Transfer Nickname and OT Name
|
||||
pk5.Nickname = Nickname;
|
||||
|
@ -409,9 +445,9 @@ namespace PKHeX
|
|||
pk5.Met_Level = PKX.getLevel(pk5.Species, pk5.EXP);
|
||||
|
||||
// Remove HM moves; Defog should be kept if both are learned.
|
||||
int[] banned = Moves.Contains(250) /*Whirlpool*/ && !Moves.Contains(432) /*Defog*/
|
||||
? new[] {15, 19, 57, 70, 432, 249, 127, 431} // No Defog
|
||||
: new[] {15, 19, 57, 70, 250, 249, 127, 431};// No Whirlpool
|
||||
int[] banned = Moves.Contains(250) && Moves.Contains(432) // Whirlpool & Defog
|
||||
? new[] {15, 19, 57, 70, 250, 249, 127, 431} // No Whirlpool
|
||||
: new[] {15, 19, 57, 70, 249, 127, 431};// Transfer via advantageous game
|
||||
|
||||
int[] newMoves = pk5.Moves;
|
||||
for (int i = 0; i < 4; i++)
|
||||
|
|
|
@ -147,7 +147,8 @@ namespace PKHeX
|
|||
public bool XY => Version == (int)GameVersion.X || Version == (int)GameVersion.Y;
|
||||
public bool AO => Version == (int)GameVersion.AS || Version == (int)GameVersion.OR;
|
||||
public bool SM => Version == (int)GameVersion.SN || Version == (int)GameVersion.MN;
|
||||
public bool PtHGSS => new[] {GameVersion.Pt, GameVersion.HG, GameVersion.SS}.Contains((GameVersion)Version);
|
||||
protected bool PtHGSS => GameVersion.Pt == (GameVersion)Version || HGSS;
|
||||
public bool HGSS => new[] {GameVersion.HG, GameVersion.SS}.Contains((GameVersion)Version);
|
||||
public bool Gen5 => Version >= 20 && Version <= 23;
|
||||
public bool Gen4 => Version >= 10 && Version < 12 || Version >= 7 && Version <= 8;
|
||||
public bool Gen3 => Version >= 1 && Version <= 5 || Version == 15;
|
||||
|
|
87
PKM/PKX.cs
87
PKM/PKX.cs
|
@ -457,7 +457,7 @@ namespace PKHeX
|
|||
}
|
||||
|
||||
// Data Requests
|
||||
internal static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny)
|
||||
internal static Image getSprite(int species, int form, int gender, int item, bool isegg, bool shiny, int generation = -1)
|
||||
{
|
||||
if (species == 0)
|
||||
return (Image)Resources.ResourceManager.GetObject("_0");
|
||||
|
@ -499,6 +499,9 @@ namespace PKHeX
|
|||
if (item > 0)
|
||||
{
|
||||
Image itemimg = (Image)Resources.ResourceManager.GetObject("item_" + item) ?? Resources.helditem;
|
||||
if ((generation == 3 || generation == 4) && 328 <= item && item <= 419) // gen3/4 TM
|
||||
itemimg = Resources.item_tm;
|
||||
|
||||
// Redraw
|
||||
baseImage = Util.LayerImage(baseImage, itemimg, 22 + (15 - itemimg.Width) / 2, 15 + (15 - itemimg.Height), 1);
|
||||
}
|
||||
|
@ -506,7 +509,7 @@ namespace PKHeX
|
|||
}
|
||||
internal static Image getSprite(PKM pkm)
|
||||
{
|
||||
return getSprite(pkm.Species, pkm.AltForm, pkm.Gender, pkm.HeldItem, pkm.IsEgg, pkm.IsShiny);
|
||||
return getSprite(pkm.Species, pkm.AltForm, pkm.Gender, pkm.HeldItem, pkm.IsEgg, pkm.IsShiny, pkm.Format);
|
||||
}
|
||||
|
||||
// Font Related
|
||||
|
@ -1043,7 +1046,8 @@ namespace PKHeX
|
|||
{ Array.Resize(ref strdata, i); break; }
|
||||
strdata[i] = val;
|
||||
}
|
||||
strdata[str.Length] = 0xFF;
|
||||
if (strdata.Length > 0)
|
||||
strdata[strdata.Length - 1] = 0xFF;
|
||||
return strdata;
|
||||
}
|
||||
|
||||
|
@ -1469,44 +1473,42 @@ namespace PKHeX
|
|||
|
||||
internal static readonly ushort[] G34_4E =
|
||||
{
|
||||
478, 351, 352, 353, 358, 359, 360, 361, 362, 363, 020, 365, 366, 369, 370,
|
||||
371, 415, 376, 377, 378, 368, 382, 383, 384, 046, 358, 359, 392, 393, 394,
|
||||
395, 396, 397, 398, 401, 402, 403, 416, 408, 409, 410, 400, 420, 419, 479,
|
||||
450, 445, 003, 004, 006, 008, 010, 068, 449, 072, 013, 015, 017, 019, 021,
|
||||
023, 025, 027, 029, 031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061,
|
||||
050, 053, 056, 059, 062, 036, 426, 425, 480, 481, 091, 092, 094, 096, 098,
|
||||
364, 100, 102, 106, 108, 110, 112, 114, 117, 119, 121, 123, 124, 125, 385,
|
||||
127, 128, 131, 134, 137, 140, 396, 144, 145, 146, 147, 149, 151, 153, 154,
|
||||
155, 156, 157, 158, 159, 160, 161, 082, 084, 086, 088, 090, 148, 150, 152,
|
||||
093, 095, 097, 099, 101, 103, 105, 107, 109, 111, 113, 115, 118, 120, 122,
|
||||
129, 132, 135, 138, 141, 130, 133, 136, 139, 142, 116, 289, 290, 291, 292,
|
||||
293, 294, 295, 296, 297, 298, 427, 428, 430, 241, 230, 431, 436, 437, 434,
|
||||
435, 443, 444, 424, 429, 242, 433, 299, 300, 301, 302, 303, 304, 305, 306,
|
||||
307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
|
||||
322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
|
||||
337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 289,
|
||||
452, 355, 373, 379, 387, 405, 411
|
||||
478, 351, 352, 353, 358, 359, 360, 361, 362, 363, 020, 365, 366, 369, 370, 371, // 0
|
||||
415, 376, 377, 378, 368, 382, 383, 384, 046, 358, 359, 392, 393, 394, 395, 396, // 1
|
||||
397, 398, 401, 402, 403, 416, 408, 409, 410, 400, 420, 419, 479, 450, 445, 003, // 2
|
||||
004, 006, 008, 010, 068, 449, 072, 013, 015, 017, 019, 021, 023, 025, 027, 029, // 3
|
||||
031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061, 050, 053, 056, 059, 062, // 4
|
||||
036, 426, 425, 480, 481, 091, 092, 094, 096, 098, 364, 100, 102, 106, 108, 110, // 5
|
||||
112, 114, 117, 119, 121, 123, 124, 125, 385, 127, 128, 131, 134, 137, 140, 396, // 6
|
||||
144, 145, 146, 147, 149, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 082, // 7
|
||||
084, 086, 088, 090, 148, 150, 152, 093, 095, 097, 099, 101, 103, 105, 107, 109, // 8
|
||||
111, 113, 115, 118, 120, 122, 129, 132, 135, 138, 141, 130, 133, 136, 139, 142, // 9
|
||||
116, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 427, 428, 430, 446, 230, // A
|
||||
431, 436, 437, 434, 435, 443, 444, 424, 429, 242, 433, 299, 300, 301, 302, 303, // B
|
||||
304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, // C
|
||||
320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, // D
|
||||
336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 289, // E
|
||||
452, 355, 373, 379, 387, 405, 411 // F
|
||||
};
|
||||
|
||||
internal static readonly ushort[] G34_4J =
|
||||
{
|
||||
001, 003, 005, 007, 009, 011, 012, 014, 016, 018, 020, 022, 024, 026, 028,
|
||||
030, 032, 034, 037, 039, 041, 043, 044, 045, 046, 047, 048, 051, 054, 057,
|
||||
060, 063, 064, 065, 066, 067, 069, 071, 073, 074, 075, 076, 077, 078, 079,
|
||||
080, 081, 002, 004, 006, 008, 010, 068, 070, 072, 013, 015, 017, 019, 021,
|
||||
023, 025, 027, 029, 031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061,
|
||||
050, 053, 056, 059, 062, 036, 083, 085, 087, 089, 091, 092, 094, 096, 098,
|
||||
100, 102, 104, 106, 108, 110, 112, 114, 117, 119, 121, 123, 124, 125, 126,
|
||||
127, 128, 131, 134, 137, 140, 143, 144, 145, 146, 147, 149, 151, 153, 154,
|
||||
155, 156, 157, 158, 159, 160, 161, 082, 084, 086, 088, 090, 148, 150, 152,
|
||||
093, 095, 097, 099, 101, 103, 105, 107, 109, 111, 113, 115, 118, 120, 122,
|
||||
129, 132, 135, 138, 141, 130, 133, 136, 139, 142, 116, 162, 163, 164, 165,
|
||||
166, 167, 168, 169, 170, 171, 225, 226, 228, 241, 230, 229, 234, 235, 232,
|
||||
233, 443, 444, 424, 430, 242, 433, 172, 173, 174, 175, 176, 177, 178, 179,
|
||||
180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
|
||||
195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
|
||||
210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 289,
|
||||
452, 355, 373, 379, 387, 405, 411
|
||||
001, 003, 005, 007, 009, 011, 012, 014, 016, 018, 020, 022, 024, 026, 028, 030, // 0
|
||||
032, 034, 037, 039, 041, 043, 044, 045, 046, 047, 048, 051, 054, 057, 060, 063, // 1
|
||||
064, 065, 066, 067, 069, 071, 073, 074, 075, 076, 077, 078, 079, 080, 081, 002, // 2
|
||||
004, 006, 008, 010, 068, 070, 072, 013, 015, 017, 019, 021, 023, 025, 027, 029, // 3
|
||||
031, 033, 035, 038, 040, 042, 049, 052, 055, 058, 061, 050, 053, 056, 059, 062, // 4
|
||||
036, 083, 085, 087, 089, 091, 092, 094, 096, 098, 100, 102, 104, 106, 108, 110, // 5
|
||||
112, 114, 117, 119, 121, 123, 124, 125, 126, 127, 128, 131, 134, 137, 140, 143, // 6
|
||||
144, 145, 146, 147, 149, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 082, // 7
|
||||
084, 086, 088, 090, 148, 150, 152, 093, 095, 097, 099, 101, 103, 105, 107, 109, // 8
|
||||
111, 113, 115, 118, 120, 122, 129, 132, 135, 138, 141, 130, 133, 136, 139, 142, // 9
|
||||
116, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 225, 226, 228, 446, 230, // A
|
||||
229, 234, 235, 232, 233, 443, 444, 424, 430, 242, 433, 172, 173, 174, 175, 176, // B
|
||||
177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, // C
|
||||
193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, // D
|
||||
209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 289, // E
|
||||
452, 355, 373, 379, 387, 405, 411 // F
|
||||
};
|
||||
#endregion
|
||||
|
||||
|
@ -1577,7 +1579,7 @@ namespace PKHeX
|
|||
66,67,68,69,43,44,70,71,72,73,
|
||||
74,75,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,45,46,47,48,49,50,51,
|
||||
52,53,0xFFFF,55,56,57,58,59,60,0xFFFF,
|
||||
52,53,0xFFFF,55,56,57,58,59,60,61,
|
||||
63,64,0xFFFF,76,77,78,79,0xFFFF,0xFFFF,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,80,81,82,83,84,85,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,86,87,0xFFFF,88,89,90,91,
|
||||
|
@ -1596,6 +1598,15 @@ namespace PKHeX
|
|||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,260,261,262,263,264,
|
||||
|
||||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
|
||||
328,329,330,331,332,333,334,335,336,337,
|
||||
338,339,340,341,342,343,344,345,346,347,
|
||||
348,349,350,351,352,353,354,355,356,357,
|
||||
358,359,360,361,362,363,364,365,366,367,
|
||||
368,369,370,371,372,373,374,375,376,377,
|
||||
};
|
||||
if (g3val > arr.Length)
|
||||
return 0xFFFF;
|
||||
|
|
98
Properties/Resources.Designer.cs
generated
98
Properties/Resources.Designer.cs
generated
|
@ -15132,6 +15132,16 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap item_tm {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("item_tm", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to ! PKHeX Interface Customization File
|
||||
///! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable.
|
||||
|
@ -15181,11 +15191,11 @@ namespace PKHeX.Properties {
|
|||
/// <summary>
|
||||
/// Looks up a localized string similar to ! PKHeX Interface Customization File
|
||||
///! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable.
|
||||
///! lang_en.txt = English
|
||||
///! lang_jp.txt = Japanese
|
||||
///! lang_en.txt = Inglés
|
||||
///! lang_jp.txt = Japonés
|
||||
///! lang_fr.txt = French
|
||||
///! lang_de.txt = German
|
||||
///! lang_es.txt = Spanish
|
||||
///! lang_de.txt = Alemán
|
||||
///! lang_es.txt = Español
|
||||
///! lang_it.txt = Italian
|
||||
///! lang_ko.txt = Korean
|
||||
///! lang_zh.txt = Chinese
|
||||
|
@ -15193,7 +15203,7 @@ namespace PKHeX.Properties {
|
|||
///! Make sure that each edit has a ' = ' between Control name and new Text!
|
||||
///!
|
||||
///! -----------------------------------------------------
|
||||
///- DO NOT CHANGE THI [rest of string was truncated]";.
|
||||
///- DO NOT CHANGE THIS [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string lang_es {
|
||||
get {
|
||||
|
@ -20500,18 +20510,18 @@ namespace PKHeX.Properties {
|
|||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to None
|
||||
///Rock Smash (HGSS)
|
||||
///Tall Grass
|
||||
///Golpe roca (HGSS)
|
||||
///Hierba Alta
|
||||
///
|
||||
///Dialga/Palkia
|
||||
///Cave/Hall of Origin
|
||||
///Cueva/Sala del Origen
|
||||
///
|
||||
///Surfing/Fishing
|
||||
///Surfeando/Pescando
|
||||
///
|
||||
///Building/Enigma Stone
|
||||
///Marsh/Safari
|
||||
///Edificio/Misticristal
|
||||
///Pantano/Safari
|
||||
///
|
||||
///Starter/Fossil/Gift (DP)
|
||||
///Inicial/Fosil/Regalo (DP)
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -20522,8 +20532,8 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///Distortion World (Pt)
|
||||
///Starter/Fossil/Gift (Pt/DP Trio).
|
||||
///Mundo Distorsion (Pt)
|
||||
///Inicial/Fosil/Regalo (Pt/DP Trio).
|
||||
/// </summary>
|
||||
internal static string text_encountertype_es {
|
||||
get {
|
||||
|
@ -20697,7 +20707,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -20949,9 +20959,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_de {
|
||||
get {
|
||||
|
@ -20960,7 +20968,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -21212,9 +21220,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_en {
|
||||
get {
|
||||
|
@ -21223,7 +21229,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -21474,10 +21480,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
/// [rest of string was truncated]";.
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_es {
|
||||
get {
|
||||
|
@ -21486,7 +21489,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -21736,10 +21739,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
/// [rest of string was truncated]";.
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_fr {
|
||||
get {
|
||||
|
@ -21748,7 +21748,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -21999,10 +21999,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
/// [rest of string was truncated]";.
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_it {
|
||||
get {
|
||||
|
@ -22011,7 +22008,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -22262,9 +22259,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_ja {
|
||||
get {
|
||||
|
@ -22273,7 +22268,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -22525,9 +22520,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_ko {
|
||||
get {
|
||||
|
@ -22536,7 +22529,7 @@ namespace PKHeX.Properties {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to
|
||||
/// Looks up a localized string similar to Spiky
|
||||
///
|
||||
///
|
||||
///
|
||||
|
@ -22787,10 +22780,7 @@ namespace PKHeX.Properties {
|
|||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
///
|
||||
/// [rest of string was truncated]";.
|
||||
///
/// [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
internal static string text_forms_zh {
|
||||
get {
|
||||
|
@ -22878,8 +22868,8 @@ namespace PKHeX.Properties {
|
|||
///RojoFuego
|
||||
///VerdeHoja
|
||||
///
|
||||
///HeartGold
|
||||
///SoulSilver
|
||||
///Oro HeartGold
|
||||
///Plata SoulSilver
|
||||
///
|
||||
///Diamante
|
||||
///Perla
|
||||
|
@ -22897,8 +22887,8 @@ namespace PKHeX.Properties {
|
|||
///Negra2
|
||||
///X
|
||||
///Y
|
||||
///AS
|
||||
///OR.
|
||||
///Zafiro Alfa
|
||||
///Rubí Omega.
|
||||
/// </summary>
|
||||
internal static string text_games_es {
|
||||
get {
|
||||
|
|
|
@ -6382,4 +6382,7 @@
|
|||
<data name="slotView1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\img\box\slotView.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="item_tm" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\img\item\item_tm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
Binary file not shown.
Binary file not shown.
BIN
Resources/img/item/item_tm.png
Normal file
BIN
Resources/img/item/item_tm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 777 B |
|
@ -752,7 +752,7 @@ http://projectpokemon.org/forums/showthread.php?36986
|
|||
- Changed: Database can now search pk3/pk4/pk5/pk6 files.
|
||||
- - An advance search option has been added, uses the same filter style as the Batch Editor.
|
||||
|
||||
07/30/16 - New Update:
|
||||
07/31/16 - New Update: (21700)
|
||||
- Added: Batch editor "Shinify" command to make a Pokemon shiny ($shiny). Thanks exegg!
|
||||
- Changed: Ribbon editor is now wider (5 ribbons per row). Thanks \!
|
||||
- Fixed: Gen 3/4 save issues. Thanks BeyondTheHorizon, poutros!
|
||||
|
@ -762,4 +762,16 @@ http://projectpokemon.org/forums/showthread.php?36986
|
|||
- Fixed: Misc Pokémon Link legality cases fixed. Thanks poutros!
|
||||
- Fixed: Misc linux issues with latest refactoring. Thanks Zekario!
|
||||
- Fixed: Trainer Editor window ~ Unicode character display. Thanks \!
|
||||
- Fixed: Minor main window editing bugs for EXP/Nature/Gender.
|
||||
- Fixed: Minor main window editing bugs for EXP/Nature/Gender.
|
||||
|
||||
08/07/16 - New Update:
|
||||
- Added: TWLSaveTool folder auto-detection for past generation save files.
|
||||
- Changed: Save file auto-detection now detects the last saved file instead of a predefined order. Saving a NDS game after 3DS game will return the NDS save.
|
||||
- Fixed: Multiple gen3/4 save/pkm/transfer bugs. Thanks BeyondTheHorizon, JHorbach, Destinyy, MichiS97, ashrobb, IamAVeryNicePereson & javier_himura!
|
||||
- Fixed: Manaphy egg (non event) now correctly flagged as illegal. Thanks RustInPeace!
|
||||
- Changed: Updated Spanish Translation. Thanks ajtudela!
|
||||
- Fixed: Drag&Drop between box slots tweaked and improved. Thanks Warsen!
|
||||
- Fixed: Mystery Gift files can now be dragged into Box slots directly.
|
||||
- Fixed: Gen6 Trainer Info editor can now edit Vivillon forms again. Thanks Majickhat55!
|
||||
- Added: Cleaner 'delete' command to batch editor (set species to 0 to clear data).
|
||||
- Added: Specifying output folder when modifying a folder in the Batch Editor. Thanks \!
|
|
@ -1,10 +1,10 @@
|
|||
! PKHeX Interface Customization File
|
||||
! Languages: Save this file accordingly and put it in the same folder as PKHeX's executable.
|
||||
! lang_en.txt = English
|
||||
! lang_jp.txt = Japanese
|
||||
! lang_en.txt = Inglés
|
||||
! lang_jp.txt = Japonés
|
||||
! lang_fr.txt = French
|
||||
! lang_de.txt = German
|
||||
! lang_es.txt = Spanish
|
||||
! lang_de.txt = Alemán
|
||||
! lang_es.txt = Español
|
||||
! lang_it.txt = Italian
|
||||
! lang_ko.txt = Korean
|
||||
! lang_zh.txt = Chinese
|
||||
|
@ -26,18 +26,18 @@ Menu_Exit = Salir
|
|||
--
|
||||
Menu_Tools = Útiles
|
||||
Menu_Showdown = Showdown
|
||||
Menu_ShowdownImportPKM = Import Set from Clipboard
|
||||
Menu_ShowdownExportPKM = Export Set to Clipboard
|
||||
Menu_ShowdownExportParty = Export Party to Clipboard
|
||||
Menu_ShowdownExportBattleBox = Export Battle Box to Clipboard
|
||||
Menu_ShowdownImportPKM = Importar set desde el portapapeles
|
||||
Menu_ShowdownExportPKM = Exportar set desde el portapapeles
|
||||
Menu_ShowdownExportParty = Exportar equipo desde el portapapeles
|
||||
Menu_ShowdownExportBattleBox = Exportar caja de combate desde el portapapeles
|
||||
Menu_CyberGadget = CyberGadget
|
||||
Menu_OpenTemp = Abrir carpeta Temp
|
||||
Menu_OpenCache = Abrir carpeta Cache
|
||||
Menu_Data = Data
|
||||
Menu_LoadBoxes = Cargar Cajas
|
||||
Menu_DumpBoxes = Exportar Cajas
|
||||
Menu_Report = Reporte de la caja
|
||||
Menu_Database = PKM Database
|
||||
Menu_Report = Informe de la caja
|
||||
Menu_Database = Base de datos de PKM
|
||||
Menu_Other = Otro
|
||||
Menu_OpenSDF = Abrir carpeta SaveDataFiler
|
||||
Menu_OpenSDB = Abrir carpeta SaveDataBackup
|
||||
|
@ -46,7 +46,7 @@ Menu_Options = Opciones
|
|||
Menu_Language = Idioma
|
||||
Menu_Modify = Ajuste a SAV
|
||||
Menu_ModifyDex = Modificar Pokédex
|
||||
Menu_ModifyPKM = Modificar PKM Info
|
||||
Menu_ModifyPKM = Modificar info PKM
|
||||
Menu_Unicode = Unicode
|
||||
Menu_About = Sobre PKHeX
|
||||
--------------------Context Menus----------------------
|
||||
|
@ -68,14 +68,14 @@ Label_Friendship = Felicidad:
|
|||
Label_Form = Forma:
|
||||
Label_Ability = Habilidad:
|
||||
Label_Language = Idioma:
|
||||
CHK_IsEgg = Es Huevo
|
||||
CHK_IsEgg = Huevo
|
||||
CHK_Infected = Infectado
|
||||
CHK_Cured = Curado
|
||||
Label_PKRS = PkRs:
|
||||
Label_PKRSdays = d:
|
||||
Label_Country = País:
|
||||
Label_SubRegion = Sub Region:
|
||||
Label_3DSRegion = 3DS Region:
|
||||
Label_SubRegion = Subregión:
|
||||
Label_3DSRegion = Región 3DS:
|
||||
---------------------Met Tab Data-----------------------
|
||||
Tab_Met = Conocido
|
||||
Label_OriginGame = Juego Original:
|
||||
|
@ -94,7 +94,7 @@ Label_EggDate = Fecha:
|
|||
Tab_Stats = Estadísticas
|
||||
Label_IVs = IVs
|
||||
Label_EVs = EVs
|
||||
Label_Stats = Estadísticas
|
||||
Label_Stats = Estad.
|
||||
Label_HP = PS:
|
||||
Label_ATK = Atq:
|
||||
Label_DEF = Def:
|
||||
|
@ -102,10 +102,10 @@ Label_SPA = Atq E:
|
|||
Label_SPD = Def E:
|
||||
Label_SPE = Velo:
|
||||
Label_Total = Total:
|
||||
Label_HiddenPowerPrefix = Poder Oculto Tipo:
|
||||
Label_HiddenPowerPrefix = Tipo del Poder Oculto:
|
||||
Label_CharacteristicPrefix = Características:
|
||||
BTN_RandomIVs = Randomizar IVs
|
||||
BTN_RandomEVs = Randomizar EVs
|
||||
BTN_RandomIVs = Aleatorizar IVs
|
||||
BTN_RandomEVs = Aleatorizar EVs
|
||||
Label_ContestStats = Estadísticas de concurso
|
||||
Label_Cool = Carisma
|
||||
Label_Beauty = Belleza
|
||||
|
@ -121,18 +121,18 @@ Label_PPups = Más PP
|
|||
GB_RelearnMoves = Recordar Movimientos
|
||||
-------------------OT/Misc Tab Data---------------------
|
||||
Tab_OTMisc = EO/Misc
|
||||
GB_OT = Trainer Information
|
||||
GB_OT = Info del Entrenador
|
||||
Label_TID = ID:
|
||||
Label_SID = IDS:
|
||||
Label_OT = EO:
|
||||
GB_nOT = Ultimo dueño (no OT)
|
||||
Label_PrevOT = OT:
|
||||
GB_nOT = Ultimo dueño (no EO)
|
||||
Label_PrevOT = EO:
|
||||
GB_ExtraBytes = Bytes Extras
|
||||
GB_Markings = Marcas
|
||||
BTN_Ribbons = Listones
|
||||
BTN_Medals = Medales
|
||||
BTN_Ribbons = Cintas
|
||||
BTN_Medals = Medallas
|
||||
BTN_History = Memorias
|
||||
Label_EncryptionConstant = Constante de Encryption:
|
||||
Label_EncryptionConstant = Cte. de Encriptación:
|
||||
BTN_RerollEC = Generar
|
||||
-----------------Save Data Interface--------------------
|
||||
Tab_Box = Caja
|
||||
|
@ -140,17 +140,17 @@ Tab_PartyBattle = Caja de combate
|
|||
Tab_Other = Otro
|
||||
Tab_SAV = SAV
|
||||
B_OpenPokePuffs = Pokélito
|
||||
B_OpenItemPouch = Objeto
|
||||
B_OpenTrainerInfo = Info del Entrenador
|
||||
B_OpenBoxLayout = Box Layout
|
||||
B_OpenItemPouch = Inventario
|
||||
B_OpenTrainerInfo = Entrenador
|
||||
B_OpenBoxLayout = Fondos Cajas
|
||||
B_OpenWondercards = Tarjetas Misteriosas
|
||||
B_OpenBerryField = Cultivo de Bayas
|
||||
B_OpenBerryField = C. de Bayas
|
||||
B_OpenOPowers = Poder O
|
||||
B_OpenEventFlags = Event Flags
|
||||
B_OpenEventFlags = Eventos
|
||||
B_OpenPokedex = Pokédex
|
||||
B_OpenSuperTraining = Super Train
|
||||
B_OpenSuperTraining = Superentren.
|
||||
--
|
||||
B_OpenSecretBase = Secret Base
|
||||
B_OpenSecretBase = Base Secreta
|
||||
--------------------Tab Internals-----------------------
|
||||
L_Party = Equipo:
|
||||
L_BattleBox = Caja de Combate:
|
||||
|
@ -173,13 +173,13 @@ L_Secure2 = Secure Value 2:
|
|||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! RibbonEditor = Ribbon Editor
|
||||
! RibbonEditor = Editor de Cintas
|
||||
- Change stuff below this line, not above.
|
||||
----------------------Buttons--------------------------
|
||||
BTN_All = Dar todos
|
||||
BTN_None = Quitar todos
|
||||
BTN_Cancel = Cancelar
|
||||
BTN_Save = Guardar
|
||||
B_All = Dar todos
|
||||
B_None = Quitar todos
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
----------------------Ribbons--------------------------
|
||||
L_RibbonChampionKalos = Campeón de Kalos
|
||||
L_RibbonChampionG3Hoenn = Campeón de Hoenn (RSE)
|
||||
|
@ -220,13 +220,13 @@ L_RibbonChampionNational = Campeón Nacional
|
|||
L_RibbonChampionWorld = Campeón Mundial
|
||||
L_RibbonCountMemoryContest = Cintas de concursos anteriores
|
||||
L_RibbonCountMemoryBattle = Cintas de batallas anteriores
|
||||
L_RibbonChampionG6Hoenn = Hoenn Champion (ORAS)
|
||||
L_RibbonContestStar = Contest Star
|
||||
L_RibbonMasterCoolness = Coolness Master
|
||||
L_RibbonMasterBeauty = Beauty Master
|
||||
L_RibbonMasterCuteness = Cuteness Master
|
||||
L_RibbonMasterCleverness = Cleverness Master
|
||||
L_RibbonMasterToughness = Toughness Master
|
||||
L_RibbonChampionG6Hoenn = Campeón de Hoenn (ORAS)
|
||||
L_RibbonContestStar = Cinta estelar de los concursos
|
||||
L_RibbonMasterCoolness = Cinta estrella del carisma
|
||||
L_RibbonMasterBeauty = Cinta estrella de la belleza
|
||||
L_RibbonMasterCuteness = Cinta estrella de la dulzura
|
||||
L_RibbonMasterCleverness = Cinta estrella del ingenio
|
||||
L_RibbonMasterToughness = Cinta estrella de la dureza
|
||||
----------------Contest/Battle (PAST)-------------------
|
||||
L_RibbonG3Cool = Cool (G3)
|
||||
L_RibbonG3CoolSuper = Cool Super
|
||||
|
@ -283,13 +283,13 @@ L_RibbonCountG3Smart = Smart
|
|||
L_RibbonCountG3Tough = Tough
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SuperTrainingEditor = Medal Editor
|
||||
! SuperTrainingEditor = Editor de Medallas
|
||||
- Change stuff below this line, not above.
|
||||
----------------------Buttons--------------------------
|
||||
B_All = Give All
|
||||
B_None = Remove All
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
B_All = Dar todos
|
||||
B_None = Quitar todos
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
------------------Super Training-----------------------
|
||||
L_SuperTraining = Superentrenamiento Normal
|
||||
L_SuperTrain1_HP = Nv. 1: PS
|
||||
|
@ -324,12 +324,12 @@ L_SuperTrain7_2 = Nv. 7: Bombardeo
|
|||
L_SuperTrain7_3 = Nv. 7: Hydreigon
|
||||
L_SuperTrain8_1 = Nv. 8: X/Y
|
||||
---
|
||||
L_Bag = Last Used Bag:
|
||||
L_Hits = Hits Remaining:
|
||||
L_Bag = Último saco usado:
|
||||
L_Hits = Golpes restantes:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION. Memories / Amie UI Below
|
||||
! MemoryAmie
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! MemoryAmie = Editor de Memorias / Amigos
|
||||
- Change stuff below this line, not above.
|
||||
---------------------Bottom UI-------------------------
|
||||
BTN_Cancel = Cancelar
|
||||
|
@ -339,11 +339,463 @@ L_Handler = Manejador Actual:
|
|||
Tab_OTMemory = Memorias con: EO
|
||||
L_OT_Friendship = Amistad:
|
||||
L_OT_Affection = Cariño:
|
||||
Tab_CTMemory = Memorias con: notEO
|
||||
Tab_CTMemory = Memorias con: noEO
|
||||
L_CT_Friendship = Amistad:
|
||||
L_cT_Affection = Cariño:
|
||||
Tab_Residence = Residencia
|
||||
--
|
||||
L_Country = País
|
||||
L_Region = Región
|
||||
L_Geo0 = Último:
|
||||
L_Geo1 = Anterior 1:
|
||||
L_Geo2 = Anterior 2:
|
||||
L_Geo3 = Anterior 3:
|
||||
L_Geo4 = Anterior 4:
|
||||
--
|
||||
L_Arguments = Disabled ; Never left ; OT ; Past Gen ; Memories with ; Pokémon ; Area ; Item(s) ; Move ; Location ;
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! f2_Text = Special Characters
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
-- No Elements to rename here.
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_BerryField = Visor de Campos de Bayas
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Berry = Baya:
|
||||
L_Field = Campo:
|
||||
L_Unfinished = Unfinished: Needs More Research
|
||||
L_u1 = 1
|
||||
L_u2 = 2
|
||||
L_u3 = 3
|
||||
L_u4 = 4
|
||||
L_u5 = 5
|
||||
L_u6 = 6
|
||||
L_u7 = 7
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION. Memories / Amie UI Below
|
||||
! SAV_BoxLayout = Box Layout Editor
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Unlocked = Unlocked:
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
L_Flags = Unlocked BG Flags:
|
||||
L_BG = BG:
|
||||
L_BoxName = Box Name:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_EventFlagsORAS = Editor de Eventos (ORAS)
|
||||
- Change stuff below this line, not above.
|
||||
------------------------------------------------------
|
||||
L_Ash = Asho volcánico:
|
||||
GB_Misc = Misc
|
||||
flag_0288 = Multi Statuette
|
||||
flag_0287 = Rotation Statuette
|
||||
flag_0286 = Triples Statuette
|
||||
flag_0293 = Super Multi Unlocked
|
||||
flag_0292 = Super Rotation Unlocked
|
||||
flag_0291 = Super Triples Unlocked
|
||||
flag_0290 = Super Doubles Unlocked
|
||||
flag_0289 = Super Singles Unlocked
|
||||
flag_0285 = Doubles Statuette
|
||||
flag_0284 = Singles Statuette
|
||||
GB_Rebattle = Rebattle
|
||||
flag_2835 = (AS) Latios Capturado
|
||||
flag_0420 = (AS) Latios Derrotado
|
||||
L_SkyTower = *Sky Tower
|
||||
flag_2834 = (OR) Latias Capturado
|
||||
flag_0419 = (OR) Latias Derrotado
|
||||
flag_2828 = (OR) Tornadus Capturado
|
||||
flag_2830 = (OR) Reshiram Capturado
|
||||
flag_0182 = (OR) Reshiram Derrotado
|
||||
flag_2820 = (OR) Palkia Capturado
|
||||
flag_2839 = (OR) Groudon Capturado
|
||||
flag_0648 = (OR) Groudon Derrotado
|
||||
flag_2815 = (OR) Ho-Oh Capturado
|
||||
flag_0208 = (OR) Ho-Oh Derrotado
|
||||
flag_2824 = Cresselia Capturado
|
||||
flag_0172 = Cresselia Derrotado
|
||||
flag_2821 = Heatran Capturado
|
||||
flag_0260 = Heatran Derrotado
|
||||
flag_2842 = Deoxys Capturado
|
||||
flag_0945 = Deoxys Derrotado
|
||||
flag_2838 = Registeel Capturado
|
||||
flag_0958 = Registeel Derrotado
|
||||
flag_2836 = Regirock Capturado
|
||||
flag_0956 = Regirock Derrotado
|
||||
flag_2837 = Regice Capturado
|
||||
flag_0957 = Regice Derrotado
|
||||
flag_2813 = Suicune Capturado
|
||||
flag_0175 = Suicune Derrotado
|
||||
flag_2811 = Raikou Capturado
|
||||
flag_0173 = Raikou Derrotado
|
||||
flag_2812 = Entei Capturado
|
||||
flag_0174 = Entei Derrotado
|
||||
flag_2832 = Landorus Capturado
|
||||
flag_2829 = (AS) Thundurus Capturado
|
||||
flag_2822 = Regigigas Capturado
|
||||
flag_0252 = Regigigas Derrotado
|
||||
flag_2827 = Virizion Capturado
|
||||
flag_0178 = Virizion Derrotado
|
||||
flag_2826 = Terrakion Capturado
|
||||
flag_0177 = Terrakion Derrotado
|
||||
flag_2823 = Giratina Capturado
|
||||
flag_2819 = (AS) Dialga Capturado
|
||||
flag_2833 = Kyurem Capturado
|
||||
flag_0184 = Kyurem Derrotado
|
||||
flag_2816 = Uxie Capturado
|
||||
flag_0179 = Uxie Derrotado
|
||||
flag_2817 = Mesprit Capturado
|
||||
flag_0180 = Mesprit Derrotado
|
||||
flag_2825 = Cobalion Capturado
|
||||
flag_0176 = Cobalion Derrotado
|
||||
flag_2814 = (AS) Lugia Capturado
|
||||
flag_0209 = (AS) Lugia Derrotado
|
||||
flag_2818 = Azelf Capturado
|
||||
flag_0181 = Azelf Derrotado
|
||||
flag_2831 = (AS) Zekrom Capturado
|
||||
flag_0183 = (AS) Zekrom Derrotado
|
||||
flag_2840 = (AS) Kyogre Capturado
|
||||
flag_0647 = (AS) Kyogre Derrotado
|
||||
GB_Researcher = FlagDiff Researcher
|
||||
L_UnSet = UnSet
|
||||
L_IsSet = IsSet
|
||||
B_LoadNew = Carg. Nuevo
|
||||
B_LoadOld = Carg. Antiguo
|
||||
GB_FlagStatus = Check Flag Status
|
||||
L_Flag = Flag:
|
||||
CHK_CustomFlag = Estado:
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_EventFlagsXY = Editor de Eventos (XY)
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
flag_2546 = Pokédex Obtained
|
||||
GB_Misc = Misc
|
||||
flag_0289 = Multi Statuette
|
||||
flag_0288 = Rotation Statuette
|
||||
flag_0287 = Triples Statuette
|
||||
flag_0294 = Super Multi Unlocked
|
||||
flag_0293 = Super Rotation Unlocked
|
||||
flag_0292 = Super Triples Unlocked
|
||||
flag_0291 = Super Doubles Unlocked
|
||||
flag_0290 = Super Singles Unlocked
|
||||
flag_0675 = 50: Beat Chatelaine
|
||||
flag_0286 = Doubles Statuette
|
||||
flag_0285 = Singles Statuette
|
||||
GB_Rebattle = Rebattle
|
||||
flag_0114 = Zygarde Capturado
|
||||
flag_0790 = Zygarde Derrotado
|
||||
flag_0115 = Mewtwo Capturado
|
||||
flag_0963 = Mewtwo Derrotado
|
||||
GB_Researcher = FlagDiff Researcher
|
||||
L_UnSet = UnSet
|
||||
L_IsSet = IsSet
|
||||
B_LoadNew = Carg. Nuevo
|
||||
B_LoadOld = Carg. Antiguo
|
||||
flag_2239 = 2239
|
||||
flag_2238 = 2238
|
||||
flag_2237 = 2237
|
||||
B_Save = Guardar
|
||||
flag_0005 = Flag5
|
||||
flag_0004 = Flag4
|
||||
flag_0003 = Flag3
|
||||
flag_0002 = Flag2
|
||||
flag_0001 = Flag1
|
||||
GB_FlagStatus = Check Flag Status
|
||||
L_Flag = Flag:
|
||||
CHK_CustomFlag = Estado:
|
||||
B_Cancel = Cancelar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_PokedexORAS = Editor de Pokédex (ORAS)
|
||||
- Change stuff below this line, not above.
|
||||
------------------------------------------------------
|
||||
L_goto = goto:
|
||||
GB_Owned = Obtenido
|
||||
CHK_P1 = Obtenido
|
||||
CHK_P2 = Macho
|
||||
CHK_P3 = Hembra
|
||||
CHK_P4 = Macho brillante
|
||||
CHK_P5 = Hembra brillante
|
||||
GB_Encountered = Encontrado
|
||||
CHK_P6 = Macho
|
||||
CHK_P7 = Hembra
|
||||
CHK_P8 = Macho brillante
|
||||
CHK_P9 = Hembra brillante
|
||||
L_DexNav = Nvl. DexNav:
|
||||
GB_Language = Idiomas
|
||||
CHK_L1 = Japonés
|
||||
CHK_L2 = Inglés
|
||||
CHK_L3 = Francés
|
||||
CHK_L4 = Italiano
|
||||
CHK_L5 = Alemán
|
||||
CHK_L6 = Español
|
||||
CHK_L7 = Coreano
|
||||
B_Modify = Modificar...
|
||||
B_GiveAll = Marcar todos
|
||||
L_Spinda = Spinda:
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_PokedexXY = Editor de Pokédex (XY)
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_goto = goto:
|
||||
GB_Owned = Obtenido
|
||||
CHK_F1 = Extranjero (Pre)
|
||||
CHK_P1 = Nativo (Kalos)
|
||||
GB_Encountered = Encontrado
|
||||
CHK_P2 = Macho
|
||||
CHK_P3 = Hembra
|
||||
CHK_P4 = Macho brillante
|
||||
CHK_P5 = Hembra brillante
|
||||
GB_Displayed = Mostrado
|
||||
CHK_P6 = Macho
|
||||
CHK_P7 = Hembra
|
||||
CHK_P8 = Macho brillante
|
||||
CHK_P9 = Hembra brillante
|
||||
GB_Language = Idiomas
|
||||
CHK_L1 = Japonés
|
||||
CHK_L2 = Inglés
|
||||
CHK_L3 = Francés
|
||||
CHK_L4 = Italiano
|
||||
CHK_L5 = Alemán
|
||||
CHK_L6 = Español
|
||||
CHK_L7 = Coreano
|
||||
B_Modify = Modificar...
|
||||
B_GiveAll = Marcar todos
|
||||
L_Spinda = Spinda:
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
! End
|
||||
-------------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_HallOfFame = Editor de Hall de la Fama
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
B_CopyText = Copiar txt
|
||||
L_Level = Nivel:
|
||||
L_Shiny = Brillante:
|
||||
Label_Form = Forma:
|
||||
B_Cancel = Canceler
|
||||
Label_MetDate = Fecha:
|
||||
L_Victory = Núm. Victorias:
|
||||
GB_OT = Info del Entrenador
|
||||
Label_OT = OT:
|
||||
Label_SID = SID:
|
||||
Label_TID = TID:
|
||||
Label_HeldItem = Objeto:
|
||||
GB_CurrentMoves = Mov. actuales
|
||||
Label_EncryptionConstant = Cte. de Encriptación:
|
||||
CHK_Nicknamed = Apodo:
|
||||
Label_Species = Especie:
|
||||
L_PartyNum = N. equipo:
|
||||
B_Close = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Inventory = Editor de Inventario
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
GB_Pouch = Pokélitos
|
||||
B_DisplayBerries = Bayas
|
||||
B_DisplayMedicine = Medicinas
|
||||
B_DisplayTMHM = MT/MO
|
||||
B_DisplayKeyItems = Objetos clave
|
||||
B_DisplayItems = Objetos
|
||||
B_Save = Guardar
|
||||
B_Cancel = Cancelar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_OPower = Editor de Poder O
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
GB_Regular = Regular
|
||||
B_MaxP = Give All
|
||||
L_1 = Hatching:
|
||||
L_2 = Bargain:
|
||||
L_3 = ?Prize:
|
||||
L_4 = EXP:
|
||||
L_5 = Capture:
|
||||
L_6 = ?Encounter
|
||||
L_7 = ?Stealth:
|
||||
L_8 = HP Restore:
|
||||
L_9 = ?PP:
|
||||
L_10 = ?Befriend:
|
||||
L_11 = ?Attack:
|
||||
L_12 = ?Defense:
|
||||
L_13 = ?Sp. Atk:
|
||||
L_14 = ?Sp. Def:
|
||||
L_15 = ?Speed:
|
||||
L_16 = ?Critical Hit:
|
||||
L_17 = ?Accuracy:
|
||||
GB_Event = Event
|
||||
CHK_1 = ?Bargain MAX
|
||||
CHK_2 = ?EXP MAX
|
||||
CHK_3 = ?Prize MAX
|
||||
CHK_4 = ?Hatch MAX
|
||||
CHK_5 = ?Capture MAX
|
||||
CHK_6 = ?Restore MAX
|
||||
CHK_7 = ?Befriend MAX
|
||||
CHK_8 = ?Unused
|
||||
B_AllMax = Give All
|
||||
B_Save = Save
|
||||
B_Cancel = Cancel
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Pokepuff = Poké Puffs Editor
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Count = CNT:
|
||||
B_None = None
|
||||
B_Sort = Sort
|
||||
B_All = All
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_SecretBase = Secret Base Editor
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_FlagsCaptured = Flags Captured:
|
||||
B_FSave = <
|
||||
B_GiveDecor = Give All Decorations
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
B_FDisplay = >
|
||||
L_Favorite = Favorites:
|
||||
--
|
||||
f_MAIN = Main
|
||||
L_TrName = Trainer Name:
|
||||
L_BaseLocation = Secret Base Location:
|
||||
L_Happy = Happy:
|
||||
L_Encourage = Encourage:
|
||||
L_Blackboard = Blackboard:
|
||||
L_Confetti = Confetti:
|
||||
L_TeamName = Team Name:
|
||||
L_TeamSlogan = Team Slogan:
|
||||
--
|
||||
GB_Object = Object Layout
|
||||
L_Index = Index:
|
||||
L_Decoration = Decoration:
|
||||
L_Rotation = Rotation Val:
|
||||
L_X = X Coordinate:
|
||||
L_Y = Y Coordinate:
|
||||
--
|
||||
f_PKM = Trainer Pokémon
|
||||
GB_PKM = PKM
|
||||
L_Participant = Participant:
|
||||
L_EncryptionConstant = ENC:
|
||||
L_IVs = IVs
|
||||
L_EVs = EVs
|
||||
L_HP = HP
|
||||
L_ATK = ATK
|
||||
L_DEF = DEF
|
||||
L_SpA = SpA
|
||||
L_SpD = SpD
|
||||
L_SPE = SPE
|
||||
L_PKFriendship = Friendship:
|
||||
L_PPUps = PPUps
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Trainer = Trainer Data Editor
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
Tab_Multiplayer = Multiplayer
|
||||
L_MultiplayerSprite = Multiplayer Sprite:
|
||||
L_Style = Style:
|
||||
Tab_BadgeMap = Badges/Map
|
||||
GB_Map = Map Position
|
||||
L_CurrentMap = Current Map:
|
||||
L_X = X Coordinate:
|
||||
L_Z = Z Coordinate:
|
||||
L_Y = Y Coordinate:
|
||||
L_Offset = (offset)
|
||||
Tab_Appearance = Current Appearance (X/Y)
|
||||
L_Outfit = Outfit Vals
|
||||
B_GiveAccessories = Give All Accessories
|
||||
L_Dress = Dress:
|
||||
L_Accessory = Accessory:
|
||||
L_Bag = Bag:
|
||||
L_Socks = Socks:
|
||||
L_Pants = Pants:
|
||||
L_Shirt = Shirt:
|
||||
L_Hat = Hat:
|
||||
L_FacialHair = Facial Hair:
|
||||
L_Hairstyle = Hairstyle:
|
||||
L_HairColor = Hair Color:
|
||||
L_SkinColor = Skin Color:
|
||||
GB_MaisonCurrent = Maison Streaks (Current)
|
||||
L_SuperC = Super
|
||||
L_NormalC = Normal
|
||||
L_MultiC = Multi:
|
||||
L_RotationC = Rotation:
|
||||
L_TriplesC = Triples:
|
||||
L_DoublesC = Doubles:
|
||||
L_SinglesC = Singles:
|
||||
GB_MaisonBest = Maison Streaks (Best)
|
||||
L_SuperB = Super
|
||||
L_NormalB = Normal
|
||||
L_MultiB = Multi:
|
||||
L_RotationB = Rotation:
|
||||
L_TriplesB = Triples:
|
||||
L_DoublesB = Doubles:
|
||||
L_SinglesB = Singles:
|
||||
B_Save = Save
|
||||
L_Stats = Stats
|
||||
B_Cancel = Cancel
|
||||
Tab_Overview = Overview
|
||||
L_Seconds = Sec:
|
||||
L_Minutes = Min:
|
||||
L_Hours = Hrs:
|
||||
L_Language = Language:
|
||||
L_PM = PokéMiles:
|
||||
L_Region = Region:
|
||||
L_BP = BP:
|
||||
L_Country = Country:
|
||||
B_MaxCash = +
|
||||
L_3DSReg = 3DS Region:
|
||||
L_Money = $:
|
||||
L_SID = SID:
|
||||
L_TID = TID:
|
||||
L_TrainerName = Trainer Name:
|
||||
L_Value = Value
|
||||
GB_Sayings = Saved Sayings
|
||||
L_Saying1 = 1:
|
||||
L_Saying2 = 2:
|
||||
L_Saying3 = 3:
|
||||
L_Saying4 = 4:
|
||||
L_Saying5 = 5:
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! SAV_Wondercard = Wonder Card I/O
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_Details = Details:
|
||||
L_Received = Received List:
|
||||
B_Import = Import
|
||||
B_Output = Export
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
! End
|
|
@ -1,16 +1,16 @@
|
|||
None
|
||||
Rock Smash (HGSS)
|
||||
Tall Grass
|
||||
Golpe roca (HGSS)
|
||||
Hierba Alta
|
||||
|
||||
Dialga/Palkia
|
||||
Cave/Hall of Origin
|
||||
Cueva/Sala del Origen
|
||||
|
||||
Surfing/Fishing
|
||||
Surfeando/Pescando
|
||||
|
||||
Building/Enigma Stone
|
||||
Marsh/Safari
|
||||
Edificio/Misticristal
|
||||
Pantano/Safari
|
||||
|
||||
Starter/Fossil/Gift (DP)
|
||||
Inicial/Fosil/Regalo (DP)
|
||||
|
||||
|
||||
|
||||
|
@ -21,5 +21,5 @@ Starter/Fossil/Gift (DP)
|
|||
|
||||
|
||||
|
||||
Distortion World (Pt)
|
||||
Starter/Fossil/Gift (Pt/DP Trio)
|
||||
Mundo Distorsion (Pt)
|
||||
Inicial/Fosil/Regalo (Pt/DP Trio)
|
|
@ -5,8 +5,8 @@ Esmeralda
|
|||
RojoFuego
|
||||
VerdeHoja
|
||||
|
||||
HeartGold
|
||||
SoulSilver
|
||||
Oro HeartGold
|
||||
Plata SoulSilver
|
||||
|
||||
Diamante
|
||||
Perla
|
||||
|
@ -24,5 +24,5 @@ Blanca2
|
|||
Negra2
|
||||
X
|
||||
Y
|
||||
AS
|
||||
OR
|
||||
Zafiro Alfa
|
||||
Rubí Omega
|
|
@ -42,6 +42,8 @@ namespace PKHeX
|
|||
Daycare = 0x20E00;
|
||||
PokeDex = 0x21600;
|
||||
PokeDexLanguageFlags = PokeDex + 0x320;
|
||||
CGearInfoOffset = 0x1C000;
|
||||
CGearDataOffset = 0x52000;
|
||||
|
||||
// Inventory offsets are the same for each game.
|
||||
OFS_PouchHeldItem = 0x18400; // 0x188D7
|
||||
|
@ -65,6 +67,8 @@ namespace PKHeX
|
|||
Daycare = 0x20D00;
|
||||
PokeDex = 0x21400;
|
||||
PokeDexLanguageFlags = PokeDex + 0x328; // forme flags size is + 8 from bw with new formes (therians)
|
||||
CGearInfoOffset = 0x1C000;
|
||||
CGearDataOffset = 0x52800;
|
||||
|
||||
// Inventory offsets are the same for each game.
|
||||
OFS_PouchHeldItem = 0x18400; // 0x188D7
|
||||
|
@ -152,7 +156,7 @@ namespace PKHeX
|
|||
new BlockInfo(0x19600, 0x1338, 0x1A93A, 0x23F3A), // ???
|
||||
new BlockInfo(0x1AA00, 0x07C4, 0x1B1C6, 0x23F3C), // ???
|
||||
new BlockInfo(0x1B200, 0x0D54, 0x1BF56, 0x23F3E), // ???
|
||||
new BlockInfo(0x1C000, 0x002C, 0x1C02E, 0x23F40), // ???
|
||||
new BlockInfo(0x1C000, 0x002C, 0x1C02E, 0x23F40), // Skin Info
|
||||
new BlockInfo(0x1C100, 0x0658, 0x1C75A, 0x23F42), // ??? Gym badge data
|
||||
new BlockInfo(0x1C800, 0x0A94, 0x1D296, 0x23F44), // ???
|
||||
new BlockInfo(0x1D300, 0x01AC, 0x1D4AE, 0x23F46), // ???
|
||||
|
@ -229,7 +233,7 @@ namespace PKHeX
|
|||
new BlockInfo(0x19600, 0x1338, 0x1A93A, 0x25F3A), // Unity Tower and survey stuff
|
||||
new BlockInfo(0x1AA00, 0x07c4, 0x1B1C6, 0x25F3C), // Pal Pad Player Data (30d)
|
||||
new BlockInfo(0x1B200, 0x0d54, 0x1BF56, 0x25F3E), // Pal Pad Friend Data
|
||||
new BlockInfo(0x1C000, 0x0094, 0x1C096, 0x25F40), // C-Gear
|
||||
new BlockInfo(0x1C000, 0x0094, 0x1C096, 0x25F40), // Skin Info
|
||||
new BlockInfo(0x1C100, 0x0658, 0x1C75A, 0x25F42), // Card Signature Block & ????
|
||||
new BlockInfo(0x1C800, 0x0a94, 0x1D296, 0x25F44), // Mystery Gift
|
||||
new BlockInfo(0x1D300, 0x01ac, 0x1D4AE, 0x25F46), // Dream World Stuff (Catalog)
|
||||
|
@ -353,6 +357,7 @@ namespace PKHeX
|
|||
|
||||
private const int wcSeed = 0x1D290;
|
||||
|
||||
public readonly int CGearInfoOffset, CGearDataOffset;
|
||||
private readonly int Trainer2, AdventureInfo, PokeDexLanguageFlags;
|
||||
public override bool HasBoxWallpapers => false;
|
||||
public override bool HasPokeDex => false;
|
||||
|
|
|
@ -235,7 +235,7 @@ namespace PKHeX
|
|||
|
||||
ushort[] Constants = new ushort[EventConstMax];
|
||||
for (int i = 0; i < Constants.Length; i++)
|
||||
Constants[i] = BitConverter.ToUInt16(Data, EventConst + i);
|
||||
Constants[i] = BitConverter.ToUInt16(Data, EventConst + i * 2);
|
||||
return Constants;
|
||||
}
|
||||
set
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
|
@ -138,7 +140,7 @@ namespace PKHeX
|
|||
/// <returns>Version Identifier or Invalid if type cannot be determined.</returns>
|
||||
public static GameVersion getIsG6SAV(byte[] data)
|
||||
{
|
||||
if (!SizeValidSAV6(data.Length))
|
||||
if (!new []{SIZE_G6XY, SIZE_G6ORAS, SIZE_G6ORASDEMO}.Contains(data.Length))
|
||||
return GameVersion.Invalid;
|
||||
|
||||
if (BitConverter.ToUInt32(data, data.Length - 0x1F0) != BEEF)
|
||||
|
@ -176,21 +178,74 @@ namespace PKHeX
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Detects a save file.
|
||||
/// </summary>
|
||||
/// <returns>Full path of a save file. Returns null if unable to find any.</returns>
|
||||
public static string detectSaveFile()
|
||||
{
|
||||
string path;
|
||||
string path3DS = Path.GetPathRoot(Util.get3DSLocation());
|
||||
List<string> possiblePaths = new List<string>();
|
||||
|
||||
// save_manager
|
||||
if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "saveDataBackup")))
|
||||
possiblePaths.AddRange(getSavesFromFolder(path, false));
|
||||
|
||||
// SaveDataFiler
|
||||
if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "filer", "UserSaveData")))
|
||||
possiblePaths.AddRange(getSavesFromFolder(path, true));
|
||||
|
||||
// JKSV
|
||||
if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "JKSV", "Saves")))
|
||||
possiblePaths.AddRange(getSavesFromFolder(path, true));
|
||||
|
||||
// TWL Save Tool
|
||||
if (path3DS != null && Directory.Exists(path = Path.Combine(path3DS, "TWLSaveTool")))
|
||||
possiblePaths.AddRange(getSavesFromFolder(path, false));
|
||||
|
||||
// CyberGadget (Cache)
|
||||
string pathCache = Util.GetCacheFolder();
|
||||
if (Directory.Exists(pathCache))
|
||||
possiblePaths.AddRange(getSavesFromFolder(Path.Combine(pathCache), false));
|
||||
|
||||
// return newest save file path that is valid (oh man)
|
||||
return possiblePaths.OrderByDescending(f => new FileInfo(f).LastWriteTime).FirstOrDefault(p => getVariantSAV(File.ReadAllBytes(p)).ChecksumsValid);
|
||||
}
|
||||
/// <summary>
|
||||
/// Retrieves the full path of the most recent file based on LastWriteTime.
|
||||
/// </summary>
|
||||
/// <param name="folderPath">Folder to look within</param>
|
||||
/// <param name="deep">Search all subfolders</param>
|
||||
/// <returns>Full path of all save files that match criteria.</returns>
|
||||
public static IEnumerable<string> getSavesFromFolder(string folderPath, bool deep)
|
||||
{
|
||||
if (!Directory.Exists(folderPath))
|
||||
return null;
|
||||
return Directory.GetFiles(folderPath, "*", deep ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
|
||||
.Where(f => SizeValidSAV((int)new FileInfo(f).Length));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines whether the save data size is valid for 6th generation saves.
|
||||
/// </summary>
|
||||
/// <param name="size">Size in bytes of the save data</param>
|
||||
/// <returns>A boolean indicating whether or not the save data size is valid.</returns>
|
||||
public static bool SizeValidSAV6(int size)
|
||||
public static bool SizeValidSAV(int size)
|
||||
{
|
||||
switch (size)
|
||||
{
|
||||
case SIZE_G6XY:
|
||||
case SIZE_G6ORASDEMO:
|
||||
case SIZE_G6ORAS:
|
||||
case SIZE_G5B2W2:
|
||||
case SIZE_G4RAW:
|
||||
case SIZE_G3RAW:
|
||||
case SIZE_G3RAWHALF:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// SAV Manipulation
|
||||
|
|
|
@ -194,8 +194,11 @@ namespace PKHeX
|
|||
err++;
|
||||
if (r == ModifyResult.Modified)
|
||||
{
|
||||
ctr++;
|
||||
File.WriteAllBytes(Path.Combine(destPath, Path.GetFileName(file)), pkm.DecryptedBoxData);
|
||||
if (pkm.Species > 0)
|
||||
{
|
||||
ctr++;
|
||||
File.WriteAllBytes(Path.Combine(destPath, Path.GetFileName(file)), pkm.DecryptedBoxData);
|
||||
}
|
||||
}
|
||||
|
||||
b.ReportProgress(i);
|
||||
|
|
|
@ -4,7 +4,6 @@ using System.Diagnostics;
|
|||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PKHeX
|
||||
|
@ -80,41 +79,33 @@ namespace PKHeX
|
|||
foreach (PictureBox p in PKXBOXES)
|
||||
p.ContextMenuStrip = mnu;
|
||||
|
||||
// Load initial database
|
||||
Database.Add(new DatabaseList
|
||||
{
|
||||
Version = 0,
|
||||
Title = "Misc",
|
||||
Description = "Individual pkm files present in the db/sav.",
|
||||
});
|
||||
|
||||
// Load databases
|
||||
// Load Data
|
||||
RawDB = new List<PKM>();
|
||||
foreach (string file in Directory.GetFiles(DatabasePath, "*", SearchOption.AllDirectories))
|
||||
{
|
||||
FileInfo fi = new FileInfo(file);
|
||||
if (fi.Extension.Contains(".pk") && PKX.getIsPKM(fi.Length))
|
||||
Database[0].Slot.Add(PKMConverter.getPKMfromBytes(File.ReadAllBytes(file), file));
|
||||
else
|
||||
loadDatabase(File.ReadAllBytes(file));
|
||||
RawDB.Add(PKMConverter.getPKMfromBytes(File.ReadAllBytes(file), file));
|
||||
}
|
||||
// Fetch from save file
|
||||
foreach (var pkm in Main.SAV.BoxData.Where(pk => pk.Species != 0))
|
||||
Database[0].Slot.Add(pkm);
|
||||
RawDB.Add(pkm);
|
||||
|
||||
// Prepare Database
|
||||
prepareDBForSearch();
|
||||
RawDB = new List<PKM>(RawDB.Where(pk => pk.ChecksumValid && pk.Species != 0 && pk.Sanity == 0));
|
||||
RawDB = new List<PKM>(RawDB.Distinct());
|
||||
setResults(RawDB);
|
||||
|
||||
Menu_SearchSettings.DropDown.Closing += (sender, e) =>
|
||||
{
|
||||
if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked)
|
||||
e.Cancel = true;
|
||||
};
|
||||
B_Search.PerformClick();
|
||||
CenterToParent();
|
||||
}
|
||||
private readonly Main m_parent;
|
||||
private readonly PictureBox[] PKXBOXES;
|
||||
private readonly string DatabasePath = Main.DatabasePath;
|
||||
private readonly List<DatabaseList> Database = new List<DatabaseList>();
|
||||
private List<PKM> Results;
|
||||
private List<PKM> RawDB;
|
||||
private int slotSelected = -1; // = null;
|
||||
|
@ -323,80 +314,6 @@ namespace PKHeX
|
|||
}
|
||||
|
||||
// IO Usage
|
||||
private class DatabaseList
|
||||
{
|
||||
public readonly List<PKM> Slot = new List<PKM>();
|
||||
public int Version;
|
||||
private readonly bool Unicode;
|
||||
private readonly byte[] Unused;
|
||||
public string Title;
|
||||
public string Description;
|
||||
|
||||
public DatabaseList() { }
|
||||
public DatabaseList(byte[] data)
|
||||
{
|
||||
if ((data.Length < 0x100 + 0xE8) || (data.Length - 0x100)%0xE8 != 0)
|
||||
return;
|
||||
|
||||
Version = BitConverter.ToInt32(data, 0);
|
||||
Unicode = data[0x5] == 1;
|
||||
Unused = data.Skip(4).Take(0xB).ToArray();
|
||||
|
||||
if (Unicode)
|
||||
{
|
||||
Title = Encoding.Unicode.GetString(data, 0x10, 0x30).Trim();
|
||||
Description = Encoding.Unicode.GetString(data, 0x40, 0x60).Trim();
|
||||
}
|
||||
else
|
||||
{
|
||||
Title = Encoding.ASCII.GetString(data, 0x10, 0x30).Trim();
|
||||
Description = Encoding.ASCII.GetString(data, 0x40, 0x60).Trim();
|
||||
}
|
||||
|
||||
int count = (data.Length - 0x100)/0xE8;
|
||||
for (int i = 0; i < count; i++)
|
||||
Slot.Add(new PK6(data.Skip(0x100 + i * 0xE8).Take(0xE8).ToArray()));
|
||||
}
|
||||
public byte[] Write()
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
using (BinaryWriter bw = new BinaryWriter(ms))
|
||||
{
|
||||
bw.Write(Version);
|
||||
bw.Write(Unused);
|
||||
|
||||
byte[] title = Unicode ? Encoding.Unicode.GetBytes(Title) : Encoding.ASCII.GetBytes(Title);
|
||||
Array.Resize(ref title, 0x30);
|
||||
bw.Write(title);
|
||||
|
||||
byte[] desc = Unicode ? Encoding.Unicode.GetBytes(Description) : Encoding.ASCII.GetBytes(Description);
|
||||
Array.Resize(ref title, 0x60);
|
||||
bw.Write(desc);
|
||||
|
||||
foreach (var pk6 in Slot)
|
||||
bw.Write(pk6.Data.Take(0xE8).ToArray());
|
||||
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
private void loadDatabase(byte[] data)
|
||||
{
|
||||
var db = new DatabaseList(data);
|
||||
if (db.Slot.Count > 0)
|
||||
Database.Add(db);
|
||||
}
|
||||
private void prepareDBForSearch()
|
||||
{
|
||||
RawDB = new List<PKM>();
|
||||
|
||||
foreach (var db in Database)
|
||||
RawDB.AddRange(db.Slot);
|
||||
|
||||
RawDB = new List<PKM>(RawDB.Where(pk => pk.ChecksumValid && pk.Species != 0 && pk.Sanity == 0));
|
||||
RawDB = new List<PKM>(RawDB.Distinct());
|
||||
setResults(RawDB);
|
||||
}
|
||||
private void openDB(object sender, EventArgs e)
|
||||
{
|
||||
if (Directory.Exists(DatabasePath))
|
||||
|
@ -419,8 +336,7 @@ namespace PKHeX
|
|||
Directory.CreateDirectory(path);
|
||||
|
||||
foreach (PKM pkm in Results)
|
||||
File.WriteAllBytes(Path.Combine(path, Util.CleanFileName(pkm.FileName)),
|
||||
pkm.Data.Take(0xE8).ToArray());
|
||||
File.WriteAllBytes(Path.Combine(path, Util.CleanFileName(pkm.FileName)), pkm.DecryptedBoxData);
|
||||
}
|
||||
|
||||
// View Updates
|
||||
|
@ -644,32 +560,6 @@ namespace PKHeX
|
|||
CB_GameOrigin.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
// Debug
|
||||
private void testQuery()
|
||||
{
|
||||
var query = from db in Database
|
||||
select db.Slot.Where(p => p.Move1 == 1).ToArray();
|
||||
|
||||
var result = query.ToArray();
|
||||
if (!result[0].Any())
|
||||
return;
|
||||
|
||||
var any = result[0][0];
|
||||
m_parent.populateFields(any);
|
||||
}
|
||||
private void testUnique()
|
||||
{
|
||||
var query = from db in Database
|
||||
select db.Slot.GroupBy(p => p.Checksum + p.EncryptionConstant + p.Species) // Unique criteria
|
||||
.Select(grp => grp.First()).ToArray();
|
||||
|
||||
var result = query.ToArray();
|
||||
if (!result[0].Any())
|
||||
return;
|
||||
|
||||
var any = result[0][0];
|
||||
m_parent.populateFields(any);
|
||||
}
|
||||
private void Menu_SearchAdvanced_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Menu_SearchAdvanced.Checked)
|
||||
|
|
359
Subforms/Save Editors/Gen5/CGearBackground.cs
Normal file
359
Subforms/Save Editors/Gen5/CGearBackground.cs
Normal file
|
@ -0,0 +1,359 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public class CGearBackground
|
||||
{
|
||||
public const string Extension = "cgb";
|
||||
public const string Filter = "C-Gear Background|*.cgb";
|
||||
public const int Width = 256; // px
|
||||
public const int Height = 192; // px
|
||||
public const int SIZE_CGB = 0x2600;
|
||||
|
||||
/* CGearBackground Documentation
|
||||
* CGearBackgrounds (.cgb) are tiled images.
|
||||
* Tiles are 8x8, and serve as a tileset for building the image.
|
||||
* The first 0x2000 bytes are the tile building region.
|
||||
* A tile to have two pixels defined in one byte of space.
|
||||
* A tile takes up 64 pixels, 32 bytes, 0x20 chunks.
|
||||
* The last tile is actually the colors used in the image (16bit).
|
||||
* Only 16 colors can be used for the entire image.
|
||||
* 255 tiles may be chosen from, as (0x2000-(0x20))/0x20 = 0xFF
|
||||
* The last 0x600 bytes are the tiles used.
|
||||
* 256/8 = 32, 192/8 = 24
|
||||
* 32 * 24 = 0x300
|
||||
* The tiles are chosen based on the 16bit index of the tile.
|
||||
* 0x300 * 2 = 0x600!
|
||||
*
|
||||
* CGearBackgrounds tilemap (when stored) employs odd obfuscation.
|
||||
* BW obfuscates by adding 0xA0A0, B2W2 adds 0xA000
|
||||
* The obfuscated number is then tweaked by adding 15*(i/17)
|
||||
* To reverse, use a similar reverse calculation
|
||||
* PSK files are basically raw game rips (obfuscated)
|
||||
* CGB files are un-obfuscated.
|
||||
* Due to BW and B2W2 using different obfuscation adds, PSK files are incompatible between the versions.
|
||||
*/
|
||||
|
||||
public CGearBackground(byte[] data)
|
||||
{
|
||||
if (data.Length != SIZE_CGB)
|
||||
return;
|
||||
|
||||
byte[] Region1 = data.Take(0x1FE0).ToArray();
|
||||
byte[] ColorData = data.Skip(0x1FE0).Take(0x20).ToArray();
|
||||
byte[] Region2 = data.Skip(0x2000).Take(0x600).ToArray();
|
||||
|
||||
ColorPalette = new Color[0x10];
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
ColorPalette[i] = getRGB555_16(BitConverter.ToUInt16(ColorData, i * 2));
|
||||
|
||||
Tiles = new Tile[0xFF];
|
||||
for (int i = 0; i < 0xFF; i++)
|
||||
{
|
||||
Tiles[i] = new Tile(Region1.Skip(i * Tile.SIZE_TILE).Take(Tile.SIZE_TILE).ToArray());
|
||||
Tiles[i].setTile(ColorPalette);
|
||||
}
|
||||
|
||||
Map = new TileMap(Region2);
|
||||
}
|
||||
|
||||
public byte[] Write()
|
||||
{
|
||||
byte[] data = new byte[SIZE_CGB];
|
||||
for (int i = 0; i < Tiles.Length; i++)
|
||||
Array.Copy(Tiles[i].Write(), 0, data, i*Tile.SIZE_TILE, Tile.SIZE_TILE);
|
||||
|
||||
for (int i = 0; i < ColorPalette.Length; i++)
|
||||
BitConverter.GetBytes(getRGB555(ColorPalette[i])).CopyTo(data, 0x1FE0 + i*2);
|
||||
|
||||
Array.Copy(Map.Write(), 0, data, 0x2000, 0x600);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public static bool getIsCGB(byte[] data)
|
||||
{
|
||||
return data[0x2001] == 0;
|
||||
}
|
||||
public static byte[] CGBtoPSK(byte[] cgb, bool B2W2)
|
||||
{
|
||||
byte[] psk = (byte[])cgb.Clone();
|
||||
int shiftVal = B2W2 ? 0xA000 : 0xA0A0;
|
||||
for (int i = 0x2000; i < 0x2600; i += 2)
|
||||
{
|
||||
int index = BitConverter.ToUInt16(cgb, i);
|
||||
int val = IndexToVal(index, shiftVal);
|
||||
BitConverter.GetBytes((ushort)val).CopyTo(psk, i);
|
||||
}
|
||||
return psk;
|
||||
}
|
||||
public static byte[] PSKtoCGB(byte[] psk, bool B2W2)
|
||||
{
|
||||
byte[] cgb = (byte[])psk.Clone();
|
||||
int shiftVal = B2W2 ? 0xA000 : 0xA0A0;
|
||||
for (int i = 0x2000; i < 0x2600; i += 2)
|
||||
{
|
||||
int val = BitConverter.ToUInt16(psk, i);
|
||||
int index = ValToIndex(val, shiftVal);
|
||||
BitConverter.GetBytes((ushort)index).CopyTo(cgb, i);
|
||||
}
|
||||
return cgb;
|
||||
}
|
||||
|
||||
private Color[] ColorPalette;
|
||||
private Tile[] Tiles;
|
||||
private TileMap Map;
|
||||
|
||||
public Bitmap GetImage()
|
||||
{
|
||||
Bitmap img = new Bitmap(Width, Height, PixelFormat.Format32bppArgb);
|
||||
|
||||
// Fill Data
|
||||
using (Graphics g = Graphics.FromImage(img))
|
||||
for (int i = 0; i < Map.TileChoices.Length; i++)
|
||||
{
|
||||
int x = (i*8)%Width;
|
||||
int y = 8*((i*8)/Width);
|
||||
|
||||
Bitmap b = Tiles[Map.TileChoices[i] % Tiles.Length].Rotate(Map.Rotations[i]);
|
||||
g.DrawImage(b, new Point(x, y));
|
||||
}
|
||||
return img;
|
||||
}
|
||||
public void SetImage(Bitmap img)
|
||||
{
|
||||
if (img.Width != Width)
|
||||
throw new ArgumentException($"Invalid image width. Expected {Width} pixels wide.");
|
||||
if (img.Height != Height)
|
||||
throw new ArgumentException($"Invalid image height. Expected {Height} pixels high.");
|
||||
|
||||
// get raw bytes of image
|
||||
BitmapData bData = img.LockBits(new Rectangle(0, 0, Width, Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
||||
byte[] data = new byte[bData.Stride * bData.Height];
|
||||
Marshal.Copy(bData.Scan0, data, 0, data.Length);
|
||||
|
||||
int bpp = bData.Stride/Width;
|
||||
img.UnlockBits(bData);
|
||||
// get colors
|
||||
Color[] colors = new Color[Width*Height];
|
||||
for (int i = 0; i < data.Length; i += bpp)
|
||||
{
|
||||
uint val = BitConverter.ToUInt32(data, i);
|
||||
colors[i/bpp] = getRGB555_32(val);
|
||||
}
|
||||
|
||||
Color[] Palette = colors.Distinct().ToArray();
|
||||
if (Palette.Length > 0x10)
|
||||
throw new ArgumentException($"Too many unique colors. Expected <= 16, got {Palette.Length}");
|
||||
|
||||
// Build Tiles
|
||||
Tile[] tiles = new Tile[0x300];
|
||||
for (int i = 0; i < tiles.Length; i++)
|
||||
{
|
||||
int x = (i*8)%Width;
|
||||
int y = 8*((i*8)/Width);
|
||||
|
||||
Tile t = new Tile();
|
||||
for (uint ix = 0; ix < 8; ix++)
|
||||
for (uint iy = 0; iy < 8; iy++)
|
||||
{
|
||||
int index = (int)(y + iy)*Width + (int)(x + ix);
|
||||
Color c = colors[index];
|
||||
|
||||
t.ColorChoices[ix%8 + iy*8] = Array.IndexOf(Palette, c);
|
||||
}
|
||||
t.setTile(Palette);
|
||||
tiles[i] = t;
|
||||
}
|
||||
|
||||
List<Tile> tilelist = new List<Tile> {tiles[0]};
|
||||
TileMap tm = new TileMap(new byte[2*Width*Height/64]);
|
||||
for (int i = 1; i < tm.TileChoices.Length; i++)
|
||||
{
|
||||
for (int j = 0; j < tilelist.Count; j++)
|
||||
{
|
||||
int rotVal = tiles[i].getRotationValue(tilelist[j].ColorChoices);
|
||||
if (rotVal <= -1) continue;
|
||||
tm.TileChoices[i] = j;
|
||||
tm.Rotations[i] = rotVal;
|
||||
goto next;
|
||||
}
|
||||
if (tilelist.Count == 0xFF)
|
||||
throw new ArgumentException($"Too many unique tiles. Expected < 256, ran out of tiles at {i + 1} of {tm.TileChoices.Length}");
|
||||
tilelist.Add(tiles[i]);
|
||||
tm.TileChoices[i] = tilelist.Count - 1;
|
||||
|
||||
next:;
|
||||
}
|
||||
|
||||
// Finished!
|
||||
Map = tm;
|
||||
ColorPalette = Palette;
|
||||
Tiles = tilelist.ToArray();
|
||||
}
|
||||
|
||||
private class Tile
|
||||
{
|
||||
public const int SIZE_TILE = 0x20;
|
||||
private const int TileWidth = 8;
|
||||
private const int TileHeight = 8;
|
||||
public readonly int[] ColorChoices;
|
||||
private Bitmap img;
|
||||
|
||||
public Tile(byte[] data = null)
|
||||
{
|
||||
if (data == null)
|
||||
data = new byte[SIZE_TILE];
|
||||
if (data.Length != SIZE_TILE)
|
||||
return;
|
||||
|
||||
ColorChoices = new int[TileWidth*TileHeight];
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
ColorChoices[i*2+0] = data[i] & 0xF;
|
||||
ColorChoices[i*2+1] = data[i] >> 4;
|
||||
}
|
||||
}
|
||||
public void setTile(Color[] Palette)
|
||||
{
|
||||
img = new Bitmap(8, 8);
|
||||
for (int x = 0; x < 8; x++)
|
||||
for (int y = 0; y < 8; y++)
|
||||
{
|
||||
var index = ColorChoices[x%8 + y*8];
|
||||
var choice = Palette[index];
|
||||
img.SetPixel(x, y, choice);
|
||||
}
|
||||
}
|
||||
public byte[] Write()
|
||||
{
|
||||
byte[] data = new byte[SIZE_TILE];
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
data[i] |= (byte)(ColorChoices[i*2+0] & 0xF);
|
||||
data[i] |= (byte)((ColorChoices[i*2+1] & 0xF) << 4);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
public Bitmap Rotate(int rotFlip)
|
||||
{
|
||||
if (rotFlip == 0)
|
||||
return img;
|
||||
Bitmap tile = (Bitmap)img.Clone();
|
||||
if ((rotFlip & 4) > 0)
|
||||
tile.RotateFlip(RotateFlipType.RotateNoneFlipX);
|
||||
if ((rotFlip & 8) > 0)
|
||||
tile.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||
return tile;
|
||||
}
|
||||
|
||||
public int getRotationValue(int[] tileColors)
|
||||
{
|
||||
// Check all rotation types
|
||||
if (ColorChoices.SequenceEqual(tileColors))
|
||||
return 0;
|
||||
|
||||
// flip x
|
||||
for (int i = 0; i < 64; i++)
|
||||
if (ColorChoices[(7 - (i & 7)) + 8 * (i / 8)] != tileColors[i])
|
||||
goto check8;
|
||||
return 4;
|
||||
|
||||
// flip y
|
||||
check8:
|
||||
for (int i = 0; i < 64; i++)
|
||||
if (ColorChoices[64 - 8 * (1 + (i / 8)) + (i & 7)] != tileColors[i])
|
||||
goto check12;
|
||||
return 8;
|
||||
|
||||
// flip xy
|
||||
check12:
|
||||
for (int i = 0; i < 64; i++)
|
||||
if (ColorChoices[63 - i] != tileColors[i])
|
||||
return -1;
|
||||
return 12;
|
||||
}
|
||||
}
|
||||
private class TileMap
|
||||
{
|
||||
public readonly int[] TileChoices;
|
||||
public readonly int[] Rotations;
|
||||
|
||||
public TileMap(byte[] data)
|
||||
{
|
||||
TileChoices = new int[data.Length/2];
|
||||
Rotations = new int[data.Length/2];
|
||||
for (int i = 0; i < data.Length; i += 2)
|
||||
{
|
||||
TileChoices[i/2] = data[i];
|
||||
Rotations[i/2] = data[i+1];
|
||||
}
|
||||
}
|
||||
public byte[] Write()
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
using (BinaryWriter bw = new BinaryWriter(ms))
|
||||
{
|
||||
for (int i = 0; i < TileChoices.Length; i++)
|
||||
{
|
||||
bw.Write((byte)TileChoices[i]);
|
||||
bw.Write((byte)Rotations[i]);
|
||||
}
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int IndexToVal(int index, int shiftVal)
|
||||
{
|
||||
int val = index + shiftVal;
|
||||
return val + 15*(index/17);
|
||||
}
|
||||
private static int ValToIndex(int val, int shiftVal)
|
||||
{
|
||||
int index = val - shiftVal;
|
||||
return index - 15*(index/32);
|
||||
}
|
||||
|
||||
private static byte convert8to5(int colorval)
|
||||
{
|
||||
byte i = 0;
|
||||
while (colorval > Convert5To8[i]) i++;
|
||||
return i;
|
||||
}
|
||||
private static Color getRGB555_32(uint val)
|
||||
{
|
||||
int R = (int)(val >> 0 >> 3) & 0x1F;
|
||||
int G = (int)(val >> 8 >> 3) & 0x1F;
|
||||
int B = (int)(val >> 16 >> 3) & 0x1F;
|
||||
return Color.FromArgb(0xFF, Convert5To8[R], Convert5To8[G], Convert5To8[B]);
|
||||
}
|
||||
private static Color getRGB555_16(ushort val)
|
||||
{
|
||||
int R = (val >> 0) & 0x1F;
|
||||
int G = (val >> 5) & 0x1F;
|
||||
int B = (val >> 10) & 0x1F;
|
||||
return Color.FromArgb(0xFF, Convert5To8[R], Convert5To8[G], Convert5To8[B]);
|
||||
}
|
||||
private static ushort getRGB555(Color c)
|
||||
{
|
||||
int val = 0;
|
||||
// val += c.A >> 8; // unused
|
||||
val |= convert8to5(c.R) << 0;
|
||||
val |= convert8to5(c.G) << 5;
|
||||
val |= convert8to5(c.B) << 10;
|
||||
return (ushort)val;
|
||||
}
|
||||
private static readonly int[] Convert5To8 = { 0x00,0x08,0x10,0x18,0x20,0x29,0x31,0x39,
|
||||
0x41,0x4A,0x52,0x5A,0x62,0x6A,0x73,0x7B,
|
||||
0x83,0x8B,0x94,0x9C,0xA4,0xAC,0xB4,0xBD,
|
||||
0xC5,0xCD,0xD5,0xDE,0xE6,0xEE,0xF6,0xFF };
|
||||
}
|
||||
}
|
156
Subforms/Save Editors/Gen5/SAV_CGearSkin.Designer.cs
generated
Normal file
156
Subforms/Save Editors/Gen5/SAV_CGearSkin.Designer.cs
generated
Normal file
|
@ -0,0 +1,156 @@
|
|||
namespace PKHeX
|
||||
{
|
||||
partial class SAV_CGearSkin
|
||||
{
|
||||
/// <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_CGearSkin));
|
||||
this.PB_Background = new System.Windows.Forms.PictureBox();
|
||||
this.B_Cancel = new System.Windows.Forms.Button();
|
||||
this.B_Save = new System.Windows.Forms.Button();
|
||||
this.B_ImportPNG = new System.Windows.Forms.Button();
|
||||
this.B_ExportPNG = new System.Windows.Forms.Button();
|
||||
this.B_ExportCGB = new System.Windows.Forms.Button();
|
||||
this.B_ImportCGB = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.PB_Background)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// PB_Background
|
||||
//
|
||||
this.PB_Background.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.PB_Background.Location = new System.Drawing.Point(12, 12);
|
||||
this.PB_Background.Name = "PB_Background";
|
||||
this.PB_Background.Size = new System.Drawing.Size(258, 194);
|
||||
this.PB_Background.TabIndex = 0;
|
||||
this.PB_Background.TabStop = false;
|
||||
//
|
||||
// B_Cancel
|
||||
//
|
||||
this.B_Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_Cancel.Location = new System.Drawing.Point(276, 183);
|
||||
this.B_Cancel.Name = "B_Cancel";
|
||||
this.B_Cancel.Size = new System.Drawing.Size(103, 23);
|
||||
this.B_Cancel.TabIndex = 1;
|
||||
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.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_Save.Location = new System.Drawing.Point(276, 154);
|
||||
this.B_Save.Name = "B_Save";
|
||||
this.B_Save.Size = new System.Drawing.Size(103, 23);
|
||||
this.B_Save.TabIndex = 2;
|
||||
this.B_Save.Text = "Save";
|
||||
this.B_Save.UseVisualStyleBackColor = true;
|
||||
this.B_Save.Click += new System.EventHandler(this.B_Save_Click);
|
||||
//
|
||||
// B_ImportPNG
|
||||
//
|
||||
this.B_ImportPNG.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_ImportPNG.Location = new System.Drawing.Point(276, 12);
|
||||
this.B_ImportPNG.Name = "B_ImportPNG";
|
||||
this.B_ImportPNG.Size = new System.Drawing.Size(103, 23);
|
||||
this.B_ImportPNG.TabIndex = 3;
|
||||
this.B_ImportPNG.Text = "Import .png";
|
||||
this.B_ImportPNG.UseVisualStyleBackColor = true;
|
||||
this.B_ImportPNG.Click += new System.EventHandler(this.B_ImportPNG_Click);
|
||||
//
|
||||
// B_ExportPNG
|
||||
//
|
||||
this.B_ExportPNG.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_ExportPNG.Location = new System.Drawing.Point(276, 41);
|
||||
this.B_ExportPNG.Name = "B_ExportPNG";
|
||||
this.B_ExportPNG.Size = new System.Drawing.Size(103, 23);
|
||||
this.B_ExportPNG.TabIndex = 4;
|
||||
this.B_ExportPNG.Text = "Export .png";
|
||||
this.B_ExportPNG.UseVisualStyleBackColor = true;
|
||||
this.B_ExportPNG.Click += new System.EventHandler(this.B_ExportPNG_Click);
|
||||
//
|
||||
// B_ExportCGB
|
||||
//
|
||||
this.B_ExportCGB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_ExportCGB.Location = new System.Drawing.Point(276, 112);
|
||||
this.B_ExportCGB.Name = "B_ExportCGB";
|
||||
this.B_ExportCGB.Size = new System.Drawing.Size(103, 23);
|
||||
this.B_ExportCGB.TabIndex = 6;
|
||||
this.B_ExportCGB.Text = "Export .cgb";
|
||||
this.B_ExportCGB.UseVisualStyleBackColor = true;
|
||||
this.B_ExportCGB.Click += new System.EventHandler(this.B_ExportCGB_Click);
|
||||
//
|
||||
// B_ImportCGB
|
||||
//
|
||||
this.B_ImportCGB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_ImportCGB.Location = new System.Drawing.Point(276, 83);
|
||||
this.B_ImportCGB.Name = "B_ImportCGB";
|
||||
this.B_ImportCGB.Size = new System.Drawing.Size(103, 23);
|
||||
this.B_ImportCGB.TabIndex = 5;
|
||||
this.B_ImportCGB.Text = "Import .cgb/.psk";
|
||||
this.B_ImportCGB.UseVisualStyleBackColor = true;
|
||||
this.B_ImportCGB.Click += new System.EventHandler(this.B_ImportCGB_Click);
|
||||
//
|
||||
// SAV_CGearSkin
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(391, 216);
|
||||
this.Controls.Add(this.B_ExportCGB);
|
||||
this.Controls.Add(this.B_ImportCGB);
|
||||
this.Controls.Add(this.B_ExportPNG);
|
||||
this.Controls.Add(this.B_ImportPNG);
|
||||
this.Controls.Add(this.B_Save);
|
||||
this.Controls.Add(this.B_Cancel);
|
||||
this.Controls.Add(this.PB_Background);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "SAV_CGearSkin";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "C-Gear Skin";
|
||||
((System.ComponentModel.ISupportInitialize)(this.PB_Background)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox PB_Background;
|
||||
private System.Windows.Forms.Button B_Cancel;
|
||||
private System.Windows.Forms.Button B_Save;
|
||||
private System.Windows.Forms.Button B_ImportPNG;
|
||||
private System.Windows.Forms.Button B_ExportPNG;
|
||||
private System.Windows.Forms.Button B_ExportCGB;
|
||||
private System.Windows.Forms.Button B_ImportCGB;
|
||||
}
|
||||
}
|
134
Subforms/Save Editors/Gen5/SAV_CGearSkin.cs
Normal file
134
Subforms/Save Editors/Gen5/SAV_CGearSkin.cs
Normal file
|
@ -0,0 +1,134 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public partial class SAV_CGearSkin : Form
|
||||
{
|
||||
public SAV_CGearSkin()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
SAV = (SAV5)Main.SAV.Clone();
|
||||
|
||||
bool cgearPresent = SAV.Data[SAV.CGearInfoOffset + 0x26] == 1;
|
||||
bg = new CGearBackground(cgearPresent ?
|
||||
CGearBackground.PSKtoCGB(SAV.Data.Skip(SAV.CGearDataOffset).Take(CGearBackground.SIZE_CGB).ToArray(), SAV.B2W2)
|
||||
: new byte[CGearBackground.SIZE_CGB]);
|
||||
|
||||
PB_Background.Image = bg.GetImage();
|
||||
}
|
||||
|
||||
private readonly SAV5 SAV;
|
||||
private CGearBackground bg;
|
||||
|
||||
private void B_ImportPNG_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "PNG File|*.png",
|
||||
FileName = "Background.png",
|
||||
};
|
||||
|
||||
if (ofd.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
|
||||
Bitmap img = (Bitmap)Image.FromFile(ofd.FileName);
|
||||
|
||||
try
|
||||
{
|
||||
bg.SetImage(img);
|
||||
PB_Background.Image = bg.GetImage();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.Error(ex.Message);
|
||||
}
|
||||
}
|
||||
private void B_ExportPNG_Click(object sender, EventArgs e)
|
||||
{
|
||||
Image png = PB_Background.Image;
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "PNG File|*.png",
|
||||
FileName = "Background.png",
|
||||
};
|
||||
|
||||
if (sfd.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
|
||||
png.Save(sfd.FileName, ImageFormat.Png);
|
||||
}
|
||||
private void B_ImportCGB_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = CGearBackground.Filter + "|PokeStock C-Gear Skin|*.psk"
|
||||
};
|
||||
|
||||
if (ofd.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
|
||||
var len = new FileInfo(ofd.FileName).Length;
|
||||
if (len != CGearBackground.SIZE_CGB)
|
||||
{
|
||||
Util.Error($"Incorrect size, got {len} bytes, expected {CGearBackground.SIZE_CGB} bytes.");
|
||||
return;
|
||||
}
|
||||
|
||||
byte[] data = File.ReadAllBytes(ofd.FileName);
|
||||
if (!CGearBackground.getIsCGB(data))
|
||||
{
|
||||
bool B2W2 = data[0x2000] != 0x00;
|
||||
data = CGearBackground.PSKtoCGB(data, B2W2);
|
||||
}
|
||||
|
||||
bg = new CGearBackground(data);
|
||||
PB_Background.Image = bg.GetImage();
|
||||
}
|
||||
private void B_ExportCGB_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = CGearBackground.Filter,
|
||||
};
|
||||
|
||||
if (sfd.ShowDialog() != DialogResult.OK)
|
||||
return;
|
||||
|
||||
byte[] data = bg.Write();
|
||||
File.WriteAllBytes(sfd.FileName, data);
|
||||
}
|
||||
private void B_Save_Click(object sender, EventArgs e)
|
||||
{
|
||||
byte[] bgdata = bg.Write();
|
||||
if (bgdata.SequenceEqual(new byte[CGearBackground.SIZE_CGB]))
|
||||
return;
|
||||
|
||||
bgdata = CGearBackground.CGBtoPSK(bgdata, SAV.B2W2);
|
||||
|
||||
Array.Copy(bgdata, 0, Main.SAV.Data, SAV.CGearDataOffset, bgdata.Length);
|
||||
ushort chk = SaveUtil.ccitt16(bgdata);
|
||||
BitConverter.GetBytes(chk).CopyTo(Main.SAV.Data, SAV.CGearDataOffset + bgdata.Length + 2);
|
||||
BitConverter.GetBytes(chk).CopyTo(Main.SAV.Data, SAV.CGearDataOffset + bgdata.Length + 0x100);
|
||||
|
||||
byte[] skinchkdata = Main.SAV.Data.Skip(SAV.CGearDataOffset + bgdata.Length + 0x100).Take(4).ToArray();
|
||||
ushort skinchkval = SaveUtil.ccitt16(skinchkdata);
|
||||
BitConverter.GetBytes(skinchkval).CopyTo(Main.SAV.Data, SAV.CGearDataOffset + bgdata.Length + 0x112);
|
||||
|
||||
Main.SAV.Data[SAV.CGearInfoOffset + 0x26] = 1; // data present
|
||||
BitConverter.GetBytes(chk).CopyTo(Main.SAV.Data, SAV.CGearInfoOffset + 0x24);
|
||||
|
||||
Main.SAV.Edited = true;
|
||||
Close();
|
||||
}
|
||||
private void B_Cancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
216
Subforms/Save Editors/Gen5/SAV_CGearSkin.resx
Normal file
216
Subforms/Save Editors/Gen5/SAV_CGearSkin.resx
Normal 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>
|
|
@ -1669,7 +1669,6 @@ namespace PKHeX
|
|||
// CB_Vivillon
|
||||
//
|
||||
this.CB_Vivillon.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.CB_Vivillon.Enabled = false;
|
||||
this.CB_Vivillon.FormattingEnabled = true;
|
||||
this.CB_Vivillon.Location = new System.Drawing.Point(287, 73);
|
||||
this.CB_Vivillon.Name = "CB_Vivillon";
|
||||
|
|
|
@ -6,11 +6,6 @@ namespace PKHeX
|
|||
{
|
||||
public partial class Util
|
||||
{
|
||||
internal static string NormalizePath(string path)
|
||||
{
|
||||
return Path.GetFullPath(new Uri(path).LocalPath)
|
||||
.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
|
||||
}
|
||||
internal static string GetTempFolder()
|
||||
{
|
||||
return Path.Combine(Path.GetTempPath(), "3DSSE");
|
||||
|
@ -62,38 +57,6 @@ namespace PKHeX
|
|||
catch { }
|
||||
return null;
|
||||
}
|
||||
internal static string GetSDFLocation()
|
||||
{
|
||||
try
|
||||
{
|
||||
// Start by checking if the 3DS file path exists or not.
|
||||
string path_SDF = null;
|
||||
string[] DriveList = Environment.GetLogicalDrives();
|
||||
for (int i = 1; i < DriveList.Length; i++) // Skip first drive (some users still have floppy drives and would chew up time!)
|
||||
{
|
||||
string potentialPath_SDF = NormalizePath(Path.Combine(DriveList[i], "filer", "UserSaveData"));
|
||||
if (!Directory.Exists(potentialPath_SDF)) continue;
|
||||
|
||||
path_SDF = potentialPath_SDF; break;
|
||||
}
|
||||
if (path_SDF == null)
|
||||
return null;
|
||||
// 3DS data found in SD card reader. Let's get the title folder location!
|
||||
string[] folders = Directory.GetDirectories(path_SDF, "*", SearchOption.TopDirectoryOnly);
|
||||
Array.Sort(folders); // Don't need Modified Date, sort by path names just in case.
|
||||
|
||||
// Loop through all the folders in the Nintendo 3DS folder to see if any of them contain 'title'.
|
||||
for (int i = folders.Length - 1; i >= 0; i--)
|
||||
{
|
||||
if (File.Exists(Path.Combine(folders[i], "000011c4", "main"))) return Path.Combine(folders[i], "000011c4"); // OR
|
||||
if (File.Exists(Path.Combine(folders[i], "000011c5", "main"))) return Path.Combine(folders[i], "000011c5"); // AS
|
||||
if (File.Exists(Path.Combine(folders[i], "0000055d", "main"))) return Path.Combine(folders[i], "0000055d"); // X
|
||||
if (File.Exists(Path.Combine(folders[i], "0000055e", "main"))) return Path.Combine(folders[i], "0000055e"); // Y
|
||||
}
|
||||
return null; // Fallthrough
|
||||
}
|
||||
catch { return null; }
|
||||
}
|
||||
internal static string CleanFileName(string fileName)
|
||||
{
|
||||
return Path.GetInvalidFileNameChars().Aggregate(fileName, (current, c) => current.Replace(c.ToString(), string.Empty));
|
||||
|
|
Loading…
Reference in a new issue