From fde0ba284a1075596ef055d4de0fbe8279b30c07 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 10 Oct 2018 23:17:10 +0200 Subject: [PATCH] * Glarecaster - Fixed that its redirect ability allows for multiple redirects not only if damage is dealt at the same time (fixes #5368). --- .../replacement/redirect/GlarecasterTest.java | 48 +++++++++++++++++++ .../abilities/effects/RedirectionEffect.java | 3 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/replacement/redirect/GlarecasterTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/redirect/GlarecasterTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/redirect/GlarecasterTest.java new file mode 100644 index 00000000000..817761420f2 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/redirect/GlarecasterTest.java @@ -0,0 +1,48 @@ +package org.mage.test.cards.replacement.redirect; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ +public class GlarecasterTest extends CardTestPlayerBase { + + /** + * I can activate Glarecaster's redirection ability, immediately cast two + * Lightning Bolts on it and both get redirected towards the chosen target. + * If I pass until the next step and cast another Bolt on it, it's not being + * redirected anymore. + * + */ + @Test + public void testTwoTimesInstantSpellDamage() { + addCard(Zone.HAND, playerA, "Lightning Bolt", 2); + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2); + + // Flying + // {5}{W}: The next time damage would be dealt to Glarecaster and/or you this turn, that damage is dealt to any target instead. + addCard(Zone.BATTLEFIELD, playerB, "Glarecaster"); // Creature 3/3 + addCard(Zone.BATTLEFIELD, playerB, "Plains", 6); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerB, "{5}{W}: The next time damage would be dealt to", playerA); + + castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", playerB); + castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", "Glarecaster"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertGraveyardCount(playerA, "Lightning Bolt", 2); + + assertPermanentCount(playerB, "Glarecaster", 1); + + assertLife(playerA, 17); + assertLife(playerB, 17); + + } + +} diff --git a/Mage/src/main/java/mage/abilities/effects/RedirectionEffect.java b/Mage/src/main/java/mage/abilities/effects/RedirectionEffect.java index afea25b950a..262d7ab3bee 100644 --- a/Mage/src/main/java/mage/abilities/effects/RedirectionEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/RedirectionEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects; import mage.MageObject; @@ -47,6 +46,7 @@ public abstract class RedirectionEffect extends ReplacementEffectImpl { this.redirectTarget = effect.redirectTarget; this.amountToRedirect = effect.amountToRedirect; this.usageType = effect.usageType; + this.applyEffectsCounter = effect.applyEffectsCounter; } @Override @@ -80,6 +80,7 @@ public abstract class RedirectionEffect extends ReplacementEffectImpl { if (applyEffectsCounter > 0) { if (applyEffectsCounter < game.getState().getApplyEffectsCounter()) { this.discard(); + return false; } } else { applyEffectsCounter = game.getState().getApplyEffectsCounter();