本文档旨在为 AI 代理(Agent)提供一套结构化、逻辑严密且无歧义的狼人杀游戏规则说明。适用于 AI 作为玩家参与游戏,或作为法官(Moderator)主持游戏。
- 游戏类型:社交推理、隐藏身份、阵营对抗。
- 玩家人数:通常为 6-12 人(本规则以标准的 12 人局为例)。
- 阵营划分:
- 狼人阵营 (Werewolf Team):隐藏在好人中,夜间击杀好人。
- 好人阵营 (Good Team):
- 神职 (Gods):拥有特殊技能。
- 平民 (Villagers):无特殊技能,依靠推理投票。
- 胜利条件:
- 狼人胜:屠边规则(常见)—— 杀死所有神职 或 杀死所有平民;屠城规则 —— 杀死所有好人。
- 好人胜:放逐所有狼人。
游戏循环进行,直到某一方达成胜利条件。每个循环包含 夜晚 (Night) 和 白天 (Day) 两个阶段。
- 状态:所有玩家闭眼,信息不公开。
- 行动顺序(典型顺序,可根据板子调整):
- 狼人行动:共同商量并选择一名玩家击杀(
kill_target)。若狼人内部意见不一,通常默认空刀或随机,AI 主持需 predefined 规则。 - 守卫行动(若有):选择一名玩家守护(
protect_target),不可连续两晚守护同一人。 - 女巫行动(若有):知晓当晚被击杀者。可选择使用解药(
save_target)或毒药(poison_target)。同一晚不能同时使用两瓶药。 - 预言家行动(若有):查验一名玩家的身份(返回
Werewolf或Good)。 - 其他神职行动:如猎人、白痴、骑士等(视具体板子而定)。
- 狼人行动:共同商量并选择一名玩家击杀(
- 结算逻辑:
- 若
kill_target==protect_target,则无人死亡(平安夜)。 - 若
kill_target被save_target救赎,则无人死亡。 - 若
poison_target存在,该玩家死亡。 - 死亡信息在白天公布。
- 若
- 公布昨夜情况:法官宣布死亡玩家名单(或宣布平安夜)。
- 遗言 (Last Words):
- 首夜死亡玩家通常有遗言。
- 后续死亡玩家是否有遗言取决于规则(通常无,或仅被放逐者有)。
- 竞选警长 (Sheriff Election)(可选但常见):
- 玩家竞选,发言,投票选出警长。
- 警长拥有 1.5 票投票权,且决定发言顺序。
- 警长死亡可移交警徽或撕毁警徽。
- 公聊讨论 (Discussion):玩家轮流发言,分析局势。
- 放逐投票 (Voting):
- 所有存活玩家投票选出一名玩家放逐。
- 得票最多者出局(若平票,通常进入 PK 发言后再投,或无人出局)。
- 被放逐者通常可留遗言。
- 进入夜晚:重复上述流程。
AI 需准确理解每个角色的技能触发时机、限制及优先级。
- 狼人 (Werewolf)
- 技能:每晚共同击杀一名玩家。
- 限制:不能自刀(除非战术需要,规则允许),必须达成一致。
- 胜利条件:达成屠边或屠城。
- 预言家 (Seer)
- 技能:每晚查验一名玩家的具体身份(通常返回“狼人”或“好人”,部分规则返回具体角色)。
- 注意:查验结果绝对真实。
- 女巫 (Witch)
- 技能:拥有一瓶解药(救活当晚死者)和一瓶毒药(毒死任意存活玩家)。
- 限制:全程每瓶药只能用一次;同一晚不能双用;通常首夜可自救(视规则而定)。
- 猎人 (Hunter)
- 技能:死亡时(除被毒杀外)可开枪带走一名玩家。
- 限制:被女巫毒杀不能开枪;殉情(恋人)不能开枪。
- 守卫 (Guard)
- 技能:每晚守护一名玩家免受狼人击杀。
- 限制:不能连续两晚守护同一人;守护与女巫解药同时作用于同一人通常导致死亡(“奶穿”规则,需明确配置)。
- 白痴 (Idiot)
- 技能:被放逐时翻牌免疫死亡,但失去投票权。
- 骑士 (Knight)
- 技能:白天发言阶段可随时翻牌决斗一名玩家。若对方是狼人,对方死亡;若对方是好人,骑士死亡。
- 限制:通常仅限一次。
- 平民 (Villager)
- 技能:无。
- 任务:通过发言逻辑找出狼人,投票放逐。
若 AI 作为法官或玩家,需维护以下核心状态变量:
{
"game_status": "Night|Day|GameEnd",
"day_count": int,
"alive_players": [player_id, ...],
"dead_players": [player_id, ...],
"roles_config": { "werewolf": 4, "seer": 1, "witch": 1, "villager": 4, ... },
"winner": null
}{
"player_id": "P1",
"role": "Werewolf",
"is_alive": true,
"is_poisoned": false,
"is_protected": false,
"votes_received": int,
"has_used_skill": bool
}- 死亡判定顺序:
- 骑士决斗 > 女巫毒杀 > 狼人击杀 vs 守卫守护。
- 守护与解药冲突:
- 若
Guard守护了X,且Witch救了X(针对狼刀):- 规则 A(常见):
X存活。 - 规则 B(奶穿):
X死亡。 - AI 需在游戏初始化时确认此规则。
- 规则 A(常见):
- 若
- 猎人触发:
- 检查死亡原因
death_cause。若death_cause == Poison,则禁用猎人技能。
- 检查死亡原因
- 信息隐藏:严禁在日志或非公开渠道泄露自己的身份牌。
- 逻辑推理:
- 基于公开发言构建逻辑链。
- 识别矛盾点(如:两人跳预言家,必有一狼)。
- 评估概率(如:银水大概率是好人,但可能是狼人自刀)。
- 发言风格:
- 模拟人类情感与不确定性,避免过于机械的确定性陈述(除非是查验信息)。
- 遵守发言时限。
- 阵营协作(若为狼人):
- 与队友配合打掩护,避免同时暴露。
- 伪装神职或平民。
- 公正性:严格按照规则结算,不偏袒任何一方。
- 信息隔离:确保玩家只能获取其应得的信息(如女巫只知道当晚死谁,不知道守卫守谁)。
- 流程控制:
- 处理超时(Timeout)。
- 处理无效输入(如已死玩家投票)。
- 明确宣布结算结果(“昨晚是平安夜”或“玩家 X 死亡”)。
- 状态同步:实时更新存活列表和胜利条件判定。
- 金水 (Golden Water):预言家查验的好人。
- 查杀 (Kill Check):预言家查验的狼人。
- 银水 (Silver Water):女巫救起的人(大概率好人)。
- 跳 (Jump):声称自己是某个身份(如“跳预言家”)。
- 悍跳 (Hard Jump):狼人假装神职。
- 自爆 (Self-Explosion):狼人白天翻牌承认身份并立即死亡,终止当前白天发言流程,直接进入夜晚。
- PK:平票对决。
- 归票:警长或权威玩家号召大家投票给某人。
def check_win_condition(alive_players, roles):
werewolf_count = count(alive_players, role="Werewolf")
villager_count = count(alive_players, role="Villager")
god_count = count(alive_players, role=["Seer", "Witch", "Hunter", "Guard"])
if werewolf_count == 0:
return "Good_Win"
# 屠边规则
if villager_count == 0:
return "Werewolf_Win"
if god_count == 0:
return "Werewolf_Win"
return "Game_Continue"此规则集涵盖了狼人杀的核心机制与 AI 实现所需的逻辑细节。若需针对特定板子(如“预女猎白”、“狼王守卫”等)进行调整,请在此基础上修改角色配置与技能细节。