/// <summary> /// Returns legality info for an unmatched encounter scenario, including a hint as to what the actual match could be. /// </summary> /// <param name="pkm">Source data to check the match for</param> /// <param name="info">Information containing the unmatched encounter</param> /// <returns>Updated information pertaining to the unmatched encounter</returns> private static LegalInfo VerifyWithoutEncounter(PKM pkm, LegalInfo info) { info.EncounterMatch = new EncounterInvalid(pkm); string hint; // hint why an encounter was not found if (pkm.WasGiftEgg) { hint = LEncGift; } else if (pkm.WasEventEgg) { hint = LEncGiftEggEvent; } else if (pkm.WasEvent) { hint = LEncGiftNotFound; } else { hint = LEncInvalid; } info.Parse.Add(new CheckResult(Severity.Invalid, hint, CheckIdentifier.Encounter)); info.Relearn = VerifyRelearnMoves.VerifyRelearn(pkm, info); info.Moves = VerifyCurrentMoves.VerifyMoves(pkm, info); return(info); }
/// <summary> /// Checks supplementary info to see if the encounter is still valid. /// </summary> /// <remarks> /// When an encounter is initially validated, only encounter-related checks are performed. /// By checking Moves, Evolution, and <see cref="PIDIV"/> data, a best match encounter can be found. /// If the encounter is not valid, the method will not reject it unless another encounter is available to check. /// </remarks> /// <param name="pkm">Source data to check the match for</param> /// <param name="info">Information containing the matched encounter</param> /// <param name="iterator">Peekable iterator </param> /// <returns>Indication whether or not the encounter passes secondary checks</returns> private static bool VerifySecondaryChecks(PKM pkm, LegalInfo info, PeekEnumerator <IEncounterable> iterator) { if (pkm.Format >= 6) { info.Relearn = VerifyRelearnMoves.VerifyRelearn(pkm, info); if (info.Relearn.Any(z => !z.Valid) && iterator.PeekIsNext()) { return(false); } } else { for (int i = 0; i < 4; i++) { info.Relearn[i] = new CheckResult(CheckIdentifier.RelearnMove); } } info.Moves = VerifyCurrentMoves.VerifyMoves(pkm, info); if (info.Moves.Any(z => !z.Valid) && iterator.PeekIsNext()) { return(false); } var evo = EvolutionVerifier.VerifyEvolution(pkm, info); if (!evo.Valid && iterator.PeekIsNext()) { return(false); } info.Parse.Add(evo); return(true); }
/// <summary> /// Returns legality info for an unmatched encounter scenario, including a hint as to what the actual match could be. /// </summary> /// <param name="pkm">Source data to check the match for</param> /// <param name="info">Information containing the unmatched encounter</param> /// <returns>Updated information pertaining to the unmatched encounter</returns> private static LegalInfo VerifyWithoutEncounter(PKM pkm, LegalInfo info) { info.EncounterMatch = new EncounterInvalid(pkm); string hint = GetHintWhyNotFound(pkm); info.Parse.Add(new CheckResult(Severity.Invalid, hint, CheckIdentifier.Encounter)); info.Relearn = VerifyRelearnMoves.VerifyRelearn(pkm, info); info.Moves = VerifyCurrentMoves.VerifyMoves(pkm, info); return(info); }