From d0b0f08665195ec9bcee2835ecfc79e03554154f Mon Sep 17 00:00:00 2001 From: Julian Tabel Date: Wed, 11 Feb 2026 15:21:18 +0100 Subject: [PATCH] Fix and complete route ordering for all games Rewrote route_order.json with correct progression ordering for all 15 version groups (Gen 1-9), validated against encounter data files. Added generate_route_order.py script for reproducible generation and validation. Co-Authored-By: Claude Opus 4.6 --- ...b4r--add-route-ordering-for-gen-5-games.md | 5 +- ...d-complete-route-ordering-for-all-games.md | 44 + ...nd-fix-route-ordering-for-gen-1-4-games.md | 5 +- ...eeh--clean-up-old-seed-generation-tools.md | 5 +- backend/src/app/seeds/route_order.json | 1310 ++++++++++++---- tools/generate_route_order.py | 1353 +++++++++++++++++ 6 files changed, 2421 insertions(+), 301 deletions(-) create mode 100644 .beans/nuzlocke-tracker-4ph2--fix-and-complete-route-ordering-for-all-games.md create mode 100644 tools/generate_route_order.py diff --git a/.beans/nuzlocke-tracker-2b4r--add-route-ordering-for-gen-5-games.md b/.beans/nuzlocke-tracker-2b4r--add-route-ordering-for-gen-5-games.md index 56519f2..6d19f3a 100644 --- a/.beans/nuzlocke-tracker-2b4r--add-route-ordering-for-gen-5-games.md +++ b/.beans/nuzlocke-tracker-2b4r--add-route-ordering-for-gen-5-games.md @@ -1,10 +1,11 @@ --- # nuzlocke-tracker-2b4r title: Add route ordering for Gen 5+ games -status: todo +status: scrapped type: task +priority: normal created_at: 2026-02-10T08:58:55Z -updated_at: 2026-02-10T08:58:55Z +updated_at: 2026-02-11T13:54:47Z parent: nuzlocke-tracker-rzu4 --- diff --git a/.beans/nuzlocke-tracker-4ph2--fix-and-complete-route-ordering-for-all-games.md b/.beans/nuzlocke-tracker-4ph2--fix-and-complete-route-ordering-for-all-games.md new file mode 100644 index 0000000..602e8af --- /dev/null +++ b/.beans/nuzlocke-tracker-4ph2--fix-and-complete-route-ordering-for-all-games.md @@ -0,0 +1,44 @@ +--- +# nuzlocke-tracker-4ph2 +title: Fix and complete route ordering for all games +status: in-progress +type: task +priority: normal +created_at: 2026-02-11T13:55:09Z +updated_at: 2026-02-11T13:55:34Z +parent: nuzlocke-tracker-rzu4 +--- + +Audit existing route ordering and add missing ordering for all games in `route_order.json`. Use Bulbapedia walkthrough/appendix pages as the primary reference for game progression order. + +## Approach: +- Reference Bulbapedia walkthrough pages (e.g. `Appendix:FireRed_and_LeafGreen_walkthrough`) to determine correct progression order +- Cross-reference route names from walkthroughs against actual route names in encounter data files +- Consider building a script to semi-automate this (scrape walkthrough pages → match against encounter data → generate ordering) + +## Games to fix (existing but incorrect): +- [x] Platinum — fixed ordering to start with Twinleaf Town, matched names to encounter data + +## Games to add ordering for: +- [x] Diamond/Pearl (separate ordering, slight differences from Platinum) +- [x] Black/White +- [x] Black 2/White 2 +- [x] X/Y +- [x] Sun/Moon +- [x] Ultra Sun/Ultra Moon (separate ordering, has additional areas) +- [x] Sword/Shield +- [x] Brilliant Diamond/Shining Pearl (separate ordering with Grand Underground) +- [x] Scarlet/Violet +- [x] Legends Arceus +- [x] Legends Z-A + +## Games to audit (existing, likely correct): +- [x] FireRed/LeafGreen (and aliases: Red/Blue, Yellow, Let's Go) — rewritten with correct encounter data names +- [x] HeartGold/SoulSilver (and aliases: Gold/Silver, Crystal) — rewritten with correct encounter data names +- [x] Emerald (and aliases: Ruby/Sapphire, ORAS) — rewritten with correct encounter data names + +## Notes: +- Route names must match exactly what's in the encounter data files (case-sensitive) +- "Starter" should be the first entry for each game +- Post-game areas placed after main story areas +- Replaces beans nuzlocke-tracker-6lud and nuzlocke-tracker-2b4r \ No newline at end of file diff --git a/.beans/nuzlocke-tracker-6lud--audit-and-fix-route-ordering-for-gen-1-4-games.md b/.beans/nuzlocke-tracker-6lud--audit-and-fix-route-ordering-for-gen-1-4-games.md index e71fd79..233d917 100644 --- a/.beans/nuzlocke-tracker-6lud--audit-and-fix-route-ordering-for-gen-1-4-games.md +++ b/.beans/nuzlocke-tracker-6lud--audit-and-fix-route-ordering-for-gen-1-4-games.md @@ -1,10 +1,11 @@ --- # nuzlocke-tracker-6lud title: Audit and fix route ordering for Gen 1-4 games -status: todo +status: scrapped type: task +priority: normal created_at: 2026-02-10T08:59:16Z -updated_at: 2026-02-10T08:59:16Z +updated_at: 2026-02-11T13:54:47Z parent: nuzlocke-tracker-rzu4 --- diff --git a/.beans/nuzlocke-tracker-ceeh--clean-up-old-seed-generation-tools.md b/.beans/nuzlocke-tracker-ceeh--clean-up-old-seed-generation-tools.md index 372dbac..9fce24f 100644 --- a/.beans/nuzlocke-tracker-ceeh--clean-up-old-seed-generation-tools.md +++ b/.beans/nuzlocke-tracker-ceeh--clean-up-old-seed-generation-tools.md @@ -1,10 +1,11 @@ --- # nuzlocke-tracker-ceeh title: Clean up old seed generation tools -status: in-progress +status: completed type: task +priority: normal created_at: 2026-02-11T12:52:31Z -updated_at: 2026-02-11T12:52:31Z +updated_at: 2026-02-11T13:55:49Z --- Remove the old Go fetch-pokeapi tool from tools/fetch-pokeapi/ and update README.md references to point to the new import-pokedb tool instead. \ No newline at end of file diff --git a/backend/src/app/seeds/route_order.json b/backend/src/app/seeds/route_order.json index 785ef67..069c4d0 100644 --- a/backend/src/app/seeds/route_order.json +++ b/backend/src/app/seeds/route_order.json @@ -4,60 +4,64 @@ "firered-leafgreen": [ "Starter", "Pallet Town", - "Route 1", + "Professor Oak's Laboratory", + "Route 01 (Kanto)", "Viridian City", - "Route 22", - "Route 2", + "Route 22 (Kanto)", + "Route 02 (Kanto)", "Viridian Forest", - "Pewter City", - "Route 3", - "Mt Moon", + "Route 03 (Kanto)", + "Mt. Moon", + "Route 04 (Kanto)", "Route 4", "Cerulean City", - "Route 24", - "Route 25", - "Route 5", - "Route 6", + "Route 24 (Kanto)", + "Route 25 (Kanto)", + "Route 05 (Kanto)", + "Underground Path (Kanto - Routes 5-6)", + "Route 06 (Kanto)", "Vermilion City", - "Ss Anne", - "Route 11", - "Digletts Cave", - "Route 9", - "Route 10", + "Vermilion City (Port)", + "Route 11 (Kanto)", + "Diglett's Cave", + "Route 09 (Kanto)", + "Route 10 (Kanto)", "Rock Tunnel", "Power Plant", - "Route 8", - "Route 7", + "Route 08 (Kanto)", + "Route 07 (Kanto)", "Celadon City", + "Pokémon Tower", + "Silph Co.", "Saffron City", - "Lavender Town", - "Route 16", - "Route 17", - "Route 18", + "Fighting Dojo", + "Route 16 (Kanto)", + "Route 17 (Kanto)", + "Route 18 (Kanto)", "Fuchsia City", - "Safari Zone", - "Route 15", - "Route 14", - "Route 13", - "Route 12", - "Pokemon Tower", - "Sea Route 19", - "Sea Route 20", + "Safari Zone (Kanto)", + "Route 15 (Kanto)", + "Route 14 (Kanto)", + "Route 13 (Kanto)", + "Route 12 (Kanto)", + "Route 19 (Kanto)", + "Route 20 (Kanto)", "Seafoam Islands", "Cinnabar Island", - "Pokemon Mansion", - "Sea Route 21", - "Route 23", - "Victory Road 2", + "Pokémon Mansion (Kanto)", + "Cinnabar Lab", + "Route 21 (Kanto)", + "Route 23 (Kanto)", + "Victory Road (Kanto)", "Cerulean Cave", "One Island", "Kindle Road", "Treasure Beach", - "Mt Ember", + "Mt. Ember", "Cape Brink", "Berry Forest", "Bond Bridge", - "Three Isle Port", + "Three-Isle Port", "Four Island", "Icefall Cave", "Resort Gorgeous", @@ -75,339 +79,1055 @@ "Canyon Entrance", "Sevault Canyon", "Tanoby Ruins", - "Monean Chamber", - "Liptoo Chamber", - "Weepth Chamber", - "Dilford Chamber", - "Scufib Chamber", - "Rixy Chamber", - "Viapos Chamber", - "Altering Cave" + "Tanoby Chambers", + "Altering Cave (Sevii Islands)", + "Birth Island", + "Navel Rock" ], "heartgold-soulsilver": [ "Starter", "New Bark Town", - "Route 29", + "Route 29 (Johto)", "Cherrygrove City", - "Route 30", - "Route 31", + "Route 30 (Johto)", + "Route 31 (Johto)", "Dark Cave", "Violet City", "Sprout Tower", - "Route 32", - "Ruins Of Alph", + "Route 32 (Johto)", + "Ruins of Alph", "Union Cave", - "Route 33", + "Route 33 (Johto)", + "Azalea Town", "Slowpoke Well", - "Route 34", "Ilex Forest", - "National Park", - "Route 35", + "Route 34 (Johto)", "Goldenrod City", - "Route 36", - "Route 37", + "Route 35 (Johto)", + "National Park", + "Route 36 (Johto)", + "Route 37 (Johto)", "Ecruteak City", "Burned Tower", "Bell Tower", - "Route 38", - "Route 39", + "Route 38 (Johto)", + "Route 39 (Johto)", "Olivine City", - "Sea Route 40", - "Sea Route 41", + "Route 40 (Johto)", + "Route 41 (Johto)", "Cianwood City", - "Route 42", + "Route 42 (Johto)", "Mt Mortar", - "Lake Of Rage", - "Route 43", - "Route 44", + "Mt. Mortar", + "Lake of Rage", + "Route 43 (Johto)", + "Route 44 (Johto)", "Ice Path", "Blackthorn City", "Dragons Den", - "Route 45", - "Route 46", - "Route 47", - "Route 48", - "Safari Zone", + "Dragon's Den", + "Route 45 (Johto)", + "Route 46 (Johto)", + "Route 47 (Johto)", + "Route 48 (Johto)", + "Safari Zone (Johto)", + "Safari Zone Gate", + "Cliff Cave", + "Cliff Edge Gate", "Whirl Islands", + "Embedded Tower", "Tohjo Falls", - "Route 27", - "Route 26", - "Victory Road 1", - "Route 28", - "Mt Silver", + "Route 27 (Kanto)", + "Route 26 (Kanto)", + "Victory Road (Kanto 2F)", + "Route 28 (Kanto)", + "Mt. Silver", + "Mt. Silver (Cave)", "Pallet Town", - "Route 1", + "Professor Oak's Laboratory", + "Route 01 (Kanto)", "Viridian City", "Viridian Forest", "Pewter City", - "Route 2", - "Route 3", - "Mt Moon", - "Route 4", + "Pewter Museum of Science", + "Kanto Route 2", + "Route 03 (Kanto)", + "Mt. Moon (B2F)", + "Mt. Moon Square", + "Route 04 (Kanto)", "Cerulean City", - "Route 24", - "Route 25", + "Route 24 (Kanto)", + "Route 25 (Kanto)", "Cerulean Cave", - "Route 5", - "Route 6", + "Route 05 (Kanto)", + "Route 06 (Kanto)", "Vermilion City", - "Route 7", - "Route 8", - "Route 9", - "Route 10", + "Route 07 (Kanto)", + "Route 08 (Kanto)", + "Route 09 (Kanto)", + "Route 10 (Kanto)", "Rock Tunnel", - "Route 11", - "Digletts Cave", - "Route 12", - "Route 13", - "Route 14", - "Route 15", + "Power Plant", + "Route 11 (Kanto)", + "Diglett's Cave", + "Route 12 (Kanto)", + "Route 13 (Kanto)", + "Route 14 (Kanto)", + "Route 15 (Kanto)", "Fuchsia City", - "Route 16", - "Route 17", - "Route 18", + "Route 16 (Kanto)", + "Route 17 (Kanto)", + "Route 18 (Kanto)", "Celadon City", - "Sea Route 19", - "Sea Route 20", + "Saffron City", + "Silph Co.", + "Route 19 (Kanto)", + "Route 20 (Kanto)", "Seafoam Islands", "Cinnabar Island", - "Sea Route 21", - "Route 22", - "Unknown All Poliwag", - "Unknown All Rattata", - "Unknown All Bugs" + "Route 21 (Kanto)", + "Route 22 (Kanto)", + "Team Rocket HQ (B1F)", + "Sinjoh Ruins" ], "emerald": [ "Starter", - "Route 101", - "Oldale Town", - "Route 103", - "Route 102", + "Littleroot Town", + "Hoenn Route 101", + "Hoenn Route 103", + "Hoenn Route 102", "Petalburg City", - "Route 104", + "Hoenn Route 104", "Petalburg Woods", "Rusturf Tunnel", - "Route 116", + "Hoenn Route 116", "Rustboro City", - "Route 105", - "Route 106", + "Devon Corporation", + "Hoenn Route 105", + "Hoenn Route 106", "Dewford Town", "Granite Cave", - "Route 107", - "Route 108", - "Route 109", + "Hoenn Route 107", + "Hoenn Route 108", + "Hoenn Route 109", "Slateport City", - "Route 110", + "Hoenn Route 110", "New Mauville", - "Route 117", - "Route 111", + "Hoenn Route 117", + "Hoenn Route 111", + "Desert Ruins", "Mirage Tower", - "Route 112", + "Hoenn Route 112", "Fiery Path", "Jagged Pass", "Lavaridge Town", - "Route 113", - "Route 114", + "Hoenn Route 113", + "Hoenn Route 114", "Meteor Falls", - "Route 115", - "Route 118", + "Hoenn Route 115", + "Fortree City", + "Weather Institute", + "Hoenn Route 118", + "Hoenn Route 119", "Route 119", - "Route 120", - "Route 121", - "Safari Zone", + "Hoenn Route 120", + "Hoenn Route 121", + "Safari Zone (Hoenn)", "Lilycove City", - "Route 122", - "Mt Pyre", - "Route 123", - "Magma Hideout", - "Route 124", + "Hoenn Route 122", + "Mt. Pyre", + "Hoenn Route 123", + "Team Magma Hideout", + "Team Aqua Hideout", + "Magma Hideout (Jagged Pass)", + "Hoenn Route 124", "Mossdeep City", - "Route 125", + "Hoenn Route 125", "Shoal Cave", - "Route 126", + "Hoenn Route 126", "Sootopolis City", - "Cave Of Origin", - "Route 127", - "Route 128", + "Cave of Origin", + "Hoenn Route 127", + "Hoenn Route 128", "Seafloor Cavern", - "Route 129", - "Route 130", - "Route 131", + "Hoenn Route 129", + "Hoenn Route 130", + "Hoenn Route 131", "Pacifidlog Town", - "Route 132", - "Route 133", - "Route 134", + "Hoenn Route 132", + "Hoenn Route 133", + "Hoenn Route 134", "Ever Grande City", - "Victory Road", + "Victory Road (Hoenn)", "Sky Pillar", "Abandoned Ship", "Desert Underpass", "Artisan Cave", - "Altering Cave" + "Altering Cave (Sevii Islands)", + "Ancient Tomb", + "Island Cave", + "Battle Frontier (Hoenn)", + "Southern Island", + "Marine Cave", + "Terra Cave", + "Mirage Island", + "Birth Island", + "Faraway Island", + "Navel Rock" ], "platinum": [ - "Canalave City", - "Pastoria City", - "Sunyshore City", - "Pokemon League", - "Oreburgh Mine", - "Oreburgh Mine (1F)", + "Starter", + "Twinleaf Town", + "Lake Verity", + "Route 201 (Sinnoh)", + "Route 202 (Sinnoh)", + "Route 203 (Sinnoh)", + "Oreburgh Gate", + "Oreburgh City", "Oreburgh Mine (B1F)", + "Oreburgh Mining Museum", + "Sinnoh Route 204", + "Ravaged Path", + "Sinnoh Route 205", "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", + "Eterna Condominiums", "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", + "Route 206 (Sinnoh)", + "Wayward Cave", + "Route 207 (Sinnoh)", + "Mount Coronet", + "Route 208 (Sinnoh)", + "Hearthome City", + "Route 209 (Sinnoh)", "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", + "Solaceon Ruins", + "Sinnoh Route 210", + "Route 215 (Sinnoh)", + "Veilstone City", + "Route 214 (Sinnoh)", + "Valor Lakefront", + "Route 213 (Sinnoh)", + "Pastoria City", + "Great Marsh", + "Sinnoh Route 212", + "Trophy Garden", + "Route 218 (Sinnoh)", + "Canalave City", + "Iron Island", + "Sinnoh Route 211", "Celestic Town", - "Resort Area", - "Sea Route 220", - "Sea Route 223", - "Sea Route 226", - "Sea Route 230", + "Fuego Ironworks", + "Route 216 (Sinnoh)", + "Route 217 (Sinnoh)", + "Snowpoint City", + "Acuity Lakefront", + "Lake Acuity", + "Lake Valor", + "Spear Pillar", + "Distortion World", + "Route 222 (Sinnoh)", + "Sunyshore City", + "Route 223 (Sinnoh)", + "Victory Road (Sinnoh)", + "Pokémon League (Sinnoh)", "Sendoff Spring", - "Maniac Tunnel" + "Turnback Cave", + "Route 224 (Sinnoh)", + "Route 225 (Sinnoh)", + "Route 226 (Sinnoh)", + "Route 227 (Sinnoh)", + "Stark Mountain", + "Route 228 (Sinnoh)", + "Route 229 (Sinnoh)", + "Resort Area", + "Route 230 (Sinnoh)", + "Snowpoint Temple", + "Route 219 (Sinnoh)", + "Route 220 (Sinnoh)", + "Route 221 (Sinnoh)", + "Maniac Tunnel", + "Flower Paradise", + "Newmoon Island", + "Hall of Origin", + "Rock Peak Ruins (Sinnoh)", + "Iceberg Ruins (Sinnoh)", + "Iron Ruins (Sinnoh)" + ], + "diamond-pearl": [ + "Starter", + "Twinleaf Town", + "Lake Verity", + "Route 201 (Sinnoh)", + "Route 202 (Sinnoh)", + "Route 203 (Sinnoh)", + "Oreburgh Gate", + "Oreburgh City", + "Oreburgh Mine (B1F)", + "Oreburgh Mining Museum", + "Sinnoh Route 204", + "Ravaged Path", + "Sinnoh Route 205", + "Valley Windworks", + "Eterna Forest", + "Eterna City", + "Eterna Condominiums", + "Old Chateau", + "Route 206 (Sinnoh)", + "Wayward Cave", + "Route 207 (Sinnoh)", + "Mount Coronet", + "Route 208 (Sinnoh)", + "Hearthome City", + "Route 209 (Sinnoh)", + "Lost Tower", + "Solaceon Ruins", + "Sinnoh Route 210", + "Route 215 (Sinnoh)", + "Route 214 (Sinnoh)", + "Valor Lakefront", + "Route 213 (Sinnoh)", + "Pastoria City", + "Great Marsh", + "Sinnoh Route 212", + "Trophy Garden", + "Route 218 (Sinnoh)", + "Canalave City", + "Iron Island", + "Sinnoh Route 211", + "Celestic Town", + "Fuego Ironworks", + "Route 216 (Sinnoh)", + "Route 217 (Sinnoh)", + "Snowpoint City", + "Acuity Lakefront", + "Lake Acuity", + "Lake Valor", + "Lake Valor #2", + "Spear Pillar", + "Route 222 (Sinnoh)", + "Sunyshore City", + "Route 223 (Sinnoh)", + "Victory Road (Sinnoh)", + "Pokémon League (Sinnoh)", + "Sendoff Spring", + "Turnback Cave", + "Route 224 (Sinnoh)", + "Route 225 (Sinnoh)", + "Route 226 (Sinnoh)", + "Route 227 (Sinnoh)", + "Stark Mountain", + "Route 228 (Sinnoh)", + "Route 229 (Sinnoh)", + "Resort Area", + "Route 230 (Sinnoh)", + "Snowpoint Temple", + "Route 219 (Sinnoh)", + "Route 220 (Sinnoh)", + "Route 221 (Sinnoh)", + "Maniac Tunnel", + "Rock Peak Ruins (Sinnoh)" + ], + "black-white": [ + "Starter", + "Nuvema Town", + "Unova Route 1", + "Unova Route 2", + "Striaton City", + "Dreamyard", + "Unova Route 3", + "Wellspring Cave", + "Nacrene City", + "Pinwheel Forest", + "Castelia City", + "Unova Route 4", + "Desert Resort", + "Relic Castle", + "Unova Route 16", + "Lostlorn Forest", + "Unova Route 5", + "Driftveil Drawbridge", + "Driftveil City", + "Cold Storage (Outside)", + "Unova Route 6", + "Chargestone Cave", + "Mistralton Cave", + "Unova Route 7", + "Celestial Tower", + "Twist Mountain", + "Icirrus City", + "Moor of Icirrus", + "Dragonspiral Tower", + "Unova Route 8", + "Unova Route 9", + "Unova Route 10", + "Victory Road (Unova Black & White)", + "N's Castle", + "Unova Route 11", + "Village Bridge", + "Unova Route 12", + "Unova Route 13", + "Undella Town", + "Undella Bay", + "Unova Route 14", + "Abundant Shrine", + "White Forest", + "Unova Route 15", + "Marvelous Bridge", + "Challenger's Cave", + "Unova Route 17", + "Unova Route 18", + "P2 Laboratory", + "Giant Chasm", + "Liberty Garden" + ], + "black-2-white-2": [ + "Starter", + "Aspertia City", + "Unova Route 19", + "Floccesy Town", + "Floccesy Ranch", + "Unova Route 20", + "Virbank City", + "Virbank Complex", + "Castelia City", + "Castelia Sewers", + "Relic Passage", + "Unova Route 4", + "Desert Resort", + "Relic Castle", + "Nimbasa City", + "Unova Route 16", + "Lostlorn Forest", + "Unova Route 5", + "Driftveil Drawbridge", + "Driftveil City", + "Unova Route 6", + "Mistralton Cave", + "Chargestone Cave", + "Unova Route 7", + "Celestial Tower", + "Reversal Mountain", + "Strange House", + "Undella Town", + "Undella Bay", + "Unova Route 13", + "Unova Route 12", + "Village Bridge", + "Unova Route 11", + "Unova Route 9", + "Humilau City", + "Unova Route 21", + "Seaside Cave", + "Unova Route 22", + "Giant Chasm", + "Unova Route 23", + "Victory Road (Unova Black 2 & White 2)", + "Unova Route 1", + "Unova Route 2", + "Accumula Town", + "Unova Route 3", + "Striaton City", + "Dreamyard", + "Nacrene City", + "Pinwheel Forest", + "Wellspring Cave", + "Unova Route 15", + "Marvelous Bridge", + "Unova Route 8", + "Moor of Icirrus", + "Icirrus City", + "Dragonspiral Tower", + "Twist Mountain", + "Unova Route 17", + "Unova Route 18", + "P2 Laboratory", + "Unova Route 14", + "Abundant Shrine", + "Clay Tunnel", + "Underground Ruins", + "Nature Preserve" + ], + "x-y": [ + "Starter", + "Vaniville Town", + "Aquacorde Town", + "Kalos Route 02", + "Santalune Forest", + "Kalos Route 03", + "Santalune City", + "Kalos Route 22", + "Kalos Route 04", + "South Boulevard", + "Kalos Route 05", + "Camphrier Town", + "Kalos Route 06", + "Parfume Palace", + "Kalos Route 07", + "Berry Fields (Kalos)", + "Connecting Cave", + "Kalos Route 08", + "Ambrette Town", + "Kalos Route 09", + "Glittering Cave", + "Cyllage City", + "Kalos Route 10", + "Geosenge Town", + "Kalos Route 11", + "Reflection Cave", + "Shalour City", + "Tower of Mastery", + "Kalos Route 12", + "Azure Bay", + "Coumarine City", + "Kalos Route 13", + "Lumiose City", + "Kalos Route 14", + "Laverre City", + "Kalos Route 15", + "Lost Hotel", + "Kalos Route 16", + "Frost Cavern", + "Kalos Route 17", + "Team Flare Secret HQ", + "Kalos Route 18", + "Terminus Cave", + "Couriway Town", + "Kalos Route 19", + "Kalos Route 20", + "Pokémon Village", + "Snowbelle City", + "Kalos Route 21", + "Victory Road (Kalos)", + "Unknown Dungeon (Kalos)", + "Sea Spirits Den", + "Friend Safari" + ], + "sun-moon": [ + "Starter", + "Iki Town", + "Alola Route 1", + "Trainer’s School (Alola)", + "Hau'oli City", + "Alola Route 2", + "Hau'oli Cemetery", + "Verdant Cavern", + "Alola Route 3", + "Melemele Meadow", + "Seaward Cave", + "Kala'e Bay", + "Ten Carat Hill", + "Melemele Sea", + "Alola Route 4", + "Paniola Town", + "Paniola Ranch", + "Alola Route 5", + "Brooklet Hill", + "Alola Route 6", + "Alola Route 7", + "Wela Volcano Park", + "Alola Route 8", + "Lush Jungle", + "Diglett's Tunnel", + "Alola Route 9", + "Memorial Hill", + "Akala Outskirts", + "Konikoni City", + "Hano Beach", + "Ruins of Life", + "Malie City", + "Malie Garden", + "Alola Route 10", + "Mount Hokulani", + "Alola Route 11", + "Alola Route 12", + "Blush Mountain", + "Alola Route 13", + "Haina Desert", + "Ruins of Abundance", + "Tapu Village", + "Alola Route 14", + "Thrifty Megamart (Abandoned Site)", + "Alola Route 15", + "Aether House", + "Alola Route 16", + "Ula'ula Meadow", + "Alola Route 17", + "Ula'ula Beach", + "Aether Paradise", + "Seafolk Village", + "Poni Wilds", + "Ancient Poni Path", + "Poni Breaker Coast", + "Ruins of Hope", + "Exeggutor Island", + "Vast Poni Canyon", + "Altar of the Sunne", + "Altar of the Moone", + "Mount Lanakila", + "Lake of the Sunne", + "Lake of the Moone", + "Poni Grove", + "Poni Plains", + "Poni Meadow", + "Poni Coast", + "Poni Gauntlet", + "Resolution Cave", + "Ruins of Conflict" + ], + "ultra-sun-ultra-moon": [ + "Starter", + "Alola Route 1", + "Trainer’s School (Alola)", + "Hau'oli City", + "Alola Route 2", + "Hau'oli Cemetery", + "Verdant Cavern", + "Alola Route 3", + "Melemele Meadow", + "Seaward Cave", + "Kala'e Bay", + "Sandy Cave", + "Ten Carat Hill", + "Melemele Sea", + "Heahea City", + "Heahea Beach", + "Alola Route 4", + "Pikachu Valley", + "Paniola Town", + "Paniola Ranch", + "Alola Route 5", + "Brooklet Hill", + "Alola Route 6", + "Royal Avenue", + "Alola Route 7", + "Wela Volcano Park", + "Dividing Peak Tunnel", + "Alola Route 8", + "Lush Jungle", + "Diglett's Tunnel", + "Alola Route 9", + "Konikoni City", + "Akala Outskirts", + "Hano Beach", + "Malie City (Outer Cape)", + "Malie Garden", + "Alola Route 10", + "Mount Hokulani", + "Alola Route 11", + "Alola Route 12", + "Blush Mountain", + "Alola Route 13", + "Haina Desert", + "Tapu Village", + "Alola Route 14", + "Thrifty Megamart (Abandoned Site)", + "Alola Route 15", + "Aether House", + "Alola Route 16", + "Ula'ula Meadow", + "Alola Route 17", + "Memorial Hill", + "Ula'ula Beach", + "Aether Paradise", + "Seafolk Village", + "Poni Wilds", + "Ancient Poni Path", + "Poni Breaker Coast", + "Ruins of Hope", + "Exeggutor Island", + "Vast Poni Canyon", + "Mahalo Trail", + "Ultra Megalopolis", + "Megalo Tower", + "Mount Lanakila", + "Lake of the Sunne", + "Lake of the Moone", + "Poni Grove", + "Poni Plains", + "Poni Meadow", + "Poni Coast", + "Poni Gauntlet", + "Resolution Cave", + "Ultra Space Wilds", + "Ultra Deep-Sea", + "Ultra Plant", + "Ultra Forest", + "Ultra Crater", + "Ultra Ruin", + "Team Rocket’s Castle", + "Ruins of Conflict", + "Ruins of Life", + "Ruins of Abundance" + ], + "sword-shield": [ + "Starter", + "Postwick", + "Slumbering Weald", + "Wedgehurst", + "Route 1 - Galar", + "Galar Route 2", + "Rolling Fields", + "Dappled Grove", + "Watchtower Ruins", + "East Lake Axewell", + "West Lake Axewell", + "Axew's Eye", + "South Lake Miloch", + "Giant's Seat", + "North Lake Miloch", + "Motostoke", + "Galar Route 3", + "Galar Mine", + "Galar Route 4", + "Turffield", + "Galar Route 5", + "Hulbury", + "Galar Mine No 2", + "Motostoke Outskirts", + "Motostoke Riverbank", + "Bridge Field", + "Stony Wilderness", + "Dusty Bowl", + "Giant's Mirror", + "Giant's Cap", + "Hammerlocke Hills", + "Lake of Outrage", + "Hammerlocke", + "Route 6 - Galar", + "Stow-on-Side", + "Glimwood Tangle", + "Route 7 - Galar", + "Galar Route 8", + "Circhester", + "Galar Route 9", + "Spikemuth", + "Galar Route 10", + "Wyndon", + "Tower Summit", + "Battle Tower (Galar)", + "Fields of Honor", + "Master Dojo", + "Soothing Wetlands", + "Forest of Focus", + "Challenge Beach", + "Challenge Road", + "Brawler's Cave", + "Courageous Cavern", + "Loop Lagoon", + "Training Lowlands", + "Warm-Up Tunnel", + "Potbottom Desert", + "Workout Sea", + "Stepping Stone Sea", + "Insular Sea", + "Honeycalm Sea", + "Honeycalm Island", + "Slippery Slope", + "Freezington", + "Frostpoint Field", + "Giant's Bed", + "Old Cemetery", + "Snowslide Slope", + "Tunnel to the Top", + "Path to the Peak", + "Crown Shrine", + "Giant's Foot", + "Roaring Sea Caves", + "Frigid Sea", + "Three-Point Pass", + "Ballimere Lake", + "Lakeside Cave", + "Dyna Tree Hill", + "Max Lair", + "Rock Peak Ruins (Galar)", + "Iceberg Ruins (Galar)", + "Iron Ruins (Galar)", + "Split-Decision Ruins", + "Meetup Spot" + ], + "brilliant-diamond-shining-pearl": [ + "Starter", + "Twinleaf Town", + "Lake Verity", + "Route 201 (Sinnoh)", + "Route 202 (Sinnoh)", + "Route 203 (Sinnoh)", + "Oreburgh Gate", + "Oreburgh City", + "Oreburgh Mine", + "Oreburgh Mining Museum", + "Sinnoh Route 204", + "Ravaged Path", + "Floaroma Town", + "Sinnoh Route 205", + "Valley Windworks", + "Eterna Forest", + "Eterna City", + "Eterna Condominiums", + "Old Chateau", + "Route 206 (Sinnoh)", + "Wayward Cave", + "Route 207 (Sinnoh)", + "Mount Coronet", + "Route 208 (Sinnoh)", + "Hearthome City", + "Route 209 (Sinnoh)", + "Lost Tower", + "Solaceon Ruins", + "Sinnoh Route 210", + "Route 215 (Sinnoh)", + "Route 214 (Sinnoh)", + "Valor Lakefront", + "Route 213 (Sinnoh)", + "Pastoria City", + "Great Marsh", + "Sinnoh Route 212", + "Trophy Garden", + "Route 218 (Sinnoh)", + "Canalave City", + "Iron Island", + "Sinnoh Route 211", + "Celestic Town", + "Fuego Ironworks", + "Route 216 (Sinnoh)", + "Route 217 (Sinnoh)", + "Snowpoint City", + "Acuity Lakefront", + "Lake Acuity", + "Lake Valor", + "Spear Pillar", + "Route 222 (Sinnoh)", + "Sunyshore City", + "Route 223 (Sinnoh)", + "Victory Road (Sinnoh)", + "Pokémon League (Sinnoh)", + "Sendoff Spring", + "Turnback Cave", + "Route 224 (Sinnoh)", + "Route 225 (Sinnoh)", + "Route 226 (Sinnoh)", + "Route 227 (Sinnoh)", + "Stark Mountain", + "Route 228 (Sinnoh)", + "Route 229 (Sinnoh)", + "Resort Area", + "Route 230 (Sinnoh)", + "Snowpoint Temple", + "Route 219 (Sinnoh)", + "Route 220 (Sinnoh)", + "Route 221 (Sinnoh)", + "Maniac Tunnel", + "Ramanas Park", + "Spacious Cave", + "Grassland Cave", + "Fountainspring Cave", + "Rocky Cave", + "Volcanic Cave", + "Sandsear Cave", + "Swampy Cave", + "Dazzling Cave", + "Stargleam Cavern", + "Still-Water Cavern", + "Sunlit Cavern", + "Big Bluff Cavern", + "Bogsunk Cavern", + "Glacial Cavern", + "Icy Cave", + "Riverbank Cave", + "Typhlo Cavern", + "Whiteout Cave", + "Flower Paradise", + "Newmoon Island", + "Hall of Origin" + ], + "legends-arceus": [ + "Starter", + "Jubilife Village", + "Aspiration Hill", + "Floaro Gardens", + "Horseshoe Plains", + "Deertrack Path", + "Deertrack Heights", + "Windswept Run", + "Nature's Pantry", + "The Heartwood", + "Grueling Grove", + "Worn Bridge", + "Obsidian Falls", + "Sandgem Flats", + "Ramanas Island", + "Lake Verity", + "Oreburrow Tunnel", + "Wayward Wood", + "Grandtree Arena", + "Golden Lowlands", + "Gapejaw Bog", + "Droning Meadow", + "Holm of Trials", + "Cloudpool Ridge", + "Scarlet Bog", + "Sludge Mound", + "Cottonsedge Prairie", + "Bolderoll Slope", + "Bolderoll Ravine", + "Diamond Heath", + "Diamond Settlement", + "Pearl Settlement", + "Lonely Spring", + "Shrouded Ruins", + "Solaceon Ruins", + "Ursa's Ring", + "Brava Arena", + "Lake Valor", + "Ginkgo Landing", + "Aipom Hill", + "Bathers’ Lagoon", + "Hideaway Bay", + "Deadwood Haunt", + "Tombolo Walk", + "Windbreak Stand", + "Tidewater Dam", + "Crossing Slope", + "Veilstone Cape", + "Spring Path", + "Castaway Shore", + "Seaside Hollow", + "Sands Reach", + "Lunker's Lair", + "Islespy Shore", + "Firespit Island", + "Tranquility Cove", + "Seagrass Haven", + "Heavenward Lookout", + "Wayward Cave", + "Ancient Quarry", + "Celestica Trail", + "Celestica Ruins", + "Sacred Plaza", + "Primeval Grotto", + "Clamberclaw Cliffs", + "Fabled Spring", + "Cloudcap Pass", + "Stonetooth Rows", + "Sonorous Path", + "Secret Hollow", + "Moonview Arena", + "Snowfall Hot Spring", + "Whiteout Valley", + "Crevasse Passage", + "Avalanche Slopes", + "Arena’s Approach", + "Avalugg’s Legacy", + "Glacier Terrace", + "Heart's Crag", + "Icebound Falls", + "Icepeak Cavern", + "Bonechill Wastes", + "Lake Acuity", + "Snowpoint Temple", + "Ice Column Chamber", + "Temple of Sinnoh", + "Lava Dome Sanctum", + "Hall of Origin", + "Lake Verity #2" + ], + "scarlet-violet": [ + "Starter", + "Cabo Poco", + "Poco Path", + "Area One (South Province)", + "Naranja Academy", + "Uva Academy", + "Cortondo", + "South Paldean Sea (Ocean)", + "Area Two (South Province)", + "Area Three (South Province)", + "Area Four (South Province)", + "Area Five (South Province)", + "Area One (West Province)", + "Asado Desert", + "West Paldean Sea (Ocean)", + "Cascarrafa", + "Area Two (West Province)", + "Colonnade Hollow", + "Area One (East Province)", + "Levincia", + "East Paldean Sea", + "Area Two (East Province)", + "Tagtree Thicket", + "Area Three (East Province)", + "Area Three (West Province)", + "Fellhorn Gorge", + "Dalizapa Passage", + "Alfornada Cavern", + "Area Six (South Province)", + "Glaseado Mountain", + "Area Three (North Province)", + "North Paldean Sea", + "Area One (North Province)", + "Area Two (North Province)", + "Socarrat Trail", + "Casseroya Lake", + "Pokémon League (Paldea)", + "Great Crater of Paldea", + "Area Zero", + "Zero Lab", + "Grasswither Shrine", + "Groundblight Shrine", + "Firescourge Shrine", + "Icerend Shrine", + "Mossui Town", + "Kitakami Road", + "Kitakami Wilds", + "Reveler's Road", + "Apple Hills", + "Wistful Fields", + "Oni Mountain", + "Oni's Maw", + "Kitakami Hall", + "Infernal Pass", + "Crystal Pool", + "Mossfell Confluence", + "Inlet Grotto (Cave)", + "Torchlit Labyrinth (Cave)", + "Chilling Waterhead", + "Loyalty Plaza", + "Timeless Woods", + "Paradise Barrens", + "Coastal Biome", + "Savanna Biome", + "Canyon Biome", + "Polar Biome", + "Chargestone Cavern", + "Area Zero Underdepths", + "Random (Around Paldea)", + "Random (Around Kitakami)", + "Random (Around Terrarium)" + ], + "legends-z-a": [ + "Starter", + "Wild Zone 1", + "Wild Zone 2", + "Wild Zone 3", + "Wild Zone 4", + "Wild Zone 5", + "Wild Zone 6", + "Wild Zone 7", + "Wild Zone 8", + "Wild Zone 9", + "Wild Zone 10", + "Wild Zone 11", + "Wild Zone 12", + "Wild Zone 13", + "Wild Zone 14", + "Wild Zone 15", + "Wild Zone 16", + "Wild Zone 17", + "Wild Zone 18", + "Wild Zone 19", + "Wild Zone 20" ] }, "aliases": { diff --git a/tools/generate_route_order.py b/tools/generate_route_order.py new file mode 100644 index 0000000..168ea26 --- /dev/null +++ b/tools/generate_route_order.py @@ -0,0 +1,1353 @@ +#!/usr/bin/env python3 +"""Generate a complete route_order.json with correct progression ordering for all games. + +Uses encounter data files as the source of truth for location names. +Validates that all encounter data locations are covered by the route ordering. +""" + +import json +import sys +from pathlib import Path + +SEEDS_DIR = Path(__file__).resolve().parent.parent / "backend" / "src" / "app" / "seeds" +DATA_DIR = SEEDS_DIR / "data" + +# ============================================================================ +# Route orderings by version group +# Each list starts with "Starter" and then lists locations in game progression order. +# Names must match the encounter data files exactly OR use the startswith matching +# (e.g. "Mt. Moon" matches "Mt. Moon (B2F)" because name.startswith("Mt. Moon (")) +# ============================================================================ + +ROUTE_ORDERS = { + # ======================================================================== + # Gen 1 - FireRed/LeafGreen (also used by Red/Blue, Yellow, Let's Go) + # ======================================================================== + "firered-leafgreen": [ + "Starter", + "Pallet Town", + "Professor Oak's Laboratory", + "Route 01 (Kanto)", + "Viridian City", + "Route 22 (Kanto)", + "Route 02 (Kanto)", + "Viridian Forest", + "Route 03 (Kanto)", + "Mt. Moon", + "Route 04 (Kanto)", + "Route 4", + "Cerulean City", + "Route 24 (Kanto)", + "Route 25 (Kanto)", + "Route 05 (Kanto)", + "Underground Path (Kanto - Routes 5-6)", + "Route 06 (Kanto)", + "Vermilion City", + "Vermilion City (Port)", + "Route 11 (Kanto)", + "Diglett's Cave", + "Route 09 (Kanto)", + "Route 10 (Kanto)", + "Rock Tunnel", + "Power Plant", + "Route 08 (Kanto)", + "Route 07 (Kanto)", + "Celadon City", + "Pokémon Tower", + "Silph Co.", + "Saffron City", + "Fighting Dojo", + "Route 16 (Kanto)", + "Route 17 (Kanto)", + "Route 18 (Kanto)", + "Fuchsia City", + "Safari Zone (Kanto)", + "Route 15 (Kanto)", + "Route 14 (Kanto)", + "Route 13 (Kanto)", + "Route 12 (Kanto)", + "Route 19 (Kanto)", + "Route 20 (Kanto)", + "Seafoam Islands", + "Cinnabar Island", + "Pokémon Mansion (Kanto)", + "Cinnabar Lab", + "Route 21 (Kanto)", + "Route 23 (Kanto)", + "Victory Road (Kanto)", + "Cerulean Cave", + # Sevii Islands (postgame) + "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", + "Tanoby Chambers", + "Altering Cave (Sevii Islands)", + # Event + "Birth Island", + "Navel Rock", + ], + + # ======================================================================== + # Gen 2 - HeartGold/SoulSilver (also used by Gold/Silver, Crystal) + # ======================================================================== + "heartgold-soulsilver": [ + "Starter", + "New Bark Town", + "Route 29 (Johto)", + "Cherrygrove City", + "Route 30 (Johto)", + "Route 31 (Johto)", + "Dark Cave", + "Violet City", + "Sprout Tower", + "Route 32 (Johto)", + "Ruins of Alph", + "Union Cave", + "Route 33 (Johto)", + "Azalea Town", + "Slowpoke Well", + "Ilex Forest", + "Route 34 (Johto)", + "Goldenrod City", + "Route 35 (Johto)", + "National Park", + "Route 36 (Johto)", + "Route 37 (Johto)", + "Ecruteak City", + "Burned Tower", + "Bell Tower", + "Route 38 (Johto)", + "Route 39 (Johto)", + "Olivine City", + "Route 40 (Johto)", + "Route 41 (Johto)", + "Cianwood City", + "Route 42 (Johto)", + "Mt Mortar", + "Mt. Mortar", + "Lake of Rage", + "Route 43 (Johto)", + "Route 44 (Johto)", + "Ice Path", + "Blackthorn City", + "Dragons Den", + "Dragon's Den", + "Route 45 (Johto)", + "Route 46 (Johto)", + "Route 47 (Johto)", + "Route 48 (Johto)", + "Safari Zone (Johto)", + "Safari Zone Gate", + "Cliff Cave", + "Cliff Edge Gate", + "Whirl Islands", + "Embedded Tower", + "Tohjo Falls", + "Route 27 (Kanto)", + "Route 26 (Kanto)", + "Victory Road (Kanto 2F)", + # Kanto postgame + "Route 28 (Kanto)", + "Mt. Silver", + "Mt. Silver (Cave)", + "Pallet Town", + "Professor Oak's Laboratory", + "Route 01 (Kanto)", + "Viridian City", + "Viridian Forest", + "Pewter City", + "Pewter Museum of Science", + "Kanto Route 2", + "Route 03 (Kanto)", + "Mt. Moon (B2F)", + "Mt. Moon Square", + "Route 04 (Kanto)", + "Cerulean City", + "Route 24 (Kanto)", + "Route 25 (Kanto)", + "Cerulean Cave", + "Route 05 (Kanto)", + "Route 06 (Kanto)", + "Vermilion City", + "Route 07 (Kanto)", + "Route 08 (Kanto)", + "Route 09 (Kanto)", + "Route 10 (Kanto)", + "Rock Tunnel", + "Power Plant", + "Route 11 (Kanto)", + "Diglett's Cave", + "Route 12 (Kanto)", + "Route 13 (Kanto)", + "Route 14 (Kanto)", + "Route 15 (Kanto)", + "Fuchsia City", + "Route 16 (Kanto)", + "Route 17 (Kanto)", + "Route 18 (Kanto)", + "Celadon City", + "Saffron City", + "Silph Co.", + "Route 19 (Kanto)", + "Route 20 (Kanto)", + "Seafoam Islands", + "Cinnabar Island", + "Route 21 (Kanto)", + "Route 22 (Kanto)", + # Special + "Team Rocket HQ (B1F)", + "Sinjoh Ruins", + ], + + # ======================================================================== + # Gen 3 - Emerald (also used by Ruby/Sapphire, ORAS) + # ======================================================================== + "emerald": [ + "Starter", + "Littleroot Town", + "Hoenn Route 101", + "Hoenn Route 103", + "Hoenn Route 102", + "Petalburg City", + "Hoenn Route 104", + "Petalburg Woods", + "Rusturf Tunnel", + "Hoenn Route 116", + "Rustboro City", + "Devon Corporation", + "Hoenn Route 105", + "Hoenn Route 106", + "Dewford Town", + "Granite Cave", + "Hoenn Route 107", + "Hoenn Route 108", + "Hoenn Route 109", + "Slateport City", + "Hoenn Route 110", + "New Mauville", + "Hoenn Route 117", + "Hoenn Route 111", + "Desert Ruins", + "Mirage Tower", + "Hoenn Route 112", + "Fiery Path", + "Jagged Pass", + "Lavaridge Town", + "Hoenn Route 113", + "Hoenn Route 114", + "Meteor Falls", + "Hoenn Route 115", + "Fortree City", + "Weather Institute", + "Hoenn Route 118", + "Hoenn Route 119", + "Route 119", + "Hoenn Route 120", + "Hoenn Route 121", + "Safari Zone (Hoenn)", + "Lilycove City", + "Hoenn Route 122", + "Mt. Pyre", + "Hoenn Route 123", + "Team Magma Hideout", + "Team Aqua Hideout", + "Magma Hideout (Jagged Pass)", + "Hoenn Route 124", + "Mossdeep City", + "Hoenn Route 125", + "Shoal Cave", + "Hoenn Route 126", + "Sootopolis City", + "Cave of Origin", + "Hoenn Route 127", + "Hoenn Route 128", + "Seafloor Cavern", + "Hoenn Route 129", + "Hoenn Route 130", + "Hoenn Route 131", + "Pacifidlog Town", + "Hoenn Route 132", + "Hoenn Route 133", + "Hoenn Route 134", + "Ever Grande City", + "Victory Road (Hoenn)", + "Sky Pillar", + "Abandoned Ship", + "Desert Underpass", + "Artisan Cave", + "Altering Cave (Sevii Islands)", + # Postgame/special + "Ancient Tomb", + "Island Cave", + "Battle Frontier (Hoenn)", + "Southern Island", + "Marine Cave", + "Terra Cave", + "Mirage Island", + "Birth Island", + "Faraway Island", + "Navel Rock", + ], + + # ======================================================================== + # Gen 4 - Platinum + # ======================================================================== + "platinum": [ + "Starter", + "Twinleaf Town", + "Lake Verity", + "Route 201 (Sinnoh)", + "Route 202 (Sinnoh)", + "Route 203 (Sinnoh)", + "Oreburgh Gate", + "Oreburgh City", + "Oreburgh Mine (B1F)", + "Oreburgh Mining Museum", + "Sinnoh Route 204", + "Ravaged Path", + "Sinnoh Route 205", + "Valley Windworks", + "Eterna Forest", + "Eterna City", + "Eterna Condominiums", + "Old Chateau", + "Route 206 (Sinnoh)", + "Wayward Cave", + "Route 207 (Sinnoh)", + "Mount Coronet", + "Route 208 (Sinnoh)", + "Hearthome City", + "Route 209 (Sinnoh)", + "Lost Tower", + "Solaceon Ruins", + "Sinnoh Route 210", + "Route 215 (Sinnoh)", + "Veilstone City", + "Route 214 (Sinnoh)", + "Valor Lakefront", + "Route 213 (Sinnoh)", + "Pastoria City", + "Great Marsh", + "Sinnoh Route 212", + "Trophy Garden", + "Route 218 (Sinnoh)", + "Canalave City", + "Iron Island", + "Sinnoh Route 211", + "Celestic Town", + "Fuego Ironworks", + "Route 216 (Sinnoh)", + "Route 217 (Sinnoh)", + "Snowpoint City", + "Acuity Lakefront", + "Lake Acuity", + "Lake Valor", + "Spear Pillar", + "Distortion World", + "Route 222 (Sinnoh)", + "Sunyshore City", + "Route 223 (Sinnoh)", + "Victory Road (Sinnoh)", + "Pokémon League (Sinnoh)", + # Postgame + "Sendoff Spring", + "Turnback Cave", + "Route 224 (Sinnoh)", + "Route 225 (Sinnoh)", + "Route 226 (Sinnoh)", + "Route 227 (Sinnoh)", + "Stark Mountain", + "Route 228 (Sinnoh)", + "Route 229 (Sinnoh)", + "Resort Area", + "Route 230 (Sinnoh)", + "Snowpoint Temple", + "Route 219 (Sinnoh)", + "Route 220 (Sinnoh)", + "Route 221 (Sinnoh)", + "Maniac Tunnel", + # Event/special + "Flower Paradise", + "Newmoon Island", + "Hall of Origin", + "Rock Peak Ruins (Sinnoh)", + "Iceberg Ruins (Sinnoh)", + "Iron Ruins (Sinnoh)", + ], + + # ======================================================================== + # Gen 4 - Diamond/Pearl + # ======================================================================== + "diamond-pearl": [ + "Starter", + "Twinleaf Town", + "Lake Verity", + "Route 201 (Sinnoh)", + "Route 202 (Sinnoh)", + "Route 203 (Sinnoh)", + "Oreburgh Gate", + "Oreburgh City", + "Oreburgh Mine (B1F)", + "Oreburgh Mining Museum", + "Sinnoh Route 204", + "Ravaged Path", + "Sinnoh Route 205", + "Valley Windworks", + "Eterna Forest", + "Eterna City", + "Eterna Condominiums", + "Old Chateau", + "Route 206 (Sinnoh)", + "Wayward Cave", + "Route 207 (Sinnoh)", + "Mount Coronet", + "Route 208 (Sinnoh)", + "Hearthome City", + "Route 209 (Sinnoh)", + "Lost Tower", + "Solaceon Ruins", + "Sinnoh Route 210", + "Route 215 (Sinnoh)", + "Route 214 (Sinnoh)", + "Valor Lakefront", + "Route 213 (Sinnoh)", + "Pastoria City", + "Great Marsh", + "Sinnoh Route 212", + "Trophy Garden", + "Route 218 (Sinnoh)", + "Canalave City", + "Iron Island", + "Sinnoh Route 211", + "Celestic Town", + "Fuego Ironworks", + "Route 216 (Sinnoh)", + "Route 217 (Sinnoh)", + "Snowpoint City", + "Acuity Lakefront", + "Lake Acuity", + "Lake Valor", + "Lake Valor #2", + "Spear Pillar", + "Route 222 (Sinnoh)", + "Sunyshore City", + "Route 223 (Sinnoh)", + "Victory Road (Sinnoh)", + "Pokémon League (Sinnoh)", + # Postgame + "Sendoff Spring", + "Turnback Cave", + "Route 224 (Sinnoh)", + "Route 225 (Sinnoh)", + "Route 226 (Sinnoh)", + "Route 227 (Sinnoh)", + "Stark Mountain", + "Route 228 (Sinnoh)", + "Route 229 (Sinnoh)", + "Resort Area", + "Route 230 (Sinnoh)", + "Snowpoint Temple", + "Route 219 (Sinnoh)", + "Route 220 (Sinnoh)", + "Route 221 (Sinnoh)", + "Maniac Tunnel", + "Rock Peak Ruins (Sinnoh)", + ], + + # ======================================================================== + # Gen 5 - Black/White + # ======================================================================== + "black-white": [ + "Starter", + "Nuvema Town", + "Unova Route 1", + "Unova Route 2", + "Striaton City", + "Dreamyard", + "Unova Route 3", + "Wellspring Cave", + "Nacrene City", + "Pinwheel Forest", + "Castelia City", + "Unova Route 4", + "Desert Resort", + "Relic Castle", + "Unova Route 16", + "Lostlorn Forest", + "Unova Route 5", + "Driftveil Drawbridge", + "Driftveil City", + "Cold Storage (Outside)", + "Unova Route 6", + "Chargestone Cave", + "Mistralton Cave", + "Unova Route 7", + "Celestial Tower", + "Twist Mountain", + "Icirrus City", + "Moor of Icirrus", + "Dragonspiral Tower", + "Unova Route 8", + "Unova Route 9", + "Unova Route 10", + "Victory Road (Unova Black & White)", + "N's Castle", + # Postgame + "Unova Route 11", + "Village Bridge", + "Unova Route 12", + "Unova Route 13", + "Undella Town", + "Undella Bay", + "Unova Route 14", + "Abundant Shrine", + "White Forest", + "Unova Route 15", + "Marvelous Bridge", + "Challenger's Cave", + "Unova Route 17", + "Unova Route 18", + "P2 Laboratory", + "Giant Chasm", + "Liberty Garden", + ], + + # ======================================================================== + # Gen 5 - Black 2/White 2 + # ======================================================================== + "black-2-white-2": [ + "Starter", + "Aspertia City", + "Unova Route 19", + "Floccesy Town", + "Floccesy Ranch", + "Unova Route 20", + "Virbank City", + "Virbank Complex", + "Castelia City", + "Castelia Sewers", + "Relic Passage", + "Unova Route 4", + "Desert Resort", + "Relic Castle", + "Nimbasa City", + "Unova Route 16", + "Lostlorn Forest", + "Unova Route 5", + "Driftveil Drawbridge", + "Driftveil City", + "Unova Route 6", + "Mistralton Cave", + "Chargestone Cave", + "Unova Route 7", + "Celestial Tower", + "Reversal Mountain", + "Strange House", + "Undella Town", + "Undella Bay", + "Unova Route 13", + "Unova Route 12", + "Village Bridge", + "Unova Route 11", + "Unova Route 9", + "Humilau City", + "Unova Route 21", + "Seaside Cave", + "Unova Route 22", + "Giant Chasm", + "Unova Route 23", + "Victory Road (Unova Black 2 & White 2)", + # Postgame + "Unova Route 1", + "Unova Route 2", + "Accumula Town", + "Unova Route 3", + "Striaton City", + "Dreamyard", + "Nacrene City", + "Pinwheel Forest", + "Wellspring Cave", + "Unova Route 15", + "Marvelous Bridge", + "Unova Route 8", + "Moor of Icirrus", + "Icirrus City", + "Dragonspiral Tower", + "Twist Mountain", + "Unova Route 17", + "Unova Route 18", + "P2 Laboratory", + "Unova Route 14", + "Abundant Shrine", + "Clay Tunnel", + "Underground Ruins", + "Nature Preserve", + ], + + # ======================================================================== + # Gen 6 - X/Y + # ======================================================================== + "x-y": [ + "Starter", + "Vaniville Town", + "Aquacorde Town", + "Kalos Route 02", + "Santalune Forest", + "Kalos Route 03", + "Santalune City", + "Kalos Route 22", + "Kalos Route 04", + "South Boulevard", + "Kalos Route 05", + "Camphrier Town", + "Kalos Route 06", + "Parfume Palace", + "Kalos Route 07", + "Berry Fields (Kalos)", + "Connecting Cave", + "Kalos Route 08", + "Ambrette Town", + "Kalos Route 09", + "Glittering Cave", + "Cyllage City", + "Kalos Route 10", + "Geosenge Town", + "Kalos Route 11", + "Reflection Cave", + "Shalour City", + "Tower of Mastery", + "Kalos Route 12", + "Azure Bay", + "Coumarine City", + "Kalos Route 13", + "Lumiose City", + "Kalos Route 14", + "Laverre City", + "Kalos Route 15", + "Lost Hotel", + "Kalos Route 16", + "Frost Cavern", + "Kalos Route 17", + "Team Flare Secret HQ", + "Kalos Route 18", + "Terminus Cave", + "Couriway Town", + "Kalos Route 19", + "Kalos Route 20", + "Pokémon Village", + "Snowbelle City", + "Kalos Route 21", + "Victory Road (Kalos)", + # Postgame + "Unknown Dungeon (Kalos)", + "Sea Spirits Den", + "Friend Safari", + ], + + # ======================================================================== + # Gen 7 - Sun/Moon + # ======================================================================== + "sun-moon": [ + "Starter", + "Iki Town", + "Alola Route 1", + "Trainer\u2019s School (Alola)", + "Hau'oli City", + "Alola Route 2", + "Hau'oli Cemetery", + "Verdant Cavern", + "Alola Route 3", + "Melemele Meadow", + "Seaward Cave", + "Kala'e Bay", + "Ten Carat Hill", + "Melemele Sea", + # Akala + "Alola Route 4", + "Paniola Town", + "Paniola Ranch", + "Alola Route 5", + "Brooklet Hill", + "Alola Route 6", + "Alola Route 7", + "Wela Volcano Park", + "Alola Route 8", + "Lush Jungle", + "Diglett's Tunnel", + "Alola Route 9", + "Memorial Hill", + "Akala Outskirts", + "Konikoni City", + "Hano Beach", + "Ruins of Life", + # Ula'ula + "Malie City", + "Malie Garden", + "Alola Route 10", + "Mount Hokulani", + "Alola Route 11", + "Alola Route 12", + "Blush Mountain", + "Alola Route 13", + "Haina Desert", + "Ruins of Abundance", + "Tapu Village", + "Alola Route 14", + "Thrifty Megamart (Abandoned Site)", + "Alola Route 15", + "Aether House", + "Alola Route 16", + "Ula'ula Meadow", + "Alola Route 17", + "Ula'ula Beach", + "Aether Paradise", + # Poni + "Seafolk Village", + "Poni Wilds", + "Ancient Poni Path", + "Poni Breaker Coast", + "Ruins of Hope", + "Exeggutor Island", + "Vast Poni Canyon", + "Altar of the Sunne", + "Altar of the Moone", + "Mount Lanakila", + # Postgame + "Lake of the Sunne", + "Lake of the Moone", + "Poni Grove", + "Poni Plains", + "Poni Meadow", + "Poni Coast", + "Poni Gauntlet", + "Resolution Cave", + "Ruins of Conflict", + ], + + # ======================================================================== + # Gen 7 - Ultra Sun/Ultra Moon + # ======================================================================== + "ultra-sun-ultra-moon": [ + "Starter", + "Alola Route 1", + "Trainer\u2019s School (Alola)", + "Hau'oli City", + "Alola Route 2", + "Hau'oli Cemetery", + "Verdant Cavern", + "Alola Route 3", + "Melemele Meadow", + "Seaward Cave", + "Kala'e Bay", + "Sandy Cave", + "Ten Carat Hill", + "Melemele Sea", + # Akala + "Heahea City", + "Heahea Beach", + "Alola Route 4", + "Pikachu Valley", + "Paniola Town", + "Paniola Ranch", + "Alola Route 5", + "Brooklet Hill", + "Alola Route 6", + "Royal Avenue", + "Alola Route 7", + "Wela Volcano Park", + "Dividing Peak Tunnel", + "Alola Route 8", + "Lush Jungle", + "Diglett's Tunnel", + "Alola Route 9", + "Konikoni City", + "Akala Outskirts", + "Hano Beach", + # Ula'ula + "Malie City (Outer Cape)", + "Malie Garden", + "Alola Route 10", + "Mount Hokulani", + "Alola Route 11", + "Alola Route 12", + "Blush Mountain", + "Alola Route 13", + "Haina Desert", + "Tapu Village", + "Alola Route 14", + "Thrifty Megamart (Abandoned Site)", + "Alola Route 15", + "Aether House", + "Alola Route 16", + "Ula'ula Meadow", + "Alola Route 17", + "Memorial Hill", + "Ula'ula Beach", + "Aether Paradise", + # Poni + "Seafolk Village", + "Poni Wilds", + "Ancient Poni Path", + "Poni Breaker Coast", + "Ruins of Hope", + "Exeggutor Island", + "Vast Poni Canyon", + "Mahalo Trail", + "Ultra Megalopolis", + "Megalo Tower", + "Mount Lanakila", + # Postgame + "Lake of the Sunne", + "Lake of the Moone", + "Poni Grove", + "Poni Plains", + "Poni Meadow", + "Poni Coast", + "Poni Gauntlet", + "Resolution Cave", + "Ultra Space Wilds", + "Ultra Deep-Sea", + "Ultra Plant", + "Ultra Forest", + "Ultra Crater", + "Ultra Ruin", + "Team Rocket\u2019s Castle", + "Ruins of Conflict", + "Ruins of Life", + "Ruins of Abundance", + ], + + # ======================================================================== + # Gen 8 - Sword/Shield + # ======================================================================== + "sword-shield": [ + "Starter", + "Postwick", + "Slumbering Weald", + "Wedgehurst", + "Route 1 - Galar", + "Galar Route 2", + # Wild Area - Southern + "Rolling Fields", + "Dappled Grove", + "Watchtower Ruins", + "East Lake Axewell", + "West Lake Axewell", + "Axew's Eye", + "South Lake Miloch", + "Giant's Seat", + "North Lake Miloch", + # Motostoke to Turffield + "Motostoke", + "Galar Route 3", + "Galar Mine", + "Galar Route 4", + "Turffield", + "Galar Route 5", + "Hulbury", + "Galar Mine No 2", + "Motostoke Outskirts", + # Wild Area - Northern + "Motostoke Riverbank", + "Bridge Field", + "Stony Wilderness", + "Dusty Bowl", + "Giant's Mirror", + "Giant's Cap", + "Hammerlocke Hills", + "Lake of Outrage", + # Hammerlocke onward + "Hammerlocke", + "Route 6 - Galar", + "Stow-on-Side", + "Glimwood Tangle", + "Route 7 - Galar", + "Galar Route 8", + "Circhester", + "Galar Route 9", + "Spikemuth", + "Galar Route 10", + "Wyndon", + "Tower Summit", + "Battle Tower (Galar)", + # Isle of Armor DLC + "Fields of Honor", + "Master Dojo", + "Soothing Wetlands", + "Forest of Focus", + "Challenge Beach", + "Challenge Road", + "Brawler's Cave", + "Courageous Cavern", + "Loop Lagoon", + "Training Lowlands", + "Warm-Up Tunnel", + "Potbottom Desert", + "Workout Sea", + "Stepping Stone Sea", + "Insular Sea", + "Honeycalm Sea", + "Honeycalm Island", + # Crown Tundra DLC + "Slippery Slope", + "Freezington", + "Frostpoint Field", + "Giant's Bed", + "Old Cemetery", + "Snowslide Slope", + "Tunnel to the Top", + "Path to the Peak", + "Crown Shrine", + "Giant's Foot", + "Roaring Sea Caves", + "Frigid Sea", + "Three-Point Pass", + "Ballimere Lake", + "Lakeside Cave", + "Dyna Tree Hill", + "Max Lair", + "Rock Peak Ruins (Galar)", + "Iceberg Ruins (Galar)", + "Iron Ruins (Galar)", + "Split-Decision Ruins", + "Meetup Spot", + ], + + # ======================================================================== + # Gen 8 - Brilliant Diamond/Shining Pearl + # ======================================================================== + "brilliant-diamond-shining-pearl": [ + "Starter", + "Twinleaf Town", + "Lake Verity", + "Route 201 (Sinnoh)", + "Route 202 (Sinnoh)", + "Route 203 (Sinnoh)", + "Oreburgh Gate", + "Oreburgh City", + "Oreburgh Mine", + "Oreburgh Mining Museum", + "Sinnoh Route 204", + "Ravaged Path", + "Floaroma Town", + "Sinnoh Route 205", + "Valley Windworks", + "Eterna Forest", + "Eterna City", + "Eterna Condominiums", + "Old Chateau", + "Route 206 (Sinnoh)", + "Wayward Cave", + "Route 207 (Sinnoh)", + "Mount Coronet", + "Route 208 (Sinnoh)", + "Hearthome City", + "Route 209 (Sinnoh)", + "Lost Tower", + "Solaceon Ruins", + "Sinnoh Route 210", + "Route 215 (Sinnoh)", + "Route 214 (Sinnoh)", + "Valor Lakefront", + "Route 213 (Sinnoh)", + "Pastoria City", + "Great Marsh", + "Sinnoh Route 212", + "Trophy Garden", + "Route 218 (Sinnoh)", + "Canalave City", + "Iron Island", + "Sinnoh Route 211", + "Celestic Town", + "Fuego Ironworks", + "Route 216 (Sinnoh)", + "Route 217 (Sinnoh)", + "Snowpoint City", + "Acuity Lakefront", + "Lake Acuity", + "Lake Valor", + "Spear Pillar", + "Route 222 (Sinnoh)", + "Sunyshore City", + "Route 223 (Sinnoh)", + "Victory Road (Sinnoh)", + "Pokémon League (Sinnoh)", + # Postgame + "Sendoff Spring", + "Turnback Cave", + "Route 224 (Sinnoh)", + "Route 225 (Sinnoh)", + "Route 226 (Sinnoh)", + "Route 227 (Sinnoh)", + "Stark Mountain", + "Route 228 (Sinnoh)", + "Route 229 (Sinnoh)", + "Resort Area", + "Route 230 (Sinnoh)", + "Snowpoint Temple", + "Route 219 (Sinnoh)", + "Route 220 (Sinnoh)", + "Route 221 (Sinnoh)", + "Maniac Tunnel", + "Ramanas Park", + # Grand Underground caves + "Spacious Cave", + "Grassland Cave", + "Fountainspring Cave", + "Rocky Cave", + "Volcanic Cave", + "Sandsear Cave", + "Swampy Cave", + "Dazzling Cave", + "Stargleam Cavern", + "Still-Water Cavern", + "Sunlit Cavern", + "Big Bluff Cavern", + "Bogsunk Cavern", + "Glacial Cavern", + "Icy Cave", + "Riverbank Cave", + "Typhlo Cavern", + "Whiteout Cave", + # Event/special + "Flower Paradise", + "Newmoon Island", + "Hall of Origin", + ], + + # ======================================================================== + # Gen 8 - Legends: Arceus + # ======================================================================== + "legends-arceus": [ + "Starter", + "Jubilife Village", + # Obsidian Fieldlands + "Aspiration Hill", + "Floaro Gardens", + "Horseshoe Plains", + "Deertrack Path", + "Deertrack Heights", + "Windswept Run", + "Nature's Pantry", + "The Heartwood", + "Grueling Grove", + "Worn Bridge", + "Obsidian Falls", + "Sandgem Flats", + "Ramanas Island", + "Lake Verity", + "Oreburrow Tunnel", + "Wayward Wood", + "Grandtree Arena", + # Crimson Mirelands + "Golden Lowlands", + "Gapejaw Bog", + "Droning Meadow", + "Holm of Trials", + "Cloudpool Ridge", + "Scarlet Bog", + "Sludge Mound", + "Cottonsedge Prairie", + "Bolderoll Slope", + "Bolderoll Ravine", + "Diamond Heath", + "Diamond Settlement", + "Pearl Settlement", + "Lonely Spring", + "Shrouded Ruins", + "Solaceon Ruins", + "Ursa's Ring", + "Brava Arena", + "Lake Valor", + # Cobalt Coastlands + "Ginkgo Landing", + "Aipom Hill", + "Bathers\u2019 Lagoon", + "Hideaway Bay", + "Deadwood Haunt", + "Tombolo Walk", + "Windbreak Stand", + "Tidewater Dam", + "Crossing Slope", + "Veilstone Cape", + "Spring Path", + "Castaway Shore", + "Seaside Hollow", + "Sands Reach", + "Lunker's Lair", + "Islespy Shore", + "Firespit Island", + "Tranquility Cove", + "Seagrass Haven", + # Coronet Highlands + "Heavenward Lookout", + "Wayward Cave", + "Ancient Quarry", + "Celestica Trail", + "Celestica Ruins", + "Sacred Plaza", + "Primeval Grotto", + "Clamberclaw Cliffs", + "Fabled Spring", + "Cloudcap Pass", + "Stonetooth Rows", + "Sonorous Path", + "Secret Hollow", + "Moonview Arena", + # Alabaster Icelands + "Snowfall Hot Spring", + "Whiteout Valley", + "Crevasse Passage", + "Avalanche Slopes", + "Arena\u2019s Approach", + "Avalugg\u2019s Legacy", + "Glacier Terrace", + "Heart's Crag", + "Icebound Falls", + "Icepeak Cavern", + "Bonechill Wastes", + "Lake Acuity", + "Snowpoint Temple", + "Ice Column Chamber", + # Endgame + "Temple of Sinnoh", + "Lava Dome Sanctum", + "Hall of Origin", + "Lake Verity #2", + ], + + # ======================================================================== + # Gen 9 - Scarlet/Violet + # ======================================================================== + "scarlet-violet": [ + "Starter", + "Cabo Poco", + "Poco Path", + "Area One (South Province)", + "Naranja Academy", + "Uva Academy", + "Cortondo", + "South Paldean Sea (Ocean)", + "Area Two (South Province)", + "Area Three (South Province)", + "Area Four (South Province)", + "Area Five (South Province)", + "Area One (West Province)", + "Asado Desert", + "West Paldean Sea (Ocean)", + "Cascarrafa", + "Area Two (West Province)", + "Colonnade Hollow", + "Area One (East Province)", + "Levincia", + "East Paldean Sea", + "Area Two (East Province)", + "Tagtree Thicket", + "Area Three (East Province)", + "Area Three (West Province)", + "Fellhorn Gorge", + "Dalizapa Passage", + "Alfornada Cavern", + "Area Six (South Province)", + "Glaseado Mountain", + "Area Three (North Province)", + "North Paldean Sea", + "Area One (North Province)", + "Area Two (North Province)", + "Socarrat Trail", + "Casseroya Lake", + "Pokémon League (Paldea)", + "Great Crater of Paldea", + "Area Zero", + "Zero Lab", + # Postgame shrines + "Grasswither Shrine", + "Groundblight Shrine", + "Firescourge Shrine", + "Icerend Shrine", + # DLC - Teal Mask (Kitakami) + "Mossui Town", + "Kitakami Road", + "Kitakami Wilds", + "Reveler's Road", + "Apple Hills", + "Wistful Fields", + "Oni Mountain", + "Oni's Maw", + "Kitakami Hall", + "Infernal Pass", + "Crystal Pool", + "Mossfell Confluence", + "Inlet Grotto (Cave)", + "Torchlit Labyrinth (Cave)", + "Chilling Waterhead", + "Loyalty Plaza", + "Timeless Woods", + "Paradise Barrens", + # DLC - Indigo Disk (Terrarium) + "Coastal Biome", + "Savanna Biome", + "Canyon Biome", + "Polar Biome", + "Chargestone Cavern", + # DLC - Area Zero Underdepths + "Area Zero Underdepths", + # Random encounters + "Random (Around Paldea)", + "Random (Around Kitakami)", + "Random (Around Terrarium)", + ], + + # ======================================================================== + # Gen 9 - Legends: Z-A + # ======================================================================== + "legends-z-a": [ + "Starter", + "Wild Zone 1", + "Wild Zone 2", + "Wild Zone 3", + "Wild Zone 4", + "Wild Zone 5", + "Wild Zone 6", + "Wild Zone 7", + "Wild Zone 8", + "Wild Zone 9", + "Wild Zone 10", + "Wild Zone 11", + "Wild Zone 12", + "Wild Zone 13", + "Wild Zone 14", + "Wild Zone 15", + "Wild Zone 16", + "Wild Zone 17", + "Wild Zone 18", + "Wild Zone 19", + "Wild Zone 20", + ], +} + +# Aliases: maps version group keys that share the same ordering +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", +} + + +def validate_route_order(vg_key: str, order_list: list[str]) -> list[str]: + """Validate route order against encounter data files. + + Returns list of warning messages. + """ + warnings = [] + + # Load version_groups.json to find which game files to check + vg_path = SEEDS_DIR / "version_groups.json" + with open(vg_path) as f: + version_groups = json.load(f) + + # Find the version group config + vg_config = version_groups.get(vg_key) + if not vg_config: + warnings.append(f" WARNING: Version group '{vg_key}' not found in version_groups.json") + return warnings + + versions = vg_config.get("versions", []) + + for version in versions: + data_file = DATA_DIR / f"{version}.json" + if not data_file.exists(): + warnings.append(f" WARNING: Encounter data file not found: {data_file.name}") + continue + + with open(data_file) as f: + encounter_data = json.load(f) + + encounter_names = set() + for entry in encounter_data: + encounter_names.add(entry["name"]) + + # Check which encounter locations are NOT matched by the route order + unmatched = [] + for name in sorted(encounter_names): + matched = False + for ordered_name in order_list: + if name == ordered_name or name.startswith(ordered_name + " ("): + matched = True + break + if not matched: + unmatched.append(name) + + if unmatched: + warnings.append(f" {version}: {len(unmatched)} unmatched encounter locations:") + for n in unmatched: + warnings.append(f" - {n}") + + return warnings + + +def main(): + output = { + "_comment": "Route progression order by version group. Aliases at the bottom map version groups that share the same ordering.", + "routes": ROUTE_ORDERS, + "aliases": ALIASES, + } + + # Validate + all_warnings = [] + for vg_key, order_list in ROUTE_ORDERS.items(): + warnings = validate_route_order(vg_key, order_list) + if warnings: + all_warnings.append(f"\n{vg_key}:") + all_warnings.extend(warnings) + + if all_warnings: + print("Validation warnings:", file=sys.stderr) + for w in all_warnings: + print(w, file=sys.stderr) + print(file=sys.stderr) + + # Write output + output_path = SEEDS_DIR / "route_order.json" + with open(output_path, "w", encoding="utf-8") as f: + json.dump(output, f, indent=2, ensure_ascii=False) + f.write("\n") + + print(f"Written to {output_path}") + + # Summary + total_routes = sum(len(v) for v in ROUTE_ORDERS.values()) + print(f" {len(ROUTE_ORDERS)} version groups, {total_routes} total route entries, {len(ALIASES)} aliases") + + if all_warnings: + sys.exit(1) + + +if __name__ == "__main__": + main()