-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
feat: Add new model and data for Encounter Pokemon Details #1621
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
f0cf373
a17927d
7ccf092
5c5e741
79b3652
77123e0
d85d7a9
8ca5f97
5282259
cb96266
d1fef30
5fb0290
7147403
a40de50
e50810a
6323fdf
d5dcb58
86b90a5
9c4d256
68e4f18
be0e273
cda74c5
fd8b51c
425590b
8846d2e
9893985
3d1832f
6d29c9d
dde9244
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,146 @@ | ||
| encounter_id,min_perfect_ivs,always_shiny,never_shiny,is_alpha | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's the first time we explicity add IVs in our API. I heard about them but not sure how they are calculated, I think there's a difficult formula. questions, can these IVs be calculated with our API? Second, how did you calculate the values you added in the CSV?
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. IVs aren't calculated, they're used in a calculation for a Pokemon's current stats. Each IV can be 0-31 (with "perfect" being 31). At some point, certain encounters (mostly legendaries) started having guaranteed perfect IVs. I don't know exactly which ones do or how many, but I figured this would be the location to add them. All I did was go through https://www.serebii.net/games/shiny.shtml to see what Pokemon were guaranteed to be shiny and which were shiny-locked, and then checked each location area in the API to see if we had it already. If we did, I added the enconuter ID and marked it as either always or never shiny. |
||
| 62288,,1,0,0 | ||
| 62289,,1,0,0 | ||
| 62290,,1,0,0 | ||
| 62291,,1,0,0 | ||
| 62292,,1,0,0 | ||
| 63735,,0,1,0 | ||
| 63736,,0,1,0 | ||
| 64082,,0,1,0 | ||
| 64086,,0,1,0 | ||
| 64462,,0,1,0 | ||
| 64463,,0,1,0 | ||
| 64464,,0,1,0 | ||
| 64465,,0,1,0 | ||
| 64466,,0,1,0 | ||
| 64467,,0,1,0 | ||
| 64706,,0,1,0 | ||
| 64707,,0,1,0 | ||
| 64746,,0,1,0 | ||
| 64763,,0,1,0 | ||
| 64832,,0,1,0 | ||
| 64944,,0,1,0 | ||
| 64948,,0,1,0 | ||
| 65073,,0,1,0 | ||
| 65081,,0,1,0 | ||
| 65960,,0,1,0 | ||
| 65964,,0,1,0 | ||
| 65979,,0,1,0 | ||
| 65980,,0,1,0 | ||
| 65981,,0,1,0 | ||
| 65982,,0,1,0 | ||
| 65983,,0,1,0 | ||
| 65984,,0,1,0 | ||
| 65985,,0,1,0 | ||
| 65986,,0,1,0 | ||
| 65987,,0,1,0 | ||
| 65988,,0,1,0 | ||
| 65989,,0,1,0 | ||
| 65990,,0,1,0 | ||
| 65991,,0,1,0 | ||
| 65992,,0,1,0 | ||
| 65993,,0,1,0 | ||
| 65994,,0,1,0 | ||
| 66210,,0,1,0 | ||
| 66216,,0,1,0 | ||
| 66558,,0,1,0 | ||
| 66577,,0,1,0 | ||
| 66585,,0,1,0 | ||
| 66627,,0,1,0 | ||
| 66628,,0,1,0 | ||
| 66655,,0,1,0 | ||
| 66656,,0,1,0 | ||
| 66657,,0,1,0 | ||
| 66658,,0,1,0 | ||
| 66731,,0,1,0 | ||
| 66732,,0,1,0 | ||
| 66739,,0,1,0 | ||
| 66742,,0,1,0 | ||
| 66767,,0,1,0 | ||
| 66768,,0,1,0 | ||
| 66769,,0,1,0 | ||
| 66770,,0,1,0 | ||
| 66852,,0,1,0 | ||
| 66853,,0,1,0 | ||
| 66854,,0,1,0 | ||
| 66855,,0,1,0 | ||
| 66856,,0,1,0 | ||
| 66857,,0,1,0 | ||
| 66858,,0,1,0 | ||
| 66859,,0,1,0 | ||
| 66860,,0,1,0 | ||
| 66861,,0,1,0 | ||
| 66994,,0,1,0 | ||
| 66995,,0,1,0 | ||
| 70090,,0,1,0 | ||
| 70091,,0,1,0 | ||
| 75309,,0,1,0 | ||
| 75310,,0,1,0 | ||
| 75886,,0,1,0 | ||
| 75887,,0,1,0 | ||
| 75888,,0,1,0 | ||
| 75889,,0,1,0 | ||
| 75890,,0,1,0 | ||
| 75891,,0,1,0 | ||
| 75892,,0,1,0 | ||
| 75893,,0,1,0 | ||
| 75894,,0,1,0 | ||
| 75895,,0,1,0 | ||
| 75912,,0,1,0 | ||
| 75913,,0,1,0 | ||
| 75914,,0,1,0 | ||
| 75915,,0,1,0 | ||
| 75916,,0,1,0 | ||
| 75917,,0,1,0 | ||
| 75918,,0,1,0 | ||
| 75919,,0,1,0 | ||
| 75920,,0,1,0 | ||
| 75921,,0,1,0 | ||
| 75922,,0,1,0 | ||
| 75923,,0,1,0 | ||
| 75924,,0,1,0 | ||
| 75925,,0,1,0 | ||
| 75926,,0,1,0 | ||
| 75927,,0,1,0 | ||
| 75928,,0,1,0 | ||
| 75929,,0,1,0 | ||
| 75930,,0,1,0 | ||
| 75931,,0,1,0 | ||
| 75932,,0,1,0 | ||
| 75933,,0,1,0 | ||
| 75934,,0,1,0 | ||
| 75935,,0,1,0 | ||
| 75936,,0,1,0 | ||
| 75937,,0,1,0 | ||
| 75938,,0,1,0 | ||
| 75939,,0,1,0 | ||
| 75940,,0,1,0 | ||
| 75941,,0,1,0 | ||
| 75942,,0,1,0 | ||
| 75943,,0,1,0 | ||
| 75896,,0,1,0 | ||
| 75897,,0,1,0 | ||
| 75898,,0,1,0 | ||
| 75899,,0,1,0 | ||
| 75900,,0,1,0 | ||
| 75901,,0,1,0 | ||
| 75910,,0,1,0 | ||
| 75911,,0,1,0 | ||
| 75944,,0,1,0 | ||
| 75945,,0,1,0 | ||
| 75946,,0,1,0 | ||
| 75947,,0,1,0 | ||
| 97808,,0,1,0 | ||
| 97809,,0,1,0 | ||
| 97810,,0,1,0 | ||
| 97811,,0,1,0 | ||
| 97812,,0,1,0 | ||
| 97813,,0,1,0 | ||
| 99316,,0,1,0 | ||
| 99317,,0,1,0 | ||
| 99348,,0,1,0 | ||
| 99349,,0,1,0 | ||
| 99350,,0,1,0 | ||
| 99351,,0,1,0 | ||
| 99352,,0,1,0 | ||
| 99353,,0,1,0 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| # Generated by Django 5.2.10 on 2026-07-24 16:35 | ||
|
|
||
| import django.db.models.deletion | ||
| from django.db import migrations, models | ||
|
|
||
|
|
||
| class Migration(migrations.Migration): | ||
| dependencies = [ | ||
| ("pokemon_v2", "0030_alter_berry_growth_time_alter_berry_max_harvest_and_more"), | ||
| ] | ||
|
|
||
| operations = [ | ||
| migrations.CreateModel( | ||
| name="EncounterPokemonDetail", | ||
| fields=[ | ||
| ( | ||
| "id", | ||
| models.AutoField( | ||
| auto_created=True, | ||
| primary_key=True, | ||
| serialize=False, | ||
| verbose_name="ID", | ||
| ), | ||
| ), | ||
| ("min_perfect_ivs", models.IntegerField(blank=True, null=True)), | ||
| ("always_shiny", models.BooleanField(default=False)), | ||
| ("never_shiny", models.BooleanField(default=False)), | ||
| ("is_alpha", models.BooleanField(default=False)), | ||
| ( | ||
| "encounter", | ||
| models.ForeignKey( | ||
| blank=True, | ||
| null=True, | ||
| on_delete=django.db.models.deletion.CASCADE, | ||
| to="pokemon_v2.encounter", | ||
| ), | ||
| ), | ||
| ], | ||
| ), | ||
| ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of always shiny/never shiny we could use a percentage number? like
shinyand then a value ranging from 0 to 100 or from 0 to 1?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that may be confusing, since this field would need to convey three things: (1) it is always shiny, (2) it's never shiny, or (3) it has the default shiny odds based on the generation/shiny charm/shiny powers and so on. I worry that having something like
shinyorshiny_ratecould be confusing if it wasNone,0, or1. That's why I figured two boolean fields would make it clearer - if both are false, then it's just the usual shiny calculation.What do you think?