diff --git a/PKHeX.Core/Editing/Applicators/GenderApplicator.cs b/PKHeX.Core/Editing/Applicators/GenderApplicator.cs
index 59fa5e13d..143e10178 100644
--- a/PKHeX.Core/Editing/Applicators/GenderApplicator.cs
+++ b/PKHeX.Core/Editing/Applicators/GenderApplicator.cs
@@ -49,9 +49,9 @@ public static int GetSaneGender(this PKM pk)
int gt = pk.PersonalInfo.Gender;
switch (gt)
{
- case 255: return 2; // Genderless
- case 254: return 1; // Female-Only
- case 0: return 0; // Male-Only
+ case PersonalInfo.RatioMagicGenderless: return 2;
+ case PersonalInfo.RatioMagicFemale: return 1;
+ case PersonalInfo.RatioMagicMale: return 0;
}
if (!pk.IsGenderValid())
return PKX.GetGenderFromPIDAndRatio(pk.PID, gt);
diff --git a/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs b/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs
index 57e1d9f6e..3bdc04746 100644
--- a/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs
+++ b/PKHeX.Core/Legality/RNG/Frame/FrameGenerator.cs
@@ -88,7 +88,9 @@ public FrameGenerator(PKM pk)
/// Returns the maximum or minimum gender value that corresponds to the input gender ratio.
private static int GetGenderMinMax(int gender, int ratio, bool max) => ratio switch
{
- 0 or >254 => max ? 255 : 0,
+ PersonalInfo.RatioMagicMale => max ? 255 : 0,
+ PersonalInfo.RatioMagicFemale => max ? 255 : 0,
+ PersonalInfo.RatioMagicGenderless => max ? 255 : 0,
_ => gender switch
{
0 => max ? 255 : ratio, // male
diff --git a/PKHeX.Core/Legality/RNG/MethodFinder.cs b/PKHeX.Core/Legality/RNG/MethodFinder.cs
index 70359dffe..f0caeaf67 100644
--- a/PKHeX.Core/Legality/RNG/MethodFinder.cs
+++ b/PKHeX.Core/Legality/RNG/MethodFinder.cs
@@ -366,7 +366,7 @@ private static bool GetCuteCharmMatch(PKM pk, uint pid, out PIDIV pidiv)
case 2: break; // can't cute charm a genderless pkm
case 0: // male
var gr = getRatio();
- if (254 <= gr) // no modification for PID
+ if (gr >= PersonalInfo.RatioMagicFemale) // no modification for PID
break;
var rate = 25*((gr / 25) + 1); // buffered
var nature = pid % 25;
@@ -378,7 +378,7 @@ private static bool GetCuteCharmMatch(PKM pk, uint pid, out PIDIV pidiv)
case 1: // female
if (pid >= 25)
break; // nope, this isn't a valid nature
- if (254 <= getRatio()) // no modification for PID
+ if (getRatio() >= PersonalInfo.RatioMagicFemale) // no modification for PID
break;
pidiv = PIDIV.CuteCharm;
diff --git a/PKHeX.Core/Legality/RNG/RaidRNG.cs b/PKHeX.Core/Legality/RNG/RaidRNG.cs
index 2fc89aef4..430f19da7 100644
--- a/PKHeX.Core/Legality/RNG/RaidRNG.cs
+++ b/PKHeX.Core/Legality/RNG/RaidRNG.cs
@@ -112,15 +112,15 @@ private static bool Verify(PKM pk, ulong seed, int[] ivs, int iv_count, int abil
switch (gender_ratio)
{
- case 255 when pk.Gender != 2:
+ case PersonalInfo.RatioMagicGenderless when pk.Gender != 2:
if (pk.Gender != 2)
return false;
break;
- case 254 when pk.Gender != 1:
+ case PersonalInfo.RatioMagicFemale when pk.Gender != 1:
if (pk.Gender != 1)
return false;
break;
- case 000:
+ case PersonalInfo.RatioMagicMale:
if (pk.Gender != 0)
return false;
break;
@@ -254,9 +254,9 @@ private static bool ApplyDetailsTo(PKM pk, ulong seed, int[] ivs, int iv_count,
pk.Gender = gender_ratio switch
{
- 255 => 2,
- 254 => 1,
- 000 => 0,
+ PersonalInfo.RatioMagicGenderless => 2,
+ PersonalInfo.RatioMagicFemale => 1,
+ PersonalInfo.RatioMagicMale => 0,
_ => (int) rng.NextInt(252) + 1 < gender_ratio ? 1 : 0
};
diff --git a/PKHeX.Core/PKM/PKM.cs b/PKHeX.Core/PKM/PKM.cs
index a69a4be4b..24134c2ec 100644
--- a/PKHeX.Core/PKM/PKM.cs
+++ b/PKHeX.Core/PKM/PKM.cs
@@ -570,11 +570,11 @@ public virtual bool IsGenderValid()
{
int gender = Gender;
int gv = PersonalInfo.Gender;
- if (gv == 255)
+ if (gv == PersonalInfo.RatioMagicGenderless)
return gender == 2;
- if (gv == 254)
+ if (gv == PersonalInfo.RatioMagicFemale)
return gender == 1;
- if (gv == 0)
+ if (gv == PersonalInfo.RatioMagicMale)
return gender == 0;
int gen = Generation;
diff --git a/PKHeX.Core/PKM/Shared/GBPKM.cs b/PKHeX.Core/PKM/Shared/GBPKM.cs
index 1134679fd..e847ee88c 100644
--- a/PKHeX.Core/PKM/Shared/GBPKM.cs
+++ b/PKHeX.Core/PKM/Shared/GBPKM.cs
@@ -97,9 +97,9 @@ public sealed override int Gender
int gv = PersonalInfo.Gender;
return gv switch
{
- 255 => 2,
- 254 => 1,
- 0 => 0,
+ PersonalInfo.RatioMagicGenderless => 2,
+ PersonalInfo.RatioMagicFemale => 1,
+ PersonalInfo.RatioMagicMale => 0,
_ => IV_ATK > gv >> 4 ? 0 : 1
};
}
diff --git a/PKHeX.Core/PKM/Util/PKX.cs b/PKHeX.Core/PKM/Util/PKX.cs
index 597ed718d..7734edf82 100644
--- a/PKHeX.Core/PKM/Util/PKX.cs
+++ b/PKHeX.Core/PKM/Util/PKX.cs
@@ -129,7 +129,7 @@ public static uint GetRandomPID(Random rnd, int species, int gender, int origin,
uint abilBitVal = g34 ? oldPID & 0x0000_0001 : oldPID & 0x0001_0000;
bool g3unown = origin <= 5 && species == (int)Species.Unown;
- bool singleGender = gt is 0 or 254 or 255; // single gender, skip gender check
+ bool singleGender = PersonalInfo.IsSingleGender(gt); // single gender, skip gender check
while (true) // Loop until we find a suitable PID
{
uint pid = Util.Rand32(rnd);
@@ -192,9 +192,9 @@ public static int GetGenderFromPID(int species, uint pid)
public static int GetGenderFromPIDAndRatio(uint pid, int gr) => gr switch
{
- 255 => 2,
- 254 => 1,
- 0 => 0,
+ PersonalInfo.RatioMagicGenderless => 2,
+ PersonalInfo.RatioMagicFemale => 1,
+ PersonalInfo.RatioMagicMale => 0,
_ => (pid & 0xFF) < gr ? 1 : 0
};
diff --git a/PKHeX.Core/PersonalInfo/PersonalInfo.cs b/PKHeX.Core/PersonalInfo/PersonalInfo.cs
index ba0ca20ab..02190dcd9 100644
--- a/PKHeX.Core/PersonalInfo/PersonalInfo.cs
+++ b/PKHeX.Core/PersonalInfo/PersonalInfo.cs
@@ -296,6 +296,12 @@ public int FixedGender
}
}
+ public const int RatioMagicGenderless = 255;
+ public const int RatioMagicFemale = 254;
+ public const int RatioMagicMale = 0;
+
+ public static bool IsSingleGender(int gt) => (uint)(gt - 1) >= 253;
+
///
/// Indicates that the entry has two genders.
///
@@ -304,17 +310,17 @@ public int FixedGender
///
/// Indicates that the entry is exclusively Genderless.
///
- public bool Genderless => Gender == 255;
+ public bool Genderless => Gender == RatioMagicGenderless;
///
/// Indicates that the entry is exclusively Female gendered.
///
- public bool OnlyFemale => Gender == 254;
+ public bool OnlyFemale => Gender == RatioMagicFemale;
///
/// Indicates that the entry is exclusively Male gendered.
///
- public bool OnlyMale => Gender == 0;
+ public bool OnlyMale => Gender == RatioMagicMale;
///
/// Indicates if the entry has Formes or not.
diff --git a/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs b/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs
index 45ef0d707..d3623c650 100644
--- a/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs
+++ b/PKHeX.Core/Saves/Substructures/PokeDex/Zukan7.cs
@@ -242,7 +242,7 @@ public int GetBaseSpeciesGenderValue(int index)
// meowstic special handling
const int meow = 678;
if (index == meow - 1 || (index >= SAV.MaxSpeciesID && FormBaseSpecies[index - SAV.MaxSpeciesID] == meow))
- return index < SAV.MaxSpeciesID ? 0 : 254; // M : F
+ return index < SAV.MaxSpeciesID ? PersonalInfo.RatioMagicMale : PersonalInfo.RatioMagicFemale; // M : F
if (index < SAV.MaxSpeciesID)
return SAV.Personal[index + 1].Gender;
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs
index 09306d691..693124a19 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen4/SAV_Pokedex4.cs
@@ -139,13 +139,13 @@ private void LoadGenders(bool seen)
var gr = pi.Gender;
switch (gr)
{
- case 255: // Genderless
+ case PersonalInfo.RatioMagicGenderless:
first.Items.Add(GENDERLESS);
break;
- case 0:
+ case PersonalInfo.RatioMagicMale:
first.Items.Add(MALE);
break;
- case 254:
+ case PersonalInfo.RatioMagicFemale:
first.Items.Add(FEMALE);
break;
default:
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs
index b0ae481e8..34c92ecd7 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Pokedex5.cs
@@ -223,8 +223,10 @@ private void B_GiveAll_Click(object sender, EventArgs e)
int index = LB_Species.SelectedIndex+1;
int gt = SAV.Personal[index].Gender;
- CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control;
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control;
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control;
if (ModifierKeys == Keys.Control)
{
@@ -233,7 +235,7 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
{
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
@@ -262,7 +264,7 @@ private void ModifyAll(object sender, EventArgs e)
{
// if seen ensure at least one Displayed
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
else
{
@@ -297,26 +299,28 @@ private void ModifyAll(object sender, EventArgs e)
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen
{
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one
}
}
if (mnuCaughtNone != sender)
{
if (mnuComplete == sender)
{
- CHK_P2.Checked = CHK_P4.Checked = gt != 254; // not female only
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255); // not male only or genderless
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale;
}
else
{
// ensure at least one SEEN
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked))
- (gt != 254 ? CHK_P2 : CHK_P3).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true;
}
// ensure at least one Displayed
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
}
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs
index c6b9f8043..51a89ee8b 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexORAS.cs
@@ -218,8 +218,10 @@ private void B_GiveAll_Click(object sender, EventArgs e)
int index = LB_Species.SelectedIndex+1;
int gt = SAV.Personal[index].Gender;
- CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control;
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control;
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control;
if (ModifierKeys == Keys.Control)
{
@@ -228,7 +230,7 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
{
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
for (int i = 0; i < CLB_FormsSeen.Items.Count; i++)
@@ -269,7 +271,6 @@ private void ModifyAll(object sender, EventArgs e)
{
for (int i = 0; i < CB_Species.Items.Count; i++)
{
- int gt = SAV.Personal[i + 1].Gender;
LB_Species.SelectedIndex = i;
foreach (CheckBox t in new[] { CHK_P2, CHK_P3, CHK_P4, CHK_P5 })
t.Checked = mnuSeenNone != sender && t.Enabled;
@@ -277,8 +278,9 @@ private void ModifyAll(object sender, EventArgs e)
if (mnuSeenNone != sender)
{
// if seen ensure at least one Displayed
+ int gt = SAV.Personal[i + 1].Gender;
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
else
{
@@ -310,26 +312,28 @@ private void ModifyAll(object sender, EventArgs e)
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen
{
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one
}
}
if (mnuCaughtNone != sender)
{
if (mnuComplete == sender)
{
- CHK_P2.Checked = CHK_P4.Checked = gt != 254; // not female only
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255); // not male only or genderless
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale;
}
else
{
// ensure at least one SEEN
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked))
- (gt != 254 ? CHK_P2 : CHK_P3).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true;
}
// ensure at least one Displayed
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
}
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs
index 792ed18e3..5ec8e4092 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen6/SAV_PokedexXY.cs
@@ -231,8 +231,10 @@ private void B_GiveAll_Click(object sender, EventArgs e)
int index = LB_Species.SelectedIndex+1;
int gt = SAV.Personal[index].Gender;
- CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control;
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control;
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control;
if (ModifierKeys == Keys.Control)
{
@@ -241,7 +243,7 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
{
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
@@ -270,7 +272,7 @@ private void ModifyAll(object sender, EventArgs e)
{
// if seen ensure at least one Displayed
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
else
{
@@ -302,26 +304,28 @@ private void ModifyAll(object sender, EventArgs e)
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen
{
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one
}
}
if (mnuCaughtNone != sender)
{
if (mnuComplete == sender)
{
- CHK_P2.Checked = CHK_P4.Checked = gt != 254; // not female only
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255); // not male only or genderless
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale;
}
else
{
// ensure at least one SEEN
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked))
- (gt != 254 ? CHK_P2 : CHK_P3).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true;
}
// ensure at least one Displayed
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
}
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs
index 178098a9c..db44f06d5 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexGG.cs
@@ -216,8 +216,10 @@ private void GetEntry()
int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex);
- 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 is not (0 or 255); // Not Male-Only and Not Genderless
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = canBeMale; // Not Female-Only
+ CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = canBeFemale; // Not Male-Only and Not Genderless
for (int i = 0; i < 4; i++)
CP[i + 1].Checked = Dex.GetSeen(currentSpecies, i);
@@ -340,8 +342,10 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex);
- CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control;
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control;
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control;
if (ModifierKeys == Keys.Control)
{
@@ -350,7 +354,7 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
{
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
@@ -465,7 +469,7 @@ private void SetCaught(object sender, int gt, int lang, bool isForm)
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen
{
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one
}
return;
@@ -481,14 +485,14 @@ private void SetCaught(object sender, int gt, int lang, bool isForm)
{
// ensure at least one SEEN
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked))
- (gt != 254 ? CHK_P2 : CHK_P3).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true;
}
// ensure at least one Displayed except for formes
if (isForm)
return;
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled;
}
private void SetSeen(object sender, int gt, bool isForm)
@@ -502,7 +506,7 @@ private void SetSeen(object sender, int gt, bool isForm)
if (isForm)
return;
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
else
{
diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs
index bd66094f4..74d133520 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/Gen7/SAV_PokedexSM.cs
@@ -205,8 +205,10 @@ private void GetEntry()
int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex);
- 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 is not (0 or 255); // Not Male-Only and Not Genderless
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Enabled = CHK_P4.Enabled = CHK_P6.Enabled = CHK_P8.Enabled = canBeMale; // Not Female-Only
+ CHK_P3.Enabled = CHK_P5.Enabled = CHK_P7.Enabled = CHK_P9.Enabled = canBeFemale; // Not Male-Only and Not Genderless
for (int i = 0; i < 4; i++)
CP[i + 1].Checked = Dex.GetSeen(currentSpecies, i);
@@ -276,8 +278,10 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
int gt = Dex.GetBaseSpeciesGenderValue(LB_Species.SelectedIndex);
- CHK_P2.Checked = CHK_P4.Checked = gt != 254 && ModifierKeys != Keys.Control;
- CHK_P3.Checked = CHK_P5.Checked = gt is not (0 or 255) && ModifierKeys != Keys.Control;
+ bool canBeMale = gt != PersonalInfo.RatioMagicFemale;
+ bool canBeFemale = gt is not (PersonalInfo.RatioMagicMale or PersonalInfo.RatioMagicGenderless);
+ CHK_P2.Checked = CHK_P4.Checked = canBeMale && ModifierKeys != Keys.Control;
+ CHK_P3.Checked = CHK_P5.Checked = canBeFemale && ModifierKeys != Keys.Control;
if (ModifierKeys == Keys.Control)
{
@@ -286,7 +290,7 @@ private void B_GiveAll_Click(object sender, EventArgs e)
}
else if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
{
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
}
@@ -373,7 +377,7 @@ private void SetCaught(object sender, int gt, int lang, bool isForm)
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked)) // if seen
{
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked)) // not displayed
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true; // check one
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true; // check one
}
return;
@@ -389,14 +393,14 @@ private void SetCaught(object sender, int gt, int lang, bool isForm)
{
// ensure at least one SEEN
if (!(CHK_P2.Checked || CHK_P3.Checked || CHK_P4.Checked || CHK_P5.Checked))
- (gt != 254 ? CHK_P2 : CHK_P3).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P2 : CHK_P3).Checked = true;
}
// ensure at least one Displayed except for formes
if (isForm)
return;
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = CHK_P1.Enabled;
}
private void SetSeen(object sender, int gt, bool isForm)
@@ -410,7 +414,7 @@ private void SetSeen(object sender, int gt, bool isForm)
if (isForm)
return;
if (!(CHK_P6.Checked || CHK_P7.Checked || CHK_P8.Checked || CHK_P9.Checked))
- (gt != 254 ? CHK_P6 : CHK_P7).Checked = true;
+ (gt != PersonalInfo.RatioMagicFemale ? CHK_P6 : CHK_P7).Checked = true;
}
else
{