interface Game {
    game.abort: void;
    game.advance: {
        scoreboard: {
            active: boolean;
            alive: boolean;
            id: string;
            lifetime: number;
            naturalorder: number;
            shadowedBy: [null, null];
            shadows: [];
            stats: {
                altitude: 0;
                apm: number;
                garbagereceived: number;
                garbagesent: number;
                kills: 1;
                pps: number;
                rank: 1;
                targetingfactor: 3;
                targetinggrace: 0;
                vsscore: number;
            };
            username: string;
        }[];
    };
    game.end: {
        leaderboard: Leaderboard[];
        scoreboard: Scoreboard[];
        winners: {
            active: boolean;
            id: string;
            naturalorder: number;
            shadowedBy: any[];
            shadows: any[];
            username: string;
        }[];
        xpPerUser: number;
    };
    game.match: {
        gamemode: GameMode;
        modename: string;
        rb: {
            leaderboard: Leaderboard[];
            options: {
                ft: number;
                gp: number;
                wb: number;
            };
            type: string;
        };
        rrb: {
            options: Record<string, unknown>;
            scoreboard: {
                active: boolean;
                alive: boolean;
                id: string;
                lifetime: number;
                naturalorder: number;
                shadowedBy: (null | string)[];
                shadows: any[];
                stats: {
                    altitude: number;
                    apm: null | number;
                    blockrationing_app: number;
                    blockrationing_final: number;
                    btb: number;
                    escapeartist: number;
                    garbagereceived: number;
                    garbagesent: number;
                    kills: number;
                    pps: null | number;
                    rank: number;
                    revives: number;
                    targetingfactor: number;
                    targetinggrace: number;
                    vsscore: null | number;
                };
                username: string;
            }[];
            type: string;
        };
    };
    game.ready: Ready;
    game.replay: {
        frames: Frame[];
        gameid: number;
        provisioned: number;
    };
    game.replay.board: {
        boards: {
            board: {
                b: Types.Game.BoardSquare[][];
                f: number;
                g: number;
                h: number;
                w: number;
            };
            gameid: number;
        }[];
    };
    game.replay.end: {
        data: {
            gameoverreason: GameOverReason;
            killer: {
                gameid: number;
                type: "sizzle";
                username: null | string;
            };
        };
        gameid: number;
    };
    game.replay.ige: {
        gameid: number;
        iges: Types.Game.IGE[];
    };
    game.replay.state: {
        data: "early" | "wait" | {
            frame: number;
            game: Types.Game.State;
            overrides: Record<string, unknown>;
        };
        gameid: number;
    };
    game.score: {
        match: MatchData;
        scoreboard: Scoreboard[];
    };
    game.spectate: {
        match: MatchData;
        players: {
            alive: boolean;
            gameid: number;
            naturalorder: number;
            options: ReadyOptions;
            userid: string;
        }[];
    };
    game.start: void;
}

Properties

game.abort: void
game.advance: {
    scoreboard: {
        active: boolean;
        alive: boolean;
        id: string;
        lifetime: number;
        naturalorder: number;
        shadowedBy: [null, null];
        shadows: [];
        stats: {
            altitude: 0;
            apm: number;
            garbagereceived: number;
            garbagesent: number;
            kills: 1;
            pps: number;
            rank: 1;
            targetingfactor: 3;
            targetinggrace: 0;
            vsscore: number;
        };
        username: string;
    }[];
}
game.end: {
    leaderboard: Leaderboard[];
    scoreboard: Scoreboard[];
    winners: {
        active: boolean;
        id: string;
        naturalorder: number;
        shadowedBy: any[];
        shadows: any[];
        username: string;
    }[];
    xpPerUser: number;
}
game.match: {
    gamemode: GameMode;
    modename: string;
    rb: {
        leaderboard: Leaderboard[];
        options: {
            ft: number;
            gp: number;
            wb: number;
        };
        type: string;
    };
    rrb: {
        options: Record<string, unknown>;
        scoreboard: {
            active: boolean;
            alive: boolean;
            id: string;
            lifetime: number;
            naturalorder: number;
            shadowedBy: (null | string)[];
            shadows: any[];
            stats: {
                altitude: number;
                apm: null | number;
                blockrationing_app: number;
                blockrationing_final: number;
                btb: number;
                escapeartist: number;
                garbagereceived: number;
                garbagesent: number;
                kills: number;
                pps: null | number;
                rank: number;
                revives: number;
                targetingfactor: number;
                targetinggrace: number;
                vsscore: null | number;
            };
            username: string;
        }[];
        type: string;
    };
}
game.ready: Ready
game.replay: {
    frames: Frame[];
    gameid: number;
    provisioned: number;
}
game.replay.board: {
    boards: {
        board: {
            b: Types.Game.BoardSquare[][];
            f: number;
            g: number;
            h: number;
            w: number;
        };
        gameid: number;
    }[];
}
game.replay.end: {
    data: {
        gameoverreason: GameOverReason;
        killer: {
            gameid: number;
            type: "sizzle";
            username: null | string;
        };
    };
    gameid: number;
}
game.replay.ige: {
    gameid: number;
    iges: Types.Game.IGE[];
}
game.replay.state: {
    data: "early" | "wait" | {
        frame: number;
        game: Types.Game.State;
        overrides: Record<string, unknown>;
    };
    gameid: number;
}
game.score: {
    match: MatchData;
    scoreboard: Scoreboard[];
}
game.spectate: {
    match: MatchData;
    players: {
        alive: boolean;
        gameid: number;
        naturalorder: number;
        options: ReadyOptions;
        userid: string;
    }[];
}
game.start: void