diff --git a/PKHeX.Core/Legality/Evolutions/EvolutionGroup/EvolutionGroupHOME.cs b/PKHeX.Core/Legality/Evolutions/EvolutionGroup/EvolutionGroupHOME.cs index 68db850f5..9cd7d761c 100644 --- a/PKHeX.Core/Legality/Evolutions/EvolutionGroup/EvolutionGroupHOME.cs +++ b/PKHeX.Core/Legality/Evolutions/EvolutionGroup/EvolutionGroupHOME.cs @@ -56,11 +56,22 @@ public int Devolve(Span result, PKM pk, EvolutionOrigin enc) public int Evolve(Span result, PKM pk, EvolutionOrigin enc, EvolutionHistory history) { + if (IsUnavailableEvoChain(pk.Species, pk.Form)) + result = result[..1]; // Only allow the highest (current). if (CheckAllAdjacent(pk, enc)) return EvolveMulti(result, pk, enc, history); return EvolveSingle(result, pk, enc, history); } + private static bool IsUnavailableEvoChain(ushort species, byte form) => species switch + { + // Split-evolution Alolans can't be reached in any game Gen8+. Must have been via Gen7. + (int)Species.Raichu when form == 1 => true, + (int)Species.Exeggutor when form == 1 => true, + (int)Species.Marowak when form == 1 => true, + _ => false, + }; + private int DevolveMulti(Span result, PKM pk, in EvolutionOrigin enc) { int present = 1;