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>
This commit is contained in:
2026-02-14 10:38:00 +01:00
parent c01c504519
commit 3e7a6c9221
208 changed files with 629 additions and 77 deletions

View File

@@ -10,7 +10,7 @@
"after_route_name": "Violet City",
"location": "Violet Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/falkner.png",
"sprite_url": "/boss-sprites/crystal/falkner.png",
"pokemon": []
},
{
@@ -24,7 +24,7 @@
"after_route_name": "Slowpoke Well",
"location": "Azalea Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/bugsy.png",
"sprite_url": "/boss-sprites/crystal/bugsy.png",
"pokemon": []
},
{
@@ -38,7 +38,7 @@
"after_route_name": "Goldenrod City",
"location": "Goldenrod Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/whitney.png",
"sprite_url": "/boss-sprites/crystal/whitney.png",
"pokemon": []
},
{
@@ -52,7 +52,7 @@
"after_route_name": "Ecruteak City",
"location": "Ecruteak Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/morty.png",
"sprite_url": "/boss-sprites/crystal/morty.png",
"pokemon": []
},
{
@@ -66,7 +66,7 @@
"after_route_name": "Cianwood City",
"location": "Cianwood Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/chuck.png",
"sprite_url": "/boss-sprites/crystal/chuck.png",
"pokemon": []
},
{
@@ -80,7 +80,7 @@
"after_route_name": "Cianwood City",
"location": "Olivine Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/jasmine.png",
"sprite_url": "/boss-sprites/crystal/jasmine.png",
"pokemon": []
},
{
@@ -94,7 +94,7 @@
"after_route_name": "Lake of Rage",
"location": "Mahogany Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/pryce.png",
"sprite_url": "/boss-sprites/crystal/pryce.png",
"pokemon": []
},
{
@@ -108,7 +108,7 @@
"after_route_name": "Blackthorn City",
"location": "Blackthorn Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/clair.png",
"sprite_url": "/boss-sprites/crystal/clair.png",
"pokemon": []
},
{
@@ -122,7 +122,7 @@
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/will.png",
"sprite_url": "/boss-sprites/crystal/will.png",
"pokemon": []
},
{
@@ -136,7 +136,7 @@
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/koga.png",
"sprite_url": "/boss-sprites/crystal/koga.png",
"pokemon": []
},
{
@@ -150,7 +150,7 @@
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/bruno.png",
"sprite_url": "/boss-sprites/crystal/bruno.png",
"pokemon": []
},
{
@@ -164,7 +164,7 @@
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/karen.png",
"sprite_url": "/boss-sprites/crystal/karen.png",
"pokemon": []
},
{
@@ -178,7 +178,7 @@
"after_route_name": "Victory Road (Kanto)",
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": "/boss-sprites/gold/lance.png",
"sprite_url": "/boss-sprites/crystal/lance.png",
"pokemon": []
},
{
@@ -192,7 +192,7 @@
"after_route_name": "Vermilion City",
"location": "Vermilion Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/lt-surge.png",
"sprite_url": "/boss-sprites/crystal/lt-surge.png",
"pokemon": []
},
{
@@ -206,7 +206,7 @@
"after_route_name": "Route 05 (Kanto)",
"location": "Saffron Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/sabrina.png",
"sprite_url": "/boss-sprites/crystal/sabrina.png",
"pokemon": []
},
{
@@ -220,7 +220,7 @@
"after_route_name": "Cerulean Cave (B1F)",
"location": "Cerulean Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/misty.png",
"sprite_url": "/boss-sprites/crystal/misty.png",
"pokemon": []
},
{
@@ -234,7 +234,7 @@
"after_route_name": "Celadon City",
"location": "Celadon Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/erika.png",
"sprite_url": "/boss-sprites/crystal/erika.png",
"pokemon": []
},
{
@@ -248,7 +248,7 @@
"after_route_name": "Fuchsia City",
"location": "Fuchsia Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/janine.png",
"sprite_url": "/boss-sprites/crystal/janine.png",
"pokemon": []
},
{
@@ -262,7 +262,7 @@
"after_route_name": "Pewter City",
"location": "Pewter Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/brock.png",
"sprite_url": "/boss-sprites/crystal/brock.png",
"pokemon": []
},
{
@@ -276,7 +276,7 @@
"after_route_name": "Cinnabar Island",
"location": "Cinnabar Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/blaine.png",
"sprite_url": "/boss-sprites/crystal/blaine.png",
"pokemon": []
},
{
@@ -290,7 +290,7 @@
"after_route_name": "Viridian City",
"location": "Viridian Gym",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/blue.png",
"sprite_url": "/boss-sprites/crystal/blue.png",
"pokemon": []
},
{
@@ -304,7 +304,7 @@
"after_route_name": "Mt. Silver (Cave Full Restore Chamber)",
"location": "Silver Cave",
"section": "Endgame",
"sprite_url": "/boss-sprites/gold/red.png",
"sprite_url": "/boss-sprites/crystal/red.png",
"pokemon": []
}
]

