diff --git a/PKX/f1-Main.Designer.cs b/PKX/f1-Main.Designer.cs
index 091230ec0..de931c5fe 100644
--- a/PKX/f1-Main.Designer.cs
+++ b/PKX/f1-Main.Designer.cs
@@ -548,6 +548,7 @@ public void InitializeComponent()
this.CHK_Nicknamed.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.CHK_Nicknamed.UseVisualStyleBackColor = true;
this.CHK_Nicknamed.CheckedChanged += new System.EventHandler(this.updateNickname);
+ this.CHK_Nicknamed.MouseDown += new System.Windows.Forms.MouseEventHandler(this.updateNicknameClick);
//
// Label_Gender
//
@@ -870,7 +871,9 @@ public void InitializeComponent()
//
this.TB_Nickname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.TB_Nickname.Location = new System.Drawing.Point(105, 49);
+ this.TB_Nickname.MaximumSize = new System.Drawing.Size(122, 20);
this.TB_Nickname.MaxLength = 12;
+ this.TB_Nickname.MinimumSize = new System.Drawing.Size(122, 20);
this.TB_Nickname.Name = "TB_Nickname";
this.TB_Nickname.Size = new System.Drawing.Size(122, 20);
this.TB_Nickname.TabIndex = 5;
diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs
index ebfd0ccca..cc954b19a 100644
--- a/PKX/f1-Main.cs
+++ b/PKX/f1-Main.cs
@@ -180,8 +180,9 @@ public Form1()
else if (File.Exists(Util.NormalizePath(Path.Combine(Util.GetTempFolder(), "root" + Path.DirectorySeparatorChar + "main"))))
openQuick(Util.NormalizePath(Path.Combine(Util.GetTempFolder() , "root" + Path.DirectorySeparatorChar + "main")));
+ TB_Nickname.Font = PKX.getPKXFont(11F);
// Close splash screen.
- init = true;
+ init = true;
SplashSCR.Join();
this.BringToFront();
this.WindowState = FormWindowState.Minimized;
@@ -193,9 +194,9 @@ public Form1()
}
#region Global Variables: Always Visible!
- public byte[] buff = new Byte[260];
- public byte[] savefile = new Byte[0x100000];
- public byte[] cyberSAV = new Byte[0x65600];
+ public byte[] buff = new byte[260];
+ public byte[] savefile = new byte[0x100000];
+ public byte[] cyberSAV = new byte[0x65600];
public bool savegame_oras = false;
public bool cybergadget = false;
public bool savLoaded = false;
@@ -2233,6 +2234,12 @@ private void updateNickname(object sender, EventArgs e)
}
}
}
+ private void updateNicknameClick(object sender, MouseEventArgs e)
+ {
+ // Special Character Form
+ if (e.Button == MouseButtons.Right)
+ (new f2_Text(TB_Nickname)).Show();
+ }
private void updateNotOT(object sender, EventArgs e)
{
if (TB_OTt2.Text == "")
@@ -2558,7 +2565,7 @@ private void mainmenuCodeGen(object sender, EventArgs e)
try { populateFields(buff); }
catch
{
- Array.Copy(new Byte[232], buff, 232);
+ Array.Copy(new byte[232], buff, 232);
populateFields(buff);
Util.Error("Imported code did not decrypt properly", "Please verify that what you imported was correct.");
}
@@ -2593,7 +2600,7 @@ private void openQuick(string path)
{
try
{
- byte[] blank = PKX.encryptArray(new Byte[260]);
+ byte[] blank = PKX.encryptArray(new byte[260]);
for (int i = 0; i < 232; i++)
blank[i] = (byte)(blank[i] ^ input[i]);
@@ -2617,14 +2624,14 @@ private void openFile(byte[] input, string path, string ext)
if (input.Length == 363 && BitConverter.ToUInt16(input, 0x6B) == 0)
{
// EAD Packet of 363 length
- byte[] c = new Byte[260];
+ byte[] c = new byte[260];
Array.Copy(input, 0x67, c, 0, 260);
input = c;
}
else if (input.Length == 407 && BitConverter.ToUInt16(input,0x98) == 0)
{
// EAD Packet of 407 length
- byte[] c = new Byte[260];
+ byte[] c = new byte[260];
Array.Copy(input, 0x93, c, 0, 260);
input = c;
}
@@ -2637,6 +2644,9 @@ private void openFile(byte[] input, string path, string ext)
// Verify the Data Input Size is Proper
else if (input.Length == 0x100000)
{
+ if (BitConverter.ToUInt64(input,0x10) != 0) // encrypted save
+ { Util.Error("PKHeX only edits decrypted save files.", "This save file is not decrypted."); return; }
+
B_ExportSAV.Enabled = false;
B_SwitchSAV.Enabled = false;
B_JPEG.Enabled = false;
@@ -2727,7 +2737,7 @@ private void openFile(byte[] input, string path, string ext)
}
catch
{
- Array.Copy(new Byte[232], buff, 232);
+ Array.Copy(new byte[232], buff, 232);
populateFields(buff);
Util.Error("Attempted to load previous generation PKM.", "Conversion failed.");
}
@@ -2743,7 +2753,7 @@ private void openMAIN(byte[] input, string path, string GameType, bool oras)
// Load CyberGadget
this.savindex = 0;
- this.savefile = new Byte[0x100000];
+ this.savefile = new byte[0x100000];
this.cyberSAV = input;
cybergadget = true;
B_ExportSAV.Enabled = true;
@@ -2765,14 +2775,14 @@ private void open1MB(byte[] input, string path, string GameType, bool oras)
SHA256 mySHA256 = SHA256Managed.Create();
// Check both IVFC Hashes
- byte[] zeroarray = new Byte[0x200];
+ byte[] zeroarray = new byte[0x200];
Array.Copy(savefile, 0x2000 + 0 * 0x7F000, zeroarray, 0, 0x20);
byte[] hashValue1 = mySHA256.ComputeHash(zeroarray);
Array.Copy(savefile, 0x2000 + 1 * 0x7F000, zeroarray, 0, 0x20);
byte[] hashValue2 = mySHA256.ComputeHash(zeroarray);
- byte[] realHash1 = new Byte[0x20];
- byte[] realHash2 = new Byte[0x20];
+ byte[] realHash1 = new byte[0x20];
+ byte[] realHash2 = new byte[0x20];
Array.Copy(savefile, 0x43C - 0 * 0x130, realHash1, 0, 0x20);
Array.Copy(savefile, 0x43C - 1 * 0x130, realHash2, 0, 0x20);
@@ -3096,7 +3106,7 @@ public byte[] preparepkx(byte[] buff)
if (BitConverter.ToUInt16(pkx, 0x5A + 2 * i) == 0)
{
Array.Copy(pkx, 0x5C + 2 * i, pkx, 0x5A + 2 * i, 2); // Shift moves down
- Array.Copy(new Byte[2], 0, pkx, 0x5C + 2 * i, 2); // Clear next move (error shifted down)
+ Array.Copy(new byte[2], 0, pkx, 0x5C + 2 * i, 2); // Clear next move (error shifted down)
// Move PP and PP Ups down one byte.
pkx[0x62 + i] = pkx[0x63 + i]; pkx[0x63 + i] = 0; // PP
@@ -3110,7 +3120,7 @@ public byte[] preparepkx(byte[] buff)
if (BitConverter.ToUInt16(pkx, 0x6A + 2 * i) == 0)
{
Array.Copy(pkx, 0x6C + 2 * i, pkx, 0x6A + 2 * i, 2); // Shift moves down
- Array.Copy(new Byte[2], 0, pkx, 0x6C + 2 * i, 2); // Clear next move (error shifted down)
+ Array.Copy(new byte[2], 0, pkx, 0x6C + 2 * i, 2); // Clear next move (error shifted down)
}
}
@@ -3255,7 +3265,7 @@ private void B_VerifyCHK_Click(object sender, EventArgs e)
for (int i = 0; i < length.Length; i++)
{
- byte[] data = new Byte[length[i]];
+ byte[] data = new byte[length[i]];
Array.Copy(savefile, start[i], data, 0, length[i]);
ushort checksum = PKX.ccitt16(data);
ushort actualsum = BitConverter.ToUInt16(savefile, csoff + i * 0x8);
@@ -3278,7 +3288,7 @@ private void B_VerifyCHK_Click(object sender, EventArgs e)
int invalid2 = 0;
for (int i = 0; i < length.Length; i++)
{
- byte[] data = new Byte[length[i]];
+ byte[] data = new byte[length[i]];
Array.Copy(savefile, start[i], data, 0, length[i]);
ushort checksum = PKX.ccitt16(data);
ushort actualsum = BitConverter.ToUInt16(savefile,csoff + i * 0x8);
@@ -3421,10 +3431,10 @@ private void B_VerifySHA_Click(object sender, EventArgs e)
uint offset = hashtabledata[2 + 4 * i];
uint blocksize = hashtabledata[3 + 4 * i];
- byte[] zeroarray = new Byte[blocksize];
+ byte[] zeroarray = new byte[blocksize];
Array.Copy(savefile, start, zeroarray, 0, length + 1);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
- byte[] actualhash = new Byte[0x20];
+ byte[] actualhash = new byte[0x20];
Array.Copy(savefile, offset, actualhash, 0, 0x20);
if (!hashValue.SequenceEqual(actualhash))
@@ -3457,10 +3467,10 @@ private void B_VerifySHA_Click(object sender, EventArgs e)
uint offset = hashtabledata[2 + 4 * i];
uint blocksize = hashtabledata[3 + 4 * i];
- byte[] zeroarray = new Byte[blocksize];
+ byte[] zeroarray = new byte[blocksize];
Array.Copy(savefile, start, zeroarray, 0, length + 1);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
- byte[] actualhash = new Byte[0x20];
+ byte[] actualhash = new byte[0x20];
Array.Copy(savefile, offset, actualhash, 0, 0x20);
if (!hashValue.SequenceEqual(actualhash))
@@ -3476,10 +3486,10 @@ private void B_VerifySHA_Click(object sender, EventArgs e)
// Check the Upper Level IVFC Hashes
{
- byte[] zeroarray = new Byte[0x200];
+ byte[] zeroarray = new byte[0x200];
Array.Copy(savefile, 0x2000, zeroarray, 0, 0x20);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
- byte[] actualhash = new Byte[0x20];
+ byte[] actualhash = new byte[0x20];
Array.Copy(savefile, 0x43C, actualhash, 0, 0x20);
if (!hashValue.SequenceEqual(actualhash))
{
@@ -3487,10 +3497,10 @@ private void B_VerifySHA_Click(object sender, EventArgs e)
}
}
{
- byte[] zeroarray = new Byte[0x200];
+ byte[] zeroarray = new byte[0x200];
Array.Copy(savefile, 0x81000, zeroarray, 0, 0x20);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
- byte[] actualhash = new Byte[0x20];
+ byte[] actualhash = new byte[0x20];
Array.Copy(savefile, 0x30C, actualhash, 0, 0x20);
if (!hashValue.SequenceEqual(actualhash))
{
@@ -3498,13 +3508,13 @@ private void B_VerifySHA_Click(object sender, EventArgs e)
}
}
{
- byte[] difihash1 = new Byte[0x12C];
- byte[] difihash2 = new Byte[0x12C];
+ byte[] difihash1 = new byte[0x12C];
+ byte[] difihash2 = new byte[0x12C];
Array.Copy(savefile, 0x330, difihash1, 0, 0x12C);
Array.Copy(savefile, 0x200, difihash2, 0, 0x12C);
byte[] hashValue1 = mySHA256.ComputeHash(difihash1);
byte[] hashValue2 = mySHA256.ComputeHash(difihash2);
- byte[] actualhash = new Byte[0x20];
+ byte[] actualhash = new byte[0x20];
Array.Copy(savefile, 0x16C, actualhash, 0, 0x20);
if (hashValue1.SequenceEqual(actualhash))
{
@@ -3523,7 +3533,7 @@ private void B_VerifySHA_Click(object sender, EventArgs e)
private void exportSAV(object sender, EventArgs e)
{
// Create another version of the save file.
- byte[] editedsav = new Byte[0x100000];
+ byte[] editedsav = new byte[0x100000];
Array.Copy(savefile, editedsav, savefile.Length);
// Since we only edited one of the save files, we only have to fix half of the chk/hashes!
@@ -3549,7 +3559,7 @@ private void exportSAV(object sender, EventArgs e)
for (int i = 0; i < length.Length; i++)
{
- byte[] data = new Byte[length[i]];
+ byte[] data = new byte[length[i]];
Array.Copy(editedsav, start[i], data, 0, length[i]);
ushort checksum = PKX.ccitt16(data);
Array.Copy(BitConverter.GetBytes(checksum), 0, editedsav, csoff + i * 8, 2);
@@ -3697,7 +3707,7 @@ private void exportSAV(object sender, EventArgs e)
uint offset = hashtabledata[2 + 4 * i];
uint blocksize = hashtabledata[3 + 4 * i];
- byte[] zeroarray = new Byte[blocksize];
+ byte[] zeroarray = new byte[blocksize];
Array.Copy(editedsav, start, zeroarray, 0, length + 1);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
Array.Copy(hashValue, 0, editedsav, offset, 0x20);
@@ -3709,7 +3719,7 @@ private void exportSAV(object sender, EventArgs e)
uint offset = hashtabledata[2 + 4 * 1];
uint blocksize = hashtabledata[3 + 4 * 1];
- byte[] zeroarray = new Byte[blocksize];
+ byte[] zeroarray = new byte[blocksize];
Array.Copy(editedsav, start, zeroarray, 0, length + 1);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
@@ -3722,7 +3732,7 @@ private void exportSAV(object sender, EventArgs e)
uint offset = hashtabledata[2 + 4 * 0];
uint blocksize = hashtabledata[3 + 4 * 0];
- byte[] zeroarray = new Byte[blocksize];
+ byte[] zeroarray = new byte[blocksize];
Array.Copy(editedsav, start, zeroarray, 0, length + 1);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
@@ -3730,7 +3740,7 @@ private void exportSAV(object sender, EventArgs e)
}
// Fix IVFC Hash
{
- byte[] zeroarray = new Byte[0x200];
+ byte[] zeroarray = new byte[0x200];
Array.Copy(editedsav, 0x2000 + savindex * 0x7F000, zeroarray, 0, 0x20);
byte[] hashValue = mySHA256.ComputeHash(zeroarray);
@@ -3738,7 +3748,7 @@ private void exportSAV(object sender, EventArgs e)
}
// Fix DISA Hash
{
- byte[] difihash = new Byte[0x12C];
+ byte[] difihash = new byte[0x12C];
Array.Copy(editedsav, 0x330 - savindex * 0x130, difihash, 0, 0x12C);
byte[] hashValue = mySHA256.ComputeHash(difihash);
@@ -3753,12 +3763,12 @@ private void exportSAV(object sender, EventArgs e)
// If CyberGadget
if (cybergadget)
{
- byte[] cybersav = new Byte[0x65600];
- if (savegame_oras) cybersav = new Byte[0x76000];
+ byte[] cybersav = new byte[0x65600];
+ if (savegame_oras) cybersav = new byte[0x76000];
Array.Copy(editedsav, 0x5400, cybersav, 0, cybersav.Length);
// Chunk Error Checking
- byte[] FFFF = new Byte[0x200];
- byte[] section = new Byte[0x200];
+ byte[] FFFF = new byte[0x200];
+ byte[] section = new byte[0x200];
for (int i = 0; i < 0x200; i++)
FFFF[i] = 0xFF;
@@ -3875,7 +3885,7 @@ private void rcmView_Click(object sender, EventArgs e)
// Load the PKX file
if (BitConverter.ToUInt64(savefile, offset + 8) != 0)
{
- byte[] ekxdata = new Byte[0xE8];
+ byte[] ekxdata = new byte[0xE8];
Array.Copy(savefile, offset, ekxdata, 0, 0xE8);
byte[] pkxdata = PKX.decryptArray(ekxdata);
int species = BitConverter.ToInt16(pkxdata, 0x08); // Get Species
@@ -3893,7 +3903,7 @@ private void rcmView_Click(object sender, EventArgs e)
{
try
{
- byte[] blank = PKX.encryptArray(new Byte[0xE8]);
+ byte[] blank = PKX.encryptArray(new byte[0xE8]);
for (int i = 0; i < 0xE8; i++)
blank[i] = (byte)(buff[i] ^ blank[i]);
@@ -3962,7 +3972,7 @@ private void rcmDelete_Click(object sender, EventArgs e)
if (slot == 30 && partycount == 1 && !DEV_Ability.Enabled) { Util.Alert("Can't delete first slot."); return; }
int offset = getPKXOffset(slot);
- byte[] pkxdata = new Byte[0x104];
+ byte[] pkxdata = new byte[0x104];
byte[] ekxdata = PKX.encryptArray(pkxdata);
if (slot >= 30 && slot < 36) // Party
@@ -4033,7 +4043,7 @@ private byte setParty()
for (int i = 0; i < 6; i++)
{
// Gather all the species
- byte[] data = new Byte[0x104];
+ byte[] data = new byte[0x104];
Array.Copy(savefile, offset + i * 0x104, data, 0, 0x104);
byte[] decdata = PKX.decryptArray(data);
int species = BitConverter.ToInt16(decdata,8);
@@ -4049,7 +4059,7 @@ private byte setParty()
// Zero out the party slots that are empty.
for (int i = 0; i < 6; i++)
if (i >= partymembers)
- Array.Copy(PKX.encryptArray(new Byte[0x104]), 0, savefile, offset + (i * 0x104), 0x104);
+ Array.Copy(PKX.encryptArray(new byte[0x104]), 0, savefile, offset + (i * 0x104), 0x104);
// Repeat for Battle Box.
byte battlemem = 0;
@@ -4057,7 +4067,7 @@ private byte setParty()
for (int i = 0; i < 6; i++)
{
// Gather all the species
- byte[] data = new Byte[0x104];
+ byte[] data = new byte[0x104];
Array.Copy(savefile, offset2 + i * 0xE8, data, 0, 0xE8);
byte[] decdata = PKX.decryptArray(data);
int species = BitConverter.ToInt16(decdata, 8);
@@ -4071,7 +4081,7 @@ private byte setParty()
// Zero out the party slots that are empty.
for (int i = 0; i < 6; i++)
if (i >= battlemem)
- Array.Copy(PKX.encryptArray(new Byte[0x104]), 0, savefile, offset2 + (i * 0xE8), 0xE8);
+ Array.Copy(PKX.encryptArray(new byte[0x104]), 0, savefile, offset2 + (i * 0xE8), 0xE8);
if (battlemem == 0)
savefile[offset2 + 6 * 0xE8 + savindex * 0x7F000] = 0;
@@ -4273,7 +4283,7 @@ private void getSAVOffsets()
}
private void getSlotFiller(int offset, PictureBox pb)
{
- byte[] slotdata = new Byte[0xE8];
+ byte[] slotdata = new byte[0xE8];
Array.Copy(savefile, offset, slotdata, 0, 0xE8); // Fill Our EKX Slot
byte[] dslotdata = PKX.decryptArray(slotdata);
@@ -4281,7 +4291,7 @@ private void getSlotFiller(int offset, PictureBox pb)
for (int i = 8; i < 232; i += 2) // Loop through the entire PKX
chk += BitConverter.ToUInt16(dslotdata, i);
- if (chk != BitConverter.ToUInt16(dslotdata, 6) && (!savLoaded && !slotdata.SequenceEqual(new Byte[0xE8]))) // Bad Egg
+ if (chk != BitConverter.ToUInt16(dslotdata, 6) && (!savLoaded && !slotdata.SequenceEqual(new byte[0xE8]))) // Bad Egg
{
pb.Image = null;
pb.BackColor = Color.Red;
@@ -4449,7 +4459,7 @@ private void Menu_DumpLoadBoxes_Click(object sender, EventArgs e)
}
for (int i = 0; i < 31 * 30 * size; i += size)
{
- byte[] ekxdata = new Byte[size];
+ byte[] ekxdata = new byte[size];
Array.Copy(savefile, offset + i, ekxdata, 0, size);
byte[] pkxdata = PKX.decryptArray(ekxdata);
@@ -4504,7 +4514,7 @@ private void loadBoxesFromDB(string path)
// Array.Clear(savefile, offset, size * 30 * 31);
if (Util.Prompt(MessageBoxButtons.YesNo, "Clear subsequent boxes when importing data?", "If you only want to overwrite for new data, press no.") == DialogResult.Yes)
{
- byte[] ezeros = PKX.encryptArray(new Byte[232]);
+ byte[] ezeros = PKX.encryptArray(new byte[232]);
for (int i = ctr; i < 30 * 31; i++)
Array.Copy(ezeros, 0, savefile, offset + i * 232, 232);
}
@@ -4521,7 +4531,7 @@ private void loadBoxesFromDB(string path)
&& len != 100 && len != 80) // 4th Gen
continue;
string name = filepaths[i];
- byte[] data = new Byte[232];
+ byte[] data = new byte[232];
string ext = Path.GetExtension(filepaths[i]);
if (ext == ".pkm" || ext == ".3gpkm" || ext == ".pk3" || ext == ".pk4" || ext == ".pk5")
{
@@ -4824,7 +4834,7 @@ private void B_JPEG_Click(object sender, EventArgs e)
}
int length = 0xE004;
- byte[] jpeg = new Byte[length];
+ byte[] jpeg = new byte[length];
Array.Copy(savefile, offset, jpeg, 0, length);
SaveFileDialog savejpeg = new SaveFileDialog();
savejpeg.FileName = filename;
@@ -5051,7 +5061,7 @@ private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
else
{
if (ModifierKeys == Keys.Alt)
- Array.Copy(PKX.encryptArray(new Byte[0xE8]), 0, savefile, pkm_from_offset, 0xE8);
+ Array.Copy(PKX.encryptArray(new byte[0xE8]), 0, savefile, pkm_from_offset, 0xE8);
else if (ModifierKeys != Keys.Control)
Array.Copy(savefile, offset, savefile, pkm_from_offset, 0xE8); // Copy from new slot to old slot.
Array.Copy(pkm_from, 0, savefile, offset, 0xE8); // Copy from temp slot to new.
@@ -5064,7 +5074,7 @@ private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)
if (e.Data != null)
e.Effect = DragDropEffects.Move;
}
- private byte[] pkm_from = PKX.encryptArray(new Byte[0xE8]);
+ private byte[] pkm_from = PKX.encryptArray(new byte[0xE8]);
private int pkm_from_offset = 0;
private void L_Save_Click(object sender, EventArgs e)
{
@@ -5099,6 +5109,10 @@ private void Menu_Unicode_Click(object sender, EventArgs e)
BTN_Shinytize.Text = "☆";
}
}
+
+
+
+
}
#region Structs & Classes
public class cbItem
diff --git a/PKX/f2-Text.Designer.cs b/PKX/f2-Text.Designer.cs
new file mode 100644
index 000000000..e672ec3b4
--- /dev/null
+++ b/PKX/f2-Text.Designer.cs
@@ -0,0 +1,438 @@
+namespace PKHeX
+{
+ partial class f2_Text
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(f2_Text));
+ this.L04 = new System.Windows.Forms.Label();
+ this.L0C = new System.Windows.Forms.Label();
+ this.L0D = new System.Windows.Forms.Label();
+ this.L05 = new System.Windows.Forms.Label();
+ this.L0E = new System.Windows.Forms.Label();
+ this.L06 = new System.Windows.Forms.Label();
+ this.L0F = new System.Windows.Forms.Label();
+ this.L07 = new System.Windows.Forms.Label();
+ this.L1E = new System.Windows.Forms.Label();
+ this.L16 = new System.Windows.Forms.Label();
+ this.L1F = new System.Windows.Forms.Label();
+ this.L17 = new System.Windows.Forms.Label();
+ this.L18 = new System.Windows.Forms.Label();
+ this.L10 = new System.Windows.Forms.Label();
+ this.L19 = new System.Windows.Forms.Label();
+ this.L11 = new System.Windows.Forms.Label();
+ this.L0B = new System.Windows.Forms.Label();
+ this.L03 = new System.Windows.Forms.Label();
+ this.L0A = new System.Windows.Forms.Label();
+ this.L02 = new System.Windows.Forms.Label();
+ this.L09 = new System.Windows.Forms.Label();
+ this.L01 = new System.Windows.Forms.Label();
+ this.L08 = new System.Windows.Forms.Label();
+ this.L00 = new System.Windows.Forms.Label();
+ this.L1B = new System.Windows.Forms.Label();
+ this.L13 = new System.Windows.Forms.Label();
+ this.L1A = new System.Windows.Forms.Label();
+ this.L12 = new System.Windows.Forms.Label();
+ this.L1D = new System.Windows.Forms.Label();
+ this.L15 = new System.Windows.Forms.Label();
+ this.L1C = new System.Windows.Forms.Label();
+ this.L14 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // L04
+ //
+ this.L04.AutoSize = true;
+ this.L04.Location = new System.Drawing.Point(92, 12);
+ this.L04.Name = "L04";
+ this.L04.Size = new System.Drawing.Size(14, 13);
+ this.L04.TabIndex = 3;
+ this.L04.Text = "X";
+ //
+ // L0C
+ //
+ this.L0C.AutoSize = true;
+ this.L0C.Location = new System.Drawing.Point(92, 34);
+ this.L0C.Name = "L0C";
+ this.L0C.Size = new System.Drawing.Size(14, 13);
+ this.L0C.TabIndex = 4;
+ this.L0C.Text = "X";
+ //
+ // L0D
+ //
+ this.L0D.AutoSize = true;
+ this.L0D.Location = new System.Drawing.Point(112, 34);
+ this.L0D.Name = "L0D";
+ this.L0D.Size = new System.Drawing.Size(14, 13);
+ this.L0D.TabIndex = 6;
+ this.L0D.Text = "X";
+ //
+ // L05
+ //
+ this.L05.AutoSize = true;
+ this.L05.Location = new System.Drawing.Point(112, 12);
+ this.L05.Name = "L05";
+ this.L05.Size = new System.Drawing.Size(14, 13);
+ this.L05.TabIndex = 5;
+ this.L05.Text = "X";
+ //
+ // L0E
+ //
+ this.L0E.AutoSize = true;
+ this.L0E.Location = new System.Drawing.Point(132, 34);
+ this.L0E.Name = "L0E";
+ this.L0E.Size = new System.Drawing.Size(14, 13);
+ this.L0E.TabIndex = 8;
+ this.L0E.Text = "X";
+ //
+ // L06
+ //
+ this.L06.AutoSize = true;
+ this.L06.Location = new System.Drawing.Point(132, 12);
+ this.L06.Name = "L06";
+ this.L06.Size = new System.Drawing.Size(14, 13);
+ this.L06.TabIndex = 7;
+ this.L06.Text = "X";
+ //
+ // L0F
+ //
+ this.L0F.AutoSize = true;
+ this.L0F.Location = new System.Drawing.Point(152, 34);
+ this.L0F.Name = "L0F";
+ this.L0F.Size = new System.Drawing.Size(14, 13);
+ this.L0F.TabIndex = 10;
+ this.L0F.Text = "X";
+ //
+ // L07
+ //
+ this.L07.AutoSize = true;
+ this.L07.Location = new System.Drawing.Point(152, 12);
+ this.L07.Name = "L07";
+ this.L07.Size = new System.Drawing.Size(14, 13);
+ this.L07.TabIndex = 9;
+ this.L07.Text = "X";
+ //
+ // L1E
+ //
+ this.L1E.AutoSize = true;
+ this.L1E.Location = new System.Drawing.Point(132, 81);
+ this.L1E.Name = "L1E";
+ this.L1E.Size = new System.Drawing.Size(14, 13);
+ this.L1E.TabIndex = 12;
+ this.L1E.Text = "X";
+ //
+ // L16
+ //
+ this.L16.AutoSize = true;
+ this.L16.Location = new System.Drawing.Point(132, 59);
+ this.L16.Name = "L16";
+ this.L16.Size = new System.Drawing.Size(14, 13);
+ this.L16.TabIndex = 11;
+ this.L16.Text = "X";
+ //
+ // L1F
+ //
+ this.L1F.AutoSize = true;
+ this.L1F.Location = new System.Drawing.Point(152, 81);
+ this.L1F.Name = "L1F";
+ this.L1F.Size = new System.Drawing.Size(14, 13);
+ this.L1F.TabIndex = 14;
+ this.L1F.Text = "X";
+ //
+ // L17
+ //
+ this.L17.AutoSize = true;
+ this.L17.Location = new System.Drawing.Point(152, 59);
+ this.L17.Name = "L17";
+ this.L17.Size = new System.Drawing.Size(14, 13);
+ this.L17.TabIndex = 13;
+ this.L17.Text = "X";
+ //
+ // L18
+ //
+ this.L18.AutoSize = true;
+ this.L18.Location = new System.Drawing.Point(12, 81);
+ this.L18.Name = "L18";
+ this.L18.Size = new System.Drawing.Size(14, 13);
+ this.L18.TabIndex = 16;
+ this.L18.Text = "X";
+ //
+ // L10
+ //
+ this.L10.AutoSize = true;
+ this.L10.Location = new System.Drawing.Point(12, 59);
+ this.L10.Name = "L10";
+ this.L10.Size = new System.Drawing.Size(14, 13);
+ this.L10.TabIndex = 15;
+ this.L10.Text = "X";
+ //
+ // L19
+ //
+ this.L19.AutoSize = true;
+ this.L19.Location = new System.Drawing.Point(32, 81);
+ this.L19.Name = "L19";
+ this.L19.Size = new System.Drawing.Size(14, 13);
+ this.L19.TabIndex = 18;
+ this.L19.Text = "X";
+ //
+ // L11
+ //
+ this.L11.AutoSize = true;
+ this.L11.Location = new System.Drawing.Point(32, 59);
+ this.L11.Name = "L11";
+ this.L11.Size = new System.Drawing.Size(14, 13);
+ this.L11.TabIndex = 17;
+ this.L11.Text = "X";
+ //
+ // L0B
+ //
+ this.L0B.AutoSize = true;
+ this.L0B.Location = new System.Drawing.Point(72, 34);
+ this.L0B.Name = "L0B";
+ this.L0B.Size = new System.Drawing.Size(14, 13);
+ this.L0B.TabIndex = 26;
+ this.L0B.Text = "X";
+ //
+ // L03
+ //
+ this.L03.AutoSize = true;
+ this.L03.Location = new System.Drawing.Point(72, 12);
+ this.L03.Name = "L03";
+ this.L03.Size = new System.Drawing.Size(14, 13);
+ this.L03.TabIndex = 25;
+ this.L03.Text = "X";
+ //
+ // L0A
+ //
+ this.L0A.AutoSize = true;
+ this.L0A.Location = new System.Drawing.Point(52, 34);
+ this.L0A.Name = "L0A";
+ this.L0A.Size = new System.Drawing.Size(14, 13);
+ this.L0A.TabIndex = 24;
+ this.L0A.Text = "X";
+ //
+ // L02
+ //
+ this.L02.AutoSize = true;
+ this.L02.Location = new System.Drawing.Point(52, 12);
+ this.L02.Name = "L02";
+ this.L02.Size = new System.Drawing.Size(14, 13);
+ this.L02.TabIndex = 23;
+ this.L02.Text = "X";
+ //
+ // L09
+ //
+ this.L09.AutoSize = true;
+ this.L09.Location = new System.Drawing.Point(32, 34);
+ this.L09.Name = "L09";
+ this.L09.Size = new System.Drawing.Size(14, 13);
+ this.L09.TabIndex = 22;
+ this.L09.Text = "X";
+ //
+ // L01
+ //
+ this.L01.AutoSize = true;
+ this.L01.Location = new System.Drawing.Point(32, 12);
+ this.L01.Name = "L01";
+ this.L01.Size = new System.Drawing.Size(14, 13);
+ this.L01.TabIndex = 21;
+ this.L01.Text = "X";
+ //
+ // L08
+ //
+ this.L08.AutoSize = true;
+ this.L08.Location = new System.Drawing.Point(12, 34);
+ this.L08.Name = "L08";
+ this.L08.Size = new System.Drawing.Size(14, 13);
+ this.L08.TabIndex = 20;
+ this.L08.Text = "X";
+ //
+ // L00
+ //
+ this.L00.AutoSize = true;
+ this.L00.Location = new System.Drawing.Point(12, 12);
+ this.L00.Name = "L00";
+ this.L00.Size = new System.Drawing.Size(14, 13);
+ this.L00.TabIndex = 19;
+ this.L00.Text = "X";
+ //
+ // L1B
+ //
+ this.L1B.AutoSize = true;
+ this.L1B.Location = new System.Drawing.Point(72, 81);
+ this.L1B.Name = "L1B";
+ this.L1B.Size = new System.Drawing.Size(14, 13);
+ this.L1B.TabIndex = 30;
+ this.L1B.Text = "X";
+ //
+ // L13
+ //
+ this.L13.AutoSize = true;
+ this.L13.Location = new System.Drawing.Point(72, 59);
+ this.L13.Name = "L13";
+ this.L13.Size = new System.Drawing.Size(14, 13);
+ this.L13.TabIndex = 29;
+ this.L13.Text = "X";
+ //
+ // L1A
+ //
+ this.L1A.AutoSize = true;
+ this.L1A.Location = new System.Drawing.Point(52, 81);
+ this.L1A.Name = "L1A";
+ this.L1A.Size = new System.Drawing.Size(14, 13);
+ this.L1A.TabIndex = 28;
+ this.L1A.Text = "X";
+ //
+ // L12
+ //
+ this.L12.AutoSize = true;
+ this.L12.Location = new System.Drawing.Point(52, 59);
+ this.L12.Name = "L12";
+ this.L12.Size = new System.Drawing.Size(14, 13);
+ this.L12.TabIndex = 27;
+ this.L12.Text = "X";
+ //
+ // L1D
+ //
+ this.L1D.AutoSize = true;
+ this.L1D.Location = new System.Drawing.Point(112, 81);
+ this.L1D.Name = "L1D";
+ this.L1D.Size = new System.Drawing.Size(14, 13);
+ this.L1D.TabIndex = 34;
+ this.L1D.Text = "X";
+ //
+ // L15
+ //
+ this.L15.AutoSize = true;
+ this.L15.Location = new System.Drawing.Point(112, 59);
+ this.L15.Name = "L15";
+ this.L15.Size = new System.Drawing.Size(14, 13);
+ this.L15.TabIndex = 33;
+ this.L15.Text = "X";
+ //
+ // L1C
+ //
+ this.L1C.AutoSize = true;
+ this.L1C.Location = new System.Drawing.Point(92, 81);
+ this.L1C.Name = "L1C";
+ this.L1C.Size = new System.Drawing.Size(14, 13);
+ this.L1C.TabIndex = 32;
+ this.L1C.Text = "X";
+ //
+ // L14
+ //
+ this.L14.AutoSize = true;
+ this.L14.Location = new System.Drawing.Point(92, 59);
+ this.L14.Name = "L14";
+ this.L14.Size = new System.Drawing.Size(14, 13);
+ this.L14.TabIndex = 31;
+ this.L14.Text = "X";
+ //
+ // f2_Text
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(179, 107);
+ this.Controls.Add(this.L1D);
+ this.Controls.Add(this.L15);
+ this.Controls.Add(this.L1C);
+ this.Controls.Add(this.L14);
+ this.Controls.Add(this.L1B);
+ this.Controls.Add(this.L13);
+ this.Controls.Add(this.L1A);
+ this.Controls.Add(this.L12);
+ this.Controls.Add(this.L0B);
+ this.Controls.Add(this.L03);
+ this.Controls.Add(this.L0A);
+ this.Controls.Add(this.L02);
+ this.Controls.Add(this.L09);
+ this.Controls.Add(this.L01);
+ this.Controls.Add(this.L08);
+ this.Controls.Add(this.L00);
+ this.Controls.Add(this.L19);
+ this.Controls.Add(this.L11);
+ this.Controls.Add(this.L18);
+ this.Controls.Add(this.L10);
+ this.Controls.Add(this.L1F);
+ this.Controls.Add(this.L17);
+ this.Controls.Add(this.L1E);
+ this.Controls.Add(this.L16);
+ this.Controls.Add(this.L0F);
+ this.Controls.Add(this.L07);
+ this.Controls.Add(this.L0E);
+ this.Controls.Add(this.L06);
+ this.Controls.Add(this.L0D);
+ this.Controls.Add(this.L05);
+ this.Controls.Add(this.L0C);
+ this.Controls.Add(this.L04);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "f2_Text";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Special Characters";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label L04;
+ private System.Windows.Forms.Label L0C;
+ private System.Windows.Forms.Label L0D;
+ private System.Windows.Forms.Label L05;
+ private System.Windows.Forms.Label L0E;
+ private System.Windows.Forms.Label L06;
+ private System.Windows.Forms.Label L0F;
+ private System.Windows.Forms.Label L07;
+ private System.Windows.Forms.Label L1E;
+ private System.Windows.Forms.Label L16;
+ private System.Windows.Forms.Label L1F;
+ private System.Windows.Forms.Label L17;
+ private System.Windows.Forms.Label L18;
+ private System.Windows.Forms.Label L10;
+ private System.Windows.Forms.Label L19;
+ private System.Windows.Forms.Label L11;
+ private System.Windows.Forms.Label L0B;
+ private System.Windows.Forms.Label L03;
+ private System.Windows.Forms.Label L0A;
+ private System.Windows.Forms.Label L02;
+ private System.Windows.Forms.Label L09;
+ private System.Windows.Forms.Label L01;
+ private System.Windows.Forms.Label L08;
+ private System.Windows.Forms.Label L00;
+ private System.Windows.Forms.Label L1B;
+ private System.Windows.Forms.Label L13;
+ private System.Windows.Forms.Label L1A;
+ private System.Windows.Forms.Label L12;
+ private System.Windows.Forms.Label L1D;
+ private System.Windows.Forms.Label L15;
+ private System.Windows.Forms.Label L1C;
+ private System.Windows.Forms.Label L14;
+ }
+}
\ No newline at end of file
diff --git a/PKX/f2-Text.cs b/PKX/f2-Text.cs
new file mode 100644
index 000000000..c849e60f0
--- /dev/null
+++ b/PKX/f2-Text.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace PKHeX
+{
+ public partial class f2_Text : Form
+ {
+ public f2_Text(TextBox TB_NN)
+ {
+ this.Hide();
+ InitializeComponent();
+ TB_Nickname = TB_NN;
+ Font pkxFont = PKX.getPKXFont(12F);
+ Label[] lbla = new Label[]
+ {
+ L00, L01, L02, L03, L04, L05, L06, L07,
+ L08, L09, L0A, L0B, L0C, L0D, L0E, L0F,
+ L10, L11, L12, L13, L14, L15, L16, L17,
+ L18, L19, L1A, L1B, L1C, L1D, L1E, L1F,
+ };
+ ushort[] chars = new ushort[]
+ {
+ 0xE081, 0xE082, 0xE083, 0xE084, 0xE085, 0xE086, 0xE087, 0xE08D,
+ 0xE08E, 0xE08F, 0xE090, 0xE091, 0xE092, 0xE093, 0xE094, 0xE095,
+ 0xE096, 0xE097, 0xE098, 0xE099, 0xE09A, 0xE09B, 0xE09C, 0xE09D,
+ 0xE09E, 0xE09F, 0xE0A0, 0xE0A1, 0xE0A2, 0xE0A3, 0xE0A4, 0xE0A5,
+ };
+ for (int i = 0; i < 32; i++)
+ {
+ lbla[i].Font = pkxFont;
+ lbla[i].Text = Convert.ToChar(chars[i]).ToString();
+ lbla[i].Click += new EventHandler(OnClick);
+ }
+ this.CenterToParent();
+ this.Show();
+ }
+ TextBox TB_Nickname;
+ private void OnClick(object sender, EventArgs e)
+ {
+ string nickname = TB_Nickname.Text;
+ if (nickname.Length < TB_Nickname.MaxLength)
+ TB_Nickname.Text += (sender as Label).Text;
+ }
+ }
+}
diff --git a/PKX/f2-Text.resx b/PKX/f2-Text.resx
new file mode 100644
index 000000000..603f660be
--- /dev/null
+++ b/PKX/f2-Text.resx
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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//////
+
+
+
\ No newline at end of file
diff --git a/Resources/text/shortcuts.txt b/Resources/text/shortcuts.txt
index d300aa30b..e2d696a61 100644
--- a/Resources/text/shortcuts.txt
+++ b/Resources/text/shortcuts.txt
@@ -3,6 +3,8 @@
// Main Window
+Right Click on Nickname/Nickname box to bring up the ingame-special characters.
+
Control + Click on...
Randomize IVs: Set all IVs to max.
Randomize EVs: Set all EVs to 0.