diff --git a/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java b/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java
index 55810ac8b16..aa9d7d77321 100644
--- a/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java
+++ b/Mage.Sets/src/mage/cards/a/AltarOfTheBrood.java
@@ -2,7 +2,7 @@ package mage.cards.a;
import java.util.UUID;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -28,7 +28,7 @@ public final class AltarOfTheBrood extends CardImpl {
// Whenever another permanent enters the battlefield under your control, each opponent mills a card.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(1, TargetController.OPPONENT), filter, false, null, true));
+ new MillCardsEachPlayerEffect(1, TargetController.OPPONENT), filter, false, null, true));
}
public AltarOfTheBrood(final AltarOfTheBrood card) {
diff --git a/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java b/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java
index b136d3817fd..d69aad32efa 100644
--- a/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java
+++ b/Mage.Sets/src/mage/cards/a/ArmoredSkaab.java
@@ -4,7 +4,7 @@ package mage.cards.a;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -25,7 +25,7 @@ public final class ArmoredSkaab extends CardImpl {
this.toughness = new MageInt(4);
// When Armored Skaab enters the battlefield, put the top four cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(4)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(4)));
}
public ArmoredSkaab(final ArmoredSkaab card) {
diff --git a/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java b/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java
index 997450c91b2..ec9e24c8fd1 100644
--- a/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java
+++ b/Mage.Sets/src/mage/cards/a/AshiokSculptorOfFears.java
@@ -5,7 +5,7 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.continuous.GainControlAllEffect;
import mage.cards.CardImpl;
@@ -40,7 +40,7 @@ public final class AshiokSculptorOfFears extends CardImpl {
Ability ability = new LoyaltyAbility(
new DrawCardSourceControllerEffect(1).setText("draw a card"), 2
);
- ability.addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.ANY));
+ ability.addEffect(new MillCardsEachPlayerEffect(2, TargetController.ANY));
this.addAbility(ability);
// −5: Put target creature card from a graveyard onto the battlefield under your control.
diff --git a/Mage.Sets/src/mage/cards/a/AutumnalGloom.java b/Mage.Sets/src/mage/cards/a/AutumnalGloom.java
index f9cbe9fe744..490b3e665f1 100644
--- a/Mage.Sets/src/mage/cards/a/AutumnalGloom.java
+++ b/Mage.Sets/src/mage/cards/a/AutumnalGloom.java
@@ -7,7 +7,7 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.TransformSourceEffect;
import mage.abilities.hint.common.DeliriumHint;
import mage.abilities.keyword.TransformAbility;
@@ -29,7 +29,7 @@ public final class AutumnalGloom extends CardImpl {
this.secondSideCardClazz = AncientOfTheEquinox.class;
// {B}: Put the top card of your library into your graveyard.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveControllerEffect(1), new ManaCostsImpl("{B}")));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsControllerEffect(1), new ManaCostsImpl("{B}")));
// Delirium — At the beginning of your end step, if there are four or more card types among cards in your graveyard, transform Autumnal Gloom.
this.addAbility(new TransformAbility());
diff --git a/Mage.Sets/src/mage/cards/b/Bloodcurdler.java b/Mage.Sets/src/mage/cards/b/Bloodcurdler.java
index d07c45ed7aa..afdee80355f 100644
--- a/Mage.Sets/src/mage/cards/b/Bloodcurdler.java
+++ b/Mage.Sets/src/mage/cards/b/Bloodcurdler.java
@@ -12,7 +12,7 @@ import mage.abilities.condition.common.CardsInControllerGraveyardCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.common.ExileCardFromOwnGraveyardControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility;
@@ -37,7 +37,7 @@ public final class Bloodcurdler extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// At the beginning of your upkeep, put the top card of your library into your graveyard.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveControllerEffect(1), TargetController.YOU, false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new MillCardsControllerEffect(1), TargetController.YOU, false));
Condition thresholdCondition = new CardsInControllerGraveyardCondition(7);
// Threshold - As long as seven or more cards are in your graveyard, Bloodcurdler gets +1/+1 and has "At the beginning of your end step, exile two cards from your graveyard."
diff --git a/Mage.Sets/src/mage/cards/b/BreakingEntering.java b/Mage.Sets/src/mage/cards/b/BreakingEntering.java
index 4c96f12ae48..dfdae84088f 100644
--- a/Mage.Sets/src/mage/cards/b/BreakingEntering.java
+++ b/Mage.Sets/src/mage/cards/b/BreakingEntering.java
@@ -4,7 +4,7 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
import mage.abilities.keyword.HasteAbility;
import mage.cards.Card;
@@ -30,7 +30,7 @@ public final class BreakingEntering extends SplitCard {
// Breaking
// Target player puts the top eight cards of their library into their graveyard.
- getLeftHalfCard().getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveTargetEffect(8));
+ getLeftHalfCard().getSpellAbility().addEffect(new MillCardsTargetEffect(8));
getLeftHalfCard().getSpellAbility().addTarget(new TargetPlayer());
// Entering
diff --git a/Mage.Sets/src/mage/cards/c/CarrionGrub.java b/Mage.Sets/src/mage/cards/c/CarrionGrub.java
index b0f52fc7911..448a8aecda4 100644
--- a/Mage.Sets/src/mage/cards/c/CarrionGrub.java
+++ b/Mage.Sets/src/mage/cards/c/CarrionGrub.java
@@ -8,7 +8,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -39,7 +39,7 @@ public final class CarrionGrub extends CardImpl {
)));
// When Carrion Grub enters the battlefield, mill four cards.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(4)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(4)));
}
private CarrionGrub(final CarrionGrub card) {
diff --git a/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java b/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java
index 18f3ea581e2..780028b8d77 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidAristocrat.java
@@ -2,7 +2,7 @@ package mage.cards.c;
import mage.MageInt;
import mage.abilities.common.BecomesTargetTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -22,7 +22,7 @@ public final class CephalidAristocrat extends CardImpl {
this.toughness = new MageInt(3);
// Whenever Cephalid Aristocrat becomes the target of a spell or ability, put the top two cards of your library into your graveyard.
- this.addAbility(new BecomesTargetTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2)));
+ this.addAbility(new BecomesTargetTriggeredAbility(new MillCardsControllerEffect(2)));
}
public CephalidAristocrat(final CephalidAristocrat card) {
diff --git a/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java b/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java
index 30d2cad4418..4a14660e849 100644
--- a/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java
+++ b/Mage.Sets/src/mage/cards/c/CephalidIllusionist.java
@@ -11,7 +11,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.PreventDamageByTargetEffect;
import mage.abilities.effects.common.PreventDamageToTargetEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -35,7 +35,7 @@ public final class CephalidIllusionist extends CardImpl {
this.toughness = new MageInt(1);
// Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of your library into your graveyard.
- this.addAbility(new BecomesTargetTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3)));
+ this.addAbility(new BecomesTargetTriggeredAbility(new MillCardsControllerEffect(3)));
// {2}{U}, {tap}: Prevent all combat damage that would be dealt to
Effect effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, true);
diff --git a/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java b/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java
index d1e26d77506..cf972c5e771 100644
--- a/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java
+++ b/Mage.Sets/src/mage/cards/c/ChainsOfMephistopheles.java
@@ -6,7 +6,7 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.ReplacementEffectImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@@ -66,7 +66,7 @@ class ChainsOfMephistophelesReplacementEffect extends ReplacementEffectImpl {
if (player != null) {
if (player.getHand().isEmpty()) {
// they put the top card of their library into their graveyard
- Effect effect = new PutTopCardOfLibraryIntoGraveTargetEffect(1);
+ Effect effect = new MillCardsTargetEffect(1);
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
effect.apply(game, source);
return true;
diff --git a/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java b/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java
index d575eb23c70..8d85f07d285 100644
--- a/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java
+++ b/Mage.Sets/src/mage/cards/c/ChancellorOfTheSpires.java
@@ -6,7 +6,7 @@ import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.common.ChancellorAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.PlayTargetWithoutPayingManaEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -68,7 +68,7 @@ public final class ChancellorOfTheSpires extends CardImpl {
class ChancellorOfTheSpiresDelayedTriggeredAbility extends DelayedTriggeredAbility {
ChancellorOfTheSpiresDelayedTriggeredAbility() {
- super(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(7, TargetController.OPPONENT));
+ super(new MillCardsEachPlayerEffect(7, TargetController.OPPONENT));
}
private ChancellorOfTheSpiresDelayedTriggeredAbility(ChancellorOfTheSpiresDelayedTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/c/CharmedPendant.java b/Mage.Sets/src/mage/cards/c/CharmedPendant.java
index fb3f6123960..e01da8d2de7 100644
--- a/Mage.Sets/src/mage/cards/c/CharmedPendant.java
+++ b/Mage.Sets/src/mage/cards/c/CharmedPendant.java
@@ -3,7 +3,7 @@ package mage.cards.c;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.costs.Cost;
-import mage.abilities.costs.common.PutTopCardOfYourLibraryToGraveyardCost;
+import mage.abilities.costs.common.MillCardsCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.*;
import mage.abilities.effects.mana.ManaEffect;
@@ -51,7 +51,7 @@ class CharmedPendantAbility extends ActivatedManaAbilityImpl {
public CharmedPendantAbility() {
super(Zone.BATTLEFIELD, new CharmedPendantManaEffect(), new TapSourceCost());
- this.addCost(new PutTopCardOfYourLibraryToGraveyardCost());
+ this.addCost(new MillCardsCost());
this.setUndoPossible(false); // Otherwise you could return the card from graveyard
}
@@ -131,8 +131,8 @@ class CharmedPendantManaEffect extends ManaEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (Cost cost : source.getCosts()) {
- if (cost instanceof PutTopCardOfYourLibraryToGraveyardCost) {
- Set cards = ((PutTopCardOfYourLibraryToGraveyardCost) cost).getCardsMovedToGraveyard();
+ if (cost instanceof MillCardsCost) {
+ Set cards = ((MillCardsCost) cost).getCardsMovedToGraveyard();
if (!cards.isEmpty()) {
Card card = cards.iterator().next();
if (card != null && card.getManaCost() != null) {
diff --git a/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java b/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java
index 98f9bbc67d2..aa52573d3a2 100644
--- a/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java
+++ b/Mage.Sets/src/mage/cards/c/ChillOfForeboding.java
@@ -1,7 +1,7 @@
package mage.cards.c;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlashbackAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -20,7 +20,7 @@ public final class ChillOfForeboding extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{U}");
// Each player puts the top five cards of their library into their graveyard.
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(5, TargetController.ANY));
+ this.getSpellAbility().addEffect(new MillCardsEachPlayerEffect(5, TargetController.ANY));
// Flashback {7}{U}
this.addAbility(new FlashbackAbility(new ManaCostsImpl("{7}{U}"), TimingRule.SORCERY));
diff --git a/Mage.Sets/src/mage/cards/c/CorpseChurn.java b/Mage.Sets/src/mage/cards/c/CorpseChurn.java
index 855d692d096..037114c27ac 100644
--- a/Mage.Sets/src/mage/cards/c/CorpseChurn.java
+++ b/Mage.Sets/src/mage/cards/c/CorpseChurn.java
@@ -4,7 +4,7 @@ package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -26,7 +26,7 @@ public final class CorpseChurn extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{B}");
// Put the top three cards of your library into your graveyard, then you may return a creature card from your graveyard to your hand.
- getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(3));
+ getSpellAbility().addEffect(new MillCardsControllerEffect(3));
getSpellAbility().addEffect(new CorpseChurnEffect());
}
diff --git a/Mage.Sets/src/mage/cards/c/CrawlingSensation.java b/Mage.Sets/src/mage/cards/c/CrawlingSensation.java
index 83f3cd4b745..33405ece01c 100644
--- a/Mage.Sets/src/mage/cards/c/CrawlingSensation.java
+++ b/Mage.Sets/src/mage/cards/c/CrawlingSensation.java
@@ -4,7 +4,7 @@ import java.util.UUID;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -25,7 +25,7 @@ public final class CrawlingSensation extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
// At the beginning of your upkeep, you may put the top two cards of your library into your graveyard.
- this.addAbility(new OnEventTriggeredAbility(GameEvent.EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new PutTopCardOfLibraryIntoGraveControllerEffect(2), true));
+ this.addAbility(new OnEventTriggeredAbility(GameEvent.EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new MillCardsControllerEffect(2), true));
// Whenever one or more land cards are put into your graveyard from anywhere for the first time each turn, create a 1/1 green Insect creature token.
this.addAbility(new CrawlingSensationTriggeredAbility());
diff --git a/Mage.Sets/src/mage/cards/c/CropSigil.java b/Mage.Sets/src/mage/cards/c/CropSigil.java
index ecaf670d5e7..fa382157b73 100644
--- a/Mage.Sets/src/mage/cards/c/CropSigil.java
+++ b/Mage.Sets/src/mage/cards/c/CropSigil.java
@@ -8,7 +8,7 @@ import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.hint.common.DeliriumHint;
import mage.cards.CardImpl;
@@ -36,7 +36,7 @@ public final class CropSigil extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{G}");
// At the beginning of your upkeep, you may put the top card of your library into your graveyard.
- this.addAbility(new OnEventTriggeredAbility(GameEvent.EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new PutTopCardOfLibraryIntoGraveControllerEffect(1), true));
+ this.addAbility(new OnEventTriggeredAbility(GameEvent.EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new MillCardsControllerEffect(1), true));
// Delirium — {2}{G}, Sacrifice Crop Sigil: Return up to one target creature card and up to one target land card from your graveyard to your hand.
// Activate this ability only if there are four or more card types among cards in your graveyard.
diff --git a/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java b/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java
index 9fd9e1d98da..8513f083efb 100644
--- a/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java
+++ b/Mage.Sets/src/mage/cards/c/CrowOfDarkTidings.java
@@ -4,7 +4,7 @@ package mage.cards.c;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldOrDiesSourceTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -28,7 +28,7 @@ public final class CrowOfDarkTidings extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Crow of Dark Tidings enters the battlefield or dies, put the top two cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2), false));
+ this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility(new MillCardsControllerEffect(2), false));
}
public CrowOfDarkTidings(final CrowOfDarkTidings card) {
diff --git a/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java b/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java
index a7624a76ce3..73c90d6f7e4 100644
--- a/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java
+++ b/Mage.Sets/src/mage/cards/d/DeadbridgeChant.java
@@ -5,7 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -26,7 +26,7 @@ public final class DeadbridgeChant extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}{G}");
// When Deadbridge Chant enters the battlefield, put the top ten cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(10)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(10)));
// At the beginning of your upkeep, choose a card at random in your graveyard. If it's a creature card, put it onto the battlefield. Otherwise, put it into your hand.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new DeadbridgeChantEffect(), TargetController.YOU, false));
diff --git a/Mage.Sets/src/mage/cards/d/DeathsOasis.java b/Mage.Sets/src/mage/cards/d/DeathsOasis.java
index 216ce01adea..2748394fead 100644
--- a/Mage.Sets/src/mage/cards/d/DeathsOasis.java
+++ b/Mage.Sets/src/mage/cards/d/DeathsOasis.java
@@ -9,7 +9,7 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -95,7 +95,7 @@ class DeathsOasisTriggeredAbility extends DiesCreatureTriggeredAbility {
return false;
}
this.getEffects().clear();
- this.addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(2));
+ this.addEffect(new MillCardsControllerEffect(2));
this.addEffect(new DeathsOasisEffect(zEvent.getTarget().getConvertedManaCost()));
return true;
}
diff --git a/Mage.Sets/src/mage/cards/d/DeepSpawn.java b/Mage.Sets/src/mage/cards/d/DeepSpawn.java
index 3a78baa9fb0..65146e97237 100644
--- a/Mage.Sets/src/mage/cards/d/DeepSpawn.java
+++ b/Mage.Sets/src/mage/cards/d/DeepSpawn.java
@@ -6,7 +6,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
-import mage.abilities.costs.common.PutTopCardOfYourLibraryToGraveyardCost;
+import mage.abilities.costs.common.MillCardsCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
@@ -38,7 +38,7 @@ public final class DeepSpawn extends CardImpl {
// Trample
this.addAbility(TrampleAbility.getInstance());
// At the beginning of your upkeep, sacrifice Deep Spawn unless you put the top two cards of your library into your graveyard.
- Effect effect = new SacrificeSourceUnlessPaysEffect(new PutTopCardOfYourLibraryToGraveyardCost(2));
+ Effect effect = new SacrificeSourceUnlessPaysEffect(new MillCardsCost(2));
effect.setText("sacrifice {this} unless you mill two cards");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(effect, TargetController.YOU, false));
// {U}: Deep Spawn gains shroud until end of turn and doesn't untap during your next untap step. Tap Deep Spawn.
diff --git a/Mage.Sets/src/mage/cards/d/DerangedAssistant.java b/Mage.Sets/src/mage/cards/d/DerangedAssistant.java
index 1b4b3d76b08..4c2c54884f2 100644
--- a/Mage.Sets/src/mage/cards/d/DerangedAssistant.java
+++ b/Mage.Sets/src/mage/cards/d/DerangedAssistant.java
@@ -2,7 +2,7 @@ package mage.cards.d;
import java.util.UUID;
import mage.MageInt;
-import mage.abilities.costs.common.PutTopCardOfYourLibraryToGraveyardCost;
+import mage.abilities.costs.common.MillCardsCost;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -25,7 +25,7 @@ public final class DerangedAssistant extends CardImpl {
// {T}, Mill a card: Add {C}.
ColorlessManaAbility ability = new ColorlessManaAbility();
- ability.addCost(new PutTopCardOfYourLibraryToGraveyardCost());
+ ability.addCost(new MillCardsCost());
ability.setUndoPossible(false);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/d/DevourerOfMemory.java b/Mage.Sets/src/mage/cards/d/DevourerOfMemory.java
index 1525aa66da6..b5ef315d695 100644
--- a/Mage.Sets/src/mage/cards/d/DevourerOfMemory.java
+++ b/Mage.Sets/src/mage/cards/d/DevourerOfMemory.java
@@ -4,7 +4,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.Card;
@@ -37,7 +37,7 @@ public final class DevourerOfMemory extends CardImpl {
// {1}{U}{B}: Put the top card of your library into your graveyard.
this.addAbility(new SimpleActivatedAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(1), new ManaCostsImpl("{1}{U}{B}")
+ new MillCardsControllerEffect(1), new ManaCostsImpl("{1}{U}{B}")
));
}
diff --git a/Mage.Sets/src/mage/cards/d/DrownInFilth.java b/Mage.Sets/src/mage/cards/d/DrownInFilth.java
index 55138284192..54f60f00276 100644
--- a/Mage.Sets/src/mage/cards/d/DrownInFilth.java
+++ b/Mage.Sets/src/mage/cards/d/DrownInFilth.java
@@ -6,7 +6,7 @@ import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.dynamicvalue.common.SignInversionDynamicValue;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -27,7 +27,7 @@ public final class DrownInFilth extends CardImpl {
// Choose target creature. Put the top four cards of your library into your graveyard, then that creature gets -1/-1 until end of turn for each land card in your graveyard.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- Effect effect = new PutTopCardOfLibraryIntoGraveControllerEffect(4);
+ Effect effect = new MillCardsControllerEffect(4);
effect.setText("Choose target creature. Mill four cards");
this.getSpellAbility().addEffect(effect);
DynamicValue landCards = new SignInversionDynamicValue(new CardsInControllerGraveyardCount(new FilterLandCard()));
diff --git a/Mage.Sets/src/mage/cards/e/EmryLurkerOfTheLoch.java b/Mage.Sets/src/mage/cards/e/EmryLurkerOfTheLoch.java
index bebd901a619..ddcc29da1f7 100644
--- a/Mage.Sets/src/mage/cards/e/EmryLurkerOfTheLoch.java
+++ b/Mage.Sets/src/mage/cards/e/EmryLurkerOfTheLoch.java
@@ -8,7 +8,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.ArtifactYouControlCount;
import mage.abilities.effects.AsThoughEffectImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.cost.SpellCostReductionForEachSourceEffect;
import mage.abilities.hint.common.ArtifactYouControlHint;
import mage.cards.CardImpl;
@@ -41,7 +41,7 @@ public final class EmryLurkerOfTheLoch extends CardImpl {
// When Emry, Lurker of the Loch enters the battlefield, put the top four cards of your library into your graveyard.
this.addAbility(new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(4)
+ new MillCardsControllerEffect(4)
));
// {T}: Choose target artifact card in your graveyard. You may cast that card this turn.
diff --git a/Mage.Sets/src/mage/cards/e/EstridTheMasked.java b/Mage.Sets/src/mage/cards/e/EstridTheMasked.java
index 6bde7c3faf3..3d71d9c6a95 100644
--- a/Mage.Sets/src/mage/cards/e/EstridTheMasked.java
+++ b/Mage.Sets/src/mage/cards/e/EstridTheMasked.java
@@ -7,7 +7,7 @@ import mage.abilities.common.CanBeYourCommanderAbility;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.UntapAllControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -145,7 +145,7 @@ class EstridTheMaskedGraveyardEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- new PutTopCardOfLibraryIntoGraveControllerEffect(7).apply(game, source);
+ new MillCardsControllerEffect(7).apply(game, source);
Player controller = game.getPlayer(source.getControllerId());
if (controller == null) {
return false;
diff --git a/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java b/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java
index fffc68bc9ca..a781f13d011 100644
--- a/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java
+++ b/Mage.Sets/src/mage/cards/e/EvanescentIntellect.java
@@ -8,7 +8,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
@@ -36,7 +36,7 @@ public final class EvanescentIntellect extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
// Enchanted creature has "{1}{U}, {T}: Target player puts the top three cards of their library into their graveyard."
- ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(3), new ManaCostsImpl("{1}{U}"));
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsTargetEffect(3), new ManaCostsImpl("{1}{U}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetPlayer());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability, AttachmentType.AURA, Duration.WhileOnBattlefield)));
diff --git a/Mage.Sets/src/mage/cards/e/ExcavationMole.java b/Mage.Sets/src/mage/cards/e/ExcavationMole.java
index 05e75b59db7..dc4b4518f75 100644
--- a/Mage.Sets/src/mage/cards/e/ExcavationMole.java
+++ b/Mage.Sets/src/mage/cards/e/ExcavationMole.java
@@ -2,7 +2,7 @@ package mage.cards.e;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -28,7 +28,7 @@ public final class ExcavationMole extends CardImpl {
// When Excavation Mole enters the battlefield, put the top three cards of your library into your graveyard.
this.addAbility(new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(3)
+ new MillCardsControllerEffect(3)
));
}
diff --git a/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java b/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java
index 92e77183b56..167924e6f45 100644
--- a/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java
+++ b/Mage.Sets/src/mage/cards/e/ExtractFromDarkness.java
@@ -2,7 +2,7 @@ package mage.cards.e;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -26,7 +26,7 @@ public final class ExtractFromDarkness extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{B}");
// Each player puts the top two cards of their library into their graveyard.
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.ANY));
+ this.getSpellAbility().addEffect(new MillCardsEachPlayerEffect(2, TargetController.ANY));
// Then put a creature card from a graveyard onto the battlefield under your control.
this.getSpellAbility().addEffect(new ExtractFromDarknessEffect());
diff --git a/Mage.Sets/src/mage/cards/e/EyeCollector.java b/Mage.Sets/src/mage/cards/e/EyeCollector.java
index 757aa987571..f4bea0560cb 100644
--- a/Mage.Sets/src/mage/cards/e/EyeCollector.java
+++ b/Mage.Sets/src/mage/cards/e/EyeCollector.java
@@ -2,7 +2,7 @@ package mage.cards.e;
import mage.MageInt;
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -28,7 +28,7 @@ public final class EyeCollector extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Whenever Eye Collector deals combat damage to a player, each player puts the top card of their library into their graveyard.
- this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(1, TargetController.ANY), false));
+ this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new MillCardsEachPlayerEffect(1, TargetController.ANY), false));
}
private EyeCollector(final EyeCollector card) {
diff --git a/Mage.Sets/src/mage/cards/f/FalseMemories.java b/Mage.Sets/src/mage/cards/f/FalseMemories.java
index 1f588b02ceb..b8d564b3f69 100644
--- a/Mage.Sets/src/mage/cards/f/FalseMemories.java
+++ b/Mage.Sets/src/mage/cards/f/FalseMemories.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.ExileCardFromOwnGraveyardControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -20,7 +20,7 @@ public final class FalseMemories extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
// Put the top seven cards of your library into your graveyard.
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(7));
+ this.getSpellAbility().addEffect(new MillCardsControllerEffect(7));
// At the beginning of the next end step, exile seven cards from your graveyard.
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ExileCardFromOwnGraveyardControllerEffect(7))));
}
diff --git a/Mage.Sets/src/mage/cards/f/Fascination.java b/Mage.Sets/src/mage/cards/f/Fascination.java
index e3aa3f389d9..ef68eb0f9e2 100644
--- a/Mage.Sets/src/mage/cards/f/Fascination.java
+++ b/Mage.Sets/src/mage/cards/f/Fascination.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.abilities.Mode;
import mage.abilities.dynamicvalue.common.ManacostVariableValue;
import mage.abilities.effects.common.DrawCardAllEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -26,7 +26,7 @@ public final class Fascination extends CardImpl {
// * Each player puts the top X cards of their library into their graveyard.
Mode mode = new Mode();
- mode.addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(ManacostVariableValue.instance, TargetController.ANY));
+ mode.addEffect(new MillCardsEachPlayerEffect(ManacostVariableValue.instance, TargetController.ANY));
this.getSpellAbility().addMode(mode);
}
diff --git a/Mage.Sets/src/mage/cards/f/FleetingMemories.java b/Mage.Sets/src/mage/cards/f/FleetingMemories.java
index b74845671fb..ca59ae051cf 100644
--- a/Mage.Sets/src/mage/cards/f/FleetingMemories.java
+++ b/Mage.Sets/src/mage/cards/f/FleetingMemories.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.keyword.InvestigateEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -55,7 +55,7 @@ public final class FleetingMemories extends CardImpl {
class FleetingMemoriesTriggeredAbility extends TriggeredAbilityImpl {
public FleetingMemoriesTriggeredAbility() {
- super(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(3));
+ super(Zone.BATTLEFIELD, new MillCardsTargetEffect(3));
setLeavesTheBattlefieldTrigger(true);
}
diff --git a/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java b/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java
index 822954776da..67543f0029d 100644
--- a/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java
+++ b/Mage.Sets/src/mage/cards/f/ForsakenDrifters.java
@@ -4,7 +4,7 @@ package mage.cards.f;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -24,7 +24,7 @@ public final class ForsakenDrifters extends CardImpl {
this.toughness = new MageInt(2);
// When Forsaken Drifters dies, put the top four cards of your library into your graveyard.
- this.addAbility(new DiesSourceTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(4)));
+ this.addAbility(new DiesSourceTriggeredAbility(new MillCardsControllerEffect(4)));
}
public ForsakenDrifters(final ForsakenDrifters card) {
diff --git a/Mage.Sets/src/mage/cards/f/FuneralRites.java b/Mage.Sets/src/mage/cards/f/FuneralRites.java
index 54bd67e94e9..133370fa9b7 100644
--- a/Mage.Sets/src/mage/cards/f/FuneralRites.java
+++ b/Mage.Sets/src/mage/cards/f/FuneralRites.java
@@ -2,7 +2,7 @@ package mage.cards.f;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -22,7 +22,7 @@ public final class FuneralRites extends CardImpl {
.setText("You draw two cards"));
this.getSpellAbility().addEffect(new LoseLifeSourceControllerEffect(2)
.setText(", lose 2 life"));
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(2)
+ this.getSpellAbility().addEffect(new MillCardsControllerEffect(2)
.concatBy(", and"));
}
diff --git a/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java b/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java
index e7638cd5de8..b9051eec13c 100644
--- a/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java
+++ b/Mage.Sets/src/mage/cards/g/GhoulcallersBell.java
@@ -2,7 +2,7 @@ package mage.cards.g;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -19,7 +19,7 @@ public final class GhoulcallersBell extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
// {T}: Each player puts the top card of their library into their graveyard.
- this.addAbility(new SimpleActivatedAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(1, TargetController.ANY), new TapSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(new MillCardsEachPlayerEffect(1, TargetController.ANY), new TapSourceCost()));
}
private GhoulcallersBell(final GhoulcallersBell card) {
diff --git a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java
index ba9f3e14d46..68f09d29d3d 100644
--- a/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java
+++ b/Mage.Sets/src/mage/cards/g/GisaAndGeralf.java
@@ -7,7 +7,7 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.AsThoughEffectImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -36,7 +36,7 @@ public final class GisaAndGeralf extends CardImpl {
this.toughness = new MageInt(4);
// When Gisa and Geralf enters the battlefield, put the top four cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(4)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(4)));
// During each of your turns, you may cast a Zombie creature card from your graveyard.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GisaAndGeralfCastFromGraveyardEffect())
diff --git a/Mage.Sets/src/mage/cards/g/GlowsporeShaman.java b/Mage.Sets/src/mage/cards/g/GlowsporeShaman.java
index c069371c391..ced96a76ece 100644
--- a/Mage.Sets/src/mage/cards/g/GlowsporeShaman.java
+++ b/Mage.Sets/src/mage/cards/g/GlowsporeShaman.java
@@ -4,7 +4,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -35,7 +35,7 @@ public final class GlowsporeShaman extends CardImpl {
// When Glowspore Shaman enters the battlefield, put the top three cards of your library into your graveyard. You may put a land card from your graveyard on top of your library.
Ability ability = new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(3), false
+ new MillCardsControllerEffect(3), false
);
ability.addEffect(new GlowsporeShamanEffect());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java b/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java
index aca9ed8af6b..98fe9ab7f9f 100644
--- a/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java
+++ b/Mage.Sets/src/mage/cards/g/GrappleWithThePast.java
@@ -4,7 +4,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -27,7 +27,7 @@ public final class GrappleWithThePast extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{G}");
// Put the top three cards of your library into your graveyard, then you may return a creature or land card from your graveyard to your hand.
- getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(3));
+ getSpellAbility().addEffect(new MillCardsControllerEffect(3));
getSpellAbility().addEffect(new GrappleWithThePastEffect());
}
diff --git a/Mage.Sets/src/mage/cards/g/GraveStrength.java b/Mage.Sets/src/mage/cards/g/GraveStrength.java
index 84bdb9d4106..87c867d6953 100644
--- a/Mage.Sets/src/mage/cards/g/GraveStrength.java
+++ b/Mage.Sets/src/mage/cards/g/GraveStrength.java
@@ -3,7 +3,7 @@ package mage.cards.g;
import java.util.UUID;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -23,7 +23,7 @@ public final class GraveStrength extends CardImpl {
// Choose target creature. Put the top three cards of your library into your graveyard, then put a +1/+1 counter on that creature for each creature card in your graveyard.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- Effect effect = new PutTopCardOfLibraryIntoGraveControllerEffect(3);
+ Effect effect = new MillCardsControllerEffect(3);
effect.setText("Choose target creature. Mill three cards");
this.getSpellAbility().addEffect(effect);
effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(0), new CardsInControllerGraveyardCount(StaticFilters.FILTER_CARD_CREATURE));
diff --git a/Mage.Sets/src/mage/cards/g/GrindingStation.java b/Mage.Sets/src/mage/cards/g/GrindingStation.java
index 7cb6588d18b..a8d6b057a6d 100644
--- a/Mage.Sets/src/mage/cards/g/GrindingStation.java
+++ b/Mage.Sets/src/mage/cards/g/GrindingStation.java
@@ -7,7 +7,7 @@ import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -33,7 +33,7 @@ public final class GrindingStation extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// {T}, Sacrifice an artifact: Target player puts the top three cards of their library into their graveyard.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(3), new TapSourceCost());
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsTargetEffect(3), new TapSourceCost());
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/i/InkDissolver.java b/Mage.Sets/src/mage/cards/i/InkDissolver.java
index ef4a8c01875..5994caf732e 100644
--- a/Mage.Sets/src/mage/cards/i/InkDissolver.java
+++ b/Mage.Sets/src/mage/cards/i/InkDissolver.java
@@ -4,7 +4,7 @@ package mage.cards.i;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.abilityword.KinshipAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -27,7 +27,7 @@ public final class InkDissolver extends CardImpl {
// Kinship - At the beginning of your upkeep, you may look at the top card of your library. If it shares a creature type with Ink Dissolver, you may reveal it.
// If you do, each opponent puts the top three cards of their library into their graveyard.
- this.addAbility(new KinshipAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(3, TargetController.OPPONENT)));
+ this.addAbility(new KinshipAbility(new MillCardsEachPlayerEffect(3, TargetController.OPPONENT)));
}
public InkDissolver(final InkDissolver card) {
diff --git a/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java b/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java
index 6214ba69172..c60db576a22 100644
--- a/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java
+++ b/Mage.Sets/src/mage/cards/l/LaboratoryBrute.java
@@ -4,7 +4,7 @@ package mage.cards.l;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -24,7 +24,7 @@ public final class LaboratoryBrute extends CardImpl {
this.toughness = new MageInt(3);
// When Laboratory Brute enters the battlefield, put the top four cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(4)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(4)));
}
public LaboratoryBrute(final LaboratoryBrute card) {
diff --git a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java
index 7ec38c09ca8..b79d4a06a4b 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaDeathsMajesty.java
@@ -6,7 +6,7 @@ import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DestroyAllEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
import mage.abilities.effects.common.continuous.BecomesBlackZombieAdditionEffect;
import mage.cards.CardImpl;
@@ -42,7 +42,7 @@ public final class LilianaDeathsMajesty extends CardImpl {
// +1: Create a 2/2 black Zombie creature token. Put the top two cards of your library into your graveyard.
LoyaltyAbility ability = new LoyaltyAbility(new CreateTokenEffect(new ZombieToken()), 1);
- ability.addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(2));
+ ability.addEffect(new MillCardsControllerEffect(2));
this.addAbility(ability);
// -3: Return target creature card from your graveyard to the battlefield. That creature is a black Zombie in addition to its other colors and types.
diff --git a/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java b/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java
index 91fc2bcefc2..5e32fdf19ad 100644
--- a/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java
+++ b/Mage.Sets/src/mage/cards/l/LilianaTheLastHope.java
@@ -8,7 +8,7 @@ import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.GetEmblemEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
@@ -47,7 +47,7 @@ public final class LilianaTheLastHope extends CardImpl {
this.addAbility(ability);
// -2: Put the top two cards of your library into your graveyard, then you may return a creature card from your graveyard to your hand.
- ability = new LoyaltyAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2), -2);
+ ability = new LoyaltyAbility(new MillCardsControllerEffect(2), -2);
ability.addEffect(new LilianaTheLastHopeEffect());
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/m/ManicScribe.java b/Mage.Sets/src/mage/cards/m/ManicScribe.java
index 775f264a519..4cc6bac9395 100644
--- a/Mage.Sets/src/mage/cards/m/ManicScribe.java
+++ b/Mage.Sets/src/mage/cards/m/ManicScribe.java
@@ -5,8 +5,8 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.hint.common.DeliriumHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -31,14 +31,14 @@ public final class ManicScribe extends CardImpl {
// When Manic Scribe enters the battlefield, each opponent puts the top three cards of their library into their graveyard.
this.addAbility(new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(3, TargetController.OPPONENT), false
+ new MillCardsEachPlayerEffect(3, TargetController.OPPONENT), false
));
// Delirium — At the beginning of each opponent's upkeep, if there are four or more card types among cards in your graveyard,
// that player puts the top three cards of their library into their graveyard.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new BeginningOfUpkeepTriggeredAbility(
- Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(3),
+ Zone.BATTLEFIELD, new MillCardsTargetEffect(3),
TargetController.OPPONENT, false, true
), DeliriumCondition.instance, "Delirium — At the beginning of each opponent's upkeep, " +
"if there are four or more card types among cards in your graveyard, that player mills three cards."
diff --git a/Mage.Sets/src/mage/cards/m/MentalNote.java b/Mage.Sets/src/mage/cards/m/MentalNote.java
index 6c4d27a080d..bd35750ecf4 100644
--- a/Mage.Sets/src/mage/cards/m/MentalNote.java
+++ b/Mage.Sets/src/mage/cards/m/MentalNote.java
@@ -3,7 +3,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -19,7 +19,7 @@ public final class MentalNote extends CardImpl {
// Put the top two cards of your library into your graveyard.
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(2));
+ this.getSpellAbility().addEffect(new MillCardsControllerEffect(2));
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
}
diff --git a/Mage.Sets/src/mage/cards/m/MesmericOrb.java b/Mage.Sets/src/mage/cards/m/MesmericOrb.java
index 9dae5bf385f..b9389614cfa 100644
--- a/Mage.Sets/src/mage/cards/m/MesmericOrb.java
+++ b/Mage.Sets/src/mage/cards/m/MesmericOrb.java
@@ -2,7 +2,7 @@
package mage.cards.m;
import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -40,7 +40,7 @@ public final class MesmericOrb extends CardImpl {
class MesmericOrbTriggeredAbility extends TriggeredAbilityImpl {
MesmericOrbTriggeredAbility() {
- super(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(1), false);
+ super(Zone.BATTLEFIELD, new MillCardsTargetEffect(1), false);
}
private MesmericOrbTriggeredAbility(final MesmericOrbTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/m/Millikin.java b/Mage.Sets/src/mage/cards/m/Millikin.java
index 1ffdc9cc56c..4042bbc7068 100644
--- a/Mage.Sets/src/mage/cards/m/Millikin.java
+++ b/Mage.Sets/src/mage/cards/m/Millikin.java
@@ -3,7 +3,7 @@ package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
-import mage.abilities.costs.common.PutTopCardOfYourLibraryToGraveyardCost;
+import mage.abilities.costs.common.MillCardsCost;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -24,7 +24,7 @@ public final class Millikin extends CardImpl {
// {tap}, Put the top card of your library into your graveyard: Add {C}.
ColorlessManaAbility ability = new ColorlessManaAbility();
- ability.addCost(new PutTopCardOfYourLibraryToGraveyardCost());
+ ability.addCost(new MillCardsCost());
ability.setUndoPossible(false);
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/m/MindDrain.java b/Mage.Sets/src/mage/cards/m/MindDrain.java
index 2f2eb1f0ade..b6f12e56c6f 100644
--- a/Mage.Sets/src/mage/cards/m/MindDrain.java
+++ b/Mage.Sets/src/mage/cards/m/MindDrain.java
@@ -2,7 +2,7 @@ package mage.cards.m;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -21,7 +21,7 @@ public final class MindDrain extends CardImpl {
// Target opponent discards two cards, mills a card, and loses 1 life. You gain 1 life.
this.getSpellAbility().addEffect(new DiscardTargetEffect(2));
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveTargetEffect(1).setText(", mills a card"));
+ this.getSpellAbility().addEffect(new MillCardsTargetEffect(1).setText(", mills a card"));
this.getSpellAbility().addEffect(new LoseLifeTargetEffect(1).setText(", and loses 1 life."));
this.getSpellAbility().addEffect(new GainLifeEffect(1));
this.getSpellAbility().addTarget(new TargetOpponent());
diff --git a/Mage.Sets/src/mage/cards/m/MindwrackDemon.java b/Mage.Sets/src/mage/cards/m/MindwrackDemon.java
index 1eb9c359927..09f97692b89 100644
--- a/Mage.Sets/src/mage/cards/m/MindwrackDemon.java
+++ b/Mage.Sets/src/mage/cards/m/MindwrackDemon.java
@@ -10,7 +10,7 @@ import mage.abilities.condition.InvertCondition;
import mage.abilities.condition.common.DeliriumCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.hint.common.DeliriumHint;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.TrampleAbility;
@@ -38,7 +38,7 @@ public final class MindwrackDemon extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// When Mindbreaker Demon enters the battlefield, put the top four cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(4)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(4)));
// At the beginning of your upkeep, if you don't have 4 or more card types in your graveyard, you lose 4 life.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
diff --git a/Mage.Sets/src/mage/cards/m/MindwrackHarpy.java b/Mage.Sets/src/mage/cards/m/MindwrackHarpy.java
index c4f7ac1434f..ab42ba88b4e 100644
--- a/Mage.Sets/src/mage/cards/m/MindwrackHarpy.java
+++ b/Mage.Sets/src/mage/cards/m/MindwrackHarpy.java
@@ -2,7 +2,7 @@ package mage.cards.m;
import mage.MageInt;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -29,7 +29,7 @@ public final class MindwrackHarpy extends CardImpl {
// At the beginning of combat on your turn, each player puts the top three cards of their library into their graveyard.
this.addAbility(new BeginningOfCombatTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(3, TargetController.ANY),
+ new MillCardsEachPlayerEffect(3, TargetController.ANY),
TargetController.YOU, false
));
}
diff --git a/Mage.Sets/src/mage/cards/m/MireTriton.java b/Mage.Sets/src/mage/cards/m/MireTriton.java
index 746a3fd2d94..733f1a3e3b6 100644
--- a/Mage.Sets/src/mage/cards/m/MireTriton.java
+++ b/Mage.Sets/src/mage/cards/m/MireTriton.java
@@ -4,7 +4,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -31,7 +31,7 @@ public final class MireTriton extends CardImpl {
// When Mire Triton enters the battlefield, put the top two cards of your library into your graveyard and you gain 2 life.
Ability ability = new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(2)
+ new MillCardsControllerEffect(2)
);
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/m/MorgueThrull.java b/Mage.Sets/src/mage/cards/m/MorgueThrull.java
index 3ec30cdbb2c..880162c864d 100644
--- a/Mage.Sets/src/mage/cards/m/MorgueThrull.java
+++ b/Mage.Sets/src/mage/cards/m/MorgueThrull.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -25,7 +25,7 @@ public final class MorgueThrull extends CardImpl {
this.toughness = new MageInt(2);
// Sacrifice Morgue Thrull: Put the top three cards of your library into your graveyard.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveControllerEffect(3), new SacrificeSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsControllerEffect(3), new SacrificeSourceCost()));
}
public MorgueThrull(final MorgueThrull card) {
diff --git a/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java b/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java
index 75ca4c5c8e3..eac137147ca 100644
--- a/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java
+++ b/Mage.Sets/src/mage/cards/n/NecromancersAssistant.java
@@ -4,7 +4,7 @@ package mage.cards.n;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -23,7 +23,7 @@ public final class NecromancersAssistant extends CardImpl {
this.toughness = new MageInt(1);
// When Necromancer's Assistant enters the battlefield, put the top three cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(3)));
}
public NecromancersAssistant(final NecromancersAssistant card) {
diff --git a/Mage.Sets/src/mage/cards/n/NecromasterDragon.java b/Mage.Sets/src/mage/cards/n/NecromasterDragon.java
index 712ceb6a3f2..2996042ce54 100644
--- a/Mage.Sets/src/mage/cards/n/NecromasterDragon.java
+++ b/Mage.Sets/src/mage/cards/n/NecromasterDragon.java
@@ -8,7 +8,7 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DoIfCostPaid;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -35,7 +35,7 @@ public final class NecromasterDragon extends CardImpl {
// Whenever Necromaster Dragon deals combat damage to a player, you may pay {2}. If you do, create a 2/2 black Zombie creature token and each opponent puts the top two cards of their library into their graveyard
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(
new DoIfCostPaid(new CreateTokenEffect(new ZombieToken(), 1), new ManaCostsImpl("{2}")), false);
- ability.addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.OPPONENT));
+ ability.addEffect(new MillCardsEachPlayerEffect(2, TargetController.OPPONENT));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/n/NyxWeaver.java b/Mage.Sets/src/mage/cards/n/NyxWeaver.java
index 063b6180db0..833f76f234f 100644
--- a/Mage.Sets/src/mage/cards/n/NyxWeaver.java
+++ b/Mage.Sets/src/mage/cards/n/NyxWeaver.java
@@ -8,7 +8,7 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.ExileSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
@@ -35,7 +35,7 @@ public final class NyxWeaver extends CardImpl {
// Reach
this.addAbility(ReachAbility.getInstance());
// At the beginning of your upkeep, put the top two cards of your library into your graveyard.
- this.addAbility(new BeginningOfUpkeepTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2), TargetController.YOU, false));
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new MillCardsControllerEffect(2), TargetController.YOU, false));
// {1}{B}{G}, Exile Nyx Weaver: Return target card from your graveyard to your hand.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), new ManaCostsImpl("{1}{B}{G}"));
ability.addCost(new ExileSourceCost());
diff --git a/Mage.Sets/src/mage/cards/o/OverwhelmedApprentice.java b/Mage.Sets/src/mage/cards/o/OverwhelmedApprentice.java
index 32f9fe239f3..057d690d197 100644
--- a/Mage.Sets/src/mage/cards/o/OverwhelmedApprentice.java
+++ b/Mage.Sets/src/mage/cards/o/OverwhelmedApprentice.java
@@ -3,7 +3,7 @@ package mage.cards.o;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -28,7 +28,7 @@ public final class OverwhelmedApprentice extends CardImpl {
// When Overwhelmed Apprentice enters the battlefield, each opponent puts the top two cards of their library into their graveyard. Then you scry 2.
Ability ability = new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.OPPONENT)
+ new MillCardsEachPlayerEffect(2, TargetController.OPPONENT)
);
ability.addEffect(new ScryEffect(2, false).setText("Then you scry 2."));
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java b/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java
index 7c0b4c33f50..9d1c0894195 100644
--- a/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java
+++ b/Mage.Sets/src/mage/cards/p/PerpetualTimepiece.java
@@ -8,7 +8,7 @@ import mage.abilities.costs.common.ExileSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
@@ -30,7 +30,7 @@ public final class PerpetualTimepiece extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}");
// {T}: Put the top two cards of your library into your graveyard.
- this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveControllerEffect(2), new TapSourceCost()));
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsControllerEffect(2), new TapSourceCost()));
// {2}, Exile Perpetual Timepiece: Shuffle any number of target cards from your graveyard into your library.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PerpetualTimepieceShuffleEffect(), new GenericManaCost(2));
diff --git a/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java b/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java
index decaf844f26..512fe5715a9 100644
--- a/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java
+++ b/Mage.Sets/src/mage/cards/p/PhenaxGodOfDeception.java
@@ -7,7 +7,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.DevotionCount;
import mage.abilities.dynamicvalue.common.SourcePermanentToughnessValue;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect;
import mage.abilities.keyword.IndestructibleAbility;
@@ -44,7 +44,7 @@ public final class PhenaxGodOfDeception extends CardImpl {
// Creatures you control have "{T}: Target player puts the top X cards of their library into their graveyard, where X is this creature's toughness."
Ability ability = new SimpleActivatedAbility(
- new PutTopCardOfLibraryIntoGraveTargetEffect(SourcePermanentToughnessValue.getInstance())
+ new MillCardsTargetEffect(SourcePermanentToughnessValue.getInstance())
.setText("Target player mills X cards, where X is this creature's toughness"), new TapSourceCost());
ability.addTarget(new TargetPlayer());
this.addAbility(new SimpleStaticAbility(
diff --git a/Mage.Sets/src/mage/cards/p/PsychicCorrosion.java b/Mage.Sets/src/mage/cards/p/PsychicCorrosion.java
index 50e5f46cf35..42a9ee294d3 100644
--- a/Mage.Sets/src/mage/cards/p/PsychicCorrosion.java
+++ b/Mage.Sets/src/mage/cards/p/PsychicCorrosion.java
@@ -2,7 +2,7 @@ package mage.cards.p;
import java.util.UUID;
import mage.abilities.common.DrawCardControllerTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -19,7 +19,7 @@ public final class PsychicCorrosion extends CardImpl {
// Whenever you draw a card, each opponent puts the top two cards of their library into their graveyard.
this.addAbility(new DrawCardControllerTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(
+ new MillCardsEachPlayerEffect(
2, TargetController.OPPONENT
), false
));
diff --git a/Mage.Sets/src/mage/cards/r/RakshasasSecret.java b/Mage.Sets/src/mage/cards/r/RakshasasSecret.java
index 2f2ea93bdae..e3af264e1fd 100644
--- a/Mage.Sets/src/mage/cards/r/RakshasasSecret.java
+++ b/Mage.Sets/src/mage/cards/r/RakshasasSecret.java
@@ -1,6 +1,6 @@
package mage.cards.r;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -20,7 +20,7 @@ public final class RakshasasSecret extends CardImpl {
// Target opponent discards two cards. Put the top two cards of your library into your graveyard.
this.getSpellAbility().addEffect(new DiscardTargetEffect(2));
this.getSpellAbility().addTarget(new TargetOpponent());
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(2).setText("Mill two cards."));
+ this.getSpellAbility().addEffect(new MillCardsControllerEffect(2).setText("Mill two cards."));
}
private RakshasasSecret(final RakshasasSecret card) {
diff --git a/Mage.Sets/src/mage/cards/r/ReturnedReveler.java b/Mage.Sets/src/mage/cards/r/ReturnedReveler.java
index 34a34083ae9..2ea764bba0f 100644
--- a/Mage.Sets/src/mage/cards/r/ReturnedReveler.java
+++ b/Mage.Sets/src/mage/cards/r/ReturnedReveler.java
@@ -4,7 +4,7 @@ package mage.cards.r;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -26,7 +26,7 @@ public final class ReturnedReveler extends CardImpl {
this.toughness = new MageInt(3);
// When Returned Reveler dies, each player puts the top three cards of their library into their graveyard.
- this.addAbility(new DiesSourceTriggeredAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(3, TargetController.ANY)));
+ this.addAbility(new DiesSourceTriggeredAbility(new MillCardsEachPlayerEffect(3, TargetController.ANY)));
}
public ReturnedReveler(final ReturnedReveler card) {
diff --git a/Mage.Sets/src/mage/cards/r/Riddlekeeper.java b/Mage.Sets/src/mage/cards/r/Riddlekeeper.java
index d6d08f9799d..8ec9a898c18 100644
--- a/Mage.Sets/src/mage/cards/r/Riddlekeeper.java
+++ b/Mage.Sets/src/mage/cards/r/Riddlekeeper.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksAllTriggeredAbility;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -27,7 +27,7 @@ public final class Riddlekeeper extends CardImpl {
this.toughness = new MageInt(4);
// Whenever a creature attacks you or a planeswalker you control, that creature's controller puts the top two cards of their library into their graveyard.
- Effect effect = new PutTopCardOfLibraryIntoGraveTargetEffect(2);
+ Effect effect = new MillCardsTargetEffect(2);
effect.setText("that creature's controller mills two cards");
this.addAbility(new AttacksAllTriggeredAbility(effect, false, StaticFilters.FILTER_PERMANENT_CREATURE, SetTargetPointer.PLAYER, true, true));
}
diff --git a/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java b/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java
index 3d58603291d..031ffa3cb84 100644
--- a/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java
+++ b/Mage.Sets/src/mage/cards/r/RotFarmSkeleton.java
@@ -6,7 +6,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
import mage.abilities.common.CantBlockAbility;
-import mage.abilities.costs.common.PutTopCardOfYourLibraryToGraveyardCost;
+import mage.abilities.costs.common.MillCardsCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect;
import mage.cards.CardImpl;
@@ -36,7 +36,7 @@ public final class RotFarmSkeleton extends CardImpl {
// 2{B}{G}, Put the top four cards of your library into your graveyard: Return Rot Farm Skeleton from your graveyard to the battlefield. Activate this ability only any time you could cast a sorcery.
Ability ability = new ActivateAsSorceryActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(), new ManaCostsImpl("{2}{B}{G}"));
- ability.addCost(new PutTopCardOfYourLibraryToGraveyardCost(4));
+ ability.addCost(new MillCardsCost(4));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/r/RuinCrab.java b/Mage.Sets/src/mage/cards/r/RuinCrab.java
index d3f99572ef8..e3ea22eec1b 100644
--- a/Mage.Sets/src/mage/cards/r/RuinCrab.java
+++ b/Mage.Sets/src/mage/cards/r/RuinCrab.java
@@ -4,7 +4,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.LandfallAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -24,7 +24,7 @@ public final class RuinCrab extends CardImpl {
this.toughness = new MageInt(3);
// Landfall - Whenever a land enters the battlefield under your control, each opponent mills 3 cards.
- this.addAbility(new LandfallAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(3, TargetController.OPPONENT), false));
+ this.addAbility(new LandfallAbility(new MillCardsEachPlayerEffect(3, TargetController.OPPONENT), false));
}
private RuinCrab(final RuinCrab card) {
diff --git a/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java b/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java
index f54a4a6ca97..038fa743317 100644
--- a/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java
+++ b/Mage.Sets/src/mage/cards/s/ScreechingSkaab.java
@@ -4,7 +4,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -24,7 +24,7 @@ public final class ScreechingSkaab extends CardImpl {
this.toughness = new MageInt(1);
// When Screeching Skaab enters the battlefield, put the top two cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2)));
}
public ScreechingSkaab(final ScreechingSkaab card) {
diff --git a/Mage.Sets/src/mage/cards/s/SequesteredStash.java b/Mage.Sets/src/mage/cards/s/SequesteredStash.java
index b5a146a3afb..506971a961b 100644
--- a/Mage.Sets/src/mage/cards/s/SequesteredStash.java
+++ b/Mage.Sets/src/mage/cards/s/SequesteredStash.java
@@ -8,7 +8,7 @@ import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
@@ -34,7 +34,7 @@ public final class SequesteredStash extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {4},{T}, Sacrifice Sequestered Stash: Put the top five cards of your library into your graveyard. Then you may put an artifact card from your graveyard on top of your library.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveControllerEffect(5), new GenericManaCost(4));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsControllerEffect(5), new GenericManaCost(4));
ability.addCost(new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
ability.addEffect(new SequesteredStashEffect());
diff --git a/Mage.Sets/src/mage/cards/s/SewerNemesis.java b/Mage.Sets/src/mage/cards/s/SewerNemesis.java
index 612a44b550f..74c069c7a88 100644
--- a/Mage.Sets/src/mage/cards/s/SewerNemesis.java
+++ b/Mage.Sets/src/mage/cards/s/SewerNemesis.java
@@ -10,7 +10,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.ChoosePlayerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -90,7 +90,7 @@ class CardsInTargetOpponentsGraveyardCount implements DynamicValue {
class SewerNemesisTriggeredAbility extends TriggeredAbilityImpl {
public SewerNemesisTriggeredAbility() {
- super(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(1), false);
+ super(Zone.BATTLEFIELD, new MillCardsTargetEffect(1), false);
}
public SewerNemesisTriggeredAbility(final SewerNemesisTriggeredAbility ability) {
diff --git a/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java b/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java
index 6b76ac7f247..24544513448 100644
--- a/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java
+++ b/Mage.Sets/src/mage/cards/s/ShardOfBrokenGlass.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.abilities.common.AttacksAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl;
@@ -29,7 +29,7 @@ public final class ShardOfBrokenGlass extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 0)));
// Whenever equipped creature attacks, you may put the top two cards of your library into your graveyard.
- this.addAbility(new AttacksAttachedTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2), true));
+ this.addAbility(new AttacksAttachedTriggeredAbility(new MillCardsControllerEffect(2), true));
// Equip {1}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1)));
diff --git a/Mage.Sets/src/mage/cards/s/SharedTrauma.java b/Mage.Sets/src/mage/cards/s/SharedTrauma.java
index 2f82c35a9bd..f001c0b9c3f 100644
--- a/Mage.Sets/src/mage/cards/s/SharedTrauma.java
+++ b/Mage.Sets/src/mage/cards/s/SharedTrauma.java
@@ -3,7 +3,7 @@ package mage.cards.s;
import mage.abilities.Ability;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -72,7 +72,7 @@ class SharedTraumaEffect extends OneShotEffect {
if (xSum > 0) {
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
- Effect effect = new PutTopCardOfLibraryIntoGraveTargetEffect(xSum);
+ Effect effect = new MillCardsTargetEffect(xSum);
effect.setTargetPointer(new FixedTarget(playerId));
effect.apply(game, source);
}
diff --git a/Mage.Sets/src/mage/cards/s/SibsigHost.java b/Mage.Sets/src/mage/cards/s/SibsigHost.java
index 2e34b84bf59..b854d5aecb6 100644
--- a/Mage.Sets/src/mage/cards/s/SibsigHost.java
+++ b/Mage.Sets/src/mage/cards/s/SibsigHost.java
@@ -4,7 +4,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -24,7 +24,7 @@ public final class SibsigHost extends CardImpl {
this.toughness = new MageInt(6);
// When Sibsig Host enters the battlefield, each player puts the top three cards of their library into their graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(3, TargetController.ANY)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsEachPlayerEffect(3, TargetController.ANY)));
}
public SibsigHost(final SibsigHost card) {
diff --git a/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java b/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java
index b4bca16a137..dcf87eb9c54 100644
--- a/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java
+++ b/Mage.Sets/src/mage/cards/s/SidisiBroodTyrant.java
@@ -5,7 +5,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldOrAttacksSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -34,7 +34,7 @@ public final class SidisiBroodTyrant extends CardImpl {
this.toughness = new MageInt(3);
// Whenever Sidisi, Brood Tyrant enters the battlefield or attacks, put the top three cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3)));
+ this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new MillCardsControllerEffect(3)));
// Whenever one or more creature cards are put into your graveyard from your library, create a 2/2 black Zombie creature token.
this.addAbility(new SidisiBroodTyrantTriggeredAbility());
diff --git a/Mage.Sets/src/mage/cards/s/SinisterConcoction.java b/Mage.Sets/src/mage/cards/s/SinisterConcoction.java
index 9607af829a2..9851dd3d220 100644
--- a/Mage.Sets/src/mage/cards/s/SinisterConcoction.java
+++ b/Mage.Sets/src/mage/cards/s/SinisterConcoction.java
@@ -6,7 +6,7 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.DiscardCardCost;
import mage.abilities.costs.common.PayLifeCost;
-import mage.abilities.costs.common.PutTopCardOfYourLibraryToGraveyardCost;
+import mage.abilities.costs.common.MillCardsCost;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DestroyTargetEffect;
@@ -28,7 +28,7 @@ public final class SinisterConcoction extends CardImpl {
// {B}, Pay 1 life, Put the top card of your library into your graveyard, Discard a card, Sacrifice Sinister Concoction: Destroy target creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{B}"));
ability.addCost(new PayLifeCost(1));
- ability.addCost(new PutTopCardOfYourLibraryToGraveyardCost());
+ ability.addCost(new MillCardsCost());
ability.addCost(new DiscardCardCost());
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetCreaturePermanent());
diff --git a/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java b/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java
index 9bde3310b1e..319fe439c63 100644
--- a/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java
+++ b/Mage.Sets/src/mage/cards/s/SirenOfTheSilentSong.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.InspiredAbility;
@@ -33,7 +33,7 @@ public final class SirenOfTheSilentSong extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// Inspired — Whenever Siren of the Silent Song becomes untapped, each opponent discards a card, then puts the top card of their library into their graveyard.
Ability ability = new InspiredAbility(new DiscardEachPlayerEffect(TargetController.OPPONENT));
- Effect effect = new PutTopCardOfLibraryIntoGraveEachPlayerEffect(1, TargetController.OPPONENT);
+ Effect effect = new MillCardsEachPlayerEffect(1, TargetController.OPPONENT);
effect.setText(", then mills a card");
ability.addEffect(effect);
this.addAbility(ability);
diff --git a/Mage.Sets/src/mage/cards/s/SkolaGrovedancer.java b/Mage.Sets/src/mage/cards/s/SkolaGrovedancer.java
index 3677c1c02f4..7e8b751c217 100644
--- a/Mage.Sets/src/mage/cards/s/SkolaGrovedancer.java
+++ b/Mage.Sets/src/mage/cards/s/SkolaGrovedancer.java
@@ -5,7 +5,7 @@ import mage.abilities.common.PutCardIntoGraveFromAnywhereAllTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -35,7 +35,7 @@ public final class SkolaGrovedancer extends CardImpl {
// {2}{G}: Put the top card of your library into your graveyard.
this.addAbility(new SimpleActivatedAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(1), new ManaCostsImpl("{2}{G}")
+ new MillCardsControllerEffect(1), new ManaCostsImpl("{2}{G}")
));
}
diff --git a/Mage.Sets/src/mage/cards/s/SkullProphet.java b/Mage.Sets/src/mage/cards/s/SkullProphet.java
index 18b96cce477..c77c0242bb1 100644
--- a/Mage.Sets/src/mage/cards/s/SkullProphet.java
+++ b/Mage.Sets/src/mage/cards/s/SkullProphet.java
@@ -3,7 +3,7 @@ package mage.cards.s;
import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.cards.CardImpl;
@@ -32,7 +32,7 @@ public final class SkullProphet extends CardImpl {
// {T}: Put the top two cards of your library into your graveyard.
this.addAbility(new SimpleActivatedAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(2), new TapSourceCost()
+ new MillCardsControllerEffect(2), new TapSourceCost()
));
}
diff --git a/Mage.Sets/src/mage/cards/s/SoaringThoughtThief.java b/Mage.Sets/src/mage/cards/s/SoaringThoughtThief.java
index 7dfeab8e0d9..deae92bc1fb 100644
--- a/Mage.Sets/src/mage/cards/s/SoaringThoughtThief.java
+++ b/Mage.Sets/src/mage/cards/s/SoaringThoughtThief.java
@@ -5,7 +5,7 @@ import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.CardsInOpponentGraveyardCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.abilities.keyword.FlashAbility;
import mage.abilities.keyword.FlyingAbility;
@@ -49,7 +49,7 @@ public final class SoaringThoughtThief extends CardImpl {
// Whenever one or more Rogues you control attack, each opponent mills two cards.
this.addAbility(new AttacksWithCreaturesTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.OPPONENT), 1, filter
+ new MillCardsEachPlayerEffect(2, TargetController.OPPONENT), 1, filter
));
}
diff --git a/Mage.Sets/src/mage/cards/s/SphinxMindbreaker.java b/Mage.Sets/src/mage/cards/s/SphinxMindbreaker.java
index 9fe7e71f52e..09661a9b9e4 100644
--- a/Mage.Sets/src/mage/cards/s/SphinxMindbreaker.java
+++ b/Mage.Sets/src/mage/cards/s/SphinxMindbreaker.java
@@ -2,7 +2,7 @@ package mage.cards.s;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -29,7 +29,7 @@ public final class SphinxMindbreaker extends CardImpl {
// When Sphinx Mindbreaker enters the battlefield, each opponent puts the top ten cards of their library into their graveyard.
this.addAbility(new EntersBattlefieldTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(10, TargetController.OPPONENT)
+ new MillCardsEachPlayerEffect(10, TargetController.OPPONENT)
));
}
diff --git a/Mage.Sets/src/mage/cards/s/Splinterfright.java b/Mage.Sets/src/mage/cards/s/Splinterfright.java
index 0d77a8d19b8..e3b7312749a 100644
--- a/Mage.Sets/src/mage/cards/s/Splinterfright.java
+++ b/Mage.Sets/src/mage/cards/s/Splinterfright.java
@@ -6,7 +6,7 @@ import mage.MageInt;
import mage.abilities.common.OnEventTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
@@ -36,7 +36,7 @@ public final class Splinterfright extends CardImpl {
CardsInControllerGraveyardCount count = new CardsInControllerGraveyardCount(new FilterCreatureCard("creature cards"));
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(count, Duration.EndOfGame)));
// At the beginning of your upkeep, put the top two cards of your library into your graveyard.
- this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new PutTopCardOfLibraryIntoGraveControllerEffect(2), false));
+ this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new MillCardsControllerEffect(2), false));
}
public Splinterfright(final Splinterfright card) {
diff --git a/Mage.Sets/src/mage/cards/s/StitchersSupplier.java b/Mage.Sets/src/mage/cards/s/StitchersSupplier.java
index 4c91980fe62..e0736671726 100644
--- a/Mage.Sets/src/mage/cards/s/StitchersSupplier.java
+++ b/Mage.Sets/src/mage/cards/s/StitchersSupplier.java
@@ -3,7 +3,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldOrDiesSourceTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.constants.SubType;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -24,7 +24,7 @@ public final class StitchersSupplier extends CardImpl {
// When Stitcher's Supplier enters the battlefield or dies, put the top three cards of your library into your graveyard.
this.addAbility(new EntersBattlefieldOrDiesSourceTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(3), false)
+ new MillCardsControllerEffect(3), false)
);
}
diff --git a/Mage.Sets/src/mage/cards/s/SuddenReclamation.java b/Mage.Sets/src/mage/cards/s/SuddenReclamation.java
index f9a2820e18e..4d2da4b658d 100644
--- a/Mage.Sets/src/mage/cards/s/SuddenReclamation.java
+++ b/Mage.Sets/src/mage/cards/s/SuddenReclamation.java
@@ -4,7 +4,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -30,7 +30,7 @@ public final class SuddenReclamation extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{G}");
// Put the top four cards of your library into your graveyard, then return a creature card and a land card from your graveyard to your hand.
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveControllerEffect(4));
+ this.getSpellAbility().addEffect(new MillCardsControllerEffect(4));
this.getSpellAbility().addEffect(new SuddenReclamationEffect());
}
diff --git a/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java b/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java
index f81ee580023..5f40b68038d 100644
--- a/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java
+++ b/Mage.Sets/src/mage/cards/s/SultaiSkullkeeper.java
@@ -4,7 +4,7 @@ package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -24,7 +24,7 @@ public final class SultaiSkullkeeper extends CardImpl {
this.toughness = new MageInt(1);
// When Sultai Skullkeeper enters the battlefield, put the top two cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2)));
}
public SultaiSkullkeeper(final SultaiSkullkeeper card) {
diff --git a/Mage.Sets/src/mage/cards/s/SweetOblivion.java b/Mage.Sets/src/mage/cards/s/SweetOblivion.java
index e2b7f67cd63..41bf24817f9 100644
--- a/Mage.Sets/src/mage/cards/s/SweetOblivion.java
+++ b/Mage.Sets/src/mage/cards/s/SweetOblivion.java
@@ -1,6 +1,6 @@
package mage.cards.s;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.keyword.EscapeAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -18,7 +18,7 @@ public final class SweetOblivion extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}");
// Target player puts the top four cards of their library into their graveyard.
- this.getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveTargetEffect(4));
+ this.getSpellAbility().addEffect(new MillCardsTargetEffect(4));
this.getSpellAbility().addTarget(new TargetPlayer());
// Escape—{3}{U}, Exile four other cards from your graveyard.
diff --git a/Mage.Sets/src/mage/cards/s/SyrKonradTheGrim.java b/Mage.Sets/src/mage/cards/s/SyrKonradTheGrim.java
index 967fc744528..bcc151f780c 100644
--- a/Mage.Sets/src/mage/cards/s/SyrKonradTheGrim.java
+++ b/Mage.Sets/src/mage/cards/s/SyrKonradTheGrim.java
@@ -5,7 +5,7 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DamagePlayersEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -34,7 +34,7 @@ public final class SyrKonradTheGrim extends CardImpl {
this.addAbility(new SyrKonradTheGrimTriggeredAbility());
// {1}{B}: Each player puts the top card of their library into their graveyard.
- this.addAbility(new SimpleActivatedAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(
+ this.addAbility(new SimpleActivatedAbility(new MillCardsEachPlayerEffect(
1, TargetController.ANY
), new ManaCostsImpl("{1}{B}")));
}
diff --git a/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java b/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java
index af9604a1943..b0c56f90fcd 100644
--- a/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java
+++ b/Mage.Sets/src/mage/cards/t/TasigurTheGoldenFang.java
@@ -5,7 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.keyword.DelveAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
@@ -38,7 +38,7 @@ public final class TasigurTheGoldenFang extends CardImpl {
this.addAbility(new DelveAbility());
// {2}{G/U}{G/U}: Put the top two cards of your library into your graveyard, then return a nonland card of an opponent's choice from your graveyard to your hand.
- Ability ability = new SimpleActivatedAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2), new ManaCostsImpl("{2}{G/U}{G/U}"));
+ Ability ability = new SimpleActivatedAbility(new MillCardsControllerEffect(2), new ManaCostsImpl("{2}{G/U}{G/U}"));
ability.addEffect(new TasigurTheGoldenFangEffect());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TayamLuminousEnigma.java b/Mage.Sets/src/mage/cards/t/TayamLuminousEnigma.java
index e424e5b6f3c..4b24926310e 100644
--- a/Mage.Sets/src/mage/cards/t/TayamLuminousEnigma.java
+++ b/Mage.Sets/src/mage/cards/t/TayamLuminousEnigma.java
@@ -9,7 +9,7 @@ import mage.abilities.costs.common.RemoveCounterCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.ReplacementEffectImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.choices.Choice;
@@ -56,7 +56,7 @@ public final class TayamLuminousEnigma extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TayamLuminousEnigmaReplacementEffect()));
// {3}, Remove three counters from among creatures you control: Put the top three cards of your library into your graveyard, then return a permanent card with converted mana cost 3 or less from your graveyard to the battlefield.
- PutTopCardOfLibraryIntoGraveControllerEffect millEffect = new PutTopCardOfLibraryIntoGraveControllerEffect(3);
+ MillCardsControllerEffect millEffect = new MillCardsControllerEffect(3);
millEffect.concatBy(".");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, millEffect, new GenericManaCost(3));
ability.addCost(new TayamLuminousEnigmaCost());
diff --git a/Mage.Sets/src/mage/cards/t/ThassasDevourer.java b/Mage.Sets/src/mage/cards/t/ThassasDevourer.java
index 25f18f957db..43a70779d2d 100644
--- a/Mage.Sets/src/mage/cards/t/ThassasDevourer.java
+++ b/Mage.Sets/src/mage/cards/t/ThassasDevourer.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.abilityword.ConstellationAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -26,7 +26,7 @@ public final class ThassasDevourer extends CardImpl {
this.toughness = new MageInt(6);
// Constellation — Whenever Thassa's Devourer or another enchantment enters the battlefield under your control, target player puts the top two cards of their library into their graveyard.
- Ability ability = new ConstellationAbility(new PutTopCardOfLibraryIntoGraveTargetEffect(2), false);
+ Ability ability = new ConstellationAbility(new MillCardsTargetEffect(2), false);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/t/TheBindingOfTheTitans.java b/Mage.Sets/src/mage/cards/t/TheBindingOfTheTitans.java
index 42031b42eb1..0f60ac69205 100644
--- a/Mage.Sets/src/mage/cards/t/TheBindingOfTheTitans.java
+++ b/Mage.Sets/src/mage/cards/t/TheBindingOfTheTitans.java
@@ -3,7 +3,7 @@ package mage.cards.t;
import mage.abilities.Ability;
import mage.abilities.common.SagaAbility;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
import mage.cards.*;
import mage.constants.*;
@@ -44,7 +44,7 @@ public final class TheBindingOfTheTitans extends CardImpl {
// I — Each player puts the top three cards of their library into their graveyard.
sagaAbility.addChapterEffect(
- this, SagaChapter.CHAPTER_I, new PutTopCardOfLibraryIntoGraveEachPlayerEffect(
+ this, SagaChapter.CHAPTER_I, new MillCardsEachPlayerEffect(
3, TargetController.ANY
)
);
diff --git a/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java b/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java
index 3438e2374b0..11c91d05e74 100644
--- a/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java
+++ b/Mage.Sets/src/mage/cards/t/TheMendingOfDominaria.java
@@ -5,7 +5,7 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SagaAbility;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.constants.SubType;
import mage.cards.CardImpl;
@@ -74,7 +74,7 @@ class TheMendingOfDominariaFirstEffect extends OneShotEffect {
if (controller == null) {
return false;
}
- new PutTopCardOfLibraryIntoGraveControllerEffect(2).apply(game, source);
+ new MillCardsControllerEffect(2).apply(game, source);
TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD);
target.setNotTarget(true);
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)
diff --git a/Mage.Sets/src/mage/cards/t/ThievesGuildEnforcer.java b/Mage.Sets/src/mage/cards/t/ThievesGuildEnforcer.java
index e26881a680f..d1f26083948 100644
--- a/Mage.Sets/src/mage/cards/t/ThievesGuildEnforcer.java
+++ b/Mage.Sets/src/mage/cards/t/ThievesGuildEnforcer.java
@@ -6,7 +6,7 @@ import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.CardsInOpponentGraveyardCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.DeathtouchAbility;
@@ -41,7 +41,7 @@ public final class ThievesGuildEnforcer extends CardImpl {
// Whenever Thieves' Guild Enforcer or another Rogue enters the battlefield under your control, each opponent mills two cards.
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(
+ new MillCardsEachPlayerEffect(
2, TargetController.OPPONENT
), filter, false, true
));
diff --git a/Mage.Sets/src/mage/cards/t/TolarianSerpent.java b/Mage.Sets/src/mage/cards/t/TolarianSerpent.java
index 3a2068cb07e..12d22c93d67 100644
--- a/Mage.Sets/src/mage/cards/t/TolarianSerpent.java
+++ b/Mage.Sets/src/mage/cards/t/TolarianSerpent.java
@@ -4,7 +4,7 @@ package mage.cards.t;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.OnEventTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -26,7 +26,7 @@ public final class TolarianSerpent extends CardImpl {
// At the beginning of your upkeep, put the top seven cards of your library into your graveyard.
this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE,
"beginning of your upkeep",
- new PutTopCardOfLibraryIntoGraveControllerEffect(7), false));
+ new MillCardsControllerEffect(7), false));
}
public TolarianSerpent(final TolarianSerpent card) {
diff --git a/Mage.Sets/src/mage/cards/t/ToweringWaveMystic.java b/Mage.Sets/src/mage/cards/t/ToweringWaveMystic.java
index e6efedf261b..0af73635a30 100644
--- a/Mage.Sets/src/mage/cards/t/ToweringWaveMystic.java
+++ b/Mage.Sets/src/mage/cards/t/ToweringWaveMystic.java
@@ -2,7 +2,7 @@ package mage.cards.t;
import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -70,7 +70,7 @@ class ToweringWaveMysticTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
this.getEffects().clear();
- this.addEffect(new PutTopCardOfLibraryIntoGraveTargetEffect(event.getAmount()));
+ this.addEffect(new MillCardsTargetEffect(event.getAmount()));
return true;
}
diff --git a/Mage.Sets/src/mage/cards/t/TymaretCallsTheDead.java b/Mage.Sets/src/mage/cards/t/TymaretCallsTheDead.java
index 9086b580838..42608f2556a 100644
--- a/Mage.Sets/src/mage/cards/t/TymaretCallsTheDead.java
+++ b/Mage.Sets/src/mage/cards/t/TymaretCallsTheDead.java
@@ -5,7 +5,7 @@ import mage.abilities.common.SagaAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
@@ -58,7 +58,7 @@ public final class TymaretCallsTheDead extends CardImpl {
class TymaretCallsTheDeadFirstEffect extends OneShotEffect {
- private static final Effect millEffect = new PutTopCardOfLibraryIntoGraveControllerEffect(3);
+ private static final Effect millEffect = new MillCardsControllerEffect(3);
private static final Effect tokenEffect = new CreateTokenEffect(new ZombieToken());
private static final FilterCard filter = new FilterCard("creature or enchantment card from your graveyard");
diff --git a/Mage.Sets/src/mage/cards/v/VantressGargoyle.java b/Mage.Sets/src/mage/cards/v/VantressGargoyle.java
index 0639373464c..1ed14cea394 100644
--- a/Mage.Sets/src/mage/cards/v/VantressGargoyle.java
+++ b/Mage.Sets/src/mage/cards/v/VantressGargoyle.java
@@ -6,7 +6,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.RestrictionEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -43,7 +43,7 @@ public final class VantressGargoyle extends CardImpl {
// {T}: Each player puts the top card of their library into their graveyard.
this.addAbility(new SimpleActivatedAbility(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(1, TargetController.ANY), new TapSourceCost()
+ new MillCardsEachPlayerEffect(1, TargetController.ANY), new TapSourceCost()
));
}
diff --git a/Mage.Sets/src/mage/cards/v/VenomousHierophant.java b/Mage.Sets/src/mage/cards/v/VenomousHierophant.java
index af14ab47df0..7eb6702e796 100644
--- a/Mage.Sets/src/mage/cards/v/VenomousHierophant.java
+++ b/Mage.Sets/src/mage/cards/v/VenomousHierophant.java
@@ -2,7 +2,7 @@ package mage.cards.v;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.keyword.DeathtouchAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -28,7 +28,7 @@ public final class VenomousHierophant extends CardImpl {
this.addAbility(DeathtouchAbility.getInstance());
// When Venomous Hierophant enters the battlefield, put the top three cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(3)));
}
private VenomousHierophant(final VenomousHierophant card) {
diff --git a/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java b/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java
index 320b5842d56..05098243407 100644
--- a/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java
+++ b/Mage.Sets/src/mage/cards/v/VesselOfParamnesia.java
@@ -7,7 +7,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -24,7 +24,7 @@ public final class VesselOfParamnesia extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
// {U}, Sacrifice Vessel of Paramnesia: Target player puts the top three cards of their library into their graveyard. Draw a card.
- Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveTargetEffect(3), new ManaCostsImpl("{U}"));
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MillCardsTargetEffect(3), new ManaCostsImpl("{U}"));
ability.addCost(new SacrificeSourceCost());
ability.addTarget(new TargetPlayer());
ability.addEffect(new DrawCardSourceControllerEffect(1));
diff --git a/Mage.Sets/src/mage/cards/v/ViciousRumors.java b/Mage.Sets/src/mage/cards/v/ViciousRumors.java
index 34e937b1740..d693dee41ad 100644
--- a/Mage.Sets/src/mage/cards/v/ViciousRumors.java
+++ b/Mage.Sets/src/mage/cards/v/ViciousRumors.java
@@ -4,7 +4,7 @@ import java.util.UUID;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.common.DamagePlayersEffect;
import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -29,7 +29,7 @@ public final class ViciousRumors extends CardImpl {
TargetController.OPPONENT
));
this.getSpellAbility().addEffect(
- new PutTopCardOfLibraryIntoGraveEachPlayerEffect(
+ new MillCardsEachPlayerEffect(
1, TargetController.OPPONENT
).setText(", then mills a card")
);
diff --git a/Mage.Sets/src/mage/cards/w/WailingGhoul.java b/Mage.Sets/src/mage/cards/w/WailingGhoul.java
index f694b430309..d49e63bb4d1 100644
--- a/Mage.Sets/src/mage/cards/w/WailingGhoul.java
+++ b/Mage.Sets/src/mage/cards/w/WailingGhoul.java
@@ -4,7 +4,7 @@ package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -23,7 +23,7 @@ public final class WailingGhoul extends CardImpl {
this.toughness = new MageInt(3);
// When Wailing Ghoul enters the battlefield, put the top two cards of your library into your graveyard.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2)));
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(2)));
}
public WailingGhoul(final WailingGhoul card) {
diff --git a/Mage.Sets/src/mage/cards/w/WandOfVertebrae.java b/Mage.Sets/src/mage/cards/w/WandOfVertebrae.java
index 81915ca4189..fc5442a9b4e 100644
--- a/Mage.Sets/src/mage/cards/w/WandOfVertebrae.java
+++ b/Mage.Sets/src/mage/cards/w/WandOfVertebrae.java
@@ -7,7 +7,7 @@ import mage.abilities.costs.common.ExileSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -30,7 +30,7 @@ public final class WandOfVertebrae extends CardImpl {
// {T}: Put the top card of your library into your graveyard.
this.addAbility(new SimpleActivatedAbility(
- new PutTopCardOfLibraryIntoGraveControllerEffect(1),
+ new MillCardsControllerEffect(1),
new TapSourceCost()
));
diff --git a/Mage.Sets/src/mage/cards/w/Whetstone.java b/Mage.Sets/src/mage/cards/w/Whetstone.java
index 84f564588ee..36ca438f669 100644
--- a/Mage.Sets/src/mage/cards/w/Whetstone.java
+++ b/Mage.Sets/src/mage/cards/w/Whetstone.java
@@ -2,7 +2,7 @@ package mage.cards.w;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -19,7 +19,7 @@ public final class Whetstone extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
//{3}: Each player puts the top two cards of their library into their graveyard.
- this.addAbility(new SimpleActivatedAbility(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(
+ this.addAbility(new SimpleActivatedAbility(new MillCardsEachPlayerEffect(
2, TargetController.ANY
), new GenericManaCost(3)));
}
diff --git a/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java b/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java
index ff0f5962d3f..237ee339e61 100644
--- a/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java
+++ b/Mage.Sets/src/mage/cards/w/WindgraceAcolyte.java
@@ -6,7 +6,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.GainLifeEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -31,7 +31,7 @@ public final class WindgraceAcolyte extends CardImpl {
this.addAbility(FlyingAbility.getInstance());
// When Windgrace Acolyte enters the battlefield, put the top three cards of your library into your graveyard and you gain 3 life.
- Ability ability = new EntersBattlefieldTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3), false);
+ Ability ability = new EntersBattlefieldTriggeredAbility(new MillCardsControllerEffect(3), false);
ability.addEffect(new GainLifeEffect(3).setText("and you gain 3 life"));
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java b/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java
index 8c273d0911a..ed400b9e85b 100644
--- a/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java
+++ b/Mage.Sets/src/mage/cards/w/WindsOfRebuke.java
@@ -2,7 +2,7 @@
package mage.cards.w;
import java.util.UUID;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
+import mage.abilities.effects.common.MillCardsEachPlayerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
@@ -22,7 +22,7 @@ public final class WindsOfRebuke extends CardImpl {
// Return target nonland permanent to its owner's hand. Each player puts the top two cards of their library into their graveyard.
getSpellAbility().addTarget(new TargetNonlandPermanent());
getSpellAbility().addEffect(new ReturnToHandTargetEffect());
- getSpellAbility().addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.ANY));
+ getSpellAbility().addEffect(new MillCardsEachPlayerEffect(2, TargetController.ANY));
}
public WindsOfRebuke(final WindsOfRebuke card) {
diff --git a/Mage.Sets/src/mage/cards/w/WorldShaper.java b/Mage.Sets/src/mage/cards/w/WorldShaper.java
index ce75ae985e5..d635128e585 100644
--- a/Mage.Sets/src/mage/cards/w/WorldShaper.java
+++ b/Mage.Sets/src/mage/cards/w/WorldShaper.java
@@ -7,7 +7,7 @@ import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.abilities.effects.common.MillCardsControllerEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
@@ -33,7 +33,7 @@ public final class WorldShaper extends CardImpl {
this.toughness = new MageInt(3);
// Whenever World Shaper attacks, you may put the top three cards of your library into your graveyard.
- this.addAbility(new AttacksTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(3), true));
+ this.addAbility(new AttacksTriggeredAbility(new MillCardsControllerEffect(3), true));
// When World Shaper dies, put all land cards from your graveyard onto the battlefield tapped.
this.addAbility(new DiesSourceTriggeredAbility(new WorldShaperEffect(), false));
diff --git a/Mage/src/main/java/mage/abilities/costs/common/PutTopCardOfYourLibraryToGraveyardCost.java b/Mage/src/main/java/mage/abilities/costs/common/MillCardsCost.java
similarity index 79%
rename from Mage/src/main/java/mage/abilities/costs/common/PutTopCardOfYourLibraryToGraveyardCost.java
rename to Mage/src/main/java/mage/abilities/costs/common/MillCardsCost.java
index 821e46283f2..3445b345137 100644
--- a/Mage/src/main/java/mage/abilities/costs/common/PutTopCardOfYourLibraryToGraveyardCost.java
+++ b/Mage/src/main/java/mage/abilities/costs/common/MillCardsCost.java
@@ -12,21 +12,21 @@ import java.util.LinkedHashSet;
import java.util.Set;
import java.util.UUID;
-public class PutTopCardOfYourLibraryToGraveyardCost extends CostImpl {
+public class MillCardsCost extends CostImpl {
private final int numberOfCards;
private final Set cardsMovedToGraveyard = new LinkedHashSet<>();
- public PutTopCardOfYourLibraryToGraveyardCost() {
+ public MillCardsCost() {
this(1);
}
- public PutTopCardOfYourLibraryToGraveyardCost(int numberOfCards) {
+ public MillCardsCost(int numberOfCards) {
this.numberOfCards = numberOfCards;
this.text = setText();
}
- private PutTopCardOfYourLibraryToGraveyardCost(final PutTopCardOfYourLibraryToGraveyardCost cost) {
+ private MillCardsCost(final MillCardsCost cost) {
super(cost);
this.numberOfCards = cost.numberOfCards;
this.cardsMovedToGraveyard.addAll(cost.getCardsMovedToGraveyard());
@@ -49,8 +49,8 @@ public class PutTopCardOfYourLibraryToGraveyardCost extends CostImpl {
}
@Override
- public PutTopCardOfYourLibraryToGraveyardCost copy() {
- return new PutTopCardOfYourLibraryToGraveyardCost(this);
+ public MillCardsCost copy() {
+ return new MillCardsCost(this);
}
public Set getCardsMovedToGraveyard() {
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MillCardsControllerEffect.java
similarity index 69%
rename from Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveControllerEffect.java
rename to Mage/src/main/java/mage/abilities/effects/common/MillCardsControllerEffect.java
index 423daa126e0..6c859ea8c53 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveControllerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/MillCardsControllerEffect.java
@@ -11,24 +11,24 @@ import mage.util.CardUtil;
* @author LevelX2
*/
-public class PutTopCardOfLibraryIntoGraveControllerEffect extends OneShotEffect {
+public class MillCardsControllerEffect extends OneShotEffect {
private final int numberCards;
- public PutTopCardOfLibraryIntoGraveControllerEffect(int numberCards) {
+ public MillCardsControllerEffect(int numberCards) {
super(Outcome.Discard);
this.numberCards = numberCards;
this.staticText = setText();
}
- public PutTopCardOfLibraryIntoGraveControllerEffect(final PutTopCardOfLibraryIntoGraveControllerEffect effect) {
+ public MillCardsControllerEffect(final MillCardsControllerEffect effect) {
super(effect);
this.numberCards = effect.numberCards;
}
@Override
- public PutTopCardOfLibraryIntoGraveControllerEffect copy() {
- return new PutTopCardOfLibraryIntoGraveControllerEffect(this);
+ public MillCardsControllerEffect copy() {
+ return new MillCardsControllerEffect(this);
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MillCardsEachPlayerEffect.java
similarity index 85%
rename from Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java
rename to Mage/src/main/java/mage/abilities/effects/common/MillCardsEachPlayerEffect.java
index fb29279aa98..d41f2680ae3 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveEachPlayerEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/MillCardsEachPlayerEffect.java
@@ -15,31 +15,31 @@ import java.util.UUID;
/**
* @author LevelX2
*/
-public class PutTopCardOfLibraryIntoGraveEachPlayerEffect extends OneShotEffect {
+public class MillCardsEachPlayerEffect extends OneShotEffect {
private final DynamicValue numberCards;
private final TargetController targetController;
- public PutTopCardOfLibraryIntoGraveEachPlayerEffect(int numberCards, TargetController targetController) {
+ public MillCardsEachPlayerEffect(int numberCards, TargetController targetController) {
this(StaticValue.get(numberCards), targetController);
}
- public PutTopCardOfLibraryIntoGraveEachPlayerEffect(DynamicValue numberCards, TargetController targetController) {
+ public MillCardsEachPlayerEffect(DynamicValue numberCards, TargetController targetController) {
super(Outcome.Discard);
this.numberCards = numberCards;
this.targetController = targetController;
this.staticText = setText();
}
- private PutTopCardOfLibraryIntoGraveEachPlayerEffect(final PutTopCardOfLibraryIntoGraveEachPlayerEffect effect) {
+ private MillCardsEachPlayerEffect(final MillCardsEachPlayerEffect effect) {
super(effect);
this.numberCards = effect.numberCards;
this.targetController = effect.targetController;
}
@Override
- public PutTopCardOfLibraryIntoGraveEachPlayerEffect copy() {
- return new PutTopCardOfLibraryIntoGraveEachPlayerEffect(this);
+ public MillCardsEachPlayerEffect copy() {
+ return new MillCardsEachPlayerEffect(this);
}
@Override
diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java
similarity index 74%
rename from Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveTargetEffect.java
rename to Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java
index 5c33b2f9361..9a36ed06934 100644
--- a/Mage/src/main/java/mage/abilities/effects/common/PutTopCardOfLibraryIntoGraveTargetEffect.java
+++ b/Mage/src/main/java/mage/abilities/effects/common/MillCardsTargetEffect.java
@@ -12,28 +12,28 @@ import mage.util.CardUtil;
/**
* @author LevelX2
*/
-public class PutTopCardOfLibraryIntoGraveTargetEffect extends OneShotEffect {
+public class MillCardsTargetEffect extends OneShotEffect {
private DynamicValue numberCards;
- public PutTopCardOfLibraryIntoGraveTargetEffect(int numberCards) {
+ public MillCardsTargetEffect(int numberCards) {
this(StaticValue.get(numberCards));
}
- public PutTopCardOfLibraryIntoGraveTargetEffect(DynamicValue numberCards) {
+ public MillCardsTargetEffect(DynamicValue numberCards) {
super(Outcome.Discard);
this.numberCards = numberCards;
this.staticText = setText();
}
- public PutTopCardOfLibraryIntoGraveTargetEffect(final PutTopCardOfLibraryIntoGraveTargetEffect effect) {
+ public MillCardsTargetEffect(final MillCardsTargetEffect effect) {
super(effect);
this.numberCards = effect.numberCards;
}
@Override
- public PutTopCardOfLibraryIntoGraveTargetEffect copy() {
- return new PutTopCardOfLibraryIntoGraveTargetEffect(this);
+ public MillCardsTargetEffect copy() {
+ return new MillCardsTargetEffect(this);
}
@Override
diff --git a/Mage/src/main/java/mage/game/command/emblems/JaceTelepathUnboundEmblem.java b/Mage/src/main/java/mage/game/command/emblems/JaceTelepathUnboundEmblem.java
index 31b9302ca6f..34ab1500f1d 100644
--- a/Mage/src/main/java/mage/game/command/emblems/JaceTelepathUnboundEmblem.java
+++ b/Mage/src/main/java/mage/game/command/emblems/JaceTelepathUnboundEmblem.java
@@ -3,7 +3,7 @@ package mage.game.command.emblems;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.Effect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.constants.Zone;
import mage.filter.FilterSpell;
import mage.game.command.Emblem;
@@ -17,7 +17,7 @@ public final class JaceTelepathUnboundEmblem extends Emblem {
public JaceTelepathUnboundEmblem() {
this.setName("Emblem Jace");
- Effect effect = new PutTopCardOfLibraryIntoGraveTargetEffect(5);
+ Effect effect = new MillCardsTargetEffect(5);
effect.setText("target opponent mills five cards");
Ability ability = new SpellCastControllerTriggeredAbility(Zone.COMMAND, effect, new FilterSpell("a spell"), false, false);
ability.addTarget(new TargetOpponent());
diff --git a/Mage/src/main/java/mage/game/command/planes/LetheLakePlane.java b/Mage/src/main/java/mage/game/command/planes/LetheLakePlane.java
index 9bd2c8e0b9b..291194f5cd1 100644
--- a/Mage/src/main/java/mage/game/command/planes/LetheLakePlane.java
+++ b/Mage/src/main/java/mage/game/command/planes/LetheLakePlane.java
@@ -8,7 +8,7 @@ import mage.abilities.condition.common.MainPhaseStackEmptyCondition;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
-import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveTargetEffect;
+import mage.abilities.effects.common.MillCardsTargetEffect;
import mage.abilities.effects.common.RollPlanarDieEffect;
import mage.abilities.effects.common.cost.PlanarDieRollCostIncreasingEffect;
import mage.constants.Planes;
@@ -36,7 +36,7 @@ public class LetheLakePlane extends Plane {
this.getAbilities().add(ability);
// Active player can roll the planar die: Whenever you roll {CHAOS}, target player puts the top ten cards of their library into their graveyard
- Effect chaosEffect = new PutTopCardOfLibraryIntoGraveTargetEffect(10);
+ Effect chaosEffect = new MillCardsTargetEffect(10);
Target chaosTarget = new TargetPlayer();
List chaosEffects = new ArrayList();