Skip to content

Conversation

@DJ-Meyers
Copy link

@DJ-Meyers DJ-Meyers commented Jan 27, 2026

This PR adds encounter data for Pokemon Let's Go Pikachu and Let's Go Eevee (version IDs 31 and 32, version group 19).

AI Assisted Coding Disclosure

I'm working on a personal project with Claude Code that is using the PokéAPI and want location data for newer games. I understand this data is much more complicated, so I wrote up a plan to parse the data and massage it into the existing structures of the PokéAPI codebase.

[HUMAN] Original plan for parsing data with examples
[AI] Design considerations, progress tracking, and contribution guidelines
[AI] Necessary additions/changes to add new gen encounters

Changes

New Encounter Methods (IDs 38-41)

  • overworld (38): Pokemon visible in the overworld on land
  • overworld-water (39): Pokemon visible on water surface
  • overworld-flying (40): Pokemon visible in the sky
  • catch-combo (41): Rare spawn after catch combo
  • disguised-as-pokeball (42): There wasn't really an appropriate "interact" encounter method and there's a distinct method for encountering feebas so it felt reasonable to add for the Electrodes on the ground in LGPE.

New Encounter Slots for LGPE

  • Each of the new encounter methods
  • gift
  • npc-trade

New location_areas where necessary

  • 1200 Pallet Town: for gift Pikachu/Eevee)
  • 1201 Lavender Town: trade for Alolan Diglett
  • 1202 Indigo Plateau: trade for Alolan Exeggutor
  • 1203 Saffron City (base area): trade for Alolan Raichu
    • Note that location_areas for the gym where you're given Hitmonchan/lee and silph co where you're given porygon already existed, but this fits neither of those necessitating an addition

Encounter Data

Open Questions

  • There is no encounter method for fossil revival. This means there is no encounter for omanyte, kabutops, or aerodactyl. Is that intended? How do you feel about adding that method?
  • The catch-combo flying encounters (Charizard, Dragonite, and the legendary birds) are repeated on almost every route. Is there a better way to represent this within the confines of the database schema? Note that they are not included in the flying special spawns on Routes 5 and 20.

Caveats

  • Serebii and Bulbapedia disagree on whether the catch-combo flying encounters appear on Route 20, but agree that they don't occur on Route 5 [S][B].
  • Serebii and Bulbapedia disagree on whether psyduck can be found on route 5
  • I am human and may have missed something in my manual verification

38,overworld,38
39,overworld-water,39
40,overworld-flying,40
41,rare-spawn,41 No newline at end of file
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In your plan I see there are many more new encounter methods. Did you add only the first 4 so to make the PR easier to read/review?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are the only 4 new methods in LGPE. overworld will be reused in every new game except BDSP if I recall correctly. I'm trying to keep this PR limited to LGPE to limit risk and also make it easier to review.

@Naramsim
Copy link
Member

Since this PR is AI generated I'd like it to be reviewed thoroughly, thus I'd like to ask for the review of @jemarq04 and @WyattC16, if they have some time.

@jemarq04
Copy link
Contributor

Since this PR is AI generated I'd like it to be reviewed thoroughly, thus I'd like to ask for the review of @jemarq04 and @WyattC16, if they have some time.

I've done a quick look, and things look a bit fishy (like ~15 duplicates of a location area with the vague name lgpe-area and others with simply 1f or b1f), but I want to see if the encounter data is otherwise reasonable. I'll respond with a more detailed response soon

@jemarq04
Copy link
Contributor

Looking at this further, I realize now that the location area entries are appended to the location name, so there is no ambiguity in the duplicate lgpe-area names. Howver, the 1f and 2f names are duplicates of previous location areas and are confusing/unclear (e.g. this adds a second mt-moon-2f location area). Additionally, LGPE is a Kanto remake and would likely need minimal (if any at all) additional location areas, as all of them would be present from RBY, GSC, FRLG, or HGSS. Only encounter data would need to be added. For example, the kanto-route-2-southern-section location area refers to Kanto Route 2 before Viridian Forest, but this is already covered by kanto-route-2-south-towards-viridian-city.

