mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-23 20:43:07 +00:00
Refactor, Check WC6 evos, Check WC6 egg
Moved the wc6 fetch logic, added event egg; added a little linq finesse
and things are clean!
Added features and cleaned with 0 net lines 👍
This commit is contained in:
parent
ea09161ffd
commit
464d686997
2 changed files with 22 additions and 22 deletions
|
@ -1,4 +1,5 @@
|
||||||
using System.Linq;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace PKHeX
|
namespace PKHeX
|
||||||
{
|
{
|
||||||
|
@ -62,37 +63,23 @@ namespace PKHeX
|
||||||
}
|
}
|
||||||
public bool[] getRelearnValidity(int[] Moves)
|
public bool[] getRelearnValidity(int[] Moves)
|
||||||
{
|
{
|
||||||
if (Moves.Length != 4)
|
|
||||||
return new bool[4];
|
|
||||||
|
|
||||||
bool[] res = {true, true, true, true};
|
bool[] res = {true, true, true, true};
|
||||||
if (!pk6.Gen6)
|
if (!pk6.Gen6)
|
||||||
goto noRelearn;
|
goto noRelearn;
|
||||||
|
|
||||||
|
if (Moves.Length != 4)
|
||||||
|
return new bool[4];
|
||||||
|
|
||||||
bool egg = Legal.EggLocations.Contains(pk6.Egg_Location) && pk6.Met_Level == 1;
|
bool egg = Legal.EggLocations.Contains(pk6.Egg_Location) && pk6.Met_Level == 1;
|
||||||
bool evnt = pk6.FatefulEncounter && pk6.Met_Location > 40000;
|
bool evnt = pk6.FatefulEncounter && pk6.Met_Location > 40000;
|
||||||
bool eventEgg = pk6.FatefulEncounter && (pk6.Egg_Location > 40000 || pk6.Egg_Location == 30002) && pk6.Met_Level == 1;
|
bool eventEgg = pk6.FatefulEncounter && (pk6.Egg_Location > 40000 || pk6.Egg_Location == 30002) && pk6.Met_Level == 1;
|
||||||
int[] relearnMoves = Legal.getValidRelearn(pk6, 0);
|
int[] relearnMoves = Legal.getValidRelearn(pk6, 0);
|
||||||
if (evnt || eventEgg)
|
if (evnt || eventEgg)
|
||||||
{
|
{
|
||||||
if (evnt)
|
// Get WC6's that match
|
||||||
{
|
IEnumerable<WC6> vwc6 = Legal.getValidWC6s(pk6);
|
||||||
// Get WC6's that match
|
if (vwc6.Any(wc6 => wc6.RelearnMoves.SequenceEqual(Moves)))
|
||||||
WC6[] vwc6 = Legal.WC6DB.Where(wc6 =>
|
return res; // all true
|
||||||
wc6.CardID == pk6.SID &&
|
|
||||||
wc6.TID == pk6.TID &&
|
|
||||||
wc6.Species == pk6.Species &&
|
|
||||||
wc6.OT == pk6.OT_Name).ToArray();
|
|
||||||
|
|
||||||
// Iterate over all
|
|
||||||
foreach (WC6 wc6 in vwc6)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 4; i++)
|
|
||||||
res[i] = wc6.RelearnMoves[i] == Moves[i];
|
|
||||||
if (res.All(b=>b)) // At least one card matches the relearn moves.
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (egg)
|
else if (egg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,19 @@ namespace PKHeX
|
||||||
r.AddRange(getLVLMoves(species, 100));
|
r.AddRange(getLVLMoves(species, 100));
|
||||||
return r.Distinct().ToArray();
|
return r.Distinct().ToArray();
|
||||||
}
|
}
|
||||||
|
internal static IEnumerable<WC6> getValidWC6s(PK6 pk6)
|
||||||
|
{
|
||||||
|
IEnumerable<DexLevel> vs = getValidPreEvolutions(pk6);
|
||||||
|
if (pk6.Egg_Location > 0) // Was Egg, can't search TID/SID/OT
|
||||||
|
return WC6DB.Where(wc6 => vs.Any(dl => dl.Species == wc6.Species));
|
||||||
|
|
||||||
|
// Not Egg
|
||||||
|
return WC6DB.Where(wc6 =>
|
||||||
|
wc6.CardID == pk6.SID &&
|
||||||
|
wc6.TID == pk6.TID &&
|
||||||
|
vs.Any(dl => dl.Species == wc6.Species) &&
|
||||||
|
wc6.OT == pk6.OT_Name);
|
||||||
|
}
|
||||||
|
|
||||||
private static int getBaseSpecies(PK6 pk6, int skipOption)
|
private static int getBaseSpecies(PK6 pk6, int skipOption)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue