Did some tests on damage reduction today with Helping Hands and a class mod. Found the results surprising.
The class mod has “-18% Damage Reduction”:
This is calculated in the “diminishing returns” way known from BL2: 100% / (100% + 18%) = 100% / 118% = 84.7%. So with this one, you effectively take ~85% damage when hit.
However, the value from Helping Hands is actually “real” damage reduction: when it says “40% damage reduction” at 5/5, you actually take ~60% damage when hit. This is approximate because there’s some formula behind Helping Hands and the value it states is rounded.
Tested this with a grenade that dealt 2168 dmg to my shield:
- If it’s 2168 / 1.18 like in BL2, shield should be reduced by 1837.3.
- If it’s 2168 × 0.82, shield should be reduced by 1777.8.
- Shield was actually reduced by 1838, so the first formula is definitely right.
Now without the class mod but 5/5 (“40%”) in Helping Hands:
- If it’s 2168 / 1.4, shield should be reduced by 1548.6.
- If it’s 2168 × 0.6, shield should be reduced by 1300.8.
- Shield was actually reduced by 1306, strongly indicating the second formula is right (again, do consider the “40%” stated by Helping Hands is rounded).
With both (-18% from the mod and “44%” from 6/5 in Helping Hands), the formula should be this:
- 2168 Ă— 0.56 / 1.18 = 1028.9
- Shield was actually reduced by 1025.
I’m pretty sure this is how it works; it is certain that 40% in Helping Hands does not do that “1 / 1.4” thing because the test results are much lower.
I’ve seen arguments about damage “reduction” vs. “resistance”, but in this case both are called “damage reduction” even though they’re calculated differently. So I don’t think you can make any general assumptions on calculation based on the description’s wording.
edit: by reverse-engineering I think I’ve found the actual formula for Helping Hands: 1 / (100% + 13.2% × rank):
- 1 / (100% + 13.2% Ă— 1) = 88.3%
- 1 / (100% + 13.2% Ă— 2) = 79.1%
- 1 / (100% + 13.2% Ă— 3) = 71.6%
- 1 / (100% + 13.2% Ă— 4) = 65.4%
- 1 / (100% + 13.2% Ă— 5) = 60.2%
- 1 / (100% + 13.2% Ă— 6) = 55.8%
- 1 / (100% + 13.2% Ă— 7) = 52.0%
Which would mean that it actually still works the old way, only that the description states the actual reduction in damage instead (12%, 21%, 28%, 35%, 40%, 44%, 48%) – while the class mod still gives the value that is actually in the formula.
Guess what, remember how I said that the formula resulted in 1300.8 but actual shield reduction was 1306? – 2168 / (100% + 0.132 × 5) = 1306.0.
With 6/5 and the class mod, now it’s 2168 × 1 / (100% + 13.2% × 6) × 1 / (100% + 18%) = 1025.3. Shield was actually reduced by 1025.