diff --git a/Mage.Sets/src/mage/cards/t/TempleOfPower.java b/Mage.Sets/src/mage/cards/t/TempleOfPower.java index 108d6ce97ee..72e3d537c9a 100644 --- a/Mage.Sets/src/mage/cards/t/TempleOfPower.java +++ b/Mage.Sets/src/mage/cards/t/TempleOfPower.java @@ -18,6 +18,7 @@ import mage.constants.TimingRule; import mage.constants.WatcherScope; import mage.constants.Zone; import mage.game.Game; +import mage.game.command.Emblem; import mage.game.events.DamagedEvent; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; @@ -126,18 +127,28 @@ class TempleOfPowerWatcher extends Watcher { } MageObject sourceObject; - UUID sourceControllerId; + UUID sourceControllerId = null; Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(event.getSourceId()); - if (sourcePermanent == null) { - sourceObject = game.getSpellOrLKIStack(event.getSourceId()); - sourceControllerId = ((StackObject) sourceObject).getControllerId(); - } else { + if (sourcePermanent != null) { + // source is a permanent. sourceObject = sourcePermanent; sourceControllerId = sourcePermanent.getControllerId(); + } else { + sourceObject = game.getSpellOrLKIStack(event.getSourceId()); + if (sourceObject != null) { + // source is a spell. + sourceControllerId = ((StackObject) sourceObject).getControllerId(); + } else { + // source is an Emblem. + sourceObject = game.getObject(event.getSourceId()); + if (sourceObject instanceof Emblem) { + sourceControllerId = ((Emblem) sourceObject).getControllerId(); + } + } } // watch only red sources dealing damage - if (sourceObject == null || !sourceObject.getColor().isRed()) { + if (sourceObject == null || sourceControllerId == null || !sourceObject.getColor().isRed()) { return; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/OjerAxonilDeepestMightTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/OjerAxonilDeepestMightTest.java index b3041b950a6..117df1b3b7e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/OjerAxonilDeepestMightTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/OjerAxonilDeepestMightTest.java @@ -3,11 +3,11 @@ package org.mage.test.cards.single.lci; import mage.constants.PhaseStep; import mage.constants.Zone; +import mage.game.command.emblems.ChandraTorchOfDefianceEmblem; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; /** - * * @author Susucr */ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase { @@ -16,15 +16,15 @@ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase { * Ojer Axonil, Deepest Might * {2}{R}{R} * Legendary Creature — God - * + *
* Trample * If a red source you control would deal an amount of noncombat damage less than Ojer Axonil’s power to an opponent, that source deals damage equal to Ojer Axonil’s power instead. * When Ojer Axonil dies, return it to the battlefield tapped and transformed under its owner’s control. * 4/4 - * + *
* Temple of Power * Land - * + *
* (Transforms from Ojer Axonil, Deepest Might.) * {T}: Add {R}. * {2}{R}, {T}: Transform Temple of Power. Activate only if red sources you controlled dealt 4 or more noncombat damage this turn and only as a sorcery. @@ -37,7 +37,7 @@ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase { * Lightning Bolt * {R} * Instant - * + *
* Lightning Bolt deals 3 damage to any target. */ private static final String bolt = "Lightning Bolt"; @@ -45,7 +45,7 @@ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase { * Lava Axe * {4}{R} * Sorcery - * + *
* Lava Axe deals 5 damage to target player or planeswalker. */ private static final String axe = "Lava Axe"; @@ -57,7 +57,7 @@ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase { addCard(Zone.BATTLEFIELD, playerA, ojer, 1); addCard(Zone.HAND, playerA, bolt, 1); addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1); - + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, bolt, playerB); setStopAt(1, PhaseStep.BEGIN_COMBAT); @@ -191,4 +191,26 @@ public class OjerAxonilDeepestMightTest extends CardTestPlayerBase { assertPermanentCount(playerA, ojer, 1); assertTapped(ojer, true); } + + @Test + public void test_watching_Chandra_emblem_damage() { + setStrictChooseMode(true); + + addCard(Zone.BATTLEFIELD, playerA, ojer, 1); + addCard(Zone.HAND, playerA, "Doom Blade"); // destroy ojer + addCard(Zone.HAND, playerA, "Lightning Bolt"); // 3 damage instant + addCard(Zone.BATTLEFIELD, playerA, "Badlands", 3); + addEmblem(playerA, new ChandraTorchOfDefianceEmblem()); // Whenever you cast a spell, this emblem deals 5 damage to any target. + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Doom Blade", ojer); + addTarget(playerA, playerB); //emblem triggering + waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Lightning Bolt", playerB); + addTarget(playerA, playerB); //emblem triggering + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerB, 20 - 5 - 3 - 5); + } }