diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java index 5f79d6b2f0a..17b5a336eb1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java @@ -257,6 +257,8 @@ public class AnimateAllEffect extends AnimateEffectBase { if (!permanent) { if (sa.hasParam("UntilEndOfCombat")) { game.getEndOfCombat().addUntil(unanimate); + } else if (sa.hasParam("UntilYourNextTurn")) { + game.getCleanup().addUntil(host.getController(), unanimate); } else { game.getEndOfTurn().addUntil(unanimate); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java index 9bc54977b51..e5c609d6c24 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java @@ -60,10 +60,12 @@ public class FlipCoinEffect extends SpellAbilityEffect { } final boolean noCall = sa.hasParam("NoCall"); + String varName = sa.hasParam("SaveNumFlipsToSVar") ? sa.getParam("SaveNumFlipsToSVar") : "X"; boolean victory = false; + if (!noCall) { flipMultiplier = getFilpMultiplier(caller.get(0)); - victory = flipCoinCall(caller.get(0), sa, flipMultiplier); + victory = flipCoinCall(caller.get(0), sa, flipMultiplier, varName); } final boolean rememberResult = sa.hasParam("RememberResult"); @@ -71,19 +73,43 @@ public class FlipCoinEffect extends SpellAbilityEffect { for (final Player flipper : playersToFlip) { if (noCall) { flipMultiplier = getFilpMultiplier(flipper); - final boolean resultIsHeads = flipCoinNoCall(sa, flipper, flipMultiplier); - if (rememberResult) { - host.addFlipResult(flipper, resultIsHeads ? "Heads" : "Tails"); + + int countHeads = 0; + int countTails = 0; + + int amount = 1; + if (sa.hasParam("Amount")) { + amount = AbilityUtils.calculateAmount(host, sa.getParam("Amount"), sa); } - if (resultIsHeads) { + for(int i = 0; i < amount; ++i) { + final boolean resultIsHeads = flipCoinNoCall(sa, flipper, flipMultiplier, varName); + + if (resultIsHeads) { + countHeads++; + } else { + countTails++; + } + + if (rememberResult) { + host.addFlipResult(flipper, resultIsHeads ? "Heads" : "Tails"); + } + } + if (countHeads > 0) { AbilitySub sub = sa.getAdditionalAbility("HeadsSubAbility"); if (sub != null) { + if (sa.hasParam("Amount")) { + sub.setSVar(varName, "Number$" + countHeads); + } AbilityUtils.resolve(sub); } - } else { + } + if (countTails > 0) { AbilitySub sub = sa.getAdditionalAbility("TailsSubAbility"); if (sub != null) { + if (sa.hasParam("Amount")) { + sub.setSVar(varName, "Number$" + countTails); + } AbilityUtils.resolve(sub); } } @@ -124,7 +150,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { * @param multiplier * @return a boolean. */ - public boolean flipCoinNoCall(final SpellAbility sa, final Player flipper, final int multiplier) { + public boolean flipCoinNoCall(final SpellAbility sa, final Player flipper, final int multiplier, final String varName) { boolean result = false; int numSuccesses = 0; @@ -142,7 +168,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { } while (sa.hasParam("FlipUntilYouLose") && result != false); if (sa.hasParam("FlipUntilYouLose")) { - sa.getAdditionalAbility("LoseSubAbility").setSVar(sa.hasParam("SaveNumFlipsToSVar") ? sa.getParam("SaveNumFlipsToSVar") : "X", "Number$" + numSuccesses); + sa.getAdditionalAbility("LoseSubAbility").setSVar(varName, "Number$" + numSuccesses); } return result; @@ -159,6 +185,10 @@ public class FlipCoinEffect extends SpellAbilityEffect { * @return a boolean. */ public static boolean flipCoinCall(final Player caller, final SpellAbility sa, final int multiplier) { + String varName = sa.hasParam("SaveNumFlipsToSVar") ? sa.getParam("SaveNumFlipsToSVar") : "X"; + return flipCoinCall(caller, sa, multiplier, varName); + } + public static boolean flipCoinCall(final Player caller, final SpellAbility sa, final int multiplier, final String varName) { boolean wonFlip = false; int numSuccesses = 0; @@ -187,7 +217,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { } while (sa.hasParam("FlipUntilYouLose") && wonFlip); if (sa.hasParam("FlipUntilYouLose")) { - sa.getAdditionalAbility("LoseSubAbility").setSVar(sa.hasParam("SaveNumFlipsToSVar") ? sa.getParam("SaveNumFlipsToSVar") : "X", "Number$" + numSuccesses); + sa.getAdditionalAbility("LoseSubAbility").setSVar(varName, "Number$" + numSuccesses); } return wonFlip; diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index bee4bff7b1b..e188c2535f2 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -1422,41 +1422,41 @@ public class CardFactoryUtil { } if (sq[0].contains("OppCtrl")) { - for (final Player p : opps) { - someCards.addAll(p.getZone(ZoneType.Battlefield).getCards()); - } + for (final Player p : opps) { + someCards.addAll(p.getZone(ZoneType.Battlefield).getCards()); + } } if (sq[0].contains("InOppYard")) { - for (final Player p : opps) { - someCards.addAll(p.getCardsIn(ZoneType.Graveyard)); - } + for (final Player p : opps) { + someCards.addAll(p.getCardsIn(ZoneType.Graveyard)); + } } if (sq[0].contains("InOppHand")) { - for (final Player p : opps) { - someCards.addAll(p.getCardsIn(ZoneType.Hand)); - } + for (final Player p : opps) { + someCards.addAll(p.getCardsIn(ZoneType.Hand)); + } } if (sq[0].contains("InChosenHand")) { - if (c.getChosenPlayer() != null) { - someCards.addAll(c.getChosenPlayer().getCardsIn(ZoneType.Hand)); - } + if (c.getChosenPlayer() != null) { + someCards.addAll(c.getChosenPlayer().getCardsIn(ZoneType.Hand)); + } } if (sq[0].contains("InChosenYard")) { - if (c.getChosenPlayer() != null) { - someCards.addAll(c.getChosenPlayer().getCardsIn(ZoneType.Graveyard)); - } + if (c.getChosenPlayer() != null) { + someCards.addAll(c.getChosenPlayer().getCardsIn(ZoneType.Graveyard)); + } } if (sq[0].contains("OnBattlefield")) { - someCards.addAll(game.getCardsIn(ZoneType.Battlefield)); + someCards.addAll(game.getCardsIn(ZoneType.Battlefield)); } if (sq[0].contains("InAllYards")) { - someCards.addAll(game.getCardsIn(ZoneType.Graveyard)); + someCards.addAll(game.getCardsIn(ZoneType.Graveyard)); } if (sq[0].contains("SpellsOnStack")) { @@ -1464,7 +1464,7 @@ public class CardFactoryUtil { } if (sq[0].contains("InAllHands")) { - someCards.addAll(game.getCardsIn(ZoneType.Hand)); + someCards.addAll(game.getCardsIn(ZoneType.Hand)); } // Count$InTargetedHand (targeted player's cards in hand) diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index 14d291d893a..4ffc1d30099 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -192,7 +192,7 @@ public class PhaseHandler implements java.io.Serializable { switch (phase) { case UNTAP: if (playerTurn.hasKeyword("Skip your next untap step.")) { - playerTurn.removeKeyword("Skip your next untap step."); + playerTurn.removeKeyword("Skip your next untap step.", false); // Skipping your "next" untap step is cumulative. return true; } return playerTurn.hasKeyword("Skip the untap step of this turn.") || playerTurn.hasKeyword("Skip your untap step."); diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java b/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java index b914ae53b1b..90abfa87fd6 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceProduceMana.java @@ -1,10 +1,14 @@ package forge.game.replacement; import forge.game.card.Card; +import forge.game.card.CardFactoryUtil; import forge.game.spellability.SpellAbility; +import forge.util.Expressions; import java.util.Map; +import org.apache.commons.lang3.StringUtils; + /** * TODO: Write javadoc for this type. * @@ -37,6 +41,22 @@ public class ReplaceProduceMana extends ReplacementEffect { } } + if (hasParam("ManaAmount")) { + String full = getParam("ManaAmount"); + String operator = full.substring(0, 2); + String operand = full.substring(2); + int intoperand = 0; + try { + intoperand = Integer.parseInt(operand); + } catch (NumberFormatException e) { + intoperand = CardFactoryUtil.xCount(getHostCard(), getHostCard().getSVar(operand)); + } + int manaAmount = StringUtils.countMatches((String) runParams.get("Mana"), " ") + 1; + if (!Expressions.compare(manaAmount, operator, intoperand)) { + return false; + } + } + if (this.getMapParams().containsKey("ValidCard")) { if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidCard").split(","), this.getHostCard())) { return false; diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index 2835e658c28..8700ff560be 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -235,6 +235,12 @@ public abstract class Trigger extends TriggerReplacementBase { } } + if (this.mapParams.containsKey("PreCombatMain")) { + if (!phaseHandler.isPreCombatMain()) { + return false; + } + } + if (this.mapParams.containsKey("PlayerTurn")) { if (!phaseHandler.isPlayerTurn(this.getHostCard().getController())) { return false; diff --git a/forge-gui/res/cardsfolder/a/altar_of_shadows.txt b/forge-gui/res/cardsfolder/a/altar_of_shadows.txt index 52e7f5a4c35..5c566284828 100644 --- a/forge-gui/res/cardsfolder/a/altar_of_shadows.txt +++ b/forge-gui/res/cardsfolder/a/altar_of_shadows.txt @@ -1,7 +1,7 @@ Name:Altar of Shadows ManaCost:7 Types:Artifact -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. SVar:TrigGetMana:DB$ Mana | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {X}{B} to your mana pool A:AB$ Destroy | Cost$ 7 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter | SpellDescription$ Destroy target creature. Then put a charge counter on CARDNAME. SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 diff --git a/forge-gui/res/cardsfolder/a/angel_of_invention.txt b/forge-gui/res/cardsfolder/a/angel_of_invention.txt index 4b25fb3359e..9343c862fee 100644 --- a/forge-gui/res/cardsfolder/a/angel_of_invention.txt +++ b/forge-gui/res/cardsfolder/a/angel_of_invention.txt @@ -8,5 +8,6 @@ K:Lifelink K:Fabricate:2 S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other creatures you control get +1/+1. DeckHas:Ability$Counters & Ability$Token +SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/angel_of_invention.jpg Oracle:Flying, vigilance, lifelink\nFabricate 2 (When this creature enters the battlefield, put two +1/+1 counters on it or create two 1/1 colorless Servo artifact creature tokens.)\nOther creatures you control get +1/+1. diff --git a/forge-gui/res/cardsfolder/b/black_market.txt b/forge-gui/res/cardsfolder/b/black_market.txt index 6d8ccfcfc9e..d778476f2f6 100644 --- a/forge-gui/res/cardsfolder/b/black_market.txt +++ b/forge-gui/res/cardsfolder/b/black_market.txt @@ -3,7 +3,7 @@ ManaCost:3 B B Types:Enchantment T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a creature dies, put a charge counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} to your mana pool for each charge counter on CARDNAME. SVar:TrigGetMana:DB$ Mana | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {X}{B} to your mana pool SVar:X:Count$CardCounters.CHARGE SVar:Picture:http://www.wizards.com/global/images/magic/general/black_market.jpg diff --git a/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt b/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt index 701221e7a40..f6c525433db 100644 --- a/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt +++ b/forge-gui/res/cardsfolder/b/blinkmoth_urn.txt @@ -1,7 +1,7 @@ Name:Blinkmoth Urn ManaCost:5 Types:Artifact -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Battlefield | IsPresent$ Card.Self+untapped | Execute$ TrigGetMana | TriggerDescription$ At the beginning of each player's precombat main phase, if CARDNAME is untapped, that player adds {C} to his or her mana pool for each artifact he or she controls. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | TriggerZones$ Battlefield | IsPresent$ Card.Self+untapped | Execute$ TrigGetMana | TriggerDescription$ At the beginning of each player's precombat main phase, if CARDNAME is untapped, that player adds {C} to his or her mana pool for each artifact he or she controls. SVar:TrigGetMana:DB$ Mana | Produced$ C | Amount$ X | References$ X | Defined$ TriggeredPlayer SVar:X:Count$Valid Artifact.ActivePlayerCtrl SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt b/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt index 83440c262f0..37f1924c4db 100644 --- a/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt +++ b/forge-gui/res/cardsfolder/b/bounty_of_the_luxa.txt @@ -1,7 +1,7 @@ Name:Bounty of the Luxa ManaCost:2 G U Types:Enchantment -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all flood counters from CARDNAME. If no counters were removed this way, put a flood counter on CARDNAME and draw a card. Otherwise, add {C}{G}{U} to your mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all flood counters from CARDNAME. If no counters were removed this way, put a flood counter on CARDNAME and draw a card. Otherwise, add {C}{G}{U} to your mana pool. SVar:TrigRemove:DB$ RemoveCounter | CounterType$ FLOOD | CounterNum$ All | RememberRemoved$ True | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$PutCounter | Defined$ Self | ConditionCheckSVar$ X | References$ X | ConditionSVarCompare$ EQ0 | CounterType$ FLOOD | CounterNum$ 1 | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionCheckSVar$ X | References$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBGetMana diff --git a/forge-gui/res/cardsfolder/c/coalition_relic.txt b/forge-gui/res/cardsfolder/c/coalition_relic.txt index 56ac352c590..6140718b951 100644 --- a/forge-gui/res/cardsfolder/c/coalition_relic.txt +++ b/forge-gui/res/cardsfolder/c/coalition_relic.txt @@ -3,7 +3,7 @@ ManaCost:3 Types:Artifact A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool. A:AB$ PutCounter | Cost$ T | CounterType$ CHARGE | CounterNum$ 1 | SpellDescription$ Put a charge counter on CARDNAME. -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all charge counters from CARDNAME. Add one mana of any color to your mana pool for each charge counter removed this way. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all charge counters from CARDNAME. Add one mana of any color to your mana pool for each charge counter removed this way. SVar:TrigRemove:DB$ RemoveCounter | CounterType$ CHARGE | CounterNum$ All | RememberRemoved$ True | SubAbility$ TrigGetMana SVar:TrigGetMana:DB$ Mana | Produced$ Combo Any | Amount$ NumRemoved | References$ NumRemoved | AILogic$ MostProminentInComputerHand | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt b/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt index 19eedb69663..8ffdf7cd54e 100644 --- a/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt +++ b/forge-gui/res/cardsfolder/e/eladamri_lord_of_leaves_avatar.txt @@ -2,7 +2,7 @@ Name:Eladamri, Lord of Leaves Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:-1/+2 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Command | Execute$ TrigAddMana | TriggerDescription$ At the beginning of each player's precombat main phase, that player adds {G}{G} to his or her mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | TriggerZones$ Command | Execute$ TrigAddMana | TriggerDescription$ At the beginning of each player's precombat main phase, that player adds {G}{G} to his or her mana pool. SVar:TrigAddMana:DB$ Mana | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer SVar:RemRandomDeck:True SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Eladamri, Lord of Leaves Avatar.full.jpg diff --git a/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt b/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt index 2e107211202..c11a1f41a34 100644 --- a/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt +++ b/forge-gui/res/cardsfolder/e/eladamris_vineyard.txt @@ -1,7 +1,7 @@ Name:Eladamri's Vineyard ManaCost:G Types:Enchantment -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. SVar:TrigMana:DB$Mana | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/eladamris_vineyard.jpg Oracle:At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. diff --git a/forge-gui/res/cardsfolder/e/elemental_resonance.txt b/forge-gui/res/cardsfolder/e/elemental_resonance.txt index 3709882672b..a25125a0b58 100644 --- a/forge-gui/res/cardsfolder/e/elemental_resonance.txt +++ b/forge-gui/res/cardsfolder/e/elemental_resonance.txt @@ -3,7 +3,7 @@ ManaCost:2 G G Types:Enchantment Aura K:Enchant permanent A:SP$ Attach | Cost$ 2 G G | ValidTgts$ Permanent | AILogic$ Pump -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of your precombat main phase, add mana equal to enchanted permanent's mana cost to your mana pool. (Mana cost includes color. If a mana symbol has multiple colors, choose one.) +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of your precombat main phase, add mana equal to enchanted permanent's mana cost to your mana pool. (Mana cost includes color. If a mana symbol has multiple colors, choose one.) SVar:TrigMana:DB$ Mana | Produced$ Special EnchantedManaCost SVar:Picture:http://www.wizards.com/global/images/magic/general/elemental_resonance.jpg Oracle:Enchant permanent\nAt the beginning of your precombat main phase, add mana equal to enchanted permanent's mana cost to your mana pool. (Mana cost includes color. If a mana symbol has multiple colors, choose one.) diff --git a/forge-gui/res/cardsfolder/e/etali_primal_storm.txt b/forge-gui/res/cardsfolder/e/etali_primal_storm.txt index 784ba5c9a29..eb2e4b2bb3f 100644 --- a/forge-gui/res/cardsfolder/e/etali_primal_storm.txt +++ b/forge-gui/res/cardsfolder/e/etali_primal_storm.txt @@ -4,7 +4,8 @@ Types:Legendary Creature Elder Dinosaur PT:6/6 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, exile the top card of each player's library, then you may cast any number of nonland cards exiled this way without paying their mana costs. SVar:TrigMill:DB$ Mill | NumCards$ 1 | Defined$ Player | Destination$ Exile | RememberMilled$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsRemembered | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All +SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsRemembered | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/etali_primal_storm.jpg Oracle:Whenever Etali, Primal Storm attacks, exile the top card of each player's library, then you may cast any number of nonland cards exiled this way without paying their mana costs. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/gilded_lotus.txt b/forge-gui/res/cardsfolder/g/gilded_lotus.txt index 55873dd3372..da471c36a4d 100644 --- a/forge-gui/res/cardsfolder/g/gilded_lotus.txt +++ b/forge-gui/res/cardsfolder/g/gilded_lotus.txt @@ -3,4 +3,4 @@ ManaCost:5 Types:Artifact A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 3 | SpellDescription$ Add three mana of any one color to your mana pool. SVar:Picture:http://www.wizards.com/global/images/magic/general/gilded_lotus.jpg -Oracle:{T}: Add three mana of any one color to your mana pool. +Oracle:{T}: Add three mana of any one color. diff --git a/forge-gui/res/cardsfolder/h/harnessed_lightning.txt b/forge-gui/res/cardsfolder/h/harnessed_lightning.txt index 8312e5198d7..846991854e9 100644 --- a/forge-gui/res/cardsfolder/h/harnessed_lightning.txt +++ b/forge-gui/res/cardsfolder/h/harnessed_lightning.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Instant A:SP$ PutCounter | Cost$ 1 R | Defined$ You | AILogic$ PayEnergy | CounterType$ ENERGY | CounterNum$ 3 | SubAbility$ DBChooseNumber | SpellDescription$ Choose target creature. You get {E}{E}{E} (three energy counters), then you may pay any amount of {E}. Harnessed Lightning deals that much damage to that creature. SVar:DBChooseNumber:DB$ ChooseNumber | Max$ Max | ListTitle$ Pay Energy for Damage | References$ Max | SubAbility$ DBDealDamage -SVar:DBDealDamage:DB$ DealDamage | References$ X | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | UnlessCost$ PayEnergy | UnlessPayer$ You | UnlessSwitched$ True +SVar:DBDealDamage:DB$ DealDamage | References$ X | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | UnlessCost$ PayEnergy | UnlessPayer$ You | UnlessSwitched$ True | StackDescription$ CARDNAME deals that much damage to that creature. SVar:Max:Count$YourCountersEnergy SVar:X:Count$ChosenNumber SVar:Picture:http://www.wizards.com/global/images/magic/general/harnessed_lightning.jpg diff --git a/forge-gui/res/cardsfolder/k/kilnspire_district.txt b/forge-gui/res/cardsfolder/k/kilnspire_district.txt index 7e2e685ade3..23128cdc0f7 100644 --- a/forge-gui/res/cardsfolder/k/kilnspire_district.txt +++ b/forge-gui/res/cardsfolder/k/kilnspire_district.txt @@ -2,7 +2,7 @@ Name:Kilnspire District ManaCost:no cost Types:Plane Ravnica T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ PutCounter | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} to your mana pool for each charge counter on it. -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} to your mana pool for each charge counter on it. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} to your mana pool for each charge counter on it. SVar:PutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ Y | References$ Y T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPay | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to target creature or player. diff --git a/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt b/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt index de6c2929715..e5e59ca0e72 100644 --- a/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt +++ b/forge-gui/res/cardsfolder/m/magus_of_the_vineyard.txt @@ -2,7 +2,7 @@ Name:Magus of the Vineyard ManaCost:G Types:Creature Human Wizard PT:1/1 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ Player | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ Player | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. SVar:TrigMana:DB$Mana | Produced$ G | Amount$ 2 | Defined$ TriggeredPlayer SVar:Picture:http://www.wizards.com/global/images/magic/general/magus_of_the_vineyard.jpg Oracle:At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool. diff --git a/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt b/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt index c3325629b9c..86fef9dc028 100644 --- a/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt +++ b/forge-gui/res/cardsfolder/o/orcish_squatters_avatar.txt @@ -2,7 +2,7 @@ Name:Orcish Squatters Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:-1/-1 -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add an amount of {C} to your mana pool equal to the number of lands target opponent controls. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add an amount of {C} to your mana pool equal to the number of lands target opponent controls. SVar:TrigGetMana:DB$ Pump | ValidTgts$ Player | RememberObjects$ Targeted | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ C | Amount$ X | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/p/plasm_capture.txt b/forge-gui/res/cardsfolder/p/plasm_capture.txt index 1137f140b08..0eb1003fea9 100644 --- a/forge-gui/res/cardsfolder/p/plasm_capture.txt +++ b/forge-gui/res/cardsfolder/p/plasm_capture.txt @@ -2,7 +2,7 @@ Name:Plasm Capture ManaCost:G G U U Types:Instant A:SP$ Counter | Cost$ G G U U | TargetType$ Spell | RememberCounteredCMC$ True | ValidTgts$ Card | SubAbility$ DBDelTrig | SpellDescription$ Counter target spell. At the beginning of your next precombat main phase, add X mana in any combination of colors to your mana pool, where X is that spell's converted mana cost. -SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | Execute$ AddMana | TriggerDescription$ At the beginning of your next precombat main phase, add X mana in any combination of colors to your mana pool, where X is that spell's converted mana cost. | RememberNumber$ True | SubAbility$ DBCleanup +SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | Execute$ AddMana | TriggerDescription$ At the beginning of your next precombat main phase, add X mana in any combination of colors to your mana pool, where X is that spell's converted mana cost. | RememberNumber$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AddMana:DB$ Mana | Produced$ Combo Any | Amount$ X | References$ X | AILogic$ MostProminentInComputerHand SVar:X:Count$TriggerRememberAmount diff --git a/forge-gui/res/cardsfolder/r/ral_zarek.txt b/forge-gui/res/cardsfolder/r/ral_zarek.txt index 40724845016..d02be81f68f 100644 --- a/forge-gui/res/cardsfolder/r/ral_zarek.txt +++ b/forge-gui/res/cardsfolder/r/ral_zarek.txt @@ -5,8 +5,7 @@ Loyalty:4 A:AB$ Tap | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Permanent | TgtPrompt$ Select target permanent to tap | Planeswalker$ True | SubAbility$ DBUntap | SpellDescription$ Tap target permanent, then untap another target permanent. SVar:DBUntap:DB$ Untap | ValidTgts$ Permanent | TargetUnique$ True | TgtPrompt$ Select target permanent to untap A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. -A:AB$ Repeat | Cost$ SubCounter<7/LOYALTY> | MaxRepeat$ 5 | RepeatSubAbility$ DBFlip | Planeswalker$ True | Ultimate$ True | StackDescription$ SpellDescription | SpellDescription$ Flip 5 coins. Take an extra turn after this one for each coin that comes up heads. -SVar:DBFlip:DB$ FlipACoin | NoCall$ True | HeadsSubAbility$ DBAddTurn -SVar:DBAddTurn:DB$ AddTurn | Defined$ You | NumTurns$ 1 +A:AB$ FlipACoin | Cost$ SubCounter<7/LOYALTY> | Amount$ 5 | NoCall$ True | HeadsSubAbility$ DBAddTurn | Planeswalker$ True | Ultimate$ True | StackDescription$ SpellDescription | SpellDescription$ Flip 5 coins. Take an extra turn after this one for each coin that comes up heads. +SVar:DBAddTurn:DB$ AddTurn | Defined$ You | NumTurns$ X SVar:Picture:http://www.wizards.com/global/images/magic/general/ral_zarek.jpg Oracle:[+1]: Tap target permanent, then untap another target permanent.\n[-2]: Ral Zarek deals 3 damage to target creature or player.\n[-7]: Flip five coins. Take an extra turn after this one for each coin that comes up heads. diff --git a/forge-gui/res/cardsfolder/r/ravos_soultender.txt b/forge-gui/res/cardsfolder/r/ravos_soultender.txt index 402e3f1cb93..555db2e88a1 100644 --- a/forge-gui/res/cardsfolder/r/ravos_soultender.txt +++ b/forge-gui/res/cardsfolder/r/ravos_soultender.txt @@ -7,5 +7,6 @@ S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddPower$ 1 | AddToughne T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you may return target creature card from your graveyard to your hand. SVar:TrigChangeZone:DB$ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature card in your graveyard K:Partner +SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/ravos_soultender.jpg Oracle:Flying\nOther creatures you control get +1/+1.\nAt the beginning of your upkeep, you may return target creature card from your graveyard to your hand.\nPartner (You can have two commanders if both have partner.) diff --git a/forge-gui/res/cardsfolder/s/sage_of_ancient_lore_werewolf_of_ancient_hunger.txt b/forge-gui/res/cardsfolder/s/sage_of_ancient_lore_werewolf_of_ancient_hunger.txt index eb9ba9d329b..9c8f28f3481 100644 --- a/forge-gui/res/cardsfolder/s/sage_of_ancient_lore_werewolf_of_ancient_hunger.txt +++ b/forge-gui/res/cardsfolder/s/sage_of_ancient_lore_werewolf_of_ancient_hunger.txt @@ -24,8 +24,8 @@ Types:Creature Werewolf PT:*/* K:Vigilance K:Trample -S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | References$ X | Description$ CARDNAME's power and toughness are each equal to the total number of cards in all players' hands. -SVar:X:Count$NumInAllHands +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ Y | SetToughness$ Y | References$ Y | Description$ CARDNAME's power and toughness are each equal to the total number of cards in all players' hands. +SVar:Y:Count$NumInAllHands T:Mode$Phase | Phase$ Upkeep | WerewolfUntransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if a player cast two or more spells last turn, transform CARDNAME. SVar:TrigTransform:DB$ SetState | Defined$ Self | Mode$ Transform SVar:Picture:http://www.wizards.com/global/images/magic/general/werewolf_of_ancient_hunger.jpg diff --git a/forge-gui/res/cardsfolder/upcoming/adventurous_impulse.txt b/forge-gui/res/cardsfolder/upcoming/adventurous_impulse.txt new file mode 100644 index 00000000000..e266470af3e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/adventurous_impulse.txt @@ -0,0 +1,5 @@ +Name:Adventurous Impulse +ManaCost:G +Types:Sorcery +A:SP$ Dig | Cost$ G | DigNum$ 3 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | SpellDescription$ Look at the top three cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. +Oracle:Look at the top three cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/arcane_flight.txt b/forge-gui/res/cardsfolder/upcoming/arcane_flight.txt new file mode 100644 index 00000000000..be4413b5f73 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/arcane_flight.txt @@ -0,0 +1,7 @@ +Name:Arcane Flight +ManaCost:U +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ U | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Flying | Description$ Enchanted creature gets +1/+1 and has flying. +Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has flying. diff --git a/forge-gui/res/cardsfolder/upcoming/benalish_honor_guard.txt b/forge-gui/res/cardsfolder/upcoming/benalish_honor_guard.txt new file mode 100644 index 00000000000..fcda0022dcb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/benalish_honor_guard.txt @@ -0,0 +1,8 @@ +Name:Benalish Honor Guard +ManaCost:1 W +Types:Creature Human Knight +PT:2/2 +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | References$ X | Description$ CARDNAME gets +1/+0 for each legendary creature you control. +SVar:X:Count$Valid Creature.Legendary+YouCtrl +SVar:BuffedBy:Legendary Creature +Oracle:Benalish Honor Guard gets +1/+0 for each legendary creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/benalish_marshal.txt b/forge-gui/res/cardsfolder/upcoming/benalish_marshal.txt index 63719da9392..9cba7a83555 100644 --- a/forge-gui/res/cardsfolder/upcoming/benalish_marshal.txt +++ b/forge-gui/res/cardsfolder/upcoming/benalish_marshal.txt @@ -3,5 +3,6 @@ ManaCost:W W W Types:Creature Human Knight PT:3/3 S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other creatures you control get +1/+1. +SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/benalish_marshal.jpg Oracle:Other creatures you control get +1/+1. diff --git a/forge-gui/res/cardsfolder/upcoming/blessed_light.txt b/forge-gui/res/cardsfolder/upcoming/blessed_light.txt new file mode 100644 index 00000000000..da73832b40b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/blessed_light.txt @@ -0,0 +1,5 @@ +Name:Blessed Light +ManaCost:4 W +Types:Instant +A:SP$ ChangeZone | Cost$ 4 W | ValidTgts$ Creature,Enchantment | TgtPrompt$ Select target creature or enchantment | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target creature or enchantment. +Oracle:Exile target creature or enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/board_the_weatherlight.txt b/forge-gui/res/cardsfolder/upcoming/board_the_weatherlight.txt new file mode 100644 index 00000000000..7cc4b604b78 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/board_the_weatherlight.txt @@ -0,0 +1,5 @@ +Name:Board the Weatherlight +ManaCost:1 W +Types:Sorcery +A:SP$ Dig | Cost$ 1 W | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Historic | RestRandomOrder$ True | SpellDescription$ Look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.) +Oracle:Look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.) diff --git a/forge-gui/res/cardsfolder/upcoming/cabal_stronghold.txt b/forge-gui/res/cardsfolder/upcoming/cabal_stronghold.txt new file mode 100644 index 00000000000..51f307ae619 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/cabal_stronghold.txt @@ -0,0 +1,8 @@ +Name:Cabal Stronghold +ManaCost:no cost +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Mana | Cost$ 3 T | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {B} to your mana pool for each basic Swamp you control. +SVar:X:Count$Valid Swamp.Basic+YouCtrl +SVar:RemAIDeck:True +Oracle:{T}: Add {C}.\n{3}, {T}: Add {B} to your mana pool for each basic Swamp you control. diff --git a/forge-gui/res/cardsfolder/upcoming/chainers_torment.txt b/forge-gui/res/cardsfolder/upcoming/chainers_torment.txt new file mode 100644 index 00000000000..3bda70c2f5a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/chainers_torment.txt @@ -0,0 +1,11 @@ +Name:Chainer's Torment +ManaCost:3 B +Types:Enchantment Saga +K:Saga:3:DBDealDamage,DBDealDamage,DBToken +SVar:DBDealDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to each opponent and you gain 2 life. +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Nightmare Horror | TokenOwner$ You | TokenPower$ X | TokenToughness$ X | References$ X | TokenTypes$ Creature,Nightmare,Horror | TokenColors$ Black | TokenImage$ b x x nightmare horror dom | RememberTokens$ True | SubAbility$ DBDamageYou | SpellDescription$ Create an X/X black Nightmare Horror creature token, where X is half your life total, rounded up. It deals X damage to you. +SVar:DBDamageYou:DB$ DealDamage | Defined$ You | NumDmg$ X | References$ X | DamageSource$ Remembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$YourLifeTotal/HalfUp +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Chainer’s Torment deals 2 damage to each opponent and you gain 2 life.\nIII — Create an X/X black Nightmare Horror creature token, where X is half your life total, rounded up. It deals X damage to you. diff --git a/forge-gui/res/cardsfolder/upcoming/corrosive_ooze.txt b/forge-gui/res/cardsfolder/upcoming/corrosive_ooze.txt new file mode 100644 index 00000000000..c1c699d7b6d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/corrosive_ooze.txt @@ -0,0 +1,12 @@ +Name:Corrosive Ooze +ManaCost:1 G +Types:Creature Ooze +PT:2/2 +T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature.equipped | ValidBlocker$ Card.Self | Execute$ DelTrigAttacker | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by an equipped creature, destroy all Equipment attached to that creature at end of combat. +T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature.equipped | Execute$ DelTrigBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by an equipped creature, destroy all Equipment attached to that creature at end of combat. +SVar:DelTrigAttacker:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigRem | RememberObjects$ TriggeredAttacker | TriggerDescription$ Destroy all Equipment attached to blocked creature at end of combat. +SVar:DelTrigBlocker:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigRem | RememberObjects$ TriggeredBlocker | TriggerDescription$ Destroy all Equipment attached to blocking creature at end of combat. +SVar:TrigRem:DB$ Pump | RememberObjects$ DelayTriggerRemembered | SubAbility$ TrigDestroy +SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Remembered.Equipment+Attached | SpellDescription$ Destroy all Equipment attached to that creature. | SubAbility$ Cleanup +SVar:Cleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Whenever Corrosive Ooze blocks or becomes blocked by an equipped creature, destroy all Equipment attached to that creature at end of combat. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/damping_sphere.txt b/forge-gui/res/cardsfolder/upcoming/damping_sphere.txt new file mode 100644 index 00000000000..d3ccff78259 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/damping_sphere.txt @@ -0,0 +1,11 @@ +Name:Damping Sphere +ManaCost:2 +Types:Artifact +R:Event$ ProduceMana | ActiveZones$ Battlefield | ValidCard$ Land | ManaAmount$ GE2 | ManaReplacement$ ProduceC | Description$ If a land is tapped for mana, it produces {C} instead of any other type and amount. +SVar:ProduceC:Any->C +S:Mode$ RaiseCost | Activator$ Player | Type$ Spell | Amount$ X | AffectedAmount$ True | Description$ Each spell a player casts costs {1} more to cast for each other spell that player has cast this turn. +SVar:X:Count$ThisTurnCast_Card.YouCtrl +SVar:RemAIDeck:True +SVar:NonStackingEffect:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/damping_sphere.jpg +Oracle:If a land is tapped for two or more mana, it produces {C} instead of any other type and amount.\nEach spell a player casts costs {1} more to cast for each other spell that player has cast this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/daring_archaeologist.txt b/forge-gui/res/cardsfolder/upcoming/daring_archaeologist.txt new file mode 100644 index 00000000000..8c3c72822c5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/daring_archaeologist.txt @@ -0,0 +1,10 @@ +Name:Daring Archaeologist +ManaCost:3 W +Types:Creature Human Artificer +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may return target artifact card from your graveyard to your hand. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.YouCtrl +T:Mode$ SpellCast | ValidCard$ Card.Historic | ValidActivatingPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a historic spell, put a +1/+1 counter on CARDNAME. (Artifacts, legendaries and Sagas are historic). +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/daring_archaeologist.jpg +Oracle:When Daring Archaeologist enters the battlefield, you may return target artifact card from your graveyard to your hand.\nWhenever you cast a historic spell, put a +1/+1 counter on Daring Archaeologist. (Artifacts, legendaries and Sagas are historic). diff --git a/forge-gui/res/cardsfolder/upcoming/dauntless_bodyguard.txt b/forge-gui/res/cardsfolder/upcoming/dauntless_bodyguard.txt new file mode 100644 index 00000000000..5a7b4467cbf --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dauntless_bodyguard.txt @@ -0,0 +1,10 @@ +Name:Dauntless Bodyguard +ManaCost:W +Types:Creature Human Knight +PT:2/1 +K:ETBReplacement:Other:ChooseC +SVar:ChooseC:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouCtrl+Other | AILogic$ AtLeast1 | Mandatory$ True | SpellDescription$ As CARDNAME enters the battlefield, choose another creature you control. +A:AB$ Pump | Cost$ Sac<1/CARDNAME> | Defined$ ChosenCard | KW$ Indestructible | SubAbility$ DBCleanup | SpellDescription$ The chosen creature gains indestructible until end of turn. +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/dauntless_bodyguard.jpg +Oracle:As Dauntless Bodyguard enters the battlefield, choose another creature you control.\nSacrifice Dauntless Bodyguard: The chosen creature gains indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/demonlord_belzenlok.txt b/forge-gui/res/cardsfolder/upcoming/demonlord_belzenlok.txt new file mode 100644 index 00000000000..aeac32c3c77 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/demonlord_belzenlok.txt @@ -0,0 +1,12 @@ +Name:Demonlord Belzenlok +ManaCost:4 B B +Types:Legendary Creature Demon +PT:6/6 +K:Flying +K:Trample +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When CARDNAME enters the battlefield, exile cards from the top of your library until you exile a nonland card, then put that card into your hand. If the card’s converted mana cost is 4 or greater, repeat this process. CARDNAME deals 1 damage to you for each card put into your hand this way. +SVar:TrigRepeat:DB$ Repeat | RepeatSubAbility$ DBCleanup | RepeatDefined$ Remembered | RepeatPresent$ Card.cmcGE4 | RepeatCompare$ EQ1 | StackDescription$ Exile cards from the top of your library until you exile a nonland card, then put that card into your hand. If the card’s converted mana cost is 4 or greater, repeat this process. CARDNAME deals 1 damage to you for each card put into your hand this way. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDigUntil +SVar:DBDigUntil:DB$ DigUntil | ValidPlayer$ You | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Hand | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBDealDamage +SVar:DBDealDamage:DB$ DealDamage | NumDmg$ 1 | Defined$ You +Oracle:Flying, trample\nWhen Demonlord Belzenlok enters the battlefield, exile cards from the top of your library until you exile a nonland card, then put that card into your hand. If the card’s converted mana cost is 4 or greater, repeat this process. Demonlord Belzenlok deals 1 damage to you for each card put into your hand this way. diff --git a/forge-gui/res/cardsfolder/upcoming/divest.txt b/forge-gui/res/cardsfolder/upcoming/divest.txt new file mode 100644 index 00000000000..e8cda18f0b6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/divest.txt @@ -0,0 +1,5 @@ +Name:Divest +ManaCost:B +Types:Sorcery +A:SP$ Discard | Cost$ B | ValidTgts$ Player | NumCards$ 1 | DiscardValid$ Artifact,Creature | Mode$ RevealYouChoose | SpellDescription$ Target player reveals their hand. You choose an artifact or creature card from it. That player discards that card. +Oracle:Target player reveals their hand. You choose an artifact or creature card from it. That player discards that card. diff --git a/forge-gui/res/cardsfolder/upcoming/fall_of_the_thran.txt b/forge-gui/res/cardsfolder/upcoming/fall_of_the_thran.txt new file mode 100644 index 00000000000..c140d7b3cc6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fall_of_the_thran.txt @@ -0,0 +1,8 @@ +Name:Fall of the Thran +ManaCost:5 W +Types:Enchantment Saga +K:Saga:3:DBDestroyAll,DBRepeatEach,DBRepeatEach +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Land | SpellDescription$ Destroy all lands. +SVar:DBRepeatEach:DB$ RepeatEach | RepeatSubAbility$ DBChangeZone | RepeatPlayers$ Player | SpellDescription$ Each player returns two land cards from their graveyard to the battlefield. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Land.RememberedPlayerCtrl | DefinedPlayer$ Player.IsRemembered | Chooser$ Player.IsRemembered | ChangeNum$ 2 | Hidden$ True | Mandatory$ True +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Destroy all lands.\nII, III — Each player returns two land cards from their graveyard to the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ghitu_chronicler.txt b/forge-gui/res/cardsfolder/upcoming/ghitu_chronicler.txt new file mode 100644 index 00000000000..59ec14dca72 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ghitu_chronicler.txt @@ -0,0 +1,8 @@ +Name:Ghitu Chronicler +ManaCost:1 R +Types:Creature Human Wizard +PT:1/3 +K:Kicker:3 R +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked, return target instant or sorcery card from your graveyard to your hand. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl +Oracle:Kicker {3}{R} (You may pay an additional {3}{R} as you cast this spell.)\nWhen Ghitu Chronicler enters the battlefield, if it was kicked, return target instant or sorcery card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/helm_of_the_host.txt b/forge-gui/res/cardsfolder/upcoming/helm_of_the_host.txt new file mode 100644 index 00000000000..1aec415e037 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/helm_of_the_host.txt @@ -0,0 +1,8 @@ +Name:Helm of the Host +ManaCost:4 +Types:Legendary Artifact Equipment +K:Equip 5 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCopy | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, create a token that's a copy of equipped creature, except the token isn't legendary if equipped creature is legendary. That token gains haste. +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Equipped | Keywords$ Haste | NonLegendary$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/helm_of_the_host.jpg +Oracle:At the beginning of combat on your turn, create a token that's a copy of equipped creature, except the token isn't legendary if equipped creature is legendary. That token gains haste.\nEquip {5} diff --git a/forge-gui/res/cardsfolder/upcoming/history_of_benalia.txt b/forge-gui/res/cardsfolder/upcoming/history_of_benalia.txt index 789b5dfb7b0..f10dc39843f 100644 --- a/forge-gui/res/cardsfolder/upcoming/history_of_benalia.txt +++ b/forge-gui/res/cardsfolder/upcoming/history_of_benalia.txt @@ -3,6 +3,6 @@ ManaCost:1 W W Types:Enchantment Saga K:Saga:3:DBToken,DBToken,DBPump SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Knight | TokenTypes$ Creature,Knight | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Vigilance | TokenImage$ w 2 2 knight dom | SpellDescription$ Create a 2/2 white Knight creature token with vigilance. -SVar:DBPump:DB$ PumpAll | Cost$ 1 W | ValidCards$ Knight.YouCtrl | NumAtt$ +2 | NumDef$ +1 | SpellDescription$ Knights you control get +2/+1 until end of turn. +SVar:DBPump:DB$ PumpAll | ValidCards$ Knight.YouCtrl | NumAtt$ +2 | NumDef$ +1 | SpellDescription$ Knights you control get +2/+1 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/history_of_benalia.jpg Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II - Create a 2/2 white Knight creature token with vigilance.\nIII - Knights you control get +2/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/jaya_ballard.txt b/forge-gui/res/cardsfolder/upcoming/jaya_ballard.txt index ad7347359c8..87a7c020228 100644 --- a/forge-gui/res/cardsfolder/upcoming/jaya_ballard.txt +++ b/forge-gui/res/cardsfolder/upcoming/jaya_ballard.txt @@ -7,15 +7,9 @@ A:AB$ Discard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | NumCards$ 3 | SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount -A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Jaya Ballard | Image $ emblem_jaya_ballard | StaticAbilities$ STJaya | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may cast instant and sorcery cards from your graveyard. If a card cast this way would be put into your graveyard, exile it instead." +A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Jaya Ballard | Image$ emblem_jaya_ballard | StaticAbilities$ STJaya | ReplacementEffects$ JayaReplace | SVars$ JayaMoveExile | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may cast instant and sorcery cards from your graveyard. If a card cast this way would be put into your graveyard, exile it instead." SVar:STJaya:Mode$ Continuous | EffectZone$ Command | Affected$ Instant.YouCtrl,Sorcery.YouCtrl | MayPlay$ True | AffectedZone$ Graveyard | Description$ You may cast instant and sorcery cards from your graveyard. If a card cast this way would be put into your graveyard, exile it instead. -T:Mode$ ChangesZone | ValidCard$ Instant.YouCtrl,Sorcery.YouCtrl | Origin$ Graveyard | Destination$ Stack | TriggerZones$ Battlefield | Execute$ RememberCastFromGrave | Static$ True -T:Mode$ ChangesZone | ValidCard$ Instant.YouCtrl+IsRemembered,Sorcery.YouCtrl+IsRemembered | Origin$ Stack | Destination$ Hand,Library,Exile | TriggerZones$ Battlefield | Execute$ DBCleanup | Static$ True -SVar:RememberCastFromGrave:DB$ Pump | RememberObjects$ TriggeredCard -# TODO: find a better way to check "card cast this way" to interact properly with other cards that allow you to cast cards from graveyard -# but not exile them (also relevant for Bosium Strip) -R:Event$ Moved | ValidCard$ Instant.YouCtrl+IsRemembered,Sorcery.YouCtrl+IsRemembered | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ MoveExile -SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:JayaReplace:Event$ Moved | EffectZone$ Command | ValidCard$ Card.CastSa Spell.MayPlaySource | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ JayaMoveExile +SVar:JayaMoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile SVar:PlayMain1:ALWAYS -Oracle:[+1]: Add {R}{R}{R}. Spend this mana only to cast instant or sorcery spells.\n[+1]: Discard up to three cards, then draw that many cards.\n[−8]: You get an emblem with "You may cast instant and sorcery cards from your graveyard. If a card cast this way would be put into your graveyard, exile it instead." \ No newline at end of file +Oracle:[+1]: Add {R}{R}{R}. Spend this mana only to cast instant or sorcery spells.\n[+1]: Discard up to three cards, then draw that many cards.\n[−8]: You get an emblem with "You may cast instant and sorcery cards from your graveyard. If a card cast this way would be put into your graveyard, exile it instead." diff --git a/forge-gui/res/cardsfolder/upcoming/josu_vess_lich_knight.txt b/forge-gui/res/cardsfolder/upcoming/josu_vess_lich_knight.txt new file mode 100644 index 00000000000..57ed3fc7038 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/josu_vess_lich_knight.txt @@ -0,0 +1,9 @@ +Name:Josu Vess, Lich Knight +ManaCost:2 B B +Types:Legendary Creature Zombie Knight +PT:4/5 +K:Kicker:5 B +K:Menace +T:Mode$ ChangesZone | ValidCard$ Card.Self+kicked | Origin$ Any | Destination$ Battlefield | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked, create eight 2/2 black Zombie Knight creature tokens with menace. +SVar:TrigToken:DB$ Token | TokenAmount$ 8 | TokenName$ Zombie Knight | TokenTypes$ Creature,Zombie,Knight | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Menace | TokenImage$ b 2 2 zombie knight DOM | SpellDescription$ When CARDNAME enters the battlefield, if it was kicked, create eight 2/2 black Zombie Knight creature tokens with menace. +Oracle:Kicker {5}{B} (You may pay an additional {5}{B} as you cast this spell.)\nMenace\nWhen Josu Vess, Lich Knight enters the battlefield, if it was kicked, create eight 2/2 black Zombie Knight creature tokens with menace. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/lichs_mastery.txt b/forge-gui/res/cardsfolder/upcoming/lichs_mastery.txt new file mode 100644 index 00000000000..d57e2f559c5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lichs_mastery.txt @@ -0,0 +1,14 @@ +Name:Lich's Mastery +ManaCost:3 B B B +Types:Legendary Enchantment +K:Hexproof +S:Mode$ Continuous | Affected$ You | AddKeyword$ You can't lose the game. | Description$ You can't lose the game. +T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield |Execute$ TrigDraw | TriggerDescription$ Whenever you gain life, draw that many cards. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X +SVar:X:TriggerCount$LifeAmount +T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Whenever you lose life, for each 1 life you lost, exile a permanent you control or a card from your hand or graveyard. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield,Hand,Graveyard | Destination$ Exile | ChangeType$ Card.YouCtrl | ChangeNum$ X | References$ X | Mandatory$ True +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigLose | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, you lose the game. +SVar:TrigLose:DB$ LosesGame | Defined$ You +SVar:Picture:http://www.wizards.com/global/images/magic/general/lichs_mastery.jpg +Oracle:Hexproof\nYou can't lose the game.\nWhenever you gain life, draw that many cards.\nWhenever you lose life, for each 1 life you lost, exile a permanent you control or a card from your hand or graveyard.\nWhen Lich's Mastery leaves the battlefield, you lose the game. diff --git a/forge-gui/res/cardsfolder/upcoming/lingering_phantom.txt b/forge-gui/res/cardsfolder/upcoming/lingering_phantom.txt new file mode 100644 index 00000000000..5ea22a8bd22 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lingering_phantom.txt @@ -0,0 +1,7 @@ +Name:Lingering Phantom +ManaCost:5 B +Types:Creature Spirit +PT:5/4 +T:Mode$ SpellCast | ValidCard$ Card.Historic | ValidActivatingPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigReturn | TriggerDescription$ Whenever you cast a historic spell, you may pay {B}. If you do, return CARDNAME from your graveyard to your hand. (Artifacts, legendaries, and Sagas are historic.) +SVar:TrigReturn:AB$ ChangeZone | Cost$ B | Defined$ Self | Origin$ Graveyard | Destination$ Hand +Oracle:Whenever you cast a historic spell, you may pay {B}. If you do, return Lingering Phantom from your graveyard to your hand. (Artifacts, legendaries, and Sagas are historic.) diff --git a/forge-gui/res/cardsfolder/upcoming/llanowar_envoy.txt b/forge-gui/res/cardsfolder/upcoming/llanowar_envoy.txt new file mode 100644 index 00000000000..3506271e86b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/llanowar_envoy.txt @@ -0,0 +1,7 @@ +Name:Llanowar Envoy +ManaCost:2 G +Types:Creature Elf Scout +PT:3/2 +A:AB$ Mana | Cost$ 1 G | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool. +SVar:RemAIDeck:True +Oracle:{1}{G}: Add one mana of any color to your mana pool. diff --git a/forge-gui/res/cardsfolder/upcoming/memorial_to_folly.txt b/forge-gui/res/cardsfolder/upcoming/memorial_to_folly.txt new file mode 100644 index 00000000000..c5ebe95ad8f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/memorial_to_folly.txt @@ -0,0 +1,7 @@ +Name:Memorial to Folly +ManaCost:no cost +Types:Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. +A:AB$ ChangeZone | Cost$ 2 B T Sac<1/CARDNAME> | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | Origin$ Graveyard | Destination$ Hand | SpellDescription$ Return target creature card from your graveyard to your hand. +Oracle:Memorial to Folly enters the battlefield tapped.\n{T}: Add {B}.\n{2}{B}, {T}, Sacrifice Memorial to Folly: Return target creature card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/memorial_to_genius.txt b/forge-gui/res/cardsfolder/upcoming/memorial_to_genius.txt new file mode 100644 index 00000000000..e71a6be9a56 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/memorial_to_genius.txt @@ -0,0 +1,7 @@ +Name:Memorial to Genius +ManaCost:no cost +Types:Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. +A:AB$ Draw | Cost$ 4 U T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. +Oracle:Memorial to Genius enters the battlefield tapped.\n{T}: Add {U}.\n{4}{U}, {T}, Sacrifice Memorial to Genius: Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/memorial_to_glory.txt b/forge-gui/res/cardsfolder/upcoming/memorial_to_glory.txt new file mode 100644 index 00000000000..0d2d0082f36 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/memorial_to_glory.txt @@ -0,0 +1,7 @@ +Name:Memorial to Glory +ManaCost:no cost +Types:Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. +A:AB$ Token | Cost$ 3 W T Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 2 | TokenName$ Soldier | TokenTypes$ Creature,Soldier | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ w 1 1 soldier DOM | SpellDescription$ Create two 1/1 white Soldier creature tokens. +Oracle:Memorial to Glory enters the battlefield tapped.\n{T}: Add {W}.\n{3}{W}, {T}, Sacrifice Memorial to Glory: Create two 1/1 white Soldier creature tokens. diff --git a/forge-gui/res/cardsfolder/upcoming/memorial_to_unity.txt b/forge-gui/res/cardsfolder/upcoming/memorial_to_unity.txt new file mode 100644 index 00000000000..d1580e974a3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/memorial_to_unity.txt @@ -0,0 +1,7 @@ +Name:Memorial to Unity +ManaCost:no cost +Types:Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}. +A:AB$ Dig | Cost$ 2 G T Sac<1/CARDNAME> | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Creature | RestRandomOrder$ True | SpellDescription$ Look at the top five cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +Oracle:Memorial to Unity enters the battlefield tapped.\n{T}: Add {G}.\n{2}{G}, {T}, Sacrifice Memorial to Unity: Look at the top five cards of your library. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/memorial_to_war.txt b/forge-gui/res/cardsfolder/upcoming/memorial_to_war.txt new file mode 100644 index 00000000000..95f2e16f1fd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/memorial_to_war.txt @@ -0,0 +1,7 @@ +Name:Memorial to War +ManaCost:no cost +Types:Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. +A:AB$ Destroy | Cost$ 4 R T Sac<1/CARDNAME> | ValidTgts$ Land | TgtPrompt$ Select target land | SpellDescription$ Destroy target land. +Oracle:Memorial to War enters the battlefield tapped.\n{T}: Add {R}.\n{4}{R}, {T}, Sacrifice Memorial to War: Destroy target land. diff --git a/forge-gui/res/cardsfolder/upcoming/mesa_unicorn.txt b/forge-gui/res/cardsfolder/upcoming/mesa_unicorn.txt new file mode 100644 index 00000000000..5ce950cf172 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mesa_unicorn.txt @@ -0,0 +1,6 @@ +Name:Mesa Unicorn +ManaCost:1 W +Types:Creature Unicorn +PT:2/2 +K:Lifelink +Oracle:Lifelink \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/phyrexian_scriptures.txt b/forge-gui/res/cardsfolder/upcoming/phyrexian_scriptures.txt new file mode 100644 index 00000000000..dc22252f25f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/phyrexian_scriptures.txt @@ -0,0 +1,9 @@ +Name:Phyrexian Scriptures +ManaCost:2 B B +Types:Enchantment Saga +K:Saga:3:DBPutCounter,DBDestroyAll,DBChangeZoneAll +SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select up to one target creature | CounterType$ P1P1 | CounterNum$ 1 | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBAnimate | SpellDescription$ Put a +1/+1 counter on up to one target creature. That creature becomes an artifact in addition to its other types. +SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Types$ Artifact | Permanent$ True +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.nonArtifact | SpellDescription$ Destroy all nonartifact creatures. +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Card.OppCtrl | Origin$ Graveyard | Destination$ Exile | SpellDescription$ Exile all cards from all opponents’ graveyards. +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Put a +1/+1 counter on up to one target creature. That creature becomes an artifact in addition to its other types.\nII — Destroy all nonartifact creatures.\nIII — Exile all cards from all opponents’ graveyards. diff --git a/forge-gui/res/cardsfolder/upcoming/rite_of_belzenlok.txt b/forge-gui/res/cardsfolder/upcoming/rite_of_belzenlok.txt new file mode 100644 index 00000000000..8928eac61cb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rite_of_belzenlok.txt @@ -0,0 +1,13 @@ +Name:Rite of Belzenlok +ManaCost:2 B B +Types:Enchantment Saga +K:Saga:3:TrigTokenCleric,TrigTokenCleric,TrigTokenDemon +SVar:TrigTokenCleric:DB$ Token | TokenOwner$ You | TokenAmount$ 2 | TokenName$ Cleric | TokenTypes$ Creature,Cleric | TokenColors$ Black | TokenPower$ 0 | TokenToughness$ 1 | TokenImage$ b 0 1 cleric DOM | SpellDescription$ Create two 0/1 black Cleric creature tokens. +SVar:TrigTokenDemon:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenName$ Demon | TokenTypes$ Creature,Demon | TokenColors$ Black | TokenPower$ 6 | TokenToughness$ 6 | TokenKeywords$ Flying<>Trample | TokenTriggers$ DemonUpkeepTrigger | TokenSVars$ DemonTrigSac,DemonDBDamage,DemonDBCleanup,X | TokenImage$ b 6 6 demon DOM | SpellDescription$ Create a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." +SVar:DemonUpkeepTrigger:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DemonTrigSac | TriggerDescription$ At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you. +SVar:DemonTrigSac:DB$ Sacrifice | Defined$ You | SacValid$ Creature.Other | SubAbility$ DemonDBDamage | RememberSacrificed$ True | +SVar:DemonDBDamage:DB$ DealDamage | Defined$ You | NumDmg$ 6 | ConditionCheckSVar$ X | ConditionSVarCompare$ LT1 | SubAbility$ DemonDBCleanup | References$ X +SVar:DemonDBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount +SVar:RemRandomDeck:True +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II - Create two 0/1 black Cleric creature tokens.\nIII - Create a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/shalai_voice_of_plenty.txt b/forge-gui/res/cardsfolder/upcoming/shalai_voice_of_plenty.txt new file mode 100644 index 00000000000..d692446c08c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/shalai_voice_of_plenty.txt @@ -0,0 +1,8 @@ +Name:Shalai, Voice of Plenty +ManaCost:3 W +Types:Legendary Creature Angel +PT:3/4 +K:Flying +S:Mode$ Continuous | Affected$ You,Planeswalker.YouCtrl,Creature.YouCtrl+Other | AddKeyword$ Hexproof | Description$ You, planeswalkers you control, and other creatures you control have hexproof. +A:AB$ PutCounterAll | Cost$ 4 G G | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on each creature you control. +Oracle:Flying\nYou, planeswalkers you control, and other creatures you control have hexproof.\n{4}{G}{G}: Put a +1/+1 counter on each creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/slinn_voda_the_rising_deep.txt b/forge-gui/res/cardsfolder/upcoming/slinn_voda_the_rising_deep.txt new file mode 100644 index 00000000000..c91af08c2e4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/slinn_voda_the_rising_deep.txt @@ -0,0 +1,8 @@ +Name:Slinn Voda, the Rising Deep +ManaCost:6 U U +Types:Legendary Creature Leviathan +PT:8/8 +K:Kicker:1 U +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked | Execute$ TrigChangeZoneAll | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked, return all creatures to their owner's hands except for Merfolk, Krakens, Leviathans, Octopuses, and Serpents. +SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Creature.nonMerfolk+nonKraken+nonLeviathan+nonOctopus+nonSerpent | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return all creatures to their owner's hands except for Merfolk, Krakens, Leviathans, Octopuses, and Serpents. +Oracle:Kicker {1}{U} (You may pay an additional {1}{U} as you cast this spell.)\nWhen Slinn Voda, the Rising Deep enters the battlefield, if it was kicked, return all creatures to their owner's hands except for Merfolk, Krakens, Leviathans, Octopuses, and Serpents. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/song_of_freyalise.txt b/forge-gui/res/cardsfolder/upcoming/song_of_freyalise.txt new file mode 100644 index 00000000000..0047fb621a7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/song_of_freyalise.txt @@ -0,0 +1,10 @@ +Name:Song of Freyalise +ManaCost:1 G +Types:Enchantment Saga +K:Saga:3:DBAnimateAll,DBAnimateAll,DBPutCounterAll +SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Abilities$ AnyMana | UntilYourNextTurn$ True | SpellDescription$ Until your next turn, creatures you control gain "{T}: Add one mana of any color." +SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color to your mana pool. +SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPumpAll | SpellDescription$ Put a +1/+1 counter on each creature you control. Those creatures gain vigilance, trample, and indestructible until end of turn. +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Vigilance & Trample & Indestructible +SVar:PlayMain1:TRUE +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Until your next turn, creatures you control gain "{T}: Add one mana of any color."\nIII — Put a +1/+1 counter on each creature you control. Those creatures gain vigilance, trample, and indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/sylvan_awakening.txt b/forge-gui/res/cardsfolder/upcoming/sylvan_awakening.txt new file mode 100644 index 00000000000..f99fe14811c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sylvan_awakening.txt @@ -0,0 +1,7 @@ +Name:Sylvan Awakening +ManaCost:2 G +Types:Sorcery +A:SP$ AnimateAll | Cost$ 2 G | Power$ 2 | Toughness$ 2 | Types$ Creature,Elemental | Keywords$ Reach & Indestructible & Haste | ValidCards$ Land.YouCtrl | UntilYourNextTurn$ True | SpellDescription$ Until your next turn, all lands you control become 2/2 Elemental creatures with reach, indestructible, and haste. They're still lands. +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/sylvan_awakening.jpg +Oracle:Until your next turn, all lands you control become 2/2 Elemental creatures with reach, indestructible, and haste. They're still lands. diff --git a/forge-gui/res/cardsfolder/upcoming/tatyova_benthic_druid.txt b/forge-gui/res/cardsfolder/upcoming/tatyova_benthic_druid.txt new file mode 100644 index 00000000000..50b42f165db --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tatyova_benthic_druid.txt @@ -0,0 +1,8 @@ +Name:Tatyova, Benthic Druid +ManaCost:3 G U +Types:Legendary Creature Merfolk Druid +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Land.YouCtrl | Execute$ TrigGainLife | TriggerDescription$ Whenever a land enters the battlefield under your control, you gain 1 life and draw a card. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Whenever a land enters the battlefield under your control, you gain 1 life and draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/the_antiquities_war.txt b/forge-gui/res/cardsfolder/upcoming/the_antiquities_war.txt new file mode 100644 index 00000000000..9d028cb79bd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_antiquities_war.txt @@ -0,0 +1,7 @@ +Name:The Antiquities War +ManaCost:3 U +Types:Enchantment Saga +K:Saga:3:TrigDig,TrigDig,TrigAnimateAll +SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Artifact | RestRandomOrder$ True | SpellDescription$ Look at the top five cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigAnimateAll:DB$ AnimateAll | Power$ 5 | Toughness$ 5 | Types$ Creature,Artifact | ValidCards$ Artifact.YouCtrl | SpellDescription$ Artifacts you control become artifact creatures with base power and toughness 5/5 until end of turn. +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Look at the top five cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nIII — Artifacts you control become artifact creatures with base power and toughness 5/5 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/the_eldest_reborn.txt b/forge-gui/res/cardsfolder/upcoming/the_eldest_reborn.txt new file mode 100644 index 00000000000..62532f61a20 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_eldest_reborn.txt @@ -0,0 +1,9 @@ +Name:The Eldest Reborn +ManaCost:4 B +Types:Enchantment Saga +K:Saga:3:DBSacrifice,DBDiscard,DBChangeZone +SVar:DBSacrifice:DB$ Sacrifice | Defined$ Player.Opponent | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker | SpellDescription$ Each opponent sacrifices a creature or planeswalker. +SVar:DBDiscard:DB$ Discard | Defined$ Player.Opponent | NumCards$ 1 | Mode$ TgtChoose | SpellDescription$ Each opponent discards a card. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Choose target creature or planeswalker card in a graveyard | SpellDescription$ Put target creature or planeswalker card from a graveyard onto the battlefield under your control. +SVar:PlayMain1:TRUE +Oracle:(As this saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI - Each opponent sacrifices a creature or planeswalker.\nII - Each opponent discards a card.\nIII - Put target creature or planeswalker card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/upcoming/the_first_eruption.txt b/forge-gui/res/cardsfolder/upcoming/the_first_eruption.txt new file mode 100644 index 00000000000..3f1137121c6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_first_eruption.txt @@ -0,0 +1,11 @@ +Name:The First Eruption +ManaCost:2 R +Types:Enchantment Saga +K:Saga:3:TrigDamageAll,TrigMana,TrigSac +SVar:TrigDamageAll:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.withoutFlying | ValidDescription$ Each creature without flying. | SpellDescription$ CARDNAME deals 1 damage to each creature without flying. +SVar:TrigMana:DB$ Mana | Produced$ R | Amount$ 2 | AILogic$ ManaRitual | SpellDescription$ Add {R}{R}. +SVar:TrigSac:DB$ Sacrifice | SacValid$ Mountain | RememberSacrificed$ True | StackDescription$ SpellDescription | SubAbility$ DBDamageAll | SpellDescription$ Sacrifice a Mountain. If you do, CARDNAME deals 3 damage to each creature. +SVar:DBDamageAll:DB$ DamageAll | NumDmg$ 3 | ValidCards$ Creature | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | References$ X | StackDescription$ None | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — The First Eruption deals 1 damage to each creature without flying.\nII — Add {R}{R}.\nIII — Sacrifice a Mountain. If you do, The First Eruption deals 3 damage to each creature. diff --git a/forge-gui/res/cardsfolder/upcoming/the_flame_of_keld.txt b/forge-gui/res/cardsfolder/upcoming/the_flame_of_keld.txt new file mode 100644 index 00000000000..bf2c79f4146 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_flame_of_keld.txt @@ -0,0 +1,13 @@ +Name:The Flame of Keld +ManaCost:1 R +Types:Enchantment Saga +K:Saga:3:TrigDiscard,TrigDraw,TrigEffect +SVar:TrigDiscard:DB$ Discard | Mode$ Hand | Defined$ You | SpellDescription$ Discard your hand. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 2 | SpellDescription$ Draw two cards. +SVar:TrigEffect:DB$ Effect | Name$ The Flame of Keld Effect | ReplacementEffects$ FlameOfKeldDamageEvent | SVars$ DmgPlus2,X | SpellDescription$ If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead. +SVar:FlameOfKeldDamageEvent:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card.RedSource | ValidTarget$ Permanent,Player | ReplaceWith$ DmgPlus2 | Description$ If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead. +SVar:DmgPlus2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X +SVar:X:ReplaceCount$DamageAmount/Plus.2 +SVar:RemRandomDeck:True +SVar:RemAIDeck:True +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Discard your hand.\nII — Draw two cards.\nIII — If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/upcoming/the_mirari_conjecture.txt b/forge-gui/res/cardsfolder/upcoming/the_mirari_conjecture.txt new file mode 100644 index 00000000000..d5bae279cbc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_mirari_conjecture.txt @@ -0,0 +1,10 @@ +Name:The Mirari Conjecture +ManaCost:4 U +Types:Enchantment Saga +K:Saga:3:DBChangeZoneI,DBChangeZoneII,DBEffect +SVar:DBChangeZoneI:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Instant.YouCtrl | SpellDescription$ Return target instant card from your graveyard to your hand. +SVar:DBChangeZoneII:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Sorcery.YouCtrl | SpellDescription$ Return target sorcery card from your graveyard to your hand. +SVar:DBEffect:DB$ Effect | Name$ The Mirari Conjecture Effect | Triggers$ InstantSorceryCast | SVars$ TrigCopySpell | SpellDescription$ Whenever you cast a creature spell this turn, draw a card. +SVar:InstantSorceryCast:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | Execute$ TrigCopySpell | TriggerZones$ Command | TriggerDescription$ Until end of turn, whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. +SVar:TrigCopySpell:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Return target instant card from your graveyard to your hand.\nII — Return target sorcery card from your graveyard to your hand.\nIII — Until end of turn, whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/upcoming/time_of_ice.txt b/forge-gui/res/cardsfolder/upcoming/time_of_ice.txt new file mode 100644 index 00000000000..63670ddeba1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/time_of_ice.txt @@ -0,0 +1,9 @@ +Name:Time of Ice +ManaCost:3 U +Types:Enchantment Saga +K:Saga:3:DBTap,DBTap,DBChangeZoneAll +SVar:DBTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | SubAbility$ DBPump | SpellDescription$ Tap target creature an opponent controls. It doesn't untap during its controller's untap step for as long as you control CARDNAME. +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN CARDNAME doesn't untap during your untap step. | UntilLoseControlOfHost$ True +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Creature.tapped | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return all tapped creatures to their owners' hands. +SVar:PlayMain1:TRUE +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Tap target creature an opponent controls. It doesn't untap during its controller's untap step for as long as you control Time of Ice.\nIII — Return all tapped creatures to their owners' hands. diff --git a/forge-gui/res/cardsfolder/upcoming/triumph_of_gerrard.txt b/forge-gui/res/cardsfolder/upcoming/triumph_of_gerrard.txt new file mode 100644 index 00000000000..81d93539f9c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/triumph_of_gerrard.txt @@ -0,0 +1,8 @@ +Name:Triumph of Gerrard +ManaCost:1 W +Types:Enchantment Saga +K:Saga:3:DBPutCounter,DBPutCounter,DBPump +SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature.greatestPowerControlledByYou | TgtPrompt$ Select target creature you control with the greatest power | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on target creature you control with the greatest power. +SVar:DBPump:DB$ Pump | ValidTgts$ Creature.greatestPowerControlledByYou | KW$ Flying & First Strike & Lifelink | TgtPrompt$ Select target creature you control with the greatest power | SpellDescription$ Target creature you control with the greatest power gains flying, first strike, and lifelink until end of turn. +SVar:PlayMain1:TRUE +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Put a +1/+1 counter on target creature you control with the greatest power.\nIII — Target creature you control with the greatest power gains flying, first strike, and lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/two_headed_giant.txt b/forge-gui/res/cardsfolder/upcoming/two_headed_giant.txt new file mode 100644 index 00000000000..f5100ae1c50 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/two_headed_giant.txt @@ -0,0 +1,9 @@ +Name:Two-Headed Giant +ManaCost:2 R R +Types:Creature Giant Warrior +PT:4/4 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DBFlip | TriggerDescription$ Whenever CARDNAME attacks, flip two coins. If both come up heads, Two-Headed Giant gains double strike until end of turn. If both come up tails, Two-Headed Giant gains menace until end of turn. +SVar:DBFlip:DB$ FlipACoin | Amount$ 2 | NoCall$ True | HeadsSubAbility$ DBHeadsPump | TailsSubAbility$ DBTailsPump +SVar:DBHeadsPump:DB$ Pump | Defined$ Self | KW$ Double Strike | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ2 +SVar:DBTailsPump:DB$ Pump | Defined$ Self | KW$ Menace | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ2 +Oracle:Whenever Two-Headed Giant attacks, flip two coins. If both come up heads, Two-Headed Giant gains double strike until end of turn. If both come up tails, Two-Headed Giant gains menace until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/unwind.txt b/forge-gui/res/cardsfolder/upcoming/unwind.txt new file mode 100644 index 00000000000..92cd64af8f3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unwind.txt @@ -0,0 +1,6 @@ +Name:Unwind +ManaCost:2 U +Types:Instant +A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | TgtPrompt$ Select target noncreature spell | ValidTgts$ Card.nonCreature | SubAbility$ DBUntap | SpellDescription$ Counter target noncreature spell. Untap up to three lands. +SVar:DBUntap:DB$ Untap | UntapUpTo$ True | UntapType$ Land | Amount$ 3 +Oracle:Counter target noncreature spell. Untap up to three lands. diff --git a/forge-gui/res/cardsfolder/upcoming/weatherlight.txt b/forge-gui/res/cardsfolder/upcoming/weatherlight.txt new file mode 100644 index 00000000000..88eac73e667 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/weatherlight.txt @@ -0,0 +1,9 @@ +Name:Weatherlight +ManaCost:4 +Types:Legendary Artifact Vehicle +PT:4/5 +K:Flying +K:Crew:3 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.) +SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Historic | RestRandomOrder$ True +Oracle:Flying\nWhenever Weatherlight deals combat damage to a player, look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.)\nCrew 3 diff --git a/forge-gui/res/cardsfolder/upcoming/yawgmoths_vile_offering.txt b/forge-gui/res/cardsfolder/upcoming/yawgmoths_vile_offering.txt new file mode 100644 index 00000000000..f16457bddba --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/yawgmoths_vile_offering.txt @@ -0,0 +1,7 @@ +Name:Yawgmoth's Vile Offering +ManaCost:4 B +Types:Legendary Sorcery +A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | ValidTgts$ Creature,Planeswalker | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Choose target creature or planeswalker card in a graveyard | SubAbility$ DBDestroy | SpellDescription$ Put up to one target creature or planeswalker card from a graveyard onto the battlefield under your control. Destroy up to one target creature or planeswalker. Exile CARDNAME. +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBExile +SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile +Oracle:(You may cast a legendary sorcery only if you control a legendary creature or planeswalker.)\nPut up to one target creature or planeswalker card from a graveyard onto the battlefield under your control. Destroy up to one target creature or planeswalker. Exile Yawgmoth's Vile Offering. diff --git a/forge-gui/res/cardsfolder/v/ventifact_bottle.txt b/forge-gui/res/cardsfolder/v/ventifact_bottle.txt index 452e305915a..7350b7e3cfe 100644 --- a/forge-gui/res/cardsfolder/v/ventifact_bottle.txt +++ b/forge-gui/res/cardsfolder/v/ventifact_bottle.txt @@ -2,7 +2,7 @@ Name:Ventifact Bottle ManaCost:3 Types:Artifact A:AB$ PutCounter | Cost$ X 1 T | CounterType$ CHARGE | CounterNum$ X | References$ X | SorcerySpeed$ True | SpellDescription$ Put X charge counters on Ventifact Bottle. Activate this ability only any time you could cast a sorcery. -T:Mode$ Phase | Phase$ Main1 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | CheckSVar$ Y | SVarCompare$ GE1 | TriggerDescription$ At the beginning of your precombat main phase, if CARDNAME has a charge counter on it, tap it and remove all charge counters from it. Add {C} to your mana pool for each charge counter removed this way. +T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | CheckSVar$ Y | SVarCompare$ GE1 | TriggerDescription$ At the beginning of your precombat main phase, if CARDNAME has a charge counter on it, tap it and remove all charge counters from it. Add {C} to your mana pool for each charge counter removed this way. SVar:TrigGetMana:DB$ Mana | Produced$ C | Amount$ Y | SubAbility$ TrigRemove SVar:TrigRemove:DB$ RemoveCounter | CounterType$ CHARGE | CounterNum$ Y | References$ Y | SubAbility$ DBTap SVar:DBTap:DB$ Tap | Defined$ Self