29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {
|
|
campaignJobAtSection,
|
|
playableClassesForJob,
|
|
scaleEnemy,
|
|
} from './rogue-campaign.mjs';
|
|
|
|
test('도적 전직 시점: 1섹션 Rogue, 2섹션 2차, 3섹션부터 3차', () => {
|
|
assert.equal(campaignJobAtSection('thief', 1), 'rogue');
|
|
assert.equal(campaignJobAtSection('thief', 2), 'thief');
|
|
assert.equal(campaignJobAtSection('thief', 3), 'thiefmaster');
|
|
assert.equal(campaignJobAtSection('assassin', 2), 'assassin');
|
|
assert.equal(campaignJobAtSection('assassin', 5), 'hermit');
|
|
});
|
|
|
|
test('3차 직업은 자기 계보 카드만 사용', () => {
|
|
assert.deepEqual(playableClassesForJob('thiefmaster'), ['rogue', 'thief', 'thiefmaster']);
|
|
assert.deepEqual(playableClassesForJob('hermit'), ['rogue', 'assassin', 'hermit']);
|
|
});
|
|
|
|
test('섹션 난이도는 3차 이후 더 빠르게 증가', () => {
|
|
const enemy = { maxHp: 100, intents: [{ kind: 'Attack', value: 10 }, { kind: 'Debuff', value: 2 }] };
|
|
const scaled = scaleEnemy(enemy, 3, () => 0);
|
|
assert.equal(scaled.maxHp, 114);
|
|
assert.equal(scaled.intents[0].value, 11);
|
|
assert.equal(scaled.intents[1].value, 2);
|
|
});
|