PathOfBuildingCommunity / PathOfBuilding

Offline build planner for Path of Exile.
https://pathofbuilding.community
Other
3.96k stars 2.07k forks source link

Not showing Full Dps in item and skill comparison . #8245

Open ParanoiaIsGreat opened 3 weeks ago

ParanoiaIsGreat commented 3 weeks ago

Check version

Check for duplicates

What platform are you running Path of Building on?

Windows

How is Path of Building expected to behave?

When check "include in Full Dps" box, it should be showing full dps changes during item and skill comparison

How does Path of Building behave?

When check "include in Full Dps" box, it not showing full dps changes during item and skill comparison

How to reproduce the issue

Import this: https://pobb.in/JYyFVa5G6zmA

Character build code

https://pobb.in/JYyFVa5G6zmA

Screenshots

![Uploading image.png…]() ![Uploading image.png…]()

ParanoiaIsGreat commented 3 weeks ago

Screenshots: https://imgur.com/a/Jt2qR7l

Paliak commented 3 weeks ago
diff --git a/src/Classes/ItemDBControl.lua b/src/Classes/ItemDBControl.lua
index e0a4a3528..4425b81df 100644
--- a/src/Classes/ItemDBControl.lua
+++ b/src/Classes/ItemDBControl.lua
@@ -226,7 +226,6 @@ function ItemDBClass:ListBuilder()
        if self.sortDetail and self.sortDetail.stat then -- stat-based
                local start = GetTime()
                local calcFunc, calcBase = self.itemsTab.build.calcsTab:GetMiscCalculator(self.build)
-               local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                for itemIndex, item in ipairs(list) do
                        item.measuredPower = 0
@@ -247,7 +246,6 @@ function ItemDBClass:ListBuilder()
                                start = now
                        end
                end
-               GlobalCache.useFullDPS = storedGlobalCacheDPSView
        end

        table.sort(list, function(a, b)
diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua
index fdc24f540..bd42710c7 100644
--- a/src/Classes/ItemsTab.lua
+++ b/src/Classes/ItemsTab.lua
@@ -1852,11 +1852,9 @@ function ItemsTabClass:AddModComparisonTooltip(tooltip, mod)
        newItem:BuildAndParseRaw()

        local calcFunc = self.build.calcsTab:GetMiscCalculator()
-       local storedGlobalCacheDPSView = GlobalCache.useFullDPS
        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
        local outputBase = calcFunc({ repSlotName = slotName, repItem = self.displayItem }, {})
        local outputNew = calcFunc({ repSlotName = slotName, repItem = newItem }, {})
-       GlobalCache.useFullDPS = storedGlobalCacheDPSView
        self.build:AddStatComparesToTooltip(tooltip, outputBase, outputNew, "\nAdding this mod will give: ")
 end

@@ -2281,11 +2279,9 @@ function ItemsTabClass:AppendAnointTooltip(tooltip, node, actionText)
                header = "^7"..actionText.." nothing will give you: "
        end
        local calcFunc = self.build.calcsTab:GetMiscCalculator()
-       local storedGlobalCacheDPSView = GlobalCache.useFullDPS
        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
        local outputBase = calcFunc({ repSlotName = "Amulet", repItem = self.displayItem }, {})
        local outputNew = calcFunc({ repSlotName = "Amulet", repItem = self:anointItem(node) }, {})
-       GlobalCache.useFullDPS = storedGlobalCacheDPSView
        local numChanges = self.build:AddStatComparesToTooltip(tooltip, outputBase, outputNew, header)
        if node and numChanges == 0 then
                tooltip:AddLine(14, "^7"..actionText.." "..node.dn.." changes nothing.")
@@ -2296,11 +2292,9 @@ end
 ---@param tooltip table @The tooltip to append into
 ---@param node table @The passive tree node that will be added
 function ItemsTabClass:AppendAddedNotableTooltip(tooltip, node)
-       local storedGlobalCacheDPSView = GlobalCache.useFullDPS
        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
        local calcFunc, calcBase = self.build.calcsTab:GetMiscCalculator()
        local outputNew = calcFunc({ addNodes = { [node] = true } }, { requirementsItems = true, requirementsGems = true, skills = true })
-       GlobalCache.useFullDPS = storedGlobalCacheDPSView
        local numChanges = self.build:AddStatComparesToTooltip(tooltip, calcBase, outputNew, "^7Allocating "..node.dn.." will give you: ")
        if numChanges == 0 then
                tooltip:AddLine(14, "^7Allocating "..node.dn.." changes nothing.")
@@ -3627,10 +3621,8 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode)
                                tooltip:AddLine(14, stat)
                        end
                end
