54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
/**
|
||
* 命令行:按「当前盘面 grid_number 排布」与 T1/T2/T4/T5 约束生成 DiceRewardConfig 表 JSON(不含保存)。
|
||
* 用法:pnpm tsx scripts/generate-dice-reward-index.ts [t1Min] [t2Min] [t4Fixed] [t5Fixed]
|
||
* 默认:3 5 1 1(T4/T5 为顺、逆加权条数固定值)
|
||
*
|
||
* 生成逻辑见 src/views/plugin/dice/reward_config/utils/generateIndexByRules.ts
|
||
*/
|
||
|
||
import {
|
||
buildRowsFromTiers,
|
||
computeBoardFrequencies,
|
||
DEFAULT_TIER_REAL_EV_STANDARDS,
|
||
generateTiers,
|
||
summarizeCounts
|
||
} from '../src/views/plugin/dice/reward_config/utils/generateIndexByRules'
|
||
|
||
const grids = [
|
||
20, 27, 24, 10, 5, 15, 8, 22, 30, 23, 16, 12, 13, 7, 17, 9, 21, 26, 6, 29, 19, 11, 25, 14, 28, 18
|
||
]
|
||
|
||
const args = process.argv.slice(2).map((x) => parseInt(x, 10))
|
||
const t1 = Number.isFinite(args[0]) ? args[0] : 3
|
||
const t2 = Number.isFinite(args[1]) ? args[1] : 5
|
||
const x4 = Number.isFinite(args[2]) ? args[2] : 1
|
||
const x5 = Number.isFinite(args[3]) ? args[3] : 1
|
||
|
||
const constraints = {
|
||
t1MinCw: t1,
|
||
t2MinCw: t2,
|
||
t4FixedCw: x4,
|
||
t5FixedCw: x5,
|
||
t1MinCcw: t1,
|
||
t2MinCcw: t2,
|
||
t4FixedCcw: x4,
|
||
t5FixedCcw: x5
|
||
}
|
||
|
||
const gen = generateTiers({ grids, constraints })
|
||
if (gen.ok === false) {
|
||
console.error(gen.message)
|
||
process.exit(1)
|
||
}
|
||
|
||
const board = computeBoardFrequencies(grids)
|
||
if (board === null) {
|
||
console.error('computeBoardFrequencies failed')
|
||
process.exit(1)
|
||
}
|
||
|
||
const rows = buildRowsFromTiers(grids, gen.tiers, DEFAULT_TIER_REAL_EV_STANDARDS)
|
||
const sc = summarizeCounts(board, gen.tiers)
|
||
|
||
console.log(JSON.stringify({ weighted: { cw: sc.cw, ccw: sc.ccw }, rows }, null, 2))
|