a bunch of unrelated text fixes

This commit is contained in:
xenohedron 2025-06-14 01:53:56 -04:00
parent 519a9e0c49
commit 492c7c9db8
38 changed files with 121 additions and 127 deletions

View file

@ -44,7 +44,7 @@ class AetherBarrierEffect extends SacrificeEffect {
AetherBarrierEffect() {
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) {

View file

@ -29,7 +29,7 @@ import java.util.UUID;
*/
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 {
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));

View file

@ -59,7 +59,8 @@ class BloatflySwarmPreventionEffect extends PreventDamageAndRemoveCountersEffect
BloatflySwarmPreventionEffect() {
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) {

View file

@ -57,10 +57,10 @@ public final class CaitCageBrawler extends CardImpl {
class CaitCageBrawlerEffect extends OneShotEffect {
public CaitCageBrawlerEffect() {
CaitCageBrawlerEffect() {
super(Outcome.Benefit);
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) {

View file

@ -27,7 +27,7 @@ import java.util.UUID;
*/
public final class CathedralAcolyte extends CardImpl {
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 {
filter.add(CounterAnyPredicate.instance);

View file

@ -16,7 +16,6 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import java.util.Locale;
import java.util.UUID;
/**
@ -34,7 +33,7 @@ public final class CosmicHorror extends CardImpl {
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.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CosmicHorrorEffect(new ManaCostsImpl<>("{3}{B}{B}{B}"))));
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CosmicHorrorEffect()));
}
private CosmicHorror(final CosmicHorror card) {
@ -49,30 +48,22 @@ public final class CosmicHorror extends CardImpl {
class CosmicHorrorEffect extends OneShotEffect {
protected Cost cost;
public CosmicHorrorEffect(Cost cost) {
CosmicHorrorEffect() {
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) {
super(effect);
this.cost = effect.cost.copy();
}
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent cosmicHorror = game.getPermanentOrLKIBattlefield(source.getSourceId());
Permanent cosmicHorror = source.getSourcePermanentIfItStillExists(game);
if (controller != null && cosmicHorror != null) {
StringBuilder sb = new StringBuilder(cost.getText()).append('?');
if (!sb.toString().toLowerCase(Locale.ENGLISH).startsWith("exile ") && !sb.toString().toLowerCase(Locale.ENGLISH).startsWith("return ")) {
sb.insert(0, "Pay ");
}
if (controller.chooseUse(Outcome.Benefit, sb.toString(), source, game)) {
cost.clearPaid();
if (controller.chooseUse(Outcome.Benefit, "Pay {3}{B}{B}{B} to prevent destroy effect?", source, game)) {
Cost cost = new ManaCostsImpl<>("{3}{B}{B}{B}");
if (cost.pay(source, game, source, source.getControllerId(), false, null)) {
return true;
}

View file

@ -18,7 +18,7 @@ import java.util.UUID;
*/
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 {
filter.add(new NamePredicate("Domri, City Smasher"));

View file

@ -58,7 +58,7 @@ class FirestormPhoenixEffect extends ReplacementEffectImpl {
FirestormPhoenixEffect() {
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";
}

View file

@ -2,7 +2,7 @@ package mage.cards.g;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.BattleCryAbility;
import mage.cards.CardImpl;
@ -34,10 +34,7 @@ public final class GarbageElementalC extends CardImpl {
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.
this.addAbility(new EntersBattlefieldAbility(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));
this.addAbility(new EntersBattlefieldTriggeredAbility(new GarbageElementalCEffect()));
}

View file

@ -36,7 +36,7 @@ public final class Gravelighter extends CardImpl {
new DrawCardSourceControllerEffect(1),
new SacrificeAllEffect(StaticFilters.FILTER_PERMANENT_CREATURE),
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));
}

View file

@ -48,7 +48,7 @@ class HallowedMoonlightEffect extends ReplacementEffectImpl {
HallowedMoonlightEffect() {
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) {

View file

@ -1,10 +1,9 @@
package mage.cards.h;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.EntersBattlefieldWithXCountersEffect;
import mage.cards.CardImpl;
@ -38,7 +37,7 @@ public final class HammerJammer extends CardImpl {
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.
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.
this.addAbility(new HammerJammerTriggeredAbility());
@ -59,9 +58,10 @@ class HammerJammerEntersEffect extends EntersBattlefieldWithXCountersEffect {
HammerJammerEntersEffect(Counter 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);
}
@ -86,7 +86,7 @@ class HammerJammerEntersEffect extends EntersBattlefieldWithXCountersEffect {
class HammerJammerTriggeredAbility extends TriggeredAbilityImpl {
public HammerJammerTriggeredAbility() {
HammerJammerTriggeredAbility() {
super(Zone.BATTLEFIELD, new HammerJammerEffect(), false);
setTriggerPhrase("Whenever you roll a die, ");
}

View file

@ -1,9 +1,8 @@
package mage.cards.h;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.ReachAbility;
import mage.abilities.keyword.TrampleAbility;
@ -13,8 +12,6 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.predicate.permanent.CounterAnyPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -38,10 +35,8 @@ public final class Hydradoodle extends CardImpl {
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.
this.addAbility(new EntersBattlefieldAbility(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));
this.addAbility(new AsEntersBattlefieldAbility(new HydradoodleEffect()));
// Reach
this.addAbility(ReachAbility.getInstance());
@ -61,12 +56,6 @@ public final class Hydradoodle extends CardImpl {
class HydradoodleEffect extends OneShotEffect {
private static final FilterPermanent filter = new FilterPermanent("permanent with a counter");
static {
filter.add(CounterAnyPredicate.instance);
}
HydradoodleEffect() {
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";

View file

@ -26,7 +26,7 @@ public final class ImposingSovereign extends CardImpl {
// Creatures your opponents control enter the battlefield tapped.
this.addAbility(new SimpleStaticAbility(new PermanentsEnterBattlefieldTappedEffect(
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) {

View file

@ -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.
this.addAbility(new EntersBattlefieldAbility(
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
));

View file

@ -20,7 +20,7 @@ public final class InnerFire extends CardImpl {
// 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) {

View file

@ -58,6 +58,7 @@ class IronApprenticeEffect extends OneShotEffect {
IronApprenticeEffect() {
super(Outcome.Benefit);
staticText = "put those counters on target creature you control";
}
private IronApprenticeEffect(final IronApprenticeEffect effect) {

View file

@ -44,7 +44,9 @@ public final class KjeldoranEliteGuard extends CardImpl {
this.addAbility(ability);
}
private KjeldoranEliteGuard(final KjeldoranEliteGuard card) { super(card); }
private KjeldoranEliteGuard(final KjeldoranEliteGuard card) {
super(card);
}
@Override
public KjeldoranEliteGuard copy() {
@ -57,7 +59,7 @@ class KjeldoranEliteGuardEffect extends OneShotEffect {
KjeldoranEliteGuardEffect() {
super(Outcome.Neutral);
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
@ -79,10 +81,14 @@ class KjeldoranEliteGuardEffect extends OneShotEffect {
return true;
}
private KjeldoranEliteGuardEffect(KjeldoranEliteGuardEffect effect) { super(effect); }
private KjeldoranEliteGuardEffect(KjeldoranEliteGuardEffect effect) {
super(effect);
}
@Override
public KjeldoranEliteGuardEffect copy() { return new KjeldoranEliteGuardEffect(this); }
public KjeldoranEliteGuardEffect copy() {
return new KjeldoranEliteGuardEffect(this);
}
}
class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility {
@ -105,7 +111,9 @@ class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility
}
@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
public KjeldoranEliteGuardDelayedTriggeredAbility copy() {
@ -113,5 +121,7 @@ class KjeldoranEliteGuardDelayedTriggeredAbility extends DelayedTriggeredAbility
}
@Override
public String getRule() { return "that creature left the battlefield this turn"; }
public String getRule() {
return "that creature left the battlefield this turn";
}
}

View file

@ -26,7 +26,8 @@ public final class LagonnaBandTrailblazer extends CardImpl {
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.
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) {

View file

@ -5,18 +5,20 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl;
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.permanent.Permanent;
import mage.players.Player;
import mage.target.TargetPlayer;
import mage.target.common.TargetPlayerOrPlaneswalker;
import java.util.UUID;
@ -29,10 +31,10 @@ public final class LobeLobber extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
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."
Effect effect = new LobeLobberEffect();
SimpleActivatedAbility ability = new SimpleActivatedAbility(effect, new TapSourceCost());
ability.addTarget(new TargetPlayer());
// 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."
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(1), new TapSourceCost());
ability.addTarget(new TargetPlayerOrPlaneswalker());
ability.addEffect(new LobeLobberEffect());
this.addAbility(new SimpleStaticAbility(new GainAbilityAttachedEffect(ability, AttachmentType.EQUIPMENT)));
// Equip 2
@ -53,7 +55,7 @@ class LobeLobberEffect extends OneShotEffect {
LobeLobberEffect() {
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) {
@ -68,18 +70,13 @@ class LobeLobberEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent equipment = game.getPermanent(source.getSourceId());
Player player = game.getPlayer(source.getFirstTarget());
if (controller != null && equipment != null && player != null) {
player.damage(1, source.getSourceId(), source, game);
if (controller != null) {
int amount = controller.rollDice(outcome, source, game, 6);
if (amount >= 5) {
new UntapSourceEffect().apply(game, source);
}
return true;
}
return false;
}
}

View file

@ -11,6 +11,7 @@ import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.AbilityWord;
import mage.constants.CardType;
import mage.constants.SubType;
@ -26,8 +27,8 @@ public final class MoorlandDrifter extends CardImpl {
this.toughness = new MageInt(2);
// <i>Delirium</i> &mdash; 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> &mdash; Moorland Drifter 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()));
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).setAbilityWord(AbilityWord.DELIRIUM).addHint(CardTypesInGraveyardCount.YOU.getHint()));
}
private MoorlandDrifter(final MoorlandDrifter card) {

View file

@ -33,7 +33,7 @@ public final class OkinaNightwatch extends CardImpl {
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostSourceEffect(3,3, Duration.WhileOnBattlefield),
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);
}

View file

@ -45,7 +45,8 @@ class PackHuntEffect extends OneShotEffect {
PackHuntEffect() {
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) {
@ -60,6 +61,9 @@ class PackHuntEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getFirstTarget());
if (permanent == null) {
return false;
}
FilterCard filter = new FilterPermanentCard();
filter.add(new NamePredicate(permanent.getName()));
return new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0,3, filter), true).apply(game, source);

View file

@ -74,6 +74,6 @@ class RakdosRoustaboutAbility extends TriggeredAbilityImpl {
@Override
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.";
}
}

View file

@ -34,7 +34,7 @@ public final class Secretkeeper extends CardImpl {
Ability ability = new SimpleStaticAbility(new ConditionalContinuousEffect(
new BoostSourceEffect(2,2, Duration.WhileOnBattlefield),
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(
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
MoreCardsInHandThanOpponentsCondition.instance,

View file

@ -66,7 +66,7 @@ class SkinInvasionEffect extends OneShotEffect {
SkinInvasionEffect() {
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) {

View file

@ -32,7 +32,7 @@ public final class SoldeviSentry extends CardImpl {
new DrawCardTargetEffect(1, true),
false
), 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"),
new GenericManaCost(1)
);

View file

@ -71,8 +71,8 @@ class StoryweaveReplacementEffect extends ReplacementEffectImpl {
StoryweaveReplacementEffect() {
super(Duration.EndOfTurn, Outcome.BoostCreature);
staticText = "The next time one or more enchantment creatures enter the battlefield " +
"under your control this turn, each enters with two additional +1/+1 counters on it";
staticText = "The next time one or more enchantment creatures you control enter this turn, " +
"each enters with two additional +1/+1 counters on it";
}
private StoryweaveReplacementEffect(final StoryweaveReplacementEffect effect) {

View file

@ -19,6 +19,7 @@ import mage.game.events.GameEvent;
import java.util.UUID;
public class StrongTheBrutishThespian extends CardImpl {
public StrongTheBrutishThespian(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
this.addSuperType(SuperType.LEGENDARY);
@ -31,14 +32,13 @@ public class StrongTheBrutishThespian extends CardImpl {
// Ward {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);
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);
// 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(healAbility);
this.addAbility(new SimpleStaticAbility(new StrongTheBrutishThespianHealEffect()));
}
public StrongTheBrutishThespian(StrongTheBrutishThespian card) {
@ -50,13 +50,17 @@ public class StrongTheBrutishThespian extends CardImpl {
return new StrongTheBrutishThespian(this);
}
class StrongTheBrutishThespianHealEffect extends ContinuousRuleModifyingEffectImpl {
protected StrongTheBrutishThespianHealEffect() {
super(Duration.Custom, Outcome.Benefit);
}
public StrongTheBrutishThespianHealEffect(StrongTheBrutishThespianHealEffect effect) {
// 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);
staticText = "You gain life rather than lose life from radiation";
}
private StrongTheBrutishThespianHealEffect(StrongTheBrutishThespianHealEffect effect) {
super(effect);
}
@ -75,4 +79,3 @@ public class StrongTheBrutishThespian extends CardImpl {
return event.getPlayerId().equals(source.getControllerId());
}
}
}

View file

@ -45,7 +45,7 @@ public final class SynthInfiltrator extends CardImpl {
}
};
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));
this.addAbility(ability);
}

View file

@ -83,7 +83,7 @@ class TheWanderingEmperorEffect extends AsThoughEffectImpl {
TheWanderingEmperorEffect() {
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";
}

View file

@ -101,6 +101,6 @@ class ThousandFacedShadowTriggeredAbility extends TriggeredAbilityImpl {
public String getRule() {
return "When {this} enters from your hand, if it's attacking, " +
"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.";
}
}

View file

@ -26,7 +26,7 @@ public final class ToTheSlaughter extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SacrificeEffect(new FilterCreatureOrPlaneswalkerPermanent(), 1, "Target player"),
new InvertCondition(DeliriumCondition.instance),
"Target player sacrifices a creature or planeswalker."));
"Target player sacrifices a creature or planeswalker of their choice."));
// <i>Delirium</i> &mdash; 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(
@ -35,7 +35,7 @@ public final class ToTheSlaughter extends CardImpl {
"<br><i>Delirium</i> &mdash; If there are four or more card types among cards in your graveyard, instead that player sacrifices a creature"));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
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().addHint(CardTypesInGraveyardCount.YOU.getHint());
}

View file

@ -36,8 +36,8 @@ public final class VisionOfTheUnspeakable extends CardImpl {
// Vision of the Unspeakable gets +1/+1 for each card in your hand.
this.addAbility(new SimpleStaticAbility(new BoostSourceEffect(
CardsInControllerHandCount.ANY,
CardsInControllerHandCount.ANY,
CardsInControllerHandCount.ANY_SINGULAR,
CardsInControllerHandCount.ANY_SINGULAR,
Duration.WhileOnBattlefield
)));
}

View file

@ -1,4 +1,3 @@
package mage.cards.w;
import mage.MageInt;
@ -58,8 +57,9 @@ public final class WillingTestSubject extends CardImpl {
class WillingTestSubjectTriggeredAbility extends TriggeredAbilityImpl {
public WillingTestSubjectTriggeredAbility() {
WillingTestSubjectTriggeredAbility() {
super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
setTriggerPhrase("Whenever you roll a 4 or higher on a die, ");
}
private WillingTestSubjectTriggeredAbility(final WillingTestSubjectTriggeredAbility ability) {
@ -83,8 +83,4 @@ class WillingTestSubjectTriggeredAbility extends TriggeredAbilityImpl {
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}";
}
}

View file

@ -47,7 +47,8 @@ public final class YesManPersonalSecuritron extends CardImpl {
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.
this.addAbility(new LeavesBattlefieldTriggeredAbility(new YesManPersonalSecuritronLeavesEffect(), false));
this.addAbility(new LeavesBattlefieldTriggeredAbility(new YesManPersonalSecuritronLeavesEffect(), false)
.withFlavorWord("Wild Card"));
}
private YesManPersonalSecuritron(final YesManPersonalSecuritron card) {
@ -61,6 +62,7 @@ public final class YesManPersonalSecuritron extends CardImpl {
}
class YesManPersonalSecuritronControlEffect extends TargetPlayerGainControlSourceEffect {
YesManPersonalSecuritronControlEffect() {
super();
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 {
YesManPersonalSecuritronLeavesEffect() {
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.";

View file

@ -17,7 +17,7 @@ public class AdditionalTriggerControlledETBReplacementEffect extends Replacement
public AdditionalTriggerControlledETBReplacementEffect() {
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";
}

View file

@ -41,7 +41,7 @@ public class DontCauseTriggerEffect extends ContinuousRuleModifyingEffectImpl {
this.filterEntering = filterEntering;
this.orDying = orDying;
this.filterTriggering = filterTriggering;
staticText = filterEntering.getMessage() + " entering the battlefield"
staticText = filterEntering.getMessage() + " entering"
+ (orDying ? " or dying" : "") + " don't cause abilities"
+ (filterTriggering == null ? "" : " of " + filterTriggering.getMessage())
+ " to trigger";