A Note on Calculation Order

If you've tried manually calculating item stats before, you might have noticed you start having issues if you try include other bonuses. In fact, you'll probably have noticed only item/weapon parts seem to work as stated. Why is this? Because the game actually changes the base value of these stats inbetween applying the bonuses.
At the start of item/weapon initalization, each attribute will have a certain base value, which you'll find listed in all the part guides. The game applies all bonuses from the parts, finding the value that displays on the item card. It then sets the base value to this calculated value, and removes all the part bonuses so they don't apply twice. Any bonus applied after item initalization will work off of this new base value instead.
Note that this does not affect all attributes, testing shows that it's only those stored on the weapon/item. Unfortuantly the functions controlling this do not decompile, so this can't be 100% confirmed.


The Fibber is a great example of how this works. The barrel gives many large bonuses, which are incorporated into the new base value that is shown on the card. A BPD then enables extra bonuses after item initalization to give it it's actual stats.
To make things easy in this example, we'll look at the mag size on a Maliwan grip Crit Fibber, with no accessory. In game this gives 1970 mag size on the card, but 15 in reality.

The relevant numbers here are:
15 Base Mag Size on Hyperion Pistols
Mag Size Grades on Hyperion Pistols have 0 base and +0.07.
Blue Hyperion Body gives +5.
The Crit Fibber's Barrel gives +130.
The Crit Fibber's BPD gives -128, which is applied after initalization.

Using these numbers we can calculate both values we observed earlier as follows:
FINAL = (15 + [0]) × (1 + [130 + (0 + 0.07 × [5])]) ÷ (1 - [0]) + [0]
NEW_BASE = FINAL = 1970.25 = 1970
NEW_FINAL = (1970 + [0]) × (1 + [0]) ÷ (1 - [-128]) + [0]
NEW_FINAL = 15.271... = 15