From 0ed1dd8bb482bf776867e34c9d0de6f8e404780c Mon Sep 17 00:00:00 2001 From: Wires77 Date: Mon, 21 Jul 2025 11:38:32 -0500 Subject: [PATCH] Fix rounding of scaled mods being incorrect in some cases (#8862) * Fixes #8860: Rounding of scaled mods was incorrect in some cases * Don't include boolean or table mods --- src/Classes/ModList.lua | 2 +- src/Modules/CalcSetup.lua | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Classes/ModList.lua b/src/Classes/ModList.lua index 957c84b0..92851c18 100644 --- a/src/Classes/ModList.lua +++ b/src/Classes/ModList.lua @@ -46,7 +46,7 @@ function ModListClass:ReplaceModInternal(mod) end function ModListClass:MergeMod(mod) - if mod.type == "BASE" or mod.type == "INC" then + if mod.type == "BASE" or mod.type == "INC" or mod.type == "MORE" then for i = 1, #self do if modLib.compareModParams(self[i], mod) then self[i] = copyTable(self[i], true) diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 2307390e..c07cde41 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -1051,19 +1051,29 @@ function calcs.initEnv(build, mode, override, specEnv) end env.itemModDB:ScaleAddList(combinedList, scale) elseif item.type == "Gloves" and calcLib.mod(env.initialNodeModDB, nil, "EffectOfBonusesFromGloves") ~=1 then - scale = calcLib.mod(env.initialNodeModDB, nil, "EffectOfBonusesFromGloves") + scale = calcLib.mod(env.initialNodeModDB, nil, "EffectOfBonusesFromGloves") - 1 local combinedList = new("ModList") for _, mod in ipairs(srcList) do combinedList:MergeMod(mod) end - env.itemModDB:ScaleAddList(combinedList, scale) + local scaledList = new("ModList") + scaledList:ScaleAddList(combinedList, scale) + for _, mod in ipairs(scaledList) do + combinedList:MergeMod(mod) + end + env.itemModDB:AddList(combinedList) elseif item.type == "Boots" and calcLib.mod(env.initialNodeModDB, nil, "EffectOfBonusesFromBoots") ~= 1 then - scale = calcLib.mod(env.initialNodeModDB, nil, "EffectOfBonusesFromBoots") + scale = calcLib.mod(env.initialNodeModDB, nil, "EffectOfBonusesFromBoots") - 1 local combinedList = new("ModList") for _, mod in ipairs(srcList) do combinedList:MergeMod(mod) end - env.itemModDB:ScaleAddList(combinedList, scale) + local scaledList = new("ModList") + scaledList:ScaleAddList(combinedList, scale) + for _, mod in ipairs(scaledList) do + combinedList:MergeMod(mod) + end + env.itemModDB:AddList(combinedList) else env.itemModDB:ScaleAddList(srcList, scale) end