二七王:下发面 multiple 按房间「爬坡」开关取值
arith.get_multiple_bycall 写死 get_base_bycall(call, false),被 mod.jiaofen(jiaofen/shangzhuang 两个包)与 export.get_deskinfo 的叫分/选主/埋牌/出牌四个阶段共 6 处使用,且都不传 roomtype。 后果:爬坡房里对局全程界面显示的是常规算子子数,与结算包 aset.multiple 不符。例如叫 45 分,界面显示 6 个子、结算按 design §7.3.1 实际是 7 个子。违反 server dev-guide「服务器权威 + 每个下发包必须携带前端界面所需的全部核心数据」与 engineering SSOT(同一业务数据只有一个计算处)。 移除 get_multiple_bycall 这层写死 climb=false 的兼容包装,全部 改为直接调 get_base_bycall(call, cfg.climb),cfg 由 class.config.parse(o_room.roomtype) 得到——与结算处 get_paiju_account 用的是同一个取值入口。get_deskinfo 内顺带复用 同一份 cfg,去掉 PushCards 分支里重复解析 roomtype 的调用。 test_rpc 新增 7 项:叫 45 分在常规房/爬坡房分别驱动到上庄,断言 上庄包与重连 ChooseMain 的 multiple 为 6/7,并与结算包 aset.multiple 逐一对齐。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -130,6 +130,31 @@ t.eq('埋牌 不查牌 闲家无liangpai', mpXian && mpXian.data.liangpai, undef
|
||||
t.eq('重连 可查牌 PushCards有seatlist', E.get_deskinfo(e.o_room, 1).PushCards.seatlist !== undefined, true);
|
||||
t.eq('重连 不查牌 PushCards无seatlist', E.get_deskinfo(en.o_room, 1).PushCards.seatlist, undefined);
|
||||
|
||||
// ===================== §7.3 下发面 multiple 必须随「爬坡」开关取值(与结算 aset.multiple 同源)=====================
|
||||
// 叫 45 分:常规算子基础子数 6(design §7.1「50 及以下统一 6」),爬坡 7(design §7.3.1)
|
||||
const A = require('../class.arith.js');
|
||||
function driveUp45(roomtype) {
|
||||
const pj = P.new({ paiju_list: [] }, 0);
|
||||
const c = setup(roomtype, pj);
|
||||
mod.jiaofen(pack(0, { call: 45 })); mod.jiaofen(pack(1, { call: 0 })); mod.jiaofen(pack(2, { call: 0 }));
|
||||
return { pj, c };
|
||||
}
|
||||
t.eq('算子 常规房 get_base_bycall(45,false)=6', A.get_base_bycall(45, false), 6);
|
||||
t.eq('算子 爬坡房 get_base_bycall(45,true)=7', A.get_base_bycall(45, true), 7);
|
||||
const n45 = driveUp45("00000"); // 常规算子
|
||||
const p45 = driveUp45("00010"); // 位3=1 爬坡
|
||||
const szm = c => c.sent.filter(m => m.rpc === 'shangzhuang')[0].data.multiple;
|
||||
t.eq('上庄包 常规房 multiple=6', szm(n45.c), 6);
|
||||
t.eq('上庄包 爬坡房 multiple=7', szm(p45.c), 7);
|
||||
// 重连各阶段同源:选主阶段(step2) ChooseMain.multiple
|
||||
t.eq('重连 常规房 ChooseMain.multiple=6', E.get_deskinfo(n45.c.o_room, 0).ChooseMain.multiple, 6);
|
||||
t.eq('重连 爬坡房 ChooseMain.multiple=7', E.get_deskinfo(p45.c.o_room, 0).ChooseMain.multiple, 7);
|
||||
// 与结算包 aset.multiple 一致(同一 call 同一房间规则)
|
||||
const aset45 = P.get_paiju_account(
|
||||
{ call: 45, banker: 0, flower: 1, cards: [], idx: 1, endtime: null, result: null, o_desk: { seatlist: [[0, []], [0, []], [0, []]], o_room: { roomtype: "00010", asetcount: 6 }, method: { get_desk_account: m => m } } },
|
||||
0, {}).data.aset.multiple;
|
||||
t.eq('爬坡房 下发面 multiple 与结算 aset.multiple 一致', szm(p45.c), aset45);
|
||||
|
||||
// ===================== §11 闲家出牌提示 tishi(只转发给对家,不校验)=====================
|
||||
const mkTip = (step, banker) => ({ step, banker });
|
||||
// 闲家1 发"踩"(tip=1),banker=0 → 对家=2;默认 seatlist fromid==座位号
|
||||
|
||||
Reference in New Issue
Block a user