Show current effect averages in damage optimizer
This commit is contained in:
@@ -673,6 +673,18 @@ function countActiveEffects() {
|
||||
return state.pieces.reduce((count, piece) => count + (piece.effects || []).filter((effect) => effect.type).length, 0);
|
||||
}
|
||||
|
||||
function summarizeCurrentEffects() {
|
||||
const summary = Object.fromEntries(EFFECTS.map((effect) => [effect.id, { count: 0, total: 0 }]));
|
||||
for (const piece of state.pieces) {
|
||||
for (const effect of piece.effects || []) {
|
||||
if (!effect.type) continue;
|
||||
summary[effect.type].count += 1;
|
||||
summary[effect.type].total += clampEffectValue(effect.type, Number(effect.value));
|
||||
}
|
||||
}
|
||||
return summary;
|
||||
}
|
||||
|
||||
function createEmptyEffectTotals() {
|
||||
return Object.fromEntries(EFFECTS.map((effect) => [effect.id, 0]));
|
||||
}
|
||||
@@ -715,10 +727,21 @@ function formatOptimalSuggestion(counts) {
|
||||
.join(", ");
|
||||
}
|
||||
|
||||
function formatCurrentEffectAverages(summary) {
|
||||
return Object.entries(summary)
|
||||
.filter(([, data]) => data.count > 0)
|
||||
.map(([effectId, data]) => {
|
||||
const effect = effectById(effectId);
|
||||
return `${data.count}x avg ${fmt(data.total / data.count)}% ${effect.label.toLowerCase()}`;
|
||||
})
|
||||
.join(", ");
|
||||
}
|
||||
|
||||
function renderOptimalDamageSetup(totals, currentDps) {
|
||||
const effectCount = countActiveEffects();
|
||||
const optimum = findOptimalDamageSetup(totals, effectCount, state.combatStyle);
|
||||
const delta = percentChange(currentDps, optimum.dps);
|
||||
const currentEffectSummary = summarizeCurrentEffects();
|
||||
|
||||
$("#optimumEffectCount").textContent = `${effectCount} effect${effectCount === 1 ? "" : "s"}`;
|
||||
$("#optimumDps").textContent = fmt(optimum.dps);
|
||||
@@ -727,6 +750,9 @@ function renderOptimalDamageSetup(totals, currentDps) {
|
||||
$("#optimumSuggestion").textContent = effectCount
|
||||
? formatOptimalSuggestion(optimum.counts)
|
||||
: "Add effects to your current build to see an optimized max-roll damage mix.";
|
||||
$("#currentEffectAverages").textContent = effectCount
|
||||
? formatCurrentEffectAverages(currentEffectSummary)
|
||||
: "No current effects entered.";
|
||||
}
|
||||
|
||||
function updateEffectImpactHints(totals, currentDps) {
|
||||
|
||||
Reference in New Issue
Block a user