@@ -117,6 +117,21 @@ local function buildGemFilterList(skillsTab)
117117 return list
118118end
119119
120+ -- Resolve a reportRow's targetImbuedSupport (stored as a grantedEffectId) into the pair
121+ -- { name, grantedEffect } that the upstream imbued API expects.
122+ local function resolveImbuedSupportInfo (dataGems , grantedEffectId )
123+ if not grantedEffectId then
124+ return nil
125+ end
126+ local grantedEffect = data .skills [grantedEffectId ]
127+ local gemId = grantedEffect and data .gemForSkill [grantedEffect ]
128+ local gemData = gemId and dataGems [gemId ]
129+ if not (gemData and gemData .grantedEffect ) then
130+ return nil
131+ end
132+ return { name = gemData .name , grantedEffect = gemData .grantedEffect }
133+ end
134+
120135local SkillsTabClass = newClass (" SkillsTab" , " UndoHandler" , " ControlHost" , " Control" , function (self , build )
121136 self .UndoHandler ()
122137 self .ControlHost ()
@@ -660,7 +675,6 @@ local function getGemTradePriceKey(reportRow, league)
660675 return table.concat ({
661676 league or reportRow .tradeLeague or " " ,
662677 reportRow .tradeGemNameSpec or reportRow .name or " " ,
663- reportRow .tradeQualityId or " Default" ,
664678 tostring (reportRow .targetLevel or " " ),
665679 tostring (reportRow .targetQuality or " " ),
666680 tostring (reportRow .targetImbuedSupport or " " ),
@@ -1168,9 +1182,6 @@ function SkillsTabClass:BuildGemTradePriceQuery(reportRow, queryContext)
11681182 if not reportRow .tradeGemNameSpec or reportRow .tradeGemNameSpec == " " then
11691183 return nil , " Missing gem name."
11701184 end
1171- if reportRow .tradeQualityId and reportRow .tradeQualityId ~= " Default" then
1172- return nil , " Alt quality pricing is not supported yet."
1173- end
11741185
11751186 local queryTable = {
11761187 query = {
@@ -1831,7 +1842,6 @@ function SkillsTabClass:AddGemQualitySummaryToTooltip(tooltip, gemInstance, qual
18311842 return 0
18321843 end
18331844 local gemData = gemInstance .gemData
1834- local qualityType = gemInstance .qualityId or " Default"
18351845 local qualityValue = m_max (0 , qualityAmount or gemInstance .quality or 0 )
18361846 if qualityValue <= 0 then
18371847 return 0
@@ -1841,7 +1851,7 @@ function SkillsTabClass:AddGemQualitySummaryToTooltip(tooltip, gemInstance, qual
18411851 local function addQualityLines (qualityList , grantedEffect )
18421852 tooltip :AddLine (18 , colorCodes .GEM .. grantedEffect .name )
18431853 tooltip :AddLine (16 , colorCodes .NORMAL .. " At +" .. tostring (qualityValue ) .. " % Quality:" )
1844- for _ , qual in pairs (qualityList ) do
1854+ for _ , qual in ipairs (qualityList ) do
18451855 local stats = { }
18461856 stats [qual [1 ]] = qual [2 ] * qualityValue
18471857 local descriptions = self .build .data .describeStats (stats , grantedEffect .statDescriptionScope )
@@ -1861,15 +1871,15 @@ function SkillsTabClass:AddGemQualitySummaryToTooltip(tooltip, gemInstance, qual
18611871 end
18621872
18631873 local addedSection = false
1864- if gemData .grantedEffect and gemData .grantedEffect .qualityStats and gemData .grantedEffect .qualityStats [qualityType ] then
1865- addQualityLines (gemData .grantedEffect .qualityStats [ qualityType ] , gemData .grantedEffect )
1874+ if gemData .grantedEffect and gemData .grantedEffect .qualityStats and gemData .grantedEffect .qualityStats [1 ] then
1875+ addQualityLines (gemData .grantedEffect .qualityStats , gemData .grantedEffect )
18661876 addedSection = true
18671877 end
1868- if gemData .secondaryGrantedEffect and gemData .secondaryGrantedEffect .qualityStats and gemData .secondaryGrantedEffect .qualityStats [qualityType ] then
1878+ if gemData .secondaryGrantedEffect and gemData .secondaryGrantedEffect .qualityStats and gemData .secondaryGrantedEffect .qualityStats [1 ] then
18691879 if addedSection then
18701880 tooltip :AddSeparator (10 )
18711881 end
1872- addQualityLines (gemData .secondaryGrantedEffect .qualityStats [ qualityType ] , gemData .secondaryGrantedEffect )
1882+ addQualityLines (gemData .secondaryGrantedEffect .qualityStats , gemData .secondaryGrantedEffect )
18731883 end
18741884 return lineCount
18751885end
@@ -1959,7 +1969,7 @@ function SkillsTabClass:AddGemUpgradeReportPreviewGemTooltip(tooltip, gemInstanc
19591969 return true
19601970end
19611971
1962- function SkillsTabClass :AddGemUpgradeReportPreviewGemDataTooltip (tooltip , gemData , level , quality , qualityId , imbuedSupport )
1972+ function SkillsTabClass :AddGemUpgradeReportPreviewGemDataTooltip (tooltip , gemData , level , quality )
19631973 if not gemData then
19641974 return false
19651975 end
@@ -1970,8 +1980,6 @@ function SkillsTabClass:AddGemUpgradeReportPreviewGemDataTooltip(tooltip, gemDat
19701980 nameSpec = gemData .name ,
19711981 level = level or gemData .naturalMaxLevel or 1 ,
19721982 quality = quality or 0 ,
1973- qualityId = qualityId or " Default" ,
1974- imbuedSupport = imbuedSupport ,
19751983 enabled = true ,
19761984 count = 1 ,
19771985 }
@@ -2028,8 +2036,7 @@ function SkillsTabClass:AddGemUpgradeReportCandidateGemTooltip(tooltip, reportRo
20282036 local previewGem = copyTable (gemInstance , true )
20292037 previewGem .level = reportRow .targetLevel or previewGem .level
20302038 previewGem .quality = reportRow .targetQuality or previewGem .quality
2031- previewGem .qualityId = reportRow .tradeQualityId or previewGem .qualityId or " Default"
2032- previewGem .imbuedSupport = reportRow .targetImbuedSupport or previewGem .imbuedSupport
2039+ -- Imbued preview is rendered by AddGemUpgradeReportSupportTooltip below; the gem tooltip itself stays static.
20332040 previewGem .displayEffect = nil
20342041 local startLineIndex = # tooltip .lines + 1
20352042 if not self :AddGemUpgradeReportPreviewGemTooltip (tooltip , previewGem ) then
@@ -2050,7 +2057,7 @@ function SkillsTabClass:AddGemUpgradeReportSupportTooltip(tooltip, supportGrante
20502057 if not gemData then
20512058 return false
20522059 end
2053- return self :AddGemUpgradeReportPreviewGemDataTooltip (tooltip , gemData , 1 , 0 , " Default " )
2060+ return self :AddGemUpgradeReportPreviewGemDataTooltip (tooltip , gemData , 1 , 0 )
20542061end
20552062
20562063function SkillsTabClass :AddGemUpgradeReportMethodTooltip (tooltip , reportRow )
@@ -2110,16 +2117,27 @@ function SkillsTabClass:AddGemUpgradeReportDeltaTooltip(tooltip, reportRow)
21102117
21112118 local currentLevel = gemInstance .level
21122119 local currentQuality = gemInstance .quality
2113- local currentImbuedSupport = gemInstance .imbuedSupport
2120+ local slotName = socketGroup .slot
2121+ local currentGroupImbuedSupport = socketGroup .imbuedSupport
2122+ local currentSlotImbuedGrantedEffect = slotName and self .imbuedSupportBySlot and self .imbuedSupportBySlot [slotName ] or nil
21142123 gemInstance .level = reportRow .targetLevel or gemInstance .level
21152124 gemInstance .quality = reportRow .targetQuality or gemInstance .quality
2116- gemInstance .imbuedSupport = reportRow .targetImbuedSupport or gemInstance .imbuedSupport
2125+ local imbuedInfo = resolveImbuedSupportInfo (self .build .data .gems , reportRow .targetImbuedSupport )
2126+ if imbuedInfo then
2127+ socketGroup .imbuedSupport = imbuedInfo .name
2128+ if slotName and self .imbuedSupportBySlot then
2129+ self .imbuedSupportBySlot [slotName ] = imbuedInfo .grantedEffect
2130+ end
2131+ end
21172132
21182133 local errMsg , upgradedOutput = PCall (calcFunc , nil , reportRow .useFullDPS )
21192134
21202135 gemInstance .level = currentLevel
21212136 gemInstance .quality = currentQuality
2122- gemInstance .imbuedSupport = currentImbuedSupport
2137+ socketGroup .imbuedSupport = currentGroupImbuedSupport
2138+ if slotName and self .imbuedSupportBySlot then
2139+ self .imbuedSupportBySlot [slotName ] = currentSlotImbuedGrantedEffect
2140+ end
21232141 self :ProcessSocketGroup (socketGroup )
21242142
21252143 if errMsg then
@@ -2209,7 +2227,7 @@ end
22092227function SkillsTabClass :AddSupportReplacementCandidateTooltip (tooltip , reportRow )
22102228 tooltip :Clear ()
22112229 local gemData = reportRow and reportRow .candidateGemId and self .build .data .gems [reportRow .candidateGemId ]
2212- return self :AddGemUpgradeReportPreviewGemDataTooltip (tooltip , gemData , reportRow .candidateLevel , reportRow .candidateQuality , reportRow . candidateQualityId )
2230+ return self :AddGemUpgradeReportPreviewGemDataTooltip (tooltip , gemData , reportRow .candidateLevel , reportRow .candidateQuality )
22132231end
22142232
22152233function SkillsTabClass :AddSupportReplacementDeltaTooltip (tooltip , reportRow )
@@ -2238,8 +2256,6 @@ function SkillsTabClass:AddSupportReplacementDeltaTooltip(tooltip, reportRow)
22382256 local currentGrantedEffect = gemInstance .grantedEffect
22392257 local currentLevel = gemInstance .level
22402258 local currentQuality = gemInstance .quality
2241- local currentQualityId = gemInstance .qualityId
2242- local currentImbuedSupport = gemInstance .imbuedSupport
22432259 local currentCorrupted = gemInstance .corrupted
22442260
22452261 gemInstance .gemId = candidateGemData .id
@@ -2249,8 +2265,6 @@ function SkillsTabClass:AddSupportReplacementDeltaTooltip(tooltip, reportRow)
22492265 gemInstance .grantedEffect = candidateGemData .grantedEffect
22502266 gemInstance .level = reportRow .candidateLevel
22512267 gemInstance .quality = reportRow .candidateQuality
2252- gemInstance .qualityId = reportRow .candidateQualityId or " Default"
2253- gemInstance .imbuedSupport = nil
22542268 gemInstance .corrupted = (reportRow .candidateLevel or 0 ) > (candidateGemData .naturalMaxLevel or 0 ) or (reportRow .candidateQuality or 0 ) > 20
22552269 self :ProcessSocketGroup (socketGroup )
22562270
@@ -2263,8 +2277,6 @@ function SkillsTabClass:AddSupportReplacementDeltaTooltip(tooltip, reportRow)
22632277 gemInstance .grantedEffect = currentGrantedEffect
22642278 gemInstance .level = currentLevel
22652279 gemInstance .quality = currentQuality
2266- gemInstance .qualityId = currentQualityId
2267- gemInstance .imbuedSupport = currentImbuedSupport
22682280 gemInstance .corrupted = currentCorrupted
22692281 self :ProcessSocketGroup (socketGroup )
22702282
@@ -2304,16 +2316,27 @@ function SkillsTabClass:AddGemUpgradeReportTooltip(tooltip, reportRow)
23042316
23052317 local currentLevel = gemInstance .level
23062318 local currentQuality = gemInstance .quality
2307- local currentImbuedSupport = gemInstance .imbuedSupport
2319+ local slotName = socketGroup .slot
2320+ local currentGroupImbuedSupport = socketGroup .imbuedSupport
2321+ local currentSlotImbuedGrantedEffect = slotName and self .imbuedSupportBySlot and self .imbuedSupportBySlot [slotName ] or nil
23082322 gemInstance .level = reportRow .targetLevel or gemInstance .level
23092323 gemInstance .quality = reportRow .targetQuality or gemInstance .quality
2310- gemInstance .imbuedSupport = reportRow .targetImbuedSupport or gemInstance .imbuedSupport
2324+ local imbuedInfo = resolveImbuedSupportInfo (self .build .data .gems , reportRow .targetImbuedSupport )
2325+ if imbuedInfo then
2326+ socketGroup .imbuedSupport = imbuedInfo .name
2327+ if slotName and self .imbuedSupportBySlot then
2328+ self .imbuedSupportBySlot [slotName ] = imbuedInfo .grantedEffect
2329+ end
2330+ end
23112331
23122332 local errMsg , upgradedOutput = PCall (calcFunc , nil , reportRow .useFullDPS )
23132333
23142334 gemInstance .level = currentLevel
23152335 gemInstance .quality = currentQuality
2316- gemInstance .imbuedSupport = currentImbuedSupport
2336+ socketGroup .imbuedSupport = currentGroupImbuedSupport
2337+ if slotName and self .imbuedSupportBySlot then
2338+ self .imbuedSupportBySlot [slotName ] = currentSlotImbuedGrantedEffect
2339+ end
23172340 self :ProcessSocketGroup (socketGroup )
23182341
23192342 if errMsg then
0 commit comments