View File

@@ -10,7 +10,7 @@
"after_route_name": "Rustboro City",
"location": "Rustboro Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/roxanne.png",
"sprite_url": "/boss-sprites/emerald/roxanne.png",
"pokemon": []
},
{
@@ -24,7 +24,7 @@
"after_route_name": "Dewford Town",
"location": "Dewford Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/brawly.png",
"sprite_url": "/boss-sprites/emerald/brawly.png",
"pokemon": []
},
{
@@ -38,7 +38,7 @@
"after_route_name": "Hoenn Route 110",
"location": "Mauville Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/wattson.png",
"sprite_url": "/boss-sprites/emerald/wattson.png",
"pokemon": []
},
{
@@ -52,7 +52,7 @@
"after_route_name": "Lavaridge Town",
"location": "Lavaridge Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/flannery.png",
"sprite_url": "/boss-sprites/emerald/flannery.png",
"pokemon": []
},
{
@@ -66,7 +66,7 @@
"after_route_name": "Desert Ruins",
"location": "Petalburg Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/norman.png",
"sprite_url": "/boss-sprites/emerald/norman.png",
"pokemon": []
},
{
@@ -80,7 +80,7 @@
"after_route_name": "Fortree City",
"location": "Foretree Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/winona.png",
"sprite_url": "/boss-sprites/emerald/winona.png",
"pokemon": []
},
{
@@ -94,7 +94,7 @@
"after_route_name": "Mossdeep City",
"location": "Mossdeep Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/tate--lisa.png",
"sprite_url": "/boss-sprites/emerald/tate--lisa.png",
"pokemon": []
},
{
@@ -108,7 +108,7 @@
"after_route_name": "Sootopolis City",
"location": "Sootopolis Gym",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/juan.png",
"sprite_url": "/boss-sprites/emerald/juan.png",
"pokemon": []
},
{
@@ -122,7 +122,7 @@
"after_route_name": "Victory Road (Hoenn)",
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/sydney.png",
"sprite_url": "/boss-sprites/emerald/sydney.png",
"pokemon": []
},
{
@@ -136,7 +136,7 @@
"after_route_name": "Victory Road (Hoenn)",
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/phoebe.png",
"sprite_url": "/boss-sprites/emerald/phoebe.png",
"pokemon": []
},
{
@@ -150,7 +150,7 @@
"after_route_name": "Victory Road (Hoenn)",
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/glacia.png",
"sprite_url": "/boss-sprites/emerald/glacia.png",
"pokemon": []
},
{
@@ -164,7 +164,7 @@
"after_route_name": "Victory Road (Hoenn)",
"location": "Ever Grande City",
"section": "Main Story",
"sprite_url": "/boss-sprites/ruby/drake.png",
"sprite_url": "/boss-sprites/emerald/drake.png",
"pokemon": []
},
{

View File

@@ -145,9 +145,9 @@
{
"name": "Giovanni",
"boss_type": "gym_leader",
"specialty_type": null,
"badge_name": "50",
"badge_image_url": "/badges/50.png",
"specialty_type": "ground",
"badge_name": "Earth Badge",
"badge_image_url": "/badges/earth-badge.png",
"level_cap": 50,
"order": 8,
"after_route_name": null,
@@ -167,7 +167,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": null,
"sprite_url": null,
"sprite_url": "/boss-sprites/firered/lorelei.png",
"pokemon": []
},
{
@@ -181,7 +181,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": null,
"sprite_url": null,
"sprite_url": "/boss-sprites/firered/bruno.png",
"pokemon": []
},
{
@@ -195,7 +195,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": null,
"sprite_url": null,
"sprite_url": "/boss-sprites/firered/agatha.png",
"pokemon": []
},
{
@@ -209,7 +209,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": null,
"sprite_url": null,
"sprite_url": "/boss-sprites/firered/lance.png",
"pokemon": []
},
{
@@ -223,7 +223,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": null,
"sprite_url": null,
"sprite_url": "/boss-sprites/firered/blue.png",
"pokemon": [
{
"pokeapi_id": 18,

View File

@@ -122,7 +122,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": null,
"sprite_url": "/boss-sprites/heartgold/will.png",
"pokemon": []
},
{
@@ -136,7 +136,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": null,
"sprite_url": "/boss-sprites/heartgold/koga.png",
"pokemon": []
},
{
@@ -150,7 +150,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": null,
"sprite_url": "/boss-sprites/heartgold/bruno.png",
"pokemon": []
},
{
@@ -164,7 +164,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": null,
"sprite_url": "/boss-sprites/heartgold/karen.png",
"pokemon": []
},
{
@@ -178,7 +178,7 @@
"after_route_name": null,
"location": "Indigo Plateau",
"section": "Main Story",
"sprite_url": null,
"sprite_url": "/boss-sprites/heartgold/lance.png",
"pokemon": []
},
{
@@ -304,7 +304,7 @@
"after_route_name": null,
"location": "Silver Cave",
"section": "Endgame",
"sprite_url": null,
"sprite_url": "/boss-sprites/heartgold/red.png",
"pokemon": []
}
]

View File

@@ -10,7 +10,7 @@
"after_route_name": null,
"location": "Grandtree Arena",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/lord-kleavor.png",
"sprite_url": "/sprites/900.webp",
"pokemon": []
},
{
@@ -24,7 +24,7 @@
"after_route_name": null,
"location": "Brava Arena",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/lady-lilligant.png",
"sprite_url": "/sprites/10237.webp",
"pokemon": []
},
{
@@ -38,7 +38,7 @@
"after_route_name": null,
"location": "Molten Arena",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/lord-arcanine.png",
"sprite_url": "/sprites/10230.webp",
"pokemon": []
},
{
@@ -52,7 +52,7 @@
"after_route_name": null,
"location": "Moonview Arena",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/lord-electrode.png",
"sprite_url": "/sprites/10232.webp",
"pokemon": []
},
{
@@ -66,7 +66,7 @@
"after_route_name": null,
"location": "Icepeak Arena",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/lord-avalugg.png",
"sprite_url": "/sprites/10243.webp",
"pokemon": []
},
{
@@ -80,7 +80,7 @@
"after_route_name": null,
"location": "Temple of Sinnoh",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/origin-dialga--palkia.png",
"sprite_url": "/sprites/10245.webp",
"pokemon": []
},
{
@@ -94,7 +94,7 @@
"after_route_name": null,
"location": "Temple of Sinnoh",
"section": "Main Story",
"sprite_url": "/boss-sprites/legends-arceus/arceus.png",
"sprite_url": "/sprites/493.webp",
"pokemon": []
}
]

