PokeAPI / PokeAPI/pokeapi

Modeling Events, Event Exclusive Attacks, and Event Items

Open
#1,419 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
5.4k
Forks
1.2k
Avg merge
2d 5h
Merged PRs (30d)
21

Description

As suggested by @Naramsim here, and now that the API is being set up to include one time events, I wanted to do some thinking on how event exclusive moves are included.

We'll use the Pokecenter New York Wish Eggs as an example, as they are very well documented.

These pokemon have both:

  • A unique method of obtaining them (event)
  • Unique moves that can only be obtained from said event.

The way I've modeled events in #1417 is that each event has a unique encounter method.

I am of the opinion that it's the right idea to also give each event an identically titled move method identifier, to show what moves the Pokémon comes with from the event

So in this case, any of the wish eggs would have the encounter_method AND pokemon_move_method as:

  • new-york-pokecenter-wish-eggs

There is a world where there's a generic identifier called "event", but I think that's less ideal or else "special" moves can all get lumped together in a way where no one could tell where they came from.

I would also be a proponent of documenting a Pokemons entire moveset on event receipt this way, even if they have no moves unique to said event. Sometimes Pokemon can come with egg moves or TMs that would make them slightly easier to train/plan teams for. In addition to that, it makes for a more complete documentation of what the event was, and what a player gets when they receive that Pokemon.

As an example, Chansey would look like this:

  • 113,3,273,12,0,, - Wish, move method 12 would be new-york-pokecenter-wish-eggs.
  • 113,3,230,12,0,, - Sweet scent

The last thing to discuss is items, and it's here that I am unsure. Chansey does not have an item, it comes as an egg. So let's look at Jirachi from the us colosseum bonus disc.

It has a 50% chance to hold a ganlon berry or a salac berry. However, internally in gen 3, if you find a wild jirachi (which is impossible without glitches or hacks), it will hold a star piece. In practice, this information is useless since it won't happen in regular gameplay.

However, it's factually true. You can use glitches to get any Pokemon to spawn, and Jirachi will have this item. Right now pokemon_items is set up like this:

pokemon_id,version_id,item_id,rarity.

I do see some Pokemon have duplicate items here, like Bibarel has a 50% chance for an Oran Berry and a 5% chance for a Sitrus. But for an event case, we would want a specific encounter location or encounter method that's shown to show a different item than usual. I think this would require more than just new rows right? The API would need a new event item column or something.

Thoughts?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named. First clarify the event move and item data model and the API behavior, then identify the existing event and Pokémon item models; done means the project has an agreed representation for event-exclusive moves, complete event movesets, and event-specific items.

Written by the indexing model from the issue text.

Assessment

Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.