Refactored to split parsing into subroutines. Simplifies the overall
parsing process.
Can handle even more silly cases concocted by beggars, like using (
instead of [ for hidden power or nickname.
Fix regurgitated message IV/EV shuffling, max move PP for imported sets,
fix array range access exceptions (invalid moves threw exceptions)
uncollapse the first line creation
Add gen2->4 item translation table,
Recreate the gen3->4 item translation table,
Fix string accessors for items for past gen games, would throw
exceptions for invalid (65535) gen3 items. Use an unused invalid-item
index instead.
Refactors code so that the 'validity' check is done by the object not by
the form evaluating properties. Can be expanded upon to mark pk3's
invalid if species is >386 etc; however, it wasn't necessary to do
before for pk6's out-of-bounds.
Thanks theSLAYER!
Communicate between forms to notify when a refresh of the sprites is
needed.
Open up boxviewer to box 1, and have Main on box 1. Move pokemon between
in Main, and the boxviewer now is notified and updates. Only updates if
it is viewing the box that was updated, and wasn't a source/dest that
already initiated its own update.
Even works for dragging pkm files in from another PKHeX.exe or file. No
cross-exe communication.
Realistically, this code should never be triggered, but users may have
multiple copies of the same box viewed (why???).
Closes#269
Thanks @JHorbach !
Didn't feel like modifying CalculateChecksum as it may be misleading;
it's only used for creating a FileName, so only use it in FileName.
As per bulbapedia
http://bulbapedia.bulbagarden.net/wiki/Ability
Air Lock was 77 in gen3, but moved to 76 (76 was unused in gen3). Since
only Ability Number 0/1 is stored in a pk3, we can just manually modify
the Personal Entry.
Thanks Delta Blast Burn!
sav1storage = uninit
sav0storage = init
sav1general = uninit
sav0general = init
both states are possible (and inverse possible). So we check all 4
states. Split the method.
Gen4 sets to sav1 (not sav0) when the game is first started, leaving
sav0 uninitialized (0xFF'd).
SaveUtil.cs:
When checking the save, check both sav0 and sav1 for the footer bytes.
SAV4:
When checking for the active blocks, check for this uninitialization
(and return appropriately).
Also fixed the map position offsets (didn't point to sav0/sav1, were
static to sav0).
Minor comment fix (end+=4 to range to match the Take length).
Hide it if daycare isn't documented.
Also, fix drag&drop cursor feedback for non-box slots. Previously,
initiating a d&d on a party slot would reset the drag cursor to the
default (arrow + square) instead of keeping the sprite-cursor.
GiveFeedback -> UseDefaultCursors = false :)
Add gen3/2/1 text files to Resources (existing code would fall back to
english).
L_Form is autosized now; the combobox may stick out on the right for
other languages -- the combobox shouldn't be made smaller just because
the form label is too big.
Closes#259
Sneaks in typo fix in ShowdownSet