Skip to content
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

Scanning 0P Ditto IV #86

Open
Mygod opened this issue Mar 29, 2023 · 5 comments
Open

Scanning 0P Ditto IV #86

Mygod opened this issue Mar 29, 2023 · 5 comments

Comments

@Mygod
Copy link
Contributor

Mygod commented Mar 29, 2023

I call a Ditto 0P if it is in partly cloudy weather whose disguise is unboosted. In this state, the seen IV is boosted but the caught IV is unboosted. Currently, the only way to know the unboosted IV is if we have encountered the same spawn before in a different state (having different PokemonDisplay and/or under different weather).

Another way to scan IV is to actually catch the Pokemon. Two things could happen:

  1. Pokemon was caught. In that case, we would be able to read out its IV from CatchPokemonOutProto.
  2. Since the bcr of Ditto is pretty low (20%), it is likely that we will not be able to catch it. However, even in this case, it appears that we can still get some information. In particular, CatchPokemonLogEntry.CombatPoints will have the correct CP set.

For example, we have a 0P Ditto disguised as Snubbull as below, encountered as Lv32 and CP 1050.

image

Catching the Pokemon will give a Ditto at Lv27 14/4/13. However, on a different account where this spawn fled, we can see that the CP in the log was set to an anomalous 889, which is the CP of Snubbull at Lv27 14/4/13.

Screenshot_20230329-172121

Using this correct CP + level, we can in principle reverse engineer the IV. While this in principle will not tell you a unique set of IVs, when both the level and the IV are high, it is in principle possible to identify the unique correct IV.

@Mygod
Copy link
Contributor Author

Mygod commented Mar 29, 2023

Well, in this case even an unsuccessful catch would tell you if it's a Ditto or not for sure; but I agree that this is Farfetch'd (at least for now).

@ccev
Copy link
Collaborator

ccev commented Mar 29, 2023

sorry, I've deleted my previous comment as i was misunderstanding the point here.

Catching Pokemon as ditto detection is a cool concept. If we catch it successfully, we know everything. But i don't think it makes sense reverse engineering IVs based on the flee entry, for the following reasons:

  • Since you only know the CP, there's a lot of situations where Dittos with different IV and level combinations can have the same CP
  • The mitm would have to make extra calls to fetch journal history

Both points may not be deal breakers on their own, but i feel like it's just so much complexity for this very specific use case.

@jfberry
Copy link
Collaborator

jfberry commented Mar 29, 2023

And I would say if catch detection was your model and it fleed you would just try again with a different worker

@Mygod
Copy link
Contributor Author

Mygod commented Mar 29, 2023

Right. Anyway since the Ditto event is ending, no rush to think about it now. Just think of this issue as me jotting down an observation about the Ditto mechanics that could potentially be used in the future. (I want to keep a record of it somewhere so that in the future I could find it.)

@Mygod
Copy link
Contributor Author

Mygod commented Mar 30, 2023

Another way of detecting Ditto is to catch it using the PGP and (if it flees) look at seen counter. https://www.reddit.com/r/TheSilphRoad/comments/5eg2dc/if_ditto_flees_it_doesnt_show_up_in_journal_but

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

No branches or pull requests

3 participants