using static PKHeX.Core.LegalityCheckStrings; namespace PKHeX.Core { /// /// Verifies the data. /// public sealed class NHarmoniaVerifier : Verifier { protected override CheckIdentifier Identifier => CheckIdentifier.Trainer; public override void Verify(LegalityAnalysis data) { var pkm = data.pkm; var EncounterMatch = data.EncounterMatch; bool checksRequired = EncounterMatch is EncounterStatic5N; if (pkm is PK5 pk5) { bool has = pk5.NPokémon; if (checksRequired && !has) data.AddLine(GetInvalid(LG5SparkleRequired, CheckIdentifier.Fateful)); if (!checksRequired && has) data.AddLine(GetInvalid(LG5SparkleInvalid, CheckIdentifier.Fateful)); } if (!checksRequired) return; if (pkm.OT_Gender != 0) data.AddLine(GetInvalid(LG5OTGenderN, CheckIdentifier.Trainer)); if (pkm.IVTotal != 30*6) data.AddLine(GetInvalid(LG5IVAll30, CheckIdentifier.IVs)); if (!VerifyNsPKMOTValid(pkm)) data.AddLine(GetInvalid(LG5ID_N, CheckIdentifier.Trainer)); if (pkm.IsShiny) data.AddLine(GetInvalid(LG5PIDShinyN, CheckIdentifier.Shiny)); } private static bool VerifyNsPKMOTValid(PKM pkm) { if (pkm.TID != 00002 || pkm.SID != 00000) return false; var ot = pkm.OT_Name; if (ot.Length != 1) return false; var c = EncounterStatic5N.GetOT(pkm.Language); return c == ot; } } }