simulateGame = ({ players, arenaSize, arenaShrink = 0.9 } = {}) => {
while (countRemainingTeams(players) > 1) {
let arena = _.range(0, arenaSize).map(() => []);
for (let player of players) {
const slot = _.sample(arena);
slot.push(player);
}
for (let player of arena[0].filter(p => p.isAlive)) {
player.dealDamage({ damage: ringDamage, killer: theRing });
}
for (const slot of _.filter(s => s.length > 1, arena)) {
fight({ players: slot });
}
arenaSize = Math.max(1, arenaSize * arenaShrink);
}
for (let player of players) {
if (player.isAlive) {
player.numWins += 1;
}
}
return players;
}