Populate boss Pokemon teams in seed data

Add Pokemon teams (pokeapi_id, level, order) to all 327 boss entries
across 21 seed files, sourced from Bulbapedia. Includes starter-dependent
teams via condition_label, Mega Evolution, Dynamax/Gigantamax,
Terastallize, and single-Pokemon entries for Totems/Nobles/Titans.
Also fix _export_bosses to include condition_label in exported data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 21:07:48 +01:00
parent 3a64661760
commit 7aeddd61da
23 changed files with 9158 additions and 382 deletions
+343 -18
View File
@@ -11,7 +11,26 @@
"location": "Oreburgh Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/roark.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 74,
"pokemon_name": "Geodude",
"level": 12,
"order": 1
},
{
"pokeapi_id": 95,
"pokemon_name": "Onix",
"level": 12,
"order": 2
},
{
"pokeapi_id": 408,
"pokemon_name": "Cranidos",
"level": 14,
"order": 3
}
]
},
{
"name": "Gardenia",
@@ -25,7 +44,26 @@
"location": "Eterna Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/gardenia.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 420,
"pokemon_name": "Cherubi",
"level": 19,
"order": 1
},
{
"pokeapi_id": 387,
"pokemon_name": "Turtwig",
"level": 19,
"order": 2
},
{
"pokeapi_id": 407,
"pokemon_name": "Roserade",
"level": 22,
"order": 3
}
]
},
{
"name": "Maylene",
@@ -39,7 +77,26 @@
"location": "Veilstone Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/maylene.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 307,
"pokemon_name": "Meditite",
"level": 27,
"order": 1
},
{
"pokeapi_id": 67,
"pokemon_name": "Machoke",
"level": 27,
"order": 2
},
{
"pokeapi_id": 448,
"pokemon_name": "Lucario",
"level": 30,
"order": 3
}
]
},
{
"name": "Crasher Wake",
@@ -53,7 +110,26 @@
"location": "Pastoria Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/crasher-wake.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 130,
"pokemon_name": "Gyarados",
"level": 27,
"order": 1
},
{
"pokeapi_id": 195,
"pokemon_name": "Quagsire",
"level": 27,
"order": 2
},
{
"pokeapi_id": 419,
"pokemon_name": "Floatzel",
"level": 30,
"order": 3
}
]
},
{
"name": "Fantina",
@@ -67,7 +143,26 @@
"location": "Hearthome Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/fantina.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 426,
"pokemon_name": "Drifblim",
"level": 32,
"order": 1
},
{
"pokeapi_id": 94,
"pokemon_name": "Gengar",
"level": 34,
"order": 2
},
{
"pokeapi_id": 429,
"pokemon_name": "Mismagius",
"level": 36,
"order": 3
}
]
},
{
"name": "Byron",
@@ -81,7 +176,26 @@
"location": "Canalave Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/byron.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 436,
"pokemon_name": "Bronzor",
"level": 36,
"order": 1
},
{
"pokeapi_id": 208,
"pokemon_name": "Steelix",
"level": 36,
"order": 2
},
{
"pokeapi_id": 411,
"pokemon_name": "Bastiodon",
"level": 39,
"order": 3
}
]
},
{
"name": "Candice",
@@ -95,7 +209,32 @@
"location": "Snowpoint Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/candice.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 459,
"pokemon_name": "Snover",
"level": 38,
"order": 1
},
{
"pokeapi_id": 215,
"pokemon_name": "Sneasel",
"level": 38,
"order": 2
},
{
"pokeapi_id": 308,
"pokemon_name": "Medicham",
"level": 40,
"order": 3
},
{
"pokeapi_id": 460,
"pokemon_name": "Abomasnow",
"level": 42,
"order": 4
}
]
},
{
"name": "Volkner",
@@ -109,7 +248,32 @@
"location": "Sunyshore Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/volkner.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 26,
"pokemon_name": "Raichu",
"level": 46,
"order": 1
},
{
"pokeapi_id": 424,
"pokemon_name": "Ambipom",
"level": 47,
"order": 2
},
{
"pokeapi_id": 224,
"pokemon_name": "Octillery",
"level": 47,
"order": 3
},
{
"pokeapi_id": 405,
"pokemon_name": "Luxray",
"level": 49,
"order": 4
}
]
},
{
"name": "Aaron",
@@ -119,11 +283,42 @@
"badge_image_url": null,
"level_cap": 53,
"order": 9,
"after_route_name": "Pok\u00e9mon League (Sinnoh)",
"after_route_name": "Pokémon League (Sinnoh)",
"location": "Pokemon League",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/aaron.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 269,
"pokemon_name": "Dustox",
"level": 53,
"order": 1
},
{
"pokeapi_id": 267,
"pokemon_name": "Beautifly",
"level": 53,
"order": 2
},
{
"pokeapi_id": 416,
"pokemon_name": "Vespiquen",
"level": 54,
"order": 3
},
{
"pokeapi_id": 214,
"pokemon_name": "Heracross",
"level": 54,
"order": 4
},
{
"pokeapi_id": 452,
"pokemon_name": "Drapion",
"level": 57,
"order": 5
}
]
},
{
"name": "Bertha",
@@ -133,11 +328,42 @@
"badge_image_url": null,
"level_cap": 55,
"order": 10,
"after_route_name": "Pok\u00e9mon League (Sinnoh)",
"after_route_name": "Pokémon League (Sinnoh)",
"location": "Pokemon League",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/bertha.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 195,
"pokemon_name": "Quagsire",
"level": 55,
"order": 1
},
{
"pokeapi_id": 185,
"pokemon_name": "Sudowoodo",
"level": 56,
"order": 2
},
{
"pokeapi_id": 76,
"pokemon_name": "Golem",
"level": 56,
"order": 3
},
{
"pokeapi_id": 340,
"pokemon_name": "Whiscash",
"level": 55,
"order": 4
},
{
"pokeapi_id": 450,
"pokemon_name": "Hippowdon",
"level": 59,
"order": 5
}
]
},
{
"name": "Flint",
@@ -147,11 +373,42 @@
"badge_image_url": null,
"level_cap": 55,
"order": 11,
"after_route_name": "Pok\u00e9mon League (Sinnoh)",
"after_route_name": "Pokémon League (Sinnoh)",
"location": "Pokemon League",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/flint.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 78,
"pokemon_name": "Rapidash",
"level": 58,
"order": 1
},
{
"pokeapi_id": 208,
"pokemon_name": "Steelix",
"level": 57,
"order": 2
},
{
"pokeapi_id": 426,
"pokemon_name": "Drifblim",
"level": 58,
"order": 3
},
{
"pokeapi_id": 428,
"pokemon_name": "Lopunny",
"level": 57,
"order": 4
},
{
"pokeapi_id": 392,
"pokemon_name": "Infernape",
"level": 61,
"order": 5
}
]
},
{
"name": "Lucian",
@@ -161,11 +418,42 @@
"badge_image_url": null,
"level_cap": 59,
"order": 12,
"after_route_name": "Pok\u00e9mon League (Sinnoh)",
"after_route_name": "Pokémon League (Sinnoh)",
"location": "Pokemon League",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/lucian.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 122,
"pokemon_name": "Mr Mime",
"level": 59,
"order": 1
},
{
"pokeapi_id": 203,
"pokemon_name": "Girafarig",
"level": 59,
"order": 2
},
{
"pokeapi_id": 308,
"pokemon_name": "Medicham",
"level": 60,
"order": 3
},
{
"pokeapi_id": 65,
"pokemon_name": "Alakazam",
"level": 60,
"order": 4
},
{
"pokeapi_id": 437,
"pokemon_name": "Bronzong",
"level": 63,
"order": 5
}
]
},
{
"name": "Cynthia",
@@ -175,10 +463,47 @@
"badge_image_url": null,
"level_cap": 66,
"order": 13,
"after_route_name": "Pok\u00e9mon League (Sinnoh)",
"after_route_name": "Pokémon League (Sinnoh)",
"location": "Pokemon League",
"section": "Main Story",
"sprite_url": "/boss-sprites/diamond/cynthia.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 442,
"pokemon_name": "Spiritomb",
"level": 61,
"order": 1
},
{
"pokeapi_id": 407,
"pokemon_name": "Roserade",
"level": 60,
"order": 2
},
{
"pokeapi_id": 423,
"pokemon_name": "Gastrodon",
"level": 60,
"order": 3
},
{
"pokeapi_id": 448,
"pokemon_name": "Lucario",
"level": 63,
"order": 4
},
{
"pokeapi_id": 350,
"pokemon_name": "Milotic",
"level": 63,
"order": 5
},
{
"pokeapi_id": 445,
"pokemon_name": "Garchomp",
"level": 66,
"order": 6
}
]
}
]