-               local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                local output = calcFunc({ toggleFlask = item }, {})
-               GlobalCache.useFullDPS = storedGlobalCacheDPSView
                local header
                if self.build.calcsTab.mainEnv.flasks[item] then
                        header = "^7Deactivating this flask will give you:"
@@ -3666,10 +3658,8 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode)
                                tooltip:AddLine(14, stat)
                        end
                end
-               local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                local output = calcFunc({ toggleTincture = item }, {})
-               GlobalCache.useFullDPS = storedGlobalCacheDPSView
                local header
                if self.build.calcsTab.mainEnv.tinctures[item] then
                        header = "^7Deactivating this tincture will give you:"
@@ -3716,10 +3706,8 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode)
                for _, compareSlot in pairs(compareSlots) do
                        if not main.slotOnlyTooltips or (slot and (slot.nodeId == compareSlot.nodeId or slot.slotName == compareSlot.slotName)) or not slot or slot == compareSlot then
                                local selItem = self.items[compareSlot.selItemId]
-                               local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                                GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                                local output = calcFunc({ repSlotName = compareSlot.slotName, repItem = item ~= selItem and item or nil}, {})
-                               GlobalCache.useFullDPS = storedGlobalCacheDPSView
                                local header
                                if item == selItem then
                                        header = "^7Removing this item from "..compareSlot.label.." will give you:"
diff --git a/src/Classes/NotableDBControl.lua b/src/Classes/NotableDBControl.lua
index 62253adff..074ebcef8 100644
--- a/src/Classes/NotableDBControl.lua
+++ b/src/Classes/NotableDBControl.lua
@@ -138,7 +138,6 @@ function NotableDBClass:ListBuilder()
                local start = GetTime()
                local calcFunc = self.itemsTab.build.calcsTab:GetMiscCalculator()
                local itemType = self.itemsTab.displayItem.base.type
-               local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                local calcBase = calcFunc({ repSlotName = itemType, repItem = self.itemsTab:anointItem(nil) }, {})
                self.sortMaxPower = 0
@@ -160,7 +159,6 @@ function NotableDBClass:ListBuilder()
                                start = now
                        end
                end
-               GlobalCache.useFullDPS = storedGlobalCacheDPSView

                if #infinites > 0 then
                        self.sortMaxPower = self.sortMaxPower * 2
diff --git a/src/Classes/SkillsTab.lua b/src/Classes/SkillsTab.lua
index 62909a4e3..d36273e92 100644
--- a/src/Classes/SkillsTab.lua
+++ b/src/Classes/SkillsTab.lua
@@ -792,10 +792,8 @@ function SkillsTabClass:CreateGemSlot(index)
                                local tempQual = self.displayGroup.gemList[index].qualityId
                                self.displayGroup.gemList[index].qualityId = hoveredQuality.type
                                self:ProcessSocketGroup(self.displayGroup)
-                               local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                                GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                                local output = calcFunc({}, {})
-                               GlobalCache.useFullDPS = storedGlobalCacheDPSView
                                self.displayGroup.gemList[index].qualityId = tempQual
                                tooltip:AddSeparator(10)
                                self.build:AddStatComparesToTooltip(tooltip, calcBase, output, "^7Switching to this quality variant will give you:")
@@ -827,10 +825,8 @@ function SkillsTabClass:CreateGemSlot(index)
                                if calcFunc then
                                        local storedQuality = self.displayGroup.gemList[index].quality
                                        self.displayGroup.gemList[index].quality = 20
-                                       local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                                        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                                        local output = calcFunc({}, {})
-                                       GlobalCache.useFullDPS = storedGlobalCacheDPSView
                                        self.displayGroup.gemList[index].quality = storedQuality
                                        self.build:AddStatComparesToTooltip(tooltip, calcBase, output, "^7Setting to 20 quality will give you:")
                                end
