diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/ProgenitorMimic.java b/Mage.Sets/src/mage/sets/dragonsmaze/ProgenitorMimic.java index 90af61902c6..ec625d6f6ce 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/ProgenitorMimic.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/ProgenitorMimic.java @@ -28,11 +28,6 @@ package mage.sets.dragonsmaze; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.constants.TargetController; -import mage.constants.Zone; import mage.MageInt; import mage.MageObject; import mage.abilities.Ability; @@ -46,12 +41,19 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CopyEffect; import mage.abilities.effects.common.CopyPermanentEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.filter.predicate.Predicates; import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.EmptyToken; +import mage.game.permanent.token.Token; +import mage.util.CardUtil; import mage.util.functions.ApplyToPermanent; /** @@ -141,6 +143,7 @@ class ProgenitorMimicCopyEffect extends OneShotEffect } if (copyFromPermanent != null) { EmptyToken token = new EmptyToken(); + CardUtil.copyTo(token).from(copyFromPermanent); // needed so that entersBattlefied triggered abilities see the attributes (e.g. Master Biomancer) token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); Permanent sourcePermanent = game.getPermanent(token.getLastAddedToken()); if (sourcePermanent != null) { diff --git a/Mage.Sets/src/mage/sets/gatecrash/MasterBiomancer.java b/Mage.Sets/src/mage/sets/gatecrash/MasterBiomancer.java index 2536bb2de8a..25e0063f4eb 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/MasterBiomancer.java +++ b/Mage.Sets/src/mage/sets/gatecrash/MasterBiomancer.java @@ -28,8 +28,6 @@ package mage.sets.gatecrash; import java.util.UUID; - -import mage.constants.*; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -37,6 +35,11 @@ import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.continious.AddCardSubTypeTargetEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/MasterBiomancerTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/MasterBiomancerTest.java index cf402815f8d..ebea5c555aa 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/MasterBiomancerTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/MasterBiomancerTest.java @@ -82,4 +82,49 @@ public class MasterBiomancerTest extends CardTestPlayerBase { // P/T = 2/5 + 2* (2 * +1/+1) = 6 / 9 assertPowerToughness(playerA, "Mindeye Drake", 6, 9); } + + + /** + * Progenitor Mimic + * Creature - Shapeshifter + * 0/0 + * You may have Progenitor Mimic enter the battlefield as a copy of any creature on + * the battlefield except it gains "At the beginning of your upkeep, if this creature + * isn't a token, put a token onto the battlefield that's a copy of this creature." + * + * If Progenitor Mimic comes into play, it gets two +1/+1 counters from + * the Master Biomancer already in play. It copies the Master Biomancer and + * is therfore a 4/6 creature. + * The Token generated next round from Progenitor Mimic has to get 2 + 4 counters + * and is therefore a 8/10 creature. + */ + + @Test + public void testWithProgenitorMimic() { + + // a creature enters the battlefield and gets a counter for each point of power of Master Biomancer + + addCard(Zone.BATTLEFIELD, playerA, "Island", 3); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 3); + addCard(Zone.BATTLEFIELD, playerA, "Master Biomancer", 1); + addCard(Zone.HAND, playerA, "Progenitor Mimic"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Progenitor Mimic"); + playerA.addTarget("Master Biomancer"); + + setStopAt(3, PhaseStep.PRECOMBAT_MAIN); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + + assertPermanentCount(playerA, "Master Biomancer", 3); + + // the original Master Biomancer + assertPowerToughness(playerA, "Master Biomancer", 2, 4); + // the Progenitor Mimic copying the Master Biomancer + assertPowerToughness(playerA, "Master Biomancer", 4, 6); + // the first token created by the Progenitor Mimic copying the Master Biomancer + assertPowerToughness(playerA, "Master Biomancer", 8, 10); + } } diff --git a/Mage/src/mage/util/CardUtil.java b/Mage/src/mage/util/CardUtil.java index cb1c587e530..3b440a2dbaf 100644 --- a/Mage/src/mage/util/CardUtil.java +++ b/Mage/src/mage/util/CardUtil.java @@ -371,6 +371,7 @@ public class CardUtil { * Returns function that copies params\abilities from one card to {@link Token}. * * @param target + * @return */ public static CopyTokenFunction copyTo(Token target) { return new CopyTokenFunction(target);