二七王:下发面 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:
@@ -63,6 +63,9 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
return null;
|
||||
}
|
||||
var paiju = o_room.o_desk.method.curr_paiju();
|
||||
//本局房间可选规则:爬坡改变「叫分 → 基础子数」的取值(design §7.3.1),
|
||||
//各阶段下发的 multiple 必须与结算包 aset.multiple 用同一套规则
|
||||
var cfg = cls_youle_erqiwang_config.parse(o_room.roomtype);
|
||||
var deskinfo = {};
|
||||
deskinfo.count = o_room.asetcount; //总局数
|
||||
deskinfo.idx = paiju.idx; //当前局数
|
||||
@@ -82,7 +85,7 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
//当前叫分
|
||||
deskinfo.CallRun.nowcall = paiju.method.get_callgrade_value();
|
||||
//当前叫分倍数
|
||||
deskinfo.CallRun.multiple = cls_youle_erqiwang_arith.get_multiple_bycall(deskinfo.CallRun.nowcall);
|
||||
deskinfo.CallRun.multiple = cls_youle_erqiwang_arith.get_base_bycall(deskinfo.CallRun.nowcall, cfg.climb);
|
||||
//所有玩家的叫分情况
|
||||
deskinfo.CallRun.call = [null, null, null];
|
||||
deskinfo.CallRun.call[0] = paiju.method.get_seat_callgrade(0);
|
||||
@@ -96,7 +99,7 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
//庄家叫分
|
||||
deskinfo.ChooseMain.call = paiju.call;
|
||||
//庄家叫分倍数
|
||||
deskinfo.ChooseMain.multiple = cls_youle_erqiwang_arith.get_multiple_bycall(paiju.call);
|
||||
deskinfo.ChooseMain.multiple = cls_youle_erqiwang_arith.get_base_bycall(paiju.call, cfg.climb);
|
||||
//选主倒计时
|
||||
deskinfo.ChooseMain.countdown = o_room.o_desk.method.get_countdown_xuanzhu();
|
||||
//底牌:暗牌只有庄家可见(70分的3秒亮牌是上庄时的一次性事件,重连不重放)
|
||||
@@ -117,7 +120,7 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
//庄家叫分
|
||||
deskinfo.BuryCards.call = paiju.call;
|
||||
//庄家叫分倍数
|
||||
deskinfo.BuryCards.multiple = cls_youle_erqiwang_arith.get_multiple_bycall(paiju.call);
|
||||
deskinfo.BuryCards.multiple = cls_youle_erqiwang_arith.get_base_bycall(paiju.call, cfg.climb);
|
||||
//埋牌倒计时
|
||||
deskinfo.BuryCards.countdown = o_room.o_desk.method.get_countdown_maipai();
|
||||
//底牌:暗牌只有庄家可见
|
||||
@@ -135,7 +138,7 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
//庄家叫分
|
||||
deskinfo.PushCards.call = paiju.call;
|
||||
//庄家叫分倍数
|
||||
deskinfo.PushCards.multiple = cls_youle_erqiwang_arith.get_multiple_bycall(paiju.call);
|
||||
deskinfo.PushCards.multiple = cls_youle_erqiwang_arith.get_base_bycall(paiju.call, cfg.climb);
|
||||
//出牌倒计时
|
||||
deskinfo.PushCards.countdown = o_room.o_desk.method.get_countdown_chupai();
|
||||
//主牌花色
|
||||
@@ -154,7 +157,7 @@ var cls_youle_erqiwang_export = cls_youle_erqiwang_export || {
|
||||
//当前的出牌情况
|
||||
deskinfo.PushCards.playproc = paiju.playproc;
|
||||
//座位列表(报副统计)与亮牌:仅可查牌模式下展示(§9/§8.2)
|
||||
if (!cls_youle_erqiwang_config.parse(o_room.roomtype).nocheck){
|
||||
if (!cfg.nocheck){
|
||||
deskinfo.PushCards.seatlist = paiju.seatlist;
|
||||
if (seat != paiju.banker){
|
||||
var _lp = paiju.method.get_liangpai();
|
||||
|
||||
Reference in New Issue
Block a user