From c4e9bbcc45f60fc55d5f51461c1821c5d4891e2b Mon Sep 17 00:00:00 2001 From: Brian Fischer Date: Sat, 15 Aug 2020 00:49:01 -0400 Subject: [PATCH] Changes to suggested hyper training logic (#2968) - Changed suggested hyper training logic to not hyper train over some possibly intentional unusual speed IVs - Showdown import will not do any hyper training on pokemon encountered in gen 8, because with Hidden Power removed from the game in gen 8, all specified IVs in the showdown format are guaranteed to be deliberate for stat purposes. --- PKHeX.Core/Editing/CommonEdits.cs | 6 +++++- PKHeX.Core/PKM/Shared/IHyperTrain.cs | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/PKHeX.Core/Editing/CommonEdits.cs b/PKHeX.Core/Editing/CommonEdits.cs index 504040b56..54fafc731 100644 --- a/PKHeX.Core/Editing/CommonEdits.cs +++ b/PKHeX.Core/Editing/CommonEdits.cs @@ -202,7 +202,11 @@ public static void ApplySetDetails(this PKM pk, IBattleTemplate Set) pk.IVs = Set.IVs; pk.EVs = Set.EVs; - pk.SetSuggestedHyperTrainingData(Set.IVs); + // IVs have no side effects such as hidden power type in gen 8 + // therefore all specified IVs are deliberate and should not be HT'd over for pokemon met in gen 8 + if (!pk.Gen8) + pk.SetSuggestedHyperTrainingData(Set.IVs); + if (ShowdownSetIVMarkings) pk.SetMarkings(); diff --git a/PKHeX.Core/PKM/Shared/IHyperTrain.cs b/PKHeX.Core/PKM/Shared/IHyperTrain.cs index 63d689d22..baaca1505 100644 --- a/PKHeX.Core/PKM/Shared/IHyperTrain.cs +++ b/PKHeX.Core/PKM/Shared/IHyperTrain.cs @@ -91,10 +91,14 @@ public static void SetSuggestedHyperTrainingData(this PKM pkm, int[]? IVs = null t.HT_HP = IVs[0] != 31; t.HT_ATK = IVs[1] != 31 && IVs[1] > 2; t.HT_DEF = IVs[2] != 31; - t.HT_SPE = IVs[3] != 31 && IVs[3] > 2; t.HT_SPA = IVs[4] != 31; t.HT_SPD = IVs[5] != 31; + // sometimes unusual speed IVs are desirable for competitive reasons + // if nothing else was HT'd and the IV isn't too high, it was probably intentional + t.HT_SPE = IVs[3] != 31 && IVs[3] > 2 && + (IVs[3] > 17 || t.HT_HP || t.HT_ATK || t.HT_DEF || t.HT_SPA || t.HT_SPD); + if (pkm is PB7 pb) pb.ResetCP(); }