"""角色定义。""" from __future__ import annotations from dataclasses import dataclass from enum import Enum class Role(str, Enum): WEREWOLF = "werewolf" VILLAGER = "villager" SEER = "seer" WITCH = "witch" HUNTER = "hunter" GUARD = "guard" @dataclass(frozen=True) class RoleInfo: role: Role name: str # 中文名 camp: str # "wolf" | "god" | "civilian" emoji: str description: str ROLE_INFO: dict[Role, RoleInfo] = { Role.WEREWOLF: RoleInfo( Role.WEREWOLF, "狼人", "wolf", "🐺", "每晚与同伴共同袭击一名玩家,白天隐藏身份,误导好人投票。", ), Role.VILLAGER: RoleInfo( Role.VILLAGER, "村民", "civilian", "👨‍🌾", "没有主动技能,白天通过发言与投票找出狼人。", ), Role.SEER: RoleInfo( Role.SEER, "预言家", "god", "🔮", "每晚查验一名玩家的阵营(好人 / 狼人),带领好人寻找狼人。", ), Role.WITCH: RoleInfo( Role.WITCH, "女巫", "god", "🧪", "拥有一瓶解药和一瓶毒药。解药可救活当晚被袭击者,毒药可毒杀一名玩家,每夜只能用一瓶。首夜可自救。", ), Role.HUNTER: RoleInfo( Role.HUNTER, "猎人", "god", "🏹", "被狼人袭击或被投票放逐时,可开枪带走一名玩家(被毒杀时无法开枪)。", ), Role.GUARD: RoleInfo( Role.GUARD, "守卫", "god", "🛡️", "每晚守护一名玩家免受狼人袭击,不能连续两晚守护同一人。同守同救会死亡。", ), } WOLF_TEAM = {Role.WEREWOLF} GOD_TEAM = {Role.SEER, Role.WITCH, Role.HUNTER, Role.GUARD} CIVILIAN_TEAM = {Role.VILLAGER} def role_camp(role: Role) -> str: return ROLE_INFO[role].camp def is_wolf(role: Role) -> bool: return role == Role.WEREWOLF