Files

64 lines
1.9 KiB
Python

"""角色定义。"""
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