Merge branch 'update_in_game_text' into 'master'

Update in-game text and also English and Japanese localization (CMC -> mana value and etc.)

See merge request core-developers/forge!4581
This commit is contained in:
Michael Kamensky
2021-04-23 04:30:06 +00:00
9 changed files with 42 additions and 42 deletions

View File

@@ -103,7 +103,7 @@ public class CharmEffect extends SpellAbilityEffect {
if (limit) { if (limit) {
int limitNum = AbilityUtils.calculateAmount(source, sa.getParam("ActivationLimit"), sa); int limitNum = AbilityUtils.calculateAmount(source, sa.getParam("ActivationLimit"), sa);
if (limitNum == 1) { if (limitNum == 1) {
sb.append(". Activate this ability only once each turn."); sb.append(". Activate only once each turn.");
} else { } else {
sb.append(". Additional code needed in CharmEffect."); sb.append(". Additional code needed in CharmEffect.");
} }

View File

@@ -34,7 +34,7 @@ public enum Keyword {
BLOODTHIRST("Bloodthirst", KeywordWithAmount.class, false, "If an opponent was dealt damage this turn, this creature enters the battlefield with {%d:+1/+1 counter} on it."), BLOODTHIRST("Bloodthirst", KeywordWithAmount.class, false, "If an opponent was dealt damage this turn, this creature enters the battlefield with {%d:+1/+1 counter} on it."),
BUSHIDO("Bushido", KeywordWithAmount.class, false, "Whenever this creature blocks or becomes blocked, it gets +%1$d/+%1$d until end of turn."), BUSHIDO("Bushido", KeywordWithAmount.class, false, "Whenever this creature blocks or becomes blocked, it gets +%1$d/+%1$d until end of turn."),
BUYBACK("Buyback", KeywordWithCost.class, false, "You may pay an additional %s as you cast this spell. If you do, put it into your hand instead of your graveyard as it resolves."), BUYBACK("Buyback", KeywordWithCost.class, false, "You may pay an additional %s as you cast this spell. If you do, put it into your hand instead of your graveyard as it resolves."),
CASCADE("Cascade", SimpleKeyword.class, false, "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. You may cast that spell without paying its mana cost if its converted mana cost is less than this spell's converted mana cost. Then put all cards exiled this way that weren't cast on the bottom of your library in a random order."), CASCADE("Cascade", SimpleKeyword.class, false, "When you cast this spell, exile cards from the top of your library until you exile a 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 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."),
CHAMPION("Champion", KeywordWithType.class, false, "When this enters the battlefield, sacrifice it unless you exile another %s you control. When this leaves the battlefield, that card returns to the battlefield."), CHAMPION("Champion", KeywordWithType.class, false, "When this enters the battlefield, sacrifice it unless you exile another %s you control. When this leaves the battlefield, that card returns to the battlefield."),
CHANGELING("Changeling", SimpleKeyword.class, true, "This card is every creature type."), CHANGELING("Changeling", SimpleKeyword.class, true, "This card is every creature type."),
CIPHER("Cipher", SimpleKeyword.class, true, "Then you may exile this spell card encoded on a creature you control. Whenever that creature deals combat damage to a player, its controller may cast a copy of the encoded card without paying its mana cost."), CIPHER("Cipher", SimpleKeyword.class, true, "Then you may exile this spell card encoded on a creature you control. Whenever that creature deals combat damage to a player, its controller may cast a copy of the encoded card without paying its mana cost."),
@@ -56,7 +56,7 @@ public enum Keyword {
DREDGE("Dredge", KeywordWithAmount.class, false, "If you would draw a card, instead you may put exactly {%d:card} from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card."), DREDGE("Dredge", KeywordWithAmount.class, false, "If you would draw a card, instead you may put exactly {%d:card} from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card."),
ECHO("Echo", KeywordWithCost.class, false, "At the beginning of your upkeep, if this permanent came under your control since the beginning of your last upkeep, sacrifice it unless you pay %s."), ECHO("Echo", KeywordWithCost.class, false, "At the beginning of your upkeep, if this permanent came under your control since the beginning of your last upkeep, sacrifice it unless you pay %s."),
EMBALM("Embalm", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: Create a token that's a copy of this card, except it's white, it has no mana cost, and it's a Zombie in addition to its other types. Embalm only as a sorcery."), EMBALM("Embalm", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: Create a token that's a copy of this card, except it's white, it has no mana cost, and it's a Zombie in addition to its other types. Embalm only as a sorcery."),
EMERGE("Emerge", KeywordWithCost.class, false, "You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost."), EMERGE("Emerge", KeywordWithCost.class, false, "You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's mana value."),
ENCHANT("Enchant", KeywordWithType.class, false, "Target a %s as you cast this. This card enters the battlefield attached to that %s."), ENCHANT("Enchant", KeywordWithType.class, false, "Target a %s as you cast this. This card enters the battlefield attached to that %s."),
ENCORE("Encore", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: For each opponent, create a token copy that attacks that opponent this turn if able. They gain haste. Sacrifice them at the beginning of the next end step. Activate only as a sorcery."), ENCORE("Encore", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: For each opponent, create a token copy that attacks that opponent this turn if able. They gain haste. Sacrifice them at the beginning of the next end step. Activate only as a sorcery."),
ENTWINE("Entwine", KeywordWithCost.class, true, "You may choose all modes of this spell instead of just one. If you do, you pay an additional %s."), ENTWINE("Entwine", KeywordWithCost.class, true, "You may choose all modes of this spell instead of just one. If you do, you pay an additional %s."),
@@ -142,7 +142,7 @@ public enum Keyword {
SKULK("Skulk", SimpleKeyword.class, true, "This creature can't be blocked by creatures with greater power."), SKULK("Skulk", SimpleKeyword.class, true, "This creature can't be blocked by creatures with greater power."),
SCAVENGE("Scavenge", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery."), SCAVENGE("Scavenge", KeywordWithCost.class, false, "%s, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery."),
SOULBOND("Soulbond", SimpleKeyword.class, true, "You may pair this creature with another unpaired creature when either enters the battlefield. They remain paired for as long as you control both of them."), SOULBOND("Soulbond", SimpleKeyword.class, true, "You may pair this creature with another unpaired creature when either enters the battlefield. They remain paired for as long as you control both of them."),
SOULSHIFT("Soulshift", KeywordWithAmount.class, false, "When this creature dies, you may return target Spirit card with converted mana cost %d or less from your graveyard to your hand."), SOULSHIFT("Soulshift", KeywordWithAmount.class, false, "When this creature dies, you may return target Spirit card with mana value %d or less from your graveyard to your hand."),
SPECTACLE("Spectacle", KeywordWithCost.class, false, "You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn."), SPECTACLE("Spectacle", KeywordWithCost.class, false, "You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn."),
SPLICE("Splice", KeywordWithCostAndType.class, false, "As you cast an %2$s spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell."), SPLICE("Splice", KeywordWithCostAndType.class, false, "As you cast an %2$s spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell."),
SPLIT_SECOND("Split second", SimpleKeyword.class, true, "As long as this spell is on the stack, players can't cast other spells or activate abilities that aren't mana abilities."), SPLIT_SECOND("Split second", SimpleKeyword.class, true, "As long as this spell is on the stack, players can't cast other spells or activate abilities that aren't mana abilities."),
@@ -153,10 +153,10 @@ public enum Keyword {
SUSPEND("Suspend", Suspend.class, false, "Rather than cast this card from your hand, you may pay %s and exile it with {%d:time counter} on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost."), SUSPEND("Suspend", Suspend.class, false, "Rather than cast this card from your hand, you may pay %s and exile it with {%d:time counter} on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost."),
TOTEM_ARMOR("Totem armor", SimpleKeyword.class, true, "If enchanted permanent would be destroyed, instead remove all damage marked on it and destroy this Aura."), TOTEM_ARMOR("Totem armor", SimpleKeyword.class, true, "If enchanted permanent would be destroyed, instead remove all damage marked on it and destroy this Aura."),
TRAMPLE("Trample", SimpleKeyword.class, true, "This creature can deal excess combat damage to the player or planeswalker it's attacking."), TRAMPLE("Trample", SimpleKeyword.class, true, "This creature can deal excess combat damage to the player or planeswalker it's attacking."),
TRANSFIGURE("Transfigure", KeywordWithCost.class, false, "%s, Sacrifice this creature: Search your library for a creature card with the same converted mana cost as this creature and put that card onto the battlefield. Then shuffle your library. Transfigure only as a sorcery."), TRANSFIGURE("Transfigure", KeywordWithCost.class, false, "%s, Sacrifice this creature: Search your library for a creature card with the same mana value as this creature and put that card onto the battlefield, then shuffle. Transfigure only as a sorcery."),
TRANSMUTE("Transmute", KeywordWithCost.class, false, "%s, 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."), TRANSMUTE("Transmute", KeywordWithCost.class, false, "%s, 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. Transmute only as a sorcery."),
TRIBUTE("Tribute", KeywordWithAmount.class, false, "As this creature enters the battlefield, an opponent of your choice may put {%d:+1/+1 counter} on it."), TRIBUTE("Tribute", KeywordWithAmount.class, false, "As this creature enters the battlefield, an opponent of your choice may put {%d:+1/+1 counter} on it."),
TYPECYCLING("TypeCycling", KeywordWithCostAndType.class, false, "%s, Discard this card: Search your library for a %s card, reveal it, put it into your hand, then shuffle your library."), TYPECYCLING("TypeCycling", KeywordWithCostAndType.class, false, "%s, Discard this card: Search your library for a %s card, reveal it, put it into your hand, then shuffle."),
UNDAUNTED("Undaunted", SimpleKeyword.class, false, "This spell costs {1} less to cast for each opponent."), UNDAUNTED("Undaunted", SimpleKeyword.class, false, "This spell costs {1} less to cast for each opponent."),
UNDYING("Undying", SimpleKeyword.class, false, "When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it."), UNDYING("Undying", SimpleKeyword.class, false, "When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it."),
UNEARTH("Unearth", KeywordWithCost.class, false, "%s: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery."), UNEARTH("Unearth", KeywordWithCost.class, false, "%s: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery."),

View File

@@ -275,7 +275,7 @@ public final class StaticAbilityContinuous {
for (Card c : definedCards) { for (Card c : definedCards) {
final int cmc = c.getCMC(); final int cmc = c.getCMC();
String y = (input.replace(" from EachCMCAmongDefined", ":Card.cmcEQ" String y = (input.replace(" from EachCMCAmongDefined", ":Card.cmcEQ"
+ (cmc) + ":Protection from converted mana cost " + (cmc))); + (cmc) + ":Protection from mana value " + (cmc)));
if (!newKeywords.contains(y)) { if (!newKeywords.contains(y)) {
newKeywords.add(y); newKeywords.add(y);
} }

View File

@@ -24,7 +24,7 @@ public class CardCMCRangeFilter extends ValueRangeFilter<PaperCard> {
@Override @Override
protected String getCaption() { protected String getCaption() {
return "CMC"; return "Mana Value";
} }
@Override @Override

View File

@@ -21,7 +21,7 @@ public class CardCMCFilter extends ValueRangeFilter<PaperCard> {
@Override @Override
protected String getCaption() { protected String getCaption() {
return "CMC"; return "Mana Value";
} }
@Override @Override

View File

@@ -431,7 +431,7 @@ lblCommanderDesc=Each player has a legendary "General" card which can be cast at
lblOathbreaker=Oathbreaker lblOathbreaker=Oathbreaker
lblOathbreakerDesc=Each player has a Planeswalker card as their "Oathbreaker" which can be cast at any time and determines deck colors. Each player also has a signature spell that can be cast when their Oathbreaker is on the battlefield. lblOathbreakerDesc=Each player has a Planeswalker card as their "Oathbreaker" which can be cast at any time and determines deck colors. Each player also has a signature spell that can be cast when their Oathbreaker is on the battlefield.
lblTinyLeaders=Tiny Leaders lblTinyLeaders=Tiny Leaders
lblTinyLeadersDesc=Each player has a legendary \"General\" card which can be cast at any time and determines deck colors. Each card must have CMC less than 4. lblTinyLeadersDesc=Each player has a legendary \"General\" card which can be cast at any time and determines deck colors. Each card must have mana value less than 4.
lblBrawl=Brawl lblBrawl=Brawl
lblBrawlDesc=Each player has a legendary \"General\" card which can be cast at any time and determines deck colors. Only cards legal in Standard may be used. lblBrawlDesc=Each player has a legendary \"General\" card which can be cast at any time and determines deck colors. Only cards legal in Standard may be used.
lblPlaneswalker=Planeswalker lblPlaneswalker=Planeswalker
@@ -779,13 +779,13 @@ lblEnchantments=Enchantments
lblPlaneswalkers=Planeswalkers lblPlaneswalkers=Planeswalkers
lblInstants=Instants lblInstants=Instants
lblSorceries=Sorceries lblSorceries=Sorceries
lblCCMC0=Cards with CMC 0 lblCCMC0=Cards with mana value 0
lblCCMC1=Cards with CMC 1 lblCCMC1=Cards with mana value 1
lblCCMC2=Cards with CMC 2 lblCCMC2=Cards with mana value 2
lblCCMC3=Cards with CMC 3 lblCCMC3=Cards with mana value 3
lblCCMC4=Cards with CMC 4 lblCCMC4=Cards with mana value 4
lblCCMC5=Cards with CMC 5 lblCCMC5=Cards with mana value 5
lblCCMC6orMore=Cards with CMC 6+ lblCCMC6orMore=Cards with mana value 6+
lblWhitedecks=White decks lblWhitedecks=White decks
lblBluedecks=Blue decks lblBluedecks=Blue decks
lblBlackdecks=Black decks lblBlackdecks=Black decks
@@ -895,7 +895,7 @@ lblQuestWorld=Quest World
lblSets=Sets lblSets=Sets
lblTypes=Types lblTypes=Types
lblConvertedManaCosts=Converted mana lblConvertedManaCosts=Converted mana
lblCMCRange=CMC Range lblCMCRange=Mana Value Range
lblPowerRange=Power Range lblPowerRange=Power Range
lblToughnessRange=Toughness Range lblToughnessRange=Toughness Range
lblFoil=Foil lblFoil=Foil
@@ -919,8 +919,8 @@ lblPrompt=Prompt
lblGameSetup=Game Setup lblGameSetup=Game Setup
#ColumnDef.java #ColumnDef.java
lblAIStatus=AI Status lblAIStatus=AI Status
lblCMC=CMC lblCMC=Mana Value
ttCMC=CMC ttCMC=Mana Value
lblCN=CN lblCN=CN
ttCN=Collector Number Order ttCN=Collector Number Order
ttColor=Color ttColor=Color
@@ -2139,12 +2139,12 @@ lblSubtype=Subtype
lblGenericCost=Generic Cost lblGenericCost=Generic Cost
lblManaCost=Mana Cost lblManaCost=Mana Cost
lblFirstPrinting=First Printing lblFirstPrinting=First Printing
lblAverageCMC=Average CMC lblAverageCMC=Average Mana Value
lblMainDeck=Main Deck lblMainDeck=Main Deck
lblMainDeckSize=Main Deck Size lblMainDeckSize=Main Deck Size
lblSideboardSize=Sideboard Size lblSideboardSize=Sideboard Size
lblOrigin=Origin lblOrigin=Origin
lblDeckAverageCMC=Deck Average CMC lblDeckAverageCMC=Deck Average Mana Value
lblDeckContents=Deck Contents lblDeckContents=Deck Contents
lblDeckSize=Deck Size lblDeckSize=Deck Size
lblBuyPrice=Buy Price lblBuyPrice=Buy Price
@@ -2475,8 +2475,8 @@ lblRemainingDraws=REMAINING DRAWS
lblTotalCards=Total cards lblTotalCards=Total cards
lblTotalManaCost=Total mana cost lblTotalManaCost=Total mana cost
lblAverageManaCost=Average mana cost lblAverageManaCost=Average mana cost
lblCardByColorTypeCMC=CARDS BY COLOR, TYPE AND CMC: lblCardByColorTypeCMC=CARDS BY COLOR, TYPE AND MANA VALUE:
lblBreakdownOfColorTypeCMC=Breakdown of cards by color, type and CMC lblBreakdownOfColorTypeCMC=Breakdown of cards by color, type and mana value
lblColoredManaSymbolsINManaCost=COLORED MANA SYMBOLS IN MANA COST: lblColoredManaSymbolsINManaCost=COLORED MANA SYMBOLS IN MANA COST:
lblAmountOfManaSymbolsInManaCostOfCards=Amount of mana symbols in mana cost of cards lblAmountOfManaSymbolsInManaCostOfCards=Amount of mana symbols in mana cost of cards
lblMulticolorCardCount=Multicolor Card Count lblMulticolorCardCount=Multicolor Card Count
@@ -2498,7 +2498,7 @@ lblInstantCardCount=Instant Card Count
lblLandCardCount=Land Card Count lblLandCardCount=Land Card Count
lblPlaneswalkerCardCount=Planeswalker Card Count lblPlaneswalkerCardCount=Planeswalker Card Count
lblSorceryCardCount=Sorcery Card Count lblSorceryCardCount=Sorcery Card Count
lblCMCNCardCount=CMC {0} Card Count lblCMCNCardCount=Mana Value {0} Card Count
#FFileChooser.java #FFileChooser.java
lblNewFolder=New Folder lblNewFolder=New Folder
lblInvalidFolder=Invalid Folder lblInvalidFolder=Invalid Folder

View File

@@ -778,13 +778,13 @@ lblEnchantments=エンチャントのみ表示
lblPlaneswalkers=プレインズウォーカーのみ表示 lblPlaneswalkers=プレインズウォーカーのみ表示
lblInstants=インスタントのみ表示 lblInstants=インスタントのみ表示
lblSorceries=ソーサリーのみ表示 lblSorceries=ソーサリーのみ表示
lblCCMC0=CMC 0のカードのみ表示 lblCCMC0=マナ総量 0のカードのみ表示
lblCCMC1=CMC 1のカードのみ表示 lblCCMC1=マナ総量 1のカードのみ表示
lblCCMC2=CMC 2のカードのみ表示 lblCCMC2=マナ総量 2のカードのみ表示
lblCCMC3=CMC 3のカードのみ表示 lblCCMC3=マナ総量 3のカードのみ表示
lblCCMC4=CMC 4のカードのみ表示 lblCCMC4=マナ総量 4のカードのみ表示
lblCCMC5=CMC 5のカードのみ表示 lblCCMC5=マナ総量 5のカードのみ表示
lblCCMC6orMore=CMC 6以上のカードのみ表示 lblCCMC6orMore=マナ総量 6以上のカードのみ表示
lblWhitedecks=白デッキ lblWhitedecks=白デッキ
lblBluedecks=青デッキ lblBluedecks=青デッキ
lblBlackdecks=黒デッキ lblBlackdecks=黒デッキ
@@ -918,8 +918,8 @@ lblPrompt=プロンプト
lblGameSetup=ゲームのセットアップ lblGameSetup=ゲームのセットアップ
#ColumnDef.java #ColumnDef.java
lblAIStatus=AIステータス lblAIStatus=AIステータス
lblCMC=CMC lblCMC=マナ総量
ttCMC=CMC ttCMC=マナ総量
lblCN=CN lblCN=CN
ttCN=コレクター番号順 ttCN=コレクター番号順
ttColor= ttColor=

View File

@@ -210,7 +210,7 @@ public final class InputSelectTargets extends InputSyncronizedBase {
soFar += card.getCMC(); soFar += card.getCMC();
} }
if (soFar > maxTotalCMC) { if (soFar > maxTotalCMC) {
showMessage(sa.getHostCard() + " - Cannot target this card (CMC limit exceeded)"); showMessage(sa.getHostCard() + " - Cannot target this card (mana value limit exceeded)");
return false; return false;
} }
} }
@@ -260,7 +260,7 @@ public final class InputSelectTargets extends InputSyncronizedBase {
} }
} }
// If all cards must have different CMC // If all cards must have different mana values
if (tgt.isDifferentCMC()) { if (tgt.isDifferentCMC()) {
final List<Integer> targetedCMCs = new ArrayList<>(); final List<Integer> targetedCMCs = new ArrayList<>();
for (final GameObject o : targetDepth.keySet()) { for (final GameObject o : targetDepth.keySet()) {
@@ -270,7 +270,7 @@ public final class InputSelectTargets extends InputSyncronizedBase {
} }
} }
if (targetedCMCs.contains(card.getCMC())) { if (targetedCMCs.contains(card.getCMC())) {
showMessage(sa.getHostCard() + " - Cannot target this card (must have different CMC)"); showMessage(sa.getHostCard() + " - Cannot target this card (must have different mana values)");
return false; return false;
} }
} }

View File

@@ -280,10 +280,10 @@ public class ConquestUtil {
RARE (FSkinProp.IMG_PW_BADGE_RARE, new RarityFilter(EnumSet.of(CardRarity.Rare, CardRarity.Special, CardRarity.MythicRare)), "Rare"), RARE (FSkinProp.IMG_PW_BADGE_RARE, new RarityFilter(EnumSet.of(CardRarity.Rare, CardRarity.Special, CardRarity.MythicRare)), "Rare"),
MYTHIC (FSkinProp.IMG_PW_BADGE_MYTHIC, new RarityFilter(EnumSet.of(CardRarity.MythicRare)), "Mythic Rare (100%)"), MYTHIC (FSkinProp.IMG_PW_BADGE_MYTHIC, new RarityFilter(EnumSet.of(CardRarity.MythicRare)), "Mythic Rare (100%)"),
CMC_LOW (FSkinProp.IMG_CMC_LOW, new CMCFilter(0, 3), "CMC 0-3"), CMC_LOW (FSkinProp.IMG_CMC_LOW, new CMCFilter(0, 3), "Mana Value 0-3"),
CMC_LOW_MID (FSkinProp.IMG_CMC_LOW_MID, new CMCFilter(2, 5), "CMC 2-5"), CMC_LOW_MID (FSkinProp.IMG_CMC_LOW_MID, new CMCFilter(2, 5), "Mana Value 2-5"),
CMC_MID_HIGH (FSkinProp.IMG_CMC_MID_HIGH, new CMCFilter(4, 7), "CMC 4-7"), CMC_MID_HIGH (FSkinProp.IMG_CMC_MID_HIGH, new CMCFilter(4, 7), "Mana Value 4-7"),
CMC_HIGH (FSkinProp.IMG_CMC_HIGH, new CMCFilter(6, -1), "CMC 6+"); CMC_HIGH (FSkinProp.IMG_CMC_HIGH, new CMCFilter(6, -1), "Mana Value 6+");
private final FSkinProp skinProp; private final FSkinProp skinProp;
private final Predicate<PaperCard> predicate; private final Predicate<PaperCard> predicate;