diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 74b9583b07..09ef83a274 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -513,47 +513,50 @@ function calcs.resistances(actor) output["PhysicalResist"] = 0 -- Process Resistance conversion mods - for _, resFrom in ipairs(resistTypeList) do - local maxRes - for _, resTo in ipairs(resistTypeList) do - local conversionRate = modDB:Sum("BASE", nil, resFrom.."MaxResConvertTo"..resTo) / 100 - if conversionRate ~= 0 then - if not maxRes then - maxRes = 0 - for _, mod in ipairs(modDB:Tabulate("BASE", nil, resFrom.."ResistMax")) do - if mod.mod.source ~= "Base" then - maxRes = maxRes + mod.value + if not actor.resistConversionApplied then + actor.resistConversionApplied = true + for _, resFrom in ipairs(resistTypeList) do + local maxRes + for _, resTo in ipairs(resistTypeList) do + local conversionRate = modDB:Sum("BASE", nil, resFrom.."MaxResConvertTo"..resTo) / 100 + if conversionRate ~= 0 then + if not maxRes then + maxRes = 0 + for _, mod in ipairs(modDB:Tabulate("BASE", nil, resFrom.."ResistMax")) do + if mod.mod.source ~= "Base" then + maxRes = maxRes + mod.value + end end end - end - if maxRes ~= 0 then - modDB:NewMod(resTo.."ResistMax", "BASE", maxRes * conversionRate, resFrom.." To "..resTo.." Max Resistance Conversion") + if maxRes ~= 0 then + modDB:NewMod(resTo.."ResistMax", "BASE", maxRes * conversionRate, resFrom.." To "..resTo.." Max Resistance Conversion") + end end end end - end - - for _, resFrom in ipairs(resistTypeList) do - local res - for _, resTo in ipairs(resistTypeList) do - local conversionRate = modDB:Sum("BASE", nil, resFrom.."ResConvertTo"..resTo) / 100 - if conversionRate ~= 0 then - if not res then - res = 0 - for _, mod in ipairs(modDB:Tabulate("BASE", nil, resFrom.."Resist")) do - if mod.mod.source ~= "Base" then - res = res + mod.value + + for _, resFrom in ipairs(resistTypeList) do + local res + for _, resTo in ipairs(resistTypeList) do + local conversionRate = modDB:Sum("BASE", nil, resFrom.."ResConvertTo"..resTo) / 100 + if conversionRate ~= 0 then + if not res then + res = 0 + for _, mod in ipairs(modDB:Tabulate("BASE", nil, resFrom.."Resist")) do + if mod.mod.source ~= "Base" then + res = res + mod.value + end end end - end - if res ~= 0 then - modDB:NewMod(resTo.."Resist", "BASE", res * conversionRate, resFrom.." To "..resTo.." Resistance Conversion") - end - for _, mod in ipairs(modDB:Tabulate("INC", nil, resFrom.."Resist")) do - modDB:NewMod(resTo.."Resist", "INC", mod.value * conversionRate, mod.mod.source) - end - for _, mod in ipairs(modDB:Tabulate("MORE", nil, resFrom.."Resist")) do - modDB:NewMod(resTo.."Resist", "MORE", mod.value * conversionRate, mod.mod.source) + if res ~= 0 then + modDB:NewMod(resTo.."Resist", "BASE", res * conversionRate, resFrom.." To "..resTo.." Resistance Conversion") + end + for _, mod in ipairs(modDB:Tabulate("INC", nil, resFrom.."Resist")) do + modDB:NewMod(resTo.."Resist", "INC", mod.value * conversionRate, mod.mod.source) + end + for _, mod in ipairs(modDB:Tabulate("MORE", nil, resFrom.."Resist")) do + modDB:NewMod(resTo.."Resist", "MORE", mod.value * conversionRate, mod.mod.source) + end end end end