mirror of
https://github.com/kwsch/PKHeX
synced 2024-12-22 10:23:09 +00:00
9166d0eb64
Rewrites a good amount of legality APIs pertaining to: * Legal moves that can be learned * Evolution chains & cross-generation paths * Memory validation with forgotten moves In generation 8, there are 3 separate contexts an entity can exist in: SW/SH, BD/SP, and LA. Not every entity can cross between them, and not every entity from generation 7 can exist in generation 8 (Gogoat, etc). By creating class models representing the restrictions to cross each boundary, we are able to better track and validate data. The old implementation of validating moves was greedy: it would iterate for all generations and evolutions, and build a full list of every move that can be learned, storing it on the heap. Now, we check one game group at a time to see if the entity can learn a move that hasn't yet been validated. End result is an algorithm that requires 0 allocation, and a smaller/quicker search space. The old implementation of storing move parses was inefficient; for each move that was parsed, a new object is created and adjusted depending on the parse. Now, move parse results are `struct` and store the move parse contiguously in memory. End result is faster parsing and 0 memory allocation. * `PersonalTable` objects have been improved with new API methods to check if a species+form can exist in the game. * `IEncounterTemplate` objects have been improved to indicate the `EntityContext` they originate in (similar to `Generation`). * Some APIs have been extended to accept `Span<T>` instead of Array/IEnumerable
492 lines
42 KiB
C#
492 lines
42 KiB
C#
// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global
|
|
|
|
namespace PKHeX.Core;
|
|
|
|
/// <summary>
|
|
/// Legality Check Message Strings to indicate why certain <see cref="PKM"/> <see cref="LegalInfo"/> values are flagged.
|
|
/// </summary>
|
|
public static class LegalityCheckStrings
|
|
{
|
|
// Message String Name format: L/F[Category][Summary]
|
|
#region General Strings
|
|
|
|
/// <summary>Default text for indicating validity.</summary>
|
|
public static string L_AValid { get; set; } = "Valid.";
|
|
|
|
/// <summary>Default text for indicating legality.</summary>
|
|
public static string L_ALegal { get; set; } = "Legal!";
|
|
|
|
/// <summary>Default text for indicating an error has occurred.</summary>
|
|
public static string L_AError { get; set; } = "Internal error.";
|
|
|
|
/// <summary>Analysis not available for the <see cref="PKM"/></summary>
|
|
public static string L_AnalysisUnavailable { get; set; } = "Analysis not available for this Pokémon.";
|
|
|
|
/// <summary>Format text for exporting a legality check result.</summary>
|
|
public static string L_F0_1 { get; set; } = "{0}: {1}";
|
|
|
|
/// <summary>Format text for exporting a legality check result for a Move.</summary>
|
|
public static string L_F0_M_1_2 { get; set; } = "{0} Move {1}: {2}";
|
|
|
|
/// <summary>Format text for exporting a legality check result for a Relearn Move.</summary>
|
|
public static string L_F0_RM_1_2 { get; set; } = "{0} Relearn Move {1}: {2}";
|
|
|
|
/// <summary>Format text for exporting the type of Encounter that was matched for the <see cref="PKM"/></summary>
|
|
public static string L_FEncounterType_0 { get; set; } = "Encounter Type: {0}";
|
|
|
|
/// <summary>Format text for exporting the <see cref="PIDIV.OriginSeed"/> that was matched for the <see cref="PKM"/></summary>
|
|
public static string L_FOriginSeed_0 { get; set; } = "Origin Seed: {0}";
|
|
|
|
/// <summary>Format text for exporting the <see cref="PIDIV.Type"/> that was matched for the <see cref="PKM"/></summary>
|
|
public static string L_FPIDType_0 { get; set; } = "PID Type: {0}";
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Indeterminate"/></summary>
|
|
public static string L_SIndeterminate { get; set; } = "Indeterminate";
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Invalid"/></summary>
|
|
public static string L_SInvalid { get; set; } = "Invalid";
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Fishy"/></summary>
|
|
public static string L_SFishy { get; set; } = "Fishy";
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Valid"/></summary>
|
|
public static string L_SValid { get; set; } = "Valid";
|
|
|
|
/// <summary>Severity string for anything not implemented.</summary>
|
|
public static string L_SNotImplemented { get; set; } = "Not Implemented";
|
|
|
|
public static string L_XOT { get; set; } = "OT";
|
|
public static string L_XHT { get; set; } = "HT";
|
|
public static string L_XKorean { get; set; } = "Korean";
|
|
public static string L_XKoreanNon { get; set; } = "Non-Korean";
|
|
public static string L_XEnigmaBerry_0 { get; set; } = "{0} Berry";
|
|
public static string L_XMatches0_1 { get; set; } = "Matches: {0} {1}";
|
|
public static string L_XWurmpleEvo_0 { get; set; } = "Wurmple Evolution: {0}";
|
|
|
|
public static string LAbilityCapsuleUsed { get; set; } = "Ability available with Ability Capsule.";
|
|
public static string LAbilityPatchUsed { get; set; } = "Ability available with Ability Patch.";
|
|
public static string LAbilityFlag { get; set; } = "Ability matches ability number.";
|
|
public static string LAbilityHiddenFail { get; set; } = "Hidden Ability mismatch for encounter type.";
|
|
public static string LAbilityHiddenUnavailable { get; set; } = "Hidden Ability not available.";
|
|
public static string LAbilityMismatch { get; set; } = "Ability mismatch for encounter.";
|
|
public static string LAbilityMismatch3 { get; set; } = "Ability does not match Generation 3 species ability.";
|
|
public static string LAbilityMismatchFlag { get; set; } = "Ability does not match ability number.";
|
|
public static string LAbilityMismatchGift { get; set; } = "Ability does not match Mystery Gift.";
|
|
public static string LAbilityMismatchGrotto { get; set; } = "Hidden Grotto captures should have Hidden Ability.";
|
|
public static string LAbilityMismatchHordeSafari { get; set; } = "Hidden Ability on non-horde/friend safari wild encounter.";
|
|
public static string LAbilityMismatchPID { get; set; } = "Ability does not match PID.";
|
|
public static string LAbilityMismatchSOS { get; set; } = "Hidden Ability on non-SOS wild encounter.";
|
|
public static string LAbilityUnexpected { get; set; } = "Ability is not valid for species/form.";
|
|
|
|
public static string LAwakenedCap { get; set; } = "Individual AV cannot be greater than {0}.";
|
|
public static string LAwakenedShouldBeValue { get; set; } = "Individual AV ({1}) should be greater than {0}.";
|
|
|
|
public static string LBallAbility { get; set; } = "Can't obtain Hidden Ability with Ball.";
|
|
public static string LBallEggCherish { get; set; } = "Can't have Cherish Ball for regular Egg.";
|
|
public static string LBallEggMaster { get; set; } = "Can't have Master Ball for regular Egg.";
|
|
public static string LBallEnc { get; set; } = "Correct ball for encounter type.";
|
|
public static string LBallEncMismatch { get; set; } = "Can't have ball for encounter type.";
|
|
public static string LBallHeavy { get; set; } = "Can't have Heavy Ball for light, low-catch rate species (Gen VII).";
|
|
public static string LBallNone { get; set; } = "No check satisfied, assuming illegal.";
|
|
public static string LBallSpecies { get; set; } = "Can't obtain species in Ball.";
|
|
public static string LBallSpeciesPass { get; set; } = "Ball possible for species.";
|
|
public static string LBallUnavailable { get; set; } = "Ball unobtainable in origin Generation.";
|
|
|
|
public static string LContestZero { get; set; } = "Contest Stats should be 0.";
|
|
public static string LContestZeroSheen { get; set; } = "Contest Stat Sheen should be 0.";
|
|
public static string LContestSheenTooLow_0 { get; set; } = "Contest Stat Sheen should be >= {0}.";
|
|
public static string LContestSheenTooHigh_0 { get; set; } = "Contest Stat Sheen should be <= {0}.";
|
|
|
|
public static string LDateOutsideDistributionWindow { get; set; } = "Met Date is outside of distribution window.";
|
|
|
|
public static string LEggContest { get; set; } = "Cannot increase Contest Stats of an Egg.";
|
|
public static string LEggEXP { get; set; } = "Eggs cannot receive experience.";
|
|
public static string LEggFMetLevel_0 { get; set; } = "Invalid Met Level, expected {0}.";
|
|
public static string LEggHatchCycles { get; set; } = "Invalid Egg hatch cycles.";
|
|
public static string LEggLocation { get; set; } = "Able to hatch an Egg at Met Location.";
|
|
public static string LEggLocationInvalid { get; set; } = "Can't hatch an Egg at Met Location.";
|
|
public static string LEggLocationNone { get; set; } = "Invalid Egg Location, expected none.";
|
|
public static string LEggLocationPalPark { get; set; } = "Invalid Met Location, expected Pal Park.";
|
|
public static string LEggLocationTrade { get; set; } = "Able to hatch a traded Egg at Met Location.";
|
|
public static string LEggLocationTradeFail { get; set; } = "Invalid Egg Location, shouldn't be 'traded' while an Egg.";
|
|
public static string LEggMetLocationFail { get; set; } = "Can't obtain Egg from Egg Location.";
|
|
public static string LEggNature { get; set; } = "Eggs cannot have their Stat Nature changed.";
|
|
public static string LEggPokeathlon { get; set; } = "Eggs cannot have Pokéathlon stats.";
|
|
public static string LEggPokerus { get; set; } = "Eggs cannot be infected with Pokérus.";
|
|
public static string LEggPP { get; set; } = "Eggs cannot have modified move PP counts.";
|
|
public static string LEggPPUp { get; set; } = "Cannot apply PP Ups to an Egg.";
|
|
public static string LEggRelearnFlags { get; set; } = "Expected no Relearn Move Flags.";
|
|
public static string LEggShinyLeaf { get; set; } = "Eggs cannot have Shiny Leaf/Crown.";
|
|
public static string LEggShinyPokeStar { get; set; } = "Eggs cannot be a Pokéstar Studios star.";
|
|
public static string LEggSpecies { get; set; } = "Can't obtain Egg for this species.";
|
|
public static string LEggUnhatched { get; set; } = "Valid un-hatched Egg.";
|
|
|
|
public static string LEncCondition { get; set; } = "Valid Wild Encounter at location.";
|
|
public static string LEncConditionBadRNGFrame { get; set; } = "Unable to match encounter conditions to a possible RNG frame.";
|
|
public static string LEncConditionBadSpecies { get; set; } = "Species does not exist in origin game.";
|
|
public static string LEncConditionBlack { get; set; } = "Valid Wild Encounter at location (Black Flute).";
|
|
public static string LEncConditionBlackLead { get; set; } = "Valid Wild Encounter at location (Black Flute & Pressure/Hustle/Vital Spirit).";
|
|
public static string LEncConditionDexNav { get; set; } = "Valid Wild Encounter at location (DexNav).";
|
|
public static string LEncConditionLead { get; set; } = "Valid Wild Encounter at location (Pressure/Hustle/Vital Spirit).";
|
|
public static string LEncConditionWhite { get; set; } = "Valid Wild Encounter at location (White Flute).";
|
|
public static string LEncConditionWhiteLead { get; set; } = "Valid Wild Encounter at location (White Flute & Pressure/Hustle/Vital Spirit).";
|
|
|
|
public static string LEncGift { get; set; } = "Unable to match a gift Egg encounter from origin game.";
|
|
public static string LEncGiftEggEvent { get; set; } = "Unable to match an event Egg encounter from origin game.";
|
|
public static string LEncGiftIVMismatch { get; set; } = "IVs do not match Mystery Gift Data.";
|
|
public static string LEncGiftNicknamed { get; set; } = "Event gift has been nicknamed.";
|
|
public static string LEncGiftNotFound { get; set; } = "Unable to match to a Mystery Gift in the database.";
|
|
public static string LEncGiftPIDMismatch { get; set; } = "Mystery Gift fixed PID mismatch.";
|
|
public static string LEncGiftShinyMismatch { get; set; } = "Mystery Gift shiny mismatch.";
|
|
public static string LEncGiftVersionNotDistributed { get; set; } = "Mystery Gift cannot be received by this version.";
|
|
|
|
public static string LEncInvalid { get; set; } = "Unable to match an encounter from origin game.";
|
|
public static string LEncMasteryInitial { get; set; } = "Initial move mastery flags do not match the encounter's expected state.";
|
|
|
|
public static string LEncTradeChangedNickname { get; set; } = "In-game Trade Nickname has been altered.";
|
|
public static string LEncTradeChangedOT { get; set; } = "In-game Trade OT has been altered.";
|
|
public static string LEncTradeIndexBad { get; set; } = "In-game Trade invalid index?";
|
|
public static string LEncTradeMatch { get; set; } = "Valid In-game trade.";
|
|
public static string LEncTradeUnchanged { get; set; } = "In-game Trade OT and Nickname have not been altered.";
|
|
|
|
public static string LEncStaticMatch { get; set; } = "Valid gift/static encounter.";
|
|
public static string LEncStaticPIDShiny { get; set; } = "Static Encounter shiny mismatch.";
|
|
public static string LEncStaticRelearn { get; set; } = "Static encounter relearn move mismatch.";
|
|
|
|
public static string LEncTypeMatch { get; set; } = "Encounter Type matches encounter.";
|
|
public static string LEncTypeMismatch { get; set; } = "Encounter Type does not match encounter.";
|
|
public static string LEncUnreleased { get; set; } = "Unreleased event.";
|
|
public static string LEncUnreleasedEMewJP { get; set; } = "Non japanese Mew from Faraway Island. Unreleased event.";
|
|
public static string LEncUnreleasedHoOArceus { get; set; } = "Arceus from Hall of Origin. Unreleased event.";
|
|
public static string LEncUnreleasedPtDarkrai { get; set; } = "Non Platinum Darkrai from Newmoon Island. Unreleased event.";
|
|
public static string LEncUnreleasedPtShaymin { get; set; } = "Non Platinum Shaymin from Flower Paradise. Unreleased event.";
|
|
|
|
public static string LEReaderAmerica { get; set; } = "American E-Reader Berry in Japanese save file.";
|
|
public static string LEReaderInvalid { get; set; } = "Invalid E-Reader Berry.";
|
|
public static string LEReaderJapan { get; set; } = "Japanese E-Reader Berry in international save file.";
|
|
|
|
public static string LEffort2Remaining { get; set; } = "2 EVs remaining.";
|
|
public static string LEffortAbove252 { get; set; } = "EVs cannot go above 252.";
|
|
public static string LEffortAbove510 { get; set; } = "EV total cannot be above 510.";
|
|
public static string LEffortAllEqual { get; set; } = "EVs are all equal.";
|
|
public static string LEffortCap100 { get; set; } = "Individual EV for a level 100 encounter in Generation 4 cannot be greater than 100.";
|
|
public static string LEffortEgg { get; set; } = "Eggs cannot receive EVs.";
|
|
public static string LEffortShouldBeZero { get; set; } = "Cannot receive EVs.";
|
|
public static string LEffortEXPIncreased { get; set; } = "All EVs are zero, but leveled above Met Level.";
|
|
public static string LEffortUntrainedCap { get; set; } = "Individual EV without changing EXP cannot be greater than {0}.";
|
|
|
|
public static string LEvoInvalid { get; set; } = "Evolution not valid (or level/trade evolution unsatisfied).";
|
|
public static string LEvoTradeReq { get; set; } = "In-game trade {0} should have evolved into {1}.";
|
|
public static string LEvoTradeReqOutsider { get; set; } = "Outsider {0} should have evolved into {1}.";
|
|
public static string LEvoTradeRequired { get; set; } = "Version Specific evolution requires a trade to opposite version. A Handling Trainer is required.";
|
|
|
|
public static string LFateful { get; set; } = "Special In-game Fateful Encounter.";
|
|
public static string LFatefulGiftMissing { get; set; } = "Fateful Encounter with no matching Encounter. Has the Mystery Gift data been contributed?";
|
|
public static string LFatefulInvalid { get; set; } = "Fateful Encounter should not be checked.";
|
|
public static string LFatefulMissing { get; set; } = "Special In-game Fateful Encounter flag missing.";
|
|
public static string LFatefulMystery { get; set; } = "Mystery Gift Fateful Encounter.";
|
|
public static string LFatefulMysteryMissing { get; set; } = "Mystery Gift Fateful Encounter flag missing.";
|
|
|
|
public static string LFavoriteMarkingUnavailable { get; set; } = "Favorite Marking is not available.";
|
|
|
|
public static string LFormArgumentHigh { get; set; } = "Form argument is too high for current form.";
|
|
public static string LFormArgumentLow { get; set; } = "Form argument is too low for current form.";
|
|
public static string LFormArgumentNotAllowed { get; set; } = "Form argument is not allowed for this encounter.";
|
|
public static string LFormArgumentValid { get; set; } = "Form argument is valid.";
|
|
public static string LFormArgumentInvalid { get; set; } = "Form argument is not valid.";
|
|
public static string LFormBattle { get; set; } = "Form cannot exist outside of a battle.";
|
|
public static string LFormEternal { get; set; } = "Valid Eternal Flower encounter.";
|
|
public static string LFormEternalInvalid { get; set; } = "Invalid Eternal Flower encounter.";
|
|
public static string LFormInvalidGame { get; set; } = "Form cannot be obtained in origin game.";
|
|
public static string LFormInvalidNature { get; set; } = "Form cannot have this nature.";
|
|
public static string LFormInvalidRange { get; set; } = "Form Count is out of range. Expected <= {0}, got {1}.";
|
|
public static string LFormItem { get; set; } = "Held item matches Form.";
|
|
public static string LFormItemInvalid { get; set; } = "Held item does not match Form.";
|
|
public static string LFormParty { get; set; } = "Form cannot exist outside of Party.";
|
|
public static string LFormPikachuCosplay { get; set; } = "Only Cosplay Pikachu can have this form.";
|
|
public static string LFormPikachuCosplayInvalid { get; set; } = "Cosplay Pikachu cannot have the default form.";
|
|
public static string LFormPikachuEventInvalid { get; set; } = "Event Pikachu cannot have the default form.";
|
|
public static string LFormValid { get; set; } = "Form is Valid.";
|
|
public static string LFormVivillon { get; set; } = "Valid Vivillon pattern.";
|
|
public static string LFormVivillonEventPre { get; set; } = "Event Vivillon pattern on pre-evolution.";
|
|
public static string LFormVivillonInvalid { get; set; } = "Invalid Vivillon pattern.";
|
|
public static string LFormVivillonNonNative { get; set; } = "Non-native Vivillon pattern.";
|
|
|
|
public static string LG1CatchRateChain { get; set; } = "Catch rate does not match any species from Pokémon evolution chain.";
|
|
public static string LG1CatchRateEvo { get; set; } = "Catch rate match species without encounters. Expected a preevolution catch rate.";
|
|
public static string LG1CatchRateItem { get; set; } = "Catch rate does not match a valid held item from Generation 2.";
|
|
public static string LG1CatchRateMatchPrevious { get; set; } = "Catch Rate matches a species from Pokémon evolution chain.";
|
|
public static string LG1CatchRateMatchTradeback { get; set; } = "Catch rate matches a valid held item from Generation 2.";
|
|
public static string LG1CatchRateNone { get; set; } = "Catch rate does not match any species from Pokémon evolution chain or any Generation 2 held items.";
|
|
public static string LG1CharNick { get; set; } = "Nickname from Generation 1/2 uses unavailable characters.";
|
|
public static string LG1CharOT { get; set; } = "OT from Generation 1/2 uses unavailable characters.";
|
|
public static string LG1GBEncounter { get; set; } = "Can't obtain Special encounter in Virtual Console games.";
|
|
public static string LG1MoveExclusive { get; set; } = "Generation 1 exclusive move. Incompatible with Non-tradeback moves.";
|
|
public static string LG1MoveLearnSameLevel { get; set; } = "Incompatible moves. Learned at the same level in Red/Blue and Yellow.";
|
|
public static string LG1MoveTradeback { get; set; } = "Non-tradeback Egg move. Incompatible with Generation 1 exclusive moves.";
|
|
public static string LG1OTEvent { get; set; } = "Incorrect RBY event OT Name.";
|
|
public static string LG1OTGender { get; set; } = "Female OT from Generation 1/2 is invalid.";
|
|
public static string LG1Stadium { get; set; } = "Incorrect Stadium OT.";
|
|
public static string LG1StadiumInternational { get; set; } = "Valid International Stadium OT.";
|
|
public static string LG1StadiumJapanese { get; set; } = "Valid Japanese Stadium OT.";
|
|
public static string LG1TradebackPreEvoMove { get; set; } = "Non-tradeback pre evolution move. Incompatible with Generation 1 exclusive moves.";
|
|
public static string LG1Type1Fail { get; set; } = "Invalid Type A, does not match species type.";
|
|
public static string LG1Type2Fail { get; set; } = "Invalid Type B, does not match species type.";
|
|
public static string LG1TypeMatch1 { get; set; } = "Valid Type A, matches species type.";
|
|
public static string LG1TypeMatch2 { get; set; } = "Valid Type B, matches species type.";
|
|
public static string LG1TypeMatchPorygon { get; set; } = "Porygon with valid Type A and B values.";
|
|
public static string LG1TypePorygonFail { get; set; } = "Porygon with invalid Type A and B values. Does not a match a valid type combination.";
|
|
public static string LG1TypePorygonFail1 { get; set; } = "Porygon with invalid Type A value.";
|
|
public static string LG1TypePorygonFail2 { get; set; } = "Porygon with invalid Type B value.";
|
|
public static string LG2InvalidTilePark { get; set; } = "National Park fishing encounter. Unreachable Water tiles.";
|
|
public static string LG2InvalidTileR14 { get; set; } = "Kanto Route 14 fishing encounter. Unreachable Water tiles.";
|
|
public static string LG2InvalidTileSafari { get; set; } = "Generation 2 Safari Zone fishing encounter. Unreachable zone.";
|
|
public static string LG2InvalidTileTreeID { get; set; } = "Found an unreachable tree for Crystal headbutt encounter that matches OTID.";
|
|
public static string LG2InvalidTileTreeNotFound { get; set; } = "Could not find a tree for Crystal headbutt encounter that matches OTID.";
|
|
public static string LG2TreeID { get; set; } = "Found a tree for Crystal headbutt encounter that matches OTID.";
|
|
public static string LG2OTGender { get; set; } = "OT from Virtual Console games other than Crystal cannot be female.";
|
|
|
|
public static string LG3EReader { get; set; } = "Non Japanese Shadow E-reader Pokémon. Unreleased encounter.";
|
|
public static string LG3OTGender { get; set; } = "OT from Colosseum/XD cannot be female.";
|
|
public static string LG4InvalidTileR45Surf { get; set; } = "Johto Route 45 surfing encounter. Unreachable Water tiles.";
|
|
public static string LG5ID_N { get; set; } = "The Name/TID/SID of N is incorrect.";
|
|
public static string LG5IVAll30 { get; set; } = "All IVs of N's Pokémon should be 30.";
|
|
public static string LG5OTGenderN { get; set; } = "N's Pokémon must have a male OT gender.";
|
|
public static string LG5PIDShinyGrotto { get; set; } = "Hidden Grotto captures cannot be shiny.";
|
|
public static string LG5PIDShinyN { get; set; } = "N's Pokémon cannot be shiny.";
|
|
public static string LG5SparkleInvalid { get; set; } = "Special In-game N's Sparkle flag should not be checked.";
|
|
public static string LG5SparkleRequired { get; set; } = "Special In-game N's Sparkle flag missing.";
|
|
|
|
public static string LGanbaruStatTooHigh { get; set; } = "One or more Ganbaru Value is above the natural limit of (10 - IV bonus).";
|
|
|
|
public static string LGenderInvalidNone { get; set; } = "Genderless Pokémon should not have a gender.";
|
|
public static string LGeoBadOrder { get; set; } = "GeoLocation Memory: Gap/Blank present.";
|
|
public static string LGeoHardwareInvalid { get; set; } = "Geolocation: Country is not in 3DS region.";
|
|
public static string LGeoHardwareRange { get; set; } = "Invalid Console Region.";
|
|
public static string LGeoHardwareValid { get; set; } = "Geolocation: Country is in 3DS region.";
|
|
public static string LGeoMemoryMissing { get; set; } = "GeoLocation Memory: Memories should be present.";
|
|
public static string LGeoNoCountryHT { get; set; } = "GeoLocation Memory: HT Name present but has no previous Country.";
|
|
public static string LGeoNoRegion { get; set; } = "GeoLocation Memory: Region without Country.";
|
|
|
|
public static string LHyperBelow100 { get; set; } = "Can't Hyper Train a Pokémon that isn't level 100.";
|
|
public static string LHyperPerfectAll { get; set; } = "Can't Hyper Train a Pokémon with perfect IVs.";
|
|
public static string LHyperPerfectOne { get; set; } = "Can't Hyper Train a perfect IV.";
|
|
public static string LHyperPerfectUnavailable { get; set; } = "Can't Hyper Train any IV(s).";
|
|
|
|
public static string LItemEgg { get; set; } = "Eggs cannot hold items.";
|
|
public static string LItemUnreleased { get; set; } = "Held item is unreleased.";
|
|
|
|
public static string LIVAllEqual_0 { get; set; } = "All IVs are {0}.";
|
|
public static string LIVNotCorrect { get; set; } = "IVs do not match encounter requirements.";
|
|
public static string LIVF_COUNT0_31 { get; set; } = "Should have at least {0} IVs = 31.";
|
|
|
|
public static string LLevelEXPThreshold { get; set; } = "Current experience matches level threshold.";
|
|
public static string LLevelEXPTooHigh { get; set; } = "Current experience exceeds maximum amount for level 100.";
|
|
public static string LLevelMetBelow { get; set; } = "Current level is below met level.";
|
|
public static string LLevelMetGift { get; set; } = "Met Level does not match Mystery Gift level.";
|
|
public static string LLevelMetGiftFail { get; set; } = "Current Level below Mystery Gift level.";
|
|
public static string LLevelMetSane { get; set; } = "Current level is not below met level.";
|
|
|
|
public static string LMarkValueOutOfRange_0 { get; set; } = "Individual marking at index {0} is not within the allowed value range.";
|
|
public static string LMarkValueShouldBeZero { get; set; } = "Marking flags cannot be set.";
|
|
public static string LMarkValueUnusedBitsPresent { get; set; } = "Marking flags uses bits beyond the accessible range.";
|
|
|
|
public static string LMemoryArgBadCatch { get; set; } = "{0} Memory: {0} did not catch this.";
|
|
public static string LMemoryArgBadHatch { get; set; } = "{0} Memory: {0} did not hatch this.";
|
|
public static string LMemoryArgBadHT { get; set; } = "Memory: Can't have Handling Trainer Memory as Egg.";
|
|
public static string LMemoryArgBadID { get; set; } = "{0} Memory: Can't obtain Memory on {0} Version.";
|
|
public static string LMemoryArgBadItem { get; set; } = "{0} Memory: Species can't hold this item.";
|
|
public static string LMemoryArgBadLocation { get; set; } = "{0} Memory: Can't obtain Location on {0} Version.";
|
|
public static string LMemoryArgBadMove { get; set; } = "{0} Memory: Species can't learn this move.";
|
|
public static string LMemoryArgBadOTEgg { get; set; } = "{0} Memory: Link Trade is not a valid first memory.";
|
|
public static string LMemoryArgBadSpecies { get; set; } = "{0} Memory: Can't capture species in game.";
|
|
public static string LMemoryArgSpecies { get; set; } = "{0} Memory: Species can be captured in game.";
|
|
public static string LMemoryCleared { get; set; } = "Memory: Not cleared properly.";
|
|
public static string LMemoryF_0_Valid { get; set; } = "{0} Memory is valid.";
|
|
public static string LMemoryFeelInvalid { get; set; } = "{0} Memory: Invalid Feeling.";
|
|
public static string LMemoryHTFlagInvalid { get; set; } = "Untraded: Current handler should not be the Handling Trainer.";
|
|
public static string LMemoryHTGender { get; set; } = "HT Gender invalid: {0}";
|
|
public static string LMemoryHTLanguage { get; set; } = "HT Language is missing.";
|
|
|
|
public static string LMemoryIndexArgHT { get; set; } = "Should have a HT Memory TextVar value (somewhere).";
|
|
public static string LMemoryIndexFeel { get; set; } = "{0} Memory: Feeling should be index {1}.";
|
|
public static string LMemoryIndexFeelHT09 { get; set; } = "Should have a HT Memory Feeling value 0-9.";
|
|
public static string LMemoryIndexID { get; set; } = "{0} Memory: Should be index {1}.";
|
|
public static string LMemoryIndexIntensity { get; set; } = "{0} Memory: Intensity should be index {1}.";
|
|
public static string LMemoryIndexIntensityHT1 { get; set; } = "Should have a HT Memory Intensity value (1st).";
|
|
public static string LMemoryIndexIntensityMin { get; set; } = "{0} Memory: Intensity should be at least {1}.";
|
|
public static string LMemoryIndexLinkHT { get; set; } = "Should have a Link Trade HT Memory.";
|
|
public static string LMemoryIndexVar { get; set; } = "{0} Memory: TextVar should be index {1}.";
|
|
public static string LMemoryMissingHT { get; set; } = "Memory: Handling Trainer Memory missing.";
|
|
public static string LMemoryMissingOT { get; set; } = "Memory: Original Trainer Memory missing.";
|
|
|
|
public static string LMemorySocialZero { get; set; } = "Social Stat should be zero.";
|
|
public static string LMemorySocialTooHigh_0 { get; set; } = "Social Stat should be <= {0}";
|
|
|
|
public static string LMemoryStatAffectionHT0 { get; set; } = "Untraded: Handling Trainer Affection should be 0.";
|
|
public static string LMemoryStatAffectionOT0 { get; set; } = "OT Affection should be 0.";
|
|
public static string LMemoryStatFriendshipHT0 { get; set; } = "Untraded: Handling Trainer Friendship should be 0.";
|
|
public static string LMemoryStatFriendshipOTBaseEvent { get; set; } = "Event OT Friendship does not match base friendship.";
|
|
|
|
public static string LMemoryStatFullness { get; set; } = "Fullness should be {0}.";
|
|
public static string LMemoryStatEnjoyment { get; set; } = "Enjoyment should be {0}.";
|
|
|
|
public static string LMoveEggFIncompatible0_1 { get; set; } = "{0} Inherited Move. Incompatible with {1} inherited moves.";
|
|
public static string LMoveEggIncompatible { get; set; } = "Egg Move. Incompatible with event Egg moves.";
|
|
public static string LMoveEggIncompatibleEvent { get; set; } = "Event Egg Move. Incompatible with normal Egg moves.";
|
|
public static string LMoveEggInherited { get; set; } = "Inherited Egg move.";
|
|
public static string LMoveEggInheritedTutor { get; set; } = "Inherited tutor move.";
|
|
public static string LMoveEggInvalid { get; set; } = "Not an expected Egg move.";
|
|
public static string LMoveEggInvalidEvent { get; set; } = "Egg Move. Not expected in an event Egg.";
|
|
public static string LMoveEggInvalidEventLevelUp { get; set; } = "Inherited move learned by Level-up. Not expected in an event Egg.";
|
|
public static string LMoveEggInvalidEventLevelUpGift { get; set; } = "Inherited move learned by Level-up. Not expected in a gift Egg.";
|
|
public static string LMoveEggInvalidEventTMHM { get; set; } = "Inherited TM/HM move. Not expected in an event Egg.";
|
|
public static string LMoveEggInvalidEventTutor { get; set; } = "Inherited tutor move. Not expected in an event Egg.";
|
|
public static string LMoveEggLevelUp { get; set; } = "Inherited move learned by Level-up.";
|
|
public static string LMoveEggMissing { get; set; } = "Event Egg move missing.";
|
|
public static string LMoveEggMoveGift { get; set; } = "Egg Move. Not expected in a gift Egg.";
|
|
public static string LMoveEggTMHM { get; set; } = "Inherited TM/HM move.";
|
|
|
|
public static string LMoveEventEggLevelUp { get; set; } = "Inherited move learned by Level-up. Incompatible with event Egg moves.";
|
|
public static string LMoveEvoFCombination_0 { get; set; } = "Moves combinations is not compatible with {0} evolution.";
|
|
public static string LMoveEvoFHigher { get; set; } = "Incompatible evolution moves. {1} Move learned at a higher level than other {0} moves.";
|
|
public static string LMoveEvoFLower { get; set; } = "Incompatible evolution moves. {0} Move learned at a lower level than other {1} moves.";
|
|
public static string LMoveFDefault_0 { get; set; } = "Default move in Generation {0}.";
|
|
public static string LMoveFExpect_0 { get; set; } = "Expected the following Moves: {0}";
|
|
public static string LMoveFExpectSingle_0 { get; set; } = "Expected: {0}";
|
|
public static string LMoveFLevelUp_0 { get; set; } = "Learned by Level-up in Generation {0}.";
|
|
public static string LMoveFTMHM_0 { get; set; } = "Learned by TM/HM in Generation {0}.";
|
|
public static string LMoveFTutor_0 { get; set; } = "Learned by Move Tutor in Generation {0}.";
|
|
public static string LMoveKeldeoMismatch { get; set; } = "Keldeo Move/Form mismatch.";
|
|
public static string LMoveNincada { get; set; } = "Only one Ninjask move allowed.";
|
|
public static string LMoveNincadaEvo { get; set; } = "Learned by evolving Nincada into Ninjask.";
|
|
public static string LMoveNincadaEvoF_0 { get; set; } = "Learned by evolving Nincada into Ninjask in Generation {0}.";
|
|
public static string LMovePPTooHigh_0 { get; set; } = "Move {0} PP is above the amount allowed.";
|
|
public static string LMovePPUpsTooHigh_0 { get; set; } = "Move {0} PP Ups is above the amount allowed.";
|
|
public static string LMoveSourceShared { get; set; } = "Shared Non-Relearn Move.";
|
|
public static string LMoveSourceSharedF { get; set; } = "Shared Non-Relearn Move in Generation {0}.";
|
|
|
|
public static string LMoveRelearnDexNav { get; set; } = "Not an expected DexNav move.";
|
|
public static string LMoveRelearnUnderground { get; set; } = "Not an expected Underground egg move.";
|
|
public static string LMoveRelearnEgg { get; set; } = "Base Egg move.";
|
|
public static string LMoveRelearnEggMissing { get; set; } = "Base Egg move missing.";
|
|
public static string LMoveRelearnFExpect_0 { get; set; } = "Expected the following Relearn Moves: {0} ({1})";
|
|
public static string LMoveRelearnFMiss_0 { get; set; } = "Relearn Moves missing: {0}";
|
|
public static string LMoveRelearnInvalid { get; set; } = "Not an expected Relearnable move.";
|
|
public static string LMoveRelearnNone { get; set; } = "Expected no Relearn Move in slot.";
|
|
|
|
public static string LMoveShopAlphaMoveShouldBeMastered { get; set; } = "Alpha Move should be marked as mastered.";
|
|
public static string LMoveShopAlphaMoveShouldBeOther { get; set; } = "Alpha encounter cannot be found with this Alpha Move.";
|
|
public static string LMoveShopAlphaMoveShouldBeZero { get; set; } = "Only Alphas may have an Alpha Move set.";
|
|
public static string LMoveShopMasterInvalid_0 { get; set; } = "Cannot manually master {0}: not permitted to master.";
|
|
public static string LMoveShopMasterNotLearned_0 { get; set; } = "Cannot manually master {0}: not in possible learned level up moves.";
|
|
public static string LMoveShopPurchaseInvalid_0 { get; set; } = "Cannot purchase {0} from the move shop.";
|
|
|
|
public static string LMoveSourceDefault { get; set; } = "Default move.";
|
|
public static string LMoveSourceDuplicate { get; set; } = "Duplicate Move.";
|
|
public static string LMoveSourceEgg { get; set; } = "Egg Move.";
|
|
public static string LMoveSourceEggEvent { get; set; } = "Event Egg Move.";
|
|
public static string LMoveSourceEmpty { get; set; } = "Empty Move.";
|
|
public static string LMoveSourceInvalid { get; set; } = "Invalid Move.";
|
|
public static string LMoveSourceInvalidSketch { get; set; } = "Invalid Move (Sketch).";
|
|
public static string LMoveSourceLevelUp { get; set; } = "Learned by Level-up.";
|
|
public static string LMoveSourceRelearn { get; set; } = "Relearnable Move.";
|
|
public static string LMoveSourceSpecial { get; set; } = "Special Non-Relearn Move.";
|
|
public static string LMoveSourceTMHM { get; set; } = "Learned by TM/HM.";
|
|
public static string LMoveSourceTutor { get; set; } = "Learned by Move Tutor.";
|
|
public static string LMoveSourceTR { get; set; } = "Unexpected Technical Record Learned flag: {0}";
|
|
|
|
public static string LNickFlagEggNo { get; set; } = "Egg must be not nicknamed.";
|
|
public static string LNickFlagEggYes { get; set; } = "Egg must be nicknamed.";
|
|
public static string LNickInvalidChar { get; set; } = "Cannot be given this Nickname.";
|
|
public static string LNickLengthLong { get; set; } = "Nickname too long.";
|
|
public static string LNickLengthShort { get; set; } = "Nickname is empty.";
|
|
public static string LNickMatchLanguage { get; set; } = "Nickname matches species name.";
|
|
public static string LNickMatchLanguageEgg { get; set; } = "Egg matches language Egg name.";
|
|
public static string LNickMatchLanguageEggFail { get; set; } = "Egg name does not match language Egg name.";
|
|
public static string LNickMatchLanguageFail { get; set; } = "Nickname does not match species name.";
|
|
public static string LNickMatchLanguageFlag { get; set; } = "Nickname flagged, matches species name.";
|
|
public static string LNickMatchNoOthers { get; set; } = "Nickname does not match another species name.";
|
|
public static string LNickMatchNoOthersFail { get; set; } = "Nickname matches another species name (+language).";
|
|
|
|
public static string LOTLanguage { get; set; } = "Language ID should be {0}, not {1}.";
|
|
public static string LOTLong { get; set; } = "OT Name too long.";
|
|
public static string LOTShort { get; set; } = "OT Name too short.";
|
|
public static string LOTSuspicious { get; set; } = "Suspicious Original Trainer details.";
|
|
|
|
public static string LOT_IDEqual { get; set; } = "TID and SID are equal.";
|
|
public static string LOT_IDs0 { get; set; } = "TID and SID are 0.";
|
|
public static string LOT_SID0 { get; set; } = "SID is zero.";
|
|
public static string LOT_SID0Invalid { get; set; } = "SID should be 0.";
|
|
public static string LOT_TID0 { get; set; } = "TID is zero.";
|
|
public static string LOT_IDInvalid { get; set; } = "TID and SID combination is not possible.";
|
|
|
|
public static string LPIDEncryptWurmple { get; set; } = "Wurmple evolution Encryption Constant mismatch.";
|
|
public static string LPIDEncryptZero { get; set; } = "Encryption Constant is not set.";
|
|
public static string LPIDEqualsEC { get; set; } = "Encryption Constant matches PID.";
|
|
public static string LPIDGenderMatch { get; set; } = "Gender matches PID.";
|
|
public static string LPIDGenderMismatch { get; set; } = "PID-Gender mismatch.";
|
|
public static string LPIDNatureMatch { get; set; } = "Nature matches PID.";
|
|
public static string LPIDNatureMismatch { get; set; } = "PID-Nature mismatch.";
|
|
public static string LPIDTypeMismatch { get; set; } = "Encounter Type PID mismatch.";
|
|
public static string LPIDZero { get; set; } = "PID is not set.";
|
|
|
|
public static string LPokerusDaysTooHigh_0 { get; set; } = "Pokérus Days Remaining value is too high; expected <= {0}.";
|
|
public static string LPokerusStrainUnobtainable_0 { get; set; } = "Pokérus Strain {0} cannot be obtained.";
|
|
|
|
public static string LRibbonAllValid { get; set; } = "All ribbons accounted for.";
|
|
public static string LRibbonEgg { get; set; } = "Can't receive Ribbon(s) as an Egg.";
|
|
public static string LRibbonFInvalid_0 { get; set; } = "Invalid Ribbons: {0}";
|
|
public static string LRibbonFMissing_0 { get; set; } = "Missing Ribbons: {0}";
|
|
public static string LRibbonMarkingFInvalid_0 { get; set; } = "Invalid Marking: {0}";
|
|
public static string LRibbonMarkingAffixedF_0 { get; set; } = "Invalid Affixed Ribbon/Marking: {0}";
|
|
|
|
public static string LStatDynamaxInvalid { get; set; } = "Dynamax Level is not within the expected range.";
|
|
public static string LStatIncorrectHeight { get; set; } = "Calculated Height does not match stored value.";
|
|
public static string LStatIncorrectHeightCopy { get; set; } = "Copy Height does not match the original value.";
|
|
public static string LStatIncorrectHeightValue { get; set; } = "Height does not match the expected value.";
|
|
public static string LStatIncorrectWeight { get; set; } = "Calculated Weight does not match stored value.";
|
|
public static string LStatIncorrectWeightValue { get; set; } = "Weight does not match the expected value.";
|
|
public static string LStatInvalidHeightWeight { get; set; } = "Height / Weight values are statistically improbable.";
|
|
public static string LStatIncorrectCP { get; set; } = "Calculated CP does not match stored value.";
|
|
public static string LStatGigantamaxInvalid { get; set; } = "Gigantamax Flag mismatch.";
|
|
public static string LStatGigantamaxValid { get; set; } = "Gigantamax Flag was changed via Max Soup.";
|
|
public static string LStatNatureInvalid { get; set; } = "Stat Nature is not within the expected range.";
|
|
public static string LStatBattleVersionInvalid { get; set; } = "Battle Version is not within the expected range.";
|
|
public static string LStatNobleInvalid { get; set; } = "Noble Flag mismatch.";
|
|
public static string LStatAlphaInvalid { get; set; } = "Alpha Flag mismatch.";
|
|
|
|
public static string LSuperComplete { get; set; } = "Super Training complete flag mismatch.";
|
|
public static string LSuperDistro { get; set; } = "Distribution Super Training missions are not released.";
|
|
public static string LSuperEgg { get; set; } = "Can't Super Train an Egg.";
|
|
public static string LSuperNoComplete { get; set; } = "Can't have active Super Training complete flag for origins.";
|
|
public static string LSuperNoUnlocked { get; set; } = "Can't have active Super Training unlocked flag for origins.";
|
|
public static string LSuperUnavailable { get; set; } = "Super Training missions are not available in games visited.";
|
|
public static string LSuperUnused { get; set; } = "Unused Super Training Flag is flagged.";
|
|
|
|
public static string LTransferBad { get; set; } = "Incorrectly transferred from previous generation.";
|
|
|
|
public static string LTransferCurrentHandlerInvalid { get; set; } = "Invalid Current handler value, trainer details for save file expected another value.";
|
|
public static string LTransferEgg { get; set; } = "Can't transfer Eggs between Generations.";
|
|
public static string LTransferEggLocationTransporter { get; set; } = "Invalid Met Location, expected Poké Transfer.";
|
|
public static string LTransferEggMetLevel { get; set; } = "Invalid Met Level for transfer.";
|
|
public static string LTransferFlagIllegal { get; set; } = "Flagged as illegal by the game (glitch abuse).";
|
|
public static string LTransferHTFlagRequired { get; set; } = "Current handler cannot be past gen OT for transferred specimen.";
|
|
public static string LTransferHTMismatchName { get; set; } = "Handling trainer does not match the expected trainer name.";
|
|
public static string LTransferHTMismatchLanguage { get; set; } = "Handling trainer does not match the expected trainer language.";
|
|
public static string LTransferMet { get; set; } = "Invalid Met Location, expected Poké Transfer or Crown.";
|
|
public static string LTransferNotPossible { get; set; } = "Unable to transfer into current format from origin format.";
|
|
public static string LTransferMetLocation { get; set; } = "Invalid Transfer Met Location.";
|
|
public static string LTransferMove { get; set; } = "Incompatible transfer move.";
|
|
public static string LTransferMoveG4HM { get; set; } = "Defog and Whirlpool. One of the two moves should have been removed before transferred to Generation 5.";
|
|
public static string LTransferMoveHM { get; set; } = "Generation {0} HM. Should have been removed before transferred to Generation {1}.";
|
|
public static string LTransferNature { get; set; } = "Invalid Nature for transfer Experience.";
|
|
public static string LTransferOriginFInvalid0_1 { get; set; } = "{0} origin cannot exist in the currently loaded ({1}) save file.";
|
|
public static string LTransferPIDECBitFlip { get; set; } = "PID should be equal to EC [with top bit flipped]!";
|
|
public static string LTransferPIDECEquals { get; set; } = "PID should be equal to EC!";
|
|
public static string LTransferPIDECXor { get; set; } = "Encryption Constant matches shinyxored PID.";
|
|
public static string LTransferTrackerMissing { get; set; } = "Pokémon HOME Transfer Tracker is missing.";
|
|
public static string LTransferTrackerShouldBeZero { get; set; } = "Pokémon HOME Transfer Tracker should be 0.";
|
|
#endregion
|
|
|
|
}
|