Files
nuzlocke-tracker/backend/src/app/seeds/data/crystal-bosses.json
Julian Tabel 3e7a6c9221 Add boss battle sprites, badge images, and fix seed data
- Download boss battle sprites from Bulbapedia for all 21 games (313 bosses)
- Download 36 missing badge images from Bulbapedia archives
- Fix non-square boss sprite stretching (use h-10 w-auto instead of w-10 h-10)
- Fix firered Giovanni seed data (badge was "50" instead of "Earth Badge",
  missing ground specialty_type)
- Add one-time fetch scripts for boss sprites and badges

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 10:38:00 +01:00

311 lines
8.2 KiB
JSON

[
{
"name": "Falkner",
"boss_type": "gym_leader",
"specialty_type": "flying",
"badge_name": "Zephyr Badge",
"badge_image_url": "/badges/zephyr-badge.png",
"level_cap": 9,
"order": 1,
"after_route_name": "Violet City",
"location": "Violet Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/falkner.png",
"pokemon": []
},
{
"name": "Bugsy",
"boss_type": "gym_leader",
"specialty_type": "bug",
"badge_name": "Hive Badge",
"badge_image_url": "/badges/hive-badge.png",
"level_cap": 16,
"order": 2,
"after_route_name": "Slowpoke Well",
"location": "Azalea Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/bugsy.png",
"pokemon": []
},
{
"name": "Whitney",
"boss_type": "gym_leader",
"specialty_type": "normal",
"badge_name": "Plain Badge",
"badge_image_url": "/badges/plain-badge.png",
"level_cap": 20,
"order": 3,
"after_route_name": "Goldenrod City",
"location": "Goldenrod Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/whitney.png",
"pokemon": []
},
{
"name": "Morty",
"boss_type": "gym_leader",
"specialty_type": "ghost",
"badge_name": "Fog Badge",
"badge_image_url": "/badges/fog-badge.png",
"level_cap": 25,
"order": 4,
"after_route_name": "Ecruteak City",
"location": "Ecruteak Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/morty.png",
"pokemon": []
},
{
"name": "Chuck",
"boss_type": "gym_leader",
"specialty_type": "fighting",
"badge_name": "Storm Badge",
"badge_image_url": "/badges/storm-badge.png",
"level_cap": 30,
"order": 5,
"after_route_name": "Cianwood City",
"location": "Cianwood Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/chuck.png",
"pokemon": []
},
{
"name": "Jasmine",
"boss_type": "gym_leader",
"specialty_type": "steel",
"badge_name": "Mineral Badge",
"badge_image_url": "/badges/mineral-badge.png",
"level_cap": 35,
"order": 6,
"after_route_name": "Cianwood City",
"location": "Olivine Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/jasmine.png",
"pokemon": []
},
{
"name": "Pryce",
"boss_type": "gym_leader",
"specialty_type": "ice",
"badge_name": "Glacier Badge",
"badge_image_url": "/badges/glacier-badge.png",
"level_cap": 31,
"order": 7,
"after_route_name": "Lake of Rage",
"location": "Mahogany Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/pryce.png",
"pokemon": []
},
{
"name": "Clair",
"boss_type": "gym_leader",
"specialty_type": "dragon",
"badge_name": "Rising Badge",
"badge_image_url": "/badges/rising-badge.png",
"level_cap": 40,
"order": 8,
"after_route_name": "Blackthorn City",
"location": "Blackthorn Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/clair.png",
"pokemon": []
},
{
"name": "Will",
"boss_type": "elite_four",
"specialty_type": "psychic",
"badge_name": null,
"badge_image_url": null,
"level_cap": 42,
"order": 9,
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/will.png",
"pokemon": []
},
{
"name": "Koga",
"boss_type": "elite_four",
"specialty_type": "poison",
"badge_name": null,
"badge_image_url": null,
"level_cap": 44,
"order": 10,
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/koga.png",
"pokemon": []
},
{
"name": "Bruno",
"boss_type": "elite_four",
"specialty_type": "fighting",
"badge_name": null,
"badge_image_url": null,
"level_cap": 46,
"order": 11,
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/bruno.png",
"pokemon": []
},
{
"name": "Karen",
"boss_type": "elite_four",
"specialty_type": "dark",
"badge_name": null,
"badge_image_url": null,
"level_cap": 47,
"order": 12,
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/karen.png",
"pokemon": []
},
{
"name": "Lance",
"boss_type": "champion",
"specialty_type": "dragon",
"badge_name": null,
"badge_image_url": null,
"level_cap": 50,
"order": 13,
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/crystal/lance.png",
"pokemon": []
},
{
"name": "Lt. Surge",
"boss_type": "gym_leader",
"specialty_type": "electric",
"badge_name": "Thunder Badge",
"badge_image_url": "/badges/thunder-badge.png",
"level_cap": 46,
"order": 14,
"after_route_name": "Vermilion City",
"location": "Vermilion Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/lt-surge.png",
"pokemon": []
},
{
"name": "Sabrina",
"boss_type": "gym_leader",
"specialty_type": "psychic",
"badge_name": "Marsh Badge",
"badge_image_url": "/badges/marsh-badge.png",
"level_cap": 48,
"order": 15,
"after_route_name": "Route 05 (Kanto)",
"location": "Saffron Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/sabrina.png",
"pokemon": []
},
{
"name": "Misty",
"boss_type": "gym_leader",
"specialty_type": "water",
"badge_name": "Cascade Badge",
"badge_image_url": "/badges/cascade-badge.png",
"level_cap": 47,
"order": 16,
"after_route_name": "Cerulean Cave (B1F)",
"location": "Cerulean Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/misty.png",
"pokemon": []
},
{
"name": "Erika",
"boss_type": "gym_leader",
"specialty_type": "grass",
"badge_name": "Rainbow Badge",
"badge_image_url": "/badges/rainbow-badge.png",
"level_cap": 46,
"order": 17,
"after_route_name": "Celadon City",
"location": "Celadon Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/erika.png",
"pokemon": []
},
{
"name": "Janine",
"boss_type": "gym_leader",
"specialty_type": "poison",
"badge_name": "Soul Badge",
"badge_image_url": "/badges/soul-badge.png",
"level_cap": 39,
"order": 18,
"after_route_name": "Fuchsia City",
"location": "Fuchsia Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/janine.png",
"pokemon": []
},
{
"name": "Brock",
"boss_type": "gym_leader",
"specialty_type": "rock",
"badge_name": "Boulder Badge",
"badge_image_url": "/badges/boulder-badge.png",
"level_cap": 44,
"order": 19,
"after_route_name": "Pewter City",
"location": "Pewter Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/brock.png",
"pokemon": []
},
{
"name": "Blaine",
"boss_type": "gym_leader",
"specialty_type": "fire",
"badge_name": "Volcano Badge",
"badge_image_url": "/badges/volcano-badge.png",
"level_cap": 50,
"order": 20,
"after_route_name": "Cinnabar Island",
"location": "Cinnabar Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/blaine.png",
"pokemon": []
},
{
"name": "Blue",
"boss_type": "gym_leader",
"specialty_type": null,
"badge_name": "Earth Badge",
"badge_image_url": "/badges/earth-badge.png",
"level_cap": 58,
"order": 21,
"after_route_name": "Viridian City",
"location": "Viridian Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/blue.png",
"pokemon": []
},
{
"name": "Red",
"boss_type": "other",
"specialty_type": null,
"badge_name": null,
"badge_image_url": null,
"level_cap": 81,
"order": 22,
"after_route_name": "Mt. Silver (Cave Full Restore Chamber)",
"location": "Silver Cave",
"section": "Endgame",
"sprite_url": "/boss-sprites/crystal/red.png",
"pokemon": []
}
]