@bot-shiki/koishi-plugin-werewolf
Version:
Touhou werewolf game
59 lines (58 loc) • 1.93 kB
TypeScript
import { Context, Dict, z } from 'koishi';
import { Corridor, Game, Player } from 'koishi-plugin-lobby';
import { Character, Identity, Weather } from './utils';
import IkuAction from './action/iku';
import YukariAction from './action/yukari';
import RemiliaAction from './action/remilia';
import MamizouAction from './action/mamizou';
import DoremyAction from './action/doremy';
import NingenAction from './action/ningen';
import SageAction from './action/sage';
import ExileAction from './action/exile';
import DeathAction from './action/death';
export type CountdownTag = never | 'init' | 'confirm' | 'death' | 'ningen' | 'speech' | 'vote' | 'last-words' | 'show-kill' | 'sage-order' | 'sage-transfer';
export type Phase = 'init' | 'Vote' | 'Day' | 'Night';
export declare class WerewolfGame extends Game<WerewolfGame.Options> {
dayCount: number;
weather: Weather;
seats: Character[];
chars: Map<Player, Character>;
winner: Identity.Winner;
iku: IkuAction;
sage: SageAction;
exile: ExileAction;
death: DeathAction;
ningen: NingenAction;
remilia: RemiliaAction;
mamizou: MamizouAction;
yukari: YukariAction;
doremy: DoremyAction;
getChar(identity: Identity): Character;
validate(): Promise<void>;
leave(player: Player): void;
init(): Promise<void>;
start(): Promise<void>;
isNingenWinner(): boolean;
check(): void;
private announce;
private dayAction;
nightAction(): Promise<void>;
}
export declare namespace WerewolfGame {
interface Options {
sage?: boolean;
weather?: boolean;
timeout?: Dict<number>;
}
}
declare class RPSCorridor extends Corridor {
config: RPSCorridor.Config;
factory: typeof WerewolfGame;
constructor(ctx: Context, config: RPSCorridor.Config);
}
declare namespace RPSCorridor {
interface Config {
}
const Config: z<Config>;
}
export default RPSCorridor;