I agree it's insane that they don't implement this... Here is your pseudo code to solve this issue (Blizz plz):
getHighestAverageIlvl(){
slotToHighestIlvl; //map ie K,V = 'helm', 900
slotToLeggoIlvl; //map ie K,V = 'helm', 940
for (equippableItem in getEquippableItemsForPlayer()){
slot = equippableItem.getSlot();
itemIlvl = equippableItem.getIlvl;
if (equippableItem.isLeggo()){
slotToLeggoIlvl.put(slot, itemIlvl);
}
else if (slotToHighestIlvl.get(slot) < itemIlvl ){
slotToHighestIlvl.put(slot, itemIlvl);
}
}
largestSlotDiffForLeggo1 = 0;
largestSlotDiffForLeggo2 = 0;
largestDiff1Slot;
largestDiff2Slot;
for (slot in getAllPossibleSlots()){
ilvlOfSlot = slotToHighestIlvl.get(slot);
if (ilvlOfSlot == null){
ilvlOfSlot = 0;
}
ilvlOfLeggo = slotToLeggoIlvl.get(slot);
if (ilvlOfLeggo == null){
ilvlOfLeggo = 0;
}
ilvlDiff = ilvlOfSlot - ilvlOfLeggo;
if (largestSlotDiffForLeggo1 < ilvlDiff){
largestDiff2Slot = largestDiff1Slot;
largestDiff1Slot = slot;
largestSlotDiffForLeggo2 = largestSlotDiffForLeggo1;
largestSlotDiffForLeggo1 = ilvlDiff;
}
else if (largestSlotDiffForLeggo2 < ilvlDiff){
largestSlotDiffForLeggo2 = ilvlDiff;
largestDiff2Slot = slot;
}
}
leggo1 = slotToLeggoIlvl.get(largestDiff1Slot);
slotToHighestIlvl.put(largestDiff1Slot, leggo1);
leggo2 = slotToLeggoIlvl.get(largestDiff2Slot);
slotToHighestIlvl.put(largestDiff1Slot, leggo1);
return calculateAverageIlvlFromMap(slotToHighestIlvl); //trivial
}
Welp I guess that was todays lunch break lol. Inb4 someone finds a bug/better way <3