mirror of
https://github.com/correl/mage.git
synced 2024-11-15 19:19:33 +00:00
* Clutch of Currents - Fixed wrong target handling.
This commit is contained in:
parent
5582db0332
commit
52d8fce569
5 changed files with 39 additions and 7 deletions
|
@ -46,7 +46,7 @@ public class ClutchOfCurrents extends CardImpl {
|
||||||
this.expansionSetCode = "BFZ";
|
this.expansionSetCode = "BFZ";
|
||||||
|
|
||||||
// Return target creature to its owner's hand.
|
// Return target creature to its owner's hand.
|
||||||
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
|
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect(true, false));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
||||||
// Awaken 3—{4}{U}
|
// Awaken 3—{4}{U}
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class ChurningEddy extends CardImpl {
|
||||||
this.expansionSetCode = "TOR";
|
this.expansionSetCode = "TOR";
|
||||||
|
|
||||||
// Return target creature and target land to their owners' hands.
|
// Return target creature and target land to their owners' hands.
|
||||||
Effect effect = new ReturnToHandTargetEffect();
|
Effect effect = new ReturnToHandTargetEffect(true, true);
|
||||||
effect.setText("Return target creature and target land to their owners' hands");
|
effect.setText("Return target creature and target land to their owners' hands");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
|
@ -32,7 +32,6 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
||||||
|
|
|
@ -29,6 +29,7 @@ package org.mage.test.cards.abilities.keywords;
|
||||||
|
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.Filter;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
|
@ -120,4 +121,31 @@ public class AwakenTest extends CardTestPlayerBase {
|
||||||
assertGraveyardCount(playerB, "Silvercoat Lion", 1);
|
assertGraveyardCount(playerB, "Silvercoat Lion", 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Awakened Clutch of Currents returned the targeted land (for awaken) to my
|
||||||
|
* hand in addition to the targeted creature.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testClutchOfCurrents() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Island", 5);
|
||||||
|
// Return target creature to its owner's hand.
|
||||||
|
// Awaken 3—{4}{U}
|
||||||
|
addCard(Zone.HAND, playerA, "Clutch of Currents", 1); // {U}
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1);
|
||||||
|
|
||||||
|
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Clutch of Currents with awaken", "Silvercoat Lion");
|
||||||
|
addTarget(playerA, "Island");
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.BEGIN_COMBAT);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertGraveyardCount(playerA, "Clutch of Currents", 1);
|
||||||
|
assertHandCount(playerB, "Silvercoat Lion", 1);
|
||||||
|
assertPermanentCount(playerA, "Island", 5);
|
||||||
|
assertPowerToughness(playerA, "Island", 3, 3, Filter.ComparisonScope.Any);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,6 @@ import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
import mage.target.targetpointer.FirstTargetPointer;
|
|
||||||
import mage.util.CardUtil;
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,19 +48,26 @@ import mage.util.CardUtil;
|
||||||
public class ReturnToHandTargetEffect extends OneShotEffect {
|
public class ReturnToHandTargetEffect extends OneShotEffect {
|
||||||
|
|
||||||
boolean withName;
|
boolean withName;
|
||||||
|
protected boolean multitargetHandling;
|
||||||
|
|
||||||
public ReturnToHandTargetEffect() {
|
public ReturnToHandTargetEffect() {
|
||||||
this(true);
|
this(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReturnToHandTargetEffect(boolean withName) {
|
public ReturnToHandTargetEffect(boolean withName) {
|
||||||
|
this(withName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReturnToHandTargetEffect(boolean withName, boolean multitargetHandling) {
|
||||||
super(Outcome.ReturnToHand);
|
super(Outcome.ReturnToHand);
|
||||||
this.withName = withName;
|
this.withName = withName;
|
||||||
|
this.multitargetHandling = multitargetHandling;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReturnToHandTargetEffect(final ReturnToHandTargetEffect effect) {
|
public ReturnToHandTargetEffect(final ReturnToHandTargetEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
this.withName = effect.withName;
|
this.withName = effect.withName;
|
||||||
|
this.multitargetHandling = effect.multitargetHandling;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -76,7 +82,7 @@ public class ReturnToHandTargetEffect extends OneShotEffect {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Set<Card> cards = new LinkedHashSet<>();
|
Set<Card> cards = new LinkedHashSet<>();
|
||||||
if (source.getTargets().size() > 1 && targetPointer instanceof FirstTargetPointer) {
|
if (multitargetHandling) {
|
||||||
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);
|
||||||
|
@ -85,8 +91,7 @@ public class ReturnToHandTargetEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
for (UUID targetId : targetPointer.getTargets(game, source)) {
|
for (UUID targetId : targetPointer.getTargets(game, source)) {
|
||||||
MageObject mageObject = game.getObject(targetId);
|
MageObject mageObject = game.getObject(targetId);
|
||||||
if (mageObject != null) {
|
if (mageObject != null) {
|
||||||
|
|
Loading…
Reference in a new issue