- {([
- {
- slot: "Accessory",
- name: "accName",
- desc: "accDesc",
- namePh: "Item name",
- descPh: "Description / effect",
- },
- {
- slot: "Armor",
- name: "armName",
- desc: "armDesc",
- namePh: "Item name",
- descPh: "Defense bonus / effect",
- },
- {
- slot: "Main Hand",
- name: "mhName",
- desc: "mhDesc",
- namePh: "Weapon name",
- descPh: "Damage / effect",
- },
- {
- slot: "Off-Hand",
- name: "ohName",
- desc: "ohDesc",
- namePh: "Weapon / shield",
- descPh: "Damage / effect",
- },
- ] as const).map(({ slot, name, desc, namePh, descPh }) => (
+ {(
+ [
+ {
+ slot: "Accessory",
+ name: "accName",
+ desc: "accDesc",
+ namePh: "Item name",
+ descPh: "Description / effect",
+ },
+ {
+ slot: "Armor",
+ name: "armName",
+ desc: "armDesc",
+ namePh: "Item name",
+ descPh: "Defense bonus / effect",
+ },
+ {
+ slot: "Main Hand",
+ name: "mhName",
+ desc: "mhDesc",
+ namePh: "Weapon name",
+ descPh: "Damage / effect",
+ },
+ {
+ slot: "Off-Hand",
+ name: "ohName",
+ desc: "ohDesc",
+ namePh: "Weapon / shield",
+ descPh: "Damage / effect",
+ },
+ ] as const
+ ).map(({ slot, name, desc, namePh, descPh }) => (
{slot}
@@ -1160,75 +1169,128 @@ export default function CharacterSheet() {
placeholder="Items, notes, lore…"
style={{ minHeight: 200 }}
/>
-
- {weaponPickerOpen && (() => {
- const allWeapons = (weaponsFile as WeaponsFile).weapons;
- const allArmorShields = (armorShieldsFile as ArmorShieldsFile).armor_shields;
- type PickerItem =
- | { kind: "weapon"; data: WeaponTemplate }
- | { kind: "armor"; data: ArmorShieldTemplate };
- const allItems: PickerItem[] = [
- ...allWeapons.map(w => ({ kind: "weapon" as const, data: w })),
- ...allArmorShields.map(a => ({ kind: "armor" as const, data: a })),
- ];
- const categories = ["all", ...Array.from(new Set(allItems.map(i => i.data.category))).sort()];
- const visible = weaponCategory === "all" ? allItems : allItems.filter(i => i.data.category === weaponCategory);
- const formatLine = (item: PickerItem) => {
- if (item.kind === "weapon") {
- const w = item.data;
- return `• ${w.name}: Acc ${w.accuracy}, Dmg ${w.damage}${w.description ? ` | ${w.description}` : ""}${w.cost > 0 ? ` (${w.cost}z)` : ""}`;
- } else {
- const a = item.data;
- const init = a.initiative ?? a.initative ?? 0;
- return `• ${a.name}: DEF ${a.defense}, MDEF ${a.magic_defense}, Init ${init}${a.description ? ` | ${a.description}` : ""}${a.cost > 0 ? ` (${a.cost}z)` : ""}`;
- }
- };
- return (
-
setWeaponPickerOpen(false)}>
-
e.stopPropagation()}>
-
- Choose equipment
-
-
-
- {categories.map(cat => (
-
- );
- })()}
+ );
+ })()}
@@ -1275,7 +1337,9 @@ export default function CharacterSheet() {
))}
-