PathOfBuilding icon indicating copy to clipboard operation
PathOfBuilding copied to clipboard

Critical bleed does not take into account stacks

Open oljomo opened this issue 3 years ago • 1 comments

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

bleedcalc )

oljomo avatar Aug 09 '22 13:08 oljomo

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)

oljomo avatar Aug 09 '22 16:08 oljomo