From 87e45b14c85d02dfb53fce795ccbd9ba6ffe15d6 Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 3 Aug 2022 20:27:13 -0700 Subject: [PATCH] Disallow BD/SP Tower Master ribbon w/mythicals Thanks TFSthegreat ! https://projectpokemon.org/home/forums/topic/57375-pkhex-new-update-legality-errors-contribution-page/?do=findComment&comment=278427 --- .../Verifiers/Ribbons/RibbonVerifier.cs | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs b/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs index 37e62e97c..1f1d8f0d8 100644 --- a/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs @@ -429,16 +429,11 @@ private static IEnumerable GetInvalidRibbons7Any(PKM pk, IRibbonSe private static IEnumerable GetInvalidRibbons8Any(PKM pk, IRibbonSetCommon8 s8, IEncounterTemplate enc, EvolutionHistory evos) { - bool swsh = evos.HasVisitedSWSH; - bool bdsp = evos.HasVisitedBDSP; - bool pla = evos.HasVisitedPLA; - - if (!swsh && !bdsp) + if (!CanObtainTowerMaster(evos) && s8.RibbonTowerMaster) { - if (s8.RibbonTowerMaster) - yield return new RibbonResult(nameof(s8.RibbonTowerMaster)); + yield return new RibbonResult(nameof(s8.RibbonTowerMaster)); } - if (!swsh) + if (!evos.HasVisitedSWSH) { if (s8.RibbonChampionGalar) yield return new RibbonResult(nameof(s8.RibbonChampionGalar)); @@ -473,18 +468,29 @@ private static IEnumerable GetInvalidRibbons8Any(PKM pk, IRibbonSe } } - if (s8.RibbonTwinklingStar && (!bdsp || pk is IRibbonSetCommon6 {RibbonContestStar:false})) + if (s8.RibbonTwinklingStar && (!evos.HasVisitedBDSP || pk is IRibbonSetCommon6 {RibbonContestStar:false})) { yield return new RibbonResult(nameof(s8.RibbonTwinklingStar)); } // received when capturing photos with Pokémon in the Photography Studio - if (s8.RibbonPioneer && !pla) + if (!evos.HasVisitedPLA && s8.RibbonPioneer) { yield return new RibbonResult(nameof(s8.RibbonPioneer)); } } + private static bool CanObtainTowerMaster(EvolutionHistory evos) + { + if (evos.HasVisitedSWSH) + return true; // Anything in SW/SH can be used in battle tower. + + if (!evos.HasVisitedBDSP) + return false; + // Mythicals cannot be used in BD/SP's Battle Tower + return !Legal.Mythicals.Contains(evos.Gen8b[0].Species); + } + private static bool CanParticipateInRankedSWSH(PKM pk, IEncounterTemplate enc, EvolutionHistory evos) { bool exist = enc.Generation switch