Rearrange & re-do "CanHaveMemory" value check

Closes #2581
This commit is contained in:
Kurt 2019-12-11 19:37:51 -08:00
parent dfa951d76c
commit 506e64186a

View file

@ -97,11 +97,6 @@ namespace PKHeX.Core
{
var pkm = data.pkm;
var Info = data.Info;
if (Info.Generation < 6 || pkm.IsEgg || (pkm.Format == 7 && (pkm.GG || pkm.OT_Memory != 4)))
{
VerifyOTMemoryIs(data, 0, 0, 0, 0); // empty
return;
}
switch (data.EncounterMatch)
{
@ -123,6 +118,12 @@ namespace PKHeX.Core
int memoryGen = Info.Generation;
int memory = pkm.OT_Memory;
if (!CanHaveMemory(pkm, memoryGen, memory))
{
VerifyOTMemoryIs(data, 0, 0, 0, 0); // empty
return;
}
// Bounds checking
switch (memoryGen)
{
@ -170,6 +171,23 @@ namespace PKHeX.Core
data.AddLine(VerifyCommonMemory(pkm, 0, Info.Generation));
}
private static bool CanHaveMemory(PKM pkm, int origin, int memory)
{
if (pkm.GG) // LGPE never assigns memories
return false;
if ((pkm.VC || pkm.Gen7) && memory != 4) // Generation 7 - Trade memory or nothing
return memory == 4;
if (origin < 6) // NDS/3DS
return false;
if (pkm.IsEgg) // Eggs should not have memories
return false;
return true;
}
private void VerifyHTMemory(LegalityAnalysis data)
{
var pkm = data.pkm;