diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java index baadef53665..4ac2ad9cce3 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer7.java @@ -96,18 +96,13 @@ public class ComputerPlayer7 extends ComputerPlayer6 { pass(game); return false; case DECLARE_ATTACKERS: - if (!game.getActivePlayerId().equals(playerId)) { - printOutState(game); - if (actions.isEmpty()) { - logger.info("Sim Calculate declare attackers actions ----------------------------------------------------- "); - calculateActions(game); - } - act(game); - return true; - } else { - pass(game); + printOutState(game); + if (actions.isEmpty()) { + logger.info("Sim Calculate declare attackers actions ----------------------------------------------------- "); + calculateActions(game); } - return false; + act(game); + return true; case DECLARE_BLOCKERS: printOutState(game); if (actions.isEmpty()) { diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index cbe5cdd49ed..e9a293566d9 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -94,7 +94,7 @@ public class ComputerPlayer extends PlayerImpl implements Player { private static final Logger log = Logger.getLogger(ComputerPlayer.class); protected int PASSIVITY_PENALTY = 5; // Penalty value for doing nothing if some actions are availble - protected boolean ALLOW_INTERRUPT = true; // change this for test / debugging purposes to false to switch off interrupts while debugging + protected boolean ALLOW_INTERRUPT = true; // change this for test to false / debugging purposes to false to switch off interrupts while debugging private transient Map unplayable = new TreeMap<>(); private transient List playableNonInstant = new ArrayList<>(); diff --git a/Mage.Sets/src/mage/cards/d/DivineVerdict.java b/Mage.Sets/src/mage/cards/d/DivineVerdict.java index 0a0b15191d3..3c38328a155 100644 --- a/Mage.Sets/src/mage/cards/d/DivineVerdict.java +++ b/Mage.Sets/src/mage/cards/d/DivineVerdict.java @@ -42,9 +42,9 @@ import mage.target.common.TargetCreaturePermanent; public class DivineVerdict extends CardImpl { public DivineVerdict(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{3}{W}"); - + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{W}"); + // Destroy target attacking or blocking creature. this.getSpellAbility().addTarget(new TargetCreaturePermanent(new FilterAttackingOrBlockingCreature())); this.getSpellAbility().addEffect(new DestroyTargetEffect()); } diff --git a/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java b/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java index 7a622b726bd..57814e4f17f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastCreaturesTest.java @@ -57,7 +57,7 @@ public class CastCreaturesTest extends CardTestPlayerBaseAI { * first creature */ @Test - // TODO: find out why sometimes Produces error probably because of wrong mana usage of the AI - Not solved yet + // TODO: Find out why sometimes this produces an error - probably because of wrong mana usage of the AI - Not solved yet public void testSimpleCast2() { addCard(Zone.HAND, playerA, "Silvercoat Lion"); addCard(Zone.HAND, playerA, "Silvercoat Lion"); @@ -67,6 +67,8 @@ public class CastCreaturesTest extends CardTestPlayerBaseAI { setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); + assertTappedCount("Plains", true, 2); + assertTappedCount("Mountain", true, 2); assertPermanentCount(playerA, "Silvercoat Lion", 2); } diff --git a/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastDestroySpellsTest.java b/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastDestroySpellsTest.java index 792284f65ab..3cb5cbba370 100644 --- a/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastDestroySpellsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/AI/basic/CastDestroySpellsTest.java @@ -65,4 +65,26 @@ public class CastDestroySpellsTest extends CardTestPlayerBaseAI { assertGraveyardCount(playerB, "Silvercoat Lion", 1); } + /** + * Cast Divine Verdict if the opponent attacks + */ + @Test + public void testCastSpellTargingAttacker() { + addCard(Zone.BATTLEFIELD, playerA, "Plains", 4); + + // Destroy target attacking or blocking creature. + addCard(Zone.HAND, playerA, "Divine Verdict"); // INSTANT {3}{W} + + addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion"); + + attack(2, playerB, "Silvercoat Lion"); + + setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertLife(playerA, 20); + + assertGraveyardCount(playerA, "Divine Verdict", 1); + assertGraveyardCount(playerB, "Silvercoat Lion", 1); + } } diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index c09efe959ea..8332a1d8888 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -1256,7 +1256,9 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { return false; } if (connectedCards.containsKey("imprint")) { - this.connectedCards.get("imprint").add(imprintedCard); + if (!this.connectedCards.get("imprint").contains(imprintedCard)) { + this.connectedCards.get("imprint").add(imprintedCard); + } } else { List imprinted = new ArrayList<>(); imprinted.add(imprintedCard);