fix #12022 (Shipwreck Sentry)

This commit is contained in:
xenohedron 2024-03-29 00:27:18 -04:00
parent cb28fb5a56
commit a3d4293e0d
3 changed files with 63 additions and 2 deletions

View file

@ -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());
}
}

View file

@ -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 didnt 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);
}
}

View file

@ -50,7 +50,7 @@ public class PermanentsEnteredBattlefieldWatcher extends Watcher {
}
public List<Permanent> getThisTurnEnteringPermanents(UUID playerId) {
return enteringBattlefield.get(playerId);
return enteringBattlefield.getOrDefault(playerId, Collections.emptyList());
}
public boolean anotherCreatureEnteredBattlefieldUnderPlayersControlLastTurn(Permanent sourcePermanent, Game game) {