From d986b3bb866385f69cf43125f893703a26f95fc7 Mon Sep 17 00:00:00 2001 From: Kaphotics Date: Thu, 17 Mar 2016 17:25:21 -0700 Subject: [PATCH] Add ingame trade checks There's memories associated, IVs, EVs, whatever; best to check them in the individual legality check methods. --- Legality/Analysis.cs | 3 ++- Legality/Checks.cs | 9 +++++++-- Legality/Core.cs | 17 +++++++++++++++-- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Legality/Analysis.cs b/Legality/Analysis.cs index bbc7bf0ae..a802a2e7e 100644 --- a/Legality/Analysis.cs +++ b/Legality/Analysis.cs @@ -7,6 +7,7 @@ public partial class LegalityAnalysis { private readonly PK6 pk6; private WC6 MatchedWC6; + private object EncounterMatch; private LegalityCheck ECPID, Nickname, IDs, IVs, EVs, Encounter; public bool Valid = true; @@ -39,12 +40,12 @@ public void updateMoveLegality() private void updateChecks() { + Encounter = verifyEncounter(); ECPID = verifyECPID(); Nickname = verifyNickname(); IDs = verifyID(); IVs = verifyIVs(); EVs = verifyEVs(); - Encounter = verifyEncounter(); SecondaryChecked = true; } private string getLegalityReport() diff --git a/Legality/Checks.cs b/Legality/Checks.cs index 0ba01c222..5161fc57b 100644 --- a/Legality/Checks.cs +++ b/Legality/Checks.cs @@ -212,8 +212,7 @@ private LegalityCheck verifyEncounter() return new LegalityCheck(Severity.Valid, "Valid friend safari encounter."); } - - // Not Implemented: In-Game Trades + if (Legal.getDexNavValid(pk6)) return new LegalityCheck(Severity.Valid, "Valid (DexNav) encounter at location."); if (Legal.getWildEncounterValid(pk6)) @@ -222,6 +221,12 @@ private LegalityCheck verifyEncounter() ? new LegalityCheck(Severity.Valid, "Valid encounter at location.") : new LegalityCheck(Severity.Invalid, "Hidden ability on valid encounter."); } + EncounterTrade t = Legal.getIngameTrade(pk6); + if (t != null) + { + EncounterMatch = t; // Check in individual methods + return new LegalityCheck(Severity.Valid, "Valid ingame trade."); + } return new LegalityCheck(Severity.Invalid, "Not a valid encounter."); } private LegalityCheck[] verifyMoves() diff --git a/Legality/Core.cs b/Legality/Core.cs index f43abd018..88375c512 100644 --- a/Legality/Core.cs +++ b/Legality/Core.cs @@ -494,11 +494,24 @@ private static EncounterStatic[] getSpecial(GameVersion Game) #region Static Encounter/Gift Tables private static readonly EncounterTrade[] TradeGift_XY = { - new EncounterTrade { Species = 296, Ability = 2, Gender = 0, TID = 30724, Nature = Nature.Brave, }, + new EncounterTrade { Species = 129, Level = 5, Ability = 1, Gender = 0, TID = 44285, Nature = Nature.Adamant, }, // Magikarp + new EncounterTrade { Species = 133, Level = 5, Ability = 1, Gender = 1, TID = 29294, Nature = Nature.Docile, }, // Eevee + + new EncounterTrade { Species = 83, Level = 10, Ability = 1, Gender = 0, TID = 00185, Nature = Nature.Jolly, IVs = new[] {-1, -1, -1, 31, -1, -1}, }, // Farfetch'd + new EncounterTrade { Species = 208, Level = 20, Ability = 1, Gender = 1, TID = 19250, Nature = Nature.Impish, IVs = new[] {-1, -1, 31, -1, -1, -1}, }, // Steelix + new EncounterTrade { Species = 625, Level = 50, Ability = 1, Gender = 0, TID = 03447, Nature = Nature.Adamant, IVs = new[] {-1, 31, -1, -1, -1, -1}, }, // Bisharp + + new EncounterTrade { Species = 656, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Jolly, IVs = new[] {20, 20, 20, 31, 20, 20}, }, // Froakie + new EncounterTrade { Species = 650, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Adamant, IVs = new[] {20, 31, 20, 20, 20, 20}, }, // Chespin + new EncounterTrade { Species = 653, Level = 5, Ability = 1, Gender = 0, TID = 00037, Nature = Nature.Modest, IVs = new[] {20, 20, 20, 20, 31, 20}, }, // Fennekin + + new EncounterTrade { Species = 280, Level = 5, Ability = 1, Gender = 1, TID = 37110, Nature = Nature.Modest, IVs = new[] {20, 20, 20, 31, 31, 20}, }, // Ralts }; private static readonly EncounterTrade[] TradeGift_AO = { - new EncounterTrade { Species = 296, Ability = 2, Gender = 0, TID = 30724, Nature = Nature.Brave, }, + new EncounterTrade { Species = 296, Level = 9, Ability = 2, Gender = 0, TID = 30724, Nature = Nature.Brave, IVs = new[] {-1, 31, -1, -1, -1, -1}, }, // Makuhita + new EncounterTrade { Species = 300, Level = 25, Ability = 1, Gender = 1, TID = 03239, Nature = Nature.Naughty, IVs = new[] {-1, -1, -1, 31, -1, -1}, }, // Skitty + new EncounterTrade { Species = 222, Level = 50, Ability = 4, Gender = 1, TID = 00325, Nature = Nature.Calm, IVs = new[] {31, -1, -1, -1, -1, 31}, }, // Corsola }; #endregion }