forked from External/mage
cleanup EntersBattlefieldAllTriggeredAbility and subclasses (#11372)
* comment out rule override to use generated text instead * new ETB Opponent trigger class * text improvements * update ETB cast trigger * remove controlledtext parameter * more text improvements * more fixes * lots of other fixes * most of the remaining fixes * fix halana text * fix smoke shroud text * improve text gen * remove rule param from constructors * minor adjustments * whenever a player puts * final fixes * standardize when/whenever phrase generation
This commit is contained in:
parent
c53db0810d
commit
ebf71941a9
161 changed files with 504 additions and 839 deletions
|
|
@ -25,7 +25,7 @@ public final class AetherFlash extends CardImpl {
|
|||
Zone.BATTLEFIELD,
|
||||
new DamageTargetEffect(2).setText("{this} deals 2 damage to it"),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||
false, SetTargetPointer.PERMANENT, null));
|
||||
false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private AetherFlash(final AetherFlash card) {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public final class AjanisChosen extends CardImpl {
|
|||
// Whenever an enchantment enters the battlefield under your control, create a 2/2 white Cat creature token. If that enchantment is an Aura, you may attach it to the token.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AjanisChosenEffect(), filter,
|
||||
false, SetTargetPointer.PERMANENT, null));
|
||||
false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private AjanisChosen(final AjanisChosen card) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.MillCardsEachPlayerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -27,8 +27,8 @@ public final class AltarOfTheBrood extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
|
||||
|
||||
// Whenever another permanent enters the battlefield under your control, each opponent mills a card.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new MillCardsEachPlayerEffect(1, TargetController.OPPONENT), filter, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new MillCardsEachPlayerEffect(1, TargetController.OPPONENT), filter, false));
|
||||
}
|
||||
|
||||
private AltarOfTheBrood(final AltarOfTheBrood card) {
|
||||
|
|
|
|||
|
|
@ -24,9 +24,8 @@ public final class AuraShards extends CardImpl {
|
|||
// Whenever a creature enters the battlefield under your control,
|
||||
// you may destroy target artifact or enchantment.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new DestroyTargetEffect(), StaticFilters.FILTER_PERMANENT_CREATURE, true,
|
||||
"Whenever a creature enters the battlefield under your control, "
|
||||
+ "you may destroy target artifact or enchantment");
|
||||
new DestroyTargetEffect(), StaticFilters.FILTER_PERMANENT_CREATURE, true
|
||||
);
|
||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.PermanentsEnterBattlefieldTappedEffect;
|
||||
|
|
@ -23,9 +23,8 @@ public final class AuthorityOfTheConsuls extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(new PermanentsEnterBattlefieldTappedEffect(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES)));
|
||||
|
||||
// Whenever a creature enters the battlefield under an opponent's control, you gain 1 life.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
new GainLifeEffect(1), StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES,
|
||||
"Whenever a creature enters the battlefield under an opponent's control, you gain 1 life."
|
||||
this.addAbility(new EntersBattlefieldOpponentTriggeredAbility(
|
||||
new GainLifeEffect(1), StaticFilters.FILTER_PERMANENT_A_CREATURE, false
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -29,12 +28,10 @@ import mage.game.permanent.token.Token;
|
|||
*/
|
||||
public final class BaruFistOfKrosa extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent forestFilter = new FilterLandPermanent("Forest");
|
||||
private static final FilterCreaturePermanent greenCreatureFilter = new FilterCreaturePermanent("green creatures you control");
|
||||
private static final FilterLandPermanent forestFilter = new FilterLandPermanent(SubType.FOREST, "a Forest");
|
||||
private static final FilterCreaturePermanent greenCreatureFilter = new FilterCreaturePermanent("green creatures");
|
||||
|
||||
static {
|
||||
forestFilter.add(SubType.FOREST.getPredicate());
|
||||
greenCreatureFilter.add(TargetController.YOU.getControllerPredicate());
|
||||
greenCreatureFilter.add(new ColorPredicate(ObjectColor.GREEN));
|
||||
}
|
||||
|
||||
|
|
@ -47,8 +44,10 @@ public final class BaruFistOfKrosa extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Whenever a Forest enters the battlefield, green creatures you control get +1/+1 and gain trample until end of turn.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, greenCreatureFilter), forestFilter, "Whenever a Forest enters the battlefield, green creatures you control get +1/+1 and gain trample until end of turn.");
|
||||
ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, greenCreatureFilter));
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, greenCreatureFilter)
|
||||
.setText("green creatures you control get +1/+1"), forestFilter);
|
||||
ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, greenCreatureFilter)
|
||||
.setText("and gain trample until end of turn"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Grandeur - Discard another card named Baru, Fist of Krosa: Create an X/X green Wurm creature token, where X is the number of lands you control.
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -37,7 +36,7 @@ public final class BindingMummy extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever another Zombie enters the battlefield under your control, you may tap target artifact or creature.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(), filter, true, null, true);
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(), filter, true);
|
||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public final class BrainstealerDragon extends CardImpl {
|
|||
// Whenever a nonland permanent an opponent owns enters the battlefield under your control, they lose life equal to its mana value.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new BrainstealerDragonLifeEffect(), filter,
|
||||
false, SetTargetPointer.PERMANENT, null
|
||||
false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import mage.game.permanent.Permanent;
|
|||
*/
|
||||
public final class BrambleSovereign extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature");
|
||||
|
||||
static {
|
||||
filter.add(TokenPredicate.FALSE);
|
||||
|
|
@ -45,9 +45,7 @@ public final class BrambleSovereign extends CardImpl {
|
|||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new DoIfCostPaid(new BrambleSovereignEffect(), new ManaCostsImpl<>("{1}{G}")),
|
||||
filter, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever another nontoken creature enters the battlefield, you may pay {1}{G}. "
|
||||
+ "If you do, that creature's controller creates a token that's a copy of that creature."
|
||||
filter, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -65,7 +63,7 @@ class BrambleSovereignEffect extends OneShotEffect {
|
|||
|
||||
BrambleSovereignEffect() {
|
||||
super(Outcome.PutCardInPlay);
|
||||
this.staticText = "its controller creates a token that's a copy of that creature";
|
||||
this.staticText = "that creature's controller creates a token that's a copy of that creature";
|
||||
}
|
||||
|
||||
private BrambleSovereignEffect(final BrambleSovereignEffect effect) {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public final class CarnivalOfSouls extends CardImpl {
|
|||
|
||||
// Whenever a creature enters the battlefield, you lose 1 life and add {B}.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeSourceControllerEffect(1),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT, null, false);
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT);
|
||||
Effect effect = new AddManaToManaPoolSourceControllerEffect(Mana.BlackMana(1));
|
||||
effect.setText("and add {B}.");
|
||||
ability.addEffect(effect);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import mage.MageInt;
|
|||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.SpellAbility;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
|
||||
import mage.abilities.costs.common.DiscardCardCost;
|
||||
import mage.abilities.effects.AsThoughEffectImpl;
|
||||
|
|
@ -15,8 +15,7 @@ import mage.cards.Card;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.util.CardUtil;
|
||||
|
|
@ -127,7 +126,6 @@ class ChainerNightmareAdeptWatcher extends Watcher {
|
|||
}
|
||||
morMap.computeIfAbsent(event.getAdditionalReference().getApprovingMageObjectReference(), m -> new HashMap<>())
|
||||
.compute(event.getPlayerId(), (u, i) -> i == null ? 0 : Integer.sum(i, -1));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -156,25 +154,17 @@ class ChainerNightmareAdeptWatcher extends Watcher {
|
|||
}
|
||||
}
|
||||
|
||||
class ChainerNightmareAdeptTriggeredAbility extends EntersBattlefieldAllTriggeredAbility {
|
||||
class ChainerNightmareAdeptTriggeredAbility extends EntersBattlefieldControlledTriggeredAbility {
|
||||
|
||||
private static final String abilityText = "Whenever a nontoken creature "
|
||||
+ "enters the battlefield under your control, "
|
||||
+ "if you didn't cast it from your hand, it gains haste until your next turn.";
|
||||
private static final ContinuousEffect gainHasteUntilNextTurnEffect
|
||||
= new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.UntilYourNextTurn);
|
||||
private static final FilterControlledCreaturePermanent filter
|
||||
= new FilterControlledCreaturePermanent("nontoken creature");
|
||||
|
||||
static {
|
||||
filter.add(TokenPredicate.FALSE);
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
}
|
||||
|
||||
ChainerNightmareAdeptTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, gainHasteUntilNextTurnEffect, filter, false,
|
||||
SetTargetPointer.PERMANENT, abilityText);
|
||||
super(Zone.BATTLEFIELD, gainHasteUntilNextTurnEffect, StaticFilters.FILTER_CREATURE_NON_TOKEN, false,
|
||||
SetTargetPointer.PERMANENT);
|
||||
this.addWatcher(new CastFromHandWatcher());
|
||||
setTriggerPhrase("Whenever a nontoken creature enters the battlefield under your control, "
|
||||
+ "if you didn't cast it from your hand, ");
|
||||
}
|
||||
|
||||
private ChainerNightmareAdeptTriggeredAbility(final ChainerNightmareAdeptTriggeredAbility effect) {
|
||||
|
|
@ -188,11 +178,9 @@ class ChainerNightmareAdeptTriggeredAbility extends EntersBattlefieldAllTriggere
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
if (!super.checkTrigger(event, game)) {
|
||||
return false;
|
||||
CastFromHandWatcher watcher = game.getState().getWatcher(CastFromHandWatcher.class);
|
||||
return watcher != null && !watcher.spellWasCastFromHand(event.getTargetId())
|
||||
&& super.checkTrigger(event, game);
|
||||
}
|
||||
|
||||
CastFromHandWatcher watcher = game.getState().getWatcher(CastFromHandWatcher.class);
|
||||
return watcher != null && !watcher.spellWasCastFromHand(event.getTargetId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package mage.cards.c;
|
|||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.RestrictionEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
|
|
@ -10,8 +10,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
|
|
@ -22,13 +21,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class ChampionOfLambholt extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
}
|
||||
|
||||
public ChampionOfLambholt(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
|
|
@ -41,8 +33,9 @@ public final class ChampionOfLambholt extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ChampionOfLambholtEffect()));
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, put a +1/+1 counter on Champion of Lambholt.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, false, null, true));
|
||||
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false));
|
||||
}
|
||||
|
||||
private ChampionOfLambholt(final ChampionOfLambholt card) {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public final class CloakAndDagger extends CardImpl {
|
|||
// Whenever a Rogue creature enters the battlefield, you may attach Cloak and Dagger to it.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||
filter, true, SetTargetPointer.PERMANENT, null));
|
||||
filter, true, SetTargetPointer.PERMANENT));
|
||||
// Equip {3}
|
||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3), new TargetControlledCreaturePermanent(), false));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -26,14 +26,13 @@ public final class CloudstoneCurio extends CardImpl {
|
|||
|
||||
static {
|
||||
filter.add(Predicates.not(CardType.ARTIFACT.getPredicate()));
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
}
|
||||
|
||||
public CloudstoneCurio(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
|
||||
// Whenever a nonartifact permanent enters the battlefield under your control, you may return another permanent you control that shares a card type with it to its owner's hand.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new CloudstoneCurioEffect(), filter, true, SetTargetPointer.PERMANENT, "", true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new CloudstoneCurioEffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public final class ConfoundingConundrum extends CardImpl {
|
|||
// Whenever a land enters the battlefield under an opponent's control, if that player had another land enter the battlefield under their control this turn, they return a land they control to its owner's hand.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new ConfoundingConundrumEffect(), filter,
|
||||
false, SetTargetPointer.PLAYER, ""
|
||||
false, SetTargetPointer.PLAYER
|
||||
), ConfoundingConundrumCondition.instance, "Whenever a land enters the battlefield under " +
|
||||
"an opponent's control, if that player had another land enter the battlefield " +
|
||||
"under their control this turn, they return a land they control to its owner's hand."
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public final class ConfusionInTheRanks extends CardImpl {
|
|||
+ "another player controls that shares a card type with it. "
|
||||
+ "Exchange control of those permanents"
|
||||
),
|
||||
filter, false, SetTargetPointer.PERMANENT, null
|
||||
filter, false, SetTargetPointer.PERMANENT
|
||||
);
|
||||
ability.addTarget(new TargetPermanent());
|
||||
ability.setTargetAdjuster(ConfusionInTheRanksAdjuster.instance);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import java.util.UUID;
|
|||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -37,7 +37,7 @@ public final class CourtStreetDenizen extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever another white creature enters the battlefield under your control, tap target creature an opponent controls.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(), filter, false, null, true);
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new TapTargetEffect(), filter, false);
|
||||
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,12 +31,8 @@ public final class CreamOfTheCrop extends CardImpl {
|
|||
// library and the rest on the bottom of your library in any order.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new CreamOfTheCropEffect(),
|
||||
StaticFilters.FILTER_PERMANENT_CREATURE, true, SetTargetPointer.PERMANENT,
|
||||
"Whenever a creature enters the battlefield under your control, "
|
||||
+ "you may look at the top X cards of your library, where X "
|
||||
+ "is that creature's power. If you do, put one of those cards "
|
||||
+ "on top of your library and the rest on the bottom of "
|
||||
+ "your library in any order."));
|
||||
StaticFilters.FILTER_PERMANENT_CREATURE, true, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
private CreamOfTheCrop(final CreamOfTheCrop card) {
|
||||
|
|
|
|||
|
|
@ -44,10 +44,9 @@ public final class CurseOfTheRestlessDead extends CardImpl {
|
|||
|
||||
// Whenever a land enters the battlefield under enchanted player's control, you create a 2/2 black Zombie creature token with decayed.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
new CreateTokenEffect(new ZombieDecayedToken()),
|
||||
filter, "Whenever a land enters the battlefield under enchanted player's control, " +
|
||||
"you create a 2/2 black Zombie creature token with decayed."
|
||||
));
|
||||
new CreateTokenEffect(new ZombieDecayedToken()).setText("you create a 2/2 black Zombie creature token with decayed."),
|
||||
filter
|
||||
).setTriggerPhrase("Whenever a land enters the battlefield under enchanted player's control, "));
|
||||
}
|
||||
|
||||
private CurseOfTheRestlessDead(final CurseOfTheRestlessDead card) {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public final class DeathMatch extends CardImpl {
|
|||
// Whenever a creature enters the battlefield, that creature's controller may have target creature of their choice get -3/-3 until end of turn.
|
||||
// NOTE: The ability being optional is implemented in the subclass to give the choice to correct player.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new DeathMatchEffect(),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PLAYER, "");
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PLAYER);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
ability.setTargetAdjuster(DeathMatchAdjuster.instance);
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -35,10 +34,8 @@ public final class DecoratedChampion extends CardImpl {
|
|||
|
||||
// Whenever another Warrior enters the battlefield under your team's control, put a +1/+1 counter on Decorated Champion.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter,
|
||||
"Whenever another Warrior enters the battlefield under your team's control,"
|
||||
+ " put a +1/+1 counter on {this}"
|
||||
));
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter
|
||||
).setTriggerPhrase("Whenever another Warrior enters the battlefield under your team's control, "));
|
||||
}
|
||||
|
||||
private DecoratedChampion(final DecoratedChampion card) {
|
||||
|
|
|
|||
|
|
@ -1,32 +1,28 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardTargetEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
import mage.target.TargetPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public final class DireUndercurrents extends CardImpl {
|
||||
|
||||
private static final String rule1 = "Whenever a blue creature enters the battlefield under your control, you may have target player draw a card.";
|
||||
private static final String rule2 = "Whenever a black creature enters the battlefield under your control, you may have target player discard a card.";
|
||||
|
||||
private static final FilterControlledPermanent filterBlue = new FilterControlledCreaturePermanent();
|
||||
private static final FilterControlledPermanent filterBlack = new FilterControlledCreaturePermanent();
|
||||
private static final FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("a blue creature");
|
||||
private static final FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("a black creature");
|
||||
|
||||
static {
|
||||
filterBlue.add(new ColorPredicate(ObjectColor.BLUE));
|
||||
|
|
@ -36,14 +32,14 @@ public final class DireUndercurrents extends CardImpl {
|
|||
public DireUndercurrents(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U/B}{U/B}");
|
||||
|
||||
|
||||
// Whenever a blue creature enters the battlefield under your control, you may have target player draw a card.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new DrawCardTargetEffect(1), filterBlue, true, rule1);
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DrawCardTargetEffect(1)
|
||||
.setText("you may have target player draw a card"), filterBlue, true);
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
|
||||
// Whenever a black creature enters the battlefield under your control, you may have target player discard a card.
|
||||
Ability ability2 = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), filterBlack, true, rule2);
|
||||
Ability ability2 = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), filterBlack, true);
|
||||
ability2.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability2);
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public final class DivinersWand extends CardImpl {
|
|||
// Whenever a Wizard creature enters the battlefield, you may attach Diviner's Wand to it.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||
filter, true, SetTargetPointer.PERMANENT, null));
|
||||
filter, true, SetTargetPointer.PERMANENT));
|
||||
|
||||
// Equip {3}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3), false));
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public final class DragonBreath extends CardImpl {
|
|||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 0, Duration.EndOfTurn), new ColoredManaCost(ColoredManaSymbol.R)));
|
||||
|
||||
// When a creature with converted mana cost 6 or greater enters the battlefield, you may return Dragon Breath from your graveyard to the battlefield attached to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonBreathEffect(), filter, true, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonBreathEffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private DragonBreath(final DragonBreath card) {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public final class DragonFangs extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.AURA)));
|
||||
|
||||
// When a creature with converted mana cost 6 or greater enters the battlefield, you may return Dragon Fangs from your graveyard to the battlefield attached to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonFangsEffect(), filter, true, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonFangsEffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private DragonFangs(final DragonFangs card) {
|
||||
|
|
@ -94,4 +94,3 @@ class DragonFangsEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public final class DragonScales extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA)));
|
||||
|
||||
// When a creature with converted mana cost 6 or greater enters the battlefield, you may return Dragon Scales from your graveyard to the battlefield attached to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonScalesEffect(), filter, true, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonScalesEffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private DragonScales(final DragonScales card) {
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public final class DragonShadow extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FearAbility.getInstance(), AttachmentType.AURA)));
|
||||
|
||||
// When a creature with converted mana cost 6 or greater enters the battlefield, you may return Dragon Breath from your graveyard to the battlefield attached to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonShadowEffect(), filter, true, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonShadowEffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private DragonShadow(final DragonShadow card) {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public final class DragonTempest extends CardImpl {
|
|||
// Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.
|
||||
Effect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("it gains haste until end of turn");
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filterFlying, false, SetTargetPointer.PERMANENT, ""));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filterFlying, false, SetTargetPointer.PERMANENT));
|
||||
|
||||
// Whenever a Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
|
|
@ -45,8 +45,7 @@ public final class DragonTempest extends CardImpl {
|
|||
new DragonTempestDamageEffect(),
|
||||
new FilterCreaturePermanent(SubType.DRAGON, "a Dragon"),
|
||||
false,
|
||||
SetTargetPointer.NONE,
|
||||
""
|
||||
SetTargetPointer.NONE
|
||||
);
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public final class DragonWings extends CardImpl {
|
|||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{1}{U}")));
|
||||
|
||||
// When a creature with converted mana cost 6 or greater enters the battlefield, you may return Dragon Breath from your graveyard to the battlefield attached to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonWingsEffect(), filter, true, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new DragonWingsEffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private DragonWings(final DragonWings card) {
|
||||
|
|
@ -96,4 +96,3 @@ class DragonWingsEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -44,8 +44,7 @@ public final class DualNature extends CardImpl {
|
|||
|
||||
// Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new DualNatureCreateTokenEffect(), filter, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature."
|
||||
Zone.BATTLEFIELD, new DualNatureCreateTokenEffect(), filter, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
// Whenever a nontoken creature leaves the battlefield, exile all tokens with the same name as that creature.
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public final class DurableHandicraft extends CardImpl {
|
|||
.setText("put a +1/+1 counter on that creature"),
|
||||
new GenericManaCost(1)
|
||||
), StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||
false, SetTargetPointer.PERMANENT, null
|
||||
false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
// {5}{G}, Sacrifice Durable Handicraft: Put a +1/+1 counter on each creature you control.
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public final class EldraziMimic extends CardImpl {
|
|||
|
||||
// Whenever another colorless creature enters the battlefield under your control, you may have the base power and toughness of Eldrazi Mimic
|
||||
// become that creature's power and toughness until end of turn.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new EldraziMimicEffect(), FILTER, true, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new EldraziMimicEffect(), FILTER, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private EldraziMimic(final EldraziMimic card) {
|
||||
|
|
|
|||
|
|
@ -42,9 +42,7 @@ public final class EmielTheBlessed extends CardImpl {
|
|||
// If you do, put a +1/+1 counter on it. If it's a Unicorn, put two +1/+1 counters on it instead.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new DoIfCostPaid(new EmielTheBlessedEffect(), new ManaCostsImpl<>("{G/W}")),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever another creature enters the battlefield under your control, you may pay {G/W}. "
|
||||
+ "If you do, put a +1/+1 counter on it. If it's a Unicorn, put two +1/+1 counters on it instead."
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -62,6 +60,7 @@ class EmielTheBlessedEffect extends OneShotEffect {
|
|||
|
||||
EmielTheBlessedEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "put a +1/+1 counter on it. If it's a Unicorn, put two +1/+1 counters on it instead.";
|
||||
}
|
||||
|
||||
private EmielTheBlessedEffect(final EmielTheBlessedEffect effect) {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public final class EssenceWarden extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever another creature enters the battlefield, you gain 1 life.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filter, false, null));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), filter, false));
|
||||
}
|
||||
|
||||
private EssenceWarden(final EssenceWarden card) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
package mage.cards.f;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
|
|
@ -13,25 +11,20 @@ import mage.cards.CardSetInfo;
|
|||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class FaerieArtisans extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filterNontoken = new FilterCreaturePermanent("nontoken creature");
|
||||
|
||||
static {
|
||||
filterNontoken.add(TokenPredicate.FALSE);
|
||||
filterNontoken.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
}
|
||||
|
||||
public FaerieArtisans(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
||||
|
||||
|
|
@ -44,8 +37,8 @@ public final class FaerieArtisans extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever a nontoken creature enters the battlefield under an opponent's control, create a token that's a copy of that creature except it's an artifact in addition to its other types. Then exile all other tokens created with Faerie Artisans.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new FaerieArtisansEffect(), filterNontoken, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever a nontoken creature enters the battlefield under an opponent's control, create a token that's a copy of that creature except it's an artifact in addition to its other types. Then exile all other tokens created with {this}.");
|
||||
Ability ability = new EntersBattlefieldOpponentTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new FaerieArtisansEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public final class FlameKinWarScout extends CardImpl {
|
|||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new FlameKinWarScourEffect(),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false,
|
||||
SetTargetPointer.PERMANENT, null
|
||||
SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -18,8 +17,6 @@ import mage.constants.Outcome;
|
|||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
|
@ -34,12 +31,10 @@ public final class FlameshadowConjuring extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
|
||||
|
||||
// Whenever a nontoken creature enters the battlefield under your control, you may pay {R}. If you do, create a token that's a copy of that creature. That token gains haste. Exile it at the beginning of the next end step.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DoIfCostPaid(
|
||||
new FlameshadowConjuringEffect(), new ManaCostsImpl<>("{R}"), "Pay {R} to create a token that's a copy of that creature that entered the battlefield?"),
|
||||
StaticFilters.FILTER_CONTROLLED_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever a nontoken creature enters the battlefield under your control, "
|
||||
+ "you may pay {R}. If you do, create a token that's a copy of that creature. "
|
||||
+ "That token gains haste. Exile it at the beginning of the next end step.");
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new DoIfCostPaid(new FlameshadowConjuringEffect(), new ManaCostsImpl<>("{R}"),
|
||||
"Pay {R} to create a token that's a copy of that creature that entered the battlefield?"),
|
||||
StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package mage.cards.f;
|
|||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -36,7 +36,8 @@ public final class FoundryStreetDenizen extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever another red creature enters the battlefield under your control, Foundry Street Denizen gets +1/+0 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), filter, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new BoostSourceEffect(1, 0, Duration.EndOfTurn), filter, false));
|
||||
}
|
||||
|
||||
private FoundryStreetDenizen(final FoundryStreetDenizen card) {
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public final class FrontierSiege extends CardImpl {
|
|||
|
||||
// * Dragons - Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.
|
||||
Ability ability2 = new ConditionalTriggeredAbility(
|
||||
new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new FrontierSiegeFightEffect(), filter, true, SetTargetPointer.PERMANENT, ""),
|
||||
new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new FrontierSiegeFightEffect(), filter, true, SetTargetPointer.PERMANENT),
|
||||
new ModeChoiceSourceCondition("Dragons"),
|
||||
ruleTrigger2);
|
||||
ability2.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public final class GamorreanPrisonGuard extends CardImpl {
|
|||
|
||||
// Whenever a creature enters the battlefield under an opponent's control, Gamorrean Prison Guard fights that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new GamorreanPrisonGuardEffect(), filter, false, SetTargetPointer.PERMANENT, "Whenever a creature enters the battlefield under an opponent's control, Gamorrean Prison Guard fights that creature."));
|
||||
Zone.BATTLEFIELD, new GamorreanPrisonGuardEffect(), filter, false, SetTargetPointer.PERMANENT));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@ import mage.constants.Outcome;
|
|||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.MyrToken;
|
||||
|
|
@ -30,7 +28,7 @@ public final class GenesisChamber extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||
|
||||
// Whenever a nontoken creature enters the battlefield, if Genesis Chamber is untapped, that creature's controller creates a 1/1 colorless Myr artifact creature token.
|
||||
TriggeredAbility ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GenesisChamberEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT, "");
|
||||
TriggeredAbility ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GenesisChamberEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT);
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability,
|
||||
SourceUntappedCondition.instance,
|
||||
"Whenever a nontoken creature enters the battlefield, "
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -14,7 +13,6 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterArtifactPermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
|
@ -28,7 +26,6 @@ public final class GlassdustHulk extends CardImpl {
|
|||
private static final FilterPermanent filter = new FilterArtifactPermanent("another artifact");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
|
|
@ -40,9 +37,8 @@ public final class GlassdustHulk extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Whenever another artifact enters the battlefield under your control, Glassdust Hulk gets +1/+1 until end of turn and can't be blocked this turn.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter,
|
||||
"Whenever another artifact enters the battlefield under your control, {this} gets +1/+1 until end of turn and can't be blocked this turn.");
|
||||
ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn));
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter);
|
||||
ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn).setText("and can't be blocked this turn"));
|
||||
this.addAbility(ability);
|
||||
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{W/U}")));
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public final class GoblinAssassin extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever Goblin Assassin or another Goblin enters the battlefield, each player flips a coin. Each player whose coin comes up tails sacrifices a creature.
|
||||
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new GoblinAssassinTriggeredEffect(), filter));
|
||||
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new GoblinAssassinTriggeredEffect(), filter, false, false));
|
||||
}
|
||||
|
||||
private GoblinAssassin(final GoblinAssassin card) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -12,7 +11,7 @@ import mage.constants.SubType;
|
|||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||
|
||||
/**
|
||||
|
|
@ -21,26 +20,23 @@ import mage.filter.predicate.mageobject.PowerPredicate;
|
|||
*/
|
||||
public final class GodtrackerOfJund extends CardImpl {
|
||||
|
||||
final private static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent();
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature with power 5 or greater");
|
||||
|
||||
static {
|
||||
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4));
|
||||
}
|
||||
|
||||
private static final String rule = "Whenever a creature with power 5 or greater enters the battlefield under your control, you may put a +1/+1 counter on {this}.";
|
||||
|
||||
public GodtrackerOfJund(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
|
||||
this.subtype.add(SubType.ELF);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
|
||||
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever a creature with power 5 or greater enters the battlefield under your control, you may put a +1/+1 counter on Godtracker of Jund.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, true, rule, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, true));
|
||||
}
|
||||
|
||||
private GodtrackerOfJund(final GodtrackerOfJund card) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -28,8 +27,8 @@ public final class GoldnightCommander extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, creatures you control get +1/+1 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new BoostControlledEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new BoostControlledEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false));
|
||||
}
|
||||
|
||||
private GoldnightCommander(final GoldnightCommander card) {
|
||||
|
|
|
|||
|
|
@ -29,9 +29,7 @@ public final class GoodFortuneUnicorn extends CardImpl {
|
|||
// Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever another creature enters the battlefield under your control, " +
|
||||
"put a +1/+1 counter on that creature."
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public final class GravePeril extends CardImpl {
|
|||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
|
||||
|
||||
// When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GravePerilEffect(), StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK, false, SetTargetPointer.PERMANENT, null).setTriggerPhrase("When a nonblack creature enters the battlefield, "));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GravePerilEffect(), StaticFilters.FILTER_PERMANENT_CREATURE_NON_BLACK, false, SetTargetPointer.PERMANENT).setTriggerPhrase("When a nonblack creature enters the battlefield, "));
|
||||
}
|
||||
|
||||
private GravePeril(final GravePeril card) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -31,8 +30,8 @@ public final class GriffinProtector extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, Griffin Protector gets +1/+1 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,11 +39,10 @@ public final class HalanaKessigRanger extends CardImpl {
|
|||
this.addAbility(ReachAbility.getInstance());
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, you may pay {2}. When you do, that creature deals damage equal to its power to target creature.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new DoIfCostPaid(new HalanaKessigRangerTriggerEffect(), new GenericManaCost(2)),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever another creature enters the battlefield under your control, you may pay {2}. " +
|
||||
"When you do, that creature deals damage equal to its power to target creature."
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new DoIfCostPaid(new HalanaKessigRangerTriggerEffect(), new GenericManaCost(2))
|
||||
.setText("you may pay {2}. When you do, that creature deals damage equal to its power to target creature."),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
// Partner
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -27,8 +26,8 @@ public final class HealerOfThePride extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, you gain 2 life.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
|
@ -35,9 +34,9 @@ public final class HerosBlade extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(3, 2)));
|
||||
|
||||
// Whenever a legendary creature enters the battlefield under your control, you may attach Hero's Blade to it.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||
filter, true, SetTargetPointer.PERMANENT, null, true));
|
||||
filter, true, SetTargetPointer.PERMANENT));
|
||||
|
||||
// Equip {4}
|
||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(4)));
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ public final class HungryDragonsnake extends CardImpl {
|
|||
|
||||
// Whenever a creature enters the battlefield under an opponents's control, put a +1/+1 counter on Hungry Dragonsnake.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, false,
|
||||
"Whenever a creature enters the battlefield under an opponents's control, put a +1/+1 counter on {this}.", false));
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, false
|
||||
));
|
||||
}
|
||||
|
||||
private HungryDragonsnake(final HungryDragonsnake card) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class IcebergCancrix extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
private static final FilterPermanent filter = new FilterPermanent("another snow permanent");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
|
|
@ -38,9 +38,7 @@ public final class IcebergCancrix extends CardImpl {
|
|||
|
||||
// Whenever another snow permanent enters the battlefield under your control, you may have target player put the top two cards of their library into their graveyard.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new MillCardsTargetEffect(2), filter,
|
||||
true, "Whenever another snow permanent enters the battlefield under your control, " +
|
||||
"you may have target player mill two cards."
|
||||
Zone.BATTLEFIELD, new MillCardsTargetEffect(2), filter, true
|
||||
);
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
|
@ -11,32 +9,22 @@ import mage.abilities.effects.common.continuous.ControlEnchantedEffect;
|
|||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class IllusoryGains extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("a creature");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
}
|
||||
|
||||
public IllusoryGains(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
|
@ -52,8 +40,8 @@ public final class IllusoryGains extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect()));
|
||||
|
||||
// Whenever a creature enters the battlefield under an opponent's control, attach Illusory Gains to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new IllusoryGainsEffect(), filter, false, SetTargetPointer.PERMANENT, "Whenever a creature enters the battlefield under an opponent's control, attach Illusory Gains to that creature."));
|
||||
this.addAbility(new EntersBattlefieldOpponentTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new IllusoryGainsEffect(), StaticFilters.FILTER_PERMANENT_CREATURE, false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private IllusoryGains(final IllusoryGains card) {
|
||||
|
|
@ -68,8 +56,9 @@ public final class IllusoryGains extends CardImpl {
|
|||
|
||||
class IllusoryGainsEffect extends OneShotEffect {
|
||||
|
||||
public IllusoryGainsEffect() {
|
||||
IllusoryGainsEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "attach {this} to that creature";
|
||||
}
|
||||
|
||||
private IllusoryGainsEffect(final IllusoryGainsEffect effect) {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import mage.constants.Duration;
|
|||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -29,7 +28,7 @@ public final class InTheWebOfWar extends CardImpl {
|
|||
// Whenever a creature enters the battlefield under your control, it gets +2/+0 and gains haste until end of turn.
|
||||
Effect effect = new BoostTargetEffect(2,0, Duration.EndOfTurn);
|
||||
effect.setText("it gets +2/+0");
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT, null);
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT);
|
||||
effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("and gains haste until end of turn");
|
||||
ability.addEffect(effect);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public final class InallaArchmageRitualist extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||
new EntersBattlefieldControlledTriggeredAbility(Zone.ALL, new DoIfCostPaid(
|
||||
new InallaArchmageRitualistEffect(), new ManaCostsImpl<>("{1}"), "Pay {1} to create a token copy?"),
|
||||
filter, false, SetTargetPointer.PERMANENT, ""),
|
||||
filter, false, SetTargetPointer.PERMANENT),
|
||||
SourceOnBattlefieldOrCommandZoneCondition.instance,
|
||||
"Whenever another nontoken Wizard enters the battlefield under your control, "
|
||||
+ "{this} is in the command zone or on the battlefield, "
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public final class InventorsGoggles extends CardImpl {
|
|||
// Whenever an Artificer enters the battlefield under your control, you may attach Inventor's Goggles to it.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "attach {this} to it"),
|
||||
filter, true, SetTargetPointer.PERMANENT, null
|
||||
filter, true, SetTargetPointer.PERMANENT
|
||||
));
|
||||
|
||||
// Equip {2}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import java.util.UUID;
|
|||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -38,10 +38,10 @@ public final class IvyLaneDenizen extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever another green creature enters the battlefield under your control, put a +1/+1 counter on target creature.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||
filter, false, null, true);
|
||||
filter, false);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@ import mage.constants.SubType;
|
|||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -23,12 +21,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class JuniperOrderRanger extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
public JuniperOrderRanger(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
|
|
@ -40,11 +32,10 @@ public final class JuniperOrderRanger extends CardImpl {
|
|||
// Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature and a +1/+1 counter on Juniper Order Ranger.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false,
|
||||
SetTargetPointer.PERMANENT, "Whenever another creature enters the battlefield " +
|
||||
"under your control, put a +1/+1 counter on that creature and a +1/+1 counter on {this}."
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||
);
|
||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||
.setText("and a +1/+1 counter on {this}"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import mage.constants.SubType;
|
|||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.common.FilterNonlandPermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
|
|
@ -51,12 +52,10 @@ public final class JunkWinder extends CardImpl {
|
|||
|
||||
// Whenever a token enters the battlefield under your control, tap target nonland permanent an opponent controls. It doesn't untap during its controller's next untap step.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
new TapTargetEffect(), filter, "Whenever a token enters the battlefield " +
|
||||
"under your control, tap target nonland permanent an opponent controls. " +
|
||||
"It doesn't untap during its controller's next untap step."
|
||||
new TapTargetEffect(), StaticFilters.FILTER_PERMANENT_TOKEN
|
||||
);
|
||||
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
|
||||
ability.addTarget(new TargetPermanent(filter2));
|
||||
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("It"));
|
||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,9 @@ public final class KavuLair extends CardImpl {
|
|||
|
||||
// Whenever a creature with power 4 or greater enters the battlefield, its controller draws a card.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new DrawCardTargetEffect(1), filter, false, SetTargetPointer.PLAYER,
|
||||
"Whenever a creature with power 4 or greater enters the battlefield, its controller draws a card."));
|
||||
new DrawCardTargetEffect(1).setText("its controller draws a card"),
|
||||
filter, false, SetTargetPointer.PLAYER
|
||||
));
|
||||
}
|
||||
|
||||
private KavuLair(final KavuLair card) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
|
||||
package mage.cards.k;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
|
|
@ -30,9 +29,11 @@ public final class KruinStriker extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, Kruin Striker gets +1/+0 and gains trample until end of turn.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE,
|
||||
"Whenever another creature enters the battlefield under your control, Kruin Striker gets +1/+0 and gains trample until end of turn.");
|
||||
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
new BoostSourceEffect(1, 0, Duration.EndOfTurn).setText("{this} gets +1/+0"),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE);
|
||||
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn).
|
||||
setText("and gains trample until end of turn"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public final class LethalVapors extends CardImpl {
|
|||
Zone.BATTLEFIELD,
|
||||
new DestroyTargetEffect().setText("destroy it"),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||
false, SetTargetPointer.PERMANENT, null));
|
||||
false, SetTargetPointer.PERMANENT));
|
||||
|
||||
// {0}: Destroy Lethal Vapors. You skip your next turn. Any player may activate this ability.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroySourceEffect(), new ManaCostsImpl<>("{0}"));
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public final class LlanowarStalker extends CardImpl {
|
|||
// Whenever another creature enters the battlefield under your control, Llanowar Stalker gets +1/+0 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
new BoostSourceEffect(1, 0, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, null
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package mage.cards.l;
|
|||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeXTargetCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
|
|
@ -12,8 +12,8 @@ import mage.abilities.effects.OneShotEffect;
|
|||
import mage.abilities.effects.keyword.InvestigateEffect;
|
||||
import mage.cards.*;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.common.FilterPermanentCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
|
@ -30,7 +30,7 @@ import mage.target.common.TargetOpponent;
|
|||
*/
|
||||
public final class LonisCryptozoologist extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another nontoken creature");
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another nontoken creature");
|
||||
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.CLUE, "Clues");
|
||||
|
||||
static {
|
||||
|
|
@ -49,7 +49,7 @@ public final class LonisCryptozoologist extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever another nontoken creature enters the battlefield under your control, investigate.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new InvestigateEffect(), filter, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new InvestigateEffect(), filter));
|
||||
|
||||
// {T}, Sacrifice X Clues: Target opponent reveals the top X cards of their library.
|
||||
// You may put a nonland permanent card with mana value X or less from among them onto the battlefield under your control.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public final class ManaEchoes extends CardImpl {
|
|||
|
||||
// Whenever a creature enters the battlefield, you may add X mana of {C}, where X is the number of creatures you control that share a creature type with it.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new ManaEchoesEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE, true, SetTargetPointer.PERMANENT, ""));
|
||||
new ManaEchoesEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private ManaEchoes(final ManaEchoes card) {
|
||||
|
|
|
|||
|
|
@ -11,10 +11,8 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
|
|
@ -26,11 +24,6 @@ import java.util.UUID;
|
|||
public final class MaraudingRaptor extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCreatureCard("creature spells");
|
||||
private static final FilterPermanent filter2 = new FilterCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter2.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
public MaraudingRaptor(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
|
|
@ -45,10 +38,7 @@ public final class MaraudingRaptor extends CardImpl {
|
|||
// Whenever another creature enters the battlefield under your control, Marauding Raptor deals 2 damage to it. If a Dinosaur is dealt damage this way, Marauding Raptor gets +2/+0 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new MaraudingRaptorEffect(),
|
||||
filter2, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever another creature enters the battlefield under your control, " +
|
||||
"{this} deals 2 damage to it. If a Dinosaur is dealt damage this way, " +
|
||||
"{this} gets +2/+0 until end of turn."
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -66,6 +56,7 @@ class MaraudingRaptorEffect extends OneShotEffect {
|
|||
|
||||
MaraudingRaptorEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "{this} deals 2 damage to it. If a Dinosaur is dealt damage this way, {this} gets +2/+0 until end of turn";
|
||||
}
|
||||
|
||||
private MaraudingRaptorEffect(final MaraudingRaptorEffect effect) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -33,7 +32,7 @@ public final class MightyEmergence extends CardImpl {
|
|||
// Whenever a creature with power 5 or greater enters the battlefield under your control, you may put two +1/+1 counters on it.
|
||||
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(2));
|
||||
effect.setText("you may put two +1/+1 counters on it");
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true, SetTargetPointer.PERMANENT, "", true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private MightyEmergence(final MightyEmergence card) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class MiirymSentinelWyrm extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.DRAGON);
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent(SubType.DRAGON, "another nontoken Dragon");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
|
|
@ -45,10 +45,9 @@ public final class MiirymSentinelWyrm extends CardImpl {
|
|||
|
||||
// Whenever another nontoken Dragon enters the battlefield under your control, create a token that's a copy of it, except the token isn't legendary if that Dragon is legendary.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true),
|
||||
filter, false, SetTargetPointer.PERMANENT, "Whenever another nontoken Dragon " +
|
||||
"enters the battlefield under your control, create a token that's a copy of it, " +
|
||||
"except the token isn't legendary."
|
||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true)
|
||||
.setText("create a token that's a copy of it, except the token isn't legendary"),
|
||||
filter, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
|
@ -37,7 +35,7 @@ public final class MinionReflector extends CardImpl {
|
|||
new MinionReflectorEffect(), new ManaCostsImpl<>("{2}"), "Pay {2} " +
|
||||
"to create a token that's a copy of that creature that entered the battlefield?"
|
||||
),
|
||||
StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT, null
|
||||
StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,10 +10,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
|
|
@ -29,11 +26,8 @@ public final class MirrorMarch extends CardImpl {
|
|||
|
||||
// Whenever a nontoken creature enters the battlefield under your control, flip a coin until you lose a flip. For each flip you won, create a token that's a copy of that creature. Those tokens gain haste. Exile them at the beginning of the next end step.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new MirrorMarchEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever a nontoken creature enters the battlefield under your control, " +
|
||||
"flip a coin until you lose a flip. For each flip you won, " +
|
||||
"create a token that's a copy of that creature. Those tokens gain haste. " +
|
||||
"Exile them at the beginning of the next end step."
|
||||
Zone.BATTLEFIELD, new MirrorMarchEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN,
|
||||
false, SetTargetPointer.PERMANENT
|
||||
));
|
||||
}
|
||||
|
||||
|
|
@ -51,6 +45,9 @@ class MirrorMarchEffect extends OneShotEffect {
|
|||
|
||||
MirrorMarchEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "flip a coin until you lose a flip. For each flip you won, " +
|
||||
"create a token that's a copy of that creature. Those tokens gain haste. " +
|
||||
"Exile them at the beginning of the next end step.";
|
||||
}
|
||||
|
||||
private MirrorMarchEffect(final MirrorMarchEffect effect) {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public final class Mirrorworks extends CardImpl {
|
|||
Effect effect = new DoIfCostPaid(new CreateTokenCopyTargetEffect(true),
|
||||
new ManaCostsImpl<>("{2}"), "Create a token that's a copy of that artifact?");
|
||||
effect.setText("you may pay {2}. If you do, create a token that's a copy of that artifact");
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter, false, SetTargetPointer.PERMANENT, null));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, effect, filter, false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private Mirrorworks(final Mirrorworks card) {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import java.util.UUID;
|
|||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.SacrificeSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
|
@ -13,7 +12,6 @@ import mage.constants.CardType;
|
|||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
|
||||
/**
|
||||
|
|
@ -22,8 +20,6 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
|
|||
*/
|
||||
public final class MoggBombers extends CardImpl {
|
||||
|
||||
private static final String rule = "When another creature enters the battlefield, sacrifice {this} and it deals 3 damage to target player or planeswalker.";
|
||||
|
||||
public MoggBombers(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||
|
||||
|
|
@ -32,15 +28,9 @@ public final class MoggBombers extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// When another creature enters the battlefield, sacrifice Mogg Bombers and it deals 3 damage to target player.
|
||||
Effect sacrificeMoggBombers = new SacrificeSourceEffect();
|
||||
Effect damageTargetPlayer = new DamageTargetEffect(3);
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
sacrificeMoggBombers,
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE,
|
||||
false,
|
||||
rule);
|
||||
ability.addEffect(damageTargetPlayer);
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new SacrificeSourceEffect(), StaticFilters.FILTER_ANOTHER_CREATURE, false);
|
||||
ability.addEffect(new DamageTargetEffect(3, "it").concatBy("and"));
|
||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
|
|||
|
|
@ -42,10 +42,8 @@ public final class MoltenEchoes extends CardImpl {
|
|||
filter.add(ChosenSubtypePredicate.TRUE);
|
||||
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new MoltenEchoesEffect(),
|
||||
filter, false, SetTargetPointer.PERMANENT,
|
||||
"Whenever a nontoken creature of the chosen type enters the battlefield under your control, "
|
||||
+ "create a token that's a copy of that creature. "
|
||||
+ "That token gains haste. Exile it at the beginning of the next end step.");
|
||||
filter, false, SetTargetPointer.PERMANENT
|
||||
);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
@ -95,4 +93,3 @@ class MoltenEchoesEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public final class MonkeyCage extends CardImpl {
|
|||
// When a creature enters the battlefield, sacrifice Monkey Cage and create X 2/2 green Monkey creature tokens, where X is that creature's converted mana cost.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new SacrificeSourceEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||
false, SetTargetPointer.PERMANENT, null
|
||||
false, SetTargetPointer.PERMANENT
|
||||
).setTriggerPhrase("When a creature enters the battlefield, ");
|
||||
ability.addEffect(new MonkeyCageEffect());
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.n;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -43,18 +42,18 @@ public final class NaturesWrath extends CardImpl {
|
|||
// Whenever a player puts an Island or blue permanent onto the battlefield, they sacrifice an Island or blue permanent.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new SacrificeEffect(filterBlue, 1, ""),
|
||||
new SacrificeEffect(filterBlue, 1, "that player"),
|
||||
filterBlue,
|
||||
false, SetTargetPointer.PLAYER,
|
||||
"Whenever a player puts an Island or blue permanent onto the battlefield, they sacrifice an Island or blue permanent."));
|
||||
false, SetTargetPointer.PLAYER
|
||||
).setTriggerPhrase("Whenever a player puts an Island or blue permanent onto the battlefield, "));
|
||||
|
||||
// Whenever a player puts a Swamp or black permanent onto the battlefield, they sacrifice a Swamp or black permanent.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new SacrificeEffect(filterBlack, 1, ""),
|
||||
new SacrificeEffect(filterBlack, 1, "that player"),
|
||||
filterBlack,
|
||||
false, SetTargetPointer.PLAYER,
|
||||
"Whenever a player puts a Swamp or black permanent onto the battlefield, they sacrifice a Swamp or black permanent."));
|
||||
false, SetTargetPointer.PLAYER
|
||||
).setTriggerPhrase("Whenever a player puts a Swamp or black permanent onto the battlefield, "));
|
||||
}
|
||||
|
||||
private NaturesWrath(final NaturesWrath card) {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class Necroduality extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.ZOMBIE);
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.ZOMBIE, "a nontoken Zombie");
|
||||
|
||||
static {
|
||||
filter.add(TokenPredicate.FALSE);
|
||||
|
|
@ -29,11 +29,9 @@ public final class Necroduality extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
|
||||
|
||||
// Whenever a nontoken Zombie enters the battlefield under your control, create a token that's a copy of that creature.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true), filter, false,
|
||||
SetTargetPointer.PERMANENT, "Whenever a nontoken Zombie enters the battlefield " +
|
||||
"under your control, create a token that's a copy of that creature."
|
||||
));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new CreateTokenCopyTargetEffect(true).setText("create a token that's a copy of that creature"),
|
||||
filter, false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private Necroduality(final Necroduality card) {
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@ package mage.cards.n;
|
|||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -18,12 +18,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class NightshadeHarvester extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
|
||||
static {
|
||||
filter.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
}
|
||||
|
||||
public NightshadeHarvester(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||
|
||||
|
|
@ -33,10 +27,9 @@ public final class NightshadeHarvester extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever a land enters the battlefield under an opponent's control, that player loses 1 life. Put a +1/+1 counter on Nightshade Harvester.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), filter, false,
|
||||
SetTargetPointer.PLAYER, "Whenever a land enters the battlefield under an opponent's control, " +
|
||||
"that player loses 1 life. Put a +1/+1 counter on {this}."
|
||||
Ability ability = new EntersBattlefieldOpponentTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), StaticFilters.FILTER_LAND_A, false,
|
||||
SetTargetPointer.PLAYER
|
||||
);
|
||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public final class NoxiousGhoul extends CardImpl {
|
|||
// Whenever Noxious Ghoul or another Zombie enters the battlefield, all non-Zombie creatures get -1/-1 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new BoostAllEffect(
|
||||
-1, -1, Duration.EndOfTurn, filter, false
|
||||
), filter2));
|
||||
), filter2, false, false));
|
||||
}
|
||||
|
||||
private NoxiousGhoul(final NoxiousGhoul card) {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public final class ObsidianBattleAxe extends CardImpl {
|
|||
// Whenever a Warrior creature enters the battlefield, you may attach Obsidian Battle-Axe to it.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||
filter, true, SetTargetPointer.PERMANENT, null));
|
||||
filter, true, SetTargetPointer.PERMANENT));
|
||||
// Equip {3}
|
||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3), new TargetControlledCreaturePermanent(), false));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,17 @@
|
|||
|
||||
package mage.cards.o;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.constants.*;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -25,15 +19,6 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
|
|||
*/
|
||||
public final class OgreBattledriver extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final String rule = "Whenever another creature enters the battlefield under your control, that creature gets +2/+0 and gains haste until end of turn.";
|
||||
|
||||
public OgreBattledriver(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
|
||||
this.subtype.add(SubType.OGRE);
|
||||
|
|
@ -43,8 +28,11 @@ public final class OgreBattledriver extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, that creature gets +2/+0 and gains haste until end of turn.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 0, Duration.EndOfTurn), filter, false, SetTargetPointer.PERMANENT, rule, true);
|
||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new BoostTargetEffect(2, 0, Duration.EndOfTurn).setText("that creature gets +2/+0"),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT);
|
||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText("and gains haste until end of turn"));
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public final class OliviaMobilizedForWar extends CardImpl {
|
|||
effect.setText("and it becomes a Vampire in addition to its other types");
|
||||
doIfCostPaid.addEffect(effect);
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, doIfCostPaid,
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT, null));
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private OliviaMobilizedForWar(final OliviaMobilizedForWar card) {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public final class OnduSpiritdancer extends CardImpl {
|
|||
// Whenever an enchantment enters the battlefield under your control, you may create a token that's a copy of it. Do this only once each turn.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect().setText("create a token that's a copy of it"),
|
||||
StaticFilters.FILTER_PERMANENT_ENCHANTMENT, true, SetTargetPointer.PERMANENT, null
|
||||
StaticFilters.FILTER_PERMANENT_ENCHANTMENT, true, SetTargetPointer.PERMANENT
|
||||
).setDoOnlyOnceEachTurn(true).setTriggerPhrase("Whenever an enchantment enters the battlefield under your control, "));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ public final class OrchardWarden extends CardImpl {
|
|||
this.toughness = new MageInt(6);
|
||||
|
||||
// Whenever another Treefolk creature enters the battlefield under your control, you may gain life equal to that creature's toughness.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new OrchardWardenffect(), filter, true, SetTargetPointer.PERMANENT, ""));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new OrchardWardenffect(), filter, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private OrchardWarden(final OrchardWarden card) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
package mage.cards.o;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterArtifactPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -16,12 +15,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class OvalchaseDaredevil extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterArtifactPermanent("an artifact");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
}
|
||||
|
||||
public OvalchaseDaredevil(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
|
|
@ -30,9 +23,9 @@ public final class OvalchaseDaredevil extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever an artifact enters the battlefield under your control, you may return Ovalchase Daredevil from your graveyard to your hand.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), filter,
|
||||
true, SetTargetPointer.NONE, null, true
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), StaticFilters.FILTER_PERMANENT_ARTIFACT,
|
||||
true, SetTargetPointer.NONE
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.o;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -11,8 +10,6 @@ import mage.constants.SetTargetPointer;
|
|||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledLandPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -31,9 +28,8 @@ public final class Overburden extends CardImpl {
|
|||
new ReturnToHandChosenPermanentEffect(RETURN_FILTER),
|
||||
StaticFilters.FILTER_CREATURE_NON_TOKEN,
|
||||
false,
|
||||
SetTargetPointer.PLAYER,
|
||||
"Whenever a player puts a nontoken creature onto the battlefield,"
|
||||
+ " that player returns a land they control to its owner's hand."));
|
||||
SetTargetPointer.PLAYER
|
||||
).setTriggerPhrase("Whenever a player puts a nontoken creature onto the battlefield, "));
|
||||
}
|
||||
|
||||
private Overburden(final Overburden card) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public final class Paleoloth extends CardImpl {
|
|||
this.toughness = new MageInt(5);
|
||||
|
||||
// Whenever another creature with power 5 or greater enters the battlefield under your control, you may return target creature card from your graveyard to your hand.
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), filter, true, rule);
|
||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), filter, true);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE));
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public final class Pandemonium extends CardImpl {
|
|||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new PandemoniumEffect(),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||
false, SetTargetPointer.PERMANENT, ""
|
||||
false, SetTargetPointer.PERMANENT
|
||||
);
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
ability.setTargetAdjuster(PandemoniumAdjuster.instance);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public final class PathOfDiscovery extends CardImpl {
|
|||
// Whenever a creature enters the battlefield under your control, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on the creature, then put the card back or put it into your graveyard.)
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new ExploreTargetEffect(),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT, null));
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
|
|
@ -18,18 +15,18 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
public final class PiousEvangel extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterCreaturePermanent("{this} or another creature");
|
||||
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("another permanent");
|
||||
|
||||
static {
|
||||
|
|
@ -46,7 +43,8 @@ public final class PiousEvangel extends CardImpl {
|
|||
this.secondSideCardClazz = mage.cards.w.WaywardDisciple.class;
|
||||
|
||||
// Whenever Pious Evangel or another creature enters the battlefield under your control, you gain 1 life.
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new GainLifeEffect(1), filter));
|
||||
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new GainLifeEffect(1),
|
||||
StaticFilters.FILTER_PERMANENT_CREATURE, false, true));
|
||||
|
||||
// {2}, {T}, Sacrifice another permanent: Transform Pious Evangel.
|
||||
this.addAbility(new TransformAbility());
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -25,8 +24,6 @@ public final class PoisonbellyOgre extends CardImpl {
|
|||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final String RULE = "Whenever another creature enters the battlefield, its controller loses 1 life.";
|
||||
|
||||
public PoisonbellyOgre(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
|
||||
this.subtype.add(SubType.OGRE);
|
||||
|
|
@ -35,8 +32,9 @@ public final class PoisonbellyOgre extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever another creature enters the battlefield, its controller loses 1 life.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), filter, false, SetTargetPointer.PLAYER, RULE, false));
|
||||
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new LoseLifeTargetEffect(1).setText("its controller loses 1 life"),
|
||||
filter, false, SetTargetPointer.PLAYER));
|
||||
}
|
||||
|
||||
private PoisonbellyOgre(final PoisonbellyOgre card) {
|
||||
|
|
|
|||
|
|
@ -1,44 +1,30 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*
|
||||
*/
|
||||
public final class PollutedBonds extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a land");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.OPPONENT.getControllerPredicate());
|
||||
}
|
||||
|
||||
public PollutedBonds(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
|
||||
|
||||
// Whenever a land enters the battlefield under an opponent's control, that player loses 2 life and you gain 2 life.
|
||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new LoseLifeTargetEffect(2),
|
||||
filter,
|
||||
false,
|
||||
SetTargetPointer.PLAYER,
|
||||
"Whenever a land enters the battlefield under an opponent's control, that player loses 2 life and you gain 2 life.");
|
||||
ability.addEffect(new GainLifeEffect(2));
|
||||
Ability ability = new EntersBattlefieldOpponentTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new LoseLifeTargetEffect(2), StaticFilters.FILTER_LAND_A, false, SetTargetPointer.PLAYER);
|
||||
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public final class Portcullis extends CardImpl {
|
|||
String rule = "Whenever a creature enters the battlefield, if there are two or more other creatures on the battlefield, exile that creature.";
|
||||
String rule2 = " Return that card to the battlefield under its owner's control when {this} leaves the battlefield.";
|
||||
TriggeredAbility ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new PortcullisExileEffect(),
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT, rule);
|
||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT);
|
||||
MoreThanXCreaturesOnBFCondition condition = new MoreThanXCreaturesOnBFCondition(2);
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, condition, rule + rule2));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
|
|
@ -58,11 +57,8 @@ public final class PrestonTheVanisher extends CardImpl {
|
|||
effect.setOnlyColor(ObjectColor.WHITE);
|
||||
effect.setOnlySubType(SubType.ILLUSION);
|
||||
effect.setText("create a token that's a copy of that creature, except it's a 0/1 white Illusion");
|
||||
this.addAbility(
|
||||
new EntersBattlefieldCastTriggeredAbility(Zone.BATTLEFIELD, effect, triggerFilter, false, false,
|
||||
SetTargetPointer.PERMANENT, null,
|
||||
true));
|
||||
|
||||
this.addAbility(new EntersBattlefieldCastTriggeredAbility(Zone.BATTLEFIELD, effect, triggerFilter,
|
||||
false, SetTargetPointer.PERMANENT, false));
|
||||
// {1}{W}, Sacrifice five Illusions: Exile target nonland permanent.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(),
|
||||
new ManaCostsImpl<>("{1}{W}"));
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -13,6 +12,7 @@ import mage.constants.Duration;
|
|||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||
|
||||
|
|
@ -29,8 +29,6 @@ public final class PrimalForcemage extends CardImpl {
|
|||
filter.add(AnotherPredicate.instance);
|
||||
}
|
||||
|
||||
private static final String rule = "Whenever another creature enters the battlefield under your control, that creature gets +3/+3 until end of turn.";
|
||||
|
||||
public PrimalForcemage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
||||
this.subtype.add(SubType.ELF);
|
||||
|
|
@ -39,10 +37,10 @@ public final class PrimalForcemage extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, that creature gets +3/+3 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new BoostTargetEffect(3, 3, Duration.EndOfTurn),
|
||||
filter, false, SetTargetPointer.PERMANENT, rule, true));
|
||||
new BoostTargetEffect(3, 3, Duration.EndOfTurn).setText("that creature gets +3/+3 until end of turn"),
|
||||
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private PrimalForcemage(final PrimalForcemage card) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
|
@ -18,6 +17,7 @@ import mage.constants.SetTargetPointer;
|
|||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
|
@ -53,8 +53,8 @@ public final class PrisonTerm extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAttackActivateAttachedEffect()));
|
||||
|
||||
// Whenever a creature enters the battlefield under an opponent's control, you may attach Prison Term to that creature.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new PrisonTermEffect(), filter, true, SetTargetPointer.PERMANENT, "Whenever a creature enters the battlefield under an opponent's control, you may attach Prison Term to that creature."));
|
||||
this.addAbility(new EntersBattlefieldOpponentTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new PrisonTermEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE, true, SetTargetPointer.PERMANENT));
|
||||
}
|
||||
|
||||
private PrisonTerm(final PrisonTerm card) {
|
||||
|
|
@ -69,8 +69,9 @@ public final class PrisonTerm extends CardImpl {
|
|||
|
||||
class PrisonTermEffect extends OneShotEffect {
|
||||
|
||||
public PrisonTermEffect() {
|
||||
PrisonTermEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "attach {this} to that creature";
|
||||
}
|
||||
|
||||
private PrisonTermEffect(final PrisonTermEffect effect) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package mage.cards.q;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.costs.common.DiscardCardCost;
|
||||
import mage.abilities.effects.common.DoIfCostPaid;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
|
|
@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -27,8 +27,9 @@ public final class QuicksmithGenius extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever an artifact enters the battlefield under your control, you may discard a card. If you do, draw a card.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), new FilterControlledArtifactPermanent("an artifact"), false, null, true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()),
|
||||
StaticFilters.FILTER_PERMANENT_ARTIFACT, false));
|
||||
}
|
||||
|
||||
private QuicksmithGenius(final QuicksmithGenius card) {
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public final class RampagingFerocidon extends CardImpl {
|
|||
|
||||
// Whenever another creature enters the battlefield, Rampaging Ferocidon deals 1 damage to that creature's controller.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "that creature's controller"), filter, false, SetTargetPointer.PLAYER, ""));
|
||||
Zone.BATTLEFIELD, new DamageTargetEffect(1, true, "that creature's controller"), filter, false, SetTargetPointer.PLAYER));
|
||||
}
|
||||
|
||||
private RampagingFerocidon(final RampagingFerocidon card) {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,13 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.game.permanent.token.TreefolkShamanToken;
|
||||
|
|
@ -20,12 +18,7 @@ import mage.game.permanent.token.TreefolkShamanToken;
|
|||
*/
|
||||
public final class ReachOfBranches extends CardImpl {
|
||||
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
|
||||
|
||||
static {
|
||||
filter.add(TargetController.YOU.getControllerPredicate());
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "a Forest");
|
||||
|
||||
public ReachOfBranches(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{4}{G}");
|
||||
|
|
@ -33,8 +26,10 @@ public final class ReachOfBranches extends CardImpl {
|
|||
|
||||
// Create a 2/5 green Treefolk Shaman creature token.
|
||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new TreefolkShamanToken()));
|
||||
|
||||
// Whenever a Forest enters the battlefield under your control, you may return Reach of Branches from your graveyard to your hand.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), filter, true, "", true));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.GRAVEYARD,
|
||||
new ReturnSourceFromGraveyardToHandEffect(), filter, true));
|
||||
}
|
||||
|
||||
private ReachOfBranches(final ReachOfBranches card) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -11,7 +10,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -27,9 +26,8 @@ public final class RecklessFireweaver extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever an artifact enters the battlefield under your control, Reckless Fireweaver deals 1 damage to each opponent.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new DamagePlayersEffect(1, TargetController.OPPONENT),
|
||||
new FilterControlledArtifactPermanent(), false,
|
||||
"Whenever an artifact enters the battlefield under your control, Reckless Fireweaver deals 1 damage to each opponent."));
|
||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DamagePlayersEffect(1, TargetController.OPPONENT),
|
||||
StaticFilters.FILTER_PERMANENT_ARTIFACT, false));
|
||||
}
|
||||
|
||||
private RecklessFireweaver(final RecklessFireweaver card) {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue