
Originally Posted by
Yaffy
The damage formula at this point has been changed to be simpler (A bit after this thread the damage formula went through many changes over the course of several patches). I haven't checked if it was changed yet again as of this patch but I would assume it hasn't since it's been like this for a while now.
The current basic damage formula (Assuming a monster has no resistances) is:
(Base damage + Flat damage) *Multipliers +(base damage * (base multiplier - 1))
So any sort of non base-multiplier to damage now stacks as a single number. For example, if you have two mods that give +30% damage to a fire skill, and 20% bonus fire damage, then it would all combine into a single 80% boost to damage. This means that damage stacking isn't as prominent now.
Combined with this, another change to the damage formula is that if a mob is weak to a damage type, it's multiplied AFTER normal multipliers, but before base multipliers. So for example, if you did the above on a monster with 50% weakness to fire, then it would boost your damage by 80% and then 50% (Resulting in a 170% boost). However, if the mob is strong against fire then it will be applied at the end of the formula, so if the monster had 50% resistance instead then your damage would be cut in half after all other boosts, or if they have 100% resistance then they would take 0 damage.
With that in mind, a formula that takes into account monster resists would look like this:
((Base damage + Flat damage) *Multipliers *Target's elemental weakness +(base damage * (base multiplier - 1))) * Target's elemental resistance
Or if you want to split the two
For monsters weak to the attack's element:
(Base damage + Flat damage) *Multipliers *Target's elemental weakness +(base damage * (base multiplier - 1))
For monsters strong to the attack's element:
((Base damage + Flat damage) *Multipliers +(base damage * (base multiplier - 1))) * Target's elemental resistance
One major change related to the damage formula is that skills that cause your target to become weaker to a damage type actually affect the target's resistances now. For example, if you have a mob with 100% poison resistance (Aka. Immunity) and you use a skill that lowers their resistance by 15%, then their immunity will become 85% damage resistance so you can now damage the mob. Previously this would just multiply your poison damage against the target by 15% and then the mob's immunity would reduce it to 0 damage. However some skills haven't been updated to work this way yet to my knowledge, for example Calefaction works the old way while Bruising Blow works the new way. I don't think there's any reason for this aside from them not being updated yet and it's not intentional.
DoT damage is fairly straight forward. It only gets affected by flat bonuses (That don't specify direct only) or elemental bonuses. So for example if you have a mod which boosts fire breath damage by 30%, it will ONLY boost the initial damage from fire breath, not the DoT portion. However if you have something that boosts overall fire damage (Ex. +5 Fire damage, +5% fire damage, +5% indirect damage) then that will affect each tick of the dot separately. If the property specifies direct damage, then it will not affect the DoT (As all DoT effects are indirect, not direct), so +5 direct fire damage would not apply to a DoT.
So for example a DoT damage formula would look like this:
(Damage per tick + Flat damage) * Multipliers * Target's elemental weakness * Target's elemental resistance * Number of ticks
So if you had a skill that did 5 poison damage per tick for 6 ticks, with +10 poison damage and a +75% boost to poison damage on a monster 50% weak to poison, then it would look like this:
(5 + 10) *1.75 * 1.5 * 1 * 6 = 236.25 (Yes the game keeps track of the .25)
And finally just as a disclaimer and an apology, this is just my knowledge of how the damage formula was about a patch ago. I haven't done any testing this patch, so I apologize if my information is out of date already (Which is totally possible because the developers are always changing stuff about the game and aren't always transparent about it). If you want to create a build based on the above formula I gave, I would highly suggest that you try to do some testing to confirm if it's still true or not.