mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
Fix text [CHK] [BOK] [SOK] (#10355)
* Fix text: duplicate ("you control") in Champion ability * New static filter "artifacts and enchantments" * Text fixes [CHK] [BOK] [SOK] * Fix Genju text without breaking the effect this time
This commit is contained in:
parent
a7c3cb9797
commit
5c8b5f23bb
48 changed files with 91 additions and 113 deletions
|
@ -17,7 +17,7 @@ import mage.filter.common.FilterCreaturePermanent;
|
||||||
*/
|
*/
|
||||||
public final class CallToGlory extends CardImpl {
|
public final class CallToGlory extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Samurai creatures");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SubType.SAMURAI.getPredicate());
|
filter.add(SubType.SAMURAI.getPredicate());
|
||||||
|
@ -26,8 +26,8 @@ public final class CallToGlory extends CardImpl {
|
||||||
public CallToGlory(UUID ownerId, CardSetInfo setInfo) {
|
public CallToGlory(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
|
||||||
|
|
||||||
//Untap all creatures you control. Samurai creatures you control get +1/+1 until end of turn.
|
// Untap all creatures you control. Samurai creatures you control get +1/+1 until end of turn.
|
||||||
this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE));
|
this.getSpellAbility().addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURES));
|
||||||
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, false));
|
this.getSpellAbility().addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterArtifactOrEnchantmentPermanent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -15,9 +14,6 @@ import mage.filter.common.FilterArtifactOrEnchantmentPermanent;
|
||||||
*/
|
*/
|
||||||
public final class CleansingNova extends CardImpl {
|
public final class CleansingNova extends CardImpl {
|
||||||
|
|
||||||
private static final FilterArtifactOrEnchantmentPermanent filter
|
|
||||||
= new FilterArtifactOrEnchantmentPermanent("artifacts and enchantments");
|
|
||||||
|
|
||||||
public CleansingNova(UUID ownerId, CardSetInfo setInfo) {
|
public CleansingNova(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}");
|
||||||
|
|
||||||
|
@ -26,7 +22,7 @@ public final class CleansingNova extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
|
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||||
|
|
||||||
// • Destroy all artifacts and enchantments.
|
// • Destroy all artifacts and enchantments.
|
||||||
Mode mode = new Mode(new DestroyAllEffect(filter));
|
Mode mode = new Mode(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS));
|
||||||
this.getSpellAbility().getModes().addMode(mode);
|
this.getSpellAbility().getModes().addMode(mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterArtifactOrEnchantmentPermanent;
|
import mage.filter.common.FilterArtifactOrEnchantmentPermanent;
|
||||||
import mage.filter.predicate.permanent.ControllerIdPredicate;
|
import mage.filter.predicate.permanent.ControllerIdPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
@ -25,9 +26,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class DismantlingWave extends CardImpl {
|
public final class DismantlingWave extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter
|
|
||||||
= new FilterArtifactOrEnchantmentPermanent("artifacts and enchantments");
|
|
||||||
|
|
||||||
public DismantlingWave(UUID ownerId, CardSetInfo setInfo) {
|
public DismantlingWave(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{W}");
|
||||||
|
|
||||||
|
@ -41,7 +39,7 @@ public final class DismantlingWave extends CardImpl {
|
||||||
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{6}{W}{W}")));
|
this.addAbility(new CyclingAbility(new ManaCostsImpl<>("{6}{W}{W}")));
|
||||||
|
|
||||||
// When you cycle Dismantling Wave, destroy all artifacts and enchantments.
|
// When you cycle Dismantling Wave, destroy all artifacts and enchantments.
|
||||||
this.addAbility(new CycleTriggeredAbility(new DestroyAllEffect(filter)));
|
this.addAbility(new CycleTriggeredAbility(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DismantlingWave(final DismantlingWave card) {
|
private DismantlingWave(final DismantlingWave card) {
|
||||||
|
|
|
@ -10,7 +10,6 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.targetpointer.FixedTarget;
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
||||||
|
@ -79,6 +78,6 @@ class EbonyOwlNetsukeTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "At the beginning of each opponent's upkeep, if that player has seven or more cards in hand, {this} deals 4 damage to that player";
|
return "At the beginning of each opponent's upkeep, if that player has seven or more cards in hand, {this} deals 4 damage to that player.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ public final class EnshrinedMemories extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{G}");
|
||||||
|
|
||||||
// Reveal the top X cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
// Reveal the top X cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order.
|
||||||
this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(ManacostVariableValue.REGULAR, StaticFilters.FILTER_CARD_CREATURE, Zone.LIBRARY, true));
|
this.getSpellAbility().addEffect(new RevealLibraryPutIntoHandEffect(ManacostVariableValue.REGULAR, StaticFilters.FILTER_CARD_CREATURES, Zone.LIBRARY, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private EnshrinedMemories(final EnshrinedMemories card) {
|
private EnshrinedMemories(final EnshrinedMemories card) {
|
||||||
|
|
|
@ -6,7 +6,7 @@ import mage.abilities.effects.common.ExileAllEffect;
|
||||||
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.filter.common.FilterCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -18,7 +18,7 @@ public final class FinalJudgment extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{4}{W}{W}");
|
||||||
|
|
||||||
// Exile all creatures.
|
// Exile all creatures.
|
||||||
this.getSpellAbility().addEffect(new ExileAllEffect(new FilterCreaturePermanent()));
|
this.getSpellAbility().addEffect(new ExileAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FinalJudgment(final FinalJudgment card) {
|
private FinalJudgment(final FinalJudgment card) {
|
||||||
|
|
|
@ -44,7 +44,7 @@ class FlamesOfTheBloodHandReplacementEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
public FlamesOfTheBloodHandReplacementEffect() {
|
public FlamesOfTheBloodHandReplacementEffect() {
|
||||||
super(Duration.EndOfTurn, Outcome.Benefit);
|
super(Duration.EndOfTurn, Outcome.Benefit);
|
||||||
staticText = "If that player would gain life this turn, that player gains no life instead";
|
staticText = "If that player or that planeswalker's controller would gain life this turn, that player gains no life instead";
|
||||||
}
|
}
|
||||||
|
|
||||||
public FlamesOfTheBloodHandReplacementEffect(final FlamesOfTheBloodHandReplacementEffect effect) {
|
public FlamesOfTheBloodHandReplacementEffect(final FlamesOfTheBloodHandReplacementEffect effect) {
|
||||||
|
|
|
@ -12,8 +12,7 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.Predicates;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -21,14 +20,6 @@ import mage.filter.predicate.Predicates;
|
||||||
*/
|
*/
|
||||||
public final class FountainWatch extends CardImpl {
|
public final class FountainWatch extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("Artifacts and Enchantments");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(Predicates.or(
|
|
||||||
CardType.ARTIFACT.getPredicate(),
|
|
||||||
CardType.ENCHANTMENT.getPredicate()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public FountainWatch(UUID ownerId, CardSetInfo setInfo) {
|
public FountainWatch(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
|
||||||
this.subtype.add(SubType.HUMAN);
|
this.subtype.add(SubType.HUMAN);
|
||||||
|
@ -37,7 +28,7 @@ public final class FountainWatch extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// Artifacts and enchantments you control have shroud.
|
// Artifacts and enchantments you control have shroud.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, filter, false)));
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FountainWatch(final FountainWatch card) {
|
private FountainWatch(final FountainWatch card) {
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
||||||
|
@ -44,7 +45,9 @@ public final class GenjuOfTheFalls extends CardImpl {
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
|
|
||||||
// When enchanted Island is put into a graveyard, you may return Genju of the Falls from your graveyard to your hand. TargetPermanent auraTarget = new TargetLandPermanent(filter);
|
// When enchanted Island is put into a graveyard, you may return Genju of the Falls from your graveyard to your hand. TargetPermanent auraTarget = new TargetLandPermanent(filter);
|
||||||
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Island", true, false);
|
Effect effect = new ReturnToHandSourceEffect(false, true);
|
||||||
|
effect.setText("you may return {this} from your graveyard to your hand");
|
||||||
|
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Island", true, false);
|
||||||
this.addAbility(ability3);
|
this.addAbility(ability3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import mage.abilities.common.DiesAttachedTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
||||||
|
@ -45,7 +46,9 @@ public final class GenjuOfTheFens extends CardImpl {
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
|
|
||||||
// When enchanted Swamp is put into a graveyard, you may return Genju of the Fens from your graveyard to your hand.
|
// When enchanted Swamp is put into a graveyard, you may return Genju of the Fens from your graveyard to your hand.
|
||||||
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Swamp", true, false);
|
Effect effect = new ReturnToHandSourceEffect(false, true);
|
||||||
|
effect.setText("you may return {this} from your graveyard to your hand");
|
||||||
|
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Swamp", true, false);
|
||||||
this.addAbility(ability3);
|
this.addAbility(ability3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,9 @@ public final class GenjuOfTheFields extends CardImpl {
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
|
|
||||||
// When enchanted Plains is put into a graveyard, you may return Genju of the Fields from your graveyard to your hand.
|
// When enchanted Plains is put into a graveyard, you may return Genju of the Fields from your graveyard to your hand.
|
||||||
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Plains", true, false);
|
Effect effect2 = new ReturnToHandSourceEffect(false, true);
|
||||||
|
effect2.setText("you may return {this} from your graveyard to your hand");
|
||||||
|
Ability ability3 = new DiesAttachedTriggeredAbility(effect2, "enchanted Plains", true, false);
|
||||||
this.addAbility(ability3);
|
this.addAbility(ability3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
||||||
|
@ -42,7 +43,9 @@ public final class GenjuOfTheRealm extends CardImpl {
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
|
|
||||||
// When enchanted land is put into a graveyard, you may return Genju of the Realm from your graveyard to your hand.
|
// When enchanted land is put into a graveyard, you may return Genju of the Realm from your graveyard to your hand.
|
||||||
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted land", true, false);
|
Effect effect = new ReturnToHandSourceEffect(false, true);
|
||||||
|
effect.setText("you may return {this} from your graveyard to your hand");
|
||||||
|
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted land", true, false);
|
||||||
this.addAbility(ability3);
|
this.addAbility(ability3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mage.abilities.Ability;
|
||||||
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
import mage.abilities.common.DiesAttachedTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
import mage.abilities.effects.common.continuous.BecomesCreatureAttachedWithActivatedAbilityOrSpellEffect;
|
||||||
|
@ -43,7 +44,9 @@ public final class GenjuOfTheSpires extends CardImpl {
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
|
|
||||||
// When enchanted Mountain is put into a graveyard, you may return Genju of the Spires from your graveyard to your hand.
|
// When enchanted Mountain is put into a graveyard, you may return Genju of the Spires from your graveyard to your hand.
|
||||||
Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandSourceEffect(false, true), "enchanted Mountain", true, false);
|
Effect effect = new ReturnToHandSourceEffect(false, true);
|
||||||
|
effect.setText("you may return {this} from your graveyard to your hand");
|
||||||
|
Ability ability3 = new DiesAttachedTriggeredAbility(effect, "enchanted Mountain", true, false);
|
||||||
this.addAbility(ability3);
|
this.addAbility(ability3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class Glitterfang extends CardImpl {
|
||||||
// Haste
|
// Haste
|
||||||
this.addAbility(HasteAbility.getInstance());
|
this.addAbility(HasteAbility.getInstance());
|
||||||
// At the beginning of the end step, return Glitterfang to its owner's hand.
|
// At the beginning of the end step, return Glitterfang to its owner's hand.
|
||||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.ANY, false));
|
this.addAbility(new BeginningOfEndStepTriggeredAbility(new ReturnToHandSourceEffect(true), TargetController.NEXT, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Glitterfang(final Glitterfang card) {
|
private Glitterfang(final Glitterfang card) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class HanabiBlast extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
|
||||||
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
this.getSpellAbility().addTarget(new TargetAnyTarget());
|
||||||
this.getSpellAbility().addEffect(ReturnToHandSpellEffect.getInstance());
|
this.getSpellAbility().addEffect(ReturnToHandSpellEffect.getInstance());
|
||||||
this.getSpellAbility().addEffect(new DiscardControllerEffect(1, true));
|
this.getSpellAbility().addEffect(new DiscardControllerEffect(1, true).concatBy(", then"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HanabiBlast (final HanabiBlast card) {
|
public HanabiBlast (final HanabiBlast card) {
|
||||||
|
|
|
@ -40,7 +40,7 @@ public final class HeedTheMists extends CardImpl {
|
||||||
|
|
||||||
public HeedTheMistsEffect() {
|
public HeedTheMistsEffect() {
|
||||||
super(Outcome.DrawCard);
|
super(Outcome.DrawCard);
|
||||||
staticText = "Mill a card, then draw cards equal to that card's mana value";
|
staticText = "Mill a card, then draw cards equal to the milled card's mana value";
|
||||||
}
|
}
|
||||||
|
|
||||||
public HeedTheMistsEffect(HeedTheMistsEffect effect) {
|
public HeedTheMistsEffect(HeedTheMistsEffect effect) {
|
||||||
|
@ -49,7 +49,6 @@ public final class HeedTheMists extends CardImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
boolean result = false;
|
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
int totalCMC = controller
|
int totalCMC = controller
|
||||||
.millCards(1, source, game)
|
.millCards(1, source, game)
|
||||||
|
|
|
@ -23,9 +23,11 @@ import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
public final class IizukaTheRuthless extends CardImpl {
|
public final class IizukaTheRuthless extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai");
|
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("Samurai");
|
||||||
|
private static final FilterControlledCreaturePermanent filter2 = new FilterControlledCreaturePermanent("Samurai creatures");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SubType.SAMURAI.getPredicate());
|
filter.add(SubType.SAMURAI.getPredicate());
|
||||||
|
filter2.add(SubType.SAMURAI.getPredicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
public IizukaTheRuthless(UUID ownerId, CardSetInfo setInfo) {
|
public IizukaTheRuthless(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
@ -38,7 +40,7 @@ public final class IizukaTheRuthless extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
this.addAbility(new BushidoAbility(2));
|
this.addAbility(new BushidoAbility(2));
|
||||||
// {2}{R}, Sacrifice a Samurai: Samurai creatures you control gain double strike until end of turn.
|
// {2}{R}, Sacrifice a Samurai: Samurai creatures you control gain double strike until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, filter, false), new ManaCostsImpl<>("{2}{R}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn, filter2, false), new ManaCostsImpl<>("{2}{R}"));
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true)));
|
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, true)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,7 @@ 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.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.Predicates;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -20,14 +19,6 @@ import mage.filter.predicate.Predicates;
|
||||||
*/
|
*/
|
||||||
public final class KalemnesCaptain extends CardImpl {
|
public final class KalemnesCaptain extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(Predicates.or(
|
|
||||||
CardType.ARTIFACT.getPredicate(),
|
|
||||||
CardType.ENCHANTMENT.getPredicate()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public KalemnesCaptain(UUID ownerId, CardSetInfo setInfo) {
|
public KalemnesCaptain(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{W}");
|
||||||
this.subtype.add(SubType.GIANT);
|
this.subtype.add(SubType.GIANT);
|
||||||
|
@ -42,7 +33,7 @@ public final class KalemnesCaptain extends CardImpl {
|
||||||
this.addAbility(new MonstrosityAbility("{5}{W}{W}", 3));
|
this.addAbility(new MonstrosityAbility("{5}{W}{W}", 3));
|
||||||
|
|
||||||
// When Kalemne's Captain becomes monstrous, exile all artifacts and enchantments.
|
// When Kalemne's Captain becomes monstrous, exile all artifacts and enchantments.
|
||||||
this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new ExileAllEffect(filter)));
|
this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new ExileAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private KalemnesCaptain(final KalemnesCaptain card) {
|
private KalemnesCaptain(final KalemnesCaptain card) {
|
||||||
|
|
|
@ -52,7 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
*/
|
*/
|
||||||
public final class KondasBanner extends CardImpl {
|
public final class KondasBanner extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("legendary creatures");
|
private static final FilterControlledCreaturePermanent legendaryFilter = new FilterControlledCreaturePermanent("legendary creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
legendaryFilter.add(SuperType.LEGENDARY.getPredicate());
|
legendaryFilter.add(SuperType.LEGENDARY.getPredicate());
|
||||||
|
|
|
@ -44,7 +44,7 @@ class ManaSeismEffect extends OneShotEffect {
|
||||||
|
|
||||||
public ManaSeismEffect() {
|
public ManaSeismEffect() {
|
||||||
super(Outcome.Neutral);
|
super(Outcome.Neutral);
|
||||||
staticText = "Sacrifice any number of lands. Add {C} for each land sacrificed this way";
|
staticText = "Sacrifice any number of lands, then add that much {C}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ManaSeismEffect(final ManaSeismEffect effect) {
|
public ManaSeismEffect(final ManaSeismEffect effect) {
|
||||||
|
|
|
@ -42,7 +42,7 @@ public final class MarkOfTheOni extends CardImpl {
|
||||||
// At the beginning of the end step, if you control no Demons, sacrifice Mark of the Oni.
|
// At the beginning of the end step, if you control no Demons, sacrifice Mark of the Oni.
|
||||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD,
|
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD,
|
||||||
new SacrificeSourceEffect(),
|
new SacrificeSourceEffect(),
|
||||||
TargetController.ANY,
|
TargetController.NEXT,
|
||||||
new PermanentsOnTheBattlefieldCondition(
|
new PermanentsOnTheBattlefieldCondition(
|
||||||
new FilterControlledCreaturePermanent(SubType.DEMON, "if you control no Demons"),
|
new FilterControlledCreaturePermanent(SubType.DEMON, "if you control no Demons"),
|
||||||
ComparisonType.FEWER_THAN, 1),
|
ComparisonType.FEWER_THAN, 1),
|
||||||
|
|
|
@ -48,10 +48,10 @@ public final class MyojinOfCleansingFire extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Cleansing Fire enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Cleansing Fire enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Cleansing Fire is indestructible as long as it has a divinity counter on it.
|
// Myojin of Cleansing Fire has indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it")));
|
||||||
// Remove a divinity counter from Myojin of Cleansing Fire: Destroy all other creatures.
|
// Remove a divinity counter from Myojin of Cleansing Fire: Destroy all other creatures.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(filter), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())));
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(filter), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())));
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,10 +42,10 @@ public final class MyojinOfInfiniteRage extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Infinite Rage enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Infinite Rage enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Infinite Rage is indestructible as long as it has a divinity counter on it.
|
// Myojin of Infinite Rage has indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it")));
|
||||||
// Remove a divinity counter from Myojin of Infinite Rage: Destroy all lands.
|
// Remove a divinity counter from Myojin of Infinite Rage: Destroy all lands.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(StaticFilters.FILTER_LANDS), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())));
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(StaticFilters.FILTER_LANDS), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance())));
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,11 +43,11 @@ public final class MyojinOfLifesWeb extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Life's Web enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Life's Web enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Life's Web is indestructible as long as it has a divinity counter on it.
|
// Myojin of Life's Web has indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it")));
|
||||||
// Remove a divinity counter from Myojin of Life's Web: Put any number of creature cards from your hand onto the battlefield.
|
// Remove a divinity counter from Myojin of Life's Web: Put any number of creature cards from your hand onto the battlefield.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyojinOfLifesWebPutCreatureOnBattlefieldEffect(), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyojinOfLifesWebPutCreatureOnBattlefieldEffect(), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
||||||
|
|
||||||
|
|
|
@ -40,10 +40,10 @@ public final class MyojinOfNightsReach extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Night's Reach enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Night's Reach enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Night's Reach is indestructible as long as it has a divinity counter on it.
|
// Myojin of Night's Reach has indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it")));
|
||||||
// Remove a divinity counter from Myojin of Night's Reach: Each opponent discards their hand.
|
// Remove a divinity counter from Myojin of Night's Reach: Each opponent discards their hand.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyojinOfNightsReachEffect(), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MyojinOfNightsReachEffect(), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -45,10 +45,10 @@ public final class MyojinOfSeeingWinds extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Seeing Winds enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Seeing Winds enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourcePermanentCondition.instance, ""), "with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Seeing Winds is indestructible as long as it has a divinity counter on it.
|
// Myojin of Seeing Winds has indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} has indestructible as long as it has a divinity counter on it")));
|
||||||
// Remove a divinity counter from Myojin of Seeing Winds: Draw a card for each permanent you control.
|
// Remove a divinity counter from Myojin of Seeing Winds: Draw a card for each permanent you control.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -11,8 +11,7 @@ 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.FilterControlledLandPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterLandPermanent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -24,10 +23,10 @@ public final class NaturesWill extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}");
|
||||||
|
|
||||||
// Whenever one or more creatures you control deal combat damage to a player, tap all lands that player controls and untap all lands you control.
|
// Whenever one or more creatures you control deal combat damage to a player, tap all lands that player controls and untap all lands you control.
|
||||||
Effect tapAllEffect = new TapAllTargetPlayerControlsEffect(new FilterLandPermanent());
|
Effect tapAllEffect = new TapAllTargetPlayerControlsEffect(StaticFilters.FILTER_LANDS);
|
||||||
tapAllEffect.setText("tap all lands that player controls");
|
tapAllEffect.setText("tap all lands that player controls");
|
||||||
Ability ability = new DealCombatDamageControlledTriggeredAbility(Zone.BATTLEFIELD, tapAllEffect, true);
|
Ability ability = new DealCombatDamageControlledTriggeredAbility(Zone.BATTLEFIELD, tapAllEffect, true);
|
||||||
ability.addEffect(new UntapAllEffect(new FilterControlledLandPermanent()));
|
ability.addEffect(new UntapAllEffect(StaticFilters.FILTER_CONTROLLED_PERMANENT_LANDS).concatBy("and"));
|
||||||
addAbility(ability);
|
addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ public final class PathOfAngersFlame extends CardImpl {
|
||||||
this.subtype.add(SubType.ARCANE);
|
this.subtype.add(SubType.ARCANE);
|
||||||
|
|
||||||
// Creatures you control get +2/+0 until end of turn.
|
// Creatures you control get +2/+0 until end of turn.
|
||||||
this.getSpellAbility().addEffect(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false));
|
this.getSpellAbility().addEffect(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PathOfAngersFlame(final PathOfAngersFlame card) {
|
private PathOfAngersFlame(final PathOfAngersFlame card) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ public final class PatronOfTheAkki extends CardImpl {
|
||||||
this.addAbility(new OfferingAbility(filter));
|
this.addAbility(new OfferingAbility(filter));
|
||||||
|
|
||||||
// Whenever Patron of the Akki attacks, creatures you control get +2/+0 until end of turn.
|
// Whenever Patron of the Akki attacks, creatures you control get +2/+0 until end of turn.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURE, false), false));
|
this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(2, 0, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES, false), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PatronOfTheAkki(final PatronOfTheAkki card) {
|
private PatronOfTheAkki(final PatronOfTheAkki card) {
|
||||||
|
|
|
@ -6,8 +6,7 @@ import mage.abilities.effects.common.DestroyAllEffect;
|
||||||
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.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.Predicates;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -15,20 +14,12 @@ import mage.filter.predicate.Predicates;
|
||||||
*/
|
*/
|
||||||
public final class Purify extends CardImpl {
|
public final class Purify extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(Predicates.or(
|
|
||||||
CardType.ARTIFACT.getPredicate(),
|
|
||||||
CardType.ENCHANTMENT.getPredicate()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Purify(UUID ownerId, CardSetInfo setInfo) {
|
public Purify(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{W}{W}");
|
||||||
|
|
||||||
|
|
||||||
// Destroy all artifacts and enchantments.
|
// Destroy all artifacts and enchantments.
|
||||||
this.getSpellAbility().addEffect(new DestroyAllEffect(filter));
|
this.getSpellAbility().addEffect(new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Purify(final Purify card) {
|
private Purify(final Purify card) {
|
||||||
|
|
|
@ -19,7 +19,7 @@ public final class ReduceToDreams extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
|
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{U}{U}");
|
||||||
|
|
||||||
// Return all artifacts and enchantments to their owners' hands.
|
// Return all artifacts and enchantments to their owners' hands.
|
||||||
this.getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
|
this.getSpellAbility().addEffect(new ReturnToHandFromBattlefieldAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ReduceToDreams(final ReduceToDreams card) {
|
private ReduceToDreams(final ReduceToDreams card) {
|
||||||
|
|
|
@ -19,7 +19,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class RendFlesh extends CardImpl {
|
public final class RendFlesh extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Non-Spirit creature");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Spirit creature");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.not(SubType.SPIRIT.getPredicate()));
|
filter.add(Predicates.not(SubType.SPIRIT.getPredicate()));
|
||||||
|
|
|
@ -20,7 +20,7 @@ import mage.filter.common.FilterCreaturePermanent;
|
||||||
*/
|
*/
|
||||||
public final class SachiDaughterOfSeshiro extends CardImpl {
|
public final class SachiDaughterOfSeshiro extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snakes");
|
private static final FilterCreaturePermanent snakeFilter = new FilterCreaturePermanent("Snake creatures");
|
||||||
private static final FilterPermanent shamanFilter = new FilterPermanent("Shamans");
|
private static final FilterPermanent shamanFilter = new FilterPermanent("Shamans");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
|
@ -52,7 +52,7 @@ public final class SekkiSeasonsGuide extends CardImpl {
|
||||||
// Sacrifice eight Spirits: Return Sekki from your graveyard to the battlefield.
|
// Sacrifice eight Spirits: Return Sekki from your graveyard to the battlefield.
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
Zone.GRAVEYARD,
|
Zone.GRAVEYARD,
|
||||||
new ReturnSourceFromGraveyardToBattlefieldEffect(),
|
new ReturnSourceFromGraveyardToBattlefieldEffect(false, false),
|
||||||
new SacrificeTargetCost(new TargetControlledPermanent(8, 8, filter, true))));
|
new SacrificeTargetCost(new TargetControlledPermanent(8, 8, filter, true))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,7 @@ import mage.abilities.effects.common.DestroyAllEffect;
|
||||||
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.filter.FilterPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.predicate.Predicates;
|
|
||||||
import mage.game.events.GameEvent.EventType;
|
import mage.game.events.GameEvent.EventType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,18 +18,12 @@ import mage.game.events.GameEvent.EventType;
|
||||||
*/
|
*/
|
||||||
public final class Serenity extends CardImpl {
|
public final class Serenity extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("artifacts and enchantments");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(Predicates.or(CardType.ARTIFACT.getPredicate(), CardType.ENCHANTMENT.getPredicate()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Serenity(UUID ownerId, CardSetInfo setInfo) {
|
public Serenity(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
|
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
|
||||||
|
|
||||||
|
|
||||||
// At the beginning of your upkeep, destroy all artifacts and enchantments. They can't be regenerated.
|
// At the beginning of your upkeep, destroy all artifacts and enchantments. They can't be regenerated.
|
||||||
Effect effect = new DestroyAllEffect(new FilterPermanent(filter), true);
|
Effect effect = new DestroyAllEffect(StaticFilters.FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS, true);
|
||||||
Ability ability = new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", effect, false);
|
Ability ability = new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", effect, false);
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public final class ShireiShizosCaretaker extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String rule1 = "you may return that card to the battlefield " +
|
private static final String rule1 = "you may return that card to the battlefield " +
|
||||||
"t the beginning of the next end step if {this} is still on the battlefield";
|
"at the beginning of the next end step if {this} is still on the battlefield";
|
||||||
private static final String rule2 = "Whenever a creature with power 1 or less " +
|
private static final String rule2 = "Whenever a creature with power 1 or less " +
|
||||||
"is put into your graveyard from the battlefield, ";
|
"is put into your graveyard from the battlefield, ";
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ public final class ShizukoCallerOfAutumn extends CardImpl {
|
||||||
|
|
||||||
// At the beginning of each player's upkeep, that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end.
|
// At the beginning of each player's upkeep, that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end.
|
||||||
Effect effect = new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(3), "that player", true);
|
Effect effect = new AddManaToManaPoolTargetControllerEffect(Mana.GreenMana(3), "that player", true);
|
||||||
effect.setText("that player adds {G}{G}{G}. Until end of turn, this mana doesn't empty from that player's mana pool as steps and phases end");
|
effect.setText("that player adds {G}{G}{G}. Until end of turn, they don't lose this mana as steps and phases end");
|
||||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.ANY, false));
|
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.ANY, false));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ public final class SwallowingPlague extends CardImpl {
|
||||||
this.subtype.add(SubType.ARCANE);
|
this.subtype.add(SubType.ARCANE);
|
||||||
|
|
||||||
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
this.getSpellAbility().addEffect(new DamageTargetEffect(ManacostVariableValue.REGULAR));
|
||||||
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR));
|
this.getSpellAbility().addEffect(new GainLifeEffect(ManacostVariableValue.REGULAR).concatBy("and"));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ class SwayOfTheStarsEffect extends OneShotEffect {
|
||||||
|
|
||||||
public SwayOfTheStarsEffect() {
|
public SwayOfTheStarsEffect() {
|
||||||
super(Outcome.Neutral);
|
super(Outcome.Neutral);
|
||||||
staticText = "Each player shuffles their hand, graveyard, and permanents they own into their library";
|
staticText = "Each player shuffles their hand, graveyard, and all permanents they own into their library";
|
||||||
}
|
}
|
||||||
|
|
||||||
public SwayOfTheStarsEffect(final SwayOfTheStarsEffect effect) {
|
public SwayOfTheStarsEffect(final SwayOfTheStarsEffect effect) {
|
||||||
|
|
|
@ -48,9 +48,9 @@ public final class ThatWhichWasTaken extends CardImpl {
|
||||||
ability.addTarget(new TargetPermanent(filter));
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Each permanent with a divinity counter on it is indestructible.
|
// Each permanent with a divinity counter on it has indestructible.
|
||||||
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filterIndestructible, false);
|
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filterIndestructible, false);
|
||||||
effect.setText("Each permanent with a divinity counter on it is indestructible");
|
effect.setText("Each permanent with a divinity counter on it has indestructible");
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||||
effect));
|
effect));
|
||||||
|
|
||||||
|
@ -65,5 +65,3 @@ public final class ThatWhichWasTaken extends CardImpl {
|
||||||
return new ThatWhichWasTaken(this);
|
return new ThatWhichWasTaken(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ class ToshiroUmezawaEffect extends OneShotEffect {
|
||||||
public ToshiroUmezawaEffect() {
|
public ToshiroUmezawaEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "you may cast target instant card from your graveyard. "
|
this.staticText = "you may cast target instant card from your graveyard. "
|
||||||
+ "If that spell would be put into a graveyard this turn, exile it instead";
|
+ "If that spell would be put into a graveyard, exile it instead";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ToshiroUmezawaEffect(final ToshiroUmezawaEffect effect) {
|
public ToshiroUmezawaEffect(final ToshiroUmezawaEffect effect) {
|
||||||
|
|
|
@ -21,7 +21,7 @@ import mage.filter.FilterPermanent;
|
||||||
*/
|
*/
|
||||||
public final class TraprootKami extends CardImpl {
|
public final class TraprootKami extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("the number of Forests on the battlefield");
|
private static final FilterPermanent filter = new FilterPermanent("Forests on the battlefield");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SubType.FOREST.getPredicate());
|
filter.add(SubType.FOREST.getPredicate());
|
||||||
|
|
|
@ -92,7 +92,7 @@ class UbaMaskPlayEffect extends AsThoughEffectImpl {
|
||||||
|
|
||||||
public UbaMaskPlayEffect() {
|
public UbaMaskPlayEffect() {
|
||||||
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
|
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
|
||||||
staticText = "Each player may play cards they exiled with {this} this turn";
|
staticText = "Each player may play lands and cast spells from among cards they exiled with {this} this turn";
|
||||||
}
|
}
|
||||||
|
|
||||||
public UbaMaskPlayEffect(final UbaMaskPlayEffect effect) {
|
public UbaMaskPlayEffect(final UbaMaskPlayEffect effect) {
|
||||||
|
|
|
@ -207,6 +207,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
|
||||||
|| ruleLow.startsWith("change")
|
|| ruleLow.startsWith("change")
|
||||||
|| ruleLow.startsWith("counter")
|
|| ruleLow.startsWith("counter")
|
||||||
|| ruleLow.startsWith("destroy")
|
|| ruleLow.startsWith("destroy")
|
||||||
|
|| ruleLow.startsWith("distribute")
|
||||||
|| ruleLow.startsWith("sacrifice")
|
|| ruleLow.startsWith("sacrifice")
|
||||||
|| ruleLow.startsWith("exchange")
|
|| ruleLow.startsWith("exchange")
|
||||||
|| ruleLow.startsWith("exile")
|
|| ruleLow.startsWith("exile")
|
||||||
|
|
|
@ -8,6 +8,7 @@ import mage.game.Game;
|
||||||
import mage.game.events.DamageEvent;
|
import mage.game.events.DamageEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -61,14 +62,14 @@ public class PreventDamageToAttachedEffect extends PreventionEffectImpl {
|
||||||
sb.append("combat ");
|
sb.append("combat ");
|
||||||
}
|
}
|
||||||
sb.append("damage that would be dealt to ");
|
sb.append("damage that would be dealt to ");
|
||||||
sb.append(attachmentType.verb()).append(" creature");
|
sb.append(CardUtil.getTextWithFirstCharLowerCase(attachmentType.verb())).append(" creature");
|
||||||
} else {
|
} else {
|
||||||
sb.append("If a source would deal ");
|
sb.append("If a source would deal ");
|
||||||
if (onlyCombat) {
|
if (onlyCombat) {
|
||||||
sb.append("combat ");
|
sb.append("combat ");
|
||||||
}
|
}
|
||||||
sb.append("damage to ");
|
sb.append("damage to ");
|
||||||
sb.append(attachmentType.verb());
|
sb.append(CardUtil.getTextWithFirstCharLowerCase(attachmentType.verb()));
|
||||||
sb.append(" creature, prevent ").append(amountToPrevent);
|
sb.append(" creature, prevent ").append(amountToPrevent);
|
||||||
sb.append(" of that damage");
|
sb.append(" of that damage");
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,7 +85,7 @@ public class SetPlayerLifeAllEffect extends OneShotEffect {
|
||||||
default:
|
default:
|
||||||
throw new UnsupportedOperationException("Not supported value for targetController");
|
throw new UnsupportedOperationException("Not supported value for targetController");
|
||||||
}
|
}
|
||||||
sb.append(" 's life total becomes ");
|
sb.append("'s life total becomes ");
|
||||||
sb.append(amount.toString());
|
sb.append(amount.toString());
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class ChampionAbility extends StaticAbility {
|
||||||
case 1:
|
case 1:
|
||||||
SubType subType = subTypes.get(0);
|
SubType subType = subTypes.get(0);
|
||||||
this.objectDescription = subType.getDescription();
|
this.objectDescription = subType.getDescription();
|
||||||
filter = new FilterControlledPermanent(subType, "another " + subType + " you control");
|
filter = new FilterControlledPermanent(subType, "another " + subType);
|
||||||
filter.add(AnotherPredicate.instance);
|
filter.add(AnotherPredicate.instance);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -291,6 +291,11 @@ public final class StaticFilters {
|
||||||
FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT.setLockedFilter(true);
|
FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT.setLockedFilter(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static final FilterArtifactOrEnchantmentPermanent FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS = new FilterArtifactOrEnchantmentPermanent("artifacts and enchantments");
|
||||||
|
|
||||||
|
static {
|
||||||
|
FILTER_PERMANENT_ARTIFACTS_AND_ENCHANTMENTS.setLockedFilter(true);
|
||||||
|
}
|
||||||
|
|
||||||
public static final FilterControlledPermanent FILTER_PERMANENT_CONTROLLED_ARTIFACT_OR_ENCHANTMENT = new FilterControlledPermanent("artifact or enchantment you control");
|
public static final FilterControlledPermanent FILTER_PERMANENT_CONTROLLED_ARTIFACT_OR_ENCHANTMENT = new FilterControlledPermanent("artifact or enchantment you control");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue