diff --git a/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java b/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java index 08e41e3fe4b..3b647b6fbcc 100644 --- a/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java +++ b/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java @@ -28,9 +28,6 @@ package mage.sets.darkascension; import java.util.UUID; - -import mage.constants.CardType; -import mage.constants.Rarity; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DiesTriggeredAbility; @@ -40,7 +37,9 @@ import mage.abilities.keyword.TransformAbility; import mage.abilities.keyword.VigilanceAbility; import mage.cards.Card; import mage.cards.CardImpl; +import mage.constants.CardType; import mage.constants.Outcome; +import mage.constants.Rarity; import mage.constants.Zone; import mage.game.Game; import mage.game.permanent.Permanent; diff --git a/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java b/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java index 93ef30220de..047b256b2e1 100644 --- a/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java +++ b/Mage.Sets/src/mage/sets/timespiral/AngelsGrace.java @@ -138,11 +138,6 @@ class AngelsGraceReplacementEffect extends ReplacementEffectImpl { return false; } - @Override - public boolean apply(Game game, Ability source) { - return false; - } - @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { return false; diff --git a/Mage.Sets/src/mage/sets/urzassaga/AngelicChorus.java b/Mage.Sets/src/mage/sets/urzassaga/AngelicChorus.java index 9c02be33dc9..aa90ac91eed 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/AngelicChorus.java +++ b/Mage.Sets/src/mage/sets/urzassaga/AngelicChorus.java @@ -53,10 +53,8 @@ public class AngelicChorus extends CardImpl { super(ownerId, 3, "Angelic Chorus", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}{W}"); this.expansionSetCode = "USG"; - this.color.setWhite(true); - - Ability ability = new AngelicChorusTriggeredAbility(); - this.addAbility(ability); + // Whenever a creature enters the battlefield under your control, you gain life equal to its toughness. + this.addAbility(new AngelicChorusTriggeredAbility()); } public AngelicChorus(final AngelicChorus card) { @@ -79,16 +77,18 @@ class AngelicChorusTriggeredAbility extends TriggeredAbilityImpl { super(ability); } + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == EventType.ENTERS_THE_BATTLEFIELD; + } + @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == EventType.ENTERS_THE_BATTLEFIELD) { - Permanent permanent = game.getPermanent(event.getTargetId()); - if (permanent.getCardType().contains(CardType.CREATURE) - && permanent.getControllerId().equals(this.controllerId)) { - Effect effect = this.getEffects().get(0); - effect.setValue("lifeSource", event.getTargetId()); - return true; - } + Permanent permanent = game.getPermanent(event.getTargetId()); + if (permanent.getCardType().contains(CardType.CREATURE) + && permanent.getControllerId().equals(this.controllerId)) { + this.getEffects().get(0).setValue("lifeSource", event.getTargetId()); + return true; } return false; } @@ -123,15 +123,12 @@ class AngelicChorusEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { UUID creatureId = (UUID) getValue("lifeSource"); - Permanent creature = game.getPermanent(creatureId); - if (creature == null) { - creature = (Permanent) game.getLastKnownInformation(creatureId, Zone.BATTLEFIELD); - } + Permanent creature = game.getPermanentOrLKIBattlefield(creatureId); if (creature != null) { int amount = creature.getToughness().getValue(); Player player = game.getPlayer(source.getControllerId()); if (player != null) { - player.gainLife(amount, game); + player.gainLife(amount, game); } return true; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/conditional/twofaced/TwoFacedCardEffectsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/conditional/twofaced/TwoFacedCardEffectsTest.java index 722e6b8e821..4628fd55c10 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/conditional/twofaced/TwoFacedCardEffectsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/conditional/twofaced/TwoFacedCardEffectsTest.java @@ -112,4 +112,25 @@ public class TwoFacedCardEffectsTest extends CardTestPlayerBase { assertPermanentCount(playerB, "Howlpack Alpha", 1); } + /** + * Tests that triggered abilities of the frontside do not trigger if the card is transformed + * + */ + @Test + public void testTransformedDOesNotTriggerFrontsideAbilities() { + addCard(Zone.BATTLEFIELD, playerA, "Loyal Cathar"); + + addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1); + addCard(Zone.HAND, playerB, "Lightning Bolt",2); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "Loyal Cathar"); + castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "Unhallowed Cathar"); + + setStopAt(3, PhaseStep.PRECOMBAT_MAIN); + execute(); + + assertGraveyardCount(playerB, "Lightning Bolt", 2); + assertPermanentCount(playerA, "Unhallowed Cathar", 0); + assertGraveyardCount(playerA, "Loyal Cathar", 1); + } } diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index d38d793a59b..b4c7943d92a 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -67,7 +67,6 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.command.Emblem; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.events.ManaEvent; import mage.game.permanent.Permanent; import mage.game.permanent.PermanentCard; diff --git a/Mage/src/mage/abilities/TriggeredAbilities.java b/Mage/src/mage/abilities/TriggeredAbilities.java index 903a97a8dca..bb56c328d19 100644 --- a/Mage/src/mage/abilities/TriggeredAbilities.java +++ b/Mage/src/mage/abilities/TriggeredAbilities.java @@ -105,16 +105,16 @@ public class TriggeredAbilities extends ConcurrentHashMap