mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -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,
|
||||
new EntersBattlefieldEffect(new CopyPermanentEffect(
|
||||
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))
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,48 +1,38 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageItem;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Abilities;
|
||||
import mage.abilities.AbilitiesImpl;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.common.ActivateAbilityTriggeredAbility;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
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.meta.OrTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterInstantOrSorcerySpell;
|
||||
import mage.constants.*;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.FilterStackObject;
|
||||
import mage.filter.common.FilterInstantOrSorcerySpell;
|
||||
import mage.filter.predicate.ObjectSourcePlayer;
|
||||
import mage.filter.predicate.ObjectSourcePlayerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.stack.StackObject;
|
||||
import mage.game.stack.Spell;
|
||||
import mage.game.stack.StackObject;
|
||||
import mage.target.Target;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author padfoot
|
||||
* @author padfoot
|
||||
*/
|
||||
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}");
|
||||
|
||||
static {
|
||||
|
|
@ -52,32 +42,32 @@ public final class BillPotts extends CardImpl {
|
|||
|
||||
public BillPotts(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Whenever you cast an instant or sorcery spell that targets only Bill Potts or activate an ability that targets only Bill Potts, copy that spell or ability. You may choose new targets for the copy. This ability triggers only once each turn.
|
||||
this.addAbility(new OrTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new CopyStackObjectEffect("that spell or ability"),
|
||||
false,
|
||||
"",
|
||||
new SpellCastControllerTriggeredAbility(
|
||||
null,
|
||||
filterInstantOrSorcery,
|
||||
false,
|
||||
SetTargetPointer.SPELL
|
||||
),
|
||||
new ActivateAbilityTriggeredAbility(
|
||||
null,
|
||||
filterAbility,
|
||||
SetTargetPointer.SPELL
|
||||
)
|
||||
this.addAbility(new OrTriggeredAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new CopyStackObjectEffect("that spell or ability"),
|
||||
false,
|
||||
"",
|
||||
new SpellCastControllerTriggeredAbility(
|
||||
null,
|
||||
filterInstantOrSorcery,
|
||||
false,
|
||||
SetTargetPointer.SPELL
|
||||
),
|
||||
new ActivateAbilityTriggeredAbility(
|
||||
null,
|
||||
filterAbility,
|
||||
SetTargetPointer.SPELL
|
||||
)
|
||||
).setTriggersLimitEachTurn(1));
|
||||
|
||||
// Doctor's companion
|
||||
// Doctor's companion
|
||||
this.addAbility(DoctorsCompanionAbility.getInstance());
|
||||
|
||||
}
|
||||
|
|
@ -97,7 +87,7 @@ enum BillPottsPredicate implements ObjectSourcePlayerPredicate<StackObject> {
|
|||
|
||||
@Override
|
||||
public boolean apply(ObjectSourcePlayer<StackObject> input, Game game) {
|
||||
List<UUID> oneTargetList = Arrays.asList(input.getSourceId());
|
||||
List<UUID> oneTargetList = Arrays.asList(input.getSourceId());
|
||||
return (makeStream(input, game).collect(Collectors.toList()).equals(oneTargetList));
|
||||
}
|
||||
|
||||
|
|
@ -108,9 +98,9 @@ enum BillPottsPredicate implements ObjectSourcePlayerPredicate<StackObject> {
|
|||
} else {
|
||||
objectAbilities.add(input.getObject().getStackAbility());
|
||||
}
|
||||
return objectAbilities
|
||||
.stream()
|
||||
.map(Ability::getModes)
|
||||
return objectAbilities
|
||||
.stream()
|
||||
.map(Ability::getModes)
|
||||
.flatMap(m -> m.getSelectedModes().stream().map(m::get))
|
||||
.filter(Objects::nonNull)
|
||||
.map(Mode::getTargets)
|
||||
|
|
|
|||
|
|
@ -34,13 +34,21 @@ public final class Blink extends CardImpl {
|
|||
|
||||
// I, III -- Choose target creature. Its owner shuffles it into their library, then investigates.
|
||||
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()
|
||||
);
|
||||
|
||||
// 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(
|
||||
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())
|
||||
);
|
||||
this.addAbility(sagaAbility);
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ enum GenesisOfTheDaleksValue implements DynamicValue {
|
|||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "for each lore counter on {this}";
|
||||
return "lore counter on {this}";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ class MeTheImmortalCastEffect extends AsThoughEffectImpl {
|
|||
|
||||
MeTheImmortalCastEffect() {
|
||||
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";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ class MidnightCrusaderShuttleEffect extends OneShotEffect {
|
|||
class MidnightCrusaderShuttleFirstChoice extends VillainousChoice {
|
||||
|
||||
MidnightCrusaderShuttleFirstChoice() {
|
||||
super("That player sacrifices a creature", "Sacrifice a creature");
|
||||
super("That player sacrifices a creature of their choice", "Sacrifice a creature");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import java.util.UUID;
|
|||
*/
|
||||
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 {
|
||||
filter.add(TokenPredicate.TRUE);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public final class TheDalekEmperor extends CardImpl {
|
|||
class TheDalekEmperorFirstChoice extends VillainousChoice {
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public final class TheEleventhDoctor extends CardImpl {
|
|||
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.
|
||||
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.
|
||||
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 {
|
||||
|
||||
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 {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import java.util.UUID;
|
|||
*/
|
||||
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();
|
||||
|
||||
static {
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public final class TheWarGames extends CardImpl {
|
|||
|
||||
// II, III -- Put a +1/+1 counter on each Warrior creature.
|
||||
sagaAbility.addChapterEffect(
|
||||
this, SagaChapter.CHAPTER_I, SagaChapter.CHAPTER_II,
|
||||
this, SagaChapter.CHAPTER_II, SagaChapter.CHAPTER_III,
|
||||
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.
|
||||
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());
|
||||
}
|
||||
|
||||
|
|
@ -41,7 +41,7 @@ public final class TraverseEternity extends CardImpl {
|
|||
|
||||
enum TraverseEternityValue implements DynamicValue {
|
||||
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() {
|
||||
return hint;
|
||||
|
|
|
|||
|
|
@ -1,28 +1,24 @@
|
|||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.CountersSourceCount;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.effects.common.LookLibraryAndPickControllerEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.triggers.BeginningOfUpkeepTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.PutCards;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterNonlandCard;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.filter.predicate.mageobject.PermanentPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author padfoot
|
||||
*/
|
||||
public final class WilfredMott extends CardImpl {
|
||||
|
|
@ -32,12 +28,12 @@ public final class WilfredMott extends CardImpl {
|
|||
|
||||
static {
|
||||
filter.add(PermanentPredicate.instance);
|
||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, 4));
|
||||
}
|
||||
|
||||
public WilfredMott(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.SOLDIER);
|
||||
|
|
@ -45,13 +41,15 @@ public final class WilfredMott extends CardImpl {
|
|||
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.
|
||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance())).withFlavorWord("Look to the Stars");
|
||||
LookLibraryAndPickControllerEffect effect = new LookLibraryAndPickControllerEffect(xValue, 1, filter, PutCards.BATTLEFIELD, PutCards.BOTTOM_RANDOM);
|
||||
effect.setText("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.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(
|
||||
new AddCountersSourceEffect(CounterType.TIME.createInstance())
|
||||
).withFlavorWord("Look to the Stars");
|
||||
ability.addEffect(new LookLibraryAndPickControllerEffect(
|
||||
xValue, 1, filter, PutCards.BATTLEFIELD, PutCards.BOTTOM_RANDOM
|
||||
).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);
|
||||
}
|
||||
|
||||
private WilfredMott(final WilfredMott card) {
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class VerifyCardDataTest {
|
|||
|
||||
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_COPYABLE_FIELDS = true; // disable for better verify test performance
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ public class CounterRemovedFromSourceWhileExiledTriggeredAbility extends Trigger
|
|||
this.onlyController = onlyController;
|
||||
setTriggerPhrase("Whenever " + (
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import mage.constants.Duration;
|
|||
public final class TheGirlInTheFireplaceHumanNobleToken extends TokenImpl {
|
||||
|
||||
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);
|
||||
color.setWhite(true);
|
||||
subtype.add(SubType.HUMAN,SubType.NOBLE);
|
||||
|
|
@ -25,7 +25,7 @@ public final class TheGirlInTheFireplaceHumanNobleToken extends TokenImpl {
|
|||
new PreventDamageToSourceEffect(
|
||||
Duration.WhileOnBattlefield,
|
||||
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