UNPKG

@bot-shiki/koishi-plugin-werewolf

Version:
87 lines (86 loc) 3.44 kB
import { Dict, h, Logger } from 'koishi'; import { Player } from 'koishi-plugin-lobby'; import { WerewolfGame } from '.'; export declare const logger: Logger; export declare const t: (path: string, param?: any) => h; export type Weather = typeof Weather[number]; export declare const Weather: readonly ["kaisei", "kirisame", "donten", "souten", "hyou", "hanagumori", "noumu", "yuki", "tenkiame", "utoame", "fuuu", "seiran", "kawagiri", "taifuu", "nagi", "diamond-dust", "kousa", "retsujitsu", "baiu", "kyokkou"]; export type Identity = Identity.Neutral | Identity.Youkai | Identity.Ningen; interface Party extends Array<Identity> { Normal: Identity[]; Expert: Identity[]; } export declare namespace Identity { const Neutral: Identity[]; type Neutral = 'doremy' | 'parsee'; const Youkai: Party; type Youkai = Youkai.Normal | Youkai.Expert; namespace Youkai { type Expert = 'yukari' | 'utsuho' | 'remilia' | 'yuuka' | 'mamizou' | 'iku'; type Normal = 'kagerou' | 'rumia' | 'mystia' | 'wriggle' | 'wakasagihime' | 'sekibanki' | 'kyouko' | 'tewi' | 'chen' | 'nazrin' | 'kogasa'; } const Ningen: Party; type Ningen = Ningen.Normal | Ningen.Expert; namespace Ningen { type Expert = 'reimu' | 'rinnosuke'; type Normal = 'marisa' | 'sanae' | 'sumireko' | 'kosuzu' | 'renko' | 'merry' | 'akyuu' | 'youmu' | 'mokou'; } const Expert: Identity[]; type Expert = Neutral | Youkai.Expert | Ningen.Expert; type Revenger = 'reimu' | 'yuuka'; type Winner = 'ningen' | 'youkai' | 'draw' | Neutral; type Killer = Revenger | Neutral | 'yukari' | 'ningen' | 'vote' | 'offline'; type Action = Expert | 'night' | 'vote' | 'show-kill' | 'ningen' | 'chat' | 'last-words' | 'sage' | 'transfer' | 'weather'; function getParty(identity: Identity): "ningen" | "youkai" | "neutral"; } export type Preset = [number, number, ...[number, ...Identity.Expert[]][]]; export declare const Preset: Dict<Preset[][]>; export interface SelectItem { disabled: boolean; labels?: h[]; } export declare class Character { game: WerewolfGame; player: Player; identity: Identity; party: 'ningen' | 'youkai' | 'neutral'; /** 是贤者 */ isSage: boolean; /** 角色死因 */ killer: Identity.Killer; /** 苍天的替死者 */ scapegoat: Character; /** 目标角色 */ target: Character; /** 台风 */ taifuu: boolean; /** 得票数 */ votes: number; /** 选定目标的时间 */ voteTime: number; /** remilia 知晓阵营 */ isKnown: boolean; /** 全员知晓身份 */ isWellKnown: boolean; /** 无法被替死或发动复仇 */ isScapegoat: boolean; /** doremy 噩梦状态 */ nightmare: boolean; /** 是否出局 (含 utsuho 被投死) */ isOut: boolean; constructor(game: WerewolfGame, player: Player, identity: Identity); /** 有特殊技能 */ get isExpert(): boolean; get isRevenger(): boolean; get isDead(): boolean; get isDying(): boolean; /** 是否被视为人类 */ get isNingen(): boolean; /** 能在投票前发言 */ get canSpeak(): boolean; render(result: SelectItem): h; select(predicate: (character: Character) => SelectItem, timeout: number, optional: boolean): Promise<Character>; toString(): string; } export declare function rotate<T>(source: readonly T[], offset?: number): T[]; export {};