Increase safety checks

Closes #446
ty @Favna !
This commit is contained in:
Kurt
2016-11-19 08:24:43 -08:00
parent 829f12dd72
commit 32b6d57491

View File

@@ -66,8 +66,8 @@ public LegalityAnalysis(PKM pk)
}
catch { Valid = false; }
getLegalityReport();
AllSuggestedMoves = getSuggestedMoves(true, true);
AllSuggestedRelearnMoves = Legal.getValidRelearn(pkm, -1).ToArray();
AllSuggestedMoves = !isOriginValid(pkm) ? new int[4] : getSuggestedMoves(true, true);
AllSuggestedRelearnMoves = !isOriginValid(pkm) ? new int[4] : Legal.getValidRelearn(pkm, -1).ToArray();
AllSuggestedMovesAndRelearn = AllSuggestedMoves.Concat(AllSuggestedRelearnMoves).ToArray();
}
@@ -82,7 +82,7 @@ private void AddLine(CheckResult chk)
private void parsePK6(PKM pk)
{
pkm = pk;
if (pkm.Species > 721)
if (!isOriginValid(pkm))
{ AddLine(Severity.Invalid, "Species does not exist in origin game.", CheckIdentifier.None); return; }
updateRelearnLegality();
@@ -92,13 +92,27 @@ private void parsePK6(PKM pk)
private void parsePK7(PKM pk)
{
pkm = pk;
if (pkm.Species > 802)
if (!isOriginValid(pkm))
{ AddLine(Severity.Invalid, "Species does not exist in origin game.", CheckIdentifier.None); return; }
updateRelearnLegality();
updateMoveLegality();
updateChecks();
}
private bool isOriginValid(PKM pk)
{
switch (pkm.GenNumber)
{
case 1: return pkm.Species <= 151;
case 2: return pkm.Species <= 251;
case 3: return pkm.Species <= 386;
case 4: return pkm.Species <= 493;
case 5: return pkm.Species <= 649;
case 6: return pkm.Species <= 721;
case 7: return pkm.Species <= 802;
default: return false;
}
}
private void updateRelearnLegality()
{
@@ -196,9 +210,7 @@ private string getVerboseLegalityReport()
public int[] getSuggestedRelearn()
{
if (RelearnBase == null)
return new int[4];
if (pkm.GenNumber < 6)
if (RelearnBase == null || pkm.GenNumber < 6 || !isOriginValid(pkm))
return new int[4];
if (!pkm.WasEgg)
@@ -216,7 +228,7 @@ public int[] getSuggestedRelearn()
}
public int[] getSuggestedMoves(bool tm, bool tutor)
{
if (pkm == null || pkm.Format < 6)
if (pkm == null || pkm.GenNumber < 6 || !isOriginValid(pkm))
return null;
return Legal.getValidMoves(pkm, Tutor: tutor, Machine: tm).Skip(1).ToArray(); // skip move 0
}