namespace PKHeX.Core
{
///
/// Specification for , used for creating and validating.
///
public enum Shiny : byte
{
///
/// PID is fixed to a specified value.
///
FixedValue = 0,
///
/// PID is purely random; can be shiny or not shiny.
///
Random = 1,
///
/// PID is randomly created and forced to be shiny.
///
Always = 2,
///
/// PID is randomly created and forced to be not shiny.
///
Never = 3,
///
/// PID is randomly created and forced to be shiny as Stars.
///
AlwaysStar = 5,
///
/// PID is randomly created and forced to be shiny as Squares.
///
AlwaysSquare = 6,
}
public static partial class Extensions
{
public static bool IsValid(this Shiny s, PKM pkm) => s switch
{
Shiny.Always => pkm.IsShiny,
Shiny.Never => !pkm.IsShiny,
Shiny.AlwaysSquare => pkm.ShinyXor == 0,
Shiny.AlwaysStar => pkm.ShinyXor == 1,
_ => true,
};
public static bool IsShiny(this Shiny s) => s switch
{
Shiny.Always => true,
Shiny.AlwaysSquare => true,
Shiny.AlwaysStar => true,
_ => false,
};
}
}