diff --git a/PKHeX.Core/Legality/Areas/EncounterArea8g.cs b/PKHeX.Core/Legality/Areas/EncounterArea8g.cs index 24d8f8d42..31e9e935d 100644 --- a/PKHeX.Core/Legality/Areas/EncounterArea8g.cs +++ b/PKHeX.Core/Legality/Areas/EncounterArea8g.cs @@ -106,6 +106,7 @@ namespace PKHeX.Core if (sf == default) yield break; + var species = pkm.Species; var ball = (Ball)pkm.Ball; var met = Math.Max(sf.LevelMin, pkm.Met_Level); EncounterSlot8GO? deferredIV = null; @@ -114,7 +115,7 @@ namespace PKHeX.Core { if (!slot.IsLevelWithinRange(met)) continue; - if (!slot.IsBallValid(ball)) + if (!slot.IsBallValid(ball, species)) continue; if (!slot.Shiny.IsValid(pkm)) continue; diff --git a/PKHeX.Core/Legality/Encounters/EncounterSlot/GO/EncounterSlot8GO.cs b/PKHeX.Core/Legality/Encounters/EncounterSlot/GO/EncounterSlot8GO.cs index 8b77a4121..69cfc6a4b 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterSlot/GO/EncounterSlot8GO.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterSlot/GO/EncounterSlot8GO.cs @@ -26,7 +26,13 @@ namespace PKHeX.Core /// /// Checks if the is compatible with the . /// - public bool IsBallValid(Ball ball) => Type.IsBallValid(ball); + public bool IsBallValid(Ball ball, int currentSpecies) + { + // GO does not natively produce Shedinja when evolving Nincada, and thus must be evolved in future games. + if (currentSpecies == (int)Core.Species.Shedinja && currentSpecies != Species) + return ball == Ball.Poke; + return Type.IsBallValid(ball); + } protected override void ApplyDetails(ITrainerInfo sav, EncounterCriteria criteria, PKM pk) {