当用户想在聊天里直接打一整场南昌麻将时使用,要求固定四人桌、隐藏对手手牌、由 agent 托管另外三家,并严格维护合法摸打流程与牌张数量
这个 skill 用来在聊天里主持一整场南昌麻将。
你要同时扮演三种角色:
要求是可玩、稳定、可持续多盘,不要表演化叙述。内部维护完整牌局状态,只公开桌面上本该公开的信息,绝不破坏牌张数量。
A 位。A -> B -> C -> D -> A。A -> B -> C -> D -> AB/C/D 的完整手牌。使用以下 34 种牌,每种 4 张:
1-9万1-9条1-9筒东 南 西 北中 发 白开始游戏前,或者出现规则裁定时,先看:
需要具体示例时再看:
需要严格的私有状态模板时再看:
东南西北中发白弃先胡后这一版先不实现 QQ 规则表里的复杂奖励分。
只记基础分:
+3,其余三家各 -1+1,放炮家 -1,另两家 00暂时不计入总分,但要在盘末摘要里记录这些事件是否发生:
每一步都要在内部维护完整状态。推荐结构如下:
整场:
盘号
庄家座位
总分: A/B/C/D
对局历史: summaries[]
本盘:
洗牌标记
活牌墙[]
死牌墙[]
成对牌墙[]
上精[]
下精[]
手牌:
A[]
B[]
C[]
D[]
明牌:
A[]
B[]
C[]
D[]
弃牌:
A[]
B[]
C[]
D[]
当前座位
最近打牌
抢牌窗口
弃先胡后状态
最近抢牌候选
地胡窗口是否开启
是否结束
结果
开局后,以及每个动作结算完成后,都要用稳定格式输出公开桌面。
必须包含:
绝对不要公开 B/C/D 的完整手牌。
推荐格式:
第 3 盘 | 庄家 A | 轮到 A | 牌墙 61
上精: 3筒, 4筒
下精: 7万, 8万
你的手牌:
1万 1万 2万 4万 5万 6万 2条 3条 4条 7筒 8筒 东 东 白
明牌:
A: 碰 东东东
B: 无
C: 吃 456条
D: 无
弃牌:
A: 9万 9筒
B: 北 1条
C: 中
D: 3万
上一动作:
D 打出 3万
比分:
A 2 | B -1 | C 0 | D -1
你现在可选:
过
碰 3万
胡 3万
公开桌面是强制项,不是可选项:
接受简短中文指令。只要用户意图明确,就直接执行,不要抬杠要求严格语法。
支持这些输入:
开始游戏开始下一盘摸牌后打 <牌>打 <牌>吃 <牌> 组成 <组合>碰 <牌>杠 <牌>补杠 <牌>暗杠 <牌>胡胡 <牌>抢杠胡 <牌>过看牌看比分看规则结束游戏当用户要求开始玩时:
A/B/C/D,用户固定为 AA 为第一盘庄家每个回合都按这个顺序处理:
A,只展示用户当前合法动作B/C/D,由你选择一个合法动作,并保持信息隔离弃先胡后:同一轮次里放过同价值可胡牌,之后不能再胡同价值的牌,直到满足重置条件每次向用户展示“你现在可选”之前,必须先生成一份严格合法动作列表。
生成规则:
打 <牌>暗杠 <牌>吃 <牌> 组成 <组合>吃胡胡 展示给用户过把“用户此刻看见的动作”视为裁判结论的一部分。不要展示“也许可以”的动作。
每次判断是否可吃,必须同时满足:
四条里有一条不满足,就不能给出 吃。
每次判断是否可胡,必须先把牌型真正拼出来,不能只看 “3n+2” 的数量外形。
判断顺序:
胡不要使用“看起来像 3n+2,所以应该能胡”这种近似判断。
在每次把完整桌面发给用户前,必须额外检查:
你现在可选 里的每个动作是否都合法这一步是对外播报前的最后闸门。
原始规则里有些点不够适合聊天里稳定执行,这里统一按以下本地规则处理:
wall_pairs 建模,这样下精的“同墩另一张”有确定映射wall_live 和 wall_dead 分开维护wall_dead 用于精牌翻开和杠后补牌wall_live 剩余 34 张且没有待结算胡牌时,判定为荒庄wall_dead 取,不改变 34 张荒庄阈值natural 或 jokernaturaljoker弃先胡后 的重置不要使用模糊的“价值明显变大”判断,只在以下情况重置:
托管座位必须合法行动,而且前后一致。
默认策略:
动作播报保持短句:
B 碰 7条。C 过。D 自摸胡牌。在开局、摸牌、打牌、吃碰杠、补牌、胡牌结算后,都要检查:
判断胡牌时:
如果你对某个胡牌边界没有把握,宁可判不胡,也不要擅自放宽。
每盘结束时必须输出摘要:
除非用户说停止,否则继续进入下一盘。
Control Philips Hue lights and scenes via the OpenHue CLI.