Menu categories for farming, cooking, prayer; lists sorted by level
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
e825518c5e
commit
2ca90c43c0
2 changed files with 27 additions and 23 deletions
|
|
@ -349,13 +349,17 @@ function skillPage(id) {
|
|||
if (id === "reconnaissance") html += `<div class="panel small muted">Reconnaissance on a coming threat raises its intel. Each level takes more than the last, a bigger band takes longer to read, and the sharpest news (the exact day and their camp) only comes in the last hours before they strike. The spymaster's guild adds to every point and gathers some on its own. The council & threats page shows the progress.</div>`;
|
||||
html += skillHappenings(id);
|
||||
const live = new Set(S.happenings.problems.map((p) => p.kind));
|
||||
const actions = C.actions.filter((a) => a.skill === id && (a.special !== "problem" || live.has(a.problem)));
|
||||
const groups = [...new Set(actions.map((a) => a.group).filter(Boolean))];
|
||||
const listed = C.actions.filter((a) => a.skill === id && (a.special !== "problem" || live.has(a.problem)));
|
||||
// Tabs and sections keep their designed order; what's inside each is sorted by the level it needs.
|
||||
const groups = [...new Set(listed.map((a) => a.group).filter(Boolean))];
|
||||
const actions = [...listed].sort((a, b) => a.level - b.level);
|
||||
if (groups.length > 2) {
|
||||
// Many tiers: one tab per tier, opening on the highest one you can work.
|
||||
// Many groups: one tab each.
|
||||
const open = (g) => actions.some((a) => a.group === g && !isLocked(a));
|
||||
let current = tabs[id] || remember(`tab.${id}`);
|
||||
if (!groups.includes(current)) current = [...groups].reverse().find(open) || groups[0];
|
||||
// Tier ladders open on the highest tier you can work; categories open on the first.
|
||||
const ladder = ["smithing", "leatherworking", "herblore"].includes(id);
|
||||
if (!groups.includes(current)) current = (ladder && [...groups].reverse().find(open)) || groups[0];
|
||||
const bar = groups.map((g) => `<button class="tab ${g === current ? "on" : ""} ${open(g) ? "" : "dim"}" data-tab="${id}" data-group="${esc(g)}">${esc(g)}</button>`).join("");
|
||||
// Ungrouped actions (the building site) stay above the tabs.
|
||||
const loose = actions.filter((a) => !a.group);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue