From 6deaf3cb74d1e0a0cffa2edc8c4bc86ffc693cb7 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 26 Mar 2022 14:53:15 -0700 Subject: [PATCH] More explicit type checks for Encounter class A little more explicit on what it is actually checking for --- PKHeX.Core/Legality/Verifiers/CXDVerifier.cs | 16 ++++++++-------- PKHeX.Core/Legality/Verifiers/FormVerifier.cs | 2 +- PKHeX.Core/Legality/Verifiers/LevelVerifier.cs | 2 +- .../Legality/Verifiers/NicknameVerifier.cs | 2 +- .../Legality/Verifiers/TransferVerifier.cs | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/PKHeX.Core/Legality/Verifiers/CXDVerifier.cs b/PKHeX.Core/Legality/Verifiers/CXDVerifier.cs index f5f3c8b50..87f885788 100644 --- a/PKHeX.Core/Legality/Verifiers/CXDVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/CXDVerifier.cs @@ -12,8 +12,8 @@ public sealed class CXDVerifier : Verifier public override void Verify(LegalityAnalysis data) { var pkm = data.pkm; - if (data.EncounterMatch is EncounterStatic) - VerifyCXDStarterCorrelation(data); + if (data.EncounterMatch is EncounterStatic3 s3) + VerifyCXDStarterCorrelation(data, s3); else if (pkm.Egg_Location != 0) // can't obtain eggs in CXD data.AddLine(GetInvalid(LEncInvalid, CheckIdentifier.Encounter)); // invalid encounter @@ -21,17 +21,17 @@ public override void Verify(LegalityAnalysis data) data.AddLine(GetInvalid(LG3OTGender, CheckIdentifier.Trainer)); } - private static void VerifyCXDStarterCorrelation(LegalityAnalysis data) + private static void VerifyCXDStarterCorrelation(LegalityAnalysis data, EncounterStatic3 enc) { - var pidiv = data.Info.PIDIV; - if (pidiv.Type is not (PIDType.CXD or PIDType.CXDAnti)) + var (type, seed) = data.Info.PIDIV; + if (type is not (PIDType.CXD or PIDType.CXDAnti or PIDType.CXD_ColoStarter)) return; // already flagged as invalid var pkm = data.pkm; - bool valid = data.EncounterMatch.Species switch + bool valid = enc.Species switch { - (int)Species.Eevee => LockFinder.IsXDStarterValid(pidiv.OriginSeed, pkm.TID, pkm.SID), - (int)Species.Espeon or (int)Species.Umbreon => pidiv.Type == PIDType.CXD_ColoStarter, + (int)Species.Eevee => LockFinder.IsXDStarterValid(seed, pkm.TID, pkm.SID), + (int)Species.Espeon or (int)Species.Umbreon => type == PIDType.CXD_ColoStarter, _ => true, }; if (!valid) diff --git a/PKHeX.Core/Legality/Verifiers/FormVerifier.cs b/PKHeX.Core/Legality/Verifiers/FormVerifier.cs index f1b1f378b..a20f3932c 100644 --- a/PKHeX.Core/Legality/Verifiers/FormVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/FormVerifier.cs @@ -45,7 +45,7 @@ private CheckResult VerifyForm(LegalityAnalysis data) switch ((Species)species) { case Pikachu when Info.Generation == 6: // Cosplay - bool isStatic = enc is EncounterStatic; + bool isStatic = enc is EncounterStatic6; bool validCosplay = form == (isStatic ? enc.Form : 0); if (!validCosplay) return GetInvalid(isStatic ? LFormPikachuCosplayInvalid : LFormPikachuCosplay); diff --git a/PKHeX.Core/Legality/Verifiers/LevelVerifier.cs b/PKHeX.Core/Legality/Verifiers/LevelVerifier.cs index 3281b3411..50d8467da 100644 --- a/PKHeX.Core/Legality/Verifiers/LevelVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/LevelVerifier.cs @@ -47,7 +47,7 @@ public override void Verify(LegalityAnalysis data) return; } - var reqEXP = enc is EncounterStatic {Version: GameVersion.C} + var reqEXP = enc is EncounterStatic2Odd ? 125 // Gen2 Dizzy Punch gifts always have 125 EXP, even if it's more than the Lv5 exp required. : Experience.GetEXP(elvl, pkm.PersonalInfo.EXPGrowth); if (reqEXP != pkm.EXP) diff --git a/PKHeX.Core/Legality/Verifiers/NicknameVerifier.cs b/PKHeX.Core/Legality/Verifiers/NicknameVerifier.cs index 5d7aaa482..10a1f8541 100644 --- a/PKHeX.Core/Legality/Verifiers/NicknameVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/NicknameVerifier.cs @@ -350,7 +350,7 @@ private static void VerifyTrade4(LegalityAnalysis data, EncounterTrade t) break; default: - if (pkm.Version is (int)GameVersion.D or (int)GameVersion.P && t is EncounterTrade4PID) // mainline DP + if (t is EncounterTrade4PID && pkm.Version is ((int)GameVersion.D or (int)GameVersion.P)) // mainline DP { // DP English origin are Japanese lang. Can't have LanguageID 2 if (lang == 2) diff --git a/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs b/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs index daf59a546..662709727 100644 --- a/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs +++ b/PKHeX.Core/Legality/Verifiers/TransferVerifier.cs @@ -223,7 +223,7 @@ public IEnumerable VerifyVCEncounter(PKM pkm, IEncounterTemplate en yield return GetInvalid(LEggLocationNone); // Flag Moves that cannot be transferred - if (encounter is EncounterStatic2Odd {Version: GameVersion.C, EggLocation: 256}) // Dizzy Punch Gifts + if (encounter is EncounterStatic2Odd) // Dizzy Punch Gifts FlagIncompatibleTransferMove(pkm, Moves, 146, 2); // can't have Dizzy Punch at all bool checkShiny = pkm.VC2 || (pkm.VC1 && GBRestrictions.IsTimeCapsuleTransferred(pkm, Moves, encounter).WasTimeCapsuleTransferred());