import { GameTeam } from './game_team'; import { BattleLog, BattleLogAction, Ruleset } from './types'; import { GameMonster } from './game_monster'; import { GameCard } from './game_card'; export declare class Game { private readonly team1; private readonly team2; private readonly rulesets; private readonly shouldLog; private battleLogs; private winner; private deadMonsters; private roundNumber; private stunnedMonsters; constructor(team1: GameTeam, team2: GameTeam, rulesets: Set, shouldLog?: boolean); getWinner(): number | undefined; playGame(): void; getBattleLogs(): BattleLog[]; private reset; private doSummonerPreGameBuff; private doMonsterPreGameBuff; private doSummonerPreGameDebuff; private doMonsterPreGameDebuff; private doSummonerPreRound; private doMonsterPreTurn; private resolveAttackForMonster; private resolveMeleeAttackForMonster; private attackMonsterPhase; /** Actually hits the monster. Returns the remainder damage (i.e. if there is 1 shield, and it does 4 melee damage, returns 3.) */ private actuallyHitMonster; private getDamageMultiplier; private getPostBlastDamageMultiplier; private getTargetForNonMelee; private getTargetForMagicAttack; private getTargetForRangedAttack; private getTargetForMeleeAttack; /** Who this monster will target, if any. Null if none. */ private getTargetForAttackType; private maybeBlast; private removeStunsThatThisMonsterApplied; private maybeDead; private maybeMartyr; /** Applies the martyr buffs (+1 all stats) to the monster. */ private applyMartyrBuffs; private maybeRebirth; private maybeResurrect; private onDeath; private maybeApplyThorns; private maybeApplyMagicReflect; private maybeApplyReturnFire; private maybeRetaliate; private maybeApplyStun; private maybeApplyPoison; private maybeApplyCripple; private maybeApplyHalving; private maybeApplyBloodlust; private maybeLifeLeech; private checkAndSetGameWinner; /** Plays rounds until the game is over */ private playRoundsUntilGameEnd; /** * Plays a single round * 1. Summoners do their pre round abilities. * 2. Get turn order of monsters * 3.For each monster, check if alive then * 3a. Do onPreTurn * 3b. Get target, continue to next monster if no attack * 3c. Attack target * 3d. Resolve damage, check if dead monsters * 3e. (If dead) Trigger onDeath on all alive monsters and summoners */ private playSingleRound; private doGamePreRound; private doPostRound; private doPostRoundEarthquake; private monstersOnPostRound; private getNextMonsterTurn; private applyAbilityToMonsters; private addMonsterToMonsterDebuff; private applyDebuffToMonsters; private applyBuffToMonsters; private fatigueMonsters; private getTeamOfMonster; private getEnemyTeamOfMonster; private markStunnedMonsterTurnPassed; createAndAddBattleLog(action: BattleLogAction, cardOne?: GameCard | GameMonster, cardTwo?: GameCard | GameMonster, value?: number): void; }