diff --git a/PKHeX.Core/Legality/Encounters/EncounterTrade.cs b/PKHeX.Core/Legality/Encounters/EncounterTrade.cs index 061d67900..34d68c918 100644 --- a/PKHeX.Core/Legality/Encounters/EncounterTrade.cs +++ b/PKHeX.Core/Legality/Encounters/EncounterTrade.cs @@ -93,7 +93,10 @@ public PKM ConvertToPKM(ITrainerInfo SAV) pk.SetNickname(GetNickname(lang)); pk.Language = lang; - pk.RefreshAbility(Ability >> 1); + if (this is EncounterTradePID a && a.Generation == 4) + pk.RefreshAbility((int)(pk.PID & 1)); + else + pk.RefreshAbility(Ability >> 1); if (IVs != null) pk.SetRandomIVs(IVs, 0); @@ -123,7 +126,7 @@ public PKM ConvertToPKM(ITrainerInfo SAV) if (pk.Format < 6) return pk; - SAV.ApplyHandlingTrainerInfo(pk); + SAV.ApplyHandlingTrainerInfo(pk, force: true); pk.SetRandomEC(); if (pk.Format == 7) diff --git a/PKHeX.Core/Legality/Structures/ITrainerInfo.cs b/PKHeX.Core/Legality/Structures/ITrainerInfo.cs index 2c3992457..1bafaf036 100644 --- a/PKHeX.Core/Legality/Structures/ITrainerInfo.cs +++ b/PKHeX.Core/Legality/Structures/ITrainerInfo.cs @@ -33,9 +33,9 @@ public static void ApplyToPKM(this ITrainerInfo info, PKM pk) pk.ConsoleRegion = info.ConsoleRegion; } - public static void ApplyHandlingTrainerInfo(this ITrainerInfo SAV, PKM pk) + public static void ApplyHandlingTrainerInfo(this ITrainerInfo SAV, PKM pk, bool force = false) { - if (pk.Format == SAV.Generation) + if (pk.Format == SAV.Generation && !force) return; pk.HT_Name = SAV.OT;