This commit is contained in:
jeffwadsworth 2020-08-13 16:35:24 -05:00
parent f795e7649f
commit 0cda2d9635

View file

@ -11,10 +11,12 @@ import mage.players.Player;
import mage.target.Target; import mage.target.Target;
import mage.target.targetpointer.FirstTargetPointer; import mage.target.targetpointer.FirstTargetPointer;
import mage.util.CardUtil; import mage.util.CardUtil;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import mage.abilities.effects.Effect;
import mage.target.targetpointer.FixedTarget;
import mage.target.targetpointer.TargetPointer;
/** /**
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
@ -22,8 +24,9 @@ import java.util.UUID;
public class ExileTargetForSourceEffect extends OneShotEffect { public class ExileTargetForSourceEffect extends OneShotEffect {
/** /**
* Exile cards to source's exile window (e.g. if it have another effect like return from exile later) * Exile cards to source's exile window (e.g. if it has another effect like
* TODO: delete that effect and replace it by ExileTargetEffect (it have special param for same purpose) * return from exile later) TODO: delete that effect and replace it by
* ExileTargetEffect (it will have a special param for same purpose)
*/ */
public ExileTargetForSourceEffect() { public ExileTargetForSourceEffect() {
super(Outcome.Exile); super(Outcome.Exile);
@ -42,9 +45,12 @@ public class ExileTargetForSourceEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game); MageObject sourceObject = source.getSourceObject(game);
if (controller != null && sourceObject != null) {
if (controller != null
&& sourceObject != null) {
Set<Card> cards = new LinkedHashSet<>(); Set<Card> cards = new LinkedHashSet<>();
if (source.getTargets().size() > 1 && targetPointer instanceof FirstTargetPointer) { if (source.getTargets().size() > 1
&& targetPointer instanceof FirstTargetPointer) {
for (Target target : source.getTargets()) { for (Target target : source.getTargets()) {
for (UUID targetId : target.getTargets()) { for (UUID targetId : target.getTargets()) {
MageObject mageObject = game.getObject(targetId); MageObject mageObject = game.getObject(targetId);
@ -54,10 +60,24 @@ public class ExileTargetForSourceEffect extends OneShotEffect {
} }
} }
} else { } else {
for (UUID targetId : targetPointer.getTargets(game, source)) { if (!targetPointer.getTargets(game, source).isEmpty()) {
MageObject mageObject = game.getObject(targetId); for (UUID targetId : targetPointer.getTargets(game, source)) {
if (mageObject != null) { MageObject mageObject = game.getObject(targetId);
cards.add((Card) mageObject); if (mageObject != null) {
cards.add((Card) mageObject);
}
}
} else {
// issue with Madness keyword #6889
UUID fixedTargetId = null;
for (Effect effect : source.getEffects()) {
TargetPointer targetPointerId = effect.getTargetPointer();
if (targetPointerId instanceof FixedTarget) {
fixedTargetId = (((FixedTarget) targetPointerId).getTarget());
}
}
if (fixedTargetId != null) {
cards.add((Card) game.getObject(fixedTargetId));
} }
} }
} }