diff --git a/.beans/nuzlocke-tracker-cdmx--clean-up-swordshield-encounter-data-wild-pokemon-i.md b/.beans/nuzlocke-tracker-cdmx--clean-up-swordshield-encounter-data-wild-pokemon-i.md index 429a254..b7743a0 100644 --- a/.beans/nuzlocke-tracker-cdmx--clean-up-swordshield-encounter-data-wild-pokemon-i.md +++ b/.beans/nuzlocke-tracker-cdmx--clean-up-swordshield-encounter-data-wild-pokemon-i.md @@ -1,10 +1,11 @@ --- # nuzlocke-tracker-cdmx title: 'Clean up Sword/Shield encounter data: wild Pokemon incorrectly listed as gifts' -status: todo +status: in-progress type: bug +priority: normal created_at: 2026-02-14T19:56:12Z -updated_at: 2026-02-14T19:56:12Z +updated_at: 2026-02-14T21:14:38Z --- ## Problem @@ -15,10 +16,14 @@ In the Sword and Shield seed data, wild Pokemon on almost all encounter location Investigate why the PokeDB export produced duplicate gift entries for wild encounters, then clean up the data so that only genuine gifts are listed as gifts. +## Findings + +The PokeDB export duplicated walk encounters as gift encounters on 6 locations in each game. The affected locations were: Route 1 (Galar), Galar Mine, Motostoke Outskirts, Route 6 (Galar), Glimwood Tangle, and Route 7 (Galar). Route 6 also had legitimate fossil gifts (Arctovish, Arctozolt, Dracovish, Dracozolt) which were preserved. + ## Checklist -- [ ] Investigate the PokeDB export logic to understand why wild Pokemon are being duplicated as gifts -- [ ] Identify which encounters are legitimately gifts vs incorrectly tagged -- [ ] Remove erroneous gift entries from Sword seed data -- [ ] Remove erroneous gift entries from Shield seed data -- [ ] Verify remaining gift encounters are accurate \ No newline at end of file +- [x] Investigate the PokeDB export logic to understand why wild Pokemon are being duplicated as gifts +- [x] Identify which encounters are legitimately gifts vs incorrectly tagged +- [x] Remove erroneous gift entries from Sword seed data (39 removed) +- [x] Remove erroneous gift entries from Shield seed data (40 removed) +- [x] Verify remaining gift encounters are accurate \ No newline at end of file diff --git a/backend/src/app/seeds/data/shield.json b/backend/src/app/seeds/data/shield.json index ae3778d..cda32f2 100644 --- a/backend/src/app/seeds/data/shield.json +++ b/backend/src/app/seeds/data/shield.json @@ -57,38 +57,6 @@ "min_level": 3, "max_level": 6 }, - { - "pokeapi_id": 163, - "pokemon_name": "Hoothoot", - "method": "gift", - "encounter_rate": 28, - "min_level": 2, - "max_level": 5 - }, - { - "pokeapi_id": 736, - "pokemon_name": "Grubbin", - "method": "gift", - "encounter_rate": 25, - "min_level": 2, - "max_level": 5 - }, - { - "pokeapi_id": 10, - "pokemon_name": "Caterpie", - "method": "gift", - "encounter_rate": 22, - "min_level": 2, - "max_level": 5 - }, - { - "pokeapi_id": 824, - "pokemon_name": "Blipbug", - "method": "gift", - "encounter_rate": 15, - "min_level": 2, - "max_level": 5 - }, { "pokeapi_id": 10, "pokemon_name": "Caterpie", @@ -105,14 +73,6 @@ "min_level": 3, "max_level": 6 }, - { - "pokeapi_id": 819, - "pokemon_name": "Skwovet", - "method": "gift", - "encounter_rate": 11, - "min_level": 2, - "max_level": 5 - }, { "pokeapi_id": 736, "pokemon_name": "Grubbin", @@ -5491,54 +5451,6 @@ "min_level": 11, "max_level": 14 }, - { - "pokeapi_id": 532, - "pokemon_name": "Timburr", - "method": "gift", - "encounter_rate": 22, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 529, - "pokemon_name": "Drilbur", - "method": "gift", - "encounter_rate": 19, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 527, - "pokemon_name": "Woobat", - "method": "gift", - "encounter_rate": 19, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 50, - "pokemon_name": "Diglett", - "method": "gift", - "encounter_rate": 17, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 524, - "pokemon_name": "Roggenrola", - "method": "gift", - "encounter_rate": 11, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 837, - "pokemon_name": "Rolycoly", - "method": "gift", - "encounter_rate": 11, - "min_level": 11, - "max_level": 15 - }, { "pokeapi_id": 50, "pokemon_name": "Diglett", @@ -6390,22 +6302,6 @@ "min_level": 22, "max_level": 26 }, - { - "pokeapi_id": 859, - "pokemon_name": "Impidimp", - "method": "gift", - "encounter_rate": 28, - "min_level": 21, - "max_level": 24 - }, - { - "pokeapi_id": 833, - "pokemon_name": "Chewtle", - "method": "gift", - "encounter_rate": 25, - "min_level": 21, - "max_level": 24 - }, { "pokeapi_id": 624, "pokemon_name": "Pawniard", @@ -6414,14 +6310,6 @@ "min_level": 21, "max_level": 24 }, - { - "pokeapi_id": 624, - "pokemon_name": "Pawniard", - "method": "gift", - "encounter_rate": 20, - "min_level": 21, - "max_level": 24 - }, { "pokeapi_id": 109, "pokemon_name": "Koffing", @@ -6430,22 +6318,6 @@ "min_level": 22, "max_level": 26 }, - { - "pokeapi_id": 524, - "pokemon_name": "Roggenrola", - "method": "gift", - "encounter_rate": 15, - "min_level": 21, - "max_level": 24 - }, - { - "pokeapi_id": 453, - "pokemon_name": "Croagunk", - "method": "gift", - "encounter_rate": 13, - "min_level": 21, - "max_level": 24 - }, { "pokeapi_id": 833, "pokemon_name": "Chewtle", @@ -11326,54 +11198,6 @@ "min_level": 28, "max_level": 30 }, - { - "pokeapi_id": 701, - "pokemon_name": "Hawlucha", - "method": "gift", - "encounter_rate": 16, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 632, - "pokemon_name": "Durant", - "method": "gift", - "encounter_rate": 15, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 449, - "pokemon_name": "Hippopotas", - "method": "gift", - "encounter_rate": 15, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 324, - "pokemon_name": "Torkoal", - "method": "gift", - "encounter_rate": 15, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 451, - "pokemon_name": "Skorupi", - "method": "gift", - "encounter_rate": 13, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 355, - "pokemon_name": "Duskull", - "method": "gift", - "encounter_rate": 11, - "min_level": 28, - "max_level": 30 - }, { "pokeapi_id": 118, "pokemon_name": "Goldeen", @@ -11382,14 +11206,6 @@ "min_level": 28, "max_level": 30 }, - { - "pokeapi_id": 631, - "pokemon_name": "Heatmor", - "method": "gift", - "encounter_rate": 10, - "min_level": 28, - "max_level": 30 - }, { "pokeapi_id": 449, "pokemon_name": "Hippopotas", @@ -11414,14 +11230,6 @@ "min_level": 28, "max_level": 30 }, - { - "pokeapi_id": 843, - "pokemon_name": "Silicobra", - "method": "gift", - "encounter_rate": 8, - "min_level": 28, - "max_level": 30 - }, { "pokeapi_id": 632, "pokemon_name": "Durant", @@ -11482,14 +11290,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 854, - "pokemon_name": "Sinistea", - "method": "gift", - "encounter_rate": 22, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 860, "pokemon_name": "Morgrem", @@ -11506,14 +11306,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 10186, - "pokemon_name": "Indeedee (Female)", - "method": "gift", - "encounter_rate": 11, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 857, "pokemon_name": "Hattrem", @@ -11522,22 +11314,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 857, - "pokemon_name": "Hattrem", - "method": "gift", - "encounter_rate": 10, - "min_level": 34, - "max_level": 36 - }, - { - "pokeapi_id": 765, - "pokemon_name": "Oranguru", - "method": "gift", - "encounter_rate": 10, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 708, "pokemon_name": "Phantump", @@ -11546,14 +11322,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 708, - "pokemon_name": "Phantump", - "method": "gift", - "encounter_rate": 10, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 10162, "pokemon_name": "Ponyta (Galar)", @@ -11562,14 +11330,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 10162, - "pokemon_name": "Ponyta (Galar)", - "method": "gift", - "encounter_rate": 10, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 682, "pokemon_name": "Spritzee", @@ -11578,14 +11338,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 682, - "pokemon_name": "Spritzee", - "method": "gift", - "encounter_rate": 10, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 765, "pokemon_name": "Oranguru", @@ -11594,22 +11346,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 756, - "pokemon_name": "Shiinotic", - "method": "gift", - "encounter_rate": 9, - "min_level": 34, - "max_level": 36 - }, - { - "pokeapi_id": 860, - "pokemon_name": "Morgrem", - "method": "gift", - "encounter_rate": 8, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 10186, "pokemon_name": "Indeedee (Female)", @@ -11748,62 +11484,6 @@ "min_level": 37, "max_level": 41 }, - { - "pokeapi_id": 588, - "pokemon_name": "Karrablast", - "method": "gift", - "encounter_rate": 17, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 537, - "pokemon_name": "Seismitoad", - "method": "gift", - "encounter_rate": 17, - "min_level": 28, - "max_level": 40 - }, - { - "pokeapi_id": 510, - "pokemon_name": "Liepard", - "method": "gift", - "encounter_rate": 16, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 10025, - "pokemon_name": "Meowstic (Female)", - "method": "gift", - "encounter_rate": 16, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 823, - "pokemon_name": "Corviknight", - "method": "gift", - "encounter_rate": 12, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 616, - "pokemon_name": "Shelmet", - "method": "gift", - "encounter_rate": 11, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 848, - "pokemon_name": "Toxel", - "method": "gift", - "encounter_rate": 11, - "min_level": 36, - "max_level": 40 - }, { "pokeapi_id": 686, "pokemon_name": "Inkay", diff --git a/backend/src/app/seeds/data/sword.json b/backend/src/app/seeds/data/sword.json index ce1c7a7..cc66a60 100644 --- a/backend/src/app/seeds/data/sword.json +++ b/backend/src/app/seeds/data/sword.json @@ -65,38 +65,6 @@ "min_level": 3, "max_level": 6 }, - { - "pokeapi_id": 163, - "pokemon_name": "Hoothoot", - "method": "gift", - "encounter_rate": 28, - "min_level": 2, - "max_level": 5 - }, - { - "pokeapi_id": 736, - "pokemon_name": "Grubbin", - "method": "gift", - "encounter_rate": 25, - "min_level": 2, - "max_level": 5 - }, - { - "pokeapi_id": 10, - "pokemon_name": "Caterpie", - "method": "gift", - "encounter_rate": 22, - "min_level": 2, - "max_level": 5 - }, - { - "pokeapi_id": 824, - "pokemon_name": "Blipbug", - "method": "gift", - "encounter_rate": 15, - "min_level": 2, - "max_level": 5 - }, { "pokeapi_id": 10, "pokemon_name": "Caterpie", @@ -113,14 +81,6 @@ "min_level": 3, "max_level": 6 }, - { - "pokeapi_id": 819, - "pokemon_name": "Skwovet", - "method": "gift", - "encounter_rate": 11, - "min_level": 2, - "max_level": 5 - }, { "pokeapi_id": 736, "pokemon_name": "Grubbin", @@ -5499,54 +5459,6 @@ "min_level": 11, "max_level": 14 }, - { - "pokeapi_id": 524, - "pokemon_name": "Roggenrola", - "method": "gift", - "encounter_rate": 22, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 529, - "pokemon_name": "Drilbur", - "method": "gift", - "encounter_rate": 19, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 527, - "pokemon_name": "Woobat", - "method": "gift", - "encounter_rate": 19, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 50, - "pokemon_name": "Diglett", - "method": "gift", - "encounter_rate": 17, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 837, - "pokemon_name": "Rolycoly", - "method": "gift", - "encounter_rate": 11, - "min_level": 11, - "max_level": 15 - }, - { - "pokeapi_id": 532, - "pokemon_name": "Timburr", - "method": "gift", - "encounter_rate": 11, - "min_level": 11, - "max_level": 15 - }, { "pokeapi_id": 50, "pokemon_name": "Diglett", @@ -6414,22 +6326,6 @@ "min_level": 22, "max_level": 26 }, - { - "pokeapi_id": 859, - "pokemon_name": "Impidimp", - "method": "gift", - "encounter_rate": 28, - "min_level": 21, - "max_level": 24 - }, - { - "pokeapi_id": 833, - "pokemon_name": "Chewtle", - "method": "gift", - "encounter_rate": 25, - "min_level": 21, - "max_level": 24 - }, { "pokeapi_id": 624, "pokemon_name": "Pawniard", @@ -6438,14 +6334,6 @@ "min_level": 21, "max_level": 24 }, - { - "pokeapi_id": 624, - "pokemon_name": "Pawniard", - "method": "gift", - "encounter_rate": 20, - "min_level": 21, - "max_level": 24 - }, { "pokeapi_id": 109, "pokemon_name": "Koffing", @@ -6454,22 +6342,6 @@ "min_level": 22, "max_level": 26 }, - { - "pokeapi_id": 524, - "pokemon_name": "Roggenrola", - "method": "gift", - "encounter_rate": 15, - "min_level": 21, - "max_level": 24 - }, - { - "pokeapi_id": 559, - "pokemon_name": "Scraggy", - "method": "gift", - "encounter_rate": 13, - "min_level": 21, - "max_level": 24 - }, { "pokeapi_id": 833, "pokemon_name": "Chewtle", @@ -11342,62 +11214,6 @@ "min_level": 28, "max_level": 30 }, - { - "pokeapi_id": 701, - "pokemon_name": "Hawlucha", - "method": "gift", - "encounter_rate": 16, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 631, - "pokemon_name": "Heatmor", - "method": "gift", - "encounter_rate": 15, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 449, - "pokemon_name": "Hippopotas", - "method": "gift", - "encounter_rate": 15, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 324, - "pokemon_name": "Torkoal", - "method": "gift", - "encounter_rate": 15, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 451, - "pokemon_name": "Skorupi", - "method": "gift", - "encounter_rate": 13, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 355, - "pokemon_name": "Duskull", - "method": "gift", - "encounter_rate": 11, - "min_level": 28, - "max_level": 30 - }, - { - "pokeapi_id": 632, - "pokemon_name": "Durant", - "method": "gift", - "encounter_rate": 10, - "min_level": 28, - "max_level": 30 - }, { "pokeapi_id": 118, "pokemon_name": "Goldeen", @@ -11430,14 +11246,6 @@ "min_level": 28, "max_level": 30 }, - { - "pokeapi_id": 843, - "pokemon_name": "Silicobra", - "method": "gift", - "encounter_rate": 8, - "min_level": 28, - "max_level": 30 - }, { "pokeapi_id": 610, "pokemon_name": "Axew", @@ -11498,14 +11306,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 854, - "pokemon_name": "Sinistea", - "method": "gift", - "encounter_rate": 25, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 860, "pokemon_name": "Morgrem", @@ -11530,46 +11330,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 876, - "pokemon_name": "Indeedee Male", - "method": "gift", - "encounter_rate": 13, - "min_level": 34, - "max_level": 36 - }, - { - "pokeapi_id": 766, - "pokemon_name": "Passimian", - "method": "gift", - "encounter_rate": 12, - "min_level": 34, - "max_level": 36 - }, - { - "pokeapi_id": 708, - "pokemon_name": "Phantump", - "method": "gift", - "encounter_rate": 11, - "min_level": 34, - "max_level": 36 - }, - { - "pokeapi_id": 684, - "pokemon_name": "Swirlix", - "method": "gift", - "encounter_rate": 11, - "min_level": 34, - "max_level": 36 - }, - { - "pokeapi_id": 857, - "pokemon_name": "Hattrem", - "method": "gift", - "encounter_rate": 10, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 708, "pokemon_name": "Phantump", @@ -11586,14 +11346,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 860, - "pokemon_name": "Morgrem", - "method": "gift", - "encounter_rate": 9, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 766, "pokemon_name": "Passimian", @@ -11602,14 +11354,6 @@ "min_level": 34, "max_level": 36 }, - { - "pokeapi_id": 756, - "pokemon_name": "Shiinotic", - "method": "gift", - "encounter_rate": 9, - "min_level": 34, - "max_level": 36 - }, { "pokeapi_id": 876, "pokemon_name": "Indeedee Male", @@ -11748,62 +11492,6 @@ "min_level": 37, "max_level": 41 }, - { - "pokeapi_id": 537, - "pokemon_name": "Seismitoad", - "method": "gift", - "encounter_rate": 17, - "min_level": 28, - "max_level": 40 - }, - { - "pokeapi_id": 616, - "pokemon_name": "Shelmet", - "method": "gift", - "encounter_rate": 17, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 510, - "pokemon_name": "Liepard", - "method": "gift", - "encounter_rate": 16, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 678, - "pokemon_name": "Meowstic Male", - "method": "gift", - "encounter_rate": 16, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 823, - "pokemon_name": "Corviknight", - "method": "gift", - "encounter_rate": 12, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 588, - "pokemon_name": "Karrablast", - "method": "gift", - "encounter_rate": 11, - "min_level": 36, - "max_level": 40 - }, - { - "pokeapi_id": 848, - "pokemon_name": "Toxel", - "method": "gift", - "encounter_rate": 11, - "min_level": 36, - "max_level": 40 - }, { "pokeapi_id": 686, "pokemon_name": "Inkay",