From fa2f7e205508a44f92d87d73d4715ae4531dd1b5 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 30 May 2015 02:00:21 +0200 Subject: [PATCH] Grave Pact, Dictate of Erebos, Butcher of Malakir, Agent of The Fates, Tribute to the Wild and Yawning Fissure - Fixed that the selection for the object to sacrifice was handled targeted. --- .../src/mage/sets/ninthedition/GravePact.java | 29 +++++++++++++------ .../common/SacrificeOpponentsEffect.java | 9 ++---- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/Mage.Sets/src/mage/sets/ninthedition/GravePact.java b/Mage.Sets/src/mage/sets/ninthedition/GravePact.java index 502ff727012..08c949d9b2e 100644 --- a/Mage.Sets/src/mage/sets/ninthedition/GravePact.java +++ b/Mage.Sets/src/mage/sets/ninthedition/GravePact.java @@ -27,6 +27,8 @@ */ package mage.sets.ninthedition; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; import mage.constants.CardType; import mage.constants.Outcome; @@ -41,7 +43,6 @@ import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; import mage.players.Player; -import mage.target.Target; import mage.target.common.TargetControlledCreaturePermanent; /** @@ -121,18 +122,28 @@ class GravePactEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for (UUID playerId : game.getPlayerList()) { - if (!playerId.equals(source.getControllerId())) { + List perms = new ArrayList<>(); + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + for (UUID playerId : controller.getInRange()) { Player player = game.getPlayer(playerId); - Target target = new TargetControlledCreaturePermanent(); - if (player != null && player.choose(Outcome.Sacrifice, target, source.getSourceId(), game)) { - Permanent permanent = game.getPermanent(target.getFirstTarget()); - if (permanent != null) { - permanent.sacrifice(source.getSourceId(), game); + if (player != null && !playerId.equals(source.getControllerId())) { + TargetControlledCreaturePermanent target = new TargetControlledCreaturePermanent(); + target.setNotTarget(true); + if (target.canChoose(player.getId(), game)) { + player.chooseTarget(Outcome.Sacrifice, target, source, game); + perms.addAll(target.getTargets()); } } } + for (UUID permID : perms) { + Permanent permanent = game.getPermanent(permID); + if (permanent != null) { + permanent.sacrifice(source.getSourceId(), game); + } + } + return true; } - return false; + return false; } } diff --git a/Mage/src/mage/abilities/effects/common/SacrificeOpponentsEffect.java b/Mage/src/mage/abilities/effects/common/SacrificeOpponentsEffect.java index 2320b261986..6edd6c83449 100644 --- a/Mage/src/mage/abilities/effects/common/SacrificeOpponentsEffect.java +++ b/Mage/src/mage/abilities/effects/common/SacrificeOpponentsEffect.java @@ -87,14 +87,11 @@ public class SacrificeOpponentsEffect extends OneShotEffect { filter.add(new ControllerPredicate(TargetController.YOU)); for (UUID playerId : game.getOpponents(source.getControllerId())) { Player player = game.getPlayer(playerId); - if (player != null) { - + if (player != null) { int numTargets = Math.min(amount.calculate(game, source, this), game.getBattlefield().countAll(filter, player.getId(), game)); - TargetPermanent target = new TargetPermanent(numTargets, numTargets, filter, false); + TargetPermanent target = new TargetPermanent(numTargets, numTargets, filter, true); if (target.canChoose(player.getId(), game)) { - while (!target.isChosen() && player.isInGame()) { - player.chooseTarget(Outcome.Sacrifice, target, source, game); - } + player.chooseTarget(Outcome.Sacrifice, target, source, game); perms.addAll(target.getTargets()); } }