Improve illegal exp/level handling

Consistent between gens now
#322
This commit is contained in:
Kurt 2016-12-18 23:39:37 -08:00
parent 102f56c694
commit ba5ef5cf06
10 changed files with 24 additions and 26 deletions

View File

@ -1458,7 +1458,8 @@ public void populateFields(PKM pk, bool focus = true)
if (HaX) // Load original values from pk not pkm
{
MT_Level.Text = pk.Stat_Level.ToString();
MT_Level.Text = (pk.Stat_HPMax != 0 ? pk.Stat_Level : PKX.getLevel(pk.Species, pk.EXP)).ToString();
TB_EXP.Text = pk.EXP.ToString();
MT_Form.Text = pk.AltForm.ToString();
if (pk.Stat_HPMax != 0) // stats present
{
@ -1945,25 +1946,26 @@ private void updateEXPLevel(object sender, EventArgs e)
EXP = PKX.getEXP(100, Species);
TB_Level.Text = Level.ToString();
if (!MT_Level.Visible)
if (!HaX)
TB_EXP.Text = EXP.ToString();
else
else if (Level <= 100 && Util.ToInt32(MT_Level.Text) <= 100)
MT_Level.Text = Level.ToString();
}
else
{
// Change the XP
int Level = Util.ToInt32((MT_Level.Visible ? MT_Level : TB_Level).Text);
int Level = Util.ToInt32((HaX ? MT_Level : TB_Level).Text);
if (Level > 100) TB_Level.Text = "100";
if (Level > byte.MaxValue) MT_Level.Text = "255";
TB_EXP.Text = PKX.getEXP(Level, Util.getIndex(CB_Species)).ToString();
if (Level <= 100)
TB_EXP.Text = PKX.getEXP(Level, Util.getIndex(CB_Species)).ToString();
}
changingFields = false;
if (fieldsLoaded) // store values back
{
pkm.EXP = Util.ToUInt32(TB_EXP.Text);
pkm.Stat_Level = Util.ToInt32((MT_Level.Visible ? MT_Level : TB_Level).Text);
pkm.Stat_Level = Util.ToInt32((HaX ? MT_Level : TB_Level).Text);
}
updateStats();
updateLegality();

View File

@ -13,7 +13,7 @@ private void populateFieldsCK3()
// Do first
ck3.Stat_Level = PKX.getLevel(ck3.Species, ck3.EXP);
if (ck3.Stat_Level == 100)
if (ck3.Stat_Level == 100 && !HaX)
ck3.EXP = PKX.getEXP(ck3.Stat_Level, ck3.Species);
CB_Species.SelectedValue = ck3.Species;

View File

@ -11,13 +11,11 @@ private void populateFieldsPK1()
return;
// Do first
pk1.Stat_Level = HaX && pk1.Stat_HPMax != 0 ? pk1.Stat_Level : PKX.getLevel(pk1.Species, pk1.EXP);
if (!HaX && pk1.Stat_Level == 100)
pk1.Stat_Level = PKX.getLevel(pk1.Species, pk1.EXP);
if (pk1.Stat_Level == 100 && !HaX)
pk1.EXP = PKX.getEXP(pk1.Stat_Level, pk1.Species);
CB_Species.SelectedValue = pk1.Species;
if (HaX)
MT_Level.Text = pk1.Stat_Level.ToString();
TB_Level.Text = pk1.Stat_Level.ToString();
TB_EXP.Text = pk1.EXP.ToString();

View File

@ -12,13 +12,11 @@ private void populateFieldsPK2()
return;
// Do first
pk2.Stat_Level = HaX && pk2.Stat_HPMax != 0 ? pk2.Stat_Level : PKX.getLevel(pk2.Species, pk2.EXP);
if (!HaX && pk2.Stat_Level == 100)
pk2.Stat_Level = PKX.getLevel(pk2.Species, pk2.EXP);
if (pk2.Stat_Level == 100 && !HaX)
pk2.EXP = PKX.getEXP(pk2.Stat_Level, pk2.Species);
CB_Species.SelectedValue = pk2.Species;
if (HaX)
MT_Level.Text = pk2.Stat_Level.ToString();
TB_Level.Text = pk2.Stat_Level.ToString();
TB_EXP.Text = pk2.EXP.ToString();
CB_HeldItem.SelectedValue = pk2.HeldItem;

View File

@ -12,8 +12,8 @@ private void populateFieldsPK3()
return;
// Do first
pk3.Stat_Level = HaX && pk3.Stat_HPMax != 0 ? pk3.Stat_Level : PKX.getLevel(pk3.Species, pk3.EXP);
if (pk3.Stat_Level == 100)
pk3.Stat_Level = PKX.getLevel(pk3.Species, pk3.EXP);
if (pk3.Stat_Level == 100 && !HaX)
pk3.EXP = PKX.getEXP(pk3.Stat_Level, pk3.Species);
CB_Species.SelectedValue = pk3.Species;

View File

@ -13,8 +13,8 @@ private void populateFieldsPK4()
return;
// Do first
pk4.Stat_Level = HaX && pk4.Stat_HPMax != 0 ? pk4.Stat_Level : PKX.getLevel(pk4.Species, pk4.EXP);
if (pk4.Stat_Level == 100)
pk4.Stat_Level = PKX.getLevel(pk4.Species, pk4.EXP);
if (pk4.Stat_Level == 100 && !HaX)
pk4.EXP = PKX.getEXP(pk4.Stat_Level, pk4.Species);
CB_Species.SelectedValue = pk4.Species;

View File

@ -12,8 +12,8 @@ private void populateFieldsPK5()
return;
// Do first
pk5.Stat_Level = HaX && pk5.Stat_HPMax != 0 ? pk5.Stat_Level : PKX.getLevel(pk5.Species, pk5.EXP);
if (pk5.Stat_Level == 100)
pk5.Stat_Level = PKX.getLevel(pk5.Species, pk5.EXP);
if (pk5.Stat_Level == 100 && !HaX)
pk5.EXP = PKX.getEXP(pk5.Stat_Level, pk5.Species);
CB_Species.SelectedValue = pk5.Species;

View File

@ -12,8 +12,8 @@ private void populateFieldsPK6()
return;
// Do first
pk6.Stat_Level = HaX && pk6.Stat_HPMax != 0 ? pk6.Stat_Level : PKX.getLevel(pk6.Species, pk6.EXP);
if (pk6.Stat_Level == 100)
pk6.Stat_Level = PKX.getLevel(pk6.Species, pk6.EXP);
if (pk6.Stat_Level == 100 && !HaX)
pk6.EXP = PKX.getEXP(pk6.Stat_Level, pk6.Species);
CB_Species.SelectedValue = pk6.Species;

View File

@ -12,8 +12,8 @@ private void populateFieldsPK7()
return;
// Do first
pk7.Stat_Level = HaX && pk7.Stat_HPMax != 0 ? pk7.Stat_Level : PKX.getLevel(pk7.Species, pk7.EXP);
if (pk7.Stat_Level == 100)
pk7.Stat_Level = PKX.getLevel(pk7.Species, pk7.EXP);
if (pk7.Stat_Level == 100 && !HaX)
pk7.EXP = PKX.getEXP(pk7.Stat_Level, pk7.Species);
CB_Species.SelectedValue = pk7.Species;

View File

@ -13,7 +13,7 @@ private void populateFieldsXK3()
// Do first
xk3.Stat_Level = PKX.getLevel(xk3.Species, xk3.EXP);
if (xk3.Stat_Level == 100)
if (xk3.Stat_Level == 100 && !HaX)
xk3.EXP = PKX.getEXP(xk3.Stat_Level, xk3.Species);
CB_Species.SelectedValue = xk3.Species;