A Word on The Division & Coding

Someone on Reddit made an interesting discovery yesterday, regarding a key stat in The Division: Protection from Elites.   The end-game of The Division involves killing lots of Blue (or maybe Purple) and Gold-tier mobs (elites).   There is a stat on high-end gear called “Protection From Elites.”

One would understand that this means damage from Elites would be decreased.

Well, someone dug through the code on Reddit and… Well suffice it to say that it might not be accurate nor working as intended.  The two relevant snippets of code (thanks to u/AlCalzone89 for digging through it) are:

AttributeDefinition DamageTakenModFinal < uid=4F5DDEA25332DB83000007C819D1AE60 >
{
myOriginalFormula “Max(0, (1 – (MIN(0.9, DamageTakenModBonus + FortifyBaseDamageMitigationModBonus – FortifyAggressiveDefenceDamageMitigationReductionModBonus))))”
myBonusType Percentage
}

and

AttributeDefinition DamageTakenFromElitesModFinal < uid=5D31260055E839EA000081F986B31DA5 >

{

myOriginalFormula “Max(0, (1 + DamageTakenFromElitesModBonus))”

myBonusType Percentage

}

Anyone with basic math understanding knows that 1+(some percentage) means that damage will be INCREASED, not DECREASED.  For example, my character has 22% Protection from Elites.  This would probably work out to a 1.22 multiplier.  This means that every 5 shots I take will have the damage of 6 shots, not the intended benefit of every 5 shots taken will have the damage of 4 shots.

u/JaRrYc confirmed this here.  I haven’t tested it independently yet, but the visuals don’t seem to lie.  He attacked one sniper, solo, with a piece of gear that had 11% protection from elites.  He took the same gear, re-rolled it so it did not have the 11% protection.  He took another shot from the same exact sniper and received less damage when it did not have the 11% protection.

In grade school they taught us that just because Word doesn’t say there aren’t spelling errors doesn’t mean that what you wrote is syntactically, grammatically, or factually correct.

Looks like they should cover this lesson in game development classes too.

Just because your code compiles does not mean that your code will perform as expected.

Test, test, test, test and when all is said and done TEST IT AGAIN.

Or have an open beta where we can test it all too.

Oh wait, The Division did have that.  Two of them.

Er.

TEST YOUR CODE.

Have code reviews.

For gods sake people.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.