diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/VoiceOfResurgence.java b/Mage.Sets/src/mage/sets/dragonsmaze/VoiceOfResurgence.java index a10dbc38f58..a449e2d7fd8 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/VoiceOfResurgence.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/VoiceOfResurgence.java @@ -80,6 +80,7 @@ class VoiceOfResurgenceTriggeredAbility extends TriggeredAbilityImpl { public VoiceOfResurgenceTriggeredAbility() { super(Zone.BATTLEFIELD, new CreateTokenEffect(new VoiceOfResurgenceToken()), false); + setLeavesTheBattlefieldTrigger(true); } public VoiceOfResurgenceTriggeredAbility(final VoiceOfResurgenceTriggeredAbility ability) { diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java index 7326f3ec5cc..d677381ae8c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java @@ -576,4 +576,35 @@ public class PhantasmalImageTest extends CardTestPlayerBase { assertPermanentCount(playerB, "Wurm", 2); } + + /** + * A Phantasmal Image that was copying a Voice of Resurgence died and left + * no token behind. + */ + @Test + public void testVoiceOfResurgence() { + // Whenever an opponent casts a spell during your turn or when Voice of Resurgence dies, put a green and white Elemental creature token onto the battlefield with "This creature's power and toughness are each equal to the number of creatures you control." + addCard(Zone.BATTLEFIELD, playerB, "Voice of Resurgence"); + + addCard(Zone.BATTLEFIELD, playerA, "Island", 2); + addCard(Zone.HAND, playerA, "Phantasmal Image"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Phantasmal Image"); // not targeted + setChoice(playerB, "Voice of Resurgence"); + + attack(2, playerB, "Voice of Resurgence"); + block(2, playerA, "Voice of Resurgence", "Voice of Resurgence"); + setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertLife(playerB, 20); + assertLife(playerA, 20); + + assertGraveyardCount(playerA, "Phantasmal Image", 1); + assertGraveyardCount(playerB, "Voice of Resurgence", 1); + + assertPermanentCount(playerB, "Elemental", 1); + assertPermanentCount(playerA, "Elemental", 1); + + } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/VoiceOfResurgenceTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/VoiceOfResurgenceTest.java index 0fcd6d4d748..2f2f46b511e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/VoiceOfResurgenceTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/VoiceOfResurgenceTest.java @@ -29,6 +29,7 @@ package org.mage.test.cards.triggers.dies; import mage.constants.PhaseStep; import mage.constants.Zone; +import mage.filter.Filter; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -72,8 +73,8 @@ public class VoiceOfResurgenceTest extends CardTestPlayerBase { assertGraveyardCount(playerA, "Treachery", 1); assertGraveyardCount(playerB, "Voice of Resurgence", 1); - assertPermanentCount(playerA, "Elemental", 1); - assertPowerToughness(playerA, "Elemental", 2, 2); + assertPermanentCount(playerA, "Elemental", 2); // one from the Lightning Bolt and one from the Voice of Resurgence dying + assertPowerToughness(playerA, "Elemental", 3, 3, Filter.ComparisonScope.All); assertTappedCount("Island", true, 0); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnTransformedSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnTransformedSourceEffect.java index 6f3170a0700..074708b38b4 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnTransformedSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ExileAndReturnTransformedSourceEffect.java @@ -42,7 +42,7 @@ public class ExileAndReturnTransformedSourceEffect extends OneShotEffect { super(Outcome.Benefit); this.additionalEffect = additionalEffect; this.staticText = "exile {this}, then return " + (gender.equals(Gender.MALE) ? "him" : "her") - + " to the battlefield transformed under" + (gender.equals(Gender.MALE) ? "his" : "her") + " owner's control"; + + " to the battlefield transformed under " + (gender.equals(Gender.MALE) ? "his" : "her") + " owner's control"; } public ExileAndReturnTransformedSourceEffect(final ExileAndReturnTransformedSourceEffect effect) { diff --git a/Mage/src/main/java/mage/choices/Choices.java b/Mage/src/main/java/mage/choices/Choices.java index 5d4ebbcfe73..66d769fcdc2 100644 --- a/Mage/src/main/java/mage/choices/Choices.java +++ b/Mage/src/main/java/mage/choices/Choices.java @@ -24,14 +24,13 @@ * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. -*/ - + */ package mage.choices; import java.util.ArrayList; import java.util.List; -import mage.constants.Outcome; import mage.abilities.Ability; +import mage.constants.Outcome; import mage.game.Game; import mage.players.Player; @@ -43,11 +42,12 @@ public class Choices extends ArrayList { protected Outcome outcome; - public Choices() {} + public Choices() { + } public Choices(final Choices choices) { this.outcome = choices.outcome; - for (Choice choice: choices) { + for (Choice choice : choices) { this.add(choice.copy()); } } @@ -57,8 +57,8 @@ public class Choices extends ArrayList { } public List getUnchosen() { - List unchosen = new ArrayList(); - for (Choice choice: this) { + List unchosen = new ArrayList<>(); + for (Choice choice : this) { if (!choice.isChosen()) { unchosen.add(choice); } @@ -67,13 +67,13 @@ public class Choices extends ArrayList { } public void clearChosen() { - for (Choice choice: this) { + for (Choice choice : this) { choice.clearChoice(); } } public boolean isChosen() { - for (Choice choice: this) { + for (Choice choice : this) { if (!choice.isChosen()) { return false; } diff --git a/Mage/src/main/java/mage/players/Player.java b/Mage/src/main/java/mage/players/Player.java index e15d22f1859..d5f34cb80dc 100644 --- a/Mage/src/main/java/mage/players/Player.java +++ b/Mage/src/main/java/mage/players/Player.java @@ -753,7 +753,7 @@ public interface Player extends MageItem, Copyable { /** * Uses card.moveToZone and posts a inform message about moving the card to - * graveyard into the game log + * library into the game log * * @param card * @param sourceId