From fad06eade41c4c9017778df5e1b2b6d0a76177a5 Mon Sep 17 00:00:00 2001 From: Wickedness Date: Sun, 5 Jul 2026 12:46:58 +0900 Subject: [PATCH] Clamp initial equipment experience --- scripts/verify-equipment-catalog-data.mjs | 11 +++++++---- src/game/data/scenario.ts | 14 +++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/verify-equipment-catalog-data.mjs b/scripts/verify-equipment-catalog-data.mjs index 7b8cf52..5692afa 100644 --- a/scripts/verify-equipment-catalog-data.mjs +++ b/scripts/verify-equipment-catalog-data.mjs @@ -11,7 +11,7 @@ const server = await createServer({ try { const { battleScenarios } = await server.ssrLoadModule('/src/game/data/battles.ts'); const { campaignRecruitUnits } = await server.ssrLoadModule('/src/game/data/scenario.ts'); - const { itemCatalog, equipmentSlots } = await server.ssrLoadModule('/src/game/data/battleItems.ts'); + const { itemCatalog, equipmentSlots, equipmentExpToNext } = await server.ssrLoadModule('/src/game/data/battleItems.ts'); const errors = []; const itemEntries = Object.entries(itemCatalog); @@ -19,13 +19,14 @@ try { const slotKeys = new Set(equipmentSlots); validateItemCatalog(errors, itemEntries, slotKeys); - validateUnitEquipment(errors, collectBattleUnits(battleScenarios), itemCatalog, itemKeys, equipmentSlots); + validateUnitEquipment(errors, collectBattleUnits(battleScenarios), itemCatalog, itemKeys, equipmentSlots, equipmentExpToNext); validateUnitEquipment( errors, (campaignRecruitUnits ?? []).map((unit) => ({ context: `campaignRecruitUnits/${unit.id}`, unit })), itemCatalog, itemKeys, - equipmentSlots + equipmentSlots, + equipmentExpToNext ); if (errors.length) { @@ -91,7 +92,7 @@ function validateItemCatalog(errors, itemEntries, slotKeys) { }); } -function validateUnitEquipment(errors, unitEntries, itemCatalog, itemKeys, equipmentSlots) { +function validateUnitEquipment(errors, unitEntries, itemCatalog, itemKeys, equipmentSlots, equipmentExpToNext) { unitEntries.forEach(({ context, unit }) => { if (!unit?.equipment) { errors.push(`${context}: missing equipment`); @@ -114,6 +115,8 @@ function validateUnitEquipment(errors, unitEntries, itemCatalog, itemKeys, equip } if (!Number.isInteger(state.exp) || state.exp < 0) { errors.push(`${context}: invalid ${slot} exp ${state.exp}`); + } else if (state.level < 9 && state.exp >= equipmentExpToNext(state.level)) { + errors.push(`${context}: ${slot} exp ${state.exp} should be below next level threshold ${equipmentExpToNext(state.level)}`); } }); }); diff --git a/src/game/data/scenario.ts b/src/game/data/scenario.ts index fee2651..9c55cdf 100644 --- a/src/game/data/scenario.ts +++ b/src/game/data/scenario.ts @@ -10205,7 +10205,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 3, stats: { might: 102, intelligence: 70, leadership: 88, agility: 74, luck: 65 }, equipment: { - weapon: { itemId: 'iron-spear', level: 2, exp: 90 }, + weapon: { itemId: 'iron-spear', level: 2, exp: 89 }, armor: { itemId: 'reinforced-lamellar', level: 2, exp: 46 }, accessory: { itemId: 'bravery-token', level: 1, exp: 0 } }, @@ -10226,7 +10226,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 3, stats: { might: 102, intelligence: 70, leadership: 88, agility: 74, luck: 65 }, equipment: { - weapon: { itemId: 'iron-spear', level: 2, exp: 90 }, + weapon: { itemId: 'iron-spear', level: 2, exp: 89 }, armor: { itemId: 'reinforced-lamellar', level: 2, exp: 46 }, accessory: { itemId: 'bravery-token', level: 1, exp: 0 } }, @@ -10310,7 +10310,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 5, stats: { might: 104, intelligence: 64, leadership: 82, agility: 96, luck: 66 }, equipment: { - weapon: { itemId: 'iron-spear', level: 2, exp: 90 }, + weapon: { itemId: 'iron-spear', level: 2, exp: 89 }, armor: { itemId: 'lamellar-armor', level: 2, exp: 44 }, accessory: { itemId: 'bravery-token', level: 1, exp: 0 } }, @@ -10331,7 +10331,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 5, stats: { might: 104, intelligence: 64, leadership: 82, agility: 96, luck: 66 }, equipment: { - weapon: { itemId: 'iron-spear', level: 2, exp: 90 }, + weapon: { itemId: 'iron-spear', level: 2, exp: 89 }, armor: { itemId: 'lamellar-armor', level: 2, exp: 44 }, accessory: { itemId: 'bravery-token', level: 1, exp: 0 } }, @@ -10352,7 +10352,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 3, stats: { might: 102, intelligence: 74, leadership: 90, agility: 75, luck: 65 }, equipment: { - weapon: { itemId: 'iron-spear', level: 2, exp: 92 }, + weapon: { itemId: 'iron-spear', level: 2, exp: 89 }, armor: { itemId: 'reinforced-lamellar', level: 2, exp: 48 }, accessory: { itemId: 'war-manual', level: 1, exp: 0 } }, @@ -10373,7 +10373,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 3, stats: { might: 102, intelligence: 74, leadership: 90, agility: 75, luck: 65 }, equipment: { - weapon: { itemId: 'iron-spear', level: 2, exp: 92 }, + weapon: { itemId: 'iron-spear', level: 2, exp: 89 }, armor: { itemId: 'reinforced-lamellar', level: 2, exp: 48 }, accessory: { itemId: 'war-manual', level: 1, exp: 0 } }, @@ -10394,7 +10394,7 @@ export const seventeenthBattleUnits: UnitData[] = [ move: 3, stats: { might: 74, intelligence: 92, leadership: 82, agility: 80, luck: 68 }, equipment: { - weapon: { itemId: 'short-bow', level: 2, exp: 90 }, + weapon: { itemId: 'short-bow', level: 2, exp: 89 }, armor: { itemId: 'cloth-armor', level: 2, exp: 44 }, accessory: { itemId: 'war-manual', level: 1, exp: 0 } },