diff --git a/Mage.Sets/src/mage/cards/m/MagusLuceaKane.java b/Mage.Sets/src/mage/cards/m/MagusLuceaKane.java index 0edc2f14b32..7b9e5b36826 100644 --- a/Mage.Sets/src/mage/cards/m/MagusLuceaKane.java +++ b/Mage.Sets/src/mage/cards/m/MagusLuceaKane.java @@ -104,11 +104,9 @@ class MagusLuceaKaneTriggeredAbility extends DelayedTriggeredAbility { // spell if (event.getType() == GameEvent.EventType.SPELL_CAST) { Spell spell = game.getStack().getSpell(event.getTargetId()); - if (spell != null && spell.isInstantOrSorcery(game)) { - if (spell.getSpellAbility().getManaCostsToPay().containsX()) { - this.getEffects().setValue("stackObject", (StackObject) spell); - return true; - } + if (spell != null && spell.getSpellAbility().getManaCostsToPay().containsX()) { + this.getEffects().setValue("stackObject", (StackObject) spell); + return true; } } return false; diff --git a/Mage.Sets/src/mage/cards/p/PhantomNomad.java b/Mage.Sets/src/mage/cards/p/PhantomNomad.java index f6493a25bfd..c80a7084443 100644 --- a/Mage.Sets/src/mage/cards/p/PhantomNomad.java +++ b/Mage.Sets/src/mage/cards/p/PhantomNomad.java @@ -30,7 +30,7 @@ public final class PhantomNomad extends CardImpl { // Phantom Nomad enters the battlefield with two +1/+1 counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), - "two +1/+1 counters on it")); + "with two +1/+1 counters on it")); // If damage would be dealt to Phantom Nomad, prevent that damage. Remove a +1/+1 counter from Phantom Nomad. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PhantomPreventionEffect())); diff --git a/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java b/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java index 1b82f206f33..febd8576b56 100644 --- a/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java +++ b/Mage.Sets/src/mage/cards/t/ThaliasLieutenant.java @@ -34,10 +34,10 @@ public final class ThaliasLieutenant extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // When Thalia's Lieutenant enters the battlefield, put +1/+1 counter on each other Human you control. - this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter).setText("put +1/+1 counter on each other Human you control"), false)); + // When Thalia's Lieutenant enters the battlefield, put a +1/+1 counter on each other Human you control. + this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter).setText("put a +1/+1 counter on each other Human you control"), false)); - // Whenever another Human enters the battlefield under you control, put a +1/+1 counter on Thalia's Lieutenant. + // Whenever another Human enters the battlefield under your control, put a +1/+1 counter on Thalia's Lieutenant. this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter)); } diff --git a/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java index 85dcf664b2e..b25fcbfe0dd 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/PutCountersSourceCost.java @@ -16,25 +16,16 @@ import mage.util.CardUtil; */ public class PutCountersSourceCost extends CostImpl { - private final int amount; - private final String name; private final Counter counter; public PutCountersSourceCost(Counter counter) { this.counter = counter.copy(); - this.amount = counter.getCount(); - this.name = counter.getName(); - this.text = new StringBuilder("Put ").append((amount == 1 ? "a" : CardUtil.numberToText(amount))) - .append(' ').append(name).append(" counter").append((amount != 1 ? "s" : "")) - .append(" on {this}").toString(); - + this.text = "Put " + counter.getDescription() + " on {this}"; } public PutCountersSourceCost(PutCountersSourceCost cost) { super(cost); this.counter = cost.counter; - this.amount = cost.amount; - this.name = cost.name; } @Override diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/AddPoisonCounterTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/AddPoisonCounterTargetEffect.java index 93e748a3bb9..9fc8ffd3871 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/AddPoisonCounterTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/AddPoisonCounterTargetEffect.java @@ -53,6 +53,6 @@ public class AddPoisonCounterTargetEffect extends OneShotEffect { } return getTargetPointer().describeTargets(mode.getTargets(), "it") + (getTargetPointer().isPlural(mode.getTargets()) ? " get " : " gets ") + - CardUtil.numberToText(amount, "a") + " poison counter" + (amount > 1 ? "s" : ""); + CardUtil.getSimpleCountersText(amount, "a", "poison"); } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/counter/GetEnergyCountersControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/counter/GetEnergyCountersControllerEffect.java index f33f82445be..1fac77dd0ff 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/counter/GetEnergyCountersControllerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/counter/GetEnergyCountersControllerEffect.java @@ -57,9 +57,7 @@ public class GetEnergyCountersControllerEffect extends OneShotEffect { sb.append("{E}"); } sb.append(" ("); - sb.append(CardUtil.numberToText(val, "an")); - sb.append(" energy counter"); - sb.append(val > 1 ? "s" : ""); + sb.append(CardUtil.getSimpleCountersText(val, "an", "energy")); sb.append(")"); if ((value instanceof StaticValue)) { sb.append('.'); diff --git a/Mage/src/main/java/mage/abilities/effects/keyword/IncubateEffect.java b/Mage/src/main/java/mage/abilities/effects/keyword/IncubateEffect.java index 4111c12f8aa..15883a3181c 100644 --- a/Mage/src/main/java/mage/abilities/effects/keyword/IncubateEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/keyword/IncubateEffect.java @@ -23,7 +23,7 @@ public class IncubateEffect extends OneShotEffect { super(Outcome.Detriment); this.amount = amount; staticText = "incubate " + amount + ". (Create an Incubator artifact token with " + - CardUtil.numberToText(amount, "a") + " +1/+1 counter" + (amount > 1 ? "s" : "") + + CardUtil.getOneOneCountersText(amount) + " on it and \"{2}: Transform this artifact.\" It transforms into a 0/0 Phyrexian artifact creature.)"; } diff --git a/Mage/src/main/java/mage/abilities/keyword/AwakenAbility.java b/Mage/src/main/java/mage/abilities/keyword/AwakenAbility.java index ba9a5db7585..2582644d5f5 100644 --- a/Mage/src/main/java/mage/abilities/keyword/AwakenAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/AwakenAbility.java @@ -52,8 +52,8 @@ public class AwakenAbility extends SpellAbility { this.awakenValue = awakenValue; rule = "Awaken " + awakenValue + "—" + awakenCosts + " (If you cast this spell for " + awakenCosts + ", also put " - + CardUtil.numberToText(awakenValue, "a") - + " +1/+1 counters on target land you control and it becomes a 0/0 Elemental creature with haste. It's still a land.)"; + + CardUtil.getOneOneCountersText(awakenValue) + + " on target land you control and it becomes a 0/0 Elemental creature with haste. It's still a land.)"; } protected AwakenAbility(final AwakenAbility ability) { @@ -81,7 +81,7 @@ public class AwakenAbility extends SpellAbility { private AwakenEffect() { super(Outcome.BoostCreature); - this.staticText = "put " + CardUtil.numberToText(awakenValue, "a") + " +1/+1 counters on target land you control"; + this.staticText = "put " + CardUtil.getOneOneCountersText(awakenValue) +" on target land you control"; } protected AwakenEffect(final AwakenEffect effect) { diff --git a/Mage/src/main/java/mage/abilities/keyword/BackupAbility.java b/Mage/src/main/java/mage/abilities/keyword/BackupAbility.java index 78fda570d13..225a6016b45 100644 --- a/Mage/src/main/java/mage/abilities/keyword/BackupAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/BackupAbility.java @@ -71,9 +71,10 @@ public class BackupAbility extends EntersBattlefieldTriggeredAbility { @Override public String getRule() { - return "Backup " + amount + " (When this creature enters the battlefield, " + - "put a +1/+1 counter on target creature. If that's another creature, " + - "it gains the following abilit" + (abilitiesToAdd.size() > 1 ? "ies" : "y") + " until end of turn.)"; + return "Backup " + amount + " (When this creature enters the battlefield," + + " put " + CardUtil.getOneOneCountersText(amount) + + " on target creature. If that's another creature, it gains the following" + + " abilit" + (abilitiesToAdd.size() > 1 ? "ies" : "y") + " until end of turn.)"; } public void addAbility(Ability ability) { diff --git a/Mage/src/main/java/mage/abilities/keyword/BloodthirstAbility.java b/Mage/src/main/java/mage/abilities/keyword/BloodthirstAbility.java index 950f5de559b..140c8fe3f41 100644 --- a/Mage/src/main/java/mage/abilities/keyword/BloodthirstAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/BloodthirstAbility.java @@ -39,15 +39,9 @@ public class BloodthirstAbility extends EntersBattlefieldAbility { @Override public String getRule() { - StringBuilder sb = new StringBuilder("Bloodthirst ").append(amount) - .append(" (If an opponent was dealt damage this turn, this creature enters the battlefield with "); - if (amount == 1) { - sb.append("a +1/+1 counter"); - } else { - sb.append(CardUtil.numberToText(amount)).append(" +1/+1 counters"); - } - sb.append(" on it.)"); - return sb.toString(); + return "Bloodthirst " + amount + + " (If an opponent was dealt damage this turn, this creature enters the battlefield with " + + CardUtil.getOneOneCountersText(amount) + " on it.)"; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/FabricateAbility.java b/Mage/src/main/java/mage/abilities/keyword/FabricateAbility.java index 3ed2848c066..e857a2adfb2 100644 --- a/Mage/src/main/java/mage/abilities/keyword/FabricateAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/FabricateAbility.java @@ -38,7 +38,7 @@ public class FabricateAbility extends EntersBattlefieldTriggeredAbility { @Override public String getRule() { return "Fabricate " + value + " (When this creature enters the battlefield, put " - + CardUtil.numberToText(value, "a") + " +1/+1 counter" + (value > 1 ? "s" : "") + + CardUtil.getOneOneCountersText(value) + " on it or create " + CardUtil.numberToText(value, "a") + " 1/1 colorless Servo artifact creature token" + (value > 1 ? "s" : "") + ".)"; } @@ -72,7 +72,7 @@ class FabricateEffect extends OneShotEffect { Outcome.BoostCreature, "Fabricate " + value, null, - "Put " + CardUtil.numberToText(value, "a") + " +1/+1 counter" + (value > 1 ? "s" : ""), + "Put " + CardUtil.getOneOneCountersText(value), "Create " + CardUtil.numberToText(value, "a") + " 1/1 token" + (value > 1 ? "s" : ""), source, game)) { diff --git a/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java b/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java index 6663d65b3c2..ce0ea36581a 100644 --- a/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/GraftAbility.java @@ -87,12 +87,9 @@ public class GraftAbility extends TriggeredAbilityImpl { @Override public String getRule() { - StringBuilder sb = new StringBuilder("Graft"); - sb.append(' ').append(amount).append(" (This ").append(cardtype).append(" enters the battlefield with ") - .append(amount == 1 ? "a" : CardUtil.numberToText(amount)) - .append(" +1/+1 counter on it. Whenever a creature enters the battlefield, you may move a +1/+1 counter from this ") - .append(cardtype).append(" onto it.)"); - return sb.toString(); + return "Graft" + ' ' + amount + " (This " + cardtype + " enters the battlefield with " + + CardUtil.getOneOneCountersText(amount) + " on it. Whenever " + (cardtype.contains("creature") ? "another" : "a") + + " creature enters the battlefield, you may move a +1/+1 counter from this " + cardtype + " onto it.)"; } } @@ -103,7 +100,7 @@ class GraftStaticAbility extends StaticAbility { public GraftStaticAbility(int amount) { super(Zone.ALL, new EntersBattlefieldEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(amount)))); - ruleText = new StringBuilder("This enters the battlefield with ").append(amount).append(" +1/+1 counter on it.").toString(); + ruleText = "This enters the battlefield with " + CardUtil.getOneOneCountersText(amount) + " on it."; this.setRuleVisible(false); } diff --git a/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java b/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java index 4b716fe1b9a..64467254580 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ModularAbility.java @@ -89,16 +89,14 @@ public class ModularAbility extends DiesSourceTriggeredAbility { @Override public String getRule() { - StringBuilder sb = new StringBuilder("Modular"); if (sunburst) { - sb.append("—Sunburst (This enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it. When it dies, you may put its +1/+1 counters on target artifact creature.)"); + return "Modular—Sunburst (This enters the battlefield with a +1/+1 counter on it for each" + + " color of mana spent to cast it. When it dies, you may put its +1/+1 counters on target artifact creature.)"; } else { - sb.append(' ').append(amount).append(" (This creature enters the battlefield with ") - .append(CardUtil.numberToText(amount, "a")) - .append(" +1/+1 counter").append(amount != 1 ? "s" : "") - .append(" on it. When it dies, you may put its +1/+1 counters on target artifact creature.)"); + return "Modular " + amount + " (This creature enters the battlefield with " + + CardUtil.getOneOneCountersText(amount) + + " on it. When it dies, you may put its +1/+1 counters on target artifact creature.)"; } - return sb.toString(); } @Override @@ -113,7 +111,7 @@ class ModularStaticAbility extends StaticAbility { ModularStaticAbility(int amount) { super(Zone.ALL, new EntersBattlefieldEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(amount)))); - ruleText = "This enters the battlefield with " + CardUtil.numberToText(amount, "a") + " +1/+1 counter" + (amount != 1 ? "s" : "") + " on it."; + ruleText = "This enters the battlefield with " + CardUtil.getOneOneCountersText(amount) + " on it."; this.setRuleVisible(false); } diff --git a/Mage/src/main/java/mage/abilities/keyword/ReinforceAbility.java b/Mage/src/main/java/mage/abilities/keyword/ReinforceAbility.java index a475494c3ad..a53c24847f9 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ReinforceAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ReinforceAbility.java @@ -42,16 +42,9 @@ public class ReinforceAbility extends SimpleActivatedAbility { @Override public String getRule() { - StringBuilder sb = new StringBuilder("Reinforce "); - sb.append(count.toString()).append("—"); - sb.append(cost.getText()); - sb.append(" (").append(cost.getText()).append(", Discard this card: Put "); - if (count.toString().equals("1")) { - sb.append("a +1/+1 counter"); - } else { - sb.append(CardUtil.numberToText(count.toString())).append(" +1/+1 counters"); - } - sb.append(" on target creature.)"); - return sb.toString(); + String countStr = count.toString(); + return "Reinforce " + countStr + "—" + cost.getText() + " (" + cost.getText() + ", Discard this card: Put " + + CardUtil.numberToText(countStr, "a") + " +1/+1 counter" + (countStr.equals("1")?"":"s") + + " on target creature.)"; } } diff --git a/Mage/src/main/java/mage/abilities/keyword/ToxicAbility.java b/Mage/src/main/java/mage/abilities/keyword/ToxicAbility.java index 7ef7b971cd4..9b4f03e654c 100644 --- a/Mage/src/main/java/mage/abilities/keyword/ToxicAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/ToxicAbility.java @@ -28,7 +28,7 @@ public class ToxicAbility extends StaticAbility { @Override public String getRule() { return "toxic " + amount + " (Players dealt combat damage by this creature also get " + - CardUtil.numberToText(amount, "a") + " poison counter" + (amount > 1 ? "s" : "") + ".)"; + CardUtil.getSimpleCountersText(amount, "a", "poison") + ".)"; } @Override diff --git a/Mage/src/main/java/mage/counters/Counter.java b/Mage/src/main/java/mage/counters/Counter.java index de42b834f57..6d04fbb9d0e 100644 --- a/Mage/src/main/java/mage/counters/Counter.java +++ b/Mage/src/main/java/mage/counters/Counter.java @@ -100,7 +100,7 @@ public class Counter implements Serializable, Copyable { * @return a full description of this {@link Counter} */ public String getDescription() { - return CardUtil.numberToText(Math.max(count, 1), CounterType.findArticle(name)) + ' ' + name + (count > 1 ? " counters" : " counter"); + return CardUtil.getSimpleCountersText(Math.max(count, 1), CounterType.findArticle(name), name); } /** diff --git a/Mage/src/main/java/mage/util/CardUtil.java b/Mage/src/main/java/mage/util/CardUtil.java index f9e2328d347..b35b5c4c7ef 100644 --- a/Mage/src/main/java/mage/util/CardUtil.java +++ b/Mage/src/main/java/mage/util/CardUtil.java @@ -904,6 +904,14 @@ public final class CardUtil { return Outcome.BoostCreature; } + public static String getSimpleCountersText(int amount, String forOne, String counterType) { + return numberToText(amount, forOne)+" "+counterType+" counter"+ (amount==1 ? "" : "s"); + } + + public static String getOneOneCountersText(int amount) { + return getSimpleCountersText(amount, "a", "+1/+1"); + } + public static String getAddRemoveCountersText(DynamicValue amount, Counter counter, String description, boolean add) { StringBuilder sb = new StringBuilder(add ? "put " : "remove "); boolean xValue = amount.toString().equals("X");