mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
a bunch of unrelated text fixes
This commit is contained in:
parent
519a9e0c49
commit
492c7c9db8
38 changed files with 121 additions and 127 deletions
|
|
@ -44,7 +44,7 @@ class AetherBarrierEffect extends SacrificeEffect {
|
||||||
|
|
||||||
AetherBarrierEffect() {
|
AetherBarrierEffect() {
|
||||||
super(new FilterPermanent("permanent to sacrifice"), 1, "that player");
|
super(new FilterPermanent("permanent to sacrifice"), 1, "that player");
|
||||||
this.staticText = "that player sacrifices a permanent unless they pay {1}";
|
this.staticText = "that player sacrifices a permanent of their choice unless they pay {1}";
|
||||||
}
|
}
|
||||||
|
|
||||||
private AetherBarrierEffect(final AetherBarrierEffect effect) {
|
private AetherBarrierEffect(final AetherBarrierEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class BattleOfHooverDam extends CardImpl {
|
public final class BattleOfHooverDam extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCreatureCard();
|
private static final FilterCard filter = new FilterCreatureCard("creature card with mana value 3 or less from your graveyard");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,8 @@ class BloatflySwarmPreventionEffect extends PreventDamageAndRemoveCountersEffect
|
||||||
|
|
||||||
BloatflySwarmPreventionEffect() {
|
BloatflySwarmPreventionEffect() {
|
||||||
super(true, true, true);
|
super(true, true, true);
|
||||||
staticText += ", then give each player a rad counter for each +1/+1 counter removed this way";
|
staticText = "If damage would be dealt to {this} while it has a +1/+1 counter on it, prevent that damage, remove that many +1/+1 counters from it, " +
|
||||||
|
"then give each player a rad counter for each +1/+1 counter removed this way";
|
||||||
}
|
}
|
||||||
|
|
||||||
private BloatflySwarmPreventionEffect(final BloatflySwarmPreventionEffect effect) {
|
private BloatflySwarmPreventionEffect(final BloatflySwarmPreventionEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -57,10 +57,10 @@ public final class CaitCageBrawler extends CardImpl {
|
||||||
|
|
||||||
class CaitCageBrawlerEffect extends OneShotEffect {
|
class CaitCageBrawlerEffect extends OneShotEffect {
|
||||||
|
|
||||||
public CaitCageBrawlerEffect() {
|
CaitCageBrawlerEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "you and defending player each draw a card, then discard a card. Put two +1/+1 counters on " +
|
this.staticText = "you and defending player each draw a card, then discard a card. Put two +1/+1 counters on " +
|
||||||
"{this} if you discarded the card with the highest mana value among those cards or tied for highest.";
|
"{this} if you discarded the card with the greatest mana value among those cards or tied for greatest";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected CaitCageBrawlerEffect(final CaitCageBrawlerEffect effect) {
|
protected CaitCageBrawlerEffect(final CaitCageBrawlerEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class CathedralAcolyte extends CardImpl {
|
public final class CathedralAcolyte extends CardImpl {
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
||||||
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature that entered the battlefield this turn");
|
private static final FilterCreaturePermanent filter2 = new FilterCreaturePermanent("creature that entered this turn");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(CounterAnyPredicate.instance);
|
filter.add(CounterAnyPredicate.instance);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -34,7 +33,7 @@ public final class CosmicHorror extends CardImpl {
|
||||||
this.addAbility(FirstStrikeAbility.getInstance());
|
this.addAbility(FirstStrikeAbility.getInstance());
|
||||||
|
|
||||||
// At the beginning of your upkeep, destroy Cosmic Horror unless you pay {3}{B}{B}{B}. If Cosmic Horror is destroyed this way, it deals 7 damage to you.
|
// At the beginning of your upkeep, destroy Cosmic Horror unless you pay {3}{B}{B}{B}. If Cosmic Horror is destroyed this way, it deals 7 damage to you.
|
||||||
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CosmicHorrorEffect(new ManaCostsImpl<>("{3}{B}{B}{B}"))));
|
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CosmicHorrorEffect()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CosmicHorror(final CosmicHorror card) {
|
private CosmicHorror(final CosmicHorror card) {
|
||||||
|
|
@ -49,30 +48,22 @@ public final class CosmicHorror extends CardImpl {
|
||||||
|
|
||||||
class CosmicHorrorEffect extends OneShotEffect {
|
class CosmicHorrorEffect extends OneShotEffect {
|
||||||
|
|
||||||
protected Cost cost;
|
CosmicHorrorEffect() {
|
||||||
|
|
||||||
public CosmicHorrorEffect(Cost cost) {
|
|
||||||
super(Outcome.DestroyPermanent);
|
super(Outcome.DestroyPermanent);
|
||||||
this.cost = cost;
|
staticText = "destroy {this} unless you pay {3}{B}{B}{B}. If {this} is destroyed this way, it deals 7 damage to you";
|
||||||
staticText = "destroy {this} unless you pay {3}{B}{B}{B}. If {this} is destroyed this way it deals 7 damage to you";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CosmicHorrorEffect(final CosmicHorrorEffect effect) {
|
private CosmicHorrorEffect(final CosmicHorrorEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
this.cost = effect.cost.copy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Permanent cosmicHorror = game.getPermanentOrLKIBattlefield(source.getSourceId());
|
Permanent cosmicHorror = source.getSourcePermanentIfItStillExists(game);
|
||||||
if (controller != null && cosmicHorror != null) {
|
if (controller != null && cosmicHorror != null) {
|
||||||
StringBuilder sb = new StringBuilder(cost.getText()).append('?');
|
if (controller.chooseUse(Outcome.Benefit, "Pay {3}{B}{B}{B} to prevent destroy effect?", source, game)) {
|
||||||
if (!sb.toString().toLowerCase(Locale.ENGLISH).startsWith("exile ") && !sb.toString().toLowerCase(Locale.ENGLISH).startsWith("return ")) {
|
Cost cost = new ManaCostsImpl<>("{3}{B}{B}{B}");
|
||||||
sb.insert(0, "Pay ");
|
|
||||||
}
|
|
||||||
if (controller.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
|
|
||||||
cost.clearPaid();
|
|
||||||
if (cost.pay(source, game, source, source.getControllerId(), false, null)) {
|
if (cost.pay(source, game, source, source.getControllerId(), false, null)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class DomrisNodorog extends CardImpl {
|
public final class DomrisNodorog extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCard("card named Domri, City Smasher");
|
private static final FilterCard filter = new FilterCard("a card named Domri, City Smasher");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(new NamePredicate("Domri, City Smasher"));
|
filter.add(new NamePredicate("Domri, City Smasher"));
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ class FirestormPhoenixEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
FirestormPhoenixEffect() {
|
FirestormPhoenixEffect() {
|
||||||
super(Duration.Custom, Outcome.ReturnToHand);
|
super(Duration.Custom, Outcome.ReturnToHand);
|
||||||
staticText = "If {this} would die, return {this} to its owner's hand instead. " +
|
staticText = "If {this} would die, return it to its owner's hand instead. " +
|
||||||
"Until that player's next turn, that player plays with that card revealed in their hand and can't play it";
|
"Until that player's next turn, that player plays with that card revealed in their hand and can't play it";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package mage.cards.g;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.keyword.BattleCryAbility;
|
import mage.abilities.keyword.BattleCryAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -34,10 +34,7 @@ public final class GarbageElementalC extends CardImpl {
|
||||||
this.addAbility(new BattleCryAbility());
|
this.addAbility(new BattleCryAbility());
|
||||||
|
|
||||||
// When Garbage Elemental enters the battlefield, roll two six-sided dice. Create a number of 1/1 red Goblin creature tokens equal to the difference between those results.
|
// When Garbage Elemental enters the battlefield, roll two six-sided dice. Create a number of 1/1 red Goblin creature tokens equal to the difference between those results.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new GarbageElementalCEffect(),
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new GarbageElementalCEffect()));
|
||||||
null,
|
|
||||||
"When {this} enters, roll two six-sided dice. Create a number of 1/1 red Goblin creature tokens equal to the difference between those results",
|
|
||||||
null));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ public final class Gravelighter extends CardImpl {
|
||||||
new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1),
|
||||||
new SacrificeAllEffect(StaticFilters.FILTER_PERMANENT_CREATURE),
|
new SacrificeAllEffect(StaticFilters.FILTER_PERMANENT_CREATURE),
|
||||||
MorbidCondition.instance, "draw a card if a creature died this turn. " +
|
MorbidCondition.instance, "draw a card if a creature died this turn. " +
|
||||||
"Otherwise, each player sacrifices a creature"
|
"Otherwise, each player sacrifices a creature of their choice"
|
||||||
)).addHint(MorbidHint.instance));
|
)).addHint(MorbidHint.instance));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ class HallowedMoonlightEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
HallowedMoonlightEffect() {
|
HallowedMoonlightEffect() {
|
||||||
super(Duration.EndOfTurn, Outcome.Exile);
|
super(Duration.EndOfTurn, Outcome.Exile);
|
||||||
staticText = "Until end of turn, if a creature would enter the battlefield and it wasn't cast, exile it instead";
|
staticText = "Until end of turn, if a creature would enter and it wasn't cast, exile it instead";
|
||||||
}
|
}
|
||||||
|
|
||||||
private HallowedMoonlightEffect(final HallowedMoonlightEffect effect) {
|
private HallowedMoonlightEffect(final HallowedMoonlightEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.TriggeredAbilityImpl;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect;
|
import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
|
@ -38,7 +37,7 @@ public final class HammerJammer extends CardImpl {
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
// As Hammer Jammer enters the battlefield, roll a six-sided die. Hammer Jammer enters the battlefield with a number of +1/+1 counters on it equal to the result.
|
// As Hammer Jammer enters the battlefield, roll a six-sided die. Hammer Jammer enters the battlefield with a number of +1/+1 counters on it equal to the result.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new HammerJammerEntersEffect(CounterType.P1P1.createInstance())));
|
this.addAbility(new AsEntersBattlefieldAbility(new HammerJammerEntersEffect(CounterType.P1P1.createInstance())));
|
||||||
|
|
||||||
// Whenever you roll a die, remove all +1/+1 counters from Hammer Jammer, then put a number of +1/+1 counters on it equal to the result.
|
// Whenever you roll a die, remove all +1/+1 counters from Hammer Jammer, then put a number of +1/+1 counters on it equal to the result.
|
||||||
this.addAbility(new HammerJammerTriggeredAbility());
|
this.addAbility(new HammerJammerTriggeredAbility());
|
||||||
|
|
@ -59,9 +58,10 @@ class HammerJammerEntersEffect extends EntersBattlefieldWithXCountersEffect {
|
||||||
|
|
||||||
HammerJammerEntersEffect(Counter counter) {
|
HammerJammerEntersEffect(Counter counter) {
|
||||||
super(counter);
|
super(counter);
|
||||||
|
staticText = "roll a six-sided die. {this} enters with a number of +1/+1 counters on it equal to the result";
|
||||||
}
|
}
|
||||||
|
|
||||||
public HammerJammerEntersEffect(EntersBattlefieldWithXCountersEffect effect) {
|
private HammerJammerEntersEffect(EntersBattlefieldWithXCountersEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -86,7 +86,7 @@ class HammerJammerEntersEffect extends EntersBattlefieldWithXCountersEffect {
|
||||||
|
|
||||||
class HammerJammerTriggeredAbility extends TriggeredAbilityImpl {
|
class HammerJammerTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
public HammerJammerTriggeredAbility() {
|
HammerJammerTriggeredAbility() {
|
||||||
super(Zone.BATTLEFIELD, new HammerJammerEffect(), false);
|
super(Zone.BATTLEFIELD, new HammerJammerEffect(), false);
|
||||||
setTriggerPhrase("Whenever you roll a die, ");
|
setTriggerPhrase("Whenever you roll a die, ");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.AsEntersBattlefieldAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.keyword.ReachAbility;
|
import mage.abilities.keyword.ReachAbility;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
|
|
@ -13,8 +12,6 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterPermanent;
|
|
||||||
import mage.filter.predicate.permanent.CounterAnyPredicate;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
@ -38,10 +35,8 @@ public final class Hydradoodle extends CardImpl {
|
||||||
this.toughness = new MageInt(0);
|
this.toughness = new MageInt(0);
|
||||||
|
|
||||||
// As Hydradoodle enters the battlefield, roll X six-sided dice. Hydradoodle enters the battlefield with a number of +1/+1 counters on it equal to the total of those results.
|
// As Hydradoodle enters the battlefield, roll X six-sided dice. Hydradoodle enters the battlefield with a number of +1/+1 counters on it equal to the total of those results.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new HydradoodleEffect(),
|
this.addAbility(new AsEntersBattlefieldAbility(new HydradoodleEffect()));
|
||||||
null,
|
|
||||||
"As {this} enters, roll X six-sided dice. {this} enters with a number of +1/+1 counters on it equal to the total of those results",
|
|
||||||
null));
|
|
||||||
// Reach
|
// Reach
|
||||||
this.addAbility(ReachAbility.getInstance());
|
this.addAbility(ReachAbility.getInstance());
|
||||||
|
|
||||||
|
|
@ -61,12 +56,6 @@ public final class Hydradoodle extends CardImpl {
|
||||||
|
|
||||||
class HydradoodleEffect extends OneShotEffect {
|
class HydradoodleEffect extends OneShotEffect {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("permanent with a counter");
|
|
||||||
|
|
||||||
static {
|
|
||||||
filter.add(CounterAnyPredicate.instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
HydradoodleEffect() {
|
HydradoodleEffect() {
|
||||||
super(Outcome.BoostCreature);
|
super(Outcome.BoostCreature);
|
||||||
this.staticText = "roll X six-sided dice. {this} enters with a number of +1/+1 counters on it equal to the total of those results";
|
this.staticText = "roll X six-sided dice. {this} enters with a number of +1/+1 counters on it equal to the total of those results";
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ public final class ImposingSovereign extends CardImpl {
|
||||||
// Creatures your opponents control enter the battlefield tapped.
|
// Creatures your opponents control enter the battlefield tapped.
|
||||||
this.addAbility(new SimpleStaticAbility(new PermanentsEnterBattlefieldTappedEffect(
|
this.addAbility(new SimpleStaticAbility(new PermanentsEnterBattlefieldTappedEffect(
|
||||||
StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE
|
StaticFilters.FILTER_OPPONENTS_PERMANENT_CREATURE
|
||||||
).setText("creatures your opponents control enter the battlefield tapped")));
|
).setText("creatures your opponents control enter tapped")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ImposingSovereign(final ImposingSovereign card) {
|
private ImposingSovereign(final ImposingSovereign card) {
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public final class ImposterMech extends CardImpl {
|
||||||
// You may have Imposter Mech enter the battlefield as a copy of a creature an opponent controls, except its a Vehicle artifact with crew 3 and it loses all other card types.
|
// You may have Imposter Mech enter the battlefield as a copy of a creature an opponent controls, except its a Vehicle artifact with crew 3 and it loses all other card types.
|
||||||
this.addAbility(new EntersBattlefieldAbility(
|
this.addAbility(new EntersBattlefieldAbility(
|
||||||
new CopyPermanentEffect(StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE, applier), true,
|
new CopyPermanentEffect(StaticFilters.FILTER_OPPONENTS_PERMANENT_A_CREATURE, applier), true,
|
||||||
null, "You may have {this} enter the battlefield as a copy of a creature " +
|
null, "You may have {this} enter as a copy of a creature " +
|
||||||
"an opponent controls, except it's a Vehicle artifact with crew 3 and it loses all other card types.", null
|
"an opponent controls, except it's a Vehicle artifact with crew 3 and it loses all other card types.", null
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ public final class InnerFire extends CardImpl {
|
||||||
|
|
||||||
|
|
||||||
// Add {R} for each card in your hand.
|
// Add {R} for each card in your hand.
|
||||||
this.getSpellAbility().addEffect(new DynamicManaEffect(Mana.RedMana(1), CardsInControllerHandCount.ANY));
|
this.getSpellAbility().addEffect(new DynamicManaEffect(Mana.RedMana(1), CardsInControllerHandCount.ANY_SINGULAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private InnerFire(final InnerFire card) {
|
private InnerFire(final InnerFire card) {
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@ class IronApprenticeEffect extends OneShotEffect {
|
||||||
|
|
||||||
IronApprenticeEffect() {
|
IronApprenticeEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
|
staticText = "put those counters on target creature you control";
|
||||||
}
|
}
|
||||||
|
|
||||||
private IronApprenticeEffect(final IronApprenticeEffect effect) {
|
private IronApprenticeEffect(final IronApprenticeEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,9 @@ public final class KjeldoranEliteGuard extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private KjeldoranEliteGuard(final KjeldoranEliteGuard card) { super(card); }
|
private KjeldoranEliteGuard(final KjeldoranEliteGuard card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KjeldoranEliteGuard copy() {
|
public KjeldoranEliteGuard copy() {
|
||||||
|
|
@ -57,7 +59,7 @@ class KjeldoranEliteGuardEffect extends OneShotEffect {
|
||||||
KjeldoranEliteGuardEffect() {
|
KjeldoranEliteGuardEffect() {
|
||||||
super(Outcome.Neutral);
|
super(Outcome.Neutral);
|
||||||
staticText = "Target creature gets +2/+2 until end of turn. "
|
staticText = "Target creature gets +2/+2 until end of turn. "
|
||||||
+ "When that creature leaves the battlefield this turn, sacrifice Kjeldoran Elite Guard.";
|
+ "When that creature leaves the battlefield this turn, sacrifice {this}.";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -79,10 +81,14 @@ class KjeldoranEliteGuardEffect extends OneShotEffect {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private KjeldoranEliteGuardEffect(KjeldoranEliteGuardEffect effect) { super(effect); }
|
private KjeldoranEliteGuardEffect(KjeldoranEliteGuardEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KjeldoranEliteGuardEffect copy() { return new KjeldoranEliteGuardEffect(this); }
|
public KjeldoranEliteGuardEffect copy() {
|
||||||
|
return new KjeldoranEliteGuardEffect(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
||||||
|
|
@ -105,7 +111,9 @@ class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkTrigger(GameEvent event, Game game) { return event.getTargetId().equals(creatureId); }
|
public boolean checkTrigger(GameEvent event, Game game) {
|
||||||
|
return event.getTargetId().equals(creatureId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KjeldoranEliteGuardDelayedTriggeredAbility copy() {
|
public KjeldoranEliteGuardDelayedTriggeredAbility copy() {
|
||||||
|
|
@ -113,5 +121,7 @@ class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() { return "that creature left the battlefield this turn"; }
|
public String getRule() {
|
||||||
|
return "that creature left the battlefield this turn";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,8 @@ public final class LagonnaBandTrailblazer extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// Heroic — Whenever you cast a spell that targets Lagonna-Band Trailblazer, put a +1/+1 counter on Lagonna-Band Trailblzer.
|
// Heroic — Whenever you cast a spell that targets Lagonna-Band Trailblazer, put a +1/+1 counter on Lagonna-Band Trailblzer.
|
||||||
this.addAbility(new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance())));
|
this.addAbility(new HeroicAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()))
|
||||||
|
.withRuleTextReplacement(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private LagonnaBandTrailblazer(final LagonnaBandTrailblazer card) {
|
private LagonnaBandTrailblazer(final LagonnaBandTrailblazer card) {
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,20 @@ import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.UntapSourceEffect;
|
import mage.abilities.effects.common.UntapSourceEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
|
||||||
import mage.abilities.keyword.EquipAbility;
|
import mage.abilities.keyword.EquipAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.AttachmentType;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.TargetPlayer;
|
import mage.target.common.TargetPlayerOrPlaneswalker;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -29,10 +31,10 @@ public final class LobeLobber extends CardImpl {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
this.subtype.add(SubType.EQUIPMENT);
|
||||||
|
|
||||||
// Equipped creature has "T: This creature deals 1 damage to target player. Roll a six-sided die. On a 5 or higher, untap it."
|
// Equipped creature has "T: This creature deals 1 damage to target player or planeswalker. Roll a six-sided die. On a 5 or higher, untap it."
|
||||||
Effect effect = new LobeLobberEffect();
|
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
|
||||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(effect, new TapSourceCost());
|
ability.addTarget(new TargetPlayerOrPlaneswalker());
|
||||||
ability.addTarget(new TargetPlayer());
|
ability.addEffect(new LobeLobberEffect());
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT)));
|
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT)));
|
||||||
|
|
||||||
// Equip 2
|
// Equip 2
|
||||||
|
|
@ -53,7 +55,7 @@ class LobeLobberEffect extends OneShotEffect {
|
||||||
|
|
||||||
LobeLobberEffect() {
|
LobeLobberEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "This creature deals 1 damage to target player. Roll a six-sided die. On a 5 or higher, untap it";
|
this.staticText = "Roll a six-sided die. On a 5 or higher, untap it";
|
||||||
}
|
}
|
||||||
|
|
||||||
private LobeLobberEffect(final LobeLobberEffect effect) {
|
private LobeLobberEffect(final LobeLobberEffect effect) {
|
||||||
|
|
@ -68,18 +70,13 @@ class LobeLobberEffect extends OneShotEffect {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Permanent equipment = game.getPermanent(source.getSourceId());
|
if (controller != null) {
|
||||||
Player player = game.getPlayer(source.getFirstTarget());
|
|
||||||
|
|
||||||
if (controller != null && equipment != null && player != null) {
|
|
||||||
player.damage(1, source.getSourceId(), source, game);
|
|
||||||
int amount = controller.rollDice(outcome, source, game, 6);
|
int amount = controller.rollDice(outcome, source, game, 6);
|
||||||
if (amount >= 5) {
|
if (amount >= 5) {
|
||||||
new UntapSourceEffect().apply(game, source);
|
new UntapSourceEffect().apply(game, source);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||||
import mage.abilities.keyword.FlyingAbility;
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
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.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
|
@ -26,8 +27,8 @@ public final class MoorlandDrifter extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// <i>Delirium</i> — Moorland Drifter has flying as long as there are four or more card types among cards in your graveyard.
|
// <i>Delirium</i> — Moorland Drifter has flying as long as there are four or more card types among cards in your graveyard.
|
||||||
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance()), DeliriumCondition.instance, "<i>Delirium</i> — Moorland Drifter has flying as long as there are four or more card types among cards in your graveyard.");
|
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance()), DeliriumCondition.instance, "{this} has flying as long as there are four or more card types among cards in your graveyard.");
|
||||||
this.addAbility(new SimpleStaticAbility(effect).addHint(CardTypesInGraveyardCount.YOU.getHint()));
|
this.addAbility(new SimpleStaticAbility(effect).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private MoorlandDrifter(final MoorlandDrifter card) {
|
private MoorlandDrifter(final MoorlandDrifter card) {
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public final class OkinaNightwatch extends CardImpl {
|
||||||
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new BoostSourceEffect(3,3, Duration.WhileOnBattlefield),
|
new BoostSourceEffect(3,3, Duration.WhileOnBattlefield),
|
||||||
MoreCardsInHandThanOpponentsCondition.instance,
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"As long as you have more cards in hand than each opponent, Okina Nightwatch gets +3/+3"));
|
"As long as you have more cards in hand than each opponent, {this} gets +3/+3"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,8 @@ class PackHuntEffect extends OneShotEffect {
|
||||||
|
|
||||||
PackHuntEffect() {
|
PackHuntEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "Search your library for up to three cards with the same name as target creature, reveal them, and put them into your hand. Then shuffle";
|
this.staticText = "Search your library for up to three cards with the same name as target creature, " +
|
||||||
|
"reveal them, put them into your hand, then shuffle";
|
||||||
}
|
}
|
||||||
|
|
||||||
private PackHuntEffect(final PackHuntEffect effect) {
|
private PackHuntEffect(final PackHuntEffect effect) {
|
||||||
|
|
@ -60,6 +61,9 @@ class PackHuntEffect extends OneShotEffect {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
||||||
|
if (permanent == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
FilterCard filter = new FilterPermanentCard();
|
FilterCard filter = new FilterPermanentCard();
|
||||||
filter.add(new NamePredicate(permanent.getName()));
|
filter.add(new NamePredicate(permanent.getName()));
|
||||||
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,3, filter), true).apply(game, source);
|
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,3, filter), true).apply(game, source);
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,6 @@ class RakdosRoustaboutAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "Whenever {this} becomes blocked, it deals 1 damage to the player or planeswalker it's attacking";
|
return "Whenever {this} becomes blocked, it deals 1 damage to the player or planeswalker it's attacking.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ public final class Secretkeeper extends CardImpl {
|
||||||
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||||
new BoostSourceEffect(2,2, Duration.WhileOnBattlefield),
|
new BoostSourceEffect(2,2, Duration.WhileOnBattlefield),
|
||||||
MoreCardsInHandThanOpponentsCondition.instance,
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"As long as you have more cards in hand than each opponent, Secretkeeper gets +2/+2"));
|
"As long as you have more cards in hand than each opponent, {this} gets +2/+2"));
|
||||||
ability.addEffect(new ConditionalContinuousEffect(
|
ability.addEffect(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
|
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
MoreCardsInHandThanOpponentsCondition.instance,
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ class SkinInvasionEffect extends OneShotEffect {
|
||||||
|
|
||||||
SkinInvasionEffect() {
|
SkinInvasionEffect() {
|
||||||
super(Outcome.PutCardInPlay);
|
super(Outcome.PutCardInPlay);
|
||||||
this.staticText = "return {this} to the battlefield transformed under your control";
|
this.staticText = "return this card to the battlefield transformed under your control";
|
||||||
}
|
}
|
||||||
|
|
||||||
private SkinInvasionEffect(final SkinInvasionEffect effect) {
|
private SkinInvasionEffect(final SkinInvasionEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ public final class SoldeviSentry extends CardImpl {
|
||||||
new DrawCardTargetEffect(1, true),
|
new DrawCardTargetEffect(1, true),
|
||||||
false
|
false
|
||||||
), true)
|
), true)
|
||||||
.setText("Choose target opponent. Regenerate Soldevi Sentry. "
|
.setText("Choose target opponent. Regenerate {this}. "
|
||||||
+ "When it regenerates this way, that player may draw a card"),
|
+ "When it regenerates this way, that player may draw a card"),
|
||||||
new GenericManaCost(1)
|
new GenericManaCost(1)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -71,8 +71,8 @@ class StoryweaveReplacementEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
StoryweaveReplacementEffect() {
|
StoryweaveReplacementEffect() {
|
||||||
super(Duration.EndOfTurn, Outcome.BoostCreature);
|
super(Duration.EndOfTurn, Outcome.BoostCreature);
|
||||||
staticText = "The next time one or more enchantment creatures enter the battlefield " +
|
staticText = "The next time one or more enchantment creatures you control enter this turn, " +
|
||||||
"under your control this turn, each enters with two additional +1/+1 counters on it";
|
"each enters with two additional +1/+1 counters on it";
|
||||||
}
|
}
|
||||||
|
|
||||||
private StoryweaveReplacementEffect(final StoryweaveReplacementEffect effect) {
|
private StoryweaveReplacementEffect(final StoryweaveReplacementEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import mage.game.events.GameEvent;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class StrongTheBrutishThespian extends CardImpl {
|
public class StrongTheBrutishThespian extends CardImpl {
|
||||||
|
|
||||||
public StrongTheBrutishThespian(UUID ownerId, CardSetInfo setInfo) {
|
public StrongTheBrutishThespian(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
|
||||||
this.addSuperType(SuperType.LEGENDARY);
|
this.addSuperType(SuperType.LEGENDARY);
|
||||||
|
|
@ -31,14 +32,13 @@ public class StrongTheBrutishThespian extends CardImpl {
|
||||||
// Ward {2}
|
// Ward {2}
|
||||||
this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}")));
|
this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}")));
|
||||||
|
|
||||||
// Enrage - Whenever strong is dealt damage, you get three rad counters and put three +1/+1 counters on Strong.
|
// Enrage - Whenever Strong is dealt damage, you get three rad counters and put three +1/+1 counters on Strong.
|
||||||
Ability enrageAbility = new DealtDamageToSourceTriggeredAbility(new AddCountersPlayersEffect(CounterType.RAD.createInstance(3), TargetController.YOU), false, true);
|
Ability enrageAbility = new DealtDamageToSourceTriggeredAbility(new AddCountersPlayersEffect(CounterType.RAD.createInstance(3), TargetController.YOU), false, true);
|
||||||
enrageAbility.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)).setText("put three +1/+1 counters on Strong"));
|
enrageAbility.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)).concatBy("and"));
|
||||||
this.addAbility(enrageAbility);
|
this.addAbility(enrageAbility);
|
||||||
|
|
||||||
// You gain life rather than lose life from radiation.
|
// You gain life rather than lose life from radiation.
|
||||||
Ability healAbility = new SimpleStaticAbility(new StrongTheBrutishThespianHealEffect().setText("You gain life rather than lose life from radiation."));
|
this.addAbility(new SimpleStaticAbility(new StrongTheBrutishThespianHealEffect()));
|
||||||
this.addAbility(healAbility);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public StrongTheBrutishThespian(StrongTheBrutishThespian card) {
|
public StrongTheBrutishThespian(StrongTheBrutishThespian card) {
|
||||||
|
|
@ -50,13 +50,17 @@ public class StrongTheBrutishThespian extends CardImpl {
|
||||||
return new StrongTheBrutishThespian(this);
|
return new StrongTheBrutishThespian(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
class StrongTheBrutishThespianHealEffect extends ContinuousRuleModifyingEffectImpl {
|
}
|
||||||
|
|
||||||
protected StrongTheBrutishThespianHealEffect() {
|
// TODO: It doesn't interfere with anything else yet, but this should be restructured as a replacement, not continuous rule modifying
|
||||||
|
class StrongTheBrutishThespianHealEffect extends ContinuousRuleModifyingEffectImpl {
|
||||||
|
|
||||||
|
StrongTheBrutishThespianHealEffect() {
|
||||||
super(Duration.Custom, Outcome.Benefit);
|
super(Duration.Custom, Outcome.Benefit);
|
||||||
|
staticText = "You gain life rather than lose life from radiation";
|
||||||
}
|
}
|
||||||
|
|
||||||
public StrongTheBrutishThespianHealEffect(StrongTheBrutishThespianHealEffect effect) {
|
private StrongTheBrutishThespianHealEffect(StrongTheBrutishThespianHealEffect effect) {
|
||||||
super(effect);
|
super(effect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,5 +78,4 @@ public class StrongTheBrutishThespian extends CardImpl {
|
||||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||||
return event.getPlayerId().equals(source.getControllerId());
|
return event.getPlayerId().equals(source.getControllerId());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ public final class SynthInfiltrator extends CardImpl {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, synthInfiltratorCopyApplier);
|
Effect effect = new CopyPermanentEffect(StaticFilters.FILTER_PERMANENT_CREATURE, synthInfiltratorCopyApplier);
|
||||||
effect.setText("You may have {this} enter the battlefield as a copy of any creature on the battlefield, except it's a Synth artifact creature in addition to its other types");
|
effect.setText("You may have {this} enter as a copy of any creature on the battlefield, except it's a Synth artifact creature in addition to its other types");
|
||||||
Ability ability = new SimpleStaticAbility(Zone.ALL, new EntersBattlefieldEffect(effect, "", true));
|
Ability ability = new SimpleStaticAbility(Zone.ALL, new EntersBattlefieldEffect(effect, "", true));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ class TheWanderingEmperorEffect extends AsThoughEffectImpl {
|
||||||
|
|
||||||
TheWanderingEmperorEffect() {
|
TheWanderingEmperorEffect() {
|
||||||
super(AsThoughEffectType.ACTIVATE_AS_INSTANT, Duration.WhileOnBattlefield, Outcome.Benefit);
|
super(AsThoughEffectType.ACTIVATE_AS_INSTANT, Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||||
staticText = "as long as {this} entered the battlefield this turn, " +
|
staticText = "as long as {this} entered this turn, " +
|
||||||
"you may activate her loyalty abilities any time you could cast an instant";
|
"you may activate her loyalty abilities any time you could cast an instant";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,6 @@ class ThousandFacedShadowTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
public String getRule() {
|
public String getRule() {
|
||||||
return "When {this} enters from your hand, if it's attacking, " +
|
return "When {this} enters from your hand, if it's attacking, " +
|
||||||
"create a token that's a copy of another target attacking creature. " +
|
"create a token that's a copy of another target attacking creature. " +
|
||||||
"The token enters the battlefield tapped and attacking.";
|
"The token enters tapped and attacking.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ public final class ToTheSlaughter extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new SacrificeEffect(new FilterCreatureOrPlaneswalkerPermanent(), 1, "Target player"),
|
new SacrificeEffect(new FilterCreatureOrPlaneswalkerPermanent(), 1, "Target player"),
|
||||||
new InvertCondition(DeliriumCondition.instance),
|
new InvertCondition(DeliriumCondition.instance),
|
||||||
"Target player sacrifices a creature or planeswalker."));
|
"Target player sacrifices a creature or planeswalker of their choice."));
|
||||||
|
|
||||||
// <i>Delirium</i> — If there are four or more card types among cards in your graveyard, instead that player sacrifices a creature and a planeswalker.
|
// <i>Delirium</i> — If there are four or more card types among cards in your graveyard, instead that player sacrifices a creature and a planeswalker.
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
|
|
@ -35,7 +35,7 @@ public final class ToTheSlaughter extends CardImpl {
|
||||||
"<br><i>Delirium</i> — If there are four or more card types among cards in your graveyard, instead that player sacrifices a creature"));
|
"<br><i>Delirium</i> — If there are four or more card types among cards in your graveyard, instead that player sacrifices a creature"));
|
||||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||||
new SacrificeEffect(StaticFilters.FILTER_PERMANENT_PLANESWALKER, 1, "Target player"),
|
new SacrificeEffect(StaticFilters.FILTER_PERMANENT_PLANESWALKER, 1, "Target player"),
|
||||||
DeliriumCondition.instance, "and a planeswalker."));
|
DeliriumCondition.instance, "and a planeswalker of their choice."));
|
||||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||||
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
|
this.getSpellAbility().addHint(CardTypesInGraveyardCount.YOU.getHint());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,8 +36,8 @@ public final class VisionOfTheUnspeakable extends CardImpl {
|
||||||
|
|
||||||
// Vision of the Unspeakable gets +1/+1 for each card in your hand.
|
// Vision of the Unspeakable gets +1/+1 for each card in your hand.
|
||||||
this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(
|
this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(
|
||||||
CardsInControllerHandCount.ANY,
|
CardsInControllerHandCount.ANY_SINGULAR,
|
||||||
CardsInControllerHandCount.ANY,
|
CardsInControllerHandCount.ANY_SINGULAR,
|
||||||
Duration.WhileOnBattlefield
|
Duration.WhileOnBattlefield
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.w;
|
package mage.cards.w;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
|
|
@ -58,8 +57,9 @@ public final class WillingTestSubject extends CardImpl {
|
||||||
|
|
||||||
class WillingTestSubjectTriggeredAbility extends TriggeredAbilityImpl {
|
class WillingTestSubjectTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
public WillingTestSubjectTriggeredAbility() {
|
WillingTestSubjectTriggeredAbility() {
|
||||||
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
||||||
|
setTriggerPhrase("Whenever you roll a 4 or higher on a die, ");
|
||||||
}
|
}
|
||||||
|
|
||||||
private WillingTestSubjectTriggeredAbility(final WillingTestSubjectTriggeredAbility ability) {
|
private WillingTestSubjectTriggeredAbility(final WillingTestSubjectTriggeredAbility ability) {
|
||||||
|
|
@ -83,8 +83,4 @@ class WillingTestSubjectTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
return this.isControlledBy(event.getTargetId()) && drEvent.getResult() >= 4;
|
return this.isControlledBy(event.getTargetId()) && drEvent.getResult() >= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRule() {
|
|
||||||
return "Whenever you roll a 4 or higher on a die, put a +1/+1 counter on {this}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,8 @@ public final class YesManPersonalSecuritron extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Wild Card -- When Yes Man leaves the battlefield, its owner creates a tapped 1/1 white Soldier creature token for each quest counter on it.
|
// Wild Card -- When Yes Man leaves the battlefield, its owner creates a tapped 1/1 white Soldier creature token for each quest counter on it.
|
||||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new YesManPersonalSecuritronLeavesEffect(), false));
|
this.addAbility(new LeavesBattlefieldTriggeredAbility(new YesManPersonalSecuritronLeavesEffect(), false)
|
||||||
|
.withFlavorWord("Wild Card"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private YesManPersonalSecuritron(final YesManPersonalSecuritron card) {
|
private YesManPersonalSecuritron(final YesManPersonalSecuritron card) {
|
||||||
|
|
@ -61,6 +62,7 @@ public final class YesManPersonalSecuritron extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
class YesManPersonalSecuritronControlEffect extends TargetPlayerGainControlSourceEffect {
|
class YesManPersonalSecuritronControlEffect extends TargetPlayerGainControlSourceEffect {
|
||||||
|
|
||||||
YesManPersonalSecuritronControlEffect() {
|
YesManPersonalSecuritronControlEffect() {
|
||||||
super();
|
super();
|
||||||
this.staticText = "Target opponent gains control of {this}. When they do, you draw two cards and put a quest counter on Yes Man.";
|
this.staticText = "Target opponent gains control of {this}. When they do, you draw two cards and put a quest counter on Yes Man.";
|
||||||
|
|
@ -91,6 +93,7 @@ class YesManPersonalSecuritronControlEffect extends TargetPlayerGainControlSourc
|
||||||
}
|
}
|
||||||
|
|
||||||
class YesManPersonalSecuritronLeavesEffect extends CreateTokenTargetEffect {
|
class YesManPersonalSecuritronLeavesEffect extends CreateTokenTargetEffect {
|
||||||
|
|
||||||
YesManPersonalSecuritronLeavesEffect() {
|
YesManPersonalSecuritronLeavesEffect() {
|
||||||
super(new SoldierToken(), new CountersSourceCount(CounterType.QUEST), true);
|
super(new SoldierToken(), new CountersSourceCount(CounterType.QUEST), true);
|
||||||
this.staticText = "its owner creates a tapped 1/1 white Soldier creature token for each quest counter on it.";
|
this.staticText = "its owner creates a tapped 1/1 white Soldier creature token for each quest counter on it.";
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public class AdditionalTriggerControlledETBReplacementEffect extends Replacement
|
||||||
|
|
||||||
public AdditionalTriggerControlledETBReplacementEffect() {
|
public AdditionalTriggerControlledETBReplacementEffect() {
|
||||||
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
super(Duration.WhileOnBattlefield, Outcome.Benefit);
|
||||||
staticText = "If a permanent entering the battlefield causes a triggered ability " +
|
staticText = "If a permanent entering causes a triggered ability " +
|
||||||
"of a permanent you control to trigger, that ability triggers an additional time";
|
"of a permanent you control to trigger, that ability triggers an additional time";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ public class DontCauseTriggerEffect extends ContinuousRuleModifyingEffectImpl {
|
||||||
this.filterEntering = filterEntering;
|
this.filterEntering = filterEntering;
|
||||||
this.orDying = orDying;
|
this.orDying = orDying;
|
||||||
this.filterTriggering = filterTriggering;
|
this.filterTriggering = filterTriggering;
|
||||||
staticText = filterEntering.getMessage() + " entering the battlefield"
|
staticText = filterEntering.getMessage() + " entering"
|
||||||
+ (orDying ? " or dying" : "") + " don't cause abilities"
|
+ (orDying ? " or dying" : "") + " don't cause abilities"
|
||||||
+ (filterTriggering == null ? "" : " of " + filterTriggering.getMessage())
|
+ (filterTriggering == null ? "" : " of " + filterTriggering.getMessage())
|
||||||
+ " to trigger";
|
+ " to trigger";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue