From 4665348ca737f836ae82f8fb56b4b5098acae239 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 20 Aug 2014 17:09:19 +0200 Subject: [PATCH] Some minor changes to cards. --- .../sets/magic2015/ConstrictingSliver.java | 7 ++- .../mage/sets/magic2015/HushwingGryff.java | 2 +- .../sets/onslaught/WeatheredWayfarer.java | 24 +------- .../shardsofalara/KnightOfTheWhiteOrchid.java | 58 +++++-------------- .../src/mage/sets/tempest/SpiritMirror.java | 2 - .../mage/sets/zendikar/KorCartographer.java | 12 +--- 6 files changed, 23 insertions(+), 82 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2015/ConstrictingSliver.java b/Mage.Sets/src/mage/sets/magic2015/ConstrictingSliver.java index e66708ccdbf..bf13c13e21a 100644 --- a/Mage.Sets/src/mage/sets/magic2015/ConstrictingSliver.java +++ b/Mage.Sets/src/mage/sets/magic2015/ConstrictingSliver.java @@ -30,6 +30,7 @@ package mage.sets.magic2015; import java.util.LinkedList; import java.util.UUID; import mage.MageInt; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -211,13 +212,13 @@ class ConstrictingSliverReturnExiledCreatureEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { ExileZone exile = game.getExile().getExileZone(source.getSourceId()); - Card sourceCard = game.getCard(source.getSourceId()); - if (exile != null && sourceCard != null) { + MageObject sourceObject = game.getObject(source.getSourceId()); + if (exile != null && sourceObject != null) { LinkedList cards = new LinkedList<>(exile); for (UUID cardId : cards) { Card card = game.getCard(cardId); card.moveToZone(Zone.BATTLEFIELD, source.getSourceId(), game, false); - game.informPlayers(new StringBuilder(sourceCard.getName()).append(": ").append(card.getName()).append(" returns to battlefield from exile").toString()); + game.informPlayers(new StringBuilder(sourceObject.getName()).append(": ").append(card.getName()).append(" returns to battlefield from exile").toString()); } exile.clear(); return true; diff --git a/Mage.Sets/src/mage/sets/magic2015/HushwingGryff.java b/Mage.Sets/src/mage/sets/magic2015/HushwingGryff.java index 58707af2435..6ec1eb22479 100644 --- a/Mage.Sets/src/mage/sets/magic2015/HushwingGryff.java +++ b/Mage.Sets/src/mage/sets/magic2015/HushwingGryff.java @@ -95,7 +95,7 @@ class HushwingGryffEffect extends ContinuousRuleModifiyingEffectImpl { MageObject mageObject = game.getObject(event.getSourceId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (mageObject != null && sourceObject != null) { - return sourceObject + " prevented ability of " + mageObject + " to trigger"; + return sourceObject.getLogName() + " prevented ability of " + mageObject.getLogName() + " to trigger"; } return null; } diff --git a/Mage.Sets/src/mage/sets/onslaught/WeatheredWayfarer.java b/Mage.Sets/src/mage/sets/onslaught/WeatheredWayfarer.java index 0644a2b485c..c28733ff57e 100644 --- a/Mage.Sets/src/mage/sets/onslaught/WeatheredWayfarer.java +++ b/Mage.Sets/src/mage/sets/onslaught/WeatheredWayfarer.java @@ -35,6 +35,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.ActivateIfConditionActivatedAbility; import mage.abilities.condition.Condition; +import mage.abilities.condition.common.OpponentControllsMoreCondition; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; @@ -67,7 +68,7 @@ public class WeatheredWayfarer extends CardImpl { Zone.BATTLEFIELD, new SearchLibraryPutInHandEffect(new TargetCardInLibrary(new FilterLandCard()), true, true), new ManaCostsImpl("{W}"), - new OpponentControllsMoreLandCondition()); + new OpponentControllsMoreCondition(new FilterLandPermanent("lands"))); ability.addCost(new TapSourceCost()); this.addAbility(ability); } @@ -81,24 +82,3 @@ public class WeatheredWayfarer extends CardImpl { return new WeatheredWayfarer(this); } } - -class OpponentControllsMoreLandCondition implements Condition { - - private static final FilterPermanent filter = new FilterLandPermanent(); - - @Override - public boolean apply(Game game, Ability source) { - int numLands = game.getBattlefield().countAll(filter, source.getControllerId(), game); - for (UUID opponentId: game.getOpponents(source.getControllerId())) { - if (numLands < game.getBattlefield().countAll(filter, opponentId, game)) { - return true; - } - } - return false; - } - - @Override - public String toString() { - return "an opponent controls more lands than you"; - } -} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java index 19433cc417a..4183fdf161c 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/KnightOfTheWhiteOrchid.java @@ -30,18 +30,16 @@ package mage.sets.shardsofalara; import java.util.UUID; import mage.constants.CardType; -import mage.constants.Outcome; import mage.constants.Rarity; -import mage.constants.Zone; import mage.MageInt; -import mage.abilities.common.ZoneChangeTriggeredAbility; -import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.condition.common.OpponentControllsMoreCondition; +import mage.abilities.decorator.ConditionalTriggeredAbility; +import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.keyword.FirstStrikeAbility; import mage.cards.CardImpl; -import mage.filter.FilterCard; +import mage.filter.common.FilterBySubtypeCard; import mage.filter.common.FilterLandPermanent; -import mage.filter.predicate.mageobject.SubtypePredicate; -import mage.game.Game; import mage.target.common.TargetCardInLibrary; /** @@ -59,8 +57,15 @@ public class KnightOfTheWhiteOrchid extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new KnightOfTheWhiteOrchidAbility()); + // First strike this.addAbility(FirstStrikeAbility.getInstance()); + + // When Knight of the White Orchid enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield, then shuffle your library. + this.addAbility(new ConditionalTriggeredAbility( + new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, new FilterBySubtypeCard("Plains")), true), true), + new OpponentControllsMoreCondition(new FilterLandPermanent("lands")), + "When {this} enters the battlefield, if an opponent controls more lands than you, you may search your library for a Plains card, put it onto the battlefield, then shuffle your library")); + } public KnightOfTheWhiteOrchid(final KnightOfTheWhiteOrchid card) { @@ -73,40 +78,3 @@ public class KnightOfTheWhiteOrchid extends CardImpl { } } - -class KnightOfTheWhiteOrchidAbility extends ZoneChangeTriggeredAbility { - - private static final FilterCard filter1 = new FilterCard("Plains"); - private static final FilterLandPermanent filter2 = new FilterLandPermanent(); - - static { - filter1.add(new SubtypePredicate("Plains")); - } - - public KnightOfTheWhiteOrchidAbility() { - super(Zone.BATTLEFIELD, null, "When {this} enters the battlefield, if an opponent controls more lands than you, you may ", true); - TargetCardInLibrary target = new TargetCardInLibrary(filter1); - addEffect(new SearchLibraryPutInPlayEffect(target, false, Outcome.PutLandInPlay)); - } - - public KnightOfTheWhiteOrchidAbility(final KnightOfTheWhiteOrchidAbility ability) { - super(ability); - } - - @Override - public KnightOfTheWhiteOrchidAbility copy() { - return new KnightOfTheWhiteOrchidAbility(this); - } - - @Override - public boolean checkInterveningIfClause(Game game) { - int numLands = game.getBattlefield().countAll(filter2, this.controllerId, game); - for (UUID opponentId: game.getOpponents(this.controllerId)) { - if (numLands < game.getBattlefield().countAll(filter2, opponentId, game)) { - return true; - } - } - return false; - } - -} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempest/SpiritMirror.java b/Mage.Sets/src/mage/sets/tempest/SpiritMirror.java index fd4cea0f87c..785cbb7e852 100644 --- a/Mage.Sets/src/mage/sets/tempest/SpiritMirror.java +++ b/Mage.Sets/src/mage/sets/tempest/SpiritMirror.java @@ -29,7 +29,6 @@ package mage.sets.tempest; import java.util.UUID; import mage.MageInt; -import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; @@ -46,7 +45,6 @@ import mage.constants.TargetController; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.NamePredicate; -import mage.game.permanent.token.SaprolingToken; import mage.game.permanent.token.Token; import mage.target.TargetPermanent; diff --git a/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java b/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java index 3c2ed52c944..163b4e4de27 100644 --- a/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java +++ b/Mage.Sets/src/mage/sets/zendikar/KorCartographer.java @@ -34,8 +34,7 @@ import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; import mage.cards.CardImpl; -import mage.filter.FilterCard; -import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.common.FilterBySubtypeCard; import mage.target.common.TargetCardInLibrary; /** @@ -44,12 +43,6 @@ import mage.target.common.TargetCardInLibrary; */ public class KorCartographer extends CardImpl { - private static final FilterCard filter = new FilterCard("Plains card"); - - static { - filter.add(new SubtypePredicate("Plains")); - } - public KorCartographer(UUID ownerId) { super(ownerId, 18, "Kor Cartographer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.expansionSetCode = "ZEN"; @@ -60,7 +53,8 @@ public class KorCartographer extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true), true)); + // When Kor Cartographer enters the battlefield, you may search your library for a Plains card, put it onto the battlefield tapped, then shuffle your library. + this.addAbility(new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterBySubtypeCard("Plains")), true), true)); } public KorCartographer(final KorCartographer card) {