diff --git a/forge-gui/res/cardsfolder/upcoming/march_of_burgeoning_life.txt b/forge-gui/res/cardsfolder/upcoming/march_of_burgeoning_life.txt index 73d24de635d..f8681ff11c5 100644 --- a/forge-gui/res/cardsfolder/upcoming/march_of_burgeoning_life.txt +++ b/forge-gui/res/cardsfolder/upcoming/march_of_burgeoning_life.txt @@ -1,7 +1,7 @@ Name:March of Burgeoning Life ManaCost:X G Types:Instant -A:SP$ Pump | AnnounceTitle$ how many green cards to exile | Announce$ Exiled | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.cmcLTX | TgtPrompt$ Choose target creature with mana value less than X | SubAbility$ DBSearch | StackDescription$ None | SpellDescription$ Choose target creature with mana value less than X. Search your library for a creature card with the same name as that creature, put it onto the battlefield tapped, then shuffle. +A:SP$ Pump | AnnounceTitle$ how many green cards to exile | Announce$ Exiled | ValidTgts$ Creature.cmcLTX | TgtPrompt$ Choose target creature with mana value less than X | SubAbility$ DBSearch | StackDescription$ None | SpellDescription$ Choose target creature with mana value less than X. Search your library for a creature card with the same name as that creature, put it onto the battlefield tapped, then shuffle. SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Targeted.Creature+sameName | ChangeTypeDesc$ creature card with the same name as {c:Targeted} | ChangeNum$ 1 | Mandatory$ True | Tapped$ True S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of green cards from your hand. This spell costs {2} less to cast for each card exiled this way. S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way. diff --git a/forge-gui/res/cardsfolder/upcoming/march_of_otherworldly_light.txt b/forge-gui/res/cardsfolder/upcoming/march_of_otherworldly_light.txt new file mode 100644 index 00000000000..32d4a8661fc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/march_of_otherworldly_light.txt @@ -0,0 +1,11 @@ +Name:March of Otherworldly Light +ManaCost:X W +Types:Instant +A:SP$ ChangeZone | AnnounceTitle$ how many white cards to exile | Announce$ Exiled | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Artifact.cmcLEX,Creature.cmcLEX,Enchantment.cmcLEX | TgtPrompt$ Select target artifact, creature, or enchantment with mana value X or less | SpellDescription$ Exile target artifact, creature, or enchantment with mana value X or less. +S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of white cards from your hand. This spell costs {2} less to cast for each card exiled this way. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | 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$Exiled +SVar:Z:SVar$Y/Times.2 +SVar:Exiled:Number$0 +Oracle:As an additional cost to cast this spell, you may exile any number of white cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nExile target artifact, creature, or enchantment with mana value X or less. diff --git a/forge-gui/res/cardsfolder/upcoming/march_of_reckless_joy.txt b/forge-gui/res/cardsfolder/upcoming/march_of_reckless_joy.txt index 59c3412f279..2c87ce2f970 100644 --- a/forge-gui/res/cardsfolder/upcoming/march_of_reckless_joy.txt +++ b/forge-gui/res/cardsfolder/upcoming/march_of_reckless_joy.txt @@ -1,14 +1,14 @@ Name:March of Reckless Joy ManaCost:X R Types:Instant -A:SP$ Dig | Cost$ X R | AdditionalDesc$ This spell costs {2} less to cast for each card exiled this way. | AnnounceTitle$ how many red cards to exile | Announce$ Exiled | DB$ Dig | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top X cards of your library. Until the end of your next turn, you may play up to two of those cards. +A:SP$ Dig | Cost$ X R | AdditionalDesc$ This spell costs {2} less to cast for each card exiled this way. | AnnounceTitle$ how many red cards to exile | Announce$ Exiled | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top X cards of your library. You may play up to two of those cards until the end of your next turn. S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way. S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way. -SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ MayPlay | Duration$ UntilTheEndOfYourNextTurn | ForgetOnMoved$ Exile | SubAbility$ DBCleanup -SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayLimit$ 2 | EffectZone$ Command | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play up to two of those cards. +SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ MayPlay | Duration$ UntilTheEndOfYourNextTurn | ForgetOnMoved$ Exile | SubAbility$ DBCleanup | SpellDescription$ You may play up to two of those cards until the end of your next turn. +SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayLimit$ 2 | EffectZone$ Command | AffectedZone$ Exile | Description$ You may play up to two of those cards until the end of your next turn. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid SVar:Y:SVar$Exiled SVar:Z:SVar$Y/Times.2 SVar:Exiled:Number$0 -Oracle:As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nExile the top X cards of your library. Until the end of your next turn, you may play up to two of those cards. +Oracle:As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nExile the top X cards of your library. You may play up to two of those cards until the end of your next turn. diff --git a/forge-gui/res/cardsfolder/upcoming/march_of_swirling_mist.txt b/forge-gui/res/cardsfolder/upcoming/march_of_swirling_mist.txt new file mode 100644 index 00000000000..925dcc5e47b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/march_of_swirling_mist.txt @@ -0,0 +1,11 @@ +Name:March of Swirling Mist +ManaCost:X U +Types:Instant +A:SP$ Phases | AnnounceTitle$ how many blue cards to exile | Announce$ Exiled | ValidTgts$ Creature | TgtPrompt$ Select up to X target creatures | TargetMin$ 0 | TargetMax$ X | SpellDescription$ Up to X target creatures phase out. (While they're phased out, they're treated as though they don't exist. Each one phases in before its controller untaps during their next untap step.) +S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of blue cards from your hand. This spell costs {2} less to cast for each card exiled this way. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | 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$Exiled +SVar:Z:SVar$Y/Times.2 +SVar:Exiled:Number$0 +Oracle:As an additional cost to cast this spell, you may exile any number of blue cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nUp to X target creatures phase out. (While they're phased out, they're treated as though they don't exist. Each one phases in before its controller untaps during their next untap step.) diff --git a/forge-gui/res/cardsfolder/upcoming/march_of_wretched_sorrow.txt b/forge-gui/res/cardsfolder/upcoming/march_of_wretched_sorrow.txt new file mode 100644 index 00000000000..c3d808c15fc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/march_of_wretched_sorrow.txt @@ -0,0 +1,13 @@ +Name:March of Wretched Sorrow +ManaCost:X B +Types:Instant +A:SP$ DealDamage | AnnounceTitle$ how many black cards to exile | Announce$ Exiled | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals X damage to target creature or planeswalker +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | SpellDescription$ and you gain X life. +S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of black cards from your hand. This spell costs {2} less to cast for each card exiled this way. +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | 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$Exiled +SVar:Z:SVar$Y/Times.2 +SVar:Exiled:Number$0 +DeckHas:Ability$LifeGain +Oracle:As an additional cost to cast this spell, you may exile any number of black cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nMarch of Wretched Sorrow deals X damage to target creature or planeswalker and you gain X life. diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 54886c64129..36dda164c41 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -257,6 +257,10 @@ public class HumanCostDecision extends CostDecisionMakerBase { return null; } + if (c == 0) { //in case choice was already made to pay 0 cards + return PaymentDecision.number(c); + } + if (cost.from == ZoneType.Battlefield || cost.from == ZoneType.Hand) { final InputSelectCardsFromList inp = new InputSelectCardsFromList(controller, c, c, list, ability); inp.setMessage(Localizer.getInstance().getMessage("lblExileNCardsFromYourZone", "%d", cost.getFrom().getTranslatedName())); diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index b5874416e8f..2b09d24bce5 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -217,6 +217,15 @@ public class HumanPlaySpellAbility { fromZone.add(oldCard, zonePosition >= 0 ? Integer.valueOf(zonePosition) : null); ability.setHostCard(oldCard); ability.setXManaCostPaid(null); + if (ability.hasParam("Announce")) { + final String announce = ability.getParam("Announce"); + for (final String aVar : announce.split(",")) { + final String varName = aVar.trim(); + if (!varName.equals("X")) { + ability.setSVar(varName, "0"); + } + } + } // better safe than sorry approach in case rolled back ability was copy (from addExtraKeywordCost) for (SpellAbility sa : oldCard.getSpells()) { sa.setHostCard(oldCard);