Hablapatabla / ImplingFinder

BSD 2-Clause "Simplified" License
2 stars 1 forks source link

Mark as caught #5

Open ChipSinespe opened 2 years ago

ChipSinespe commented 2 years ago

As a courteous impling catcher, I would like to be able to tell the extension that I have caught a particular impling so that, when others call for the list, that impling entry doesn't display any more (or maybe it continues to display but it is greyed out/has a note saying "May have been caught already").

Is there a way for you to auto-detect a given listing being caught (e.g., can the extension read the chat log to see the action of catching an impling, and cross-reference that against the world and location to determine which listing has been caught?)—or could it be added as a right-click option within the listings so that we can manually mark them as caught? The manual option has griefing issues which would need to be considered, of course.

Hablapatabla commented 2 years ago

Hey Chip - thanks for raising an issue!

So I had already looked into something like this when initially developing and didn't find any kind of mechanism to uniquely identify a given npc for all players, and especially for a extended period of time. There is a unique index for implings but it is held in the client cache and not reliable.

So option 1, quick-and-easy, I could enable a way to just right-click delete a specific impling from the list (or grey-out, or whatever else) so that you can remove it for your own use. It wouldn't propagate to the global register, so it would only be useful to help keep track of what you've caught already on your side.

Option 2 I could implement a naive guessing algorithm that takes a best guess at what impling you caught. Maybe if it's within a few tiles of the initial sighting, on the same world, it could 'flag' the entry and give some kind of 'this may have been caught already' message. This could introduce griefing, I don't know.

ChipSinespe commented 2 years ago

Hey Habla (Merry Christmas, by the way!),

Thanks for the additional information. The thing I was hoping to solve is "Prevent people travelling across Gielinor to look for an impling that someone else has already found." So, in that sense, Option 1 isn't suitable (But in the absence of anything better, I agree it would be a useful feature).

I hope I'm not misunderstanding any of these sources - so please correct me if I'm wrong - but I think we may not need to guess. This Reddit thread has a map containing some* of the rare spawns—the user describes these as "Dragon/Lucky" spawns but, according to the Wiki, these are actually just rare spawns (Nature and above) with a 10% chance to spawn a Dragon impling on them.

So, for example, if we see a Nature Impling in Kourend Castle on World 302, we know exactly which spawn point that Nature Impling corresponds to. When someone catches an impling in Kourend Castle on World 302, it's almost certainly going to be the Nature Impling spawn that we picked up earlier—at the very least, that's the only rare impling it can be, since one spawn has only one impling in it

This doesn't completely solve the issue because: a) This map is incomplete. I know that I've seen rare implings in Mount Karuulm and the Fremmenik Polar Hunter area, to name but two not represented on this map; b) there are several roaming areas that overlap, so it's not always going to be possible to detect "impling uniqueness" in that way.

If we knew every spawn point, we could have that as a database table and use the impling's "initially found" coordinates to assign it to the corresponding spawn point - the spawn points would determine impling uniqueness. Is there a way to determine every non-puropuro spawn point based on the data you've already acquired through people using the extension? It sounds plausible to me but it's getting into realms of knowledge I've never touched!

PJGJ210 commented 1 year ago

Back on this/bump For rare impling's or specific to crystal etc you could just apply a radius or timer for world. If seen again within 100 tiles don't repopulate 9x. If an imp of type x has been caught then remove.

Could re-ping seen imps on timer (haven't looked into code)

Small enhancement/related " There is a unique index for implings but it is held in the client cache and not reliable." Not sure if the same imps are allowed to be pinged by same player but could use cache ID to prevent that if the case.

Note Not sure how stale this is but might look into a pull if still active or will accept it. Thought testing with front/back end not sure how its written.