mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 02:52:02 -08:00
[WHO] various text fixes
This commit is contained in:
parent
242dee70f7
commit
a52f1fd579
17 changed files with 72 additions and 76 deletions
|
|
@ -47,7 +47,7 @@ public final class AutonSoldier extends CardImpl {
|
||||||
Zone.ALL,
|
Zone.ALL,
|
||||||
new EntersBattlefieldEffect(new CopyPermanentEffect(
|
new EntersBattlefieldEffect(new CopyPermanentEffect(
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE, applier
|
StaticFilters.FILTER_PERMANENT_CREATURE, applier
|
||||||
).setText("You may have {this} enter the battlefield as a copy of any creature on the battlefield, " +
|
).setText("You may have {this} enter as a copy of any creature on the battlefield, " +
|
||||||
"except it isn't legendary, is an artifact in addition to its other types, and has myriad"), "", true))
|
"except it isn't legendary, is an artifact in addition to its other types, and has myriad"), "", true))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,48 +1,38 @@
|
||||||
package mage.cards.b;
|
package mage.cards.b;
|
||||||
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.MageItem;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.abilities.Abilities;
|
import mage.abilities.Abilities;
|
||||||
import mage.abilities.AbilitiesImpl;
|
import mage.abilities.AbilitiesImpl;
|
||||||
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.Mode;
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.common.ActivateAbilityTriggeredAbility;
|
import mage.abilities.common.ActivateAbilityTriggeredAbility;
|
||||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||||
import mage.abilities.effects.common.CopyStackObjectEffect;
|
import mage.abilities.effects.common.CopyStackObjectEffect;
|
||||||
import mage.abilities.meta.OrTriggeredAbility;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.SuperType;
|
|
||||||
import mage.abilities.keyword.DoctorsCompanionAbility;
|
import mage.abilities.keyword.DoctorsCompanionAbility;
|
||||||
|
import mage.abilities.meta.OrTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.SetTargetPointer;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterInstantOrSorcerySpell;
|
|
||||||
import mage.filter.FilterSpell;
|
import mage.filter.FilterSpell;
|
||||||
import mage.filter.FilterStackObject;
|
import mage.filter.FilterStackObject;
|
||||||
|
import mage.filter.common.FilterInstantOrSorcerySpell;
|
||||||
import mage.filter.predicate.ObjectSourcePlayer;
|
import mage.filter.predicate.ObjectSourcePlayer;
|
||||||
import mage.filter.predicate.ObjectSourcePlayerPredicate;
|
import mage.filter.predicate.ObjectSourcePlayerPredicate;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.stack.StackObject;
|
|
||||||
import mage.game.stack.Spell;
|
import mage.game.stack.Spell;
|
||||||
|
import mage.game.stack.StackObject;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author padfoot
|
* @author padfoot
|
||||||
*/
|
*/
|
||||||
public final class BillPotts extends CardImpl {
|
public final class BillPotts extends CardImpl {
|
||||||
|
|
||||||
private static final FilterSpell filterInstantOrSorcery = new FilterInstantOrSorcerySpell("an instant or sorcery that targets only {this}");
|
private static final FilterSpell filterInstantOrSorcery = new FilterInstantOrSorcerySpell("an instant or sorcery spell that targets only {this}");
|
||||||
private static final FilterStackObject filterAbility = new FilterStackObject("an ability that targets only {this}");
|
private static final FilterStackObject filterAbility = new FilterStackObject("an ability that targets only {this}");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
|
||||||
|
|
@ -34,13 +34,21 @@ public final class Blink extends CardImpl {
|
||||||
|
|
||||||
// I, III -- Choose target creature. Its owner shuffles it into their library, then investigates.
|
// I, III -- Choose target creature. Its owner shuffles it into their library, then investigates.
|
||||||
sagaAbility.addChapterEffect(
|
sagaAbility.addChapterEffect(
|
||||||
this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II,
|
this, SagaChapter.CHAPTER_I,
|
||||||
|
new BlinkEffect(), new TargetCreaturePermanent()
|
||||||
|
);
|
||||||
|
sagaAbility.addChapterEffect(
|
||||||
|
this, SagaChapter.CHAPTER_III,
|
||||||
new BlinkEffect(), new TargetCreaturePermanent()
|
new BlinkEffect(), new TargetCreaturePermanent()
|
||||||
);
|
);
|
||||||
|
|
||||||
// II, IV -- Create a 2/2 black Alien Angel artifact creature token with first strike, vigilance, and "Whenever an opponent casts a creature spell, this permanent isn't a creature until end of turn."
|
// II, IV -- Create a 2/2 black Alien Angel artifact creature token with first strike, vigilance, and "Whenever an opponent casts a creature spell, this permanent isn't a creature until end of turn."
|
||||||
sagaAbility.addChapterEffect(
|
sagaAbility.addChapterEffect(
|
||||||
this, SagaChapter.CHAPTER_III, SagaChapter.CHAPTER_IV,
|
this, SagaChapter.CHAPTER_II,
|
||||||
|
new CreateTokenEffect(new AlienAngelToken())
|
||||||
|
);
|
||||||
|
sagaAbility.addChapterEffect(
|
||||||
|
this, SagaChapter.CHAPTER_IV,
|
||||||
new CreateTokenEffect(new AlienAngelToken())
|
new CreateTokenEffect(new AlienAngelToken())
|
||||||
);
|
);
|
||||||
this.addAbility(sagaAbility);
|
this.addAbility(sagaAbility);
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ enum GenesisOfTheDaleksValue implements DynamicValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return "for each lore counter on {this}";
|
return "lore counter on {this}";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ class MeTheImmortalCastEffect extends AsThoughEffectImpl {
|
||||||
|
|
||||||
MeTheImmortalCastEffect() {
|
MeTheImmortalCastEffect() {
|
||||||
super(AsThoughEffectType.CAST_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
|
super(AsThoughEffectType.CAST_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfGame, Outcome.Benefit);
|
||||||
this.staticText = "you may cast {this} from your graveyard " +
|
this.staticText = "you may cast this card from your graveyard " +
|
||||||
"by discarding two cards in addition to paying its other costs";
|
"by discarding two cards in addition to paying its other costs";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ class MidnightCrusaderShuttleEffect extends OneShotEffect {
|
||||||
class MidnightCrusaderShuttleFirstChoice extends VillainousChoice {
|
class MidnightCrusaderShuttleFirstChoice extends VillainousChoice {
|
||||||
|
|
||||||
MidnightCrusaderShuttleFirstChoice() {
|
MidnightCrusaderShuttleFirstChoice() {
|
||||||
super("That player sacrifices a creature", "Sacrifice a creature");
|
super("That player sacrifices a creature of their choice", "Sacrifice a creature");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class RomanaII extends CardImpl {
|
public final class RomanaII extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterPermanent("token that entered the battlefield this turn");
|
private static final FilterPermanent filter = new FilterPermanent("token that entered this turn");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(TokenPredicate.TRUE);
|
filter.add(TokenPredicate.TRUE);
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public final class TheDalekEmperor extends CardImpl {
|
||||||
class TheDalekEmperorFirstChoice extends VillainousChoice {
|
class TheDalekEmperorFirstChoice extends VillainousChoice {
|
||||||
|
|
||||||
TheDalekEmperorFirstChoice() {
|
TheDalekEmperorFirstChoice() {
|
||||||
super("That player sacrifices a creature they control", "You sacrifice a creature");
|
super("That player sacrifices a creature of their choice", "You sacrifice a creature");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ public final class TheEleventhDoctor extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// I. AM. TALKING! -- Whenever The Eleventh Doctor deals combat damage to a player, you may exile a card from your hand with a number of time counters on it equal to its mana value. If it doesn't have suspend, it gains suspend.
|
// I. AM. TALKING! -- Whenever The Eleventh Doctor deals combat damage to a player, you may exile a card from your hand with a number of time counters on it equal to its mana value. If it doesn't have suspend, it gains suspend.
|
||||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new TheEleventhDoctorEffect()).setTriggerPhrase("I. AM. TALKING!"));
|
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new TheEleventhDoctorEffect()).withFlavorWord("I. AM. TALKING!"));
|
||||||
|
|
||||||
// {2}: Target creature with power 3 or less can't be blocked this turn.
|
// {2}: Target creature with power 3 or less can't be blocked this turn.
|
||||||
Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(Duration.EndOfTurn), new GenericManaCost(2));
|
Ability ability = new SimpleActivatedAbility(new CantBeBlockedTargetEffect(Duration.EndOfTurn), new GenericManaCost(2));
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import java.util.UUID;
|
||||||
public final class TheFifthDoctor extends CardImpl {
|
public final class TheFifthDoctor extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(
|
private static final FilterPermanent filter = new FilterControlledCreaturePermanent(
|
||||||
"creature you control that didn't attack or enter the battlefield this turn"
|
"creature you control that didn't attack or enter this turn"
|
||||||
);
|
);
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class TheMasterMesmerist extends CardImpl {
|
public final class TheMasterMesmerist extends CardImpl {
|
||||||
|
|
||||||
private static final FilterPermanent filter = new FilterOpponentsCreaturePermanent("power less than or equal to {this}'s power");
|
private static final FilterPermanent filter = new FilterOpponentsCreaturePermanent("creature an opponent controls with power less than or equal to {this}'s power");
|
||||||
private static final FilterPermanent filter2 = new FilterCreaturePermanent();
|
private static final FilterPermanent filter2 = new FilterCreaturePermanent();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ public final class TheWarGames extends CardImpl {
|
||||||
|
|
||||||
// II, III -- Put a +1/+1 counter on each Warrior creature.
|
// II, III -- Put a +1/+1 counter on each Warrior creature.
|
||||||
sagaAbility.addChapterEffect(
|
sagaAbility.addChapterEffect(
|
||||||
this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II,
|
this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_III,
|
||||||
new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter)
|
new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public final class TraverseEternity extends CardImpl {
|
||||||
|
|
||||||
// Draw cards equal to the highest mana value among historic permanents you control.
|
// Draw cards equal to the highest mana value among historic permanents you control.
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(TraverseEternityValue.instance)
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(TraverseEternityValue.instance)
|
||||||
.setText("draw cards equal to the highest mana value among historic permanents you control"));
|
.setText("draw cards equal to the greatest mana value among historic permanents you control"));
|
||||||
this.getSpellAbility().addHint(TraverseEternityValue.getHint());
|
this.getSpellAbility().addHint(TraverseEternityValue.getHint());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -41,7 +41,7 @@ public final class TraverseEternity extends CardImpl {
|
||||||
|
|
||||||
enum TraverseEternityValue implements DynamicValue {
|
enum TraverseEternityValue implements DynamicValue {
|
||||||
instance;
|
instance;
|
||||||
private static final Hint hint = new ValueHint("Highest mana value among your historic permanents", instance);
|
private static final Hint hint = new ValueHint("Greatest mana value among your historic permanents", instance);
|
||||||
|
|
||||||
public static Hint getHint() {
|
public static Hint getHint() {
|
||||||
return hint;
|
return hint;
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,24 @@
|
||||||
package mage.cards.w;
|
package mage.cards.w;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
|
||||||
import mage.abilities.dynamicvalue.DynamicValue;
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
import mage.abilities.dynamicvalue.common.CountersSourceCount;
|
import mage.abilities.dynamicvalue.common.CountersSourceCount;
|
||||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
|
||||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||||
import mage.constants.SubType;
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.constants.SuperType;
|
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.ComparisonType;
|
|
||||||
import mage.constants.PutCards;
|
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.common.FilterNonlandCard;
|
import mage.filter.common.FilterNonlandCard;
|
||||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||||
import mage.filter.predicate.mageobject.PermanentPredicate;
|
import mage.filter.predicate.mageobject.PermanentPredicate;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author padfoot
|
* @author padfoot
|
||||||
*/
|
*/
|
||||||
public final class WilfredMott extends CardImpl {
|
public final class WilfredMott extends CardImpl {
|
||||||
|
|
@ -45,12 +41,14 @@ public final class WilfredMott extends CardImpl {
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
// Look to the Stars -- At the beginning of your upkeep, put a time counter on Wilfred Mott. Then look at the top X cards of your library, where X is the number of time counters on Wilfred Mott. You may put a nonland permanent card with mana value 3 or less from among them onto the battlefield. Put the rest on the bottom of your library in a random order.
|
// Look to the Stars -- At the beginning of your upkeep, put a time counter on Wilfred Mott. Then look at the top X cards of your library, where X is the number of time counters on Wilfred Mott. You may put a nonland permanent card with mana value 3 or less from among them onto the battlefield. Put the rest on the bottom of your library in a random order.
|
||||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance())).withFlavorWord("Look to the Stars");
|
Ability ability = new BeginningOfUpkeepTriggeredAbility(
|
||||||
LookLibraryAndPickControllerEffect effect = new LookLibraryAndPickControllerEffect(xValue, 1, filter, PutCards.BATTLEFIELD, PutCards.BOTTOM_RANDOM);
|
new AddCountersSourceEffect(CounterType.TIME.createInstance())
|
||||||
effect.setText("Then look at the top X cards of your library, where X is the number of time counters on Wilfred Mott. " +
|
).withFlavorWord("Look to the Stars");
|
||||||
" You may put a nonland permanent card with mana value 3 or less from among them onto the battlefield. " +
|
ability.addEffect(new LookLibraryAndPickControllerEffect(
|
||||||
" Put the rest on the bottom of your library in a random order.");
|
xValue, 1, filter, PutCards.BATTLEFIELD, PutCards.BOTTOM_RANDOM
|
||||||
ability.addEffect(effect);
|
).setText("Then look at the top X cards of your library, where X is the number of time counters on {this}. " +
|
||||||
|
"You may put a nonland permanent card with mana value 3 or less from among them onto the battlefield. " +
|
||||||
|
"Put the rest on the bottom of your library in a random order."));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public class VerifyCardDataTest {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||||
|
|
||||||
private static final String FULL_ABILITIES_CHECK_SET_CODES = "DFT"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
|
private static final String FULL_ABILITIES_CHECK_SET_CODES = "WHO"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
|
||||||
private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
||||||
private static final boolean CHECK_COPYABLE_FIELDS = true; // disable for better verify test performance
|
private static final boolean CHECK_COPYABLE_FIELDS = true; // disable for better verify test performance
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public class CounterRemovedFromSourceWhileExiledTriggeredAbility extends Trigger
|
||||||
this.onlyController = onlyController;
|
this.onlyController = onlyController;
|
||||||
setTriggerPhrase("Whenever " + (
|
setTriggerPhrase("Whenever " + (
|
||||||
onlyController ? ("you remove a " + counterType.getName() + " counter") : ("a " + counterType.getName() + " counter is removed")
|
onlyController ? ("you remove a " + counterType.getName() + " counter") : ("a " + counterType.getName() + " counter is removed")
|
||||||
) + " from {this} while it's exiled, ");
|
) + " from this card while it's exiled, ");
|
||||||
}
|
}
|
||||||
|
|
||||||
private CounterRemovedFromSourceWhileExiledTriggeredAbility(final CounterRemovedFromSourceWhileExiledTriggeredAbility ability) {
|
private CounterRemovedFromSourceWhileExiledTriggeredAbility(final CounterRemovedFromSourceWhileExiledTriggeredAbility ability) {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import mage.constants.Duration;
|
||||||
public final class TheGirlInTheFireplaceHumanNobleToken extends TokenImpl {
|
public final class TheGirlInTheFireplaceHumanNobleToken extends TokenImpl {
|
||||||
|
|
||||||
public TheGirlInTheFireplaceHumanNobleToken() {
|
public TheGirlInTheFireplaceHumanNobleToken() {
|
||||||
super("Human Noble Token", "1/1 white Human Noble creature token with vanishing 3 and \"Prevent all damage that would be dealt to this creature.\"");
|
super("Human Noble Token", "1/1 white Human Noble creature token with vanishing 3 and \"Prevent all damage that would be dealt to this token.\"");
|
||||||
cardType.add(CardType.CREATURE);
|
cardType.add(CardType.CREATURE);
|
||||||
color.setWhite(true);
|
color.setWhite(true);
|
||||||
subtype.add(SubType.HUMAN,SubType.NOBLE);
|
subtype.add(SubType.HUMAN,SubType.NOBLE);
|
||||||
|
|
@ -25,7 +25,7 @@ public final class TheGirlInTheFireplaceHumanNobleToken extends TokenImpl {
|
||||||
new PreventDamageToSourceEffect(
|
new PreventDamageToSourceEffect(
|
||||||
Duration.WhileOnBattlefield,
|
Duration.WhileOnBattlefield,
|
||||||
Integer.MAX_VALUE
|
Integer.MAX_VALUE
|
||||||
).setText("Prevent all damage that would be dealt to this creature.")
|
).setText("Prevent all damage that would be dealt to this token.")
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue