mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 19:41:59 -08:00
more unrelated text fixes (#10761)
* some text fixes [LTR] [LTC] [CMM] * another batch of text fixes * followup fixes * unrelated cleanup * fix corresponding ability text in test
This commit is contained in:
parent
fa77261e3a
commit
127b7be9b0
67 changed files with 112 additions and 128 deletions
|
|
@ -7,7 +7,6 @@ import mage.abilities.effects.common.CounterTargetEffect;
|
||||||
import mage.abilities.hint.common.RaidHint;
|
import mage.abilities.hint.common.RaidHint;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.AbilityWord;
|
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.target.TargetSpell;
|
import mage.target.TargetSpell;
|
||||||
import mage.watchers.common.PlayerAttackedWatcher;
|
import mage.watchers.common.PlayerAttackedWatcher;
|
||||||
|
|
@ -24,7 +23,7 @@ public final class AdmiralsOrder extends CardImpl {
|
||||||
|
|
||||||
// Raid - If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost.
|
// Raid - If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost.
|
||||||
this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl<>("{U}"), RaidCondition.instance,
|
this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl<>("{U}"), RaidCondition.instance,
|
||||||
"<br/><i>Raid</i> — If you attacked this turn, you may pay {U} rather than pay this spell's mana cost"),
|
"<br/><i>Raid</i> — If you attacked this turn, you may pay {U} rather than pay this spell's mana cost."),
|
||||||
new PlayerAttackedWatcher());
|
new PlayerAttackedWatcher());
|
||||||
// Counter target spell.
|
// Counter target spell.
|
||||||
this.getSpellAbility().addEffect(new CounterTargetEffect());
|
this.getSpellAbility().addEffect(new CounterTargetEffect());
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,8 @@ public final class AdmonitionAngel extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// When Admonition Angel leaves the battlefield, return all cards exiled with it to the battlefield under their owners' control.
|
// When Admonition Angel leaves the battlefield, return all cards exiled with it to the battlefield under their owners' control.
|
||||||
Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false);
|
Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD)
|
||||||
|
.setText("return all cards exiled with it to the battlefield under their owners' control"), false);
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,7 @@ public final class AishaOfSparksAndSmoke extends CardImpl {
|
||||||
), new ManaCostsImpl<>("{R/W}")));
|
), new ManaCostsImpl<>("{R/W}")));
|
||||||
|
|
||||||
// Shoryuken—Whenever Ken deals combat damage, you may cast a sorcery spell from your hand with mana value less than or equal to that damage without paying its mana cost.
|
// Shoryuken—Whenever Ken deals combat damage, you may cast a sorcery spell from your hand with mana value less than or equal to that damage without paying its mana cost.
|
||||||
this.addAbility(new DealsCombatDamageTriggeredAbility(
|
this.addAbility(new DealsCombatDamageTriggeredAbility(new AishaOfSparksAndSmokeEffect(), false));
|
||||||
new AishaOfSparksAndSmokeEffect(), false
|
|
||||||
).withFlavorWord("Shoryuken"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AishaOfSparksAndSmoke(final AishaOfSparksAndSmoke card) {
|
private AishaOfSparksAndSmoke(final AishaOfSparksAndSmoke card) {
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ class AminatousAuguryEffect extends OneShotEffect {
|
||||||
staticText = "Exile the top eight cards of your library. "
|
staticText = "Exile the top eight cards of your library. "
|
||||||
+ "You may put a land card from among them onto the battlefield. "
|
+ "You may put a land card from among them onto the battlefield. "
|
||||||
+ "Until end of turn, for each nonland card type, "
|
+ "Until end of turn, for each nonland card type, "
|
||||||
+ "you may cast a card of that type from among the exiled cards without paying its mana cost.";
|
+ "you may cast a spell of that type from among the exiled cards without paying its mana cost.";
|
||||||
}
|
}
|
||||||
|
|
||||||
public AminatousAuguryEffect(final AminatousAuguryEffect effect) {
|
public AminatousAuguryEffect(final AminatousAuguryEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,8 @@ public final class ArborArmament extends CardImpl {
|
||||||
// Put a +1/+1 counter on target creature. That creature gains reach until end of turn.
|
// Put a +1/+1 counter on target creature. That creature gains reach until end of turn.
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
|
this.getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.P1P1.createInstance()));
|
||||||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn)
|
||||||
|
.setText("That creature gains reach until end of turn"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArborArmament(final ArborArmament card) {
|
private ArborArmament(final ArborArmament card) {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import mage.target.common.TargetCardInYourGraveyard;
|
||||||
*/
|
*/
|
||||||
public final class AtzocanSeer extends CardImpl {
|
public final class AtzocanSeer extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCard("Dinosaur from your graveyard");
|
private static final FilterCard filter = new FilterCard("Dinosaur card from your graveyard");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SubType.DINOSAUR.getPredicate());
|
filter.add(SubType.DINOSAUR.getPredicate());
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ enum CavernHoardDragonCount implements DynamicValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return "greatest number of artifacts an opponent controls";
|
return "the greatest number of artifacts an opponent controls";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Hint getHint() {
|
public static Hint getHint() {
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import mage.filter.predicate.mageobject.AnotherPredicate;
|
||||||
*/
|
*/
|
||||||
public final class CinderGiant extends CardImpl {
|
public final class CinderGiant extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("each other creature you control");
|
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("other creature you control");
|
||||||
static {
|
static {
|
||||||
filter.add(AnotherPredicate.instance);
|
filter.add(AnotherPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CrownOfGondor extends CardImpl {
|
public final class CrownOfGondor extends CardImpl {
|
||||||
|
|
||||||
private final static DynamicValue xValue = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE);
|
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(StaticFilters.FILTER_CONTROLLED_CREATURE);
|
||||||
|
|
||||||
public CrownOfGondor(UUID ownerId, CardSetInfo setInfo) {
|
public CrownOfGondor(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||||
|
|
@ -52,7 +52,7 @@ public final class CrownOfGondor extends CardImpl {
|
||||||
|
|
||||||
// Equip {4}. This ability costs {3} less to activate if you're the monarch.
|
// Equip {4}. This ability costs {3} less to activate if you're the monarch.
|
||||||
EquipAbility equip = new EquipAbility(4, false);
|
EquipAbility equip = new EquipAbility(4, false);
|
||||||
equip.setCostReduceText("This ability costs {3} less to activate if you're the monarch");
|
equip.setCostReduceText("This ability costs {3} less to activate if you're the monarch.");
|
||||||
equip.setCostAdjuster(CrownOfGondorAdjuster.instance);
|
equip.setCostAdjuster(CrownOfGondorAdjuster.instance);
|
||||||
this.addAbility(equip);
|
this.addAbility(equip);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public final class CunningStrike extends CardImpl {
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
Effect effect = new DamageTargetEffect(StaticValue.get(2), true, "", true);
|
Effect effect = new DamageTargetEffect(StaticValue.get(2), true, "", true);
|
||||||
effect.setTargetPointer(new SecondTargetPointer());
|
effect.setTargetPointer(new SecondTargetPointer());
|
||||||
effect.setText("and 2 damage to target player");
|
effect.setText("and 2 damage to target player or planeswalker");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,6 @@ class DamiaSageOfStoneTriggeredAbility extends BeginningOfUpkeepTriggeredAbility
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "At the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference";
|
return "At the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ public final class DarkIntimations extends CardImpl {
|
||||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||||
Zone.GRAVEYARD, new DarkIntimationsGraveyardEffect(),
|
Zone.GRAVEYARD, new DarkIntimationsGraveyardEffect(),
|
||||||
filter, false, SetTargetPointer.SPELL
|
filter, false, SetTargetPointer.SPELL
|
||||||
));
|
).setTriggerPhrase("When you cast a Bolas planeswalker spell, "));
|
||||||
}
|
}
|
||||||
|
|
||||||
private DarkIntimations(final DarkIntimations card) {
|
private DarkIntimations(final DarkIntimations card) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -32,7 +31,7 @@ public final class DeepglowSkate extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// When Deepglow Skate enters the battlefield, double the number of each kind of counter on any number of target permanents.
|
// When Deepglow Skate enters the battlefield, double the number of each kind of counter on any number of target permanents.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new DeepglowSkateEffect(), true);
|
Ability ability = new EntersBattlefieldTriggeredAbility(new DeepglowSkateEffect(), false);
|
||||||
ability.addTarget(new TargetPermanent(0, Integer.MAX_VALUE, new FilterPermanent(), false));
|
ability.addTarget(new TargetPermanent(0, Integer.MAX_VALUE, new FilterPermanent(), false));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
@ -51,7 +50,7 @@ class DeepglowSkateEffect extends OneShotEffect {
|
||||||
|
|
||||||
public DeepglowSkateEffect() {
|
public DeepglowSkateEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "{this} double the number of each kind of counter on any number of target permanents";
|
this.staticText = "double the number of each kind of counter on any number of target permanents";
|
||||||
}
|
}
|
||||||
|
|
||||||
public DeepglowSkateEffect(final DeepglowSkateEffect effect) {
|
public DeepglowSkateEffect(final DeepglowSkateEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public final class Downdraft extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Sacrifice Downdraft: Downdraft deals 2 damage to each creature with flying.
|
// Sacrifice Downdraft: Downdraft deals 2 damage to each creature with flying.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageAllEffect(2, filter), new SacrificeSourceCost()));
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageAllEffect(2, "it", filter), new SacrificeSourceCost()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Downdraft(final Downdraft card) {
|
private Downdraft(final Downdraft card) {
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public final class EnterTheUnknown extends CardImpl {
|
||||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||||
|
|
||||||
// You may play an additional land this turn.
|
// You may play an additional land this turn.
|
||||||
this.getSpellAbility().addEffect(new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new PlayAdditionalLandsControllerEffect(1, Duration.EndOfTurn).concatBy("<br>"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -9,7 +8,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.common.FilterCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -26,7 +25,7 @@ public final class FalseProphet extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// When False Prophet dies, exile all creatures.
|
// When False Prophet dies, exile all creatures.
|
||||||
this.addAbility(new DiesSourceTriggeredAbility(new ExileAllEffect(new FilterCreaturePermanent())));
|
this.addAbility(new DiesSourceTriggeredAbility(new ExileAllEffect(StaticFilters.FILTER_PERMANENT_CREATURES)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FalseProphet(final FalseProphet card) {
|
private FalseProphet(final FalseProphet card) {
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class FireWhip extends CardImpl {
|
||||||
// Enchanted creature has "{t}: This creature deals 1 damage to any target."
|
// Enchanted creature has "{t}: This creature deals 1 damage to any target."
|
||||||
Ability ability1 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
Ability ability1 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
||||||
ability1.addTarget(new TargetAnyTarget());
|
ability1.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability1, AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted creature has \"{t}: This creature deals 1 damage to any target.\"")));
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ability1, AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted creature has \"{T}: This creature deals 1 damage to any target.\"")));
|
||||||
// Sacrifice Fire Whip: Fire Whip deals 1 damage to any target.
|
// Sacrifice Fire Whip: Fire Whip deals 1 damage to any target.
|
||||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
|
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
|
||||||
ability2.addTarget(new TargetAnyTarget());
|
ability2.addTarget(new TargetAnyTarget());
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ class FirestormEffect extends OneShotEffect {
|
||||||
|
|
||||||
public FirestormEffect() {
|
public FirestormEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
staticText = "{this} deals X damage to each of X target creatures and/or players";
|
staticText = "{this} deals X damage to each of X targets";
|
||||||
}
|
}
|
||||||
|
|
||||||
public FirestormEffect(final FirestormEffect effect) {
|
public FirestormEffect(final FirestormEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -23,8 +22,10 @@ public final class FitOfRage extends CardImpl {
|
||||||
|
|
||||||
// Target creature gets +3/+3 and gains first strike until end of turn.
|
// Target creature gets +3/+3 and gains first strike until end of turn.
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new BoostTargetEffect(3, 3, Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new BoostTargetEffect(3, 3, Duration.EndOfTurn)
|
||||||
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn));
|
.setText("target creature gets +3/+3"));
|
||||||
|
this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn)
|
||||||
|
.setText("and gains first strike until end of turn"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private FitOfRage(final FitOfRage card) {
|
private FitOfRage(final FitOfRage card) {
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public final class FlamekinVillage extends CardImpl {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
super(ownerId,setInfo,new CardType[]{CardType.LAND},"");
|
||||||
|
|
||||||
// As Flamekin Village enters the battlefield, you may reveal an Elemental card from your hand. If you don't, Flamekin Village enters the battlefield tapped.
|
// As Flamekin Village enters the battlefield, you may reveal an Elemental card from your hand. If you don't, Flamekin Village enters the battlefield tapped.
|
||||||
this.addAbility(new AsEntersBattlefieldAbility(new TapSourceUnlessPaysEffect(new RevealTargetFromHandCost(new TargetCardInHand(filter))), "you may reveal a Elemental card from your hand. If you don't, {this} enters the battlefield tapped"));
|
this.addAbility(new AsEntersBattlefieldAbility(new TapSourceUnlessPaysEffect(new RevealTargetFromHandCost(new TargetCardInHand(filter))), "you may reveal an Elemental card from your hand. If you don't, {this} enters the battlefield tapped"));
|
||||||
|
|
||||||
// {tap}: Add {R}.
|
// {tap}: Add {R}.
|
||||||
this.addAbility(new RedManaAbility());
|
this.addAbility(new RedManaAbility());
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ import mage.filter.predicate.permanent.ControllerIdPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.combat.CombatGroup;
|
import mage.game.combat.CombatGroup;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
@ -101,6 +100,6 @@ class GoblinVandalTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Whenever {this} attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and {this} assigns no combat damage this turn";
|
return "Whenever {this} attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and {this} assigns no combat damage this turn.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public final class GripOfPhyresis extends CardImpl {
|
||||||
|
|
||||||
// Gain control of target Equipment, then create a 0/0 black Germ creature token and attach that Equipment to it.
|
// Gain control of target Equipment, then create a 0/0 black Germ creature token and attach that Equipment to it.
|
||||||
GainControlTargetEffect effect = new GainControlTargetEffect(Duration.EndOfGame, true);
|
GainControlTargetEffect effect = new GainControlTargetEffect(Duration.EndOfGame, true);
|
||||||
effect.setText("Gain control of target equipment");
|
effect.setText("Gain control of target Equipment");
|
||||||
this.getSpellAbility().addEffect(effect);
|
this.getSpellAbility().addEffect(effect);
|
||||||
Target targetEquipment = new TargetPermanent(filter);
|
Target targetEquipment = new TargetPermanent(filter);
|
||||||
this.getSpellAbility().addTarget(targetEquipment);
|
this.getSpellAbility().addTarget(targetEquipment);
|
||||||
|
|
@ -56,6 +56,7 @@ class GripOfPhyresisEffect extends CreateTokenEffect {
|
||||||
|
|
||||||
GripOfPhyresisEffect() {
|
GripOfPhyresisEffect() {
|
||||||
super(new PhyrexianGermToken());
|
super(new PhyrexianGermToken());
|
||||||
|
staticText = ", then " + staticText + " and attach that Equipment to it";
|
||||||
}
|
}
|
||||||
|
|
||||||
GripOfPhyresisEffect(final GripOfPhyresisEffect effect) {
|
GripOfPhyresisEffect(final GripOfPhyresisEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,9 @@ public final class HarvestWurm extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// When Harvest Wurm enters the battlefield, sacrifice it unless you return a basic land card from your graveyard to your hand.
|
// When Harvest Wurm enters the battlefield, sacrifice it unless you return a basic land card from your graveyard to your hand.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ReturnToHandFromGraveyardCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_BASIC_LAND)))));
|
TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_BASIC_LAND_A);
|
||||||
|
target.setNotTarget(true);
|
||||||
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ReturnToHandFromGraveyardCost(target))));
|
||||||
}
|
}
|
||||||
|
|
||||||
private HarvestWurm(final HarvestWurm card) {
|
private HarvestWurm(final HarvestWurm card) {
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ public final class HauntingMisery extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
|
||||||
|
|
||||||
// As an additional cost to cast Haunting Misery, exile X creature cards from your graveyard.
|
// As an additional cost to cast Haunting Misery, exile X creature cards from your graveyard.
|
||||||
this.getSpellAbility().addCost(new ExileXFromYourGraveCost(StaticFilters.FILTER_CARD_CREATURE));
|
this.getSpellAbility().addCost(new ExileXFromYourGraveCost(StaticFilters.FILTER_CARD_CREATURES_YOUR_GRAVEYARD));
|
||||||
|
|
||||||
// Haunting Misery deals X damage to target player.
|
// Haunting Misery deals X damage to target player.
|
||||||
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ class ImmardTheStormcleaverEffect extends OneShotEffect {
|
||||||
|
|
||||||
ImmardTheStormcleaverEffect() {
|
ImmardTheStormcleaverEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
staticText = "put a charge counter on him or remove one from him. When you remove a counter this way, "
|
staticText = "put a charge counter on it or remove one from it. When you remove a counter this way, "
|
||||||
+ CardUtil.getTextWithFirstCharLowerCase(ability.getRule());
|
+ CardUtil.getTextWithFirstCharLowerCase(ability.getRule());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,7 +90,7 @@ class ImmardTheStormcleaverEffect extends OneShotEffect {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final ReflexiveTriggeredAbility makeAbility() {
|
private static ReflexiveTriggeredAbility makeAbility() {
|
||||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
|
||||||
new DamageTargetEffect(4), false
|
new DamageTargetEffect(4), false
|
||||||
);
|
);
|
||||||
|
|
@ -101,7 +101,7 @@ class ImmardTheStormcleaverEffect extends OneShotEffect {
|
||||||
mode.addEffect(new GainAbilitySourceEffect(
|
mode.addEffect(new GainAbilitySourceEffect(
|
||||||
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
||||||
).setText("and indestructible until end of turn"));
|
).setText("and indestructible until end of turn"));
|
||||||
ability.withFirstModeFlavorWord("Sonic Boom").addMode(mode.withFlavorWord("Flash Kick"));
|
ability.addMode(mode);
|
||||||
return ability;
|
return ability;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ class InducedAmnesiaExileEffect extends OneShotEffect {
|
||||||
|
|
||||||
InducedAmnesiaExileEffect() {
|
InducedAmnesiaExileEffect() {
|
||||||
super(Outcome.Detriment);
|
super(Outcome.Detriment);
|
||||||
this.staticText = "target player exiles all the cards in their hand face down, then draws that many cards";
|
this.staticText = "target player exiles all cards from their hand face down, then draws that many cards";
|
||||||
}
|
}
|
||||||
|
|
||||||
private InducedAmnesiaExileEffect(final InducedAmnesiaExileEffect effect) {
|
private InducedAmnesiaExileEffect(final InducedAmnesiaExileEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public final class JadelightRanger extends CardImpl {
|
||||||
|
|
||||||
// When Jadelight Ranger enters the battlefield, it explores, then it explores again.
|
// When Jadelight Ranger enters the battlefield, it explores, then it explores again.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect(false, "it"), false);
|
Ability ability = new EntersBattlefieldTriggeredAbility(new ExploreSourceEffect(false, "it"), false);
|
||||||
ability.addEffect(new ExploreSourceEffect().setText(", then it explores again. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard. Then repeat this process.) "));
|
ability.addEffect(new ExploreSourceEffect().setText(", then it explores again. <i>(Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard. Then repeat this process.)</i>"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public final class LeoninBladetrap extends CardImpl {
|
||||||
// Flash
|
// Flash
|
||||||
this.addAbility(FlashAbility.getInstance());
|
this.addAbility(FlashAbility.getInstance());
|
||||||
// {2}, Sacrifice Leonin Bladetrap: Leonin Bladetrap deals 2 damage to each attacking creature without flying.
|
// {2}, Sacrifice Leonin Bladetrap: Leonin Bladetrap deals 2 damage to each attacking creature without flying.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageAllEffect(2, filter), new GenericManaCost(2));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageAllEffect(2, "it", filter), new GenericManaCost(2));
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -14,7 +13,6 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.TargetController;
|
import mage.constants.TargetController;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -37,7 +35,7 @@ public final class LightningShrieker extends CardImpl {
|
||||||
// At the beginning of the end step, Lightning Shrieker's owner shuffles it into their library.
|
// At the beginning of the end step, Lightning Shrieker's owner shuffles it into their library.
|
||||||
Effect effect = new ShuffleIntoLibrarySourceEffect();
|
Effect effect = new ShuffleIntoLibrarySourceEffect();
|
||||||
effect.setText("{this}'s owner shuffles it into their library.");
|
effect.setText("{this}'s owner shuffles it into their library.");
|
||||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.ANY, null, false));
|
this.addAbility(new BeginningOfEndStepTriggeredAbility(effect, TargetController.NEXT, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private LightningShrieker(final LightningShrieker card) {
|
private LightningShrieker(final LightningShrieker card) {
|
||||||
|
|
|
||||||
|
|
@ -50,16 +50,13 @@ public final class LobeliaDefenderOfBagEnd extends CardImpl {
|
||||||
// {T}, Sacrifice an artifact: Choose one --
|
// {T}, Sacrifice an artifact: Choose one --
|
||||||
// * Until end of turn, you may play a card exiled with Lobelia without paying its mana cost.
|
// * Until end of turn, you may play a card exiled with Lobelia without paying its mana cost.
|
||||||
// * Each opponent loses 2 life and you gain 2 life.
|
// * Each opponent loses 2 life and you gain 2 life.
|
||||||
Ability ability = new SimpleActivatedAbility(
|
Ability ability = new SimpleActivatedAbility(new LobeliaDefenderOfBagEndPlayFromExileEffect(), new TapSourceCost());
|
||||||
new LobeliaDefenderOfBagEndPlayFromExileEffect(),
|
ability.addCost(new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN));
|
||||||
new SacrificeTargetCost(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN)
|
|
||||||
);
|
|
||||||
ability.addCost(new TapSourceCost());
|
|
||||||
ability.addWatcher(new LobeliaDefenderOfBagEndWatcher());
|
ability.addWatcher(new LobeliaDefenderOfBagEndWatcher());
|
||||||
|
|
||||||
ability.addMode(new Mode(
|
ability.addMode(new Mode(
|
||||||
new LoseLifeOpponentsEffect(2)
|
new LoseLifeOpponentsEffect(2)
|
||||||
).addEffect(new GainLifeEffect(2)));
|
).addEffect(new GainLifeEffect(2).concatBy("and")));
|
||||||
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,12 +57,12 @@ public final class MaarikaBrutalGladiator extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(IndestructibleAbility.getInstance()),
|
new GainAbilitySourceEffect(IndestructibleAbility.getInstance()),
|
||||||
MyTurnCondition.instance, "as long as it's your turn, {this} has indestructible"
|
MyTurnCondition.instance, "as long as it's your turn, {this} has indestructible"
|
||||||
)).withFlavorWord("Iron Muscle"));
|
)));
|
||||||
|
|
||||||
// Spinning Piledriver—Whenever Zangief deals damage to a creature, if that creature was dealt excess damage this turn, that creature's controller sacrifices a noncreature, nonland permanent.
|
// Spinning Piledriver—Whenever Zangief deals damage to a creature, if that creature was dealt excess damage this turn, that creature's controller sacrifices a noncreature, nonland permanent.
|
||||||
this.addAbility(new DealsDamageToACreatureTriggeredAbility(
|
this.addAbility(new DealsDamageToACreatureTriggeredAbility(
|
||||||
new MaarikaBrutalGladiatorEffect(), false, false, true, filter
|
new MaarikaBrutalGladiatorEffect(), false, false, true, filter
|
||||||
).withFlavorWord("Spinning Piledriver"), new MaarikaBrutalGladiatorWatcher());
|
), new MaarikaBrutalGladiatorWatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
private MaarikaBrutalGladiator(final MaarikaBrutalGladiator card) {
|
private MaarikaBrutalGladiator(final MaarikaBrutalGladiator card) {
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class MausoleumHarpy extends CardImpl {
|
||||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||||
new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL),
|
new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL),
|
||||||
CitysBlessingCondition.instance,
|
CitysBlessingCondition.instance,
|
||||||
"Whenever another creature you control dies, if you have the city's blessing, put a +1/+1 counter on {this}. ")
|
"Whenever another creature you control dies, if you have the city's blessing, put a +1/+1 counter on {this}.")
|
||||||
.addHint(CitysBlessingHint.instance));
|
.addHint(CitysBlessingHint.instance));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public final class MouthOfRonom extends CardImpl {
|
||||||
// {T}: Add {C}.
|
// {T}: Add {C}.
|
||||||
this.addAbility(new ColorlessManaAbility());
|
this.addAbility(new ColorlessManaAbility());
|
||||||
// {4}{S}, {T}, Sacrifice Mouth of Ronom: Mouth of Ronom deals 4 damage to target creature.
|
// {4}{S}, {T}, Sacrifice Mouth of Ronom: Mouth of Ronom deals 4 damage to target creature.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(4), new ManaCostsImpl<>("{4}{S}"));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(4, "it"), new ManaCostsImpl<>("{4}{S}"));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,25 @@
|
||||||
|
|
||||||
package mage.cards.o;
|
package mage.cards.o;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
|
||||||
import mage.filter.predicate.mageobject.AnotherPredicate;
|
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class OrcSureshot extends CardImpl {
|
public final class OrcSureshot extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(AnotherPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrcSureshot(UUID ownerId, CardSetInfo setInfo) {
|
public OrcSureshot(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
||||||
this.subtype.add(SubType.ORC);
|
this.subtype.add(SubType.ORC);
|
||||||
|
|
@ -37,7 +28,9 @@ public final class OrcSureshot extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever another creature enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn.
|
// Whenever another creature enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn.
|
||||||
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-1,-1, Duration.EndOfTurn),filter,false);
|
Ability ability = new EntersBattlefieldControlledTriggeredAbility(
|
||||||
|
new BoostTargetEffect(-1,-1, Duration.EndOfTurn),
|
||||||
|
StaticFilters.FILTER_ANOTHER_CREATURE);
|
||||||
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
|
ability.addTarget(new TargetCreaturePermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class PaladinOfAtonement extends CardImpl {
|
||||||
|
|
||||||
// When Paladin of Atonement dies, you gain life equal to it's toughness.
|
// When Paladin of Atonement dies, you gain life equal to it's toughness.
|
||||||
this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentToughnessValue.getInstance(),
|
this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(SourcePermanentToughnessValue.getInstance(),
|
||||||
"you gain life equal to it's toughness")));
|
"you gain life equal to its toughness")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PaladinOfAtonement(final PaladinOfAtonement card) {
|
private PaladinOfAtonement(final PaladinOfAtonement card) {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public final class PathOfDiscovery extends CardImpl {
|
||||||
// Whenever a creature enters the battlefield under your control, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on the creature, then put the card back or put it into your graveyard.)
|
// Whenever a creature enters the battlefield under your control, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on the creature, then put the card back or put it into your graveyard.)
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD, new ExploreTargetEffect(),
|
Zone.BATTLEFIELD, new ExploreTargetEffect(),
|
||||||
StaticFilters.FILTER_CONTROLLED_A_CREATURE, false, SetTargetPointer.PERMANENT, null));
|
StaticFilters.FILTER_PERMANENT_A_CREATURE, false, SetTargetPointer.PERMANENT, null));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public final class PendrellMists extends CardImpl {
|
||||||
// All creatures have "At the beginning of your upkeep, sacrifice this creature unless you pay {1}."
|
// All creatures have "At the beginning of your upkeep, sacrifice this creature unless you pay {1}."
|
||||||
Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(1)), TargetController.YOU, false);
|
Ability gainedAbility = new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new GenericManaCost(1)), TargetController.YOU, false);
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES,
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(gainedAbility, Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENT_CREATURES,
|
||||||
"All creatures have \"At the beginning of your upkeep, sacrifice this creature unless you pay {1}")));
|
"All creatures have \"At the beginning of your upkeep, sacrifice this creature unless you pay {1}.\"")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private PendrellMists(final PendrellMists card) {
|
private PendrellMists(final PendrellMists card) {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public final class PyriteSpellbomb extends CardImpl {
|
||||||
|
|
||||||
public PyriteSpellbomb(UUID ownerId, CardSetInfo setInfo) {
|
public PyriteSpellbomb(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
|
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
|
||||||
Ability firstAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ColoredManaCost(ColoredManaSymbol.R));
|
Ability firstAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2, "it"), new ColoredManaCost(ColoredManaSymbol.R));
|
||||||
firstAbility.addCost(new SacrificeSourceCost());
|
firstAbility.addCost(new SacrificeSourceCost());
|
||||||
firstAbility.addTarget(new TargetAnyTarget());
|
firstAbility.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(firstAbility);
|
this.addAbility(firstAbility);
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class SanctumOfTheSun extends CardImpl {
|
||||||
|
|
||||||
// {T}: Add X mana of any one color, where X is your life total.
|
// {T}: Add X mana of any one color, where X is your life total.
|
||||||
this.addAbility(new DynamicManaAbility(new Mana(0, 0, 0, 0, 0, 0, 1, 0), ControllerLifeCount.instance, new TapSourceCost(),
|
this.addAbility(new DynamicManaAbility(new Mana(0, 0, 0, 0, 0, 0, 1, 0), ControllerLifeCount.instance, new TapSourceCost(),
|
||||||
"Add X mana of any one color, where X is is your life total", true));
|
"Add X mana of any one color, where X is your life total", true));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public final class SerratedBiskelion extends CardImpl {
|
||||||
|
|
||||||
// {tap}: Put a -1/-1 counter on Serrated Biskelion and a -1/-1 counter on target creature.
|
// {tap}: Put a -1/-1 counter on Serrated Biskelion and a -1/-1 counter on target creature.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.M1M1.createInstance(), true), new TapSourceCost());
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.M1M1.createInstance(), true), new TapSourceCost());
|
||||||
ability.addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance()));
|
ability.addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance()).setText("and a -1/-1 counter on target creature"));
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ public final class ShamanOfTheGreatHunt extends CardImpl {
|
||||||
// Haste
|
// Haste
|
||||||
this.addAbility(HasteAbility.getInstance());
|
this.addAbility(HasteAbility.getInstance());
|
||||||
|
|
||||||
// Whenever a creature you control deals combat damage to a player, put a +1/+1 counter on that creature.
|
// Whenever a creature you control deals combat damage to a player, put a +1/+1 counter on it.
|
||||||
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance());
|
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance());
|
||||||
effect.setText("put a +1/+1 counter on that creature");
|
effect.setText("put a +1/+1 counter on it");
|
||||||
this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
|
this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
|
||||||
effect,
|
effect,
|
||||||
StaticFilters.FILTER_CONTROLLED_A_CREATURE, false, SetTargetPointer.PERMANENT, true
|
StaticFilters.FILTER_CONTROLLED_A_CREATURE, false, SetTargetPointer.PERMANENT, true
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public final class SkitteringMonstrosity extends CardImpl {
|
||||||
// When you cast a creature spell, sacrifice Skittering Monstrosity.
|
// When you cast a creature spell, sacrifice Skittering Monstrosity.
|
||||||
this.addAbility(new SpellCastControllerTriggeredAbility(
|
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||||
new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false
|
new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false
|
||||||
));
|
).setTriggerPhrase("When you cast a creature spell, "));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SkitteringMonstrosity(final SkitteringMonstrosity card) {
|
private SkitteringMonstrosity(final SkitteringMonstrosity card) {
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public final class SlipperyScoundrel extends CardImpl {
|
||||||
// As long as you have the city's blessing Slippery Scoundrel has Hexproof and can't be blocked.
|
// As long as you have the city's blessing Slippery Scoundrel has Hexproof and can't be blocked.
|
||||||
ContinuousEffect boostSource = new GainAbilitySourceEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield);
|
ContinuousEffect boostSource = new GainAbilitySourceEffect(HexproofAbility.getInstance(), Duration.WhileOnBattlefield);
|
||||||
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, CitysBlessingCondition.instance,
|
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(boostSource, CitysBlessingCondition.instance,
|
||||||
"As long as you have the city's blessing {this} has Hexproof");
|
"As long as you have the city's blessing, {this} has hexproof");
|
||||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
|
||||||
RestrictionEffect restrictionEffect = new CantBeBlockedSourceEffect(Duration.WhileOnBattlefield);
|
RestrictionEffect restrictionEffect = new CantBeBlockedSourceEffect(Duration.WhileOnBattlefield);
|
||||||
Effect effect2 = new ConditionalRestrictionEffect(restrictionEffect, CitysBlessingCondition.instance)
|
Effect effect2 = new ConditionalRestrictionEffect(restrictionEffect, CitysBlessingCondition.instance)
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ public final class StampedingHorncrest extends CardImpl {
|
||||||
|
|
||||||
// Stampeding Horncrest has haste as long as you control another Dinosaur.
|
// Stampeding Horncrest has haste as long as you control another Dinosaur.
|
||||||
Effect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(HasteAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter),
|
Effect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(HasteAbility.getInstance()), new PermanentsOnTheBattlefieldCondition(filter),
|
||||||
"{this} has haste as long as you control another dinosaur");
|
"{this} has haste as long as you control another Dinosaur");
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,8 @@ public final class StrawGolem extends CardImpl {
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
// When an opponent casts a creature spell, sacrifice Straw Golem.
|
// When an opponent casts a creature spell, sacrifice Straw Golem.
|
||||||
this.addAbility(new SpellCastOpponentTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false));
|
this.addAbility(new SpellCastOpponentTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A_CREATURE, false)
|
||||||
|
.setTriggerPhrase("When an opponent casts a creature spell, "));
|
||||||
}
|
}
|
||||||
|
|
||||||
private StrawGolem(final StrawGolem card) {
|
private StrawGolem(final StrawGolem card) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||||
|
|
@ -14,7 +13,8 @@ import mage.constants.AttachmentType;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
@ -27,11 +27,13 @@ public final class StriderHarness extends CardImpl {
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
this.subtype.add(SubType.EQUIPMENT);
|
||||||
|
|
||||||
// Equipped creature gets +1/+1 and has haste.
|
// Equipped creature gets +1/+1 and has haste.
|
||||||
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1)));
|
Ability ability = new SimpleStaticAbility(new BoostEquippedEffect(1, 1));
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT)));
|
ability.addEffect(new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT)
|
||||||
|
.setText("and has haste"));
|
||||||
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Equip 1 (1: Attach to target creature you control. Equip only as a sorcery.)
|
// Equip 1 (1: Attach to target creature you control. Equip only as a sorcery.)
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 1)));
|
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private StriderHarness(final StriderHarness card) {
|
private StriderHarness(final StriderHarness card) {
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ public final class SummonsOfSaruman extends CardImpl {
|
||||||
|
|
||||||
// Flashback--{3}{U}{R}, Exile X cards from your graveyard.
|
// Flashback--{3}{U}{R}, Exile X cards from your graveyard.
|
||||||
Ability flashback = new FlashbackAbility(this, new ManaCostsImpl<>("{3}{U}{R}"));
|
Ability flashback = new FlashbackAbility(this, new ManaCostsImpl<>("{3}{U}{R}"));
|
||||||
flashback.addCost(new ExileXFromYourGraveCost(StaticFilters.FILTER_CARD_CARDS));
|
flashback.addCost(new ExileXFromYourGraveCost(StaticFilters.FILTER_CARDS_FROM_YOUR_GRAVEYARD));
|
||||||
this.addAbility(flashback);
|
this.addAbility(flashback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package mage.cards.s;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.DiesSourceTriggeredAbility;
|
import mage.abilities.common.DiesSourceTriggeredAbility;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.ExileSourceEffect;
|
import mage.abilities.effects.common.ExileSourceEffect;
|
||||||
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -16,7 +15,6 @@ import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author jmharmon
|
* @author jmharmon
|
||||||
|
|
@ -39,9 +37,8 @@ public final class SylvanHierophant extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// When Sylvan Hierophant dies, exile Sylvan Hierophant, then return another target creature card from your graveyard to your hand.
|
// When Sylvan Hierophant dies, exile Sylvan Hierophant, then return another target creature card from your graveyard to your hand.
|
||||||
Effect effect = new ReturnFromGraveyardToHandTargetEffect();
|
|
||||||
Ability ability = new DiesSourceTriggeredAbility(new ExileSourceEffect(), false);
|
Ability ability = new DiesSourceTriggeredAbility(new ExileSourceEffect(), false);
|
||||||
ability.addEffect(effect);
|
ability.addEffect(new ReturnFromGraveyardToHandTargetEffect().concatBy(", then"));
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public final class TadeasJuniperAscendant extends CardImpl {
|
||||||
// Tadeas has hexproof unless it's attacking.
|
// Tadeas has hexproof unless it's attacking.
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(HexproofAbility.getInstance()),
|
new GainAbilitySourceEffect(HexproofAbility.getInstance()),
|
||||||
condition, "{this} has hexproof unless he's attacking"
|
condition, "{this} has hexproof unless it's attacking"
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// Whenever a creature you control with reach attacks, untap it and it can't be blocked by creatures with greater power this combat.
|
// Whenever a creature you control with reach attacks, untap it and it can't be blocked by creatures with greater power this combat.
|
||||||
|
|
@ -123,6 +123,7 @@ class TadeasJuniperAscendantEvasionEffect extends RestrictionEffect {
|
||||||
return this.targetPointer.getTargets(game, source).contains(permanent.getId());
|
return this.targetPointer.getTargets(game, source).contains(permanent.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) {
|
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game, boolean canUseChooseDialogs) {
|
||||||
return blocker.getPower().getValue() <= attacker.getPower().getValue();
|
return blocker.getPower().getValue() <= attacker.getPower().getValue();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ class TemurWarShamanTriggeredAbility extends TurnedFaceUpAllTriggeredAbility {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Whenever a permanent you control is turned face up, if it is a creature, you may have it fight target creature you don't control.";
|
return "Whenever a permanent you control is turned face up, if it's a creature, you may have it fight target creature you don't control.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,15 +42,15 @@ public final class TheHowlingAbomination extends CardImpl {
|
||||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(TrampleAbility.getInstance()), TheHowlingAbominationCondition.instance,
|
new GainAbilitySourceEffect(TrampleAbility.getInstance()), TheHowlingAbominationCondition.instance,
|
||||||
"{this} has trample as long as you've cast three or more spells this turn"
|
"{this} has trample as long as you've cast three or more spells this turn"
|
||||||
)).withFlavorWord("Rolling Attack"));
|
)));
|
||||||
|
|
||||||
// Electric Thunder—Whenever Blanka becomes the target of a spell, he gets +2/+2 until end of turn and deals 2 damage to each opponent.
|
// Electric Thunder—Whenever Blanka becomes the target of a spell, he gets +2/+2 until end of turn and deals 2 damage to each opponent.
|
||||||
Ability ability = new SourceBecomesTargetTriggeredAbility(new BoostSourceEffect(
|
Ability ability = new SourceBecomesTargetTriggeredAbility(new BoostSourceEffect(
|
||||||
2, 2, Duration.EndOfTurn
|
2, 2, Duration.EndOfTurn
|
||||||
).setText("he gets +2/+2 until end of turn"), StaticFilters.FILTER_SPELL_A).setTriggerPhrase("Whenever {this} becomes the target of a spell, ");
|
).setText("it gets +2/+2 until end of turn"), StaticFilters.FILTER_SPELL_A).setTriggerPhrase("Whenever {this} becomes the target of a spell, ");
|
||||||
ability.addEffect(new DamagePlayersEffect(2, TargetController.OPPONENT)
|
ability.addEffect(new DamagePlayersEffect(2, TargetController.OPPONENT)
|
||||||
.setText("and deals 2 damage to each opponent"));
|
.setText("and deals 2 damage to each opponent"));
|
||||||
this.addAbility(ability.withFlavorWord("Electric Thunder"));
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TheHowlingAbomination(final TheHowlingAbomination card) {
|
private TheHowlingAbomination(final TheHowlingAbomination card) {
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ import mage.game.stack.StackObject;
|
||||||
*/
|
*/
|
||||||
public final class ThrunBreakerOfSilence extends CardImpl {
|
public final class ThrunBreakerOfSilence extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ThrunBreakerOfSilence(UUID ownerId, CardSetInfo setInfo) {
|
public ThrunBreakerOfSilence(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
|
||||||
|
|
||||||
|
|
@ -65,18 +63,18 @@ public final class ThrunBreakerOfSilence extends CardImpl {
|
||||||
|
|
||||||
class ThrunBreakerOfSilenceEffect extends ContinuousRuleModifyingEffectImpl {
|
class ThrunBreakerOfSilenceEffect extends ContinuousRuleModifyingEffectImpl {
|
||||||
|
|
||||||
public ThrunBreakerOfSilenceEffect() {
|
ThrunBreakerOfSilenceEffect() {
|
||||||
super(Duration.WhileOnBattlefield, Outcome.BoostCreature);
|
super(Duration.WhileOnBattlefield, Outcome.AddAbility);
|
||||||
staticText = "{this} can't be the target of nongreen spells your opponents control or abilities from nongreen sources your opponents control";
|
staticText = "{this} can't be the target of nongreen spells your opponents control or abilities from nongreen sources your opponents control";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ThrunBreakerOfSilenceEffect(final mage.cards.t.ThrunBreakerOfSilenceEffect effect) {
|
private ThrunBreakerOfSilenceEffect(final ThrunBreakerOfSilenceEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public mage.cards.t.ThrunBreakerOfSilenceEffect copy() {
|
public ThrunBreakerOfSilenceEffect copy() {
|
||||||
return new mage.cards.t.ThrunBreakerOfSilenceEffect(this);
|
return new ThrunBreakerOfSilenceEffect(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public final class TyrantsFamiliar extends CardImpl {
|
||||||
Ability gainedAbility = new AttacksTriggeredAbility(new DamageTargetEffect(7, "it"), false);
|
Ability gainedAbility = new AttacksTriggeredAbility(new DamageTargetEffect(7, "it"), false);
|
||||||
gainedAbility.addTarget(new TargetPermanent(filter));
|
gainedAbility.addTarget(new TargetPermanent(filter));
|
||||||
ContinuousEffect effect = new GainAbilitySourceEffect(gainedAbility);
|
ContinuousEffect effect = new GainAbilitySourceEffect(gainedAbility);
|
||||||
effect.setText("and has \"Whenever {this} attacks, it deals 7 damage to target creature defending player controls\"");
|
effect.setText("and has \"Whenever {this} attacks, it deals 7 damage to target creature defending player controls.\"");
|
||||||
this.addAbility(new LieutenantAbility(effect));
|
this.addAbility(new LieutenantAbility(effect));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ public final class Vaultbreaker extends CardImpl {
|
||||||
|
|
||||||
// Whenever Vaultbreaker attacks, you may discard a card. If you do, draw a card.
|
// Whenever Vaultbreaker attacks, you may discard a card. If you do, draw a card.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1),
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new DrawCardSourceControllerEffect(1),
|
||||||
new DiscardCardCost()), false, "Whenever {this} attacks, you may discard a card. If you do, draw a card"));
|
new DiscardCardCost())));
|
||||||
|
|
||||||
// Dash {2}{R}
|
// Dash {2}{R}
|
||||||
this.addAbility(new DashAbility("{2}{R}"));
|
this.addAbility(new DashAbility("{2}{R}"));
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public final class VikyaScorchingStalwart extends CardImpl {
|
||||||
ability.addCost(new UntapSourceCost());
|
ability.addCost(new UntapSourceCost());
|
||||||
ability.addCost(new DiscardCardCost());
|
ability.addCost(new DiscardCardCost());
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability.withFlavorWord("Hadoken"));
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private VikyaScorchingStalwart(final VikyaScorchingStalwart card) {
|
private VikyaScorchingStalwart(final VikyaScorchingStalwart card) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ public final class VonasHunger extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new VonasHungerEffect(),
|
new VonasHungerEffect(),
|
||||||
CitysBlessingCondition.instance,
|
CitysBlessingCondition.instance,
|
||||||
"If you have the city's blessing, instead each opponent sacrifices half the creatures they control rounded up"));
|
"If you have the city's blessing, instead each opponent sacrifices half the creatures they control, rounded up"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private VonasHunger(final VonasHunger card) {
|
private VonasHunger(final VonasHunger card) {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,8 @@ public final class VoraciousVampire extends CardImpl {
|
||||||
this.addAbility(new MenaceAbility(false));
|
this.addAbility(new MenaceAbility(false));
|
||||||
|
|
||||||
// When Voracious Vampire enters the battlefield, target Vampire you control gets +1/+1 and gains menace until end of turn.
|
// When Voracious Vampire enters the battlefield, target Vampire you control gets +1/+1 and gains menace until end of turn.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn), false);
|
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(1, 1, Duration.EndOfTurn)
|
||||||
|
.setText("target Vampire you control gets +1/+1"), false);
|
||||||
Effect effect = new GainAbilityTargetEffect(new MenaceAbility(), Duration.EndOfTurn);
|
Effect effect = new GainAbilityTargetEffect(new MenaceAbility(), Duration.EndOfTurn);
|
||||||
effect.setText("and gains menace until end of turn.");
|
effect.setText("and gains menace until end of turn.");
|
||||||
ability.addEffect(effect);
|
ability.addEffect(effect);
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ import mage.filter.predicate.permanent.TokenPredicate;
|
||||||
*/
|
*/
|
||||||
public final class WhisperwoodElemental extends CardImpl {
|
public final class WhisperwoodElemental extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-up, nontoken creatures you control");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("face-up nontoken creatures you control");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.not(FaceDownPredicate.instance));
|
filter.add(Predicates.not(FaceDownPredicate.instance));
|
||||||
|
|
@ -48,7 +48,7 @@ public final class WhisperwoodElemental extends CardImpl {
|
||||||
// Sacrifice Whisperwood Elemental: Until end of turn, face-up, nontoken creatures you control gain "When this creature dies, manifest the top card of your library."
|
// Sacrifice Whisperwood Elemental: Until end of turn, face-up, nontoken creatures you control gain "When this creature dies, manifest the top card of your library."
|
||||||
Ability abilityToGain = new DiesSourceTriggeredAbility(new ManifestEffect(1));
|
Ability abilityToGain = new DiesSourceTriggeredAbility(new ManifestEffect(1));
|
||||||
Effect effect = new GainAbilityControlledEffect(abilityToGain, Duration.EndOfTurn, filter);
|
Effect effect = new GainAbilityControlledEffect(abilityToGain, Duration.EndOfTurn, filter);
|
||||||
effect.setText("Until end of turn, face-up, nontoken creatures you control gain \"When this creature dies, manifest the top card of your library.\"");
|
effect.setText("Until end of turn, face-up nontoken creatures you control gain \"When this creature dies, manifest the top card of your library.\"");
|
||||||
this.addAbility(new SimpleActivatedAbility(
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
Zone.ALL, effect, new SacrificeSourceCost()));
|
Zone.ALL, effect, new SacrificeSourceCost()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ class WrexialTheRisenDeepTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
return "Whenever {this} deals combat damage to a player, "
|
return "Whenever {this} deals combat damage to a player, "
|
||||||
+ "you may cast target instant or sorcery card "
|
+ "you may cast target instant or sorcery card "
|
||||||
+ "from that player's graveyard without paying its mana cost. "
|
+ "from that player's graveyard without paying its mana cost. "
|
||||||
+ "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.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public final class ZethiArcaneBlademaster extends CardImpl {
|
||||||
.setTargetAdjuster(ZethiArcaneBlademasterAdjuster.instance));
|
.setTargetAdjuster(ZethiArcaneBlademasterAdjuster.instance));
|
||||||
|
|
||||||
// Lightning Kick—Whenever Chun-Li attacks, copy each exiled card you own with a kick counter on it. You may cast the copies.
|
// Lightning Kick—Whenever Chun-Li attacks, copy each exiled card you own with a kick counter on it. You may cast the copies.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new ZethiArcaneBlademasterCastEffect()).withFlavorWord("Lightning Kick"));
|
this.addAbility(new AttacksTriggeredAbility(new ZethiArcaneBlademasterCastEffect()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ZethiArcaneBlademaster(final ZethiArcaneBlademaster card) {
|
private ZethiArcaneBlademaster(final ZethiArcaneBlademaster card) {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ public class WhisperwoodElementalTest extends CardTestPlayerBase {
|
||||||
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion", 1);
|
addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion", 1);
|
||||||
addCard(Zone.HAND, playerA, "Lightning Bolt");
|
addCard(Zone.HAND, playerA, "Lightning Bolt");
|
||||||
|
|
||||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice {this}: Until end of turn, face-up, nontoken creatures you control gain \"When this creature dies, manifest the top card of your library.");
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice {this}: Until end of turn, face-up");
|
||||||
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", "Silvercoat Lion");
|
castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", "Silvercoat Lion");
|
||||||
|
|
||||||
setStopAt(1, PhaseStep.END_TURN);
|
setStopAt(1, PhaseStep.END_TURN);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ public class ExileTopCreatureCardOfGraveyardCost extends CostImpl {
|
||||||
|
|
||||||
public ExileTopCreatureCardOfGraveyardCost(int amount) {
|
public ExileTopCreatureCardOfGraveyardCost(int amount) {
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.text = "Exile the top creature card of your graveyard";
|
this.text = "exile the top creature card of your graveyard";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExileTopCreatureCardOfGraveyardCost(ExileTopCreatureCardOfGraveyardCost cost) {
|
public ExileTopCreatureCardOfGraveyardCost(ExileTopCreatureCardOfGraveyardCost cost) {
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ public class ReturnToHandFromGraveyardCost extends CostImpl {
|
||||||
|
|
||||||
public ReturnToHandFromGraveyardCost(TargetCardInYourGraveyard target) {
|
public ReturnToHandFromGraveyardCost(TargetCardInYourGraveyard target) {
|
||||||
this.addTarget(target);
|
this.addTarget(target);
|
||||||
this.text = "return " + target.getDescription() + " from graveyard to it's owner's hand";
|
this.text = "return " + target.getDescription() + " from your graveyard to your hand";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReturnToHandFromGraveyardCost(ReturnToHandFromGraveyardCost cost) {
|
public ReturnToHandFromGraveyardCost(ReturnToHandFromGraveyardCost cost) {
|
||||||
|
|
|
||||||
|
|
@ -76,11 +76,4 @@ public class DamageAllEffect extends OneShotEffect {
|
||||||
staticText = sb.toString();
|
staticText = sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSourceName() {
|
|
||||||
return sourceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSourceName(String sourceName) {
|
|
||||||
this.sourceName = sourceName;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ public class DamageWithExcessEffect extends OneShotEffect {
|
||||||
public DamageWithExcessEffect(DynamicValue amount) {
|
public DamageWithExcessEffect(DynamicValue amount) {
|
||||||
super(Outcome.Damage);
|
super(Outcome.Damage);
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.staticText = "{this} deals " + amount + " damage to target creature" +
|
this.staticText = "{this} deals " + (amount instanceof StaticValue ? amount : "X") + " damage to target creature" +
|
||||||
(amount instanceof StaticValue ? "" : ", where X is " + amount.getMessage()) +
|
(amount instanceof StaticValue ? "" : ", where X is the number of " + amount.getMessage()) +
|
||||||
". Excess damage is dealt to that creature's controller instead";
|
". Excess damage is dealt to that creature's controller instead";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import mage.abilities.TriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.effects.ContinuousEffectImpl;
|
import mage.abilities.effects.ContinuousEffectImpl;
|
||||||
import mage.abilities.keyword.ProtectionAbility;
|
import mage.abilities.keyword.ProtectionAbility;
|
||||||
|
import mage.abilities.mana.ManaAbility;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
|
@ -143,7 +144,9 @@ public class GainAbilityAttachedEffect extends ContinuousEffectImpl {
|
||||||
}
|
}
|
||||||
boolean quotes = ability instanceof SimpleActivatedAbility
|
boolean quotes = ability instanceof SimpleActivatedAbility
|
||||||
|| ability instanceof TriggeredAbility
|
|| ability instanceof TriggeredAbility
|
||||||
|| ability instanceof LoyaltyAbility;
|
|| ability instanceof LoyaltyAbility
|
||||||
|
|| ability instanceof ManaAbility
|
||||||
|
|| ability.getRule().startsWith("If ");
|
||||||
if (quotes) {
|
if (quotes) {
|
||||||
sb.append('"');
|
sb.append('"');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public class SearchLibraryGraveyardWithLessMVPutIntoPlay extends OneShotEffect {
|
||||||
public SearchLibraryGraveyardWithLessMVPutIntoPlay(FilterCard filter) {
|
public SearchLibraryGraveyardWithLessMVPutIntoPlay(FilterCard filter) {
|
||||||
super(Outcome.PutCreatureInPlay);
|
super(Outcome.PutCreatureInPlay);
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
staticText = "Search your library and/or graveyard for a " + filter.getMessage() + " with mana value X or less, put it onto the battlefield. If you search your library this way, shuffle.";
|
staticText = "Search your library and/or graveyard for a " + filter.getMessage() + " with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle.";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected SearchLibraryGraveyardWithLessMVPutIntoPlay(final SearchLibraryGraveyardWithLessMVPutIntoPlay effect) {
|
protected SearchLibraryGraveyardWithLessMVPutIntoPlay(final SearchLibraryGraveyardWithLessMVPutIntoPlay effect) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue