feedback5 WY: a newly merged elite 拉普兰德 is a new 拉普兰德 — its first manual refresh this round adds +8 even when its copies already fired (GitHub #169; the owner's decision of 2026-10-06)
garrison_123 「<刷新时>若为本回合首次主动刷新…此干员在整备区时也有效」 counts per piece (§21.1). No source says whether a merge resets the count; since 0.1.1 _mergeChess carried the copies' highest per-piece round count onto the elite ([ASSUMED], conservative), so two white copies that had fired this round made an elite that did not fire again. The owner decided on 2026-10-06 that a newly merged elite counts as a new 拉普兰德. server/match/player/acquire.js _mergeChess no longer carries the per-piece round counters (拉普兰德's refresh count, garrison:SERVER_GAIN_BOND_LAYER_BY_REFRESH_CNT:refreshes, is the only one): the elite starts at 0 like any new piece; an in-place promotion keeps its count. test/match/feedback1-meta.test.js: the test that locked the old inherit is updated on purpose (the elite adds +8 on its next refresh, once), and the case "two white copies refreshed this round, merge, refresh → +8" is new; both fail without the change. Docs: META (counter API, edge cases), PLAYING, the comments (PlayerState, pieces, effectsMeta, garrisons/meta), DESIGN §25.13.3 and the §25.10 table. Golden unchanged (no corpus match merges 拉普兰德 after a refresh in the same round).
This commit is contained in:
1 parent
269d7b0bcf
commit
661f1c074e
9 files changed
+79
-36
No files matched your search
@@ -493,8 +493,8 @@ export function makeCtx(m, ps, source, hook, ev = null) {
|
||||
counter: (k) => (Number.isFinite(ps.counters[k]) ? ps.counters[k] : 0),
|
||||
setCounter: (k, v) => { if (typeof k === 'string' && Number.isFinite(v)) ps.counters[k] = v; return ps.counters[k] ?? 0; },
|
||||
incCounter: (k, n = 1) => { if (typeof k !== 'string' || !Number.isFinite(n)) return 0; ps.counters[k] = (Number.isFinite(ps.counters[k]) ? ps.counters[k] : 0) + n; return ps.counters[k]; },
|
||||
/** Per-piece counter of the current round (0 in a new round / for a new piece; an elite merged this round keeps the
|
||||
* highest of its copies' — PlayerState.pieceRoundCount). */
|
||||
/** Per-piece counter of the current round (0 in a new round / for a new piece, an elite merged this round included —
|
||||
* PlayerState.pieceRoundCount). */
|
||||
pieceCounter: (uid, k) => { const l = ps.find(uid); return l ? ps.pieceRoundCount(l.piece, k) : 0; },
|
||||
incPieceCounter: (uid, k, n = 1) => { const l = ps.find(uid); return l ? ps.bumpPieceRoundCount(l.piece, k, n) : 0; },
|
||||
|
||||
|
||||
Reference in new issue
Block a user