forked from xziino/ff14-mitigator
Planer: Durchschnittliche MaxHP (ohne Tanks) neben unmitigiertem Schaden anzeigen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
5dc61754f2
commit
19922d79aa
@ -279,6 +279,11 @@
|
|||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
color: var(--t2);
|
color: var(--t2);
|
||||||
}
|
}
|
||||||
|
.mechanic-avg-hp {
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--t3);
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
.mechanic-assignments {
|
.mechanic-assignments {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@ -355,6 +355,17 @@ function renderPlanDetail(plan) {
|
|||||||
renderInfoPanel(plan);
|
renderInfoPanel(plan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function avgNonTankMaxHp(plan) {
|
||||||
|
const roster = plan.playerRoster ?? [];
|
||||||
|
const jobComp = plan.jobComposition ?? [];
|
||||||
|
const hps = jobComp
|
||||||
|
.map((job, i) => ({ job, maxHp: roster[i]?.maxHp ?? 0 }))
|
||||||
|
.filter(p => p.job && JOB_ROLE[p.job] !== 'tank' && p.maxHp > 0)
|
||||||
|
.map(p => p.maxHp);
|
||||||
|
if (!hps.length) return 0;
|
||||||
|
return Math.round(hps.reduce((s, v) => s + v, 0) / hps.length);
|
||||||
|
}
|
||||||
|
|
||||||
function renderMechanicListHtml(plan) {
|
function renderMechanicListHtml(plan) {
|
||||||
if (plan.mechanics.length === 0) {
|
if (plan.mechanics.length === 0) {
|
||||||
return `
|
return `
|
||||||
@ -369,6 +380,7 @@ function renderMechanicListHtml(plan) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const activeJobSet = new Set(plan.jobComposition.filter(j => j));
|
const activeJobSet = new Set(plan.jobComposition.filter(j => j));
|
||||||
|
const avgHp = avgNonTankMaxHp(plan);
|
||||||
|
|
||||||
return plan.mechanics.map(m => {
|
return plan.mechanics.map(m => {
|
||||||
const sorted = sortedAssignments(m.assignments);
|
const sorted = sortedAssignments(m.assignments);
|
||||||
@ -408,7 +420,7 @@ function renderMechanicListHtml(plan) {
|
|||||||
${m.phase ? `<div class="mechanic-phase">${escHtml(m.phase)}</div>` : ''}
|
${m.phase ? `<div class="mechanic-phase">${escHtml(m.phase)}</div>` : ''}
|
||||||
<div class="mechanic-name">${escHtml(m.name)}</div>
|
<div class="mechanic-name">${escHtml(m.name)}</div>
|
||||||
${m.unmitigatedDamage
|
${m.unmitigatedDamage
|
||||||
? `<div class="mechanic-dmg">${fmtNumber(m.unmitigatedDamage)} unmitigiert</div>`
|
? `<div class="mechanic-dmg">${fmtNumber(m.unmitigatedDamage)} unmitigiert${avgHp ? ` <span class="mechanic-avg-hp">∅ ${fmtNumber(avgHp)} HP</span>` : ''}</div>`
|
||||||
: ''
|
: ''
|
||||||
}
|
}
|
||||||
<div class="mechanic-assignments">${assignHtml}</div>
|
<div class="mechanic-assignments">${assignHtml}</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user