From 69dbde1bb4ecb539e2a280a98894984521b92143 Mon Sep 17 00:00:00 2001 From: Kurt Date: Fri, 19 Jun 2020 21:24:58 -0500 Subject: [PATCH] Check battleversion state for past-gen master rank ribbon --- PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs b/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs index ba9950e32..e139b1fb5 100644 --- a/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs @@ -178,7 +178,7 @@ private static IEnumerable GetInvalidRibbons(PKM pkm, int gen) if (pkm is IRibbonSetCommon8 s8) { bool inhabited8 = gen <= 8; - var iterate = inhabited8 ? GetInvalidRibbons8Any(pkm, s8) : GetInvalidRibbonsNone(s8.RibbonBits(), s8.RibbonNames()); + var iterate = inhabited8 ? GetInvalidRibbons8Any(pkm, s8, gen) : GetInvalidRibbonsNone(s8.RibbonBits(), s8.RibbonNames()); foreach (var z in iterate) yield return z; } @@ -363,7 +363,7 @@ private static IEnumerable GetInvalidRibbons7Any(PKM pkm, IRibbonS } } - private static IEnumerable GetInvalidRibbons8Any(PKM pkm, IRibbonSetCommon8 s8) + private static IEnumerable GetInvalidRibbons8Any(PKM pkm, IRibbonSetCommon8 s8, int gen) { if (!pkm.InhabitedGeneration(8) || !((PersonalInfoSWSH)PersonalTable.SWSH[pkm.Species]).IsPresentInGame) { @@ -382,7 +382,8 @@ private static IEnumerable GetInvalidRibbons8Any(PKM pkm, IRibbonS yield return new RibbonResult(nameof(s8.RibbonChampionGalar)); // Legends cannot compete in Ranked, thus cannot reach Master Rank and obtain the ribbon. - if (s8.RibbonMasterRank && Legal.Legends.Contains(pkm.Species)) + // Past gen Pokemon can get the ribbon only if they've been reset. + if (s8.RibbonMasterRank && (Legal.Legends.Contains(pkm.Species) || gen != 8 && pkm is IBattleVersion v && v.BattleVersion == 0)) yield return new RibbonResult(nameof(s8.RibbonMasterRank)); } }