veekun / pokedex

more than you ever wanted to know about Pokémon
MIT License
1.44k stars 637 forks source link

Pokémon "shape" data not accurate across generations, versions, forms. #225

Open jpirnat opened 6 years ago

jpirnat commented 6 years ago

Currently, the veekun database puts the shape_id of a Pokémon in the pokemon_species table.

As of Pokémon X/Y, a Pokémon's shape (the minor attribute that the Pokédex lets you search by) is determined by the form, not the species. The Incarnate vs. Therian formes of Landorus, Tornadus, and Thundurus have different shapes. Later games introduced more species with forms with different shapes.

Furthermore, X/Y changed the established shapes of a handful of species and forms... and then OR/AS did too.

So, for perfect accuracy, a Pokémon's shape should be determined not by the pokemon_species_id, but by the combination of version_group_id, and pokemon_id. You don't need to use pokemon_form_id, because none of the cosmetic forms of the same "pokemon" (as the database knows the concept) have different shapes (yet).