From ca671f2fd00d9bfecd93394ff139efd37dd452bd Mon Sep 17 00:00:00 2001 From: sganggs Date: Thu, 8 Oct 2026 19:16:34 +0800 Subject: [PATCH] =?UTF-8?q?feedback7=20R22-GHSIM:=20=E5=A4=A7=E5=B8=9D=20?= =?UTF-8?q?=E5=8A=A0=E6=80=A5=E8=B0=83=E6=B4=BE=20stacks=20without=20a=20c?= =?UTF-8?q?ap=20=E2=80=94=20the=2021st=20deployment=20and=20every=20later?= =?UTF-8?q?=20one=20still=20halve=20the=20next=20redeploy=20(GitHub=20#328?= =?UTF-8?q?,=20PR=20#329=20by=20@IceCodeNew,=20re-implemented);=20golden:?= =?UTF-8?q?=20unchanged?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PRTS 卫戍协议:盟约 下半 and its PRTS盟约记录: 「我方干员每次部署后再部署时间减少50%」 with the note 「※该策略效果可无限 叠加」; the data's buff (act1autochess_band16_buff, respawn_time −0.5) names no cap. The per-deployment ×0.5 stack was capped at 20 (since the initial import, no source); maxStacks is now unbounded, the multiplicative stack itself is unchanged (the "each deployment" reading was [ASSUMED] cumulative — the 无限叠加 note backs it). Golden: unchanged (no corpus battle deploys one operator more than 20 times under 大帝). --- server/sim/content/bands/battle.js | 7 ++++--- test/content/bands.test.js | 12 ++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) 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]]) {