"order" of Pokémon forms is shared between unrelated species
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Quiet
- Domain
- databases
Research direction
Start by reviewing pokemon_forms.csv, the Pokémon Forms documentation, and the linked pull request #1532 to understand the current order behavior and existing duplicate values. The work is done only once the replacement for order or id is agreed, its effect on the data model is defined, and the affected form records are consistently updated.
Written by the indexing model from the issue text.
Description
At present, the order column of the pokemon_forms.csv is mostly just an incrementing list that groups all forms of the same species together. This makes it very inconvenient to insert new forms for pre-existing Pokémon, as every subsequent entry needs to have its order incremented.
However, while the list at first appears to be an incrementing list (with a unique value per form), this is not actually the case (as I discovered in https://github.com/PokeAPI/pokeapi/pull/1532). The documentation does note
Multiple forms may have equal order, in which case they should fall back on sorting by name.
The first major group of non-unique entries is Alcremie. The Alcremie forms have distinct order values for each Cream, but each Cream shares the same order value across Sweets. So alcremie-vanilla-cream-berry-sweet is 1256 and alcremie-ruby-cream-berry-sweet is 1257, but alcremie-vanilla-cream-love-sweet is also 1256.
However, after Alcremie, there are a bunch of DLC Sword & Shield Pokémon, Hisui Pokémon, and Paldean Pokémon that share order values with Gigantamax Pokémon and forms introduced in Hisui and Paldea. Some examples:
| order | Entry 1 | Entry 2 |
|---|---|---|
| 1292 | eternatus-eternamax | venusaur-gmax |
| 1293 | kubfu | charizard-gmax |
| 1294 | urshifu-single-strike | blastoise-gmax |
| 1313 | fuecoco | flapple-gmax |
| 1314 | crocalor | appletun-gmax |
| 1327 | rabsca | growlithe-hisui |
| 1328 | greavard | arcanine-hisui |
| 1373 | naclstack | miraidon-aquatic-mode |
| 1374 | garganacl | miraidon-glide-mode |
Proposal
My proposal is that the order column do something similar to what Pokémon Champions does internally: Concatenate a National Pokédex number and a form ID to produce a unique identifier for a specific form of a Pokémon. For example, Venusaur (Pokédex #0003) would be form ID 00003000, while Mega Venusaur would be form ID 00003001, and Charmander (Pokédex #0004) would be form ID 0004000. (Since these are integers, the leading 0's would be stripped, but I've included them here to illustrate how the numeric identifiers are based on Pokédex numbers.)
This could even replace the existing id column of the pokemon_forms.csv table, and the order column could just be deprecated.
- Dominant language
- Python
- Stars
- 5.4k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 18
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from PokeAPI/pokeapi
-
Difficulty 2/5 1-2 days Newbie friendliness 76/100
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
Difficulty 3/5 1-2 days Newbie friendliness 55/100
-
UV hardlink files Open
Difficulty 3/5 1-2 days Newbie friendliness 48/100
-
Ball legality Open
Difficulty 5/5 Over a week Newbie friendliness 35/100
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
stephrobert/dsoxlab#238 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
sublimehq/package_control#1780 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
nwg-piotr/nwg-displays#145 ·