diff --git a/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java b/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java index fd0080ab3ac..17e85174572 100644 --- a/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java @@ -77,7 +77,7 @@ public class SacrificeAllEffect extends OneShotEffect { for (Player player: game.getPlayers().values()) { int numTargets = Math.min(amount, game.getBattlefield().countAll(filter, player.getId())); TargetControlledPermanent target = new TargetControlledPermanent(numTargets, numTargets, filter, false); - if (target.canChoose(source.getControllerId(), game)) { + if (target.canChoose(player.getId(), game)) { while (!target.isChosen()) { player.choose(Outcome.Sacrifice, target, game); } diff --git a/Mage/src/mage/target/TargetPermanent.java b/Mage/src/mage/target/TargetPermanent.java index ce66fefc32d..1ed8cc4f9c7 100644 --- a/Mage/src/mage/target/TargetPermanent.java +++ b/Mage/src/mage/target/TargetPermanent.java @@ -136,8 +136,10 @@ public class TargetPermanent> extends TargetObject< @Override public boolean canChoose(UUID sourceControllerId, Game game) { int remainingTargets = this.minNumberOfTargets - targets.size(); - if (remainingTargets == 0) - return true; + if (remainingTargets == 0) { + // if we return true, then AnowonTheRuinSage will hang for AI when no targets in play + return false; + } int count = 0; for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, game)) { if (!targets.containsKey(permanent.getId())) {