diff --git a/PKHeX.Core/Legality/Moves/MoveEgg.cs b/PKHeX.Core/Legality/Moves/MoveEgg.cs index 4b4c6cd9e..35b6cfb3f 100644 --- a/PKHeX.Core/Legality/Moves/MoveEgg.cs +++ b/PKHeX.Core/Legality/Moves/MoveEgg.cs @@ -9,7 +9,7 @@ internal static class MoveEgg internal static int[] GetEggMoves(PKM pkm, int species, int formnum, GameVersion version) { int gen = pkm.Format <= 2 || pkm.VC ? 2 : pkm.GenNumber; - if (!pkm.InhabitedGeneration(gen, species) || (pkm.PersonalInfo.Gender == 255 && !FixedGenderFromBiGender.Contains(species))) + if (!pkm.InhabitedGeneration(gen, species) || (pkm.PersonalInfo.Genderless && !FixedGenderFromBiGender.Contains(species))) return Array.Empty(); if (pkm.Version == 15 || pkm.GG) diff --git a/PKHeX.Core/MysteryGifts/PGF.cs b/PKHeX.Core/MysteryGifts/PGF.cs index 11d7baf06..15e1636d6 100644 --- a/PKHeX.Core/MysteryGifts/PGF.cs +++ b/PKHeX.Core/MysteryGifts/PGF.cs @@ -273,7 +273,7 @@ private void SetPINGA(PKM pk, EncounterCriteria criteria) { var pi = PersonalTable.B2W2.GetFormeEntry(Species, Form); pk.Nature = (int)criteria.GetNature((Nature)Nature); - pk.Gender = pi.Gender == 255 ? 2 : Gender != 2 ? Gender : criteria.GetGender(-1, pi); + pk.Gender = pi.Genderless ? 2 : Gender != 2 ? Gender : criteria.GetGender(-1, pi); var av = GetAbilityIndex(criteria, pi); SetPID(pk, av); pk.RefreshAbility(av); diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs index cf6c3b1a7..fea3f05da 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs @@ -128,15 +128,15 @@ private void GetEntry() GB_Language.Enabled = true; } - int gt = SAV.Personal[pk].Gender; + var pi = SAV.Personal[pk]; - CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only - CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(gt == 0 || (gt == 255)); // Not Male-Only and Not Genderless + CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = !pi.OnlyFemale; + CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(pi.OnlyMale || pi.Genderless); CLB_FormsSeen.Items.Clear(); CLB_FormDisplayed.Items.Clear(); - int fc = SAV.Personal[species].FormeCount; + int fc = pi.FormeCount; int f = SAV is SAV5B2W2 ? DexFormUtil.GetDexFormIndexB2W2(species, fc) : DexFormUtil.GetDexFormIndexBW(species, fc); if (f < 0) return; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs index 05281fd03..edd472fc2 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_HallOfFame.cs @@ -356,27 +356,25 @@ private void UpdateGender(object sender, EventArgs e) { // Get Gender Threshold int species = WinFormsUtil.GetIndex(CB_Species); - int gt = SAV.Personal[species].Gender; + var pi = SAV.Personal[species]; - if (gt == 255) - Label_Gender.Text = gendersymbols[2]; - else if (gt == 254) - Label_Gender.Text = gendersymbols[1]; - else if (gt == 0) - Label_Gender.Text = gendersymbols[0]; - - if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless abort - return; - - if (gt < 256) // If not a single gender(less) species: + var fg = pi.FixedGender; + if (fg == -1) // dual gender { - Label_Gender.Text = PKX.GetGenderFromString(Label_Gender.Text) == 0 ? gendersymbols[1] : gendersymbols[0]; - - if (PKX.GetGenderFromString(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0]) - CB_Form.SelectedIndex = 1; - else if (PKX.GetGenderFromString(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1]) - CB_Form.SelectedIndex = 0; + fg = PKX.GetGenderFromString(Label_Gender.Text); + fg = (fg ^ 1) & 1; + Label_Gender.Text = Main.GenderSymbols[fg]; } + else + { + Label_Gender.Text = Main.GenderSymbols[fg]; + return; + } + + if (PKX.GetGenderFromString(CB_Form.Text) == 0 && Label_Gender.Text != gendersymbols[0]) + CB_Form.SelectedIndex = 1; + else if (PKX.GetGenderFromString(CB_Form.Text) == 1 && Label_Gender.Text != gendersymbols[1]) + CB_Form.SelectedIndex = 0; if (species == (int)Species.Pyroar) CB_Form.SelectedIndex = PKX.GetGenderFromString(Label_Gender.Text); diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs index 79c244103..d972f22c3 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs @@ -122,17 +122,17 @@ private void GetEntry() for (int i = 0; i < CL.Length; i++) CL[i].Checked = Zukan.GetLanguageFlag(species - 1, i); - int gt = SAV.Personal[pk].Gender; + var pi = SAV.Personal[pk]; - CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only - CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = gt != 0 && gt != 255; // Not Male-Only and Not Genderless + CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = !pi.OnlyFemale; + CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(pi.OnlyMale || pi.Genderless); MT_Count.Text = Zukan.GetEncounterCount(species - 1).ToString(); CLB_FormsSeen.Items.Clear(); CLB_FormDisplayed.Items.Clear(); - int fc = SAV.Personal[species].FormeCount; + int fc = pi.FormeCount; int f = DexFormUtil.GetDexFormIndexORAS(species, fc); if (f < 0) return; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs index 8d6a8416b..ecb7fcc98 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs @@ -132,15 +132,15 @@ private void GetEntry() CHK_F1.Enabled = CHK_F1.Checked = false; } - int gt = SAV.Personal[pk].Gender; + var pi = SAV.Personal[pk]; - CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = gt != 254; // Not Female-Only - CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(gt == 0 || (gt == 255)); // Not Male-Only and Not Genderless + CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = !pi.OnlyFemale; + CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = !(pi.OnlyMale || pi.Genderless); CLB_FormsSeen.Items.Clear(); CLB_FormDisplayed.Items.Clear(); - int fc = SAV.Personal[species].FormeCount; + int fc = pi.FormeCount; int f = DexFormUtil.GetDexFormIndexXY(species, fc); if (f < 0) return; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs index 7212079a5..57779fc68 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_SecretBase.cs @@ -482,14 +482,15 @@ private void UpdateForm(object sender, EventArgs e) private void Label_Gender_Click(object sender, EventArgs e) { - // Get Gender Threshold - int gt = SAV.Personal[WinFormsUtil.GetIndex(CB_Species)].Gender; - - if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless - return; - - if (gt < 256) // If not a single gender(less) species: - Label_Gender.Text = Main.GenderSymbols[PKX.GetGenderFromString(Label_Gender.Text) ^ 1]; + var species = WinFormsUtil.GetIndex(CB_Species); + var pi = SAV.Personal[species]; + var fg = pi.FixedGender; + if (fg == -1) // dual gender + { + fg = PKX.GetGenderFromString(Label_Gender.Text); + fg = (fg ^ 1) & 1; + } + Label_Gender.Text = Main.GenderSymbols[fg]; } private void SetGenderLabel()