From f405840ba5d22ba9ed5b441fb7000ddf3bab34a4 Mon Sep 17 00:00:00 2001 From: chenzw95 Date: Wed, 9 Mar 2016 16:29:18 +0800 Subject: [PATCH] Generate legal PID for Gen III Unown --- Misc/PKX.cs | 10 +++++++++- PKX/f1-Main.cs | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Misc/PKX.cs b/Misc/PKX.cs index 5fec5b5d8..0d9c4c7bf 100644 --- a/Misc/PKX.cs +++ b/Misc/PKX.cs @@ -520,7 +520,7 @@ internal static uint getTSV(uint TID, uint SID) { return (TID ^ SID) >> 4; } - internal static uint getRandomPID(int species, int cg, int origin, int nature) + internal static uint getRandomPID(int species, int cg, int origin, int nature, int form) { int gt = Personal[species].Gender; while (true) // Loop until we find a suitable PID @@ -535,6 +535,14 @@ internal static uint getRandomPID(int species, int cg, int origin, int nature) if (origin <= 15 && pid%25 != nature) continue; + // Gen 3 Unown: Letter/form derived from PID + if (origin <= 5 && species == 201) + { + uint pidLetter = ( (pid & 0x3000000) >> 18 | (pid & 0x30000) >> 12 | (pid & 0x300) >> 6 | (pid & 0x3) ) % 28; + if (pidLetter != form) + continue; + } + // Gen 3/4/5: Gender derived from PID uint gv = pid & 0xFF; if (gt == 255 || gt == 254 || gt == 0) // Set Gender(less) diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index 24303d994..42c2ee086 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -1604,7 +1604,7 @@ private void updateRandomEVs(object sender, EventArgs e) private void updateRandomPID(object sender, EventArgs e) { int origin = Util.getIndex(CB_GameOrigin); - uint PID = PKX.getRandomPID(Util.getIndex(CB_Species), PKX.getGender(Label_Gender.Text), origin, Util.getIndex(CB_Nature)); + uint PID = PKX.getRandomPID(Util.getIndex(CB_Species), PKX.getGender(Label_Gender.Text), origin, Util.getIndex(CB_Nature), CB_Form.SelectedIndex); TB_PID.Text = PID.ToString("X8"); getQuickFiller(dragout); if (origin >= 24)