For the Route 1 location area, things seem fine initially but Pidgey is listed as a rare spawn alongside Charizard, Dragonite, and the legendary birds. This happens again in the next three location area's encounters (up to Route 3), so this mistake (and others) may have been present throughout the AI generated CSV.

I can write a script and do a more thorough check side-by-side with Serebii, but this would take me some time. Plus, I would rather do this thorough check after the location areas have been corrected, as I don't want to do the check twice.

Copy link
Contributor

@jemarq04 jemarq04 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added a few comments in the code regarding my comment on the PR itself.

(First time using this review feature on GitHub, so I hope it didn't spam with comments/notifications!)

@DJ-Meyers
Copy link
Author

Thanks for the feedback I'll take a look today :) I wasn't sure how to handle the replicated locations but I probably could've used FRLG as a template.

@DJ-Meyers
Copy link
Author

I'm going to manually verify encounters grouped by area today or tomorrow and then push the changes. I'll link my verification documentation when I do

@DJ-Meyers DJ-Meyers force-pushed the feature/lgpe-encounter-data branch from e030a02 to 81c5a6a Compare January 29, 2026 04:47
Add encounter data for Pokemon Let's Go Pikachu and Let's Go Eevee
(version IDs 31 and 32, version group 19).

## New Encounter Methods (IDs 38-41)
- overworld (38): Pokemon visible in the overworld on land
- overworld-water (39): Pokemon visible on water surface
- overworld-flying (40): Pokemon visible in the sky
- special-spawn (41): Special spawn after catch combo

## Encounter Data
- 1,306 new encounter records covering all Kanto locations
- Static encounters (Mewtwo, legendary birds, Snorlax)
- Gift Pokemon (starters, Magikarp, Aerodactyl, etc.)
- Overworld encounters for all routes and dungeons

## Data Sources
- Bulbapedia encounter tables for Let's Go Pikachu/Eevee
- Cross-referenced with Serebii for validation

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@DJ-Meyers DJ-Meyers force-pushed the feature/lgpe-encounter-data branch from 81c5a6a to b67a296 Compare January 29, 2026 04:50
DJ-Meyers and others added 2 commits January 28, 2026 23:47
- Add Psyduck to Route 5 overworld encounters
- Add flying encounters (Charizard, Articuno, Zapdos, Moltres, Dragonite) to Route 5
- Add encounter conditions for flying Pokemon
- Verify proper sorting by location_area > encounter_slot

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Remove Route 5 Psyduck and flying encounters (Charizard, Articuno, Zapdos, Moltres, Dragonite)
- Remove Route 5 flying encounter conditions
- Remove Aerodactyl gift from Pallet Town (fossil revival, not gift)
- Add Voltorb disguised-as-pokeball at Power Plant (Lv.40)
- Fix Electrode level to Lv.43 at Power Plant
- Rename special-spawn method to catch-combo

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@DJ-Meyers DJ-Meyers requested a review from jemarq04 January 29, 2026 06:59
@DJ-Meyers
Copy link
Author

DJ-Meyers commented Jan 29, 2026

Summary of changes since you've reviewed

  • Consolidated locations/areas to re-use existing kanto ids
  • Removed some scripts and extraneous stuff to keep this PR light
  • updated names for new encounter_methods
  • Cleaned up encounters considerably and manually verified them all (I learned a lot from this PR that I've documented for future work)

I also left some open questions that I'd love your input on.

I intend to tackle encounter data for BDSP, SwSh, PLA, SV, and PLZA so please let me know if there's something I can do in the future to make my contributions easier to review. If you want to do something with version tagging with this data to avoid breaking existing api usage I'm open to that!

@Naramsim @jemarq04

Copy link
Contributor

@jemarq04 jemarq04 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've made a few comments again on the PR, though I'd like to voice a concern on the manual check over all of the encounters. After checking Route 1 I immediately found a mistake that was introduced after the previous review (special encounters moved to flying spawns). It looks like your manual check simply used the AI to generate a checklist that you went through, but the checklist from the AI was inaccurate.. I would recommend sources PokeAPI consider reputable like Serebii and Bulbapedia. They are listed there and you can check over your encounters manually that way.

@jemarq04
Copy link
Contributor

Ah, I just saw you edited your initial PR description. As far as your open questions go, the fossil revivals are considered gift encounters (see https://pokeapi.co/api/v2/pokemon/140/encounters). And repeated entries is perfectly fine to list them in each relevant location area.

@DJ-Meyers
Copy link
Author

I've made a few comments again on the PR, though I'd like to voice a concern on the manual check over all of the encounters. After checking Route 1 I immediately found a mistake that was introduced after the previous review (special encounters moved to flying spawns). It looks like your manual check simply used the AI to generate a checklist that you went through, but the checklist from the AI was inaccurate.. I would recommend sources PokeAPI consider reputable like Serebii and Bulbapedia. They are listed there and you can check over your encounters manually that way.

To be clear I did manually verify each spawn against serebii (cross referenced bulbapedia if the data didn't match) made updates, then built the script to verify one more time against bulbapedia in the verification doc I linked. The discrepancies you've pointed out are design decisions (e.g., flying spawn vs special spawn) rather than data inaccuracies.

DJ-Meyers and others added 2 commits January 29, 2026 10:39
- Rename catch-combo to overworld-special (method 41)
- Add overworld-flying-special (method 42) for rare flying spawns
- Add overworld-water-special (method 43) for rare water spawns
- Remove disguised-as-pokeball method; use only-one for Voltorb/Electrode
- Update flying Dragonite/Charizard/Articuno/Zapdos/Moltres to overworld-flying-special
- Update Lapras on Routes 19/20 to overworld-water-special
- Add fossil revival gifts at Cinnabar Lab: Omanyte, Kabuto, Aerodactyl (Lv.44)
- Update encounter method prose descriptions

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add overworld-flying-special encounters for Route 20 (Charizard,
Articuno, Zapdos, Moltres, Dragonite) to match Route 19.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@DJ-Meyers
Copy link
Author

DJ-Meyers commented Jan 29, 2026

encounter_methods.csv

  • Renamed: catch-combo (41) → overworld-special (41)
  • Removed: disguised-as-pokeball (42)
  • Added: overworld-flying-special (42), overworld-water-special (43)

encounter_slots.csv

  • Modified: Slot 1178 now maps to method 42 (overworld-flying-special) instead of disguised-as-pokeball
  • Added: Slot 1180 for method 43 (overworld-water-special)

encounter_method_prose.csv

  • Updated: Method 41 prose → “Rare spawn in grass with lure or catch combo”
  • Added: Method 42 prose → “Rare spawn in the sky with lure or catch combo”
  • Added: Method 43 prose → “Rare spawn in water with lure or catch combo”

encounters.csv (250+ encounter changes)

  • Updated: Flying Dragonite, Charizard, Articuno, Zapdos, Moltres changed from slot 1175 (overworld-flying) → 1178 (overworld-flying-special)
  • Updated 4 encounters: Lapras on Routes 19/20 changed from slot 1176 (overworld-special) → 1180 (overworld-water-special)
  • Updated 4 encounters: Voltorb/Electrode at Power Plant changed from slot 1178 → 577 (only-one)
  • Added 6 encounters: Omanyte, Kabuto, Aerodactyl gifts at Cinnabar Lab (Lv.44)230 encounters: Flying Dragonite, Charizard, Articuno, Zapdos, Moltres changed from slot 1175 (overworld-flying) → 1178 (overworld-flying-special)
  • Updated 4 encounters: Lapras on Routes 19/20 changed from slot 1176 (overworld-special) → 1180 (overworld-water-special)
  • Updated 4 encounters: Voltorb/Electrode at Power Plant changed from slot 1178 → 577 (only-one)
  • Added 6 encounters: Omanyte, Kabuto, Aerodactyl gifts at Cinnabar Lab (Lv.44)

Copy link
Contributor

@jemarq04 jemarq04 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks to be fine from my standpoint. Apart from repeating the check of data, things look to be consistent with the API and accurate to LGPE. @Naramsim

@DJ-Meyers
Copy link
Author

Thanks for your thorough review! I have a much better idea of the db schema and how to add encounters now. Expect another PR with BDSP data soon. I think this api is awesome and I want to help get encounters data up to date!

@DJ-Meyers DJ-Meyers requested a review from Naramsim January 29, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants