mirror of
https://github.com/magefree/mage.git
synced 2026-01-10 04:42:07 -08:00
replaced all instances of converted mana cost with mana value
This commit is contained in:
parent
cb0df438dd
commit
a61d5543fa
610 changed files with 1781 additions and 1796 deletions
|
|
@ -96,7 +96,7 @@ public interface MageObject extends MageItem, Serializable {
|
|||
return symbols;
|
||||
}
|
||||
|
||||
int getConvertedManaCost();
|
||||
int getManaValue();
|
||||
|
||||
MageInt getPower();
|
||||
|
||||
|
|
|
|||
|
|
@ -233,9 +233,9 @@ public abstract class MageObjectImpl implements MageObject {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
if (manaCost != null) {
|
||||
return manaCost.convertedManaCost();
|
||||
return manaCost.manaValue();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class ControlsPermanentGreatestCMCCondition implements Condition {
|
|||
|
||||
List<Permanent> permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
|
||||
for (Permanent permanent : permanents) {
|
||||
int cmc = permanent.getManaCost().convertedManaCost();
|
||||
int cmc = permanent.getManaCost().manaValue();
|
||||
if (maxCMC == null || cmc > maxCMC) {
|
||||
maxCMC = cmc;
|
||||
controllers.clear();
|
||||
|
|
@ -48,7 +48,7 @@ public class ControlsPermanentGreatestCMCCondition implements Condition {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "you control the " + filter.getMessage() + " with the highest converted mana cost or tied for the highest converted mana cost";
|
||||
return "you control the " + filter.getMessage() + " with the highest mana value or tied for the highest mana value";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class ExileFromHandCost extends CostImpl {
|
|||
if (card == null) {
|
||||
return false;
|
||||
}
|
||||
cmc += card.getConvertedManaCost();
|
||||
cmc += card.getManaValue();
|
||||
this.cards.add(card);
|
||||
}
|
||||
Cards cardsToExile = new CardsImpl();
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import mage.target.common.TargetCardInHand;
|
|||
*/
|
||||
public class RevealTargetFromHandCost extends CostImpl {
|
||||
|
||||
public int convertedManaCosts = 0;
|
||||
public int manaValues = 0;
|
||||
protected int numberCardsRevealed = 0;
|
||||
protected List<Card> revealedCards;
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ public class RevealTargetFromHandCost extends CostImpl {
|
|||
|
||||
public RevealTargetFromHandCost(final RevealTargetFromHandCost cost) {
|
||||
super(cost);
|
||||
this.convertedManaCosts = cost.convertedManaCosts;
|
||||
this.manaValues = cost.manaValues;
|
||||
this.numberCardsRevealed = cost.numberCardsRevealed;
|
||||
this.revealedCards = new ArrayList<>(cost.revealedCards);
|
||||
}
|
||||
|
|
@ -41,14 +41,14 @@ public class RevealTargetFromHandCost extends CostImpl {
|
|||
@Override
|
||||
public boolean pay(Ability ability, Game game, Ability source, UUID controllerId, boolean noMana, Cost costToPay) {
|
||||
if (targets.choose(Outcome.Benefit, controllerId, source.getSourceId(), game)) {
|
||||
convertedManaCosts = 0;
|
||||
manaValues = 0;
|
||||
numberCardsRevealed = 0;
|
||||
Player player = game.getPlayer(controllerId);
|
||||
Cards cards = new CardsImpl();
|
||||
for (UUID targetId : targets.get(0).getTargets()) {
|
||||
Card card = player.getHand().get(targetId, game);
|
||||
if (card != null) {
|
||||
convertedManaCosts += card.getConvertedManaCost();
|
||||
manaValues += card.getManaValue();
|
||||
numberCardsRevealed++;
|
||||
cards.add(card);
|
||||
revealedCards.add(card);
|
||||
|
|
@ -68,7 +68,7 @@ public class RevealTargetFromHandCost extends CostImpl {
|
|||
}
|
||||
|
||||
public int getConvertedCosts() {
|
||||
return convertedManaCosts;
|
||||
return manaValues;
|
||||
}
|
||||
|
||||
public int getNumberRevealedCards() {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ public class ColoredManaCost extends ManaCostImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class ColorlessManaCost extends ManaCostImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
return mana;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class GenericManaCost extends ManaCostImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
return mana;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public class HybridManaCost extends ManaCostImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import mage.players.ManaPool;
|
|||
|
||||
public interface ManaCost extends Cost {
|
||||
|
||||
int convertedManaCost();
|
||||
int manaValue();
|
||||
|
||||
Mana getMana();
|
||||
|
||||
|
|
|
|||
|
|
@ -63,10 +63,10 @@ public class ManaCostsImpl<T extends ManaCost> extends ArrayList<T> implements M
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
int total = 0;
|
||||
for (ManaCost cost : this) {
|
||||
total += cost.convertedManaCost();
|
||||
total += cost.manaValue();
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public class MonoHybridManaCost extends ManaCostImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
// from wiki: A card with monocolored hybrid mana symbols in its mana cost has a converted mana cost equal to
|
||||
// the highest possible cost it could be played for. Its converted mana cost never changes.
|
||||
return Math.max(manaGeneric, 1);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class SnowManaCost extends ManaCostImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public final class VariableManaCost extends ManaCostImpl implements VariableCost
|
|||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
public int manaValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ public enum DiscardCostCardConvertedMana implements DynamicValue {
|
|||
for (Cost cost : sourceAbility.getCosts()) {
|
||||
if (cost instanceof DiscardTargetCost) {
|
||||
DiscardTargetCost discardCost = (DiscardTargetCost) cost;
|
||||
return discardCost.getCards().stream().mapToInt(Card::getConvertedManaCost).sum();
|
||||
return discardCost.getCards().stream().mapToInt(Card::getManaValue).sum();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -37,6 +37,6 @@ public enum DiscardCostCardConvertedMana implements DynamicValue {
|
|||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "the discarded card's converted mana cost";
|
||||
return "the discarded card's mana value";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ public enum ExileFromHandCostCardConvertedMana implements DynamicValue {
|
|||
if (cost.isPaid() && cost instanceof ExileFromHandCost) {
|
||||
int xValue = 0;
|
||||
for (Card card : ((ExileFromHandCost) cost).getCards()) {
|
||||
xValue += card.getConvertedManaCost();
|
||||
xValue += card.getManaValue();
|
||||
}
|
||||
return xValue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ public class HighestCMCOfPermanentValue implements DynamicValue {
|
|||
for (Permanent permanent : game.getBattlefield()
|
||||
.getActivePermanents(filter, sourceAbility.getControllerId(), sourceAbility.getSourceId(), game)) {
|
||||
if ((!onlyIfCanBeSacrificed || controller.canPaySacrificeCost(permanent, sourceAbility, sourceAbility.getControllerId(), game))
|
||||
&& permanent.getConvertedManaCost() > value) {
|
||||
value = permanent.getConvertedManaCost();
|
||||
&& permanent.getManaValue() > value) {
|
||||
value = permanent.getManaValue();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,19 +13,19 @@ import mage.players.Player;
|
|||
*
|
||||
* @author nigelzor
|
||||
*/
|
||||
public class HighestConvertedManaCostValue implements DynamicValue {
|
||||
public class HighestManaValueCount implements DynamicValue {
|
||||
|
||||
private final FilterPermanent filter;
|
||||
|
||||
public HighestConvertedManaCostValue() {
|
||||
public HighestManaValueCount() {
|
||||
this(StaticFilters.FILTER_PERMANENTS);
|
||||
}
|
||||
|
||||
public HighestConvertedManaCostValue(FilterPermanent filter) {
|
||||
public HighestManaValueCount(FilterPermanent filter) {
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
public HighestConvertedManaCostValue(final HighestConvertedManaCostValue dynamicValue){
|
||||
public HighestManaValueCount(final HighestManaValueCount dynamicValue){
|
||||
super();
|
||||
this.filter = dynamicValue.filter.copy();
|
||||
}
|
||||
|
|
@ -38,7 +38,7 @@ public class HighestConvertedManaCostValue implements DynamicValue {
|
|||
}
|
||||
int highCMC = 0;
|
||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, controller.getId(), game)) {
|
||||
int cmc = permanent.getConvertedManaCost();
|
||||
int cmc = permanent.getManaValue();
|
||||
highCMC = Math.max(highCMC, cmc);
|
||||
}
|
||||
return highCMC;
|
||||
|
|
@ -46,12 +46,12 @@ public class HighestConvertedManaCostValue implements DynamicValue {
|
|||
|
||||
@Override
|
||||
public DynamicValue copy() {
|
||||
return new HighestConvertedManaCostValue(this);
|
||||
return new HighestManaValueCount(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "the highest converted mana cost among permanents you control";
|
||||
return "the highest mana value among permanents you control";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -26,7 +26,7 @@ public enum ManaSpentToCastCount implements DynamicValue {
|
|||
}
|
||||
if (spell != null) {
|
||||
// NOT the cmc of the spell on the stack
|
||||
return spell.getSpellAbility().getManaCostsToPay().convertedManaCost();
|
||||
return spell.getSpellAbility().getManaCostsToPay().manaValue();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public class SacrificeCostConvertedMana implements DynamicValue {
|
|||
SacrificeTargetCost sacrificeCost = (SacrificeTargetCost) cost;
|
||||
int totalCMC = 0;
|
||||
for(Permanent permanent : sacrificeCost.getPermanents()) {
|
||||
totalCMC += permanent.getConvertedManaCost();
|
||||
totalCMC += permanent.getManaValue();
|
||||
}
|
||||
return totalCMC;
|
||||
}
|
||||
|
|
@ -51,6 +51,6 @@ public class SacrificeCostConvertedMana implements DynamicValue {
|
|||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "the sacrificed " + type + "'s converted mana cost";
|
||||
return "the sacrificed " + type + "'s mana value";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,20 +10,20 @@ import mage.game.Game;
|
|||
/**
|
||||
* @author North
|
||||
*/
|
||||
public enum TargetConvertedManaCost implements DynamicValue {
|
||||
public enum TargetManaValue implements DynamicValue {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
Card card = game.getCard(sourceAbility.getFirstTarget());
|
||||
if (card != null) {
|
||||
return card.getConvertedManaCost();
|
||||
return card.getManaValue();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TargetConvertedManaCost copy() {
|
||||
public TargetManaValue copy() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
|
@ -34,6 +34,6 @@ public enum TargetConvertedManaCost implements DynamicValue {
|
|||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "that card's converted mana cost";
|
||||
return "that card's mana value";
|
||||
}
|
||||
}
|
||||
|
|
@ -154,7 +154,7 @@ public abstract class PayCostToAttackBlockEffectImpl extends ReplacementEffectIm
|
|||
@Override
|
||||
public boolean isCostless(GameEvent event, Ability source, Game game) {
|
||||
ManaCosts currentManaCosts = getManaCostToPay(event, source, game);
|
||||
if (currentManaCosts != null && currentManaCosts.convertedManaCost() > 0) {
|
||||
if (currentManaCosts != null && currentManaCosts.manaValue() > 0) {
|
||||
return false;
|
||||
}
|
||||
return getOtherCostToPay(event, source, game) == null;
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ public class ClashEffect extends OneShotEffect implements MageSingleton {
|
|||
cardController = controller.getLibrary().getFromTop(game);
|
||||
cards.add(cardController);
|
||||
controller.revealCards(sourceObject.getIdName() + ": Clash card of " + controller.getName(), cards, game);
|
||||
cmcController = cardController.getConvertedManaCost();
|
||||
cmcController = cardController.getManaValue();
|
||||
message.append(" (").append(cmcController).append(')');
|
||||
} else {
|
||||
message.append(" no card");
|
||||
|
|
@ -127,7 +127,7 @@ public class ClashEffect extends OneShotEffect implements MageSingleton {
|
|||
cardOpponent = opponent.getLibrary().getFromTop(game);
|
||||
cards.add(cardOpponent);
|
||||
opponent.revealCards(sourceObject.getIdName() + ": Clash card of " + opponent.getName(), cards, game);
|
||||
cmcOpponent = cardOpponent.getConvertedManaCost();
|
||||
cmcOpponent = cardOpponent.getManaValue();
|
||||
message.append(" (").append(cmcOpponent).append(')');
|
||||
} else {
|
||||
message.append(" no card");
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import mage.constants.ComparisonType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterNonlandCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
|
|
@ -39,7 +39,7 @@ public class CastWithoutPayingManaCostEffect extends OneShotEffect {
|
|||
public CastWithoutPayingManaCostEffect(DynamicValue maxCost) {
|
||||
super(Outcome.PlayForFree);
|
||||
this.manaCost = maxCost;
|
||||
this.staticText = "you may cast a card with converted mana cost "
|
||||
this.staticText = "you may cast a card with mana value "
|
||||
+ maxCost + " or less from your hand without paying its mana cost";
|
||||
}
|
||||
|
||||
|
|
@ -56,13 +56,13 @@ public class CastWithoutPayingManaCostEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
int cmc = manaCost.calculate(game, source, this);
|
||||
FilterCard filter = new FilterNonlandCard("card with converted mana cost "
|
||||
FilterCard filter = new FilterNonlandCard("card with mana value "
|
||||
+ cmc + " or less from your hand");
|
||||
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, cmc + 1));
|
||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, cmc + 1));
|
||||
|
||||
Target target = new TargetCardInHand(filter);
|
||||
if (target.canChoose(source.getSourceId(), controller.getId(), game)
|
||||
&& controller.chooseUse(Outcome.PlayForFree, "Cast a card with converted mana cost " + cmc
|
||||
&& controller.chooseUse(Outcome.PlayForFree, "Cast a card with mana value " + cmc
|
||||
+ " or less from your hand without paying its mana cost?", source, game)) {
|
||||
Card cardToCast = null;
|
||||
boolean cancel = false;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import mage.cards.CardsImpl;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetCard;
|
||||
|
|
@ -19,28 +19,28 @@ import mage.target.common.TargetCardInLibrary;
|
|||
*
|
||||
* @author antoni-g
|
||||
*/
|
||||
public class SearchLibraryGraveyardWithLessCMCPutIntoPlay extends OneShotEffect {
|
||||
public class SearchLibraryGraveyardWithLessMVPutIntoPlay extends OneShotEffect {
|
||||
|
||||
private final FilterCard filter;
|
||||
|
||||
public SearchLibraryGraveyardWithLessCMCPutIntoPlay() {
|
||||
public SearchLibraryGraveyardWithLessMVPutIntoPlay() {
|
||||
this(new FilterCard());
|
||||
}
|
||||
|
||||
public SearchLibraryGraveyardWithLessCMCPutIntoPlay(FilterCard filter) {
|
||||
public SearchLibraryGraveyardWithLessMVPutIntoPlay(FilterCard filter) {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.filter = filter;
|
||||
staticText = "Search your library or graveyard for a " + filter.getMessage() + " with converted mana cost X or less, put it onto the battlefield, then shuffle your library";
|
||||
staticText = "Search your library or graveyard for a " + filter.getMessage() + " with mana value X or less, put it onto the battlefield, then shuffle your library";
|
||||
}
|
||||
|
||||
public SearchLibraryGraveyardWithLessCMCPutIntoPlay(final SearchLibraryGraveyardWithLessCMCPutIntoPlay effect) {
|
||||
public SearchLibraryGraveyardWithLessMVPutIntoPlay(final SearchLibraryGraveyardWithLessMVPutIntoPlay effect) {
|
||||
super(effect);
|
||||
this.filter = effect.filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchLibraryGraveyardWithLessCMCPutIntoPlay copy() {
|
||||
return new SearchLibraryGraveyardWithLessCMCPutIntoPlay(this);
|
||||
public SearchLibraryGraveyardWithLessMVPutIntoPlay copy() {
|
||||
return new SearchLibraryGraveyardWithLessMVPutIntoPlay(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -51,9 +51,9 @@ public class SearchLibraryGraveyardWithLessCMCPutIntoPlay extends OneShotEffect
|
|||
if (controller != null && sourceObject != null) {
|
||||
// create x cost filter
|
||||
FilterCard advancedFilter = filter.copy(); // never change static objects so copy the object here before
|
||||
advancedFilter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1));
|
||||
advancedFilter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1));
|
||||
|
||||
if (controller.chooseUse(outcome, "Search your library for a " + filter.getMessage() + " with CMC X or less" + '?', source, game)) {
|
||||
if (controller.chooseUse(outcome, "Search your library for a " + filter.getMessage() + " with mana value X or less" + '?', source, game)) {
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(advancedFilter);
|
||||
target.clearChosen();
|
||||
if (controller.searchLibrary(target, source, game)) {
|
||||
|
|
@ -64,7 +64,7 @@ public class SearchLibraryGraveyardWithLessCMCPutIntoPlay extends OneShotEffect
|
|||
controller.shuffleLibrary(source, game);
|
||||
}
|
||||
|
||||
if (cardFound == null && controller.chooseUse(outcome, "Search your graveyard for a " + filter.getMessage() + " with CMC X or less" + '?', source, game)) {
|
||||
if (cardFound == null && controller.chooseUse(outcome, "Search your graveyard for a " + filter.getMessage() + " with mana value X or less" + '?', source, game)) {
|
||||
TargetCard target = new TargetCard(0, 1, Zone.GRAVEYARD, advancedFilter);
|
||||
target.clearChosen();
|
||||
if (controller.choose(outcome, controller.getGraveyard(), target, game)) {
|
||||
|
|
@ -8,7 +8,7 @@ import mage.cards.Card;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
|
@ -28,7 +28,7 @@ public class SearchLibraryWithLessCMCPutInPlayEffect extends OneShotEffect {
|
|||
public SearchLibraryWithLessCMCPutInPlayEffect(FilterCard filter) {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.filter = filter;
|
||||
staticText = "Search your library for a " + filter.getMessage() + " with converted mana cost X or less, put it onto the battlefield, then shuffle your library";
|
||||
staticText = "Search your library for a " + filter.getMessage() + " with mana value X or less, put it onto the battlefield, then shuffle your library";
|
||||
}
|
||||
|
||||
public SearchLibraryWithLessCMCPutInPlayEffect(final SearchLibraryWithLessCMCPutInPlayEffect effect) {
|
||||
|
|
@ -41,7 +41,7 @@ public class SearchLibraryWithLessCMCPutInPlayEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
FilterCard advancedFilter = filter.copy(); // never change static objects so copy the object here before
|
||||
advancedFilter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1));
|
||||
advancedFilter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, source.getManaCostsToPay().getX() + 1));
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(advancedFilter);
|
||||
if (controller.searchLibrary(target, source, game)) {
|
||||
if (!target.getTargets().isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -79,13 +79,13 @@ public class BuybackAbility extends StaticAbility implements OptionalAdditionalS
|
|||
if (cost instanceof ManaCostsImpl) {
|
||||
for (Object c : (ManaCostsImpl) cost) {
|
||||
if (c instanceof GenericManaCost) {
|
||||
int newCostCMC = ((GenericManaCost) c).convertedManaCost() - amountToReduceBy - genericManaToReduce;
|
||||
int newCostCMC = ((GenericManaCost) c).manaValue() - amountToReduceBy - genericManaToReduce;
|
||||
foundCostToReduce = true;
|
||||
if (newCostCMC > 0) {
|
||||
amountToReduceBy += genericManaToReduce;
|
||||
} else {
|
||||
amountToReduce = ((GenericManaCost) c).convertedManaCost() - amountToReduceBy;
|
||||
amountToReduceBy = ((GenericManaCost) c).convertedManaCost();
|
||||
amountToReduce = ((GenericManaCost) c).manaValue() - amountToReduceBy;
|
||||
amountToReduceBy = ((GenericManaCost) c).manaValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,9 +49,9 @@ public class CascadeAbility extends TriggeredAbilityImpl {
|
|||
|
||||
private static final String REMINDERTEXT = " <i>(When you cast this spell, "
|
||||
+ "exile cards from the top of your library until you exile a "
|
||||
+ "nonland card whose converted mana cost is less than this spell's converted mana cost. "
|
||||
+ "nonland card whose mana value is less than this spell's mana value. "
|
||||
+ "You may cast that spell without paying its mana cost "
|
||||
+ "if its converted mana cost is less than this spell's converted mana cost. "
|
||||
+ "if its mana value is less than this spell's mana value. "
|
||||
+ "Then put all cards exiled this way that weren't cast on the bottom of your library in a random order.)</i>";
|
||||
private final boolean withReminder;
|
||||
|
||||
|
|
@ -120,11 +120,11 @@ class CascadeEffect extends OneShotEffect {
|
|||
|
||||
// exile cards from the top of your library until you exile a nonland card whose converted mana cost is less than this spell's converted mana cost
|
||||
Cards cardsToExile = new CardsImpl();
|
||||
int sourceCost = sourceCard.getConvertedManaCost();
|
||||
int sourceCost = sourceCard.getManaValue();
|
||||
Card cardToCast = null;
|
||||
for (Card card : controller.getLibrary().getCards(game)) {
|
||||
cardsToExile.add(card);
|
||||
if (!card.isLand() && card.getConvertedManaCost() < sourceCost) {
|
||||
if (!card.isLand() && card.getManaValue() < sourceCost) {
|
||||
cardToCast = card;
|
||||
break;
|
||||
}
|
||||
|
|
@ -162,7 +162,7 @@ class CascadeEffect extends OneShotEffect {
|
|||
partsToCast.add(cardToCast);
|
||||
}
|
||||
// remove too big cmc
|
||||
partsToCast.removeIf(card -> card.getConvertedManaCost() >= sourceCost);
|
||||
partsToCast.removeIf(card -> card.getManaValue() >= sourceCost);
|
||||
// remove non spells
|
||||
partsToCast.removeIf(card -> card.getSpellAbility() == null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class EmergeAbility extends SpellAbility {
|
|||
if (controller != null) {
|
||||
for (Permanent creature : game.getBattlefield().getActivePermanents(
|
||||
new FilterControlledCreaturePermanent(), this.getControllerId(), this.getSourceId(), game)) {
|
||||
ManaCost costToPay = CardUtil.reduceCost(emergeCost.copy(), creature.getConvertedManaCost());
|
||||
ManaCost costToPay = CardUtil.reduceCost(emergeCost.copy(), creature.getManaValue());
|
||||
if (costToPay.canPay(this, this, this.getControllerId(), game)) {
|
||||
return ActivationStatus.getTrue(this, game);
|
||||
}
|
||||
|
|
@ -67,7 +67,7 @@ public class EmergeAbility extends SpellAbility {
|
|||
public ManaOptions getMinimumCostToActivate(UUID playerId, Game game) {
|
||||
int maxCMC = 0;
|
||||
for (Permanent creature : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), playerId, this.getSourceId(), game)) {
|
||||
int cmc = creature.getConvertedManaCost();
|
||||
int cmc = creature.getManaValue();
|
||||
if (cmc > maxCMC) {
|
||||
maxCMC = cmc;
|
||||
}
|
||||
|
|
@ -91,7 +91,7 @@ public class EmergeAbility extends SpellAbility {
|
|||
if (controller.choose(Outcome.Sacrifice, target, this.getSourceId(), game)) {
|
||||
Permanent creature = game.getPermanent(target.getFirstTarget());
|
||||
if (creature != null) {
|
||||
CardUtil.reduceCost(this, creature.getConvertedManaCost());
|
||||
CardUtil.reduceCost(this, creature.getManaValue());
|
||||
if (super.activate(game, false)) {
|
||||
if (creature.sacrifice(this, game)) {
|
||||
return true;
|
||||
|
|
@ -117,6 +117,6 @@ public class EmergeAbility extends SpellAbility {
|
|||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "Emerge " + emergeCost.getText() + " <i>(You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)</i>";
|
||||
return "Emerge " + emergeCost.getText() + " <i>(You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's mana value.)</i>";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import mage.abilities.dynamicvalue.common.StaticValue;
|
|||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
|
|
@ -50,8 +50,8 @@ public class SoulshiftAbility extends DiesSourceTriggeredAbility {
|
|||
public void trigger(Game game, UUID controllerId, GameEvent triggeringEvent) {
|
||||
this.getTargets().clear();
|
||||
int intValue = amount.calculate(game, this, null);
|
||||
FilterCard filter = new FilterCard("Spirit card with converted mana cost " + intValue + " or less from your graveyard");
|
||||
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, intValue + 1));
|
||||
FilterCard filter = new FilterCard("Spirit card with mana value " + intValue + " or less from your graveyard");
|
||||
filter.add(new ManaValuePredicate(ComparisonType.FEWER_THAN, intValue + 1));
|
||||
filter.add(SubType.SPIRIT.getPredicate());
|
||||
this.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
super.trigger(game, controllerId, triggeringEvent); //To change body of generated methods, choose Tools | Templates.
|
||||
|
|
@ -65,10 +65,10 @@ public class SoulshiftAbility extends DiesSourceTriggeredAbility {
|
|||
@Override
|
||||
public String getRule() {
|
||||
if (amount instanceof StaticValue) {
|
||||
return "Soulshift " + amount.toString() + " <i>(When this creature dies, you may return target Spirit card with converted mana cost " + amount.toString() + " or less from your graveyard to your hand.)</i>";
|
||||
return "Soulshift " + amount.toString() + " <i>(When this creature dies, you may return target Spirit card with mana value " + amount.toString() + " or less from your graveyard to your hand.)</i>";
|
||||
} else {
|
||||
return "{this} has soulshift X, where X is the number of " + amount.getMessage() +
|
||||
". <i>(When this creature dies, you may return target Spirit card with converted mana cost X or less from your graveyard to your hand.)</i>";
|
||||
". <i>(When this creature dies, you may return target Spirit card with mana value X or less from your graveyard to your hand.)</i>";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import mage.constants.Outcome;
|
|||
import mage.constants.TimingRule;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
|
@ -57,7 +57,7 @@ public class TransmuteAbility extends SimpleActivatedAbility {
|
|||
public String getRule() {
|
||||
return new StringBuilder("Transmute ").append(this.getManaCosts().getText())
|
||||
.append(" <i>(").append(this.getManaCosts().getText())
|
||||
.append(", Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery.)</i>").toString();
|
||||
.append(", Discard this card: Search your library for a card with the same mana value as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery.)</i>").toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -77,8 +77,8 @@ class TransmuteEffect extends OneShotEffect {
|
|||
Player controller = game.getPlayer(source.getControllerId());
|
||||
MageObject sourceObject = game.getObject(source.getSourceId());
|
||||
if (sourceObject != null && controller != null) {
|
||||
FilterCard filter = new FilterCard("card with converted mana cost " + sourceObject.getConvertedManaCost());
|
||||
filter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, sourceObject.getConvertedManaCost()));
|
||||
FilterCard filter = new FilterCard("card with mana value " + sourceObject.getManaValue());
|
||||
filter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, sourceObject.getManaValue()));
|
||||
TargetCardInLibrary target = new TargetCardInLibrary(1, filter);
|
||||
if (controller.searchLibrary(target, source, game)) {
|
||||
if (!target.getTargets().isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -94,12 +94,12 @@ public abstract class MeldCard extends CardImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
if (this.isCopy()) {
|
||||
return 0;
|
||||
} else {
|
||||
return (this.topHalfCard != null ? this.topHalfCard.getConvertedManaCost() : 0)
|
||||
+ (this.bottomHalfCard != null ? this.bottomHalfCard.getConvertedManaCost() : 0);
|
||||
return (this.topHalfCard != null ? this.topHalfCard.getManaValue() : 0)
|
||||
+ (this.bottomHalfCard != null ? this.bottomHalfCard.getManaValue() : 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -327,7 +327,7 @@ public abstract class ModalDoubleFacesCard extends CardImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
// Rules:
|
||||
// The converted mana cost of a modal double-faced card is based on the characteristics of the
|
||||
// face that’s being considered. On the stack and battlefield, consider whichever face is up.
|
||||
|
|
@ -335,7 +335,7 @@ public abstract class ModalDoubleFacesCard extends CardImpl {
|
|||
// mana cost of a transforming double-faced card is determined.
|
||||
|
||||
// on stack or battlefield it must be half card with own cost
|
||||
return leftHalfCard.getConvertedManaCost();
|
||||
return leftHalfCard.getManaValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -204,13 +204,13 @@ public abstract class SplitCard extends CardImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
// 202.3d The converted mana cost of a split card not on the stack or of a fused split spell on the
|
||||
// stack is determined from the combined mana costs of its halves. Otherwise, while a split card is
|
||||
// on the stack, the converted mana cost of the spell is determined by the mana cost of the half
|
||||
// that was chosen to be cast. See rule 708, “Split Cards.”
|
||||
|
||||
// split card and it's halfes contains own mana costs, so no need to rewrite logic
|
||||
return super.getConvertedManaCost();
|
||||
return super.getManaValue();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public class XmageInfoDeckExporter extends DeckExporter {
|
|||
out.printf("%d [%s:%s] %s%n\n", amount.get("M@" + card.getCardKey()), card.getSetCode(), card.getCardNum(), card.getCardName());
|
||||
} else {
|
||||
out.printf("%d [%s:%s] %s ;; %s ;; %s ;; %d %n", amount.get("M@" + card.getCardKey()), card.getSetCode(), card.getCardNum(), card.getCardName(),
|
||||
cardInfo.getColor().getDescription(), cardInfo.getTypes().toString(), cardInfo.getConvertedManaCost());
|
||||
cardInfo.getColor().getDescription(), cardInfo.getTypes().toString(), cardInfo.getManaValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ public class XmageInfoDeckExporter extends DeckExporter {
|
|||
out.printf("SB: %d [%s:%s] %s%n\n", amount.get("S@" + card.getCardKey()), card.getSetCode(), card.getCardNum(), card.getCardName());
|
||||
} else {
|
||||
out.printf("SB: %d [%s:%s] %s ;; %s ;; %s ;; %d %n", amount.get("S@" + card.getCardKey()), card.getSetCode(), card.getCardNum(), card.getCardName(),
|
||||
cardInfo.getColor().getDescription(), cardInfo.getTypes().toString(), cardInfo.getConvertedManaCost());
|
||||
cardInfo.getColor().getDescription(), cardInfo.getTypes().toString(), cardInfo.getManaValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public class MockCard extends CardImpl {
|
|||
protected List<String> manaCostStr;
|
||||
protected String adventureSpellName;
|
||||
protected boolean isModalDoubleFacesCard;
|
||||
protected int convertedManaCost;
|
||||
protected int manaValue;
|
||||
|
||||
public MockCard(CardInfo card) {
|
||||
super(null, card.getName());
|
||||
|
|
@ -54,7 +54,7 @@ public class MockCard extends CardImpl {
|
|||
this.manaCostLeftStr = card.getManaCosts(CardInfo.ManaCostSide.LEFT);
|
||||
this.manaCostRightStr = card.getManaCosts(CardInfo.ManaCostSide.RIGHT);
|
||||
this.manaCostStr = card.getManaCosts(CardInfo.ManaCostSide.ALL);
|
||||
this.convertedManaCost = card.getConvertedManaCost();
|
||||
this.manaValue = card.getManaValue();
|
||||
|
||||
this.color = card.getColor();
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ public class MockCard extends CardImpl {
|
|||
this.manaCostStr = new ArrayList<>(card.manaCostStr);
|
||||
this.adventureSpellName = card.adventureSpellName;
|
||||
this.isModalDoubleFacesCard = card.isModalDoubleFacesCard;
|
||||
this.convertedManaCost = card.convertedManaCost;
|
||||
this.manaValue = card.manaValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -133,8 +133,8 @@ public class MockCard extends CardImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
return this.convertedManaCost;
|
||||
public int getManaValue() {
|
||||
return this.manaValue;
|
||||
}
|
||||
|
||||
public List<String> getManaCostStr(CardInfo.ManaCostSide manaCostSide) {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class CardCriteria {
|
|||
private boolean red;
|
||||
private boolean white;
|
||||
private boolean colorless;
|
||||
private Integer convertedManaCost;
|
||||
private Integer manaValue;
|
||||
private String sortBy;
|
||||
private Long start;
|
||||
private Long count;
|
||||
|
|
@ -167,8 +167,8 @@ public class CardCriteria {
|
|||
return this;
|
||||
}
|
||||
|
||||
public CardCriteria convertedManaCost(Integer convertedManaCost) {
|
||||
this.convertedManaCost = convertedManaCost;
|
||||
public CardCriteria manaValue(Integer manaValue) {
|
||||
this.manaValue = manaValue;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -265,8 +265,8 @@ public class CardCriteria {
|
|||
clausesCount++;
|
||||
}
|
||||
|
||||
if (convertedManaCost != null) {
|
||||
where.eq("convertedManaCost", convertedManaCost);
|
||||
if (manaValue != null) {
|
||||
where.eq("manaValue", manaValue);
|
||||
clausesCount++;
|
||||
}
|
||||
|
||||
|
|
@ -433,8 +433,8 @@ public class CardCriteria {
|
|||
return colorless;
|
||||
}
|
||||
|
||||
public Integer getConvertedManaCost() {
|
||||
return convertedManaCost;
|
||||
public Integer getManaValue() {
|
||||
return manaValue;
|
||||
}
|
||||
|
||||
public String getSortBy() {
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class CardInfo {
|
|||
@DatabaseField
|
||||
protected String startingLoyalty;
|
||||
@DatabaseField
|
||||
protected int convertedManaCost;
|
||||
protected int manaValue;
|
||||
@DatabaseField(dataType = DataType.ENUM_STRING)
|
||||
protected Rarity rarity;
|
||||
@DatabaseField
|
||||
|
|
@ -126,7 +126,7 @@ public class CardInfo {
|
|||
this.className = card.getClass().getCanonicalName();
|
||||
this.power = card.getPower().toString();
|
||||
this.toughness = card.getToughness().toString();
|
||||
this.convertedManaCost = card.getConvertedManaCost();
|
||||
this.manaValue = card.getManaValue();
|
||||
this.rarity = card.getRarity();
|
||||
this.splitCard = card instanceof SplitCard;
|
||||
this.splitCardFuse = card.getSpellAbility() != null && card.getSpellAbility().getSpellAbilityType() == SpellAbilityType.SPLIT_FUSED;
|
||||
|
|
@ -335,8 +335,8 @@ public class CardInfo {
|
|||
this.types = sb.toString();
|
||||
}
|
||||
|
||||
public int getConvertedManaCost() {
|
||||
return convertedManaCost;
|
||||
public int getManaValue() {
|
||||
return manaValue;
|
||||
}
|
||||
|
||||
public final List<String> getManaCosts(ManaCostSide manaCostSide) {
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ public abstract class Designation implements MageObject, Copyable<Designation> {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,21 +7,21 @@ import mage.game.Game;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public enum ConvertedManaCostParityPredicate implements Predicate<MageObject> {
|
||||
public enum ManaValueParityPredicate implements Predicate<MageObject> {
|
||||
EVEN(0),
|
||||
ODD(1);
|
||||
private final int parity;
|
||||
|
||||
ConvertedManaCostParityPredicate(int parity) {
|
||||
ManaValueParityPredicate(int parity) {
|
||||
this.parity = parity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(MageObject input, Game game) {
|
||||
return input.getConvertedManaCost() % 2 == parity;
|
||||
return input.getManaValue() % 2 == parity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConvertedManaCostParity" + super.toString();
|
||||
return "ManaValueParity" + super.toString();
|
||||
}}
|
||||
|
|
@ -9,19 +9,19 @@ import mage.filter.predicate.IntComparePredicate;
|
|||
*
|
||||
* @author North
|
||||
*/
|
||||
public class ConvertedManaCostPredicate extends IntComparePredicate<MageObject> {
|
||||
public class ManaValuePredicate extends IntComparePredicate<MageObject> {
|
||||
|
||||
public ConvertedManaCostPredicate(ComparisonType type, int value) {
|
||||
public ManaValuePredicate(ComparisonType type, int value) {
|
||||
super(type, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getInputValue(MageObject input) {
|
||||
return input.getConvertedManaCost();
|
||||
return input.getManaValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ConvertedManaCost" + super.toString();
|
||||
return "ManaValue" + super.toString();
|
||||
}
|
||||
}
|
||||
|
|
@ -249,8 +249,8 @@ public class Commander implements CommandObject {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
return sourceObject.getConvertedManaCost();
|
||||
public int getManaValue() {
|
||||
return sourceObject.getManaValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ public class Emblem implements CommandObject {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -213,7 +213,7 @@ public class Plane implements CommandObject {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class MomirEffect extends OneShotEffect {
|
|||
|
||||
public MomirEffect(MomirEffect effect) {
|
||||
super(effect);
|
||||
staticText = "Create a token that's a copy of a creature card with converted mana cost X chosen at random";
|
||||
staticText = "Create a token that's a copy of a creature card with mana value X chosen at random";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -70,10 +70,10 @@ class MomirEffect extends OneShotEffect {
|
|||
return true;
|
||||
}
|
||||
// should this be random across card names
|
||||
CardCriteria criteria = new CardCriteria().types(CardType.CREATURE).convertedManaCost(value);
|
||||
CardCriteria criteria = new CardCriteria().types(CardType.CREATURE).manaValue(value);
|
||||
List<CardInfo> options = CardRepository.instance.findCards(criteria);
|
||||
if (options == null || options.isEmpty()) {
|
||||
game.informPlayers("No random creature card with converted mana cost of " + value + " was found.");
|
||||
game.informPlayers("No random creature card with mana value of " + value + " was found.");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import mage.abilities.common.ActivateIfConditionActivatedAbility;
|
|||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.MainPhaseStackEmptyCondition;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.dynamicvalue.common.TargetConvertedManaCost;
|
||||
import mage.abilities.dynamicvalue.common.TargetManaValue;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.RollPlanarDieEffect;
|
||||
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
|
||||
|
|
@ -37,7 +37,7 @@ import mage.watchers.common.PlanarRollWatcher;
|
|||
public class FeedingGroundsPlane extends Plane {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
|
||||
private static final String rule = "put X +1/+1 counters on target creature, where X is that creature's converted mana cost";
|
||||
private static final String rule = "put X +1/+1 counters on target creature, where X is that creature's mana value";
|
||||
|
||||
public FeedingGroundsPlane() {
|
||||
this.setPlaneType(Planes.PLANE_FEEDING_GROUNDS);
|
||||
|
|
@ -48,7 +48,7 @@ public class FeedingGroundsPlane extends Plane {
|
|||
this.getAbilities().add(ability);
|
||||
|
||||
// Active player can roll the planar die: Whenever you roll {CHAOS}, target red or green creature gets X +1/+1 counters
|
||||
Effect chaosEffect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(), TargetConvertedManaCost.instance);
|
||||
Effect chaosEffect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(), TargetManaValue.instance);
|
||||
Target chaosTarget = new TargetCreaturePermanent(1, 1, filter, false);
|
||||
|
||||
List<Effect> chaosEffects = new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ public final class RateCard {
|
|||
* @return
|
||||
*/
|
||||
private static int getManaCostScore(Card card, List<ColoredManaSymbol> allowedColors) {
|
||||
int converted = card.getConvertedManaCost();
|
||||
int converted = card.getManaValue();
|
||||
if (allowedColors == null) {
|
||||
int colorPenalty = 0;
|
||||
for (String symbol : card.getManaCostSymbols()) {
|
||||
|
|
|
|||
|
|
@ -184,18 +184,18 @@ public class PermanentCard extends PermanentImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
if (isTransformed()) {
|
||||
// 711.4b While a double-faced permanent's back face is up, it has only the characteristics of its back face.
|
||||
// However, its converted mana cost is calculated using the mana cost of its front face. This is a change from previous rules.
|
||||
// If a permanent is copying the back face of a double-faced card (even if the card representing that copy
|
||||
// is itself a double-faced card), the converted mana cost of that permanent is 0.
|
||||
return getCard().getConvertedManaCost();
|
||||
return getCard().getManaValue();
|
||||
}
|
||||
if (faceDown) { // game not neccessary
|
||||
return getManaCost().convertedManaCost();
|
||||
return getManaCost().manaValue();
|
||||
}
|
||||
return super.getConvertedManaCost();
|
||||
return super.getManaValue();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@ public class PermanentMeld extends PermanentCard {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
if (this.isCopy()) {
|
||||
return 0;
|
||||
} else {
|
||||
return this.getCard().getConvertedManaCost();
|
||||
return this.getCard().getManaValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ public final class ReflectionPureToken extends TokenImpl {
|
|||
}
|
||||
|
||||
public ReflectionPureToken(int xValue) {
|
||||
super("Reflection", "X/X white Reflection creature token, where X is the converted mana cost of that spell");
|
||||
super("Reflection", "X/X white Reflection creature token, where X is the mana value of that spell");
|
||||
this.setOriginalExpansionSetCode("INV");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setWhite(true);
|
||||
|
|
|
|||
|
|
@ -628,7 +628,7 @@ public class Spell extends StackObjImpl implements Card {
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
int cmc = 0;
|
||||
if (faceDown) {
|
||||
return 0;
|
||||
|
|
@ -636,7 +636,7 @@ public class Spell extends StackObjImpl implements Card {
|
|||
for (SpellAbility spellAbility : spellAbilities) {
|
||||
cmc += spellAbility.getConvertedXManaCost(getCard());
|
||||
}
|
||||
cmc += getCard().getManaCost().convertedManaCost();
|
||||
cmc += getCard().getManaCost().manaValue();
|
||||
return cmc;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -274,7 +274,7 @@ public class StackAbility extends StackObjImpl implements Ability {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int getConvertedManaCost() {
|
||||
public int getManaValue() {
|
||||
// Activated abilities have an "activation cost" but they don't have a characteristic related to that while on the stack.
|
||||
// There are certain effects that interact with the cost to activate an ability (e.g., Training Grounds, Power Artifact)
|
||||
// but nothing that looks for that quality of an ability once it's on the stack.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package mage.target.targetadjustment;
|
|||
import mage.abilities.Ability;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.target.TargetCard;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
|
|
@ -19,7 +19,7 @@ public enum XCMCGraveyardAdjuster implements TargetAdjuster {
|
|||
public void adjustTargets(Ability ability, Game game) {
|
||||
int xValue = ability.getManaCostsToPay().getX();
|
||||
FilterCard filterCard = ((TargetCard) ability.getTargets().get(0)).getFilter().copy();
|
||||
filterCard.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||
filterCard.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, xValue));
|
||||
filterCard.setMessage(filterCard.getMessage().replace('X', (char) xValue));
|
||||
ability.getTargets().clear();
|
||||
ability.getTargets().add(new TargetCardInGraveyard(filterCard));
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package mage.target.targetadjustment;
|
|||
import mage.abilities.Ability;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.filter.predicate.mageobject.ManaValuePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ public enum XCMCPermanentAdjuster implements TargetAdjuster {
|
|||
int minTargets = oldTargetPermanent.getMinNumberOfTargets();
|
||||
int maxTargets = oldTargetPermanent.getMaxNumberOfTargets();
|
||||
FilterPermanent permanentFilter = oldTargetPermanent.getFilter().copy();
|
||||
permanentFilter.add(new ConvertedManaCostPredicate(ComparisonType.EQUAL_TO, xValue));
|
||||
permanentFilter.add(new ManaValuePredicate(ComparisonType.EQUAL_TO, xValue));
|
||||
ability.getTargets().clear();
|
||||
ability.getTargets().add(new TargetPermanent(minTargets, maxTargets, permanentFilter, false));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
"R",
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 626,
|
||||
"flavorText": "\"Result 752: Rapid mass redistribution.\n\"Result 753: Calamitous reverse synthesis.\n\"Result 754: Acute disarrayment.\"\n—Izzet research notes",
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
},
|
||||
{
|
||||
"date": "2018-10-05",
|
||||
"text": "To determine the total cost of a spell, start with the mana cost or alternative cost you’re paying, add any cost increases, then apply any cost reductions. The converted mana cost of the spell remains unchanged, no matter what the total cost to cast it was."
|
||||
"text": "To determine the total cost of a spell, start with the mana cost or alternative cost you’re paying, add any cost increases, then apply any cost reductions. The mana value of the spell remains unchanged, no matter what the total cost to cast it was."
|
||||
},
|
||||
{
|
||||
"date": "2018-10-05",
|
||||
|
|
@ -203,7 +203,7 @@
|
|||
"R",
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 4.0,
|
||||
"manaValue": 4.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 2662,
|
||||
"foreignData": [
|
||||
|
|
@ -368,7 +368,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 4.0,
|
||||
"manaValue": 4.0,
|
||||
"count": 2,
|
||||
"edhrecRank": 1050,
|
||||
"flavorText": "Rumors float through the city like crows, alighting on citizens seemingly at random.",
|
||||
|
|
@ -536,7 +536,7 @@
|
|||
"colors": [
|
||||
"R"
|
||||
],
|
||||
"convertedManaCost": 4.0,
|
||||
"manaValue": 4.0,
|
||||
"count": 1,
|
||||
"edhrecRank": 10215,
|
||||
"flavorText": "Some storms never blow over.",
|
||||
|
|
@ -708,7 +708,7 @@
|
|||
"R",
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 6.0,
|
||||
"manaValue": 6.0,
|
||||
"count": 2,
|
||||
"edhrecRank": 536,
|
||||
"foreignData": [
|
||||
|
|
@ -890,7 +890,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 1976,
|
||||
"flavorText": "While other pirates prowl for treasure, Captain Parrish plunders secrets.",
|
||||
|
|
@ -1047,7 +1047,7 @@
|
|||
"colors": [
|
||||
"R"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 6242,
|
||||
"flavorText": "\"Commander, we caught the Dimir spy and took her ashes into custody.\"\n—Kramm, Wojek security officer",
|
||||
|
|
@ -1212,7 +1212,7 @@
|
|||
"R",
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 3.0,
|
||||
"manaValue": 3.0,
|
||||
"count": 1,
|
||||
"edhrecRank": 4333,
|
||||
"foreignData": [
|
||||
|
|
@ -1387,7 +1387,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 1.0,
|
||||
"manaValue": 1.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 280,
|
||||
"flavorText": "The crystal pulsed with the power of Teferi's planeswalker spark. Had Jhoira given him a blessing or a curse?",
|
||||
|
|
@ -1559,7 +1559,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 3422,
|
||||
"flavorText": "Genius is finding the edge of what's possible, then jumping over it.",
|
||||
|
|
@ -1738,7 +1738,7 @@
|
|||
"colors": [
|
||||
"R"
|
||||
],
|
||||
"convertedManaCost": 1.0,
|
||||
"manaValue": 1.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 3135,
|
||||
"flavorText": "The tools of invention became the weapons of revolution.",
|
||||
|
|
@ -1920,7 +1920,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 1.0,
|
||||
"manaValue": 1.0,
|
||||
"count": 2,
|
||||
"edhrecRank": 5887,
|
||||
"flavorText": "\"Seeing the river is not the same as seeing the fish.\"",
|
||||
|
|
@ -2077,7 +2077,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 1,
|
||||
"edhrecRank": 1693,
|
||||
"foreignData": [
|
||||
|
|
@ -2229,7 +2229,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 5.0,
|
||||
"manaValue": 5.0,
|
||||
"count": 1,
|
||||
"edhrecRank": 1853,
|
||||
"foreignData": [
|
||||
|
|
@ -2433,7 +2433,7 @@
|
|||
"U"
|
||||
],
|
||||
"colors": [],
|
||||
"convertedManaCost": 0.0,
|
||||
"manaValue": 0.0,
|
||||
"count": 3,
|
||||
"edhrecRank": 119,
|
||||
"flavorText": "\"We have inherited the mysteries of the Thran, but few of the answers.\"\n—Jhoira",
|
||||
|
|
@ -2588,7 +2588,7 @@
|
|||
"U"
|
||||
],
|
||||
"colors": [],
|
||||
"convertedManaCost": 0.0,
|
||||
"manaValue": 0.0,
|
||||
"count": 4,
|
||||
"edhrecRank": 312,
|
||||
"flavorText": "Every laboratory buzzes with new experiments, each a piece of Ral's ambitious project.",
|
||||
|
|
@ -2685,7 +2685,7 @@
|
|||
"U"
|
||||
],
|
||||
"colors": [],
|
||||
"convertedManaCost": 0.0,
|
||||
"manaValue": 0.0,
|
||||
"count": 8,
|
||||
"foreignData": [],
|
||||
"frameVersion": "2015",
|
||||
|
|
@ -2931,7 +2931,7 @@
|
|||
"R"
|
||||
],
|
||||
"colors": [],
|
||||
"convertedManaCost": 0.0,
|
||||
"manaValue": 0.0,
|
||||
"count": 7,
|
||||
"foreignData": [],
|
||||
"frameVersion": "2015",
|
||||
|
|
@ -3187,7 +3187,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 5.0,
|
||||
"manaValue": 5.0,
|
||||
"count": 1,
|
||||
"edhrecRank": 1853,
|
||||
"foreignData": [
|
||||
|
|
@ -3394,7 +3394,7 @@
|
|||
"R",
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 3.0,
|
||||
"manaValue": 3.0,
|
||||
"count": 1,
|
||||
"edhrecRank": 4333,
|
||||
"foreignData": [
|
||||
|
|
@ -3569,7 +3569,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 3,
|
||||
"edhrecRank": 56,
|
||||
"flavorText": "\"As one, nature lifts its voice to tell you this: 'No.'\"",
|
||||
|
|
@ -3757,7 +3757,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 3,
|
||||
"edhrecRank": 4848,
|
||||
"flavorText": "The stronger the will, the more bewitching the song.",
|
||||
|
|
@ -3876,7 +3876,7 @@
|
|||
"manaCost": "{X}{U}{U}",
|
||||
"name": "Entrancing Melody",
|
||||
"number": "55",
|
||||
"originalText": "Gain control of target creature with converted mana cost X.",
|
||||
"originalText": "Gain control of target creature with mana value X.",
|
||||
"originalType": "Sorcery",
|
||||
"printings": [
|
||||
"PXLN",
|
||||
|
|
@ -3906,7 +3906,7 @@
|
|||
"setCode": "XLN",
|
||||
"subtypes": [],
|
||||
"supertypes": [],
|
||||
"text": "Gain control of target creature with converted mana cost X.",
|
||||
"text": "Gain control of target creature with mana value X.",
|
||||
"type": "Sorcery",
|
||||
"types": [
|
||||
"Sorcery"
|
||||
|
|
@ -3927,7 +3927,7 @@
|
|||
"colors": [
|
||||
"R"
|
||||
],
|
||||
"convertedManaCost": 3.0,
|
||||
"manaValue": 3.0,
|
||||
"count": 3,
|
||||
"edhrecRank": 5816,
|
||||
"flavorText": "Wary of the ferocious dinosaurs, the Legion of Dusk built up the walls of their fort—just in time for the pirates to burn them down.",
|
||||
|
|
@ -4083,7 +4083,7 @@
|
|||
"colors": [
|
||||
"R"
|
||||
],
|
||||
"convertedManaCost": 1.0,
|
||||
"manaValue": 1.0,
|
||||
"count": 2,
|
||||
"edhrecRank": 8679,
|
||||
"flavorText": "Sometimes Shivan dragons toy with their food. Other times they just cook it.",
|
||||
|
|
@ -4241,7 +4241,7 @@
|
|||
"colors": [
|
||||
"U"
|
||||
],
|
||||
"convertedManaCost": 2.0,
|
||||
"manaValue": 2.0,
|
||||
"count": 2,
|
||||
"edhrecRank": 893,
|
||||
"flavorText": "\"Laws apply only to those who lack the vision to see past them.\"",
|
||||
|
|
@ -4363,7 +4363,7 @@
|
|||
"manaCost": "{1}{U}",
|
||||
"name": "Disdainful Stroke",
|
||||
"number": "37",
|
||||
"originalText": "Counter target spell with converted mana cost 4 or greater.",
|
||||
"originalText": "Counter target spell with mana value 4 or greater.",
|
||||
"originalType": "Instant",
|
||||
"printings": [
|
||||
"C16",
|
||||
|
|
@ -4383,17 +4383,17 @@
|
|||
"rulings": [
|
||||
{
|
||||
"date": "2014-09-20",
|
||||
"text": "A face-down spell has converted mana cost 0 and can’t be targeted by Disdainful Stroke."
|
||||
"text": "A face-down spell has mana value 0 and can’t be targeted by Disdainful Stroke."
|
||||
},
|
||||
{
|
||||
"date": "2018-10-05",
|
||||
"text": "If a spell has {X} in its mana cost, include the value chosen for that X when determining the converted mana cost of that spell."
|
||||
"text": "If a spell has {X} in its mana cost, include the value chosen for that X when determining the mana value of that spell."
|
||||
}
|
||||
],
|
||||
"setCode": "GRN",
|
||||
"subtypes": [],
|
||||
"supertypes": [],
|
||||
"text": "Counter target spell with converted mana cost 4 or greater.",
|
||||
"text": "Counter target spell with mana value 4 or greater.",
|
||||
"type": "Instant",
|
||||
"types": [
|
||||
"Instant"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue