Ability icons from game-icons instead of emoji
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
57d11e30da
commit
bf013a1648
5 changed files with 86 additions and 35 deletions
|
|
@ -38,7 +38,8 @@ const COIN = glyph("two-coins", "#e0b04a"), ANY_FOOD = glyph("knife-fork", "#d9c
|
|||
|
||||
function iconise(content) {
|
||||
const entries = [...Object.values(content.items), ...content.skills, ...Object.values(content.classes),
|
||||
...Object.values(content.buildings), ...content.prayers, ...content.actions];
|
||||
...Object.values(content.buildings), ...content.prayers, ...content.actions,
|
||||
...Object.values(content.abilities), ...Object.values(content.enemy_abilities)];
|
||||
for (const entry of entries) if (entry.glyph) entry.icon = glyph(entry.glyph, entry.tint);
|
||||
return content;
|
||||
}
|
||||
|
|
@ -938,7 +939,7 @@ function abilityBar(me) {
|
|||
const potion = me.health_potion;
|
||||
return `<div class="ability-bar">${kit.join("")}${trade ? `<span class="ab-gap"></span>${tile(trade, true)}` : ""}
|
||||
<span class="ab-gap"></span><span class="ab potion ${potion ? "" : "locked"}" data-ab="potion"
|
||||
title="${esc(potion ? `${item(potion).name}: +${item(potion).drink} HP, once a fight under ${Math.round(C.potion_below * 100)}% · ${fmt(me.bank[potion])} left` : "No health potion")}">❤️${potion ? `<span class="swap-qty">${fmt(me.bank[potion])}</span>` : ""}</span></div>`;
|
||||
title="${esc(potion ? `${item(potion).name}: +${item(potion).drink} HP, once a fight under ${Math.round(C.potion_below * 100)}% · ${fmt(me.bank[potion])} left` : "No health potion")}">${item(potion || "health_potion_1").icon}${potion ? `<span class="swap-qty">${fmt(me.bank[potion])}</span>` : ""}</span></div>`;
|
||||
}
|
||||
|
||||
// Prayers you can switch on and off between swings, and the points left to pay for them.
|
||||
|
|
@ -966,18 +967,18 @@ function fightLine(e, f) {
|
|||
return `<li class="${tone}">${name(src)} → ${name(tgt)} <b>${n}</b>${kind === "crit" ? " crit" : ""}${what}</li>`;
|
||||
case "miss": return `<li class="muted">${name(src)} → ${name(tgt)} miss</li>`;
|
||||
case "block": return `<li class="${tgt === S.uid ? "good" : "muted"}">${name(tgt)} block${tgt === S.uid ? "" : "s"}${what}</li>`;
|
||||
case "absorb": return `<li class="${tgt === S.uid ? "good" : "muted"}">🔮 ${name(tgt)} soak${tgt === S.uid ? "" : "s"} ${n}</li>`;
|
||||
case "absorb": return `<li class="${tgt === S.uid ? "good" : "muted"}">${C.abilities.ward.icon} ${name(tgt)} soak${tgt === S.uid ? "" : "s"} ${n}</li>`;
|
||||
case "cast": return `<li class="${src?.[0] === "e" ? "warn" : tone}">${name(src)}${what}…</li>`;
|
||||
case "use": return `<li class="${tone}">${name(src)}${what}${tgt && tgt !== src ? ` → ${name(tgt)}` : ""}</li>`;
|
||||
case "stop": return `<li class="good">${name(src)} ✋ ${name(tgt)}${what}</li>`;
|
||||
case "heal": return `<li class="good">${label === "potion" ? `${name(tgt)} ❤️ potion` : `${name(src)}${what} → ${name(tgt)}`} +${n}</li>`;
|
||||
case "heal": return `<li class="good">${label === "potion" ? `${name(tgt)} ${item("health_potion_1").icon} potion` : `${name(src)}${what} → ${name(tgt)}`} +${n}</li>`;
|
||||
case "mend": return `<li class="muted">${name(tgt)} +${n}${what}</li>`;
|
||||
case "cc": return `<li class="good">${what} ${name(tgt)} held</li>`;
|
||||
case "free": return `<li class="muted">${name(tgt)} breaks free</li>`;
|
||||
case "die": return `<li class="good">${name(tgt)} falls</li>`;
|
||||
case "enrage": return `<li class="bad">😡 ${name(src)} enrages</li>`;
|
||||
case "wind": return `<li class="good">🌬️ Second wind! ${name(src)}</li>`;
|
||||
case "down": return `<li class="bad"><b>${src === S.uid ? "You're knocked out" : `${name(src)} is knocked out`}</b></li>`;
|
||||
case "enrage": return `<li class="bad">${C.abilities.unstoppable.icon} ${name(src)} enrages</li>`;
|
||||
case "wind": return `<li class="good">${C.prayers.find((p) => p.id === "second_wind").icon} Second wind! ${name(src)}</li>`;
|
||||
case "down": return `<li class="bad">${C.abilities.concuss.icon} <b>${src === S.uid ? "You're knocked out" : `${name(src)} is knocked out`}</b></li>`;
|
||||
case "left": return `<li class="muted">${name(src)} left</li>`;
|
||||
}
|
||||
return "";
|
||||
|
|
@ -1038,7 +1039,12 @@ function animateFight(now) {
|
|||
el.classList.toggle("out", !!u.out);
|
||||
el.querySelector("[data-u-bar]").style.width = `${Math.max(0, u.hp / u.top * 100)}%`;
|
||||
el.querySelector("[data-u-hp]").textContent = u.out === "left" ? "left" : t < u.from && !resting ? "joining…" : `${fmt(u.hp)} / ${fmt(u.top)}`;
|
||||
el.querySelector("[data-u-status]").textContent = u.out === "dead" ? "💀" : u.out === "down" ? "💫" : u.held ? "🌿" : u.enraged ? "😡" : "";
|
||||
const status = u.out === "dead" ? "" : u.out === "down" ? "concuss" : u.held ? "thornbind" : u.enraged ? "unstoppable" : "";
|
||||
const statusEl = el.querySelector("[data-u-status]");
|
||||
if (statusEl.dataset.key !== status) {
|
||||
statusEl.dataset.key = status;
|
||||
statusEl.innerHTML = status ? C.abilities[status].icon : "";
|
||||
}
|
||||
el.querySelector("[data-u-swing]").style.width = gone || t < u.from ? "0%" : `${Math.min(100, (t - (u.swung ?? u.from)) / u.every * 100)}%`;
|
||||
const cast = !gone && u.cast && t < u.cast.until ? u.cast : null;
|
||||
const spec = cast && (el.dataset.u[0] === "e" ? C.enemy_abilities : C.abilities)[cast.label];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue