Add a `condition` column to RouteEncounter so encounters can store per-condition rates (time of day, season, weather) instead of flattening to max(). Update the seed loader, API schemas, and frontend to support the new `conditions` dict format in seed JSON. Port the PoC branch's condition-aware EncounterModal UI with filter tabs that let players see encounter rates for specific conditions. Add horde/SOS as distinct encounter methods with their own badges. Update the import tool to extract per-condition rates instead of flattening, and add a merge script (tools/merge-conditions.py) that enriches existing curated seed files with condition data from PokeDB. Seed data updated for 22 games (5,684 encounters): - Gen 2: Gold, Silver, Crystal (morning/day/night) - Gen 4: HG, SS, Diamond, Pearl, Platinum, BD, SP (morning/day/night) - Gen 5: Black, White, Black 2, White 2 (spring/summer/autumn/winter) - Gen 7: Sun, Moon, Ultra Sun, Ultra Moon (day/night) - Gen 8: Sword, Shield (weather) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
45 lines
2.2 KiB
Markdown
45 lines
2.2 KiB
Markdown
---
|
|
# nuzlocke-tracker-4ni4
|
|
title: Fix seed data with encounter conditions
|
|
status: completed
|
|
type: task
|
|
priority: high
|
|
created_at: 2026-02-17T07:37:25Z
|
|
updated_at: 2026-02-17T17:52:29Z
|
|
parent: oqfo
|
|
---
|
|
|
|
## Context
|
|
|
|
Some Pokémon games have different encounter tables depending on time of day, weather, season, or special mechanics (SOS calls in Sun/Moon). A proof-of-concept exists on branch `feature/encounter-conditions` that adds the backend/frontend infrastructure for encounter conditions (a `condition` field on `RouteEncounter`, seed loader support for a `conditions` dict, frontend condition selector and badges). However, the actual seed data has not been updated with real condition data yet.
|
|
|
|
The existing seed data has curated route ordering and normalized route names (from beans r48e, qvww, j28y) that must be preserved — only encounter condition data should be added/changed.
|
|
|
|
## Checklist
|
|
|
|
### Infrastructure (merge from PoC)
|
|
- [x] Merge backend model + migration for `condition` field on `RouteEncounter`
|
|
- [x] Merge seed loader changes to handle `conditions` dict format
|
|
- [x] Merge API/schema changes to expose `condition` field
|
|
- [x] Merge frontend type updates (`RouteEncounter.condition`)
|
|
- [x] Merge frontend UI (condition selector tabs/badges in EncounterModal)
|
|
- [x] Add horde/SOS method badges to EncounterMethodBadge
|
|
- [x] Add condition column to AdminRouteDetail
|
|
|
|
### Import tool updates
|
|
- [x] Update `tools/import-pokedb` to extract per-condition rates instead of flattening to `max()`
|
|
- [x] Fix encounter method mappings (horde, SOS as distinct methods)
|
|
- [x] Write merge script (`tools/merge-conditions.py`)
|
|
|
|
### Seed data updates
|
|
- [x] Gen 2: Gold, Silver, Crystal (morning/day/night)
|
|
- [x] Gen 4: HeartGold, SoulSilver, Diamond, Pearl, Platinum, Brilliant Diamond, Shining Pearl (morning/day/night)
|
|
- [x] Gen 5: Black, White, Black 2, White 2 (spring/summer/autumn/winter)
|
|
- [x] Gen 7: Sun, Moon, Ultra Sun, Ultra Moon (day/night)
|
|
- [x] Gen 8: Sword, Shield (weather conditions)
|
|
- [x] Verify all hooks pass (`prek run --all-files`)
|
|
|
|
## Notes
|
|
- X/Y had no condition data in PokeDB (horde encounters already tracked as separate method)
|
|
- 5,684 encounters updated across 22 games
|