feat: carry sortie doctrine through campaign battles

This commit is contained in:
2026-07-10 14:14:54 +09:00
parent 3caf03fe2f
commit 4a5a73a220
8 changed files with 792 additions and 125 deletions

View File

@@ -10,10 +10,26 @@ try {
const {
compareSortieSynergy,
evaluateSortieSynergy,
firstPursuitRolePreviewSummaries,
firstPursuitSynergyBattleId,
sortieBondBonusForLevel
sortieBondBonusForLevel,
sortieRoleEffectSummaries
} = await server.ssrLoadModule('/src/game/data/sortieSynergy.ts');
const expectedRoleEffectSummaries = {
front: '일반 공격 피해 -8%(최소 1) · 반격 +20%',
flank: '초반 2턴 이동 +1 · 공격 피해 +10%',
support: '공격 책략 +10% · 회복 +2'
};
assert(
JSON.stringify(sortieRoleEffectSummaries) === JSON.stringify(expectedRoleEffectSummaries),
`Expected the three generic sortie role effects to retain their combat values and copy: ${JSON.stringify(sortieRoleEffectSummaries)}`
);
assert(
firstPursuitRolePreviewSummaries === sortieRoleEffectSummaries,
'Expected the first-pursuit role preview export to remain a compatibility alias.'
);
const boundaryCases = [
[19, 0, 0],
[20, 3, 0],
@@ -98,7 +114,7 @@ try {
);
assert(JSON.stringify({ members, bonds }) === frozenInputs, 'Expected synergy evaluation not to mutate its inputs.');
console.log('Verified sortie synergy previews, bond thresholds, role coverage, and first-pursuit trinity.');
console.log('Verified generic sortie role effects, synergy previews, bond thresholds, role coverage, and first-pursuit trinity.');
} finally {
await server.close();
}