learnsets.js
is basically a dump of the list of moves that a given Pokémon be taught and how and in which generation(s).
Is it just a dump though? Since the categories 3C/4C, 5D, 7V are available already in there. So it contains information about Eggs, the DreamWorld, the Virtual Console transfers etc. It seems to me that it contains almost everything already except maybe some egg moves (?), and that the team validator or
/ds
just use this info to make sure that some combination of abilities and/or moves/natures etc. are not incompatible. I'd be happy to read some more doc about exactly what it contains and how it was made, and interfaces with the rest of the whole machinery.
However Pokémon can have access to moves that they can't be taught directly, [ ...] although in the case of being hatched from an egg, some of those also have entries in learnsets.js
.
How are the 'some' exactly defined? Like which are included for sure, and which ones aren't?
Well, learnset validation is tricky
Indeed, and actually the machinery is all done in
team-validator.js
if I'm correct, at least when you click 'Validate' in Showdown, so I assume it's the same for
/ds
(which
uses team-validator).
The thing is, this code may not catch all possible combinations, or return false positives, since it uses heuristics to lighten the CPU load, as this becomes quite heavy.
See for instance
here, here, or
here.
Oh and thanks for the recap of all the ways to learn a move :).
Are these all the ways to "indirectly learn" a move? I'm trying to write my own /ds command executor and I want to make sure it works right.
If I'm taking time to write all this (and actually the three of us already had
some exchanges about this subject back in November last year) it is more or less for the same purpose. Seeing the limitations of the current validation system, I'd like to build a really completely exhaustive one, with zero false positives. So if you end up doing your own
/ds
and that you take into account some of what was said above I'd be very happy to see it :). If you do plan to realease it publicly, where would it be? Do you have a GitHub page?
--------------
In addition to all these remarks that have been making me wonder about legality checks for the past months (but I never got time to dig more and work on it, hopefully soon), I was wondering if there was communication between the members developing
PKHeX and the people who did the team-validator code? Because I believe that both codes are very good of course, but seeing the focus of PKHex on legality, one could assume that their input could be interesting. Especially since it is run by Kaphotics who was a part of the great team that
disassembled the Gen V damage formula, but unfortunately it seems his account isn't so active here anymore. I noticed, since I follow both Github's pages that there doesn't seem to be many common contributors to both projects, which is too bad, because some synergy could happen.
In any case, at least some comparison tests between the two would be nice I think, that could allow to see if there's some improvements possible (in how they go about the heavy calcs for the checks, etc.), and in terms of pure legality checks.