mirror of
https://github.com/magefree/mage.git
synced 2026-01-10 21:02:08 -08:00
[CMR] various text fixes
This commit is contained in:
parent
067cbabbbc
commit
d227932ff3
55 changed files with 202 additions and 185 deletions
|
|
@ -26,7 +26,7 @@ public final class AbominationOfLlanowar extends CardImpl {
|
|||
private static final FilterPermanent filter
|
||||
= new FilterControlledPermanent(SubType.ELF, "Elves you control");
|
||||
private static final FilterCard filter2
|
||||
= new FilterCard("plus the number of Elf cards in your graveyard");
|
||||
= new FilterCard("plus the number of Elf cards");
|
||||
|
||||
static {
|
||||
filter2.add(SubType.ELF.getPredicate());
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public final class AlharuSolemnRitualist extends CardImpl {
|
|||
// When Alharu, Solemn Ritualist enters the battlefield, put a +1/+1 counter on each of up to two other target creatures.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(
|
||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance())
|
||||
.setText("put a +1/+1 counter on each of up to two other target creatures")
|
||||
);
|
||||
ability.addTarget(new TargetPermanent(0, 2, filter, false));
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
|
||||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.common.continuous.AddCardColorAttachedEffect;
|
||||
|
|
@ -15,20 +14,29 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author noxx
|
||||
*/
|
||||
public final class AngelicArmaments extends CardImpl {
|
||||
|
||||
public AngelicArmaments(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +2/+2, has flying, and is a white Angel in addition to its other colors and types.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 2)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.EQUIPMENT)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AddCardColorAttachedEffect(ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AddCardSubtypeAttachedEffect(SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT)));
|
||||
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
FlyingAbility.getInstance(), AttachmentType.EQUIPMENT
|
||||
).setText(", has flying"));
|
||||
ability.addEffect(new AddCardColorAttachedEffect(
|
||||
ObjectColor.WHITE, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
|
||||
).setText(", and is"));
|
||||
ability.addEffect(new AddCardSubtypeAttachedEffect(
|
||||
SubType.ANGEL, Duration.WhileOnBattlefield, AttachmentType.EQUIPMENT
|
||||
).setText("white Angel in addition to its other colors and types").concatBy("a"));
|
||||
this.addAbility(ability);
|
||||
|
||||
// Equip {4}
|
||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(4)));
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public final class AnointerOfValor extends CardImpl {
|
|||
new AddCountersTargetEffect(CounterType.P1P1.createInstance()),
|
||||
false, "put a +1/+1 counter on that creature"
|
||||
), new GenericManaCost(3), "Pay {3}?"
|
||||
), false, StaticFilters.FILTER_PERMANENT_CREATURE_A,
|
||||
), false, StaticFilters.FILTER_PERMANENT_CREATURE,
|
||||
SetTargetPointer.PERMANENT, false
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class AuroraPhoenix extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("spell with cascade");
|
||||
private static final FilterSpell filter = new FilterSpell("a spell with cascade");
|
||||
|
||||
static {
|
||||
filter.add(new AbilityPredicate(CascadeAbility.class));
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ class BlasphemousCostReductionEffect extends CostModificationEffectImpl {
|
|||
|
||||
BlasphemousCostReductionEffect() {
|
||||
super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST);
|
||||
staticText = "{this} costs {1} less to cast for each creature on the battlefield";
|
||||
staticText = "this spell costs {1} less to cast for each creature on the battlefield";
|
||||
}
|
||||
|
||||
BlasphemousCostReductionEffect(BlasphemousCostReductionEffect effect) {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,9 @@ public final class BlazingSunsteel extends CardImpl {
|
|||
this.subtype.add(SubType.EQUIPMENT);
|
||||
|
||||
// Equipped creature gets +1/+0 for each opponent you have.
|
||||
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(OpponentsCount.instance, StaticValue.get(0))));
|
||||
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(
|
||||
OpponentsCount.instance, StaticValue.get(0)
|
||||
).setText("equipped creature gets +1/+0 for each opponent you have")));
|
||||
|
||||
// Whenever equipped creature is dealt damage, it deals that much damage to any target.
|
||||
this.addAbility(new BlazingSunsteelTriggeredAbility());
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
|
|
@ -13,12 +11,12 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Plopman
|
||||
*/
|
||||
public final class BorosCharm extends CardImpl {
|
||||
|
|
@ -30,11 +28,9 @@ public final class BorosCharm extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new DamageTargetEffect(4));
|
||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||
//or permanents you control are indestructible this turn
|
||||
Mode mode = new Mode();
|
||||
Effect effect = new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledPermanent(), false);
|
||||
effect.setText("permanents you control are indestructible this turn");
|
||||
mode.addEffect(effect);
|
||||
this.getSpellAbility().addMode(mode);
|
||||
this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect(
|
||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
||||
)));
|
||||
//or target creature gains double strike until end of turn.
|
||||
Mode mode2 = new Mode();
|
||||
mode2.addEffect(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn));
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import mage.constants.Duration;
|
|||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -23,7 +24,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class CoerciveRecruiter extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.PIRATE);
|
||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(SubType.PIRATE, "Pirate");
|
||||
|
||||
public CoerciveRecruiter(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
|
||||
|
|
@ -44,6 +45,7 @@ public final class CoerciveRecruiter extends CardImpl {
|
|||
ability.addEffect(new AddCardSubTypeTargetEffect(
|
||||
SubType.PIRATE, Duration.EndOfTurn
|
||||
).setText("and becomes a Pirate in addition to its other types"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ public final class DargoTheShipwrecker extends CardImpl {
|
|||
cost.setText("As an additional cost to cast this spell, " +
|
||||
"you may sacrifice any number of artifacts and/or creatures. " +
|
||||
"This spell costs {2} less to cast for each permanent sacrificed this way " +
|
||||
"and {2} less to cast for each other artifact or creature you've sacrificed this turn.");
|
||||
"and {2} less to cast for each other artifact or creature you've sacrificed this turn");
|
||||
this.getSpellAbility().addCost(cost);
|
||||
Ability ability = new SimpleStaticAbility(Zone.ALL, new DargoTheShipwreckerEffect());
|
||||
ability.setRuleVisible(false);
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ class DereviEmpyrialTacticianTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever {this} enters the battlefield or a creature you control deals combat damage to a player, you may tap or untap target permanent";
|
||||
return "Whenever {this} enters the battlefield or a creature you control deals combat damage to a player, you may tap or untap target permanent.";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public final class GraftedWargear extends CardImpl {
|
|||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(3, 2)));
|
||||
|
||||
// Whenever Grafted Wargear becomes unattached from a permanent, sacrifice that permanent.
|
||||
this.addAbility(new UnattachedTriggeredAbility(new SacrificeTargetEffect(), false));
|
||||
this.addAbility(new UnattachedTriggeredAbility(new SacrificeTargetEffect().setText("sacrifice that permanent"), false));
|
||||
|
||||
// Equip {0}
|
||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(0)));
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public final class HellkiteCourser extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// When Hellkite Courser enters the battlefield, you may put a commander you own from the command zone onto the battlefield. It gains haste. Return it to the command zone at the beginning of the next end step.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new HellkiteCourserEffect()));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new HellkiteCourserEffect(), true));
|
||||
}
|
||||
|
||||
private HellkiteCourser(final HellkiteCourser card) {
|
||||
|
|
|
|||
|
|
@ -90,6 +90,6 @@ class IkraShidiqiTheUsurperTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness";
|
||||
return "Whenever a creature you control deals combat damage to a player, you gain life equal to that creature's toughness.";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
|
|
@ -10,30 +9,34 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
*/
|
||||
public final class IntangibleVirtue extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creature tokens");
|
||||
private static final FilterCreaturePermanent filter
|
||||
= new FilterCreaturePermanent("creature tokens");
|
||||
|
||||
static {
|
||||
filter.add(TokenPredicate.instance);
|
||||
}
|
||||
|
||||
public IntangibleVirtue(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
|
||||
|
||||
// Creature tokens you control get +1/+1 and have vigilance.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
|
||||
|
||||
Ability ability = new SimpleStaticAbility(new BoostControlledEffect(
|
||||
1, 1, Duration.WhileOnBattlefield, filter
|
||||
));
|
||||
ability.addEffect(new GainAbilityControlledEffect(
|
||||
VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, filter
|
||||
).setText("and have vigilance"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public IntangibleVirtue(final IntangibleVirtue card) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
|
||||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.keyword.ScryEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -14,20 +11,18 @@ import mage.constants.Outcome;
|
|||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class InterpretTheSigns extends CardImpl {
|
||||
|
||||
public InterpretTheSigns(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{5}{U}");
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}");
|
||||
|
||||
// Scry 3, then reveal the top card of your library. Draw cards equal to that card's converted mana cost.
|
||||
this.getSpellAbility().addEffect(new ScryEffect(3));
|
||||
this.getSpellAbility().addEffect(new InterpretTheSignsEffect());
|
||||
|
||||
}
|
||||
|
||||
public InterpretTheSigns(final InterpretTheSigns card) {
|
||||
|
|
@ -44,7 +39,7 @@ class InterpretTheSignsEffect extends OneShotEffect {
|
|||
|
||||
public InterpretTheSignsEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
this.staticText = ", then reveal the top card of your library. Draw cards equal to that card's converted mana cost";
|
||||
this.staticText = "scry 3, then reveal the top card of your library. Draw cards equal to that card's converted mana cost";
|
||||
}
|
||||
|
||||
public InterpretTheSignsEffect(final InterpretTheSignsEffect effect) {
|
||||
|
|
@ -59,15 +54,16 @@ class InterpretTheSignsEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Card sourceCard = game.getCard(source.getSourceId());
|
||||
if (controller != null && sourceCard != null) {
|
||||
Card card = controller.getLibrary().getFromTop(game);
|
||||
if (card != null) {
|
||||
controller.revealCards(sourceCard.getName(), new CardsImpl(card), game);
|
||||
controller.drawCards(card.getConvertedManaCost(), source.getSourceId(), game);
|
||||
}
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
controller.scry(3, source, game);
|
||||
Card card = controller.getLibrary().getFromTop(game);
|
||||
if (card == null) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
controller.revealCards(source, new CardsImpl(card), game);
|
||||
controller.drawCards(card.getConvertedManaCost(), source.getSourceId(), game);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ class KaradorGhostChieftainCostReductionEffect extends CostModificationEffectImp
|
|||
|
||||
KaradorGhostChieftainCostReductionEffect() {
|
||||
super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST);
|
||||
staticText = "{this} costs {1} less to cast for each creature card in your graveyard";
|
||||
staticText = "this spell costs {1} less to cast for each creature card in your graveyard";
|
||||
}
|
||||
|
||||
KaradorGhostChieftainCostReductionEffect(KaradorGhostChieftainCostReductionEffect effect) {
|
||||
|
|
@ -99,7 +99,7 @@ class KaradorGhostChieftainCastFromGraveyardEffect extends AsThoughEffectImpl {
|
|||
|
||||
KaradorGhostChieftainCastFromGraveyardEffect() {
|
||||
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.WhileOnBattlefield, Outcome.PutCreatureInPlay, true);
|
||||
staticText = "During each of your turns, you may cast one creature card from your graveyard";
|
||||
staticText = "During each of your turns, you may cast a creature card from your graveyard";
|
||||
}
|
||||
|
||||
KaradorGhostChieftainCastFromGraveyardEffect(final KaradorGhostChieftainCastFromGraveyardEffect effect) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
|||
*/
|
||||
public final class KedissEmberclawFamiliar extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent("commander you control");
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent("a commander you control");
|
||||
|
||||
static {
|
||||
filter.add(CommanderPredicate.instance);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import java.util.UUID;
|
|||
public final class KeskitTheFleshSculptor extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter
|
||||
= new FilterControlledPermanent("three other artifacts and/or creatures");
|
||||
= new FilterControlledPermanent("other artifacts and/or creatures");
|
||||
|
||||
static {
|
||||
filter.add(AnotherPredicate.instance);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.l;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
|
|
@ -17,13 +15,14 @@ import mage.filter.common.FilterCreaturePermanent;
|
|||
import mage.filter.predicate.mageobject.AbilityPredicate;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class LysAlanaBowmaster extends CardImpl {
|
||||
|
||||
private static final FilterSpell filterElf = new FilterSpell("Elf");
|
||||
private static final FilterSpell filterElf = new FilterSpell("an Elf spell");
|
||||
private static final FilterCreaturePermanent filterFlying = new FilterCreaturePermanent("creature with flying");
|
||||
|
||||
static {
|
||||
|
|
@ -32,14 +31,15 @@ public final class LysAlanaBowmaster extends CardImpl {
|
|||
}
|
||||
|
||||
public LysAlanaBowmaster(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.ARCHER);
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
this.addAbility(ReachAbility.getInstance());
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(2), filterElf, true);
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new DamageTargetEffect(2)
|
||||
.setText("{this} deal 2 damage to target creature with flying"), filterElf, true);
|
||||
ability.addTarget(new TargetCreaturePermanent(filterFlying));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
|
@ -14,19 +12,17 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledLandPermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.permanent.token.MelokuTheCloudedMirrorToken;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public final class MelokuTheCloudedMirror extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("land");
|
||||
|
||||
public MelokuTheCloudedMirror(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{U}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
|
|
@ -39,8 +35,12 @@ public final class MelokuTheCloudedMirror extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// {1}, Return a land you control to its owner's hand: Create a 1/1 blue Illusion creature token with flying.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new MelokuTheCloudedMirrorToken(), 1), new GenericManaCost(1));
|
||||
ability.addCost(new ReturnToHandChosenControlledPermanentCost(new TargetControlledPermanent(filter)));
|
||||
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(
|
||||
new MelokuTheCloudedMirrorToken(), 1
|
||||
), new GenericManaCost(1));
|
||||
ability.addCost(new ReturnToHandChosenControlledPermanentCost(
|
||||
new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_LAND_SHORT_TEXT)
|
||||
));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
@ -52,5 +52,4 @@ public final class MelokuTheCloudedMirror extends CardImpl {
|
|||
public MelokuTheCloudedMirror copy() {
|
||||
return new MelokuTheCloudedMirror(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public final class MerchantRaiders extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Whenever Merchant Raiders or another Pirate enters the battlefield under your control, tap up to one target creature. That creature doesn't untap during its controller's untap step for as long as you control Merchant Raiders.
|
||||
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(new TapTargetEffect(), filter);
|
||||
Ability ability = new EntersBattlefieldThisOrAnotherTriggeredAbility(new TapTargetEffect(), filter,false,true);
|
||||
ability.addEffect(new MerchantRaidersEffect());
|
||||
ability.addTarget(new TargetCreaturePermanent(0, 1));
|
||||
this.addAbility(ability, new MerchantRaidersWatcher());
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public final class MindlessAutomaton extends CardImpl {
|
|||
this.toughness = new MageInt(0);
|
||||
|
||||
// Mindless Automaton enters the battlefield with two +1/+1 counters on it.
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2))));
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),"with two +1/+1 counters on it"));
|
||||
|
||||
// {1}, Discard a card: Put a +1/+1 counter on Mindless Automaton.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1));
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ public final class MonstrousOnslaught extends CardImpl {
|
|||
// Monstrous Onslaught deals X damage divided as you choose among any number of target creatures, where X is the greatest power among creatures you control as you cast Monstrous Onslaught.
|
||||
DynamicValue xValue = GreatestPowerAmongControlledCreaturesValue.instance;
|
||||
Effect effect = new DamageMultiEffect(xValue);
|
||||
effect.setText("{this} deals X damage divided as you choose among any number of target creatures, where X is the greatest power among creatures you control as you cast {this}");
|
||||
effect.setText("{this} deals X damage divided as you choose among any number of target creatures, where X is the greatest power among creatures you control as you cast this spell");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(xValue));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@ public final class NecroticHex extends CardImpl {
|
|||
));
|
||||
|
||||
// You create six tapped 2/2 black creature tokens.
|
||||
this.getSpellAbility().addEffect(
|
||||
new CreateTokenEffect(new ZombieToken(), 6).concatBy("<br>You")
|
||||
);
|
||||
this.getSpellAbility().addEffect(new CreateTokenEffect(
|
||||
new ZombieToken(), 6, true, false
|
||||
).concatBy("<br>You"));
|
||||
}
|
||||
|
||||
private NecroticHex(final NecroticHex card) {
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ class RakdosLordOfRiotsCantCastEffect extends ContinuousRuleModifyingEffectImpl
|
|||
|
||||
public RakdosLordOfRiotsCantCastEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Detriment);
|
||||
staticText = "You can't cast {this} unless an opponent lost life this turn";
|
||||
staticText = "You can't cast this spell unless an opponent lost life this turn";
|
||||
}
|
||||
|
||||
public RakdosLordOfRiotsCantCastEffect(final RakdosLordOfRiotsCantCastEffect effect) {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public final class RebbecArchitectOfAscension extends CardImpl {
|
|||
// Artifacts you control have protection from each converted mana cost among artifacts you control.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new ProtectionAbility(filter), Duration.WhileOnBattlefield,
|
||||
StaticFilters.FILTER_PERMANENT_ARTIFACT
|
||||
StaticFilters.FILTER_PERMANENT_ARTIFACTS
|
||||
)));
|
||||
|
||||
// Partner
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import mage.target.common.TargetCardInLibrary;
|
|||
*/
|
||||
public final class RelicSeeker extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("an Equipment card");
|
||||
private static final FilterCard filter = new FilterCard("Equipment card");
|
||||
|
||||
static {
|
||||
filter.add(CardType.ARTIFACT.getPredicate());
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public final class ReyavMasterSmith extends CardImpl {
|
|||
this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
|
||||
new GainAbilityTargetEffect(
|
||||
DoubleStrikeAbility.getInstance(), Duration.EndOfTurn,
|
||||
"that creature gains double strike until end of turn"
|
||||
"that creature gains double strike until end of turn."
|
||||
), false, filter, true
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,6 +117,6 @@ class ReyhanLastOfTheAbzanTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever a creature you control dies or is put into the command zone, if it had one or more +1/+1 counters on it, you may put that may +1/+1 counters on target creature.";
|
||||
return "Whenever a creature you control dies or is put into the command zone, if it had one or more +1/+1 counters on it, you may put that many +1/+1 counters on target creature.";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ public final class SakashimasProtege extends CardImpl {
|
|||
this.addAbility(new CascadeAbility());
|
||||
|
||||
// You may have Sakashima's Protege enter the battlefield as a copy of any permanent that entered the battlefield this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter), true));
|
||||
this.addAbility(new EntersBattlefieldAbility(new CopyPermanentEffect(filter)
|
||||
.setText("you may have {this} enter the battlefield as a copy of any permanent that entered the battlefield this turn"), true));
|
||||
}
|
||||
|
||||
private SakashimasProtege(final SakashimasProtege card) {
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class ScourgeOfFleetsEffect extends OneShotEffect {
|
|||
|
||||
public ScourgeOfFleetsEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "return each creature your opponents control with toughness X or less, where X is the number of Islands you control";
|
||||
this.staticText = "return each creature your opponents control with toughness X or less to its owner's hand, where X is the number of Islands you control";
|
||||
}
|
||||
|
||||
public ScourgeOfFleetsEffect(final ScourgeOfFleetsEffect effect) {
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public final class SeraphicGreatsword extends CardImpl {
|
|||
this.addAbility(new SeraphicGreatswordTriggeredAbility());
|
||||
|
||||
// Equip {4}
|
||||
this.addAbility(new EquipAbility(2));
|
||||
this.addAbility(new EquipAbility(4));
|
||||
}
|
||||
|
||||
private SeraphicGreatsword(final SeraphicGreatsword card) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import mage.abilities.Mode;
|
|||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.HexproofAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -28,7 +29,7 @@ public final class SimicCharm extends CardImpl {
|
|||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
//permanents you control gain hexproof until end of turn
|
||||
Mode mode = new Mode();
|
||||
mode.addEffect(new GainAbilityAllEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, new FilterControlledPermanent()));
|
||||
mode.addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn));
|
||||
this.getSpellAbility().addMode(mode);
|
||||
//return target creature to its owner's hand.
|
||||
Mode mode2 = new Mode();
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public final class SkaabGoliath extends CardImpl {
|
|||
this.toughness = new MageInt(9);
|
||||
|
||||
// As an additional cost to cast Skaab Goliath, exile two creature cards from your graveyard.
|
||||
this.getSpellAbility().addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)));
|
||||
this.getSpellAbility().addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(2, 2, StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD)));
|
||||
this.addAbility(TrampleAbility.getInstance());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
|
|
@ -15,24 +13,31 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Loki
|
||||
*/
|
||||
public final class SlayersStronghold extends CardImpl {
|
||||
|
||||
public SlayersStronghold(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
// {tap}: Add {C}.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {R}{W}, {tap}: Target creature gets +2/+0 and gains vigilance and haste until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}{W}"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(VigilanceAbility.getInstance(), Duration.EndOfTurn));
|
||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
|
||||
Ability ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
||||
2, 0, Duration.EndOfTurn
|
||||
).setText("target creatures gets +2/+0"), new ManaCostsImpl("{R}{W}"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(
|
||||
VigilanceAbility.getInstance(), Duration.EndOfTurn
|
||||
).setText("and gains vigilance"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(
|
||||
HasteAbility.getInstance(), Duration.EndOfTurn
|
||||
).setText("and haste until end of turn"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
|
@ -12,19 +10,23 @@ import mage.abilities.keyword.ProtectionAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author nantuko
|
||||
*/
|
||||
public final class SpiritMantle extends CardImpl {
|
||||
|
||||
public SpiritMantle(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{W}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
private static final FilterCard filter = new FilterCreatureCard("creatures");
|
||||
|
||||
public SpiritMantle(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
|
|
@ -34,8 +36,11 @@ public final class SpiritMantle extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// Enchanted creature gets +1/+1 and has protection from creatures.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new ProtectionAbility(new FilterCreatureCard("creatures")), AttachmentType.AURA)));
|
||||
ability = new SimpleStaticAbility(new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield));
|
||||
ability.addEffect(new GainAbilityAttachedEffect(
|
||||
new ProtectionAbility(filter), AttachmentType.AURA
|
||||
).setText("and has protection from creatures"));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public SpiritMantle(final SpiritMantle card) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
|
|
@ -15,20 +13,22 @@ import mage.abilities.keyword.FlashAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class SpontaneousMutation extends CardImpl {
|
||||
|
||||
private static final DynamicValue value = new SignInversionDynamicValue(new CardsInControllerGraveyardCount());
|
||||
|
||||
public SpontaneousMutation(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{U}");
|
||||
this.subtype.add(SubType.AURA);
|
||||
|
||||
// Flash
|
||||
|
|
@ -42,8 +42,8 @@ public final class SpontaneousMutation extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// Enchanted creature gets -X/-0, where X is the number of cards in your graveyard.
|
||||
DynamicValue value = new SignInversionDynamicValue(new CardsInControllerGraveyardCount());
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(value, StaticValue.get(-0))));
|
||||
this.addAbility(new SimpleStaticAbility(new BoostEnchantedEffect(value, StaticValue.get(0))
|
||||
.setText("enchanted creature gets -X/-0, where X is the number of cards in your graveyard")));
|
||||
}
|
||||
|
||||
public SpontaneousMutation(final SpontaneousMutation card) {
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ public final class SweetGumRecluse extends CardImpl {
|
|||
// When Sweet-Gum Recluse enters the battlefield, put three +1/+1 counters on each of any number of target creatures that entered the battlefield this turn.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(
|
||||
new AddCountersTargetEffect(CounterType.P1P1.createInstance(3))
|
||||
.setText("put three +1/+1 counters on each of any number of target creatures that entered the battlefield this turn")
|
||||
);
|
||||
ability.addTarget(new TargetPermanent(0, Integer.MAX_VALUE, filter, false));
|
||||
this.addAbility(ability);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
|||
public final class SzatsWill extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter
|
||||
= new FilterControlledCreaturePermanent("a creature they control with the greatest power");
|
||||
= new FilterControlledCreaturePermanent("creature they control with the greatest power");
|
||||
|
||||
static {
|
||||
filter.add(SzatsWillPredicate.instance);
|
||||
|
|
|
|||
|
|
@ -1,29 +1,22 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.keyword.ScryEffect;
|
||||
import mage.abilities.keyword.PartnerAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ThrasiosTritonHero extends CardImpl {
|
||||
|
|
@ -38,14 +31,13 @@ public final class ThrasiosTritonHero extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// {4}: Scry 1, then reveal the top card of your library. If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(4));
|
||||
ability.addEffect(new ThrasiosTritonHeroEffect());
|
||||
this.addAbility(ability);
|
||||
this.addAbility(new SimpleActivatedAbility(new ThrasiosTritonHeroEffect(), new GenericManaCost(4)));
|
||||
|
||||
// Partner
|
||||
this.addAbility(PartnerAbility.getInstance());
|
||||
}
|
||||
|
||||
public ThrasiosTritonHero(final ThrasiosTritonHero card) {
|
||||
private ThrasiosTritonHero(final ThrasiosTritonHero card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
|
|
@ -59,7 +51,8 @@ class ThrasiosTritonHeroEffect extends OneShotEffect {
|
|||
|
||||
public ThrasiosTritonHeroEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
this.staticText = "then reveal the top card of your library. If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card";
|
||||
this.staticText = "scry 1, then reveal the top card of your library. " +
|
||||
"If it's a land card, put it onto the battlefield tapped. Otherwise, draw a card";
|
||||
}
|
||||
|
||||
public ThrasiosTritonHeroEffect(final ThrasiosTritonHeroEffect effect) {
|
||||
|
|
@ -74,24 +67,24 @@ class ThrasiosTritonHeroEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
MageObject sourceObject = game.getObject(source.getSourceId());
|
||||
if (sourceObject == null || controller == null) {
|
||||
if (controller == null) {
|
||||
return false;
|
||||
}
|
||||
if (controller.getLibrary().hasCards()) {
|
||||
CardsImpl cards = new CardsImpl();
|
||||
Card card = controller.getLibrary().getFromTop(game);
|
||||
if (card == null) {
|
||||
return false;
|
||||
}
|
||||
cards.add(card);
|
||||
controller.revealCards(sourceObject.getName(), cards, game);
|
||||
if (card.isLand()) {
|
||||
controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
} else {
|
||||
controller.drawCards(1, source.getSourceId(), game);
|
||||
}
|
||||
controller.scry(1, source, game);
|
||||
if (!controller.getLibrary().hasCards()) {
|
||||
return true;
|
||||
}
|
||||
CardsImpl cards = new CardsImpl();
|
||||
Card card = controller.getLibrary().getFromTop(game);
|
||||
if (card == null) {
|
||||
return false;
|
||||
}
|
||||
cards.add(card);
|
||||
controller.revealCards(source, cards, game);
|
||||
if (card.isLand()) {
|
||||
return controller.moveCards(card, Zone.BATTLEFIELD, source, game, true, false, false, null);
|
||||
}
|
||||
controller.drawCards(1, source.getSourceId(), game);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
|
@ -10,24 +8,24 @@ import mage.constants.SubType;
|
|||
import mage.filter.common.FilterLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Plopman
|
||||
*/
|
||||
public final class ThreeVisits extends CardImpl {
|
||||
|
||||
private static final FilterLandCard filter = new FilterLandCard("Forest");
|
||||
private static final FilterLandCard filter = new FilterLandCard("Forest card");
|
||||
|
||||
static {
|
||||
filter.add(SubType.FOREST.getPredicate());
|
||||
}
|
||||
|
||||
public ThreeVisits(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{G}");
|
||||
|
||||
public ThreeVisits(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{G}");
|
||||
|
||||
// Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter)));
|
||||
|
||||
}
|
||||
|
||||
public ThreeVisits(final ThreeVisits card) {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import mage.filter.StaticFilters;
|
|||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetOpponentsCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
@ -42,7 +43,11 @@ public final class TrenchBehemoth extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
|
||||
// Whenever a land enters the battlefield under your control, target creature an opponent controls attacks during its controller's next combat phase if able.
|
||||
ability = new EntersBattlefieldControlledTriggeredAbility(new TrenchBehemothEffect(), StaticFilters.FILTER_LAND_A);
|
||||
ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||
new TrenchBehemothEffect(), StaticFilters.FILTER_LAND_A
|
||||
);
|
||||
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private TrenchBehemoth(final TrenchBehemoth card) {
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ class VialSmasherTheFierceTriggeredAbility extends SpellCastControllerTriggeredA
|
|||
@Override
|
||||
public String getRule() {
|
||||
return "Whenever you cast your first spell each turn, choose an opponent at random. "
|
||||
+ "{this} deals damage equal to that spell's converted mana cost to that player or a planeswalker that player controls";
|
||||
+ "{this} deals damage equal to that spell's converted mana cost to that player or a planeswalker that player controls.";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public final class WhelmingWave extends CardImpl {
|
|||
|
||||
// Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses and Serpents.
|
||||
Effect effect = new ReturnToHandFromBattlefieldAllEffect(filter);
|
||||
effect.setText("Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses and Serpents");
|
||||
effect.setText("Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses, and Serpents");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import mage.MageInt;
|
||||
|
|
@ -12,8 +11,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ColoredManaSymbol;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
|
@ -27,7 +26,7 @@ import java.util.UUID;
|
|||
public final class WickerboughElder extends CardImpl {
|
||||
|
||||
public WickerboughElder(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
|
||||
this.subtype.add(SubType.TREEFOLK);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
|
||||
|
|
@ -35,7 +34,8 @@ public final class WickerboughElder extends CardImpl {
|
|||
this.toughness = new MageInt(4);
|
||||
|
||||
// Wickerbough Elder enters the battlefield with a -1/-1 counter on it.
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance(1))));
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance(1)), "with a -1/-1 counter on it"));
|
||||
|
||||
// {G}, Remove a -1/-1 counter from Wickerbough Elder: Destroy target artifact or enchantment.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ColoredManaCost(ColoredManaSymbol.G));
|
||||
ability.addCost(new RemoveCountersSourceCost(CounterType.M1M1.createInstance(1)));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
|
|
@ -11,27 +9,31 @@ import mage.abilities.keyword.TrampleAbility;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
*/
|
||||
public final class WildheartInvoker extends CardImpl {
|
||||
|
||||
public WildheartInvoker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
|
||||
this.subtype.add(SubType.ELF);
|
||||
this.subtype.add(SubType.SHAMAN);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(5, 5, Duration.EndOfTurn), new ManaCostsImpl("{8}"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(new BoostTargetEffect(
|
||||
5, 5, Duration.EndOfTurn
|
||||
).setText("target creature gets +5/+5"), new ManaCostsImpl("{8}"));
|
||||
ability.addEffect(new GainAbilityTargetEffect(
|
||||
TrampleAbility.getInstance(), Duration.EndOfTurn
|
||||
).setText("and gains trample until end of turn"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public final class YavimayaElder extends CardImpl {
|
|||
this.toughness = new MageInt(1);
|
||||
|
||||
// When Yavimaya Elder dies, you may search your library for up to two basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), true), true));
|
||||
this.addAbility(new DiesSourceTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LANDS), true), true));
|
||||
// {2}, Sacrifice Yavimaya Elder: Draw a card.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
|
||||
ability.addCost(new SacrificeSourceCost());
|
||||
|
|
|
|||
|
|
@ -5,19 +5,19 @@ import mage.abilities.TriggeredAbilityImpl;
|
|||
import mage.abilities.effects.Effect;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public class SacrificePermanentTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
private FilterPermanent filter;
|
||||
private final FilterPermanent filter;
|
||||
|
||||
public SacrificePermanentTriggeredAbility(Effect effect) {
|
||||
this(effect, new FilterPermanent());
|
||||
this(effect, StaticFilters.FILTER_PERMANENT_A);
|
||||
}
|
||||
|
||||
public SacrificePermanentTriggeredAbility(Effect effect, FilterPermanent filter) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ public class RevealTopLandToBattlefieldElseHandEffect extends OneShotEffect {
|
|||
|
||||
public RevealTopLandToBattlefieldElseHandEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
this.staticText = "Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand";
|
||||
this.staticText = "reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put that card into your hand";
|
||||
}
|
||||
|
||||
public RevealTopLandToBattlefieldElseHandEffect(final RevealTopLandToBattlefieldElseHandEffect effect) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,3 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package mage.abilities.effects.common.continuous;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
|
|
@ -14,15 +9,14 @@ import mage.game.Game;
|
|||
import mage.game.permanent.Permanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class BoostAllOfChosenSubtypeEffect extends BoostAllEffect {
|
||||
|
||||
SubType subtype = null;
|
||||
private SubType subtype = null;
|
||||
|
||||
public BoostAllOfChosenSubtypeEffect(int power, int toughness, Duration duration, boolean excludeSource) {
|
||||
super(power, toughness, duration, new FilterCreaturePermanent("All creatures of the chosen type"), excludeSource);
|
||||
super(power, toughness, duration, new FilterCreaturePermanent("creatures of the chosen type"), excludeSource);
|
||||
}
|
||||
|
||||
public BoostAllOfChosenSubtypeEffect(int power, int toughness, Duration duration, FilterCreaturePermanent filter, boolean excludeSource) {
|
||||
|
|
@ -56,5 +50,4 @@ public class BoostAllOfChosenSubtypeEffect extends BoostAllEffect {
|
|||
discard();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class CascadeAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
StringBuilder sb = new StringBuilder("Cascade");
|
||||
StringBuilder sb = new StringBuilder("cascade");
|
||||
if (withReminder) {
|
||||
sb.append(REMINDERTEXT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -210,6 +210,12 @@ public final class StaticFilters {
|
|||
FILTER_PERMANENT.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterPermanent FILTER_PERMANENT_A = new FilterPermanent("a permanent");
|
||||
|
||||
static {
|
||||
FILTER_PERMANENT_A.setLockedFilter(true);
|
||||
}
|
||||
|
||||
public static final FilterPermanent FILTER_PERMANENTS = new FilterPermanent("permanents");
|
||||
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ import mage.constants.Zone;
|
|||
public final class DragonEggDragonToken extends TokenImpl {
|
||||
|
||||
public DragonEggDragonToken() {
|
||||
super("Dragon", "2/2 red Dragon creature token with flying that has \"{R}: This creature gets +1/+0 until end of turn");
|
||||
super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn");
|
||||
this.setOriginalExpansionSetCode("M14");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setRed(true);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import mage.MageInt;
|
|||
public final class ProsshKoboldToken extends TokenImpl {
|
||||
|
||||
public ProsshKoboldToken() {
|
||||
super("Kobolds of Kher Keep", "0/1 red Kobold creature tokens");
|
||||
super("Kobolds of Kher Keep", "0/1 red Kobold creature tokens named Kobolds of Kher Keep");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setRed(true);
|
||||
subtype.add(SubType.KOBOLD);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue