diff --git a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java index 2d64e10bced..0118d1faaec 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PlayAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PlayAi.java @@ -56,7 +56,7 @@ public class PlayAi extends SpellAbilityAi { } if (cards != null & sa.hasParam("ValidSA")) { - final String valid[] = {sa.getParam("ValidSA")}; + final String valid[] = sa.getParam("ValidSA").split(","); final Iterator itr = cards.iterator(); while (itr.hasNext()) { final Card c = itr.next(); diff --git a/forge-game/src/main/java/forge/game/CardTraitBase.java b/forge-game/src/main/java/forge/game/CardTraitBase.java index a44fcbcd107..a37c387d966 100644 --- a/forge-game/src/main/java/forge/game/CardTraitBase.java +++ b/forge-game/src/main/java/forge/game/CardTraitBase.java @@ -148,7 +148,6 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView, return getParamOrDefault("Secondary", "False").equals("True"); } - public final boolean isClassAbility() { return hasParam("ClassLevel"); } diff --git a/forge-game/src/main/java/forge/game/ForgeScript.java b/forge-game/src/main/java/forge/game/ForgeScript.java index 3fbe98a45bc..f3520952c2c 100644 --- a/forge-game/src/main/java/forge/game/ForgeScript.java +++ b/forge-game/src/main/java/forge/game/ForgeScript.java @@ -19,7 +19,6 @@ public class ForgeScript { public static boolean cardStateHasProperty(CardState cardState, String property, Player sourceController, Card source, CardTraitBase spellAbility) { - final boolean isColorlessSource = cardState.getCard().hasKeyword("Colorless Damage Source", cardState); final ColorSet colors = cardState.getCard().determineColor(cardState); if (property.contains("White") || property.contains("Blue") || property.contains("Black") @@ -123,7 +122,6 @@ public class ForgeScript { return Expressions.compare(y, property, x); } else return cardState.getTypeWithChanges().hasStringType(property); - } public static boolean spellAbilityHasProperty(SpellAbility sa, String property, Player sourceController, @@ -194,8 +192,7 @@ public class ForgeScript { // spell was on the stack if (sa.getCardState().getCard().isInZone(ZoneType.Stack)) { y = sa.getHostCard().getCMC(); - } - else { + } else { y = sa.getPayCosts().getTotalMana().getCMC(); } int x = AbilityUtils.calculateAmount(spellAbility.getHostCard(), property.substring(5), spellAbility); diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index c96fcad85b5..15f0c33dc24 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -805,7 +805,7 @@ public class Game { getTriggerHandler().clearDelayedTrigger(c); } else { // return stolen permanents - if ((c.getController().equals(p) || c.getZone().getPlayer().equals(p)) && c.isInZone(ZoneType.Battlefield)) { + if (c.isInZone(ZoneType.Battlefield) && (c.getController().equals(p) || c.getZone().getPlayer().equals(p))) { c.removeTempController(p); getAction().controllerChangeZoneCorrection(c); } diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index c78e34e62c7..63769e3c770 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -118,7 +118,7 @@ public final class GameActionUtil { continue; } // non basic are only allowed if PayManaCost is yes - if (!sa.isBasicSpell() && o.getPayManaCost() == PayManaCost.NO) { + if ((!sa.isBasicSpell() || (sa.costHasManaX() && !sa.getPayCosts().getCostMana().canXbe0())) && o.getPayManaCost() == PayManaCost.NO) { continue; } final Card host = o.getHost(); diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index a423a15b6c3..d156fec2e34 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -42,6 +42,7 @@ import forge.game.card.CardCollectionView; import forge.game.card.CardFactoryUtil; import forge.game.card.CardLists; import forge.game.card.CardPredicates; +import forge.game.card.CardState; import forge.game.card.CardUtil; import forge.game.card.CounterType; import forge.game.card.CardPredicates.Presets; @@ -56,6 +57,7 @@ import forge.game.player.Player; import forge.game.player.PlayerCollection; import forge.game.player.PlayerPredicates; import forge.game.spellability.AbilitySub; +import forge.game.spellability.LandAbility; import forge.game.spellability.OptionalCost; import forge.game.spellability.Spell; import forge.game.spellability.SpellAbility; @@ -2856,24 +2858,45 @@ public class AbilityUtils { public static final List getBasicSpellsFromPlayEffect(final Card tgtCard, final Player controller) { List sas = new ArrayList<>(); List list = Lists.newArrayList(tgtCard.getBasicSpells()); - if (tgtCard.isModal()) { - list.addAll(Lists.newArrayList(tgtCard.getBasicSpells(tgtCard.getState(CardStateName.Modal)))); + + CardState original = tgtCard.getState(CardStateName.Original); + if (tgtCard.isLand()) { + LandAbility la = new LandAbility(tgtCard, controller, null); + la.setCardState(original); + list.add(la); } + if (tgtCard.isModal()) { + CardState modal = tgtCard.getState(CardStateName.Modal); + list.addAll(Lists.newArrayList(tgtCard.getBasicSpells(modal))); + if (modal.getType().isLand()) { + LandAbility la = new LandAbility(tgtCard, controller, null); + la.setCardState(modal); + list.add(la); + } + } + for (SpellAbility s : list) { - final Spell newSA = (Spell) s.copy(); - newSA.setActivatingPlayer(controller); - SpellAbilityRestriction res = new SpellAbilityRestriction(); - // timing restrictions still apply - res.setPlayerTurn(s.getRestrictions().getPlayerTurn()); - res.setOpponentTurn(s.getRestrictions().getOpponentTurn()); - res.setPhases(s.getRestrictions().getPhases()); - res.setZone(null); - newSA.setRestrictions(res); - // timing restrictions still apply - if (res.checkTimingRestrictions(tgtCard, newSA) - // still need to check the other restrictions like Aftermath - && res.checkOtherRestrictions(tgtCard, newSA, controller)) { - sas.add(newSA); + if (s instanceof LandAbility) { + // CR 305.3 + if (controller.getGame().getPhaseHandler().isPlayerTurn(controller) && controller.canPlayLand(tgtCard, true, s)) { + sas.add(s); + } + } else { + final Spell newSA = (Spell) s.copy(); + newSA.setActivatingPlayer(controller); + SpellAbilityRestriction res = new SpellAbilityRestriction(); + // timing restrictions still apply + res.setPlayerTurn(s.getRestrictions().getPlayerTurn()); + res.setOpponentTurn(s.getRestrictions().getOpponentTurn()); + res.setPhases(s.getRestrictions().getPhases()); + res.setZone(null); + newSA.setRestrictions(res); + // timing restrictions still apply + if (res.checkTimingRestrictions(tgtCard, newSA) + // still need to check the other restrictions like Aftermath + && res.checkOtherRestrictions(tgtCard, newSA, controller)) { + sas.add(newSA); + } } } return sas; diff --git a/forge-game/src/main/java/forge/game/ability/SpellApiBased.java b/forge-game/src/main/java/forge/game/ability/SpellApiBased.java index d7903a2c502..113360ecef5 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellApiBased.java +++ b/forge-game/src/main/java/forge/game/ability/SpellApiBased.java @@ -11,7 +11,7 @@ import forge.game.spellability.TargetRestrictions; public class SpellApiBased extends Spell { private static final long serialVersionUID = -6741797239508483250L; private final SpellAbilityEffect effect; - + public SpellApiBased(ApiType api0, Card sourceCard, Cost abCost, TargetRestrictions tgt, Map params0) { super(sourceCard, abCost); this.setTargetRestrictions(tgt); diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java index 6171e2dcde2..b1115194ef4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java @@ -31,6 +31,7 @@ import forge.game.replacement.ReplacementEffect; import forge.game.replacement.ReplacementHandler; import forge.game.replacement.ReplacementLayer; import forge.game.spellability.AlternativeCost; +import forge.game.spellability.LandAbility; import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbilityPredicates; import forge.game.trigger.TriggerType; @@ -167,7 +168,7 @@ public class PlayEffect extends SpellAbilityEffect { } if (sa.hasParam("ValidSA")) { - final String valid[] = {sa.getParam("ValidSA")}; + final String valid[] = sa.getParam("ValidSA").split(","); Iterator it = tgtCards.iterator(); while (it.hasNext()) { Card c = it.next(); @@ -244,8 +245,8 @@ public class PlayEffect extends SpellAbilityEffect { tgtCards.remove(tgtCard); } - final Card original = tgtCard; if (sa.hasParam("CopyCard")) { + final Card original = tgtCard; final Zone zone = tgtCard.getZone(); tgtCard = Card.fromPaperCard(tgtCard.getPaperCard(), sa.getActivatingPlayer()); @@ -258,23 +259,10 @@ public class PlayEffect extends SpellAbilityEffect { } } - // lands will be played - if (tgtCard.isLand()) { - if (controller.playLand(tgtCard, true)) { - amount--; - if (remember) { - source.addRemembered(tgtCard); - } - } else { - tgtCards.remove(tgtCard); - } - continue; - } - // get basic spells (no flashback, etc.) List sas = AbilityUtils.getBasicSpellsFromPlayEffect(tgtCard, controller); if (sa.hasParam("ValidSA")) { - final String valid[] = {sa.getParam("ValidSA")}; + final String valid[] = sa.getParam("ValidSA").split(","); sas = Lists.newArrayList(Iterables.filter(sas, SpellAbilityPredicates.isValid(valid, controller , source, sa))); } if (hasTotalCMCLimit) { @@ -290,11 +278,6 @@ public class PlayEffect extends SpellAbilityEffect { continue; } - // play copied cards with linked abilities, e.g. Elite Arcanist - if (sa.hasParam("CopyOnce")) { - tgtCards.remove(original); - } - SpellAbility tgtSA; if (!sa.hasParam("CastFaceDown")) { @@ -313,8 +296,22 @@ public class PlayEffect extends SpellAbilityEffect { continue; } + // lands will be played + if (tgtSA instanceof LandAbility) { + tgtSA.resolve(); + amount--; + if (remember) { + source.addRemembered(tgtCard); + } + continue; + } + final int tgtCMC = tgtSA.getPayCosts().getTotalMana().getCMC(); + // illegal action, cancel early + if ((sa.hasParam("WithoutManaCost") || sa.hasParam("PlayCost")) && tgtSA.costHasManaX() && !tgtSA.getPayCosts().getCostMana().canXbe0()) { + continue; + } if (sa.hasParam("WithoutManaCost")) { tgtSA = tgtSA.copyWithNoManaCost(); } else if (sa.hasParam("PlayCost")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlayLandVariantEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlayLandVariantEffect.java index d777629802e..c82b353a5a0 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlayLandVariantEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlayLandVariantEffect.java @@ -12,16 +12,12 @@ import forge.card.CardRulesPredicates; import forge.card.ColorSet; import forge.card.MagicColor; import forge.game.Game; -import forge.game.ability.AbilityKey; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardFactory; import forge.game.card.CardUtil; -import forge.game.event.GameEventLandPlayed; import forge.game.player.Player; import forge.game.spellability.SpellAbility; -import forge.game.trigger.TriggerType; -import forge.game.zone.ZoneType; import forge.item.PaperCard; import forge.util.Aggregates; @@ -60,28 +56,18 @@ public class PlayLandVariantEffect extends SpellAbilityEffect { }, PaperCard.FN_GET_NAME); cards = Lists.newArrayList(Iterables.filter(cards, cp)); // get a random basic land - PaperCard ran = Aggregates.random(cards); - Card random = CardFactory.getCard(ran, activator, source.getGame()); + Card random; // if activator cannot play the random land, loop - while (!activator.canPlayLand(random, false) && !cards.isEmpty()) { - cards.remove(ran); + do { if (cards.isEmpty()) return; - ran = Aggregates.random(cards); + PaperCard ran = Aggregates.random(cards); random = CardFactory.getCard(ran, activator, game); - } + cards.remove(ran); + } while (!activator.canPlayLand(random, false)); source.addCloneState(CardFactory.getCloneStates(random, source, sa), game.getNextTimestamp()); source.updateStateForView(); - source.setController(activator, 0); - game.getAction().moveTo(activator.getZone(ZoneType.Battlefield), source, sa); - - // play a sound - game.fireEvent(new GameEventLandPlayed(activator, source)); - - // Run triggers - game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, AbilityKey.mapFromCard(source), false); - game.getStack().unfreezeStack(); - activator.addLandPlayedThisTurn(); + activator.playLandNoCheck(source, sa); } } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 0e219e8ee56..96e3bd91b87 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1695,8 +1695,7 @@ public class Player extends GameEntity implements Comparable { for (int i = 0; i < max; i++) { if (bottom) { milled.add(lib.get(lib.size() - i - 1)); - } - else { + } else { milled.add(lib.get(i)); } } @@ -1758,7 +1757,7 @@ public class Player extends GameEntity implements Comparable { public final boolean playLand(final Card land, final boolean ignoreZoneAndTiming) { // Dakkon Blackblade Avatar will use a similar effect if (canPlayLand(land, ignoreZoneAndTiming)) { - playLandNoCheck(land); + playLandNoCheck(land, null); return true; } @@ -1766,13 +1765,13 @@ public class Player extends GameEntity implements Comparable { return false; } - public final Card playLandNoCheck(final Card land) { + public final Card playLandNoCheck(final Card land, SpellAbility cause) { land.setController(this, 0); if (land.isFaceDown()) { land.turnFaceUp(null); } game.copyLastState(); - final Card c = game.getAction().moveTo(getZone(ZoneType.Battlefield), land, null); + final Card c = game.getAction().moveTo(getZone(ZoneType.Battlefield), land, cause); game.updateLastStateForCard(c); // play a sound diff --git a/forge-game/src/main/java/forge/game/spellability/LandAbility.java b/forge-game/src/main/java/forge/game/spellability/LandAbility.java index 5def083a3b1..507543b155d 100644 --- a/forge-game/src/main/java/forge/game/spellability/LandAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/LandAbility.java @@ -71,7 +71,7 @@ public class LandAbility extends Ability { @Override public void resolve() { getHostCard().setSplitStateToPlayAbility(this); - final Card result = getActivatingPlayer().playLandNoCheck(getHostCard()); + final Card result = getActivatingPlayer().playLandNoCheck(getHostCard(), null); // increase mayplay used if (getMayPlay() != null) { diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 6cdbd1b324d..5ef07d08712 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -1116,7 +1116,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } public SpellAbility copyWithManaCostReplaced(Player active, Cost abCost) { - final SpellAbility newSA = copy(active); if (newSA == null) { return null; // the ability was not copyable, e.g. a Suspend SA may get here @@ -1995,6 +1994,16 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit return false; } } + else if (incR[0].equals("Instant")) { + if (!root.getCardState().getType().isInstant()) { + return false; + } + } + else if (incR[0].equals("Sorcery")) { + if (!root.getCardState().getType().isSorcery()) { + return false; + } + } else if (incR[0].equals("Triggered")) { if (!root.isTrigger()) { return false; diff --git a/forge-gui/res/cardsfolder/a/arcane_endeavor.txt b/forge-gui/res/cardsfolder/a/arcane_endeavor.txt index f3878fdaa65..ad0ac8e8d39 100644 --- a/forge-gui/res/cardsfolder/a/arcane_endeavor.txt +++ b/forge-gui/res/cardsfolder/a/arcane_endeavor.txt @@ -3,5 +3,5 @@ ManaCost:5 U U Types:Sorcery A:SP$ RollDice | Amount$ 2 | Sides$ 8 | ChosenSVar$ X | OtherSVar$ Y | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Roll two d8 and choose one result. Draw cards equal to that result. Then you may cast an instant or sorcery spell with mana value less than or equal to the other result from your hand without paying its mana cost. SVar:DBDraw:DB$ Draw | NumCards$ X | SubAbility$ DBPlay | StackDescription$ None -SVar:DBPlay:DB$ Play | Valid$ Instant,Sorcery | ValidSA$ Spell.cmcLEY | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Controller$ You | Optional$ True +SVar:DBPlay:DB$ Play | Valid$ Card | ValidSA$ Instant.cmcLEY,Sorcery.cmcLEY | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Controller$ You | Optional$ True Oracle:Roll two d8 and choose one result. Draw cards equal to that result. Then you may cast an instant or sorcery spell with mana value less than or equal to the other result from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/a/arcane_savant.txt b/forge-gui/res/cardsfolder/a/arcane_savant.txt index a1090e829b2..6a29a3fcfdb 100644 --- a/forge-gui/res/cardsfolder/a/arcane_savant.txt +++ b/forge-gui/res/cardsfolder/a/arcane_savant.txt @@ -8,6 +8,6 @@ SVar:DBExile:DB$ ChangeZone | Origin$ Sideboard | Destination$ Exile | ChangeTyp SVar:DBPump:DB$ Pump | NoteCards$ Remembered | NoteCardsFor$ ArcaneSavant | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ When CARDNAME enters the battlefield, copy a card you exiled with cards named Arcane Savant. You may cast the copy without paying its mana cost. -SVar:TrigPlay:DB$ Play | Valid$ Card.YouOwn+NotedForArcaneSavant | ValidZone$ Exile | Amount$ 1 | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. | SubAbility$ DBCleanup +SVar:TrigPlay:DB$ Play | Valid$ Card.YouOwn+NotedForArcaneSavant | ValidSA$ Spell | ValidZone$ Exile | Amount$ 1 | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. | SubAbility$ DBCleanup SVar:Picture:https://img.scryfall.com/cards/large/en/cn2/27.jpg?1517813031 Oracle:Before you shuffle your deck to start the game, you may reveal this card from your deck and exile an instant or sorcery card you drafted that isn't in your deck.\nWhen Arcane Savant enters the battlefield, copy a card you exiled with cards named Arcane Savant. You may cast the copy without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/a/ashiok_nightmare_muse.txt b/forge-gui/res/cardsfolder/a/ashiok_nightmare_muse.txt index f4e6a268410..4019d71b665 100644 --- a/forge-gui/res/cardsfolder/a/ashiok_nightmare_muse.txt +++ b/forge-gui/res/cardsfolder/a/ashiok_nightmare_muse.txt @@ -5,6 +5,6 @@ Loyalty:5 A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ ub_2_3_nightmare_mill | TokenOwner$ You | LegacyImage$ ub 2 3 Nightmare mill thb | SpellDescription$ Create a 2/3 blue and black Nightmare creature token with "Whenever this creature attacks or blocks, each opponent exiles the top two cards of their library." A:AB$ ChangeZone | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBExile | SpellDescription$ Return target nonland permanent to its owner's hand, then that player exiles a card from their hand. SVar:DBExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | DefinedPlayer$ TargetedOwner | Chooser$ TargetedOwner -A:AB$ Play | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Valid$ Card.nonLand+faceUp+OwnedBy Player.Opponent | ValidZone$ Exile | WithoutManaCost$ True | Amount$ 3 | Optional$ True | SpellDescription$ You may cast up to three spells from among face-up cards your opponents own from exile without paying their mana costs. +A:AB$ Play | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Valid$ Card.faceUp+OwnedBy Player.Opponent | ValidSA$ Spell | ValidZone$ Exile | WithoutManaCost$ True | Amount$ 3 | Optional$ True | SpellDescription$ You may cast up to three spells from among face-up cards your opponents own from exile without paying their mana costs. DeckHas:Ability$Token Oracle:[+1]: Create a 2/3 blue and black Nightmare creature token with "Whenever this creature attacks or blocks, each opponent exiles the top two cards of their library."\n[−3]: Return target nonland permanent to its owner's hand, then that player exiles a card from their hand.\n[−7]: You may cast up to three spells from among face-up cards your opponents own from exile without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/b/brain_in_a_jar.txt b/forge-gui/res/cardsfolder/b/brain_in_a_jar.txt index 4912f2ea776..87c6263d035 100644 --- a/forge-gui/res/cardsfolder/b/brain_in_a_jar.txt +++ b/forge-gui/res/cardsfolder/b/brain_in_a_jar.txt @@ -1,8 +1,8 @@ Name:Brain in a Jar ManaCost:2 Types:Artifact -A:AB$ PutCounter | Cost$ 1 T | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBCast | SpellDescription$ Put a charge counter on Brain in a Jar, then you may cast an instant or sorcery card with mana value equal to the number of charge counters on Brain in a Jar from your hand without paying its mana cost. -SVar:DBCast:DB$ Play | ValidZone$ Hand | Valid$ Instant.YouOwn,Sorcery.YouOwn| ValidSA$ Spell.cmcEQY | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 +A:AB$ PutCounter | Cost$ 1 T | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBCast | SpellDescription$ Put a charge counter on Brain in a Jar, then you may cast an instant or sorcery spell with mana value equal to the number of charge counters on Brain in a Jar from your hand without paying its mana cost. +SVar:DBCast:DB$ Play | ValidZone$ Hand | Valid$ Card | ValidSA$ Instant.cmcEQY,Sorcery.cmcEQY | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 A:AB$ Scry | Cost$ 3 T SubCounter | ScryNum$ X | AILogic$ BrainJar | SpellDescription$ Scry X. SVar:X:Count$xPaid SVar:Y:Count$CardCounters.CHARGE diff --git a/forge-gui/res/cardsfolder/b/bring_to_light.txt b/forge-gui/res/cardsfolder/b/bring_to_light.txt index aaa123d8719..130aa518ac9 100644 --- a/forge-gui/res/cardsfolder/b/bring_to_light.txt +++ b/forge-gui/res/cardsfolder/b/bring_to_light.txt @@ -2,7 +2,7 @@ Name:Bring to Light ManaCost:3 G U Types:Sorcery A:SP$ ChangeZone | Cost$ 3 G U | Origin$ Library | Destination$ Exile | ChangeType$ Creature.cmcLEX,Instant.cmcLEX,Sorcery.cmcLEX | ChangeNum$ 1 | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Converge — Search your library for a creature, instant, or sorcery card with mana value less than or equal to the number of colors of mana spent to cast this spell, exile that card, then shuffle. You may cast that card without paying its mana cost. -SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$Converge AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/c/chandra_acolyte_of_flame.txt b/forge-gui/res/cardsfolder/c/chandra_acolyte_of_flame.txt index b52cd83b1ea..03de34e6d1a 100644 --- a/forge-gui/res/cardsfolder/c/chandra_acolyte_of_flame.txt +++ b/forge-gui/res/cardsfolder/c/chandra_acolyte_of_flame.txt @@ -6,8 +6,7 @@ A:AB$ PutCounterAll | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | ValidCa A:AB$ Token | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | TokenAmount$ 2 | TokenScript$ r_1_1_elemental | TokenOwner$ You | LegacyImage$ r 1 1 elemental m20 | AtEOT$ Sacrifice | RememberTokens$ True | SubAbility$ DBPump | SpellDescription$ Create two 1/1 red Elemental creature tokens. They gain haste. Sacrifice them at the beginning of the next end step. SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | Duration$ Permanent | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -A:AB$ Effect | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | AILogic$ CastFromGraveThisTurn | ValidTgts$ Instant.YouCtrl+cmcLE3,Sorcery.YouCtrl+cmcLE3 | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card with mana cost 3 or less | RememberObjects$ Targeted | StaticAbilities$ Play | ExileOnMoved$ Graveyard | SubAbility$ DBEffect | SpellDescription$ You may cast target instant or sorcery card with mana cost 3 or less from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead. -SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play remembered card. +A:AB$ Play | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Instant.YouCtrl+cmcLE3,Sorcery.YouCtrl+cmcLE3 | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card with mana cost 3 or less | AILogic$ ReplaySpell | ValidSA$ Spell | Optional$ True | ExileOnMoved$ Graveyard | SubAbility$ DBEffect | SpellDescription$ You may cast target instant or sorcery card with mana cost 3 or less from your graveyard. If that card would be put into your graveyard this turn, exile it instead. SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | ExileOnMoved$ Stack | ReplacementEffects$ ReplaceGraveyard SVar:ReplaceGraveyard:Event$ Moved | ValidCard$ Card.IsRemembered | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ MoveExile | Description$ If that card would be put into your graveyard this turn, exile it instead. SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile diff --git a/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt b/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt index 6e6952ed53c..9da45538f69 100644 --- a/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt +++ b/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt @@ -12,6 +12,6 @@ SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Car SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True A:AB$ Dig | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ You | DigNum$ 10 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBChoose | SpellDescription$ Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs. SVar:DBChoose:DB$ ChooseCard | Choices$ Instant.IsRemembered,Sorcery.IsRemembered | Mandatory$ True | ChoiceZone$ Exile | Defined$ You | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ ChosenCard | WithoutManaCost$ True | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Defined$ ChosenCard | ValidSA$ Spell | WithoutManaCost$ True | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | SubAbility$ DBCleanup AI:RemoveDeck:All Oracle:[+1]: Chandra, Pyromaster deals 1 damage to target player or planeswalker and 1 damage to up to one target creature that player or that planeswalker's controller controls. That creature can't block this turn.\n[0]: Exile the top card of your library. You may play it this turn.\n[−7]: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/c/chandra_torch_of_defiance.txt b/forge-gui/res/cardsfolder/c/chandra_torch_of_defiance.txt index 8c0045f721a..7990a4ef907 100644 --- a/forge-gui/res/cardsfolder/c/chandra_torch_of_defiance.txt +++ b/forge-gui/res/cardsfolder/c/chandra_torch_of_defiance.txt @@ -3,7 +3,7 @@ ManaCost:2 R R Types:Legendary Planeswalker Chandra Loyalty:4 A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | Imprint$ True | SubAbility$ DBPlay | AILogic$ ExileAndPlayOrDealDamage | SpellDescription$ Exile the top card of your library. You may cast that card. If you don't, Chandra, Torch of Defiance deals 2 damage to each opponent. -SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsImprinted | ValidZone$ Exile | Controller$ You | Optional$ True | Amount$ All | RememberPlayed$ True | ShowCardToActivator$ True | SubAbility$ DBDamage +SVar:DBPlay:DB$ Play | Valid$ Card.IsImprinted | ValidSA$ Spell | ValidZone$ Exile | Controller$ You | Optional$ True | Amount$ All | RememberPlayed$ True | ShowCardToActivator$ True | SubAbility$ DBDamage SVar:DBDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True A:AB$ Mana | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ 2 | AILogic$ ManaRitual | AINoRecursiveCheck$ True | SpellDescription$ Add {R}{R}. diff --git a/forge-gui/res/cardsfolder/c/chaos_wand.txt b/forge-gui/res/cardsfolder/c/chaos_wand.txt index 7b73de39801..a15fd661fd8 100644 --- a/forge-gui/res/cardsfolder/c/chaos_wand.txt +++ b/forge-gui/res/cardsfolder/c/chaos_wand.txt @@ -2,7 +2,7 @@ Name:Chaos Wand ManaCost:3 Types:Artifact A:AB$ DigUntil | Cost$ 4 T | ValidTgts$ Opponent | Valid$ Instant,Sorcery | ValidDescription$ instant or sorcery | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | RememberRevealed$ True | IsCurse$ True | SubAbility$ DBPlay | SpellDescription$ Target opponent exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then put the exiled cards that weren't cast this way on the bottom of that library in a random order. -SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/chaos_wand.jpg diff --git a/forge-gui/res/cardsfolder/c/counterlash.txt b/forge-gui/res/cardsfolder/c/counterlash.txt index d8234ef7eb0..ee61de68f9b 100644 --- a/forge-gui/res/cardsfolder/c/counterlash.txt +++ b/forge-gui/res/cardsfolder/c/counterlash.txt @@ -2,6 +2,6 @@ Name:Counterlash ManaCost:4 U U Types:Instant A:SP$ Counter | Cost$ 4 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SubAbility$ DBPlay | SpellDescription$ Counter target spell. You may cast a spell that shares a card type with it from your hand without paying its mana cost. -SVar:DBPlay:DB$ Play | Valid$ Targeted.sharesCardTypeWith+nonLand+YouCtrl | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True +SVar:DBPlay:DB$ Play | Valid$ Targeted.sharesCardTypeWith+YouCtrl | ValidSA$ Spell | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/counterlash.jpg Oracle:Counter target spell. You may cast a spell that shares a card type with it from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/c/creative_technique.txt b/forge-gui/res/cardsfolder/c/creative_technique.txt index d2439a203e6..fbeed958919 100644 --- a/forge-gui/res/cardsfolder/c/creative_technique.txt +++ b/forge-gui/res/cardsfolder/c/creative_technique.txt @@ -4,5 +4,5 @@ Types:Sorcery K:Demonstrate A:SP$ Shuffle | SubAbility$ DBDigUntil | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library, SVar:DBDigUntil:DB$ DigUntil | Defined$ You | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | RememberFound$ True | SubAbility$ DBPlay | StackDescription$ then reveals cards from the top of it until they reveal a nonland card. {p:You} exiles that card and puts the rest on the bottom of their library in a random order. | SpellDescription$ then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order. -SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | StackDescription$ {p:You} may cast the exiled card without paying its mana cost. | SpellDescription$ You may cast the exiled card without paying its mana cost. +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | StackDescription$ {p:You} may cast the exiled card without paying its mana cost. | SpellDescription$ You may cast the exiled card without paying its mana cost. Oracle:Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it.)\nShuffle your library, then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order. You may cast the exiled card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/d/dazzling_sphinx.txt b/forge-gui/res/cardsfolder/d/dazzling_sphinx.txt index 4614318c816..82db6135f90 100644 --- a/forge-gui/res/cardsfolder/d/dazzling_sphinx.txt +++ b/forge-gui/res/cardsfolder/d/dazzling_sphinx.txt @@ -5,7 +5,7 @@ PT:4/5 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDigUntil | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order. SVar:TrigDigUntil:DB$ DigUntil | Defined$ TriggeredTarget | Valid$ Instant,Sorcery | ValidDescription$ instant or sorcery | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | RememberRevealed$ True | IsCurse$ True | SubAbility$ DBPlay | SpellDescription$ Whenever CARDNAME deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order. -SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Flying\nWhenever Dazzling Sphinx deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order. diff --git a/forge-gui/res/cardsfolder/d/demilich.txt b/forge-gui/res/cardsfolder/d/demilich.txt index 3fe814a67d4..0cef9c95464 100644 --- a/forge-gui/res/cardsfolder/d/demilich.txt +++ b/forge-gui/res/cardsfolder/d/demilich.txt @@ -4,8 +4,8 @@ Types:Creature Skeleton Wizard PT:4/3 S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Color$ U | Amount$ X | EffectZone$ All | Description$ This spell costs {U} less to cast for each instant and sorcery spell you've cast this turn. T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, exile up to one target instant or sorcery card from your graveyard. Copy it. You may cast the copy. -SVar:TrigExile:DB$ChangeZone | TargetMin$ 0 | TargetMax$ 1 | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose up to one target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | RememberChanged$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ Remembered | CopyOnce$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup +SVar:TrigExile:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 1 | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose up to one target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | RememberChanged$ True | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AltCost:Cost$ U U U U ExileFromGrave<4/Instant;Sorcery/instant or sorcery cards> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by exiling four instant and/or sorcery cards from your graveyard in addition to paying its other costs. SVar:X:Count$ThisTurnCast_Instant.YouCtrl,Sorcery.YouCtrl diff --git a/forge-gui/res/cardsfolder/d/descendants_path.txt b/forge-gui/res/cardsfolder/d/descendants_path.txt index 1794e16c612..2cd2cad1228 100644 --- a/forge-gui/res/cardsfolder/d/descendants_path.txt +++ b/forge-gui/res/cardsfolder/d/descendants_path.txt @@ -3,7 +3,7 @@ ManaCost:2 G Types:Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBReveal | TriggerDescription$ At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast it without paying its mana cost. If you don't cast it, put it on the bottom of your library. SVar:DBReveal:DB$ PeekAndReveal | PeekAmount$ 1 | RevealValid$ Card | RememberRevealed$ True | SubAbility$ DBMayCast -SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature.sharesCreatureTypeWith Valid Creature.YouCtrl | SubAbility$ DBChangeZone +SVar:DBMayCast:DB$ Play | Defined$ Remembered | ValidSA$ Spell | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature.sharesCreatureTypeWith Valid Creature.YouCtrl | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | Shuffle$ False | ForgetChanged$ True AI:RemoveDeck:Random Oracle:At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast it without paying its mana cost. If you don't cast it, put it on the bottom of your library. diff --git a/forge-gui/res/cardsfolder/d/diluvian_primordial.txt b/forge-gui/res/cardsfolder/d/diluvian_primordial.txt index 2dc03cb5a08..bf480841750 100644 --- a/forge-gui/res/cardsfolder/d/diluvian_primordial.txt +++ b/forge-gui/res/cardsfolder/d/diluvian_primordial.txt @@ -4,7 +4,7 @@ Types:Creature Avatar PT:5/5 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ CastEach | TriggerDescription$ When CARDNAME enters the battlefield, for each opponent, you may cast up to one target instant or sorcery card from that player's graveyard without paying its mana cost. If a spell cast this way would be put into a graveyard this turn, exile it instead. -SVar:CastEach:DB$ Play | ValidTgts$ Instant.OppCtrl,Sorcery.OppCtrl | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card in each opponent's graveyard | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | Amount$ All | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:CastEach:DB$ Play | ValidTgts$ Instant.OppCtrl,Sorcery.OppCtrl | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card in each opponent's graveyard | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | Amount$ All | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:OneEach:PlayerCountOpponents$Amount SVar:Picture:http://www.wizards.com/global/images/magic/general/diluvian_primordial.jpg Oracle:Flying\nWhen Diluvian Primordial enters the battlefield, for each opponent, you may cast up to one target instant or sorcery card from that player's graveyard without paying its mana cost. If a spell cast this way would be put into a graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/d/dreadhorde_arcanist.txt b/forge-gui/res/cardsfolder/d/dreadhorde_arcanist.txt index f62b5d35aa0..fea98418d06 100644 --- a/forge-gui/res/cardsfolder/d/dreadhorde_arcanist.txt +++ b/forge-gui/res/cardsfolder/d/dreadhorde_arcanist.txt @@ -4,6 +4,6 @@ Types:Creature Zombie Wizard PT:1/3 K:Trample T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ Whenever CARDNAME attacks, you may cast target instant or sorcery card with mana value less than or equal to CARDNAME's power from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+cmcLEX,Sorcery.YouCtrl+cmcLEX | TgtPrompt$ Choose target instant or sorcery card with mana value X or less from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+cmcLEX,Sorcery.YouCtrl+cmcLEX | TgtPrompt$ Choose target instant or sorcery card with mana value X or less from your graveyard | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:X:Count$CardPower Oracle:Trample\nWhenever Dreadhorde Arcanist attacks, you may cast target instant or sorcery card with mana value less than or equal to Dreadhorde Arcanist's power from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/d/dungeon_of_the_mad_mage.txt b/forge-gui/res/cardsfolder/d/dungeon_of_the_mad_mage.txt index a12ad7f5047..6d1c9823d65 100644 --- a/forge-gui/res/cardsfolder/d/dungeon_of_the_mad_mage.txt +++ b/forge-gui/res/cardsfolder/d/dungeon_of_the_mad_mage.txt @@ -14,5 +14,5 @@ SVar:DBGraveyard:DB$ Token | TokenScript$ b_1_1_skeleton | TokenOwner$ You | Tok SVar:DBMines:DB$ Scry | ScryNum$ 3 | RoomName$ Deep Mines | SpellDescription$ Scry 3. | NextRoom$ DBLair SVar:DBLair:DB$ Draw | Defined$ You | NumCards$ 3 | RememberDrawn$ True | SubAbility$ DBReveal | RoomName$ Mad Wizard's Lair | SpellDescription$ Draw three cards and reveal them. You may cast one of them without paying its mana cost. SVar:DBReveal:DB$ Reveal | Defined$ You | RevealDefined$ Remembered | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ Remembered.nonLand | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup Oracle:Yawning Portal — You gain 1 life. (→ Dungeon Level)\nDungeon Level — Scry 1. (→ Goblin Bazaar or Twisted Caverns)\nGoblin Bazaar — Create a Treasure token. (→ Lost Level)\nTwisted Caverns — Target creature can't attack until your next turn. (→ Lost Level)\nLost Level — Scry 2. (→ Runestone Caverns or Muiral's Graveyard)\nRunestone Caverns — Exile the top two cards of your library. You may play them. (→ Deep Mines)\nMuiral's Graveyard — Create two 1/1 black Skeleton creature tokens. (→ Deep Mines)\nDeep Mines — Scry 3. (→ Mad Wizard's Lair)\nMad Wizard's Lair — Draw three cards and reveal them. You may cast one of them without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/e/efreet_flamepainter.txt b/forge-gui/res/cardsfolder/e/efreet_flamepainter.txt index 98779a30d7c..428e8ca1ad9 100644 --- a/forge-gui/res/cardsfolder/e/efreet_flamepainter.txt +++ b/forge-gui/res/cardsfolder/e/efreet_flamepainter.txt @@ -4,5 +4,5 @@ Types:Creature Efreet Shaman PT:1/4 K:Double Strike T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPlay | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may cast target instant or sorcery card from your graveyard without paying its mana cost. If that spell would be put into your graveyard, exile it instead. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtPrompt$ Choose target instant or sorcery card from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtPrompt$ Choose target instant or sorcery card from your graveyard | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell Oracle:Double strike\nWhenever Efreet Flamepainter deals combat damage to a player, you may cast target instant or sorcery card from your graveyard without paying its mana cost. If that spell would be put into your graveyard, exile it instead. diff --git a/forge-gui/res/cardsfolder/e/elite_arcanist.txt b/forge-gui/res/cardsfolder/e/elite_arcanist.txt index bf98a43f04c..068c2b4862f 100644 --- a/forge-gui/res/cardsfolder/e/elite_arcanist.txt +++ b/forge-gui/res/cardsfolder/e/elite_arcanist.txt @@ -4,7 +4,7 @@ Types:Creature Human Wizard PT:1/1 T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, you may exile an instant card from your hand. SVar:TrigExile:DB$ ChangeZone | RememberChanged$ True | Origin$ Hand | Destination$ Exile | ChangeType$ Instant | ChangeNum$ 1 -A:AB$ Play | Cost$ X T | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ Copy the exiled card. You may cast the copy without paying its mana cost. X is the mana value of the exiled card. +A:AB$ Play | Cost$ X T | Valid$ Card.IsRemembered+ExiledWithSource | ValidSA$ Spell | ValidZone$ Exile | Amount$ All | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ Copy the exiled card. You may cast the copy without paying its mana cost. X is the mana value of the exiled card. SVar:X:Remembered$CardManaCost T:Mode$ ChangesZone | ValidCard$ Card.IsRemembered+ExiledWithSource | Origin$ Exile | Destination$ Any | Execute$ ForgetCard | Static$ True SVar:ForgetCard:DB$ Cleanup | ForgetDefined$ TriggeredCard diff --git a/forge-gui/res/cardsfolder/e/emergent_ultimatum.txt b/forge-gui/res/cardsfolder/e/emergent_ultimatum.txt index 3b6acb5ad6f..c9d699b568b 100755 --- a/forge-gui/res/cardsfolder/e/emergent_ultimatum.txt +++ b/forge-gui/res/cardsfolder/e/emergent_ultimatum.txt @@ -4,7 +4,7 @@ Types:Sorcery A:SP$ ChangeZone | Cost$ B B G G G U U | Origin$ Library | Hidden$ True | ChangeNum$ 3 | ChangeType$ Card.MonoColor | DifferentNames$ True | Destination$ Exile | RememberChanged$ True | SubAbility$ DBChooseCard | Shuffle$ False | StackDescription$ SpellDescription | SpellDescription$ Search your library for up to three monocolored cards with different names and exile them. An opponent chooses one of those cards. Shuffle that card into your library. You may cast the other cards without paying their mana costs. Exile CARDNAME. SVar:DBChooseCard:DB$ ChooseCard | Defined$ Opponent | Choices$ Card.IsRemembered | Amount$ 1 | Mandatory$ True | ChoiceTitle$ Choose a card to shuffle back into the library | ChoiceZone$ Exile | AILogic$ BestCard | SubAbility$ DBShuffle | StackDescription$ None SVar:DBShuffle:DB$ ChangeZone | Origin$ Exile | Destination$ Library | Defined$ ChosenCard | ForgetChanged$ True | Shuffle$ True | SubAbility$ DBCast | StackDescription$ None -SVar:DBCast:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBExileSelf | StackDescription$ None +SVar:DBCast:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBExileSelf | StackDescription$ None SVar:DBExileSelf:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True Oracle:Search your library for up to three monocolored cards with different names and exile them. An opponent chooses one of those cards. Shuffle that card into your library. You may cast the other cards without paying their mana costs. Exile Emergent Ultimatum. diff --git a/forge-gui/res/cardsfolder/e/epic_experiment.txt b/forge-gui/res/cardsfolder/e/epic_experiment.txt index b00af39347a..a7a6436bd99 100644 --- a/forge-gui/res/cardsfolder/e/epic_experiment.txt +++ b/forge-gui/res/cardsfolder/e/epic_experiment.txt @@ -2,7 +2,7 @@ Name:Epic Experiment ManaCost:X U R Types:Sorcery A:SP$ Dig | Cost$ X U R | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Exile the top X cards of your library. You may cast instant and sorcery spells with mana value X or less from among them without paying their mana costs. Then put all cards exiled this way that weren't cast into your graveyard. -SVar:DBPlay:DB$ Play | Valid$ Instant.cmcLEX+IsRemembered+YouOwn,Sorcery.cmcLEX+IsRemembered+YouOwn | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBGrave +SVar:DBPlay:DB$ Play | Valid$ Instant.cmcLEX+IsRemembered+YouOwn,Sorcery.cmcLEX+IsRemembered+YouOwn | ValidZone$ Exile | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBGrave SVar:DBGrave:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Graveyard | ChangeType$ Card.IsRemembered+YouOwn | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid diff --git a/forge-gui/res/cardsfolder/e/etali_primal_storm.txt b/forge-gui/res/cardsfolder/e/etali_primal_storm.txt index 78e3d562e4f..2eccc7eb5b3 100644 --- a/forge-gui/res/cardsfolder/e/etali_primal_storm.txt +++ b/forge-gui/res/cardsfolder/e/etali_primal_storm.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Elder Dinosaur PT:6/6 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, exile the top card of each player's library, then you may cast any number of spells from among those cards without paying their mana costs. SVar:TrigExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | Defined$ Player | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsRemembered | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:HasAttackEffect:TRUE Oracle:Whenever Etali, Primal Storm attacks, exile the top card of each player's library, then you may cast any number of spells from among those cards without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/e/extract_brain.txt b/forge-gui/res/cardsfolder/e/extract_brain.txt index a59b990cb28..e31f78411f0 100644 --- a/forge-gui/res/cardsfolder/e/extract_brain.txt +++ b/forge-gui/res/cardsfolder/e/extract_brain.txt @@ -1,9 +1,8 @@ Name:Extract Brain ManaCost:X U B Types:Sorcery -A:SP$ Reveal | Cost$ X U B | ValidTgts$ Opponent | IsCurse$ True | NumCards$ X | RememberRevealed$ True | SubAbility$ PickOne |StackDescription$ {p:Targeted} chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. | SpellDescription$ Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. -SVar:PickOne:DB$ ChooseCard | Defined$ You | Amount$ 1 | ChoiceTitle$ Choose card to cast | Choices$ Card.IsRemembered | ChoiceZone$ Hand | SubAbility$ PlayChosen | StackDescription$ None -SVar:PlayChosen:DB$ Play | Defined$ ChosenCard | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True +A:SP$ Reveal | Cost$ X U B | ValidTgts$ Opponent | IsCurse$ True | NumCards$ X | RememberRevealed$ True | SubAbility$ PlayChosen | StackDescription$ {p:Targeted} chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. | SpellDescription$ Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. +SVar:PlayChosen:DB$ Play | ValidZone$ Hand | Valid$ Card.IsRemembered | Controller$ You | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid Oracle:Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/e/eye_of_the_storm.txt b/forge-gui/res/cardsfolder/e/eye_of_the_storm.txt index 5a0da573b30..cd92e8072ed 100644 --- a/forge-gui/res/cardsfolder/e/eye_of_the_storm.txt +++ b/forge-gui/res/cardsfolder/e/eye_of_the_storm.txt @@ -4,7 +4,7 @@ Types:Enchantment T:Mode$ SpellCast | ValidCard$ Instant.nonToken,Sorcery.nonToken | Execute$ TrigExileSpell | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts an instant or sorcery card, exile it. Then that player copies each instant or sorcery card exiled with CARDNAME. For each copy, the player may cast the copy without paying its mana cost. SVar:TrigExileSpell:DB$ ChangeZone | Defined$ TriggeredCardLKICopy | Origin$ Stack | Destination$ Exile | Fizzle$ True | RememberChanged$ True | SubAbility$ DBPlaySpell SVar:DBPlaySpell:DB$ RepeatEach | UseImprinted$ True | RepeatCards$ Card.IsRemembered | ChooseOrder$ True | Zone$ Exile | RepeatSubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ Imprinted | Controller$ TriggeredCardController | WithoutManaCost$ True | CopyCard$ True | Optional$ True +SVar:DBPlay:DB$ Play | Defined$ Imprinted | Controller$ TriggeredCardController | WithoutManaCost$ True | ValidSA$ Spell | CopyCard$ True | Optional$ True T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget SVar:DBForget:DB$ Pump | Defined$ TriggeredCard | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup diff --git a/forge-gui/res/cardsfolder/f/fevered_suspicion.txt b/forge-gui/res/cardsfolder/f/fevered_suspicion.txt index ef914643e8f..18a9593db9a 100644 --- a/forge-gui/res/cardsfolder/f/fevered_suspicion.txt +++ b/forge-gui/res/cardsfolder/f/fevered_suspicion.txt @@ -3,6 +3,6 @@ ManaCost:6 B R Types:Sorcery K:Rebound A:SP$ DigUntil | Cost$ 6 B R | Defined$ Player.Opponent | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPlay | StackDescription$ SpellDescription | SpellDescription$ Each opponent exiles cards from the top of their library until they exile a nonland card. You may cast any number of spells from among those nonland cards without paying their mana costs. -SVar:DBPlay:DB$ Play | Controller$ You | OptionalDecider$ You | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBPlay:DB$ Play | Controller$ You | OptionalDecider$ You | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Each opponent exiles cards from the top of their library until they exile a nonland card. You may cast any number of spells from among those nonland cards without paying their mana costs.\nRebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/finale_of_promise.txt b/forge-gui/res/cardsfolder/f/finale_of_promise.txt index d519878829b..c61b7cdaf31 100644 --- a/forge-gui/res/cardsfolder/f/finale_of_promise.txt +++ b/forge-gui/res/cardsfolder/f/finale_of_promise.txt @@ -3,7 +3,7 @@ ManaCost:X R R Types:Sorcery A:SP$ Pump | Cost$ X R R | ValidTgts$ Instant.YouOwn+cmcLEX | TgtZone$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target instant card in your graveyard with mana value X or less | RememberObjects$ Targeted | SubAbility$ DBPump | SpellDescription$ You may cast up to one target instant card and/or up to one target sorcery card from your graveyard each with mana value X or less without paying their mana costs. If a spell cast this way would be put into your graveyard this turn, exile it instead. If X is 10 or more, copy each of those spells twice. You may choose new targets for the copies. SVar:DBPump:DB$ Pump | ValidTgts$ Sorcery.YouOwn+cmcLEX | TgtZone$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target sorcery card in your graveyard with mana value X or less | RememberObjects$ Targeted | SubAbility$ DBPlay | StackDescription$ None -SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Graveyard | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBRepeat | ReplaceGraveyard$ Exile +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Graveyard | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBRepeat | ReplaceGraveyard$ Exile SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Remembered | ClearRemembered$ True | ChooseOrder$ True | RepeatSubAbility$ DBCopy | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 SVar:DBCopy:DB$ CopySpellAbility | Amount$ 2 | Defined$ Remembered | MayChooseTarget$ True SVar:X:Count$xPaid diff --git a/forge-gui/res/cardsfolder/g/galvanoth.txt b/forge-gui/res/cardsfolder/g/galvanoth.txt index eb44bee9238..644c84dec81 100644 --- a/forge-gui/res/cardsfolder/g/galvanoth.txt +++ b/forge-gui/res/cardsfolder/g/galvanoth.txt @@ -4,6 +4,6 @@ Types:Creature Beast PT:3/3 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may look at the top card of your library. You may cast it without paying its mana cost if it's an instant or sorcery spell. SVar:TrigDig:DB$ Dig | DigNum$ 1 | NoMove$ True | SubAbility$ TrigPlay -SVar:TrigPlay:DB$ Play | Defined$ TopOfLibrary | WithoutManaCost$ True | Optional$ True | ConditionDefined$ TopOfLibrary | ConditionPresent$ Instant,Sorcery | ConditionCompare$ EQ1 +SVar:TrigPlay:DB$ Play | Defined$ TopOfLibrary | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ConditionDefined$ TopOfLibrary | ConditionPresent$ Instant,Sorcery | ConditionCompare$ EQ1 SVar:Picture:http://www.wizards.com/global/images/magic/general/galvanoth.jpg Oracle:At the beginning of your upkeep, you may look at the top card of your library. You may cast it without paying its mana cost if it's an instant or sorcery spell. diff --git a/forge-gui/res/cardsfolder/g/goblin_dark_dwellers.txt b/forge-gui/res/cardsfolder/g/goblin_dark_dwellers.txt index 2800b7316d4..ad4dcdc1c08 100644 --- a/forge-gui/res/cardsfolder/g/goblin_dark_dwellers.txt +++ b/forge-gui/res/cardsfolder/g/goblin_dark_dwellers.txt @@ -4,6 +4,6 @@ Types:Creature Goblin PT:4/4 K:Menace T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ When CARDNAME enters the battlefield, you may cast target instant or sorcery card with mana value 3 or less from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+cmcLE3,Sorcery.YouCtrl+cmcLE3 | TgtPrompt$ Choose target instant or sorcery card with mana value 3 or less from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+cmcLE3,Sorcery.YouCtrl+cmcLE3 | ValidSA$ Spell | TgtPrompt$ Choose target instant or sorcery card with mana value 3 or less from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_dark_dwellers.jpg Oracle:Menace\nWhen Goblin Dark-Dwellers enters the battlefield, you may cast target instant or sorcery card with mana value 3 or less from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/g/god_eternal_kefnet.txt b/forge-gui/res/cardsfolder/g/god_eternal_kefnet.txt index 514002c35d8..b784df0cf46 100644 --- a/forge-gui/res/cardsfolder/g/god_eternal_kefnet.txt +++ b/forge-gui/res/cardsfolder/g/god_eternal_kefnet.txt @@ -6,7 +6,7 @@ K:Flying T:Mode$ Drawn | ValidCard$ Card.YouOwn | Number$ 1 | OptionalDecider$ You | Static$ True | Execute$ DBReveal | TriggerZones$ Battlefield | TriggerDescription$ You may reveal the first card you draw each turn as you draw it. Whenever you reveal an instant or sorcery card this way, copy that card and you may cast the copy. That copy costs {2} less to cast. SVar:DBReveal:DB$ Reveal | Defined$ You | RevealDefined$ TriggeredCard | RememberRevealed$ True | SubAbility$ DBTrigger | AILogic$ Kefnet SVar:DBTrigger:DB$ ImmediateTrigger | RememberObjects$ RememberedCard | ConditionDefined$ Remembered | ConditionPresent$ Instant,Sorcery | SubAbility$ DBCleanup | Execute$ DBPlay | TriggerDescription$ Whenever you reveal an instant or sorcery card this way, copy that card and you may cast the copy. That copy costs {2} less to cast. -SVar:DBPlay:DB$ Play | Defined$ DelayTriggerRemembered | PlayReduceCost$ 2 | CopyOnce$ True | Optional$ True | CopyCard$ True +SVar:DBPlay:DB$ Play | Defined$ DelayTriggerRemembered | ValidSA$ Spell | PlayReduceCost$ 2 | Optional$ True | CopyCard$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard,Exile | ValidCard$ Card.Self | Execute$ TriReturn | OptionalDecider$ You | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies or is put into exile from the battlefield, you may put it into its owner's library third from the top. SVar:TriReturn:DB$ ChangeZone | Defined$ TriggeredNewCardLKICopy | Destination$ Library | LibraryPosition$ 2 diff --git a/forge-gui/res/cardsfolder/h/harness_the_storm.txt b/forge-gui/res/cardsfolder/h/harness_the_storm.txt index a36054a47f9..be8b9ead2ae 100644 --- a/forge-gui/res/cardsfolder/h/harness_the_storm.txt +++ b/forge-gui/res/cardsfolder/h/harness_the_storm.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Enchantment T:Mode$ SpellCast | ValidCard$ Instant.wasCastFromHand,Sorcery.wasCastFromHand | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard. (You still pay its costs.) SVar:TrigPump:DB$ Pump | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+sharesNameWith TriggeredCard,Sorcery.YouCtrl+sharesNameWith TriggeredCard | TgtPrompt$ Choose target instant or sorcery from your graveyard | PumpZone$ Graveyard | SubAbility$ TrigPlay -SVar:TrigPlay:DB$ Play | Defined$ Targeted | Optional$ True +SVar:TrigPlay:DB$ Play | Defined$ Targeted | ValidSA$ Spell | Optional$ True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/harness_the_storm.jpg Oracle:Whenever you cast an instant or sorcery spell from your hand, you may cast target card with the same name as that spell from your graveyard. (You still pay its costs.) diff --git a/forge-gui/res/cardsfolder/h/hazorets_undying_fury.txt b/forge-gui/res/cardsfolder/h/hazorets_undying_fury.txt index ee54c209f7e..f75ffae4bf4 100644 --- a/forge-gui/res/cardsfolder/h/hazorets_undying_fury.txt +++ b/forge-gui/res/cardsfolder/h/hazorets_undying_fury.txt @@ -3,7 +3,7 @@ ManaCost:4 R R Types:Sorcery A:SP$ Shuffle | Cost$ 4 R R | Defined$ You | SubAbility$ DBExile | SpellDescription$ Shuffle your library, then exile the top four cards. You may cast any number of spells with mana value 5 or less from among them without paying their mana costs. Lands you control don't untap during your next untap step. SVar:DBExile:DB$ Dig | Defined$ You | DigNum$ 4 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsRemembered+YouOwn+cmcLE5 | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBNoUntap +SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsRemembered+YouOwn+cmcLE5 | ValidZone$ Exile | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBNoUntap SVar:DBNoUntap:DB$ Effect | StaticAbilities$ DontUntap | Triggers$ RemoveEffect | Duration$ Permanent | Name$ Hazoret's Undying Fury Effect | SubAbility$ DBCleanup | SpellDescription$ Lands you control don't untap during your next untap step. SVar:DontUntap:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land.YouCtrl | AddHiddenKeyword$ This card doesn't untap during your next untap step. SVar:RemoveEffect:Mode$ Phase | Phase$ Untap | ValidPlayer$ You | TriggerZones$ Command | Static$ True | Execute$ ExileEffect diff --git a/forge-gui/res/cardsfolder/h/hellcarver_demon.txt b/forge-gui/res/cardsfolder/h/hellcarver_demon.txt index abebc6bf29b..4c7d1687077 100644 --- a/forge-gui/res/cardsfolder/h/hellcarver_demon.txt +++ b/forge-gui/res/cardsfolder/h/hellcarver_demon.txt @@ -7,6 +7,6 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage SVar:TrigSacrifice:DB$ SacrificeAll | ValidCards$ Permanent.YouCtrl+Other | SubAbility$ DBDiscardHand SVar:DBDiscardHand:DB$ Discard | Mode$ Hand | Defined$ You | SubAbility$ DBExileSix SVar:DBExileSix:DB$ Dig | DestinationZone$ Exile | RememberChanged$ True | DigNum$ 6 | ChangeNum$ All | SubAbility$ DBPlayThem -SVar:DBPlayThem:DB$ Play | Valid$ Card.IsRemembered+nonLand | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Amount$ All | Optional$ True | SubAbility$ DBHellCleanup +SVar:DBPlayThem:DB$ Play | Valid$ Card.IsRemembered+nonLand | ValidZone$ Exile | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Amount$ All | Optional$ True | SubAbility$ DBHellCleanup SVar:DBHellCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Flying\nWhenever Hellcarver Demon deals combat damage to a player, sacrifice all other permanents you control and discard your hand. Exile the top six cards of your library. You may cast any number of spells from among cards exiled this way without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/i/in_search_of_greatness.txt b/forge-gui/res/cardsfolder/i/in_search_of_greatness.txt index e7f4e85f7f1..bc76f548c5a 100644 --- a/forge-gui/res/cardsfolder/i/in_search_of_greatness.txt +++ b/forge-gui/res/cardsfolder/i/in_search_of_greatness.txt @@ -2,7 +2,7 @@ Name:In Search of Greatness ManaCost:G G Types:Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPlay | TriggerDescription$ At the beginning of your upkeep, you may cast a permanent spell from your hand with mana value equal to 1 plus the highest mana value among other permanents you control without paying its mana cost. If you don't, scry 1. -SVar:TrigPlay:DB$ Play | Valid$ Permanent.YouOwn+cmcEQX | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Optional$ True | SubAbility$ DBScry | RememberPlayed$ True | StackDescription$ None +SVar:TrigPlay:DB$ Play | Valid$ Permanent.YouOwn+cmcEQX | ValidZone$ Hand | ValidSA$ Spell | WithoutManaCost$ True | Amount$ 1 | Optional$ True | SubAbility$ DBScry | RememberPlayed$ True | StackDescription$ None SVar:DBScry:DB$ Scry | ScryNum$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:SVar$Y/Plus.1 diff --git a/forge-gui/res/cardsfolder/i/isochron_scepter.txt b/forge-gui/res/cardsfolder/i/isochron_scepter.txt index 03f1d2a8bb6..97067be4ba8 100644 --- a/forge-gui/res/cardsfolder/i/isochron_scepter.txt +++ b/forge-gui/res/cardsfolder/i/isochron_scepter.txt @@ -3,12 +3,12 @@ ManaCost:2 Types:Artifact T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Imprint — When CARDNAME enters the battlefield, you may exile an instant card with mana value 2 or less from your hand. SVar:TrigExile:DB$ ChangeZone | Imprint$ True | Origin$ Hand | Destination$ Exile | ChangeType$ Instant.cmcLE2 | ChangeNum$ 1 -A:AB$ Play | Cost$ 2 T | Valid$ Card.IsImprinted+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. +A:AB$ Play | Cost$ 2 T | Valid$ Card.IsImprinted+ExiledWithSource | ValidZone$ Exile | Amount$ All | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | CopyCard$ True | SpellDescription$ You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsImprinted+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetImprinted$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True -#Amount$ All | CopyOnce$ True for Strionic Resonator +#Amount$ All for Strionic Resonator AI:RemoveDeck:All SVar:Picture:http://www.wizards.com/global/images/magic/general/isochron_scepter.jpg Oracle:Imprint — When Isochron Scepter enters the battlefield, you may exile an instant card with mana value 2 or less from your hand.\n{2}, {T}: You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/j/jace_architect_of_thought.txt b/forge-gui/res/cardsfolder/j/jace_architect_of_thought.txt index c7cbd7fae09..cd49d945b49 100644 --- a/forge-gui/res/cardsfolder/j/jace_architect_of_thought.txt +++ b/forge-gui/res/cardsfolder/j/jace_architect_of_thought.txt @@ -11,7 +11,7 @@ SVar:DBHand:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination SVar:DBLibraryBottom:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | SubAbility$ DBCleanup A:AB$ RepeatEach | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | RepeatPlayers$ Player | RepeatSubAbility$ DBJaceExile | SubAbility$ DBPlayIt | SpellDescription$ For each player, search that player's library for a nonland card and exile it, then that player shuffles. You may cast those cards without paying their mana costs. SVar:DBJaceExile:DB$ ChangeZone | Origin$ Library | Destination$ Exile | DefinedPlayer$ Remembered | Chooser$ You | ChangeType$ Card.nonLand | ChangeNum$ 1 | Imprint$ True | Shuffle$ True -SVar:DBPlayIt:DB$ Play | Defined$ Imprinted | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | RememberPlayed$ True | SubAbility$ DBCleanup +SVar:DBPlayIt:DB$ Play | Defined$ Imprinted | Amount$ All | Controller$ You | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | RememberPlayed$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/jace_architect_of_thought.jpg Oracle:[+1]: Until your next turn, whenever a creature an opponent controls attacks, it gets -1/-0 until end of turn.\n[−2]: Reveal the top three cards of your library. An opponent separates those cards into two piles. Put one pile into your hand and the other on the bottom of your library in any order.\n[−8]: For each player, search that player's library for a nonland card and exile it, then that player shuffles. You may cast those cards without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/j/jaces_mindseeker.txt b/forge-gui/res/cardsfolder/j/jaces_mindseeker.txt index 5001eb46afd..ca89123a897 100644 --- a/forge-gui/res/cardsfolder/j/jaces_mindseeker.txt +++ b/forge-gui/res/cardsfolder/j/jaces_mindseeker.txt @@ -5,6 +5,6 @@ PT:4/4 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ MindFishing | TriggerDescription$ When Jace's Mindseeker enters the battlefield, target opponent mills five cards. You may cast an instant or sorcery card from among them without paying its mana cost. SVar:MindFishing:DB$ Mill | NumCards$ 5 | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to mill | RememberMilled$ True | SubAbility$ FishyCast -SVar:FishyCast:DB$ Play | ValidZone$ Graveyard | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | SubAbility$ DBCleanup +SVar:FishyCast:DB$ Play | ValidZone$ Graveyard | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | Controller$ You | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | Amount$ 1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Flying\nWhen Jace's Mindseeker enters the battlefield, target opponent mills five cards. You may cast an instant or sorcery spell from among them without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/j/jadzi_oracle_of_arcavios_journey_to_the_oracle.txt b/forge-gui/res/cardsfolder/j/jadzi_oracle_of_arcavios_journey_to_the_oracle.txt index 983abecfe85..0cf3609e07d 100644 --- a/forge-gui/res/cardsfolder/j/jadzi_oracle_of_arcavios_journey_to_the_oracle.txt +++ b/forge-gui/res/cardsfolder/j/jadzi_oracle_of_arcavios_journey_to_the_oracle.txt @@ -5,7 +5,7 @@ PT:5/5 A:AB$ ChangeZone | Cost$ Discard<1/Card> | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand. T:Mode$ SpellCastOrCopy | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Magecraft — Whenever you cast or copy an instant or sorcery spell, reveal the top card of your library. If it's a nonland card, you may cast it by paying {1} rather than paying its mana cost. If it's a land card, put it onto the battlefield. SVar:TrigDig:DB$ Dig | Defined$ You | DigNum$ 1 | Reveal$ True | RememberRevealed$ True | NoMove$ True | SubAbility$ CastCard -SVar:CastCard:DB$ Play | Defined$ Remembered | PlayCost$ 1 | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ MoveLand +SVar:CastCard:DB$ Play | Defined$ Remembered | PlayCost$ 1 | ValidSA$ Spell | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ MoveLand SVar:MoveLand:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Battlefield | ConditionDefined$ Remembered | ConditionPresent$ Card.Land | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/j/jaya_ballard.txt b/forge-gui/res/cardsfolder/j/jaya_ballard.txt index 1cc1e6d124f..088ee631d31 100644 --- a/forge-gui/res/cardsfolder/j/jaya_ballard.txt +++ b/forge-gui/res/cardsfolder/j/jaya_ballard.txt @@ -8,7 +8,7 @@ SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 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 | ReplacementEffects$ JayaReplace | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may cast instant and sorcery spells from your graveyard. If a spell 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. +SVar:STJaya:Mode$ Continuous | EffectZone$ Command | Affected$ Instant.YouCtrl,Sorcery.YouCtrl | MayPlay$ True | AffectedZone$ Graveyard | Description$ You may cast instant and sorcery spells from your graveyard. If a spell cast this way would be put into your graveyard, exile it instead. SVar:JayaReplace:Event$ Moved | EffectZone$ Command | ValidLKI$ Card.CastSa Spell.MayPlaySource | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ JayaMoveExile SVar:JayaMoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile SVar:PlayMain1:ALWAYS diff --git a/forge-gui/res/cardsfolder/j/jeleva_nephalias_scourge.txt b/forge-gui/res/cardsfolder/j/jeleva_nephalias_scourge.txt index 6e4566a8905..09b55c096cd 100644 --- a/forge-gui/res/cardsfolder/j/jeleva_nephalias_scourge.txt +++ b/forge-gui/res/cardsfolder/j/jeleva_nephalias_scourge.txt @@ -7,7 +7,7 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigExile:DB$ Dig | Defined$ Player | DigNum$ X | ChangeNum$ All | RememberChanged$ True | DestinationZone$ Exile SVar:X:Count$CastTotalManaSpent T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPlay | OptionalDecider$ You| TriggerDescription$ Whenever CARDNAME attacks, you may cast an instant or sorcery card exiled with it without paying its mana cost. -SVar:TrigPlay:DB$ Play | ValidZone$ Exile | Valid$ Instant.IsRemembered+ExiledWithSource,Sorcery.IsRemembered+ExiledWithSource | Controller$ You | WithoutManaCost$ True | Amount$ 1 +SVar:TrigPlay:DB$ Play | ValidZone$ Exile | Valid$ Instant.IsRemembered+ExiledWithSource,Sorcery.IsRemembered+ExiledWithSource | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Amount$ 1 T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | Defined$ TriggeredCard | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup diff --git a/forge-gui/res/cardsfolder/k/kasmina_enigma_sage.txt b/forge-gui/res/cardsfolder/k/kasmina_enigma_sage.txt index 2ef507224ec..bff2f713cb7 100644 --- a/forge-gui/res/cardsfolder/k/kasmina_enigma_sage.txt +++ b/forge-gui/res/cardsfolder/k/kasmina_enigma_sage.txt @@ -9,7 +9,7 @@ SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | Cou SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid A:AB$ ChangeZone | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Origin$ Library | Destination$ Exile | ChangeType$ Instant.SharesColorWith,Sorcery.SharesColorWith | ChangeNum$ 1 | SubAbility$ DBPlay | RememberChanged$ True | SpellDescription$ Search your library for an instant or sorcery card that shares a color with this planeswalker, exile that card, then shuffle. You may cast that card without paying its mana cost. -SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ DBCleanup DeckHints:Type$Instant|Sorcery DeckHas:Ability$Token & Ability$Counters Oracle:Each other planeswalker you control has the loyalty abilities of Kasmina, Enigma Sage.\n[+2]: Scry 1.\n[−X]: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it.\n[−8]: Search your library for an instant or sorcery card that shares a color with this planeswalker, exile that card, then shuffle. You may cast that card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt b/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt index ba2964e6724..5b765b08953 100644 --- a/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt +++ b/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt @@ -3,7 +3,7 @@ ManaCost:5 U U Types:Tribal Sorcery Rogue K:Prowl:3 U A:SP$ ChangeZone | Cost$ 5 U U | ValidTgts$ Opponent | Origin$ Library | Destination$ Library | ChangeType$ Instant,Sorcery | ChangeNum$ 1 | RememberChanged$ True | Reveal$ True | Shuffle$ False | DefinedPlayer$ Targeted | Chooser$ You | Mandatory$ True | SubAbility$ DBPlay | StackDescription$ Search {p:Targeted}'s library for an instant or sorcery card | SpellDescription$ Search target opponent's library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles. -SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBShuffle +SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ DBShuffle SVar:DBShuffle:DB$ Shuffle | Defined$ RememberedController | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckNeeds:Type$Rogue diff --git a/forge-gui/res/cardsfolder/l/living_lore.txt b/forge-gui/res/cardsfolder/l/living_lore.txt index fc9c4f02d61..e21f177c136 100644 --- a/forge-gui/res/cardsfolder/l/living_lore.txt +++ b/forge-gui/res/cardsfolder/l/living_lore.txt @@ -7,7 +7,7 @@ SVar:ChooseSpell:DB$ ChangeZone | ChangeType$ Instant.YouOwn,Sorcery.YouOwn | Ch S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the exiled card's mana value. SVar:X:Count$RememberedCardManaCost T:Mode$ DamageDealtOnce | CombatDamage$ True | ValidSource$ Card.Self | Execute$ TrigSacLore | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage, you may sacrifice it. If you do, you may cast the exiled card without paying its mana cost. -SVar:TrigSacLore:AB$ Play | Cost$ Sac<1/CARDNAME> | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | Optional$ True | ForgetRemembered$ True +SVar:TrigSacLore:AB$ Play | Cost$ Sac<1/CARDNAME> | Defined$ Remembered | Amount$ All | Controller$ You | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ForgetRemembered$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:Random diff --git a/forge-gui/res/cardsfolder/m/maelstrom_archangel.txt b/forge-gui/res/cardsfolder/m/maelstrom_archangel.txt index a2e5bede604..86dc05fa49f 100644 --- a/forge-gui/res/cardsfolder/m/maelstrom_archangel.txt +++ b/forge-gui/res/cardsfolder/m/maelstrom_archangel.txt @@ -4,6 +4,6 @@ Types:Creature Angel PT:5/5 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPlay | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may cast a spell from your hand without paying its mana cost. -SVar:TrigPlay:DB$ Play | Valid$ Card.nonLand+YouCtrl | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True +SVar:TrigPlay:DB$ Play | Valid$ Card.YouCtrl | ValidSA$ Spell | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/maelstrom_archangel.jpg Oracle:Flying\nWhenever Maelstrom Archangel deals combat damage to a player, you may cast a spell from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/master_of_predicaments.txt b/forge-gui/res/cardsfolder/m/master_of_predicaments.txt index 124be40ea7f..e53a68de460 100644 --- a/forge-gui/res/cardsfolder/m/master_of_predicaments.txt +++ b/forge-gui/res/cardsfolder/m/master_of_predicaments.txt @@ -7,6 +7,6 @@ T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage SVar:TrigGuess:DB$ ChooseCard | ChoiceZone$ Hand | Defined$ You | Choices$ Card.YouOwn | AILogic$ RandomNonLand | SubAbility$ DBGuess SVar:DBGuess:DB$ GenericChoice | Defined$ TriggeredTarget | Choices$ GuessGreaterThanFour,GuessNotGreaterThanFour | AILogic$ Random | ShowChoice$ True SVar:GuessGreaterThanFour:DB$ Play | Controller$ You | Defined$ ChosenCard | Optional$ True | WithoutManaCost$ True | ConditionDefined$ ChosenCard | ConditionPresent$ Card.cmcLE4+nonLand | ConditionCompare$ GE1 | SpellDescription$ That card's mana value is greater than 4 -SVar:GuessNotGreaterThanFour:DB$ Play | Controller$ You | Defined$ ChosenCard | Optional$ True | WithoutManaCost$ True | ConditionDefined$ ChosenCard | ConditionPresent$ Card.cmcGT4+nonLand | ConditionCompare$ GE1 | SpellDescription$ That card's mana value is not greater than 4 +SVar:GuessNotGreaterThanFour:DB$ Play | Controller$ You | Defined$ ChosenCard | Optional$ True | WithoutManaCost$ True | ValidSA$ Spell | ConditionDefined$ ChosenCard | ConditionPresent$ Card.cmcGT4+nonLand | ConditionCompare$ GE1 | SpellDescription$ That card's mana value is not greater than 4 SVar:Picture:http://www.wizards.com/global/images/magic/general/master_of_predicaments.jpg Oracle:Flying\nWhenever Master of Predicaments deals combat damage to a player, choose a card in your hand. That player guesses whether the card's mana value is greater than 4. If the player guessed wrong, you may cast the card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/memory_plunder.txt b/forge-gui/res/cardsfolder/m/memory_plunder.txt index 142b4b27497..61ced9966c1 100644 --- a/forge-gui/res/cardsfolder/m/memory_plunder.txt +++ b/forge-gui/res/cardsfolder/m/memory_plunder.txt @@ -1,7 +1,7 @@ Name:Memory Plunder ManaCost:UB UB UB UB Types:Instant -A:SP$ Play | Cost$ UB UB UB UB | TgtZone$ Graveyard | WithoutManaCost$ True | ValidTgts$ Instant.OppOwn,Sorcery.OppOwn | TgtPrompt$ Choose target instant or sorcery card from an opponent's graveyard | Optional$ True | SpellDescription$ You may cast target instant or sorcery card from an opponent's graveyard without paying its mana cost. +A:SP$ Play | Cost$ UB UB UB UB | TgtZone$ Graveyard | WithoutManaCost$ True | ValidSA$ Spell | ValidTgts$ Instant.OppOwn,Sorcery.OppOwn | TgtPrompt$ Choose target instant or sorcery card from an opponent's graveyard | Optional$ True | SpellDescription$ You may cast target instant or sorcery card from an opponent's graveyard without paying its mana cost. AI:RemoveDeck:All SVar:Picture:http://www.wizards.com/global/images/magic/general/memory_plunder.jpg Oracle:You may cast target instant or sorcery card from an opponent's graveyard without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mindclaw_shaman.txt b/forge-gui/res/cardsfolder/m/mindclaw_shaman.txt index c34e7ed0e64..e40552c9648 100644 --- a/forge-gui/res/cardsfolder/m/mindclaw_shaman.txt +++ b/forge-gui/res/cardsfolder/m/mindclaw_shaman.txt @@ -4,7 +4,7 @@ Types:Creature Viashino Shaman PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals their hand. You may cast an instant or sorcery spell from among those cards without paying its mana cost. SVar:TrigReveal:DB$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberTargets$ True | SubAbility$ TrigPlay -SVar:TrigPlay:DB$ Play | Valid$ Instant.RememberedPlayerCtrl,Sorcery.RememberedPlayerCtrl | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:TrigPlay:DB$ Play | Valid$ Card.RememberedPlayerCtrl | ValidSA$ Instant,Sorcery | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/mindclaw_shaman.jpg Oracle:When Mindclaw Shaman enters the battlefield, target opponent reveals their hand. You may cast an instant or sorcery spell from among those cards without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mindleech_mass.txt b/forge-gui/res/cardsfolder/m/mindleech_mass.txt index 0d39cabcfd1..fb07890fbc1 100644 --- a/forge-gui/res/cardsfolder/m/mindleech_mass.txt +++ b/forge-gui/res/cardsfolder/m/mindleech_mass.txt @@ -5,6 +5,6 @@ PT:6/6 K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigReveal | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may look at that player's hand. If you do, you may cast a spell from among those cards without paying its mana cost. SVar:TrigReveal:DB$ RevealHand | Defined$ TriggeredTarget | SubAbility$ TrigPlay -SVar:TrigPlay:DB$ Play | Valid$ Card.nonLand+DefenderCtrl | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True +SVar:TrigPlay:DB$ Play | Valid$ Card.DefenderCtrl | ValidZone$ Hand | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/mindleech_mass.jpg Oracle:Trample\nWhenever Mindleech Mass deals combat damage to a player, you may look at that player's hand. If you do, you may cast a spell from among those cards without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/minds_dilation.txt b/forge-gui/res/cardsfolder/m/minds_dilation.txt index 9415479e137..1b7e41786ff 100644 --- a/forge-gui/res/cardsfolder/m/minds_dilation.txt +++ b/forge-gui/res/cardsfolder/m/minds_dilation.txt @@ -3,6 +3,6 @@ ManaCost:5 U U Types:Enchantment T:Mode$ SpellCast | ValidActivatingPlayer$ Player.Opponent | ActivatorThisTurnCast$ EQ1 | NoResolvingCheck$ True | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever an opponent casts their first spell each turn, that player exiles the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. SVar:TrigExile:DB$ Dig | Defined$ TriggeredPlayer | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ CastCard -SVar:CastCard:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | Controller$ You | ShowCardToActivator$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ DBCleanup +SVar:CastCard:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | Controller$ You | ShowCardToActivator$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Whenever an opponent casts their first spell each turn, that player exiles the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mizzixs_mastery.txt b/forge-gui/res/cardsfolder/m/mizzixs_mastery.txt index 8ce944d5daf..a77613e7a27 100644 --- a/forge-gui/res/cardsfolder/m/mizzixs_mastery.txt +++ b/forge-gui/res/cardsfolder/m/mizzixs_mastery.txt @@ -3,7 +3,7 @@ ManaCost:3 R Types:Sorcery A:SP$ ChangeZone | Cost$ 3 R | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target instant or sorcery card in a graveyard | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Exile target card that's an instant or sorcery from your graveyard. For each card exiled this way, copy it, and you may cast the copy without paying its mana cost. Exile Mizzix's Mastery. A:SP$ ChangeZoneAll | Cost$ 5 R R R | NonBasicSpell$ True | Origin$ Graveyard | Destination$ Exile | ChangeType$ Instant.YouOwn,Sorcery.YouOwn | RememberChanged$ True | SubAbility$ DBPlay | PrecostDesc$ Overload | CostDesc$ {5}{R}{R}{R} | SpellDescription$ (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") | StackDescription$ Exile each card that's an instant or sorcery from your graveyard. For each card exiled this way, copy it, and you may cast the copy without paying its mana cost. -SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | Controller$ You | CopyCard$ True | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ ExileMe +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | Controller$ You | CopyCard$ True | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | Amount$ All | SubAbility$ ExileMe SVar:ExileMe:DB$ ChangeZoneAll | Origin$ Stack | Destination$ Exile | ChangeType$ Card.Self | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/m/mnemonic_deluge.txt b/forge-gui/res/cardsfolder/m/mnemonic_deluge.txt index e624c6ea2a2..7a1e5f8d5ce 100644 --- a/forge-gui/res/cardsfolder/m/mnemonic_deluge.txt +++ b/forge-gui/res/cardsfolder/m/mnemonic_deluge.txt @@ -2,7 +2,7 @@ Name:Mnemonic Deluge ManaCost:6 U U U Types:Sorcery A:SP$ ChangeZone | Cost$ 6 U U U | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select target instant or sorcery card in a graveyard | Origin$ Graveyard | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Exile target instant or sorcery card from a graveyard. Copy that card three times. You may cast the copies without paying their mana costs. Exile CARDNAME. -SVar:DBPlay:DB$ Play | Defined$ Remembered | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | WithoutManaCost$ True | SubAbility$ DBExile | StackDescription$ Copy it three times. {p:You} may cast the copies without paying their mana cost. +SVar:DBPlay:DB$ Play | Defined$ Remembered | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | WithoutManaCost$ True | ValidSA$ Spell | SubAbility$ DBExile | StackDescription$ Copy it three times. {p:You} may cast the copies without paying their mana cost. SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHints:Type$Instant|Sorcery diff --git a/forge-gui/res/cardsfolder/m/muse_vortex.txt b/forge-gui/res/cardsfolder/m/muse_vortex.txt index 0785c9e9e86..b9945198ed6 100644 --- a/forge-gui/res/cardsfolder/m/muse_vortex.txt +++ b/forge-gui/res/cardsfolder/m/muse_vortex.txt @@ -2,7 +2,7 @@ Name:Muse Vortex ManaCost:X U U Types:Sorcery A:SP$ Dig | Cost$ X U U | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay | StackDescription$ SpellDescription | SpellDescription$ Exile the top X cards of your library. You may cast an instant or sorcery spell with mana value X or less from among them without paying its mana cost. Then put the exiled instant and sorcery cards that weren't cast this way into your hand and the rest on the bottom of your library in a random order. -SVar:DBPlay:DB$ Play | Valid$ Instant.cmcLEX+IsRemembered+YouOwn,Sorcery.cmcLEX+IsRemembered+YouOwn | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | ForgetTargetRemembered$ True | Amount$ 1 | SubAbility$ DBHand | StackDescription$ None +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered+YouOwn | ValidSA$ Instant.cmcLEX,Sorcery.cmcLEX | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | ForgetTargetRemembered$ True | Amount$ 1 | SubAbility$ DBHand | StackDescription$ None SVar:DBHand:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Hand | ChangeType$ Instant.IsRemembered+YouOwn,Sorcery.IsRemembered+YouOwn | ForgetChanged$ True | SubAbility$ DBLibrary SVar:DBLibrary:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Library | ChangeType$ Card.IsRemembered+YouOwn | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/o/omnispell_adept.txt b/forge-gui/res/cardsfolder/o/omnispell_adept.txt index 6e04923d80f..7ceea60a19f 100644 --- a/forge-gui/res/cardsfolder/o/omnispell_adept.txt +++ b/forge-gui/res/cardsfolder/o/omnispell_adept.txt @@ -2,5 +2,5 @@ Name:Omnispell Adept ManaCost:4 U Types:Creature Human Wizard PT:3/4 -A:AB$ Play | Cost$ 2 U T | ValidZone$ Hand | Valid$ Instant.YouOwn,Sorcery.YouOwn | Controller$ You | WithoutManaCost$ True | Optional$ True | AILogic$ NeedsChosenCard | SpellDescription$ You may cast an instant or sorcery spell from your hand without paying its mana cost. +A:AB$ Play | Cost$ 2 U T | ValidZone$ Hand | Valid$ Card.YouOwn | ValidSA$ Instant,Sorcery | Controller$ You | WithoutManaCost$ True | Optional$ True | AILogic$ NeedsChosenCard | SpellDescription$ You may cast an instant or sorcery spell from your hand without paying its mana cost. Oracle:{2}{U}, {T}: You may cast an instant or sorcery spell from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/o/oracle_of_bones.txt b/forge-gui/res/cardsfolder/o/oracle_of_bones.txt index b3de7093b0d..03ad7dc6cdc 100644 --- a/forge-gui/res/cardsfolder/o/oracle_of_bones.txt +++ b/forge-gui/res/cardsfolder/o/oracle_of_bones.txt @@ -4,7 +4,7 @@ Types:Creature Minotaur Shaman PT:3/1 K:Haste K:Tribute:2 -SVar:TrigNotTribute:DB$ Play | ValidZone$ Hand | Valid$ Instant.YouOwn,Sorcery.YouOwn | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | SpellDescription$ When CARDNAME enters the battlefield, if tribute wasn't paid, you may cast an instant or sorcery spell from your hand without paying its mana cost. +SVar:TrigNotTribute:DB$ Play | ValidZone$ Hand | Valid$ Card.YouOwn | ValidSA$ Instant,Sorcery | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | SpellDescription$ When CARDNAME enters the battlefield, if tribute wasn't paid, you may cast an instant or sorcery spell from your hand without paying its mana cost. SVar:TributeAILogic:OppHasCardsInHand DeckHas:Ability$Counters SVar:Picture:http://www.wizards.com/global/images/magic/general/oracle_of_bones.jpg diff --git a/forge-gui/res/cardsfolder/p/panoptic_mirror.txt b/forge-gui/res/cardsfolder/p/panoptic_mirror.txt index dcf12affbef..ded5f90223c 100644 --- a/forge-gui/res/cardsfolder/p/panoptic_mirror.txt +++ b/forge-gui/res/cardsfolder/p/panoptic_mirror.txt @@ -4,7 +4,7 @@ Types:Artifact A:AB$ ChangeZone | Cost$ X T | Imprint$ True | Origin$ Hand | Destination$ Exile | ChangeType$ Instant.cmcEQX,Sorcery.cmcEQX | ChangeNum$ 1 | PrecostDesc$ Imprint — | SpellDescription$ You may exile an instant or sorcery card with mana value X from your hand. SVar:X:Count$xPaid T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigCopy | TriggerDescription$ At the beginning of your upkeep, you may copy a card exiled with Panoptic Mirror. If you do, you may cast the copy without paying its mana cost. -SVar:TrigCopy:DB$ Play | Valid$ Card.IsImprinted+ExiledWithSource | ValidZone$ Exile | WithoutManaCost$ True | Optional$ True | CopyCard$ True +SVar:TrigCopy:DB$ Play | Valid$ Card.IsImprinted+ExiledWithSource | ValidZone$ Exile | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | CopyCard$ True T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsImprinted+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetImprinted$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True diff --git a/forge-gui/res/cardsfolder/p/plargg_dean_of_chaos_augusta_dean_of_order.txt b/forge-gui/res/cardsfolder/p/plargg_dean_of_chaos_augusta_dean_of_order.txt index d177aefad26..3ebd0265a1f 100644 --- a/forge-gui/res/cardsfolder/p/plargg_dean_of_chaos_augusta_dean_of_order.txt +++ b/forge-gui/res/cardsfolder/p/plargg_dean_of_chaos_augusta_dean_of_order.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Orc Shaman PT:2/2 A:AB$ Draw | Cost$ T Discard<1/Card> | NumCards$ 1 | Defined$ You | SpellDescription$ Draw a card. A:AB$ DigUntil | Cost$ 4 R T | Defined$ You | Amount$ 1 | Valid$ Card.nonLand+nonLegendary+cmcLE3 | FoundDestination$ Library | RevealRandomOrder$ True | RevealedDestination$ Library | ImprintRevealed$ True | RememberFound$ True | SubAbility$ CascadeCast | StackDescription$ SpellDescription | SpellDescription$ Reveal cards from the top of your library until you reveal a nonlegendary, nonland card with mana value 3 or less. You may cast that card without paying its mana cost. Put all revealed cards not cast this way on the bottom of your library in a random order. -SVar:CascadeCast:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ CascadeMoveToLib +SVar:CascadeCast:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ CascadeMoveToLib SVar:CascadeMoveToLib:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted | Origin$ Library | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True AlternateMode:Modal diff --git a/forge-gui/res/cardsfolder/r/rashmi_eternities_crafter.txt b/forge-gui/res/cardsfolder/r/rashmi_eternities_crafter.txt index eeca6d494da..e75a6a5984a 100644 --- a/forge-gui/res/cardsfolder/r/rashmi_eternities_crafter.txt +++ b/forge-gui/res/cardsfolder/r/rashmi_eternities_crafter.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Elf Druid PT:2/3 T:Mode$ SpellCast | ValidActivatingPlayer$ You | ActivatorThisTurnCast$ EQ1 | NoResolvingCheck$ True | ValidCard$ Card | Execute$ DBReveal | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast your first spell each turn, reveal the top card of your library. You may cast it without paying its mana cost if it's a spell with lesser mana value. If you don't cast it, put it into your hand. SVar:DBReveal:DB$ PeekAndReveal | PeekAmount$ 1 | RevealValid$ Card | RememberRevealed$ True | SubAbility$ DBMayCast -SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | ConditionCheckSVar$ X | ConditionSVarCompare$ GTY | SubAbility$ DBChangeZone +SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | ConditionCheckSVar$ X | ConditionSVarCompare$ GTY | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Hand | NoShuffle$ True | ForgetChanged$ True SVar:X:TriggeredCard$CardManaCost SVar:Y:Remembered$CardManaCost diff --git a/forge-gui/res/cardsfolder/r/reversal_of_fortune.txt b/forge-gui/res/cardsfolder/r/reversal_of_fortune.txt index aee4cd3ca6e..d9c93812793 100644 --- a/forge-gui/res/cardsfolder/r/reversal_of_fortune.txt +++ b/forge-gui/res/cardsfolder/r/reversal_of_fortune.txt @@ -2,6 +2,6 @@ Name:Reversal of Fortune ManaCost:4 R R Types:Sorcery A:SP$ RevealHand | Cost$ 4 R R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ DBPlay | SpellDescription$ Target opponent reveals their hand. You may copy an instant or sorcery card in it. If you do, you may cast the copy without paying its mana cost. -SVar:DBPlay:DB$ Play | CopyCard$ True | Optional$ True | Valid$ Sorcery.TargetedPlayerCtrl,Instant.TargetedPlayerCtrl | WithoutManaCost$ True +SVar:DBPlay:DB$ Play | CopyCard$ True | Optional$ True | Valid$ Sorcery.TargetedPlayerCtrl,Instant.TargetedPlayerCtrl | WithoutManaCost$ True | ValidSA$ Spell SVar:Picture:http://www.wizards.com/global/images/magic/general/reversal_of_fortune.jpg Oracle:Target opponent reveals their hand. You may copy an instant or sorcery card in it. If you do, you may cast the copy without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/s/scholar_of_the_lost_trove.txt b/forge-gui/res/cardsfolder/s/scholar_of_the_lost_trove.txt index ec4c783317c..562a635be53 100755 --- a/forge-gui/res/cardsfolder/s/scholar_of_the_lost_trove.txt +++ b/forge-gui/res/cardsfolder/s/scholar_of_the_lost_trove.txt @@ -4,7 +4,7 @@ Types:Creature Sphinx PT:5/5 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ When CARDNAME enters the battlefield, you may cast target instant, sorcery, or artifact card from your graveyard without paying its mana cost. If an instant or sorcery spell cast this way would be put into your graveyard this turn, exile it instead. -SVar:TrigPlay:DB$ Play | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn,Artifact.YouOwn | TgtPrompt$ Choose target instant, sorcery, or artifact card in your graveyard | TgtZone$ Graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn,Artifact.YouOwn | TgtPrompt$ Choose target instant, sorcery, or artifact card in your graveyard | TgtZone$ Graveyard | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell DeckHints:Type$Instant|Sorcery|Artifact DeckHas:Ability$Graveyard Oracle:Flying\nWhen Scholar of the Lost Trove enters the battlefield, you may cast target instant, sorcery, or artifact card from your graveyard without paying its mana cost. If an instant or sorcery spell cast this way would be put into your graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/s/shell_of_the_last_kappa.txt b/forge-gui/res/cardsfolder/s/shell_of_the_last_kappa.txt index 17deb962687..0882d07ff78 100644 --- a/forge-gui/res/cardsfolder/s/shell_of_the_last_kappa.txt +++ b/forge-gui/res/cardsfolder/s/shell_of_the_last_kappa.txt @@ -2,7 +2,7 @@ Name:Shell of the Last Kappa ManaCost:3 Types:Legendary Artifact A:AB$ ChangeZone | Cost$ 3 T | Origin$ Stack | Destination$ Exile | TargetValidTargeting$ You | TgtPrompt$ Choose target instant or sorcery spell that targets you | ValidTgts$ Card.Instant,Card.Sorcery | RememberChanged$ True | SpellDescription$ Exile target instant or sorcery spell that targets you. (The spell has no effect.) -A:AB$ Play | Cost$ 3 T Sac<1/CARDNAME> | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | WithoutManaCost$ True | Amount$ 1 | Controller$ You | Optional$ True | SubAbility$ DBCleanup | SpellDescription$ You may cast a spell from among cards exiled with CARDNAME without paying its mana cost. +A:AB$ Play | Cost$ 3 T Sac<1/CARDNAME> | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | WithoutManaCost$ True | ValidSA$ Spell | Amount$ 1 | Controller$ You | Optional$ True | SubAbility$ DBCleanup | SpellDescription$ You may cast a spell from among cards exiled with CARDNAME without paying its mana cost. T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup diff --git a/forge-gui/res/cardsfolder/s/silent_blade_oni.txt b/forge-gui/res/cardsfolder/s/silent_blade_oni.txt index dd14e552f30..932e0933598 100644 --- a/forge-gui/res/cardsfolder/s/silent_blade_oni.txt +++ b/forge-gui/res/cardsfolder/s/silent_blade_oni.txt @@ -5,6 +5,6 @@ PT:6/5 K:Ninjutsu:4 U B T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigReveal | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, look at that player's hand. You may cast a spell from among those cards without paying its mana cost. SVar:TrigReveal:DB$ RevealHand | Defined$ TriggeredTarget | SubAbility$ TrigPlay -SVar:TrigPlay:DB$ Play | Valid$ Card.nonLand+DefenderCtrl | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True +SVar:TrigPlay:DB$ Play | Valid$ Card.nonLand+DefenderCtrl | ValidZone$ Hand | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/silent_blade_oni.jpg Oracle:Ninjutsu {4}{U}{B} ({4}{U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nWhenever Silent-Blade Oni deals combat damage to a player, look at that player's hand. You may cast a spell from among those cards without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/s/spellbinder.txt b/forge-gui/res/cardsfolder/s/spellbinder.txt index 766552f2633..205a58ba97f 100644 --- a/forge-gui/res/cardsfolder/s/spellbinder.txt +++ b/forge-gui/res/cardsfolder/s/spellbinder.txt @@ -5,7 +5,7 @@ K:Equip:4 T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Imprint — When CARDNAME enters the battlefield, you may exile an instant card from your hand. SVar:TrigExile:DB$ ChangeZone | Imprint$ True | Origin$ Hand | Destination$ Exile | ChangeType$ Instant | ChangeNum$ 1 T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigSpell | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, you may copy the exiled card. If you do, you may cast the copy without paying its mana cost. -SVar:TrigSpell:DB$ Play | Defined$ Imprinted | Amount$ All | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True +SVar:TrigSpell:DB$ Play | Defined$ Imprinted | Amount$ All | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | CopyCard$ True T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearImprinted$ True T:Mode$ ChangesZone | ValidCard$ Card.IsImprinted+ExiledWithSource | Origin$ Exile | Execute$ DBForget | Static$ True diff --git a/forge-gui/res/cardsfolder/s/spellweaver_helix.txt b/forge-gui/res/cardsfolder/s/spellweaver_helix.txt index 437b856571f..541f5651ba7 100644 --- a/forge-gui/res/cardsfolder/s/spellweaver_helix.txt +++ b/forge-gui/res/cardsfolder/s/spellweaver_helix.txt @@ -5,7 +5,7 @@ T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefi SVar:TrigSpellweaverExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | TargetsFromSingleZone$ True | ValidTgts$ Card.Sorcery | TargetMin$ 2 | TargetMax$ 2 | TgtPrompt$ Select two target sorcery cards from a single graveyard | Imprint$ True | SpellDescription$ Exile two sorcery cards from a single graveyard. T:Mode$ SpellCast | ValidCard$ Card.sharesNameWith Imprinted+nonToken | Execute$ TrigSpellweaverCopy | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts a card, if it has the same name as one of the cards exiled with CARDNAME, you may copy the other. If you do, you may cast the copy without paying its mana cost. SVar:TrigSpellweaverCopy:DB$ Pump | RememberObjects$ TriggeredCard | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ ValidAll Card.IsImprinted+doesNotShareNameWith Remembered+inZoneExile | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Defined$ ValidAll Card.IsImprinted+doesNotShareNameWith Remembered+inZoneExile | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Card.Self | Destination$ Any | Execute$ DBCleanImprinted | Static$ True SVar:DBCleanImprinted:DB$ Cleanup | ClearImprinted$ True diff --git a/forge-gui/res/cardsfolder/s/spellweaver_volute.txt b/forge-gui/res/cardsfolder/s/spellweaver_volute.txt index 5501cdbc356..5a01c8e9542 100644 --- a/forge-gui/res/cardsfolder/s/spellweaver_volute.txt +++ b/forge-gui/res/cardsfolder/s/spellweaver_volute.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant instant card in a graveyard A:SP$ Attach | Cost$ 3 U U | ValidTgts$ Instant | TgtZone$ Graveyard | TgtPrompt$ Select target instant card in a graveyard | AILogic$ Pump T:Mode$ SpellCast | ValidCard$ Sorcery | ValidActivatingPlayer$ You | Execute$ TrigCopy | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a sorcery spell, copy the enchanted instant card. You may cast the copy without paying its mana cost. If you do, exile the enchanted card and attach CARDNAME to another instant card in a graveyard. -SVar:TrigCopy:DB$ Play | Defined$ Enchanted | WithoutManaCost$ True | Optional$ True | CopyCard$ True | RememberPlayed$ True | SubAbility$ DBExile +SVar:TrigCopy:DB$ Play | Defined$ Enchanted | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | CopyCard$ True | RememberPlayed$ True | SubAbility$ DBExile SVar:DBExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | Defined$ Enchanted | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBChooseCard SVar:DBChooseCard:DB$ ChooseCard | Choices$ Instant | ChoiceZone$ Graveyard | Amount$ 1 | Mandatory$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBAttach SVar:DBAttach:DB$ Attach | Defined$ ChosenCard | Object$ Self | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup diff --git a/forge-gui/res/cardsfolder/s/surge_to_victory.txt b/forge-gui/res/cardsfolder/s/surge_to_victory.txt index 94efa446b09..bd7387a894f 100644 --- a/forge-gui/res/cardsfolder/s/surge_to_victory.txt +++ b/forge-gui/res/cardsfolder/s/surge_to_victory.txt @@ -7,5 +7,5 @@ SVar:X:Remembered$CardManaCost SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | Triggers$ TrigDamage | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ DBCopy | TriggerDescription$ Whenever a creature you control deals combat damage to a player this turn, copy the exiled card. You may cast the copy without paying its mana cost. -SVar:DBCopy:DB$ Play | Defined$ Remembered | Amount$ All | CopyCard$ True | WithoutManaCost$ True +SVar:DBCopy:DB$ Play | Defined$ Remembered | Amount$ All | CopyCard$ True | WithoutManaCost$ True | ValidSA$ Spell Oracle:Exile target instant or sorcery card from your graveyard. Creatures you control get +X/+0 until end of turn, where X is that card's mana value. Whenever a creature you control deals combat damage to a player this turn, copy the exiled card. You may cast the copy without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/s/surtland_elementalist.txt b/forge-gui/res/cardsfolder/s/surtland_elementalist.txt index 8c2518b1fa7..6e003e22130 100644 --- a/forge-gui/res/cardsfolder/s/surtland_elementalist.txt +++ b/forge-gui/res/cardsfolder/s/surtland_elementalist.txt @@ -4,7 +4,7 @@ Types:Creature Giant Wizard PT:8/8 K:AlternateAdditionalCost:Reveal<1/Giant/Giant>:2 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ Whenever CARDNAME attacks, you may cast an instant or sorcery spell from your hand without paying its mana cost. -SVar:TrigPlay:DB$ Play | ValidZone$ Hand | Valid$ Instant.YouOwn,Sorcery.YouOwn | Controller$ You | WithoutManaCost$ True | Optional$ True +SVar:TrigPlay:DB$ Play | ValidZone$ Hand | Valid$ Card | ValidSA$ Instant,Sorcery | Controller$ You | WithoutManaCost$ True | Optional$ True SVar:HasAttackEffect:TRUE DeckHints:Type$Instant|Sorcery|Giant Oracle:As an additional cost to cast this spell, reveal a Giant card from your hand or pay {2}.\nWhenever Surtland Elementalist attacks, you may cast an instant or sorcery spell from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/s/svella_ice_shaper.txt b/forge-gui/res/cardsfolder/s/svella_ice_shaper.txt index 572d37a13d3..b7c75cef3f1 100644 --- a/forge-gui/res/cardsfolder/s/svella_ice_shaper.txt +++ b/forge-gui/res/cardsfolder/s/svella_ice_shaper.txt @@ -4,7 +4,7 @@ Types:Legendary Snow Creature Troll Warrior PT:2/4 A:AB$ Token | Cost$ 3 T | TokenAmount$ 1 | TokenScript$ icy_manalith | TokenOwner$ You | SpellDescription$ Create a colorless snow artifact token named Icy Manalith with "{T}: Add one mana of any color." A:AB$ PeekAndReveal | Cost$ 6 R G T | Defined$ You | PeekAmount$ 4 | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBPlay | SpellDescription$ Look at the top four cards of your library. You may cast a spell from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. -SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered+nonLand | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder | StackDescription$ None +SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered+nonLand | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder | StackDescription$ None SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | Shuffle$ False | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:{3}, {T}: Create a colorless snow artifact token named Icy Manalith with "{T}: Add one mana of any color."\n{6}{R}{G}, {T}: Look at the top four cards of your library. You may cast a spell from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/t/talent_of_the_telepath.txt b/forge-gui/res/cardsfolder/t/talent_of_the_telepath.txt index 826374ec93e..40d556fd481 100644 --- a/forge-gui/res/cardsfolder/t/talent_of_the_telepath.txt +++ b/forge-gui/res/cardsfolder/t/talent_of_the_telepath.txt @@ -2,7 +2,7 @@ Name:Talent of the Telepath ManaCost:2 U U Types:Sorcery A:SP$ Dig | Cost$ 2 U U | ValidTgts$ Player.Opponent | TgtPrompt$ Select target opponent | Reveal$ True | NoMove$ True | DigNum$ 7 | RememberRevealed$ True | SubAbility$ TelepathCast | SpellDescription$ Target opponent reveals the top seven cards of their library. You may cast an instant or sorcery spell from among them without paying its mana cost. Then that player puts the rest into their graveyard. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may cast up to two instant and/or sorcery spells from among the revealed cards instead of one. -SVar:TelepathCast:DB$ Play | ValidZone$ Library | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ X | SubAbility$ DBChangeZone +SVar:TelepathCast:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered | ValidSA$ Instant,Sorcery | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ X | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Graveyard | Defined$ Remembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$Compare Y GE2.2.1 diff --git a/forge-gui/res/cardsfolder/t/torrential_gearhulk.txt b/forge-gui/res/cardsfolder/t/torrential_gearhulk.txt index 8e57343f544..d4c8bc2d6d9 100644 --- a/forge-gui/res/cardsfolder/t/torrential_gearhulk.txt +++ b/forge-gui/res/cardsfolder/t/torrential_gearhulk.txt @@ -4,6 +4,6 @@ Types:Artifact Creature Construct PT:5/6 K:Flash T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ When CARDNAME enters the battlefield, you may cast target instant card from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl | TgtPrompt$ Choose target instant card from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl | ValidSA$ Spell | TgtPrompt$ Choose target instant card from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:Picture:http://www.wizards.com/global/images/magic/general/torrential_gearhulk.jpg Oracle:Flash\nWhen Torrential Gearhulk enters the battlefield, you may cast target instant card from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt b/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt index 517a9cba33d..4594f1fc541 100644 --- a/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt +++ b/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt @@ -4,6 +4,6 @@ Types:Legendary Creature Human Samurai PT:2/2 K:Bushido:1 T:Mode$ ChangesZone | ValidCard$ Creature.OppCtrl | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigPlay | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature an opponent controls dies, you may cast target instant card from your graveyard. If that spell would be put into a graveyard this turn, exile it instead. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl | TgtPrompt$ Choose target instant from your graveyard | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl | ValidSA$ Spell | TgtPrompt$ Choose target instant from your graveyard | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:Picture:http://www.wizards.com/global/images/magic/general/toshiro_umezawa.jpg Oracle:Bushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.)\nWhenever a creature an opponent controls dies, you may cast target instant card from your graveyard. If that spell would be put into a graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/t/treasure_keeper.txt b/forge-gui/res/cardsfolder/t/treasure_keeper.txt index ffc4c27f83e..e7812db9fa2 100644 --- a/forge-gui/res/cardsfolder/t/treasure_keeper.txt +++ b/forge-gui/res/cardsfolder/t/treasure_keeper.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Construct PT:3/3 T:Mode$ ChangesZone | ValidCard$ Card.Self | TriggerZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigKeeperCascade | TriggerDescription$ When CARDNAME dies, reveal cards from the top of your library until you reveal a nonland card with mana value 3 or less. You may cast that card without paying its mana cost. Put all revealed cards not cast this way on the bottom of your library in a random order. SVar:TrigKeeperCascade:DB$ DigUntil | Defined$ You | Amount$ 1 | Valid$ Card.nonLand+cmcLE3 | FoundDestination$ Library | RevealRandomOrder$ True | RevealedDestination$ Library | ImprintRevealed$ True | RememberFound$ True | SubAbility$ CascadeCast -SVar:CascadeCast:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ CascadeMoveToLib +SVar:CascadeCast:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ CascadeMoveToLib SVar:CascadeMoveToLib:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted | Origin$ Library | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/treasure_keeper.jpg diff --git a/forge-gui/res/cardsfolder/t/twinning_glass.txt b/forge-gui/res/cardsfolder/t/twinning_glass.txt index 9ba92088134..e7e740b9879 100644 --- a/forge-gui/res/cardsfolder/t/twinning_glass.txt +++ b/forge-gui/res/cardsfolder/t/twinning_glass.txt @@ -1,7 +1,7 @@ Name:Twinning Glass ManaCost:4 Types:Artifact -A:AB$ Play | Cost$ 1 T | Valid$ Card.nonLand+sharesNameWith ThisTurnCast | ValidZone$ Hand | Controller$ You | WithoutManaCost$ True | Optional$ True | SpellDescription$ You may cast a spell from your hand without paying its mana cost if it has the same name as a spell that was cast this turn. +A:AB$ Play | Cost$ 1 T | Valid$ Card.nonLand+sharesNameWith ThisTurnCast | ValidZone$ Hand | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | SpellDescription$ You may cast a spell from your hand without paying its mana cost if it has the same name as a spell that was cast this turn. AI:RemoveDeck:All SVar:Picture:http://www.wizards.com/global/images/magic/general/twinning_glass.jpg Oracle:{1}, {T}: You may cast a spell from your hand without paying its mana cost if it has the same name as a spell that was cast this turn. diff --git a/forge-gui/res/cardsfolder/u/unexpected_results.txt b/forge-gui/res/cardsfolder/u/unexpected_results.txt index b19709e7e1a..a1892974dc2 100644 --- a/forge-gui/res/cardsfolder/u/unexpected_results.txt +++ b/forge-gui/res/cardsfolder/u/unexpected_results.txt @@ -3,7 +3,7 @@ ManaCost:2 G U Types:Sorcery A:SP$ Shuffle | Cost$ 2 G U | Defined$ You | SubAbility$ RevealCard | SpellDescription$ Shuffle your libary, then reveal the top card. If it's a nonland card, you may cast it without paying it's mana cost. If it's a land card, you may put it onto the battlefield and return Unexpected Results to its owner's hand. SVar:RevealCard:DB$ Dig | Defined$ You | DigNum$ 1 | Reveal$ True | RememberRevealed$ True | NoMove$ True | SubAbility$ CastCard -SVar:CastCard:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ MoveLand +SVar:CastCard:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ MoveLand SVar:MoveLand:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Battlefield | ConditionDefined$ Remembered | Optional$ True | Imprint$ True | ConditionPresent$ Card.Land | ConditionCompare$ EQ1 | SubAbility$ MoveSelf SVar:MoveSelf:DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Hand | ConditionDefined$ Imprinted | ConditionPresent$ Card.Land | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True diff --git a/forge-gui/res/cardsfolder/u/unpredictable_cyclone.txt b/forge-gui/res/cardsfolder/u/unpredictable_cyclone.txt index 171e855afbd..391a7925d3b 100644 --- a/forge-gui/res/cardsfolder/u/unpredictable_cyclone.txt +++ b/forge-gui/res/cardsfolder/u/unpredictable_cyclone.txt @@ -4,7 +4,7 @@ Types:Enchantment K:Cycling:2 R:Event$ Draw | ValidCause$ Activated.Cycling+nonLand | ValidPlayer$ You | ActiveZones$ Battlefield | ReplaceWith$ DBDig | Description$ If a cycling ability of another nonland card would cause you to draw a card, instead exile cards from the top of your library until you exile a card that shares a card type with the cycled card. You may cast that card without paying its mana cost. Then put the exiled cards that weren't cast this way on the bottom of your library in a random order. SVar:DBDig:DB$ DigUntil | Defined$ You | Valid$ Card.sharesCardTypeWith ReplacedSource | ValidDescription$ shares a card type with exiled card | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | RememberRevealed$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ Remembered.nonLand+sharesCardTypeWith ReplacedSource | WithoutManaCost$ True | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder +SVar:DBPlay:DB$ Play | Defined$ Remembered.nonLand+sharesCardTypeWith ReplacedSource | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:If a cycling ability of another nonland card would cause you to draw a card, instead exile cards from the top of your library until you exile a card that shares a card type with the cycled card. You may cast that card without paying its mana cost. Then put the exiled cards that weren't cast this way on the bottom of your library in a random order.\nCycling {2} ({2}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/u/uvilda_dean_of_perfection_nassari_dean_of_expression.txt b/forge-gui/res/cardsfolder/u/uvilda_dean_of_perfection_nassari_dean_of_expression.txt index f8447a97376..3c6c07b058c 100644 --- a/forge-gui/res/cardsfolder/u/uvilda_dean_of_perfection_nassari_dean_of_expression.txt +++ b/forge-gui/res/cardsfolder/u/uvilda_dean_of_perfection_nassari_dean_of_expression.txt @@ -9,7 +9,7 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:TrigRemoveCounter:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Exile | Execute$ DBRemoveCounter | TriggerDescription$ At the beginning of your upkeep, if this card is exiled, remove a hone counter from it. SVar:DBRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ HONE | CounterNum$ 1 SVar:TrigCast:Mode$ CounterRemoved | TriggerZones$ Exile | ValidCard$ Card.Self | CounterType$ HONE | NewCounterAmount$ 0 | Execute$ DBCast | TriggerDescription$ When the last hone counter is removed from this card, if it’s exiled, you may cast it. It costs {4} less to cast this way. -SVar:DBCast:DB$ Play | Defined$ Self | PlayReduceCost$ 4 +SVar:DBCast:DB$ Play | Defined$ Self | PlayReduceCost$ 4 | ValidSA$ Spell AlternateMode:Modal SVar:BuffedBy:Instant,Sorcery DeckHints:Type$Instant|Sorcery diff --git a/forge-gui/res/cardsfolder/v/vadrok_apex_of_thunder.txt b/forge-gui/res/cardsfolder/v/vadrok_apex_of_thunder.txt index 7e9509d4261..c6ea9a339f2 100644 --- a/forge-gui/res/cardsfolder/v/vadrok_apex_of_thunder.txt +++ b/forge-gui/res/cardsfolder/v/vadrok_apex_of_thunder.txt @@ -6,5 +6,5 @@ K:Mutate:1 WU R R K:Flying K:First Strike T:Mode$ Mutates | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ Whenever this creature mutates, you may cast target noncreature card with mana value 3 or less from your graveyard without paying its mana cost. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Card.nonCreature+cmcLE3+YouOwn | TgtPrompt$ Choose target noncreature card with mana value 3 or less from your graveyard | WithoutManaCost$ True | Optional$ True | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Card.nonCreature+cmcLE3+YouOwn | ValidSA$ Spell | TgtPrompt$ Choose target noncreature card with mana value 3 or less from your graveyard | WithoutManaCost$ True | Optional$ True | AILogic$ ReplaySpell Oracle:Mutate {1}{W/U}{R}{R} (If you cast this spell for its mutate cost, put it over or under target non-Human creature you own. They mutate into the creature on top plus all abilities from under it.)\nFlying, first strike\nWhenever this creature mutates, you may cast target noncreature card with mana value 3 or less from your graveyard without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/v/velomachus_lorehold.txt b/forge-gui/res/cardsfolder/v/velomachus_lorehold.txt index 92f7edc45bd..79f30fab4bc 100644 --- a/forge-gui/res/cardsfolder/v/velomachus_lorehold.txt +++ b/forge-gui/res/cardsfolder/v/velomachus_lorehold.txt @@ -7,7 +7,7 @@ K:Vigilance K:Haste T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigLook | TriggerDescription$ Whenever CARDNAME attacks, look at the top seven cards of your library. You may cast an instant or sorcery spell with mana value less than or equal to CARDNAME's power from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. SVar:TrigLook:DB$ PeekAndReveal | Defined$ You | PeekAmount$ 7 | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBPlay | SpellDescription$ Look at the top six cards of your library. You may cast a spell from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. -SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | ValidSA$ Spell.cmcLEX | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder +SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered | ValidSA$ Instant.cmcLEX,Sorcery.cmcLEX | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | Shuffle$ False | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$CardPower diff --git a/forge-gui/res/cardsfolder/v/villainous_wealth.txt b/forge-gui/res/cardsfolder/v/villainous_wealth.txt index a5476e83aab..db759cccf9b 100644 --- a/forge-gui/res/cardsfolder/v/villainous_wealth.txt +++ b/forge-gui/res/cardsfolder/v/villainous_wealth.txt @@ -2,7 +2,7 @@ Name:Villainous Wealth ManaCost:X B G U Types:Sorcery A:SP$ Dig | Cost$ X B G U | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Target opponent exiles the top X cards of their library. You may cast any number of spells with mana value X or less from among them without paying their mana costs. -SVar:DBPlay:DB$ Play | WithoutManaCost$ True | ValidZone$ Exile | Valid$ Card.nonLand+cmcLEX+IsRemembered | Amount$ All | Optional$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | WithoutManaCost$ True | ValidZone$ Exile | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLEX | Amount$ All | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid Oracle:Target opponent exiles the top X cards of their library. You may cast any number of spells with mana value X or less from among them without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/w/wildfire_devils.txt b/forge-gui/res/cardsfolder/w/wildfire_devils.txt index 3bd4e344783..207519dd753 100644 --- a/forge-gui/res/cardsfolder/w/wildfire_devils.txt +++ b/forge-gui/res/cardsfolder/w/wildfire_devils.txt @@ -6,6 +6,6 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigChoosePlayer | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ When CARDNAME enters the battlefield and at the beginning of your upkeep, choose a player at random. That player exiles an instant or sorcery card from their graveyard. Copy that card. You may cast the copy without paying its mana cost. SVar:TrigChoosePlayer:DB$ ChoosePlayer | Defined$ You | Choices$ Player | Random$ True | SubAbility$ DBExile SVar:DBExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | DefinedPlayer$ ChosenPlayer | Mandatory$ True | ChangeType$ Instant,Sorcery | ChangeNum$ 1 | Hidden$ True | IsCurse$ True | Chooser$ ChosenPlayer | RememberChanged$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered+ExiledWithSource | ValidSA$ Spell | ValidZone$ Exile | Amount$ All | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenPlayer$ True Oracle:When Wildfire Devils enters the battlefield and at the beginning of your upkeep, choose a player at random. That player exiles an instant or sorcery card from their graveyard. Copy that card. You may cast the copy without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/w/wildfire_eternal.txt b/forge-gui/res/cardsfolder/w/wildfire_eternal.txt index 42b39101fa5..0ebd4bc980a 100644 --- a/forge-gui/res/cardsfolder/w/wildfire_eternal.txt +++ b/forge-gui/res/cardsfolder/w/wildfire_eternal.txt @@ -4,6 +4,6 @@ Types:Creature Zombie Jackal Cleric PT:1/4 K:Afflict:4 T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPlay | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, you may cast an instant or sorcery spell from your hand without paying its mana cost. -SVar:TrigPlay:DB$ Play | ValidZone$ Hand | Valid$ Instant.YouOwn,Sorcery.YouOwn | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 +SVar:TrigPlay:DB$ Play | ValidZone$ Hand | Valid$ Card.YouOwn | ValidSA$ Instant,Sorcery | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/wildfire_eternal.jpg Oracle:Afflict 4 (Whenever this creature becomes blocked, defending player loses 4 life.)\nWhenever Wildfire Eternal attacks and isn't blocked, you may cast an instant or sorcery spell from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/w/wizards_spellbook.txt b/forge-gui/res/cardsfolder/w/wizards_spellbook.txt index 4163dc1f6e2..4f350aaf018 100644 --- a/forge-gui/res/cardsfolder/w/wizards_spellbook.txt +++ b/forge-gui/res/cardsfolder/w/wizards_spellbook.txt @@ -3,9 +3,9 @@ ManaCost:5 U U Types:Artifact A:AB$ ChangeZone | Cost$ T | SorcerySpeed$ True | Origin$ Graveyard | Destination$ Exile | Mandatory$ True | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select target instant or sorcery card in a graveyard | RememberChanged$ True | Imprint$ True | SubAbility$ DBRollDice | SpellDescription$ Exile target instant or sorcery card from a graveyard. Roll a d20. Activate only as a sorcery. SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:PlayCopy,10-19:PlayCost1,20:PlayAny -SVar:PlayCopy:DB$ Play | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | CopyCard$ True | Optional$ True | SubAbility$ DBCleanup | SpellDescription$ 1-9 VERT Copy that card. You may cast the copy. -SVar:PlayCost1:DB$ Play | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | CopyCard$ True | Optional$ True | PlayCost$ 1 | SubAbility$ DBCleanup | SpellDescription$ 10-19 VERT Copy that card. You may cast the copy by paying {1} rather than paying its mana cost. -SVar:PlayAny:DB$ Play | Valid$ Card.IsImprinted+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | CopyCard$ True | Optional$ True | WithoutManaCost$ True | SubAbility$ DBCleanup | SpellDescription$ 20 VERT Copy each card exiled with Wizard's Spellbook. You may cast any number of the copies without paying their mana costs. +SVar:PlayCopy:DB$ Play | Valid$ Card.IsRemembered+ExiledWithSource | ValidSA$ Spell | ValidZone$ Exile | Amount$ All | CopyCard$ True | Optional$ True | SubAbility$ DBCleanup | SpellDescription$ 1-9 VERT Copy that card. You may cast the copy. +SVar:PlayCost1:DB$ Play | Valid$ Card.IsRemembered+ExiledWithSource | ValidSA$ Spell | ValidZone$ Exile | Amount$ All | CopyCard$ True | Optional$ True | PlayCost$ 1 | SubAbility$ DBCleanup | SpellDescription$ 10-19 VERT Copy that card. You may cast the copy by paying {1} rather than paying its mana cost. +SVar:PlayAny:DB$ Play | Valid$ Card.IsImprinted+ExiledWithSource | ValidSA$ Spell | ValidZone$ Exile | Amount$ All | CopyCard$ True | Optional$ True | WithoutManaCost$ True | SubAbility$ DBCleanup | SpellDescription$ 20 VERT Copy each card exiled with Wizard's Spellbook. You may cast any number of the copies without paying their mana costs. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHas:Ability$Graveyard Oracle:{T}: Exile target instant or sorcery card from a graveyard. Roll a d20. Activate only as a sorcery.\n1-9 | Copy that card. You may cast the copy.\n10-19 | Copy that card. You may cast the copy by paying {1} rather than paying its mana cost.\n20 | Copy each card exiled with Wizard's Spellbook. You may cast any number of the copies without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/w/wrexial_the_risen_deep.txt b/forge-gui/res/cardsfolder/w/wrexial_the_risen_deep.txt index 7596ba7a3fd..608c8e779a8 100644 --- a/forge-gui/res/cardsfolder/w/wrexial_the_risen_deep.txt +++ b/forge-gui/res/cardsfolder/w/wrexial_the_risen_deep.txt @@ -5,6 +5,6 @@ PT:5/8 K:Islandwalk K:Swampwalk T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPlay | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may cast target instant or sorcery card from that player's graveyard without paying its mana cost. If that spell would be put into a graveyard this turn, exile it instead. -SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.OwnedBy Player.TriggeredTarget,Sorcery.OwnedBy Player.TriggeredTarget | TgtPrompt$ Choose target instant or sorcery card from an opponent's graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell +SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.OwnedBy Player.TriggeredTarget,Sorcery.OwnedBy Player.TriggeredTarget | TgtPrompt$ Choose target instant or sorcery card from an opponent's graveyard | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell SVar:Picture:http://www.wizards.com/global/images/magic/general/wrexial_the_risen_deep.jpg Oracle:Islandwalk, swampwalk (This creature can't be blocked as long as defending player controls an Island or a Swamp.)\nWhenever Wrexial, the Risen Deep deals combat damage to a player, you may cast target instant or sorcery card from that player's graveyard without paying its mana cost. If that spell would be put into a graveyard this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/y/yennett_cryptic_sovereign.txt b/forge-gui/res/cardsfolder/y/yennett_cryptic_sovereign.txt index a5bffee36df..a8d4af3b560 100644 --- a/forge-gui/res/cardsfolder/y/yennett_cryptic_sovereign.txt +++ b/forge-gui/res/cardsfolder/y/yennett_cryptic_sovereign.txt @@ -7,7 +7,7 @@ K:Vigilance K:Menace T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigReveal | TriggerDescription$ Whenever CARDNAME attacks, reveal the top card of your library. You may cast it without paying its mana cost if its mana value is odd. If you don't cast it, draw a card. SVar:TrigReveal:DB$ PeekAndReveal | PeekAmount$ 1 | RevealValid$ Card | RememberRevealed$ True | SubAbility$ DBMayCast -SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.cmcOdd | SubAbility$ DBDraw +SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.cmcOdd | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Flying, vigilance, menace\nWhenever Yennett, Cryptic Sovereign attacks, reveal the top card of your library. You may cast it without paying its mana cost if its mana value is odd. If you don't cast it, draw a card. diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 1823ef56935..30b43f4c427 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -468,8 +468,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont if (cost.isMandatory()) { return chooseNumber(ability, localizer.getMessage("lblChooseAnnounceForCard", announce, CardTranslation.getTranslatedName(ability.getHostCard().getName())) , min, max); - } - else { + } else { return getGui().getInteger(localizer.getMessage("lblChooseAnnounceForCard", announce, CardTranslation.getTranslatedName(ability.getHostCard().getName())) , min, max, min + 9); } @@ -497,8 +496,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont String inpMessage = null; if (min == 0) { inpMessage = localizer.getMessage("lblSelectUpToNumTargetToAction", message, action); - } - else { + } else { inpMessage = localizer.getMessage("lblSelectNumTargetToAction", message, action); } @@ -816,8 +814,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont String prompt = null; if (isFirstGame) { prompt = localizer.getMessage("lblYouHaveWonTheCoinToss", player.getName()); - } - else { + } else { prompt = localizer.getMessage("lblYouLostTheLastGame", player.getName()); } prompt += "\n\n" + localizer.getMessage("lblWouldYouLiketoPlayorDraw"); @@ -828,8 +825,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont String prompt = null; if (isFirstGame) { prompt = localizer.getMessage("lblYouHaveWonTheCoinToss", player.getName()); - } - else { + } else { prompt = localizer.getMessage("lblYouLostTheLastGame", player.getName()); } prompt += "\n\n" + localizer.getMessage("lblWhoWouldYouLiketoStartthisGame"); @@ -2679,12 +2675,10 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont String message = null; if (targetZone != ZoneType.Battlefield) { message = localizer.getMessage("lblPutCardInWhichPlayerZone", targetZone.getTranslatedName().toLowerCase()); - } - else { + } else { if (noTriggers) { message = localizer.getMessage("lblPutCardInWhichPlayerBattlefield"); - } - else { + } else { message = localizer.getMessage("lblPutCardInWhichPlayerPlayOrStack"); } }