From 0daf20bbc8a2aa14d129034a8163d5030a48969b Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Wed, 10 Apr 2019 09:48:18 +0400 Subject: [PATCH] * Etali, Primal Storm - fixed AI game freeze (#5023); --- .../src/mage/cards/e/EtaliPrimalStorm.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java b/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java index 5c5ff2373d8..8e1f289874c 100644 --- a/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java +++ b/Mage.Sets/src/mage/cards/e/EtaliPrimalStorm.java @@ -97,6 +97,7 @@ class EtaliPrimalStormEffect extends OneShotEffect { } } } + // cast the possible cards without paying the mana Cards cardsToCast = new CardsImpl(); cardsToCast.addAll(currentExiledCards); @@ -105,17 +106,21 @@ class EtaliPrimalStormEffect extends OneShotEffect { if (!controller.chooseUse(Outcome.PlayForFree, "Cast a" + (alreadyCast ? "nother" : "") + " card exiled with " + sourceObject.getLogName() + " without paying its mana cost?", source, game)) { break; } + TargetCard targetCard = new TargetCard(1, Zone.EXILED, new FilterCard("nonland card to cast for free")); - if (controller.choose(Outcome.PlayForFree, cardsToCast, targetCard, game)) { - alreadyCast = true; - Card card = game.getCard(targetCard.getFirstTarget()); - if (card != null) { - if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) { - cardsToCast.remove(card); - } else { + if (!controller.choose(Outcome.PlayForFree, cardsToCast, targetCard, game)) { + break; + } + + alreadyCast = true; + Card card = game.getCard(targetCard.getFirstTarget()); + if (card != null) { + if (!controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) { + if (!game.isSimulation()) { game.informPlayer(controller, "You're not able to cast " + card.getIdName() + " or you canceled the casting."); } } + cardsToCast.remove(card); } } return true;