PKHeX/PKHeX.Core/Legality/Structures/LegalityCheckResultCode.cs
Kurt 6f9daaed04 Small tweaks to HGSS ball check
small lol
would need fully implemented pal park trash byte checks, big sad
leave stuff stubbed for now, can clamp down later.

restrict some method sigs for IEncounterTemplate (rather than more-derived IEncounterable) for consistency
2026-02-20 01:36:46 -06:00

494 lines
11 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,
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,
FormEternal,
FormEternalInvalid,
FormInvalidGame,
FormInvalidNature,
FormItemMatches,
FormItemInvalid,
FormParty,
FormPikachuCosplay,
FormPikachuCosplayInvalid,
FormPikachuEventInvalid,
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
GeoBadOrder,
GeoHardwareInvalid,
GeoHardwareRange,
GeoHardwareValid,
GeoMemoryMissing,
GeoNoCountryHT,
GeoNoRegion,
// 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,
// 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,
StatNatureInvalid,
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,
TransferKoreanGen4,
TransferEncryptGen6BitFlip,
TransferEncryptGen6Equals,
TransferEncryptGen6Xor,
TransferTrackerMissing,
TransferTrackerShouldBeZero,
TrashBytesExpected,
TrashBytesMismatchInitial,
TrashBytesMissingTerminator,
TrashBytesShouldBeEmpty,
// 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,
EvoTradeReqOutsider_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,
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
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,
}