diff --git a/PKHeX.Core/Legality/Encounters/Verifiers/VerifyRelearnMoves.cs b/PKHeX.Core/Legality/Encounters/Verifiers/VerifyRelearnMoves.cs index 024d058d3..eead22cf9 100644 --- a/PKHeX.Core/Legality/Encounters/Verifiers/VerifyRelearnMoves.cs +++ b/PKHeX.Core/Legality/Encounters/Verifiers/VerifyRelearnMoves.cs @@ -126,6 +126,9 @@ private static CheckResult[] VerifyRelearnEggBase(PKM pkm, EncounterEgg e) if (splitInvalid && e is EncounterEggSplit x) FlagSplitbreedMoves(result, reqBase, x); + var dupe = IsAnyRelearnMoveDuplicate(pkm); + if (dupe > 0) + result[dupe] = new CheckResult(Severity.Invalid, LMoveSourceDuplicate, CheckIdentifier.RelearnMove); return result; } @@ -197,5 +200,21 @@ private static int GetRequiredBaseMoves(int[] RelearnMoves, IReadOnlyList b reqBase = Math.Min(4, unique); return reqBase; } + + private static int IsAnyRelearnMoveDuplicate(PKM pk) + { + int m1 = pk.RelearnMove1; + int m2 = pk.RelearnMove2; + + if (m1 != 0 && m1 == m2) + return 1; + int m3 = pk.RelearnMove3; + if (m3 != 0 && (m1 == m3 || m2 == m3)) + return 2; + int m4 = pk.RelearnMove4; + if (m4 != 0 && (m1 == m4 || m2 == m4 || m3 == m4)) + return 3; + return -1; + } } }