Open MarioBones opened 5 days ago
I think a good solution would just be making all evolutions three values: dbww method byte, 16-bit param, 16-bit species
. The param
could be an item ID, move ID, etc, or some combination of two bytes for more complex methods (e.g. dbbbw EVOLVE_STAT, 20, ATK_LT_DEF, HITMONCHAN
or dbbbw EVOLVE_LEVEL, 35, IN_GALAR, GALARIAN_WEEZING
).
There are a few spots in engine/pokemon/evolve.asm where hl is incremented the wrong number of times and so the Pokemon's evolutions are not checked properly. This is only really noticeable on Eevee and Tyrogue but any Pokemon using EVOLVE_HAPPINESS or EVOLVE_STAT can theoretically encounter the issue.
If you step through EvolveAfterBattle_MasterLoop.loop when Eevee levels up you can see incorrect and invalid values for evolution methods get passed into a:
The following changes need to be made in evolve.asm:
I haven't done any testing with trades so it's possible that there's issues with EVOLVE_TRADE that I'm not aware of.