Fix shedinja logic

Can have egg moves, and locations are irrelevant
This commit is contained in:
Kaphotics 2016-03-17 19:37:06 -07:00
parent 7269c97699
commit 213578163e
2 changed files with 10 additions and 22 deletions

View file

@ -141,26 +141,6 @@ namespace PKHeX
? new LegalityCheck(Severity.Valid, $"Matches #{MatchedWC6.CardID.ToString("0000")} ({MatchedWC6.CardTitle})")
: new LegalityCheck(Severity.Invalid, "Not a valid Wonder Card gift.");
}
if (pk6.Species == 292) // Shedinja
{
if (pk6.Ball != 4)
return new LegalityCheck(Severity.Invalid, "Invalid Shedinja ball.");
if (pk6.Egg_Location != 0)
return new LegalityCheck(Severity.Invalid, "Shedinja should not have an Egg Met date/location.");
if (pk6.XY) // XY
{
return Legal.ValidMet_XY.Contains(pk6.Met_Location)
? new LegalityCheck(Severity.Valid, "Valid X/Y Shedinja.")
: new LegalityCheck(Severity.Invalid, "Invalid X/Y location for Shedinja.");
}
if (pk6.AO)
{
return Legal.ValidMet_AO.Contains(pk6.Met_Location)
? new LegalityCheck(Severity.Valid, "Valid OR/AS Shedinja.")
: new LegalityCheck(Severity.Invalid, "Invalid OR/AS location for Shedinja.");
}
return new LegalityCheck(Severity.Invalid, "Invalid Shedinja encounter.");
}
if (pk6.WasEgg)
{
// Check Hatch Locations

View file

@ -211,6 +211,8 @@ namespace PKHeX
private static int getBaseSpecies(PK6 pk6, int skipOption = 0)
{
if (pk6.Species == 292)
return 290;
DexLevel[] evos = Evolves[pk6.Species].Evos;
switch (skipOption)
{
@ -295,9 +297,15 @@ namespace PKHeX
}
private static IEnumerable<DexLevel> getValidPreEvolutions(PK6 pk6)
{
var evos = Evolves[pk6.Species].Evos;
List<DexLevel> dl = new List<DexLevel> { new DexLevel { Species = pk6.Species, Level = pk6.CurrentLevel } };
int lvl = pk6.CurrentLevel;
if (pk6.Species == 292 && pk6.Met_Level + 1 <= lvl && lvl >= 20)
return new List<DexLevel>
{
new DexLevel { Species = 292, Level = lvl },
new DexLevel { Species = 290, Level = lvl-1 }
};
var evos = Evolves[pk6.Species].Evos;
List<DexLevel> dl = new List<DexLevel> { new DexLevel { Species = pk6.Species, Level = lvl } };
foreach (DexLevel evo in evos)
{
if (lvl >= pk6.Met_Level && lvl >= evo.Level)