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?).
This commit is contained in:
Kurt
2020-01-20 23:09:28 -08:00
parent b84cae9ff5
commit 5bb51b07ac

View File

@@ -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<RibbonResult> 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<RibbonResult> 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<RibbonResult> GetInvalidRibbons6Any(PKM pkm, IRibbonSetCommon6 s6, int gen)
{
foreach (var p in GetInvalidRibbons6Memory(pkm, s6, gen))