Add per-condition encounter rates to seed data
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>
This commit is contained in:
@@ -13,16 +13,22 @@ class Encounter:
|
||||
encounter_rate: int
|
||||
min_level: int
|
||||
max_level: int
|
||||
conditions: dict[str, int] | None = None
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
return {
|
||||
d: dict = {
|
||||
"pokeapi_id": self.pokeapi_id,
|
||||
"pokemon_name": self.pokemon_name,
|
||||
"method": self.method,
|
||||
"encounter_rate": self.encounter_rate,
|
||||
"min_level": self.min_level,
|
||||
"max_level": self.max_level,
|
||||
}
|
||||
if self.conditions:
|
||||
d["encounter_rate"] = None
|
||||
d["conditions"] = self.conditions
|
||||
else:
|
||||
d["encounter_rate"] = self.encounter_rate
|
||||
return d
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
Reference in New Issue
Block a user