forked from External/mage
text fixes
This commit is contained in:
parent
51b1ab4cb6
commit
8bf75ed000
15 changed files with 41 additions and 33 deletions
|
|
@ -88,7 +88,7 @@ class AjaniNacatlAvengerZeroEffect extends OneShotEffect {
|
||||||
|
|
||||||
AjaniNacatlAvengerZeroEffect() {
|
AjaniNacatlAvengerZeroEffect() {
|
||||||
super(Outcome.PutCreatureInPlay);
|
super(Outcome.PutCreatureInPlay);
|
||||||
staticText = "Create a 2/1 white Car Warrior creature token. "
|
staticText = "Create a 2/1 white Cat Warrior creature token. "
|
||||||
+ "When you do, if you control a red permanent other than {this}, "
|
+ "When you do, if you control a red permanent other than {this}, "
|
||||||
+ "he deals damage equal to the number of creatures you control to any target.";
|
+ "he deals damage equal to the number of creatures you control to any target.";
|
||||||
}
|
}
|
||||||
|
|
@ -162,7 +162,7 @@ class AjaniNacatlAvengerMinusFourEffect extends OneShotEffect {
|
||||||
.filter(player -> controller.hasOpponent(player.getId(), game))
|
.filter(player -> controller.hasOpponent(player.getId(), game))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
Set<UUID> toKeep = new HashSet();
|
Set<UUID> toKeep = new HashSet<>();
|
||||||
for (Player player : playerList) {
|
for (Player player : playerList) {
|
||||||
for (CardType cardType : cardTypes) {
|
for (CardType cardType : cardTypes) {
|
||||||
String message = cardType.toString().equals("Artifact") ? "an " : "a ";
|
String message = cardType.toString().equals("Artifact") ? "an " : "a ";
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,8 @@ public final class AjaniNacatlPariah extends CardImpl {
|
||||||
this.addAbility(new TransformAbility());
|
this.addAbility(new TransformAbility());
|
||||||
this.addAbility(new DiesOneOrMoreCreatureTriggeredAbility(
|
this.addAbility(new DiesOneOrMoreCreatureTriggeredAbility(
|
||||||
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE),
|
new ExileAndReturnSourceEffect(PutCards.BATTLEFIELD_TRANSFORMED, Pronoun.HE),
|
||||||
filter
|
filter,
|
||||||
));
|
true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AjaniNacatlPariah(final AjaniNacatlPariah card) {
|
private AjaniNacatlPariah(final AjaniNacatlPariah card) {
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ public final class FortuneLoyalSteed extends CardImpl {
|
||||||
|
|
||||||
// Whenever Fortune attacks while saddled, at end of combat, exile it and up to one creature that saddled it this turn, then return those cards to the battlefield under their owner's control.
|
// Whenever Fortune attacks while saddled, at end of combat, exile it and up to one creature that saddled it this turn, then return those cards to the battlefield under their owner's control.
|
||||||
this.addAbility(new AttacksWhileSaddledTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
this.addAbility(new AttacksWhileSaddledTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(
|
||||||
new AtTheEndOfCombatDelayedTriggeredAbility(new FortuneLoyalSteedEffect()).setTriggerPhrase("at end of combat")
|
new AtTheEndOfCombatDelayedTriggeredAbility(new FortuneLoyalSteedEffect()).setTriggerPhrase("at end of combat, ")
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// Saddle 1
|
// Saddle 1
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ public final class GreedsGambit extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// At the beginning of your end step, you discard a card, lose 2 life, and sacrifice a creature.
|
// At the beginning of your end step, you discard a card, lose 2 life, and sacrifice a creature.
|
||||||
ability = new BeginningOfEndStepTriggeredAbility(new DiscardControllerEffect(1), TargetController.YOU, false);
|
ability = new BeginningOfEndStepTriggeredAbility(new DiscardControllerEffect(1).setText("you discard a card"), TargetController.YOU, false);
|
||||||
ability.addEffect(new LoseLifeSourceControllerEffect(2).setText(", lose 2 life"));
|
ability.addEffect(new LoseLifeSourceControllerEffect(2).setText(", lose 2 life"));
|
||||||
ability.addEffect(new SacrificeControllerEffect(
|
ability.addEffect(new SacrificeControllerEffect(
|
||||||
StaticFilters.FILTER_PERMANENT_A_CREATURE, 1, ""
|
StaticFilters.FILTER_PERMANENT_A_CREATURE, 1, ""
|
||||||
|
|
@ -38,11 +38,11 @@ public final class GreedsGambit extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// When Greed's Gambit leaves the battlefield, you discard three cards, lose 6 life, and sacrifice three creatures.
|
// When Greed's Gambit leaves the battlefield, you discard three cards, lose 6 life, and sacrifice three creatures.
|
||||||
ability = new LeavesBattlefieldTriggeredAbility(new DiscardControllerEffect(3), false);
|
ability = new LeavesBattlefieldTriggeredAbility(new DiscardControllerEffect(3).setText("you discard three cards"), false);
|
||||||
ability.addEffect(new LoseLifeSourceControllerEffect(6).setText(", lose 6 life"));
|
ability.addEffect(new LoseLifeSourceControllerEffect(6).setText(", lose 6 life"));
|
||||||
ability.addEffect(new SacrificeControllerEffect(
|
ability.addEffect(new SacrificeControllerEffect(
|
||||||
StaticFilters.FILTER_PERMANENT_CREATURE, 3, ""
|
StaticFilters.FILTER_PERMANENT_CREATURE, 3, ""
|
||||||
).setText(", and sacrifice 3 creatures"));
|
).setText(", and sacrifice three creatures"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ class HeadlinerScarlettEntersEffect extends OneShotEffect {
|
||||||
|
|
||||||
HeadlinerScarlettEntersEffect() {
|
HeadlinerScarlettEntersEffect() {
|
||||||
super(Outcome.Detriment);
|
super(Outcome.Detriment);
|
||||||
staticText = "Creatures target player controls can't block this turn.";
|
staticText = "creatures target player controls can't block this turn";
|
||||||
}
|
}
|
||||||
|
|
||||||
private HeadlinerScarlettEntersEffect(final HeadlinerScarlettEntersEffect effect) {
|
private HeadlinerScarlettEntersEffect(final HeadlinerScarlettEntersEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public final class KirriTalentedSprout extends CardImpl {
|
||||||
|
|
||||||
// Other Plants and Treefolk you control get +2/+0.
|
// Other Plants and Treefolk you control get +2/+0.
|
||||||
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
||||||
2, 0, Duration.WhileControlled, filter, true
|
2, 0, Duration.WhileOnBattlefield, filter, true
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// At the beginning of your postcombat main phase, return target Plant, Treefolk, or land card from your graveyard to your hand.
|
// At the beginning of your postcombat main phase, return target Plant, Treefolk, or land card from your graveyard to your hand.
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,9 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
import mage.counters.Counter;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
import mage.players.Player;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -59,7 +61,7 @@ public final class LumberingMegasloth extends CardImpl {
|
||||||
enum LumberingMegaslothValue implements DynamicValue {
|
enum LumberingMegaslothValue implements DynamicValue {
|
||||||
instance;
|
instance;
|
||||||
|
|
||||||
private static final Hint hint = new ValueHint("Number of Counters:", instance);
|
private static final Hint hint = new ValueHint("Number of counters", instance);
|
||||||
|
|
||||||
public static Hint getHint() {
|
public static Hint getHint() {
|
||||||
return hint;
|
return hint;
|
||||||
|
|
@ -73,16 +75,16 @@ enum LumberingMegaslothValue implements DynamicValue {
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.map(perm -> perm.getCounters(game))
|
.map(perm -> perm.getCounters(game))
|
||||||
.flatMap(counters -> counters.values().stream())
|
.flatMap(counters -> counters.values().stream())
|
||||||
.mapToInt(counter -> counter.getCount())
|
.mapToInt(Counter::getCount)
|
||||||
.sum();
|
.sum();
|
||||||
int onPlayers = game.getState()
|
int onPlayers = game.getState()
|
||||||
.getPlayersInRange(sourceAbility.getControllerId(), game)
|
.getPlayersInRange(sourceAbility.getControllerId(), game)
|
||||||
.stream()
|
.stream()
|
||||||
.map(game::getPlayer)
|
.map(game::getPlayer)
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.map(player -> player.getCounters())
|
.map(Player::getCounters)
|
||||||
.flatMap(counters -> counters.values().stream())
|
.flatMap(counters -> counters.values().stream())
|
||||||
.mapToInt(counter -> counter.getCount())
|
.mapToInt(Counter::getCount)
|
||||||
.sum();
|
.sum();
|
||||||
return onPermanents + onPlayers;
|
return onPermanents + onPlayers;
|
||||||
}
|
}
|
||||||
|
|
@ -99,6 +101,6 @@ enum LumberingMegaslothValue implements DynamicValue {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return "counters among players and permanents";
|
return "counter among players and permanents";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -51,7 +51,7 @@ class MemoryVesselExileEffect extends OneShotEffect {
|
||||||
MemoryVesselExileEffect() {
|
MemoryVesselExileEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
staticText = "each player exiles the top seven cards of their library. " +
|
staticText = "each player exiles the top seven cards of their library. " +
|
||||||
"Until your next turn, players may play cards they exiled this way";
|
"Until your next turn, players may play cards they exiled from their library this way";
|
||||||
}
|
}
|
||||||
|
|
||||||
private MemoryVesselExileEffect(final MemoryVesselExileEffect effect) {
|
private MemoryVesselExileEffect(final MemoryVesselExileEffect effect) {
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class OliviaOpulentOutlaw extends CardImpl {
|
public final class OliviaOpulentOutlaw extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("outlaws");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(OutlawPredicate.instance);
|
filter.add(OutlawPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final FilterControlledPermanent filterTreasure = new FilterControlledPermanent("a Treasure");
|
private static final FilterControlledPermanent filterTreasure = new FilterControlledPermanent("Treasures");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filterTreasure.add(SubType.TREASURE.getPredicate());
|
filterTreasure.add(SubType.TREASURE.getPredicate());
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.AttachEffect;
|
import mage.abilities.effects.common.AttachEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
|
import mage.abilities.effects.common.continuous.BoostEquippedEffect;
|
||||||
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.abilities.keyword.VigilanceAbility;
|
import mage.abilities.keyword.VigilanceAbility;
|
||||||
|
|
@ -47,7 +47,7 @@ public final class PreWarFormalwear extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// Equipped creature gets +2/+2 and has vigilance.
|
// Equipped creature gets +2/+2 and has vigilance.
|
||||||
ability = new SimpleStaticAbility(new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield));
|
ability = new SimpleStaticAbility(new BoostEquippedEffect(2, 2, Duration.WhileOnBattlefield));
|
||||||
ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA).setText("and has vigilance"));
|
ability.addEffect(new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.AURA).setText("and has vigilance"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,8 @@ public final class SandstormSalvager extends CardImpl {
|
||||||
new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter), new GenericManaCost(2)
|
new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter), new GenericManaCost(2)
|
||||||
);
|
);
|
||||||
ability.addCost(new TapSourceCost());
|
ability.addCost(new TapSourceCost());
|
||||||
ability.addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter));
|
ability.addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, filter)
|
||||||
|
.setText("they gain trample until end of turn"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,8 @@ public final class VengefulTownsfolk extends CardImpl {
|
||||||
// Whenever one or more other creatures you control die, put a +1/+1 counter on Vengeful Townsfolk.
|
// Whenever one or more other creatures you control die, put a +1/+1 counter on Vengeful Townsfolk.
|
||||||
this.addAbility(new DiesOneOrMoreCreatureTriggeredAbility(
|
this.addAbility(new DiesOneOrMoreCreatureTriggeredAbility(
|
||||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
|
||||||
filter
|
filter,
|
||||||
));
|
false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private VengefulTownsfolk(final VengefulTownsfolk card) {
|
private VengefulTownsfolk(final VengefulTownsfolk card) {
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ public class DiesOneOrMoreCreatureTriggeredAbility extends TriggeredAbilityImpl
|
||||||
|
|
||||||
private final FilterCreaturePermanent filter;
|
private final FilterCreaturePermanent filter;
|
||||||
|
|
||||||
public DiesOneOrMoreCreatureTriggeredAbility(Effect effect, FilterCreaturePermanent filter) {
|
public DiesOneOrMoreCreatureTriggeredAbility(Effect effect, FilterCreaturePermanent filter, boolean optional) {
|
||||||
super(Zone.BATTLEFIELD, effect, false);
|
super(Zone.BATTLEFIELD, effect, optional);
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.setTriggerPhrase("Whenever one or more " + filter.getMessage() + " die, ");
|
this.setTriggerPhrase("Whenever one or more " + filter.getMessage() + " die, ");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -132,13 +132,17 @@ public class MillThenPutInHandEffect extends OneShotEffect {
|
||||||
return staticText;
|
return staticText;
|
||||||
}
|
}
|
||||||
StringBuilder sb = new StringBuilder("mill ");
|
StringBuilder sb = new StringBuilder("mill ");
|
||||||
sb.append(CardUtil.numberToText(amount));
|
if (amount == 1) {
|
||||||
sb.append(" cards. ");
|
sb.append("a card. ");
|
||||||
|
} else {
|
||||||
|
sb.append(CardUtil.numberToText(amount));
|
||||||
|
sb.append(" cards. ");
|
||||||
|
}
|
||||||
sb.append(optional ? "You may " : "Then ");
|
sb.append(optional ? "You may " : "Then ");
|
||||||
sb.append("put ");
|
sb.append("put ");
|
||||||
if (maxAmountReturned > 1) {
|
if (maxAmountReturned > 1) {
|
||||||
sb.append(optional ? "up to " : "");
|
sb.append(optional ? "up to " : "");
|
||||||
sb.append(CardUtil.numberToText(maxAmountReturned) + " ");
|
sb.append(CardUtil.numberToText(maxAmountReturned)).append(" ");
|
||||||
}
|
}
|
||||||
sb.append(filter.getMessage());
|
sb.append(filter.getMessage());
|
||||||
sb.append(" from among ");
|
sb.append(" from among ");
|
||||||
|
|
|
||||||
|
|
@ -990,6 +990,7 @@ public final class CardUtil {
|
||||||
|| text.startsWith("another ")
|
|| text.startsWith("another ")
|
||||||
|| text.startsWith("any ")
|
|| text.startsWith("any ")
|
||||||
|| text.startsWith("{this} ")
|
|| text.startsWith("{this} ")
|
||||||
|
|| text.startsWith("your ")
|
||||||
|| text.startsWith("one ")) {
|
|| text.startsWith("one ")) {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue