From 9a66f1713b2bbf1a56506e59f535e79f6072c734 Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Mon, 14 May 2018 11:11:11 -0400 Subject: [PATCH] refactored instances of various types of counters --- .../src/mage/cards/a/ArbiterOfTheIdeal.java | 4 +-- .../src/mage/cards/a/AzorsElocutors.java | 14 ++++----- .../src/mage/cards/b/BloodletterQuill.java | 9 +++--- Mage.Sets/src/mage/cards/b/BribersPurse.java | 8 ++--- .../mage/cards/c/CelestialConvergence.java | 17 +++++------ Mage.Sets/src/mage/cards/j/JumboImp.java | 2 +- .../src/mage/cards/p/PhylacteryLich.java | 6 ++-- .../src/mage/cards/q/QuarantineField.java | 8 ++--- .../src/mage/cards/s/SenseiGoldenTail.java | 29 +++++++++++++------ Mage.Sets/src/mage/cards/s/Smokestack.java | 8 ++--- .../mage/cards/y/YisanTheWandererBard.java | 8 ++--- .../main/java/mage/counters/CounterType.java | 9 ++++++ 12 files changed, 69 insertions(+), 53 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java b/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java index 44e5c7b2f0..23f0696bd3 100644 --- a/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java +++ b/Mage.Sets/src/mage/cards/a/ArbiterOfTheIdeal.java @@ -38,7 +38,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.InspiredAbility; import mage.cards.*; import mage.constants.*; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -116,7 +116,7 @@ class ArbiterOfTheIdealEffect extends OneShotEffect { controller.moveCards(card, Zone.BATTLEFIELD, source, game); Permanent permanent = game.getPermanent(card.getId()); if (permanent != null) { - permanent.addCounters(new Counter("Manifestation"), source, game); + permanent.addCounters(CounterType.MANIFESTATION.createInstance(), source, game); ContinuousEffect effect = new AddCardTypeTargetEffect(Duration.Custom, CardType.ENCHANTMENT); effect.setTargetPointer(new FixedTarget(permanent, game)); game.addEffect(effect, source); diff --git a/Mage.Sets/src/mage/cards/a/AzorsElocutors.java b/Mage.Sets/src/mage/cards/a/AzorsElocutors.java index 20fbcb0c98..90103594a0 100644 --- a/Mage.Sets/src/mage/cards/a/AzorsElocutors.java +++ b/Mage.Sets/src/mage/cards/a/AzorsElocutors.java @@ -37,14 +37,13 @@ import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; - /** * * @author LevelX2 @@ -52,11 +51,10 @@ import mage.players.Player; public class AzorsElocutors extends CardImpl { public AzorsElocutors(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W/U}{W/U}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W/U}{W/U}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ADVISOR); - this.power = new MageInt(3); this.toughness = new MageInt(5); @@ -65,7 +63,6 @@ public class AzorsElocutors extends CardImpl { // Whenever a source deals damage to you, remove a filibuster counter from Azor's Elocutors. this.addAbility(new AzorsElocutorsTriggeredAbility()); - } public AzorsElocutors(final AzorsElocutors card) { @@ -77,10 +74,11 @@ public class AzorsElocutors extends CardImpl { return new AzorsElocutors(this); } } + class AzorsElocutorsTriggeredAbility extends TriggeredAbilityImpl { public AzorsElocutorsTriggeredAbility() { - super(Zone.BATTLEFIELD, new RemoveCounterSourceEffect(new Counter("filibuster")), false); + super(Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.FILIBUSTER.createInstance()), false); } public AzorsElocutorsTriggeredAbility(final AzorsElocutorsTriggeredAbility ability) { @@ -124,8 +122,8 @@ class AzorsElocutorsEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { - permanent.addCounters(new Counter("filibuster"), source, game); - if (permanent.getCounters(game).getCount("filibuster") > 4) { + permanent.addCounters(CounterType.FILIBUSTER.createInstance(), source, game); + if (permanent.getCounters(game).getCount(CounterType.FILIBUSTER) > 4) { Player player = game.getPlayer(permanent.getControllerId()); if (player != null) { player.won(game); diff --git a/Mage.Sets/src/mage/cards/b/BloodletterQuill.java b/Mage.Sets/src/mage/cards/b/BloodletterQuill.java index 746d619d0c..c7b12eb889 100644 --- a/Mage.Sets/src/mage/cards/b/BloodletterQuill.java +++ b/Mage.Sets/src/mage/cards/b/BloodletterQuill.java @@ -42,7 +42,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Zone; -import mage.counters.Counter; +import mage.counters.CounterType; /** * @@ -53,17 +53,16 @@ public class BloodletterQuill extends CardImpl { public BloodletterQuill(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); - Counter bloodCounter = new Counter("blood"); // {2}, {T}, Put a blood counter on Bloodletter Quill: Draw a card, then lose 1 life for each blood counter on Bloodletter Quill. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2)); - ability.addEffect(new LoseLifeSourceControllerEffect(new CountersSourceCount(bloodCounter.getName())) + ability.addEffect(new LoseLifeSourceControllerEffect(new CountersSourceCount(CounterType.BLOOD)) .setText(", then lose 1 life for each blood counter on {this}")); ability.addCost(new TapSourceCost()); - ability.addCost(new PutCountersSourceCost(bloodCounter)); + ability.addCost(new PutCountersSourceCost(CounterType.BLOOD.createInstance())); this.addAbility(ability); // {U}{B}: Remove a blood counter from Bloodletter Quill. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new RemoveCounterSourceEffect(bloodCounter), new ManaCostsImpl("{U}{B}"))); + new RemoveCounterSourceEffect(CounterType.BLOOD.createInstance()), new ManaCostsImpl("{U}{B}"))); } public BloodletterQuill(final BloodletterQuill card) { diff --git a/Mage.Sets/src/mage/cards/b/BribersPurse.java b/Mage.Sets/src/mage/cards/b/BribersPurse.java index 56ee979ae0..f515587dd6 100644 --- a/Mage.Sets/src/mage/cards/b/BribersPurse.java +++ b/Mage.Sets/src/mage/cards/b/BribersPurse.java @@ -41,7 +41,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.target.common.TargetCreaturePermanent; /** @@ -51,15 +51,15 @@ import mage.target.common.TargetCreaturePermanent; public class BribersPurse extends CardImpl { public BribersPurse(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{X}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{X}"); // Briber's Purse enters the battlefield with X gem counters on it. - this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(new Counter("gem")))); + this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.GEM.createInstance()))); // {1}, {T}, Remove a gem counter from Briber's Purse: Target creature can't attack or block this turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantAttackBlockTargetEffect(Duration.EndOfTurn), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); - ability.addCost(new RemoveCountersSourceCost(new Counter("gem"))); + ability.addCost(new RemoveCountersSourceCost(CounterType.GEM.createInstance())); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/c/CelestialConvergence.java b/Mage.Sets/src/mage/cards/c/CelestialConvergence.java index 3efb58cbec..4acdfa85c4 100644 --- a/Mage.Sets/src/mage/cards/c/CelestialConvergence.java +++ b/Mage.Sets/src/mage/cards/c/CelestialConvergence.java @@ -44,7 +44,7 @@ import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; import mage.constants.Zone; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.game.Game; import mage.players.Player; @@ -58,12 +58,12 @@ public class CelestialConvergence extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); // Celestial Convergence enters the battlefield with seven omen counters on it. - Effect effect = new AddCountersSourceEffect(new Counter("omen", 7)); + Effect effect = new AddCountersSourceEffect(CounterType.OMEN.createInstance(7)); this.addAbility(new EntersBattlefieldAbility(effect, "with seven omen counters")); // At the beginning of your upkeep, remove an omen counter from Celestial Convergence. If there are no omen counters on Celestial Convergence, the player with the highest life total wins the game. If two or more players are tied for highest life total, the game is a draw. Ability ability = new BeginningOfUpkeepTriggeredAbility( - Zone.BATTLEFIELD, new RemoveCounterSourceEffect(new Counter("omen")), TargetController.YOU, false); + Zone.BATTLEFIELD, new RemoveCounterSourceEffect(CounterType.OMEN.createInstance(1)), TargetController.YOU, false); ability.addEffect(new CelestialConvergenceEffect()); this.addAbility(ability); } @@ -100,18 +100,17 @@ class CelestialConvergenceEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); if (sourceObject != null && controller != null - && sourceObject.getCounters(game).getCount("omen") == 0) { + && sourceObject.getCounters(game).getCount(CounterType.OMEN) == 0) { /** * 801.14. If an effect states that a player wins the game, all of - * that player’s opponents within their range of influence lose - * the game instead. # + * that player’s opponents within their range of influence lose the + * game instead. # * * 801.15. If the effect of a spell or ability states that the game * is a draw, the game is a draw for that spell or ability’s - * controller and all players within their range of influence. - * They leave the game. All remaining players continue to play the - * game. + * controller and all players within their range of influence. They + * leave the game. All remaining players continue to play the game. * */ List highestLifePlayers = new ArrayList<>(); diff --git a/Mage.Sets/src/mage/cards/j/JumboImp.java b/Mage.Sets/src/mage/cards/j/JumboImp.java index bd7f5ef02f..b64c2b454c 100644 --- a/Mage.Sets/src/mage/cards/j/JumboImp.java +++ b/Mage.Sets/src/mage/cards/j/JumboImp.java @@ -67,7 +67,7 @@ public class JumboImp extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // As Jumbo Imp enters the battlefield, roll a six-sided die. Jumbo Imp enters the battlefield with a number of +1/+1 counters on it equal to the result. - this.addAbility(new EntersBattlefieldAbility(new JumboImpEffect(new Counter("P1P1")))); + this.addAbility(new EntersBattlefieldAbility(new JumboImpEffect(CounterType.P1P1.createInstance()))); // At the beginning of your upkeep, roll a six-sided die and put a number of +1/+1 counters on Jumbo Imp equal to the result. Ability ability2 = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new JumboImpAddCountersEffect(), TargetController.YOU, false); diff --git a/Mage.Sets/src/mage/cards/p/PhylacteryLich.java b/Mage.Sets/src/mage/cards/p/PhylacteryLich.java index 76dc257746..259c524ee8 100644 --- a/Mage.Sets/src/mage/cards/p/PhylacteryLich.java +++ b/Mage.Sets/src/mage/cards/p/PhylacteryLich.java @@ -41,7 +41,7 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Outcome; import mage.constants.Zone; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; @@ -57,7 +57,7 @@ import mage.target.common.TargetControlledPermanent; public class PhylacteryLich extends CardImpl { public PhylacteryLich(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}{B}{B}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{B}{B}{B}"); this.subtype.add(SubType.ZOMBIE); this.power = new MageInt(5); @@ -142,7 +142,7 @@ class PhylacteryLichEffect extends OneShotEffect { if (player.choose(Outcome.Neutral, target, source.getSourceId(), game)) { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { - permanent.addCounters(new Counter("phylactery"), source, game); + permanent.addCounters(CounterType.PHYLACTERY.createInstance(), source, game); } } } diff --git a/Mage.Sets/src/mage/cards/q/QuarantineField.java b/Mage.Sets/src/mage/cards/q/QuarantineField.java index 6a2c9a2672..76cb9db918 100644 --- a/Mage.Sets/src/mage/cards/q/QuarantineField.java +++ b/Mage.Sets/src/mage/cards/q/QuarantineField.java @@ -41,7 +41,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.filter.common.FilterNonlandPermanent; import mage.filter.predicate.permanent.ControllerPredicate; import mage.game.Game; @@ -56,10 +56,10 @@ import mage.util.CardUtil; public class QuarantineField extends CardImpl { public QuarantineField(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{X}{X}{W}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{X}{X}{W}{W}"); // Quarantine Field enters the battlefield with X isolation counters on it. - this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(new Counter("isolation")))); + this.addAbility(new EntersBattlefieldAbility(new EntersBattlefieldWithXCountersEffect(CounterType.ISOLATION.createInstance()))); // When Quarantine Field enters the battlefield, for each isolation counter on it, exile up to one target nonland permanent an opponenet controls until Quarantine Field leaves the battlefield. Ability ability = new EntersBattlefieldTriggeredAbility(new QuarantineFieldEffect(), false); @@ -77,7 +77,7 @@ public class QuarantineField extends CardImpl { if (ability instanceof EntersBattlefieldTriggeredAbility) { Permanent sourceObject = game.getPermanent(ability.getSourceId()); if (sourceObject != null) { - int isolationCounters = sourceObject.getCounters(game).getCount("isolation"); + int isolationCounters = sourceObject.getCounters(game).getCount(CounterType.ISOLATION); FilterNonlandPermanent filter = new FilterNonlandPermanent("up to " + isolationCounters + " nonland permanents controlled by any opponents"); filter.add(new ControllerPredicate(TargetController.OPPONENT)); ability.addTarget(new TargetPermanent(0, isolationCounters, filter, false)); diff --git a/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java b/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java index 1a65a80d32..8dc162790f 100644 --- a/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java +++ b/Mage.Sets/src/mage/cards/s/SenseiGoldenTail.java @@ -25,7 +25,6 @@ * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. */ - package mage.cards.s; import java.util.UUID; @@ -41,7 +40,7 @@ import mage.abilities.keyword.BushidoAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.target.common.TargetCreaturePermanent; /** @@ -50,8 +49,8 @@ import mage.target.common.TargetCreaturePermanent; */ public class SenseiGoldenTail extends CardImpl { - public SenseiGoldenTail (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); + public SenseiGoldenTail(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.FOX); this.subtype.add(SubType.SAMURAI); @@ -61,17 +60,29 @@ public class SenseiGoldenTail extends CardImpl { // Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) this.addAbility(new BushidoAbility(1)); + // {1}{W}, {T}: Put a training counter on target creature. - Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(new Counter("Training")), new ManaCostsImpl("{1}{W}")); + // That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. + // Activate this ability only any time you could cast a sorcery. + Ability ability = new ActivateAsSorceryActivatedAbility( + Zone.BATTLEFIELD, + new AddCountersTargetEffect(CounterType.TRAINING.createInstance()), + new ManaCostsImpl("{1}{W}") + ); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); - // That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. Activate this ability only any time you could cast a sorcery. - ability.addEffect(new GainAbilityTargetEffect(new BushidoAbility(1),Duration.Custom)); - ability.addEffect(new AddCardSubTypeTargetEffect(SubType.SAMURAI,Duration.Custom)); + ability.addEffect(new GainAbilityTargetEffect( + new BushidoAbility(1), Duration.Custom) + .setText("That creature gains bushido 1") + ); + ability.addEffect( + new AddCardSubTypeTargetEffect(SubType.SAMURAI, Duration.Custom) + .setText("and becomes a Samurai in addition to its other creature types.") + ); this.addAbility(ability); } - public SenseiGoldenTail (final SenseiGoldenTail card) { + public SenseiGoldenTail(final SenseiGoldenTail card) { super(card); } diff --git a/Mage.Sets/src/mage/cards/s/Smokestack.java b/Mage.Sets/src/mage/cards/s/Smokestack.java index fbe693f553..ab121db090 100644 --- a/Mage.Sets/src/mage/cards/s/Smokestack.java +++ b/Mage.Sets/src/mage/cards/s/Smokestack.java @@ -37,7 +37,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.TargetController; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.filter.common.FilterControlledPermanent; import mage.game.Game; import mage.game.permanent.Permanent; @@ -52,10 +52,10 @@ import mage.target.common.TargetControlledPermanent; public class Smokestack extends CardImpl { public Smokestack(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}"); // At the beginning of your upkeep, you may put a soot counter on Smokestack. - this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(new Counter("Soot")), TargetController.YOU, true)); + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.SOOT.createInstance()), TargetController.YOU, true)); // At the beginning of each player's upkeep, that player sacrifices a permanent for each soot counter on Smokestack. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SmokestackEffect(), TargetController.ANY, false)); @@ -92,7 +92,7 @@ class SmokestackEffect extends OneShotEffect { Player activePlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (activePlayer != null && sourcePermanent != null) { - int count = sourcePermanent.getCounters(game).getCount("Soot"); + int count = sourcePermanent.getCounters(game).getCount(CounterType.SOOT); if (count > 0) { int amount = Math.min(count, game.getBattlefield().countAll(new FilterControlledPermanent(), activePlayer.getId(), game)); Target target = new TargetControlledPermanent(amount, amount, new FilterControlledPermanent(), true); diff --git a/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java b/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java index 718561d6e5..f1780d1f67 100644 --- a/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java +++ b/Mage.Sets/src/mage/cards/y/YisanTheWandererBard.java @@ -44,7 +44,7 @@ import mage.constants.ComparisonType; import mage.constants.Outcome; import mage.constants.SuperType; import mage.constants.Zone; -import mage.counters.Counter; +import mage.counters.CounterType; import mage.filter.FilterCard; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.ConvertedManaCostPredicate; @@ -60,7 +60,7 @@ import mage.target.common.TargetCardInLibrary; public class YisanTheWandererBard extends CardImpl { public YisanTheWandererBard(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ROGUE); @@ -71,7 +71,7 @@ public class YisanTheWandererBard extends CardImpl { // {2}{G}, {T}, Put a verse counter on Yisan, the Wanderer Bard: Search your library for a creature card with converted mana cost equal to the number of verse counters on Yisan, put it onto the battlefield, then shuffle your library. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new YisanTheWandererBardEffect(), new ManaCostsImpl("{2}{G}")); ability.addCost(new TapSourceCost()); - ability.addCost(new PutCountersSourceCost(new Counter("verse"))); + ability.addCost(new PutCountersSourceCost(CounterType.VERSE.createInstance())); this.addAbility(ability); } @@ -106,7 +106,7 @@ class YisanTheWandererBardEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (sourcePermanent != null && controller != null) { - int newConvertedCost = sourcePermanent.getCounters(game).getCount("verse"); + int newConvertedCost = sourcePermanent.getCounters(game).getCount(CounterType.VERSE); FilterCard filter = new FilterCard("creature card with converted mana cost " + newConvertedCost); filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, newConvertedCost)); filter.add(new CardTypePredicate(CardType.CREATURE)); diff --git a/Mage/src/main/java/mage/counters/CounterType.java b/Mage/src/main/java/mage/counters/CounterType.java index c7ecd539e5..39e6d55ef7 100644 --- a/Mage/src/main/java/mage/counters/CounterType.java +++ b/Mage/src/main/java/mage/counters/CounterType.java @@ -39,6 +39,7 @@ public enum CounterType { ARROWHEAD("arrowhead"), AWAKENING("awakening"), BLAZE("blaze"), + BLOOD("blood"), BOUNTY("bounty"), BRIBERY("bribery"), BRICK("brick"), @@ -67,10 +68,12 @@ public enum CounterType { FADE("fade"), FATE("fate"), FEATHER("feather"), + FILIBUSTER("filibuster"), FLOOD("flood"), FURY("fury"), FUNGUS("fungus"), FUSE("fuse"), + GEM("gem"), GLOBE("globe"), GOLD("gold"), GROWTH("growth"), @@ -83,6 +86,7 @@ public enum CounterType { ICE("ice"), INFECTION("infection"), INTERVENTION("intervention"), + ISOLATION("isolation"), JAVELIN("javelin"), KI("ki"), LANDMARK("landmark"), @@ -90,6 +94,7 @@ public enum CounterType { LORE("lore"), LUCK("luck"), LOYALTY("loyalty"), + MANIFESTATION("manifestation"), MANNEQUIN("mannequin"), M1M1(new BoostCounter(-1, -1).name), M2M1(new BoostCounter(-2, -1).name), @@ -99,6 +104,7 @@ public enum CounterType { MIRE("mire"), MUSTER("muster"), NET("net"), + OMEN("omen"), P0P1(new BoostCounter(0, 1).name), P1P0(new BoostCounter(1, 0).name), P1P1(new BoostCounter(1, 1).name), @@ -108,6 +114,7 @@ public enum CounterType { PAIN("pain"), PETAL("petal"), PETRIFICATION("petrification"), + PHYLACTERY("phylactery"), PLAGUE("plague"), PLOT("plot"), POLYP("polyp"), @@ -123,6 +130,7 @@ public enum CounterType { SHIELD("shield"), SHRED("shred"), SLIME("slime"), + SOOT("soot"), SPITE("spite"), SPORE("spore"), STORAGE("storage"), @@ -132,6 +140,7 @@ public enum CounterType { TIDE("tide"), TIME("time"), TOWER("tower"), + TRAINING("training"), TRAP("trap"), TREASURE("treasure"), UNITY("unity"),