@bot-shiki/koishi-plugin-werewolf
Version:
Touhou werewolf game
87 lines (86 loc) • 3.44 kB
TypeScript
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 {};