From a3d4293e0db17fcec11345948375e97bb54f6fef Mon Sep 17 00:00:00 2001 From: xenohedron Date: Fri, 29 Mar 2024 00:27:18 -0400 Subject: [PATCH] fix #12022 (Shipwreck Sentry) --- .../src/mage/cards/s/ShipwreckSentry.java | 2 +- .../cards/single/lci/ShipwreckSentryTest.java | 61 +++++++++++++++++++ .../PermanentsEnteredBattlefieldWatcher.java | 2 +- 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/lci/ShipwreckSentryTest.java diff --git a/Mage.Sets/src/mage/cards/s/ShipwreckSentry.java b/Mage.Sets/src/mage/cards/s/ShipwreckSentry.java index 7f53ccd66a7..96c5a3d44cc 100644 --- a/Mage.Sets/src/mage/cards/s/ShipwreckSentry.java +++ b/Mage.Sets/src/mage/cards/s/ShipwreckSentry.java @@ -77,7 +77,7 @@ class ShipwreckSentryWatcher extends Watcher { } EntersTheBattlefieldEvent eEvent = (EntersTheBattlefieldEvent) event; if (eEvent.getTarget() != null && eEvent.getTarget().isArtifact(game)) { - playerSet.add(eEvent.getTarget().getId()); + playerSet.add(eEvent.getTarget().getControllerId()); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/ShipwreckSentryTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/ShipwreckSentryTest.java new file mode 100644 index 00000000000..9f4bead5a3b --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/lci/ShipwreckSentryTest.java @@ -0,0 +1,61 @@ +package org.mage.test.cards.single.lci; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Assert; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author xenohedron + */ +public class ShipwreckSentryTest extends CardTestPlayerBase { + + /** + Shipwreck Sentry {1}{U} + Creature — Human Pirate + Defender + As long as an artifact entered the battlefield under your control this turn, Shipwreck Sentry can attack as though it didn’t have defender. + */ + private static final String sentry = "Shipwreck Sentry"; + + // {0} Artifact + private static final String relic = "Darksteel Relic"; + + @Test + public void testCantAttack() { + addCard(Zone.BATTLEFIELD, playerA, sentry); + addCard(Zone.HAND, playerA, relic); + + attack(1, playerA, sentry, playerB); + + setStrictChooseMode(true); + setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + try { + execute(); + } catch (AssertionError e) { + Assert.assertTrue("No artifact entered", + e.getMessage().contains("Can't find available command - attack:Shipwreck Sentry$defendingPlayer=PlayerB")); + } + + } + + @Test + public void testCanAttack() { + addCard(Zone.BATTLEFIELD, playerA, sentry); + addCard(Zone.HAND, playerA, relic); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, relic); + attack(1, playerA, sentry, playerB); + + setStrictChooseMode(true); + setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertPermanentCount(playerA, relic, 1); + assertTappedCount(sentry, true, 1); + assertLife(playerB, 17); + + } + +} diff --git a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java index 0ea9bbc3206..ba83140c7e1 100644 --- a/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java +++ b/Mage/src/main/java/mage/watchers/common/PermanentsEnteredBattlefieldWatcher.java @@ -50,7 +50,7 @@ public class PermanentsEnteredBattlefieldWatcher extends Watcher { } public List getThisTurnEnteringPermanents(UUID playerId) { - return enteringBattlefield.get(playerId); + return enteringBattlefield.getOrDefault(playerId, Collections.emptyList()); } public boolean anotherCreatureEnteredBattlefieldUnderPlayersControlLastTurn(Permanent sourcePermanent, Game game) {