From b235a3a547e377fa8c69239af652ff30c52117d1 Mon Sep 17 00:00:00 2001 From: Tercio Jose Date: Thu, 18 May 2023 12:01:51 -0300 Subject: [PATCH] Fixed an issue with Min and Max spell values of nested spells --- Definitions.lua | 1 + classes/class_spelltable.lua | 7 +++++++ frames/window_playerbreakdown_spells.lua | 16 +++++++++++++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Definitions.lua b/Definitions.lua index 5ae28689..b4d1f665 100644 --- a/Definitions.lua +++ b/Definitions.lua @@ -140,6 +140,7 @@ ---@field SetPropagateKeyboardInput fun(self: frame, propagate: boolean) ---@field SetPropagateGamepadInput fun(self: frame, propagate: boolean) ---@field StartMoving fun(self: frame) +---@field IsMovable fun(self: frame) : boolean ---@field StartSizing fun(self: frame, point: "top"|"topright"|"right"|"bottomright"|"bottom"|"bottomleft"|"left"|"topleft") ---@field StopMovingOrSizing fun(self: frame) ---@field GetAttribute fun(self: frame, name: string) : any diff --git a/classes/class_spelltable.lua b/classes/class_spelltable.lua index 719f7b07..b44705b5 100644 --- a/classes/class_spelltable.lua +++ b/classes/class_spelltable.lua @@ -105,6 +105,13 @@ Details.SpellTableMixin = { for level, amount in pairs(value) do targetTable[key][level] = (targetTable[key][level] or 0) + amount end + + elseif (key == "c_max" or key == "n_max") then + targetTable[key] = math.max(targetTable[key] or value, value) + + elseif (key == "c_min" or key == "n_min") then + targetTable[key] = math.min(targetTable[key] or value, value) + else targetTable[key] = (targetTable[key] or 0) + value end diff --git a/frames/window_playerbreakdown_spells.lua b/frames/window_playerbreakdown_spells.lua index b80551e5..bd108df2 100644 --- a/frames/window_playerbreakdown_spells.lua +++ b/frames/window_playerbreakdown_spells.lua @@ -2579,11 +2579,21 @@ local refreshSpellsFunc = function(scrollFrame, scrollData, offset, totalLines) if (mainSpellBar) then lineIndex = lineIndex + 1 local bIsMainLine = true + local bIsActorHeader = bkSpellData.bIsActorHeader + local spellTableIndex = 1 + local spellBar = mainSpellBar - if (bkSpellData.bIsActorHeader) then - updateSpellBar(mainSpellBar, index, bkSpellData.actorName, combatObject, scrollFrame, headerTable, bkSpellData, 1, totalValue, topValue, bIsMainLine, keyToSort, spellTablesAmount) + local nameToUse = actorName + if (bIsActorHeader) then + nameToUse = bkSpellData.actorName + end + + ---@debug both calls are equal but the traceback will be different in case of an error + if (bIsActorHeader) then + updateSpellBar(spellBar, index, nameToUse, combatObject, scrollFrame, headerTable, bkSpellData, spellTableIndex, totalValue, topValue, bIsMainLine, keyToSort, spellTablesAmount) else - updateSpellBar(mainSpellBar, index, actorName, combatObject, scrollFrame, headerTable, bkSpellData, 1, totalValue, topValue, bIsMainLine, keyToSort, spellTablesAmount) + --here + updateSpellBar(spellBar, index, nameToUse, combatObject, scrollFrame, headerTable, bkSpellData, spellTableIndex, totalValue, topValue, bIsMainLine, keyToSort, spellTablesAmount) end end end