diff --git a/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java b/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java
index 70272a0b5a..79decffc5d 100644
--- a/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java
+++ b/Mage.Sets/src/mage/cards/a/AmuletOfUnmaking.java
@@ -1,11 +1,11 @@
package mage.cards.a;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
+import mage.abilities.costs.common.ExileSourceCost;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.costs.mana.ColorlessManaCost;
+import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.ExileTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -16,27 +16,32 @@ import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.target.TargetPermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class AmuletOfUnmaking extends CardImpl {
- private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or enchantment");
+ private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
static {
filter.add(Predicates.or(
new CardTypePredicate(CardType.ARTIFACT),
new CardTypePredicate(CardType.CREATURE),
- new CardTypePredicate(CardType.ENCHANTMENT)));
+ new CardTypePredicate(CardType.LAND)
+ ));
}
public AmuletOfUnmaking(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{5}");
// {5}, {tap}, Exile Amulet of Unmaking: Exile target artifact, creature, or land. Activate this ability only any time you could cast a sorcery.
- Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect("Exile target artifact, creature or land"), new ColorlessManaCost(5));
+ Ability ability = new ActivateAsSorceryActivatedAbility(
+ Zone.BATTLEFIELD, new ExileTargetEffect(), new GenericManaCost(5)
+ );
ability.addCost(new TapSourceCost());
+ ability.addCost(new ExileSourceCost());
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/b/BloodHound.java b/Mage.Sets/src/mage/cards/b/BloodHound.java
index 7a438904db..f182a4b5e3 100644
--- a/Mage.Sets/src/mage/cards/b/BloodHound.java
+++ b/Mage.Sets/src/mage/cards/b/BloodHound.java
@@ -1,23 +1,24 @@
package mage.cards.b;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
-import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.RemoveAllCountersSourceEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
+import mage.constants.CardType;
+import mage.constants.SubType;
+import mage.constants.TargetController;
+import mage.constants.Zone;
import mage.counters.CounterType;
import mage.game.Game;
import mage.game.events.GameEvent;
-import mage.game.permanent.Permanent;
+
+import java.util.UUID;
/**
- *
* @author TheElk801
*/
public final class BloodHound extends CardImpl {
@@ -33,10 +34,12 @@ public final class BloodHound extends CardImpl {
this.addAbility(new BloodHoundTriggeredAbility());
// At the beginning of your end step, remove all +1/+1 counters from Blood Hound.
- this.addAbility(new BeginningOfEndStepTriggeredAbility(new RemoveAllCountersSourceEffect(CounterType.P1P1), TargetController.YOU, false));
+ this.addAbility(new BeginningOfEndStepTriggeredAbility(
+ new RemoveAllCountersSourceEffect(CounterType.P1P1), TargetController.YOU, false
+ ));
}
- public BloodHound(final BloodHound card) {
+ private BloodHound(final BloodHound card) {
super(card);
}
@@ -48,11 +51,11 @@ public final class BloodHound extends CardImpl {
class BloodHoundTriggeredAbility extends TriggeredAbilityImpl {
- public BloodHoundTriggeredAbility() {
- super(Zone.BATTLEFIELD, new BloodHoundEffect(), true);
+ BloodHoundTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), true);
}
- public BloodHoundTriggeredAbility(final BloodHoundTriggeredAbility ability) {
+ private BloodHoundTriggeredAbility(final BloodHoundTriggeredAbility ability) {
super(ability);
}
@@ -68,8 +71,9 @@ class BloodHoundTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
- if (event.getTargetId().equals(this.getControllerId())) {
- this.getEffects().get(0).setValue("damageAmount", event.getAmount());
+ if (event.getTargetId().equals(this.getControllerId()) && event.getAmount() > 0) {
+ this.getEffects().clear();
+ this.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(event.getAmount())));
return true;
}
return false;
@@ -77,31 +81,6 @@ class BloodHoundTriggeredAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Whenever you are dealt damage, you may put that many +1/+1 counters on {this}.";
- }
-}
-
-class BloodHoundEffect extends OneShotEffect {
-
- public BloodHoundEffect() {
- super(Outcome.Benefit);
- }
-
- public BloodHoundEffect(final BloodHoundEffect effect) {
- super(effect);
- }
-
- @Override
- public BloodHoundEffect copy() {
- return new BloodHoundEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Permanent permanent = game.getPermanent(source.getSourceId());
- if (permanent != null) {
- permanent.addCounters(CounterType.P1P1.createInstance((Integer) this.getValue("damageAmount")), source, game);
- }
- return true;
+ return "Whenever you're dealt damage, you may put that many +1/+1 counters on {this}.";
}
}
diff --git a/Mage.Sets/src/mage/cards/b/BrineShaman.java b/Mage.Sets/src/mage/cards/b/BrineShaman.java
index 2a2d0398ca..a19445b707 100644
--- a/Mage.Sets/src/mage/cards/b/BrineShaman.java
+++ b/Mage.Sets/src/mage/cards/b/BrineShaman.java
@@ -1,7 +1,6 @@
package mage.cards.b;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -13,31 +12,21 @@ import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.Duration;
import mage.constants.SubType;
-import mage.constants.Zone;
-import mage.filter.FilterSpell;
-import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
-
import mage.filter.StaticFilters;
-import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.target.TargetSpell;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
+import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
+
/**
- *
* @author TheElk801
*/
public final class BrineShaman extends CardImpl {
- private static final FilterSpell filter = new FilterSpell("creature spell");
-
- static {
- filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE)));
- }
-
public BrineShaman(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
@@ -46,16 +35,14 @@ public final class BrineShaman extends CardImpl {
this.toughness = new MageInt(1);
// {tap}, Sacrifice a creature: Target creature gets +2/+2 until end of turn.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 2, Duration.EndOfTurn),
- new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
- ability.addCost(new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(2, 2), new TapSourceCost());
+ ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
// {1}{U}{U}, Sacrifice a creature: Counter target creature spell.
- ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(),
- new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
- ability.addCost(new ManaCostsImpl("{1}{U}{U}"));
+ ability = new SimpleActivatedAbility(new CounterTargetEffect(), new ManaCostsImpl("{1}{U}{U}"));
+ ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)));
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_CREATURE));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java b/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java
index e1c1f54fe6..e01b5375fd 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidInkshrouder.java
@@ -1,7 +1,6 @@
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -12,30 +11,35 @@ import mage.abilities.keyword.ShroudAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
-import mage.constants.Zone;
+import mage.constants.SubType;
+
+import java.util.UUID;
/**
- *
* @author TheElk801
*/
public final class CephalidInkshrouder extends CardImpl {
public CephalidInkshrouder(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
-
+
this.subtype.add(SubType.CEPHALID);
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Discard a card: Cephalid Inkshrouder gains shroud until end of turn and is unblockable this turn.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(ShroudAbility.getInstance(),Duration.EndOfTurn), new DiscardCardCost());
- ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn));
+ Ability ability = new SimpleActivatedAbility(
+ new GainAbilitySourceEffect(
+ ShroudAbility.getInstance(),
+ Duration.EndOfTurn
+ ), new DiscardCardCost()
+ );
+ ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn).setText("and can't be blocked this turn"));
this.addAbility(ability);
}
- public CephalidInkshrouder(final CephalidInkshrouder card) {
+ private CephalidInkshrouder(final CephalidInkshrouder card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java b/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java
index 94468b8b24..2cddae6857 100644
--- a/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java
+++ b/Mage.Sets/src/mage/cards/c/ChieftainEnDal.java
@@ -1,21 +1,20 @@
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.Duration;
-import mage.filter.common.FilterAttackingCreature;
+import mage.constants.SubType;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
- *
* @author TheElk801
*/
public final class ChieftainEnDal extends CardImpl {
@@ -29,11 +28,12 @@ public final class ChieftainEnDal extends CardImpl {
this.toughness = new MageInt(2);
// Whenever Chieftain en-Dal attacks, attacking creatures gain first strike until end of turn.
- Ability ability = new AttacksTriggeredAbility(new GainAbilityAllEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, new FilterAttackingCreature()), false);
- this.addAbility(ability);
+ this.addAbility(new AttacksTriggeredAbility(new GainAbilityAllEffect(
+ FirstStrikeAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_ATTACKING_CREATURES
+ ), false));
}
- public ChieftainEnDal(final ChieftainEnDal card) {
+ private ChieftainEnDal(final ChieftainEnDal card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/ChillHaunting.java b/Mage.Sets/src/mage/cards/c/ChillHaunting.java
index d13c2420f2..c35832ceb8 100644
--- a/Mage.Sets/src/mage/cards/c/ChillHaunting.java
+++ b/Mage.Sets/src/mage/cards/c/ChillHaunting.java
@@ -1,7 +1,6 @@
package mage.cards.c;
-import java.util.UUID;
import mage.abilities.costs.common.ExileXFromYourGraveCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.GetXValue;
@@ -11,28 +10,30 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.filter.common.FilterCreatureCard;
+import mage.filter.StaticFilters;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class ChillHaunting extends CardImpl {
+ private static final DynamicValue xval = new SignInversionDynamicValue(GetXValue.instance);
+
public ChillHaunting(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
// As an additional cost to cast Chill Haunting, exile X creature cards from your graveyard.
- this.getSpellAbility().addCost(new ExileXFromYourGraveCost(new FilterCreatureCard("creature cards from your graveyard"), true));
+ this.getSpellAbility().addCost(new ExileXFromYourGraveCost(StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD, true));
// Target creature gets -X/-X until end of turn.
- this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- DynamicValue xval = new SignInversionDynamicValue(GetXValue.instance);
this.getSpellAbility().addEffect(new BoostTargetEffect(xval, xval, Duration.EndOfTurn));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
}
- public ChillHaunting(final ChillHaunting card) {
+ private ChillHaunting(final ChillHaunting card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/CoffinPuppets.java b/Mage.Sets/src/mage/cards/c/CoffinPuppets.java
index abd123b793..621ce06321 100644
--- a/Mage.Sets/src/mage/cards/c/CoffinPuppets.java
+++ b/Mage.Sets/src/mage/cards/c/CoffinPuppets.java
@@ -1,9 +1,7 @@
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.Ability;
import mage.abilities.common.ActivateIfConditionActivatedAbility;
import mage.abilities.condition.CompoundCondition;
import mage.abilities.condition.Condition;
@@ -22,18 +20,28 @@ import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class CoffinPuppets extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("you control a Swamp");
+ private static final FilterControlledPermanent filter
+ = new FilterControlledPermanent("you control a Swamp");
+ private static final FilterControlledPermanent filter2
+ = new FilterControlledLandPermanent("two lands");
static {
filter.add(new SubtypePredicate(SubType.SWAMP));
}
+ private static final Condition condition = new CompoundCondition(
+ "during your upkeep and only if you control a Swamp",
+ new PermanentsOnTheBattlefieldCondition(filter),
+ new IsStepCondition(PhaseStep.UPKEEP)
+ );
+
public CoffinPuppets(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
@@ -42,12 +50,13 @@ public final class CoffinPuppets extends CardImpl {
this.toughness = new MageInt(3);
// Sacrifice two lands: Return Coffin Puppets from your graveyard to the battlefield. Activate this ability only during your upkeep and only if you control a Swamp.
- Condition condition = new CompoundCondition("during your upkeep and only if you control a Swamp",new PermanentsOnTheBattlefieldCondition(filter), new IsStepCondition(PhaseStep.UPKEEP));
- Ability ability = new ActivateIfConditionActivatedAbility(Zone.GRAVEYARD,
+ this.addAbility(new ActivateIfConditionActivatedAbility(
+ Zone.GRAVEYARD,
new ReturnSourceFromGraveyardToBattlefieldEffect(),
- new SacrificeTargetCost(new TargetControlledPermanent(2, 2, new FilterControlledLandPermanent("two lands"), true)),
- condition);
- this.addAbility(ability);
+ new SacrificeTargetCost(
+ new TargetControlledPermanent(2, 2, filter2, true)
+ ), condition
+ ));
}
public CoffinPuppets(final CoffinPuppets card) {
diff --git a/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java b/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java
index 489ce9d8c6..b56c057680 100644
--- a/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java
+++ b/Mage.Sets/src/mage/cards/c/CoilingWoodworm.java
@@ -1,9 +1,9 @@
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.continuous.SetPowerSourceEffect;
import mage.cards.CardImpl;
@@ -13,19 +13,17 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterPermanent;
-import mage.filter.predicate.mageobject.SubtypePredicate;
+
+import java.util.UUID;
/**
- *
* @author TheElk801
*/
public final class CoilingWoodworm extends CardImpl {
- final static FilterPermanent filterLands = new FilterPermanent("Forests you control");
-
- static {
- filterLands.add(new SubtypePredicate(SubType.FOREST));
- }
+ private static final DynamicValue count = new PermanentsOnBattlefieldCount(
+ new FilterPermanent(SubType.FOREST, "Forests on the battlefield")
+ );
public CoilingWoodworm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
@@ -36,10 +34,10 @@ public final class CoilingWoodworm extends CardImpl {
this.toughness = new MageInt(1);
// Coiling Woodworm's power is equal to the number of Forests on the battlefield.
- this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerSourceEffect(new PermanentsOnBattlefieldCount(filterLands), Duration.EndOfGame)));
+ this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerSourceEffect(count, Duration.EndOfGame)));
}
- public CoilingWoodworm(final CoilingWoodworm card) {
+ private CoilingWoodworm(final CoilingWoodworm card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/CommonCause.java b/Mage.Sets/src/mage/cards/c/CommonCause.java
index 3fd5e226bb..bfcff613fe 100644
--- a/Mage.Sets/src/mage/cards/c/CommonCause.java
+++ b/Mage.Sets/src/mage/cards/c/CommonCause.java
@@ -1,7 +1,6 @@
package mage.cards.c;
-import java.util.UUID;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
@@ -12,15 +11,15 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class CommonCause extends CardImpl {
@@ -35,9 +34,11 @@ public final class CommonCause extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
// Nonartifact creatures get +2/+2 as long as they all share a color.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostAllEffect(2, 2, Duration.WhileOnBattlefield, filter, false),
- new AllColorCondition(),
- "nonartifact creatures get +2/+2 as long as they all share a color.")));
+ this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
+ new BoostAllEffect(2, 2, Duration.WhileOnBattlefield, filter, false),
+ AllColorCondition.instance,
+ "nonartifact creatures get +2/+2 as long as they all share a color.")
+ ));
}
public CommonCause(final CommonCause card) {
@@ -50,7 +51,8 @@ public final class CommonCause extends CardImpl {
}
}
-class AllColorCondition implements Condition {
+enum AllColorCondition implements Condition {
+ instance;
@Override
public boolean apply(Game game, Ability source) {
@@ -58,7 +60,7 @@ class AllColorCondition implements Condition {
filter.add(Predicates.not(new CardTypePredicate(CardType.ARTIFACT)));
ObjectColor allColor = new ObjectColor("WUBRG");
for (Permanent thing : game.getBattlefield().getAllActivePermanents(filter, game)) {
- allColor = allColor.intersection(thing.getColor(game));
+ allColor = allColor.intersection(thing.getColor(game));
}
return !allColor.isColorless();
}
diff --git a/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java b/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java
index 3697c4ab9f..012152970d 100644
--- a/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java
+++ b/Mage.Sets/src/mage/cards/c/ComplexAutomaton.java
@@ -1,27 +1,31 @@
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
-import mage.abilities.TriggeredAbility;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
-import mage.constants.SubType;
import mage.constants.ComparisonType;
+import mage.constants.SubType;
import mage.constants.TargetController;
-import mage.filter.common.FilterControlledPermanent;
+import mage.filter.StaticFilters;
+
+import java.util.UUID;
/**
- *
* @author TheElk801
*/
public final class ComplexAutomaton extends CardImpl {
+ private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
+ StaticFilters.FILTER_CONTROLLED_PERMANENT, ComparisonType.MORE_THAN, 6
+ );
+
public ComplexAutomaton(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
@@ -30,12 +34,16 @@ public final class ComplexAutomaton extends CardImpl {
this.toughness = new MageInt(4);
// At the beginning of your upkeep, if you control seven or more permanents, return Complex Automaton to its owner's hand.
- TriggeredAbility ability = new BeginningOfUpkeepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.YOU, false);
- this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new PermanentsOnTheBattlefieldCondition(new FilterControlledPermanent(), ComparisonType.MORE_THAN, 6),
- "At the beginning of your upkeep, if you control seven or more permanents, return Complex Automaton to its owner's hand."));
+ this.addAbility(new ConditionalInterveningIfTriggeredAbility(
+ new BeginningOfUpkeepTriggeredAbility(
+ new ReturnToHandSourceEffect(true),
+ TargetController.YOU, false
+ ), condition, "At the beginning of your upkeep, " +
+ "if you control seven or more permanents, return {this} to its owner's hand."
+ ));
}
- public ComplexAutomaton(final ComplexAutomaton card) {
+ private ComplexAutomaton(final ComplexAutomaton card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/c/CrookclawElder.java b/Mage.Sets/src/mage/cards/c/CrookclawElder.java
index 54f59b87c5..6b2a76e853 100644
--- a/Mage.Sets/src/mage/cards/c/CrookclawElder.java
+++ b/Mage.Sets/src/mage/cards/c/CrookclawElder.java
@@ -1,7 +1,6 @@
package mage.cards.c;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -14,28 +13,29 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.Predicate;
import mage.filter.predicate.Predicates;
-import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetCreaturePermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class CrookclawElder extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped Bird you control");
- private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("untapped Wizards you control");
+ private static final FilterControlledCreaturePermanent filter
+ = new FilterControlledCreaturePermanent(SubType.BIRD, "untapped Birds you control");
+ private static final FilterControlledCreaturePermanent filter2
+ = new FilterControlledCreaturePermanent(SubType.WIZARD, "untapped Wizards you control");
+ private static final Predicate pred = Predicates.not(TappedPredicate.instance);
static {
- filter.add(new SubtypePredicate(SubType.BIRD));
- filter.add(Predicates.not(TappedPredicate.instance));
- filter2.add(new SubtypePredicate(SubType.WIZARD));
- filter2.add(Predicates.not(TappedPredicate.instance));
+ filter.add(pred);
+ filter2.add(pred);
}
public CrookclawElder(UUID ownerId, CardSetInfo setInfo) {
@@ -50,16 +50,26 @@ public final class CrookclawElder extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Tap two untapped Birds you control: Draw a card.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new TapTargetCost(new TargetControlledCreaturePermanent(2, 2, filter, true)));
+ Ability ability = new SimpleActivatedAbility(
+ new DrawCardSourceControllerEffect(1),
+ new TapTargetCost(new TargetControlledCreaturePermanent(
+ 2, 2, filter, true
+ ))
+ );
this.addAbility(ability);
// Tap two untapped Wizards you control: Target creature gains flying until end of turn.
- ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), new TapTargetCost(new TargetControlledCreaturePermanent(2, 2, filter2, true)));
+ ability = new SimpleActivatedAbility(
+ new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn),
+ new TapTargetCost(new TargetControlledCreaturePermanent(
+ 2, 2, filter2, true
+ ))
+ );
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
- public CrookclawElder(final CrookclawElder card) {
+ private CrookclawElder(final CrookclawElder card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/d/DarkTriumph.java b/Mage.Sets/src/mage/cards/d/DarkTriumph.java
index d2c98f3027..4af43095ae 100644
--- a/Mage.Sets/src/mage/cards/d/DarkTriumph.java
+++ b/Mage.Sets/src/mage/cards/d/DarkTriumph.java
@@ -1,7 +1,7 @@
package mage.cards.d;
-import java.util.UUID;
+import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.costs.AlternativeCostSourceAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
@@ -11,30 +11,30 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
-import mage.filter.common.FilterLandPermanent;
-import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.FilterPermanent;
import mage.target.common.TargetControlledCreaturePermanent;
+import java.util.UUID;
+
+import static mage.filter.StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT;
+
/**
- *
* @author TheElk801
*/
public final class DarkTriumph extends CardImpl {
- private static final FilterLandPermanent filterSwamp = new FilterLandPermanent("If you control a Swamp");
-
- static {
- filterSwamp.add(new SubtypePredicate(SubType.SWAMP));
- }
+ private static final Condition condition = new PermanentsOnTheBattlefieldCondition(
+ new FilterPermanent(SubType.SWAMP, "If you control a Swamp")
+ );
public DarkTriumph(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{4}{B}");
// If you control a Swamp, you may sacrifice a creature rather than pay Dark Triumph's mana cost.
this.addAbility(new AlternativeCostSourceAbility(
- new SacrificeTargetCost(new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)),
- new PermanentsOnTheBattlefieldCondition(filterSwamp), null
+ new SacrificeTargetCost(
+ new TargetControlledCreaturePermanent(FILTER_CONTROLLED_CREATURE_SHORT_TEXT)
+ ), condition
));
// Creatures you control get +2/+0 until end of turn.
diff --git a/Mage.Sets/src/mage/cards/d/Delraich.java b/Mage.Sets/src/mage/cards/d/Delraich.java
index 4691596016..135de65e67 100644
--- a/Mage.Sets/src/mage/cards/d/Delraich.java
+++ b/Mage.Sets/src/mage/cards/d/Delraich.java
@@ -1,7 +1,6 @@
package mage.cards.d;
-import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.costs.AlternativeCostSourceAbility;
@@ -15,13 +14,15 @@ import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ColorPredicate;
import mage.target.common.TargetControlledPermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class Delraich extends CardImpl {
- private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black creature");
+ private static final FilterControlledCreaturePermanent filter
+ = new FilterControlledCreaturePermanent("black creature");
static {
filter.add(new ColorPredicate(ObjectColor.BLACK));
@@ -34,15 +35,16 @@ public final class Delraich extends CardImpl {
this.power = new MageInt(6);
this.toughness = new MageInt(6);
+ // You may sacrifice three black creatures rather than pay Delraich's mana cost.
+ this.addAbility(new AlternativeCostSourceAbility(new SacrificeTargetCost(
+ new TargetControlledPermanent(3, 3, filter, false)
+ )));
+
// Trample
this.addAbility(TrampleAbility.getInstance());
-
- // You may sacrifice three black creatures rather than pay Delraich's mana cost.
- AlternativeCostSourceAbility alternateCosts = new AlternativeCostSourceAbility(new SacrificeTargetCost(new TargetControlledPermanent(3, 3, filter, false)));
- this.addAbility(alternateCosts);
}
- public Delraich(final Delraich card) {
+ private Delraich(final Delraich card) {
super(card);
}
diff --git a/Mage.Sets/src/mage/cards/d/DestructiveUrge.java b/Mage.Sets/src/mage/cards/d/DestructiveUrge.java
index a861a81c13..1ac31870ad 100644
--- a/Mage.Sets/src/mage/cards/d/DestructiveUrge.java
+++ b/Mage.Sets/src/mage/cards/d/DestructiveUrge.java
@@ -1,23 +1,23 @@
package mage.cards.d;
-import java.util.UUID;
-import mage.target.common.TargetCreaturePermanent;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToAPlayerAttachedTriggeredAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SacrificeEffect;
-import mage.constants.Outcome;
-import mage.target.TargetPermanent;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
+import mage.constants.Outcome;
import mage.constants.SubType;
-import mage.filter.common.FilterLandPermanent;
+import mage.filter.StaticFilters;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+import java.util.UUID;
/**
- *
* @author TheElk801
*/
public final class DestructiveUrge extends CardImpl {
@@ -35,8 +35,10 @@ public final class DestructiveUrge extends CardImpl {
this.addAbility(ability);
// Whenever enchanted creature deals combat damage to a player, that player sacrifices a land.
- ability = new DealsDamageToAPlayerAttachedTriggeredAbility(new SacrificeEffect(new FilterLandPermanent(), 1, "that player"), "enchanted", false, true);
- this.addAbility(ability);
+ this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(
+ new SacrificeEffect(StaticFilters.FILTER_LAND, 1, "that player"),
+ "enchanted", false, true
+ ));
}
public DestructiveUrge(final DestructiveUrge card) {
diff --git a/Mage.Sets/src/mage/cards/d/DivineCongregation.java b/Mage.Sets/src/mage/cards/d/DivineCongregation.java
index d135de316e..2d60861dc1 100644
--- a/Mage.Sets/src/mage/cards/d/DivineCongregation.java
+++ b/Mage.Sets/src/mage/cards/d/DivineCongregation.java
@@ -1,7 +1,6 @@
package mage.cards.d;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
@@ -10,13 +9,14 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
-import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.TargetPlayer;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class DivineCongregation extends CardImpl {
@@ -32,7 +32,7 @@ public final class DivineCongregation extends CardImpl {
this.addAbility(new SuspendAbility(5, new ManaCostsImpl("{1}{W}"), this));
}
- public DivineCongregation(final DivineCongregation card) {
+ private DivineCongregation(final DivineCongregation card) {
super(card);
}
@@ -44,12 +44,12 @@ public final class DivineCongregation extends CardImpl {
class DivineCongregationEffect extends OneShotEffect {
- public DivineCongregationEffect() {
+ DivineCongregationEffect() {
super(Outcome.Benefit);
staticText = "You gain 2 life for each creature target player controls";
}
- public DivineCongregationEffect(final DivineCongregationEffect effect) {
+ private DivineCongregationEffect(final DivineCongregationEffect effect) {
super(effect);
}
@@ -63,7 +63,7 @@ class DivineCongregationEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
Player player = game.getPlayer(source.getFirstTarget());
if (controller != null && player != null) {
- int critters = game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), player.getId(), game).size();
+ int critters = game.getBattlefield().getAllActivePermanents(StaticFilters.FILTER_PERMANENT_CREATURE, player.getId(), game).size();
controller.gainLife(2 * critters, game, source);
}
return true;
diff --git a/Mage.Sets/src/mage/cards/e/Epicenter.java b/Mage.Sets/src/mage/cards/e/Epicenter.java
index 9f2a1f4f4d..aa54475f9d 100644
--- a/Mage.Sets/src/mage/cards/e/Epicenter.java
+++ b/Mage.Sets/src/mage/cards/e/Epicenter.java
@@ -1,8 +1,6 @@
package mage.cards.e;
-import java.util.Iterator;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.condition.InvertCondition;
import mage.abilities.condition.common.CardsInControllerGraveCondition;
@@ -18,8 +16,10 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPlayer;
+import java.util.Iterator;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class Epicenter extends CardImpl {
@@ -31,12 +31,15 @@ public final class Epicenter extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SacrificeEffect(StaticFilters.FILTER_LAND, 1, "Target player"),
new InvertCondition(new CardsInControllerGraveCondition(7)),
- "Target player sacrifices a land"));
+ "Target player sacrifices a land"
+ ));
// Threshold - Each player sacrifices all lands he or she controls instead if seven or more cards are in your graveyard.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new EpicenterEffect(),
new CardsInControllerGraveCondition(7),
- "
Threshold — Each player sacrifices all lands he or she controls instead if seven or more cards are in your graveyard."));
+ "
Threshold — Each player sacrifices all lands they control instead " +
+ "if seven or more cards are in your graveyard."
+ ));
this.getSpellAbility().addTarget(new TargetPlayer());
}
@@ -55,10 +58,9 @@ class EpicenterEffect extends OneShotEffect {
EpicenterEffect() {
super(Outcome.DestroyPermanent);
- staticText = "Each player sacrifices all lands he or she controls";
}
- EpicenterEffect(final EpicenterEffect effect) {
+ private EpicenterEffect(final EpicenterEffect effect) {
super(effect);
}
diff --git a/Mage.Sets/src/mage/cards/i/InfestedRoothold.java b/Mage.Sets/src/mage/cards/i/InfestedRoothold.java
index c916d6075f..fd3c10075c 100644
--- a/Mage.Sets/src/mage/cards/i/InfestedRoothold.java
+++ b/Mage.Sets/src/mage/cards/i/InfestedRoothold.java
@@ -1,7 +1,6 @@
package mage.cards.i;
-import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
@@ -11,22 +10,21 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
+import mage.filter.FilterCard;
import mage.filter.FilterSpell;
import mage.filter.common.FilterArtifactCard;
-import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.filter.common.FilterArtifactSpell;
import mage.game.permanent.token.InsectToken;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class InfestedRoothold extends CardImpl {
- private final static FilterSpell filter = new FilterSpell("an artifact spell");
-
- static {
- filter.add(new CardTypePredicate(CardType.ARTIFACT));
- }
+ private static final FilterCard filter = new FilterArtifactCard("artifacts");
+ private static final FilterSpell filter2 = new FilterArtifactSpell("an artifact spell");
public InfestedRoothold(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
@@ -39,10 +37,12 @@ public final class InfestedRoothold extends CardImpl {
this.addAbility(DefenderAbility.getInstance());
// Protection from artifacts
- this.addAbility(new ProtectionAbility(new FilterArtifactCard("artifacts")));
+ this.addAbility(new ProtectionAbility(filter));
// Whenever an opponent casts an artifact spell, you may create a 1/1 green Insect creature token.
- this.addAbility(new SpellCastOpponentTriggeredAbility(new CreateTokenEffect(new InsectToken()), filter, true));
+ this.addAbility(new SpellCastOpponentTriggeredAbility(
+ new CreateTokenEffect(new InsectToken()), filter2, true)
+ );
}
diff --git a/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java b/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java
index 737385b8fe..f959f3abb8 100644
--- a/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java
+++ b/Mage.Sets/src/mage/cards/m/MirrorOfTheForebears.java
@@ -1,35 +1,39 @@
package mage.cards.m;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseCreatureTypeEffect;
-import mage.abilities.effects.common.continuous.AddCardTypeTargetEffect;
+import mage.abilities.effects.common.continuous.AddCardTypeSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
-import mage.constants.Zone;
+import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.mageobject.ChosenSubtypePredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
-import mage.target.targetpointer.FixedTarget;
import mage.util.functions.EmptyApplyToPermanent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class MirrorOfTheForebears extends CardImpl {
+ private static final FilterPermanent filter = new FilterControlledCreaturePermanent();
+
+ static {
+ filter.add(new ChosenSubtypePredicate());
+ }
+
public MirrorOfTheForebears(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
@@ -37,14 +41,12 @@ public final class MirrorOfTheForebears extends CardImpl {
this.addAbility(new AsEntersBattlefieldAbility(new ChooseCreatureTypeEffect(Outcome.Copy)));
// 1: Until end of turn, Mirror of the Forebears becomes a copy of target creature you control of the chosen type, except it's an artifact in addition to its other types.
- FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
- filter.add(new ChosenSubtypePredicate());
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MirrorOfTheForebearsCopyEffect(), new ManaCostsImpl("{1}"));
+ Ability ability = new SimpleActivatedAbility(new MirrorOfTheForebearsCopyEffect(), new GenericManaCost(1));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
}
- public MirrorOfTheForebears(final MirrorOfTheForebears card) {
+ private MirrorOfTheForebears(final MirrorOfTheForebears card) {
super(card);
}
@@ -56,12 +58,12 @@ public final class MirrorOfTheForebears extends CardImpl {
class MirrorOfTheForebearsCopyEffect extends OneShotEffect {
- public MirrorOfTheForebearsCopyEffect() {
+ MirrorOfTheForebearsCopyEffect() {
super(Outcome.Copy);
this.staticText = "until end of turn, {this} becomes a copy of target creature you control of the chosen type, except it's an artifact in addition to its other types";
}
- public MirrorOfTheForebearsCopyEffect(final MirrorOfTheForebearsCopyEffect effect) {
+ private MirrorOfTheForebearsCopyEffect(final MirrorOfTheForebearsCopyEffect effect) {
super(effect);
}
@@ -76,11 +78,7 @@ class MirrorOfTheForebearsCopyEffect extends OneShotEffect {
Permanent copyFromPermanent = game.getPermanent(getTargetPointer().getFirst(game, source));
if (sourcePermanent != null && copyFromPermanent != null) {
game.copyPermanent(Duration.EndOfTurn, copyFromPermanent, sourcePermanent.getId(), source, new EmptyApplyToPermanent());
- if (!copyFromPermanent.isArtifact()) {
- ContinuousEffect effect = new AddCardTypeTargetEffect(Duration.EndOfTurn, CardType.ARTIFACT);
- effect.setTargetPointer(new FixedTarget(sourcePermanent, game));
- game.addEffect(effect, source);
- }
+ game.addEffect(new AddCardTypeSourceEffect(Duration.EndOfTurn, CardType.ARTIFACT), source);
return true;
}
return false;
diff --git a/Mage.Sets/src/mage/cards/s/SecondSight.java b/Mage.Sets/src/mage/cards/s/SecondSight.java
index 80b3cb43df..b3daccbbbf 100644
--- a/Mage.Sets/src/mage/cards/s/SecondSight.java
+++ b/Mage.Sets/src/mage/cards/s/SecondSight.java
@@ -1,10 +1,8 @@
package mage.cards.s;
-import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.Mode;
-import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.LookLibraryControllerEffect;
import mage.abilities.keyword.EntwineAbility;
@@ -18,8 +16,9 @@ import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetOpponent;
+import java.util.UUID;
+
/**
- *
* @author TheElk801
*/
public final class SecondSight extends CardImpl {
@@ -32,22 +31,17 @@ public final class SecondSight extends CardImpl {
this.getSpellAbility().getModes().setMaxModes(1);
//Look at the top five cards of target opponent's library, then put them back in any order;
- Effect effect = new SecondSightEffect();
- this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addEffect(new SecondSightEffect());
this.getSpellAbility().addTarget(new TargetOpponent());
//or look at the top five cards of your library, then put them back in any order.
- effect = new LookLibraryControllerEffect(5);
- Mode mode = new Mode();
- mode.addEffect(effect);
- this.getSpellAbility().getModes().addMode(mode);
+ this.getSpellAbility().getModes().addMode(new Mode(new LookLibraryControllerEffect(5)));
// Entwine {U}
this.addAbility(new EntwineAbility("{U}"));
-
}
- public SecondSight(final SecondSight card) {
+ private SecondSight(final SecondSight card) {
super(card);
}
@@ -59,12 +53,12 @@ public final class SecondSight extends CardImpl {
class SecondSightEffect extends OneShotEffect {
- public SecondSightEffect() {
+ SecondSightEffect() {
super(Outcome.DrawCard);
this.staticText = "look at the top five cards of target opponent's library, then put them back in any order";
}
- public SecondSightEffect(final SecondSightEffect effect) {
+ private SecondSightEffect(final SecondSightEffect effect) {
super(effect);
}
diff --git a/Mage/src/main/java/mage/filter/StaticFilters.java b/Mage/src/main/java/mage/filter/StaticFilters.java
index a21da63a26..fef00127f6 100644
--- a/Mage/src/main/java/mage/filter/StaticFilters.java
+++ b/Mage/src/main/java/mage/filter/StaticFilters.java
@@ -85,6 +85,12 @@ public final class StaticFilters {
FILTER_CARD_CREATURE_YOUR_GRAVEYARD.setLockedFilter(true);
}
+ public static final FilterCreatureCard FILTER_CARD_CREATURES_YOUR_GRAVEYARD = new FilterCreatureCard("creature cards from your graveyard");
+
+ static {
+ FILTER_CARD_CREATURES_YOUR_GRAVEYARD.setLockedFilter(true);
+ }
+
public static final FilterCard FILTER_CARD_FROM_YOUR_GRAVEYARD = new FilterCard("card from your graveyard");
static {