This commit is contained in:
33333-33333 2026-06-28 16:59:53 +09:00
commit cefa2ace5a
27 changed files with 1275 additions and 314 deletions

View file

@ -42,12 +42,18 @@ function lineageTreeNodeHtml(n, x, y) {
const reason = briefReason ? ` / ${briefReason}` : "";
const rawTags = live?.personalityTags ? live.personalityTags() : (Array.isArray(n?.personalityTags) ? n.personalityTags : []);
const tags = rawTags.slice();
const displayTags = tags.slice(0, 4);
const tagText = tags.length ? ` / ${tags.join(" ")}` : "";
const title = escapeHtml(`${n?.name || "\u4e0d\u660e"} / \u4e16\u4ee3 ${n?.generation || "?"} / ${status}${reason}${tagText}`);
const deathLine = briefReason ? `<span class="death-reason">${escapeHtml(briefReason)}</span>` : "";
const tagLine = tags.length ? `<span class="family-personality-tags">${tags.map(tag => `<em>${escapeHtml(tag)}</em>`).join("")}</span>` : "";
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="寿命 / 体格 / 攻撃 / 速度 / 勝率"><b>寿</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "life")))} <b>体</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "size")))} <b>攻</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "attack")))} <b>速</b>${escapeHtml(lineageSignedPercentText(lineageGeneticPercentFromNode(n, "speed")))} <b>勝</b>${escapeHtml(lineageFightRateText(n))}</span>` : "";
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 cls = n ? ((live || n.alive) ? "alive" : "dead") : "missing";
const childCls = (n?.parents || []).length ? " child" : "";
const iconBaseScale = live
@ -382,7 +388,7 @@ function lineageLayoutRows(rows, idSet) {
const SIBLING_GAP = 32;
const GROUP_GAP = 52;
const PARTNER_GROUP_GAP = 24;
const ROW_GAP = 138;
const ROW_GAP = 108;
const LEFT_PAD = 82;
const TOP_PAD = 44;
const RIGHT_PAD = 48;