From 5fa9a850b1f5eee2bde490d9d1c4f722c85da5f6 Mon Sep 17 00:00:00 2001 From: Alex Vasile <48962821+Alex-Vasile@users.noreply.github.com> Date: Fri, 30 Sep 2022 19:55:04 -0400 Subject: [PATCH] [DMC] Fix Zaxara triggered ability. Closes #9597. --- .../src/mage/cards/z/ZaxaraTheExemplary.java | 6 +- .../single/dmc/ZaxaraTheExemplaryTest.java | 58 +++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/dmc/ZaxaraTheExemplaryTest.java diff --git a/Mage.Sets/src/mage/cards/z/ZaxaraTheExemplary.java b/Mage.Sets/src/mage/cards/z/ZaxaraTheExemplary.java index c0e1fe18bf..2b0cd03bff 100644 --- a/Mage.Sets/src/mage/cards/z/ZaxaraTheExemplary.java +++ b/Mage.Sets/src/mage/cards/z/ZaxaraTheExemplary.java @@ -83,10 +83,10 @@ class ZaxaraTheExemplaryHydraTokenAbility extends TriggeredAbilityImpl { } Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell == null || !spell.getSpellAbility().getManaCostsToPay().containsX()) { - game.getState().setValue(this.getSourceId() + ZaxaraTheExemplary.needPrefix, spell); - return true; + return false; } - return false; + game.getState().setValue(this.getSourceId() + ZaxaraTheExemplary.needPrefix, spell); + return true; } @Override diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/dmc/ZaxaraTheExemplaryTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/dmc/ZaxaraTheExemplaryTest.java new file mode 100644 index 0000000000..de21b95693 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/dmc/ZaxaraTheExemplaryTest.java @@ -0,0 +1,58 @@ +package org.mage.test.cards.single.dmc; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * {@link mage.cards.z.ZaxaraTheExemplary Zaxara, the Exemplar} + * Deathtouch + * {T}: Add two mana of any one color. + * Whenever you cast a spell with {X} in its mana cost, create a 0/0 green Hydra creature token, then put X +1/+1 counters on it. + * + * @author Alex-Vasile + */ +public class ZaxaraTheExemplaryTest extends CardTestPlayerBase { + + private static final String zaxara = "Zaxara, the Exemplary"; + + /** + * Reported bug: https://github.com/magefree/mage/issues/9597 + * Whenever you cast a spell with X in its cost and Zaxara on the board, Zaxara does nothing. + */ + @Test + public void triggersOfXSpells() { + // {X} + String stonecoilSerpent = "Stonecoil Serpent"; + addCard(Zone.HAND, playerA, stonecoilSerpent); + addCard(Zone.BATTLEFIELD, playerA, zaxara); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, stonecoilSerpent); + setChoice(playerA, "X=2"); + + setStopAt(1, PhaseStep.PRECOMBAT_MAIN); + execute(); + + assertPermanentCount(playerA, "Hydra Token", 1); + assertPowerToughness(playerA, "Hydra Token", 2, 2); + } + + /** + * Reported bug: https://github.com/magefree/mage/issues/9597 + * Whenever you cast a spell without X in its cost and Zaxara on the board, Zaxara will create a 0/0 Hydra and put no counters on it. + */ + @Test + public void DoesNotTriggerOfNonXSpells() { + String lighningBolt = "Lightning Bolt"; + addCard(Zone.HAND, playerA, lighningBolt); + addCard(Zone.BATTLEFIELD, playerA, zaxara); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, lighningBolt, playerB); + waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN, 1); + checkStackSize("Should not have triggered", 1, PhaseStep.PRECOMBAT_MAIN, playerA, 0); + + setStopAt(1, PhaseStep.PRECOMBAT_MAIN); + execute(); + } +}