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; }