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

DPS calculator uses incorrect bolt type #33

Closed oolong-osrs closed 1 year ago

oolong-osrs commented 1 year ago

Related plugin component(s) Deserved Damage

Describe the bug In LMS, crossbow damage is always calculated using diamond bolts (e). An update last year added dragon opal bolts (e), which will always be dropped alongside an Armadyl Crossbow or Zaryte crossbow. This results in consistent underestimates of expected damage whenever someone uses one of these upgraded crossbows.

To reproduce Steps to reproduce the behavior:

  1. Start LMS game.
  2. Obtain Armadyl Crossbow or Zaryte Crossbow and dragon opal bolts.
  3. Bolt someone and observe that the damage calculation is incorrect.

Expected behavior Damage calculation should take the increased range strength of dragon bolts into account. (+122 vs +105 range strength) If a player is using an Armadyl crossbow or Zaryte crossbow, it is safe to assume that they are using dragon bolts.

Handling the opal bolt special attack would be a nice bonus, but it's less important than fixing the bolt strength. If you want to include logic for the bolt spec, it would be straightforward: it's just a 5% chance of dealing floor(10% of your visible range lvl).

Additional context The logic in question is here, hardcoding bolts to diamond (e). https://github.com/Matsyir/pvp-performance-tracker/blob/master/src/main/java/matsyir/pvpperformancetracker/controllers/PvpDamageCalc.java#L359

Matsyir commented 1 year ago

Good catch, this should be simple to fix. I'll get to it next time I update the plugin which I was hoping to do soon for all the new weps (though for those I'll need a beta world)

Even if no beta world I do hope to get around to it relatively soon regardless as it's a quick fix & decently significant/common issue.

The additional damage from spec should also work once I add this; It's already implemented, but currently it would only be applied outside LMS if you have the bolts selected in your config. The bolts' buffs are included in the RangeAmmoData (the weaponAmmo variable you linked to), and applied a bit lower in that same function.

The code context is genuinely much appreciated.