Merge pull request 'Fix route ordering' (#15) from develop into main

Reviewed-on: TheFurya/nuzlocke-tracker#15
This commit was merged in pull request #15.
This commit is contained in:
2026-02-11 15:24:11 +01:00
10 changed files with 2515 additions and 386 deletions

View File

@@ -1,10 +1,11 @@
---
# nuzlocke-tracker-1e9k
title: Populate encounter data for Gen 8+ stub games
status: todo
status: completed
type: task
priority: normal
created_at: 2026-02-10T08:59:02Z
updated_at: 2026-02-10T08:59:02Z
updated_at: 2026-02-11T13:39:09Z
parent: nuzlocke-tracker-rzu4
---

View File

@@ -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
---

View File

@@ -0,0 +1,44 @@
---
# nuzlocke-tracker-4ph2
title: Fix and complete route ordering for all games
status: completed
type: task
priority: normal
created_at: 2026-02-11T13:55:09Z
updated_at: 2026-02-11T14:21:24Z
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

View File

@@ -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
---

View File

@@ -1,33 +1,27 @@
---
# nuzlocke-tracker-7jba
title: Review and complete special encounters for all games
status: todo
status: completed
type: task
priority: normal
created_at: 2026-02-10T08:59:24Z
updated_at: 2026-02-10T08:59:24Z
updated_at: 2026-02-11T13:52:06Z
parent: nuzlocke-tracker-rzu4
---
Audit \`special_encounters.json\` to ensure starters, gifts, fossils, and other non-wild encounters are covered for all games.
Only starters were missing from the encounter data. Gifts, trades, and fossils are already present in the per-game encounter JSON files.
## What counts as special encounters:
- **Starters** — the three (or more) starter Pokémon choices
- **Gift Pokémon** — NPCs that give you Pokémon (e.g. Eevee in Celadon, Lapras in Silph Co.)
- **Fossils** — Pokémon revived from fossils (e.g. Omanyte/Kabuto, Lileep/Anorith)
- **In-game trades** — Pokémon received via NPC trades (if tracked)
- **Static encounters** — Legendaries, Snorlax blocking the road, Sudowoodo, etc.
- **Event-specific** — One-time encounters tied to story events
The `special_encounters.json` file previously contained starters, gifts, and fossils for Gen 1-3 — but only the starters were actually needed (the rest was redundant). Additionally, starters were missing for Gen 4+ games. Yellow and Let's Go were incorrectly aliased to firered-leafgreen (wrong starters).
## Checklist:
- [ ] Audit Gen 1 (Red/Blue/Yellow/FR/LG) special encounters
- [ ] Audit Gen 2 (Gold/Silver/Crystal/HG/SS) special encounters
- [ ] Audit Gen 3 (Ruby/Sapphire/Emerald/ORAS) special encounters
- [ ] Audit Gen 4 (Diamond/Pearl/Platinum/BD/SP) special encounters
- [ ] Audit Gen 5 (Black/White/B2/W2) special encounters
- [ ] Audit Gen 6 (X/Y) special encounters
- [ ] Audit Gen 7 (Sun/Moon/USUM) special encounters
- [ ] Audit Gen 8+ (Sword/Shield/Scarlet/Violet/Legends) special encounters
## Notes:
- Cross-reference with Bulbapedia "Gift Pokémon" and "In-game trade" pages
- The current file appears focused on Gen 1-2 — later gens likely need additions
- [x] Remove non-starter entries from special_encounters.json
- [x] Add Yellow starter (Pikachu) — was incorrectly aliased to firered-leafgreen
- [x] Add Let's Go starters (Pikachu, Eevee) — was incorrectly aliased to firered-leafgreen
- [x] Add Gen 4 starters (Diamond/Pearl/Platinum/BD/SP)
- [x] Add Gen 5 starters (Black/White/B2/W2)
- [x] Add Gen 6 starters (X/Y)
- [x] Add Gen 7 starters (Sun/Moon/USUM)
- [x] Add Gen 8 starters (Sword/Shield)
- [x] Add Gen 9 starters (Scarlet/Violet)
- [x] Add Legends Arceus starters
- [x] Add Legends Z-A starters

View File

@@ -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.

View File

@@ -1,10 +1,11 @@
---
# nuzlocke-tracker-v5zc
title: Complete ORAS and Let's Go encounter data
status: todo
status: completed
type: task
priority: normal
created_at: 2026-02-10T08:59:09Z
updated_at: 2026-02-10T08:59:09Z
updated_at: 2026-02-11T13:39:09Z
parent: nuzlocke-tracker-rzu4
---

File diff suppressed because it is too large Load Diff

View File

@@ -5,25 +5,11 @@
{"pokeapi_id": 1, "pokemon_name": "bulbasaur", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 4, "pokemon_name": "charmander", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 7, "pokemon_name": "squirtle", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Route 4": [
{"pokeapi_id": 129, "pokemon_name": "magikarp", "method": "gift", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Celadon City": [
{"pokeapi_id": 133, "pokemon_name": "eevee", "method": "gift", "encounter_rate": 100, "min_level": 25, "max_level": 25}
],
"Saffron City": [
{"pokeapi_id": 131, "pokemon_name": "lapras", "method": "gift", "encounter_rate": 100, "min_level": 25, "max_level": 25},
{"pokeapi_id": 106, "pokemon_name": "hitmonlee", "method": "gift", "encounter_rate": 100, "min_level": 25, "max_level": 25},
{"pokeapi_id": 107, "pokemon_name": "hitmonchan", "method": "gift", "encounter_rate": 100, "min_level": 25, "max_level": 25}
],
"Cinnabar Island": [
{"pokeapi_id": 138, "pokemon_name": "omanyte", "method": "fossil", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 140, "pokemon_name": "kabuto", "method": "fossil", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 142, "pokemon_name": "aerodactyl", "method": "fossil", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Water Labyrinth": [
{"pokeapi_id": 175, "pokemon_name": "togepi", "method": "gift", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"yellow": {
"Starter": [
{"pokeapi_id": 25, "pokemon_name": "pikachu", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"heartgold-soulsilver": {
@@ -31,30 +17,6 @@
{"pokeapi_id": 152, "pokemon_name": "chikorita", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 155, "pokemon_name": "cyndaquil", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 158, "pokemon_name": "totodile", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Violet City": [
{"pokeapi_id": 175, "pokemon_name": "togepi", "method": "gift", "encounter_rate": 100, "min_level": 1, "max_level": 1}
],
"Goldenrod City": [
{"pokeapi_id": 133, "pokemon_name": "eevee", "method": "gift", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Cianwood City": [
{"pokeapi_id": 213, "pokemon_name": "shuckle", "method": "gift", "encounter_rate": 100, "min_level": 20, "max_level": 20}
],
"Mt Mortar": [
{"pokeapi_id": 236, "pokemon_name": "tyrogue", "method": "gift", "encounter_rate": 100, "min_level": 10, "max_level": 10}
],
"Dragons Den": [
{"pokeapi_id": 147, "pokemon_name": "dratini", "method": "gift", "encounter_rate": 100, "min_level": 15, "max_level": 15}
],
"Pewter City": [
{"pokeapi_id": 138, "pokemon_name": "omanyte", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 140, "pokemon_name": "kabuto", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 142, "pokemon_name": "aerodactyl", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 345, "pokemon_name": "lileep", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 347, "pokemon_name": "anorith", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 408, "pokemon_name": "cranidos", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 410, "pokemon_name": "shieldon", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20}
]
},
"emerald": {
@@ -62,29 +24,80 @@
{"pokeapi_id": 252, "pokemon_name": "treecko", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 255, "pokemon_name": "torchic", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 258, "pokemon_name": "mudkip", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Route 119": [
{"pokeapi_id": 351, "pokemon_name": "castform", "method": "gift", "encounter_rate": 100, "min_level": 25, "max_level": 25}
],
"Lavaridge Town": [
{"pokeapi_id": 360, "pokemon_name": "wynaut", "method": "gift", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Mossdeep City": [
{"pokeapi_id": 374, "pokemon_name": "beldum", "method": "gift", "encounter_rate": 100, "min_level": 5, "max_level": 5}
],
"Rustboro City": [
{"pokeapi_id": 345, "pokemon_name": "lileep", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20},
{"pokeapi_id": 347, "pokemon_name": "anorith", "method": "fossil", "encounter_rate": 100, "min_level": 20, "max_level": 20}
]
},
"diamond-pearl": {
"Starter": [
{"pokeapi_id": 387, "pokemon_name": "turtwig", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 390, "pokemon_name": "chimchar", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 393, "pokemon_name": "piplup", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"black-white": {
"Starter": [
{"pokeapi_id": 495, "pokemon_name": "snivy", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 498, "pokemon_name": "tepig", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 501, "pokemon_name": "oshawott", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"x-y": {
"Starter": [
{"pokeapi_id": 650, "pokemon_name": "chespin", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 653, "pokemon_name": "fennekin", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 656, "pokemon_name": "froakie", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"sun-moon": {
"Starter": [
{"pokeapi_id": 722, "pokemon_name": "rowlet", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 725, "pokemon_name": "litten", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 728, "pokemon_name": "popplio", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"lets-go": {
"Starter": [
{"pokeapi_id": 25, "pokemon_name": "pikachu", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 133, "pokemon_name": "eevee", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"sword-shield": {
"Starter": [
{"pokeapi_id": 810, "pokemon_name": "grookey", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 813, "pokemon_name": "scorbunny", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 816, "pokemon_name": "sobble", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"legends-arceus": {
"Starter": [
{"pokeapi_id": 722, "pokemon_name": "rowlet", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 155, "pokemon_name": "cyndaquil", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 501, "pokemon_name": "oshawott", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"scarlet-violet": {
"Starter": [
{"pokeapi_id": 906, "pokemon_name": "sprigatito", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 909, "pokemon_name": "fuecoco", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 912, "pokemon_name": "quaxly", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
},
"legends-z-a": {
"Starter": [
{"pokeapi_id": 152, "pokemon_name": "chikorita", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 158, "pokemon_name": "totodile", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5},
{"pokeapi_id": 498, "pokemon_name": "tepig", "method": "starter", "encounter_rate": 100, "min_level": 5, "max_level": 5}
]
}
},
"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"
"omega-ruby-alpha-sapphire": "emerald",
"platinum": "diamond-pearl",
"brilliant-diamond-shining-pearl": "diamond-pearl",
"black-2-white-2": "black-white",
"ultra-sun-ultra-moon": "sun-moon"
}
}

File diff suppressed because it is too large Load Diff