choose
setPatch({ count: Math.max(1, Number(e.target.value) || 1) })}
className="bg-neutral-800 text-sm rounded px-2 py-1 border border-neutral-700 w-16"
/>
total from:
Skill pool:
{Array.isArray(t.skillPool) && (
{SKILLS.map((s) => {
const arr = t.skillPool as Skill[];
const on = arr.includes(s);
return (
);
})}
)}
Also eligible tools (comma):
setPatch({ toolPool: next })}
placeholder="thieves' tools"
className="bg-neutral-800 text-sm rounded px-2 py-1 border border-neutral-700 flex-1"
/>
);
})()}
{eff.target.kind === "skillProficiencyChoice" && (() => {
const t = eff.target;
const setCount = (n: number) =>
updateTarget(i, { kind: "skillProficiencyChoice", count: n, from: t.from });
const toggleFrom = (s: Skill) => {
const next = t.from.includes(s) ? t.from.filter((x) => x !== s) : [...t.from, s];
updateTarget(i, { kind: "skillProficiencyChoice", count: t.count, from: next });
};
return (
);
})()}
{(eff.target.kind === "armorProficiency" ||
eff.target.kind === "weaponProficiency" ||
eff.target.kind === "toolProficiency" ||
eff.target.kind === "language") && (