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>
555 lines
12 KiB
JSON
555 lines
12 KiB
JSON
[
|
|
{
|
|
"name": "Brock",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "rock",
|
|
"badge_name": "Boulder Badge",
|
|
"badge_image_url": "/badges/boulder-badge.png",
|
|
"level_cap": 12,
|
|
"order": 1,
|
|
"after_route_name": "Viridian Forest",
|
|
"location": "Pewter Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/brock.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 74,
|
|
"pokemon_name": "Geodude",
|
|
"level": 10,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 95,
|
|
"pokemon_name": "Onix",
|
|
"level": 12,
|
|
"order": 2,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Misty",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "water",
|
|
"badge_name": "Cascade Badge",
|
|
"badge_image_url": "/badges/cascade-badge.png",
|
|
"level_cap": 21,
|
|
"order": 2,
|
|
"after_route_name": "Cerulean City",
|
|
"location": "Cerulean Gem",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/misty.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 120,
|
|
"pokemon_name": "Staryu",
|
|
"level": 18,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 121,
|
|
"pokemon_name": "Starmie",
|
|
"level": 21,
|
|
"order": 2,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Lt. Surge",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "electric",
|
|
"badge_name": "Thunder Badge",
|
|
"badge_image_url": "/badges/thunder-badge.png",
|
|
"level_cap": 28,
|
|
"order": 3,
|
|
"after_route_name": "Vermilion City",
|
|
"location": "Vermillion Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/lt-surge.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 26,
|
|
"pokemon_name": "Raichu",
|
|
"level": 28,
|
|
"order": 1,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Erika",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "grass",
|
|
"badge_name": "Rainbow Badge",
|
|
"badge_image_url": "/badges/rainbow-badge.png",
|
|
"level_cap": 32,
|
|
"order": 4,
|
|
"after_route_name": "Celadon City",
|
|
"location": "Celadon Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/erika.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 114,
|
|
"pokemon_name": "Tangela",
|
|
"level": 30,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 70,
|
|
"pokemon_name": "Weepinbell",
|
|
"level": 32,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 44,
|
|
"pokemon_name": "Gloom",
|
|
"level": 32,
|
|
"order": 3,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Sabrina",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "psychic",
|
|
"badge_name": "Marsh Badge",
|
|
"badge_image_url": "/badges/marsh-badge.png",
|
|
"level_cap": 50,
|
|
"order": 5,
|
|
"after_route_name": "Fighting Dojo",
|
|
"location": "Saffron Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/sabrina.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 63,
|
|
"pokemon_name": "Abra",
|
|
"level": 50,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 64,
|
|
"pokemon_name": "Kadabra",
|
|
"level": 50,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 65,
|
|
"pokemon_name": "Alakazam",
|
|
"level": 50,
|
|
"order": 3,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Koga",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "poison",
|
|
"badge_name": "Soul Badge",
|
|
"badge_image_url": "/badges/soul-badge.png",
|
|
"level_cap": 50,
|
|
"order": 6,
|
|
"after_route_name": "Fuchsia City",
|
|
"location": "Fuchsia Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/koga.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 48,
|
|
"pokemon_name": "Venonat",
|
|
"level": 44,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 48,
|
|
"pokemon_name": "Venonat",
|
|
"level": 46,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 48,
|
|
"pokemon_name": "Venonat",
|
|
"level": 48,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 49,
|
|
"pokemon_name": "Venomoth",
|
|
"level": 50,
|
|
"order": 4,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Blaine",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "fire",
|
|
"badge_name": "Volcano Badge",
|
|
"badge_image_url": "/badges/volcano-badge.png",
|
|
"level_cap": 54,
|
|
"order": 7,
|
|
"after_route_name": "Cinnabar Island",
|
|
"location": "Cinnabar Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/blaine.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 38,
|
|
"pokemon_name": "Ninetales",
|
|
"level": 48,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 78,
|
|
"pokemon_name": "Rapidash",
|
|
"level": 50,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 59,
|
|
"pokemon_name": "Arcanine",
|
|
"level": 54,
|
|
"order": 3,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Giovanni",
|
|
"boss_type": "gym_leader",
|
|
"specialty_type": "ground",
|
|
"badge_name": "Earth Badge",
|
|
"badge_image_url": "/badges/earth-badge.png",
|
|
"level_cap": 55,
|
|
"order": 8,
|
|
"after_route_name": "Route 23 (Kanto)",
|
|
"location": "Viridian Gym",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/giovanni.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 51,
|
|
"pokemon_name": "Dugtrio",
|
|
"level": 50,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 53,
|
|
"pokemon_name": "Persian",
|
|
"level": 53,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 31,
|
|
"pokemon_name": "Nidoqueen",
|
|
"level": 53,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 34,
|
|
"pokemon_name": "Nidoking",
|
|
"level": 55,
|
|
"order": 4,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 112,
|
|
"pokemon_name": "Rhydon",
|
|
"level": 55,
|
|
"order": 5,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Lorelei",
|
|
"boss_type": "elite_four",
|
|
"specialty_type": "ice",
|
|
"badge_name": null,
|
|
"badge_image_url": null,
|
|
"level_cap": 56,
|
|
"order": 9,
|
|
"after_route_name": "Indigo Plateau",
|
|
"location": "Indigo Plateau",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/lorelei.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 87,
|
|
"pokemon_name": "Dewgong",
|
|
"level": 54,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 91,
|
|
"pokemon_name": "Cloyster",
|
|
"level": 53,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 80,
|
|
"pokemon_name": "Slowbro",
|
|
"level": 54,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 124,
|
|
"pokemon_name": "Jynx",
|
|
"level": 56,
|
|
"order": 4,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 131,
|
|
"pokemon_name": "Lapras",
|
|
"level": 56,
|
|
"order": 5,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Bruno",
|
|
"boss_type": "elite_four",
|
|
"specialty_type": "fighting",
|
|
"badge_name": null,
|
|
"badge_image_url": null,
|
|
"level_cap": 58,
|
|
"order": 10,
|
|
"after_route_name": "Indigo Plateau",
|
|
"location": "Indigo Plateau",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/bruno.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 95,
|
|
"pokemon_name": "Onix",
|
|
"level": 53,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 107,
|
|
"pokemon_name": "Hitmonchan",
|
|
"level": 55,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 106,
|
|
"pokemon_name": "Hitmonlee",
|
|
"level": 55,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 95,
|
|
"pokemon_name": "Onix",
|
|
"level": 56,
|
|
"order": 4,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 68,
|
|
"pokemon_name": "Machamp",
|
|
"level": 58,
|
|
"order": 5,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Agatha",
|
|
"boss_type": "elite_four",
|
|
"specialty_type": "ghost",
|
|
"badge_name": null,
|
|
"badge_image_url": null,
|
|
"level_cap": 60,
|
|
"order": 11,
|
|
"after_route_name": "Indigo Plateau",
|
|
"location": "Indigo Plateau",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/agatha.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 94,
|
|
"pokemon_name": "Gengar",
|
|
"level": 56,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 42,
|
|
"pokemon_name": "Golbat",
|
|
"level": 56,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 93,
|
|
"pokemon_name": "Haunter",
|
|
"level": 55,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 24,
|
|
"pokemon_name": "Arbok",
|
|
"level": 58,
|
|
"order": 4,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 94,
|
|
"pokemon_name": "Gengar",
|
|
"level": 60,
|
|
"order": 5,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Lance",
|
|
"boss_type": "elite_four",
|
|
"specialty_type": "dragon",
|
|
"badge_name": null,
|
|
"badge_image_url": null,
|
|
"level_cap": 62,
|
|
"order": 12,
|
|
"after_route_name": "Indigo Plateau",
|
|
"location": "Indigo Plateau",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/lance.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 130,
|
|
"pokemon_name": "Gyarados",
|
|
"level": 58,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 148,
|
|
"pokemon_name": "Dragonair",
|
|
"level": 56,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 148,
|
|
"pokemon_name": "Dragonair",
|
|
"level": 56,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 142,
|
|
"pokemon_name": "Aerodactyl",
|
|
"level": 60,
|
|
"order": 4,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 149,
|
|
"pokemon_name": "Dragonite",
|
|
"level": 62,
|
|
"order": 5,
|
|
"condition_label": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Blue",
|
|
"boss_type": "champion",
|
|
"specialty_type": null,
|
|
"badge_name": null,
|
|
"badge_image_url": null,
|
|
"level_cap": 65,
|
|
"order": 13,
|
|
"after_route_name": "Indigo Plateau",
|
|
"location": "Indigo Plateau",
|
|
"section": null,
|
|
"sprite_url": "/boss-sprites/yellow/blue.png",
|
|
"pokemon": [
|
|
{
|
|
"pokeapi_id": 28,
|
|
"pokemon_name": "Sandslash",
|
|
"level": 61,
|
|
"order": 1,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 65,
|
|
"pokemon_name": "Alakazam",
|
|
"level": 59,
|
|
"order": 2,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 103,
|
|
"pokemon_name": "Exeggutor",
|
|
"level": 61,
|
|
"order": 3,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 38,
|
|
"pokemon_name": "Ninetales",
|
|
"level": 61,
|
|
"order": 4,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 82,
|
|
"pokemon_name": "Magneton",
|
|
"level": 63,
|
|
"order": 5,
|
|
"condition_label": null
|
|
},
|
|
{
|
|
"pokeapi_id": 134,
|
|
"pokemon_name": "Vaporeon",
|
|
"level": 65,
|
|
"order": 6,
|
|
"condition_label": "Rival has Vaporeon"
|
|
},
|
|
{
|
|
"pokeapi_id": 135,
|
|
"pokemon_name": "Jolteon",
|
|
"level": 65,
|
|
"order": 6,
|
|
"condition_label": "Rival has Jolteon"
|
|
},
|
|
{
|
|
"pokeapi_id": 136,
|
|
"pokemon_name": "Flareon",
|
|
"level": 65,
|
|
"order": 6,
|
|
"condition_label": "Rival has Flareon"
|
|
}
|
|
]
|
|
}
|
|
]
|