@@ -1077,95 +1077,59 @@ function TreeTabClass:BuildPowerReportList(currentStat)
10771077 fmt = " .1f"
10781078 }
10791079 end
1080+ local powerMultiplier = (displayStat .pc or displayStat .mod ) and 100 or 1
1081+ local function formatPower (power )
1082+ local powerStr = formatNumSep (s_format (" %" .. displayStat .fmt , power ))
1083+ if (power > 0 and not displayStat .lowerIsBetter ) or (power < 0 and displayStat .lowerIsBetter ) then
1084+ return colorCodes .POSITIVE .. powerStr
1085+ elseif (power < 0 and not displayStat .lowerIsBetter ) or (power > 0 and displayStat .lowerIsBetter ) then
1086+ return colorCodes .NEGATIVE .. powerStr
1087+ end
1088+ return powerStr
1089+ end
1090+ local function getNodePathDist (node , isAlloc )
1091+ if isAlloc then
1092+ return # (node .depends or { }) == 0 and 1 or # node .depends
1093+ end
1094+ return # (node .path or { }) == 0 and 1 or # node .path
1095+ end
1096+ local function addReportEntry (node , name , nodePower , pathPower , pathDist , isAlloc , pathPowerStr )
1097+ t_insert (report , {
1098+ name = name ,
1099+ power = nodePower ,
1100+ powerStr = formatPower (nodePower ),
1101+ pathPower = pathPower ,
1102+ pathPowerStr = pathPowerStr or formatPower (pathPower ),
1103+ allocated = isAlloc ,
1104+ id = node .id ,
1105+ x = node .x ,
1106+ y = node .y ,
1107+ type = node .type ,
1108+ sd = node .sd ,
1109+ pathDist = pathDist
1110+ })
1111+ end
10801112
10811113 -- search all nodes, ignoring ascendancies, sockets, etc.
10821114 for nodeId , node in pairs (self .build .spec .nodes ) do
10831115 local isAlloc = node .alloc or self .build .calcsTab .mainEnv .grantedPassives [nodeId ]
10841116 if (node .type == " Normal" or node .type == " Keystone" or node .type == " Notable" ) and not node .ascendancyName then
1085- local pathDist
1086- if isAlloc then
1087- pathDist = # (node .depends or { }) == 0 and 1 or # node .depends
1088- else
1089- pathDist = # (node .path or { }) == 0 and 1 or # node .path
1090- end
1091- local nodePower = (node .power .singleStat or 0 ) * ((displayStat .pc or displayStat .mod ) and 100 or 1 )
1092- local pathPower = (node .power .pathPower or 0 ) / pathDist * ((displayStat .pc or displayStat .mod ) and 100 or 1 )
1093- local nodePowerStr = s_format (" %" .. displayStat .fmt , nodePower )
1094- local pathPowerStr = s_format (" %" .. displayStat .fmt , pathPower )
1095-
1096- nodePowerStr = formatNumSep (nodePowerStr )
1097- pathPowerStr = formatNumSep (pathPowerStr )
1098-
1099- if (nodePower > 0 and not displayStat .lowerIsBetter ) or (nodePower < 0 and displayStat .lowerIsBetter ) then
1100- nodePowerStr = colorCodes .POSITIVE .. nodePowerStr
1101- elseif (nodePower < 0 and not displayStat .lowerIsBetter ) or (nodePower > 0 and displayStat .lowerIsBetter ) then
1102- nodePowerStr = colorCodes .NEGATIVE .. nodePowerStr
1103- end
1104- if (pathPower > 0 and not displayStat .lowerIsBetter ) or (pathPower < 0 and displayStat .lowerIsBetter ) then
1105- pathPowerStr = colorCodes .POSITIVE .. pathPowerStr
1106- elseif (pathPower < 0 and not displayStat .lowerIsBetter ) or (pathPower > 0 and displayStat .lowerIsBetter ) then
1107- pathPowerStr = colorCodes .NEGATIVE .. pathPowerStr
1108- end
1109-
1110- t_insert (report , {
1111- name = node .dn ,
1112- power = nodePower ,
1113- powerStr = nodePowerStr ,
1114- pathPower = pathPower ,
1115- pathPowerStr = pathPowerStr ,
1116- allocated = isAlloc ,
1117- id = node .id ,
1118- x = node .x ,
1119- y = node .y ,
1120- type = node .type ,
1121- sd = node .sd ,
1122- pathDist = pathDist
1123- })
1117+ local pathDist = getNodePathDist (node , isAlloc )
1118+ local nodePower = (node .power .singleStat or 0 ) * powerMultiplier
1119+ local pathPower = (node .power .pathPower or 0 ) / pathDist * powerMultiplier
1120+ addReportEntry (node , node .dn , nodePower , pathPower , pathDist , isAlloc )
11241121 elseif node .type == " Mastery" and node .power .masteryEffects and not node .ascendancyName then
1125- local pathDist
1126- if isAlloc then
1127- pathDist = # (node .depends or { }) == 0 and 1 or # node .depends
1128- else
1129- pathDist = # (node .path or { }) == 0 and 1 or # node .path
1130- end
1122+ local pathDist = getNodePathDist (node , isAlloc )
11311123
11321124 for _ , masteryEffect in ipairs (node .masteryEffects or { }) do
11331125 local effect = self .build .spec .tree .masteryEffects [masteryEffect .effect ]
11341126 local effectPower = node .power .masteryEffects [masteryEffect .effect ]
11351127 if effect and effectPower then
1136- local nodePower = (effectPower .singleStat or 0 ) * ((displayStat .pc or displayStat .mod ) and 100 or 1 )
1137- local pathPower = ((effectPower .pathPower or effectPower .singleStat or 0 ) / pathDist ) * ((displayStat .pc or displayStat .mod ) and 100 or 1 )
1138- local nodePowerStr = s_format (" %" .. displayStat .fmt , nodePower )
1139- local pathPowerStr = s_format (" %" .. displayStat .fmt , pathPower )
1140-
1141- nodePowerStr = formatNumSep (nodePowerStr )
1142- pathPowerStr = formatNumSep (pathPowerStr )
1143-
1144- if (nodePower > 0 and not displayStat .lowerIsBetter ) or (nodePower < 0 and displayStat .lowerIsBetter ) then
1145- nodePowerStr = colorCodes .POSITIVE .. nodePowerStr
1146- elseif (nodePower < 0 and not displayStat .lowerIsBetter ) or (nodePower > 0 and displayStat .lowerIsBetter ) then
1147- nodePowerStr = colorCodes .NEGATIVE .. nodePowerStr
1148- end
1149- if (pathPower > 0 and not displayStat .lowerIsBetter ) or (pathPower < 0 and displayStat .lowerIsBetter ) then
1150- pathPowerStr = colorCodes .POSITIVE .. pathPowerStr
1151- elseif (pathPower < 0 and not displayStat .lowerIsBetter ) or (pathPower > 0 and displayStat .lowerIsBetter ) then
1152- pathPowerStr = colorCodes .NEGATIVE .. pathPowerStr
1153- end
1154-
11551128 local effectLabelParts = isAlloc and not node .allMasteryOptions and node .sd or effect .stats or effect .sd
1156- t_insert (report , {
1157- name = effectLabelParts and node .dn .. " : " .. t_concat (effectLabelParts , " / " ) or node .dn ,
1158- power = nodePower ,
1159- powerStr = nodePowerStr ,
1160- pathPower = pathPower ,
1161- pathPowerStr = pathPowerStr ,
1162- allocated = isAlloc ,
1163- id = node .id ,
1164- x = node .x ,
1165- y = node .y ,
1166- type = node .type ,
1167- pathDist = pathDist
1168- })
1129+ local name = effectLabelParts and node .dn .. " : " .. t_concat (effectLabelParts , " / " ) or node .dn
1130+ local nodePower = (effectPower .singleStat or 0 ) * powerMultiplier
1131+ local pathPower = ((effectPower .pathPower or effectPower .singleStat or 0 ) / pathDist ) * powerMultiplier
1132+ addReportEntry (node , name , nodePower , pathPower , pathDist , isAlloc )
11691133 end
11701134 end
11711135 end
@@ -1175,28 +1139,8 @@ function TreeTabClass:BuildPowerReportList(currentStat)
11751139 for nodeName , node in pairs (self .build .spec .tree .clusterNodeMap ) do
11761140 local isAlloc = node .alloc
11771141 if not isAlloc then
1178- local nodePower = (node .power and node .power .singleStat or 0 ) * ((displayStat .pc or displayStat .mod ) and 100 or 1 )
1179- local nodePowerStr = s_format (" %" .. displayStat .fmt , nodePower )
1180-
1181- nodePowerStr = formatNumSep (nodePowerStr )
1182-
1183- if (nodePower > 0 and not displayStat .lowerIsBetter ) or (nodePower < 0 and displayStat .lowerIsBetter ) then
1184- nodePowerStr = colorCodes .POSITIVE .. nodePowerStr
1185- elseif (nodePower < 0 and not displayStat .lowerIsBetter ) or (nodePower > 0 and displayStat .lowerIsBetter ) then
1186- nodePowerStr = colorCodes .NEGATIVE .. nodePowerStr
1187- end
1188-
1189- t_insert (report , {
1190- name = node .dn ,
1191- power = nodePower ,
1192- powerStr = nodePowerStr ,
1193- pathPower = 0 ,
1194- pathPowerStr = " --" ,
1195- id = node .id ,
1196- type = node .type ,
1197- sd = node .sd ,
1198- pathDist = " Cluster"
1199- })
1142+ local nodePower = (node .power and node .power .singleStat or 0 ) * powerMultiplier
1143+ addReportEntry (node , node .dn , nodePower , 0 , " Cluster" , isAlloc , " --" )
12001144 end
12011145 end
12021146
0 commit comments