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>
2.2 KiB
2.2 KiB
title, status, type, priority, created_at, updated_at, parent
| title | status | type | priority | created_at | updated_at | parent |
|---|---|---|---|---|---|---|
| Fix seed data with encounter conditions | completed | task | high | 2026-02-17T07:37:25Z | 2026-02-17T17:52:29Z | 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)
- Merge backend model + migration for
conditionfield onRouteEncounter - Merge seed loader changes to handle
conditionsdict format - Merge API/schema changes to expose
conditionfield - Merge frontend type updates (
RouteEncounter.condition) - Merge frontend UI (condition selector tabs/badges in EncounterModal)
- Add horde/SOS method badges to EncounterMethodBadge
- Add condition column to AdminRouteDetail
Import tool updates
- Update
tools/import-pokedbto extract per-condition rates instead of flattening tomax() - Fix encounter method mappings (horde, SOS as distinct methods)
- Write merge script (
tools/merge-conditions.py)
Seed data updates
- Gen 2: Gold, Silver, Crystal (morning/day/night)
- Gen 4: HeartGold, SoulSilver, Diamond, Pearl, Platinum, Brilliant Diamond, Shining Pearl (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 conditions)
- 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