From b638f079dfb9dcce1e17173ecbcb78a730d133cc Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 19 Mar 2017 18:13:21 -0700 Subject: [PATCH] More recognition for gen3 legality Egg levels, ingame trade recognition Noticed that the levelup tables for gen3/4 are missing their last move (truncated to 0xFFFF), will have to fix later --- PKHeX/Legality/Checks.cs | 9 --------- PKHeX/Legality/Core.cs | 9 +++++++-- PKHeX/Legality/Structures/EncounterTrade.cs | 5 +++++ PKHeX/PKM/PK3.cs | 1 + 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index cf3ca79ac..d7b27b27a 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -2119,15 +2119,6 @@ private CheckResult[] verifyRelearn() GameVersion[] Games = {}; switch (pkm.GenNumber) { - case 3: - Games = new[] {GameVersion.RS, GameVersion.E, GameVersion.FRLG}; - break; - case 4: - Games = new[] {GameVersion.DP, GameVersion.Pt, GameVersion.HGSS}; - break; - case 5: - Games = new[] {GameVersion.BW, GameVersion.B2W2}; - break; case 6: Games = new[] {GameVersion.XY, GameVersion.ORAS}; break; diff --git a/PKHeX/Legality/Core.cs b/PKHeX/Legality/Core.cs index 6b564308c..25dce34e8 100644 --- a/PKHeX/Legality/Core.cs +++ b/PKHeX/Legality/Core.cs @@ -650,7 +650,12 @@ internal static EncounterTrade getValidIngameTrade(PKM pkm, GameVersion gameSour { if (z.Location != pkm.Met_Location) return null; - if (z.Level != lvl) + if (pkm.Format < 5) + { + if (z.Level > lvl) + return null; + } + else if (z.Level != lvl) return null; } else @@ -1859,7 +1864,7 @@ private static IEnumerable getValidMoves(PKM pkm, GameVersion Version, IRea for (int gen = pkm.GenNumber; gen <= pkm.Format; gen++) if (vs[gen].Any()) - r.AddRange(getValidMoves(pkm, Version, vs[gen], gen, LVL, Tutor, Machine, MoveReminder)); + r.AddRange(getValidMoves(pkm, Version, vs[gen], gen, LVL: LVL, Relearn: false, Tutor: Tutor, Machine: Machine, MoveReminder: MoveReminder)); return r.Distinct().ToArray(); } diff --git a/PKHeX/Legality/Structures/EncounterTrade.cs b/PKHeX/Legality/Structures/EncounterTrade.cs index f983df5fc..f79a69061 100644 --- a/PKHeX/Legality/Structures/EncounterTrade.cs +++ b/PKHeX/Legality/Structures/EncounterTrade.cs @@ -21,4 +21,9 @@ public class EncounterTrade : IEncounterable public string Name => "In-game Trade"; } + + public class EncounterTradePID : EncounterTrade + { + public uint PID; + } } diff --git a/PKHeX/PKM/PK3.cs b/PKHeX/PKM/PK3.cs index 5ecd19bd4..93f2f2cfd 100644 --- a/PKHeX/PKM/PK3.cs +++ b/PKHeX/PKM/PK3.cs @@ -162,6 +162,7 @@ public PK3(byte[] decryptedData = null, string ident = null) public bool Japanese => IsEgg || Language == 1; public override bool WasEgg => Met_Level == 0; public override bool WasEvent => Met_Location == 255; // Fateful + public override bool WasIngameTrade => Met_Location == 254; // Trade public override bool WasEventEgg => Met_Location == 253; // Gift Egg public override byte[] Encrypt()