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

View File

@@ -11,7 +11,20 @@
"location": "Rustboro Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/roxanne.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 74,
"pokemon_name": "Geodude",
"level": 14,
"order": 1
},
{
"pokeapi_id": 299,
"pokemon_name": "Nosepass",
"level": 15,
"order": 2
}
]
},
{
"name": "Brawly",
@@ -25,7 +38,20 @@
"location": "Dewford Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/brawly.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 66,
"pokemon_name": "Machop",
"level": 17,
"order": 1
},
{
"pokeapi_id": 296,
"pokemon_name": "Makuhita",
"level": 18,
"order": 2
}
]
},
{
"name": "Wattson",
@@ -39,7 +65,26 @@
"location": "Mauville Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/wattson.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 100,
"pokemon_name": "Voltorb",
"level": 20,
"order": 1
},
{
"pokeapi_id": 81,
"pokemon_name": "Magnemite",
"level": 22,
"order": 2
},
{
"pokeapi_id": 82,
"pokemon_name": "Magneton",
"level": 23,
"order": 3
}
]
},
{
"name": "Flannery",
@@ -53,7 +98,26 @@
"location": "Lavaridge Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/flannery.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 218,
"pokemon_name": "Slugma",
"level": 26,
"order": 1
},
{
"pokeapi_id": 218,
"pokemon_name": "Slugma",
"level": 26,
"order": 2
},
{
"pokeapi_id": 324,
"pokemon_name": "Torkoal",
"level": 28,
"order": 3
}
]
},
{
"name": "Norman",
@@ -67,7 +131,26 @@
"location": "Petalburg Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/norman.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 289,
"pokemon_name": "Slaking",
"level": 28,
"order": 1
},
{
"pokeapi_id": 288,
"pokemon_name": "Vigoroth",
"level": 30,
"order": 2
},
{
"pokeapi_id": 289,
"pokemon_name": "Slaking",
"level": 31,
"order": 3
}
]
},
{
"name": "Winona",
@@ -81,7 +164,32 @@
"location": "Foretree Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/winona.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 277,
"pokemon_name": "Swellow",
"level": 31,
"order": 1
},
{
"pokeapi_id": 279,
"pokemon_name": "Pelipper",
"level": 30,
"order": 2
},
{
"pokeapi_id": 227,
"pokemon_name": "Skarmory",
"level": 32,
"order": 3
},
{
"pokeapi_id": 334,
"pokemon_name": "Altaria",
"level": 33,
"order": 4
}
]
},
{
"name": "Tate & Lisa",
@@ -95,7 +203,20 @@
"location": "Mossdeep Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/tate--lisa.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 337,
"pokemon_name": "Lunatone",
"level": 42,
"order": 1
},
{
"pokeapi_id": 338,
"pokemon_name": "Solrock",
"level": 42,
"order": 2
}
]
},
{
"name": "Wallace",
@@ -109,7 +230,38 @@
"location": "Sootopolis Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/wallace.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 370,
"pokemon_name": "Luvdisc",
"level": 40,
"order": 1
},
{
"pokeapi_id": 364,
"pokemon_name": "Sealeo",
"level": 40,
"order": 2
},
{
"pokeapi_id": 119,
"pokemon_name": "Seaking",
"level": 42,
"order": 3
},
{
"pokeapi_id": 340,
"pokemon_name": "Whiscash",
"level": 42,
"order": 4
},
{
"pokeapi_id": 350,
"pokemon_name": "Milotic",
"level": 43,
"order": 5
}
]
},
{
"name": "Sydney",
@@ -123,7 +275,38 @@
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/sydney.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 262,
"pokemon_name": "Mightyena",
"level": 46,
"order": 1
},
{
"pokeapi_id": 275,
"pokemon_name": "Shiftry",
"level": 48,
"order": 2
},
{
"pokeapi_id": 332,
"pokemon_name": "Cacturne",
"level": 46,
"order": 3
},
{
"pokeapi_id": 319,
"pokemon_name": "Sharpedo",
"level": 48,
"order": 4
},
{
"pokeapi_id": 359,
"pokemon_name": "Absol",
"level": 49,
"order": 5
}
]
},
{
"name": "Phoebe",
@@ -137,7 +320,38 @@
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/phoebe.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 356,
"pokemon_name": "Dusclops",
"level": 48,
"order": 1
},
{
"pokeapi_id": 354,
"pokemon_name": "Banette",
"level": 49,
"order": 2
},
{
"pokeapi_id": 302,
"pokemon_name": "Sableye",
"level": 50,
"order": 3
},
{
"pokeapi_id": 354,
"pokemon_name": "Banette",
"level": 49,
"order": 4
},
{
"pokeapi_id": 356,
"pokemon_name": "Dusclops",
"level": 51,
"order": 5
}
]
},
{
"name": "Glacia",
@@ -151,7 +365,38 @@
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/glacia.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 362,
"pokemon_name": "Glalie",
"level": 50,
"order": 1
},
{
"pokeapi_id": 364,
"pokemon_name": "Sealeo",
"level": 50,
"order": 2
},
{
"pokeapi_id": 364,
"pokemon_name": "Sealeo",
"level": 52,
"order": 3
},
{
"pokeapi_id": 362,
"pokemon_name": "Glalie",
"level": 52,
"order": 4
},
{
"pokeapi_id": 365,
"pokemon_name": "Walrein",
"level": 53,
"order": 5
}
]
},
{
"name": "Drake",
@@ -165,7 +410,38 @@
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/drake.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 372,
"pokemon_name": "Shelgon",
"level": 52,
"order": 1
},
{
"pokeapi_id": 334,
"pokemon_name": "Altaria",
"level": 54,
"order": 2
},
{
"pokeapi_id": 330,
"pokemon_name": "Flygon",
"level": 53,
"order": 3
},
{
"pokeapi_id": 330,
"pokemon_name": "Flygon",
"level": 53,
"order": 4
},
{
"pokeapi_id": 373,
"pokemon_name": "Salamence",
"level": 55,
"order": 5
}
]
},
{
"name": "Steven",
@@ -179,6 +455,43 @@
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/steven.png",
"pokemon": []
"pokemon": [
{
"pokeapi_id": 227,
"pokemon_name": "Skarmory",
"level": 57,
"order": 1
},
{
"pokeapi_id": 344,
"pokemon_name": "Claydol",
"level": 55,
"order": 2
},
{
"pokeapi_id": 306,
"pokemon_name": "Aggron",
"level": 56,
"order": 3
},
{
"pokeapi_id": 346,
"pokemon_name": "Cradily",
"level": 56,
"order": 4
},
{
"pokeapi_id": 348,
"pokemon_name": "Armaldo",
"level": 56,
"order": 5
},
{
"pokeapi_id": 376,
"pokemon_name": "Metagross",
"level": 58,
"order": 6
}
]
}
]