UnownHash / Golbat

The Unlicense
36 stars 19 forks source link

Scanning 0P Ditto IV #86

Open Mygod opened 1 year ago

Mygod commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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:

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 commented 1 year ago

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

Mygod commented 1 year ago

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 commented 1 year ago

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