二七王:不可查牌模式屏蔽出牌历史(design §9 消歧义 + 代码门控)
design §9 原文把可查牌模式的四项功能列成无序列表,不可查牌只写 「不提供以上任何查看 / 明牌功能」,随后展开的例子却只提了主牌数量、 对子结构、明牌按钮、亮牌统计,没提第一条「已经打出的牌可以查看」, 导致"以上"的范围有歧义。代码据此照发出牌历史,前一轮核对把它记为 待确认项(01 表 D6)。 规则设计者已确认:**不可查牌模式必须屏蔽出牌历史,只有可查牌模式 才能查看**。据此: - design §9 改写为无歧义表述:先给出「查牌 = 回看不该随时可见的信 息」的定义,把可查牌的四项功能编号列出(① 出牌历史 ② 报无主后的 他家主牌数/对子数 ③ 明牌 ④ 庄家亮牌),不可查牌逐条对应说明一项 都不提供;并补一段边界说明——**当前这一轮桌面上的牌两种模式下都 必须可见**,否则后出的人无从跟牌、无从判断本轮谁最大,断线重连同 理(当前轮照常恢复,往轮历史按模式开关给不给)。 - class.export.js:get_deskinfo 的 PushCards.pushlist 构建与排序整 体移入 `if (!cfg.nocheck)`,不查牌时不带该属性;当前轮桌面牌由 PushCards.playproc.cards 恢复,两种模式都有。 - 协议文档:pushlist 补「仅可查牌模式下有此属性」,playproc 补「两 种模式恒有」及其原因。 - 合规文档:01 表 D6 由「待确认/未修」改为已确认并修复,从「尚未处 置」移出;02 测试计划断言总数 357→361 并新增该维度覆盖行。 test_rpc 新增 4 项:不查牌房无 pushlist、可查牌房有 pushlist,且两 种模式下当前轮桌面牌 playproc.cards 都能恢复。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -198,13 +198,17 @@ function mkPushlist() {
|
||||
// seat0 第1轮补出:主5(flower1) 与 副♥A(flower3),主牌必须排在副牌前
|
||||
const zhu5 = id(1, 1, 5), fuA = id(1, 3, 1);
|
||||
for (const c of [zhu5, fuA]) { pj.cards[c].dealowner = 1; pj.cards[c].playround = 1; }
|
||||
// 当前轮(第5轮)桌面上的牌:两种查牌模式下都必须能恢复(design §9 边界说明)
|
||||
const cur = id(2, 1, 10);
|
||||
pj.cards[cur].dealowner = 1; pj.cards[cur].playround = 5;
|
||||
pj.playproc.cards[0] = [cur];
|
||||
pj.method = {
|
||||
get_seat_cards: s => P.get_seat_cards(pj, s),
|
||||
get_jian_grade: () => P.get_jian_grade(pj),
|
||||
get_burycard: () => P.get_burycard(pj),
|
||||
get_liangpai: () => null
|
||||
};
|
||||
return { pj, zhu5, fuA };
|
||||
return { pj, zhu5, fuA, cur };
|
||||
}
|
||||
const pl = mkPushlist();
|
||||
const plRoom = setup("00000", pl.pj).o_room;
|
||||
@@ -215,6 +219,14 @@ t.eq('重连 pushlist 不含 undefined', di.some(r => r.some(x => x === undefine
|
||||
// 第1轮 seat0 的牌:主5 必须排在副♥A 之前(按 paiju.flower=1 排序,而非泄漏的大王花色5)
|
||||
t.eq('重连 pushlist 按本局主牌花色排序(主5在副A前)',
|
||||
di[0][0].indexOf(pl.zhu5) < di[0][0].indexOf(pl.fuA), true);
|
||||
// §9 不查牌模式:出牌历史属于「查牌」,一律不下发;但当前轮桌面上的牌必须照常恢复
|
||||
const pl2 = mkPushlist();
|
||||
const pc2 = E.get_deskinfo(setup("00001", pl2.pj).o_room, 1).PushCards;
|
||||
t.eq('重连 不查牌 无出牌历史 pushlist', pc2.pushlist, undefined);
|
||||
t.eq('重连 不查牌 当前轮桌面牌仍恢复(playproc.cards)', pc2.playproc.cards[0], [pl2.cur]);
|
||||
const pc1 = E.get_deskinfo(plRoom, 1).PushCards;
|
||||
t.eq('重连 可查牌 有出牌历史 pushlist', Array.isArray(pc1.pushlist), true);
|
||||
t.eq('重连 可查牌 当前轮桌面牌也在', pc1.playproc.cards[0], [pl.cur]);
|
||||
|
||||
// ===================== §7.3 下发面 multiple 必须随「爬坡」开关取值(与结算 aset.multiple 同源)=====================
|
||||
// 叫 45 分:常规算子基础子数 6(design §7.1「50 及以下统一 6」),爬坡 7(design §7.3.1)
|
||||
|
||||
Reference in New Issue
Block a user