Critical bleed does not take into account stacks
Check version
- [X] I'm running the latest version of Path of Building and I've verified this by checking the changelog
Check for duplicates
- [X] I've checked for duplicate issues by using the search function of the issue tracker
What is the expected behaviour/value?
In the calculation for bleed there is a calculation that averages between the proportion of hits caused by critical damage vs teh proportion caused by non critical damage. Somehow the stack potential value should come into play here, as only the strongest bleed will come into account, so this should not be an average between crit damage and non crit damage, but rather a function of stack potential, Where with a stack potential of 1 you get the current equation, and with a stack potential of infinite you have all the damage from critical hits.
Failing anything else a configuration option to allow all ailments to be calculated for criticals would also be useful.
What is the actual behaviour/value?
Currently there is a flat split of damage between the crit and the non crit values, strongly underestimating bleed damage with high duration/low crit chance
How to reproduce the issue
Selevt puncture as main skill. Spec into somewhat strong critical build and perfect agony With 25% crit, crit multi nodes/perfect agony seem much weaker than expected
Character build code
2.19.2
Screenshots
I think this is just multiplying the current crit rate by stack potential - on these lines of calcoffence.lua : if output.CritBleedDotMulti and (output.CritBleedDotMulti ~= output.BleedDotMulti) then local chanceFromHit = output.BleedChanceOnHit / 100 * (1 - globalOutput.CritChance / 100) local chanceFromCrit = output.BleedChanceOnCrit / 100 * output.CritChance / 100 local totalFromHit = chanceFromHit / (chanceFromHit + chanceFromCrit) local totalFromCrit = chanceFromCrit / (chanceFromHit + chanceFromCrit)
But I am not sure if bleedStackPotential can just be used here/what the scope of it is.
so it would become:
if output.CritBleedDotMulti and (output.CritBleedDotMulti ~= output.BleedDotMulti) then local stackCritChance = min(100, globalOutput.CritChance * bleedStackPotential) local chanceFromHit = output.BleedChanceOnHit / 100 * (1 - stackCritChance / 100) local chanceFromCrit = output.BleedChanceOnCrit / 100 * stackCritChance / 100 local totalFromHit = chanceFromHit / (chanceFromHit + chanceFromCrit) local totalFromCrit = chanceFromCrit / (chanceFromHit + chanceFromCrit)