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,
|
Zone.BATTLEFIELD,
|
||||||
new DamageTargetEffect(2).setText("{this} deals 2 damage to it"),
|
new DamageTargetEffect(2).setText("{this} deals 2 damage to it"),
|
||||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||||
false, SetTargetPointer.PERMANENT, null));
|
false, SetTargetPointer.PERMANENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AetherFlash(final AetherFlash card) {
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AjanisChosenEffect(), filter,
|
Zone.BATTLEFIELD, new AjanisChosenEffect(), filter,
|
||||||
false, SetTargetPointer.PERMANENT, null));
|
false, SetTargetPointer.PERMANENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AjanisChosen(final AjanisChosen card) {
|
private AjanisChosen(final AjanisChosen card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.MillCardsEachPlayerEffect;
|
import mage.abilities.effects.common.MillCardsEachPlayerEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -27,8 +27,8 @@ public final class AltarOfTheBrood extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
|
||||||
|
|
||||||
// Whenever another permanent enters the battlefield under your control, each opponent mills a card.
|
// Whenever another permanent enters the battlefield under your control, each opponent mills a card.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new MillCardsEachPlayerEffect(1, TargetController.OPPONENT), filter, false, null, true));
|
new MillCardsEachPlayerEffect(1, TargetController.OPPONENT), filter, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AltarOfTheBrood(final AltarOfTheBrood card) {
|
private AltarOfTheBrood(final AltarOfTheBrood card) {
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,8 @@ public final class AuraShards extends CardImpl {
|
||||||
// Whenever a creature enters the battlefield under your control,
|
// Whenever a creature enters the battlefield under your control,
|
||||||
// you may destroy target artifact or enchantment.
|
// you may destroy target artifact or enchantment.
|
||||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new DestroyTargetEffect(), StaticFilters.FILTER_PERMANENT_CREATURE, true,
|
new DestroyTargetEffect(), StaticFilters.FILTER_PERMANENT_CREATURE, true
|
||||||
"Whenever a creature enters the battlefield under your control, "
|
);
|
||||||
+ "you may destroy target artifact or enchantment");
|
|
||||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.abilities.effects.common.PermanentsEnterBattlefieldTappedEffect;
|
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)));
|
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.
|
// Whenever a creature enters the battlefield under an opponent's control, you gain 1 life.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldOpponentTriggeredAbility(
|
||||||
new GainLifeEffect(1), StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURES,
|
new GainLifeEffect(1), StaticFilters.FILTER_PERMANENT_A_CREATURE, false
|
||||||
"Whenever a creature enters the battlefield under an opponent's control, you gain 1 life."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -29,12 +28,10 @@ import mage.game.permanent.token.Token;
|
||||||
*/
|
*/
|
||||||
public final class BaruFistOfKrosa extends CardImpl {
|
public final class BaruFistOfKrosa extends CardImpl {
|
||||||
|
|
||||||
private static final FilterLandPermanent forestFilter = new FilterLandPermanent("Forest");
|
private static final FilterLandPermanent forestFilter = new FilterLandPermanent(SubType.FOREST, "a Forest");
|
||||||
private static final FilterCreaturePermanent greenCreatureFilter = new FilterCreaturePermanent("green creatures you control");
|
private static final FilterCreaturePermanent greenCreatureFilter = new FilterCreaturePermanent("green creatures");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
forestFilter.add(SubType.FOREST.getPredicate());
|
|
||||||
greenCreatureFilter.add(TargetController.YOU.getControllerPredicate());
|
|
||||||
greenCreatureFilter.add(new ColorPredicate(ObjectColor.GREEN));
|
greenCreatureFilter.add(new ColorPredicate(ObjectColor.GREEN));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -47,8 +44,10 @@ public final class BaruFistOfKrosa extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
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.
|
// 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 ability = new EntersBattlefieldAllTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, greenCreatureFilter)
|
||||||
ability.addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), 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);
|
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.
|
// 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;
|
package mage.cards.b;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.TapTargetEffect;
|
import mage.abilities.effects.common.TapTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -37,7 +36,7 @@ public final class BindingMummy extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever another Zombie enters the battlefield under your control, you may tap target artifact or creature.
|
// 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));
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE));
|
||||||
this.addAbility(ability);
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new BrainstealerDragonLifeEffect(), filter,
|
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 {
|
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 {
|
static {
|
||||||
filter.add(TokenPredicate.FALSE);
|
filter.add(TokenPredicate.FALSE);
|
||||||
|
|
@ -45,9 +45,7 @@ public final class BrambleSovereign extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new DoIfCostPaid(new BrambleSovereignEffect(), new ManaCostsImpl<>("{1}{G}")),
|
new DoIfCostPaid(new BrambleSovereignEffect(), new ManaCostsImpl<>("{1}{G}")),
|
||||||
filter, false, SetTargetPointer.PERMANENT,
|
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."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,7 +63,7 @@ class BrambleSovereignEffect extends OneShotEffect {
|
||||||
|
|
||||||
BrambleSovereignEffect() {
|
BrambleSovereignEffect() {
|
||||||
super(Outcome.PutCardInPlay);
|
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) {
|
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}.
|
// Whenever a creature enters the battlefield, you lose 1 life and add {B}.
|
||||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeSourceControllerEffect(1),
|
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 effect = new AddManaToManaPoolSourceControllerEffect(Mana.BlackMana(1));
|
||||||
effect.setText("and add {B}.");
|
effect.setText("and add {B}.");
|
||||||
ability.addEffect(effect);
|
ability.addEffect(effect);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import mage.MageInt;
|
||||||
import mage.MageObjectReference;
|
import mage.MageObjectReference;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
|
import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
|
||||||
import mage.abilities.costs.common.DiscardCardCost;
|
import mage.abilities.costs.common.DiscardCardCost;
|
||||||
import mage.abilities.effects.AsThoughEffectImpl;
|
import mage.abilities.effects.AsThoughEffectImpl;
|
||||||
|
|
@ -15,8 +15,7 @@ import mage.cards.Card;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.util.CardUtil;
|
import mage.util.CardUtil;
|
||||||
|
|
@ -127,7 +126,6 @@ class ChainerNightmareAdeptWatcher extends Watcher {
|
||||||
}
|
}
|
||||||
morMap.computeIfAbsent(event.getAdditionalReference().getApprovingMageObjectReference(), m -> new HashMap<>())
|
morMap.computeIfAbsent(event.getAdditionalReference().getApprovingMageObjectReference(), m -> new HashMap<>())
|
||||||
.compute(event.getPlayerId(), (u, i) -> i == null ? 0 : Integer.sum(i, -1));
|
.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
|
private static final ContinuousEffect gainHasteUntilNextTurnEffect
|
||||||
= new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.UntilYourNextTurn);
|
= 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() {
|
ChainerNightmareAdeptTriggeredAbility() {
|
||||||
super(Zone.BATTLEFIELD, gainHasteUntilNextTurnEffect, filter, false,
|
super(Zone.BATTLEFIELD, gainHasteUntilNextTurnEffect, StaticFilters.FILTER_CREATURE_NON_TOKEN, false,
|
||||||
SetTargetPointer.PERMANENT, abilityText);
|
SetTargetPointer.PERMANENT);
|
||||||
this.addWatcher(new CastFromHandWatcher());
|
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) {
|
private ChainerNightmareAdeptTriggeredAbility(final ChainerNightmareAdeptTriggeredAbility effect) {
|
||||||
|
|
@ -188,11 +178,9 @@ class ChainerNightmareAdeptTriggeredAbility extends EntersBattlefieldAllTriggere
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
public boolean checkTrigger(GameEvent event, Game game) {
|
||||||
if (!super.checkTrigger(event, game)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
CastFromHandWatcher watcher = game.getState().getWatcher(CastFromHandWatcher.class);
|
CastFromHandWatcher watcher = game.getState().getWatcher(CastFromHandWatcher.class);
|
||||||
return watcher != null && !watcher.spellWasCastFromHand(event.getTargetId());
|
return watcher != null && !watcher.spellWasCastFromHand(event.getTargetId())
|
||||||
|
&& super.checkTrigger(event, game);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package mage.cards.c;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.RestrictionEffect;
|
import mage.abilities.effects.RestrictionEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
|
|
@ -10,8 +10,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
|
||||||
|
|
@ -22,13 +21,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class ChampionOfLambholt extends CardImpl {
|
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) {
|
public ChampionOfLambholt(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
|
|
@ -41,8 +33,9 @@ public final class ChampionOfLambholt extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ChampionOfLambholtEffect()));
|
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.
|
// 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) {
|
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.
|
// Whenever a Rogue creature enters the battlefield, you may attach Cloak and Dagger to it.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||||
filter, true, SetTargetPointer.PERMANENT, null));
|
filter, true, SetTargetPointer.PERMANENT));
|
||||||
// Equip {3}
|
// Equip {3}
|
||||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3), new TargetControlledCreaturePermanent(), false));
|
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3), new TargetControlledCreaturePermanent(), false));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -26,14 +26,13 @@ public final class CloudstoneCurio extends CardImpl {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.not(CardType.ARTIFACT.getPredicate()));
|
filter.add(Predicates.not(CardType.ARTIFACT.getPredicate()));
|
||||||
filter.add(TargetController.YOU.getControllerPredicate());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CloudstoneCurio(UUID ownerId, CardSetInfo setInfo) {
|
public CloudstoneCurio(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
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.
|
// 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.
|
// 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(
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new ConfoundingConundrumEffect(), filter,
|
Zone.BATTLEFIELD, new ConfoundingConundrumEffect(), filter,
|
||||||
false, SetTargetPointer.PLAYER, ""
|
false, SetTargetPointer.PLAYER
|
||||||
), ConfoundingConundrumCondition.instance, "Whenever a land enters the battlefield under " +
|
), ConfoundingConundrumCondition.instance, "Whenever a land enters the battlefield under " +
|
||||||
"an opponent's control, if that player had another land enter the battlefield " +
|
"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."
|
"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. "
|
+ "another player controls that shares a card type with it. "
|
||||||
+ "Exchange control of those permanents"
|
+ "Exchange control of those permanents"
|
||||||
),
|
),
|
||||||
filter, false, SetTargetPointer.PERMANENT, null
|
filter, false, SetTargetPointer.PERMANENT
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetPermanent());
|
ability.addTarget(new TargetPermanent());
|
||||||
ability.setTargetAdjuster(ConfusionInTheRanksAdjuster.instance);
|
ability.setTargetAdjuster(ConfusionInTheRanksAdjuster.instance);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.TapTargetEffect;
|
import mage.abilities.effects.common.TapTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -37,7 +37,7 @@ public final class CourtStreetDenizen extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever another white creature enters the battlefield under your control, tap target creature an opponent controls.
|
// 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));
|
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
|
||||||
this.addAbility(ability);
|
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.
|
// library and the rest on the bottom of your library in any order.
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new CreamOfTheCropEffect(),
|
Zone.BATTLEFIELD, new CreamOfTheCropEffect(),
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE, true, SetTargetPointer.PERMANENT,
|
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."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CreamOfTheCrop(final CreamOfTheCrop card) {
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
new CreateTokenEffect(new ZombieDecayedToken()),
|
new CreateTokenEffect(new ZombieDecayedToken()).setText("you create a 2/2 black Zombie creature token with decayed."),
|
||||||
filter, "Whenever a land enters the battlefield under enchanted player's control, " +
|
filter
|
||||||
"you create a 2/2 black Zombie creature token with decayed."
|
).setTriggerPhrase("Whenever a land enters the battlefield under enchanted player's control, "));
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CurseOfTheRestlessDead(final CurseOfTheRestlessDead card) {
|
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.
|
// 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.
|
// 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(),
|
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.addTarget(new TargetCreaturePermanent());
|
||||||
ability.setTargetAdjuster(DeathMatchAdjuster.instance);
|
ability.setTargetAdjuster(DeathMatchAdjuster.instance);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
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.
|
// Whenever another Warrior enters the battlefield under your team's control, put a +1/+1 counter on Decorated Champion.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter,
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter
|
||||||
"Whenever another Warrior enters the battlefield under your team's control,"
|
).setTriggerPhrase("Whenever another Warrior enters the battlefield under your team's control, "));
|
||||||
+ " put a +1/+1 counter on {this}"
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DecoratedChampion(final DecoratedChampion card) {
|
private DecoratedChampion(final DecoratedChampion card) {
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,28 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
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.DrawCardTargetEffect;
|
||||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.TargetPlayer;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jeffwadsworth
|
* @author jeffwadsworth
|
||||||
*/
|
*/
|
||||||
public final class DireUndercurrents extends CardImpl {
|
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 FilterCreaturePermanent filterBlue = new FilterCreaturePermanent("a blue creature");
|
||||||
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 FilterCreaturePermanent filterBlack = new FilterCreaturePermanent("a black creature");
|
||||||
|
|
||||||
private static final FilterControlledPermanent filterBlue = new FilterControlledCreaturePermanent();
|
|
||||||
private static final FilterControlledPermanent filterBlack = new FilterControlledCreaturePermanent();
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filterBlue.add(new ColorPredicate(ObjectColor.BLUE));
|
filterBlue.add(new ColorPredicate(ObjectColor.BLUE));
|
||||||
|
|
@ -36,14 +32,14 @@ public final class DireUndercurrents extends CardImpl {
|
||||||
public DireUndercurrents(UUID ownerId, CardSetInfo setInfo) {
|
public DireUndercurrents(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U/B}{U/B}");
|
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.
|
// 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());
|
ability.addTarget(new TargetPlayer());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Whenever a black creature enters the battlefield under your control, you may have target player discard a card.
|
// 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());
|
ability2.addTarget(new TargetPlayer());
|
||||||
this.addAbility(ability2);
|
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.
|
// Whenever a Wizard creature enters the battlefield, you may attach Diviner's Wand to it.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||||
filter, true, SetTargetPointer.PERMANENT, null));
|
filter, true, SetTargetPointer.PERMANENT));
|
||||||
|
|
||||||
// Equip {3}
|
// Equip {3}
|
||||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3), false));
|
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)));
|
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.
|
// 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) {
|
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)));
|
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.
|
// 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) {
|
private DragonFangs(final DragonFangs card) {
|
||||||
|
|
@ -94,4 +94,3 @@ class DragonFangsEffect extends OneShotEffect {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public final class DragonScales extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA)));
|
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.
|
// 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) {
|
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)));
|
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.
|
// 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) {
|
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.
|
// 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 effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||||
effect.setText("it gains haste until end of turn");
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||||
|
|
@ -45,8 +45,7 @@ public final class DragonTempest extends CardImpl {
|
||||||
new DragonTempestDamageEffect(),
|
new DragonTempestDamageEffect(),
|
||||||
new FilterCreaturePermanent(SubType.DRAGON, "a Dragon"),
|
new FilterCreaturePermanent(SubType.DRAGON, "a Dragon"),
|
||||||
false,
|
false,
|
||||||
SetTargetPointer.NONE,
|
SetTargetPointer.NONE
|
||||||
""
|
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ public final class DragonWings extends CardImpl {
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{1}{U}")));
|
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.
|
// 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) {
|
private DragonWings(final DragonWings card) {
|
||||||
|
|
@ -96,4 +96,3 @@ class DragonWingsEffect extends OneShotEffect {
|
||||||
return false;
|
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.
|
// Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new DualNatureCreateTokenEffect(), filter, false, SetTargetPointer.PERMANENT,
|
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."
|
|
||||||
));
|
));
|
||||||
|
|
||||||
// Whenever a nontoken creature leaves the battlefield, exile all tokens with the same name as that creature.
|
// 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"),
|
.setText("put a +1/+1 counter on that creature"),
|
||||||
new GenericManaCost(1)
|
new GenericManaCost(1)
|
||||||
), StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
), 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.
|
// {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
|
// 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.
|
// 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) {
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new DoIfCostPaid(new EmielTheBlessedEffect(), new ManaCostsImpl<>("{G/W}")),
|
Zone.BATTLEFIELD, new DoIfCostPaid(new EmielTheBlessedEffect(), new ManaCostsImpl<>("{G/W}")),
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT,
|
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."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -62,6 +60,7 @@ class EmielTheBlessedEffect extends OneShotEffect {
|
||||||
|
|
||||||
EmielTheBlessedEffect() {
|
EmielTheBlessedEffect() {
|
||||||
super(Outcome.Benefit);
|
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) {
|
private EmielTheBlessedEffect(final EmielTheBlessedEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class EssenceWarden extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield, you gain 1 life.
|
// 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) {
|
private EssenceWarden(final EssenceWarden card) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.StringTokenizer;
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
|
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
|
@ -13,25 +11,20 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.cards.Cards;
|
import mage.cards.Cards;
|
||||||
import mage.cards.CardsImpl;
|
import mage.cards.CardsImpl;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.targetpointer.FixedTarget;
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
||||||
|
import java.util.StringTokenizer;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class FaerieArtisans extends CardImpl {
|
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) {
|
public FaerieArtisans(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
||||||
|
|
||||||
|
|
@ -44,8 +37,8 @@ public final class FaerieArtisans extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
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.
|
// 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,
|
Ability ability = new EntersBattlefieldOpponentTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
"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}.");
|
new FaerieArtisansEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class FlameKinWarScout extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new FlameKinWarScourEffect(),
|
Zone.BATTLEFIELD, new FlameKinWarScourEffect(),
|
||||||
StaticFilters.FILTER_ANOTHER_CREATURE, false,
|
StaticFilters.FILTER_ANOTHER_CREATURE, false,
|
||||||
SetTargetPointer.PERMANENT, null
|
SetTargetPointer.PERMANENT
|
||||||
));
|
));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -18,8 +17,6 @@ import mage.constants.Outcome;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.targetpointer.FixedTarget;
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
@ -34,12 +31,10 @@ public final class FlameshadowConjuring extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new FlameshadowConjuringEffect(), new ManaCostsImpl<>("{R}"), "Pay {R} to create a token that's a copy of that creature that entered the battlefield?"),
|
new DoIfCostPaid(new FlameshadowConjuringEffect(), new ManaCostsImpl<>("{R}"),
|
||||||
StaticFilters.FILTER_CONTROLLED_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT,
|
"Pay {R} to create a token that's a copy of that creature that entered the battlefield?"),
|
||||||
"Whenever a nontoken creature enters the battlefield under your control, "
|
StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT);
|
||||||
+ "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.");
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package mage.cards.f;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -36,7 +36,8 @@ public final class FoundryStreetDenizen extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
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.
|
// 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) {
|
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.
|
// * 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(
|
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"),
|
new ModeChoiceSourceCondition("Dragons"),
|
||||||
ruleTrigger2);
|
ruleTrigger2);
|
||||||
ability2.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_CREATURE_YOU_DONT_CONTROL));
|
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.
|
// Whenever a creature enters the battlefield under an opponent's control, Gamorrean Prison Guard fights that creature.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
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.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.permanent.token.MyrToken;
|
import mage.game.permanent.token.MyrToken;
|
||||||
|
|
@ -30,7 +28,7 @@ public final class GenesisChamber extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
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.
|
// 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,
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability,
|
||||||
SourceUntappedCondition.instance,
|
SourceUntappedCondition.instance,
|
||||||
"Whenever a nontoken creature enters the battlefield, "
|
"Whenever a nontoken creature enters the battlefield, "
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -14,7 +13,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterArtifactPermanent;
|
import mage.filter.common.FilterArtifactPermanent;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
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");
|
private static final FilterPermanent filter = new FilterArtifactPermanent("another artifact");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(TargetController.YOU.getControllerPredicate());
|
|
||||||
filter.add(AnotherPredicate.instance);
|
filter.add(AnotherPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -40,9 +37,8 @@ public final class GlassdustHulk extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
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.
|
// 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,
|
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).setText("and can't be blocked this turn"));
|
||||||
ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn));
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{W/U}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{W/U}")));
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public final class GoblinAssassin extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
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.
|
// 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) {
|
private GoblinAssassin(final GoblinAssassin card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -12,7 +11,7 @@ import mage.constants.SubType;
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,26 +20,23 @@ import mage.filter.predicate.mageobject.PowerPredicate;
|
||||||
*/
|
*/
|
||||||
public final class GodtrackerOfJund extends CardImpl {
|
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 {
|
static {
|
||||||
filter.add(new PowerPredicate(ComparisonType.MORE_THAN, 4));
|
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) {
|
public GodtrackerOfJund(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{G}");
|
||||||
this.subtype.add(SubType.ELF);
|
this.subtype.add(SubType.ELF);
|
||||||
this.subtype.add(SubType.SHAMAN);
|
this.subtype.add(SubType.SHAMAN);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = 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.
|
// 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) {
|
private GodtrackerOfJund(final GodtrackerOfJund card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -28,8 +27,8 @@ public final class GoldnightCommander extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield under your control, creatures you control get +1/+1 until end of turn.
|
// 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,
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new BoostControlledEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
new BoostControlledEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private GoldnightCommander(final GoldnightCommander card) {
|
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.
|
// Whenever another creature enters the battlefield under your control, put a +1/+1 counter on that creature.
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT,
|
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."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ public final class GravePeril extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}");
|
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.
|
// 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) {
|
private GravePeril(final GravePeril card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -31,8 +30,8 @@ public final class GriffinProtector extends CardImpl {
|
||||||
this.addAbility(FlyingAbility.getInstance());
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield under your control, Griffin Protector gets +1/+1 until end of turn.
|
// 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),
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn),
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
StaticFilters.FILTER_ANOTHER_CREATURE, false));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,11 +39,10 @@ public final class HalanaKessigRanger extends CardImpl {
|
||||||
this.addAbility(ReachAbility.getInstance());
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
Zone.BATTLEFIELD, new DoIfCostPaid(new HalanaKessigRangerTriggerEffect(), new GenericManaCost(2)),
|
new DoIfCostPaid(new HalanaKessigRangerTriggerEffect(), new GenericManaCost(2))
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT,
|
.setText("you may pay {2}. When you do, that creature deals damage equal to its power to target creature."),
|
||||||
"Whenever another creature enters the battlefield under your control, you may pay {2}. " +
|
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||||
"When you do, that creature deals damage equal to its power to target creature."
|
|
||||||
));
|
));
|
||||||
|
|
||||||
// Partner
|
// Partner
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -27,8 +26,8 @@ public final class HealerOfThePride extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield under your control, you gain 2 life.
|
// Whenever another creature enters the battlefield under your control, you gain 2 life.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2),
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2),
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
StaticFilters.FILTER_ANOTHER_CREATURE, false));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
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)));
|
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.
|
// 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"),
|
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||||
filter, true, SetTargetPointer.PERMANENT, null, true));
|
filter, true, SetTargetPointer.PERMANENT));
|
||||||
|
|
||||||
// Equip {4}
|
// Equip {4}
|
||||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(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.
|
// 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,
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter, false,
|
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));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private HungryDragonsnake(final HungryDragonsnake card) {
|
private HungryDragonsnake(final HungryDragonsnake card) {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class IcebergCancrix extends CardImpl {
|
public final class IcebergCancrix extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent();
|
private static final FilterPermanent filter = new FilterPermanent("another snow permanent");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new MillCardsTargetEffect(2), filter,
|
Zone.BATTLEFIELD, new MillCardsTargetEffect(2), filter, true
|
||||||
true, "Whenever another snow permanent enters the battlefield under your control, " +
|
|
||||||
"you may have target player mill two cards."
|
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addTarget(new TargetPlayer());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
|
|
||||||
package mage.cards.i;
|
package mage.cards.i;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
|
|
@ -11,32 +9,22 @@ import mage.abilities.effects.common.continuous.ControlEnchantedEffect;
|
||||||
import mage.abilities.keyword.EnchantAbility;
|
import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.SubType;
|
import mage.filter.StaticFilters;
|
||||||
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.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class IllusoryGains extends CardImpl {
|
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) {
|
public IllusoryGains(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
|
||||||
this.subtype.add(SubType.AURA);
|
this.subtype.add(SubType.AURA);
|
||||||
|
|
@ -52,8 +40,8 @@ public final class IllusoryGains extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect()));
|
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.
|
// Whenever a creature enters the battlefield under an opponent's control, attach Illusory Gains to that creature.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldOpponentTriggeredAbility(
|
||||||
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."));
|
Zone.BATTLEFIELD, new IllusoryGainsEffect(), StaticFilters.FILTER_PERMANENT_CREATURE, false, SetTargetPointer.PERMANENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private IllusoryGains(final IllusoryGains card) {
|
private IllusoryGains(final IllusoryGains card) {
|
||||||
|
|
@ -68,8 +56,9 @@ public final class IllusoryGains extends CardImpl {
|
||||||
|
|
||||||
class IllusoryGainsEffect extends OneShotEffect {
|
class IllusoryGainsEffect extends OneShotEffect {
|
||||||
|
|
||||||
public IllusoryGainsEffect() {
|
IllusoryGainsEffect() {
|
||||||
super(Outcome.Detriment);
|
super(Outcome.Detriment);
|
||||||
|
staticText = "attach {this} to that creature";
|
||||||
}
|
}
|
||||||
|
|
||||||
private IllusoryGainsEffect(final IllusoryGainsEffect effect) {
|
private IllusoryGainsEffect(final IllusoryGainsEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import mage.constants.Duration;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
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.
|
// 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 effect = new BoostTargetEffect(2,0, Duration.EndOfTurn);
|
||||||
effect.setText("it gets +2/+0");
|
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 = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||||
effect.setText("and gains haste until end of turn");
|
effect.setText("and gains haste until end of turn");
|
||||||
ability.addEffect(effect);
|
ability.addEffect(effect);
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ public final class InallaArchmageRitualist extends CardImpl {
|
||||||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||||
new EntersBattlefieldControlledTriggeredAbility(Zone.ALL, new DoIfCostPaid(
|
new EntersBattlefieldControlledTriggeredAbility(Zone.ALL, new DoIfCostPaid(
|
||||||
new InallaArchmageRitualistEffect(), new ManaCostsImpl<>("{1}"), "Pay {1} to create a token copy?"),
|
new InallaArchmageRitualistEffect(), new ManaCostsImpl<>("{1}"), "Pay {1} to create a token copy?"),
|
||||||
filter, false, SetTargetPointer.PERMANENT, ""),
|
filter, false, SetTargetPointer.PERMANENT),
|
||||||
SourceOnBattlefieldOrCommandZoneCondition.instance,
|
SourceOnBattlefieldOrCommandZoneCondition.instance,
|
||||||
"Whenever another nontoken Wizard enters the battlefield under your control, "
|
"Whenever another nontoken Wizard enters the battlefield under your control, "
|
||||||
+ "{this} is in the command zone or on the battlefield, "
|
+ "{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.
|
// Whenever an Artificer enters the battlefield under your control, you may attach Inventor's Goggles to it.
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "attach {this} to it"),
|
Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "attach {this} to it"),
|
||||||
filter, true, SetTargetPointer.PERMANENT, null
|
filter, true, SetTargetPointer.PERMANENT
|
||||||
));
|
));
|
||||||
|
|
||||||
// Equip {2}
|
// Equip {2}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -38,10 +38,10 @@ public final class IvyLaneDenizen extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// Whenever another green creature enters the battlefield under your control, put a +1/+1 counter on target creature.
|
// 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,
|
Zone.BATTLEFIELD,
|
||||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||||
filter, false, null, true);
|
filter, false);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,6 @@ import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -23,12 +21,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class JuniperOrderRanger extends CardImpl {
|
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) {
|
public JuniperOrderRanger(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false,
|
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT
|
||||||
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}."
|
|
||||||
);
|
);
|
||||||
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);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import mage.constants.SubType;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.filter.common.FilterNonlandPermanent;
|
import mage.filter.common.FilterNonlandPermanent;
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||||
new TapTargetEffect(), filter, "Whenever a token enters the battlefield " +
|
new TapTargetEffect(), StaticFilters.FILTER_PERMANENT_TOKEN
|
||||||
"under your control, tap target nonland permanent an opponent controls. " +
|
|
||||||
"It doesn't untap during its controller's next untap step."
|
|
||||||
);
|
);
|
||||||
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
|
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("It"));
|
||||||
ability.addTarget(new TargetPermanent(filter2));
|
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND));
|
||||||
this.addAbility(ability);
|
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.
|
// Whenever a creature with power 4 or greater enters the battlefield, its controller draws a card.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new DrawCardTargetEffect(1), filter, false, SetTargetPointer.PLAYER,
|
new DrawCardTargetEffect(1).setText("its controller draws a card"),
|
||||||
"Whenever a creature with power 4 or greater enters the battlefield, its controller draws a card."));
|
filter, false, SetTargetPointer.PLAYER
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private KavuLair(final KavuLair card) {
|
private KavuLair(final KavuLair card) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
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.BoostSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
|
|
@ -30,9 +29,11 @@ public final class KruinStriker extends CardImpl {
|
||||||
this.toughness = new MageInt(1);
|
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.
|
// 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,
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||||
"Whenever another creature enters the battlefield under your control, Kruin Striker gets +1/+0 and gains trample until end of turn.");
|
new BoostSourceEffect(1, 0, Duration.EndOfTurn).setText("{this} gets +1/+0"),
|
||||||
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
|
StaticFilters.FILTER_ANOTHER_CREATURE);
|
||||||
|
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn).
|
||||||
|
setText("and gains trample until end of turn"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public final class LethalVapors extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new DestroyTargetEffect().setText("destroy it"),
|
new DestroyTargetEffect().setText("destroy it"),
|
||||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
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.
|
// {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}"));
|
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.
|
// Whenever another creature enters the battlefield under your control, Llanowar Stalker gets +1/+0 until end of turn.
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
new BoostSourceEffect(1, 0, Duration.EndOfTurn),
|
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 java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.SacrificeXTargetCost;
|
import mage.abilities.costs.common.SacrificeXTargetCost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
|
@ -12,8 +12,8 @@ import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.keyword.InvestigateEffect;
|
import mage.abilities.effects.keyword.InvestigateEffect;
|
||||||
import mage.cards.*;
|
import mage.cards.*;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.common.FilterPermanentCard;
|
import mage.filter.common.FilterPermanentCard;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
|
|
@ -30,7 +30,7 @@ import mage.target.common.TargetOpponent;
|
||||||
*/
|
*/
|
||||||
public final class LonisCryptozoologist extends CardImpl {
|
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");
|
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent(SubType.CLUE, "Clues");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -49,7 +49,7 @@ public final class LonisCryptozoologist extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever another nontoken creature enters the battlefield under your control, investigate.
|
// 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.
|
// {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.
|
// 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.
|
// 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,
|
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) {
|
private ManaEchoes(final ManaEchoes card) {
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,8 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreatureCard;
|
import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
|
||||||
|
|
@ -26,11 +24,6 @@ import java.util.UUID;
|
||||||
public final class MaraudingRaptor extends CardImpl {
|
public final class MaraudingRaptor extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCreatureCard("creature spells");
|
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) {
|
public MaraudingRaptor(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new MaraudingRaptorEffect(),
|
Zone.BATTLEFIELD, new MaraudingRaptorEffect(),
|
||||||
filter2, false, SetTargetPointer.PERMANENT,
|
StaticFilters.FILTER_ANOTHER_CREATURE, 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."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,6 +56,7 @@ class MaraudingRaptorEffect extends OneShotEffect {
|
||||||
|
|
||||||
MaraudingRaptorEffect() {
|
MaraudingRaptorEffect() {
|
||||||
super(Outcome.Benefit);
|
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) {
|
private MaraudingRaptorEffect(final MaraudingRaptorEffect effect) {
|
||||||
|
|
@ -88,4 +79,4 @@ class MaraudingRaptorEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
|
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
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.
|
// 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 effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(2));
|
||||||
effect.setText("you may put two +1/+1 counters on it");
|
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) {
|
private MightyEmergence(final MightyEmergence card) {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class MiirymSentinelWyrm extends CardImpl {
|
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 {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true),
|
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true).setIsntLegendary(true)
|
||||||
filter, false, SetTargetPointer.PERMANENT, "Whenever another nontoken Dragon " +
|
.setText("create a token that's a copy of it, except the token isn't legendary"),
|
||||||
"enters the battlefield under your control, create a token that's a copy of it, " +
|
filter, false, SetTargetPointer.PERMANENT
|
||||||
"except the token isn't legendary."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.targetpointer.FixedTarget;
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
@ -37,7 +35,7 @@ public final class MinionReflector extends CardImpl {
|
||||||
new MinionReflectorEffect(), new ManaCostsImpl<>("{2}"), "Pay {2} " +
|
new MinionReflectorEffect(), new ManaCostsImpl<>("{2}"), "Pay {2} " +
|
||||||
"to create a token that's a copy of that creature that entered the battlefield?"
|
"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.Outcome;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterPermanent;
|
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.permanent.TokenPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new MirrorMarchEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN, false, SetTargetPointer.PERMANENT,
|
Zone.BATTLEFIELD, new MirrorMarchEffect(), StaticFilters.FILTER_CREATURE_NON_TOKEN,
|
||||||
"Whenever a nontoken creature enters the battlefield under your control, " +
|
false, SetTargetPointer.PERMANENT
|
||||||
"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."
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -51,6 +45,9 @@ class MirrorMarchEffect extends OneShotEffect {
|
||||||
|
|
||||||
MirrorMarchEffect() {
|
MirrorMarchEffect() {
|
||||||
super(Outcome.Benefit);
|
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) {
|
private MirrorMarchEffect(final MirrorMarchEffect effect) {
|
||||||
|
|
@ -86,4 +83,4 @@ class MirrorMarchEffect extends OneShotEffect {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public final class Mirrorworks extends CardImpl {
|
||||||
Effect effect = new DoIfCostPaid(new CreateTokenCopyTargetEffect(true),
|
Effect effect = new DoIfCostPaid(new CreateTokenCopyTargetEffect(true),
|
||||||
new ManaCostsImpl<>("{2}"), "Create a token that's a copy of that artifact?");
|
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");
|
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) {
|
private Mirrorworks(final Mirrorworks card) {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.SacrificeSourceEffect;
|
import mage.abilities.effects.common.SacrificeSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -13,7 +12,6 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.TargetPlayer;
|
|
||||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,8 +19,6 @@ import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||||
* @author jeffwadsworth
|
* @author jeffwadsworth
|
||||||
*/
|
*/
|
||||||
public final class MoggBombers extends CardImpl {
|
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) {
|
public MoggBombers(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||||
|
|
@ -32,15 +28,9 @@ public final class MoggBombers extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// When another creature enters the battlefield, sacrifice Mogg Bombers and it deals 3 damage to target player.
|
// When another creature enters the battlefield, sacrifice Mogg Bombers and it deals 3 damage to target player.
|
||||||
Effect sacrificeMoggBombers = new SacrificeSourceEffect();
|
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
Effect damageTargetPlayer = new DamageTargetEffect(3);
|
new SacrificeSourceEffect(), StaticFilters.FILTER_ANOTHER_CREATURE, false);
|
||||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
ability.addEffect(new DamageTargetEffect(3, "it").concatBy("and"));
|
||||||
Zone.BATTLEFIELD,
|
|
||||||
sacrificeMoggBombers,
|
|
||||||
StaticFilters.FILTER_ANOTHER_CREATURE,
|
|
||||||
false,
|
|
||||||
rule);
|
|
||||||
ability.addEffect(damageTargetPlayer);
|
|
||||||
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,8 @@ public final class MoltenEchoes extends CardImpl {
|
||||||
filter.add(ChosenSubtypePredicate.TRUE);
|
filter.add(ChosenSubtypePredicate.TRUE);
|
||||||
|
|
||||||
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new MoltenEchoesEffect(),
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new MoltenEchoesEffect(),
|
||||||
filter, false, SetTargetPointer.PERMANENT,
|
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.");
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,4 +93,3 @@ class MoltenEchoesEffect extends OneShotEffect {
|
||||||
return false;
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new SacrificeSourceEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
Zone.BATTLEFIELD, new SacrificeSourceEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||||
false, SetTargetPointer.PERMANENT, null
|
false, SetTargetPointer.PERMANENT
|
||||||
).setTriggerPhrase("When a creature enters the battlefield, ");
|
).setTriggerPhrase("When a creature enters the battlefield, ");
|
||||||
ability.addEffect(new MonkeyCageEffect());
|
ability.addEffect(new MonkeyCageEffect());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.n;
|
package mage.cards.n;
|
||||||
|
|
||||||
import java.util.UUID;
|
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.
|
// Whenever a player puts an Island or blue permanent onto the battlefield, they sacrifice an Island or blue permanent.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new SacrificeEffect(filterBlue, 1, ""),
|
new SacrificeEffect(filterBlue, 1, "that player"),
|
||||||
filterBlue,
|
filterBlue,
|
||||||
false, SetTargetPointer.PLAYER,
|
false, SetTargetPointer.PLAYER
|
||||||
"Whenever a player puts an Island or blue permanent onto the battlefield, they sacrifice an Island or blue permanent."));
|
).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.
|
// Whenever a player puts a Swamp or black permanent onto the battlefield, they sacrifice a Swamp or black permanent.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new SacrificeEffect(filterBlack, 1, ""),
|
new SacrificeEffect(filterBlack, 1, "that player"),
|
||||||
filterBlack,
|
filterBlack,
|
||||||
false, SetTargetPointer.PLAYER,
|
false, SetTargetPointer.PLAYER
|
||||||
"Whenever a player puts a Swamp or black permanent onto the battlefield, they sacrifice a Swamp or black permanent."));
|
).setTriggerPhrase("Whenever a player puts a Swamp or black permanent onto the battlefield, "));
|
||||||
}
|
}
|
||||||
|
|
||||||
private NaturesWrath(final NaturesWrath card) {
|
private NaturesWrath(final NaturesWrath card) {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class Necroduality extends CardImpl {
|
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 {
|
static {
|
||||||
filter.add(TokenPredicate.FALSE);
|
filter.add(TokenPredicate.FALSE);
|
||||||
|
|
@ -29,11 +29,9 @@ public final class Necroduality extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
|
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.
|
// Whenever a nontoken Zombie enters the battlefield under your control, create a token that's a copy of that creature.
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect(true), filter, false,
|
new CreateTokenCopyTargetEffect(true).setText("create a token that's a copy of that creature"),
|
||||||
SetTargetPointer.PERMANENT, "Whenever a nontoken Zombie enters the battlefield " +
|
filter, false, SetTargetPointer.PERMANENT));
|
||||||
"under your control, create a token that's a copy of that creature."
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Necroduality(final Necroduality card) {
|
private Necroduality(final Necroduality card) {
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@ package mage.cards.n;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
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.LoseLifeTargetEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterLandPermanent;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -18,12 +18,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class NightshadeHarvester extends CardImpl {
|
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) {
|
public NightshadeHarvester(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
|
|
||||||
|
|
@ -33,10 +27,9 @@ public final class NightshadeHarvester extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldOpponentTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), filter, false,
|
Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), StaticFilters.FILTER_LAND_A, false,
|
||||||
SetTargetPointer.PLAYER, "Whenever a land enters the battlefield under an opponent's control, " +
|
SetTargetPointer.PLAYER
|
||||||
"that player loses 1 life. Put a +1/+1 counter on {this}."
|
|
||||||
);
|
);
|
||||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
||||||
this.addAbility(ability);
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldThisOrAnotherTriggeredAbility(new BoostAllEffect(
|
||||||
-1, -1, Duration.EndOfTurn, filter, false
|
-1, -1, Duration.EndOfTurn, filter, false
|
||||||
), filter2));
|
), filter2, false, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private NoxiousGhoul(final NoxiousGhoul card) {
|
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.
|
// Whenever a Warrior creature enters the battlefield, you may attach Obsidian Battle-Axe to it.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
Zone.BATTLEFIELD, new AttachEffect(Outcome.Detriment, "attach {this} to it"),
|
||||||
filter, true, SetTargetPointer.PERMANENT, null));
|
filter, true, SetTargetPointer.PERMANENT));
|
||||||
// Equip {3}
|
// Equip {3}
|
||||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3), new TargetControlledCreaturePermanent(), false));
|
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(3), new TargetControlledCreaturePermanent(), false));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,23 @@
|
||||||
|
|
||||||
package mage.cards.o;
|
package mage.cards.o;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
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.BoostTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||||
import mage.abilities.keyword.HasteAbility;
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.SubType;
|
import mage.filter.StaticFilters;
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.SetTargetPointer;
|
import java.util.UUID;
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jeffwadsworth
|
* @author jeffwadsworth
|
||||||
*/
|
*/
|
||||||
public final class OgreBattledriver extends CardImpl {
|
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) {
|
public OgreBattledriver(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}{R}");
|
||||||
|
|
@ -43,8 +28,11 @@ public final class OgreBattledriver extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
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.
|
// 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 ability = new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
|
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);
|
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");
|
effect.setText("and it becomes a Vampire in addition to its other types");
|
||||||
doIfCostPaid.addEffect(effect);
|
doIfCostPaid.addEffect(effect);
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, doIfCostPaid,
|
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) {
|
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.
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new CreateTokenCopyTargetEffect().setText("create a token that's a copy of it"),
|
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, "));
|
).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);
|
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.
|
// 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) {
|
private OrchardWarden(final OrchardWarden card) {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
package mage.cards.o;
|
package mage.cards.o;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterArtifactPermanent;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -16,12 +15,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class OvalchaseDaredevil extends CardImpl {
|
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) {
|
public OvalchaseDaredevil(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
|
|
@ -30,9 +23,9 @@ public final class OvalchaseDaredevil extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
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.
|
// Whenever an artifact enters the battlefield under your control, you may return Ovalchase Daredevil from your graveyard to your hand.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), filter,
|
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), StaticFilters.FILTER_PERMANENT_ARTIFACT,
|
||||||
true, SetTargetPointer.NONE, null, true
|
true, SetTargetPointer.NONE
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.o;
|
package mage.cards.o;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -11,8 +10,6 @@ import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledLandPermanent;
|
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),
|
new ReturnToHandChosenPermanentEffect(RETURN_FILTER),
|
||||||
StaticFilters.FILTER_CREATURE_NON_TOKEN,
|
StaticFilters.FILTER_CREATURE_NON_TOKEN,
|
||||||
false,
|
false,
|
||||||
SetTargetPointer.PLAYER,
|
SetTargetPointer.PLAYER
|
||||||
"Whenever a player puts a nontoken creature onto the battlefield,"
|
).setTriggerPhrase("Whenever a player puts a nontoken creature onto the battlefield, "));
|
||||||
+ " that player returns a land they control to its owner's hand."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Overburden(final Overburden card) {
|
private Overburden(final Overburden card) {
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ public final class Paleoloth extends CardImpl {
|
||||||
this.toughness = new MageInt(5);
|
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.
|
// 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));
|
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public final class Pandemonium extends CardImpl {
|
||||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
Ability ability = new EntersBattlefieldAllTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new PandemoniumEffect(),
|
Zone.BATTLEFIELD, new PandemoniumEffect(),
|
||||||
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||||
false, SetTargetPointer.PERMANENT, ""
|
false, SetTargetPointer.PERMANENT
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
ability.setTargetAdjuster(PandemoniumAdjuster.instance);
|
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.)
|
// 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(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new ExploreTargetEffect(),
|
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;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldThisOrAnotherTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
|
@ -18,18 +15,18 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class PiousEvangel extends CardImpl {
|
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");
|
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("another permanent");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
@ -46,7 +43,8 @@ public final class PiousEvangel extends CardImpl {
|
||||||
this.secondSideCardClazz = mage.cards.w.WaywardDisciple.class;
|
this.secondSideCardClazz = mage.cards.w.WaywardDisciple.class;
|
||||||
|
|
||||||
// Whenever Pious Evangel or another creature enters the battlefield under your control, you gain 1 life.
|
// 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.
|
// {2}, {T}, Sacrifice another permanent: Transform Pious Evangel.
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
|
|
@ -64,4 +62,4 @@ public final class PiousEvangel extends CardImpl {
|
||||||
public PiousEvangel copy() {
|
public PiousEvangel copy() {
|
||||||
return new PiousEvangel(this);
|
return new PiousEvangel(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -24,9 +23,7 @@ public final class PoisonbellyOgre extends CardImpl {
|
||||||
static {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
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) {
|
public PoisonbellyOgre(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{B}");
|
||||||
this.subtype.add(SubType.OGRE);
|
this.subtype.add(SubType.OGRE);
|
||||||
|
|
@ -35,8 +32,9 @@ public final class PoisonbellyOgre extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield, its controller loses 1 life.
|
// 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) {
|
private PoisonbellyOgre(final PoisonbellyOgre card) {
|
||||||
|
|
|
||||||
|
|
@ -1,44 +1,30 @@
|
||||||
|
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
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.GainLifeEffect;
|
||||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.common.FilterLandPermanent;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author jeffwadsworth
|
* @author jeffwadsworth
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public final class PollutedBonds extends CardImpl {
|
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) {
|
public PollutedBonds(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}{B}");
|
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.
|
// 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(
|
Ability ability = new EntersBattlefieldOpponentTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
Zone.BATTLEFIELD,
|
new LoseLifeTargetEffect(2), StaticFilters.FILTER_LAND_A, false, SetTargetPointer.PLAYER);
|
||||||
new LoseLifeTargetEffect(2),
|
ability.addEffect(new GainLifeEffect(2).concatBy("and"));
|
||||||
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));
|
|
||||||
this.addAbility(ability);
|
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 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.";
|
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(),
|
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);
|
MoreThanXCreaturesOnBFCondition condition = new MoreThanXCreaturesOnBFCondition(2);
|
||||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, condition, rule + rule2));
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, condition, rule + rule2));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -58,11 +57,8 @@ public final class PrestonTheVanisher extends CardImpl {
|
||||||
effect.setOnlyColor(ObjectColor.WHITE);
|
effect.setOnlyColor(ObjectColor.WHITE);
|
||||||
effect.setOnlySubType(SubType.ILLUSION);
|
effect.setOnlySubType(SubType.ILLUSION);
|
||||||
effect.setText("create a token that's a copy of that creature, except it's a 0/1 white Illusion");
|
effect.setText("create a token that's a copy of that creature, except it's a 0/1 white Illusion");
|
||||||
this.addAbility(
|
this.addAbility(new EntersBattlefieldCastTriggeredAbility(Zone.BATTLEFIELD, effect, triggerFilter,
|
||||||
new EntersBattlefieldCastTriggeredAbility(Zone.BATTLEFIELD, effect, triggerFilter, false, false,
|
false, SetTargetPointer.PERMANENT, false));
|
||||||
SetTargetPointer.PERMANENT, null,
|
|
||||||
true));
|
|
||||||
|
|
||||||
// {1}{W}, Sacrifice five Illusions: Exile target nonland permanent.
|
// {1}{W}, Sacrifice five Illusions: Exile target nonland permanent.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(),
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(),
|
||||||
new ManaCostsImpl<>("{1}{W}"));
|
new ManaCostsImpl<>("{1}{W}"));
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -13,6 +12,7 @@ import mage.constants.Duration;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
|
|
||||||
|
|
@ -29,8 +29,6 @@ public final class PrimalForcemage extends CardImpl {
|
||||||
filter.add(AnotherPredicate.instance);
|
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) {
|
public PrimalForcemage(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
||||||
this.subtype.add(SubType.ELF);
|
this.subtype.add(SubType.ELF);
|
||||||
|
|
@ -39,10 +37,10 @@ public final class PrimalForcemage extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield under your control, that creature gets +3/+3 until end of turn.
|
// 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,
|
Zone.BATTLEFIELD,
|
||||||
new BoostTargetEffect(3, 3, Duration.EndOfTurn),
|
new BoostTargetEffect(3, 3, Duration.EndOfTurn).setText("that creature gets +3/+3 until end of turn"),
|
||||||
filter, false, SetTargetPointer.PERMANENT, rule, true));
|
StaticFilters.FILTER_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PrimalForcemage(final PrimalForcemage card) {
|
private PrimalForcemage(final PrimalForcemage card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.p;
|
package mage.cards.p;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldOpponentTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
|
|
@ -18,6 +17,7 @@ import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
|
@ -53,8 +53,8 @@ public final class PrisonTerm extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAttackActivateAttachedEffect()));
|
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.
|
// Whenever a creature enters the battlefield under an opponent's control, you may attach Prison Term to that creature.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldOpponentTriggeredAbility(
|
||||||
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."));
|
Zone.BATTLEFIELD, new PrisonTermEffect(), StaticFilters.FILTER_PERMANENT_A_CREATURE, true, SetTargetPointer.PERMANENT));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PrisonTerm(final PrisonTerm card) {
|
private PrisonTerm(final PrisonTerm card) {
|
||||||
|
|
@ -69,8 +69,9 @@ public final class PrisonTerm extends CardImpl {
|
||||||
|
|
||||||
class PrisonTermEffect extends OneShotEffect {
|
class PrisonTermEffect extends OneShotEffect {
|
||||||
|
|
||||||
public PrisonTermEffect() {
|
PrisonTermEffect() {
|
||||||
super(Outcome.Detriment);
|
super(Outcome.Detriment);
|
||||||
|
staticText = "attach {this} to that creature";
|
||||||
}
|
}
|
||||||
|
|
||||||
private PrisonTermEffect(final PrisonTermEffect effect) {
|
private PrisonTermEffect(final PrisonTermEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package mage.cards.q;
|
package mage.cards.q;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.costs.common.DiscardCardCost;
|
import mage.abilities.costs.common.DiscardCardCost;
|
||||||
import mage.abilities.effects.common.DoIfCostPaid;
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
|
|
@ -10,7 +10,7 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -27,8 +27,9 @@ public final class QuicksmithGenius extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
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.
|
// Whenever an artifact enters the battlefield under your control, you may discard a card. If you do, draw a card.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
Zone.BATTLEFIELD, new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()), new FilterControlledArtifactPermanent("an artifact"), false, null, true));
|
new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new DiscardCardCost()),
|
||||||
|
StaticFilters.FILTER_PERMANENT_ARTIFACT, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private QuicksmithGenius(final QuicksmithGenius card) {
|
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.
|
// Whenever another creature enters the battlefield, Rampaging Ferocidon deals 1 damage to that creature's controller.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
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) {
|
private RampagingFerocidon(final RampagingFerocidon card) {
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
|
|
||||||
package mage.cards.r;
|
package mage.cards.r;
|
||||||
|
|
||||||
import java.util.UUID;
|
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.CreateTokenEffect;
|
||||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.common.FilterLandPermanent;
|
import mage.filter.common.FilterLandPermanent;
|
||||||
import mage.game.permanent.token.TreefolkShamanToken;
|
import mage.game.permanent.token.TreefolkShamanToken;
|
||||||
|
|
@ -20,12 +18,7 @@ import mage.game.permanent.token.TreefolkShamanToken;
|
||||||
*/
|
*/
|
||||||
public final class ReachOfBranches extends CardImpl {
|
public final class ReachOfBranches extends CardImpl {
|
||||||
|
|
||||||
private static final FilterLandPermanent filter = new FilterLandPermanent("a Forest");
|
private static final FilterLandPermanent filter = new FilterLandPermanent(SubType.FOREST, "a Forest");
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(TargetController.YOU.getControllerPredicate());
|
|
||||||
filter.add(SubType.FOREST.getPredicate());
|
|
||||||
}
|
|
||||||
|
|
||||||
public ReachOfBranches(UUID ownerId, CardSetInfo setInfo) {
|
public ReachOfBranches(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{4}{G}");
|
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.
|
// Create a 2/5 green Treefolk Shaman creature token.
|
||||||
this.getSpellAbility().addEffect(new CreateTokenEffect(new TreefolkShamanToken()));
|
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.
|
// 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) {
|
private ReachOfBranches(final ReachOfBranches card) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.r;
|
package mage.cards.r;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.DamagePlayersEffect;
|
import mage.abilities.effects.common.DamagePlayersEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
|
@ -11,7 +10,7 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
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);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// Whenever an artifact enters the battlefield under your control, Reckless Fireweaver deals 1 damage to each opponent.
|
// 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),
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, new DamagePlayersEffect(1, TargetController.OPPONENT),
|
||||||
new FilterControlledArtifactPermanent(), false,
|
StaticFilters.FILTER_PERMANENT_ARTIFACT, false));
|
||||||
"Whenever an artifact enters the battlefield under your control, Reckless Fireweaver deals 1 damage to each opponent."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private RecklessFireweaver(final RecklessFireweaver card) {
|
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