diff --git a/.gitattributes b/.gitattributes index 454c0785e3c..7023c1aee7d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2525,6 +2525,7 @@ res/cardsfolder/d/dream_cache.txt svneol=native#text/plain res/cardsfolder/d/dream_coat.txt -text svneol=unset#text/plain res/cardsfolder/d/dream_fighter.txt -text res/cardsfolder/d/dream_fracture.txt svneol=native#text/plain +res/cardsfolder/d/dream_halls.txt -text res/cardsfolder/d/dream_prowler.txt svneol=native#text/plain res/cardsfolder/d/dream_stalker.txt svneol=native#text/plain res/cardsfolder/d/dream_thief.txt -text diff --git a/res/cardsfolder/d/dream_halls.txt b/res/cardsfolder/d/dream_halls.txt new file mode 100644 index 00000000000..2543c420289 --- /dev/null +++ b/res/cardsfolder/d/dream_halls.txt @@ -0,0 +1,11 @@ +Name:Dream Halls +ManaCost:3 U U +Types:Enchantment +Text:no text +S:Mode$ Continuous | Affected$ Card.YouCtrl | AddHiddenKeyword$ HIDDEN Alternative Cost Discard<1/Card.SharesColorWith/color sharing> | AffectedZone$ Hand,Graveyard,Exile,Library | Description$ Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell. +SVar:RemRandomDeck:True +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/dream_halls.jpg +SetInfo:STH|Rare|http://magiccards.info/scans/en/sh/28.jpg +Oracle:Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell. +End \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 84ca9436a13..a6f3c216456 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -2264,6 +2264,8 @@ public class Card extends GameEntity implements Comparable { final String costDesc = upkeepCostParams.length > 2 ? "- " + upkeepCostParams[2] : cost; sbLong.append(costDesc); sbLong.append("\r\n"); + } else if (keyword.get(i).startsWith("Alternative Cost")) { + sbLong.append("Has alternative cost."); } else if (keyword.get(i).startsWith("Champion")) { final String k = this.getKeyword().get(i); final String[] kk = k.split(":"); diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index ac5ec315766..6552a1163cf 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -1909,7 +1909,7 @@ public final class GameActionUtil { newSA.setBasicSpell(false); newSA.setPayCosts(cost); newSA.setManaCost(""); - newSA.setDescription(sa.getDescription() + " (by paying " + keyword.substring(17) + " instead of its mana cost)"); + newSA.setDescription(sa.getDescription() + " (by paying " + cost.toSimpleString() + " instead of its mana cost)"); alternatives.add(newSA); } } diff --git a/src/main/java/forge/card/cost/Cost.java b/src/main/java/forge/card/cost/Cost.java index d18a7f7bf28..a46e05981f3 100644 --- a/src/main/java/forge/card/cost/Cost.java +++ b/src/main/java/forge/card/cost/Cost.java @@ -476,6 +476,29 @@ public class Cost { return this.spellToString(false); } + /** + *

+ * toSimpleString. + *

+ * + * @return a {@link java.lang.String} object. + */ + public final String toSimpleString() { + final StringBuilder cost = new StringBuilder(); + boolean first = true; + for (final CostPart part : this.costParts) { + if (part instanceof CostMana) { + continue; + } + if (!first) { + cost.append(" and "); + } + cost.append(part.toString()); + first = false; + } + return cost.toString(); + } + /** *

* spellToString.