From 33a07a6fcd437a8f076ac20e07dd5faca954eb23 Mon Sep 17 00:00:00 2001 From: Kurt Date: Mon, 27 May 2019 11:23:47 -0700 Subject: [PATCH] Try and force destination language on transfer Closes #2314 --- PKHeX.Core/PKM/PK1.cs | 2 +- PKHeX.Core/PKM/PK2.cs | 2 +- PKHeX.Core/PKM/Shared/_K12.cs | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/PKHeX.Core/PKM/PK1.cs b/PKHeX.Core/PKM/PK1.cs index cece5e2ed..13649a4d7 100644 --- a/PKHeX.Core/PKM/PK1.cs +++ b/PKHeX.Core/PKM/PK1.cs @@ -164,7 +164,7 @@ public PK7 ConvertToPK7() Geo1_Country = PKMConverter.Country, Geo1_Region = PKMConverter.Region }; - pk7.Language = GuessedLanguage(PKMConverter.Language); + pk7.Language = TransferLanguage(PKMConverter.Language); pk7.Nickname = PKX.GetSpeciesNameGeneration(pk7.Species, pk7.Language, pk7.Format); if (otname[0] == StringConverter12.G1TradeOTCode) // Ingame Trade pk7.OT_Name = Encounters1.TradeOTG1[pk7.Language]; diff --git a/PKHeX.Core/PKM/PK2.cs b/PKHeX.Core/PKM/PK2.cs index 7e2dec021..f5dd1f1a8 100644 --- a/PKHeX.Core/PKM/PK2.cs +++ b/PKHeX.Core/PKM/PK2.cs @@ -163,7 +163,7 @@ public PK7 ConvertToPK7() Geo1_Country = PKMConverter.Country, Geo1_Region = PKMConverter.Region }; - pk7.Language = GuessedLanguage(PKMConverter.Language); + pk7.Language = TransferLanguage(PKMConverter.Language); pk7.Nickname = PKX.GetSpeciesNameGeneration(pk7.Species, pk7.Language, pk7.Format); if (otname[0] == StringConverter12.G1TradeOTCode) // Ingame Trade pk7.OT_Name = Encounters1.TradeOTG1[pk7.Language]; diff --git a/PKHeX.Core/PKM/Shared/_K12.cs b/PKHeX.Core/PKM/Shared/_K12.cs index 46c3157f2..8e7a68cd2 100644 --- a/PKHeX.Core/PKM/Shared/_K12.cs +++ b/PKHeX.Core/PKM/Shared/_K12.cs @@ -241,6 +241,20 @@ protected int GuessedLanguage(int fallback = (int)LanguageID.English) return (int)LanguageID.English; } + /// + /// Tries to guess the source language ID when transferred to future generations (7+) + /// + /// Destination language ID + /// Source language ID + protected int TransferLanguage(int destLanguage) + { + // if the Species name of the destination language matches the current nickname, transfer with that language. + var expect = PKX.GetSpeciesNameGeneration(Species, destLanguage, 2); + if (Nickname == expect) + return destLanguage; + return GuessedLanguage(destLanguage); + } + public override ushort[] GetStats(PersonalInfo p) { var lv = Stat_Level;