@@ -3367,14 +3367,8 @@ function calcs.offence(env, actor, activeSkill)
33673367 end
33683368 end
33693369 local invertChanceEle = m_max (m_min (skillModList :Sum (" CHANCE" , cfg , " HitsInvertEleResChance" ), 1 ), 0 )
3370- if isElemental [damageType ] and invertChanceEle > 0 then
3371- -- resist = (1 - invertChanceEle) * resist + invertChanceEle * (-1 * resist)
3372- resist = resist - 2 * invertChanceEle * resist
3373- end
33743370 local invertChanceChaos = m_max (m_min (skillModList :Sum (" CHANCE" , cfg , " HitsInvertChaosResChance" ), 1 ), 0 )
3375- if damageType == " Chaos" and invertChanceChaos > 0 then
3376- resist = resist - 2 * invertChanceChaos * resist
3377- end
3371+ local invertChance = (isElemental [damageType ] and invertChanceEle ) or (damageType == " Chaos" and invertChanceChaos ) or 0
33783372 sourceRes = env .modDB :Flag (nil , " Enemy" .. sourceRes .. " ResistEqualToYours" ) and " Your " .. sourceRes .. " Resistance" or (env .partyMembers .modDB :Flag (nil , " Enemy" .. sourceRes .. " ResistEqualToYours" ) and " Party Member " .. sourceRes .. " Resistance" or sourceRes )
33793373 if skillFlags .projectile then
33803374 takenInc = takenInc + enemyDB :Sum (" INC" , nil , " ProjectileDamageTaken" )
@@ -3388,24 +3382,30 @@ function calcs.offence(env, actor, activeSkill)
33883382 local effMult = (1 + takenInc / 100 ) * takenMore
33893383 local useResChance = useThisResist (damageType )
33903384 local useRes = useResChance > 0
3385+ local effectiveResist = resist
33913386 if skillModList :Flag (cfg , isElemental [damageType ] and " CannotElePenIgnore" or nil ) then
3392- effMult = effMult * (1 - resist / 100 )
3387+ effectiveResist = invertChance > 0 and (resist - 2 * invertChance * resist ) or resist
3388+ effMult = effMult * (1 - effectiveResist / 100 )
33933389 elseif useRes then
3394- effMult = effMult * (1 - ((resist - pen ) * useResChance ) / 100 )
3390+ if invertChance > 0 then
3391+ effectiveResist = ((resist - pen ) * (1 - invertChance ) + (- resist - pen ) * invertChance ) * useResChance
3392+ else
3393+ effectiveResist = (resist - pen ) * useResChance
3394+ end
3395+ effMult = effMult * (1 - effectiveResist / 100 )
33953396 end
33963397 damageTypeHitMin = damageTypeHitMin * effMult
33973398 damageTypeHitMax = damageTypeHitMax * effMult
33983399 damageTypeHitAvg = damageTypeHitAvg * effMult
33993400 if env .mode == " CALCS" then
34003401 output [damageType .. " EffMult" ] = effMult
34013402 end
3402- local invertChance = (isElemental [damageType ] and invertChanceEle ) or (damageType == " Chaos" and invertChanceChaos ) or 0
3403- if pass == 2 and breakdown and (effMult ~= 1 or sourceRes ~= damageType ) and skillModList :Flag (cfg , isElemental [damageType ] and " CannotElePenIgnore" or nil ) then
3403+ if pass == 2 and breakdown and (effMult ~= 1 or sourceRes ~= damageType or invertChance > 0 ) and skillModList :Flag (cfg , isElemental [damageType ] and " CannotElePenIgnore" or nil ) then
34043404 t_insert (breakdown [damageType ], s_format (" x %.3f ^8(effective DPS modifier)" , effMult ))
3405- breakdown [damageType .. " EffMult" ] = breakdown .effMult (damageType , resist , 0 , takenInc , effMult , takenMore , sourceRes , useRes , invertChance )
3406- elseif pass == 2 and breakdown and (effMult ~= 1 or sourceRes ~= damageType ) then
3405+ breakdown [damageType .. " EffMult" ] = breakdown .effMult (damageType , resist , 0 , takenInc , effMult , takenMore , sourceRes , useRes , invertChance , effectiveResist )
3406+ elseif pass == 2 and breakdown and (effMult ~= 1 or sourceRes ~= damageType or invertChance > 0 ) then
34073407 t_insert (breakdown [damageType ], s_format (" x %.3f ^8(effective DPS modifier)" , effMult ))
3408- breakdown [damageType .. " EffMult" ] = breakdown .effMult (damageType , resist , pen , takenInc , effMult , takenMore , sourceRes , useRes , invertChance )
3408+ breakdown [damageType .. " EffMult" ] = breakdown .effMult (damageType , resist , pen , takenInc , effMult , takenMore , sourceRes , useRes , invertChance , effectiveResist )
34093409 end
34103410 end
34113411 if pass == 2 and breakdown then
0 commit comments