From f7e4ed40e53da70b68e191728acf91cd0b185fd3 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 27 Mar 2016 18:45:45 +0200 Subject: [PATCH] [SOI] Fixed Altered Ego if no creature to copy was selected.. --- .../sets/shadowsoverinnistrad/AlteredEgo.java | 35 ++++++++++++++++++- .../mage/test/cards/copy/AlteredEgoTest.java | 18 ++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AlteredEgo.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AlteredEgo.java index 31b65add110..0e5f3c2ae40 100644 --- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AlteredEgo.java +++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/AlteredEgo.java @@ -29,6 +29,7 @@ package mage.sets.shadowsoverinnistrad; import java.util.UUID; import mage.MageInt; +import mage.abilities.Ability; import mage.abilities.common.CantBeCounteredAbility; import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.effects.Effect; @@ -37,8 +38,11 @@ import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; +import mage.counters.Counter; import mage.counters.CounterType; import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; /** * @@ -60,7 +64,7 @@ public class AlteredEgo extends CardImpl { Effect effect = new CopyPermanentEffect(new FilterCreaturePermanent(), null); effect.setText("a copy of any creature on the battlefield"); EntersBattlefieldAbility ability = new EntersBattlefieldAbility(effect, true); - effect = new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance()); + effect = new AlteredEgoAddCountersEffect(CounterType.P1P1.createInstance()); effect.setText(", except it enters with an additional X +1/+1 counters on it"); ability.addEffect(effect); this.addAbility(ability); @@ -75,3 +79,32 @@ public class AlteredEgo extends CardImpl { return new AlteredEgo(this); } } + +class AlteredEgoAddCountersEffect extends EntersBattlefieldWithXCountersEffect { + + public AlteredEgoAddCountersEffect(Counter counter) { + super(counter); + } + + public AlteredEgoAddCountersEffect(EntersBattlefieldWithXCountersEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanentEntering(source.getSourceId()); + if (permanent != null) { + // except only takes place if something was copied + if (permanent.isCopy()) { + return super.apply(game, source); + } + } + return false; + } + + @Override + public EntersBattlefieldWithXCountersEffect copy() { + return new AlteredEgoAddCountersEffect(this); + } + +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/AlteredEgoTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/AlteredEgoTest.java index bb813975213..fcd2c599341 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/AlteredEgoTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/AlteredEgoTest.java @@ -58,4 +58,22 @@ public class AlteredEgoTest extends CardTestPlayerBase { assertPowerToughness(playerA, "Silvercoat Lion", 5, 5); } + @Test + public void testNoCreatureToCopyAvailable() { + addCard(Zone.BATTLEFIELD, playerA, "Forest", 1); + addCard(Zone.BATTLEFIELD, playerA, "Island", 6); + // Altered Ego can't be countered. + // You may have Altered Ego enter the battlefield as a copy of any creature on the battlefield, except it enters with an additional X +1/+1 counters on it. + addCard(Zone.HAND, playerA, "Altered Ego"); // {X}{2}{G}{U} + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Altered Ego"); + setChoice(playerA, "X=3"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Altered Ego", 0); + assertGraveyardCount(playerA, "Altered Ego", 1); + + } }