Broken into smaller methods, adjusted flow. Gen5/6/7 mystery gift
ability check was typical so just use one repeatable method.
Also...
Short circuit unflagged EV check fixed; case where 255 & 248 EVs used
will trip the 508 fishy flag but does not check the Format >= 6 for the
>252 check. Fixed by arranging all the Invalid checks without an
if-else.
* Ignore Shedinja evolution moves if the encounter species was a Shedinja
* Phione and Manaphy can not inherit level up moves, they hatch only with level 1 moves
* Verify ability for generation 5 events
* Removed unused sevii isle locations for FRLG valid met location
* Verify ability for generation 3 transfer pokemon
* Ability error text
* Fix gender validation
* Cleanup
* Check egg hatch cycles are not greater than species/ gift egg encounter hatch cycles
* Fix FiredRed Charmander moveset, have 67 moves when it only learns 11 moves
* Reduced redundant condition in ability checking
Combo items are now localized automatically by specifying the game IDs
and using the gameinfo values. (odd style is to support eventual message
localization).
program title now indicates XD/C/Batrev instead of just SAV(generation)
* E-Reader berry improvement
Load from the savegame the name of the e-reader berry and show in the item list that name instead of enigma berry if there is any e-reader berry data stored
Also check Legality of the berry, as enigma berry is unrelead in generation 3, but if there is e-berry data if check if the e-berry name is from one of the released cards
* Fix Shedinja moves check in generation 3 format
* Update comments, e-berry code is based in Suloku work for the gen 3 wc-tool
* Move e-reader comunication with Legality class to Main.cs
Remove curly braces in GameInfo
* Undo all changes in SaveUtil.cs
* Fix required move count for Butterfree and Gyarados
* Ruby Sapphire Southern Island legendaries do not have fateful encounter
* Added missing event egg for generation 3
Filter generation 3 event egg by game origin, an egg pokemon remains with the original game no matter in what game it hached
* Filter the event egg static table better than individual pokemon from the table
* Generation 4 do not allow to EV train at level 100, for level 100 encounter pokemon (like events) EV only can be trained with vitamins, with a maximum value of 100
* Fix incorrect string
* Generation 2 eggs can not be infected with Pokérus
* Fix gyarados count slots
* Add gen3-6 unreleased items
* Fix string converter
fix traditional chinese char offset
fix out-of-range crash
* Fix ivs and ability check for VC transfer
Refetch the static enconter for VC transfer after moves checks
update legality string translation
impl non-HA ability matching
* Add ivs legality check for wc gift
This seems to do it for me. Previously, it looped all the way to the
earliest save and loaded that. This stops the search at the first match
ordered by descending write time.
* Fix getMoves with maxlevel 100
* Complete edge cases for pokemon generation 1 getUsedMoveSlots
There are pokemon who learn moves only in yellow and that moves are optional
Also some pokemon if they evolve at the minimum possible level they do before learning the fourth move, until the level when the evolution learn it the 4th move is optional
Redone the part for special pokemons like stone evolution and pikachu and nidoran family
* Missed distinct
* Fix comment
* Fixed moves in getUsedMoveSlots
Also updates lang translations for incorrect/missing strings
(ps: uncomment the line in main to copy the current localization strings
to clipboard for ez paste replace into notepad)
Move all sanitization operations from PK* and SAV* to PKX; add general
method for fetching a generation specific string
Changes the Text subform editor to show trash bytes when appropriate.
Special characters to be shown can be easily inserted in the future.
* 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
* Fix b2w2 tutor move
Iron tail(231) is taught at Lentimas city.
* Fix B2W2 Tutor Move
Iron tail (231) is taught at Lentimas city. Also fix the string ID of
Tutor Move
Change reference offset to absolute offset in order to read data independently and for troubleshooting
Swarms species ID of dppt can be read from encounter raw file (2 x int32 starting from 0x66)
[Swarms species ID of hgss is at 0xBE but lacking encounter type info]
Timereplace slots of dppt only have morning and night slots, the 1st slot is just swarms
Pokeradar slots should replace normal slots 4,5,10,11 (tested)
While replacing slots, skip the encounters with same species ID (always it's because there is no such slots)
* Fix Eevee eggs in gen7 and cleanup
Needs to mark EncounterstaticMatch as null after verifyencounterstatic
failure
Egg moves were checked in parseMovesWasEggPreRelearn, so verifyeggmoves
function is unnecessay
No need to search friend safari for gen4 transfer
Simplify parsing special egg moves
Skip level-up moves when checking higher level moves
* Add PokePark Encounter
* Fix eggmoves and eventmoves conflict checking
* Add Egg Pokémon Present Eggs
Solve issue #987
Use special move to distinguish eventegg
* Fix Transferred gen3 egg Checking
Refactoring location in gen4transfer
* Fix species recognition of event eggs
include preevolutions checking
* Check encounter before egg for transferred pkm
Remove prerelearnencouner function.
The existence of RelearnMoves is checked in parseMovesSpecialMoveset