// ==UserScript==
// @name craftofexile fix tier mods affecting weights
// @namespace http://tampermonkey.net/
// @version 2024-05-16
// @description This script implements the changes proposed in the following reddit posed by wcnsb2010. It tries to fix the weights which are affected by mod tier rating. When using tier rating, mods with only one or few tiers will be less common. https://www.reddit.com/r/pathofexile/comments/1cq6dxh/how_tier_rating_actuallywork_in_this_league/
// @author fixcraftofexile
// @match https://www.craftofexile.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=craftofexile.com
// @grant none
// @run-at document-idle
// ==/UserScript==
poec_processColumn = new_poec_processColumn;
poec_necroModifyPoolWithEffects = new_poec_necroModifyPoolWithEffects;
function necro_calc_tier_multiplier(R, M) {
// R = Tier Rating, M = total number of tiers for this mod
var tier_multipl = (100 * M) / (100 + R)
if(tier_multipl > 1.0) {
tier_multipl = 1.0;
}
return tier_multipl;
}
function new_poec_getGraveyardCuttingPct(R, M) {
if (M <= 1) {
return 0.5;
}
// R = Tier Rating, M = total number of tiers for this mod
let cutting_pct = M - 100 * (M-1) / (R + 99);
return cutting_pct;
};
function new_poec_necroModifyPoolWithEffects(modpool, effects) {
if (effects.tiers) {
effects.tiers = effects.tiers / 100
}
if (effects.weight) {
$.each(
effects.weight,
function (k, v) {
effects.weight[k] = v / 100;
if (v < 0) {
let num = Math.abs(effects.weight[k]);
effects.weight[k] = 1 / (num + 1)
}
}
)
}
$.each(
modpool,
function (modId, tiers) {
let pos_mod = 0;
let neg_mod = 0;
let tier_filter = 0;
if (poec_necroMTypesIndex[modId]) {
$.each(
poec_necroMTypesIndex[modId],
function (ind, mtype) {
if (effects.weight) {
if (effects.weight[mtype]) {
if (effects.weight[mtype] > 1) {
pos_mod += effects.weight[mtype]
} else {
if (neg_mod == 0) {
neg_mod = (1 / effects.weight[mtype]) - 1
} else {
neg_mod += (1 / effects.weight[mtype]) - 1
}
}
}
}
}
)
}
if (effects.haunted) {
if (tiers[0].id_mgroup == 16) {
pos_mod += effects.haunted[0]
}
}
if (effects.prefix) {
if (tiers[0].atype == 'prefix') {
pos_mod += effects.prefix[0]
}
} else {
if (effects.suffix) {
if (tiers[0].atype == 'suffix') {
pos_mod += effects.suffix[0]
}
}
}
if (effects.tiers) {
if (effects.tiers) {
tier_filter += effects.tiers
}
}
let affect_mod = 1;
if (pos_mod != 0 || neg_mod != 0) {
if (pos_mod > 0) pos_mod++;
if (neg_mod > 0) neg_mod++;
if (pos_mod == 0) {
pos_mod = 1
}
if (neg_mod == 0) {
neg_mod = 1
}
affect_mod = pos_mod * (1 / neg_mod)
}
let cut_tiers = 0;
if (tier_filter > 0) {
tier_filter = new_poec_getGraveyardCuttingPct(tier_filter*100, tiers.length);
cut_tiers = Math.floor(tier_filter)
}
let tierNumber = 0;
$.each(
tiers,
function (tk, tv) {
tierNumber++;
if (tierNumber <= cut_tiers) {
modpool[modId][tk].tweight = 0
} else {
var tier_multipl = necro_calc_tier_multiplier(effects.tiers * 100, tiers.length);
modpool[modId][tk].tweight = tv.tweight * affect_mod * tier_multipl;
}
}
)
}
);
return modpool
}
function new_poec_processColumn(
cdata,
atype,
forceopt,
forceweight,
forcetitle,
coltitle,
amglist,
maxcover
) {
var dnow = poec_startDiag('Process column ' + atype);
var vHtml = '';
var allWeight = 0;
var allTiers = 0;
var allMods = 0;
var allMTypes = {};
var allBinds = {};
var blockGrp = !1;
var unblockGrp = !1;
if (poec_affixFilters.inf != undefined) {
if (poec_affixFilters.inf == '1') {
blockGrp = !0
} else {
unblockGrp = !0
}
}
var filter_is = null;
var filter_non = null;
$.each(
poec_affixFilters,
function (key, val) {
if (key != 'inf') {
if (val == '1') {
if (!filter_is) {
filter_is = '|'
}
filter_is += key + '|'
} else {
if (!filter_non) {
filter_non = '|'
}
filter_non += key + '|'
}
}
}
);
remByILvl[atype] = {
'tiers': 0,
'weight': 0
};
$.each(
cdata,
function (mgroup, affixes) {
var gvalid = !0;
var normal = !1;
var nobld = 0;
var infchoose = !1;
var is_delve = !1;
if (
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].poedb_id == 'delve'
) {
is_delve = !0
}
var is_influence = !1;
if (poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].is_influence == 1) {
is_influence = !0;
if (poec_cInfluences) {
if (poec_cInfluences.indexOf('|' + mgroup + '|') > - 1) {
if (!poec_baseActive) {
nobld = 1
}
infchoose = !0
} else {
}
} else {
}
if (poec_nBase.i == 8201) {
infchoose = !0
}
} else {
if (!poec_baseActive) {
normal = !0
} else {
if (
poec_cMethod == 'exalted' &&
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].poedb_id == 'delve'
) {
normal = !0
} else {
if (
poec_cMethod != 'fossil' &&
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].poedb_id == 'delve'
) {
gvalid = !1
}
}
}
}
if (gvalid) {
if (poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].is_compute == 1) {
var iscomp = 1
} else {
var iscomp = 0
}
if (normal) {
var iscomp = 0
}
if (
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].is_influence == 1 &&
!infchoose
) {
var iscomp = 0
}
if (forceopt) {
iscomp = 0
}
var gtiers = 0;
var gweight = 0;
var vGroup = '';
var addgrpcls = '';
if (!iscomp) {
if (poec_groupToggles.indexOf('|' + mgroup + '|') > - 1) {
addgrpcls = ' toggled'
}
}
if (
poec_cMethod == 'fossil' &&
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].poedb_id == 'delve' &&
(!poec_cFossils || poec_cFossils == '|')
) {
var iscomp = 0
}
if (maxcover) {
var maxcmods = maxcover
} else {
if (metasActive.mul_mods && mgroup == poec_cCraftedGrpID) {
var maxcmods = 3
} else {
var maxcmods = poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].max_chosen
}
}
var showweight = !1;
if (mgroup == 10) {
showweight = !0;
coltitle = 'Unveil'
}
if (forceopt) {
var tgid = atype
} else {
var tgid = mgroup
}
vGroup += '<div class=\'agroup med_shadow div_stable at_' + atype + ' fo_' + forceopt + ' fw_' + forceweight + ' compute' + iscomp + ' nobld' + nobld + ' iinf' + poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].is_influence + ' selectable mgrp mgrp' + mgroup + ' ' + addgrpcls + '\' atype=\'' + atype + '\' gid=\'' + tgid + '\' maxc=\'' + maxcmods + '\'>';
vGroup += '<div class=\'header line\' onClick=\'poec_toggleOptAgroup(this)\'>';
if (forcetitle) {
var grptitle = forcetitle
} else {
var grptitle = poecl.mgroup[mgroup]
}
if (!coltitle) {
coltitle = atype
}
vGroup += '<div class=\'label\'><div>' + grptitle + '</div></div>';
vGroup += '<div class=\'right\'><div>' + applyLang('Tiers') + '</div></div>';
vGroup += '<div class=\'right\'><div>' + applyLang('iLvl') + '</div></div>';
if (iscomp || is_influence || forceweight || showweight) {
vGroup += '<div class=\'right\'><div>' + applyLang('Weight') + '</div></div>';
if (poec_cVMode == 'd') {
vGroup += '<div class=\'right capitalize\'><div>' + coltitle + ' %</div></div>';
if (iscomp || is_influence) {
vGroup += '<div class=\'right\'><div>' + applyLang('Weight %') + '</div></div>'
}
}
}
if (atype == 'corrupted') {
vGroup += '<div class=\'right\' title=\'' + applyLang('Chance to achieve with a vaal orb') + '\'><div>' + applyLang('Vaal %') + '</div></div>'
} else {
vGroup += '<div class=\'grp\' title=\'' + applyLang('Modifier Group') + '\'><div>G</div></div>'
}
vGroup += '</div>';
var nvaffix = 0;
for (var i = 0; i < affixes.length; i++) {
var skip_affix = !1;
if (is_delve && iscomp) {
if (poec_cFossils != null) {
if (poec_cFossils.length > 1) {
if (poec_cFossils.indexOf('|' + affixes[i].id_fossil + '|') > - 1) {
skip_affix = !1
} else {
skip_affix = !0
}
}
}
}
if (affixes[i].ubt) {
if (affixes[i].ubt != poec_nBase.i) {
skip_affix = !0
}
}
if (exmods != '' && affixes[i].exkey) {
if (exmods == affixes[i].exkey) {
skip_affix = !0
}
}
if (!skip_affix) {
nvaffix++;
if (mgroup == 999) {
var ntiers = 1;
var milvl = 1
} else {
var ntiers = poecd.tiers[affixes[i].id_modifier][poec_cBase].length;
var milvl = poecd.tiers[affixes[i].id_modifier][poec_cBase][poecd.tiers[affixes[i].id_modifier][poec_cBase].length - 1].ilvl
}
var addcls = '';
if (nvaffix % 2 == 0) {
addcls += ' even'
} else {
addcls += ' odd'
}
var htypes = '';
var ctypes = '';
var mmtgs = '';
var clstypes = '';
var is_blocked = !1;
var is_bld = !1;
var num_more = 0;
var num_less = 0;
var affect_mod = null;
var pos_mod = null;
var neg_mod = null;
var cat_mod = 0;
var harvest_found = !1;
var filter_block = !1;
var has_cats = '|';
var amodgroups = affixes[i].modgroups;
var attrgroups = '';
for (zy = 0; zy < amodgroups.length; zy++) {
addcls += ' amodgrp_' + amodgroups[zy];
attrgroups += '|' + amodgroups[zy]
}
attrgroups = attrgroups.substring(1, attrgroups.length);
if (affixes[i].mtypes) {
if (poec_isSlam && (metasActive.no_caster || metasActive.no_attack)) {
if (poec_isSlam) {
if (
metasActive.no_caster &&
affixes[i].mtypes.indexOf('|13|') > - 1 &&
!poec_cBuild[affixes[i].id_modifier] &&
affixes[i].id_modifier != poec_cCasterModID
) {
addcls += ' block';
is_blocked = !0
}
if (
metasActive.no_attack &&
affixes[i].mtypes.indexOf('|3|') > - 1 &&
!poec_cBuild[affixes[i].id_modifier] &&
affixes[i].id_modifier != poec_cAttackModID
) {
addcls += ' block';
is_blocked = !0
}
}
}
}
var tamgs = poec_getAMGs(
poecd.modifiers.seq[poecd.modifiers.ind[affixes[i].id_modifier]].amg
);
if (tamgs) {
for (var h = 0; h < tamgs.length; h++) {
if (amglist.indexOf('|' + tamgs[h] + '|') > - 1) {
addcls += ' block';
is_blocked = !0
}
}
}
var necropolis_tier_filtering = null;
var filter_found = !1;
if (affixes[i].mtypes) {
if (affixes[i].mtypes.length > 1) {
var mtypes = affixes[i].mtypes.substring(1, affixes[i].mtypes.length - 1).split('|');
var bypasstypes = {};
if (fossilHybrids) {
for (var q = 0; q < fossilHybrids.length; q++) {
var match_fail = !1;
for (var r = 0; r < fossilHybrids[q].ids.length; r++) {
if (
affixes[i].mtypes.indexOf('|' + fossilHybrids[q].ids[r] + '|') > - 1
) {
} else {
match_fail = !0
}
}
if (!match_fail) {
for (var r = 0; r < fossilHybrids[q].ids.length; r++) {
bypasstypes[fossilHybrids[q].ids[r]] = !0
}
if (fossilHybrids[q].pos == 0) {
addcls += ' block';
is_blocked = !0
} else {
if (fossilHybrids[q].pos != 1) {
if (pos_mod == null) {
pos_mod = fossilHybrids[q].pos
} else {
if (poec_cFosMode == 'a') {
pos_mod += fossilHybrids[q].pos
} else {
pos_mod = pos_mod * fossilHybrids[q].pos
}
}
}
if (fossilHybrids[q].neg != 1) {
if (neg_mod == null) {
neg_mod = fossilHybrids[q].neg
} else {
neg_mod = neg_mod * fossilHybrids[q].neg
}
}
}
}
}
}
for (var j = 0; j < mtypes.length; j++) {
clstypes += ' mt' + mtypes[j];
if (poecd.mtypes.seq[poecd.mtypes.ind[mtypes[j]]] == undefined) {
console.log('j:' + j);
console.log('mtypes[j]:' + mtypes[j]);
console.log(mtypes);
console.log(affixes[i])
}
var jbase = poecd.mtypes.seq[poecd.mtypes.ind[mtypes[j]]].jewellery_tag;
if (jbase == 0 || (jbase == 1 && poec_cIsJewelleryBase == !0)) {
htypes += '<div class=\'mt tmt' + mtypes[j] + ' sml_shadow\' title=\'Fossil/Harvest Tag\'>' + poecl.mtype[mtypes[j]] + '</div>';
poecFilterPresence[mtypes[j]] = !0
}
if (!is_blocked) {
if (fossilSets && iscomp) {
if (fossilSets.block[mtypes[j]]) {
addcls += ' block';
is_blocked = !0
} else {
if (bypasstypes[mtypes[j]] == undefined) {
var poedbid = poecd.mtypes.seq[poecd.mtypes.ind[mtypes[j]]].poedb_id;
if (fossilModsCalc[poedbid] != undefined) {
if (fossilModsCalc[poedbid].pos != 1) {
if (pos_mod == null) {
pos_mod = fossilModsCalc[poedbid].pos
} else {
if (poec_cFosMode == 'a') {
pos_mod += fossilModsCalc[poedbid].pos
} else {
pos_mod = pos_mod * fossilModsCalc[poedbid].pos
}
}
}
if (fossilModsCalc[poedbid].neg != 1) {
if (neg_mod == null) {
neg_mod = fossilModsCalc[poedbid].neg
} else {
neg_mod = neg_mod * fossilModsCalc[poedbid].neg
}
}
}
}
}
}
}
if (poec_cCataBase) {
var poedbid = poecd.mtypes.seq[poecd.mtypes.ind[mtypes[j]]].poedb_id;
if (poec_catRepo[poedbid] != undefined) {
if (poec_cCatalyst == poec_catIRepo[poedbid]) {
}
if (
has_cats.indexOf(
'|' + poecd.catalysts.seq[poec_catRepo[poedbid]].id_catalyst + '|'
) > - 1
) {
} else {
has_cats += poecd.catalysts.seq[poec_catRepo[poedbid]].id_catalyst + '|';
ctypes += '<div class=\'mt cat cmt' + poecd.catalysts.seq[poec_catRepo[poedbid]].id_catalyst + '\' title=\'Catalyst : ' + poecl.catalyst[poecd.catalysts.seq[poec_catRepo[poedbid]].id_catalyst] + '\'><img src=\'images/ui/catsml_' + poecd.catalysts.seq[poec_catRepo[poedbid]].id_catalyst + '.png\'/></div>'
}
}
}
if (peoc_cGraveyardEffect) {
if (peoc_cGraveyardEffect.weight) {
if (peoc_cGraveyardEffect.weight[mtypes[j]]) {
if (peoc_cGraveyardEffect.weight[mtypes[j]] >= 1) {
pos_mod += peoc_cGraveyardEffect.weight[mtypes[j]]
} else {
if (neg_mod == null) {
neg_mod = (1 / peoc_cGraveyardEffect.weight[mtypes[j]]) - 1
} else {
neg_mod += (1 / peoc_cGraveyardEffect.weight[mtypes[j]]) - 1
}
}
}
}
}
if (filter_is) {
if (filter_is.indexOf('|' + mtypes[j] + '|') > - 1) {
filter_found = !0
}
}
if (filter_non) {
if (filter_non.indexOf('|' + mtypes[j] + '|') > - 1) {
filter_block = !0
}
}
}
}
}
if (peoc_cGraveyardEffect) {
if (peoc_cGraveyardEffect.tiers) {
necropolis_tier_filtering += peoc_cGraveyardEffect.tiers
}
if (peoc_cGraveyardEffect.prefix && atype == 'prefix') {
pos_mod += peoc_cGraveyardEffect.prefix
}
if (peoc_cGraveyardEffect.suffix && atype == 'suffix') {
pos_mod += peoc_cGraveyardEffect.suffix
}
if (peoc_cGraveyardEffect.haunted && mgroup == 16) {
pos_mod += peoc_cGraveyardEffect.haunted
}
}
if (!filter_found && filter_is) {
filter_block = !0
}
if (blockGrp && !is_influence) {
addcls += ' block';
is_blocked = !0
}
if (unblockGrp && is_influence) {
addcls += ' block';
is_blocked = !0
}
if (filter_block) {
addcls += ' block';
is_blocked = !0
}
if (curEssence) {
var eblock = !1;
for (zy = 0; zy < amodgroups.length; zy++) {
for (zw = 0; zw < curEssence.modgroups.length; zw++) {
if (curEssence.modgroups[zw] == amodgroups[zy]) {
eblock = !0
}
}
}
if (curEssence.atype == atype && eblock) {
addcls += ' block';
is_blocked = !0
}
}
if (pos_mod != null || neg_mod != null) {
if (peoc_cGraveyardEffect && pos_mod !== null) {
pos_mod++
}
if (peoc_cGraveyardEffect && neg_mod !== null) {
neg_mod++
}
if (pos_mod == null) {
pos_mod = 1
}
if (neg_mod == null) {
neg_mod = 1
}
if (peoc_cGraveyardEffect) {
neg_mod = 1 / neg_mod
}
affect_mod = pos_mod * neg_mod
}
if (cat_mod > 0) {
affect_mod = 1 + parseFloat(cat_mod)
}
var modtags = '';
var modifier = 1;
if (affect_mod != null) {
if (affect_mod > 1) {
affect_mod = Math.round(affect_mod * 1000) / 1000;
modtags += '<div class=\'wt cat_' + poec_cCatalysts + ' mr sml_shadow\'>x' + affect_mod + '</div>'
} else {
if (affect_mod < 1) {
affect_mod = Math.round(affect_mod * 1000) / 1000;
var strval = String(affect_mod);
modtags += '<div class=\'wt ls sml_shadow\'>x' + strval.substring(1, strval.length) + '</div>'
}
}
modifier = modifier * affect_mod
}
var tweight = 0;
var oweight = 0;
var htiers = '';
var untiers = ntiers;
var tallweight = 0;
var mxlvl = 0;
var modreq = !1;
if (mgroup == 999) {
} else {
if (poec_cUniqueNotable) {
if (affixes[i].notable == '1') {
attrgroups += '|unique_notable';
addcls += ' amodgrp_unique_notable'
}
}
let cut_tiers = 0;
let cut_weight = 0;
let remaining_weight = 0;
if (necropolis_tier_filtering) {
//let cutting_pct = poec_getGraveyardCuttingPct(necropolis_tier_filtering);
let number_of_tiers = 0;
for (
var j = 0;
j < poecd.tiers[affixes[i].id_modifier][poec_cBase].length;
j++
) {
var htilvl = parseInt(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].ilvl);
if (poec_cILvl && htilvl > poec_cILvl) {
} else {
number_of_tiers++
}
}
// old tier cutting
//cut_tiers = Math.floor(number_of_tiers * cutting_pct);
// new tier cutting
cut_tiers = Math.floor(new_poec_getGraveyardCuttingPct(necropolis_tier_filtering*100, poecd.tiers[affixes[i].id_modifier][poec_cBase].length));
if (cut_tiers > 0) {
let tierNumber = 0;
for (
var j = 0;
j < poecd.tiers[affixes[i].id_modifier][poec_cBase].length;
j++
) {
tierNumber++;
var htilvl = parseInt(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].ilvl);
var bhtweight = parseInt(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].weighting);
if (poec_cILvl && htilvl > poec_cILvl) {
} else {
if (tierNumber <= cut_tiers) {
cut_weight += bhtweight
} else {
remaining_weight += bhtweight
}
}
}
}
}
var tierNumber = 0;
for (
var j = 0;
j < poecd.tiers[affixes[i].id_modifier][poec_cBase].length;
j++
) {
tierNumber++;
var htilvl = parseInt(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].ilvl);
var bhtweight = parseInt(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].weighting);
var sanceff = 0;
if (sanctifiedActive) {
sanceff = bhtweight * ((htilvl - 40) / 100)
}
var htweight = Math.round((bhtweight + sanceff) * modifier);
if (cut_weight > 0) {
if (tierNumber <= cut_tiers) {
} else {
}
}
if (peoc_cGraveyardEffect) {
if (peoc_cGraveyardEffect.tiers) {
//if (tierNumber > cut_tiers) {
var tier_multipl = necro_calc_tier_multiplier(peoc_cGraveyardEffect.tiers * 100, poecd.tiers[affixes[i].id_modifier][poec_cBase].length);
htweight = Math.round(htweight * tier_multipl * 1) / 1
//}
}
}
var otweight = parseInt(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].weighting);
oweight += otweight;
var addtcls = '';
if (poec_cBuild[affixes[i].id_modifier] != undefined) {
if (poec_cBuild[affixes[i].id_modifier] == htilvl) {
if (
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].is_influence == 0 ||
(
poecd.mgroups.seq[poecd.mgroups.ind[mgroup]].is_influence == 1 &&
iscomp == 1
)
) {
addtcls += ' bld';
foundBlds[affixes[i].id_modifier] = !0;
is_bld = !0
}
}
}
if ((poec_cILvl && htilvl > poec_cILvl) || tierNumber <= cut_tiers) {
addtcls = ' block';
untiers--;
remByILvl[atype].tiers++;
remByILvl[atype].weight += htweight
} else {
tweight += htweight;
if (htilvl > mxlvl) {
mxlvl = htilvl
}
if (poec_cSettings[affixes[i].id_modifier] != undefined) {
if (poec_cSettings[affixes[i].id_modifier] != null) {
if (poec_cSettings[affixes[i].id_modifier].l == htilvl) {
addtcls += ' req';
modreq = (ntiers - j);
foundReqs[affixes[i].id_modifier] = !0
}
}
}
if (poec_cImps[affixes[i].id_modifier] != undefined) {
if (poec_cImps[affixes[i].id_modifier] == ntiers - j) {
addtcls += ' bld';
foundImps[affixes[i].id_modifier] = !0
}
}
}
if (modreq) {
if ((ntiers - j) < modreq) {
addtcls += ' areq'
}
}
tallweight += htweight;
htiers += '<div class=\'affix line tier tier' + (ntiers - j) + ' ntiers' + ntiers + ' ilvl' + htilvl + ' aid' + affixes[i].id_modifier + addtcls + ' vex' + affixes[i].vex + '\' modgrp=\'' + attrgroups + '\' tier=' + (ntiers - j) + ' aid=\'' + affixes[i].id_modifier + '\' ilvl=\'' + poecd.tiers[affixes[i].id_modifier][poec_cBase][j].ilvl + '\' atype=\'' + atype + '\' onClick=\'poec_toggleReqAffix(this)\'>';
if (poecd.tiers[affixes[i].id_modifier][poec_cBase][j].alias) {
var ffname = poec_checkTrans(poecd.tiers[affixes[i].id_modifier][poec_cBase][j].alias)
} else {
var ffname = poecd_parseMName(
poec_checkTrans(affixes[i].name_modifier, poecl.mod[affixes[i].id_modifier]),
poecd.tiers[affixes[i].id_modifier][poec_cBase][j].nvalues,
affixes[i].id_modifier
)
}
if (poec_nBase.g == 11 || poec_nBase.g == 15) {
ffname = poec_parseMapName(ffname)
}
htiers += '<div class=\'label\'><div>' + ffname + '</div></div>';
htiers += '<div class=\'right\'><div>' + (ntiers - j) + '</div></div>';
htiers += '<div class=\'right\'><div>' + htilvl + '</div></div>';
if (iscomp || is_influence || forceweight || showweight) {
htiers += '<div class=\'right fcomp\'><div class=\'weight\' aval=\'' + htweight + '\' oval=\'' + otweight + '\'>' + htweight + '</div></div>';
if (poec_cVMode == 'd') {
htiers += '<div class=\'right fcomp\'><div class=\'apct\'></div></div>';
if (iscomp || is_influence) {
htiers += '<div class=\'right fcomp\'><div class=\'roll\'></div></div>'
}
}
}
if (atype == 'corrupted') {
htiers += '<div class=\'right fcomp\'><div class=\'vaal\'></div></div>'
} else {
htiers += '<div class=\'grp\'><div></div></div>'
}
htiers += '</div>'
}
}
var tmtypes = '';
if (iscomp) {
if (affixes[i].mtypes) {
if (affixes[i].mtypes.length > 1) {
tmtypes = affixes[i].mtypes;
var mtypes = affixes[i].mtypes.substring(1, affixes[i].mtypes.length - 1).split('|');
for (var j = 0; j < mtypes.length; j++) {
if (allMTypes[mtypes[j]] == undefined) {
allMTypes[mtypes[j]] = {
'weighting': 0,
'tiers': 0
}
}
allMTypes[mtypes[j]].weighting += tweight;
allMTypes[mtypes[j]].tiers += ntiers
}
}
}
}
if (!is_blocked) {
if (!is_bld) {
if (iscomp || forceweight) {
allWeight += tweight;
allTiers += untiers;
allMods++
}
gtiers += untiers;
if (affixes[i].vex == 0) {
gweight += tweight
}
}
if (!iscomp && poec_cMethod != 'annul') {
foundReqs[affixes[i].id_modifier] = !1
}
} else {
if (iscomp || poec_cMethod == 'annul') {
foundReqs[affixes[i].id_modifier] = !1
}
if (
poec_cMethod == 'annul' &&
(metasActive.nchg_pre || metasActive.nchg_suf)
) {
} else {
}
}
if (untiers != ntiers) {
var ftiers = untiers + ' <span class=\'obs\'>(' + ntiers + ')</span>'
} else {
var ftiers = ntiers
}
if (tallweight != tweight) {
var fweight = tweight + ' <span class=\'obs\'>(' + tallweight + ')</span>'
} else {
var fweight = tweight
}
if (mxlvl != milvl) {
var filvl = mxlvl + ' <span class=\'obs\'>(' + milvl + ')</span>'
} else {
var filvl = milvl
}
if (poec_cSettings[affixes[i].id_modifier] != undefined) {
if (poec_cSettings[affixes[i].id_modifier] != null) {
addcls += ' req'
}
}
if (poec_cBuild[affixes[i].id_modifier] != undefined) {
if (poec_cBuild[affixes[i].id_modifier] != null) {
addcls += ' bld'
}
}
if (poec_cImps[affixes[i].id_modifier] != undefined) {
if (poec_cImps[affixes[i].id_modifier] != null) {
addcls += ' bld'
}
}
if (ntiers <= 1 && mgroup != 999) {
var show_name = poecd_parseMName(
poec_checkTrans(affixes[i].name_modifier, poecl.mod[affixes[i].id_modifier]),
poecd.tiers[affixes[i].id_modifier][poec_cBase][0].nvalues,
affixes[i].id_modifier
)
} else {
var show_name = poecl.mod[affixes[i].id_modifier]
}
if (untiers <= 0) {
addcls += ' block'
}
if (affixes[i].meta != null) {
addcls += ' ismeta'
}
var addfos = '';
if (affixes[i].id_fossil) {
addfos = '<div class=\'fos\' title=\'' + poecl.fossil[affixes[i].id_fossil] + ' Fossil\'><img src=\'images/ui/fossil_' + affixes[i].id_fossil + '.png\'/></div>'
}
var addess = '';
if (mgroup == poec_cEssGrpID) {
if (
poecd.essences.seq[poecd.essences.ind[poecd.essences.dir[poec_cBase][affixes[i].id_modifier]]] == undefined
) {
} else {
var essname = poecd.essences.seq[poecd.essences.ind[poecd.essences.dir[poec_cBase][affixes[i].id_modifier]]].name_essence;
addess = '<div class=\'fos\' title=\'Essence of ' + essname + '\'><img src=\'images/ui/essence_' + essname + '.png\'/></div>'
}
}
if (poecd.mdefs[affixes[i].id_modifier] != undefined) {
addcls += ' mdef'
}
var mgshow = '';
for (zy = 0; zy < amodgroups.length; zy++) {
if (allBinds[amodgroups[zy]] == undefined) {
allBinds[amodgroups[zy]] = bind_cnt;
bindGrpCounts[atype][bind_cnt] = 0;
bind_cnt++
}
bindGrpCounts[atype][allBinds[amodgroups[zy]]]++;
addcls += ' bg' + allBinds[amodgroups[zy]];
mgshow += ',' + allBinds[amodgroups[zy]]
}
if (poec_cUniqueNotable) {
if (affixes[i].notable == '1') {
addcls += ' bg9999';
mgshow += ',N'
}
}
mgshow = mgshow.substring(1, mgshow.length);
var maeven = '';
if (
poecd.maeven.bmods[poec_cBase + '-' + affixes[i].id_modifier] !== undefined
) {
addcls += ' maeven';
maeven = '<div class=\'mvico\' mvid=\'' + poecd.maeven.bmods[poec_cBase + '-' + affixes[i].id_modifier] + '\'></div>'
}
var tamgcls = poec_getAMGcls(tamgs);
if (poec_nBase.g == 11 || poec_nBase.g == 15) {
show_name = poec_parseMapName(show_name)
}
vGroup += '<div class=\'affix line main maid' + affixes[i].id_modifier + ' ' + clstypes + ' ' + addcls + ' ' + tamgcls + ' vex' + affixes[i].vex + '\' amg=\'' + poecd.modifiers.seq[poecd.modifiers.ind[affixes[i].id_modifier]].amg + '\' amodgrp=\'' + attrgroups + '\' bindgrp=\'' + mgshow + '\' untiers=\'' + untiers + '\' oweight=\'' + oweight + '\' tweight=\'' + tweight + '\' aid=\'' + affixes[i].id_modifier + '\' ntiers=\'' + ntiers + '\' wgtmod=\'' + modifier + '\' atype=\'' + atype + '\' mtypes=\'' + tmtypes + '\' onClick=\'poec_toggleAffixTiers(this)\'>';
vGroup += '<div class=\'label\'><div>' + maeven + show_name + htypes + mmtgs + ctypes + modtags + addfos + addess + '</div></div>';
vGroup += '<div class=\'right\'><div>' + ftiers + '</div></div>';
vGroup += '<div class=\'right\'><div>' + filvl + '</div></div>';
if (iscomp || is_influence || forceweight || showweight) {
vGroup += '<div class=\'right fcomp\'><div class=\'weight\' aval=\'' + tweight + '\'>' + fweight + '</div></div>';
if (poec_cVMode == 'd') {
vGroup += '<div class=\'right fcomp\'><div class=\'apct\'></div></div>';
if (iscomp || is_influence) {
vGroup += '<div class=\'right fcomp\'><div class=\'roll\'></div></div>'
}
}
}
if (atype == 'corrupted') {
vGroup += '<div class=\'right fcomp\'><div class=\'vaal\'></div></div>'
} else {
vGroup += '<div class=\'grp\'><div class=\'num\'>' + mgshow + '</div></div>'
}
vGroup += '</div>';
vGroup += htiers
}
}
vGroup += '<div class=\'total line\'>';
vGroup += '<div class=\'label\'><div>Total</div></div>';
vGroup += '<div class=\'right\'><div class=\'gtiers\'>' + gtiers + '</div></div>';
vGroup += '<div class=\'right\'><div> </div></div>';
if (iscomp || is_influence || forceweight || showweight) {
vGroup += '<div class=\'right fcomp\'><div class=\'weight\' aval=\'' + gweight + '\'>' + gweight + '</div></div>';
if (poec_cVMode == 'd') {
vGroup += '<div class=\'right fcomp\'><div class=\'apct\'></div></div>';
if (iscomp || is_influence) {
vGroup += '<div class=\'right fcomp\'><div class=\'roll\'></div></div>'
}
}
}
if (atype == 'corrupted') {
vGroup += '<div class=\'right fcomp\'><div class=\'vaal\'></div></div>'
} else {
vGroup += '<div class=\'grp\'><div></div></div>'
}
vGroup += '</div>';
vGroup += '</div>';
if (nvaffix > 0) {
vHtml += vGroup
}
}
}
);
vHtml += '<input type=\'hidden\' id=\'allweight_' + atype + '\' value=\'' + allWeight + '\'/>';
vHtml += '<input type=\'hidden\' id=\'alltiers_' + atype + '\' value=\'' + allTiers + '\'/>';
vHtml += '<input type=\'hidden\' id=\'allmods_' + atype + '\' value=\'' + allMods + '\'/>';
vHtml += '<div class=\'hidden\' id=\'allmtypes_' + atype + '\'>' + JSON.stringify(allMTypes) + '</div>';
poec_endDiag('Process column ' + atype, dnow);
return vHtml
}