2017-03-21 07:18:38 +00:00
|
|
|
|
// ReSharper disable AutoPropertyCanBeMadeGetOnly.Local
|
|
|
|
|
// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global
|
|
|
|
|
|
|
|
|
|
namespace PKHeX.Core
|
|
|
|
|
{
|
2017-03-24 17:59:45 +00:00
|
|
|
|
public static class LegalityCheckStrings
|
2017-03-21 07:18:38 +00:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
#region General Strings
|
|
|
|
|
|
|
|
|
|
/// <summary>Default text for indicating validity.</summary>
|
|
|
|
|
public static string V {get; set;} = "Valid.";
|
|
|
|
|
/// <summary>Default text for indicating legality.</summary>
|
|
|
|
|
public static string V193 {get; set;} = "Legal!";
|
|
|
|
|
/// <summary>Default text for indicating an error has occurred.</summary>
|
|
|
|
|
public static string V190 {get; set;} = "Internal error.";
|
|
|
|
|
/// <summary>Analysis not available for the <see cref="PKM"/></summary>
|
|
|
|
|
public static string V189 {get; set;} = "Analysis not available for this Pokémon.";
|
|
|
|
|
/// <summary>Format text for exporting a legality check result.</summary>
|
|
|
|
|
public static string V196 {get; set;} = "{0}: {1}";
|
2017-04-29 23:22:32 +00:00
|
|
|
|
/// <summary>Format text for exporting a legality check result for a Move.</summary>
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V191 {get; set;} = "{0} Move {1}: {2}";
|
2017-04-29 23:22:32 +00:00
|
|
|
|
/// <summary>Format text for exporting a legality check result for a Relearn Move.</summary>
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V192 {get; set;} = "{0} Relearn Move {1}: {2}";
|
|
|
|
|
/// <summary>Format text for exporting the type of Encounter that was matched for the the <see cref="PKM"/></summary>
|
|
|
|
|
public static string V195 {get; set;} = "Encounter Type: {0}";
|
2017-04-30 03:04:54 +00:00
|
|
|
|
/// <summary>Format text for exporting the <see cref="PIDIV.OriginSeed"/> that was matched for the the <see cref="PKM"/></summary>
|
|
|
|
|
public static string V248 {get; set;} = "Origin Seed: {0}";
|
|
|
|
|
/// <summary>Format text for exporting the <see cref="PIDIV.Type"/> that was matched for the the <see cref="PKM"/></summary>
|
|
|
|
|
public static string V249 {get; set;} = "PID Type: {0}";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
2017-03-25 23:38:40 +00:00
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Indeterminate"/></summary>
|
|
|
|
|
public static string V500 { get; set; } = "Indeterminate";
|
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Invalid"/></summary>
|
|
|
|
|
public static string V501 { get; set; } = "Invalid";
|
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Fishy"/></summary>
|
|
|
|
|
public static string V502 { get; set; } = "Fishy";
|
|
|
|
|
/// <summary>Severity string for <see cref="Severity.Valid"/></summary>
|
|
|
|
|
public static string V503 { get; set; } = "Valid";
|
|
|
|
|
/// <summary>Severity string for <see cref="Severity.NotImplemented"/></summary>
|
|
|
|
|
public static string V504 { get; set; } = "Not Implemented";
|
|
|
|
|
|
2017-03-21 07:18:38 +00:00
|
|
|
|
/// <summary>Original Trainer string used in various string formats such as Memories.</summary>
|
|
|
|
|
public static string V205 { get; set; } = "OT";
|
|
|
|
|
/// <summary>Handling Trainer string used in various string formats such as Memories.</summary>
|
|
|
|
|
public static string V206 { get; set; } = "HT";
|
|
|
|
|
|
|
|
|
|
public static string V167 { get; set; } = "Empty Move.";
|
|
|
|
|
public static string V171 { get; set; } = "Egg Move.";
|
|
|
|
|
public static string V172 { get; set; } = "Relearnable Move.";
|
|
|
|
|
public static string V173 { get; set; } = "Learned by TM/HM.";
|
|
|
|
|
public static string V174 { get; set; } = "Learned by Move Tutor.";
|
|
|
|
|
public static string V175 { get; set; } = "Special Non-Relearn Move.";
|
|
|
|
|
public static string V177 { get; set; } = "Learned by Level-up.";
|
2017-03-25 15:41:45 +00:00
|
|
|
|
public static string V330 { get; set; } = "Learned by Level-up in generation {0}.";
|
|
|
|
|
public static string V331 { get; set; } = "Learned by TM/HM in generation {0}.";
|
|
|
|
|
public static string V332 { get; set; } = "Learned by Move Tutor in generation {0}.";
|
|
|
|
|
public static string V333 { get; set; } = "Event Egg Move.";
|
2017-03-26 15:07:36 +00:00
|
|
|
|
public static string V344 { get; set; } = "Inherited egg move.";
|
|
|
|
|
public static string V345 { get; set; } = "Inherited move learned by Level-up.";
|
|
|
|
|
public static string V346 { get; set; } = "Inherited tutor move.";
|
|
|
|
|
public static string V349 { get; set; } = "Inherited TM/HM move.";
|
Shedinja evolution moves and some egg fixes (#1015)
* Add getMoves function with min level and max level, usefull for shedjina evolves moves (min level 20) and generation 1 moves ( no move reminder, min level is min encounter level + 1)
Also for gen1 encounters another function should be created to get by the encounter level the four moves that the pokemon learn by default, the last four in its movepool up until the encounter level
* getShedinjaEvolveMoves, function that return the moves that shedinja could learn from Ninjask move pool at the moment when Nincada evolves, in the same format that getValidMovesAllGens
* Add validation in parse moves for shedinja evolve moves.
Shedinja could have any gen3/4 moves from Ninjas learnset but only one is allowed
* Shedinja evolve moves text resources
* Fix egg moves pre-gen 6 validation:
Add skipoption variable to getEggMoves function from pre-gen6 games, to verify egg moves from split breed species
Flag illegal combinations of base egg moves and special egg moves
Return crystal egg moves for gen2 pokemon that can be tradeback to gen 1 games
* Fix for mix between event egg moves and base egg moves
* Changes just to make if there is only shedinja evolve move that is also the only base egg move change it from base egg move to evolve move, to avoid flag illegal if also the pokemon have a special egg move
* Revert "Changes just to make if there is only shedinja evolve move that is also the only base egg move change it from base egg move to evolve move, to avoid flag illegal if also the pokemon have a special egg move"
Revert the last change, i search in bulbapedia an there wasn't any nincada distributed with special moves in generation 3 nor 4, making this complicated validation unnecessary
This reverts commit 57f5ac1bbb75e32e417b575619339cae5e5d1ef2.
* Fix error
2017-04-01 00:40:30 +00:00
|
|
|
|
public static string V355 { get; set; } = "Learned by evolving Nincada into Ninjask.";
|
|
|
|
|
public static string V356 { get; set; } = "Learned by evolving Nincada into Ninjask in generation {0}.";
|
Gen 1 move analysis improvement. Adapted the valid moves to take into account that move deleter and move reminder do not exits in generation 1 (#1037)
* Fix getMoves with min level, when SkipWhile and TakeWhile is used together the index i in TakeWhile is calculated from the enumerator that results of the SkipWhile function, not the index of the initial array, those giving an incorrect index to check Levels array in the TakeWhile
* Fix getMoves when levelmin or levelmax is above max level in the levels array, TakeWhile and SkipWhile return empty list if the while goes beyond the last element of the array
* Include player hatched egg in the list of possible encounters for parseMoves only if the pokemon was an egg
Also change the valur of WasEgg for gen1,2,3 pokemon if the encounter analyzed is not an egg
add the non egg encounters to the list instead of checking the non-egg encounter inside parseMovesWasEggPreRelearn
* Fix for gen3 egg encounters
Remove non-egg encounters without special moves if there is an egg encounter because egg encounter already cover every possible move combination
Do not add daycare egg encounter for gen3 unhatched egg if there is another encounter, that means is an event or gift egg, not a daycare egg
Remove duplicate encounters
* Gift egg should not allow inherited moves even it they dont have special moves
Those gift eggs are hatched only with the species base moves
* Added getEncounterMoves functions, to be used for generation 1 encounters to find what moves have a pokemon at the moment of being caught because there is no move reminder in generation 1
* Added GBEncounterData, structure for refactor the tuples used in generation 1 and 2 encounters
* Add LevelMin and LevelMax to IEncounterable to get the encounter moves by the min level of the generation 1 EncounterLink
Add iGeneration to difference generation 1 and generation 2 encounters for GB Era pokemon
* Mark generation in gen 1 and 2 encounters
There is no need to mark the generation in gen 3 to 7 encounters because in that generations it match the pokemon generation number
* Add min level for generation 1 moves in getMoves functions
Add function to return the default moves for a GB encounters, for generation 1 games that included both moves from level up table and level 1 moves from personal table
Fix getMoves with min level when the moves list is empty, like Raichu generation 1
* Add maxSpecies to getBaseSpecies function for gen1 pokemon with a gen2 egg encounter
Refactor VC Encounter changing Tuples for GBData class
* Fixed for gen 2 Checks
Also do not search for generation1 encounter if the gen2 pokemon have met location from crystal
* Fix VC wild encounters, should be stored as array or else other verifyEncounter functions wont work
* Add generation 1 parse moves function including default moves
* Clean-up get encounters
* Verify empty moves for generation 1 encounters, in generation 1 does not exits move deleter
That means when a move slot have been used by a level up move or a TM/HM/Tutor move it cant be empty again
Does not apply if generation 2 tradeback is allowed, in generation 2 there is a move deleter
* Added two edge cases for pokemon that learn in red/blue and yellow different moves at the same level, this combinations can not exits until a later level when they learn again one of the levels in the other game, only happen for flareon and vaporeon
* Check incompatible moves between evolution species, it is for species that learn a move in a level as an evolved species and a move at a upper level as a preevolution
Also added most edge cases for the min slots used for generation 1 games, i think every weird combination is already covered
* Fix gen 1 eevee and evolutions move checks
* Cleanup
* Move the code to change valid moves for generation 1 to a function
* Fix getMoveMinLevelGBEncounter
* getUsedMoveSlots, removed wild Butterfree edge case, it is not possible
* Filter the min level of the encounter by the possible games the pokemon could be originated, yellow pikachu and kadabra can be detected
2017-04-09 00:17:20 +00:00
|
|
|
|
public static string V361 { get; set; } = "Default move.";
|
|
|
|
|
public static string V362 { get; set; } = "Default move in generation {0}.";
|
2017-04-10 22:59:16 +00:00
|
|
|
|
public static string V372 { get; set; } = "{0} Berry";
|
Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083)
* Ignore relearn level 2-100 moves from Phione
* Cave encounter types DPPt
* Generation 4 EncounterType filter and validation
Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters
Generation 4 roaaming static encounters have been splitted in two, grass and surf
* Added new legality texts
* Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible
Moved unreleased DP locations to valid Platinum locations only
* Improved generation 3 special egg check.
Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg
because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output
* Clean up
* Fix gen 5 pokemon from issue #1011
Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead
Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality
* Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis
* Do not make wild encounters prevail static encounter if the pokemon was an egg
* Changed type of WildEncounter variable to EncounterSlot[]
* Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 18:49:49 +00:00
|
|
|
|
public static string V380 { get; set; } = "Encounter Type match encounter.";
|
|
|
|
|
public static string V382 { get; set; } = "Encounter Type not implemented for pokemon encounter.";
|
Generation 1 and 2 legal Improvements (#1099)
* Refactor parseMovesForEncounter to gather valid moves for species encounter, some Pokemon can have valid encounters with different source species from the encounter, the valid moves change if the encounter species change because some preevolutions moves are illegal if pokemon caught already evolved.
Example, generation 1 Pikachu that can have a RBY Pikachu encounter and GSC Pichu encounter, the valid moves for the first encounters should not have any Pichu exclusive evolution moves
Also assign the encounter match from gb when parsing moves like the variable Encounter Match, to store the encounter that is valid for the pokemon moves instead the first encounter.
Store the species encounter, this will be needed to check if the evolution is valid for species that evolve leveling with a given learned move
* Add Tradeback Status to the pokemon, this variable for generations 1 and 2 use data like the catch rate to determine if trade between generations 1 and 2 was possible.
If analysis is for VC games tradeback have value NotTradeback for every gen 1 pokemon, but for cart saves some pokemon can be determine that have not been tradeback, if catch rate match species catch rate but do not match a valid generation 2 held item that means the pokemon habe been never traded to generation 2 games, that allow to discart encounters and moves from generation 2.
Also if is not tradeback catch rate is used to filter encounters, catch rate determine in what species was captured the pokemon discarting some preevolutions moves
Also add option for generation 1 cart save analysis to check legal status not allowing generation 2 games, like VC games but with Stadium allowed, like the generation 1 non tradeback rules from Smogon
Also change evolution chains to included generation 2 preevolutions for gen 1 pokemon if tradeback was possible, it is needed to avoid parsemoves to check illegal pokemon like Hitmonchan with Tyrogue level up moves
* Check legal values of generation 1 type and catch rate
Replace pokemon catch rate after changind pokemon species always if pokemon was not tradeback from generation 2, the catch rate will keep unchanged only if it can be a held item and do not match species catch rate (default item)
Also if catch rate is changed use base species catch rate to avoid legal errors if the catch rate of the evolution species if is not possible with the current moves
* Filter ingame trades and static encounters with catch rate for generation 1 non tradeback
* Fix min moves for generation 1 metapod encounter
* Clean up
* Fix encounter level for generation 1, valid moves are those with one level after the encounter level, pokemon can not learn a new move until level up
Clean up type validation
Fix generation 3 fatefull encounter eggs, the pokemon lost the fatefull mark when it hatch
* Clean-up
* Use new variable EncounterSpecies when it is needed to detect the species of the encounter, the old code wont work if the encounter is a wild slots array
* Fix generation 1 evolution chains and catch rate as default held item
* Fix Generation 1 Yellow Pikachu and Kadabra catch rates
2017-04-27 04:27:59 +00:00
|
|
|
|
public static string V391 { get; set; } = "Porygon with valid Type A and B values.";
|
|
|
|
|
public static string V392 { get; set; } = "Valid Type A, match species type.";
|
|
|
|
|
public static string V393 { get; set; } = "Valid Type B, match species type.";
|
|
|
|
|
public static string V394 { get; set; } = "Catch rate match a valid held item from generation 2";
|
|
|
|
|
public static string V398 { get; set; } = "Catch Rate match a species from pokemon evolution chain.";
|
Encounter Type fix and detection of pokemon that should have evolve on trade (#1105)
* Detect encounter trades that evolve on trade and have not been evolved
Detect generation 1 pokemon with special catch rates : krabby trade and Pokemon Stadium
Detect generation 1 pokemon that evolve on trade and have been traded but not evolved
Detect pokemon with tradeback status any but with only encounters from the other GB generation, that means they are WasTradeback
Detect pokemon with moves from the other GB generation, change tradebackstatus to WasTradeback
* Fix dppt surfing and fishing encounter type, is is surfing because the battle background is the same as other surfingfishing encounters
Fix headbutt encounter type, the encounter type depends on the battle background used when battle a pokemon, for headbutt it changes with the player tile, is the player is in a city it will be building encounter, in a grass tile tall grass, in water it is surfingfishing and cave inside a cave. Some locations have more than one possible encounter type, for example routes with trees near the grass, near the water and near non-combat tiles.
Also added slot type headbutt special for the special trees, those trees are all in routes and are only adjacent to non-combat tiles
* Fix encounter type for missing areas with multiple grass encounters types: Mt Coronet, Mt Silver Cave and Stark Mountain (Issue # 1095)
* Fixes and typos
* Check for non-japanese e-reader pokemon, is unreleased
2017-05-01 15:07:20 +00:00
|
|
|
|
public static string V403 { get; set; } = "Valid International Stadium OT.";
|
|
|
|
|
public static string V404 { get; set; } = "Valid Japanese Stadium OT.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region Legality Check Result Strings
|
|
|
|
|
|
|
|
|
|
public static string V203 {get; set;} = "Genderless Pokémon should not have a gender.";
|
|
|
|
|
public static string V201 {get; set;} = "Encryption Constant is not set.";
|
|
|
|
|
public static string V204 {get; set;} = "Held item is unreleased.";
|
|
|
|
|
|
|
|
|
|
public static string V187 {get; set;} = "Species does not exist in origin game.";
|
|
|
|
|
public static string V188 {get; set;} = "Fateful Encounter with no matching Encounter. Has the Mystery Gift data been contributed?";
|
2017-05-18 04:50:52 +00:00
|
|
|
|
public static string V194 {get; set;} = "Ingame Trade for Sun/Moon not implemented."; // Valid
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
2017-04-08 00:45:22 +00:00
|
|
|
|
public static string V250 {get; set;} = "Gender matches PID.";
|
|
|
|
|
public static string V251 {get; set;} = "PID-Gender mismatch.";
|
|
|
|
|
public static string V252 {get; set;} = "Nature matches PID.";
|
|
|
|
|
public static string V253 {get; set;} = "PID-Nature mismatch.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V207 {get; set;} = "PID is not set.";
|
|
|
|
|
public static string V208 {get; set;} = "Encryption Constant matches PID.";
|
|
|
|
|
public static string V209 {get; set;} = "Static Encounter shiny mismatch.";
|
|
|
|
|
public static string V210 {get; set;} = "Wurmple evolution Encryption Constant mismatch.";
|
|
|
|
|
public static string V211 {get; set;} = "Encryption Constant matches shinyxored PID.";
|
|
|
|
|
public static string V212 {get; set;} = "Wurmple Evolution: {0}";
|
|
|
|
|
public static string V215 {get; set;} = "PID should be equal to EC [with top bit flipped]!";
|
|
|
|
|
public static string V216 {get; set;} = "PID should be equal to EC!";
|
2017-04-02 13:39:39 +00:00
|
|
|
|
public static string V220 {get; set;} = "N's Pokemon cannot be shiny.";
|
|
|
|
|
public static string V221 {get; set;} = "Hidden Grotto captures cannot be shiny.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
|
|
|
|
public static string V14 {get; set;} = "Egg matches language Egg name."; // Valid
|
|
|
|
|
public static string V17 {get; set;} = "Nickname does not match another species name."; // Valid
|
|
|
|
|
public static string V18 {get; set;} = "Nickname matches species name."; // Valid
|
|
|
|
|
public static string V19 {get; set;} = "Nickname matches demo language name."; // Valid
|
|
|
|
|
public static string V11 {get; set;} = "Ingame Trade OT and Nickname have not been altered."; // Valid
|
|
|
|
|
public static string V1 {get; set;} = "Nickname too long."; // Invalid
|
|
|
|
|
public static string V2 {get; set;} = "Nickname is empty."; // Invalid
|
|
|
|
|
public static string V4 {get; set;} = "Language ID > 8."; // Invalid
|
|
|
|
|
public static string V5 {get; set;} = "Language ID > 10."; // Invalid
|
2017-04-04 03:02:40 +00:00
|
|
|
|
public static string V222 { get; set; } = "Cannot be given this Nickname."; // Invalid
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V3 {get; set;} = "Species index invalid for Nickname comparison."; // Invalid
|
|
|
|
|
public static string V20 {get; set;} = "Nickname does not match species name."; // Invalid
|
|
|
|
|
public static string V13 {get; set;} = "Egg name does not match language Egg name."; // Invalid
|
2017-05-10 04:11:13 +00:00
|
|
|
|
public static string V12 {get; set;} = "Egg must be nicknamed."; // Invalid
|
|
|
|
|
public static string V224 {get; set;} = "Egg must be not nicknamed."; // Invalid
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V7 {get; set;} = "Ingame Trade invalid version?"; // Invalid
|
|
|
|
|
public static string V8 {get; set;} = "Ingame Trade invalid index?"; // Invalid
|
|
|
|
|
public static string V10 {get; set;} = "Ingame Trade OT has been altered."; // Invalid
|
|
|
|
|
public static string V9 {get; set;} = "Ingame Trade Nickname has been altered."; // Fishy
|
|
|
|
|
public static string V15 {get; set;} = "Nickname matches another species name (+language)."; // Fishy
|
|
|
|
|
public static string V16 {get; set;} = "Nickname flagged, matches species name."; // Fishy
|
2017-04-09 23:38:29 +00:00
|
|
|
|
public static string V0 {get; set;} = "Event gift has been nicknamed."; // Fishy
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
|
|
|
|
public static string V21 {get; set;} = "Matches: {0} {1}"; // Valid
|
|
|
|
|
|
|
|
|
|
public static string V25 {get; set;} = "EV total cannot be above 510."; // Invalid
|
|
|
|
|
public static string V22 {get; set;} = "Eggs cannot receive EVs."; // Invalid
|
|
|
|
|
public static string V23 {get; set;} = "All EVs are zero, but leveled above Met Level."; // Fishy
|
|
|
|
|
public static string V24 {get; set;} = "2 EVs remaining."; // Fishy
|
|
|
|
|
public static string V26 {get; set;} = "EVs cannot go above 252."; // Invalid
|
|
|
|
|
public static string V27 {get; set;} = "EVs are all equal."; // Fishy
|
|
|
|
|
public static string V31 {get; set;} = "All IVs are 0."; // Fishy
|
|
|
|
|
public static string V32 {get; set;} = "All IVs are equal."; // Fishy
|
2017-04-02 13:39:39 +00:00
|
|
|
|
public static string V218 {get; set;} = "All IVs of N's Pokemon should be 30."; // Invalid
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
2017-03-25 20:53:33 +00:00
|
|
|
|
public static string V28 {get; set;} = "Should have at least {0} IVs = 31."; // Invalid
|
2017-03-23 03:12:45 +00:00
|
|
|
|
public static string V29 {get; set;} = "Friend Safari captures should have at least 2 IVs = 31."; // Invalid
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V30 {get; set;} = "IVs do not match Mystery Gift Data."; // Invalid
|
|
|
|
|
|
|
|
|
|
public static string V38 {get; set;} = "OT Name too long."; // Invalid
|
|
|
|
|
public static string V39 {get; set;} = "Incorrect RBY event OT Name."; // Invalid
|
|
|
|
|
public static string V34 {get; set;} = "SID should be 0."; // Invalid
|
2017-04-02 13:39:39 +00:00
|
|
|
|
public static string V219 {get; set;} = "The Name/TID/SID of N is incorrect."; // Invalid
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V33 {get; set;} = "TID and SID are 0."; // Fishy
|
|
|
|
|
public static string V35 {get; set;} = "TID and SID are equal."; // Fishy
|
|
|
|
|
public static string V36 {get; set;} = "TID is zero."; // Fishy
|
|
|
|
|
public static string V37 {get; set;} = "SID is zero."; // Fishy
|
|
|
|
|
|
|
|
|
|
public static string V40 {get; set;} = "Can't Hyper Train a pokemon that isn't level 100."; // Invalid
|
|
|
|
|
public static string V41 {get; set;} = "Can't Hyper Train a pokemon with perfect IVs."; // Invalid
|
|
|
|
|
public static string V42 {get; set;} = "Can't Hyper Train a perfect IV."; // Invalid
|
|
|
|
|
|
|
|
|
|
public static string V49 {get; set;} = "Valid Pokémon Link gift."; // Valid
|
|
|
|
|
public static string V47 {get; set;} = "Pokémon Link gift Shiny mismatch."; // Invalid
|
|
|
|
|
public static string V48 {get; set;} = "Pokémon Link gift should not be Fateful Encounter."; // Invalid
|
|
|
|
|
public static string V43 {get; set;} = "Can't find matching Pokémon Link gift."; // Invalid
|
|
|
|
|
public static string V44 {get; set;} = "Can't obtain this Pokémon Link gift in XY."; // Invalid
|
|
|
|
|
public static string V45 {get; set;} = "Can't obtain this Pokémon Link gift in ORAS."; // Invalid
|
|
|
|
|
public static string V46 {get; set;} = "Can't obtain this Pokémon Link gift in SM."; // Invalid
|
|
|
|
|
|
|
|
|
|
public static string V63 {get; set;} = "Valid un-hatched egg."; // Valid
|
|
|
|
|
public static string V53 {get; set;} = "Able to hatch an egg at Met Location."; // Valid
|
|
|
|
|
public static string V56 {get; set;} = "Able to hatch a traded egg at Met Location.";
|
|
|
|
|
public static string V54 {get; set;} = "Can't hatch an egg at Met Location."; // Invalid
|
|
|
|
|
public static string V55 {get; set;} = "Can't obtain egg from Egg Location."; // Invalid
|
|
|
|
|
public static string V57 {get; set;} = "Can't transfer eggs between generations."; // Invalid
|
|
|
|
|
public static string V50 {get; set;} = "Can't obtain egg for this species."; // Invalid
|
|
|
|
|
public static string V51 {get; set;} = "Invalid Met Location for hatched egg."; // Invalid
|
|
|
|
|
public static string V52 {get; set;} = "Invalid Met Level, expected {0}."; // Invalid
|
|
|
|
|
public static string V58 {get; set;} = "Invalid Met Level for transfer."; // Invalid
|
|
|
|
|
public static string V59 {get; set;} = "Invalid Egg Location, expected none."; // Invalid
|
|
|
|
|
public static string V60 {get; set;} = "Invalid Met Location, expected Pal Park."; // Invalid
|
|
|
|
|
public static string V61 {get; set;} = "Invalid Met Location, expected Transporter."; // Invalid
|
|
|
|
|
public static string V62 {get; set;} = "Invalid Egg Location, shouldn't be 'traded' while an egg."; // Invalid
|
|
|
|
|
|
|
|
|
|
public static string V66 {get; set;} = "Valid Friend Safari encounter."; // Valid
|
|
|
|
|
public static string V64 {get; set;} = "Friend Safari: Not valid color."; // Florges
|
|
|
|
|
public static string V6 {get; set;} = "Friend Safari: Not average sized."; // Pumpkaboo
|
|
|
|
|
public static string V65 {get; set;} = "Friend Safari: Not Spring form."; // Sawsbuck
|
|
|
|
|
|
|
|
|
|
public static string V67 {get; set;} = "Valid Wild Encounter at location (Pressure/Hustle/Vital Spirit).";
|
|
|
|
|
public static string V68 {get; set;} = "Valid Wild Encounter at location.";
|
|
|
|
|
public static string V69 {get; set;} = "Valid Wild Encounter at location (White Flute & Pressure/Hustle/Vital Spirit).";
|
|
|
|
|
public static string V70 {get; set;} = "Valid Wild Encounter at location (White Flute).";
|
|
|
|
|
public static string V71 {get; set;} = "Valid Wild Encounter at location (Black Flute & Pressure/Hustle/Vital Spirit).";
|
|
|
|
|
public static string V72 {get; set;} = "Valid Wild Encounter at location (Black Flute).";
|
|
|
|
|
public static string V73 {get; set;} = "Valid Wild Encounter at location (DexNav).";
|
|
|
|
|
|
|
|
|
|
public static string V76 {get; set;} = "Valid ingame trade.";
|
|
|
|
|
public static string V75 {get; set;} = "Valid gift/static encounter."; // Valid
|
|
|
|
|
public static string V74 {get; set;} = "Static encounter relearn move mismatch.";
|
|
|
|
|
|
|
|
|
|
public static string V77 {get; set;} = "Can't obtain Species from Virtual Console games."; // Invalid
|
|
|
|
|
public static string V79 {get; set;} = "Can't obtain Special encounter in Virtual Console games."; // Invalid
|
|
|
|
|
public static string V78 {get; set;} = "Unable to match to a Mystery Gift in the database."; // Invalid
|
|
|
|
|
public static string V80 {get; set;} = "Unable to match an encounter from origin game."; // Invalid
|
|
|
|
|
public static string V81 {get; set;} = "Invalid Transfer Met Location."; // Invalid
|
|
|
|
|
public static string V82 {get; set;} = "Mewtwo cannot be transferred while knowing Pay Day."; // Invalid
|
|
|
|
|
|
|
|
|
|
public static string V88 {get; set;} = "Current level is not below met level.";
|
|
|
|
|
public static string V83 {get; set;} = "Met Level does not match Mystery Gift level.";
|
|
|
|
|
public static string V84 {get; set;} = "Current Level below Mystery Gift level.";
|
|
|
|
|
public static string V85 {get; set;} = "Current level is below met level.";
|
|
|
|
|
public static string V86 {get; set;} = "Evolution not valid (or level/trade evolution unsatisfied).";
|
|
|
|
|
public static string V87 {get; set;} = "Current experience matches level threshold."; // Fishy
|
|
|
|
|
|
|
|
|
|
public static string V89 {get; set;} = "Can't Super Train an egg."; // Invalid
|
|
|
|
|
public static string V90 {get; set;} = "Super Training missions are not available in games visited.";
|
|
|
|
|
public static string V91 {get; set;} = "Can't have active Super Training unlocked flag for origins.";
|
|
|
|
|
public static string V92 {get; set;} = "Can't have active Super Training complete flag for origins.";
|
|
|
|
|
public static string V93 {get; set;} = "Super Training complete flag mismatch.";
|
|
|
|
|
public static string V94 {get; set;} = "Distribution Super Training missions are not released."; // Fishy
|
2017-04-15 19:22:29 +00:00
|
|
|
|
public static string V98 {get; set;} = "Unused Super Training Flag is flagged.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
|
|
|
|
public static string V95 {get; set;} = "Can't receive Ribbon(s) as an egg.";
|
|
|
|
|
public static string V96 {get; set;} = "GBA Champion Ribbon";
|
|
|
|
|
public static string V97 {get; set;} = "Artist Ribbon";
|
|
|
|
|
public static string V99 {get; set;} = "Sinnoh Champion Ribbon";
|
|
|
|
|
public static string V100 {get; set;} = "Legend Ribbon";
|
|
|
|
|
public static string V104 {get; set;} = "Record Ribbon";
|
|
|
|
|
public static string V101 {get; set;} = "Missing Ribbons: {0}";
|
|
|
|
|
public static string V102 {get; set;} = "Invalid Ribbons: {0}";
|
|
|
|
|
public static string V103 {get; set;} = "All ribbons accounted for.";
|
|
|
|
|
public static string V105 {get; set;} = "Battle Memory Ribbon";
|
|
|
|
|
public static string V106 {get; set;} = "Contest Memory Ribbon";
|
|
|
|
|
|
|
|
|
|
public static string V107 {get; set;} = "Ability is not valid for species/form.";
|
|
|
|
|
public static string V108 {get; set;} = "Hidden Ability mismatch for encounter type.";
|
2017-04-10 04:59:44 +00:00
|
|
|
|
public static string V223 {get; set;} = "Ability mismatch for encounter.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V109 {get; set;} = "Ability modified with Ability Capsule.";
|
|
|
|
|
public static string V110 {get; set;} = "Ability does not match Mystery Gift.";
|
|
|
|
|
public static string V111 {get; set;} = "Hidden Ability on non-SOS wild encounter.";
|
2017-03-23 03:12:45 +00:00
|
|
|
|
public static string V300 {get; set;} = "Hidden Ability on non-horde/friend safari wild encounter.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V112 {get; set;} = "Hidden Ability not available.";
|
2017-03-22 23:47:14 +00:00
|
|
|
|
public static string V217 {get; set;} = "Hidden Grotto captures should have Hidden Ability.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
|
|
|
|
|
public static string V115 {get; set;} = "Ability matches ability number."; // Valid
|
|
|
|
|
public static string V113 {get; set;} = "Ability does not match PID.";
|
|
|
|
|
public static string V114 {get; set;} = "Ability does not match ability number.";
|
|
|
|
|
|
|
|
|
|
public static string V119 {get; set;} = "Correct ball for encounter type.";
|
|
|
|
|
public static string V118 {get; set;} = "Can't have ball for encounter type.";
|
|
|
|
|
public static string V116 {get; set;} = "Can't have Heavy Ball for light, low-catch rate species (Gen VII).";
|
|
|
|
|
public static string V117 {get; set;} = "Can't have Master Ball for regular egg.";
|
|
|
|
|
public static string V120 {get; set;} = "Can't have Cherish Ball for regular egg.";
|
|
|
|
|
public static string V121 {get; set;} = "Can't obtain species in Ball.";
|
|
|
|
|
public static string V122 {get; set;} = "Can't obtain Hidden Ability with Ball.";
|
|
|
|
|
public static string V123 {get; set;} = "Ball possible for species.";
|
|
|
|
|
public static string V125 {get; set;} = "No check satisfied, assuming illegal.";
|
|
|
|
|
public static string V126 {get; set;} = "Ball unobtainable in origin generation.";
|
|
|
|
|
|
|
|
|
|
public static string V145 {get; set;} = "History block is valid.";
|
|
|
|
|
public static string V155 {get; set;} = "{0} Memory is valid.";
|
|
|
|
|
|
|
|
|
|
public static string V127 {get; set;} = "Skipped History check due to other check being invalid.";
|
|
|
|
|
public static string V128 {get; set;} = "No History Block to check.";
|
|
|
|
|
public static string V129 {get; set;} = "OT Affection should be 0.";
|
|
|
|
|
public static string V130 {get; set;} = "Can't have any OT Memory.";
|
|
|
|
|
public static string V124 {get; set;} = "Current handler cannot be past gen OT for transferred specimen.";
|
|
|
|
|
public static string V131 {get; set;} = "HT Gender invalid: {0}";
|
|
|
|
|
public static string V132 {get; set;} = "Event OT Friendship does not match base friendship.";
|
|
|
|
|
public static string V133 {get; set;} = "Event OT Affection should be zero.";
|
|
|
|
|
public static string V134 {get; set;} = "Current handler should not be Event OT.";
|
|
|
|
|
public static string V138 {get; set;} = "Contest Stats should be 0.";
|
2017-03-23 03:12:45 +00:00
|
|
|
|
public static string V301 {get; set;} = "Invalid Console Region.";
|
|
|
|
|
public static string V302 {get; set;} = "Geolocation: Country is not in 3DS region.";
|
|
|
|
|
public static string V303 {get; set;} = "Geolocation: Country is in 3DS region.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V137 {get; set;} = "GeoLocation Memory: Memories should be present.";
|
|
|
|
|
public static string V135 {get; set;} = "GeoLocation Memory: Gap/Blank present.";
|
|
|
|
|
public static string V136 {get; set;} = "GeoLocation Memory: Region without Country.";
|
|
|
|
|
public static string V146 {get; set;} = "GeoLocation Memory: HT Name present but has no previous Country.";
|
|
|
|
|
public static string V147 {get; set;} = "GeoLocation Memory: Previous country of residence present with no Handling Trainer.";
|
|
|
|
|
public static string V139 {get; set;} = "Untraded: Current handler should not be the Handling Trainer.";
|
|
|
|
|
public static string V140 {get; set;} = "Untraded: Handling Trainer Friendship should be 0.";
|
|
|
|
|
public static string V141 {get; set;} = "Untraded: Handling Trainer Affection should be 0.";
|
|
|
|
|
public static string V142 {get; set;} = "Untraded: Requires a trade evolution.";
|
|
|
|
|
public static string V143 {get; set;} = "Untraded: Beauty is not high enough for Level-up Evolution.";
|
|
|
|
|
public static string V144 {get; set;} = "Untraded: Beauty is high enough but still Level 1.";
|
|
|
|
|
public static string V148 {get; set;} = "Memory: Handling Trainer Memory present with no Handling Trainer name.";
|
|
|
|
|
public static string V150 {get; set;} = "Memory: Handling Trainer Memory missing.";
|
|
|
|
|
public static string V152 {get; set;} = "Memory: Original Trainer Memory missing.";
|
2017-03-23 03:12:45 +00:00
|
|
|
|
public static string V329 {get; set;} = "Memory: Not cleared properly.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
public static string V149 {get; set;} = "Memory: Can't have Handling Trainer Memory as egg.";
|
|
|
|
|
public static string V151 {get; set;} = "Memory: Can't have Original Trainer Memory as egg.";
|
|
|
|
|
public static string V164 {get; set;} = "{0} Memory: Species can be captured in game.";
|
|
|
|
|
public static string V153 {get; set;} = "{0} Memory: Species can't learn this move.";
|
|
|
|
|
public static string V154 {get; set;} = "{0} Memory: Location doesn't have a Pokemon Center.";
|
|
|
|
|
public static string V160 {get; set;} = "{0} Memory: {0} did not hatch this.";
|
|
|
|
|
public static string V202 {get; set;} = "{0} Memory: {0} did not catch this.";
|
|
|
|
|
public static string V161 {get; set;} = "{0} Memory: Link Trade is not a valid first memory.";
|
|
|
|
|
public static string V162 {get; set;} = "{0} Memory: Can't obtain Location on {0} Version.";
|
|
|
|
|
public static string V163 {get; set;} = "{0} Memory: Can't obtain Memory on {0} Version.";
|
|
|
|
|
public static string V165 {get; set;} = "{0} Memory: Can't capture species in game.";
|
|
|
|
|
public static string V197 {get; set;} = "{0} Memory: Should be index {1}.";
|
|
|
|
|
public static string V198 {get; set;} = "{0} Memory: Intensity should be index {1}.";
|
|
|
|
|
public static string V199 {get; set;} = "{0} Memory: TextVar should be index {1}.";
|
|
|
|
|
public static string V200 {get; set;} = "{0} Memory: Feeling should be index {1}.";
|
|
|
|
|
|
|
|
|
|
public static string V168 {get; set;} = "Duplicate Move.";
|
|
|
|
|
public static string V176 {get; set;} = "Invalid Move.";
|
|
|
|
|
public static string V166 {get; set;} = "Invalid Move (Sketch).";
|
|
|
|
|
public static string V169 {get; set;} = "Keldeo Move/Form mismatch.";
|
|
|
|
|
public static string V181 {get; set;} = "Expected the following Relearn Moves: {0}";
|
|
|
|
|
public static string V170 {get; set;} = "Relearn Moves missing: {0}";
|
|
|
|
|
public static string V178 {get; set;} = "Expected: {0}.";
|
|
|
|
|
|
|
|
|
|
public static string V179 {get; set;} = "Base egg move.";
|
|
|
|
|
public static string V180 {get; set;} = "Base egg move missing.";
|
|
|
|
|
public static string V182 {get; set;} = "Not an expected Relearnable move.";
|
|
|
|
|
public static string V183 {get; set;} = "Not an expected DexNav move.";
|
|
|
|
|
public static string V184 {get; set;} = "Expected no Relearn Move in slot.";
|
|
|
|
|
public static string V185 {get; set;} = "Egg Moves Source: {0}.";
|
|
|
|
|
public static string V186 {get; set;} = "Egg Move set check unimplemented.";
|
|
|
|
|
public static string V156 {get; set;} = "Should have a Link Trade HT Memory.";
|
|
|
|
|
public static string V157 {get; set;} = "Should have a HT Memory TextVar value (somewhere).";
|
|
|
|
|
public static string V158 {get; set;} = "Should have a HT Memory Intensity value (1st).";
|
|
|
|
|
public static string V159 {get; set;} = "Should have a HT Memory Feeling value 0-9.";
|
|
|
|
|
|
2017-03-23 03:12:45 +00:00
|
|
|
|
public static string V318 {get; set;} = "Form is Valid.";
|
|
|
|
|
public static string V304 {get; set;} = "Form Count is out of range. Expected <= {0}, got {1}.";
|
|
|
|
|
public static string V305 {get; set;} = "Cosplay Pikachu cannot have the default form.";
|
|
|
|
|
public static string V306 {get; set;} = "Only Cosplay Pikachu can have this form.";
|
|
|
|
|
public static string V307 {get; set;} = "Event Pikachu cannot have the default form.";
|
|
|
|
|
public static string V308 {get; set;} = "Held item does not match Form.";
|
|
|
|
|
public static string V309 {get; set;} = "Held item matches Form.";
|
|
|
|
|
public static string V310 {get; set;} = "Form cannot exist outside of a battle.";
|
|
|
|
|
public static string V311 {get; set;} = "Event Vivillon pattern on pre-evolution.";
|
|
|
|
|
public static string V312 {get; set;} = "Invalid Vivillon pattern.";
|
|
|
|
|
public static string V313 {get; set;} = "Valid Vivillon pattern.";
|
|
|
|
|
public static string V314 {get; set;} = "Invalid Eternal Flower encounter.";
|
|
|
|
|
public static string V315 {get; set;} = "Valid Eternal Flower encounter.";
|
|
|
|
|
public static string V316 {get; set;} = "Form cannot exist outside of Party.";
|
|
|
|
|
public static string V317 {get; set;} = "Form cannot be obtained for pre-Alola generation games.";
|
|
|
|
|
|
|
|
|
|
public static string V319 {get; set;} = "Cannot apply PP Ups to an Egg.";
|
|
|
|
|
public static string V320 {get; set;} = "Cannot increase Contest Stats of an Egg.";
|
|
|
|
|
public static string V321 {get; set;} = "Mystery Gift Fateful Encounter.";
|
|
|
|
|
public static string V322 {get; set;} = "Mystery Gift Fateful Encounter flag missing.";
|
|
|
|
|
public static string V323 {get; set;} = "Special ingame Fateful Encounter.";
|
|
|
|
|
public static string V324 {get; set;} = "Special ingame Fateful Encounter flag missing.";
|
|
|
|
|
public static string V325 {get; set;} = "Fateful Encounter should not be checked.";
|
|
|
|
|
public static string V326 {get; set;} = "Special ingame N's Sparkle flag missing.";
|
|
|
|
|
public static string V327 {get; set;} = "Special ingame N's Sparkle flag should not be checked.";
|
|
|
|
|
public static string V328 {get; set;} = "Version Specific evolution requires a trade to opposite version. A Handling Trainer is required.";
|
|
|
|
|
|
2017-03-25 15:41:45 +00:00
|
|
|
|
public static string V334 {get; set;} = "Non-tradeback egg move. Incompatible with generation 1 exclusive moves.";
|
2017-06-07 03:10:05 +00:00
|
|
|
|
public static string V335 {get; set;} = "Generation 1 exclusive move. Incompatible with Non-tradeback moves.";
|
2017-03-25 15:41:45 +00:00
|
|
|
|
public static string V336 {get; set;} = "Egg Move. Incompatible with event egg moves.";
|
|
|
|
|
public static string V337 {get; set;} = "Event Egg Move. Incompatible with normal egg moves.";
|
|
|
|
|
public static string V338 {get; set;} = "Defog and whirpool. One of the two moves should have been removed before transfered to generation 5.";
|
|
|
|
|
public static string V339 {get; set;} = "Generation {0} HM. Should have been removed before transfered to generation {1}.";
|
2017-03-26 13:39:09 +00:00
|
|
|
|
public static string V340 {get; set;} = "Not an expected egg move.";
|
2017-04-09 23:38:29 +00:00
|
|
|
|
public static string V341 {get; set;} = "Egg Move. Not expected in an event egg.";
|
2017-03-26 13:39:09 +00:00
|
|
|
|
public static string V342 {get; set;} = "Event egg move missing.";
|
2017-04-09 23:38:29 +00:00
|
|
|
|
public static string V343 {get; set;} = "Expected the following Moves: {0}";
|
|
|
|
|
public static string V347 {get; set;} = "Inherited move learned by Level-up. Not expected in an event egg.";
|
2017-03-26 15:07:36 +00:00
|
|
|
|
public static string V348 {get; set;} = "Inherited tutor move. Not expected in an event egg.";
|
|
|
|
|
public static string V350 {get; set;} = "Inherited TM/HM move. Not expected in an event egg.";
|
2017-03-26 23:18:26 +00:00
|
|
|
|
public static string V351 {get; set;} = "Invalid Met Location, expected Transporter or Crown."; // Invalid
|
2017-03-26 23:51:19 +00:00
|
|
|
|
public static string V352 {get; set;} = "Arceus from Hall of Origin. Unreleased event.";
|
|
|
|
|
public static string V353 {get; set;} = "Non japanese Mew from Faraway Island. Unreleased event.";
|
2017-03-26 23:56:38 +00:00
|
|
|
|
public static string V354 {get; set;} = "Non Platinum Shaymin from Flower Paradise. Unreleased event.";
|
2017-06-09 03:57:30 +00:00
|
|
|
|
public static string V383 {get; set;} = "Non Platinum Darkrai from Newmoon Island. Unreleased event.";
|
Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083)
* Ignore relearn level 2-100 moves from Phione
* Cave encounter types DPPt
* Generation 4 EncounterType filter and validation
Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters
Generation 4 roaaming static encounters have been splitted in two, grass and surf
* Added new legality texts
* Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible
Moved unreleased DP locations to valid Platinum locations only
* Improved generation 3 special egg check.
Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg
because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output
* Clean up
* Fix gen 5 pokemon from issue #1011
Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead
Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality
* Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis
* Do not make wild encounters prevail static encounter if the pokemon was an egg
* Changed type of WildEncounter variable to EncounterSlot[]
* Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 18:49:49 +00:00
|
|
|
|
public static string V384 {get; set;} = "Johto Route 45 surfing encounter. Unreachable Water tiles.";
|
2017-06-09 03:57:30 +00:00
|
|
|
|
public static string V413 {get; set;} = "Unreleased event.";
|
Shedinja evolution moves and some egg fixes (#1015)
* Add getMoves function with min level and max level, usefull for shedjina evolves moves (min level 20) and generation 1 moves ( no move reminder, min level is min encounter level + 1)
Also for gen1 encounters another function should be created to get by the encounter level the four moves that the pokemon learn by default, the last four in its movepool up until the encounter level
* getShedinjaEvolveMoves, function that return the moves that shedinja could learn from Ninjask move pool at the moment when Nincada evolves, in the same format that getValidMovesAllGens
* Add validation in parse moves for shedinja evolve moves.
Shedinja could have any gen3/4 moves from Ninjas learnset but only one is allowed
* Shedinja evolve moves text resources
* Fix egg moves pre-gen 6 validation:
Add skipoption variable to getEggMoves function from pre-gen6 games, to verify egg moves from split breed species
Flag illegal combinations of base egg moves and special egg moves
Return crystal egg moves for gen2 pokemon that can be tradeback to gen 1 games
* Fix for mix between event egg moves and base egg moves
* Changes just to make if there is only shedinja evolve move that is also the only base egg move change it from base egg move to evolve move, to avoid flag illegal if also the pokemon have a special egg move
* Revert "Changes just to make if there is only shedinja evolve move that is also the only base egg move change it from base egg move to evolve move, to avoid flag illegal if also the pokemon have a special egg move"
Revert the last change, i search in bulbapedia an there wasn't any nincada distributed with special moves in generation 3 nor 4, making this complicated validation unnecessary
This reverts commit 57f5ac1bbb75e32e417b575619339cae5e5d1ef2.
* Fix error
2017-04-01 00:40:30 +00:00
|
|
|
|
public static string V357 {get; set;} = "Only one Ninjask move allowed.";
|
|
|
|
|
public static string V358 {get; set;} = "Inherited move learned by Level-up. Incompatible with event egg moves.";
|
2017-04-01 20:02:37 +00:00
|
|
|
|
public static string V359 {get; set;} = "Unable to match a gift egg encounter from origin game.";
|
2017-04-01 16:45:13 +00:00
|
|
|
|
public static string V360 {get; set;} = "Unable to match an event egg encounter from origin game.";
|
Gen 1 move analysis improvement. Adapted the valid moves to take into account that move deleter and move reminder do not exits in generation 1 (#1037)
* Fix getMoves with min level, when SkipWhile and TakeWhile is used together the index i in TakeWhile is calculated from the enumerator that results of the SkipWhile function, not the index of the initial array, those giving an incorrect index to check Levels array in the TakeWhile
* Fix getMoves when levelmin or levelmax is above max level in the levels array, TakeWhile and SkipWhile return empty list if the while goes beyond the last element of the array
* Include player hatched egg in the list of possible encounters for parseMoves only if the pokemon was an egg
Also change the valur of WasEgg for gen1,2,3 pokemon if the encounter analyzed is not an egg
add the non egg encounters to the list instead of checking the non-egg encounter inside parseMovesWasEggPreRelearn
* Fix for gen3 egg encounters
Remove non-egg encounters without special moves if there is an egg encounter because egg encounter already cover every possible move combination
Do not add daycare egg encounter for gen3 unhatched egg if there is another encounter, that means is an event or gift egg, not a daycare egg
Remove duplicate encounters
* Gift egg should not allow inherited moves even it they dont have special moves
Those gift eggs are hatched only with the species base moves
* Added getEncounterMoves functions, to be used for generation 1 encounters to find what moves have a pokemon at the moment of being caught because there is no move reminder in generation 1
* Added GBEncounterData, structure for refactor the tuples used in generation 1 and 2 encounters
* Add LevelMin and LevelMax to IEncounterable to get the encounter moves by the min level of the generation 1 EncounterLink
Add iGeneration to difference generation 1 and generation 2 encounters for GB Era pokemon
* Mark generation in gen 1 and 2 encounters
There is no need to mark the generation in gen 3 to 7 encounters because in that generations it match the pokemon generation number
* Add min level for generation 1 moves in getMoves functions
Add function to return the default moves for a GB encounters, for generation 1 games that included both moves from level up table and level 1 moves from personal table
Fix getMoves with min level when the moves list is empty, like Raichu generation 1
* Add maxSpecies to getBaseSpecies function for gen1 pokemon with a gen2 egg encounter
Refactor VC Encounter changing Tuples for GBData class
* Fixed for gen 2 Checks
Also do not search for generation1 encounter if the gen2 pokemon have met location from crystal
* Fix VC wild encounters, should be stored as array or else other verifyEncounter functions wont work
* Add generation 1 parse moves function including default moves
* Clean-up get encounters
* Verify empty moves for generation 1 encounters, in generation 1 does not exits move deleter
That means when a move slot have been used by a level up move or a TM/HM/Tutor move it cant be empty again
Does not apply if generation 2 tradeback is allowed, in generation 2 there is a move deleter
* Added two edge cases for pokemon that learn in red/blue and yellow different moves at the same level, this combinations can not exits until a later level when they learn again one of the levels in the other game, only happen for flareon and vaporeon
* Check incompatible moves between evolution species, it is for species that learn a move in a level as an evolved species and a move at a upper level as a preevolution
Also added most edge cases for the min slots used for generation 1 games, i think every weird combination is already covered
* Fix gen 1 eevee and evolutions move checks
* Cleanup
* Move the code to change valid moves for generation 1 to a function
* Fix getMoveMinLevelGBEncounter
* getUsedMoveSlots, removed wild Butterfree edge case, it is not possible
* Filter the min level of the encounter by the possible games the pokemon could be originated, yellow pikachu and kadabra can be detected
2017-04-09 00:17:20 +00:00
|
|
|
|
public static string V363 {get; set;} = "Incompatible moves. Learned at the same level in Red/Blue and Yellow.";
|
|
|
|
|
public static string V365 {get; set;} = "Incompatible evolution moves. {0} Move learned at a lower level than other {1} moves.";
|
|
|
|
|
public static string V366 {get; set;} = "Incompatible evolution moves. {1} Move learned at a higher level than other {0} moves.";
|
2017-04-10 12:11:07 +00:00
|
|
|
|
public static string V367 {get; set;} = "Individual EV for a level 100 encounter in generation 4 cannot be greater than 100.";
|
|
|
|
|
public static string V368 {get; set;} = "Eggs can not be infected with Pokérus."; // Invalid
|
2017-04-10 22:59:16 +00:00
|
|
|
|
public static string V369 {get; set;} = "Invalid E-Reader Berry.";
|
|
|
|
|
public static string V370 {get; set;} = "Japanese E-Reader Berry in international savegame.";
|
2017-04-10 23:47:08 +00:00
|
|
|
|
public static string V371 {get; set;} = "American E-Reader Berry in Japanese savegame.";
|
2017-04-12 03:11:58 +00:00
|
|
|
|
public static string V373 {get; set;} = "Ability does not match generation 3 species ability.";
|
|
|
|
|
public static string V374 {get; set;} = "Invalid egg hatch cycles.";
|
Split Breed Egg Moves improvements (#1058)
* Added method getBaseEggSpecies to get the base species when the pokemon was an egg, is needed because for format 1 pokemon with egg origin every time getBaseSpecies is called is returning the gen 1 base species obtaining invalid eggmoves and base egg moves
Also getBaseEggSpecies was using Evolves1 when format = 1 even when asking for a gen2 egg base species, returning Pikachu egg moves (empty list) instead of Pichu egg moves
* Fix ability checking for generation 3 pokemon, likea de Seadra from Issue #1011
pkm.AbilityNumber have a value assuming PID match ability like a generation 4 pokemon but the validation should be ignored if is a generation 3 pokemon with only one ability in generation 3
Also changed the validation for ingame trades with fixed abilities to check only with generation 3 abilities in the case the species has two abilities generation 3, if only one was possible any PID should be valid with the generation 3 ability
Encounter Trades
Also the check for evolution was wrong, the most evolved species is the first in the evochain, not the last
* Fix evoltuion chains for gen 3 pokemon in format 4
* Fix ability for generation 3 trades. Ability could not change if there were 2 abilities in generation 3, that means it is irrelevant if the pokemon evolved in gen 4-5, the ability number must match the encounter
* Added missing skipOption to a call to getBaseEggSpecies
* Functions to obtain moves excluvie to preevolutions, like moves that Azurill/Happiny could learn throught level up or TM but Marill/Chansey could not learn, icompatible with any Marill/Chansey egg moves
Also add functions to return egg moves and base egg moves for both possible species for split breed eggs
* Check both species from split breed egg at the same time to report moves incompatibilities
* Reduced generation 4-5 was egg game check
There is no need to check every possible generation game.
For every egg species HGSS learnset tables y egg moves table contains all the moves from the same species in DP and Pt, without any move exclusive to that games except in legendaries, and they cant breed
In generation 5 is the same with B2W2 except for Exxegutte, it have a exclusive level up move from B1W1, Psychic, but it can learn the move with TM, it wont count as an egg move
* Check incompatible split breed moves in verify relearn egg
* Fix generation 1 incompatibility moves check
SolarBeam removed from Exeggcute/Exeggutor incompatiblity, Exeggutor could learn it with a TM in generation 1
Removed Vaporeon Mist and Eevee Take Down incompatiblity, Vaporeon could learn Take Down with a TM in generation 1
2017-04-14 17:11:50 +00:00
|
|
|
|
public static string V375 {get; set;} = "{0} Egg Move. Incompatible with {1} egg moves.";
|
|
|
|
|
public static string V376 {get; set;} = "{0} Exclusive Move. Incompatible with {1} egg moves.";
|
|
|
|
|
public static string V377 {get; set;} = "Egg Move. Not expected in a gift egg.";
|
|
|
|
|
public static string V378 {get; set;} = "Inherited move learned by Level-up. Not expected in a gift egg.";
|
|
|
|
|
public static string V379 {get; set;} = "{0} Inherited Move. Incompatible with {1} inherited moves.";
|
Special Eggs improvement and Generation 4 Encounter Type legal analysis (#1083)
* Ignore relearn level 2-100 moves from Phione
* Cave encounter types DPPt
* Generation 4 EncounterType filter and validation
Not every generation 4 static encounter have yet their encounter type defined, i temporally included Any to those encounters
Generation 4 roaaming static encounters have been splitted in two, grass and surf
* Added new legality texts
* Added unreleased event DP Darkai, added check for surf in jhoto route 45, is impossible
Moved unreleased DP locations to valid Platinum locations only
* Improved generation 3 special egg check.
Only check special egg if pokemon knows any of the special egg moves, also in that case do check for normal egg before special egg
because special eggs will explicitly check for normal egg moves but normal eggs will not check special egg moves, it will improve the error output
* Clean up
* Fix gen 5 pokemon from issue #1011
Those pokemon have generation 4 static gift encounters and also wild encounters, the analysis was selecting the static encounter, but if there is a valid wild encounter and the static encounter does not match the pokemon ball the willd encounter should be selected instead
Also move the transfer legality to check it before the static encounters and make that check to work like generation 3 transfer legality
* Another fix for Issue 1011, suppress temporally OT and pokemon name analysis for generations 3 to 5 instead of format 3 to 5, there is no data stored yet to make those analysis
* Do not make wild encounters prevail static encounter if the pokemon was an egg
* Changed type of WildEncounter variable to EncounterSlot[]
* Fix Jhoto Route 45 to avoid return error with fishing encounters
2017-04-22 18:49:49 +00:00
|
|
|
|
public static string V381 {get; set;} = "Encounter Type does not match encounter.";
|
2017-04-23 12:54:52 +00:00
|
|
|
|
public static string V385 {get; set;} = "Moves combinations is not compatible with {0} evolution.";
|
Generation 1 and 2 legal Improvements (#1099)
* Refactor parseMovesForEncounter to gather valid moves for species encounter, some Pokemon can have valid encounters with different source species from the encounter, the valid moves change if the encounter species change because some preevolutions moves are illegal if pokemon caught already evolved.
Example, generation 1 Pikachu that can have a RBY Pikachu encounter and GSC Pichu encounter, the valid moves for the first encounters should not have any Pichu exclusive evolution moves
Also assign the encounter match from gb when parsing moves like the variable Encounter Match, to store the encounter that is valid for the pokemon moves instead the first encounter.
Store the species encounter, this will be needed to check if the evolution is valid for species that evolve leveling with a given learned move
* Add Tradeback Status to the pokemon, this variable for generations 1 and 2 use data like the catch rate to determine if trade between generations 1 and 2 was possible.
If analysis is for VC games tradeback have value NotTradeback for every gen 1 pokemon, but for cart saves some pokemon can be determine that have not been tradeback, if catch rate match species catch rate but do not match a valid generation 2 held item that means the pokemon habe been never traded to generation 2 games, that allow to discart encounters and moves from generation 2.
Also if is not tradeback catch rate is used to filter encounters, catch rate determine in what species was captured the pokemon discarting some preevolutions moves
Also add option for generation 1 cart save analysis to check legal status not allowing generation 2 games, like VC games but with Stadium allowed, like the generation 1 non tradeback rules from Smogon
Also change evolution chains to included generation 2 preevolutions for gen 1 pokemon if tradeback was possible, it is needed to avoid parsemoves to check illegal pokemon like Hitmonchan with Tyrogue level up moves
* Check legal values of generation 1 type and catch rate
Replace pokemon catch rate after changind pokemon species always if pokemon was not tradeback from generation 2, the catch rate will keep unchanged only if it can be a held item and do not match species catch rate (default item)
Also if catch rate is changed use base species catch rate to avoid legal errors if the catch rate of the evolution species if is not possible with the current moves
* Filter ingame trades and static encounters with catch rate for generation 1 non tradeback
* Fix min moves for generation 1 metapod encounter
* Clean up
* Fix encounter level for generation 1, valid moves are those with one level after the encounter level, pokemon can not learn a new move until level up
Clean up type validation
Fix generation 3 fatefull encounter eggs, the pokemon lost the fatefull mark when it hatch
* Clean-up
* Use new variable EncounterSpecies when it is needed to detect the species of the encounter, the old code wont work if the encounter is a wild slots array
* Fix generation 1 evolution chains and catch rate as default held item
* Fix Generation 1 Yellow Pikachu and Kadabra catch rates
2017-04-27 04:27:59 +00:00
|
|
|
|
public static string V386 {get; set;} = "Porygon with invalid Type A value.";
|
|
|
|
|
public static string V387 {get; set;} = "Porygon with invalid Type B value.";
|
|
|
|
|
public static string V388 {get; set;} = "Porygon with invalid Type A and B values. Does not a match a valid type combination.";
|
|
|
|
|
public static string V389 {get; set;} = "Invalid Type A, does not match species type.";
|
|
|
|
|
public static string V390 {get; set;} = "Invalid Type B, does not match species type.";
|
|
|
|
|
public static string V395 {get; set;} = "Catch rate does not match a valid held item from generation 2";
|
|
|
|
|
public static string V396 {get; set;} = "Catch rate match species without encounters. Expected a preevolution catch rate.";
|
|
|
|
|
public static string V397 {get; set;} = "Catch rate does not match any species from pokemon evolution chain.";
|
|
|
|
|
public static string V399 {get; set;} = "Catch rate does not match any species from pokemon evolution chain or any generation 2 held items.";
|
2017-04-30 23:53:54 +00:00
|
|
|
|
public static string V400 {get; set;} = "Unable to match encounter conditions to a possible RNG frame.";
|
Encounter Type fix and detection of pokemon that should have evolve on trade (#1105)
* Detect encounter trades that evolve on trade and have not been evolved
Detect generation 1 pokemon with special catch rates : krabby trade and Pokemon Stadium
Detect generation 1 pokemon that evolve on trade and have been traded but not evolved
Detect pokemon with tradeback status any but with only encounters from the other GB generation, that means they are WasTradeback
Detect pokemon with moves from the other GB generation, change tradebackstatus to WasTradeback
* Fix dppt surfing and fishing encounter type, is is surfing because the battle background is the same as other surfingfishing encounters
Fix headbutt encounter type, the encounter type depends on the battle background used when battle a pokemon, for headbutt it changes with the player tile, is the player is in a city it will be building encounter, in a grass tile tall grass, in water it is surfingfishing and cave inside a cave. Some locations have more than one possible encounter type, for example routes with trees near the grass, near the water and near non-combat tiles.
Also added slot type headbutt special for the special trees, those trees are all in routes and are only adjacent to non-combat tiles
* Fix encounter type for missing areas with multiple grass encounters types: Mt Coronet, Mt Silver Cave and Stark Mountain (Issue # 1095)
* Fixes and typos
* Check for non-japanese e-reader pokemon, is unreleased
2017-05-01 15:07:20 +00:00
|
|
|
|
public static string V401 {get; set;} = "In-game trade {0} should have evolved into {1}.";
|
|
|
|
|
public static string V402 {get; set;} = "Incorrect Stadium OT.";
|
|
|
|
|
public static string V405 {get; set;} = "Outsider {0} should have evolved into {1}.";
|
2017-05-28 17:35:41 +00:00
|
|
|
|
public static string V406 {get; set;} = "Non Japanese Shadow E-reader Pokémon. Unreleased encounter.";
|
|
|
|
|
public static string V407 {get; set;} = "OT from Colosseum/XD cannot be female.";
|
2017-05-29 07:48:25 +00:00
|
|
|
|
public static string V408 {get; set;} = "Female OT from Generation 1/2 is invalid.";
|
|
|
|
|
public static string V409 {get; set;} = "Mystery Gift shiny mismatch.";
|
2017-06-03 22:16:24 +00:00
|
|
|
|
public static string V410 {get; set;} = "Mystery Gift fixed PID mismatch.";
|
|
|
|
|
public static string V411 {get; set;} = "Encounter Type PID mismatch.";
|
2017-06-07 03:10:05 +00:00
|
|
|
|
public static string V412 {get; set;} = "Non-tradeback pre evolution move. Incompatible with generation 1 exclusive moves.";
|
2017-03-21 07:18:38 +00:00
|
|
|
|
#endregion
|
|
|
|
|
|
2017-03-26 23:18:26 +00:00
|
|
|
|
}
|
2017-03-21 07:18:38 +00:00
|
|
|
|
}
|