View File

@@ -276,7 +276,7 @@
"after_route_name": null,
"location": "South Province (Area Three)",
"section": "Path of Legends",
"sprite_url": "/boss-sprites/scarlet/stony-cliff-titan.png",
"sprite_url": "/sprites/950.webp",
"pokemon": []
},
{
@@ -290,7 +290,7 @@
"after_route_name": null,
"location": "West Province (Area One)",
"section": "Path of Legends",
"sprite_url": "/boss-sprites/scarlet/open-sky-titan.png",
"sprite_url": "/sprites/962.webp",
"pokemon": []
},
{
@@ -304,7 +304,7 @@
"after_route_name": null,
"location": "East Province (Area Three)",
"section": "Path of Legends",
"sprite_url": "/boss-sprites/scarlet/lurking-steel-titan.png",
"sprite_url": "/sprites/968.webp",
"pokemon": []
},
{
@@ -318,7 +318,7 @@
"after_route_name": null,
"location": "Asado Desert",
"section": "Path of Legends",
"sprite_url": "/boss-sprites/scarlet/quaking-earth-titan.png",
"sprite_url": "/sprites/984.webp",
"pokemon": []
},
{
@@ -332,7 +332,7 @@
"after_route_name": null,
"location": "Casseroya Lake",
"section": "Path of Legends",
"sprite_url": "/boss-sprites/scarlet/false-dragon-titan.png",
"sprite_url": "/sprites/977.webp",
"pokemon": []
}
]

