diff --git a/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java b/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java index 0da38bcd2e..97b8a08773 100644 --- a/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java +++ b/Mage.Sets/src/mage/cards/a/AyumiTheLastVisitor.java @@ -1,7 +1,5 @@ - package mage.cards.a; -import java.util.UUID; import mage.MageInt; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; @@ -9,21 +7,23 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class AyumiTheLastVisitor extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Legendary land"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Legendary land"); + static { filter.add(SuperType.LEGENDARY.getPredicate()); } public AyumiTheLastVisitor(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SPIRIT); @@ -32,7 +32,6 @@ public final class AyumiTheLastVisitor extends CardImpl { // Legendary landwalk this.addAbility(new LandwalkAbility(filter)); - } private AyumiTheLastVisitor(final AyumiTheLastVisitor card) { diff --git a/Mage.Sets/src/mage/cards/d/DesertNomads.java b/Mage.Sets/src/mage/cards/d/DesertNomads.java index 6b9efc491d..4bd1c5c0c5 100644 --- a/Mage.Sets/src/mage/cards/d/DesertNomads.java +++ b/Mage.Sets/src/mage/cards/d/DesertNomads.java @@ -12,7 +12,7 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; import mage.game.Game; import mage.game.events.GameEvent; @@ -23,7 +23,7 @@ import java.util.UUID; */ public final class DesertNomads extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("desert"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("desert"); static { filter.add(SubType.DESERT.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/d/DryadSophisticate.java b/Mage.Sets/src/mage/cards/d/DryadSophisticate.java index 25733be582..1f73ea0d66 100644 --- a/Mage.Sets/src/mage/cards/d/DryadSophisticate.java +++ b/Mage.Sets/src/mage/cards/d/DryadSophisticate.java @@ -1,30 +1,37 @@ - package mage.cards.d; -import java.util.UUID; import mage.MageInt; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.filter.common.FilterLandPermanent; +import mage.constants.SuperType; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.predicate.Predicates; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class DryadSophisticate extends CardImpl { + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("nonbasic land"); + + static { + filter.add(Predicates.not(SuperType.BASIC.getPredicate())); + } + public DryadSophisticate(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}"); this.subtype.add(SubType.DRYAD); this.power = new MageInt(2); this.toughness = new MageInt(1); // Nonbasic landwalk - this.addAbility(new LandwalkAbility(FilterLandPermanent.nonbasicLand())); + this.addAbility(new LandwalkAbility(filter)); } private DryadSophisticate(final DryadSophisticate card) { diff --git a/Mage.Sets/src/mage/cards/g/GiantSlug.java b/Mage.Sets/src/mage/cards/g/GiantSlug.java index 9c7a605167..ec1f364df2 100644 --- a/Mage.Sets/src/mage/cards/g/GiantSlug.java +++ b/Mage.Sets/src/mage/cards/g/GiantSlug.java @@ -1,7 +1,5 @@ - package mage.cards.g; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -10,36 +8,36 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; -import mage.abilities.keyword.LandwalkAbility; +import mage.abilities.keyword.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.choices.ChoiceBasicLandType; import mage.choices.ChoiceImpl; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; import mage.constants.Outcome; -import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.UUID; + /** - * * @author L_J */ public final class GiantSlug extends CardImpl { - + public GiantSlug(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); this.subtype.add(SubType.SLUG); this.power = new MageInt(1); this.toughness = new MageInt(1); // {5}: At the beginning of your next upkeep, choose a basic land type. Giant Slug gains landwalk of the chosen type until the end of that turn. - AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility ability = new AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility(new GiantSlugEffect()); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateDelayedTriggeredAbilityEffect(ability), new ManaCostsImpl("{5}"))); + this.addAbility(new SimpleActivatedAbility(new CreateDelayedTriggeredAbilityEffect( + new AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility(new GiantSlugEffect()) + ), new ManaCostsImpl("{5}"))); } private GiantSlug(final GiantSlug card) { @@ -50,17 +48,17 @@ public final class GiantSlug extends CardImpl { public GiantSlug copy() { return new GiantSlug(this); } - } class GiantSlugEffect extends OneShotEffect { - public GiantSlugEffect() { + GiantSlugEffect() { super(Outcome.AddAbility); - this.staticText = "At the beginning of your next upkeep, choose a basic land type. {this} gains landwalk of the chosen type until the end of that turn"; + this.staticText = "At the beginning of your next upkeep, choose a basic land type. " + + "{this} gains landwalk of the chosen type until the end of that turn"; } - public GiantSlugEffect(final GiantSlugEffect effect) { + private GiantSlugEffect(final GiantSlugEffect effect) { super(effect); } @@ -73,31 +71,42 @@ class GiantSlugEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); - if (controller != null && sourcePermanent != null) { - ChoiceImpl choices = new ChoiceBasicLandType(); - if (controller.choose(outcome, choices, game)) { - game.informPlayers(sourcePermanent.getName() + ": Chosen basic land type is " + choices.getChoice()); - FilterLandPermanent filter = new FilterLandPermanent(choices.getChoice()); - if (choices.getChoice().equals("Plains")) { - filter.add(SubType.PLAINS.getPredicate()); - } - if (choices.getChoice().equals("Island")) { - filter.add(SubType.ISLAND.getPredicate()); - } - if (choices.getChoice().equals("Swamp")) { - filter.add(SubType.SWAMP.getPredicate()); - } - if (choices.getChoice().equals("Mountain")) { - filter.add(SubType.MOUNTAIN.getPredicate()); - } - if (choices.getChoice().equals("Forest")) { - filter.add(SubType.FOREST.getPredicate()); - } - Ability landwalkAbility = new LandwalkAbility(filter); - game.addEffect(new GainAbilitySourceEffect(landwalkAbility, Duration.EndOfTurn, false), source); - return true; - } + if (controller == null || sourcePermanent == null) { + return false; + } + ChoiceImpl choices = new ChoiceBasicLandType(); + if (!controller.choose(outcome, choices, game)) { + return false; + } + game.informPlayers(sourcePermanent.getName() + ": Chosen basic land type is " + choices.getChoice()); + switch (choices.getChoice()) { + case "Plains": + game.addEffect(new GainAbilitySourceEffect( + new PlainswalkAbility(), Duration.EndOfTurn, false + ), source); + return true; + case "Island": + game.addEffect(new GainAbilitySourceEffect( + new IslandwalkAbility(), Duration.EndOfTurn, false + ), source); + return true; + case "Swamp": + game.addEffect(new GainAbilitySourceEffect( + new SwampwalkAbility(), Duration.EndOfTurn, false + ), source); + return true; + case "Mountain": + game.addEffect(new GainAbilitySourceEffect( + new MountainwalkAbility(), Duration.EndOfTurn, false + ), source); + return true; + case "Forest": + game.addEffect(new GainAbilitySourceEffect( + new ForestwalkAbility(), Duration.EndOfTurn, false + ), source); + return true; + default: + return false; } - return false; } } diff --git a/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java b/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java index ecdb224454..969122aa4a 100644 --- a/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java +++ b/Mage.Sets/src/mage/cards/l/LegionsOfLimDul.java @@ -1,7 +1,5 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; @@ -9,23 +7,24 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class LegionsOfLimDul extends CardImpl { - - private static final FilterLandPermanent filter = new FilterLandPermanent("snow swamp"); - + + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("snow swamp"); + static { filter.add(SuperType.SNOW.getPredicate()); - filter.add(SubType.SWAMP .getPredicate()); + filter.add(SubType.SWAMP.getPredicate()); } public LegionsOfLimDul(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{B}"); this.subtype.add(SubType.ZOMBIE); this.power = new MageInt(2); this.toughness = new MageInt(3); diff --git a/Mage.Sets/src/mage/cards/l/LivonyaSilone.java b/Mage.Sets/src/mage/cards/l/LivonyaSilone.java index b1b573f00a..819913da56 100644 --- a/Mage.Sets/src/mage/cards/l/LivonyaSilone.java +++ b/Mage.Sets/src/mage/cards/l/LivonyaSilone.java @@ -1,7 +1,5 @@ - package mage.cards.l; -import java.util.UUID; import mage.MageInt; import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.LandwalkAbility; @@ -10,22 +8,23 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author LoneFox */ public final class LivonyaSilone extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("Legendary land"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Legendary land"); static { filter.add(SuperType.LEGENDARY.getPredicate()); } public LivonyaSilone(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}{G}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}{G}{G}"); this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.WARRIOR); @@ -34,6 +33,7 @@ public final class LivonyaSilone extends CardImpl { // First strike this.addAbility(FirstStrikeAbility.getInstance()); + // legendary landwalk this.addAbility(new LandwalkAbility(filter)); } diff --git a/Mage.Sets/src/mage/cards/o/OldFogey.java b/Mage.Sets/src/mage/cards/o/OldFogey.java index 5d29067acd..f24a756ec5 100644 --- a/Mage.Sets/src/mage/cards/o/OldFogey.java +++ b/Mage.Sets/src/mage/cards/o/OldFogey.java @@ -1,33 +1,25 @@ package mage.cards.o; -import java.util.UUID; import mage.MageInt; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.keyword.BandsWithOtherAbility; -import mage.abilities.keyword.CumulativeUpkeepAbility; -import mage.abilities.keyword.EchoAbility; -import mage.abilities.keyword.FadingAbility; -import mage.abilities.keyword.FlankingAbility; -import mage.abilities.keyword.LandwalkAbility; -import mage.abilities.keyword.PhasingAbility; -import mage.abilities.keyword.ProtectionAbility; -import mage.abilities.keyword.RampageAbility; +import mage.abilities.keyword.*; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterCard; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author L_J */ public final class OldFogey extends CardImpl { private static final FilterCard filter = new FilterCard("Homarids"); - private static final FilterLandPermanent filter2 = new FilterLandPermanent("snow-covered plains"); + private static final FilterControlledLandPermanent filter2 = new FilterControlledLandPermanent("snow-covered plains"); static { filter.add(SubType.HOMARID.getPredicate()); diff --git a/Mage.Sets/src/mage/cards/r/RimeDryad.java b/Mage.Sets/src/mage/cards/r/RimeDryad.java index 778a9bae9d..35152cc40f 100644 --- a/Mage.Sets/src/mage/cards/r/RimeDryad.java +++ b/Mage.Sets/src/mage/cards/r/RimeDryad.java @@ -1,7 +1,5 @@ - package mage.cards.r; -import java.util.UUID; import mage.MageInt; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; @@ -9,15 +7,16 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.SuperType; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author fireshoes */ public final class RimeDryad extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("snow forest"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("snow forest"); static { filter.add(SuperType.SNOW.getPredicate()); @@ -25,7 +24,7 @@ public final class RimeDryad extends CardImpl { } public RimeDryad(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); this.subtype.add(SubType.DRYAD); this.power = new MageInt(1); this.toughness = new MageInt(2); diff --git a/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java b/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java index 5728fbb184..4bed99fbc7 100644 --- a/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java +++ b/Mage.Sets/src/mage/cards/t/TrailblazersBoots.java @@ -1,7 +1,5 @@ - package mage.cards.t; -import java.util.UUID; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; @@ -9,25 +7,32 @@ import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.AttachmentType; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.constants.Outcome; -import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.constants.*; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.predicate.Predicates; + +import java.util.UUID; /** - * * @author North */ public final class TrailblazersBoots extends CardImpl { + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("nonbasic land"); + + static { + filter.add(Predicates.not(SuperType.BASIC.getPredicate())); + } + public TrailblazersBoots(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); this.subtype.add(SubType.EQUIPMENT); // Equipped creature has nonbasic landwalk. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new LandwalkAbility(FilterLandPermanent.nonbasicLand()), AttachmentType.EQUIPMENT))); + this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect( + new LandwalkAbility(filter), AttachmentType.EQUIPMENT + ))); + // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); } diff --git a/Mage.Sets/src/mage/cards/t/TravelersCloak.java b/Mage.Sets/src/mage/cards/t/TravelersCloak.java index ae21d62f71..afeaf1e4d0 100644 --- a/Mage.Sets/src/mage/cards/t/TravelersCloak.java +++ b/Mage.Sets/src/mage/cards/t/TravelersCloak.java @@ -16,7 +16,7 @@ import mage.abilities.keyword.LandwalkAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.predicate.ObjectSourcePlayer; import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; @@ -31,6 +31,12 @@ import java.util.UUID; */ public final class TravelersCloak extends CardImpl { + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("chosen type"); + + static { + filter.add(TravelersCloakChosenSubtypePredicate.instance); + } + public TravelersCloak(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}"); this.subtype.add(SubType.AURA); @@ -49,8 +55,6 @@ public final class TravelersCloak extends CardImpl { this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false)); // Enchanted creature has landwalk of the chosen type. - FilterLandPermanent filter = new FilterLandPermanent("Landwalk of the chosen type"); - filter.add(TravelersCloakChosenSubtypePredicate.instance); Effect effect = new TravelersCloakGainAbilityAttachedEffect(filter); effect.setText("Enchanted creature has landwalk of the chosen type"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); @@ -68,7 +72,7 @@ public final class TravelersCloak extends CardImpl { class TravelersCloakGainAbilityAttachedEffect extends GainAbilityAttachedEffect { - public TravelersCloakGainAbilityAttachedEffect(FilterLandPermanent filter) { + TravelersCloakGainAbilityAttachedEffect(FilterControlledLandPermanent filter) { super(new LandwalkAbility(filter), AttachmentType.AURA); } diff --git a/Mage.Sets/src/mage/cards/z/ZombieMusher.java b/Mage.Sets/src/mage/cards/z/ZombieMusher.java index e15d1f437d..79ac6c5493 100644 --- a/Mage.Sets/src/mage/cards/z/ZombieMusher.java +++ b/Mage.Sets/src/mage/cards/z/ZombieMusher.java @@ -1,27 +1,25 @@ - package mage.cards.z; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.RegenerateSourceEffect; import mage.abilities.keyword.LandwalkAbility; -import mage.constants.SubType; -import mage.constants.SuperType; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.Zone; -import mage.filter.common.FilterLandPermanent; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.common.FilterControlledLandPermanent; + +import java.util.UUID; /** - * * @author TheElk801 */ public final class ZombieMusher extends CardImpl { - private static final FilterLandPermanent filter = new FilterLandPermanent("snow land"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("snow land"); static { filter.add(SuperType.SNOW.getPredicate()); @@ -39,7 +37,7 @@ public final class ZombieMusher extends CardImpl { this.addAbility(new LandwalkAbility(filter)); // {snow}: Regenerate Zombie Musher. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{S}"))); + this.addAbility(new SimpleActivatedAbility(new RegenerateSourceEffect(), new ManaCostsImpl("{S}"))); } private ZombieMusher(final ZombieMusher card) { diff --git a/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java index fb7e8edda2..2e948bcfd3 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ForestwalkAbility.java @@ -2,6 +2,7 @@ package mage.abilities.keyword; import mage.constants.SubType; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; /** @@ -10,7 +11,7 @@ import mage.filter.common.FilterLandPermanent; */ public class ForestwalkAbility extends LandwalkAbility { - private static final FilterLandPermanent filter = new FilterLandPermanent("forest"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("forest"); static { filter.add(SubType.FOREST.getPredicate()); diff --git a/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java index f92d0de7a8..54a1f9f090 100644 --- a/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/IslandwalkAbility.java @@ -2,6 +2,7 @@ package mage.abilities.keyword; import mage.constants.SubType; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; /** @@ -10,7 +11,7 @@ import mage.filter.common.FilterLandPermanent; */ public class IslandwalkAbility extends LandwalkAbility { - private static final FilterLandPermanent filter = new FilterLandPermanent("island"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("island"); static { filter.add(SubType.ISLAND.getPredicate()); diff --git a/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java index b69bfa2b35..32bd473d13 100644 --- a/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/LandwalkAbility.java @@ -5,7 +5,7 @@ import mage.abilities.EvasionAbility; import mage.abilities.effects.RestrictionEffect; import mage.constants.AsThoughEffectType; import mage.constants.Duration; -import mage.filter.common.FilterLandPermanent; +import mage.filter.common.FilterControlledLandPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -20,15 +20,15 @@ public class LandwalkAbility extends EvasionAbility { * * @param filter */ - public LandwalkAbility(FilterLandPermanent filter) { + public LandwalkAbility(FilterControlledLandPermanent filter) { this(filter, true); } - public LandwalkAbility(FilterLandPermanent filter, boolean withHintText) { + public LandwalkAbility(FilterControlledLandPermanent filter, boolean withHintText) { this.addEffect(new LandwalkEffect(filter, withHintText)); } - public LandwalkAbility(final LandwalkAbility ability) { + protected LandwalkAbility(final LandwalkAbility ability) { super(ability); } @@ -49,15 +49,15 @@ public class LandwalkAbility extends EvasionAbility { class LandwalkEffect extends RestrictionEffect { - protected FilterLandPermanent filter; + private final FilterControlledLandPermanent filter; - public LandwalkEffect(FilterLandPermanent filter, boolean withHintText) { + LandwalkEffect(FilterControlledLandPermanent filter, boolean withHintText) { super(Duration.WhileOnBattlefield); this.filter = filter; staticText = setText(withHintText); } - public LandwalkEffect(final LandwalkEffect effect) { + private LandwalkEffect(final LandwalkEffect effect) { super(effect); this.filter = effect.filter.copy(); } @@ -95,6 +95,9 @@ class LandwalkEffect extends RestrictionEffect { } private String setText(boolean withHintText) { + if (filter.getMessage().startsWith("chosen type")) { + return "landwalk of the chosen type"; + } // Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.) StringBuilder sb = new StringBuilder(); sb.append(filter.getMessage()).append("walk"); diff --git a/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java index 2fa97af410..1c78803187 100644 --- a/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/MountainwalkAbility.java @@ -2,6 +2,7 @@ package mage.abilities.keyword; import mage.constants.SubType; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; /** @@ -10,7 +11,7 @@ import mage.filter.common.FilterLandPermanent; */ public class MountainwalkAbility extends LandwalkAbility { - private static final FilterLandPermanent filter = new FilterLandPermanent("mountain"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("mountain"); static { filter.add(SubType.MOUNTAIN.getPredicate()); diff --git a/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java index 9a5588fc8f..bf017f5b6c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/PlainswalkAbility.java @@ -2,6 +2,7 @@ package mage.abilities.keyword; import mage.constants.SubType; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; /** @@ -10,7 +11,7 @@ import mage.filter.common.FilterLandPermanent; */ public class PlainswalkAbility extends LandwalkAbility { - private static final FilterLandPermanent filter = new FilterLandPermanent("plains"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("plains"); static { filter.add(SubType.PLAINS.getPredicate()); diff --git a/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java b/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java index f0b54bdc7c..752fc661c3 100644 --- a/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/SwampwalkAbility.java @@ -2,6 +2,7 @@ package mage.abilities.keyword; import mage.constants.SubType; +import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterLandPermanent; /** @@ -10,7 +11,7 @@ import mage.filter.common.FilterLandPermanent; */ public class SwampwalkAbility extends LandwalkAbility { - private static final FilterLandPermanent filter = new FilterLandPermanent("swamp"); + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("swamp"); static { filter.add(SubType.SWAMP.getPredicate());