@@ -872,10 +868,8 @@ function SkillsTabClass:CreateGemSlot(index)
                                local calcFunc, calcBase = self.build.calcsTab:GetMiscCalculator(self.build)
                                if calcFunc then
                                        self.displayGroup.gemList[index].enabled = not self.displayGroup.gemList[index].enabled
-                                       local storedGlobalCacheDPSView = GlobalCache.useFullDPS
                                        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
                                        local output = calcFunc({}, {})
-                                       GlobalCache.useFullDPS = storedGlobalCacheDPSView
                                        self.displayGroup.gemList[index].enabled = not self.displayGroup.gemList[index].enabled
                                        self.build:AddStatComparesToTooltip(tooltip, calcBase, output, self.displayGroup.gemList[index].enabled and "^7Disabling this gem will give you:" or "^7Enabling this gem will give you:")
                                end
diff --git a/src/Classes/TradeQuery.lua b/src/Classes/TradeQuery.lua
index e76d1fdd1..8ba521518 100644
--- a/src/Classes/TradeQuery.lua
+++ b/src/Classes/TradeQuery.lua
@@ -53,7 +53,6 @@ local TradeQueryClass = newClass("TradeQuery", function(self, itemsTab)
        end

        -- set
-       self.storedGlobalCacheDPSView = GlobalCache.useFullDPS
        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
        self.hostName = "https://www.pathofexile.com/"
 end)
@@ -505,7 +504,6 @@ Highest Weight - Displays the order retrieved from trade]]
        self.controls.fullPrice = new("LabelControl", {"BOTTOM", nil, "BOTTOM"}, 0, -row_height - pane_margins_vertical - row_vertical_padding, pane_width - 2 * pane_margins_horizontal, row_height, "")
        GlobalCache.useFullDPS = GlobalCache.numActiveSkillInFullDPS > 0
        self.controls.close = new("ButtonControl", {"BOTTOM", nil, "BOTTOM"}, 0, -pane_margins_vertical, 90, row_height, "Done", function()
-               GlobalCache.useFullDPS = self.storedGlobalCacheDPSView
                main:ClosePopup()
                -- there's a case where if you have a socket(s) allocated, open TradeQuery, close it, dealloc, then open TradeQuery again
                -- the deallocated socket controls were still showing, so this will remove all dynamically created controls from items

Most likely caused by these lines. It seems those were added in an attempt to fix what https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8087 has fixed. Will need to test all the cases work correctly though.

Paliak commented 3 weeks ago

Likely related: https://github.com/PathOfBuildingCommunity/PathOfBuilding/issues/8163

nofate121 commented 3 weeks ago

Not sure if related, but i am having a similar issues.

https://pobb.in/8eINEmkZKPwM

tested on dev

  1. Combined DPS not shown on Gems

Using Sort gems by Full DPS seems to be working fine though, except then it only shows full dps but not hit dps anymore (i think it did at some point, not sure).

  1. Full DPS not shown on items on fresh import
  1. Combined DPS not shown on Items
Paliak commented 3 weeks ago

@nofate121 Came up with this https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8247 if you'd like to help test.

ParanoiaIsGreat commented 2 weeks ago

@Paliak Hi, excuse me, i don't konw how this works, but how long i can expect this to be fixed?

Paliak commented 2 weeks ago

@ParanoiaIsGreat First the solution i proposed needs to be tested some more (You can help by downloading my branch). Then the pr has to reviewed and merged by a maintainer. After that it will probably be first available on the beta branch as that is automatically created from dev branch. Releases are manually created by maintainers at their discretion.

nbrugger-tgm commented 20 hours ago

I have the same (or related) issue: https://pobb.in/u/NitonFx/xtG3yNBm-18D

When annointing my amulet the sort by full dps works and seems accurate but when hovering over the annoint in the list it tells me "This annoint changes nothing". When the item is annointed it tells me that saving it (replacing the unnamointed ammulet) wont change anything but as soon as i save/replace it the DPS jumps up. You can try it by removing the annoint

Paliak commented 16 hours ago

@nbrugger-tgm Thanks for providing another test case!

Seems to work correctly when using https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8247

obraz

obraz

obraz

The sorting seems slightly faster too.