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
This commit is contained in:
Wires77
2025-07-21 11:38:32 -05:00
committed by GitHub
parent bf3de469ac
commit 0ed1dd8bb4
2 changed files with 15 additions and 5 deletions

View File

@@ -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)

View File

@@ -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