diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 33457d2ffbb..5462e03083c 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -2257,6 +2257,23 @@ public class Card extends GameEntity implements Comparable, IHasSVars { sb.append("(As this Saga enters and after your draw step, add a lore counter. Sacrifice after "); sb.append(TextUtil.toRoman(getFinalChapterNr())).append(".)").append(linebreak); } + + // add As an additional cost to Permanent spells + if (state.getFirstAbility() != null && type.isPermanent()) { + SpellAbility first = state.getFirstAbility(); + if (first.isSpell()) { + Cost cost = first.getPayCosts(); + if (cost != null && !cost.isOnlyManaCost()) { + String additionalDesc = ""; + if (state.getFirstAbility().hasParam("AdditionalDesc")) { + additionalDesc = state.getFirstAbility().getParam("AdditionalDesc"); + } + sb.append(cost.toString().replace("\n", "")).append(" ").append(additionalDesc); + sb.append(linebreak); + } + } + } + if (monstrous) { sb.append("Monstrous\r\n"); } @@ -2267,6 +2284,9 @@ public class Card extends GameEntity implements Comparable, IHasSVars { sb.append("Manifested\r\n"); } sb.append(keywordsToText(getUnhiddenKeywords(state))); + if ((keywordsToText(getUnhiddenKeywords(state))).length() > 0) { + sb.append(linebreak); + } // Process replacement effects first so that "enters the battlefield tapped" // and "as ~ enters the battlefield, choose...", etc can be printed @@ -2285,18 +2305,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } } - // add As an additional cost to Permanent spells - if (state.getFirstAbility() != null && type.isPermanent()) { - SpellAbility first = state.getFirstAbility(); - if (first.isSpell()) { - Cost cost = first.getPayCosts(); - if (cost != null && !cost.isOnlyManaCost()) { - sb.append(cost.toString()); - sb.append(linebreak); - } - } - } - if (this.getRules() != null && state.getView().getState().equals(CardStateName.Original)) { // try to look which what card this card can be meld to // only show this info if this card does not has the meld Effect itself diff --git a/forge-game/src/main/java/forge/game/cost/CostExile.java b/forge-game/src/main/java/forge/game/cost/CostExile.java index adb7f8a075d..9fef62597df 100644 --- a/forge-game/src/main/java/forge/game/cost/CostExile.java +++ b/forge-game/src/main/java/forge/game/cost/CostExile.java @@ -113,6 +113,10 @@ public class CostExile extends CostPartWithList { return String.format("Exile %s from the same %s", Cost.convertAmountTypeToWords(i, this.getAmount(), desc), origin); } + if (this.getAmount().equals("X")) { + return String.format ("Exile any number of %s from your %s", desc, origin); + } + return String.format("Exile %s from your %s", Cost.convertAmountTypeToWords(i, this.getAmount(), desc), origin); } diff --git a/forge-gui/res/cardsfolder/upcoming/gorex_the_tombshell.txt b/forge-gui/res/cardsfolder/upcoming/gorex_the_tombshell.txt new file mode 100644 index 00000000000..02b1e348f8b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gorex_the_tombshell.txt @@ -0,0 +1,15 @@ +Name:Gorex, the Tombshell +ManaCost:6 B B +Types:Legendary Creature Zombie Turtle +PT:4/4 +A:SP$ PermanentCreature | Cost$ 6 B B ExileFromGrave | AdditionalDesc$ This spell costs {2} less to cast for each card exiled this way. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Y | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way. +SVar:X:Count$xPaid +SVar:Y:SVar$X/Times.2 +K:Deathtouch +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerDescription$ Whenever CARDNAME attacks or dies, choose a card at random exiled with NICKNAME and put that card into its owner's hand. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChoose | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or dies, choose a card at random exiled with NICKNAME and put that card into its owner's hand. +SVar:TrigChoose:DB$ ChooseCard | Amount$ 1 | AtRandom$ True | Choices$ Card.ExiledWithSource | ChoiceZone$ Exile | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Exile | Destination$ Hand | Hidden$ True +DeckHas:Ability$Graveyard +Oracle:As an additional cost to cast this spell, you may exile any number of creature cards from your graveyard. This spell costs {2} less to cast for each card exiled this way.\nDeathtouch\nWhenever Gorex, the Tombshell attacks or dies, choose a card at random exiled with Gorex and put that card into its owner's hand.