Validate equipment slot bonuses

This commit is contained in:
2026-07-05 15:40:09 +09:00
parent a8ae633ae3
commit ea9a1ca795

View File

@@ -67,6 +67,7 @@ function validateItemCatalog(errors, itemEntries, slotKeys) {
if (!validRanks.has(item.rank)) { if (!validRanks.has(item.rank)) {
errors.push(`${context}: unknown rank "${item.rank}"`); errors.push(`${context}: unknown rank "${item.rank}"`);
} }
validateSlotBonus(errors, item, context);
if (!Array.isArray(item.effects) || item.effects.length === 0) { if (!Array.isArray(item.effects) || item.effects.length === 0) {
errors.push(`${context}: effects must contain at least one entry`); errors.push(`${context}: effects must contain at least one entry`);
} else { } else {
@@ -92,6 +93,15 @@ function validateItemCatalog(errors, itemEntries, slotKeys) {
}); });
} }
function validateSlotBonus(errors, item, context) {
if (item.slot === 'weapon' && !Number.isInteger(item.attackBonus) && !Number.isInteger(item.strategyBonus)) {
errors.push(`${context}: weapon should provide attackBonus or strategyBonus`);
}
if (item.slot === 'armor' && !Number.isInteger(item.defenseBonus)) {
errors.push(`${context}: armor should provide defenseBonus`);
}
}
function validateUnitEquipment(errors, unitEntries, itemCatalog, itemKeys, equipmentSlots, equipmentExpToNext) { function validateUnitEquipment(errors, unitEntries, itemCatalog, itemKeys, equipmentSlots, equipmentExpToNext) {
unitEntries.forEach(({ context, unit }) => { unitEntries.forEach(({ context, unit }) => {
if (!unit?.equipment) { if (!unit?.equipment) {