0.2.5-dev: merge claude/036-touch
# Conflicts: # CHANGELOG.md # docs/history/0.2.5.md
This commit is contained in:
commit
a8ff5e7c1d
22 files changed
+294
-59
No files matched your search
@@ -44,6 +44,18 @@ test('user Given strategy medics When inspecting them Then their healing tiles r
|
||||
}
|
||||
});
|
||||
|
||||
test('user Given a prepared map medic When its card opens Then its board-space range is visible before battle', () => {
|
||||
for (const id of ['char_605_cmedic', 'char_613_acmedc']) {
|
||||
const unit = medic(id, { id: -1, uid: -1, area: 'board', x: 2, y: 10, dir: 'RIGHT' });
|
||||
const r = inspectRange({ ...args(unit), target: { kind: 'unit', unit, prepMapChar: true }, showPrep: true,
|
||||
field: { prep: false }, snapshot: [99, 18, 3, 1202, 1202] });
|
||||
assert.deepEqual([r.row, r.col, r.dir], [10, 2, 'RIGHT'], 'use the original board coordinates even on the mirrored boss half');
|
||||
assert.equal(rangeTiles(r.grid, r.row, r.col, r.dir).length, 12);
|
||||
assert.equal(inspectRange({ ...args(unit), target: { kind: 'unit', unit }, showPrep: true }), null,
|
||||
'other unit cards do not become prep-range previews');
|
||||
}
|
||||
});
|
||||
|
||||
test('user Given a moving battle medic When its current range changes Then the overlay follows live range and position', () => {
|
||||
const r = inspectRange(args(medic(), { field: { prep: false }, snapshot: [71, 8, 10, 120, 200], live: { range: tokens.char_613_acmedc.skill.rangeGrid } }));
|
||||
assert.equal(r.grid.length, 18);
|
||||
|
||||
@@ -134,15 +134,19 @@ test('GitHub #260: Touch / 预备干员-医疗 cards say 干员 · 医疗 and sh
|
||||
['char_613_acmedc', ['恳切福音', '攻击距离<@ba.vup>+2</>', '攫升', '治疗目标时使其获得3点技力', '超脱', '获得5点技力', '恢复友方单位生命', '初始', '持续']],
|
||||
['char_605_cmedic', ['治疗强化·β型', '攻击力<@ba.vup>+50%</>', '攻击提升', '攻击力+4%', '恢复友方单位生命']],
|
||||
]) {
|
||||
// a battle click resolves the unit as its token record
|
||||
const detail = resolveDetail({ kind: 'unit', unit: { id: 91, side: 'ally', defId: id } }, new Map());
|
||||
assert.equal(detail.type, 'token');
|
||||
const text = allText(TokenDetail(detail));
|
||||
assert.match(text, /干员/);
|
||||
assert.match(text, /医疗/);
|
||||
assert.doesNotMatch(text, /召唤物/);
|
||||
for (const w of want) assert.ok(text.includes(w), `${id}: ${w}`);
|
||||
assert.equal(/PRTS 修正/.test(text), id === 'char_613_acmedc', `${id}: the 低于一半 line only under 恳切福音`);
|
||||
for (const unit of [
|
||||
{ id: 91, side: 'ally', defId: id }, // battle click
|
||||
{ id: -1, uid: -1, kind: 'token', side: 'ally', defId: id, area: 'board', x: 2, y: 10 }, // preparation preview click
|
||||
]) {
|
||||
const detail = resolveDetail({ kind: 'unit', unit, prepMapChar: unit.id === -1 }, new Map());
|
||||
assert.equal(detail.type, 'token');
|
||||
const text = allText(TokenDetail(detail));
|
||||
assert.match(text, /干员/);
|
||||
assert.match(text, /医疗/);
|
||||
assert.doesNotMatch(text, /召唤物/);
|
||||
for (const w of want) assert.ok(text.includes(w), `${id}: ${w}`);
|
||||
assert.equal(/PRTS 修正/.test(text), id === 'char_613_acmedc', `${id}: the 低于一半 line only under 恳切福音`);
|
||||
}
|
||||
}
|
||||
// the record keeps the official sentence; the line under it is what touchGospel does (strictly below hp_ratio)
|
||||
assert.match(TOKENS.char_613_acmedc.skill.desc, /不高于一半/);
|
||||
|
||||
Reference in new issue
Block a user