Clamp initial equipment experience
This commit is contained in:
@@ -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)}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user