From cb027e521565e47639bbce2ee03308d9156351dd Mon Sep 17 00:00:00 2001 From: Julian Tabel Date: Sat, 7 Feb 2026 14:35:30 +0100 Subject: [PATCH] Extract version groups and route ordering to separate JSON files Moves ~850 lines of inline data from fetch_pokeapi.py into version_groups.json and route_order.json for easier editing. Co-Authored-By: Claude Opus 4.6 --- ...rsion-groups-and-route-ordering-to-json.md | 11 + ...ker-94v0--handle-pokemon-forms-properly.md | 4 +- backend/src/app/seeds/fetch_pokeapi.py | 849 +----------------- backend/src/app/seeds/route_order.json | 422 +++++++++ backend/src/app/seeds/version_groups.json | 395 ++++++++ 5 files changed, 846 insertions(+), 835 deletions(-) create mode 100644 .beans/nuzlocke-tracker-0pas--extract-version-groups-and-route-ordering-to-json.md create mode 100644 backend/src/app/seeds/route_order.json create mode 100644 backend/src/app/seeds/version_groups.json diff --git a/.beans/nuzlocke-tracker-0pas--extract-version-groups-and-route-ordering-to-json.md b/.beans/nuzlocke-tracker-0pas--extract-version-groups-and-route-ordering-to-json.md new file mode 100644 index 0000000..500804e --- /dev/null +++ b/.beans/nuzlocke-tracker-0pas--extract-version-groups-and-route-ordering-to-json.md @@ -0,0 +1,11 @@ +--- +# nuzlocke-tracker-0pas +title: Extract version groups and route ordering to JSON files +status: completed +type: task +priority: normal +created_at: 2026-02-07T13:27:37Z +updated_at: 2026-02-07T13:32:30Z +--- + +Move VERSION_GROUPS and ROUTE_ORDER from fetch_pokeapi.py into separate JSON files (version_groups.json, route_order.json) for easier editing. Update the script to load from the JSON files. \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-94v0--handle-pokemon-forms-properly.md b/.beans/nuzlocke-tracker-94v0--handle-pokemon-forms-properly.md index 97fc3fa..8ea2409 100644 --- a/.beans/nuzlocke-tracker-94v0--handle-pokemon-forms-properly.md +++ b/.beans/nuzlocke-tracker-94v0--handle-pokemon-forms-properly.md @@ -1,11 +1,11 @@ --- # nuzlocke-tracker-94v0 title: Handle Pokemon Forms properly -status: draft +status: scrapped type: task priority: normal created_at: 2026-02-05T17:47:30Z -updated_at: 2026-02-05T17:48:15Z +updated_at: 2026-02-07T13:21:32Z --- Some pokemon have different forms, either regional forms or based on other criteria. They behave differently, are different encounters and might have different evolutions. This needs to be handled. diff --git a/backend/src/app/seeds/fetch_pokeapi.py b/backend/src/app/seeds/fetch_pokeapi.py index 9233341..04cb5c6 100644 --- a/backend/src/app/seeds/fetch_pokeapi.py +++ b/backend/src/app/seeds/fetch_pokeapi.py @@ -35,411 +35,22 @@ def extract_id(url: str) -> int: return int(url.rstrip("/").split("/")[-1]) -# Game definitions - Gen 1 through Gen 8 -VERSION_GROUPS = { - # === Generation 1 === - "red-blue": { - "versions": ["red", "blue"], - "generation": 1, - "region": "kanto", - "region_id": 1, - "games": { - "red": { - "name": "Pokemon Red", - "slug": "red", - "release_year": 1996, - "color": "#FF1111", - }, - "blue": { - "name": "Pokemon Blue", - "slug": "blue", - "release_year": 1996, - "color": "#1111FF", - }, - }, - }, - "yellow": { - "versions": ["yellow"], - "generation": 1, - "region": "kanto", - "region_id": 1, - "games": { - "yellow": { - "name": "Pokemon Yellow", - "slug": "yellow", - "release_year": 1998, - "color": "#FFD733", - }, - }, - }, - # === Generation 2 === - "gold-silver": { - "versions": ["gold", "silver"], - "generation": 2, - "region": "johto", - "region_id": 2, - "extra_regions": [1], # Kanto post-game - "games": { - "gold": { - "name": "Pokemon Gold", - "slug": "gold", - "release_year": 1999, - "color": "#DAA520", - }, - "silver": { - "name": "Pokemon Silver", - "slug": "silver", - "release_year": 1999, - "color": "#C0C0C0", - }, - }, - }, - "crystal": { - "versions": ["crystal"], - "generation": 2, - "region": "johto", - "region_id": 2, - "extra_regions": [1], # Kanto post-game - "games": { - "crystal": { - "name": "Pokemon Crystal", - "slug": "crystal", - "release_year": 2000, - "color": "#4FD9FF", - }, - }, - }, - # === Generation 3 === - "ruby-sapphire": { - "versions": ["ruby", "sapphire"], - "generation": 3, - "region": "hoenn", - "region_id": 3, - "games": { - "ruby": { - "name": "Pokemon Ruby", - "slug": "ruby", - "release_year": 2002, - "color": "#A00000", - }, - "sapphire": { - "name": "Pokemon Sapphire", - "slug": "sapphire", - "release_year": 2002, - "color": "#0000A0", - }, - }, - }, - "emerald": { - "versions": ["emerald"], - "generation": 3, - "region": "hoenn", - "region_id": 3, - "games": { - "emerald": { - "name": "Pokemon Emerald", - "slug": "emerald", - "release_year": 2005, - "color": "#00A000", - }, - }, - }, - "firered-leafgreen": { - "versions": ["firered", "leafgreen"], - "generation": 3, - "region": "kanto", - "region_id": 1, - "games": { - "firered": { - "name": "Pokemon FireRed", - "slug": "firered", - "release_year": 2004, - "color": "#FF7327", - }, - "leafgreen": { - "name": "Pokemon LeafGreen", - "slug": "leafgreen", - "release_year": 2004, - "color": "#00DD00", - }, - }, - }, - # === Generation 4 === - "diamond-pearl": { - "versions": ["diamond", "pearl"], - "generation": 4, - "region": "sinnoh", - "region_id": 4, - "games": { - "diamond": { - "name": "Pokemon Diamond", - "slug": "diamond", - "release_year": 2006, - "color": "#AAAAFF", - }, - "pearl": { - "name": "Pokemon Pearl", - "slug": "pearl", - "release_year": 2006, - "color": "#FFAAAA", - }, - }, - }, - "platinum": { - "versions": ["platinum"], - "generation": 4, - "region": "sinnoh", - "region_id": 4, - "games": { - "platinum": { - "name": "Pokemon Platinum", - "slug": "platinum", - "release_year": 2008, - "color": "#999999", - }, - }, - }, - "heartgold-soulsilver": { - "versions": ["heartgold", "soulsilver"], - "generation": 4, - "region": "johto", - "region_id": 2, - "extra_regions": [1], # Kanto post-game - "games": { - "heartgold": { - "name": "Pokemon HeartGold", - "slug": "heartgold", - "release_year": 2010, - "color": "#B69E00", - }, - "soulsilver": { - "name": "Pokemon SoulSilver", - "slug": "soulsilver", - "release_year": 2010, - "color": "#C0C0E0", - }, - }, - }, - # === Generation 5 === - "black-white": { - "versions": ["black", "white"], - "generation": 5, - "region": "unova", - "region_id": 5, - "games": { - "black": { - "name": "Pokemon Black", - "slug": "black", - "release_year": 2010, - "color": "#444444", - }, - "white": { - "name": "Pokemon White", - "slug": "white", - "release_year": 2010, - "color": "#E1E1E1", - }, - }, - }, - "black-2-white-2": { - "versions": ["black-2", "white-2"], - "generation": 5, - "region": "unova", - "region_id": 5, - "games": { - "black-2": { - "name": "Pokemon Black 2", - "slug": "black-2", - "release_year": 2012, - "color": "#424B50", - }, - "white-2": { - "name": "Pokemon White 2", - "slug": "white-2", - "release_year": 2012, - "color": "#E3CED0", - }, - }, - }, - # === Generation 6 === - "x-y": { - "versions": ["x", "y"], - "generation": 6, - "region": "kalos", - "region_id": 6, - "games": { - "x": { - "name": "Pokemon X", - "slug": "x", - "release_year": 2013, - "color": "#025DA6", - }, - "y": { - "name": "Pokemon Y", - "slug": "y", - "release_year": 2013, - "color": "#EA1A3E", - }, - }, - }, - "omega-ruby-alpha-sapphire": { - "versions": ["omega-ruby", "alpha-sapphire"], - "generation": 6, - "region": "hoenn", - "region_id": 3, - "games": { - "omega-ruby": { - "name": "Pokemon Omega Ruby", - "slug": "omega-ruby", - "release_year": 2014, - "color": "#CF3025", - }, - "alpha-sapphire": { - "name": "Pokemon Alpha Sapphire", - "slug": "alpha-sapphire", - "release_year": 2014, - "color": "#26649C", - }, - }, - }, - # === Generation 7 === - "sun-moon": { - "versions": ["sun", "moon"], - "generation": 7, - "region": "alola", - "region_id": 7, - "games": { - "sun": { - "name": "Pokemon Sun", - "slug": "sun", - "release_year": 2016, - "color": "#F1912B", - }, - "moon": { - "name": "Pokemon Moon", - "slug": "moon", - "release_year": 2016, - "color": "#5599CA", - }, - }, - }, - "ultra-sun-ultra-moon": { - "versions": ["ultra-sun", "ultra-moon"], - "generation": 7, - "region": "alola", - "region_id": 7, - "games": { - "ultra-sun": { - "name": "Pokemon Ultra Sun", - "slug": "ultra-sun", - "release_year": 2017, - "color": "#E95B2B", - }, - "ultra-moon": { - "name": "Pokemon Ultra Moon", - "slug": "ultra-moon", - "release_year": 2017, - "color": "#204E8C", - }, - }, - }, - "lets-go": { - "versions": ["lets-go-pikachu", "lets-go-eevee"], - "generation": 7, - "region": "kanto", - "region_id": 1, - "games": { - "lets-go-pikachu": { - "name": "Pokemon Let's Go Pikachu", - "slug": "lets-go-pikachu", - "release_year": 2018, - "color": "#F5DA00", - }, - "lets-go-eevee": { - "name": "Pokemon Let's Go Eevee", - "slug": "lets-go-eevee", - "release_year": 2018, - "color": "#D4924B", - }, - }, - }, - # === Generation 8 === - "sword-shield": { - "versions": ["sword", "shield"], - "generation": 8, - "region": "galar", - "region_id": 8, - "games": { - "sword": { - "name": "Pokemon Sword", - "slug": "sword", - "release_year": 2019, - "color": "#00D4E7", - }, - "shield": { - "name": "Pokemon Shield", - "slug": "shield", - "release_year": 2019, - "color": "#EF3B6E", - }, - }, - }, - "brilliant-diamond-shining-pearl": { - "versions": ["brilliant-diamond", "shining-pearl"], - "generation": 8, - "region": "sinnoh", - "region_id": 4, - "games": { - "brilliant-diamond": { - "name": "Pokemon Brilliant Diamond", - "slug": "brilliant-diamond", - "release_year": 2021, - "color": "#44BAE5", - }, - "shining-pearl": { - "name": "Pokemon Shining Pearl", - "slug": "shining-pearl", - "release_year": 2021, - "color": "#E18AAA", - }, - }, - }, - "legends-arceus": { - "versions": ["legends-arceus"], - "generation": 8, - "region": "hisui", - "region_id": 9, - "games": { - "legends-arceus": { - "name": "Pokemon Legends: Arceus", - "slug": "legends-arceus", - "release_year": 2022, - "color": "#36597B", - }, - }, - }, - # === Generation 9 === - "scarlet-violet": { - "versions": ["scarlet", "violet"], - "generation": 9, - "region": "paldea", - "region_id": 10, - "games": { - "scarlet": { - "name": "Pokemon Scarlet", - "slug": "scarlet", - "release_year": 2022, - "color": "#F93C3C", - }, - "violet": { - "name": "Pokemon Violet", - "slug": "violet", - "release_year": 2022, - "color": "#A96EEC", - }, - }, - }, -} +def _load_version_groups() -> dict: + with open(SEEDS_DIR / "version_groups.json") as f: + return json.load(f) + + +def _load_route_order() -> dict[str, list[str]]: + with open(SEEDS_DIR / "route_order.json") as f: + data = json.load(f) + routes = dict(data["routes"]) + for alias, target in data.get("aliases", {}).items(): + routes[alias] = routes[target] + return routes + + +VERSION_GROUPS = _load_version_groups() +ROUTE_ORDER: dict[str, list[str]] = _load_route_order() # Encounter methods to include (excludes gift, legendary-only, etc.) INCLUDED_METHODS = { @@ -452,434 +63,6 @@ INCLUDED_METHODS = { "headbutt", } -# Route progression order by version group. -# Keys are version group names from VERSION_GROUPS. Names must match -# clean_location_name() output. Routes not listed fall to the end alphabetically. -ROUTE_ORDER: dict[str, list[str]] = { - "firered-leafgreen": [ - # Main Kanto progression - "Starter", - "Pallet Town", - "Route 1", - "Viridian City", - "Route 22", - "Route 2", - "Viridian Forest", - "Pewter City", - "Route 3", - "Mt Moon", - "Route 4", - "Cerulean City", - "Route 24", - "Route 25", - "Route 5", - "Route 6", - "Vermilion City", - "Ss Anne", - "Route 11", - "Digletts Cave", - "Route 9", - "Route 10", - "Rock Tunnel", - "Power Plant", - "Route 8", - "Route 7", - "Celadon City", - "Saffron City", - "Lavender Town", - "Route 16", - "Route 17", - "Route 18", - "Fuchsia City", - "Safari Zone", - "Route 15", - "Route 14", - "Route 13", - "Route 12", - "Pokemon Tower", - "Sea Route 19", - "Sea Route 20", - "Seafoam Islands", - "Cinnabar Island", - "Pokemon Mansion", - "Sea Route 21", - "Route 23", - "Victory Road 2", - "Cerulean Cave", - # Sevii Islands - "One Island", - "Kindle Road", - "Treasure Beach", - "Mt Ember", - "Cape Brink", - "Berry Forest", - "Bond Bridge", - "Three Isle Port", - "Four Island", - "Icefall Cave", - "Resort Gorgeous", - "Water Labyrinth", - "Five Island", - "Five Isle Meadow", - "Memorial Pillar", - "Outcast Island", - "Green Path", - "Water Path", - "Ruin Valley", - "Lost Cave", - "Pattern Bush", - "Trainer Tower", - "Canyon Entrance", - "Sevault Canyon", - "Tanoby Ruins", - "Monean Chamber", - "Liptoo Chamber", - "Weepth Chamber", - "Dilford Chamber", - "Scufib Chamber", - "Rixy Chamber", - "Viapos Chamber", - "Altering Cave", - ], - "heartgold-soulsilver": [ - # Johto - "Starter", - "New Bark Town", - "Route 29", - "Cherrygrove City", - "Route 30", - "Route 31", - "Dark Cave", - "Violet City", - "Sprout Tower", - "Route 32", - "Ruins Of Alph", - "Union Cave", - "Route 33", - "Slowpoke Well", - "Route 34", - "Ilex Forest", - "National Park", - "Route 35", - "Goldenrod City", - "Route 36", - "Route 37", - "Ecruteak City", - "Burned Tower", - "Bell Tower", - "Route 38", - "Route 39", - "Olivine City", - "Sea Route 40", - "Sea Route 41", - "Cianwood City", - "Route 42", - "Mt Mortar", - "Lake Of Rage", - "Route 43", - "Route 44", - "Ice Path", - "Blackthorn City", - "Dragons Den", - "Route 45", - "Route 46", - "Route 47", - "Route 48", - "Safari Zone", - "Whirl Islands", - "Tohjo Falls", - # Kanto post-game - "Route 27", - "Route 26", - "Victory Road 1", - "Route 28", - "Mt Silver", - "Pallet Town", - "Route 1", - "Viridian City", - "Viridian Forest", - "Pewter City", - "Route 2", - "Route 3", - "Mt Moon", - "Route 4", - "Cerulean City", - "Route 24", - "Route 25", - "Cerulean Cave", - "Route 5", - "Route 6", - "Vermilion City", - "Route 7", - "Route 8", - "Route 9", - "Route 10", - "Rock Tunnel", - "Route 11", - "Digletts Cave", - "Route 12", - "Route 13", - "Route 14", - "Route 15", - "Fuchsia City", - "Route 16", - "Route 17", - "Route 18", - "Celadon City", - "Sea Route 19", - "Sea Route 20", - "Seafoam Islands", - "Cinnabar Island", - "Sea Route 21", - "Route 22", - # Misc - "Unknown All Poliwag", - "Unknown All Rattata", - "Unknown All Bugs", - ], - "emerald": [ - "Starter", - "Route 101", - "Oldale Town", - "Route 103", - "Route 102", - "Petalburg City", - "Route 104", - "Petalburg Woods", - "Rusturf Tunnel", - "Route 116", - "Rustboro City", - "Route 105", - "Route 106", - "Dewford Town", - "Granite Cave", - "Route 107", - "Route 108", - "Route 109", - "Slateport City", - "Route 110", - "New Mauville", - "Route 117", - "Route 111", - "Mirage Tower", - "Route 112", - "Fiery Path", - "Jagged Pass", - "Lavaridge Town", - "Route 113", - "Route 114", - "Meteor Falls", - "Route 115", - "Route 118", - "Route 119", - "Route 120", - "Route 121", - "Safari Zone", - "Lilycove City", - "Route 122", - "Mt Pyre", - "Route 123", - "Magma Hideout", - "Route 124", - "Mossdeep City", - "Route 125", - "Shoal Cave", - "Route 126", - "Sootopolis City", - "Cave Of Origin", - "Route 127", - "Route 128", - "Seafloor Cavern", - "Route 129", - "Route 130", - "Route 131", - "Pacifidlog Town", - "Route 132", - "Route 133", - "Route 134", - "Ever Grande City", - "Victory Road", - "Sky Pillar", - "Abandoned Ship", - "Desert Underpass", - "Artisan Cave", - "Altering Cave", - ], - "platinum": [ - "Canalave City", - "Pastoria City", - "Sunyshore City", - "Pokemon League", - "Oreburgh Mine", - "Oreburgh Mine (1F)", - "Oreburgh Mine (B1F)", - "Valley Windworks", - "Eterna Forest", - "Eterna City", - "Fuego Ironworks", - "Mt Coronet", - "Mt Coronet (1F Route 207)", - "Mt Coronet (2F)", - "Mt Coronet (3F)", - "Mt Coronet (Exterior Snowfall)", - "Mt Coronet (Exterior Blizzard)", - "Mt Coronet (4F)", - "Mt Coronet (4F Small Room)", - "Mt Coronet (5F)", - "Mt Coronet (6F)", - "Mt Coronet (1F From Exterior)", - "Mt Coronet (1F Route 216)", - "Mt Coronet (1F Route 211)", - "Mt Coronet (B1F)", - "Great Marsh", - "Great Marsh (Area 1)", - "Great Marsh (Area 2)", - "Great Marsh (Area 3)", - "Great Marsh (Area 4)", - "Great Marsh (Area 5)", - "Great Marsh (Area 6)", - "Solaceon Ruins", - "Solaceon Ruins (2F)", - "Solaceon Ruins (1F)", - "Solaceon Ruins (B1F A)", - "Solaceon Ruins (B1F B)", - "Solaceon Ruins (B1F C)", - "Solaceon Ruins (B2F A)", - "Solaceon Ruins (B2F B)", - "Solaceon Ruins (B2F C)", - "Solaceon Ruins (B3F A)", - "Solaceon Ruins (B3F B)", - "Solaceon Ruins (B3F C)", - "Solaceon Ruins (B3F D)", - "Solaceon Ruins (B3F E)", - "Solaceon Ruins (B4F A)", - "Solaceon Ruins (B4F B)", - "Solaceon Ruins (B4F C)", - "Solaceon Ruins (B4F D)", - "Solaceon Ruins (B5F)", - "Victory Road", - "Victory Road (1F)", - "Victory Road (2F)", - "Victory Road (B1F)", - "Victory Road (Inside B1F)", - "Victory Road (Inside)", - "Victory Road (Inside Exit)", - "Ravaged Path", - "Oreburgh Gate", - "Oreburgh Gate (1F)", - "Oreburgh Gate (B1F)", - "Stark Mountain (Entrance)", - "Stark Mountain (Inside)", - "Stark Mountain", - "Turnback Cave", - "Turnback Cave (Pillar 1)", - "Turnback Cave (Pillar 2)", - "Turnback Cave (Pillar 3)", - "Turnback Cave (Before Pillar 1)", - "Turnback Cave (Between Pillars 1 And 2)", - "Turnback Cave (Between Pillars 2 And 3)", - "Turnback Cave (After Pillar 3)", - "Snowpoint Temple", - "Snowpoint Temple (1F)", - "Snowpoint Temple (B1F)", - "Snowpoint Temple (B2F)", - "Snowpoint Temple (B3F)", - "Snowpoint Temple (B4F)", - "Snowpoint Temple (B5F)", - "Wayward Cave", - "Wayward Cave (1F)", - "Wayward Cave (B1F)", - "Ruin Maniac Cave", - "Ruin Maniac Cave (0 9 Different Unown Caught)", - "Ruin Maniac Cave (10 25 Different Unown Caught)", - "Trophy Garden", - "Iron Island (1F)", - "Iron Island (B1F Left)", - "Iron Island (B1F Right)", - "Iron Island (B2F Right)", - "Iron Island (B2F Left)", - "Iron Island (B3F)", - "Iron Island", - "Old Chateau", - "Old Chateau (Entrance)", - "Old Chateau (Dining Room)", - "Old Chateau (2F Private Room)", - "Old Chateau (2F)", - "Old Chateau (2F Leftmost Room)", - "Old Chateau (2F Left Room)", - "Old Chateau (2F Middle Room)", - "Old Chateau (2F Right Room)", - "Old Chateau (2F Rightmost Room)", - "Lake Verity", - "Lake Verity (Before Galactic Intervention)", - "Lake Verity (After Galactic Intervention)", - "Lake Valor", - "Lake Acuity", - "Valor Lakefront", - "Acuity Lakefront", - "Route 201", - "Route 202", - "Route 203", - "Route 204", - "Route 204 (South Towards Jubilife City)", - "Route 204 (North Towards Floaroma Town)", - "Route 205", - "Route 205 (South Towards Floaroma Town)", - "Route 205 (East Towards Eterna City)", - "Route 206", - "Route 207", - "Route 208", - "Route 209", - "Lost Tower", - "Lost Tower (1F)", - "Lost Tower (2F)", - "Lost Tower (3F)", - "Lost Tower (4F)", - "Lost Tower (5F)", - "Route 210", - "Route 210 (South Towards Solaceon Town)", - "Route 210 (West Towards Celestic Town)", - "Route 211", - "Route 211 (West Towards Eterna City)", - "Route 211 (East Towards Celestic Town)", - "Route 212", - "Route 212 (North Towards Hearthome City)", - "Route 212 (East Towards Pastoria City)", - "Route 213", - "Route 214", - "Route 215", - "Route 216", - "Route 217", - "Route 218", - "Route 219", - "Route 221", - "Route 222", - "Route 224", - "Route 225", - "Route 227", - "Route 228", - "Route 229", - "Twinleaf Town", - "Celestic Town", - "Resort Area", - "Sea Route 220", - "Sea Route 223", - "Sea Route 226", - "Sea Route 230", - "Sendoff Spring", - "Maniac Tunnel" - ] -} - -# Aliases — version groups sharing same route progression -ROUTE_ORDER["red-blue"] = ROUTE_ORDER["firered-leafgreen"] -ROUTE_ORDER["yellow"] = ROUTE_ORDER["firered-leafgreen"] -ROUTE_ORDER["lets-go"] = ROUTE_ORDER["firered-leafgreen"] -ROUTE_ORDER["gold-silver"] = ROUTE_ORDER["heartgold-soulsilver"] -ROUTE_ORDER["crystal"] = ROUTE_ORDER["heartgold-soulsilver"] -ROUTE_ORDER["ruby-sapphire"] = ROUTE_ORDER["emerald"] -ROUTE_ORDER["omega-ruby-alpha-sapphire"] = ROUTE_ORDER["emerald"] - # Collect all pokemon dex numbers across games all_pokemon_dex: set[int] = set() diff --git a/backend/src/app/seeds/route_order.json b/backend/src/app/seeds/route_order.json new file mode 100644 index 0000000..785ef67 --- /dev/null +++ b/backend/src/app/seeds/route_order.json @@ -0,0 +1,422 @@ +{ + "_comment": "Route progression order by version group. Aliases at the bottom map version groups that share the same ordering.", + "routes": { + "firered-leafgreen": [ + "Starter", + "Pallet Town", + "Route 1", + "Viridian City", + "Route 22", + "Route 2", + "Viridian Forest", + "Pewter City", + "Route 3", + "Mt Moon", + "Route 4", + "Cerulean City", + "Route 24", + "Route 25", + "Route 5", + "Route 6", + "Vermilion City", + "Ss Anne", + "Route 11", + "Digletts Cave", + "Route 9", + "Route 10", + "Rock Tunnel", + "Power Plant", + "Route 8", + "Route 7", + "Celadon City", + "Saffron City", + "Lavender Town", + "Route 16", + "Route 17", + "Route 18", + "Fuchsia City", + "Safari Zone", + "Route 15", + "Route 14", + "Route 13", + "Route 12", + "Pokemon Tower", + "Sea Route 19", + "Sea Route 20", + "Seafoam Islands", + "Cinnabar Island", + "Pokemon Mansion", + "Sea Route 21", + "Route 23", + "Victory Road 2", + "Cerulean Cave", + "One Island", + "Kindle Road", + "Treasure Beach", + "Mt Ember", + "Cape Brink", + "Berry Forest", + "Bond Bridge", + "Three Isle Port", + "Four Island", + "Icefall Cave", + "Resort Gorgeous", + "Water Labyrinth", + "Five Island", + "Five Isle Meadow", + "Memorial Pillar", + "Outcast Island", + "Green Path", + "Water Path", + "Ruin Valley", + "Lost Cave", + "Pattern Bush", + "Trainer Tower", + "Canyon Entrance", + "Sevault Canyon", + "Tanoby Ruins", + "Monean Chamber", + "Liptoo Chamber", + "Weepth Chamber", + "Dilford Chamber", + "Scufib Chamber", + "Rixy Chamber", + "Viapos Chamber", + "Altering Cave" + ], + "heartgold-soulsilver": [ + "Starter", + "New Bark Town", + "Route 29", + "Cherrygrove City", + "Route 30", + "Route 31", + "Dark Cave", + "Violet City", + "Sprout Tower", + "Route 32", + "Ruins Of Alph", + "Union Cave", + "Route 33", + "Slowpoke Well", + "Route 34", + "Ilex Forest", + "National Park", + "Route 35", + "Goldenrod City", + "Route 36", + "Route 37", + "Ecruteak City", + "Burned Tower", + "Bell Tower", + "Route 38", + "Route 39", + "Olivine City", + "Sea Route 40", + "Sea Route 41", + "Cianwood City", + "Route 42", + "Mt Mortar", + "Lake Of Rage", + "Route 43", + "Route 44", + "Ice Path", + "Blackthorn City", + "Dragons Den", + "Route 45", + "Route 46", + "Route 47", + "Route 48", + "Safari Zone", + "Whirl Islands", + "Tohjo Falls", + "Route 27", + "Route 26", + "Victory Road 1", + "Route 28", + "Mt Silver", + "Pallet Town", + "Route 1", + "Viridian City", + "Viridian Forest", + "Pewter City", + "Route 2", + "Route 3", + "Mt Moon", + "Route 4", + "Cerulean City", + "Route 24", + "Route 25", + "Cerulean Cave", + "Route 5", + "Route 6", + "Vermilion City", + "Route 7", + "Route 8", + "Route 9", + "Route 10", + "Rock Tunnel", + "Route 11", + "Digletts Cave", + "Route 12", + "Route 13", + "Route 14", + "Route 15", + "Fuchsia City", + "Route 16", + "Route 17", + "Route 18", + "Celadon City", + "Sea Route 19", + "Sea Route 20", + "Seafoam Islands", + "Cinnabar Island", + "Sea Route 21", + "Route 22", + "Unknown All Poliwag", + "Unknown All Rattata", + "Unknown All Bugs" + ], + "emerald": [ + "Starter", + "Route 101", + "Oldale Town", + "Route 103", + "Route 102", + "Petalburg City", + "Route 104", + "Petalburg Woods", + "Rusturf Tunnel", + "Route 116", + "Rustboro City", + "Route 105", + "Route 106", + "Dewford Town", + "Granite Cave", + "Route 107", + "Route 108", + "Route 109", + "Slateport City", + "Route 110", + "New Mauville", + "Route 117", + "Route 111", + "Mirage Tower", + "Route 112", + "Fiery Path", + "Jagged Pass", + "Lavaridge Town", + "Route 113", + "Route 114", + "Meteor Falls", + "Route 115", + "Route 118", + "Route 119", + "Route 120", + "Route 121", + "Safari Zone", + "Lilycove City", + "Route 122", + "Mt Pyre", + "Route 123", + "Magma Hideout", + "Route 124", + "Mossdeep City", + "Route 125", + "Shoal Cave", + "Route 126", + "Sootopolis City", + "Cave Of Origin", + "Route 127", + "Route 128", + "Seafloor Cavern", + "Route 129", + "Route 130", + "Route 131", + "Pacifidlog Town", + "Route 132", + "Route 133", + "Route 134", + "Ever Grande City", + "Victory Road", + "Sky Pillar", + "Abandoned Ship", + "Desert Underpass", + "Artisan Cave", + "Altering Cave" + ], + "platinum": [ + "Canalave City", + "Pastoria City", + "Sunyshore City", + "Pokemon League", + "Oreburgh Mine", + "Oreburgh Mine (1F)", + "Oreburgh Mine (B1F)", + "Valley Windworks", + "Eterna Forest", + "Eterna City", + "Fuego Ironworks", + "Mt Coronet", + "Mt Coronet (1F Route 207)", + "Mt Coronet (2F)", + "Mt Coronet (3F)", + "Mt Coronet (Exterior Snowfall)", + "Mt Coronet (Exterior Blizzard)", + "Mt Coronet (4F)", + "Mt Coronet (4F Small Room)", + "Mt Coronet (5F)", + "Mt Coronet (6F)", + "Mt Coronet (1F From Exterior)", + "Mt Coronet (1F Route 216)", + "Mt Coronet (1F Route 211)", + "Mt Coronet (B1F)", + "Great Marsh", + "Great Marsh (Area 1)", + "Great Marsh (Area 2)", + "Great Marsh (Area 3)", + "Great Marsh (Area 4)", + "Great Marsh (Area 5)", + "Great Marsh (Area 6)", + "Solaceon Ruins", + "Solaceon Ruins (2F)", + "Solaceon Ruins (1F)", + "Solaceon Ruins (B1F A)", + "Solaceon Ruins (B1F B)", + "Solaceon Ruins (B1F C)", + "Solaceon Ruins (B2F A)", + "Solaceon Ruins (B2F B)", + "Solaceon Ruins (B2F C)", + "Solaceon Ruins (B3F A)", + "Solaceon Ruins (B3F B)", + "Solaceon Ruins (B3F C)", + "Solaceon Ruins (B3F D)", + "Solaceon Ruins (B3F E)", + "Solaceon Ruins (B4F A)", + "Solaceon Ruins (B4F B)", + "Solaceon Ruins (B4F C)", + "Solaceon Ruins (B4F D)", + "Solaceon Ruins (B5F)", + "Victory Road", + "Victory Road (1F)", + "Victory Road (2F)", + "Victory Road (B1F)", + "Victory Road (Inside B1F)", + "Victory Road (Inside)", + "Victory Road (Inside Exit)", + "Ravaged Path", + "Oreburgh Gate", + "Oreburgh Gate (1F)", + "Oreburgh Gate (B1F)", + "Stark Mountain (Entrance)", + "Stark Mountain (Inside)", + "Stark Mountain", + "Turnback Cave", + "Turnback Cave (Pillar 1)", + "Turnback Cave (Pillar 2)", + "Turnback Cave (Pillar 3)", + "Turnback Cave (Before Pillar 1)", + "Turnback Cave (Between Pillars 1 And 2)", + "Turnback Cave (Between Pillars 2 And 3)", + "Turnback Cave (After Pillar 3)", + "Snowpoint Temple", + "Snowpoint Temple (1F)", + "Snowpoint Temple (B1F)", + "Snowpoint Temple (B2F)", + "Snowpoint Temple (B3F)", + "Snowpoint Temple (B4F)", + "Snowpoint Temple (B5F)", + "Wayward Cave", + "Wayward Cave (1F)", + "Wayward Cave (B1F)", + "Ruin Maniac Cave", + "Ruin Maniac Cave (0 9 Different Unown Caught)", + "Ruin Maniac Cave (10 25 Different Unown Caught)", + "Trophy Garden", + "Iron Island (1F)", + "Iron Island (B1F Left)", + "Iron Island (B1F Right)", + "Iron Island (B2F Right)", + "Iron Island (B2F Left)", + "Iron Island (B3F)", + "Iron Island", + "Old Chateau", + "Old Chateau (Entrance)", + "Old Chateau (Dining Room)", + "Old Chateau (2F Private Room)", + "Old Chateau (2F)", + "Old Chateau (2F Leftmost Room)", + "Old Chateau (2F Left Room)", + "Old Chateau (2F Middle Room)", + "Old Chateau (2F Right Room)", + "Old Chateau (2F Rightmost Room)", + "Lake Verity", + "Lake Verity (Before Galactic Intervention)", + "Lake Verity (After Galactic Intervention)", + "Lake Valor", + "Lake Acuity", + "Valor Lakefront", + "Acuity Lakefront", + "Route 201", + "Route 202", + "Route 203", + "Route 204", + "Route 204 (South Towards Jubilife City)", + "Route 204 (North Towards Floaroma Town)", + "Route 205", + "Route 205 (South Towards Floaroma Town)", + "Route 205 (East Towards Eterna City)", + "Route 206", + "Route 207", + "Route 208", + "Route 209", + "Lost Tower", + "Lost Tower (1F)", + "Lost Tower (2F)", + "Lost Tower (3F)", + "Lost Tower (4F)", + "Lost Tower (5F)", + "Route 210", + "Route 210 (South Towards Solaceon Town)", + "Route 210 (West Towards Celestic Town)", + "Route 211", + "Route 211 (West Towards Eterna City)", + "Route 211 (East Towards Celestic Town)", + "Route 212", + "Route 212 (North Towards Hearthome City)", + "Route 212 (East Towards Pastoria City)", + "Route 213", + "Route 214", + "Route 215", + "Route 216", + "Route 217", + "Route 218", + "Route 219", + "Route 221", + "Route 222", + "Route 224", + "Route 225", + "Route 227", + "Route 228", + "Route 229", + "Twinleaf Town", + "Celestic Town", + "Resort Area", + "Sea Route 220", + "Sea Route 223", + "Sea Route 226", + "Sea Route 230", + "Sendoff Spring", + "Maniac Tunnel" + ] + }, + "aliases": { + "red-blue": "firered-leafgreen", + "yellow": "firered-leafgreen", + "lets-go": "firered-leafgreen", + "gold-silver": "heartgold-soulsilver", + "crystal": "heartgold-soulsilver", + "ruby-sapphire": "emerald", + "omega-ruby-alpha-sapphire": "emerald" + } +} diff --git a/backend/src/app/seeds/version_groups.json b/backend/src/app/seeds/version_groups.json new file mode 100644 index 0000000..2c965ad --- /dev/null +++ b/backend/src/app/seeds/version_groups.json @@ -0,0 +1,395 @@ +{ + "red-blue": { + "versions": ["red", "blue"], + "generation": 1, + "region": "kanto", + "region_id": 1, + "games": { + "red": { + "name": "Pokemon Red", + "slug": "red", + "release_year": 1996, + "color": "#FF1111" + }, + "blue": { + "name": "Pokemon Blue", + "slug": "blue", + "release_year": 1996, + "color": "#1111FF" + } + } + }, + "yellow": { + "versions": ["yellow"], + "generation": 1, + "region": "kanto", + "region_id": 1, + "games": { + "yellow": { + "name": "Pokemon Yellow", + "slug": "yellow", + "release_year": 1998, + "color": "#FFD733" + } + } + }, + "gold-silver": { + "versions": ["gold", "silver"], + "generation": 2, + "region": "johto", + "region_id": 2, + "extra_regions": [1], + "games": { + "gold": { + "name": "Pokemon Gold", + "slug": "gold", + "release_year": 1999, + "color": "#DAA520" + }, + "silver": { + "name": "Pokemon Silver", + "slug": "silver", + "release_year": 1999, + "color": "#C0C0C0" + } + } + }, + "crystal": { + "versions": ["crystal"], + "generation": 2, + "region": "johto", + "region_id": 2, + "extra_regions": [1], + "games": { + "crystal": { + "name": "Pokemon Crystal", + "slug": "crystal", + "release_year": 2000, + "color": "#4FD9FF" + } + } + }, + "ruby-sapphire": { + "versions": ["ruby", "sapphire"], + "generation": 3, + "region": "hoenn", + "region_id": 3, + "games": { + "ruby": { + "name": "Pokemon Ruby", + "slug": "ruby", + "release_year": 2002, + "color": "#A00000" + }, + "sapphire": { + "name": "Pokemon Sapphire", + "slug": "sapphire", + "release_year": 2002, + "color": "#0000A0" + } + } + }, + "emerald": { + "versions": ["emerald"], + "generation": 3, + "region": "hoenn", + "region_id": 3, + "games": { + "emerald": { + "name": "Pokemon Emerald", + "slug": "emerald", + "release_year": 2005, + "color": "#00A000" + } + } + }, + "firered-leafgreen": { + "versions": ["firered", "leafgreen"], + "generation": 3, + "region": "kanto", + "region_id": 1, + "games": { + "firered": { + "name": "Pokemon FireRed", + "slug": "firered", + "release_year": 2004, + "color": "#FF7327" + }, + "leafgreen": { + "name": "Pokemon LeafGreen", + "slug": "leafgreen", + "release_year": 2004, + "color": "#00DD00" + } + } + }, + "diamond-pearl": { + "versions": ["diamond", "pearl"], + "generation": 4, + "region": "sinnoh", + "region_id": 4, + "games": { + "diamond": { + "name": "Pokemon Diamond", + "slug": "diamond", + "release_year": 2006, + "color": "#AAAAFF" + }, + "pearl": { + "name": "Pokemon Pearl", + "slug": "pearl", + "release_year": 2006, + "color": "#FFAAAA" + } + } + }, + "platinum": { + "versions": ["platinum"], + "generation": 4, + "region": "sinnoh", + "region_id": 4, + "games": { + "platinum": { + "name": "Pokemon Platinum", + "slug": "platinum", + "release_year": 2008, + "color": "#999999" + } + } + }, + "heartgold-soulsilver": { + "versions": ["heartgold", "soulsilver"], + "generation": 4, + "region": "johto", + "region_id": 2, + "extra_regions": [1], + "games": { + "heartgold": { + "name": "Pokemon HeartGold", + "slug": "heartgold", + "release_year": 2010, + "color": "#B69E00" + }, + "soulsilver": { + "name": "Pokemon SoulSilver", + "slug": "soulsilver", + "release_year": 2010, + "color": "#C0C0E0" + } + } + }, + "black-white": { + "versions": ["black", "white"], + "generation": 5, + "region": "unova", + "region_id": 5, + "games": { + "black": { + "name": "Pokemon Black", + "slug": "black", + "release_year": 2010, + "color": "#444444" + }, + "white": { + "name": "Pokemon White", + "slug": "white", + "release_year": 2010, + "color": "#E1E1E1" + } + } + }, + "black-2-white-2": { + "versions": ["black-2", "white-2"], + "generation": 5, + "region": "unova", + "region_id": 5, + "games": { + "black-2": { + "name": "Pokemon Black 2", + "slug": "black-2", + "release_year": 2012, + "color": "#424B50" + }, + "white-2": { + "name": "Pokemon White 2", + "slug": "white-2", + "release_year": 2012, + "color": "#E3CED0" + } + } + }, + "x-y": { + "versions": ["x", "y"], + "generation": 6, + "region": "kalos", + "region_id": 6, + "games": { + "x": { + "name": "Pokemon X", + "slug": "x", + "release_year": 2013, + "color": "#025DA6" + }, + "y": { + "name": "Pokemon Y", + "slug": "y", + "release_year": 2013, + "color": "#EA1A3E" + } + } + }, + "omega-ruby-alpha-sapphire": { + "versions": ["omega-ruby", "alpha-sapphire"], + "generation": 6, + "region": "hoenn", + "region_id": 3, + "games": { + "omega-ruby": { + "name": "Pokemon Omega Ruby", + "slug": "omega-ruby", + "release_year": 2014, + "color": "#CF3025" + }, + "alpha-sapphire": { + "name": "Pokemon Alpha Sapphire", + "slug": "alpha-sapphire", + "release_year": 2014, + "color": "#26649C" + } + } + }, + "sun-moon": { + "versions": ["sun", "moon"], + "generation": 7, + "region": "alola", + "region_id": 7, + "games": { + "sun": { + "name": "Pokemon Sun", + "slug": "sun", + "release_year": 2016, + "color": "#F1912B" + }, + "moon": { + "name": "Pokemon Moon", + "slug": "moon", + "release_year": 2016, + "color": "#5599CA" + } + } + }, + "ultra-sun-ultra-moon": { + "versions": ["ultra-sun", "ultra-moon"], + "generation": 7, + "region": "alola", + "region_id": 7, + "games": { + "ultra-sun": { + "name": "Pokemon Ultra Sun", + "slug": "ultra-sun", + "release_year": 2017, + "color": "#E95B2B" + }, + "ultra-moon": { + "name": "Pokemon Ultra Moon", + "slug": "ultra-moon", + "release_year": 2017, + "color": "#204E8C" + } + } + }, + "lets-go": { + "versions": ["lets-go-pikachu", "lets-go-eevee"], + "generation": 7, + "region": "kanto", + "region_id": 1, + "games": { + "lets-go-pikachu": { + "name": "Pokemon Let's Go Pikachu", + "slug": "lets-go-pikachu", + "release_year": 2018, + "color": "#F5DA00" + }, + "lets-go-eevee": { + "name": "Pokemon Let's Go Eevee", + "slug": "lets-go-eevee", + "release_year": 2018, + "color": "#D4924B" + } + } + }, + "sword-shield": { + "versions": ["sword", "shield"], + "generation": 8, + "region": "galar", + "region_id": 8, + "games": { + "sword": { + "name": "Pokemon Sword", + "slug": "sword", + "release_year": 2019, + "color": "#00D4E7" + }, + "shield": { + "name": "Pokemon Shield", + "slug": "shield", + "release_year": 2019, + "color": "#EF3B6E" + } + } + }, + "brilliant-diamond-shining-pearl": { + "versions": ["brilliant-diamond", "shining-pearl"], + "generation": 8, + "region": "sinnoh", + "region_id": 4, + "games": { + "brilliant-diamond": { + "name": "Pokemon Brilliant Diamond", + "slug": "brilliant-diamond", + "release_year": 2021, + "color": "#44BAE5" + }, + "shining-pearl": { + "name": "Pokemon Shining Pearl", + "slug": "shining-pearl", + "release_year": 2021, + "color": "#E18AAA" + } + } + }, + "legends-arceus": { + "versions": ["legends-arceus"], + "generation": 8, + "region": "hisui", + "region_id": 9, + "games": { + "legends-arceus": { + "name": "Pokemon Legends: Arceus", + "slug": "legends-arceus", + "release_year": 2022, + "color": "#36597B" + } + } + }, + "scarlet-violet": { + "versions": ["scarlet", "violet"], + "generation": 9, + "region": "paldea", + "region_id": 10, + "games": { + "scarlet": { + "name": "Pokemon Scarlet", + "slug": "scarlet", + "release_year": 2022, + "color": "#F93C3C" + }, + "violet": { + "name": "Pokemon Violet", + "slug": "violet", + "release_year": 2022, + "color": "#A96EEC" + } + } + } +}