split large discard into groups of 3 to avoid running out of memory, for #721

master
melvinzhang 2017-08-14 16:08:49 +08:00
parent 0230ffbac5
commit 326617fa03
1 changed files with 8 additions and 1 deletions

View File

@ -27,7 +27,14 @@ public class MagicCleanupPhase extends MagicPhase {
// discard excess cards
if (turnPlayer.getNumExcessCards() > 0) {
final int amount = turnPlayer.getNumExcessCards();
game.addEvent(new MagicDiscardEvent(MagicSource.NONE,turnPlayer,amount));
if (turnPlayer.isArtificial() || game.isArtificial()) {
for (int left = amount; left > 0; left -= 3) {
final int amt = Math.min(left, 3);
game.addEvent(new MagicDiscardEvent(MagicSource.NONE,turnPlayer,amt));
}
} else {
game.addEvent(new MagicDiscardEvent(MagicSource.NONE,turnPlayer,amount));
}
}
// remove until EOT triggers/static, clean up player and permanents
game.doAction(new CleanupTurnTriggersAction());