Matsyir / pvp-performance-tracker

External plugin for RuneLite: Tracks PvP performance by keeping track of various stats during combat
BSD 2-Clause "Simplified" License
4 stars 15 forks source link

Record the actual damage hitsplat in the fight log #22

Open irationsal opened 3 years ago

irationsal commented 3 years ago

As a user, I would like to see the actual damage I hit during the fight log and have that data stored.

Matsyir commented 3 years ago

Unfortunately this is not possible to do accurately because of how some hitsplats are more delayed than others. For example, imagine when you do a perfect barrage -> AGS spec stack, let's say you hit 24 with the barrage and 28 with the AGS, and both hits are appearing on the same tick. Programmatically, there is no way to tell which hitsplat came from the AGS, and which came from the barrage. Even with this issue aside, it would be quite difficult to implement due to how hitsplats come after the actual attack where damage/accuracy is calculated; all calculations would have to be delayed so that every attack could be linked up with a hitsplat. That might not sound too complex in theory, but with how the plugin currently works it would take a lot of changes to make it work that way.

pratik-p commented 3 months ago

@Matsyir could you not do this by reading the exp drop data instead?

Matsyir commented 3 months ago

@Matsyir could you not do this by reading the exp drop data instead?

I guess it'd be possible for only the local/client player, the above comment was mostly aimed at tracking both players in the fight.

But even doing it that way comes with its own trickery. Exp drops aren't entirely consistent between weapons or combat styles (the first example that comes to mind is trident; though that isn't PvP), so there's a ton of exception cases & new math to manage if we do it that way. Another part of it that's tricky is, you can pile on multiple hitsplats from multiple attacks simultaneously. Imagine you do a claw->gmaul 1 tick. Now there's 1 big melee XP drop with 5 hits - which hit comes from what? You might be able to deduce which hit was the gmaul based on how claw specs are calculated but like... that's a whole process, and that's just 1 claw-gmaul example. What if it was DDS-gmaul 1-tick? Literally no way to know which was which, unless your gmaul was a higher hit than DDS' max hit. Even if we ignore gmaul I'm sure there's a few tricky edge cases like this involved.

But yeah, ignoring 1-tick-gmauls, once setup properly it should be relatively reliable to do this using exp drops (for the local client player only), but there is a lot of setup involved to do it properly.