feedback5 CB1: 佩佩's special refresh is the next manual refresh at its usual price, no free refresh comes with it (community report 「佩佩策略的特殊刷新也是要花钱的,不是免费」, item 20)

博学多通 "升级调度中心至2、4和6级后,获得1次特殊刷新:此次刷新出现的干员优先为<萨尔贡>干员" names no 免费 (德克萨斯's trait
says 「获得1次免费刷新」 for a free one); bands/meta.js read the blackboard's `price` 0 as a free refresh and granted one at
each of those level-ups (measured: level 2 → 1 free refresh, the special refresh cost 0, the next 1). Now the level-up
only marks the next manual refresh special: it costs the refresh price (unless another free refresh pays it) and fills
the chess slots with <萨尔贡> first as before. [ASSUMED] `cnt` / `price` 0 change nothing. Test: test/content/bands.test.js
(佩佩, fails on the parent). Golden unchanged (no corpus match levels a 佩佩 shop).
This commit is contained in:
sganggs committed 2026-10-07 02:08:24 +08:00
1 parent ebbbfe70ef
commit 96794c5cc7
2 files changed
+9 -5

No files matched your search

+6 -2
View File
@@ -12,7 +12,8 @@
// give_coin_in_round {round,coin} 老鲤 income of round `round` = coin (R1/R2 0, R3 15)
// prep_start_gain_chess_from_pool_in_round {round} 老鲤 round start of `round`: 1 chess of pool
// band_coin_cost_gain_random_char_by_shop_level 绮良 every coin_cnt funds spent → count random chess ≤ shop level
// up_shop_next_refresh_must_present_bond_char 佩佩 level-up to a level of lvlist → +1 free refresh (price 0) that prefers <bond>
// up_shop_next_refresh_must_present_bond_char 佩佩 level-up to a level of lvlist → the next manual refresh (its usual
// price) prefers <bond>
// gain_bond_char_per_round {round,preround,bond} 哈洛德 rounds round, round+preround, …: a <bond> chess (≤ shop level, else any tier)
// first_buy_in_round_char_price_change {price,bond} 休露丝 first <bond> chess of the round costs `price` (bought in the
// shop: onBuy — a free pick / grant never uses it up)
@@ -184,12 +185,15 @@ K.band_coin_cost_gain_random_char_by_shop_level = (ps) => ({
},
});
// 佩佩 博学多通 "升级调度中心至2、4和6级后,获得1次特殊刷新:此次刷新出现的干员优先为<萨尔贡>干员": the special refresh is the
// player's next manual refresh, paid as usual — the text gives no 免费 (德克萨斯's trait says 「获得1次免费刷新」 for a free
// one), and the community report of 2026-10-06 「佩佩策略的特殊刷新也是要花钱的,不是免费」. Until 0.2.0 a free refresh came
// with it (blackboard `price` 0 read as its price) [ASSUMED: `cnt` / `price` 0 change nothing].
K.up_shop_next_refresh_must_present_bond_char = (ps) => ({
onLevelUp(ctx, ev) {
const p = ps[0];
if (!list(p.lvlist).map(Number).includes(ev.level)) return;
ctx.incCounter('band:pepe:special', 1);
if (int(p.price, 0) === 0) ctx.grantFreeRefresh(1);
},
onRefresh(ctx) {
if (ctx.counter('band:pepe:special') <= 0) return;
+3 -3
View File
@@ -223,16 +223,16 @@ test('绮良 通关奖励: every 20 funds spent ⇒ 1 random operator of tier
cover('band_kirara');
});
test('佩佩 博学多通: upgrading to 2 / 4 / 6 gives 1 special (free) refresh whose operators are <萨尔贡> first', () => {
test('佩佩 博学多通: upgrading to 2 / 4 / 6 makes the next refresh special (paid as usual) — its operators are <萨尔贡> first', () => {
const seed = seedWithBond('sargonShip', 2, 2);
const { m, ps } = setup({ band: 'band_pepe', seed });
ps.shop.upgradePrice = 0;
assert.deepEqual(m.handle('p_0', { t: 'g.levelUp' }), OK);
assert.equal(ps.shop.level, 2);
assert.equal(ps.shop.freeRefreshes, 1);
assert.equal(ps.shop.freeRefreshes, 0, 'no free refresh comes with it (community report of 2026-10-06)');
const f0 = ps.funds;
assert.deepEqual(m.handle('p_0', { t: 'g.refresh' }), OK);
assert.equal(ps.funds, f0, 'free');
assert.equal(ps.funds, f0 - m.gd.refreshPrice, 'the usual refresh price');
const chess = ps.shop.slots.filter((sl) => sl && sl.kind === 'chess');
assert.ok(chess.length >= 3 && chess.every((sl) => DATA.chess[sl.id].bonds.includes('sargonShip')), 'all 萨尔贡');
assert.equal(ps.counters['band:pepe:special'], 0, 'consumed');