From 13238601005f00f9c21fb51f43b5ee8a4fe72a69 Mon Sep 17 00:00:00 2001 From: Hanmac Date: Mon, 31 Oct 2016 16:05:25 +0000 Subject: [PATCH] PlayerControllerAi: do not add to Stack if it cant go there (like missing targets) --- .../main/java/forge/ai/PlayerControllerAi.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 9fb43d1d03c..afb8cd8d93d 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -692,25 +692,27 @@ public class PlayerControllerAi extends PlayerController { @Override public void orderAndPlaySimultaneousSa(List activePlayerSAs) { for (final SpellAbility sa : activePlayerSAs) { - prepareSingleSa(sa.getHostCard(),sa,true); - ComputerUtil.playStack(sa, player, game); + if (prepareSingleSa(sa.getHostCard(),sa,true)) { + ComputerUtil.playStack(sa, player, game); + } } } - private void prepareSingleSa(final Card host, final SpellAbility sa, boolean isMandatory){ + private boolean prepareSingleSa(final Card host, final SpellAbility sa, boolean isMandatory){ if (sa.hasParam("TargetingPlayer")) { Player targetingPlayer = AbilityUtils.getDefinedPlayers(host, sa.getParam("TargetingPlayer"), sa).get(0); sa.setTargetingPlayer(targetingPlayer); - targetingPlayer.getController().chooseTargetsFor(sa); + return targetingPlayer.getController().chooseTargetsFor(sa); } else { - brains.doTrigger(sa, isMandatory); + return brains.doTrigger(sa, isMandatory); } } @Override public void playTrigger(Card host, WrappedAbility wrapperAbility, boolean isMandatory) { - prepareSingleSa(host, wrapperAbility, isMandatory); - ComputerUtil.playNoStack(wrapperAbility.getActivatingPlayer(), wrapperAbility, game); + if (prepareSingleSa(host, wrapperAbility, isMandatory)) { + ComputerUtil.playNoStack(wrapperAbility.getActivatingPlayer(), wrapperAbility, game); + } } @Override