Download badge and boss sprite images locally during export
The seed export command now downloads badge images and boss sprites from remote URLs and stores them in frontend/public/, rewriting the JSON URLs to local paths. Sprites are namespaced by game version (e.g. /boss-sprites/red/brock.png) so each generation can have its own sprite style. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,13 +4,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "rock",
|
||||
"badge_name": "Stone Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/6/63/Stone_Badge.png/35px-Stone_Badge.png",
|
||||
"badge_image_url": "/badges/stone-badge.png",
|
||||
"level_cap": 15,
|
||||
"order": 1,
|
||||
"after_route_name": "Rustboro City",
|
||||
"location": "Rustboro Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/6/63/Stone_Badge.png/35px-Stone_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/roxanne.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -18,13 +18,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "fighting",
|
||||
"badge_name": "Knuckle Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/9/97/Knuckle_Badge.png/35px-Knuckle_Badge.png",
|
||||
"badge_image_url": "/badges/knuckle-badge.png",
|
||||
"level_cap": 18,
|
||||
"order": 2,
|
||||
"after_route_name": "Dewford Town",
|
||||
"location": "Dewford Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/9/97/Knuckle_Badge.png/35px-Knuckle_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/brawly.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -32,13 +32,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "electric",
|
||||
"badge_name": "Dynamo Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/3/34/Dynamo_Badge.png/35px-Dynamo_Badge.png",
|
||||
"badge_image_url": "/badges/dynamo-badge.png",
|
||||
"level_cap": 23,
|
||||
"order": 3,
|
||||
"after_route_name": "Route 110",
|
||||
"location": "Mauville Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/3/34/Dynamo_Badge.png/35px-Dynamo_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/wattson.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -46,13 +46,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "fire",
|
||||
"badge_name": "Heat Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/c/c4/Heat_Badge.png/35px-Heat_Badge.png",
|
||||
"badge_image_url": "/badges/heat-badge.png",
|
||||
"level_cap": 28,
|
||||
"order": 4,
|
||||
"after_route_name": "Lavaridge Town",
|
||||
"location": "Lavaridge Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/c/c4/Heat_Badge.png/35px-Heat_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/flannery.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -60,13 +60,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "normal",
|
||||
"badge_name": "Balance Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/6/63/Balance_Badge.png/35px-Balance_Badge.png",
|
||||
"badge_image_url": "/badges/balance-badge.png",
|
||||
"level_cap": 31,
|
||||
"order": 5,
|
||||
"after_route_name": "Route 115",
|
||||
"location": "Petalburg Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/6/63/Balance_Badge.png/35px-Balance_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/norman.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -74,13 +74,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "flying",
|
||||
"badge_name": "Feather Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/6/62/Feather_Badge.png/35px-Feather_Badge.png",
|
||||
"badge_image_url": "/badges/feather-badge.png",
|
||||
"level_cap": 33,
|
||||
"order": 6,
|
||||
"after_route_name": "Route 119",
|
||||
"location": "Foretree Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/6/62/Feather_Badge.png/35px-Feather_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/winona.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -88,13 +88,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "psychic",
|
||||
"badge_name": "Mind Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/c/cc/Mind_Badge.png/35px-Mind_Badge.png",
|
||||
"badge_image_url": "/badges/mind-badge.png",
|
||||
"level_cap": 42,
|
||||
"order": 7,
|
||||
"after_route_name": "Mossdeep City",
|
||||
"location": "Mossdeep Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/c/cc/Mind_Badge.png/35px-Mind_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/tate--lisa.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
@@ -102,13 +102,13 @@
|
||||
"boss_type": "gym_leader",
|
||||
"specialty_type": "water",
|
||||
"badge_name": "Rain Badge",
|
||||
"badge_image_url": "https://archives.bulbagarden.net/media/upload/thumb/9/9b/Rain_Badge.png/35px-Rain_Badge.png",
|
||||
"badge_image_url": "/badges/rain-badge.png",
|
||||
"level_cap": 43,
|
||||
"order": 8,
|
||||
"after_route_name": "Sootopolis City",
|
||||
"location": "Sootopolis Gym",
|
||||
"section": "Main Story",
|
||||
"sprite_url": "https://archives.bulbagarden.net/media/upload/thumb/9/9b/Rain_Badge.png/35px-Rain_Badge.png",
|
||||
"sprite_url": "/boss-sprites/ruby/wallace.png",
|
||||
"pokemon": []
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user