From c6e2dc100c83eca1dafe4dc597247d3f1ee39b8b Mon Sep 17 00:00:00 2001 From: Samuel Sandeen Date: Tue, 13 Sep 2016 21:15:29 -0400 Subject: [PATCH 1/3] Don't not an equals outside the equals. --- Mage.Sets/src/mage/sets/zendikar/MindlessNull.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java b/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java index f452b543e56..e378c511db7 100644 --- a/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java +++ b/Mage.Sets/src/mage/sets/zendikar/MindlessNull.java @@ -90,7 +90,7 @@ class MindlessNullEffect extends RestrictionEffect { @Override public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - return !(game.getBattlefield().countAll(filter, source.getControllerId(), game) == 0); + return game.getBattlefield().countAll(filter, source.getControllerId(), game) != 0; } @Override From edd97587fca3381c5e07de0ab682a1fcce5873b7 Mon Sep 17 00:00:00 2001 From: Samuel Sandeen Date: Wed, 14 Sep 2016 19:30:14 -0400 Subject: [PATCH 2/3] Add code for a few edge cases in zone change handling Specifically this should fix the bugs that happen when tokens copy PermanentCards. --- .../src/main/java/mage/game/ZonesHandler.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/Mage/src/main/java/mage/game/ZonesHandler.java b/Mage/src/main/java/mage/game/ZonesHandler.java index 4d34f4b42ba..ab07a645e25 100644 --- a/Mage/src/main/java/mage/game/ZonesHandler.java +++ b/Mage/src/main/java/mage/game/ZonesHandler.java @@ -82,7 +82,11 @@ public class ZonesHandler { // Handle normal cases ZoneChangeEvent event = info.event; Zone toZone = event.getToZone(); - Card targetCard = game.getCard(event.getTargetId()); + Card targetCard = getTargetCard(game, event.getTargetId()); + if (targetCard == null) { + // This should never happen. + return; + } Cards cards; if (targetCard instanceof MeldCard) { cards = ((MeldCard) targetCard).getHalves(); @@ -161,6 +165,19 @@ public class ZonesHandler { } } + private static Card getTargetCard(Game game, UUID targetId) { + if (game.getCard(targetId) != null) { + return game.getCard(targetId); + } + if (game.getMeldCard(targetId) != null) { + return game.getMeldCard(targetId); + } + if (game.getPermanent(targetId) != null) { + return game.getPermanent(targetId); + } + return null; + } + private static boolean maybeRemoveFromSourceZone(ZoneChangeInfo info, Game game) { // Handle Unmelded Cards if (info instanceof ZoneChangeInfo.Unmelded) { @@ -185,7 +202,11 @@ public class ZonesHandler { } // Handle all normal cases ZoneChangeEvent event = info.event; - Card card = game.getCard(event.getTargetId()); + Card card = getTargetCard(game, event.getTargetId()); + if (card == null) { + // If we can't find the card we can't remove it. + return false; + } boolean success = false; if (card == null) { return success; @@ -200,6 +221,9 @@ public class ZonesHandler { Permanent permanent; if (card instanceof MeldCard) { permanent = new PermanentMeld(card, event.getPlayerId(), game); + } else if (card instanceof Permanent) { + // This should never happen. + permanent = (Permanent) card; } else { permanent = new PermanentCard(card, event.getPlayerId(), game); } @@ -239,7 +263,7 @@ public class ZonesHandler { if (success) { if (event.getToZone() == Zone.BATTLEFIELD && event.getTarget() != null) { event.getTarget().updateZoneChangeCounter(game, event); - } else { + } else if (!(card instanceof Permanent)) { card.updateZoneChangeCounter(game, event); } } From 91b4e024fb62a9374307fe43ec2e1c1d55b2db0e Mon Sep 17 00:00:00 2001 From: Samuel Sandeen Date: Wed, 14 Sep 2016 19:33:17 -0400 Subject: [PATCH 3/3] Remove a bit of duplicate code. --- Mage/src/main/java/mage/game/ZonesHandler.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/Mage/src/main/java/mage/game/ZonesHandler.java b/Mage/src/main/java/mage/game/ZonesHandler.java index ab07a645e25..2fcb1315a3a 100644 --- a/Mage/src/main/java/mage/game/ZonesHandler.java +++ b/Mage/src/main/java/mage/game/ZonesHandler.java @@ -208,9 +208,6 @@ public class ZonesHandler { return false; } boolean success = false; - if (card == null) { - return success; - } if (info.faceDown) { card.setFaceDown(true, game); }