feedback1 cell: a 突变细胞 transformation gains the new operator into the 整备区 and frees the carrier's tile (pointed out in PR #2)
Official gameplay footage (bilibili BV1vzyVBuEN9 at about 8:24, BV1Qkw1zMEoR at about 7:25) shows the
next prep with the carrier's tile empty, one more deployment left, and the returned equipment plus the
new tier+1 operator on the bench, deployed by hand afterwards. That is the PRTS 备注 read as written
("生效时,原干员销毁,获得一名高一阶的随机初始干员"): a destroy followed by a gain. The closed PR #2 made
the same claim from a playtest.
- PlayerState.transformChess: the carrier is destroyed wherever it stands (board tile freed, summons
removed, copies back to the pool); its equipment, the cell included, returns to the hand first
(overflow temp, auto-merge); then the new operator is gained through acquireChess like any gained
operator (hand, overflow temp, the no-room rule of every gain; no summon card until it is deployed).
The returnItems option is gone (the cell's built-in was its only caller).
- A merge the gain completes merges like any gained copy: the elite takes a consumed deployed copy's
tile, else the hand. _mergeChess loses fromKey / fromDir, so the destroyed carrier's tile never
counts (PR #2 had kept that path; not adopted); audit.js drops its exception for it.
- builtinMeta, ctx.transform, items/meta.js and bot.js comments follow. Bots and AI 托管 deploy the
gained operator in their normal lineup step (no bot change needed; a real co-op round pins it).
- ITEM_RULES note and implFormula for the item card; data/items.json rebuilt with build-data --offline.
- Tests: facing, merge, playtest6-elite-to-board and items no longer pin the kept tile; feedback1-meta
covers a deployed and a bench carrier, hand full -> temp, hand and temp full, a merge with and
without a deployed copy (never the carrier's tile), 商业包装方案's count on the returned item, and bots /
AI 托管 redeploying; feedback1-cell checks the new note.
This commit is contained in:
1 parent
842e1e13c4
commit
91c9b21d7f
14 files changed
+400
-178
No files matched your search
@@ -17,8 +17,9 @@
|
||||
// prep handlers buy / sell / refresh / levelUp pay exactly price / +sell price / refresh price (free first) / level
|
||||
// price, the level rises by one and its price resets to the next base; Ready only with an empty temp
|
||||
// merges a merge consuming a deployed copy puts the elite on that copy's tile (of several, the first in deploy
|
||||
// order legal for it — board.js mergeTile; a transformed piece's own tile counts) with its facing, else
|
||||
// into the hand / temp; the deploy count never grows (PRTS 卫戍协议/帮助, user playtest #6 follow-up)
|
||||
// order legal for it — board.js mergeTile; a 突变细胞 carrier destroyed before the gain is no copy) with
|
||||
// its facing, else into the hand / temp; the deploy count never grows (PRTS 卫戍协议/帮助, user playtest
|
||||
// #6 follow-up)
|
||||
// combat start nothing overdue in temp, everyone ready, funds lost (carry bands excepted), unfrozen shop cleared,
|
||||
// one field per alive player
|
||||
// drafts every seat holds an allowed band with LP = totalHp; 机变: one card per alive player, card ↔ picker
|
||||
@@ -227,15 +228,14 @@ export function attachAudit(m, { invariants = true, limit = 200 } = {}) {
|
||||
});
|
||||
// merges (PRTS 卫戍协议/帮助 "若消耗已部署至作战区的干员,则发送至作战区对应位置", user playtest #6 follow-up): with a
|
||||
// deployed copy among the consumed ones the elite stands on the first such tile in deploy order that is legal for
|
||||
// it (the incoming piece's own tile when a transformation merged it in place), with that copy's facing; else in the
|
||||
// hand / temp. A merge never grows the deploy count. Every owned normal copy is consumed (merges are immediate).
|
||||
wrap(ps, '_mergeChess', function (orig, baseId, incoming, opts) {
|
||||
// it, with that copy's facing; else in the hand / temp (the incoming copy is never deployed: a 突变细胞
|
||||
// transformation destroyed its carrier before the gain, so that freed tile is no copy's). A merge never grows the
|
||||
// deploy count. Every owned normal copy is consumed (merges are immediate).
|
||||
wrap(ps, '_mergeChess', function (orig, baseId, incoming) {
|
||||
const tiles = new Map(); // tile key → facing of the copy standing there
|
||||
for (const [k, p] of ps.board) if (p.kind === 'chess' && !gd.isGolden(p.id) && gd.baseIdOf(p.id) === baseId) tiles.set(k, pieceDir(p));
|
||||
if (opts && opts.fromKey) tiles.set(opts.fromKey, pieceDir({ dir: opts.fromDir }));
|
||||
// a transformation (transformChess) detached its deployed carrier before the merge: it still counts as deployed
|
||||
const deployed0 = ps.deployCount + (opts && opts.fromKey ? 1 : 0);
|
||||
const elite = orig(baseId, incoming, opts);
|
||||
const deployed0 = ps.deployCount;
|
||||
const elite = orig(baseId, incoming);
|
||||
if (elite) check('merge', () => {
|
||||
const id = ps.playerId;
|
||||
const loc = ps.find(elite.uid);
|
||||
|
||||
Reference in new issue
Block a user