Api: Some Weapons reporting incorrect rpm in manifest

Created on 1 Nov 2019  路  9Comments  路  Source: Bungie-net/api

Wavesplitter is reporting rpm as 100, it should be 1000.
Divinity is reporting rpm as 100, it should be 1000.
Eriana's Vow is reporting 0, and should be 90.
Whisper of the Worm is reporting 0, and should be 72.
One Thousand Voices is reporting 0 charge time, which should be 1000

bug bug filed ready for release

Most helpful comment

Story time, this one is a doozy.

In Destiny 1, we had a feature called "The Armory." This was a Bungie.net website feature that showed you the various levels at which an item could spawn, and some source data. The maintenance was extremely manual and error prone, and we "threw it out" in Destiny 2. Sources were still being computed under the surface, mostly because no one ever bothered to pull that code out.

However, source calculation was doing more than is immediately apparent when looking at it from the outside, and this created a bug in some item definitions that I didn't notice until I investigated this Go Figure definition.

The original intent of the stats property was to be the "display stats", which meant they had undergone certain transformations such as Stat Group interpolation and adding stats from mandatory Talent Nodes (or in D2's case, Plugs guaranteed to be inserted, like intrinsics)

Unfortunately, all of that interpolation and guaranteed plug logic was in the Armory import code, and never performed on the data if it doesn't have a valid source. Turns out that code's still running, but getting more inaccurate over time - we never took the time to refactor that code such that source data wasn't computed anymore, and as long as we could see the item being spawned from any of our "known sources" we'd get the right number. But some items, like the ones above, appear to be spawning in ways that the old D1 Armory source doesn't know about: and a such, the interpolation logic never runs, and the display stats don't end up with good values! None of this affects runtime stats, but does affect the definitions we return.

To quote Jimi Hendrix, castles made of sand slip into the sea eventually. I'm going to pull out this dead Armory code and make it consistently deliver the base stats with stat group interpolation precomputed.

Yuck! Thanks for filing this bug, I'd have probably never noticed that it was still set up this way if not for your bug report.

All 9 comments

Thanks for the info! I'll file a bug.

TFS 846774

Go Figure is reporting 0, and should be 450.

Out of curiosity - are these showing up correct at runtime for instances that you possess, but wrong in the definitions?

Correct.

EDIT: If cannot fix, that is fine I will just have to maintain a manual listing for generating correct comparisons between weapons of the same archetype.
https://github.com/DestinyItemManager/d2-additional-info/blob/master/generate-intrinsic-perk-compat-table.js

Hmm, bah yeah that sucks. I wonder... this definitely gives me a good lead, thanks!

Ah, that's hella sneaky. Usually the interpolation happening due to stat group increases as the value increases. The curve for Go Figure is very odd though. Starts at 450 for 0 investment stat, and then goes down before coming back up. I'm betting either my interpolation algorithm is throwing up on that, or I'm seeing the 0 value in the investment stat and just assuming that it means the stat value itself is 0.

My bet is on the latter. I'll go take a peek.

Story time, this one is a doozy.

In Destiny 1, we had a feature called "The Armory." This was a Bungie.net website feature that showed you the various levels at which an item could spawn, and some source data. The maintenance was extremely manual and error prone, and we "threw it out" in Destiny 2. Sources were still being computed under the surface, mostly because no one ever bothered to pull that code out.

However, source calculation was doing more than is immediately apparent when looking at it from the outside, and this created a bug in some item definitions that I didn't notice until I investigated this Go Figure definition.

The original intent of the stats property was to be the "display stats", which meant they had undergone certain transformations such as Stat Group interpolation and adding stats from mandatory Talent Nodes (or in D2's case, Plugs guaranteed to be inserted, like intrinsics)

Unfortunately, all of that interpolation and guaranteed plug logic was in the Armory import code, and never performed on the data if it doesn't have a valid source. Turns out that code's still running, but getting more inaccurate over time - we never took the time to refactor that code such that source data wasn't computed anymore, and as long as we could see the item being spawned from any of our "known sources" we'd get the right number. But some items, like the ones above, appear to be spawning in ways that the old D1 Armory source doesn't know about: and a such, the interpolation logic never runs, and the display stats don't end up with good values! None of this affects runtime stats, but does affect the definitions we return.

To quote Jimi Hendrix, castles made of sand slip into the sea eventually. I'm going to pull out this dead Armory code and make it consistently deliver the base stats with stat group interpolation precomputed.

Yuck! Thanks for filing this bug, I'd have probably never noticed that it was still set up this way if not for your bug report.

This will be fixed in the next full deployment (i.e. not in tomorrow's content-only deployment, but next week's full bungie.net deployment). Weapons that you see with incorrect rounds per minute in the definitions likely have other stats that are similarly incorrect currently, and this will fix those as well. But do be aware that we don't and won't attempt to calculate based off of potential sockets and plugs on the item, so instances' stats will almost certainly differ from the data in the definition!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lax20attack picture lax20attack  路  4Comments

Bizow picture Bizow  路  4Comments

michabbb picture michabbb  路  3Comments

ChaseMalik picture ChaseMalik  路  4Comments

queuebit picture queuebit  路  3Comments