Add Pokemon form support to seeding (Alolan, regional variants, etc.)
Pokemon forms with dex IDs >= 10000 (e.g., Alolan Rattata = 10091) were being collected in encounter data but missing from pokemon.json, causing them to be silently dropped during DB seeding. Now fetch_all_pokemon() also fetches form entries that appear in encounter data, with clean display names like "Rattata (Alola)" and correct form-specific types. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -85,71 +85,9 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Eterna City",
|
||||
"order": 2,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "old-rod",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 3,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 54,
|
||||
"pokemon_name": "psyduck",
|
||||
"method": "surf",
|
||||
"encounter_rate": 90,
|
||||
"min_level": 20,
|
||||
"max_level": 30
|
||||
},
|
||||
{
|
||||
"national_dex": 130,
|
||||
"pokemon_name": "gyarados",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 55,
|
||||
"min_level": 30,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 55,
|
||||
"min_level": 10,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"national_dex": 339,
|
||||
"pokemon_name": "barboach",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 45,
|
||||
"min_level": 10,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"national_dex": 340,
|
||||
"pokemon_name": "whiscash",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 45,
|
||||
"min_level": 30,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"national_dex": 55,
|
||||
"pokemon_name": "golduck",
|
||||
"method": "surf",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 20,
|
||||
"max_level": 40
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pastoria City",
|
||||
"order": 3,
|
||||
"order": 2,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -235,7 +173,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Sunyshore City",
|
||||
"order": 4,
|
||||
"order": 3,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -321,7 +259,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Pokemon League",
|
||||
"order": 5,
|
||||
"order": 4,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -399,12 +337,12 @@
|
||||
},
|
||||
{
|
||||
"name": "Oreburgh Mine",
|
||||
"order": 6,
|
||||
"order": 5,
|
||||
"encounters": [],
|
||||
"children": [
|
||||
{
|
||||
"name": "Oreburgh Mine (1F)",
|
||||
"order": 7,
|
||||
"order": 6,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 74,
|
||||
@@ -434,7 +372,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Oreburgh Mine (B1F)",
|
||||
"order": 8,
|
||||
"order": 7,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 74,
|
||||
@@ -466,7 +404,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Valley Windworks",
|
||||
"order": 9,
|
||||
"order": 8,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
@@ -600,7 +538,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Eterna Forest",
|
||||
"order": 10,
|
||||
"order": 9,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 406,
|
||||
@@ -756,6 +694,68 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Eterna City",
|
||||
"order": 10,
|
||||
"encounters": [
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "old-rod",
|
||||
"encounter_rate": 100,
|
||||
"min_level": 3,
|
||||
"max_level": 15
|
||||
},
|
||||
{
|
||||
"national_dex": 54,
|
||||
"pokemon_name": "psyduck",
|
||||
"method": "surf",
|
||||
"encounter_rate": 90,
|
||||
"min_level": 20,
|
||||
"max_level": 30
|
||||
},
|
||||
{
|
||||
"national_dex": 130,
|
||||
"pokemon_name": "gyarados",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 55,
|
||||
"min_level": 30,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"national_dex": 129,
|
||||
"pokemon_name": "magikarp",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 55,
|
||||
"min_level": 10,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"national_dex": 339,
|
||||
"pokemon_name": "barboach",
|
||||
"method": "good-rod",
|
||||
"encounter_rate": 45,
|
||||
"min_level": 10,
|
||||
"max_level": 25
|
||||
},
|
||||
{
|
||||
"national_dex": 340,
|
||||
"pokemon_name": "whiscash",
|
||||
"method": "super-rod",
|
||||
"encounter_rate": 45,
|
||||
"min_level": 30,
|
||||
"max_level": 55
|
||||
},
|
||||
{
|
||||
"national_dex": 55,
|
||||
"pokemon_name": "golduck",
|
||||
"method": "surf",
|
||||
"encounter_rate": 10,
|
||||
"min_level": 20,
|
||||
"max_level": 40
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fuego Ironworks",
|
||||
"order": 11,
|
||||
|
||||
@@ -8724,5 +8724,145 @@
|
||||
"ghost"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1025.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10016,
|
||||
"name": "Basculin (Blue Striped)",
|
||||
"types": [
|
||||
"water"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10016.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10091,
|
||||
"name": "Rattata (Alola)",
|
||||
"types": [
|
||||
"dark",
|
||||
"normal"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10091.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10092,
|
||||
"name": "Raticate (Alola)",
|
||||
"types": [
|
||||
"dark",
|
||||
"normal"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10092.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10101,
|
||||
"name": "Sandshrew (Alola)",
|
||||
"types": [
|
||||
"ice",
|
||||
"steel"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10101.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10103,
|
||||
"name": "Vulpix (Alola)",
|
||||
"types": [
|
||||
"ice"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10103.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10105,
|
||||
"name": "Diglett (Alola)",
|
||||
"types": [
|
||||
"ground",
|
||||
"steel"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10105.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10106,
|
||||
"name": "Dugtrio (Alola)",
|
||||
"types": [
|
||||
"ground",
|
||||
"steel"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10106.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10107,
|
||||
"name": "Meowth (Alola)",
|
||||
"types": [
|
||||
"dark"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10107.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10109,
|
||||
"name": "Geodude (Alola)",
|
||||
"types": [
|
||||
"rock",
|
||||
"electric"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10109.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10110,
|
||||
"name": "Graveler (Alola)",
|
||||
"types": [
|
||||
"rock",
|
||||
"electric"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10110.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10112,
|
||||
"name": "Grimer (Alola)",
|
||||
"types": [
|
||||
"poison",
|
||||
"dark"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10112.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10114,
|
||||
"name": "Exeggutor (Alola)",
|
||||
"types": [
|
||||
"grass",
|
||||
"dragon"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10114.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10123,
|
||||
"name": "Oricorio (Pom Pom)",
|
||||
"types": [
|
||||
"electric",
|
||||
"flying"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10123.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10124,
|
||||
"name": "Oricorio (Pau)",
|
||||
"types": [
|
||||
"psychic",
|
||||
"flying"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10124.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10125,
|
||||
"name": "Oricorio (Sensu)",
|
||||
"types": [
|
||||
"ghost",
|
||||
"flying"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10125.png"
|
||||
},
|
||||
{
|
||||
"national_dex": 10126,
|
||||
"name": "Lycanroc (Midnight)",
|
||||
"types": [
|
||||
"rock"
|
||||
],
|
||||
"sprite_url": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/10126.png"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user