From b30a6c4b150dfdeef92ef4139bb15625c8330d06 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 19 Nov 2015 23:28:12 +0100 Subject: [PATCH] * Cryptoplasm - Fixed that the copied creature did not have the triggered ability (fixes #1367). --- .../mage/sets/commander/TheMimeoplasm.java | 2 +- .../sets/mirrodinbesieged/Cryptoplasm.java | 9 +++----- .../mage/test/cards/copy/CryptoplasmTest.java | 21 +++++++++++++++++++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/Mage.Sets/src/mage/sets/commander/TheMimeoplasm.java b/Mage.Sets/src/mage/sets/commander/TheMimeoplasm.java index 7ff4058deb2..f5d7604ef74 100644 --- a/Mage.Sets/src/mage/sets/commander/TheMimeoplasm.java +++ b/Mage.Sets/src/mage/sets/commander/TheMimeoplasm.java @@ -112,7 +112,7 @@ class TheMimeoplasmEffect extends OneShotEffect { Cards cardsToExile = new CardsImpl(); cardsToExile.add(cardToCopy); cardsToExile.add(cardForCounters); - controller.moveCards(cardsToExile, Zone.GRAVEYARD, Zone.EXILED, source, game); + controller.moveCards(cardsToExile, Zone.EXILED, source, game); CopyEffect copyEffect = new CopyEffect(Duration.Custom, cardToCopy, source.getSourceId()); game.addEffect(copyEffect, source); permanent.addCounters(CounterType.P1P1.createInstance(cardForCounters.getPower().getValue()), game); diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/Cryptoplasm.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/Cryptoplasm.java index 083bee110ab..cb57582bc57 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/Cryptoplasm.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/Cryptoplasm.java @@ -33,7 +33,6 @@ import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.CopyEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Outcome; @@ -102,8 +101,7 @@ class CryptoplasmEffect extends OneShotEffect { public boolean apply(Game game, final Ability source) { Permanent creatureToCopy = game.getPermanent(getTargetPointer().getFirst(game, source)); if (creatureToCopy != null) { - CopyEffect effect = new CopyEffect(creatureToCopy, source.getSourceId()); - effect.setApplier(new ApplyToPermanent() { + ApplyToPermanent applier = new ApplyToPermanent() { @Override public Boolean apply(Game game, Permanent permanent) { Ability upkeepAbility = new BeginningOfUpkeepTriggeredAbility(new CryptoplasmEffect(), TargetController.YOU, true); @@ -120,9 +118,8 @@ class CryptoplasmEffect extends OneShotEffect { return true; } - }); - game.addEffect(effect, source); - + }; + game.copyPermanent(creatureToCopy, source.getSourceId(), source, applier); } return true; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/CryptoplasmTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/CryptoplasmTest.java index f57e5f93424..f2985fdfaac 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/CryptoplasmTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/CryptoplasmTest.java @@ -114,4 +114,25 @@ public class CryptoplasmTest extends CardTestPlayerBase { assertLife(playerB, 16); assertLife(playerA, 25); } + + @Test + public void testTransformMultipleTime() { + // At the beginning of your upkeep, you may have Cryptoplasm become a copy of another target creature. If you do, Cryptoplasm gains this ability. + addCard(Zone.BATTLEFIELD, playerA, "Cryptoplasm", 1); + addCard(Zone.BATTLEFIELD, playerA, "Island", 3); + + addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1); // 6/4 + addCard(Zone.BATTLEFIELD, playerB, "Craw Wurm", 1); // 6/4 + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cryptoplasm"); + addTarget(playerA, "Silvercoat Lion"); + addTarget(playerA, "Craw Wurm"); + setStopAt(5, PhaseStep.PRECOMBAT_MAIN); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + assertPermanentCount(playerA, "Silvercoat Lion", 0); + assertPermanentCount(playerA, "Craw Wurm", 1); + } }