From 5bb51b07aceaba3a68605092499e5a8f4d80ed06 Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 20 Jan 2020 23:09:28 -0800 Subject: [PATCH] Check Footprint Ribbon for gen8 gen7 used same as gen6, we just need to restrict gen!=8 add placeholder LGPE origin check; that'll likely throw a wrench into things when HOME happens (next month?). --- .../Verifiers/Ribbons/RibbonVerifier.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs b/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs index c9a9ebff4..3e617acd3 100644 --- a/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/Ribbons/RibbonVerifier.cs @@ -18,7 +18,7 @@ public override void Verify(LegalityAnalysis data) var pkm = data.pkm; var Info = data.Info; // Check Unobtainable Ribbons - var encounterContent = (EncounterMatch as MysteryGift)?.Content ?? EncounterMatch; + var encounterContent = EncounterMatch is MysteryGift mg ? mg.Content : EncounterMatch; if (pkm.IsEgg) { if (GetIncorrectRibbonsEgg(pkm, encounterContent)) @@ -197,7 +197,7 @@ private static IEnumerable GetInvalidRibbons4Any(PKM pkm, IRibbonS { if (s4.RibbonRecord) yield return new RibbonResult(nameof(s4.RibbonRecord)); // Unobtainable - if (s4.RibbonFootprint && ((pkm.Format < 6 && gen == 5) || (gen >= 5 && pkm.CurrentLevel - pkm.Met_Level < 30))) + if (s4.RibbonFootprint && !CanHaveFootprintRibbon(pkm, gen)) yield return new RibbonResult(nameof(s4.RibbonFootprint)); bool gen34 = gen == 3 || gen == 4; @@ -218,6 +218,19 @@ private static IEnumerable GetInvalidRibbons4Any(PKM pkm, IRibbonS } } + private static bool CanHaveFootprintRibbon(PKM pkm, int gen) + { + if (gen <= 4) // Friendship Check unnecessary - can decrease after obtaining ribbon. + return true; + // Gen5: Can't obtain + // Gen6/7: Increase level by 30 from original level + if (pkm.Format >= 6 && (gen != 8 && !pkm.GG) && (pkm.CurrentLevel - pkm.Met_Level < 30)) + return true; + + // Gen8: Can't obtain + return false; + } + private static IEnumerable GetInvalidRibbons6Any(PKM pkm, IRibbonSetCommon6 s6, int gen) { foreach (var p in GetInvalidRibbons6Memory(pkm, s6, gen))