diff --git a/server/sim/content/bands/battle.js b/server/sim/content/bands/battle.js index 77a02cc3..dd5a2aa7 100644 --- a/server/sim/content/bands/battle.js +++ b/server/sim/content/bands/battle.js @@ -16,8 +16,9 @@ // act1autochess_band13_buff 克莱门莎 崇高牺牲 a operator knocked down ⇒ +its tier (等阶) layers // (bond_add_type by_charlevel; no "已激活" in the text ⇒ requireActive false) // act1autochess_band16_buff 大帝 加急调派 "每次部署后再部署时间减少50%": every deployment of an operator stacks one -// redeploy ×(1 + respawn_time) for the rest of the battle [ASSUMED cumulative: -// "每次" — the first redeploy is −50 % under either reading] +// redeploy ×(1 + respawn_time) for the rest of the battle, with no cap (PRTS +// 卫戍协议:盟约 下半 / PRTS盟约记录 备注 "※该策略效果可无限叠加"; a 20-stack cap +// until 0.2.2 — GitHub #328, PR #329) // act1autochess_band17_buff 桑葚 药枚实验 at combat start the player's units on the front-most (最右边) column: each // attack has `prob` to gain 1 shield layer (max 1) // act1autochess_band18_buff 休谟斯 回收利用 a ground (地面) operator's skill ends ⇒ a random operator on its 4 @@ -106,7 +107,7 @@ const BY_KEY = { battle.on('deploy', (c) => { const u = c.unit; if (!isOp(u) || u.ownerId !== ps.playerId) return; - battle.addBuff(u, { key, mods: { redeployMul: mul }, refresh: 'stack', stacks: 1, maxStacks: 20, persist: true, allowDead: true }); + battle.addBuff(u, { key, mods: { redeployMul: mul }, refresh: 'stack', stacks: 1, maxStacks: Infinity, persist: true, allowDead: true }); }); }, diff --git a/test/content/bands.test.js b/test/content/bands.test.js index aeb3b2bc..783604f8 100644 --- a/test/content/bands.test.js +++ b/test/content/bands.test.js @@ -587,6 +587,18 @@ test('大帝 加急调派: every deployment halves the operator\'s next redeploy cover('band_emperor'); }); +test('大帝 加急调派 stacks without a cap: the 21st and 22nd deployments still halve the next redeploy (PRTS "※该策略效果可无限叠加"; GitHub #328, PR #329)', () => { + const h = fight({ band: 'band_emperor', units: [{ chessId: 't_op', row: 10, col: 4 }] }); + h.step(1); + const u = h.unit('t_op'); + for (let n = 1; n <= 22; n++) { + h.b.retreat(u, { reason: 'raid' }); + close(u.respawnAt - u.deathAt, 20 / 2 ** n, `after deployment ${n}`); + if (n < 22) assert.ok(h.b._deploy(u), `deployment ${n + 1}`); + } + assert.equal(u.findBuff('band:band_emperor').stacks, 22); +}); + test('桑葚 药枚实验: the units on the right-most column get a 25 % chance per attack of 1 shield layer (max 1)', () => { const ops = { t_op: op('t_op'), t_b: op('t_b') }; for (const [v, want] of [[0.24, 1], [0.26, 0]]) {