mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-08-19 03:16:46 -05:00
Supercedes #4444 - Handles Volbeat/NidoranM specific inheritance cases - Handles Smoochum(female-only) male father search cases - Allocation free, result struct Closes #4426 Removed unreachable eggmoves from gs: no Charm for Bulbasaur no Charm for Oddish no Charm for Snorlax no AuroraBeam for Staryu no Barrier for Staryu no Supersonic for Staryu no LovelyKiss for Smoochum
501 lines
12 KiB
C#
501 lines
12 KiB
C#
namespace PKHeX.Core;
|
|
|
|
/// <summary>
|
|
/// Represents the specific type of legality result that was generated during a legality check.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// When a result is generated, instead of storing the string directly, an instance of this enum is stored instead.
|
|
/// The string is only fetched from <see cref="LegalityCheckLocalization"/> when needed for display.
|
|
/// </remarks>
|
|
public enum LegalityCheckResultCode : ushort
|
|
{
|
|
/// <summary>Originated from / Defer to an external validator.</summary>
|
|
External,
|
|
/// <summary>Default text for indicating validity.</summary>
|
|
Valid,
|
|
/// <summary>Default text for indicating an error has occurred.</summary>
|
|
Error,
|
|
|
|
// The order of the enum is important only for humanization; keep sorted by handling, with groups by category and functionality.
|
|
|
|
// Ability
|
|
AbilityCapsuleUsed,
|
|
AbilityPatchUsed,
|
|
AbilityPatchRevertUsed,
|
|
AbilityFlag,
|
|
AbilityHiddenFail,
|
|
AbilityHiddenUnavailable,
|
|
AbilityMismatch,
|
|
AbilityMismatch3,
|
|
AbilityMismatchFlag,
|
|
AbilityMismatchGift,
|
|
AbilityMismatchPID,
|
|
AbilityUnexpected,
|
|
|
|
// Awakened Values
|
|
AwakenedCap,
|
|
|
|
// Ball
|
|
BallAbility,
|
|
BallEggCherish,
|
|
BallEggMaster,
|
|
BallEnc,
|
|
BallEncMismatch,
|
|
BallHeavy,
|
|
BallSpecies,
|
|
BallSpeciesPass,
|
|
BallUnavailable,
|
|
BallG4Sinnoh,
|
|
BallG4Johto,
|
|
|
|
// Contest
|
|
ContestZero,
|
|
ContestZeroSheen,
|
|
|
|
// Date & Timestamps
|
|
DateCalendarInvalidMet,
|
|
DateCalendarInvalidEgg,
|
|
DateLocalInvalidDate,
|
|
DateLocalInvalidTime,
|
|
DateOutsideDistributionWindow,
|
|
|
|
// Egg
|
|
EggContest,
|
|
EggEXP,
|
|
EggHatchCycles,
|
|
EggLocation,
|
|
EggLocationInvalid,
|
|
EggLocationNone,
|
|
EggLocationPalPark,
|
|
EggLocationTrade,
|
|
EggLocationTradeFail,
|
|
EggMetLocationFail,
|
|
EggMoveCombination,
|
|
EggNature,
|
|
EggPP,
|
|
EggPPUp,
|
|
EggRelearnFlags,
|
|
EggShinyPokeStar,
|
|
EggSpecies,
|
|
EggUnhatched,
|
|
|
|
// Encounter
|
|
EncCondition,
|
|
EncConditionBadRNGFrame,
|
|
EncConditionBadSpecies,
|
|
EncGift,
|
|
EncGiftEggEvent,
|
|
EncGiftIVMismatch,
|
|
EncGiftNicknamed,
|
|
EncGiftNotFound,
|
|
EncGiftPIDMismatch,
|
|
EncGiftShinyMismatch,
|
|
EncGiftVersionNotDistributed,
|
|
EncGiftRegionNotDistributed,
|
|
EncInvalid,
|
|
EncMasteryInitial,
|
|
EncTradeChangedNickname,
|
|
EncTradeChangedOT,
|
|
EncTradeIndexBad,
|
|
EncTradeMatch,
|
|
EncTradeUnchanged,
|
|
EncStaticPIDShiny,
|
|
EncTypeMatch,
|
|
EncTypeMismatch,
|
|
EncUnreleased,
|
|
EncUnreleasedEMewJP,
|
|
|
|
// E-Reader
|
|
EReaderAmerica,
|
|
EReaderInvalid,
|
|
EReaderJapan,
|
|
|
|
// Effort Values
|
|
Effort2Remaining,
|
|
EffortAbove252,
|
|
EffortAbove510,
|
|
EffortAllEqual,
|
|
EffortCap100,
|
|
EffortEgg,
|
|
EffortShouldBeZero,
|
|
EffortEXPIncreased,
|
|
|
|
// Evolution
|
|
EvoInvalid,
|
|
EvoTradeRequired,
|
|
|
|
// Fateful
|
|
FatefulGiftMissing,
|
|
FatefulInvalid,
|
|
FatefulMissing,
|
|
FatefulMystery,
|
|
FatefulMysteryMissing,
|
|
|
|
// Favorite Marking
|
|
FavoriteMarkingUnavailable,
|
|
|
|
// Form
|
|
FormArgumentNotAllowed,
|
|
FormArgumentValid,
|
|
FormArgumentInvalid,
|
|
FormBattle,
|
|
FormInvalidGame,
|
|
FormInvalidNature,
|
|
FormItemMatches,
|
|
FormItemInvalid,
|
|
FormParty,
|
|
FormValid,
|
|
FormVivillon,
|
|
FormVivillonEventPre,
|
|
FormVivillonInvalid,
|
|
FormVivillonNonNative,
|
|
|
|
// Generation 1 & 2
|
|
G1CatchRateChain,
|
|
G1CatchRateEvo,
|
|
G1CatchRateItem,
|
|
G1CatchRateMatchPrevious,
|
|
G1CatchRateMatchTradeback,
|
|
G1CatchRateNone,
|
|
G1CharNick,
|
|
G1CharOT,
|
|
G1OTGender,
|
|
G1Stadium,
|
|
G1Type1Fail,
|
|
G1Type2Fail,
|
|
G1TypeMatch1,
|
|
G1TypeMatch2,
|
|
G1TypeMatchPorygon,
|
|
G1TypePorygonFail,
|
|
G1TypePorygonFail1,
|
|
G1TypePorygonFail2,
|
|
G2InvalidTileTreeNotFound,
|
|
G2TreeID,
|
|
G2OTGender,
|
|
|
|
// Generation 3+
|
|
G3EReader,
|
|
G3OTGender,
|
|
G4InvalidTileR45Surf,
|
|
G4PartnerMoodEgg,
|
|
G4PartnerMoodZero,
|
|
G4ShinyLeafBitsEgg,
|
|
G4ShinyLeafBitsInvalid,
|
|
G5IVAll30,
|
|
G5PIDShinyGrotto,
|
|
G5SparkleInvalid,
|
|
G5SparkleRequired,
|
|
G5PokeStarMustBeZero,
|
|
G5PokeStarImpossibleValue,
|
|
G7BSocialShouldBe100Spirit,
|
|
G7BSocialShouldBe100Mood,
|
|
|
|
// Gender
|
|
GenderInvalidNone,
|
|
|
|
// Geography
|
|
GeoHardwareInvalid,
|
|
GeoHardwareRange,
|
|
GeoHardwareValid,
|
|
GeoMemoryMissing,
|
|
GeoNoCountryHT,
|
|
|
|
// GTS
|
|
GTSTrainerSanitized, // valid, tag
|
|
GTSTradedKoreanInternational, // valid
|
|
GTSTrainerSanitizedExpected,
|
|
GTSDisallowedClassicRibbon,
|
|
GTSDisallowedTradedEgg,
|
|
|
|
// Hints
|
|
|
|
// Hyper Training
|
|
HyperPerfectAll,
|
|
HyperPerfectOne,
|
|
HyperPerfectUnavailable,
|
|
|
|
// Item
|
|
ItemEgg,
|
|
ItemUnreleased,
|
|
|
|
// IVs
|
|
IVNotCorrect,
|
|
|
|
// Level
|
|
LevelBoostNotZero,
|
|
LevelEXPThreshold,
|
|
LevelEXPTooHigh,
|
|
LevelMetBelow,
|
|
LevelMetGift,
|
|
LevelMetGiftFail,
|
|
LevelMetSane,
|
|
|
|
// Markings
|
|
MarkValueShouldBeZero,
|
|
MarkValueUnusedBitsPresent,
|
|
|
|
// Memory
|
|
MemoryArgBadHT,
|
|
MemoryHTFlagInvalid,
|
|
MemoryHTLanguage,
|
|
MemoryIndexArgHT,
|
|
MemoryIndexFeelHTLEQ9,
|
|
MemoryIndexIntensityHT1,
|
|
MemoryIndexLinkHT,
|
|
MemoryMissingHT,
|
|
MemoryMissingOT,
|
|
MemorySocialZero,
|
|
MemoryStatAffectionHT0,
|
|
MemoryStatAffectionOT0,
|
|
MemoryStatFriendshipHT0,
|
|
|
|
// Met Detail
|
|
MetDetailTimeOfDay,
|
|
|
|
// Moves - General
|
|
MoveKeldeoMismatch,
|
|
MovesShouldMatchRelearnMoves,
|
|
MovePPMatchesVirtualConsole,
|
|
|
|
// Moves - Shop & Alpha
|
|
MoveShopAlphaMoveShouldBeOther,
|
|
MoveShopAlphaMoveShouldBeZero,
|
|
|
|
// Nickname
|
|
NickFlagEggNo,
|
|
NickFlagEggYes,
|
|
NickInvalidChar,
|
|
NickLengthLong,
|
|
NickLengthShort,
|
|
NickMatchLanguage,
|
|
NickMatchLanguageEgg,
|
|
NickMatchLanguageEggFail,
|
|
NickMatchLanguageFail,
|
|
NickMatchLanguageFlag,
|
|
NickMatchNoOthers,
|
|
NickMatchNoOthersFail,
|
|
|
|
// Original Trainer
|
|
OTLanguage,
|
|
OTLong,
|
|
OTShort,
|
|
OTSuspicious,
|
|
OT_IDEqual,
|
|
OT_IDs0,
|
|
OT_SID0,
|
|
OT_SID0Invalid,
|
|
OT_TID0,
|
|
OT_IDInvalid,
|
|
|
|
// PID & Encryption Constant
|
|
PIDEncryptWurmple,
|
|
PIDEncryptZero,
|
|
PIDEqualsEC,
|
|
PIDGenderMatch,
|
|
PIDGenderMismatch,
|
|
PIDNatureMatch,
|
|
PIDNatureMismatch,
|
|
PIDTypeMismatch,
|
|
PIDZero,
|
|
|
|
// Plus Moves
|
|
PlusMoveCountInvalid,
|
|
PlusMoveMultipleInvalid,
|
|
|
|
// Ribbons
|
|
RibbonAllValid,
|
|
RibbonEgg,
|
|
|
|
// Stats
|
|
StatDynamaxInvalid,
|
|
StatIncorrectHeight,
|
|
StatIncorrectWeight,
|
|
StatInvalidHeightWeight,
|
|
StatGigantamaxInvalid,
|
|
StatGigantamaxValid,
|
|
StatAlignmentInvalid,
|
|
StatBattleVersionInvalid,
|
|
StatNobleInvalid,
|
|
StatAlphaInvalid,
|
|
|
|
// Storage
|
|
StoredSourceEgg,
|
|
|
|
// Super Training
|
|
SuperComplete,
|
|
SuperDistro,
|
|
SuperEgg,
|
|
SuperNoComplete,
|
|
SuperNoUnlocked,
|
|
SuperUnavailable,
|
|
SuperUnused,
|
|
G6SuperTrainEggBag,
|
|
G6SuperTrainEggHits,
|
|
|
|
// Tera Type
|
|
TeraTypeIncorrect,
|
|
TeraTypeMismatch,
|
|
|
|
// Trading
|
|
TradeNotAvailable,
|
|
|
|
// Trainer IDs
|
|
TrainerIDNoSeed,
|
|
|
|
// Transfer
|
|
TransferBad,
|
|
TransferCurrentHandlerInvalid,
|
|
TransferEgg,
|
|
TransferEggLocationTransporter,
|
|
TransferEggMetLevel,
|
|
TransferEggVersion,
|
|
TransferFlagIllegal,
|
|
TransferHandlerFlagRequired,
|
|
TransferHandlerMismatchName,
|
|
TransferHandlerMismatchGender,
|
|
TransferHandlerMismatchLanguage,
|
|
TransferMet,
|
|
TransferNotPossible,
|
|
TransferMetLocation,
|
|
TransferNature,
|
|
TransferObedienceLevel,
|
|
TransferEncryptGen6BitFlip,
|
|
TransferEncryptGen6Equals,
|
|
TransferEncryptGen6Xor,
|
|
TransferTrackerMissing,
|
|
TransferTrackerShouldBeZero,
|
|
|
|
// Trash Bytes
|
|
TrashBytesExpected,
|
|
TrashBytesMismatchInitial,
|
|
TrashBytesMissingTerminatorFinal,
|
|
TrashBytesShouldBeEmpty,
|
|
TrashBytesResetViaTransfer,
|
|
|
|
// Bulk Cross-Comparison
|
|
BulkCloneDetectedDetails,
|
|
BulkCloneDetectedTracker,
|
|
BulkSharingEncryptionConstantGenerationSame,
|
|
BulkSharingEncryptionConstantGenerationDifferent,
|
|
BulkSharingEncryptionConstantEncounterType,
|
|
BulkSharingPIDGenerationDifferent,
|
|
BulkSharingPIDGenerationSame,
|
|
BulkSharingPIDEncounterType,
|
|
BulkDuplicateFusionSlot,
|
|
BulkDuplicateMysteryGiftEggReceived,
|
|
BulkFusionSourceInvalid,
|
|
BulkSharingTrainerIDs,
|
|
BulkSharingTrainerVersion,
|
|
|
|
// Formattable Argument Present: 1 Number
|
|
FirstWithArgument,
|
|
ContestSheenGEQ_0 = FirstWithArgument,
|
|
MemoryStatFriendshipOTBaseEvent_0,
|
|
ContestSheenLEQ_0,
|
|
EggFMetLevel_0,
|
|
EffortUntrainedCap_0,
|
|
FormArgumentLEQ_0,
|
|
FormArgumentGEQ_0,
|
|
FormInvalidExpect_0,
|
|
HyperTrainLevelGEQ_0, // level
|
|
IVAllEqual_0,
|
|
IVFlawlessCountGEQ_0, // count
|
|
MarkValueOutOfRange_0, // unknown value
|
|
MemoryStatSocialLEQ_0,
|
|
MemoryStatFullness_0,
|
|
MemoryStatFullnessLEQ_0,
|
|
MemoryStatEnjoyment_0,
|
|
StatIncorrectCP_0, // value
|
|
WordFilterTooManyNumbers_0, // count
|
|
PokerusDaysLEQ_0, // days
|
|
PokerusStrainUnobtainable_0, // strain
|
|
MemoryHTGender_0, // gender value
|
|
G6SuperTrainBagInvalid_0,
|
|
GeoBadOrder_0,
|
|
GeoNoCountry_0,
|
|
GeoNoRegion_0,
|
|
StatIncorrectHeightValue_0,
|
|
StatIncorrectWeightValue_0,
|
|
StatIncorrectScaleValue_0,
|
|
|
|
// Two Numbers
|
|
FirstWithTwoArguments,
|
|
MovePPTooHigh_01 = FirstWithTwoArguments, // move slot, value
|
|
MovePPUpsTooHigh_01, // move slot, value
|
|
MovePPExpectHealed_01, // move slot, value
|
|
|
|
// Single Argument: Move ID
|
|
FirstWithMove,
|
|
MoveTechRecordFlagMissing_0 = FirstWithMove, // move ID
|
|
MoveShopAlphaMoveShouldBeMastered_0, // move
|
|
MoveShopMasterInvalid_0, // move ID
|
|
MoveShopMasterNotLearned_0, // move ID
|
|
MoveShopPurchaseInvalid_0, // move ID
|
|
PlusMoveInvalid_0, // move ID
|
|
PlusMoveAlphaMissing_0, // move ID
|
|
PlusMoveSufficientLevelMissing_0, // move ID
|
|
|
|
// Single Argument: Item ID
|
|
FirstWithItem,
|
|
BulkHeldItemInventoryAssignedNoneHeld_0 = FirstWithItem, // item ID
|
|
BulkHeldItemInventoryMultipleSlots_0,
|
|
BulkHeldItemInventoryNotAcquired_0,
|
|
BulkHeldItemInventoryUnassigned_0,
|
|
|
|
// One Argument: Language
|
|
FirstWithLanguage,
|
|
OTLanguageShouldBe_0 = FirstWithLanguage, // language
|
|
OTLanguageShouldBeLeq_0, // language
|
|
EncGiftLanguageNotDistributed_0, // language
|
|
OTLanguageCannotPlayOnVersion_0, // language
|
|
|
|
// Multiple Arguments: Memories
|
|
FirstWithMemory,
|
|
MemoryValid_H = FirstWithMemory,
|
|
MemoryArgBadCatch_H,
|
|
MemoryArgBadHatch_H,
|
|
MemoryArgBadID_H,
|
|
MemoryArgBadLocation_H,
|
|
MemoryArgBadOTEgg_H,
|
|
MemoryArgSpecies_H,
|
|
MemoryCleared_H,
|
|
MemoryFeelInvalid_H,
|
|
FirstMemoryWithValue,
|
|
MemoryArgBadSpecies_H1 = FirstMemoryWithValue,
|
|
MemoryArgBadMove_H1,
|
|
MemoryArgBadItem_H1,
|
|
MemoryIndexID_H1,
|
|
MemoryIndexFeel_H1,
|
|
MemoryIndexIntensity_H1,
|
|
MemoryIndexIntensityMin_H1,
|
|
MemoryIndexVar_H1,
|
|
|
|
// One/Two Arguments: Special
|
|
FirstComplex,
|
|
RibbonsInvalid_0 = FirstComplex, // generated string
|
|
WordFilterFlaggedPattern_01, // filter, pattern
|
|
WordFilterInvalidCharacter_0, // filter, pattern
|
|
|
|
AwakenedStatGEQ_01,// value, statName
|
|
GanbaruStatLEQ_01, // value, statName
|
|
OTLanguageCannotTransferToConsoleRegion_0, // ConsoleRegion
|
|
EncTradeShouldHaveEvolvedToSpecies_0, // species
|
|
MoveEvoFCombination_0, // species
|
|
HintEvolvesToSpecies_0, // species
|
|
EvoTradeReqOutsider_01, // species, species
|
|
|
|
RibbonMarkingInvalid_0, // ribbon
|
|
RibbonMarkingMissing_0, // ribbon
|
|
RibbonMarkingAffixed_0, // ribbon
|
|
RibbonsMissing_0, // ribbon
|
|
|
|
StoredSlotSourceInvalid_0, // StorageSlotType
|
|
HintEvolvesToRareForm_0, // bool
|
|
FormInvalidRangeLEQ_0F,
|
|
|
|
OTLanguageShouldBe_0or1, // language,language
|
|
G6SuperTrainBagHitsInvalid_012,
|
|
|
|
MAX,
|
|
}
|