mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-05-13 15:42:17 -05:00
Like move validation, evolutions are the earliest thing we wish to traverse when determining what encounters may have originated the current Pokémon. To determine the permitted species-form-levels a Pokémon could originate with, we must devolve a Pokémon by traveling down-generation to origin. Once we have an encounter, we can then evolve it to the current species, traversing upwards from origin to the current format.
39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
namespace PKHeX.Core;
|
|
|
|
/// <summary>
|
|
/// Option for checking how a move may be learned.
|
|
/// </summary>
|
|
public enum LearnOption
|
|
{
|
|
/// <summary>
|
|
/// Checks with rules assuming the move is in the current moveset.
|
|
/// </summary>
|
|
Current,
|
|
|
|
/// <summary>
|
|
/// Checks with rules assuming the move was known at any time while existing inside the game source it is being checked in.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Only relevant for memory checks.
|
|
/// For not-transferable moves like Gen4/5 HM moves, no -- there's no point in checking them as they aren't requisites for anything.
|
|
/// Evolution criteria is handled separately.
|
|
/// </remarks>
|
|
AtAnyTime,
|
|
|
|
/// <summary>
|
|
/// Checks with rules assuming the move was taught via HOME -- for sharing acquired movesets between games.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Relevant for HOME sharing sanity checks.
|
|
/// Required to be distinct in that the rules are different from the other two options. TR/TM flags aren't required if the move was learned via HOME.
|
|
/// </remarks>
|
|
HOME,
|
|
}
|
|
|
|
public static class LearnOptionExtensions
|
|
{
|
|
public static bool IsCurrent(this LearnOption option) => option == LearnOption.Current;
|
|
public static bool IsPast(this LearnOption option) => option is LearnOption.AtAnyTime or LearnOption.HOME;
|
|
public static bool IsFlagCheckRequired(this LearnOption option) => option != LearnOption.HOME;
|
|
}
|