From c04e273ac76f41b0f88bbb6014021ff12bfe42bd Mon Sep 17 00:00:00 2001
From: Sol
Date: Wed, 10 Feb 2016 15:10:44 +0000
Subject: [PATCH] - Myriad Landscape cannot search up lands without a land type
---
.../ability/effects/ChangeZoneEffect.java | 35 ++++++++++---------
.../src/main/java/forge/game/card/Card.java | 9 +++++
2 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java
index a98a9fcc670..c98d706d657 100644
--- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java
+++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java
@@ -52,9 +52,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
*
* changeHiddenOriginStackDescription.
*
- *
- * @param af
- * a {@link forge.game.ability.AbilityFactory} object.
+ *
* @param sa
* a {@link forge.game.spellability.SpellAbility} object.
* @return a {@link java.lang.String} object.
@@ -171,7 +169,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
} else if (origin.equals("Hand")) {
sb.append(chooserNames);
if (!chooserNames.equals(fetcherNames)) {
- sb.append(" looks at " + fetcherNames + "'s hand and ");
+ sb.append(" looks at ").append(fetcherNames).append("'s hand and ");
sb.append(destination.equals("Exile") ? "exiles " : "puts ");
sb.append(num).append(" of those ").append(type).append(" card(s)");
} else {
@@ -218,9 +216,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
*
* changeKnownOriginStackDescription.
*
- *
- * @param af
- * a {@link forge.game.ability.AbilityFactory} object.
+ *
* @param sa
* a {@link forge.game.spellability.SpellAbility} object.
* @return a {@link java.lang.String} object.
@@ -338,8 +334,6 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
*
* @param sa
* a {@link forge.game.spellability.SpellAbility} object.
- * @param af
- * a {@link forge.game.ability.AbilityFactory} object.
*/
@Override
@@ -424,7 +418,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
}
final String prompt = String.format("Do you want to move %s from %s to %s?", tgtC, origin, destination);
- if (optional && false == player.getController().confirmAction(sa, null, prompt) )
+ if (optional && !player.getController().confirmAction(sa, null, prompt) )
continue;
final Zone originZone = game.getZoneOf(tgtC);
@@ -569,9 +563,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
*
* changeHiddenOriginResolve.
*
- *
- * @param af
- * a {@link forge.game.ability.AbilityFactory} object.
+ *
* @param sa
* a {@link forge.game.spellability.SpellAbility} object.
*/
@@ -774,15 +766,24 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
}
}
if (sa.hasParam("ShareLandType")) {
- for (final Card card : chosenCards) {
-
+ if (chosenCards.size() == 0) {
+ // If no cards have been chosen yet, the first card must have a land type
fetchList = CardLists.filter(fetchList, new Predicate() {
@Override
public boolean apply(final Card c) {
- return c.sharesLandTypeWith(card);
+ return c.hasALandType();
}
-
});
+ } else {
+ for (final Card card : chosenCards) {
+ fetchList = CardLists.filter(fetchList, new Predicate() {
+ @Override
+ public boolean apply(final Card c) {
+ return c.sharesLandTypeWith(card);
+ }
+
+ });
+ }
}
}
if (totalcmc != null) {
diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java
index cf13e747941..c6fd548b30f 100644
--- a/forge-game/src/main/java/forge/game/card/Card.java
+++ b/forge-game/src/main/java/forge/game/card/Card.java
@@ -5351,6 +5351,15 @@ public class Card extends GameEntity implements Comparable {
return false;
}
+ public final boolean hasALandType() {
+ for (final String type : getType().getSubtypes()) {
+ if (forge.card.CardType.isALandType(type)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public final boolean isUsedToPay() {
return usedToPayCost;
}