PKHeX/PKHeX.Core/Legality/Encounters/VerifyEvolution.cs
2017-06-14 19:04:19 -07:00

31 lines
1.3 KiB
C#

using System.Linq;
using static PKHeX.Core.LegalityCheckStrings;
namespace PKHeX.Core
{
public static class VerifyEvolution
{
// Evolutions
public static CheckResult verifyEvolution(PKM pkm, LegalInfo info)
{
return isValidEvolution(pkm, info)
? new CheckResult(CheckIdentifier.Evolution)
: new CheckResult(Severity.Invalid, V86, CheckIdentifier.Evolution);
}
private static bool isValidEvolution(PKM pkm, LegalInfo info)
{
int species = pkm.Species;
if (info.EncounterMatch.Species == species)
return true;
if (info.EncounterMatch.EggEncounter && species == 350 && pkm.Format >= 5) // Prism Scale
return true;
if (!Legal.getEvolutionValid(pkm, info.EncounterMatch.Species))
return false;
// If current species evolved with a move evolution and encounter species is not current species check if the evolution by move is valid
// Only the evolution by move is checked, if there is another evolution before the evolution by move is covered in getEvolutionValid
if (Legal.SpeciesEvolutionWithMove.Contains(pkm.Species))
return Legal.getEvolutionWithMoveValid(pkm, info);
return true;
}
}
}