From 9ff3300dbf3ade0c2d3467d4c5bf02532a4290a6 Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Fri, 11 Nov 2016 02:31:50 -0800 Subject: [PATCH] Legality Checking for Hyper Training --- PKHeX/Legality/Analysis.cs | 1 + PKHeX/Legality/Checks.cs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/PKHeX/Legality/Analysis.cs b/PKHeX/Legality/Analysis.cs index dd2e11a3c..95d4d3725 100644 --- a/PKHeX/Legality/Analysis.cs +++ b/PKHeX/Legality/Analysis.cs @@ -117,6 +117,7 @@ private void updateChecks() verifyNickname(); verifyID(); verifyIVs(); + verifyHyperTraining(); verifyEVs(); verifyLevel(); verifyMedals(); diff --git a/PKHeX/Legality/Checks.cs b/PKHeX/Legality/Checks.cs index 380a1a54e..595b0c7f7 100644 --- a/PKHeX/Legality/Checks.cs +++ b/PKHeX/Legality/Checks.cs @@ -301,6 +301,25 @@ private void verifyID() else if (pkm.SID == 0) AddLine(Severity.Fishy, "SID is zero.", CheckIdentifier.Trainer); } + + private void verifyHyperTraining() + { + if (pkm.Format < 7) + return; // No Hyper Training before Gen VII + + var IVs = new[] { pkm.IV_HP, pkm.IV_ATK, pkm.IV_DEF, pkm.IV_SPA, pkm.IV_SPD, pkm.IV_SPE }; + var HTs = new[] { pkm.HT_HP, pkm.HT_ATK, pkm.HT_DEF, pkm.HT_SPA, pkm.HT_SPD, pkm.HT_SPE }; + if (IVs.All(iv => iv == 31) && HTs.Any(ht => ht)) + AddLine(Severity.Invalid, "Can't Hyper Train a pokemon with perfect IVs.", CheckIdentifier.IVs); + else + { + for (int i = 0; i < 6; i++) // Check individual IVs + { + if ((IVs[i] == 31) && HTs[i]) + AddLine(Severity.Invalid, "Can't Hyper Train a perfect IV.", CheckIdentifier.IVs); + } + } + } private CheckResult verifyEncounter() { if (pkm.GenNumber < 6)