Fix split gender ratio per species/form

Closes #647
This commit is contained in:
Kurt 2016-12-16 20:30:06 -08:00
parent 9d54c3d847
commit 2664b4cac2

View File

@ -1654,7 +1654,7 @@ private void clickGender(object sender, EventArgs e)
return;
// Get Gender Threshold
int gt = SAV.Personal[Util.getIndex(CB_Species)].Gender;
int gt = SAV.Personal.getFormeEntry(Util.getIndex(CB_Species), CB_Form.SelectedIndex).Gender;
if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless
return;
@ -2211,6 +2211,8 @@ private void updateForm(object sender, EventArgs e)
{
if (CB_Form == sender && fieldsLoaded)
pkm.AltForm = CB_Form.SelectedIndex;
updateGender();
updateStats();
// Repopulate Abilities if Species Form has different abilities
setAbilityList();
@ -2362,24 +2364,7 @@ private void updateSpecies(object sender, EventArgs e)
TB_EXP.Text = EXP.ToString();
// Check for Gender Changes
// Get Gender Threshold
int gt = SAV.Personal[pkm.Species].Gender;
int cg = Array.IndexOf(gendersymbols, Label_Gender.Text);
int Gender;
if (gt == 255) // Genderless
Gender = 2;
else if (gt == 254) // Female Only
Gender = 1;
else if (gt == 0) // Male Only
Gender = 0;
else if (cg == 2 || Util.getIndex(CB_GameOrigin) < 24)
Gender = (Util.getHEXval(TB_PID.Text) & 0xFF) <= gt ? 1 : 0;
else
Gender = cg;
Label_Gender.Text = gendersymbols[Gender];
Label_Gender.ForeColor = Gender == 2 ? Label_Species.ForeColor : (Gender == 1 ? Color.Red : Color.Blue);
updateGender();
// If species changes and no nickname, set the new name == speciesName.
if (!CHK_Nicknamed.Checked)
@ -2845,6 +2830,27 @@ private void updateLegality(LegalityAnalysis la = null, bool skipMoveRepop = fal
}
fieldsLoaded |= tmp;
}
private void updateGender()
{
int cg = Array.IndexOf(gendersymbols, Label_Gender.Text);
int gt = SAV.Personal.getFormeEntry(Util.getIndex(CB_Species), CB_Form.SelectedIndex).Gender;
int Gender;
if (gt == 255) // Genderless
Gender = 2;
else if (gt == 254) // Female Only
Gender = 1;
else if (gt == 0) // Male Only
Gender = 0;
else if (cg == 2 || Util.getIndex(CB_GameOrigin) < 24)
Gender = (Util.getHEXval(TB_PID.Text) & 0xFF) <= gt ? 1 : 0;
else
Gender = cg;
Label_Gender.Text = gendersymbols[Gender];
Label_Gender.ForeColor = Gender == 2 ? Label_Species.ForeColor : (Gender == 1 ? Color.Red : Color.Blue);
}
private void updateStats()
{
// Generate the stats.