feedback1 WB: bounty drafts follow the official R3 / R9 / R11 drafts (33 screenshots of 11 official matches)
R3 offers one of the official sets of six "接下来两场作战" cards (3 x I, 2 x II, 1 x III): the 7 sets seen, the 3 unseen slots built by their rule. R9 offers a seen group of named bosses filled to 6 with the cheap boss bounties and 源石虫·特训. R11 of 绝境 / 终极 is 悬赏决策, 机密商店 or 战术决策 (never 道具补给); its bounty is one 特异III giant and 5 "下场战斗" cards, one per faction series. Cards no official draft showed (the multi-round cards, enemyeffect_3_*, five boss bounties) are no longer drafted. The screenshot readings are a test fixture; tests check every reading against the data and every generated draft against the official structure.
This commit is contained in:
1 parent
6e0c26af9e
commit
8ac1aaadbb
9 files changed
+542
-241
No files matched your search
@@ -10,7 +10,7 @@ import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { DATA } from '../match/harness.js';
|
||||
import { GameData } from '../../server/match/gamedata.js';
|
||||
import { generateDraft, cardView } from '../../server/match/choices.js';
|
||||
import { generateDraft, cardView, bountyCard } from '../../server/match/choices.js';
|
||||
import { createRng } from '../../server/sim/rng.js';
|
||||
|
||||
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
|
||||
@@ -37,12 +37,15 @@ test('#4 the draft overlay shows each bounty card\'s battles in the official col
|
||||
// the official multi-round cards: two battles, in the two-battle cards' blue (the user's call after playtest #6)
|
||||
const MULTI = new Set(DATA.choices.cards.bounty.filter((c) => c.multiRound).map((c) => c.effectId));
|
||||
const seen = new Set();
|
||||
// R3 offers the two-battle cards, R9 the next-battle and multi-round ones (player feedback #2, choices.js bountyDraftHalf)
|
||||
// R3 offers the two-battle cards, R9 the next-battle ones (player feedback #2: the official drafts); no draft offers a
|
||||
// multi-round card any more, so one (教鞭's 法术大师A2·多轮战术特训) goes through the same card view on its own
|
||||
const multiCard = bountyCard(gd, DATA.choices.cards.bounty.find((c) => c.effectId === 'enemyeffect_2'));
|
||||
for (let seed = 1; seed <= 80 && seen.size < 3; seed++) {
|
||||
const round = seed % 2 ? 3 : 9;
|
||||
const d = generateDraft(gd, createRng(seed * 977 + 3), round, { stageId: 'act2autochess_m02' });
|
||||
assert.equal(d.family, 'bounty', `co-op 绝境 R${round} is a bounty draft`);
|
||||
const sp = normalizeSp({ family: d.family, cards: d.cards.map(cardView), order: ['p_0'], turn: 'p_0', picks: {}, taken: {} }, [{ playerId: 'p_0' }]);
|
||||
const cards = seed === 1 ? [...d.cards.slice(0, 5), { ...multiCard, idx: 5, family: 'bounty' }] : d.cards;
|
||||
const sp = normalizeSp({ family: d.family, cards: cards.map(cardView), order: ['p_0'], turn: 'p_0', picks: {}, taken: {} }, [{ playerId: 'p_0' }]);
|
||||
for (const card of sp.cards) {
|
||||
const view = resolveSpCard(card, sp.family);
|
||||
const segs = parseRichText(view.desc).filter((s) => s.text);
|
||||
|
||||
Reference in new issue
Block a user