@bot-shiki/koishi-plugin-werewolf
Version:
Touhou werewolf game
84 lines (83 loc) • 3.11 kB
TypeScript
import { Dict } from 'koishi';
import { Player } from 'koishi-plugin-lobby';
export declare const Weather: readonly ["kaisei", "donten", "souten", "hanagumori", "noumu", "tenkiame", "kawagiri", "taifuu", "nagi", "kousa", "baiu"];
export type Weather = typeof Weather[number];
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';
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';
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 declare class Character {
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;
/** mamizou 幻化状态 */
illusion: boolean;
/** doremy 噩梦状态 */
nightmare: boolean;
/** yukari 已使用救人 */
saveUsed: boolean;
/** yukari 已使用杀人 */
killUsed: boolean;
/** 是否出局 (含 utsuho 被投死) */
isOut: boolean;
/** 已发布遗言 */
hasLastWords: boolean;
constructor(player: Player, identity: Identity);
/** 有特殊技能 */
get isExpert(): boolean;
get isRevenger(): boolean;
get isDead(): boolean;
get isDying(): boolean;
/** 是否被视为人类 */
get isNingen(): boolean;
/** 能在投票前发言 */
get canSpeak(): boolean;
}
export declare function rotate<T>(source: readonly T[], offset?: number): T[];
export {};