@@ -513,47 +513,50 @@ function calcs.resistances(actor)
513513 output [" PhysicalResist" ] = 0
514514
515515 -- Process Resistance conversion mods
516- for _ , resFrom in ipairs (resistTypeList ) do
517- local maxRes
518- for _ , resTo in ipairs (resistTypeList ) do
519- local conversionRate = modDB :Sum (" BASE" , nil , resFrom .. " MaxResConvertTo" .. resTo ) / 100
520- if conversionRate ~= 0 then
521- if not maxRes then
522- maxRes = 0
523- for _ , mod in ipairs (modDB :Tabulate (" BASE" , nil , resFrom .. " ResistMax" )) do
524- if mod .mod .source ~= " Base" then
525- maxRes = maxRes + mod .value
516+ if not actor .resistConversionApplied then
517+ actor .resistConversionApplied = true
518+ for _ , resFrom in ipairs (resistTypeList ) do
519+ local maxRes
520+ for _ , resTo in ipairs (resistTypeList ) do
521+ local conversionRate = modDB :Sum (" BASE" , nil , resFrom .. " MaxResConvertTo" .. resTo ) / 100
522+ if conversionRate ~= 0 then
523+ if not maxRes then
524+ maxRes = 0
525+ for _ , mod in ipairs (modDB :Tabulate (" BASE" , nil , resFrom .. " ResistMax" )) do
526+ if mod .mod .source ~= " Base" then
527+ maxRes = maxRes + mod .value
528+ end
526529 end
527530 end
528- end
529- if maxRes ~= 0 then
530- modDB : NewMod ( resTo .. " ResistMax " , " BASE " , maxRes * conversionRate , resFrom .. " To " .. resTo .. " Max Resistance Conversion " )
531+ if maxRes ~= 0 then
532+ modDB : NewMod ( resTo .. " ResistMax " , " BASE " , maxRes * conversionRate , resFrom .. " To " .. resTo .. " Max Resistance Conversion " )
533+ end
531534 end
532535 end
533536 end
534- end
535-
536- for _ , resFrom in ipairs ( resistTypeList ) do
537- local res
538- for _ , resTo in ipairs ( resistTypeList ) do
539- local conversionRate = modDB : Sum ( " BASE " , nil , resFrom .. " ResConvertTo " .. resTo ) / 100
540- if conversionRate ~= 0 then
541- if not res then
542- res = 0
543- for _ , mod in ipairs ( modDB : Tabulate ( " BASE " , nil , resFrom .. " Resist " )) do
544- if mod . mod . source ~= " Base " then
545- res = res + mod . value
537+
538+ for _ , resFrom in ipairs ( resistTypeList ) do
539+ local res
540+ for _ , resTo in ipairs ( resistTypeList ) do
541+ local conversionRate = modDB : Sum ( " BASE " , nil , resFrom .. " ResConvertTo " .. resTo ) / 100
542+ if conversionRate ~= 0 then
543+ if not res then
544+ res = 0
545+ for _ , mod in ipairs ( modDB : Tabulate ( " BASE " , nil , resFrom .. " Resist " )) do
546+ if mod . mod . source ~= " Base " then
547+ res = res + mod . value
548+ end
546549 end
547550 end
548- end
549- if res ~= 0 then
550- modDB : NewMod ( resTo .. " Resist " , " BASE " , res * conversionRate , resFrom .. " To " .. resTo .. " Resistance Conversion " )
551- end
552- for _ , mod in ipairs ( modDB :Tabulate ( " INC" , nil , resFrom .. " Resist " )) do
553- modDB : NewMod ( resTo .. " Resist " , " INC " , mod . value * conversionRate , mod . mod . source )
554- end
555- for _ , mod in ipairs ( modDB :Tabulate ( " MORE" , nil , resFrom .. " Resist " )) do
556- modDB : NewMod ( resTo .. " Resist " , " MORE " , mod . value * conversionRate , mod . mod . source )
551+ if res ~= 0 then
552+ modDB : NewMod ( resTo .. " Resist " , " BASE " , res * conversionRate , resFrom .. " To " .. resTo .. " Resistance Conversion " )
553+ end
554+ for _ , mod in ipairs ( modDB : Tabulate ( " INC " , nil , resFrom .. " Resist " )) do
555+ modDB :NewMod ( resTo .. " Resist " , " INC" , mod . value * conversionRate , mod . mod . source )
556+ end
557+ for _ , mod in ipairs ( modDB : Tabulate ( " MORE " , nil , resFrom .. " Resist " )) do
558+ modDB :NewMod ( resTo .. " Resist " , " MORE" , mod . value * conversionRate , mod . mod . source )
559+ end
557560 end
558561 end
559562 end
0 commit comments