Skip to content

Commit 9a1a870

Browse files
committed
Fix: Valako, Storm's Embrace and Tasalio, Cleansing Water Ascendancy nodes applying effects twice due to Foulborn Choir of the Storm
1 parent 2ea45ef commit 9a1a870

1 file changed

Lines changed: 37 additions & 34 deletions

File tree

src/Modules/CalcDefence.lua

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)