Castform form/variety mixup
Hello PokéAPI team :)
I'm currently playing around with the API and looking at the underlying data with interest. I note already that there is a lot of discussion around forms and varieties (am working based on the explanation: https://github.com/PokeAPI/pokeapi/issues/401.
Castform (id 351) has 1 form on its Pokémon object, and on the species object (id 351) , there are four variations listed with Pokémon IDs: 351, 10013 (Sunny), 10014 (Rainy), 10015 (Snowy).
Then these Pokémon IDs have their own equivalent form (form IDs 10028 (Sunny), 10029 (Rainy), 10030 (Snowy).
However, on the species object, there is a form description:
'Form changes along with type to match the weather in battle, due to forecast. Castform is always in its normal form outside of battle, regardless of weather'
But considering that the field is called form_description, this would not be correct, since its changing to a different variation. (The actual language itself within the field form_description is using form colloquially, I guess?)
So is Castform meant to have forms (similar to Arceus), which seems to contradict the description given of what Pokémon forms are, is the field form_description incorrectly populated for this instance, or should there be a variety_description field instead/as well, or have I completely misunderstood.
Steps to Reproduce:
- Navigate to Pokémon endpoint with id 351 - only 1 form for Pokémon
- Navigate to species endpoint with id 351 - Form description field is actually describing the variety differences.
Hmm, I just saw this issue. Did you look up for other issues about Castform? Maybe we already discussed about it
I did search for castform and I didn't see anything referencing the issue, except in 401 (specifically this comment https://github.com/PokeAPI/pokeapi/issues/401#issuecomment-450555581)
but I'm not sure if something has been agreed for the next version of the API (https://github.com/PokeAPI/pokeapi/issues/1086).
The documentation says that the form description is: "Descriptions of different forms Pokémon take on within the Pokémon species."
I understand why'd you have such a field on the species object, but in this instance, I can see a few options:
- Castform variations should actually forms (and thus changed) but then the form_description field is correct
- Castform variations should remain variations and the form_description field should be blank
- Castform variations should remain variations and the form_description field should be populated (current implementation)
I guess, really the question is what is the form_description field actually used for and is castform and its "varieties"categorised correctly . I would argue, its not sunny form (etc) are not purely cosmetic change since although base stats don't change, typing does (including inherent weaknesses). However, this change doesn't (cannot?) exist outside of battle, and therefore is it right to call it a variety?
Tying myself up in knots a bit - but hopefully you can see what I mean!
Hi, honestly I don't know the answer :) I don't have much time to spend on the variety/form/species issue. So Maybe pinging other contributors and see what do they think might be the best option, then raise a PR and having me merging it
What is form_description and where is it stored? I couldn't find it.
These kinds of things were discussed in #1037 To give a summary:
The different Castform forms have a different type. The types of pokemon are defined on the variety . That's why Castform has 4 different varieties. The related form entries have the is_battle_only flag set to 1 for the weather specific forms.
So for the current data model this makes perfect sense and is relatively straightforward for Castform compared to some other pokemon.
I guess the problem with the comparison to Arceus is actually Arceus.
Form_description is on the species object, and is found in the pokemon_species_prose.csv.
I did read that thread you linked, thanks for that. I not entirely sure what the form_description fields purpose actually is when it comes to varieties vs forms? It probably ties into that larger conversation about what is a form and what is a variety (and probably me misunderstanding the nuance).
It seems this is information contains both, so yes the information in this table is mixed. Officially there are only forms but there are different kinds of forms. The varieties (word and differentiation) were probably just introduced for a cleaner, meaning more normalized, database model. But changes in what is what or maybe rather what can be what, made a mess of this concept over time but there is no simple solution to change this.
pokemon_species_prose has only 34 entries. This makes me think that this wasn't maintained well as there are more pokemon with different forms of whatever kind. The descriptions are mostly about the rather special forms though. This means it's an additional explanation to how the different varieties/forms work. For Castform it's the weather, for Arceus the plate it holds, for Deoxys it's more complicated and for some the descriptions say it can't be changed and some are visual appearance only.
Where this works in the data model is that each variety in the pokemon table has a related entry in the pokemon_forms table. So if you only look at the pokemon_forms table, it works well enough.
Yeah that makes sense to me, generally - it can quite confusing trying to work out if a Pokémon variant is going to be a form or a variation, since the other problems with some of the forms is that is_default can be true, when its the default form for the variation, but the variation itself is not the default form of the species.
In any case, I guess if there is a rework of the data model, this description field can either be renamed or deprecated depending on how that all changes - or it needs to be properly populated across the board.