View File

@@ -10,7 +10,7 @@
"after_route_name": null,
"location": "Verdant Cavern",
"section": "Melemele Island",
"sprite_url": "/boss-sprites/sun/totem-gumshoos.png",
"sprite_url": "/sprites/735.webp",
"pokemon": []
},
{
@@ -38,7 +38,7 @@
"after_route_name": null,
"location": "Brooklet Hill",
"section": "Akala Island",
"sprite_url": "/boss-sprites/sun/totem-wishiwashi.png",
"sprite_url": "/sprites/746.webp",
"pokemon": []
},
{
@@ -52,7 +52,7 @@
"after_route_name": null,
"location": "Wela Volcano Park",
"section": "Akala Island",
"sprite_url": "/boss-sprites/sun/totem-salazzle.png",
"sprite_url": "/sprites/758.webp",
"pokemon": []
},
{
@@ -66,7 +66,7 @@
"after_route_name": null,
"location": "Lush Jungle",
"section": "Akala Island",
"sprite_url": "/boss-sprites/sun/totem-lurantis.png",
"sprite_url": "/sprites/754.webp",
"pokemon": []
},
{
@@ -94,7 +94,7 @@
"after_route_name": null,
"location": "Hokulani Observatory",
"section": "Ula'ula Island",
"sprite_url": "/boss-sprites/sun/totem-vikavolt.png",
"sprite_url": "/sprites/738.webp",
"pokemon": []
},
{
@@ -108,7 +108,7 @@
"after_route_name": null,
"location": "Thrifty Megamart",
"section": "Ula'ula Island",
"sprite_url": "/boss-sprites/sun/totem-mimikyu.png",
"sprite_url": "/sprites/778.webp",
"pokemon": []
},
{
@@ -136,7 +136,7 @@
"after_route_name": null,
"location": "Vast Poni Canyon",
"section": "Poni Island",
"sprite_url": "/boss-sprites/sun/totem-kommo-o.png",
"sprite_url": "/sprites/784.webp",
"pokemon": []
},
{

View File

@@ -10,7 +10,7 @@
"after_route_name": null,
"location": "Verdant Cavern",
"section": "Melemele Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-gumshoos.png",
"sprite_url": "/sprites/735.webp",
"pokemon": []
},
{
@@ -38,7 +38,7 @@
"after_route_name": null,
"location": "Brooklet Hill",
"section": "Akala Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-araquanid.png",
"sprite_url": "/sprites/752.webp",
"pokemon": []
},
{
@@ -52,7 +52,7 @@
"after_route_name": null,
"location": "Wela Volcano Park",
"section": "Akala Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-salazzle.png",
"sprite_url": "/sprites/758.webp",
"pokemon": []
},
{
@@ -66,7 +66,7 @@
"after_route_name": null,
"location": "Lush Jungle",
"section": "Akala Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-lurantis.png",
"sprite_url": "/sprites/754.webp",
"pokemon": []
},
{
@@ -94,7 +94,7 @@
"after_route_name": null,
"location": "Hokulani Observatory",
"section": "Ula'ula Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-vikavolt.png",
"sprite_url": "/sprites/738.webp",
"pokemon": []
},
{
@@ -108,7 +108,7 @@
"after_route_name": null,
"location": "Thrifty Megamart",
"section": "Ula'ula Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-mimikyu.png",
"sprite_url": "/sprites/778.webp",
"pokemon": []
},
{
@@ -122,7 +122,7 @@
"after_route_name": null,
"location": "Hokulani Observatory",
"section": "Ula'ula Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-togedemaru.png",
"sprite_url": "/sprites/777.webp",
"pokemon": []
},
{
@@ -150,7 +150,7 @@
"after_route_name": null,
"location": "Vast Poni Canyon",
"section": "Poni Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-kommo-o.png",
"sprite_url": "/sprites/784.webp",
"pokemon": []
},
{
@@ -164,7 +164,7 @@
"after_route_name": null,
"location": "Seafolk Village",
"section": "Poni Island",
"sprite_url": "/boss-sprites/ultra-sun/totem-ribombee.png",
"sprite_url": "/sprites/743.webp",
"pokemon": []
},
{