mirror of
https://github.com/magefree/mage.git
synced 2025-12-29 15:02:13 -08:00
* Vesuvian Dopelganger - Fixed a bug that the enter the battlefield effect did not work.
This commit is contained in:
parent
316b1848c4
commit
bb2044e70d
2 changed files with 64 additions and 6 deletions
|
|
@ -58,7 +58,7 @@ public class VesuvanDoppelganger extends CardImpl {
|
|||
private static final String rule = "You may have {this} enter the battlefield as a copy of any creature on the battlefield except it doesn't copy that creature's color and it gains \"At the beginning of your upkeep, you may have this creature become a copy of target creature except it doesn't copy that creature's color. If you do, this creature gains this ability.\"";
|
||||
|
||||
public VesuvanDoppelganger(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
|
||||
this.subtype.add("Shapeshifter");
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(0);
|
||||
|
|
@ -94,7 +94,11 @@ class VesuvanDoppelgangerCopyEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
final Permanent sourcePermanent = game.getPermanent(source.getSourceId());
|
||||
Permanent permanent = game.getPermanent(source.getSourceId());
|
||||
if (permanent == null) {
|
||||
permanent = game.getPermanentEntering(source.getSourceId());
|
||||
}
|
||||
final Permanent sourcePermanent = permanent;
|
||||
if (controller != null && sourcePermanent != null) {
|
||||
Target target = new TargetPermanent(new FilterCreaturePermanent("target creature (you copy from)"));
|
||||
target.setRequired(true);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@ import mage.cards.Card;
|
|||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.NamePredicate;
|
||||
import mage.game.permanent.Permanent;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
|
@ -101,7 +103,6 @@ public class CloneTest extends CardTestPlayerBase {
|
|||
|
||||
// copy Nightmare test, check that the P/T setting effect ends
|
||||
// if the clone leaves battlefield
|
||||
|
||||
@Test
|
||||
public void testCopyNightmare() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 5);
|
||||
|
|
@ -141,10 +142,63 @@ public class CloneTest extends CardTestPlayerBase {
|
|||
for (ContinuousEffectsList effectsList : currentGame.getContinuousEffects().allEffectsLists) {
|
||||
Iterator it = effectsList.iterator();
|
||||
while (it.hasNext()) {
|
||||
ContinuousEffect effect = (ContinuousEffect) it.next();
|
||||
Logger.getLogger(CloneTest.class).debug("- " + effect.toString());
|
||||
ContinuousEffect effect = (ContinuousEffect) it.next();
|
||||
Logger.getLogger(CloneTest.class).debug("- " + effect.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* When I Clone a creature, and I try to use Vesuvan Doppelganger to my
|
||||
* cloned creature, The Vesuvan disappears and the creature is not created.
|
||||
*/
|
||||
@Test
|
||||
public void testCloneAndVesuvanDoppelganger() {
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Island", 5);
|
||||
// You may have Clone enter the battlefield as a copy of any creature on the battlefield.
|
||||
addCard(Zone.HAND, playerA, "Clone"); // Creature {3}{U}
|
||||
// You may have Vesuvan Doppelganger enter the battlefield as a copy of any creature on the battlefield
|
||||
// except it doesn't copy that creature's color and it gains "At the beginning of your upkeep,
|
||||
// you may have this creature become a copy of target creature except it doesn't copy that creature's color.
|
||||
// If you do, this creature gains this ability."
|
||||
addCard(Zone.HAND, playerA, "Vesuvan Doppelganger"); // Creature {3}{U}{U}
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Island", 2);
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1);
|
||||
// {2}, {T} , Sacrifice a creature: Draw a card.
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Phyrexian Vault", 1);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Clone");
|
||||
setChoice(playerA, "Silvercoat Lion");
|
||||
|
||||
activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerB, "{2}");
|
||||
|
||||
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Vesuvan Doppelganger");
|
||||
setChoice(playerA, "Silvercoat Lion");
|
||||
|
||||
setStopAt(3, PhaseStep.BEGIN_COMBAT);
|
||||
execute();
|
||||
|
||||
assertGraveyardCount(playerB, "Silvercoat Lion", 1);
|
||||
assertGraveyardCount(playerA, "Vesuvan Doppelganger", 0);
|
||||
|
||||
assertPermanentCount(playerA, "Silvercoat Lion", 2);
|
||||
assertPermanentCount(playerB, "Silvercoat Lion", 0);
|
||||
|
||||
assertHandCount(playerB, 2);
|
||||
|
||||
boolean whiteLion = false;
|
||||
boolean blueLion = false;
|
||||
for (Permanent permanent : currentGame.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), playerA.getId(), currentGame)) {
|
||||
if (permanent.getColor(currentGame).isWhite()) {
|
||||
whiteLion = true;
|
||||
}
|
||||
if (permanent.getColor(currentGame).isBlue()) {
|
||||
blueLion = true;
|
||||
}
|
||||
}
|
||||
|
||||
Assert.assertTrue("There should be a white and a blue Silvercoat Lion be on the battlefield", blueLion && whiteLion);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue