@@ -517,6 +517,12 @@ function CompareTabClass:InitControls()
517517 end )
518518 self .controls .primCalcsMineCount .shown = false
519519
520+ self .controls .primCalcsShowMinion = new (" CheckBoxControl" , nil , {0 , 0 , 18 }, nil , function (state )
521+ self .primaryBuild .calcsTab .input .showMinion = state
522+ self .primaryBuild .buildFlag = true
523+ end , " Show stats for the minion instead of the player." )
524+ self .controls .primCalcsShowMinion .shown = false
525+
520526 self .controls .primCalcsMinion = new (" DropDownControl" , nil , {0 , 0 , 140 , 18 }, {}, function (index , value )
521527 local mainSocketGroup = self .primaryBuild .skillsTab .socketGroupList [self .primaryBuild .calcsTab .input .skill_number ]
522528 if mainSocketGroup then
@@ -633,6 +639,16 @@ function CompareTabClass:InitControls()
633639 end )
634640 self .controls .cmpCalcsMineCount .shown = false
635641
642+ self .controls .cmpCalcsShowMinion = new (" CheckBoxControl" , nil , {0 , 0 , 18 }, nil , function (state )
643+ local entry = self :GetActiveCompare ()
644+ if entry then
645+ entry .calcsTab .input .showMinion = state
646+ entry .buildFlag = true
647+ self .modFlag = true
648+ end
649+ end , " Show stats for the minion instead of the player." )
650+ self .controls .cmpCalcsShowMinion .shown = false
651+
636652 self .controls .cmpCalcsMinion = new (" DropDownControl" , nil , {0 , 0 , 140 , 18 }, {}, function (index , value )
637653 local entry = self :GetActiveCompare ()
638654 if entry then
@@ -2178,6 +2194,8 @@ function CompareTabClass:RefreshCalcsSkillControls(compareEntry)
21782194 self .controls .primCalcsSocketGroup .shown = true
21792195 self .controls .primCalcsMode .shown = true
21802196 self .controls .primCalcsMode :SelByValue (self .primaryBuild .calcsTab .input .misc_buffMode , " buffMode" )
2197+ self .controls .primCalcsShowMinion .shown = self .controls .primCalcsMinion .shown == true
2198+ self .controls .primCalcsShowMinion .state = self .primaryBuild .calcsTab .input .showMinion and true or false
21812199
21822200 local cmpControls = {
21832201 mainSocketGroup = self .controls .cmpCalcsSocketGroup ,
@@ -2193,15 +2211,17 @@ function CompareTabClass:RefreshCalcsSkillControls(compareEntry)
21932211 self .controls .cmpCalcsSocketGroup .shown = true
21942212 self .controls .cmpCalcsMode .shown = true
21952213 self .controls .cmpCalcsMode :SelByValue (compareEntry .calcsTab .input .misc_buffMode , " buffMode" )
2214+ self .controls .cmpCalcsShowMinion .shown = self .controls .cmpCalcsMinion .shown == true
2215+ self .controls .cmpCalcsShowMinion .state = compareEntry .calcsTab .input .showMinion and true or false
21962216
21972217 -- Wrap .shown booleans set by RefreshSkillSelectControls with a view-mode gate,
21982218 -- so controls auto-hide when not in CALCS mode (matching configShown pattern)
21992219 local calcsControlNames = {
22002220 " primCalcsSocketGroup" , " primCalcsMainSkill" , " primCalcsSkillPart" ,
2201- " primCalcsStageCount" , " primCalcsMineCount" , " primCalcsMinion" ,
2221+ " primCalcsStageCount" , " primCalcsMineCount" , " primCalcsShowMinion " , " primCalcsMinion" ,
22022222 " primCalcsMinionSkill" , " primCalcsMode" ,
22032223 " cmpCalcsSocketGroup" , " cmpCalcsMainSkill" , " cmpCalcsSkillPart" ,
2204- " cmpCalcsStageCount" , " cmpCalcsMineCount" , " cmpCalcsMinion" ,
2224+ " cmpCalcsStageCount" , " cmpCalcsMineCount" , " cmpCalcsShowMinion " , " cmpCalcsMinion" ,
22052225 " cmpCalcsMinionSkill" , " cmpCalcsMode" ,
22062226 }
22072227 for _ , name in ipairs (calcsControlNames ) do
@@ -2225,7 +2245,7 @@ function CompareTabClass:LayoutCalcsSkillControls(vp, compareEntry)
22252245 local colWidth = m_floor ((vp .width - 20 ) / 2 )
22262246 local leftX = vp .x + 4
22272247 local rightX = leftX + colWidth + 12
2228- local labelW = 100
2248+ local labelW = 140
22292249 local controlW = colWidth - labelW - 8
22302250 local rowH = 22
22312251 local y = vp .y + 4
@@ -2289,6 +2309,14 @@ function CompareTabClass:LayoutCalcsSkillControls(vp, compareEntry)
22892309 rightY = rightY + rowH
22902310 end
22912311
2312+ -- Show Minion Stats
2313+ if layoutRow (self .controls .primCalcsShowMinion , leftX , leftY ) then
2314+ leftY = leftY + rowH
2315+ end
2316+ if layoutRow (self .controls .cmpCalcsShowMinion , rightX , rightY ) then
2317+ rightY = rightY + rowH
2318+ end
2319+
22922320 -- Minion
22932321 if layoutRow (self .controls .primCalcsMinion , leftX , leftY , controlW ) then
22942322 leftY = leftY + rowH
@@ -3038,8 +3066,20 @@ end
30383066-- SUMMARY VIEW
30393067-- ============================================================
30403068function CompareTabClass :DrawSummary (vp , compareEntry )
3041- local primaryOutput = self .primaryBuild .calcsTab .mainOutput
3042- local compareOutput = compareEntry :GetOutput ()
3069+ local primaryCalcs = self .primaryBuild .calcsTab
3070+ local compareCalcs = compareEntry .calcsTab
3071+ local primaryEnvMain = primaryCalcs and primaryCalcs .mainEnv
3072+ local compareEnvMain = compareCalcs and compareCalcs .mainEnv
3073+
3074+ -- If each selected builds skill is a minion skill, use it
3075+ local primaryMinionSkill = primaryEnvMain and primaryEnvMain .player and primaryEnvMain .player .mainSkill
3076+ and primaryEnvMain .player .mainSkill .minion and primaryEnvMain .minion
3077+ local compareMinionSkill = compareEnvMain and compareEnvMain .player and compareEnvMain .player .mainSkill
3078+ and compareEnvMain .player .mainSkill .minion and compareEnvMain .minion
3079+ local summaryUseMinion = primaryMinionSkill or compareMinionSkill
3080+
3081+ local primaryOutput = primaryMinionSkill and primaryEnvMain .minion .output or primaryCalcs .mainOutput
3082+ local compareOutput = compareMinionSkill and compareEnvMain .minion .output or compareEntry :GetOutput ()
30433083 if not primaryOutput or not compareOutput then
30443084 return
30453085 end
@@ -3079,11 +3119,11 @@ function CompareTabClass:DrawSummary(vp, compareEntry)
30793119 drawY = drawY + 6
30803120
30813121 -- Stat comparison
3082- local displayStats = self .primaryBuild .displayStats
3083- local primaryEnv = self . primaryBuild . calcsTab . mainEnv
3084- local compareEnv = compareEntry . calcsTab . mainEnv
3122+ local displayStats = summaryUseMinion and self . primaryBuild . minionDisplayStats or self .primaryBuild .displayStats
3123+ local primaryActor = primaryMinionSkill and primaryEnvMain . minion or primaryEnvMain . player
3124+ local compareActor = compareMinionSkill and compareEnvMain . minion or compareEnvMain . player
30853125
3086- drawY = self :DrawStatList (drawY , displayStats , primaryOutput , compareOutput , primaryEnv , compareEnv , col1 , col4 , col2R , col3R )
3126+ drawY = self :DrawStatList (drawY , displayStats , primaryOutput , compareOutput , primaryActor , compareActor , col1 , col4 , col2R , col3R )
30873127
30883128 -- ========================================
30893129 -- Compare Power Report section
@@ -3173,12 +3213,13 @@ function CompareTabClass:DrawSummary(vp, compareEntry)
31733213end
31743214
31753215
3176- function CompareTabClass :DrawStatList (drawY , displayStats , primaryOutput , compareOutput , primaryEnv , compareEnv , col1 , col4 , col2R , col3R )
3216+ function CompareTabClass :DrawStatList (drawY , displayStats , primaryOutput , compareOutput , primaryActor , compareActor , col1 , col4 , col2R , col3R )
31773217 local lineHeight = 16
31783218
3179- -- Get skill flags from both builds for stat filtering
3180- local primaryFlags = primaryEnv and primaryEnv .player and primaryEnv .player .mainSkill and primaryEnv .player .mainSkill .skillFlags or {}
3181- local compareFlags = compareEnv and compareEnv .player and compareEnv .player .mainSkill and compareEnv .player .mainSkill .skillFlags or {}
3219+ -- Get skill flags from each build's selected actor (player, or minion when the
3220+ -- top-section "Skill:" is a minion skill) for stat filtering
3221+ local primaryFlags = primaryActor and primaryActor .mainSkill and primaryActor .mainSkill .skillFlags or {}
3222+ local compareFlags = compareActor and compareActor .mainSkill and compareActor .mainSkill .skillFlags or {}
31823223
31833224 for _ , statData in ipairs (displayStats ) do
31843225 if not statData .stat and not statData .label then
@@ -4194,6 +4235,10 @@ function CompareTabClass:DrawCalcsSkillHeader(vp, compareEntry, headerHeight, pr
41944235 if drawLabel (" Mines" , leftX , leftY , self .controls .primCalcsMineCount ) then leftY = leftY + rowH end
41954236 if drawLabel (" Mines" , rightX , rightY , self .controls .cmpCalcsMineCount ) then rightY = rightY + rowH end
41964237
4238+ -- Show Minion Stats
4239+ if drawLabel (" Show Minion Stats" , leftX , leftY , self .controls .primCalcsShowMinion ) then leftY = leftY + rowH end
4240+ if drawLabel (" Show Minion Stats" , rightX , rightY , self .controls .cmpCalcsShowMinion ) then rightY = rightY + rowH end
4241+
41974242 -- Minion
41984243 if drawLabel (" Minion" , leftX , leftY , self .controls .primCalcsMinion ) then leftY = leftY + rowH end
41994244 if drawLabel (" Minion" , rightX , rightY , self .controls .cmpCalcsMinion ) then rightY = rightY + rowH end
@@ -4265,8 +4310,8 @@ function CompareTabClass:DrawCalcs(vp, compareEntry)
42654310 local primaryEnv = self .primaryBuild .calcsTab .calcsEnv
42664311 local compareEnv = compareEntry .calcsTab and compareEntry .calcsTab .calcsEnv
42674312 if not primaryEnv or not compareEnv then return end
4268- local primaryActor = primaryEnv .player
4269- local compareActor = compareEnv .player
4313+ local primaryActor = ( self . primaryBuild . calcsTab . input . showMinion and primaryEnv . minion ) or primaryEnv .player
4314+ local compareActor = ( compareEntry . calcsTab . input . showMinion and compareEnv . minion ) or compareEnv .player
42704315 if not primaryActor or not compareActor then return end
42714316
42724317 -- Skill detail header height
0 commit comments