From b382865e8da3bf5854c2e8eed4c237bb97eb957d Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 25 Mar 2015 15:13:46 +0100 Subject: [PATCH] * Ashcloud Phoenix - Fixed that the dies triggered abilitiy worked if he died face down. --- .../cards/abilities/keywords/MorphTest.java | 41 ++++++++++++++++++- Mage/src/mage/abilities/AbilityImpl.java | 8 ---- .../mage/abilities/TriggeredAbilities.java | 6 ++- .../common/DiesTriggeredAbility.java | 3 +- .../BecomesFaceDownCreatureEffect.java | 6 +-- 5 files changed, 49 insertions(+), 15 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MorphTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MorphTest.java index 5215e5698c5..a741e5c6d2e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MorphTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MorphTest.java @@ -116,7 +116,7 @@ public class MorphTest extends CardTestPlayerBase { /** * Test that the triggered "turned face up" ability of Pine Walker does not trigger - * aas long as Pine Walker is not turned face up. + * as long as Pine Walker is not turned face up. * */ @Test @@ -366,7 +366,7 @@ public class MorphTest extends CardTestPlayerBase { } /** - * Check that an effect like "arget creature and all other creatures with the same name" does + * Check that an effect like "Target creature and all other creatures with the same name" does * only effect one face down creature, also if multiple on the battlefield. Because they have no * name, they don't have the same name. * @@ -469,4 +469,41 @@ public class MorphTest extends CardTestPlayerBase { } } + /** + * Check that a DiesTriggeredAbility of a creature does not trigger + * if the creature dies face down + */ + + @Test + public void testDiesTriggeredDoesNotTriggerIfFaceDown() { + addCard(Zone.HAND, playerA, "Ashcloud Phoenix", 1); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 3); + + addCard(Zone.HAND, playerB, "Lightning Bolt", 1); + addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1); + + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Ashcloud Phoenix"); + setChoice(playerA, "Yes"); // cast it face down as 2/2 creature + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "face down creature"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + + assertGraveyardCount(playerB, "Lightning Bolt", 1); + assertGraveyardCount(playerA, "Ashcloud Phoenix", 1); + + + for (Card card: playerA.getGraveyard().getCards(currentGame)) { + if (card.getName().equals("Ashcloud Phoenix")) { + Assert.assertEquals("Ashcloud Phoenix has to be face up in graveyard", false, card.isFaceDown(currentGame)); + break; + } + } + + } } diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 877064d6716..ed9b1df7b5a 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -895,14 +895,6 @@ public abstract class AbilityImpl implements Ability { return false; } } - // else if (object instanceof PermanentCard) { - // this check prevents Flying to work if assigned to a face down creature - // Why is this neccessary?? -// if (((PermanentCard)object).isFaceDown(game)&& !this.getWorksFaceDown()) { -// return false; -// } -// } - // check against current state Zone test = game.getState().getZone(parameterSourceId); return test != null && zone.match(test); diff --git a/Mage/src/mage/abilities/TriggeredAbilities.java b/Mage/src/mage/abilities/TriggeredAbilities.java index a306d31b486..705efd3737a 100644 --- a/Mage/src/mage/abilities/TriggeredAbilities.java +++ b/Mage/src/mage/abilities/TriggeredAbilities.java @@ -70,7 +70,8 @@ public class TriggeredAbilities extends ConcurrentHashMap abilities = new ArrayList<>(); + List abilitiesToRemove = new ArrayList<>(); for (Ability ability : permanent.getAbilities()) { if (card != null && !card.getAbilities().contains(ability)) { // gained abilities from other sources won't be removed @@ -174,9 +174,9 @@ public class BecomesFaceDownCreatureEffect extends ContinuousEffectImpl implemen } } } - abilities.add(ability); + abilitiesToRemove.add(ability); } - permanent.getAbilities().removeAll(abilities); + permanent.getAbilities().removeAll(abilitiesToRemove); if (turnFaceUpAbility != null) { permanent.addAbility(turnFaceUpAbility, source.getSourceId(), game); }