slightly different in USUM, any difference increased the cap:
070 999999->999999999
071 999999->999999999
072 999999->999999999
073 999999->999999999
074 999999->999999999
192 9999->65535
193 9999->65535
194 9999->65535
197 9999->65535
Worth noting that these were undocumented record IDs and likely unused
in Sun/Moon; don't really need to split these tables but good for
documentation purposes.
Trainer7 grabs maxes from the save without specifying version, so add an
overload to default to USUM (even though the unused records will have
bad caps, they're unused in SM so whatever).
prune froslass/gallade evolution tree pruning by editing the binary like
prior commit for sm
fe66a65464 (diff-e0f20441fd5149efa4e829994c94f683)
revise banlist interaction for usum evos (need to trade to USUM to be
able to undergo these evolutions).
Closes#1570 (evolution table issues), other open issues can catch any
other/unrelated fallout.
add german forme names
truncate some forme names
fix nidoran gender symbols
adds null check for invalid (caught error) pkm
disables accessory giving (needs more research)
I highly doubt this is causing save corruption; looked through the
disassembly and the offset ptrs are the same relative to sun/moon.
Implementation is flexible for both as gamefreak allocated enough space
in each bit array.
pokedex editor recognizes bools correctly (including for formes).
sourced from Ultra Moon, location IDs are not known (need manual docs).
Many of these may be unused, like last gen. Will eventually remove
unused ones once crowdsourced effort finishes.
Adds game names for languages other than english
adds z crystal sprites for held items
temp-fixes chinese pkm names (need manual translation for the new
species)
remove newline at eof
toggle back on legal item lists, add assumed Key Item list
differentiate duplicate item name strings (-arizers)
one large list at static.rodata:005E6860, formatted to look like AO
table with deletions & insertions at the bottom.
bitflags are used in one large set (not 4 chunks of 4 like prior).
don't share object references, need to be passed as new copies as the
array contents can be modified
need to clone on dict return to not pollute dict, and need to clone
after dict add so that the first return doesn't equal the dict copy --
this one could be on the dict add... keep returns same.
haunter caught at level 20, transferred at 24, leveled once as gengar
did not allow gengar in the chain as it is assumed (incorrectly) that
gengar is evolved after transfer.
determine if the lower levels of the next step's evolution rung are
valid, using the same logic as pikachu case but to handle the other side
Closes#1564
(should probably refactor the encounter chain generator to use the base
encounter data if known, but oh well works fine and isn't a cpu hog)
Refactors the Memecrypto API to improve generalized usage.
Adds unit tests that verify memecrypto works, so that future changes
don't potentially break the code.
a little bit hacky but exposes the values well enough.
moves the coins entry to the Badges groupbox, and makes it visible
looking like a BP editor (lol)
thanks @sora10pls for finding the offsets!
(blockinfo array isn't really used, is sorta just there for
documentation...)
force colo starters to be male only
use some c# lang features for EncounterType flags
add edge case PIDIV detection for starter gender/shiny lock scenario
adds a little documentation for those unfamiliar with the NPC PKM
generation quirks.
Colosseum Starters will now be recognized with a different PIDIV type
which is specific to them & them only.
It'd be nice to be thread-safe, but I don't really expect multithreaded applications to be calling this method a lot, and I'd imagine the concurrent version has more overhead
more usum prep
don't allocate empty array on every savefile creation (use linq All
comparison)
add percent seen/caught savefile properties for data analysis purposes
closes#1550 , mgdb/pkmdb throw unconverted files which need conversion;
move main file load conversion to a reusable method and have pkmeditor
call it on every load.
add skip argument to ignore the conversion check (ie if the file is
loaded from an undoubtedly same type source).