diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/ncc/SyrixCarrierOfTheFlameTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/ncc/SyrixCarrierOfTheFlameTest.java index 5408e56ea6e..9e03139b766 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/ncc/SyrixCarrierOfTheFlameTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/ncc/SyrixCarrierOfTheFlameTest.java @@ -45,6 +45,35 @@ public class SyrixCarrierOfTheFlameTest extends CardTestPlayerBase { } + @Test + public void testDamageTriggerOpponentSource() { + String cremate = "Cremate"; // {B} Exile target card from a graveyard. Draw a card. + addCard(Zone.BATTLEFIELD, playerA, syrix); + addCard(Zone.BATTLEFIELD, playerA, phoenix); + addCard(Zone.GRAVEYARD, playerA, historian); + addCard(Zone.BATTLEFIELD, playerB, "Swamp"); + addCard(Zone.HAND, playerB, cremate); + + castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, cremate, historian); + + checkExileCount("exiled", 2, PhaseStep.POSTCOMBAT_MAIN, playerA, historian, 1); + checkLife("before trigger", 2, PhaseStep.POSTCOMBAT_MAIN, playerA, 20); + checkLife("before trigger", 2, PhaseStep.POSTCOMBAT_MAIN, playerB, 20); + + addTarget(playerA, phoenix); // target Phoenix + addTarget(playerA, playerB); // deals damage + + setStrictChooseMode(true); + setStopAt(3, PhaseStep.UPKEEP); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 16); + assertPowerToughness(playerA, syrix, 3, 3); + assertPowerToughness(playerA, phoenix, 4, 2); + + } + @Ignore("Usable zone issue, see #10550") @Test public void testCast() { diff --git a/Mage/src/main/java/mage/watchers/common/CardsLeftGraveyardWatcher.java b/Mage/src/main/java/mage/watchers/common/CardsLeftGraveyardWatcher.java index 68f3efe3add..9d9a1d9dc3d 100644 --- a/Mage/src/main/java/mage/watchers/common/CardsLeftGraveyardWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/CardsLeftGraveyardWatcher.java @@ -29,8 +29,12 @@ public class CardsLeftGraveyardWatcher extends Watcher { || ((ZoneChangeEvent) event).getFromZone() != Zone.GRAVEYARD) { return; } - UUID playerId = event.getPlayerId(); - if (playerId == null || game.getCard(event.getTargetId()) == null) { + Card card = game.getCard(event.getTargetId()); + if (card == null) { + return; + } + UUID playerId = card.getOwnerId(); + if (playerId == null) { return; } cardsLeftGraveyardThisTurn.computeIfAbsent(playerId, k -> new HashSet<>())