This commit is contained in:
33333-33333 2026-06-30 22:30:37 +09:00
commit 7455d630fc
82 changed files with 2179 additions and 900 deletions

View file

@ -38,7 +38,7 @@ function lineageTreeNodeHtml(n, x, y) {
const gen = n?.generation ? `G${n.generation}` : "G?";
const rawReason = !n?.alive && n?.deathReason ? String(n.deathReason) : "";
const briefReason = familyDeathReasonLabel(rawReason, entity);
const status = n?.alive ? familyStatusText(n) : (briefReason || "死亡");
const status = n?.alive ? familyStatusText(n) : (briefReason || "\u6B7B\u4EA1");
const reason = briefReason ? ` / ${briefReason}` : "";
const rawTags = live?.personalityTags ? live.personalityTags() : (Array.isArray(n?.personalityTags) ? n.personalityTags : []);
const tags = rawTags.slice();
@ -48,12 +48,12 @@ function lineageTreeNodeHtml(n, x, y) {
const deathLine = "";
const tagLine = displayTags.length ? `<span class="family-personality-tags">${displayTags.map(tag => `<em>${escapeHtml(tag)}</em>`).join("")}</span>` : "";
const champion = !!(live?.isTarinaiChampion || n?.isTarinaiChampion);
const statLine = n ? `<span class="family-genetic-stats" title="寿命 / 体格 / 攻撃 / 速度">
<span><b>寿</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "life")))}</span>
<span><b>体</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "size")))}</span>
<span><b>攻</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "attack")))}</span>
<span><b>速</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "speed")))}</span>
</span><span class="family-fight-stat" title="けんか勝率 / 回数"><b>勝</b>${escapeHtml(lineageFightRateText(n))}</span>` : "";
const statLine = n ? `<span class="family-genetic-stats" title="\u5BFF\u547D / \u4F53\u683C / \u653B\u6483 / \u901F\u5EA6">
<span><b>\u5BFF</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "life")))}</span>
<span><b>\u4F53</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "size")))}</span>
<span><b>\u653B</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "attack")))}</span>
<span><b>\u901F</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "speed")))}</span>
</span><span class="family-fight-stat" title="\u3051\u3093\u304B\u52DD\u7387 / \u56DE\u6570"><b>\u52DD</b>${escapeHtml(lineageFightRateText(n))}</span>` : "";
const cls = n ? ((live || n.alive) ? "alive" : "dead") : "missing";
const childCls = (n?.parents || []).length ? " child" : "";
const iconBaseScale = live
@ -64,8 +64,8 @@ function lineageTreeNodeHtml(n, x, y) {
return `<div class="family-node tree-node ${cls}${childCls}${champion ? " champion" : ""}"${data} title="${title}" style="left:${Math.round(x)}px;top:${Math.round(y)}px;--family-icon-scale:${iconScale}">
<div class="family-portrait" aria-hidden="true"><img src="${img}" loading="lazy" decoding="async" alt=""></div>
<div class="family-copy">
<strong>${champion ? "♛ " : ""}${name}</strong>
<span>${escapeHtml(gen)} / ${escapeHtml(status)}${champion ? " / 王者" : ""}</span>
<strong>${champion ? "\u265B " : ""}${name}</strong>
<span>${escapeHtml(gen)} / ${escapeHtml(status)}${champion ? " / \u738B\u8005" : ""}</span>
${statLine}
${deathLine}
${tagLine}