diff --git a/PKHeX.Core/PKM/PKX.cs b/PKHeX.Core/PKM/PKX.cs index 3e4227fc1..7d9d022bc 100644 --- a/PKHeX.Core/PKM/PKX.cs +++ b/PKHeX.Core/PKM/PKX.cs @@ -788,18 +788,44 @@ public static byte[] EncryptArray3(byte[] pkm) } /// - /// Gets the Main Series language ID from a GameCube (C/XD) language ID. Re-maps Spanish 6->7. + /// Gets the Main Series language ID from a GameCube (C/XD) language ID. /// /// GameCube (C/XD) language ID. /// Main Series language ID. - public static byte GetMainLangIDfromGC(byte value) => value == 6 ? (byte)7 : value; + public static byte GetMainLangIDfromGC(byte value) + { + if (value <= 2 || value > 7) + return value; + return GCtoMainSeries[value]; + } + private static readonly Dictionary GCtoMainSeries = new Dictionary + { + {3, 5}, // German + {4, 3}, // French + {5, 4}, // Italian + {6, 7}, // Spanish + {7, 6}, // Korean (Unused) + }; /// - /// Gets the GameCube (C/XD) language ID from a Main Series language ID. Re-maps Spanish 7->6. + /// Gets the GameCube (C/XD) language ID from a Main Series language ID. /// /// Main Series language ID. /// GameCube (C/XD) language ID. - public static byte GetGCLangIDfromMain(byte value) => value == 7 ? (byte)6 : value; + public static byte GetGCLangIDfromMain(byte value) + { + if (value <= 2 || value > 7) + return value; + return MainSeriesToGC[value]; + } + private static readonly Dictionary MainSeriesToGC = new Dictionary + { + {5, 3}, // German + {3, 4}, // French + {4, 5}, // Italian + {7, 6}, // Spanish + {6, 7}, // Korean (Unused) + }; /// /// Gets an array of valid file extensions.