From d5bd36143e9b9d6a9ed825ed2470f2f2e45943cd Mon Sep 17 00:00:00 2001 From: Kurt Date: Tue, 1 Dec 2020 16:55:10 -0800 Subject: [PATCH] Add language check for jp-blue gameversion, non-crystal female Closes #3099 Ty @CarlosofKalos ! --- PKHeX.Core/Legality/LegalityCheckStrings.cs | 1 + PKHeX.Core/Legality/Verifiers/LanguageVerifier.cs | 11 ++++++++--- PKHeX.Core/Legality/Verifiers/TransferVerifier.cs | 8 ++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/PKHeX.Core/Legality/LegalityCheckStrings.cs b/PKHeX.Core/Legality/LegalityCheckStrings.cs index 24856e22e..ea822d7d5 100644 --- a/PKHeX.Core/Legality/LegalityCheckStrings.cs +++ b/PKHeX.Core/Legality/LegalityCheckStrings.cs @@ -240,6 +240,7 @@ public static class LegalityCheckStrings public static string LG2InvalidTileTreeID { get; set; } = "Found an unreacheable tree for Crystal headbutt encounter that matches OTID."; public static string LG2InvalidTileTreeNotFound { get; set; } = "Could not find a tree for Crystal headbutt encounter that matches OTID."; public static string LG2TreeID { get; set; } = "Found a tree for Crystal headbutt encounter that matches OTID."; + public static string LG2OTGender { get; set; } = "OT from Virtual Console games other than Crystal cannot be female."; public static string LG3EReader { get; set; } = "Non Japanese Shadow E-reader Pokémon. Unreleased encounter."; public static string LG3OTGender { get; set; } = "OT from Colosseum/XD cannot be female."; diff --git a/PKHeX.Core/Legality/Verifiers/LanguageVerifier.cs b/PKHeX.Core/Legality/Verifiers/LanguageVerifier.cs index 06de508fc..965bbf1b8 100644 --- a/PKHeX.Core/Legality/Verifiers/LanguageVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/LanguageVerifier.cs @@ -34,10 +34,15 @@ public override void Verify(LegalityAnalysis data) return; } - // Korean Crystal does not exist, neither do VC1 - if (originalGeneration <= 2 && pkm.Korean && !GameVersion.GS.Contains((GameVersion)pkm.Version)) + if (originalGeneration <= 2) { - data.AddLine(GetInvalid(string.Format(LOTLanguage, $"!={(LanguageID)currentLanguage}", (LanguageID)currentLanguage))); + // Korean Crystal does not exist, neither do Korean VC1 + if (pkm.Korean && !GameVersion.GS.Contains((GameVersion)pkm.Version)) + data.AddLine(GetInvalid(string.Format(LOTLanguage, $"!={(LanguageID)currentLanguage}", (LanguageID)currentLanguage))); + + // Japanese VC is language locked; cannot obtain Japanese-Blue version as other languages. + if (pkm.Version == (int)GameVersion.BU && !pkm.Japanese) + data.AddLine(GetInvalid(string.Format(LOTLanguage, nameof(LanguageID.Japanese), (LanguageID)currentLanguage))); } } diff --git a/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs b/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs index 55e34f08d..4cdcc2c1e 100644 --- a/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs @@ -18,10 +18,18 @@ public override void Verify(LegalityAnalysis data) public void VerifyTransferLegalityG12(LegalityAnalysis data) { + VerifyOTGender(data); VerifyTransferVCNatureEXP(data); VerifyShinyXorIfShiny(data); } + private void VerifyOTGender(LegalityAnalysis data) + { + var pkm = data.pkm; + if (pkm.OT_Gender == 1 && pkm.Version != (int)GameVersion.C) + data.AddLine(GetInvalid(LG2OTGender)); + } + private void VerifyTransferVCNatureEXP(LegalityAnalysis data) { var pkm = data.pkm;