diff --git a/MainWindow/Main.cs b/MainWindow/Main.cs index b0d344e95..63b78500c 100644 --- a/MainWindow/Main.cs +++ b/MainWindow/Main.cs @@ -1128,13 +1128,13 @@ internal static void setCountrySubRegion(ComboBox CB, string type) } private void setForms() { - if (SAV.Generation < 4) + int species = Util.getIndex(CB_Species); + if (SAV.Generation < 4 && species != 201) { Label_Form.Visible = CB_Form.Visible = CB_Form.Enabled = false; return; } - int species = Util.getIndex(CB_Species); bool hasForms = SAV.Personal[species].HasFormes || new[] { 201, 664, 665, 414 }.Contains(species); CB_Form.Enabled = CB_Form.Visible = Label_Form.Visible = hasForms; @@ -1626,7 +1626,12 @@ private void updateForm(object sender, EventArgs e) setAbilityList(); // Gender Forms - if (PKX.getGender(CB_Form.Text) < 2 && Util.getIndex(CB_Species) != 201) // don't do this for Unown + if (Util.getIndex(CB_Species) == 201) + { + if (fieldsLoaded && SAV.Generation == 3) + updateRandomPID(sender, e); // Fix AltForm + } + else if (PKX.getGender(CB_Form.Text) < 2) Label_Gender.Text = CB_Form.Text; if (changingFields) diff --git a/MainWindow/MainPK3.cs b/MainWindow/MainPK3.cs index 19b827a16..c95b41c68 100644 --- a/MainWindow/MainPK3.cs +++ b/MainWindow/MainPK3.cs @@ -90,6 +90,9 @@ private void populateFieldsPK3() TB_PP3.Text = pk3.Move3_PP.ToString(); TB_PP4.Text = pk3.Move4_PP.ToString(); + // Set Form if count is enough, else cap. + CB_Form.SelectedIndex = CB_Form.Items.Count > pk3.AltForm ? pk3.AltForm : CB_Form.Items.Count - 1; + // Load Extrabyte Value TB_ExtraByte.Text = pk3.Data[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString(); diff --git a/PKM/PK3.cs b/PKM/PK3.cs index 3d812b85d..46d11ded7 100644 --- a/PKM/PK3.cs +++ b/PKM/PK3.cs @@ -25,7 +25,7 @@ public PK3(byte[] decryptedData = null, string ident = null) // Future Attributes public override uint EncryptionConstant { get { return PID; } set { } } public override int Nature { get { return (int)(PID % 25); } set { } } - public override int AltForm { get { return -1; } set { } } + public override int AltForm { get { return Species == 201 ? PKX.getUnownForm(PID) : 0; } set { } } public override bool IsNicknamed { get { return PKX.getIsNicknamed(Species, Nickname); } set { } } public override int Gender { get { return PKX.getGender(Species, PID); } set { } } @@ -294,8 +294,7 @@ public PK4 convertToPK4() pk4.IsNicknamed = IsNicknamed; // Unown Form - if (Species == 201) - pk4.AltForm = PKX.getUnownForm(PID); + pk4.AltForm = AltForm; // Remove HM moves int[] banned = { 15, 19, 57, 70, 148, 249, 127, 291 };